diff --git a/genomix/genomix-hadoop/data/.DS_Store b/genomix/genomix-hadoop/data/.DS_Store
index 07f4ca0..6334939 100644
--- a/genomix/genomix-hadoop/data/.DS_Store
+++ b/genomix/genomix-hadoop/data/.DS_Store
Binary files differ
diff --git a/genomix/genomix-hadoop/data/webmap/.DS_Store b/genomix/genomix-hadoop/data/webmap/.DS_Store
index 17172c4..a936ebf 100644
--- a/genomix/genomix-hadoop/data/webmap/.DS_Store
+++ b/genomix/genomix-hadoop/data/webmap/.DS_Store
Binary files differ
diff --git a/genomix/genomix-hadoop/src/main/java/edu/uci/ics/pathmergingh2/MergePathH2Driver.java b/genomix/genomix-hadoop/src/main/java/edu/uci/ics/pathmergingh2/MergePathH2Driver.java
index 58849e2..2898a90 100644
--- a/genomix/genomix-hadoop/src/main/java/edu/uci/ics/pathmergingh2/MergePathH2Driver.java
+++ b/genomix/genomix-hadoop/src/main/java/edu/uci/ics/pathmergingh2/MergePathH2Driver.java
@@ -75,6 +75,8 @@
         int iMerge = 0;
 /*----------------------------------------------------------------------*/
         for(iMerge = 0; iMerge < mergeRound; iMerge ++){
+            if(!dfs.exists(new Path(inputPath + "-step1")))
+                break;
             conf = new JobConf(MergePathH2Driver.class);
             conf.setInt("sizeKmer", sizeKmer);
             conf.setInt("iMerge", iMerge);
@@ -115,7 +117,7 @@
             dfs.rename(new Path(outputPath + "/" + uncomplete), new Path(inputPath + "-step1"));
             dfs.rename(new Path(outputPath + "/" + complete), new Path(mergeResultPath + "/" + complete));
         }
-        conf = new JobConf(MergePathH2Driver.class);
+/*        conf = new JobConf(MergePathH2Driver.class);
         conf.setInt("sizeKmer", sizeKmer);
         conf.setInt("iMerge", iMerge);
         
@@ -153,7 +155,7 @@
         JobClient.runJob(conf);
         dfs.delete(new Path(inputPath + "-step1"), true);
         dfs.rename(new Path(outputPath + "/" + uncomplete), new Path(inputPath + "-step1"));
-        dfs.rename(new Path(outputPath + "/" + complete), new Path(mergeResultPath + "/" + complete));
+        dfs.rename(new Path(outputPath + "/" + complete), new Path(mergeResultPath + "/" + complete));*/
     }
 
     public static void main(String[] args) throws Exception {
diff --git a/genomix/genomix-hadoop/src/main/java/edu/uci/ics/pathmergingh2/MergePathH2Reducer.java b/genomix/genomix-hadoop/src/main/java/edu/uci/ics/pathmergingh2/MergePathH2Reducer.java
index ad8b3c2..0bf7708 100644
--- a/genomix/genomix-hadoop/src/main/java/edu/uci/ics/pathmergingh2/MergePathH2Reducer.java
+++ b/genomix/genomix-hadoop/src/main/java/edu/uci/ics/pathmergingh2/MergePathH2Reducer.java
@@ -63,7 +63,7 @@
                         else
                             tmpKmer2.set(key);
                         byte tmpFlag = (byte) 0x80;
-                        tmpOutputValue.set(outputValue.getAdjBitMap(), outputValue.getFlag(), null);
+                        tmpOutputValue.set(outputValue.getAdjBitMap(), tmpFlag, null);
                         mos.getCollector("uncomplete" + I_MERGE, reporter).collect(tmpKmer2, tmpOutputValue);
                     }
                     if (outputValue.getKmerLength() != 0)
diff --git a/genomix/genomix-hadoop/src/test/java/edu/uci/ics/graphbuilding/GraphBuildingTest.java b/genomix/genomix-hadoop/src/test/java/edu/uci/ics/graphbuilding/GraphBuildingTest.java
index 97b861c..002dd0a 100755
--- a/genomix/genomix-hadoop/src/test/java/edu/uci/ics/graphbuilding/GraphBuildingTest.java
+++ b/genomix/genomix-hadoop/src/test/java/edu/uci/ics/graphbuilding/GraphBuildingTest.java
@@ -46,7 +46,7 @@
     private static final String COMPARE_DIR = "compare";
     private JobConf conf = new JobConf();
     private static final String HADOOP_CONF_PATH = ACTUAL_RESULT_DIR + File.separator + "conf.xml";
-    private static final String DATA_PATH = "data/webmap/BridgePath";
+    private static final String DATA_PATH = "data/webmap/TreePath";
     private static final String HDFS_PATH = "/webmap";
     private static final String RESULT_PATH = "/result1";
     private static final String EXPECTED_PATH = "expected/result1";
@@ -103,7 +103,8 @@
             bw.write(key.toString() + "\t" + value.toString());
             bw.newLine();            
         }
-        bw.close();
+       bw2.close();
+       bw.close();
 
         dumpResult();
 //        TestUtils.compareWithResult(new File(TEST_SOURCE_DIR), new File(EXPECTED_PATH));
diff --git a/genomix/genomix-hadoop/src/test/java/edu/uci/ics/graphcountfilter/CountFilterTest.java b/genomix/genomix-hadoop/src/test/java/edu/uci/ics/graphcountfilter/CountFilterTest.java
index c09937c..f9b0049 100644
--- a/genomix/genomix-hadoop/src/test/java/edu/uci/ics/graphcountfilter/CountFilterTest.java
+++ b/genomix/genomix-hadoop/src/test/java/edu/uci/ics/graphcountfilter/CountFilterTest.java
@@ -34,7 +34,7 @@
     private static final String EXPECTED_PATH = "expected/result2";
     private static final String TEST_SOURCE_DIR = COMPARE_DIR + RESULT_PATH + "/comparesource.txt";
     private static final int COUNT_REDUCER = 4;
-    private static final int SIZE_KMER = 3;
+    private static final int SIZE_KMER = 5;
     private MiniDFSCluster dfsCluster;
     private MiniMRCluster mrCluster;
     private FileSystem dfs;
