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 27518b4..31e0e24 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
@@ -83,7 +83,6 @@
     private PositionWritable destVertexId = new PositionWritable();
     private Iterator<PositionWritable> posIterator;
     
-    private AdjacencyListWritable neighberNode = new AdjacencyListWritable();
     /**
      * initiate kmerSize, maxIteration
      */
@@ -254,26 +253,41 @@
     }
     
     /**
+     * check if A need to be flipped with successor
+     */
+    public boolean ifFilpWithSuccessor(){
+        if(getVertexValue().getFRList().getLength() > 0)
+            return true;
+        else
+            return false;
+    }
+    
+    /**
+     * check if A need to be filpped with predecessor
+     */
+    public boolean ifFlipWithPredecessor(){
+        if(getVertexValue().getRFList().getLength() > 0)
+            return true;
+        else
+            return false;
+    }
+    /**
      * send update message from predecessor
      */
     public void sendUpMsgFromPredecessor(){
         outFlag |= MessageFlag.FROM_PREDECESSOR;
-        if(getVertexValue().getFRList().getLength() > 0){
-            outFlag |= MessageFlag.FROM_REWARDLIST;
-        }
         outgoingMsg.setNeighberNode(getVertexValue().getIncomingList());
+        if(ifFlipWithPredecessor())
+            outFlag |= MessageFlag.FLIP;
         outgoingMsg.setMessage(outFlag);
         outgoingMsg.setSourceVertexId(getVertexId());
         sendMsg(getNextDestVertexId(getVertexValue()), outgoingMsg);
         outUpFlag = (byte)(MessageFlag.FROM_DEADVERTEX | MessageFlag.FROM_SUCCESSOR);
-        if(getVertexValue().getRFList().getLength() > 0){
-            outUpFlag |= MessageFlag.FROM_REWARDLIST;
-            outgoingUpMsg.setNeighberNode(getVertexValue().getIncomingList());
-        } else
-            outgoingUpMsg.setNeighberNode(getVertexValue().getOutgoingList());
+        outgoingUpMsg.setNeighberNode(getVertexValue().getOutgoingList());
+        if(ifFilpWithSuccessor())
+            outFlag |= MessageFlag.FLIP;
         outgoingUpMsg.setMessage(outUpFlag);
         outgoingUpMsg.setSourceVertexId(getVertexId());
-        
         sendMsg(getPreDestVertexId(getVertexValue()), outgoingUpMsg);
         deleteVertex(getVertexId());
     }
@@ -283,24 +297,68 @@
      */
     public void sendUpMsgFromSuccessor(){
         outFlag |= MessageFlag.FROM_SUCCESSOR;
-        if(getVertexValue().getRFList().getLength() > 0){
-            outFlag |= MessageFlag.FROM_REWARDLIST;
-            outgoingMsg.setNeighberNode(getVertexValue().getIncomingList());
-        } else
-            outgoingMsg.setNeighberNode(getVertexValue().getOutgoingList());
+        outgoingUpMsg.setNeighberNode(getVertexValue().getOutgoingList());
+        if(ifFilpWithSuccessor())
+            outFlag |= MessageFlag.FLIP;
         outgoingMsg.setMessage(outFlag);
         outgoingMsg.setSourceVertexId(getVertexId());
         sendMsg(getPreDestVertexId(getVertexValue()), outgoingMsg);
         outUpFlag = (byte)(MessageFlag.FROM_DEADVERTEX | MessageFlag.FROM_PREDECESSOR);
-        if(getVertexValue().getFRList().getLength() > 0){
-            outUpFlag |= MessageFlag.FROM_REWARDLIST;
-        }
         outgoingMsg.setNeighberNode(getVertexValue().getIncomingList());
+        if(ifFlipWithPredecessor())
+            outFlag |= MessageFlag.FLIP;
         outgoingUpMsg.setMessage(outUpFlag);
         outgoingUpMsg.setSourceVertexId(getVertexId());
         sendMsg(getNextDestVertexId(getVertexValue()), outgoingUpMsg);
         deleteVertex(getVertexId());
     }
+    
+    /**
+     * update AdjacencyList if message from predecessor 
+     */
+    public void updateAdjList_MsgPredecessor(){
+        if((outFlag & MessageFlag.FLIP) > 0){
+            if(getVertexValue().getFFList().getLength() > 0){
+                getVertexValue().setFFList(null);
+                if(incomingMsg.getNeighberNode().getForwardList().getLength() > 0)
+                    getVertexValue().setFRList(incomingMsg.getNeighberNode().getForwardList());
+                else
+                    getVertexValue().setFRList(incomingMsg.getNeighberNode().getReverseList());
+            } else {
+                getVertexValue().setFRList(null);
+                if(incomingMsg.getNeighberNode().getForwardList().getLength() > 0)
+                    getVertexValue().setFFList(incomingMsg.getNeighberNode().getForwardList());
+                else
+                    getVertexValue().setFFList(incomingMsg.getNeighberNode().getReverseList());
+            }
+        } else {
+            getVertexValue().setIncomingList(incomingMsg.getNeighberNode());
+        }
+    }
+    
+    /**
+     * update AdjacencyList if message from successor 
+     */
+    public void updateAdjList_MsgSuccessor(){
+        if((outFlag & MessageFlag.FLIP) > 0){
+            if(getVertexValue().getRRList().getLength() > 0){
+                getVertexValue().setRRList(null);
+                if(incomingMsg.getNeighberNode().getForwardList().getLength() > 0)
+                    getVertexValue().setRFList(incomingMsg.getNeighberNode().getForwardList());
+                else
+                    getVertexValue().setRFList(incomingMsg.getNeighberNode().getReverseList());
+            } else {
+                getVertexValue().setRFList(null);
+                if(incomingMsg.getNeighberNode().getForwardList().getLength() > 0)
+                    getVertexValue().setRRList(incomingMsg.getNeighberNode().getForwardList());
+                else
+                    getVertexValue().setRRList(incomingMsg.getNeighberNode().getReverseList());
+            }
+        } else {
+            getVertexValue().setOutgoingList(incomingMsg.getNeighberNode());
+        }
+    }
+    
     @Override
     public void compute(Iterator<MessageWritable> msgIterator) {
         initVertex();
@@ -367,11 +425,23 @@
                 outFlag = incomingMsg.getMessage();
                 if((outFlag & MessageFlag.FROM_DEADVERTEX) > 0){
                     if((outFlag & MessageFlag.FROM_PREDECESSOR) > 0){
-                        if((outFlag & MessageFlag.FROM_REWARDLIST) > 0){
-                            
-                        } else {
-                            getVertexValue().setIncomingList(incomingMsg.getNeighberNode());
-                        }
+                        updateAdjList_MsgPredecessor();
+                    } 
+                    else {//Message from successor.
+                        updateAdjList_MsgSuccessor();
+                    }
+                }
+                else {//Not for update, but for merging
+                    if((outFlag & MessageFlag.FROM_PREDECESSOR) > 0){
+                        //B merge with A's reverse
+                        //append A's reverse to B
+                        //
+                        updateAdjList_MsgPredecessor();
+                    } 
+                    else {//Message from successor
+                        //B merge with A's reverse
+                        //append 
+                        updateAdjList_MsgSuccessor();
                     }
                 }
             }
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/type/MessageFlag.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/type/MessageFlag.java
index de349ad..9ef6842 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/type/MessageFlag.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/type/MessageFlag.java
@@ -6,7 +6,7 @@
     public static final byte IS_TAIL = 1 << 2;
     public static final byte FROM_DEADVERTEX = 1 << 3;
     //public static final byte FROM_FORWARDLIST = 1 << 4;
-    public static final byte FROM_REWARDLIST = 1 << 4;
+    public static final byte FLIP = 1 << 4;
     public static final byte FROM_SUCCESSOR = 1 << 5;
     public static final byte FROM_PREDECESSOR = 1 << 6;
     
@@ -21,8 +21,8 @@
                 return "IS_TAIL";
             case FROM_DEADVERTEX:
                 return "FROM_DEADVERTEX";
-            case FROM_REWARDLIST:
-                return "FROM_REWARDLIST";
+            case FLIP:
+                return "FLIP";
             case FROM_SUCCESSOR:
                 return "FROM_SUCCESSOR";
             case FROM_PREDECESSOR:
