diff --git a/data/interface.ui b/data/interface.ui
index dbfa66f80777b014e6177507e036982ff6f7a261..9c10b6b34e71c5d71b31ef3d9a6d284f328166c8 100644
--- a/data/interface.ui
+++ b/data/interface.ui
@@ -64,12 +64,11 @@
           </object>
         </child>
         <child>
-          <object class="GtkSpinButton">
+          <object class="GtkSpinButton" id="scorespin">
             <property name="visible">True</property>
             <property name="can_focus">True</property>
             <property name="text" translatable="yes">0</property>
             <property name="adjustment">adjustment1</property>
-            <signal name="value-changed" handler="scorespin_value_changed_cb" swapped="no"/>
           </object>
           <packing>
             <property name="position">1</property>
diff --git a/src/rugby-app-window.c b/src/rugby-app-window.c
index 9200cdaa61651eab6be30dce1da238bbc37a8225..ed8563da3e93f8f80d17aea281299b5999f49096 100644
--- a/src/rugby-app-window.c
+++ b/src/rugby-app-window.c
@@ -16,19 +16,12 @@ struct _RugbyAppWindow
 
     RugbyListStore *store;
 
+    GtkWidget *scorespin;
     GtkWidget *listbox;
 };
 
 G_DEFINE_TYPE (RugbyAppWindow, rugby_app_window, GTK_TYPE_APPLICATION_WINDOW)
 
-static void
-scorespin_value_changed_cb (GtkSpinButton  *spin,
-                            RugbyAppWindow *self)
-{
-    int score = gtk_spin_button_get_value_as_int (spin);
-    rugby_list_store_set_score (self->store, score);
-}
-
 static GtkWidget *
 listbox_widget_func (gpointer item,
                      gpointer user_data)
@@ -49,6 +42,10 @@ rugby_app_window_init (RugbyAppWindow *self)
                              listbox_widget_func,
                              NULL,
                              NULL);
+
+  g_object_bind_property (self->scorespin, "value",
+                          self->store, "score",
+                          G_BINDING_DEFAULT);
 }
 
 static void
@@ -72,8 +69,8 @@ rugby_app_window_class_init (RugbyAppWindowClass *klass)
     gtk_widget_class_set_template_from_resource (widget_class,
                                                  "/uk/me/bcowan/rugby/interface.ui");
 
+    gtk_widget_class_bind_template_child (widget_class, RugbyAppWindow, scorespin);
     gtk_widget_class_bind_template_child (widget_class, RugbyAppWindow, listbox);
-    gtk_widget_class_bind_template_callback (widget_class, scorespin_value_changed_cb);
 }
 
 RugbyAppWindow *