add subclass V to extend VertexValueWritable
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 a85089d..0472ad7 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
@@ -31,8 +31,8 @@
 import edu.uci.ics.genomix.type.VKmerListWritable;
 import edu.uci.ics.genomix.type.NodeWritable.DirectionFlag;
 
-public abstract class BasicGraphCleanVertex<M extends MessageWritable> extends
-        Vertex<VKmerBytesWritable, VertexValueWritable, NullWritable, M> {
+public abstract class BasicGraphCleanVertex<V extends VertexValueWritable, M extends MessageWritable> extends
+        Vertex<VKmerBytesWritable, V, NullWritable, M> {
     public static int kmerSize = -1;
     public static int maxIteration = -1;
     
@@ -49,7 +49,7 @@
     protected M incomingMsg = null; 
     protected M outgoingMsg = null; 
     protected VKmerBytesWritable destVertexId = null;
-    protected VertexValueWritable tmpValue = new VertexValueWritable();
+    protected VertexValueWritable tmpValue = new VertexValueWritable(); 
     protected Iterator<VKmerBytesWritable> kmerIterator;
     protected VKmerListWritable kmerList = null;
     protected VKmerBytesWritable repeatKmer = null; //for detect tandemRepeat
@@ -750,7 +750,7 @@
         }
     }
     
-    public static PregelixJob getConfiguredJob(GenomixJobConf conf, Class<? extends BasicGraphCleanVertex<? extends MessageWritable>> vertexClass) throws IOException {
+    public static PregelixJob getConfiguredJob(GenomixJobConf conf, Class<? extends BasicGraphCleanVertex<? extends VertexValueWritable, ? extends MessageWritable>> vertexClass) throws IOException {
         // the following class weirdness is because java won't let me get the runtime class in a static context :(
         System.out.println(vertexClass.getSimpleName());
         PregelixJob job;
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 ff963f7..a978cfd 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
@@ -4,6 +4,7 @@
 
 import edu.uci.ics.genomix.pregelix.io.MessageWritable;
 import edu.uci.ics.genomix.pregelix.io.PathMergeMessageWritable;
+import edu.uci.ics.genomix.pregelix.io.VertexValueWritable;
 import edu.uci.ics.genomix.pregelix.io.VertexValueWritable.State;
 import edu.uci.ics.genomix.pregelix.operator.BasicGraphCleanVertex;
 import edu.uci.ics.genomix.pregelix.type.MessageFlag;
@@ -11,8 +12,8 @@
 import edu.uci.ics.genomix.type.NodeWritable.OutgoingListFlag;
 import edu.uci.ics.genomix.type.NodeWritable.IncomingListFlag;
 
-public abstract class BasicPathMergeVertex extends
-	BasicGraphCleanVertex<PathMergeMessageWritable>{
+public abstract class BasicPathMergeVertex<V extends VertexValueWritable> extends
+	BasicGraphCleanVertex<V, PathMergeMessageWritable>{
 	
     public void setStateAsMergeWithPrev(){
         byte state = getVertexValue().getState();
@@ -390,7 +391,7 @@
     }
     
     /**
-     * configure MERGE msg
+     * configure MERGE msg  TODO: delete edgelist, merge configureMergeMsgForPredecessor and configureMergeMsgForPredecessorByIn...
      */
     public void configureMergeMsgForPredecessor(){
         setPredecessorToMeDir();
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/MapReduceVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/MapReduceVertex.java
index 5ac8e78..c949770 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/MapReduceVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/MapReduceVertex.java
@@ -16,8 +16,8 @@
 import edu.uci.ics.genomix.type.VKmerBytesWritable;
 import edu.uci.ics.pregelix.api.job.PregelixJob;
 
-public class MapReduceVertex extends
-	BasicPathMergeVertex{
+public class MapReduceVertex<V extends VertexValueWritable> extends
+	BasicPathMergeVertex<V>{
     
     protected VKmerBytesWritable reverseKmer;
     protected Map<VKmerBytesWritable, VKmerListWritable> kmerMapper = new HashMap<VKmerBytesWritable, VKmerListWritable>();
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 47a6e04..66aac30 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
@@ -25,7 +25,7 @@
  *
  */
 public class P4ForPathMergeVertex extends
-    BasicPathMergeVertex {
+    BasicPathMergeVertex<VertexValueWritable> {
 
     private static long randSeed = 1; //static for save memory
     private float probBeingRandomHead = -1;
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/unrolltandemrepeat/UnrollTandemRepeat.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/unrolltandemrepeat/UnrollTandemRepeat.java
index c345ac8..2aa23da 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/unrolltandemrepeat/UnrollTandemRepeat.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/unrolltandemrepeat/UnrollTandemRepeat.java
@@ -24,7 +24,7 @@
  *
  */
 public class UnrollTandemRepeat extends
-    BasicGraphCleanVertex<MessageWritable>{
+    BasicGraphCleanVertex<VertexValueWritable, MessageWritable>{
     private EdgeWritable tmpEdge = new EdgeWritable();
     
     /**
diff --git a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/PathMergeTestSuite.java b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/PathMergeTestSuite.java
index cdbaa8f..d36d315 100644
--- a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/PathMergeTestSuite.java
+++ b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/PathMergeTestSuite.java
@@ -6,7 +6,8 @@
 
     public static Test suite() throws Exception {
         String pattern ="PathMerge";
-        String testSet[] = {"2", "3", "4", "5", "6", "7", "8", "9", "head_6", "head_7",
+        String testSet[] = {
+                "2", "3", "4", "5", "6", "7", "8", "9", "head_6", "head_7",
                 "LeftAdj", "RightAdj",
                 "FR", "RF", "head_FR", "head_RF", "twohead_FR", "twohead_RF",
                 "SelfTandemRepeat", "TandemRepeatWithMergeEdge", 
@@ -14,10 +15,10 @@
                 "SimplePath", "ThreeDuplicate",
                 "SimpleBridgePath", "BridgePathWithTandemRepeat",
                 "RingPath", "CyclePath",
-                "SimpleTreePath", "ComplexTreePath",
-                "Triangle", "Rectangle", 
-                "synthetic",
-                "SmallGenome"
+//                "SimpleTreePath", "ComplexTreePath",
+//                "Triangle", "Rectangle", 
+//                "synthetic",
+//                "SmallGenome"
         };
         init(pattern, testSet);
         BasicGraphCleanTestSuite testSuite = new BasicGraphCleanTestSuite();
diff --git a/genomix/genomix-pregelix/src/test/resources/only_PathMerge.txt b/genomix/genomix-pregelix/src/test/resources/only_PathMerge.txt
index 1ecfd69..3d007d2 100644
--- a/genomix/genomix-pregelix/src/test/resources/only_PathMerge.txt
+++ b/genomix/genomix-pregelix/src/test/resources/only_PathMerge.txt
@@ -1 +1 @@
-P2ForMergeGraph.xml
+P4ForMergeGraph.xml