Add isUnMergeVertex()
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/BasicGraphCleanVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/BasicGraphCleanVertex.java
index bb99981..f1fb14a 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/BasicGraphCleanVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/BasicGraphCleanVertex.java
@@ -403,6 +403,7 @@
             outFlag = 0;
             outFlag |= MessageFlag.IS_HEAD;
             sendSettledMsgToAllNeighborNodes(tmpValue);
+            voteToHalt();
         } else{
         	// update internal state
             if (VertexUtil.isVertexWithOnlyOneIncoming(getVertexValue())){
@@ -418,7 +419,6 @@
                 getVertexValue().setState(state);
                 activate();
             }
-            
             // send to neighbors
             if (VertexUtil.isVertexWithManyIncoming(getVertexValue())) {
                 outFlag = 0;
@@ -429,11 +429,9 @@
                 outFlag |= MessageFlag.IS_HEAD;
                 sendSettledMsgToAllNextNodes(getVertexValue());
             }
-        }
-        if(!VertexUtil.isActiveVertex(getVertexValue())
-                || isTandemRepeat(getVertexValue())){
-            getVertexValue().setState(State.IS_HALT);
-            voteToHalt();
+            //if UnmergeVertex, voteToHalt()
+            if(VertexUtil.isUnMergeVertex(getVertexValue()))
+                    voteToHalt();
         }
     }
 
@@ -698,12 +696,14 @@
     }
     
     public boolean isTandemRepeat(VertexValueWritable value){
+        VKmerBytesWritable kmerToCheck;
         for(byte d : DirectionFlag.values){
             Iterator<VKmerBytesWritable> it = value.getEdgeList(d).getKeys();
             while(it.hasNext()){
-                repeatKmer.setAsCopy(it.next());
+                kmerToCheck = it.next();
                 if(repeatKmer.equals(getVertexId())){
                     repeatDir = d;
+                    repeatKmer.setAsCopy(kmerToCheck);
                     return true;
                 }
             }
@@ -817,11 +817,19 @@
                 voteToHalt();
             }
         }
-        if(!VertexUtil.isActiveVertex(getVertexValue())
+        if(!VertexUtil.isCanMergeVertex(getVertexValue())
                 || isTandemRepeat(getVertexValue())){
             getVertexValue().setState(MessageFlag.IS_HALT);
             voteToHalt();
         }
     }
     
+    public boolean isInactiveNode(){
+        return VertexUtil.isUnMergeVertex(getVertexValue()) || isTandemRepeat(getVertexValue());
+    }
+    
+    public boolean isActiveNode(){
+        return !isInactiveNode();
+    }
+    
 }
\ No newline at end of file
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 083b659..9f47631 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
@@ -174,10 +174,14 @@
         return value.outDegree() > 1;
     }
     
-    public static boolean isActiveVertex(VertexValueWritable value){
+    public static boolean isCanMergeVertex(VertexValueWritable value){
         return value.inDegree() == 1 || value.outDegree() == 1;
     }
     
+    public static boolean isUnMergeVertex(VertexValueWritable value){
+        return !isCanMergeVertex(value);
+    }
+    
     /**
      * check if the vertex is bubble
      */