debugging p2
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 8907491..b7b0814 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
@@ -13,6 +13,7 @@
 import edu.uci.ics.genomix.pregelix.type.AdjMessage;
 import edu.uci.ics.genomix.pregelix.type.MessageFlag;
 import edu.uci.ics.genomix.pregelix.util.VertexUtil;
+import edu.uci.ics.genomix.type.GeneCode;
 import edu.uci.ics.genomix.type.KmerBytesWritable;
 
 /**
@@ -29,7 +30,7 @@
     protected MessageWritable outgoingMsg = null; 
     protected KmerBytesWritable destVertexId = new KmerBytesWritable();
     protected Iterator<KmerBytesWritable> posIterator;
-    private KmerBytesWritable kmer = new KmerBytesWritable();
+    private KmerBytesWritable kmer = new KmerBytesWritable(kmerSize);
     byte headFlag;
     protected byte outFlag;
     protected byte inFlag;
@@ -625,6 +626,59 @@
     }
     
     /**
+     * final merge and updateAdjList  having parameter for p2
+     */
+    public void processFinalMerge(MessageWritable msg){
+        byte meToNeighborDir = (byte) (msg.getFlag() & MessageFlag.DIR_MASK);
+        byte neighborToMeDir = mirrorDirection(meToNeighborDir);
+
+        byte neighborToMergeDir = flipDirection(neighborToMeDir, msg.isFlip());
+        
+        String selfString;
+        String match;
+        String msgString;
+        int index;
+        switch(neighborToMergeDir){
+            case MessageFlag.DIR_FF:
+                selfString = getVertexValue().getKmer().toString();
+                match = selfString.substring(selfString.length() - kmerSize + 1,selfString.length()); 
+                msgString = msg.getKmer().toString();
+                index = msgString.indexOf(match);
+                kmer.reset(msgString.length() - index);
+                kmer.setByRead(msgString.substring(index).getBytes(), 0);
+                break;
+            case MessageFlag.DIR_FR:
+                selfString = getVertexId().toString();
+                match = selfString.substring(selfString.length() - kmerSize + 1,selfString.length());
+                msgString = GeneCode.reverseComplement(msg.getKmer().toString());
+                index = msgString.indexOf(match);
+                kmer.reset(msgString.length() - index);
+                kmer.setByRead(msgString.substring(index).getBytes(), 0);
+                break;
+            case MessageFlag.DIR_RF:
+                selfString = GeneCode.reverseComplement(getVertexValue().getKmer().toString());
+                match = selfString.substring(selfString.length() - kmerSize + 1,selfString.length());
+                msgString = msg.getKmer().toString();
+                index = msgString.indexOf(match);
+                kmer.reset(msgString.length() - index);
+                kmer.setByRead(msgString.substring(index).getBytes(), 0);
+                break;
+            case MessageFlag.DIR_RR:
+                selfString = GeneCode.reverseComplement(getVertexValue().getKmer().toString());
+                match = selfString.substring(selfString.length() - kmerSize + 1,selfString.length());
+                msgString = GeneCode.reverseComplement(msg.getKmer().toString());
+                index = msgString.indexOf(match);
+                kmer.reset(msgString.length() - index);
+                kmer.setByRead(msgString.substring(index).getBytes(), 0);
+                break;
+        }
+       
+        getVertexValue().processMerges(neighborToMeDir, msg.getSourceVertexId(), 
+                neighborToMergeDir, VertexUtil.getNodeIdFromAdjacencyList(msg.getNeighberNode()),
+                kmerSize, kmer);
+    }
+    
+    /**
      * set head state
      */
     public void setHeadState(){
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/LogAlgorithmForPathMergeVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/LogAlgorithmForPathMergeVertex.java
index e2e8933..a68b646 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/LogAlgorithmForPathMergeVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/LogAlgorithmForPathMergeVertex.java
@@ -202,7 +202,7 @@
                 incomingMsg = msgIterator.next();
                 if(getMsgFlag() == MessageFlag.IS_FINAL){
                     setFinalState();
-                    processMerge(incomingMsg);
+                    processFinalMerge(incomingMsg);
                 }
             }
             else{
diff --git a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/PathMergeSmallTestSuite.java b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/PathMergeSmallTestSuite.java
index 5aedeb7..9f96b5a 100644
--- a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/PathMergeSmallTestSuite.java
+++ b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/PathMergeSmallTestSuite.java
@@ -52,7 +52,7 @@
 //    + "6", PreFix + File.separator
 //    + "7", PreFix + File.separator
 //    + "8", PreFix + File.separator
-    + "4"};
+    + "5"};
     private static final String ACTUAL_RESULT_DIR = "data/actual/pathmerge";
     private static final String PATH_TO_HADOOP_CONF = "src/test/resources/hadoop/conf";
     private static final String PATH_TO_CLUSTER_STORE = "src/test/resources/cluster/stores.properties";