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 614c696..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;
     }
 
@@ -212,12 +213,14 @@
             bytes[i] = (byte) ((bytes[i] << 2) | in);
         }
         bytes[size - 1] = (byte) ((bytes[size - 1] << 2) | c);
-        // (k%4) * 2
+        clearLeadBit();
+        return output;
+    }
+    
+    protected void clearLeadBit(){
         if (kmerlength % 4 != 0) {
             bytes[0] &= (1 << ((kmerlength % 4) << 1)) - 1;
         }
-        
-        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;
     }
 }
diff --git a/genomix/genomix-hadoop/src/main/java/edu/uci/ics/pathmergingh2/MergePathH2Mapper.java b/genomix/genomix-hadoop/src/main/java/edu/uci/ics/pathmergingh2/MergePathH2Mapper.java
index 3c5b192..de7ecfc 100644
--- a/genomix/genomix-hadoop/src/main/java/edu/uci/ics/pathmergingh2/MergePathH2Mapper.java
+++ b/genomix/genomix-hadoop/src/main/java/edu/uci/ics/pathmergingh2/MergePathH2Mapper.java
@@ -41,7 +41,7 @@
         byte bitStartEnd = (byte) (0x81 & bitFlag);
 
         switch (bitStartEnd) {
-            case 0x01:
+            case (byte) 0x01:
                 byte succeedCode = GeneCode.getGeneCodeFromBitMap(succeed);
                 tmpKmer.set(outputKmerFactory.getLastKmerFromChain(KMER_SIZE, key));
                 outputKmer.set(outputKmerFactory.shiftKmerWithNextCode(tmpKmer, succeedCode));
@@ -59,7 +59,7 @@
                 outputValue.set(tmpKmer, adjBitMap, bitFlag);
                 output.collect(outputKmer, outputValue);
                 break;
-            case 0x00:
+            case (byte) 0x00:
                 succeedCode = GeneCode.getGeneCodeFromBitMap(succeed);
                 tmpKmer.set(outputKmerFactory.getLastKmerFromChain(KMER_SIZE, key));
                 outputKmer.set(outputKmerFactory.shiftKmerWithNextCode(tmpKmer, succeedCode));
diff --git a/genomix/genomix-hadoop/src/main/java/edu/uci/ics/pathmergingh2/MergePathValueWritable.java b/genomix/genomix-hadoop/src/main/java/edu/uci/ics/pathmergingh2/MergePathValueWritable.java
index 5a6b722..3faba46 100644
--- a/genomix/genomix-hadoop/src/main/java/edu/uci/ics/pathmergingh2/MergePathValueWritable.java
+++ b/genomix/genomix-hadoop/src/main/java/edu/uci/ics/pathmergingh2/MergePathValueWritable.java
@@ -44,17 +44,11 @@
     }
 
     public void set(MergePathValueWritable right) {
-        set(right.getBytes(), 0, right.getLength(), right.getAdjBitMap(), right.getFlag(), right.getKmerLength());
+        set(right.getAdjBitMap(), right.getFlag(), right.getKmer());
     }
 
-    public void set(KmerBytesWritable mergedKmer, byte adjBitMap, byte bitFlag) {
-        set(mergedKmer.getBytes(), 0, mergedKmer.getLength(), adjBitMap, bitFlag, mergedKmer.getKmerLength());
-    }
-
-    public void set(byte[] newData, int offset, int length, byte adjBitMap, byte flag, int kmerSize) {
-        if (length != 0) {
-            kmer.set(kmerSize, newData, offset, length);
-        }
+    public void set(byte adjBitMap, byte flag, VKmerBytesWritable kmer) {
+        this.kmer.set(kmer);
         this.adjBitMap = adjBitMap;
         this.flag = flag;
     }
@@ -76,7 +70,7 @@
         arg0.writeByte(flag);
     }
 
-    public KmerBytesWritable getKmer() {
+    public VKmerBytesWritable getKmer() {
         if (kmer.getLength() != 0) {
             return kmer;
         }
@@ -102,6 +96,7 @@
             return kmer.getBytes();
         } else
             return null;
+
     }
 
     public int getKmerLength() {
diff --git a/genomix/genomix-hadoop/src/main/java/edu/uci/ics/pathmergingh2/SNodeInitialMapper.java b/genomix/genomix-hadoop/src/main/java/edu/uci/ics/pathmergingh2/SNodeInitialMapper.java
index 498b7c8..076b3d9 100644
--- a/genomix/genomix-hadoop/src/main/java/edu/uci/ics/pathmergingh2/SNodeInitialMapper.java
+++ b/genomix/genomix-hadoop/src/main/java/edu/uci/ics/pathmergingh2/SNodeInitialMapper.java
@@ -108,7 +108,7 @@
             output.collect(outputKmer, outputAdjList);
         } else {
             for (int i = 0; i < 4; i++) {
-                byte temp = 0x01;
+                byte temp = (byte) 0x01;
                 byte shiftedCode = 0;
                 temp = (byte) (temp << i);
                 temp = (byte) (precursor & temp);
@@ -116,9 +116,6 @@
                     byte precurCode = GeneCode.getGeneCodeFromBitMap(temp);
                     shiftedCode = key.shiftKmerWithPreCode(precurCode);
                     outputKmer.set(key);
-                    for(int j = 0; j < key.getLength(); j ++){
-                        System.out.println(key.getBytes()[j]);                        
-                    }
                     bitFlag = (byte) 0x80;
                     outputAdjList.set(null, 0, 0, (byte) 0, bitFlag, 0);
                     output.collect(outputKmer, outputAdjList);
@@ -126,7 +123,7 @@
                 }
             }
             for (int i = 0; i < 4; i++) {
-                byte temp = 0x01;
+                byte temp = (byte) 0x01;
                 byte shiftedCode = 0;
                 temp = (byte) (temp << i);
                 temp = (byte) (succeed & temp);
diff --git a/genomix/genomix-hadoop/src/main/java/edu/uci/ics/pathmergingh2/SNodeInitialReducer.java b/genomix/genomix-hadoop/src/main/java/edu/uci/ics/pathmergingh2/SNodeInitialReducer.java
index e840965..a858524 100644
--- a/genomix/genomix-hadoop/src/main/java/edu/uci/ics/pathmergingh2/SNodeInitialReducer.java
+++ b/genomix/genomix-hadoop/src/main/java/edu/uci/ics/pathmergingh2/SNodeInitialReducer.java
@@ -32,13 +32,13 @@
         if (values.hasNext() == true) {
             switch (outputValue.getFlag()) {
                 case (byte) 0x01:
-                    startFlag = 0x01;
+                    startFlag = (byte) 0x01;
                     break;
                 case (byte) 0x80:
                     endFlag = (byte) 0x80;
                     break;
                 case (byte) 0x02:
-                    targetPointFlag = 0x02;
+                    targetPointFlag = (byte) 0x02;
                     targetAdjList = outputValue.getAdjBitMap();
                     break;
             }
@@ -56,10 +56,10 @@
                         targetAdjList = outputValue.getAdjBitMap();
                         break;
                 }
-                if(startFlag != 0x00 && endFlag!= 0x00 && targetPointFlag != 0x00)
+                if(startFlag != (byte) 0x00 && endFlag!= (byte) 0x00 && targetPointFlag != (byte) 0x00)
                     break;
             }
-            if(targetPointFlag == 0x02) {
+            if(targetPointFlag == (byte) 0x02) {
                 if(startFlag == (byte) 0x01) {
                     outputFlag = (byte) (outputFlag | startFlag);
                 }
