finish position test
diff --git a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/data/KmerUtil.java b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/data/KmerUtil.java
index 5dc04e0..a030f0b 100644
--- a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/data/KmerUtil.java
+++ b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/data/KmerUtil.java
@@ -36,7 +36,7 @@
     public static String recoverKmerFrom(int k, byte[] keyData, int keyStart, int keyLength) {
         StringBuilder strKmer = new StringBuilder();
         int byteId = keyStart + keyLength - 1;
-        if (byteId < 0) {
+        if (byteId < 0 || k < 1) {
             return empty;
         }
         byte currentbyte = keyData[byteId];
diff --git a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/KmerBytesWritable.java b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/KmerBytesWritable.java
index bbe4419..8f9094f 100644
--- a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/KmerBytesWritable.java
+++ b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/KmerBytesWritable.java
@@ -43,7 +43,6 @@
     protected int offset;
     protected int kmerlength;
 
-    @Deprecated
     public KmerBytesWritable() {
         this(0, EMPTY_BYTES, 0);
     }
diff --git a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/NodeWritable.java b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/NodeWritable.java
index a12c654..332b23b 100644
--- a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/NodeWritable.java
+++ b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/NodeWritable.java
@@ -13,7 +13,6 @@
     private PositionListWritable outgoingList;
     private KmerBytesWritable kmer;
     
-    @SuppressWarnings("deprecation")
     public NodeWritable(){
         nodeID = new PositionWritable();
         countOfKmer = 0;
@@ -123,8 +122,8 @@
     public String toString(){
         StringBuilder sbuilder = new StringBuilder();
         sbuilder.append('(');
-        sbuilder.append(nodeID.toString());
-        sbuilder.append(',').append(countOfKmer).append(',');
+        sbuilder.append(nodeID.toString()).append(',');
+        sbuilder.append(countOfKmer).append(',');
         sbuilder.append(incomingList.toString()).append(',');
         sbuilder.append(incomingList.toString()).append(',');
         sbuilder.append(kmer.toString()).append(')');
diff --git a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/PositionListWritable.java b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/PositionListWritable.java
index 458ae43..a3b5c84 100644
--- a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/PositionListWritable.java
+++ b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/PositionListWritable.java
@@ -75,7 +75,7 @@
 
             @Override
             public PositionWritable next() {
-                return getPosition(currentIndex);
+                return getPosition(currentIndex++);
             }
 
             @Override
@@ -153,7 +153,7 @@
             sbuilder.append(pos.toString());
             sbuilder.append(',');
         }
-        sbuilder.replace(getLength()-1, getLength(), "]");
+        sbuilder.setCharAt(sbuilder.length()-1, ']');
         return sbuilder.toString();
     }
 }
diff --git a/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/example/kmer/KmerBytesWritableFactoryTest.java b/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/KmerBytesWritableFactoryTest.java
similarity index 99%
rename from genomix/genomix-data/src/test/java/edu/uci/ics/genomix/example/kmer/KmerBytesWritableFactoryTest.java
rename to genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/KmerBytesWritableFactoryTest.java
index 54d5926..1eb58c8 100644
--- a/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/example/kmer/KmerBytesWritableFactoryTest.java
+++ b/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/KmerBytesWritableFactoryTest.java
@@ -13,7 +13,7 @@
  * limitations under the License.
  */
 
-package edu.uci.ics.genomix.example.kmer;
+package edu.uci.ics.genomix.data.test;
 
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/example/kmer/KmerBytesWritableTest.java b/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/KmerBytesWritableTest.java
similarity index 98%
rename from genomix/genomix-data/src/test/java/edu/uci/ics/genomix/example/kmer/KmerBytesWritableTest.java
rename to genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/KmerBytesWritableTest.java
index a5a4430..b7dd8f1 100644
--- a/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/example/kmer/KmerBytesWritableTest.java
+++ b/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/KmerBytesWritableTest.java
@@ -13,7 +13,7 @@
  * limitations under the License.
  */
 
-package edu.uci.ics.genomix.example.kmer;
+package edu.uci.ics.genomix.data.test;
 
 import junit.framework.Assert;
 
diff --git a/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/PositionListWritableTest.java b/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/PositionListWritableTest.java
new file mode 100644
index 0000000..19f2f39
--- /dev/null
+++ b/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/PositionListWritableTest.java
@@ -0,0 +1,39 @@
+package edu.uci.ics.genomix.data.test;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+
+import edu.uci.ics.genomix.type.PositionListWritable;
+import edu.uci.ics.genomix.type.PositionWritable;
+
+public class PositionListWritableTest {
+
+    @Test
+    public void TestInitial() {
+        PositionListWritable plist = new PositionListWritable();
+        Assert.assertEquals(plist.getCountOfPosition(), 0);
+
+        for (int i = 0; i < 200; i++) {
+            plist.append(i, (byte) i);
+            Assert.assertEquals(i, plist.getPosition(i).getReadID());
+            Assert.assertEquals((byte) i, plist.getPosition(i).getPosInRead());
+            Assert.assertEquals(i + 1, plist.getCountOfPosition());
+        }
+        int i = 0;
+        for (PositionWritable pos : plist) {
+            Assert.assertEquals(i, pos.getReadID());
+            Assert.assertEquals((byte) i, pos.getPosInRead());
+            i++;
+        }
+        
+        byte [] another = new byte [plist.getLength()*2];
+        int start = 20;
+        System.arraycopy(plist.getByteArray(), 0, another, start, plist.getLength());
+        PositionListWritable plist2 = new PositionListWritable(plist.getCountOfPosition(),another,start);
+        for( i = 0; i < plist2.getCountOfPosition(); i++){
+            Assert.assertEquals(plist.getPosition(i), plist2.getPosition(i));
+        }
+    }
+    
+}
diff --git a/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/PositionWritableTest.java b/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/PositionWritableTest.java
new file mode 100644
index 0000000..13c6c0d
--- /dev/null
+++ b/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/PositionWritableTest.java
@@ -0,0 +1,35 @@
+package edu.uci.ics.genomix.data.test;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+
+import edu.uci.ics.genomix.data.Marshal;
+import edu.uci.ics.genomix.type.PositionWritable;
+
+public class PositionWritableTest {
+
+    @Test
+    public void TestInitial() {
+        PositionWritable pos = new PositionWritable();
+        pos = new PositionWritable(3, (byte) 1);
+        Assert.assertEquals(pos.getReadID(), 3);
+        Assert.assertEquals(pos.getPosInRead(), 1);
+
+        byte[] start = new byte[256];
+        for (int i = 0; i < 128; i++) {
+            Marshal.putInt(i, start, i);
+            start[i + PositionWritable.INTBYTES] = (byte) (i / 2);
+            pos = new PositionWritable(start, i);
+            Assert.assertEquals(pos.getReadID(), i);
+            Assert.assertEquals(pos.getPosInRead(), (byte) (i / 2));
+            pos.set(-i, (byte) (i / 4));
+            Assert.assertEquals(pos.getReadID(), -i);
+            Assert.assertEquals(pos.getPosInRead(), (byte) (i / 4));
+            pos.setNewReference(start, i);
+            Assert.assertEquals(pos.getReadID(), -i);
+            Assert.assertEquals(pos.getPosInRead(), (byte) (i / 4));
+
+        }
+    }
+}
diff --git a/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/dataflow/io/NodeTextWriterFactory.java b/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/dataflow/io/NodeTextWriterFactory.java
index 2dfd334..5b549b5 100644
--- a/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/dataflow/io/NodeTextWriterFactory.java
+++ b/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/dataflow/io/NodeTextWriterFactory.java
@@ -4,7 +4,6 @@
 import java.io.IOException;
 
 import edu.uci.ics.genomix.data.Marshal;
-import edu.uci.ics.genomix.type.KmerBytesWritable;
 import edu.uci.ics.genomix.type.NodeWritable;
 import edu.uci.ics.genomix.type.PositionWritable;
 import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;