diff --git a/src/002-config/mousetrapConfig.js b/src/002-config/mousetrapConfig.js
index 0a8bc6f2df416623886e07b4450030df2ee48a87..55cd6687b018392116b2732d608235b183764ec8 100644
--- a/src/002-config/mousetrapConfig.js
+++ b/src/002-config/mousetrapConfig.js
@@ -5,47 +5,21 @@ Mousetrap.bind("enter", function() {
 Mousetrap.bind("space", function() {
 	$("#story-caption #nextButton a.macro-link").trigger("click");
 });
-Mousetrap.bind("c", function() {
-	$("#story-caption #manageArcology a.macro-link").trigger("click");
-});
-Mousetrap.bind("p", function() {
-	$("#story-caption #managePenthouse a.macro-link").trigger("click");
-});
-Mousetrap.bind("n", function() {
-	$("#story-caption #manageEconomy a.macro-link").trigger("click");
-});
 Mousetrap.bind("left", function() {
 	$("#prevSlave a.macro-link").trigger("click");
-	$("#prevRule a").trigger("click");
 	$("#prevChild a.macro-link").trigger("click");
 });
 Mousetrap.bind("q", function() {
 	$("#prevSlave a.macro-link").trigger("click");
-	$("#prevRule a").trigger("click");
 	$("#prevChild a.macro-link").trigger("click");
 });
-Mousetrap.bind("shift+left", function() {
-	$("#firstRule a").trigger("click");
-});
-Mousetrap.bind("shift+q", function() {
-	$("#firstRule a").trigger("click");
-});
 Mousetrap.bind("right", function() {
 	$("#nextSlave a.macro-link").trigger("click");
-	$("#nextRule a").trigger("click");
 	$("#nextChild a.macro-link").trigger("click");
 });
-Mousetrap.bind("shift+right", function() {
-	$("#lastRule a").trigger("click");
-});
 Mousetrap.bind("e", function() {
 	$("#nextSlave a.macro-link").trigger("click");
-	$("#nextRule a").trigger("click");
 	$("#nextChild a.macro-link").trigger("click");
-	$("#story-caption #edictButton a.macro-link").trigger("click");
-});
-Mousetrap.bind("shift+e", function() {
-	$("#lastRule a").trigger("click");
 });
 Mousetrap.bind("f", function() {
 	$("#walkpast a.macro-link").trigger("click");
@@ -53,57 +27,6 @@ Mousetrap.bind("f", function() {
 Mousetrap.bind("h", function() {
 	$("#manageHG a").trigger("click");
 });
-Mousetrap.bind("s", function() {
-	$("#buySlaves a").trigger("click");
-});
 Mousetrap.bind("a", function() {
 	$("#managePA a").trigger("click");
 });
-Mousetrap.bind("b", function() {
-	$("#manageBG a").trigger("click");
-});
-Mousetrap.bind("u", function() {
-	$("#manageRecruiter a").trigger("click");
-});
-Mousetrap.bind("o", function() {
-	$("#story-caption #optionsButton a.macro-link").trigger("click");
-});
-Mousetrap.bind("y", function() {
-	$("#story-caption #policyButton a.macro-link").trigger("click");
-});
-Mousetrap.bind("f", function() {
-	$("#story-caption #FSButton a.macro-link").trigger("click");
-});
-Mousetrap.bind("t", function() {
-	$("#story-caption #PAOButton a.macro-link").trigger("click");
-});
-Mousetrap.bind("v", function() {
-	$("#story-caption #URButton a.macro-link").trigger("click");
-});
-Mousetrap.bind("r", function() {
-	$("#RAButton a").trigger("click");
-});
-Mousetrap.bind("x", function() {
-	$("#story-caption #managePerson a.macro-link").trigger("click");
-});
-Mousetrap.bind("z", function() {
-	$("#story-caption #SFMButton a.macro-link").trigger("click");
-});
-Mousetrap.bind("d", function() {
-	$("#story-caption #diplomacyButton a.macro-link").trigger("click");
-});
-Mousetrap.bind("shift+s", function() {
-	$("#story-caption #securityHQ a.macro-link").trigger("click");
-});
-Mousetrap.bind("shift+a", function() {
-	$("#story-caption #secBarracks a.macro-link").trigger("click");
-});
-Mousetrap.bind("shift+h", function() {
-	$("#story-caption #propHub a.macro-link").trigger("click");
-});
-Mousetrap.bind("shift+r", function() {
-	$("#story-caption #riotCenter a.macro-link").trigger("click");
-});
-Mousetrap.bind("shift+c", function() {
-	$("#story-caption #manageCorporation a.macro-link").trigger("click");
-});
diff --git a/src/Mods/SecExp/buildings/propagandaHub.tw b/src/Mods/SecExp/buildings/propagandaHub.tw
index f178296465e2e34312037bbec2ce252862020b91..e1890fedb485f6b19e0fd20f8fd93a28e20160c1 100644
--- a/src/Mods/SecExp/buildings/propagandaHub.tw
+++ b/src/Mods/SecExp/buildings/propagandaHub.tw
@@ -1,4 +1,4 @@
-:: propagandaHub [nobr]
+:: propagandaHub [nobr jump-to-safe jump-from-safe]
 
 <<if $career == "capitalist" || $career == "celebrity" || $career == "wealth">>
 	<<set _HistoryDiscount = .5>>
diff --git a/src/Mods/SecExp/buildings/riotControlCenter.tw b/src/Mods/SecExp/buildings/riotControlCenter.tw
index 78acfd20e68744c92a704eb8beeb19228c9854c3..dbc973c78b05b2da1a5a3f1a04957a69a889bf6f 100644
--- a/src/Mods/SecExp/buildings/riotControlCenter.tw
+++ b/src/Mods/SecExp/buildings/riotControlCenter.tw
@@ -1,4 +1,4 @@
-:: riotControlCenter [nobr]
+:: riotControlCenter [nobr jump-to-safe jump-from-safe]
 
 <<set $nextButton = "Back">>
 <<if $sideBarOptions.compact > 0>>
diff --git a/src/Mods/SecExp/buildings/secBarracks.tw b/src/Mods/SecExp/buildings/secBarracks.tw
index 92cbb8d39760eefc67aecdfc07ab69de407de8e2..50253abea9671b906965a09371a29faa64bb6cec 100644
--- a/src/Mods/SecExp/buildings/secBarracks.tw
+++ b/src/Mods/SecExp/buildings/secBarracks.tw
@@ -1,4 +1,4 @@
-:: secBarracks [nobr]
+:: secBarracks [nobr jump-to-safe jump-from-safe]
 
 <<set $nextButton = "Back">>
 <<if $sideBarOptions.compact > 0>>
diff --git a/src/Mods/SecExp/buildings/securityHQ.tw b/src/Mods/SecExp/buildings/securityHQ.tw
index 02dffc50f5cf2f38a5d8ece5d941d75e5ed47a64..215e709318795729f1e1e398bc74e0131bc7dd1b 100644
--- a/src/Mods/SecExp/buildings/securityHQ.tw
+++ b/src/Mods/SecExp/buildings/securityHQ.tw
@@ -1,4 +1,4 @@
-:: securityHQ [nobr]
+:: securityHQ [nobr jump-to-safe jump-from-safe]
 
 <<if $career == "mercenary" || $career == "gang" || $career == "slaver">>
 	<<set _HistoryDiscount = .5>>
diff --git a/src/Mods/SecExp/edicts.tw b/src/Mods/SecExp/edicts.tw
index f9369fa13425f3f526a1593f83f6d7a2e943866f..47b162f4983027b03ed70bd1b6e02cd1d9d36161 100644
--- a/src/Mods/SecExp/edicts.tw
+++ b/src/Mods/SecExp/edicts.tw
@@ -1,4 +1,4 @@
-:: edicts [nobr]
+:: edicts [nobr jump-to-safe jump-from-safe]
 
 <<set $nextButton = "Back", $nextLink = "Main">>
 
diff --git a/src/Mods/SpecialForce/Firebase.tw b/src/Mods/SpecialForce/Firebase.tw
index 07eb1d1b4200e3c70745ff2435215b9ca2b7d1d9..599ab92ca279fce9a380381bb1ca611cdf0da72e 100644
--- a/src/Mods/SpecialForce/Firebase.tw
+++ b/src/Mods/SpecialForce/Firebase.tw
@@ -1,4 +1,4 @@
-:: Firebase [nobr]
+:: Firebase [nobr jump-to-safe jump-from-safe]
 <<= App.SF.Count()>>
 <<if $SF.FS.Tension > 100>> <<= App.SF.fsIntegration('BadOutcome')>>
 <<else>>
diff --git a/src/arcologyBuilding/cell.tw b/src/arcologyBuilding/cell.tw
index 39a1fe3868bc22455b64ab4d92c529e892777838..5875dadfa14b53fb708c8d3c3e7436dfae16616a 100644
--- a/src/arcologyBuilding/cell.tw
+++ b/src/arcologyBuilding/cell.tw
@@ -1,4 +1,4 @@
-:: Cell [nobr jump-from-safe]
+:: Cell [nobr jump-from-safe no-history]
 
 <<set $nextButton = "Back", $nextLink = "Main">>
 
diff --git a/src/facilities/farmyard/farmyard.tw b/src/facilities/farmyard/farmyard.tw
index 98ed68b19ecd28d255ebff29d362dd55e766a23e..60d10497b5c54964ad83dc078deb82b11b090c34 100644
--- a/src/facilities/farmyard/farmyard.tw
+++ b/src/facilities/farmyard/farmyard.tw
@@ -1,4 +1,4 @@
-:: Farmyard [nobr]
+:: Farmyard [nobr jump-to-safe jump-from-safe]
 
 /* TODO: add "plots" of "crops" */
 /* TODO: allow slaves that can't walk to put on shows */
diff --git a/src/facilities/nursery/nursery.tw b/src/facilities/nursery/nursery.tw
index 813bfb70328be4a14f6ce3f92748848c2dd2dc51..4fa0c863e9e028a14206a878c88c190e3c7e1d2d 100644
--- a/src/facilities/nursery/nursery.tw
+++ b/src/facilities/nursery/nursery.tw
@@ -1,4 +1,4 @@
-:: Nursery [nobr]
+:: Nursery [nobr jump-to-safe jump-from-safe]
 
 <<set $nextButton = "Back to Main", $nextLink = "Main", $returnTo = "Nursery", $encyclopedia = "Nursery">>
 <<set $targetAgeNursery = Number($targetAgeNursery) || $minimumSlaveAge>>
diff --git a/src/gui/quicklinks.js b/src/gui/quicklinks.js
index 5e62587f0c453af8e4af8f3340e98171c9aef4a4..f77194c7eca155e0073b7b32c0ae393094b871f0 100644
--- a/src/gui/quicklinks.js
+++ b/src/gui/quicklinks.js
@@ -22,38 +22,123 @@ App.UI.quickMenu = (function() {
 			"Manage Penthouse": true,
 			"Manage Arcology": true,
 			"Manage Personal Affairs": true,
+			"Manage Corporation": true,
+			Firebase: true,
+			propagandaHub: true,
+			securityHQ: true,
+			secBarracks: true,
+			riotControlCenter: true,
+		},
+		Social: {
+			"Future Society": true,
+			Policies: true,
+			edicts: true,
+			"Neighbor Interact": true,
 		},
 		Facilities: {
-			Cellblock: true,
-			Clinic: true,
 			"Head Girl Suite": true,
+			"BG Select": true,
+			Brothel: true,
+			Club: true,
+			Arcade: true,
+			Dairy: true,
+			Farmyard: true,
+			"Servants' Quarters": true,
 			"Master Suite": true,
 			Schoolroom: true,
-			"Servants' Quarters": true,
-			Spa: true
+			Spa: true,
+			Nursery: true,
+			Clinic: true,
+			Cellblock: true,
+			Incubator: true,
+			Pit: true,
+		},
+		Locations: {
+			"Gene Lab": true,
+			Dispensary: true,
+			"Organ Farm": true,
+			"Implant Manufactory": true,
+			"Prosthetic Lab": true,
+			Wardrobe: true,
+			"The Black Market": true,
+		},
+		Tools: {
+			"Find Slave": true,
 		},
+		" Options ": { // we trick here so it's handled as pure deco
+			Options: true,
+			"Summary Options": true,
+			"Description Options": true,
+			"Universal Rules": true,
+		}
 	});
 
-	/**
-	 * The DOM element of name of the currently played passage or any of it's parents. Used during generation to
-	 * uncollapse the category with the current passage.
-	 * @type {HTMLElement}
-	 */
-	let currentPassage;
-	/**
-	 * DOM elements that have a notification. Used to traverse upwards to give the categories notifications too.
-	 * @type {Array<HTMLElement>}
-	 */
-	let notificationPassages;
-
 	// true means hidden
 	const hiddenPassages = cleanPassageMapping({
-		"Cellblock": () => !V.cellblock
+		Arcade: () => !V.arcade,
+		"BG Select": () => V.dojo <= 1,
+		Brothel: () => !V.brothel,
+		Cellblock: () => !V.cellblock,
+		Clinic: () => !V.clinic,
+		Club: () => !V.club,
+		Dairy: () => !V.dairy,
+		Dispensary: () => !V.dispensary,
+		edicts: () => V.secExpEnabled <= 0,
+		Farmyard: () => !V.farmyard,
+		Firebase: () => !V.SF.Toggle || V.SF.Toggle < 1,
+		"Future Society": () => !V.FSAnnounced,
+		"Gene Lab": () => !V.geneticMappingUpgrade,
+		"Head Girl Suite": () => !V.HGSuite,
+		"Implant Manufactory": () => !V.ImplantProductionUpgrade,
+		Incubator: () => !V.incubator,
+		"Manage Corporation": () => V.corp.Announced !== 1,
+		"Master Suite": () => !V.masterSuite,
+		"Neighbor Interact": () => V.arcologies.length === 0,
+		Nursery: () => !V.nursery,
+		"Organ Farm": () => !V.organFarmUpgrade,
+		Pit: () => !V.pit,
+		propagandaHub: () => V.secExpEnabled <= 0 || V.SecExp.buildings.propHub.active <= 0,
+		"Prosthetic Lab": () => V.researchLab.level === 0,
+		riotControlCenter: () => V.secExpEnabled <= 0 || V.riotCenter <= 0,
+		Schoolroom: () => !V.schoolroom,
+		secBarracks: () => V.secExpEnabled <= 0 || V.SecExp.buildings.barracks.active <= 0,
+		securityHQ: () => V.secExpEnabled <= 0 || V.secHQ <= 0,
+		"Servants' Quarters": () => !V.servantsQuarters,
+		Spa: () => !V.spa,
+		"The Black Market": () => V.rep < 10000,
 	});
 
-	// show different names than the actual passage name
+	// show different names than the actual passage name, can be a function
 	const uiNames = cleanPassageMapping({
+		Arcade: () => App.Entity.facilities.arcade.UIName,
 		"BG Select": "Armory",
+		Brothel: () => App.Entity.facilities.brothel.UIName,
+		Cellblock: () => App.Entity.facilities.cellblock.UIName,
+		Clinic: () => App.Entity.facilities.clinic.UIName,
+		Club: () => App.Entity.facilities.club.UIName,
+		Dairy: () => App.Entity.facilities.dairy.UIName,
+		Dispensary: "Pharmaceutical Fabricator",
+		edicts: "Edicts",
+		Farmyard: () => App.Entity.facilities.farmyard.UIName,
+		"Find Slave": "Locate Slave",
+		Firebase: () => `${App.SF.Caps()}'s Firebase`,
+		"Future Society": "Future Societies",
+		"Head Girl Suite": () => App.Entity.facilities.headGirlSuite.UIName,
+		Incubator: () => App.Entity.facilities.incubator.UIName,
+		"Master Suite": () => App.Entity.facilities.masterSuite.UIName,
+		"Neighbor Interact": "Diplomacy",
+		Nursery: () => App.Entity.facilities.nursery.UIName,
+		Options: "Game Options",
+		"Personal assistant options": "Personal Assistant",
+		Pit: () => App.Entity.facilities.pit.UIName,
+		propagandaHub: "Manage PR",
+		riotControlCenter: "Manage Rebels",
+		Schoolroom: () => App.Entity.facilities.schoolroom.UIName,
+		secBarracks: "Manage Military",
+		securityHQ: "Manage Security",
+		"Servants' Quarters": () => App.Entity.facilities.servantsQuarters.UIName,
+		Spa: () => App.Entity.facilities.spa.UIName,
+		"The Black Market": "Black Market",
 	});
 
 	// extra information behind the link, is a function
@@ -63,6 +148,10 @@ App.UI.quickMenu = (function() {
 		"BG Select": () => V.Bodyguard !== 0 ? "(BG)" : "",
 		Brothel: () => `(${App.Entity.facilities.brothel.employeesIDs().size}/${V.brothel}${
 			V.abbreviateSidebar === 2 ? ` whores${V.Madam ? ", madam" : ""}` : V.Madam ? ", L" : ""})`,
+		Cellblock: () => `(${App.Entity.facilities.cellblock.employeesIDs().size}/${V.cellblock}${
+			V.abbreviateSidebar === 2 ? ` prisoners${V.Wardeness ? ", wardeness" : ""}` : V.Wardeness ? ", L" : ""})`,
+		Clinic: () => `(${App.Entity.facilities.clinic.employeesIDs().size}/${V.clinic}${
+			V.abbreviateSidebar === 2 ? ` patients${V.Nurse ? ", nurse" : ""}` : V.Nurse ? ", L" : ""})`,
 		Club: () => `(${App.Entity.facilities.club.employeesIDs().size}/${V.brothel}${
 			V.abbreviateSidebar === 2 ? ` sluts${V.DJ ? ", DJ" : ""}` : V.DJ ? ", L" : ""})`,
 		Dairy: () => {
@@ -71,22 +160,72 @@ App.UI.quickMenu = (function() {
 				V.abbreviateSidebar === 2 ? ` cows${V.Milkmaid ? ", milkmaid" : ""}`
 					: V.Milkmaid ? ", L" : ""}`;
 		},
+		Farmyard: () => `(${App.Entity.facilities.farmyard.employeesIDs().size}/${V.farmyard}${
+			V.abbreviateSidebar === 2 ? ` farmhands${V.Farmer ? ", farmer" : ""}` : V.Farmer ? ", L" : ""})`,
 		"Head Girl Suite": () => V.HeadGirl !== 0 ? `(HG${
 			App.Entity.facilities.headGirlSuite.employeesIDs().size ?
 				V.abbreviateSidebar === 2 ? " and slave" : ", 1" : ""})` : "",
+		Incubator: () => `(${V.incubatorSlaves}/${V.incubator}${V.abbreviateSidebar === 2 ? " slaves" : ""})`,
+		"Master Suite": () => `(${App.Entity.facilities.masterSuite.employeesIDs().size}/${V.masterSuite}${
+			V.abbreviateSidebar === 2 ? ` fucktoys${V.Concubine ? ", concubine" : ""}` : V.Concubine ? ", L" : ""})`,
+		Nursery: () => V.abbreviateSidebar === 2
+			? `(${V.nurseryBabies}/${V.nursery} babies, ${App.Entity.facilities.nursery.employeesIDs().size}/${V.nurseryNannies} nannies${V.Matron ? ", attendant" : ""}`
+			: `(${V.nurseryBabies}/${V.nursery}, ${App.Entity.facilities.nursery.employeesIDs().size}/${V.nurseryNannies}${V.Matron ? ", L" : ""}`,
+		Pit: () => `(${V.fighterIDs.length}${V.abbreviateSidebar === 2 ? " combatants" : ""}`,
+		Schoolroom: () => `(${App.Entity.facilities.schoolroom.employeesIDs().size}/${V.schoolroom}${
+			V.abbreviateSidebar === 2 ? ` students${V.Schoolteacher ? ", schoolteacher" : ""}` : V.Schoolteacher ? ", L" : ""})`,
+		"Servants' Quarters": () => `(${App.Entity.facilities.servantsQuarters.employeesIDs().size}/${V.servantsQuarters}${
+			V.abbreviateSidebar === 2 ? ` servants${V.Stewardess ? ", stewardess" : ""}` : V.Stewardess ? ", L" : ""})`,
+		Spa: () => `(${App.Entity.facilities.spa.employeesIDs().size}/${V.spa}${
+			V.abbreviateSidebar === 2 ? ` bathing${V.Attendant ? ", attendant" : ""}` : V.Attendant ? ", L" : ""})`,
 	});
 
 	// true shows a notification symbol
 	const notifications = cleanPassageMapping({
+		"Future Society": () => V.FSCredits > 0 || V.FSReminder,
+		Incubator: () => V.readySlaves > 0,
 		"Manage Corporation": () => V.corp.SpecToken > 0 && V.corp.SpecTimer === 0,
 	});
 
 	// setup hotkeys list, upper/lower case is important!
+	// Due to limitation to the key capture library keys can not be used when they are already used in
+	// src/002-config/mousetrapConfig.js
 	const hotkeys = cleanPassageMapping({
+		"BG Select": "b",
+		"Buy Slaves": "s",
+		edicts: "E",
+		Firebase: "z",
+		"Future Society": "f",
 		Main: "m",
-		"Manage Personal Affairs": "x"
+		"Manage Arcology": "c",
+		"Manage Corporation":"C",
+		"Manage Penthouse": "p",
+		"Manage Personal Affairs": "x",
+		"Neighbor Interact": "d",
+		Options: "o",
+		"Personal assistant options": "t",
+		Policies: "y",
+		propagandaHub:"H",
+		"Recruiter Select": "u",
+		riotControlCenter:"R",
+		"Rules Assistant": "r",
+		secBarracks: "A",
+		securityHQ: "S",
+		"Universal Rules": "v",
 	});
 
+	/**
+	 * The DOM element of name of the currently played passage or any of it's parents. Used during generation to
+	 * uncollapse the category with the current passage.
+	 * @type {HTMLElement}
+	 */
+	let currentPassage;
+	/**
+	 * DOM elements that have a notification. Used to traverse upwards to give the categories notifications too.
+	 * @type {Array<HTMLElement>}
+	 */
+	let notificationPassages;
+
 	let hotkeysEnabled = false;
 
 	// register hotkeys
@@ -266,6 +405,9 @@ App.UI.quickMenu = (function() {
 
 	function uiName(passage) {
 		if (uiNames[passage]) {
+			if (typeof uiNames[passage] === "function") {
+				return uiNames[passage]();
+			}
 			return uiNames[passage];
 		}
 		return passage;
diff --git a/src/gui/storyCaption.tw b/src/gui/storyCaption.tw
index 0872e8865101c8e7c79bce9aa4b32cef3535c86f..183667292fbb451b36f7f6dd04113f134c747a1c 100644
--- a/src/gui/storyCaption.tw
+++ b/src/gui/storyCaption.tw
@@ -1,7 +1,5 @@
 :: StoryCaption [nobr]
 
-<<includeDOM App.UI.quickMenu()>>
-
 <<set _Pass = passage()>>
 
 <<if $ui != "start">> <<userButton>> <br> <</if>>
@@ -270,270 +268,30 @@
 		<</if>> /* Closes secExp check and associated sideBarOptions options */
 	<</if>> /* Closes Pass != "Manage Penthouse""*/
 
-	<<if $nextButton != "Continue" && $nextButton != " ">>
-		<<if $nextButton != "Refresh" && _Pass != "RE recruit">>
-			<<if _Pass != "Manage Penthouse">> <br>
-				<span id="managePenthouse">
-					<<link [[Manage Penthouse]]>><</link>>
-				</span> @@.cyan;[P]@@
-			<</if>>
-			<<if _Pass != "Manage Arcology">> <br>
-				<span id="manageArcology">
-					<<link [[Manage Arcology]]>><</link>>
-				</span> @@.cyan;[C]@@
-			<</if>>
-
-			<<if _Pass != "Manage Personal Affairs">>
-				<span id="managePerson"> <br>
-					<<link [[Manage Personal Affairs]]>><</link>>
-				</span> @@.cyan;[X]@@
-			<</if>>
-			<<if $corp.Announced == 1 && _Pass != "Manage Corporation">>
-				<span id="manageCorporation"> <br>
-					<<link [[Manage Corporation][$nextButton = "Back", $nextLink = _Pass]]>><</link>>
-				</span>
-				<<if ($corp.SpecToken > 0) && ($corp.SpecTimer == 0)>>@@.yellow;[!]@@<</if>>
-			<</if>>
-		<</if>>
-
-		<<if _Pass == "Main">>
-			<span id="findSlave"> <br>
-				<<link [[Locate Slave|Find Slave]]>><</link>>
-			</span>
-		<</if>>
-
-		<<if ($sideBarOptions.compact == 0 && _Pass == "Main") || ($sideBarOptions.compact == 1 && _Pass == "Manage Arcology")>> <br>
-			<<if $FSAnnounced>>
-				<span id="FSButton"> <br>
-				<<link [[Future Societies|Future Society][$nextButton = "Back", $nextLink = "Main"]]>><</link>>
-				</span> @@.cyan;[F]@@
-				<<if ($FSCredits > 0) || ($FSReminder)>>@@.yellow;[!]@@<</if>>
-			<</if>>
-			<span id="PAOButton"> <br>
-				<<link [[Personal Assistant|Personal assistant options]]>><</link>>
-			</span> @@.cyan;[T]@@
-		<</if>>
-
-		<<if _Pass == "Main" && $newModelUI == 0>>
-				<<set _L = App.Utils.countFacilityWorkers()>>
-				<<if ($HGSuite)>>
-					<br> <<link "$HGSuiteNameCaps""Head Girl Suite">><</link>>
-					<<if $abbreviateSidebar == 2>>
-						<<if $HeadGirl != 0>>(HG<<if _L.HGSuite > 0>>, 1)<<else>>)<</if>><</if>>
-					<<else>>
-						<<if $HeadGirl != 0>>(HG<<if  _L.HGSuite > 0>> and slave<<else>>)<</if>><</if>>
-					<</if>>
-				<</if>>
-				<<if ($dojo > 1)>>
-					<br>[[Armory|BG Select]]
-					<<if $Bodyguard != 0>>
-						(BG)
-					<</if>>
-				<</if>>
-
-				<<if ($brothel)>>
-					<br> <<link "$brothelNameCaps""Brothel">><</link>>
-					<<if $abbreviateSidebar == 2>>
-						(_L.brothel/<<= $brothel>> whores<<if $Madam>>, madam<</if>>)
-					<<else>>
-						(_L.brothel/<<= $brothel>><<if $Madam>>, L<</if>>)
-					<</if>>
-				<</if>>
-				<<if ($club)>>
-					<br> <<link "$clubNameCaps""Club">><</link>>
-					<<if $abbreviateSidebar == 2>>
-						(_L.club/<<= $club>> sluts<<if $DJ>>, DJ<</if>>)
-					<<else>>
-						(_L.club/<<= $club>><<if $DJ>>, L<</if>>)
-					<</if>>
-				<</if>>
-
-				<<if ($arcade)>>
-					<br> <<link "$arcadeNameCaps""Arcade">><</link>>
-					<<if $abbreviateSidebar == 2>>
-						(_L.arcade/<<= $arcade>> inmates)
-					<<else>>
-						(_L.arcade/<<= $arcade>>)
-					<</if>>
-				<</if>>
-				<<if ($dairy)>>
-					<br> <<link "$dairyNameCaps""Dairy">><</link>>
-					<<set _SCapT9 = $bioreactorsXY+$bioreactorsXX+$bioreactorsHerm+$bioreactorsBarren>>
-					<<if $abbreviateSidebar == 2>>
-						(_L.dairy<<if _SCapT9>>+_SCapT9<</if>>/<<= $dairy>> cows<<if $Milkmaid>>, milkmaid<</if>>)
-					<<else>>
-						(_L.dairy<<if _SCapT9>>+_SCapT9<</if>>/<<= $dairy>><<if $Milkmaid>>, L<</if>>)
-					<</if>>
-				<</if>>
-
-				<<if ($farmyard)>>
-					<br> <<link "$farmyardNameCaps""Farmyard">><</link>>
-					<<if $abbreviateSidebar == 2>>
-						(_L.farmyard/$farmyard farmhands<<if $Farmer>>, farmer<</if>>)
-					<<else>>
-						(_L.farmyard/$farmyard<<if $Farmer>>, L<</if>>)
-					<</if>>
-				<</if>>
-				<<if ($servantsQuarters)>>
-					<br> <<link "$servantsQuartersNameCaps""Servants' Quarters">><</link>>
-					<<if $abbreviateSidebar == 2>>
-						(_L.servantsQuarters/$servantsQuarters servants<<if $Stewardess>>, stewardess<</if>>)
-					<<else>>
-						(_L.servantsQuarters/$servantsQuarters<<if $Stewardess>>, L<</if>>)
-					<</if>>
-				<</if>>
-
-				<<if ($masterSuite)>>
-					<br> <<link "$masterSuiteNameCaps""Master Suite">><</link>>
-					<<if $abbreviateSidebar == 2>>
-						(_L.masterSuite/$masterSuite <<if _L.masterSuite != 1>>fucktoys<<else>>fucktoy<</if>><<if $Concubine>>, Concubine<</if>>)
-					<<else>>
-						(_L.masterSuite/$masterSuite<<if $Concubine>>, C<</if>>)
-					<</if>>
-				<</if>>
-				<<if ($schoolroom)>>
-					<br> <<link "$schoolroomNameCaps""Schoolroom">><</link>>
-					<<if $abbreviateSidebar == 2>>
-						(_L.schoolroom/$schoolroom <<if _L.schoolroom != 1>>students<<else>>student<</if>><<if $Schoolteacher>>, schoolteacher<</if>>)
-					<<else>>
-						(_L.schoolroom/$schoolroom<<if $Schoolteacher>>, L<</if>>)
-					<</if>>
-				<</if>>
-
-				<<if ($spa)>>
-					<br> <<link "$spaNameCaps""Spa">><</link>>
-					<<if $abbreviateSidebar == 2>>
-						(_L.spa/$spa <<if _L.spa != 1>>bathers<<else>>bathing<</if>><<if _S.Attendant>>, attendant<</if>>)
-					<<else>>
-						(_L.spa/$spa<<if _S.Attendant>>, L<</if>>)
-					<</if>>
-				<</if>>
-				<<if ($nursery)>>
-					<br> <<link "$nurseryNameCaps""Nursery">><</link>>
-					<<if $abbreviateSidebar == 2>>
-						(<<if $nursery-$nurseryBabies == 0>>No empty rooms<<elseif $nursery-$nurseryBabies == 1>>1 empty room<<else>><<= $nursery-$nurseryBabies>> empty rooms<</if>>, _L.nursery/$nurseryNannies <<if _L.nursery != 1>>nannies<<else>>nanny<</if>><<if $Matron>>, attendant<</if>>)
-					<<else>>
-						($nurseryBabies/$nursery, _L.nursery/$nurseryNannies<<if $Matron>>, L<</if>>)
-					<</if>>
-				<</if>>
-
-				<<if ($clinic)>>
-					<br> <<link "$clinicNameCaps""Clinic">><</link>>
-					<<if $abbreviateSidebar == 2>>
-						(_L.clinic/$clinic <<if _L.clinic != 1>>patients<<else>>patient<</if>><<if $Nurse>>, nurse<</if>>)
-					<<else>>
-						(_L.clinic/$clinic<<if $Nurse>>, L<</if>>)
-					<</if>>
-				<</if>>
-				<<if ($cellblock)>>
-					<br> <<link "$cellblockNameCaps""Cellblock">><</link>>
-					<<if $abbreviateSidebar == 2>>
-						(_L.cellblock/$cellblock <<if _L.cellblock != 1>>prisoners<<else>>prisoner<</if>><<if $Wardeness>>, wardeness<</if>>)
-					<<else>>
-						(_L.cellblock/$cellblock<<if $Wardeness>>, L<</if>>)
-					<</if>>
-				<</if>>
-
-				<<if ($incubator)>>
-					<br> <<link "$incubatorNameCaps""Incubator">><</link>>
-					<<if $abbreviateSidebar == 2>>
-						(<<if $incubator-$incubatorSlaves == 0>>No empty tanks<<elseif $incubator-$incubatorSlaves == 1>>1 empty tank<<else>><<= $incubator-$incubatorSlaves>> empty tanks<</if>>)
-					<<else>>
-						($incubatorSlaves/$incubator)
-					<</if>>
-					<<if $readySlaves > 0>> @@.yellow;[!]@@ <</if>>
-				<</if>>
-				<<if ($pit)>>
-					<br> <<link "$pitNameCaps""Pit">><</link>>
-					<<set _SCapT = $fighterIDs.length>>
-					<<if $abbreviateSidebar == 2>>
-						(_SCapT <<if _SCapT != 1>>combatants<<else>>combatant<</if>>)
-					<<else>>
-						(_SCapT)
-					<</if>>
-					<br>
-				<</if>>
-		<</if>> /* closes _Pass == "Main" && $newModelUI == 0 */
-
-		<<if ($sideBarOptions.compact == 0 && _Pass == "Main") || ($sideBarOptions.compact == 1 && _Pass == "Manage Arcology")>>
-			<span id="policyButton"> <br>
-				<<link [[Policies]]>><</link>>
-			</span> @@.cyan;[Y]@@
-
-			<<if $secExpEnabled > 0>>
-				<span id="edictButton"> <br>
-					<<link [[Edicts|edicts]]>><</link>>
-				</span> @@.cyan;[E]@@
-			<</if>>
-			<<if $arcologies.length > 1>>
-				<span id="diplomacyButton"> <br>
-					<<link [[Diplomacy|Neighbor Interact]]>><</link>>
-				</span> @@.cyan;[D]@@
-			<</if>>
-
-			<span id="Security">
-			<<if ($secExpEnabled > 0 && ($SecExp.buildings.propHub.active + $secHQ + $SecExp.buildings.barracks.active + $riotCenter > 0)) || $SF.Toggle && $SF.Active >= 1>> <br>
-				<<link "Manage Security">> <<replace "#Security">> <<security>> <</replace>> <</link>>
-			<</if>>
-			</span>
-		<</if>>
+	<p>
+		<<includeDOM App.UI.quickMenu()>>
+	</p>
 
+	<<if $nextButton != "Continue" && $nextButton != " ">>
 		<<if _Pass == "Manage Penthouse">>
-			<span id="URButton"> <br><br>
-				<<link [[Universal Rules]]>><</link>>
-			</span> @@.cyan;[V]@@
-
-			<<if $geneticMappingUpgrade>> <br>[[Gene Lab|Gene Lab]]<</if>>
-			<<if $dispensary>> <br>[[Pharmaceutical Fabricator|Dispensary]]<</if>>
-			<<if $organFarmUpgrade>> <br>[[Organ Farm]]<</if>>
-			<<if $ImplantProductionUpgrade>> <br>[[Implant Manufactory]]<</if>>
-			<<if $researchLab.level > 0>> <br>[[Prosthetic Lab]]<</if>>
-			<<if $geneticMappingUpgrade + $dispensary + $organFarmUpgrade + $ImplantProductionUpgrade + $researchLab.level > 0>>
-				<br>
-			<</if>>
-
-			<br> [[Wardrobe]]
 			<<if $rep >= 10000>>
 				<br>[[Black Market|The Black Market]]
 			<<else>>
 				<br>You lack the reputation (<<= num(10000)>>) to be invited to the underground Black Market.
 			<</if>>
 
-		<<elseif ["Dispensary", "Organ Farm", "Implant Manufactory", "Gene Lab", "Prosthetic Lab"].includes(_Pass)>>
-			<<if $dispensary && _Pass != "Dispensary">> <br>[[Pharmaceutical Fabricator|Dispensary]]<</if>>
-			<<if $organFarmUpgrade && _Pass != "Organ Farm">> <br>[[Organ Farm]]<</if>>
-			<<if $ImplantProductionUpgrade && _Pass != "Implant Manufactory">> <br>[[Implant Manufactory]]<</if>>
-			<<if $geneticMappingUpgrade && _Pass != "Gene Lab">> <br>[[Gene Lab]]<</if>>
-			<<if $prostheticsUpgrade && _Pass != "Prosthetic Lab">> <br>[[Prosthetic Lab]]<</if>>
-
 		<<elseif _Pass == "Rules Assistant">> <br>
 			[[Rules Assistant Summary]]
-
-		<<elseif ["Firebase", "propagandaHub", "securityHQ", "secBarracks", "riotControlCenter"].includes(_Pass)>>
-			<<security>>
 		<</if>> /* Closes Pass state check */
 
-		<br><br>
-		<<if $nextButton != "Refresh" && _Pass != "RE recruit">>
-			<<if !["Description Options", "Options", "Summary Options"].includes(_Pass)>>
-				<span id="optionsButton">
-					<<link [[Game Options|Options][$nextButton = "Back", $nextLink = _Pass]]>><</link>>
-				</span> @@.cyan;[O]@@
-			<<else>>
-				<<if _Pass != "Summary Options">> [[Summary Options]] <</if>>
-				<<if _Pass == "Options">> <br> <</if>>
-				<<if _Pass != "Description Options">> [[Description Options]] <</if>>
-			<</if>>
-		<</if>>
-
 		<<if $debugMode > 0>>
 			<br><br>Debugging Tools<br> <<link "Display Variables">><<checkvars>><</link>>
 			<br> <<link "Display Changed Variables">>
 				<<set Config.history.maxStates = 2>> /* makes sure we store the current state so we can return to it */
 				<<goto "Variable Difference">>
 			<</link>>
-
-			<br> <<link "Bug Report">><<bugreport>><</link>>
+			<br> 
+			<<link "Bug Report">><<bugreport>><</link>>
 			<<if $debugModeCustomFunction > 0>>
 				<br> <<textarea "_customEvalCode" "">>
 				<<link "Run Custom Function">>
diff --git a/src/gui/storyCaptionWidgets.tw b/src/gui/storyCaptionWidgets.tw
index 9efbfd1e31ea835c7463abcc1c42189f49f49029..a8616c836cd97a0ccaa8c7a5a96f418853a33889 100644
--- a/src/gui/storyCaptionWidgets.tw
+++ b/src/gui/storyCaptionWidgets.tw
@@ -23,38 +23,3 @@
 		<</if>>
 	<</if>>
 <</widget>>
-
-<<widget "security">>
-	<<if ($SF.Toggle && $SF.Active >= 1) || $secExpEnabled > 0 && ($SecExp.buildings.propHub.active + $secHQ + $SecExp.buildings.barracks.active + $riotCenter) > 1>>
-		<br>
-	<</if>>
-	<<if $SF.Toggle && $SF.Active >= 1 && _Pass != "Firebase">>
-		<span id="SFMButton"> <br>
-			<<link "<<= App.SF.Caps()>>'s firebase""Firebase">><</link>>
-		</span> @@.cyan;[Z]@@
-	<</if>>
-
-	<<if $secExpEnabled > 0>>
-		<<if $SecExp.buildings.propHub.active > 0 && _Pass != "propagandaHub">>
-			<span id="propHub"> <br>
-				<<link [[Manage PR|propagandaHub]]>><</link>>
-			</span> @@.cyan;[Shift+H]@@
-		<</if>>
-		<<if $secHQ > 0 && _Pass != "securityHQ">>
-			<span id="securityHQ"> <br>
-				<<link [[Manage Security|securityHQ]]>><</link>>
-			</span> @@.cyan;[Shift+S]@@
-		<</if>>
-
-		<<if $SecExp.buildings.barracks.active > 0 && _Pass != "secBarracks">>
-			<span id="secBarracks"> <br>
-				<<link [[Manage Military|secBarracks]]>><</link>>
-			</span> @@.cyan;[Shift+A]@@
-		<</if>>
-		<<if $riotCenter > 0 && _Pass != "riotControlCenter">>
-			<span id="riotCenter"> <br>
-				<<link [[Manage Rebels|riotControlCenter]]>><</link>>
-			</span> @@.cyan;[Shift+R]@@
-		<</if>>
-	<</if>>
-<</widget>>
diff --git a/src/interaction/policies/policies.tw b/src/interaction/policies/policies.tw
index 29c2524ffa83ca9d916068e8aa464c090f294e94..cd3de14313d8f410571e5d11793e479a2ba2c206 100644
--- a/src/interaction/policies/policies.tw
+++ b/src/interaction/policies/policies.tw
@@ -1,4 +1,4 @@
-:: Policies [nobr]
+:: Policies [nobr jump-to-safe jump-from-safe]
 
 <style>
 .active {
diff --git a/src/personalAssistant/assistantOptions.tw b/src/personalAssistant/assistantOptions.tw
index ba4862b23a3f8b03d5dd59a18d0fbdb62a7eded3..9703a66d5e09a57b7af7eeaabbaefe9e6691bc2c 100644
--- a/src/personalAssistant/assistantOptions.tw
+++ b/src/personalAssistant/assistantOptions.tw
@@ -1,4 +1,4 @@
-:: Personal assistant options [nobr]
+:: Personal assistant options [nobr jump-to-safe jump-from-safe]
 
 <<set $nextButton = "Back", $nextLink = "Main">>
 
diff --git a/src/pregmod/incubator.tw b/src/pregmod/incubator.tw
index 65a4748933a59a2c47848333ca2b6d28da936c83..3b04c078da90a3e67ecea272d27b8f4460f43c74 100644
--- a/src/pregmod/incubator.tw
+++ b/src/pregmod/incubator.tw
@@ -1,4 +1,4 @@
-:: Incubator [nobr]
+:: Incubator [nobr jump-to-safe jump-from-safe]
 
 <<set $nextButton = "Back to Main", $nextLink = "Main", $returnTo = "Incubator", $encyclopedia = "The Incubation Facility">>
 <<set $targetAge = Number($targetAge) || $minimumSlaveAge>>
diff --git a/src/pregmod/theBlackMarket.tw b/src/pregmod/theBlackMarket.tw
index bb47f7c81a933207856eacb4004c7680e406af04..f0113cd964357e4ab05158b66ea8a718463cb101 100644
--- a/src/pregmod/theBlackMarket.tw
+++ b/src/pregmod/theBlackMarket.tw
@@ -1,4 +1,4 @@
-:: The Black Market [nobr]
+:: The Black Market [nobr jump-to-safe jump-from-safe]
 
 <<set $nextButton = "Back", $nextLink = "Main", $returnTo = "Main", $encyclopedia = "The Black Market">>
 
diff --git a/src/uncategorized/arcade.tw b/src/uncategorized/arcade.tw
index ba4f540aeae913f689fde41c011b74081b5c61b3..37823197d061dfd6483dd3e216b802784b8c78c7 100644
--- a/src/uncategorized/arcade.tw
+++ b/src/uncategorized/arcade.tw
@@ -1,4 +1,4 @@
-:: Arcade [nobr]
+:: Arcade [nobr jump-to-safe jump-from-safe]
 
 <<set $nextButton = "Back to Main", $nextLink = "Main", $returnTo = "Arcade", $encyclopedia = "Arcade", _AL = App.Entity.facilities.arcade.employeesIDs().size>>
 
diff --git a/src/uncategorized/brothel.tw b/src/uncategorized/brothel.tw
index 837f5efc26d8c6ca0e2659dcc66e461a7e7bc270..8cecc0d4392b290e9fa91da566d9b255956f0262 100644
--- a/src/uncategorized/brothel.tw
+++ b/src/uncategorized/brothel.tw
@@ -1,4 +1,4 @@
-:: Brothel [nobr]
+:: Brothel [nobr jump-to-safe jump-from-safe]
 
 <<set $nextButton = "Back to Main", $nextLink = "Main", $returnTo = "Brothel", $encyclopedia = "Brothel", _BL = App.Entity.facilities.brothel.employeesIDs().size>>
 
diff --git a/src/uncategorized/club.tw b/src/uncategorized/club.tw
index 8e77c328305925f9310a8d8d2e2366e62ac2fcf0..2a779b3a3708938d2a7b023d220c2f62a9de0283 100644
--- a/src/uncategorized/club.tw
+++ b/src/uncategorized/club.tw
@@ -1,4 +1,4 @@
-:: Club [nobr]
+:: Club [nobr jump-to-safe jump-from-safe]
 
 <<set $nextButton = "Back to Main", $nextLink = "Main", $returnTo = "Club", $encyclopedia = "Club", _CL = App.Entity.facilities.club.employeesIDs().size>>
 
diff --git a/src/uncategorized/dairy.tw b/src/uncategorized/dairy.tw
index 94c52c5a02bcf842e95fc9204c07c29a11bc5924..b395aa8a853a39e487cd386823b1dc53d46e859f 100644
--- a/src/uncategorized/dairy.tw
+++ b/src/uncategorized/dairy.tw
@@ -1,4 +1,4 @@
-:: Dairy [nobr]
+:: Dairy [nobr jump-to-safe jump-from-safe]
 
 <<set _slaves = App.Utils.sortedEmployees(App.Entity.facilities.dairy)>>
 <<set $nextButton = "Back to Main", $nextLink = "Main", $returnTo = "Dairy", $encyclopedia = "Dairy", _SL = $slaves.length, _DL = _slaves.length>>
diff --git a/src/uncategorized/futureSociety.tw b/src/uncategorized/futureSociety.tw
index 0823900a7425aa297880fa87c8cbc0d556bd3439..0053f2d4503c63eb33461461b8fe116bf816d6d0 100644
--- a/src/uncategorized/futureSociety.tw
+++ b/src/uncategorized/futureSociety.tw
@@ -1,4 +1,4 @@
-:: Future Society [nobr]
+:: Future Society [nobr jump-to-safe jump-from-safe]
 
 <<setAssistantPronouns>>
 <<set $nextButton = "Back", $nextLink = "Main", $encyclopedia = "Future Societies", $FSReminder = "">>
diff --git a/src/uncategorized/hgSelect.tw b/src/uncategorized/hgSelect.tw
index b1595ad809c406df1d3da55e7cc2f31cdcb2367e..d84ed190e4314ebd3c5dc33362ed1be2c55bfae5 100644
--- a/src/uncategorized/hgSelect.tw
+++ b/src/uncategorized/hgSelect.tw
@@ -1,4 +1,4 @@
-:: HG Select [nobr]
+:: HG Select [nobr jump-to-safe jump-from-safe]
 
 <<set $nextButton = "Back to Main", $nextLink = "Main", $encyclopedia = "Head Girl">>
 
diff --git a/src/uncategorized/neighborInteract.tw b/src/uncategorized/neighborInteract.tw
index dda077d9ef4fb3c7e53e1be587ea5f85554b56f2..73d6c14c3e10bc4311af80f3965ef47d4d563180 100644
--- a/src/uncategorized/neighborInteract.tw
+++ b/src/uncategorized/neighborInteract.tw
@@ -1,4 +1,4 @@
-:: Neighbor Interact [nobr]
+:: Neighbor Interact [nobr jump-to-safe jump-from-safe]
 
 <<if def $buyArcologyDirection>>
 	<<run delete $buyArcologyDirection>>
diff --git a/src/uncategorized/pit.tw b/src/uncategorized/pit.tw
index 87fc9402c86f6b349d01f1a972bf3dbe75233b88..88b3f79797b64931c649fe99c7c37f8b604b9c1f 100644
--- a/src/uncategorized/pit.tw
+++ b/src/uncategorized/pit.tw
@@ -1,4 +1,4 @@
-:: Pit [nobr]
+:: Pit [nobr jump-to-safe jump-from-safe]
 
 <<set $nextButton = "Back to Main", $nextLink = "Main", $returnTo = "Pit", $encyclopedia = "Pit", _DL = $fighterIDs.length, _SL = $slaves.length, _CL = $canines.length, _HL = $hooved.length, _FL = $felines.length>>
 <<if $pitName != "the Pit">>
diff --git a/src/uncategorized/wardrobe.tw b/src/uncategorized/wardrobe.tw
index 77435f54c98f4d1925eb4bc5ff90aad9e56a90a5..4859b05c7cd64511dff75f53bcb892a1dedffcee 100644
--- a/src/uncategorized/wardrobe.tw
+++ b/src/uncategorized/wardrobe.tw
@@ -1,4 +1,4 @@
-:: Wardrobe [nobr]
+:: Wardrobe [nobr jump-to-safe jump-from-safe]
 
 <<set $nextButton = "Back", $nextLink = "Manage Penthouse">>