add clearLeadBit into KmerOperation
diff --git a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/KmerBytesWritable.java b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/KmerBytesWritable.java
index c211ce7..648f28e 100644
--- a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/KmerBytesWritable.java
+++ b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/KmerBytesWritable.java
@@ -183,6 +183,7 @@
         int pos = ((kmerlength - 1) % 4) << 1;
         byte code = (byte) (c << pos);
         bytes[0] = (byte) (((bytes[0] >>> 2) & 0x3f) | code);
+        clearLeadBit();
         return output;
     }
 
@@ -211,12 +212,15 @@
             byte in = (byte) ((bytes[i + 1] >> 6) & 0x03);
             bytes[i] = (byte) ((bytes[i] << 2) | in);
         }
-        // (k%4) * 2
+        bytes[size - 1] = (byte) ((bytes[size - 1] << 2) | c);
+        clearLeadBit();
+        return output;
+    }
+    
+    protected void clearLeadBit(){
         if (kmerlength % 4 != 0) {
             bytes[0] &= (1 << ((kmerlength % 4) << 1)) - 1;
         }
-        bytes[size - 1] = (byte) ((bytes[size - 1] << 2) | c);
-        return output;
     }
 
     public void set(KmerBytesWritable newData) {
diff --git a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/VKmerBytesWritable.java b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/VKmerBytesWritable.java
index fc63fd8..5a4329e 100644
--- a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/VKmerBytesWritable.java
+++ b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/VKmerBytesWritable.java
@@ -107,6 +107,7 @@
         this.kmerlength = k;
         setSize(0);
         setSize(KmerUtil.getByteNumFromK(k));
+        clearLeadBit();
     }
 
 }
diff --git a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/VKmerBytesWritableFactory.java b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/VKmerBytesWritableFactory.java
index 9bd6acb..c00967f 100644
--- a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/VKmerBytesWritableFactory.java
+++ b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/VKmerBytesWritableFactory.java
@@ -80,6 +80,7 @@
         if (byteInKmer == 0) {
             kmer.getBytes()[0] = (byte) ((kmerChain.getBytes()[0] & 0xff) >> posInByteOfChain);
         }
+        kmer.clearLeadBit();
         return kmer;
     }
 
@@ -112,6 +113,7 @@
         } else {
             kmer.getBytes()[0] = (byte) (kmerChain.getBytes()[kmerChain.getLength() - i] & ((1 << posInByteOfChain) - 1));
         }
+        kmer.clearLeadBit();
         return kmer;
     }
 
@@ -138,9 +140,7 @@
         if (byteInKmer == 0) {
             kmer.getBytes()[0] = (byte) ((kmerChain.getBytes()[0] & 0xff) >> posInByteOfChain);
         }
-        if (kSize % 4 != 0) {
-            kmer.getBytes()[0] &= (1 << ((kSize % 4) << 1)) - 1;
-        }
+        kmer.clearLeadBit();
         return kmer;
     }
 
@@ -167,6 +167,7 @@
         } else {
             this.kmer.getBytes()[0] = (byte) (kmer.getBytes()[0] | ((nextCode & 0x3) << ((kmer.getKmerLength() % 4) << 1)));
         }
+        this.kmer.clearLeadBit();
         return this.kmer;
     }
 
@@ -194,6 +195,7 @@
             this.kmer.getBytes()[byteInMergedKmer] = (byte) ((kmer.getBytes()[i] << 2) | ((kmer.getBytes()[i + 1] >> 6) & 0x3));
         }
         this.kmer.getBytes()[byteInMergedKmer] = (byte) ((kmer.getBytes()[kmer.getLength() - 1] << 2) | (preCode & 0x3));
+        this.kmer.clearLeadBit();
         return this.kmer;
     }
 
@@ -235,6 +237,7 @@
                 kmer.getBytes()[0] = (byte) ((0xff & nextKmer.getBytes()[0]) >> (8 - posNeedToMove));
             }
         }
+        kmer.clearLeadBit();
         return kmer;
     }
 
@@ -302,6 +305,7 @@
                 curByteAtKmer++;
             }
         }
+        this.kmer.clearLeadBit();
         return this.kmer;
     }
 }