diff --git a/genomix/genomix-core/src/main/java/edu/uci/ics/genomix/dataflow/Tester.java b/genomix/genomix-core/src/main/java/edu/uci/ics/genomix/dataflow/Tester.java
index 0b0aa07..f455604 100644
--- a/genomix/genomix-core/src/main/java/edu/uci/ics/genomix/dataflow/Tester.java
+++ b/genomix/genomix-core/src/main/java/edu/uci/ics/genomix/dataflow/Tester.java
@@ -31,6 +31,7 @@
 import edu.uci.ics.hyracks.api.job.JobSpecification;
 import edu.uci.ics.hyracks.control.cc.ClusterControllerService;
 import edu.uci.ics.hyracks.control.common.controllers.CCConfig;
+import edu.uci.ics.genomix.data.std.accessors.LongBinaryHashFunctionFamily;
 import edu.uci.ics.hyracks.control.common.controllers.NCConfig;
 import edu.uci.ics.hyracks.control.nc.NodeControllerService;
 import edu.uci.ics.hyracks.data.std.accessors.PointableBinaryComparatorFactory;
diff --git a/genomix/genomix-core/src/main/java/edu/uci/ics/genomix/driver/Driver.java b/genomix/genomix-core/src/main/java/edu/uci/ics/genomix/driver/Driver.java
index 927cd36..b0f88a2 100644
--- a/genomix/genomix-core/src/main/java/edu/uci/ics/genomix/driver/Driver.java
+++ b/genomix/genomix-core/src/main/java/edu/uci/ics/genomix/driver/Driver.java
@@ -6,6 +6,9 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
+import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
 import org.apache.hadoop.util.GenericOptionsParser;
 
 import edu.uci.ics.genomix.job.GenomixJob;
@@ -43,7 +46,7 @@
 			throws HyracksException {
 		try {
 			hcc = new HyracksConnection(ipAddress, port);
-			scheduler = new Scheduler(ipAddress, port);
+			scheduler = new Scheduler(hcc.getNodeControllerInfos());
 		} catch (Exception e) {
 			throw new HyracksException(e);
 		}
@@ -124,8 +127,8 @@
 		GenomixJob job = new GenomixJob();
 		String[] otherArgs = new GenericOptionsParser(job.getConfiguration(),
 				args).getRemainingArgs();
-		if (otherArgs.length < 2) {
-			System.err.println("Need <serverIP> <port>");
+		if (otherArgs.length < 4) {
+			System.err.println("Need <serverIP> <port> <input> <output>");
 			System.exit(-1);
 		}
 		String ipAddress = otherArgs[0];
@@ -134,7 +137,8 @@
 				CPARTITION_PER_MACHINE, 2);
 		boolean bProfiling = job.getConfiguration().getBoolean(IS_PROFILING,
 				true);
-
+		FileInputFormat.setInputPaths(job, otherArgs[2]);
+		FileOutputFormat.setOutputPath(job, new Path(otherArgs[3]));
 		Driver driver = new Driver(ipAddress, port, numOfDuplicate);
 		driver.runJob(job, Plan.BUILD_DEBRUJIN_GRAPH, bProfiling);
 	}
diff --git a/genomix/genomix-core/src/main/java/edu/uci/ics/genomix/job/JobGenBrujinGraph.java b/genomix/genomix-core/src/main/java/edu/uci/ics/genomix/job/JobGenBrujinGraph.java
index a1b28f7..88e5e5d 100644
--- a/genomix/genomix-core/src/main/java/edu/uci/ics/genomix/job/JobGenBrujinGraph.java
+++ b/genomix/genomix-core/src/main/java/edu/uci/ics/genomix/job/JobGenBrujinGraph.java
@@ -224,18 +224,16 @@
 		jobSpec.connect(connPartition, singleGrouper, 0, crossGrouper, 0);
 
 		// Output
-		PrinterOperatorDescriptor printer = new PrinterOperatorDescriptor(
-				jobSpec, outputPath.getName());
 		HDFSWriteOperatorDescriptor writeOperator = new HDFSWriteOperatorDescriptor(
 				jobSpec, (JobConf) conf, new KMerWriterFactory());
 
 		PartitionConstraintHelper.addAbsoluteLocationConstraint(jobSpec,
-				printer, ncNodeNames);
+				writeOperator, ncNodeNames);
 
 		IConnectorDescriptor printConn = new OneToOneConnectorDescriptor(
 				jobSpec);
-		jobSpec.connect(printConn, crossGrouper, 0, printer, 0);
-		jobSpec.addRoot(printer);
+		jobSpec.connect(printConn, crossGrouper, 0, writeOperator, 0);
+		jobSpec.addRoot(writeOperator);
 
 		if (groupbyType == GroupbyType.PRECLUSTER) {
 			jobSpec.setConnectorPolicyAssignmentPolicy(new ConnectorPolicyAssignmentPolicy());
diff --git a/genomix/genomix-core/src/main/resources/scripts/genomix b/genomix/genomix-core/src/main/resources/scripts/genomix
index c8fa28c..bdd7f20 100644
--- a/genomix/genomix-core/src/main/resources/scripts/genomix
+++ b/genomix/genomix-core/src/main/resources/scripts/genomix
@@ -109,5 +109,5 @@
   -Dapp.repo="$REPO" \
   -Dapp.home="$BASEDIR" \
   -Dbasedir="$BASEDIR" \
-  edu.uci.ics.genomix.Driver \
+  edu.uci.ics.genomix.driver.Driver \
   "$@"
diff --git a/genomix/genomix-core/src/main/resources/scripts/genomix.bat b/genomix/genomix-core/src/main/resources/scripts/genomix.bat
index 5a70171..1bd2098 100644
--- a/genomix/genomix-core/src/main/resources/scripts/genomix.bat
+++ b/genomix/genomix-core/src/main/resources/scripts/genomix.bat
@@ -77,7 +77,7 @@
 @REM Reaching here means variables are defined and arguments have been captured
 :endInit
 
-%JAVACMD% %JAVA_OPTS%  -classpath %CLASSPATH_PREFIX%;%CLASSPATH% -Dapp.name="genomix" -Dapp.repo="%REPO%" -Dapp.home="%BASEDIR%" -Dbasedir="%BASEDIR%" edu.uci.ics.genomix.Driver %CMD_LINE_ARGS%
+%JAVACMD% %JAVA_OPTS%  -classpath %CLASSPATH_PREFIX%;%CLASSPATH% -Dapp.name="genomix" -Dapp.repo="%REPO%" -Dapp.home="%BASEDIR%" -Dbasedir="%BASEDIR%" edu.uci.ics.genomix.driver.Driver %CMD_LINE_ARGS%
 if ERRORLEVEL 1 goto error
 goto end
 
