diff --git a/README.md b/README.md
new file mode 100644
index 0000000..c0833f2
--- /dev/null
+++ b/README.md
@@ -0,0 +1,14 @@
+The Recovery Image
+==================
+
+Quick turn-around testing
+-------------------------
+
+    mm -j
+    m ramdisk-nodeps
+    m recoveryimage-nodeps
+    adb reboot bootloader
+
+    # To boot into the new recovery image
+    # without flashing the recovery partition:
+    fastboot boot $ANDROID_PRODUCT_OUT/recovery.img
diff --git a/default_device.cpp b/default_device.cpp
index 97806ac..ed601f6 100644
--- a/default_device.cpp
+++ b/default_device.cpp
@@ -20,19 +20,24 @@
 #include "device.h"
 #include "screen_ui.h"
 
-static const char* HEADERS[] = { "Volume up/down to move highlight;",
-                                 "enter button to select.",
-                                 "",
-                                 NULL };
+static const char* HEADERS[] = {
+    "Volume up/down to move highlight.",
+    "Power button to select.",
+    "",
+    NULL
+};
 
-static const char* ITEMS[] =  {"reboot system now",
-                               "apply update from ADB",
-                               "wipe data/factory reset",
-                               "wipe cache partition",
-                               "reboot to bootloader",
-                               "power down",
-                               "view recovery logs",
-                               NULL };
+static const char* ITEMS[] = {
+    "Reboot system now",
+    "Reboot to bootloader",
+    "Apply update from ADB",
+    "Apply update from SD card",
+    "Wipe data/factory reset",
+    "Wipe cache partition",
+    "View recovery logs",
+    "Power off",
+    NULL
+};
 
 class DefaultDevice : public Device {
   public:
@@ -65,12 +70,13 @@
     BuiltinAction InvokeMenuItem(int menu_position) {
         switch (menu_position) {
           case 0: return REBOOT;
-          case 1: return APPLY_ADB_SIDELOAD;
-          case 2: return WIPE_DATA;
-          case 3: return WIPE_CACHE;
-          case 4: return REBOOT_BOOTLOADER;
-          case 5: return SHUTDOWN;
+          case 1: return REBOOT_BOOTLOADER;
+          case 2: return APPLY_ADB_SIDELOAD;
+          case 3: return APPLY_EXT;
+          case 4: return WIPE_DATA;
+          case 5: return WIPE_CACHE;
           case 6: return READ_RECOVERY_LASTLOG;
+          case 7: return SHUTDOWN;
           default: return NO_ACTION;
         }
     }
diff --git a/recovery.cpp b/recovery.cpp
index 0760613..641f36f 100644
--- a/recovery.cpp
+++ b/recovery.cpp
@@ -512,7 +512,7 @@
 
     const char** new_headers = (const char**)malloc((count+1) * sizeof(char*));
     const char** h = new_headers;
-    *(h++) = "Android system recovery <" EXPAND(RECOVERY_API_VERSION) "e>";
+    *(h++) = "Android system recovery (API " EXPAND(RECOVERY_API_VERSION) ")";
     *(h++) = recovery_version;
     *(h++) = "";
     for (p = headers; *p; ++p, ++h) *h = *p;
@@ -877,7 +877,11 @@
                 break;
 
             case Device::APPLY_EXT: {
-                ensure_path_mounted(SDCARD_ROOT);
+                if (ensure_path_mounted(SDCARD_ROOT) != 0) {
+                    ui->Print("\n-- Couldn't mount %s.\n", SDCARD_ROOT);
+                    break;
+                }
+
                 char* path = browse_directory(SDCARD_ROOT, device);
                 if (path == NULL) {
                     ui->Print("\n-- No package file selected.\n", path);
@@ -910,7 +914,7 @@
                     } else if (!ui->IsTextVisible()) {
                         return Device::NO_ACTION;  // reboot if logs aren't visible
                     } else {
-                        ui->Print("\nInstall from sdcard complete.\n");
+                        ui->Print("\nInstall from SD card complete.\n");
                     }
                 }
                 break;
