diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/format/NaiveAlgorithmForPathMergeOutputFormat.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/format/NaiveAlgorithmForPathMergeOutputFormat.java
index 1812b57..7ef45de 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/format/NaiveAlgorithmForPathMergeOutputFormat.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/format/NaiveAlgorithmForPathMergeOutputFormat.java
@@ -8,6 +8,7 @@
 
 import edu.uci.ics.genomix.pregelix.api.io.binary.BinaryVertexOutputFormat;
 import edu.uci.ics.genomix.pregelix.io.ValueStateWritable;
+import edu.uci.ics.genomix.pregelix.type.State;
 import edu.uci.ics.genomix.type.KmerBytesWritable;
 import edu.uci.ics.pregelix.api.graph.Vertex;
 import edu.uci.ics.pregelix.api.io.VertexWriter;
@@ -36,8 +37,8 @@
             @Override
             public void writeVertex(Vertex<KmerBytesWritable, ValueStateWritable, NullWritable, ?> vertex) throws IOException,
                     InterruptedException {
-            	//if(vertex.getVertexValue().isOp() == true)
-    			getRecordWriter().write(vertex.getVertexId(),vertex.getVertexValue());
+            	if(vertex.getVertexValue().getState() == State.FILTER)
+            		getRecordWriter().write(vertex.getVertexId(),vertex.getVertexValue());
             }
         }
 }
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/LogFilterVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/LogFilterVertex.java
index 2dbc180..62de480 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/LogFilterVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/LogFilterVertex.java
@@ -164,7 +164,7 @@
 			if(getVertexValue().getState() == State.START_VERTEX){
 				sendStartMsgToNextNode();
 			}
-			else if(getVertexValue().getState() != State.END_VERTEX && getVertexValue().getState() != State.FINAL_DELETE){
+			else if(getVertexValue().getState() != State.END_VERTEX){
 				sendEndMsgToNextNode();
 			}
 		}
@@ -187,9 +187,9 @@
 	 */
 	public void setMessageType(int message){
 		//kill Message because it has been merged by the head
-		if(getVertexValue().getState() == State.END_VERTEX || getVertexValue().getState() == State.FINAL_DELETE){
+		if(getVertexValue().getState() == State.END_VERTEX){
 			msg.setMessage(Message.END);
-			getVertexValue().setState(State.FINAL_DELETE);
+			getVertexValue().setState(State.END_VERTEX);
 			setVertexValue(getVertexValue());
 		}
 		else
@@ -290,7 +290,7 @@
 				else
 					voteToHalt();
 			}
-			if(getVertexValue().getState() == State.END_VERTEX || getVertexValue().getState() == State.FINAL_DELETE){
+			if(getVertexValue().getState() == State.END_VERTEX){
 				voteToHalt();
 			}
 			if(getVertexValue().getState() == State.FINAL_VERTEX){
@@ -309,7 +309,7 @@
 		}
 		else{
 			if(getVertexValue().getState() != State.START_VERTEX 
-					&& getVertexValue().getState() != State.END_VERTEX && getVertexValue().getState() != State.FINAL_DELETE){
+					&& getVertexValue().getState() != State.END_VERTEX){
 				deleteVertex(getVertexId());//killSelf because it doesn't receive any message
 			}
 		}
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 6efd961..a02f3d5 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
@@ -10,6 +10,10 @@
 import edu.uci.ics.genomix.type.VKmerBytesWritableFactory;
 
 import edu.uci.ics.pregelix.api.graph.Vertex;
+import edu.uci.ics.pregelix.api.job.PregelixJob;
+import edu.uci.ics.genomix.pregelix.client.Client;
+import edu.uci.ics.genomix.pregelix.format.NaiveAlgorithmForPathMergeInputFormat;
+import edu.uci.ics.genomix.pregelix.format.NaiveAlgorithmForPathMergeOutputFormat;
 import edu.uci.ics.genomix.pregelix.io.NaiveAlgorithmMessageWritable;
 import edu.uci.ics.genomix.pregelix.io.ValueStateWritable;
 import edu.uci.ics.genomix.pregelix.type.State;
@@ -154,9 +158,9 @@
 		initVertex();
 		if (getSuperstep() == 1) {
 			if(GraphVertexOperation.isHeadVertex(getVertexValue().getAdjMap())){
-				if(getVertexId().toString().equals("AAGAC")){
-					//getVertexValue().setOp(true);
-					//setVertexValue(getVertexValue());
+				if(getVertexId().toString().equals("ACGTTATATGGGACGACGTTATAACGTATTACGTTATATGGGATGTCGTTATAAC")){
+					getVertexValue().setState(State.FILTER);
+					setVertexValue(getVertexValue());
 					msg.set(getVertexId(), chainVertexId, getVertexId(), (byte)0, false);
 					sendMsgToAllNextNodes(getVertexId(), getVertexValue().getAdjMap());
 				}
@@ -166,8 +170,8 @@
 		}
 		else if(getSuperstep() == 2){
 			if(msgIterator.hasNext()){
-				//getVertexValue().setOp(true);
-				//setVertexValue(getVertexValue());
+				getVertexValue().setState(State.FILTER);
+				setVertexValue(getVertexValue());
 				msg = msgIterator.next();
 				initChainVertex();
 				
@@ -176,8 +180,8 @@
 		//head node sends message to path node
 		else if(getSuperstep()%2 == 1 && getSuperstep() <= maxIteration){
 			while (msgIterator.hasNext()){
-				//getVertexValue().setOp(true);
-				//setVertexValue(getVertexValue());
+				getVertexValue().setState(State.FILTER);
+				setVertexValue(getVertexValue());
 				msg = msgIterator.next();
 				sendMsgToPathVertex();
 			}
@@ -185,12 +189,29 @@
 		//path node sends message back to head node
 		else if(getSuperstep()%2 == 0 && getSuperstep() > 2 && getSuperstep() <= maxIteration){
 			 while(msgIterator.hasNext()){
-				//getVertexValue().setOp(true);
-				//setVertexValue(getVertexValue());
+				getVertexValue().setState(State.FILTER);
+				setVertexValue(getVertexValue());
 				msg = msgIterator.next();
 				responseMsgToHeadVertex();
 			}
 		}
 		voteToHalt();
 	}
+	
+	/**
+	 * @param args
+	 */
+	public static void main(String[] args) throws Exception {
+        PregelixJob job = new PregelixJob(NaiveFilterVertex.class.getSimpleName());
+        job.setVertexClass(NaiveFilterVertex.class);
+        /**
+         * BinaryInput and BinaryOutput
+         */
+        job.setVertexInputFormatClass(NaiveAlgorithmForPathMergeInputFormat.class); 
+        job.setVertexOutputFormatClass(NaiveAlgorithmForPathMergeOutputFormat.class); 
+        job.setDynamicVertexValueSize(true);
+        job.setOutputKeyClass(KmerBytesWritable.class);
+        job.setOutputValueClass(ValueStateWritable.class);
+        Client.run(args, job);
+	}
 }
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/ThreeStepLogAlgorithmForPathMergeVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/ThreeStepLogAlgorithmForPathMergeVertex.java
index 70ba487..7946460 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/ThreeStepLogAlgorithmForPathMergeVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/ThreeStepLogAlgorithmForPathMergeVertex.java
@@ -165,7 +165,7 @@
 			if(getVertexValue().getState() == State.START_VERTEX){
 				sendStartMsgToNextNode();
 			}
-			else if(getVertexValue().getState() != State.END_VERTEX && getVertexValue().getState() != State.FINAL_DELETE){
+			else if(getVertexValue().getState() != State.END_VERTEX){
 				sendEndMsgToNextNode();
 			}
 		}
@@ -189,9 +189,9 @@
 	 */
 	public void setMessageType(int message){
 		//kill Message because it has been merged by the head
-		if(getVertexValue().getState() == State.END_VERTEX || getVertexValue().getState() == State.FINAL_DELETE){
+		if(getVertexValue().getState() == State.END_VERTEX){
 			msg.setMessage(Message.END);
-			getVertexValue().setState(State.FINAL_DELETE);
+			getVertexValue().setState(State.END_VERTEX);
 			setVertexValue(getVertexValue());
 			//deleteVertex(getVertexId());
 		}
@@ -297,7 +297,7 @@
 		}
 		else{
 			if(getVertexValue().getState() != State.START_VERTEX 
-					&& getVertexValue().getState() != State.END_VERTEX && getVertexValue().getState() != State.FINAL_DELETE){
+					&& getVertexValue().getState() != State.END_VERTEX){
 				deleteVertex(getVertexId());//killSelf because it doesn't receive any message
 			}
 		}
@@ -311,7 +311,7 @@
 			setVertexValueAttributes();
 			sendMsgToSelf();
 		}
-		if(getVertexValue().getState() == State.END_VERTEX || getVertexValue().getState() == State.FINAL_DELETE){
+		if(getVertexValue().getState() == State.END_VERTEX){
 			voteToHalt();
 		}
 		if(getVertexValue().getState() == State.FINAL_VERTEX){
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/type/State.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/type/State.java
index 4257f89..4a2af9e 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/type/State.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/type/State.java
@@ -8,7 +8,7 @@
 	public static final byte MID_VERTEX = 3;
 	public static final byte TODELETE = 4;
 	public static final byte FINAL_VERTEX = 5;
-	public static final byte FINAL_DELETE = 6;
+	public static final byte FILTER = 6;
 	public static final byte CYCLE = 7;
 	
 	public final static class STATE_CONTENT{
@@ -34,7 +34,7 @@
 			case FINAL_VERTEX:
 				r = "FINAL_VERTEX";
 				break;
-			case FINAL_DELETE:
+			case FILTER:
 				r = "FINAL_DELETE";
 				break;
 			case CYCLE:
diff --git a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobGen/FilterJobGenerator.java b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobGen/FilterJobGenerator.java
index a4c17b2..bead712 100644
--- a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobGen/FilterJobGenerator.java
+++ b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobGen/FilterJobGenerator.java
@@ -29,7 +29,7 @@
         job.setDynamicVertexValueSize(true);
         job.setOutputKeyClass(KmerBytesWritable.class);
         job.setOutputValueClass(ValueStateWritable.class);
-        job.getConfiguration().setInt(NaiveAlgorithmForPathMergeVertex.KMER_SIZE, 5);
+        job.getConfiguration().setInt(NaiveAlgorithmForPathMergeVertex.KMER_SIZE, 55);
         job.getConfiguration().writeXml(new FileOutputStream(new File(outputPath)));
     }
     
@@ -59,7 +59,7 @@
 	 */
 	public static void main(String[] args) throws IOException {
 		genNaiveFilter();
-		genLogFilter();
+		//genLogFilter();
 	}
 
 }
diff --git a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobGen/JobGenerator.java b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobGen/JobGenerator.java
index 68e29ee..3e494ba 100644
--- a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobGen/JobGenerator.java
+++ b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobGen/JobGenerator.java
@@ -27,7 +27,7 @@
         job.setDynamicVertexValueSize(true);
         job.setOutputKeyClass(KmerBytesWritable.class);
         job.setOutputValueClass(ValueStateWritable.class);
-        job.getConfiguration().setInt(NaiveAlgorithmForPathMergeVertex.KMER_SIZE, 5);
+        job.getConfiguration().setInt(NaiveAlgorithmForPathMergeVertex.KMER_SIZE, 55);
         job.getConfiguration().writeXml(new FileOutputStream(new File(outputPath)));
     }
     
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 af181d9..a381c3c 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,7 +34,7 @@
 	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 = "graph/7/TreePath";
+	private static final String DATA_PATH = "data/shortjump_1.head8M.fastq";
 	private static final String HDFS_INPUT_PATH = "/test";
 	private static final String HDFS_OUTPUT_PATH = "/result";
 
@@ -65,7 +65,7 @@
 		FileInputFormat.setInputPaths(conf, HDFS_INPUT_PATH);
 		FileOutputFormat.setOutputPath(conf, new Path(HDFS_OUTPUT_PATH));
 
-		conf.setInt(GenomixJob.KMER_LENGTH, 7);
+		conf.setInt(GenomixJob.KMER_LENGTH, 55);
 		driver = new Driver(
 				edu.uci.ics.hyracks.hdfs.utils.HyracksUtils.CC_HOST,
 				edu.uci.ics.hyracks.hdfs.utils.HyracksUtils.TEST_HYRACKS_CC_CLIENT_PORT,
diff --git a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/pathmerge/GraphBuildTestCase.java b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/pathmerge/GraphBuildTestCase.java
index a625a79..ef89b9e 100644
--- a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/pathmerge/GraphBuildTestCase.java
+++ b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/pathmerge/GraphBuildTestCase.java
@@ -60,7 +60,6 @@
 
 	public void TestPreClusterGroupby() throws Exception {
 		conf.set(GenomixJob.GROUPBY_TYPE, "precluster");
-		//conf.set(GenomixJob.OUTPUT_FORMAT, "text");
 		System.err.println("Testing PreClusterGroupBy");
 		driver.runJob(new GenomixJob(conf), Plan.BUILD_DEBRUJIN_GRAPH, true);
 		Assert.assertEquals(true, checkResults());
diff --git a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/pathmerge/MergePathTest.java b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/pathmerge/MergePathTest.java
index d813709..54cecbc 100644
--- a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/pathmerge/MergePathTest.java
+++ b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/pathmerge/MergePathTest.java
@@ -59,8 +59,8 @@
 					break;
 				}
 				if(value.getLengthOfMergeChain() != 0
-						&& value.getLengthOfMergeChain() != -1){
-						//&& value.getState() == State.FINAL_VERTEX){
+						&& value.getLengthOfMergeChain() != -1
+						&& value.getState() == State.FINAL_VERTEX){
 					//bw.write(key.toString() + "\t" + 
 					//	value.toString());
 					bw.write(value.getLengthOfMergeChain() + "\t" +
diff --git a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/pathmerge/PathMergeSmallTestCase.java b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/pathmerge/PathMergeSmallTestCase.java
index 67b6f21..4b6d367 100644
--- a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/pathmerge/PathMergeSmallTestCase.java
+++ b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/pathmerge/PathMergeSmallTestCase.java
@@ -77,7 +77,7 @@
 	private void compareResults() throws Exception {
 		dfs.copyToLocalFile(FileOutputFormat.getOutputPath(job), new Path(
 				resultFileDir));
-		GenerateTextFile.generateFromPathmergeResult(5, resultFileDir, textFileDir);
+		GenerateTextFile.generateFromPathmergeResult(55, resultFileDir, textFileDir);
 		// TestUtils.compareWithResultDir(new File(expectedFileDir), new
 		// File(resultFileDir));
 	}
diff --git a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/pathmerge/PathMergeSmallTestSuite.java b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/pathmerge/PathMergeSmallTestSuite.java
index c1ddfef..d05fc7a 100644
--- a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/pathmerge/PathMergeSmallTestSuite.java
+++ b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/pathmerge/PathMergeSmallTestSuite.java
@@ -44,14 +44,15 @@
 	private static final Logger LOGGER = Logger
 			.getLogger(PathMergeSmallTestSuite.class.getName());
 
-	public static final String PreFix = "data/PathTestSet";
+	public static final String PreFix = "data";
 	public static final String[] TestDir = { PreFix + File.separator
+		+  "test8m"};
 		/*+ "BridgePath", PreFix + File.separator
 		+ "CyclePath", PreFix + File.separator
 		+ "SimplePath", PreFix + File.separator
 		+ "SinglePath", PreFix + File.separator
 		+ "TreePath"};*/
-		+ "2", PreFix + File.separator
+		/*+ "2", PreFix + File.separator
 		+ "3", PreFix + File.separator
 		+ "4", PreFix + File.separator
 		+ "5", PreFix + File.separator
@@ -69,7 +70,7 @@
 		+ "CyclePath", PreFix + File.separator
 		+ "RingPath", PreFix + File.separator
 		+ "LongPath", PreFix + File.separator
-		+ "TreePath"};
+		+ "TreePath"};*/
 	private static final String ACTUAL_RESULT_DIR = "actual";
 	private static final String PATH_TO_HADOOP_CONF = "src/test/resources/hadoop/conf";
 	private static final String PATH_TO_CLUSTER_STORE = "src/test/resources/cluster/stores.properties";
