begin new graph building
diff --git a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/data/Marshal.java b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/data/Marshal.java
index 4ce14cc..36c80c1 100644
--- a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/data/Marshal.java
+++ b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/data/Marshal.java
@@ -14,6 +14,8 @@
  */
 package edu.uci.ics.genomix.data;
 
+import java.nio.ByteBuffer;
+
 public class Marshal {
     public static int getInt(byte[] bytes, int offset) {
         return ((bytes[offset] & 0xff) << 24) + ((bytes[offset + 1] & 0xff) << 16) + ((bytes[offset + 2] & 0xff) << 8)
@@ -21,9 +23,16 @@
     }
     
     public static long getLong(byte[] bytes, int offset) {
-        return ((bytes[offset] & 0xff) << 54) + ((bytes[offset] & 0xff) << 48) + ((bytes[offset + 1] & 0xff) << 40) 
-                + ((bytes[offset + 2] & 0xff) << 32) + ((bytes[offset] & 0xff) << 24) + ((bytes[offset + 1] & 0xff) << 16) 
-                + ((bytes[offset + 2] & 0xff) << 8) + ((bytes[offset + 3] & 0xff) << 0);
+        
+        long value = 0;
+        for (int i = offset; i < bytes.length && i < offset + 8; i++)
+        {
+           value = (value << 8) + (bytes[i] & 0xff);
+        }
+        return value;
+//        return ((bytes[offset] & 0xff) << 56) + ((bytes[offset + 1] & 0xff) << 48) + ((bytes[offset + 2] & 0xff) << 40) 
+//                + ((bytes[offset + 3] & 0xff) << 32) + ((bytes[offset + 4] & 0xff) << 24) + ((bytes[offset + 5] & 0xff) << 16) 
+//                + ((bytes[offset + 6] & 0xff) << 8) + ((bytes[offset + 7] & 0xff) << 0);
     }
     
     public static void putInt(int val, byte[] bytes, int offset) {
@@ -34,14 +43,17 @@
     }
     
     public static void putLong(long val, byte[] bytes, int offset) {
-        bytes[offset] = (byte)((val >>> 54) & 0xFF);        
-        bytes[offset + 1] = (byte)((val >>> 48) & 0xFF);
-        bytes[offset + 2] = (byte)((val >>>  40) & 0xFF);
-        bytes[offset + 3] = (byte)((val >>>  32) & 0xFF);
-        bytes[offset + 4] = (byte)((val >>>  24) & 0xFF);
-        bytes[offset + 5] = (byte)((val >>>  16) & 0xFF);
-        bytes[offset + 6] = (byte)((val >>>  8) & 0xFF);
-        bytes[offset + 7] = (byte)((val >>>  0) & 0xFF);
+        ByteBuffer byteBuffer = ByteBuffer.allocate(8); 
+        //byte[] tmp = byteBuffer.putLong(val).array();
+        System.arraycopy(byteBuffer.putLong(val).array(), 0, bytes, offset, 8);
+//        bytes[offset] = (byte)((val >>> 56) & 0xFF);        
+//        bytes[offset + 1] = (byte)((val >>> 48) & 0xFF);
+//        bytes[offset + 2] = (byte)((val >>> 40) & 0xFF);
+//        bytes[offset + 3] = (byte)((val >>> 32) & 0xFF);
+//        bytes[offset + 4] = (byte)((val >>> 24) & 0xFF);
+//        bytes[offset + 5] = (byte)((val >>> 16) & 0xFF);
+//        bytes[offset + 6] = (byte)((val >>> 8) & 0xFF);
+//        bytes[offset + 7] = (byte)((val >>> 0) & 0xFF);
     }
     
     public static int hashBytes(byte[] bytes, int offset, int length) {
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 5f72906..1f5bd87 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
@@ -49,7 +49,10 @@
     }
     
     public void append(PositionWritable pos) {
-        append(pos.getUUID());
+        if(pos != null)
+            append(pos.getUUID());
+        else
+            throw new RuntimeException("This position is null pointer!");
     }
     
     /*
diff --git a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/PositionWritable.java b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/PositionWritable.java
index 7cf9bfc..0c33524 100644
--- a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/PositionWritable.java
+++ b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/PositionWritable.java
@@ -26,6 +26,10 @@
         set(uuid);
     }
     
+    public PositionWritable(byte[] storage, int offset) {
+        setNewReference(storage, offset);
+    }
+    
     public void set(long uuid){
         Marshal.putLong(uuid, storage, offset);
     }
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
index cad6ccb..f616fe9 100644
--- 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
@@ -1,35 +1,37 @@
 package edu.uci.ics.genomix.data.test;
 
+import java.util.Random;
+
 import junit.framework.Assert;
 
 import org.junit.Test;
 
 import edu.uci.ics.genomix.data.Marshal;
-import edu.uci.ics.genomix.oldtype.PositionWritable;
+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);
-
+        Random r = new Random();
+        long uuid = -1; //r.nextLong();
+        pos = new PositionWritable(uuid);
+        Assert.assertEquals(pos.getUUID(), uuid);
+        
         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));
-
-        }
+        Marshal.putLong(uuid, start, 0);
+        PositionWritable pos1 = new PositionWritable(start, 0);
+        Assert.assertEquals(pos1.getUUID(), uuid);
+//       
+//        for (int i = 0; i < 128; i++) {
+//            Marshal.putLong((long)i, start, i);
+//            pos = new PositionWritable(start, i);
+//            Assert.assertEquals(pos.getUUID(), (long)i);
+//            pos.set((long)-i);
+//            Assert.assertEquals(pos.getUUID(), (long)-i);
+//            pos.setNewReference(start, i);
+//            Assert.assertEquals(pos.getUUID(), (long)-i);
+//        }
     }
 }