add kmer factory
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;