diff --git a/gui/gui.cpp b/gui/gui.cpp
index e128337..c431d8f 100644
--- a/gui/gui.cpp
+++ b/gui/gui.cpp
@@ -60,6 +60,7 @@
 static int gGuiConsoleTerminate = 0;
 static int gForceRender = 0;
 static int gNoAnimation = 1;
+static int gGuiInputRunning = 0;
 
 // Needed by pages.cpp too
 int gGuiRunning = 0;
@@ -391,6 +392,56 @@
     return 0;
 }
 
+static int runPage(const char* page_name)
+{
+    gui_changePage(page_name);
+
+	// Raise the curtain
+    if (gCurtain != NULL)
+    {
+        gr_surface surface;
+
+        PageManager::Render();
+        gr_get_surface(&surface);
+        curtainRaise(surface);
+        gr_free_surface(surface);
+    }
+
+    gGuiRunning = 1;
+
+    DataManager::SetValue("tw_loaded", 1);
+
+    for (;;)
+    {
+        loopTimer();
+
+        if (!gForceRender)
+        {
+            int ret;
+
+            ret = PageManager::Update();
+            if (ret > 1)
+                PageManager::Render();
+
+            if (ret > 0)
+                flip();
+        }
+        else
+        {
+            gForceRender = 0;
+            PageManager::Render();
+            flip();
+        }
+		if (DataManager::GetIntValue("tw_page_done") != 0) {
+			gui_changePage("main");
+			break;
+		}
+    }
+
+    gGuiRunning = 0;
+    return 0;
+}
+
 int gui_forceRender(void)
 {
     gForceRender = 1;
@@ -537,13 +588,36 @@
     // Set the default package
     PageManager::SelectPackage("TWRP");
 
-    // Start by spinning off an input handler.
-    pthread_t t;
-    pthread_create(&t, NULL, input_thread, NULL);
+    if (!gGuiInputRunning) {
+		// Start by spinning off an input handler.
+		pthread_t t;
+		pthread_create(&t, NULL, input_thread, NULL);
+		gGuiInputRunning = 1;
+	}
 
     return runPages();
 }
 
+extern "C" int gui_startPage(const char* page_name)
+{
+    if (!gGuiInitialized)   return -1;
+
+    gGuiConsoleTerminate = 1;
+    while (gGuiConsoleRunning)  loopTimer();
+
+    // Set the default package
+    PageManager::SelectPackage("TWRP");
+
+    if (!gGuiInputRunning) {
+		// Start by spinning off an input handler.
+		pthread_t t;
+		pthread_create(&t, NULL, input_thread, NULL);
+		gGuiInputRunning = 1;
+	}
+
+    return runPage(page_name);
+}
+
 static void *console_thread(void *cookie)
 {
     PageManager::SwitchToConsole();
