Index: AE/installer2/src/net/oni2/aeinstaller/backend/appexecution/AppExecution.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/backend/appexecution/AppExecution.java	(revision 702)
+++ AE/installer2/src/net/oni2/aeinstaller/backend/appexecution/AppExecution.java	(revision 703)
@@ -6,4 +6,5 @@
 import java.io.InputStream;
 import java.io.InputStreamReader;
+import java.util.Date;
 import java.util.List;
 import java.util.Vector;
@@ -24,4 +25,5 @@
 	public static AppExecutionResult executeAndWait(Vector<String> cmdLine)
 			throws IOException {
+		long start = new Date().getTime();
 		ProcessBuilder pb = new ProcessBuilder(cmdLine);
 		pb.redirectErrorStream(true);
@@ -44,5 +46,6 @@
 			e.printStackTrace();
 		}
-		return new AppExecutionResult(proc.exitValue(), cmdLine, lines);
+		return new AppExecutionResult(proc.exitValue(), cmdLine, lines,
+				(int) (new Date().getTime() - start));
 	}
 
Index: AE/installer2/src/net/oni2/aeinstaller/backend/appexecution/AppExecutionResult.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/backend/appexecution/AppExecutionResult.java	(revision 702)
+++ AE/installer2/src/net/oni2/aeinstaller/backend/appexecution/AppExecutionResult.java	(revision 703)
@@ -19,4 +19,8 @@
 	 */
 	public Vector<String> output;
+	/**
+	 * Time the app was run for
+	 */
+	public int time;
 
 	/**
@@ -27,10 +31,13 @@
 	 * @param output
 	 *            Output of executed program
+	 * @param time
+	 *            Time of execution in ms
 	 */
 	public AppExecutionResult(int errorCode, Vector<String> cmdLine,
-			Vector<String> output) {
+			Vector<String> output, int time) {
 		this.errorCode = errorCode;
 		this.cmdLine = cmdLine;
 		this.output = output;
+		this.time = time;
 	}
 }
Index: AE/installer2/src/net/oni2/aeinstaller/backend/oni/Installer.java
===================================================================
--- AE/installer2/src/net/oni2/aeinstaller/backend/oni/Installer.java	(revision 702)
+++ AE/installer2/src/net/oni2/aeinstaller/backend/oni/Installer.java	(revision 703)
@@ -468,5 +468,4 @@
 		listener.installProgressUpdate(0, 1, "Applying XML patches");
 
-		// TODO: REMOVE
 		long startMS = new Date().getTime();
 
@@ -493,5 +492,5 @@
 			File levelFolder = new File(tmpFolder, level);
 			levelFolder.mkdir();
-			
+
 			log.println("\t\tPatches for " + level);
 
@@ -581,17 +580,15 @@
 
 			// Remove XML folder as import will only require .oni's
-//			try {
-//				FileUtils.deleteDirectory(levelFolderXML);
-//			} catch (IOException e) {
-//				e.printStackTrace();
-//			}
+			// try {
+			// FileUtils.deleteDirectory(levelFolderXML);
+			// } catch (IOException e) {
+			// e.printStackTrace();
+			// }
 
 			oniLevelFolders.get(level).add(levelFolder);
-			
-			log.println();
-		}
-
-		System.out.println("Took: " + (new Date().getTime() - startMS)
-				+ " msec");
+		}
+
+		log.println("Applying XML patches took "
+				+ (new Date().getTime() - startMS) + " ms");
 	}
 
@@ -599,4 +596,6 @@
 			TreeMap<String, Vector<File>> oniLevelFolders,
 			InstallProgressListener listener, PrintWriter log) {
+		long startMS = new Date().getTime();
+
 		int totalSteps = 0;
 		int stepsDone = 0;
@@ -619,7 +618,10 @@
 			logAppOutput(res, log);
 
-			log.println();
 			stepsDone++;
 		}
+
+		log.println("Importing levels took " + (new Date().getTime() - startMS)
+				+ " ms");
+		log.println();
 	}
 
@@ -928,4 +930,5 @@
 			for (String s : result.output)
 				log.println("\t\t\t\t" + s);
+			log.println("\t\t\tDuration: " + result.time + " ms");
 			log.println();
 		}
