diff --git a/default_recovery_ui.c b/default_recovery_ui.c
index 6d61581..be8b7e8 100644
--- a/default_recovery_ui.c
+++ b/default_recovery_ui.c
@@ -23,83 +23,25 @@
 char* MENU_HEADERS[] = { NULL };
 
 char* MENU_ITEMS[] = { "reboot system now",
-                       "apply update from sdcard",
+                       "install zip from sdcard",
                        "wipe data/factory reset",
                        "wipe cache partition",
-                       "install zip from sdcard",
                        "backup and restore",
                        "mounts and storage",
                        "advanced",
-                       "power off",
                        NULL };
 
+void device_ui_init(UIParameters* ui_parameters) {
+}
+
 int device_recovery_start() {
     return 0;
 }
 
-int device_toggle_display(volatile char* key_pressed, int key_code) {
-    int alt = key_pressed[KEY_LEFTALT] || key_pressed[KEY_RIGHTALT];
-    if (alt && key_code == KEY_L)
-        return 1;
-    // allow toggling of the display if the correct key is pressed, and the display toggle is allowed or the display is currently off
-    if (ui_get_showing_back_button()) {
-        return 0;
-        //return get_allow_toggle_display() && (key_code == KEY_HOME || key_code == KEY_MENU || key_code == KEY_END);
-    }
-    return get_allow_toggle_display() && (key_code == KEY_HOME || key_code == KEY_MENU || key_code == KEY_POWER || key_code == KEY_END);
-}
-
 int device_reboot_now(volatile char* key_pressed, int key_code) {
     return 0;
 }
 
-int device_handle_key(int key_code, int visible) {
-    if (visible) {
-        switch (key_code) {
-            case KEY_CAPSLOCK:
-            case KEY_DOWN:
-            case KEY_VOLUMEDOWN:
-            case KEY_MENU:
-                return HIGHLIGHT_DOWN;
-
-            case KEY_LEFTSHIFT:
-            case KEY_UP:
-            case KEY_VOLUMEUP:
-            case KEY_HOME:
-                return HIGHLIGHT_UP;
-
-            case KEY_POWER:
-                if (ui_get_showing_back_button()) {
-                    return SELECT_ITEM;
-                }
-                if (!get_allow_toggle_display())
-                    return GO_BACK;
-                break;
-            case KEY_LEFTBRACE:
-            case KEY_ENTER:
-            case BTN_MOUSE:
-            case KEY_CENTER:
-            case KEY_CAMERA:
-            case KEY_F21:
-            case KEY_SEND:
-                return SELECT_ITEM;
-            
-            case KEY_END:
-            case KEY_BACKSPACE:
-            case KEY_SEARCH:
-                if (ui_get_showing_back_button()) {
-                    return SELECT_ITEM;
-                }
-                if (!get_allow_toggle_display())
-                    return GO_BACK;
-            case KEY_BACK:
-                return GO_BACK;
-        }
-    }
-
-    return NO_ACTION;
-}
-
 int device_perform_action(int which) {
     return which;
 }
