diff --git a/src/interaction/siPhysicalRegimen.js b/src/interaction/siPhysicalRegimen.js
new file mode 100644
index 0000000000000000000000000000000000000000..6c0e86dfbe2ab78fe3b185c864269a21ae76efc1
--- /dev/null
+++ b/src/interaction/siPhysicalRegimen.js
@@ -0,0 +1,1081 @@
+/**
+ * @param {App.Entity.SlaveState} slave
+ */
+App.UI.SlaveInteract.drugs = function(slave) {
+	let el = document.createElement('div');
+
+	const drugLevelOptions = [];
+	const lips = [];
+	const breasts = [];
+	const nipples = [];
+	const butt = [];
+	const dick = [];
+	const balls = [];
+	const fertility = [];
+	const hormones = [];
+	const psych = [];
+	const misc = [];
+
+	if (slave.drugs !== "no drugs") {
+		drugLevelOptions.push({text: `None`, updateSlave: {drugs: `no drugs`}});
+	}
+	if (slave.indentureRestrictions < 2) {
+		// Psych
+		if (slave.intelligence > -100 && slave.indentureRestrictions < 1) {
+			psych.push({text: `Psychosuppressants`, updateSlave: {drugs: `psychosuppressants`}});
+		} else if (slave.intelligence > -100) {
+			psych.push({text: `Psychosuppressants`, disabled: `Cannot suppress indentured slave`});
+		} else if (slave.indentureRestrictions < 1) {
+			psych.push({text: `Psychosuppressants`, disabled: `Too stupid to suppress`});
+		} else {
+			psych.push({text: `Psychosuppressants`, disabled: `Too stupid and indentured to suppress`});
+		}
+		if (V.arcologies[0].FSSlaveProfessionalismResearch === 1) {
+			if (canImproveIntelligence(slave)) {
+				psych.push({text: `Psychostimulants`, updateSlave: {drugs: `psychostimulants`}});
+			} else {
+				psych.push({text: `Psychostimulants`, disabled: `Cannot improve intelligence`});
+			}
+		}
+
+		// Breasts
+		if (V.arcologies[0].FSSlimnessEnthusiastResearch === 1) {
+			if ((slave.boobs - slave.boobsImplant - slave.boobsMilk) > 100) {
+				breasts.push({text: `Reducers`, updateSlave: {drugs: `breast redistributors`}});
+			} else {
+				breasts.push({text: `Reducers`, disabled: `Boobs are too small`});
+			}
+		}
+		if (slave.boobs < 50000) {
+			breasts.push({text: `Enhancement`, updateSlave: {drugs: `breast injections`}});
+			breasts.push({text: `Intensive enhancement`, updateSlave: {drugs: `intensive breast injections`}});
+		} else {
+			breasts.push({text: `Enhancement`, disabled: `Boobs are too large`});
+		}
+		if (V.arcologies[0].FSAssetExpansionistResearch === 1) {
+			if (slave.boobs < 50000) {
+				breasts.push({text: `Hyper enhancement`, updateSlave: {drugs: `hyper breast injections`}});
+			} else {
+				breasts.push({text: `Hyper enhancement`, disabled: `Boobs are too large`});
+			}
+		}
+
+		// Nipples
+		if (V.arcologies[0].FSSlimnessEnthusiastResearch === 1) {
+			if (slave.nipples === "huge" || slave.nipples === "puffy" || slave.nipples === "cute") {
+				nipples.push({text: `Reducers`, updateSlave: {drugs: `nipple atrophiers`}});
+			} else {
+				nipples.push({text: `Reducers`, disabled: `Nipples are ${slave.nipples}`});
+			}
+		}
+		if (V.dispensary) {
+			if (["inverted", "partially inverted", "cute", "tiny", "puffy"].includes(slave.nipples)) {
+				nipples.push({text: `Enhancement`, updateSlave: {drugs: `nipple enhancers`}});
+			} else if (slave.nipples === "huge") {
+				nipples.push({text: `Enhancement`, disabled: `Nipples are already huge`});
+			} else {
+				nipples.push({text: `Enhancement`, disabled: `Has no effect on ${slave.nipples} nipples`});
+			}
+		}
+
+		// Butt
+		if (V.arcologies[0].FSSlimnessEnthusiastResearch === 1) {
+			if (slave.butt - slave.buttImplant > 0) {
+				butt.push({text: `Reducers`, updateSlave: {drugs: `butt redistributors`}});
+			} else {
+				butt.push({text: `Reducers`, disabled: `Butt is too small`});
+			}
+		}
+		if (slave.butt < 9) {
+			butt.push({text: `Enhancement`, updateSlave: {drugs: `butt injections`}});
+			butt.push({text: `Intensive enhancement`, updateSlave: {drugs: `intensive butt injections`}});
+		} else {
+			butt.push({text: `Enhancement`, disabled: `Butt is too large`});
+		}
+		if (V.arcologies[0].FSAssetExpansionistResearch === 1) {
+			if (slave.butt < 20) {
+				butt.push({text: `Hyper enhancement`, updateSlave: {drugs: `hyper butt injections`}});
+			} else {
+				butt.push({text: `Hyper enhancement`, disabled: `Butt is too large`});
+			}
+		}
+
+		// Lips
+		if (V.arcologies[0].FSSlimnessEnthusiastResearch === 1) {
+			if (slave.lips - slave.lipsImplant > 0) {
+				lips.push({text: `Reducers`, updateSlave: {drugs: `lip atrophiers`}});
+			} else {
+				lips.push({text: `Reducers`, disabled: `Lips are too small`});
+			}
+		}
+		if (slave.lips <= 95 || (slave.lips <= 85 && V.seeExtreme !== 1)) {
+			lips.push({text: `Enhancement`, updateSlave: {drugs: `lip injections`}});
+		} else {
+			lips.push({text: `Enhancement`, disabled: `Lips are too large`});
+		}
+
+		// Fertility
+		fertility.push({text: `Fertility`, updateSlave: {drugs: `fertility drugs`}});
+		if (V.seeHyperPreg === 1 && slave.indentureRestrictions < 1 && V.superFertilityDrugs === 1 && (slave.breedingMark !== 1 || V.propOutcome === 0 || V.eugenicsFullControl === 1 || V.arcologies[0].FSRestart === "unset")) {
+			fertility.push({text: `Fertility+`, updateSlave: {drugs: `super fertility drugs`}});
+		}
+
+		// Dick/clit
+		if (V.arcologies[0].FSSlimnessEnthusiastResearch === 1) {
+			if (slave.dick > 1) {
+				dick.push({text: `Reducers`, updateSlave: {drugs: `penis atrophiers`}});
+			} else if (slave.dick === 1) {
+				dick.push({text: `Reducers`, disabled: `Dick is already at minimum size`});
+			}
+			if (slave.clit > 0) {
+				dick.push({text: `Reducers`, updateSlave: {drugs: `clitoris atrophiers`}});
+			}
+		}
+		if (slave.dick > 0) {
+			if (slave.dick < 10) {
+				dick.push({text: `Enhancement`, updateSlave: {drugs: `penis enhancement`}});
+				dick.push({text: `Intensive enhancement`, updateSlave: {drugs: `intensive penis enhancement`}});
+			} else {
+				dick.push({text: `Enhancement`, disabled: `Dick is too large`});
+			}
+		} else {
+			if (slave.clit < 5) {
+				dick.push({text: `Enhancement`, updateSlave: {drugs: `penis enhancement`}});
+				dick.push({text: `Intensive enhancement`, updateSlave: {drugs: `intensive penis enhancement`}});
+			} else {
+				dick.push({text: `Enhancement`, disabled: `Clit is too large`});
+			}
+		}
+		if (V.arcologies[0].FSAssetExpansionistResearch === 1) {
+			if (slave.dick > 0) {
+				if (slave.dick < 31) {
+					dick.push({text: `Hyper enhancement`, updateSlave: {drugs: `hyper penis enhancement`}});
+				} else {
+					dick.push({text: `Hyper enhancement`, disabled: `Dick is too large`});
+				}
+			} else {
+				if (slave.clit < 5) {
+					dick.push({text: `Hyper enhancement`, updateSlave: {drugs: `penis enhancement`}});
+				} else {
+					dick.push({text: `Hyper enhancement`, disabled: `Clit is too large`});
+				}
+			}
+		}
+		if (slave.dick > 0 && slave.dick < 11 && !canAchieveErection(slave) && slave.chastityPenis !== 1) {
+			dick.push({text: `Erectile dysfunction circumvention`, updateSlave: {drugs: `priapism agents`}});
+		}
+
+		// Balls
+		if (V.arcologies[0].FSSlimnessEnthusiastResearch === 1) {
+			if (slave.balls > 1) {
+				balls.push({text: `Reducers`, updateSlave: {drugs: `testicle atrophiers`}});
+			} else if (slave.balls === 1) {
+				balls.push({text: `Reducers`, disabled: `Balls are already at minimum size`});
+			}
+		}
+		if (slave.balls > 0) {
+			balls.push({text: `Enhancement`, updateSlave: {drugs: `testicle enhancement`}});
+			balls.push({text: `Intensive enhancement`, updateSlave: {drugs: `intensive testicle enhancement`}});
+			if (V.arcologies[0].FSAssetExpansionistResearch === 1) {
+				balls.push({text: `Hyper enhancement`, updateSlave: {drugs: `hyper testicle enhancement`}});
+			}
+		}
+
+		// Hormones
+		if (V.precociousPuberty === 1 && V.pubertyHormones === 1 && (slave.breedingMark !== 1 || V.propOutcome === 0 || V.eugenicsFullControl === 1 || V.arcologies[0].FSRestart === "unset")) {
+			if ((slave.ovaries === 1 || slave.mpreg === 1) && slave.pubertyXX === 0) {
+				hormones.push({text: `Female injections`, updateSlave: {drugs: `female hormone injections`}});
+			}
+			if (slave.balls > 0 && slave.pubertyXY === 0) {
+				hormones.push({text: `Male injections`, updateSlave: {drugs: `male hormone injections`}});
+			}
+		}
+		hormones.push({text: `Blockers`, updateSlave: {drugs: `hormone blockers`}});
+		hormones.push({text: `Enhancement`, updateSlave: {drugs: `hormone enhancers`}});
+
+		// Misc
+		if (V.arcologies[0].FSSlimnessEnthusiastResearch === 1) {
+			if (slave.labia > 0) {
+				misc.push({text: `Labia reducers`, updateSlave: {drugs: `labia atrophiers`}});
+			}
+		}
+		if (V.growthStim === 1) {
+			if (canImproveHeight(slave)) {
+				misc.push({text: `Growth Stimulants`, updateSlave: {drugs: `growth stimulants`}});
+			} else {
+				misc.push({text: `Growth Stimulants`, disabled: `Cannot increase height further`});
+			}
+		}
+		if (V.arcologies[0].FSSlimnessEnthusiastResearch === 1) {
+			if (slave.weight > -95) {
+				misc.push({text: `Weight loss pills`, updateSlave: {drugs: `appetite suppressors`}});
+			} else {
+				misc.push({text: `Weight loss pills`, disabled: `Slave is already at low weight`});
+			}
+		}
+		misc.push({text: `Steroids`, updateSlave: {drugs: `steroids`}});
+		if (slave.boobs > 250 && slave.boobShape !== "saggy" && V.purchasedSagBGone === 1) {
+			misc.push({text: `Sag-B-Gone breast lifting cream`, updateSlave: {drugs: `sag-B-gone`}});
+		}
+		if (V.arcologies[0].FSYouthPreferentialistResearch === 1) {
+			if (slave.visualAge > 18) {
+				misc.push({text: `Anti-aging cream`, updateSlave: {drugs: `anti-aging cream`}});
+			} else {
+				misc.push({text: `Anti-aging cream`, disabled: `Slave already looks young enough`});
+			}
+		}
+	}
+
+	let title = document.createElement('div');
+	title.textContent = `Drugs: `;
+	let chosenDrug = document.createElement('span');
+	chosenDrug.textContent = `${capFirstChar(slave.drugs)}. `;
+	chosenDrug.style.fontWeight = "bold";
+	title.append(chosenDrug);
+	title.appendChild(App.UI.SlaveInteract.generateRows(drugLevelOptions, slave));
+	el.append(title);
+
+	App.UI.SlaveInteract.appendLabeledChoiceRow(el, "Lips", lips, slave);
+	App.UI.SlaveInteract.appendLabeledChoiceRow(el, "Breasts", breasts, slave);
+	App.UI.SlaveInteract.appendLabeledChoiceRow(el, "Nipples", nipples, slave);
+	App.UI.SlaveInteract.appendLabeledChoiceRow(el, "Butt", butt, slave);
+	App.UI.SlaveInteract.appendLabeledChoiceRow(el, slave.dick > 0 ? "Dick" : "Clit", dick, slave);
+	App.UI.SlaveInteract.appendLabeledChoiceRow(el, "Balls", balls, slave);
+	App.UI.SlaveInteract.appendLabeledChoiceRow(el, "Fertility", fertility, slave);
+	App.UI.SlaveInteract.appendLabeledChoiceRow(el, "Hormones", hormones, slave);
+	App.UI.SlaveInteract.appendLabeledChoiceRow(el, "Psych", psych, slave);
+	App.UI.SlaveInteract.appendLabeledChoiceRow(el, "Misc", misc, slave);
+
+	return jQuery('#drugs').empty().append(el);
+};
+
+App.UI.SlaveInteract.curatives = function(slave) {
+	const curativeOptions = [];
+
+	curativeOptions.push({text: `None`, updateSlave: {curatives: 0}});
+	curativeOptions.push({text: `Preventatives`, updateSlave: {curatives: 1}});
+	curativeOptions.push({text: `Curatives`, updateSlave: {curatives: 2}});
+
+	let el = document.createElement('div');
+	let title = document.createElement('div');
+	title.append(`Health: `);
+	let chosenOption = document.createElement('span');
+	chosenOption.style.fontWeight = "bold";
+	if (slave.curatives > 1) {
+		chosenOption.textContent = `curatives`;
+	} else if (slave.curatives > 0) {
+		chosenOption.textContent = `preventatives`;
+	} else {
+		chosenOption.textContent = `none`;
+	}
+	title.appendChild(chosenOption);
+	title.append(`.`);
+	let link = document.createElement('div');
+	link.className = "choices";
+	link.appendChild(App.UI.SlaveInteract.generateRows(curativeOptions, slave));
+	el.append(title);
+	el.append(link);
+	return jQuery('#curatives').empty().append(el);
+};
+
+App.UI.SlaveInteract.aphrodisiacs = function(slave) {
+	const aphrodisiacOptions = [];
+
+	aphrodisiacOptions.push({text: `None`, updateSlave: {aphrodisiacs: 0}});
+	aphrodisiacOptions.push({text: `Aphrodisiacs`, updateSlave: {aphrodisiacs: 1}});
+	aphrodisiacOptions.push({text: `Extreme aphrodisiacs`, updateSlave: {aphrodisiacs: 2}});
+	aphrodisiacOptions.push({text: `Anaphrodisiacs`, updateSlave: {aphrodisiacs: -1}, note: `Suppresses libido`});
+
+
+	let el = document.createElement('div');
+	let title = document.createElement('div');
+	title.append(`Aphrodisiacs: `);
+	let chosenOption = document.createElement('span');
+	chosenOption.style.fontWeight = "bold";
+	if (slave.aphrodisiacs > 1) {
+		chosenOption.textContent = `extreme`;
+	} else if (slave.aphrodisiacs > 0) {
+		chosenOption.textContent = `applied`;
+	} else if (slave.aphrodisiacs === -1) {
+		chosenOption.textContent = `anaphrodisiacs`;
+	} else {
+		chosenOption.textContent = `none`;
+	}
+	title.appendChild(chosenOption);
+	title.append(`.`);
+	let link = document.createElement('div');
+	link.className = "choices";
+	link.appendChild(App.UI.SlaveInteract.generateRows(aphrodisiacOptions, slave));
+	el.append(title);
+	el.append(link);
+	return jQuery('#aphrodisiacs').empty().append(el);
+};
+
+App.UI.SlaveInteract.fertility = function(slave) {
+	const {
+		// eslint-disable-next-line no-unused-vars
+		he,
+		him,
+		his,
+		hers,
+		himself,
+		boy,
+		He,
+		His
+	} = getPronouns(slave);
+	let fertilityBlock = document.createElement('span');
+	let linkArray = [];
+	if (slave.ovaries === 1 || slave.mpreg === 1 || slave.preg > 0) {
+		let note = "";
+		if (slave.preg < -1) {
+			note += `${He} is sterile`;
+		} else if (slave.pubertyXX === 0 && slave.preg < 1) {
+			note += `${He} is not yet fertile`;
+		} else if (slave.ovaryAge >= 47 && slave.preg < 1) {
+			note += `${He} is too old to become pregnant`;
+			if (slave.preg === -1) {
+				slave.preg = 0;
+				SetBellySize(slave);
+			}
+		} else if (slave.broodmotherOnHold === 1) {
+			note += `${His} pregnancy implant is turned off`;
+			if (slave.broodmotherCountDown > 0) {
+				note += `${he} is expected to be completely emptied of ${his} remaining brood in ${slave.broodmotherCountDown} week`;
+				if (slave.broodmotherCountDown > 1) {
+					note += `s`;
+				}
+				note += `.`;
+				linkArray.push(App.UI.DOM.link(
+					`Turn on implant`,
+					() => {
+						slave.broodmotherOnHold = 0;
+						slave.broodmotherCountDown = 0;
+						App.UI.SlaveInteract.refreshAll(slave);
+					},
+				));
+			}
+		} else if (slave.preg >= -1) {
+			fertilityBlock.append("Contraception and fertility: ");
+			let fertility = "";
+			// fertility.id = "fertility";
+			if (slave.preg === -1) {
+				fertility = "using contraceptives";
+			} else if (slave.pregWeek < 0) {
+				fertility = "postpartum";
+			} else if (slave.preg === 0) {
+				fertility = "fertile";
+			} else if (slave.preg < 4 && (slave.broodmother === 0 || slave.broodmotherOnHold === 1)) {
+				fertility = "may be pregnant";
+			} else if (slave.preg < 2) {
+				fertility = "1 week pregnant";
+			} else {
+				fertility = `${Math.trunc(slave.preg * 1000) / 1000} weeks pregnant`; // * and / needed to avoid seeing something like 20.1000000008 in some cases.
+				if (slave.broodmother > 0) {
+					fertility += " broodmother";
+				}
+			}
+			fertility += ". ";
+			App.UI.DOM.appendNewElement("span", fertilityBlock, fertility, "bold");
+
+			if (slave.preg === 0) {
+				linkArray.push(App.UI.DOM.link(
+					`Use contraceptives`,
+					() => {
+						slave.preg = -1;
+						App.UI.SlaveInteract.refreshAll(slave);
+					},
+				));
+			} else if (slave.preg === -1) {
+				linkArray.push(App.UI.DOM.link(
+					`Let ${him} get pregnant`,
+					() => {
+						slave.preg = 0;
+						App.UI.SlaveInteract.refreshAll(slave);
+					},
+				));
+			} else if (isInduced(slave)) {
+				note += `Hormones are being slipped into ${his} food; ${he} will give birth suddenly and rapidly this week`;
+			} else if (
+				slave.preg > slave.pregData.normalBirth - 2 &&
+				slave.preg > slave.pregData.minLiveBirth &&
+				slave.broodmother === 0 &&
+				!isInLabor(slave)
+			) {
+				linkArray.push(App.UI.DOM.link(
+					`Induce labor`,
+					() => {
+						induce(slave);
+						App.UI.SlaveInteract.refreshAll(slave);
+					},
+				));
+				linkArray.push(App.UI.DOM.passageLink(`Give ${him} a cesarean section`, "csec"));
+			} else if (slave.broodmother > 0) {
+				if (slave.broodmotherOnHold !== 1) {
+					linkArray.push(App.UI.DOM.link(
+						`Turn off implant`,
+						() => {
+							slave.broodmotherOnHold = 1;
+							slave.broodmotherCountDown = 38 - WombMinPreg(slave);
+							App.UI.SlaveInteract.refreshAll(slave);
+						},
+					));
+				}
+				if (slave.preg > 37) {
+					linkArray.push(App.UI.DOM.passageLink(`Induce mass childbirth`, "BirthStorm"));
+				}
+			} else if (slave.preg > slave.pregData.minLiveBirth) {
+				linkArray.push(App.UI.DOM.link(
+					`Give ${him} a cesarean section`,
+					() => {
+						slave.broodmotherOnHold = 0;
+						slave.broodmotherCountDown = 0;
+					},
+					[],
+					"csec"
+				));
+			} else if (slave.preg > 0 && slave.breedingMark === 1 && V.propOutcome === 1 && V.arcologies[0].FSRestart !== "unset" && V.eugenicsFullControl !== 1 && (slave.pregSource === -1 || slave.pregSource === -6)) {
+				note += "You are forbidden from aborting an Elite child";
+			} else if (slave.preg > 0) {
+				linkArray.push(App.UI.DOM.link(
+					`Abort ${his} pregnancy`,
+					() => {
+						slave.broodmotherOnHold = 0;
+						slave.broodmotherCountDown = 0;
+					},
+					[],
+					"Abort"
+				));
+			}
+		}
+		App.UI.DOM.appendNewElement("span", fertilityBlock, note, "note");
+		App.UI.DOM.appendNewElement("div", fertilityBlock, App.UI.DOM.generateLinksStrip(linkArray), "choices");
+	}
+	if (
+		(slave.pregKnown === 1) &&
+		(V.pregSpeedControl === 1) &&
+		(
+			slave.breedingMark !== 1 ||
+			V.propOutcome === 0 ||
+			V.eugenicsFullControl === 1 ||
+			V.arcologies[0].FSRestart === "unset"
+		) &&
+		(slave.indentureRestrictions < 1) &&
+		(slave.broodmother === 0) &&
+		V.seePreg !== 0
+	) {
+		let title = document.createElement('div');
+		let underline = document.createElement('span');
+		underline.style.textDecoration = "underline";
+		underline.textContent = "Pregnancy control";
+		title.appendChild(underline);
+		title.append(": ");
+
+		if (slave.pregControl === "labor suppressors") {
+			title.append("Labor is suppressed. ");
+		} else if (slave.pregControl === "slow gestation") {
+			title.append("Slowed gestation speed. ");
+		} else if (slave.pregControl === "speed up") {
+			title.append("Faster gestation speed, staffed clinic recommended. ");
+		} else {
+			title.append("Normal gestation and birth. ");
+		}
+		fertilityBlock.appendChild(title);
+
+		linkArray = [];
+		if (slave.pregControl !== "none") {
+			linkArray.push(App.UI.DOM.link(
+				`Normal ${slave.preg < slave.pregData.normalBirth ? "Gestation" : "Birth"}`,
+				() => {
+					slave.pregControl = "none";
+					App.UI.SlaveInteract.fertility(slave);
+				},
+			));
+		}
+		if (slave.preg < slave.pregData.normalBirth) {
+			if (slave.pregControl !== "slow gestation") {
+				linkArray.push(App.UI.DOM.link(
+					`Slow Gestation`,
+					() => {
+						slave.pregControl = "slow gestation";
+						App.UI.SlaveInteract.fertility(slave);
+					},
+				));
+			}
+			if (slave.pregControl !== "speed up") {
+				linkArray.push(App.UI.DOM.link(
+					`Fast Gestation`,
+					() => {
+						slave.pregControl = "speed up";
+						App.UI.SlaveInteract.fertility(slave);
+					},
+				));
+			}
+		}
+		if (slave.preg >= slave.pregData.minLiveBirth) {
+			if (slave.pregControl !== "labor suppressors") {
+				linkArray.push(App.UI.DOM.link(
+					`Suppress Labor`,
+					() => {
+						slave.pregControl = "labor suppressors";
+						App.UI.SlaveInteract.fertility(slave);
+					},
+				));
+			}
+		}
+		App.UI.DOM.appendNewElement("div", fertilityBlock, App.UI.DOM.generateLinksStrip(linkArray), "choices");
+	}
+	return jQuery('#fertility-block').empty().append(fertilityBlock);
+};
+
+/**
+ * @param {App.Entity.SlaveState} slave
+ */
+App.UI.SlaveInteract.incubator = function(slave) {
+	const {
+		// eslint-disable-next-line no-unused-vars
+		he,
+		him,
+		his,
+		hers,
+		himself,
+		boy,
+		He,
+		His
+	} = getPronouns(slave);
+	V.reservedChildren = FetusGlobalReserveCount("incubator");
+	let _reservedIncubator = WombReserveCount(slave, "incubator");
+	let _reservedNursery = WombReserveCount(slave, "nursery");
+	let _WL = slave.womb.length;
+	let el = document.createElement('div');
+
+	if (V.incubator > 0) {
+		if (slave.preg > 0 && slave.broodmother === 0 && slave.pregKnown === 1 && slave.eggType === "human") {
+			if ((slave.assignment !== Job.DAIRY || V.dairyPregSetting === 0) && (slave.assignment !== Job.FARMYARD || V.farmyardBreeding === 0)) {
+				let title = document.createElement('div');
+				let link = document.createElement('div');
+				link.className = "choices";
+				if (_WL - _reservedNursery === 0) {
+					title.textContent = `${His} children are already reserved for ${V.nurseryName}`;
+					title.style.fontStyle = "italic";
+				} else {
+					const freeTanks = (V.incubator - V.tanks.length);
+					if (_reservedIncubator > 0) {
+						if (_WL === 1) {
+							title.textContent = `${His} child will be placed in ${V.incubatorName}. `;
+						} else if (_reservedIncubator < _WL) {
+							title.textContent = `${_reservedIncubator} of ${his} children will be placed in ${V.incubatorName}.`;
+						} else if (_WL === 2) {
+							title.textContent = `Both of ${his} children will be placed in ${V.incubatorName}. `;
+						} else {
+							title.textContent = `All ${_reservedIncubator} of ${his} children will be placed in ${V.incubatorName}. `;
+						}
+						if ((_reservedIncubator + _reservedNursery < _WL) && (V.reservedChildren < freeTanks)) {
+							link.appendChild(
+								App.UI.DOM.link(`Keep another child`, () => wombUpdateIncubator(1, true))
+							);
+							if (_reservedIncubator > 0) {
+								link.append(` | `);
+								link.appendChild(
+									App.UI.DOM.link(`Keep one less child`, () => wombUpdateIncubator(1, false))
+								);
+							}
+							if (_reservedIncubator > 1) {
+								link.append(` | `);
+								link.appendChild(
+									App.UI.DOM.link(`Keep none of ${his} children`, () => wombUpdateIncubator(9999, false))
+								);
+							}
+							if ((V.reservedChildren + _WL - _reservedIncubator) <= freeTanks) {
+								link.append(` | `);
+								link.appendChild(
+									App.UI.DOM.link(`Keep the rest of ${his} children`, () => wombUpdateIncubator(9999, true))
+								);
+							}
+						} else if ((_reservedIncubator === _WL) || (V.reservedChildren === freeTanks) || (_reservedIncubator - _reservedNursery >= 0)) {
+							link.appendChild(
+								App.UI.DOM.link(`Keep one less child`, () => wombUpdateIncubator(1, false))
+							);
+							if (_reservedIncubator > 1) {
+								link.append(` | `);
+								link.appendChild(
+									App.UI.DOM.link(`Keep none of ${his} children`,	() => wombUpdateIncubator(9999, false))
+								);
+							}
+						}
+					} else if (V.reservedChildren < freeTanks) {
+						title.textContent = `${He} is pregnant and you have `;
+						if (freeTanks === 1) {
+							title.textContent += `an `;
+						}
+						let tank = document.createElement('span');
+						tank.className = "lime";
+						tank.textContent = `available aging tank`;
+						if (freeTanks > 1) {
+							tank.textContent += `s`;
+						}
+						tank.textContent += `.`;
+						let _cCount = (_WL > 1 ? "a" : "the");
+						link.appendChild(
+							App.UI.DOM.link(`Keep ${_cCount} child`, () => wombUpdateIncubator(1, true))
+						);
+						title.appendChild(tank);
+						if ((_WL > 1) && (V.reservedChildren + _WL) <= freeTanks) {
+							link.append(` | `);
+							link.appendChild(
+								App.UI.DOM.link(`Keep all of ${his} children`, () => wombUpdateIncubator(9999, true))
+							);
+						}
+					} else if (V.reservedChildren === freeTanks) {
+						title.textContent = `You have no available tanks for ${his} children. `;
+					}
+				}
+				el.append(title);
+				el.append(link);
+			}
+		}
+	}
+
+	function wombUpdateIncubator(count, addToWomb) {
+		if (addToWomb) {
+			WombAddToGenericReserve(slave, "incubator", count);
+		} else {
+			WombCleanGenericReserve(slave, "incubator", count);
+		}
+		V.reservedChildren = FetusGlobalReserveCount("incubator");
+		App.UI.SlaveInteract.refreshAll(slave);
+	}
+
+	return jQuery('#incubator').empty().append(el);
+};
+
+App.UI.SlaveInteract.nursery = function(slave) {
+	const {
+		// eslint-disable-next-line no-unused-vars
+		he,
+		him,
+		his,
+		hers,
+		himself,
+		boy,
+		He,
+		His
+	} = getPronouns(slave);
+	let el = document.createElement('div');
+	if (V.nursery > 0) {
+		V.reservedChildrenNursery = FetusGlobalReserveCount("nursery");
+		let reservedIncubator = WombReserveCount(slave, "incubator");
+		let reservedNursery = WombReserveCount(slave, "nursery");
+		let _WL = slave.womb.length;
+		if (slave.preg > 0 && slave.broodmother === 0 && slave.pregKnown === 1 && slave.eggType === "human") {
+			if ((slave.assignment !== Job.DAIRY || V.dairyPregSetting === 0) && (slave.assignment !== Job.FARMYARD || V.farmyardBreeding === 0)) {
+				let title = document.createElement('div');
+				let link = document.createElement('div');
+				link.className = "choices";
+				if (_WL - reservedIncubator === 0) {
+					V.reservedChildren = 0;
+					title.textContent = `${His} children are already reserved for ${V.incubatorName}`;
+					title.style.fontStyle = "italic";
+				} else {
+					const freeCribs = (V.nursery - V.cribs.length);
+					if (reservedNursery > 0) {
+						if (_WL === 1) {
+							title.textContent = `${His} child will be placed in ${V.nurseryName}. `;
+						} else if (reservedNursery < _WL) {
+							title.textContent = `_reservedNursery of ${his} children will be placed in ${V.nurseryName}.`;
+						} else if (_WL === 2) {
+							title.textContent = `Both of ${his} children will be placed in ${V.nurseryName}. `;
+						} else {
+							title.textContent = `All ${reservedNursery} of ${his} children will be placed in ${V.nurseryName}. `;
+						}
+						if ((reservedIncubator + reservedNursery < _WL) && (V.reservedChildrenNursery < freeCribs)) {
+							link.appendChild(
+								App.UI.DOM.link(`Keep another child`, () => wombUpdateNursery(1, true))
+							);
+
+							if (reservedNursery > 0) {
+								link.append(` | `);
+								link.appendChild(
+									App.UI.DOM.link(`Keep one less child`, () => wombUpdateNursery(1, false))
+								);
+							}
+							if (reservedNursery > 1) {
+								link.append(` | `);
+								link.appendChild(
+									App.UI.DOM.link(`Keep none of ${his} children`, () => wombUpdateNursery(9999, false))
+								);
+							}
+							if ((V.reservedChildrenNursery + _WL - reservedNursery) <= freeCribs) {
+								link.append(` | `);
+								link.appendChild(
+									App.UI.DOM.link(`Keep the rest of ${his} children`, () => wombUpdateNursery(9999, true))
+								);
+							}
+						} else if ((reservedNursery === _WL) || (V.reservedChildrenNursery === freeCribs) || (reservedNursery - reservedIncubator >= 0)) {
+							link.appendChild(
+								App.UI.DOM.link(`Keep one less child`, () => wombUpdateNursery(1, false))
+							);
+
+							if (reservedNursery > 1) {
+								link.append(` | `);
+								link.appendChild(
+									App.UI.DOM.link(`Keep none of ${his} children`,	() => wombUpdateNursery(9999, false))
+								);
+							}
+						}
+					} else if (V.reservedChildrenNursery < freeCribs) {
+						title.textContent = `${He} is pregnant and you have `;
+						if (freeCribs === 1) {
+							title.textContent += `an `;
+						}
+						let crib = document.createElement('span');
+						crib.className = "lime";
+						crib.textContent = `available room`;
+						if (freeCribs > 1) {
+							crib.textContent += `s`;
+						}
+						crib.textContent += `.`;
+						let _cCount = (_WL > 1 ? "a" : "the");
+						link.appendChild(
+							App.UI.DOM.link(`Keep ${_cCount} child`, () => wombUpdateNursery(1, true))
+						);
+						title.appendChild(crib);
+						if ((_WL > 1) && (V.reservedChildrenNursery + _WL) <= freeCribs) {
+							link.append(` | `);
+							link.appendChild(
+								App.UI.DOM.link(`Keep all of ${his} children`, () => wombUpdateNursery(9999, true))
+							);
+						}
+					} else if (V.reservedChildrenNursery === freeCribs) {
+						title.textContent = `You have no available rooms for ${his} children. `;
+					}
+				}
+				el.append(title);
+				el.append(link);
+			}
+		}
+	}
+
+	function wombUpdateNursery(count, addToWomb) {
+		if (addToWomb) {
+			WombAddToGenericReserve(slave, "nursery", count);
+		} else {
+			WombCleanGenericReserve(slave, "nursery", count);
+		}		V.reservedChildren = FetusGlobalReserveCount("nursery");
+		App.UI.SlaveInteract.refreshAll(slave);
+	}
+
+	return jQuery('#nursery').empty().append(el);
+};
+
+/* TODO: breeder eligibility
+<<if $propOutcome == 1 && $arcologies[0].FSRestart != "unset">>
+				<<if getSlave($AS).breedingMark == 0 && getSlave($AS).fuckdoll == 0 && getSlave($AS).eggType == "human" && isFertile(getSlave($AS)) && getSlave($AS).preg == 0>>
+					<br>&nbsp;&nbsp;&nbsp;&nbsp;
+					[[Breeder Eligibility Exam|BreedingTest]]
+				<</if>>
+			<</if>>
+			*/
+
+App.UI.SlaveInteract.bloating = function(slave) {
+	const {
+		// eslint-disable-next-line no-unused-vars
+		he,
+		him,
+		his,
+		hers,
+		himself,
+		boy,
+		He,
+		His
+	} = getPronouns(slave);
+	let bloating = document.createElement('div');
+	if (slave.inflation > 0) {
+		let intro = document.createElement('span');
+		intro.textContent = "Required Bloating";
+		intro.style.textDecoration = "underline";
+		bloating.append(intro);
+
+		bloating.append(": ");
+
+		let requirement = document.createElement('span');
+		requirement.style.fontWeight = "bold";
+		requirement.id = "inflate";
+		if (slave.inflation === 3) {
+			requirement.textContent = `${He} is required to keep 2 gallons of ${slave.inflationType} in ${him} at all times`;
+		} else if (slave.inflation === 2) {
+			requirement.textContent = `${He} is required to keep 4 liters of ${slave.inflationType} in ${him} at all times`;
+		} else if (slave.inflation === 1) {
+			requirement.textContent = `${He} is required to keep 2 liters of ${slave.inflationType} in ${him} at all times`;
+		}
+		bloating.append(requirement);
+		bloating.append(". ");
+
+		let link = App.UI.DOM.link(
+			`Let ${him} deflate`,
+			() => {
+				deflate(slave);
+				App.UI.SlaveInteract.refreshAll(slave);
+			},
+		);
+		bloating.append(link);
+	}
+	// make sure it updates itself after run
+	return jQuery('#bloating').empty().append(bloating);
+};
+
+App.UI.SlaveInteract.hormones = function(slave) {
+	let el = document.createElement('div');
+	const options = [];
+	const level = [];
+
+	if (slave.hormones !== 0) {
+		level.push({text: `None`, updateSlave: {hormones: 0}});
+	}
+
+	if (slave.indentureRestrictions < 2) {
+		options.push({text: `Intensive Female`, updateSlave: {hormones: 2}});
+	} else {
+		options.push({text: `Intensive Female`, disabled: `Cannot use intensive hormones on indentured slaves`});
+	}
+	options.push({text: `Female`, updateSlave: {hormones: 1}});
+	options.push({text: `Male`, updateSlave: {hormones: -1}});
+	if (slave.indentureRestrictions < 2) {
+		options.push({text: `Intensive Male`, updateSlave: {hormones: -2}});
+	} else {
+		options.push({text: `Intensive Male`, disabled: `Cannot use intensive hormones on indentured slaves`});
+	}
+
+	let title = document.createElement('div');
+	title.textContent = `Hormones: `;
+	let choice = document.createElement('span');
+	choice.style.fontWeight = "bold";
+	switch (slave.hormones) {
+		case 2: {
+			choice.textContent = `intensive female. `;
+			break;
+		}
+		case 1: {
+			choice.textContent = `female. `;
+			break;
+		}
+		case 0: {
+			choice.textContent = `none. `;
+			break;
+		}
+		case -1: {
+			choice.textContent = `male. `;
+			break;
+		}
+		case -2: {
+			choice.textContent = `intensive male. `;
+			break;
+		}
+		default: {
+			choice.textContent = `Not set. `;
+		}
+	}
+
+	title.append(choice);
+	title.appendChild(App.UI.SlaveInteract.generateRows(level, slave));
+	el.append(title);
+
+	let links = document.createElement('div');
+	links.appendChild(App.UI.SlaveInteract.generateRows(options, slave));
+	links.className = "choices";
+	el.append(links);
+
+	return jQuery('#hormones').empty().append(el);
+};
+
+App.UI.SlaveInteract.diet = function(slave) {
+	const {
+		// eslint-disable-next-line no-unused-vars
+		he,
+		him,
+		his,
+		hers,
+		himself,
+		boy,
+		He,
+		His
+	} = getPronouns(slave);
+	let el = document.createElement('div');
+
+	let title = document.createElement('div');
+	title.textContent = `Diet: `;
+	let choice = document.createElement('span');
+	choice.style.fontWeight = "bold";
+	choice.textContent = `${capFirstChar(slave.diet)}. `;
+
+	title.append(choice);
+	el.append(title);
+
+	const health = [];
+	health.push({text: `Healthy`, updateSlave: {diet: "healthy"}});
+	if (V.dietCleanse === 1) {
+		if (slave.health.condition < 90 || slave.chem >= 10) {
+			health.push({text: `Cleanse`, updateSlave: {diet: "cleansing"}});
+		} else {
+			health.push({text: `Cleanse`, disabled: `${He} is already healthy`});
+		}
+	}
+
+	const weight = [];
+	if (slave.weight >= -95) {
+		weight.push({text: `Lose weight`, updateSlave: {diet: "restricted"}});
+	} else {
+		weight.push({text: `Lose weight`, disabled: `${He} is already underweight`});
+	}
+	if (slave.fuckdoll === 0 && slave.fetish !== "mindbroken" && V.feeder === 1) {
+		if (slave.weight > 10 || slave.weight < -10) {
+			weight.push({text: `Correct weight`, updateSlave: {diet: "corrective"}});
+		} else {
+			weight.push({text: `Correct weight`, disabled: `${He} is already a healthy weight`});
+		}
+	}
+	if (slave.weight <= 200) {
+		weight.push({text: `Fatten`, updateSlave: {diet: "fattening"}});
+	} else {
+		weight.push({text: `Fatten`, disabled: `${He} is already overweight`});
+	}
+
+	const muscle = [];
+	if (slave.muscles < 100 && !isAmputee(slave)) {
+		muscle.push({text: `Build muscle`, updateSlave: {diet: "muscle building"}});
+	} else if (!isAmputee(slave)) {
+		muscle.push({text: `Build muscle`, disabled: `${He} is maintaining ${his} enormous musculature`});
+	} else {
+		muscle.push({text: `Build muscle`, disabled: `${He} has no limbs and thus can't effectively build muscle`});
+	}
+
+	if ((slave.muscles > 0 || slave.fuckdoll === 0) && canWalk(slave)) {
+		muscle.push({text: `Slim down`, updateSlave: {diet: "slimming"}});
+	} else if (!canWalk(slave)) {
+		muscle.push({text: `Slim down`, disabled: `${He} can't walk and thus can't trim down`});
+	} else if (slave.fuckdoll > 0) {
+		muscle.push({text: `Slim down`, disabled: `${He} has no muscles left to lose`});
+	}
+
+	const production = [];
+	if (slave.balls > 0 && V.cumProDiet === 1) {
+		production.push({text: `Cum production`, updateSlave: {diet: "cum production"}});
+	}
+	if (((isFertile(slave) && slave.preg === 0) || (slave.geneticQuirks.superfetation === 2 && canGetPregnant(slave) && V.geneticMappingUpgrade !== 0)) && V.dietFertility === 1) {
+		production.push({text: `Fertility`, updateSlave: {diet: "fertility"}});
+	}
+
+	const hormone = [];
+	if (V.feeder === 1) {
+		hormone.push({text: `Estrogen enriched`, updateSlave: {diet: "XX"}});
+		hormone.push({text: `Testosterone enriched`, updateSlave: {diet: "XY"}});
+		if (V.dietXXY === 1 && slave.balls > 0 && (slave.ovaries === 1 || slave.mpreg === 1)) {
+			hormone.push({text: `Herm hormone blend`, updateSlave: {diet: "XXY"}});
+		}
+	}
+
+	App.UI.SlaveInteract.appendLabeledChoiceRow(el, "Health", health, slave);
+	App.UI.SlaveInteract.appendLabeledChoiceRow(el, "Weight", weight, slave);
+	App.UI.SlaveInteract.appendLabeledChoiceRow(el, "Muscle", muscle, slave);
+	App.UI.SlaveInteract.appendLabeledChoiceRow(el, "Production", production, slave);
+	App.UI.SlaveInteract.appendLabeledChoiceRow(el, "Hormone", hormone, slave);
+
+	return jQuery('#diet').empty().append(el);
+};
+
+App.UI.SlaveInteract.dietBase = function(slave) {
+	let el = document.createElement('div');
+	const milk = [];
+	const cum = [];
+
+	// Milk
+	if (slave.dietCum < 2) {
+		milk.push({text: `Milk added`, updateSlave: {dietMilk: 1}});
+		if (slave.dietCum < 2) {
+			milk.push({text: `Milk based`, updateSlave: {dietMilk: 2, dietCum: 0}});
+		}
+		if (slave.dietMilk) {
+			milk.push({text: `Remove milk`, updateSlave: {dietMilk: 0}});
+		}
+	} else {
+		milk.push({text: `Milk`, disabled: `Diet is based entirely on cum`});
+	}
+
+	// Cum
+	if (slave.dietMilk < 2) {
+		cum.push({text: `Cum added`, updateSlave: {dietCum: 1}});
+		cum.push({text: `Cum based`, updateSlave: {dietCum: 2, dietMilk: 0}});
+		if (slave.dietCum) {
+			cum.push({text: `Remove cum`, updateSlave: {dietCum: 0}});
+		}
+	} else {
+		cum.push({text: `Cum`, disabled: `Diet is based entirely on milk`});
+	}
+
+	let title = document.createElement('div');
+	title.textContent = `Diet base: `;
+	let choice = document.createElement('span');
+	choice.style.fontWeight = "bold";
+	if (slave.dietCum === 2) {
+		choice.textContent = `cum based. `;
+	} else if (slave.dietCum === 1 && slave.dietMilk === 0) {
+		choice.textContent = `cum added. `;
+	} else if (slave.dietCum === 1 && slave.dietMilk === 1) {
+		choice.textContent = `cum and milk added. `;
+	} else if (slave.dietMilk === 1 && slave.dietCum === 0) {
+		choice.textContent = `milk added. `;
+	} else if (slave.dietMilk === 2) {
+		choice.textContent = `milk based. `;
+	} else if (slave.dietCum === 0 && slave.dietMilk === 0) {
+		choice.textContent = `normal. `;
+	} else {
+		choice.textContent = `THERE HAS BEEN AN ERROR.`;
+	}
+
+	title.append(choice);
+	el.append(title);
+
+	App.UI.SlaveInteract.appendLabeledChoiceRow(el, "Milk", milk, slave);
+	App.UI.SlaveInteract.appendLabeledChoiceRow(el, "Cum", cum, slave);
+
+	return jQuery('#diet-base').empty().append(el);
+};
+
+App.UI.SlaveInteract.snacks = function(slave) {
+	const {
+		// eslint-disable-next-line no-unused-vars
+		he,
+		him,
+		his,
+		hers,
+		himself,
+		boy,
+		He,
+		His
+	} = getPronouns(slave);
+	let el = document.createElement('div');
+	let options = [];
+
+	if (V.arcologies[0].FSHedonisticDecadenceResearch === 1) {
+		let title = document.createElement('div');
+		title.textContent = `Solid Slave Food Access: `;
+		let choice = document.createElement('span');
+		choice.style.fontWeight = "bold";
+		if (slave.onDiet === 0) {
+			choice.textContent = `Free to stuff ${himself}.`;
+		} else {
+			choice.textContent = `On a strict diet.`;
+		}
+		title.append(choice);
+		el.append(title);
+
+		options.push({text: `No access`, updateSlave: {onDiet: 1}});
+		options.push({text: `Full access`, updateSlave: {onDiet: 0}});
+
+		let links = document.createElement('div');
+		links.appendChild(App.UI.SlaveInteract.generateRows(options, slave));
+		links.className = "choices";
+		el.append(links);
+	}
+
+	return jQuery('#snacks').empty().append(el);
+};
diff --git a/src/interaction/slaveInteract.js b/src/interaction/slaveInteract.js
index a70da2d2f9ac1dd11bb838a2cea7e7507d8708e6..8b1f8c4307fed393b3524c3bb578738eb457dd47 100644
--- a/src/interaction/slaveInteract.js
+++ b/src/interaction/slaveInteract.js
@@ -511,514 +511,6 @@ App.UI.SlaveInteract.tutorBlock = function(slave) {
 	return el;
 };
 
-/**
- * @param {App.Entity.SlaveState} slave
- */
-App.UI.SlaveInteract.drugs = function(slave) {
-	let el = document.createElement('div');
-
-	const drugLevelOptions = [];
-	const lips = [];
-	const breasts = [];
-	const nipples = [];
-	const butt = [];
-	const dick = [];
-	const balls = [];
-	const fertility = [];
-	const hormones = [];
-	const psych = [];
-	const misc = [];
-
-	if (slave.drugs !== "no drugs") {
-		drugLevelOptions.push({text: `None`, updateSlave: {drugs: `no drugs`}});
-	}
-	if (slave.indentureRestrictions < 2) {
-		// Psych
-		if (slave.intelligence > -100 && slave.indentureRestrictions < 1) {
-			psych.push({text: `Psychosuppressants`, updateSlave: {drugs: `psychosuppressants`}});
-		} else if (slave.intelligence > -100) {
-			psych.push({text: `Psychosuppressants`, disabled: `Cannot suppress indentured slave`});
-		} else if (slave.indentureRestrictions < 1) {
-			psych.push({text: `Psychosuppressants`, disabled: `Too stupid to suppress`});
-		} else {
-			psych.push({text: `Psychosuppressants`, disabled: `Too stupid and indentured to suppress`});
-		}
-		if (V.arcologies[0].FSSlaveProfessionalismResearch === 1) {
-			if (canImproveIntelligence(slave)) {
-				psych.push({text: `Psychostimulants`, updateSlave: {drugs: `psychostimulants`}});
-			} else {
-				psych.push({text: `Psychostimulants`, disabled: `Cannot improve intelligence`});
-			}
-		}
-
-		// Breasts
-		if (V.arcologies[0].FSSlimnessEnthusiastResearch === 1) {
-			if ((slave.boobs - slave.boobsImplant - slave.boobsMilk) > 100) {
-				breasts.push({text: `Reducers`, updateSlave: {drugs: `breast redistributors`}});
-			} else {
-				breasts.push({text: `Reducers`, disabled: `Boobs are too small`});
-			}
-		}
-		if (slave.boobs < 50000) {
-			breasts.push({text: `Enhancement`, updateSlave: {drugs: `breast injections`}});
-			breasts.push({text: `Intensive enhancement`, updateSlave: {drugs: `intensive breast injections`}});
-		} else {
-			breasts.push({text: `Enhancement`, disabled: `Boobs are too large`});
-		}
-		if (V.arcologies[0].FSAssetExpansionistResearch === 1) {
-			if (slave.boobs < 50000) {
-				breasts.push({text: `Hyper enhancement`, updateSlave: {drugs: `hyper breast injections`}});
-			} else {
-				breasts.push({text: `Hyper enhancement`, disabled: `Boobs are too large`});
-			}
-		}
-
-		// Nipples
-		if (V.arcologies[0].FSSlimnessEnthusiastResearch === 1) {
-			if (slave.nipples === "huge" || slave.nipples === "puffy" || slave.nipples === "cute") {
-				nipples.push({text: `Reducers`, updateSlave: {drugs: `nipple atrophiers`}});
-			} else {
-				nipples.push({text: `Reducers`, disabled: `Nipples are ${slave.nipples}`});
-			}
-		}
-		if (V.dispensary) {
-			if (["inverted", "partially inverted", "cute", "tiny", "puffy"].includes(slave.nipples)) {
-				nipples.push({text: `Enhancement`, updateSlave: {drugs: `nipple enhancers`}});
-			} else if (slave.nipples === "huge") {
-				nipples.push({text: `Enhancement`, disabled: `Nipples are already huge`});
-			} else {
-				nipples.push({text: `Enhancement`, disabled: `Has no effect on ${slave.nipples} nipples`});
-			}
-		}
-
-		// Butt
-		if (V.arcologies[0].FSSlimnessEnthusiastResearch === 1) {
-			if (slave.butt - slave.buttImplant > 0) {
-				butt.push({text: `Reducers`, updateSlave: {drugs: `butt redistributors`}});
-			} else {
-				butt.push({text: `Reducers`, disabled: `Butt is too small`});
-			}
-		}
-		if (slave.butt < 9) {
-			butt.push({text: `Enhancement`, updateSlave: {drugs: `butt injections`}});
-			butt.push({text: `Intensive enhancement`, updateSlave: {drugs: `intensive butt injections`}});
-		} else {
-			butt.push({text: `Enhancement`, disabled: `Butt is too large`});
-		}
-		if (V.arcologies[0].FSAssetExpansionistResearch === 1) {
-			if (slave.butt < 20) {
-				butt.push({text: `Hyper enhancement`, updateSlave: {drugs: `hyper butt injections`}});
-			} else {
-				butt.push({text: `Hyper enhancement`, disabled: `Butt is too large`});
-			}
-		}
-
-		// Lips
-		if (V.arcologies[0].FSSlimnessEnthusiastResearch === 1) {
-			if (slave.lips - slave.lipsImplant > 0) {
-				lips.push({text: `Reducers`, updateSlave: {drugs: `lip atrophiers`}});
-			} else {
-				lips.push({text: `Reducers`, disabled: `Lips are too small`});
-			}
-		}
-		if (slave.lips <= 95 || (slave.lips <= 85 && V.seeExtreme !== 1)) {
-			lips.push({text: `Enhancement`, updateSlave: {drugs: `lip injections`}});
-		} else {
-			lips.push({text: `Enhancement`, disabled: `Lips are too large`});
-		}
-
-		// Fertility
-		fertility.push({text: `Fertility`, updateSlave: {drugs: `fertility drugs`}});
-		if (V.seeHyperPreg === 1 && slave.indentureRestrictions < 1 && V.superFertilityDrugs === 1 && (slave.breedingMark !== 1 || V.propOutcome === 0 || V.eugenicsFullControl === 1 || V.arcologies[0].FSRestart === "unset")) {
-			fertility.push({text: `Fertility+`, updateSlave: {drugs: `super fertility drugs`}});
-		}
-
-		// Dick/clit
-		if (V.arcologies[0].FSSlimnessEnthusiastResearch === 1) {
-			if (slave.dick > 1) {
-				dick.push({text: `Reducers`, updateSlave: {drugs: `penis atrophiers`}});
-			} else if (slave.dick === 1) {
-				dick.push({text: `Reducers`, disabled: `Dick is already at minimum size`});
-			}
-			if (slave.clit > 0) {
-				dick.push({text: `Reducers`, updateSlave: {drugs: `clitoris atrophiers`}});
-			}
-		}
-		if (slave.dick > 0) {
-			if (slave.dick < 10) {
-				dick.push({text: `Enhancement`, updateSlave: {drugs: `penis enhancement`}});
-				dick.push({text: `Intensive enhancement`, updateSlave: {drugs: `intensive penis enhancement`}});
-			} else {
-				dick.push({text: `Enhancement`, disabled: `Dick is too large`});
-			}
-		} else {
-			if (slave.clit < 5) {
-				dick.push({text: `Enhancement`, updateSlave: {drugs: `penis enhancement`}});
-				dick.push({text: `Intensive enhancement`, updateSlave: {drugs: `intensive penis enhancement`}});
-			} else {
-				dick.push({text: `Enhancement`, disabled: `Clit is too large`});
-			}
-		}
-		if (V.arcologies[0].FSAssetExpansionistResearch === 1) {
-			if (slave.dick > 0) {
-				if (slave.dick < 31) {
-					dick.push({text: `Hyper enhancement`, updateSlave: {drugs: `hyper penis enhancement`}});
-				} else {
-					dick.push({text: `Hyper enhancement`, disabled: `Dick is too large`});
-				}
-			} else {
-				if (slave.clit < 5) {
-					dick.push({text: `Hyper enhancement`, updateSlave: {drugs: `penis enhancement`}});
-				} else {
-					dick.push({text: `Hyper enhancement`, disabled: `Clit is too large`});
-				}
-			}
-		}
-		if (slave.dick > 0 && slave.dick < 11 && !canAchieveErection(slave) && slave.chastityPenis !== 1) {
-			dick.push({text: `Erectile dysfunction circumvention`, updateSlave: {drugs: `priapism agents`}});
-		}
-
-		// Balls
-		if (V.arcologies[0].FSSlimnessEnthusiastResearch === 1) {
-			if (slave.balls > 1) {
-				balls.push({text: `Reducers`, updateSlave: {drugs: `testicle atrophiers`}});
-			} else if (slave.balls === 1) {
-				balls.push({text: `Reducers`, disabled: `Balls are already at minimum size`});
-			}
-		}
-		if (slave.balls > 0) {
-			balls.push({text: `Enhancement`, updateSlave: {drugs: `testicle enhancement`}});
-			balls.push({text: `Intensive enhancement`, updateSlave: {drugs: `intensive testicle enhancement`}});
-			if (V.arcologies[0].FSAssetExpansionistResearch === 1) {
-				balls.push({text: `Hyper enhancement`, updateSlave: {drugs: `hyper testicle enhancement`}});
-			}
-		}
-
-		// Hormones
-		if (V.precociousPuberty === 1 && V.pubertyHormones === 1 && (slave.breedingMark !== 1 || V.propOutcome === 0 || V.eugenicsFullControl === 1 || V.arcologies[0].FSRestart === "unset")) {
-			if ((slave.ovaries === 1 || slave.mpreg === 1) && slave.pubertyXX === 0) {
-				hormones.push({text: `Female injections`, updateSlave: {drugs: `female hormone injections`}});
-			}
-			if (slave.balls > 0 && slave.pubertyXY === 0) {
-				hormones.push({text: `Male injections`, updateSlave: {drugs: `male hormone injections`}});
-			}
-		}
-		hormones.push({text: `Blockers`, updateSlave: {drugs: `hormone blockers`}});
-		hormones.push({text: `Enhancement`, updateSlave: {drugs: `hormone enhancers`}});
-
-		// Misc
-		if (V.arcologies[0].FSSlimnessEnthusiastResearch === 1) {
-			if (slave.labia > 0) {
-				misc.push({text: `Labia reducers`, updateSlave: {drugs: `labia atrophiers`}});
-			}
-		}
-		if (V.growthStim === 1) {
-			if (canImproveHeight(slave)) {
-				misc.push({text: `Growth Stimulants`, updateSlave: {drugs: `growth stimulants`}});
-			} else {
-				misc.push({text: `Growth Stimulants`, disabled: `Cannot increase height further`});
-			}
-		}
-		if (V.arcologies[0].FSSlimnessEnthusiastResearch === 1) {
-			if (slave.weight > -95) {
-				misc.push({text: `Weight loss pills`, updateSlave: {drugs: `appetite suppressors`}});
-			} else {
-				misc.push({text: `Weight loss pills`, disabled: `Slave is already at low weight`});
-			}
-		}
-		misc.push({text: `Steroids`, updateSlave: {drugs: `steroids`}});
-		if (slave.boobs > 250 && slave.boobShape !== "saggy" && V.purchasedSagBGone === 1) {
-			misc.push({text: `Sag-B-Gone breast lifting cream`, updateSlave: {drugs: `sag-B-gone`}});
-		}
-		if (V.arcologies[0].FSYouthPreferentialistResearch === 1) {
-			if (slave.visualAge > 18) {
-				misc.push({text: `Anti-aging cream`, updateSlave: {drugs: `anti-aging cream`}});
-			} else {
-				misc.push({text: `Anti-aging cream`, disabled: `Slave already looks young enough`});
-			}
-		}
-	}
-
-	let title = document.createElement('div');
-	title.textContent = `Drugs: `;
-	let chosenDrug = document.createElement('span');
-	chosenDrug.textContent = `${capFirstChar(slave.drugs)}. `;
-	chosenDrug.style.fontWeight = "bold";
-	title.append(chosenDrug);
-	title.appendChild(App.UI.SlaveInteract.generateRows(drugLevelOptions, slave));
-	el.append(title);
-
-	App.UI.SlaveInteract.appendLabeledChoiceRow(el, "Lips", lips, slave);
-	App.UI.SlaveInteract.appendLabeledChoiceRow(el, "Breasts", breasts, slave);
-	App.UI.SlaveInteract.appendLabeledChoiceRow(el, "Nipples", nipples, slave);
-	App.UI.SlaveInteract.appendLabeledChoiceRow(el, "Butt", butt, slave);
-	App.UI.SlaveInteract.appendLabeledChoiceRow(el, slave.dick > 0 ? "Dick" : "Clit", dick, slave);
-	App.UI.SlaveInteract.appendLabeledChoiceRow(el, "Balls", balls, slave);
-	App.UI.SlaveInteract.appendLabeledChoiceRow(el, "Fertility", fertility, slave);
-	App.UI.SlaveInteract.appendLabeledChoiceRow(el, "Hormones", hormones, slave);
-	App.UI.SlaveInteract.appendLabeledChoiceRow(el, "Psych", psych, slave);
-	App.UI.SlaveInteract.appendLabeledChoiceRow(el, "Misc", misc, slave);
-
-	return jQuery('#drugs').empty().append(el);
-};
-
-App.UI.SlaveInteract.hormones = function(slave) {
-	let el = document.createElement('div');
-	const options = [];
-	const level = [];
-
-	if (slave.hormones !== 0) {
-		level.push({text: `None`, updateSlave: {hormones: 0}});
-	}
-
-	if (slave.indentureRestrictions < 2) {
-		options.push({text: `Intensive Female`, updateSlave: {hormones: 2}});
-	} else {
-		options.push({text: `Intensive Female`, disabled: `Cannot use intensive hormones on indentured slaves`});
-	}
-	options.push({text: `Female`, updateSlave: {hormones: 1}});
-	options.push({text: `Male`, updateSlave: {hormones: -1}});
-	if (slave.indentureRestrictions < 2) {
-		options.push({text: `Intensive Male`, updateSlave: {hormones: -2}});
-	} else {
-		options.push({text: `Intensive Male`, disabled: `Cannot use intensive hormones on indentured slaves`});
-	}
-
-	let title = document.createElement('div');
-	title.textContent = `Hormones: `;
-	let choice = document.createElement('span');
-	choice.style.fontWeight = "bold";
-	switch (slave.hormones) {
-		case 2: {
-			choice.textContent = `intensive female. `;
-			break;
-		}
-		case 1: {
-			choice.textContent = `female. `;
-			break;
-		}
-		case 0: {
-			choice.textContent = `none. `;
-			break;
-		}
-		case -1: {
-			choice.textContent = `male. `;
-			break;
-		}
-		case -2: {
-			choice.textContent = `intensive male. `;
-			break;
-		}
-		default: {
-			choice.textContent = `Not set. `;
-		}
-	}
-
-	title.append(choice);
-	title.appendChild(App.UI.SlaveInteract.generateRows(level, slave));
-	el.append(title);
-
-	let links = document.createElement('div');
-	links.appendChild(App.UI.SlaveInteract.generateRows(options, slave));
-	links.className = "choices";
-	el.append(links);
-
-	return jQuery('#hormones').empty().append(el);
-};
-
-App.UI.SlaveInteract.diet = function(slave) {
-	const {
-		// eslint-disable-next-line no-unused-vars
-		he,
-		him,
-		his,
-		hers,
-		himself,
-		boy,
-		He,
-		His
-	} = getPronouns(slave);
-	let el = document.createElement('div');
-
-	let title = document.createElement('div');
-	title.textContent = `Diet: `;
-	let choice = document.createElement('span');
-	choice.style.fontWeight = "bold";
-	choice.textContent = `${capFirstChar(slave.diet)}. `;
-
-	title.append(choice);
-	el.append(title);
-
-	const health = [];
-	health.push({text: `Healthy`, updateSlave: {diet: "healthy"}});
-	if (V.dietCleanse === 1) {
-		if (slave.health.condition < 90 || slave.chem >= 10) {
-			health.push({text: `Cleanse`, updateSlave: {diet: "cleansing"}});
-		} else {
-			health.push({text: `Cleanse`, disabled: `${He} is already healthy`});
-		}
-	}
-
-	const weight = [];
-	if (slave.weight >= -95) {
-		weight.push({text: `Lose weight`, updateSlave: {diet: "restricted"}});
-	} else {
-		weight.push({text: `Lose weight`, disabled: `${He} is already underweight`});
-	}
-	if (slave.fuckdoll === 0 && slave.fetish !== "mindbroken" && V.feeder === 1) {
-		if (slave.weight > 10 || slave.weight < -10) {
-			weight.push({text: `Correct weight`, updateSlave: {diet: "corrective"}});
-		} else {
-			weight.push({text: `Correct weight`, disabled: `${He} is already a healthy weight`});
-		}
-	}
-	if (slave.weight <= 200) {
-		weight.push({text: `Fatten`, updateSlave: {diet: "fattening"}});
-	} else {
-		weight.push({text: `Fatten`, disabled: `${He} is already overweight`});
-	}
-
-	const muscle = [];
-	if (slave.muscles < 100 && !isAmputee(slave)) {
-		muscle.push({text: `Build muscle`, updateSlave: {diet: "muscle building"}});
-	} else if (!isAmputee(slave)) {
-		muscle.push({text: `Build muscle`, disabled: `${He} is maintaining ${his} enormous musculature`});
-	} else {
-		muscle.push({text: `Build muscle`, disabled: `${He} has no limbs and thus can't effectively build muscle`});
-	}
-
-	if ((slave.muscles > 0 || slave.fuckdoll === 0) && canWalk(slave)) {
-		muscle.push({text: `Slim down`, updateSlave: {diet: "slimming"}});
-	} else if (!canWalk(slave)) {
-		muscle.push({text: `Slim down`, disabled: `${He} can't walk and thus can't trim down`});
-	} else if (slave.fuckdoll > 0) {
-		muscle.push({text: `Slim down`, disabled: `${He} has no muscles left to lose`});
-	}
-
-	const production = [];
-	if (slave.balls > 0 && V.cumProDiet === 1) {
-		production.push({text: `Cum production`, updateSlave: {diet: "cum production"}});
-	}
-	if (((isFertile(slave) && slave.preg === 0) || (slave.geneticQuirks.superfetation === 2 && canGetPregnant(slave) && V.geneticMappingUpgrade !== 0)) && V.dietFertility === 1) {
-		production.push({text: `Fertility`, updateSlave: {diet: "fertility"}});
-	}
-
-	const hormone = [];
-	if (V.feeder === 1) {
-		hormone.push({text: `Estrogen enriched`, updateSlave: {diet: "XX"}});
-		hormone.push({text: `Testosterone enriched`, updateSlave: {diet: "XY"}});
-		if (V.dietXXY === 1 && slave.balls > 0 && (slave.ovaries === 1 || slave.mpreg === 1)) {
-			hormone.push({text: `Herm hormone blend`, updateSlave: {diet: "XXY"}});
-		}
-	}
-
-	App.UI.SlaveInteract.appendLabeledChoiceRow(el, "Health", health, slave);
-	App.UI.SlaveInteract.appendLabeledChoiceRow(el, "Weight", weight, slave);
-	App.UI.SlaveInteract.appendLabeledChoiceRow(el, "Muscle", muscle, slave);
-	App.UI.SlaveInteract.appendLabeledChoiceRow(el, "Production", production, slave);
-	App.UI.SlaveInteract.appendLabeledChoiceRow(el, "Hormone", hormone, slave);
-
-	return jQuery('#diet').empty().append(el);
-};
-
-App.UI.SlaveInteract.dietBase = function(slave) {
-	let el = document.createElement('div');
-	const milk = [];
-	const cum = [];
-
-	// Milk
-	if (slave.dietCum < 2) {
-		milk.push({text: `Milk added`, updateSlave: {dietMilk: 1}});
-		if (slave.dietCum < 2) {
-			milk.push({text: `Milk based`, updateSlave: {dietMilk: 2, dietCum: 0}});
-		}
-		if (slave.dietMilk) {
-			milk.push({text: `Remove milk`, updateSlave: {dietMilk: 0}});
-		}
-	} else {
-		milk.push({text: `Milk`, disabled: `Diet is based entirely on cum`});
-	}
-
-	// Cum
-	if (slave.dietMilk < 2) {
-		cum.push({text: `Cum added`, updateSlave: {dietCum: 1}});
-		cum.push({text: `Cum based`, updateSlave: {dietCum: 2, dietMilk: 0}});
-		if (slave.dietCum) {
-			cum.push({text: `Remove cum`, updateSlave: {dietCum: 0}});
-		}
-	} else {
-		cum.push({text: `Cum`, disabled: `Diet is based entirely on milk`});
-	}
-
-	let title = document.createElement('div');
-	title.textContent = `Diet base: `;
-	let choice = document.createElement('span');
-	choice.style.fontWeight = "bold";
-	if (slave.dietCum === 2) {
-		choice.textContent = `cum based. `;
-	} else if (slave.dietCum === 1 && slave.dietMilk === 0) {
-		choice.textContent = `cum added. `;
-	} else if (slave.dietCum === 1 && slave.dietMilk === 1) {
-		choice.textContent = `cum and milk added. `;
-	} else if (slave.dietMilk === 1 && slave.dietCum === 0) {
-		choice.textContent = `milk added. `;
-	} else if (slave.dietMilk === 2) {
-		choice.textContent = `milk based. `;
-	} else if (slave.dietCum === 0 && slave.dietMilk === 0) {
-		choice.textContent = `normal. `;
-	} else {
-		choice.textContent = `THERE HAS BEEN AN ERROR.`;
-	}
-
-	title.append(choice);
-	el.append(title);
-
-	App.UI.SlaveInteract.appendLabeledChoiceRow(el, "Milk", milk, slave);
-	App.UI.SlaveInteract.appendLabeledChoiceRow(el, "Cum", cum, slave);
-
-	return jQuery('#diet-base').empty().append(el);
-};
-
-App.UI.SlaveInteract.snacks = function(slave) {
-	const {
-		// eslint-disable-next-line no-unused-vars
-		he,
-		him,
-		his,
-		hers,
-		himself,
-		boy,
-		He,
-		His
-	} = getPronouns(slave);
-	let el = document.createElement('div');
-	let options = [];
-
-	if (V.arcologies[0].FSHedonisticDecadenceResearch === 1) {
-		let title = document.createElement('div');
-		title.textContent = `Solid Slave Food Access: `;
-		let choice = document.createElement('span');
-		choice.style.fontWeight = "bold";
-		if (slave.onDiet === 0) {
-			choice.textContent = `Free to stuff ${himself}.`;
-		} else {
-			choice.textContent = `On a strict diet.`;
-		}
-		title.append(choice);
-		el.append(title);
-
-		options.push({text: `No access`, updateSlave: {onDiet: 1}});
-		options.push({text: `Full access`, updateSlave: {onDiet: 0}});
-
-		let links = document.createElement('div');
-		links.appendChild(App.UI.SlaveInteract.generateRows(options, slave));
-		links.className = "choices";
-		el.append(links);
-	}
-
-	return jQuery('#snacks').empty().append(el);
-};
-
 App.UI.SlaveInteract.useSlaveDisplay = function(slave) {
 	// Goal: Be able to write the entire "use her" block with only dom fragments.
 	let el = document.createElement('div');
@@ -1438,570 +930,7 @@ App.UI.SlaveInteract.useSlaveDisplay = function(slave) {
 	return el;
 };
 
-App.UI.SlaveInteract.bloating = function(slave) {
-	const {
-		// eslint-disable-next-line no-unused-vars
-		he,
-		him,
-		his,
-		hers,
-		himself,
-		boy,
-		He,
-		His
-	} = getPronouns(slave);
-	let bloating = document.createElement('div');
-	if (slave.inflation > 0) {
-		let intro = document.createElement('span');
-		intro.textContent = "Required Bloating";
-		intro.style.textDecoration = "underline";
-		bloating.append(intro);
-
-		bloating.append(": ");
-
-		let requirement = document.createElement('span');
-		requirement.style.fontWeight = "bold";
-		requirement.id = "inflate";
-		if (slave.inflation === 3) {
-			requirement.textContent = `${He} is required to keep 2 gallons of ${slave.inflationType} in ${him} at all times`;
-		} else if (slave.inflation === 2) {
-			requirement.textContent = `${He} is required to keep 4 liters of ${slave.inflationType} in ${him} at all times`;
-		} else if (slave.inflation === 1) {
-			requirement.textContent = `${He} is required to keep 2 liters of ${slave.inflationType} in ${him} at all times`;
-		}
-		bloating.append(requirement);
-		bloating.append(". ");
-
-		let link = App.UI.DOM.link(
-			`Let ${him} deflate`,
-			() => {
-				deflate(slave);
-				App.UI.SlaveInteract.refreshAll(slave);
-			},
-		);
-		bloating.append(link);
-	}
-	// make sure it updates itself after run
-	return jQuery('#bloating').empty().append(bloating);
-};
-
-App.UI.SlaveInteract.fertility = function(slave) {
-	const {
-		// eslint-disable-next-line no-unused-vars
-		he,
-		him,
-		his,
-		hers,
-		himself,
-		boy,
-		He,
-		His
-	} = getPronouns(slave);
-	let fertilityBlock = document.createElement('span');
-	let linkArray = [];
-	if (slave.ovaries === 1 || slave.mpreg === 1 || slave.preg > 0) {
-		let note = "";
-		if (slave.preg < -1) {
-			note += `${He} is sterile`;
-		} else if (slave.pubertyXX === 0 && slave.preg < 1) {
-			note += `${He} is not yet fertile`;
-		} else if (slave.ovaryAge >= 47 && slave.preg < 1) {
-			note += `${He} is too old to become pregnant`;
-			if (slave.preg === -1) {
-				slave.preg = 0;
-				SetBellySize(slave);
-			}
-		} else if (slave.broodmotherOnHold === 1) {
-			note += `${His} pregnancy implant is turned off`;
-			if (slave.broodmotherCountDown > 0) {
-				note += `${he} is expected to be completely emptied of ${his} remaining brood in ${slave.broodmotherCountDown} week`;
-				if (slave.broodmotherCountDown > 1) {
-					note += `s`;
-				}
-				note += `.`;
-				linkArray.push(App.UI.DOM.link(
-					`Turn on implant`,
-					() => {
-						slave.broodmotherOnHold = 0;
-						slave.broodmotherCountDown = 0;
-						App.UI.SlaveInteract.refreshAll(slave);
-					},
-				));
-			}
-		} else if (slave.preg >= -1) {
-			fertilityBlock.append("Contraception and fertility: ");
-			let fertility = "";
-			// fertility.id = "fertility";
-			if (slave.preg === -1) {
-				fertility = "using contraceptives";
-			} else if (slave.pregWeek < 0) {
-				fertility = "postpartum";
-			} else if (slave.preg === 0) {
-				fertility = "fertile";
-			} else if (slave.preg < 4 && (slave.broodmother === 0 || slave.broodmotherOnHold === 1)) {
-				fertility = "may be pregnant";
-			} else if (slave.preg < 2) {
-				fertility = "1 week pregnant";
-			} else {
-				fertility = `${Math.trunc(slave.preg * 1000) / 1000} weeks pregnant`; // * and / needed to avoid seeing something like 20.1000000008 in some cases.
-				if (slave.broodmother > 0) {
-					fertility += " broodmother";
-				}
-			}
-			fertility += ". ";
-			App.UI.DOM.appendNewElement("span", fertilityBlock, fertility, "bold");
-
-			if (slave.preg === 0) {
-				linkArray.push(App.UI.DOM.link(
-					`Use contraceptives`,
-					() => {
-						slave.preg = -1;
-						App.UI.SlaveInteract.refreshAll(slave);
-					},
-				));
-			} else if (slave.preg === -1) {
-				linkArray.push(App.UI.DOM.link(
-					`Let ${him} get pregnant`,
-					() => {
-						slave.preg = 0;
-						App.UI.SlaveInteract.refreshAll(slave);
-					},
-				));
-			} else if (isInduced(slave)) {
-				note += `Hormones are being slipped into ${his} food; ${he} will give birth suddenly and rapidly this week`;
-			} else if (
-				slave.preg > slave.pregData.normalBirth - 2 &&
-				slave.preg > slave.pregData.minLiveBirth &&
-				slave.broodmother === 0 &&
-				!isInLabor(slave)
-			) {
-				linkArray.push(App.UI.DOM.link(
-					`Induce labor`,
-					() => {
-						induce(slave);
-						App.UI.SlaveInteract.refreshAll(slave);
-					},
-				));
-				linkArray.push(App.UI.DOM.passageLink(`Give ${him} a cesarean section`, "csec"));
-			} else if (slave.broodmother > 0) {
-				if (slave.broodmotherOnHold !== 1) {
-					linkArray.push(App.UI.DOM.link(
-						`Turn off implant`,
-						() => {
-							slave.broodmotherOnHold = 1;
-							slave.broodmotherCountDown = 38 - WombMinPreg(slave);
-							App.UI.SlaveInteract.refreshAll(slave);
-						},
-					));
-				}
-				if (slave.preg > 37) {
-					linkArray.push(App.UI.DOM.passageLink(`Induce mass childbirth`, "BirthStorm"));
-				}
-			} else if (slave.preg > slave.pregData.minLiveBirth) {
-				linkArray.push(App.UI.DOM.link(
-					`Give ${him} a cesarean section`,
-					() => {
-						slave.broodmotherOnHold = 0;
-						slave.broodmotherCountDown = 0;
-					},
-					[],
-					"csec"
-				));
-			} else if (slave.preg > 0 && slave.breedingMark === 1 && V.propOutcome === 1 && V.arcologies[0].FSRestart !== "unset" && V.eugenicsFullControl !== 1 && (slave.pregSource === -1 || slave.pregSource === -6)) {
-				note += "You are forbidden from aborting an Elite child";
-			} else if (slave.preg > 0) {
-				linkArray.push(App.UI.DOM.link(
-					`Abort ${his} pregnancy`,
-					() => {
-						slave.broodmotherOnHold = 0;
-						slave.broodmotherCountDown = 0;
-					},
-					[],
-					"Abort"
-				));
-			}
-		}
-		App.UI.DOM.appendNewElement("span", fertilityBlock, note, "note");
-		App.UI.DOM.appendNewElement("div", fertilityBlock, App.UI.DOM.generateLinksStrip(linkArray), "choices");
-	}
-	if (
-		(slave.pregKnown === 1) &&
-		(V.pregSpeedControl === 1) &&
-		(
-			slave.breedingMark !== 1 ||
-			V.propOutcome === 0 ||
-			V.eugenicsFullControl === 1 ||
-			V.arcologies[0].FSRestart === "unset"
-		) &&
-		(slave.indentureRestrictions < 1) &&
-		(slave.broodmother === 0) &&
-		V.seePreg !== 0
-	) {
-		let title = document.createElement('div');
-		let underline = document.createElement('span');
-		underline.style.textDecoration = "underline";
-		underline.textContent = "Pregnancy control";
-		title.appendChild(underline);
-		title.append(": ");
-
-		if (slave.pregControl === "labor suppressors") {
-			title.append("Labor is suppressed. ");
-		} else if (slave.pregControl === "slow gestation") {
-			title.append("Slowed gestation speed. ");
-		} else if (slave.pregControl === "speed up") {
-			title.append("Faster gestation speed, staffed clinic recommended. ");
-		} else {
-			title.append("Normal gestation and birth. ");
-		}
-		fertilityBlock.appendChild(title);
-
-		linkArray = [];
-		if (slave.pregControl !== "none") {
-			linkArray.push(App.UI.DOM.link(
-				`Normal ${slave.preg < slave.pregData.normalBirth ? "Gestation" : "Birth"}`,
-				() => {
-					slave.pregControl = "none";
-					App.UI.SlaveInteract.fertility(slave);
-				},
-			));
-		}
-		if (slave.preg < slave.pregData.normalBirth) {
-			if (slave.pregControl !== "slow gestation") {
-				linkArray.push(App.UI.DOM.link(
-					`Slow Gestation`,
-					() => {
-						slave.pregControl = "slow gestation";
-						App.UI.SlaveInteract.fertility(slave);
-					},
-				));
-			}
-			if (slave.pregControl !== "speed up") {
-				linkArray.push(App.UI.DOM.link(
-					`Fast Gestation`,
-					() => {
-						slave.pregControl = "speed up";
-						App.UI.SlaveInteract.fertility(slave);
-					},
-				));
-			}
-		}
-		if (slave.preg >= slave.pregData.minLiveBirth) {
-			if (slave.pregControl !== "labor suppressors") {
-				linkArray.push(App.UI.DOM.link(
-					`Suppress Labor`,
-					() => {
-						slave.pregControl = "labor suppressors";
-						App.UI.SlaveInteract.fertility(slave);
-					},
-				));
-			}
-		}
-		App.UI.DOM.appendNewElement("div", fertilityBlock, App.UI.DOM.generateLinksStrip(linkArray), "choices");
-	}
-	return jQuery('#fertility-block').empty().append(fertilityBlock);
-};
-
-App.UI.SlaveInteract.curatives = function(slave) {
-	const curativeOptions = [];
-
-	curativeOptions.push({text: `None`, updateSlave: {curatives: 0}});
-	curativeOptions.push({text: `Preventatives`, updateSlave: {curatives: 1}});
-	curativeOptions.push({text: `Curatives`, updateSlave: {curatives: 2}});
 
-	let el = document.createElement('div');
-	let title = document.createElement('div');
-	title.append(`Health: `);
-	let chosenOption = document.createElement('span');
-	chosenOption.style.fontWeight = "bold";
-	if (slave.curatives > 1) {
-		chosenOption.textContent = `curatives`;
-	} else if (slave.curatives > 0) {
-		chosenOption.textContent = `preventatives`;
-	} else {
-		chosenOption.textContent = `none`;
-	}
-	title.appendChild(chosenOption);
-	title.append(`.`);
-	let link = document.createElement('div');
-	link.className = "choices";
-	link.appendChild(App.UI.SlaveInteract.generateRows(curativeOptions, slave));
-	el.append(title);
-	el.append(link);
-	return jQuery('#curatives').empty().append(el);
-};
-
-App.UI.SlaveInteract.aphrodisiacs = function(slave) {
-	const aphrodisiacOptions = [];
-
-	aphrodisiacOptions.push({text: `None`, updateSlave: {aphrodisiacs: 0}});
-	aphrodisiacOptions.push({text: `Aphrodisiacs`, updateSlave: {aphrodisiacs: 1}});
-	aphrodisiacOptions.push({text: `Extreme aphrodisiacs`, updateSlave: {aphrodisiacs: 2}});
-	aphrodisiacOptions.push({text: `Anaphrodisiacs`, updateSlave: {aphrodisiacs: -1}, note: `Suppresses libido`});
-
-
-	let el = document.createElement('div');
-	let title = document.createElement('div');
-	title.append(`Aphrodisiacs: `);
-	let chosenOption = document.createElement('span');
-	chosenOption.style.fontWeight = "bold";
-	if (slave.aphrodisiacs > 1) {
-		chosenOption.textContent = `extreme`;
-	} else if (slave.aphrodisiacs > 0) {
-		chosenOption.textContent = `applied`;
-	} else if (slave.aphrodisiacs === -1) {
-		chosenOption.textContent = `anaphrodisiacs`;
-	} else {
-		chosenOption.textContent = `none`;
-	}
-	title.appendChild(chosenOption);
-	title.append(`.`);
-	let link = document.createElement('div');
-	link.className = "choices";
-	link.appendChild(App.UI.SlaveInteract.generateRows(aphrodisiacOptions, slave));
-	el.append(title);
-	el.append(link);
-	return jQuery('#aphrodisiacs').empty().append(el);
-};
-
-/**
- * @param {App.Entity.SlaveState} slave
- */
-App.UI.SlaveInteract.incubator = function(slave) {
-	const {
-		// eslint-disable-next-line no-unused-vars
-		he,
-		him,
-		his,
-		hers,
-		himself,
-		boy,
-		He,
-		His
-	} = getPronouns(slave);
-	V.reservedChildren = FetusGlobalReserveCount("incubator");
-	let _reservedIncubator = WombReserveCount(slave, "incubator");
-	let _reservedNursery = WombReserveCount(slave, "nursery");
-	let _WL = slave.womb.length;
-	let el = document.createElement('div');
-
-	if (V.incubator > 0) {
-		if (slave.preg > 0 && slave.broodmother === 0 && slave.pregKnown === 1 && slave.eggType === "human") {
-			if ((slave.assignment !== Job.DAIRY || V.dairyPregSetting === 0) && (slave.assignment !== Job.FARMYARD || V.farmyardBreeding === 0)) {
-				let title = document.createElement('div');
-				let link = document.createElement('div');
-				link.className = "choices";
-				if (_WL - _reservedNursery === 0) {
-					title.textContent = `${His} children are already reserved for ${V.nurseryName}`;
-					title.style.fontStyle = "italic";
-				} else {
-					const freeTanks = (V.incubator - V.tanks.length);
-					if (_reservedIncubator > 0) {
-						if (_WL === 1) {
-							title.textContent = `${His} child will be placed in ${V.incubatorName}. `;
-						} else if (_reservedIncubator < _WL) {
-							title.textContent = `${_reservedIncubator} of ${his} children will be placed in ${V.incubatorName}.`;
-						} else if (_WL === 2) {
-							title.textContent = `Both of ${his} children will be placed in ${V.incubatorName}. `;
-						} else {
-							title.textContent = `All ${_reservedIncubator} of ${his} children will be placed in ${V.incubatorName}. `;
-						}
-						if ((_reservedIncubator + _reservedNursery < _WL) && (V.reservedChildren < freeTanks)) {
-							link.appendChild(
-								App.UI.DOM.link(`Keep another child`, () => wombUpdateIncubator(1, true))
-							);
-							if (_reservedIncubator > 0) {
-								link.append(` | `);
-								link.appendChild(
-									App.UI.DOM.link(`Keep one less child`, () => wombUpdateIncubator(1, false))
-								);
-							}
-							if (_reservedIncubator > 1) {
-								link.append(` | `);
-								link.appendChild(
-									App.UI.DOM.link(`Keep none of ${his} children`, () => wombUpdateIncubator(9999, false))
-								);
-							}
-							if ((V.reservedChildren + _WL - _reservedIncubator) <= freeTanks) {
-								link.append(` | `);
-								link.appendChild(
-									App.UI.DOM.link(`Keep the rest of ${his} children`, () => wombUpdateIncubator(9999, true))
-								);
-							}
-						} else if ((_reservedIncubator === _WL) || (V.reservedChildren === freeTanks) || (_reservedIncubator - _reservedNursery >= 0)) {
-							link.appendChild(
-								App.UI.DOM.link(`Keep one less child`, () => wombUpdateIncubator(1, false))
-							);
-							if (_reservedIncubator > 1) {
-								link.append(` | `);
-								link.appendChild(
-									App.UI.DOM.link(`Keep none of ${his} children`,	() => wombUpdateIncubator(9999, false))
-								);
-							}
-						}
-					} else if (V.reservedChildren < freeTanks) {
-						title.textContent = `${He} is pregnant and you have `;
-						if (freeTanks === 1) {
-							title.textContent += `an `;
-						}
-						let tank = document.createElement('span');
-						tank.className = "lime";
-						tank.textContent = `available aging tank`;
-						if (freeTanks > 1) {
-							tank.textContent += `s`;
-						}
-						tank.textContent += `.`;
-						let _cCount = (_WL > 1 ? "a" : "the");
-						link.appendChild(
-							App.UI.DOM.link(`Keep ${_cCount} child`, () => wombUpdateIncubator(1, true))
-						);
-						title.appendChild(tank);
-						if ((_WL > 1) && (V.reservedChildren + _WL) <= freeTanks) {
-							link.append(` | `);
-							link.appendChild(
-								App.UI.DOM.link(`Keep all of ${his} children`, () => wombUpdateIncubator(9999, true))
-							);
-						}
-					} else if (V.reservedChildren === freeTanks) {
-						title.textContent = `You have no available tanks for ${his} children. `;
-					}
-				}
-				el.append(title);
-				el.append(link);
-			}
-		}
-	}
-
-	function wombUpdateIncubator(count, addToWomb) {
-		if (addToWomb) {
-			WombAddToGenericReserve(slave, "incubator", count);
-		} else {
-			WombCleanGenericReserve(slave, "incubator", count);
-		}
-		V.reservedChildren = FetusGlobalReserveCount("incubator");
-		App.UI.SlaveInteract.refreshAll(slave);
-	}
-
-	return jQuery('#incubator').empty().append(el);
-};
-
-App.UI.SlaveInteract.nursery = function(slave) {
-	const {
-		// eslint-disable-next-line no-unused-vars
-		he,
-		him,
-		his,
-		hers,
-		himself,
-		boy,
-		He,
-		His
-	} = getPronouns(slave);
-	let el = document.createElement('div');
-	if (V.nursery > 0) {
-		V.reservedChildrenNursery = FetusGlobalReserveCount("nursery");
-		let reservedIncubator = WombReserveCount(slave, "incubator");
-		let reservedNursery = WombReserveCount(slave, "nursery");
-		let _WL = slave.womb.length;
-		if (slave.preg > 0 && slave.broodmother === 0 && slave.pregKnown === 1 && slave.eggType === "human") {
-			if ((slave.assignment !== Job.DAIRY || V.dairyPregSetting === 0) && (slave.assignment !== Job.FARMYARD || V.farmyardBreeding === 0)) {
-				let title = document.createElement('div');
-				let link = document.createElement('div');
-				link.className = "choices";
-				if (_WL - reservedIncubator === 0) {
-					V.reservedChildren = 0;
-					title.textContent = `${His} children are already reserved for ${V.incubatorName}`;
-					title.style.fontStyle = "italic";
-				} else {
-					const freeCribs = (V.nursery - V.cribs.length);
-					if (reservedNursery > 0) {
-						if (_WL === 1) {
-							title.textContent = `${His} child will be placed in ${V.nurseryName}. `;
-						} else if (reservedNursery < _WL) {
-							title.textContent = `_reservedNursery of ${his} children will be placed in ${V.nurseryName}.`;
-						} else if (_WL === 2) {
-							title.textContent = `Both of ${his} children will be placed in ${V.nurseryName}. `;
-						} else {
-							title.textContent = `All ${reservedNursery} of ${his} children will be placed in ${V.nurseryName}. `;
-						}
-						if ((reservedIncubator + reservedNursery < _WL) && (V.reservedChildrenNursery < freeCribs)) {
-							link.appendChild(
-								App.UI.DOM.link(`Keep another child`, () => wombUpdateNursery(1, true))
-							);
-
-							if (reservedNursery > 0) {
-								link.append(` | `);
-								link.appendChild(
-									App.UI.DOM.link(`Keep one less child`, () => wombUpdateNursery(1, false))
-								);
-							}
-							if (reservedNursery > 1) {
-								link.append(` | `);
-								link.appendChild(
-									App.UI.DOM.link(`Keep none of ${his} children`, () => wombUpdateNursery(9999, false))
-								);
-							}
-							if ((V.reservedChildrenNursery + _WL - reservedNursery) <= freeCribs) {
-								link.append(` | `);
-								link.appendChild(
-									App.UI.DOM.link(`Keep the rest of ${his} children`, () => wombUpdateNursery(9999, true))
-								);
-							}
-						} else if ((reservedNursery === _WL) || (V.reservedChildrenNursery === freeCribs) || (reservedNursery - reservedIncubator >= 0)) {
-							link.appendChild(
-								App.UI.DOM.link(`Keep one less child`, () => wombUpdateNursery(1, false))
-							);
-
-							if (reservedNursery > 1) {
-								link.append(` | `);
-								link.appendChild(
-									App.UI.DOM.link(`Keep none of ${his} children`,	() => wombUpdateNursery(9999, false))
-								);
-							}
-						}
-					} else if (V.reservedChildrenNursery < freeCribs) {
-						title.textContent = `${He} is pregnant and you have `;
-						if (freeCribs === 1) {
-							title.textContent += `an `;
-						}
-						let crib = document.createElement('span');
-						crib.className = "lime";
-						crib.textContent = `available room`;
-						if (freeCribs > 1) {
-							crib.textContent += `s`;
-						}
-						crib.textContent += `.`;
-						let _cCount = (_WL > 1 ? "a" : "the");
-						link.appendChild(
-							App.UI.DOM.link(`Keep ${_cCount} child`, () => wombUpdateNursery(1, true))
-						);
-						title.appendChild(crib);
-						if ((_WL > 1) && (V.reservedChildrenNursery + _WL) <= freeCribs) {
-							link.append(` | `);
-							link.appendChild(
-								App.UI.DOM.link(`Keep all of ${his} children`, () => wombUpdateNursery(9999, true))
-							);
-						}
-					} else if (V.reservedChildrenNursery === freeCribs) {
-						title.textContent = `You have no available rooms for ${his} children. `;
-					}
-				}
-				el.append(title);
-				el.append(link);
-			}
-		}
-	}
-
-	function wombUpdateNursery(count, addToWomb) {
-		if (addToWomb) {
-			WombAddToGenericReserve(slave, "nursery", count);
-		} else {
-			WombCleanGenericReserve(slave, "nursery", count);
-		}		V.reservedChildren = FetusGlobalReserveCount("nursery");
-		App.UI.SlaveInteract.refreshAll(slave);
-	}
-
-	return jQuery('#nursery').empty().append(el);
-};
 
 App.UI.SlaveInteract.custom = (function() {
 	let el;