diff --git a/src/005-passages/facilitiesPassages.js b/src/005-passages/facilitiesPassages.js
index 7cc3640ea05ce90f289661635ec2bcd189f755c3..d111733c1d5b89dd4af44a8c6951b9eacf8efe32 100644
--- a/src/005-passages/facilitiesPassages.js
+++ b/src/005-passages/facilitiesPassages.js
@@ -40,18 +40,144 @@ new App.DomPassage("Agent Select",
 		V.nextLink = "Neighbor Interact";
 		V.encyclopedia = "Agents";
 
-		const f = document.createDocumentFragment();
-		App.UI.DOM.appendNewElement("h2", f, "Appoint an Agent from your devoted slaves");
+		return App.Facilities.AgentSelect();
+	}, ["jump-from-safe"]
+);
 
-		f.append(App.UI.SlaveList.slaveSelectionList(
-			s => App.Entity.facilities.arcologyAgent.manager.checkRequirements(s),
-			(slave) => App.UI.DOM.passageLink(SlaveFullName(slave), "Agent Workaround",
-				() => { V.i = V.slaves.findIndex((s) => s.ID === slave.ID); }),
-			s => App.Entity.facilities.arcologyAgent.manager.slaveHasExperience(s)
-		));
+new App.DomPassage("Attendant Select",
+	() => {
+		V.nextButton = "Back";
+		V.nextLink = "Spa";
+		V.encyclopedia = "Attendant";
 
-		return f;
-	}, ["jump-from-safe"]
+		return App.Facilities.AttendantSelect();
+	}, ["jump-to-safe", "jump-hidden", "jump-from-safe"]
+);
+
+new App.DomPassage("BG Select",
+	() => {
+		V.nextButton = "Back to Main";
+		V.nextLink = "Main";
+		V.encyclopedia = "Bodyguard";
+
+		return App.Facilities.BGSelect();
+	}, ["jump-to-safe", "jump-hidden", "jump-from-safe"]
+);
+
+new App.DomPassage("Concubine Select",
+	() => {
+		V.nextButton = "Back";
+		V.nextLink = "Master Suite";
+		V.encyclopedia = "Concubine";
+
+		return App.Facilities.ConcubineSelect();
+	}, ["jump-to-safe", "jump-hidden", "jump-from-safe"]
+);
+
+new App.DomPassage("DJ Select",
+	() => {
+		return App.Facilities.DJSelect();
+	}, ["jump-to-safe", "jump-hidden", "jump-from-safe"]
+);
+
+new App.DomPassage("HG Select",
+	() => {
+		V.nextButton = "Back to Main";
+		V.nextLink = "Main";
+		V.encyclopedia = "Head Girl";
+
+		return App.Facilities.HGSelect();
+	}, ["jump-to-safe", "jump-hidden", "jump-from-safe"]
+);
+
+new App.DomPassage("Madam Select",
+	() => {
+		V.nextButton = "Back";
+		V.nextLink = "Brothel";
+		V.encyclopedia = "Madam";
+
+		return App.Facilities.MadamSelect();
+	}, ["jump-to-safe", "jump-hidden", "jump-from-safe"]
+);
+
+new App.DomPassage("Milkmaid Select",
+	() => {
+		V.nextButton = "Back";
+		V.nextLink = "Dairy";
+		V.encyclopedia = "Milkmaid";
+
+		return App.Facilities.MilkmaidSelect();
+	}, ["jump-to-safe", "jump-hidden", "jump-from-safe"]
+);
+
+new App.DomPassage("Nurse Select",
+	() => {
+		V.nextButton = "Back";
+		V.nextLink = "Clinic";
+		V.encyclopedia = "Nurse";
+
+		return App.Facilities.NurseSelect();
+	}, ["jump-to-safe", "jump-hidden", "jump-from-safe"]
+);
+
+new App.DomPassage("Recruiter Select",
+	() => {
+		V.nextButton = "Back to Main";
+		V.nextLink = "Main";
+		V.encyclopedia = "Recruiter";
+
+		return App.Facilities.RecruiterSelect();
+	}, ["jump-to-safe", "jump-hidden", "jump-from-safe"]
+);
+
+new App.DomPassage("Schoolteacher Select",
+	() => {
+		V.nextButton = "Back";
+		V.nextLink = "Schoolroom";
+		V.encyclopedia = "Schoolteacher";
+
+		return App.Facilities.SchoolTeacherSelect();
+	}, ["jump-to-safe", "jump-hidden", "jump-from-safe"]
+);
+
+new App.DomPassage("Stewardess Select",
+	() => {
+		V.nextButton = "Back";
+		V.nextLink = "Servants' Quarters";
+		V.encyclopedia = "Stewardess";
+
+		return App.Facilities.StewardessSelect();
+	}, ["jump-to-safe", "jump-hidden", "jump-from-safe"]
+);
+
+new App.DomPassage("Wardeness Select",
+	() => {
+		V.nextButton = "Back";
+		V.nextLink = "Cellblock";
+		V.encyclopedia = "Wardeness";
+
+		return App.Facilities.WardenessSelect();
+	}, ["jump-to-safe", "jump-hidden", "jump-from-safe"]
+);
+
+new App.DomPassage("Farmer Select",
+	() => {
+		V.nextButton = "Back";
+		V.nextLink = "Farmyard";
+		V.encyclopedia = "Farmer";
+
+		return App.Facilities.FarmerSelect();
+	}, ["jump-to-safe", "jump-hidden", "jump-from-safe"]
+);
+
+new App.DomPassage("Matron Select",
+	() => {
+		V.nextButton = "Back";
+		V.nextLink = "Nursery";
+		V.encyclopedia = "Matron";
+
+		return App.Facilities.MatronSelect();
+	}, ["jump-to-safe", "jump-hidden", "jump-from-safe"]
 );
 
 new App.DomPassage("Rules Assistant",
diff --git a/src/endWeek/slaveAssignmentReport.js b/src/endWeek/slaveAssignmentReport.js
index 2c5745850af6ed89473dd911639d797bf9185eb7..96c0dfc96fac4d83624b144ffc0421d3da2c8caa 100644
--- a/src/endWeek/slaveAssignmentReport.js
+++ b/src/endWeek/slaveAssignmentReport.js
@@ -183,7 +183,7 @@ App.EndWeek.slaveAssignmentReport = function() {
 			App.EndWeek.saVars.HGEnergy = 0;
 		}
 		if (canAchieveErection(slave)) {
-			App.EndWeek.saVars.HGCum = 2 + Math.trunc((slave.balls / 5) + (slave.energy / 95) + (slave.health.condition / 95) + (slave.devotion / 95) + (V.reproductionFormula * 5));
+			App.EndWeek.saVars.HGCum = resetHGCum(slave);
 		}
 	}
 
diff --git a/src/facilities/AgentSelect.js b/src/facilities/AgentSelect.js
new file mode 100644
index 0000000000000000000000000000000000000000..1d67d8d8eb6bbc73eefac04b76f477fc2b781d48
--- /dev/null
+++ b/src/facilities/AgentSelect.js
@@ -0,0 +1,12 @@
+App.Facilities.AgentSelect = function() {
+	const f = document.createDocumentFragment();
+
+	App.UI.DOM.appendNewElement("h2", f, "Appoint an Agent from your devoted slaves");
+	f.append(App.UI.SlaveList.slaveSelectionList(
+		s => App.Entity.facilities.arcologyAgent.manager.checkRequirements(s),
+		(slave) => App.UI.DOM.passageLink(SlaveFullName(slave), "Agent Workaround",
+			() => { V.i = V.slaves.findIndex((s) => s.ID === slave.ID); }),
+		s => App.Entity.facilities.arcologyAgent.manager.slaveHasExperience(s)
+	));
+	return f;
+};
diff --git a/src/facilities/armory/BGSelect.js b/src/facilities/armory/BGSelect.js
new file mode 100644
index 0000000000000000000000000000000000000000..1a8115b75bea69454251bc416b1a42d3324dabca
--- /dev/null
+++ b/src/facilities/armory/BGSelect.js
@@ -0,0 +1,21 @@
+App.Facilities.BGSelect = function() {
+	let div = document.createElement("div");
+	const f = document.createDocumentFragment();
+
+	if (S.Bodyguard) {
+		f.append(`${SlaveFullName(S.Bodyguard)} is working as your Bodyguard, remaining close to you at all times and guards your person. `);
+		f.append(App.UI.DOM.link("Remove Bodyguard", () => {
+			removeJob(S.Bodyguard, Job.BODYGUARD);
+		},
+		[], "Main"
+		));
+	} else {
+		f.append(`No Bodyguard assigned, appoint one from your devoted slaves.`);
+	}
+
+	div.append(App.UI.DOM.makeCheckbox("bodyguardTrains"), " Can train potential successors.");
+	f.append(div);
+
+	f.append(App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.armory, "Main"));
+	return f;
+};
diff --git a/src/facilities/brothel/MadamSelect.js b/src/facilities/brothel/MadamSelect.js
new file mode 100644
index 0000000000000000000000000000000000000000..1d883bcb9495f1943971b38445b0af1c370e8d01
--- /dev/null
+++ b/src/facilities/brothel/MadamSelect.js
@@ -0,0 +1,17 @@
+App.Facilities.MadamSelect = function() {
+	const f = document.createDocumentFragment();
+
+	if (S.Madam) {
+		f.append(`Madam: ${SlaveFullName(S.Madam)}, manages the brothel. `);
+		f.append(App.UI.DOM.link("Remove Madam", () => {
+			removeJob(S.Madam, Job.MADAM);
+		},
+		[], "Brothel"
+		));
+	} else {
+		f.append(`No Madam assigned, appoint one from your devoted slaves.`);
+	}
+
+	f.append(App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.brothel, "Brothel"));
+	return f;
+};
diff --git a/src/facilities/cellblock/WardenessSelect.js b/src/facilities/cellblock/WardenessSelect.js
new file mode 100644
index 0000000000000000000000000000000000000000..ab9b749520f639806bb2db72f841b5958d28ba8e
--- /dev/null
+++ b/src/facilities/cellblock/WardenessSelect.js
@@ -0,0 +1,17 @@
+App.Facilities.WardenessSelect = function() {
+	const f = document.createDocumentFragment();
+
+	if (S.Wardeness) {
+		f.append(`Wardeness: ${SlaveFullName(S.Wardeness)}, helps breaking your prisoners. `);
+		f.append(App.UI.DOM.link("Remove Wardeness", () => {
+			removeJob(S.Wardeness, Job.WARDENESS);
+		},
+		[], "Cellblock"
+		));
+	} else {
+		f.append(`No Wardeness assigned, appoint one from your devoted slaves.`);
+	}
+
+	f.append(App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.cellblock, "Cellblock"));
+	return f;
+};
diff --git a/src/facilities/clinic/NurseSelect.js b/src/facilities/clinic/NurseSelect.js
new file mode 100644
index 0000000000000000000000000000000000000000..b63ebff3cbeab4653a8ef2e22cb9e88bef1b0901
--- /dev/null
+++ b/src/facilities/clinic/NurseSelect.js
@@ -0,0 +1,17 @@
+App.Facilities.NurseSelect = function() {
+	const f = document.createDocumentFragment();
+
+	if (S.Nurse) {
+		f.append(`${SlaveFullName(S.Nurse)} is working as your Nurse, helping to heal your slaves. `);
+		f.append(App.UI.DOM.link("Remove Nurse", () => {
+			removeJob(S.Nurse, Job.NURSE);
+		},
+		[], "Clinic"
+		));
+	} else {
+		f.append(`No Nurse assigned, appoint one from your devoted slaves.`);
+	}
+
+	f.append(App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.clinic, "Clinic"));
+	return f;
+};
diff --git a/src/facilities/club/DJSelect.js b/src/facilities/club/DJSelect.js
new file mode 100644
index 0000000000000000000000000000000000000000..0c9709074305f1a13092b2543b5366d85db82500
--- /dev/null
+++ b/src/facilities/club/DJSelect.js
@@ -0,0 +1,20 @@
+App.Facilities.DJSelect = function() {
+	const f = document.createDocumentFragment();
+	V.nextButton = "Back";
+	V.nextLink = "Club";
+	V.encyclopedia = "DJ";
+
+	if (S.DJ) {
+		f.append(`${SlaveFullName(S.DJ)} is working as your DJ, managing entertainment in ${V.clubName}. `);
+		f.append(App.UI.DOM.link("Remove DJ", () => {
+			removeJob(S.Concubine, Job.DJ);
+		},
+		[], "Club"
+		));
+	} else {
+		f.append(`No DJ assigned, appoint one from your devoted slaves.`);
+	}
+
+	f.append(App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.club, "Club"));
+	return f;
+};
diff --git a/src/facilities/dairy/MilkmaidSelect.js b/src/facilities/dairy/MilkmaidSelect.js
new file mode 100644
index 0000000000000000000000000000000000000000..71d0137889fecd798c6cbb54bc5c51b4c76a1903
--- /dev/null
+++ b/src/facilities/dairy/MilkmaidSelect.js
@@ -0,0 +1,17 @@
+App.Facilities.MilkmaidSelect = function() {
+	const f = document.createDocumentFragment();
+
+	if (S.Milkmaid) {
+		f.append(`${SlaveFullName(S.Milkmaid)} is working as your Milkmaid, looking after your livestock, helping them give milk${V.seeDicks > 0 ? ' and semen' : ''}. `);
+		f.append(App.UI.DOM.link("Remove Milkmaid", () => {
+			removeJob(S.Milkmaid, Job.MILKMAID);
+		},
+		[], "Dairy"
+		));
+	} else {
+		f.append(`No Milkmaid assigned, appoint one from your devoted slaves.`);
+	}
+
+	f.append(App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.dairy, "Dairy"));
+	return f;
+};
diff --git a/src/facilities/farmyard/FarmerSelect.js b/src/facilities/farmyard/FarmerSelect.js
new file mode 100644
index 0000000000000000000000000000000000000000..12e8db3a450746bf8da2218017394d32e94c86c9
--- /dev/null
+++ b/src/facilities/farmyard/FarmerSelect.js
@@ -0,0 +1,17 @@
+App.Facilities.FarmerSelect = function() {
+	const f = document.createDocumentFragment();
+
+	if (S.Farmer) {
+		f.append(`Farmer: ${SlaveFullName(S.Farmer)}, tends to your crops and animals. `);
+		f.append(App.UI.DOM.link("Remove Farmer", () => {
+			removeJob(S.Farmer, Job.FARMER);
+		},
+		[], "Farmyard"
+		));
+	} else {
+		f.append(`No Farmer assigned, appoint one from your devoted slaves.`);
+	}
+
+	f.append(App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.farmyard, "Farmyard"));
+	return f;
+};
diff --git a/src/facilities/farmyard/farmerSelect.tw b/src/facilities/farmyard/farmerSelect.tw
deleted file mode 100644
index dfaadbb1a96df02ad478825766207ce21efd0ea8..0000000000000000000000000000000000000000
--- a/src/facilities/farmyard/farmerSelect.tw
+++ /dev/null
@@ -1,14 +0,0 @@
-:: Farmer Select [nobr jump-to-safe jump-hidden jump-from-safe]
-
-<<set $nextButton = "Back", $nextLink = "Farmyard", $encyclopedia = "Farmer">>
-<<if ($FarmerID != 0)>>
-	<<setLocalPronouns _S.Farmer>>
-	<span class='slave-name'><<= SlaveFullName(_S.Farmer)>></span> is serving as your Farmer.<br><br>$He will tend to your crops and animals.
-<<else>>
-	You have not selected a Farmer.
-<</if>>
-
-<br><br>''Appoint a Farmer from your obedient slaves:''
-<br><br>[[None|Farmyard][removeJob(_S.Farmer, Job.FARMER)]]
-<br><br>
-<<includeDOM App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.farmyard, "Farmyard")>>
diff --git a/src/facilities/masterSuite/ConcubineSelect.js b/src/facilities/masterSuite/ConcubineSelect.js
new file mode 100644
index 0000000000000000000000000000000000000000..289eeb32199ebf51d64f3d3ab8f11681c1a0c424
--- /dev/null
+++ b/src/facilities/masterSuite/ConcubineSelect.js
@@ -0,0 +1,17 @@
+App.Facilities.ConcubineSelect = function() {
+	const f = document.createDocumentFragment();
+
+	if (S.Concubine) {
+		f.append(`${SlaveFullName(S.Concubine)} is your Concubine, taking the lead in seeing to your pleasure. `);
+		f.append(App.UI.DOM.link("Remove Concubine", () => {
+			removeJob(S.Concubine, Job.CONCUBINE);
+		},
+		[], "Master Suite"
+		));
+	} else {
+		f.append(`No Concubine assigned, appoint one from your devoted slaves.`);
+	}
+
+	f.append(App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.masterSuite, "Master Suite"));
+	return f;
+};
diff --git a/src/facilities/nursery/MatronSelect.js b/src/facilities/nursery/MatronSelect.js
new file mode 100644
index 0000000000000000000000000000000000000000..b67973ca9eaed2e25adadda46e11dfdb0aff50f6
--- /dev/null
+++ b/src/facilities/nursery/MatronSelect.js
@@ -0,0 +1,17 @@
+App.Facilities.MatronSelect = function() {
+	const f = document.createDocumentFragment();
+
+	if (S.Matron) {
+		f.append(`${SlaveFullName(S.Matron)} is working as your Matron, managing the nursery. `);
+		f.append(App.UI.DOM.link("Remove Matron", () => {
+			removeJob(S.Matron, Job.MATRON);
+		},
+		[], "Nursery"
+		));
+	} else {
+		f.append(`No Matron assigned, appoint one from your devoted slaves.`);
+	}
+
+	f.append(App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.nursery, "Nursery"));
+	return f;
+};
diff --git a/src/facilities/nursery/matronSelect.tw b/src/facilities/nursery/matronSelect.tw
deleted file mode 100644
index 1f00599be61f945e66b825c517dc574407accc5f..0000000000000000000000000000000000000000
--- a/src/facilities/nursery/matronSelect.tw
+++ /dev/null
@@ -1,14 +0,0 @@
-:: Matron Select [nobr jump-to-safe jump-hidden jump-from-safe]
-
-<<set $nextButton = "Back", $nextLink = "Nursery", $encyclopedia = "Matron">>
-<<if ($MatronID != 0)>>
-	<<setLocalPronouns _S.Matron>>
-	<span class='slave-name'><<= SlaveFullName(_S.Matron)>></span> is serving as your Matron.<br><br>$He will manage the nursery.
-<<else>>
-	You have not selected a Matron.
-<</if>>
-
-<br><br>''Appoint a Matron from your devoted slaves:''
-<br><br>[[None|Nursery][removeJob(_S.Matron, Job.MATRON)]]
-<br><br>
-<<includeDOM App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.nursery, "Nursery")>>
diff --git a/src/facilities/penthouse/HGSelect.js b/src/facilities/penthouse/HGSelect.js
new file mode 100644
index 0000000000000000000000000000000000000000..27b993c23689b74529f269f7ef14bae69ad192e2
--- /dev/null
+++ b/src/facilities/penthouse/HGSelect.js
@@ -0,0 +1,218 @@
+App.Facilities.HGSelect = function() {
+	let HGName = "Your Head Girl";
+	let div = document.createElement("div");
+	const f = document.createDocumentFragment();
+	let r = [];
+	let links = [];
+
+	if (S.HeadGirl) {
+		const {
+			His, He, he,
+			his, him, himself
+		} = getPronouns(S.HeadGirl);
+		HGName = SlaveFullName(S.HeadGirl);
+	}
+
+	App.UI.DOM.appendNewElement("h1", f, "Head Girl Management");
+
+	if (S.HeadGirl) {
+		f.append(`${SlaveFullName(S.HeadGirl)} is working as your HeadGirl. `);
+		if (V.arcologies[0].FSEgyptianRevivalistLaw === 1) {
+			f.append(`${He} is also your Consort; serving and providing comfort, in addition to performing normal Head Girl duties. `);
+		}
+		if (V.HGSuite) {
+			f.append(`Currently living in ${capFirstChar(V.HGSuiteName)} `);
+		}
+		f.append(App.UI.DOM.link("Remove HeadGirl", () => {
+			removeJob(S.HeadGirl, Job.HEADGIRL);
+		},
+		[], "Main"
+		));
+	} else {
+		f.append(`No HeadGirl assigned, appoint one from your devoted slaves.`);
+	}
+
+	App.UI.DOM.appendNewElement("div", f, `Slave training	${HGName} will prioritize enabled items in the following order`, "bold");
+
+	div.append(App.UI.DOM.makeCheckbox("headGirlTrainsHealth"), " Health");
+	App.UI.DOM.appendNewElement("div", f, div, "indent");
+	
+	div = document.createElement("div");
+	div.append(App.UI.DOM.makeCheckbox("headGirlTrainsParaphilias"), " Paraphilias");
+	App.UI.DOM.appendNewElement("div", f, div, "indent");
+	
+	if (V.headGirlTrainsFlaws) {
+		r.push(`${HGName} will train flaws.`,);
+	} else if (V.headGirlSoftensFlaws) {
+		r.push(`${HGName} will softern flaws into quirks.`);
+	} else if (V.headGirlOverridesQuirks) {
+		r.push(`${HGName} will override quirks.`);
+	}
+
+	links.push(App.UI.DOM.link(" Override quirks", () => {
+		V.headGirlTrainsFlaws = 0;
+		V.headGirlSoftensFlaws = 0;
+		V.headGirlOverridesQuirks = 1;
+	},
+	[], passage()
+	));
+	links.push(App.UI.DOM.link(" Soften flaws", () => {
+		V.headGirlTrainsFlaws = 0;
+		V.headGirlSoftensFlaws = 1;
+		V.headGirlOverridesQuirks = 0;
+	},
+	[], passage()
+	));
+	links.push(App.UI.DOM.link(" Train flaws", () => {
+		V.headGirlTrainsFlaws = 1;
+		V.headGirlSoftensFlaws = 0;
+		V.headGirlOverridesQuirks = 0;
+	},
+	[], passage()
+	));
+	
+	r.push(App.UI.DOM.generateLinksStrip(links));
+	App.Events.addNode(f, r, "div", "indent");
+
+	div = document.createElement("div");
+	div.append(App.UI.DOM.makeCheckbox("headGirlTrainsObedience"), " Obedience");
+	App.UI.DOM.appendNewElement("div", f, div, "indent");
+
+	div = document.createElement("div");
+	div.append(App.UI.DOM.makeCheckbox("headGirlTrainsSkills"), " Skills");
+	App.UI.DOM.appendNewElement("div", f, div, "indent");
+
+	App.UI.DOM.appendNewElement("div", f, "Training methods: ", "underline");
+	
+	r = [];
+	if (V.HGSeverity === 1) {
+		r.push(`${HGName} will be <span class="bold">aggressive</span> when punishing, with rape strongly encouraged.`);
+		r.push(App.UI.DOM.link(" Moderate", () => {
+			V.HGSeverity = 0;
+		},
+		[], passage()
+		));
+	} else if (V.HGSeverity === 0) {
+		links = [];
+		r.push(`${HGName} will be <span class="bold">moderate</span> when punishing, carefully selecting appropriate consequences.`);
+		links.push(App.UI.DOM.link(" Be aggressive", () => {
+			V.HGSeverity = 1;
+		},
+		[], passage()
+		));
+		links.push(App.UI.DOM.link(` Apply restrictions`, () => {
+			V.HGSeverity = -1;
+		},
+		[], passage()
+		));
+		r.push(App.UI.DOM.generateLinksStrip(links));
+	} else if (V.HGSeverity === -1) {
+		r.push(`${HGName} will be <span class="bold">respectful</span> when punishing, treating slaves decently.`);
+		r.push(App.UI.DOM.link(" Be stricter", () => {
+			V.HGSeverity = 0;
+		},
+		[], passage()
+		));
+	}
+	App.Events.addNode(f, r, "div", "indent");
+
+	r = [];
+	if (V.HGPiercings === 1) {
+		r.push(`${HGName} is <span class="bold">allowed</span> to use piercings as a tool to improve slaves' attitudes.`);
+		r.push(App.UI.DOM.link(" Disallow", () => {
+			V.HGPiercings = 0;
+		},
+		[], passage()
+		));
+	} else {
+		r.push(`${HGName} is <span class="bold">not allowed</span> to use piercings as a tool to improve slaves' attitudes.`);
+		r.push(App.UI.DOM.link(" Allow", () => {
+			V.HGPiercings = 1;
+		},
+		[], passage()
+		));
+	}
+	App.Events.addNode(f, r, "div", "indent");
+
+	r = [];
+	App.UI.DOM.appendNewElement("div", f, "Behavior towards you: ", "underline");
+	if (V.HGFormality === 1) {
+		r.push(`${HGName} will be <span class="bold">formal:</span> you will always be called ${getWrittenTitle(S.HeadGirl)}, just like any other slave.`);
+		r.push(App.UI.DOM.link(" Allow private informality", () => {
+			V.HGFormality = 0;
+		},
+		[], passage()
+		));
+	} else {
+		r.push(`${HGName} is allowed to be <span class="bold">informal:</span> in private, you can be called ${properTitle()}.`);
+		r.push(App.UI.DOM.link(" Maintain complete formality", () => {
+			V.HGFormality = 1;
+		},
+		[], passage()
+		));
+	}
+	App.Events.addNode(f, r, "div", "indent");
+
+	if (V.seePreg !== 0 && S.HeadGirl) {
+		if (V.universalRulesImpregnation === "HG") {
+			f.append(`${HGName} is responsible for impregnating fertile slaves.`);
+			V.HGCum = resetHGCum(S.HeadGirl);
+			if (canPenetrate(S.HeadGirl) && S.HeadGirl.pubertyXY === 1) {
+				f.append(`To maximize the chances of impregnation, ${he} will fuck fertile pussies frequently during the week. ${S.HeadGirl.slaveName} can service ${V.HGCum} slaves this way.`);
+				if (S.HeadGirl.devotion > 95) {
+					f.append(`${He} loves you so much ${he}'ll fuck them until ${he}'s sore.`);
+				} else {
+					f.append(`If ${he} were more devoted to you, ${he} might be able to drive ${himself} to get hard and service one more.`);
+				}
+				if (S.HeadGirl.balls >= 120) {
+					r.push(`${His} unreal balls produce nearly an endless supply of semen; ${his} ability to impregnate is almost limitless.`);
+				} else if (S.HeadGirl.balls >= 80) {
+					r.push(`${His} inhuman balls produce so much semen ${he} can easily impregnate twenty girls in one sitting.`);
+				} else if (S.HeadGirl.balls >= 50) {
+					r.push(`${His} giant balls produce so much semen ${he} can easily impregnate twelve girls in one sitting.`);
+				} else if (S.HeadGirl.balls >= 25) {
+					r.push(`${His} oversized balls produce so much semen ${he} can cum repeatedly in a single session.`);
+				} else if (S.HeadGirl.balls >= 5) {
+					r.push(`${His} big balls produce so much semen ${he} can cum more before ${he}'s drained.`);
+				} else {
+					r.push(`Bigger balls would let ${him} cum more before ${he}'s drained.`);
+				}
+				if (S.HeadGirl.health.condition > 95) {
+					f.append(`${His} wonderful health lets ${him} get hard and stay hard all the time.`);
+				} else {
+					f.append(`If ${his} health were perfect, ${he} might be able to get hard more often.`);
+				}
+				if (S.HeadGirl.energy > 95) {
+					f.append(`${His} nymphomania drives ${him} to go above and beyond in this.`);
+				} else {
+					f.append(`A more powerful sex drive could reduce ${his} refractory period.`);
+				}
+			} else {
+				f.append(`However, ${S.HeadGirl.slaveName} cannot perform this duty.`);
+			}
+			r.push(App.UI.DOM.link(` Rescind ${his} impregnation responsibility`, () => {
+				V.universalRulesImpregnation = "none";
+			},
+			[], passage()
+			));
+			r.push(App.UI.DOM.link(` See to it yourself`, () => {
+				V.universalRulesImpregnation = "PC";
+			},
+			[], passage()
+			));
+			f.append(App.UI.DOM.generateLinksStrip(r));
+		} else {
+			if (canPenetrate(S.HeadGirl) && S.HeadGirl.pubertyXY === 1) {
+				App.UI.DOM.appendNewElement("div", f, `${HGName} is capable of impregnating slaves, but it's not part of ${his} responsibilities.`).append(
+					App.UI.DOM.link(` Assign ${him} to impregnate`, () => {
+						V.universalRulesImpregnation = "HG";
+					},
+					[], passage()
+					));
+			}
+		}
+	}
+
+	f.append(App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.headGirlSuite, "Main"));
+	return f;
+};
diff --git a/src/facilities/penthouse/RecruiterSelect.js b/src/facilities/penthouse/RecruiterSelect.js
new file mode 100644
index 0000000000000000000000000000000000000000..8f143a82e5906260efded3d1c1b1e4c8c27b89c3
--- /dev/null
+++ b/src/facilities/penthouse/RecruiterSelect.js
@@ -0,0 +1,160 @@
+App.Facilities.RecruiterSelect = function() {
+	const f = document.createDocumentFragment();
+	const recruiterCap = document.createDocumentFragment();
+	let newLine = document.createElement("div");
+	let r = [];
+
+	if (S.Recruiter) {
+		f.append(`${SlaveFullName(S.Recruiter)} is working as your Recruiter, currently ${V.recruiterTarget !== "other arcologies" ? 'recruiting girls. ' : 'acting as a sexual Ambassador'}`);
+		if (V.recruiterTarget === "other arcologies") {
+			if (V.arcologies[0].influenceTarget === -1) {
+				f.append(`.<span class='red'>Since you have not selected another arcology to influence, your recruiter's talents are going to waste. Select an influence target to apply them. `);
+			} else {
+				f.append(` to `);
+				for (const arc of V.arcologies) {
+					if (arc.direction === V.arcologies[0].influenceTarget) {
+						f.append(`${arc.name}` );
+						break;
+					}
+				}
+			}
+		}
+		f.append(App.UI.DOM.link("Remove Recruiter", () => {
+			removeJob(S.Recruiter, Job.RECRUITER);
+		},
+		[], "Main"
+		));
+	} else {
+		f.append(`No Recruiter assigned, appoint one from your devoted slaves.`);
+	}
+
+	App.UI.DOM.appendNewElement("div", f);
+	f.append(`Your recruiter will target ${V.recruiterTarget}, `);
+	if (V.recruiterTarget === "desperate whores") {
+		f.append("they will be skilled but unhealthy. ");
+	} else if (V.recruiterTarget === "young migrants") {
+		f.append("they will be young and inexperienced but unhealthy. ");
+	} else if (V.recruiterTarget === "Will be mature") {
+		f.append("they will be mature. ");
+	} else if (V.recruiterTarget === "expectant mothers") {
+		f.append("they will be pregnant and likely unhealthy. ");
+	} else if (V.recruiterTarget === "dissolute sissies") {
+		f.append("they will be born male and have some experience. ");
+	} else if (V.recruiterTarget === "reassignment candidates") {
+		f.append("they will be born male. ");
+	} else if (V.recruiterTarget === "other arcologies") {
+		f.append("they will appoint the Recruiter to be a sexual Ambassador. ");
+	}
+
+	r.push(App.UI.DOM.link(`Desperate whores`, () => {
+		V.recruiterTarget = "desperate whores";
+	},
+	[], passage()
+	));
+
+	r.push(App.UI.DOM.link("Young migrants", () => {
+		V.recruiterTarget = "young migrants";
+	},
+	[], passage()
+	));
+
+	r.push(App.UI.DOM.link("Recent divorcees", () => {
+		V.recruiterTarget = "recent divorcees";
+	},
+	[], passage()
+	));
+
+	if (V.seeDicks !== 100 && V.seePreg !== 0) {
+		r.push(App.UI.DOM.link("Expectant mothers", () => {
+			V.recruiterTarget = "expectant mothers";
+		},
+		[], passage()
+		));
+	}
+
+	if (V.seeDicks !== 0) {
+		r.push(App.UI.DOM.link("Dissolute sissies", () => {
+			V.recruiterTarget = "dissolute sissies";
+		},
+		[], passage()
+		));
+
+		r.push(App.UI.DOM.link("Reassignment candidates", () => {
+			V.recruiterTarget = "reassignment candidates";
+		},
+		[], passage()
+		));
+	}
+
+	if (V.arcologies.length > 1) {
+		r.push(App.UI.DOM.link("Other arcologies' cultures", () => {
+			V.oldRecruiterTarget = V.recruiterTarget;
+			V.recruiterTarget = "other arcologies";
+		},
+		[], passage()
+		));
+	}
+
+	f.append(App.UI.DOM.generateLinksStrip(r));
+
+	newLine.append(App.UI.DOM.makeCheckbox("recruiterEugenics"), App.UI.DOM.makeElement("note", " Target only individuals that can pass eugenics SMRs. This option will increase time it takes to recruit depending on how many eugenics SMR are active."));
+	f.append(newLine);
+
+	let idleTarget = 2 +
+	(V.brothel + V.club + V.arcade + V.dairy + V.servantsQuarters) +
+	V.masterSuite + V.HGSuite + V.dojo + V.brothel + V.club;
+	if (V.dairy && V.dairyRestraintsSetting < 2) {
+		idleTarget++;
+	}
+	idleTarget += V.farmyard + V.servantsQuarters + V.masterSuite + V.schoolroom + V.spa;
+	idleTarget += V.nursery + V.clinic + V.cellblock;
+
+	newLine = document.createElement("div");
+	newLine.append("Suspend active recruiting and focus on publicity when: ");
+	if (V.recruiterIdleRule === "number") {
+		newLine.append(`${V.recruiterIdleNumber} sex slaves owned`);
+	} else if (V.recruiterIdleRule === "facility") {
+		newLine.append(`match facility expansion, `);
+		if (idleTarget >= 20) {
+			newLine.append(`${idleTarget} positions.`);
+		} else {
+			newLine.append("20 positions (rule minimum).");
+		}
+	} else {
+		newLine.append("always recruit");
+	}
+	f.append(newLine);
+
+	r = [];
+	r.push(App.UI.DOM.link("Always recruit", () => {
+		V.recruiterIdleRule = "always";
+	},
+	[], passage()
+	));
+	r.push(App.UI.DOM.link("Facilities & leadership", () => {
+		V.recruiterIdleRule = "facility";
+	},
+	[], passage()
+	));
+
+	recruiterCap.append(App.UI.DOM.link("Set to this many slaves ", () => {
+		V.recruiterIdleRule = "number";
+	},
+	[], passage()
+	));
+	if (V.recruiterIdleRule === "number") {
+		recruiterCap.append(App.UI.DOM.makeTextBox(V.recruiterIdleNumber, (v) => {
+			V.recruiterIdleNumber = v;
+			Engine.play(passage());
+		}, true));
+	}
+	r.push(recruiterCap);
+
+	f.append(App.UI.DOM.generateLinksStrip(r));
+	App.UI.DOM.appendNewElement("div", f, "'Facilities' doesn't include training slots in cellblock, schoolroom, spa, clinic (but does include those leaders)");
+
+	V.recruiterIdleNumber = Math.max(Math.trunc(Number(V.recruiterIdleNumber) || 20), 20);
+
+	f.append(App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.penthouse, "Main"));
+	return f;
+};
diff --git a/src/facilities/schoolroom/SchoolTeacherSelect.js b/src/facilities/schoolroom/SchoolTeacherSelect.js
new file mode 100644
index 0000000000000000000000000000000000000000..8501f5f29a9768cbdcc22ecc94e6ea93032cf53a
--- /dev/null
+++ b/src/facilities/schoolroom/SchoolTeacherSelect.js
@@ -0,0 +1,17 @@
+App.Facilities.SchoolTeacherSelect = function() {
+	const f = document.createDocumentFragment();
+
+	if (S.Schoolteacher) {
+		f.append(`${SlaveFullName(S.Schoolteacher)} is working as your Schoolteacher, helping to teach your slaves. `);
+		f.append(App.UI.DOM.link("Remove Schoolteacher", () => {
+			removeJob(S.Schoolteacher, Job.TEACHER);
+		},
+		[], "Schoolroom"
+		));
+	} else {
+		f.append(`No Schoolteacher assigned, appoint one from your devoted slaves.`);
+	}
+
+	f.append(App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.schoolroom, "Schoolroom"));
+	return f;
+};
diff --git a/src/facilities/servantsQuarters/StewardessSelect.js b/src/facilities/servantsQuarters/StewardessSelect.js
new file mode 100644
index 0000000000000000000000000000000000000000..cee631852fc790241f045afac9b051ef59907b21
--- /dev/null
+++ b/src/facilities/servantsQuarters/StewardessSelect.js
@@ -0,0 +1,17 @@
+App.Facilities.StewardessSelect = function() {
+	const f = document.createDocumentFragment();
+
+	if (S.Stewardess) {
+		f.append(`${SlaveFullName(S.Stewardess)} is working as your Stewardess, managing the Servants' Quarters. `);
+		f.append(App.UI.DOM.link("Remove Stewardess", () => {
+			removeJob(S.Stewardess, Job.STEWARD);
+		},
+		[], "Servants' Quarters"
+		));
+	} else {
+		f.append(`No Stewardess assigned, appoint one from your devoted slaves.`);
+	}
+
+	f.append(App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.servantsQuarters, "Servants' Quarters"));
+	return f;
+};
diff --git a/src/facilities/spa/AttendantSelect.js b/src/facilities/spa/AttendantSelect.js
new file mode 100644
index 0000000000000000000000000000000000000000..c5cdd28a9d28036cd504ded8a0fb13773b700983
--- /dev/null
+++ b/src/facilities/spa/AttendantSelect.js
@@ -0,0 +1,17 @@
+App.Facilities.AttendantSelect = function() {
+	const f = document.createDocumentFragment();
+
+	if (S.Attendant) {
+		f.append(`${SlaveFullName(S.Attendant)} is working as your Attendant, pampering and counseling your slaves. `);
+		f.append(App.UI.DOM.link("Remove Attendant", () => {
+			removeJob(S.Attendant, Job.ATTENDANT);
+		},
+		[], "Spa"
+		));
+	} else {
+		f.append(`No Attendant assigned, appoint one from your devoted slaves.`);
+	}
+
+	f.append(App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.spa, "Spa"));
+	return f;
+};
diff --git a/src/js/utilsDOM.js b/src/js/utilsDOM.js
index 6ef0785335f9a603419e660d9539e7c9cf4b1a6e..c6ad283d96c664275c21735f1762ad1220dd6c59 100644
--- a/src/js/utilsDOM.js
+++ b/src/js/utilsDOM.js
@@ -536,3 +536,18 @@ App.UI.DOM.makeRow = function(table, ...items) {
 		cell.innerHTML = item;
 	}
 };
+
+/**
+ * Creates a checkbox.
+ * @param arg - item to be checked. Currently only designed to with items that have values of 0 - 1.
+ */
+App.UI.DOM.makeCheckbox = function(arg) {
+	const checkbox = document.createElement("input");
+	checkbox.setAttribute("type", "checkbox");
+	checkbox.checked = (V[arg] === 1);
+
+	checkbox.onchange = () => {
+		V[arg] = checkbox.checked ? 1 : 0;
+	};
+	return checkbox;
+};
diff --git a/src/js/utilsSlave.js b/src/js/utilsSlave.js
index fc914ef55984e879415a152e78ce9db3df6aeb5f..022fab019951c3e911fd88604eaef742b8731ed7 100644
--- a/src/js/utilsSlave.js
+++ b/src/js/utilsSlave.js
@@ -3564,3 +3564,7 @@ globalThis.addPartner = function(slave, partner) {
 		partnerState.partners.add(slave.ID);
 	}
 };
+
+globalThis.resetHGCum = function(s) {
+	return 2 + Math.trunc((s.balls / 5) + (s.energy / 95) + (s.health.condition / 95) + (s.devotion / 95) + (V.reproductionFormula * 5));
+};
diff --git a/src/uncategorized/attendantSelect.tw b/src/uncategorized/attendantSelect.tw
deleted file mode 100644
index f563ca18ad97374086798e02bcee9b96fc7b9285..0000000000000000000000000000000000000000
--- a/src/uncategorized/attendantSelect.tw
+++ /dev/null
@@ -1,14 +0,0 @@
-:: Attendant Select [nobr jump-to-safe jump-hidden jump-from-safe]
-
-<<set $nextButton = "Back", $nextLink = "Spa", $encyclopedia = "Attendant">>
-<<if _S.Attendant>>
-	<<setLocalPronouns _S.Attendant>>
-	<span class='slave-name'><<= SlaveFullName(_S.Attendant)>></span> is serving as your Attendant.<br><br>$He will help pamper and counsel your slaves.
-<<else>>
-	You have not selected an Attendant.
-<</if>>
-
-<br><br>''Appoint an Attendant from your devoted slaves:''
-<br><br>[[None|Spa][removeJob(_S.Attendant, Job.ATTENDANT)]]
-<br><br>
-<<includeDOM App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.spa, "Spa")>>
diff --git a/src/uncategorized/bgSelect.tw b/src/uncategorized/bgSelect.tw
deleted file mode 100644
index a1094cd42992729a37a444d0485d0fe4952b1560..0000000000000000000000000000000000000000
--- a/src/uncategorized/bgSelect.tw
+++ /dev/null
@@ -1,40 +0,0 @@
-:: BG Select [nobr jump-to-safe jump-from-safe]
-
-<<set $nextButton = "Back to Main", $nextLink = "Main", $encyclopedia = "Bodyguard">>
-
-<p class="scene-intro">
-</p>
-
-<p>
-	<<if (_S.Bodyguard)>>
-		<<setLocalPronouns _S.Bodyguard>>
-		<span class="slave-name"><<= SlaveFullName(_S.Bodyguard)>></span>
-		is serving as your bodyguard. $He will remain close to you at all times and guard your person.
-	<<else>>
-		You have not selected a bodyguard.
-	<</if>>
-</p>
-
-<div>
-	<<if $bodyguardTrains == 0>>
-		Your Bodyguard ''is not allowed'' to train potential successors.
-		<div class="choices">
-			[[Allow training|BG Select][$bodyguardTrains = 1]]
-		</div>
-	<<else>>
-		Your Bodyguard ''is allowed'' to train potential successors.
-		<div class="choices">
-			[[Stop training|BG Select][$bodyguardTrains = 0]]
-		</div>
-	<</if>>
-</div>
-
-<div style="font-weight:bold">
-	Appoint a bodyguard from your devoted slaves:
-</div>
-<div class="choices">
-	[[None|Main][removeJob(_S.Bodyguard, Job.BODYGUARD)]]
-</div>
-<p>
-	<<includeDOM App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.armory, "Main")>>
-</p>
diff --git a/src/uncategorized/concubineSelect.tw b/src/uncategorized/concubineSelect.tw
deleted file mode 100644
index bc2b520e072bc93718c5252d550861726e49ff40..0000000000000000000000000000000000000000
--- a/src/uncategorized/concubineSelect.tw
+++ /dev/null
@@ -1,14 +0,0 @@
-:: Concubine Select [nobr jump-to-safe jump-hidden jump-from-safe]
-
-<<set $nextButton = "Back", $nextLink = "Master Suite", $encyclopedia = "Concubine">>
-<<if ($ConcubineID != 0)>>
-	<<setLocalPronouns _S.Concubine>>
-	<span class='slave-name'><<= SlaveFullName(_S.Concubine)>></span> is serving as your Concubine.<br><br>$He will take the lead in seeing to your pleasure.
-<<else>>
-	You have not selected a Concubine.
-<</if>>
-
-<br><br>''Appoint a Concubine from your devoted slaves:''
-<br><br>[[None|Master Suite][removeJob(_S.Concubine, Job.CONCUBINE)]]
-<br><br>
-<<includeDOM App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.masterSuite, "Master Suite")>>
diff --git a/src/uncategorized/djSelect.tw b/src/uncategorized/djSelect.tw
deleted file mode 100644
index 7a962c67acb2dcb087239931f6a6fc6ff834293f..0000000000000000000000000000000000000000
--- a/src/uncategorized/djSelect.tw
+++ /dev/null
@@ -1,14 +0,0 @@
-:: DJ Select [nobr jump-to-safe jump-hidden jump-from-safe]
-
-<<set $nextButton = "Back", $nextLink = "Club", $encyclopedia = "DJ">>
-<<if (_S.DJ)>>
-	<<setLocalPronouns _S.DJ>>
-	<span class='slave-name'><<= SlaveFullName(_S.DJ)>></span> is serving as your DJ.<br><br>$He will headline entertainment in $clubName.
-<<else>>
-	You have not selected a DJ.
-<</if>>
-
-<br><br>''Appoint a DJ from your devoted slaves:''
-<br><br>[[None|Club][removeJob(_S.DJ, "be the DJ")]]
-<br><br>
-<<includeDOM App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.club, "Club")>>
diff --git a/src/uncategorized/hgSelect.tw b/src/uncategorized/hgSelect.tw
deleted file mode 100644
index 8ef653742e91d627531e1c47b57b915b2310411e..0000000000000000000000000000000000000000
--- a/src/uncategorized/hgSelect.tw
+++ /dev/null
@@ -1,95 +0,0 @@
-:: HG Select [nobr jump-to-safe jump-hidden jump-from-safe]
-
-<<set $nextButton = "Back to Main", $nextLink = "Main", $encyclopedia = "Head Girl">>
-
-<h1>Head Girl Management</h1>
-
-<<set _HGName = "Your Head Girl">>
-<<if ($HeadGirlID != 0)>>
-	<<setLocalPronouns _S.HeadGirl>>
-	<<set _HGName = SlaveFullName(_S.HeadGirl)>>
-	<span class='slave-name'>_HGName</span> is serving as your Head Girl<<if $arcologies[0].FSEgyptianRevivalistLaw == 1>> and Consort; it is $his role to serve and comfort you at your side, in addition to performing normal Head Girl duties<</if>>.
-	<<if ($HGSuite)>>
-		<br> Currently $he lives in <<link "<<= capFirstChar($HGSuiteName)>>""Head Girl Suite">><</link>>
-	<</if>>
-	<br><br>
-<</if>>
-
-__Slave training__
-&nbsp;&nbsp;&nbsp;&nbsp;
-//_HGName will prioritize enabled items in the following order.//
-
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-<<if $headGirlTrainsHealth>><<checkbox "$headGirlTrainsHealth" 0 1 checked>><<else>><<checkbox "$headGirlTrainsHealth" 0 1>><</if>>
-Health
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-<<if $headGirlTrainsParaphilias>><<checkbox "$headGirlTrainsParaphilias" 0 1 checked>><<else>><<checkbox "$headGirlTrainsParaphilias" 0 1>><</if>>
-Paraphilias
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-<<if $headGirlTrainsFlaws>><<checkbox "$headGirlTrainsFlaws" 0 1 checked>><<else>><<checkbox "$headGirlTrainsFlaws" 0 1>><</if>>
-Flaws
-<<if $headGirlSoftensFlaws>><<checkbox "$headGirlSoftensFlaws" 0 1 checked>><<else>><<checkbox "$headGirlSoftensFlaws" 0 1>><</if>>
-Soften
-<<if $headGirlOverridesQuirks>><<checkbox "$headGirlOverridesQuirks" 0 1 checked>><<else>><<checkbox "$headGirlOverridesQuirks" 0 1>><</if>>
-Soften and Replace
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-<<if $headGirlTrainsObedience>><<checkbox "$headGirlTrainsObedience" 0 1 checked>><<else>><<checkbox "$headGirlTrainsObedience" 0 1>><</if>>
-Obedience
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-<<if $headGirlTrainsSkills>><<checkbox "$headGirlTrainsSkills" 0 1 checked>><<else>><<checkbox "$headGirlTrainsSkills" 0 1>><</if>>
-Skills
-
-<br>__Training methods__
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-_HGName will be
-<<if ($HGSeverity > 0)>>
-	''aggressive'' when punishing, with rape strongly encouraged. [[Moderate|HG Select][$HGSeverity = 0]]
-<<elseif ($HGSeverity == 0)>>
-	''moderate'' when punishing, carefully selecting appropriate consequences. [[Be aggressive|HG Select][$HGSeverity = 1]] | [["Restrict " + $him|HG Select][$HGSeverity = -1]]
-<<else>>
-	''respectful'' when punishing, treating slaves decently. [[Be stricter|HG Select][$HGSeverity = 0]]
-<</if>>
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-_HGName is
-<<if $HGPiercings>>
-	''allowed'' to use piercings as a tool to improve slaves' attitudes. [[Disallow|HG Select][$HGPiercings = 0]]
-<<else>>
-	''not allowed'' to use piercings as a tool to improve slaves' attitudes. [[Allow|HG Select][$HGPiercings = 1]]
-<</if>>
-
-<br>__Behavior towards you__
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-_HGName
-<<if ($HGFormality != 0)>>
-	will be ''formal'': $he will always call you <<= getWrittenTitle(_S.HeadGirl)>>, just like any other slave. [[Allow private informality|HG Select][$HGFormality = 0]]
-<<else>>
-	is allowed to be ''informal'': in private, $he may call you <<= properTitle()>>. [[Maintain complete formality|HG Select][$HGFormality = 1]]
-<</if>>
-
-<<if $seePreg != 0>>
-	<<if $HeadGirlID != 0>>
-		<<if $universalRulesImpregnation == "HG">>
-			<br><br>_HGName is responsible for impregnating fertile slaves.
-			<<set $HGCum = 2+Math.trunc((_S.HeadGirl.balls/5)+(_S.HeadGirl.energy/95)+(_S.HeadGirl.health.condition/95)+(_S.HeadGirl.devotion/95)+($reproductionFormula*5))>>
-			<<if canPenetrate(_S.HeadGirl) && _S.HeadGirl.pubertyXY == 1>>
-				To maximize the chances of impregnation, $he will fuck fertile pussies frequently during the week. _S.HeadGirl.slaveName can service $HGCum slaves this way.
-				<<if _S.HeadGirl.devotion > 95>>$He loves you so much $he'll fuck them until $he's sore.<<else>>If $he were more devoted to you, $he might be able to drive $himself to get hard and service one more.<</if>>
-				<<if _S.HeadGirl.balls >= 120>>$His unreal balls produce nearly an endless supply of semen; $his ability to impregnate is almost limitless.<<elseif _S.HeadGirl.balls >= 80>>$His inhuman balls produce so much semen $he can easily impregnate twenty girls in one sitting.<<elseif _S.HeadGirl.balls >= 50>>$His giant balls produce so much semen $he can easily impregnate twelve girls in one sitting.<<elseif _S.HeadGirl.balls >= 25>>$His oversized balls produce so much semen $he can cum repeatedly in a single session.<<elseif _S.HeadGirl.balls >= 5>>$His big balls produce so much semen $he can cum more before $he's drained.<<else>>Bigger balls would let $him cum more before $he's drained.<</if>>
-				<<if _S.HeadGirl.health.condition > 95>>$His wonderful health lets $him get hard and stay hard all the time.<<else>>If $his health were perfect, $he might be able to get hard more often.<</if>>
-				<<if _S.HeadGirl.energy > 95>>$His nymphomania drives $him to go above and beyond in this.<<else>>A more powerful sex drive could reduce $his refractory period.<</if>>
-			<<else>>
-				However, _S.HeadGirl.slaveName cannot perform this duty.
-			<</if>>
-			[["Rescind " + $his + " impregnation responsibility"|HG Select][$universalRulesImpregnation = "none"]] | [[See to it yourself|HG Select][$universalRulesImpregnation = "PC"]]
-		<<else>>
-			<<if canPenetrate(_S.HeadGirl) && _S.HeadGirl.pubertyXY == 1>>
-				<br><br>_HGName is capable of impregnating slaves, but it's not part of $his responsibilities. [["Assign " + $him + " to impregnate"|HG Select][$universalRulesImpregnation = "HG"]]
-			<</if>>
-		<</if>>
-	<</if>>
-<</if>>
-
-<br><br>''Appoint a Head Girl from among your devoted slaves:''
-<br><br>[[None|Main][removeJob(_S.HeadGirl, "be your Head Girl")]]
-<br><br>
-<<includeDOM App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.headGirlSuite, "Main")>>
diff --git a/src/uncategorized/madamSelect.tw b/src/uncategorized/madamSelect.tw
deleted file mode 100644
index 35ec6c33eb6b97f7f5f6e8f5dca0c69b1643e038..0000000000000000000000000000000000000000
--- a/src/uncategorized/madamSelect.tw
+++ /dev/null
@@ -1,14 +0,0 @@
-:: Madam Select [nobr jump-to-safe jump-hidden jump-from-safe]
-
-<<set $nextButton = "Back", $nextLink = "Brothel", $encyclopedia = "Madam">>
-<<if ($MadamID != 0)>>
-	<<setLocalPronouns _S.Madam>>
-	<span class='slave-name'><<= SlaveFullName(_S.Madam)>></span> is serving as your Madam.<br><br>$He will manage the brothel.
-<<else>>
-	You have not selected a Madam.
-<</if>>
-
-<br><br>''Appoint a Madam from your devoted slaves:''
-<br><br>[[None|Brothel][removeJob(_S.Madam, "be the Madam")]]
-<br><br>
-<<includeDOM App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.brothel, "Brothel")>>
diff --git a/src/uncategorized/milkmaidSelect.tw b/src/uncategorized/milkmaidSelect.tw
deleted file mode 100644
index 02bfe668d0e973b28a3b8deef5ae6eb7d2e896b4..0000000000000000000000000000000000000000
--- a/src/uncategorized/milkmaidSelect.tw
+++ /dev/null
@@ -1,14 +0,0 @@
-:: Milkmaid Select [nobr jump-to-safe jump-hidden jump-from-safe]
-
-<<set $nextButton = "Back", $nextLink = "Dairy", $encyclopedia = "Milkmaid">>
-<<if ($MilkmaidID != 0)>>
-	<<setLocalPronouns _S.Milkmaid>>
-	<span class='slave-name'><<= SlaveFullName(_S.Milkmaid)>></span> is serving as your Milkmaid.<br><br>$He will look after your livestock, helping them give milk<<if $seeDicks > 0>> and semen<</if>>.
-<<else>>
-	You have not selected a Milkmaid.
-<</if>>
-
-<br><br>''Appoint a Milkmaid from your obedient slaves:''
-<br><br>[[None|Dairy][removeJob(_S.Milkmaid, "be the Milkmaid")]]
-<br><br>
-<<includeDOM App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.dairy, "Dairy")>>
diff --git a/src/uncategorized/nurseSelect.tw b/src/uncategorized/nurseSelect.tw
deleted file mode 100644
index 84211a0e169b22a1ea03c3bf0e92c6006fdfad19..0000000000000000000000000000000000000000
--- a/src/uncategorized/nurseSelect.tw
+++ /dev/null
@@ -1,15 +0,0 @@
-:: Nurse Select [nobr jump-to-safe jump-hidden jump-from-safe]
-
-<<set $nextButton = "Back", $nextLink = "Clinic", $encyclopedia = "Nurse">>
-<<if _S.Nurse>>
-	<<setLocalPronouns _S.Nurse>>
-	<span class='slave-name'><<= SlaveFullName(_S.Nurse)>></span> is serving as your Nurse.<br><br>$He will help heal your slaves.
-<<else>>
-	You have not selected a Nurse.
-<</if>>
-
-<br><br>''Appoint a Nurse from your devoted slaves:''
-<br><br>[[None|Clinic][removeJob(_S.Nurse, "be the Nurse")]]
-<br><br>
-
-<<includeDOM App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.clinic, "Clinic")>>
diff --git a/src/uncategorized/recruiterSelect.tw b/src/uncategorized/recruiterSelect.tw
deleted file mode 100644
index 23c96f0d8cc23063cdd6b7620c8c611222adee15..0000000000000000000000000000000000000000
--- a/src/uncategorized/recruiterSelect.tw
+++ /dev/null
@@ -1,67 +0,0 @@
-:: Recruiter Select [nobr jump-to-safe jump-from-safe]
-
-<<set $nextButton = "Back to Main", $nextLink = "Main", $encyclopedia = "Recruiter">>
-<<if ($RecruiterID != 0)>>
-	<<setLocalPronouns _S.Recruiter>>
-	<span class='slave-name'><<= SlaveFullName(_S.Recruiter)>></span> is
-	<<if $recruiterTarget != "other arcologies">>
-		recruiting girls.
-	<<else>>
-		acting as a sexual
-		<<if $arcologies[0].influenceTarget == -1>>
-			Ambassador. @@.red;Since you have not selected another arcology to influence, $he has no target for Ambassadorial duties. Select an influence target to apply $his talents.@@
-		<<else>>
-			Ambassador to <<for $i = 0; $i < $arcologies.length; $i++>><<if $arcologies[$i].direction == $arcologies[0].influenceTarget>>$arcologies[$i].name<<break>><</if>><</for>>.
-		<</if>>
-	<</if>>
-<<else>>
-	You do not have a recruiter working at present.
-<</if>>
-
-<br><br>Your recruiter will <<if $recruiterTarget != "other arcologies">>target ''$recruiterTarget.''<<else>>spread your arcology's culture to neighboring arcologies.<</if>> __Assign a different focus:__
-<br>&nbsp;&nbsp;&nbsp;&nbsp;[[Desperate whores|Recruiter Select][$recruiterTarget = "desperate whores"]] //Likely to be skilled but unhealthy//
-<br>&nbsp;&nbsp;&nbsp;&nbsp;[[Young migrants|Recruiter Select][$recruiterTarget = "young migrants"]] //Young and inexperienced but unhealthy//
-<br>&nbsp;&nbsp;&nbsp;&nbsp;[[Recent divorcees|Recruiter Select][$recruiterTarget = "recent divorcees"]] //Will be mature//
-<<if ($seeDicks != 100) && $seePreg != 0>>
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;[[Expectant mothers|Recruiter Select][$recruiterTarget = "expectant mothers"]] //Will be pregnant, and likely unhealthy//
-<</if>>
-<<if ($seeDicks != 0)>>
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;[[Dissolute sissies|Recruiter Select][$recruiterTarget = "dissolute sissies"]] //Will be born male and have some experience//
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;[[Reassignment candidates|Recruiter Select][$recruiterTarget = "reassignment candidates"]] //Will be born male//
-<</if>>
-<<if $arcologies.length > 1>>
-	<<if $FSAnnounced>>
-		<br>&nbsp;&nbsp;&nbsp;&nbsp;[[Other arcologies' cultures|Recruiter Select][$oldRecruiterTarget = $recruiterTarget, $recruiterTarget = "other arcologies"]] //Will appoint the Recruiter to be a sexual Ambassador//
-	<</if>>
-<</if>>
-
-<br><br>Target only individuals that can pass eugenics SMR.
-<<if $recruiterEugenics < 1>>[[Target|Recruiter Select][$recruiterEugenics = 1]]
-	<<else>>[[Stop targeting|Recruiter Select][$recruiterEugenics = 0]]
-<</if>>
-<br>&nbsp;//This option will increase time it takes to recruit depending on how many eugenics SMR are active.//
-
-/* sum for "facilities & leadership" */
-<<set _idleTarget = (2 + $brothel + $club + $arcade + $dairy + $servantsQuarters + $masterSuite)>>
-<<if $HGSuite>><<set _idleTarget++>><</if>>
-<<if $dojo>><<set _idleTarget++>><</if>>
-<<if $brothel>><<set _idleTarget++>><</if>>
-<<if $club>><<set _idleTarget++>><</if>>
-<<if $dairy && ($dairyRestraintsSetting < 2)>><<set _idleTarget++>><</if>>
-<<if $farmyard>><<set _idleTarget++>><</if>>
-<<if $servantsQuarters>><<set _idleTarget++>><</if>>
-<<if $masterSuite>><<set _idleTarget++>><</if>>
-<<if $schoolroom>><<set _idleTarget++>><</if>>
-<<if $spa>><<set _idleTarget++>><</if>>
-<<if $nursery>><<set _idleTarget++>><</if>>
-<<if $clinic>><<set _idleTarget++>><</if>>
-<<if $cellblock>><<set _idleTarget++>><</if>>
-
-<br><br>Suspend active recruiting and focus on publicity when: <span id="idleRule"><<switch $recruiterIdleRule>><<case "number">>''$recruiterIdleNumber sex slaves owned''<<case "facility">>''match facility expansion'', currently <<if _idleTarget >= 20>>_idleTarget positions<<else>>20 positions (rule minimum)<</if>><<default>>''always recruit''<</switch>></span>
-<br>&nbsp;&nbsp;&nbsp;&nbsp; <<link "Always recruit">><<set $recruiterIdleRule = "always">><<replace "#idleRule">>''always recruit''<</replace>><</link>> | <<link "Facilities & leadership">><<set $recruiterIdleRule = "facility">><<replace "#idleRule">>''match facility expansion'', currently <<if _idleTarget >=20>>_idleTarget positions<<else>>20 positions (rule minimum)<</if>><</replace>><</link>> | <<link "Set to this many slaves:">><<set $recruiterIdleRule = "number", $recruiterIdleNumber = Math.max(Math.trunc(Number($seed) || 20), 20)>><<replace "#idleRule">>''$recruiterIdleNumber sex slaves owned''<</replace>><<replace "#numberBox">><<textbox "$seed" $recruiterIdleNumber>><</replace>><</link>> <span id="numberBox"><<textbox "$seed" $recruiterIdleNumber>></span> /* use of $seed in conjunction with link prevents NaN error */
-<br>&nbsp; //"Facilities" doesn't include training slots in cellblock, schoolroom, spa, clinic (but does include those leaders)//
-
-<br><br>''Appoint a recruiter from among your devoted slaves:''
-<br>[[None|Main][removeJob(_S.Recruiter, "recruit girls")]]
-<br><br>
-<<includeDOM App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.penthouse, "Main")>>
diff --git a/src/uncategorized/schoolteacherSelect.tw b/src/uncategorized/schoolteacherSelect.tw
deleted file mode 100644
index 7572a3d974d9a863dcab5b573fc2886f6a5cb300..0000000000000000000000000000000000000000
--- a/src/uncategorized/schoolteacherSelect.tw
+++ /dev/null
@@ -1,14 +0,0 @@
-:: Schoolteacher Select [nobr jump-to-safe jump-hidden jump-from-safe]
-
-<<set $nextButton = "Back", $nextLink = "Schoolroom", $encyclopedia = "Schoolteacher">>
-<<if _S.Schoolteacher>>
-	<<setLocalPronouns _S.Schoolteacher>>
-	<span class='slave-name'><<= SlaveFullName(_S.Schoolteacher)>></span> is serving as your Schoolteacher.<br><br>$He will help teach your slaves.
-<<else>>
-	You have not selected a Schoolteacher.
-<</if>>
-
-<br><br>''Appoint a Schoolteacher from your devoted slaves:''
-<br><br>[[None|Schoolroom][removeJob(_S.Schoolteacher, "be the Schoolteacher")]]
-<br><br>
-<<includeDOM App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.schoolroom, "Schoolroom")>>
diff --git a/src/uncategorized/stewardessSelect.tw b/src/uncategorized/stewardessSelect.tw
deleted file mode 100644
index a9dc36cfaa208ee59e6792dc62cb935d5337c05b..0000000000000000000000000000000000000000
--- a/src/uncategorized/stewardessSelect.tw
+++ /dev/null
@@ -1,14 +0,0 @@
-:: Stewardess Select [nobr jump-to-safe jump-hidden jump-from-safe]
-
-<<set $nextButton = "Back", $nextLink = "Servants' Quarters", $encyclopedia = "Stewardess">>
-<<if (_S.Stewardess)>>
-	<<setLocalPronouns _S.Stewardess>>
-	<span class='slave-name'><<= SlaveFullName(_S.Stewardess)>></span> is serving as your Stewardess.<br><br>$He will manage the Servants' Quarters.
-<<else>>
-	You have not selected a Stewardess.
-<</if>>
-
-<br><br>''Appoint a Stewardess from your devoted slaves:''
-<br><br>[[None|Servants' Quarters][removeJob(_S.Stewardess, Job.STEWARD)]]
-<br><br>
-<<includeDOM App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.servantsQuarters, "Servants' Quarters")>>
diff --git a/src/uncategorized/wardenessSelect.tw b/src/uncategorized/wardenessSelect.tw
deleted file mode 100644
index 6ae7bf5aed1652a53263bca874574444d24f3719..0000000000000000000000000000000000000000
--- a/src/uncategorized/wardenessSelect.tw
+++ /dev/null
@@ -1,14 +0,0 @@
-:: Wardeness Select [nobr jump-to-safe jump-hidden jump-from-safe]
-
-<<set $nextButton = "Back", $nextLink = "Cellblock", $encyclopedia = "Wardeness">>
-<<if (_S.Wardeness)>>
-	<<setLocalPronouns _S.Wardeness>>
-	<span class='slave-name'><<= SlaveFullName(_S.Wardeness)>></span> is serving as your Wardeness.<br><br>$He will help break your prisoners.
-<<else>>
-	You have not selected a Wardeness.
-<</if>>
-
-<br><br>''Appoint a Wardeness from your devoted slaves:''
-<br><br>[[None|Cellblock][removeJob(_S.Wardeness, "be the Wardeness")]]
-<br><br>
-<<includeDOM App.UI.SlaveList.facilityManagerSelection(App.Entity.facilities.cellblock, "Cellblock")>>