diff --git a/pregelix/pregelix-api/pom.xml b/pregelix/pregelix-api/pom.xml
index a178578..1af5e9d 100644
--- a/pregelix/pregelix-api/pom.xml
+++ b/pregelix/pregelix-api/pom.xml
@@ -29,30 +29,6 @@
 			</plugin>
 			<plugin>
 				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-assembly-plugin</artifactId>
-				<version>2.2</version>
-				<configuration>
-					<outputDirectory>target</outputDirectory>
-					<descriptorRefs>
-						<descriptorRef>jar-with-dependencies</descriptorRef>
-					</descriptorRefs>
-				</configuration>
-			</plugin>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-surefire-plugin</artifactId>
-				<version>2.6</version>
-				<configuration>
-					<systemProperties>
-						<property>
-							<name>prop.jarLocation</name>
-							<value>target/pregelix-example-${project.version}-jar-with-dependencies.jar</value>
-						</property>
-					</systemProperties>
-				</configuration>
-			</plugin>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-surefire-plugin</artifactId>
 				<version>2.7.2</version>
 				<configuration>
diff --git a/pregelix/pregelix-core/src/main/java/edu/uci/ics/pregelix/core/driver/Driver.java b/pregelix/pregelix-core/src/main/java/edu/uci/ics/pregelix/core/driver/Driver.java
index 7b03e10..c881561 100644
--- a/pregelix/pregelix-core/src/main/java/edu/uci/ics/pregelix/core/driver/Driver.java
+++ b/pregelix/pregelix-core/src/main/java/edu/uci/ics/pregelix/core/driver/Driver.java
@@ -4,10 +4,11 @@
 import java.io.FilenameFilter;
 import java.net.URL;
 import java.net.URLClassLoader;
+import java.util.ArrayList;
 import java.util.EnumSet;
+import java.util.List;
 import java.util.Set;
 import java.util.TreeSet;
-import java.util.UUID;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -90,13 +91,13 @@
             ClusterConfig.loadClusterConfig(ipAddress, port);
 
             URLClassLoader classLoader = (URLClassLoader) exampleClass.getClassLoader();
+            List<File> jars = new ArrayList<File>();
             URL[] urls = classLoader.getURLs();
-            String jarFile = "";
             for (URL url : urls)
                 if (url.toString().endsWith(".jar"))
-                    jarFile = url.getPath();
+                    jars.add(new File(url.getPath()));
 
-            installApplication(jarFile);
+            installApplication(jars);
             FileSystem dfs = FileSystem.get(job.getConfiguration());
             dfs.delete(FileOutputFormat.getOutputPath(job), true);
 
@@ -187,22 +188,9 @@
         hcc.waitForCompletion(jobId);
     }
 
-    public void installApplication(String jarFile) throws Exception {
-        System.out.println(jarFile);
-        applicationName = job.getJobName() + new UUID(System.currentTimeMillis(), System.nanoTime());
-        String home = System.getProperty(PREGELIX_HOME);
-        if (home == null)
-            home = "./";
-        String libDir = home + LIB;
-        File dir = new File(libDir);
-        if (!dir.isDirectory()) {
-            throw new HyracksException(libDir + " is not a directory!");
-        }
-        System.out.println(dir.getAbsolutePath());
-        File[] libJars = dir.listFiles(new FileFilter("jar"));
+    public void installApplication(List<File> jars) throws Exception {
         Set<String> allJars = new TreeSet<String>();
-        allJars.add(jarFile);
-        for (File jar : libJars) {
+        for (File jar : jars) {
             allJars.add(jar.getAbsolutePath());
         }
         File appZip = Utilities.getHyracksArchive(applicationName, allJars);
diff --git a/pregelix/pregelix-core/src/main/resources/scripts/pregelix b/pregelix/pregelix-core/src/main/resources/scripts/pregelix
index 3c704f0..01a0333 100644
--- a/pregelix/pregelix-core/src/main/resources/scripts/pregelix
+++ b/pregelix/pregelix-core/src/main/resources/scripts/pregelix
@@ -91,7 +91,7 @@
   REPO="$BASEDIR"/lib
 fi
 
-CLASSPATH=$CLASSPATH_PREFIX:"$HADOOP_HOME"/conf:"$BASEDIR"/etc:$(echo ${REPO}/*.jar | tr ' ' ':')
+CLASSPATH=$CLASSPATH_PREFIX:$1:"$HADOOP_HOME"/conf:"$BASEDIR"/etc:$(echo ${REPO}/*.jar | tr ' ' ':')
 
 # For Cygwin, switch paths to Windows format before running java
 if $cygwin; then
diff --git a/pregelix/pregelix-example/pom.xml b/pregelix/pregelix-example/pom.xml
index 17caca2..f3a6541 100644
--- a/pregelix/pregelix-example/pom.xml
+++ b/pregelix/pregelix-example/pom.xml
@@ -23,28 +23,21 @@
 				</configuration>
 			</plugin>
 			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-assembly-plugin</artifactId>
-				<version>2.2</version>
 				<configuration>
-					<outputDirectory>target</outputDirectory>
 					<descriptorRefs>
 						<descriptorRef>jar-with-dependencies</descriptorRef>
 					</descriptorRefs>
 				</configuration>
-			</plugin>
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-surefire-plugin</artifactId>
-				<version>2.6</version>
-				<configuration>
-					<systemProperties>
-						<property>
-							<name>prop.jarLocation</name>
-							<value>target/pregelix-example-${project.version}-jar-with-dependencies.jar</value>
-						</property>
-					</systemProperties>
-				</configuration>
+				<executions>
+					<execution>
+						<id>make-my-jar-with-dependencies</id>
+						<phase>package</phase>
+						<goals>
+							<goal>single</goal>
+						</goals>
+					</execution>
+				</executions>
 			</plugin>
 			<plugin>
 				<groupId>org.codehaus.mojo</groupId>
