diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/splitrepeat/SplitRepeatVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/splitrepeat/SplitRepeatVertex.java
index f019fb0..158104f 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/splitrepeat/SplitRepeatVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/splitrepeat/SplitRepeatVertex.java
@@ -91,7 +91,7 @@
             {"FR", "RR"}
     };
     public static Set<String> existKmerString = new HashSet<String>();
-    private Set<Long> readIdSet = new HashSet<Long>();
+    private Set<Long> readIdSet;
     private Set<Long> incomingReadIdSet = new HashSet<Long>();
     private Set<Long> outgoingReadIdSet = new HashSet<Long>();
     private Set<Long> selfReadIdSet = new HashSet<Long>();
@@ -172,7 +172,7 @@
             createdVertexSet.clear();
             while(msgIterator.hasNext()){
                 incomingMsg = msgIterator.next();
-                readIdSet.clear();
+                readIdSet = new HashSet<Long>();
                 for(PositionWritable nodeId : incomingMsg.getNodeIdList()){
                     readIdSet.add(nodeId.getReadId());
                 }
@@ -210,15 +210,15 @@
                         incomingReadIdSet = kmerMap.get(incomingEdge);
                         
                         //set all neighberEdge readId intersection
-                        neighborEdgeIntersection = selfReadIdSet;
+                        neighborEdgeIntersection.addAll(selfReadIdSet);
                         neighborEdgeIntersection.retainAll(outgoingReadIdSet);
                         neighborEdgeIntersection.retainAll(incomingReadIdSet);
                         //set outgoingEdge readId intersection
-                        outgoingEdgeIntersection = selfReadIdSet;
+                        outgoingEdgeIntersection.addAll(selfReadIdSet);
                         outgoingEdgeIntersection.retainAll(outgoingReadIdSet);
                         outgoingEdgeIntersection.removeAll(neighborEdgeIntersection); 
                         //set incomingEdge readId intersection
-                        incomingEdgeIntersection = selfReadIdSet;
+                        incomingEdgeIntersection.addAll(selfReadIdSet);
                         incomingEdgeIntersection.retainAll(incomingReadIdSet);
                         incomingEdgeIntersection.removeAll(neighborEdgeIntersection);
                         
@@ -274,7 +274,9 @@
             while(msgIterator.hasNext()){
                 incomingMsg = msgIterator.next();
                 /** update edgelist to new/created vertex **/
-                switch(incomingMsg.getFlag()){
+                byte meToNeighborDir = incomingMsg.getFlag();
+                byte neighborToMeDir = mirrorDirection(meToNeighborDir);
+                switch(neighborToMeDir){
                     case MessageFlag.DIR_FF:
                         getVertexValue().getFFList().remove(incomingMsg.getSourceVertexId());
                         getVertexValue().getFFList().append(incomingMsg.getCreatedVertexId());
@@ -317,6 +319,7 @@
                     vertex.setVertexId(v.getCreatedVertexId());
                     vertex.setVertexValue(vertexValue);
                 }
+                createdVertexSet.clear();
             }
         }
     }
diff --git a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/SplitRepeatmallTestSuite.java b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/SplitRepeatSmallTestSuite.java
similarity index 97%
rename from genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/SplitRepeatmallTestSuite.java
rename to genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/SplitRepeatSmallTestSuite.java
index d87281d..21ffe34 100644
--- a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/SplitRepeatmallTestSuite.java
+++ b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/SplitRepeatSmallTestSuite.java
@@ -40,8 +40,8 @@
 import edu.uci.ics.pregelix.core.util.PregelixHyracksIntegrationUtil;
 
 @SuppressWarnings("deprecation")
-public class SplitRepeatmallTestSuite extends TestSuite {
-    private static final Logger LOGGER = Logger.getLogger(SplitRepeatmallTestSuite.class.getName());
+public class SplitRepeatSmallTestSuite extends TestSuite {
+    private static final Logger LOGGER = Logger.getLogger(SplitRepeatSmallTestSuite.class.getName());
     //P4ForMergeGraph/bin/read
     public static final String PreFix = "data/SplitRepeat"; //"graphbuildresult";
     public static final String[] TestDir = { PreFix + File.separator
@@ -123,7 +123,7 @@
         List<String> onlys = getFileList(PATH_TO_ONLY);
         File testData = new File(PATH_TO_JOBS);
         File[] queries = testData.listFiles();
-        SplitRepeatmallTestSuite testSuite = new SplitRepeatmallTestSuite();
+        SplitRepeatSmallTestSuite testSuite = new SplitRepeatSmallTestSuite();
         testSuite.setUp();
         boolean onlyEnabled = false;
         FileSystem dfs = FileSystem.get(testSuite.conf);
diff --git a/genomix/genomix-pregelix/src/test/resources/only_splitrepeat.txt b/genomix/genomix-pregelix/src/test/resources/only_splitrepeat.txt
new file mode 100644
index 0000000..41cba34
--- /dev/null
+++ b/genomix/genomix-pregelix/src/test/resources/only_splitrepeat.txt
@@ -0,0 +1 @@
+SplitRepeatGraph.xml
\ No newline at end of file
