diff --git a/qt/launcher-gui/src/routes/Normal.svelte b/qt/launcher-gui/src/routes/Normal.svelte
new file mode 100644
index 000000000..1e048f164
--- /dev/null
+++ b/qt/launcher-gui/src/routes/Normal.svelte
@@ -0,0 +1,160 @@
+
+
+
+{#await choosePromise}
+
+
+
+{:then res}
+ {#if res === null}
+ {#await loadPromise}
+
+
+
+ {:then [releases, existing]}
+
+ {:catch e}
+ {setError(e)}
+
+ {/await}
+ {:else}
+
+
+
+ {/if}
+{:catch e}
+ {setError(e)}
+
+{/await}
+{#if error != null}
+
+ {error.message}
+
+{/if}
+
+{#snippet _footer()}
+
+ {#if !chosen}
+
+
+
+ {/if}
+{/snippet}
+
+
diff --git a/qt/launcher-gui/src/routes/Start.svelte b/qt/launcher-gui/src/routes/Start.svelte
index f33d016fa..98bc97c31 100644
--- a/qt/launcher-gui/src/routes/Start.svelte
+++ b/qt/launcher-gui/src/routes/Start.svelte
@@ -3,79 +3,29 @@ Copyright: Ankitects Pty Ltd and contributors
License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
-->
- {#await choosePromise}
-
-
-
- {:then res}
- {#if res === null}
- {#await loadPromise}
-
-
-
- {:then [releases, existing]}
-
- {:catch e}
- {setError(e)}
-
- {/await}
- {:else}
-
-
-
- {/if}
- {:catch e}
- {setError(e)}
-
- {/await}
- {#if error != null}
-
- {error.message}
-
- {/if}
+
+ {@render children?.()}
-
- {#if !chosen}
-
-
-
- {/if}
+
+ {@render footer?.()}