clean up interface for VKmer setByRead
diff --git a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/KmerBytesWritableFactory.java b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/KmerBytesWritableFactory.java
index 16df821..c287c1b 100644
--- a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/KmerBytesWritableFactory.java
+++ b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/KmerBytesWritableFactory.java
@@ -31,8 +31,7 @@
      * @param start
      */
     public VKmerBytesWritable getKmerByRead(int k, byte[] array, int start) {
-        kmer.reset(k);
-        kmer.setByRead(array, start);
+        kmer.setByRead(k, array, start);
         return kmer;
     }
 
@@ -44,8 +43,7 @@
      * @param start
      */
     public VKmerBytesWritable getKmerByReadReverse(int k, byte[] array, int start) {
-        kmer.reset(k);
-        kmer.setByReadReverse(array, start);
+        kmer.setByReadReverse(k, array, start);
         return kmer;
     }
 
diff --git a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/VKmerBytesWritable.java b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/VKmerBytesWritable.java
index 73edd9d..af5b2ed 100644
--- a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/VKmerBytesWritable.java
+++ b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/VKmerBytesWritable.java
@@ -441,7 +441,7 @@
      * @param stringBytes
      * @param start
      */
-    public void setByRead(byte[] stringBytes, int start) {
+    private void setByRead(byte[] stringBytes, int start) {
         byte l = 0;
         int bytecount = 0;
         int bcount = this.bytesUsed - 1;
@@ -474,7 +474,7 @@
      * @param start
      *            position
      */
-    public void setByReadReverse(byte[] array, int start) {
+    private void setByReadReverse(byte[] array, int start) {
         byte l = 0;
         int bytecount = 0;
         int bcount = bytesUsed - 1;
diff --git a/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/KmerBytesWritableFactoryTest.java b/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/KmerBytesWritableFactoryTest.java
index 7808719..36115d3 100644
--- a/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/KmerBytesWritableFactoryTest.java
+++ b/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/KmerBytesWritableFactoryTest.java
@@ -29,8 +29,8 @@
 
     @Test
     public void TestGetLastKmer() {
-        VKmerBytesWritable kmer = new VKmerBytesWritable(9);
-        kmer.setByRead(array, 0);
+        VKmerBytesWritable kmer = new VKmerBytesWritable();
+        kmer.setByRead(9, array, 0);
         Assert.assertEquals("AGCTGACCG", kmer.toString());
         VKmerBytesWritable lastKmer;
         for (int i = 8; i > 0; i--) {
@@ -50,8 +50,8 @@
 
     @Test
     public void TestGetFirstKmer() {
-        VKmerBytesWritable kmer = new VKmerBytesWritable(9);
-        kmer.setByRead(array, 0);
+        VKmerBytesWritable kmer = new VKmerBytesWritable();
+        kmer.setByRead(9, array, 0);
         Assert.assertEquals("AGCTGACCG", kmer.toString());
         VKmerBytesWritable firstKmer;
         for (int i = 8; i > 0; i--) {
@@ -71,8 +71,8 @@
 
     @Test
     public void TestGetSubKmer() {
-        VKmerBytesWritable kmer = new VKmerBytesWritable(9);
-        kmer.setByRead(array, 0);
+        VKmerBytesWritable kmer = new VKmerBytesWritable();
+        kmer.setByRead(9, array, 0);
         Assert.assertEquals("AGCTGACCG", kmer.toString());
         VKmerBytesWritable subKmer;
         for (int istart = 0; istart < kmer.getKmerLetterLength() - 1; istart++) {
@@ -85,8 +85,8 @@
 
     @Test
     public void TestMergeNext() {
-        VKmerBytesWritable kmer = new VKmerBytesWritable(9);
-        kmer.setByRead(array, 0);
+        VKmerBytesWritable kmer = new VKmerBytesWritable();
+        kmer.setByRead(9, array, 0);
         Assert.assertEquals("AGCTGACCG", kmer.toString());
 
         String text = "AGCTGACCG";
@@ -106,8 +106,8 @@
 
     @Test
     public void TestMergePre() {
-        VKmerBytesWritable kmer = new VKmerBytesWritable(9);
-        kmer.setByRead(array, 0);
+        VKmerBytesWritable kmer = new VKmerBytesWritable();
+        kmer.setByRead(9, array, 0);
         Assert.assertEquals("AGCTGACCG", kmer.toString());
         String text = "AGCTGACCG";
         for (byte x = GeneCode.A; x <= GeneCode.T; x++) {
@@ -126,11 +126,11 @@
 
     @Test
     public void TestMergeTwoKmer() {
-        VKmerBytesWritable kmer1 = new VKmerBytesWritable(9);
-        kmer1.setByRead(array, 0);
+        VKmerBytesWritable kmer1 = new VKmerBytesWritable();
+        kmer1.setByRead(9, array, 0);
         String text1 = "AGCTGACCG";
-        VKmerBytesWritable kmer2 = new VKmerBytesWritable(9);
-        kmer2.setByRead(array, 1);
+        VKmerBytesWritable kmer2 = new VKmerBytesWritable();
+        kmer2.setByRead(9, array, 1);
         String text2 = "GCTGACCGT";
         Assert.assertEquals(text1, kmer1.toString());
         Assert.assertEquals(text2, kmer2.toString());
@@ -138,8 +138,8 @@
         VKmerBytesWritable merged = kmerFactory.mergeTwoKmer(kmer1, kmer2);
         Assert.assertEquals(text1 + text2, merged.toString());
 
-        VKmerBytesWritable kmer3 = new VKmerBytesWritable(3);
-        kmer3.setByRead(array, 1);
+        VKmerBytesWritable kmer3 = new VKmerBytesWritable();
+        kmer3.setByRead(3, array, 1);
         String text3 = "GCT";
         Assert.assertEquals(text3, kmer3.toString());
 
@@ -148,17 +148,17 @@
         merged = kmerFactory.mergeTwoKmer(kmer3, kmer1);
         Assert.assertEquals(text3 + text1, merged.toString());
 
-        VKmerBytesWritable kmer4 = new VKmerBytesWritable(8);
-        kmer4.setByRead(array, 0);
+        VKmerBytesWritable kmer4 = new VKmerBytesWritable();
+        kmer4.setByRead(8, array, 0);
         String text4 = "AGCTGACC";
         Assert.assertEquals(text4, kmer4.toString());
         merged = kmerFactory.mergeTwoKmer(kmer4, kmer3);
         Assert.assertEquals(text4 + text3, merged.toString());
 
-        VKmerBytesWritable kmer5 = new VKmerBytesWritable(7);
-        kmer5.setByRead(array, 0);
+        VKmerBytesWritable kmer5 = new VKmerBytesWritable();
+        kmer5.setByRead(7, array, 0);
         String text5 = "AGCTGAC";
-        VKmerBytesWritable kmer6 = new VKmerBytesWritable(9);
+        VKmerBytesWritable kmer6 = new VKmerBytesWritable();
         kmer6.setByRead(9, array, 1);
         String text6 = "GCTGACCGT";
         merged = kmerFactory.mergeTwoKmer(kmer5, kmer6);
@@ -192,17 +192,16 @@
 
     @Test
     public void TestReverseKmer() {
-        VKmerBytesWritable kmer = new VKmerBytesWritable(7);
-        kmer.setByRead(array, 0);
+        VKmerBytesWritable kmer = new VKmerBytesWritable();
+        kmer.setByRead(7, array, 0);
         Assert.assertEquals(kmer.toString(), "AGCTGAC");
         VKmerBytesWritable reversed = kmerFactory.reverse(kmer);
         Assert.assertEquals(reversed.toString(), "CAGTCGA");
         
-        kmer.reset(8);
-        kmer.setByRead(("AATAGAAC").getBytes(), 0);
+        kmer.setByRead(8, ("AATAGAAC").getBytes(), 0);
         Assert.assertEquals(kmer.toString(), "AATAGAAC");
         reversed.reset(8);
         reversed = kmerFactory.reverse(kmer);
-        Assert.assertEquals(reversed.toString(), "GTTCTATT");
+        Assert.assertEquals(reversed.toString(), "CAAGATAA");
     }
 }
diff --git a/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/KmerListWritableTest.java b/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/KmerListWritableTest.java
index 9ca4488..fc97664 100644
--- a/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/KmerListWritableTest.java
+++ b/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/KmerListWritableTest.java
@@ -23,7 +23,7 @@
             kmer = new VKmerBytesWritable(i);
             String randomString = generaterRandomString(i);
             byte[] array = randomString.getBytes();
-            kmer.setByRead(array, 0);
+            kmer.setByRead(i, array, 0);
             kmerList.reset();
             kmerList.append(kmer);
             Assert.assertEquals(randomString, kmerList.getPosition(0).toString());
@@ -36,7 +36,7 @@
             kmer = new VKmerBytesWritable(5);
             String randomString = generaterRandomString(5);
             byte[] array = randomString.getBytes();
-            kmer.setByRead(array, 0);
+            kmer.setByRead(5, array, 0);
             kmerList.append(kmer);
             Assert.assertEquals(kmerList.getPosition(i).toString(), randomString);
             Assert.assertEquals(i + 1, kmerList.getCountOfPosition());
@@ -62,7 +62,7 @@
             kmer = new VKmerBytesWritable(5);
             String randomString = generaterRandomString(5);
             byte[] array = randomString.getBytes();
-            kmer.setByRead(array, 0);
+            kmer.setByRead(5, array, 0);
             kmerList.append(kmer);
             Assert.assertEquals(randomString, kmerList.getPosition(i).toString());
             Assert.assertEquals(i + 1, kmerList.getCountOfPosition());
@@ -78,7 +78,7 @@
             iterator = copyList.iterator();
             byte[] array = kmerList.getPosition(j).toString().getBytes();
             VKmerBytesWritable deletePos = new VKmerBytesWritable(5);
-            deletePos.setByRead(array, 0);
+            deletePos.setByRead(5, array, 0);
             boolean removed = false;
             while(iterator.hasNext()){
                 tmpKmer = iterator.next();
@@ -109,9 +109,9 @@
         
         VKmerListWritable edgeList = new VKmerListWritable();
         VKmerBytesWritable k = new VKmerBytesWritable(3);
-        k.setByRead(("AAA").getBytes(), 0);
+        k.setByRead(3, ("AAA").getBytes(), 0);
         edgeList.append(k);
-        k.setByRead(("CCC").getBytes(), 0);
+        k.setByRead(3, ("CCC").getBytes(), 0);
         edgeList.append(k);
         for(VKmerBytesWritable edge : edgeList){
         	System.out.println(edge.toString());
diff --git a/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/VKmerBytesWritableTest.java b/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/VKmerBytesWritableTest.java
index 2493b7e..1b60c3c 100644
--- a/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/VKmerBytesWritableTest.java
+++ b/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/VKmerBytesWritableTest.java
@@ -37,17 +37,17 @@
     @Test
     public void TestCompressKmer() {
         VKmerBytesWritable kmer = new VKmerBytesWritable(k);
-        kmer.setByRead(array, 0);
+        kmer.setByRead(k, array, 0);
         Assert.assertEquals(kmer.toString(), "AATAGAA");
 
-        kmer.setByRead(array, 1);
+        kmer.setByRead(k, array, 1);
         Assert.assertEquals(kmer.toString(), "ATAGAAG");
     }
 
     @Test
     public void TestMoveKmer() {
         VKmerBytesWritable kmer = new VKmerBytesWritable(k);
-        kmer.setByRead(array, 0);
+        kmer.setByRead(k, array, 0);
         Assert.assertEquals(kmer.toString(), "AATAGAA");
 
         for (int i = k; i < array.length - 1; i++) {
@@ -63,17 +63,17 @@
     @Test
     public void TestCompressKmerReverse() {
         VKmerBytesWritable kmer = new VKmerBytesWritable(k);
-        kmer.setByRead(array, 0);
+        kmer.setByRead(k, array, 0);
         Assert.assertEquals(kmer.toString(), "AATAGAA");
 
-        kmer.setByReadReverse(array, 1);
+        kmer.setByReadReverse(k, array, 1);
         Assert.assertEquals(kmer.toString(), "CTTCTAT");
     }
 
     @Test
     public void TestMoveKmerReverse() {
         VKmerBytesWritable kmer = new VKmerBytesWritable(k);
-        kmer.setByRead(array, 0);
+        kmer.setByRead(k, array, 0);
         Assert.assertEquals(kmer.toString(), "AATAGAA");
 
         for (int i = k; i < array.length - 1; i++) {
@@ -91,7 +91,7 @@
         VKmerBytesWritable kmer = new VKmerBytesWritable(9);
         String text = "AGCTGACCG";
         byte[] array = { 'A', 'G', 'C', 'T', 'G', 'A', 'C', 'C', 'G' };
-        kmer.setByRead(array, 0);
+        kmer.setByRead(9, array, 0);
 
         for (int i = 0; i < 9; i++) {
             Assert.assertEquals(text.charAt(i), (char) (GeneCode.getSymbolFromCode(kmer.getGeneCodeAtPosition(i))));
@@ -105,7 +105,7 @@
         for (int k = 3; k <= 10; k++) {
             VKmerBytesWritable kmer = new VKmerBytesWritable(k);
             VKmerBytesWritable kmerAppend = new VKmerBytesWritable(k);
-            kmer.setByRead(array, 0);
+            kmer.setByRead(k, array, 0);
             Assert.assertEquals(string.substring(0, k), kmer.toString());
             for (int b = 0; b < k; b++) {
                 byte byteActual = KmerBytesWritable.getOneByteFromKmerAtPosition(b, kmer.getBytes(),
@@ -127,12 +127,12 @@
         byte[] array = { 'A', 'G', 'C', 'T', 'G', 'A', 'C', 'C', 'G', 'T' };
         String text = "AGCTGACCGT";
         VKmerBytesWritable kmer1 = new VKmerBytesWritable(8);
-        kmer1.setByRead(array, 0);
+        kmer1.setByRead(8, array, 0);
         String text1 = "AGCTGACC";
         Assert.assertEquals(text1, kmer1.toString());
 
         VKmerBytesWritable kmer2 = new VKmerBytesWritable(8);
-        kmer2.setByRead(array, 1);
+        kmer2.setByRead(8, array, 1);
         String text2 = "GCTGACCG";
         Assert.assertEquals(text2, kmer2.toString());
 
@@ -151,8 +151,8 @@
             for (int jk = 1; jk <= 10; jk++) {
                 kmer1 = new VKmerBytesWritable(ik);
                 kmer2 = new VKmerBytesWritable(jk);
-                kmer1.setByRead(array, 0);
-                kmer2.setByRead(array, 0);
+                kmer1.setByRead(ik, array, 0);
+                kmer2.setByRead(jk, array, 0);
                 text1 = text.substring(0, ik);
                 text2 = text.substring(0, jk);
                 Assert.assertEquals(text1, kmer1.toString());
@@ -174,13 +174,13 @@
 
         String text1 = "AAGCTAA";
         VKmerBytesWritable kmer1 = new VKmerBytesWritable(text1.length());
-        kmer1.setByRead(resultArray, 0);
+        kmer1.setByRead(text1.length(), resultArray, 0);
         Assert.assertEquals(text1, kmer1.toString());
 
         // kmer2 is the rc of the end of the read
         String text2 = "GGTTGTT";
         VKmerBytesWritable kmer2 = new VKmerBytesWritable(text2.length());
-        kmer2.setByReadReverse(resultArray, result.length() - text2.length());
+        kmer2.setByReadReverse(text2.length(), resultArray, result.length() - text2.length());
         Assert.assertEquals(text2, kmer2.toString());
 
         VKmerBytesWritable merge = new VKmerBytesWritable(kmer1);
@@ -211,13 +211,13 @@
 
         String text1 = "AACAACCC";
         VKmerBytesWritable kmer1 = new VKmerBytesWritable(text1.length());
-        kmer1.setByRead(resultArray, 5);
+        kmer1.setByRead(text1.length(), resultArray, 5);
         Assert.assertEquals(text1, kmer1.toString());
 
         // kmer2 is the rc of the end of the read
         String text2 = "TTGTGCC";
         VKmerBytesWritable kmer2 = new VKmerBytesWritable(text2.length());
-        kmer2.setByReadReverse(resultArray, 0);
+        kmer2.setByReadReverse(text2.length(), resultArray, 0);
         Assert.assertEquals(text2, kmer2.toString());
 
         VKmerBytesWritable merge = new VKmerBytesWritable(kmer1);
@@ -253,8 +253,8 @@
         String test4 = "AGA"; // rc = TCT
         VKmerBytesWritable k3 = new VKmerBytesWritable(3);
         VKmerBytesWritable k4 = new VKmerBytesWritable(3);
-        k3.setByRead(test3.getBytes(), 0);
-        k4.setByRead(test4.getBytes(), 0);
+        k3.setByRead(3, test3.getBytes(), 0);
+        k4.setByRead(3, test4.getBytes(), 0);
         k3.mergeWithRFKmer(3, k4);
         Assert.assertEquals("TCTA", k3.toString());
         // Assert.assertEquals("CTAT", k3); // this is an incorrect test case--
@@ -266,8 +266,8 @@
         test2 = "AGA";
         VKmerBytesWritable k1 = new VKmerBytesWritable(3);
         VKmerBytesWritable k2 = new VKmerBytesWritable(3);
-        k1.setByRead(test1.getBytes(), 0);
-        k2.setByRead(test2.getBytes(), 0);
+        k1.setByRead(3, test1.getBytes(), 0);
+        k2.setByRead(3, test2.getBytes(), 0);
         k1.mergeWithRFKmer(3, k2);
         Assert.assertEquals("TCTA", k1.toString());
         
@@ -277,8 +277,8 @@
         test2 = "ATA"; //TAT
         k1 = new VKmerBytesWritable(3);
         k2 = new VKmerBytesWritable(3);
-        k1.setByRead(test1.getBytes(), 0);
-        k2.setByRead(test2.getBytes(), 0);
+        k1.setByRead(3, test1.getBytes(), 0);
+        k2.setByRead(3, test2.getBytes(), 0);
         k1.mergeWithFRKmer(3, k2);
         Assert.assertEquals("CTAT", k1.toString());
         
@@ -286,8 +286,8 @@
         test2 = "CTA"; //TAT
         k1 = new VKmerBytesWritable(3);
         k2 = new VKmerBytesWritable(3);
-        k1.setByRead(test1.getBytes(), 0);
-        k2.setByRead(test2.getBytes(), 0);
+        k1.setByRead(3, test1.getBytes(), 0);
+        k2.setByRead(3, test2.getBytes(), 0);
         k1.mergeWithFRKmer(3, k2);
         Assert.assertEquals("ATAG", k1.toString());
         
@@ -295,8 +295,8 @@
         test2 = "GAAC";
         k1 = new VKmerBytesWritable(5);
         k2 = new VKmerBytesWritable(4);
-        k1.setByRead(test1.getBytes(), 0);
-        k2.setByRead(test2.getBytes(), 0);
+        k1.setByRead(5, test1.getBytes(), 0);
+        k2.setByRead(4, test2.getBytes(), 0);
         k1.mergeWithRFKmer(3, k2);
         Assert.assertEquals("GTTCTAT", k1.toString());
     }
@@ -306,10 +306,10 @@
         byte[] array = { 'A', 'G', 'C', 'T', 'G', 'A', 'C', 'C', 'G', 'T' };
         String text = "AGCTGACCGT";
         VKmerBytesWritable kmer1 = new VKmerBytesWritable(8);
-        kmer1.setByRead(array, 0);
+        kmer1.setByRead(8, array, 0);
         String text1 = "AGCTGACC";
         VKmerBytesWritable kmer2 = new VKmerBytesWritable(8);
-        kmer2.setByRead(array, 1);
+        kmer2.setByRead(8, array, 1);
         String text2 = "GCTGACCG";
         Assert.assertEquals(text2, kmer2.toString());
         VKmerBytesWritable merge = new VKmerBytesWritable(kmer2);
@@ -327,8 +327,8 @@
             for (int jk = 1; jk <= 10; jk++) {
                 kmer1 = new VKmerBytesWritable(ik);
                 kmer2 = new VKmerBytesWritable(jk);
-                kmer1.setByRead(array, 0);
-                kmer2.setByRead(array, 0);
+                kmer1.setByRead(ik, array, 0);
+                kmer2.setByRead(jk, array, 0);
                 text1 = text.substring(0, ik);
                 text2 = text.substring(0, jk);
                 Assert.assertEquals(text1, kmer1.toString());
@@ -350,9 +350,9 @@
         VKmerBytesWritable k1 = new VKmerBytesWritable(5);
         VKmerBytesWritable k2 = new VKmerBytesWritable(5);
         VKmerBytesWritable k3 = new VKmerBytesWritable(5);
-        k1.setByRead(test1.getBytes(), 0);
-        k2.setByRead(test2.getBytes(), 0);
-        k3.setByRead(test3.getBytes(), 0);
+        k1.setByRead(5, test1.getBytes(), 0);
+        k2.setByRead(5, test2.getBytes(), 0);
+        k3.setByRead(5, test3.getBytes(), 0);
         k1.mergeWithRFKmer(5, k2);
         Assert.assertEquals("CTAGAT", k1.toString());
         k1.mergeWithRRKmer(5, k3);
@@ -367,9 +367,9 @@
         VKmerBytesWritable k1 = new VKmerBytesWritable(5);
         VKmerBytesWritable k2 = new VKmerBytesWritable(5);
         VKmerBytesWritable k3 = new VKmerBytesWritable(5);
-        k1.setByRead(test1.getBytes(), 0);
-        k2.setByRead(test2.getBytes(), 0);
-        k3.setByRead(test3.getBytes(), 0);
+        k1.setByRead(5, test1.getBytes(), 0);
+        k2.setByRead(5, test2.getBytes(), 0);
+        k3.setByRead(5, test3.getBytes(), 0);
         k1.mergeWithRFKmer(5, k2);
         Assert.assertEquals("CTAGAT", k1.toString());
         k1.mergeWithRFKmer(5, k3);
@@ -384,9 +384,9 @@
         VKmerBytesWritable k1 = new VKmerBytesWritable(5);
         VKmerBytesWritable k2 = new VKmerBytesWritable(5);
         VKmerBytesWritable k3 = new VKmerBytesWritable(5);
-        k1.setByRead(test1.getBytes(), 0);
-        k2.setByRead(test2.getBytes(), 0);
-        k3.setByRead(test3.getBytes(), 0);
+        k1.setByRead(5, test1.getBytes(), 0);
+        k2.setByRead(5, test2.getBytes(), 0);
+        k3.setByRead(5, test3.getBytes(), 0);
         k2.mergeWithRFKmer(5, k1);
         Assert.assertEquals("ATCTAG", k2.toString());
         k2.mergeWithFRKmer(5, k3);
@@ -401,9 +401,9 @@
         VKmerBytesWritable k1 = new VKmerBytesWritable(5);
         VKmerBytesWritable k2 = new VKmerBytesWritable(5);
         VKmerBytesWritable k3 = new VKmerBytesWritable(5);
-        k1.setByRead(test1.getBytes(), 0);
-        k2.setByRead(test2.getBytes(), 0);
-        k3.setByRead(test3.getBytes(), 0);
+        k1.setByRead(5, test1.getBytes(), 0);
+        k2.setByRead(5, test2.getBytes(), 0);
+        k3.setByRead(5, test3.getBytes(), 0);
         k2.mergeWithRFKmer(5, k1);
         Assert.assertEquals("ATCTAG", k2.toString());
         k2.mergeWithFFKmer(5, k3);
@@ -418,9 +418,9 @@
         VKmerBytesWritable k1 = new VKmerBytesWritable(5);
         VKmerBytesWritable k2 = new VKmerBytesWritable(5);
         VKmerBytesWritable k3 = new VKmerBytesWritable(5);
-        k1.setByRead(test1.getBytes(), 0);
-        k2.setByRead(test2.getBytes(), 0);
-        k3.setByRead(test3.getBytes(), 0);
+        k1.setByRead(5, test1.getBytes(), 0);
+        k2.setByRead(5, test2.getBytes(), 0);
+        k3.setByRead(5, test3.getBytes(), 0);
         k2.mergeWithRFKmer(5, k1);
         Assert.assertEquals("ATCTAG", k2.toString());
         k2.mergeWithFFKmer(5, k3);
@@ -435,9 +435,9 @@
         VKmerBytesWritable k1 = new VKmerBytesWritable(5);
         VKmerBytesWritable k2 = new VKmerBytesWritable(5);
         VKmerBytesWritable k3 = new VKmerBytesWritable(5);
-        k1.setByRead(test1.getBytes(), 0);
-        k2.setByRead(test2.getBytes(), 0);
-        k3.setByRead(test3.getBytes(), 0);
+        k1.setByRead(5, test1.getBytes(), 0);
+        k2.setByRead(5, test2.getBytes(), 0);
+        k3.setByRead(5, test3.getBytes(), 0);
         k1.mergeWithRFKmer(5, k2);
         Assert.assertEquals("CTAGAT", k1.toString());
         k1.mergeWithRFKmer(5, k3);
@@ -465,7 +465,7 @@
         index = msgString.indexOf(match);
         // does this test belong in VKmer so it can have variable-length kmers?
 //        kmer.reset(msgString.length() - index);
-        kmer.setByRead(msgString.substring(index).getBytes(), 0);
+        kmer.setByRead(kmerSize, msgString.substring(index).getBytes(), 0);
         System.out.println(kmer.toString());
         
         //FR test
@@ -474,7 +474,7 @@
         msgString = GeneCode.reverseComplement(R2);
         index = msgString.indexOf(match);
         kmer.reset(msgString.length() - index);
-        kmer.setByRead(msgString.substring(index).getBytes(), 0);
+        kmer.setByRead(kmerSize, msgString.substring(index).getBytes(), 0);
         System.out.println(kmer.toString());
         
         //RF test
@@ -483,7 +483,7 @@
         msgString = GeneCode.reverseComplement(F2);
         index = msgString.lastIndexOf(match) + kmerSize - 2;
         kmer.reset(index + 1);
-        kmer.setByReadReverse(msgString.substring(0, index + 1).getBytes(), 0);
+        kmer.setByReadReverse(kmerSize, msgString.substring(0, index + 1).getBytes(), 0);
         System.out.println(kmer.toString());
         
         //RR test
@@ -492,7 +492,7 @@
         msgString = R2;
         index = msgString.lastIndexOf(match) + kmerSize - 2;
         kmer.reset(index + 1);
-        kmer.setByRead(msgString.substring(0, index + 1).getBytes(), 0);
+        kmer.setByRead(kmerSize, msgString.substring(0, index + 1).getBytes(), 0);
         System.out.println(kmer.toString());
         
         String[][] connectedTable = new String[][]{
@@ -521,21 +521,21 @@
         Map<VKmerBytesWritable, Set<Long>> map = new HashMap<VKmerBytesWritable, Set<Long>>();
         VKmerBytesWritable k1 = new VKmerBytesWritable(3);
         Set<Long> set1 = new HashSet<Long>();
-        k1.setByRead(("CTA").getBytes(), 0);
+        k1.setByRead(3, ("CTA").getBytes(), 0);
         set1.add((long)1);
         map.put(k1, set1);
         VKmerBytesWritable k2 = new VKmerBytesWritable(3);
-        k2.setByRead(("GTA").getBytes(), 0);
+        k2.setByRead(3, ("GTA").getBytes(), 0);
         Set<Long> set2 = new HashSet<Long>();
         set2.add((long) 2);
         map.put(k2, set2);
         VKmerBytesWritable k3 = new VKmerBytesWritable(3);
-        k3.setByRead(("ATG").getBytes(), 0);
+        k3.setByRead(3, ("ATG").getBytes(), 0);
         Set<Long> set3 = new HashSet<Long>();
         set3.add((long) 2);
         map.put(k3, set3);
         VKmerBytesWritable k4 = new VKmerBytesWritable(3);
-        k4.setByRead(("AAT").getBytes(), 0);
+        k4.setByRead(3, ("AAT").getBytes(), 0);
         Set<Long> set4 = new HashSet<Long>();
         set4.add((long) 1);
         map.put(k4, set4);