diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/client/Client.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/client/Client.java
index 9b80f8c..6c93433 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/client/Client.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/client/Client.java
@@ -10,6 +10,7 @@
 import org.kohsuke.args4j.CmdLineParser;
 import org.kohsuke.args4j.Option;
 
+import edu.uci.ics.genomix.pregelix.operator.NaiveFilterVertex;
 import edu.uci.ics.genomix.pregelix.operator.ThreeStepLogAlgorithmForPathMergeVertex;
 import edu.uci.ics.genomix.pregelix.operator.NaiveAlgorithmForPathMergeVertex;
 import edu.uci.ics.genomix.pregelix.operator.TwoStepLogAlgorithmForPathMergeVertex;
@@ -43,6 +44,9 @@
 
         @Option(name = "-runtime-profiling", usage = "whether to do runtime profifling", required = false)
         public String profiling = "false";
+        
+        @Option(name = "-filter-kmer", usage = "whether to do runtime profifling", required = false)
+        public String filterKmer = "";
     }
 
     public static void run(String[] args, PregelixJob job) throws Exception {
@@ -69,6 +73,7 @@
             job.getConfiguration().setInt(TwoStepLogAlgorithmForPathMergeVertex.ITERATIONS, options.numIteration);
             job.getConfiguration().setInt(ThreeStepLogAlgorithmForPathMergeVertex.ITERATIONS, options.numIteration);
         }
+        job.getConfiguration().set(NaiveFilterVertex.FILTERKMER, options.filterKmer);
         return options;
     }
 
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/NaiveAlgorithmForPathMergeVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/NaiveAlgorithmForPathMergeVertex.java
index ea89b06..b20d6ea 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/NaiveAlgorithmForPathMergeVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/NaiveAlgorithmForPathMergeVertex.java
@@ -1,6 +1,7 @@
 package edu.uci.ics.genomix.pregelix.operator;
 
 import java.util.Iterator;
+import java.util.logging.Logger;
 
 import org.apache.hadoop.io.NullWritable;
 
@@ -51,6 +52,8 @@
  * Naive Algorithm for path merge graph
  */
 public class NaiveAlgorithmForPathMergeVertex extends Vertex<KmerBytesWritable, ValueStateWritable, NullWritable, NaiveAlgorithmMessageWritable>{
+	public static Logger logger = Logger.getLogger(NaiveAlgorithmForPathMergeVertex.class.getName()); 
+
 	
 	public static final String KMER_SIZE = "NaiveAlgorithmForPathMergeVertex.kmerSize";
 	public static final String ITERATIONS = "NaiveAlgorithmForPathMergeVertex.iteration";
@@ -161,6 +164,7 @@
 				msg.set(getVertexId(), chainVertexId, getVertexId(), (byte)0, false);
 				sendMsgToAllNextNodes(getVertexId(), getVertexValue().getAdjMap());
 			}
+			
 		}
 		else if(getSuperstep() == 2){
 			if(msgIterator.hasNext()){
@@ -182,6 +186,12 @@
 				responseMsgToHeadVertex();
 			}
 		}
+		String log = "Iterator:" + getSuperstep();
+		log += getVertexId().toString() + "\t";
+		log += getVertexValue().getMergeChain().toString() + "\t";
+		log += GeneCode.getSymbolFromBitMap(getVertexValue().getAdjMap()) + "\t";
+		log += getVertexValue().getState();
+		logger.info(log);
 		voteToHalt();
 	}
 
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/NaiveFilterVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/NaiveFilterVertex.java
index a02f3d5..f0020bc 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/NaiveFilterVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/NaiveFilterVertex.java
@@ -54,8 +54,10 @@
 	
 	public static final String KMER_SIZE = "NaiveAlgorithmForPathMergeVertex.kmerSize";
 	public static final String ITERATIONS = "NaiveAlgorithmForPathMergeVertex.iteration";
+	public static final String FILTERKMER = "NaiveFilterVertex.filterKmer";
 	public static int kmerSize = -1;
 	private int maxIteration = -1;
+	private String filterKmer = "";
 
 	private NaiveAlgorithmMessageWritable msg = new NaiveAlgorithmMessageWritable();
 
@@ -72,6 +74,8 @@
 			kmerSize = getContext().getConfiguration().getInt(KMER_SIZE, 5);
         if (maxIteration < 0) 
             maxIteration = getContext().getConfiguration().getInt(ITERATIONS, 1000000);
+        if(filterKmer.equals(""))
+        	filterKmer = getContext().getConfiguration().get(FILTERKMER, "");
 	}
 	public void findDestination(){
 		destVertexId.set(msg.getSourceVertexId());
@@ -147,8 +151,8 @@
 				byte tmp = GraphVertexOperation.updateRightNeighberByVertexId(getVertexValue().getAdjMap(), msg.getSourceVertexId(), kmerSize);
 				getVertexValue().set(tmp, State.FINAL_VERTEX, msg.getChainVertexId());
 				setVertexValue(getVertexValue());
-				//String source = msg.getChainVertexId().toString();
-				//System.out.print("");
+				String source = msg.getChainVertexId().toString();
+				System.out.print("");
 			}
 		}
 	}
@@ -158,7 +162,7 @@
 		initVertex();
 		if (getSuperstep() == 1) {
 			if(GraphVertexOperation.isHeadVertex(getVertexValue().getAdjMap())){
-				if(getVertexId().toString().equals("ACGTTATATGGGACGACGTTATAACGTATTACGTTATATGGGATGTCGTTATAAC")){
+				if(getVertexId().toString().equals(filterKmer)){
 					getVertexValue().setState(State.FILTER);
 					setVertexValue(getVertexValue());
 					msg.set(getVertexId(), chainVertexId, getVertexId(), (byte)0, false);
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/TwoStepLogAlgorithmForPathMergeVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/TwoStepLogAlgorithmForPathMergeVertex.java
index 2353529..2ef2932 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/TwoStepLogAlgorithmForPathMergeVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/TwoStepLogAlgorithmForPathMergeVertex.java
@@ -1,6 +1,7 @@
 package edu.uci.ics.genomix.pregelix.operator;
 
 import java.util.Iterator;
+import java.util.logging.Logger;
 
 import org.apache.hadoop.io.NullWritable;
 
@@ -48,6 +49,7 @@
  * The details about message are in edu.uci.ics.pregelix.example.io.MessageWritable. 
  */
 public class TwoStepLogAlgorithmForPathMergeVertex extends Vertex<KmerBytesWritable, ValueStateWritable, NullWritable, LogAlgorithmMessageWritable>{	
+	public static Logger logger = Logger.getLogger(TwoStepLogAlgorithmForPathMergeVertex.class.getName()); 
 	
 	public static final String KMER_SIZE = "TwoStepLogAlgorithmForPathMergeVertex.kmerSize";
 	public static final String ITERATIONS = "TwoStepLogAlgorithmForPathMergeVertex.iteration";
@@ -339,6 +341,12 @@
 		}
 		else
 			voteToHalt();
+		String log = "Iterator:" + getSuperstep();
+		log += getVertexId().toString() + "\t";
+		log += getVertexValue().getMergeChain().toString() + "\t";
+		log += GeneCode.getSymbolFromBitMap(getVertexValue().getAdjMap()) + "\t";
+		log += getVertexValue().getState();
+		logger.info(log);
 	}
 	/**
 	 * @param args
diff --git a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/pathmerge/GraphBuildTest.java b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/pathmerge/GraphBuildTest.java
index a381c3c..5681ae0 100644
--- a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/pathmerge/GraphBuildTest.java
+++ b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/pathmerge/GraphBuildTest.java
@@ -34,14 +34,14 @@
 	private static final String ACTUAL_RESULT_DIR = "graphbuildresult";
 	private static final String PATH_TO_HADOOP_CONF = "src/test/resources/hadoop/conf";
 
-	private static final String DATA_PATH = "data/shortjump_1.head8M.fastq";
+	private static final String DATA_PATH = "data/testGeneFile";
 	private static final String HDFS_INPUT_PATH = "/test";
 	private static final String HDFS_OUTPUT_PATH = "/result";
 
 	private static final String DUMPED_RESULT = ACTUAL_RESULT_DIR
 			+ HDFS_OUTPUT_PATH + "/result.txt";
 	private static final String CONVERT_RESULT = ACTUAL_RESULT_DIR
-			+ HDFS_OUTPUT_PATH + "/result.txt.txt";
+			+ "/graph_build_result.txt";
 	private static final String EXPECTED_PATH = "src/test/resources/expected/result2";
 
 	private static final String HADOOP_CONF_PATH = ACTUAL_RESULT_DIR
diff --git a/pregelix/pregelix-core/src/main/java/edu/uci/ics/pregelix/core/driver/Driver.java b/pregelix/pregelix-core/src/main/java/edu/uci/ics/pregelix/core/driver/Driver.java
index 1f071bf..a072b9b 100644
--- a/pregelix/pregelix-core/src/main/java/edu/uci/ics/pregelix/core/driver/Driver.java
+++ b/pregelix/pregelix-core/src/main/java/edu/uci/ics/pregelix/core/driver/Driver.java
@@ -130,12 +130,14 @@
             do {
                 start = System.currentTimeMillis();
                 runLoopBodyIteration(deploymentId, jobGen, i);
+                runHDFSWRite(deploymentId, jobGen);
                 end = System.currentTimeMillis();
                 time = end - start;
                 LOG.info("iteration " + i + " finished " + time + "ms");
                 terminate = IterationUtils.readTerminationState(job.getConfiguration(), jobGen.getJobId())
                         || IterationUtils.readForceTerminationState(job.getConfiguration(), jobGen.getJobId());
                 i++;
+                
             } while (!terminate);
 
             start = System.currentTimeMillis();
