diff --git a/data/gtk/window.blp b/data/gtk/window.blp
index 50fbd63febeeda30e37c0b3fa4c751765361dc5a..be6e32ab939f54c5b3cc742d08dd079c2e2cebee 100644
--- a/data/gtk/window.blp
+++ b/data/gtk/window.blp
@@ -34,19 +34,31 @@ template RugbyAppWindow : Adw.ApplicationWindow {
     Adw.Clamp {
       maximum-size: 600;
 
-      ScrolledWindow {
-        vexpand: true;
+      Stack stack {
+        StackPage {
+          child: Adw.StatusPage empty_page {
+            title: "No possibilities";
+          };
+        }
 
-        ListView listview {
-          styles ["rich-list"]
+        StackPage {
+          child: ScrolledWindow list_page {
+            vexpand: true;
 
-          model: NoSelection {
-            model: .RugbyListStore {
-              score: bind scorespin.value;
-            };
-          };
-          factory: BuilderListItemFactory {
-            resource: "/uk/me/bcowan/Rugby/gtk/score-item.ui";
+            ListView listview {
+              styles ["rich-list"]
+
+              model: NoSelection {
+                model: .RugbyListStore {
+                  score: bind scorespin.value;
+
+                  items-changed => list_store_items_changed_cb();
+                };
+              };
+              factory: BuilderListItemFactory {
+                resource: "/uk/me/bcowan/Rugby/gtk/score-item.ui";
+              };
+            }
           };
         }
       }
diff --git a/src/rugby-app-window.c b/src/rugby-app-window.c
index a1bf283a640525e8a9c9bc03a35322067b903614..956cdf8effe175fa84d930f754b52a59f724e47b 100644
--- a/src/rugby-app-window.c
+++ b/src/rugby-app-window.c
@@ -19,10 +19,27 @@ struct _RugbyAppWindow
 
     GtkWidget *scorespin;
     GtkWidget *menu_button;
+    GtkWidget *stack;
+    GtkWidget *empty_page;
+    GtkWidget *list_page;
 };
 
 G_DEFINE_TYPE (RugbyAppWindow, rugby_app_window, ADW_TYPE_APPLICATION_WINDOW)
 
+static void
+list_store_items_changed_cb (              GListModel     *model,
+                             G_GNUC_UNUSED unsigned        position,
+                             G_GNUC_UNUSED unsigned        removed,
+                             G_GNUC_UNUSED unsigned        added,
+                                           RugbyAppWindow *self)
+{
+    unsigned n_items = g_list_model_get_n_items (model);
+    if (n_items == 0)
+        gtk_stack_set_visible_child (GTK_STACK (self->stack), self->empty_page);
+    else
+        gtk_stack_set_visible_child (GTK_STACK (self->stack), self->list_page);
+}
+
 static char *
 item_tooltip_cb (GtkListItem *item)
 {
@@ -141,8 +158,12 @@ rugby_app_window_class_init (RugbyAppWindowClass *klass)
 
     gtk_widget_class_bind_template_child (widget_class, RugbyAppWindow, scorespin);
     gtk_widget_class_bind_template_child (widget_class, RugbyAppWindow, menu_button);
+    gtk_widget_class_bind_template_child (widget_class, RugbyAppWindow, stack);
+    gtk_widget_class_bind_template_child (widget_class, RugbyAppWindow, empty_page);
+    gtk_widget_class_bind_template_child (widget_class, RugbyAppWindow, list_page);
 
     gtk_widget_class_bind_template_callback (widget_class, item_tooltip_cb);
+    gtk_widget_class_bind_template_callback (widget_class, list_store_items_changed_cb);
 }
 
 RugbyAppWindow *
diff --git a/src/rugby-list-store.c b/src/rugby-list-store.c
index 88426425ed45e79a22f9e1c66c0ce3cb79f47a93..4e296bef3ea44940763a5630da848585ce426ee3 100644
--- a/src/rugby-list-store.c
+++ b/src/rugby-list-store.c
@@ -72,6 +72,12 @@ process_data (RugbyListStore *self)
     unsigned old_length = g_list_model_get_n_items (G_LIST_MODEL (self->items));
     g_list_store_remove_all (self->items);
 
+    if (self->score == 0)
+    {
+        g_list_model_items_changed (G_LIST_MODEL (self), 0, old_length, 0);
+        return;
+    }
+
     int max_tries = self->score / try_points;
     int max_utries = self->score / utry_points;