diff --git a/extendedcommands.c b/extendedcommands.c
index f2f1d6c..a96ce27 100644
--- a/extendedcommands.c
+++ b/extendedcommands.c
@@ -460,26 +460,8 @@
     // device may simply be a name, like "system"
     if (device[0] != '/')
         return erase_partition(device, fs_type);
-    
-    if (strcmp("ext3", fs_type) == 0) {
-        LOGI("Formatting ext3 device.\n");
-        if (0 != ensure_path_unmounted(path)) {
-            LOGE("Error while unmounting %s.\n", path);
-            return -12;
-        }
-        return format_ext3_device(device);
-    }
-    
-    if (strcmp("ext2", fs_type) == 0) {
-        LOGI("Formatting ext2 device.\n");
-        if (0 != ensure_path_unmounted(path)) {
-            LOGE("Error while unmounting %s.\n", path);
-            return -12;
-        }
-        return format_ext2_device(device);
-    }
 
-    // if this is SDEXT:, don't worry about it.
+    // if this is SDEXT:, don't worry about it if it does not exist.
     if (0 == strcmp(path, "/sd-ext"))
     {
         struct stat st;
@@ -491,6 +473,26 @@
         }
     }
 
+    if (NULL != fs_type) {
+        if (strcmp("ext3", fs_type) == 0) {
+            LOGI("Formatting ext3 device.\n");
+            if (0 != ensure_path_unmounted(path)) {
+                LOGE("Error while unmounting %s.\n", path);
+                return -12;
+            }
+            return format_ext3_device(device);
+        }
+
+        if (strcmp("ext2", fs_type) == 0) {
+            LOGI("Formatting ext2 device.\n");
+            if (0 != ensure_path_unmounted(path)) {
+                LOGE("Error while unmounting %s.\n", path);
+                return -12;
+            }
+            return format_ext2_device(device);
+        }
+    }
+
     if (0 != ensure_path_mounted(path))
     {
         ui_print("Error mounting %s!\n", path);
