Index: /ruby/trunk/lib/models/rm.rb
===================================================================
--- /ruby/trunk/lib/models/rm.rb	(revision 109)
+++ /ruby/trunk/lib/models/rm.rb	(revision 110)
@@ -17,4 +17,5 @@
       autoload :Archetyped, "rm/common/archetyped.rb"
       autoload :Generic, "rm/common/generic.rb"
+      autoload :Directory, "rm/common/directory.rb"
     end
 
Index: /ruby/trunk/lib/models/rm/common/archetyped.rb
===================================================================
--- /ruby/trunk/lib/models/rm/common/archetyped.rb	(revision 109)
+++ /ruby/trunk/lib/models/rm/common/archetyped.rb	(revision 110)
@@ -38,24 +38,29 @@
         class Locatable < Pathable
           include Locater_Constants
-          attr_accessor :uid, :archetype_node_id, :archetype_details
-          attr_accessor :feeder_audit, :links, :parent
-          def initialize(uid, archetype_node_id, name, archetype_details,
-                         feeder_audit, links, parent)
+          attr_reader :archetype_node_id, :name, :links
+          attr_accessor :uid, :archetype_details, :feeder_audit
+          def initialize(archetype_node_id, name, links, parent=nil, uid=nil, archetype_details=nil, feeder_audit=nil)
             super(parent)
-            if archetype_node_id.nil?
-              raise ArgumentError, "null archetype_node_id"
-            end
-            if name.nil?
-              raise ArgumentError, "name is empty"
-            end
-            if links.nil?
-              raise ArgumentError, "links is empty"
-            end
-            @uid = uid
+            self.archetype_node_id = archetype_node_id
+            self.name = name
+            self.links = links
+            self.uid = uid
+            self.archetype_details = archetype_details
+            self.feeder_audit = feeder_audit
+            self.parent = parent
+          end
+          
+          def archetype_node_id=(archetype_node_id)
+            raise ArgumentError, 'archetype_node_id should not be nil' if archetype_node_id.nil?
             @archetype_node_id = archetype_node_id
-            @archetype_details = archetype_details
-            @feeder_audit = feeder_audit
+          end
+
+          def name=(name)
+            raise ArgumentError, 'name should not be empty' if name.nil? or name.empty?
+            @name = name
+          end
+          def links=(links)
+            raise ArgumentError, "links shoud not be nil" if links.nil?
             @links = links
-            @parent = parent
           end
           def item_at_path(path)
@@ -88,5 +93,5 @@
             self.archetype_id = archetype_id
             self.rm_version = rm_version
-            @template_id = template_id
+            self.template_id = template_id
           end
           def archetype_id=(archetype_id)
@@ -119,7 +124,7 @@
             @type = type
           end
-        end
-      end # end of Archetyped
-    end # end of Common
-  end # end of RM
-end # end of OpenEHR
+        end # of Link
+      end # of Archetyped
+    end # of Common
+  end # of RM
+end # OpenEHR
Index: /ruby/trunk/lib/models/rm/common/direcotory.rb.rb
===================================================================
--- /ruby/trunk/lib/models/rm/common/direcotory.rb.rb	(revision 110)
+++ /ruby/trunk/lib/models/rm/common/direcotory.rb.rb	(revision 110)
@@ -0,0 +1,18 @@
+# This module is based on the UML,
+# http://www.openehr.org/uml/release-1.0.1/Browsable/_9_5_1_76d0249_1140536622627_218703_7149Report.html
+# Ticket refs #63
+module OpenEHR
+  module RM
+    module Common
+      module Directory
+        class Folder < OpenEHR::RM::Archetyped::Locatable
+          attr_reader :items
+          def initialize(archetype_node_id, name, links, parent=nil, items=nil, uid = nil)
+            super(archetype_node_id, name, links)
+            
+          end
+        end
+      end      
+    end
+  end
+end
Index: /ruby/trunk/lib/models/tests/test_reference_model.rb
===================================================================
--- /ruby/trunk/lib/models/tests/test_reference_model.rb	(revision 109)
+++ /ruby/trunk/lib/models/tests/test_reference_model.rb	(revision 110)
@@ -509,2 +509,18 @@
   end
 end
+
+class RM_Common_Directory_Test < Test::Unit::TestCase
+  def setup
+    dv_text = OpenEHR::RM::Data_Types::Text::DV_Text.new('root')
+    assert_nothing_raised(Exception){@folder = OpenEHR::RM::Common::Directory::Folder.new('at0000', dv_text)}
+  end
+  
+  def test_init
+    assert_instance_of OpenEHR::RM::Common::Directory::Folder, @folder
+  end
+
+  def test_folder
+    assert_equal 'root', @folder.archetype_node_id
+    assert_equal 'name', @folder.name.value
+  end
+end  
