diff --git a/adb_install.cpp b/adb_install.cpp
index 12bce1c..f5ba89c 100644
--- a/adb_install.cpp
+++ b/adb_install.cpp
@@ -33,6 +33,7 @@
 extern "C" {
 #include "minadbd/adb.h"
 #include "twinstall.h"
+#include "data.h"
 int TWinstall_zip(const char* path, int* wipe_cache);
 }
 
@@ -86,6 +87,7 @@
         execl("/sbin/recovery", "recovery", "--adbd", NULL);
         _exit(-1);
     }
+	DataManager_SetIntValue("tw_child_pid", child);
     int status;
     // TODO(dougz): there should be a way to cancel waiting for a
     // package (by pushing some button combo on the device).  For now
@@ -108,5 +110,17 @@
         }
         return INSTALL_ERROR;
     }
-    return TWinstall_zip(ADB_SIDELOAD_FILENAME, wipe_cache);
+	char zip_file[255];
+	if (strncmp(ADB_SIDELOAD_FILENAME, "/tmp", 4) == 0) {
+		char command[255];
+		sprintf(zip_file, "%s/%s", DataManager_GetCurrentStoragePath(), "sideload.zip");
+		ui->Print("Copying zip to '%s'\n", zip_file);
+		sprintf(command, "cp %s %s", ADB_SIDELOAD_FILENAME, zip_file);
+		system(command);
+		sprintf(command, "rm %s", ADB_SIDELOAD_FILENAME);
+		system(command);
+	} else {
+		strcpy(zip_file, ADB_SIDELOAD_FILENAME);
+	}
+	return TWinstall_zip(zip_file, wipe_cache);
 }
diff --git a/gui/action.cpp b/gui/action.cpp
index 5118b4c..4114bf0 100644
--- a/gui/action.cpp
+++ b/gui/action.cpp
@@ -1057,16 +1057,42 @@
 				simulate_progress_bar();
 			} else {
 				int wipe_cache = 0;
+				string Command;
+
+				if (!PartitionManager.Mount_Current_Storage(true)) {
+					operation_end(1, simulate);
+					return 0;
+				}
+				if (TWFunc::Path_Exists(ADB_SIDELOAD_FILENAME)) {
+					Command = "rm ";
+					Command += ADB_SIDELOAD_FILENAME;
+					system(Command.c_str());
+				}
+				Command = "touch ";
+				Command += ADB_SIDELOAD_FILENAME;
+				system(Command.c_str());
 				ui_print("Starting ADB sideload feature...\n");
-				system("touch /tmp/update.zip");
-				ret = apply_from_adb(ui, &wipe_cache, "/tmp/last_install");
-				LOGI("Result was: %i\n", ret);
+				ret = apply_from_adb(ui, &wipe_cache, "/tmp/install_log");
 				if (ret != 0)
-					ret = 1;
+					ret = 1; // failure
+				else if (wipe_cache)
+					PartitionManager.Wipe_By_Path("/cache");
 			}
 			operation_end(ret, simulate);
 			return 0;
 		}
+		if (function == "adbsideloadcancel")
+		{
+			int child_pid;
+			string Command;
+			Command = "rm ";
+			Command += ADB_SIDELOAD_FILENAME;
+			system(Command.c_str());
+			DataManager::GetValue("tw_child_pid", child_pid);
+			ui_print("Cancelling ADB sideload...\n");
+			kill(child_pid, SIGTERM);
+			return 0;
+		}
     }
     else
     {
diff --git a/gui/devices/800x1280/res/ui.xml b/gui/devices/800x1280/res/ui.xml
index decfcad..a131e89 100755
--- a/gui/devices/800x1280/res/ui.xml
+++ b/gui/devices/800x1280/res/ui.xml
@@ -67,7 +67,7 @@
 		<variable name="row9_text_y" value="570" />
 		<variable name="row10_text_y" value="620" />
 		<variable name="row11_text_y" value="670" />
-		<variable name="row12_text_y" value="700" />
+		<variable name="row12_text_y" value="720" />
 		<variable name="row13_text_y" value="770" />
 		<variable name="row14_text_y" value="820" />
 		<variable name="row15_text_y" value="870" />
@@ -909,6 +909,69 @@
 			</object>
 		</page>
 
+		<page name="action_page_cancel">
+			<object type="template" name="header" />
+
+			<object type="text" color="%text_color%">
+				<font resource="font" />
+				<placement x="%center_x%" y="%row1_text_y%" placement="5" />
+				<text>%tw_action_text1%</text>
+			</object>
+
+			<object type="text" color="%text_color%">
+				<font resource="font" />
+				<placement x="%center_x%" y="%row2_text_y%" placement="5" />
+				<text>%tw_action_text2%</text>
+			</object>
+
+			<object type="button">
+				<placement x="%col_center_x%" y="%row4_y%" />
+				<font resource="font" color="%button_text_color%" />
+				<text>Cancel</text>
+				<image resource="main_button" />
+				<action function="%tw_cancel_function%"></action>
+			</object>
+
+			<object type="template" name="action_page_console" />
+
+			<object type="template" name="progress_bar" />
+
+			<object type="action">
+				<conditions>
+					<condition var1="tw_operation_state" var2="1" />
+					<condition var1="tw_operation_status" var2="0" />
+				</conditions>
+				<actions>
+					<action function="page">action_complete</action>
+				</actions>
+			</object>
+
+			<object type="action">
+				<conditions>
+					<condition var1="tw_operation_state" var2="1" />
+					<condition var1="tw_operation_status" op="!=" var2="0" />
+				</conditions>
+				<actions>
+					<action function="page">action_complete</action>
+				</actions>
+			</object>
+
+			<object type="action">
+				<condition var1="tw_has_action2" var2="0" />
+				<actions>
+					<action function="%tw_action%">%tw_action_param%</action>
+				</actions>
+			</object>
+
+			<object type="action">
+				<condition var1="tw_has_action2" var2="1" />
+				<actions>
+					<action function="%tw_action%">%tw_action_param%</action>
+					<action function="%tw_action2%">%tw_action2_param%</action>
+				</actions>
+			</object>
+		</page>
+
 		<page name="action_complete">
 			<object type="template" name="header" />
 
@@ -2546,12 +2609,13 @@
 				<text>ADB Sideload</text>
 				<image resource="main_button" />
 				<actions>
+					<action function="set">tw_back=advanced</action>
 					<action function="set">tw_action=adbsideload</action>
 					<action function="set">tw_action_text1=ADB Sideload</action>
 					<action function="set">tw_action_text2=Usage: adb sideload filename.zip</action>
 					<action function="set">tw_complete_text1=ADB Sideload Complete</action>
-					<action function="set">tw_slider_text=Swipe to Wipe</action>
-					<action function="page">action_page</action>
+					<action function="set">tw_cancel_function=adbsideloadcancel</action>
+					<action function="page">action_page_cancel</action>
 				</actions>
 			</object>
 
diff --git a/recovery.cpp b/recovery.cpp
index b333db9..b8bb099 100644
--- a/recovery.cpp
+++ b/recovery.cpp
@@ -773,6 +773,10 @@
 
 int
 main(int argc, char **argv) {
+    // Recovery needs to install world-readable files, so clear umask
+    // set by init
+    umask(0);
+
     time_t start = time(NULL);
 
     // If these fail, there's not really anywhere to complain...
@@ -792,9 +796,6 @@
     }
 
     printf("Starting TWRP %s on %s", TW_VERSION_STR, ctime(&start));
-	// Recovery needs to install world-readable files, so clear umask
-    // set by init
-    umask(0);
 
     Device* device = make_device();
     ui = device->GetUI();
