diff --git a/devNotes/limb functions.md b/devNotes/limb functions.md
new file mode 100644
index 0000000000000000000000000000000000000000..fcfe49a8c728ca9166d5e46f2dd9b0f358d5aca7
--- /dev/null
+++ b/devNotes/limb functions.md	
@@ -0,0 +1,89 @@
+## Basic documentation for the limb access functions coming with the new limb system.
+
+### ID system
+
+The new system uses new IDs instead of the old ones.
+```
+limb       new  old
+no limb:    0    1
+natural:    1    0
+basic:      2   -1
+sex:        3   -2
+beauty:     4   -3
+combat:     5   -4
+cybernetic: 6   -5
+```
+
+
+### Usage example:
+
+```
+<<if isAmputee($activeSlave)>>
+	Slave is full amputee.
+<</if>>
+```
+
+Most functions can be used like this, though some are more specialized.
+
+
+### Functions:
+
+`isAmputee(slave)`:
+	True if slave has no limbs, neither natural nor prosthetic.
+
+`hasAnyNaturalLimbs(slave)`:
+	True if slave has at least one natural limb.
+
+`hasAnyProstheticLimbs(slave)`:
+	True if slave has at least one prosthetic limb.
+
+`hasAnyLegs(slave)`:
+	True if slave has at least one leg.
+
+`hasAnyArms(slave)`:
+	True if slave has at least one arm.
+
+`hasAnyNaturalLegs(slave)`:
+	True if slave has at least one leg and all are natural.
+
+`hasBothLegs(slave)`:
+	True if slave has both legs.
+
+`hasBothArms(slave)`:
+	True if slave has both arms.
+
+`hasBothNaturalLegs(slave)`:
+	True if slave has both legs and they are natural.
+
+`hasBothNaturalArms(slave)`:
+	True if slave has both arms and they are natural.
+
+`hasLegAndArm(slave)`:
+	True if slave has at least one leg and at least one arm.
+
+`hasAllLimbs(slave)`:
+	True if slave has all limbs.
+
+`hasAllNaturalLimbs(slave)`:
+	True if slave has all limbs and all are natural.
+
+`idToDescription(id)`:
+	Returns a very short description of the specified limb ID.  
+    0: "amputated";  
+    1: "healthy";  
+    2: "modern prosthetic";  
+    3: "advanced, sex-focused prosthetic";  
+    4: "advanced, beauty-focused prosthetic";  
+    5: "advanced, combat-focused prosthetic";  
+    6: "highly advanced cybernetic";
+
+`getLimbCount(slave, id)`:
+	Returns count of specified limb ID.
+
+`hasLimb(slave, limb)`:
+	True if slave has specified limb.
+	Allowed values for limb: "left arm", "right arm", "left leg", "right leg".
+
+`getLimbID(slave, limb)`:
+	Returns limb ID of the specified limb.
+	Allowed values for limb: "left arm", "right arm", "left leg", "right leg".
diff --git a/src/facilities/nursery/longChildDescription.tw b/src/facilities/nursery/longChildDescription.tw
index 9c6b3dd183d0877d4f17b8ecb81583a4d138401a..7ce18eb896f99d7ef458432160e4b792b566f93d 100644
--- a/src/facilities/nursery/longChildDescription.tw
+++ b/src/facilities/nursery/longChildDescription.tw
@@ -1119,9 +1119,7 @@ $He is
 	$activeChild.counter.pitKills slaves have died by $his hand in pit fights.
 <</if>>
 
-<<if $activeChild.corsetPiercing > 0>>
-	<<CorsetPiercingDescription>>
-<</if>>
+<<= App.Desc.piercing($activeChild, "corset")>>
 
 <<pregnancyDescription>>
 
@@ -1282,9 +1280,9 @@ $He is
 			The piercings on $his head run through $his suit, helping secure the material to $his head.
 		<</if>>
 	<<else>>
-		<<earPiercingDescription>>
-		<<nosePiercingDescription>>
-		<<eyebrowPiercingDescription>>
+		<<= App.Desc.mods($activeChild, "ear")>>
+		<<= App.Desc.mods($activeChild, "nose")>>
+		<<= App.Desc.mods($activeChild, "eyebrow")>>
 		<<if ($activeChild.custom.tattoo != "") && (def $activeChild.custom.tattoo)>>
 			<<print $activeChild.custom.tattoo>>
 		<</if>>
@@ -1317,12 +1315,13 @@ $He is
 
 <<if $activeChild.fuckdoll == 0>>
 	<<nailsDescription>>
-	<<if $showBodyMods == 1>>
-		<<backTatDescription>>
-		<<shouldersTatDescription>>
-		<<armsTatDescription>>
-	<</if>>
 <</if>>
+<<= App.Desc.mods($activeChild, "back")>>
+<<= App.Desc.mods($activeChild, "shoulder")>>
+<<= App.Desc.mods($activeChild, "upper arm")>>
+<<= App.Desc.mods($activeChild, "lower arm")>>
+<<= App.Desc.mods($activeChild, "hand")>>
+<<= App.Desc.mods($activeChild, "wrist")>>
 
 <<if $activeChild.fuckdoll == 0>>
 	<<if $activeChild.minorInjury != 0>>
@@ -1338,15 +1337,11 @@ $He is
 <<BoobsDescription>>
 <<boobsShapeDescription>>
 <<boobsExtraDescription>>
-<<if $showBodyMods == 1>>
-	<<boobsTatDescription>>
-<</if>>
-<<boobBrandDescription>>
+<<= App.Desc.mods($activeChild, "chest")>>
+<<= App.Desc.mods($activeChild, "breast")>>
 <<shouldersDescription>>
 <<nipplesDescription>>
-<<if $showBodyMods == 1>>
-	<<nipplesPiercingDescription>>
-<</if>>
+<<= App.Desc.mods($activeChild, "nipple")>>
 <<areolaeDescription>>
 
 <<if $activeChild.inflation > 0>> /* to be obsoleted with phase 4 */
diff --git a/src/gui/mainMenu/AlphaDisclaimer.tw b/src/gui/mainMenu/AlphaDisclaimer.tw
index 38da9745db0035671dc86a2568cdff8aee206155..04e654a51749a0fab1a6206d54f64e32e2cc2c44 100644
--- a/src/gui/mainMenu/AlphaDisclaimer.tw
+++ b/src/gui/mainMenu/AlphaDisclaimer.tw
@@ -1,13 +1,12 @@
 :: Alpha disclaimer
 
-<<set $ui = "start">>\
 //version $ver mod version $pmodVer build $releaseID//
 @@.green;//Mod: expanded age ranges and other tweaks 2016-08-30//@@ @@.darkred;+SV@@
 @@.green;//Mod: extra preg content and other crap//@@
 
 ''This is an alpha.'' That means the game is missing content, is full of bugs, is imbalanced, and is generally in an incomplete state. The game will keep a start of turn autosave. If you encounter a bug, we strongly recommend you reload your start of turn autosave immediately. Please submit your feedback and bug reports at https://gitgud.io/pregmodfan/fc-pregmod/issues. Consider attaching a save file and screenshot of the problem. This Pregmod is a modification of the original <i>Free Cities</i> created by FCdev, which can be seen at https://freecitiesblog.blogspot.com/.
 
-An in-game encyclopedia is available from the sidebar (or [[here|Encyclopedia][$nextButton = "Back", $nextLink = passage()]] if you'd prefer to have a look before starting), with answers to most basic gameplay questions.
+An in-game encyclopedia is available from the sidebar, with answers to most basic gameplay questions.
 
 __Important note for new players, and a reminder for FC veterans:__ when the player is offered a set of choices, the ''Continue'' button at the top of the left sidebar will almost always remain available. Using this to decline all the options presented is //not cheating.// If it's available, it's supposed to be available. It represents the player character politely bowing out of the situation.
 
@@ -17,4 +16,4 @@ If you enjoy FC and feel like using your real-life ¤ to express gratitude, you
 
 @@.yellow;This is a text-based game that includes descriptions of sexual activity, graphic violence, drug use, and other subjects not suitable for persons under the age of 18. This is a work of fiction; any resemblance to actual persons, places, or events is unintended.@@
 
-[[I am 18 or more years of age, I understand, and I wish to continue|Economy Intro]]
+[[I am 18 or more years of age, I understand, and I wish to continue|Economy Intro]]
\ No newline at end of file
diff --git a/src/init/storyInit.tw b/src/init/storyInit.tw
index ff8ce44da32dc0a09a661974246ae05b991bffb2..78a0739ef6d71080a268eafca41b1adfd56481cd 100644
--- a/src/init/storyInit.tw
+++ b/src/init/storyInit.tw
@@ -263,7 +263,7 @@ You should have received a copy of the GNU General Public License along with thi
 	<<set $seeReportImages = 1>>
 	<<set $lineSeparations = 1>>
 	<<set $showSexualHistory = 1>>
-	<<set $showBodyMods = 0>>
+	<<set $showBodyMods = 1>>
 	<<set $showImplantEffects = 1>>
 	<<set $showClothing = 1>>
 	<<set $showWardrobe = 1>>
diff --git a/src/js/assayJS.js b/src/js/assayJS.js
index 3b4aee4b3b5206c91871e270e5a48d258bd06436..e87d76bed37f660fe2f69029faba2593dbf07f67 100644
--- a/src/js/assayJS.js
+++ b/src/js/assayJS.js
@@ -1212,7 +1212,7 @@ window.DegradingName = function DegradingName(slave) {
 		} else if (slave.visualAge < 25) {
 			names.push("Girly", "Thin", "Young");
 		}
-		if (slave.amp === 1) {
+		if (isAmputee(slave)) {
 			names.push("Stumpy");
 			suffixes.push("Stumpy");
 		}
@@ -1749,18 +1749,14 @@ window.Deadliness = function Deadliness(slave) {
 		deadliness -= 1;
 	}
 
-	if (slave.amp === 0) {
-		if (!canWalk(slave)) {
-			deadliness -= 20;
-		}
-	} else if (slave.amp === 1) {
+	deadliness -= getLimbCount(slave, 0) * 5;
+	deadliness -= getLimbCount(slave, 2) * 0.25;
+	deadliness -= getLimbCount(slave, 3) * 0.25;
+	deadliness -= getLimbCount(slave, 4) * 0.25;
+	deadliness += getLimbCount(slave, 5) * 1.25;
+	deadliness += getLimbCount(slave, 6) * 2.5;
+	if (hasBothLegs(slave) && !canWalk(slave)) {
 		deadliness -= 20;
-	} else if (slave.amp === -5) {
-		deadliness += 10;
-	} else if (slave.amp === -4) {
-		deadliness += 5;
-	} else {
-		deadliness -= 1;
 	}
 
 	if (!canSee(slave)) {
diff --git a/src/js/describePiercings.js b/src/js/describePiercings.js
new file mode 100644
index 0000000000000000000000000000000000000000..a527cf0037197db03853a5d3a5ec61a8e1de851e
--- /dev/null
+++ b/src/js/describePiercings.js
@@ -0,0 +1,76 @@
+/**
+ * @param {App.Entity.SlaveState} slave
+ * @returns {string} Relevant slave tattoo, if present
+ */
+App.Desc.piercing = function(slave, surface) {
+	"use strict";
+	const V = State.variables;
+	let r = ``;
+	/* eslint-disable no-unused-vars*/
+	const {
+		he, him, his, hers, himself, boy, He, His
+	} = getPronouns(slave);
+	/* eslint-enable */
+	if (V.showBodyMods !== 1) {
+		return;
+	}
+	switch (surface) {
+		case "ear": {
+			r += `<<earPiercingDescription>>`;
+			break;
+		}
+		case "nose": {
+			r += `<<nosePiercingDescription>>`;
+			break;
+		}
+		case "eyebrow": {
+			r += `<<eyebrowPiercingDescription>>`;
+			break;
+		}
+		case "lips": {
+			r += `<<lipsPiercingDescription>>`;
+			break;
+		}
+		case "tongue": {
+			r += `<<tonguePiercingDescription>>`;
+			break;
+		}
+		case "nipple": {
+			r += `<<nipplesPiercingDescription>>`;
+			break;
+		}
+		case "areolae": {
+			r += `<<areolaePiercingDescription>>`;
+			break;
+		}
+		case "navel": {
+			r += `<<navelPiercingDescription>>`;
+			break;
+		}
+		case "clit": {
+			r += `<<clitPiercingDescription>>`;
+			break;
+		}
+		case "vagina": {
+			r += `<<vaginaPiercingDescription>>`;
+			break;
+		}
+		case "dick": {
+			r += `<<dickPiercingDescription>>`;
+			break;
+		}
+		case "anus": {
+			r += `<<anusPiercingDescription>>`;
+			break;
+		}
+		case "corset": { // non anatomical
+			r += `<<CorsetPiercingDescription>>`;
+			break;
+		}
+		case "chastity": { // non anatomical
+			r += `<<chastityPiercingDescription>>`;
+			break;
+		}
+	}
+	return r;
+};
diff --git a/src/js/describeTattoos.js b/src/js/describeTattoos.js
new file mode 100644
index 0000000000000000000000000000000000000000..fad61cceddf5116594f764e40019cd0b8fbbd01c
--- /dev/null
+++ b/src/js/describeTattoos.js
@@ -0,0 +1,64 @@
+/**
+ * @param {App.Entity.SlaveState} slave
+ * @returns {string} Relevant slave tattoo, if present
+ */
+App.Desc.tattoo = function(slave, surface) {
+	"use strict";
+	const V = State.variables;
+	let r = ``;
+	/* eslint-disable no-unused-vars*/
+	const {
+		he, him, his, hers, himself, boy, He, His
+	} = getPronouns(slave);
+	/* eslint-enable */
+	if (V.showBodyMods !== 1) {
+		return;
+	}
+	switch (surface) {
+		case "shoulder": {
+			r += `<<shouldersTatDescription>>`;
+			break;
+		}
+		case "lips": {
+			r += `<<lipsTatDescription>>`;
+			break;
+		}
+		case "breast": {
+			r += `<<boobsTatDescription>>`;
+			break;
+		}
+		case "upper arm": { /* technically the old widget describes the ENTIRE arm, but we are going to display it here to preserve order */
+			r += `<<armsTatDescription>>`;
+			break;
+		}
+		case "back": {
+			r += `<<backTatDescription>>`;
+			break;
+		}
+		case "lower back": {
+			r += `<<stampTatDescription>>`;
+			break;
+		}
+		case "buttock": {
+			r += `<<buttTatDescription>>`;
+			break;
+		}
+		case "vagina": {
+			r += `<<vaginaTatDescription>>`;
+			break;
+		}
+		case "dick": {
+			r += `<<dickTatDescription>>`;
+			break;
+		}
+		case "anus": {
+			r += `<<anusTatDescription>>`;
+			break;
+		}
+		case "thigh": { /* technically the old widget describes the ENTIRE leg, but we are going to display it here to preserve order */
+			r += `<<legsTatDescription>>`;
+			break;
+		}
+	}
+	return r;
+};
diff --git a/src/js/descriptionWidgets.js b/src/js/descriptionWidgets.js
index 3322ea84ec84046e6e274827524f643bcd8b38e4..a61343d53ec2d9d5de5958e03827e7c8818e800c 100644
--- a/src/js/descriptionWidgets.js
+++ b/src/js/descriptionWidgets.js
@@ -581,7 +581,19 @@ App.Desc.ageAndHealth = function(slave) {
  * @returns {string} Slave's mods.
  */
 App.Desc.mods = function(slave, surface) {
-	return App.Desc.brand(slave, surface) + App.Desc.scar(slave, surface);
+	const V = State.variables;
+	if (V.showBodyMods !== 1) {
+		return;
+	}
+	if (slave.fuckdoll !== 0 && !["vagina", "anus", "lips"].includes(surface)) { /* Fuckdoll vulva and anus alone are visibile, plus enormus lips */
+		return;
+	}
+	return (
+		App.Desc.piercing(slave, surface) +
+		App.Desc.tattoo(slave, surface) +
+		App.Desc.brand(slave, surface) +
+		App.Desc.scar(slave, surface)
+	);
 };
 
 /**
diff --git a/src/js/economyJS.js b/src/js/economyJS.js
index b717b1ef6680f2c0e65a31506c51d1da9caaae6e..d5ec91d01c0fd8d1f8c3fe37158dbb66d4cc08b2 100644
--- a/src/js/economyJS.js
+++ b/src/js/economyJS.js
@@ -750,10 +750,11 @@ window.getSlaveCost = function(s) {
 		cost += 15;
 	}
 	if ((s.assignment !== Job.DAIRY || State.variables.dairyRestraintsSetting < 2) && (s.assignment !== Job.ARCADE)) {
-		if (s.amp !== 0) {
-			cost += (s.amp === 1) ? rulesCost : rulesCost / 2;
-		} else if (!canWalk(s)) {
+		if (!canWalk) {
 			cost += rulesCost;
+		} else {
+			cost += getLimbCount(s, 0) * 0.25 * rulesCost;
+			cost += (getLimbCount(s, 2) + getLimbCount(s, 3) + getLimbCount(s, 4) + getLimbCount(s, 5) + getLimbCount(s, 6)) * 0.125 * rulesCost;
 		}
 	}
 
diff --git a/src/js/eventSelectionJS.js b/src/js/eventSelectionJS.js
index 5468c334d639bb16c532fc67caf4a4a99d3dc2d5..47042b1ad38389be979b626ef3d102b08a55a76e 100644
--- a/src/js/eventSelectionJS.js
+++ b/src/js/eventSelectionJS.js
@@ -1627,7 +1627,7 @@ window.generateRandomEventPoolStandard = function(eventSlave) {
 			}
 		}
 
-		if (eventSlave.amp === 1) {
+		if (isAmputee(slave)) {
 			if (eventSlave.devotion > 20) {
 				if (eventSlave.anus > 0 && canDoAnal(eventSlave)) {
 					State.variables.RESSevent.push("devoted amp");
diff --git a/src/js/slaveCostJS.js b/src/js/slaveCostJS.js
index f28e30950ff7ffed695b3c5242db49e7a7ddae40..9c525f9778d2ae679ab8e2b244e988af6cc1165d 100644
--- a/src/js/slaveCostJS.js
+++ b/src/js/slaveCostJS.js
@@ -2259,9 +2259,7 @@ window.slaveCost = (function() {
 		} else if (V.rep < 5000) {
 			multiplier -= 0.1*(Object.getOwnPropertyNames(slave.brand).length);
 		}
-		if (slave.amp === 1) {
-			multiplier -= 0.2;
-		}
+		multiplier -= getLimbCount(slave, 0) * 0.05;
 		if (slave.eyes <= -2) {
 			multiplier -= 0.2;
 		}
diff --git a/src/js/vignettes.js b/src/js/vignettes.js
index 77b666cf4f6be8ee73b6908ddd1a395cc42b2885..4171d04b94f9804dfa471ffb6f9fe913daa9bf53 100644
--- a/src/js/vignettes.js
+++ b/src/js/vignettes.js
@@ -1158,13 +1158,14 @@ window.GetVignette = function GetVignette(slave) {
 				});
 			}
 		}
-		if (slave.amp === 1) {
+		if (isAmputee(slave)) {
 			vignettes.push({
 				text: `${he} disappointed a customer who thought they would enjoy fucking a quadruple amputee, but found it revolting,`,
 				type: "rep",
 				effect: -1,
 			});
-		} else if (slave.amp === -1) {
+		}
+		if (getLimbCount(slave, 2) > 0) {
 			vignettes.push({
 				text: `a strange customer was excited by the sight of ${his} prosthetic limbs,`,
 				type: "rep",
@@ -1180,7 +1181,8 @@ window.GetVignette = function GetVignette(slave) {
 				type: "rep",
 				effect: -1,
 			});
-		} else if (slave.amp === -2) {
+		}
+		if (getLimbCount(slave, 3) > 0) {
 			vignettes.push({
 				text: `a customer was excited by ${his} vibrating fingertips,`,
 				type: "rep",
@@ -1196,7 +1198,8 @@ window.GetVignette = function GetVignette(slave) {
 				type: "rep",
 				effect: -1,
 			});
-		} else if (slave.amp === -3) {
+		}
+		if (getLimbCount(slave, 4) > 0) {
 			vignettes.push({
 				text: `a strange customer was excited by the sight of ${his} artificial limbs,`,
 				type: "rep",
@@ -1212,7 +1215,8 @@ window.GetVignette = function GetVignette(slave) {
 				type: "rep",
 				effect: -1,
 			});
-		} else if (slave.amp === -4) {
+		}
+		if (getLimbCount(slave, 5) > 0) {
 			vignettes.push({
 				text: `a customer was excited by the thought of having sex with a slave with p-limbs, but was scared off by ${his} combat p-limbs,`,
 				type: "cash",
@@ -1228,7 +1232,8 @@ window.GetVignette = function GetVignette(slave) {
 				type: "cash",
 				effect: -1,
 			});
-		} else if (slave.amp === -5) {
+		}
+		if (getLimbCount(slave, 6) > 0) {
 			vignettes.push({
 				text: `a customer was fascinated by ${his} cybernetic limbs, and spent almost as much time examining them as they did having sex with ${him},`,
 				type: "cash",
@@ -3046,13 +3051,14 @@ window.GetVignette = function GetVignette(slave) {
 				});
 			}
 		}
-		if (slave.amp === 1) {
+		if (isAmputee(slave)) {
 			vignettes.push({
 				text: `${he} disappointed a citizen who thought they would enjoy fucking a quadruple amputee, but found it revolting,`,
 				type: "rep",
 				effect: -1,
 			});
-		} else if (slave.amp === -1) {
+		}
+		if (getLimbCount(slave, 2) > 0) {
 			vignettes.push({
 				text: `a strange citizen was excited by the sight of ${his} prosthetic limbs,`,
 				type: "rep",
@@ -3068,7 +3074,8 @@ window.GetVignette = function GetVignette(slave) {
 				type: "rep",
 				effect: -1,
 			});
-		} else if (slave.amp === -2) {
+		}
+		if (getLimbCount(slave, 3) > 0) {
 			vignettes.push({
 				text: `a citizen was excited by ${his} vibrating fingertips,`,
 				type: "rep",
@@ -3084,7 +3091,8 @@ window.GetVignette = function GetVignette(slave) {
 				type: "rep",
 				effect: -1,
 			});
-		} else if (slave.amp === -3) {
+		}
+		if (getLimbCount(slave, 4) > 0) {
 			vignettes.push({
 				text: `a strange citizen was excited by the sight of ${his} artificial limbs,`,
 				type: "rep",
@@ -3100,7 +3108,8 @@ window.GetVignette = function GetVignette(slave) {
 				type: "rep",
 				effect: -1,
 			});
-		} else if (slave.amp === -4) {
+		}
+		if (getLimbCount(slave, 5) > 0) {
 			vignettes.push({
 				text: `a citizen was excited by the thought of having sex with a slave with p-limbs, but was scared off by ${his} combat p-limbs,`,
 				type: "rep",
@@ -3116,7 +3125,8 @@ window.GetVignette = function GetVignette(slave) {
 				type: "rep",
 				effect: -1,
 			});
-		} else if (slave.amp === -5) {
+		}
+		if (getLimbCount(slave, 6) > 0) {
 			vignettes.push({
 				text: `a citizen was fascinated by ${his} cybernetic limbs, and spent almost as much time examining them as they did having sex with ${him},`,
 				type: "rep",
@@ -3857,7 +3867,7 @@ window.GetVignette = function GetVignette(slave) {
 				effect: 1,
 			});
 		}
-		if (slave.amp === 1) {
+		if (isAmputee(slave)) {
 			vignettes.push({
 				text: `${he} was soaped up, tied to a pole, and used as a very inefficient mop. While being used to clean outside, ${he} certainly drew some stares,`,
 				type: "rep",
@@ -4094,7 +4104,7 @@ window.GetVignette = function GetVignette(slave) {
 				type: "trust",
 				effect: -1
 			});
-			if ((V.canines.length > 0) && (slave.amp === 0)) {
+			if ((V.canines.length > 0) && hasAnyNaturalLegs(slave)) {
 				vignettes.push({
 					text: `an over-excited dog left scratch marks on ${his} legs,`,
 					type: "health",
diff --git a/src/js/walkPastJS.js b/src/js/walkPastJS.js
index 5d8a0051cd479f617aec1c7e4ec38ec437b8cf13..4a1dbad295f0fb02ccc5901159b74f8b37f5c788 100644
--- a/src/js/walkPastJS.js
+++ b/src/js/walkPastJS.js
@@ -122,14 +122,14 @@ window.loverSlave = function(activeSlave) {
 				t += `having loud sex ${_fuckSpot}. ${name} is such a sexual addict that ${he} wants it all the time, and ${partnerName} does ${his2} best to help ${his2} ${activeSlaveRel} get off. `;
 				if (canPenetrate(activeSlave) && _fuckSeed > 50) {
 					if (canDoVaginal(_partnerSlave)) {
-						if (_partnerSlave.vagina === 0 && _partnerSlave.amp !== 1) {
+						if (_partnerSlave.vagina === 0 && hasBothLegs(_partnerSlave)) {
 							t += `${name} has ${his} cock between ${partnerName}'s legs and is enjoying an enthusiastic thigh job.`;
 						} else if (_partnerSlave.vagina === 0) {
 							t += `${name} has ${his} cock between ${partnerName}'s labia and is enthusiastically teasing ${his} virgin lover.`;
-						} else if (_fuckSeed > 90 && _partnerSlave.amp !== 1) {
+						} else if (_fuckSeed > 90 && hasAllLimbs(_partnerSlave)) {
 							t += `${name} has ${partnerName} on ${his2} knees and is enthusiastically fucking ${his2} pussy doggy style.`;
-						} else if (_fuckSeed > 80 && activeSlave.amp !== 1) {
-							t += `${name} has ${partnerName} pushed against the wall is is fucking ${his2} pussy from behind.`;
+						} else if (_fuckSeed > 80 && hasBothLegs(activeSlave)) {
+							t += `${name} has ${partnerName} pushed against the wall and is fucking ${his2} pussy from behind.`;
 						} else if (_fuckSeed > 70) {
 							t += `${partnerName} has ${name} on ${his2} back and is enthusiastically bouncing on ${his2} dick.`;
 						} else if (_fuckSeed > 60) {
@@ -140,10 +140,10 @@ window.loverSlave = function(activeSlave) {
 					} else if (canDoAnal(_partnerSlave)) {
 						if (_partnerSlave.anus === 0) {
 							t += `${name} has ${his} cock sandwiched between ${partnerName}'s buttcheeks and is enthusiastically hotdogging ${his2} rear.`;
-						} else if (_fuckSeed > 90 && _partnerSlave.amp !== 1) {
+						} else if (_fuckSeed > 90 && hasAllLimbs(_partnerSlave)) {
 							t += `${name} has ${partnerName} on ${his2} knees and is enthusiastically fucking ${his2} ass doggy style.`;
-						} else if (_fuckSeed > 80 && activeSlave.amp !== 1) {
-							t += `${name} has ${partnerName} pushed against the wall is is fucking ${his2} ass from behind.`;
+						} else if (_fuckSeed > 80 && hasBothLegs(activeSlave)) {
+							t += `${name} has ${partnerName} pushed against the wall and is fucking ${his2} ass from behind.`;
 						} else if (_fuckSeed > 70) {
 							t += `${partnerName} has ${name} on ${his} back and is enthusiastically bouncing on ${his} dick.`;
 						} else if (_fuckSeed > 60) {
diff --git a/src/npc/acquisition.tw b/src/npc/acquisition.tw
index ff77c90cadffd1cf2a6d3860b1cf161eae72ea95..9bc7d522606d1b49932b77cf05bb23a21f54fc10 100644
--- a/src/npc/acquisition.tw
+++ b/src/npc/acquisition.tw
@@ -2,7 +2,7 @@
 
 <<unset $slaveWithoutBonuses, $startingGirlCopied, $startingGirlRelation>>
 
-<<set $fixedNationality = 0, $encyclopedia = " ">>
+<<set $fixedNationality = 0, $showEncyclopedia = 0>>
 
 <<if $saveImported == 1>><<set _valueOwed = 5000>><<else>><<set _valueOwed = 50000>><</if>>
 <<if $freshPC == 1 || $saveImported == 0>>
@@ -751,4 +751,4 @@ The previous owner seems to have left in something of a hurry.
 	<</if>>
 	<<script>>Save.autosave.save("Week Start Autosave")<</script>>
 	<<goto "Main">>
-<</link>>
+<</link>>
\ No newline at end of file
diff --git a/src/npc/descriptions/boobs/boobs.js b/src/npc/descriptions/boobs/boobs.js
index b3f7eeadbaa29bc741b0473586a20e1cbf11dd8e..7f0519fa4f69ba4b3c52cf9d592dee0db5fc3ea2 100644
--- a/src/npc/descriptions/boobs/boobs.js
+++ b/src/npc/descriptions/boobs/boobs.js
@@ -489,7 +489,14 @@ App.Desc.boobs = function() {
 				}
 				break;
 			case "a chattel habit":
-				r += `${slave.slaveName}'s chattel habit's scapular covers ${his} shoulders and arms, but is open in front, leaving ${his} `;
+				r += `${slave.slaveName}'s chattel habit's scapular covers ${his} shoulders`;
+				if (hasAnyArms(slave)) {
+					r += ` and arm`;
+					if (hasBothArms(slave)) {
+						r += `s`;
+					}
+				}
+				r += `, but is open in front, leaving ${his} `;
 				if (slave.boobs > 4000) {
 					r += `${noun} completely bare. It tucks into a golden belt, though this is buried under ${his} breasts.`;
 				} else if (slave.boobs > 300) {
@@ -1292,7 +1299,7 @@ App.Desc.boobs = function() {
 		}
 
 		function walkingAbility(slave) {
-			if (slave.amp === 1) {
+			if (!hasAnyLegs(slave)) {
 				return `${he} might not be able to walk, if ${he} still had legs.`;
 			} else if (slave.muscles >= 5) {
 				return `${his} ${musclesTone(slave)} back muscles get a workout just from supporting them. If they grow any larger, ${he} may not be able to walk.`;
@@ -1348,7 +1355,7 @@ App.Desc.boobs = function() {
 			if (V.showBoobCCs) {
 				r += `, ${num(slave.boobs)} CCs each,`;
 			}
-			if (slave.amp === 1) {
+			if (isAmputee(slave)) {
 				r += ` are so immense it is safer to leave ${him} resting atop them. ${His} udders each weigh more than twice the rest of ${his} body, since ${his} body consists of nothing but ${his} head, torso, and breasts.`;
 			} else {
 				r += ` are so gargantuan that they effectively immobilize ${him}. ${He}'s most comfortable lying down.`;
@@ -1385,17 +1392,37 @@ App.Desc.boobsExtra = function(slave, pronouns) {
 	 * @returns {string}
 	 */
 	function walkingRestrictions(dairyTest) {
+		let r = '';
 		if (slave.muscles > 95) {
-			return `However, ${he} is so powerfully built that ${he} can manage it with effort, using ${his} arms to support them.`;
+			r += `However, ${he} is so powerfully built that ${he} can manage it with effort, using ${his} `;
+			if (hasBothArms(slave)) {
+				r += `arms`;
+			} else if (hasAnyArms(slave)) {
+				r += `arm`;
+			} else {
+				r += `powerful back muscles`;
+			}
+			r += ` to support them.`;
 		} else if (slave.muscles > 30) {
-			return `${He} can barely manage to get to ${his} feet unaided, and usually walks with ${his} arms crossed under ${his} tits to help take their weight.`;
+			r += `${He} can barely manage to get to ${his} feet unaided, and usually walks `;
+			if (hasAnyArms(slave)) {
+				if (hasBothArms(slave)) {
+					r += `with ${his} arms crossed under ${his} tits`;
+				} else {
+					r += `with ${his} arm placed under ${his} tits`;
+				}
+				r += ` to help take their weight.`;
+			} else {
+				r += `greatly hunched over to help take the weight of ${his} tits.`;
+			}
 		} else if (slave.muscles > 5) {
-			return `${He} requires assistance to get to ${his} feet, and uses a stand to support them when ${he} must remain upright for more than a short time.`;
+			r += `${He} requires assistance to get to ${his} feet, and uses a stand to support them when ${he} must remain upright for more than a short time.`;
 		} else if ((slave.assignment === App.Data.Facilities.dairy.jobs.cow.assignment) && (V.dairyRestraintsSetting > 1) && (dairyTest(slave))) {
-			return `The straps that secure ${him} to the milking machine have become less necessary since ${his} breasts grew to the point where they pin ${him} to it.`;
+			r += `The straps that secure ${him} to the milking machine have become less necessary since ${his} breasts grew to the point where they pin ${him} to it.`;
 		} else {
-			return `${He} cannot get to ${his} feet unaided, and uses a wheeled stand to support ${his} boobs when ${he} must walk or remain upright.`;
+			r += `${He} cannot get to ${his} feet unaided, and uses a wheeled stand to support ${his} boobs when ${he} must walk or remain upright.`;
 		}
+		return r;
 	}
 
 	/**
@@ -1479,18 +1506,6 @@ App.Desc.boobsExtra = function(slave, pronouns) {
 	return r.join(' ');
 };
 
-/**
- * @param {App.Entity.SlaveState} slave
- * @returns {string}
- */
-App.Desc.boobsBrand = function(slave) {
-	if (State.variables.showBodyMods === 1) {
-		if (slave.fuckdoll === 0) {
-			return(App.Desc.mods(slave, "chest") + App.Desc.mods(slave, "breast"));
-		}
-	}
-};
-
 /**
  * @param {App.Entity.SlaveState} slave
  * @param {App.Utils.Pronouns} pronouns
@@ -1552,13 +1567,18 @@ App.Desc.nipples = function(slave, pronouns) {
 						r += `in proportion with ${his} breasts: they're stiffly erect and `;
 						if ((slave.dick > 0) && (slave.dick < 3)) {
 							r += `bigger than ${his} girlcock.`;
-						} else if ((slave.height < 160) && (slave.amp !== 1)) {
-							r += `almost as large as ${his} little fists.`;
+						} else if ((slave.height < 160) && hasAnyArms(slave)) {
+							r += `almost as large as ${his} little `;
+							if (hasBothArms(slave)) {
+								r += `fists.`;
+							} else {
+								r += `fist.`;
+							}
 						} else {
-							r += 'large enough to be jerked off.';
+							r += `large enough to be jerked off.`;
 						}
 					} else {
-						r += 'enormously erect.';
+						r += `enormously erect.`;
 					}
 					break;
 				case "fuckable":
@@ -1594,13 +1614,24 @@ App.Desc.nipples = function(slave, pronouns) {
 						r += `in proportion with ${his} breasts: they've grown `;
 						if ((slave.dick > 0) && (slave.dick < 3)) {
 							r += `bigger than ${his} little girlcock.`;
-						} else if ((slave.height < 160) && (slave.amp !== 1)) {
-							r += `almost as large as ${his} little fists.`;
+						} else if ((slave.height < 160) && hasAnyArms(slave)) {
+							r += `almost as large as ${his} little `;
+							if (hasBothArms(slave)) {
+								r += `fists.`;
+							} else {
+								r += `fist.`;
+							}
 						} else {
 							r += `large enough to be jerked off.`;
 						}
+					} else if (hasAnyArms(slave)) {
+						r += `the size of the last joint of ${his} thumb`;
+						if (hasBothArms(slave)) {
+							r += `s`;
+						}
+						r += ` when erect.`;
 					} else {
-						r += `the size of the last joint of ${his} thumbs when erect.`;
+						r += `of significant size.`;
 					}
 					break;
 				case "fuckable":
@@ -1715,9 +1746,9 @@ App.Desc.areola = function(slave, pronouns) {
 						r.push(`${His} motherly boobs point downward, though, leaving only the top of each ${slave.areolaeShape} visible.`);
 					}
 				}
-			} else {
+			} /*else {
 				r.push(this.areolaePiercing(slave, pronouns));
-			}
+			}*/
 		}
 		if ((V.showClothing === 1) && (V.saleDescription === 0)) {
 			if (slave.areolae > 1) {
diff --git a/src/npc/descriptions/fAnus.tw b/src/npc/descriptions/fAnus.tw
index 55b80c64e199573f49edcd463bae29d5ac13d782..7359c0ae7151714782741c7b8ee0c074ad29e42f 100644
--- a/src/npc/descriptions/fAnus.tw
+++ b/src/npc/descriptions/fAnus.tw
@@ -35,7 +35,7 @@ You call $him over so you can
 	<<if !["flats", "flats with long stockings", "flats with short stockings", "none"].includes($activeSlave.shoes)>>
 		As $he went past your desk, $his high heels and surgically altered legs enforced a gait that presented $his butt enticingly.
 	<<else>>
-		As $he crawls along on all fours, $his anus is readily available.
+		As $he crawls along on <<if hasAllLimbs($activeSlave)>>all fours<<else>>the ground<</if>>, $his anus is readily available.
 	<</if>>
 <</if>>
 
@@ -62,12 +62,17 @@ You call $him over so you can
 		$He is clearly unhappy at the idea of taking a dick up $his butt. $He obeys orders anyway, and lies there wincing and moaning as you<<if ($PC.dick == 0)>> don a strap-on and<</if>> fuck $his ass. You gently ease into $his butthole and slowly accelerate your thrusting into $his ass. However $he still squeals in pain as you continue pounding. @@.lime;$His tight little ass has been broken in,@@ and $he @@.gold;fears further anal pain.@@
 		<<set $activeSlave.trust -= 5>>
 	<<else>>
-		$He is appalled at the idea of taking it up the ass<<if ($PC.dick == 0)>> and cries with fear as you don a strap-on<</if>>. $He does anyway though, sobbing into the cushions<<if $activeSlave.amp != 1>> while you hold $his arms behind $him<</if>>. You force yourself into $his butthole and continue thrusting your member into $his ass. $He sobs and cries with disgust while you pump into $his rear. The painful anal rape @@.mediumorchid;decreases $his devotion to you.@@ @@.lime;$His tight little ass has been broken in,@@ and $he is @@.gold;terrified of further anal pain.@@
+		$He is appalled at the idea of taking it up the ass<<if ($PC.dick == 0)>> and cries with fear as you don a strap-on<</if>>. $He does anyway though, sobbing into the cushions<<if hasAnyArms($activeSlave)>> while you hold $his arm<<if hasBothArms($activeSlave)>>s<</if>> behind $him<</if>>. You force yourself into $his butthole and continue thrusting your member into $his ass. $He sobs and cries with disgust while you pump into $his rear. The painful anal rape @@.mediumorchid;decreases $his devotion to you.@@ @@.lime;$His tight little ass has been broken in,@@ and $he is @@.gold;terrified of further anal pain.@@
 		<<set $activeSlave.devotion -= 10, $activeSlave.trust -= 10>>
 	<</if>>
 	<<set $activeSlave.anus++>>
 <<elseif $activeSlave.fetish == "mindbroken">>
-	<<if ($activeSlave.amp != 1)>>You instruct $him to present $his anus. $He dully kneels and spreads $his buttocks<<if ($PC.dick == 0)>>as you don a strap-on<</if>>. You spit on $his hole and ram <<if ($PC.dick == 0)>>it<<else>>your cock<</if>> up $his butt.<<else>>Talking to a broken mind is pointless, so you simply set $him on the couch, spread $his buttocks with one hand, spit on $his hole, and ram <<if ($PC.dick == 0)>>it<<else>>your cock<</if>> up $his <<if $seeRace == 1>>$activeSlave.race <</if>>butt.<</if>> $His butthole spasms as you assrape $him, <<if ($PC.dick == 0)>>an amusing sight<<else>>squeezing your dick nicely<</if>>.
+	<<if hasAnyArms($activeSlave)>>
+		You instruct $him to present $his anus. $He dully <<if hasBothLegs($activeSlave)>>kneels<<else>>bends over<</if>> and spreads $his buttocks<<if ($PC.dick == 0)>>as you don a strap-on<</if>>. You spit on $his hole and ram <<if ($PC.dick == 0)>>it<<else>>your cock<</if>> up $his butt.
+	<<else>>
+		Talking to a broken mind is pointless, so you simply set $him on the couch, spread $his buttocks with one hand, spit on $his hole, and ram <<if ($PC.dick == 0)>>it<<else>>your cock<</if>> up $his <<if $seeRace == 1>>$activeSlave.race <</if>>butt.
+	<</if>>
+	$His butthole spasms as you assrape $him, <<if ($PC.dick == 0)>>an amusing sight<<else>>squeezing your dick nicely<</if>>.
 	<<if ($activeSlave.dick != 0) && canAchieveErection($activeSlave)>>
 		<<if $activeSlave.chastityPenis == 1>>
 			Automatic responses give $him an erection, which $his chastity makes so uncomfortable that $he spasms. This cycle continues repeatedly, $his rectum squeezing unconsciously each time.
@@ -82,7 +87,12 @@ You call $him over so you can
 		$His cock is totally flaccid throughout.
 	<</if>>
 <<elseif $activeSlave.devotion < -20>>
-	<<if ($activeSlave.amp != 1)>>You instruct $him to present $his anus<<if ($PC.dick == 0)>> as you don a strap-on<</if>>. Horrified, $he tries to back away, but you catch $him and throw $him on the couch next to your desk. $He tries to shield $his asshole, but you pin $his hands behind $him with one hand, spit on $his hole, and ram your <<if ($PC.dick == 0)>>fake dick<<else>>cock<</if>> up $his butt with the other hand.<<else>>You tell $him it's time for an assfuck. $He's horrified, but as an amputee can do nothing about it. You spit on $his hole and ram your <<if ($PC.dick == 0)>>fake dick<<else>>cock<</if>> up $his <<if $seeRace == 1>>$activeSlave.race <</if>>butt.<</if>> $His butthole spasms as you assrape $him, <<if ($PC.dick == 0)>>an amusing sight<<else>>squeezing your dick nicely<</if>>.
+	<<if !isAmputee($activeSlave)>>
+		You instruct $him to present $his anus<<if ($PC.dick == 0)>> as you don a strap-on<</if>>. Horrified, $he tries to back away, but you catch $him and throw $him on the couch next to your desk. $He tries to <<if hasAnyArms($activeSlave)>>shield $his asshole<<else>>back away<</if>>, but you pin <<if hasAnyArms($activeSlave)>>$his hand<<if hasBothArms($activeSlave)>>s<</if>> behind $him with one hand<<else>>$him down<</if>>, spit on $his hole, and ram your <<if ($PC.dick == 0)>>fake dick<<else>>cock<</if>> up $his butt with the other hand.
+	<<else>>
+		You tell $him it's time for an assfuck. $He's horrified, but as an amputee can do nothing about it. You spit on $his hole and ram your <<if ($PC.dick == 0)>>fake dick<<else>>cock<</if>> up $his <<if $seeRace == 1>>$activeSlave.race <</if>>butt.
+	<</if>>
+	$His butthole spasms as you assrape $him, <<if ($PC.dick == 0)>>an amusing sight<<else>>squeezing your dick nicely<</if>>.
 	<<if ($activeSlave.dick != 0) && canAchieveErection($activeSlave)>>
 		<<if $activeSlave.prostate == 0>>
 			$He lacks a prostate, denying $him any real pleasure from this. $His dick stays flaccid as you rape $him.
@@ -97,9 +107,19 @@ You call $him over so you can
 		$His flaccid dick is ground into the back of the couch as you rape $him.
 	<</if>>
 <<elseif ($activeSlave.devotion <= 20) && ($activeSlave.vagina < 0)>>
-	<<if ($activeSlave.amp != 1)>>You instruct $him to present $his anus<<if ($PC.dick == 0)>> as you don a strap-on<</if>>. $He knows a sissy slave takes it up the butt, and lies on the couch next to your desk with $his legs in the air, spreading $his buttocks with $his hands.<<else>>You tell $him it's time for an assfuck. $He's hesitant, but as an amputee can do nothing about it.<</if>> You take your time and fuck $his <<if $seeRace == 1>>$activeSlave.race <</if>>butthole for a good long while<<if ($activeSlave.chastityPenis != 1)>><<if ($activeSlave.dick != 0)>> so $his limp dick flops around<<elseif ($activeSlave.balls != 0)>> as $his erect dick waves in the air<</if>><</if>>. This gives you enough time to stroke $him until $he gets aroused despite $his discomfort with anal. $He doesn't orgasm, but $he's getting accustomed to $his asshole as a sexual organ.
+	<<if !isAmputee(slave)>>
+		You instruct $him to present $his anus<<if ($PC.dick == 0)>> as you don a strap-on<</if>>. $He knows a sissy slave takes it up the butt, and lies on the couch next to your desk with $his <<if !hasAnyLegs($activeSlave)>>hips<<else>>leg<<if hasBothLegs($activeSlave)>>s<</if>><</if>> in the air, spreading $his buttocks <<if !hasAnyArms($activeSlave)>>as best $he can<<else>>with $his hand<<if hasBothArms($activeSlave)>>s<</if>><</if>>.
+	<<else>>
+		You tell $him it's time for an assfuck. $He's hesitant, but as an amputee can do nothing about it.
+	<</if>>
+	You take your time and fuck $his <<if $seeRace == 1>>$activeSlave.race <</if>>butthole for a good long while<<if ($activeSlave.chastityPenis != 1)>><<if ($activeSlave.dick != 0)>> so $his limp dick flops around<<elseif ($activeSlave.balls != 0)>> as $his erect dick waves in the air<</if>><</if>>. This gives you enough time to stroke $him until $he gets aroused despite $his discomfort with anal. $He doesn't orgasm, but $he's getting accustomed to $his asshole as a sexual organ.
 <<elseif $activeSlave.devotion < 10>>
-	<<if ($activeSlave.amp != 1)>>You instruct $him to present $his <<if $seeRace == 1>>$activeSlave.race <</if>>anus<<if ($PC.dick == 0)>> as you don a strap-on<</if>>. $He hesitates but eventually lies on the couch next to your desk with $his legs in the air, spreading $his buttocks with $his hands.<<else>>You tell $him it's time for an assfuck. $He's hesitant, but as an amputee can do nothing about it.<</if>> You take your time and fuck $his butthole for a good long while.
+	<<if !isAmputee($activeSlave)>>
+		You instruct $him to present $his <<if $seeRace == 1>>$activeSlave.race <</if>>anus<<if ($PC.dick == 0)>> as you don a strap-on<</if>>. $He hesitates but eventually lies on the couch next to your desk with $his <<if !hasAnyLegs($activeSlave)>>hips<<else>>leg<<if hasBothLegs($activeSlave)>>s<</if>><</if>> in the air, spreading $his buttocks <<if !hasAnyArms($activeSlave)>>as best $he can<<else>>with $his hand<<if hasBothArms($activeSlave)>>s<</if>><</if>>.
+	<<else>>
+		You tell $him it's time for an assfuck. $He's hesitant, but as an amputee can do nothing about it.
+	<</if>>
+	You take your time and fuck $his butthole for a good long while.
 	<<if ($activeSlave.anus == 1)>>
 		$His ass is so tight that $he winces with anal pain
 	<<elseif ($activeSlave.anus == 2)>>
@@ -118,13 +138,13 @@ You call $him over so you can
 	<</if>>
 	$He gets aroused despite $his discomfort with anal, though $he doesn't orgasm.
 <<else>>
-	<<if ($activeSlave.amp != 1)>>$He kneels on the couch<<else>>You lay $him on the couch<</if>> with $his <<if $seeRace == 1>>$activeSlave.race <</if>>butt facing you, back strongly arched to angle $his rectum for more comfortable anal coupling.
-	<<if $activeSlave.amp != 1 && $activeSlave.prostate > 1 && $activeSlave.dick > 3>>
+	<<if hasAnyLegs($activeSlave)>>$He kneels on the couch<<else>>You lay $him on the couch<</if>> with $his <<if $seeRace == 1>>$activeSlave.race <</if>>butt facing you, back strongly arched to angle $his rectum for more comfortable anal coupling.
+	<<if hasAnyArms($activeSlave) && $activeSlave.prostate > 1 && $activeSlave.dick > 3>>
 		<<if $PC.dick == 0>>While you don a strap-on, $he<<else>>$He<</if>> shoves $his slavering dick down and around towards $his ass and squeezes it, pushing a lot of $his precum out to lube $his own asshole.
 	<<else>>
 		<<if $PC.dick == 0>>You don a strap-on and let some saliva fall onto its head<<else>>You let some saliva fall onto your dickhead<</if>> before penetrating $him.
 	<</if>>
-	You take your time and fuck $his butthole for a good long while. <<if ($activeSlave.anus == 1)>>$His ass is so tight that $he has to concentrate on relaxing for you.<<elseif ($activeSlave.anus == 2)>>$His experienced ass feels great.<<else>>$His asspussy is so loose you can pound it as hard as you like.<</if>> $He rubs $his <<if ($activeSlave.amp == 1)>>body against you as much as $he can manage<<elseif canAchieveErection($activeSlave)>>hard-on<<elseif ($activeSlave.dick != 0)>>soft dick<<elseif ($activeSlave.chastityVagina) || ($activeSlave.clit == 0)>>nipples<<elseif ($activeSlave.clit > 2)>>huge, stiff clit<<else>>clit<</if>>, and brings $himself to orgasm before you. <<if ($PC.dick == 0)>>The sight of $him gasping and shaking $his way through an anal orgasm brings you to climax yourself, and you shove yourself against the strap-on harness with enough force to give the slave's sensitized hole a final brutal stretching.<<else>>$His orgasmic rectal spasms squeeze your cock and you blow your load inside $his ass.<</if>>
+	You take your time and fuck $his butthole for a good long while. <<if ($activeSlave.anus == 1)>>$His ass is so tight that $he has to concentrate on relaxing for you.<<elseif ($activeSlave.anus == 2)>>$His experienced ass feels great.<<else>>$His asspussy is so loose you can pound it as hard as you like.<</if>> $He rubs $his <<if !hasAnyArms($activeSlave)>>body against you as much as $he can manage<<elseif canAchieveErection($activeSlave)>>hard-on<<elseif ($activeSlave.dick != 0)>>soft dick<<elseif ($activeSlave.chastityVagina) || ($activeSlave.clit == 0)>>nipples<<elseif ($activeSlave.clit > 2)>>huge, stiff clit<<else>>clit<</if>>, and brings $himself to orgasm before you. <<if ($PC.dick == 0)>>The sight of $him gasping and shaking $his way through an anal orgasm brings you to climax yourself, and you shove yourself against the strap-on harness with enough force to give the slave's sensitized hole a final brutal stretching.<<else>>$His orgasmic rectal spasms squeeze your cock and you blow your load inside $his ass.<</if>>
 <</if>>
 
 <<if ($activeSlave.bellyPreg >= 1500)>>
diff --git a/src/npc/descriptions/fAssistedSex.tw b/src/npc/descriptions/fAssistedSex.tw
index bbb578864705564d27736f9dee2151ba12adb8d6..6dbe615f0d79c336a02c4997b5bc2591d38388f5 100644
--- a/src/npc/descriptions/fAssistedSex.tw
+++ b/src/npc/descriptions/fAssistedSex.tw
@@ -6,29 +6,37 @@
 You order $his servants forward so that $he can tease you with $his enormously swollen body.
 <<if $activeSlave.devotion > 95>>
 	Smirking, $he leans backwards,
-	<<if $activeSlave.amp < 1>>
+	<<if hasBothArms($activeSlave)>>
 		raising $his hands above $his head
+	<<elseif hasAnyArms($activeSlave)>>
+		raising $his hand above $his head
 	<<else>>
 		with two slender arms rising upward behind $him, making it look like $he has limbs once more
 	<</if>>
 	as a gaggle of $his trained menials slide underneath $his belly, lifting the monolithic organ off the ground and setting the tightly packed orb to wobbling.
 <<elseif ($activeSlave.trust < -20) && ($activeSlave.devotion > -10)>>
 	Smiling nervously, $he leans backwards,
-	<<if $activeSlave.amp < 1>>
+	<<if hasBothArms($activeSlave)>>
 		raising $his hands above $his head
+	<<elseif hasAnyArms($activeSlave)>>
+		raising $his hand above $his head
 	<<else>>
 		with two slender arms rising upward behind $him, making it look like $he has limbs once more
 	<</if>>
 	as a gaggle of $his trained menials slide underneath $his belly, lifting the monolithic organ off the ground and setting the tightly packed orb to wobbling.
 <<else>>
-	<<if $activeSlave.amp < 1>>
-		$he covers $his eyes with $his hands,
+	<<if hasBothArms($activeSlave)>>
+		$He covers $his <<if canSee($activeSlave)>>eyes<<else>>face<</if>> with $his hands,
+	<<elseif hasAnyArms($activeSlave)>>
+		$He tries to cover $his <<if canSee($activeSlave)>>eyes<<else>>face<</if>> with $his hand,
 	<<else>>
 		Two slender arms snake around from behind $him, almost making it look like $he has limbs once more. They cover $his quivering <<if canSee($activeSlave)>>eyes<<else>>expression<</if>>
 	<</if>>
 	as a gaggle of $his trained menials slide underneath $his belly, lifting the monolithic organ off the ground and setting the tightly packed orb to wobbling.
-	<<if $activeSlave.amp < 1>>
+	<<if hasBothArms($activeSlave)>>
 		Two more servants take hold of $his arms, forcing $him to lift them above $his head.
+	<<elseif hasAnyArms($activeSlave)>>
+		Another servant takes hold of $his arm, forcing $him to lift it above $his head.
 	<<else>>
 		The hands covering $his <<if canSee($activeSlave)>>eyes<<else>>head<</if>> draw away, revealing $his crying face, then lift above $his head in a deliberately provocative pose.
 	<</if>>
diff --git a/src/npc/descriptions/fBellyFuck.tw b/src/npc/descriptions/fBellyFuck.tw
index fd4c04afbcbb6f775d1a148af23a03a71ebe53e9..fa95e1a0564f186e7d9f091d25fd01706d7b64d5 100644
--- a/src/npc/descriptions/fBellyFuck.tw
+++ b/src/npc/descriptions/fBellyFuck.tw
@@ -16,7 +16,7 @@ You have $him brought to you so that you can fuck $his hyperpregnant body.
 		massive belly,
 	<</if>>
 	and won't be a particularly able lover because of this, but enjoying $his immobility is half the point.
-<<elseif $activeSlave.amp == 1>>
+<<elseif !hasAnyLegs($activeSlave)>>
 	$He has no limbs to stand on, so $he is left resting atop $his
 	<<if $activeSlave.bellyPreg >= 1000000>>
 		impossibly exploded baby bump.
@@ -64,7 +64,7 @@ Once $he is situated in the center of your office, you walk a circle around $him
 	trace a hand over the obliterated, stretched out expanse of slightly darker flesh where $his belly button used to be.
 <</if>>
 <<if $activeSlave.devotion > 95>>
-	$He purrs in response to your touch, leaning forward against $his belly and <<if $activeSlave.amp == 1>>wiggles<<else>>lifts $his toes off the ground as $he spreads $his legs<</if>> in preparation for you.
+	$He purrs in response to your touch, leaning forward against $his belly and <<if !hasAnyLegs($activeSlave)>>wiggles<<else>>lifts $his toes off the ground as $he <<if hasBothLegs($activeSlave)>>spreads $his legs<<else>>moves $his leg<</if>><</if>> in preparation for you.
 <<elseif ($activeSlave.trust < -20) && ($activeSlave.devotion > -10)>>
 	$He groans at your touch.
 <<else>>
diff --git a/src/npc/descriptions/fBoobs.tw b/src/npc/descriptions/fBoobs.tw
index 86856b6f224153c92b05b39ec4926c16e252b6f9..bb56f45a614fa25fc6b9026221e1afc2710ea703 100644
--- a/src/npc/descriptions/fBoobs.tw
+++ b/src/npc/descriptions/fBoobs.tw
@@ -48,7 +48,7 @@ tits.
 	<</if>>
 <</if>>
 
-<<if ($activeSlave.nipplesPiercing > 1) && ($activeSlave.amp == 1)>>
+<<if ($activeSlave.nipplesPiercing > 1) && !hasAnyLegs($activeSlave)>>
 	You carry $him over, playing with the chain between $his nipples.
 <<elseif ($activeSlave.nipplesPiercing > 1)>>
 	You pull $him over by the chain between $his nipples.
@@ -94,7 +94,7 @@ tits.
 			$His flat chest is completely covered by your pregnancy. Reach under yourself, you feel around until you find $his nipples. You tease $his flat chest until you're at you limit, thoroughly soaking $him, before dismounting and returning to your desk.
 		<</if>>
 	<</if>>
-<<elseif ($activeSlave.amp == 1)>>
+<<elseif isAmputee($activeSlave)>>
 	<<if $PC.dick == 1>>
 		$His limbless <<if $seeRace == 1>>$activeSlave.race <</if>>torso makes $him a unique appliance for mammary intercourse. You lay $him down on the ground on $his back, lube $his cleavage, and straddle $his torso. With your cock between $his breasts, you <<if ($activeSlave.boobs >= 650)>>squash $his tits together to form a nice lubricated channel,<<else>>hold your cock in place,<</if>> and ride back and forth on $him.<<if $PC.vagina == 1>> Your pussylips rub deliciously across $his sternum.<</if>> $He has some trouble breathing under the assault, but $he manages. And for the finale, $he's totally unable to avoid a perfect cumshot.
 	<<elseif $PC.boobs != 0>>
@@ -128,7 +128,7 @@ tits.
 		You set $his nearly helpless body on the floor and then scoot your hips under the massive weight of $his tits. The heft feels nice against you, and you worm a naughty hand under there to play with yourself in the warm cave formed by your pelvis and $his udders.
 	<</if>>
 <<elseif ($activeSlave.fetish == "boobs") && ($activeSlave.fetishStrength > 60) && ($activeSlave.fetishKnown == 1) && ($PC.dick == 1)>>
-	$He comes over hurriedly, already presenting $his breasts. $He gives you a titjob with $his lubricated cleavage while you sit at your desk, playing with $his own nipples and moaning with pleasure.<<if $PC.vagina == 1>> $He does $his best to push $his sternum hard against you, giving your pussy some stimulation, too.<</if>> As you get close to orgasm, you push $his hands away and take over,
+	$He comes over hurriedly, already presenting $his breasts. $He gives you a titjob with $his lubricated cleavage while you sit at your desk, playing with $his own nipples and moaning with pleasure.<<if $PC.vagina == 1>> $He does $his best to push $his sternum hard against you, giving your pussy some stimulation, too.<</if>> As you get close to orgasm, you push $his hand<<if hasBothArms($activeSlave)>>s<</if>> away and take over,
 	<<if $activeSlave.nipples == "fuckable">>
 		running your fingers around the lip of $his $activeSlave.nipples nipples. When you finish, you drive them in, hard,
 	<<else>>
@@ -169,12 +169,12 @@ tits.
 		desk, and you've straddled $his face before $he can do anything more. You begin to grope $his breasts and pinch $his nipples to hardness as $he eats you out, your ministrations producing moans that feel quite nice against your clit. You maul $his boobs without mercy as you reach your climax, leaving $him to massage $his breasts gingerly as you get off $him.
 	<</if>>
 <<elseif ($activeSlave.lactation > 0)>>
-	Since $he's producing milk, $he gets an emotional high from breastfeeding, and $he sits on the edge of your desk for a while so you can use $him as a beverage dispenser while you work. Once $he's empty, $he gets down to <<if ($PC.dick == 0)>>eat you out. As $he buries $his face between your legs, $he gently rolls $his sore nipples around in $his fingers, quietly moaning and whining.<<else>>give you a titjob. As you titfuck $him, $he gently rolls $his sore nipples around in $his fingers, quietly moaning and whining. Your cum covers $his <<if $seeRace == 1>>$activeSlave.race <</if>>face in no time, and $he's left with a spectacular mess to clean. $He laps it all up.<</if>>
+	Since $he's producing milk, $he gets an emotional high from breastfeeding, and $he sits on the edge of your desk for a while so you can use $him as a beverage dispenser while you work. Once $he's empty, $he gets down to <<if ($PC.dick == 0)>>eat you out.<<if hasAnyArms($activeSlave)>> As $he buries $his face between your legs, $he gently rolls $his sore nipples around in $his fingers, quietly moaning and whining.<</if>><<else>>give you a titjob.<<if hasAnyArms($activeSlave)>> As you titfuck $him, $he gently rolls $his sore nipples around in $his fingers, quietly moaning and whining.<</if>> Your cum covers $his <<if $seeRace == 1>>$activeSlave.race <</if>>face in no time, and $he's left with a spectacular mess to clean. $He laps it all up.<</if>>
 <<else>>
 	<<if $PC.dick == 1>>
 		$He massages and toys with $his chest for your benefit, languidly rubbing lubricant over not only $his cleavage but $his entire chest, making sure every <<if $showInches == 2>>inch<<else>>centimeter<</if>> of $his $activeSlave.skin breasts are nice and shiny. $He gives you a titjob with $his lubricated cleavage while you sit at your desk<<if $PC.vagina == 1>>, doing $his best to run $his hard nipples between your pussylips whenever $he can<</if>>. Your cum covers $his <<if $seeRace == 1>>$activeSlave.race <</if>>face, and $he carefully licks it all off while continuing to play with $his erect nipples.
 	<<elseif $PC.boobs != 0>>
-		$He rubs lube over $his $activeSlave.skin breasts, flirting with you and sticking out $his chest, before lying down on the couch. You lie down atop $him with your breasts meshing with $hers and begin to slide up and down, titillating your nipples wonderfully. You find $his mouth quite willing to receive your insistent tongue, and while you make out, $he slips a hand down between your legs to give you a handjob, too.
+		$He rubs lube over $his $activeSlave.skin breasts, flirting with you and sticking out $his chest, before lying down on the couch. You lie down atop $him with your breasts meshing with $hers and begin to slide up and down, titillating your nipples wonderfully. You find $his mouth quite willing to receive your insistent tongue<<if hasAnyArms($activeSlave)>>, and while you make out, $he slips <<if hasBothArms($activeSlave)>>a<<else>>$his<</if>> hand down between your legs to give you a handjob, too<</if>>.
 	<<else>>
 		$He flirts with you and sticks out $his chest before lying down on the couch. You've straddled $his face before $he can do anything more, and $he begins to eat you out with enthusiasm. You begin to grope $his breasts and pinch $his nipples to hardness as $he gives you oral, your ministrations producing moans that feel quite nice against your clit. You maul $his boobs without mercy as you reach your climax, but $he loves it all.
 	<</if>>
@@ -199,7 +199,7 @@ tits.
 	<<= induceLactation($activeSlave)>>
 <</if>>
 
-<<if ($activeSlave.amp != 1)>>
+<<if hasAnyLegs($activeSlave)>>
 	<<switch $activeSlave.assignment>>
 	<<case "work in the dairy">>
 		$He goes off to carefully wash $his <<if $activeSlave.boobs > 1500>>acre of cleavage<<elseif $activeSlave.boobs > 500>>generous cleavage<<else>>chest<</if>> to keep production in $dairyName nice and sanitary.
diff --git a/src/npc/descriptions/fButt.tw b/src/npc/descriptions/fButt.tw
index 47d81b0fea8e0fa54003756fa1a0c894b92f6958..a11c1f158c2f371e538b37021408ffb41fb3bcb5 100644
--- a/src/npc/descriptions/fButt.tw
+++ b/src/npc/descriptions/fButt.tw
@@ -93,13 +93,13 @@ You call $him over so you can
 	<<elseif ($activeSlave.devotion >= -20)>>
 		$He is clearly unhappy at the idea of taking a dick up $his butt. $He obeys orders anyway, and lies there wincing and moaning as you<<if ($PC.dick == 0)>> don a strap-on and<</if>> fuck $his ass. @@.lime;$His tight little ass has been broken in,@@ and $he @@.gold;fears further anal pain.@@
 	<<else>>
-		$He is appalled at the idea of taking it up the ass<<if ($PC.dick == 0)>> and cries with fear as you don a strap-on<</if>>. $He does anyway though, sobbing into the cushions<<if $activeSlave.amp != 1>> while you hold $his arms behind $him<</if>>. You force yourself into $his butthole. $He sobs and cries with disgust while you continue thrusting into $his ass. The painful anal rape @@.mediumorchid;decreases $his devotion to you.@@ @@.lime;$His tight little ass has been broken in,@@ and $he is @@.gold;terrified of further anal pain.@@
+		$He is appalled at the idea of taking it up the ass<<if ($PC.dick == 0)>> and cries with fear as you don a strap-on<</if>>. $He does anyway though, sobbing into the cushions<<if hasAnyArms($activeSlave)>> while you hold $his arm<<if hasBothArms($activeSlave)>>s<</if>> behind $him<</if>>. You force yourself into $his butthole. $He sobs and cries with disgust while you continue thrusting into $his ass. The painful anal rape @@.mediumorchid;decreases $his devotion to you.@@ @@.lime;$His tight little ass has been broken in,@@ and $he is @@.gold;terrified of further anal pain.@@
 		<<set $activeSlave.devotion -= 5>>
 	<</if>>
 	<<set $activeSlave.anus++>>
 	<<= VCheck.Anal()>>
 <<elseif $activeSlave.devotion < -20>>
-	<<if ($PC.dick == 0)>>You don a cruelly large strap-on, and you do it so $he can <<if canSee($activeSlave)>>see<<elseif canHear($activeSlave)>>hear<<else>>notice<</if>> it. <</if>>$He tries to refuse you, so you throw $him across the back of the couch next to your desk with $his <<if $seeRace == 1>>$activeSlave.race <</if>>ass in the air. You finger $his anus <<if ($activeSlave.vagina != -1)>>while fucking $his pussy<<elseif ($activeSlave.amp != 1)>>while frotting $his thighs<</if>> for a bit and then switch to $his now-ready anus. $He sobs as you penetrate $his rectum.
+	<<if ($PC.dick == 0)>>You don a cruelly large strap-on, and you do it so $he can <<if canSee($activeSlave)>>see<<elseif canHear($activeSlave)>>hear<<else>>notice<</if>> it. <</if>>$He tries to refuse you, so you throw $him across the back of the couch next to your desk with $his <<if $seeRace == 1>>$activeSlave.race <</if>>ass in the air. You finger $his anus<<if ($activeSlave.vagina != -1)>> while fucking $his pussy<<elseif hasBothLegs($activeSlave)>> while frotting $his thighs<</if>> for a bit and then switch to $his now-ready anus. $He sobs as you penetrate $his rectum.
 	<<if ($activeSlave.dick != 0) && canAchieveErection($activeSlave)>>
 		<<if $activeSlave.prostate == 0>>
 			$He lacks a prostate, denying $him any real pleasure. $His dick stays flaccid as you rape $him.
@@ -127,7 +127,7 @@ You call $him over so you can
 	<</if>>
 	<<= VCheck.Both()>>
 <<else>>
-	<<if ($activeSlave.amp != 1)>>$He kneels on the floor<<else>>You lay $him on the floor<</if>> so you can take $him at will<<if ($PC.dick == 0)>>, and don a strap-on<</if>>. You finger $his <<if $seeRace == 1>>$activeSlave.race <</if>>ass while
+	<<if hasAnyLegs($activeSlave)>>$He kneels on the floor<<else>>You lay $him on the floor<</if>> so you can take $him at will<<if ($PC.dick == 0)>>, and don a strap-on<</if>>. You finger $his <<if $seeRace == 1>>$activeSlave.race <</if>>ass while
 	<<if canDoVaginal($activeSlave)>>
 		fucking $his pussy
 	<<else>>
diff --git a/src/npc/descriptions/fFuckdollWidgets.tw b/src/npc/descriptions/fFuckdollWidgets.tw
index 79c857dafefacd780cd9310a1730db6341666b8b..4e667c48a8b9233f7c517b72942f6fb85d7339af 100644
--- a/src/npc/descriptions/fFuckdollWidgets.tw
+++ b/src/npc/descriptions/fFuckdollWidgets.tw
@@ -6,11 +6,11 @@
 <<run clearSummaryCache($activeSlave)>>
 You decide to use the Fuckdoll's <<if $activeSlave.lips > 95>>facepussy<<else>>face hole<</if>>.
 <<if $activeSlave.fuckdoll <= 10>>
-	Since $he is not well adapted to life as a living sex toy yet, $he won't respond to position commands. So, you simply <<if $activeSlave.amp == 0>>shove $him into a kneeling position<<else>>set $him on the couch<</if>> and straddle $his face.
+	Since $he is not well adapted to life as a living sex toy yet, $he won't respond to position commands. So, you simply <<if hasBothLegs($activeSlave)>>shove $him into a kneeling position<<else>>set $him on the couch<</if>> and straddle $his face.
 <<elseif $activeSlave.fuckdoll <= 80>>
-	$He can follow intermediate commands, so you order $him into a position for use of $his face hole. $He obediently <<if $activeSlave.amp == 0>>gets to $his knees<<else>>cranes $his neck up<</if>> and sticks $his tongue out as far as it will go, wiggling it invitingly. You straddle $his face.
+	$He can follow intermediate commands, so you order $him into a position for use of $his face hole. $He obediently <<if hasBothLegs($activeSlave)>>gets to $his knees<<else>>cranes $his neck up<</if>> and sticks $his tongue out as far as it will go, wiggling it invitingly. You straddle $his face.
 <<else>>
-	$He can follow advanced commands, so you order $him into a position for use of $his face hole. $He instantly <<if $activeSlave.amp == 0>><<if $PC.dick == 1>>bends at the waist and turns $his head upward, placing $his throat horizontally and at waist height.<<else>>gets to $his knees and turns $his head upward at just the right angle for a pussy to ride $his face hole.<</if>><<else>>cranes $his neck up and sticks $his tongue out as far as it will go, wiggling it invitingly.<</if>> You straddle $his face.
+	$He can follow advanced commands, so you order $him into a position for use of $his face hole. $He instantly <<if hasAnyLegs($activeSlave)>><<if $PC.dick == 1>>bends at the waist and turns $his head upward, placing $his throat horizontally and at waist height.<<else>>gets to $his knees and turns $his head upward at just the right angle for a pussy to ride $his face hole.<</if>><<else>>cranes $his neck up and sticks $his tongue out as far as it will go, wiggling it invitingly.<</if>> You straddle $his face.
 <</if>>
 <<if $activeSlave.fuckdoll <= 20>>
 	$He's not fully used to being surprised with face rape, so $he struggles, and $his difficulty breathing <<if $PC.dick == 1>>makes $his throat spasm around your dickhead<<else>>feels lovely on your cunt<</if>>.
@@ -24,7 +24,7 @@ You decide to use the Fuckdoll's <<if $activeSlave.lips > 95>>facepussy<<else>>f
 <<else>>
 	$He's so perfectly tuned that $he begins to orgasm from nothing more than oral stimulation, and $he continues to shiver with repeated orgasms as $he sucks.
 <</if>>
-You climax, <<if $PC.dick == 1>>blowing your load down $his throat<<else>>giving $him a good amount of femcum to swallow<</if>>, and return $him to <<if $activeSlave.amp == 0>>a standing position<<else>>where $he was resting<</if>>.
+You climax, <<if $PC.dick == 1>>blowing your load down $his throat<<else>>giving $him a good amount of femcum to swallow<</if>>, and return $him to <<if hasAnyLegs($activeSlave)>>a standing position<<else>>where $he was resting<</if>>.
 <<if $PC.dick == 1>>
 	<<if $activeSlave.lips > 95>>$He gives sloppy blowjobs, $his lips being too big for much control, and strings of your cum beribbon $his suit. The Fuckdoll will be cleaned by another slave.
 	<<else>>$He swallows repeatedly as $he returns to $his resting posture.
@@ -43,11 +43,11 @@ You climax, <<if $PC.dick == 1>>blowing your load down $his throat<<else>>giving
 <<run clearSummaryCache($activeSlave)>>
 You decide to use the Fuckdoll's <<if $activeSlave.vagina > 3>>cavernous<<elseif $activeSlave.vagina == 3>>soft<<elseif $activeSlave.vagina == 2>>inviting<<elseif $activeSlave.vagina == 1>>tight<</if>> front hole.
 <<if $activeSlave.fuckdoll <= 10>>
-	Since $he is not well adapted to life as a living sex toy yet, $he won't respond to position commands. So, you simply <<if $activeSlave.amp == 0>>push $him down to lie on the couch<<else>>set $him on your desk<</if>> and shove <<if $PC.dick == 1>>your cock<<else>>a strap-on<</if>> inside $his vagina.
+	Since $he is not well adapted to life as a living sex toy yet, $he won't respond to position commands. So, you simply <<if hasAnyLegs($activeSlave)>>push $him down to lie on the couch<<else>>set $him on your desk<</if>> and shove <<if $PC.dick == 1>>your cock<<else>>a strap-on<</if>> inside $his vagina.
 <<elseif $activeSlave.fuckdoll <= 70>>
-	$He can follow intermediate commands, so you order $him into a position for use of $his front hole. $He obediently <<if $activeSlave.amp == 0>>gets down on all fours and <</if>>cocks $his hips, offering $his cunt until you insert <<if $PC.dick == 1>>your cock<<else>>a strap-on<</if>> into $his wet channel.
+	$He can follow intermediate commands, so you order $him into a position for use of $his front hole. $He obediently <<if hasAllLimbs($activeSlave)>>gets down on all fours and <<elseif hasAnyLegs($activeSlave)>>bends over and <</if>>cocks $his hips, offering $his cunt until you insert <<if $PC.dick == 1>>your cock<<else>>a strap-on<</if>> into $his wet channel.
 <<else>>
-	$He can follow advanced commands, so you bring $him over to your chair <<if $activeSlave.amp == 0>>and order $him to squat down onto your <<if $PC.dick == 1>>cock<<else>>strap-on<</if>> and ride.<<else>>and impale $him on <<if $PC.dick == 1>>your cock<<else>>your strap-on<</if>>, ordering $him to do $his feeble best to bounce.<</if>>
+	$He can follow advanced commands, so you bring $him over to your chair <<if hasAnyLegs($activeSlave)>>and order $him to squat down onto your <<if $PC.dick == 1>>cock<<else>>strap-on<</if>> and ride.<<else>>and impale $him on <<if $PC.dick == 1>>your cock<<else>>your strap-on<</if>>, ordering $him to do $his feeble best to bounce.<</if>>
 <</if>>
 <<if $activeSlave.fuckdoll <= 20>>
 	$He's not fully used to being raped without warning, so $he struggles, $his muscles spasming delightfully.
@@ -66,7 +66,7 @@ You decide to use the Fuckdoll's <<if $activeSlave.vagina > 3>>cavernous<<elseif
 <<else>>
 	$He moans, <<if $activeSlave.lips > 95>>and the lips of $his facepussy quiver<<else>>struggling to force the sound past $his mouth insert<</if>>.
 <</if>>
-You climax<<if $PC.dick == 1>>, your cum shooting forward to splash against $his womb,<</if>> and return $him to <<if $activeSlave.amp == 0>>a standing position<<else>>where $he was resting<</if>>.
+You climax<<if $PC.dick == 1>>, your cum shooting forward to splash against $his womb,<</if>> and return $him to <<if hasAnyLegs($activeSlave)>>a standing position<<else>>where $he was resting<</if>>.
 <<if $PC.dick == 1>>
 	<<if $activeSlave.vagina > 2>>Your cum flows out of $his gaping front hole and down the material of $his suit.
 	<<elseif $activeSlave.vagina == 2>>Your cum drips out of $his well-fucked front hole and down the material of $his suit.
@@ -106,11 +106,11 @@ You climax<<if $PC.dick == 1>>, your cum shooting forward to splash against $his
 
 You decide to use the Fuckdoll's fertile womb to grow a child.
 <<if $activeSlave.fuckdoll <= 10>>
-	Since $he is not well adapted to life as a living sex toy yet, $he won't respond to position commands. So, you simply <<if $activeSlave.amp == 0>>push $him down to lie on the couch<<else>>set $him on your desk<</if>> and shove <<if $PC.dick == 1>>your cock<<else>>a strap-on<</if>> inside $his <<if $activeSlave.mpreg == 1>>asshole<<else>>vagina<</if>>.
+	Since $he is not well adapted to life as a living sex toy yet, $he won't respond to position commands. So, you simply <<if hasAnyLegs($activeSlave)>>push $him down to lie on the couch<<else>>set $him on your desk<</if>> and shove <<if $PC.dick == 1>>your cock<<else>>a strap-on<</if>> inside $his <<if $activeSlave.mpreg == 1>>asshole<<else>>vagina<</if>>.
 <<elseif $activeSlave.fuckdoll <= 70>>
-	$He can follow intermediate commands, so you order $him into a position for use of $his <<if $activeSlave.mpreg == 1>>rear<<else>>front<</if>> hole. $He obediently <<if $activeSlave.amp == 0>>gets down on all fours and <</if>>cocks $his hips, offering $his <<if $activeSlave.mpreg == 1>>asspussy<<else>>cunt<</if>> until you insert your cock into $his <<if $activeSlave.mpreg == 1>>winking<<else>>wet<</if>> channel.
+	$He can follow intermediate commands, so you order $him into a position for use of $his <<if $activeSlave.mpreg == 1>>rear<<else>>front<</if>> hole. $He obediently <<if hasAllLimbs($activeSlave)>>gets down on all fours and <</if>>cocks $his hips, offering $his <<if $activeSlave.mpreg == 1>>asspussy<<else>>cunt<</if>> until you insert your cock into $his <<if $activeSlave.mpreg == 1>>winking<<else>>wet<</if>> channel.
 <<else>>
-	$He can follow advanced commands, so you bring $him over to your chair <<if $activeSlave.amp == 0>>and order $him to squat down onto your cock and ride.<<else>>and impale $him on your cock, ordering $him to do $his feeble best to bounce.<</if>>
+	$He can follow advanced commands, so you bring $him over to your chair <<if hasAnyLegs($activeSlave)>>and order $him to squat down onto your cock and ride.<<else>>and impale $him on your cock, ordering $him to do $his feeble best to bounce.<</if>>
 <</if>>
 <<if $activeSlave.fuckdoll <= 20>>
 	$He's not fully used to being raped without warning, so $he struggles, $his muscles spasming delightfully.
@@ -129,7 +129,7 @@ You decide to use the Fuckdoll's fertile womb to grow a child.
 <<else>>
 	$He moans, <<if $activeSlave.lips > 95>>and the lips of $his facepussy quiver<<else>>struggling to force the sound past $his mouth insert<</if>>.
 <</if>>
-You climax, your cum shooting forward to splash against $his womb, and return $he to <<if $activeSlave.amp == 0>>a standing position<<else>>where $he was resting<</if>> to allow your seed to find $his mark.
+You climax, your cum shooting forward to splash against $his womb, and return $he to <<if hasAnyLegs($activeSlave)>>a standing position<<else>>where $he was resting<</if>> to allow your seed to find $his mark.
 <<if $activeSlave.mpreg == 1>>
 	<<if $activeSlave.anus > 2>>Your cum flows out of $his gaping rear hole and down the material of $his suit.
 	<<elseif $activeSlave.anus == 2>>Your cum drips out of $his well-fucked rear hole and down the material of $his suit.
@@ -186,11 +186,11 @@ You repeat this ritual throughout the week, ensuring that $he will be an @@.lime
 <<run clearSummaryCache($activeSlave)>>
 You decide to use the Fuckdoll's <<if $activeSlave.anus > 3>>gaping<<elseif $activeSlave.anus == 3>>loose<<elseif $activeSlave.anus == 2>>relaxed<<elseif $activeSlave.anus == 1>>tight<</if>> rear hole.
 <<if $activeSlave.fuckdoll <= 10>>
-	Since $he is not well adapted to life as a living sex toy yet, $he won't respond to position commands. So, you simply <<if $activeSlave.amp == 0>>walk over to $him<<else>>flip $him over<</if>> and ram <<if $PC.dick == 1>>your cock<<else>>a strap-on<</if>> up $his rear hole.
+	Since $he is not well adapted to life as a living sex toy yet, $he won't respond to position commands. So, you simply <<if hasAnyLegs($activeSlave)>>walk over to $him<<else>>flip $him over<</if>> and ram <<if $PC.dick == 1>>your cock<<else>>a strap-on<</if>> up $his rear hole.
 <<elseif $activeSlave.fuckdoll <= 80>>
-	$He can follow intermediate commands, so you order $him to present $his rear hole. $He obediently <<if $activeSlave.amp == 0>>bends over, arches $his back, and<<else>>flips over and<</if>> winks $his anus until you insert <<if $PC.dick == 1>>your cock<<else>>a strap-on<</if>>.
+	$He can follow intermediate commands, so you order $him to present $his rear hole. $He obediently <<if hasAnyLegs($activeSlave)>>bends over, arches $his back, and<<else>>flips over and<</if>> winks $his anus until you insert <<if $PC.dick == 1>>your cock<<else>>a strap-on<</if>>.
 <<else>>
-	$He can follow advanced commands, so you bring $him over to your chair <<if $activeSlave.amp == 0>>and order $him to squat down onto your <<if $PC.dick == 1>>cock<<else>>strap-on<</if>> and slide $his anus up and down <<if $PC.dick == 1>>your<<else>>the<</if>> shaft.<<else>>and impale $him on <<if $PC.dick == 1>>your cock<<else>>your strap-on<</if>>, ordering $him to do $his feeble best to bounce.<</if>>
+	$He can follow advanced commands, so you bring $him over to your chair <<if hasAnyLegs($activeSlave)>>and order $him to squat down onto your <<if $PC.dick == 1>>cock<<else>>strap-on<</if>> and slide $his anus up and down <<if $PC.dick == 1>>your<<else>>the<</if>> shaft.<<else>>and impale $him on <<if $PC.dick == 1>>your cock<<else>>your strap-on<</if>>, ordering $him to do $his feeble best to bounce.<</if>>
 <</if>>
 <<if $activeSlave.fuckdoll <= 20>>
 	$He's not fully used to having things suddenly forced up $his ass, so $he struggles, and $his sphincter spasms deliciously.
@@ -209,7 +209,7 @@ You decide to use the Fuckdoll's <<if $activeSlave.anus > 3>>gaping<<elseif $act
 <<else>>
 	$He moans, <<if $activeSlave.lips > 95>>and the lips of $his facepussy quiver<<else>>struggling to force the sound past $his mouth insert<</if>>.
 <</if>>
-You climax<<if $PC.dick == 1>>, filling $his rectum with your cum,<</if>> and return $him to <<if $activeSlave.amp == 0>>a standing position<<else>>where $he was resting<</if>>.
+You climax<<if $PC.dick == 1>>, filling $his rectum with your cum,<</if>> and return $him to <<if hasAnyLegs($activeSlave)>>a standing position<<else>>where $he was resting<</if>>.
 <<if $PC.dick == 1>>
 	<<if $activeSlave.anus > 2>>Your cum flows out of $his gaped rear hole and down the material of $his suit.
 	<<elseif $activeSlave.anus == 2>>Your cum drips out of $his loosened rear hole and down the material of $his suit.
diff --git a/src/npc/descriptions/fLips.tw b/src/npc/descriptions/fLips.tw
index 4cc6cba7f0e85ca26e26e77ee2cfec8d1fd01a53..475c6082959b2530e5dbc5249a23809d5ab80bc0 100644
--- a/src/npc/descriptions/fLips.tw
+++ b/src/npc/descriptions/fLips.tw
@@ -28,21 +28,21 @@ You tell $activeSlave.slaveName to
 
 <<switch $activeSlave.collar>>
 <<case "dildo gag">>
-	<<if ($activeSlave.amp != 1)>>
+	<<if hasAnyArms($activeSlave)>>
 		$He removes the dildo from $his throat, leaving the ring gag in place.
 	<<else>>
 		As an amputee, $he requires your assistance to get the dildo out of $his throat.
 	<</if>>
 	Able to breathe through $his mouth for the first time in a while, $he gasps gratefully, knowing the respite will be brief.
 <<case "massive dildo gag">>
-	<<if ($activeSlave.amp != 1)>>
+	<<if hasAnyArms($activeSlave)>>
 		$He struggles to remove the dildo from $his throat, leaving $his mouth agape.
 	<<else>>
 		As an amputee, $he requires your assistance to get the dildo out of $his throat.
 	<</if>>
 	Able to breathe through $his mouth for the first time in a while, $he gasps gratefully, knowing the respite will be brief.
 <<case "ball gag" "bit gag">>
-	<<if ($activeSlave.amp != 1)>>
+	<<if hasAnyArms($activeSlave)>>
 		$He unfastens $his gag and pulls it from $his mouth.
 	<<else>>
 		As an amputee, $he requires your assistance to get the gag unfastened.
@@ -72,7 +72,7 @@ You tell $activeSlave.slaveName to
 	<</if>>
 <</if>>
 
-<<if ($activeSlave.amp == 1)>>
+<<if isAmputee($activeSlave)>>
 	You set $his limbless torso on the
 	<<if ($PC.dick != 0)>>
 		edge of your desk with $him on $his back. $His head dangles off the edge of the desk, leaving $his <<if $seeRace == 1>>$activeSlave.race <</if>>mouth at the perfect angle for use. As an amputee $he has absolutely no control over the depth or quickness of oral sex, so you are careful not to hurt $him. Even so, you take $him to the edge of gagging, enjoying the sight of $his $activeSlave.skin throat bulging. Eventually you shoot your load directly down $his gullet.
@@ -116,18 +116,18 @@ You tell $activeSlave.slaveName to
 <<elseif ($activeSlave.fetish == "cumslut") && ($activeSlave.fetishStrength > 60) && ($activeSlave.fetishKnown == 1) && ($activeSlave.dick != 0) && ($PC.dick != 0)>>
 	$He comes over eagerly, with hunger <<if canSee($activeSlave)>>in $his eyes<<else>>on $his face<</if>>. $He gets to $his knees, hurriedly takes you into $his <<if $seeRace == 1>>$activeSlave.race <</if>>mouth, and gives the blowjob $his all. As a cumslut $he's almost desperate to get your cum into $his mouth and <<if ($activeSlave.chastityPenis == 1)>>(since $his cock is off limits) frantically rubs $his nipples and asspussy<<elseif canAchieveErection($activeSlave)>>jacks $himself off<<else>>rubs $his sadly limp member<</if>> in anticipation.<<if $PC.vagina == 1>> You have more than one variety of deliciousness for $him, and $he's careful not to neglect your wet cunt.<</if>> When you finish, $he sits back with an ecstatic look on $his face and lets your cum rest in $his mouth as $he climaxes into $his $activeSlave.skin hand. $He pours $his own cum from $his hand into $his mouth so it can mingle with yours.
 <<elseif ($activeSlave.fetish == "cumslut") && ($activeSlave.fetishStrength > 60) && ($activeSlave.fetishKnown == 1) && ($PC.dick != 0)>>
-	$He comes over eagerly, with hunger <<if canSee($activeSlave)>>in $his eyes<<else>>on $his face<</if>>. $He gets to $his knees, hurriedly takes you into $his <<if $seeRace == 1>>$activeSlave.race <</if>>mouth, and gives the blowjob $his all. As a cumslut $he's almost desperate to get your cum into $his mouth and rubs $himself in anticipation.<<if $PC.vagina == 1>> You have more than one variety of deliciousness for $him, and $he's careful not to neglect your wet cunt.<</if>> When you finish, $he sits back with an ecstatic look on $his face and lets your cum rest in $his mouth as $he climaxes.
+	$He comes over eagerly, with hunger <<if canSee($activeSlave)>>in $his eyes<<else>>on $his face<</if>>. $He gets to <<if hasAnyLegs($activeSlave)>>$his knee<<if hasBothLegs($activeSlave)>>s<</if>><<else>>the ground<</if>>, hurriedly takes you into $his <<if $seeRace == 1>>$activeSlave.race <</if>>mouth, and gives the blowjob $his all. As a cumslut $he's almost desperate to get your cum into $his mouth and rubs $himself in anticipation.<<if $PC.vagina == 1>> You have more than one variety of deliciousness for $him, and $he's careful not to neglect your wet cunt.<</if>> When you finish, $he sits back with an ecstatic look on $his face and lets your cum rest in $his mouth as $he climaxes.
 <<elseif $activeSlave.devotion < -20>>
 	$He tries to back away, so you
 	<<if ($PC.dick != 0)>>
 		<<if $activeSlave.collar == "dildo gag">>
-			grab $him; $his <<if $seeRace == 1>>$activeSlave.race <</if>>mouth is already held invitingly open by $his gag, and $he's prevented from biting. You push $him down to $his knees with $his head against the couch next to your desk so you can give $him a good hard throat fuck. When you cum down $his $activeSlave.skin throat $he retches through $his tears.
+			grab $him; $his <<if $seeRace == 1>>$activeSlave.race <</if>>mouth is already held invitingly open by $his gag, and $he's prevented from biting. You push $him down to <<if hasAnyLegs($activeSlave)>>$his knee<<if hasBothLegs($activeSlave)>>s<</if>><<else>>the ground<</if>> with $his head against the couch next to your desk so you can give $him a good hard throat fuck. When you cum down $his $activeSlave.skin throat $he retches through $his tears.
 			<<if $PC.vagina == 1>>$He has a mere moment to get $his breath back before you press your pussy against $his unwilling mouth.<</if>>
 		<<elseif $activeSlave.collar == "massive dildo gag">>
-			grab $him; $his <<if $seeRace == 1>>$activeSlave.race <</if>>mouth is left agape, unable to close after being forced so widely open for so long, so $he is unlikely to bite. You push $him down to $his knees with $his head against the couch next to your desk so you can give $him a good hard throat fuck. When you cum down $his $activeSlave.skin throat $he retches through $his tears.
+			grab $him; $his <<if $seeRace == 1>>$activeSlave.race <</if>>mouth is left agape, unable to close after being forced so widely open for so long, so $he is unlikely to bite. You push $him down to <<if hasAnyLegs($activeSlave)>>$his knee<<if hasBothLegs($activeSlave)>>s<</if>><<else>>the ground<</if>> with $his head against the couch next to your desk so you can give $him a good hard throat fuck. When you cum down $his $activeSlave.skin throat $he retches through $his tears.
 			<<if $PC.vagina == 1>>$He has a mere moment to get $his breath back before you press your pussy against $his unwilling mouth.<</if>>
 		<<else>>
-			grab $him and force a ring gag into $his <<if $seeRace == 1>>$activeSlave.race <</if>>mouth. Once you have the straps secured behind $his head, $he's prevented from biting. You push $him down to $his knees with $his head against the couch next to your desk so you can give $him a good hard throat fuck. When you cum down $his $activeSlave.skin throat $he retches through $his tears.
+			grab $him and force a ring gag into $his <<if $seeRace == 1>>$activeSlave.race <</if>>mouth. Once you have the straps secured behind $his head, $he's prevented from biting. You push $him down to <<if hasAnyLegs($activeSlave)>>$his knee<<if hasBothLegs($activeSlave)>>s<</if>><<else>>the ground<</if>> with $his head against the couch next to your desk so you can give $him a good hard throat fuck. When you cum down $his $activeSlave.skin throat $he retches through $his tears.
 			<<if $PC.vagina == 1>>$He has a mere moment to get $his breath back before you press your pussy against $his unwilling mouth.<</if>>
 		<</if>>
 	<<else>>
@@ -138,14 +138,14 @@ You tell $activeSlave.slaveName to
 	<<if ($PC.dick != 0)>>
 		give you a blowjob. Deciding that $he isn't showing the necessary enthusiasm, you hold $his head and fuck $his <<if $seeRace == 1>>$activeSlave.race <</if>>face instead<<if $PC.vagina == 1>>, occasionally jerking your dick free to shove your pussy against $his face instead<</if>>. $He does $his best to follow your motions but still splutters and gags. You pull free to cum across $his $activeSlave.skin face and hair.
 	<<else>>
-		eat you out. Deciding that $he isn't showing the necessary enthusiasm, you hold $his head and grind your pussy against $his <<if $seeRace == 1>>$activeSlave.race <</if>>face instead. $He does $his best to follow your motions but still splutters and gasps for air. You climax quickly and haul $him to $his feet, kissing the bewildered $girl full on the mouth. You can taste yourself on $his lips.
+		eat you out. Deciding that $he isn't showing the necessary enthusiasm, you hold $his head and grind your pussy against $his <<if $seeRace == 1>>$activeSlave.race <</if>>face instead. $He does $his best to follow your motions but still splutters and gasps for air. You climax quickly and haul $him <<if hasBothLegs($activeSlave)>>to $his feet<<else>>upright<</if>>, kissing the bewildered $girl full on the mouth. You can taste yourself on $his lips.
 	<</if>>
 <<else>>
 	$He licks $his lips <<if canSee($activeSlave)>>and looks you in the eyes <</if>>as $he gets to $his knees. $He
 	<<if ($PC.dick != 0)>>
 		gives you a long, deep blowjob. $He massages your balls<<if $PC.vagina == 1>> and pussy<</if>> with one hand and $his breasts with the other, giving you a show. $He sucks your head until you climax, letting your cock pop free of $his mouth to shoot pearly cum all across $his $activeSlave.skin face.
 	<<else>>
-		eats you out like $he's starving, moaning into your pussy to show off $his arousal and add to your pleasure. $He massages your perineum with one hand and $his breasts with the other, giving you a show. $He slowly concentrates more and more attention on your clit until you climax convulsively. You pull $him to $his feet, kissing the compliant $girl full on the mouth. You can taste yourself on $his lips.
+		eats you out like $he's starving, moaning into your pussy to show off $his arousal and add to your pleasure. $He massages your perineum with one hand and $his breasts with the other, giving you a show. $He slowly concentrates more and more attention on your clit until you climax convulsively. You pull $him <<if hasBothLegs($activeSlave)>>to $his feet<<else>>upright<</if>>, kissing the compliant $girl full on the mouth. You can taste yourself on $his lips.
 	<</if>>
 <</if>>
 
diff --git a/src/npc/descriptions/fPoolSex.tw b/src/npc/descriptions/fPoolSex.tw
index 1b8bf3d9332a615d29ef5e0427ac86ac4ffd9f27..edbb4b5515dacd21c40ae3e10c2750d5f340419c 100644
--- a/src/npc/descriptions/fPoolSex.tw
+++ b/src/npc/descriptions/fPoolSex.tw
@@ -5,8 +5,8 @@
 
 You order $him to meet you in the spa for some quality time in the penthouse's rejuvenating gelatin pool. When you get there, $he's already in $his bathing attire, reclined at the side of the pool farthest from you with $his massive $activeSlave.skin stomach hanging over the edge and half sunk in the thick, steaming ooze, flushed and sweaty.
 <<if $activeSlave.devotion > 95>>
-	<<if $activeSlave.amp < 1>>
-		$He's resting $his head on one arm, but $he gives you a little wave with the other before setting it to rubbing the flank of one
+	<<if !isAmputee($activeSlave)>>
+		$He's resting $his head on one arm, but $he gives you a little wave <<if missingArms != 0>>anyway<<else>>with the other<</if>> before setting it to rubbing the flank of one
 		<<if $activeSlave.boobs >= 20000>>
 			massively overgrown tit
 		<<elseif Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
@@ -23,14 +23,14 @@ You order $him to meet you in the spa for some quality time in the penthouse's r
 	<<if canSee($activeSlave)>>watches<<else>>waits patiently as<</if>> you strip down and change into your swimming outfit. When it's clear that you're ready to join $him, $he motions at the pool's holographic console and coos in delight as its mobility assistance devices kick in, rolling $him into the curative gel. You sink yourself into the pool, taking a moment to bask in the feeling of the warm, curative laced goo as it relaxes your muscles<<if $PC.preg > 30>> and soothes your stretched skin<</if>>, then wade toward your waiting slave.
 	<br><br>
 	$He smiles and beckons you toward $him, rubbing circles in the exploded sides of $his colossal belly, then gasps as you take a handful of the ooze and shove it right in $his face. $He sputters indignantly and then
-	<<if $activeSlave.amp < 1>>
+	<<if hasAnyArms($activeSlave)>>
 		scoops up a handful $himself, flinging it at you. The two of you spend several minutes goo fighting before, eventually, you decide that your
 	<<else>>
 		wobbles back and forth, ineffectually trying to fight back as you cover $him in thick wads of gel, over and over. After several minutes of this, you decide that your
 	<</if>>
 	<<if $PC.dick == 1>>
 		solid, quivering erection is in need of $his tender care. <<if canSee($activeSlave)>>Seeing<<else>>Sensing<</if>> the change in your demeanor, $he rolls back to recline at the pool's edge and, once you've joined $him,
-		<<if $activeSlave.amp < 1>>
+		<<if hasAnyArms($activeSlave)>>
 			reaches down to masturbate your ooze lubricated dick.
 		<<else>>
 			rolls forward and reaches down to tease your cockhead with $his mouth<<if $activeSlave.boobs > 600>> and tits<</if>>.
@@ -51,7 +51,7 @@ You order $him to meet you in the spa for some quality time in the penthouse's r
 		<<if canDoVaginal($activeSlave)>><<= VCheck.Vaginal()>><<else>><<= VCheck.Anal()>><</if>>
 	<<else>>
 		ooze stimulated quim is in need of $his tender care. Seeing the change in your demeanor, $he rolls back to recline at the pool's edge and, once you've joined $him,
-		<<if $activeSlave.amp < 1>>
+		<<if hasAnyArms($activeSlave)>>
 			reaches down to masturbate your pussy, squeezing and rubbing your clit.
 		<<else>>
 			rolls sideways and rubs your vulva as best $he can.
@@ -64,7 +64,7 @@ You order $him to meet you in the spa for some quality time in the penthouse's r
 		<</if>>
 	<</if>>
 <<elseif ($activeSlave.trust < -20) && ($activeSlave.devotion > -10)>>
-	<<if $activeSlave.amp < 1>>
+	<<if hasAnyArms($activeSlave)>>
 		$He's resting $his head on one arm, but $he nods at you in acknowledgment as
 	<<else>>
 		$He's resting on a small pile of pillows, enjoying the sensations against the flanks of $his colossal belly. $He nods as you enter, not stopping $his rubbing, and <<if canSee($activeSlave)>>watches<<else>>waits patiently as<</if>>
@@ -72,14 +72,14 @@ You order $him to meet you in the spa for some quality time in the penthouse's r
 	you strip down and change into your swimming outfit. When it's clear that you're ready to join $him, $he motions at the pool's holographic console and its mobility assistance devices kick in, rolling $him into the curative gel. You sink yourself into the pool, taking a moment to bask in the feeling of the warm, curative laced goo as it relaxes your muscles<<if $PC.preg > 30>> and soothes your stretched skin<</if>>, then wade toward your waiting slave.
 	<br><br>
 	$He smiles politely, rubbing circles in the exploded sides of $his colossal belly, then gasps as you take a handful of the ooze and shove it right in $his face. $He sputters indignantly and then
-	<<if $activeSlave.amp < 1>>
+	<<if hasAnyArms($activeSlave)>>
 		scoops up a handful $himself, flinging it at you. The two of you spend several minutes goo fighting before, eventually, you decide that your
 	<<else>>
 		wobbles back and forth, ineffectually trying to fight back as you cover $him in thick wads of gel, over and over. After several minutes of this, you decide that your
 	<</if>>
 	<<if $PC.dick == 1>>
 		solid, quivering erection is in need of $his tender care. <<if canSee($activeSlave)>>Seeing<<else>>Sensing<</if>> the change in your demeanor, $he rolls back to recline at the pool's edge and, once you've joined $him,
-		<<if $activeSlave.amp < 1>>
+		<<if hasAnyArms($activeSlave)>>
 			reaches down to masturbate your ooze lubricated dick.
 		<<else>>
 			rolls forward and reaches down to tease your cockhead with $his mouth<<if $activeSlave.boobs > 600>> and tits<</if>>.
@@ -100,7 +100,7 @@ You order $him to meet you in the spa for some quality time in the penthouse's r
 		<<if canDoVaginal($activeSlave)>><<= VCheck.Vaginal()>><<else>><<= VCheck.Anal()>><</if>>
 	<<else>>
 		ooze stimulated quim is in need of $his tender care. Seeing the change in your demeanor, $he rolls back to recline at the pool's edge and, once you've joined $him,
-		<<if $activeSlave.amp < 1>>
+		<<if hasAnyArms($activeSlave)>>
 			reaches down to masturbate your pussy, squeezing and rubbing your clit.
 		<<else>>
 			rolls sideways and rubs your vulva as best $he can.
@@ -113,7 +113,7 @@ You order $him to meet you in the spa for some quality time in the penthouse's r
 		<</if>>
 	<</if>>
 <<else>>
-	<<if $activeSlave.amp < 1>>
+	<<if hasAnyArms($activeSlave)>>
 		$He's resting $his head on one arm, but $he starts as you enter, watching tensely as
 	<<else>>
 		$He's resting on a small pile of pillows, savoring the sensations against the flanks of $his colossal belly and
@@ -133,7 +133,7 @@ You order $him to meet you in the spa for some quality time in the penthouse's r
 	$He smiles politely, rubbing circles in the exploded sides of $his colossal belly, then cries out in surprise as you take a handful of the ooze and shove it right in $his face. $He sputters, blushing, and wobbles back and forth, clearly trying not to react as you cover $him in thick wads of gel, over and over. After several minutes of this, you decide that your
 	<<if $PC.dick == 1>>
 		solid, quivering erection is in need of $his tender care. You force $him back into a reclining position at the pool's edge and order $him to
-		<<if $activeSlave.amp < 1>>
+		<<if hasAnyArms($activeSlave)>>
 			masturbate your ooze lubricated dick.
 		<<else>>
 			tease your cockhead with $his mouth.
@@ -154,7 +154,7 @@ You order $him to meet you in the spa for some quality time in the penthouse's r
 		<<if canDoVaginal($activeSlave)>><<= VCheck.Vaginal()>><<else>><<= VCheck.Anal()>><</if>>
 	<<else>>
 		ooze stimulated quim is in need of $his tender care. You force $him back to recline at the pool's edge and, once you've joined $him,
-		<<if $activeSlave.amp < 1>>
+		<<if hasAnyArms($activeSlave)>>
 			set $him to masturbating your pussy, squeezing and rubbing your clit.
 		<<else>>
 			set $him to rubbing your vulva with $his belly button.
diff --git a/src/npc/descriptions/fVagina.tw b/src/npc/descriptions/fVagina.tw
index 6b8187b1f9a72012d565b15494ebef71490f8e25..7cc4016bd145899d6a7d503787711607db5459a0 100644
--- a/src/npc/descriptions/fVagina.tw
+++ b/src/npc/descriptions/fVagina.tw
@@ -125,7 +125,7 @@ You call $him over so you can
 			A position that will be awkward with the combined size of your rounded middles.
 		<</if>>
 	<<elseif (_fPosition <= 60)>>
-		doggy-style. You tell $him to get on the couch beside your desk on $his hands and knees.
+		doggy-style. You tell $him to get on the couch beside your desk on $his <<if hasAnyArms($activeSlave)>>hand<<if hasBothArms($activeSlave)>>s<</if>> and <</if>>knees.
 		<<if $activeSlave.bellyPreg >= 600000>>
 			As $he struggles to fit on the couch, you tell $him to just lean over $his immense pregnancy instead.
 		<<elseif $activeSlave.belly >= 600000>>
@@ -179,7 +179,7 @@ You call $him over so you can
 	<<set $activeSlave.vagina++>>
 <<elseif ($activeSlave.fetish == "mindbroken")>>
 	Since $his mind is gone, $he's yours to use as a human sex doll. You throw $him over the couch and amuse yourself with $him for a while; $his body retains its instinctual responses, at least. You finish inside $him and leave your toy for one of your other slaves to clean and maintain.
-<<elseif ($activeSlave.amp == 1)>>
+<<elseif isAmputee($activeSlave)>>
 	Since $he's a quadruple amputee, $he's yours to use as a human sex toy. You set $him
 	<<if ($PC.dick != 0)>>
 		<<if $activeSlave.belly >= 300000>>
@@ -270,7 +270,7 @@ You call $him over so you can
 		<<elseif $activeSlave.belly >= 300000>>
 			$He does $his best to not suffocate you with $his massive belly or knock you out with it as you thrust <<if _fSpeed > 75>>hard and fast<<elseif _fSpeed > 50>>firmly and vigorously<<elseif _fSpeed > 25>>steadily<<else>>slowly and tenderly<</if>> into $him. You get a face full of implant with each downward motion;
 		<<else>>
-			$He puts $his hands on your chest and leans forward as you continue to thrust <<if _fSpeed > 75>>hard<<elseif _fSpeed > 50>>vigorously<<elseif _fSpeed > 25>>steadily<<else>>tenderly<</if>> upwards;
+			$He <<if hasAnyArms($activeSlave)>>puts $his hand<<if hasBothArms($activeSlave)>>s<</if>> on your chest and <</if>>leans forward as you continue to thrust <<if _fSpeed > 75>>hard<<elseif _fSpeed > 50>>vigorously<<elseif _fSpeed > 25>>steadily<<else>>tenderly<</if>> upwards;
 		<</if>>
 	<<elseif (_fPosition <= 60)>> /* doggy-style */
 		<<if $activeSlave.bellyPreg >= 300000>>
@@ -282,11 +282,11 @@ You call $him over so you can
 		<</if>>
 	<<elseif (_fPosition <= 80)>> /* reverse cowgirl */
 		<<if $activeSlave.bellyPreg >= 300000>>
-			You may have to spread your legs extra wide to accommodate $his impressive baby bump, but the angle and pressure it puts on you feels amazing. $He puts $his hands on your chest and starts to lean back as you continue to thrust <<if _fSpeed > 75>>hard and fast<<elseif _fSpeed > 50>>firmly and vigorously<<elseif _fSpeed > 25>>steadily<<else>>slowly and tenderly<</if>> upwards, in return you caress $his distended sides;
+			You may have to spread your legs extra wide to accommodate $his impressive baby bump, but the angle and pressure it puts on you feels amazing. $He <<if hasAnyArms($activeSlave)>>puts $his hand<<if hasBothArms($activeSlave)>>s<</if>> on your chest and <</if>>starts to lean back as you continue to thrust <<if _fSpeed > 75>>hard and fast<<elseif _fSpeed > 50>>firmly and vigorously<<elseif _fSpeed > 25>>steadily<<else>>slowly and tenderly<</if>> upwards, in return you caress $his distended sides;
 		<<elseif $activeSlave.belly >= 300000>>
-			You may have to spread your legs extra wide to accommodate $his impressive belly, but the angle and pressure it puts on you feels amazing. $He puts $his hands on your chest and starts to lean back as you continue to thrust <<if _fSpeed > 75>>hard and fast<<elseif _fSpeed > 50>>firmly and vigorously<<elseif _fSpeed > 25>>steadily<<else>>slowly and tenderly<</if>> upwards, in return you caress $his distended sides;
+			You may have to spread your legs extra wide to accommodate $his impressive belly, but the angle and pressure it puts on you feels amazing. $He <<if hasAnyArms($activeSlave)>>puts $his hand<<if hasBothArms($activeSlave)>>s<</if>> on your chest and <</if>>starts to lean back as you continue to thrust <<if _fSpeed > 75>>hard and fast<<elseif _fSpeed > 50>>firmly and vigorously<<elseif _fSpeed > 25>>steadily<<else>>slowly and tenderly<</if>> upwards, in return you caress $his distended sides;
 		<<else>>
-			$He puts $his hands on your chest and starts to lean back as you continue to thrust <<if _fSpeed > 75>>hard and fast<<elseif _fSpeed > 50>>firmly and vigorously<<elseif _fSpeed > 25>>steadily<<else>>slowly and tenderly<</if>> upwards;
+			$He <<if hasAnyArms($activeSlave)>>puts $his hand<<if hasBothArms($activeSlave)>>s<</if>> on your chest and <</if>>starts to lean back as you continue to thrust <<if _fSpeed > 75>>hard and fast<<elseif _fSpeed > 50>>firmly and vigorously<<elseif _fSpeed > 25>>steadily<<else>>slowly and tenderly<</if>> upwards;
 		<</if>>
 	<<else>> /* wheelbarrow */
 		<<if $activeSlave.belly >= 600000>>
@@ -342,7 +342,7 @@ You call $him over so you can
 	<</if>>
 <<elseif $activeSlave.devotion <= 20>>
 	<<if ($PC.dick != 0)>>
-		$He obeys, lying on the couch next to your desk with $his legs spread. You kneel on the ground and enter $him, a hand on each of $his legs to give you a good grip. <<if _fSpeed > 75>>The pounding is hard and fast<<elseif _fSpeed > 50>>You pound $him firmly and vigorously<<elseif _fSpeed > 25>>You fuck $him steadily and controlled<<else>>You fuck $him slowly and tenderly<</if>>, and $he gasps and <<if _fSpeed > 50>>whines<<else>>moans<</if>>. You reach a hand down to maul $his breasts.
+		$He obeys, lying on the couch next to your desk<<if hasAnyLegs($activeSlave)>> with $his leg<<if hasBothLegs($activeSlave)>>s spread<<else>> moved aside<</if>><</if>>. You kneel on the ground and enter $him<<if hasAnyLegs($activeSlave)>>, a hand on <<if hasBothLegs($activeSlave)>>each of $his legs<<else>>$his leg<</if>> to give you a good grip<</if>>. <<if _fSpeed > 75>>The pounding is hard and fast<<elseif _fSpeed > 50>>You pound $him firmly and vigorously<<elseif _fSpeed > 25>>You fuck $him steadily and controlled<<else>>You fuck $him slowly and tenderly<</if>>, and $he gasps and <<if _fSpeed > 50>>whines<<else>>moans<</if>>. You reach a hand down to maul $his breasts.
 		<<if ($activeSlave.dick != 0) && canAchieveErection($activeSlave)>>
 			<<if ($activeSlave.chastityPenis == 1)>>
 				$He enjoys $himself, even though $his dick chastity keeps $him soft by making the beginnings of erection very uncomfortable.
@@ -420,7 +420,7 @@ You call $him over so you can
 			<<elseif $activeSlave.belly >= 300000>>
 				$He does $his best to not suffocate you with $his massive belly or knock you out with it as you thrust <<if _fSpeed > 75>>hard and fast<<elseif _fSpeed > 50>>firmly and vigorously<<elseif _fSpeed > 25>>steadily<<else>>slowly and tenderly<</if>> into $him. You get a face full of implant with each downward motion;
 			<<else>>
-				$He puts $his hands on your chest and leans forward as you continue to thrust <<if _fSpeed > 75>>hard<<elseif _fSpeed > 50>>vigorously<<elseif _fSpeed > 25>>steadily<<else>>tenderly<</if>> upwards;
+				$He <<if hasAnyArms($activeSlave)>>puts $his hand<<if hasBothArms($activeSlave)>>s<</if>> on your chest and <</if>>leans forward as you continue to thrust <<if _fSpeed > 75>>hard<<elseif _fSpeed > 50>>vigorously<<elseif _fSpeed > 25>>steadily<<else>>tenderly<</if>> upwards;
 			<</if>>
 		<<elseif (_fPosition <= 60)>> /* doggy-style */
 			<<if $activeSlave.bellyPreg >= 300000>>
@@ -432,11 +432,11 @@ You call $him over so you can
 			<</if>>
 		<<elseif (_fPosition <= 80)>> /* reverse cowgirl */
 			<<if $activeSlave.bellyPreg >= 300000>>
-				You may have to spread your legs extra wide to accommodate $his impressive baby bump, but the angle and pressure it puts on you feels amazing. $He puts $his hands on your chest and starts to lean back as you continue to thrust <<if _fSpeed > 75>>hard and fast<<elseif _fSpeed > 50>>firmly and vigorously<<elseif _fSpeed > 25>>steadily<<else>>slowly and tenderly<</if>> upwards, in return you caress $his distended sides;
+				You may have to spread your legs extra wide to accommodate $his impressive baby bump, but the angle and pressure it puts on you feels amazing. $He <<if hasAnyArms($activeSlave)>>puts $his hand<<if hasBothArms($activeSlave)>>s<</if>> on your chest and <</if>>starts to lean back as you continue to thrust <<if _fSpeed > 75>>hard and fast<<elseif _fSpeed > 50>>firmly and vigorously<<elseif _fSpeed > 25>>steadily<<else>>slowly and tenderly<</if>> upwards, in return you caress $his distended sides;
 			<<elseif $activeSlave.belly >= 300000>>
-				You may have to spread your legs extra wide to accommodate $his impressive belly, but the angle and pressure it puts on you feels amazing. $He puts $his hands on your chest and starts to lean back as you continue to thrust <<if _fSpeed > 75>>hard and fast<<elseif _fSpeed > 50>>firmly and vigorously<<elseif _fSpeed > 25>>steadily<<else>>slowly and tenderly<</if>> upwards, in return you caress $his distended sides;
+				You may have to spread your legs extra wide to accommodate $his impressive belly, but the angle and pressure it puts on you feels amazing. $He <<if hasAnyArms($activeSlave)>>puts $his hand<<if hasBothArms($activeSlave)>>s<</if>> on your chest and <</if>>starts to lean back as you continue to thrust <<if _fSpeed > 75>>hard and fast<<elseif _fSpeed > 50>>firmly and vigorously<<elseif _fSpeed > 25>>steadily<<else>>slowly and tenderly<</if>> upwards, in return you caress $his distended sides;
 			<<else>>
-				$He puts $his hands on your chest and starts to lean back as you continue to thrust <<if _fSpeed > 75>>hard and fast<<elseif _fSpeed > 50>>firmly and vigorously<<elseif _fSpeed > 25>>steadily<<else>>slowly and tenderly<</if>> upwards;
+				$He <<if hasAnyArms($activeSlave)>>puts $his hand<<if hasBothArms($activeSlave)>>s<</if>> on your chest and <</if>>starts to lean back as you continue to thrust <<if _fSpeed > 75>>hard and fast<<elseif _fSpeed > 50>>firmly and vigorously<<elseif _fSpeed > 25>>steadily<<else>>slowly and tenderly<</if>> upwards;
 			<</if>>
 		<<else>> /* wheelbarrow */
 			<<if $activeSlave.belly >= 600000>>
diff --git a/src/npc/takeoverTarget.tw b/src/npc/takeoverTarget.tw
index ce9133bce802447c010193481a46f43298cbd541..18381ef8758271829fd63e84c743b8ee14021d4f 100644
--- a/src/npc/takeoverTarget.tw
+++ b/src/npc/takeoverTarget.tw
@@ -1,7 +1,5 @@
 :: Takeover Target [nobr]
 
-<<set $ui = "start", $showBodyMods = 1>>
-
 Before you deploy the
 <<if $PC.rumor == "wealth">>
 	financial reserves that
@@ -221,4 +219,4 @@ Alternatively, arcologies are being built every day, and their owners' control i
 	<<default>>@@.orange;Multiculturalism,@@ a celebration of the total liberty that was the original purpose of the Free Cities.
 	<</switch>>
 	<hr style="margin:0">
-<</for>>
+<</for>>
\ No newline at end of file
diff --git a/src/pregmod/analyzePlayerPregnancy.tw b/src/pregmod/analyzePlayerPregnancy.tw
index ccb6a29700cbe4644aa2a9a7f7b7e6fd5d6c29c5..5fe117839806a79222848748dfac99d369624b65 100644
--- a/src/pregmod/analyzePlayerPregnancy.tw
+++ b/src/pregmod/analyzePlayerPregnancy.tw
@@ -1,6 +1,11 @@
 :: Analyze PC Pregnancy [nobr]
 
-<<set $nextButton = "Continue", $nextLink = "Manage Personal Affairs">>
+<<if lastVisited("Incubator") === 1>>
+	<<set $storedLink = "Incubator">>
+<<elseif lastVisited("Manage Personal Affairs") === 1>>
+	<<set $storedLink = "Manage Personal Affairs">>
+<</if>>
+<<set $nextButton = "Continue", $nextLink = $storedLink>>
 
 <<set _WL = $PC.womb.length, _incubatorReservations = WombReserveCount($PC, "incubator"), _nurseryReservations = WombReserveCount($PC, "nursery")>>
 
diff --git a/src/pregmod/analyzePregnancy.tw b/src/pregmod/analyzePregnancy.tw
index 4b1ce967d7bc5cf3d39b3568df02e05628c7a167..133b7ad07bf4704b09da1e5bce2e92544985ab68 100644
--- a/src/pregmod/analyzePregnancy.tw
+++ b/src/pregmod/analyzePregnancy.tw
@@ -1,6 +1,12 @@
 :: Analyze Pregnancy [nobr]
 
-<<set $nextButton = "Continue", $nextLink = "Slave Interact">>
+<<if lastVisited("Incubator") === 1>>
+	<<set $storedLink = "AS Dump">>
+<<elseif lastVisited("Slave Interact") === 1>>
+	<<set $storedLink = "Slave Interact">>
+<</if>>
+<<set $nextButton = "Continue", $nextLink = $storedLink>>
+<<setLocalPronouns $activeSlave>>
 
 <<set _WL = $activeSlave.womb.length, _incubatorReservations = WombReserveCount($activeSlave, "incubator"), _nurseryReservations = WombReserveCount($activeSlave, "nursery")>>
 
diff --git a/src/pregmod/incubator.tw b/src/pregmod/incubator.tw
index 6a54bce844fc3678589cdbd2100792a8b6a9c0dd..1734d8746103ee7102709e538e58623f3af9d41f 100644
--- a/src/pregmod/incubator.tw
+++ b/src/pregmod/incubator.tw
@@ -111,6 +111,9 @@ Reserve an eligible mother-to-be's child to be placed in a tank upon birth. Of $
 				<</if>>
 				<<if (_reservedIncubator + _reservedNursery < _WL) && ($reservedChildren < $freeTanks)>>
 					<br>&nbsp;&nbsp;&nbsp;&nbsp;
+					<<if $pregnancyMonitoringUpgrade == 1>>
+						<<print "[[Inspect pregnancy|Analyze Pregnancy][$i = " + _u + "; $activeSlave = $slaves[$i]]] | ">>
+					<</if>>
 					<<print "[[Keep another child|Incubator][WombAddToGenericReserve($slaves[" + _u + "], 'incubator', 1)]]">>
 					<<if _reservedIncubator > 0>>
 						| <<print "[[Keep one less child|Incubator][WombCleanGenericReserve($slaves[" + _u + "], 'incubator', 1)]]">>
@@ -123,6 +126,9 @@ Reserve an eligible mother-to-be's child to be placed in a tank upon birth. Of $
 					<</if>>
 				<<elseif (_reservedIncubator == _WL) || ($reservedChildren == $freeTanks) || (_reservedIncubator + _reservedNursery == _WL)>>
 					<br>&nbsp;&nbsp;&nbsp;&nbsp;
+					<<if $pregnancyMonitoringUpgrade == 1>>
+						<<print "[[Inspect pregnancy|Analyze Pregnancy][$i = " + _u + "; $activeSlave = $slaves[$i]]] | ">>
+					<</if>>
 					<<print "[[Keep one less child|Incubator][WombCleanGenericReserve($slaves[" + _u + "], 'incubator', 1)]]">>
 					<<if _reservedIncubator > 1>>
 						| <<print "[[Keep none of " + $his + " children|Incubator][WombCleanGenericReserve($slaves[" + _u + "], 'incubator', 9999)]]">>
@@ -132,10 +138,16 @@ Reserve an eligible mother-to-be's child to be placed in a tank upon birth. Of $
 				<<if _WL - _reservedNursery == 0>>
 					//$His children are already reserved for $nurseryName//
 					<br>&nbsp;&nbsp;&nbsp;&nbsp;
+					<<if $pregnancyMonitoringUpgrade == 1>>
+						<<print "[[Inspect pregnancy|Analyze Pregnancy][$i = " + _u + "; $activeSlave = $slaves[$i]]] | ">>
+					<</if>>
 					<<print "[[Keep " + $his + " " + ((_WL > 1) ? "children" : "child") + " here instead|Incubator][WombChangeReserveType($slaves[" + _u + "], 'nursery', 'incubator')]]">>
 				<<else>>
 					You have <<if $freeTanks == 1>>an<</if>> @@.lime;available aging tank<<if $freeTanks > 1>>s<</if>>.@@
 					<br>&nbsp;&nbsp;&nbsp;&nbsp;
+					<<if $pregnancyMonitoringUpgrade == 1>>
+						<<print "[[Inspect pregnancy|Analyze Pregnancy][$i = " + _u + "; $activeSlave = $slaves[$i]]] | ">>
+					<</if>>
 					<<print "[[Keep "+ ((_WL > 1) ? "a" : "the") +" child|Incubator][WombAddToGenericReserve($slaves[" + _u + "], 'incubator', 1)]]">>
 					<<if (_WL > 1) && ($reservedChildren + _WL - _reservedIncubator) <= $freeTanks>>
 						| <<print "[[Keep all of " + $his + " children|Incubator][WombAddToGenericReserve($slaves[" + _u + "], 'incubator', 9999)]]">>
@@ -143,6 +155,9 @@ Reserve an eligible mother-to-be's child to be placed in a tank upon birth. Of $
 				<</if>>
 			<<elseif $reservedChildren == $freeTanks>>
 				<br>&nbsp;&nbsp;&nbsp;&nbsp;
+				<<if $pregnancyMonitoringUpgrade == 1>>
+					<<print "[[Inspect pregnancy|Analyze Pregnancy][$i = " + _u + "; $activeSlave = $slaves[$i]]] | ">>
+				<</if>>
 				You have @@.red;no room for $his offspring.@@
 			<</if>>
 			<<set _eligibility = 1>>
@@ -181,6 +196,9 @@ Reserve an eligible mother-to-be's child to be placed in a tank upon birth. Of $
 		<</if>>
 		<<if (_reservedIncubator < _WL) && ($reservedChildren < $freeTanks) && (_reservedIncubator - _reservedNursery > 0)>>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
+			<<if $pregnancyMonitoringUpgrade == 1>>
+				<<print "[[Inspect pregnancy|Analyze PC Pregnancy]] | ">>
+			<</if>>
 			<<print "[[Keep another child|Incubator][WombAddToGenericReserve($PC, 'incubator', 1)]]">>
 			<<if _reservedIncubator > 0>>
 				| <<print "[[Keep one less child|Incubator][WombCleanGenericReserve($PC, 'incubator', 1)]]">>
@@ -193,6 +211,9 @@ Reserve an eligible mother-to-be's child to be placed in a tank upon birth. Of $
 			<</if>>
 		<<elseif (_reservedIncubator == _WL) || ($reservedChildren == $freeTanks) || (_reservedIncubator - _reservedNursery >= 0)>>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
+			<<if $pregnancyMonitoringUpgrade == 1>>
+				<<print "[[Inspect pregnancy|Analyze PC Pregnancy]] | ">>
+			<</if>>
 			<<print "[[Keep one less child|Incubator][_reservedIncubator -= 1, $reservedChildren -= 1]]">>
 			<<if _reservedIncubator > 1>>
 				| <<print "[[Keep none of your children|Incubator][WombCleanGenericReserve($PC, 'incubator', 9999)]]">>
@@ -205,6 +226,9 @@ Reserve an eligible mother-to-be's child to be placed in a tank upon birth. Of $
 		<<else>>
 			You have <<if $freeTanks == 1>>an<</if>> @@.lime;available aging tank<<if $freeTanks > 1>>s<</if>>.@@
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
+			<<if $pregnancyMonitoringUpgrade == 1>>
+				<<print "[[Inspect pregnancy|Analyze PC Pregnancy]] | ">>
+			<</if>>
 			<<print "[[Keep " + ((_WL > 1) ? "a" : "your") +" child|Incubator][WombAddToGenericReserve($PC, 'incubator', 1)]]">>
 			<<if (_WL > 1) && ($reservedChildren + _WL - _reservedIncubator) <= $freeTanks>>
 				| [[Keep all of your children|Incubator][WombAddToGenericReserve($PC, 'incubator', 9999)]]
@@ -212,6 +236,9 @@ Reserve an eligible mother-to-be's child to be placed in a tank upon birth. Of $
 		<</if>>
 	<<elseif $reservedChildren == $freeTanks>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
+		<<if $pregnancyMonitoringUpgrade == 1>>
+			<<print "[[Inspect pregnancy|Analyze PC Pregnancy]] | ">>
+		<</if>>
 		You have @@.red;no room for your offspring.@@
 	<</if>>
 <</if>>
diff --git a/src/uncategorized/bodyModification.tw b/src/uncategorized/bodyModification.tw
index 759b8a7ee50dad5a3597e18a66cbee019bd7e527..aee6e814ea371fba6b2faa395a918168eb77a89c 100644
--- a/src/uncategorized/bodyModification.tw
+++ b/src/uncategorized/bodyModification.tw
@@ -404,36 +404,21 @@ Piercings:
 	$His smooth $activeSlave.skin skin is completely unpierced.
 <</if>>
 
-<<if $activeSlave.earPiercing > 0 >><br>&nbsp;&nbsp;&nbsp;&nbsp;<<earPiercingDescription>><</if>>
-<<if $activeSlave.nosePiercing > 0 >><br>&nbsp;&nbsp;&nbsp;&nbsp;<<nosePiercingDescription>><</if>>
-<<if $activeSlave.eyebrowPiercing > 0 >><br>&nbsp;&nbsp;&nbsp;&nbsp;<<eyebrowPiercingDescription>><</if>>
-<<if $activeSlave.lipsPiercing > 0 >><br>&nbsp;&nbsp;&nbsp;&nbsp;<<lipsPiercingDescription>><</if>>
-<<if $activeSlave.tonguePiercing > 0 >><br>&nbsp;&nbsp;&nbsp;&nbsp;<<tonguePiercingDescription>><</if>>
-<<if $activeSlave.nipplesPiercing > 0 >><br>&nbsp;&nbsp;&nbsp;&nbsp;<<nipplesPiercingDescription>><</if>>
-<<if $activeSlave.areolaePiercing > 0 >><br>&nbsp;&nbsp;&nbsp;&nbsp;<<areolaePiercingDescription>><</if>>
-<<if $activeSlave.navelPiercing > 0 >><br>&nbsp;&nbsp;&nbsp;&nbsp;<<navelPiercingDescription>><</if>>
-<<if $activeSlave.corsetPiercing > 0 >><br>&nbsp;&nbsp;&nbsp;&nbsp;<<CorsetPiercingDescription>><</if>>
-<<if $activeSlave.clitPiercing > 0 >><br>&nbsp;&nbsp;&nbsp;&nbsp;<<clitPiercingDescription>><</if>>
-<<if $activeSlave.vaginaPiercing > 0 >><br>&nbsp;&nbsp;&nbsp;&nbsp;<<vaginaPiercingDescription>><</if>>
-<<if $activeSlave.dickPiercing > 0 >><br>&nbsp;&nbsp;&nbsp;&nbsp;<<dickPiercingDescription>><</if>>
-<<if $activeSlave.anusPiercing > 0 >><br>&nbsp;&nbsp;&nbsp;&nbsp;<<anusPiercingDescription>><</if>>
-
-<br><<chastityPiercingDescription>>
-
-/*<<earPiercingDescription>>
-<<nosePiercingDescription>>
-<<eyebrowPiercingDescription>>
-<<lipsPiercingDescription>>
-<<tonguePiercingDescription>>
-<<nipplesPiercingDescription>>
-<<areolaePiercingDescription>>
-<<navelPiercingDescription>>
-<<CorsetPiercingDescription>>
-<<clitPiercingDescription>>
-<<vaginaPiercingDescription>>
-<<dickPiercingDescription>>
-<<anusPiercingDescription>>
-<<chastityPiercingDescription>>*/
+<<if $activeSlave.earPiercing > 0 >><br>&nbsp;&nbsp;&nbsp;&nbsp;<<= App.Desc.piercing($activeSlave, "ear")>><</if>>
+<<if $activeSlave.nosePiercing > 0 >><br>&nbsp;&nbsp;&nbsp;&nbsp;<<= App.Desc.piercing($activeSlave, "nose")>><</if>>
+<<if $activeSlave.eyebrowPiercing > 0 >><br>&nbsp;&nbsp;&nbsp;&nbsp;<<= App.Desc.piercing($activeSlave, "eyebrow")>><</if>>
+<<if $activeSlave.lipsPiercing > 0 >><br>&nbsp;&nbsp;&nbsp;&nbsp;<<= App.Desc.piercing($activeSlave, "lips")>><</if>>
+<<if $activeSlave.tonguePiercing > 0 >><br>&nbsp;&nbsp;&nbsp;&nbsp;<<= App.Desc.piercing($activeSlave, "tongue")>><</if>>
+<<if $activeSlave.nipplesPiercing > 0 >><br>&nbsp;&nbsp;&nbsp;&nbsp;<<= App.Desc.piercing($activeSlave, "nipple")>><</if>>
+<<if $activeSlave.areolaePiercing > 0 >><br>&nbsp;&nbsp;&nbsp;&nbsp;<<= App.Desc.piercing($activeSlave, "areolae")>><</if>>
+<<if $activeSlave.navelPiercing > 0 >><br>&nbsp;&nbsp;&nbsp;&nbsp;<<= App.Desc.piercing($activeSlave, "navel")>><</if>>
+<<if $activeSlave.corsetPiercing > 0 >><br>&nbsp;&nbsp;&nbsp;&nbsp;<<= App.Desc.piercing($activeSlave, "corset")>><</if>>
+<<if $activeSlave.clitPiercing > 0 >><br>&nbsp;&nbsp;&nbsp;&nbsp;<<= App.Desc.piercing($activeSlave, "clit")>><</if>>
+<<if $activeSlave.vaginaPiercing > 0 >><br>&nbsp;&nbsp;&nbsp;&nbsp;<<= App.Desc.piercing($activeSlave, "vagina")>><</if>>
+<<if $activeSlave.dickPiercing > 0 >><br>&nbsp;&nbsp;&nbsp;&nbsp;<<= App.Desc.piercing($activeSlave, "dick")>><</if>>
+<<if $activeSlave.anusPiercing > 0 >><br>&nbsp;&nbsp;&nbsp;&nbsp;<<= App.Desc.piercing($activeSlave, "anus")>><</if>>
+
+<br><<= App.Desc.piercing($activeSlave, "chastity")>>
 
 /* Apply piercings */
 
@@ -616,17 +601,17 @@ Choose piercing style:
 /* TATTOOS */
 
 Tattoos:
-<<if $activeSlave.shouldersTat != 0>>							<br>&nbsp;&nbsp;&nbsp;&nbsp;<<shouldersTatDescription>><<set _hasTat = 1>><</if>>
-<<if $activeSlave.lipsTat != 0>>							<br>&nbsp;&nbsp;&nbsp;&nbsp;<<lipsTatDescription>><<set _hasTat = 1>><</if>>
-<<if $activeSlave.boobsTat != 0>>							<br>&nbsp;&nbsp;&nbsp;&nbsp;<<boobsTatDescription>><<set _hasTat = 1>><</if>>
-<<if $activeSlave.armsTat != 0 && $activeSlave.amp != 1>>	<br>&nbsp;&nbsp;&nbsp;&nbsp;<<armsTatDescription>><<set _hasTat = 1>><</if>>
-<<if $activeSlave.backTat != 0>>							<br>&nbsp;&nbsp;&nbsp;&nbsp;<<backTatDescription>><<set _hasTat = 1>><</if>>
-<<if $activeSlave.stampTat != 0>>							<br>&nbsp;&nbsp;&nbsp;&nbsp;<<stampTatDescription>><<set _hasTat = 1>><</if>>
-<<if $activeSlave.buttTat != 0>>							<br>&nbsp;&nbsp;&nbsp;&nbsp;<<buttTatDescription>><<set _hasTat = 1>><</if>>
-<<if $activeSlave.vaginaTat != 0>>							<br>&nbsp;&nbsp;&nbsp;&nbsp;<<vaginaTatDescription>><<set _hasTat = 1>><</if>>
-<<if $activeSlave.dickTat != 0 && $activeSlave.dick > 0>>	<br>&nbsp;&nbsp;&nbsp;&nbsp;<<dickTatDescription>><<set _hasTat = 1>><</if>>
-<<if $activeSlave.anusTat != 0>>							<br>&nbsp;&nbsp;&nbsp;&nbsp;<<anusTatDescription>><<set _hasTat = 1>><</if>>
-<<if $activeSlave.legsTat != 0 && $activeSlave.amp != 1>>	<br>&nbsp;&nbsp;&nbsp;&nbsp;<<legsTatDescription>><<set _hasTat = 1>><</if>>
+<<if $activeSlave.shouldersTat != 0>>							<br>&nbsp;&nbsp;&nbsp;&nbsp;<<= App.Desc.tattoo($activeSlave, "shoulder")>><<set _hasTat = 1>><</if>>
+<<if $activeSlave.lipsTat != 0>>							<br>&nbsp;&nbsp;&nbsp;&nbsp;<<= App.Desc.tattoo($activeSlave, "lips")>><<set _hasTat = 1>><</if>>
+<<if $activeSlave.boobsTat != 0>>							<br>&nbsp;&nbsp;&nbsp;&nbsp;<<= App.Desc.tattoo($activeSlave, "breast")>><<set _hasTat = 1>><</if>>
+<<if $activeSlave.armsTat != 0 && $activeSlave.amp != 1>>	<br>&nbsp;&nbsp;&nbsp;&nbsp;<<= App.Desc.tattoo($activeSlave, "upper arm")>><<set _hasTat = 1>><</if>>
+<<if $activeSlave.backTat != 0>>							<br>&nbsp;&nbsp;&nbsp;&nbsp;<<= App.Desc.tattoo($activeSlave, "back")>><<set _hasTat = 1>><</if>>
+<<if $activeSlave.stampTat != 0>>							<br>&nbsp;&nbsp;&nbsp;&nbsp;<<= App.Desc.tattoo($activeSlave, "lower back")>><<set _hasTat = 1>><</if>>
+<<if $activeSlave.buttTat != 0>>							<br>&nbsp;&nbsp;&nbsp;&nbsp;<<= App.Desc.tattoo($activeSlave, "buttock")>><<set _hasTat = 1>><</if>>
+<<if $activeSlave.vaginaTat != 0>>							<br>&nbsp;&nbsp;&nbsp;&nbsp;<<= App.Desc.tattoo($activeSlave, "vagina")>><<set _hasTat = 1>><</if>>
+<<if $activeSlave.dickTat != 0 && $activeSlave.dick > 0>>	<br>&nbsp;&nbsp;&nbsp;&nbsp;<<= App.Desc.tattoo($activeSlave, "dick")>><<set _hasTat = 1>><</if>>
+<<if $activeSlave.anusTat != 0>>							<br>&nbsp;&nbsp;&nbsp;&nbsp;<<= App.Desc.tattoo($activeSlave, "anus")>><<set _hasTat = 1>><</if>>
+<<if $activeSlave.legsTat != 0 && $activeSlave.amp != 1>>	<br>&nbsp;&nbsp;&nbsp;&nbsp;<<= App.Desc.tattoo($activeSlave, "thigh")>><<set _hasTat = 1>><</if>>
 
 <br>&nbsp;&nbsp;&nbsp;&nbsp;
 Choose a tattoo style:
diff --git a/src/uncategorized/longSlaveDescription.tw b/src/uncategorized/longSlaveDescription.tw
index a44ccee34901868783081e710115e6d4d63a91aa..4db8ac2a928c45453841e60bca829846400e0347 100644
--- a/src/uncategorized/longSlaveDescription.tw
+++ b/src/uncategorized/longSlaveDescription.tw
@@ -1926,9 +1926,7 @@ $He is
 	$activeSlave.counter.pitKills slaves have died by $his hand in pit fights.
 <</if>>
 
-<<if $activeSlave.corsetPiercing > 0>>
-	<<CorsetPiercingDescription>>
-<</if>>
+<<= App.Desc.piercing($activeSlave, "corset")>>
 
 <<pregnancyDescription>>
 
@@ -1957,7 +1955,10 @@ $He is
 	<</if>>
 <</if>>
 
-<<legsTatDescription>>
+<<= App.Desc.mods($activeSlave, "thigh")>>
+<<= App.Desc.mods($activeSlave, "calf")>>
+<<= App.Desc.mods($activeSlave, "ankle")>>
+<<= App.Desc.mods($activeSlave, "foot")>>
 <<heelDescription>>
 <<skinDescription>>
 
@@ -2079,9 +2080,9 @@ $He is
 			The piercings on $his head run through $his suit, helping secure the material to $his head.
 		<</if>>
 	<<else>>
-		<<earPiercingDescription>>
-		<<nosePiercingDescription>>
-		<<eyebrowPiercingDescription>>
+		<<= App.Desc.mods($activeSlave, "ear")>>
+		<<= App.Desc.mods($activeSlave, "nose")>>
+		<<= App.Desc.mods($activeSlave, "eyebrow")>>
 		<<if ($activeSlave.custom.tattoo != "") && (def $activeSlave.custom.tattoo)>>
 			<<print $activeSlave.custom.tattoo>>
 		<</if>>
@@ -2115,12 +2116,13 @@ $He is
 
 <<if $activeSlave.fuckdoll == 0>>
 	<<nailsDescription>>
-	<<if $showBodyMods == 1>>
-		<<backTatDescription>>
-		<<shouldersTatDescription>>
-		<<armsTatDescription>>
-	<</if>>
 <</if>>
+<<= App.Desc.mods($activeSlave, "back")>>
+<<= App.Desc.mods($activeSlave, "shoulder")>>
+<<= App.Desc.mods($activeSlave, "upper arm")>>
+<<= App.Desc.mods($activeSlave, "lower arm")>>
+<<= App.Desc.mods($activeSlave, "hand")>>
+<<= App.Desc.mods($activeSlave, "wrist")>>
 
 <<if $activeSlave.fuckdoll == 0>>
 	<<if $activeSlave.minorInjury != 0>>
@@ -2136,16 +2138,13 @@ $He is
 <<BoobsDescription>>
 <<boobsShapeDescription>>
 <<boobsExtraDescription>>
-<<if $showBodyMods == 1>>
-	<<boobsTatDescription>>
-<</if>>
-<<boobBrandDescription>>
+<<= App.Desc.mods($activeSlave, "chest")>>
+<<= App.Desc.mods($activeSlave, "breast")>>
 <<shouldersDescription>>
 <<nipplesDescription>>
-<<if $showBodyMods == 1>>
-	<<nipplesPiercingDescription>>
-<</if>>
+<<= App.Desc.mods($activeSlave, "nipple")>>
 <<areolaeDescription>>
+<<= App.Desc.mods($activeSlave, "areolae")>>
 
 <<if $activeSlave.inflation > 0>> /* to be obsoleted with phase 4 */
 	<<BellyInflationDescription>>
@@ -2154,6 +2153,7 @@ $He is
 <<else>>
 	<<BellyDescription>>
 <</if>>
+<<= App.Desc.mods($activeSlave, "navel")>>
 
 <<ButtDescription>>
 
diff --git a/src/uncategorized/storyCaption.tw b/src/uncategorized/storyCaption.tw
index 064927fa0acebc390b446d82e34c33d3a3e07d83..a7a5faf0c1061fc4f0c1f675fbec089c76ecadb0 100644
--- a/src/uncategorized/storyCaption.tw
+++ b/src/uncategorized/storyCaption.tw
@@ -5,7 +5,7 @@
 	<<if _Pass !== "Encyclopedia">> <br><br> <</if>>
 	<<if $nextButton === "END WEEK">>
 		<span id="endWeekButton"> <strong>
-		<<link [[($nextButton)|($nextLink)]]>><</link>>
+		<<link [[END WEEK|End Week]]>><</link>>
 		</strong> </span> @@.cyan;[Ent]@@
 		<<if $rulesError && $rulesAssistantAuto == 1>>
 			<br>@@.yellow; WARNING: some custom rules will change slave variables@@
@@ -13,9 +13,9 @@
 	<<else>>
 		<strong>
 		<<if _Pass !== "Encyclopedia">> /* must use link so spacebar shortcut will work */
-				<<link "$nextButton">> <<set $ui = "main">> <<goto $nextLink>> <</link>>
+				<<link [[$nextButton|$nextLink][]]>><</link>>
 		<<else>>
-				<<link [[($nextButton)|($nextLink)]]>><</link>> to Free Cities.
+				<<link [[Back to Free Cities|$nextLink]]>><</link>>
 		<</if>>
 		</strong> @@.cyan;[Space]@@
 	<</if>>
@@ -105,7 +105,7 @@
 	<br>[[Game Mods|Encyclopedia][$encyclopedia = "Game Mods"]]
 	<br>[[Credits|Encyclopedia][$encyclopedia = "Credits"]]
 <<elseif _Pass == "Starting Girls">>
-	<span id="cost"><<SlaveCostDescription>></span>
+	<span id="cost"><<SlaveCostDescription>></span> <br><br>
 <</if>>
 
 <<if $ui != "start" && _Pass !== "Encyclopedia">> <br>
@@ -119,8 +119,8 @@
 			__@@.red;Cash@@__
 			| @@.red;<<print cashFormat($cash)>>@@
 		<</if>>
-
 		</span>
+
 		<<if _Pass == "Main">> <br>
 			<<set _TCash2 = ($cash-$cashLastWeek)>>
 			<span id="oldcash">
@@ -226,10 +226,8 @@
 	<</if>>
 
 	<<if $sideBarOptions.Upkeep > 0>> <br>
-		<<if _Pass === "Main">>
-			[[Upkeep|Costs Budget]] |
-		<<else>>
-			Upkeep |
+		<<if _Pass === "Main">> [[Upkeep|Costs Budget]] |
+		<<else>> Upkeep |
 		<</if>>
 		@@.red;<<print cashFormat($costs)>>@@
 	<</if>>
@@ -769,39 +767,34 @@
 		<</if>>
 
 	<</if>> /* Closes nextButton !== "Continue" && nextButton !== " " */
+<</if>>
 
-	<<if _Pass === "Encyclopedia" || $showEncyclopedia === 0 || $encyclopedia === " " || $nextButton === "Continue">>
-	<<else>>
-		<<if $nextButton === " ">> <br> <</if>>
-		<br>//FCE:// [[$encyclopedia|Encyclopedia][$nextButton = "Back", $nextLink = _Pass]]
-	<</if>>
+<<if _Pass !== "Encyclopedia" && ($showEncyclopedia > 0 || $nextButton !== "Continue")>>
+	<<if $nextButton === " ">> <br> <</if>> <<if $ui != "start">> <br> <</if>>
+	//''FCE'':// [[$encyclopedia|Encyclopedia][$nextButton = "Back", $nextLink = _Pass]]
+<</if>>
 
-	<<if ($debugMode == 1)>>
-		<br><br>Debugging Tools<br>
-		<<link "Display Variables">><<checkvars>><</link>>
-		<br>
-		<<link "Display Changed Variables">>
-			<<set Config.history.maxStates = 2>> /* makes sure we store the current state so we can return to it */
-			<<goto "Variable Difference">>
-		<</link>>
-		<br>
-		<<link "Bug Report">><<bugreport>><</link>>
-		<<if $debugModeCustomFunction > 0>>
-			<br>
-			<<textarea "_customEvalCode" "">>
-			<<link "Run Custom Function">>
-				<<if _customEvalCode>>
-					<<if _customEvalCode.charAt(0) != "(" || $nextLink == ")">> /* second condition is only there for sanityCheck */
-						<<set _customEvalCode = "(" + _customEvalCode + ")">>
-					<</if>>
-					<<if typeof eval(_customEvalCode) === "function">>
-						<<run (eval(_customEvalCode))()>>
-					<</if>>
+<<if $ui != "start" && _Pass !== "Encyclopedia" && $debugMode > 0>>
+	<br><br>Debugging Tools<br> <<link "Display Variables">><<checkvars>><</link>>
+	<br> <<link "Display Changed Variables">>
+		<<set Config.history.maxStates = 2>> /* makes sure we store the current state so we can return to it */
+		<<goto "Variable Difference">>
+	<</link>>
+	
+	<br> <<link "Bug Report">><<bugreport>><</link>>
+	<<if $debugModeCustomFunction > 0>>
+		<br> <<textarea "_customEvalCode" "">>
+		<<link "Run Custom Function">>
+			<<if _customEvalCode>>
+				<<if _customEvalCode.charAt(0) != "(" || $nextLink == ")">> /* second condition is only there for sanityCheck */
+					<<set _customEvalCode = "(" + _customEvalCode + ")">>
 				<</if>>
-				<<goto _Pass>>
-			<</link>>
-		<</if>>
-		<br> <<link "Dump Game State">><<run App.Debug.dumpGameState()>><</link>>
+				<<if typeof eval(_customEvalCode) === "function">>
+					<<run (eval(_customEvalCode))()>>
+				<</if>>
+			<</if>>
+			<<goto _Pass>>
+		<</link>>
 	<</if>>
-
+	<br> <<link "Dump Game State">><<run App.Debug.dumpGameState()>><</link>>
 <</if>>
\ No newline at end of file
diff --git a/src/uncategorized/wardrobeUse.tw b/src/uncategorized/wardrobeUse.tw
index 7e5f34bbfcd92b05443562aa881e1de20eae2999..1f0eb75d7cc5d1e15c0c199cfa121cbc790aa264 100644
--- a/src/uncategorized/wardrobeUse.tw
+++ b/src/uncategorized/wardrobeUse.tw
@@ -407,7 +407,7 @@ Collar: ''$activeSlave.collar.''
 
 Torso accessory: ''$activeSlave.bellyAccessory.''
 <br>
-//<<waistDescription>><<pregnancyDescription>><<clothingCorsetDescription>><<CorsetPiercingDescription>>//
+//<<waistDescription>><<pregnancyDescription>><<clothingCorsetDescription>><<= App.Desc.piercing($activeSlave, "corset")>>//
 <<options $activeSlave.bellyAccessory>>
 	<<option "none" "None">>
 	<<option "a corset" "Tight corset">>
diff --git a/src/utility/descriptionWidgetsFlesh.tw b/src/utility/descriptionWidgetsFlesh.tw
index 8ee62efc68f8be5dcc1e3b59dfcbf03e11a48e83..ec8c905f7d02877f8c7daeba567df1d330f07993 100644
--- a/src/utility/descriptionWidgetsFlesh.tw
+++ b/src/utility/descriptionWidgetsFlesh.tw
@@ -294,12 +294,6 @@ $He has
 	<<print App.Desc.boobsExtra($activeSlave)>>
 <</widget>>
 
-
-<<widget "boobBrandDescription">>
-	<<print App.Desc.boobsBrand($activeSlave)>>
-<</widget>>
-
-
 <<widget "nipplesDescription">>
 	<<print App.Desc.nipples($activeSlave)>>
 <</widget>>
@@ -1197,9 +1191,7 @@ $He has
 
 <</if>>
 
-<<if $showBodyMods == 1>>
-	<<stampTatDescription>>
-<</if>>
+<<= App.Desc.mods($activeSlave, "lower back")>>
 
 $He's got a
 <<if $activeSlave.butt <= 1>>
@@ -1398,9 +1390,7 @@ $He's got a
 	<</if>>
 <</if>>
 
-<<if $showBodyMods == 1>>
-	<<buttTatDescription>>
-<</if>>
+<<= App.Desc.mods($activeSlave, "buttock")>>
 
 <</widget>>
 
@@ -1480,10 +1470,7 @@ $He's got a
 
 <<buttplugDescription>>
 
-<<if $showBodyMods == 1>>
-	<<anusPiercingDescription>>
-	<<anusTatDescription>>
-<</if>>
+<<= App.Desc.mods($activeSlave, "anus")>>
 
 <<if $activeSlave.fuckdoll > 0>>
 	As a Fuckdoll,
@@ -3612,14 +3599,8 @@ $He's got a
 	<</if>>
 <</if>>
 
-<<if $activeSlave.fuckdoll == 0>>
-	<<if $showBodyMods == 1>>
-		<<dickTatDescription>>
-		<<dickPiercingDescription>>
-		<<= App.Desc.mods($activeSlave, "penis")>>
-		<<= App.Desc.mods($activeSlave, "testicle")>>
-	<</if>>
-<</if>>
+<<= App.Desc.mods($activeSlave, "dick")>>
+<<= App.Desc.mods($activeSlave, "testicle")>>
 
 <</widget>>
 
@@ -4021,13 +4002,8 @@ $He's got a
 	<</if>>
 <</if>>
 
-<<if $showBodyMods == 1>>
-	<<vaginaPiercingDescription>>
-	<<clitPiercingDescription>>
-	<<if $activeSlave.fuckdoll == 0>>
-		<<vaginaTatDescription>>
-	<</if>>
-<</if>>
+<<= App.Desc.mods($activeSlave, "vagina")>>
+<<= App.Desc.mods($activeSlave, "clit")>>
 
 <<if $activeSlave.fuckdoll == 0>>
 	<<if ($activeSlave.releaseRules == "permissive") || $activeSlave.releaseRules == "masturbation">>
@@ -4396,7 +4372,6 @@ $His
 <<if $showBodyMods == 1>>
 	<<if $activeSlave.fuckdoll == 0>>
 		<<makeupDescription>>
-		<<lipsTatDescription>>
 	<</if>>
 <</if>>
 
@@ -4520,11 +4495,8 @@ $He has
 	$He has no sense of taste, but this isn't immediately obvious just by looking at $his tongue.
 <</if>>
 
-<<if $showBodyMods == 1>>
-	<<lipsPiercingDescription>>
-	<<tonguePiercingDescription>>
-<</if>>
-
+<<= App.Desc.mods($activeSlave, "lips")>>
+<<= App.Desc.mods($activeSlave, "tongue")>>
 
 <<if $activeSlave.fuckdoll > 0>>
 	<<if $PC.dick == 1>>Sticking a dick<<else>>Sliding a dildo<</if>> into $his <<if $activeSlave.lips > 95>>facepussy<<else>>mouth insert<</if>>
diff --git a/src/utility/descriptionWidgetsStyle.tw b/src/utility/descriptionWidgetsStyle.tw
index 7cf0f56afbe28848596bc4a1a823dde6a4e590e5..7ea6398956cf10e1edccc7bf5280abf96496e6cb 100644
--- a/src/utility/descriptionWidgetsStyle.tw
+++ b/src/utility/descriptionWidgetsStyle.tw
@@ -877,7 +877,7 @@ $activeSlave.slaveName is
 		<<footwearDescription>>
 	<</if>>
 
-	<<chastityPiercingDescription>>
+	<<= App.Desc.piercing($activeSlave, "chastity")>>
 
 <<case "a Santa dress">>
 	made of red felt with white fur
@@ -4883,7 +4883,7 @@ $His
 		end at mid-calf, leaving $his feet bare except for a set of jeweled toe-rings.
 	<</switch>>
 
-	<<chastityPiercingDescription>>
+	<<= App.Desc.piercing($activeSlave, "chastity")>>
 
 <<default>>
 	<<switch $activeSlave.shoes>>
diff --git a/src/utility/descriptionWidgetsTattoos.tw b/src/utility/descriptionWidgetsTattoos.tw
index 3b578fee44000876bf3de45477468793951b6016..be380ebb67f407408ff9c1ed9fc8654e27fbdecd 100644
--- a/src/utility/descriptionWidgetsTattoos.tw
+++ b/src/utility/descriptionWidgetsTattoos.tw
@@ -44,7 +44,6 @@
 				$activeSlave.shouldersTat
 		<</switch>>
 	<</if>>
-	<<= App.Desc.mods($activeSlave, "shoulder")>>
 <</if>>
 <</widget>>
 
@@ -91,7 +90,6 @@
 				$activeSlave.lipsTat
 		<</switch>>
 	<</if>>
-	<<= App.Desc.mods($activeSlave, "lips")>>
 <</if>>
 <</widget>>
 
@@ -135,8 +133,6 @@
 				$activeSlave.boobsTat
 		<</switch>>
 	<</if>>
-	/* App.Desc.boobsBrand handles boobBrands */
-	/*<<= App.Desc.mods($activeSlave, "breast")>>*/
 <</if>>
 <</widget>>
 
@@ -224,10 +220,6 @@
 			$activeSlave.armsTat
 		<</switch>>
 	<</if>>
-	<<= App.Desc.mods($activeSlave, "upper arm")>>
-	<<= App.Desc.mods($activeSlave, "lower arm")>>
-	<<= App.Desc.mods($activeSlave, "hand")>>
-	<<= App.Desc.mods($activeSlave, "wrist")>>
 <</if>>
 <</widget>>
 
@@ -309,7 +301,6 @@
 			$activeSlave.backTat
 		<</switch>>
 	<</if>>
-	<<= App.Desc.mods($activeSlave, "back")>>
 <</if>>
 <</widget>>
 
@@ -359,7 +350,6 @@
 			$activeSlave.stampTat
 	<</switch>>
 	<</if>>
-	<<= App.Desc.mods($activeSlave, "lower back")>>
 <</if>>
 <</widget>>
 
@@ -424,7 +414,6 @@
 				$activeSlave.buttTat
 		<</switch>>
 	<</if>>
-<<= App.Desc.mods($activeSlave, "buttock")>>
 <</if>>
 <</widget>>
 
@@ -590,9 +579,6 @@
 			$activeSlave.anusTat
 	<</switch>>
 <</if>>
-/* Just in case someone makes these someday: */
-<<= App.Desc.mods($activeSlave, "anus")>>
-<<= App.Desc.mods($activeSlave, "asshole")>>
 <</widget>>
 
 <<widget "legsTatDescription">>
@@ -633,9 +619,5 @@
 			$activeSlave.legsTat
 		<</switch>>
 	<</if>>
-	<<= App.Desc.mods($activeSlave, "thigh")>>
-	<<= App.Desc.mods($activeSlave, "calf")>>
-	<<= App.Desc.mods($activeSlave, "ankle")>>
-	<<= App.Desc.mods($activeSlave, "foot")>>
 <</if>>
 <</widget>>