delete script before running it, otherwise you have potential recovery loops
diff --git a/extendedcommands.c b/extendedcommands.c
index f38ffd0..5185859 100644
--- a/extendedcommands.c
+++ b/extendedcommands.c
@@ -413,20 +413,8 @@
     return 0 == stat(EXTENDEDCOMMAND_SCRIPT, &file_info);
 }
 
-int run_script(char* filename)
+int run_script_from_buffer(char* script_data, int script_len, char* filename)
 {
-    struct stat file_info;
-    if (0 != stat(filename, &file_info)) {
-        printf("Error executing stat on file: %s\n", filename);
-        return 1;
-    }
-    
-    int script_len = file_info.st_size;
-    char* script_data = (char*)malloc(script_len);
-    FILE *file = fopen(filename, "rb");
-    fread(script_data, script_len, 1, file);
-    fclose(file);
-
     /* Parse the script.  Note that the script and parse tree are never freed.
      */
     const AmCommandList *commands = parseAmendScript(script_data, script_len);
@@ -455,6 +443,25 @@
     return 0;
 }
 
+int run_script(char* filename, int delete_file)
+{
+    struct stat file_info;
+    if (0 != stat(filename, &file_info)) {
+        printf("Error executing stat on file: %s\n", filename);
+        return 1;
+    }
+    
+    int script_len = file_info.st_size;
+    char* script_data = (char*)malloc(script_len);
+    FILE *file = fopen(filename, "rb");
+    fread(script_data, script_len, 1, file);
+    fclose(file);
+	if (delete_file)
+    	remove(filename);
+
+	return run_script_from_buffer(script_data, script_len, filename);
+}
+
 int run_and_remove_extendedcommand()
 {
     int i = 0;
@@ -470,10 +477,7 @@
         ui_print("Timed out waiting for SD card... continuing anyways.");
     }
     
-    
-    int ret = run_script(EXTENDEDCOMMAND_SCRIPT);
-    remove(EXTENDEDCOMMAND_SCRIPT);
-    return ret;
+    return run_script(EXTENDEDCOMMAND_SCRIPT, 1);
 }
 
 int amend_main(int argc, char** argv)
@@ -488,5 +492,5 @@
     if (register_update_commands(&ctx)) {
         LOGE("Can't install update commands\n");
     }
-    return run_script(argv[1]);
+    return run_script(argv[1], 0);
 }
diff --git a/mtdutils/mtdutils.h b/mtdutils/mtdutils.h
index bd0ce17..528a5bb 100644
--- a/mtdutils/mtdutils.h
+++ b/mtdutils/mtdutils.h
@@ -52,6 +52,4 @@
 off_t mtd_find_write_start(MtdWriteContext *ctx, off_t pos);
 int mtd_write_close(MtdWriteContext *);
 
-ssize_t mtd_read_raw(MtdReadContext *ctx, char *data, size_t len);
-
 #endif  // MTDUTILS_H_