Change should to can, make it more meaningful
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/VertexValueWritable.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/VertexValueWritable.java
index 5bf3f92..e2779f7 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/VertexValueWritable.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/VertexValueWritable.java
@@ -19,10 +19,10 @@
     private static final long serialVersionUID = 1L;
     
     public static class HeadMergeDir{
-        public static final byte HEAD_SHOULD_MERGEWITHPREV = 0b0 << 2; //use for initiating head
-        public static final byte HEAD_SHOULD_MERGEWITHNEXT = 0b1 << 2;
-        public static final byte HEAD_SHOULD_MERGE_MASK = 0b1 << 2;
-        public static final byte HEAD_SHOULD_MERGE_CLEAR = (byte)1000011;
+        public static final byte HEAD_CAN_MERGEWITHPREV = 0b0 << 2; //use for initiating head
+        public static final byte HEAD_CAN_MERGEWITHNEXT = 0b1 << 2;
+        public static final byte HEAD_CAN_MERGE_MASK = 0b1 << 2;
+        public static final byte HEAD_CAN_MERGE_CLEAR = (byte)1000011;
     }
     
     public static class VertexStateFlag extends HeadMergeDir{
@@ -63,10 +63,10 @@
     
     public static class State extends VertexStateFlag{   
         public static final byte NO_MERGE = 0b00 << 0;
-        public static final byte SHOULD_MERGEWITHNEXT = 0b01 << 0;
-        public static final byte SHOULD_MERGEWITHPREV = 0b10 << 0;
-        public static final byte SHOULD_MERGE_MASK = 0b11 << 0;
-        public static final byte SHOULD_MERGE_CLEAR = 0b1111100;
+        public static final byte CAN_MERGEWITHNEXT = 0b01 << 0;
+        public static final byte CAN_MERGEWITHPREV = 0b10 << 0;
+        public static final byte CAN_MERGE_MASK = 0b11 << 0;
+        public static final byte CAN_MERGE_CLEAR = 0b1111100;
         
         public static final byte IS_NONFAKE = 0 << 6;
         public static final byte IS_FAKE = 1 << 6;
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 1f3bf41..bb99981 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
@@ -105,12 +105,12 @@
     }
     
     public byte getHeadMergeDir(){
-        return (byte) (getVertexValue().getState() & State.HEAD_SHOULD_MERGE_MASK);
+        return (byte) (getVertexValue().getState() & State.HEAD_CAN_MERGE_MASK);
     }
     
     public byte getHeadFlagAndMergeDir(){
         byte flagAndMergeDir = (byte)(getVertexValue().getState() & State.IS_HEAD);
-        flagAndMergeDir |= (byte)(getVertexValue().getState() & State.HEAD_SHOULD_MERGE_MASK);
+        flagAndMergeDir |= (byte)(getVertexValue().getState() & State.HEAD_CAN_MERGE_MASK);
         return flagAndMergeDir;
     }
     
@@ -121,11 +121,11 @@
         switch(neighborToMeDir){
             case MessageFlag.DIR_FF:
             case MessageFlag.DIR_FR:
-                flagAndMergeDir |= MessageFlag.HEAD_SHOULD_MERGEWITHPREV;
+                flagAndMergeDir |= MessageFlag.HEAD_CAN_MERGEWITHPREV;
                 break;
             case MessageFlag.DIR_RF:
             case MessageFlag.DIR_RR:
-                flagAndMergeDir |= MessageFlag.HEAD_SHOULD_MERGEWITHNEXT;
+                flagAndMergeDir |= MessageFlag.HEAD_CAN_MERGEWITHNEXT;
                 break;
         }
         return flagAndMergeDir;
@@ -408,13 +408,13 @@
             if (VertexUtil.isVertexWithOnlyOneIncoming(getVertexValue())){
                 byte state = 0;
                 state |= State.IS_HEAD;
-                state |= State.HEAD_SHOULD_MERGEWITHPREV;
+                state |= State.HEAD_CAN_MERGEWITHPREV;
                 getVertexValue().setState(state);
                 activate();
             } else if (VertexUtil.isVertexWithOnlyOneOutgoing(getVertexValue())){
             	byte state = 0;
                 state |= State.IS_HEAD;
-                state |= State.HEAD_SHOULD_MERGEWITHNEXT;
+                state |= State.HEAD_CAN_MERGEWITHNEXT;
                 getVertexValue().setState(state);
                 activate();
             }
@@ -444,11 +444,11 @@
         switch(neighborToMeDir){
             case MessageFlag.DIR_FF:
             case MessageFlag.DIR_FR:
-                state |= MessageFlag.HEAD_SHOULD_MERGEWITHPREV;
+                state |= MessageFlag.HEAD_CAN_MERGEWITHPREV;
                 break;
             case MessageFlag.DIR_RF:
             case MessageFlag.DIR_RR:
-                state |= MessageFlag.HEAD_SHOULD_MERGEWITHNEXT;
+                state |= MessageFlag.HEAD_CAN_MERGEWITHNEXT;
                 break;
         }
         getVertexValue().setState(state);
@@ -576,7 +576,7 @@
      */
     public void setStateAsNoMerge(){
     	byte state = getVertexValue().getState();
-    	state &= State.SHOULD_MERGE_CLEAR;
+    	state &= State.CAN_MERGE_CLEAR;
         state |= State.NO_MERGE;
         getVertexValue().setState(state);
         activate();  //could we be more careful about activate?
@@ -798,14 +798,14 @@
             if (VertexUtil.isVertexWithOnlyOneIncoming(getVertexValue()) && getVertexValue().outDegree() == 0){
                 outFlag = 0;
                 outFlag |= MessageFlag.IS_HEAD;
-                outFlag |= MessageFlag.HEAD_SHOULD_MERGEWITHPREV;
+                outFlag |= MessageFlag.HEAD_CAN_MERGEWITHPREV;
                 getVertexValue().setState(outFlag);
                 activate();
             }
             if (VertexUtil.isVertexWithOnlyOneOutgoing(getVertexValue()) && getVertexValue().inDegree() == 0){
                 outFlag = 0;
                 outFlag |= MessageFlag.IS_HEAD;
-                outFlag |= MessageFlag.HEAD_SHOULD_MERGEWITHNEXT;
+                outFlag |= MessageFlag.HEAD_CAN_MERGEWITHNEXT;
                 getVertexValue().setState(outFlag);
                 activate();
             }
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/BasicPathMergeVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/BasicPathMergeVertex.java
index c64edf3..daea33d 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/BasicPathMergeVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/BasicPathMergeVertex.java
@@ -18,16 +18,16 @@
 	
     public void setStateAsMergeWithPrev(){
         byte state = getVertexValue().getState();
-        state &= State.SHOULD_MERGE_CLEAR;
-        state |= State.SHOULD_MERGEWITHPREV;
+        state &= State.CAN_MERGE_CLEAR;
+        state |= State.CAN_MERGEWITHPREV;
         getVertexValue().setState(state);
         activate();
     }
     
     public void setStateAsMergeWithNext(){
         byte state = getVertexValue().getState();
-        state &= State.SHOULD_MERGE_CLEAR;
-        state |= State.SHOULD_MERGEWITHNEXT;
+        state &= State.CAN_MERGE_CLEAR;
+        state |= State.CAN_MERGEWITHNEXT;
         getVertexValue().setState(state);
         activate();
     }
@@ -81,10 +81,10 @@
     public byte flipHeadMergeDir(byte d, boolean isFlip){
         if(isFlip){
             switch(d){
-                case State.HEAD_SHOULD_MERGEWITHPREV:
-                    return State.HEAD_SHOULD_MERGEWITHNEXT;
-                case State.HEAD_SHOULD_MERGEWITHNEXT:
-                    return State.HEAD_SHOULD_MERGEWITHPREV;
+                case State.HEAD_CAN_MERGEWITHPREV:
+                    return State.HEAD_CAN_MERGEWITHNEXT;
+                case State.HEAD_CAN_MERGEWITHNEXT:
+                    return State.HEAD_CAN_MERGEWITHPREV;
                     default:
                         return 0;
             }
@@ -106,9 +106,9 @@
 
         if((inFlag & MessageFlag.IS_HEAD) > 0){
             byte state = getVertexValue().getState();
-            state &= State.HEAD_SHOULD_MERGE_CLEAR;
+            state &= State.HEAD_CAN_MERGE_CLEAR;
             state |= State.IS_HEAD;
-            byte headMergeDir = flipHeadMergeDir((byte)(inFlag & MessageFlag.HEAD_SHOULD_MERGE_MASK), isDifferentDirWithMergeKmer(neighborToMeDir));
+            byte headMergeDir = flipHeadMergeDir((byte)(inFlag & MessageFlag.HEAD_CAN_MERGE_MASK), isDifferentDirWithMergeKmer(neighborToMeDir));
             state |= headMergeDir;
             getVertexValue().setState(state);
         }
@@ -177,12 +177,12 @@
     public void broadcastUpdateMsg(boolean flag){
         if((getVertexValue().getState() & State.VERTEX_MASK) == State.IS_HEAD && (outFlag & State.VERTEX_MASK) != State.IS_FINAL)
             outFlag |= MessageFlag.IS_HEAD;
-        switch(getVertexValue().getState() & State.SHOULD_MERGE_MASK){
-            case State.SHOULD_MERGEWITHPREV:
+        switch(getVertexValue().getState() & State.CAN_MERGE_MASK){
+            case State.CAN_MERGEWITHPREV:
                 /** confugure updateMsg for successor **/
                 configureUpdateMsgForSuccessor(flag);
                 break;
-            case State.SHOULD_MERGEWITHNEXT:
+            case State.CAN_MERGEWITHNEXT:
                 /** confugure updateMsg for predecessor **/
                 configureUpdateMsgForPredecessor(flag);
                 break; 
@@ -243,11 +243,11 @@
     public void headSendUpdateMsg(){
         outgoingMsg.reset();
         outgoingMsg.setUpdateMsg(true);
-        switch(getVertexValue().getState() & MessageFlag.HEAD_SHOULD_MERGE_MASK){
-            case MessageFlag.HEAD_SHOULD_MERGEWITHPREV:
+        switch(getVertexValue().getState() & MessageFlag.HEAD_CAN_MERGE_MASK){
+            case MessageFlag.HEAD_CAN_MERGEWITHPREV:
                 sendUpdateMsgToSuccessor(false);
                 break;
-            case MessageFlag.HEAD_SHOULD_MERGEWITHNEXT:
+            case MessageFlag.HEAD_CAN_MERGEWITHNEXT:
                 sendUpdateMsgToPredecessor(false);
                 break;
         }
@@ -356,8 +356,8 @@
             outFlag |= MessageFlag.IS_HEAD;
             outFlag |= getHeadMergeDir();
         }
-        switch(getVertexValue().getState() & State.SHOULD_MERGE_MASK) {
-            case State.SHOULD_MERGEWITHNEXT:
+        switch(getVertexValue().getState() & State.CAN_MERGE_MASK) {
+            case State.CAN_MERGEWITHNEXT:
                 /** configure merge msg for successor **/
                 configureMergeMsgForSuccessor(getNextDestVertexId());
                 if(deleteSelf)
@@ -369,7 +369,7 @@
                 /** logging outgoingMsg **/
                 loggingMessage(LoggingType.SEND_MSG, outgoingMsg, getNextDestVertexId());
                 break;
-            case State.SHOULD_MERGEWITHPREV:
+            case State.CAN_MERGEWITHPREV:
                 /** configure merge msg for predecessor **/
                 configureMergeMsgForPredecessor(getPrevDestVertexId());
                 if(deleteSelf)
@@ -386,10 +386,10 @@
     
     public byte revertHeadMergeDir(byte headMergeDir){
         switch(headMergeDir){
-            case MessageFlag.HEAD_SHOULD_MERGEWITHPREV:
-                return MessageFlag.HEAD_SHOULD_MERGEWITHNEXT;
-            case MessageFlag.HEAD_SHOULD_MERGEWITHNEXT:
-                return MessageFlag.HEAD_SHOULD_MERGEWITHPREV;
+            case MessageFlag.HEAD_CAN_MERGEWITHPREV:
+                return MessageFlag.HEAD_CAN_MERGEWITHNEXT;
+            case MessageFlag.HEAD_CAN_MERGEWITHNEXT:
+                return MessageFlag.HEAD_CAN_MERGEWITHPREV;
         }
         return 0;
         
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/P1ForPathMergeVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/P1ForPathMergeVertex.java
index 4bc92c2..0683587 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/P1ForPathMergeVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/P1ForPathMergeVertex.java
@@ -167,12 +167,12 @@
      */
     public void headSendUpdateMsg(){
         if(isHeadNode()){
-            byte headMergeDir = (byte)(getVertexValue().getState() & State.HEAD_SHOULD_MERGE_MASK);
+            byte headMergeDir = (byte)(getVertexValue().getState() & State.HEAD_CAN_MERGE_MASK);
             switch(headMergeDir){
-                case State.HEAD_SHOULD_MERGEWITHPREV:
+                case State.HEAD_CAN_MERGEWITHPREV:
                     sendUpdateMsgToSuccessor(true);
                     break;
-                case State.HEAD_SHOULD_MERGEWITHNEXT:
+                case State.HEAD_CAN_MERGEWITHNEXT:
                     sendUpdateMsgToPredecessor(true);
                     break;
             }
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/P2ForPathMergeVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/P2ForPathMergeVertex.java
index ccbd5ab..731cf94 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/P2ForPathMergeVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/P2ForPathMergeVertex.java
@@ -204,7 +204,7 @@
             this.activate();
             resetSelfFlag();
             outFlag |= MessageFlag.IS_HEAD;
-            outFlag |= getVertexValue().getState() & MessageFlag.HEAD_SHOULD_MERGE_MASK;
+            outFlag |= getVertexValue().getState() & MessageFlag.HEAD_CAN_MERGE_MASK;
         } else if(selfFlag == State.IS_OLDHEAD){
             outFlag |= MessageFlag.IS_OLDHEAD;
             voteToHalt();
@@ -215,11 +215,11 @@
     public void headSendMergeMsg(){
         outgoingMsg.reset();
         outgoingMsg.setUpdateMsg(false);
-        switch(getVertexValue().getState() & MessageFlag.HEAD_SHOULD_MERGE_MASK){
-            case MessageFlag.HEAD_SHOULD_MERGEWITHPREV:
+        switch(getVertexValue().getState() & MessageFlag.HEAD_CAN_MERGE_MASK){
+            case MessageFlag.HEAD_CAN_MERGEWITHPREV:
                 sendSettledMsgToAllPrevNodes(getVertexValue());
                 break;
-            case MessageFlag.HEAD_SHOULD_MERGEWITHNEXT:
+            case MessageFlag.HEAD_CAN_MERGEWITHNEXT:
                 sendSettledMsgToAllNextNodes(getVertexValue());
                 break;
         }
@@ -358,8 +358,8 @@
                     //set head should merge dir in state
                     if((receivedMsgList.get(i).getFlag() & MessageFlag.VERTEX_MASK) == MessageFlag.IS_HEAD){
                         byte state =  getVertexValue().getState();
-                        state &= MessageFlag.HEAD_SHOULD_MERGE_CLEAR;
-                        byte dir = (byte)(receivedMsgList.get(i).getFlag() & MessageFlag.HEAD_SHOULD_MERGE_MASK);
+                        state &= MessageFlag.HEAD_CAN_MERGE_CLEAR;
+                        byte dir = (byte)(receivedMsgList.get(i).getFlag() & MessageFlag.HEAD_CAN_MERGE_MASK);
                         switch(receivedMsgList.get(i).getFlag() & MessageFlag.DIR_MASK){
                             case MessageFlag.DIR_FF:
                             case MessageFlag.DIR_RR:
@@ -410,11 +410,11 @@
         switch(neighborToMeDir){
             case MessageFlag.DIR_FF:
             case MessageFlag.DIR_FR:
-                flag = ((getVertexValue().getState() & MessageFlag.HEAD_SHOULD_MERGE_MASK) == MessageFlag.HEAD_SHOULD_MERGEWITHPREV);
+                flag = ((getVertexValue().getState() & MessageFlag.HEAD_CAN_MERGE_MASK) == MessageFlag.HEAD_CAN_MERGEWITHPREV);
                 break;
             case MessageFlag.DIR_RF:
             case MessageFlag.DIR_RR:
-                flag = ((getVertexValue().getState() & MessageFlag.HEAD_SHOULD_MERGE_MASK) == MessageFlag.HEAD_SHOULD_MERGEWITHNEXT);
+                flag = ((getVertexValue().getState() & MessageFlag.HEAD_CAN_MERGE_MASK) == MessageFlag.HEAD_CAN_MERGEWITHNEXT);
                 break;
         }
         return isHaltNode() || (isHeadNode() && flag);
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/P4ForPathMergeVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/P4ForPathMergeVertex.java
index ea9c971..12cda5c 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/P4ForPathMergeVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/P4ForPathMergeVertex.java
@@ -88,7 +88,7 @@
      * set prevKmer to the element that's previous (in the node's RR or RF list), returning true when there is a previous neighbor
      */
     protected boolean setPrevInfo(VertexValueWritable value) {
-        if(isHeadNode() && getHeadMergeDir() != MessageFlag.HEAD_SHOULD_MERGEWITHPREV)
+        if(isHeadNode() && getHeadMergeDir() != MessageFlag.HEAD_CAN_MERGEWITHPREV)
             return false;
         for(byte dir : IncomingListFlag.values){
             if(value.getEdgeList(dir).getCountOfPosition() > 0){
@@ -104,7 +104,7 @@
      * set nextKmer to the element that's next (in the node's FF or FR list), returning true when there is a next neighbor
      */
     protected boolean setNextInfo(VertexValueWritable value) {
-        if(isHeadNode() && getHeadMergeDir() != MessageFlag.HEAD_SHOULD_MERGEWITHNEXT)
+        if(isHeadNode() && getHeadMergeDir() != MessageFlag.HEAD_CAN_MERGEWITHNEXT)
             return false;
     	// TODO make sure the degree is correct
         for(byte dir : OutgoingListFlag.values){