diff -x '*~' -u -r -x 'unxlng*' configmgr/source/data/types.cxx configmgr/source/data/types.cxx
--- configmgr/source/data/types.cxx	2006-09-22 15:40:14.000000000 +0100
+++ configmgr/source/data/types.cxx	2006-09-29 15:38:45.000000000 +0100
@@ -88,13 +88,6 @@
 }
 
 //-----------------------------------------------------------------------------	
-
-NameChar const * accessName(memory::Accessor const& _anAccessor, Name _aName)
-{
-	return _aName->buffer;
-}
-
-//-----------------------------------------------------------------------------	
 //-----------------------------------------------------------------------------	
 
 String allocString(Allocator const& _anAllocator, rtl::OUString const & _sString)
@@ -115,12 +108,6 @@
 	return readName(_anAccessor, _aString);
 }
 //-----------------------------------------------------------------------------	
-
-StringChar const * accessString(Accessor const& _anAccessor, String _aString)
-{
-	return accessName(_anAccessor, _aString);
-}
-//-----------------------------------------------------------------------------	
     }
 //-----------------------------------------------------------------------------	
 } // namespace
diff -x '*~' -u -r -x 'unxlng*' configmgr/source/inc/node.hxx configmgr/source/inc/node.hxx
--- configmgr/source/inc/node.hxx	2005-09-08 04:50:55.000000000 +0100
+++ configmgr/source/inc/node.hxx	2006-09-29 15:23:13.000000000 +0100
@@ -114,13 +114,15 @@
 
             // low-level helper for template data abstraction
             static
-            Address allocTemplateData(memory::Allocator const & _anAllocator, NameChar const * pName, NameChar const * pModule);
+            Address allocTemplateData(memory::Allocator const & _anAllocator,
+									  const rtl::OUString &rName,
+									  const rtl::OUString &rModule);
+            static 
+			Address copyTemplateData(memory::Allocator const & _anAllocator,
+									 memory::Accessor  const & _aSourceAccessor,
+									 Address _aTemplateData);
             static
             void releaseTemplateData(memory::Allocator const & _anAllocator, Address _aTemplateData);
-            static
-            NameChar const * getTemplateDataName(memory::Accessor const & _anAccessor, Address _aTemplateData);
-            static
-            NameChar const * getTemplateDataModule(memory::Accessor const & _anAccessor, Address _aTemplateData);
         };
     //-----------------------------------------------------------------------------
         struct ValueNode
diff -x '*~' -u -r -x 'unxlng*' configmgr/source/inc/types.hxx configmgr/source/inc/types.hxx
--- configmgr/source/inc/types.hxx	2006-09-22 15:40:14.000000000 +0100
+++ configmgr/source/inc/types.hxx	2006-09-29 15:39:41.000000000 +0100
@@ -75,20 +75,15 @@
 
     //-----------------------------------------------------------------------------
 
-        // for now Name == String
-        typedef sal_Unicode NameChar;
         Name allocName(memory::Allocator const& _anAllocator, ::rtl::OUString const & _sString);
         void freeName(memory::Allocator const& _anAllocator, Name _aName);
         ::rtl::OUString readName(memory::Accessor const& _anAccessor, Name _aName);
-        NameChar const * accessName(memory::Accessor const& _anAccessor, Name _aName);
 
     //-----------------------------------------------------------------------------
 
-        typedef sal_Unicode StringChar;
         String allocString(memory::Allocator const& _anAllocator, ::rtl::OUString const & _sString);
         void   freeString(memory::Allocator const& _anAllocator, String _aString);
         ::rtl::OUString readString(memory::Accessor const& _anAccessor, String _aString);
-        StringChar const * accessString(memory::Accessor const& _anAccessor, String _aString);
 
     //-----------------------------------------------------------------------------
     }
diff -x '*~' -u -r -x 'unxlng*' configmgr/source/tree/builddata.cxx configmgr/source/tree/builddata.cxx
--- configmgr/source/tree/builddata.cxx	2006-06-20 00:29:08.000000000 +0100
+++ configmgr/source/tree/builddata.cxx	2006-09-29 15:20:10.000000000 +0100
@@ -811,10 +811,7 @@
         
 Address CopyingDataTreeBuilder::makeTemplateData(Accessor const & _aSourceAccessor, Address _aSourceTemplate)
 {
-    NameChar const * pTemplateName      = SetNode::getTemplateDataName(_aSourceAccessor,_aSourceTemplate);
-    NameChar const * pTemplateModule    = SetNode::getTemplateDataModule(_aSourceAccessor,_aSourceTemplate);
-
-    return SetNode::allocTemplateData(allocator(), pTemplateName, pTemplateModule );
+    return SetNode::copyTemplateData(allocator(), _aSourceAccessor, _aSourceTemplate);
 }
 //-----------------------------------------------------------------------------
 
@@ -1004,10 +1001,7 @@
 
 Address ConvertingDataTreeBuilder::makeTemplateData(rtl::OUString const & _aTemplateName, rtl::OUString const & _aTemplateModule)
 {
-    NameChar const * pTemplateName      = _aTemplateName.getStr();
-    NameChar const * pTemplateModule    = _aTemplateModule.getStr();
-
-    return SetNode::allocTemplateData(allocator(), pTemplateName, pTemplateModule );
+    return SetNode::allocTemplateData(allocator(), _aTemplateName, _aTemplateModule );
 }
 //-----------------------------------------------------------------------------
 
diff -x '*~' -u -r -x 'unxlng*' configmgr/source/tree/node.cxx configmgr/source/tree/node.cxx
--- configmgr/source/tree/node.cxx	2006-09-22 15:40:14.000000000 +0100
+++ configmgr/source/tree/node.cxx	2006-09-29 15:37:33.000000000 +0100
@@ -235,10 +235,10 @@
 }
 //-----------------------------------------------------------------------------
 
-Address SetNode::allocTemplateData(memory::Allocator const & _anAllocator, NameChar const * pName, NameChar const * pModule)
+Address SetNode::allocTemplateData(memory::Allocator const & _anAllocator,
+								   const rtl::OUString &rName,
+								   const rtl::OUString &rModule)
 {
-    rtl::OUString aName(pName), aModule(pModule);
-
     Address aData = _anAllocator.allocate(sizeof(SetNodeTemplateData));
 
     if (aData)
@@ -247,11 +247,24 @@
 
         OSL_ENSURE(pData, "Creating template data: unexpected NULL data");
     
-        pData->name     = allocName(_anAllocator,aName);
-        pData->module   = allocName(_anAllocator,aModule);
+        pData->name   = allocName(_anAllocator,rName);
+        pData->module = allocName(_anAllocator,rModule);
     }
     return aData;
 }
+
+Address SetNode::copyTemplateData(memory::Allocator const & _anAllocator, 
+								  memory::Accessor const & _aSourceAccessor,
+								  Address _aTemplateData)
+{
+    SetNodeTemplateData const * pData = readTemplateData(_anAllocator,_aTemplateData);
+
+    OSL_ENSURE(pData, "Freeing template data: unexpected NULL data");
+
+    return allocTemplateData(_anAllocator, readName(_aSourceAccessor, pData->name),
+							 readName(_aSourceAccessor, pData->module));
+}
+
 //-----------------------------------------------------------------------------
 
 void SetNode::releaseTemplateData(memory::Allocator const & _anAllocator, Address _aTemplateData)
@@ -267,30 +280,7 @@
 
     _anAllocator.deallocate(_aTemplateData);
 }
-//-----------------------------------------------------------------------------
-
-NameChar const * SetNode::getTemplateDataName(memory::Accessor const & _anAccessor, Address _aTemplateData)
-{
-    OSL_PRECOND(_aTemplateData, "Reading template data: unexpected NULL pointer");
-    
-    SetNodeTemplateData const * pData = readTemplateData(_anAccessor,_aTemplateData);
-
-    OSL_ENSURE(pData, "Reading template data: unexpected NULL data");
-    
-    return accessName(_anAccessor,pData->name);
-}
-//-----------------------------------------------------------------------------
 
-NameChar const * SetNode::getTemplateDataModule(memory::Accessor const & _anAccessor, Address _aTemplateData)
-{
-    OSL_PRECOND(_aTemplateData, "Reading template data: unexpected NULL pointer");
-    
-    SetNodeTemplateData const * pData = readTemplateData(_anAccessor,_aTemplateData);
-
-    OSL_ENSURE(pData, "Reading template data: unexpected NULL data");
-    
-    return accessName(_anAccessor,pData->module);
-}
 //-----------------------------------------------------------------------------
 
 rtl::OUString SetNode::getElementTemplateName(memory::Accessor const & _anAccessor)   const
@@ -407,7 +397,7 @@
 
 bool Node::isNamed(rtl::OUString const & _aName, memory::Accessor const & _aAccessor) const
 {
-    return 0 == rtl_ustr_compare(_aName.getStr(),accessName(_aAccessor,node.info.name));
+    return _aName == readName(_aAccessor,node.info.name);
 }
 //-----------------------------------------------------------------------------
 
