diff --git a/genomix/genomix-pregelix/data/webmap/part-1-out-100000 b/genomix/genomix-pregelix/data/webmap/part-1-out-100000
deleted file mode 100755
index 99d2fac..0000000
--- a/genomix/genomix-pregelix/data/webmap/part-1-out-100000
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/webmap/part-1-out-200000 b/genomix/genomix-pregelix/data/webmap/part-1-out-200000
deleted file mode 100755
index 86413de..0000000
--- a/genomix/genomix-pregelix/data/webmap/part-1-out-200000
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/webmap/part-1-out-25000 b/genomix/genomix-pregelix/data/webmap/part-1-out-25000
deleted file mode 100755
index 079f915..0000000
--- a/genomix/genomix-pregelix/data/webmap/part-1-out-25000
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/webmap/part-1-out-50000 b/genomix/genomix-pregelix/data/webmap/part-1-out-50000
deleted file mode 100755
index d292c19..0000000
--- a/genomix/genomix-pregelix/data/webmap/part-1-out-50000
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/webmap/part-1-out-500000 b/genomix/genomix-pregelix/data/webmap/part-1-out-500000
deleted file mode 100755
index 01fdc9e..0000000
--- a/genomix/genomix-pregelix/data/webmap/part-1-out-500000
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/webmap/sequenceFileLongMergeTest b/genomix/genomix-pregelix/data/webmap/sequenceFileLongMergeTest
deleted file mode 100755
index ff27c48..0000000
--- a/genomix/genomix-pregelix/data/webmap/sequenceFileLongMergeTest
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/webmap/sequenceFileMergeTest b/genomix/genomix-pregelix/data/webmap/sequenceFileMergeTest
deleted file mode 100755
index b50d3f1..0000000
--- a/genomix/genomix-pregelix/data/webmap/sequenceFileMergeTest
+++ /dev/null
Binary files differ
diff --git a/genomix/genomix-pregelix/data/webmap/sequenceShortFileMergeTest b/genomix/genomix-pregelix/data/webmap/sequenceShortFileMergeTest
deleted file mode 100755
index 96f7fc9..0000000
--- a/genomix/genomix-pregelix/data/webmap/sequenceShortFileMergeTest
+++ /dev/null
Binary files differ
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 12450b4..0f244dc 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
@@ -2,11 +2,8 @@
 
 import java.util.Iterator;
 
-import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.io.BytesWritable;
 import org.apache.hadoop.io.NullWritable;
-import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
-import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
 
 import edu.uci.ics.genomix.type.Kmer;
 import edu.uci.ics.genomix.type.KmerUtil;
@@ -50,7 +47,9 @@
 public class MergeGraphVertex extends Vertex<BytesWritable, ValueStateWritable, NullWritable, MessageWritable>{
 	
 	public static final String KMER_SIZE = "MergeGraphVertex.kmerSize";
+	public static final String ITERATIONS = "MergeGraphVertex.iteration";
 	public static int kmerSize = -1;
+	private int maxIteration = -1;
 	
     private byte[] tmpVertexId;
     private byte[] tmpDestVertexId;
@@ -63,7 +62,6 @@
 	 * @throws Exception 
 	 * @throws  
 	 */
-	
 	/**
      *	Load KmerSize
      */
@@ -71,6 +69,8 @@
 	public void compute(Iterator<MessageWritable> msgIterator) {
 		if(kmerSize == -1)
 			kmerSize = getContext().getConfiguration().getInt(KMER_SIZE, 5);
+        if (maxIteration < 0) 
+            maxIteration = getContext().getConfiguration().getInt(ITERATIONS, 100);
 		tmpVertexId = GraphVertexOperation.generateValidDataFromBytesWritable(getVertexId());
 		if (getSuperstep() == 1) {
 			if(GraphVertexOperation.isHeadVertex(getVertexValue().getValue())){ 
@@ -89,8 +89,7 @@
 		}
 		
 		//path node sends message back to head node
-		else if(getSuperstep()%2 == 0){
-			
+		else if(getSuperstep()%2 == 0 && getSuperstep() <= maxIteration){
 			 if(msgIterator.hasNext()){
 				tmpMsg = msgIterator.next();
 					
@@ -147,7 +146,7 @@
 			}
 		}
 		//head node sends message to path node
-		else if(getSuperstep()%2 == 1){
+		else if(getSuperstep()%2 == 1 && getSuperstep() <= maxIteration){
 			while (msgIterator.hasNext()){
 				tmpMsg = msgIterator.next();
 				if(!tmpMsg.isRear()){
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 ab0fb57..2d70fdf 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
@@ -36,6 +36,9 @@
         
         @Option(name = "-kmer-size", usage = "the size of kmer", required = false)
         public int sizeKmer;
+        
+        @Option(name = "-num-iteration", usage = "max number of iterations, for pagerank job only", required = false)
+        public long numIteration = -1;
 
         @Option(name = "-runtime-profiling", usage = "whether to do runtime profifling", required = false)
         public String profiling = "false";
@@ -59,6 +62,10 @@
         FileOutputFormat.setOutputPath(job, new Path(options.outputPath));
         job.getConfiguration().setInt(MergeGraphVertex.KMER_SIZE, options.sizeKmer);
         job.getConfiguration().setInt(LogAlgorithmForMergeGraphVertex.KMER_SIZE, options.sizeKmer);
+        if (options.numIteration > 0){
+            job.getConfiguration().setLong(MergeGraphVertex.ITERATIONS, options.numIteration);
+            //job.getConfiguration().setLong(LogAlgorithmForMergeGraphVertex.ITERATIONS, options.numIteration);
+        }
         return options;
     }
 
