diff --git a/Changelog.txt b/Changelog.txt
index 435c67f44793cd11b639175e62e04216aa7932d6..a255957cebf9dd1b053ee9dec4c0c7e1a5821db3 100644
--- a/Changelog.txt
+++ b/Changelog.txt
@@ -8,6 +8,7 @@ Pregmod
 	-slave performance listing
 	-debug beauty/FResult listing
 	-reminder system
+	-engineering & warfare personal attention options
 	-porn/ads code optimization
 	-expanded racial eye, hair and skin color ranges
 	-royal blood event can now use real dynasties
diff --git a/slave variables documentation - Pregmod.txt b/slave variables documentation - Pregmod.txt
index 077a7444f787f8b51b8f48b3331a05f7327b454a..f714f85bc48bf50093ea454ffe8f8833a6415b55 100644
--- a/slave variables documentation - Pregmod.txt	
+++ b/slave variables documentation - Pregmod.txt	
@@ -2030,6 +2030,7 @@ teeth type
 accepts string
 "normal"
 "crooked"
+"gapped"
 "straightening braces"
 "cosmetic braces"
 "removable"
diff --git a/src/endWeek/healthFunctions.js b/src/endWeek/healthFunctions.js
index 82f3b6b4ac2d774ae7a07e8277a9e6d40f510210..f613c89fa0b1ee9e3ae97ebb567c73f5f253c652 100644
--- a/src/endWeek/healthFunctions.js
+++ b/src/endWeek/healthFunctions.js
@@ -375,8 +375,10 @@ window.tired = function tired(slave) {
 			assignment += 18; // A tough assignment with a girl that doesn't use her provided room unless it is attached to yours.
 		} else if (["be your Head Girl"].includes(slave.assignment)) {
 			assignment += 22; // Always busy. Could benefit from a helper...
-		} else if (["be the Attendant", "be the Matron", "be the Stewardess", "be the Milkmaid", "be the Farmer", "be the DJ", "be the Madam", "be the Schoolteacher", "be the Wardeness", "be the Nurse"].includes(slave.assignment)) { // Heads are very busy, but always have luxurious conditions, so it balances out, save for the two exceptions
+		} else if (["be the Matron", "be the Stewardess", "be the Milkmaid", "be the Farmer", "be the DJ", "be the Madam", "be the Schoolteacher", "be the Wardeness", "be the Nurse"].includes(slave.assignment)) { // Heads are very busy, but always have luxurious conditions, so it balances out, save for the exceptions
 			assignment += 15;
+		} else if (["be the Attendant", "be your Concubine"].includes(slave.assignment)) { // Cushy head positions
+			assignment += 5;
 		} else if (["recruit girls"].includes(slave.assignment)) {
 			if (H.tired > 80) { // I'll take it easy a week to better recruit the next. 
 				assignment -= 20;
diff --git a/src/endWeek/saWhore.js b/src/endWeek/saWhore.js
index b2536b7f042d6632e51cec3d0110c58e1ea1f83a..1fac1a68a7ac93f4b345f7fd0fe90d8ffecc4aaf 100644
--- a/src/endWeek/saWhore.js
+++ b/src/endWeek/saWhore.js
@@ -1588,6 +1588,8 @@ window.saWhore = (function saWhore() {
 			}
 			if (slave.assignment === "work in the brothel") {
 				cashX(cashVign, "whoreBrothel", slave);
+			} else if (slave.assignment === "be the Madam") {
+				cashX(cash, "whoreBrothel", slave);
 			} else if (slave.assignment === "whore") {
 				cashX(cashVign, "whore", slave);
 			} else {
diff --git a/src/endWeek/saWorkTheFarm.js b/src/endWeek/saWorkTheFarm.js
index 205340cbc2a2098e01b3742a64d69a3bee491c38..31eb4fbf8e3cdb2b71286fc67d066477327d83f1 100644
--- a/src/endWeek/saWorkTheFarm.js
+++ b/src/endWeek/saWorkTheFarm.js
@@ -2,18 +2,129 @@
  * @param {App.Entity.SlaveState} slave
  * @returns {string}
  */
-window.saWorkTheFarm = function saWorkTheFarm(slave) {
-	"use strict";
+window.saWorkTheFarm = function(slave) {
 	const arcology = V.arcologies[0];
-	/* eslint-disable no-unused-vars*/
 	const {
-		he, him, his, hers, himself, boy, He, His
-	} = getPronouns(slave);
-	/* eslint-enable */
-	const incomeStats = getSlaveStatisticData(slave, V.facility.farmyard);
+			he, him, his, hers, himself, boy, He, His
+		} = getPronouns(slave),
+		incomeStats = getSlaveStatisticData(slave, V.facility.farmyard);
 
+	let food = Math.trunc(App.Facilities.Farmyard.foodAmount(slave));
 	let t = `works as a farmhand this week. `;
 
+
+
+	const foodTotal = (slave, food) => {
+		t += foodFarmer();
+		t += foodDevotion(slave);
+		t += foodHealth(slave);
+		t += foodMuscles(slave);
+		t += foodWeight(slave);
+		t += foodSight(slave);
+		t += foodHearing(slave);
+
+		t += V.foodMarket ? `As a result, ${he} produces <span class="chocolate">${massFormat(food)}</span> of food over the week. ` : ``;
+	};
+
+	const foodFarmer = () => {
+		if (V.Farmer) {
+			return `${V.Farmer.slaveName} watches over ${him}, making sure that ${he} doesn't slack off and works as hard as ${he} should. `;
+		}
+	};
+
+	const foodDevotion = slave => {
+		if (slave.devotion > 50) {
+			return `${He}'s so devoted to you that ${he} works harder and produces more food. `;
+		} else if (slave.devotion < -50) {
+			return `${He}'s so resistant that ${he} doesn't work as hard, and thus produces less food. `;
+		} else {
+			// TODO: third case for neutral?
+		}
+	};
+
+	const foodHealth = slave => {
+		foodHealthCondition(slave);
+		foodHealthIllness(slave);
+	};
+
+	const foodHealthCondition = slave => {
+		if (slave.health.condition > 50) {
+			return `${His} shining health helps ${him} work harder and longer. `;
+		} else if (slave.health.condition < -50) {
+			return `${His} poor health impedes ${his} ability to work efficiently. `;
+		} else {
+			// TODO: third case?
+		}
+	};
+
+	const foodHealthIllness = slave => {
+		if (slave.health.illness > 0 || slave.health.tired > 60) {
+			let t = ` ${He} performed worse this week due to<span class="red">`;
+			if (slave.health.illness === 1) {
+				t += ` feeling under the weather`;
+			} else if (slave.health.illness === 2) {
+				t += ` a minor illness`;
+			} else if (slave.health.illness === 3) {
+				t += ` being sick`;
+			} else if (slave.health.illness === 4) {
+				t += ` being very sick`;
+			} else if (slave.health.illness === 5) {
+				t += ` a terrible illness`;
+			}
+			if (slave.health.illness > 0 && slave.health.tired > 60) {
+				t += ` and`;
+				foodHealthTired(slave);
+			}
+
+			t += `.</span> `;
+
+			return t;
+		}
+	};
+
+	const foodHealthTired = slave => {
+		if (slave.health.tired > 90) {
+			return ` exhaustion`;
+		} else if (slave.health.tired > 60) {
+			return ` being tired`;
+		}
+	};
+
+	const foodMuscles = slave => {
+		if (slave.muscles > 50) {
+			return `${His} muscular form helps ${him} work better, increasing ${his} productivity. `;
+		} else if (slave.muscles < -50) {
+			return `${He} is so weak that ${he} is not able to work effectively. `;
+		} else {
+			// TODO: third case?
+		}
+	};
+
+	const foodWeight = slave => {
+		return slave.weight > 95 ? `${He} is so overweight that ${he} has to stop every few minutes to catch ${his} breath, and so ${his} productivity suffers. ` : null;
+	};
+
+	const foodSight = slave => {
+		if (!canSee(slave)) {
+			t += `${His} blindness makes it extremely difficult for ${him} to work, severely limiting ${his} production. `;
+		} else if (!canSeePerfectly(slave)) {
+			t += `${His} nearsightedness makes it harder for ${him} to work as hard as ${he} otherwise would. `;
+		} else {
+			// TODO: third case?
+		}
+	};
+
+	const foodHearing = slave => {
+		if (slave.hears === -1) {
+			return `${He} is hard-of-hearing, which gets in the way of ${his} work whenever ${he} misses directions${V.Farmer ? ` from ${V.Farmer.slaveName}` : ``}. `;
+		} else if (slave.hears < -1) {
+			return `${He} is deaf, which gets in the way of ${his} work whenever ${he} misses directions${V.Farmer ? ` from ${V.Farmer.slaveName}` : ``}. `;
+		} else {
+			// TODO: third case?
+		}
+	};
+
+
 	if (V.Farmer !== 0) {
 		t += `While there, ${he} benefits from ${V.Farmer.slaveName}'s `;
 		if (V.Farmer.physicalAge < 21) {
@@ -38,80 +149,17 @@ window.saWorkTheFarm = function saWorkTheFarm(slave) {
 
 	// Open Food Production
 
-	let food = Math.trunc(App.Facilities.Farmyard.foodAmount(slave));
-	if (food < 1) {
-		food = 1;
-	}
-	V.food += food;
-	V.foodTotal += food;
-	incomeStats.food += food;
-
-	if (V.Farmer) {
-		t += `${V.Farmer.slaveName} watches over ${him}, making sure that ${he} doesn't slack off and works as hard as ${he} should. `;
-	}
-	if (slave.devotion > 50) {
-		t += `${He}'s so devoted to you that ${he} works harder and produces more food. `;
-	} else if (slave.devotion < -50) {
-		t += `${He}'s so resistant that ${he} doesn't work as hard, and thus produces less food.`;
-	}
-	if (slave.health.condition > 50) {
-		t += `${His} shining health helps ${him} really work hard. `;
-	} else if (slave.health.condition < -50) {
-		t += `${His} poor health impedes ${his} ability to work efficiently. `;
-	}
-	if (slave.muscles > 50) {
-		t += `${His} muscular form helps ${him} work better, increasing ${his} productivity. `;
-	} else if (slave.muscles < -50) {
-		t += `${He} is so weak that ${he} is not able to work effectively. `;
-	}
-	if (slave.weight > 95) {
-		t += `${He} is so overweight that ${he} has to stop every few minutes to catch ${his} breath, and so ${his} productivity suffers. `;
-	}
-	if (!canSee(slave)) {
-		t += `${His} blindness makes it extremely difficult for ${him} to work, severely limiting ${his} production. `;
-	} else if (!canSeePerfectly(slave)) {
-		t += `${His} nearsightedness makes it harder for ${him} to work as hard as ${he} otherwise would. `;
-	}
-	if (slave.hears === -1) {
-		t += `${He} is hard-of-hearing, which gets in the way of ${his} work whenever ${he} misses directions`;
-		if (V.Farmer) {
-			t += ` from ${V.Farmer.slaveName}`;
+	if (V.foodMarket) {
+		if (food < 1) {
+			food = 1;
 		}
-		t += `. `;
-	} else if (slave.hears < -1) {
-		t += `${He} is deaf, which gets in the way of ${his} work whenever ${he} misses directions`;
-		if (V.Farmer) {
-			t += ` from ${V.Farmer.slaveName}`;
-		}
-		t += `. `;
-	}
+		V.food += food;
+		V.foodTotal += food;
+		incomeStats.food += food;
 
-	if (slave.health.illness > 0 || slave.health.tired > 60) {
-		t += ` ${He} performed worse this week due to<span class="red">`;
-		if (slave.health.illness === 1) {
-			t += ` feeling under the weather`;
-		} else if (slave.health.illness === 2) {
-			t += ` a minor illness`;
-		} else if (slave.health.illness === 3) {
-			t += ` being sick`;
-		} else if (slave.health.illness === 4) {
-			t += ` being very sick`;
-		} else if (slave.health.illness === 5) {
-			t += ` a terrible illness`;
-		}
-		if (slave.health.illness > 0 && slave.health.tired > 60) {
-			t += ` and`;
-		}
-		if (slave.health.tired > 90) {
-			t += ` exhaustion`;
-		} else if (slave.health.tired > 60) {
-			t += ` being tired`;
-		}
-		t += `.</span> `;
+		foodTotal(slave, food);
 	}
 
-	t += `As a result, ${he} produces <span class="chocolate">${massFormat(food)}</span> of food over the week. `;
-
 	// Close Food Production
 
 	// Open Shows
@@ -174,7 +222,7 @@ window.saWorkTheFarm = function saWorkTheFarm(slave) {
 		}
 		if (arcology.FSGenderFundamentalist !== "unset") {
 			if (slave.pregWeek > 16) {
-				t += `${His} patrons <span class="green">approve</span> of the fact that ${he} is sporting a baby bump.`;
+				t += `${His} patrons <span class="green">approve</span> of the fact that ${he} is sporting a baby bump. `;
 			} else {
 				// TODO: also this
 			}
@@ -299,7 +347,7 @@ window.saWorkTheFarm = function saWorkTheFarm(slave) {
 		// Close FS Subsection
 
 		if (setup.entertainmentCareers.includes(slave.career)) {
-			t += ` ${He} has experience with putting on shows from ${his} life before ${he} was a slave, making ${him} more effective at putting on shows.`;
+			t += ` ${He} has experience with putting on shows from ${his} life before ${he} was a slave, making ${him} more effective at putting on shows. `;
 		}
 		if (setup.farmerCareers.includes(slave.career)) { // TODO: does this even make sense to include?
 			// TODO: write this
@@ -628,6 +676,5 @@ window.saWorkTheFarm = function saWorkTheFarm(slave) {
 				break;
 		}
 	}
-
 	return t;
 };
diff --git a/src/facilities/farmyard/farmyard.tw b/src/facilities/farmyard/farmyard.tw
index ade467b82eb61556ab69cdfe7065d8c37c76d613..a9660ae3b456dcc824adf12de27d09e2db3f9573 100644
--- a/src/facilities/farmyard/farmyard.tw
+++ b/src/facilities/farmyard/farmyard.tw
@@ -2,6 +2,7 @@
 
 /* TODO: add "plots" of "crops" */
 /* TODO: allow slaves that can't walk to put on shows */
+/* TODO: write placeholders */
 
 <<set $nextButton = "Back to Main", $nextLink = "Main", $returnTo = "Farmyard", $showEncyclopedia = 1, $encyclopedia = "Farmyard">>
 
@@ -104,7 +105,7 @@
 	</div>
 </div>
 <span id="menials">
-<br><br><br>
+<br>
 <<if $farmMenials > 0>>
 	Assigned here are $farmMenials slaves working to produce as much food as possible.
 <</if>>
@@ -196,7 +197,7 @@
 	<<if $farmyardShows == 1 && (_CL > 0 || _HL > 0 || _FL > 0)>>
 		Slaves ''are'' putting on shows with animals.
 		[[End shows|Farmyard][$farmyardShows = 0, $farmyardBreeding = 0, $farmyardRestraints = 0]]
-		<<if $seeBestiality == 1>>
+		<<if $seeBestiality>>
 			<br>
 			<<if $farmyardBreeding == 1>>
 				Slaves ''are'' being bred with animals.
diff --git a/src/facilities/farmyard/farmyardWidgets.js b/src/facilities/farmyard/farmyardWidgets.js
new file mode 100644
index 0000000000000000000000000000000000000000..40946fe274441511839eeb4231640906b68629aa
--- /dev/null
+++ b/src/facilities/farmyard/farmyardWidgets.js
@@ -0,0 +1,483 @@
+// MAIN FUNCTIONS
+
+App.Facilities.Farmyard.farmyardReport = () => {
+	const
+		slaves = V.slaves,
+		Farmer = V.Farmer,
+		FL = V.FarmyardiIDs.length;
+
+	let
+		t = ``,
+		profits = 0,
+		foodWeek = 0;
+	let he, him, his, hers, himself, girl, loli, He, His;   // TODO: alternative method?
+
+
+
+	// FARMER
+
+	const farmerHealth = slave => {
+		if (slave.health.condition < -80) {
+			improveCondition(slave, 20);
+		} else if (slave.health.condition < -40) {
+			improveCondition(slave, 15);
+		} else if (slave.health.condition < 0) {
+			improveCondition(slave, 10);
+		} else if (slave.health.condition < 90) {
+			improveCondition(slave, 7);
+		}
+	};
+
+	const farmerFetish = slave => {
+		if (slave.fetish !== 'dom') {
+			if (fetishChangeChance(slave) > jsRandom(0, 100)) {
+				slave.fetishKnown = 1;
+				slave.fetish = 'dom';
+				return 1;
+			}
+		} else if (!slave.fetishKnown) {
+			slave.fetishKnown = 1;
+			return 1;
+		} else {
+			slave.fetishStrength += 4;
+			return 2;
+		}
+	};
+
+	const farmerFetishEffects = (fetish = 0) => {
+		if (fetish === 1) {
+			return `${He} isn't above sampling the merchandise ${himself}; before long it's obvious to ${his} workers that ${he} <span class="lightcoral">really likes fucking them.</span> `;
+		} else if (fetish === 2) {
+			return `${He}'s careful that all of the farmhands under ${his} supervision are all ready to work every morning, and ${he} <span class="lightsalmon">becomes more dominant.</span> `;
+		}
+	};
+
+	const farmerSkill = slave => {
+		let t = ``;
+
+		if (slave.skill.farmer <= 10) {
+			t += `Though ${slave.slaveName} does ${his} best to manage the farmyard, with ${his} lack of skill ${he} can do little. `;
+		} else if (slave.skill.farmer <= 30) {
+			t += `${slave.slaveName}'s basic skills marginally <span class="yellowgreen">improve</span> business at ${V.farmyardName}. `;
+		} else if (slave.skill.farmer <= 60) {
+			t += `${slave.slaveName}'s skills <span class="yellowgreen">improve</span> business at ${V.farmyardName}. `;
+		} else if (slave.skill.farmer < 100) {
+			t += `${slave.slaveName}'s skills greatly <span class="yellowgreen">improve</span> business at ${V.farmyardName}. `;
+		} else {
+			t += `${slave.slaveName}'s mastery immensely <span class="yellowgreen">improves</span> business at ${V.farmyardName}. `;
+		}
+
+		t += slave.actualAge > 35 ?`${His} age and experience also contribute. ` : ``;
+
+		return t;
+	};
+
+	const farmerCashBonus = slave => {
+		let FarmerCashBonus = Math.min(0.2, slave.skill.farmer * 0.002);
+
+		FarmerCashBonus += slave.intelligence + slave.intelligenceImplant > 15 ? 0.05 : 0;
+		FarmerCashBonus += slave.dick > 2 && canPenetrate(slave) ? 0.05 : 0;
+		FarmerCashBonus += !canSmell(slave) ? 0.05 : 0;
+
+		if (slave.actualAge > 35) {
+			FarmerCashBonus += 0.05;
+		} else if (!V.AgePenalty) {
+			FarmerCashBonus += 0.05;
+		}
+
+		if (setup.farmerCareers.includes(slave.career)) {
+			FarmerCashBonus += 0.05;
+			if (slave.skill.farmer >= V.masteredXP) {
+				FarmerCashBonus += 0.05;
+			}
+		} else if (slave.skill.farmer >= V.masteredXP) {
+			FarmerCashBonus += 0.05;
+		}
+
+		if (Farmer.relationshipTarget === slave.ID) {
+			FarmerCashBonus -= 0.05;
+		} else if (V.familyTesting && areRelated(Farmer, slave) > 0) {
+			FarmerCashBonus += 0.05;
+		} else if (Farmer.relationTarget === slave.ID && !V.familyTesting) {
+			FarmerCashBonus += 0.05;
+		}
+
+		return FarmerCashBonus;
+	};
+
+
+	const farmerExperience = slave => {
+		if (setup.farmerCareers.includes(slave.career)) {
+			return `${He} has experience from ${his} life before ${he} was a slave that helps ${him} in the difficult life of managing animals and property. `;
+		} else if (slave.skill.farmer >= V.masteredXP) {
+			return `${He} has experience from working for you that helps ${him} in the difficult life of managing animals and property. `;
+		} else {
+			slave.skill.farmer += jsRandom(1, Math.ceil((slave.intelligence + slave.intelligenceImplant) / 32));
+		}
+	};
+
+
+	const farmerDick = slave => {
+		if (slave.dick > 2 && canPenetrate(slave)) {
+			return `${His} turgid dick helps ${him} manage ${his} workers. `;
+		}
+	};
+
+
+	const farmerRelationshipSlaves = (length, Farmer) => {
+		for (let i = length; i--;) {
+			const
+				s = V.slaveIndices[V.FarmyardiIDs[i]],
+				slave = V.slaves[s],
+				p = getPronouns(Farmer);
+
+			let t = ``;
+
+			if (Farmer.rivalryTarget === slave.ID) {
+				t += `${p.He} forces ${p.his} ${rivalryTerm(Farmer)} to service all the slaves in ${V.farmyardName}. `;    // TODO: not sure about this
+				slave.devotion -= 2; slaves.trust -= 2;
+				if (canDoVaginal(slave)) {
+					seX(slave, 'vaginal', 'public', 'penetrative', 10);
+				}
+				if (canDoAnal(slave)) {
+					seX(slave, 'anal', 'public', 'penetrative', 10);
+				}
+				seX(slave, 'oral', 'public', 'penetrative', 10);
+				if (jsRandom(1, 100) > 65) {
+					Farmer.rivalry++; slave.rivalry++;
+				}
+			} else if (Farmer.relationshipTarget === slave.ID) {
+				t += `${p.He} dotes over ${p.his} ${relationshipTerm(Farmer)}, ${slave.slaveName}, making sure ${he} isn't worked too hard, but unfortunately manages to get in the way of ${his} work. `;
+				slave.devotion++;
+			} else if (V.familyTesting && areRelated(Farmer, slave) > 0) {
+				t += `${p.He} pays special attention to ${p.his} ${relativeTerm(Farmer.ID, slave.ID)}, ${slave.slaveName}, making sure ${he} is treated well and showing off ${his} skills. `; // TODO: does this need rewriting?
+				slave.trust++;
+			} else if (Farmer.relationTarget === slave.ID && !V.familyTesting) {
+				t += `${p.He} pays special attention to ${p.his} ${slave.relation}, ${slave.slaveName}, making sure ${he} is treated well and showing off ${his} skills. `; // TODO: does this need rewriting?
+				slave.trust++;
+			}
+
+			return t;
+		}
+	};
+
+	const farmerWorks = slave => {
+		let
+			t = ``,
+			oldCash = V.cash,
+			seed,
+			beauty;
+
+		if (V.showEWD) {
+			t += `<br>&nbsp;&nbsp;&nbsp;&nbsp;${He} ${saWorkTheFarm(slave)}`;
+		} else {
+			saWorkTheFarm(slave);
+		}
+
+		seed = V.cash - oldCash;
+		cashX(Math.trunc(0.5 * seed), 'farmyard');
+		seed = Math.trunc(1.5 * seed);
+		profits += seed;
+		beauty = Beauty(V.activeSlave);
+
+		t += `<br>&nbsp;&nbsp;&nbsp;&nbsp;Since ${he} doesn't have enough farmhands to manage to keep ${him} busy, ${he} sees ${beauty} customers ${himself} (${Math.trunc(beauty / 7)} a day), earning you <span class="yellowgreen">${cashFormat(seed)}</span> ${He} can charge more for ${his} time, since many citizens find it erotic to fuck the Farmer. `;
+
+		return t;
+	};
+
+	const farmerEndWeek = slave => {
+		let t = ``;
+
+		if (V.showEWD) {
+			t += `<br><br>`;
+			/* 000-250-006 */   // TODO: legacy - needed?
+			if (V.seeImages && V.seeReportImages) {
+				t += `<div class="imageRef tinyImg">
+					  ${SlaveArt(slave, 0, 0)}
+				  </div>`;
+			}
+			/* 000-250-006 */
+			t += `<span class="slave-name">${SlaveFullName(slave)}</span> is serving as the Farmer. `;
+			t += `<br>&nbsp;&nbsp;&nbsp;&nbsp;`;
+			t += saChoosesOwnClothes(slave);
+			t += `<<include "SA rules">>`;
+			t += `<<include "SA diet">>`;
+			t += `<<include "SA long term effects">>`;
+			t += `<<include "SA drugs">>`;
+			t += `<<include "SA relationships">>`;
+			t += `<<include "SA rivalries">>`;
+			t += `<br><<include "SA devotion">>`;
+		} else {
+			saChoosesOwnClothes(slave);
+			t += `<<silently>><<include "SA rules">><</silently>>`;
+			t += `<<silently>><<include "SA diet">><</silently>>`;
+			t += `<<silently>><<include "SA long term effects">><</silently>>`;
+			t += `<<silently>><<include "SA drugs">><</silently>>`;
+			t += `<<silently>><<include "SA relationships">><</silently>>`;
+			t += `<<silently>><<include "SA rivalries">><</silently>>`;
+			t += `<<silently>><br><<include "SA devotion">><</silently>>`;
+		}
+
+		return t;
+	};
+
+	const farmerRelationshipPC = slave => slave.relationship === -3 && slave.devotion > 50 ? `As your loving ${wife}, ${he} does ${his} best to ensure ${V.farmyardName} runs smoothly. ` : ``;
+
+	const farmerAgeSkill = slave => slave.actualAge > 35 ? `${His} age and experience also contribute. ` : ``;
+
+	const farmerIntelligence = slave => slave.intelligence + slave.intelligenceImplant > 15 ? `${He} is a clever manager. ` : ``;
+
+	const farmerSmell = slave => !canSmell(slave) ? `${His} lack of a sense of smell protects ${him} from that omnipresent barnyard stench. ` : ``;
+
+	const farmerIntro = slave => `&nbsp;&nbsp;&nbsp;&nbsp;${SlaveFullName(slave)} is serving as the Farmer. `;
+
+	const farmerDevotion = slave => slave.devotion < 45 ? slave.devotion += 5 : null;
+
+	const farmerTrust = slave => slave.trust < 45 ? slave.trust += 5 : null;
+
+	const farmerLivingRules = slave => slave.rules.living !== 'luxurious' ? slave.rules.living = 'luxurious' : null;
+
+
+
+	// FARMHANDS
+
+	const farmhandCount = count => count > 0 ? `&nbsp;&nbsp;&nbsp;&nbsp;There ${count !== 1 ? `are ${count} farmhands` : `is one farmhand`} working out of ${V.farmyardName}.` : ``;
+
+	const farmhandLivingRules = slave => {
+		switch (V.farmyardDecoration) {
+			case 'Degradation':
+			case 'standard':
+				slave.rules.living = 'spare';
+				break;
+			case 'Roman Revivalist':
+				slave.rules.living = 'luxurious';
+				break;
+			default:
+				slave.rules.living = 'normal';
+		}
+		// TODO: should FS with 'spare' living rules cause minor health damage and devotion / trust loss?
+	};
+
+	const farmhandHealth = slave => {
+		if (slave.health.condition < -80) {
+			improveCondition(slave, 20);
+		} else if (slave.health.condition < -40) {
+			improveCondition(slave, 15);
+		} else if (slave.health.condition < 0) {
+			improveCondition(slave, 10);
+		} else if (slave.health.condition < 90) {
+			improveCondition(slave, 7);
+		}
+	};
+
+	// TODO: check over all of these numbers, make sure they make sense
+	const farmhandDevotion = slave => {
+		if (slave.devotion <= 20 && slave.trust >= -20) {
+			slave.devotion -= 5; slave.trust -= 5;
+		} else if (slave.devotion < 45) {
+			slave.devotion += 4;
+		} else if (slave.devotion > 50) {
+			slave.devotion -= 4;
+		}
+	};
+
+	const farmhandEndWeek = slave => {
+		let t = ``;
+
+		if (V.showEWD) {
+			t += `<br><br>`;
+			/* 000-250-006 */   // TODO: legacy - needed?
+			if (V.seeImages && V.seeReportImages) {
+				t += `<div class="imageRef tinyImg">
+					  ${SlaveArt(slave, 0, 0)}
+				  </div>`;
+			}
+			/* 000-250-006 */
+			t += `<span class="slave-name">${SlaveFullName(slave)}</span> ${slave.choosesOwnAssignment === 2 ? `<<include "SA chooses own job>>` : `is working out of ${V.farmyardName}`}. `;
+			t += `<br>&nbsp;&nbsp;&nbsp;&nbsp;${He} ${saWorkTheFarm(slave)}`;
+			t += `<br>&nbsp;&nbsp;&nbsp;&nbsp;`;
+			t += saChoosesOwnClothes(slave);
+			t += `<<include "SA rules">>`;
+			t += `<<include "SA diet">>`;
+			t += `<<include "SA long term effects">>`;
+			t += `<<include "SA drugs">>`;
+			t += `<<include "SA relationships">>`;
+			t += `<<include "SA rivalries">>`;
+			t += `<br><<include "SA devotion">>`;
+		} else {
+			t += `<<silently>><<include "SA chooses own job">><</silently>>`;
+			t += saChoosesOwnClothes(slave);
+			t += `<<silently>><<include "SA rules">><</silently>>`;
+			t += `<<silently>><<include "SA diet">><</silently>>`;
+			t += `<<silently>><<include "SA long term effects">><</silently>>`;
+			t += `<<silently>><<include "SA drugs">><</silently>>`;
+			t += `<<silently>><<include "SA relationships">><</silently>>`;
+			t += `<<silently>><<include "SA rivalries">><</silently>>`;
+			t += `<<silently>><br><<include "SA devotion">><</silently>>`;
+		}
+
+		return t;
+	};
+
+	const farmhandProfit = slave => {
+		let incomeStats = getSlaveStatisticData(slave, slave.assignment === Job.FARMYARD ? V.facility.farmyard : undefined);
+		return incomeStats.income;
+	};
+
+	const farmhandFood = slave => {
+		let
+			incomeStats = getSlaveStatisticData(slave, slave.assignment === Job.FARMYARD ? V.facility.farmyard : undefined),
+			foodWeek = 0;
+
+		foodWeek += incomeStats.food;
+		if (V.farmMenials > 0) {
+			foodWeek += (V.farmMenials * 350);
+		}
+
+		return foodWeek;
+	};
+
+	const farmhandTrust = slave => slave.trust < 30 ? slave.trust += 5 : null;
+
+	const farmhandEnergy = slave => slave.energy > 40 && slave.energy < 95 ? slave.energy++ : null;
+
+	// FARMYARD
+
+	const farmyardStatsRecords = () => {
+		// TODO: check over these setters and remove those we don't need
+		let f = V.facility.farmyard;
+
+		f.farmhandIncome = 0;
+		f.customers = 0;
+		f.farmhandCosts = 0;
+		f.rep = 0;
+		f.adsCosts = V.farmyardAdsSpending;
+		f.maintenance = V.farmyard * V.facilityCost;
+		f.totalIncome = f.farmhandIncome + f.adsIncome;
+		f.totalExpenses = f.farmhandCosts + f.maintenance;
+		f.profit = f.totalIncome - f.totalExpenses;
+
+		for (let i of f.income.values()) {
+			f.farmhandIncome += i.income + i.adsIncome;
+			f.customers += i.customers;
+			f.farmhandCosts += i.cost;
+			f.rep += i.rep;
+		}
+	};
+
+	const farmyardDecoration = () => {
+		let t = ``;
+
+		// TODO: add checks for the different FSs
+		if (V.farmyardDecoration !== 'standard') {
+			if (!profits && !foodWeek) {
+				t += `<br>`;
+			}
+			t += `<br>${V.farmyardNameCaps}'s customer's enjoyed `;
+			if (V.seeBestiality && V.farmyardBreeding > 0 && (V.canines.length || V.hooved.length || V.felines.length)) {
+				t += `<span class="green">watching farmhands fuck animals in ${V.farmyardDecoration} surroundings.</span>`;
+			} else if (V.farmyardShows) {
+				t += `<span class="green">watching farmhands put on shows in ${V.farmyardDecoration} surroundings.</span>`;
+			} else {
+				// TODO: not sure about this one
+				t += `<span class="green">partaking of ${V.farmyardName}'s fine produce in its ${V.farmyardDecoration} décor.</span>`;
+			}
+		}
+
+		return t;
+	};
+
+	const farmyardProfit = (profit, foodWeek) => {
+		let t = ``;
+
+		if (profit || foodWeek) {
+			t += `<br><br>${V.farmyardNameCaps} `;
+			if (profit) {
+				t += `makes you <span class="yellowgreen">${cashFormat(Math.trunc(profit))}</span>`;
+			}
+			if (profit && foodWeek && V.foodMarket) {
+				t += ` and `;
+			}
+			if (foodWeek && V.foodMarket) {
+				t += `produced <span class="chocolate"> ${massFormat(foodWeek)}</span> of food`;
+			}
+			t += ` this week. `;
+		}
+
+		return t;
+	};
+
+	const farmyardStatsDisplay = () => `<<FarmyardStatistics 0>><<timed 50ms>><<replace #farmyardstats>><<FarmyardStatistics 1>><</replace>><</timed>>`;
+
+	t += `<span id="farmyardstats"></span>`;
+	SlaveSort.IDs(V.FarmyardiIDs);  // TODO: not sure if I called this correctly
+
+
+
+	// MAIN LOOP
+
+	if (Farmer) {
+		t += farmerHealth(Farmer);
+		t += farmerDevotion(Farmer);
+		t += farmerTrust(Farmer);
+		t += farmerLivingRules(Farmer);
+
+		getSlaveStatisticData(Farmer, V.facility.farmyard); // make sure we have registered living expenses
+
+		t += farmerIntro(Farmer);
+		t += farmerRelationshipPC(Farmer);
+		t += farmerFetishEffects(farmerFetish(Farmer));
+		t += farmerSkill(Farmer);
+		t += farmerCashBonus(Farmer);
+		t += farmerAgeSkill(Farmer);
+		t += farmerExperience(Farmer);
+		t += farmerIntelligence(Farmer);
+		t += farmerDick(Farmer);
+		t += farmerSmell(Farmer);
+		t += farmerRelationshipSlaves(FL, Farmer);
+		t += farmerWorks(Farmer);
+	}
+
+	t += farmhandCount(FL);
+
+	if (Farmer) {
+		t += farmerEndWeek(Farmer);
+	}
+
+	if (FL > 0) {
+		let oldCash = V.cash,
+			oldFood = V.food;
+
+		for (let i = FL; i--;) {
+			V.i = V.slaveIndices[V.FarmyardiIDs[i]];
+			const slave = slaves[V.i];
+
+			({
+				he, him, his, hers, himself, girl, He, His, loli
+			} = getPronouns(slave));
+
+			farmhandLivingRules(slave);
+			farmhandHealth(slave);
+			farmhandDevotion(slave);
+			farmhandTrust(slave);
+			farmhandEnergy(slave);
+			farmhandFood(slave);
+			profits += farmhandProfit(slave);
+
+			t += farmhandEndWeek(slave);
+		}
+
+		profits += V.cash - oldCash;    // FIXME: equal to 0 - what is this supposed to represent?
+		oldCash = V.cash;
+		foodWeek += V.food + oldFood;
+	}
+
+	farmyardStatsRecords();
+	t += farmyardProfit(profits, foodWeek);
+	t += farmyardDecoration();
+	t += farmyardStatsDisplay();
+
+	V.food += foodWeek;
+
+	return t;
+};
diff --git a/src/gui/css/mainStyleSheet.css b/src/gui/css/mainStyleSheet.css
index 8a2d2fb37eec264264cd106da7a914f030354100..4feb5c555324a164a4a9b4549c3fabaa7f63e3d2 100644
--- a/src/gui/css/mainStyleSheet.css
+++ b/src/gui/css/mainStyleSheet.css
@@ -212,7 +212,7 @@ span.zeroButton > a:hover { text-decoration: none; }
 .orange, .orange a, .stupid, .stupid a, .change.negative, .change.negative a, .defiant.careful, .defiant.careful a, .intro.question { color: orange } /* generally between red and green, and a lot of other places */
 .orangered, .orangered a, .defiant.inc, .defiant.inc a, .defiant.bold, .defiant.bold, education.neg a { color: orangered }
 .orchid, .orchid a { color: orchid } /* used once (wrong? */
-.pink, .pink a { color: pink } /* also fetish start ??? , and a lot of other stuff */
+.pink, .pink a, .slave.name.simple { color: pink } /* also fetish start ??? , and a lot of other stuff */
 .red, .red a, .health.dec, .health.dec a, .cash.dec, .cash.dec a, .flaw.gain, .flaw.gain a, .error, .error a, .elites.loss, .elites.loss a, .reputation.dec, .reputation.dec a, .warning, .warning a { color: red } /* also generally bad stuff */
 /* note: .error is for unexpected behaviour, .warning for player feedback */
 .seagreen, .seagreen a, .trust.prof-trusting, .trust.prof-trusting a { color: seagreen }
diff --git a/src/interaction/main/mainLinks.js b/src/interaction/main/mainLinks.js
index 9a5b0b02528653882c937f9492caf45f48918985..d7b8a0f59ae577da2977cbca36029d85f29810bc 100644
--- a/src/interaction/main/mainLinks.js
+++ b/src/interaction/main/mainLinks.js
@@ -17,6 +17,12 @@ App.UI.View.MainLinks = function() {
 			case "upkeep":
 				r += `You plan to focus on cleaning the penthouse this week.`;
 				break;
+			case "defensive survey":
+				r += `You plan to survey ${V.arcologies[0].name}'s defenses in person this week.`;
+				break;
+			case "development project":
+				r += `You plan on contributing to a local development project this week.`;
+				break;
 			case "smuggling":
 				r += `You plan to make some easy (but dirty) money this week.`;
 				break;
diff --git a/src/interaction/main/useGuard.js b/src/interaction/main/useGuard.js
index 50bbf2e4ab436580a455c2d646eb7284fe205c72..79977929ba8faf5b2504b4454b4063ab9fe77d70 100644
--- a/src/interaction/main/useGuard.js
+++ b/src/interaction/main/useGuard.js
@@ -1,6 +1,8 @@
-
-/* OPEN USEGUARD */
-App.Interact.UseGuard = function(slave) {
+/**
+ * @param slave
+ * @return {string}
+ */
+App.Interact.guardPose = function(slave) {
 	"use strict";
 	let r = ``;
 	/* eslint-disable no-unused-vars*/
@@ -279,4 +281,3 @@ App.Interact.UseGuard = function(slave) {
 	}
 	return r;
 };
-/* CLOSE USEGUARD */
diff --git a/src/js/DefaultRules.js b/src/js/DefaultRules.js
index 7d3741db213dba780bfbfb3af7ccc74a321766e3..1f1636d69e297e3badf34a6b4238ad1694a8269f 100644
--- a/src/js/DefaultRules.js
+++ b/src/js/DefaultRules.js
@@ -1,37 +1,37 @@
 // this code applies RA rules onto slaves
-
 window.DefaultRules = (function() {
 	"use strict";
 
 	const assignedTypes = {
-		"auto": {success:"has been automatically assigned", unable: "could not be assigned"},
-		"allowed": {success:"is allowed", unable: "could not be allowed"},
+		"auto": {success: "has been automatically assigned", unable: "could not be assigned"},
+		"allowed": {success: "is allowed", unable: "could not be allowed"},
 	};
-	const getAssignmentDescription = function({rule, slave, assignmentResult, append=null}) {
+	const getAssignmentDescription = function({rule, slave, assignmentResult, append = null}) {
 		const job = App.Utils.jobForAssignment(rule.setAssignment).desc;
 		let work = job.assignment;
 		let descriptionType = "auto";
 		const assignmentInfo = (job.description || {}).rulesAssistant;
-		if(assignmentInfo != null) {
-			if(assignmentInfo.assigned != null) {
+		if (assignmentInfo != null) {
+			if (assignmentInfo.assigned != null) {
 				work = assignmentInfo.assigned({slave, pronouns, rule});
 			}
-			if(assignmentInfo.assignedType != null) {
+			if (assignmentInfo.assignedType != null) {
 				descriptionType = assignmentInfo.assignedType;
 			}
 		}
 		const assignedTypeInfo = assignedTypes[descriptionType];
-		if(assignedTypeInfo == null) { throw Error(`Unknown description type ${JSON.stringify(descriptionType)} in ${JSON.stringify(rule.setAssignment)}`); }
+		if (assignedTypeInfo == null) { throw Error(`Unknown description type ${JSON.stringify(descriptionType)} in ${JSON.stringify(rule.setAssignment)}`); }
 		const hasBeenAssigned = assignedTypeInfo[assignmentResult];
 		return `<br>${slave.slaveName} ${hasBeenAssigned} to ${work}${append || ''}.`;
 	};
 
+	/** @type {string} */
 	let r;
 	let pronouns, he, him, his;
 
 	/**
 	 * @param {App.Entity.SlaveState} slave
-	 * @returns {object}
+	 * @returns {string}
 	 */
 	function DefaultRules(slave) {
 		if (slave.useRulesAssistant === 0) { return r; } // exempted
@@ -108,7 +108,7 @@ window.DefaultRules = (function() {
 		/** @type {App.RA.Rule[]} */
 		const rules = V.defaultRules.filter((x) => ruleAppliesP(x.condition, slave));
 		const ruleIds = [], assignments = [];
-		for(const rule of rules) {
+		for (const rule of rules) {
 			ruleIds.push(rule.ID);
 			assignments.push(ProcessAssignments(slave, Object.assign({}, rule.set)));
 		}
@@ -149,8 +149,8 @@ window.DefaultRules = (function() {
 					removeAssignment();
 				} else if (!job.facility.hasFreeSpace) {
 					r += getAssignmentDescription({
-						rule, slave, assignmentResult:"unable",
-						append:" because it was full"
+						rule, slave, assignmentResult: "unable",
+						append: " because it was full"
 					});
 					removeAssignment();
 				}
@@ -167,7 +167,7 @@ window.DefaultRules = (function() {
 		// place slave on assignment defined by the rule
 		if ((rule.setAssignment !== undefined && rule.setAssignment !== null)) {
 			if (((rule.setAssignment === "choose her own job" && !slave.choosesOwnAssignment) || rule.setAssignment !== slave.assignment)) {
-				r += getAssignmentDescription({rule, slave, assignmentResult:"success"});
+				r += getAssignmentDescription({rule, slave, assignmentResult: "success"});
 				assignJob(slave, rule.setAssignment);
 			}
 		}
@@ -522,7 +522,7 @@ window.DefaultRules = (function() {
 
 	/**
 	 * @param {App.Entity.SlaveState} slave
-	 * @param {object} rule
+	 * @param {App.RA.RuleSetters} rule
 	 */
 	function ProcessNonVirginDildos(slave, rule) {
 		// apply vaginal dildos to non-virgins
@@ -582,7 +582,7 @@ window.DefaultRules = (function() {
 
 	/**
 	 * @param {App.Entity.SlaveState} slave
-	 * @param {object} rule
+	 * @param {App.RA.RuleSetters} rule
 	 */
 	function ProcessVaginalAttachments(slave, rule) {
 		// apply vaginal accessories to slaves
@@ -622,7 +622,7 @@ window.DefaultRules = (function() {
 
 	/**
 	 * @param {App.Entity.SlaveState} slave
-	 * @param {object} rule
+	 * @param {App.RA.RuleSetters} rule
 	 */
 	function ProcessDickAccessories(slave, rule) {
 		// apply dick accessories to slave
@@ -655,7 +655,7 @@ window.DefaultRules = (function() {
 
 	/**
 	 * @param {App.Entity.SlaveState} slave
-	 * @param {object} rule
+	 * @param {App.RA.RuleSetters} rule
 	 */
 	function ProcessChastity(slave, rule) {
 		// apply chastity to slave
@@ -697,7 +697,7 @@ window.DefaultRules = (function() {
 
 	/**
 	 * @param {App.Entity.SlaveState} slave
-	 * @param {object} rule
+	 * @param {App.RA.RuleSetters} rule
 	 */
 	function ProcessShoes(slave, rule) {
 		// apply shoes to slave
@@ -713,7 +713,7 @@ window.DefaultRules = (function() {
 
 	/**
 	 * @param {App.Entity.SlaveState} slave
-	 * @param {object} rule
+	 * @param {App.RA.RuleSetters} rule
 	 */
 	function ProcessBellyAccessories(slave, rule) {
 		// apply belly accessories to slave
@@ -736,7 +736,7 @@ window.DefaultRules = (function() {
 
 	/**
 	 * @param {App.Entity.SlaveState} slave
-	 * @param {object} rule
+	 * @param {App.RA.RuleSetters} rule
 	 */
 	function ProcessArmAccessory(slave, rule) {
 		if (rule.armAccessory !== undefined && rule.armAccessory !== null && hasAnyArms(slave) && slave.armAccessory !== rule.armAccessory) {
@@ -747,7 +747,7 @@ window.DefaultRules = (function() {
 
 	/**
 	 * @param {App.Entity.SlaveState} slave
-	 * @param {object} rule
+	 * @param {App.RA.RuleSetters} rule
 	 */
 	function ProcessLegAccessory(slave, rule) {
 		if (rule.legAccessory !== undefined && rule.legAccessory !== null && hasAnyLegs(slave) && slave.legAccessory !== rule.legAccessory) {
@@ -758,7 +758,7 @@ window.DefaultRules = (function() {
 
 	/**
 	 * @param {App.Entity.SlaveState} slave
-	 * @param {object} rule
+	 * @param {App.RA.RuleSetters} rule
 	 */
 	function ProcessAnalAccessories(slave, rule) {
 		// apply buttplugs and buttplug accessories to slave
@@ -774,7 +774,7 @@ window.DefaultRules = (function() {
 
 	/**
 	 * @param {App.Entity.SlaveState} slave
-	 * @param {object} rule
+	 * @param {App.RA.RuleSetters} rule
 	 */
 	function ProcessAnalVirginButtplugs(slave, rule) {
 		// apply buttplugs to virgins
@@ -835,7 +835,7 @@ window.DefaultRules = (function() {
 
 	/**
 	 * @param {App.Entity.SlaveState} slave
-	 * @param {object} rule
+	 * @param {App.RA.RuleSetters} rule
 	 */
 	function ProcessNonVirginButtplugs(slave, rule) {
 		// apply buttplugs to non-virgins
@@ -896,7 +896,7 @@ window.DefaultRules = (function() {
 
 	/**
 	 * @param {App.Entity.SlaveState} slave
-	 * @param {object} rule
+	 * @param {App.RA.RuleSetters} rule
 	 */
 	function ProcessButtplugAttachments(slave, rule) {
 		// apply buttplug accessories to slaves
@@ -922,7 +922,7 @@ window.DefaultRules = (function() {
 
 	/**
 	 * @param {App.Entity.SlaveState} slave
-	 * @param {object} rule
+	 * @param {App.RA.RuleSetters} rule
 	 */
 	function ProcessBellyImplant(slave, rule) {
 		// Here is belly implant size control, it's used in Surgery Degradation passage to setup devotion and trust changes.
@@ -1004,7 +1004,7 @@ window.DefaultRules = (function() {
 
 	/**
 	 * @param {App.Entity.SlaveState} slave
-	 * @param {object} rule
+	 * @param {App.RA.RuleSetters} rule
 	 */
 	function ProcessContraceptives(slave, rule) {
 		if ((rule.preg !== undefined) && (rule.preg !== null)) {
@@ -1020,7 +1020,7 @@ window.DefaultRules = (function() {
 
 	/**
 	 * @param {App.Entity.SlaveState} slave
-	 * @param {object} rule
+	 * @param {App.RA.RuleSetters} rule
 	 */
 	function ProcessAbortions(slave, rule) {
 		if ((rule.abortion !== undefined) && (rule.abortion !== null)) {
@@ -1444,7 +1444,7 @@ window.DefaultRules = (function() {
 
 	/**
 	 * @param {App.Entity.SlaveState} slave
-	 * @param {object} rule
+	 * @param {App.RA.RuleSetters} rule
 	 */
 	function ProcessEnema(slave, rule) {
 		if ((rule.inflationType !== undefined) && (rule.inflationType !== null)) {
@@ -1663,7 +1663,7 @@ window.DefaultRules = (function() {
 
 	/**
 	 * @param {App.Entity.SlaveState} slave
-	 * @param {object} rule
+	 * @param {App.RA.RuleSetters} rule
 	 */
 	function ProcessCuratives(slave, rule) {
 		if ((rule.curatives !== undefined) && (rule.curatives !== null)) {
@@ -1688,7 +1688,7 @@ window.DefaultRules = (function() {
 
 	/**
 	 * @param {App.Entity.SlaveState} slave
-	 * @param {object} rule
+	 * @param {App.RA.RuleSetters} rule
 	 */
 	function ProcessAphrodisiacs(slave, rule) {
 		if ((rule.aphrodisiacs !== undefined) && (rule.aphrodisiacs !== null)) {
@@ -1701,7 +1701,7 @@ window.DefaultRules = (function() {
 
 	/**
 	 * @param {App.Entity.SlaveState} slave
-	 * @param {object} rule
+	 * @param {App.RA.RuleSetters} rule
 	 */
 	function ProcessPenisHormones(slave, rule) {
 		if ((slave.dick > 0)) {
@@ -1743,7 +1743,7 @@ window.DefaultRules = (function() {
 
 	/**
 	 * @param {App.Entity.SlaveState} slave
-	 * @param {object} rule
+	 * @param {App.RA.RuleSetters} rule
 	 */
 	function ProcessFemaleHormones(slave, rule) {
 		if ((slave.vagina > -1) && (slave.dick === 0) && (rule.XX !== undefined) && (rule.XX !== null)) {
@@ -1762,7 +1762,7 @@ window.DefaultRules = (function() {
 
 	/**
 	 * @param {App.Entity.SlaveState} slave
-	 * @param {object} rule
+	 * @param {App.RA.RuleSetters} rule
 	 */
 	function ProcessPregnancyDrugs(slave, rule) {
 		if (slave.pregKnown === 1 && rule.pregSpeed !== null && (slave.breedingMark !== 1 || V.propOutcome === 0 || V.eugenicsFullControl === 1 || V.arcologies[0].FSRestart === "unset") && slave.indentureRestrictions < 1 && slave.broodmother === 0) {
@@ -1792,7 +1792,7 @@ window.DefaultRules = (function() {
 
 	/**
 	 * @param {App.Entity.SlaveState} slave
-	 * @param {object} rule
+	 * @param {App.RA.RuleSetters} rule
 	 */
 	function ProcessLivingStandard(slave, rule) {
 		if ((rule.livingRules !== undefined) && (rule.livingRules !== null)) {
@@ -1829,7 +1829,7 @@ window.DefaultRules = (function() {
 
 	/**
 	 * @param {App.Entity.SlaveState} slave
-	 * @param {object} rule
+	 * @param {App.RA.RuleSetters} rule
 	 */
 	function ProcessSpeech(slave, rule) {
 		if ((rule.speechRules !== undefined) && (rule.speechRules !== null) && (slave.rules.speech !== rule.speechRules)) {
@@ -1863,7 +1863,7 @@ window.DefaultRules = (function() {
 
 	/**
 	 * @param {App.Entity.SlaveState} slave
-	 * @param {object} rule
+	 * @param {App.RA.RuleSetters} rule
 	 */
 	function ProcessRelationship(slave, rule) {
 		if ((slave.fetish !== "mindbroken")) {
@@ -1878,7 +1878,7 @@ window.DefaultRules = (function() {
 
 	/**
 	 * @param {App.Entity.SlaveState} slave
-	 * @param {object} rule
+	 * @param {App.RA.RuleSetters} rule
 	 */
 	function ProcessRelease(slave, rule) {
 		if ((rule.releaseRules !== undefined) && (rule.releaseRules !== null)) {
@@ -1905,7 +1905,7 @@ window.DefaultRules = (function() {
 
 	/**
 	 * @param {App.Entity.SlaveState} slave
-	 * @param {object} rule
+	 * @param {App.RA.RuleSetters} rule
 	 */
 	function ProcessPunishment(slave, rule) {
 		if ((rule.standardPunishment !== undefined) && (rule.standardPunishment !== null)) {
@@ -1918,7 +1918,7 @@ window.DefaultRules = (function() {
 
 	/**
 	 * @param {App.Entity.SlaveState} slave
-	 * @param {object} rule
+	 * @param {App.RA.RuleSetters} rule
 	 */
 	function ProcessReward(slave, rule) {
 		if ((rule.standardReward !== undefined) && (rule.standardReward !== null)) {
@@ -1931,7 +1931,7 @@ window.DefaultRules = (function() {
 
 	/**
 	 * @param {App.Entity.SlaveState} slave
-	 * @param {object} rule
+	 * @param {App.RA.RuleSetters} rule
 	 */
 	function ProcessToyHole(slave, rule) {
 		if ((rule.toyHole !== undefined) && (rule.toyHole !== null)) {
@@ -1968,7 +1968,7 @@ window.DefaultRules = (function() {
 
 	/**
 	 * @param {App.Entity.SlaveState} slave
-	 * @param {object} rule
+	 * @param {App.RA.RuleSetters} rule
 	 */
 	function ProcessDietCum(slave, rule) {
 		if ((rule.dietCum !== undefined) && (rule.dietCum !== null)) {
@@ -1988,7 +1988,7 @@ window.DefaultRules = (function() {
 
 	/**
 	 * @param {App.Entity.SlaveState} slave
-	 * @param {object} rule
+	 * @param {App.RA.RuleSetters} rule
 	 */
 	function ProcessDietMilk(slave, rule) {
 		if ((rule.dietMilk !== undefined) && (rule.dietMilk !== null)) {
@@ -2008,7 +2008,7 @@ window.DefaultRules = (function() {
 
 	/**
 	 * @param {App.Entity.SlaveState} slave
-	 * @param {object} rule
+	 * @param {App.RA.RuleSetters} rule
 	 */
 	function ProcessSolidFood(slave, rule) {
 		if ((rule.onDiet !== undefined) && (rule.onDiet !== null)) {
@@ -2025,7 +2025,7 @@ window.DefaultRules = (function() {
 
 	/**
 	 * @param {App.Entity.SlaveState} slave
-	 * @param {object} rule
+	 * @param {App.RA.RuleSetters} rule
 	 */
 	function ProcessTeeth(slave, rule) {
 		if ((rule.teeth !== undefined) && (rule.teeth !== null)) {
@@ -2286,7 +2286,10 @@ window.DefaultRules = (function() {
 		}
 	}
 
-	/** @param {App.Entity.SlaveState} slave */
+	/**
+	 * @param {App.Entity.SlaveState} slave
+	 * @param {App.RA.RuleSetters} rule
+	 */
 	function ProcessPiercings(slave, rule) {
 		if (rule.nipplesPiercing !== undefined && (rule.nipplesPiercing !== null)) {
 			if ((slave.nipplesPiercing !== rule.nipplesPiercing)) {
@@ -2479,7 +2482,7 @@ window.DefaultRules = (function() {
 
 	/**
 	 * @param {App.Entity.SlaveState} slave
-	 * @param {object} rule
+	 * @param {App.RA.RuleSetters} rule
 	 */
 	function ProcessSmartPiercings(slave, rule) {
 		if ((slave.clitPiercing === 3)) {
@@ -2549,7 +2552,7 @@ window.DefaultRules = (function() {
 
 	/**
 	 * @param {App.Entity.SlaveState} slave
-	 * @param {object} rule
+	 * @param {App.RA.RuleSetters} rule
 	 */
 	function ProcessTattoos(slave, rule) {
 		if (rule.boobsTat !== undefined && (rule.boobsTat !== null)) {
@@ -2833,7 +2836,7 @@ window.DefaultRules = (function() {
 
 	/**
 	 * @param {App.Entity.SlaveState} slave
-	 * @param {object} rule
+	 * @param {App.RA.RuleSetters} rule
 	 */
 	function ProcessPornFeedEnabled(slave, rule) {
 		if (rule.pornFeed === undefined || rule.pornFeed == null) {
@@ -2911,13 +2914,13 @@ window.DefaultRules = (function() {
 		try {
 			// TODO: This should use a cached Function, which should be the same as below.
 			new Function(`return ${code}`);
-		} catch(e) {
+		} catch (e) {
 			return false;
 		}
 		return true;
 	};
 	window.RuleHasError = (rule) => rule.condition.function === "custom"
-								 &&(rule.condition.data.match(rxCheckEqual)
+								 && (rule.condition.data.match(rxCheckEqual)
 								 || !compileCheck(rule.condition.data));
 	window.DefaultRulesError = () => V.defaultRules.some(r => RuleHasError(r));
 	return DefaultRules;
diff --git a/src/js/generateMarketSlave.js b/src/js/generateMarketSlave.js
index 42f49887829273456e425e5ed837748f5f5798a9..c7d852c1e832dc2c3e7a042b689d1a26661813e6 100644
--- a/src/js/generateMarketSlave.js
+++ b/src/js/generateMarketSlave.js
@@ -202,8 +202,7 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 					V.activeSlave.face = Math.clamp(V.activeSlave.face+20, -100, 100);
 				}
 				if ((V.activeSlave.ageImplant !== 1) && (V.activeSlave.visualAge >= 25)) {
-					V.activeSlave.ageImplant = 1;
-					ageImplantAdjustment(V.activeSlave);
+					applyAgeImplant(V.activeSlave);
 				}
 				if ((V.activeSlave.voice === 1) && (V.activeSlave.voiceImplant === 0)) {
 					V.activeSlave.voice += 1;
@@ -808,9 +807,8 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 						}
 					} else {
 						r += `And if they aren't, they sure don't look their age. `;
-						V.activeSlave.ageImplant = 1;
 						V.activeSlave.faceImplant += jsRandom(10, 30);
-						ageImplantAdjustment(V.activeSlave);
+						applyAgeImplant(V.activeSlave);
 					}
 				}
 			} else if (V.arcologies[market].FSMaturityPreferentialist > 20) {
@@ -1310,9 +1308,8 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 					V.activeSlave.face = Math.clamp(V.activeSlave.face+V.activeSlave.faceImplant, -100, 100);
 				}
 				if (V.activeSlave.physicalAge >= 30) {
-					V.activeSlave.ageImplant += jsRandom(0, 1);
-					if (V.activeSlave.ageImplant === 1) {
-						ageImplantAdjustment(V.activeSlave);
+					if (jsRandom(0, 1) > 0) {
+						applyAgeImplant(V.activeSlave);
 					}
 				}
 			}
diff --git a/src/js/main.js b/src/js/main.js
index f52619035baf1486db77b8dbfaa28c14f5b9c64c..c817c75707eec6c8c924fff53825075fe130e436 100644
--- a/src/js/main.js
+++ b/src/js/main.js
@@ -1,3 +1,6 @@
+/**
+ * @return {Text}
+ */
 App.MainView.fcnn = function() {
 	let text;
 
@@ -9,3 +12,57 @@ App.MainView.fcnn = function() {
 
 	return document.createTextNode(`${text} `);
 };
+
+/**
+ * @return {HTMLDivElement}
+ */
+App.MainView.useGuard = function() {
+	const guard = V.slaves[V.slaveIndices[V.Bodyguard.ID]];
+
+	const outerDiv = document.createElement("div");
+
+	if (guard === undefined || guard.assignment !== "guard you" || V.useSlaveSummaryOverviewTab === 1) {
+		return outerDiv;
+	}
+
+	outerDiv.append(App.UI.DOM.makeSpan(App.Interact.guardPose(guard), "scene-intro"));
+
+	function setEnvironment() {
+		V.activeSlave = guard;
+		V.nextButton = "Back";
+		V.nextLink = "AS Dump";
+		V.returnTo = passage();
+	}
+
+	const {him, his} = getPronouns(guard);
+	const optionDiv = document.createElement("div");
+	optionDiv.classList.add("indent");
+
+	optionDiv.append(
+		App.UI.DOM.passageLink(`Use ${his} mouth`, "FLips", setEnvironment),
+		" | ",
+		App.UI.DOM.passageLink(`Play with ${his} tits`, "FBoobs", setEnvironment)
+	);
+
+	if (canDoVaginal(guard)) {
+		optionDiv.append(" | ", App.UI.DOM.passageLink(`Fuck ${him}`, "FVagina", setEnvironment));
+		if (canDoAnal(guard)) {
+			optionDiv.append(" | ", App.UI.DOM.passageLink(`Use ${his} holes`, "FButt", setEnvironment));
+		}
+		if (guard.belly >= 300000) {
+			optionDiv.append(" | ", App.UI.DOM.passageLink(`Fuck ${him} over ${his} belly`, "FBellyFuck", setEnvironment));
+		}
+	}
+
+	if (canPenetrate(guard)) {
+		optionDiv.append(" | ", App.UI.DOM.passageLink(`Ride ${him}`, "FDick", setEnvironment));
+	}
+	if (canDoAnal(guard)) {
+		optionDiv.append(" | ", App.UI.DOM.passageLink(`Fuck ${his} ass`, "FAnus", setEnvironment));
+	}
+	optionDiv.append(" | ", App.UI.DOM.passageLink(`Abuse ${him}`, "Gameover", () => { V.gameover = "idiot ball"; }));
+
+	outerDiv.append(optionDiv);
+
+	return outerDiv;
+};
diff --git a/src/js/rulesAutosurgery.js b/src/js/rulesAutosurgery.js
index 2a8c0648f39c151f71a514e420c1e1bf3447f70f..a089d206b8e19659d5b54a5d6a61a36dd0f11dd4 100644
--- a/src/js/rulesAutosurgery.js
+++ b/src/js/rulesAutosurgery.js
@@ -319,17 +319,8 @@ window.rulesAutosurgery = (function() {
 				});
 			} else if (slave.faceImplant <= 15 && slave.ageImplant !== 1 && slave.visualAge >= 25 && thisSurgery.cosmetic > 0) {
 				commitProcedure("an age lift", slave => {
-					slave.ageImplant = 1;
 					slave.faceImplant += 25 - 5 * Math.trunc(V.PC.skill.medicine / 50) - 5 * V.surgeryUpgrade;
-					if (slave.visualAge > 80) {
-						slave.visualAge -= 40;
-					} else if (slave.visualAge >= 70) {
-						slave.visualAge -= 30;
-					} else if (slave.visualAge > 50) {
-						slave.visualAge -= 20;
-					} else if (slave.visualAge > 36) {
-						slave.visualAge -= 10;
-					} else { slave.visualAge -= 5; }
+					applyAgeImplant(slave);
 				});
 			} else if (((slave.underArmHStyle !== "bald" && slave.underArmHStyle !== "hairless") || (slave.pubicHStyle !== "bald" && slave.pubicHStyle !== "hairless")) && thisSurgery.bodyhair === 2) {
 				commitProcedure("body hair removal", slave => {
@@ -380,18 +371,7 @@ window.rulesAutosurgery = (function() {
 				});
 			} else if (slave.faceImplant <= 45 && slave.ageImplant !== 1 && slave.visualAge >= 25 && thisSurgery.cosmetic === 2) {
 				commitProcedure("an age lift", slave => {
-					slave.ageImplant = 1;
-					if (slave.visualAge > 80) {
-						slave.visualAge -= 40;
-					} else if (slave.visualAge >= 70) {
-						slave.visualAge -= 30;
-					} else if (slave.visualAge > 50) {
-						slave.visualAge -= 20;
-					} else if (slave.visualAge > 36) {
-						slave.visualAge -= 10;
-					} else {
-						slave.visualAge -= 5;
-					}
+					applyAgeImplant(slave);
 					slave.faceImplant += 25 - 5 * Math.trunc(V.PC.skill.medicine / 50) - 5 * V.surgeryUpgrade;
 				});
 			} else if (slave.voice < 3 && slave.voiceImplant === 0 && thisSurgery.cosmetic === 2) {
diff --git a/src/js/slaveCostJS.js b/src/js/slaveCostJS.js
index aa303d653cea1879b77ab30aa3c160821f7688f8..75aa237091bbc8d18b558e4272b18d7ed8370aac 100644
--- a/src/js/slaveCostJS.js
+++ b/src/js/slaveCostJS.js
@@ -1154,7 +1154,7 @@ window.BeautyArray = (function() {
 		} else if (arcology.FSGenderRadicalist === "unset") {
 			if (slave.shoulders > slave.hips) {
 				if (slave.boobs <= 2000 * (slave.shoulders - slave.hips)) {
-					adjustBeauty("Body Proportion: Gender Radicalist", -(slave.shoulders - slave.hips));
+					adjustBeauty("Body Proportion", -(slave.shoulders - slave.hips));
 				}
 			}
 		}
@@ -1293,7 +1293,7 @@ window.BeautyArray = (function() {
 				adjustBeauty("Purity: Body Purist", (arcology.FSBodyPurist / 5));
 			}
 			if (arcology.FSTransformationFetishist === "unset") {
-				adjustBeauty("Purity: Transformation Fetishist", 2);
+				adjustBeauty("Purity", 2);
 			}
 		} else if (arcology.FSTransformationFetishist !== "unset") {
 			adjustBeauty("Purity: Transformation Fetishist", (arcology.FSTransformationFetishist / 40));
diff --git a/src/js/slaveGenerationJS.js b/src/js/slaveGenerationJS.js
index d228006a17af6dd7fc376c5926e6e2f58d34e6b6..c4de55dadbdb853959bde69a776cc1ea6b1ce82c 100644
--- a/src/js/slaveGenerationJS.js
+++ b/src/js/slaveGenerationJS.js
@@ -1550,18 +1550,25 @@ window.generatePuberty = function(slave) {
 };
 
 /**
+ * Apply the effects of an age lift (make them appear younger than they do currently)
  * @param {App.Entity.SlaveState} slave
  */
-window.ageImplantAdjustment = function(slave) {
-	if (slave.visualAge > 80) {
-		slave.visualAge -= 40;
-	} else if (slave.visualAge >= 70) {
-		slave.visualAge -= 30;
-	} else if (slave.visualAge > 50) {
-		slave.visualAge -= 20;
-	} else if (slave.visualAge > 36) {
-		slave.visualAge -= 10;
-	} else {
-		slave.visualAge -= 5;
+window.applyAgeImplant = function(slave) {
+	if (slave.visualAge >= 25) {
+		slave.ageImplant = 1;
+		/* roughly: 25 -> 19, 35 -> 25, 50 -> 32, 80 -> 40, 130 -> 50 */
+		slave.visualAge = Math.round(18.5 * Math.log(slave.visualAge) - 40);
+	}
+};
+
+/**
+ * Makes someone appear older than they do currently
+ * @param {App.Entity.SlaveState} slave
+ */
+window.applyAgeImplantOlder = function(slave) {
+	if (slave.visualAge < 80) {
+		// doesn't currently set ageImplant
+		/* roughly: 5 -> 20, 35 -> 45, 50 -> 56, 60 -> 64, 79 -> 80 */
+		slave.visualAge = Math.round(0.8 * slave.visualAge + 16);
 	}
 };
diff --git a/src/js/slaveListing.js b/src/js/slaveListing.js
index f6902d60843ae88cfd6a0a91bb912da3adf7dee2..4c9bd8e53b6aac555648479cdb34302eb43534b3 100644
--- a/src/js/slaveListing.js
+++ b/src/js/slaveListing.js
@@ -845,7 +845,7 @@ App.UI.SlaveList.penthousePage = function() {
 				const p = getPronouns(BG);
 				V.i = App.Utils.slaveIndexForId(BG.ID);
 				const interactLinkSetters = `$activeSlave = $slaves[${V.i}], $nextButton = "Back", $nextLink = "AS Dump", $returnTo = "Main"`;
-				r += `<br><span class='scene-intro'>${App.Interact.UseGuard(BG)}</span>`;
+				r += `<br><span class='scene-intro'>${App.Interact.guardPose(BG)}</span>`;
 				let useHimLinks = [];
 				useHimLinks.push(App.UI.passageLink(`Use ${p.his} mouth`, "FLips", interactLinkSetters));
 				useHimLinks.push(App.UI.passageLink(`Play with ${p.his} tits`, "FBoobs", interactLinkSetters));
diff --git a/src/js/useSlave.js b/src/js/useSlave.js
new file mode 100644
index 0000000000000000000000000000000000000000..6e138b27103ee54394811fb2c4cbe724ce96c42b
--- /dev/null
+++ b/src/js/useSlave.js
@@ -0,0 +1,741 @@
+window.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);
+
+	/*
+	Array of objects.  Each object follows the form: {
+		text: "Link text",
+		scene: "scene to include",
+		goto: if another passage is needed
+		updateSlave: update slave itself if needed, like {trust: 2},
+		update: updates V.,
+		note: if a note must appear after the link
+	}
+	*/
+	const sexOptions = [];
+	const fillFaceOptions = [];
+	const fillAssOptions = [];
+	// if no scene, it's just text, no link.  Italicize it.
+
+	if (slave.fuckdoll === 0) {
+		if (slave.vagina > -1) {
+			if (canDoVaginal(slave)) {
+				sexOptions.push({text: `Fuck ${him}`, scene: `FVagina`});
+				if (canDoAnal(slave)) {
+					sexOptions.push({text: `Use ${his} holes`, scene: `FButt`});
+				}
+				if (slave.bellyPreg >= 300000) {
+					sexOptions.push({text: `Fuck ${him} on ${his} belly`, scene: `FBellyFuck`});
+				}
+				if (slave.bellyPreg >= 300000 && V.pregInventions >= 1) {
+					sexOptions.push({text: `Fuck ${him} in ${his} maternity swing`, scene: `FMaternitySwing`});
+				}
+				if (slave.bellyPreg >= 300000 && V.pregInventions >= 1) {
+					sexOptions.push({text: `Fuck ${him} with the help of ${his} assistants`, scene: `FAssistedSex`});
+				}
+				if (slave.bellyPreg >= 300000 && V.pregInventions >= 1) {
+					sexOptions.push({text: `Fuck ${him} in your goo pool`, scene: `FPoolSex`});
+				}
+			} else {
+				sexOptions.push({text: `Remove ${his} chastity belt if you wish to fuck ${him}`});
+			}
+		}
+		if (slave.bellyPreg >= 300000) {
+			if (canDoVaginal(slave) || canDoAnal(slave)) {
+				sexOptions.push({text: `Fuck ${him} on ${his} belly`, scene: `FBellyFuck`});
+				if (V.pregInventions >= 1) {
+					sexOptions.push({text: `Fuck ${him} in ${his} maternity swing`, scene: `FMaternitySwing`});
+					sexOptions.push({text: `Fuck ${him} with the help of ${his} assistants`, scene: `FAssistedSex`});
+					sexOptions.push({text: `Fuck ${him} in your goo pool`, scene: `FPoolSex`});
+				}
+			}
+		}
+
+		if (canDoAnal(slave)) {
+			sexOptions.push({text: `Fuck ${his} ass`, scene: `FAnus`});
+		} else {
+			sexOptions.push({text: `Remove ${his} chastity belt if you wish to fuck ${his} ass`});
+		}
+		sexOptions.push({text: `Use ${his} mouth`, scene: `FLips`});
+		sexOptions.push({text: `Kiss ${him}`, scene: `FKiss`});
+		if (hasAnyLegs(slave)) {
+			sexOptions.push({text: `Have ${him} dance for you`, scene: `FDance`});
+		}
+
+		sexOptions.push({text: `Play with ${his} tits`, scene: `FBoobs`});
+
+		sexOptions.push({text: `Caress ${him}`, scene: `FCaress`});
+
+		sexOptions.push({text: `Give ${him} a hug`, scene: `FEmbrace`});
+		if (V.cheatMode === 1) {
+			sexOptions.push({text: `Pat ${his} head`, scene: `FPat`});
+		}
+
+		sexOptions.push({text: `Grope ${his} boobs`, scene: `FondleBoobs`});
+		if (slave.nipples === "fuckable" && V.PC.dick > 0) {
+			sexOptions.push({text: `Fuck ${his} nipples`, scene: `FNippleFuck`});
+		}
+		if (slave.lactation > 0 && slave.boobs >= 2000 && slave.belly < 60000 && hasAnyArms(slave)) {
+			sexOptions.push({text: `Drink ${his} milk`, scene: `FSuckle`});
+		}
+
+		if (canDoAnal(slave)) {
+			sexOptions.push({text: `Grope ${his} butt`, scene: `FondleButt`});
+		}
+
+
+		if (slave.vagina > -1) {
+			if (canDoVaginal(slave)) {
+				sexOptions.push({text: `Grope ${his} pussy`, scene: `FondleVagina`});
+			}
+		}
+
+		if (slave.dick > 0) {
+			if (!(slave.chastityPenis)) {
+				sexOptions.push({text: `Grope ${his} dick`, scene: `FondleDick`});
+				if (canPenetrate(slave)) {
+					if (V.sexualOpeness === 1 || slave.toyHole === "dick") {
+						sexOptions.push({text: `Ride ${his} dick`, scene: `FDick`});
+					}
+				}
+			} else {
+				sexOptions.push({text: `Remove ${his} dick chastity belt if you wish to play with ${his} cock`});
+			}
+		}
+
+		if (hasAnyLegs(slave) && V.PC.dick > 0) {
+			sexOptions.push({text: `Get a footjob`, scene: `FFeet`});
+		}
+
+		if (canGetPregnant(slave) && (slave.geneticQuirks.superfetation !== 2 || V.geneticMappingUpgrade !== 0) && (slave.fuckdoll === 0) && V.seePreg !== 0) {
+			if (canImpreg(slave, V.PC)) {
+				sexOptions.push({text: `Impregnate ${him} yourself`, scene: `FPCImpreg`});
+			}
+			if (canImpreg(slave, slave)) {
+				sexOptions.push({text: `Use ${his} own seed to impregnate ${him}`, scene: `FSlaveSelfImpreg`});
+			}
+			sexOptions.push({text: `Use another slave to impregnate ${him}`, scene: `FSlaveImpreg`});
+		}
+		if (slave.assignment !== "work in the dairy" && slave.assignment !== "be confined in the arcade" && slave.assignment !== "be confined in the cellblock") {
+			if (V.dairyPiping === 1) {
+				if ((V.milkPipeline > 88 && V.milkPipeline !== 0) || V.arcologies[0].FSPastoralistLaw === 1) {
+					if ((slave.inflation < 3 && slave.pregKnown === 0 && slave.bellyImplant < 1500) || slave.inflation < 1) {
+						if (slave.inflationType === "milk" || slave.inflationType === "none") {
+							fillAssOptions.push({text: `Milk`, scene: `FillUpButt`, updateSlave: {inflationType: "milk", inflationMethod: 2}});
+							fillFaceOptions.push({text: `Milk`, scene: `FillUpFace`, updateSlave: {inflationType: "milk", inflationMethod: 1}});
+						}
+					}
+				} else {
+					sexOptions.push({text: `${V.dairyNameCaps} is not producing enough milk to pump through the pipes`});
+				}
+				if ((V.cumPipeline > 88 && V.cumPipeline !== 0) || V.arcologies[0].FSPastoralistLaw === 1) {
+					if ((slave.inflation < 3 && slave.pregKnown === 0 && slave.bellyImplant < 1500) || slave.inflation < 1) {
+						if (slave.inflationType === "cum" || slave.inflationType === "none") {
+							fillAssOptions.push({text: `Cum`, scene: `FillUpButt`, updateSlave: {inflationType: "cum", inflationMethod: 2}});
+							fillFaceOptions.push({text: `Cum`, scene: `FillUpFace`, updateSlave: {inflationType: "cum", inflationMethod: 1}});
+						}
+					}
+				} else {
+					sexOptions.push({text: `${V.dairyNameCaps} is not producing enough cum to pump through the pipes`});
+				}
+			} /* dairyPiping === 1 */
+			if (V.enema === 1) {
+				if ((slave.inflation < 3 && slave.pregKnown === 0 && slave.bellyImplant < 1500) || slave.inflation < 1) {
+					if (slave.inflationType === "water" || slave.inflationType === "none") {
+						fillAssOptions.push({text: `Water`, scene: `FillUpButt`, updateSlave: {inflationType: "water", inflationMethod: 2}});
+					}
+					if (V.medicalEnema === 1) {
+						if (slave.inflationType === "aphrodisiac" || slave.inflationType === "none") {
+							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}});
+						}
+						if (slave.inflationType === "tightener" || slave.inflationType === "none") {
+							fillAssOptions.push({text: `Rectal tighteners`, scene: `FillUpButt`,  updateSlave: {inflationType: "tightener", inflationMethod: 2}});
+						}
+					}
+				} /* inflation < 3 */
+			} /* enema === 1 */
+			if (V.wcPiping === 1) {
+				if ((slave.inflation < 3 && slave.pregKnown === 0 && slave.bellyImplant < 1500) || slave.inflation < 1) {
+					if (slave.inflationType === "urine" || slave.inflationType === "none") {
+						fillAssOptions.push({text: `Urine`, scene: `FillUpButt`, updateSlave: {inflationType: "urine", inflationMethod: 2}});
+					}
+				}
+			} /* wcPiping === 1 */
+		} /* assigned to dairy or arcade */
+		if (slave.inflation === 0 && slave.bellyImplant < 1500) {
+			if (slave.assignment !== "work in the dairy" && slave.assignment !== "be confined in the arcade" && slave.assignment !== "be confined in the cellblock") {
+				if (V.buckets === 1) {
+					fillFaceOptions.push({text: `Two liters of slave food`, scene: `forceFeeding`, updateSlave: {inflation: 1, inflationType: "food", inflationMethod: 1}});
+					if (slave.pregKnown === 0) {
+						fillFaceOptions.push({text: `A gallon of slave food`, scene: `forceFeeding`, updateSlave: {inflation: 2, inflationType: "food", inflationMethod: 1}});
+						fillFaceOptions.push({text: `Two gallons of slave food`, scene: `forceFeeding`, updateSlave: {inflation: 3, inflationType: "food", inflationMethod: 1}});
+					}
+				}
+				fillFaceOptions.push({text: `Get another slave to do it`, goto: `SlaveOnSlaveFeedingWorkAround`});
+			}
+		}
+		if (canDoVaginal(slave)) {
+			sexOptions.push({text: `Have another slave fuck ${his} pussy`, scene: `FSlaveSlaveVag`});
+		}
+		if (canPenetrate(slave)) {
+			sexOptions.push({text: `Have another slave ride ${his} cock`, scene: `FSlaveSlaveDick`});
+		}else if (slave.clit >= 4) {
+			sexOptions.push({text: `Have another slave ride ${his} clit-dick`, scene: `FSlaveSlaveDick`});
+		}
+		if (V.seeBestiality === 1 && V.cheatMode === 1) {
+			if (V.farmyardKennels > 0 && V.activeCanine !== 0) {
+				sexOptions.push({text: `Have a ${V.activeCanine.species} mount ${him}`, scene: `BeastFucked`, update: {animalType: "canine"}});
+			}
+			if (V.farmyardStable > 0 && V.activeHooved !== 0) {
+				sexOptions.push({text: `Let a ${V.activeHooved.species} mount ${him}`, scene: `BeastFucked`, update: {animalType: "hooved"}});
+			}
+			if (V.farmyardCages > 0 && V.activeFeline !== 0) {
+				sexOptions.push({text: `Have a ${V.activeFeline.species} mount ${him}`, scene: `BeastFucked`, update: {animalType: "feline"}});
+			}
+		}
+		sexOptions.push({text: `Abuse ${him}`, scene: `FAbuse`});
+		if (V.seeIncest === 1) {
+			if (V.familyTesting === 1) {
+				const availRelatives = availableRelatives(slave);
+				if (availRelatives.mother) {
+					sexOptions.push({text: `Fuck ${him} with ${his} mother`, scene: `FRelation`, update: {partner: "mother"}});
+				} else if (availRelatives.motherName !== null) {
+					sexOptions.push({text: `${His} mother, ${availRelatives.motherName}, is unavailable`});
+				}
+				/*
+				if (availRelatives.father) {
+					sexOptions.push({text: `Fuck ${him} with ${his} father`, scene: `FRelation`, update: {partner: "father"}});
+				} else if (availRelatives.fatherName !== null) {
+					sexOptions.push({text: `${His} father, ${availRelatives.motherName}, is unavailable`});
+				}
+				*/
+				if (slave.daughters > 0) {
+					if (availRelatives.daughters === 0) {
+						if (slave.daughters === 1) {
+							sexOptions.push({text: `${His} ${availRelatives.oneDaughterRel} is unavailable`});
+						} else {
+							sexOptions.push({text: `${His} daughters are unavailable`});
+						}
+					} else {
+						if (slave.daughters === 1) {
+							sexOptions.push({text: `Fuck ${him} with ${his} ${availRelatives.oneDaughterRel}`, scene: `FRelation`, update: {partner: "daughter"}});
+						} else {
+							sexOptions.push({text: `Fuck ${him} with one of ${his} daughters`, scene: `FRelation`, update: {partner: "daughter"}});
+						}
+						/*
+						if (availRelatives.daughters > 1) {
+							sexOptions.push({text: `Fuck ${him} with ${his} daughters`, scene: `FRelation`, update: {partner: "daughter"}});
+						}
+						*/
+					}
+				}
+				if (slave.sisters > 0) {
+					if (availRelatives.sisters === 0) {
+						if (slave.sisters === 1) {
+							sexOptions.push({text: `${His} ${availRelatives.oneSisterRel} is unavailable`});
+						} else {
+							sexOptions.push({text: `${His} sisters are unavailable`});
+						}
+					} else {
+						if (slave.sisters === 1) {
+							sexOptions.push({text: `Fuck ${him} with ${his} ${availRelatives.oneSisterRel}`, scene: `FRelation`, update: {partner: "sister"}});
+						} else {
+							sexOptions.push({text: `Fuck ${him} with one of ${his} sisters`, scene: `FRelation`, update: {partner: "sister"}});
+						}
+						/*
+						if (availRelatives.sisters > 1) {
+							sexOptions.push({text: `Fuck ${him} with ${his} sisters`, scene: `FRelation`, update: {partner: "sisters}});
+						}
+						*/
+					}
+				}
+			} else {
+				if (slave.relation !== 0) {
+					let assayedSlave = getSlave(slave.relationTarget);
+					const
+					{
+						daughter: daughter2, mother: mother2
+					} = getPronouns(assayedSlave);
+					if (isSlaveAvailable(assayedSlave)) {
+						if (slave.relation === "mother") {
+							sexOptions.push({text: `Fuck ${him} with ${his} ${daughter2}`, scene: `FRelation`, update: {partner: "relation"}});
+						} else if (slave.relation === "daughter") {
+							sexOptions.push({text: `Fuck ${him} with ${his} ${mother2}`, scene: `FRelation`, update: {partner: "relation"}});
+						} else if (slave.relation === "sister") {
+							sexOptions.push({text: `Fuck ${him} with ${his} ${sister2}`, scene: `FRelation`, update: {partner: "relation"}});
+						} else if (slave.relation === "twin") {
+							sexOptions.push({text: `Fuck ${him} with ${his} twin`, scene: `FRelation`, update: {partner: "relation"}});
+						}
+					} else {
+						sexOptions.push({text: `${assayedSlave.slaveName} is unavailable`});
+					}
+				}
+			}
+		}
+		if (slave.relationship > 0) {
+			const lover = getSlave(slave.relationshipTarget);
+			if (isSlaveAvailable(lover)) {
+				sexOptions.push({text: `Fuck ${him} with ${his} ${relationshipTermShort(slave)} ${SlaveFullName(lover)}`, scene: `FRelation`, update: {partner: "relationship"}});
+			} else {
+				if (lover.assignment === "be your agent") {
+					if (slave.broodmother < 2) {
+						sexOptions.push({text: `Send ${him} to live with your agent ${SlaveFullName(lover)}`, goto: `Agent Company`, update: {subSlave: lover}});
+					} else {
+						sexOptions.push({text: `A hyper-broodmother cannot be sent to live with your agent`});
+					}
+				} else {
+					sexOptions.push({text: `${SlaveFullName(lover)} is unavailable`});
+				}
+			}
+		}
+		if (slave.rivalryTarget !== 0 && hasAllLimbs(slave)) {
+			const rival = getSlave(slave.relationshipTarget);
+			if (isSlaveAvailable(rival) && hasAnyLegs(rival)) {
+				sexOptions.push({text: `Abuse ${his} rival with ${him}`, scene: `FRival`});
+			}
+		}
+		if (slave.fetish !== "mindbroken" && (canTalk(slave) || hasAnyArms(slave))) {
+			sexOptions.push({text: `Ask ${him} about ${his} feelings`, scene: `FFeelings`});
+			if (V.PC.dick > 0) {
+				sexOptions.push({text: `Make ${him} beg`, scene: `FBeg`});
+			}
+		}
+		if (slave.devotion >= 100 && slave.relationship < 0 && slave.relationship > -3) {
+			sexOptions.push({text: `Talk to ${him} about relationships`, goto: `Matchmaking`, update: {subSlave: 0, eventSlave: slave}});
+		}
+		let ML = V.marrying.length;
+		if ((V.MixedMarriage === 1 || V.cheatMode === 1) && slave.relationship !== 5 && slave.relationship !== -3) {
+			if (V.marrying.includes(slave.ID)) {
+				sexOptions.push({text: `You are already marrying ${him} this weekend`});
+			} else {
+				if (ML < 2) {
+					if (V.cheatMode === 1 || ML === 0) {
+						sexOptions.push({text: `Marry ${him}`, goto: "FMarry"});
+					} else {
+						sexOptions.push({text: `You already have a wedding planned for this weekend`});
+					}
+				} else {
+					sexOptions.push({text: `You can only marry up to two slaves per week`});
+				}
+			}
+		}
+		if (V.cheatMode === 1) {
+			sexOptions.push({text: `Check ${his} stats`, scene: `Slave Stats`});
+		}
+	} 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`});
+		}
+		if (canGetPregnant(slave) && (slave.geneticQuirks.superfetation !== 2 || V.geneticMappingUpgrade !== 0) && V.seePreg !== 0) {
+			if (canImpreg(slave, V.PC)) {
+				sexOptions.push({text: `Put a baby in ${him}`, scene: `FFuckdollImpreg`});
+			}
+		}
+		if (canDoAnal(slave)) {
+			sexOptions.push({text: `Fuck ${his} rear hole`, scene: `FFuckdollAnal`});
+		}
+	}
+	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"}
+		});
+	}
+	el.append(`Or use ${him} here: `);
+	el.appendChild(generateRow(sexOptions));
+	if (!jQuery.isEmptyObject(fillFaceOptions)) {
+		let fill = document.createElement('div');
+		fill.appendChild(document.createTextNode(` Fill ${his} mouth with: `));
+		fill.appendChild(generateRow(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));
+		el.appendChild(fill);
+	}
+
+	function generateRow(sexArray) {
+		let row = document.createElement('span');
+		for (let i = 0; i < sexArray.length; i++) {
+			let link;
+			const separator  = document.createTextNode(` | `);
+			const keys = Object.keys(sexArray[i]);
+
+			// Test to see if there was a problem with the key
+			for (let j = 0; j < keys.length; j++) {
+				if (["text", "scene", "goto", "updateSlave", "update", "note"].includes(keys[j])) {
+					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]]);
+					break;
+				}
+			}
+			// is it just text?
+			if (keys.length === 1) {
+				if (sexArray[i].text) {
+					link = document.createTextNode(sexArray[i].text);
+				} else {
+					console.log(`expected 'text' only, got: ${sexArray[i]}`);
+					link = document.createTextNode("error, text not found");
+				}
+			} else {
+				let passage = "";
+				if (sexArray[i].goto) {
+					passage = sexArray[i].goto;
+				}
+
+				// Set up the link
+				link = App.UI.DOM.link(
+					sexArray[i].text,
+					() => { click(sexArray[i]); },
+					[],
+					passage
+				);
+
+				// add a note node if required
+				if (sexArray[i].note) {
+					let note  = document.createTextNode(sexArray[i].note);
+					note.className = "note";
+					link.appendChild(note);
+				}
+			}
+			row.appendChild(link);
+			if (i < sexArray.length-1) {
+				row.appendChild(separator);
+			}
+		}
+
+		return row;
+
+		function click(sexOption) {
+			if (sexOption.updateSlave) {
+				Object.assign(slave, sexOption.updateSlave);
+			}
+			if (sexOption.update) {
+				Object.assign(V, sexOption.update);
+			}
+
+			if (sexOption.scene) {
+				App.UI.replace('#miniscene', `<<include "${sexOption.scene}">>`);
+			} else if (sexOption.goto) {
+				App.UI.replace('#miniscene', `<<goto "${sexOption.goto}">>`);
+			}
+
+			SlaveInteractRefreshAll(slave);
+			return;
+		}
+	}
+	return jQuery('#useSlave').empty().append(el);
+};
+
+window.SlaveInteractBloating = function(slave) {
+	const
+		{
+			// eslint-disable-next-line no-unused-vars
+			he, him, his, hers, himself, boy, He, His
+		} = getPronouns(slave);
+	let bloating = document.createElement('div');
+	if (slave.inflation > 0) {
+		let intro = document.createElement('span');
+		intro.textContent = "Required Bloating";
+		intro.style.textDecoration = "underline";
+		bloating.append(intro);
+
+		bloating.append(": ");
+
+		let requirement = document.createElement('span');
+		requirement.style.fontWeight = "bold";
+		requirement.id = "inflate";
+		if (slave.inflation === 3) {
+			requirement.textContent = `${He} is required to keep 2 gallons of ${slave.inflationType} in ${him} at all times`;
+		} else if (slave.inflation === 2) {
+			requirement.textContent = `${He} is required to keep 4 liters of ${slave.inflationType} in ${him} at all times`;
+		} else if (slave.inflation === 1) {
+			requirement.textContent = `${He} is required to keep 2 liters of ${slave.inflationType} in ${him} at all times`;
+		}
+		bloating.append(requirement);
+		bloating.append(". ");
+
+		if (slave.inflationMethod === 3) {
+			let link = App.UI.DOM.link(
+				`Let ${him} deflate`,
+				() => {
+					slave.inflation = 0,
+					slave.inflationType = "none",
+					slave.inflationMethod = 0,
+					slave.cumSource = 0,
+					slave.milkSource = 0,
+					SetBellySize(slave),
+					SlaveInteractRefreshAll(slave);
+				},
+			);
+			bloating.append(link);
+		} else {
+			let link = App.UI.DOM.link(
+				`Let ${him} deflate`,
+				() => {
+					slave.inflation = 0,
+					slave.inflationType = "none",
+					slave.inflationMethod = 0,
+					SetBellySize(slave),
+					SlaveInteractRefreshAll(slave);
+				},
+			);
+			bloating.append(link);
+		}
+	}
+	// make sure it updates itself after run
+	return jQuery('#bloating').empty().append(bloating);
+};
+
+
+window.SlaveInteractFertility = function(slave) {
+	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');
+	if (slave.ovaries === 1 || slave.mpreg === 1 || slave.preg > 0) {
+		let note = document.createTextNode(``);
+		note.className = "note";
+		if (slave.preg < -1) {
+			note.textContent += `${He} is sterile`;
+		} else if (slave.pubertyXX === 0 && slave.preg < 1) {
+			note.textContent += `${He} is not yet fertile`;
+		} else if (slave.ovaryAge >= 47 && slave.preg < 1) {
+			note.textContent += `${He} is too old to become pregnant`;
+			if (slave.preg === -1) {
+				slave.preg = 0;
+				SetBellySize(slave);
+			}
+		} else if (slave.broodmotherOnHold === 1) {
+			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){
+					note.textContent += `s`;
+				}
+				note.textContent += `.`;
+				let link = App.UI.DOM.link(
+					`Turn on implant`,
+					() => {
+						slave.broodmotherOnHold = 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.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`;
+				}
+			fertility.textContent += ". ";
+			if (slave.preg > 0 && V.pregnancyMonitoringUpgrade === 1) {
+				fertilityblock.append(App.UI.DOM.passageLink("Inspect pregnancy", "Analyze Pregnancy"));
+				fertilityblock.append(` | `);
+			}
+			if (slave.preg === 0) {
+				let link = App.UI.DOM.link(
+					`Use contraceptives`,
+					() => {
+						slave.preg = -1,
+						SlaveInteractRefreshAll(slave);
+					},
+				);
+				fertilityblock.append(link);
+			} else if (slave.preg === -1) {
+				let link = App.UI.DOM.link(
+					`Let ${him} get pregnant`,
+					() => {
+						slave.preg = 0,
+						SlaveInteractRefreshAll(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(
+					`Induce labor`,
+					() => {
+						slave.labor = 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(
+						`Turn off implant`,
+						() => {
+							slave.broodmotherOnHold = 1,
+							slave.broodmotherCountDown = 38-WombMinPreg(slave);
+						},
+					);
+					fertilityblock.append(link);
+				}
+				if (slave.broodmotherOnHold !== 1 && slave.preg >= 36) {
+					fertilityblock.appendChild(separator);
+				}
+				fertilityblock.appendChild(separator);
+				if (slave.preg > 37) {
+					fertilityblock.append(App.UI.DOM.passageLink(`Induce mass childbirth`, "BirthStorm"));
+				}
+			} else if (slave.preg > slave.pregData.minLiveBirth) {
+				let link = App.UI.DOM.link(
+					`Give  ${him} a cesarean section`,
+					() => {
+						slave.broodmotherOnHold = 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(
+					`Abort ${his} pregnancy`,
+					() => {
+						slave.broodmotherOnHold = 0,
+						slave.broodmotherCountDown = 0;
+					},
+					[],
+					"Abort"
+				);
+				fertilityblock.append(link);
+			}
+		fertilityblock.append(note);
+		}
+	}
+	if (
+		(slave.pregKnown === 1) &&
+		(V.pregSpeedControl === 1) &&
+		(
+			slave.breedingMark !== 1 ||
+			V.propOutcome === 0 ||
+			V.eugenicsFullControl === 1 ||
+			V.arcologies[0].FSRestart === "unset"
+		) &&
+		(slave.indentureRestrictions < 1) &&
+		(slave.broodmother === 0) &&
+		V.seePreg !== 0
+	) {
+		let control = document.createElement('div');
+		let underline = document.createElement('span');
+
+		underline.style.textDecoration = "underline";
+		underline.textContent = "Pregnancy control";
+		control.append(underline);
+		control.append(": ");
+
+		if (slave.pregControl === "labor suppressors") {
+			control.append("Labor is suppressed. ");
+		} else if (slave.pregControl === "slow gestation") {
+			control.append("Slowed gestation speed. ");
+		} else if (slave.pregControl === "speed up") {
+			control.append("Faster gestation speed, staffed clinic recommended. ");
+		} else {
+			control.append("Normal gestation and birth. ");
+		}
+		fertilityblock.append(control);
+		control = document.createElement('div');
+		if (slave.preg >= slave.pregData.minLiveBirth) {
+			if (slave.pregControl === "labor suppressors") {
+				let link = App.UI.DOM.link(
+					`Normal Birth`,
+					() => {
+						slave.pregControl = "none",
+						SlaveInteractFertility(slave);
+					},
+				);
+				control.append(link);
+			} else {
+				let link = App.UI.DOM.link(
+					`Suppress Labor`,
+					() => {
+						slave.pregControl = "labor suppressors",
+						SlaveInteractFertility(slave);
+					},
+				);
+				control.append(link);
+			}
+		} else if (slave.preg < slave.pregData.normalBirth) {
+			if (slave.pregControl !== "none") {
+				let link = App.UI.DOM.link(
+					`Normal Gestation`,
+					() => {
+						slave.pregControl = "none",
+						SlaveInteractFertility(slave);
+					},
+				);
+				control.append(link);
+			}
+			if (slave.pregControl !== "slow gestation") {
+				control.append(separator);
+				let link = App.UI.DOM.link(
+					`Slow Gestation`,
+					() => {
+						slave.pregControl = "slow gestation",
+						SlaveInteractFertility(slave);
+					},
+				);
+				control.append(link);
+			}
+			if (slave.pregControl !== "speed up") {
+				control.append(separator);
+				let link = App.UI.DOM.link(
+					`Fast Gestation`,
+					() => {
+						slave.pregControl = "speed up",
+						SlaveInteractFertility(slave);
+					},
+				);
+				control.append(link);
+			}
+		}
+		fertilityblock.append(control);
+	}
+	return jQuery('#fertilityblock').empty().append(fertilityblock);
+};
+
+window.SlaveInteractRefreshAll = function(slave) {
+	SlaveInteractBloating(slave);
+	SlaveInteractFertility(slave);
+	useSlaveDisplay(slave);
+};
diff --git a/src/npc/startingGirls/startingGirls.tw b/src/npc/startingGirls/startingGirls.tw
index 33c01665de5ebfc52b30c6fe7824c977993e72df..bd178fd2f97bf6d3b16205ea6262bfb68e6edf72 100644
--- a/src/npc/startingGirls/startingGirls.tw
+++ b/src/npc/startingGirls/startingGirls.tw
@@ -583,86 +583,85 @@
 		@@.green;Extremely healthy.@@
 <</options>>
 
-<br>
-
 <<if $seeExtreme == 1>>
 	/* TODO rewrite this so it looks like the rest (if possible expand options macro) */
-	Left arm:
-	<span id = "ampLA">
-		<<if hasLeftArm($activeSlave)>>Yes
-		<<else>>No
-		<</if>>
-	</span>
-	<<link "Remove">>
-		<<set $activeSlave.arm.left = null>>
-		<<replace #ampLA>>
-			No
-		<</replace>>
-	<</link>>
-	<<link "Add">>
-		<<set $activeSlave.arm.left = new App.Entity.LimbState()>>
-		<<replace #ampLA>>
-			Yes
-		<</replace>>
-	<</link>>
-	<br>
-	Right arm:
-	<span id = "ampRA">
-		<<if hasRightArm($activeSlave)>>Yes
-		<<else>>No
-		<</if>>
-	</span>
-	<<link "Remove">>
-		<<set $activeSlave.arm.right = null>>
-		<<replace #ampRA>>
-			No
-		<</replace>>
-	<</link>>
-	<<link "Add">>
-		<<set $activeSlave.arm.right = new App.Entity.LimbState()>>
-		<<replace #ampRA>>
-			Yes
-		<</replace>>
-	<</link>>
-	<br>
-	Left leg:
-	<span id = "ampLL">
-		<<if hasLeftLeg($activeSlave)>>Yes
-		<<else>>No
-		<</if>>
-	</span>
-	<<link "Remove">>
-		<<set $activeSlave.leg.left = null>>
-		<<replace #ampLL>>
-			No
-		<</replace>>
-	<</link>>
-	<<link "Add">>
-		<<set $activeSlave.leg.left = new App.Entity.LimbState()>>
-		<<replace #ampLL>>
-			Yes
-		<</replace>>
-	<</link>>
-	<br>
-	Right leg:
-	<span id = "ampRL">
-		<<if hasRightLeg($activeSlave)>>Yes
-		<<else>>No
-		<</if>>
-	</span>
-	<<link "Remove">>
-		<<set $activeSlave.leg.right = null>>
-		<<replace #ampRL>>
-			No
-		<</replace>>
-	<</link>>
-	<<link "Add">>
-		<<set $activeSlave.leg.right = new App.Entity.LimbState()>>
-		<<replace #ampRL>>
-			Yes
-		<</replace>>
-	<</link>>
-	<br>
+	<p style="text-align: center;">
+		Left arm:
+		<span id = "ampLA">
+			<<if hasLeftArm($activeSlave)>>Yes
+			<<else>>No
+			<</if>>
+		</span>
+		<<link "Remove">>
+			<<set $activeSlave.arm.left = null>>
+			<<replace #ampLA>>
+				No
+			<</replace>>
+		<</link>>
+		<<link "Add">>
+			<<set $activeSlave.arm.left = new App.Entity.LimbState()>>
+			<<replace #ampLA>>
+				Yes
+			<</replace>>
+		<</link>>
+		<br>
+		Right arm:
+		<span id = "ampRA">
+			<<if hasRightArm($activeSlave)>>Yes
+			<<else>>No
+			<</if>>
+		</span>
+		<<link "Remove">>
+			<<set $activeSlave.arm.right = null>>
+			<<replace #ampRA>>
+				No
+			<</replace>>
+		<</link>>
+		<<link "Add">>
+			<<set $activeSlave.arm.right = new App.Entity.LimbState()>>
+			<<replace #ampRA>>
+				Yes
+			<</replace>>
+		<</link>>
+		<br>
+		Left leg:
+		<span id = "ampLL">
+			<<if hasLeftLeg($activeSlave)>>Yes
+			<<else>>No
+			<</if>>
+		</span>
+		<<link "Remove">>
+			<<set $activeSlave.leg.left = null>>
+			<<replace #ampLL>>
+				No
+			<</replace>>
+		<</link>>
+		<<link "Add">>
+			<<set $activeSlave.leg.left = new App.Entity.LimbState()>>
+			<<replace #ampLL>>
+				Yes
+			<</replace>>
+		<</link>>
+		<br>
+		Right leg:
+		<span id = "ampRL">
+			<<if hasRightLeg($activeSlave)>>Yes
+			<<else>>No
+			<</if>>
+		</span>
+		<<link "Remove">>
+			<<set $activeSlave.leg.right = null>>
+			<<replace #ampRL>>
+				No
+			<</replace>>
+		<</link>>
+		<<link "Add">>
+			<<set $activeSlave.leg.right = new App.Entity.LimbState()>>
+			<<replace #ampRL>>
+				Yes
+			<</replace>>
+		<</link>>
+	</p>
 <</if>>
 
 <<options $activeSlave.muscles>>
diff --git a/src/npc/surgery/organs.js b/src/npc/surgery/organs.js
index 4ba2ea64284524b03b78b51d3e1c20ed81453c3a..4fa95eee6bb8004dd08358128a98d57255ce25de 100644
--- a/src/npc/surgery/organs.js
+++ b/src/npc/surgery/organs.js
@@ -203,8 +203,16 @@ App.Medicine.OrganFarm.init = function() {
 		actions: [
 			new App.Medicine.OrganFarm.OrganImplantAction({
 				name: "Implant", healthImpact: 10, surgeryType: "newEyes",
-				canImplant: s => (getLeftEyeVision(s) === 0 && getLeftEyeType(s) !== 2),
-				implantError: () => "Slave has a working left eye.",
+				canImplant: s => (getLeftEyeVision(s) === 0 && getBestVision(s) !== 0 && getLeftEyeType(s) !== 2),
+				implantError: s => getLeftEyeVision(s) !== 0 ? "Slave has a working left eye." : "",
+				implant: s => {
+					eyeSurgery(s, "left", "normal");
+				}
+			}),
+			new App.Medicine.OrganFarm.OrganImplantAction({
+				name: "Implant", healthImpact: 10, surgeryType: "unblind",
+				canImplant: s => (getBestVision(s) === 0 && getLeftEyeType(s) !== 2),
+				implantError: () => "",
 				implant: s => {
 					eyeSurgery(s, "left", "normal");
 				}
@@ -225,8 +233,16 @@ App.Medicine.OrganFarm.init = function() {
 		actions: [
 			new App.Medicine.OrganFarm.OrganImplantAction({
 				name: "Implant", healthImpact: 10, surgeryType: "newEyes",
-				canImplant: s => (getRightEyeVision(s) === 0 && getRightEyeType(s) !== 2),
-				implantError: () => "Slave has a working right eye.",
+				canImplant: s => (getRightEyeVision(s) === 0 && getBestVision(s) !== 0 && getRightEyeType(s) !== 2),
+				implantError: s => getRightEyeVision(s) !== 0 ? "Slave has a working right eye." : "",
+				implant: s => {
+					eyeSurgery(s, "right", "normal");
+				}
+			}),
+			new App.Medicine.OrganFarm.OrganImplantAction({
+				name: "Implant", healthImpact: 10, surgeryType: "unblind",
+				canImplant: s => (getBestVision(s) === 0 && getRightEyeType(s) !== 2),
+				implantError: () => "",
 				implant: s => {
 					eyeSurgery(s, "right", "normal");
 				}
diff --git a/src/player/pcSurgeryDegradation.tw b/src/player/pcSurgeryDegradation.tw
index 48515a7cec732f3750606cb5587e1fdf74cbb0e2..c9ccb1ccb96065b3b75bd1443beb720f5028e90a 100644
--- a/src/player/pcSurgeryDegradation.tw
+++ b/src/player/pcSurgeryDegradation.tw
@@ -17,11 +17,11 @@
 
 <<case "ageDown">>
 	After a few hours, you awaken in the recovery wing with a face both sore and somewhat numb. Sitting up, you catch sight of yourself in the mirror-covered wall across from your bed. An oddly familiar face is staring back at you; it takes you a moment to register in your groggy state that it isn't your past self but rather the result of the age reduction surgery. You attempt to smile at yourself, only to find your face doesn't want to comply; guess the drugs haven't completely worn off yet. You lie back down to sleep off the rest of the anesthesia before returning to your arcology.
-	<<PCAgeImplantAdjustmentDown>>
+	<<run applyAgeImplant($PC)>>
 
 <<case "ageUp">>
 	After a few hours, you awaken in the recovery wing with a face both sore and somewhat numb. Sitting up, you catch sight of yourself in the mirror-covered wall across from your bed. An oddly familiar face is staring back at you; it takes you a moment to register in your groggy state that you are in fact looking at the result of the age increasing surgery. You attempt to smile at yourself, only to find your face doesn't want to comply; guess the drugs haven't completely worn off yet. You lie back down to sleep off the rest of the anesthesia before returning to your arcology.
-	<<PCAgeImplantAdjustmentUp>>
+	<<run applyAgeImplantOlder($PC)>>
 
 <<case "breastReductionImplant">>
 	After a few hours, you awaken in the recovery wing with a sore chest. <<if $PC.belly >= 10000>>Struggling to sit<<else>>Sitting<</if>> up, you immediately notice how much lighter your breasts are. Pulling the covers off yourself, you observe your implant free boobs in the mirror-covered wall across from your bed. "So do you like them?", asks the surgeon's assistant, seating _himselfU behind you and wrapping _hisU hands around to your natural breasts. "We made sure to tighten them up a bit, get rid of that sag from not having the silicone pouch in them anymore." _HeU begins groping your breasts, feeling for any oddities. "I know you're still a little sore, but bear with it." _HeU moves on to your nipples and begins teasing them. <<if $PC.lactation > 0>>_HeU lets out a surprised squeak when a gush of milk escapes your breasts and a moan escapes your lips. "<<if $PC.pregKnown == 1>>Should have expected that with the pregnancy and all.<<else>>You did recently have a child didn't you? Or have you just been enjoying your nipples too much?<</if>> Either way, this is a good thing. Your breasts work."<</if>> You can't help but moan under your building arousal as _heU massages and teases your breasts. "Enjoying yourself are we? Let me finish you off." _HeU sneaks a hand down to your <<if $PC.dick != 0>>stiff prick and begins stroking its length, quickly bringing you to orgasm and relieving you of your built up tension.<<else>>stiff clit and begins teasing it as well, quickly bringing you to orgasm and relieving you of your built up tension.<</if>> _HeU states, while licking _hisU fingers, "I always did enjoy the way you taste. Feel free to rest as long as you need before departing. If you need, or want, me, I'll be around." Satisfied, you lie back down to sleep off the rest of the anesthesia before returning to your arcology.
diff --git a/src/pregmod/seFCTVremote.tw b/src/pregmod/seFCTVremote.tw
index 82f4d15760d346eaa11b5926d6f606cc3a0627e5..876d789e27162253405a5e13b6fa2cd769faaa32 100644
--- a/src/pregmod/seFCTVremote.tw
+++ b/src/pregmod/seFCTVremote.tw
@@ -46,219 +46,303 @@
 <<setAssistantPronouns>>
 
 <span id="artFrame">
-/* 000-250-006 */
-<<if $seeImages == 1>>
-	<<if $imageChoice == 1>>
-		<div class="imageRef lrgVector"><div class="mask">&nbsp;</div><<= SlaveArt($activeSlave, 2, 0)>></div>
-	<<else>>
-		<div class="imageRef lrgRender"><div class="mask">&nbsp;</div><<= SlaveArt($activeSlave, 2, 0)>></div>
+	/* 000-250-006 */
+	<<if $seeImages == 1>>
+		<<if $imageChoice == 1>>
+			<div class="imageRef lrgVector"><div class="mask">&nbsp;</div><<= SlaveArt($activeSlave, 2, 0)>></div>
+		<<else>>
+			<div class="imageRef lrgRender"><div class="mask">&nbsp;</div><<= SlaveArt($activeSlave, 2, 0)>></div>
+		<</if>>
 	<</if>>
-<</if>>
-/* 000-250-006 */
+	/* 000-250-006 */
 </span>
 
-You have a gap in your schedule in the morning, and decide to watch some FCTV<<if $Concubine != 0>> with your concubine, @@.pink;$Concubine.slaveName@@<</if>>. No sooner do you begin to watch a random show, than you have a notification that someone is here to see you. It seems to be a tech of some sort, complete with a small utility drone. A camera reveals the back of $his shirt, on which is written in block letters "FCTV SERVICE." Incredible. How do these people always find the worst time to stop in? <<if $assistant > 0>>Your assistant shrugs. At a gesture from you, _heA lets $him in.<<else>>You push a button to allow $him to come in.<</if>> This had better be good.
-<br>
-Presently, the tech enters the room and asks how your FCTV product is working. You tersely reply that it is fine, <<if $FCTVremote == 1>> although you're annoyed you had to purchase your own remote,<<else>> although you find the random nature of the shows a little annoying,<</if>> then ask the tech to cut to the point. $He shifts from one foot to the other, and then sheepishly admits that the service comes with a free remote that allows you to change the channels. Incredible! Why didn't you receive one? "It'<<s>>, uh, 8HGG Inc. poli<<c>>y to di<<s>>tribute remote<<s>> only after a trial period." <<if $assistantName == "your personal assistant">>Your personal assistant<<else>>$assistantName<</if>> quietly notifies you that "$He's lying. We've had no notification from 8HGG Inc. of a visit. It's definitely the same tech as last time; $he's trying to cover up $his mistake on a big contract. <i>They don't know $he's here.</i>"
-<br>
-$He unboxes the new remote and turns $his back to you, eagerly demonstrating how you can use it to watch any show you want. This could be your chance to turn the tables on FCTV and get some special "customer support" of your own.
-<br><br>
-
-<span id="scene">
-<<link "\"Upgrade\" the tech for a little humiliation">>
-	<<replace "#scene">>
-
-	/* set up customer */
-	<<set $activeSlaveOneTimeMinAge = 25>>
-	<<set $activeSlaveOneTimeMaxAge = 35>>
-	<<set $one_time_age_overrides_pedo_mode = 1>>
-	<<set $oneTimeDisableDisability = 1>>
-	<<if $arcologies[0].FSSupremacistLawME == 1>>
-		<<set $fixedRace = $arcologies[0].FSSupremacistRace>>
-	<<elseif $arcologies[0].FSSubjugationistLawME == 1>>
-		<<set _races = setup.filterRacesLowercase.filter(race => race !== $arcologies[0].FSSubjugationistRace)>>
-		<<set $fixedRace = _races.random()>>
-	<</if>>
-	<<if $seeDicks == 0>>
-		<<set _customer = GenerateNewSlave("XX")>>
-	<<elseif $seeDicks == 100>>
-		<<set _customer = GenerateNewSlave("XY")>>
+<p>
+	You have a gap in your schedule in the morning, and decide to watch some FCTV
+	<<if $Concubine != 0>>
+		FCTV with your concubine, 
+		<span class="slave name simple">
+			$Concubine.slaveName.
+		</span>
 	<<else>>
-		<<set _seed = random(0,100)>>
-		<<if _seed > 50>>
-			<<set _customer = GenerateNewSlave("XY")>>
-		<<else>>
-			<<set _customer = GenerateNewSlave("XX")>>
-		<</if>>
-	<</if>>
-	<<set _customer = GenerateNewSlave()>>
-	<<set _customer.devotion = 0>>
-	<<set _customer.trust = 0>>
-	<<run setHealth(_customer, jsRandom(60, 80))>>
-	<<set _customer.muscles = 60>>
-	<<if _customer.weight > 130>>
-		<<set _customer.weight -= 100>>
-		<<set _customer.waist = random(-10,50)>>
+	FCTV.
 	<</if>>
-	<<if _customer.dick > 0>>
-		<<set _customer.dick = 8>>
-		<<set _customer.boobs = 0>>
-		<<set _customer.butt = 0>>
-		<<set _customer.hLength = 10>>
-		<<set _customer.clothes = "spats and a tank top">>
+	No sooner do you begin to watch a random show, than you have a notification that someone is here to see you. It seems to be a tech of some sort, complete with a small utility drone. A camera reveals the back of $his shirt, on which is written in block letters "FCTV SERVICE." Incredible. How do these people always find the worst time to stop in? <<if $assistant > 0>>Your assistant shrugs. At a gesture from you, _heA lets $him in.<<else>>You push a button to allow $him to come in.<</if>> This had better be good.
+</p>
+
+<p>
+	Presently, the tech enters the room and asks how your FCTV product is working. You tersely reply that it is fine,
+	<<if $FCTVremote == 1>>
+		although you're annoyed you had to purchase your own remote,
 	<<else>>
-		<<set _customer.boobs = 1000>>
-		<<set _customer.butt = 3>>
-		<<set _customer.hLength = 30>>
-		<<set _customer.clothes = "sport shorts and a sports bra">>
+		although you find the random nature of the shows a little annoying,
 	<</if>>
+	then ask the tech to cut to the point. $He shifts from one foot to the other, and then sheepishly admits that the service comes with a free remote that allows you to change the channels. Incredible! Why didn't you receive one? "It'<<s>>, uh, 8HGG Inc. poli<<c>>y to di<<s>>tribute remote<<s>> only after a trial period." <<if $assistantName == "your personal assistant">>Your personal assistant<<else>>$assistantName<</if>> quietly notifies you that "$He's lying. We've had no notification from 8HGG Inc. of a visit. It's definitely the same tech as last time; $he's trying to cover up $his mistake on a big contract. <i>They don't know $he's here.</i>"
+</p>
 
-	<<set _customer.behavioralFlaw = "arrogant">>
-	<<set _customer.markings = "none">>
-	<<set _customer.shoes = "flats">>
-	<<setLocalPronouns _customer 2>>
+<p>
+	$He unboxes the new remote and turns $his back to you, eagerly demonstrating how you can use it to watch any show you want. This could be your chance to turn the tables on FCTV and get some special "customer support" of your own.
+</p>
 
-	/* set up tech */
-	<<set $activeSlave.clitPiercing = 3>>
-	<<if $seeDicks == 0>>
-		<<set $activeSlave.backTat = "'FCTV SERVICE for clits' is tattooed across $his upper back.">>
-	<<elseif $seeDicks == 100>>
-		<<set $activeSlave.backTat = "'FCTV SERVICE for dicks' is tattooed across $his upper back.">>
-	<<else>>
-		<<set $activeSlave.backTat = "'FCTV SERVICE for clits and dicks' is tattooed across $his upper back.">>
-	<</if>>
-	<<set $activeSlave.stampTat = "'Shove that upgraded package here' is tattooed above $his rear.">>
-	<<run cashX(forceNeg(($modCost*2) + $SPcost), "slaveMod", $activeSlave)>> /* two tats and a smart piercing */
 
-	With a barely perceptible signal to $assistantName, $his drone whirs to a stop and begins to fall to the floor. Before it lands, a dart hits $him in the neck. $He collapses into darkness.
-	<br><br>
-	As the tech wakes up $he finds $himself resting on your couch, with you looking
-	<<if hasAnyEyes($activeSlave)>>
-		into $his eye<<if hasBothEyes($activeSlave)>>s<</if>>
-	<<else>>
-		at $him
-	<</if>>
-	with concern. $He winces in pain and asks what happened. You gravely informed $him that $he must been working very hard and may have been dehydrated: $he passed out. $His back was quite bruised but other than some nausea, your systems report $he should be fine. You encourage $him to keep up $his fluids, then hand $him back $his communicator and mention it looks like $he is going to be late for $his other appointment. With a panicked look on $his face the tech thanks you, seizes $his device and heads out the door followed by $his drone. "I haven't seen that much debt outside of a slave in quite some time," $assistantName remarks. "$He's fortunate to have that job."
-	<br><br>
-	The tech, $activeSlave.slaveName, shoves $his way through the crowd as quickly as $he can. In front of $him no one pays much attention, but the crowd behind begins to titter and even point and laugh. Oblivious, $activeSlave.slaveName arrives at the desired address and pauses to catch a breath. Watching from the eyes of $his drone, you can tell $his back is stiff and $his running had been uncomfortable. You can't help but laugh at $his shirt. Unknown to $activeSlave.slaveName, the entire back of $his shirt has been replaced with a clear panel of similar feeling material. It clearly shows $his $activeSlave.skin skin, as well as $his new tattoo. Like the lettered shirt it replaced it also says "FCTV SERVICE" in identical block letters, but below that it reads
-	<<if $seeDicks == 0>>
-		"for clits."
-	<<elseif $seeDicks == 100>>
-		"for dicks."
-	<<else>>
-		"for clits and dicks."
-	<</if>>
-	You finger your new TV remote, as well as a second remote designed for... <i>other</i> devices.
-	<br>
-	<<if $seeImages == 1>>
-		<div class="imageColumn">
-			<div class="imageRef medImg">
-				<<= SlaveArt(_customer, 2, 0)>>
-			</div>
-		</div>
-	<</if>>
-	The door opens, and one of your citizens appears. $activeSlave.slaveName doesn't know it, but you've made a small change to $his calendar. $His new client has a <<if _customer.dick > 0>>legendarily large dick<<else>>legendary love of anal<</if>>, even for $arcologies[0].name. The tech loses $his professional façade for a moment, glancing at the customer's <<if _customer.dick > 0>>enormous dick<<else>>hips<</if>> before gulping and gluing $his eyes on the customer's face. "Hi, I'm $activeSlave.slaveName from FCTV, and I'm here to take a look at your re<<c>>eiver."
-	<br>
-	"Certainly, it's in the bedroom on the bottom shelf." As the tech takes a step forward you touch the first button on your other remote. The tech freezes. You know from the work you did that $he would be experiencing a puzzling throbbing or buzzing sensation at the moment. $His smart piercing was installed with a few blockers to pain, but $his sense of touch should be very acute, even heightened with some local aphrodisiacs. There is also a vibe deep inside $his ass, with a glue that will take some time to wear off. <<if $activeSlave.prostate>>Its buzzing should be impacting $his prostrate directly, albeit subtly.<</if>>
-	<br>
-	"Are you OK, <<if $activeSlave.dick > 0>>sir<<else>>ma'am<</if>>?" The customer looks concerned. "It's... it's nothing." The tech replies. What on earth was happening? $He enters the house and follows the customer inside. You can see everything from the drone, and the tech seems to struggle a bit going up the stairs. The customer gestures inside a door, "It's just in here, like I said, bottom shelf." "Thank you!" the tech responds, and you notice $him checking out _his2 <<if _customer.dick > 0>>enormous dick<<else>>hips<</if>> a second time. This time $he's a little slower to meet $his customer's eyes. It's difficult to tell from the low quality of the drone camera, but you think you can begin to see a question forming there. As the tech passes _him2 and enters the room, even you can hear the sharp intake of breath from the customer. "Everything OK?" $activeSlave.slaveName asks, turning stiffly. "Uh, sure. Yeah." The customer responds. The tech turns back to the TV and the customer stares at $his back. You move the drone into the room and subtly find a good angle. Then bump up the vibration on the remote.
-	<br>
-	$activeSlave.slaveName stands perfectly still for a moment, clearly not sure what was going on. $He'd never been dehydrated before, and surely it always made you feel hot and dizzy. The head of the arcology had mentioned nausea; did that cover this odd feeling down below? $He felt... horny.
-	<br>
-	The customer quietly places a hand on $his shoulder and the tech jumps several <<if $showInches == 2>>inches<<else>>centimeters<</if>>. "Like I said, bottom shelf," _he2 repeats softly in $his ear.
-	<br>
-	The tech slowly lowers $himself to the floor, and as $his modified shirt rides up $his pants ride down, they reveal your second modification: a tramp stamp that reads "Shove that upgraded package here." The customer whistles and in an instant grabs a handful of ass. Perfect! The tech tries to stand up and object: "E<<x>>cu<<s>>e me <<if _customer.dick > 0>><<s>>ir<<else>>ma'am<</if>>, what...!" "Hold on baby," the customer replies and you pick that moment to hit the third button.
-	<br><br>
-	Channel 14 had fascinated you. Thanks to this bumbling tech you hadn't been able to see it very often, but the idea of an aphrodisiac that took effect instantly and then quickly vanished seemed incredibly useful to you. How fortunate that it had arrived in time for this moment. The tech would have felt a fairly large liquid 'splurt' from the vibe inside $his ass that would have been difficult to explain. Equally difficult to explain would be the now undeniably raging vibrations. But as $he turns $his head and you can see $his face on the camera, it's clear none of that matters. "Plea<<s>>e," the now flushed tech says. "M...mm my a<<ss>>."
-	<br><br>
-	<<if _customer.dick == 0>>
-		"Hmmm, I'm not sure I have the right <i>cable</i>." The _woman2 replies with a lewd smirk. "Let me see what I can do." The titanic plug _he2 produces was clearly purchased from the FCTV shopping network, but from the fact it was still in the box _he2 hadn't worked up the guts to try it $himself and hadn't had any other takers either.
-		<br>
-		Some part of the tech's mind is clearly clawing it's way back toward reason, but the moment passes and $he quickly drops $his pants and bend over. "Now I want to make sure that the remote works correctly, so start testing it." The bent over tech turns and begins cycling through porn, watching anal insertion after anal insertion. "Annnnnd IN!" the _woman2 proclaims. _He2 slowly grinds the plug home, ridges, bumps, warts and all. The tech winds up with $his nose pressed into the box, and $his lower back pressed into the TV, $his butt unable to go higher (or further from the intruder!) Then, with a slip you've seen many times, it slides home.
-		<br>
-		"Hmm, let me see. I think I have my OWN remote" the _woman2 says, as _he2 leans back on _his2 bed. Vibration sets in, strong enough that you can see $activeSlave.slaveName's ass quaking from your own suite. The _woman2 leans further back and beings to masturbate, moving _his2 eyes from the porn on the TV to the ass in front of _his2. "Ahh," _he2 says with a bit of malice. "I think..." _he2 stretches "I think your box needs an <i>update</i>." This time you have the drone in place to see the button _he2 presses, so you know it's "Fluid: All." You aren't sure how much "all" is, but the dildo is enormous, and you can see the tech's stomach distend. They both come at the same time.
-	<<else>>
-		The customer doesn't even blink. In an instant both pants are down and _he2's inside. There's no lube at first, but as you watch the scene unfolding in front of you it seems likely that some aphrodisiac is leaking out and helping. You hope it's safe for your citizen. The tech, of course, can get fucked. And $he is.
-		<br>
-		"Uh, that @@.lime;virgin ass@@!" the customer exclaims. "How's THIS for an upgraded package. Last time I had a billing problem you folks told me where to shove it. Well here. It. Goes!" From the way they collapse over each other, it seems they orgasmed at about the same time.
-	<</if>>
-	<<set $activeSlave.anus = 1>>
-	<<run seX($activeSlave, "anal", "public", "penetrative")>>
-	<br><br>
-	Time passes...
-	<br><br>
-	It seems the aphrodisiacs are wearing off, and the tech is stirring. Sitting up, $he looks confused. Time for a call. Once $he is standing back in your office, you sternly show $him portions of video, explaining how unprofessional $his behavior is and how deeply upset you are at the way your citizen was treated. You tell $him you know $he was on the clock, and you know $he was not supposed to be here, CERTAINLY not while getting fucked with a mockery of $his employer marked on $his back. $He begins to quake, and begs you to help $him. Nice to have the TV company begging you to help <i>them</i>, for once.
-	<br>
+<p id="scene">
+	<<link "\"Upgrade\" the tech for a little humiliation">>
+		<<replace "#scene">>
 
-	<span id="result">
-	<<set _ContractCost = 1000>>
-	<<if $cash >= _ContractCost>>
-		<br><<link "Enslave $him">>
-			<<run cashX(forceNeg(_ContractCost), "slaveTransfer", $activeSlave)>>
-			<<replace "#result">>
-				<<set $analTotal++>>
-				$activeSlave.slaveName knows $he has nowhere to turn. Sobbing, $he complies with the process.
-				<<include "New Slave Intro">>
-			<</replace>>
-		<</link>>
-		<br><<link "Sentence $him to a day in a wall with a TV, then enslave $him">>
-			<<set $analTotal++>>
-			<<run healthDamage($activeSlave, 10)>>
-			<<set $activeSlave.behavioralFlaw = "odd">>
-			<<set $activeSlave.sexualFlaw = "hates penetration">>
-			<<set $activeSlave.anus = 2>>
-			<<set _fuckCount = random(20,35)>>
-			<<run seX($activeSlave, "anal", "public", "penetrative", _fuckCount)>>
-			<<if $activeSlave.vagina > -1>>
-				<<if $activeSlave.vagina < 2>>
-					<<set $activeSlave.vagina = 2>>
+			/* set up customer */
+			<<set $activeSlaveOneTimeMinAge = 25>>
+			<<set $activeSlaveOneTimeMaxAge = 35>>
+			<<set $one_time_age_overrides_pedo_mode = 1>>
+			<<set $oneTimeDisableDisability = 1>>
+			<<if $arcologies[0].FSSupremacistLawME == 1>>
+				<<set $fixedRace = $arcologies[0].FSSupremacistRace>>
+			<<elseif $arcologies[0].FSSubjugationistLawME == 1>>
+				<<set _races = setup.filterRacesLowercase.filter(race => race !== $arcologies[0].FSSubjugationistRace)>>
+				<<set $fixedRace = _races.random()>>
+			<</if>>
+			<<if $seeDicks > random(1,99)>>
+				<<set _customer = GenerateNewSlave("XY")>>
+			<<else>>
+				<<set _customer = GenerateNewSlave("XX")>>
+			<</if>>
+			<<set _customer = GenerateNewSlave()>>
+			<<set _customer.devotion = 0>>
+			<<set _customer.trust = 0>>
+			<<run setHealth(_customer, jsRandom(60, 80))>>
+			<<set _customer.muscles = 60>>
+			<<if _customer.weight > 130>>
+				<<set _customer.weight -= 100>>
+				<<set _customer.waist = random(-10,50)>>
+			<</if>>
+			<<if _customer.dick > 0>>
+				<<set _customer.dick = 8>>
+				<<set _customer.boobs = 0>>
+				<<set _customer.butt = 0>>
+				<<set _customer.hLength = 10>>
+				<<set _customer.clothes = "spats and a tank top">>
+			<<else>>
+				<<set _customer.boobs = 1000>>
+				<<set _customer.butt = 3>>
+				<<set _customer.hLength = 30>>
+				<<set _customer.clothes = "sport shorts and a sports bra">>
+			<</if>>
+
+			<<set _customer.behavioralFlaw = "arrogant">>
+			<<set _customer.markings = "none">>
+			<<set _customer.shoes = "flats">>
+			<<setLocalPronouns _customer 2>>
+
+			/* set up tech */
+			<<set $activeSlave.clitPiercing = 3>>
+			<<if $seeDicks == 0>>
+				<<set $activeSlave.backTat = "'FCTV SERVICE for clits' is tattooed across $his upper back.">>
+			<<elseif $seeDicks == 100>>
+				<<set $activeSlave.backTat = "'FCTV SERVICE for dicks' is tattooed across $his upper back.">>
+			<<else>>
+				<<set $activeSlave.backTat = "'FCTV SERVICE for clits and dicks' is tattooed across $his upper back.">>
+			<</if>>
+			<<set $activeSlave.stampTat = "'Shove that upgraded package here' is tattooed above $his rear.">>
+			<<run cashX(forceNeg(($modCost*2) + $SPcost), "slaveMod", $activeSlave)>> /* two tats and a smart piercing */
+
+			<p>
+				With a barely perceptible signal to $assistantName, $his drone whirs to a stop and begins to fall to the floor. Before it lands, a dart hits $him in the neck. $He collapses into darkness.
+			</p>
+
+			<p>
+				As the tech wakes up $he finds $himself resting on your couch, with you looking
+				<<if hasAnyEyes($activeSlave)>>
+					into $his eye<<if hasBothEyes($activeSlave)>>s<</if>>
+				<<else>>
+					at $him
 				<</if>>
-				<<if isFertile($activeSlave) && $activeSlave.eggType == "human">>
-					<<= knockMeUp($activeSlave, 40, 2, -2)>>
+				with concern. $He winces in pain and asks what happened. You gravely inform $him that $he must been working very hard and may have been dehydrated: $he passed out. $His back was quite bruised but other than some nausea, your systems report $he should be fine. You encourage $him to keep up $his fluids, then hand $him back $his communicator and mention it looks like $he is going to be late for $his other appointment. With a panicked look on $his face the tech thanks you, seizes $his device and heads out the door followed by $his drone. "I haven't seen that much debt outside of a slave in quite some time," $assistantName remarks. "$He's fortunate to have that job."
+			</p>
+
+			<p>
+				The tech, $activeSlave.slaveName, shoves $his way through the crowd as quickly as $he can. In front of $him no one pays much attention, but the crowd behind begins to titter and even point and laugh. Oblivious, $activeSlave.slaveName arrives at the desired address and pauses to catch a breath. Watching from the eyes of $his drone, you can tell $his back is stiff and $his running had been uncomfortable. You can't help but laugh at $his shirt. Unknown to $activeSlave.slaveName, the entire back of $his shirt has been replaced with a clear panel of similar feeling material. It clearly shows $his $activeSlave.skin skin, as well as $his new tattoo. Like the lettered shirt it replaced it also says "FCTV SERVICE" in identical block letters, but below that it reads
+				<<if $seeDicks == 0>>
+					"for clits."
+				<<elseif $seeDicks == 100>>
+					"for dicks."
+				<<else>>
+					"for clits and dicks."
 				<</if>>
-				<<run seX($activeSlave, "vaginal", "public", "penetrative", _fuckCount*2)>>
-			<</if>>
-			<<run cashX(forceNeg(_ContractCost), "slaveTransfer", $activeSlave)>>
+				You finger your new TV remote, as well as a second remote designed for... <i>other</i> devices.
+			</p>
 
-			<<replace "#result">>
-				<br>You can't possibly be the only one annoyed at FCTV customer service. You soon have $him bent over with $his upper half encased in a wall, and $his lower half along with $his tramp stamp "$activeSlave.stampTat" exposed to the entire arcology. A large monitor above $his ass ensures every detail of $his expressions are available, and aphrodisiacs ensure they are interesting. Long waits for tech support are common in this broken world, but even so, the queue that forms as the word gets out is quite impressive. $He spends a torturous day in the wall before being hauled in for enslavement, somewhat @@.red;the worse for wear@@ and @@.red;acting oddly@@ due to $his ordeal, bruises all over $his body, cum leaking from $his @@.lime;loosened@@ anus<<if $activeSlave.vagina > -1>> and @@.lime;fucked-out@@ pussy<</if>>. The public @@.green;enjoys the fun.@@
-				<<if $FCTVreceiver <= 3>>
-					Frustrations released, they also seem more likely to watch FCTV.
-					<<set $FCTVreceiver++>>
+			<p>
+				<<if $seeImages == 1>>
+					<div class="imageColumn">
+						<div class="imageRef medImg">
+							<<= SlaveArt(_customer, 2, 0)>>
+						</div>
+					</div>
 				<</if>>
-				<<run repX(500, "event", $activeSlave)>>
-				<<set $arcologies[0].prosperity += 2>>
-				<<include "New Slave Intro">>
-			<</replace>>
-		<</link>>
-	<</if>>
-	<br><<link "Let $him go">>
-		<<replace "#result">>
-			<br>You consider yourself well repaid for the fun you have had today, and dismiss the tech. $He seems incredulous for a second, and then incredibly thankful. $He hobbles out of the room as quickly as $he can, leaking a little fluid with every step. Naturally, you remember the vibe as soon as $he leaves. Oh well, it will work itself loose eventually, and you have plenty more. A fair exchange, really — one small forgotten tech product for another.
-		<</replace>>
-	<</link>>
-	<br><<link "Let $him go but release the footage">>
-		<<replace "#result">>
-			<br>You know well that in
-			<<if $arcologies[0].FSRomanRevivalist != "unset">>
-				Roman days,
-			<<elseif $arcologies[0].FSAztecRevivalist != "unset">>
-				Aztec days,
-			<<elseif $arcologies[0].FSEgyptianRevivalist != "unset">>
-				Ancient Egypt,
-			<<elseif $arcologies[0].FSEdoRevivalist != "unset">>
-				the Edo period,
-			<<elseif $arcologies[0].FSArabianRevivalist != "unset">>
-				the Caliphates,
-			<<elseif $arcologies[0].FSChineseRevivalist != "unset">>
-				imperial China,
+				The door opens, and one of your citizens appears. $activeSlave.slaveName doesn't know it, but you've made a small change to $his calendar. $His new client has a <<if _customer.dick > 0>>legendarily large dick<<else>>legendary love of anal<</if>>, even for $arcologies[0].name. The tech loses $his professional façade for a moment, glancing at the customer's <<if _customer.dick > 0>>enormous bulge<<else>>hips<</if>> before gulping and gluing $his eyes on the customer's face. "Hi, I'm $activeSlave.slaveName from FCTV; I'm here to take a look at your re<<c>>eiver?"
+			</p>
+
+			<p>
+				"Certainly, it's in the bedroom on the bottom shelf." As the tech takes a step forward you touch the first button on your other remote. The tech freezes. You know from the work you did that $he would be experiencing a puzzling throbbing or buzzing sensation at the moment. $His smart piercing was installed with a few blockers to pain, but $his sense of touch should be very acute, even heightened with some local aphrodisiacs. There is also a vibe deep inside $his ass, with a glue that will take some time to wear off. <<if $activeSlave.prostate>>Its buzzing should be impacting $his prostrate directly, albeit subtly.<</if>>
+			</p>
+
+			<p>
+				"Are you OK, <<if $activeSlave.dick > 0>>sir<<else>>ma'am<</if>>?" The customer looks concerned. "It's... it's nothing." The tech replies. What on earth was happening? $He enters the house and follows the customer inside. You can see everything from the drone, and the tech seems to struggle a bit going up the stairs. The customer gestures inside a door, "It's just in here, like I said, bottom shelf." "Thank you!" the tech responds, and you notice $him checking out _his2 <<if _customer.dick > 0>>crotch<<else>>hips<</if>> a second time. This time $he's a little slower to meet $his customer's eyes. It's difficult to tell from the low quality of the drone camera, but you think you can begin to see a question forming there. As the tech passes _him2 and enters the room, even you can hear the sharp intake of breath from the customer. "Everything OK?" $activeSlave.slaveName asks, turning stiffly. "Uh, sure. Yeah." The customer responds. The tech turns back to the TV and the customer stares at $his back. You move the drone into the room and subtly find a good angle, then bump up the vibration a few levels with the remote.
+			</p>
+
+			<p>
+				$activeSlave.slaveName stands perfectly still for a moment, clearly not sure what was going on. $He'd never been dehydrated before, and surely it always made you feel hot and dizzy. The head of the arcology had mentioned nausea; did that cover this odd feeling down below? $He felt... horny.
+			</p>
+
+			<p>
+				The customer quietly places a hand on $his shoulder and the tech jumps several <<if $showInches == 2>>inches<<else>>centimeters<</if>>. "Like I said, bottom shelf," _he2 repeats softly in $his ear.
+			</p>
+
+			<p>
+				The tech slowly bends toward the floor, and as $his modified shirt rides up and $his pants ride down, they reveal your second modification: a tramp stamp that reads "Shove that upgraded package here." The customer whistles and in an instant grabs a handful of ass. Perfect! The tech tries to stand up and object: "E<<x>>cu<<s>>e me <<if _customer.dick > 0>><<s>>ir<<else>>ma'am<</if>>, what...!" "Hold on baby," the confused customer replies and you pick that moment to hit the third button.
+			</p>
+
+			<p>
+				Channel 14 had fascinated you. Thanks to this bumbling tech you hadn't been able to see it very often, but the idea of an aphrodisiac that took effect instantly and then quickly vanished seemed incredibly useful to you. How fortunate that it had arrived in time for this moment. The tech would have felt a fairly large liquid 'splurt' from the vibe inside $his ass that would have been difficult to explain. Equally difficult to explain would be the now undeniably raging vibrations. But as $he turns $his head and you can see $his face on the camera, it's clear none of that matters. "Plea<<s>>e," the now flushed tech says. "M...mm my a<<ss>>."
+			</p>
+
+			<<if _customer.dick == 0>>
+				<p>
+					"Hmmm, I'm not sure I have the right <i>cable</i>." The _woman2 replies with a lewd smirk. "Let me see what I can do." The titanic plug _he2 produces was clearly purchased from the FCTV shopping network, but from the fact it was still in the box _he2 hadn't worked up the guts to try it $himself and hadn't had any other takers either.
+				</p>
+
+				<p>
+					Some part of the tech's mind is clearly alarmed by the size of the plug, but after a moment of shyness $he quickly drops $his pants and bends over. "Now I want to make sure that the remote works correctly, so start testing it." The bent over tech turns and begins cycling through porn, watching anal insertion after anal insertion. "Annnnnd IN!" the _woman2 proclaims. _He2 slowly grinds the plug home, ridges, bumps, warts and all. The tech winds up with $his nose pressed into the box, and $his lower back pressed into the TV, $his butt unable to go higher (or further from the intruder!) Then, with a slip you've seen many times, it slides home.
+				</p>
+
+				<p>
+					"Hmm, let me see. I think I have my OWN remote" the _woman2 says, as _he2 leans back on _his2 bed. Vibration sets in, strong enough that you can see $activeSlave.slaveName's ass quaking from your own suite. The _woman2 leans further back and beings to masturbate, moving _his2 eyes from the porn on the TV to the ass in front of _his2. "Ahh," _he2 says with a bit of malice. "I think..." _he2 stretches "I think your box needs an <i>update</i>." This time you have the drone in place to see the button _he2 presses, so you know it's "Fluid: All." You aren't sure how much "all" is, but the dildo is enormous, and you can see the tech's stomach distend. They both come at the same time.
+				</p>
 			<<else>>
-				ancient times,
+				<p>
+					The customer doesn't even blink. In an instant both pants are down and _he2's inside. There's no lube at first, but as you watch the scene unfolding in front of you it seems likely that some aphrodisiac is leaking out and helping. You hope it's safe for your citizen. The tech, of course, can get fucked. And $he is.
+				</p>
+
+				<p>
+					"Uh, that <span class="virginity loss">virgin ass</span>!" the customer exclaims. "How's THIS for an upgraded package. Last time I had a billing problem you folks told me where to shove it. Well here. It. Goes!" From the way they collapse over each other, it seems they orgasmed at about the same time.
+				</p>
 			<</if>>
-			exile was the worst punishment. You let $him know you have no intention of helping $him. In fact, you plan to release video of $his scandalous behavior on the web. As $his knees quake you again show $him slightly doctored video of $him eagerly receiving $his tattoos, and then undoctored video of $him enjoying $his "customer service." You doubt 8HGG Inc. will be pleased with $his enthusiasm for the brand. But, it's not your problem. Begging for mercy, the tech trails a small stream of fluids across the floor as your drones carry $him out. A smaller drone follows along cleaning up the mess. As the doors shut, you set the slave remote on max and break it in half over the trash.
+			<<set $activeSlave.anus = 1>>
+			<<run seX($activeSlave, "anal", "public", "penetrative")>>
+			<p>
+				Time passes...
+			</p>
+
+			<p>
+				It seems the aphrodisiacs are wearing off, and the tech is stirring. Sitting up, $he looks confused. Time for a call.
+			</p>
+
+			<p>
+				Once $he is standing back in your office, you sternly show $him portions of video, explaining how unprofessional $his behavior is and how deeply upset you are at the way your citizen was treated. You tell $him you know $he was on the clock, and you know $he was not supposed to be here, CERTAINLY not while getting fucked with a mockery of $his employer marked on $his back. $He begins to quake, and begs you to help $him. Nice to have the TV company begging you to help <i>them</i>, for once.
+			</p>
+
+			<p id="result">
+				<<set _ContractCost = 1000>>
+				<<if $cash >= _ContractCost>>
+					<div>
+						<<link "Enslave $him">>
+							<<run cashX(forceNeg(_ContractCost), "slaveTransfer", $activeSlave)>>
+							<<replace "#result">>
+								<<set $analTotal++>>
+								$activeSlave.slaveName knows $he has nowhere to turn. Sobbing, $he complies with the process.
+								<p>
+									<<include "New Slave Intro">>
+								</p>
+							<</replace>>
+						<</link>>
+					</div>
+					<div>
+						<<link "Sentence $him to a day in a wall with a TV, then enslave $him">>
+							<<set $analTotal++>>
+							<<run healthDamage($activeSlave, 10)>>
+							<<set $activeSlave.behavioralFlaw = "odd">>
+							<<set $activeSlave.sexualFlaw = "hates penetration">>
+							<<set $activeSlave.anus = 2>>
+							<<set _fuckCount = random(20,35)>>
+							<<run seX($activeSlave, "anal", "public", "penetrative", _fuckCount)>>
+							<<if $activeSlave.vagina > -1>>
+								<<if $activeSlave.vagina < 2>>
+									<<set $activeSlave.vagina = 2>>
+								<</if>>
+								<<if isFertile($activeSlave) && $activeSlave.eggType == "human">>
+									<<= knockMeUp($activeSlave, 40, 2, -2)>>
+								<</if>>
+								<<run seX($activeSlave, "vaginal", "public", "penetrative", _fuckCount*2)>>
+							<</if>>
+							<<run cashX(forceNeg(_ContractCost), "slaveTransfer", $activeSlave)>>
+
+							<<replace "#result">>
+								You can't possibly be the only one annoyed at FCTV customer service. You soon have $him bent over with $his upper half encased in a wall, and $his lower half along with $his tramp stamp "$activeSlave.stampTat" exposed to the entire arcology. A large monitor above $his ass ensures every detail of $his expressions are available, and aphrodisiacs ensure they are interesting. Long waits for tech support are common in this broken world, but even so, the queue that forms as the word gets out is quite impressive. $He spends a torturous day in the wall before being hauled in for enslavement, somewhat
+								<span class="health dec">the worse for wear</span>
+								and 
+								<span class="flaw gain">
+									acting oddly
+								</span>
+								due to $his ordeal, bruises all over $his body, cum leaking from $his 
+								<span class="virginity loss">
+									loosened
+								</span>
+								<<if $activeSlave.vagina > -1>>
+									anus and
+									<span class="virginity loss">
+										fucked-out
+									</span>
+									pussy.
+								<<else>>
+									anus.
+								<</if>>
+								The public
+								<span class="reputation inc">
+									enjoys the fun.
+								</span>
+								<<if $FCTVreceiver <= 3>>
+									Frustrations released, they also seem more likely to watch FCTV.
+									<<set $FCTVreceiver++>>
+								<</if>>
+								<<run repX(500, "event", $activeSlave)>>
+								<<set $arcologies[0].prosperity += 2>>
+								<p>
+									<<include "New Slave Intro">>
+								</p>
+							<</replace>>
+						<</link>>
+					</div>
+				<</if>>
+				<div>
+					<<link "Let $him go">>
+						<<replace "#result">>
+							You consider yourself well repaid for the fun you have had today, and dismiss the tech. $He seems incredulous for a second, and then incredibly thankful. $He hobbles out of the room as quickly as $he can, leaking a little fluid with every step. Naturally, you remember the vibe as soon as $he leaves. Oh well, it will work itself loose eventually, and you have plenty more. A fair exchange, really — one small forgotten tech product for another.
+						<</replace>>
+					<</link>>
+				</div>
+				<div>
+					<<link "Let $him go but release the footage">>
+						<<replace "#result">>
+							You know well that in
+							<<if $arcologies[0].FSRomanRevivalist != "unset">>
+								Roman days,
+							<<elseif $arcologies[0].FSAztecRevivalist != "unset">>
+								Aztec days,
+							<<elseif $arcologies[0].FSEgyptianRevivalist != "unset">>
+								Ancient Egypt,
+							<<elseif $arcologies[0].FSEdoRevivalist != "unset">>
+								the Edo period,
+							<<elseif $arcologies[0].FSArabianRevivalist != "unset">>
+								the Caliphates,
+							<<elseif $arcologies[0].FSChineseRevivalist != "unset">>
+								imperial China,
+							<<else>>
+								ancient times,
+							<</if>>
+							exile was the worst punishment. You let $him know you have no intention of helping $him. In fact, you plan to release video of $his scandalous behavior on the web. As $his knees quake you again show $him slightly doctored video of $him eagerly receiving $his tattoos, and then undoctored video of $him enjoying $his "customer service." You doubt 8HGG Inc. will be pleased with $his enthusiasm for the brand. But, it's not your problem. Begging for mercy, the tech trails a small stream of fluids across the floor as your drones carry $him out. A smaller drone follows along cleaning up the mess. As the doors shut, you set the slave remote on max and break it in half over the trash.
+						<</replace>>
+					<</link>>
+				</div>
+			</p>
 		<</replace>>
 	<</link>>
-	</span>
-	<</replace>>
-<</link>>
-</span>
+</p>
diff --git a/src/pregmod/widgets/pregmodWidgets.tw b/src/pregmod/widgets/pregmodWidgets.tw
index b7b05d0bc64e1b59c654d6fb5c50b0e33c18d1b6..89bf73f4cd289dad0c2bf6573e0c17ac98387b71 100644
--- a/src/pregmod/widgets/pregmodWidgets.tw
+++ b/src/pregmod/widgets/pregmodWidgets.tw
@@ -144,34 +144,6 @@
 	<<set _WivesALisp = lispReplace(_WivesA)>>
 <</widget>>
 
-<<widget "PCAgeImplantAdjustmentUp">>
-	<<if $PC.visualAge < 35>>
-		<<set $PC.visualAge += 15>>
-	<<elseif $PC.visualAge <= 50>>
-		<<set $PC.visualAge += 10>>
-	<<elseif $PC.visualAge < 60>>
-		<<set $PC.visualAge += 5>>
-	<<elseif $PC.visualAge < 80>>
-		<<set $PC.visualAge += 3>>
-	<<else>>
-		<<set $PC.visualAge += 1>>
-	<</if>>
-<</widget>>
-
-<<widget "PCAgeImplantAdjustmentDown">>
-	<<if $PC.visualAge > 80>>
-		<<set $PC.visualAge -= 40>>
-	<<elseif $PC.visualAge >= 70>>
-		<<set $PC.visualAge -= 30>>
-	<<elseif $PC.visualAge > 50>>
-		<<set $PC.visualAge -= 20>>
-	<<elseif $PC.visualAge > 36>>
-		<<set $PC.visualAge -= 10>>
-	<<else>>
-		<<set $PC.visualAge -= 5>>
-	<</if>>
-<</widget>>
-
 <<widget "InitStandards">>
 
 <<set $activeStandard = {age: 24, weightMax: 0, weightMin: 0, musclesMin: 0, musclesMax: 0, raceSup: "white", raceSub: "white", boobs: 0, boobsImplant: 0, lactation: 0, hips: 0, hipsImplant: 0, butt: 0, buttImplant: 0, face: 0, faceImplant: 0, lips: 15, lipsImplant: 0, chem: 0, addict: 0, intelligence: 0, intelligenceImplant: 0, bellyImplant: -1, beauty: 0, dick: 0, balls: 0, health: 0, skill: 0, accent: 0, height: 150, energy: 100}>>
@@ -938,124 +910,6 @@ $activeSlave.slaveName is up for review:
 
 <</widget>>
 
-/*
-<<widget "GenSkinTone">>
-
-black 5
-brown 4
-dark 3
-olive 2
-light brown 1
-natural 0
-light -1
-white -2
-fair -3
-pale -4
-extremely pale -5
-
-<<set _skin = 0>>
-<<set _skin0 = 0>>
-<<set _skin1 = 0>>
-
-<<switch $args[0].skin>>
-<<case "black">>
-	<<set _skin0 = 10>>
-<<case "brown">>
-	<<set _skin0 = 9>>
-<<case "dark">>
-	<<set _skin0 = 8>>
-<<case "olive">>
-	<<set _skin0 = 7>>
-<<case "light brown">>
-	<<set _skin0 = 6>>
-<<case "natural">>
-	<<set _skin1 = 5>>
-<<case "light">>
-	<<set _skin0 = 4>>
-<<case "white">>
-	<<set _skin0 = 3>>
-<<case "fair">>
-	<<set _skin0 = 2>>
-<<case "pale">>
-	<<set _skin0 = 1>>
-<<case "extremely pale">>
-	<<set _skin0 = 0>>
-<<default>>
-	<<set _skin0 = 5>>
-<</switch>>
-
-<<switch $args[1].skin>>
-<<case "black">>
-	<<set _skin1 = 10>>
-<<case "brown">>
-	<<set _skin1 = 9>>
-<<case "dark">>
-	<<set _skin1 = 8>>
-<<case "olive">>
-	<<set _skin1 = 7>>
-<<case "light brown">>
-	<<set _skin1 = 6>>
-<<case "natural">>
-	<<set _skin1 = 5>>
-<<case "light">>
-	<<set _skin1 = 4>>
-<<case "white">>
-	<<set _skin1 = 3>>
-<<case "fair">>
-	<<set _skin1 = 2>>
-<<case "pale">>
-	<<set _skin1 = 1>>
-<<case "extremely pale">>
-	<<set _skin1 = 0>>
-<<default>>
-	<<set _skin1 = 5>>
-<</switch>>
-
-<<set _skin = Math.round((_skin1+_skin0)/2)>>
-
-<<switch _skin>>
-<<case 10>>
-	<<set $activeSlave.skin = "black">>
-<<case 9>>
-	<<set $activeSlave.skin = "brown">>
-<<case 8>>
-	<<set $activeSlave.skin = "dark">>
-<<case 7>>
-	<<set $activeSlave.skin = "olive">>
-<<case 6>>
-	<<set $activeSlave.skin = "light brown">>
-<<case 5>>
-	<<set $activeSlave.skin = "natural">>
-<<case 4>>
-	<<set $activeSlave.skin = "light">>
-<<case 3>>
-	<<set $activeSlave.skin = "white">>
-<<case 2>>
-	<<set $activeSlave.skin = "fair">>
-<<case 1>>
-	<<set $activeSlave.skin = "pale">>
-<<case 0>>
-	<<set $activeSlave.skin = "extremely pale">>
-<<default>>
-	<<set $activeSlave.skin = either($args[0].skin, $args[1].skin)>>
-<</switch>>
-
-<</widget>>
-*/
-
-<<widget "GenSkinTone">>
-<<script>>
-(function() {
-	var skinToMelanin = {'pure black': 10, ebony: 9.5, black: 9, 'dark brown': 8.5, brown: 8, 'light brown': 7.5, dark: 7, 'dark olive': 6.5, bronzed: 6, tanned: 5.5, natural: 5, olive: 4.5, 'light olive': 4, lightened: 3.5, light: 3, white: 2.5, fair: 2, 'very fair': 1.5, 'extremely fair': 1.25, pale: 1, 'extremely pale': 0.5, 'pure white': 0};
-	var parents = State.variables.args;
-	var skin0 = parents[0] ? (skinToMelanin[parents[0].skin] || 5) : 3;
-	var skin1 = parents[1] ? (skinToMelanin[parents[1].skin] || 5) : 3;
-	var skin = Math.round(Math.random() * (skin1 - skin0) + skin0);
-	State.variables.activeSlave.skin = ['pure white', 'extremely pale', 'pale', 'extremely fair', 'very fair', 'fair', 'white', 'light', 'lightened', 'light olive', 'olive', 'natural', 'tanned', 'bronzed', 'dark olive', 'dark', 'light brown', 'brown', 'dark brown', 'black', 'ebony', 'pure black'][skin];
-})();
-<</script>>
-<</widget>>
-
 <<widget "ParentNames">>
 <<set _currentSlaveNames = $slaves.map(s => s.slaveName)>>
 <<if $allowMaleSlaveNames>>
diff --git a/src/uncategorized/PESS.tw b/src/uncategorized/PESS.tw
index 7eb76a7e239731ff4a1f95dea53360ac40b13efe..1afe67e53607ecbabb0d75afe0a365952a4aacee 100644
--- a/src/uncategorized/PESS.tw
+++ b/src/uncategorized/PESS.tw
@@ -284,7 +284,7 @@ $He sees you examining at $him, and looks back at you submissively, too tired to
 				<<set $slaves[$i].waist -= 20>>
 				<<run cashX(forceNeg(Math.trunc(200*$upgradeMultiplierMedicine)), "slaveSurgery", $activeSlave)>>
 			<<elseif $slaves[$i].visualAge > 35 && $slaves[$i].ageImplant == 0 && $slaves[$i].faceImplant <= 10>>
-				<<set $slaves[$i].ageImplant = 1>><<run ageImplantAdjustment($slaves[$i])>>
+				<<run applyAgeImplant($slaves[$i])>>
 				<<set $slaves[$i].faceImplant += 25-5*Math.trunc($PC.skill.medicine/100)-5*$surgeryUpgrade>>
 				<<run cashX(forceNeg(Math.trunc(200*$upgradeMultiplierMedicine)), "slaveSurgery", $activeSlave)>>
 			<<elseif $slaves[$i].lips <= 40>>
diff --git a/src/uncategorized/clinicReport.tw b/src/uncategorized/clinicReport.tw
index b6e6aa27e15e02cb86642489f794c7a33382ab61..1ffad45a1861219ad7aebddac1231c2769dc86b1 100644
--- a/src/uncategorized/clinicReport.tw
+++ b/src/uncategorized/clinicReport.tw
@@ -213,6 +213,7 @@
 		<span class='slave-name'><<= SlaveFullName($slaves[_FLs])>></span> is serving as the clinical nurse.
 		<br>&nbsp;&nbsp;&nbsp;
 		<<= saChoosesOwnClothes($slaves[$i])>>
+		<<run tired($slaves[$i])>>
 		<<include "SA rules">>
 		<<include "SA diet">>
 		<<include "SA long term effects">>
@@ -223,6 +224,7 @@
 	<<else>>
 		<<silently>>
 		<<run saChoosesOwnClothes($slaves[$i])>>
+		<<run tired($slaves[$i])>>
 		<<include "SA rules">>
 		<<include "SA diet">>
 		<<include "SA long term effects">>
diff --git a/src/uncategorized/main.tw b/src/uncategorized/main.tw
index 1c993ffdbf0e1404741e26d2aec41b2476a0955c..a2603af7a3190ab3bb0d8cf786698bd55196b355 100644
--- a/src/uncategorized/main.tw
+++ b/src/uncategorized/main.tw
@@ -166,34 +166,14 @@ __''MAIN MENU''__&nbsp;&nbsp;&nbsp;&nbsp;//[[Summary Options]]//
 <</for>>
 <</if>>
 
-<<if (def _BG) && ($slaves[_BG].assignment == "guard you") && ($useSlaveSummaryOverviewTab != 1)>>
-	<<set $i = _BG>>
-	<<set _j = "Back", _k = "AS Dump", _l = "Main">>
-	<<setLocalPronouns $slaves[$i]>>
-	<<set _GO = "idiot ball">>
-	<br>
-	//<<= App.Interact.UseGuard($slaves[$i])>>//
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;[["Use "+$his+" mouth"|FLips][$activeSlave = $slaves[_BG], $nextButton = _j, $nextLink = _k, $returnTo = _l]]
-	| [["Play with "+$his+" tits"|FBoobs][$activeSlave = $slaves[_BG], $nextButton = _j, $nextLink = _k, $returnTo = _l]]
-	<<if canDoVaginal($slaves[_BG])>>
-		| [["Fuck "+$him|FVagina][$activeSlave = $slaves[_BG], $nextButton = _j, $nextLink = _k, $returnTo = _l]]
-		<<if canDoAnal($slaves[_BG])>>
-			| [["Use "+$his+" holes"|FButt][$activeSlave = $slaves[_BG],$nextButton = _j, $nextLink = _k, $returnTo = _l]]
-		<</if>>
-		<<if $slaves[_BG].belly >= 300000>>
-			| [["Fuck "+$him+" over "+$his+" belly"|FBellyFuck][$activeSlave = $slaves[_BG], $nextButton = _j, $nextLink = _k, $returnTo = _l]]
-		<</if>>
-	<</if>>
-	/*check*/
-	<<if canPenetrate($slaves[_BG])>>
-		| [["Ride "+$him|FDick][$activeSlave = $slaves[_BG], $nextButton = _j, $nextLink = _k, $returnTo = _l]]
-	<</if>>
-	<<if canDoAnal($slaves[_BG])>>
-		| [["Fuck "+$his+" ass"|FAnus][$activeSlave = $slaves[_BG], $nextButton = _j, $nextLink = _k, $returnTo = _l]]
-	<</if>>
-	| [["Abuse "+$him|Gameover][$gameover = _GO]]
-<</if>>
-
+<span id="BG"></span>
+<<script>>
+	$(document).one(':passageend', () => {
+		$('#BG').append(
+			App.MainView.useGuard(),
+		);
+	});
+<</script>>
 
 <<set $activeSlave = $slaves.random()>>
 <<if $activeSlave && ($activeSlave.assignment != "please you") && ($activeSlave.assignment != "guard you")>>
diff --git a/src/uncategorized/multiImplant.tw b/src/uncategorized/multiImplant.tw
index a0d56e8587ded1d595f8bc32968cefca03b29fd5..0d2fc618d11e3200be48e0c7c7b64c564988453f 100644
--- a/src/uncategorized/multiImplant.tw
+++ b/src/uncategorized/multiImplant.tw
@@ -24,7 +24,10 @@ You head down to your <<if $surgeryUpgrade == 1>>heavily upgraded and customized
 				<<continue>>
 			<</if>>
 			<<if !_actions[_l].canImplant($activeSlave)>>
-				@@.red;ERROR: <<print _actions[_l].implantError($activeSlave)>>@@<br>
+				<<set _error = _actions[_l].implantError($activeSlave)>>
+				<<if _error !== "">>
+					@@.red;ERROR: <<print _error>>@@<br>
+				<</if>>
 			<<elseif $activeSlave.health.health - _actions[_l].healthImpact < -75>>
 				Estimated health impact too high, skipping further surgeries.
 				<<set _break = true>>
diff --git a/src/uncategorized/newSlaveIntro.tw b/src/uncategorized/newSlaveIntro.tw
index 3debe1cffecfb2b15482341b32ef5200768ecbf6..19a2711b0a8ad5c1f08038359ea49d7dc185a721 100644
--- a/src/uncategorized/newSlaveIntro.tw
+++ b/src/uncategorized/newSlaveIntro.tw
@@ -96,7 +96,7 @@
 	<<set $specialSlave = 0>>
 <</if>>
 
-<br>
+<p>
 The legalities completed, <span class='slave-name'><<= SlaveFullName($activeSlave)>></span> <<if !hasAnyLegs($activeSlave)>><<if isAmputee($activeSlave)>>lies<<else>>rests<</if>> helplessly on your desk,<<elseif !canWalk($activeSlave)>>kneels before your desk,<<else>>stands before your desk,<</if>>
 <<if $activeSlave.devotion < -50>>
 	<<if canSee($activeSlave)>>looking you in the eyes<<else>>directly facing you<</if>> with defiance.
@@ -677,9 +677,7 @@ The legalities completed, <span class='slave-name'><<= SlaveFullName($activeSlav
 	</span>
 <</if>>
 
-<br><br>
-
-<span id="introResult">
+<p id="introResult">
 //Now might be a good time to introduce $him to life in your stable of sex slaves//
 
 <<switch $activeSlave.origin>>
@@ -2101,38 +2099,38 @@ The legalities completed, <span class='slave-name'><<= SlaveFullName($activeSlav
 
 <br>&nbsp;&nbsp;&nbsp;&nbsp;
 <<link "Spank $him">>
-<<replace "#introResult">>
-	You <<if ($activeSlave.devotion > 20) || ($activeSlave.trust < -20)>>lay the obedient $desc across your knees<<else>>force the resistant $desc to lie across your knees<</if>> and run a voluptuary hand across $his <<if $activeSlave.butt > 6>>jiggling<<elseif $activeSlave.butt > 3>>delightfully big<<elseif $activeSlave.butt > 1>>cute<<else>>skinny<</if>> buttocks, enjoying the way $he tenses up reflexively at the extreme vulnerability of $his position. $He feels the change in your posture as you bring your hand back, and <<if ($activeSlave.devotion > 20) || ($activeSlave.trust < -20)>>can't stop $himself from wriggling<<else>>struggles desperately<</if>> for just a moment before your palm smacks against $his ass.
-	<<if $activeSlave.devotion > 20>>
-		<<if $activeSlave.fetish == "masochist">>
-			<<if $activeSlave.fetishKnown == 0>>
-				$He gasps with profound shock, and you feel $his whole body stiffen atop your thighs as $he tries to work out what just happened. With each spank, $he grows more and more aroused until $he finally reaches orgasm. @@.green;$He's a pain fetishist!@@
-				<<set $activeSlave.fetishKnown = 1>>
+	<<replace "#introResult">>
+		You <<if ($activeSlave.devotion > 20) || ($activeSlave.trust < -20)>>lay the obedient $desc across your knees<<else>>force the resistant $desc to lie across your knees<</if>> and run a voluptuary hand across $his <<if $activeSlave.butt > 6>>jiggling<<elseif $activeSlave.butt > 3>>delightfully big<<elseif $activeSlave.butt > 1>>cute<<else>>skinny<</if>> buttocks, enjoying the way $he tenses up reflexively at the extreme vulnerability of $his position. $He feels the change in your posture as you bring your hand back, and <<if ($activeSlave.devotion > 20) || ($activeSlave.trust < -20)>>can't stop $himself from wriggling<<else>>struggles desperately<</if>> for just a moment before your palm smacks against $his ass.
+		<<if $activeSlave.devotion > 20>>
+			<<if $activeSlave.fetish == "masochist">>
+				<<if $activeSlave.fetishKnown == 0>>
+					$He gasps with profound shock, and you feel $his whole body stiffen atop your thighs as $he tries to work out what just happened. With each spank, $he grows more and more aroused until $he finally reaches orgasm. @@.green;$He's a pain fetishist!@@
+					<<set $activeSlave.fetishKnown = 1>>
+				<<else>>
+					$He groans with guilty pleasure, feeling the pain radiate out from $his buttocks with each swat, feeling it seem to circle around $his hips to pool between $his legs. Before long, $he reaches a quivering orgasm.
+				<</if>>
+				$He gets up very gingerly, but bites $his lip cutely, @@.hotpink;feeling a strange satisfaction.@@
+				<<set $activeSlave.devotion += 5>>
 			<<else>>
-				$He groans with guilty pleasure, feeling the pain radiate out from $his buttocks with each swat, feeling it seem to circle around $his hips to pool between $his legs. Before long, $he reaches a quivering orgasm.
+				$He gasps with pain, but does not object or try to escape. $He accepts the spanking dutifully. You're not particularly harsh, and $he gets up after you tire of swatting $his bottom @@.hotpink;without resentment@@ of this treatment.
+				<<set $activeSlave.devotion += 4>>
 			<</if>>
-			$He gets up very gingerly, but bites $his lip cutely, @@.hotpink;feeling a strange satisfaction.@@
-			<<set $activeSlave.devotion += 5>>
 		<<else>>
-			$He gasps with pain, but does not object or try to escape. $He accepts the spanking dutifully. You're not particularly harsh, and $he gets up after you tire of swatting $his bottom @@.hotpink;without resentment@@ of this treatment.
-			<<set $activeSlave.devotion += 4>>
-		<</if>>
-	<<else>>
-		<<if $activeSlave.fetish == "masochist">>
-			<<if $activeSlave.fetishKnown == 0>>
-				$He gasps with profound shock, and you feel $his whole body stiffen atop your thighs as $he tries to work out what just happened. $He begins to cry as $he realizes that having $his bottom beaten is getting $him horny. @@.green;$He's a pain fetishist!@@
-				<<set $activeSlave.fetishKnown = 1>>
+			<<if $activeSlave.fetish == "masochist">>
+				<<if $activeSlave.fetishKnown == 0>>
+					$He gasps with profound shock, and you feel $his whole body stiffen atop your thighs as $he tries to work out what just happened. $He begins to cry as $he realizes that having $his bottom beaten is getting $him horny. @@.green;$He's a pain fetishist!@@
+					<<set $activeSlave.fetishKnown = 1>>
+				<<else>>
+					$He groans with unwilling pleasure, feeling the pain radiate out from $his buttocks with each swat, feeling it seem to circle around $his hips to pool between $his legs. $He does not orgasm, but feels much more pleasure than $he's willing to admit.
+				<</if>>
+				When you let $him up, $he's sobbing, more from humiliation than pain. However, $he @@.hotpink;submits@@ to an uncomfortable groping of $his buttocks, which are pleasingly warm from the spanking.
+				<<set $activeSlave.devotion += 4>>
 			<<else>>
-				$He groans with unwilling pleasure, feeling the pain radiate out from $his buttocks with each swat, feeling it seem to circle around $his hips to pool between $his legs. $He does not orgasm, but feels much more pleasure than $he's willing to admit.
+				$He gasps with pain, and starts to wriggle off you until you pin $him with your other hand. $He accepts the rest of the spanking unhappily. You're not particularly harsh, and $he gets up after you tire of swatting $his bottom, @@.gold;fearful@@ due to the humiliation rather than the pain.
+				<<set $activeSlave.trust -= 4>>
 			<</if>>
-			When you let $him up, $he's sobbing, more from humiliation than pain. However, $he @@.hotpink;submits@@ to an uncomfortable groping of $his buttocks, which are pleasingly warm from the spanking.
-			<<set $activeSlave.devotion += 4>>
-		<<else>>
-			$He gasps with pain, and starts to wriggle off you until you pin $him with your other hand. $He accepts the rest of the spanking unhappily. You're not particularly harsh, and $he gets up after you tire of swatting $his bottom, @@.gold;fearful@@ due to the humiliation rather than the pain.
-			<<set $activeSlave.trust -= 4>>
 		<</if>>
-	<</if>>
-<</replace>>
+	<</replace>>
 <</link>>
 
 
@@ -2427,9 +2425,9 @@ The legalities completed, <span class='slave-name'><<= SlaveFullName($activeSlav
 	<</if>>
 <</if>>
 
-</span>
+</p>
 
 <</if>>
-
+</p>
 <<= IncreasePCSkills('trading', 0.1)>>
 <<if $PC.skill.slaving < 100 && random($PC.skill.slaving,100) > 50>> <<= IncreasePCSkills('slaving', 0.5)>> <<else>> <<= IncreasePCSkills('slaving', 0.1)>> <</if>>
diff --git a/src/uncategorized/options.tw b/src/uncategorized/options.tw
index 1c237b6659c25055adf040b56a08cc2b4ba4083f..18ec7934246cce11c0c653b3621c0ecb1f1f280d 100644
--- a/src/uncategorized/options.tw
+++ b/src/uncategorized/options.tw
@@ -789,7 +789,6 @@ This save was created using FC version $ver build $releaseID.
 			<div class="subHeading">
 			<<if $debugMode || $cheatMode || $cheatModeM>>
 				''Debug/cheat''
-				</div>
 				<<run MenialPopCap()>>
 
 				<style>
@@ -916,6 +915,7 @@ This save was created using FC version $ver build $releaseID.
 
 				</table>
 			<</if>>	/* closes cheatmode check */
+			</div>
 		<</if>> /* closes SecExp check*/
 	</div>
 </div>
diff --git a/src/uncategorized/pRivalryCapture.tw b/src/uncategorized/pRivalryCapture.tw
index d2991a39af010aa838ee6d4790e2fdc5183d625e..8eb1226e6527704f56ff0f1b453bdeb4c6c85796 100644
--- a/src/uncategorized/pRivalryCapture.tw
+++ b/src/uncategorized/pRivalryCapture.tw
@@ -406,7 +406,7 @@
 <<set $activeSlave.prestige = 3>>
 <<set $activeSlave.prestigeDesc = "You bankrupted and enslaved $him in revenge for $his part in the attack on your arcology by the Daughters of Liberty.">>
 <<run setHealth($activeSlave, 100, 0, 0, 0, jsRandom(10, 30))>>
-<<if $activeSlave.physicalAge > 35>><<set $activeSlave.ageImplant = 1>><<run ageImplantAdjustment($activeSlave)>><</if>>
+<<if $activeSlave.physicalAge > 35>><<run applyAgeImplant($activeSlave)>><</if>>
 <<set $activeSlave.pubicHStyle = "waxed">>
 <<set $activeSlave.underArmHStyle = "waxed">>
 
diff --git a/src/uncategorized/persBusiness.tw b/src/uncategorized/persBusiness.tw
index 79c02e466f03dfeb59bdb7e7b6daeb952bcaf1ef..8763178ad221fcc32fd1bb99255772ac013fff22 100644
--- a/src/uncategorized/persBusiness.tw
+++ b/src/uncategorized/persBusiness.tw
@@ -98,6 +98,23 @@
 	<<else>>
 		You spend your free time hustling around your penthouse, cleaning and making sure everything is in order. You manage to reduce your upkeep by 25%.<<if $PC.counter.birthMaster > 0>> This is much easier to do without a big baby bump in the way.<</if>>
 	<</if>>
+<<elseif ($personalAttention == "defensive survey")>>
+	This week you focus on surveying your defenses in person, @@.green;making yourself more known throughout $arcologies[0].name.@@
+	<<run repX(50 * $PC.skill.warfare, "personalBusiness")>>
+	<<if $PC.skill.warfare < 100>>
+		<<= IncreasePCSkills('warfare', 0.5)>>
+	<</if>>
+<<elseif ($personalAttention == "development project")>>
+	<<if ($arcologies[0].prosperity + 1 * (1 + Math.ceil($PC.skill.engineering/100))) < $AProsperityCap>>
+		This week you focus on contributing to a local development project, @@.green;boosting prosperity.@@
+		<<set $arcologies[0].prosperity += 1 * (1 + Math.ceil($PC.skill.engineering/100))>>
+		<<if $PC.skill.engineering < 100>>
+			<<= IncreasePCSkills('engineering', 0.5)>>
+		<</if>>
+	<<else>>
+		Contributing to a local development project this week @@.yellow;would be futile.@@
+		<<set $personalAttention = "business">>
+	<</if>>
 <<elseif ($personalAttention == "proclamation")>>
 	/* handled after this if chain */
 <<elseif ($personalAttention == "smuggling")>>
diff --git a/src/uncategorized/personalAssistantAppearance.tw b/src/uncategorized/personalAssistantAppearance.tw
index 5e8139f97e30fe21628b6d39df3f4e2e0c0004be..39a1bff7c9ea6c7e0a7e21ace9da07f25732cf16 100644
--- a/src/uncategorized/personalAssistantAppearance.tw
+++ b/src/uncategorized/personalAssistantAppearance.tw
@@ -891,18 +891,18 @@ _HeA's a cute little <<if $arcologies[0].FSSupremacist != "unset" && $assistantF
 	<<case "body purist">>
 		fairy wearing _hisA birthday suit, with pale unblemished skin on full display and silky golden hair cascading down _hisA back.
 	<<case "intellectual dependency">>
-		//WIP//
+		fairy wearing a thong as a string bikini. _HeA keeps asking questions you are certain _heA knows the answers to.
 	<<case "slave professionalism">>
-		//WIP//
+		fairy wearing a graduation gown.
 	<<case "petite admiration">>
-		//WIP//
+		fairy wearing _hisA birthday suit, with _hisA nude form obscured by the light _heA's giving off. _HeA's recently adjusted _hisA size so that, at a glance, _heA appears to be nothing more than a glowing ball.
 	<<case "statuesque glorification">>
-		//WIP//
+		fairy wearing a simple dress. _HeA's adjusted the length of _hisA dress to make it appear that _heA is taller than _heA really is.
 	<<default>>
 		fairy wearing _hisA birthday suit, with _hisA nude form obscured by the light _heA's giving off. _HisA silky golden hair cascades down _hisA back.
 	<</switch>>
 	<<else>>
-		fairy wearing _hisA birthday suit, with _hisA nude form obscured by the light _heA's giving off. _HisA silky golden hair cascades down _hisA back.
+		fairy wearing _hisA birthday suit, with _hisA nude form obscured by the light _heA's giving off.
 	<</if>>
 <<if ($cockFeeder == 1) && (_paSeed == 1)>>
 	A recognizable little representation of one of your slaves underneath _himA, with _hisU tongue sticking out to catch _hisA dripping love juices. The slave must be down in the kitchen, getting a meal out of the food dispensers. The fairy notices you watching and winks, dripping even more with your eyes on _himA.
@@ -982,13 +982,13 @@ _HeA's a cute little <<if $arcologies[0].FSSupremacist != "unset" && $assistantF
 	<<case "body purist">>
 		wearing _hisA birthday suit, with pale unblemished pregnant belly on full display and silky golden hair cascading down _hisA back.
 	<<case "intellectual dependency">>
-		//WIP//
+		wearing a thong as a string bikini. _HeA frequently pouts over all the weight _heA has been putting on lately.
 	<<case "slave professionalism">>
-		//WIP//
+		wearing a graduation gown.
 	<<case "petite admiration">>
-		//WIP//
+		wearing _hisA birthday suit, with _hisA nude form obscured by the light _hisA belly. _HeA's recently adjusted _hisA size so that, at a glance, _heA appears to be nothing more than a glowing oval.
 	<<case "statuesque glorification">>
-		//WIP//
+		wearing a simple dress. _HeA's adjusted the length of _hisA dress to make it appear that _heA is taller than _heA really is, but it keeps riding up _hisA middle and ruining the look.
 	<<default>>
 		wearing _hisA birthday suit, with _hisA nude form obscured by the light coming from _hisA belly. _HisA silky golden hair cascades down _hisA back.
 	<</switch>>
@@ -1023,7 +1023,7 @@ _HeA's a cute little <<if $arcologies[0].FSSupremacist != "unset" && $assistantF
 <</if>>
 
 <<case "slimegirl">>
-	_HeA's a girlish shaped figure, with a crimson core, made entirely out of
+	_HeA's a girlish shaped figure, bearing a crimson core, made entirely out of
 	<<if $assistantFSOptions>>
 	<<switch $assistantFSAppearance>>
 	<<case "paternalist">>
@@ -1035,7 +1035,7 @@ _HeA's a cute little <<if $arcologies[0].FSSupremacist != "unset" && $assistantF
 	<<case "roman revivalist">>
 		slime with a _girlA's stola sinking into _hisA head.
 	<<case "egyptian revivalist">>
-		slime looking quite perturbed about the amount of sand caught in _himA.
+		slime and quite perturbed about the amount of sand caught in _himA.
 	<<case "edo revivalist">>
 		slime with a silken kimono floating inside _himA.
 	<<case "arabian revivalist">>
@@ -1051,9 +1051,11 @@ _HeA's a cute little <<if $arcologies[0].FSSupremacist != "unset" && $assistantF
 	<<case "degradationist">>
 		slime with a number of piercings sinking into _hisA body.
 	<<case "physical idealist">>
-		slime trying to shape _hisA goo into muscles.
+		slime and trying to shape _hisA goo into muscles.
+	<<case "hedonistic decadence">>
+		slime. _HeA has accumulated a large amount of excess goo, giving _himA quite a corpulent shape.
 	<<case "gender radicalist">>
-		slime with a very androgynous appearance. _HeA keeps trying to shape _hisA goo into a cock.
+		slime. _HeA keeps trying to shape _hisA goo into a cock.
 	<<case "gender fundamentalist">>
 		slime. _HisA amorphous body has noticeable hip, butt, and breast curves.
 	<<case "asset expansionist">>
@@ -1063,18 +1065,22 @@ _HeA's a cute little <<if $arcologies[0].FSSupremacist != "unset" && $assistantF
 	<<case "pastoralist">>
 		slime with quite a large amount of milk mixed with _hisA body. _HeA keeps trying to shape _hisA goo into big milky tits.
 	<<case "maturity preferentialist">>
-		slime with a noticeably large core.
+		slime. _HisA core is noticeably larger and shows signs of splitting many times.
 	<<case "youth preferentialist">>
-		slime with a tiny core and immature body
+		slime. _HisA core is as immature as _hisA body
 	<<case "slimness enthusiast">>
 		slime. _HeA is compacting _hisA slime to make _himselfA look thinner.
 	<<case "body purist">>
 		slime with the purest goo _hisA body could be made of.
+	<<case "intellectual dependency">>
+	<<case "slave professionalism">>
+	<<case "petite admiration">>
+	<<case "statuesque glorification">>
 	<<default>>
-		slime with a pair of shorts and a shirt floating inside _himA.
+		slime.
 	<</switch>>
 	<<else>>
-		slime with a pair of shorts and a shirt floating inside _himA.
+		slime.
 	<</if>>
 	<<if ($cockFeeder == 1) && (_paSeed == 1)>>
 		A recognizable little representation of one of your slaves has _hisU head in _hisA moist crotch, and is eating _himA out. The slave must be down in the kitchen, getting a meal out of the food dispensers. As you watch, the goo _girlA orgasms, nearly turning into a puddle when _heA notices you watching.
@@ -1089,7 +1095,7 @@ _HeA's a cute little <<if $arcologies[0].FSSupremacist != "unset" && $assistantF
 	<<elseif (_paSeed == 6) && ($studio == 1)>>
 		_HeA's getting oral from a recognizable little representation of one of your slaves, and is using a handheld camera to film the action, gonzo style. The slave must be using one of the penthouse's many vibrators, and your personal assistant is clearly turning the feed of it into porn.
 	<<else>>
-		_HeA's watching you attentively from a bowl filled with _hisA body. When _heA sees your glance, _heA reforms _himselfA and awaits your response.
+		_HeA's watching you attentively from a bowl <<$assistantFSAppearance == "hedonistic decadence">>overflowing<<else>>filled<</if>> with _hisA body. When _heA sees your glance, _heA reforms _himselfA and awaits your response.
 	<</if>>
 
 <<case "angel">>
diff --git a/src/uncategorized/personalAttentionSelect.tw b/src/uncategorized/personalAttentionSelect.tw
index 3c359e40e2bc044a366224c1481c49c7a3b24b00..887f544aa29e715007cac36857a01aae8e8a973c 100644
--- a/src/uncategorized/personalAttentionSelect.tw
+++ b/src/uncategorized/personalAttentionSelect.tw
@@ -10,6 +10,16 @@
 <<elseif $PC.career == "servant">>
 	<br>[[Maintain your home|Main][$personalAttention = "upkeep"]]
 <</if>>
+<<if $PC.skill.warfare > 25>>
+	<br>[[Survey your arcology's defenses in person|Main][$personalAttention = "defensive survey"]]
+<</if>>
+<<if $PC.skill.engineering > 25>>
+	<<if ($arcologies[0].prosperity + 1 * (1 + Math.ceil($PC.skill.engineering/100))) < $AProsperityCap>>
+		<br>[[Contribute to a local development project|Main][$personalAttention = "development project"]]
+	<<else>>
+		contributing to a local development project @@.yellow;would be futile.@@
+	<</if>>
+<</if>>
 <<if $PC.skill.hacking > 25>>
 	<br>[[Sell your intrusion services to the highest bidder|Main][$personalAttention = "technical accidents"]]
 <</if>>
diff --git a/src/uncategorized/remoteSurgery.tw b/src/uncategorized/remoteSurgery.tw
index 6972f1dfb55a06dc1066216aacd8d2f3c36b1166..e76f31c0eea7415e9e44417743e2d5b94aae1f0d 100644
--- a/src/uncategorized/remoteSurgery.tw
+++ b/src/uncategorized/remoteSurgery.tw
@@ -128,7 +128,7 @@
 		<<elseif ($activeSlave.physicalAge >= 25) && ($activeSlave.visualAge >= 25)>>
 			$He's old enough that a face lift and other minor cosmetic procedures could make $him look younger.
 			<div class="choices">
-				[[Age lift|Surgery Degradation][$activeSlave.ageImplant = 1,$activeSlave.faceImplant = Math.clamp($activeSlave.faceImplant+_artificiality,0,100),cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave,10),$surgeryType = "age"]]
+				[[Age lift|Surgery Degradation][applyAgeImplant($activeSlave),$activeSlave.faceImplant = Math.clamp($activeSlave.faceImplant+_artificiality,0,100),cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave,10),$surgeryType = "age"]]
 			</div>
 		<</if>>
 	<</if>>
diff --git a/src/uncategorized/saDrugs.tw b/src/uncategorized/saDrugs.tw
index 7fba584cdc5b0ee98a4379b872f6530be2e92122..55ebe0c4933291dc72fd8bcf1b65331650dfd918 100644
--- a/src/uncategorized/saDrugs.tw
+++ b/src/uncategorized/saDrugs.tw
@@ -1417,13 +1417,23 @@
 	<</if>>
 <</if>>
 
-/* TODO: update this for virgins */
-<<if $slaves[$i].fuckdoll == 0 && $slaves[$i].fetish != "mindbroken">>
+<<if $slaves[$i].fuckdoll == 0>>
 	<<if $suppository == 1>>
 		<<if ($slaves[$i].aphrodisiacs > 0) || ($slaves[$i].curatives > 0) || ($slaves[$i].drugs == "psychosuppressants") || ($slaves[$i].drugs == "hormone enhancers") || ($slaves[$i].drugs == "hormone blockers") || ($slaves[$i].hormones != 0)>>
 			<<if $slaves[$i].anus == 0>>
+				<<if $slaves[$i].fetish == "mindbroken">>
+					$His @@.lime;virgin anus is broken in@@ by a callous machine, but $he didn't notice.
+				<<elseif $slaves[$i].devotion <= 20>>
+					$His @@.lime;anal virginity is taken@@ by a machine whose sole purpose is to fuck drugs into $him; @@.mediumorchid;an indignity $he does not take well.@@
+					<<set $slaves[$i].devotion -= 10>>
+				<<else>>
+					$His @@.lime;virgin anus is broken in@@ by a callous machine, but $he accepts such indignities as a part of life.
+				<</if>>
+				<<set $slaves[$i].anus = 1>>
 			<<else>>
-				<<if ($slaves[$i].sexualFlaw == "hates anal")>>
+				<<if $slaves[$i].fetish == "mindbroken">>
+					A reciprocating dildo pumps $his drug regime into $him each morning and night.
+				<<elseif ($slaves[$i].sexualFlaw == "hates anal")>>
 					<<if random(1,100) > 80>>
 						Getting buttfucked morning and night by reciprocating dildos that ejaculate $his drug regime forces $him to @@.green;accept anal sex@@ as a fact of life.
 						<<set $slaves[$i].sexualFlaw = "none">>
@@ -1448,6 +1458,8 @@
 						<<set $slaves[$i].fetish = "buttslut">>
 						<<set $slaves[$i].fetishKnown = 1>>
 						<<set $slaves[$i].fetishStrength = 10>>
+					<<else>>
+						A reciprocating dildo pumps $his drug regime into $him each morning and night.
 					<</if>>
 				<</if>>
 				<<if ($slaves[$i].sexualQuirk == "painal queen")>>
diff --git a/src/uncategorized/saRules.tw b/src/uncategorized/saRules.tw
index 2d9c69e17fd02a4f77222572fc0a699c692f4082..7f675182c5a65c82abc4db0074ee37b6f05c7c8d 100644
--- a/src/uncategorized/saRules.tw
+++ b/src/uncategorized/saRules.tw
@@ -1147,6 +1147,7 @@
 
 			$He is @@.hotpink;very happy@@ with $his private room in $clinicName and @@.mediumaquamarine;trusts@@ you a bit more for placing $him in charge of it.
 			<<set $slaves[$i].devotion += 1, $slaves[$i].trust += 1>>
+			Having a place to call $his own each night helps keep the stress of $his duties from catching up with $him.
 
 			<<if ($universalRulesConsent == 0)>>
 				<<if (_release.slaves === 1)>>
@@ -1876,6 +1877,7 @@
 
 			$He is @@.hotpink;very happy@@ with $his private room in the back of $spaName and @@.mediumaquamarine;trusts@@ you a bit more for placing the well-being of your slaves in $his <<if !hasAnyArms($slaves[$i])>>figurative <</if>>hand<<if hasBothArms($slaves[$i])>>s<</if>>.
 			<<set $slaves[$i].devotion += 1, $slaves[$i].trust += 1>>
+			$He finds plenty of time to relax between $his duties, or during them, should $his company be requested.
 
 			<<if ($universalRulesConsent == 0)>>
 				<<if (_release.slaves === 1)>>
diff --git a/src/uncategorized/slaveInteract.tw b/src/uncategorized/slaveInteract.tw
index c0d465dd481d94929a96c0259aefd7aaac2f1806..00de0b3bc901bd06dbe4c66467f7a715820d6b9a 100644
--- a/src/uncategorized/slaveInteract.tw
+++ b/src/uncategorized/slaveInteract.tw
@@ -66,338 +66,15 @@
 <<if $prostheticsUpgrade > 0>>| [[Configure cybernetics|Prosthetics Configuration][$prostheticsConfig = "main"]]<</if>>
 
 
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-<span id="miniscene">//Or use $him here://</span>
-<<if $activeSlave.fuckdoll == 0>>
-	<span id="sexoption">
-	<<if ($activeSlave.vagina > -1)>>
-		<<if canDoVaginal($activeSlave)>>
-			<<link "Fuck $him">><<replace "#miniscene">><<include "FVagina">><br><</replace>><</link>>
-			<<if canDoAnal($activeSlave)>>
-				| <<link "Use $his holes">><<replace "#miniscene">><<include "FButt">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-			<</if>>
-		<<else>>
-			//Remove $his chastity belt if you wish to fuck $him//
-		<</if>>
-	<</if>>
-	<<if $activeSlave.bellyPreg >= 300000>>
-		<<if canDoVaginal($activeSlave) || canDoAnal($activeSlave)>>
-			| <<link "Fuck $him on $his belly">><<replace "#miniscene">><<include "FBellyFuck">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-			<<if $pregInventions >= 1>>
-				| <<link "Fuck $him in $his maternity swing">><<replace "#miniscene">><<include "FMaternitySwing">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-				| <<link "Fuck $him with the help of $his assistants">><<replace "#miniscene">><<include "FAssistedSex">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-				| <<link "Fuck $him in your goo pool">><<replace "#miniscene">><<include "FPoolSex">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-			<</if>>
-		<</if>>
-	<</if>>
-	</span>
-	<span id="analsexoption">
-	<<if canDoAnal($activeSlave)>>
-		| <<link "Fuck $his ass">><<replace "#miniscene">><<include "FAnus">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-	<<else>>
-		| //Remove $his chastity belt if you wish to fuck $his ass//
-	<</if>>
-	</span>
-	| <<link "Use $his mouth">><<replace "#miniscene">><<include "FLips">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-	| <<link "Kiss $him">><<replace "#miniscene">><<include "FKiss">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-	<<if hasAnyLegs($activeSlave)>>
-		| <<link "Have $him dance for you">><<replace "#miniscene">><<include "FDance">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-	<</if>>
-	| <<link "Play with $his tits">><<replace "#miniscene">><<include "FBoobs">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-	| <<link "Caress $him">><<replace "#miniscene">><<include "FCaress">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-	| <<link "Give $him a hug">><<replace "#miniscene">><<include "FEmbrace">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-	<<if $cheatMode == 1>>
-		| <<link "Pat $his head">><<replace "#miniscene">><<include "FPat">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-	<</if>>
-	| <<link "Grope $his boobs">><<replace "#miniscene">><<include "FondleBoobs">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-	<<if $activeSlave.nipples == "fuckable" && $PC.dick > 0>>
-		| <<link "Fuck $his nipples">><<replace "#miniscene">><<include "FNippleFuck">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-	<</if>>
-	<<if $activeSlave.lactation > 0 && $activeSlave.boobs >= 2000 && $activeSlave.belly < 60000 && hasAnyArms($activeSlave)>>
-		| <<link "Drink $his milk">><<replace "#miniscene">><<include "FSuckle">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-	<</if>>
-	<span id="analgropeoption">
-	<<if canDoAnal($activeSlave)>>
-		| <<link "Grope $his butt">><<replace "#miniscene">><<include "FondleButt">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-	<</if>>
-	</span>
-	<span id="gropeoption">
-	<<if ($activeSlave.vagina > -1)>>
-		<<if canDoVaginal($activeSlave)>>
-			| <<link "Grope $his pussy">><<replace "#miniscene">><<include "FondleVagina">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-			| <<link "Eat $him out">><<replace "#miniscene">><<include "FLickPussy">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-		<</if>>
-	<</if>>
-	</span>
-	<span id="dickgropeoption">
-	<<if ($activeSlave.dick > 0)>>
-		<<if !($activeSlave.chastityPenis)>>
-			| <<link "Grope $his dick">><<replace "#miniscene">><<include "FondleDick">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-			<<if canPenetrate($activeSlave)>>
-				<<if $sexualOpeness == 1 || $activeSlave.toyHole == "dick">>
-					| <<link "Ride $his dick">><<replace "#miniscene">><<include "FDick">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-				<</if>>
-			<</if>>
-		<<else>>
-			| //Remove $his dick chastity belt if you wish to play with $his cock//
-		<</if>>
-	<</if>>
-	</span>
-	<<if hasAnyLegs($activeSlave) && $PC.dick > 0>>
-		| <<link "Get a footjob">><<replace "#miniscene">><<include "FFeet">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-	<</if>>
-	<span id = "impreg">
-	<<if (canGetPregnant($activeSlave)) && ($activeSlave.geneticQuirks.superfetation != 2 || $geneticMappingUpgrade != 0) && ($activeSlave.fuckdoll == 0) && $seePreg != 0>>
-		<<if canImpreg($activeSlave, $PC)>>
-			| <<link "Impregnate $him yourself">><<replace "#miniscene">><<include "FPCImpreg">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>>
-		<</if>>
-		<<if canImpreg($activeSlave, $activeSlave)>>
-			| <<link "Use $his own seed to impregnate $him">><<replace "#miniscene">><<include "FSlaveSelfImpreg">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>>
-		<</if>>
-		| <<link "Use another slave to impregnate $him" "FSlaveImpreg">><</link>>
-		<<if ($activeSlave.eggType != "human") && (_CL > 0 || _HL > 0 || _FL > 0) && ($cheatMode == 1)>>
-			| <<link "Use an animal to impregnate $him" "FAnimalImpreg">><</link>>
-		<</if>>
-	<</if>>
-	<<if $activeSlave.assignment != "work in the dairy" && $activeSlave.assignment != "be confined in the arcade" && $activeSlave.assignment != "be confined in the cellblock">>
-		<<if $enema == 1>>
-			<<if ($activeSlave.inflation < 3 && $activeSlave.pregKnown == 0 && $activeSlave.bellyImplant < 1500) || ($activeSlave.inflation < 1)>>
-				<<if $activeSlave.inflationType == "water" || $activeSlave.inflationType == "none">>
-					| <<link "Fill $his ass with water">><<set $activeSlave.inflationType = "water">><<set $activeSlave.inflationMethod = 2>><<replace "#miniscene">><<include "FillUpButt">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>>
-				<</if>>
-				<<if $medicalEnema == 1>>
-					<<if $activeSlave.inflationType == "aphrodisiac" || $activeSlave.inflationType == "none">>
-						| <<link "Fill $his ass with aphrodisiacs">><<set $activeSlave.inflationType = "aphrodisiac">><<set $activeSlave.inflationMethod = 2>><<replace "#miniscene">><<include "FillUpButt">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>>
-					<</if>>
-					<<if $activeSlave.inflationType == "curative" || $activeSlave.inflationType == "none">>
-						| <<link "Fill $his ass with curatives">><<set $activeSlave.inflationType = "curative">><<set $activeSlave.inflationMethod = 2>><<replace "#miniscene">><<include "FillUpButt">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>>
-					<</if>>
-					<<if $activeSlave.inflationType == "tightener" || $activeSlave.inflationType == "none">>
-						| <<link "Fill $his ass with rectal tighteners">><<set $activeSlave.inflationType = "tightener">><<set $activeSlave.inflationMethod = 2>><<replace "#miniscene">><<include "FillUpButt">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>>
-					<</if>>
-				<</if>>
-			<</if>>
-		<</if>>
-		<<if $dairyPiping == 1>>
-			<<if ($milkPipeline > 88 && $milkPipeline != 0) || $arcologies[0].FSPastoralistLaw == 1>>
-				<<if ($activeSlave.inflation < 3 && $activeSlave.pregKnown == 0 && $activeSlave.bellyImplant < 1500) || ($activeSlave.inflation < 1)>>
-					<<if $activeSlave.inflationType == "milk" || $activeSlave.inflationType == "none">>
-						| <<link "Fill $his ass with milk">><<set $activeSlave.inflationType = "milk">><<set $activeSlave.inflationMethod = 2>><<replace "#miniscene">><<include "FillUpButt">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>>
-						| <<link "Force-feed $him milk">><<set $activeSlave.inflationType = "milk">><<set $activeSlave.inflationMethod = 1>><<replace "#miniscene">><<include "FillUpFace">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>>
-					<</if>>
-				<</if>>
-			<<else>>
-				| //$dairyNameCaps is not producing enough milk to pump through the pipes//
-			<</if>>
-			<<if ($cumPipeline > 88 && $cumPipeline != 0) || $arcologies[0].FSPastoralistLaw == 1>>
-				<<if ($activeSlave.inflation < 3 && $activeSlave.pregKnown == 0 && $activeSlave.bellyImplant < 1500) || ($activeSlave.inflation < 1)>>
-					<<if $activeSlave.inflationType == "cum" || $activeSlave.inflationType == "none">>
-						| <<link "Fill $his ass with cum">><<set $activeSlave.inflationType = "cum">><<set $activeSlave.inflationMethod = 2>><<replace "#miniscene">><<include "FillUpButt">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>>
-						| <<link "Force-feed $him cum">><<set $activeSlave.inflationType = "cum">><<set $activeSlave.inflationMethod = 1>><<replace "#miniscene">><<include "FillUpFace">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>>
-					<</if>>
-				<</if>>
-			<<else>>
-				| //$dairyNameCaps is not producing enough cum to pump through the pipes//
-			<</if>>
-		<</if>>
-		<<if $wcPiping == 1>>
-			<<if ($activeSlave.inflation < 3 && $activeSlave.pregKnown == 0 && $activeSlave.bellyImplant < 1500) || ($activeSlave.inflation < 1)>>
-				<<if $activeSlave.inflationType == "urine" || $activeSlave.inflationType == "none">>
-					| <<link "Fill $his ass with urine">><<set $activeSlave.inflationType = "urine">><<set $activeSlave.inflationMethod = 2>><<replace "#miniscene">><<include "FillUpButt">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>>
-				<</if>>
-			<</if>>
-		<</if>>
-	<</if>>
-	<<if $activeSlave.inflation == 0 && $activeSlave.bellyImplant < 1500>>
-		<<if $activeSlave.assignment != "work in the dairy" && $activeSlave.assignment != "be confined in the arcade" && $activeSlave.assignment != "be confined in the cellblock">>
-			| <<link "Use another slave to force-feed $him" "SlaveOnSlaveFeedingWorkAround">><</link>>
-			<<if $buckets == 1>>
-				| <<link "Make $him consume two liters of slave food">><<set $activeSlave.inflationType = "food">><<set $activeSlave.inflationMethod = 1>><<set $activeSlave.inflation = 1>><<replace "#miniscene">><<include "forceFeeding">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>>
-				<<if $activeSlave.pregKnown == 0>>
-					| <<link "Force $him to consume a gallon of slave food">><<set $activeSlave.inflationType = "food">><<set $activeSlave.inflationMethod = 1>><<set $activeSlave.inflation = 2>><<replace "#miniscene">><<include "forceFeeding">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>>
-					| <<link "Force two gallons of slave food into $him">><<set $activeSlave.inflationType = "food">><<set $activeSlave.inflationMethod = 1>><<set $activeSlave.inflation = 3>><<replace "#miniscene">><<include "forceFeeding">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>>
-				<</if>>
-			<</if>>
-		<</if>>
-	<</if>>
-	</span>
-	<<if canDoVaginal($activeSlave)>>
-		| <<link "Have another slave fuck $his pussy" "FSlaveSlaveVag">><</link>>
-	<</if>>
-	<<if canPenetrate($activeSlave)>>
-		| <<link "Have another slave ride $his cock" "FSlaveSlaveDick">><</link>>
-	<<elseif $activeSlave.clit >= 4>>
-		| <<link "Have another slave ride $his clit-dick" "FSlaveSlaveDick">><</link>>
-	<</if>>
-	<<if $seeBestiality == 1 && $cheatMode == 1>>
-		<<if $farmyardKennels > 0 && $activeCanine != 0>>
-			| <<link "Have a $activeCanine.species mount $him">><<set $animalType = "canine">><<replace "#miniscene">><<include "BeastFucked">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-		<</if>>
-		<<if $farmyardStable > 0 && $activeHooved != 0>>
-			| <<link "Let a $activeHooved.species mount $him">><<set $animalType = "hooved">><<replace "#miniscene">><<include "BeastFucked">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-		<</if>>
-		<<if $farmyardCages > 0 && $activeFeline != 0>>
-			| <<link "Have a $activeFeline.species mount $him">><<set $animalType = "feline">><<replace "#miniscene">><<include "BeastFucked">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-		<</if>>
-	<</if>>
-	| <<link "Abuse $him">><<replace "#miniscene">><<include "FAbuse">><</replace>><</link>>
-	<<if $seeIncest == 1>>
-		<<if $familyTesting == 1>>
-			<<set _availRelatives = availableRelatives($activeSlave)>>
-			<<if _availRelatives.mother>>
-				| <<link "Fuck $him with $his mother">><<replace "#miniscene">><<set $partner = "mother">><<include "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-			<<elseif _availRelatives.motherName !== null>>
-				//$His mother, _availRelatives.motherName, is unavailable//
-			<</if>>
-			/*
-			<<if _availRelatives.father>>
-				| <<link "Fuck $him with $his father">><<replace "#miniscene">><<set $partner = "father">><<include "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-			<<elseif _availRelatives.fatherName !== null>>
-				//$His father, _availRelatives.fatherName, is unavailable//
-			<</if>>
-			*/
-			<<if $activeSlave.daughters > 0>>
-				<<if _availRelatives.daughters == 0>>
-					<<if $activeSlave.daughters == 1>>
-						//$His _availRelatives.oneDaughterRel is unavailable//
-					<<else>>
-						//$His daughters are unavailable//
-					<</if>>
-				<<else>>
-					<<if $activeSlave.daughters == 1>>
-						| <<link "Fuck $him with $his _availRelatives.oneDaughterRel">><<replace "#miniscene">><<set $partner = "daughter">><<include "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-					<<else>>
-						| <<link "Fuck $him with one of $his daughters">><<replace "#miniscene">><<set $partner = "daughter">><<include "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-					<</if>>
-					/*
-					<<if _availRelatives.daughters > 1>>
-						| <<link "Fuck $him with $his daughters">><<replace "#miniscene">><<set $partner = "daughters">><<include "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-					<</if>>
-					*/
-				<</if>>
-			<</if>>
-			<<if $activeSlave.sisters > 0>>
-				<<if _availRelatives.sisters == 0>>
-					<<if $activeSlave.sisters == 1>>
-						//$His _availRelatives.oneSisterRel is unavailable//
-					<<else>>
-						//$His sisters are unavailable//
-					<</if>>
-				<<else>>
-					<<if $activeSlave.sisters == 1>>
-						| <<link "Fuck $him with $his _availRelatives.oneSisterRel">><<replace "#miniscene">><<set $partner = "sister">><<include "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-					<<else>>
-						| <<link "Fuck $him with one of $his sisters">><<replace "#miniscene">><<set $partner = "sister">><<include "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-					<</if>>
-					/*
-					<<if _availRelatives.sisters > 1>>
-						| <<link "Fuck $him with $his sisters">><<replace "#miniscene">><<set $partner = "sisters">><<include "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-					<</if>>
-					*/
-				<</if>>
-			<</if>>
-		<<else>>
-			<<if ($activeSlave.relation != 0)>>
-				<<set _assayedSlave = getSlave($activeSlave.relationTarget)>>
-				<<setLocalPronouns _assayedSlave 2>>
-				<<if isSlaveAvailable(_assayedSlave)>>
-					<<if ($activeSlave.relation == "mother")>>
-						| <<link "Fuck $him with $his _daughter2">><<replace "#miniscene">><<set $partner = "relation">><<include "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-					<<elseif ($activeSlave.relation == "daughter")>>
-						| <<link "Fuck $him with $his mother">><<replace "#miniscene">><<set $partner = "relation">><<include "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-					<<elseif ($activeSlave.relation == "sister")>>
-						| <<link "Fuck $him with $his _sister2">><<replace "#miniscene">><<set $partner = "relation">><<include "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-					<<elseif ($activeSlave.relation == "twin")>>
-						| <<link "Fuck $him with $his twin">><<replace "#miniscene">><<set $partner = "relation">><<include "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-					<</if>>
-				<<else>>
-					//_assayedSlave.slaveName is unavailable//
-				<</if>>
-			<</if>>
-		<</if>>
-	<</if>>
-	<<if ($activeSlave.relationship > 0)>>
-		<<set _si = $slaveIndices[$activeSlave.relationshipTarget]>>
-		<<if isSlaveAvailable($slaves[_si])>>
-			| <<link `"Fuck $him with $his <<print relationshipTermShort($activeSlave)>> <<= SlaveFullName($slaves[_si])>>"`>><<replace "#miniscene">><<set $partner = "relationship">><<include "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-		<<else>>
-			<<if $slaves[_si].assignment == "be your agent">>
-				<<if $activeSlave.broodmother < 2>>
-					| <<link `"Send $him to live with your agent <<= SlaveFullName($slaves[_si])>>"`>>
-						<<set $subSlave = $slaves[_si]>>
-						<<goto "Agent Company">>
-					<</link>>
-				<<else>>
-					| //A hyper-broodmother cannot be sent to live with your agent//
-				<</if>>
-			<<else>>
-				| //<<= SlaveFullName($slaves[_si])>> is unavailable//
-			<</if>>
-		<</if>>
-	<</if>>
-	<<if $activeSlave.rivalryTarget != 0 && hasAllLimbs($activeSlave)>>
-		<<set _rsi = $slaveIndices[$activeSlave.rivalryTarget]>>
-		<<if isSlaveAvailable($slaves[_rsi]) && hasAnyLegs($slaves[_rsi])>>
-			| <<link "Abuse $his rival with $him">><<replace "#miniscene">><<include "FRival">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-		<</if>>
-	<</if>>
-	<<if ($activeSlave.fetish != "mindbroken") && (canTalk($activeSlave) || hasAnyArms($activeSlave))>>
-		| <<link "Ask $him about $his feelings">><<replace "#miniscene">><<include "FFeelings">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-		<<if $PC.dick > 0>>
-			| <<link "Make $him beg">><<replace "#miniscene">><<include "FBeg">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-		<</if>>
-	<</if>>
-	<<if $activeSlave.devotion >= 100 && $activeSlave.relationship < 0 && $activeSlave.relationship > -3>>
-		| <<link "Talk to $him about relationships" "Matchmaking">><<set $subSlave = 0, $eventSlave = $activeSlave>><</link>>
-	<</if>>
-	<<set _ML = $marrying.length>>
-	<<if (($MixedMarriage == 1 || $cheatMode == 1) && $activeSlave.relationship != 5 && $activeSlave.relationship != -3)>>
-		<<set _eligible = 1>>
-		<<if $marrying.includes($activeSlave.ID)>>
-			<<set _eligible = 0>>
-		<</if>>
-		<<if _eligible != 0>>
-			<<if (_ML < 2)>>
-				<<if ($cheatMode == 1) || (_ML == 0)>>
-					| <<link "Marry $him" "FMarry">><</link>>
-				<<else>>
-					| //You already have a wedding planned for this weekend//
-				<</if>>
-			<<else>>
-				| //You can only marry up to two slaves per week//
-			<</if>>
-		<<else>>
-			| //You are already marrying $him this weekend//
-		<</if>>
-	<</if>>
-	<<if $cheatMode == 1>>
-		| <<link "Check $his stats">><<replace "#miniscene">><<include "Slave Stats">><</replace>><</link>>
-	<</if>>
-<<else>> /* IS A FUCKDOLL */
-	<<link "Fuck $his face hole">><<replace "#miniscene">><<FFuckdollOral>><br><</replace>><</link>>
-	<<if canDoVaginal($activeSlave)>>
-		| <<link "Fuck $his front hole">><<replace "#miniscene">><<FFuckdollVaginal>><br><</replace>><</link>>
-	<</if>>
-	<<if canDoAnal($activeSlave)>>
-		| <<link "Fuck $his rear hole">><<replace "#miniscene">><<FFuckdollAnal>><br><</replace>><</link>>
-	<</if>>
-	<span id = "impreg">
-	<<if (canGetPregnant($activeSlave)) && ($activeSlave.geneticQuirks.superfetation != 2 || $geneticMappingUpgrade != 0) && $seePreg != 0>>
-		<<if canImpreg($activeSlave, $PC)>>
-			| <<link "Put a baby in $him">><<replace "#miniscene">><<FFuckdollImpreg>><br><</replace>><</link>>
-		<</if>>
-	<</if>>
-	</span>
-<</if>>
-<<set _activeSlaveRepSacrifice = repGainSacrifice($activeSlave, $arcologies[0])>>
-<<if _activeSlaveRepSacrifice > 0 && $arcologies[0].FSPaternalist == "unset" && ($activeSlave.breedingMark == 0 || $propOutcome == 0 || $eugenicsFullControl == 1 || $arcologies[0].FSRestart == "unset")>>
-	| <<link "Sacrifice $him on the altar" "Aztec Slave Sacrifice">><<set $sacrificeType = "life">><</link>>//This will kill $him and gain you _activeSlaveRepSacrifice reputation//
-<</if>>
+<div id="miniscene"></div>
+<span id="useSlave"></span>
+<script>
+	useSlaveDisplay(V.activeSlave)
+</script>
 
 /* pregmod start */
 <<if $familyTesting == 1>>
-	<br><br>
-	<span id="family">
+	<p id="family">
 		<div id="familyTree"></div>
 		<span id="familyTreeLink">
 			<<link "Pull up the file on $his family tree.">>
@@ -406,20 +83,20 @@
 				<</replace>>
 			<</link>>
 		</span>
-	</span>
+	</p>
 <</if>>
 
+<p>
 <<if $universalRulesImpregnation == "HG" && $seePreg != 0>>
-	<br><br>
 	<<if $activeSlave.HGExclude == 0>>
 		Will be bred by the Head Girl when fertile. <<link "Exempt $him" "Slave Interact">><<set $activeSlave.HGExclude = 1>><</link>>
 	<<else>>
 		Will not be bred by the Head Girl when fertile. <<link "Include $him" "Slave Interact">><<set $activeSlave.HGExclude = 0>><</link>>
 	<</if>>
 <</if>>
+</p>
 /* pregmod end */
 
-<br><br>
 <<if $activeSlave.useRulesAssistant == 0>>
 	@@.gray;''Not subject'' to the Rules Assistant.@@
 	<<link "Include $him" "Slave Interact">><<set $activeSlave.useRulesAssistant = 1>><</link>>
@@ -951,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>><<SlaveInteractImpreg>><<SlaveInteractFertility>><<SlaveInteractSexOption>><<SlaveInteractAnalSexOption>><<SlaveInteractGropeOption>><<SlaveInteractDickGropeOption>><<SlaveInteractAnalGropeOption>><</link>>
+		<<link "None">><<set $activeSlave.vaginalAccessory = "none">><<replace "#vaginalAccessory">>$activeSlave.vaginalAccessory<</replace>><<run SlaveInteractRefreshAll($activeSlave)>><</link>>
 		<<if isItemAccessible("bullet vibrator")>>
 			| <<link "Bullet vibrator">><<set $activeSlave.vaginalAccessory = "bullet vibrator">><<replace "#vaginalAccessory">>$activeSlave.vaginalAccessory<</replace>><</link>>
 		<</if>>
@@ -983,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>><<SlaveInteractSexOption>><<SlaveInteractAnalSexOption>><<SlaveInteractGropeOption>><<SlaveInteractDickGropeOption>><<SlaveInteractAnalGropeOption>><</link>>
+		<<link "None">><<set $activeSlave.dickAccessory = "none">><<replace "#dickAccessory">>$activeSlave.dickAccessory<</replace>><<run SlaveInteractRefreshAll($activeSlave)>><</link>>
 		<<if isItemAccessible("bullet vibrator") && $toysBoughtVaginalAttachments == 1>>
 			| <<link "Bullet vibrator">><<set $activeSlave.dickAccessory = "bullet vibrator">><<replace "#dickAccessory">>$activeSlave.dickAccessory<</replace>><</link>>
 		<</if>>
@@ -993,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>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</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>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</link>>
+	<<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>>
 	<<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>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</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>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</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 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>>
 	<</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>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</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>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</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 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>>
 		<<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>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</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>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</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 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>>
 		<</if>>
 	<</if>>
 
@@ -1229,89 +906,8 @@ Aphrodisiacs: <span id="aphrodisiacs"><strong><<if $activeSlave.aphrodisiacs > 1
 	| <<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="fertilityblock">
-<<if ($activeSlave.ovaries == 1 || $activeSlave.mpreg == 1 || $activeSlave.preg > 0)>>
-	<<if ($activeSlave.preg < -1)>>
-		//$He is sterile//
-	<<elseif ($activeSlave.pubertyXX == 0) && $activeSlave.preg < 1>>
-		//$He is not yet fertile//
-	<<elseif $activeSlave.ovaryAge >= 47 && $activeSlave.preg < 1>>
-		//$He is too old to become pregnant//
-		<<if $activeSlave.preg == -1>>
-			<<set $activeSlave.preg = 0>>
-			<<run SetBellySize($activeSlave)>>
-		<</if>>
-	<<elseif $activeSlave.broodmotherOnHold == 1>>
-		//$His pregnancy implant is turned off<<if $activeSlave.broodmotherCountDown > 0>>; $he is expected to be completely emptied of $his remaining brood in $activeSlave.broodmotherCountDown week<<if $activeSlave.broodmotherCountDown > 1>>s<</if>><<else>>.<</if>>//
-		[[Turn on implant|Slave Interact][$activeSlave.broodmotherOnHold = 0, $activeSlave.broodmotherCountDown = 0]]
-	<<elseif $activeSlave.preg >= -1>>
-		Contraception: <span id="fertility"><strong><<if $activeSlave.preg == -1>><<print "using contraceptives">><<elseif $activeSlave.pregWeek < 0>><<print "postpartum">><<elseif $activeSlave.preg == 0>><<print "fertile">><<elseif $activeSlave.preg < 4>><<print "may be pregnant">><<else>><<print $activeSlave.preg>><<print " weeks pregnant">><</if>></strong></span>.
-		<<if ($activeSlave.preg > 0 && $pregnancyMonitoringUpgrade == 1)>>
-			[[Inspect pregnancy|Analyze Pregnancy]] |
-		<</if>>
-		<<if ($activeSlave.preg == 0)>>
-			<<link "Use contraceptives">>
-				<<set $activeSlave.preg = -1>>
-				<<SlaveInteractFertility>>
-				<<SlaveInteractImpreg>>
-			<</link>>
-		<<elseif $activeSlave.preg == -1>>
-			<<link "Let $him get pregnant">>
-				<<set $activeSlave.preg = 0>>
-				<<SlaveInteractFertility>>
-				<<SlaveInteractImpreg>>
-			<</link>>
-		<<elseif $activeSlave.induce == 1>>
-			//Hormones are being slipped into $his food; $he will give birth suddenly and rapidly this week//
-		<<elseif ($activeSlave.preg > $activeSlave.pregData.normalBirth-2 && $activeSlave.preg > $activeSlave.pregData.minLiveBirth) && ($activeSlave.broodmother == 0) && ($activeSlave.labor == 0)>>
-			[[Induce labor|Slave Interact][$activeSlave.labor = 1,$activeSlave.induce = 1,$birthee = 1]]
-			| <<link "Give $him a cesarean section" "csec">><</link>>
-		<<elseif ($activeSlave.broodmother > 0)>>
-			<<if $activeSlave.broodmotherOnHold != 1>>
-				[[Turn off implant|Slave Interact][$activeSlave.broodmotherOnHold = 1, $activeSlave.broodmotherCountDown = 38-WombMinPreg($activeSlave)]]
-			<</if>>
-			<<if ($activeSlave.broodmotherOnHold != 1) && ($activeSlave.preg >= 36)>>
-				|
-			<</if>>
-			<<if ($activeSlave.preg >= 37)>>
-				[[Induce mass childbirth|BirthStorm]]
-			<</if>>
-		<<elseif ($activeSlave.preg > $activeSlave.pregData.minLiveBirth)>>
-			<<link "Give $him a cesarean section" "csec">><</link>>
-		<<elseif ($activeSlave.preg > 0) && $activeSlave.breedingMark == 1 && $propOutcome == 1 && $arcologies[0].FSRestart != "unset" && $eugenicsFullControl != 1 && ($activeSlave.pregSource == -1 || $activeSlave.pregSource == -6)>>
-			//You are forbidden from aborting an Elite child//
-		<<elseif ($activeSlave.preg > 0)>>
-			<<link "Abort $his pregnancy" "Abort">><</link>>
-		<</if>>
-		<<if $activeSlave.preg >= 0 && ($activeSlave.ovaries == 1 || $activeSlave.mpreg == 1) && $activeSlave.eggType == "human" && $activeSlave.ovaryAge < 47>>
-			| [[Harvest and implant an egg|Surrogacy Workaround][$donatrix = $activeSlave, $impregnatrix = "Undecided", $receptrix = "Undecided", $nextLink = "Slave Interact"]]
-		<</if>>
-	<</if>>
-<</if>>
-<<if ($activeSlave.pregKnown == 1) && ($pregSpeedControl == 1) && ($activeSlave.breedingMark != 1 || $propOutcome == 0 || $eugenicsFullControl == 1 || $arcologies[0].FSRestart == "unset") && ($activeSlave.indentureRestrictions < 1) && ($activeSlave.broodmother == 0) && $seePreg != 0>>
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;
-	__Pregnancy control__: <<if $activeSlave.pregControl == "labor suppressors">>Labor is suppressed<<elseif $activeSlave.pregControl == "slow gestation">>Slowed gestation speed<<elseif $activeSlave.pregControl == "speed up">>Faster gestation speed, staffed clinic recommended<<else>>Normal gestation and birth<</if>>.
-	<<if ($activeSlave.preg >= $activeSlave.pregData.minLiveBirth)>>
-		<br>&nbsp;&nbsp;&nbsp;&nbsp;
-		<<if $activeSlave.pregControl == "labor suppressors">>
-			<<link "Normal Birth">><<set $activeSlave.pregControl = "none">><<SlaveInteractFertility>><</link>>
-		<<else>>
-			<<link "Suppress Labor">><<set $activeSlave.pregControl = "labor suppressors">><<SlaveInteractFertility>><</link>>
-		<</if>>
-	<<elseif ($activeSlave.preg < $activeSlave.pregData.normalBirth)>>
-		<br>&nbsp;&nbsp;&nbsp;&nbsp;
-		<<if $activeSlave.pregControl != "none">>
-			<<link "Normal Gestation">><<set $activeSlave.pregControl = "none">><<SlaveInteractFertility>><</link>> |
-		<</if>>
-		<<if $activeSlave.pregControl != "slow Gestation">>
-			<<link "Slow Gestation">><<set $activeSlave.pregControl = "slow gestation">><<SlaveInteractFertility>><</link>> |
-		<</if>>
-		<<if $activeSlave.pregControl != "speed up">>
-			<<link "Fast Gestation">><<set $activeSlave.pregControl = "speed up">><<SlaveInteractFertility>><</link>>
-		<</if>>
-	<</if>>
-<</if>>
-</span>
+<span id="fertilityblock"></span>
+<script>SlaveInteractFertility(V.activeSlave)</script>
 <<set $reservedChildren = FetusGlobalReserveCount("incubator")>>
 <<set $reservedChildrenNursery = FetusGlobalReserveCount("nursery")>>
 <<set _reservedIncubator = WombReserveCount($activeSlave, "incubator")>>
@@ -1428,23 +1024,9 @@ Aphrodisiacs: <span id="aphrodisiacs"><strong><<if $activeSlave.aphrodisiacs > 1
 	<</if>>
 <</if>>
 
-<span id="bloating">
-<<if $activeSlave.inflation > 0>>
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;
-	__Required Bloating__: <strong><span id="inflate"><<if $activeSlave.inflation == 3>><<print "$He is required to keep 2 gallons of $activeSlave.inflationType in $him at all times">><<elseif $activeSlave.inflation == 2>><<print "$He is required to keep 4 liters of $activeSlave.inflationType in $him at all times">><<elseif $activeSlave.inflation == 1>><<print "$He is required to keep 2 liters of $activeSlave.inflationType in $him at all times">><</if>></span></strong>.
-	<<if $activeSlave.inflationMethod == 3>>
-		<<link "Let $him deflate">><<set $activeSlave.inflation = 0,$activeSlave.inflationType = "none",$activeSlave.inflationMethod = 0,$activeSlave.cumSource = 0,$activeSlave.milkSource = 0, SetBellySize($activeSlave)>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>>
-	<<elseif $activeSlave.inflationType == "milk">>
-		<<link "Let $him deflate">><<set $activeSlave.inflation = 0,$activeSlave.inflationType = "none",$activeSlave.inflationMethod = 0, SetBellySize($activeSlave)>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>>
-	<<elseif $activeSlave.inflationType == "cum">>
-		<<link "Let $him deflate">><<set $activeSlave.inflation = 0,$activeSlave.inflationType = "none",$activeSlave.inflationMethod = 0, SetBellySize($activeSlave)>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>>
-	<<else>>
-		<<link "Let $him deflate">><<set $activeSlave.inflation = 0,$activeSlave.inflationType = "none",$activeSlave.inflationMethod = 0, SetBellySize($activeSlave)>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>>
-	<</if>>
-<</if>>
-</span>
+<span id="bloating"></span>
+<script>SlaveInteractBloating(V.activeSlave)</script>
 
-<br>
 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>.
 <<if $activeSlave.indentureRestrictions < 2>>
diff --git a/src/uncategorized/spaReport.tw b/src/uncategorized/spaReport.tw
index c5e64b3e11dda338e4b7300091c481c9d3d98d73..1fcc3fd131833cb1079dc0ee271172abcb350662 100644
--- a/src/uncategorized/spaReport.tw
+++ b/src/uncategorized/spaReport.tw
@@ -235,6 +235,7 @@
 		<span class='slave-name'><<= SlaveFullName($slaves[$i])>></span> is serving as the Attendant in $spaName.
 		<br>&nbsp;&nbsp;&nbsp;
 		<<= saChoosesOwnClothes($slaves[$i])>>
+		<<run tired($slaves[$i])>>
 		<<include "SA rules">>
 		<<include "SA diet">>
 		<<include "SA long term effects">>
@@ -245,6 +246,7 @@
 	<<else>>
 		<<silently>>
 		<<run saChoosesOwnClothes($slaves[$i])>>
+		<<run tired($slaves[$i])>>
 		<<include "SA rules">>
 		<<include "SA diet">>
 		<<include "SA long term effects">>
diff --git a/src/uncategorized/surgeryDegradation.tw b/src/uncategorized/surgeryDegradation.tw
index 4625abb71b8b5676cb7c7c5d9183503d9225b173..68e8ac2b31bd9525855bb1ebc63a2ca3d1d969e0 100644
--- a/src/uncategorized/surgeryDegradation.tw
+++ b/src/uncategorized/surgeryDegradation.tw
@@ -1094,17 +1094,6 @@ As the remote surgery's long recovery cycle completes,
 	<</if>>
 
 <<case "age">>
-	<<if $activeSlave.visualAge > 80>>
-		<<set $activeSlave.visualAge -= 40>>
-	<<elseif $activeSlave.visualAge >= 70>>
-		<<set $activeSlave.visualAge -= 30>>
-	<<elseif $activeSlave.visualAge > 50>>
-		<<set $activeSlave.visualAge -= 20>>
-	<<elseif $activeSlave.visualAge > 36>>
-		<<set $activeSlave.visualAge -= 10>>
-	<<else>>
-		<<set $activeSlave.visualAge -= 5>>
-	<</if>>
 	<<if $activeSlave.fetish == "mindbroken">>
 		$He doesn't notice the improvements to $his face, but $he's not the one looking at it. As with all surgery @@.red;$his health has been slightly affected.@@
 	<<elseif ($activeSlave.devotion > 50)>>
diff --git a/src/utility/miscWidgets.tw b/src/utility/miscWidgets.tw
index 21a0bdcf29c7721b1da91454e7c7995b3061f325..b1436a69b96244481920253a01f7c03af1e1eaa4 100644
--- a/src/utility/miscWidgets.tw
+++ b/src/utility/miscWidgets.tw
@@ -10,107 +10,6 @@ Allows for dynamic updating of the next button in the storyCaption (left side-ba
 	<<replace "#nextButton">> <<userButton>> <</replace>>
 <</widget>>
 
-/%
-Call as <<SlaveInteractImpreg>>
-%/
-<<widget "SlaveInteractImpreg">>
-<<replace #impreg>>
-	<<if $activeSlave.fuckdoll == 0>>
-	<<if canGetPregnant($activeSlave) && ($activeSlave.geneticQuirks.superfetation != 2 || $geneticMappingUpgrade != 0) && ($activeSlave.fuckdoll == 0) && $seePreg != 0>>
-		<<if canImpreg($activeSlave, $PC)>>
-			| <<link "Impregnate $him yourself">><<replace "#miniscene">><<include "FPCImpreg">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>>
-		<</if>>
-		<<if canImpreg($activeSlave, $activeSlave)>>
-			| <<link "Use $his own seed to impregnate $him">><<replace "#miniscene">><<include "FSlaveSelfImpreg">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>>
-		<</if>>
-		| [["Use another slave to impregnate " + $him|FSlaveImpreg]]
-	<</if>>
-	<<if $activeSlave.assignment != "work in the dairy" && $activeSlave.assignment != "be confined in the arcade" && $activeSlave.assignment != "be confined in the cellblock">>
-		<<if $enema == 1>>
-			<<if ($activeSlave.inflation < 3 && $activeSlave.pregKnown == 0 && $activeSlave.bellyImplant < 1500) || ($activeSlave.inflation < 1)>>
-				<<if $activeSlave.inflationType == "water" || $activeSlave.inflationType == "none">>
-					| <<link "Fill $his ass with water">><<set $activeSlave.inflationType = "water">><<set $activeSlave.inflationMethod = 2>><<replace "#miniscene">><<include "FillUpButt">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>>
-				<</if>>
-				<<if $medicalEnema == 1>>
-					<<if $activeSlave.inflationType == "aphrodisiac" || $activeSlave.inflationType == "none">>
-						| <<link "Fill $his ass with aphrodisiacs">><<set $activeSlave.inflationType = "aphrodisiac">><<set $activeSlave.inflationMethod = 2>><<replace "#miniscene">><<include "FillUpButt">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>>
-					<</if>>
-					<<if $activeSlave.inflationType == "curative" || $activeSlave.inflationType == "none">>
-						| <<link "Fill $his ass with curatives">><<set $activeSlave.inflationType = "curative">><<set $activeSlave.inflationMethod = 2>><<replace "#miniscene">><<include "FillUpButt">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>>
-					<</if>>
-					<<if $activeSlave.inflationType == "tightener" || $activeSlave.inflationType == "none">>
-						| <<link "Fill $his ass with rectal tighteners">><<set $activeSlave.inflationType = "tightener">><<set $activeSlave.inflationMethod = 2>><<replace "#miniscene">><<include "FillUpButt">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>>
-					<</if>>
-				<</if>>
-			<</if>> /* inflation < 3 */
-		<</if>> /* enema == 1 */
-		<<if $dairyPiping == 1>>
-			<<if ($milkPipeline > 88 && $milkPipeline != 0) || $arcologies[0].FSPastoralistLaw == 1>>
-				<<if ($activeSlave.inflation < 3 && $activeSlave.pregKnown == 0 && $activeSlave.bellyImplant < 1500) || ($activeSlave.inflation < 1)>>
-					<<if $activeSlave.inflationType == "milk" || $activeSlave.inflationType == "none">>
-						| <<link "Fill $his ass with milk">><<set $activeSlave.inflationType = "milk">><<set $activeSlave.inflationMethod = 2>><<replace "#miniscene">><<include "FillUpButt">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>>
-						| <<link "Force-feed $him milk">><<set $activeSlave.inflationType = "milk">><<set $activeSlave.inflationMethod = 1>><<replace "#miniscene">><<include "FillUpFace">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>>
-					<</if>>
-				<</if>>
-			<<else>>
-				| //$dairyNameCaps is not producing enough milk to pump through the pipes//
-			<</if>>
-			<<if ($cumPipeline > 88 && $cumPipeline != 0) || $arcologies[0].FSPastoralistLaw == 1>>
-				<<if ($activeSlave.inflation < 3 && $activeSlave.pregKnown == 0 && $activeSlave.bellyImplant < 1500) || ($activeSlave.inflation < 1)>>
-					<<if $activeSlave.inflationType == "cum" || $activeSlave.inflationType == "none">>
-						| <<link "Fill $his ass with cum">><<set $activeSlave.inflationType = "cum">><<set $activeSlave.inflationMethod = 2>><<replace "#miniscene">><<include "FillUpButt">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>>
-						| <<link "Force-feed $him cum">><<set $activeSlave.inflationType = "cum">><<set $activeSlave.inflationMethod = 1>><<replace "#miniscene">><<include "FillUpFace">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>>
-					<</if>>
-				<</if>>
-			<<else>>
-				| //$dairyNameCaps is not producing enough cum to pump through the pipes//
-			<</if>>
-		<</if>> /* dairyPiping == 1 */
-		<<if $wcPiping == 1>>
-			<<if ($activeSlave.inflation < 3 && $activeSlave.pregKnown == 0 && $activeSlave.bellyImplant < 1500) || ($activeSlave.inflation < 1)>>
-				<<if $activeSlave.inflationType == "urine" || $activeSlave.inflationType == "none">>
-					| <<link "Fill $his ass with urine">><<set $activeSlave.inflationType = "urine">><<set $activeSlave.inflationMethod = 2>><<replace "#miniscene">><<include "FillUpButt">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>>
-				<</if>>
-			<</if>>
-		<</if>> /* wcPiping == 1 */
-	<</if>> /* assigned to dairy or arcade */
-	<<if $activeSlave.inflation == 0 && $activeSlave.bellyImplant < 1500>>
-		<<if $activeSlave.assignment != "work in the dairy" && $activeSlave.assignment != "be confined in the arcade" && $activeSlave.assignment != "be confined in the cellblock">>
-			| [["Use another slave to force-feed " + $him|SlaveOnSlaveFeedingWorkAround]]
-			<<if $buckets == 1>>
-				| <<link "Make $him consume two liters of slave food">><<set $activeSlave.inflationType = "food">><<set $activeSlave.inflationMethod = 1>><<set $activeSlave.inflation = 1>><<replace "#miniscene">><<include "forceFeeding">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>>
-				<<if $activeSlave.pregKnown == 0>>
-					| <<link "Force $him to consume a gallon of slave food">><<set $activeSlave.inflationType = "food">><<set $activeSlave.inflationMethod = 1>><<set $activeSlave.inflation = 2>><<replace "#miniscene">><<include "forceFeeding">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>>
-					| <<link "Force two gallons of slave food into $him">><<set $activeSlave.inflationType = "food">><<set $activeSlave.inflationMethod = 1>><<set $activeSlave.inflation = 3>><<replace "#miniscene">><<include "forceFeeding">><br><</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>>
-				<</if>>
-			<</if>>
-		<</if>>
-	<</if>>
-	<<else>>
-		<<if (canGetPregnant($activeSlave)) && ($activeSlave.geneticQuirks.superfetation != 2 || $geneticMappingUpgrade != 0) && $seePreg != 0>>
-			<<if canImpreg($activeSlave, $PC)>>
-				| <<link "Put a baby in $him">><<replace "#miniscene">><<FFuckdollImpreg>><br><</replace>><</link>>
-			<</if>>
-		<</if>>
-	<</if>>
-	<</replace>>
-<<replace #bloating>>
-	<<if $activeSlave.inflation > 0>>
-		<br>&nbsp;&nbsp;&nbsp;&nbsp;
-		__Required Bloating__: <strong><span id="inflate"><<if $activeSlave.inflation == 3>><<print "$He is required to keep 2 gallons of $activeSlave.inflationType in $him at all times">><<elseif $activeSlave.inflation == 2>><<print "$He is required to keep 4 liters of $activeSlave.inflationType in $him at all times">><<elseif $activeSlave.inflation == 1>><<print "$He is required to keep 2 liters of $activeSlave.inflationType in $him at all times">><</if>></span></strong>.
-		<<if $activeSlave.inflationMethod == 3>>
-			<<link "Let $him deflate">><<set $activeSlave.inflation = 0,$activeSlave.inflationType = "none",$activeSlave.inflationMethod = 0,$activeSlave.cumSource = 0,$activeSlave.milkSource = 0, SetBellySize($activeSlave)>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>>
-		<<elseif $activeSlave.inflationType == "milk">>
-			<<link "Let $him deflate">><<set $activeSlave.inflation = 0,$activeSlave.inflationType = "none",$activeSlave.inflationMethod = 0, SetBellySize($activeSlave)>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>>
-		<<elseif $activeSlave.inflationType == "cum">>
-			<<link "Let $him deflate">><<set $activeSlave.inflation = 0,$activeSlave.inflationType = "none",$activeSlave.inflationMethod = 0, SetBellySize($activeSlave)>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>>
-		<<else>>
-			<<link "Let $him deflate">><<set $activeSlave.inflation = 0,$activeSlave.inflationType = "none",$activeSlave.inflationMethod = 0, SetBellySize($activeSlave)>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>>
-		<</if>>
-	<</if>>
-<</replace>>
-<</widget>>
-
 /%
 Call as <<SlaveInteractDrugs>>
 %/
@@ -306,174 +205,6 @@ Call as <<SlaveInteractDrugs>>
 	<</replace>>
 <</widget>>
 
-/%
-Call as <<SlaveInteractFertility>>
-%/
-<<widget "SlaveInteractFertility">>
-<<replace #fertilityblock>>
-<<if $activeSlave.ovaries == 1 || $activeSlave.mpreg == 1 || $activeSlave.preg > 0>>
-	<<if ($activeSlave.preg < -1)>>
-		//$He is sterile//
-	<<elseif ($activeSlave.pubertyXX == 0) && $activeSlave.preg < 1>>
-		//$He is not yet fertile//
-	<<elseif $activeSlave.ovaryAge >= 47 && $activeSlave.preg < 1>>
-		//$He is too old to become pregnant//
-		<<if $activeSlave.preg == -1>>
-			<<set $activeSlave.preg = 0>>
-			<<run SetBellySize($activeSlave)>>
-		<</if>>
-	<<elseif $activeSlave.broodmotherOnHold == 1>>
-		//$His pregnancy implant is turned off<<if $activeSlave.broodmotherCountDown > 0>>; $he is expected to be completely emptied of $his remaining brood in $activeSlave.broodmotherCountDown week<<if $activeSlave.broodmotherCountDown > 1>>s<</if>><<else>>.<</if>>//
-		[[Turn on implant|Slave Interact][$activeSlave.broodmotherOnHold = 0, $activeSlave.broodmotherCountDown = 0]]
-	<<elseif ($activeSlave.preg >= -1)>>
-		Contraception: <span id="fertility"><strong><<if $activeSlave.preg == -1>><<print "using contraceptives">><<elseif $activeSlave.pregWeek < 0>><<print "postpartum">><<elseif $activeSlave.preg == 0>><<print "fertile">><<elseif $activeSlave.preg < 4>><<print "may be pregnant">><<else>><<print $activeSlave.preg>><<print " weeks pregnant">><</if>></strong></span>.
-		<<if ($activeSlave.preg > 0 && $pregnancyMonitoringUpgrade == 1)>>
-			[[Inspect pregnancy|Analyze Pregnancy]] |
-		<</if>>
-		<<if ($activeSlave.preg == 0)>>
-			<<link "Use contraceptives">><<set $activeSlave.preg = -1>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>>
-		<<elseif ($activeSlave.preg == -1)>>
-			<<link "Let $him get pregnant">><<set $activeSlave.preg = 0>><<SlaveInteractImpreg>><<SlaveInteractFertility>><</link>>
-		<<elseif $activeSlave.induce == 1>>
-			//Hormones are being slipped into $his food; $he will give birth suddenly and rapidly this week//
-		<<elseif ($activeSlave.preg > $activeSlave.pregData.normalBirth-2 && $activeSlave.preg > $activeSlave.pregData.minLiveBirth) && ($activeSlave.broodmother == 0) && ($activeSlave.labor == 0)>>
-			[[Induce labor|Slave Interact][$activeSlave.labor = 1,$activeSlave.induce = 1,$birthee = 1]]
-			| [["Give " + $him + " a cesarean section"|csec]]
-		<<elseif ($activeSlave.broodmother > 0)>>
-			<<if $activeSlave.broodmotherOnHold != 1>>
-				[[Turn off implant|Slave Interact][$activeSlave.broodmotherOnHold = 1, $activeSlave.broodmotherCountDown = 38-WombMinPreg($activeSlave)]]
-			<</if>>
-			<<if ($activeSlave.broodmotherOnHold != 1) && ($activeSlave.preg >= 36)>>
-				|
-			<</if>>
-			<<if ($activeSlave.preg > 37)>>
-				| [[Induce mass childbirth|BirthStorm]]
-			<</if>>
-		<<elseif ($activeSlave.preg > $activeSlave.pregData.minLiveBirth)>>
-			[["Give " + $him + " a cesarean section"|csec]]
-		<<elseif ($activeSlave.preg > 0) && $activeSlave.breedingMark == 1 && $propOutcome == 1 && $arcologies[0].FSRestart != "unset" && $eugenicsFullControl != 1 && ($activeSlave.pregSource == -1 || $activeSlave.pregSource == -6)>>
-			//You are forbidden from aborting an Elite child//
-		<<elseif ($activeSlave.preg > 0)>>
-			[["Abort " + $his + " pregnancy"|Abort]]
-		<</if>>
-	<</if>>
-<</if>>
-<<if ($activeSlave.pregKnown == 1) && ($pregSpeedControl == 1) && ($activeSlave.breedingMark != 1 || $propOutcome == 0 || $eugenicsFullControl == 1 || $arcologies[0].FSRestart == "unset") && ($activeSlave.indentureRestrictions < 1) && ($activeSlave.broodmother == 0) && $seePreg != 0>>
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;
-	__Pregnancy control__: <<if $activeSlave.pregControl == "labor suppressors">>Labor is suppressed<<elseif $activeSlave.pregControl == "slow gestation">>Slowed gestation speed<<elseif $activeSlave.pregControl == "speed up">>Faster gestation speed, staffed clinic recommended<<else>>Normal gestation and birth<</if>>.
-	<<if ($activeSlave.preg >= $activeSlave.pregData.minLiveBirth)>>
-		<br>&nbsp;&nbsp;&nbsp;&nbsp;
-		<<if $activeSlave.pregControl == "labor suppressors">>
-			<<link "Normal Birth">><<set $activeSlave.pregControl = "none">><<SlaveInteractFertility>><</link>>
-		<<else>>
-			<<link "Suppress Labor">><<set $activeSlave.pregControl = "labor suppressors">><<SlaveInteractFertility>><</link>>
-		<</if>>
-	<<elseif ($activeSlave.preg < $activeSlave.pregData.normalBirth)>>
-		<br>&nbsp;&nbsp;&nbsp;&nbsp;
-		<<if $activeSlave.pregControl != "none">>
-			<<link "Normal Gestation">><<set $activeSlave.pregControl = "none">><<SlaveInteractFertility>><</link>> |
-		<</if>>
-		<<if $activeSlave.pregControl != "slow Gestation">>
-			<<link "Slow Gestation">><<set $activeSlave.pregControl = "slow gestation">><<SlaveInteractFertility>><</link>> |
-		<</if>>
-		<<if $activeSlave.pregControl != "speed up">>
-			<<link "Fast Gestation">><<set $activeSlave.pregControl = "speed up">><<SlaveInteractFertility>><</link>>
-		<</if>>
-	<</if>>
-<</if>>
-<</replace>>
-<</widget>>
-/%
-Call as <<SlaveInteractSexOption>>
-%/
-<<widget "SlaveInteractSexOption">>
-<<replace #sexoption>>
-	<<if ($activeSlave.vagina > -1)>>
-		<<if canDoVaginal($activeSlave)>>
-			<<link "Fuck $him">><<replace "#miniscene">><<include "FVagina">><br><</replace>><<SlaveInteractFertility>><</link>>
-			<<if canDoAnal($activeSlave)>>
-				| <<link "Use $his holes">><<replace "#miniscene">><<include "FButt">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><<SlaveInteractFertility>><</link>>
-			<</if>>
-			<<if ($activeSlave.bellyPreg >= 300000)>>
-				| <<link "Fuck $him on $his belly">><<replace "#miniscene">><<include "FBellyFuck">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><<SlaveInteractFertility>><</link>>
-			<</if>>
-			<<if $activeSlave.bellyPreg >= 300000 && $pregInventions >= 1>>
-				| <<link "Fuck $him in $his maternity swing">><<replace "#miniscene">><<include "FMaternitySwing">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><<SlaveInteractFertility>><</link>>
-			<</if>>
-			<<if $activeSlave.bellyPreg >= 300000 && $pregInventions >= 1>>
-				| <<link "Fuck $him with the help of $his assistants">><<replace "#miniscene">><<include "FAssistedSex">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><<SlaveInteractFertility>><</link>>
-			<</if>>
-			<<if $activeSlave.bellyPreg >= 300000 && $pregInventions >= 1>>
-				| <<link "Fuck $him in your goo pool">><<replace "#miniscene">><<include "FPoolSex">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><<SlaveInteractFertility>><</link>>
-			<</if>>
-		<<else>>
-			//Remove $his chastity belt if you wish to fuck $him//
-		<</if>>
-	<</if>>
-	<<if $activeSlave.bellyPreg >= 300000>>
-		<<if canDoVaginal($activeSlave) || canDoAnal($activeSlave)>>
-			| <<link "Fuck $him on $his belly">><<replace "#miniscene">><<include "FBellyFuck">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-			<<if $pregInventions >= 1>>
-				| <<link "Fuck $him in $his maternity swing">><<replace "#miniscene">><<include "FMaternitySwing">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-				| <<link "Fuck $him with the help of $his assistants">><<replace "#miniscene">><<include "FAssistedSex">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-				| <<link "Fuck $him in your goo pool">><<replace "#miniscene">><<include "FPoolSex">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-			<</if>>
-		<</if>>
-	<</if>>
-<</replace>>
-<</widget>>
-/%
-Call as <<SlaveInteractAnalSexOption>>
-%/
-<<widget "SlaveInteractAnalSexOption">>
-<<replace #analsexoption>>
-	<<if canDoAnal($activeSlave)>>
-		| <<link "Fuck $his ass">><<replace "#miniscene">><<include "FAnus">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-	<<else>>
-		| //Remove $his chastity belt if you wish to fuck $his ass//
-	<</if>>
-<</replace>>
-<</widget>>
-/%
-Call as <<SlaveInteractAnalGropeOption>>
-%/
-<<widget "SlaveInteractAnalGropeOption">>
-<<replace #analgropeoption>>
-	<<if canDoAnal($activeSlave)>>
-		| <<link "Grope $his butt">><<replace "#miniscene">><<include "FondleButt">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-	<</if>>
-<</replace>>
-<</widget>>
-/%
-Call as <<SlaveInteractGropeOption>>
-%/
-<<widget "SlaveInteractGropeOption">>
-<<replace #gropeoption>>
-	<<if ($activeSlave.vagina > -1)>>
-		<<if canDoVaginal($activeSlave)>>
-			| <<link "Grope $his pussy">><<replace "#miniscene">><<include "FondleVagina">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-		<</if>>
-	<</if>>
-<</replace>>
-<</widget>>
-/%
-Call as <<SlaveInteractDickGropeOption>>
-%/
-<<widget "SlaveInteractDickGropeOption">>
-<<replace #dickgropeoption>>
-	<<if ($activeSlave.dick > 0)>>
-		<<if !($activeSlave.chastityPenis)>>
-		| <<link "Grope $his dick">><<replace "#miniscene">><<include "FondleDick">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-			<<if canPenetrate($activeSlave) && $sexualOpeness == 1>>
-				| <<link "Ride $his dick">><<replace "#miniscene">><<include "FDick">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-			<</if>>
-		<<else>>
-			| //Remove $his dick chastity belt if you wish to play with $his cock//
-		<</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>>