diff --git a/src/rugby-app-window.c b/src/rugby-app-window.c
index f1ca16b93ef43244bfd2703067403fab0d122c0a..9f4a1322a067c0ce36292a8b40c5ef67fcee42fe 100644
--- a/src/rugby-app-window.c
+++ b/src/rugby-app-window.c
@@ -90,9 +90,7 @@ header_label_cb (GtkListItem *item)
     if (!possibility)
       return NULL;
 
-    int tries = rugby_possibility_get_tries (possibility);
-    int utries = rugby_possibility_get_utries (possibility);
-    int total_tries = tries + utries;
+    int total_tries = rugby_possibility_total_tries (possibility);
 
     return g_strdup_printf (ngettext ("%d try", "%d tries", total_tries), total_tries);
 }
diff --git a/src/rugby-list-store.c b/src/rugby-list-store.c
index 343f627719c1810bef2e18944b6c0b6300caed7c..cdbd541205daf7a363d803ca52a7c781c827e8f2 100644
--- a/src/rugby-list-store.c
+++ b/src/rugby-list-store.c
@@ -1,5 +1,5 @@
 /*
- * SPDX-FileCopyrightText: 2018-2022 Bruce Cowan <bruce@bcowan.me.uk>
+ * SPDX-FileCopyrightText: 2018-2024 Bruce Cowan <bruce@bcowan.me.uk>
  *
  * SPDX-License-Identifier: GPL-3.0-or-later
  */
@@ -106,13 +106,6 @@ process_data (RugbyListStore *self)
                                 g_list_model_get_n_items (G_LIST_MODEL (self->items)));
 }
 
-static int
-get_total_tries (RugbyPossibility *possibility)
-{
-    return rugby_possibility_get_tries (possibility) +
-           rugby_possibility_get_utries (possibility);
-}
-
 // GListModel implementation
 
 static GType
@@ -166,13 +159,13 @@ rugby_list_store_get_section (GtkSectionModel *model,
         return;
     }
 
-    int target_tries = get_total_tries (possibility);
+    int target_tries = rugby_possibility_total_tries (possibility);
 
     // Find start
     for (unsigned i = 0; i < n_items; i++)
     {
         possibility = g_list_model_get_item (G_LIST_MODEL (self->items), i);
-        int total = get_total_tries (possibility);
+        int total = rugby_possibility_total_tries (possibility);
 
         if (total == target_tries)
         {
@@ -185,7 +178,7 @@ rugby_list_store_get_section (GtkSectionModel *model,
     for (unsigned i = *out_start + 1; i < n_items; i++)
     {
         possibility = g_list_model_get_item (G_LIST_MODEL (self->items), i);
-        int total = get_total_tries (possibility);
+        int total = rugby_possibility_total_tries (possibility);
 
         if (total != target_tries)
         {
diff --git a/src/rugby-possibility.c b/src/rugby-possibility.c
index cdc10a4830bdc0e5daab790870041281f51af5b1..91a92c4025ac9ca279a0ead94f5323c1756411dc 100644
--- a/src/rugby-possibility.c
+++ b/src/rugby-possibility.c
@@ -123,7 +123,7 @@ rugby_possibility_new (int tries,
 int
 rugby_possibility_get_tries (RugbyPossibility *self)
 {
-    g_return_val_if_fail (RUGBY_IS_POSSIBILITY (self), 0);
+    g_assert (RUGBY_IS_POSSIBILITY (self));
 
     return self->tries;
 }
@@ -131,7 +131,7 @@ rugby_possibility_get_tries (RugbyPossibility *self)
 int
 rugby_possibility_get_utries (RugbyPossibility *self)
 {
-    g_return_val_if_fail (RUGBY_IS_POSSIBILITY (self), 0);
+    g_assert (RUGBY_IS_POSSIBILITY (self));
 
     return self->utries;
 }
@@ -139,7 +139,15 @@ rugby_possibility_get_utries (RugbyPossibility *self)
 int
 rugby_possibility_get_kicks (RugbyPossibility *self)
 {
-    g_return_val_if_fail (RUGBY_IS_POSSIBILITY (self), 0);
+    g_assert (RUGBY_IS_POSSIBILITY (self));
 
     return self->kicks;
 }
+
+int
+rugby_possibility_total_tries (RugbyPossibility *self)
+{
+    g_assert (RUGBY_IS_POSSIBILITY (self));
+
+    return self->tries + self->utries;
+}
diff --git a/src/rugby-possibility.h b/src/rugby-possibility.h
index 7a036c2d68d99aa2e99fb52b35d4a072430f143c..565d21925f90ddd23b9cab69bd6ffb8b31990a48 100644
--- a/src/rugby-possibility.h
+++ b/src/rugby-possibility.h
@@ -22,4 +22,6 @@ int rugby_possibility_get_tries  (RugbyPossibility *self);
 int rugby_possibility_get_utries (RugbyPossibility *self);
 int rugby_possibility_get_kicks  (RugbyPossibility *self);
 
+int rugby_possibility_total_tries (RugbyPossibility *self);
+
 G_END_DECLS