diff --git a/src/main.c b/src/main.c
index 02f6405..b2122f2 100644
--- a/src/main.c
+++ b/src/main.c
@@ -625,7 +625,7 @@ create_menus (GtkUIManager * ui_manager)
 
 }
 
-static void
+/*static void
 setup_window (void)
 {
   GtkWidget *vbox;
@@ -699,8 +699,62 @@ setup_window (void)
   gtk_widget_show_all (window);
 
   scoreboard = gnibbles_scoreboard_new (statusbar);
+}*/
+
+
+static void
+activate (GtkApplication* app,
+          gpointer        user_data)
+{
+  GtkWidget *window;
+  GtkWidget *menubar;
+  GtkWidget *label;
+
+  GtkWidget *vbox;
+  GtkUIManager *ui_manager;
+  GtkAccelGroup *accel_group;
+  ClutterColor stage_color = {0x00,0x00,0x00,0xff};
+
+  window = gtk_application_window_new (app);
+
+  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");
+
+  clutter_widget = gtk_clutter_embed_new ();
+  stage = gtk_clutter_embed_get_stage (GTK_CLUTTER_EMBED (clutter_widget));
+
+  clutter_actor_set_background_color (stage, &stage_color);
+
+  clutter_actor_set_size (CLUTTER_ACTOR (stage),
+                          properties->tilesize * BOARDWIDTH,
+                          properties->tilesize * BOARDHEIGHT);
+  clutter_stage_set_user_resizable (CLUTTER_STAGE (stage), FALSE);
+
+ 
+  gtk_box_pack_start (GTK_BOX (vbox), menubar, FALSE, FALSE, 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);
+
+  board = gnibbles_board_new ();
+
+  gtk_container_add (GTK_CONTAINER (window), vbox);
+  gtk_window_set_title (GTK_WINDOW (window), "Welcome to GNOME");
+  gtk_window_set_default_size (GTK_WINDOW (window), 640, 480);
+  gtk_widget_show_all (window);
 }
 
+
+
 int
 main (int argc, char **argv)
 {
@@ -708,6 +762,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);
@@ -766,16 +823,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;
 }
