diff --git a/gui/action.cpp b/gui/action.cpp
index 96f6209..9534399 100644
--- a/gui/action.cpp
+++ b/gui/action.cpp
@@ -325,7 +325,7 @@
 	}
 }
 
-int GUIAction::flash_zip(std::string filename, std::string pageName, int* wipe_cache)
+int GUIAction::flash_zip(std::string filename, int* wipe_cache)
 {
 	int ret_val = 0;
 
@@ -337,15 +337,9 @@
 		return -1;
 	}
 
-	// We're going to jump to this page first, like a loading page
-	gui_changePage(pageName);
-
 	if (!PartitionManager.Mount_By_Path(filename, true))
 		return -1;
 
-	// TODO: why again?
-	gui_changePage(pageName);
-
 	if (simulate) {
 		simulate_progress_bar();
 	} else {
@@ -944,29 +938,33 @@
 int GUIAction::flash(std::string arg)
 {
 	int i, ret_val = 0, wipe_cache = 0;
+	// We're going to jump to this page first, like a loading page
+	gui_changePage(arg);
 	for (i=0; i<zip_queue_index; i++) {
 		operation_start("Flashing");
 		DataManager::SetValue("tw_filename", zip_queue[i]);
 		DataManager::SetValue(TW_ZIP_INDEX, (i + 1));
 
 		TWFunc::SetPerformanceMode(true);
-		ret_val = flash_zip(zip_queue[i], arg, &wipe_cache);
+		ret_val = flash_zip(zip_queue[i], &wipe_cache);
 		TWFunc::SetPerformanceMode(false);
 		if (ret_val != 0) {
 			gui_print("Error flashing zip '%s'\n", zip_queue[i].c_str());
-			i = 10; // Error flashing zip - exit queue
 			ret_val = 1;
+			break;
 		}
 	}
 	zip_queue_index = 0;
-	DataManager::SetValue(TW_ZIP_QUEUE_COUNT, zip_queue_index);
 
-	if (wipe_cache)
+	if (wipe_cache) {
+		gui_print("One or more zip requested a cache wipe\nWiping cache now.\n");
 		PartitionManager.Wipe_By_Path("/cache");
+	}
 
 	reinject_after_flash();
 	PartitionManager.Update_System_Details();
 	operation_end(ret_val);
+	DataManager::SetValue(TW_ZIP_QUEUE_COUNT, zip_queue_index);
 	return 0;
 }
 
diff --git a/gui/objects.hpp b/gui/objects.hpp
index bb3edb3..a89f486 100644
--- a/gui/objects.hpp
+++ b/gui/objects.hpp
@@ -285,7 +285,7 @@
 	int doAction(Action action);
 	bool needsToRunInSeparateThread(const Action& action);
 	void simulate_progress_bar(void);
-	int flash_zip(std::string filename, std::string pageName, int* wipe_cache);
+	int flash_zip(std::string filename, int* wipe_cache);
 	void reinject_after_flash();
 	void operation_start(const string operation_name);
 	void operation_end(const int operation_status);
