diff --git a/source/common/ucmndata.h b/source/common/ucmndata.h
index 36163c5..0902921 100644
--- a/source/common/ucmndata.h
+++ b/source/common/ucmndata.h
@@ -44,6 +44,20 @@ typedef struct  {
 } DataHeader;
 
 typedef struct {
+    DataHeader hdr;
+    char padding[8];
+    uint32_t count, reserved;
+    /*
+    const struct {
+    const char *const name; 
+    const void *const data;
+    } toc[1];
+    */
+   int   fakeNameAndData[4];       /* TODO:  Change this header type from */
+                                   /*        pointerTOC to OffsetTOC.     */
+} ICU_Data_Header;
+
+typedef struct {
     uint32_t nameOffset;
     uint32_t dataOffset;
 } UDataOffsetTOCEntry;
diff --git a/source/common/udata.cpp b/source/common/udata.cpp
index 0d7df42..e6d8a35 100644
--- a/source/common/udata.cpp
+++ b/source/common/udata.cpp
@@ -620,7 +620,7 @@ U_NAMESPACE_END
  *      our common data.                                                *
  *                                                                      *
  *----------------------------------------------------------------------*/
-extern "C" const DataHeader U_DATA_API U_ICUDATA_ENTRY_POINT;
+extern "C" const ICU_Data_Header U_DATA_API U_ICUDATA_ENTRY_POINT;
 
 /*
  * This would be a good place for weak-linkage declarations of
@@ -666,7 +666,7 @@ openCommonData(const char *path,          /*  Path from OpenChoice?          */
         if(gCommonICUDataArray[commonDataIndex] == NULL) {
             int32_t i;
             for(i = 0; i < commonDataIndex; ++i) {
-                if(gCommonICUDataArray[i]->pHeader == &U_ICUDATA_ENTRY_POINT) {
+                if(gCommonICUDataArray[i]->pHeader == &U_ICUDATA_ENTRY_POINT.hdr) {
                     /* The linked-in data is already in the list. */
                     return NULL;
                 }
@@ -685,7 +685,7 @@ openCommonData(const char *path,          /*  Path from OpenChoice?          */
                 setCommonICUDataPointer(uprv_getICUData_conversion(), FALSE, pErrorCode);
             }
             */
-            setCommonICUDataPointer(&U_ICUDATA_ENTRY_POINT, FALSE, pErrorCode);
+            setCommonICUDataPointer(&U_ICUDATA_ENTRY_POINT.hdr, FALSE, pErrorCode);
         }
         return gCommonICUDataArray[commonDataIndex];
     }
diff --git a/source/stubdata/stubdata.c b/source/stubdata/stubdata.c
index 69a5876..9eac596 100644
--- a/source/stubdata/stubdata.c
+++ b/source/stubdata/stubdata.c
@@ -20,45 +20,34 @@
 #include "unicode/utypes.h"
 #include "unicode/udata.h"
 #include "unicode/uversion.h"
+#include "ucmndata.h"
 
 
-typedef struct {
-    uint16_t headerSize;
-    uint8_t magic1, magic2;
-    UDataInfo info;
-    char padding[8];
-    uint32_t count, reserved;
-    /*
-    const struct {
-    const char *const name; 
-    const void *const data;
-    } toc[1];
-    */
-   int   fakeNameAndData[4];       /* TODO:  Change this header type from */
-                                   /*        pointerTOC to OffsetTOC.     */
-} ICU_Data_Header;
-
 U_EXPORT const ICU_Data_Header U_ICUDATA_ENTRY_POINT = {
-    32,          /* headerSize */
-    0xda,        /* magic1,  (see struct MappedData in udata.c)  */
-    0x27,        /* magic2     */
-    {            /*UDataInfo   */
-        sizeof(UDataInfo),      /* size        */
-        0,                      /* reserved    */
+    {            /* DataHeader */
+        {            /* MappedData */
+            32,          /* headerSize */
+            0xda,        /* magic1,  (see struct MappedData in udata.c)  */
+            0x27,        /* magic2     */
+        },
+        {            /*UDataInfo   */
+            sizeof(UDataInfo),      /* size        */
+            0,                      /* reserved    */
 
 #if U_IS_BIG_ENDIAN
-        1,
+            1,
 #else
-        0,
+            0,
 #endif
 
-        U_CHARSET_FAMILY,
-        sizeof(UChar),   
-        0,               /* reserved      */
-        {                /* data format identifier */
-           0x54, 0x6f, 0x43, 0x50}, /* "ToCP" */
-           {1, 0, 0, 0},   /* format version major, minor, milli, micro */
-           {0, 0, 0, 0}    /* dataVersion   */
+            U_CHARSET_FAMILY,
+            sizeof(UChar),   
+            0,               /* reserved      */
+            {                /* data format identifier */
+               0x54, 0x6f, 0x43, 0x50}, /* "ToCP" */
+               {1, 0, 0, 0},   /* format version major, minor, milli, micro */
+               {0, 0, 0, 0}    /* dataVersion   */
+        },
     },
     {0,0,0,0,0,0,0,0},  /* Padding[8]   */ 
     0,                  /* count        */
