Index: apps/main_menu.c
===================================================================
--- apps/main_menu.c	(revision 12709)
+++ apps/main_menu.c	(working copy)
@@ -161,10 +161,8 @@
     items[i].desc = ID2P(LANG_INFO);
     items[i++].function = info_menu;
 
-#ifdef HAVE_LCD_CHARCELLS
-    items[i].desc = ID2P(LANG_SHUTDOWN);
-    items[i++].function = do_shutdown;
-#endif
+    items[i].desc = ID2P(LANG_POWER);
+    items[i++].function = power_menu;
     
     m=menu_init( items, i, NULL, NULL, NULL, NULL );
 #ifdef HAVE_LCD_CHARCELLS
Index: apps/recorder/icons.h
===================================================================
--- apps/recorder/icons.h	(revision 12709)
+++ apps/recorder/icons.h	(working copy)
@@ -86,6 +86,7 @@
     Icon_file_view_menu,
     Icon_EQ,
     Icon_Rockbox,
+    Icon_Power,
     Icon6x8Last,
 };
 
Index: apps/recorder/icons.c
===================================================================
--- apps/recorder/icons.c	(revision 12709)
+++ apps/recorder/icons.c	(working copy)
@@ -80,6 +80,7 @@
     { 0x1f, 0x11, 0x7d, 0x46, 0x44, 0x78 }, /* File View Menu */
     { 0x06, 0x7f, 0x06, 0x18, 0x7f, 0x18 }, /* EQ menu */
     { 0x20, 0x70, 0x70, 0x3f, 0x0a, 0x0a }, /* "rockbox" musical note */
+    { 0x08, 0x4c, 0xee, 0xfb, 0x59, 0x08 }, /* Power Menu */
 };
 
 const unsigned char bitmap_icons_7x8[][7] =
Index: apps/lang/english.lang
===================================================================
--- apps/lang/english.lang	(revision 12709)
+++ apps/lang/english.lang	(working copy)
@@ -10723,3 +10723,17 @@
     *: ""
   </voice>
 </phrase>
+<phrase>
+  id: LANG_POWER
+  desc: in root menu
+  user:
+  <source>
+    *: "Power"
+  </source>
+  <dest>
+    *: "Power"
+  </dest>
+  <voice>
+    *: "Power"
+  </voice>
+</phrase>
Index: apps/menus/power_menu.c
===================================================================
--- apps/menus/power_menu.c	(revision 0)
+++ apps/menus/power_menu.c	(revision 0)
@@ -0,0 +1,83 @@
+
+/***************************************************************************
+ *             __________               __   ___.
+ *   Open      \______   \ ____   ____ |  | _\_ |__   _______  ___
+ *   Source     |       _//  _ \_/ ___\|  |/ /| __ \ /  _ \  \/  /
+ *   Jukebox    |    |   (  <_> )  \___|    < | \_\ (  <_> > <  <
+ *   Firmware   |____|_  /\____/ \___  >__|_ \|___  /\____/__/\_ \
+ *                     \/            \/     \/    \/            \/
+ * $Id: $
+ *
+ * Copyright (C) 2007 Jonathan Gordon
+ *
+ * All files in this archive are subject to the GNU General Public License.
+ * See the file COPYING in the source tree root for full license agreement.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ****************************************************************************/
+
+#include <stdbool.h>
+#include <stddef.h>
+#include <limits.h>
+#include <string.h>
+#include "sprintf.h"
+#include "config.h"
+#include "lang.h"
+#include "action.h"
+#include "settings.h"
+#include "menu.h"
+#include "exported_menus.h"
+
+#include "powermgmt.h"
+#include "talk.h"
+
+static void sleep_timer_formatter(char* buffer, int buffer_size, int value,
+                                  const char* unit)
+{
+    int minutes, hours;
+
+    (void) unit;
+
+    if (value) {
+        hours = value / 60;
+        minutes = value - (hours * 60);
+        snprintf(buffer, buffer_size, "%d:%02d", hours, minutes);
+   } else {
+        snprintf(buffer, buffer_size, "%s", str(LANG_OFF));
+    }
+}
+
+static void sleep_timer_set(int minutes)
+{
+    set_sleep_timer(minutes * 60);
+}
+
+static int sleep_timer(void)
+{
+    int minutes = (get_sleep_timer() + 59) / 60; /* round up */
+    return (int)set_int(str(LANG_SLEEP_TIMER), "", UNIT_MIN, &minutes,
+                   &sleep_timer_set, -5, 300, 0, sleep_timer_formatter);
+}
+
+static int do_shutdown(void)
+{
+    sys_poweroff();
+    return 0;
+}
+
+
+MENUITEM_FUNCTION(sleep_timer_call, ID2P(LANG_SLEEP_TIMER), sleep_timer,
+                    NULL, Icon_Menu_setting); /* make it look like a
+                                                                setting to the user */
+
+MENUITEM_FUNCTION(do_shutdown_item, ID2P(LANG_SHUTDOWN), do_shutdown, NULL, Icon_NOICON);
+
+MAKE_MENU(power_options, ID2P(LANG_POWER), 0, Icon_Power,
+          &sleep_timer_call, &do_shutdown_item);
+
+bool power_menu(void)
+{
+    return do_menu(&power_options, NULL);
+}
Index: apps/menus/exported_menus.h
===================================================================
--- apps/menus/exported_menus.h	(revision 12709)
+++ apps/menus/exported_menus.h	(working copy)
@@ -34,8 +34,9 @@
         settings_menu_item,         /* settings_menu.c  */
         playlist_settings,          /* playlist_menu.c  */
         playlist_options,           /* playlist_menu.c  */
-        equalizer_menu,                /* eq_menu.c        */
-        info_menu;                  /* info_menu.c      */
+        equalizer_menu,             /* eq_menu.c        */
+        info_menu,                  /* info_menu.c      */
+        power_options;                 /* power_menu.c     */
 
 #ifdef HAVE_WM8758
 extern const struct menu_item_ex hw_eq_menu; /* eq_menu.c        */
Index: apps/menus/main_menu.c
===================================================================
--- apps/menus/main_menu.c	(revision 12709)
+++ apps/menus/main_menu.c	(working copy)
@@ -342,39 +342,6 @@
 MENUITEM_FUNCTION(show_info_item, ID2P(LANG_INFO_MENU),
                    (menu_function)show_info, NULL, Icon_NOICON);
 
-
-/* sleep Menu */
-static void sleep_timer_formatter(char* buffer, int buffer_size, int value,
-                                  const char* unit)
-{
-    int minutes, hours;
-
-    (void) unit;
-
-    if (value) {
-        hours = value / 60;
-        minutes = value - (hours * 60);
-        snprintf(buffer, buffer_size, "%d:%02d", hours, minutes);
-   } else {
-        snprintf(buffer, buffer_size, "%s", str(LANG_OFF));
-    }
-}
-
-static void sleep_timer_set(int minutes)
-{
-    set_sleep_timer(minutes * 60);
-}
-
-static int sleep_timer(void)
-{
-    int minutes = (get_sleep_timer() + 59) / 60; /* round up */
-    return (int)set_int(str(LANG_SLEEP_TIMER), "", UNIT_MIN, &minutes,
-                   &sleep_timer_set, -5, 300, 0, sleep_timer_formatter);
-}
-
-MENUITEM_FUNCTION(sleep_timer_call, ID2P(LANG_SLEEP_TIMER), sleep_timer,
-                    NULL, Icon_Menu_setting); /* make it look like a 
-                                                                setting to the user */
 MENUITEM_FUNCTION(show_credits_item, ID2P(LANG_VERSION),
                    (menu_function)show_credits, NULL, Icon_NOICON);
 MENUITEM_FUNCTION(show_runtime_item, ID2P(LANG_RUNNING_TIME),
@@ -392,7 +359,7 @@
 
 MAKE_MENU(info_menu, ID2P(LANG_INFO), 0, Icon_Questionmark,
           &show_info_item, &show_credits_item, &show_runtime_item, 
-          &sleep_timer_call, &debug_menu_item
+          &debug_menu_item
 #ifdef SIMULATOR
         ,&simulate_usb_item
 #ifdef ROCKBOX_HAS_LOGF
Index: apps/player/icons.h
===================================================================
--- apps/player/icons.h	(revision 12709)
+++ apps/player/icons.h	(working copy)
@@ -67,6 +67,7 @@
     Icon_file_view_menu,
     Icon_EQ,
     Icon_Rockbox,
+    Icon_Power,
     Icon6x8Last,
 };
 #endif
Index: apps/SOURCES
===================================================================
--- apps/SOURCES	(revision 12709)
+++ apps/SOURCES	(working copy)
@@ -23,6 +23,7 @@
 #endif
 menus/settings_menu.c
 menus/sound_menu.c
+menus/power_menu.c
 misc.c
 onplay.c
 playlist.c
Index: apps/root_menu.c
===================================================================
--- apps/root_menu.c	(revision 12709)
+++ apps/root_menu.c	(working copy)
@@ -321,14 +321,6 @@
 MENUITEM_RETURNVALUE(bookmarks, ID2P(LANG_BOOKMARK_MENU_RECENT_BOOKMARKS),
                         GO_TO_RECENTBMARKS,  item_callback, 
                         Icon_Bookmark);
-#ifdef HAVE_LCD_CHARCELLS
-static int do_shutdown(void)
-{
-    sys_poweroff();
-    return 0;
-}
-MENUITEM_FUNCTION(do_shutdown_item, ID2P(LANG_SHUTDOWN), do_shutdown, NULL, Icon_NOICON);
-#endif
 MAKE_MENU(root_menu_, ID2P(LANG_ROCKBOX_TITLE),
             NULL, Icon_Rockbox,
             &bookmarks, &file_browser, 
@@ -342,11 +334,7 @@
 #if CONFIG_TUNER
             &fm,
 #endif
-            &playlist_options, &rocks_browser,  &info_menu
-
-#ifdef HAVE_LCD_CHARCELLS
-            ,&do_shutdown_item
-#endif
+            &playlist_options, &rocks_browser, &info_menu, &power_options
         );
 
 int item_callback(int action, const struct menu_item_ex *this_item) 
