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 fc833f8..0edc762 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
@@ -15,9 +15,6 @@
 	private byte adjMap;
 	private byte state;
 	private VKmerBytesWritable mergeChain;
-	
-	//extra - for test
-	//private boolean isOp;
 
 	public ValueStateWritable() {
 		state = State.NON_VERTEX;
@@ -69,20 +66,11 @@
 		this.mergeChain.set(mergeChain);
 	}
 
-	/*public boolean isOp() {
-		return isOp;
-	}
-
-	public void setOp(boolean isOp) {
-		this.isOp = isOp;
-	}*/
-
 	@Override
 	public void readFields(DataInput in) throws IOException {
 		adjMap = in.readByte();
 		state = in.readByte();
 		mergeChain.readFields(in);
-		//isOp = in.readBoolean();
 	}
 
 	@Override
@@ -90,7 +78,6 @@
 		out.writeByte(adjMap);
 		out.writeByte(state);
 		mergeChain.write(out);
-		//out.writeBoolean(isOp);
 	}
 
 	@Override
@@ -103,7 +90,6 @@
 		return 	GeneCode.getSymbolFromBitMap(adjMap) + "\t" +
 				getLengthOfMergeChain() + "\t" +
 				mergeChain.toString();
-				//+ "\t" + state;
 	}
 	
 }
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/util/VertexUtil.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/util/VertexUtil.java
index 66e0f43..854d176 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/util/VertexUtil.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/util/VertexUtil.java
@@ -1,14 +1,10 @@
 package edu.uci.ics.genomix.pregelix.util;
 
-import edu.uci.ics.genomix.pregelix.operator.NaiveAlgorithmForPathMergeVertex;
 import edu.uci.ics.genomix.type.GeneCode;
 import edu.uci.ics.genomix.type.KmerBytesWritable;
 import edu.uci.ics.genomix.type.VKmerBytesWritable;
-import edu.uci.ics.genomix.type.VKmerBytesWritableFactory;
 
 public class VertexUtil {
-	public static VKmerBytesWritableFactory kmerFactory = new VKmerBytesWritableFactory(
-			NaiveAlgorithmForPathMergeVertex.kmerSize);
 	public static VKmerBytesWritable subKmer = new VKmerBytesWritable(0);
 	/**
 	 * Single Vertex: in-degree = out-degree = 1
@@ -56,9 +52,11 @@
 	 * check if mergeChain is cycle
 	 */
 	public static boolean isCycle(KmerBytesWritable vertexId, VKmerBytesWritable mergeChain, int kmerSize){
-        for(int istart = 1; istart < mergeChain.getKmerLength() - kmerSize + 1; istart++) {
-        	subKmer = kmerFactory.getSubKmerFromChain(istart, kmerSize, mergeChain);
-            if(subKmer.equals(vertexId))
+		subKmer.set(vertexId);
+        for(int istart = 1; istart < mergeChain.getKmerLength() - kmerSize + 1; istart++){
+        	byte nextgene = mergeChain.getGeneCodeAtPosition(istart+kmerSize);
+        	subKmer.shiftKmerWithNextCode(nextgene);
+        	if(subKmer.equals(vertexId))
             	return true;
         }
         return false;
