diff --git a/README.md b/README.md
index 4ec40dc0b3512c821dcf256638ddd56ff388020f..5fce84689820e6f7d0d9958e1c604003a5e236d0 100644
--- a/README.md
+++ b/README.md
@@ -2,27 +2,47 @@
 
 Repository for the Smart Device Template (SDT).
 
+**Version 3.0**
+
 Note that this project runs under Apache 2.0 license. Read the [LICENSE](LICENSE) in this repository, or refer to [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
 
-Any contributions made to this project must comply with the forementioned license.
+Any contributions made to this project must comply with the aforementioned license.
 
 ## Quick Links
-- ['domain.xsd' Version 2.0](SDT/schema2.0/src/domain.xsd)
-- [UML Diagram of the SDT 2.0](SDT/schema2.0/docs/images/SDT2.0_UML.png) ([source](SDT/schema2.0/docs/SDT_UML.uxf))
+- ['domain.xsd' Version 3.0](SDT/schema3.0/src/domain.xsd)
+- [UML Diagram of the SDT 3.0](SDT/schema3.0/docs/UML%20Diagram.md) ([source](SDT/schema3.0/docs/SDT_UML.uxf))
 
 
 ## Content
 
 You can find further Information here:
 
-- [SDT Components](SDT/schema2.0/docs/SDT_Components.md)
-- [SDT Build System](SDT/schema2.0/docs/SDT%20Build%20System.md)
-- [Examples](SDT/schema2.0/docs/Examples.md) 
-- [FAQ](SDT/schema2.0/docs/FAQ.md)
-- [Links & References](SDT/schema2.0/docs/Links.md)
-- [Backlog & Issues](SDT/schema2.0/docs/Backlog.md)
+- [SDT Components](SDT/schema3.0/docs/SDT_Components.md)
+- [SDT Build System](SDT/schema3.0/docs/SDT%20Build%20System.md)
+- [Examples](SDT/schema3.0/docs/Examples.md) 
+- [FAQ](SDT/schema3.0/docs/FAQ.md)
+- [Links & References](SDT/schema3.0/docs/Links.md)
 - [LICENSE](LICENSE)
 
+## Changes in 3.0
+- Renamed ``<RootDevice>``to ``<Device>`` and ``<Device>`` to ``<SubDevice>``,
+- Added complex data types: *Struct* and *Arrays*.
+- Simplified the UML diagram. Split the UML diagram into two parts, one for the base elements and one for the data types.
+- In the UML diagram: Moved ``<extends>`` into the UML ``<ModuleClass>`` element (easier to read).
+- Added support to specify *Units of Measurement* to data types,
+- Added ``<Doc>`` to ``<Domain>`` and other elements.
+- ``<Doc>`` is now always the first part of an element.
+- Changed ``<DeviceInfo>`` element to a list of ``<Characteristic>``.
+- Added ``<Characteristic>`` list to ``<Modules>`` and ``<ModuleClasses>``.
+- The ``<data>`` element in ``<Event>`` is now optional to support events without attached or associated data.
+- In Actions: Added ``<Args>`` as a surrounding list around a list of ``<Arg>``.
+- Added *Constraints* to ``<DataType>``.
+- Added optional *name* attribute to ``<DataType>``. This mandatory for elements of a *struct*.
+- Restructured the [RNG](SDT/schema3.0/src/domain.rng) file for better readability and maintainability.
+- In the [RNG](SDT/schema3.0/src/domain.rng)/[XSD](SDT/schema3.0/src/domain.xsd): Changed cardinality of the occurrence of elements that are part of a list of elements (e.g. ``<SubDevices><SubDevice>…</SubDevice></SubDevices>`` from „zero or more“ to „one or more“ when the surrounding list element itself is optional (to avoid empty lists).
+
+
+
 ## Changes in 2.0.1
 - Added missing "uri" data type.
 
@@ -30,7 +50,7 @@ You can find further Information here:
 - Introduced RootDevice to support hierarchical embedded devices.
 - Added new data types (byte, float, array, enum, date, time, datetime, blob, uri)
 - Added ``readable`` and ``eventable`` to data points.
-- Added otional ``<SerialNumber>``, ``<VendorURL>`` and ``<FirmwareVersion>`` elements to DeviceInfo
+- Added optional ``<SerialNumber>``, ``<VendorURL>`` and ``<FirmwareVersion>`` elements to DeviceInfo
 - Added optional ``<Doc>`` element to Event
 - Changed the optionality of the ``<DataPoint>``'s ``type`` attribute to "required".
 - Added [UML diagram](SDT/schema2.0/docs/SDT_Components.md)
diff --git a/SDT/schema3.0/docs/Backlog.md b/SDT/schema3.0/docs/Backlog.md
deleted file mode 100644
index 255034d4242d4f88b0cfd62f4c2851f1e104f738..0000000000000000000000000000000000000000
--- a/SDT/schema3.0/docs/Backlog.md
+++ /dev/null
@@ -1,92 +0,0 @@
-# Backlog
-To Be Discussed
-
-[Versions](#Versions)  
-[Namespace](#Namespace)  
-[Roles](#Roles)  
-[Optionals](#Optionals)  
-
-
-<a name="Versions"></a>
-## Versions
-### Rational
-A device vendor is free to add new functionality to a device and to change or to remove existing functionality from a device by a firmware update or changes in the configuration. These changes may mean that the device functionality and a description in SDT become "out of sync" because currently an application developer has only little means to associate a specific firmware version or device configuration to a version of a SDT description. 
-
-Even then the developer needs to manage different versions of the same SDT device description because there might be devices of the same type but with different firmware versions/configurations on a network. 
-
-The version information must be available to applications at runtime.
-
-### Proposal
-To solve this problem SDT components that can be influenced by firmware updates or configuration changes must be distinguishable by some kind of version scheme. Since different versions in the structure, attributes and elements of the SDT description as well as data types are already indicated by the "version number" of the SDT (e.g."http://hgi.org/xml/dal/3.0") only the components that are instantiated for the devices etc need to indicate their current version.
-
-The proposal is to add a *version* attribute to the following SDT components:
-
-- RootDevice
-- Device
-- ModuleClass
-
-*Event*, *Action* etc don't need an version number because a change in one of those components must be indicated by a different version  in the ModuleClass.
-
-The *version* attribute is just a string value without a defined format.
-
-### Further Discussion
-Does HGI define the version format? Or is this up to the vendors to provide their own? 
-
-At least the governing entity that managed all the different needs to define this format since it must be in agreement between the device vendors, driver provider, DAL provider and application developer.
-
-Format suggestion: define the format of the version string as "major.minor.revision" with the following semantics for each number:
-
-- **revision**: minimal change, internal bugfix, no change to data, formats or API.
-- **minor**: Change to the API that could be incompatible to the previous version. Added or removed interfaces or modules, changes in data formats.
-- **major**: Redesign of the overall structure and architecture.
-
-The "numbers" could be just integer number, but may also contain letters, e.g. "1.0.1a".
-
----
-
-<a name="Namespace"></a>
-## Domain / Namespace
-### Issue
-The SDL now uses the namespace "homegatewayinitiative.org" as a namespace to identify the schema (also used for includes). The namespace is **not** a URL, but uniquely identifies the namespace and *should* be registered by HGI.
-
-That said, most validating parsers expect **that the namesapce IS a valid URL** or that at least there is a server on the other end rejecting the request. A timeout / no connection / no answer / ... leads to an error.
-
-Therefore, we cannot use the namespace "homegateway.org" because parsers don't get an answer from this address.
-
----
-
-<a name="Roles"></a>
-## Roles
-### Proposal
-The proposal is to add a  *role* to *RootDevice* / *Device*. DECT ULE defines roles such as client and server for direct communication of appliances without a local hub. Depending on the assigned role a device might support different functions.
-
-Example:
-	
-	<RootDevice name id=”xyz” role=”something”>’
-	...
-	</RootDevice>
-
----
-
-<a name="Optionals"></a>
-## Optionals
-### Rational
-Introduce optional *Actions* in *ModuleClasses* to reduce the number of possible combinations. Some technologies offers flexibility in defining requireed and optional *Actions*, *DataPoints* and *Events*´. The alternative is to define similar *ModuleClasses* that offers the variants of required and optional elements.
-
-DECT ULE, for example, has optional actions.
-
-### Proposal
-Add an attribute to *Actions* to mark them as optional in a ModuleClass. Perhaps *DataPoints* and *Events* as well.
-
-Example:
-
-	...
-	<Action name=”abc” optional=”true”>
-	...
-	</Action>
-
-The default without the optional attribute would be  ``optional="false"``, meaning required).
-
-
-
-
diff --git a/SDT/schema3.0/docs/SDT Build System Components and Licenses.md b/SDT/schema3.0/docs/SDT Build System Components and Licenses.md
index a35e9a7ff51e69e253d4be9f2b19449ba176fc0c..962b1271297453113611581380691ac86c1758a2 100644
--- a/SDT/schema3.0/docs/SDT Build System Components and Licenses.md	
+++ b/SDT/schema3.0/docs/SDT Build System Components and Licenses.md	
@@ -5,7 +5,7 @@ The following libraries are used in the build system for the SDT.
 
 [http://www.thaiopensource.com/relaxng/trang-manual.html](http://www.thaiopensource.com/relaxng/trang-manual.html)
 
-Trang takes as input a schema written in any of the following formats:
+*Trang* takes as input a schema written in any of the following formats:
 
 - RELAX NG (XML syntax)
 - RELAX NG (compact syntax)
@@ -18,7 +18,7 @@ and produces as output a schema written in any of the following formats:
 - XML 1.0 DTD
 - W3C XML Schema
 
-Trang can also infer a schema from one or more example XML documents.
+*Trang* can also infer a schema from one or more example XML documents.
 
 
 ### License
@@ -49,7 +49,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 [http://ant-contrib.sourceforge.net](http://ant-contrib.sourceforge.net)
 
-The Ant-Contrib project is a collection of tasks (and at one point maybe types and other tools) for Apache Ant.
+The *Ant-Contrib* project is a collection of tasks (and at one point maybe types and other tools) for Apache Ant.
 
 ### License 
 
diff --git a/SDT/schema3.0/docs/SDT Build System.md b/SDT/schema3.0/docs/SDT Build System.md
index d37af8b616f27aea3ccff7c90d07ca210f7ebda5..03b182bcdffdec4c305efc42380cb3176f5914d1 100644
--- a/SDT/schema3.0/docs/SDT Build System.md	
+++ b/SDT/schema3.0/docs/SDT Build System.md	
@@ -8,7 +8,7 @@ The files referenced in this document point to version **3.0** of the SDT.
 - [SDT/schema3.0/src/](../src/) : Source files of the SDT.
 	- [domain.rng](../src/domain.rng) : RELAX NG file with the SDT schema definition. This is the source file that is converted to the actual schema definition *domain.xsd* during the build. See also [http://en.wikipedia.org/wiki/RELAX_NG](http://en.wikipedia.org/wiki/RELAX_NG).  
 	**Only edit this file when one wants to make changes to the SDT!**
-	- [domain.xsd](../src/domain.xsd) : The SDT schema defintion that is generated from *domain.rng*.
+	- [domain.xsd](../src/domain.xsd) : The SDT schema definition that is generated from *domain.rng*.
 	- [xml.xsd](../src/xml.xsd) : General schema definitions for the SDT
 - [SDT/schema3.0/test/](../test/) : This directory contains all XML files with SDT definitions that should be validated whether they conform to the SDT schema. This could be example definitions or contributions.
 - [SDT/schema3.0/build.xml](../build.xml) : This is the definition file for the ant build system.
@@ -26,10 +26,10 @@ The files referenced in this document point to version **3.0** of the SDT.
 - Download and install Apache ant from [http://ant.apache.org](http://ant.apache.org)
 - Clone the SDT repository from GitHub:
 
-		$ git clone https://github.com/Homegateway/RWD050.git
+		$ git clone https://github.com/Homegateway/SmartDeviceTemplate.git
 	
 ## How to Use the Build System
-After cloning the repository go to the directoy *SDT/schema* and run commands depending on what you want to achieve.
+After cloning the repository go to the directory *SDT/schema* and run commands depending on what you want to achieve.
 
 ### Build the Schema
 Running *ant* without any parameter builds the schema definition from the rng-definition [SDT/schema3.0/src/domain.rng](../src/domain.rng) and writes it to [SDT/schema3.0/src/domain.xsd](../src/domain.xsd)
@@ -49,9 +49,9 @@ The output after a successful validation should look like this:
 >BUILD SUCCESSFUL  
 >Total time: 1 second
 
-Otherwise you most likely receive a stacktrace or some other error messages. Search the output for the line *BUILD FAILED*. Above this line you will find some helpful hints for the filename and line number on which the error occured (here: file *mseeb.xml* on line 66) and a reason:	
+Otherwise you most likely receive a stack trace or some other error messages. Search the output for the line *BUILD FAILED*. Above this line you will find some helpful hints for the filename and line number on which the error occurred (here: file *mseeb.xml* on line 66) and a reason:	
 
->[schemavalidate] /Users/someone/Sources/git/RWD050/SDT/schema/test/mseeb.xml:66:18: cvc-elt.1: Cannot find the declaration of element 'Domain'.    
+>[schemavalidate] /Users/someone/Sources/git/SmartDeviceTemplate/SDT/schema/test/mseeb.xml:66:18: cvc-elt.1: Cannot find the declaration of element 'Domain'.    
 >BUILD FAILED
 
 ---
diff --git a/SDT/schema3.0/docs/SDT_UML.uxf b/SDT/schema3.0/docs/SDT_UML.uxf
index 2f1eb5e42ba83dd5c9b7c9fb25929ad53c1a2988..506ab24c18cfabeb3e34a00cabd023317b1814f6 100644
--- a/SDT/schema3.0/docs/SDT_UML.uxf
+++ b/SDT/schema3.0/docs/SDT_UML.uxf
@@ -1,336 +1,511 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<diagram program="umlet" version="13.2">
-  <zoom_level>9</zoom_level>
+<diagram program="umlet" version="13.3">
+  <help_text/>
+  <zoom_level>7</zoom_level>
   <element>
-    <id>UMLClass</id>
+    <id>UMLNote</id>
     <coordinates>
-      <x>261</x>
-      <y>99</y>
-      <w>135</w>
-      <h>117</h>
+      <x>70</x>
+      <y>420</y>
+      <w>217</w>
+      <h>182</h>
     </coordinates>
-    <panel_attributes>ModuleClass
---
-*@ name : text*
-/- extends: Extends/
-/- Doc : Doc/
-/- Actions : Actions/
-/- Data : Data/
-/- Events : Events/
-fg=blue
+    <panel_attributes>bg=#FAF8C8
+fontsize=12
+/@ optional elementAttribute/
+/@ optional elementAttribute = default value/
+*@ mandatoryElementAttribute*
+- mandatory element : Subclass  (exact one)
+/- optionalElement : SubClass      (zero or one)/
+/* optionalElement : SubClass      (zero or many)/
+
+"Depends" Relation
+and Cardinality
+
+Subclassing
+
+Cardinalities:
+0,1  : zero or one
+1     : exact one
+0..* : zero or many
+1..* : at least one or many
 </panel_attributes>
     <additional_attributes/>
   </element>
+  <element>
+    <id>Relation</id>
+    <coordinates>
+      <x>154</x>
+      <y>490</y>
+      <w>77</w>
+      <h>28</h>
+    </coordinates>
+    <panel_attributes>lt=&lt;.
+fontsize=10
+m1=0..*
+</panel_attributes>
+    <additional_attributes>90.0;20.0;10.0;20.0</additional_attributes>
+  </element>
+  <element>
+    <id>Relation</id>
+    <coordinates>
+      <x>154</x>
+      <y>518</y>
+      <w>77</w>
+      <h>21</h>
+    </coordinates>
+    <panel_attributes>lt=&lt;&lt;-
+fontsize=10</panel_attributes>
+    <additional_attributes>90.0;10.0;10.0;10.0</additional_attributes>
+  </element>
   <element>
     <id>UMLClass</id>
     <coordinates>
-      <x>486</x>
-      <y>162</y>
-      <w>126</w>
-      <h>90</h>
+      <x>700</x>
+      <y>763</y>
+      <w>105</w>
+      <h>154</h>
     </coordinates>
-    <panel_attributes>Action
+    <panel_attributes>&lt;&lt;enumeration&gt;&gt;
+BasicType
 --
-*@ name : text*
-/@ type : DataType/
-/- Doc : Doc/
-/* Arg : Arg/
-fg=blue</panel_attributes>
+boolean
+byte
+integer
+float
+string
+enum
+date
+time
+datetime
+blob
+uri</panel_attributes>
     <additional_attributes/>
   </element>
   <element>
     <id>Relation</id>
     <coordinates>
-      <x>387</x>
-      <y>81</y>
-      <w>117</w>
-      <h>81</h>
+      <x>406</x>
+      <y>826</y>
+      <w>98</w>
+      <h>56</h>
     </coordinates>
-    <panel_attributes>lt=&lt;.
-m1=0,1
+    <panel_attributes>lt=&lt;&lt;.
+m1= 0,1
+</panel_attributes>
+    <additional_attributes>120.0;50.0;60.0;50.0;60.0;10.0;10.0;10.0</additional_attributes>
+  </element>
+  <element>
+    <id>Relation</id>
+    <coordinates>
+      <x>406</x>
+      <y>770</y>
+      <w>98</w>
+      <h>56</h>
+    </coordinates>
+    <panel_attributes>lt=&lt;&lt;.
+m1= 0,1
 </panel_attributes>
-    <additional_attributes>110.0;10.0;40.0;10.0;40.0;70.0;10.0;70.0</additional_attributes>
+    <additional_attributes>120.0;10.0;40.0;10.0;40.0;60.0;10.0;60.0</additional_attributes>
   </element>
   <element>
     <id>UMLClass</id>
     <coordinates>
-      <x>684</x>
-      <y>225</y>
-      <w>144</w>
-      <h>72</h>
+      <x>70</x>
+      <y>770</y>
+      <w>133</w>
+      <h>84</h>
     </coordinates>
-    <panel_attributes>Arg
+    <panel_attributes>DataType
 --
-*@ name ; text*
-*@ type : DataType*
+/@ name : text/
+/@ unitOfMeasure : text/
 /- Doc : Doc/
+- TypeChoice
+/* Constraints : Constraint/
 fg=blue</panel_attributes>
     <additional_attributes/>
   </element>
   <element>
     <id>Relation</id>
     <coordinates>
-      <x>603</x>
-      <y>225</y>
-      <w>99</w>
-      <h>36</h>
+      <x>175</x>
+      <y>728</y>
+      <w>490</w>
+      <h>91</h>
     </coordinates>
-    <panel_attributes>lt=&lt;.
-m1=0..*</panel_attributes>
-    <additional_attributes>90.0;10.0;10.0;10.0</additional_attributes>
+    <panel_attributes>lt=&lt;&lt;.
+m2=1..*
+</panel_attributes>
+    <additional_attributes>10.0;60.0;10.0;20.0;680.0;20.0;680.0;100.0;640.0;100.0</additional_attributes>
+  </element>
+  <element>
+    <id>Relation</id>
+    <coordinates>
+      <x>175</x>
+      <y>728</y>
+      <w>490</w>
+      <h>133</h>
+    </coordinates>
+    <panel_attributes>lt=&lt;&lt;.
+m2=1
+</panel_attributes>
+    <additional_attributes>10.0;60.0;10.0;20.0;680.0;20.0;680.0;160.0;640.0;160.0</additional_attributes>
   </element>
   <element>
     <id>UMLClass</id>
     <coordinates>
-      <x>18</x>
-      <y>198</y>
-      <w>180</w>
-      <h>90</h>
+      <x>490</x>
+      <y>854</y>
+      <w>133</w>
+      <h>35</h>
     </coordinates>
-    <panel_attributes>Domain
+    <panel_attributes>SimpleType
 --
-*@ id : ID*
-/- imports/
-/- Modules : ModuleClass/
-/- RootDevices : RootDevice/
+*@ type : BasicType*
 fg=blue</panel_attributes>
     <additional_attributes/>
   </element>
   <element>
     <id>Relation</id>
     <coordinates>
-      <x>189</x>
-      <y>99</y>
-      <w>90</w>
-      <h>180</h>
+      <x>616</x>
+      <y>868</y>
+      <w>98</w>
+      <h>35</h>
     </coordinates>
-    <panel_attributes>lt=&lt;.
-m1= 0..*</panel_attributes>
-    <additional_attributes>80.0;10.0;30.0;10.0;30.0;180.0;10.0;180.0</additional_attributes>
+    <panel_attributes>lt=&lt;&lt;-
+m1= 1
+</panel_attributes>
+    <additional_attributes>120.0;20.0;10.0;20.0</additional_attributes>
   </element>
   <element>
     <id>UMLClass</id>
     <coordinates>
-      <x>261</x>
-      <y>486</y>
-      <w>171</w>
-      <h>90</h>
+      <x>490</x>
+      <y>910</y>
+      <w>133</w>
+      <h>70</h>
     </coordinates>
-    <panel_attributes>Device
+    <panel_attributes>Constraint
 --
-*@ id : Name*
+*@ name : text*
+/@ type : BasicType/
+/@ value : text/
 /- Doc : Doc/
-/- Modules : Module/
-/- DeviceInfo : DeviceInfo/
 fg=blue</panel_attributes>
     <additional_attributes/>
   </element>
   <element>
     <id>Relation</id>
     <coordinates>
-      <x>180</x>
-      <y>261</y>
-      <w>45</w>
-      <h>180</h>
+      <x>196</x>
+      <y>840</y>
+      <w>308</w>
+      <h>98</h>
     </coordinates>
     <panel_attributes>lt=&lt;.
 m1=0..*
 </panel_attributes>
-    <additional_attributes>10.0;180.0;10.0;140.0;30.0;140.0;30.0;10.0;20.0;10.0</additional_attributes>
+    <additional_attributes>420.0;110.0;340.0;110.0;340.0;10.0;10.0;10.0</additional_attributes>
+  </element>
+  <element>
+    <id>Relation</id>
+    <coordinates>
+      <x>616</x>
+      <y>910</y>
+      <w>147</w>
+      <h>56</h>
+    </coordinates>
+    <panel_attributes>lt=&lt;&lt;-
+m1=1
+</panel_attributes>
+    <additional_attributes>190.0;10.0;190.0;60.0;10.0;60.0</additional_attributes>
   </element>
   <element>
     <id>UMLClass</id>
     <coordinates>
-      <x>495</x>
-      <y>495</y>
-      <w>162</w>
-      <h>117</h>
+      <x>490</x>
+      <y>770</y>
+      <w>133</w>
+      <h>35</h>
     </coordinates>
-    <panel_attributes>DeviceInfo
+    <panel_attributes>StructType
 --
-*- name : text*
-*- vendor : text*
-/- serialNumber : text/
-/- vendorURL : URL/
-/- firmwareVersion : text/
-/- Doc : Doc/
+- DataType : DataType
+fg=blue</panel_attributes>
+    <additional_attributes/>
+  </element>
+  <element>
+    <id>UMLClass</id>
+    <coordinates>
+      <x>490</x>
+      <y>812</y>
+      <w>133</w>
+      <h>35</h>
+    </coordinates>
+    <panel_attributes>ArrayType
+--
+- DataType : DataType
 fg=blue</panel_attributes>
     <additional_attributes/>
   </element>
   <element>
     <id>Relation</id>
     <coordinates>
-      <x>423</x>
-      <y>495</y>
-      <w>90</w>
-      <h>81</h>
+      <x>406</x>
+      <y>805</y>
+      <w>98</w>
+      <h>35</h>
     </coordinates>
-    <panel_attributes>lt=&lt;.
-m1= 0,1</panel_attributes>
-    <additional_attributes>80.0;10.0;40.0;10.0;40.0;70.0;10.0;70.0</additional_attributes>
+    <panel_attributes>lt=&lt;&lt;.
+m1= 0,1
+
+</panel_attributes>
+    <additional_attributes>120.0;20.0;10.0;20.0</additional_attributes>
   </element>
   <element>
     <id>UMLClass</id>
     <coordinates>
-      <x>684</x>
-      <y>18</y>
-      <w>144</w>
-      <h>198</h>
+      <x>70</x>
+      <y>665</y>
+      <w>735</w>
+      <h>28</h>
     </coordinates>
-    <panel_attributes>&lt;&lt;Enumeration&gt;&gt;
-DataType
+    <panel_attributes>halign=center
+SDT 3.0 - DataType
+fontsize=24
+bg=gray
+lw=0.1</panel_attributes>
+    <additional_attributes/>
+  </element>
+  <element>
+    <id>UMLClass</id>
+    <coordinates>
+      <x>70</x>
+      <y>0</y>
+      <w>840</w>
+      <h>28</h>
+    </coordinates>
+    <panel_attributes>SDT 3.0 - Basic Elements
+halign=center
+fontsize=24
+bg=gray
+lw=0.1</panel_attributes>
+    <additional_attributes/>
+  </element>
+  <element>
+    <id>UMLClass</id>
+    <coordinates>
+      <x>308</x>
+      <y>119</y>
+      <w>154</w>
+      <h>133</h>
+    </coordinates>
+    <panel_attributes>ModuleClass
 --
-boolean
-byte
-integer
-float
-string
-enum
-date
-time
-datetime
-blob
-uri</panel_attributes>
+*@ name : text*
+/@ optional : boolean = false/
+/- Doc : Doc/
+/- extends/
+/   @domain : IDRF/
+/   @class : text /
+/* Property : Properties/
+/* Actions : Action/
+/* Data : DataPoint/
+/* Events : Event/
+fg=blue
+</panel_attributes>
     <additional_attributes/>
   </element>
   <element>
     <id>UMLClass</id>
     <coordinates>
-      <x>729</x>
-      <y>531</y>
-      <w>99</w>
-      <h>45</h>
+      <x>546</x>
+      <y>119</y>
+      <w>154</w>
+      <h>77</h>
     </coordinates>
-    <panel_attributes>Doc
+    <panel_attributes>Action
 --
-- ...
+*@ name : text*
+/@ optional : boolean = false/
+/- Doc : Doc/
+/- DataType : DataType/
+/* Args : Arg/
 fg=blue</panel_attributes>
     <additional_attributes/>
   </element>
   <element>
     <id>UMLClass</id>
     <coordinates>
-      <x>486</x>
-      <y>72</y>
-      <w>117</w>
-      <h>72</h>
+      <x>791</x>
+      <y>182</y>
+      <w>119</w>
+      <h>56</h>
     </coordinates>
-    <panel_attributes>&lt;&lt;Attributes&gt;&gt;
-Extends
+    <panel_attributes>Arg
 --
-@domain : IDRF
-@class : text
-</panel_attributes>
+*@ name ; text*
+/- Doc : Doc/
+- DataType : DataType
+fg=blue</panel_attributes>
     <additional_attributes/>
   </element>
   <element>
     <id>Relation</id>
     <coordinates>
-      <x>387</x>
-      <y>153</y>
-      <w>117</w>
-      <h>45</h>
+      <x>693</x>
+      <y>182</y>
+      <w>112</w>
+      <h>28</h>
     </coordinates>
     <panel_attributes>lt=&lt;.
-m1=0..*
-</panel_attributes>
-    <additional_attributes>110.0;20.0;10.0;20.0</additional_attributes>
+m1= 0..*</panel_attributes>
+    <additional_attributes>140.0;10.0;10.0;10.0</additional_attributes>
+  </element>
+  <element>
+    <id>UMLClass</id>
+    <coordinates>
+      <x>70</x>
+      <y>119</y>
+      <w>154</w>
+      <h>77</h>
+    </coordinates>
+    <panel_attributes>Domain
+--
+*@ id : ID*
+/- Doc : Doc/
+/* imports/
+/* Modules : ModuleClass/
+/* Devices : Device/
+fg=blue</panel_attributes>
+    <additional_attributes/>
   </element>
   <element>
     <id>Relation</id>
     <coordinates>
-      <x>603</x>
-      <y>27</y>
-      <w>99</w>
-      <h>198</h>
+      <x>217</x>
+      <y>119</y>
+      <w>105</w>
+      <h>63</h>
     </coordinates>
-    <panel_attributes>lt=&lt;&lt;-
-m1=0,1
-</panel_attributes>
-    <additional_attributes>90.0;10.0;40.0;10.0;40.0;200.0;10.0;200.0</additional_attributes>
+    <panel_attributes>lt=&lt;.
+m1= 0..*</panel_attributes>
+    <additional_attributes>130.0;10.0;50.0;10.0;50.0;70.0;10.0;70.0</additional_attributes>
+  </element>
+  <element>
+    <id>UMLClass</id>
+    <coordinates>
+      <x>70</x>
+      <y>301</y>
+      <w>154</w>
+      <h>70</h>
+    </coordinates>
+    <panel_attributes>SubDevice
+--
+*@ id : Name*
+/- Doc : Doc/
+/* Property : Properties/
+/* Modules : Module/
+fg=blue</panel_attributes>
+    <additional_attributes/>
   </element>
   <element>
     <id>Relation</id>
     <coordinates>
-      <x>666</x>
-      <y>522</y>
-      <w>81</w>
-      <h>45</h>
+      <x>217</x>
+      <y>175</y>
+      <w>49</w>
+      <h>63</h>
     </coordinates>
     <panel_attributes>lt=&lt;.
 m1=0..*
 </panel_attributes>
-    <additional_attributes>70.0;20.0;10.0;20.0</additional_attributes>
+    <additional_attributes>10.0;60.0;50.0;60.0;50.0;10.0;10.0;10.0</additional_attributes>
   </element>
   <element>
     <id>Relation</id>
     <coordinates>
-      <x>819</x>
-      <y>90</y>
-      <w>45</w>
-      <h>198</h>
+      <x>217</x>
+      <y>308</y>
+      <w>105</w>
+      <h>49</h>
     </coordinates>
-    <panel_attributes>lt=&lt;&lt;-
-m1= 1
-</panel_attributes>
-    <additional_attributes>10.0;10.0;30.0;10.0;30.0;200.0;10.0;200.0</additional_attributes>
+    <panel_attributes>lt=&lt;.
+m1= 0..*</panel_attributes>
+    <additional_attributes>130.0;10.0;60.0;10.0;60.0;50.0;10.0;50.0</additional_attributes>
   </element>
   <element>
     <id>UMLClass</id>
     <coordinates>
-      <x>486</x>
-      <y>297</y>
-      <w>153</w>
-      <h>45</h>
+      <x>791</x>
+      <y>350</y>
+      <w>119</w>
+      <h>35</h>
     </coordinates>
-    <panel_attributes>Data
+    <panel_attributes>Doc
 --
-/- dataPoint : DataPoint/
 fg=blue</panel_attributes>
     <additional_attributes/>
   </element>
   <element>
     <id>Relation</id>
     <coordinates>
-      <x>387</x>
-      <y>180</y>
-      <w>117</w>
-      <h>153</h>
+      <x>455</x>
+      <y>119</y>
+      <w>105</w>
+      <h>42</h>
+    </coordinates>
+    <panel_attributes>lt=&lt;.
+m1= 0..*
+</panel_attributes>
+    <additional_attributes>130.0;10.0;50.0;10.0;50.0;40.0;10.0;40.0</additional_attributes>
+  </element>
+  <element>
+    <id>Relation</id>
+    <coordinates>
+      <x>735</x>
+      <y>343</y>
+      <w>70</w>
+      <h>35</h>
     </coordinates>
     <panel_attributes>lt=&lt;.
 m1=0,1
 </panel_attributes>
-    <additional_attributes>110.0;140.0;50.0;140.0;50.0;10.0;10.0;10.0</additional_attributes>
+    <additional_attributes>80.0;20.0;10.0;20.0</additional_attributes>
   </element>
   <element>
     <id>Relation</id>
     <coordinates>
-      <x>630</x>
-      <y>306</y>
-      <w>72</w>
-      <h>45</h>
+      <x>455</x>
+      <y>154</y>
+      <w>105</w>
+      <h>84</h>
     </coordinates>
     <panel_attributes>lt=&lt;.
-m1=0..*
+m1= 0..*
 </panel_attributes>
-    <additional_attributes>60.0;20.0;10.0;20.0</additional_attributes>
+    <additional_attributes>130.0;90.0;50.0;90.0;50.0;10.0;10.0;10.0</additional_attributes>
   </element>
   <element>
     <id>UMLClass</id>
     <coordinates>
-      <x>684</x>
-      <y>315</y>
-      <w>144</w>
-      <h>117</h>
+      <x>546</x>
+      <y>210</y>
+      <w>154</w>
+      <h>98</h>
     </coordinates>
     <panel_attributes>DataPoint
 --
 *@ name : text*
-@ type : DataType
-/@ writable : boolean/
-/@ readable : boolean/
-/@ eventable : boolean/
+/@ optional : boolean = false/
+/@ writable : boolean = true/
+/@ readable : boolean = true/
+/@ eventable : boolean = false/
 /- Doc : Doc/
+- DataType : DataType
+
 fg=blue
 </panel_attributes>
     <additional_attributes/>
@@ -338,39 +513,41 @@ fg=blue
   <element>
     <id>UMLClass</id>
     <coordinates>
-      <x>495</x>
-      <y>414</y>
-      <w>144</w>
-      <h>72</h>
+      <x>546</x>
+      <y>322</y>
+      <w>154</w>
+      <h>63</h>
     </coordinates>
     <panel_attributes>Event
 --
 *@ name : text*
-- data : Data
+/@ optional : boolean = false/
 /- Doc : Doc/
+/* Data : DataPoint/
+
 fg=blue</panel_attributes>
     <additional_attributes/>
   </element>
   <element>
     <id>Relation</id>
     <coordinates>
-      <x>387</x>
-      <y>189</y>
-      <w>126</w>
-      <h>261</h>
+      <x>455</x>
+      <y>224</y>
+      <w>105</w>
+      <h>126</h>
     </coordinates>
     <panel_attributes>lt=&lt;.
-m1=0..*
+m1= 0..*
 </panel_attributes>
-    <additional_attributes>120.0;260.0;30.0;260.0;30.0;10.0;10.0;10.0</additional_attributes>
+    <additional_attributes>130.0;150.0;80.0;150.0;80.0;10.0;10.0;10.0</additional_attributes>
   </element>
   <element>
     <id>UMLClass</id>
     <coordinates>
-      <x>261</x>
-      <y>441</y>
-      <w>135</w>
-      <h>27</h>
+      <x>308</x>
+      <y>273</y>
+      <w>154</w>
+      <h>21</h>
     </coordinates>
     <panel_attributes>Module
 fg=blue</panel_attributes>
@@ -379,156 +556,156 @@ fg=blue</panel_attributes>
   <element>
     <id>Relation</id>
     <coordinates>
-      <x>387</x>
-      <y>441</y>
-      <w>72</w>
-      <h>117</h>
+      <x>217</x>
+      <y>273</y>
+      <w>105</w>
+      <h>98</h>
     </coordinates>
     <panel_attributes>lt=&lt;.
-m1=0..*
+
 </panel_attributes>
-    <additional_attributes>10.0;10.0;60.0;10.0;60.0;110.0;50.0;110.0</additional_attributes>
+    <additional_attributes>130.0;10.0;80.0;10.0;80.0;120.0;10.0;120.0</additional_attributes>
   </element>
   <element>
     <id>Relation</id>
     <coordinates>
-      <x>306</x>
-      <y>207</y>
-      <w>27</w>
-      <h>252</h>
+      <x>371</x>
+      <y>245</y>
+      <w>21</w>
+      <h>42</h>
     </coordinates>
     <panel_attributes>lt=&lt;&lt;-
 </panel_attributes>
-    <additional_attributes>10.0;10.0;10.0;260.0</additional_attributes>
+    <additional_attributes>10.0;10.0;10.0;40.0</additional_attributes>
   </element>
   <element>
-    <id>Relation</id>
+    <id>UMLClass</id>
     <coordinates>
-      <x>549</x>
-      <y>333</y>
-      <w>126</w>
-      <h>144</h>
+      <x>70</x>
+      <y>210</y>
+      <w>154</w>
+      <h>77</h>
     </coordinates>
-    <panel_attributes>lt=&lt;.
-m1=1
-</panel_attributes>
-    <additional_attributes>10.0;10.0;10.0;70.0;120.0;70.0;120.0;140.0;100.0;140.0</additional_attributes>
+    <panel_attributes>Device
+--
+*@ id : Name*
+/- Doc : Doc/
+/* Property : Properties/
+/* Modules : Module/
+/* SubDevices : SubDevice/
+fg=blue</panel_attributes>
+    <additional_attributes/>
   </element>
   <element>
     <id>Relation</id>
     <coordinates>
-      <x>819</x>
-      <y>27</y>
-      <w>63</w>
-      <h>351</h>
+      <x>217</x>
+      <y>273</y>
+      <w>49</w>
+      <h>56</h>
     </coordinates>
-    <panel_attributes>lt=&lt;&lt;-
-m1=1
+    <panel_attributes>lt=&lt;.
+m1=0..*
 </panel_attributes>
-    <additional_attributes>10.0;10.0;50.0;10.0;50.0;370.0;10.0;370.0</additional_attributes>
+    <additional_attributes>10.0;50.0;40.0;50.0;40.0;10.0;10.0;10.0</additional_attributes>
   </element>
   <element>
-    <id>UMLClass</id>
+    <id>Relation</id>
     <coordinates>
-      <x>27</x>
-      <y>423</y>
-      <w>171</w>
-      <h>99</h>
+      <x>217</x>
+      <y>245</y>
+      <w>105</w>
+      <h>56</h>
     </coordinates>
-    <panel_attributes>RootDevice
---
-*@ id : Name*
-/- Doc : Doc/
-/- Modules : Module/
-/- Devices : Device/
-/- DeviceInfo : DeviceInfo/
-fg=blue</panel_attributes>
-    <additional_attributes/>
+    <panel_attributes>lt=&lt;.
+m1= 0..*
+</panel_attributes>
+    <additional_attributes>130.0;50.0;80.0;50.0;80.0;10.0;10.0;10.0</additional_attributes>
   </element>
   <element>
     <id>Relation</id>
     <coordinates>
-      <x>189</x>
-      <y>477</y>
-      <w>90</w>
-      <h>45</h>
+      <x>217</x>
+      <y>259</y>
+      <w>105</w>
+      <h>70</h>
     </coordinates>
-    <panel_attributes>lt=&lt;.
-m1=0..*
-</panel_attributes>
-    <additional_attributes>80.0;20.0;10.0;20.0</additional_attributes>
+    <panel_attributes>lt=&lt;.</panel_attributes>
+    <additional_attributes>130.0;80.0;60.0;80.0;60.0;10.0;10.0;10.0</additional_attributes>
   </element>
   <element>
-    <id>UMLNote</id>
+    <id>UMLClass</id>
     <coordinates>
-      <x>18</x>
-      <y>18</y>
-      <w>180</w>
-      <h>126</h>
+      <x>308</x>
+      <y>308</y>
+      <w>154</w>
+      <h>77</h>
     </coordinates>
-    <panel_attributes>bg=#FAF8C8
-fontsize=10
-@elementAttribute
-*@mandatoryElementAttribute*
-- element
-- element : Subclass
-/- optionalElement (0/1)/
-/* optionalElement (0/n)/
-
-"Depends" Relation
-
-Subclassing</panel_attributes>
+    <panel_attributes>Property
+--
+*@ name : text*
+/@ optional : boolean = false/
+/@ value : text/
+/- Doc : Doc/
+- DataType : SimpleType
+fg=blue
+transparency=80</panel_attributes>
     <additional_attributes/>
   </element>
   <element>
     <id>Relation</id>
     <coordinates>
-      <x>108</x>
-      <y>81</y>
-      <w>90</w>
-      <h>36</h>
+      <x>693</x>
+      <y>210</y>
+      <w>56</w>
+      <h>147</h>
     </coordinates>
     <panel_attributes>lt=&lt;.
-fontsize=10
 m1=0..*
 </panel_attributes>
-    <additional_attributes>80.0;20.0;10.0;20.0</additional_attributes>
+    <additional_attributes>10.0;10.0;60.0;10.0;60.0;190.0;10.0;190.0</additional_attributes>
   </element>
   <element>
     <id>Relation</id>
     <coordinates>
-      <x>108</x>
-      <y>117</y>
-      <w>99</w>
-      <h>27</h>
+      <x>455</x>
+      <y>238</y>
+      <w>49</w>
+      <h>98</h>
     </coordinates>
-    <panel_attributes>lt=&lt;&lt;-
-fontsize=10</panel_attributes>
-    <additional_attributes>90.0;10.0;10.0;10.0</additional_attributes>
+    <panel_attributes>lt=&lt;.
+m1=0..*</panel_attributes>
+    <additional_attributes>10.0;110.0;50.0;110.0;50.0;10.0;10.0;10.0</additional_attributes>
   </element>
   <element>
-    <id>Relation</id>
+    <id>UMLClass</id>
     <coordinates>
-      <x>189</x>
-      <y>441</y>
-      <w>90</w>
-      <h>54</h>
+      <x>280</x>
+      <y>770</y>
+      <w>133</w>
+      <h>70</h>
     </coordinates>
-    <panel_attributes>lt=&lt;.
-m1=0..*
+    <panel_attributes>&lt;&lt;enumeration&gt;&gt;
+TypeChoice
+--
+SimpleType : SimpleType
+Struct : StructType
+Array : ArrayType 
+
 </panel_attributes>
-    <additional_attributes>80.0;10.0;30.0;10.0;30.0;40.0;10.0;40.0</additional_attributes>
+    <additional_attributes/>
   </element>
   <element>
     <id>Relation</id>
     <coordinates>
-      <x>189</x>
-      <y>495</y>
-      <w>324</w>
-      <h>117</h>
+      <x>196</x>
+      <y>777</y>
+      <w>98</w>
+      <h>63</h>
     </coordinates>
-    <panel_attributes>lt=&lt;.
+    <panel_attributes>lt=&lt;&lt;-
+m1= 1
 </panel_attributes>
-    <additional_attributes>340.0;10.0;300.0;10.0;300.0;110.0;30.0;110.0;30.0;20.0;10.0;20.0</additional_attributes>
+    <additional_attributes>120.0;10.0;80.0;10.0;80.0;70.0;10.0;70.0</additional_attributes>
   </element>
 </diagram>
diff --git a/SDT/schema3.0/docs/UML Diagram.md b/SDT/schema3.0/docs/UML Diagram.md
new file mode 100644
index 0000000000000000000000000000000000000000..4d2f4b7183142e2fb14ee92c751bad21724d6fdd
--- /dev/null
+++ b/SDT/schema3.0/docs/UML Diagram.md	
@@ -0,0 +1,16 @@
+# UML Diagram of the SDT 3.0
+
+The source for the diagrams below is [here](SDT_UML.uxf).
+## Basic Elements
+
+![](images/SDT_UML_Basic_Elements.png)
+
+## Data Types
+
+![](images/SDT_UML_DataType.png)
+
+## Key
+
+![](images/SDT_UML_Key.png)
+
+##
\ No newline at end of file
diff --git a/SDT/schema3.0/docs/images/SDT_UML_Basic_Elements.png b/SDT/schema3.0/docs/images/SDT_UML_Basic_Elements.png
new file mode 100644
index 0000000000000000000000000000000000000000..2f789edefc9d4f2cd014f41ef6a5c3e8234f62e8
Binary files /dev/null and b/SDT/schema3.0/docs/images/SDT_UML_Basic_Elements.png differ
diff --git a/SDT/schema3.0/docs/images/SDT_UML_DataType.png b/SDT/schema3.0/docs/images/SDT_UML_DataType.png
new file mode 100644
index 0000000000000000000000000000000000000000..3b6a4016b5f3de1a2f8717b8f04f8d6f5a5ee327
Binary files /dev/null and b/SDT/schema3.0/docs/images/SDT_UML_DataType.png differ
diff --git a/SDT/schema3.0/docs/images/SDT_UML_Key.png b/SDT/schema3.0/docs/images/SDT_UML_Key.png
new file mode 100644
index 0000000000000000000000000000000000000000..88b15e3a83759d499bb639b6bd38d11f70dcc0fe
Binary files /dev/null and b/SDT/schema3.0/docs/images/SDT_UML_Key.png differ