diff --git a/proposals/README.md b/proposals/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..770247dc8a7377044e632864be8197ee7fb85d6e
--- /dev/null
+++ b/proposals/README.md
@@ -0,0 +1 @@
+This directory contains all contributions for changes to RWD050.
diff --git a/src/domain.rng b/src/domain.rng
new file mode 100644
index 0000000000000000000000000000000000000000..0b2d368393b378bc3d22e6c6efcf4c7f9d6aca2e
--- /dev/null
+++ b/src/domain.rng
@@ -0,0 +1,208 @@
+<grammar xmlns="http://relaxng.org/ns/structure/1.0"
+	 datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+  
+
+  <start>
+    <ref name="Domain"/>
+  </start>
+
+  <define name="Imports">
+    <optional>
+      <element name="Imports">
+	<zeroOrMore>
+	  <ref name="Domain"/>
+	</zeroOrMore>
+      </element>
+    </optional>
+  </define>
+
+  <define name="Domain">
+    <element name="Domain">
+      <optional>
+
+	<!-- still having some problems with included documents ... 
+	     the included document is given the attribute xml:base ...
+	     but my schema does not permit this ... 
+	     
+	     This almost generates the correct schema ... but it
+	     doesn't have the correct schemaLocation
+
+	<attribute ns="http://www.w3.org/XML/1998/namespace" name="base">		  <data type="anyURI"/>
+	</attribute>
+	-->
+	<attribute name="xml:base">
+	  <data type="anyURI"/>
+	</attribute>
+
+      </optional>
+      <attribute name="id">
+	<data type="ID"/>
+      </attribute>
+      <ref name="Imports"/>
+      <optional>
+	<element name="Modules">
+	  <zeroOrMore>
+	    <element name="ModuleClass">
+	      <ref name="ModuleDef"/>
+	    </element>
+	  </zeroOrMore>
+	</element>
+      </optional>
+      <optional>
+	<element name="Devices">
+	  <zeroOrMore>
+	    <element name="Device">
+	      <attribute name="id">
+		<data type="Name"/>
+	      </attribute>
+	      <element name="DeviceInfo">
+		<interleave>
+		  <element name="Name">
+		    <text/>
+		  </element>
+		  <element name="Vendor">
+		    <text/>
+		  </element>
+		</interleave>
+	      </element>
+	      <ref name="Doc"/>
+	      <optional>
+		<ref name="Modules"/>
+	      </optional>
+	    </element>
+	  </zeroOrMore>
+	</element>
+      </optional>
+    </element>
+  </define>
+
+  <define name="DataType">
+    <choice>
+      <value>integer</value>
+      <value>boolean</value>
+      <value>string</value>
+    </choice>
+  </define>
+
+  <define name="DocText">
+    <zeroOrMore>
+      <choice>
+	<text/>
+	<element name="em">
+	  <text/>
+	</element>
+	<element name="b">
+	  <text/>
+	</element>
+	<element name="tt">
+	  <text/>
+	</element>
+      </choice>
+    </zeroOrMore>
+  </define>
+
+  <define name="Doc">
+    <optional>
+      <element name="Doc">
+	<choice>
+	  <ref name="DocText"/>
+	  <zeroOrMore>
+	    <choice>
+	      <element name="p">
+		<ref name="DocText"/>
+	      </element>
+	      <element name="img">
+		<attribute name="src"/>
+		<element name="caption">
+		  <text/>
+		</element>
+	      </element>
+	    </choice>
+	  </zeroOrMore>
+	</choice>
+      </element>
+    </optional>
+  </define>
+
+  <define name="ModuleDef">
+    <attribute name="name">
+      <text/>
+    </attribute>
+    <optional>
+      <element name="extends">
+	<attribute name="domain">
+	  <data type="IDREF"/>
+	</attribute>
+	<attribute name="class"/>
+      </element>
+    </optional>
+    <ref name="Doc"/>
+    <optional>
+      <ref name="Actions"/>
+    </optional>
+    <optional>
+      <ref name="Events"/>
+    </optional>
+  </define>
+
+  <define name="Modules">
+    <element name="Modules">
+      <zeroOrMore>
+	<element name="Module">
+	  <ref name="ModuleDef"/>
+	</element>
+      </zeroOrMore>
+    </element>
+  </define>
+
+  <define name="Actions">
+    <element name="Actions">
+      <zeroOrMore>
+	<element name="Action">
+	  <attribute name="name">
+	    <text/>
+	  </attribute>
+	  <optional>
+	    <attribute name="type">
+	      <ref name="DataType"/>
+	    </attribute>
+	  </optional>
+	  <ref name="Doc"/>
+	  <zeroOrMore>
+	    <element name="Arg">
+	      <attribute name="name"/>
+	      <attribute name="type">
+		<ref name="DataType"/>
+	      </attribute>
+	      <ref name="Doc"/>
+	    </element>
+	  </zeroOrMore>
+	</element>
+      </zeroOrMore>
+    </element>
+  </define>
+
+  <define name="Events">
+    <element name="Events">
+      <zeroOrMore>
+	<element name="Event">
+	  <attribute name="name">
+	    <text/>
+	  </attribute>
+	</element>
+      </zeroOrMore>
+    </element>
+  </define>
+
+  <!-- -->
+
+  
+
+  <!-- -->
+
+
+
+
+
+</grammar>
+
diff --git a/src/domain.xsd b/src/domain.xsd
new file mode 100644
index 0000000000000000000000000000000000000000..f6f2a8f164feb540410c0d74b3b4bb651e3672d2
--- /dev/null
+++ b/src/domain.xsd
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="http://hgi.org/xml/dal/1.0" 
+	   xmlns="http://hgi.org/xml/dal/1.0" 
+	   xmlns:xs="http://www.w3.org/2001/XMLSchema" 
+	   elementFormDefault="qualified">
+  <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/03/xml.xsd"/>
+  <xs:group name="Imports">
+    <xs:sequence>
+      <xs:element minOccurs="0" ref="Imports"/>
+    </xs:sequence>
+  </xs:group>
+  <xs:element name="Imports">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Domain"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Domain">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:group ref="Imports"/>
+        <xs:element minOccurs="0" name="Modules">
+          <xs:complexType>
+            <xs:sequence>
+              <xs:element minOccurs="0" maxOccurs="unbounded" ref="ModuleClass"/>
+            </xs:sequence>
+          </xs:complexType>
+        </xs:element>
+        <xs:element minOccurs="0" ref="Devices"/>
+      </xs:sequence>
+      <xs:attribute ref="xml:base"/>
+      <xs:attribute name="id" use="required" type="xs:ID"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="ModuleClass" type="ModuleDef"/>
+  <xs:element name="Devices">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Device"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Device">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="DeviceInfo"/>
+        <xs:group ref="Doc"/>
+        <xs:element minOccurs="0" ref="Modules"/>
+      </xs:sequence>
+      <xs:attribute name="id" use="required" type="xs:Name"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="DeviceInfo">
+    <xs:complexType>
+      <xs:all>
+        <xs:element ref="Name"/>
+        <xs:element ref="Vendor"/>
+      </xs:all>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Name" type="xs:string"/>
+  <xs:element name="Vendor" type="xs:string"/>
+  <xs:simpleType name="DataType">
+    <xs:restriction base="xs:token">
+      <xs:enumeration value="integer"/>
+      <xs:enumeration value="boolean"/>
+      <xs:enumeration value="string"/>
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:group name="DocText">
+    <xs:sequence>
+      <xs:choice minOccurs="0" maxOccurs="unbounded">
+        <xs:element ref="em"/>
+        <xs:element ref="b"/>
+        <xs:element ref="tt"/>
+      </xs:choice>
+    </xs:sequence>
+  </xs:group>
+  <xs:element name="em" type="xs:string"/>
+  <xs:element name="b" type="xs:string"/>
+  <xs:element name="tt" type="xs:string"/>
+  <xs:group name="Doc">
+    <xs:sequence>
+      <xs:element minOccurs="0" ref="Doc"/>
+    </xs:sequence>
+  </xs:group>
+  <xs:element name="Doc">
+    <xs:complexType mixed="true">
+      <xs:choice>
+        <xs:group ref="DocText"/>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="p"/>
+          <xs:element ref="img"/>
+        </xs:choice>
+      </xs:choice>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="p">
+    <xs:complexType mixed="true">
+      <xs:group ref="DocText"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="img">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element ref="caption"/>
+      </xs:sequence>
+      <xs:attribute name="src" use="required"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="caption" type="xs:string"/>
+  <xs:complexType name="ModuleDef">
+    <xs:sequence>
+      <xs:element minOccurs="0" ref="extends"/>
+      <xs:group ref="Doc"/>
+      <xs:element minOccurs="0" ref="Actions"/>
+      <xs:element minOccurs="0" ref="Events"/>
+    </xs:sequence>
+    <xs:attribute name="name" use="required"/>
+  </xs:complexType>
+  <xs:element name="extends">
+    <xs:complexType>
+      <xs:attribute name="domain" use="required" type="xs:IDREF"/>
+      <xs:attribute name="class" use="required"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Modules">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Module"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Module" type="ModuleDef"/>
+  <xs:element name="Actions">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Action"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Action">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:group ref="Doc"/>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Arg"/>
+      </xs:sequence>
+      <xs:attribute name="name" use="required"/>
+      <xs:attribute name="type" type="DataType"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Arg">
+    <xs:complexType>
+      <xs:group ref="Doc"/>
+      <xs:attribute name="name" use="required"/>
+      <xs:attribute name="type" use="required" type="DataType"/>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Events">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Event"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:element name="Event">
+    <xs:complexType>
+      <xs:attribute name="name" use="required"/>
+    </xs:complexType>
+  </xs:element>
+  <!---->
+  <!---->
+</xs:schema>
diff --git a/src/xml.xsd b/src/xml.xsd
new file mode 100644
index 0000000000000000000000000000000000000000..d60043f94c9aba9e189a37fcb30ebdfe83ccd71b
--- /dev/null
+++ b/src/xml.xsd
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.w3.org/XML/1998/namespace">
+  <xs:import schemaLocation="domain.xsd"/>
+  <xs:attribute name="base" type="xs:anyURI"/>
+</xs:schema>