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 3d93baa..9befdbb 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
@@ -485,16 +485,7 @@
         FileSystem dfs = FileSystem.get(conf);
         conf.setJarByClass(MergePathsH4.class);
         conf.setJobName("MergePathsH4 " + inputPath);
-<<<<<<< HEAD
-        
-        //another comment
 
-        FileInputFormat.addInputPaths(conf, inputPath);
-        Path outputPath = new Path(inputPath + ".h4merge.tmp");
-        FileOutputFormat.setOutputPath(conf, outputPath);
-
-=======
->>>>>>> 0fd527e9535a755b9d0956adb1cdc845f1fc46c2
         conf.setInputFormat(SequenceFileInputFormat.class);
         conf.setOutputFormat(SequenceFileOutputFormat.class);
         conf.setMapOutputKeyClass(PositionWritable.class);
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 2765920..98fe5f6 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
@@ -112,28 +112,6 @@
                 break;
             }
         }
-<<<<<<< HEAD
-        
-        // finally, combine all the completed paths and update messages to
-        // create a single merged graph output
-        dfs.delete(new Path(outputGraphPath), true); // clear any previous
-                                                     // output
-        // use all the "complete" and "update" outputs in addition to the final
-        // (possibly empty) toMerge directories
-        // as input to the final update step. This builds a comma-delim'ed
-        // String of said files.
-        final String lastMergeOutput = mergeOutput;
-        PathFilter updateFilter = new PathFilter() {
-            @Override
-            public boolean accept(Path arg0) {
-                String path = arg0.toString();
-                System.out.println("equals last: " + path + " vs " + lastMergeOutput + " = " + path.endsWith(lastMergeOutput));
-                return (path.matches(".*" + COMPLETE + "_i\\d+$") || path.matches(".*" + UPDATES + "_i\\d+$") || path.endsWith(lastMergeOutput));
-            }
-        };
-        // test comment 
-        
-=======
         if (!mergeComplete) {
             // if the merge didn't finish, we have to do one final iteration to convert back into (NodeWritable, NullWritable) pairs
             ConvertGraphFromNodeWithFlagToNodeWritable converter = new ConvertGraphFromNodeWithFlagToNodeWritable();
@@ -142,7 +120,6 @@
         }
 
         // final output string is a comma-separated list of completeOutputs
->>>>>>> 0fd527e9535a755b9d0956adb1cdc845f1fc46c2
         StringBuilder sb = new StringBuilder();
         String delim = "";
         for (String output : completeOutputs) {
