--- a/data/theme/cinnamon.css	2012-03-13 19:58:16.000000000 +0000
+++ b/data/theme/cinnamon.css	2012-03-14 18:41:22.097504815 +0000
@@ -919,7 +919,7 @@ StTooltip StLabel {
 .end-session-dialog-subject {
 	font-size: 12pt;
 	font-weight: bold;
-	color: #666666;
+        color: #cccccc;
 	padding-top: 10px;
 	padding-left: 17px;
 	padding-bottom: 30px;
--- a/js/ui/endSessionDialog.js	2012-03-13 16:15:41.000000000 +0000
+++ b/js/ui/endSessionDialog.js	2012-03-14 18:34:32.676510248 +0000
@@ -29,8 +29,9 @@ const Gtk = imports.gi.Gtk;
 const Pango = imports.gi.Pango;
 const St = imports.gi.St;
 const Cinnamon = imports.gi.Cinnamon;
-
-const GnomeSession = imports.misc.gnomeSession
+const UPowerGlib = imports.gi.UPowerGlib;
+const ScreenSaver = imports.misc.screenSaver;
+const GnomeSession = imports.misc.gnomeSession;
 const ModalDialog = imports.ui.modalDialog;
 const Tweener = imports.ui.tweener;
 
@@ -83,7 +84,11 @@ const shutdownDialogContent = {
                         seconds).format(seconds);
     },
     endDescription: _("Powering off the system."),
-    confirmButtons: [{ signal: 'ConfirmedReboot',
+    confirmButtons: [{ signal: 'ConfirmedSuspend',
+                       label:  _("Suspend") },
+                     { signal: 'ConfirmedHibernate',
+                       label:  _("Hibernate") },
+                     { signal: 'ConfirmedReboot',
                        label:  _("Restart") },
                      { signal: 'ConfirmedShutdown',
                        label:  _("Power Off") }],
@@ -251,6 +256,9 @@ EndSessionDialog.prototype = {
     _init: function() {
         ModalDialog.ModalDialog.prototype._init.call(this, { styleClass: 'end-session-dialog' });
 
+        this._upClient = new UPowerGlib.Client();
+        this._screenSaverProxy = new ScreenSaver.ScreenSaverProxy();
+
         this._user = AccountsService.UserManager.get_default().get_user(GLib.get_user_name());
 
         this._secondsLeft = 0;
@@ -427,9 +435,27 @@ EndSessionDialog.prototype = {
         for (let i = 0; i < dialogContent.confirmButtons.length; i++) {
             let signal = dialogContent.confirmButtons[i].signal;
             let label = dialogContent.confirmButtons[i].label;
-            buttons.push({ action: Lang.bind(this, function() {
-                                       this._confirm(signal);
-                                   }),
+            let action = null;
+
+            switch (signal) {
+                case 'ConfirmedSuspend':
+                    if (this._upClient.get_can_suspend())
+                        action = Lang.bind(this, this._doSuspend);
+                    break;
+                case 'ConfirmedHibernate':
+                    if (this._upClient.get_can_hibernate())
+                        action = Lang.bind(this, this._doHibernate);
+                    break;
+                default:
+                    action = Lang.bind(this, function() {
+                        this._confirm(signal);
+                    });
+            }
+
+            if (action == null)
+                continue;
+
+            buttons.push({ action: action,
                            label: label });
         }
 
@@ -459,6 +485,22 @@ EndSessionDialog.prototype = {
                                  signal, '', []);
     },
 
+    _doSuspend: function() {
+        this.cancel(); //cancel auto-shutdown and close dialog
+
+        this._screenSaverProxy.LockRemote(Lang.bind(this, function() {
+            this._upClient.suspend_sync(null);
+        }));
+    },
+
+    _doHibernate: function() {
+        this.cancel(); //cancel auto-shutdown and close dialog
+
+        this._screenSaverProxy.LockRemote(Lang.bind(this, function() {
+            this._upClient.hibernate_sync(null);
+        }));
+    },
+
     _onOpened: function() {
         if (this._inhibitors.length == 0)
             this._startTimer();
--- a/src/main.c	2012-03-07 02:56:24.000000000 +0000
+++ b/src/main.c	2012-03-07 12:56:10.400750499 +0000
@@ -30,7 +30,7 @@
 
 extern GType gnome_cinnamon_plugin_get_type (void);
 
-#define CINNAMON_DBUS_SERVICE "org.Cinnamon"
+#define CINNAMON_DBUS_SERVICE "org.gnome.Shell"
 #define MAGNIFIER_DBUS_SERVICE "org.gnome.Magnifier"
 
 static gboolean is_gdm_mode = FALSE;
