diff -rup /home/rodo/svn/ooo-build-reference/build/oof680-m7/registry/inc/registry/registry.h registry/inc/registry/registry.h
--- /home/rodo/svn/ooo-build-reference/build/oof680-m7/registry/inc/registry/registry.h	2005-09-09 07:12:56.000000000 +0200
+++ registry/inc/registry/registry.h	2007-03-14 11:24:57.000000000 +0100
@@ -420,7 +420,8 @@ RegError REGISTRY_CALLTYPE reg_mergeKey(
 	@return	REG_NO_ERROR if succeeds else an error code. 
 */
 RegError REGISTRY_CALLTYPE reg_createRegistry(rtl_uString* registryName, 
-							 				  RegHandle* phRegistry);
+							 				  RegHandle* phRegistry,
+                                              bool bInternal = false);
 
 
 /**	This function opens the root key of a registry.
diff -rup /home/rodo/svn/ooo-build-reference/build/oof680-m7/registry/source/regimpl.cxx registry/source/regimpl.cxx
--- /home/rodo/svn/ooo-build-reference/build/oof680-m7/registry/source/regimpl.cxx	2007-03-01 17:56:47.000000000 +0100
+++ registry/source/regimpl.cxx	2007-03-14 09:58:40.000000000 +0100
@@ -508,7 +508,7 @@ ORegistry::~ORegistry()
 //*********************************************************************
 //  initRegistry
 //
-RegError ORegistry::initRegistry(const OUString& regName, RegAccessMode accessMode)
+RegError ORegistry::initRegistry(const OUString& regName, RegAccessMode accessMode, bool bInternal)
 {
     OStoreFile      rRegFile;
     storeAccessMode sAccessMode = REG_MODE_OPEN;
@@ -531,7 +531,10 @@ RegError ORegistry::initRegistry(const O
     }
     else
     {
-        errCode = rRegFile.create(regName, sAccessMode, REG_PAGESIZE);
+        if (bInternal)
+            errCode = rRegFile.create(regName, sAccessMode, REG_PAGESIZE_INTERNAL, REG_RDB_FORMAT_2);
+        else
+            errCode = rRegFile.create(regName, sAccessMode, REG_PAGESIZE_PUBLIC, REG_RDB_FORMAT_1);
     }
 
     if (errCode)
diff -rup /home/rodo/svn/ooo-build-reference/build/oof680-m7/registry/source/regimpl.hxx registry/source/regimpl.hxx
--- /home/rodo/svn/ooo-build-reference/build/oof680-m7/registry/source/regimpl.hxx	2006-06-19 16:28:05.000000000 +0200
+++ registry/source/regimpl.hxx	2007-03-14 09:59:26.000000000 +0100
@@ -50,7 +50,11 @@
 #include	<store/store.hxx>
 #endif
 
-#define REG_PAGESIZE 512
+#define REG_PAGESIZE_PUBLIC   512
+#define REG_PAGESIZE_INTERNAL 128
+
+#define REG_RDB_FORMAT_1 STORE_FORMAT_V1
+#define REG_RDB_FORMAT_2 STORE_FORMAT_V2
 
 #define	REG_MODE_CREATE		store_AccessCreate
 #define	REG_MODE_OPEN		store_AccessReadWrite 
@@ -107,7 +111,8 @@ public:
 		{ return --m_refCount; }
 
 	RegError	initRegistry(const OUString& name, 
-							 RegAccessMode accessMode);
+							 RegAccessMode accessMode,
+                             bool bInternal = false);
 
 	RegError	closeRegistry();
 
diff -rup /home/rodo/svn/ooo-build-reference/build/oof680-m7/registry/source/registry.cxx registry/source/registry.cxx
--- /home/rodo/svn/ooo-build-reference/build/oof680-m7/registry/source/registry.cxx	2006-09-17 03:53:45.000000000 +0200
+++ registry/source/registry.cxx	2007-03-14 11:20:28.000000000 +0100
@@ -654,12 +654,13 @@ RegError REGISTRY_CALLTYPE reg_mergeKey(
 //	reg_createRegistry
 //
 RegError REGISTRY_CALLTYPE reg_createRegistry(rtl_uString* registryName, 
-											  RegHandle* phRegistry)
+											  RegHandle* phRegistry,
+                                              bool bInternal)
 {
 	RegError ret;
 
 	ORegistry* pReg = new ORegistry();
-	if ((ret = pReg->initRegistry(registryName, REG_CREATE)))
+	if ((ret = pReg->initRegistry(registryName, REG_CREATE, bInternal)))
 	{
 		*phRegistry = NULL;
 		return ret;
diff -rup /home/rodo/svn/ooo-build-reference/build/oof680-m7/registry/tools/regmerge.cxx registry/tools/regmerge.cxx
--- /home/rodo/svn/ooo-build-reference/build/oof680-m7/registry/tools/regmerge.cxx	2006-09-17 03:55:09.000000000 +0200
+++ registry/tools/regmerge.cxx	2007-03-14 11:25:05.000000000 +0100
@@ -118,15 +118,16 @@ static void dumpHelp()
 {
     fprintf(stderr, "using: regmerge [-v|--verbose] mergefile mergeKeyName regfile_1 ... regfile_n\n");
     fprintf(stderr, "       regmerge @regcmds\nOptions:\n");    
-    fprintf(stderr, "  -v, --verbose : verbose output on stdout.\n");
-    fprintf(stderr, "  mergefile     : specifies the merged registry file. If this file doesn't exists,\n");
-    fprintf(stderr, "                  it is created.\n");
-    fprintf(stderr, "  mergeKeyName  : specifies the merge key, everything is merged under this key.\n");
-    fprintf(stderr, "                  If this key doesn't exists, it is created.\n");
-    fprintf(stderr, "  regfile_1..n  : specifies one or more registry files which are merged.\n");
+    fprintf(stderr, "  -i, --internal : use internal private format.\n");
+    fprintf(stderr, "  -v, --verbose  : verbose output on stdout.\n");
+    fprintf(stderr, "  mergefile      : specifies the merged registry file. If this file doesn't exists,\n");
+    fprintf(stderr, "                   it is created.\n");
+    fprintf(stderr, "  mergeKeyName   : specifies the merge key, everything is merged under this key.\n");
+    fprintf(stderr, "                   If this key doesn't exists, it is created.\n");
+    fprintf(stderr, "  regfile_1..n   : specifies one or more registry files which are merged.\n");
 }
 
-static bool checkCommandFile(char* cmdfile)
+static bool checkCommandFile(char* cmdfile, bool& bInternal)
 {
 	FILE	*commandfile;
 	char 	option[256];
@@ -142,13 +143,17 @@ static bool checkCommandFile(char* cmdfi
 		{
 			if (option[0]== '@')
 			{
-				bool bRet = checkCommandFile(option);
+				bool bRet = checkCommandFile(option, bInternal);
                 // ensure that the option will not be overwritten
                 if ( !bRet )
                     bVerbose = bRet;
 			} else {
                 if (option[0]== '-') {
-                    if (strncmp(option, "-v", 2)  == 0 ||
+                    if (strncmp(option, "-i", 2)  == 0 ||
+                        strncmp(option, "--internal", 10) == 0)
+                    {
+                        bInternal = true;
+                    } else if (strncmp(option, "-v", 2)  == 0 ||
                         strncmp(option, "--verbose", 9) == 0)
                     {
                         bVerbose = true;
@@ -175,23 +180,28 @@ static bool checkCommandFile(char* cmdfi
     return bVerbose;
 }	
 
-static bool checkCommandArgs(int argc, char **argv)
+static bool checkCommandArgs(int argc, char **argv, bool &bInternal)
 {
     bool bVerbose = false;
     
+    bInternal = false;
     realargc = 0;
 
 	for (int i=0; i<argc; i++)        
 	{
 		if (argv[i][0]== '@')
 		{
-            bool bRet = checkCommandFile(argv[i]);
+            bool bRet = checkCommandFile(argv[i], bInternal);
             // ensure that the option will not be overwritten
             if ( !bRet )
                 bVerbose = bRet;
 		} else {
             if (argv[i][0]== '-') {
-                if (strncmp(argv[i], "-v", 2)  == 0 ||
+                if (strncmp(argv[i], "-i", 2)  == 0 ||
+                    strncmp(argv[i], "--internal", 10) == 0)
+                {
+                    bInternal = true;
+                } else if (strncmp(argv[i], "-v", 2)  == 0 ||
                     strncmp(argv[i], "--verbose", 9) == 0)
                 {
                     bVerbose = true;
@@ -229,7 +239,8 @@ int _cdecl main( int argc, char * argv[]
 {
 	RegHandle 		hReg;
 	RegKeyHandle	hRootKey;
-    bool            bVerbose = checkCommandArgs(argc, argv);
+    bool            bInternal;
+    bool            bVerbose = checkCommandArgs(argc, argv, bInternal);
 
 	if (realargc < 4)
 	{
@@ -241,7 +252,7 @@ int _cdecl main( int argc, char * argv[]
 	::rtl::OUString regName( convertToFileUrl(realargv[1]) );
 	if (reg_openRegistry(regName.pData, &hReg, REG_READWRITE))
 	{
-		if (reg_createRegistry(regName.pData, &hReg))
+		if (reg_createRegistry(regName.pData, &hReg, bInternal))
 		{
             if (bVerbose)
                 fprintf(stderr, "open registry \"%s\" failed\n", realargv[1]);
