diff --git a/src/js/itemAvailability.js b/src/js/itemAvailability.js
index 92a3f257d06871c9b04b22c603b74931c4efe0ef..3c53b337c0d1a71ca67865cf4047b12ecec73c24 100644
--- a/src/js/itemAvailability.js
+++ b/src/js/itemAvailability.js
@@ -549,8 +549,8 @@ window.addProsthetic = function(slave, prosthetic) {
 		if (limb > 0) {
 			let p = {
 				id: prosthetic,
-				arm: { left: new App.Entity.LimbState(), right: new App.Entity.LimbState() },
-				leg: { left: new App.Entity.LimbState(), right: new App.Entity.LimbState() }
+				arm: {left: new App.Entity.LimbState(), right: new App.Entity.LimbState()},
+				leg: {left: new App.Entity.LimbState(), right: new App.Entity.LimbState()}
 			};
 			p.arm.left.type = limb;
 			p.arm.right.type = limb;
@@ -558,7 +558,7 @@ window.addProsthetic = function(slave, prosthetic) {
 			p.leg.right.type = limb;
 			slave.readyProsthetics.push(p);
 		} else {
-			slave.readyProsthetics.push({ id: prosthetic });
+			slave.readyProsthetics.push({id: prosthetic});
 		}
 	}
 };
diff --git a/src/js/slaveInteract.js b/src/js/slaveInteract.js
index 13d2d4399ed54fb0fc4cce297c4906e5d6f5a34d..16507727fe10125ad1fdba95426d8b97c9474621 100644
--- a/src/js/slaveInteract.js
+++ b/src/js/slaveInteract.js
@@ -1,3 +1,4 @@
+/* eslint-disable no-unused-vars */ // TODO: remove after testing
 App.UI.SlaveInteract = {};
 
 App.UI.SlaveInteract.fucktoyPref = function(slave) {
@@ -7,14 +8,14 @@ App.UI.SlaveInteract.fucktoyPref = function(slave) {
 	let links = [];
 
 	if ((slave.assignment === "please you") || (slave.assignment === "serve in the master suite") || (slave.assignment === "be your Concubine")) {
-		let storyLabel  = document.createElement('span');
+		let storyLabel = document.createElement('span');
 		storyLabel.className = "story-label";
 		storyLabel.textContent = `Fucktoy use preference:`;
 		el.appendChild(storyLabel);
 
 		el.append(` `);
 
-		let hole  = document.createElement('span');
+		let hole = document.createElement('span');
 		hole.style.fontWeight = "bold";
 		hole.textContent = `${slave.toyHole}. `;
 		el.appendChild(hole);
@@ -44,7 +45,7 @@ App.UI.SlaveInteract.fucktoyPref = function(slave) {
 		let row = document.createDocumentFragment();
 		for (let i = 0; i < toyHoleArray.length; i++) {
 			let link;
-			const separator  = document.createTextNode(` | `);
+			const separator = document.createTextNode(` | `);
 			const keys = Object.keys(toyHoleArray[i]);
 
 			// Test to see if there was a problem with the key
@@ -60,29 +61,29 @@ App.UI.SlaveInteract.fucktoyPref = function(slave) {
 			// is it just text?
 			if (toyHoleArray[i].disabled) {
 				link = App.UI.DOM.disabledLink(toyHoleArray[i].text, [toyHoleArray[i].disabled]);
-			// Are they already on this toyHole?
+				// Are they already on this toyHole?
 			} else if (toyHoleArray[i].toyHole === slave.toyHole) {
 				link = document.createTextNode(toyHoleArray[i].text);
-			// Set up the link
+				// Set up the link
 			} else {
 				link = App.UI.DOM.link(
 					toyHoleArray[i].text,
 					() => {
 						slave.toyHole = toyHoleArray[i].toyHole,
-						App.UI.SlaveInteract.fucktoyPref(slave);
+							App.UI.SlaveInteract.fucktoyPref(slave);
 					},
 				);
 
 				// add a note node if required
 				if (toyHoleArray[i].note) {
-					let note  = document.createElement('span');
+					let note = document.createElement('span');
 					note.textContent = `${toyHoleArray[i].note} `;
 					note.className = "note";
 					link.appendChild(note);
 				}
 			}
 			row.appendChild(link);
-			if (i < toyHoleArray.length-1) {
+			if (i < toyHoleArray.length - 1) {
 				row.appendChild(separator);
 			}
 		}
@@ -127,7 +128,7 @@ App.UI.SlaveInteract.assignmentBlock = function(blockId, slave) {
 				`Stay on this assignment for another month`,
 				() => {
 					slave.sentence += 4,
-					App.UI.SlaveInteract.assignmentBlock(blockId, slave);
+						App.UI.SlaveInteract.assignmentBlock(blockId, slave);
 				},
 			)
 		);
@@ -139,16 +140,22 @@ App.UI.SlaveInteract.assignmentBlock = function(blockId, slave) {
 App.UI.SlaveInteract.drugs = function(slave) {
 	let el = document.createElement('div');
 
-	const
-		{
-			// eslint-disable-next-line no-unused-vars
-			he, him, his, hers, himself, boy, He, His
-		} = getPronouns(slave);
+	const {
+		// eslint-disable-next-line no-unused-vars
+		he,
+		him,
+		his,
+		hers,
+		himself,
+		boy,
+		He,
+		His
+	} = getPronouns(slave);
 	const drugOptions = [];
 	const drugLevelOptions = [];
 
-	if (slave.drugs !== "no drugs"){
-		drugLevelOptions.push({text: `None`, drug: `no drugs`});
+	if (slave.drugs !== "no drugs") {
+		drugLevelOptions.push({text: `None`, updateSlave: {drugs: `no drugs`}});
 	}
 	if (slave.indentureRestrictions < 2) {
 		if (
@@ -159,23 +166,23 @@ App.UI.SlaveInteract.drugs = function(slave) {
 		) {
 			switch (slave.drugs) {
 				case "intensive breast injections":
-					drugLevelOptions.push({text: `Moderate`, drug: `breast injections`});
+					drugLevelOptions.push({text: `Moderate`, updateSlave: {drugs: `breast injections`}});
 					break;
 				case "intensive butt injections":
-					drugLevelOptions.push({text: `Moderate`, drug: `butt injections`});
+					drugLevelOptions.push({text: `Moderate`, updateSlave: {drugs: `butt injections`}});
 					break;
 				case "intensive penis enhancement":
-					drugLevelOptions.push({text: `Moderate`, drug: `penis enhancement`});
+					drugLevelOptions.push({text: `Moderate`, updateSlave: {drugs: `penis enhancement`}});
 					break;
 				case "intensive testicle enhancement":
-					drugLevelOptions.push({text: `Moderate`, drug: `testicle enhancement`});
+					drugLevelOptions.push({text: `Moderate`, updateSlave: {drugs: `testicle enhancement`}});
 					break;
 			}
 		} else if (slave.drugs === "breast injections" || slave.drugs === "butt injections" || slave.drugs === "penis enhancement" || slave.drugs === "testicle enhancement") {
-			drugLevelOptions.push({text: `Intensify`, drug: "intensive " + slave.drugs});
+			drugLevelOptions.push({text: `Intensify`, updateSlave: {drugs: "intensive " + slave.drugs}});
 		}
 		if (slave.intelligence > -100 && slave.indentureRestrictions < 1) {
-			drugOptions.push({text: `Psychosuppressants`, drug: `psychosuppressants`});
+			drugOptions.push({text: `Psychosuppressants`, updateSlave: {drugs: `psychosuppressants`}});
 		} else if (slave.intelligence > -100) {
 			drugOptions.push({text: `Psychosuppressants`, disabled: `Cannot suppress indentured slave`});
 		} else if (slave.indentureRestrictions < 1) {
@@ -185,86 +192,86 @@ App.UI.SlaveInteract.drugs = function(slave) {
 		}
 		if (V.arcologies[0].FSSlaveProfessionalismResearch === 1) {
 			if (canImproveIntelligence(slave)) {
-				drugOptions.push({text: `Psychostimulants`, drug: `psychostimulants`});
+				drugOptions.push({text: `Psychostimulants`, updateSlave: {drugs: `psychostimulants`}});
 			} else {
 				drugOptions.push({text: `Psychostimulants`, disabled: `Cannot improve intelligence`});
 			}
 		}
 		if (slave.boobs < 48000) {
-			drugOptions.push({text: `Breasts`, drug: `breast injections`});
+			drugOptions.push({text: `Breasts`, updateSlave: {drugs: `breast injections`}});
 		} else {
 			drugOptions.push({text: `Breasts`, disabled: `Boobs are too large`});
 		}
 		if (V.arcologies[0].FSAssetExpansionistResearch === 1) {
 			if (slave.boobs < 25000) {
-				drugOptions.push({text: `Hyper-Breasts`, drug: `hyper breast injections`});
+				drugOptions.push({text: `Hyper-Breasts`, updateSlave: {drugs: `hyper breast injections`}});
 			} else {
 				drugOptions.push({text: `Hyper Breasts`, disabled: `Boobs are too large`});
 			}
 		}
 		if (V.arcologies[0].FSSlimnessEnthusiastResearch === 1) {
 			if ((slave.boobs - slave.boobsImplant - slave.boobsMilk) > 100) {
-				drugOptions.push({text: `Breast reducers`, drug: `breast redistributors`});
+				drugOptions.push({text: `Breast reducers`, updateSlave: {drugs: `breast redistributors`}});
 			} else {
 				drugOptions.push({text: `Breast reducers`, disabled: `Boobs are too small`});
 			}
 			if (slave.nipples === "huge" || slave.nipples === "puffy" || slave.nipples === "cute") {
-				drugOptions.push({text: `Nipple reducers`, drug: `nipple atrophiers`});
+				drugOptions.push({text: `Nipple reducers`, updateSlave: {drugs: `nipple atrophiers`}});
 			} else {
 				drugOptions.push({text: `Nipple reducers`, disabled: `Nipples are ${slave.nipples}`});
 			}
 		}
 		if (slave.butt < 9) {
-			drugOptions.push({text: `Buttocks`, drug: `butt injections`});
+			drugOptions.push({text: `Buttocks`, updateSlave: {drugs: `butt injections`}});
 		} else {
 			drugOptions.push({text: `Buttocks`, disabled: `Butt is too large`});
 		}
 		if (V.arcologies[0].FSAssetExpansionistResearch === 1) {
 			if (slave.butt < 20) {
-				drugOptions.push({text: `Hyper-Buttocks`, drug: `hyper butt injections`});
+				drugOptions.push({text: `Hyper-Buttocks`, updateSlave: {drugs: `hyper butt injections`}});
 			} else {
 				drugOptions.push({text: `Hyper Buttocks`, disabled: `Butt is too large`});
 			}
 		}
 		if (V.arcologies[0].FSSlimnessEnthusiastResearch === 1) {
 			if (slave.butt - slave.buttImplant > 0) {
-				drugOptions.push({text: `Butt reducers`, drug: `butt redistributors`});
+				drugOptions.push({text: `Butt reducers`, updateSlave: {drugs: `butt redistributors`}});
 			} else {
 				drugOptions.push({text: `Butt reducers`, disabled: `Butt is too small`});
 			}
 		}
 		if (slave.lips <= 95 || (slave.lips <= 85 && V.seeExtreme !== 1)) {
-			drugOptions.push({text: `Lips`, drug: `lip injections`});
+			drugOptions.push({text: `Lips`, updateSlave: {drugs: `lip injections`}});
 		} else {
 			drugOptions.push({text: `Lips`, disabled: `Lips are too large`});
 		}
 		if (V.arcologies[0].FSSlimnessEnthusiastResearch === 1) {
-			if (slave.lips-slave.lipsImplant > 0) {
-				drugOptions.push({text: `Lip reducers`, drug: `lip atrophiers`});
+			if (slave.lips - slave.lipsImplant > 0) {
+				drugOptions.push({text: `Lip reducers`, updateSlave: {drugs: `lip atrophiers`}});
 			} else {
 				drugOptions.push({text: `Lip reducers`, disabled: `Lips are too small`});
 			}
 		}
 		if (V.growthStim === 1) {
 			if (canImproveHeight(slave)) {
-				drugOptions.push({text: `Growth Stimulants`, drug: `growth stimulants`});
+				drugOptions.push({text: `Growth Stimulants`, updateSlave: {drugs: `growth stimulants`}});
 			} else {
 				drugOptions.push({text: `Growth Stimulants`, disabled: `Cannot increase height further`});
 			}
 		}
-		drugOptions.push({text: `Fertility`, drug: `fertility drugs`});
+		drugOptions.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")) {
-			drugOptions.push({text: `Fertility+`, drug: `super fertility drugs`});
+			drugOptions.push({text: `Fertility+`, updateSlave: {drugs: `super fertility drugs`}});
 		}
 		if (slave.dick > 0) {
 			if (slave.dick < 10) {
-				drugOptions.push({text: `Penis enhancement`, drug: `penis enhancement`});
+				drugOptions.push({text: `Penis enhancement`, updateSlave: {drugs: `penis enhancement`}});
 			} else {
 				drugOptions.push({text: `Penis enhancement`, disabled: `Dick is too large`});
 			}
 		} else {
 			if (slave.clit < 5) {
-				drugOptions.push({text: `Clitoris enhancement`, drug: `penis enhancement`});
+				drugOptions.push({text: `Clitoris enhancement`, updateSlave: {drugs: `penis enhancement`}});
 			} else {
 				drugOptions.push({text: `Clitoris enhancement`, disabled: `Clit is too large`});
 			}
@@ -272,13 +279,13 @@ App.UI.SlaveInteract.drugs = function(slave) {
 		if (V.arcologies[0].FSAssetExpansionistResearch === 1) {
 			if (slave.dick > 0) {
 				if (slave.dick < 31) {
-					drugOptions.push({text: `Hyper penis enhancement`, drug: `hyper penis enhancement`});
+					drugOptions.push({text: `Hyper penis enhancement`, updateSlave: {drugs: `hyper penis enhancement`}});
 				} else {
 					drugOptions.push({text: `Hyper penis enhancement`, disabled: `Dick is too large`});
 				}
 			} else {
 				if (slave.clit < 5) {
-					drugOptions.push({text: `Hyper clitoris enhancement`, drug: `penis enhancement`});
+					drugOptions.push({text: `Hyper clitoris enhancement`, updateSlave: {drugs: `penis enhancement`}});
 				} else {
 					drugOptions.push({text: `Hyper clitoris enhancement`, disabled: `Clit is too large`});
 				}
@@ -286,60 +293,60 @@ App.UI.SlaveInteract.drugs = function(slave) {
 		}
 		if (V.arcologies[0].FSSlimnessEnthusiastResearch === 1) {
 			if (slave.dick > 1) {
-				drugOptions.push({text: `Penis reducers`, drug: `penis atrophiers`});
+				drugOptions.push({text: `Penis reducers`, updateSlave: {drugs: `penis atrophiers`}});
 			} else if (slave.dick === 1) {
 				drugOptions.push({text: `Penis reducers`, disabled: `Dick is already at minimum size`});
 			}
 		}
 		if (slave.dick > 0 && slave.dick < 11 && !canAchieveErection(slave) && slave.chastityPenis !== 1) {
-			drugOptions.push({text: `Erectile dysfunction circumvention`, drug: `priapism agents`});
+			drugOptions.push({text: `Erectile dysfunction circumvention`, updateSlave: {drugs: `priapism agents`}});
 		}
 		if (slave.balls > 0) {
-			drugOptions.push({text: `Testicle enhancement`, drug: `testicle enhancement`});
+			drugOptions.push({text: `Testicle enhancement`, updateSlave: {drugs: `testicle enhancement`}});
 			if (V.arcologies[0].FSAssetExpansionistResearch === 1) {
-				drugOptions.push({text: `Hyper testicle enhancement`, drug: `hyper testicle enhancement`});
+				drugOptions.push({text: `Hyper testicle enhancement`, updateSlave: {drugs: `hyper testicle enhancement`}});
 			}
 		}
 		if (V.arcologies[0].FSSlimnessEnthusiastResearch === 1) {
 			if (slave.balls > 1) {
-				drugOptions.push({text: `Testicle reducers`, drug: `testicle atrophiers`});
+				drugOptions.push({text: `Testicle reducers`, updateSlave: {drugs: `testicle atrophiers`}});
 			} else if (slave.balls === 1) {
 				drugOptions.push({text: `Testicle reducers`, disabled: `Balls are already at minimum size`});
 			}
 			if (slave.clit > 0) {
-				drugOptions.push({text: `Clitoris reducers`, drug: `clitoris atrophiers`});
+				drugOptions.push({text: `Clitoris reducers`, updateSlave: {drugs: `clitoris atrophiers`}});
 			}
 			if (slave.labia > 0) {
-				drugOptions.push({text: `Labia reducers`, drug: `labia atrophiers`});
+				drugOptions.push({text: `Labia reducers`, updateSlave: {drugs: `labia atrophiers`}});
 			}
 		}
 		if (V.arcologies[0].FSYouthPreferentialistResearch === 1) {
 			if (slave.visualAge > 18) {
-				drugOptions.push({text: `Anti-aging cream`, drug: `anti-aging cream`});
+				drugOptions.push({text: `Anti-aging cream`, updateSlave: {drugs: `anti-aging cream`}});
 			} else {
 				drugOptions.push({text: `Anti-aging cream`, disabled: `Slave already looks young enough`});
 			}
 		}
-		drugOptions.push({text: `Steroids`, drug: `steroids`});
+		drugOptions.push({text: `Steroids`, updateSlave: {drugs: `steroids`}});
 		if (V.arcologies[0].FSSlimnessEnthusiastResearch === 1) {
 			if (slave.weight > -95) {
-				drugOptions.push({text: `Weight loss pills`, drug: `appetite suppressors`});
+				drugOptions.push({text: `Weight loss pills`, updateSlave: {drugs: `appetite suppressors`}});
 			} else {
 				drugOptions.push({text: `Weight loss pills`, disabled: `Slave is already at low weight`});
 			}
 		}
 		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) {
-				drugOptions.push({text: `Female hormone injections`, drug: `female hormone injections`});
+				drugOptions.push({text: `Female hormone injections`, updateSlave: {drugs: `female hormone injections`}});
 			}
 			if (slave.balls > 0 && slave.pubertyXY === 0) {
-				drugOptions.push({text: `Male hormone injections`, drug: `male hormone injections`});
+				drugOptions.push({text: `Male hormone injections`, updateSlave: {drugs: `male hormone injections`}});
 			}
 		}
-		drugOptions.push({text: `Hormone enhancers`, drug: `hormone enhancers`});
-		drugOptions.push({text: `Hormone blockers`, drug: `hormone blockers`});
+		drugOptions.push({text: `Hormone enhancers`, updateSlave: {drugs: `hormone enhancers`}});
+		drugOptions.push({text: `Hormone blockers`, updateSlave: {drugs: `hormone blockers`}});
 		if (slave.boobs > 250 && slave.boobShape !== "saggy" && V.purchasedSagBGone === 1) {
-			drugOptions.push({text: `Sag-B-Gone breast lifting cream`, drug: `sag-B-gone`});
+			drugOptions.push({text: `Sag-B-Gone breast lifting cream`, updateSlave: {drugs: `sag-B-gone`}});
 		}
 	}
 
@@ -349,63 +356,14 @@ App.UI.SlaveInteract.drugs = function(slave) {
 	chosenDrug.textContent = `${capFirstChar(slave.drugs)} `;
 	chosenDrug.style.fontWeight = "bold";
 	title.append(chosenDrug);
-	title.appendChild(generateRows(drugLevelOptions));
+	title.appendChild(App.UI.SlaveInteract.generateRows(drugLevelOptions, slave));
 	el.append(title);
 
 	let drugLinks = document.createElement('div');
-	drugLinks.appendChild(generateRows(drugOptions));
-	drugLinks.className ="choices";
+	drugLinks.appendChild(App.UI.SlaveInteract.generateRows(drugOptions, slave));
+	drugLinks.className = "choices";
 	el.append(drugLinks);
 
-	function generateRows(drugArray) {
-		let row = document.createDocumentFragment();
-		for (let i = 0; i < drugArray.length; i++) {
-			let link;
-			const separator  = document.createTextNode(` | `);
-			const keys = Object.keys(drugArray[i]);
-
-			// Test to see if there was a problem with the key
-			for (let j = 0; j < keys.length; j++) {
-				if (["text", "drug", "disabled"].includes(keys[j])) {
-					continue;
-				} else {
-					drugArray[i].text += " ERROR, THIS SCENE WAS NOT ENTERED CORRECTLY";
-					console.log("Trash found while generateRows() was running: " + keys[j] + ": " + drugArray[i][keys[j]]);
-					break;
-				}
-			}
-			// is it just text?
-			if (drugArray[i].disabled) {
-				link = App.UI.DOM.disabledLink(drugArray[i].text, [drugArray[i].disabled]);
-			// Are they already on this drug?
-			} else if (drugArray[i].drug === slave.drugs) {
-				link = App.UI.DOM.disabledLink(drugArray[i].text, [`${He} is already on this drug`]);
-			// Set up the link
-			} else {
-				link = App.UI.DOM.link(
-					drugArray[i].text,
-					() => {
-						slave.drugs = drugArray[i].drug,
-						App.UI.SlaveInteract.drugs(slave);
-					},
-				);
-
-				// add a note node if required
-				if (drugArray[i].note) {
-					let note  = document.createElement('span');
-					note.textContent = `${drugArray[i].note} `;
-					note.className = "note";
-					link.appendChild(note);
-				}
-			}
-			row.appendChild(link);
-			if (i < drugArray.length-1) {
-				row.appendChild(separator);
-			}
-		}
-
-		return row;
-	}
 	return jQuery('#drugs').empty().append(el);
 };
 
@@ -413,11 +371,17 @@ 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');
 
-	const
-		{
-			// eslint-disable-next-line no-unused-vars
-			he, him, his, hers, himself, boy, He, His
-		} = getPronouns(slave);
+	const {
+		// eslint-disable-next-line no-unused-vars
+		he,
+		him,
+		his,
+		hers,
+		himself,
+		boy,
+		He,
+		His
+	} = getPronouns(slave);
 
 	/*
 	Array of objects.  Each object follows the form: {
@@ -568,10 +532,10 @@ App.UI.SlaveInteract.useSlaveDisplay = function(slave) {
 							fillAssOptions.push({text: `Aphrodisiacs`, scene: `FillUpButt`, updateSlave: {inflationType: "aphrodisiac", inflationMethod: 2}});
 						}
 						if (slave.inflationType === "curative" || slave.inflationType === "none") {
-							fillAssOptions.push({text: `Curatives`, scene: `FillUpButt`,  updateSlave: {inflationType: "curative", inflationMethod: 2}});
+							fillAssOptions.push({text: `Curatives`, scene: `FillUpButt`, updateSlave: {inflationType: "curative", inflationMethod: 2}});
 						}
 						if (slave.inflationType === "tightener" || slave.inflationType === "none") {
-							fillAssOptions.push({text: `Rectal tighteners`, scene: `FillUpButt`,  updateSlave: {inflationType: "tightener", inflationMethod: 2}});
+							fillAssOptions.push({text: `Rectal tighteners`, scene: `FillUpButt`, updateSlave: {inflationType: "tightener", inflationMethod: 2}});
 						}
 					}
 				} /* inflation < 3 */
@@ -601,7 +565,7 @@ App.UI.SlaveInteract.useSlaveDisplay = function(slave) {
 		}
 		if (canPenetrate(slave)) {
 			sexOptions.push({text: `Have another slave ride ${his} cock`, scene: `FSlaveSlaveDick`});
-		}else if (slave.clit >= 4) {
+		} else if (slave.clit >= 4) {
 			sexOptions.push({text: `Have another slave ride ${his} clit-dick`, scene: `FSlaveSlaveDick`});
 		}
 		if (V.seeBestiality === 1 && V.cheatMode === 1) {
@@ -674,9 +638,10 @@ App.UI.SlaveInteract.useSlaveDisplay = function(slave) {
 			} else {
 				if (slave.relation !== 0) {
 					let assayedSlave = getSlave(slave.relationTarget);
-					const
-					{
-						daughter: daughter2, mother: mother2, sister: sister2
+					const {
+						daughter: daughter2,
+						mother: mother2,
+						sister: sister2
 					} = getPronouns(assayedSlave);
 					if (isSlaveAvailable(assayedSlave)) {
 						if (slave.relation === "mother") {
@@ -744,7 +709,8 @@ App.UI.SlaveInteract.useSlaveDisplay = function(slave) {
 		if (V.cheatMode === 1) {
 			sexOptions.push({text: `Check ${his} stats`, scene: `Slave Stats`});
 		}
-	} else { /* IS A FUCKDOLL */
+	} else {
+		/* IS A FUCKDOLL */
 		sexOptions.push({text: `Fuck ${his} face hole`, scene: `FFuckdollOral`});
 		if (canDoVaginal(slave)) {
 			sexOptions.push({text: `Fuck ${his} front hole`, scene: `FFuckdollVaginal`});
@@ -761,7 +727,10 @@ App.UI.SlaveInteract.useSlaveDisplay = function(slave) {
 	let activeSlaveRepSacrifice = repGainSacrifice(slave, V.arcologies[0]);
 	if (activeSlaveRepSacrifice > 0 && V.arcologies[0].FSPaternalist === "unset" && (slave.breedingMark === 0 || V.propOutcome === 0 || V.eugenicsFullControl === 1 || V.arcologies[0].FSRestart === "unset")) {
 		sexOptions.push({
-	text: `Sacrifice ${him} on the altar`, goto: `Aztec Slave Sacrifice`, note: `This will kill ${him} and gain you ${activeSlaveRepSacrifice} reputation`, update: {sacrificeType: "life"}
+			text: `Sacrifice ${him} on the altar`,
+			goto: `Aztec Slave Sacrifice`,
+			note: `This will kill ${him} and gain you ${activeSlaveRepSacrifice} reputation`,
+			update: {sacrificeType: "life"}
 		});
 	}
 	el.append(`Or use ${him} here: `);
@@ -783,7 +752,7 @@ App.UI.SlaveInteract.useSlaveDisplay = function(slave) {
 		let row = document.createElement('span');
 		for (let i = 0; i < sexArray.length; i++) {
 			let link;
-			const separator  = document.createTextNode(` | `);
+			const separator = document.createTextNode(` | `);
 			const keys = Object.keys(sexArray[i]);
 
 			// Test to see if there was a problem with the key
@@ -815,14 +784,14 @@ App.UI.SlaveInteract.useSlaveDisplay = function(slave) {
 
 				// add a note node if required
 				if (sexArray[i].note) {
-					let note  = document.createElement('span');
+					let note = document.createElement('span');
 					note.textContent = `${sexArray[i].note} `;
 					note.className = "note";
 					link.appendChild(note);
 				}
 			}
 			row.appendChild(link);
-			if (i < sexArray.length-1) {
+			if (i < sexArray.length - 1) {
 				row.appendChild(separator);
 			}
 		}
@@ -851,11 +820,17 @@ App.UI.SlaveInteract.useSlaveDisplay = function(slave) {
 };
 
 App.UI.SlaveInteract.bloating = function(slave) {
-	const
-		{
-			// eslint-disable-next-line no-unused-vars
-			he, him, his, hers, himself, boy, He, His
-		} = getPronouns(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');
@@ -883,12 +858,12 @@ App.UI.SlaveInteract.bloating = function(slave) {
 				`Let ${him} deflate`,
 				() => {
 					slave.inflation = 0,
-					slave.inflationType = "none",
-					slave.inflationMethod = 0,
-					slave.cumSource = 0,
-					slave.milkSource = 0,
-					SetBellySize(slave),
-					App.UI.SlaveInteract.refreshAll(slave);
+						slave.inflationType = "none",
+						slave.inflationMethod = 0,
+						slave.cumSource = 0,
+						slave.milkSource = 0,
+						SetBellySize(slave),
+						App.UI.SlaveInteract.refreshAll(slave);
 				},
 			);
 			bloating.append(link);
@@ -897,10 +872,10 @@ App.UI.SlaveInteract.bloating = function(slave) {
 				`Let ${him} deflate`,
 				() => {
 					slave.inflation = 0,
-					slave.inflationType = "none",
-					slave.inflationMethod = 0,
-					SetBellySize(slave),
-					App.UI.SlaveInteract.refreshAll(slave);
+						slave.inflationType = "none",
+						slave.inflationMethod = 0,
+						SetBellySize(slave),
+						App.UI.SlaveInteract.refreshAll(slave);
 				},
 			);
 			bloating.append(link);
@@ -911,13 +886,21 @@ App.UI.SlaveInteract.bloating = function(slave) {
 };
 
 App.UI.SlaveInteract.fertility = function(slave) {
-	const
-		{
-			// eslint-disable-next-line no-unused-vars
-			he, him, his, hers, himself, boy, He, His
-		} = getPronouns(slave);
-	const separator  = document.createTextNode(` | `);
+	const {
+		// eslint-disable-next-line no-unused-vars
+		he,
+		him,
+		his,
+		hers,
+		himself,
+		boy,
+		He,
+		His
+	} = getPronouns(slave);
+	const separator = document.createTextNode(` | `);
 	let fertilityblock = document.createElement('span');
+	let link = document.createElement('div');
+	link.className = "choices";
 	if (slave.ovaries === 1 || slave.mpreg === 1 || slave.preg > 0) {
 		let note = document.createTextNode(``);
 		note.className = "note";
@@ -935,85 +918,86 @@ App.UI.SlaveInteract.fertility = function(slave) {
 			note.textContent += `${His} pregnancy implant is turned off`;
 			if (slave.broodmotherCountDown > 0) {
 				note.textContent += `${he} is expected to be completely emptied of ${his} remaining brood in ${slave.broodmotherCountDown} week`;
-				if (slave.broodmotherCountDown > 1){
+				if (slave.broodmotherCountDown > 1) {
 					note.textContent += `s`;
 				}
 				note.textContent += `.`;
-				let link = App.UI.DOM.link(
+				link.append(App.UI.DOM.link(
 					`Turn on implant`,
 					() => {
 						slave.broodmotherOnHold = 0,
-						slave.broodmotherCountDown = 0;
+							slave.broodmotherCountDown = 0;
 					},
 					[],
 					"Slave Interact"
-				);
+				));
 				fertilityblock.append(link);
 			}
 		} else if (slave.preg >= -1) {
 			fertilityblock.append("Contraception: ");
 			let fertility = document.createElement('span');
-			fertility.id = "fertility";
+			// fertility.id = "fertility";
 			fertility.style.fontWeight = "bold";
-				if (slave.preg === -1) {
-					fertility.textContent = "using contraceptives";
-				} else if (slave.pregWeek < 0) {
-					fertility.textContent = "postpartum";
-				} else if (slave.preg === 0) {
-					fertility.textContent = "fertile";
-				} else if (slave.preg < 4) {
-					fertility.textContent = "may be pregnant";
-				} else {
-					fertility.textContent = `${slave.preg} weeks pregnant`;
-				}
+			if (slave.preg === -1) {
+				fertility.textContent = "using contraceptives";
+			} else if (slave.pregWeek < 0) {
+				fertility.textContent = "postpartum";
+			} else if (slave.preg === 0) {
+				fertility.textContent = "fertile";
+			} else if (slave.preg < 4) {
+				fertility.textContent = "may be pregnant";
+			} else {
+				fertility.textContent = `${slave.preg} weeks pregnant`;
+			}
 			fertility.textContent += ". ";
+			fertilityblock.appendChild(fertility);
 			if (slave.preg > 0 && V.pregnancyMonitoringUpgrade === 1) {
 				fertilityblock.append(App.UI.DOM.passageLink("Inspect pregnancy", "Analyze Pregnancy"));
-				fertilityblock.append(` | `);
+				fertilityblock.append(separator);
 			}
 			if (slave.preg === 0) {
-				let link = App.UI.DOM.link(
+				link.appendChild(App.UI.DOM.link(
 					`Use contraceptives`,
 					() => {
 						slave.preg = -1,
-						App.UI.SlaveInteract.refreshAll(slave);
+							App.UI.SlaveInteract.refreshAll(slave);
 					},
-				);
+				));
 				fertilityblock.append(link);
 			} else if (slave.preg === -1) {
-				let link = App.UI.DOM.link(
+				link.appendChild(App.UI.DOM.link(
 					`Let ${him} get pregnant`,
 					() => {
 						slave.preg = 0,
-						App.UI.SlaveInteract.refreshAll(slave);
+							App.UI.SlaveInteract.refreshAll(slave);
 					},
-				);
+				));
 				fertilityblock.append(link);
 			} else if (slave.induce === 1) {
 				note.textContent += `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 && slave.labor === 0) {
-				let link = App.UI.DOM.link(
+			} else if (slave.preg > slave.pregData.normalBirth - 2 && slave.preg > slave.pregData.minLiveBirth && slave.broodmother === 0 && slave.labor === 0) {
+				link.appendChild(App.UI.DOM.link(
 					`Induce labor`,
 					() => {
 						slave.labor = 1,
-						slave.induce = 1,
-						V.birthee = 1;
+							slave.induce = 1,
+							V.birthee = 1;
 					},
 					[],
 					"Slave Interact"
-				);
+				));
 				fertilityblock.append(link);
 				fertilityblock.appendChild(separator);
 				fertilityblock.append(App.UI.DOM.passageLink(`Give ${him} a cesarean section`, "csec"));
 			} else if (slave.broodmother > 0) {
 				if (slave.broodmotherOnHold !== 1) {
-					let link = App.UI.DOM.link(
+					link.appendChild(App.UI.DOM.link(
 						`Turn off implant`,
 						() => {
 							slave.broodmotherOnHold = 1,
-							slave.broodmotherCountDown = 38-WombMinPreg(slave);
+								slave.broodmotherCountDown = 38 - WombMinPreg(slave);
 						},
-					);
+					));
 					fertilityblock.append(link);
 				}
 				if (slave.broodmotherOnHold !== 1 && slave.preg >= 36) {
@@ -1024,31 +1008,31 @@ App.UI.SlaveInteract.fertility = function(slave) {
 					fertilityblock.append(App.UI.DOM.passageLink(`Induce mass childbirth`, "BirthStorm"));
 				}
 			} else if (slave.preg > slave.pregData.minLiveBirth) {
-				let link = App.UI.DOM.link(
+				link.appendChild(App.UI.DOM.link(
 					`Give  ${him} a cesarean section`,
 					() => {
 						slave.broodmotherOnHold = 0,
-						slave.broodmotherCountDown = 0;
+							slave.broodmotherCountDown = 0;
 					},
 					[],
 					"csec"
-				);
+				));
 				fertilityblock.append(link);
 			} 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.textContent += "You are forbidden from aborting an Elite child";
 			} else if (slave.preg > 0) {
-				let link = App.UI.DOM.link(
+				link.appendChild(App.UI.DOM.link(
 					`Abort ${his} pregnancy`,
 					() => {
 						slave.broodmotherOnHold = 0,
-						slave.broodmotherCountDown = 0;
+							slave.broodmotherCountDown = 0;
 					},
 					[],
 					"Abort"
-				);
+				));
 				fertilityblock.append(link);
 			}
-		fertilityblock.append(note);
+			fertilityblock.append(note);
 		}
 	}
 	if (
@@ -1064,87 +1048,1445 @@ App.UI.SlaveInteract.fertility = function(slave) {
 		(slave.broodmother === 0) &&
 		V.seePreg !== 0
 	) {
-		let control = document.createElement('div');
+		let title = document.createElement('div');
 		let underline = document.createElement('span');
+		link =  document.createElement('div');
+		link.className = "choices";
 
 		underline.style.textDecoration = "underline";
 		underline.textContent = "Pregnancy control";
-		control.append(underline);
-		control.append(": ");
+		title.appendChild(underline);
+		title.append(": ");
 
 		if (slave.pregControl === "labor suppressors") {
-			control.append("Labor is suppressed. ");
+			title.append("Labor is suppressed. ");
 		} else if (slave.pregControl === "slow gestation") {
-			control.append("Slowed gestation speed. ");
+			title.append("Slowed gestation speed. ");
 		} else if (slave.pregControl === "speed up") {
-			control.append("Faster gestation speed, staffed clinic recommended. ");
+			title.append("Faster gestation speed, staffed clinic recommended. ");
 		} else {
-			control.append("Normal gestation and birth. ");
+			title.append("Normal gestation and birth. ");
 		}
-		fertilityblock.append(control);
-		control = document.createElement('div');
+		fertilityblock.appendChild(title);
 		if (slave.preg >= slave.pregData.minLiveBirth) {
 			if (slave.pregControl === "labor suppressors") {
-				let link = App.UI.DOM.link(
+				link.appendChild(App.UI.DOM.link(
 					`Normal Birth`,
 					() => {
 						slave.pregControl = "none",
-						App.UI.SlaveInteract.fertility(slave);
+							App.UI.SlaveInteract.fertility(slave);
 					},
-				);
-				control.append(link);
+				));
 			} else {
-				let link = App.UI.DOM.link(
+				link.appendChild(App.UI.DOM.link(
 					`Suppress Labor`,
 					() => {
 						slave.pregControl = "labor suppressors",
-						App.UI.SlaveInteract.fertility(slave);
+							App.UI.SlaveInteract.fertility(slave);
 					},
-				);
-				control.append(link);
+				));
 			}
 		} else if (slave.preg < slave.pregData.normalBirth) {
 			if (slave.pregControl !== "none") {
-				let link = App.UI.DOM.link(
+				link.appendChild(App.UI.DOM.link(
 					`Normal Gestation`,
 					() => {
 						slave.pregControl = "none",
-						App.UI.SlaveInteract.fertility(slave);
+							App.UI.SlaveInteract.fertility(slave);
 					},
-				);
-				control.append(link);
+				));
 			}
 			if (slave.pregControl !== "slow gestation") {
-				control.append(separator);
-				let link = App.UI.DOM.link(
+				link.append(separator);
+				link.appendChild(App.UI.DOM.link(
 					`Slow Gestation`,
 					() => {
 						slave.pregControl = "slow gestation",
-						App.UI.SlaveInteract.fertility(slave);
+							App.UI.SlaveInteract.fertility(slave);
 					},
-				);
-				control.append(link);
+				));
 			}
 			if (slave.pregControl !== "speed up") {
-				control.append(separator);
-				let link = App.UI.DOM.link(
+				link.append(separator);
+				link.appendChild(App.UI.DOM.link(
 					`Fast Gestation`,
 					() => {
 						slave.pregControl = "speed up",
-						App.UI.SlaveInteract.fertility(slave);
+							App.UI.SlaveInteract.fertility(slave);
 					},
-				);
-				control.append(link);
+				));
 			}
 		}
-		fertilityblock.append(control);
+		fertilityblock.appendChild(link);
 	}
 	return jQuery('#fertilityblock').empty().append(fertilityblock);
 };
 
+App.UI.SlaveInteract.curatives = function(slave) {
+	const {
+		// eslint-disable-next-line no-unused-vars
+		he,
+		him,
+		his,
+		hers,
+		himself,
+		boy,
+		He,
+		His
+	} = getPronouns(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 {
+		// eslint-disable-next-line no-unused-vars
+		he,
+		him,
+		his,
+		hers,
+		himself,
+		boy,
+		He,
+		His
+	} = getPronouns(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: `Supresses 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.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 === "work in the dairy" && V.dairyPregSetting > 0) || (slave.assignment === "work in the farmyard" && V.farmyardBreeding > 0)) {} else {
+				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 {
+					V.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 < V.freeTanks)) {
+							link.appendChild(
+								App.UI.DOM.link(
+									`Keep another child`,
+									() => {
+										WombAddToGenericReserve(slave, "incubator", 1);
+										V.slaves[V.slaveIndices[slave.ID]] = slave;
+										V.reservedChildren = FetusGlobalReserveCount("incubator");
+										App.UI.SlaveInteract.refreshAll(slave);
+									}
+								)
+							);
+							if (_reservedIncubator > 0) {
+								link.append(` | `);
+								link.appendChild(
+									App.UI.DOM.link(
+										`Keep one less child`,
+										() => {
+											WombCleanGenericReserve(slave, "incubator", 1);
+											V.slaves[V.slaveIndices[slave.ID]] = slave;
+											V.reservedChildren = FetusGlobalReserveCount("incubator");
+											App.UI.SlaveInteract.refreshAll(slave);
+										}
+									)
+								);
+							}
+							if (_reservedIncubator > 1) {
+								link.append(` | `);
+								link.appendChild(
+									App.UI.DOM.link(
+										`Keep none of ${his} children`,
+										() => {
+											WombCleanGenericReserve(slave, "incubator", 9999);
+											V.slaves[V.slaveIndices[slave.ID]] = slave;
+											V.reservedChildren = FetusGlobalReserveCount("incubator");
+											App.UI.SlaveInteract.refreshAll(slave);
+										}
+									)
+								);
+							}
+							if ((V.reservedChildren + _WL - _reservedIncubator) <= V.freeTanks) {
+								link.append(` | `);
+								link.appendChild(
+									App.UI.DOM.link(
+										`Keep the rest of ${his} children`,
+										() => {
+											WombAddToGenericReserve(slave, "incubator", 9999);
+											V.slaves[V.slaveIndices[slave.ID]] = slave;
+											V.reservedChildren = FetusGlobalReserveCount("incubator");
+											App.UI.SlaveInteract.refreshAll(slave);
+										}
+									)
+								);
+							}
+						} else if ((_reservedIncubator === _WL) || (V.reservedChildren === V.freeTanks) || (_reservedIncubator - _reservedNursery >= 0)) {
+							link.appendChild(
+								App.UI.DOM.link(
+									`Keep one less child`,
+									() => {
+										WombCleanGenericReserve(slave, "incubator", 1);
+										V.slaves[V.slaveIndices[slave.ID]] = slave;
+										V.reservedChildren = FetusGlobalReserveCount("incubator");
+										App.UI.SlaveInteract.refreshAll(slave);
+									}
+								)
+							);
+							if (_reservedIncubator > 1) {
+								link.append(` | `);
+								link.appendChild(
+									App.UI.DOM.link(
+										`Keep none of ${his} children`,
+										() => {
+											WombCleanGenericReserve(slave, "incubator", 9999);
+											V.slaves[V.slaveIndices[slave.ID]] = slave;
+											V.reservedChildren = FetusGlobalReserveCount("incubator");
+											App.UI.SlaveInteract.refreshAll(slave);
+										}
+									)
+								);
+							}
+						}
+					} else if (V.reservedChildren < V.freeTanks) {
+						title.textContent = `${He} is pregnant and you have `;
+						if (V.freeTanks === 1) {
+							title.textContent += `an `;
+						}
+						let tank = document.createElement('span');
+						tank.className = "lime";
+						tank.textContent = `available aging tank`;
+						if (V.freeTanks > 1) {
+							tank.textContent += `s`;
+						}
+						tank.textContent += `.`;
+						let _cCount = (_WL > 1 ? "a" : "the");
+						link.appendChild(
+							App.UI.DOM.link(
+								`Keep ${_cCount} child`,
+								() => {
+									WombAddToGenericReserve(slave, "incubator", 1);
+									V.slaves[V.slaveIndices[slave.ID]] = slave;
+									V.reservedChildren = FetusGlobalReserveCount("incubator");
+									App.UI.SlaveInteract.refreshAll(slave);
+								}
+							)
+						);
+						title.appendChild(tank);
+						if ((_WL > 1) && (V.reservedChildren + _WL) <= V.freeTanks) {
+							link.append(` | `);
+							link.appendChild(
+								App.UI.DOM.link(
+									`Keep all of ${his} children`,
+									() => {
+										WombAddToGenericReserve(slave, "incubator", 9999);
+										V.slaves[V.slaveIndices[slave.ID]] = slave;
+										V.reservedChildren = FetusGlobalReserveCount("incubator");
+										App.UI.SlaveInteract.refreshAll(slave);
+									}
+								)
+							);
+						}
+					} else if (V.reservedChildren === V.freeTanks) {
+						title.textContent = `You have no available tanks for ${his} children. `;
+					}
+				}
+				el.append(title);
+				el.append(link);
+			}
+		}
+	}
+	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 === "work in the dairy" && V.dairyPregSetting > 0) || (slave.assignment === "work in the farmyard" && V.farmyardBreeding > 0)) {} else {
+				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 {
+					V.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 < V.freeCribs)) {
+							link.appendChild(
+								App.UI.DOM.link(
+									`Keep another child`,
+									() => {
+										WombAddToGenericReserve(slave, "nursery", 1);
+										V.slaves[V.slaveIndices[slave.ID]] = slave;
+										V.reservedChildren = FetusGlobalReserveCount("nursery");
+										App.UI.SlaveInteract.refreshAll(slave);
+									}
+								)
+							);
+
+							if (_reservedNursery > 0) {
+								link.append(` | `);
+								link.appendChild(
+									App.UI.DOM.link(
+										`Keep one less child`,
+										() => {
+											WombCleanGenericReserve(slave, "nursery", 1);
+											V.slaves[V.slaveIndices[slave.ID]] = slave;
+											V.reservedChildren = FetusGlobalReserveCount("nursery");
+											App.UI.SlaveInteract.refreshAll(slave);
+										}
+									)
+								);
+							}
+							if (_reservedNursery > 1) {
+								link.append(` | `);
+								link.appendChild(
+									App.UI.DOM.link(
+										`Keep none of ${his} children`,
+										() => {
+											WombCleanGenericReserve(slave, "nursery", 9999);
+											App.UI.SlaveInteract.refreshAll(slave);
+											// TODO: Copying this from the SC, but it's not three lines like the others? -LCD
+										}
+									)
+								);
+							}
+							if ((V.reservedChildrenNursery + _WL - _reservedNursery) <= V.freeCribs) {
+								link.append(` | `);
+								link.appendChild(
+									App.UI.DOM.link(
+										`Keep the rest of ${his} children`,
+										() => {
+											WombAddToGenericReserve(slave, "nursery", 9999);
+											App.UI.SlaveInteract.refreshAll(slave);
+											// TODO: Copying this from the SC, but it's not three lines like the others? -LCD
+										}
+									)
+								);
+							}
+						} else if ((_reservedNursery === _WL) || (V.reservedChildrenNursery === V.freeCribs) || (_reservedNursery - _reservedIncubator >= 0)) {
+							link.appendChild(
+								App.UI.DOM.link(
+									`Keep one less child`,
+									() => {
+										WombCleanGenericReserve(slave, "nursery", 1);
+										V.slaves[V.slaveIndices[slave.ID]] = slave;
+										V.reservedChildren = FetusGlobalReserveCount("nursery");
+										App.UI.SlaveInteract.refreshAll(slave);
+									}
+								)
+							);
+
+							if (_reservedNursery > 1) {
+								link.append(` | `);
+								link.appendChild(
+									App.UI.DOM.link(
+										`Keep none of ${his} children`,
+										() => {
+											WombCleanGenericReserve(slave, "nursery", 9999);
+											V.slaves[V.slaveIndices[slave.ID]] = slave;
+											V.reservedChildren = FetusGlobalReserveCount("nursery");
+											App.UI.SlaveInteract.refreshAll(slave);
+										}
+									)
+								);
+							}
+						}
+					} else if (V.reservedChildrenNursery < V.freeCribs) {
+						title.textContent = `${He} is pregnant and you have `;
+						if (V.freeCribs === 1) {
+							title.textContent += `an `;
+						}
+						let crib = document.createElement('span');
+						crib.className = "lime";
+						crib.textContent = `available room`;
+						if (V.freeCribs > 1) {
+							crib.textContent += `s`;
+						}
+						crib.textContent += `.`;
+						let _cCount = (_WL > 1 ? "a" : "the");
+						link.appendChild(
+							App.UI.DOM.link(
+								`Keep ${_cCount} child`,
+								() => {
+									WombAddToGenericReserve(slave, "nursery", 1);
+									V.slaves[V.slaveIndices[slave.ID]] = slave;
+									V.reservedChildren = FetusGlobalReserveCount("nursery");
+									App.UI.SlaveInteract.refreshAll(slave);
+								}
+							)
+						);
+						title.appendChild(crib);
+						if ((_WL > 1) && (V.reservedChildrenNursery + _WL) <= V.freeCribs) {
+							link.append(` | `);
+							link.appendChild(
+								App.UI.DOM.link(
+									`Keep all of ${his} children`,
+									() => {
+										WombAddToGenericReserve(slave, "nursery", 9999);
+										V.slaves[V.slaveIndices[slave.ID]] = slave;
+										V.reservedChildren = FetusGlobalReserveCount("nursery");
+										App.UI.SlaveInteract.refreshAll(slave);
+									}
+								)
+							);
+						}
+					} else if (V.reservedChildrenNursery === V.freeCribs) {
+						title.textContent = `You have no available rooms for ${his} children. `;
+					}
+				}
+				el.append(title);
+				el.append(link);
+			}
+		}
+	}
+	return jQuery('#nursery').empty().append(el);
+};
+
+{
+	/*
+		if (V.propOutcome === 1 && V.arcologies[0].FSRestart !== "unset") {
+			if (slave.breedingMark === 0 && slave.fuckdoll === 0 && slave.eggType === "human" && isFertile(slave) && slave.preg === 0) {
+				<
+				br > & nbsp; & nbsp; & nbsp; & nbsp;
+				[
+					[Breeder Eligibility Exam | BreedingTest]
+				]
+			}
+		}
+
+		<
+		span id = "bloating" > < /span> <
+		script > App.UI.SlaveInteract.bloating(V.activeSlave) < /script>
+
+		Hormones: < strong > < span id = "hormones" >
+			if (slave.hormones === -2) {
+				intensive male
+			} else if (slave.hormones === -1) {
+			male
+		} else if (slave.hormones === 2) {
+			intensive female
+		} else if (slave.hormones === 1) {
+			female
+		} else {
+			none
+		} < /span></strong > .
+		if(slave.indentureRestrictions < 2) {
+				<<
+				link "Intensive Female" >>
+					slave.hormones = 2; <<
+				replace "#hormones" >>
+					intensive female <<
+					/replace>> << /
+					link >> |
+			} <<
+			link "Female" >>
+			slave.hormones = 1; <<
+		replace "#hormones" >>
+			female <<
+			/replace>> << /
+			link >> |
+			<<
+			link "None" >>
+			slave.hormones = 0; <<
+		replace "#hormones" >>
+			none <<
+			/replace>> << /
+			link >> |
+			<<
+			link "Male" >>
+			slave.hormones = -1; <<
+		replace "#hormones" >>
+			male <<
+			/replace>> << /
+			link >> |
+			if (slave.indentureRestrictions < 2) {
+				<<
+				link "Intensive Male" >>
+					slave.hormones = -2; <<
+				replace "#hormones" >>
+					intensive male <<
+					/replace>> << /
+					link >>
+			}
+
+			<
+		br > Diet: < strong > < span id = "diet" > slave.diet < /span></strong > . <<
+			link "Healthy" >>
+			slave.diet = "healthy"; <<
+		replace "#diet" >>
+			slave.diet <<
+			/replace>> << /
+			link >>
+			if ((slave.health.condition < 90 || slave.chem >= 10) && (V.dietCleanse === 1)) {
+				|
+				<<
+				link "Cleanse" >>
+					slave.diet = "cleansing"; <<
+				replace "#diet" >>
+					slave.diet <<
+					/replace>> << /
+					link >>
+			} else if ((V.dietCleanse === 1)) {
+			| //${He} is already healthy//
+		}
+		if ((slave.balls > 0) && (V.cumProDiet === 1)) {
+			|
+			<<
+			link "Cum production" >>
+				slave.diet = "cum production"; <<
+			replace "#diet" >>
+				slave.diet <<
+				/replace>> << /
+				link >>
+		}
+		if (isFertile(slave) && slave.preg === 0 && (V.dietFertility === 1)) {
+			|
+			<<
+			link "Fertility" >>
+				slave.diet = "fertility"; <<
+			replace "#diet" >>
+				slave.diet <<
+				/replace>> << /
+				link >>
+		}
+		if ((slave.weight >= -95)) {
+			|
+			<<
+			link "Lose weight" >>
+				slave.diet = "restricted"; <<
+			replace "#diet" >>
+				slave.diet <<
+				/replace>> << /
+				link >>
+		} else {
+			| //${He} is already underweight//
+		}
+		if (slave.weight <= 200) {
+			|
+			<<
+			link "Fatten" >>
+				slave.diet = "fattening"; <<
+			replace "#diet" >>
+				slave.diet <<
+				/replace>> << /
+				link >>
+		} else {
+			| //${He} is already extremely overweight//
+		}
+		if (V.feeder === 1) {
+			|
+			<<
+			link "Estrogen enriched" >>
+				slave.diet = "XX"; <<
+			replace "#diet" >>
+				slave.diet <<
+				/replace>> << /
+				link >> |
+				<<
+				link "Testosterone enriched" >>
+				slave.diet = "XY"; <<
+			replace "#diet" >>
+				slave.diet <<
+				/replace>> << /
+				link >>
+				if (V.dietXXY === 1 && slave.balls > 0 && (slave.ovaries === 1 || slave.mpreg === 1)) {
+					|
+					<<
+					link "Herm hormone blend" >>
+						slave.diet = "XXY"; <<
+					replace "#diet" >>
+						slave.diet <<
+						/replace>> << /
+						link >>
+				}
+		}
+		if ((slave.muscles <= 95) && !isAmputee(slave)) {
+			|
+			<<
+			link "Build muscle" >>
+				slave.diet = "muscle building"; <<
+			replace "#diet" >>
+				slave.diet <<
+				/replace>> << /
+				link >>
+		} else if (!isAmputee(slave)) {
+			| //${He} is maintaining ${his} enormous musculature//
+		} else {
+			| //${He} has no limbs and thus can't effectively build muscle//
+		}
+		if ((slave.muscles > 5 || slave.fuckdoll === 0) && canWalk(slave)) {
+			|
+			<<
+			link "Slim down" >>
+				slave.diet = "slimming"; <<
+			replace "#diet" >>
+				slave.diet <<
+				/replace>> << /
+				link >>
+		} else if (!canWalk(slave)) {
+			| //${He} can't move and thus can't trim down//
+		} else if (slave.fuckdoll > 0) {
+			| //${He} has no muscles left to lose//
+		}
+
+		<
+		br > Diet Base: < strong > < span id = "dietBase" >
+			if (slave.dietCum === 2) {
+				cum based
+			} else if ((slave.dietCum === 1) && (slave.dietMilk === 0)) {
+			cum added
+		} else if ((slave.dietCum === 1) && (slave.dietMilk === 1)) {
+			cum and milk added
+		} else if ((slave.dietMilk === 1) && (slave.dietCum === 0)) {
+			milk added
+		} else if ((slave.dietMilk === 2)) {
+			milk based
+		} else if ((slave.dietCum === 0) && (slave.dietMilk === 0)) {
+			normal
+		} else {
+			THERE HAS BEEN AN ERROR
+		} < /span></strong > . <<
+		link "Normal" >>
+			slave.dietCum = 0;
+		slave.dietMilk = 0; <<
+		replace "#dietBase" >>
+			normal <<
+			/replace>> << /
+			link >> |
+			<<
+			link "Cum added" >>
+			slave.dietCum = 1;
+		slave.dietMilk = 0; <<
+		replace "#dietBase" >>
+			cum added <<
+			/replace>> << /
+			link >> |
+			<<
+			link "Milk added" >>
+			slave.dietCum = 0;
+		slave.dietMilk = 1; <<
+		replace "#dietBase" >>
+			milk added <<
+			/replace>> << /
+			link >> |
+			<<
+			link "Cum & milk added" >>
+			slave.dietCum = 1;
+		slave.dietMilk = 1; <<
+		replace "#dietBase" >>
+			cum & milk added <<
+			/replace>> << /
+			link >> |
+			<<
+			link "Cum based" >>
+			slave.dietCum = 2;
+		slave.dietMilk = 0; <<
+		replace "#dietBase" >>
+			cum based <<
+			/replace>> << /
+			link >> |
+			<<
+			link "Milk based" >>
+			slave.dietCum = 0;
+		slave.dietMilk = 2; <<
+		replace "#dietBase" >>
+			milk based <<
+			/replace>> << /
+			link >>
+
+			if (V.arcologies[0].FSHedonisticDecadenceResearch === 1) {
+				<
+				br > Solid Slave Food Access: < strong > < span id = "snacks" >
+					if (slave.onDiet === 0) {
+						Free to stuff $ { himself }.
+					} else {
+						On a strict diet.
+					} < /span></strong >
+					<<
+				link "No access" >>
+					slave.onDiet = 1; <<
+				replace "#snacks" >>
+					On a strict diet. <<
+					/replace>> << /
+					link >> |
+					<<
+					link "Full access" >>
+					slave.onDiet = 0; <<
+				replace "#snacks" >>
+					Free to stuff $ { himself }. <<
+					/replace>> << /
+					link >>
+			}
+
+			<
+		br > < br > __Behavior__: < br >
+			if (slave.fuckdoll > 0) {
+				//Rules have little meaning for living sex toys//
+			} else {
+				<<
+				set _visibleSlaves = V.slaves.filter(s => assignmentVisible(s) && (s.assignment !== "be your Head Girl" || V.HGSuite !== 1) && (s.assignment !== "guard you" || V.dojo <= 1)),
+					V.dormitoryPopulation = _visibleSlaves.filter(s => s.rules.living !== "luxurious").length;
+				V.roomsPopulation = _visibleSlaves.length - V.dormitoryPopulation - _visibleSlaves.filter(s => s.rules.living === "luxurious" && s.relationship >= 4).length * 0.5;
+
+				r += `Living standard: ''<span id="livingRules">slave.rules.living</span>.'' `;
+				if (setup.facilityCareers.includes(slave.assignment)) {
+					//${His} living conditions are managed by ${his} assignment.//
+				} else if ((slave.assignment === "be your Head Girl") && (V.HGSuite === 1)) {
+					//${He} has ${his} own little luxurious room in the penthouse with everything ${he} needs to be a proper Head Girl.//
+				} else if ((slave.assignment === "guard you") && (V.dojo > 1)) {
+					//${He} has a comfortable room in the armory to call ${his} own.//
+				} else {
+					<<
+					link "Spare" >>
+						slave.rules.living = "spare"; <<
+					replace "#livingRules" >>
+						slave.rules.living <<
+						/replace>> << /
+						link >> |
+						<<
+						link "Normal" >>
+						slave.rules.living = "normal"; <<
+					replace "#livingRules" >>
+						slave.rules.living <<
+						/replace>> << /
+						link >> |
+						if (V.roomsPopulation <= V.rooms - 0.5) {
+							<<
+							link "Luxurious" >>
+								slave.rules.living = "luxurious"; <<
+							replace "#livingRules" >>
+								slave.rules.living <<
+								/replace>> << /
+								link >>
+						} else { //No luxurious rooms available//
+						}
+				}
+
+				<
+				br > Typical punishment: '' < span id = "standardPunishment" > slave.rules.punishment < /span>.'' <<
+				link "Confinement" >>
+					slave.rules.punishment = "confinement"; <<
+				replace "#standardPunishment" >>
+					slave.rules.punishment <<
+					/replace>> << /
+					link >> |
+					<<
+					link "Whipping" >>
+					slave.rules.punishment = "whipping"; <<
+				replace "#standardPunishment" >>
+					slave.rules.punishment <<
+					/replace>> << /
+					link >> |
+					<<
+					link "Chastity" >>
+					slave.rules.punishment = "chastity"; <<
+				replace "#standardPunishment" >>
+					slave.rules.punishment <<
+					/replace>> << /
+					link >> |
+					<<
+					link "Situational" >>
+					slave.rules.punishment = "situational"; <<
+				replace "#standardPunishment" >>
+					slave.rules.punishment <<
+					/replace>> << /
+					link >> &
+					nbsp; & nbsp; & nbsp; & nbsp;
+				r += `Typical reward: ''<span id="standardReward">slave.rules.reward</span>.'' `; <<
+				link "Relaxation" >>
+					slave.rules.reward = "relaxation"; <<
+				replace "#standardReward" >>
+					slave.rules.reward <<
+					/replace>> << /
+					link >> |
+					<<
+					link "Drugs" >>
+					slave.rules.reward = "drugs"; <<
+				replace "#standardReward" >>
+					slave.rules.reward <<
+					/replace>> << /
+					link >> |
+					<<
+					link "Orgasm" >>
+					slave.rules.reward = "orgasm"; <<
+				replace "#standardReward" >>
+					slave.rules.reward <<
+					/replace>> << /
+					link >> |
+					<<
+					link "Situational" >>
+					slave.rules.reward = "situational"; <<
+				replace "#standardReward" >>
+					slave.rules.reward <<
+					/replace>> << /
+					link >>
+
+					if (setup.facilityHeads.includes(slave.assignment)) {
+						if (slave.lactation !== 2) {
+							<
+							br > Lactation maintenance
+							for facility heads: '' < span id = "lactationRules" > slave.rules.lactation < /span>.'' <<
+							link "Left alone" >>
+								slave.rules.lactation = "none"; <<
+							replace "#lactationRules" >>
+								slave.rules.lactation <<
+								/replace>> << /
+								link >> |
+								if (slave.lactation === 0) {
+									<<
+									link "Induce lactation" >>
+										slave.rules.lactation = "induce"; <<
+									replace "#lactationRules" >>
+										slave.rules.lactation <<
+										/replace>> << /
+										link >>
+								} else {
+									<<
+									link "Maintain lactation" >>
+										slave.rules.lactation = "maintain"; <<
+									replace "#lactationRules" >>
+										slave.rules.lactation <<
+										/replace>> << /
+										link >>
+								}
+						}
+					}
+
+					<
+				br > < br > Non - assignment orgasm rules:
+					<
+					div style = "text-indent:2em" >
+					r += `Masturbation is ''<span id="relMasturbation"> `;
+				if (slave.rules.release.masturbation === 1) {
+					allowed
+				} else {
+					forbidden
+				} <
+				/span>
+				.
+				'' <<
+				link "Allow" >>
+					slave.rules.release.masturbation = 1; <<
+				replace "#relMasturbation" >>
+					allowed <<
+					/replace>> << /
+					link >> |
+					<<
+					link "Forbid" >>
+					slave.rules.release.masturbation = 0; <<
+				replace "#relMasturbation" >>
+					forbidden <<
+					/replace>> << /
+					link >> <
+					/div> <
+				div style = "text-indent:2em" >
+					r += `Sex with romantic partner is ''<span id="relPartner"> `;
+				if (slave.rules.release.partner === 1) {
+					allowed
+				} else {
+					forbidden
+				} <
+				/span>
+				.
+				'' <<
+				link "Allow" >>
+					slave.rules.release.partner = 1; <<
+				replace "#relPartner" >>
+					allowed <<
+					/replace>> << /
+					link >> |
+					<<
+					link "Forbid" >>
+					slave.rules.release.partner = 0; <<
+				replace "#relPartner" >>
+					forbidden <<
+					/replace>> << /
+					link >> <
+					/div>
+				if (V.seeIncest === 1) {
+					<
+					div style = "text-indent:2em" >
+						r += `Sex with close family is ''<span id="relFamily"> `;
+					if (slave.rules.release.family === 1) {
+						allowed
+					} else {
+						forbidden
+					} <
+					/span>
+					.
+					'' <<
+					link "Allow" >>
+						slave.rules.release.family = 1; <<
+					replace "#relFamily" >>
+						allowed <<
+						/replace>> << /
+						link >> |
+						<<
+						link "Forbid" >>
+						slave.rules.release.family = 0; <<
+					replace "#relFamily" >>
+						forbidden <<
+						/replace>> << /
+						link >> <
+						/div>
+				} <
+				div style = "text-indent:2em" >
+					r += `Sex with other slaves is ''<span id="relSlaves"> `;
+				if (slave.rules.release.slaves === 1) {
+					allowed
+				} else {
+					forbidden
+				} <
+				/span>
+				.
+				'' <<
+				link "Allow" >>
+					slave.rules.release.slaves = 1; <<
+				replace "#relSlaves" >>
+					allowed <<
+					/replace>> << /
+					link >> |
+					<<
+					link "Forbid" >>
+					slave.rules.release.slaves = 0; <<
+				replace "#relSlaves" >>
+					forbidden <<
+					/replace>> << /
+					link >> <
+					/div> <
+				div style = "text-indent:2em" >
+					r += `Routine sex with ${properMaster()} is ''<span id="relMaster"> `;
+				if (slave.rules.release.master === 1) {
+					granted
+				} else {
+					denied
+				} <
+				/span>
+				.
+				'' <<
+				link "Grant" >>
+					slave.rules.release.master = 1; <<
+				replace "#relMaster" >>
+					granted <<
+					/replace>> << /
+					link >> |
+					<<
+					link "Deny" >>
+					slave.rules.release.master = 0; <<
+				replace "#relMaster" >>
+					denied <<
+					/replace>> << /
+					link >> <
+					/div>
+			}
+
+		if (slave.clitPiercing === 3 || slave.vaginalAccessory === "smart bullet vibrator") {
+			<
+			div >
+				if (slave.clitPiercing === 3) {
+					if (slave.dick < 1) {
+						$ { His } smart clit piercing
+						if (slave.vaginalAccessory === "smart bullet vibrator") {
+							and smart bullet vibrator are
+						} else {
+							is
+						}
+						set to
+					} else {
+						r += `${His} smart frenulum piercing  `;
+						if (slave.vaginalAccessory === "smart bullet vibrator") {
+							and smart bullet vibrator are
+						} else {
+							is
+						}
+						set to
+					}
+				} else {
+					r += `${His} smart bullet vibe is set to `;
+				} < strong > < span id = "setting" > slave.clitSetting < /span></strong > . <<
+				link "Vanilla" >>
+				slave.clitSetting = "vanilla"; <<
+			replace "#setting" >>
+				slave.clitSetting <<
+				/replace>> << /
+				link >> |
+				<<
+				link "Oral" >>
+				slave.clitSetting = "oral"; <<
+			replace "#setting" >>
+				slave.clitSetting <<
+				/replace>> << /
+				link >> |
+				<<
+				link "Anal" >>
+				slave.clitSetting = "anal"; <<
+			replace "#setting" >>
+				slave.clitSetting <<
+				/replace>> << /
+				link >> |
+				<<
+				link "Boobs" >>
+				slave.clitSetting = "boobs"; <<
+			replace "#setting" >>
+				slave.clitSetting <<
+				/replace>> << /
+				link >> |
+				<<
+				link "Sub" >>
+				slave.clitSetting = "submissive"; <<
+			replace "#setting" >>
+				slave.clitSetting <<
+				/replace>> << /
+				link >> |
+				<<
+				link "Dom" >>
+				slave.clitSetting = "dom"; <<
+			replace "#setting" >>
+				slave.clitSetting <<
+				/replace>> << /
+				link >> |
+				<<
+				link "Humiliation" >>
+				slave.clitSetting = "humiliation"; <<
+			replace "#setting" >>
+				slave.clitSetting <<
+				/replace>> << /
+				link >>
+				if (V.seePreg !== 0) {
+					|
+					<<
+					link "Preg" >>
+						slave.clitSetting = "pregnancy"; <<
+					replace "#setting" >>
+						slave.clitSetting <<
+						/replace>> << /
+						link >>
+				} |
+				<<
+			link "Pain" >>
+				slave.clitSetting = "masochist"; <<
+			replace "#setting" >>
+				slave.clitSetting <<
+				/replace>> << /
+				link >> |
+				<<
+				link "Sadism" >>
+				slave.clitSetting = "sadist"; <<
+			replace "#setting" >>
+				slave.clitSetting <<
+				/replace>> << /
+				link >> |
+				<<
+				link "Men" >>
+				slave.clitSetting = "men"; <<
+			replace "#setting" >>
+				slave.clitSetting <<
+				/replace>> << /
+				link >> |
+				<<
+				link "Anti-men" >>
+				slave.clitSetting = "anti-men"; <<
+			replace "#setting" >>
+				slave.clitSetting <<
+				/replace>> << /
+				link >> |
+				<<
+				link "Women" >>
+				slave.clitSetting = "women"; <<
+			replace "#setting" >>
+				slave.clitSetting <<
+				/replace>> << /
+				link >> |
+				<<
+				link "Anti-women" >>
+				slave.clitSetting = "anti-women"; <<
+			replace "#setting" >>
+				slave.clitSetting <<
+				/replace>> << /
+				link >> |
+				<<
+				link "All sex" >>
+				slave.clitSetting = "all"; <<
+			replace "#setting" >>
+				slave.clitSetting <<
+				/replace>> << /
+				link >> |
+				<<
+				link "No sex" >>
+				slave.clitSetting = "none"; <<
+			replace "#setting" >>
+				slave.clitSetting <<
+				/replace>> << /
+				link >> <
+				/div>
+		}
+
+		if (slave.voice !== 0) {
+			<
+			br > Speech rules: '' < span id = "speechRules" > slave.rules.speech < /span>.'' <<
+			link "Restrictive" >>
+				slave.rules.speech = "restrictive"; <<
+			replace "#speechRules" >>
+				slave.rules.speech <<
+				/replace>> << /
+				link >> |
+				<<
+				link "Permissive" >>
+				slave.rules.speech = "permissive"; <<
+			replace "#speechRules" >>
+				slave.rules.speech <<
+				/replace>> << /
+				link >>
+				if (slave.accent > 0 && slave.accent < 4) {
+					|
+					<<
+					link "Accent elimination" >>
+						slave.rules.speech = "accent elimination"; <<
+					replace "#speechRules" >>
+						slave.rules.speech <<
+						/replace>> << /
+						link >>
+				} else if (slave.accent > 3) {
+				|
+				<<
+				link "Language lessons" >>
+					slave.rules.speech = "language lessons"; <<
+				replace "#speechRules" >>
+					slave.rules.speech <<
+					/replace>> << /
+					link >>
+			}
+		}
+
+		<
+		br >
+			Relationship rules: '' < span id = "relationshipRules" > slave.rules.relationship < /span>.'' <<
+		link "Restrictive" >>
+			slave.rules.relationship = "restrictive"; <<
+		replace "#relationshipRules" >>
+			slave.rules.relationship <<
+			/replace>> << /
+			link >> |
+			<<
+			link "Just friends" >>
+			slave.rules.relationship = "just friends"; <<
+		replace "#relationshipRules" >>
+			slave.rules.relationship <<
+			/replace>> << /
+			link >> |
+			<<
+			link "Permissive" >>
+			slave.rules.relationship = "permissive"; <<
+		replace "#relationshipRules" >>
+			slave.rules.relationship <<
+			/replace>> << /
+			link >>
+
+			if (V.studio === 1) {
+
+				<
+				br > < br > __Media__: < br >
+					if (slave.porn.prestige === 3) {
+						//${He} is so prestigious in the realm of slave.porn.fameType porn that ${his} fame is self-sustaining.//
+					} else if (slave.porn.feed === 0) {
+					r += `The media hub is not releasing highlights of ${his} sex life. [[Release|Slave Interact][slave.porn.feed = 1]] `;
+				} else {
+					r += `The media hub is releasing highlights of ${his} sex life  `;
+					if (slave.porn.spending < 500) {
+						to those who can find it
+					} else if (slave.porn.spending < 2500) {
+						on several websites
+					} else if (slave.porn.spending > 5000) {
+						through your old distributor
+					} else {
+						on many websites
+					}.
+					if(slave.porn.spending === 0) {
+						[
+							[Halt | Slave Interact][slave.porn.feed = 0, slave.porn.focus = "none"]
+						] | [
+							[Publicize | Slave Interact][slave.porn.spending += 1000]
+						]
+						//Will cost ${cashFormat(1000)} weekly.//
+					} else {
+						<<
+						textbox "_newPornSpending"
+						slave.porn.spending >>
+							weekly is spent to publicize them. [
+								[Save changes | Slave Interact][slave.porn.spending = Number(_newPornSpending) || 0]
+							] | [
+								[Halt | Slave Interact][slave.porn.feed = 0, slave.porn.spending = 0, slave.porn.focus = "none", V.PCSlutContacts = 1]
+							] |
+							if (slave.porn.spending < 5000) {
+								[
+									[Increase | Slave Interact][slave.porn.spending += 1000]
+								] |
+							}
+							[
+								[Decrease | Slave Interact][slave.porn.spending -= 1000]
+							]
+						if (slave.porn.spending > 5000) {
+							let _warn = 1;
+						}
+						slave.porn.spending = Number(slave.porn.spending) || 0;
+						slave.porn.spending = Math.clamp(Math.ceil(slave.porn.spending / 1000) * 1000, 0, 5000);
+						if (_warn) {
+							<
+							br > //Spending more than ${cashFormat(5000)>>
+								weekly will have no effect. //
+								<<
+								/if}
+							if (V.PC.career === "escort") {
+								<
+								br >
+									r += `You retain some contacts from your past life in the industry that may be willing to cut you some discounts should you return to it. `;
+								if (V.PCSlutContacts !== 2) {
+									r += `You are not baring your body for all to see. `;
+									[
+										[Star in porn
+											for a discount | Slave Interact
+										][V.PCSlutContacts = 2]
+									]
+								} else {
+									r += `You are starring in hardcore porn once more. `;
+									[
+										[Stop doing porn
+											for a discount | Slave Interact
+										][V.PCSlutContacts = 1]
+									]
+								}
+							}
+						}
+
+						if (V.studioFeed === 1) {
+							<
+							br >
+								if (slave.porn.viewerCount < 100) {
+									r += `${He} lacks the fame in porn needed to discern what ${his} feed is getting tagged as. `;
+								} else {
+									if (slave.porn.prestige > 0) {
+										r += `${He} is known for slave.porn.fameType porn `;
+										if (slave.porn.prestige > 1) {
+											and viewers have grown to expect it from V.him
+										}.
+									}
+									if (slave.porn.focus === "none") {
+										r += `You are allowing ${his} viewers to guide the direction of ${his} content. `;
+									} else {
+										r += `You are focusing attention on the slave.porn.focus aspect of ${his} content. `;
+									}
+									$ { App.Porn.genreChoiceLinks("Slave Interact", slave) } | [
+										[No focus | Slave Interact][slave.porn.focus = "none"]
+									]
+								}
+						}
+					}
+				}
+			}
+
+
+
+		}
+		}
+		}
+		}
+	}*/
+}
+App.UI.SlaveInteract.generateRows = function(array, slave, category, accessCheck = false) { // category should be in the form of slave.category, the thing we want to update.
+	let row = document.createElement('span');
+	for (let i = 0; i < array.length; i++) {
+		let link;
+		const separator = document.createTextNode(` | `);
+		const keys = Object.keys(array[i]);
+
+		// Test to see if there was a problem with the key
+		for (let j = 0; j < keys.length; j++) {
+			if (["FS", "text", "updateSlave", "update", "note", "disabled"].includes(keys[j])) {
+				continue;
+			} else {
+				array[i].text += " ERROR, THIS SCENE WAS NOT ENTERED CORRECTLY";
+				console.log("Trash found while generateRows() was running: " + keys[j] + ": " + array[i][keys[j]]);
+				break;
+			}
+		}
+		// Some items will never be in App.data.misc, especially "none" if it falls in between harsh and nice data sets.  Trying to look it up would cause an error, which is what access check works around.
+		let unlocked = false;
+		if (accessCheck === true) {
+			if (category === "chastity") {
+				let text = array[i].text.toLowerCase(); // Yucky.  Category name does not match for chastity (since it sets multiple kinds of chastity at once).  Compare using a lowercased name instead.
+				unlocked = isClothingAccessible.entry(text, `${category}`, slave, true);
+			} else {
+				unlocked = isClothingAccessible.entry(array[i].updateSlave[category], `${category}`, slave, true);
+			}
+		}
+		if (accessCheck === false || unlocked) {
+			if (i < array.length && i !== 0) { // start with separator (after first loop); can't after since the last loop may not have any text.
+				row.appendChild(separator);
+			}
+			// is it just text?
+			if (array[i].disabled) {
+				link = App.UI.DOM.disabledLink(array[i].text, [array[i].disabled]);
+			} else if (typeof unlocked === 'string') {
+				link = App.UI.DOM.disabledLink(array[i].text, [unlocked]);
+			} else {
+				link = document.createElement('span');
+
+				// Set up the link
+				link.appendChild(
+					App.UI.DOM.link(
+						`${array[i].text} `,
+						() => { click(array[i]); },
+					)
+				);
+
+				if (array[i].FS) {
+					let FS = array[i].FS.substring(2); // Given "FSEdoRevivalist", cut off the first two letters to start a user friendly tooltip
+					FS = FS.replace(/([A-Z])/g, ` $1`); // Given "EdoRevivalist", find every capital letter and put a space in front of it
+					FS = App.UI.DOM.disabledLink(`FS`, [FS]); // Tooltip should read "Edo Revivalist"
+					FS.style.fontStyle = "italic";
+					link.appendChild(FS);
+				}
+
+				// add a note node if required
+				if (array[i].note) {
+					let note = document.createElement('span');
+					note.textContent = (` ${array[i].note}`);
+					note.className = "note";
+					link.appendChild(note);
+				}
+			}
+			row.appendChild(link);
+		}
+	}
+
+	return row;
+
+	function click(arrayOption) {
+		if (arrayOption.updateSlave) {
+			Object.assign(slave, arrayOption.updateSlave);
+		}
+		if (arrayOption.update) {
+			Object.assign(V, arrayOption.update);
+		}
+		App.UI.Wardrobe.refreshAll(slave);
+		App.UI.SlaveInteract.refreshAll(slave);
+		return;
+	}
+};
+
 App.UI.SlaveInteract.refreshAll = function(slave) {
 	App.UI.SlaveInteract.bloating(slave);
 	App.UI.SlaveInteract.fertility(slave);
 	App.UI.SlaveInteract.useSlaveDisplay(slave);
 	App.UI.SlaveInteract.drugs(slave);
+	App.UI.SlaveInteract.curatives(slave);
+	App.UI.SlaveInteract.aphrodisiacs(slave);
+	App.UI.SlaveInteract.incubator(slave);
+	App.UI.SlaveInteract.nursery(slave);
 };
diff --git a/src/js/wardrobeUse.js b/src/js/wardrobeUse.js
index 517e42d9a3fd20ed3f369ea0c766eaf23d6f0b37..06b618bba34dd7a963a5c18a4ad9917480d17496 100644
--- a/src/js/wardrobeUse.js
+++ b/src/js/wardrobeUse.js
@@ -24,7 +24,7 @@ App.UI.Wardrobe.clothes = function(slave) {
 	if (slave.clothes !== `choosing her own clothes`) {
 		let choiceOptionsArray = [];
 		choiceOptionsArray.push({text: `Let ${him} choose`, updateSlave: {clothes: `choosing her own clothes`, choosesOwnClothes: 1}});
-		label.appendChild(App.UI.Wardrobe.generateRows(choiceOptionsArray, "clothes", slave, false));
+		label.appendChild(App.UI.SlaveInteract.generateRows(choiceOptionsArray, slave, "clothes", false));
 	}
 	el.appendChild(label);
 
@@ -66,14 +66,14 @@ App.UI.Wardrobe.clothes = function(slave) {
 	let links = document.createElement('div');
 	links.className = "choices";
 	links.append(`Nice: `);
-	links.appendChild(App.UI.Wardrobe.generateRows(niceOptionsArray, "clothes", slave, true));
+	links.appendChild(App.UI.SlaveInteract.generateRows(niceOptionsArray, slave, "clothes", true));
 	el.appendChild(links);
 
 	// Harsh options
 	links = document.createElement('div');
 	links.className = "choices";
 	links.append(`Harsh: `);
-	links.appendChild(App.UI.Wardrobe.generateRows(harshOptionsArray, "clothes", slave, true));
+	links.appendChild(App.UI.SlaveInteract.generateRows(harshOptionsArray, slave, "clothes", true));
 	el.appendChild(links);
 
 	return jQuery('#clothes').empty().append(el);
@@ -98,7 +98,7 @@ App.UI.Wardrobe.collar = function(slave) {
 	if (slave.collar !== `none`) {
 		let choiceOptionsArray = [];
 		choiceOptionsArray.push({text: `None`, updateSlave: {collar: `none`}});
-		label.appendChild(App.UI.Wardrobe.generateRows(choiceOptionsArray, "collar", slave, false));
+		label.appendChild(App.UI.SlaveInteract.generateRows(choiceOptionsArray, slave, "collar", false));
 	}
 
 	el.appendChild(label);
@@ -138,14 +138,14 @@ App.UI.Wardrobe.collar = function(slave) {
 	let links = document.createElement('div');
 	links.className = "choices";
 	links.append(`Nice: `);
-	links.appendChild(App.UI.Wardrobe.generateRows(niceOptionsArray, "collar", slave, true));
+	links.appendChild(App.UI.SlaveInteract.generateRows(niceOptionsArray, slave, "collar", true));
 	el.appendChild(links);
 
 	// Harsh options
 	links = document.createElement('div');
 	links.className = "choices";
 	links.append(`Harsh: `);
-	links.appendChild(App.UI.Wardrobe.generateRows(harshOptionsArray, "collar", slave, true));
+	links.appendChild(App.UI.SlaveInteract.generateRows(harshOptionsArray, slave, "collar", true));
 	el.appendChild(links);
 
 	return jQuery('#collar').empty().append(el);
@@ -171,7 +171,7 @@ App.UI.Wardrobe.armAccessory = function(slave) {
 	// Choose her own
 	if (slave.armAccessory !== "none") {
 		array.push({text: `None`, updateSlave: {armAccessory: `none`}});
-		label.appendChild(App.UI.Wardrobe.generateRows(array, "armAccessory", slave, false));
+		label.appendChild(App.UI.SlaveInteract.generateRows(array, slave, "armAccessory", false));
 	}
 
 	el.appendChild(label);
@@ -182,7 +182,7 @@ App.UI.Wardrobe.armAccessory = function(slave) {
 		{text: "Hand gloves", updateSlave: {armAccessory: "hand gloves"}},
 		{text: "Elbow gloves", updateSlave: {armAccessory: "elbow gloves"}}
 	];
-	links.appendChild(App.UI.Wardrobe.generateRows(array, "armAccessory", slave, false));
+	links.appendChild(App.UI.SlaveInteract.generateRows(array, slave, "armAccessory", false));
 	el.appendChild(links);
 
 	return jQuery('#armAccessory').empty().append(el);
@@ -214,7 +214,7 @@ App.UI.Wardrobe.shoes = function(slave) {
 	if (slave.shoes !== `none`) {
 		let choiceOptionsArray = [];
 		choiceOptionsArray.push({text: `None`, updateSlave: {shoes: `none`}});
-		label.appendChild(App.UI.Wardrobe.generateRows(choiceOptionsArray, "shoes", slave, false));
+		label.appendChild(App.UI.SlaveInteract.generateRows(choiceOptionsArray, slave, "shoes", false));
 	}
 	*/
 	el.appendChild(label);
@@ -239,7 +239,7 @@ App.UI.Wardrobe.shoes = function(slave) {
 	// Options
 	let links = document.createElement('div');
 	links.className = "choices";
-	links.appendChild(App.UI.Wardrobe.generateRows(optionsArray, "shoes", slave, true));
+	links.appendChild(App.UI.SlaveInteract.generateRows(optionsArray, slave, "shoes", true));
 	el.appendChild(links);
 
 	return jQuery('#shoes').empty().append(el);
@@ -270,7 +270,7 @@ App.UI.Wardrobe.legAccessory = function(slave) {
 	// Choose her own
 	if (slave.legAccessory !== "none") {
 		array.push({text: `None`, updateSlave: {legAccessory: `none`}});
-		label.appendChild(App.UI.Wardrobe.generateRows(array, "legAccessory", slave, false));
+		label.appendChild(App.UI.SlaveInteract.generateRows(array,  slave, "legAccessory", false));
 	}
 
 	el.appendChild(label);
@@ -281,7 +281,7 @@ App.UI.Wardrobe.legAccessory = function(slave) {
 		{text: "Short stockings", updateSlave: {legAccessory: "short stockings"}},
 		{text: "Long stockings", updateSlave: {legAccessory: "long stockings"}}
 	];
-	links.appendChild(App.UI.Wardrobe.generateRows(array, "legAccessory", slave, false));
+	links.appendChild(App.UI.SlaveInteract.generateRows(array, slave, "legAccessory", false));
 	el.appendChild(links);
 
 	return jQuery('#legAccessory').empty().append(el);
@@ -331,7 +331,7 @@ App.UI.Wardrobe.bellyAccessory = function(slave) {
 
 	// Choose her own
 	if (slave.bellyAccessory !== `none`) {
-		label.appendChild(App.UI.Wardrobe.generateRows(choiceOptionsArray, "bellyAccessory", slave, false));
+		label.appendChild(App.UI.SlaveInteract.generateRows(choiceOptionsArray, slave, "bellyAccessory", false));
 	}
 
 	el.appendChild(label);
@@ -339,7 +339,7 @@ App.UI.Wardrobe.bellyAccessory = function(slave) {
 	// Options
 	let links = document.createElement('div');
 	links.className = "choices";
-	links.appendChild(App.UI.Wardrobe.generateRows(optionsArray, "bellyAccessory", slave, true));
+	links.appendChild(App.UI.SlaveInteract.generateRows(optionsArray, slave, "bellyAccessory", true));
 	el.appendChild(links);
 
 	return jQuery('#bellyAccessory').empty().append(el);
@@ -368,7 +368,7 @@ App.UI.Wardrobe.buttplug = function(slave) {
 	if (slave.buttplug !== `none`) {
 		let choiceOptionsArray = [];
 		choiceOptionsArray.push({text: `None`, updateSlave: {buttplug: `none`}});
-		label.appendChild(App.UI.Wardrobe.generateRows(choiceOptionsArray, "buttplug", slave, false));
+		label.appendChild(App.UI.SlaveInteract.generateRows(choiceOptionsArray, slave, "buttplug", false));
 	}
 	el.appendChild(label);
 
@@ -396,7 +396,7 @@ App.UI.Wardrobe.buttplug = function(slave) {
 	// Options
 	let links = document.createElement('div');
 	links.className = "choices";
-	links.appendChild(App.UI.Wardrobe.generateRows(optionsArray, "buttplug", slave, true));
+	links.appendChild(App.UI.SlaveInteract.generateRows(optionsArray, slave, "buttplug", true));
 	el.appendChild(links);
 
 	return jQuery('#buttplug').empty().append(el);
@@ -427,7 +427,7 @@ App.UI.Wardrobe.buttplugAttachment = function(slave) {
 	if (slave.buttplugAttachment !== `none`) {
 		let choiceOptionsArray = [];
 		choiceOptionsArray.push({text: `None`, updateSlave: {buttplugAttachment: `none`}});
-		label.appendChild(App.UI.Wardrobe.generateRows(choiceOptionsArray, "buttplugAttachment", slave, false));
+		label.appendChild(App.UI.SlaveInteract.generateRows(choiceOptionsArray, slave, "buttplugAttachment", false));
 	}
 	el.appendChild(label);
 
@@ -455,7 +455,7 @@ App.UI.Wardrobe.buttplugAttachment = function(slave) {
 	// Options
 	let links = document.createElement('div');
 	links.className = "choices";
-	links.appendChild(App.UI.Wardrobe.generateRows(optionsArray, "buttplugAttachment", slave, true));
+	links.appendChild(App.UI.SlaveInteract.generateRows(optionsArray, slave, "buttplugAttachment", true));
 	el.appendChild(links);
 
 	return jQuery('#buttplugAttachment').empty().append(el);
@@ -484,7 +484,7 @@ App.UI.Wardrobe.vaginalAccessory = function(slave) {
 	if (slave.vaginalAccessory !== `none`) {
 		let choiceOptionsArray = [];
 		choiceOptionsArray.push({text: `None`, updateSlave: {vaginalAccessory: `none`}});
-		label.appendChild(App.UI.Wardrobe.generateRows(choiceOptionsArray, "vaginalAccessory", slave, false));
+		label.appendChild(App.UI.SlaveInteract.generateRows(choiceOptionsArray, slave, "vaginalAccessory", false));
 	}
 	el.appendChild(label);
 
@@ -512,7 +512,7 @@ App.UI.Wardrobe.vaginalAccessory = function(slave) {
 	// Options
 	let links = document.createElement('div');
 	links.className = "choices";
-	links.appendChild(App.UI.Wardrobe.generateRows(optionsArray, "vaginalAccessory", slave, true));
+	links.appendChild(App.UI.SlaveInteract.generateRows(optionsArray, slave, "vaginalAccessory", true));
 	el.appendChild(links);
 
 	return jQuery('#vaginalAccessory').empty().append(el);
@@ -543,7 +543,7 @@ App.UI.Wardrobe.vaginalAttachment = function(slave) {
 	if (slave.vaginalAttachment !== `none`) {
 		let choiceOptionsArray = [];
 		choiceOptionsArray.push({text: `None`, updateSlave: {vaginalAttachment: `none`}});
-		label.appendChild(App.UI.Wardrobe.generateRows(choiceOptionsArray, "vaginalAttachment", slave, false));
+		label.appendChild(App.UI.SlaveInteract.generateRows(choiceOptionsArray, slave, "vaginalAttachment", false));
 	}
 	el.appendChild(label);
 
@@ -571,7 +571,7 @@ App.UI.Wardrobe.vaginalAttachment = function(slave) {
 	// Options
 	let links = document.createElement('div');
 	links.className = "choices";
-	links.appendChild(App.UI.Wardrobe.generateRows(optionsArray, "vaginalAttachment", slave, true));
+	links.appendChild(App.UI.SlaveInteract.generateRows(optionsArray, slave, "vaginalAttachment", true));
 	el.appendChild(links);
 
 	return jQuery('#vaginalAttachment').empty().append(el);
@@ -600,7 +600,7 @@ App.UI.Wardrobe.dickAccessory = function(slave) {
 	if (slave.dickAccessory !== `none`) {
 		let choiceOptionsArray = [];
 		choiceOptionsArray.push({text: `None`, updateSlave: {dickAccessory: `none`}});
-		label.appendChild(App.UI.Wardrobe.generateRows(choiceOptionsArray, "dickAccessory", slave, false));
+		label.appendChild(App.UI.SlaveInteract.generateRows(choiceOptionsArray, slave, "dickAccessory", false));
 	}
 	el.appendChild(label);
 
@@ -628,7 +628,7 @@ App.UI.Wardrobe.dickAccessory = function(slave) {
 	// Options
 	let links = document.createElement('div');
 	links.className = "choices";
-	links.appendChild(App.UI.Wardrobe.generateRows(optionsArray, "dickAccessory", slave, true));
+	links.appendChild(App.UI.SlaveInteract.generateRows(optionsArray, slave, "dickAccessory", true));
 	el.appendChild(links);
 
 	return jQuery('#dickAccessory').empty().append(el);
@@ -685,7 +685,7 @@ App.UI.Wardrobe.chastity = function(slave) {
 				chastityVagina: 0
 			}
 		});
-		label.appendChild(App.UI.Wardrobe.generateRows(choiceOptionsArray, "chastity", slave, false));
+		label.appendChild(App.UI.SlaveInteract.generateRows(choiceOptionsArray, slave, "chastity", false));
 	}
 	el.appendChild(label);
 
@@ -713,93 +713,12 @@ App.UI.Wardrobe.chastity = function(slave) {
 	// Options
 	let links = document.createElement('div');
 	links.className = "choices";
-	links.appendChild(App.UI.Wardrobe.generateRows(optionsArray, "chastity", slave, true));
+	links.appendChild(App.UI.SlaveInteract.generateRows(optionsArray, slave, "chastity", true));
 	el.appendChild(links);
 
 	return jQuery('#chastity').empty().append(el);
 };
 
-App.UI.Wardrobe.generateRows = function(array, category, slave, accessCheck = false) { // category should be in the form of slave.category, the thing we want to update.
-	let row = document.createElement('span');
-	for (let i = 0; i < array.length; i++) {
-		let link;
-		const separator = document.createTextNode(` | `);
-		const keys = Object.keys(array[i]);
-
-		// Test to see if there was a problem with the key
-		for (let j = 0; j < keys.length; j++) {
-			if (["FS", "text", "updateSlave", "update", "note", "disabled"].includes(keys[j])) {
-				continue;
-			} else {
-				array[i].text += " ERROR, THIS SCENE WAS NOT ENTERED CORRECTLY";
-				console.log("Trash found while generateRows() was running: " + keys[j] + ": " + array[i][keys[j]]);
-				break;
-			}
-		}
-		// Some items will never be in App.data.misc, especially "none" if it falls in between harsh and nice data sets.  Trying to look it up would cause an error, which is what access check works around.
-		let unlocked = false;
-		if (accessCheck === true) {
-			if (category === "chastity") {
-				let text = array[i].text.toLowerCase(); // Yucky.  Category name does not match for chastity (since it sets multiple kinds of chastity at once).  Compare using a lowercased name instead.
-				unlocked = isClothingAccessible.entry(text, `${category}`, slave, true);
-			} else {
-				unlocked = isClothingAccessible.entry(array[i].updateSlave[category], `${category}`, slave, true);
-			}
-		}
-		if (accessCheck === false || unlocked) {
-			if (i < array.length && i !== 0) { // start with separator (after first loop); can't after since the last loop may not have any text.
-				row.appendChild(separator);
-			}
-			// is it just text?
-			if (array[i].disabled) {
-				link = App.UI.DOM.disabledLink(array[i].text, [array[i].disabled]);
-			} else if (typeof unlocked === 'string') {
-				link = App.UI.DOM.disabledLink(array[i].text, [unlocked]);
-			} else {
-				link = document.createElement('span');
-
-				// Set up the link
-				link.appendChild(
-					App.UI.DOM.link(
-						`${array[i].text} `,
-						() => { click(array[i]); },
-					)
-				);
-
-				if (array[i].FS) {
-					let FS = array[i].FS.substring(2); // Given "FSEdoRevivalist", cut off the first two letters to start a user friendly tooltip
-					FS = FS.replace(/([A-Z])/g, ` $1`); // Given "EdoRevivalist", find every capital letter and put a space in front of it
-					FS = App.UI.DOM.disabledLink(`FS`, [FS]); // Tooltip should read "Edo Revivalist"
-					FS.style.fontStyle = "italic";
-					link.appendChild(FS);
-				}
-
-				// add a note node if required
-				if (array[i].note) {
-					let note = document.createElement('span');
-					note.textContent = (` ${array[i].note}`);
-					note.className = "note";
-					link.appendChild(note);
-				}
-			}
-			row.appendChild(link);
-		}
-	}
-
-	return row;
-
-	function click(arrayOption) {
-		if (arrayOption.updateSlave) {
-			Object.assign(slave, arrayOption.updateSlave);
-		}
-		if (arrayOption.update) {
-			Object.assign(V, arrayOption.update);
-		}
-		App.UI.Wardrobe.refreshAll(slave);
-		return;
-	}
-};
-
 App.UI.Wardrobe.refreshAll = function(slave) {
 	App.UI.Wardrobe.clothes(slave);
 	App.UI.Wardrobe.collar(slave);
diff --git a/src/uncategorized/slaveInteract.tw b/src/uncategorized/slaveInteract.tw
index 7db74c82bf2712844bf465c1e967238e2c3f2fb5..526916a50c77166b11a64d86d80d241345453c2a 100644
--- a/src/uncategorized/slaveInteract.tw
+++ b/src/uncategorized/slaveInteract.tw
@@ -236,129 +236,20 @@
 <span id="drugs"></span>
 <script>App.UI.SlaveInteract.drugs(V.activeSlave)</script>
 
-Health: <span id="curatives"><strong><<if $activeSlave.curatives > 1>>curatives<<elseif $activeSlave.curatives > 0>>preventatives<<else>>none<</if>></strong></span>.
-	<<link "None">><<set $activeSlave.curatives = 0>><<replace "#curatives">><strong>none</strong><</replace>><</link>>
-	| <<link "Preventatives">><<set $activeSlave.curatives = 1>><<replace "#curatives">><strong>preventatives</strong><</replace>><</link>>
-	| <<link "Curatives">><<set $activeSlave.curatives = 2>><<replace "#curatives">><strong>curatives</strong><</replace>><</link>>
-
-&nbsp;&nbsp;&nbsp;&nbsp;
-
-Aphrodisiacs: <span id="aphrodisiacs"><strong><<if $activeSlave.aphrodisiacs > 1>>extreme<<elseif $activeSlave.aphrodisiacs > 0>>applied<<elseif $activeSlave.aphrodisiacs === -1>>anaphrodisiacs<<else>>none<</if>></strong></span>.
-	<<link "None">><<set $activeSlave.aphrodisiacs = 0>><<replace "#aphrodisiacs">><strong>none</strong><</replace>><</link>>
-	| <<link "Apply">><<set $activeSlave.aphrodisiacs = 1>><<replace "#aphrodisiacs">><strong>applied</strong><</replace>><</link>>
-	| <<link "Extreme">><<set $activeSlave.aphrodisiacs = 2>><<replace "#aphrodisiacs">><strong>extreme</strong><</replace>><</link>>
-	| <<link "Anaphrodisiacs">><<set $activeSlave.aphrodisiacs = -1>><<replace "#aphrodisiacs">><strong>anaphrodisiacs</strong><</replace>><</link>>
-<br>
+<span id="curatives"></span>
+<script>App.UI.SlaveInteract.curatives(V.activeSlave)</script>
+
+<span id="aphrodisiacs"></span>
+<script>App.UI.SlaveInteract.aphrodisiacs(V.activeSlave)</script>
+
 <span id="fertilityblock"></span>
 <script>App.UI.SlaveInteract.fertility(V.activeSlave)</script>
-<<set $reservedChildren = FetusGlobalReserveCount("incubator")>>
-<<set $reservedChildrenNursery = FetusGlobalReserveCount("nursery")>>
-<<set _reservedIncubator = WombReserveCount($activeSlave, "incubator")>>
-<<set _reservedNursery = WombReserveCount($activeSlave, "nursery")>>
-<<set _WL = $activeSlave.womb.length>>
-
-<<if $incubator > 0>>
-	<<if $activeSlave.preg > 0 && $activeSlave.broodmother == 0 && $activeSlave.pregKnown == 1 && $activeSlave.eggType == "human">>
-		<<if ($activeSlave.assignment == "work in the dairy" && $dairyPregSetting > 0) || ($activeSlave.assignment == "work in the farmyard" && $farmyardBreeding > 0)>>
-		<<else>>
-			<br>&nbsp;&nbsp;&nbsp;&nbsp;
-			<<if _WL - _reservedNursery == 0>>
-				//$His children are already reserved for $nurseryName//
-			<<else>>
-				<<set $freeTanks = ($incubator-$tanks.length)>>
-				<<if _reservedIncubator > 0>>
-					<<if _WL == 1>>
-						$His child will be placed in $incubatorName.
-					<<elseif _reservedIncubator < _WL>>
-						_reservedIncubator of $his children will be placed in $incubatorName.
-					<<elseif _WL == 2>>
-						Both of $his children will be placed in $incubatorName.
-					<<else>>
-						All _reservedIncubator of $his children will be placed in $incubatorName.
-					<</if>>
-					<<if (_reservedIncubator + _reservedNursery < _WL) && ($reservedChildren < $freeTanks)>>
-						<<link "Keep another child" "Slave Interact">><<set WombAddToGenericReserve($activeSlave, "incubator", 1)>><<set $slaves[$slaveIndices[$activeSlave.ID]] = $activeSlave>><<set $reservedChildren = FetusGlobalReserveCount("incubator")>><</link>>
-						<<if _reservedIncubator > 0>>
-							| <<link "Keep one less child" "Slave Interact">><<set WombCleanGenericReserve($activeSlave, "incubator", 1)>><<set $slaves[$slaveIndices[$activeSlave.ID]] = $activeSlave>><<set $reservedChildren = FetusGlobalReserveCount("incubator")>><</link>>
-						<</if>>
-						<<if _reservedIncubator > 1>>
-							| <<link "Keep none of $his children" "Slave Interact">><<set WombCleanGenericReserve($activeSlave, "incubator", 9999)>><<set $slaves[$slaveIndices[$activeSlave.ID]] = $activeSlave>><<set $reservedChildren = FetusGlobalReserveCount("incubator")>><</link>>
-						<</if>>
-						<<if ($reservedChildren + _WL - _reservedIncubator) <= $freeTanks>>
-							| <<link "Keep the rest of $his children" "Slave Interact">><<set WombAddToGenericReserve($activeSlave, "incubator", 9999)>><<set $slaves[$slaveIndices[$activeSlave.ID]] = $activeSlave>><<set $reservedChildren = FetusGlobalReserveCount("incubator")>><</link>>
-						<</if>>
-					<<elseif (_reservedIncubator == _WL) || ($reservedChildren == $freeTanks) || (_reservedIncubator - _reservedNursery >= 0)>>
-						<<link "Keep one less child" "Slave Interact">><<set WombCleanGenericReserve($activeSlave, "incubator", 1)>><<set $slaves[$slaveIndices[$activeSlave.ID]] = $activeSlave>><<set $reservedChildren = FetusGlobalReserveCount("incubator")>><</link>>
-						<<if _reservedIncubator > 1>>
-							| <<link "Keep none of $his children" "Slave Interact">><<set WombCleanGenericReserve($activeSlave, "incubator", 9999)>><<set $slaves[$slaveIndices[$activeSlave.ID]] = $activeSlave>><<set $reservedChildren = FetusGlobalReserveCount("incubator")>><</link>>
-						<</if>>
-					<</if>>
-				<<elseif $reservedChildren < $freeTanks>>
-					$He is pregnant and you have <<if $freeTanks == 1>>an<</if>> @@.lime;available aging tank<<if $freeTanks > 1>>s<</if>>.@@
-					<<set _cCount = (_WL > 1 ? "a" : "the")>>
-					<<link "Keep _cCount child" "Slave Interact">><<set WombAddToGenericReserve($activeSlave, "incubator", 1)>><<set $slaves[$slaveIndices[$activeSlave.ID]] = $activeSlave>><<set $reservedChildren = FetusGlobalReserveCount("incubator")>><</link>>
-					<<if (_WL > 1) && ($reservedChildren + _WL) <= $freeTanks>>
-						| <<link "Keep all of $his children" "Slave Interact">><<set WombAddToGenericReserve($activeSlave, "incubator", 9999)>><<set $slaves[$slaveIndices[$activeSlave.ID]] = $activeSlave>><<set $reservedChildren = FetusGlobalReserveCount("incubator")>><</link>>
-					<</if>>
-				<<elseif $reservedChildren == $freeTanks>>
-					You have no available tanks for $his children.
-				<</if>>
-			<</if>>
-		<</if>>
-	<</if>>
-<</if>>
 
-<<if $nursery > 0>>
-	<<if $activeSlave.preg > 0 && $activeSlave.broodmother == 0 && $activeSlave.pregKnown == 1 && $activeSlave.eggType == "human">>
-		<<if ($activeSlave.assignment == "work in the dairy" && $dairyPregSetting > 0) || ($activeSlave.assignment == "work in the farmyard" && $farmyardBreeding > 0)>>
-		<<else>>
-			<br>&nbsp;&nbsp;&nbsp;&nbsp;
-			<<if _WL - _reservedIncubator == 0>>
-				<<set $reservedChildren = 0>>
-				//$His children are already reserved for $incubatorName//
-			<<else>>
-				<<set $freeCribs = ($nursery-$cribs.length)>>
-				<<if _reservedNursery > 0>>
-					<<if _WL == 1>>
-						$His child will be placed in $nurseryName.
-					<<elseif _reservedNursery < _WL>>
-						_reservedNursery of $his children will be placed in $nurseryName.
-					<<elseif _WL == 2>>
-						Both of $his children will be placed in $nurseryName.
-					<<else>>
-						All _reservedNursery of $his children will be placed in $nurseryName.
-					<</if>>
-					<<if ((_reservedIncubator + _reservedNursery < _WL) && ($reservedChildrenNursery < $freeCribs))>>
-						<<link "Keep another child" "Slave Interact">><<set WombAddToGenericReserve($activeSlave, "nursery", 1)>><<set $slaves[$slaveIndices[$activeSlave.ID]] = $activeSlave>><<set $reservedChildren = FetusGlobalReserveCount("nursery")>><</link>>
-						<<if _reservedNursery > 0>>
-							| <<link "Keep one less child" "Slave Interact">><<set WombCleanGenericReserve($activeSlave, "nursery", 1)>><<set $slaves[$slaveIndices[$activeSlave.ID]] = $activeSlave>><<set $reservedChildren = FetusGlobalReserveCount("nursery")>><</link>>
-						<</if>>
-						<<if _reservedNursery > 1>>
-							| <<link "Keep none of $his children" "Slave Interact">><<set WombCleanGenericReserve($activeSlave, "nursery", 9999)>><</link>>
-						<</if>>
-						<<if ($reservedChildrenNursery + _WL - _reservedNursery) <= $freeCribs>>
-							| <<link "Keep the rest of $his children" "Slave Interact">><<set WombAddToGenericReserve($activeSlave, "nursery", 9999)>><</link>>
-						<</if>>
-					<<elseif (_reservedNursery == _WL) || ($reservedChildrenNursery == $freeCribs) || (_reservedNursery - _reservedIncubator >= 0)>>
-						<<link "Keep one less child" "Slave Interact">><<set WombCleanGenericReserve($activeSlave, "nursery", 1)>><<set $slaves[$slaveIndices[$activeSlave.ID]] = $activeSlave>><<set $reservedChildren = FetusGlobalReserveCount("nursery")>><</link>>
-						<<if _reservedNursery > 1>>
-							| <<link "Keep none of $his children" "Slave Interact">><<set WombCleanGenericReserve($activeSlave, "nursery", 9999)>><<set $slaves[$slaveIndices[$activeSlave.ID]] = $activeSlave>><<set $reservedChildren = FetusGlobalReserveCount("nursery")>><</link>>
-						<</if>>
-					<</if>>
-				<<elseif $reservedChildrenNursery < $freeCribs>>
-					$He is pregnant and you have <<if $freeCribs == 1>>an<</if>> @@.lime;available room<<if $freeCribs > 1>>s<</if>>@@ in $nurseryName.
-					<<set _cCount = (_WL > 1 ? "a" : "the")>>
-					<<link "Keep _cCount child" "Slave Interact">><<set WombAddToGenericReserve($activeSlave, "nursery", 1)>><<set $slaves[$slaveIndices[$activeSlave.ID]] = $activeSlave>><<set $reservedChildren = FetusGlobalReserveCount("nursery")>><</link>>
-					<<if (_WL > 1) && ($reservedChildrenNursery + _WL) <= $freeCribs>>
-						| <<link "Keep all of $his children" "Slave Interact">><<set WombAddToGenericReserve($activeSlave, "nursery", 9999)>><<set $slaves[$slaveIndices[$activeSlave.ID]] = $activeSlave>><<set $reservedChildren = FetusGlobalReserveCount("nursery")>><</link>>
-					<</if>>
-				<<elseif $reservedChildrenNursery == $freeCribs>>
-					You have no available rooms for $his children.
-				<</if>>
-			<</if>>
-		<</if>>
-	<</if>>
-<</if>>
+<span id="incubator"></span>
+<script>App.UI.SlaveInteract.incubator(V.activeSlave)</script>
+
+<span id="nursery"></span>
+<script>App.UI.SlaveInteract.nursery(V.activeSlave)</script>
 
 <<if $propOutcome == 1 && $arcologies[0].FSRestart != "unset">>
 	<<if $activeSlave.breedingMark == 0 && $activeSlave.fuckdoll == 0 && $activeSlave.eggType == "human" && isFertile($activeSlave) && $activeSlave.preg == 0>>