diff --git a/src/main/java/org/apache/datasketches/frequencies/PreambleUtil.java b/src/main/java/org/apache/datasketches/frequencies/PreambleUtil.java
index ac2137c..785c211 100644
--- a/src/main/java/org/apache/datasketches/frequencies/PreambleUtil.java
+++ b/src/main/java/org/apache/datasketches/frequencies/PreambleUtil.java
@@ -52,7 +52,7 @@
  *  * Long || Start Byte Adr:
  * Adr:
  *      ||    7     |    6   |    5   |    4   |    3   |    2   |    1   |     0          |
- *  0   ||-------SerDeId-----|-Flags--|-LgCur--| LgMax  | FamID  | SerVer | PreambleLongs  |
+ *  0   ||------ unused -----|-Flags--|-LgCur--| LgMax  | FamID  | SerVer | PreambleLongs  |
  *      ||    15    |   14   |   13   |   12   |   11   |   10   |    9   |     8          |
  *  1   ||------------(unused)-----------------|--------ActiveItems------------------------|
  *      ||    23    |   22   |   21   |   20   |   19   |   18   |   17   |    16          |
@@ -83,7 +83,9 @@
   static final int OFFSET_LONG               = 24; // to 31 : pre3
 
   // flag bit masks
-  static final int EMPTY_FLAG_MASK      = 4;
+  // due to a mistake different bits were used in C++ and Java to indicate empty sketch
+  // therefore both are set and checked for compatibility with historical binary format
+  static final int EMPTY_FLAG_MASK = 5;
 
   // Specific values for this implementation
   static final int SER_VER = 1;
@@ -105,7 +107,6 @@
     final int lgMaxMapSize = extractLgMaxMapSize(pre0); //byte 3
     final int lgCurMapSize = extractLgCurMapSize(pre0); //byte 4
     final int flags = extractFlags(pre0);         //byte 5
-    final int type = extractSerDeId(pre0);        //byte 6
 
     final String flagsStr = zeroPad(Integer.toBinaryString(flags), 8) + ", " + (flags);
     final boolean empty = (flags & EMPTY_FLAG_MASK) > 0;
@@ -138,8 +139,7 @@
       .append("Byte  3: MaxMapSize           : ").append(maxMapSize).append(LS)
       .append("Byte  4: CurMapSize           : ").append(curMapSize).append(LS)
       .append("Byte  5: Flags Field          : ").append(flagsStr).append(LS)
-      .append("  EMPTY                       : ").append(empty).append(LS)
-      .append("Byte  6: Freq Sketch Type     : ").append(type).append(LS);
+      .append("  EMPTY                       : ").append(empty).append(LS);
 
     if (preLongs == 1) {
       sb.append(" --ABSENT, ASSUMED:").append(LS);
@@ -193,12 +193,6 @@
     return (int) ((pre0 >>> shift) & mask);
   }
 
-  static short extractSerDeId(final long pre0) { //Byte 6,7
-    final int shift = SER_DE_ID_SHORT << 3;
-    final long mask = 0XFFFFL;
-    return (short) ((pre0 >>> shift) & mask);
-  }
-
   static int extractActiveItems(final long pre1) { //Bytes 8 to 11
     final long mask = 0XFFFFFFFFL;
     return (int) (pre1 & mask) ;
