diff --git a/frontend/src/App.svelte b/frontend/src/App.svelte
index 02f850f1d21a9146e6c58a2fef0254db1d0aa01f..601422536daf087cd0f3955f094823b9b7e143b7 100644
--- a/frontend/src/App.svelte
+++ b/frontend/src/App.svelte
@@ -4,6 +4,7 @@
     import Registrations from "./components/Seedings/Registrations.svelte";
     import * as Session from "../bindings/changeme/astro/services/session";
     import { Competition } from "../bindings/changeme/astro/services/models";
+    import { Competitions } from "./store";
 
     let competitions: Competition[] = [];
     let loading = true;
@@ -14,7 +15,7 @@
     });
 
     // Listen for the "need-to-update" event
-    window.addEventListener("need-to-update", async () => {
+    Competitions.subscribe(async () => {
         competitions = await Session.GetCompetitions();
     });
 </script>
diff --git a/frontend/src/common/NavBar.svelte b/frontend/src/common/NavBar.svelte
index e4acc44d418382c0f93b0b6925f9b7b5dfeb7ad7..51abe0a398f1e31a5ba57df76627740b9cafc962 100644
--- a/frontend/src/common/NavBar.svelte
+++ b/frontend/src/common/NavBar.svelte
@@ -7,7 +7,7 @@
         RemoveCompetition,
     } from "../../bindings/changeme/astro/services/session";
     import { onMount } from "svelte";
-    import { SelectedCompetition } from "../store";
+    import { SelectedCompetition, Competitions } from "../store";
 
     let competitions: Competition[] = [];
 
@@ -15,7 +15,7 @@
         competitions = await GetCompetitions();
 
         // Emit a signal to the parent component
-        dispatchEvent(new CustomEvent("need-to-update", {}));
+        Competitions.set(competitions);
     }
 
     onMount(loadCompetitions);
@@ -37,9 +37,9 @@
                 <button
                     on:click={async () => {
                         await RemoveCompetition(competition.CompetitionID);
-                        loadCompetitions();
 
                         SelectedCompetition.set(undefined);
+                        loadCompetitions();
                     }}>X</button
                 >
             </div>
diff --git a/frontend/src/components/Seedings/Registrations.svelte b/frontend/src/components/Seedings/Registrations.svelte
index 497f0c867df870a90694cb5efbae8ed125c021d7..0c88cece9ed339b20c4b8a230aa299cd10ddd0a4 100644
--- a/frontend/src/components/Seedings/Registrations.svelte
+++ b/frontend/src/components/Seedings/Registrations.svelte
@@ -9,7 +9,6 @@
     let players: (Models.Player | null)[] = [];
     let filteredPlayers: (Models.Player | null)[] = [];
     let competition: Models.Competition | undefined;
-    var playerNumber = 0;
 
     SelectedCompetition.subscribe((value) => {
         competition = value;
@@ -265,7 +264,8 @@
                             on:click={async () => {
                                 var player = await GenerateRandomPlayer();
                                 if (player != null) {
-                                    player.PlayerInitialRank = ++playerNumber;
+                                    player.PlayerInitialRank =
+                                        players.length + 1;
                                 }
 
                                 if (competition != undefined)
diff --git a/frontend/src/store.ts b/frontend/src/store.ts
index 6cc9cd8e4ce7b745e6c0bcbcac72ebdc703ca042..797b72406ba5162b06d06d5b1ba5f45d541fd388 100644
--- a/frontend/src/store.ts
+++ b/frontend/src/store.ts
@@ -1,4 +1,5 @@
 import { writable } from 'svelte/store';
 import type { Competition } from '../bindings/changeme/astro/services/models';
 
-export const SelectedCompetition = writable<Competition | undefined>(undefined);
\ No newline at end of file
+export const SelectedCompetition = writable<Competition | undefined>(undefined);
+export const Competitions = writable<(Competition | undefined)[]>([]);
\ No newline at end of file