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 93137d7..6d0585e 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
@@ -1,5 +1,6 @@
 package edu.uci.ics.genomix.driver;
 
+import java.io.IOException;
 import java.net.URL;
 import java.util.EnumSet;
 import java.util.Map;
@@ -7,7 +8,10 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.fs.FileSystem;
+import org.apache.hadoop.mapreduce.Job;
 import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
+import org.apache.hadoop.util.GenericOptionsParser;
+import org.kohsuke.args4j.Option;
 
 import edu.uci.ics.genomix.job.GenomixJob;
 import edu.uci.ics.genomix.job.JobGen;
@@ -29,7 +33,9 @@
         CONTIGS_GENERATION,
     }
    
-   	private static final String applicationName = "genomix";
+   	private static final String IS_PROFILING = "genomix.driver.profiling";
+   	private static final String CPARTITION_PER_MACHINE = "genomix.driver.duplicate.num";
+   	private static final String applicationName = GenomixJob.JOB_NAME;
    	private static final Log LOG = LogFactory.getLog(Driver.class);
     private JobGen jobGen;
     private boolean profiling;
@@ -108,4 +114,20 @@
                 profiling ? EnumSet.of(JobFlag.PROFILE_RUNTIME) : EnumSet.noneOf(JobFlag.class));
         hcc.waitForCompletion(jobId);
     }
+    
+    public static void main(String [] args) throws Exception{
+    	GenomixJob job = new GenomixJob();
+    	String[] otherArgs = new GenericOptionsParser(job.getConfiguration(), args).getRemainingArgs();
+    	if ( otherArgs.length < 2){
+    		System.err.println("Need <serverIP> <port>");
+    		System.exit(-1);
+    	}
+    	String ipAddress = otherArgs[0];
+    	int port = Integer.parseInt(otherArgs[1]);
+    	int numOfDuplicate = job.getConfiguration().getInt(CPARTITION_PER_MACHINE, 2);
+    	boolean bProfiling = job.getConfiguration().getBoolean(IS_PROFILING, true);
+    	
+    	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/GenomixJob.java b/genomix/genomix-core/src/main/java/edu/uci/ics/genomix/job/GenomixJob.java
index 24a7561..67527a7 100644
--- a/genomix/genomix-core/src/main/java/edu/uci/ics/genomix/job/GenomixJob.java
+++ b/genomix/genomix-core/src/main/java/edu/uci/ics/genomix/job/GenomixJob.java
@@ -6,6 +6,8 @@
 import org.apache.hadoop.mapreduce.Job;
 
 public class GenomixJob extends Job {
+	
+	public static final String JOB_NAME = "genomix";
 
 	/** Kmers length */
 	public static final String KMER_LENGTH = "genomix.kmer";
@@ -26,12 +28,12 @@
 	public static final String GROUPBY_HYBRID_RECORDSIZE_CROSS = "genomix.graph.groupby.hybrid.recordsize.cross";
 	public static final String GROUPBY_HYBRID_HASHLEVEL = "genomix.graph.groupby.hybrid.hashlevel";
 
-	public GenomixJob(String jobname) throws IOException {
-		super(new Configuration(), jobname);
+	public GenomixJob() throws IOException {
+		super(new Configuration(), JOB_NAME);
 	}
 
-	public GenomixJob(Configuration conf, String jobName) throws IOException {
-		super(conf, jobName);
+	public GenomixJob(Configuration conf) throws IOException {
+		super(conf, JOB_NAME);
 	}
 
 	/**
