diff --git a/src/events/intro/introSummary.js b/src/events/intro/introSummary.js
index 6cabe488c8441eef941b3ef72e468e66dfe50a78..494b7edb30f6ce77128f8f23c0dafed7197b6642 100644
--- a/src/events/intro/introSummary.js
+++ b/src/events/intro/introSummary.js
@@ -269,20 +269,23 @@ App.Intro.summary = function() {
 					V.sortSlavesOrder = "descending";
 					V.sortSlavesMain = 0;
 					V.rulesAssistantMain = 1;
-					V.UI.slaveSummary.abbreviation = {
-						devotion: 1,
-						rules: 1,
-						clothes: 2,
-						health: 1,
-						diet: 1,
-						drugs: 1,
-						race: 1,
-						nationality: 1,
-						genitalia: 1,
-						physicals: 1,
-						skills: 1,
-						mental: 2
-					};
+					Object.assign(
+						V.UI.slaveSummary.abbreviation,
+						{
+							devotion: 1,
+							rules: 1,
+							clothes: 2,
+							health: 1,
+							diet: 1,
+							drugs: 1,
+							race: 1,
+							nationality: 1,
+							genitalia: 1,
+							physicals: 1,
+							skills: 1,
+							mental: 2
+						}
+					);
 					V.PC.skill.trading = 100;
 					V.PC.skill.warfare = 100;
 					V.PC.skill.slaving = 100;
diff --git a/src/gui/options/summaryOptions.js b/src/gui/options/summaryOptions.js
new file mode 100644
index 0000000000000000000000000000000000000000..969394b0fa1f8620a1a6837a230899588624dd20
--- /dev/null
+++ b/src/gui/options/summaryOptions.js
@@ -0,0 +1,105 @@
+App.UI.summaryOptions = function() {
+	const el = new DocumentFragment();
+	let options;
+
+	App.UI.DOM.appendNewElement("h1", el, "Summary Options");
+
+	App.UI.DOM.appendNewElement("p", el, `These options will affect the short slave summaries that appear on the main menu and the facility management screens.`, "scene-intro");
+
+	App.UI.DOM.appendNewElement("h2", el, "Main menu features");
+
+	options = new App.UI.OptionsGroup();
+
+	options.addOption("Rules Assistant visibility", "rulesAssistantMain")
+		.addValue("Shown", 1).on().addValue("Hidden", 0).off();
+
+	options.addOption("Facilities in the sidebar are", "abbreviateSidebar")
+		.addValueList([["Summarized", 2], ["Abbreviated", 1]]);
+
+	options.addOption("Sorting main menu options are", "sortSlavesMain")
+		.addValue("Shown", 1).on().addValue("Hidden", 0).off();
+
+	if (V.sortSlavesMain > 0) {
+		options.addOption("Sorting direction", "sortSlavesOrder")
+			.addValueList([["Ascending", "ascending"], ["Descending", "descending"]]);
+
+		options.addOption("Slaves are sorted by", "sortSlavesBy")
+			.addValueList([
+				["Devotion", "devotion"],
+				["Name", "name"],
+				["Date purchased", "seniority"],
+				["Age", "actualAge"],
+				["How old they look", "visualAge"],
+				["Age of their body", "physicalAge"],
+				["Assignment", "assignment"],
+				["Weekly Income", "weeklyIncome"]
+			]);
+	}
+
+	el.append(options.render());
+
+	App.UI.DOM.appendNewElement("h2", el, "Individual panels");
+	App.UI.DOM.appendNewElement("div", el, "Sample summary:");
+	el.append(App.UI.SlaveList.render([V.slaves.random().ID], new Array(), App.UI.SlaveList.SlaveInteract.stdInteract));
+
+	options = (new App.UI.OptionsGroup()).enableDoubleColumn();
+
+	options.addOption("Panel style is", "slavePanelStyle")
+		.addValueList([
+			["None", 0],
+			["Line Separator", 1],
+			["Card", 2]
+		]);
+
+	App.UI.SlaveSummary.addOptions(options);
+
+	options.addOption("Granular slave stat numbers are", "summaryStats")
+		.addValue("Shown", 1).on().addValue("Hidden", 0).off();
+
+	options.addOption("Main menu assignment shortcuts are", "displayAssignments")
+		.addValue("Shown", 1).on().addValue("Hidden", 0).off();
+
+	if (V.showMissingSlaves) {
+		options.addOption("Missing slave parents are", "showMissingSlavesSD")
+			.addValue("Shown", true).on().addValue("Hidden", false).off();
+	}
+
+	options.addOption("FC Dev's preferred options")
+		.customButton(
+			"Apply",
+			() => {
+				V.seeDesk = 0;
+				V.seeFCNN = 0;
+				V.sortSlavesBy = "devotion";
+				V.sortSlavesOrder = "descending";
+				V.sortSlavesMain = 0;
+				V.rulesAssistantMain = 1;
+				Object.assign(
+					V.UI.slaveSummary.abbreviation,
+					{
+						devotion: 1,
+						mental: 1,
+						rules: 1,
+						health: 1,
+						diet: 1,
+						drugs: 1,
+						hormoneBalance: 1,
+						race: 1,
+						genitalia: 1,
+						physicals: 1,
+						skills: 1,
+						nationality: 1,
+						rulesets: 1,
+						clothes: 0,
+						origins: 0
+					}
+				);
+				V.abbreviateSidebar = 1;
+			},
+			"Summary Options"
+		);
+
+	el.append(options.render());
+
+	return el;
+};
diff --git a/src/gui/options/summaryOptions.tw b/src/gui/options/summaryOptions.tw
index 6b73edd5b495bceb5d7eb8e488d3e4125666ecf0..a5fcb72e82afd398b58281ee7dc2ec44b94d0462 100644
--- a/src/gui/options/summaryOptions.tw
+++ b/src/gui/options/summaryOptions.tw
@@ -11,60 +11,4 @@
 <<set $nextLink = $storedLink>>
 <<set $passageSwitchHandler = App.EventHandlers.optionsChanged>>
 
-<h1>Summary Options</h1>
-
-<p class="scene-intro">
-	These options will affect the short slave summaries that appear on the main menu and the facility management screens.
-</p>
-
-<h2>Main menu features</h2>
-
-<<set _options = new App.UI.OptionsGroup()>>
-
-<<run _options.addOption("Rules Assistant visibility", "rulesAssistantMain")
-.addValue("Shown", 1).on().addValue("Hidden", 0).off()>>
-
-<<run _options.addOption("Facilities in the sidebar are", "abbreviateSidebar")
-.addValueList([["Summarized", 2], ["Abbreviated", 1]])>>
-
-<<run _options.addOption("Sorting main menu options are", "sortSlavesMain")
-.addValue("Shown", 1).on().addValue("Hidden", 0).off()>>
-
-<<if $sortSlavesMain > 0>>
-	<<run _options.addOption("Sorting direction", "sortSlavesOrder")
-	.addValueList([["Ascending", "ascending"], ["Descending", "descending"]])>>
-
-	<<run _options.addOption("Slaves are sorted by", "sortSlavesBy")
-	.addValueList([["Devotion", "devotion"], ["Name", "name"], ["Date purchased", "seniority"], ["Age", "actualAge"],
-	["How old they look", "visualAge"], ["Age of their body", "physicalAge"], ["Assignment", "assignment"], ["Weekly Income", "weeklyIncome"]])>>
-<</if>>
-
-<<includeDOM _options.render()>>
-
-<h2>Individual panels</h2>
-Sample summary:
-<<includeDOM App.UI.SlaveList.render([$slaves.random().ID], new Array(), App.UI.SlaveList.SlaveInteract.stdInteract)>>
-
-<<set _options = (new App.UI.OptionsGroup()).enableDoubleColumn()>>
-
-<<run _options.addOption("Panel style is", "slavePanelStyle")
-.addValueList([["None", 0], ["Line Separator", 1], ["Card", 2]])>>
-
-<<run App.UI.SlaveSummary.addOptions(_options)>>
-
-<<run _options.addOption("Granular slave stat numbers are", "summaryStats")
-.addValue("Shown", 1).on().addValue("Hidden", 0).off()>>
-
-<<run _options.addOption("Main menu assignment shortcuts are", "displayAssignments")
-.addValue("Shown", 1).on().addValue("Hidden", 0).off()>>
-
-<<if $showMissingSlaves>>
-	<<run _options.addOption("Missing slave parents are", "showMissingSlavesSD")
-	.addValue("Shown", true).on().addValue("Hidden", false).off()>>
-<</if>>
-
-<<includeDOM _options.render()>>
-
-<p style="font-style:italic">
-	[[FC Dev's preferred options|Summary Options ][$seeDesk = 0, $seeFCNN = 0, $sortSlavesBy = "devotion",$sortSlavesOrder = "descending",$sortSlavesMain = 0,$rulesAssistantMain = 1, $UI.slaveSummary.abbreviation = {devotion: 1, mental: 1, rules: 1, clothes: 2, health: 1, diet: 1, drugs: 1, hormoneBalance: 1, race: 1, genitalia: 1, physicals: 1, skills: 1, nationality: 1, rulesets: 1, clothes: 0, origins: 0} ,$abbreviateSidebar = 1]]
-</p>
+<<includeDOM App.UI.summaryOptions()>>
\ No newline at end of file