diff --git a/genomix/genomix-hadoop/src/main/java/edu/uci/ics/genomix/hadoop/graphclean/mergepaths/h4/MergePathsH4.java b/genomix/genomix-hadoop/src/main/java/edu/uci/ics/genomix/hadoop/graphclean/mergepaths/h4/MergePathsH4.java
index a5ba50d..88cfb79 100644
--- a/genomix/genomix-hadoop/src/main/java/edu/uci/ics/genomix/hadoop/graphclean/mergepaths/h4/MergePathsH4.java
+++ b/genomix/genomix-hadoop/src/main/java/edu/uci/ics/genomix/hadoop/graphclean/mergepaths/h4/MergePathsH4.java
@@ -69,7 +69,6 @@
         NO_MERGE,
         FORWARD,
         BACKWARD
-
     }
 
     /*
@@ -322,13 +321,13 @@
             sawCurNode = false;
             updateMsgsCount = 0;
 
-            byte inDir;
+            byte inMsg;
             while (values.hasNext()) {
                 inputValue.set(values.next());
                 inFlag = inputValue.getFlag();
-                inDir = (byte) (inFlag & MessageFlag.MSG_MASK);
-
-                switch (inDir) {
+                inMsg = (byte) (inFlag & MessageFlag.MSG_MASK);
+                
+                switch (inMsg) {
                     case MessageFlag.MSG_UPDATE_MERGE:
                     case MessageFlag.MSG_SELF:
                         if (sawCurNode)
@@ -337,11 +336,11 @@
                         curNode.set(inputValue.getNode());
                         outFlag = inFlag;
                         sawCurNode = true;
-                        if (inDir == MessageFlag.MSG_SELF) {
+                        if (inMsg == MessageFlag.MSG_SELF) {
                             outPosn.set(curNode.getNodeID());
                         } else { // MSG_UPDATE_MERGE
                             // merge messages are sent to their merge recipient
-                            outPosn.set(curNode.getListFromDir(inDir).getPosition(0));
+                            outPosn.set(curNode.getListFromDir(inMsg).getPosition(0));
                         }
                         break;
                     case MessageFlag.MSG_UPDATE_EDGE:
@@ -351,6 +350,9 @@
                         throw new IOException("Unrecognized message type: " + (inFlag & MessageFlag.MSG_MASK));
                 }
             }
+            if (!sawCurNode) {
+                throw new IOException("Never saw self in recieve update messages!");
+            }
 
             // process all the update messages for this node
             // I have no idea how to make this more efficient...
diff --git a/genomix/genomix-hadoop/src/main/java/edu/uci/ics/genomix/hadoop/graphclean/mergepaths/h4/MergePathsH4Driver.java b/genomix/genomix-hadoop/src/main/java/edu/uci/ics/genomix/hadoop/graphclean/mergepaths/h4/MergePathsH4Driver.java
index 72be4b5..ec91767 100644
--- a/genomix/genomix-hadoop/src/main/java/edu/uci/ics/genomix/hadoop/graphclean/mergepaths/h4/MergePathsH4Driver.java
+++ b/genomix/genomix-hadoop/src/main/java/edu/uci/ics/genomix/hadoop/graphclean/mergepaths/h4/MergePathsH4Driver.java
@@ -101,9 +101,9 @@
             prevToMergeOutput = mergeOutput;
             setOutputPaths(inputGraphPath, iMerge);
             merger.run(prevToMergeOutput, mergeOutput, completeOutput, updatesOutput, baseConf);
-            dfs.copyToLocalFile(new Path(mergeOutput), new Path("i" + iMerge +"-toMerge"));
-            dfs.copyToLocalFile(new Path(completeOutput), new Path("i" + iMerge +"-complete"));
-            dfs.copyToLocalFile(new Path(updatesOutput), new Path("i" + iMerge +"-updates"));
+//            dfs.copyToLocalFile(new Path(mergeOutput), new Path("i" + iMerge +"-toMerge"));
+//            dfs.copyToLocalFile(new Path(completeOutput), new Path("i" + iMerge +"-complete"));
+//            dfs.copyToLocalFile(new Path(updatesOutput), new Path("i" + iMerge +"-updates"));
             
             if (dfs.listStatus(new Path(mergeOutput)) == null || dfs.listStatus(new Path(mergeOutput)).length == 0) {
                 // no output from previous run-- we are done!
