diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/LogAlgorithmForMergeGraphVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/LogAlgorithmForMergeGraphVertex.java
index 757d8f8..9947d1c 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/LogAlgorithmForMergeGraphVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/LogAlgorithmForMergeGraphVertex.java
@@ -45,9 +45,11 @@
  * The succeed node and precursor node will be stored in vertexValue and we don't use edgeValue.
  * The details about message are in edu.uci.ics.pregelix.example.io.MessageWritable. 
  */
-public class LogAlgorithmForMergeGraphVertex extends Vertex<BytesWritable, ValueStateWritable, NullWritable, LogAlgorithmMessageWritable>{
+public class LogAlgorithmForMergeGraphVertex extends Vertex<BytesWritable, ValueStateWritable, NullWritable, LogAlgorithmMessageWritable>{	
 	public static final String KMER_SIZE = "LogAlgorithmForMergeGraphVertex.kmerSize";
+	public static final String ITERATIONS = "MergeGraphVertex.iteration";
 	public static int kmerSize = -1;
+	private int maxIteration = -1;
 	
 	private byte[] tmpVertexId;
 	private byte[] tmpDestVertexId;
@@ -60,18 +62,15 @@
 	/**
 	 * Log Algorithm for path merge graph
 	 */
-	
 	/**
-     *	Load KmerSize
+     *	Load KmerSize, MaxIteration
      */
-	public LogAlgorithmForMergeGraphVertex(){
-		
-	}
-	
 	@Override
 	public void compute(Iterator<LogAlgorithmMessageWritable> msgIterator) {
 		if(kmerSize == -1)
 			kmerSize = getContext().getConfiguration().getInt(KMER_SIZE, 5);
+        if (maxIteration < 0)
+            maxIteration = getContext().getConfiguration().getInt(ITERATIONS, 100);
 		tmpVertexId = GraphVertexOperation.generateValidDataFromBytesWritable(getVertexId());
 		tmpVal = getVertexValue();
 		if (getSuperstep() == 1) {
@@ -103,12 +102,12 @@
 				tmpVal.setState(State.MID_VERTEX);
 				setVertexValue(tmpVal);
 			}
-			if(!GraphVertexOperation.isHeadVertex(tmpVal.getValue())
+			/*if(!GraphVertexOperation.isHeadVertex(tmpVal.getValue())
 					&& !GraphVertexOperation.isRearVertex(tmpVal.getValue())
 					&& !GraphVertexOperation.isRearVertex(tmpVal.getValue()))
-				voteToHalt();
+				voteToHalt();*/
 		}
-		else if(getSuperstep() == 2){
+		else if(getSuperstep() == 2 && getSuperstep() <= maxIteration){
 			while(msgIterator.hasNext()){
 				if(!GraphVertexOperation.isPathVertex(tmpVal.getValue())){
 					msgIterator.next();
@@ -116,7 +115,8 @@
 				}
 				else{
 					tmpMsg = msgIterator.next();
-					if(tmpMsg.getMessage() == Message.START && tmpVal.getState() == State.MID_VERTEX){
+					if(tmpMsg.getMessage() == Message.START && 
+							(tmpVal.getState() == State.MID_VERTEX || tmpVal.getState() == State.END_VERTEX)){
 						tmpVal.setState(State.START_VERTEX);
 						setVertexValue(tmpVal);
 					}
@@ -131,7 +131,7 @@
 			}
 		}
 		//head node sends message to path node
-		else if(getSuperstep()%3 == 0){
+		else if(getSuperstep()%3 == 0 && getSuperstep() <= maxIteration){
 			if(getSuperstep() == 3){
 				tmpMsg = new LogAlgorithmMessageWritable();
 				if(Kmer.GENE_CODE.getGeneCodeFromBitMap((byte)(tmpVal.getValue() & 0x0F)) == -1)
@@ -167,7 +167,7 @@
 					else{
 						tmpDestVertexId = KmerUtil.shiftKmerWithNextCode(kmerSize, lastKmer, 
 								0, lastKmer.length,
-								Kmer.GENE_CODE.getGeneCodeFromBitMap((byte)(tmpVal.getValue() & 0x0F))); //tmpMsg.getNeighberInfo()
+								Kmer.GENE_CODE.getGeneCodeFromBitMap((byte)(tmpVal.getValue() & 0x0F))); 
 						destVertexId.set(tmpDestVertexId, 0, tmpDestVertexId.length);
 						if(tmpVal.getState() == State.START_VERTEX){
 							tmpMsg.setMessage(Message.START);
@@ -186,7 +186,7 @@
 		}
 		
 		//path node sends message back to head node
-		else if(getSuperstep()%3 == 1){
+		else if(getSuperstep()%3 == 1 && getSuperstep() <= maxIteration){
 			if(msgIterator.hasNext()){
 				tmpMsg = msgIterator.next();
 				int message = tmpMsg.getMessage();
@@ -217,15 +217,16 @@
 				}
 				destVertexId.set(tmpMsg.getSourceVertexId(), 0, tmpMsg.getSourceVertexId().length);
 				sendMsg(destVertexId,tmpMsg);
-				voteToHalt();
+				//voteToHalt();
 			}
 			else{
 				if(getVertexValue().getState() != State.START_VERTEX
-						&& getVertexValue().getState() != State.END_VERTEX && getVertexValue().getState() != State.FINAL_DELETE)
+						&& getVertexValue().getState() != State.END_VERTEX && getVertexValue().getState() != State.FINAL_DELETE){
 					deleteVertex(getVertexId()); //killSelf because it doesn't receive any message
+				}
 			}
 		}
-		else if(getSuperstep()%3 == 2){
+		else if(getSuperstep()%3 == 2 && getSuperstep() <= maxIteration){
 			if(tmpVal.getState() == State.TODELETE)
 				deleteVertex(getVertexId()); //killSelf
 			else{
@@ -275,7 +276,6 @@
 					voteToHalt();
 				}
 			}
-			
 		}
 	}
 
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/MergeGraphVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/MergeGraphVertex.java
index 0f244dc..067b70d 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/MergeGraphVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/MergeGraphVertex.java
@@ -63,7 +63,7 @@
 	 * @throws  
 	 */
 	/**
-     *	Load KmerSize
+     *	Load KmerSize, MaxIteration
      */
 	@Override
 	public void compute(Iterator<MessageWritable> msgIterator) {
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/format/LogAlgorithmForMergeGraphOutputFormat.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/format/LogAlgorithmForMergeGraphOutputFormat.java
index aa81066..24fca7b 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/format/LogAlgorithmForMergeGraphOutputFormat.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/format/LogAlgorithmForMergeGraphOutputFormat.java
@@ -7,11 +7,13 @@
 import org.apache.hadoop.mapreduce.RecordWriter;
 import org.apache.hadoop.mapreduce.TaskAttemptContext;
 
+import edu.uci.ics.genomix.pregelix.GraphVertexOperation;
 import edu.uci.ics.genomix.pregelix.api.io.binary.BinaryVertexOutputFormat;
 import edu.uci.ics.pregelix.api.graph.Vertex;
 import edu.uci.ics.pregelix.api.io.VertexWriter;
 import edu.uci.ics.genomix.pregelix.io.ValueStateWritable;
 import edu.uci.ics.genomix.pregelix.type.State;
+import edu.uci.ics.genomix.type.Kmer;
 
 public class LogAlgorithmForMergeGraphOutputFormat extends 
 	BinaryVertexOutputFormat<BytesWritable, ValueStateWritable, NullWritable> {
@@ -37,7 +39,8 @@
             @Override
             public void writeVertex(Vertex<BytesWritable, ValueStateWritable, NullWritable, ?> vertex) throws IOException,
                     InterruptedException {
-            	if(vertex.getVertexValue().getState() != State.FINAL_DELETE)
+            	if(vertex.getVertexValue().getState() != State.FINAL_DELETE
+            			&& vertex.getVertexValue().getState() != State.END_VERTEX)
                     getRecordWriter().write(vertex.getVertexId(),vertex.getVertexValue());
             }
         }
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/ValueStateWritable.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/ValueStateWritable.java
index 9acda4e..f101d7f 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/ValueStateWritable.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/ValueStateWritable.java
@@ -5,6 +5,7 @@
 import org.apache.hadoop.io.WritableComparable;
 
 import edu.uci.ics.genomix.pregelix.type.State;
+import edu.uci.ics.genomix.type.Kmer;
 
 
 public class ValueStateWritable implements WritableComparable<ValueStateWritable> {
@@ -63,6 +64,8 @@
 		value = in.readByte();
 		state = in.readInt();
 		lengthOfMergeChain = in.readInt();
+		if(lengthOfMergeChain < 0)
+			System.out.println();
 		if(lengthOfMergeChain != 0){
 			mergeChain = new byte[(lengthOfMergeChain-1)/4 + 1];
 			in.readFully(mergeChain);
@@ -86,4 +89,14 @@
 		return 0;
 	}
 	
+	@Override
+	public String toString() {
+		if(lengthOfMergeChain == 0)
+			return Kmer.GENE_CODE.getSymbolFromBitMap(value);
+		return 	Kmer.GENE_CODE.getSymbolFromBitMap(value) + "\t" +
+				lengthOfMergeChain + "\t" +
+				Kmer.recoverKmerFrom(lengthOfMergeChain, mergeChain, 0, mergeChain.length) + "\t" +
+				state;
+	}
+	
 }
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/sequencefile/GenerateTextFile.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/sequencefile/GenerateTextFile.java
new file mode 100644
index 0000000..8ab6990
--- /dev/null
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/sequencefile/GenerateTextFile.java
@@ -0,0 +1,50 @@
+package edu.uci.ics.genomix.pregelix.sequencefile;
+
+import java.io.BufferedWriter;
+import java.io.FileWriter;
+import java.io.IOException;
+
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.FileSystem;
+import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.io.BytesWritable;
+import org.apache.hadoop.io.SequenceFile;
+
+import edu.uci.ics.genomix.pregelix.io.ValueStateWritable;
+import edu.uci.ics.genomix.type.Kmer;
+
+public class GenerateTextFile {
+
+	public static void generate() throws IOException{
+		BufferedWriter bw = new BufferedWriter(new FileWriter("text/naive_CyclePath"));
+		Configuration conf = new Configuration();
+		FileSystem fileSys = FileSystem.get(conf);
+		for(int i = 0; i < 2; i++){
+			Path path = new Path("output/part-" + i);
+			SequenceFile.Reader reader = new SequenceFile.Reader(fileSys, path, conf);
+		    BytesWritable key = new BytesWritable();
+		    ValueStateWritable value = new ValueStateWritable();
+		    
+		    while(reader.next(key, value)){
+				if (key == null || value == null){
+					break;
+				}
+				bw.write(Kmer.recoverKmerFrom(5, key.getBytes(), 0,
+						key.getLength())
+						+ "\t" + value.toString());
+				bw.newLine();
+		    }
+		    reader.close();
+		}
+		bw.close();
+	}
+	/**
+	 * @param args
+	 * @throws IOException 
+	 */
+	public static void main(String[] args) throws IOException {
+		// TODO Auto-generated method stub
+		generate();
+	}
+
+}
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 53340dc..763d46e 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
@@ -71,7 +71,7 @@
         job.setOutputValueClass(ValueStateWritable.class);
         FileInputFormat.setInputPaths(job, HDFS_INPUTPATH);
         FileOutputFormat.setOutputPath(job, new Path(HDFS_OUTPUTPAH));
-        job.getConfiguration().setInt(LogAlgorithmForMergeGraphVertex.KMER_SIZE, 55);
+        job.getConfiguration().setInt(LogAlgorithmForMergeGraphVertex.KMER_SIZE, 5);
         job.getConfiguration().writeXml(new FileOutputStream(new File(outputPath)));
     }
     
@@ -86,8 +86,8 @@
 	public static void main(String[] args) throws IOException {
 		// TODO Auto-generated method stub
 		//genLoadGraph();
-		genMergeGraph();
-		//genLogAlgorithmForMergeGraph();
+		//genMergeGraph();
+		genLogAlgorithmForMergeGraph();
 		//genSequenceLoadGraph();
 		//genBasicBinaryLoadGraph();
 	}
diff --git a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/RunJobTestSuite.java b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/RunJobTestSuite.java
index ba0f4c3..8d08f2b 100644
--- a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/RunJobTestSuite.java
+++ b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/RunJobTestSuite.java
@@ -40,7 +40,7 @@
 	private static final String PATH_TO_ONLY = "src/test/resources/only.txt";
 	private static final String FILE_EXTENSION_OF_RESULTS = "result";
 
-	private static final String DATA_PATH = "data/input/part-1-out-500000";// sequenceShortFileMergeTest
+	private static final String DATA_PATH = "data/result/BridgePath";// sequenceShortFileMergeTest
 	private static final String HDFS_PATH = "/webmap/";
 
 	private static final String HYRACKS_APP_NAME = "pregelix";
diff --git a/genomix/genomix-pregelix/text/BridgePath/log_BridgePath b/genomix/genomix-pregelix/text/BridgePath/log_BridgePath
new file mode 100644
index 0000000..cab1281
--- /dev/null
+++ b/genomix/genomix-pregelix/text/BridgePath/log_BridgePath
@@ -0,0 +1,6 @@
+TTCCA	T|C
+CCGTG	CT|
+TCCAC	T|CT
+CCACC	T|G	9	CCACCCCGT	5
+TTTCC	|A
+CCACT	T|G	9	CCACTCCGT	5
diff --git a/genomix/genomix-pregelix/text/BridgePath/naive_BridgePath b/genomix/genomix-pregelix/text/BridgePath/naive_BridgePath
new file mode 100644
index 0000000..c669dba
--- /dev/null
+++ b/genomix/genomix-pregelix/text/BridgePath/naive_BridgePath
@@ -0,0 +1,6 @@
+TTCCA	T|C	5	TTCCA	1
+CCGTG	CT|
+TCCAC	T|CT
+CCACC	T|G	9	CCACCCCGT	1
+TTTCC	|A
+CCACT	T|C
diff --git a/genomix/genomix-pregelix/text/CyclePath/log_CyclePath b/genomix/genomix-pregelix/text/CyclePath/log_CyclePath
new file mode 100644
index 0000000..d0ee84f
--- /dev/null
+++ b/genomix/genomix-pregelix/text/CyclePath/log_CyclePath
@@ -0,0 +1,3 @@
+GCAAC	|T
+AACTT	C|T	12	AACTTCATCAAC	5
+CAACT	GT|T
diff --git a/genomix/genomix-pregelix/text/CyclePath/naive_CyclePath b/genomix/genomix-pregelix/text/CyclePath/naive_CyclePath
new file mode 100644
index 0000000..5cdb7c2
--- /dev/null
+++ b/genomix/genomix-pregelix/text/CyclePath/naive_CyclePath
@@ -0,0 +1,3 @@
+GCAAC	|T
+AACTT	C|T	12	AACTTCATCAAC	1
+CAACT	GT|T
diff --git a/genomix/genomix-pregelix/text/LongPath/log_LongPath b/genomix/genomix-pregelix/text/LongPath/log_LongPath
new file mode 100644
index 0000000..98cb21e
--- /dev/null
+++ b/genomix/genomix-pregelix/text/LongPath/log_LongPath
@@ -0,0 +1,3 @@
+GCCTC	G|G	15	GCCTCAGTACGCCCG	5
+CCCGG	G|
+GGCCT	|C
diff --git a/genomix/genomix-pregelix/text/LongPath/naive_LongPath b/genomix/genomix-pregelix/text/LongPath/naive_LongPath
new file mode 100644
index 0000000..c1a472e
--- /dev/null
+++ b/genomix/genomix-pregelix/text/LongPath/naive_LongPath
@@ -0,0 +1,3 @@
+GCCTC	G|G	15	GCCTCAGTACGCCCG	1
+CCCGG	G|
+GGCCT	|C
diff --git a/genomix/genomix-pregelix/text/Path/log_Path b/genomix/genomix-pregelix/text/Path/log_Path
new file mode 100644
index 0000000..3a46528
--- /dev/null
+++ b/genomix/genomix-pregelix/text/Path/log_Path
@@ -0,0 +1,3 @@
+GCCTC	G|G	10	GCCTCAGTAC	5
+GGCCT	|C
+GTACG	A|
diff --git a/genomix/genomix-pregelix/text/Path/naive_Path b/genomix/genomix-pregelix/text/Path/naive_Path
new file mode 100644
index 0000000..b8d2aeb
--- /dev/null
+++ b/genomix/genomix-pregelix/text/Path/naive_Path
@@ -0,0 +1,3 @@
+GCCTC	G|G	10	GCCTCAGTAC	1
+GGCCT	|C
+GTACG	A|
diff --git a/genomix/genomix-pregelix/text/SimplePath/log_SimplePath b/genomix/genomix-pregelix/text/SimplePath/log_SimplePath
new file mode 100644
index 0000000..5c149ac
--- /dev/null
+++ b/genomix/genomix-pregelix/text/SimplePath/log_SimplePath
@@ -0,0 +1,9 @@
+CGGCA	G|A	8	CGGCAAGA	5
+AGCAC	C|
+AAGAC	|A
+GCGGC	|A
+GCATC	C|
+ATATC	|G
+TATCG	A|C	8	TATCGCAT	5
+AAGAA	C|
+AGACA	A|C	8	AGACAGCA	5
diff --git a/genomix/genomix-pregelix/text/SimplePath/naive_SimplePath b/genomix/genomix-pregelix/text/SimplePath/naive_SimplePath
new file mode 100644
index 0000000..cf53cc8
--- /dev/null
+++ b/genomix/genomix-pregelix/text/SimplePath/naive_SimplePath
@@ -0,0 +1,9 @@
+CGGCA	G|A	8	CGGCAAGA	1
+AGCAC	C|
+AAGAC	|A
+GCGGC	|A
+GCATC	C|
+ATATC	|G
+TATCG	A|C	8	TATCGCAT	1
+AAGAA	C|
+AGACA	A|C	8	AGACAGCA	1
diff --git a/genomix/genomix-pregelix/text/SinglePath/log_SinglePath b/genomix/genomix-pregelix/text/SinglePath/log_SinglePath
new file mode 100644
index 0000000..f1371ec
--- /dev/null
+++ b/genomix/genomix-pregelix/text/SinglePath/log_SinglePath
@@ -0,0 +1,3 @@
+ACAGT	A|
+GACAA	A|T	8	GACAACAG	5
+AGACA	|A
diff --git a/genomix/genomix-pregelix/text/SinglePath/naive_SinglePath b/genomix/genomix-pregelix/text/SinglePath/naive_SinglePath
new file mode 100644
index 0000000..b736667
--- /dev/null
+++ b/genomix/genomix-pregelix/text/SinglePath/naive_SinglePath
@@ -0,0 +1,3 @@
+ACAGT	A|
+GACAA	A|T	8	GACAACAG	1
+AGACA	|A
diff --git a/genomix/genomix-pregelix/text/TreePath/log_TreePath b/genomix/genomix-pregelix/text/TreePath/log_TreePath
new file mode 100644
index 0000000..0b9f198
--- /dev/null
+++ b/genomix/genomix-pregelix/text/TreePath/log_TreePath
@@ -0,0 +1,9 @@
+CAGTA	T|AC
+AGTAC	C|G	10	AGTACGCCCG	5
+ATCCC	T|
+GCCTC	G|A	8	GCCTCAGT	5
+CCCGG	G|
+GGCCT	|CG
+AGTAA	C|C	10	AGTAACTAAA	5
+TAAAC	C|
+GCCTG	G|C	12	GCCTGGCTATCC	5
diff --git a/genomix/genomix-pregelix/text/TreePath/naive_TreePath b/genomix/genomix-pregelix/text/TreePath/naive_TreePath
new file mode 100644
index 0000000..39dcbaa
--- /dev/null
+++ b/genomix/genomix-pregelix/text/TreePath/naive_TreePath
@@ -0,0 +1,9 @@
+CAGTA	T|AC
+AGTAC	C|G	10	AGTACGCCCG	1
+ATCCC	T|
+GCCTC	G|A	8	GCCTCAGT	1
+CCCGG	G|
+GGCCT	|CG
+AGTAA	C|C	10	AGTAACTAAA	1
+TAAAC	C|
+GCCTG	G|C	12	GCCTGGCTATCC	1
