add remove in PositionListWritable and test
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 eca4a28..db9f4aa 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
@@ -118,6 +118,16 @@
 
             @Override
             public void remove() {
+//                for(int cursor = currentIndex; cursor < valueCount; cursor++){
+//                    System.arraycopy(storage, offset + cursor * PositionWritable.LENGTH, 
+//                            storage, offset + (cursor-1) * PositionWritable.LENGTH, PositionWritable.LENGTH);
+//                }
+                if(currentIndex < valueCount - 1)
+                    System.arraycopy(storage, offset + currentIndex * PositionWritable.LENGTH, 
+                          storage, offset + (currentIndex - 1) * PositionWritable.LENGTH, 
+                          (valueCount - currentIndex) * PositionWritable.LENGTH);
+                valueCount--;
+                currentIndex--;
             }
         };
         return it;
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
index 19f2f39..881af61 100644
--- 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
@@ -1,5 +1,7 @@
 package edu.uci.ics.genomix.data.test;
 
+import java.util.Iterator;
+
 import junit.framework.Assert;
 
 import org.junit.Test;
@@ -36,4 +38,53 @@
         }
     }
     
+    @Test
+    public void TestRemove() {
+        PositionListWritable plist = new PositionListWritable();
+        Assert.assertEquals(plist.getCountOfPosition(), 0);
+        
+        for (int i = 0; i < 5; 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++;
+        }
+        
+        i = 0;
+        PositionWritable pos = new PositionWritable();
+        Iterator<PositionWritable> iterator = plist.iterator();
+        
+        PositionWritable deletePos = new PositionWritable();
+        deletePos.set(2, (byte)2);
+        while(iterator.hasNext()){
+            pos = iterator.next();
+            if(pos.equals(deletePos)){
+                iterator.remove();
+                break;
+            }
+        }
+        Assert.assertEquals(4, plist.getCountOfPosition());
+        
+        while(iterator.hasNext()){
+            pos = iterator.next();
+            Assert.assertTrue(pos.getReadID() != deletePos.getReadID());
+            Assert.assertTrue(pos.getPosInRead() != deletePos.getPosInRead());
+            i++;
+        }
+        
+        i = 0;
+        iterator = plist.iterator();
+        while(iterator.hasNext()){
+            pos = iterator.next();
+            iterator.remove();
+        }
+        
+        Assert.assertEquals(0, plist.getCountOfPosition());
+    }
 }