diff --git a/silecs-model/src/xml/DesignSchema.xsd b/silecs-model/src/xml/DesignSchema.xsd
index d6a75caca217bd5f9034999991322b06304a8334..02be0f41ffd1220d0961eb831f314ff4a8c03814 100644
--- a/silecs-model/src/xml/DesignSchema.xsd
+++ b/silecs-model/src/xml/DesignSchema.xsd
@@ -91,8 +91,10 @@ along with this program.  If not, see http://www.gnu.org/licenses/.-->
 					</xs:annotation>
 					<xs:complexType>
 					    <xs:sequence>
-					       <xs:element name="Description" type="xs:string" minOccurs="0"/>
-                           <xs:element name="Block" type="BlockType" maxOccurs="unbounded"/>
+                           <xs:element name="Setting-Block" type="Setting-BlockType" minOccurs="0" maxOccurs="unbounded"/>
+                           <xs:element name="Acquisition-Block" type="Acquisition-BlockType" minOccurs="0" maxOccurs="unbounded"/>
+                           <xs:element name="Command-Block" type="Command-BlockType" minOccurs="0" maxOccurs="unbounded"/>
+                           <xs:element name="Description" type="xs:string" minOccurs="0"/>
 						</xs:sequence>
 						<xs:attribute name="name" type="SilecsClassNameType" use="required"/>
 						<xs:attribute name="version" type="VersionType" use="required"/>
@@ -132,19 +134,39 @@ along with this program.  If not, see http://www.gnu.org/licenses/.-->
 		</xs:complexType>
 	</xs:element>
 
+
+<xs:complexType name="FesaCodegenType-ServerOnly">
+    <xs:sequence>
+    </xs:sequence>
+</xs:complexType>
+    
+<xs:complexType name="FesaBlockCodegenConfigType">
+    <xs:sequence>
+        <xs:element name="Server" minOccurs="0">
+	        <xs:complexType>
+		       <xs:attribute name="fesaPropertyName" type="BlockNameType" use="required">
+			        <xs:annotation>
+			            <xs:appinfo>Defines the name of the generated Fesa-Property.</xs:appinfo>
+			        </xs:annotation>
+		       </xs:attribute>
+		    </xs:complexType>
+        </xs:element>
+        <xs:element name="RealTime" minOccurs="0">
+            <xs:complexType>
+               <xs:attribute name="fesaRTActionName" type="BlockNameType" use="required">
+                    <xs:annotation>
+                        <xs:appinfo>Defines the name of the generated Fesa-RT-Action.</xs:appinfo>
+                    </xs:annotation>
+               </xs:attribute>
+            </xs:complexType>
+        </xs:element>
+    </xs:sequence>
+</xs:complexType>
+            
 <xs:complexType name="BlockType">
 	<xs:sequence>
 	    <xs:element name="Description" type="xs:string" minOccurs="0"/>
-	    <xs:element name="Register" type="RegisterType" maxOccurs="unbounded">
-	        <xs:annotation>
-	            <xs:appinfo>
-	                <doc>
-	                    The Register is the elementary component of the SILECS data model.
-	                    &lt;br&gt;Each variable has a unique name in the scope of the class (including all blocks).
-	                </doc>
-	            </xs:appinfo>
-	        </xs:annotation>
-	    </xs:element>
+	    <xs:element name="Fesa-Codegen-Config" type="FesaBlockCodegenConfigType" minOccurs="0"/>
 	</xs:sequence>
 	<xs:attribute name="name" type="BlockNameType" use="required">
 	    <xs:annotation>
@@ -154,30 +176,75 @@ along with this program.  If not, see http://www.gnu.org/licenses/.-->
 	        </xs:appinfo>
 	    </xs:annotation>
 	</xs:attribute>
-	<xs:attribute name="mode" use="required">
-	    <xs:annotation>
-	        <xs:documentation>Defines the access-mode of the block and finally of its related variables.</xs:documentation>
-	    </xs:annotation>
-	    <xs:simpleType>
-	        <xs:restriction base="xs:string">
-	            <xs:enumeration value="READ-ONLY"/>
-	            <xs:enumeration value="WRITE-ONLY"/>
-	            <xs:enumeration value="READ-WRITE"/>
-	        </xs:restriction>
-	    </xs:simpleType>
-	</xs:attribute>
-	<xs:attribute name="generateFesaProperty" type="xs:boolean" use="required">
-	    <xs:annotation>
-	        <xs:appinfo>
-	            Defines if the code-generation will generate a FESA-Property and the related Actions/Events/etc for this block
-	        </xs:appinfo>
-	    </xs:annotation>
-	</xs:attribute>
-	<xs:attribute name="fesaPropertyName" type="BlockNameType" use="optional">
-	    <xs:annotation>
-	        <xs:appinfo>Defines the name of the generated Fesa-Property. If not set, the Blockname will be used.</xs:appinfo>
-	    </xs:annotation>
-	</xs:attribute>
+</xs:complexType>
+
+<xs:complexType name="Setting-BlockType">
+    <xs:complexContent>
+        <xs:extension base="BlockType">
+	        <xs:sequence>
+		        <xs:element name="Setting-Register" type="Setting-RegisterType" minOccurs="0" maxOccurs="unbounded">
+		            <xs:annotation>
+		                <xs:appinfo>
+		                    <doc>PLC Register which can be setted and read back by Silecs. The PLC should not modify it's value.</doc>
+		                </xs:appinfo>
+		            </xs:annotation>
+		        </xs:element>
+                <xs:element name="Volatile-Register" type="Volatile-RegisterType" minOccurs="0" maxOccurs="unbounded">
+                    <xs:annotation>
+                        <xs:appinfo>
+                            <doc>PLC Register which can be set by both, Silecs and the PLC</doc>
+                        </xs:appinfo>
+                    </xs:annotation>
+                </xs:element>
+	        </xs:sequence>
+        </xs:extension>
+    </xs:complexContent>
+</xs:complexType>
+
+<xs:complexType name="Acquisition-BlockType">
+    <xs:complexContent>
+        <xs:extension base="BlockType">
+             <xs:sequence>
+                <xs:element name="Acquisition-Register" type="Acquisition-RegisterType" minOccurs="0" maxOccurs="unbounded">
+                    <xs:annotation>
+                        <xs:appinfo>
+                            <doc>PLC Register which is only read out by Silecs</doc>
+                        </xs:appinfo>
+                    </xs:annotation>
+                </xs:element>
+                <xs:element name="Volatile-Register" type="Volatile-RegisterType" minOccurs="0" maxOccurs="unbounded">
+                    <xs:annotation>
+                        <xs:appinfo>
+                            <doc>PLC Register which can be set by both, Silecs and the PLC</doc>
+                        </xs:appinfo>
+                    </xs:annotation>
+                </xs:element>
+            </xs:sequence>
+        </xs:extension>
+    </xs:complexContent>
+</xs:complexType>
+
+<xs:complexType name="Command-BlockType">
+    <xs:complexContent>
+        <xs:extension base="BlockType">
+             <xs:sequence>
+                <xs:element name="Setting-Register" type="Setting-RegisterType" minOccurs="0" maxOccurs="unbounded">
+                    <xs:annotation>
+                        <xs:appinfo>
+                            <doc>PLC Register which can be setted by Silecs. The PLC should not modify it's value.</doc>
+                        </xs:appinfo>
+                    </xs:annotation>
+                </xs:element>
+                <xs:element name="Volatile-Register" type="Volatile-RegisterType" minOccurs="0" maxOccurs="unbounded">
+                    <xs:annotation>
+                        <xs:appinfo>
+                            <doc>PLC Register which can be set by both, Silecs and the PLC</doc>
+                        </xs:appinfo>
+                    </xs:annotation>
+                </xs:element>
+            </xs:sequence>
+        </xs:extension>
+    </xs:complexContent>
 </xs:complexType>
 
     
@@ -233,28 +300,6 @@ along with this program.  If not, see http://www.gnu.org/licenses/.-->
             </xs:appinfo>
         </xs:annotation>
     </xs:attribute>
-    <xs:attribute name="synchro" use="required">
-        <xs:annotation>
-            <xs:appinfo>
-                <doc>
-                    initial value or processing value of persistent data must be up-to-date each time a connection is established. 
-                    &lt;br/&gt;SILECS library supports automatic synchronization.
-                    &lt;ul&gt;
-                        &lt;li&gt;MASTER:  PLC overwrites FEC register values. &lt;/li&gt;
-                        &lt;li&gt;SLAVE: FEC overwrites PLC register values. &lt;/li&gt;
-                        &lt;li&gt;NONE: no automatic synchronization performed. (volatile data) &lt;/li&gt;
-                    &lt;/ul&gt;
-                </doc>
-            </xs:appinfo>
-        </xs:annotation>
-        <xs:simpleType>
-            <xs:restriction base="xs:string">
-                <xs:enumeration value="MASTER"/>
-                <xs:enumeration value="SLAVE"/>
-                <xs:enumeration value="NONE"/>
-            </xs:restriction>
-        </xs:simpleType>
-    </xs:attribute>
     <xs:attribute name="generateFesaValueItem" type="xs:boolean" use="required">
         <xs:annotation>
             <xs:appinfo>
@@ -269,6 +314,24 @@ along with this program.  If not, see http://www.gnu.org/licenses/.-->
     </xs:attribute>
 </xs:complexType>
 
+<xs:complexType name="Acquisition-RegisterType">
+    <xs:complexContent>
+        <xs:extension base="RegisterType">
+        </xs:extension>
+    </xs:complexContent>
+</xs:complexType>
+<xs:complexType name="Setting-RegisterType">
+    <xs:complexContent>
+        <xs:extension base="RegisterType">
+        </xs:extension>
+    </xs:complexContent>
+</xs:complexType>
+<xs:complexType name="Volatile-RegisterType">
+    <xs:complexContent>
+        <xs:extension base="RegisterType">
+        </xs:extension>
+    </xs:complexContent>
+</xs:complexType>
                                     
 	<xs:simpleType name="BlockNameType"> 
 		<xs:restriction base="xs:string">