fixed the racing problem
diff --git a/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/dataflow/MapReadToNodeOperator.java b/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/dataflow/MapReadToNodeOperator.java
index 2d92303..e7f9ee2 100644
--- a/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/dataflow/MapReadToNodeOperator.java
+++ b/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/dataflow/MapReadToNodeOperator.java
@@ -136,22 +136,6 @@
             outputNode(curNodeEntry);
         }
 
-        /**
-         * The neighbor list is store in the next next node
-         * (3,2) [(1,0),(2,0)] will become the outgoing list of node (3,1)
-         * (3,1) [(1,0),(2,0)]
-         * 
-         * @param curNodeEntry2
-         * @param nextNodeEntry2
-         */
-        //        private void setOutgoingByNext(NodeReference curNodeEntry2, NodeReference nextNodeEntry2) {
-        //            if (nextNodeEntry2 == null) {
-        //                curNodeEntry2.getOutgoingList().reset();
-        //            } else {
-        //                curNodeEntry2.setOutgoingList(nextNodeEntry2.getOutgoingList());
-        //            }
-        //        }
-
         private void resetNode(NodeReference node, int readID, byte posInRead, int offset, boolean isInitial) {
             node.reset(kmerSize);
             node.setNodeID(readID, posInRead);
diff --git a/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/dataflow/ReadsKeyValueParserFactory.java b/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/dataflow/ReadsKeyValueParserFactory.java
index 855be64..85aee5b 100644
--- a/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/dataflow/ReadsKeyValueParserFactory.java
+++ b/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/dataflow/ReadsKeyValueParserFactory.java
@@ -45,19 +45,18 @@
     public static final int OutputKmerField = 0;
     public static final int OutputPosition = 1;
     
-    private KmerBytesWritable kmer;
-    private PositionReference pos;
-    private boolean bReversed;
+
+    private final boolean bReversed;
     private final int readLength;
+    private final int kmerSize;
 
     public static final RecordDescriptor readKmerOutputRec = new RecordDescriptor(new ISerializerDeserializer[] { null,
             null });
 
     public ReadsKeyValueParserFactory(int readlength, int k, boolean bGenerateReversed) {
         bReversed = bGenerateReversed;
-        kmer = new KmerBytesWritable(k);
-        pos = new PositionReference();
         this.readLength = readlength;
+        this.kmerSize = k;
     }
 
     @Override
@@ -69,6 +68,9 @@
 
         return new IKeyValueParser<LongWritable, Text>() {
 
+            private KmerBytesWritable kmer = new KmerBytesWritable(kmerSize);
+            private PositionReference pos = new PositionReference();
+            
             @Override
             public void parse(LongWritable key, Text value, IFrameWriter writer) throws HyracksDataException {
                 String[] geneLine = value.toString().split("\\t"); // Read the Real Gene Line
@@ -97,25 +99,24 @@
 
             private void SplitReads(int readID, byte[] array, IFrameWriter writer) {
                 /** first kmer */
-                int k = kmer.getKmerLength();
-                if (k >= array.length) {
+                if (kmerSize >= array.length) {
                     return;
                 }
                 kmer.setByRead(array, 0);
                 InsertToFrame(kmer, readID, 0, writer);
 
                 /** middle kmer */
-                for (int i = k; i < array.length; i++) {
+                for (int i = kmerSize; i < array.length; i++) {
                     kmer.shiftKmerWithNextChar(array[i]);
-                    InsertToFrame(kmer, readID, i - k + 1, writer);
+                    InsertToFrame(kmer, readID, i - kmerSize + 1, writer);
                 }
 
                 if (bReversed) {
                     /** first kmer */
                     kmer.setByReadReverse(array, 0);
-                    InsertToFrame(kmer, -readID, array.length - k, writer);
+                    InsertToFrame(kmer, -readID, array.length - kmerSize, writer);
                     /** middle kmer */
-                    for (int i = k; i < array.length; i++) {
+                    for (int i = kmerSize; i < array.length; i++) {
                         kmer.shiftKmerWithPreCode(GeneCode.getPairedCodeFromSymbol(array[i]));
                         InsertToFrame(kmer, -readID, array.length - i - 1, writer);
                     }
@@ -149,8 +150,6 @@
 
             @Override
             public void open(IFrameWriter writer) throws HyracksDataException {
-                // TODO Auto-generated method stub
-
             }
 
             @Override
diff --git a/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/job/JobGenCheckReader.java b/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/job/JobGenCheckReader.java
index c6a69d4..28e4ff5 100644
--- a/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/job/JobGenCheckReader.java
+++ b/genomix/genomix-hyracks/src/main/java/edu/uci/ics/genomix/hyracks/job/JobGenCheckReader.java
@@ -56,13 +56,15 @@
              * 
              */
             private static final long serialVersionUID = 1L;
-            private KmerBytesWritable kmer = new KmerBytesWritable(kmerSize);
-            private PositionWritable pos = new PositionWritable();
+            
 
             @Override
             public ITupleWriter getTupleWriter(IHyracksTaskContext ctx) throws HyracksDataException {
                 return new ITupleWriter(){
 
+                    private KmerBytesWritable kmer = new KmerBytesWritable(kmerSize);
+                    private PositionWritable pos = new PositionWritable();
+                    
                     @Override
                     public void open(DataOutput output) throws HyracksDataException {
                         // TODO Auto-generated method stub
diff --git a/genomix/genomix-hyracks/src/test/java/edu/uci/ics/genomix/hyracks/test/JobRunStepByStepTest.java b/genomix/genomix-hyracks/src/test/java/edu/uci/ics/genomix/hyracks/test/JobRunStepByStepTest.java
index df25fd7..745f62f 100644
--- a/genomix/genomix-hyracks/src/test/java/edu/uci/ics/genomix/hyracks/test/JobRunStepByStepTest.java
+++ b/genomix/genomix-hyracks/src/test/java/edu/uci/ics/genomix/hyracks/test/JobRunStepByStepTest.java
@@ -54,7 +54,7 @@
 
     private JobConf conf = new JobConf();
     private int numberOfNC = 2;
-    private int numPartitionPerMachine = 1;
+    private int numPartitionPerMachine = 2;
 
     private Driver driver;