diff --git a/Android.mk b/Android.mk
index 749059a..b5def18 100644
--- a/Android.mk
+++ b/Android.mk
@@ -26,7 +26,7 @@
 
 LOCAL_FORCE_STATIC_EXECUTABLE := true
 
-RECOVERY_VERSION := ClockworkMod Recovery v1.7.7.3
+RECOVERY_VERSION := ClockworkMod Recovery v1.7.8.0
 LOCAL_CFLAGS := -DRECOVERY_VERSION="$(RECOVERY_VERSION)"
 RECOVERY_API_VERSION := 2
 LOCAL_CFLAGS += -DRECOVERY_API_VERSION=$(RECOVERY_API_VERSION)
diff --git a/commands.c b/commands.c
index 520c143..3114569 100644
--- a/commands.c
+++ b/commands.c
@@ -801,7 +801,7 @@
         return 1;
     }
 
-    return nandroid_restore(argv[0]);
+    return nandroid_restore(argv[0], 1, 1, 1, 1);
 }
 
 static int
diff --git a/extendedcommands.c b/extendedcommands.c
index 5b3f7d4..f3ddd00 100644
--- a/extendedcommands.c
+++ b/extendedcommands.c
@@ -347,7 +347,7 @@
     char* file = choose_file_menu("/sdcard/clockworkmod/backup/", NULL, headers);
     if (file == NULL)
         return;
-    nandroid_restore(file);
+    nandroid_restore(file, 1, 1, 1, 1);
 }
 
 void show_mount_usb_storage_menu()
@@ -568,6 +568,56 @@
     return run_script(argv[1], 0);
 }
 
+void show_nandroid_advanced_restore_menu()
+{
+    if (ensure_root_path_mounted("SDCARD:") != 0) {
+        LOGE ("Can't mount /sdcard\n");
+        return;
+    }
+
+    static char* advancedheaders[] = {  "Choose an image to restore",
+                                "",
+                                "Choose an image to restore",
+                                "first. The next menu will",
+                                "you more options.",
+                                "",
+                                NULL
+    };
+
+    char* file = choose_file_menu("/sdcard/clockworkmod/backup/", NULL, advancedheaders);
+    if (file == NULL)
+        return;
+
+    static char* headers[] = {  "Nandroid Advanced Restore",
+                                "",
+                                NULL
+    };
+
+    static char* list[] = { "Restore boot",
+                            "Restore system",
+                            "Restore data",
+                            "Restore cache",
+                            NULL
+    };
+
+    int chosen_item = get_menu_selection(headers, list, 0);
+    switch (chosen_item)
+    {
+        case 0:
+            nandroid_restore(file, 1, 0, 0, 0);
+            break;
+        case 1:
+            nandroid_restore(file, 0, 1, 0, 0);
+            break;
+        case 2:
+            nandroid_restore(file, 0, 0, 1, 0);
+            break;
+        case 3:
+            nandroid_restore(file, 0, 0, 0, 1);
+            break;
+    }
+}
+
 void show_nandroid_menu()
 {
     static char* headers[] = {  "Nandroid",
@@ -577,6 +627,7 @@
 
     static char* list[] = { "Backup", 
                             "Restore",
+                            "Advanced Restore",
                             NULL
     };
 
@@ -595,6 +646,9 @@
         case 1:
             show_nandroid_restore_menu();
             break;
+        case 2:
+            show_nandroid_advanced_restore_menu();
+            break;
     }
 }
 
diff --git a/nandroid.c b/nandroid.c
index 7201438..5a54f45 100644
--- a/nandroid.c
+++ b/nandroid.c
@@ -174,7 +174,7 @@
     return 0;
 }
 
-int nandroid_restore(char* backup_path)
+int nandroid_restore(char* backup_path, int restore_boot, int restore_system, int restore_data, int restore_cache)
 {
     ui_set_background(BACKGROUND_ICON_INSTALLING);
     ui_show_indeterminate_progress();
@@ -191,20 +191,23 @@
         return print_and_error("MD5 mismatch!\n");
     
     int ret;
-    sprintf(tmp, "flash_image boot %s/boot.img", backup_path);
-    ui_print("Restoring boot image...\n");
-    if (0 != (ret = __system(tmp))) {
-        ui_print("Error while flashing boot image!");
-        return ret;
+    if (restore_boot)
+    {
+        sprintf(tmp, "flash_image boot %s/boot.img", backup_path);
+        ui_print("Restoring boot image...\n");
+        if (0 != (ret = __system(tmp))) {
+            ui_print("Error while flashing boot image!");
+            return ret;
+        }
     }
     
-    if (0 != (ret = nandroid_restore_partition(backup_path, "SYSTEM:", "system")))
+    if (restore_system && 0 != (ret = nandroid_restore_partition(backup_path, "SYSTEM:", "system")))
         return ret;
 
-    if (0 != (ret = nandroid_restore_partition(backup_path, "DATA:", "data")))
+    if (restore_data && 0 != (ret = nandroid_restore_partition(backup_path, "DATA:", "data")))
         return ret;
 
-    if (0 != (ret = nandroid_restore_partition(backup_path, "CACHE:", "cache")))
+    if (restore_cache && 0 != (ret = nandroid_restore_partition(backup_path, "CACHE:", "cache")))
         return ret;
 
     sync();
diff --git a/nandroid.h b/nandroid.h
index 3f6c5a8..2ab0308 100644
--- a/nandroid.h
+++ b/nandroid.h
@@ -3,6 +3,6 @@
 
 int nandroid_main(int argc, char** argv);
 int nandroid_backup(char* backup_path);
-int nandroid_restore(char* backup_path);
+int nandroid_restore(char* backup_path, int restore_boot, int restore_system, int restore_data, int restore_cache);
 
 #endif
\ No newline at end of file
