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 413183cf2a67ed7d79607fe56f71f6b8bcda5ecf..d67a7460caf3138f4be43088d397e68fb2413cda 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
@@ -110,9 +110,6 @@ htop = """/*
 #include <${className}/GeneratedCode/ServiceLocator.h>
 """
 
-hTopBlock = """#include <${className}/Server/${blockName}.h>
-"""
-
 hTop2 = """
 namespace ${className}
 {
@@ -161,7 +158,6 @@ namespace ${className}
             static void updatePLCRegisters(Silecs::PLC* pPLC, const ServiceLocator* serviceLocator);
             static void updateFesaFields(Silecs::PLC* pPLC, const ServiceLocator* serviceLocator);
 
-
             Abstract${className}(std::string blockName);
             virtual ~Abstract${className}();
 
@@ -556,7 +552,7 @@ cDatatypeSet = """
 """
 
 cSetStringReg = """
-        pPLCDevice->getRegister("${regName}")->setValString(pDevice->${fesaFieldName}.get(pContext));
+        pPLCDevice->getRegister("${regName}")->setValString(pDevice->${fesaFieldName}.get(${context}));
 """
 
 cSetStringArrayReg = """
@@ -565,7 +561,7 @@ cSetStringArrayReg = """
             uint32_t dim1 = pRegister->getDimension1();
             std::string stdStringArray[dim1];
             uint32_t fesaDim1;
-            const char** cStringArray = pDevice->${fesaFieldName}.get(fesaDim1, pContext);
+            const char** cStringArray = pDevice->${fesaFieldName}.get(fesaDim1${context});
             for (unsigned int i=0; i<dim1; i++) stdStringArray[i] = (const char*)cStringArray[i];
             pRegister->setValStringArray(stdStringArray, dim1);
         }
@@ -579,7 +575,7 @@ cSetArrayReg = """
             Silecs::Register* pRegister = pPLCDevice->getRegister("${regName}");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t fesaDim1;
-            pRegister->setVal${regType}Array(pDevice->${fesaFieldName}.get(fesaDim1, pContext), dim1);
+            pRegister->setVal${regType}Array(pDevice->${fesaFieldName}.get(fesaDim1${context}), dim1);
         }
     """
 
@@ -589,7 +585,7 @@ cSetArray2DReg = """
             uint32_t dim1 = pRegister->getDimension1();
             dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
-            pRegister->setVal${regType}Array2D(pDevice->${fesaFieldName}.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
+            pRegister->setVal${regType}Array2D(pDevice->${fesaFieldName}.get(fesaDim1, fesaDim2${context}), dim1, dim2);
         }
 """
 
@@ -603,7 +599,7 @@ cSetStringArrayRegData = """
             uint32_t dim1 = pRegister->getDimension1();
             std::string stdStringArray[dim1];
             uint32_t fesaDim1;
-            const char** cStringArray = (data.is${fesaFieldName_upper}Available() ? data.${fesaFieldName}.get(fesaDim1) : pDevice->${fesaFieldName}.get(fesaDim1, pContext));
+            const char** cStringArray = (data.is${fesaFieldName_upper}Available() ? data.${fesaFieldName}.get(fesaDim1) : pDevice->${fesaFieldName}.get(fesaDim1${context}));
             for (unsigned int i=0; i<dim1; i++) stdStringArray[i] = (const char*)cStringArray[i];
             pRegister->setValStringArray(stdStringArray, dim1);
         }
@@ -618,7 +614,7 @@ cSetArrayRegData = """
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t fesaDim1;
             (data.is${fesaFieldName_upper}Available()) ? pRegister->setVal${regType}Array( data.${fesaFieldName}.get(fesaDim1), dim1) :
-                                        pRegister->setVal${regType}Array( pDevice->${fesaFieldName}.get(fesaDim1, pContext), dim1);
+                                        pRegister->setVal${regType}Array( pDevice->${fesaFieldName}.get(fesaDim1${context}), dim1);
         }
     """
 cSetArray2DRegData = """
@@ -628,7 +624,7 @@ cSetArray2DRegData = """
             uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
             (data.is${fesaFieldName_upper}Available()) ? pRegister->setVal${regType}Array2D(data.${fesaFieldName}.get(fesaDim1, fesaDim2), dim1, dim2) :
-                                         pRegister->setVal${regType}Array2D(pDevice->${fesaFieldName}.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
+                                         pRegister->setVal${regType}Array2D(pDevice->${fesaFieldName}.get(fesaDim1, fesaDim2${context}), dim1, dim2);
         }
 """
 
@@ -685,12 +681,10 @@ def genCProject():
 # Header file (.h) code generation sub-functions
 #================	=========================================================
 
+
 def genHTop(className):
 	return htop.replace('${className}', className )
 
-def genHTopBlock(className, blockName):
-	return hTopBlock.replace('${className}', className).replace('${blockName}', blockName)
-
 def genHTop2(className):
     return hTop2.replace('${className}', className)
    
@@ -774,14 +768,20 @@ def genCDatatypeSet(blockName,propName,className):
     return cDatatypeSet.replace('${className}', className).replace('${blockName}', blockName).replace('${propName}', propName)
 
 def genCSetStringReg(register):
-    return cSetStringReg.replace('${regName}', register.name).replace('${fesaFieldName}', register.getFesaFieldName())
+    context = ", pContext"
+    if register.isConfiguration():
+        context = ""
+    return cSetStringReg.replace('${regName}', register.name).replace('${fesaFieldName}', register.getFesaFieldName()).replace('${context}', context)
 
 def genCSetStringArrayReg(register):
-    return cSetStringArrayReg.replace('${regName}', register.name).replace('${fesaFieldName}', register.getFesaFieldName())
+    context = ", pContext"
+    if register.isConfiguration():
+        context = ""
+    return cSetStringArrayReg.replace('${regName}', register.name).replace('${fesaFieldName}', register.getFesaFieldName()).replace('${context}', context)
 
 def genCSetScalarReg(register):
     cCast = ""
-    context = "pContext"
+    context = ", pContext"
     if register.isUnsigned():
         cCast = "(" + register.getCType() + ")"
     if register.isConfiguration():
@@ -789,16 +789,28 @@ def genCSetScalarReg(register):
     return cSetScalarReg.replace('${regName}', register.name).replace('${regType}', register.getSilecsTypeCapitalized()).replace('${cCast}', cCast ).replace('${fesaFieldName}', register.getFesaFieldName()).replace('${context}', context)
 
 def genCSetArrayReg(register):
-    return cSetArrayReg.replace('${regName}', register.name).replace('${regType}', register.getSilecsTypeCapitalized()).replace('${fesaFieldName}', register.getFesaFieldName())
+    context = ", pContext"
+    if register.isConfiguration():
+        context = ""
+    return cSetArrayReg.replace('${regName}', register.name).replace('${regType}', register.getSilecsTypeCapitalized()).replace('${fesaFieldName}', register.getFesaFieldName()).replace('${context}', context)
 
 def genCSetArray2DReg(register):
-    return cSetArray2DReg.replace('${regName}', register.name).replace('${regType}', register.getSilecsTypeCapitalized()).replace('${fesaFieldName}', register.getFesaFieldName())
+    context = ", pContext"
+    if register.isConfiguration():
+        context = ""
+    return cSetArray2DReg.replace('${regName}', register.name).replace('${regType}', register.getSilecsTypeCapitalized()).replace('${fesaFieldName}', register.getFesaFieldName()).replace('${context}', context)
         
 def genCSetStringRegData(register):
-    return cSetStringRegData.replace('${regName}', register.name).replace('${fesaFieldName_upper}', register.getFesaFieldNameCapitalized()).replace('${fesaFieldName}', register.getFesaFieldName())
+    context = ", pContext"
+    if register.isConfiguration():
+        context = ""
+    return cSetStringRegData.replace('${regName}', register.name).replace('${fesaFieldName_upper}', register.getFesaFieldNameCapitalized()).replace('${fesaFieldName}', register.getFesaFieldName()).replace('${context}', context)
 
 def genCSetStringArrayRegData(register):
-    return cSetStringArrayRegData.replace('${regName}', register.name).replace('${fesaFieldName_upper}', register.getFesaFieldNameCapitalized()).replace('${fesaFieldName}', register.getFesaFieldName())
+    context = ", pContext"
+    if register.isConfiguration():
+        context = ""
+    return cSetStringArrayRegData.replace('${regName}', register.name).replace('${fesaFieldName_upper}', register.getFesaFieldNameCapitalized()).replace('${fesaFieldName}', register.getFesaFieldName()).replace('${context}', context)
 
 def genCSetScalarRegData(register):
     cCast = ""
@@ -810,10 +822,16 @@ def genCSetScalarRegData(register):
     return cSetScalarRegData.replace('${regName}', register.name).replace('${fesaFieldName_upper}', register.getFesaFieldNameCapitalized()).replace('${regType}', register.getSilecsTypeCapitalized()).replace('${fesaFieldName}', register.getFesaFieldName()).replace('${cCast}', cCast).replace('${context}', context)
 
 def genCSetArrayRegData(register):
-    return cSetArrayRegData.replace('${regName}', register.name).replace('${fesaFieldName_upper}', register.getFesaFieldNameCapitalized()).replace('${regType}', register.getSilecsTypeCapitalized()).replace('${fesaFieldName}', register.getFesaFieldName())
+    context = ", pContext"
+    if register.isConfiguration():
+        context = ""
+    return cSetArrayRegData.replace('${regName}', register.name).replace('${fesaFieldName_upper}', register.getFesaFieldNameCapitalized()).replace('${regType}', register.getSilecsTypeCapitalized()).replace('${fesaFieldName}', register.getFesaFieldName()).replace('${context}', context)
 
 def genCSetArray2DRegData(register):
-	return cSetArray2DRegData.replace('${regName}', register.name).replace('${fesaFieldName_upper}', register.getFesaFieldNameCapitalized()).replace('${regType}', register.getSilecsTypeCapitalized()).replace('${fesaFieldName}', register.getFesaFieldName())
+    context = ", pContext"
+    if register.isConfiguration():
+        context = ""
+    return cSetArray2DRegData.replace('${regName}', register.name).replace('${fesaFieldName_upper}', register.getFesaFieldNameCapitalized()).replace('${regType}', register.getSilecsTypeCapitalized()).replace('${fesaFieldName}', register.getFesaFieldName()).replace('${context}', context)
 
 def genMakeDesign(centralMakefilePath):
     return makeDesign.replace('${centralMakefilePath}', centralMakefilePath)
diff --git a/silecs-codegen/src/xml/fesa/fesa_3_0_0/generateFesaDesign.py b/silecs-codegen/src/xml/fesa/fesa_3_0_0/generateFesaDesign.py
index 99749236a53c19b24b64a205232c2a128106bbdf..31ef79cbb6a1b3c05a950a5fb01db415bb4a7cac 100644
--- a/silecs-codegen/src/xml/fesa/fesa_3_0_0/generateFesaDesign.py
+++ b/silecs-codegen/src/xml/fesa/fesa_3_0_0/generateFesaDesign.py
@@ -393,8 +393,6 @@ class FESADesignGenerator3_0_0(object):
                 else:
                     raise Exception( "Cannot identify register-type to use for register:" + reg.name )
                 self.getOrCreateType(fieldNode,reg)
-                if reg.hasDefaultValue():
-                    self.addDefaultNode(fieldNode, reg.default)
 
         globalDataNode = getOrCreateChildElement(dataNode,'global-data')
         globalConfigurationNode = ""
@@ -422,7 +420,7 @@ class FESADesignGenerator3_0_0(object):
         for block in designClass.getDesignBlocks():
             if not block.generateFesaProperty:
                 continue #skip this block
-            if block.isSetting():
+            if block.isSetting() or block.isCommand():
                 propertyNode = self.getOrCreateFESAProperty(settingNode, actionsNode, block)
             else:
                 propertyNode = self.getOrCreateFESAProperty(acquisitionNode,actionsNode,block)
diff --git a/silecs-codegen/src/xml/fesa/fesa_3_0_0/generateSourceCode.py b/silecs-codegen/src/xml/fesa/fesa_3_0_0/generateSourceCode.py
index a8fc5472a9541b1a9e2870a85bb17adff94b7fa4..b7392bb776b63f4bee73c96edac5193e704f6380 100644
--- a/silecs-codegen/src/xml/fesa/fesa_3_0_0/generateSourceCode.py
+++ b/silecs-codegen/src/xml/fesa/fesa_3_0_0/generateSourceCode.py
@@ -47,12 +47,6 @@ def findBlockServerSetActionName(fesaRoot, propName):
 def genHSource(className, silecsRoot, fesaRoot, sourcePath,logTopics):
     designClass = DesignClass.getDesignClassFromRootNode(silecsRoot)
     source =  fesaTemplates.genHTop(className)
-    
-    for block in designClass.getDesignFesaBlocks():
-        if block.isSetting():
-            serverActionName = findBlockServerSetActionName(fesaRoot,block.getFesaName())
-            source += fesaTemplates.genHTopBlock(className, serverActionName)
-        
     source += fesaTemplates.genHTop2(className)
         
     for block in designClass.getDesignFesaBlocks():
diff --git a/silecs-codegen/src/xml/model/Class/Register.py b/silecs-codegen/src/xml/model/Class/Register.py
index 840bf2371bcf66392aaa1ea8aeb2439ea45237a8..1fddf316ef46cad4ac3926a4257fae39e3a43ed4 100644
--- a/silecs-codegen/src/xml/model/Class/Register.py
+++ b/silecs-codegen/src/xml/model/Class/Register.py
@@ -37,10 +37,6 @@ class Register(object):
         self.dim2 = 1
         self.stringLength = 1 # ... currently needs to be default because of some old convention
         self.format = ""
-        self.default= "" # default value, if any
-    
-        if self.xmlNode.hasProp("default"):
-            self.default = xmlNode.prop("default")
 
         valueTypes = xmlNode.xpathEval("*[name()='scalar' or name()='array' or name()='array2D' or name()='string' or name()='stringArray' or name()='stringArray2D']")
         if not valueTypes:
@@ -65,8 +61,6 @@ class Register(object):
             
         self.format = self.valueTypeNode.prop("format")
             
-    def hasDefaultValue(self):
-        return self.default != ""
 
     def getNameCapitalized(self):
         return  iecommon.capitalizeString(self.name)
diff --git a/silecs-codegen/src/xml/test/AllTypes.silecsdesign b/silecs-codegen/src/xml/test/AllTypes.silecsdesign
index 32e28db9ac963c8eb8fa7b1ecda2f270ac0050dd..d72cc901edff1e0f66aec3d109a7f24cee0d52cd 100644
--- a/silecs-codegen/src/xml/test/AllTypes.silecsdesign
+++ b/silecs-codegen/src/xml/test/AllTypes.silecsdesign
@@ -62,60 +62,60 @@
 			</Acquisition-Register>
 		</Acquisition-Block>
 		<Setting-Block name="MyRWBlock" generateFesaProperty="true" fesaPropertyName="MyRWBlockProp">
-			<Volatile-Register name="RW_int8" generateFesaValueItem="true">
+			<Setting-Register name="RW_int8" generateFesaValueItem="true">
 				<array2D dim1="2" dim2="2" format="int8"/>
-			</Volatile-Register>
-			<Volatile-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa">
+			</Setting-Register>
+			<Setting-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa">
 				<array2D dim1="2" dim2="2" format="uint8"/>
-			</Volatile-Register>
-			<Volatile-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa">
+			</Setting-Register>
+			<Setting-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa">
 				<array2D dim1="2" dim2="2" format="int16"/>
-			</Volatile-Register>
-			<Volatile-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa">
+			</Setting-Register>
+			<Setting-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa">
 				<array2D dim1="2" dim2="2" format="uint16"/>
-			</Volatile-Register>
-			<Volatile-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa">
+			</Setting-Register>
+			<Setting-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa">
 				<array2D dim1="2" dim2="2" format="int32"/>
-			</Volatile-Register>
-			<Volatile-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa">
+			</Setting-Register>
+			<Setting-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa">
 				<array2D dim1="2" dim2="2" format="uint32"/>
-			</Volatile-Register>
+			</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 -->
-			<Volatile-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa">
+			<Setting-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa">
 				<array2D dim1="2" dim2="2" format="float32"/>
-			</Volatile-Register>
+			</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 -->
-			<Volatile-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa">
+			<Setting-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa">
 				<stringArray2D dim1="2" dim2="2" string-length="64" format="string"/>
-			</Volatile-Register>
-			<Volatile-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa">
+			</Setting-Register>
+			<Setting-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa">
 				<array2D dim1="2" dim2="2" format="date"/>
-			</Volatile-Register>
-			<Volatile-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa">
+			</Setting-Register>
+			<Setting-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa">
 				<array2D dim1="2" dim2="2" format="char"/>
-			</Volatile-Register>
-			<Volatile-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa">
+			</Setting-Register>
+			<Setting-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa">
 				<array2D dim1="2" dim2="2" format="byte"/>
-			</Volatile-Register>
-			<Volatile-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa">
+			</Setting-Register>
+			<Setting-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa">
 				<array2D dim1="2" dim2="2" format="word"/>
-			</Volatile-Register>
-			<Volatile-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa">
+			</Setting-Register>
+			<Setting-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa">
 				<array2D dim1="2" dim2="2" format="dword"/>
-			</Volatile-Register>
-			<Volatile-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa">
+			</Setting-Register>
+			<Setting-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa">
 				<array2D dim1="2" dim2="2" format="int"/>
-			</Volatile-Register>
-			<Volatile-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa">
+			</Setting-Register>
+			<Setting-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa">
 				<array2D dim1="2" dim2="2" format="dint"/>
-			</Volatile-Register>
-			<Volatile-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa">
+			</Setting-Register>
+			<Setting-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa">
 				<array2D dim1="2" dim2="2" format="real"/>
-			</Volatile-Register>
-			<Volatile-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa">
+			</Setting-Register>
+			<Setting-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa">
 				<array2D dim1="2" dim2="2" format="dt"/>
-			</Volatile-Register>
+			</Setting-Register>
 		</Setting-Block>
 		<Command-Block name="MyWOBlock" generateFesaProperty="true" fesaPropertyName="MyWOBlockProp">
 			<Setting-Register name="WO_int8" generateFesaValueItem="true">
@@ -173,5 +173,61 @@
 				<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"/>
+            </Configuration-Register>
+            <Configuration-Register name="C_uint8" generateFesaValueItem="true" fesaFieldName="C_uint8_fesa">
+                <array2D dim1="2" dim2="2" format="uint8"/>
+            </Configuration-Register>
+            <Configuration-Register name="C_int16" generateFesaValueItem="true" fesaFieldName="C_int16_fesa">
+                <array2D dim1="2" dim2="2" format="int16"/>
+            </Configuration-Register>
+            <Configuration-Register name="C_uint16" generateFesaValueItem="true" fesaFieldName="C_uint16_fesa">
+                <array2D dim1="2" dim2="2" format="uint16"/>
+            </Configuration-Register>
+            <Configuration-Register name="C_int32" generateFesaValueItem="true" fesaFieldName="C_int32_fesa">
+                <array2D dim1="2" dim2="2" format="int32"/>
+            </Configuration-Register>
+            <Configuration-Register name="C_uint32" generateFesaValueItem="true" fesaFieldName="C_uint32_fesa">
+                <array2D dim1="2" dim2="2" format="uint32"/>
+            </Configuration-Register>
+            <!--<Register name="C_int64" format="int64" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="C_int64_fesa" array-dim1="2" array-dim2="2"/> not Supported for Rabbit, Beckhoff, Siemens and Schneider -->
+            <!--<Register name="C_uint64" format="uint64" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="C_uint64_fesa" array-dim1="2" array-dim2="2"/> not Supported for Rabbit, Beckhoff, Siemens and Schneider -->
+            <Configuration-Register name="C_float32" generateFesaValueItem="true" fesaFieldName="C_float32_fesa">
+                <array2D dim1="2" dim2="2" format="float32"/>
+            </Configuration-Register>
+            <!--<Register name="C_float64" format="float64" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="C_float64_fesa" array-dim1="2" array-dim2="2"/> not Supported for Rabbit, Beckhoff, Siemens and Schneider -->
+            <Configuration-Register name="C_string" generateFesaValueItem="true" fesaFieldName="C_string_fesa">
+                <stringArray2D dim1="2" dim2="2" string-length="64" format="string"/>
+            </Configuration-Register>
+            <Configuration-Register name="C_date" generateFesaValueItem="true" fesaFieldName="C_date_fesa">
+                <array2D dim1="2" dim2="2" format="date"/>
+            </Configuration-Register>
+            <Configuration-Register name="C_char" generateFesaValueItem="true" fesaFieldName="C_char_fesa">
+                <array2D dim1="2" dim2="2" format="char"/>
+            </Configuration-Register>
+            <Configuration-Register name="C_byte" generateFesaValueItem="true" fesaFieldName="C_byte_fesa">
+                <array2D dim1="2" dim2="2" format="byte"/>
+            </Configuration-Register>
+            <Configuration-Register name="C_word" generateFesaValueItem="true" fesaFieldName="C_word_fesa">
+                <array2D dim1="2" dim2="2" format="word"/>
+            </Configuration-Register>
+            <Configuration-Register name="C_dword" generateFesaValueItem="true" fesaFieldName="C_dword_fesa">
+                <array2D dim1="2" dim2="2" format="dword"/>
+            </Configuration-Register>
+            <Configuration-Register name="C_int" generateFesaValueItem="true" fesaFieldName="C_int_fesa">
+                <array2D dim1="2" dim2="2" format="int"/>
+            </Configuration-Register>
+            <Configuration-Register name="C_dint" generateFesaValueItem="true" fesaFieldName="C_dint_fesa">
+                <array2D dim1="2" dim2="2" format="dint"/>
+            </Configuration-Register>
+            <Configuration-Register name="C_real" generateFesaValueItem="true" fesaFieldName="C_real_fesa">
+                <array2D dim1="2" dim2="2" format="real"/>
+            </Configuration-Register>
+            <Configuration-Register name="C_dt" generateFesaValueItem="true" fesaFieldName="C_dt_fesa">
+                <array2D dim1="2" dim2="2" format="dt"/>
+            </Configuration-Register>
+        </Configuration-Block>
 	</SILECS-Class>
 </SILECS-Design>
diff --git a/silecs-codegen/src/xml/test/AllTypesFESA.silecsdesign b/silecs-codegen/src/xml/test/AllTypesFESA.silecsdesign
index 219be566a846587d4828fd99621b4c80879c253d..a4c90afbafe18308fe0f3f40e53e88d2f9238a8f 100644
--- a/silecs-codegen/src/xml/test/AllTypesFESA.silecsdesign
+++ b/silecs-codegen/src/xml/test/AllTypesFESA.silecsdesign
@@ -62,58 +62,58 @@
 			</Acquisition-Register>
 		</Acquisition-Block>
 		<Setting-Block name="MyRWBlock" generateFesaProperty="true" fesaPropertyName="MyRWBlockProp">
-			<Volatile-Register name="RW_int8" generateFesaValueItem="true">
+			<Setting-Register name="RW_int8" generateFesaValueItem="true">
 				<array2D dim1="2" dim2="2" format="int8"/>
-			</Volatile-Register>
-			<Volatile-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa">
+			</Setting-Register>
+			<Setting-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa">
 				<array2D dim1="2" dim2="2" format="uint8"/>
-			</Volatile-Register>
-			<Volatile-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa">
+			</Setting-Register>
+			<Setting-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa">
 				<array2D dim1="2" dim2="2" format="int16"/>
-			</Volatile-Register>
-			<Volatile-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa">
+			</Setting-Register>
+			<Setting-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa">
 				<array2D dim1="2" dim2="2" format="uint16"/>
-			</Volatile-Register>
-			<Volatile-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa">
+			</Setting-Register>
+			<Setting-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa">
 				<array2D dim1="2" dim2="2" format="int32"/>
-			</Volatile-Register>
-			<Volatile-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa">
+			</Setting-Register>
+			<Setting-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa">
 				<array2D dim1="2" dim2="2" format="uint32"/>
-			</Volatile-Register>
+			</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 -->
-			<Volatile-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa">
+			<Setting-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa">
 				<array2D dim1="2" dim2="2" format="float32"/>
-			</Volatile-Register>
+			</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 -->
-			<Volatile-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa">
+			<Setting-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa">
 				<array2D dim1="2" dim2="2" format="date"/>
-			</Volatile-Register>
-			<Volatile-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa">
+			</Setting-Register>
+			<Setting-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa">
 				<array2D dim1="2" dim2="2" format="char"/>
-			</Volatile-Register>
-			<Volatile-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa">
+			</Setting-Register>
+			<Setting-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa">
 				<array2D dim1="2" dim2="2" format="byte"/>
-			</Volatile-Register>
-			<Volatile-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa">
+			</Setting-Register>
+			<Setting-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa">
 				<array2D dim1="2" dim2="2" format="word"/>
-			</Volatile-Register>
-			<Volatile-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa">
+			</Setting-Register>
+			<Setting-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa">
 				<array2D dim1="2" dim2="2" format="dword"/>
-			</Volatile-Register>
-			<Volatile-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa">
+			</Setting-Register>
+			<Setting-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa">
 				<array2D dim1="2" dim2="2" format="int"/>
-			</Volatile-Register>
-			<Volatile-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa">
+			</Setting-Register>
+			<Setting-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa">
 				<array2D dim1="2" dim2="2" format="dint"/>
-			</Volatile-Register>
-			<Volatile-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa">
+			</Setting-Register>
+			<Setting-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa">
 				<array2D dim1="2" dim2="2" format="real"/>
-			</Volatile-Register>
-			<Volatile-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa">
+			</Setting-Register>
+			<Setting-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa">
 				<array2D dim1="2" dim2="2" format="dt"/>
-			</Volatile-Register>
+			</Setting-Register>
 		</Setting-Block>
 		<Command-Block name="MyWOBlock" generateFesaProperty="true" fesaPropertyName="MyWOBlockProp">
 			<Setting-Register name="WO_int8" generateFesaValueItem="true">
@@ -171,5 +171,61 @@
 				<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"/>
+            </Configuration-Register>
+            <Configuration-Register name="C_uint8" generateFesaValueItem="true" fesaFieldName="C_uint8_fesa">
+                <array2D dim1="2" dim2="2" format="uint8"/>
+            </Configuration-Register>
+            <Configuration-Register name="C_int16" generateFesaValueItem="true" fesaFieldName="C_int16_fesa">
+                <array2D dim1="2" dim2="2" format="int16"/>
+            </Configuration-Register>
+            <Configuration-Register name="C_uint16" generateFesaValueItem="true" fesaFieldName="C_uint16_fesa">
+                <array2D dim1="2" dim2="2" format="uint16"/>
+            </Configuration-Register>
+            <Configuration-Register name="C_int32" generateFesaValueItem="true" fesaFieldName="C_int32_fesa">
+                <array2D dim1="2" dim2="2" format="int32"/>
+            </Configuration-Register>
+            <Configuration-Register name="C_uint32" generateFesaValueItem="true" fesaFieldName="C_uint32_fesa">
+                <array2D dim1="2" dim2="2" format="uint32"/>
+            </Configuration-Register>
+            <!--<Register name="C_int64" format="int64" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="C_int64_fesa" array-dim1="2" array-dim2="2"/> not Supported for Rabbit, Beckhoff, Siemens and Schneider -->
+            <!--<Register name="C_uint64" format="uint64" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="C_uint64_fesa" array-dim1="2" array-dim2="2"/> not Supported for Rabbit, Beckhoff, Siemens and Schneider -->
+            <Configuration-Register name="C_float32" generateFesaValueItem="true" fesaFieldName="C_float32_fesa">
+                <array2D dim1="2" dim2="2" format="float32"/>
+            </Configuration-Register>
+            <!--<Register name="C_float64" format="float64" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="C_float64_fesa" array-dim1="2" array-dim2="2"/> not Supported for Rabbit, Beckhoff, Siemens and Schneider -->
+            <!--<Configuration-Register name="C_string" generateFesaValueItem="true" fesaFieldName="C_string_fesa">
+                <stringArray2D dim1="2" dim2="2" string-length="64" format="string"/>
+            </Configuration-Register>-->
+            <Configuration-Register name="C_date" generateFesaValueItem="true" fesaFieldName="C_date_fesa">
+                <array2D dim1="2" dim2="2" format="date"/>
+            </Configuration-Register>
+            <Configuration-Register name="C_char" generateFesaValueItem="true" fesaFieldName="C_char_fesa">
+                <array2D dim1="2" dim2="2" format="char"/>
+            </Configuration-Register>
+            <Configuration-Register name="C_byte" generateFesaValueItem="true" fesaFieldName="C_byte_fesa">
+                <array2D dim1="2" dim2="2" format="byte"/>
+            </Configuration-Register>
+            <Configuration-Register name="C_word" generateFesaValueItem="true" fesaFieldName="C_word_fesa">
+                <array2D dim1="2" dim2="2" format="word"/>
+            </Configuration-Register>
+            <Configuration-Register name="C_dword" generateFesaValueItem="true" fesaFieldName="C_dword_fesa">
+                <array2D dim1="2" dim2="2" format="dword"/>
+            </Configuration-Register>
+            <Configuration-Register name="C_int" generateFesaValueItem="true" fesaFieldName="C_int_fesa">
+                <array2D dim1="2" dim2="2" format="int"/>
+            </Configuration-Register>
+            <Configuration-Register name="C_dint" generateFesaValueItem="true" fesaFieldName="C_dint_fesa">
+                <array2D dim1="2" dim2="2" format="dint"/>
+            </Configuration-Register>
+            <Configuration-Register name="C_real" generateFesaValueItem="true" fesaFieldName="C_real_fesa">
+                <array2D dim1="2" dim2="2" format="real"/>
+            </Configuration-Register>
+            <Configuration-Register name="C_dt" generateFesaValueItem="true" fesaFieldName="C_dt_fesa">
+                <array2D dim1="2" dim2="2" format="dt"/>
+            </Configuration-Register>
+        </Configuration-Block>
 	</SILECS-Class>
 </SILECS-Design>
diff --git a/silecs-codegen/src/xml/test/generated_correct/AllTypes.cpp b/silecs-codegen/src/xml/test/generated_correct/AllTypes.cpp
index 89727b8a2ee05978b8bdf420d5e32c3a5921ce0c..a92a7168e7f1a6eeda4546e513a5ea84435abf4e 100644
--- a/silecs-codegen/src/xml/test/generated_correct/AllTypes.cpp
+++ b/silecs-codegen/src/xml/test/generated_correct/AllTypes.cpp
@@ -14,10 +14,10 @@ namespace AllTypes
     Silecs::Service* AbstractAllTypes::pService_ = NULL;
     Silecs::Cluster* AbstractAllTypes::pCluster_ = NULL;
     bool AbstractAllTypes::isInitialized_ = false;
-
     MyROBlock_Type	AllTypes::MyROBlock("MyROBlock");
     MyRWBlock_Type	AllTypes::MyRWBlock("MyRWBlock");
     MyWOBlock_Type	AllTypes::MyWOBlock("MyWOBlock");
+    MyCBlock_Type	AllTypes::MyCBlock("MyCBlock");
     
     //-------------------------------------------------------------------------------------------------------------
     // Constructor & Destructor methods
@@ -34,6 +34,9 @@ namespace AllTypes
     MyWOBlock_Type::MyWOBlock_Type(std::string name): AbstractAllTypes(name) {}
     MyWOBlock_Type::~MyWOBlock_Type() {}
     
+    MyCBlock_Type::MyCBlock_Type(std::string name): AbstractAllTypes(name) {}
+    MyCBlock_Type::~MyCBlock_Type() {}
+    
     //---------------------------------------------------------------------------------------------------------
     // Set-up the SILECS components for the AbstractAllTypes class (service & cluster)
 
@@ -62,16 +65,14 @@ namespace AllTypes
                 // (from 'plcHostName' FESA field defined on that purpose).
                 Silecs::PLC* pPLC = pCluster_->getPLC(pDevice->plcHostName.get());
 
-                // Update the PLC Slave registers from related FESA fields just before synchronising done at connection time
-                setPLCSlaveRegisters(pPLC, serviceLocator);
+                // Update PLC registers from related FESA fields just before synchronising done at connection time
+                updatePLCRegisters(pPLC, serviceLocator);
 
                 // Connect the PLC if not already connected
                 if (!pPLC->isEnabled())
                 {   pPLC->connect(/*synchroMode=*/Silecs::FULL_SYNCHRO, /*connectNow=*/true);
                     if (pPLC->isConnected())
-                    {   // Update FESA fields from related PLC Master registers just after synchronising done at connection time
-                        getPLCMasterRegisters(pPLC, serviceLocator);
-                    }
+                        updateFesaFields(pPLC, serviceLocator);
                 }
             }
         }
@@ -93,22 +94,24 @@ namespace AllTypes
     }
 
     //---------------------------------------------------------------------------------------------------------
-    // Synchronise PLC SLAVE/MASTER registers and related FESA fields (automatically called by the setup method @connection time)
-    void AbstractAllTypes::setPLCSlaveRegisters(Silecs::PLC* pPLC, const ServiceLocator* serviceLocator)
+    //automatically called by the setup method at connection time)
+    void AbstractAllTypes::updatePLCRegisters(Silecs::PLC* pPLC, const ServiceLocator* serviceLocator)
     {
         fesa::NoneContext noneContext;
     
-        AllTypes::MyRWBlock.setPLCDevices(pPLC, serviceLocator, false, &noneContext);
-        AllTypes::MyWOBlock.setPLCDevices(pPLC, serviceLocator, false, &noneContext);
+        AllTypes::MyCBlock.setPLCDevices(pPLC, serviceLocator, false, &noneContext);
     }
 
-    void AbstractAllTypes::getPLCMasterRegisters(Silecs::PLC* pPLC, const ServiceLocator* serviceLocator)
+    //---------------------------------------------------------------------------------------------------------
+    //automatically called by the setup method at connection time)
+    void AbstractAllTypes::updateFesaFields(Silecs::PLC* pPLC, const ServiceLocator* serviceLocator)
     {
-        fesa::NoneContext noneContext;    //MASTER acquisition fields are not consistent, can be set with none-context
+        fesa::NoneContext noneContext;
     
         AllTypes::MyROBlock.getPLCDevices(pPLC, serviceLocator, false, &noneContext);
         AllTypes::MyRWBlock.getPLCDevices(pPLC, serviceLocator, false, &noneContext);
     }
+
     
     //---------------------------------------------------------------------------------------------------------
     // General methods to synchronize the FESA fields and related PLC registers of the FESA server
@@ -373,7 +376,7 @@ namespace AllTypes
         {
             Silecs::Register* pRegister = pPLCDevice->getRegister("RW_int8");
             uint32_t dim1 = pRegister->getDimension1();
-            dim2 = pRegister->getDimension2();
+            uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
             pRegister->setValInt8Array2D(pDevice->RW_int8.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
@@ -381,15 +384,15 @@ namespace AllTypes
         {
             Silecs::Register* pRegister = pPLCDevice->getRegister("RW_uint8");
             uint32_t dim1 = pRegister->getDimension1();
-            dim2 = pRegister->getDimension2();
+            uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
-            pRegister->setValUInt8Array2D( pDevice->RW_uint8_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);	//use automatic conversion for JAVA non-supported type
+            pRegister->setValUInt8Array2D(pDevice->RW_uint8_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
 
         {
             Silecs::Register* pRegister = pPLCDevice->getRegister("RW_int16");
             uint32_t dim1 = pRegister->getDimension1();
-            dim2 = pRegister->getDimension2();
+            uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
             pRegister->setValInt16Array2D(pDevice->RW_int16_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
@@ -397,15 +400,15 @@ namespace AllTypes
         {
             Silecs::Register* pRegister = pPLCDevice->getRegister("RW_uint16");
             uint32_t dim1 = pRegister->getDimension1();
-            dim2 = pRegister->getDimension2();
+            uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
-            pRegister->setValUInt16Array2D( pDevice->RW_uint16_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);	//use automatic conversion for JAVA non-supported type
+            pRegister->setValUInt16Array2D(pDevice->RW_uint16_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
 
         {
             Silecs::Register* pRegister = pPLCDevice->getRegister("RW_int32");
             uint32_t dim1 = pRegister->getDimension1();
-            dim2 = pRegister->getDimension2();
+            uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
             pRegister->setValInt32Array2D(pDevice->RW_int32_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
@@ -413,15 +416,15 @@ namespace AllTypes
         {
             Silecs::Register* pRegister = pPLCDevice->getRegister("RW_uint32");
             uint32_t dim1 = pRegister->getDimension1();
-            dim2 = pRegister->getDimension2();
+            uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
-            pRegister->setValUInt32Array2D( pDevice->RW_uint32_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);	//use automatic conversion for JAVA non-supported type
+            pRegister->setValUInt32Array2D(pDevice->RW_uint32_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
 
         {
             Silecs::Register* pRegister = pPLCDevice->getRegister("RW_float32");
             uint32_t dim1 = pRegister->getDimension1();
-            dim2 = pRegister->getDimension2();
+            uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
             pRegister->setValFloat32Array2D(pDevice->RW_float32_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
@@ -429,7 +432,7 @@ namespace AllTypes
         {
             Silecs::Register* pRegister = pPLCDevice->getRegister("RW_date");
             uint32_t dim1 = pRegister->getDimension1();
-            dim2 = pRegister->getDimension2();
+            uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
             pRegister->setValDateArray2D(pDevice->RW_date_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
@@ -437,7 +440,7 @@ namespace AllTypes
         {
             Silecs::Register* pRegister = pPLCDevice->getRegister("RW_char");
             uint32_t dim1 = pRegister->getDimension1();
-            dim2 = pRegister->getDimension2();
+            uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
             pRegister->setValInt8Array2D(pDevice->RW_char_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
@@ -445,31 +448,31 @@ namespace AllTypes
         {
             Silecs::Register* pRegister = pPLCDevice->getRegister("RW_byte");
             uint32_t dim1 = pRegister->getDimension1();
-            dim2 = pRegister->getDimension2();
+            uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
-            pRegister->setValUInt8Array2D( pDevice->RW_byte_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);	//use automatic conversion for JAVA non-supported type
+            pRegister->setValUInt8Array2D(pDevice->RW_byte_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
 
         {
             Silecs::Register* pRegister = pPLCDevice->getRegister("RW_word");
             uint32_t dim1 = pRegister->getDimension1();
-            dim2 = pRegister->getDimension2();
+            uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
-            pRegister->setValUInt16Array2D( pDevice->RW_word_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);	//use automatic conversion for JAVA non-supported type
+            pRegister->setValUInt16Array2D(pDevice->RW_word_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
 
         {
             Silecs::Register* pRegister = pPLCDevice->getRegister("RW_dword");
             uint32_t dim1 = pRegister->getDimension1();
-            dim2 = pRegister->getDimension2();
+            uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
-            pRegister->setValUInt32Array2D( pDevice->RW_dword_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);	//use automatic conversion for JAVA non-supported type
+            pRegister->setValUInt32Array2D(pDevice->RW_dword_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
 
         {
             Silecs::Register* pRegister = pPLCDevice->getRegister("RW_int");
             uint32_t dim1 = pRegister->getDimension1();
-            dim2 = pRegister->getDimension2();
+            uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
             pRegister->setValInt16Array2D(pDevice->RW_int_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
@@ -477,7 +480,7 @@ namespace AllTypes
         {
             Silecs::Register* pRegister = pPLCDevice->getRegister("RW_dint");
             uint32_t dim1 = pRegister->getDimension1();
-            dim2 = pRegister->getDimension2();
+            uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
             pRegister->setValInt32Array2D(pDevice->RW_dint_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
@@ -485,7 +488,7 @@ namespace AllTypes
         {
             Silecs::Register* pRegister = pPLCDevice->getRegister("RW_real");
             uint32_t dim1 = pRegister->getDimension1();
-            dim2 = pRegister->getDimension2();
+            uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
             pRegister->setValFloat32Array2D(pDevice->RW_real_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
@@ -493,7 +496,7 @@ namespace AllTypes
         {
             Silecs::Register* pRegister = pPLCDevice->getRegister("RW_dt");
             uint32_t dim1 = pRegister->getDimension1();
-            dim2 = pRegister->getDimension2();
+            uint32_t dim2 = pRegister->getDimension2();
             uint32_t fesaDim1,fesaDim2;
             pRegister->setValDateArray2D(pDevice->RW_dt_fesa.get(fesaDim1, fesaDim2, pContext), dim1, dim2);
         }
@@ -678,9 +681,9 @@ namespace AllTypes
             Silecs::Register* pRegister = pPLCDevice->getRegister("WO_uint8");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t fesaDim1;
-            pRegister->setValUInt8Array(pDevice->WO_uint8_fesa.get(fesaDim1, pContext), dim1);	//use automatic conversion for JAVA non-supported type
+            pRegister->setValUInt8Array(pDevice->WO_uint8_fesa.get(fesaDim1, pContext), dim1);
         }
-
+    
         {
             Silecs::Register* pRegister = pPLCDevice->getRegister("WO_int16");
             uint32_t dim1 = pRegister->getDimension1();
@@ -692,9 +695,9 @@ namespace AllTypes
             Silecs::Register* pRegister = pPLCDevice->getRegister("WO_uint16");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t fesaDim1;
-            pRegister->setValUInt16Array(pDevice->WO_uint16_fesa.get(fesaDim1, pContext), dim1);	//use automatic conversion for JAVA non-supported type
+            pRegister->setValUInt16Array(pDevice->WO_uint16_fesa.get(fesaDim1, pContext), dim1);
         }
-
+    
         {
             Silecs::Register* pRegister = pPLCDevice->getRegister("WO_int32");
             uint32_t dim1 = pRegister->getDimension1();
@@ -706,9 +709,9 @@ namespace AllTypes
             Silecs::Register* pRegister = pPLCDevice->getRegister("WO_uint32");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t fesaDim1;
-            pRegister->setValUInt32Array(pDevice->WO_uint32_fesa.get(fesaDim1, pContext), dim1);	//use automatic conversion for JAVA non-supported type
+            pRegister->setValUInt32Array(pDevice->WO_uint32_fesa.get(fesaDim1, pContext), dim1);
         }
-
+    
         {
             Silecs::Register* pRegister = pPLCDevice->getRegister("WO_float32");
             uint32_t dim1 = pRegister->getDimension1();
@@ -744,23 +747,23 @@ namespace AllTypes
             Silecs::Register* pRegister = pPLCDevice->getRegister("WO_byte");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t fesaDim1;
-            pRegister->setValUInt8Array(pDevice->WO_byte_fesa.get(fesaDim1, pContext), dim1);	//use automatic conversion for JAVA non-supported type
+            pRegister->setValUInt8Array(pDevice->WO_byte_fesa.get(fesaDim1, pContext), dim1);
         }
-
+    
         {
             Silecs::Register* pRegister = pPLCDevice->getRegister("WO_word");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t fesaDim1;
-            pRegister->setValUInt16Array(pDevice->WO_word_fesa.get(fesaDim1, pContext), dim1);	//use automatic conversion for JAVA non-supported type
+            pRegister->setValUInt16Array(pDevice->WO_word_fesa.get(fesaDim1, pContext), dim1);
         }
-
+    
         {
             Silecs::Register* pRegister = pPLCDevice->getRegister("WO_dword");
             uint32_t dim1 = pRegister->getDimension1();
             uint32_t fesaDim1;
-            pRegister->setValUInt32Array(pDevice->WO_dword_fesa.get(fesaDim1, pContext), dim1);	//use automatic conversion for JAVA non-supported type
+            pRegister->setValUInt32Array(pDevice->WO_dword_fesa.get(fesaDim1, pContext), dim1);
         }
-
+    
         {
             Silecs::Register* pRegister = pPLCDevice->getRegister("WO_int");
             uint32_t dim1 = pRegister->getDimension1();
@@ -942,5 +945,302 @@ namespace AllTypes
         if (sendNow) pPLCDevice->send(blockName_);
 
     }
+    
+    void MyCBlock_Type::setOneDevice(Device* pDevice, const bool sendNow, MultiplexingContext* pContext)
+    {
+    	if( !isInitialized_ )
+    	{
+    		throw fesa::FesaException(__FILE__, __LINE__, "SILECS-Service not initialized yet - AllTypes::setup needs to be called before any plc-interaction can be done");
+    	}
+        Silecs::PLC* pPLC  = pCluster_->getPLC(pDevice->plcHostName.get());
+        Silecs::Device* pPLCDevice = pPLC->getDevice(pDevice->plcDeviceLabel.get());
+
+        {
+            Silecs::Register* pRegister = pPLCDevice->getRegister("C_int8");
+            uint32_t dim1 = pRegister->getDimension1();
+            uint32_t dim2 = pRegister->getDimension2();
+            uint32_t fesaDim1,fesaDim2;
+            pRegister->setValInt8Array2D(pDevice->C_int8.get(fesaDim1, fesaDim2), dim1, dim2);
+        }
+
+        {
+            Silecs::Register* pRegister = pPLCDevice->getRegister("C_uint8");
+            uint32_t dim1 = pRegister->getDimension1();
+            uint32_t dim2 = pRegister->getDimension2();
+            uint32_t fesaDim1,fesaDim2;
+            pRegister->setValUInt8Array2D(pDevice->C_uint8_fesa.get(fesaDim1, fesaDim2), dim1, dim2);
+        }
+
+        {
+            Silecs::Register* pRegister = pPLCDevice->getRegister("C_int16");
+            uint32_t dim1 = pRegister->getDimension1();
+            uint32_t dim2 = pRegister->getDimension2();
+            uint32_t fesaDim1,fesaDim2;
+            pRegister->setValInt16Array2D(pDevice->C_int16_fesa.get(fesaDim1, fesaDim2), dim1, dim2);
+        }
+
+        {
+            Silecs::Register* pRegister = pPLCDevice->getRegister("C_uint16");
+            uint32_t dim1 = pRegister->getDimension1();
+            uint32_t dim2 = pRegister->getDimension2();
+            uint32_t fesaDim1,fesaDim2;
+            pRegister->setValUInt16Array2D(pDevice->C_uint16_fesa.get(fesaDim1, fesaDim2), dim1, dim2);
+        }
+
+        {
+            Silecs::Register* pRegister = pPLCDevice->getRegister("C_int32");
+            uint32_t dim1 = pRegister->getDimension1();
+            uint32_t dim2 = pRegister->getDimension2();
+            uint32_t fesaDim1,fesaDim2;
+            pRegister->setValInt32Array2D(pDevice->C_int32_fesa.get(fesaDim1, fesaDim2), dim1, dim2);
+        }
+
+        {
+            Silecs::Register* pRegister = pPLCDevice->getRegister("C_uint32");
+            uint32_t dim1 = pRegister->getDimension1();
+            uint32_t dim2 = pRegister->getDimension2();
+            uint32_t fesaDim1,fesaDim2;
+            pRegister->setValUInt32Array2D(pDevice->C_uint32_fesa.get(fesaDim1, fesaDim2), dim1, dim2);
+        }
+
+        {
+            Silecs::Register* pRegister = pPLCDevice->getRegister("C_float32");
+            uint32_t dim1 = pRegister->getDimension1();
+            uint32_t dim2 = pRegister->getDimension2();
+            uint32_t fesaDim1,fesaDim2;
+            pRegister->setValFloat32Array2D(pDevice->C_float32_fesa.get(fesaDim1, fesaDim2), dim1, dim2);
+        }
+
+        {
+            Silecs::Register* pRegister = pPLCDevice->getRegister("C_date");
+            uint32_t dim1 = pRegister->getDimension1();
+            uint32_t dim2 = pRegister->getDimension2();
+            uint32_t fesaDim1,fesaDim2;
+            pRegister->setValDateArray2D(pDevice->C_date_fesa.get(fesaDim1, fesaDim2), dim1, dim2);
+        }
+
+        {
+            Silecs::Register* pRegister = pPLCDevice->getRegister("C_char");
+            uint32_t dim1 = pRegister->getDimension1();
+            uint32_t dim2 = pRegister->getDimension2();
+            uint32_t fesaDim1,fesaDim2;
+            pRegister->setValInt8Array2D(pDevice->C_char_fesa.get(fesaDim1, fesaDim2), dim1, dim2);
+        }
+
+        {
+            Silecs::Register* pRegister = pPLCDevice->getRegister("C_byte");
+            uint32_t dim1 = pRegister->getDimension1();
+            uint32_t dim2 = pRegister->getDimension2();
+            uint32_t fesaDim1,fesaDim2;
+            pRegister->setValUInt8Array2D(pDevice->C_byte_fesa.get(fesaDim1, fesaDim2), dim1, dim2);
+        }
+
+        {
+            Silecs::Register* pRegister = pPLCDevice->getRegister("C_word");
+            uint32_t dim1 = pRegister->getDimension1();
+            uint32_t dim2 = pRegister->getDimension2();
+            uint32_t fesaDim1,fesaDim2;
+            pRegister->setValUInt16Array2D(pDevice->C_word_fesa.get(fesaDim1, fesaDim2), dim1, dim2);
+        }
+
+        {
+            Silecs::Register* pRegister = pPLCDevice->getRegister("C_dword");
+            uint32_t dim1 = pRegister->getDimension1();
+            uint32_t dim2 = pRegister->getDimension2();
+            uint32_t fesaDim1,fesaDim2;
+            pRegister->setValUInt32Array2D(pDevice->C_dword_fesa.get(fesaDim1, fesaDim2), dim1, dim2);
+        }
+
+        {
+            Silecs::Register* pRegister = pPLCDevice->getRegister("C_int");
+            uint32_t dim1 = pRegister->getDimension1();
+            uint32_t dim2 = pRegister->getDimension2();
+            uint32_t fesaDim1,fesaDim2;
+            pRegister->setValInt16Array2D(pDevice->C_int_fesa.get(fesaDim1, fesaDim2), dim1, dim2);
+        }
+
+        {
+            Silecs::Register* pRegister = pPLCDevice->getRegister("C_dint");
+            uint32_t dim1 = pRegister->getDimension1();
+            uint32_t dim2 = pRegister->getDimension2();
+            uint32_t fesaDim1,fesaDim2;
+            pRegister->setValInt32Array2D(pDevice->C_dint_fesa.get(fesaDim1, fesaDim2), dim1, dim2);
+        }
+
+        {
+            Silecs::Register* pRegister = pPLCDevice->getRegister("C_real");
+            uint32_t dim1 = pRegister->getDimension1();
+            uint32_t dim2 = pRegister->getDimension2();
+            uint32_t fesaDim1,fesaDim2;
+            pRegister->setValFloat32Array2D(pDevice->C_real_fesa.get(fesaDim1, fesaDim2), dim1, dim2);
+        }
+
+        {
+            Silecs::Register* pRegister = pPLCDevice->getRegister("C_dt");
+            uint32_t dim1 = pRegister->getDimension1();
+            uint32_t dim2 = pRegister->getDimension2();
+            uint32_t fesaDim1,fesaDim2;
+            pRegister->setValDateArray2D(pDevice->C_dt_fesa.get(fesaDim1, fesaDim2), dim1, dim2);
+        }
+
+        if (sendNow) pPLCDevice->send(blockName_);
+    }
+
+    void MyCBlock_Type::setOneDevice(Device* pDevice, MyCBlockPropPropertyData& data, bool sendNow, MultiplexingContext* pContext)
+    {
+    	if( !isInitialized_ )
+    	{
+    		throw fesa::FesaException(__FILE__, __LINE__, "SILECS-Service not initialized yet - AllTypes::setup needs to be called before any plc-interaction can be done");
+    	}
+        Silecs::PLC* pPLC = pCluster_->getPLC(pDevice->plcHostName.get());
+        Silecs::Device* pPLCDevice = pPLC->getDevice(pDevice->plcDeviceLabel.get());
+
+        {
+            Silecs::Register* pRegister = pPLCDevice->getRegister("C_int8");
+            uint32_t dim1 = pRegister->getDimension1();
+            uint32_t dim2 = pRegister->getDimension2();
+            uint32_t fesaDim1,fesaDim2;
+            (data.isC_int8Available()) ? pRegister->setValInt8Array2D(data.C_int8.get(fesaDim1, fesaDim2), dim1, dim2) :
+                                         pRegister->setValInt8Array2D(pDevice->C_int8.get(fesaDim1, fesaDim2), dim1, dim2);
+        }
+
+        {
+            Silecs::Register* pRegister = pPLCDevice->getRegister("C_uint8");
+            uint32_t dim1 = pRegister->getDimension1();
+            uint32_t dim2 = pRegister->getDimension2();
+            uint32_t fesaDim1,fesaDim2;
+            (data.isC_uint8_fesaAvailable()) ? pRegister->setValUInt8Array2D(data.C_uint8_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
+                                         pRegister->setValUInt8Array2D(pDevice->C_uint8_fesa.get(fesaDim1, fesaDim2), dim1, dim2);
+        }
+
+        {
+            Silecs::Register* pRegister = pPLCDevice->getRegister("C_int16");
+            uint32_t dim1 = pRegister->getDimension1();
+            uint32_t dim2 = pRegister->getDimension2();
+            uint32_t fesaDim1,fesaDim2;
+            (data.isC_int16_fesaAvailable()) ? pRegister->setValInt16Array2D(data.C_int16_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
+                                         pRegister->setValInt16Array2D(pDevice->C_int16_fesa.get(fesaDim1, fesaDim2), dim1, dim2);
+        }
+
+        {
+            Silecs::Register* pRegister = pPLCDevice->getRegister("C_uint16");
+            uint32_t dim1 = pRegister->getDimension1();
+            uint32_t dim2 = pRegister->getDimension2();
+            uint32_t fesaDim1,fesaDim2;
+            (data.isC_uint16_fesaAvailable()) ? pRegister->setValUInt16Array2D(data.C_uint16_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
+                                         pRegister->setValUInt16Array2D(pDevice->C_uint16_fesa.get(fesaDim1, fesaDim2), dim1, dim2);
+        }
+
+        {
+            Silecs::Register* pRegister = pPLCDevice->getRegister("C_int32");
+            uint32_t dim1 = pRegister->getDimension1();
+            uint32_t dim2 = pRegister->getDimension2();
+            uint32_t fesaDim1,fesaDim2;
+            (data.isC_int32_fesaAvailable()) ? pRegister->setValInt32Array2D(data.C_int32_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
+                                         pRegister->setValInt32Array2D(pDevice->C_int32_fesa.get(fesaDim1, fesaDim2), dim1, dim2);
+        }
+
+        {
+            Silecs::Register* pRegister = pPLCDevice->getRegister("C_uint32");
+            uint32_t dim1 = pRegister->getDimension1();
+            uint32_t dim2 = pRegister->getDimension2();
+            uint32_t fesaDim1,fesaDim2;
+            (data.isC_uint32_fesaAvailable()) ? pRegister->setValUInt32Array2D(data.C_uint32_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
+                                         pRegister->setValUInt32Array2D(pDevice->C_uint32_fesa.get(fesaDim1, fesaDim2), dim1, dim2);
+        }
+
+        {
+            Silecs::Register* pRegister = pPLCDevice->getRegister("C_float32");
+            uint32_t dim1 = pRegister->getDimension1();
+            uint32_t dim2 = pRegister->getDimension2();
+            uint32_t fesaDim1,fesaDim2;
+            (data.isC_float32_fesaAvailable()) ? pRegister->setValFloat32Array2D(data.C_float32_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
+                                         pRegister->setValFloat32Array2D(pDevice->C_float32_fesa.get(fesaDim1, fesaDim2), dim1, dim2);
+        }
+
+        {
+            Silecs::Register* pRegister = pPLCDevice->getRegister("C_date");
+            uint32_t dim1 = pRegister->getDimension1();
+            uint32_t dim2 = pRegister->getDimension2();
+            uint32_t fesaDim1,fesaDim2;
+            (data.isC_date_fesaAvailable()) ? pRegister->setValDateArray2D(data.C_date_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
+                                         pRegister->setValDateArray2D(pDevice->C_date_fesa.get(fesaDim1, fesaDim2), dim1, dim2);
+        }
+
+        {
+            Silecs::Register* pRegister = pPLCDevice->getRegister("C_char");
+            uint32_t dim1 = pRegister->getDimension1();
+            uint32_t dim2 = pRegister->getDimension2();
+            uint32_t fesaDim1,fesaDim2;
+            (data.isC_char_fesaAvailable()) ? pRegister->setValInt8Array2D(data.C_char_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
+                                         pRegister->setValInt8Array2D(pDevice->C_char_fesa.get(fesaDim1, fesaDim2), dim1, dim2);
+        }
+
+        {
+            Silecs::Register* pRegister = pPLCDevice->getRegister("C_byte");
+            uint32_t dim1 = pRegister->getDimension1();
+            uint32_t dim2 = pRegister->getDimension2();
+            uint32_t fesaDim1,fesaDim2;
+            (data.isC_byte_fesaAvailable()) ? pRegister->setValUInt8Array2D(data.C_byte_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
+                                         pRegister->setValUInt8Array2D(pDevice->C_byte_fesa.get(fesaDim1, fesaDim2), dim1, dim2);
+        }
+
+        {
+            Silecs::Register* pRegister = pPLCDevice->getRegister("C_word");
+            uint32_t dim1 = pRegister->getDimension1();
+            uint32_t dim2 = pRegister->getDimension2();
+            uint32_t fesaDim1,fesaDim2;
+            (data.isC_word_fesaAvailable()) ? pRegister->setValUInt16Array2D(data.C_word_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
+                                         pRegister->setValUInt16Array2D(pDevice->C_word_fesa.get(fesaDim1, fesaDim2), dim1, dim2);
+        }
+
+        {
+            Silecs::Register* pRegister = pPLCDevice->getRegister("C_dword");
+            uint32_t dim1 = pRegister->getDimension1();
+            uint32_t dim2 = pRegister->getDimension2();
+            uint32_t fesaDim1,fesaDim2;
+            (data.isC_dword_fesaAvailable()) ? pRegister->setValUInt32Array2D(data.C_dword_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
+                                         pRegister->setValUInt32Array2D(pDevice->C_dword_fesa.get(fesaDim1, fesaDim2), dim1, dim2);
+        }
+
+        {
+            Silecs::Register* pRegister = pPLCDevice->getRegister("C_int");
+            uint32_t dim1 = pRegister->getDimension1();
+            uint32_t dim2 = pRegister->getDimension2();
+            uint32_t fesaDim1,fesaDim2;
+            (data.isC_int_fesaAvailable()) ? pRegister->setValInt16Array2D(data.C_int_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
+                                         pRegister->setValInt16Array2D(pDevice->C_int_fesa.get(fesaDim1, fesaDim2), dim1, dim2);
+        }
+
+        {
+            Silecs::Register* pRegister = pPLCDevice->getRegister("C_dint");
+            uint32_t dim1 = pRegister->getDimension1();
+            uint32_t dim2 = pRegister->getDimension2();
+            uint32_t fesaDim1,fesaDim2;
+            (data.isC_dint_fesaAvailable()) ? pRegister->setValInt32Array2D(data.C_dint_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
+                                         pRegister->setValInt32Array2D(pDevice->C_dint_fesa.get(fesaDim1, fesaDim2), dim1, dim2);
+        }
+
+        {
+            Silecs::Register* pRegister = pPLCDevice->getRegister("C_real");
+            uint32_t dim1 = pRegister->getDimension1();
+            uint32_t dim2 = pRegister->getDimension2();
+            uint32_t fesaDim1,fesaDim2;
+            (data.isC_real_fesaAvailable()) ? pRegister->setValFloat32Array2D(data.C_real_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
+                                         pRegister->setValFloat32Array2D(pDevice->C_real_fesa.get(fesaDim1, fesaDim2), dim1, dim2);
+        }
+
+        {
+            Silecs::Register* pRegister = pPLCDevice->getRegister("C_dt");
+            uint32_t dim1 = pRegister->getDimension1();
+            uint32_t dim2 = pRegister->getDimension2();
+            uint32_t fesaDim1,fesaDim2;
+            (data.isC_dt_fesaAvailable()) ? pRegister->setValDateArray2D(data.C_dt_fesa.get(fesaDim1, fesaDim2), dim1, dim2) :
+                                         pRegister->setValDateArray2D(pDevice->C_dt_fesa.get(fesaDim1, fesaDim2), dim1, dim2);
+        }
+
+        if (sendNow) pPLCDevice->send(blockName_);
+
+    }
 
 }
diff --git a/silecs-codegen/src/xml/test/generated_correct/AllTypes.h b/silecs-codegen/src/xml/test/generated_correct/AllTypes.h
index 79ecda2f0d7ca86297803f3be6d334078b928da3..302485eabbb24a147c68b8bc603178a2100bda3e 100644
--- a/silecs-codegen/src/xml/test/generated_correct/AllTypes.h
+++ b/silecs-codegen/src/xml/test/generated_correct/AllTypes.h
@@ -10,8 +10,6 @@
 #include <SilecsService.h>
 #include <fesa-core/Synchronization/MultiplexingContext.h>
 #include <AllTypes/GeneratedCode/ServiceLocator.h>
-#include <AllTypes/Server/SetMyRWBlockProp.h>
-#include <AllTypes/Server/SetMyWOBlockProp.h>
 
 namespace AllTypes
 {
@@ -57,8 +55,8 @@ namespace AllTypes
             static void setup(const ServiceLocator* serviceLocator);
             static void cleanup();
             static bool isInitialized(){ return AbstractAllTypes::isInitialized_; }
-            static void setPLCSlaveRegisters(Silecs::PLC* pPLC, const ServiceLocator* serviceLocator);
-            static void getPLCMasterRegisters(Silecs::PLC* pPLC, const ServiceLocator* serviceLocator);
+            static void updatePLCRegisters(Silecs::PLC* pPLC, const ServiceLocator* serviceLocator);
+            static void updateFesaFields(Silecs::PLC* pPLC, const ServiceLocator* serviceLocator);
 
             AbstractAllTypes(std::string blockName);
             virtual ~AbstractAllTypes();
@@ -122,6 +120,7 @@ namespace AllTypes
     BLOCK_RO( MyROBlock, MyROBlockProp );
     BLOCK_RW( MyRWBlock, MyRWBlockProp );
     BLOCK_WO( MyWOBlock, MyWOBlockProp );
+    BLOCK_WO( MyCBlock, MyCBlockProp );
     
     /*---------------------------------------------------------------------------------------------------------
      * INTERFACE
@@ -143,7 +142,8 @@ namespace AllTypes
     
 			static MyROBlock_Type MyROBlock;
 			static MyRWBlock_Type MyRWBlock;
-			static MyWOBlock_Type MyWOBlock;           
+			static MyWOBlock_Type MyWOBlock;
+			static MyCBlock_Type MyCBlock;           
         };
     }
 
diff --git a/silecs-codegen/src/xml/test/generated_correct/AllTypesFESA.design b/silecs-codegen/src/xml/test/generated_correct/AllTypesFESA.design
index d6d300c11a3b60a1fd2eb604d3bd85f367c9852e..4b25e6602f826fb3af5c527dd5684e320a303741 100644
--- a/silecs-codegen/src/xml/test/generated_correct/AllTypesFESA.design
+++ b/silecs-codegen/src/xml/test/generated_correct/AllTypesFESA.design
@@ -256,7 +256,7 @@ corresponding string array containing keys to illustrate the meaning of the deta
                         <acquisition-context-field-ref field-name-ref="acquisitionContext"/>
                     </acquisition-context-item>
                 </GSI-Acquisition-Property>
-                <GSI-Acquisition-Property name="MyROBlockProp" subscribable="true" multiplexed="false" on-change="true" visibility="development"><value-item name="RO_dt_fesa" direction="OUT"><scalar type="double"/><data-field-ref field-name-ref="RO_dt_fesa"/></value-item><value-item name="RO_real_fesa" direction="OUT"><scalar type="float"/><data-field-ref field-name-ref="RO_real_fesa"/></value-item><value-item name="RO_dint_fesa" direction="OUT"><scalar type="int32_t"/><data-field-ref field-name-ref="RO_dint_fesa"/></value-item><value-item name="RO_int_fesa" direction="OUT"><scalar type="int16_t"/><data-field-ref field-name-ref="RO_int_fesa"/></value-item><value-item name="RO_dword_fesa" direction="OUT"><scalar type="int64_t"/><data-field-ref field-name-ref="RO_dword_fesa"/></value-item><value-item name="RO_word_fesa" direction="OUT"><scalar type="int32_t"/><data-field-ref field-name-ref="RO_word_fesa"/></value-item><value-item name="RO_byte_fesa" direction="OUT"><scalar type="int16_t"/><data-field-ref field-name-ref="RO_byte_fesa"/></value-item><value-item name="RO_char_fesa" direction="OUT"><scalar type="int8_t"/><data-field-ref field-name-ref="RO_char_fesa"/></value-item><value-item name="RO_date_fesa" direction="OUT"><scalar type="double"/><data-field-ref field-name-ref="RO_date_fesa"/></value-item><value-item name="RO_string_fesa" direction="OUT"><array type="char"><dim>64</dim></array><data-field-ref field-name-ref="RO_string_fesa"/></value-item><value-item name="RO_float32_fesa" direction="OUT"><scalar type="float"/><data-field-ref field-name-ref="RO_float32_fesa"/></value-item><value-item name="RO_uint32_fesa" direction="OUT"><scalar type="int64_t"/><data-field-ref field-name-ref="RO_uint32_fesa"/></value-item><value-item name="RO_int32_fesa" direction="OUT"><scalar type="int32_t"/><data-field-ref field-name-ref="RO_int32_fesa"/></value-item><value-item name="RO_uint16_fesa" direction="OUT"><scalar type="int32_t"/><data-field-ref field-name-ref="RO_uint16_fesa"/></value-item><value-item name="RO_int16_fesa" direction="OUT"><scalar type="int16_t"/><data-field-ref field-name-ref="RO_int16_fesa"/></value-item><value-item name="RO_uint8_fesa" direction="OUT"><scalar type="int16_t"/><data-field-ref field-name-ref="RO_uint8_fesa"/></value-item><value-item name="RO_int8" direction="OUT"><scalar type="int8_t"/><data-field-ref field-name-ref="RO_int8"/></value-item><acq-stamp-item direction="OUT" name="acqStamp"><scalar type="int64_t"/></acq-stamp-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><cycle-stamp-item direction="OUT" optional="true" name="cycleStamp"><scalar type="int64_t"/></cycle-stamp-item><get-action><server-action-ref server-action-name-ref="GetMyROBlockProp"/></get-action><acquisition-context-item direction="OUT"><processIndex direction="OUT" name="processIndex"><scalar type="int32_t"/></processIndex><sequenceIndex direction="OUT" name="sequenceIndex"><scalar type="int32_t"/></sequenceIndex><chainIndex direction="OUT" name="chainIndex"><scalar type="int32_t"/></chainIndex><eventNumber direction="OUT" name="eventNumber"><scalar type="int32_t"/></eventNumber><timingGroupID direction="OUT" name="timingGroupID"><scalar type="int32_t"/></timingGroupID><acquisitionStamp direction="OUT" name="acquisitionStamp"><scalar type="int64_t"/></acquisitionStamp><eventStamp direction="OUT" name="eventStamp"><scalar type="int64_t"/></eventStamp><processStartStamp direction="OUT" name="processStartStamp"><scalar type="int64_t"/></processStartStamp><sequenceStartStamp direction="OUT" name="sequenceStartStamp"><scalar type="int64_t"/></sequenceStartStamp><chainStartStamp direction="OUT" name="chainStartStamp"><scalar type="int64_t"/></chainStartStamp><acquisition-context-field-ref field-name-ref="acquisitionContext"/></acquisition-context-item></GSI-Acquisition-Property><GSI-Version-Property multiplexed="false" name="Version" on-change="false" subscribable="false" visibility="operational">
+                <GSI-Acquisition-Property name="MyROBlockProp" subscribable="true" multiplexed="false" on-change="true" visibility="development"><value-item name="RO_dt_fesa" direction="OUT"><scalar type="double"/><data-field-ref field-name-ref="RO_dt_fesa"/></value-item><value-item name="RO_real_fesa" direction="OUT"><scalar type="float"/><data-field-ref field-name-ref="RO_real_fesa"/></value-item><value-item name="RO_dint_fesa" direction="OUT"><scalar type="int32_t"/><data-field-ref field-name-ref="RO_dint_fesa"/></value-item><value-item name="RO_int_fesa" direction="OUT"><scalar type="int16_t"/><data-field-ref field-name-ref="RO_int_fesa"/></value-item><value-item name="RO_dword_fesa" direction="OUT"><scalar type="int64_t"/><data-field-ref field-name-ref="RO_dword_fesa"/></value-item><value-item name="RO_word_fesa" direction="OUT"><scalar type="int32_t"/><data-field-ref field-name-ref="RO_word_fesa"/></value-item><value-item name="RO_byte_fesa" direction="OUT"><scalar type="int16_t"/><data-field-ref field-name-ref="RO_byte_fesa"/></value-item><value-item name="RO_char_fesa" direction="OUT"><scalar type="int8_t"/><data-field-ref field-name-ref="RO_char_fesa"/></value-item><value-item name="RO_date_fesa" direction="OUT"><scalar type="double"/><data-field-ref field-name-ref="RO_date_fesa"/></value-item><value-item name="RO_string_fesa" direction="OUT"><array type="char"><dim>64</dim></array><data-field-ref field-name-ref="RO_string_fesa"/></value-item><value-item name="RO_float32_fesa" direction="OUT"><scalar type="float"/><data-field-ref field-name-ref="RO_float32_fesa"/></value-item><value-item name="RO_uint32_fesa" direction="OUT"><scalar type="int64_t"/><data-field-ref field-name-ref="RO_uint32_fesa"/></value-item><value-item name="RO_int32_fesa" direction="OUT"><scalar type="int32_t"/><data-field-ref field-name-ref="RO_int32_fesa"/></value-item><value-item name="RO_uint16_fesa" direction="OUT"><scalar type="int32_t"/><data-field-ref field-name-ref="RO_uint16_fesa"/></value-item><value-item name="RO_int16_fesa" direction="OUT"><scalar type="int16_t"/><data-field-ref field-name-ref="RO_int16_fesa"/></value-item><value-item name="RO_uint8_fesa" direction="OUT"><scalar type="int16_t"/><data-field-ref field-name-ref="RO_uint8_fesa"/></value-item><value-item name="RO_int8" direction="OUT"><scalar type="int8_t"/><data-field-ref field-name-ref="RO_int8"/></value-item><acq-stamp-item direction="OUT" name="acqStamp"><scalar type="int64_t"/></acq-stamp-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><cycle-stamp-item direction="OUT" optional="true" name="cycleStamp"><scalar type="int64_t"/></cycle-stamp-item><get-action><server-action-ref server-action-name-ref="GetMyROBlockProp"/></get-action><acquisition-context-item direction="OUT"><processIndex direction="OUT" name="processIndex"><scalar type="int32_t"/></processIndex><sequenceIndex direction="OUT" name="sequenceIndex"><scalar type="int32_t"/></sequenceIndex><chainIndex direction="OUT" name="chainIndex"><scalar type="int32_t"/></chainIndex><eventNumber direction="OUT" name="eventNumber"><scalar type="int32_t"/></eventNumber><timingGroupID direction="OUT" name="timingGroupID"><scalar type="int32_t"/></timingGroupID><acquisitionStamp direction="OUT" name="acquisitionStamp"><scalar type="int64_t"/></acquisitionStamp><eventStamp direction="OUT" name="eventStamp"><scalar type="int64_t"/></eventStamp><processStartStamp direction="OUT" name="processStartStamp"><scalar type="int64_t"/></processStartStamp><sequenceStartStamp direction="OUT" name="sequenceStartStamp"><scalar type="int64_t"/></sequenceStartStamp><chainStartStamp direction="OUT" name="chainStartStamp"><scalar type="int64_t"/></chainStartStamp><acquisition-context-field-ref field-name-ref="acquisitionContext"/></acquisition-context-item></GSI-Acquisition-Property><GSI-Acquisition-Property name="MyCBlockProp" subscribable="true" multiplexed="false" on-change="true" visibility="development"><value-item name="C_dt_fesa" direction="OUT"><array2D type="double"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_dt_fesa"/></value-item><value-item name="C_real_fesa" direction="OUT"><array2D type="float"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_real_fesa"/></value-item><value-item name="C_dint_fesa" direction="OUT"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_dint_fesa"/></value-item><value-item name="C_int_fesa" direction="OUT"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_int_fesa"/></value-item><value-item name="C_dword_fesa" direction="OUT"><array2D type="int64_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_dword_fesa"/></value-item><value-item name="C_word_fesa" direction="OUT"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_word_fesa"/></value-item><value-item name="C_byte_fesa" direction="OUT"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_byte_fesa"/></value-item><value-item name="C_char_fesa" direction="OUT"><array2D type="int8_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_char_fesa"/></value-item><value-item name="C_date_fesa" direction="OUT"><array2D type="double"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_date_fesa"/></value-item><value-item name="C_float32_fesa" direction="OUT"><array2D type="float"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_float32_fesa"/></value-item><value-item name="C_uint32_fesa" direction="OUT"><array2D type="int64_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_uint32_fesa"/></value-item><value-item name="C_int32_fesa" direction="OUT"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_int32_fesa"/></value-item><value-item name="C_uint16_fesa" direction="OUT"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_uint16_fesa"/></value-item><value-item name="C_int16_fesa" direction="OUT"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_int16_fesa"/></value-item><value-item name="C_uint8_fesa" direction="OUT"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_uint8_fesa"/></value-item><value-item name="C_int8" direction="OUT"><array2D type="int8_t"><dim1>2</dim1><dim2>2</dim2></array2D><data-field-ref field-name-ref="C_int8"/></value-item><acq-stamp-item direction="OUT" name="acqStamp"><scalar type="int64_t"/></acq-stamp-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><cycle-stamp-item direction="OUT" optional="true" name="cycleStamp"><scalar type="int64_t"/></cycle-stamp-item><get-action><server-action-ref server-action-name-ref="GetMyCBlockProp"/></get-action><acquisition-context-item direction="OUT"><processIndex direction="OUT" name="processIndex"><scalar type="int32_t"/></processIndex><sequenceIndex direction="OUT" name="sequenceIndex"><scalar type="int32_t"/></sequenceIndex><chainIndex direction="OUT" name="chainIndex"><scalar type="int32_t"/></chainIndex><eventNumber direction="OUT" name="eventNumber"><scalar type="int32_t"/></eventNumber><timingGroupID direction="OUT" name="timingGroupID"><scalar type="int32_t"/></timingGroupID><acquisitionStamp direction="OUT" name="acquisitionStamp"><scalar type="int64_t"/></acquisitionStamp><eventStamp direction="OUT" name="eventStamp"><scalar type="int64_t"/></eventStamp><processStartStamp direction="OUT" name="processStartStamp"><scalar type="int64_t"/></processStartStamp><sequenceStartStamp direction="OUT" name="sequenceStartStamp"><scalar type="int64_t"/></sequenceStartStamp><chainStartStamp direction="OUT" name="chainStartStamp"><scalar type="int64_t"/></chainStartStamp><acquisition-context-field-ref field-name-ref="acquisitionContext"/></acquisition-context-item></GSI-Acquisition-Property><GSI-Version-Property multiplexed="false" name="Version" on-change="false" subscribable="false" visibility="operational">
                     <description>Returns the current software and hardware versions of a piece of equipment.</description>
                     <acq-stamp-item direction="OUT" name="acqStamp">
                         <scalar type="int64_t"/>
@@ -609,7 +609,7 @@ corresponding string array containing keys to illustrate the meaning of the deta
     <data>
         <device-data>
             <configuration>
-                <field name="plcDeviceLabel"><description>Name of the related SILECS instance within the PLC mapping</description><array type="char"><dim>128</dim></array></field><field name="plcHostName"><description>Hostname of the PLC that contains the related SILECS class device</description><array type="char"><dim>128</dim></array></field><GSI-detailed-status-labels-field name="detailedStatus_labels">
+                <field name="C_dt_fesa"><array2D type="double"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="C_real_fesa"><array2D type="float"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="C_dint_fesa"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="C_int_fesa"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="C_dword_fesa"><array2D type="int64_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="C_word_fesa"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="C_byte_fesa"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="C_char_fesa"><array2D type="int8_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="C_date_fesa"><array2D type="double"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="C_float32_fesa"><array2D type="float"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="C_uint32_fesa"><array2D type="int64_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="C_int32_fesa"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="C_uint16_fesa"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="C_int16_fesa"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="C_uint8_fesa"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="C_int8"><array2D type="int8_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="plcDeviceLabel"><description>Name of the related SILECS instance within the PLC mapping</description><array type="char"><dim>128</dim></array></field><field name="plcHostName"><description>Hostname of the PLC that contains the related SILECS class device</description><array type="char"><dim>128</dim></array></field><GSI-detailed-status-labels-field name="detailedStatus_labels">
                     <array2D type="char">
                         <custom-constant-dim1 constant-name-ref="DETAILED_STATUS_SIZE"/>
                         <custom-constant-dim2 constant-name-ref="MAX_DETAILED_STATUS_LABEL_LENGTH"/>
@@ -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="false"><array2D type="double"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_real_fesa" multiplexed="false" persistent="false"><array2D type="float"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_dint_fesa" multiplexed="false" persistent="false"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_int_fesa" multiplexed="false" persistent="false"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_dword_fesa" multiplexed="false" persistent="false"><array2D type="int64_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_word_fesa" multiplexed="false" persistent="false"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_byte_fesa" multiplexed="false" persistent="false"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_char_fesa" multiplexed="false" persistent="false"><array2D type="int8_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_date_fesa" multiplexed="false" persistent="false"><array2D type="double"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_float32_fesa" multiplexed="false" persistent="false"><array2D type="float"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_uint32_fesa" multiplexed="false" persistent="false"><array2D type="int64_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_int32_fesa" multiplexed="false" persistent="false"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_uint16_fesa" multiplexed="false" persistent="false"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_int16_fesa" multiplexed="false" persistent="false"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_uint8_fesa" multiplexed="false" persistent="false"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_int8" multiplexed="false" persistent="false"><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="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">
                     <custom-type-scalar data-type-name-ref="DEVICE_POWER"/>
                 </GSI-power-field>
             </setting>
@@ -698,6 +698,6 @@ corresponding string array containing keys to illustrate the meaning of the deta
         <get-server-action implementation="default" name="StatusGetAction"/>
         <get-server-action implementation="default" name="VersionGetAction"/>
         <get-server-action implementation="default" name="ModuleStatusGetAction"/>
-    <get-server-action name="GetMyROBlockProp" implementation="custom"/><set-server-action name="SetMyRWBlockProp" implementation="custom"/><get-server-action name="GetMyRWBlockProp" implementation="custom"/><set-server-action name="SetMyWOBlockProp" implementation="custom"/></actions>
+    <get-server-action name="GetMyROBlockProp" implementation="custom"/><set-server-action name="SetMyRWBlockProp" implementation="custom"/><get-server-action name="GetMyRWBlockProp" implementation="custom"/><set-server-action name="SetMyWOBlockProp" implementation="custom"/><get-server-action name="GetMyCBlockProp" implementation="custom"/></actions>
 
 </equipment-model>
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 11250f892fda94f20b88d15e682c0e7eb4e7ca9c..70ee79b851f440d31b521726f23c8321176b0b31 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="2017-07-27 16:14:06.421145"/>
-    <Deployment checksum="1037751963"/>
+    <Generation date="2018-01-31 10:48:11.878641"/>
+    <Deployment checksum="2903751780"/>
   </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,7 +23,7 @@
       </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..MW1783/1760 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..MW2251/2228 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"/>
@@ -78,57 +78,57 @@
 			</Acquisition-Register>
       </Acquisition-Block>
       <Setting-Block name="MyRWBlock" size="212" address="33060" mem-size="468">
-        <Volatile-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4">
+        <Setting-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4">
 				<array2D dim1="2" dim2="2" format="int8"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="4" mem-size="4">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="8" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="16" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="24" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="40" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="56" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="72" mem-size="260">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="332" mem-size="32">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="364" mem-size="4">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="368" mem-size="4">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="372" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="380" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="396" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="404" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="420" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="436" mem-size="32">
+			</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"/>
-			</Volatile-Register>
+			</Setting-Register>
       </Setting-Block>
       <Command-Block name="MyWOBlock" size="530" address="33996" mem-size="1170">
         <Setting-Register name="WO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="10">
@@ -183,6 +183,59 @@
 				<array dim="10" format="dt"/>
 			</Setting-Register>
       </Command-Block>
+      <Configuration-Block name="MyCBlock" size="212" address="36336" 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>
+        <Configuration-Register name="C_uint8" generateFesaValueItem="true" fesaFieldName="C_uint8_fesa" size="1" address="4" mem-size="4">
+                <array2D dim1="2" dim2="2" format="uint8"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_int16" generateFesaValueItem="true" fesaFieldName="C_int16_fesa" size="2" address="8" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int16"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_uint16" generateFesaValueItem="true" fesaFieldName="C_uint16_fesa" size="2" address="16" mem-size="8">
+                <array2D dim1="2" dim2="2" format="uint16"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_int32" generateFesaValueItem="true" fesaFieldName="C_int32_fesa" size="4" address="24" mem-size="16">
+                <array2D dim1="2" dim2="2" format="int32"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_uint32" generateFesaValueItem="true" fesaFieldName="C_uint32_fesa" size="4" address="40" mem-size="16">
+                <array2D dim1="2" dim2="2" format="uint32"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_float32" generateFesaValueItem="true" fesaFieldName="C_float32_fesa" size="4" address="56" mem-size="16">
+                <array2D dim1="2" dim2="2" format="float32"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_string" generateFesaValueItem="true" fesaFieldName="C_string_fesa" size="1" address="72" mem-size="260">
+                <stringArray2D dim1="2" dim2="2" string-length="64" format="string"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_date" generateFesaValueItem="true" fesaFieldName="C_date_fesa" size="8" address="332" mem-size="32">
+                <array2D dim1="2" dim2="2" format="date"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_char" generateFesaValueItem="true" fesaFieldName="C_char_fesa" size="1" address="364" mem-size="4">
+                <array2D dim1="2" dim2="2" format="char"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_byte" generateFesaValueItem="true" fesaFieldName="C_byte_fesa" size="1" address="368" mem-size="4">
+                <array2D dim1="2" dim2="2" format="byte"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_word" generateFesaValueItem="true" fesaFieldName="C_word_fesa" size="2" address="372" mem-size="8">
+                <array2D dim1="2" dim2="2" format="word"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_dword" generateFesaValueItem="true" fesaFieldName="C_dword_fesa" size="4" address="380" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dword"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_int" generateFesaValueItem="true" fesaFieldName="C_int_fesa" size="2" address="396" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_dint" generateFesaValueItem="true" fesaFieldName="C_dint_fesa" size="4" address="404" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dint"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_real" generateFesaValueItem="true" fesaFieldName="C_real_fesa" size="4" address="420" mem-size="16">
+                <array2D dim1="2" dim2="2" format="real"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_dt" generateFesaValueItem="true" fesaFieldName="C_dt_fesa" size="8" address="436" mem-size="32">
+                <array2D dim1="2" dim2="2" format="dt"/>
+            </Configuration-Register>
+      </Configuration-Block>
       <Instance label="testDevice1" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1"/>
       <Instance label="testDevice2" address="1" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1"/>
     </SILECS-Class>
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 b1393097bbd7f2a35ad1856383fca7b84ca5cd34..76c23b00b403ccec86e7c51d60c2e5287ae302f6 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="2017-07-28 12:11:45.390885"/>
-    <Deployment checksum="2754857673"/>
+    <Generation date="2018-01-31 10:48:11.926827"/>
+    <Deployment checksum="2305663869"/>
   </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,7 +23,7 @@
       </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..MW3587/3536 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..MW4523/4472 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"/>
@@ -78,57 +78,57 @@
 			</Acquisition-Register>
       </Acquisition-Block>
       <Setting-Block name="MyRWBlock" size="212" address="24884" mem-size="468">
-        <Volatile-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4">
+        <Setting-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4">
 				<array2D dim1="2" dim2="2" format="int8"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="4" mem-size="4">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="8" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="16" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="24" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="40" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="56" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="72" mem-size="260">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="332" mem-size="32">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="364" mem-size="4">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="368" mem-size="4">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="372" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="380" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="396" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="404" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="420" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="436" mem-size="32">
+			</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"/>
-			</Volatile-Register>
+			</Setting-Register>
       </Setting-Block>
       <Command-Block name="MyWOBlock" size="530" address="25820" mem-size="1172">
         <Setting-Register name="WO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="10">
@@ -183,6 +183,59 @@
 				<array dim="10" format="dt"/>
 			</Setting-Register>
       </Command-Block>
+      <Configuration-Block name="MyCBlock" size="212" address="28164" 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>
+        <Configuration-Register name="C_uint8" generateFesaValueItem="true" fesaFieldName="C_uint8_fesa" size="1" address="4" mem-size="4">
+                <array2D dim1="2" dim2="2" format="uint8"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_int16" generateFesaValueItem="true" fesaFieldName="C_int16_fesa" size="2" address="8" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int16"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_uint16" generateFesaValueItem="true" fesaFieldName="C_uint16_fesa" size="2" address="16" mem-size="8">
+                <array2D dim1="2" dim2="2" format="uint16"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_int32" generateFesaValueItem="true" fesaFieldName="C_int32_fesa" size="4" address="24" mem-size="16">
+                <array2D dim1="2" dim2="2" format="int32"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_uint32" generateFesaValueItem="true" fesaFieldName="C_uint32_fesa" size="4" address="40" mem-size="16">
+                <array2D dim1="2" dim2="2" format="uint32"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_float32" generateFesaValueItem="true" fesaFieldName="C_float32_fesa" size="4" address="56" mem-size="16">
+                <array2D dim1="2" dim2="2" format="float32"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_string" generateFesaValueItem="true" fesaFieldName="C_string_fesa" size="1" address="72" mem-size="260">
+                <stringArray2D dim1="2" dim2="2" string-length="64" format="string"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_date" generateFesaValueItem="true" fesaFieldName="C_date_fesa" size="8" address="332" mem-size="32">
+                <array2D dim1="2" dim2="2" format="date"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_char" generateFesaValueItem="true" fesaFieldName="C_char_fesa" size="1" address="364" mem-size="4">
+                <array2D dim1="2" dim2="2" format="char"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_byte" generateFesaValueItem="true" fesaFieldName="C_byte_fesa" size="1" address="368" mem-size="4">
+                <array2D dim1="2" dim2="2" format="byte"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_word" generateFesaValueItem="true" fesaFieldName="C_word_fesa" size="2" address="372" mem-size="8">
+                <array2D dim1="2" dim2="2" format="word"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_dword" generateFesaValueItem="true" fesaFieldName="C_dword_fesa" size="4" address="380" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dword"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_int" generateFesaValueItem="true" fesaFieldName="C_int_fesa" size="2" address="396" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_dint" generateFesaValueItem="true" fesaFieldName="C_dint_fesa" size="4" address="404" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dint"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_real" generateFesaValueItem="true" fesaFieldName="C_real_fesa" size="4" address="420" mem-size="16">
+                <array2D dim1="2" dim2="2" format="real"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_dt" generateFesaValueItem="true" fesaFieldName="C_dt_fesa" size="8" address="436" mem-size="32">
+                <array2D dim1="2" dim2="2" format="dt"/>
+            </Configuration-Register>
+      </Configuration-Block>
       <Instance label="testDevice1" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1"/>
       <Instance label="testDevice2" address="1" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1"/>
     </SILECS-Class>
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 069dc75fc1f2c7ae305944aacd40f23d60757d87..21b1f9d2b8d124af58dba9f8e64514f20114980b 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="2017-07-28 12:11:45.427012"/>
-    <Deployment checksum="2754857673"/>
+    <Generation date="2018-01-31 10:48:11.976073"/>
+    <Deployment checksum="2305663869"/>
   </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,7 +23,7 @@
       </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..MW1793/1768 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..MW2261/2236 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"/>
@@ -78,57 +78,57 @@
 			</Acquisition-Register>
       </Acquisition-Block>
       <Setting-Block name="MyRWBlock" size="212" address="24884" mem-size="468">
-        <Volatile-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4">
+        <Setting-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4">
 				<array2D dim1="2" dim2="2" format="int8"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="4" mem-size="4">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="8" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="16" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="24" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="40" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="56" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="72" mem-size="260">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="332" mem-size="32">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="364" mem-size="4">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="368" mem-size="4">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="372" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="380" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="396" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="404" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="420" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="436" mem-size="32">
+			</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"/>
-			</Volatile-Register>
+			</Setting-Register>
       </Setting-Block>
       <Command-Block name="MyWOBlock" size="530" address="25820" mem-size="1172">
         <Setting-Register name="WO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="10">
@@ -183,6 +183,59 @@
 				<array dim="10" format="dt"/>
 			</Setting-Register>
       </Command-Block>
+      <Configuration-Block name="MyCBlock" size="212" address="28164" 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>
+        <Configuration-Register name="C_uint8" generateFesaValueItem="true" fesaFieldName="C_uint8_fesa" size="1" address="4" mem-size="4">
+                <array2D dim1="2" dim2="2" format="uint8"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_int16" generateFesaValueItem="true" fesaFieldName="C_int16_fesa" size="2" address="8" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int16"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_uint16" generateFesaValueItem="true" fesaFieldName="C_uint16_fesa" size="2" address="16" mem-size="8">
+                <array2D dim1="2" dim2="2" format="uint16"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_int32" generateFesaValueItem="true" fesaFieldName="C_int32_fesa" size="4" address="24" mem-size="16">
+                <array2D dim1="2" dim2="2" format="int32"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_uint32" generateFesaValueItem="true" fesaFieldName="C_uint32_fesa" size="4" address="40" mem-size="16">
+                <array2D dim1="2" dim2="2" format="uint32"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_float32" generateFesaValueItem="true" fesaFieldName="C_float32_fesa" size="4" address="56" mem-size="16">
+                <array2D dim1="2" dim2="2" format="float32"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_string" generateFesaValueItem="true" fesaFieldName="C_string_fesa" size="1" address="72" mem-size="260">
+                <stringArray2D dim1="2" dim2="2" string-length="64" format="string"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_date" generateFesaValueItem="true" fesaFieldName="C_date_fesa" size="8" address="332" mem-size="32">
+                <array2D dim1="2" dim2="2" format="date"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_char" generateFesaValueItem="true" fesaFieldName="C_char_fesa" size="1" address="364" mem-size="4">
+                <array2D dim1="2" dim2="2" format="char"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_byte" generateFesaValueItem="true" fesaFieldName="C_byte_fesa" size="1" address="368" mem-size="4">
+                <array2D dim1="2" dim2="2" format="byte"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_word" generateFesaValueItem="true" fesaFieldName="C_word_fesa" size="2" address="372" mem-size="8">
+                <array2D dim1="2" dim2="2" format="word"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_dword" generateFesaValueItem="true" fesaFieldName="C_dword_fesa" size="4" address="380" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dword"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_int" generateFesaValueItem="true" fesaFieldName="C_int_fesa" size="2" address="396" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_dint" generateFesaValueItem="true" fesaFieldName="C_dint_fesa" size="4" address="404" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dint"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_real" generateFesaValueItem="true" fesaFieldName="C_real_fesa" size="4" address="420" mem-size="16">
+                <array2D dim1="2" dim2="2" format="real"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_dt" generateFesaValueItem="true" fesaFieldName="C_dt_fesa" size="8" address="436" mem-size="32">
+                <array2D dim1="2" dim2="2" format="dt"/>
+            </Configuration-Register>
+      </Configuration-Block>
       <Instance label="testDevice1" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1"/>
       <Instance label="testDevice2" address="1" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1"/>
     </SILECS-Class>
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 547f7eff5ee62111d0793ecfa54214bde2bd7205..9d4a8c0c5409fb22ca0d6d8081accdf8e04ff51c 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="2017-07-27 16:14:06.611199"/>
-    <Deployment checksum="308863231"/>
+    <Generation date="2018-01-31 10:48:12.122661"/>
+    <Deployment checksum="582399177"/>
   </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,7 +23,7 @@
       </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..MW1821/1800 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..MW2301/2280 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"/>
@@ -78,57 +78,57 @@
 			</Acquisition-Register>
       </Acquisition-Block>
       <Setting-Block name="MyRWBlock" size="212" address="284" mem-size="480">
-        <Volatile-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="8">
+        <Setting-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="8">
 				<array2D dim1="2" dim2="2" format="int8"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="8" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="16" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="24" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="32" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="48" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="64" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="80" mem-size="256">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="336" mem-size="32">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="368" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="376" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="384" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="392" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="408" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="416" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="432" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="448" mem-size="32">
+			</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"/>
-			</Volatile-Register>
+			</Setting-Register>
       </Setting-Block>
       <Command-Block name="MyWOBlock" size="530" address="1244" mem-size="1200">
         <Setting-Register name="WO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="20">
@@ -183,6 +183,59 @@
 				<array dim="10" format="dt"/>
 			</Setting-Register>
       </Command-Block>
+      <Configuration-Block name="MyCBlock" size="212" address="3644" 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>
+        <Configuration-Register name="C_uint8" generateFesaValueItem="true" fesaFieldName="C_uint8_fesa" size="1" address="8" mem-size="8">
+                <array2D dim1="2" dim2="2" format="uint8"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_int16" generateFesaValueItem="true" fesaFieldName="C_int16_fesa" size="2" address="16" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int16"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_uint16" generateFesaValueItem="true" fesaFieldName="C_uint16_fesa" size="2" address="24" mem-size="8">
+                <array2D dim1="2" dim2="2" format="uint16"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_int32" generateFesaValueItem="true" fesaFieldName="C_int32_fesa" size="4" address="32" mem-size="16">
+                <array2D dim1="2" dim2="2" format="int32"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_uint32" generateFesaValueItem="true" fesaFieldName="C_uint32_fesa" size="4" address="48" mem-size="16">
+                <array2D dim1="2" dim2="2" format="uint32"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_float32" generateFesaValueItem="true" fesaFieldName="C_float32_fesa" size="4" address="64" mem-size="16">
+                <array2D dim1="2" dim2="2" format="float32"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_string" generateFesaValueItem="true" fesaFieldName="C_string_fesa" size="1" address="80" mem-size="256">
+                <stringArray2D dim1="2" dim2="2" string-length="64" format="string"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_date" generateFesaValueItem="true" fesaFieldName="C_date_fesa" size="8" address="336" mem-size="32">
+                <array2D dim1="2" dim2="2" format="date"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_char" generateFesaValueItem="true" fesaFieldName="C_char_fesa" size="1" address="368" mem-size="8">
+                <array2D dim1="2" dim2="2" format="char"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_byte" generateFesaValueItem="true" fesaFieldName="C_byte_fesa" size="1" address="376" mem-size="8">
+                <array2D dim1="2" dim2="2" format="byte"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_word" generateFesaValueItem="true" fesaFieldName="C_word_fesa" size="2" address="384" mem-size="8">
+                <array2D dim1="2" dim2="2" format="word"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_dword" generateFesaValueItem="true" fesaFieldName="C_dword_fesa" size="4" address="392" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dword"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_int" generateFesaValueItem="true" fesaFieldName="C_int_fesa" size="2" address="408" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_dint" generateFesaValueItem="true" fesaFieldName="C_dint_fesa" size="4" address="416" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dint"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_real" generateFesaValueItem="true" fesaFieldName="C_real_fesa" size="4" address="432" mem-size="16">
+                <array2D dim1="2" dim2="2" format="real"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_dt" generateFesaValueItem="true" fesaFieldName="C_dt_fesa" size="8" address="448" mem-size="32">
+                <array2D dim1="2" dim2="2" format="dt"/>
+            </Configuration-Register>
+      </Configuration-Block>
       <Instance label="testDevice1" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1"/>
       <Instance label="testDevice2" address="1" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1"/>
     </SILECS-Class>
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 8405a9d5208473a1a478ac8d5f48464348b03cd4..05907d64f98bbba4d880f4a1638fe126e9711d87 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="2017-07-27 16:14:06.572989"/>
-    <Deployment checksum="308863231"/>
+    <Generation date="2018-01-31 10:48:12.087466"/>
+    <Deployment checksum="582399177"/>
   </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,7 +23,7 @@
       </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..MW1821/1800 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..MW2301/2280 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"/>
@@ -78,57 +78,57 @@
 			</Acquisition-Register>
       </Acquisition-Block>
       <Setting-Block name="MyRWBlock" size="212" address="120" mem-size="480">
-        <Volatile-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="8">
+        <Setting-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="8">
 				<array2D dim1="2" dim2="2" format="int8"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="8" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="16" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="24" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="32" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="48" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="64" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="80" mem-size="256">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="336" mem-size="32">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="368" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="376" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="384" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="392" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="408" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="416" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="432" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="448" mem-size="32">
+			</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"/>
-			</Volatile-Register>
+			</Setting-Register>
       </Setting-Block>
       <Command-Block name="MyWOBlock" size="530" address="600" mem-size="1200">
         <Setting-Register name="WO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="20">
@@ -183,8 +183,61 @@
 				<array dim="10" format="dt"/>
 			</Setting-Register>
       </Command-Block>
+      <Configuration-Block name="MyCBlock" size="212" address="1800" 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>
+        <Configuration-Register name="C_uint8" generateFesaValueItem="true" fesaFieldName="C_uint8_fesa" size="1" address="8" mem-size="8">
+                <array2D dim1="2" dim2="2" format="uint8"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_int16" generateFesaValueItem="true" fesaFieldName="C_int16_fesa" size="2" address="16" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int16"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_uint16" generateFesaValueItem="true" fesaFieldName="C_uint16_fesa" size="2" address="24" mem-size="8">
+                <array2D dim1="2" dim2="2" format="uint16"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_int32" generateFesaValueItem="true" fesaFieldName="C_int32_fesa" size="4" address="32" mem-size="16">
+                <array2D dim1="2" dim2="2" format="int32"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_uint32" generateFesaValueItem="true" fesaFieldName="C_uint32_fesa" size="4" address="48" mem-size="16">
+                <array2D dim1="2" dim2="2" format="uint32"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_float32" generateFesaValueItem="true" fesaFieldName="C_float32_fesa" size="4" address="64" mem-size="16">
+                <array2D dim1="2" dim2="2" format="float32"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_string" generateFesaValueItem="true" fesaFieldName="C_string_fesa" size="1" address="80" mem-size="256">
+                <stringArray2D dim1="2" dim2="2" string-length="64" format="string"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_date" generateFesaValueItem="true" fesaFieldName="C_date_fesa" size="8" address="336" mem-size="32">
+                <array2D dim1="2" dim2="2" format="date"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_char" generateFesaValueItem="true" fesaFieldName="C_char_fesa" size="1" address="368" mem-size="8">
+                <array2D dim1="2" dim2="2" format="char"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_byte" generateFesaValueItem="true" fesaFieldName="C_byte_fesa" size="1" address="376" mem-size="8">
+                <array2D dim1="2" dim2="2" format="byte"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_word" generateFesaValueItem="true" fesaFieldName="C_word_fesa" size="2" address="384" mem-size="8">
+                <array2D dim1="2" dim2="2" format="word"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_dword" generateFesaValueItem="true" fesaFieldName="C_dword_fesa" size="4" address="392" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dword"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_int" generateFesaValueItem="true" fesaFieldName="C_int_fesa" size="2" address="408" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_dint" generateFesaValueItem="true" fesaFieldName="C_dint_fesa" size="4" address="416" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dint"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_real" generateFesaValueItem="true" fesaFieldName="C_real_fesa" size="4" address="432" mem-size="16">
+                <array2D dim1="2" dim2="2" format="real"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_dt" generateFesaValueItem="true" fesaFieldName="C_dt_fesa" size="8" address="448" mem-size="32">
+                <array2D dim1="2" dim2="2" format="dt"/>
+            </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="1844" 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"/>
     </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 9f487f777f7fcddc30fa5a63c5975872ecec5f23..f367184de1de98ed33a6cab28085841a98b46e63 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="2017-07-27 16:14:06.534996"/>
-    <Deployment checksum="308863231"/>
+    <Generation date="2018-01-31 10:48:12.045673"/>
+    <Deployment checksum="582399177"/>
   </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,7 +23,7 @@
       </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..MW1801/1780 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..MW2273/2252 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"/>
@@ -78,57 +78,57 @@
 			</Acquisition-Register>
       </Acquisition-Block>
       <Setting-Block name="MyRWBlock" size="212" address="292" mem-size="472">
-        <Volatile-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="8">
+        <Setting-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="8">
 				<array2D dim1="2" dim2="2" format="int8"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="8" mem-size="4">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="12" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="20" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="28" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="44" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="60" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="76" mem-size="256">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="332" mem-size="32">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="364" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="372" mem-size="4">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="376" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="384" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="400" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="408" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="424" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="440" mem-size="32">
+			</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"/>
-			</Volatile-Register>
+			</Setting-Register>
       </Setting-Block>
       <Command-Block name="MyWOBlock" size="530" address="1236" mem-size="1184">
         <Setting-Register name="WO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="20">
@@ -183,6 +183,59 @@
 				<array dim="10" format="dt"/>
 			</Setting-Register>
       </Command-Block>
+      <Configuration-Block name="MyCBlock" size="212" address="3604" 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>
+        <Configuration-Register name="C_uint8" generateFesaValueItem="true" fesaFieldName="C_uint8_fesa" size="1" address="8" mem-size="4">
+                <array2D dim1="2" dim2="2" format="uint8"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_int16" generateFesaValueItem="true" fesaFieldName="C_int16_fesa" size="2" address="12" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int16"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_uint16" generateFesaValueItem="true" fesaFieldName="C_uint16_fesa" size="2" address="20" mem-size="8">
+                <array2D dim1="2" dim2="2" format="uint16"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_int32" generateFesaValueItem="true" fesaFieldName="C_int32_fesa" size="4" address="28" mem-size="16">
+                <array2D dim1="2" dim2="2" format="int32"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_uint32" generateFesaValueItem="true" fesaFieldName="C_uint32_fesa" size="4" address="44" mem-size="16">
+                <array2D dim1="2" dim2="2" format="uint32"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_float32" generateFesaValueItem="true" fesaFieldName="C_float32_fesa" size="4" address="60" mem-size="16">
+                <array2D dim1="2" dim2="2" format="float32"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_string" generateFesaValueItem="true" fesaFieldName="C_string_fesa" size="1" address="76" mem-size="256">
+                <stringArray2D dim1="2" dim2="2" string-length="64" format="string"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_date" generateFesaValueItem="true" fesaFieldName="C_date_fesa" size="8" address="332" mem-size="32">
+                <array2D dim1="2" dim2="2" format="date"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_char" generateFesaValueItem="true" fesaFieldName="C_char_fesa" size="1" address="364" mem-size="8">
+                <array2D dim1="2" dim2="2" format="char"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_byte" generateFesaValueItem="true" fesaFieldName="C_byte_fesa" size="1" address="372" mem-size="4">
+                <array2D dim1="2" dim2="2" format="byte"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_word" generateFesaValueItem="true" fesaFieldName="C_word_fesa" size="2" address="376" mem-size="8">
+                <array2D dim1="2" dim2="2" format="word"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_dword" generateFesaValueItem="true" fesaFieldName="C_dword_fesa" size="4" address="384" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dword"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_int" generateFesaValueItem="true" fesaFieldName="C_int_fesa" size="2" address="400" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_dint" generateFesaValueItem="true" fesaFieldName="C_dint_fesa" size="4" address="408" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dint"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_real" generateFesaValueItem="true" fesaFieldName="C_real_fesa" size="4" address="424" mem-size="16">
+                <array2D dim1="2" dim2="2" format="real"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_dt" generateFesaValueItem="true" fesaFieldName="C_dt_fesa" size="8" address="440" mem-size="32">
+                <array2D dim1="2" dim2="2" format="dt"/>
+            </Configuration-Register>
+      </Configuration-Block>
       <Instance label="testDevice1" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1"/>
       <Instance label="testDevice2" address="1" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1"/>
     </SILECS-Class>
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 a8fc93ad660871337aac9b155c074dc1b8272bf1..a86a8e78c1c22c55a86816ea9f2fd1300215e19b 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="2017-07-27 16:14:06.499570"/>
-    <Deployment checksum="308863231"/>
+    <Generation date="2018-01-31 10:48:12.015393"/>
+    <Deployment checksum="582399177"/>
   </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,7 +23,7 @@
       </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..MW1793/1772 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..MW2265/2244 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"/>
@@ -78,57 +78,57 @@
 			</Acquisition-Register>
       </Acquisition-Block>
       <Setting-Block name="MyRWBlock" size="212" address="284" mem-size="472">
-        <Volatile-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="8">
+        <Setting-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="8">
 				<array2D dim1="2" dim2="2" format="int8"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="8" mem-size="4">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="12" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="20" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="28" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="44" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="60" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="76" mem-size="256">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="332" mem-size="32">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="364" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="372" mem-size="4">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="376" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="384" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="400" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="408" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="424" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="440" mem-size="32">
+			</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"/>
-			</Volatile-Register>
+			</Setting-Register>
       </Setting-Block>
       <Command-Block name="MyWOBlock" size="530" address="1228" mem-size="1180">
         <Setting-Register name="WO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="20">
@@ -183,6 +183,59 @@
 				<array dim="10" format="dt"/>
 			</Setting-Register>
       </Command-Block>
+      <Configuration-Block name="MyCBlock" size="212" address="3588" 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>
+        <Configuration-Register name="C_uint8" generateFesaValueItem="true" fesaFieldName="C_uint8_fesa" size="1" address="8" mem-size="4">
+                <array2D dim1="2" dim2="2" format="uint8"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_int16" generateFesaValueItem="true" fesaFieldName="C_int16_fesa" size="2" address="12" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int16"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_uint16" generateFesaValueItem="true" fesaFieldName="C_uint16_fesa" size="2" address="20" mem-size="8">
+                <array2D dim1="2" dim2="2" format="uint16"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_int32" generateFesaValueItem="true" fesaFieldName="C_int32_fesa" size="4" address="28" mem-size="16">
+                <array2D dim1="2" dim2="2" format="int32"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_uint32" generateFesaValueItem="true" fesaFieldName="C_uint32_fesa" size="4" address="44" mem-size="16">
+                <array2D dim1="2" dim2="2" format="uint32"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_float32" generateFesaValueItem="true" fesaFieldName="C_float32_fesa" size="4" address="60" mem-size="16">
+                <array2D dim1="2" dim2="2" format="float32"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_string" generateFesaValueItem="true" fesaFieldName="C_string_fesa" size="1" address="76" mem-size="256">
+                <stringArray2D dim1="2" dim2="2" string-length="64" format="string"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_date" generateFesaValueItem="true" fesaFieldName="C_date_fesa" size="8" address="332" mem-size="32">
+                <array2D dim1="2" dim2="2" format="date"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_char" generateFesaValueItem="true" fesaFieldName="C_char_fesa" size="1" address="364" mem-size="8">
+                <array2D dim1="2" dim2="2" format="char"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_byte" generateFesaValueItem="true" fesaFieldName="C_byte_fesa" size="1" address="372" mem-size="4">
+                <array2D dim1="2" dim2="2" format="byte"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_word" generateFesaValueItem="true" fesaFieldName="C_word_fesa" size="2" address="376" mem-size="8">
+                <array2D dim1="2" dim2="2" format="word"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_dword" generateFesaValueItem="true" fesaFieldName="C_dword_fesa" size="4" address="384" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dword"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_int" generateFesaValueItem="true" fesaFieldName="C_int_fesa" size="2" address="400" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_dint" generateFesaValueItem="true" fesaFieldName="C_dint_fesa" size="4" address="408" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dint"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_real" generateFesaValueItem="true" fesaFieldName="C_real_fesa" size="4" address="424" mem-size="16">
+                <array2D dim1="2" dim2="2" format="real"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_dt" generateFesaValueItem="true" fesaFieldName="C_dt_fesa" size="8" address="440" mem-size="32">
+                <array2D dim1="2" dim2="2" format="dt"/>
+            </Configuration-Register>
+      </Configuration-Block>
       <Instance label="testDevice1" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1"/>
       <Instance label="testDevice2" address="1" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1"/>
     </SILECS-Class>
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 9537336121eecb9417336884bf9d9625186156ad..1785329088b0837817b7134a213ed0b4d72cf676 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="2017-07-27 16:14:06.268832"/>
-    <Deployment checksum="308863231"/>
+    <Generation date="2018-01-31 10:48:11.709988"/>
+    <Deployment checksum="582399177"/>
   </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,7 +23,7 @@
       </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/3540 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/4484 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"/>
@@ -78,57 +78,57 @@
 			</Acquisition-Register>
       </Acquisition-Block>
       <Setting-Block name="MyRWBlock" size="212" address="118" mem-size="472">
-        <Volatile-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4">
+        <Setting-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4">
 				<array2D dim1="2" dim2="2" format="int8"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="4" mem-size="4">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="8" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="16" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="24" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="40" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="56" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="72" mem-size="264">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="336" mem-size="32">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="368" mem-size="4">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="372" mem-size="4">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="376" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="384" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="400" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="408" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="424" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="440" mem-size="32">
+			</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"/>
-			</Volatile-Register>
+			</Setting-Register>
       </Setting-Block>
       <Command-Block name="MyWOBlock" size="530" address="590" mem-size="1180">
         <Setting-Register name="WO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="10">
@@ -183,6 +183,59 @@
 				<array dim="10" format="dt"/>
 			</Setting-Register>
       </Command-Block>
+      <Configuration-Block name="MyCBlock" size="212" address="1770" 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>
+        <Configuration-Register name="C_uint8" generateFesaValueItem="true" fesaFieldName="C_uint8_fesa" size="1" address="4" mem-size="4">
+                <array2D dim1="2" dim2="2" format="uint8"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_int16" generateFesaValueItem="true" fesaFieldName="C_int16_fesa" size="2" address="8" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int16"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_uint16" generateFesaValueItem="true" fesaFieldName="C_uint16_fesa" size="2" address="16" mem-size="8">
+                <array2D dim1="2" dim2="2" format="uint16"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_int32" generateFesaValueItem="true" fesaFieldName="C_int32_fesa" size="4" address="24" mem-size="16">
+                <array2D dim1="2" dim2="2" format="int32"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_uint32" generateFesaValueItem="true" fesaFieldName="C_uint32_fesa" size="4" address="40" mem-size="16">
+                <array2D dim1="2" dim2="2" format="uint32"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_float32" generateFesaValueItem="true" fesaFieldName="C_float32_fesa" size="4" address="56" mem-size="16">
+                <array2D dim1="2" dim2="2" format="float32"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_string" generateFesaValueItem="true" fesaFieldName="C_string_fesa" size="1" address="72" mem-size="264">
+                <stringArray2D dim1="2" dim2="2" string-length="64" format="string"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_date" generateFesaValueItem="true" fesaFieldName="C_date_fesa" size="8" address="336" mem-size="32">
+                <array2D dim1="2" dim2="2" format="date"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_char" generateFesaValueItem="true" fesaFieldName="C_char_fesa" size="1" address="368" mem-size="4">
+                <array2D dim1="2" dim2="2" format="char"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_byte" generateFesaValueItem="true" fesaFieldName="C_byte_fesa" size="1" address="372" mem-size="4">
+                <array2D dim1="2" dim2="2" format="byte"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_word" generateFesaValueItem="true" fesaFieldName="C_word_fesa" size="2" address="376" mem-size="8">
+                <array2D dim1="2" dim2="2" format="word"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_dword" generateFesaValueItem="true" fesaFieldName="C_dword_fesa" size="4" address="384" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dword"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_int" generateFesaValueItem="true" fesaFieldName="C_int_fesa" size="2" address="400" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_dint" generateFesaValueItem="true" fesaFieldName="C_dint_fesa" size="4" address="408" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dint"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_real" generateFesaValueItem="true" fesaFieldName="C_real_fesa" size="4" address="424" mem-size="16">
+                <array2D dim1="2" dim2="2" format="real"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_dt" generateFesaValueItem="true" fesaFieldName="C_dt_fesa" size="8" address="440" mem-size="32">
+                <array2D dim1="2" dim2="2" format="dt"/>
+            </Configuration-Register>
+      </Configuration-Block>
       <Instance label="testDevice1" address="1" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1"/>
       <Instance label="testDevice2" address="2" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1"/>
     </SILECS-Class>
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 9202eb91813b47c501ab822144d6703e0093cd93..0dcb2f4f302c3f654c821c3c59521b4b96cd32c8 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="2017-07-27 16:14:06.306171"/>
-    <Deployment checksum="308863231"/>
+    <Generation date="2018-01-31 10:48:11.759024"/>
+    <Deployment checksum="582399177"/>
   </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,7 +23,7 @@
       </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..DB3/3540 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/4484 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"/>
@@ -78,57 +78,57 @@
 			</Acquisition-Register>
       </Acquisition-Block>
       <Setting-Block name="MyRWBlock" size="212" address="2" mem-size="472">
-        <Volatile-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4">
+        <Setting-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4">
 				<array2D dim1="2" dim2="2" format="int8"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="4" mem-size="4">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="8" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="16" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="24" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="40" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="56" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="72" mem-size="264">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="336" mem-size="32">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="368" mem-size="4">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="372" mem-size="4">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="376" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="384" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="400" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="408" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="424" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="440" mem-size="32">
+			</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"/>
-			</Volatile-Register>
+			</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">
@@ -183,6 +183,59 @@
 				<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">
+                <array2D dim1="2" dim2="2" format="int8"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_uint8" generateFesaValueItem="true" fesaFieldName="C_uint8_fesa" size="1" address="4" mem-size="4">
+                <array2D dim1="2" dim2="2" format="uint8"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_int16" generateFesaValueItem="true" fesaFieldName="C_int16_fesa" size="2" address="8" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int16"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_uint16" generateFesaValueItem="true" fesaFieldName="C_uint16_fesa" size="2" address="16" mem-size="8">
+                <array2D dim1="2" dim2="2" format="uint16"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_int32" generateFesaValueItem="true" fesaFieldName="C_int32_fesa" size="4" address="24" mem-size="16">
+                <array2D dim1="2" dim2="2" format="int32"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_uint32" generateFesaValueItem="true" fesaFieldName="C_uint32_fesa" size="4" address="40" mem-size="16">
+                <array2D dim1="2" dim2="2" format="uint32"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_float32" generateFesaValueItem="true" fesaFieldName="C_float32_fesa" size="4" address="56" mem-size="16">
+                <array2D dim1="2" dim2="2" format="float32"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_string" generateFesaValueItem="true" fesaFieldName="C_string_fesa" size="1" address="72" mem-size="264">
+                <stringArray2D dim1="2" dim2="2" string-length="64" format="string"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_date" generateFesaValueItem="true" fesaFieldName="C_date_fesa" size="8" address="336" mem-size="32">
+                <array2D dim1="2" dim2="2" format="date"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_char" generateFesaValueItem="true" fesaFieldName="C_char_fesa" size="1" address="368" mem-size="4">
+                <array2D dim1="2" dim2="2" format="char"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_byte" generateFesaValueItem="true" fesaFieldName="C_byte_fesa" size="1" address="372" mem-size="4">
+                <array2D dim1="2" dim2="2" format="byte"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_word" generateFesaValueItem="true" fesaFieldName="C_word_fesa" size="2" address="376" mem-size="8">
+                <array2D dim1="2" dim2="2" format="word"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_dword" generateFesaValueItem="true" fesaFieldName="C_dword_fesa" size="4" address="384" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dword"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_int" generateFesaValueItem="true" fesaFieldName="C_int_fesa" size="2" address="400" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_dint" generateFesaValueItem="true" fesaFieldName="C_dint_fesa" size="4" address="408" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dint"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_real" generateFesaValueItem="true" fesaFieldName="C_real_fesa" size="4" address="424" mem-size="16">
+                <array2D dim1="2" dim2="2" format="real"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_dt" generateFesaValueItem="true" fesaFieldName="C_dt_fesa" size="8" address="440" mem-size="32">
+                <array2D dim1="2" dim2="2" format="dt"/>
+            </Configuration-Register>
+      </Configuration-Block>
       <Instance label="testDevice1" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1"/>
       <Instance label="testDevice2" address="1" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1"/>
     </SILECS-Class>
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 b861f907cae5a433a52e63377a61a5eeb3504906..9520df2fdd83e3b4f229b688bbefbdfcb21347b9 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="2017-07-27 16:14:06.229930"/>
-    <Deployment checksum="308863231"/>
+    <Generation date="2018-01-31 10:48:11.677527"/>
+    <Deployment checksum="582399177"/>
   </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,7 +23,7 @@
       </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..DB3/3540 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/4484 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"/>
@@ -78,57 +78,57 @@
 			</Acquisition-Register>
       </Acquisition-Block>
       <Setting-Block name="MyRWBlock" size="212" address="2" mem-size="472">
-        <Volatile-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4">
+        <Setting-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4">
 				<array2D dim1="2" dim2="2" format="int8"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="4" mem-size="4">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="8" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="16" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="24" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="40" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="56" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="72" mem-size="264">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="336" mem-size="32">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="368" mem-size="4">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="372" mem-size="4">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="376" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="384" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="400" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="408" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="424" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="440" mem-size="32">
+			</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"/>
-			</Volatile-Register>
+			</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">
@@ -183,6 +183,59 @@
 				<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">
+                <array2D dim1="2" dim2="2" format="int8"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_uint8" generateFesaValueItem="true" fesaFieldName="C_uint8_fesa" size="1" address="4" mem-size="4">
+                <array2D dim1="2" dim2="2" format="uint8"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_int16" generateFesaValueItem="true" fesaFieldName="C_int16_fesa" size="2" address="8" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int16"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_uint16" generateFesaValueItem="true" fesaFieldName="C_uint16_fesa" size="2" address="16" mem-size="8">
+                <array2D dim1="2" dim2="2" format="uint16"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_int32" generateFesaValueItem="true" fesaFieldName="C_int32_fesa" size="4" address="24" mem-size="16">
+                <array2D dim1="2" dim2="2" format="int32"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_uint32" generateFesaValueItem="true" fesaFieldName="C_uint32_fesa" size="4" address="40" mem-size="16">
+                <array2D dim1="2" dim2="2" format="uint32"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_float32" generateFesaValueItem="true" fesaFieldName="C_float32_fesa" size="4" address="56" mem-size="16">
+                <array2D dim1="2" dim2="2" format="float32"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_string" generateFesaValueItem="true" fesaFieldName="C_string_fesa" size="1" address="72" mem-size="264">
+                <stringArray2D dim1="2" dim2="2" string-length="64" format="string"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_date" generateFesaValueItem="true" fesaFieldName="C_date_fesa" size="8" address="336" mem-size="32">
+                <array2D dim1="2" dim2="2" format="date"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_char" generateFesaValueItem="true" fesaFieldName="C_char_fesa" size="1" address="368" mem-size="4">
+                <array2D dim1="2" dim2="2" format="char"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_byte" generateFesaValueItem="true" fesaFieldName="C_byte_fesa" size="1" address="372" mem-size="4">
+                <array2D dim1="2" dim2="2" format="byte"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_word" generateFesaValueItem="true" fesaFieldName="C_word_fesa" size="2" address="376" mem-size="8">
+                <array2D dim1="2" dim2="2" format="word"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_dword" generateFesaValueItem="true" fesaFieldName="C_dword_fesa" size="4" address="384" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dword"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_int" generateFesaValueItem="true" fesaFieldName="C_int_fesa" size="2" address="400" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_dint" generateFesaValueItem="true" fesaFieldName="C_dint_fesa" size="4" address="408" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dint"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_real" generateFesaValueItem="true" fesaFieldName="C_real_fesa" size="4" address="424" mem-size="16">
+                <array2D dim1="2" dim2="2" format="real"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_dt" generateFesaValueItem="true" fesaFieldName="C_dt_fesa" size="8" address="440" mem-size="32">
+                <array2D dim1="2" dim2="2" format="dt"/>
+            </Configuration-Register>
+      </Configuration-Block>
       <Instance label="testDevice1" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1"/>
       <Instance label="testDevice2" address="1" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1"/>
     </SILECS-Class>
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 61c75903977e855dc18dda006c3e1f2677b70bc3..6dadcb0b895968ba79966827aff88fd8799e3520 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="2017-07-27 16:14:06.192160"/>
-    <Deployment checksum="308863231"/>
+    <Generation date="2018-01-31 10:48:11.639987"/>
+    <Deployment checksum="582399177"/>
   </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,7 +23,7 @@
       </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/3540 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/4484 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"/>
@@ -78,57 +78,57 @@
 			</Acquisition-Register>
       </Acquisition-Block>
       <Setting-Block name="MyRWBlock" size="212" address="118" mem-size="472">
-        <Volatile-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4">
+        <Setting-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4">
 				<array2D dim1="2" dim2="2" format="int8"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="4" mem-size="4">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="8" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="16" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="24" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="40" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="56" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="72" mem-size="264">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="336" mem-size="32">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="368" mem-size="4">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="372" mem-size="4">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="376" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="384" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="400" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="408" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="424" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="440" mem-size="32">
+			</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"/>
-			</Volatile-Register>
+			</Setting-Register>
       </Setting-Block>
       <Command-Block name="MyWOBlock" size="530" address="590" mem-size="1180">
         <Setting-Register name="WO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="10">
@@ -183,6 +183,59 @@
 				<array dim="10" format="dt"/>
 			</Setting-Register>
       </Command-Block>
+      <Configuration-Block name="MyCBlock" size="212" address="1770" 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>
+        <Configuration-Register name="C_uint8" generateFesaValueItem="true" fesaFieldName="C_uint8_fesa" size="1" address="4" mem-size="4">
+                <array2D dim1="2" dim2="2" format="uint8"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_int16" generateFesaValueItem="true" fesaFieldName="C_int16_fesa" size="2" address="8" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int16"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_uint16" generateFesaValueItem="true" fesaFieldName="C_uint16_fesa" size="2" address="16" mem-size="8">
+                <array2D dim1="2" dim2="2" format="uint16"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_int32" generateFesaValueItem="true" fesaFieldName="C_int32_fesa" size="4" address="24" mem-size="16">
+                <array2D dim1="2" dim2="2" format="int32"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_uint32" generateFesaValueItem="true" fesaFieldName="C_uint32_fesa" size="4" address="40" mem-size="16">
+                <array2D dim1="2" dim2="2" format="uint32"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_float32" generateFesaValueItem="true" fesaFieldName="C_float32_fesa" size="4" address="56" mem-size="16">
+                <array2D dim1="2" dim2="2" format="float32"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_string" generateFesaValueItem="true" fesaFieldName="C_string_fesa" size="1" address="72" mem-size="264">
+                <stringArray2D dim1="2" dim2="2" string-length="64" format="string"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_date" generateFesaValueItem="true" fesaFieldName="C_date_fesa" size="8" address="336" mem-size="32">
+                <array2D dim1="2" dim2="2" format="date"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_char" generateFesaValueItem="true" fesaFieldName="C_char_fesa" size="1" address="368" mem-size="4">
+                <array2D dim1="2" dim2="2" format="char"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_byte" generateFesaValueItem="true" fesaFieldName="C_byte_fesa" size="1" address="372" mem-size="4">
+                <array2D dim1="2" dim2="2" format="byte"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_word" generateFesaValueItem="true" fesaFieldName="C_word_fesa" size="2" address="376" mem-size="8">
+                <array2D dim1="2" dim2="2" format="word"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_dword" generateFesaValueItem="true" fesaFieldName="C_dword_fesa" size="4" address="384" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dword"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_int" generateFesaValueItem="true" fesaFieldName="C_int_fesa" size="2" address="400" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_dint" generateFesaValueItem="true" fesaFieldName="C_dint_fesa" size="4" address="408" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dint"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_real" generateFesaValueItem="true" fesaFieldName="C_real_fesa" size="4" address="424" mem-size="16">
+                <array2D dim1="2" dim2="2" format="real"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_dt" generateFesaValueItem="true" fesaFieldName="C_dt_fesa" size="8" address="440" mem-size="32">
+                <array2D dim1="2" dim2="2" format="dt"/>
+            </Configuration-Register>
+      </Configuration-Block>
       <Instance label="testDevice1" address="1" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1"/>
       <Instance label="testDevice2" address="2" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1"/>
     </SILECS-Class>
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 abb3a74ecfcb34fd9d3c8d52e5fb9f476002e8c8..cd3ba1ac19342a190b83287ce5dc25f7a2cc2ff8 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="2017-07-28 12:09:58.078995"/>
-    <Deployment checksum="308863231"/>
+    <Generation date="2018-01-31 10:48:11.842372"/>
+    <Deployment checksum="582399177"/>
   </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,7 +23,7 @@
       </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..DB3/3540 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/4484 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"/>
@@ -78,57 +78,57 @@
 			</Acquisition-Register>
       </Acquisition-Block>
       <Setting-Block name="MyRWBlock" size="212" address="2" mem-size="472">
-        <Volatile-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4">
+        <Setting-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4">
 				<array2D dim1="2" dim2="2" format="int8"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="4" mem-size="4">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="8" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="16" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="24" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="40" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="56" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="72" mem-size="264">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="336" mem-size="32">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="368" mem-size="4">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="372" mem-size="4">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="376" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="384" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="400" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="408" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="424" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="440" mem-size="32">
+			</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"/>
-			</Volatile-Register>
+			</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">
@@ -183,6 +183,59 @@
 				<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">
+                <array2D dim1="2" dim2="2" format="int8"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_uint8" generateFesaValueItem="true" fesaFieldName="C_uint8_fesa" size="1" address="4" mem-size="4">
+                <array2D dim1="2" dim2="2" format="uint8"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_int16" generateFesaValueItem="true" fesaFieldName="C_int16_fesa" size="2" address="8" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int16"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_uint16" generateFesaValueItem="true" fesaFieldName="C_uint16_fesa" size="2" address="16" mem-size="8">
+                <array2D dim1="2" dim2="2" format="uint16"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_int32" generateFesaValueItem="true" fesaFieldName="C_int32_fesa" size="4" address="24" mem-size="16">
+                <array2D dim1="2" dim2="2" format="int32"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_uint32" generateFesaValueItem="true" fesaFieldName="C_uint32_fesa" size="4" address="40" mem-size="16">
+                <array2D dim1="2" dim2="2" format="uint32"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_float32" generateFesaValueItem="true" fesaFieldName="C_float32_fesa" size="4" address="56" mem-size="16">
+                <array2D dim1="2" dim2="2" format="float32"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_string" generateFesaValueItem="true" fesaFieldName="C_string_fesa" size="1" address="72" mem-size="264">
+                <stringArray2D dim1="2" dim2="2" string-length="64" format="string"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_date" generateFesaValueItem="true" fesaFieldName="C_date_fesa" size="8" address="336" mem-size="32">
+                <array2D dim1="2" dim2="2" format="date"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_char" generateFesaValueItem="true" fesaFieldName="C_char_fesa" size="1" address="368" mem-size="4">
+                <array2D dim1="2" dim2="2" format="char"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_byte" generateFesaValueItem="true" fesaFieldName="C_byte_fesa" size="1" address="372" mem-size="4">
+                <array2D dim1="2" dim2="2" format="byte"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_word" generateFesaValueItem="true" fesaFieldName="C_word_fesa" size="2" address="376" mem-size="8">
+                <array2D dim1="2" dim2="2" format="word"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_dword" generateFesaValueItem="true" fesaFieldName="C_dword_fesa" size="4" address="384" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dword"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_int" generateFesaValueItem="true" fesaFieldName="C_int_fesa" size="2" address="400" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_dint" generateFesaValueItem="true" fesaFieldName="C_dint_fesa" size="4" address="408" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dint"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_real" generateFesaValueItem="true" fesaFieldName="C_real_fesa" size="4" address="424" mem-size="16">
+                <array2D dim1="2" dim2="2" format="real"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_dt" generateFesaValueItem="true" fesaFieldName="C_dt_fesa" size="8" address="440" mem-size="32">
+                <array2D dim1="2" dim2="2" format="dt"/>
+            </Configuration-Register>
+      </Configuration-Block>
       <Instance label="testDevice1" address="0" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1"/>
       <Instance label="testDevice2" address="1" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1"/>
     </SILECS-Class>
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 de610430ebacc1a6630146f104dafaeab1c258c0..ec48ebe0b3eefb4e1f97121474eaa6283d28f37a 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="2017-07-28 12:09:58.040528"/>
-    <Deployment checksum="308863231"/>
+    <Generation date="2018-01-31 10:48:11.796522"/>
+    <Deployment checksum="582399177"/>
   </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,7 +23,7 @@
       </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/3540 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/4484 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"/>
@@ -78,57 +78,57 @@
 			</Acquisition-Register>
       </Acquisition-Block>
       <Setting-Block name="MyRWBlock" size="212" address="118" mem-size="472">
-        <Volatile-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4">
+        <Setting-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4">
 				<array2D dim1="2" dim2="2" format="int8"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="4" mem-size="4">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="8" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="16" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="24" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="40" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="56" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="72" mem-size="264">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="336" mem-size="32">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="368" mem-size="4">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="372" mem-size="4">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="376" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="384" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="400" mem-size="8">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="408" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="424" mem-size="16">
+			</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"/>
-			</Volatile-Register>
-        <Volatile-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="440" mem-size="32">
+			</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"/>
-			</Volatile-Register>
+			</Setting-Register>
       </Setting-Block>
       <Command-Block name="MyWOBlock" size="530" address="590" mem-size="1180">
         <Setting-Register name="WO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="10">
@@ -183,6 +183,59 @@
 				<array dim="10" format="dt"/>
 			</Setting-Register>
       </Command-Block>
+      <Configuration-Block name="MyCBlock" size="212" address="1770" 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>
+        <Configuration-Register name="C_uint8" generateFesaValueItem="true" fesaFieldName="C_uint8_fesa" size="1" address="4" mem-size="4">
+                <array2D dim1="2" dim2="2" format="uint8"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_int16" generateFesaValueItem="true" fesaFieldName="C_int16_fesa" size="2" address="8" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int16"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_uint16" generateFesaValueItem="true" fesaFieldName="C_uint16_fesa" size="2" address="16" mem-size="8">
+                <array2D dim1="2" dim2="2" format="uint16"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_int32" generateFesaValueItem="true" fesaFieldName="C_int32_fesa" size="4" address="24" mem-size="16">
+                <array2D dim1="2" dim2="2" format="int32"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_uint32" generateFesaValueItem="true" fesaFieldName="C_uint32_fesa" size="4" address="40" mem-size="16">
+                <array2D dim1="2" dim2="2" format="uint32"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_float32" generateFesaValueItem="true" fesaFieldName="C_float32_fesa" size="4" address="56" mem-size="16">
+                <array2D dim1="2" dim2="2" format="float32"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_string" generateFesaValueItem="true" fesaFieldName="C_string_fesa" size="1" address="72" mem-size="264">
+                <stringArray2D dim1="2" dim2="2" string-length="64" format="string"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_date" generateFesaValueItem="true" fesaFieldName="C_date_fesa" size="8" address="336" mem-size="32">
+                <array2D dim1="2" dim2="2" format="date"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_char" generateFesaValueItem="true" fesaFieldName="C_char_fesa" size="1" address="368" mem-size="4">
+                <array2D dim1="2" dim2="2" format="char"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_byte" generateFesaValueItem="true" fesaFieldName="C_byte_fesa" size="1" address="372" mem-size="4">
+                <array2D dim1="2" dim2="2" format="byte"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_word" generateFesaValueItem="true" fesaFieldName="C_word_fesa" size="2" address="376" mem-size="8">
+                <array2D dim1="2" dim2="2" format="word"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_dword" generateFesaValueItem="true" fesaFieldName="C_dword_fesa" size="4" address="384" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dword"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_int" generateFesaValueItem="true" fesaFieldName="C_int_fesa" size="2" address="400" mem-size="8">
+                <array2D dim1="2" dim2="2" format="int"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_dint" generateFesaValueItem="true" fesaFieldName="C_dint_fesa" size="4" address="408" mem-size="16">
+                <array2D dim1="2" dim2="2" format="dint"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_real" generateFesaValueItem="true" fesaFieldName="C_real_fesa" size="4" address="424" mem-size="16">
+                <array2D dim1="2" dim2="2" format="real"/>
+            </Configuration-Register>
+        <Configuration-Register name="C_dt" generateFesaValueItem="true" fesaFieldName="C_dt_fesa" size="8" address="440" mem-size="32">
+                <array2D dim1="2" dim2="2" format="dt"/>
+            </Configuration-Register>
+      </Configuration-Block>
       <Instance label="testDevice1" address="1" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1"/>
       <Instance label="testDevice2" address="2" DI-address="-1" DO-address="-1" AI-address="-1" AO-address="-1"/>
     </SILECS-Class>
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 68210c9c6172ef0e3928f3b621189cfde9ddef5e..bfdd8f3041e888e9347236421d595193ac2a1f55 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:= 1037751963;
+    _checksum_a781_SilecsHeader AT %MW9: DWORD:= 2903751780;
 
     (*SilecsHeader/SilecsHeader/hdrBlk *)
     _user_a781_SilecsHeader AT %MW11: STRING(16):= 'schwinn';
 
     (*SilecsHeader/SilecsHeader/hdrBlk *)
-    _date_a781_SilecsHeader AT %MW20: DT:= DT#2017-6-8-16:38:3;
+    _date_a781_SilecsHeader AT %MW20: DT:= DT#2018-1-31-10:49:39;
 
     (*AllTypes/testDevice1/MyROBlock *)
     RO_int8_a583_testDevice1 AT %MW24: SINT;
@@ -325,4 +325,106 @@ VAR_GLOBAL
     (*AllTypes/testDevice2/MyWOBlock *)
     WO_dt_a583_testDevice2 AT %MW1744: ARRAY [0..9] OF DT;
 
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_int8_a583_testDevice1 AT %MW1784: ARRAY [0..1, 0..1] OF SINT;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_uint8_a583_testDevice1 AT %MW1786: ARRAY [0..1, 0..1] OF BYTE;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_int16_a583_testDevice1 AT %MW1788: ARRAY [0..1, 0..1] OF INT;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_uint16_a583_testDevice1 AT %MW1792: ARRAY [0..1, 0..1] OF WORD;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_int32_a583_testDevice1 AT %MW1796: ARRAY [0..1, 0..1] OF DINT;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_uint32_a583_testDevice1 AT %MW1804: ARRAY [0..1, 0..1] OF DWORD;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_float32_a583_testDevice1 AT %MW1812: ARRAY [0..1, 0..1] OF REAL;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_string_a583_testDevice1 AT %MW1820: ARRAY [0..1, 0..1] OF STRING(64);
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_date_a583_testDevice1 AT %MW1950: ARRAY [0..1, 0..1] OF DT;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_char_a583_testDevice1 AT %MW1966: ARRAY [0..1, 0..1] OF SINT;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_byte_a583_testDevice1 AT %MW1968: ARRAY [0..1, 0..1] OF BYTE;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_word_a583_testDevice1 AT %MW1970: ARRAY [0..1, 0..1] OF WORD;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_dword_a583_testDevice1 AT %MW1974: ARRAY [0..1, 0..1] OF DWORD;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_int_a583_testDevice1 AT %MW1982: ARRAY [0..1, 0..1] OF INT;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_dint_a583_testDevice1 AT %MW1986: ARRAY [0..1, 0..1] OF DINT;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_real_a583_testDevice1 AT %MW1994: ARRAY [0..1, 0..1] OF REAL;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_dt_a583_testDevice1 AT %MW2002: ARRAY [0..1, 0..1] OF DT;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_int8_a583_testDevice2 AT %MW2018: ARRAY [0..1, 0..1] OF SINT;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_uint8_a583_testDevice2 AT %MW2020: ARRAY [0..1, 0..1] OF BYTE;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_int16_a583_testDevice2 AT %MW2022: ARRAY [0..1, 0..1] OF INT;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_uint16_a583_testDevice2 AT %MW2026: ARRAY [0..1, 0..1] OF WORD;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_int32_a583_testDevice2 AT %MW2030: ARRAY [0..1, 0..1] OF DINT;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_uint32_a583_testDevice2 AT %MW2038: ARRAY [0..1, 0..1] OF DWORD;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_float32_a583_testDevice2 AT %MW2046: ARRAY [0..1, 0..1] OF REAL;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_string_a583_testDevice2 AT %MW2054: ARRAY [0..1, 0..1] OF STRING(64);
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_date_a583_testDevice2 AT %MW2184: ARRAY [0..1, 0..1] OF DT;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_char_a583_testDevice2 AT %MW2200: ARRAY [0..1, 0..1] OF SINT;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_byte_a583_testDevice2 AT %MW2202: ARRAY [0..1, 0..1] OF BYTE;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_word_a583_testDevice2 AT %MW2204: ARRAY [0..1, 0..1] OF WORD;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_dword_a583_testDevice2 AT %MW2208: ARRAY [0..1, 0..1] OF DWORD;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_int_a583_testDevice2 AT %MW2216: ARRAY [0..1, 0..1] OF INT;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_dint_a583_testDevice2 AT %MW2220: ARRAY [0..1, 0..1] OF DINT;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_real_a583_testDevice2 AT %MW2228: ARRAY [0..1, 0..1] OF REAL;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_dt_a583_testDevice2 AT %MW2236: 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 7b1e2a3ef9e1df24cb96bbf1fbd3b9dcdcacb328..a501100e4e6c813ec15d2f293c5c004541c5d599 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:= 2754857673;
+    _checksum_a781_SilecsHeader AT %MW20: DWORD:= 2305663869;
 
     (*SilecsHeader/SilecsHeader/hdrBlk *)
     _user_a781_SilecsHeader AT %MW24: STRING(16):= 'schwinn';
 
     (*SilecsHeader/SilecsHeader/hdrBlk *)
-    _date_a781_SilecsHeader AT %MW44: DT:= DT#2017-7-28-12:15:6;
+    _date_a781_SilecsHeader AT %MW44: DT:= DT#2018-1-31-10:49:39;
 
     (*AllTypes/testDevice1/MyROBlock *)
     RO_int8_a583_testDevice1 AT %MW52: SINT;
@@ -325,4 +325,106 @@ VAR_GLOBAL
     (*AllTypes/testDevice2/MyWOBlock *)
     WO_dt_a583_testDevice2 AT %MW3508: ARRAY [0..9] OF DT;
 
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_int8_a583_testDevice1 AT %MW3588: ARRAY [0..1, 0..1] OF SINT;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_uint8_a583_testDevice1 AT %MW3592: ARRAY [0..1, 0..1] OF BYTE;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_int16_a583_testDevice1 AT %MW3596: ARRAY [0..1, 0..1] OF INT;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_uint16_a583_testDevice1 AT %MW3604: ARRAY [0..1, 0..1] OF WORD;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_int32_a583_testDevice1 AT %MW3612: ARRAY [0..1, 0..1] OF DINT;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_uint32_a583_testDevice1 AT %MW3628: ARRAY [0..1, 0..1] OF DWORD;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_float32_a583_testDevice1 AT %MW3644: ARRAY [0..1, 0..1] OF REAL;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_string_a583_testDevice1 AT %MW3660: ARRAY [0..1, 0..1] OF STRING(64);
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_date_a583_testDevice1 AT %MW3920: ARRAY [0..1, 0..1] OF DT;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_char_a583_testDevice1 AT %MW3952: ARRAY [0..1, 0..1] OF SINT;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_byte_a583_testDevice1 AT %MW3956: ARRAY [0..1, 0..1] OF BYTE;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_word_a583_testDevice1 AT %MW3960: ARRAY [0..1, 0..1] OF WORD;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_dword_a583_testDevice1 AT %MW3968: ARRAY [0..1, 0..1] OF DWORD;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_int_a583_testDevice1 AT %MW3984: ARRAY [0..1, 0..1] OF INT;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_dint_a583_testDevice1 AT %MW3992: ARRAY [0..1, 0..1] OF DINT;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_real_a583_testDevice1 AT %MW4008: ARRAY [0..1, 0..1] OF REAL;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_dt_a583_testDevice1 AT %MW4024: ARRAY [0..1, 0..1] OF DT;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_int8_a583_testDevice2 AT %MW4056: ARRAY [0..1, 0..1] OF SINT;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_uint8_a583_testDevice2 AT %MW4060: ARRAY [0..1, 0..1] OF BYTE;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_int16_a583_testDevice2 AT %MW4064: ARRAY [0..1, 0..1] OF INT;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_uint16_a583_testDevice2 AT %MW4072: ARRAY [0..1, 0..1] OF WORD;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_int32_a583_testDevice2 AT %MW4080: ARRAY [0..1, 0..1] OF DINT;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_uint32_a583_testDevice2 AT %MW4096: ARRAY [0..1, 0..1] OF DWORD;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_float32_a583_testDevice2 AT %MW4112: ARRAY [0..1, 0..1] OF REAL;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_string_a583_testDevice2 AT %MW4128: ARRAY [0..1, 0..1] OF STRING(64);
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_date_a583_testDevice2 AT %MW4388: ARRAY [0..1, 0..1] OF DT;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_char_a583_testDevice2 AT %MW4420: ARRAY [0..1, 0..1] OF SINT;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_byte_a583_testDevice2 AT %MW4424: ARRAY [0..1, 0..1] OF BYTE;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_word_a583_testDevice2 AT %MW4428: ARRAY [0..1, 0..1] OF WORD;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_dword_a583_testDevice2 AT %MW4436: ARRAY [0..1, 0..1] OF DWORD;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_int_a583_testDevice2 AT %MW4452: ARRAY [0..1, 0..1] OF INT;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_dint_a583_testDevice2 AT %MW4460: ARRAY [0..1, 0..1] OF DINT;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_real_a583_testDevice2 AT %MW4476: ARRAY [0..1, 0..1] OF REAL;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_dt_a583_testDevice2 AT %MW4492: 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 7b1e2a3ef9e1df24cb96bbf1fbd3b9dcdcacb328..a501100e4e6c813ec15d2f293c5c004541c5d599 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:= 2754857673;
+    _checksum_a781_SilecsHeader AT %MW20: DWORD:= 2305663869;
 
     (*SilecsHeader/SilecsHeader/hdrBlk *)
     _user_a781_SilecsHeader AT %MW24: STRING(16):= 'schwinn';
 
     (*SilecsHeader/SilecsHeader/hdrBlk *)
-    _date_a781_SilecsHeader AT %MW44: DT:= DT#2017-7-28-12:15:6;
+    _date_a781_SilecsHeader AT %MW44: DT:= DT#2018-1-31-10:49:39;
 
     (*AllTypes/testDevice1/MyROBlock *)
     RO_int8_a583_testDevice1 AT %MW52: SINT;
@@ -325,4 +325,106 @@ VAR_GLOBAL
     (*AllTypes/testDevice2/MyWOBlock *)
     WO_dt_a583_testDevice2 AT %MW3508: ARRAY [0..9] OF DT;
 
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_int8_a583_testDevice1 AT %MW3588: ARRAY [0..1, 0..1] OF SINT;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_uint8_a583_testDevice1 AT %MW3592: ARRAY [0..1, 0..1] OF BYTE;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_int16_a583_testDevice1 AT %MW3596: ARRAY [0..1, 0..1] OF INT;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_uint16_a583_testDevice1 AT %MW3604: ARRAY [0..1, 0..1] OF WORD;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_int32_a583_testDevice1 AT %MW3612: ARRAY [0..1, 0..1] OF DINT;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_uint32_a583_testDevice1 AT %MW3628: ARRAY [0..1, 0..1] OF DWORD;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_float32_a583_testDevice1 AT %MW3644: ARRAY [0..1, 0..1] OF REAL;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_string_a583_testDevice1 AT %MW3660: ARRAY [0..1, 0..1] OF STRING(64);
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_date_a583_testDevice1 AT %MW3920: ARRAY [0..1, 0..1] OF DT;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_char_a583_testDevice1 AT %MW3952: ARRAY [0..1, 0..1] OF SINT;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_byte_a583_testDevice1 AT %MW3956: ARRAY [0..1, 0..1] OF BYTE;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_word_a583_testDevice1 AT %MW3960: ARRAY [0..1, 0..1] OF WORD;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_dword_a583_testDevice1 AT %MW3968: ARRAY [0..1, 0..1] OF DWORD;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_int_a583_testDevice1 AT %MW3984: ARRAY [0..1, 0..1] OF INT;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_dint_a583_testDevice1 AT %MW3992: ARRAY [0..1, 0..1] OF DINT;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_real_a583_testDevice1 AT %MW4008: ARRAY [0..1, 0..1] OF REAL;
+
+    (*AllTypes/testDevice1/MyCBlock *)
+    C_dt_a583_testDevice1 AT %MW4024: ARRAY [0..1, 0..1] OF DT;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_int8_a583_testDevice2 AT %MW4056: ARRAY [0..1, 0..1] OF SINT;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_uint8_a583_testDevice2 AT %MW4060: ARRAY [0..1, 0..1] OF BYTE;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_int16_a583_testDevice2 AT %MW4064: ARRAY [0..1, 0..1] OF INT;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_uint16_a583_testDevice2 AT %MW4072: ARRAY [0..1, 0..1] OF WORD;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_int32_a583_testDevice2 AT %MW4080: ARRAY [0..1, 0..1] OF DINT;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_uint32_a583_testDevice2 AT %MW4096: ARRAY [0..1, 0..1] OF DWORD;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_float32_a583_testDevice2 AT %MW4112: ARRAY [0..1, 0..1] OF REAL;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_string_a583_testDevice2 AT %MW4128: ARRAY [0..1, 0..1] OF STRING(64);
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_date_a583_testDevice2 AT %MW4388: ARRAY [0..1, 0..1] OF DT;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_char_a583_testDevice2 AT %MW4420: ARRAY [0..1, 0..1] OF SINT;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_byte_a583_testDevice2 AT %MW4424: ARRAY [0..1, 0..1] OF BYTE;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_word_a583_testDevice2 AT %MW4428: ARRAY [0..1, 0..1] OF WORD;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_dword_a583_testDevice2 AT %MW4436: ARRAY [0..1, 0..1] OF DWORD;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_int_a583_testDevice2 AT %MW4452: ARRAY [0..1, 0..1] OF INT;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_dint_a583_testDevice2 AT %MW4460: ARRAY [0..1, 0..1] OF DINT;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_real_a583_testDevice2 AT %MW4476: ARRAY [0..1, 0..1] OF REAL;
+
+    (*AllTypes/testDevice2/MyCBlock *)
+    C_dt_a583_testDevice2 AT %MW4492: 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 4cf18736d2bb8c2c9ffe6fb5aaf0cef4447d2e3e..11f0be4e718fad06c3ba19db6d7a05f5e7a771e1 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
@@ -139,6 +139,28 @@ typedef struct
 
 } _AllTypes_MyWOBlock;
 
+typedef struct 
+{
+    int16_t C_int8[2][2];
+    uint16_t C_uint8[2][2];
+    int16_t C_int16[2][2];
+    uint16_t C_uint16[2][2];
+    int32_t C_int32[2][2];
+    uint32_t C_uint32[2][2];
+    float C_float32[2][2];
+    uint8_t C_string[2][2][64];
+    dt C_date[2][2];
+    int16_t C_char[2][2];
+    uint16_t C_byte[2][2];
+    uint16_t C_word[2][2];
+    uint32_t C_dword[2][2];
+    int16_t C_int[2][2];
+    int32_t C_dint[2][2];
+    float C_real[2][2];
+    dt C_dt[2][2];
+
+} _AllTypes_MyCBlock;
+
 /*---------------------------------------------------------------------
  * MEMORY ALLOCATION
  * PROTOCOL: BLOCK_MODE
@@ -166,6 +188,11 @@ typedef struct {
         _AllTypes_MyWOBlock testDevice2;
     } AllTypes_MyWOBlock;
 
+    struct {
+        _AllTypes_MyCBlock testDevice1;
+        _AllTypes_MyCBlock testDevice2;
+    } AllTypes_MyCBlock;
+
 } _SILECS_DATA_SEGMENT;
 
 #define SILECS_DATA_SEGMENT_MODBUS_SIZE (sizeof(_SILECS_DATA_SEGMENT)/2)
@@ -183,20 +210,20 @@ 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  = 308863231;
+    silecsData.data.SilecsHeader_hdrBlk.device[0]._checksum  = 582399177;
     
     /* Silecs user initialization */
     strcpy((unsigned char *)silecsData.data.SilecsHeader_hdrBlk.device[0]._user, "schwinn");
     
     /* Silecs date initialization */
-    SILECS_set_dt(3,3,38,16,8,6,2017,&silecsData.data.SilecsHeader_hdrBlk.device[0]._date);
+    SILECS_set_dt(2,39,49,10,31,1,2018,&silecsData.data.SilecsHeader_hdrBlk.device[0]._date);
 }
 
 /*
  * Automatically generated Addressing example
  *
- * This example shows how to address the register WO_dt of block MyWOBlock
+ * This example shows how to address the register C_dt of block MyCBlock
  * of device testDevice2 of the class AllTypes
  *
- *  silecsData.AllTypes_MyWOBlock.testDevice2.WO_dt = ....;
+ *  silecsData.AllTypes_MyCBlock.testDevice2.C_dt = ....;
  */
\ No newline at end of file
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 d0bf246979c9c32afd013e5e43a9cf7ee156e9f7..6660421af5e56aaf0fc19af8438dd3255bd9df5c 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
@@ -139,6 +139,28 @@ typedef struct
 
 } _AllTypes_MyWOBlock;
 
+typedef struct 
+{
+    int16_t C_int8[2][2];
+    uint16_t C_uint8[2][2];
+    int16_t C_int16[2][2];
+    uint16_t C_uint16[2][2];
+    int32_t C_int32[2][2];
+    uint32_t C_uint32[2][2];
+    float C_float32[2][2];
+    uint8_t C_string[2][2][64];
+    dt C_date[2][2];
+    int16_t C_char[2][2];
+    uint16_t C_byte[2][2];
+    uint16_t C_word[2][2];
+    uint32_t C_dword[2][2];
+    int16_t C_int[2][2];
+    int32_t C_dint[2][2];
+    float C_real[2][2];
+    dt C_dt[2][2];
+
+} _AllTypes_MyCBlock;
+
 /*---------------------------------------------------------------------
  * MEMORY ALLOCATION
  * PROTOCOL: DEVICE_MODE
@@ -156,6 +178,7 @@ typedef struct {
         _AllTypes_MyROBlock MyROBlock;
         _AllTypes_MyRWBlock MyRWBlock;
         _AllTypes_MyWOBlock MyWOBlock;
+        _AllTypes_MyCBlock MyCBlock;
 
     } AllTypes_testDevice1, AllTypes_testDevice2;
 
@@ -176,20 +199,20 @@ 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  = 308863231;
+    silecsData.data.SilecsHeader_device[0].hdrBlk._checksum  = 582399177;
     
     /* Silecs user initialization */
     strcpy((unsigned char *)silecsData.data.SilecsHeader_device[0].hdrBlk._user, "schwinn");
     
     /* Silecs date initialization */
-    SILECS_set_dt(0,27,37,16,24,7,2017,&silecsData.data.SilecsHeader_device[0].hdrBlk._date);
+    SILECS_set_dt(2,39,49,10,31,1,2018,&silecsData.data.SilecsHeader_device[0].hdrBlk._date);
 }
 
 /*
  * Automatically generated Addressing example
  *
- * This example shows how to address the register WO_dt of block MyWOBlock
+ * This example shows how to address the register C_dt of block MyCBlock
  * of device AllTypes_testDevice2 of the class AllTypes
  * 
- *  silecsData.AllTypes_AllTypes_testDevice2.MyWOBlock.WO_dt = ....;
+ *  silecsData.AllTypes_AllTypes_testDevice2.MyCBlock.C_dt = ....;
  */
\ No newline at end of file
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 354b71b039da276fb50252fe7a4abfdbdeb1c86f..d90bebd5a816e852c8638cfd6998505e049c6370 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="308863231"/>
+      <variableInit value="582399177"/>
       <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#2017-6-8-16:38:3"/>
+      <variableInit value="DT#2018-1-31-10:49:39"/>
       <comment>SilecsHeader/SilecsHeader/hdrBlk</comment>
     </variables>
     <variables name="RO_int8_a583_testDevice1" typeName="WORD" topologicalAddress="%MW22">
@@ -322,5 +322,107 @@
     <variables name="WO_dt_a583_testDevice2" typeName="ARRAY[0..9] OF DT" topologicalAddress="%MW1762">
       <comment>AllTypes/testDevice2/MyWOBlock</comment>
     </variables>
+    <variables name="C_int8_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW1802">
+      <comment>AllTypes/testDevice1/MyCBlock</comment>
+    </variables>
+    <variables name="C_uint8_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF BYTE" topologicalAddress="%MW1806">
+      <comment>AllTypes/testDevice1/MyCBlock</comment>
+    </variables>
+    <variables name="C_int16_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF INT" topologicalAddress="%MW1808">
+      <comment>AllTypes/testDevice1/MyCBlock</comment>
+    </variables>
+    <variables name="C_uint16_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW1812">
+      <comment>AllTypes/testDevice1/MyCBlock</comment>
+    </variables>
+    <variables name="C_int32_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DINT" topologicalAddress="%MW1816">
+      <comment>AllTypes/testDevice1/MyCBlock</comment>
+    </variables>
+    <variables name="C_uint32_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DWORD" topologicalAddress="%MW1824">
+      <comment>AllTypes/testDevice1/MyCBlock</comment>
+    </variables>
+    <variables name="C_float32_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF REAL" topologicalAddress="%MW1832">
+      <comment>AllTypes/testDevice1/MyCBlock</comment>
+    </variables>
+    <variables name="C_string_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF STRING[64]" topologicalAddress="%MW1840">
+      <comment>AllTypes/testDevice1/MyCBlock</comment>
+    </variables>
+    <variables name="C_date_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DT" topologicalAddress="%MW1968">
+      <comment>AllTypes/testDevice1/MyCBlock</comment>
+    </variables>
+    <variables name="C_char_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW1984">
+      <comment>AllTypes/testDevice1/MyCBlock</comment>
+    </variables>
+    <variables name="C_byte_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF BYTE" topologicalAddress="%MW1988">
+      <comment>AllTypes/testDevice1/MyCBlock</comment>
+    </variables>
+    <variables name="C_word_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW1990">
+      <comment>AllTypes/testDevice1/MyCBlock</comment>
+    </variables>
+    <variables name="C_dword_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DWORD" topologicalAddress="%MW1994">
+      <comment>AllTypes/testDevice1/MyCBlock</comment>
+    </variables>
+    <variables name="C_int_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF INT" topologicalAddress="%MW2002">
+      <comment>AllTypes/testDevice1/MyCBlock</comment>
+    </variables>
+    <variables name="C_dint_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DINT" topologicalAddress="%MW2006">
+      <comment>AllTypes/testDevice1/MyCBlock</comment>
+    </variables>
+    <variables name="C_real_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF REAL" topologicalAddress="%MW2014">
+      <comment>AllTypes/testDevice1/MyCBlock</comment>
+    </variables>
+    <variables name="C_dt_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DT" topologicalAddress="%MW2022">
+      <comment>AllTypes/testDevice1/MyCBlock</comment>
+    </variables>
+    <variables name="C_int8_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW2038">
+      <comment>AllTypes/testDevice2/MyCBlock</comment>
+    </variables>
+    <variables name="C_uint8_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF BYTE" topologicalAddress="%MW2042">
+      <comment>AllTypes/testDevice2/MyCBlock</comment>
+    </variables>
+    <variables name="C_int16_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF INT" topologicalAddress="%MW2044">
+      <comment>AllTypes/testDevice2/MyCBlock</comment>
+    </variables>
+    <variables name="C_uint16_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW2048">
+      <comment>AllTypes/testDevice2/MyCBlock</comment>
+    </variables>
+    <variables name="C_int32_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DINT" topologicalAddress="%MW2052">
+      <comment>AllTypes/testDevice2/MyCBlock</comment>
+    </variables>
+    <variables name="C_uint32_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DWORD" topologicalAddress="%MW2060">
+      <comment>AllTypes/testDevice2/MyCBlock</comment>
+    </variables>
+    <variables name="C_float32_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF REAL" topologicalAddress="%MW2068">
+      <comment>AllTypes/testDevice2/MyCBlock</comment>
+    </variables>
+    <variables name="C_string_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF STRING[64]" topologicalAddress="%MW2076">
+      <comment>AllTypes/testDevice2/MyCBlock</comment>
+    </variables>
+    <variables name="C_date_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DT" topologicalAddress="%MW2204">
+      <comment>AllTypes/testDevice2/MyCBlock</comment>
+    </variables>
+    <variables name="C_char_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW2220">
+      <comment>AllTypes/testDevice2/MyCBlock</comment>
+    </variables>
+    <variables name="C_byte_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF BYTE" topologicalAddress="%MW2224">
+      <comment>AllTypes/testDevice2/MyCBlock</comment>
+    </variables>
+    <variables name="C_word_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW2226">
+      <comment>AllTypes/testDevice2/MyCBlock</comment>
+    </variables>
+    <variables name="C_dword_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DWORD" topologicalAddress="%MW2230">
+      <comment>AllTypes/testDevice2/MyCBlock</comment>
+    </variables>
+    <variables name="C_int_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF INT" topologicalAddress="%MW2238">
+      <comment>AllTypes/testDevice2/MyCBlock</comment>
+    </variables>
+    <variables name="C_dint_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DINT" topologicalAddress="%MW2242">
+      <comment>AllTypes/testDevice2/MyCBlock</comment>
+    </variables>
+    <variables name="C_real_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF REAL" topologicalAddress="%MW2250">
+      <comment>AllTypes/testDevice2/MyCBlock</comment>
+    </variables>
+    <variables name="C_dt_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DT" topologicalAddress="%MW2258">
+      <comment>AllTypes/testDevice2/MyCBlock</comment>
+    </variables>
   </dataBlock>
 </VariablesExchangeFile>
\ No newline at end of file
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 724ac1040422d4352f637eb1721396fd64f9953d..9a513184edd4e2fb6947151dcd4222d639725332 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="308863231"/>
+      <variableInit value="582399177"/>
       <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#2017-6-8-16:38:3"/>
+      <variableInit value="DT#2018-1-31-10:49:39"/>
       <comment>SilecsHeader/SilecsHeader/hdrBlk</comment>
     </variables>
     <variables name="RO_int8_a583_testDevice1" typeName="WORD" topologicalAddress="%MW22">
@@ -322,5 +322,107 @@
     <variables name="WO_dt_a583_testDevice2" typeName="ARRAY[0..9] OF DT" topologicalAddress="%MW1754">
       <comment>AllTypes/testDevice2/MyWOBlock</comment>
     </variables>
+    <variables name="C_int8_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW1794">
+      <comment>AllTypes/testDevice1/MyCBlock</comment>
+    </variables>
+    <variables name="C_uint8_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF BYTE" topologicalAddress="%MW1798">
+      <comment>AllTypes/testDevice1/MyCBlock</comment>
+    </variables>
+    <variables name="C_int16_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF INT" topologicalAddress="%MW1800">
+      <comment>AllTypes/testDevice1/MyCBlock</comment>
+    </variables>
+    <variables name="C_uint16_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW1804">
+      <comment>AllTypes/testDevice1/MyCBlock</comment>
+    </variables>
+    <variables name="C_int32_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DINT" topologicalAddress="%MW1808">
+      <comment>AllTypes/testDevice1/MyCBlock</comment>
+    </variables>
+    <variables name="C_uint32_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DWORD" topologicalAddress="%MW1816">
+      <comment>AllTypes/testDevice1/MyCBlock</comment>
+    </variables>
+    <variables name="C_float32_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF REAL" topologicalAddress="%MW1824">
+      <comment>AllTypes/testDevice1/MyCBlock</comment>
+    </variables>
+    <variables name="C_string_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF STRING[64]" topologicalAddress="%MW1832">
+      <comment>AllTypes/testDevice1/MyCBlock</comment>
+    </variables>
+    <variables name="C_date_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DT" topologicalAddress="%MW1960">
+      <comment>AllTypes/testDevice1/MyCBlock</comment>
+    </variables>
+    <variables name="C_char_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW1976">
+      <comment>AllTypes/testDevice1/MyCBlock</comment>
+    </variables>
+    <variables name="C_byte_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF BYTE" topologicalAddress="%MW1980">
+      <comment>AllTypes/testDevice1/MyCBlock</comment>
+    </variables>
+    <variables name="C_word_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW1982">
+      <comment>AllTypes/testDevice1/MyCBlock</comment>
+    </variables>
+    <variables name="C_dword_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DWORD" topologicalAddress="%MW1986">
+      <comment>AllTypes/testDevice1/MyCBlock</comment>
+    </variables>
+    <variables name="C_int_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF INT" topologicalAddress="%MW1994">
+      <comment>AllTypes/testDevice1/MyCBlock</comment>
+    </variables>
+    <variables name="C_dint_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DINT" topologicalAddress="%MW1998">
+      <comment>AllTypes/testDevice1/MyCBlock</comment>
+    </variables>
+    <variables name="C_real_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF REAL" topologicalAddress="%MW2006">
+      <comment>AllTypes/testDevice1/MyCBlock</comment>
+    </variables>
+    <variables name="C_dt_a583_testDevice1" typeName="ARRAY[0..1, 0..1] OF DT" topologicalAddress="%MW2014">
+      <comment>AllTypes/testDevice1/MyCBlock</comment>
+    </variables>
+    <variables name="C_int8_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW2030">
+      <comment>AllTypes/testDevice2/MyCBlock</comment>
+    </variables>
+    <variables name="C_uint8_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF BYTE" topologicalAddress="%MW2034">
+      <comment>AllTypes/testDevice2/MyCBlock</comment>
+    </variables>
+    <variables name="C_int16_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF INT" topologicalAddress="%MW2036">
+      <comment>AllTypes/testDevice2/MyCBlock</comment>
+    </variables>
+    <variables name="C_uint16_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW2040">
+      <comment>AllTypes/testDevice2/MyCBlock</comment>
+    </variables>
+    <variables name="C_int32_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DINT" topologicalAddress="%MW2044">
+      <comment>AllTypes/testDevice2/MyCBlock</comment>
+    </variables>
+    <variables name="C_uint32_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DWORD" topologicalAddress="%MW2052">
+      <comment>AllTypes/testDevice2/MyCBlock</comment>
+    </variables>
+    <variables name="C_float32_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF REAL" topologicalAddress="%MW2060">
+      <comment>AllTypes/testDevice2/MyCBlock</comment>
+    </variables>
+    <variables name="C_string_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF STRING[64]" topologicalAddress="%MW2068">
+      <comment>AllTypes/testDevice2/MyCBlock</comment>
+    </variables>
+    <variables name="C_date_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DT" topologicalAddress="%MW2196">
+      <comment>AllTypes/testDevice2/MyCBlock</comment>
+    </variables>
+    <variables name="C_char_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW2212">
+      <comment>AllTypes/testDevice2/MyCBlock</comment>
+    </variables>
+    <variables name="C_byte_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF BYTE" topologicalAddress="%MW2216">
+      <comment>AllTypes/testDevice2/MyCBlock</comment>
+    </variables>
+    <variables name="C_word_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF WORD" topologicalAddress="%MW2218">
+      <comment>AllTypes/testDevice2/MyCBlock</comment>
+    </variables>
+    <variables name="C_dword_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DWORD" topologicalAddress="%MW2222">
+      <comment>AllTypes/testDevice2/MyCBlock</comment>
+    </variables>
+    <variables name="C_int_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF INT" topologicalAddress="%MW2230">
+      <comment>AllTypes/testDevice2/MyCBlock</comment>
+    </variables>
+    <variables name="C_dint_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DINT" topologicalAddress="%MW2234">
+      <comment>AllTypes/testDevice2/MyCBlock</comment>
+    </variables>
+    <variables name="C_real_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF REAL" topologicalAddress="%MW2242">
+      <comment>AllTypes/testDevice2/MyCBlock</comment>
+    </variables>
+    <variables name="C_dt_a583_testDevice2" typeName="ARRAY[0..1, 0..1] OF DT" topologicalAddress="%MW2250">
+      <comment>AllTypes/testDevice2/MyCBlock</comment>
+    </variables>
   </dataBlock>
 </VariablesExchangeFile>
\ No newline at end of file
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 06581fa9b7271f16f179d6b1be607607a66cac27..718641684885d5845a6653b0a840cef0a7fe91fe 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#1268e0ff;
+        _checksum: DWORD := DW#16#22b6b4c9;
         _user: STRING[16] := 'schwinn';
-        _date: DT := DT#2017-10-9-13:25:3;
+        _date: DT := DT#2018-1-31-10:49:39;
 
     END_STRUCT;
 END_TYPE
@@ -120,6 +120,32 @@ NAME:      UDTB
     END_STRUCT;
 END_TYPE
 
+TYPE _AllTypes_MyCBlock
+AUTHOR:    schwinn
+FAMILY:    SILECS
+NAME:      UDTB
+    STRUCT
+        C_int8: ARRAY[0..1, 0..1] OF CHAR;
+        C_uint8: ARRAY[0..1, 0..1] OF BYTE;
+        C_int16: ARRAY[0..1, 0..1] OF INT;
+        C_uint16: ARRAY[0..1, 0..1] OF WORD;
+        C_int32: ARRAY[0..1, 0..1] OF DINT;
+        C_uint32: ARRAY[0..1, 0..1] OF DWORD;
+        C_float32: ARRAY[0..1, 0..1] OF REAL;
+        C_string: ARRAY[0..1, 0..1] OF STRING[64];
+        C_date: ARRAY[0..1, 0..1] OF DT;
+        C_char: ARRAY[0..1, 0..1] OF CHAR;
+        C_byte: ARRAY[0..1, 0..1] OF BYTE;
+        C_word: ARRAY[0..1, 0..1] OF WORD;
+        C_dword: ARRAY[0..1, 0..1] OF DWORD;
+        C_int: ARRAY[0..1, 0..1] OF INT;
+        C_dint: ARRAY[0..1, 0..1] OF DINT;
+        C_real: ARRAY[0..1, 0..1] OF REAL;
+        C_dt: ARRAY[0..1, 0..1] OF DT;
+
+    END_STRUCT;
+END_TYPE
+
 
 (* ---------------------------------------------------------------------
  * AllTypes/ v0.1.0
@@ -136,6 +162,7 @@ STRUCT
     MyROBlock: _AllTypes_MyROBlock;
     MyRWBlock: _AllTypes_MyRWBlock;
     MyWOBlock: _AllTypes_MyWOBlock;
+    MyCBlock: _AllTypes_MyCBlock;
 
 END_STRUCT;
 BEGIN
@@ -151,6 +178,7 @@ STRUCT
     MyROBlock: _AllTypes_MyROBlock;
     MyRWBlock: _AllTypes_MyRWBlock;
     MyWOBlock: _AllTypes_MyWOBlock;
+    MyCBlock: _AllTypes_MyCBlock;
 
 END_STRUCT;
 BEGIN
diff --git a/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_Step7Block.sdf b/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_Step7Block.sdf
index e5d2ddb66c2635a199c7f174cfbfd46beccb8ef8..36bf71bf96f71b37fd32e41ba46a2aa36f88d2e5 100644
--- a/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_Step7Block.sdf
+++ b/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_Step7Block.sdf
@@ -3,5 +3,6 @@
 "_AllTypes_MyROBlock","UDT 1","UDT 1","[AllTypes/0.1.0] UDT symbol: _<class-name>_<block-name>"
 "_AllTypes_MyRWBlock","UDT 2","UDT 2",""
 "_AllTypes_MyWOBlock","UDT 3","UDT 3",""
+"_AllTypes_MyCBlock","UDT 4","UDT 4",""
 "AllTypes_testDevice1","DB 1","DB 1","[AllTypes/0.1.0] DB symbol: <class-name>_<device-label | device-id>"
 "AllTypes_testDevice2","DB 2","DB 2",""
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 4e5bba84e305df584059134c37e68813617f30c5..439b2cf69d2ae881c5a372727bd3d517ea374ae7 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#1268e0ff;
+        _checksum: DWORD := DW#16#22b6b4c9;
         _user: STRING[16] := 'schwinn';
-        _date: DT := DT#2017-10-9-13:25:3;
+        _date: DT := DT#2018-1-31-10:49:39;
 
     END_STRUCT;
 END_TYPE
@@ -120,6 +120,32 @@ NAME:      UDTB
     END_STRUCT;
 END_TYPE
 
+TYPE _AllTypes_MyCBlock
+AUTHOR:    schwinn
+FAMILY:    SILECS
+NAME:      UDTB
+    STRUCT
+        C_int8: ARRAY[0..1, 0..1] OF CHAR;
+        C_uint8: ARRAY[0..1, 0..1] OF BYTE;
+        C_int16: ARRAY[0..1, 0..1] OF INT;
+        C_uint16: ARRAY[0..1, 0..1] OF WORD;
+        C_int32: ARRAY[0..1, 0..1] OF DINT;
+        C_uint32: ARRAY[0..1, 0..1] OF DWORD;
+        C_float32: ARRAY[0..1, 0..1] OF REAL;
+        C_string: ARRAY[0..1, 0..1] OF STRING[64];
+        C_date: ARRAY[0..1, 0..1] OF DT;
+        C_char: ARRAY[0..1, 0..1] OF CHAR;
+        C_byte: ARRAY[0..1, 0..1] OF BYTE;
+        C_word: ARRAY[0..1, 0..1] OF WORD;
+        C_dword: ARRAY[0..1, 0..1] OF DWORD;
+        C_int: ARRAY[0..1, 0..1] OF INT;
+        C_dint: ARRAY[0..1, 0..1] OF DINT;
+        C_real: ARRAY[0..1, 0..1] OF REAL;
+        C_dt: ARRAY[0..1, 0..1] OF DT;
+
+    END_STRUCT;
+END_TYPE
+
 
 (* ---------------------------------------------------------------------
  * AllTypes/ v0.1.0
@@ -168,3 +194,17 @@ END_STRUCT;
 BEGIN
 END_DATA_BLOCK
 
+(* AllTypes_MyCBlock ...........................................*)
+DATA_BLOCK DB4
+{ S7_Optimized_Access := 'FALSE' }
+AUTHOR:    schwinn
+FAMILY:    SILECS
+NAME:      BLK_MODE
+STRUCT
+    testDevice1: _AllTypes_MyCBlock;
+    testDevice2: _AllTypes_MyCBlock;
+
+END_STRUCT;
+BEGIN
+END_DATA_BLOCK
+
diff --git a/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_Step7Device.sdf b/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_Step7Device.sdf
index 29a5f5851a5e2e6dea4c19a034b129e1333190e5..fe712efd2b872e3c587fae577a389ffc3b0d3fe4 100644
--- a/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_Step7Device.sdf
+++ b/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_Step7Device.sdf
@@ -3,6 +3,8 @@
 "_AllTypes_MyROBlock","UDT 1","UDT 1","[AllTypes/0.1.0] UDT symbol: _<class-name>_<block-name>"
 "_AllTypes_MyRWBlock","UDT 2","UDT 2",""
 "_AllTypes_MyWOBlock","UDT 3","UDT 3",""
+"_AllTypes_MyCBlock","UDT 4","UDT 4",""
 "AllTypes_MyROBlock","DB 1","DB 1","[AllTypes/0.1.0] DB symbol: <class-name>_<block-name>"
 "AllTypes_MyRWBlock","DB 2","DB 2",""
 "AllTypes_MyWOBlock","DB 3","DB 3",""
+"AllTypes_MyCBlock","DB 4","DB 4",""
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 8ec8c41e85880ee311b494c1e42f2dd06095278e..b70e773c926b030aed70c4d4f39394c5e5bd93bf 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#1268e0ff;
+        _checksum: DWORD := DW#16#22b6b4c9;
         _user: STRING[16] := 'schwinn';
-        _date: DT := DT#2017-10-9-13:25:3;
+        _date: DT := DT#2018-1-31-10:49:39;
 
     END_STRUCT;
 END_TYPE
@@ -119,6 +119,32 @@ NAME:      UDTB
     END_STRUCT;
 END_TYPE
 
+TYPE _AllTypes_MyCBlock
+AUTHOR:    schwinn
+FAMILY:    SILECS
+NAME:      UDTB
+    STRUCT
+        C_int8: ARRAY[0..1, 0..1] OF CHAR;
+        C_uint8: ARRAY[0..1, 0..1] OF BYTE;
+        C_int16: ARRAY[0..1, 0..1] OF INT;
+        C_uint16: ARRAY[0..1, 0..1] OF WORD;
+        C_int32: ARRAY[0..1, 0..1] OF DINT;
+        C_uint32: ARRAY[0..1, 0..1] OF DWORD;
+        C_float32: ARRAY[0..1, 0..1] OF REAL;
+        C_string: ARRAY[0..1, 0..1] OF STRING[64];
+        C_date: ARRAY[0..1, 0..1] OF DT;
+        C_char: ARRAY[0..1, 0..1] OF CHAR;
+        C_byte: ARRAY[0..1, 0..1] OF BYTE;
+        C_word: ARRAY[0..1, 0..1] OF WORD;
+        C_dword: ARRAY[0..1, 0..1] OF DWORD;
+        C_int: ARRAY[0..1, 0..1] OF INT;
+        C_dint: ARRAY[0..1, 0..1] OF DINT;
+        C_real: ARRAY[0..1, 0..1] OF REAL;
+        C_dt: ARRAY[0..1, 0..1] OF DT;
+
+    END_STRUCT;
+END_TYPE
+
 
 (* ---------------------------------------------------------------------
  * AllTypes/ v0.1.0
@@ -164,3 +190,16 @@ END_STRUCT;
 BEGIN
 END_DATA_BLOCK
 
+DATA_BLOCK AllTypes_MyCBlock
+{ S7_Optimized_Access := 'FALSE' }
+AUTHOR:    schwinn
+FAMILY:    SILECS
+NAME:      BLK_MODE
+STRUCT
+    testDevice1: _AllTypes_MyCBlock;
+    testDevice2: _AllTypes_MyCBlock;
+
+END_STRUCT;
+BEGIN
+END_DATA_BLOCK
+
diff --git a/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_TiaBlock.sdf b/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_TiaBlock.sdf
index 29a5f5851a5e2e6dea4c19a034b129e1333190e5..fe712efd2b872e3c587fae577a389ffc3b0d3fe4 100644
--- a/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_TiaBlock.sdf
+++ b/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_TiaBlock.sdf
@@ -3,6 +3,8 @@
 "_AllTypes_MyROBlock","UDT 1","UDT 1","[AllTypes/0.1.0] UDT symbol: _<class-name>_<block-name>"
 "_AllTypes_MyRWBlock","UDT 2","UDT 2",""
 "_AllTypes_MyWOBlock","UDT 3","UDT 3",""
+"_AllTypes_MyCBlock","UDT 4","UDT 4",""
 "AllTypes_MyROBlock","DB 1","DB 1","[AllTypes/0.1.0] DB symbol: <class-name>_<block-name>"
 "AllTypes_MyRWBlock","DB 2","DB 2",""
 "AllTypes_MyWOBlock","DB 3","DB 3",""
+"AllTypes_MyCBlock","DB 4","DB 4",""
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 0c63e18840ae937b2570a795f1e43eadac554304..57a2d8fe89666c34b58200e6fafba23f82dac71d 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#1268e0ff;
+        _checksum: DWORD := DW#16#22b6b4c9;
         _user: STRING[16] := 'schwinn';
-        _date: DT := DT#2017-10-9-13:25:2;
+        _date: DT := DT#2018-1-31-10:49:39;
 
     END_STRUCT;
 END_TYPE
@@ -119,6 +119,32 @@ NAME:      UDTB
     END_STRUCT;
 END_TYPE
 
+TYPE _AllTypes_MyCBlock
+AUTHOR:    schwinn
+FAMILY:    SILECS
+NAME:      UDTB
+    STRUCT
+        C_int8: ARRAY[0..1, 0..1] OF CHAR;
+        C_uint8: ARRAY[0..1, 0..1] OF BYTE;
+        C_int16: ARRAY[0..1, 0..1] OF INT;
+        C_uint16: ARRAY[0..1, 0..1] OF WORD;
+        C_int32: ARRAY[0..1, 0..1] OF DINT;
+        C_uint32: ARRAY[0..1, 0..1] OF DWORD;
+        C_float32: ARRAY[0..1, 0..1] OF REAL;
+        C_string: ARRAY[0..1, 0..1] OF STRING[64];
+        C_date: ARRAY[0..1, 0..1] OF DT;
+        C_char: ARRAY[0..1, 0..1] OF CHAR;
+        C_byte: ARRAY[0..1, 0..1] OF BYTE;
+        C_word: ARRAY[0..1, 0..1] OF WORD;
+        C_dword: ARRAY[0..1, 0..1] OF DWORD;
+        C_int: ARRAY[0..1, 0..1] OF INT;
+        C_dint: ARRAY[0..1, 0..1] OF DINT;
+        C_real: ARRAY[0..1, 0..1] OF REAL;
+        C_dt: ARRAY[0..1, 0..1] OF DT;
+
+    END_STRUCT;
+END_TYPE
+
 
 (* ---------------------------------------------------------------------
  * AllTypes/ v0.1.0
@@ -134,6 +160,7 @@ STRUCT
     MyROBlock: _AllTypes_MyROBlock;
     MyRWBlock: _AllTypes_MyRWBlock;
     MyWOBlock: _AllTypes_MyWOBlock;
+    MyCBlock: _AllTypes_MyCBlock;
 
 END_STRUCT;
 BEGIN
@@ -148,6 +175,7 @@ STRUCT
     MyROBlock: _AllTypes_MyROBlock;
     MyRWBlock: _AllTypes_MyRWBlock;
     MyWOBlock: _AllTypes_MyWOBlock;
+    MyCBlock: _AllTypes_MyCBlock;
 
 END_STRUCT;
 BEGIN
diff --git a/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_TiaDevice.sdf b/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_TiaDevice.sdf
index e5d2ddb66c2635a199c7f174cfbfd46beccb8ef8..36bf71bf96f71b37fd32e41ba46a2aa36f88d2e5 100644
--- a/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_TiaDevice.sdf
+++ b/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_TiaDevice.sdf
@@ -3,5 +3,6 @@
 "_AllTypes_MyROBlock","UDT 1","UDT 1","[AllTypes/0.1.0] UDT symbol: _<class-name>_<block-name>"
 "_AllTypes_MyRWBlock","UDT 2","UDT 2",""
 "_AllTypes_MyWOBlock","UDT 3","UDT 3",""
+"_AllTypes_MyCBlock","UDT 4","UDT 4",""
 "AllTypes_testDevice1","DB 1","DB 1","[AllTypes/0.1.0] DB symbol: <class-name>_<device-label | device-id>"
 "AllTypes_testDevice2","DB 2","DB 2",""
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 3449b46362d02fe17c48fc5c06133252c6ea2daf..4c5b0f60076d41a1dd273ab678d84fd67f6b25d5 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(0XFFE06812);
+        set_checksum(0XC9B4B622);
         set_user("schwinn");
         set_date(0.0);
     }