diff --git a/src/Makefile.am b/src/Makefile.am
index 93a9470..34b7212 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -11,8 +11,6 @@ gnome_nibbles_SOURCES = \
 	warpmanager.c \
 	games-controls.h \
 	games-controls.c \
-	games-fullscreen-action.h \
-	games-fullscreen-action.c \
 	games-score.h			\
 	games-score.c			\
 	games-scores.c			\
diff --git a/src/games-fullscreen-action.c b/src/games-fullscreen-action.c
deleted file mode 100644
index abbc615..0000000
--- a/src/games-fullscreen-action.c
+++ /dev/null
@@ -1,227 +0,0 @@
-/*
- * Copyright © 2010 Robert Ancell
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * Authors:
- *      Robert Ancell <robert.ancell@gmail.com>
- */
-
-#include <glib/gi18n.h>
-
-#include "games-fullscreen-action.h"
-
-enum {
-    PROP_0,
-    PROP_WINDOW,
-    PROP_IS_FULLSCREEN,
-    PROP_VISIBLE_POLICY,
-};
-
-struct GamesFullscreenActionPrivate
-{
-    GtkWindow *window;
-    gboolean is_fullscreen;
-    GamesFullscreenActionVisiblePolicy visible_policy;
-};
-
-G_DEFINE_TYPE (GamesFullscreenAction, games_fullscreen_action, GTK_TYPE_ACTION);
-
-GamesFullscreenAction *
-games_fullscreen_action_new (const gchar *name, GtkWindow *window)
-{
-    return g_object_new (GAMES_TYPE_FULLSCREEN_ACTION, "name", name, "window", window, NULL);
-}
-
-static void
-update_action (GamesFullscreenAction *action)
-{
-    gboolean visible = TRUE;
-  
-    if (action->priv->is_fullscreen) {
-        gtk_action_set_stock_id (GTK_ACTION (action), GTK_STOCK_LEAVE_FULLSCREEN);
-        if (action->priv->visible_policy == GAMES_FULLSCREEN_ACTION_VISIBLE_ON_UNFULLSCREEN)
-            visible = FALSE;
-    }
-    else {
-        if (action->priv->visible_policy == GAMES_FULLSCREEN_ACTION_VISIBLE_ON_FULLSCREEN)
-            visible = FALSE;
-        gtk_action_set_stock_id (GTK_ACTION (action), GTK_STOCK_FULLSCREEN);
-    }
-
-    gtk_action_set_visible (GTK_ACTION (action), visible);
-}
-
-void
-games_fullscreen_action_set_visible_policy (GamesFullscreenAction *action, GamesFullscreenActionVisiblePolicy visible_policy)
-{
-    g_return_if_fail (GAMES_IS_FULLSCREEN_ACTION (action));
-
-    action->priv->visible_policy = visible_policy;
-    update_action (action);
-}
-
-GamesFullscreenActionVisiblePolicy
-games_fullscreen_action_get_visible_policy (GamesFullscreenAction *action)
-{
-    g_return_val_if_fail (GAMES_IS_FULLSCREEN_ACTION (action), 0);
-    return action->priv->visible_policy;
-}
-
-void
-games_fullscreen_action_set_is_fullscreen (GamesFullscreenAction *action, gboolean is_fullscreen)
-{
-    g_return_if_fail (GAMES_IS_FULLSCREEN_ACTION (action));  
-
-    if (is_fullscreen)
-        gtk_window_fullscreen (action->priv->window);
-    else
-        gtk_window_unfullscreen (action->priv->window);
-}
-
-gboolean
-games_fullscreen_action_get_is_fullscreen (GamesFullscreenAction *action)
-{
-    g_return_val_if_fail (GAMES_IS_FULLSCREEN_ACTION (action), FALSE);
-    return action->priv->is_fullscreen;
-}
-
-static gboolean
-window_state_event_cb (GtkWidget *widget,
-                       GdkEventWindowState *event,
-                       GamesFullscreenAction *action)
-{
-  gboolean is_fullscreen;
-
-  if ((event->changed_mask & GDK_WINDOW_STATE_FULLSCREEN) == 0)
-      return FALSE;
-
-  is_fullscreen = (event->new_window_state & GDK_WINDOW_STATE_FULLSCREEN) != 0;  
-  if ((action->priv->is_fullscreen && is_fullscreen) || (!action->priv->is_fullscreen && !is_fullscreen))
-      return FALSE;
-
-  action->priv->is_fullscreen = is_fullscreen;
-
-  update_action (action);
-
-  g_object_notify (G_OBJECT (action), "is-fullscreen");
-
-  return FALSE;
-}
-
-static void
-games_fullscreen_action_set_property(GObject      *object,
-                                     guint         prop_id,
-                                     const GValue *value,
-                                     GParamSpec   *pspec)
-{
-    GamesFullscreenAction *self;
-
-    self = GAMES_FULLSCREEN_ACTION (object);
-
-    switch (prop_id) {
-    case PROP_WINDOW:
-        self->priv->window = g_object_ref (g_value_get_object (value));
-        g_signal_connect (self->priv->window, "window-state-event",
-                          G_CALLBACK (window_state_event_cb), self);
-        break;
-    case PROP_IS_FULLSCREEN:
-        games_fullscreen_action_set_is_fullscreen (self, g_value_get_boolean (value));
-        break;
-    case PROP_VISIBLE_POLICY:
-        games_fullscreen_action_set_visible_policy (self, g_value_get_int (value));
-        break;
-    default:
-        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-        break;
-    }
-}
-
-static void
-games_fullscreen_action_get_property(GObject    *object,
-                                     guint       prop_id,
-                                     GValue     *value,
-                                     GParamSpec *pspec)
-{
-    GamesFullscreenAction *self;
-
-    self = GAMES_FULLSCREEN_ACTION (object);
-
-    switch (prop_id) {
-    case PROP_WINDOW:
-        g_value_set_object (value, self->priv->window);
-        break;
-    case PROP_IS_FULLSCREEN:
-        g_value_set_boolean (value, games_fullscreen_action_get_is_fullscreen (self));
-        break;
-    case PROP_VISIBLE_POLICY:
-        g_value_set_int (value, games_fullscreen_action_get_visible_policy (self));
-        break;
-    default:
-        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-        break;
-    }
-}
-
-static void
-games_fullscreen_action_init (GamesFullscreenAction *self)
-{
-    self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, GAMES_TYPE_FULLSCREEN_ACTION, GamesFullscreenActionPrivate);
-    update_action (self);
-}
-
-static void
-games_fullscreen_action_activate (GtkAction *action)
-{
-    GamesFullscreenAction *self = GAMES_FULLSCREEN_ACTION (action);
-    games_fullscreen_action_set_is_fullscreen (self, !self->priv->is_fullscreen);
-}
-
-static void
-games_fullscreen_action_class_init (GamesFullscreenActionClass *klass)
-{
-    GObjectClass *object_class = G_OBJECT_CLASS (klass);
-    GtkActionClass *action_class = GTK_ACTION_CLASS (klass);
-
-    action_class->activate = games_fullscreen_action_activate;
-    object_class->set_property = games_fullscreen_action_set_property;
-    object_class->get_property = games_fullscreen_action_get_property;
-
-    g_object_class_install_property(object_class,
-                                    PROP_WINDOW,
-                                    g_param_spec_object("window",
-                                                        "window",
-                                                        "The window being controlled",
-                                                        GTK_TYPE_WINDOW,
-                                                        G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
-
-    g_object_class_install_property(object_class,
-                                    PROP_IS_FULLSCREEN,
-                                    g_param_spec_boolean("is-fullscreen",
-                                                         "is-fullscreen",
-                                                         "True if game is fullscreen",
-                                                         FALSE,
-                                                         G_PARAM_READWRITE));
-
-    g_object_class_install_property(object_class,
-                                    PROP_VISIBLE_POLICY,
-                                    g_param_spec_boolean("visible-policy",
-                                                         "visible-policy",
-                                                         "Policy when to show this action",
-                                                         GAMES_FULLSCREEN_ACTION_VISIBLE_ALWAYS,
-                                                         G_PARAM_READWRITE));
-
-    g_type_class_add_private (klass, sizeof (GamesFullscreenActionPrivate));
-}
diff --git a/src/games-fullscreen-action.h b/src/games-fullscreen-action.h
deleted file mode 100644
index eef5e3d..0000000
--- a/src/games-fullscreen-action.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright © 2010 Robert Ancell
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * Authors:
- *      Robert Ancell <robert.ancell@gmail.com>
- */
-
-#ifndef __GAMES_FULLSCREEN_ACTION_H__
-#define __GAMES_FULLSCREEN_ACTION_H__
-
-#include <gtk/gtk.h>
-
-G_BEGIN_DECLS
-
-#define GAMES_TYPE_FULLSCREEN_ACTION    (games_fullscreen_action_get_type ())
-#define GAMES_FULLSCREEN_ACTION(obj)    (G_TYPE_CHECK_INSTANCE_CAST ((obj), GAMES_TYPE_FULLSCREEN_ACTION, GamesFullscreenAction))
-#define GAMES_IS_FULLSCREEN_ACTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GAMES_TYPE_FULLSCREEN_ACTION))
-
-typedef struct GamesFullscreenActionPrivate GamesFullscreenActionPrivate;
-
-typedef struct
-{
-  GtkAction parent_instance;
-  /*< private >*/
-  GamesFullscreenActionPrivate *priv;
-} GamesFullscreenAction;
-
-typedef struct
-{
-  GtkActionClass parent_class;
-} GamesFullscreenActionClass;
-
-typedef enum
-{
-  GAMES_FULLSCREEN_ACTION_VISIBLE_ALWAYS,
-  GAMES_FULLSCREEN_ACTION_VISIBLE_ON_FULLSCREEN,
-  GAMES_FULLSCREEN_ACTION_VISIBLE_ON_UNFULLSCREEN
-} GamesFullscreenActionVisiblePolicy;
-
-GType                              games_fullscreen_action_get_type           (void);
-GamesFullscreenAction             *games_fullscreen_action_new                (const gchar *name,
-                                                                               GtkWindow *window);
-void                               games_fullscreen_action_set_visible_policy (GamesFullscreenAction *action,
-                                                                               GamesFullscreenActionVisiblePolicy visible_policy);
-GamesFullscreenActionVisiblePolicy games_fullscreen_action_get_visible_policy (GamesFullscreenAction *action);
-void                               games_fullscreen_action_set_is_fullscreen  (GamesFullscreenAction *action,
-                                                                               gboolean is_fullscreen);
-gboolean                           games_fullscreen_action_get_is_fullscreen  (GamesFullscreenAction *action);
-
-G_END_DECLS
-
-#endif /* __GAMES_FULLSCREEN_ACTION_H__ */
diff --git a/src/main.c b/src/main.c
index bbe95a8..22d1d22 100644
--- a/src/main.c
+++ b/src/main.c
@@ -39,7 +39,6 @@
 #include "preferences.h"
 #include "scoreboard.h"
 #include "warp.h"
-#include "games-fullscreen-action.h"
 #include "games-scores.h"
 
 #include <clutter-gtk/clutter-gtk.h>
@@ -94,14 +93,7 @@ gboolean is_paused;
 
 static gint add_bonus_cb (gpointer data);
 
-static gint end_game_cb (GtkAction * action, gpointer data);
-
-static GtkAction *new_game_action;
-GtkAction *pause_action;
-static GtkAction *end_game_action;
 static GtkAction *preferences_action;
-static GtkAction *scores_action;
-static GtkAction *fullscreen_action;
 
 static void
 hide_cursor (void)
@@ -138,13 +130,144 @@ delete_cb (GtkWidget * widget, gpointer data)
 }
 
 static void
-quit_cb (GObject * object, gpointer data)
+activate_toggle (GSimpleAction *action,
+                 GVariant      *parameter,
+                 gpointer       user_data)
+{
+  GVariant *state;
+
+  state = g_action_get_state (G_ACTION (action));
+  g_action_change_state (G_ACTION (action), g_variant_new_boolean (!g_variant_get_boolean (state)));
+  g_variant_unref (state);
+}
+
+static void
+change_fullscreen_state (GSimpleAction *action,
+                         GVariant      *state,
+                         gpointer       user_data)
+{
+  if (g_variant_get_boolean (state))
+    gtk_window_fullscreen (user_data);
+  else
+    gtk_window_unfullscreen (user_data);
+
+  g_simple_action_set_state (action, state);
+}
+
+static void
+change_pause_state (GSimpleAction *action,
+                         GVariant      *state,
+                         gpointer       user_data)
+{
+  if (g_variant_get_boolean (state))
+  {
+    is_paused = TRUE;
+    //dummy_id = g_timeout_add (500, (GSourceFunc) new_game_2_cb, NULL);
+      if (main_id) {
+        g_source_remove (main_id);
+        main_id = 0;
+      }
+      if (keyboard_id) {
+        g_signal_handler_disconnect (G_OBJECT (stage), keyboard_id);
+        keyboard_id = 0;
+      }
+      if (add_bonus_id) {
+        g_source_remove (add_bonus_id);
+        add_bonus_id = 0;
+      }
+
+  }
+
+    
+  else
+  {
+    is_paused = FALSE;
+    //dummy_id = g_timeout_add (500, (GSourceFunc) new_game_2_cb, NULL);
+  }
+
+/*Old CB *
+  if (!is_paused) {  //If it's not currently paused, pause the game
+    is_paused = TRUE;
+    gtk_action_set_label (action, ("_Resume"));
+    if (main_id || restart_id || dummy_id) {
+      if (main_id) {
+        g_source_remove (main_id);
+        main_id = 0;
+      }
+      if (keyboard_id) {
+        g_signal_handler_disconnect (G_OBJECT (stage), keyboard_id);
+        keyboard_id = 0;
+      }
+      if (add_bonus_id) {
+        g_source_remove (add_bonus_id);
+        add_bonus_id = 0;
+      }
+    }
+  }
+  else {  //Resume the game
+    is_paused = FALSE;
+    gtk_action_set_label (action, ("_Pause"));
+    dummy_id = g_timeout_add (500, (GSourceFunc) new_game_2_cb, NULL);
+  }
+/Old CB */
+
+
+  g_simple_action_set_state (action, state);
+}
+
+
+static void
+newgame_activated (GSimpleAction *action,
+                GVariant      *parameter,
+                gpointer       user_data)
+{
+  new_game ();
+}
+
+static void
+endgame_activated (GSimpleAction *action,
+                GVariant      *parameter,
+                gpointer       user_data)
+{
+  end_game ();
+}
+
+
+static void
+scores_activated (GSimpleAction *action,
+                GVariant      *parameter,
+                gpointer       user_data)
+{
+  gnibbles_show_scores (window, 0);
+}
+
+static void
+preferences_activated (GSimpleAction *action,
+                GVariant      *parameter,
+                gpointer       user_data)
 {
-  gtk_widget_destroy (window);
+  gnibbles_preferences_cb (window, user_data);
+}
+
+static void
+help_activated (GSimpleAction *action,
+                GVariant      *parameter,
+                gpointer       user_data)
+{
+  GError *error = NULL;
+
+  gtk_show_uri (gtk_widget_get_screen (GTK_WIDGET (window)), "help:gnome-nibbles", gtk_get_current_event_time (), &error);
+  if (error)
+    g_warning ("Failed to show help: %s", error->message);
+  g_clear_error (&error);
 }
 
+
+
 static void
-about_cb (GtkAction * action, gpointer data)
+about_activated (GSimpleAction *action,
+                 GVariant      *parameter,
+                 gpointer       user_data)
 {
   const gchar *authors[] = { "Sean MacIsaac", "Ian Peters", "Andreas Røsdal",
                              "Guillaume Beland", NULL };
@@ -167,6 +290,28 @@ about_cb (GtkAction * action, gpointer data)
        NULL);
 }
 
+static void
+quit_activated (GSimpleAction *action,
+                GVariant      *parameter,
+                gpointer       user_data)
+{
+  GApplication *app = user_data;
+
+  g_application_quit (app);
+}
+
+static GActionEntry app_entries[] = {
+  { "newgame", newgame_activated, NULL, NULL, NULL },
+  { "endgame", endgame_activated, NULL, NULL, NULL },
+  { "pause", activate_toggle, NULL, "false", change_pause_state },
+  { "fullscreen", activate_toggle, NULL, "false", change_fullscreen_state }, 
+  { "preferences", preferences_activated, NULL, NULL, NULL },
+  { "scores", scores_activated, NULL, NULL, NULL },
+  { "help", help_activated, NULL, NULL, NULL },
+  { "about", about_activated, NULL, NULL, NULL },
+  { "quit", quit_activated, NULL, NULL, NULL },
+};
+
 static gboolean
 key_press_cb (ClutterActor *actor, ClutterEvent *event, gpointer data)
 {
@@ -249,10 +394,7 @@ gboolean
 new_game (void)
 {
   int i;
-  gtk_action_set_sensitive (pause_action, TRUE);
-  gtk_action_set_sensitive (end_game_action, TRUE);
-  gtk_action_set_sensitive (new_game_action, FALSE);
-  gtk_action_set_sensitive (preferences_action, FALSE);
+  //Used to set sensitivity for game being active here
 
   if (game_running ()) {
     main_id = 0;
@@ -294,46 +436,6 @@ new_game (void)
   return TRUE;
 }
 
-static void
-new_game_cb (GtkAction * action, gpointer data)
-{
-  new_game ();
-}
-
-static void
-pause_game_cb (GtkAction * action, gpointer data)
-{
-  if (!is_paused) {  //If it's not currently paused, pause the game
-    is_paused = TRUE;
-    gtk_action_set_label (action, ("_Resume"));
-    if (main_id || restart_id || dummy_id) {
-      if (main_id) {
-        g_source_remove (main_id);
-        main_id = 0;
-      }
-      if (keyboard_id) {
-        g_signal_handler_disconnect (G_OBJECT (stage), keyboard_id);
-        keyboard_id = 0;
-      }
-      if (add_bonus_id) {
-        g_source_remove (add_bonus_id);
-        add_bonus_id = 0;
-      }
-    }
-  }
-  else {  //Resume the game
-    is_paused = FALSE;
-    gtk_action_set_label (action, ("_Pause"));
-    dummy_id = g_timeout_add (500, (GSourceFunc) new_game_2_cb, NULL);
-  }
-}
-
-static void
-show_scores_cb (GtkAction * action, gpointer data)
-{
-  gnibbles_show_scores (window, 0);
-}
-
 void
 end_game (void)
 {
@@ -364,22 +466,12 @@ end_game (void)
 
   animate_end_game ();
 
-  gtk_action_set_sensitive (pause_action, FALSE);
-  gtk_action_set_sensitive (end_game_action, FALSE);
-  gtk_action_set_sensitive (new_game_action, TRUE);
-  gtk_action_set_sensitive (preferences_action, TRUE);
+  //Used to set sensitivity for game not being played here.
 
   is_paused = FALSE;
 }
 
 static gboolean
-end_game_cb (GtkAction * action, gpointer data)
-{
-  end_game ();
-  return FALSE;
-}
-
-static gboolean
 add_bonus_cb (gpointer data)
 {
   gnibbles_board_level_add_bonus (board, 0);
@@ -534,6 +626,7 @@ main_loop (gpointer data)
   return TRUE;
 }
 
+//TODO: This should be resurrected
 static gboolean
 show_cursor_cb (GtkWidget * widget, GdkEventMotion *event, gpointer data)
 {
@@ -542,100 +635,80 @@ show_cursor_cb (GtkWidget * widget, GdkEventMotion *event, gpointer data)
 }
 
 static void
-help_cb (GtkAction * action, gpointer data)
-{
-  GError *error = NULL;
-
-  gtk_show_uri (gtk_widget_get_screen (GTK_WIDGET (window)), "help:gnome-nibbles", gtk_get_current_event_time (), &error);
-  if (error)
-    g_warning ("Failed to show help: %s", error->message);
-  g_clear_error (&error);
-}
-
-static const GtkActionEntry action_entry[] = {
-  {"GameMenu", NULL, N_("_Game")},
-  {"ViewMenu", NULL, N_("_View")},
-  {"SettingsMenu", NULL, N_("_Settings")},
-  {"HelpMenu", NULL, N_("_Help")},
-  {"NewGame", NULL, N_("_New Game"), NULL, NULL,
-   G_CALLBACK (new_game_cb)},
-  {"EndGame", NULL, N_("_End Game"), NULL, NULL,
-   G_CALLBACK (end_game_cb)},
-  {"Pause", NULL, N_("_Pause"), NULL, NULL,
-   G_CALLBACK (pause_game_cb)},
-  {"Scores", NULL, N_("_Scores"), NULL, NULL,
-   G_CALLBACK (show_scores_cb)},
-  {"Quit", NULL, N_("_Quit"), NULL, NULL, G_CALLBACK (quit_cb)},
-  {"Preferences", NULL, N_("_Preferences"), NULL, NULL,
-   G_CALLBACK (gnibbles_preferences_cb)},
-  {"Contents", NULL, N_("_Contents"), NULL, NULL, G_CALLBACK (help_cb)},
-  {"About", NULL, N_("_About"), NULL, NULL, G_CALLBACK (about_cb)}
-};
-
-static const char ui_description[] =
-  "<ui>"
-  "  <menubar name='MainMenu'>"
-  "    <menu action='GameMenu'>"
-  "      <menuitem action='NewGame'/>"
-  "      <menuitem action='EndGame'/>"
-  "      <separator/>"
-  "      <menuitem action='Pause'/>"
-  "      <separator/>"
-  "      <menuitem action='Scores'/>"
-  "      <separator/>"
-  "      <menuitem action='Quit'/>"
-  "    </menu>"
-  "    <menu action='ViewMenu'>"
-  "      <menuitem action='Fullscreen'/>"
-  "    </menu>"
-  "    <menu action='SettingsMenu'>"
-  "      <menuitem action='Preferences'/>"
-  "    </menu>"
-  "    <menu action='HelpMenu'>"
-  "      <menuitem action='Contents'/>"
-  "      <menuitem action='About'/>"
-  "    </menu>"
-  "  </menubar>"
-  "</ui>";
-
-static void
-create_menus (GtkUIManager * ui_manager)
+activate (GtkApplication* app,
+          gpointer        user_data)
 {
-  GtkActionGroup *action_group;
-
-  action_group = gtk_action_group_new ("MenuActions");
-
-  gtk_action_group_set_translation_domain (action_group, GETTEXT_PACKAGE);
-  gtk_action_group_add_actions (action_group, action_entry,
-                                G_N_ELEMENTS (action_entry), window);
-
-  gtk_ui_manager_insert_action_group (ui_manager, action_group, 0);
-  gtk_ui_manager_add_ui_from_string (ui_manager, ui_description, -1, NULL);
+  GtkWidget *window;
+  GtkWidget *label;
 
-  new_game_action = gtk_action_group_get_action (action_group, "NewGame");
-  scores_action = gtk_action_group_get_action (action_group, "Scores");
-  end_game_action = gtk_action_group_get_action (action_group, "EndGame");
-  pause_action = gtk_action_group_get_action (action_group, "Pause");
-
-  preferences_action = gtk_action_group_get_action (action_group,
-                                                    "Preferences");
-  fullscreen_action = GTK_ACTION (games_fullscreen_action_new ("Fullscreen", GTK_WINDOW(window)));
-  gtk_action_group_add_action_with_accel (action_group, fullscreen_action, NULL);
+  GtkWidget *vbox;
+  ClutterColor stage_color = {0x00,0x00,0x00,0xff};
 
-}
+  GtkBuilder *builder;
+
+  window = gtk_application_window_new (app);
+
+  g_action_map_add_action_entries (G_ACTION_MAP (app), app_entries, G_N_ELEMENTS (app_entries), app);
+
+  builder = gtk_builder_new ();
+
+   gtk_builder_add_from_string (builder,
+                               "<interface>"
+                               "  <menu id='app-menu'>"
+                               "    <section>"
+                               "      <item>"
+                               "        <attribute name='label' translatable='yes'>_New Game</attribute>"
+                               "        <attribute name='action'>app.newgame</attribute>"
+                               "      </item>"
+                               "      <item>"
+                               "        <attribute name='label' translatable='yes'>_End Game</attribute>"
+                               "        <attribute name='action'>app.endgame</attribute>"
+                               "      </item>"
+                               "    </section>"
+                               "    <section>"
+                               "      <item>"
+                               "        <attribute name='label' translatable='yes'>_Pause</attribute>"
+                               "        <attribute name='action'>app.pause</attribute>"
+                               "      </item>"
+                               "      <item>"
+                               "        <attribute name='label' translatable='yes'>_Fullscreen</attribute>"
+                               "        <attribute name='action'>app.fullscreen</attribute>"
+                               "        <attribute name='accel'>F11</attribute>"
+                               "      </item>"
+                               "      <item>"
+                               "        <attribute name='label' translatable='yes'>_Preferences</attribute>"
+                               "        <attribute name='action'>app.preferences</attribute>"
+                               "      </item>"
+                               "      <item>"
+                               "        <attribute name='label' translatable='yes'>_Scores</attribute>"
+                               "        <attribute name='action'>app.scores</attribute>"
+                               "      </item>"
+                               "    </section>"
+                               "    <section>"
+                               "      <item>"
+                               "        <attribute name='label' translatable='yes'>_Help</attribute>"
+                               "        <attribute name='action'>app.help</attribute>"
+                               "      </item>"
+                               "      <item>"
+                               "        <attribute name='label' translatable='yes'>_About</attribute>"
+                               "        <attribute name='action'>app.about</attribute>"
+                               "      </item>"
+                               "    </section>"
+                               "    <section>"
+                               "      <item>"
+                               "        <attribute name='label' translatable='yes'>_Quit</attribute>"
+                               "        <attribute name='action'>app.quit</attribute>"
+                               "        <attribute name='accel'>&lt;Primary&gt;q</attribute>"
+                               "      </item>"
+                               "    </section>"
+                               "  </menu>"
+                               "</interface>", -1, NULL); 
+
+  gtk_application_set_app_menu (GTK_APPLICATION (app), G_MENU_MODEL (gtk_builder_get_object (builder, "app-menu")));
 
-static void
-setup_window (void)
-{
-  GtkWidget *vbox;
-  GtkWidget *menubar;
-  GtkWidget *packing;
 
-  GtkUIManager *ui_manager;
-  GtkAccelGroup *accel_group;
-  ClutterColor stage_color = {0x00,0x00,0x00,0xff};
+  vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
 
-  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
   clutter_widget = gtk_clutter_embed_new ();
   stage = gtk_clutter_embed_get_stage (GTK_CLUTTER_EMBED (clutter_widget));
 
@@ -644,62 +717,23 @@ setup_window (void)
   clutter_actor_set_size (CLUTTER_ACTOR (stage),
                           properties->tilesize * BOARDWIDTH,
                           properties->tilesize * BOARDHEIGHT);
-  clutter_stage_set_user_resizable (CLUTTER_STAGE (stage), FALSE);
-
-  board = gnibbles_board_new ();
-
-  gtk_window_set_title (GTK_WINDOW (window), _("Nibbles"));
+  clutter_stage_set_user_resizable (CLUTTER_STAGE (stage), TRUE);
 
-  gtk_window_set_default_size (GTK_WINDOW (window),
-                               DEFAULT_WIDTH, DEFAULT_HEIGHT);
-  //games_conf_add_window (GTK_WINDOW (window), KEY_PREFERENCES_GROUP);
-
-  g_signal_connect (G_OBJECT (window), "destroy",
-                    G_CALLBACK (gtk_main_quit), NULL);
-  g_signal_connect (G_OBJECT (window), "delete_event",
-                    G_CALLBACK (delete_cb), NULL);
-
-  gtk_widget_realize (window);
-
-  vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
-
-  ui_manager = gtk_ui_manager_new ();
-  create_menus (ui_manager);
-
-  accel_group = gtk_ui_manager_get_accel_group (ui_manager);
-  gtk_window_add_accel_group (GTK_WINDOW (window), accel_group);
-
-  menubar = gtk_ui_manager_get_widget (ui_manager, "/MainMenu");
-
-  gtk_box_pack_start (GTK_BOX (vbox), menubar, FALSE, FALSE, 0);
-
-  g_signal_connect (G_OBJECT (clutter_widget), "configure_event",
-                    G_CALLBACK (configure_event_cb), NULL);
-
-  g_signal_connect (G_OBJECT (window), "focus_out_event",
-                    G_CALLBACK (show_cursor_cb), NULL);
-
-  packing = gtk_aspect_frame_new (NULL,
-                        0.5,
-                        0.5,
-                        1.38,   //between 1.398176292 and 1.388888889
-                        FALSE);
-
-
-  gtk_container_add( GTK_CONTAINER(packing), clutter_widget); 
-
-  gtk_box_pack_start (GTK_BOX (vbox), packing, FALSE, TRUE, 0);
+  gtk_box_pack_start (GTK_BOX (vbox), clutter_widget, FALSE, TRUE, 0);
 
   statusbar = gtk_statusbar_new ();
   gtk_box_pack_start (GTK_BOX (vbox), statusbar, FALSE, FALSE, 0);
+  scoreboard = gnibbles_scoreboard_new (statusbar);
 
-  gtk_container_add (GTK_CONTAINER (window), vbox);
+  board = gnibbles_board_new ();
 
+  gtk_container_add (GTK_CONTAINER (window), vbox);
+  gtk_window_set_default_size (GTK_WINDOW (window), 640, 480);
   gtk_widget_show_all (window);
-
-  scoreboard = gnibbles_scoreboard_new (statusbar);
 }
 
+
+
 int
 main (int argc, char **argv)
 {
@@ -707,6 +741,9 @@ main (int argc, char **argv)
   gboolean retval;
   int i;
   GError *error = NULL;
+  //TODO: Review next 2 lines before finishing conversion
+  GtkApplication *app;
+  int status;
 
   setlocale (LC_ALL, "");
   bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
@@ -765,16 +802,13 @@ main (int argc, char **argv)
                                  GAMES_SCORES_STYLE_PLAIN_DESCENDING);
 
   properties = gnibbles_properties_new ();
-  setup_window ();
+  //TODO: Review to EOF before finishing conversion
   gnibbles_load_pixmap (properties->tilesize);
 
-  gtk_action_set_sensitive (pause_action, FALSE);
-  gtk_action_set_sensitive (end_game_action, FALSE);
-  gtk_action_set_visible (new_game_action, TRUE);
-
-  gtk_main ();
-
-  gnibbles_properties_destroy (properties);
+  app = gtk_application_new (NULL, G_APPLICATION_FLAGS_NONE);
+  g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
+  status = g_application_run (G_APPLICATION (app), argc, argv);
+  g_object_unref (app);
 
-  return 0;
+  return status;
 }
