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
index fae1970..a0a8ea5 100644
--- 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
@@ -27,6 +27,10 @@
         reverseList.reset();
     }
     
+    public int getCountOfPosition(){
+    	return forwardList.getCountOfPosition() + reverseList.getCountOfPosition();
+    }
+    
     public PositionListWritable getForwardList() {
         return forwardList;
     }
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/tipremove/BridgeRemoveVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/bridgeremove/BridgeRemoveVertex.java
similarity index 97%
rename from genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/tipremove/BridgeRemoveVertex.java
rename to genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/bridgeremove/BridgeRemoveVertex.java
index bdabaa4..9a46a67 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/tipremove/BridgeRemoveVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/bridgeremove/BridgeRemoveVertex.java
@@ -1,4 +1,4 @@
-package edu.uci.ics.genomix.pregelix.operator.tipremove;
+package edu.uci.ics.genomix.pregelix.operator.bridgeremove;
 
 import java.util.Iterator;
 import org.apache.hadoop.io.NullWritable;
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/tipremove/BubbleMergeVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/bubblemerge/BubbleMergeVertex.java
similarity index 97%
rename from genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/tipremove/BubbleMergeVertex.java
rename to genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/bubblemerge/BubbleMergeVertex.java
index f33bcd4..a9c9c5b 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/tipremove/BubbleMergeVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/bubblemerge/BubbleMergeVertex.java
@@ -1,4 +1,4 @@
-package edu.uci.ics.genomix.pregelix.operator.tipremove;
+package edu.uci.ics.genomix.pregelix.operator.bubblemerge;
 
 import java.util.Iterator;
 import org.apache.hadoop.io.NullWritable;
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/tipremove/TipRemoveVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/tipremove/TipRemoveVertex.java
index 7e184d1..534da5c 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/tipremove/TipRemoveVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/tipremove/TipRemoveVertex.java
@@ -11,6 +11,8 @@
 import edu.uci.ics.genomix.pregelix.format.DataCleanOutputFormat;
 import edu.uci.ics.genomix.pregelix.io.MessageWritable;
 import edu.uci.ics.genomix.pregelix.io.ValueStateWritable;
+import edu.uci.ics.genomix.pregelix.type.Message;
+import edu.uci.ics.genomix.pregelix.util.VertexUtil;
 
 /*
  * vertexId: BytesWritable
@@ -50,6 +52,9 @@
     public static int kmerSize = -1;
     private int length = -1;
 
+    private MessageWritable incomingMsg = new MessageWritable();
+    private MessageWritable outgoingMsg = new MessageWritable();
+    
     /**
      * initiate kmerSize, length
      */
@@ -58,14 +63,33 @@
             kmerSize = getContext().getConfiguration().getInt(KMER_SIZE, 5);
         if(length == -1)
             length = getContext().getConfiguration().getInt(LENGTH, kmerSize + 5);
+        outgoingMsg.reset();
     }
 
     @Override
     public void compute(Iterator<MessageWritable> msgIterator) {
         initVertex(); //getVertexValue().getLengthOfMergeChain() < length
         if(getSuperstep() == 1){
-            
+            if(VertexUtil.isIncomingTipVertex(getVertexValue())){
+            	if(getVertexValue().getLengthOfMergeChain() > length){
+            		if(getVertexValue().getOutgoingList().getCountOfPosition() != 0){
+	            		if(getVertexValue().getFFList().getCountOfPosition() > 0)
+	            			outgoingMsg.setMessage(Message.TOFORWARD);
+	            		else if(getVertexValue().getFRList().getCountOfPosition() > 0)
+	            			outgoingMsg.setMessage(Message.TOREVERSE);
+	            		outgoingMsg.setSourceVertexId(getVertexId());
+            		}
+            	}
+            	
+            }
+            else if(VertexUtil.isOutgoingTipVertex(getVertexValue())){
+            	
+            }
         }
+        else if(getSuperstep() == 2){
+        	
+        }
+        voteToHalt();
     }
 
     public static void main(String[] args) throws Exception {
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/type/Message.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/type/Message.java
index fa5f73b..b97f0bb 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/type/Message.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/type/Message.java
@@ -8,7 +8,8 @@
     public static final byte STOP = 3;
     public static final byte FROMPSEUDOHEAD = 4;
     public static final byte FROMPSEUDOREAR = 5;
-    public static final byte FROMSELF = 6;
+    public static final byte TOFORWARD = 6;
+    public static final byte TOREVERSE = 7;
 
     public final static class MESSAGE_CONTENT {
 
@@ -33,8 +34,11 @@
                 case FROMPSEUDOREAR:
                     r = "FROMPSEUDOREAR";
                     break;
-                case FROMSELF:
-                    r = "FROMSELF";
+                case TOFORWARD:
+                    r = "TOFORWARD";
+                    break;
+                case TOREVERSE:
+                    r = "TOREVERSE";
                     break;
             }
             return r;
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 1740744..19839c7 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
@@ -47,4 +47,15 @@
         }
         return false;*/
     }
+    
+    /**
+     * check if vertex is a tip
+     */
+    public static boolean isIncomingTipVertex(ValueStateWritable value){
+    	return value.inDegree() == 0 && value.outDegree() == 1;
+    }
+    
+    public static boolean isOutgoingTipVertex(ValueStateWritable value){
+    	return value.inDegree() == 1 && value.outDegree() == 0;
+    }
 }
