diff --git a/openrecoveryscript.cpp b/openrecoveryscript.cpp
index e319a9c..5a23c1d 100644
--- a/openrecoveryscript.cpp
+++ b/openrecoveryscript.cpp
@@ -215,52 +215,41 @@
 				DataManager::SetValue("tw_restore", folder_path);
 
 				PartitionManager.Set_Restore_Files(folder_path);
+				string Partition_List;
+				DataManager::GetValue("tw_restore_list", Partition_List);
 				if (strlen(partitions) != 0) {
-					int tw_restore_system = 0;
-					int tw_restore_data = 0;
-					int tw_restore_cache = 0;
-					int tw_restore_recovery = 0;
-					int tw_restore_boot = 0;
-					int tw_restore_andsec = 0;
-					int tw_restore_sdext = 0;
-					int tw_restore_sp1 = 0;
-					int tw_restore_sp2 = 0;
-					int tw_restore_sp3 = 0;
+					string Restore_List;
 
 					memset(value2, 0, sizeof(value2));
 					strcpy(value2, partitions);
 					ui_print("Setting restore options: '%s':\n", value2);
 					line_len = strlen(value2);
 					for (i=0; i<line_len; i++) {
-						if ((value2[i] == 'S' || value2[i] == 's') && DataManager::GetIntValue(TW_RESTORE_SYSTEM_VAR) > 0) {
-							tw_restore_system = 1;
+						if ((value2[i] == 'S' || value2[i] == 's') && Partition_List.find("/system;") != string::npos) {
+							Restore_List += "/system;";
 							ui_print("System\n");
-						} else if ((value2[i] == 'D' || value2[i] == 'd') && DataManager::GetIntValue(TW_RESTORE_DATA_VAR) > 0) {
-							tw_restore_data = 1;
+						} else if ((value2[i] == 'D' || value2[i] == 'd') && Partition_List.find("/data;") != string::npos) {
+							Restore_List += "/data;";
 							ui_print("Data\n");
-						} else if ((value2[i] == 'C' || value2[i] == 'c') && DataManager::GetIntValue(TW_RESTORE_CACHE_VAR) > 0) {
-							tw_restore_cache = 1;
+						} else if ((value2[i] == 'C' || value2[i] == 'c') && Partition_List.find("/cache;") != string::npos) {
+							Restore_List += "/cache;";
 							ui_print("Cache\n");
-						} else if ((value2[i] == 'R' || value2[i] == 'r') && DataManager::GetIntValue(TW_RESTORE_RECOVERY_VAR) > 0) {
-							tw_restore_recovery = 1;
-							ui_print("Recovery\n");
+						} else if ((value2[i] == 'R' || value2[i] == 'r') && Partition_List.find("/recovery;") != string::npos) {
+							ui_print("Recovery -- Not allowed to restore recovery\n");
 						} else if (value2[i] == '1' && DataManager::GetIntValue(TW_RESTORE_SP1_VAR) > 0) {
-							tw_restore_sp1 = 1;
-							ui_print("%s\n", "Special1");
+							ui_print("%s\n", "Special1 -- No Longer Supported...");
 						} else if (value2[i] == '2' && DataManager::GetIntValue(TW_RESTORE_SP2_VAR) > 0) {
-							tw_restore_sp2 = 1;
-							ui_print("%s\n", "Special2");
+							ui_print("%s\n", "Special2 -- No Longer Supported...");
 						} else if (value2[i] == '3' && DataManager::GetIntValue(TW_RESTORE_SP3_VAR) > 0) {
-							tw_restore_sp3 = 1;
-							ui_print("%s\n", "Special3");
-						} else if ((value2[i] == 'B' || value2[i] == 'b') && DataManager::GetIntValue(TW_RESTORE_BOOT_VAR) > 0) {
-							tw_restore_boot = 1;
+							ui_print("%s\n", "Special3 -- No Longer Supported...");
+						} else if ((value2[i] == 'B' || value2[i] == 'b') && Partition_List.find("/boot;") != string::npos) {
+							Restore_List += "/boot;";
 							ui_print("Boot\n");
-						} else if ((value2[i] == 'A' || value2[i] == 'a') && DataManager::GetIntValue(TW_RESTORE_ANDSEC_VAR) > 0) {
-							tw_restore_andsec = 1;
+						} else if ((value2[i] == 'A' || value2[i] == 'a')  && Partition_List.find("/and-sec;") != string::npos) {
+							Restore_List += "/and-sec;";
 							ui_print("Android Secure\n");
-						} else if ((value2[i] == 'E' || value2[i] == 'e') && DataManager::GetIntValue(TW_RESTORE_SDEXT_VAR) > 0) {
-							tw_restore_sdext = 1;
+						} else if ((value2[i] == 'E' || value2[i] == 'e')  && Partition_List.find("/sd-ext;") != string::npos) {
+							Restore_List += "/sd-ext;";
 							ui_print("SD-Ext\n");
 						} else if (value2[i] == 'M' || value2[i] == 'm') {
 							DataManager::SetValue(TW_SKIP_MD5_CHECK_VAR, 1);
@@ -268,29 +257,14 @@
 						}
 					}
 
-					if (DataManager::GetIntValue(TW_RESTORE_SYSTEM_VAR) && !tw_restore_system)
-						DataManager::SetValue(TW_RESTORE_SYSTEM_VAR, 0);
-					if (DataManager::GetIntValue(TW_RESTORE_DATA_VAR) && !tw_restore_data)
-						DataManager::SetValue(TW_RESTORE_DATA_VAR, 0);
-					if (DataManager::GetIntValue(TW_RESTORE_CACHE_VAR) && !tw_restore_cache)
-						DataManager::SetValue(TW_RESTORE_CACHE_VAR, 0);
-					if (DataManager::GetIntValue(TW_RESTORE_RECOVERY_VAR) && !tw_restore_recovery)
-						DataManager::SetValue(TW_RESTORE_RECOVERY_VAR, 0);
-					if (DataManager::GetIntValue(TW_RESTORE_BOOT_VAR) && !tw_restore_boot)
-						DataManager::SetValue(TW_RESTORE_BOOT_VAR, 0);
-					if (DataManager::GetIntValue(TW_RESTORE_ANDSEC_VAR) && !tw_restore_andsec)
-						DataManager::SetValue(TW_RESTORE_ANDSEC_VAR, 0);
-					if (DataManager::GetIntValue(TW_RESTORE_SDEXT_VAR) && !tw_restore_sdext)
-						DataManager::SetValue(TW_RESTORE_SDEXT_VAR, 0);
-					if (DataManager::GetIntValue(TW_RESTORE_SP1_VAR) && !tw_restore_sp1)
-						DataManager::SetValue(TW_RESTORE_SP1_VAR, 0);
-					if (DataManager::GetIntValue(TW_RESTORE_SP2_VAR) && !tw_restore_sp2)
-						DataManager::SetValue(TW_RESTORE_SP2_VAR, 0);
-					if (DataManager::GetIntValue(TW_RESTORE_SP3_VAR) && !tw_restore_sp3)
-						DataManager::SetValue(TW_RESTORE_SP3_VAR, 0);
+					DataManager::SetValue("tw_restore_selected", Restore_List);
+				} else {
+					DataManager::SetValue("tw_restore_selected", Partition_List);
 				}
-				PartitionManager.Run_Restore(folder_path);
-				ui_print("Restore complete!\n");
+				if (!PartitionManager.Run_Restore(folder_path))
+					ret_val = 1;
+				else
+					ui_print("Restore complete!\n");
 			} else if (strcmp(command, "mount") == 0) {
 				// Mount
 				DataManager::SetValue("tw_action_text2", "Mounting");
@@ -493,20 +467,10 @@
 int OpenRecoveryScript::Backup_Command(string Options) {
 	char value1[SCRIPT_COMMAND_SIZE];
 	int line_len, i;
+	string Backup_List;
 
 	strcpy(value1, Options.c_str());
 
-	DataManager::SetValue(TW_BACKUP_SYSTEM_VAR, 0);
-	DataManager::SetValue(TW_BACKUP_DATA_VAR, 0);
-	DataManager::SetValue(TW_BACKUP_CACHE_VAR, 0);
-	DataManager::SetValue(TW_BACKUP_RECOVERY_VAR, 0);
-	DataManager::SetValue(TW_BACKUP_SP1_VAR, 0);
-	DataManager::SetValue(TW_BACKUP_SP2_VAR, 0);
-	DataManager::SetValue(TW_BACKUP_SP3_VAR, 0);
-	DataManager::SetValue(TW_BACKUP_BOOT_VAR, 0);
-	DataManager::SetValue(TW_BACKUP_ANDSEC_VAR, 0);
-	DataManager::SetValue(TW_BACKUP_SDEXT_VAR, 0);
-	DataManager::SetValue(TW_BACKUP_SDEXT_VAR, 0);
 	DataManager::SetValue(TW_USE_COMPRESSION_VAR, 0);
 	DataManager::SetValue(TW_SKIP_MD5_GENERATE_VAR, 0);
 
@@ -514,34 +478,31 @@
 	line_len = Options.size();
 	for (i=0; i<line_len; i++) {
 		if (Options.substr(i, 1) == "S" || Options.substr(i, 1) == "s") {
-			DataManager::SetValue(TW_BACKUP_SYSTEM_VAR, 1);
+			Backup_List += "/system;";
 			ui_print("System\n");
 		} else if (Options.substr(i, 1) == "D" || Options.substr(i, 1) == "d") {
-			DataManager::SetValue(TW_BACKUP_DATA_VAR, 1);
+			Backup_List += "/data;";
 			ui_print("Data\n");
 		} else if (Options.substr(i, 1) == "C" || Options.substr(i, 1) == "c") {
-			DataManager::SetValue(TW_BACKUP_CACHE_VAR, 1);
+			Backup_List += "/cache;";
 			ui_print("Cache\n");
 		} else if (Options.substr(i, 1) == "R" || Options.substr(i, 1) == "r") {
-			DataManager::SetValue(TW_BACKUP_RECOVERY_VAR, 1);
+			Backup_List += "/recovery;";
 			ui_print("Recovery\n");
 		} else if (Options.substr(i, 1) == "1") {
-			DataManager::SetValue(TW_BACKUP_SP1_VAR, 1);
-			ui_print("%s\n", "Special1");
+			ui_print("%s\n", "Special1 -- No Longer Supported...");
 		} else if (Options.substr(i, 1) == "2") {
-			DataManager::SetValue(TW_BACKUP_SP2_VAR, 1);
-			ui_print("%s\n", "Special2");
+			ui_print("%s\n", "Special2 -- No Longer Supported...");
 		} else if (Options.substr(i, 1) == "3") {
-			DataManager::SetValue(TW_BACKUP_SP3_VAR, 1);
-			ui_print("%s\n", "Special3");
+			ui_print("%s\n", "Special3 -- No Longer Supported...");
 		} else if (Options.substr(i, 1) == "B" || Options.substr(i, 1) == "b") {
-			DataManager::SetValue(TW_BACKUP_BOOT_VAR, 1);
+			Backup_List += "/boot;";
 			ui_print("Boot\n");
 		} else if (Options.substr(i, 1) == "A" || Options.substr(i, 1) == "a") {
-			DataManager::SetValue(TW_BACKUP_ANDSEC_VAR, 1);
+			Backup_List += "/and-sec;";
 			ui_print("Android Secure\n");
 		} else if (Options.substr(i, 1) == "E" || Options.substr(i, 1) == "e") {
-			DataManager::SetValue(TW_BACKUP_SDEXT_VAR, 1);
+			Backup_List += "/sd-ext;";
 			ui_print("SD-Ext\n");
 		} else if (Options.substr(i, 1) == "O" || Options.substr(i, 1) == "o") {
 			DataManager::SetValue(TW_USE_COMPRESSION_VAR, 1);
@@ -551,6 +512,7 @@
 			ui_print("MD5 Generation is off\n");
 		}
 	}
+	DataManager::SetValue("tw_backup_list", Backup_List);
 	if (!PartitionManager.Run_Backup()) {
 		LOGE("Backup failed!\n");
 		return 1;
