seperate io folder to io.common and io.message
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/format/GraphCleanInputFormat.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/format/GraphCleanInputFormat.java
index 4f1b474..641d1d8 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/format/GraphCleanInputFormat.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/format/GraphCleanInputFormat.java
@@ -10,8 +10,8 @@
 import edu.uci.ics.pregelix.api.graph.Vertex;
 import edu.uci.ics.pregelix.api.io.VertexReader;
 import edu.uci.ics.pregelix.api.util.BspUtils;
-import edu.uci.ics.genomix.pregelix.io.MessageWritable;
 import edu.uci.ics.genomix.pregelix.io.VertexValueWritable;
+import edu.uci.ics.genomix.pregelix.io.message.MessageWritable;
 import edu.uci.ics.genomix.pregelix.api.io.binary.GraphCleanVertexInputFormat;
 import edu.uci.ics.genomix.pregelix.api.io.binary.GraphCleanVertexInputFormat.BinaryDataCleanVertexReader;
 import edu.uci.ics.genomix.type.VKmerBytesWritable;
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/format/InitialGraphCleanInputFormat.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/format/InitialGraphCleanInputFormat.java
index e120c82..127f167 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/format/InitialGraphCleanInputFormat.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/format/InitialGraphCleanInputFormat.java
@@ -12,9 +12,9 @@
 import edu.uci.ics.pregelix.api.util.BspUtils;
 import edu.uci.ics.genomix.type.NodeWritable;
 import edu.uci.ics.genomix.type.VKmerBytesWritable;
-import edu.uci.ics.genomix.pregelix.io.MessageWritable;
 import edu.uci.ics.genomix.pregelix.io.VertexValueWritable;
 import edu.uci.ics.genomix.pregelix.io.VertexValueWritable.State;
+import edu.uci.ics.genomix.pregelix.io.message.MessageWritable;
 import edu.uci.ics.genomix.pregelix.api.io.binary.InitialGraphCleanVertexInputFormat;
 import edu.uci.ics.genomix.pregelix.api.io.binary.InitialGraphCleanVertexInputFormat.BinaryVertexReader;
 
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/AdjacencyListWritable.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/AdjacencyListWritable.java
deleted file mode 100644
index 0611621..0000000
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/AdjacencyListWritable.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package edu.uci.ics.genomix.pregelix.io;
-
-import java.io.DataInput;
-import java.io.DataOutput;
-import java.io.IOException;
-
-import org.apache.hadoop.io.WritableComparable;
-
-import edu.uci.ics.genomix.type.EdgeListWritable;
-
-public class AdjacencyListWritable implements WritableComparable<AdjacencyListWritable>{
-    private EdgeListWritable forwardList;
-    private EdgeListWritable reverseList;
-    
-    public AdjacencyListWritable(){
-        forwardList = new EdgeListWritable();
-        reverseList = new EdgeListWritable();
-    }
-    
-    public AdjacencyListWritable(int kmerSize){
-        forwardList = new EdgeListWritable();
-        reverseList = new EdgeListWritable();
-    }
-
-    public void set(AdjacencyListWritable adjacencyList){
-        forwardList.setAsCopy(adjacencyList.getForwardList());
-        reverseList.setAsCopy(adjacencyList.getReverseList());
-    }
-    
-    public void reset(){
-        forwardList.reset();
-        reverseList.reset();
-    }
-    
-    public void reset(int kmerSize){
-        forwardList.reset();
-        reverseList.reset();
-    }
-    
-    public int getCountOfPosition(){
-    	return forwardList.getCountOfPosition() + reverseList.getCountOfPosition();
-    }
-
-    public EdgeListWritable getForwardList() {
-        return forwardList;
-    }
-
-    public void setForwardList(EdgeListWritable forwardList) {
-        this.forwardList.setAsCopy(forwardList);
-    }
-
-    public EdgeListWritable getReverseList() {
-        return reverseList;
-    }
-
-    public void setReverseList(EdgeListWritable reverseList) {
-        this.reverseList.setAsCopy(reverseList);
-    }
-
-    @Override
-    public void readFields(DataInput in) throws IOException {
-        forwardList.readFields(in);
-        reverseList.readFields(in);
-    }
-
-    @Override
-    public void write(DataOutput out) throws IOException {
-        forwardList.write(out);
-        reverseList.write(out);
-    }
-
-    @Override
-    public int compareTo(AdjacencyListWritable o) {
-        return 0;
-    }
-}
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/ArrayListWritable.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/ArrayListWritable.java
deleted file mode 100644
index 0d1b5d7..0000000
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/ArrayListWritable.java
+++ /dev/null
@@ -1,113 +0,0 @@
-package edu.uci.ics.genomix.pregelix.io;
-
-import java.io.DataInput;
-import java.io.DataOutput;
-import java.io.IOException;
-import java.util.ArrayList;
-import org.apache.hadoop.io.Writable;
-
-/**
- * <p>
- * Class that represents an array list in Hadoop's data type system. It extends ArrayList class, 
- * hence supports all services provided by ArrayList.
- * Elements in the list must be homogeneous and must implement Hadoop's Writable interface. 
- * This class, combined with {@link Tuple}, allows the user to
- * define arbitrarily complex data structures.
- * </p>
- * 
- * @see Tuple
- * @param <E>
- *            type of list element
- */
-
-public class ArrayListWritable<E extends Writable> extends ArrayList<E> implements Writable{
-
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * Creates an ArrayListWritable object.
-     */
-    public ArrayListWritable() {
-        super();
-    }
-    
-    /**
-     * Creates an ArrayListWritable object from a regular ArrayList.
-     */
-    public ArrayListWritable(ArrayList<E> array) {
-        super(array);
-    }
-
-    /**
-     * Deserializes the array.
-     * 
-     * @param in
-     *            source for raw byte representation
-     */
-    @SuppressWarnings({ "unchecked", "rawtypes" })
-    public void readFields(DataInput in) throws IOException {
-
-        this.clear();
-
-        int numFields = in.readInt();
-        if(numFields==0) return;
-        String className = in.readUTF();
-        E obj;
-        try {
-            Class c = Class.forName(className);
-            for (int i = 0; i < numFields; i++) {
-                obj = (E) c.newInstance();
-                obj.readFields(in);
-                this.add(obj);
-            }
-
-        } catch (ClassNotFoundException e) {
-            e.printStackTrace();
-        } catch (IllegalAccessException e) {
-            e.printStackTrace();
-        } catch (InstantiationException e) {
-            e.printStackTrace();
-        }
-    }
-    
-    /**
-     * Serializes this array.
-     * 
-     * @param out
-     *            where to write the raw byte representation
-     */
-    public void write(DataOutput out) throws IOException {
-        out.writeInt(this.size());
-        if(size()==0) return;
-        E obj=get(0);
-        
-        out.writeUTF(obj.getClass().getCanonicalName());
-
-        for (int i = 0; i < size(); i++) {
-            obj = get(i);
-            if (obj == null) {
-                throw new IOException("Cannot serialize null fields!");
-            }
-            obj.write(out);
-        }
-    }
-
-    /**
-     * Generates human-readable String representation of this ArrayList.
-     * 
-     * @return human-readable String representation of this ArrayList
-     */
-    public String toString() {
-        StringBuffer sb = new StringBuffer();
-        sb.append("[");
-        for (int i = 0; i < this.size(); i++) {
-            if (i != 0)
-                sb.append(", ");
-            sb.append(this.get(i));
-        }
-        sb.append("]");
-
-        return sb.toString();
-    }
-    
-}
\ No newline at end of file
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/BFSTraverseMessageWritable.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/BFSTraverseMessageWritable.java
deleted file mode 100644
index ba8ecbd..0000000
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/BFSTraverseMessageWritable.java
+++ /dev/null
@@ -1,124 +0,0 @@
-package edu.uci.ics.genomix.pregelix.io;
-
-import java.io.DataInput;
-import java.io.DataOutput;
-import java.io.IOException;
-
-import edu.uci.ics.genomix.pregelix.type.EdgeDirs;
-import edu.uci.ics.genomix.type.VKmerBytesWritable;
-import edu.uci.ics.genomix.type.VKmerListWritable;
-
-public class BFSTraverseMessageWritable extends MessageWritable{
-    
-    private VKmerListWritable pathList; //use for BFSTravese
-    private ArrayListWritable<EdgeDirs> edgeDirsList;
-    private VKmerBytesWritable seekedVertexId; //use for BFSTravese
-    private long readId; //use for BFSTravese
-    private boolean srcFlip; //use for BFSTravese
-    private boolean destFlip; //use for BFSTravese
-    private boolean isTraverseMsg; //otherwise, it is final message for this path for adding readId to all path nodes 
-    
-    public BFSTraverseMessageWritable(){
-        super();
-        pathList = new VKmerListWritable();
-        edgeDirsList = new ArrayListWritable<EdgeDirs>();
-        seekedVertexId = new VKmerBytesWritable();
-        readId = 0;
-        srcFlip = false;
-        destFlip = false;
-        isTraverseMsg = true;
-    }
-    
-    public void reset(){
-        super.reset();
-        pathList.reset();
-        edgeDirsList.clear();
-        seekedVertexId.reset(0);
-        readId = 0;
-        srcFlip = false;
-        destFlip = false;
-        isTraverseMsg = true;
-    }
-    
-    public VKmerListWritable getPathList() {
-        return pathList;
-    }
-
-    public void setPathList(VKmerListWritable pathList) {
-        this.pathList = pathList;
-    }
-    
-    public ArrayListWritable<EdgeDirs> getEdgeDirsList() {
-        return edgeDirsList;
-    }
-
-    public void setEdgeDirsList(ArrayListWritable<EdgeDirs> edgeDirsList) {
-        this.edgeDirsList.clear();
-        this.edgeDirsList.addAll(edgeDirsList);
-    }
-
-    public VKmerBytesWritable getSeekedVertexId() {
-        return seekedVertexId;
-    }
-
-    public void setSeekedVertexId(VKmerBytesWritable seekedVertexId) {
-        this.seekedVertexId = seekedVertexId;
-    }
-    
-    public long getReadId() {
-        return readId;
-    }
-
-    public void setReadId(long readId) {
-        this.readId = readId;
-    }
-
-    public boolean isSrcFlip() {
-        return srcFlip;
-    }
-
-    public void setSrcFlip(boolean srcFlip) {
-        this.srcFlip = srcFlip;
-    }
-
-    public boolean isDestFlip() {
-        return destFlip;
-    }
-
-    public void setDestFlip(boolean destFlip) {
-        this.destFlip = destFlip;
-    }
-    
-    public boolean isTraverseMsg() {
-        return isTraverseMsg;
-    }
-
-    public void setTraverseMsg(boolean isTraverseMsg) {
-        this.isTraverseMsg = isTraverseMsg;
-    }
-    
-    @Override
-    public void readFields(DataInput in) throws IOException {
-        reset();
-        super.readFields(in);
-        pathList.readFields(in);
-        edgeDirsList.readFields(in);
-        seekedVertexId.readFields(in);
-        readId = in.readLong();
-        srcFlip = in.readBoolean();
-        destFlip = in.readBoolean();
-        isTraverseMsg = in.readBoolean();
-    }
-    
-    @Override
-    public void write(DataOutput out) throws IOException {
-        super.write(out);
-        pathList.write(out);
-        edgeDirsList.write(out);
-        seekedVertexId.write(out);
-        out.writeLong(readId);
-        out.writeBoolean(srcFlip);
-        out.writeBoolean(destFlip);
-        out.writeBoolean(isTraverseMsg);
-    }
-}
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/BubbleMergeMessageWritable.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/BubbleMergeMessageWritable.java
deleted file mode 100644
index 8be703d..0000000
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/BubbleMergeMessageWritable.java
+++ /dev/null
@@ -1,187 +0,0 @@
-package edu.uci.ics.genomix.pregelix.io;
-
-import java.io.DataInput;
-import java.io.DataOutput;
-import java.io.IOException;
-import java.util.Comparator;
-
-import edu.uci.ics.genomix.pregelix.type.MessageFlag;
-import edu.uci.ics.genomix.type.NodeWritable;
-import edu.uci.ics.genomix.type.VKmerBytesWritable;
-
-public class BubbleMergeMessageWritable extends MessageWritable{
-
-    public static class DirToMajor{
-        public static final byte FORWARD = 0;
-        public static final byte REVERSE = 1;
-    }
-    
-    private VKmerBytesWritable majorVertexId; //use for MergeBubble
-    private VKmerBytesWritable minorVertexId;
-    private NodeWritable node; //except kmer, other field should be updated when MergeBubble
-    private byte meToMajorDir;
-    private byte meToMinorDir;
-    private VKmerBytesWritable topCoverageVertexId;
-    private boolean isFlip;
-    
-    public BubbleMergeMessageWritable(){
-        super();
-        majorVertexId = new VKmerBytesWritable();
-        minorVertexId = new VKmerBytesWritable();
-        node = new NodeWritable();
-        meToMajorDir = 0;
-        meToMinorDir = 0;
-        topCoverageVertexId = new VKmerBytesWritable();
-        isFlip = false;
-    }
-    
-    public BubbleMergeMessageWritable(BubbleMergeMessageWritable msg){
-        set(msg);
-    }
-    
-    public void set(BubbleMergeMessageWritable msg){
-        this.setSourceVertexId(msg.getSourceVertexId());
-        this.setFlag(msg.getFlag());
-        this.setMajorVertexId(msg.getMajorVertexId());
-        this.setMinorVertexId(msg.getMinorVertexId());
-        this.setNode(msg.node);
-        this.setMeToMajorDir(msg.meToMajorDir);
-        this.setMeToMinorDir(msg.meToMinorDir);
-        this.setTopCoverageVertexId(msg.topCoverageVertexId);
-        this.setFlip(msg.isFlip());
-    }
-    
-    public void reset(){
-        super.reset();
-        majorVertexId.reset(0);
-        minorVertexId.reset(0);
-        node.reset();
-        meToMajorDir = 0;
-        meToMinorDir = 0;
-        topCoverageVertexId.reset(0);
-        isFlip = false;
-    }
-    
-    public byte getRelativeDirToMajor(){
-        switch(meToMajorDir){
-            case MessageFlag.DIR_FF:
-            case MessageFlag.DIR_RR:
-                return DirToMajor.FORWARD;
-            case MessageFlag.DIR_FR:
-            case MessageFlag.DIR_RF:
-                return DirToMajor.REVERSE;
-        }
-        return 0;
-    }
-    
-    public VKmerBytesWritable getMajorVertexId() {
-        return majorVertexId;
-    }
-
-    public void setMajorVertexId(VKmerBytesWritable majorVertexId) {
-        if(this.majorVertexId == null)
-            this.majorVertexId = new VKmerBytesWritable();
-        this.majorVertexId.setAsCopy(majorVertexId);
-    }
-    
-    
-    public VKmerBytesWritable getMinorVertexId() {
-        return minorVertexId;
-    }
-
-    public void setMinorVertexId(VKmerBytesWritable minorVertexId) {
-        if(this.minorVertexId == null)
-            this.minorVertexId = new VKmerBytesWritable();
-        this.minorVertexId.setAsCopy(minorVertexId);
-    }
-
-    public VKmerBytesWritable getTopCoverageVertexId() {
-        return topCoverageVertexId;
-    }
-
-    public void setTopCoverageVertexId(VKmerBytesWritable topCoverageVertexId) {
-        if(this.topCoverageVertexId == null)
-            this.topCoverageVertexId = new VKmerBytesWritable();
-        this.topCoverageVertexId.setAsCopy(topCoverageVertexId);
-    }
-    
-    public NodeWritable getNode() {
-        return node;
-    }
-
-    public void setNode(NodeWritable node) {
-        if(this.node == null)
-            this.node = new NodeWritable();
-        this.node.setAsCopy(node);
-    }
-    
-    public byte getMeToMajorDir() {
-        return meToMajorDir;
-    }
-
-    public void setMeToMajorDir(byte meToMajorDir) {
-        this.meToMajorDir = meToMajorDir;
-    }
-
-    public byte getMeToMinorDir() {
-        return meToMinorDir;
-    }
-
-    public void setMeToMinorDir(byte meToMinorDir) {
-        this.meToMinorDir = meToMinorDir;
-    }
-    
-    public boolean isFlip() {
-        return isFlip;
-    }
-
-    public void setFlip(boolean isFlip) {
-        this.isFlip = isFlip;
-    }
-    
-    @Override
-    public void readFields(DataInput in) throws IOException {
-        reset();
-        super.readFields(in);
-        majorVertexId.readFields(in);
-        minorVertexId.readFields(in);
-        node.readFields(in);
-        meToMajorDir = in.readByte();
-        meToMinorDir = in.readByte();
-        topCoverageVertexId.readFields(in);
-        isFlip = in.readBoolean();
-    }
-    
-    @Override
-    public void write(DataOutput out) throws IOException {
-        super.write(out);
-        majorVertexId.write(out);
-        minorVertexId.write(out);
-        node.write(out);
-        out.writeByte(meToMajorDir);
-        out.write(meToMinorDir);
-        topCoverageVertexId.write(out);
-        out.writeBoolean(isFlip);
-    }
-    
-    public static class SortByCoverage implements Comparator<BubbleMergeMessageWritable> {
-        @Override
-        public int compare(BubbleMergeMessageWritable left, BubbleMergeMessageWritable right) {
-            return -Float.compare(left.node.getAverageCoverage(), right.node.getAverageCoverage());
-        }
-    }
-    
-    public boolean isFlip(BubbleMergeMessageWritable other){
-        return this.getRelativeDirToMajor() != other.getRelativeDirToMajor();
-    }
-    
-    public float computeDissimilar(BubbleMergeMessageWritable other){
-        if(isFlip(other)){
-            String reverse = other.getNode().getInternalKmer().toString();
-            VKmerBytesWritable reverseKmer = new VKmerBytesWritable();
-            reverseKmer.setByReadReverse(reverse.length(), reverse.getBytes(), 0);
-            return this.getNode().getInternalKmer().fracDissimilar(reverseKmer);
-        } else
-            return this.getNode().getInternalKmer().fracDissimilar(other.getNode().getInternalKmer());
-    }
-}
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/ByteWritable.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/ByteWritable.java
deleted file mode 100644
index bc5cc74..0000000
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/ByteWritable.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright 2009-2013 by The Regents of the University of California
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * you may obtain a copy of the License from
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package edu.uci.ics.genomix.pregelix.io;
-
-import edu.uci.ics.pregelix.api.io.WritableSizable;
-
-/**
- * Writable for Byte values.
- */
-public class ByteWritable extends org.apache.hadoop.io.ByteWritable implements WritableSizable {
-
-    public ByteWritable(byte value) {
-        super(value);
-    }
-
-    public ByteWritable() {
-        super();
-    }
-
-    public int sizeInBytes() {
-        return 1;
-    }
-}
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/HashMapWritable.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/HashMapWritable.java
deleted file mode 100644
index c4556c7..0000000
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/HashMapWritable.java
+++ /dev/null
@@ -1,102 +0,0 @@
-package edu.uci.ics.genomix.pregelix.io;

-

-import java.io.DataInput;

-import java.io.DataOutput;

-import java.io.IOException;

-import java.util.Map;

-import java.util.Set;

-import java.util.HashMap;

-

-import org.apache.hadoop.io.Writable;

-@SuppressWarnings("unchecked") 

-public class HashMapWritable<K extends Writable, V extends Writable> extends HashMap<K, V> implements

-        Writable {

-

-	/**

-     * 

-     */

-    private static final long serialVersionUID = 1L;

-

-    /**

-	 * Creates a HashMapWritable object.

-	 */

-	public HashMapWritable() {

-		super();

-	}

-	

-	/**

-	 * Creates a HashMapWritable object from a regular HashMap.

-	 */

-	public HashMapWritable(HashMap<K, V> map) {

-		super(map);

-	}

-

-	/**

-	 * Deserializes the array.

-	 * 

-	 * @param in

-	 *            source for raw byte representation

-	 */

-

-	@SuppressWarnings("rawtypes")

-    public void readFields(DataInput in) throws IOException {

-		

-		this.clear();

-

-		int numEntries = in.readInt();

-		if(numEntries==0) return;

-		

-		String keyClassName = in.readUTF();

-		String valueClassName = in.readUTF();

-		

-		K objK;

-		V objV;

-		try {

-			Class keyClass = Class.forName(keyClassName);

-			Class valueClass = Class.forName(valueClassName);

-			for (int i = 0; i < numEntries; i++) {

-				objK = (K) keyClass.newInstance();

-				objK.readFields(in);

-				objV = (V) valueClass.newInstance();

-				objV.readFields(in);

-				put(objK, objV);

-			}

-

-		} catch (ClassNotFoundException e) {

-			e.printStackTrace();

-		} catch (IllegalAccessException e) {

-			e.printStackTrace();

-		} catch (InstantiationException e) {

-			e.printStackTrace();

-		}

-		

-	}

-

-	/**

-	 * Serializes this array.

-	 * 

-	 * @param out

-	 *            where to write the raw byte representation

-	 */

-	public void write(DataOutput out) throws IOException {

-		// Write out the number of entries in the map

-	    out.writeInt(size());

-	    if(size()==0) return;

-	    

-	    // Write out the class names for keys and values

-	    // assuming that data is homogeneuos (i.e., all entries have same types)

-	    Set<Map.Entry<K, V>> entries = entrySet();

-	    Map.Entry<K, V> first = entries.iterator().next();

-	    K objK = first.getKey();

-	    V objV = first.getValue();

-	    out.writeUTF(objK.getClass().getCanonicalName());

-	    out.writeUTF(objV.getClass().getCanonicalName());

-

-	    // Then write out each key/value pair

-	    for (Map.Entry<K, V> e: entrySet()) {

-	      e.getKey().write(out);

-	      e.getValue().write(out);

-	    }

-	}

-

-}

diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/KmerListAndFlagListWritable.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/KmerListAndFlagListWritable.java
index 0bc30f3..c9222a4 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/KmerListAndFlagListWritable.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/KmerListAndFlagListWritable.java
@@ -7,6 +7,7 @@
 import org.apache.hadoop.io.BooleanWritable;
 import org.apache.hadoop.io.Writable;
 
+import edu.uci.ics.genomix.pregelix.io.common.ArrayListWritable;
 import edu.uci.ics.genomix.type.VKmerListWritable;
 
 public class KmerListAndFlagListWritable implements Writable{
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/LinkedListWritable.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/LinkedListWritable.java
deleted file mode 100644
index 13a5f39..0000000
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/LinkedListWritable.java
+++ /dev/null
@@ -1,114 +0,0 @@
-package edu.uci.ics.genomix.pregelix.io;
-
-import java.io.DataInput;
-import java.io.DataOutput;
-import java.io.IOException;
-import java.util.LinkedList;
-
-import org.apache.hadoop.io.Writable;
-
-/**
- * <p>
- * Class that represents an array list in Hadoop's data type system. It extends ArrayList class, 
- * hence supports all services provided by ArrayList.
- * Elements in the list must be homogeneous and must implement Hadoop's Writable interface. 
- * This class, combined with {@link Tuple}, allows the user to
- * define arbitrarily complex data structures.
- * </p>
- * 
- * @see Tuple
- * @param <E>
- *            type of list element
- */
-
-public class LinkedListWritable<E extends Writable> extends LinkedList<E> implements Writable{
-
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * Creates an ArrayListWritable object.
-     */
-    public LinkedListWritable() {
-        super();
-    }
-    
-    /**
-     * Creates an ArrayListWritable object from a regular ArrayList.
-     */
-    public LinkedListWritable(LinkedList<E> array) {
-        super(array);
-    }
-
-    /**
-     * Deserializes the array.
-     * 
-     * @param in
-     *            source for raw byte representation
-     */
-    @SuppressWarnings({ "unchecked", "rawtypes" })
-    public void readFields(DataInput in) throws IOException {
-
-        this.clear();
-
-        int numFields = in.readInt();
-        if(numFields==0) return;
-        String className = in.readUTF();
-        E obj;
-        try {
-            Class c = Class.forName(className);
-            for (int i = 0; i < numFields; i++) {
-                obj = (E) c.newInstance();
-                obj.readFields(in);
-                this.add(obj);
-            }
-
-        } catch (ClassNotFoundException e) {
-            e.printStackTrace();
-        } catch (IllegalAccessException e) {
-            e.printStackTrace();
-        } catch (InstantiationException e) {
-            e.printStackTrace();
-        }
-    }
-    
-    /**
-     * Serializes this array.
-     * 
-     * @param out
-     *            where to write the raw byte representation
-     */
-    public void write(DataOutput out) throws IOException {
-        out.writeInt(this.size());
-        if(size()==0) return;
-        E obj=get(0);
-        
-        out.writeUTF(obj.getClass().getCanonicalName());
-
-        for (int i = 0; i < size(); i++) {
-            obj = get(i);
-            if (obj == null) {
-                throw new IOException("Cannot serialize null fields!");
-            }
-            obj.write(out);
-        }
-    }
-
-    /**
-     * Generates human-readable String representation of this ArrayList.
-     * 
-     * @return human-readable String representation of this ArrayList
-     */
-    public String toString() {
-        StringBuffer sb = new StringBuffer();
-        sb.append("[");
-        for (int i = 0; i < this.size(); i++) {
-            if (i != 0)
-                sb.append(", ");
-            sb.append(this.get(i));
-        }
-        sb.append("]");
-
-        return sb.toString();
-    }
-    
-}
\ No newline at end of file
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/MessageWritable.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/MessageWritable.java
deleted file mode 100644
index ab62877..0000000
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/MessageWritable.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package edu.uci.ics.genomix.pregelix.io;
-
-import java.io.DataInput;
-import java.io.DataOutput;
-import java.io.IOException;
-
-import org.apache.hadoop.io.Writable;
-
-import edu.uci.ics.genomix.type.VKmerBytesWritable;
-import edu.uci.ics.pregelix.api.io.WritableSizable;
-
-public class MessageWritable implements Writable, WritableSizable {
-    
-    private VKmerBytesWritable sourceVertexId; // stores srcNode id
-    private byte flag; // stores message type
-    
-    public MessageWritable(){
-        sourceVertexId = new VKmerBytesWritable();
-        flag = 0;
-    }
-    
-    public void reset(){
-        sourceVertexId.reset(0);
-        flag = 0;
-    }
-    
-    @Override
-    public String toString(){
-        StringBuilder sbuilder = new StringBuilder();
-        sbuilder.append('{');
-        sbuilder.append(sourceVertexId.toString());
-        sbuilder.append('}');
-        return sbuilder.toString();
-    }
-    
-    public VKmerBytesWritable getSourceVertexId() {
-        return sourceVertexId;
-    }
-
-    public void setSourceVertexId(VKmerBytesWritable sourceVertexId) {
-        this.sourceVertexId.setAsCopy(sourceVertexId);
-    }
-
-    public byte getFlag() {
-        return flag;
-    }
-
-    public void setFlag(byte flag) {
-        this.flag = flag;
-    }
-
-
-    @Override
-    public void readFields(DataInput in) throws IOException {
-        reset();
-        sourceVertexId.readFields(in);
-        flag = in.readByte();
-    }
-
-    @Override
-    public void write(DataOutput out) throws IOException {
-        sourceVertexId.write(out);
-        out.writeByte(flag);
-    }
-
-    @Override
-    public int sizeInBytes() {
-        // TODO Auto-generated method stub
-        return 0;
-    }
-
-}
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/PathMergeMessageWritable.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/PathMergeMessageWritable.java
deleted file mode 100644
index 77d2bcd..0000000
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/PathMergeMessageWritable.java
+++ /dev/null
@@ -1,122 +0,0 @@
-package edu.uci.ics.genomix.pregelix.io;
-
-import java.io.DataInput;
-import java.io.DataOutput;
-import java.io.IOException;
-
-import edu.uci.ics.genomix.type.EdgeListWritable;
-import edu.uci.ics.genomix.type.EdgeWritable;
-import edu.uci.ics.genomix.type.NodeWritable;
-import edu.uci.ics.genomix.type.PositionListWritable;
-import edu.uci.ics.genomix.type.VKmerBytesWritable;
-import edu.uci.ics.genomix.type.NodeWritable.DirectionFlag;
-
-public class PathMergeMessageWritable extends MessageWritable{
-    
-    private NodeWritable node;
-    private boolean isFlip; // use for path merge
-    private boolean updateMsg; // use for distinguish updateMsg or mergeMsg
-
-    public PathMergeMessageWritable(){
-        super();
-        node = new NodeWritable();
-        isFlip = false;
-        updateMsg = false;
-    }
-    
-    public void reset(){
-        super.reset();
-        node.reset();
-        isFlip = false;
-        updateMsg = false;
-    }   
-    
-    public VKmerBytesWritable getInternalKmer() {
-        return node.getInternalKmer();
-    }
-
-    public void setInternalKmer(VKmerBytesWritable internalKmer) {
-        this.node.setInternalKmer(internalKmer);
-    }
-    
-    public EdgeListWritable getEdgeList(byte dir) {
-        return node.getEdgeList((byte) (dir & DirectionFlag.DIR_MASK));
-    }
-    
-    public EdgeWritable getNeighborEdge(){
-        for(byte d : DirectionFlag.values){
-            if(!getEdgeList(d).isEmpty())
-                return getEdgeList(d).get(0);
-        }
-        return null;
-    }
-
-    public void setEdgeList(byte dir, EdgeListWritable edgeList) {
-        this.node.setEdgeList((byte) (dir & DirectionFlag.DIR_MASK), edgeList);
-    }
-    
-    public PositionListWritable getStartReads() {
-        return this.node.getStartReads();
-    }
-
-    public void setStartReads(PositionListWritable startReads) {
-        this.node.setStartReads(startReads);
-    }
-
-    public PositionListWritable getEndReads() {
-        return this.node.getEndReads();
-    }
-
-    public void setEndReads(PositionListWritable endReads) {
-        this.node.setEndReads(endReads);
-    }
-    
-    public void setAvgCoverage(float coverage) {
-        this.node.setAvgCoverage(coverage);
-    }
-
-    public float getAvgCoverage() {
-        return this.node.getAvgCoverage();
-    }
-
-    public boolean isFlip() {
-        return isFlip;
-    }
-
-    public void setFlip(boolean isFlip) {
-        this.isFlip = isFlip;
-    }
-
-    public boolean isUpdateMsg() {
-        return updateMsg;
-    }
-
-    public void setUpdateMsg(boolean updateMsg) {
-        this.updateMsg = updateMsg;
-    }
-    
-    public NodeWritable getNode() {
-        return node;
-    }
-
-    public void setNode(NodeWritable node) {
-        this.node.setAsCopy(node);
-    }
-
-    @Override
-    public void readFields(DataInput in) throws IOException {
-        reset();
-        super.readFields(in);
-        node.readFields(in);
-        isFlip = in.readBoolean();
-        updateMsg = in.readBoolean();
-    }
-
-    @Override
-    public void write(DataOutput out) throws IOException {
-        super.write(out);
-        node.write(out);
-        out.writeBoolean(isFlip);
-        out.writeBoolean(updateMsg);
-    }
-}
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/SplitRepeatMessageWritable.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/SplitRepeatMessageWritable.java
deleted file mode 100644
index bff2ff1..0000000
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/SplitRepeatMessageWritable.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package edu.uci.ics.genomix.pregelix.io;
-
-import java.io.DataInput;
-import java.io.DataOutput;
-import java.io.IOException;
-
-import edu.uci.ics.genomix.type.EdgeWritable;
-
-public class SplitRepeatMessageWritable extends MessageWritable {
-    
-    private EdgeWritable createdEdge;
-    private EdgeWritable deletedEdge;
-    
-    public SplitRepeatMessageWritable(){
-        super();
-        createdEdge = new EdgeWritable();
-        deletedEdge = new EdgeWritable();
-    }
-    
-    public void reset(){
-        super.reset();
-        createdEdge.reset();
-        deletedEdge.reset();
-    }
-
-    public EdgeWritable getCreatedEdge() {
-        return createdEdge;
-    }
-
-    public void setCreatedEdge(EdgeWritable createdEdge) {
-        this.createdEdge.setAsCopy(createdEdge);
-    }
-    
-    public EdgeWritable getDeletedEdge() {
-        return deletedEdge;
-    }
-
-    public void setDeletedEdge(EdgeWritable deletedEdge) {
-        this.deletedEdge.setAsCopy(deletedEdge);
-    }
-
-    @Override
-    public void readFields(DataInput in) throws IOException {
-        reset();
-        super.readFields(in);
-        createdEdge.readFields(in);
-        deletedEdge.readFields(in);
-    }
-    
-    @Override
-    public void write(DataOutput out) throws IOException {
-        super.write(out);
-        createdEdge.write(out);
-        deletedEdge.write(out);
-    }
-}
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/VLongWritable.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/VLongWritable.java
deleted file mode 100644
index 1353915..0000000
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/VLongWritable.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright 2009-2013 by The Regents of the University of California
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * you may obtain a copy of the License from
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package edu.uci.ics.genomix.pregelix.io;
-
-import java.io.DataInput;
-import java.io.DataInputStream;
-
-import org.apache.hadoop.io.WritableComparable;
-import org.apache.hadoop.io.WritableComparator;
-import org.apache.hadoop.io.WritableUtils;
-
-import edu.uci.ics.pregelix.api.io.WritableSizable;
-import edu.uci.ics.pregelix.api.util.ResetableByteArrayInputStream;
-
-/**
- * A WritableComparable for longs in a variable-length format. Such values take
- * between one and nine bytes. Smaller values take fewer bytes.
- * 
- * @see org.apache.hadoop.io.WritableUtils#readVLong(DataInput)
- */
-@SuppressWarnings("rawtypes")
-public class VLongWritable extends org.apache.hadoop.io.VLongWritable implements WritableSizable {
-
-    public VLongWritable() {
-    }
-
-    public VLongWritable(long value) {
-        set(value);
-    }
-
-    public int sizeInBytes() {
-        long i = get();
-        if (i >= -112 && i <= 127) {
-            return 1;
-        }
-
-        int len = -112;
-        if (i < 0) {
-            i ^= -1L; // take one's complement'
-            len = -120;
-        }
-
-        long tmp = i;
-        while (tmp != 0) {
-            tmp = tmp >> 8;
-            len--;
-        }
-
-        len = (len < -120) ? -(len + 120) : -(len + 112);
-        return len + 1;
-    }
-
-    /** A Comparator optimized for LongWritable. */
-    public static class Comparator extends WritableComparator {
-        private ResetableByteArrayInputStream bis = new ResetableByteArrayInputStream();
-        private DataInput dis = new DataInputStream(bis);
-
-        public Comparator() {
-            super(VLongWritable.class);
-        }
-
-        public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2, int l2) {
-            try {
-                bis.setByteArray(b1, s1);
-                long thisValue = WritableUtils.readVLong(dis);
-                bis.setByteArray(b2, s2);
-                long thatValue = WritableUtils.readVLong(dis);
-                return (thisValue < thatValue ? -1 : (thisValue == thatValue ? 0 : 1));
-            } catch (Exception e) {
-                throw new IllegalStateException(e);
-            }
-        }
-    }
-
-    /** A decreasing Comparator optimized for LongWritable. */
-    public static class DecreasingComparator extends Comparator {
-        public int compare(WritableComparable a, WritableComparable b) {
-            return -super.compare(a, b);
-        }
-
-        public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2, int l2) {
-            return -super.compare(b1, s1, l1, b2, s2, l2);
-        }
-    }
-
-    static { // register default comparator
-        WritableComparator.define(VLongWritable.class, new Comparator());
-    }
-
-}
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/VertexValueWritable.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/VertexValueWritable.java
index 735866c..aad47fc 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/VertexValueWritable.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/io/VertexValueWritable.java
@@ -2,6 +2,10 @@
 
 import java.io.*;
 
+import edu.uci.ics.genomix.pregelix.io.common.AdjacencyListWritable;
+import edu.uci.ics.genomix.pregelix.io.common.ByteWritable;
+import edu.uci.ics.genomix.pregelix.io.common.HashMapWritable;
+import edu.uci.ics.genomix.pregelix.io.common.VLongWritable;
 import edu.uci.ics.genomix.pregelix.type.MessageFlag;
 import edu.uci.ics.genomix.type.EdgeListWritable;
 import edu.uci.ics.genomix.type.EdgeWritable;
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/log/LogAlgorithmLogFormatter.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/log/LogAlgorithmLogFormatter.java
index 065e181..ffcd982 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/log/LogAlgorithmLogFormatter.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/log/LogAlgorithmLogFormatter.java
@@ -2,7 +2,7 @@
 
 import java.util.logging.*;
 
-import edu.uci.ics.genomix.pregelix.io.MessageWritable;
+import edu.uci.ics.genomix.pregelix.io.message.MessageWritable;
 import edu.uci.ics.genomix.type.KmerBytesWritable;
 
 public class LogAlgorithmLogFormatter extends Formatter {
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/BasicGraphCleanVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/BasicGraphCleanVertex.java
index 0472ad7..e1dd5eb 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/BasicGraphCleanVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/BasicGraphCleanVertex.java
@@ -14,13 +14,13 @@
 import edu.uci.ics.genomix.pregelix.client.Client;
 import edu.uci.ics.genomix.pregelix.format.GraphCleanInputFormat;
 import edu.uci.ics.genomix.pregelix.format.GraphCleanOutputFormat;
-import edu.uci.ics.genomix.pregelix.io.ByteWritable;
-import edu.uci.ics.genomix.pregelix.io.HashMapWritable;
 import edu.uci.ics.genomix.config.GenomixJobConf;
-import edu.uci.ics.genomix.pregelix.io.MessageWritable;
-import edu.uci.ics.genomix.pregelix.io.VLongWritable;
 import edu.uci.ics.genomix.pregelix.io.VertexValueWritable;
 import edu.uci.ics.genomix.pregelix.io.VertexValueWritable.State;
+import edu.uci.ics.genomix.pregelix.io.common.ByteWritable;
+import edu.uci.ics.genomix.pregelix.io.common.HashMapWritable;
+import edu.uci.ics.genomix.pregelix.io.common.VLongWritable;
+import edu.uci.ics.genomix.pregelix.io.message.MessageWritable;
 import edu.uci.ics.genomix.pregelix.operator.aggregator.StatisticsAggregator;
 import edu.uci.ics.genomix.pregelix.operator.pathmerge.P4ForPathMergeVertex;
 import edu.uci.ics.genomix.pregelix.operator.removelowcoverage.RemoveLowCoverageVertex;
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/aggregator/StatisticsAggregator.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/aggregator/StatisticsAggregator.java
index b006cb1..bd83ab5 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/aggregator/StatisticsAggregator.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/aggregator/StatisticsAggregator.java
@@ -2,11 +2,11 @@
 
 import org.apache.hadoop.io.NullWritable;
 
-import edu.uci.ics.genomix.pregelix.io.ByteWritable;
-import edu.uci.ics.genomix.pregelix.io.HashMapWritable;
-import edu.uci.ics.genomix.pregelix.io.MessageWritable;
-import edu.uci.ics.genomix.pregelix.io.VLongWritable;
 import edu.uci.ics.genomix.pregelix.io.VertexValueWritable;
+import edu.uci.ics.genomix.pregelix.io.common.ByteWritable;
+import edu.uci.ics.genomix.pregelix.io.common.HashMapWritable;
+import edu.uci.ics.genomix.pregelix.io.common.VLongWritable;
+import edu.uci.ics.genomix.pregelix.io.message.MessageWritable;
 import edu.uci.ics.genomix.type.VKmerBytesWritable;
 import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
 import edu.uci.ics.pregelix.api.graph.GlobalAggregator;
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 f46358d..adbc526 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
@@ -15,8 +15,8 @@
 import edu.uci.ics.genomix.pregelix.client.Client;
 import edu.uci.ics.genomix.pregelix.format.GraphCleanInputFormat;
 import edu.uci.ics.genomix.pregelix.format.GraphCleanOutputFormat;
-import edu.uci.ics.genomix.pregelix.io.MessageWritable;
 import edu.uci.ics.genomix.pregelix.io.VertexValueWritable;
+import edu.uci.ics.genomix.pregelix.io.message.MessageWritable;
 import edu.uci.ics.genomix.pregelix.type.MessageFlag;
 
 /**
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/bridgeremove/BridgeRemoveVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/bridgeremove/BridgeRemoveVertex.java
index 869e369..3520914 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/bridgeremove/BridgeRemoveVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/bridgeremove/BridgeRemoveVertex.java
@@ -9,8 +9,8 @@
 import edu.uci.ics.genomix.pregelix.client.Client;
 import edu.uci.ics.genomix.pregelix.format.GraphCleanInputFormat;
 import edu.uci.ics.genomix.pregelix.format.GraphCleanOutputFormat;
-import edu.uci.ics.genomix.pregelix.io.MessageWritable;
 import edu.uci.ics.genomix.pregelix.io.VertexValueWritable;
+import edu.uci.ics.genomix.pregelix.io.message.MessageWritable;
 import edu.uci.ics.genomix.pregelix.operator.BasicGraphCleanVertex;
 import edu.uci.ics.genomix.pregelix.operator.aggregator.StatisticsAggregator;
 import edu.uci.ics.genomix.pregelix.type.StatisticsCounter;
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 b4440d9..e446129 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
@@ -15,8 +15,8 @@
 import edu.uci.ics.genomix.pregelix.client.Client;
 import edu.uci.ics.genomix.pregelix.format.GraphCleanOutputFormat;
 import edu.uci.ics.genomix.pregelix.format.InitialGraphCleanInputFormat;
-import edu.uci.ics.genomix.pregelix.io.MessageWritable;
 import edu.uci.ics.genomix.pregelix.io.VertexValueWritable;
+import edu.uci.ics.genomix.pregelix.io.message.MessageWritable;
 import edu.uci.ics.genomix.pregelix.type.MessageFlag;
 
 /**
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/bubblemerge/BubbleMergeVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/bubblemerge/BubbleMergeVertex.java
index 175e686..42dd1e1 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/bubblemerge/BubbleMergeVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/bubblemerge/BubbleMergeVertex.java
@@ -17,8 +17,8 @@
 import edu.uci.ics.genomix.pregelix.client.Client;
 import edu.uci.ics.genomix.pregelix.format.GraphCleanInputFormat;
 import edu.uci.ics.genomix.pregelix.format.GraphCleanOutputFormat;
-import edu.uci.ics.genomix.pregelix.io.BubbleMergeMessageWritable;
 import edu.uci.ics.genomix.pregelix.io.VertexValueWritable;
+import edu.uci.ics.genomix.pregelix.io.message.BubbleMergeMessageWritable;
 import edu.uci.ics.genomix.pregelix.operator.BasicGraphCleanVertex;
 import edu.uci.ics.genomix.pregelix.operator.aggregator.StatisticsAggregator;
 import edu.uci.ics.genomix.pregelix.type.MessageFlag;
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/BasicPathMergeVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/BasicPathMergeVertex.java
index a978cfd..b74eb43 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/BasicPathMergeVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/BasicPathMergeVertex.java
@@ -2,10 +2,10 @@
 
 import java.io.IOException;
 
-import edu.uci.ics.genomix.pregelix.io.MessageWritable;
-import edu.uci.ics.genomix.pregelix.io.PathMergeMessageWritable;
 import edu.uci.ics.genomix.pregelix.io.VertexValueWritable;
 import edu.uci.ics.genomix.pregelix.io.VertexValueWritable.State;
+import edu.uci.ics.genomix.pregelix.io.message.MessageWritable;
+import edu.uci.ics.genomix.pregelix.io.message.PathMergeMessageWritable;
 import edu.uci.ics.genomix.pregelix.operator.BasicGraphCleanVertex;
 import edu.uci.ics.genomix.pregelix.type.MessageFlag;
 import edu.uci.ics.genomix.type.GeneCode;
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 c949770..5a7bea4 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
@@ -8,9 +8,9 @@
 import edu.uci.ics.genomix.pregelix.client.Client;
 import edu.uci.ics.genomix.pregelix.format.GraphCleanInputFormat;
 import edu.uci.ics.genomix.pregelix.format.GraphCleanOutputFormat;
-import edu.uci.ics.genomix.pregelix.io.PathMergeMessageWritable;
 import edu.uci.ics.genomix.pregelix.io.VertexValueWritable;
 import edu.uci.ics.genomix.pregelix.io.VertexValueWritable.State;
+import edu.uci.ics.genomix.pregelix.io.message.PathMergeMessageWritable;
 import edu.uci.ics.genomix.pregelix.type.MessageFlag;
 import edu.uci.ics.genomix.type.VKmerListWritable;
 import edu.uci.ics.genomix.type.VKmerBytesWritable;
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/P1ForPathMergeVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/P1ForPathMergeVertex.java
index 03e7b63..d23912d 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/P1ForPathMergeVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/P1ForPathMergeVertex.java
@@ -10,9 +10,9 @@
 import edu.uci.ics.genomix.pregelix.client.Client;
 import edu.uci.ics.genomix.pregelix.format.GraphCleanInputFormat;
 import edu.uci.ics.genomix.pregelix.format.GraphCleanOutputFormat;
-import edu.uci.ics.genomix.pregelix.io.PathMergeMessageWritable;
 import edu.uci.ics.genomix.pregelix.io.VertexValueWritable;
 import edu.uci.ics.genomix.pregelix.io.VertexValueWritable.State;
+import edu.uci.ics.genomix.pregelix.io.message.PathMergeMessageWritable;
 import edu.uci.ics.genomix.pregelix.type.MessageFlag;
 import edu.uci.ics.genomix.pregelix.util.VertexUtil;
 
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 8796fc8..d0ef40e 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
@@ -4,9 +4,9 @@
 import java.util.Iterator;
 
 import edu.uci.ics.genomix.pregelix.client.Client;
-import edu.uci.ics.genomix.pregelix.io.PathMergeMessageWritable;
 import edu.uci.ics.genomix.pregelix.io.VertexValueWritable;
 import edu.uci.ics.genomix.pregelix.io.VertexValueWritable.State;
+import edu.uci.ics.genomix.pregelix.io.message.PathMergeMessageWritable;
 import edu.uci.ics.genomix.pregelix.operator.BasicGraphCleanVertex;
 import edu.uci.ics.genomix.pregelix.operator.aggregator.StatisticsAggregator;
 import edu.uci.ics.genomix.pregelix.type.MessageFlag;
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/P4ForPathMergeVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/P4ForPathMergeVertex.java
index 3f5ba86..042f102 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/P4ForPathMergeVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/P4ForPathMergeVertex.java
@@ -9,9 +9,9 @@
 import edu.uci.ics.genomix.pregelix.client.Client;
 import edu.uci.ics.genomix.pregelix.format.GraphCleanInputFormat;
 import edu.uci.ics.genomix.pregelix.format.GraphCleanOutputFormat;
-import edu.uci.ics.genomix.pregelix.io.PathMergeMessageWritable;
 import edu.uci.ics.genomix.pregelix.io.VertexValueWritable;
 import edu.uci.ics.genomix.pregelix.io.VertexValueWritable.State;
+import edu.uci.ics.genomix.pregelix.io.message.PathMergeMessageWritable;
 import edu.uci.ics.genomix.pregelix.operator.BasicGraphCleanVertex;
 import edu.uci.ics.genomix.pregelix.operator.aggregator.StatisticsAggregator;
 import edu.uci.ics.genomix.pregelix.type.MessageFlag;
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/removelowcoverage/RemoveLowCoverageVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/removelowcoverage/RemoveLowCoverageVertex.java
index 3c8addf..b7005f9 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/removelowcoverage/RemoveLowCoverageVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/removelowcoverage/RemoveLowCoverageVertex.java
@@ -10,8 +10,8 @@
 import edu.uci.ics.genomix.pregelix.client.Client;
 import edu.uci.ics.genomix.pregelix.format.GraphCleanInputFormat;
 import edu.uci.ics.genomix.pregelix.format.GraphCleanOutputFormat;
-import edu.uci.ics.genomix.pregelix.io.MessageWritable;
 import edu.uci.ics.genomix.pregelix.io.VertexValueWritable;
+import edu.uci.ics.genomix.pregelix.io.message.MessageWritable;
 import edu.uci.ics.genomix.pregelix.operator.BasicGraphCleanVertex;
 import edu.uci.ics.genomix.pregelix.operator.aggregator.StatisticsAggregator;
 import edu.uci.ics.genomix.pregelix.type.StatisticsCounter;
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/scaffolding/BFSTraverseVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/scaffolding/BFSTraverseVertex.java
index d6dd7f4..4a905ad 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/scaffolding/BFSTraverseVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/scaffolding/BFSTraverseVertex.java
@@ -7,10 +7,10 @@
 import edu.uci.ics.genomix.pregelix.client.Client;
 import edu.uci.ics.genomix.pregelix.format.GraphCleanInputFormat;
 import edu.uci.ics.genomix.pregelix.format.GraphCleanOutputFormat;
-import edu.uci.ics.genomix.pregelix.io.ArrayListWritable;
-import edu.uci.ics.genomix.pregelix.io.BFSTraverseMessageWritable;
-import edu.uci.ics.genomix.pregelix.io.MessageWritable;
 import edu.uci.ics.genomix.pregelix.io.VertexValueWritable;
+import edu.uci.ics.genomix.pregelix.io.common.ArrayListWritable;
+import edu.uci.ics.genomix.pregelix.io.message.BFSTraverseMessageWritable;
+import edu.uci.ics.genomix.pregelix.io.message.MessageWritable;
 import edu.uci.ics.genomix.pregelix.operator.BasicGraphCleanVertex;
 import edu.uci.ics.genomix.pregelix.type.EdgeDirs;
 import edu.uci.ics.genomix.pregelix.type.MessageFlag;
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/scaffolding/ScaffoldingAggregator.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/scaffolding/ScaffoldingAggregator.java
index 5523c46..f29d8be 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/scaffolding/ScaffoldingAggregator.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/scaffolding/ScaffoldingAggregator.java
@@ -2,11 +2,11 @@
 
 import org.apache.hadoop.io.NullWritable;
 
-import edu.uci.ics.genomix.pregelix.io.HashMapWritable;
 import edu.uci.ics.genomix.pregelix.io.KmerListAndFlagListWritable;
-import edu.uci.ics.genomix.pregelix.io.MessageWritable;
-import edu.uci.ics.genomix.pregelix.io.VLongWritable;
 import edu.uci.ics.genomix.pregelix.io.VertexValueWritable;
+import edu.uci.ics.genomix.pregelix.io.common.HashMapWritable;
+import edu.uci.ics.genomix.pregelix.io.common.VLongWritable;
+import edu.uci.ics.genomix.pregelix.io.message.MessageWritable;
 import edu.uci.ics.genomix.pregelix.operator.aggregator.StatisticsAggregator;
 import edu.uci.ics.genomix.type.VKmerBytesWritable;
 import edu.uci.ics.hyracks.api.exceptions.HyracksDataException;
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/scaffolding/ScaffoldingVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/scaffolding/ScaffoldingVertex.java
index 9a87e15..dfe76a9 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/scaffolding/ScaffoldingVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/scaffolding/ScaffoldingVertex.java
@@ -9,13 +9,13 @@
 import edu.uci.ics.genomix.pregelix.client.Client;
 import edu.uci.ics.genomix.pregelix.format.GraphCleanInputFormat;
 import edu.uci.ics.genomix.pregelix.format.GraphCleanOutputFormat;
-import edu.uci.ics.genomix.pregelix.io.ArrayListWritable;
-import edu.uci.ics.genomix.pregelix.io.BFSTraverseMessageWritable;
-import edu.uci.ics.genomix.pregelix.io.HashMapWritable;
 import edu.uci.ics.genomix.pregelix.io.KmerListAndFlagListWritable;
-import edu.uci.ics.genomix.pregelix.io.MessageWritable;
-import edu.uci.ics.genomix.pregelix.io.VLongWritable;
 import edu.uci.ics.genomix.pregelix.io.VertexValueWritable;
+import edu.uci.ics.genomix.pregelix.io.common.ArrayListWritable;
+import edu.uci.ics.genomix.pregelix.io.common.HashMapWritable;
+import edu.uci.ics.genomix.pregelix.io.common.VLongWritable;
+import edu.uci.ics.genomix.pregelix.io.message.BFSTraverseMessageWritable;
+import edu.uci.ics.genomix.pregelix.io.message.MessageWritable;
 import edu.uci.ics.genomix.pregelix.operator.BasicGraphCleanVertex;
 import edu.uci.ics.genomix.pregelix.operator.aggregator.StatisticsAggregator;
 import edu.uci.ics.genomix.pregelix.type.StatisticsCounter;
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 bbe89c7..90aa571 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
@@ -10,9 +10,9 @@
 import edu.uci.ics.genomix.pregelix.client.Client;
 import edu.uci.ics.genomix.pregelix.format.GraphCleanInputFormat;
 import edu.uci.ics.genomix.pregelix.format.GraphCleanOutputFormat;
-import edu.uci.ics.genomix.pregelix.io.SplitRepeatMessageWritable;
 import edu.uci.ics.genomix.config.GenomixJobConf;
 import edu.uci.ics.genomix.pregelix.io.VertexValueWritable;
+import edu.uci.ics.genomix.pregelix.io.message.SplitRepeatMessageWritable;
 import edu.uci.ics.genomix.pregelix.operator.BasicGraphCleanVertex;
 import edu.uci.ics.genomix.pregelix.operator.aggregator.StatisticsAggregator;
 import edu.uci.ics.genomix.pregelix.type.StatisticsCounter;
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 c1e5fc2..8b3ee23 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
@@ -14,8 +14,8 @@
 import edu.uci.ics.genomix.pregelix.client.Client;
 import edu.uci.ics.genomix.pregelix.format.GraphCleanInputFormat;
 import edu.uci.ics.genomix.pregelix.format.GraphCleanOutputFormat;
-import edu.uci.ics.genomix.pregelix.io.MessageWritable;
 import edu.uci.ics.genomix.pregelix.io.VertexValueWritable;
+import edu.uci.ics.genomix.pregelix.io.message.MessageWritable;
 import edu.uci.ics.genomix.pregelix.type.MessageFlag;
 
 /*
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/tipremove/TipRemoveVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/tipremove/TipRemoveVertex.java
index d815146..eebaab1 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/tipremove/TipRemoveVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/tipremove/TipRemoveVertex.java
@@ -8,8 +8,8 @@
 import edu.uci.ics.genomix.pregelix.client.Client;
 import edu.uci.ics.genomix.pregelix.format.GraphCleanInputFormat;
 import edu.uci.ics.genomix.pregelix.format.GraphCleanOutputFormat;
-import edu.uci.ics.genomix.pregelix.io.MessageWritable;
 import edu.uci.ics.genomix.pregelix.io.VertexValueWritable;
+import edu.uci.ics.genomix.pregelix.io.message.MessageWritable;
 import edu.uci.ics.genomix.pregelix.operator.BasicGraphCleanVertex;
 import edu.uci.ics.genomix.pregelix.operator.aggregator.StatisticsAggregator;
 import edu.uci.ics.genomix.pregelix.type.StatisticsCounter;
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/unrolltandemrepeat/UnrollTandemRepeat.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/unrolltandemrepeat/UnrollTandemRepeat.java
index 2aa23da..36a2e54 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/unrolltandemrepeat/UnrollTandemRepeat.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/unrolltandemrepeat/UnrollTandemRepeat.java
@@ -7,8 +7,8 @@
 import edu.uci.ics.genomix.pregelix.client.Client;
 import edu.uci.ics.genomix.pregelix.format.GraphCleanInputFormat;
 import edu.uci.ics.genomix.pregelix.format.GraphCleanOutputFormat;
-import edu.uci.ics.genomix.pregelix.io.MessageWritable;
 import edu.uci.ics.genomix.pregelix.io.VertexValueWritable;
+import edu.uci.ics.genomix.pregelix.io.message.MessageWritable;
 import edu.uci.ics.genomix.pregelix.operator.BasicGraphCleanVertex;
 import edu.uci.ics.genomix.pregelix.operator.aggregator.StatisticsAggregator;
 import edu.uci.ics.genomix.pregelix.type.StatisticsCounter;
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/util/VertexUtil.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/util/VertexUtil.java
index e10fa7a..083b659 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/util/VertexUtil.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/util/VertexUtil.java
@@ -1,7 +1,7 @@
 package edu.uci.ics.genomix.pregelix.util;
 
-import edu.uci.ics.genomix.pregelix.io.AdjacencyListWritable;
 import edu.uci.ics.genomix.pregelix.io.VertexValueWritable;
+import edu.uci.ics.genomix.pregelix.io.common.AdjacencyListWritable;
 import edu.uci.ics.genomix.type.EdgeWritable;
 import edu.uci.ics.genomix.type.VKmerBytesWritable;
 
diff --git a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/BasicSmallTestCase.java b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/BasicSmallTestCase.java
index 7167e7c..87630fd 100644
--- a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/BasicSmallTestCase.java
+++ b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/BasicSmallTestCase.java
@@ -29,9 +29,9 @@
 import org.junit.Test;
 
 import edu.uci.ics.genomix.pregelix.graph.GenerateGraphViz;
-import edu.uci.ics.genomix.pregelix.io.ByteWritable;
-import edu.uci.ics.genomix.pregelix.io.HashMapWritable;
-import edu.uci.ics.genomix.pregelix.io.VLongWritable;
+import edu.uci.ics.genomix.pregelix.io.common.ByteWritable;
+import edu.uci.ics.genomix.pregelix.io.common.HashMapWritable;
+import edu.uci.ics.genomix.pregelix.io.common.VLongWritable;
 import edu.uci.ics.genomix.pregelix.operator.BasicGraphCleanVertex;
 import edu.uci.ics.genomix.pregelix.sequencefile.GenerateTextFile;
 import edu.uci.ics.genomix.pregelix.type.StatisticsCounter;