diff --git a/silecs-codegen/src/xml/genparam.py b/silecs-codegen/src/xml/genparam.py
index e93bb7c51f77a028838b58dc8d57c4590ff29eab..60be9d25e18c7ce933e0b8db3b1bea7173195c0d 100644
--- a/silecs-codegen/src/xml/genparam.py
+++ b/silecs-codegen/src/xml/genparam.py
@@ -482,38 +482,17 @@ def computeChecksumController( workspacePath, controllerNode, silecsVersion, PLC
     return CRC32
     
 def computeChecksumClass(designDOM, CRC32, logTopics={'errorlog': True}):
-    blockList = designDOM.xpathEval("Block")
+    blockList = designDOM.xpathEval("//Block")
     for blockNode in blockList:
         blockName = blockNode.prop('name')
         blockMode = blockNode.prop('mode')
-        registerList = blockNode.xpathEval("Register")
-        for register in registerList:
-            regName   = register.prop("name")
-            CRC32     = zlib.crc32(trim(regName),CRC32)& 0xffffffff
-
-            regFormat = register.prop("format")
-            CRC32     = zlib.crc32(trim(regFormat),CRC32)& 0xffffffff
-
-            try:
-                # array-dim1 is an optional attribute!!!
-                regDim1   = register.prop("array-dim1")
-            except:
-                regDim1   = "1"
-            CRC32     = zlib.crc32(trim(regDim1),CRC32)& 0xffffffff
-
-            try:
-                # array-dim2 is an optional attribute!!!
-                regDim2   = register.prop("array-dim2")
-            except:
-                regDim2   = "1"
-            CRC32     = zlib.crc32(trim(regDim2),CRC32)& 0xffffffff
-
-            try:
-                # string-len is an optional attribute!!!
-                stringLength = register.prop("string-len")
-                CRC32     = zlib.crc32(trim(stringLength),CRC32)& 0xffffffff
-            except:
-                pass
+        for registerNode in blockNode.xpathEval("Register"):
+            register = DesignRegister(registerNode)
+            CRC32     = zlib.crc32(trim(register.name),CRC32)& 0xffffffff
+            CRC32     = zlib.crc32(trim(register.format),CRC32)& 0xffffffff
+            CRC32     = zlib.crc32(trim(str(register.dim1)),CRC32)& 0xffffffff
+            CRC32     = zlib.crc32(trim(str(register.dim2)),CRC32)& 0xffffffff
+            CRC32     = zlib.crc32(trim(str(register.stringLength)),CRC32)& 0xffffffff
     return CRC32
     
 #-------------------------------------------------------------------------
diff --git a/silecs-codegen/src/xml/model/Register.py b/silecs-codegen/src/xml/model/Register.py
index 8388b2d3d0dd7e9e2937c13c522546d388b52809..6695e7ee1f0bc26a9c1206da2597f7df84af4426 100644
--- a/silecs-codegen/src/xml/model/Register.py
+++ b/silecs-codegen/src/xml/model/Register.py
@@ -61,6 +61,9 @@ class Register(object):
     
     def isArray2D(self):
         return self.valueType == 'array2D' or 'stringArray2D'
+    
+    def isStringType(self):
+        return self.valueType == 'string' or 'stringArray' or 'stringArray2D'
 
 #has some additionalValues
 class ParamRegister(Register):
@@ -95,7 +98,8 @@ class DesignRegister(Register):
         self.fesaFieldName = ""
         if self.xmlNode.hasProp("fesaFieldName"):
             self.fesaFieldName = xmlNode.prop("fesaFieldName")
-        self.generateFesaValueItem = xsdBooleanToBoolean(xmlNode.prop("generateFesaValueItem"))
+        if self.xmlNode.hasProp("generateFesaValueItem"): #SilecsHEader does not have this attribute 
+            self.generateFesaValueItem = xsdBooleanToBoolean(xmlNode.prop("generateFesaValueItem"))
     def getFesaName(self):
         if self.fesaFieldName == "":
             return self.name
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 a26d3eeda28867cc4dd3a420cb228f62762c9114..8095901cd438800c0fd2a40bc48fd67ba4057e74 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-06-06 11:12:20.813259"/>
-    <Deployment checksum="2843029646"/>
+    <Generation date="2017-06-06 16:10:01.024808"/>
+    <Deployment checksum="3184721915"/>
   </Mapping-Info>
   <SILECS-Mapping plc-name="Beckhoff_BC9020" plc-brand="BECKHOFF" plc-system="TWINCat" plc-model="BC9020" protocol="BLOCK_MODE" address="32768" domain="NotUsed" used-mem="TODO">
     <SILECS-Class name="SilecsHeader" version="1.0.0" address="32768" used-mem="MW16384..MW16407 / 24 words">
diff --git a/silecs-codegen/src/xml/test/generated_correct/client/Beckhoff_CX9020.silecsparam b/silecs-codegen/src/xml/test/generated_correct/client/Beckhoff_CX9020.silecsparam
index 03c1561e5b56657212f0f140c7518c762a402709..e36c8eb1d6b16ee823d8ffc896a7dbeff4a77aa6 100644
--- a/silecs-codegen/src/xml/test/generated_correct/client/Beckhoff_CX9020.silecsparam
+++ b/silecs-codegen/src/xml/test/generated_correct/client/Beckhoff_CX9020.silecsparam
@@ -2,8 +2,8 @@
 <SILECS-Param silecs-version="DEV">
   <Mapping-Info>
     <Owner user-login="schwinn"/>
-    <Generation date="2017-06-06 11:12:20.853125"/>
-    <Deployment checksum="427563505"/>
+    <Generation date="2017-06-06 16:10:01.058078"/>
+    <Deployment checksum="656547166"/>
   </Mapping-Info>
   <SILECS-Mapping plc-name="Beckhoff_CX9020" plc-brand="BECKHOFF" plc-system="TWINCat" plc-model="CX9020" protocol="BLOCK_MODE" address="24576" domain="NotUsed" used-mem="TODO">
     <SILECS-Class name="SilecsHeader" version="1.0.0" address="24576" used-mem="MW12288..MW12313 / 26 words">
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 b3275d4508c135b28ad01045fa1eeec5b78961e5..d7f5f4a77426942dae129db8efc28a9389c4dc92 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-06-06 11:12:21.011368"/>
-    <Deployment checksum="3940683809"/>
+    <Generation date="2017-06-06 16:10:01.179699"/>
+    <Deployment checksum="1525793519"/>
   </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" domain="NotUsed" used-mem="TODO">
     <SILECS-Class name="SilecsHeader" version="1.0.0" address="0" used-mem="MW0..MW21 / 22 words">
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 3f7bedcc9d0ae93b14ea4593e30d395d33d84d7c..b3728a31a825b9a42938c199ebcbec58a3a1a80c 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-06-06 11:12:20.972129"/>
-    <Deployment checksum="3940683809"/>
+    <Generation date="2017-06-06 16:10:01.151147"/>
+    <Deployment checksum="1525793519"/>
   </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" domain="NotUsed" used-mem="TODO">
     <SILECS-Class name="SilecsHeader" version="1.0.0" address="0" used-mem="MW0..MW21 / 22 words">
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 a4271a28d6c82dec9078cefe569944306f3542a7..cc3ecef63cf0db288def382b9c831b9758759c28 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-06-06 11:12:20.934851"/>
-    <Deployment checksum="3940683809"/>
+    <Generation date="2017-06-06 16:10:01.121096"/>
+    <Deployment checksum="1525793519"/>
   </Mapping-Info>
   <SILECS-Mapping plc-name="Schneider_M340" plc-brand="SCHNEIDER" plc-system="UNITY Pro" plc-model="M340" protocol="BLOCK_MODE" address="0" domain="NotUsed" used-mem="TODO">
     <SILECS-Class name="SilecsHeader" version="1.0.0" address="0" used-mem="MW0..MW21 / 22 words">
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 fc8dc151b7e76f6a701f3a76f8f256cce2784139..cf3064adb9967d372da7a464a60e4b5ee7fabcd1 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-06-06 11:12:20.891171"/>
-    <Deployment checksum="3940683809"/>
+    <Generation date="2017-06-06 16:10:01.091104"/>
+    <Deployment checksum="1525793519"/>
   </Mapping-Info>
   <SILECS-Mapping plc-name="Schneider_PremiumQuantum" plc-brand="SCHNEIDER" plc-system="UNITY Pro" plc-model="Premium" protocol="BLOCK_MODE" address="0" domain="NotUsed" used-mem="TODO">
     <SILECS-Class name="SilecsHeader" version="1.0.0" address="0" used-mem="MW0..MW21 / 22 words">
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 64589a296de631ca5e9828acc444d27c8e9b1540..ccde8059445ef29d35c1c4a9da04b3c5f8e125cc 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-06-06 11:12:20.641338"/>
-    <Deployment checksum="3940683809"/>
+    <Generation date="2017-06-06 16:10:00.914936"/>
+    <Deployment checksum="1525793519"/>
   </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" domain="NotUsed" used-mem="TODO">
     <SILECS-Class name="SilecsHeader" version="1.0.0" address="0" used-mem="DB0..DB0 / 48 bytes">
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 3c1e348ea122bc3bb606020033f69c0f31cc6fd3..d210b157b323a9c42f09f9ba7a822850cfd39b84 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-06-06 11:12:20.678230"/>
-    <Deployment checksum="3940683809"/>
+    <Generation date="2017-06-06 16:10:00.942946"/>
+    <Deployment checksum="1525793519"/>
   </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" domain="NotUsed" used-mem="TODO">
     <SILECS-Class name="SilecsHeader" version="1.0.0" address="0" used-mem="DB0..DB0 / 48 bytes">
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 5f8230052aa90b8d16a152f96b172f3ddf786526..0e4b97f762e8ebed349570873d5dfc38f635efcd 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-06-06 11:12:20.606090"/>
-    <Deployment checksum="3940683809"/>
+    <Generation date="2017-06-06 16:10:00.881636"/>
+    <Deployment checksum="1525793519"/>
   </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" domain="NotUsed" used-mem="TODO">
     <SILECS-Class name="SilecsHeader" version="1.0.0" address="0" used-mem="DB0..DB0 / 48 bytes">
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 4938f35a1d3db43bbd07a9f17cd8575539f2febb..bafa3a01951047f5379f7f6fe686e2a6009764d9 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-06-06 11:12:20.553639"/>
-    <Deployment checksum="3940683809"/>
+    <Generation date="2017-06-06 16:10:00.846238"/>
+    <Deployment checksum="1525793519"/>
   </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" domain="NotUsed" used-mem="TODO">
     <SILECS-Class name="SilecsHeader" version="1.0.0" address="0" used-mem="DB0..DB0 / 48 bytes">