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;
     }
 }
 
