more cleanup of setByRead interface
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/graph/GenerateGraphViz.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/graph/GenerateGraphViz.java
index 782869a..d9d6642 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/graph/GenerateGraphViz.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/graph/GenerateGraphViz.java
@@ -11,7 +11,7 @@
 import org.apache.hadoop.io.SequenceFile;
 
 import edu.uci.ics.genomix.pregelix.io.VertexValueWritable;
-import edu.uci.ics.genomix.type.KmerBytesWritable;
+import edu.uci.ics.genomix.type.VKmerBytesWritable;
 
 public class GenerateGraphViz {
 
@@ -31,7 +31,7 @@
         String outputEdge = "";
         for (File f : srcPath.listFiles((FilenameFilter) (new WildcardFileFilter("part*")))) {
             SequenceFile.Reader reader = new SequenceFile.Reader(fileSys, new Path(f.getAbsolutePath()), conf);
-            KmerBytesWritable key = new KmerBytesWritable();
+            VKmerBytesWritable key = new VKmerBytesWritable();
             VertexValueWritable value = new VertexValueWritable();
             
             while (reader.next(key, value)) {
@@ -58,25 +58,25 @@
     
     public String convertEdgeToGraph(String outputNode, VertexValueWritable value){
         String outputEdge = "";
-        Iterator<KmerBytesWritable> kmerIterator;
+        Iterator<VKmerBytesWritable> kmerIterator;
         kmerIterator = value.getFFList().iterator();
         while(kmerIterator.hasNext()){
-            KmerBytesWritable edge = kmerIterator.next(); 
+            VKmerBytesWritable edge = kmerIterator.next(); 
             outputEdge += outputNode + " -> " + edge.toString() + "[color = \"black\" label =\"FF\"]\n";
         }
         kmerIterator = value.getFRList().iterator();
         while(kmerIterator.hasNext()){
-            KmerBytesWritable edge = kmerIterator.next();
+            VKmerBytesWritable edge = kmerIterator.next();
             outputEdge += outputNode + " -> " + edge.toString() + "[color = \"black\" label =\"FR\"]\n";
         }
         kmerIterator = value.getRFList().iterator();
         while(kmerIterator.hasNext()){
-            KmerBytesWritable edge = kmerIterator.next();
+            VKmerBytesWritable edge = kmerIterator.next();
             outputEdge += outputNode + " -> " + edge.toString() + "[color = \"red\" label =\"RF\"]\n";
         }
         kmerIterator = value.getRRList().iterator();
         while(kmerIterator.hasNext()){
-            KmerBytesWritable edge = kmerIterator.next();
+            VKmerBytesWritable edge = kmerIterator.next();
             outputEdge += outputNode + " -> " + edge.toString() + "[color = \"red\" label =\"RR\"]\n";
         }
         return outputEdge;
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/bridgeremove/BridgeAddVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/bridgeremove/BridgeAddVertex.java
index 5cb6aac..3f4e409 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/bridgeremove/BridgeAddVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/bridgeremove/BridgeAddVertex.java
@@ -72,7 +72,7 @@
         if(getSuperstep() == 1){
             if(getVertexId().toString().equals("ATA")){
             	VKmerBytesWritable vertexId = new VKmerBytesWritable(kmerSize);
-                vertexId.setByRead("GTA".getBytes(), 0);
+                vertexId.setByRead(kmerSize, "GTA".getBytes(), 0);
                 getVertexValue().getFRList().append(vertexId);
                 
                 //add bridge vertex
@@ -92,7 +92,7 @@
                 kmerFRList.append(getVertexId());
                 vertexValue.setFRList(kmerFRList);
                 VKmerBytesWritable otherVertexId = new VKmerBytesWritable(kmerSize);
-                otherVertexId.setByRead("ACG".getBytes(), 0);
+                otherVertexId.setByRead(kmerSize, "ACG".getBytes(), 0);
                 VKmerListWritable kmerRFList = new VKmerListWritable();
                 kmerRFList.append(otherVertexId);
                 vertexValue.setRFList(kmerRFList);
@@ -103,7 +103,7 @@
             } 
             else if(getVertexId().toString().equals("ACG")){
                 VKmerBytesWritable brdgeVertexId = new VKmerBytesWritable(kmerSize);
-                brdgeVertexId.setByRead("GTA".getBytes(), 0);
+                brdgeVertexId.setByRead(kmerSize, "GTA".getBytes(), 0);
                 getVertexValue().getRFList().append(brdgeVertexId);
             }
         }
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/bubblemerge/BubbleAddVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/bubblemerge/BubbleAddVertex.java
index 3df090c..0c96412 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/bubblemerge/BubbleAddVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/bubblemerge/BubbleAddVertex.java
@@ -65,7 +65,7 @@
         if(getSuperstep() == 1){
             if(getVertexId().toString().equals("ATA")){
                 VKmerBytesWritable vertexId = new VKmerBytesWritable(kmerSize);
-                vertexId.setByRead("GTA".getBytes(), 0);
+                vertexId.setByRead(kmerSize, "GTA".getBytes(), 0);
                 getVertexValue().getFRList().append(vertexId);
                 
                 //add bridge vertex
@@ -85,7 +85,7 @@
                 kmerFRList.append(getVertexId());
                 vertexValue.setFRList(kmerFRList);
                 VKmerBytesWritable otherVertexId = new VKmerBytesWritable(kmerSize);
-                otherVertexId.setByRead("AGA".getBytes(), 0);
+                otherVertexId.setByRead(kmerSize, "AGA".getBytes(), 0);
                 VKmerListWritable kmerRFList = new VKmerListWritable();
                 kmerRFList.append(otherVertexId);
                 vertexValue.setRFList(kmerRFList);
@@ -96,7 +96,7 @@
             } 
             else if(getVertexId().toString().equals("AGA")){
                 VKmerBytesWritable brdgeVertexId = new VKmerBytesWritable(kmerSize);
-                brdgeVertexId.setByRead("GTA".getBytes(), 0);
+                brdgeVertexId.setByRead(kmerSize, "GTA".getBytes(), 0);
                 getVertexValue().getRFList().append(brdgeVertexId);
             }
         }
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/BasicGraphCleanVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/BasicGraphCleanVertex.java
index ca4b088..ece573c 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/BasicGraphCleanVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/BasicGraphCleanVertex.java
@@ -653,32 +653,28 @@
                 match = selfString.substring(selfString.length() - kmerSize + 1,selfString.length()); 
                 msgString = msg.getActualKmer().toString();
                 index = msgString.indexOf(match);
-//                tmpKmer.reset(msgString.length() - index);
-                tmpKmer.setByRead(msgString.substring(index).getBytes(), 0);
+                tmpKmer.setByRead(msgString.length() - index, msgString.substring(index).getBytes(), 0);
                 break;
             case MessageFlag.DIR_FR:
                 selfString = getVertexValue().getKmer().toString();
                 match = selfString.substring(selfString.length() - kmerSize + 1,selfString.length()); 
                 msgString = GeneCode.reverseComplement(msg.getActualKmer().toString());
                 index = msgString.indexOf(match);
-//                tmpKmer.reset(msgString.length() - index);
-                tmpKmer.setByReadReverse(msgString.substring(index).getBytes(), 0);
+                tmpKmer.setByReadReverse(msgString.length() - index, msgString.substring(index).getBytes(), 0);
                 break;
             case MessageFlag.DIR_RF:
                 selfString = getVertexValue().getKmer().toString();
                 match = selfString.substring(0,kmerSize - 1); 
                 msgString = GeneCode.reverseComplement(msg.getActualKmer().toString());
                 index = msgString.lastIndexOf(match) + kmerSize - 2;
-//                tmpKmer.reset(index + 1);
-                tmpKmer.setByReadReverse(msgString.substring(0, index + 1).getBytes(), 0);
+                tmpKmer.setByReadReverse(index + 1, msgString.substring(0, index + 1).getBytes(), 0);
                 break;
             case MessageFlag.DIR_RR:
                 selfString = getVertexValue().getKmer().toString();
                 match = selfString.substring(0,kmerSize - 1); 
                 msgString = msg.getActualKmer().toString();
                 index = msgString.lastIndexOf(match) + kmerSize - 2;
-//                tmpKmer.reset(index + 1); // TODO: fix ALL of these resets (only if you need to)
-                tmpKmer.setByRead(msgString.substring(0, index + 1).getBytes(), 0);
+                tmpKmer.setByRead(index + 1, msgString.substring(0, index + 1).getBytes(), 0);
                 break;
         }
        
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 027d295..1c981f2 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
@@ -49,10 +49,9 @@
         else
             kmerList.reset();
         if(fakeVertex == null){
-//            fakeVertex = new KmerBytesWritable(kmerSize + 1); // TODO check if merge is correct
             fakeVertex = new VKmerBytesWritable();
             String random = generaterRandomString(kmerSize + 1);
-            fakeVertex.setByRead(random.getBytes(), 0); 
+            fakeVertex.setByRead(kmerSize + 1, random.getBytes(), 0); 
         }
         if(destVertexId == null)
             destVertexId = new VKmerBytesWritable(kmerSize);
@@ -108,9 +107,8 @@
             incomingMsg = msgIterator.next();
             String kmerString = incomingMsg.getActualKmer().toString();
             tmpKmer.reset(kmerString.length());
-//            reverseKmer.reset(kmerString.length());//kmerbyteswritable 
-            tmpKmer.setByRead(kmerString.getBytes(), 0);
-            reverseKmer.setByReadReverse(kmerString.getBytes(), 0);
+            tmpKmer.setByRead(kmerString.length(), kmerString.getBytes(), 0);
+            reverseKmer.setByReadReverse(kmerString.length(), kmerString.getBytes(), 0);
 
             if(reverseKmer.compareTo(tmpKmer) < 0)
                 tmpKmer.setAsCopy(reverseKmer);
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/P2ForPathMergeVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/P2ForPathMergeVertex.java
index da83dcf..6b7ad1f 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/P2ForPathMergeVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/P2ForPathMergeVertex.java
@@ -76,7 +76,7 @@
 //            fakeVertex = new KmerBytesWritable(kmerSize + 1);
             fakeVertex = new VKmerBytesWritable();
             String random = generaterRandomString(kmerSize + 1);
-            fakeVertex.setByRead(random.getBytes(), 0); 
+            fakeVertex.setByRead(kmerSize + 1, random.getBytes(), 0); 
         }
         isFakeVertex = ((byte)getVertexValue().getState() & State.FAKEFLAG_MASK) > 0 ? true : false;
         if(destVertexId == null)
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 e4e797f..83958fe 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
@@ -341,9 +341,9 @@
                         
                         if(!neighborEdgeIntersection.isEmpty()){
                             if(count == 0)
-                                createdVertexId.setByRead("AAA".getBytes(), 0);//kmerSize + 1 generaterRandomString(kmerSize).getBytes()
+                                createdVertexId.setByRead("AAA".length(), "AAA".getBytes(), 0);//kmerSize + 1 generaterRandomString(kmerSize).getBytes()
                             else
-                                createdVertexId.setByRead("GGG".getBytes(), 0);
+                                createdVertexId.setByRead("GGG".length(), "GGG".getBytes(), 0);
                             count++;
                             
                             /** create new/created vertex **/
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/tipremove/TipAddVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/tipremove/TipAddVertex.java
index 4a540b8..cff87c7 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/tipremove/TipAddVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/tipremove/TipAddVertex.java
@@ -69,7 +69,7 @@
         if(getSuperstep() == 1){
             if(getVertexId().toString().equals("CTA")){
                 VKmerBytesWritable vertexId = new VKmerBytesWritable(kmerSize);
-                vertexId.setByRead("AGC".getBytes(), 0);
+                vertexId.setByRead(kmerSize, "AGC".getBytes(), 0);
                 getVertexValue().getRFList().append(vertexId);
                 
                 //add tip vertex
diff --git a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/pathmerge/MergePathTest.java b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/pathmerge/MergePathTest.java
index e8ca60f..9daeaa3 100644
--- a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/pathmerge/MergePathTest.java
+++ b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/pathmerge/MergePathTest.java
@@ -14,7 +14,7 @@
 
 import edu.uci.ics.genomix.pregelix.io.VertexValueWritable;
 import edu.uci.ics.genomix.pregelix.type.State2;
-import edu.uci.ics.genomix.type.KmerBytesWritable;
+import edu.uci.ics.genomix.type.VKmerBytesWritable;
 
 public class MergePathTest {
     public static final String PATH_TO_TESTSTORE = "testcase/pathmerge/";
@@ -50,7 +50,7 @@
         for (int i = 0; i < nc; i++) {
             Path path = new Path(input + "/part-" + i);
             SequenceFile.Reader reader = new SequenceFile.Reader(fileSys, path, conf);
-            KmerBytesWritable key = new KmerBytesWritable(kmerSize);
+            VKmerBytesWritable key = new VKmerBytesWritable(kmerSize);
             VertexValueWritable value = new VertexValueWritable();
 
             while (reader.next(key, value)) {
@@ -90,7 +90,7 @@
         for (int i = 0; i < nc; i++) {
             Path path = new Path(input + "/part-" + i);
             SequenceFile.Reader reader = new SequenceFile.Reader(fileSys, path, conf);
-            KmerBytesWritable key = new KmerBytesWritable(kmerSize);
+            VKmerBytesWritable key = new VKmerBytesWritable(kmerSize);
             VertexValueWritable value = new VertexValueWritable();
 
             while (reader.next(key, value)) {
@@ -115,7 +115,7 @@
         for (int i = 0; i < nc; i++) {
             Path path = new Path(input + "/part-" + i);
             SequenceFile.Reader reader = new SequenceFile.Reader(fileSys, path, conf);
-            KmerBytesWritable key = new KmerBytesWritable(kmerSize);
+            VKmerBytesWritable key = new VKmerBytesWritable(kmerSize);
             VertexValueWritable value = new VertexValueWritable();
 
             while (reader.next(key, value)) {