diff --git a/src/js/assignJS.js b/src/js/assignJS.js
index 073941522aadba22e1b31967b916aed75c56f5ea..6638900580087aa8e1777457de153e4fbe315090 100644
--- a/src/js/assignJS.js
+++ b/src/js/assignJS.js
@@ -869,50 +869,6 @@ App.UI.jobLinks = function() {
 	}
 }();
 
-App.UI.SlaveInteract = {
-	fucktoyPref: function() {
-		let res = "";
-		/** @type {App.Entity.SlaveState} */
-		const slave = State.variables.activeSlave;
-		const {his} = getPronouns(slave);
-		if ((slave.assignment === "please you") || (slave.assignment === "serve in the master suite") || (slave.assignment === "be your Concubine")) {
-			res += `<span class="story-label">Fucktoy use preference:</span> <span id = "hole" style="font-weight:bold">${slave.toyHole}.</span> `;
-			/** @type {string[]} */
-			let links = [];
-			links.push('<<link "Mouth">><<set $activeSlave.toyHole = "mouth">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>>');
-			links.push('<<link "Tits">><<set $activeSlave.toyHole = "boobs">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>>');
-			if ((slave.vagina > 0) && canDoVaginal(slave)) {
-				links.push('<<link "Pussy">><<set $activeSlave.toyHole = "pussy">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>>');
-			} else if (slave.vagina === 0) {
-				links.push(App.UI.disabledLink("Pussy",
-					[`Take ${his} virginity before giving ${his} pussy special attention`]));
-			}
-			if ((slave.anus > 0) && canDoAnal(slave)) {
-				links.push('<<link "Ass">><<set $activeSlave.toyHole = "ass">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>>');
-			} else {
-				links.push(App.UI.disabledLink("Ass",
-					[`Take ${his} anal virginity before giving ${his} ass special attention`]));
-			}
-			if ((slave.dick > 0) && canPenetrate(slave)) {
-				links.push('<<link "Dick">><<set $activeSlave.toyHole = "dick">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>>');
-			}
-			links.push(`<<link "No Preference">><<set $activeSlave.toyHole = "all ${his} holes">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>>`);
-			res += links.join('&thinsp;|&thinsp;') + '<br>';
-		}
-		App.UI.replace('#fucktoypref', res);
-	},
-
-	assignmentBlock: function(blockId) {
-		let res = App.UI.jobLinks.assignments(-1, undefined, () => {
-			return `<<replace "#assign">>$activeSlave.assignment<</replace>><<replace "#${blockId}">><<= App.UI.SlaveInteract.assignmentBlock("${blockId}")>><<= App.UI.SlaveInteract.fucktoyPref()>><</replace>>`;
-		});
-		if (State.variables.activeSlave.assignment !== "choose her own job") {
-			res += '&thinsp;|&thinsp; <<link "Stay on this assignment for another month">><<set $activeSlave.sentence += 4>><<replace "#assign">>$activeSlave.assignment($activeSlave.sentence weeks)<</replace>><</link>>';
-		}
-		return res;
-	}
-};
-
 App.activeArcology = function() {
 	return V.arcologies[V.activeArcologyIdx];
 };
diff --git a/src/js/datatypeCleanupJS.js b/src/js/datatypeCleanupJS.js
index eeb7d700abbbd20c0d9e881b607dc82160bd621f..0e7768d253f8b21ae0e73bd18a7d16adf0c55349 100644
--- a/src/js/datatypeCleanupJS.js
+++ b/src/js/datatypeCleanupJS.js
@@ -886,7 +886,7 @@ window.SlaveDatatypeCleanup = (function SlaveDatatypeCleanup() {
 		slave.onDiet = Math.clamp(+slave.onDiet, 0, 1) || 0;
 		slave.hormones = Math.clamp(+slave.hormones, -2, 2) || 0;
 		slave.hormoneBalance = Math.clamp(+slave.hormoneBalance, -400, 400) || 0;
-		if (typeof slave.drugs !== "string") {
+		if (typeof slave.drugs !== "string" || slave.drugs === "none") {
 			slave.drugs = "no drugs";
 		}
 		slave.aphrodisiacs = Math.clamp(+slave.aphrodisiacs, 0, 2) || 0;
@@ -1444,7 +1444,7 @@ window.childDietDatatypeCleanup = function childDietDatatypeCleanup(child) {
 	child.onDiet = Math.clamp(+child.onDiet, 0, 1) || 0;
 	child.hormones = Math.clamp(+child.hormones, -2, 2) || 0;
 	child.hormoneBalance = Math.clamp(+child.hormoneBalance, -400, 400) || 0;
-	if (typeof child.drugs !== "string") {
+	if (typeof child.drugs !== "string" || slave.drugs === "none") {
 		child.drugs = "no drugs";
 	}
 	child.aphrodisiacs = Math.clamp(+child.aphrodisiacs, 0, 2) || 0;
@@ -2480,6 +2480,20 @@ App.Entity.Utils.RARuleDatatypeCleanup = function() {
 		} else {
 			set.weight = null;
 		}
+
+		// Fix particular rules where a setting might no longer be valid
+		if (set.drug === "none") {
+			set.drug = "no drugs";
+		}
+		if (set.brandDesign === "") {
+			set.brandDesign = null;
+		}
+		if (set.label === "") {
+			set.label = null;
+		}
+		if (set.removeLabel === "") {
+			set.removeLabel = null;
+		}
 	}
 }();
 
diff --git a/src/js/rulesAssistantOptions.js b/src/js/rulesAssistantOptions.js
index 7a7589b3124817b10ca7522eae4aa0f17f159310..2fb8cb1db46ddddb49f8521a4f23f0901e16744d 100644
--- a/src/js/rulesAssistantOptions.js
+++ b/src/js/rulesAssistantOptions.js
@@ -2475,7 +2475,7 @@ window.rulesAssistantOptions = (function() {
 
 	class OtherDrugsList extends ListSelector {
 		constructor() {
-			const drugs = [["none"]];
+			const drugs = [["no drugs"]];
 
 			// Lips
 			if (V.arcologies[0].FSSlimnessEnthusiastResearch === 1) {
diff --git a/src/js/useSlave.js b/src/js/slaveInteract.js
similarity index 66%
rename from src/js/useSlave.js
rename to src/js/slaveInteract.js
index 6e138b27103ee54394811fb2c4cbe724ce96c42b..e305dc8789e65df09c8aecc4690c8f47f50dcda2 100644
--- a/src/js/useSlave.js
+++ b/src/js/slaveInteract.js
@@ -1,4 +1,322 @@
-window.useSlaveDisplay = function(slave) {
+App.UI.SlaveInteract = {
+	fucktoyPref: function() {
+		let res = "";
+		/** @type {App.Entity.SlaveState} */
+		const slave = State.variables.activeSlave;
+		const {his} = getPronouns(slave);
+		if ((slave.assignment === "please you") || (slave.assignment === "serve in the master suite") || (slave.assignment === "be your Concubine")) {
+			res += `<span class="story-label">Fucktoy use preference:</span> <span id = "hole" style="font-weight:bold">${slave.toyHole}.</span> `;
+			/** @type {string[]} */
+			let links = [];
+			links.push('<<link "Mouth">><<set $activeSlave.toyHole = "mouth">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>>');
+			links.push('<<link "Tits">><<set $activeSlave.toyHole = "boobs">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>>');
+			if ((slave.vagina > 0) && canDoVaginal(slave)) {
+				links.push('<<link "Pussy">><<set $activeSlave.toyHole = "pussy">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>>');
+			} else if (slave.vagina === 0) {
+				links.push(App.UI.disabledLink("Pussy",
+					[`Take ${his} virginity before giving ${his} pussy special attention`]));
+			}
+			if ((slave.anus > 0) && canDoAnal(slave)) {
+				links.push('<<link "Ass">><<set $activeSlave.toyHole = "ass">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>>');
+			} else {
+				links.push(App.UI.disabledLink("Ass",
+					[`Take ${his} anal virginity before giving ${his} ass special attention`]));
+			}
+			if ((slave.dick > 0) && canPenetrate(slave)) {
+				links.push('<<link "Dick">><<set $activeSlave.toyHole = "dick">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>>');
+			}
+			links.push(`<<link "No Preference">><<set $activeSlave.toyHole = "all ${his} holes">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>>`);
+			res += links.join('&thinsp;|&thinsp;') + '<br>';
+		}
+		App.UI.replace('#fucktoypref', res);
+	},
+
+	assignmentBlock: function(blockId) {
+		let res = App.UI.jobLinks.assignments(-1, undefined, () => {
+			return `<<replace "#assign">>$activeSlave.assignment<</replace>><<replace "#${blockId}">><<= App.UI.SlaveInteract.assignmentBlock("${blockId}")>><<= App.UI.SlaveInteract.fucktoyPref()>><</replace>>`;
+		});
+		if (State.variables.activeSlave.assignment !== "choose her own job") {
+			res += '&thinsp;|&thinsp; <<link "Stay on this assignment for another month">><<set $activeSlave.sentence += 4>><<replace "#assign">>$activeSlave.assignment($activeSlave.sentence weeks)<</replace>><</link>>';
+		}
+		return res;
+	}
+};
+
+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 drugOptions = [];
+	const drugLevelOptions = [];
+
+	if (slave.drugs !== "no drugs"){
+		drugLevelOptions.push({text: `None`, drug: `no drugs`});
+	}
+	if (slave.indentureRestrictions < 2) {
+		if (
+			slave.drugs === "intensive breast injections" ||
+			slave.drugs === "intensive butt injections" ||
+			slave.drugs === "intensive penis enhancement" ||
+			slave.drugs === "intensive testicle enhancement"
+		) {
+			switch (slave.drugs) {
+				case "intensive breast injections":
+					drugLevelOptions.push({text: `Moderate`, drug: `breast injections`});
+					break;
+				case "intensive butt injections":
+					drugLevelOptions.push({text: `Moderate`, drug: `butt injections`});
+					break;
+				case "intensive penis enhancement":
+					drugLevelOptions.push({text: `Moderate`, drug: `penis enhancement`});
+					break;
+				case "intensive testicle enhancement":
+					drugLevelOptions.push({text: `Moderate`, drug: `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});
+		}
+		if (slave.intelligence > -100 && slave.indentureRestrictions < 1) {
+			drugOptions.push({text: `Psychosuppressants`, drug: `psychosuppressants`});
+		} else {
+			drugOptions.push({text: `Psychosuppressants`});
+		}
+		if (V.arcologies[0].FSSlaveProfessionalismResearch === 1) {
+			if (canImproveIntelligence(slave)) {
+				drugOptions.push({text: `Psychostimulants`, drug: `psychostimulants`});
+			} else {
+				drugOptions.push({text: `Psychostimulants`});
+			}
+		}
+		if (slave.boobs < 48000) {
+			drugOptions.push({text: `Breasts`, drug: `breast injections`});
+		} else {
+			drugOptions.push({text: `Breasts`});
+		}
+		if (V.arcologies[0].FSAssetExpansionistResearch === 1) {
+			if (slave.boobs < 25000) {
+				drugOptions.push({text: `Hyper-Breasts`, drug: `hyper breast injections`});
+			} else {
+				drugOptions.push({text: `Hyper Breasts`});
+			}
+		}
+		if (V.arcologies[0].FSSlimnessEnthusiastResearch === 1) {
+			if ((slave.boobs - slave.boobsImplant - slave.boobsMilk) > 100) {
+				drugOptions.push({text: `Breast reducers`, drug: `breast redistributors`});
+			} else {
+				drugOptions.push({text: `Breast reducers`});
+			}
+			if (slave.nipples === "huge" || slave.nipples === "puffy" || slave.nipples === "cute") {
+				drugOptions.push({text: `Nipple reducers`, drug: `nipple atrophiers`});
+			} else {
+				drugOptions.push({text: `Nipple reducers`});
+			}
+		}
+		if (slave.butt < 9) {
+			drugOptions.push({text: `Buttocks`, drug: `butt injections`});
+		} else {
+			drugOptions.push({text: `Buttocks`});
+		}
+		if (V.arcologies[0].FSAssetExpansionistResearch === 1) {
+			if (slave.butt < 20) {
+				drugOptions.push({text: `Hyper-Buttocks`, drug: `hyper butt injections`});
+			} else {
+				drugOptions.push({text: `Hyper Buttocks`});
+			}
+		}
+		if (V.arcologies[0].FSSlimnessEnthusiastResearch === 1) {
+			if (slave.butt - slave.buttImplant > 0) {
+				drugOptions.push({text: `Butt reducers`, drug: `butt redistributors`});
+			} else {
+				drugOptions.push({text: `Butt reducers`});
+			}
+		}
+		if (slave.lips <= 95 || (slave.lips <= 85 && V.seeExtreme !== 1)) {
+			drugOptions.push({text: `Lips`, drug: `lip injections`});
+		} else {
+			drugOptions.push({text: `Lips`});
+		}
+		if (V.arcologies[0].FSSlimnessEnthusiastResearch === 1) {
+			if (slave.lips-slave.lipsImplant > 0) {
+				drugOptions.push({text: `Lip reducers`, drug: `lip atrophiers`});
+			} else {
+				drugOptions.push({text: `Lip reducers`});
+			}
+		}
+		if (V.growthStim === 1) {
+			if (canImproveHeight(slave)) {
+				drugOptions.push({text: `Growth Stimulants`, drug: `growth stimulants`});
+			} else {
+				drugOptions.push({text: `Growth Stimulants`});
+			}
+		}
+		drugOptions.push({text: `Fertility`, drug: `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`});
+		}
+		if (slave.dick > 0) {
+			if (slave.dick < 10) {
+				drugOptions.push({text: `Penis enhancement`, drug: `penis enhancement`});
+			} else {
+				drugOptions.push({text: `Penis enhancement`});
+			}
+		} else {
+			if (slave.clit < 5) {
+				drugOptions.push({text: `Clitoris enhancement`, drug: `penis enhancement`});
+			} else {
+				drugOptions.push({text: `Clitoris enhancement`});
+			}
+		}
+		if (V.arcologies[0].FSAssetExpansionistResearch === 1) {
+			if (slave.dick > 0) {
+				if (slave.dick < 31) {
+					drugOptions.push({text: `Hyper penis enhancement`, drug: `hyper penis enhancement`});
+				} else {
+					drugOptions.push({text: `Hyper penis enhancement`});
+				}
+			} else {
+				if (slave.clit < 5) {
+					drugOptions.push({text: `Hyper clitoris enhancement`, drug: `penis enhancement`});
+				} else {
+					drugOptions.push({text: `Hyper clitoris enhancement`});
+				}
+			}
+		}
+		if (V.arcologies[0].FSSlimnessEnthusiastResearch === 1) {
+			if (slave.dick > 1) {
+				drugOptions.push({text: `Penis reducers`, drug: `penis atrophiers`});
+			} else if (slave.dick === 1) {
+				drugOptions.push({text: `Penis reducers`});
+			}
+		}
+		if (slave.dick > 0 && slave.dick < 11 && !canAchieveErection(slave) && slave.chastityPenis !== 1) {
+			drugOptions.push({text: `Erectile dysfunction circumvention`, drug: `priapism agents`});
+		}
+		if (slave.balls > 0) {
+			drugOptions.push({text: `Testicle enhancement`, drug: `testicle enhancement`});
+			if (V.arcologies[0].FSAssetExpansionistResearch === 1) {
+				drugOptions.push({text: `Hyper testicle enhancement`, drug: `hyper testicle enhancement`});
+			}
+		}
+		if (V.arcologies[0].FSSlimnessEnthusiastResearch === 1) {
+			if (slave.balls > 1) {
+				drugOptions.push({text: `Testicle reducers`, drug: `testicle atrophiers`});
+			} else if (slave.balls === 1) {
+				drugOptions.push({text: `Testicle reducers`});
+			}
+			if (slave.clit > 0) {
+				drugOptions.push({text: `Clitoris reducers`, drug: `clitoris atrophiers`});
+			}
+			if (slave.labia > 0) {
+				drugOptions.push({text: `Labia reducers`, drug: `labia atrophiers`});
+			}
+		}
+		if (V.arcologies[0].FSYouthPreferentialistResearch === 1) {
+			if (slave.visualAge > 18) {
+				drugOptions.push({text: `Anti-aging cream`, drug: `anti-aging cream`});
+			} else {
+				drugOptions.push({text: `Anti-aging cream`});
+			}
+		}
+		drugOptions.push({text: `Steroids`, drug: `steroids`});
+		if (V.arcologies[0].FSSlimnessEnthusiastResearch === 1) {
+			if (slave.weight > -95) {
+				drugOptions.push({text: `Weight loss pills`, drug: `appetite suppressors`});
+			} else {
+				drugOptions.push({text: `Weight loss pills`});
+			}
+		}
+		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`});
+			}
+			if (slave.balls > 0 && slave.pubertyXY === 0) {
+				drugOptions.push({text: `Male hormone injections`, drug: `male hormone injections`});
+			}
+		}
+		drugOptions.push({text: `Hormone enhancers`, drug: `hormone enhancers`});
+		drugOptions.push({text: `Hormone blockers`, drug: `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`});
+		}
+	}
+
+	let title = document.createElement('div');
+	title.textContent = `Drugs: `;
+	let chosenDrug = document.createElement('span');
+	chosenDrug.textContent = `${capFirstChar(slave.drugs)} `;
+	chosenDrug.style.fontWeight = "bold";
+	title.append(chosenDrug);
+	title.appendChild(generateRows(drugLevelOptions));
+	el.append(title);
+
+	let drugLinks = document.createElement('div');
+	drugLinks.appendChild(generateRows(drugOptions));
+	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"].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 (keys.length === 1) {
+				if (drugArray[i].text) {
+					link = document.createTextNode(drugArray[i].text);
+				} else {
+					console.log(`expected 'text' only, got: ${drugArray[i]}`);
+					link = document.createTextNode("error, text not found");
+				}
+			// Are they already on this drug?
+			} else if (drugArray[i].drug === slave.drugs) {
+				link = document.createTextNode(drugArray[i].text);
+			// 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.createTextNode(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);
+};
+
+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');
 
@@ -352,21 +670,21 @@ window.useSlaveDisplay = function(slave) {
 		});
 	}
 	el.append(`Or use ${him} here: `);
-	el.appendChild(generateRow(sexOptions));
+	el.appendChild(generateRows(sexOptions));
 	if (!jQuery.isEmptyObject(fillFaceOptions)) {
 		let fill = document.createElement('div');
 		fill.appendChild(document.createTextNode(` Fill ${his} mouth with: `));
-		fill.appendChild(generateRow(fillFaceOptions));
+		fill.appendChild(generateRows(fillFaceOptions));
 		el.appendChild(fill);
 	}
 	if (!jQuery.isEmptyObject(fillAssOptions)) {
 		let fill = document.createElement('div');
 		fill.appendChild(document.createTextNode(` Fill ${his} ass with: `));
-		fill.appendChild(generateRow(fillAssOptions));
+		fill.appendChild(generateRows(fillAssOptions));
 		el.appendChild(fill);
 	}
 
-	function generateRow(sexArray) {
+	function generateRows(sexArray) {
 		let row = document.createElement('span');
 		for (let i = 0; i < sexArray.length; i++) {
 			let link;
@@ -379,7 +697,7 @@ window.useSlaveDisplay = function(slave) {
 					continue;
 				} else {
 					sexArray[i].text += " ERROR, THIS SCENE WAS NOT ENTERED CORRECTLY";
-					console.log("Trash found while generateRow() was running: " + keys[j] + ": " + sexArray[i][keys[j]]);
+					console.log("Trash found while generateRows() was running: " + keys[j] + ": " + sexArray[i][keys[j]]);
 					break;
 				}
 			}
@@ -434,14 +752,14 @@ window.useSlaveDisplay = function(slave) {
 				App.UI.replace('#miniscene', `<<goto "${sexOption.goto}">>`);
 			}
 
-			SlaveInteractRefreshAll(slave);
+			App.UI.SlaveInteract.refreshAll(slave);
 			return;
 		}
 	}
 	return jQuery('#useSlave').empty().append(el);
 };
 
-window.SlaveInteractBloating = function(slave) {
+App.UI.SlaveInteract.bloating = function(slave) {
 	const
 		{
 			// eslint-disable-next-line no-unused-vars
@@ -479,7 +797,7 @@ window.SlaveInteractBloating = function(slave) {
 					slave.cumSource = 0,
 					slave.milkSource = 0,
 					SetBellySize(slave),
-					SlaveInteractRefreshAll(slave);
+					App.UI.SlaveInteract.refreshAll(slave);
 				},
 			);
 			bloating.append(link);
@@ -491,7 +809,7 @@ window.SlaveInteractBloating = function(slave) {
 					slave.inflationType = "none",
 					slave.inflationMethod = 0,
 					SetBellySize(slave),
-					SlaveInteractRefreshAll(slave);
+					App.UI.SlaveInteract.refreshAll(slave);
 				},
 			);
 			bloating.append(link);
@@ -502,7 +820,7 @@ window.SlaveInteractBloating = function(slave) {
 };
 
 
-window.SlaveInteractFertility = function(slave) {
+App.UI.SlaveInteract.fertility = function(slave) {
 	const
 		{
 			// eslint-disable-next-line no-unused-vars
@@ -568,7 +886,7 @@ window.SlaveInteractFertility = function(slave) {
 					`Use contraceptives`,
 					() => {
 						slave.preg = -1,
-						SlaveInteractRefreshAll(slave);
+						App.UI.SlaveInteract.refreshAll(slave);
 					},
 				);
 				fertilityblock.append(link);
@@ -577,7 +895,7 @@ window.SlaveInteractFertility = function(slave) {
 					`Let ${him} get pregnant`,
 					() => {
 						slave.preg = 0,
-						SlaveInteractRefreshAll(slave);
+						App.UI.SlaveInteract.refreshAll(slave);
 					},
 				);
 				fertilityblock.append(link);
@@ -681,7 +999,7 @@ window.SlaveInteractFertility = function(slave) {
 					`Normal Birth`,
 					() => {
 						slave.pregControl = "none",
-						SlaveInteractFertility(slave);
+						App.UI.SlaveInteract.fertility(slave);
 					},
 				);
 				control.append(link);
@@ -690,7 +1008,7 @@ window.SlaveInteractFertility = function(slave) {
 					`Suppress Labor`,
 					() => {
 						slave.pregControl = "labor suppressors",
-						SlaveInteractFertility(slave);
+						App.UI.SlaveInteract.fertility(slave);
 					},
 				);
 				control.append(link);
@@ -701,7 +1019,7 @@ window.SlaveInteractFertility = function(slave) {
 					`Normal Gestation`,
 					() => {
 						slave.pregControl = "none",
-						SlaveInteractFertility(slave);
+						App.UI.SlaveInteract.fertility(slave);
 					},
 				);
 				control.append(link);
@@ -712,7 +1030,7 @@ window.SlaveInteractFertility = function(slave) {
 					`Slow Gestation`,
 					() => {
 						slave.pregControl = "slow gestation",
-						SlaveInteractFertility(slave);
+						App.UI.SlaveInteract.fertility(slave);
 					},
 				);
 				control.append(link);
@@ -723,7 +1041,7 @@ window.SlaveInteractFertility = function(slave) {
 					`Fast Gestation`,
 					() => {
 						slave.pregControl = "speed up",
-						SlaveInteractFertility(slave);
+						App.UI.SlaveInteract.fertility(slave);
 					},
 				);
 				control.append(link);
@@ -734,8 +1052,9 @@ window.SlaveInteractFertility = function(slave) {
 	return jQuery('#fertilityblock').empty().append(fertilityblock);
 };
 
-window.SlaveInteractRefreshAll = function(slave) {
-	SlaveInteractBloating(slave);
-	SlaveInteractFertility(slave);
-	useSlaveDisplay(slave);
+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);
 };
diff --git a/src/uncategorized/slaveInteract.tw b/src/uncategorized/slaveInteract.tw
index 00de0b3bc901bd06dbe4c66467f7a715820d6b9a..001f3e386bad83eb528f46562448a4d32b1c5ec7 100644
--- a/src/uncategorized/slaveInteract.tw
+++ b/src/uncategorized/slaveInteract.tw
@@ -69,7 +69,7 @@
 <div id="miniscene"></div>
 <span id="useSlave"></span>
 <script>
-	useSlaveDisplay(V.activeSlave)
+	App.UI.SlaveInteract.useSlaveDisplay(V.activeSlave)
 </script>
 
 /* pregmod start */
@@ -628,7 +628,7 @@
 
 	<<if $activeSlave.vagina > -1>>
 		<br>Vaginal accessory: ''<span id="vaginalAccessory">$activeSlave.vaginalAccessory</span>.''
-		<<link "None">><<set $activeSlave.vaginalAccessory = "none">><<replace "#vaginalAccessory">>$activeSlave.vaginalAccessory<</replace>><<run SlaveInteractRefreshAll($activeSlave)>><</link>>
+		<<link "None">><<set $activeSlave.vaginalAccessory = "none">><<replace "#vaginalAccessory">>$activeSlave.vaginalAccessory<</replace>><<run App.UI.SlaveInteract.refreshAll($activeSlave)>><</link>>
 		<<if isItemAccessible("bullet vibrator")>>
 			| <<link "Bullet vibrator">><<set $activeSlave.vaginalAccessory = "bullet vibrator">><<replace "#vaginalAccessory">>$activeSlave.vaginalAccessory<</replace>><</link>>
 		<</if>>
@@ -660,7 +660,7 @@
 
 	<<if $activeSlave.dick > 0>>
 		<br>Dick accessory: ''<span id="dickAccessory">$activeSlave.dickAccessory</span>.''
-		<<link "None">><<set $activeSlave.dickAccessory = "none">><<replace "#dickAccessory">>$activeSlave.dickAccessory<</replace>><<run SlaveInteractRefreshAll($activeSlave)>><</link>>
+		<<link "None">><<set $activeSlave.dickAccessory = "none">><<replace "#dickAccessory">>$activeSlave.dickAccessory<</replace>><<run App.UI.SlaveInteract.refreshAll($activeSlave)>><</link>>
 		<<if isItemAccessible("bullet vibrator") && $toysBoughtVaginalAttachments == 1>>
 			| <<link "Bullet vibrator">><<set $activeSlave.dickAccessory = "bullet vibrator">><<replace "#dickAccessory">>$activeSlave.dickAccessory<</replace>><</link>>
 		<</if>>
@@ -670,18 +670,18 @@
 	<</if>>
 
 	<br>Chastity device: ''<span id="chastity"><<if $activeSlave.chastityAnus == 1 && $activeSlave.chastityPenis == 1 && $activeSlave.chastityVagina == 1>>full chastity<<elseif $activeSlave.chastityPenis == 1 && $activeSlave.chastityVagina == 1>>genital chastity<<elseif $activeSlave.chastityAnus == 1 && $activeSlave.chastityPenis == 1>>combined chastity cage<<elseif $activeSlave.chastityAnus == 1 && $activeSlave.chastityVagina == 1>>combined chastity belt<<elseif $activeSlave.chastityVagina == 1>>chastity belt<<elseif $activeSlave.chastityPenis == 1>>chastity cage<<elseif $activeSlave.chastityAnus == 1>>anal chastity<<elseif $activeSlave.chastityAnus == 0 && $activeSlave.chastityPenis == 0 && $activeSlave.chastityVagina == 0>>none<<else>>THERE HAS BEEN AN ERROR<</if>></span>.''
-	<<link "None">><<set $activeSlave.chastityAnus = 0>><<set $activeSlave.chastityPenis = 0>><<set $activeSlave.chastityVagina = 0>><<replace "#chastity">>none<</replace>><<run SlaveInteractRefreshAll($activeSlave)>><</link>>
-	| <<link "Anal chastity">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 1>><<set $activeSlave.chastityPenis = 0>><<set $activeSlave.chastityVagina = 0>><<replace "#chastity">>anal chastity<</replace>><<run SlaveInteractRefreshAll($activeSlave)>><</link>>
+	<<link "None">><<set $activeSlave.chastityAnus = 0>><<set $activeSlave.chastityPenis = 0>><<set $activeSlave.chastityVagina = 0>><<replace "#chastity">>none<</replace>><<run App.UI.SlaveInteract.refreshAll($activeSlave)>><</link>>
+	| <<link "Anal chastity">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 1>><<set $activeSlave.chastityPenis = 0>><<set $activeSlave.chastityVagina = 0>><<replace "#chastity">>anal chastity<</replace>><<run App.UI.SlaveInteract.refreshAll($activeSlave)>><</link>>
 	<<if $activeSlave.vagina > -1>>
-		| <<link "Chastity belt">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 0>><<set $activeSlave.chastityPenis = 0>><<set $activeSlave.chastityVagina = 1>><<replace "#chastity">>Chastity belt<</replace>><<run SlaveInteractRefreshAll($activeSlave)>><</link>>
-		| <<link "Combined chastity belt">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 1>><<set $activeSlave.chastityPenis = 0>><<set $activeSlave.chastityVagina = 1>><<replace "#chastity">>Combined chastity belt<</replace>><<run SlaveInteractRefreshAll($activeSlave)>><</link>>
+		| <<link "Chastity belt">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 0>><<set $activeSlave.chastityPenis = 0>><<set $activeSlave.chastityVagina = 1>><<replace "#chastity">>Chastity belt<</replace>><<run App.UI.SlaveInteract.refreshAll($activeSlave)>><</link>>
+		| <<link "Combined chastity belt">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 1>><<set $activeSlave.chastityPenis = 0>><<set $activeSlave.chastityVagina = 1>><<replace "#chastity">>Combined chastity belt<</replace>><<run App.UI.SlaveInteract.refreshAll($activeSlave)>><</link>>
 	<</if>>
 	<<if $activeSlave.dick > 0>>
-		| <<link "Chastity cage">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 0>><<set $activeSlave.chastityPenis = 1>><<set $activeSlave.chastityVagina = 0>><<replace "#chastity">>Chastity cage<</replace>><<run SlaveInteractRefreshAll($activeSlave)>><</link>>
-		| <<link "Combined chastity cage">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 1>><<set $activeSlave.chastityPenis = 1>><<set $activeSlave.chastityVagina = 0>><<replace "#chastity">>Combined Chastity cage<</replace>><<run SlaveInteractRefreshAll($activeSlave)>><</link>>
+		| <<link "Chastity cage">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 0>><<set $activeSlave.chastityPenis = 1>><<set $activeSlave.chastityVagina = 0>><<replace "#chastity">>Chastity cage<</replace>><<run App.UI.SlaveInteract.refreshAll($activeSlave)>><</link>>
+		| <<link "Combined chastity cage">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 1>><<set $activeSlave.chastityPenis = 1>><<set $activeSlave.chastityVagina = 0>><<replace "#chastity">>Combined Chastity cage<</replace>><<run App.UI.SlaveInteract.refreshAll($activeSlave)>><</link>>
 		<<if $activeSlave.vagina > -1>>
-			| <<link "Genital chastity">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 0>><<set $activeSlave.chastityPenis = 1>><<set $activeSlave.chastityVagina = 1>><<replace "#chastity">>Genital chastity<</replace>><<run SlaveInteractRefreshAll($activeSlave)>><</link>>
-			| <<link "Full chastity">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 1>><<set $activeSlave.chastityPenis = 1>><<set $activeSlave.chastityVagina = 1>><<replace "#chastity">>Full chastity<</replace>><<run SlaveInteractRefreshAll($activeSlave)>><</link>>
+			| <<link "Genital chastity">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 0>><<set $activeSlave.chastityPenis = 1>><<set $activeSlave.chastityVagina = 1>><<replace "#chastity">>Genital chastity<</replace>><<run App.UI.SlaveInteract.refreshAll($activeSlave)>><</link>>
+			| <<link "Full chastity">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 1>><<set $activeSlave.chastityPenis = 1>><<set $activeSlave.chastityVagina = 1>><<replace "#chastity">>Full chastity<</replace>><<run App.UI.SlaveInteract.refreshAll($activeSlave)>><</link>>
 		<</if>>
 	<</if>>
 
@@ -701,197 +701,8 @@
 <</if>>	/* CLOSES WARDROBE CHECK */
 
 <br><br>__Physical Regimen:__
-<span id="drugs">
-	<br>Drugs: <strong>$activeSlave.drugs</strong>.
-	<<link "None">><<set $activeSlave.drugs = "no drugs">><<SlaveInteractDrugs>><</link>>
-	<<if $activeSlave.indentureRestrictions < 2>>
-		<<if $activeSlave.drugs == "intensive breast injections" || $activeSlave.drugs == "intensive butt injections" || $activeSlave.drugs == "intensive penis enhancement" || $activeSlave.drugs == "intensive testicle enhancement">>
-			| <<link "Moderate">>
-				<<switch $activeSlave.drugs>>
-				<<case "intensive breast injections">>
-					<<set $activeSlave.drugs = "breast injections">>
-				<<case "intensive butt injections">>
-					<<set $activeSlave.drugs = "butt injections">>
-				<<case "intensive penis enhancement">>
-					<<set $activeSlave.drugs = "penis enhancement">>
-				<<case "intensive testicle enhancement">>
-					<<set $activeSlave.drugs = "testicle enhancement">>
-				<</switch>>
-				<<SlaveInteractDrugs>>
-			<</link>>
-		<<elseif $activeSlave.drugs == "breast injections" || $activeSlave.drugs == "butt injections" || $activeSlave.drugs == "penis enhancement" || $activeSlave.drugs == "testicle enhancement">>
-			| <<link "Intensify">>
-				<<set $activeSlave.drugs = "intensive " + $activeSlave.drugs>>
-				<<SlaveInteractDrugs>>
-			<</link>>
-		<</if>>
-		<<if ($activeSlave.intelligence > -100) && $activeSlave.indentureRestrictions < 1>>
-			| <<link "Psychosuppressants">><<set $activeSlave.drugs = "psychosuppressants">><<SlaveInteractDrugs>><</link>>
-		<<else>>
-			| Psychosuppressants
-		<</if>>
-		<<if $arcologies[0].FSSlaveProfessionalismResearch == 1>>
-			<<if canImproveIntelligence($activeSlave)>>
-				| <<link "Psychostimulants">><<set $activeSlave.drugs = "psychostimulants">><<SlaveInteractDrugs>><</link>>
-			<<else>>
-				| Psychostimulants
-			<</if>>
-		<</if>>
-		<<if ($activeSlave.boobs < 48000)>>
-			| <<link "Breasts">><<set $activeSlave.drugs = "breast injections">><<SlaveInteractDrugs>><</link>>
-		<<else>>
-			| Breasts
-		<</if>>
-		<<if $arcologies[0].FSAssetExpansionistResearch == 1>>
-			<<if ($activeSlave.boobs < 48000)>>
-				| <<link "Hyper-Breasts">><<set $activeSlave.drugs = "hyper breast injections">><<SlaveInteractDrugs>><</link>>
-			<<else>>
-				| Hyper Breasts
-			<</if>>
-		<</if>>
-		<<if $arcologies[0].FSSlimnessEnthusiastResearch == 1>>
-			<<if ($activeSlave.boobs-$activeSlave.boobsImplant-$activeSlave.boobsMilk > 100)>>
-				| <<link "Breast reducers">><<set $activeSlave.drugs = "breast redistributors">><<SlaveInteractDrugs>><</link>>
-			<<else>>
-				| Breast reducers
-			<</if>>
-			<<if ($activeSlave.nipples == "huge" || $activeSlave.nipples == "puffy" || $activeSlave.nipples == "cute")>>
-				| <<link "Nipple reducers">><<set $activeSlave.drugs = "nipple atrophiers">><<SlaveInteractDrugs>><</link>>
-			<<else>>
-				| Nipple reducers
-			<</if>>
-		<</if>>
-		<<if ($activeSlave.butt < 9)>>
-			| <<link "Buttocks">><<set $activeSlave.drugs = "butt injections">><<SlaveInteractDrugs>><</link>>
-		<<else>>
-			| Buttocks
-		<</if>>
-		<<if $arcologies[0].FSAssetExpansionistResearch == 1>>
-			<<if ($activeSlave.butt < 20)>>
-				| <<link "Hyper-Buttocks">><<set $activeSlave.drugs = "hyper butt injections">><<SlaveInteractDrugs>><</link>>
-			<<else>>
-				| Hyper Buttocks
-			<</if>>
-		<</if>>
-		<<if $arcologies[0].FSSlimnessEnthusiastResearch == 1>>
-			<<if ($activeSlave.butt-$activeSlave.buttImplant > 0)>>
-				| <<link "Butt reducers">><<set $activeSlave.drugs = "butt redistributors">><<SlaveInteractDrugs>><</link>>
-			<<else>>
-				| Butt reducers
-			<</if>>
-		<</if>>
-		<<if ($activeSlave.lips <= 95) || (($activeSlave.lips <= 85) && ($seeExtreme != 1))>>
-			| <<link "Lips">><<set $activeSlave.drugs = "lip injections">><<SlaveInteractDrugs>><</link>>
-		<<else>>
-			| Lips
-		<</if>>
-		<<if $arcologies[0].FSSlimnessEnthusiastResearch == 1>>
-			<<if ($activeSlave.lips-$activeSlave.lipsImplant > 0)>>
-				| <<link "Lip reducers">><<set $activeSlave.drugs = "lip atrophiers">><<SlaveInteractDrugs>><</link>>
-			<<else>>
-				| Lip reducers
-			<</if>>
-		<</if>>
-		<<if $growthStim == 1>>
-			<<if canImproveHeight($activeSlave)>>
-				| <<link "Growth stimulants">><<set $activeSlave.drugs = "growth stimulants">><<SlaveInteractDrugs>><</link>>
-			<<else>>
-				| Growth stimulants
-			<</if>>
-		<</if>>
-		| <<link "Fertility">><<set $activeSlave.drugs = "fertility drugs">><<SlaveInteractDrugs>><</link>>
-		<<if ($seeHyperPreg == 1) && ($activeSlave.indentureRestrictions < 1) && ($superFertilityDrugs == 1) && ($activeSlave.breedingMark != 1 || $propOutcome == 0 || $eugenicsFullControl == 1 || $arcologies[0].FSRestart == "unset")>>
-			| <<link "Fertility+">><<set $activeSlave.drugs = "super fertility drugs">><<SlaveInteractDrugs>><</link>>
-		<</if>>
-		<<if ($activeSlave.dick > 0)>>
-			<<if ($activeSlave.dick < 10)>>
-				| <<link "Penis enhancement">><<set $activeSlave.drugs = "penis enhancement">><<SlaveInteractDrugs>><</link>>
-			<<else>>
-				| Penis enhancement
-			<</if>>
-		<<else>>
-			<<if ($activeSlave.clit < 5)>>
-				| <<link "Clitoris enhancement">><<set $activeSlave.drugs = "penis enhancement">><<SlaveInteractDrugs>><</link>>
-			<<else>>
-				| Clitoris enhancement
-			<</if>>
-		<</if>>
-		<<if $arcologies[0].FSAssetExpansionistResearch == 1>>
-			<<if ($activeSlave.dick > 0)>>
-				<<if ($activeSlave.dick < 31)>>
-					| <<link "Hyper penis enhancement">><<set $activeSlave.drugs = "hyper penis enhancement">><<SlaveInteractDrugs>><</link>>
-				<<else>>
-					| Hyper penis enhancement
-				<</if>>
-			<<else>>
-				<<if ($activeSlave.clit < 5)>>
-					| <<link "Hyper clitoris enhancement">><<set $activeSlave.drugs = "penis enhancement">><<SlaveInteractDrugs>><</link>>
-				<<else>>
-					| Hyper clitoris enhancement
-				<</if>>
-			<</if>>
-		<</if>>
-		<<if $arcologies[0].FSSlimnessEnthusiastResearch == 1>>
-			<<if ($activeSlave.dick > 1)>>
-				| <<link "Penis reducers">><<set $activeSlave.drugs = "penis atrophiers">><<SlaveInteractDrugs>><</link>>
-			<<elseif $activeSlave.dick == 1>>
-				| Penis reducers
-			<</if>>
-		<</if>>
-		<<if $activeSlave.dick > 0 && $activeSlave.dick < 11 && !canAchieveErection($activeSlave) && $activeSlave.chastityPenis != 1>>
-			| <<link "Erectile dysfunction circumvention">><<set $activeSlave.drugs = "priapism agents">><<SlaveInteractDrugs>><</link>>
-		<</if>>
-		<<if ($activeSlave.balls > 0)>>
-			| <<link "Testicle enhancement">><<set $activeSlave.drugs = "testicle enhancement">><<SlaveInteractDrugs>><</link>>
-			<<if $arcologies[0].FSAssetExpansionistResearch == 1>>
-				| <<link "Hyper testicle enhancement">><<set $activeSlave.drugs = "hyper testicle enhancement">><<SlaveInteractDrugs>><</link>>
-			<</if>>
-		<</if>>
-		<<if $arcologies[0].FSSlimnessEnthusiastResearch == 1>>
-			<<if ($activeSlave.balls > 1)>>
-				| <<link "Testicle reducers">><<set $activeSlave.drugs = "testicle atrophiers">><<SlaveInteractDrugs>><</link>>
-			<<elseif $activeSlave.balls == 1>>
-				| Testicle reducers
-			<</if>>
-			<<if ($activeSlave.clit > 0)>>
-				| <<link "Clitoris reducers">><<set $activeSlave.drugs = "clitoris atrophiers">><<SlaveInteractDrugs>><</link>>
-			<</if>>
-			<<if $activeSlave.labia > 0 && $activeSlave.vagina > -1>>
-				| <<link "Labia reducers">><<set $activeSlave.drugs = "labia atrophiers">><<SlaveInteractDrugs>><</link>>
-			<</if>>
-		<</if>>
-		<<if $arcologies[0].FSYouthPreferentialistResearch == 1>>
-			<<if ($activeSlave.visualAge > 18)>>
-				| <<link "Anti-aging cream">><<set $activeSlave.drugs = "anti-aging cream">><<SlaveInteractDrugs>><</link>>
-			<<else>>
-				| Anti-aging cream
-			<</if>>
-		<</if>>
-		| <<link "Steroids">><<set $activeSlave.drugs = "steroids">><<SlaveInteractDrugs>><</link>>
-		<<if $arcologies[0].FSSlimnessEnthusiastResearch == 1>>
-			<<if ($activeSlave.weight > -95)>>
-				| <<link "Weight loss pills">><<set $activeSlave.drugs = "appetite suppressors">><<SlaveInteractDrugs>><</link>>
-			<<else>>
-				| Weight loss pills
-			<</if>>
-		<</if>>
-		<<if $precociousPuberty == 1 && $pubertyHormones == 1 && ($activeSlave.breedingMark != 1 || $propOutcome == 0 || $eugenicsFullControl == 1 || $arcologies[0].FSRestart == "unset")>>
-			<<if ($activeSlave.ovaries == 1 || $activeSlave.mpreg == 1) && $activeSlave.pubertyXX == 0>>
-				| <<link "Female hormone injections">><<set $activeSlave.drugs = "female hormone injections">><<SlaveInteractDrugs>><</link>>
-			<</if>>
-			<<if $activeSlave.balls > 0 && $activeSlave.pubertyXY == 0>>
-				| <<link "Male hormone injections">><<set $activeSlave.drugs = "male hormone injections">><<SlaveInteractDrugs>><</link>>
-			<</if>>
-		<</if>>
-		| <<link "Hormone enhancers">><<set $activeSlave.drugs = "hormone enhancers">><<SlaveInteractDrugs>><</link>>
-		| <<link "Hormone blockers">><<set $activeSlave.drugs = "hormone blockers">><<SlaveInteractDrugs>><</link>>
-		<<if $activeSlave.boobs > 250 && $activeSlave.boobShape != "saggy" && $purchasedSagBGone == 1>>
-			| <<link "Sag-B-Gone breast lifting cream">><<set $activeSlave.drugs = "sag-B-gone">><<SlaveInteractDrugs>><</link>>
-		<</if>>
-	<</if>>
-</span>
-
-<br>
+<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>>
@@ -907,7 +718,7 @@ Aphrodisiacs: <span id="aphrodisiacs"><strong><<if $activeSlave.aphrodisiacs > 1
 	| <<link "Anaphrodisiacs">><<set $activeSlave.aphrodisiacs = -1>><<replace "#aphrodisiacs">><strong>anaphrodisiacs</strong><</replace>><</link>>
 <br>
 <span id="fertilityblock"></span>
-<script>SlaveInteractFertility(V.activeSlave)</script>
+<script>App.UI.SlaveInteract.fertility(V.activeSlave)</script>
 <<set $reservedChildren = FetusGlobalReserveCount("incubator")>>
 <<set $reservedChildrenNursery = FetusGlobalReserveCount("nursery")>>
 <<set _reservedIncubator = WombReserveCount($activeSlave, "incubator")>>
@@ -1025,7 +836,7 @@ Aphrodisiacs: <span id="aphrodisiacs"><strong><<if $activeSlave.aphrodisiacs > 1
 <</if>>
 
 <span id="bloating"></span>
-<script>SlaveInteractBloating(V.activeSlave)</script>
+<script>App.UI.SlaveInteract.bloating(V.activeSlave)</script>
 
 Hormones: <strong><span id="hormones">
 <<if $activeSlave.hormones == -2>>intensive male<<elseif $activeSlave.hormones == -1>>male<<elseif $activeSlave.hormones == 2>>intensive female<<elseif $activeSlave.hormones == 1>>female<<else>>none<</if>></span></strong>.
diff --git a/src/uncategorized/surgeryDegradation.tw b/src/uncategorized/surgeryDegradation.tw
index 68e8ac2b31bd9525855bb1ebc63a2ca3d1d969e0..70e6a15d7997c4aa7e60fd71f7ed06ec89e996df 100644
--- a/src/uncategorized/surgeryDegradation.tw
+++ b/src/uncategorized/surgeryDegradation.tw
@@ -16,12 +16,12 @@
 		<<set $activeSlave.clitPiercing = 0>>
 	<</if>>
 	<<if $activeSlave.drugs == "penis enhancement" || $activeSlave.drugs == "hyper penis enhancement" || $activeSlave.drugs == "breast redistributors">>
-		<<set $activeSlave.drugs = "none">>
+		<<set $activeSlave.drugs = "no drugs">>
 	<</if>>
 <</if>>
 <<if $activeSlave.balls == 0>>
 	<<if $activeSlave.drugs == "testicle enhancement" || $activeSlave.drugs == "hyper testicle enhancement" || $activeSlave.drugs == "testicle atrophiers">>
-		<<set $activeSlave.drugs = "none">>
+		<<set $activeSlave.drugs = "no drugs">>
 	<</if>>
 <</if>>
 
diff --git a/src/utility/miscWidgets.tw b/src/utility/miscWidgets.tw
index 416b17605a5b7944bc81859e6e9721e198b11d7e..d29ab3c6e288a5e8baa021bcd1d24259224d3444 100644
--- a/src/utility/miscWidgets.tw
+++ b/src/utility/miscWidgets.tw
@@ -10,201 +10,6 @@ Allows for dynamic updating of the next button in the storyCaption (left side-ba
 	<<replace "#nextButton">> <<userButton>> <</replace>>
 <</widget>>
 
-/%
-Call as <<SlaveInteractDrugs>>
-%/
-<<widget "SlaveInteractDrugs">>
-	<<replace #drugs>>
-	<br>Drugs: <strong>$activeSlave.drugs</strong>.
-	<<link "None">><<set $activeSlave.drugs = "no drugs">><<SlaveInteractDrugs>><</link>>
-	<<if $activeSlave.indentureRestrictions < 2>>
-		<<if $activeSlave.drugs == "intensive breast injections" || $activeSlave.drugs == "intensive butt injections" || $activeSlave.drugs == "intensive penis enhancement" || $activeSlave.drugs == "intensive testicle enhancement">>
-			| <<link "Moderate">>
-				<<switch $activeSlave.drugs>>
-				<<case "intensive breast injections">>
-					<<set $activeSlave.drugs = "breast injections">>
-				<<case "intensive butt injections">>
-					<<set $activeSlave.drugs = "butt injections">>
-				<<case "intensive penis enhancement">>
-					<<set $activeSlave.drugs = "penis enhancement">>
-				<<case "intensive testicle enhancement">>
-					<<set $activeSlave.drugs = "testicle enhancement">>
-				<</switch>>
-				<<SlaveInteractDrugs>>
-			<</link>>
-		<<elseif $activeSlave.drugs == "breast injections" || $activeSlave.drugs == "butt injections" || $activeSlave.drugs == "penis enhancement" || $activeSlave.drugs == "testicle enhancement">>
-			| <<link "Intensify">>
-				<<set $activeSlave.drugs = "intensive " + $activeSlave.drugs>>
-				<<SlaveInteractDrugs>>
-			<</link>>
-		<</if>>
-		<<if ($activeSlave.intelligence > -100) && $activeSlave.indentureRestrictions < 1>>
-			| <<link "Psychosuppressants">><<set $activeSlave.drugs = "psychosuppressants">><<SlaveInteractDrugs>><</link>>
-		<<else>>
-			| Psychosuppressants
-		<</if>>
-		<<if $arcologies[0].FSSlaveProfessionalismResearch == 1>>
-			<<if canImproveIntelligence($activeSlave)>>
-				| <<link "Psychostimulants">><<set $activeSlave.drugs = "psychostimulants">><<SlaveInteractDrugs>><</link>>
-			<<else>>
-				| Psychostimulants
-			<</if>>
-		<</if>>
-		<<if ($activeSlave.boobs < 48000)>>
-			| <<link "Breasts">><<set $activeSlave.drugs = "breast injections">><<SlaveInteractDrugs>><</link>>
-		<<else>>
-			| Breasts
-		<</if>>
-		<<if $arcologies[0].FSAssetExpansionistResearch == 1>>
-			<<if ($activeSlave.boobs < 25000)>>
-				| <<link "Hyper-Breasts">><<set $activeSlave.drugs = "hyper breast injections">><<SlaveInteractDrugs>><</link>>
-			<<else>>
-				| Hyper Breasts
-			<</if>>
-		<</if>>
-		<<if $arcologies[0].FSSlimnessEnthusiastResearch == 1>>
-			<<if ($activeSlave.boobs-$activeSlave.boobsImplant-$activeSlave.boobsMilk > 100)>>
-				| <<link "Breast reducers">><<set $activeSlave.drugs = "breast redistributors">><<SlaveInteractDrugs>><</link>>
-			<<else>>
-				| Breast reducers
-			<</if>>
-			<<if ($activeSlave.nipples == "huge" || $activeSlave.nipples == "puffy" || $activeSlave.nipples == "cute")>>
-				| <<link "Nipple reducers">><<set $activeSlave.drugs = "nipple atrophiers">><<SlaveInteractDrugs>><</link>>
-			<<else>>
-				| Nipple reducers
-			<</if>>
-		<</if>>
-		<<if ($activeSlave.butt < 9)>>
-			| <<link "Buttocks">><<set $activeSlave.drugs = "butt injections">><<SlaveInteractDrugs>><</link>>
-		<<else>>
-			| Buttocks
-		<</if>>
-		<<if $arcologies[0].FSAssetExpansionistResearch == 1>>
-			<<if ($activeSlave.butt < 20)>>
-				| <<link "Hyper-Buttocks">><<set $activeSlave.drugs = "hyper butt injections">><<SlaveInteractDrugs>><</link>>
-			<<else>>
-				| Hyper Buttocks
-			<</if>>
-		<</if>>
-		<<if $arcologies[0].FSSlimnessEnthusiastResearch == 1>>
-			<<if ($activeSlave.butt-$activeSlave.buttImplant > 0)>>
-				| <<link "Butt reducers">><<set $activeSlave.drugs = "butt redistributors">><<SlaveInteractDrugs>><</link>>
-			<<else>>
-				| Butt reducers
-			<</if>>
-		<</if>>
-		<<if ($activeSlave.lips <= 95) || (($activeSlave.lips <= 85) && ($seeExtreme != 1))>>
-			| <<link "Lips">><<set $activeSlave.drugs = "lip injections">><<SlaveInteractDrugs>><</link>>
-		<<else>>
-			| Lips
-		<</if>>
-		<<if $arcologies[0].FSSlimnessEnthusiastResearch == 1>>
-			<<if ($activeSlave.lips-$activeSlave.lipsImplant > 0)>>
-				| <<link "Lip reducers">><<set $activeSlave.drugs = "lip atrophiers">><<SlaveInteractDrugs>><</link>>
-			<<else>>
-				| Lip reducers
-			<</if>>
-		<</if>>
-		<<if $growthStim == 1>>
-			<<if canImproveHeight($activeSlave)>>
-				| <<link "Growth Stimulants">><<set $activeSlave.drugs = "growth stimulants">><<SlaveInteractDrugs>><</link>>
-			<<else>>
-				| Growth Stimulants
-			<</if>>
-		<</if>>
-		| <<link "Fertility">><<set $activeSlave.drugs = "fertility drugs">><<SlaveInteractDrugs>><</link>>
-		<<if ($seeHyperPreg == 1) && ($activeSlave.indentureRestrictions < 1) && ($superFertilityDrugs == 1) && ($activeSlave.breedingMark != 1 || $propOutcome == 0 || $eugenicsFullControl == 1 || $arcologies[0].FSRestart == "unset")>>
-			| <<link "Fertility+">><<set $activeSlave.drugs = "super fertility drugs">><<SlaveInteractDrugs>><</link>>
-		<</if>>
-		<<if ($activeSlave.dick > 0)>>
-			<<if ($activeSlave.dick < 10)>>
-				| <<link "Penis enhancement">><<set $activeSlave.drugs = "penis enhancement">><<SlaveInteractDrugs>><</link>>
-			<<else>>
-				| Penis enhancement
-			<</if>>
-		<<else>>
-			<<if ($activeSlave.clit < 5)>>
-				| <<link "Clitoris enhancement">><<set $activeSlave.drugs = "penis enhancement">><<SlaveInteractDrugs>><</link>>
-			<<else>>
-				| Clitoris enhancement
-			<</if>>
-		<</if>>
-		<<if $arcologies[0].FSAssetExpansionistResearch == 1>>
-			<<if ($activeSlave.dick > 0)>>
-				<<if ($activeSlave.dick < 31)>>
-					| <<link "Hyper penis enhancement">><<set $activeSlave.drugs = "hyper penis enhancement">><<SlaveInteractDrugs>><</link>>
-				<<else>>
-					| Hyper penis enhancement
-				<</if>>
-			<<else>>
-				<<if ($activeSlave.clit < 5)>>
-					| <<link "Hyper clitoris enhancement">><<set $activeSlave.drugs = "penis enhancement">><<SlaveInteractDrugs>><</link>>
-				<<else>>
-					| Hyper clitoris enhancement
-				<</if>>
-			<</if>>
-		<</if>>
-		<<if $arcologies[0].FSSlimnessEnthusiastResearch == 1>>
-			<<if ($activeSlave.dick > 1)>>
-				| <<link "Penis reducers">><<set $activeSlave.drugs = "penis atrophiers">><<SlaveInteractDrugs>><</link>>
-			<<elseif $activeSlave.dick == 1>>
-				| Penis reducers
-			<</if>>
-		<</if>>
-		<<if $activeSlave.dick > 0 && $activeSlave.dick < 11 && !canAchieveErection($activeSlave) && $activeSlave.chastityPenis != 1>>
-			| <<link "Erectile dysfunction circumvention">><<set $activeSlave.drugs = "priapism agents">><<SlaveInteractDrugs>><</link>>
-		<</if>>
-		<<if ($activeSlave.balls > 0)>>
-			| <<link "Testicle enhancement">><<set $activeSlave.drugs = "testicle enhancement">><<SlaveInteractDrugs>><</link>>
-			<<if $arcologies[0].FSAssetExpansionistResearch == 1>>
-				| <<link "Hyper testicle enhancement">><<set $activeSlave.drugs = "hyper testicle enhancement">><<SlaveInteractDrugs>><</link>>
-			<</if>>
-		<</if>>
-		<<if $arcologies[0].FSSlimnessEnthusiastResearch == 1>>
-			<<if ($activeSlave.balls > 1)>>
-				| <<link "Testicle reducers">><<set $activeSlave.drugs = "testicle atrophiers">><<SlaveInteractDrugs>><</link>>
-			<<elseif $activeSlave.balls == 1>>
-				| Testicle reducers
-			<</if>>
-			<<if ($activeSlave.clit > 0)>>
-				| <<link "Clitoris reducers">><<set $activeSlave.drugs = "clitoris atrophiers">><<SlaveInteractDrugs>><</link>>
-			<</if>>
-			<<if ($activeSlave.labia > 0)>>
-				| <<link "Labia reducers">><<set $activeSlave.drugs = "labia atrophiers">><<SlaveInteractDrugs>><</link>>
-			<</if>>
-		<</if>>
-		<<if $arcologies[0].FSYouthPreferentialistResearch == 1>>
-			<<if ($activeSlave.visualAge > 18)>>
-				| <<link "Anti-aging cream">><<set $activeSlave.drugs = "anti-aging cream">><<SlaveInteractDrugs>><</link>>
-			<<else>>
-				| Anti-aging cream
-			<</if>>
-		<</if>>
-		| <<link "Steroids">><<set $activeSlave.drugs = "steroids">><<SlaveInteractDrugs>><</link>>
-		<<if $arcologies[0].FSSlimnessEnthusiastResearch == 1>>
-			<<if ($activeSlave.weight > -95)>>
-				| <<link "Weight loss pills">><<set $activeSlave.drugs = "appetite suppressors">><<SlaveInteractDrugs>><</link>>
-			<<else>>
-				| Weight loss pills
-			<</if>>
-		<</if>>
-		<<if $precociousPuberty == 1 && $pubertyHormones == 1 && ($activeSlave.breedingMark != 1 || $propOutcome == 0 || $eugenicsFullControl == 1 || $arcologies[0].FSRestart == "unset")>>
-			<<if ($activeSlave.ovaries == 1 || $activeSlave.mpreg == 1) && $activeSlave.pubertyXX == 0>>
-				| <<link "Female hormone injections">><<set $activeSlave.drugs = "female hormone injections">><<SlaveInteractDrugs>><</link>>
-			<</if>>
-			<<if $activeSlave.balls > 0 && $activeSlave.pubertyXY == 0>>
-				| <<link "Male hormone injections">><<set $activeSlave.drugs = "male hormone injections">><<SlaveInteractDrugs>><</link>>
-			<</if>>
-		<</if>>
-		| <<link "Hormone enhancers">><<set $activeSlave.drugs = "hormone enhancers">><<SlaveInteractDrugs>><</link>>
-		| <<link "Hormone blockers">><<set $activeSlave.drugs = "hormone blockers">><<SlaveInteractDrugs>><</link>>
-		<<if $activeSlave.boobs > 250 && $activeSlave.boobShape != "saggy" && $purchasedSagBGone == 1>>
-			| <<link "Sag-B-Gone breast lifting cream">><<set $activeSlave.drugs = "sag-B-gone">><<SlaveInteractDrugs>><</link>>
-		<</if>>
-	<</if>>
-	<</replace>>
-<</widget>>
-
 <<widget "Master">><<if def $args[0]>><<run Enunciate($args[0])>><<elseif ndef $titleEnunciate>><<run Enunciate($activeSlave)>><</if>>$titleEnunciate<</widget>>
 <<widget "say">><<if (def $args[0]) && $sayEnunciate != "lisp">>$args[0]<<else>>$sayEnunciate<</if>><</widget>>
 <<widget "s">>$sEnunciate<</widget>>