new code for bi-direction graph build
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/format/LogAlgorithmForPathMergeInputFormat.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/format/LogAlgorithmForPathMergeInputFormat.java
index 3fe04ff..0b0055b 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/format/LogAlgorithmForPathMergeInputFormat.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/format/LogAlgorithmForPathMergeInputFormat.java
@@ -66,8 +66,10 @@
                 /**
                  * set the vertex value
                  */
-                vertexValue.setIncomingList(node.getIncomingList());
-                vertexValue.setOutgoingList(node.getOutgoingList());
+                vertexValue.setFFList(node.getFFList());
+                vertexValue.setFRList(node.getFRList());
+                vertexValue.setRFList(node.getRFList());
+                vertexValue.setRRList(node.getRRList());
                 vertexValue.setMergeChain(node.getKmer());
                 vertexValue.setState(State.NON_VERTEX);
                 vertex.setVertexValue(vertexValue);
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/format/NaiveAlgorithmForPathMergeInputFormat.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/format/NaiveAlgorithmForPathMergeInputFormat.java
index 4011838..91634d8 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/format/NaiveAlgorithmForPathMergeInputFormat.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/format/NaiveAlgorithmForPathMergeInputFormat.java
@@ -69,8 +69,10 @@
             /**
              * set the vertex value
              */
-            vertexValue.setIncomingList(node.getIncomingList());
-            vertexValue.setOutgoingList(node.getOutgoingList());
+            vertexValue.setFFList(node.getFFList());
+            vertexValue.setFRList(node.getFRList());
+            vertexValue.setRFList(node.getRFList());
+            vertexValue.setRRList(node.getRRList());
             vertexValue.setMergeChain(node.getKmer());
             vertexValue.setState(State.NON_VERTEX);
             vertex.setVertexValue(vertexValue);
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/AdjacencyListWritable.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/AdjacencyListWritable.java
new file mode 100644
index 0000000..fae1970
--- /dev/null
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/AdjacencyListWritable.java
@@ -0,0 +1,62 @@
+package edu.uci.ics.genomix.pregelix.io;
+
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.hadoop.io.WritableComparable;
+
+import edu.uci.ics.genomix.type.PositionListWritable;
+
+public class AdjacencyListWritable implements WritableComparable<AdjacencyListWritable>{
+    private PositionListWritable forwardList;
+    private PositionListWritable reverseList;
+    
+    public AdjacencyListWritable(){
+        forwardList = new PositionListWritable();
+        reverseList = new PositionListWritable();
+    }
+
+    public void set(AdjacencyListWritable adjacencyList){
+        forwardList.set(adjacencyList.getForwardList());
+        reverseList.set(adjacencyList.getReverseList());
+    }
+    
+    public void reset(){
+        forwardList.reset();
+        reverseList.reset();
+    }
+    
+    public PositionListWritable getForwardList() {
+        return forwardList;
+    }
+
+    public void setForwardList(PositionListWritable forwardList) {
+        this.forwardList = forwardList;
+    }
+
+    public PositionListWritable getReverseList() {
+        return reverseList;
+    }
+
+    public void setReverseList(PositionListWritable reverseList) {
+        this.reverseList = reverseList;
+    }
+
+    @Override
+    public void readFields(DataInput in) throws IOException {
+        forwardList.readFields(in);
+        reverseList.readFields(in);
+    }
+
+    @Override
+    public void write(DataOutput out) throws IOException {
+        forwardList.write(out);
+        reverseList.write(out);
+    }
+
+    @Override
+    public int compareTo(AdjacencyListWritable o) {
+        return 0;
+    }
+}
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/IncomingListWritable.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/IncomingListWritable.java
new file mode 100644
index 0000000..8dec857
--- /dev/null
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/IncomingListWritable.java
@@ -0,0 +1,56 @@
+package edu.uci.ics.genomix.pregelix.io;
+
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.hadoop.io.WritableComparable;
+
+import edu.uci.ics.genomix.type.PositionListWritable;
+
+public class IncomingListWritable implements WritableComparable<IncomingListWritable>{
+    private PositionListWritable reverseForwardList;
+    private PositionListWritable reverseReverseList;
+    
+    public IncomingListWritable(){
+        reverseForwardList = new PositionListWritable();
+        reverseReverseList = new PositionListWritable();
+    }
+
+    public PositionListWritable getReverseForwardList() {
+        return reverseForwardList;
+    }
+
+    public void setReverseForwardList(PositionListWritable reverseForwardList) {
+        this.reverseForwardList = reverseForwardList;
+    }
+
+    public PositionListWritable getReverseReverseList() {
+        return reverseReverseList;
+    }
+
+    public void setReverseReverseList(PositionListWritable reverseReverseList) {
+        this.reverseReverseList = reverseReverseList;
+    }
+
+    @Override
+    public void readFields(DataInput in) throws IOException {
+        reverseForwardList.readFields(in);
+        reverseReverseList.readFields(in);
+    }
+
+    @Override
+    public void write(DataOutput out) throws IOException {
+        reverseForwardList.write(out);
+        reverseReverseList.write(out);
+    }
+
+    @Override
+    public int compareTo(IncomingListWritable o) {
+        return 0;
+    }
+    
+    public int inDegree(){
+        return reverseReverseList.getCountOfPosition() + reverseForwardList.getCountOfPosition();
+    }
+}
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/MessageWritable.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/MessageWritable.java
index 31d313d..f0a6b58 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/MessageWritable.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/MessageWritable.java
@@ -9,7 +9,6 @@
 import edu.uci.ics.genomix.pregelix.type.CheckMessage;
 import edu.uci.ics.genomix.pregelix.type.Message;
 import edu.uci.ics.genomix.type.KmerBytesWritable;
-import edu.uci.ics.genomix.type.PositionListWritable;
 import edu.uci.ics.genomix.type.PositionWritable;
 
 public class MessageWritable implements WritableComparable<MessageWritable> {
@@ -20,7 +19,7 @@
      */
     private PositionWritable sourceVertexId;
     private KmerBytesWritable chainVertexId;
-    private PositionListWritable neighberNode; //incoming or outgoing
+    private AdjacencyListWritable neighberNode; //incoming or outgoing
     private byte message;
 
     private byte checkMessage;
@@ -28,12 +27,12 @@
     public MessageWritable() {
         sourceVertexId = new PositionWritable();
         chainVertexId = new KmerBytesWritable(0);
-        neighberNode = new PositionListWritable();
+        neighberNode = new AdjacencyListWritable();
         message = Message.NON;
         checkMessage = (byte) 0;
     }
 
-    public void set(PositionWritable sourceVertexId, KmerBytesWritable chainVertexId, PositionListWritable neighberNode, byte message) {
+    public void set(PositionWritable sourceVertexId, KmerBytesWritable chainVertexId, AdjacencyListWritable neighberNode, byte message) {
         checkMessage = 0;
         if (sourceVertexId != null) {
             checkMessage |= CheckMessage.SOURCE;
@@ -79,11 +78,11 @@
         }
     }
     
-    public PositionListWritable getNeighberNode() {
+    public AdjacencyListWritable getNeighberNode() {
         return neighberNode;
     }
 
-    public void setNeighberNode(PositionListWritable neighberNode) {
+    public void setNeighberNode(AdjacencyListWritable neighberNode) {
         if(neighberNode != null){
             checkMessage |= CheckMessage.NEIGHBER;
             this.neighberNode.set(neighberNode);
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/OutgoingListWritable.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/OutgoingListWritable.java
new file mode 100644
index 0000000..275954d
--- /dev/null
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/OutgoingListWritable.java
@@ -0,0 +1,56 @@
+package edu.uci.ics.genomix.pregelix.io;
+
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.hadoop.io.WritableComparable;
+
+import edu.uci.ics.genomix.type.PositionListWritable;
+
+public class OutgoingListWritable implements WritableComparable<OutgoingListWritable>{
+    private PositionListWritable forwardForwardList;
+    private PositionListWritable forwardReverseList;
+    
+    public OutgoingListWritable(){
+        forwardForwardList = new PositionListWritable();
+        forwardReverseList = new PositionListWritable();
+    }
+
+    public PositionListWritable getForwardForwardList() {
+        return forwardForwardList;
+    }
+
+    public void setForwardForwardList(PositionListWritable forwardForwardList) {
+        this.forwardForwardList = forwardForwardList;
+    }
+
+    public PositionListWritable getForwardReverseList() {
+        return forwardReverseList;
+    }
+
+    public void setForwardReverseList(PositionListWritable forwardReverseList) {
+        this.forwardReverseList = forwardReverseList;
+    }
+
+    @Override
+    public void readFields(DataInput in) throws IOException {
+        forwardForwardList.readFields(in);
+        forwardReverseList.readFields(in);
+    }
+
+    @Override
+    public void write(DataOutput out) throws IOException {
+        forwardForwardList.write(out);
+        forwardReverseList.write(out);   
+    }
+
+    @Override
+    public int compareTo(OutgoingListWritable o) {
+        return 0;
+    }
+    
+    public int outDegree(){
+        return forwardForwardList.getCountOfPosition() + forwardReverseList.getCountOfPosition();
+    }
+}
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/ValueStateWritable.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/ValueStateWritable.java
index 2554c8e..985c2ac 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/ValueStateWritable.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/ValueStateWritable.java
@@ -10,44 +10,82 @@
 
 public class ValueStateWritable implements WritableComparable<ValueStateWritable> {
 
-    private PositionListWritable incomingList;
-    private PositionListWritable outgoingList;
+    private AdjacencyListWritable incomingList;
+    private AdjacencyListWritable outgoingList;
     private byte state;
     private KmerBytesWritable mergeChain;
 
     public ValueStateWritable() {
-        incomingList = new PositionListWritable();
-        outgoingList = new PositionListWritable();
+        incomingList = new AdjacencyListWritable();
+        outgoingList = new AdjacencyListWritable();
         state = State.NON_VERTEX;
         mergeChain = new KmerBytesWritable(0);
     }
 
-    public ValueStateWritable(PositionListWritable incomingList, PositionListWritable outgoingList, 
+    public ValueStateWritable(PositionListWritable forwardForwardList, PositionListWritable forwardReverseList,
+            PositionListWritable reverseForwardList, PositionListWritable reverseReverseList,
             byte state, KmerBytesWritable mergeChain) {
-        set(incomingList, outgoingList, state, mergeChain);
+        set(forwardForwardList, forwardReverseList, 
+                reverseForwardList, reverseReverseList,
+                state, mergeChain);
     }
 
-    public void set(PositionListWritable incomingList, PositionListWritable outgoingList, 
+    public void set(PositionListWritable forwardForwardList, PositionListWritable forwardReverseList,
+            PositionListWritable reverseForwardList, PositionListWritable reverseReverseList, 
             byte state, KmerBytesWritable mergeChain) {
-        this.incomingList.set(incomingList);
-        this.outgoingList.set(outgoingList);
+        this.incomingList.setForwardList(reverseForwardList);
+        this.incomingList.setReverseList(reverseReverseList);
+        this.outgoingList.setForwardList(forwardForwardList);
+        this.outgoingList.setReverseList(forwardReverseList);
         this.state = state;
         this.mergeChain.set(mergeChain);
     }
     
-    public PositionListWritable getIncomingList() {
+    public PositionListWritable getFFList() {
+        return outgoingList.getForwardList();
+    }
+
+    public PositionListWritable getFRList() {
+        return outgoingList.getReverseList();
+    }
+
+    public PositionListWritable getRFList() {
+        return incomingList.getForwardList();
+    }
+
+    public PositionListWritable getRRList() {
+        return incomingList.getReverseList();
+    }
+    
+    public void setFFList(PositionListWritable forwardForwardList){
+        outgoingList.setForwardList(forwardForwardList);
+    }
+    
+    public void setFRList(PositionListWritable forwardReverseList){
+        outgoingList.setReverseList(forwardReverseList);
+    }
+    
+    public void setRFList(PositionListWritable reverseForwardList){
+        incomingList.setForwardList(reverseForwardList);
+    }
+
+    public void setRRList(PositionListWritable reverseReverseList){
+        incomingList.setReverseList(reverseReverseList);
+    }
+    
+    public AdjacencyListWritable getIncomingList() {
         return incomingList;
     }
 
-    public void setIncomingList(PositionListWritable incomingList) {
+    public void setIncomingList(AdjacencyListWritable incomingList) {
         this.incomingList = incomingList;
     }
 
-    public PositionListWritable getOutgoingList() {
+    public AdjacencyListWritable getOutgoingList() {
         return outgoingList;
     }
 
-    public void setOutgoingList(PositionListWritable outgoingList) {
+    public void setOutgoingList(AdjacencyListWritable outgoingList) {
         this.outgoingList = outgoingList;
     }
 
@@ -94,14 +132,21 @@
 
     @Override
     public String toString() {
-        return state + "\t" + getLengthOfMergeChain() + "\t" + mergeChain.toString();
+        StringBuilder sbuilder = new StringBuilder();
+        sbuilder.append('(');
+        sbuilder.append(outgoingList.getForwardList().toString()).append('\t');
+        sbuilder.append(outgoingList.getReverseList().toString()).append('\t');
+        sbuilder.append(incomingList.getForwardList().toString()).append('\t');
+        sbuilder.append(incomingList.getReverseList().toString()).append('\t');
+        sbuilder.append(mergeChain.toString()).append(')');
+        return sbuilder.toString();
     }
     
-    public int inDegree() {
-        return incomingList.getCountOfPosition();
+    public int inDegree(){
+        return incomingList.getForwardList().getCountOfPosition() + incomingList.getReverseList().getCountOfPosition();
     }
-
-    public int outDegree() {
-        return outgoingList.getCountOfPosition();
+    
+    public int outDegree(){
+        return outgoingList.getForwardList().getCountOfPosition() + outgoingList.getReverseList().getCountOfPosition();
     }
 }
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/LogAlgorithmForPathMergeVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/LogAlgorithmForPathMergeVertex.java
index 6be0eee..c3bb663 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/LogAlgorithmForPathMergeVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/LogAlgorithmForPathMergeVertex.java
@@ -75,12 +75,18 @@
      * get destination vertex
      */
     public PositionWritable getNextDestVertexId(ValueStateWritable value) {
-        posIterator = value.getOutgoingList().iterator();
+        if(value.getFFList().getCountOfPosition() > 0) // #FFList() > 0
+            posIterator = value.getFFList().iterator();
+        else // #FRList() > 0
+            posIterator = value.getFRList().iterator();
         return posIterator.next();
     }
 
     public PositionWritable getPreDestVertexId(ValueStateWritable value) {
-        posIterator = value.getIncomingList().iterator();
+        if(value.getRFList().getCountOfPosition() > 0) // #RFList() > 0
+            posIterator = value.getRFList().iterator();
+        else // #RRList() > 0
+            posIterator = value.getRRList().iterator();
         return posIterator.next();
     }
 
@@ -88,7 +94,12 @@
      * head send message to all next nodes
      */
     public void sendMsgToAllNextNodes(ValueStateWritable value) {
-        posIterator = value.getOutgoingList().iterator();
+        posIterator = value.getFFList().iterator(); // FFList
+        while(posIterator.hasNext()){
+            destVertexId.set(posIterator.next());
+            sendMsg(destVertexId, outgoingMsg);
+        }
+        posIterator = value.getFRList().iterator(); // FRList
         while(posIterator.hasNext()){
             destVertexId.set(posIterator.next());
             sendMsg(destVertexId, outgoingMsg);
@@ -99,7 +110,12 @@
      * head send message to all previous nodes
      */
     public void sendMsgToAllPreviousNodes(ValueStateWritable value) {
-        posIterator = value.getIncomingList().iterator();
+        posIterator = value.getRFList().iterator(); // RFList
+        while(posIterator.hasNext()){
+            destVertexId.set(posIterator.next());
+            sendMsg(destVertexId, outgoingMsg);
+        }
+        posIterator = value.getRRList().iterator(); // RRList
         while(posIterator.hasNext()){
             destVertexId.set(posIterator.next());
             sendMsg(destVertexId, outgoingMsg);
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/NaiveAlgorithmForPathMergeVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/NaiveAlgorithmForPathMergeVertex.java
index af38072..4fcc09e 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/NaiveAlgorithmForPathMergeVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/NaiveAlgorithmForPathMergeVertex.java
@@ -80,12 +80,18 @@
      * get destination vertex
      */
     public PositionWritable getNextDestVertexId(ValueStateWritable value) {
-        posIterator = value.getOutgoingList().iterator();
+        if(value.getFFList().getCountOfPosition() > 0) // #FFList() > 0
+            posIterator = value.getFFList().iterator();
+        else // #FRList() > 0
+            posIterator = value.getFRList().iterator();
         return posIterator.next();
     }
 
     public PositionWritable getPreDestVertexId(ValueStateWritable value) {
-        posIterator = value.getIncomingList().iterator();
+        if(value.getRFList().getCountOfPosition() > 0) // #RFList() > 0
+            posIterator = value.getRFList().iterator();
+        else // #RRList() > 0
+            posIterator = value.getRRList().iterator();
         return posIterator.next();
     }
 
@@ -93,7 +99,12 @@
      * head send message to all next nodes
      */
     public void sendMsgToAllNextNodes(ValueStateWritable value) {
-        posIterator = value.getOutgoingList().iterator();
+        posIterator = value.getFFList().iterator(); // FFList
+        while(posIterator.hasNext()){
+            destVertexId.set(posIterator.next());
+            sendMsg(destVertexId, outgoingMsg);
+        }
+        posIterator = value.getFRList().iterator(); // FRList
         while(posIterator.hasNext()){
             destVertexId.set(posIterator.next());
             sendMsg(destVertexId, outgoingMsg);
@@ -104,7 +115,12 @@
      * head send message to all previous nodes
      */
     public void sendMsgToAllPreviousNodes(ValueStateWritable value) {
-        posIterator = value.getIncomingList().iterator();
+        posIterator = value.getRFList().iterator(); // RFList
+        while(posIterator.hasNext()){
+            destVertexId.set(posIterator.next());
+            sendMsg(destVertexId, outgoingMsg);
+        }
+        posIterator = value.getRRList().iterator(); // RRList
         while(posIterator.hasNext()){
             destVertexId.set(posIterator.next());
             sendMsg(destVertexId, outgoingMsg);
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/P3ForPathMergeVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/P3ForPathMergeVertex.java
index 6f4354a..8a03aa7 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/P3ForPathMergeVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/P3ForPathMergeVertex.java
@@ -87,12 +87,18 @@
      * get destination vertex
      */
     public PositionWritable getNextDestVertexId(ValueStateWritable value) {
-        posIterator = value.getOutgoingList().iterator();
+        if(value.getFFList().getCountOfPosition() > 0) // #FFList() > 0
+            posIterator = value.getFFList().iterator();
+        else // #FRList() > 0
+            posIterator = value.getFRList().iterator();
         return posIterator.next();
     }
 
     public PositionWritable getPreDestVertexId(ValueStateWritable value) {
-        posIterator = value.getIncomingList().iterator();
+        if(value.getRFList().getCountOfPosition() > 0) // #RFList() > 0
+            posIterator = value.getRFList().iterator();
+        else // #RRList() > 0
+            posIterator = value.getRRList().iterator();
         return posIterator.next();
     }
 
@@ -100,7 +106,12 @@
      * head send message to all next nodes
      */
     public void sendMsgToAllNextNodes(ValueStateWritable value) {
-        posIterator = value.getOutgoingList().iterator();
+        posIterator = value.getFFList().iterator(); // FFList
+        while(posIterator.hasNext()){
+            destVertexId.set(posIterator.next());
+            sendMsg(destVertexId, outgoingMsg);
+        }
+        posIterator = value.getFRList().iterator(); // FRList
         while(posIterator.hasNext()){
             destVertexId.set(posIterator.next());
             sendMsg(destVertexId, outgoingMsg);
@@ -111,7 +122,12 @@
      * head send message to all previous nodes
      */
     public void sendMsgToAllPreviousNodes(ValueStateWritable value) {
-        posIterator = value.getIncomingList().iterator();
+        posIterator = value.getRFList().iterator(); // RFList
+        while(posIterator.hasNext()){
+            destVertexId.set(posIterator.next());
+            sendMsg(destVertexId, outgoingMsg);
+        }
+        posIterator = value.getRRList().iterator(); // RRList
         while(posIterator.hasNext()){
             destVertexId.set(posIterator.next());
             sendMsg(destVertexId, outgoingMsg);
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 f2a61be..1740744 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
@@ -10,9 +10,7 @@
      * @param vertexValue
      */
     public static boolean isPathVertex(ValueStateWritable value) {
-        if (value.inDegree() == 1 && value.outDegree() == 1)
-            return true;
-        return false;
+        return value.inDegree() == 1 && value.outDegree() == 1;
     }
 
     /**
@@ -21,9 +19,7 @@
      * @param vertexValue
      */
     public static boolean isHeadVertex(ValueStateWritable value) {
-        if (value.outDegree() > 0 && !isPathVertex(value))
-            return true;
-        return false;
+        return value.outDegree() > 0 && !isPathVertex(value);
     }
 
     /**
@@ -32,9 +28,7 @@
      * @param vertexValue
      */
     public static boolean isRearVertex(ValueStateWritable value) {
-        if (value.inDegree() > 0 && !isPathVertex(value))
-            return true;
-        return false;
+        return value.inDegree() > 0 && !isPathVertex(value);
     }
 
     /**
@@ -42,9 +36,7 @@
      */
     public static boolean isCycle(KmerBytesWritable kmer, KmerBytesWritable mergeChain, int kmerSize) {
         String chain = mergeChain.toString().substring(1);
-        if (chain.contains(kmer.toString()))
-            return true;
-        return false;
+        return chain.contains(kmer.toString());
 
         /*subKmer.set(vertexId);
         for(int istart = 1; istart < mergeChain.getKmerLength() - kmerSize + 1; istart++){