diff --git a/src/endWeek/saLongTermMentalEffects.js b/src/endWeek/saLongTermMentalEffects.js
index 44f9f2827b189dd53b4cc11354ac60b08fcbd0f2..fafd7a77f55c5b2dc8eccb0a8418731f141d943f 100644
--- a/src/endWeek/saLongTermMentalEffects.js
+++ b/src/endWeek/saLongTermMentalEffects.js
@@ -409,12 +409,7 @@ App.SlaveAssignment.longTermMentalEffects = (function() {
 						if (!hasAnyArms(slave)) {
 							t.push(`face between`);
 						} else {
-							if (hasBothArms(slave)) {
-								t.push(`hands`);
-							} else {
-								t.push(`hand`);
-							}
-							t.push(`on`);
+							t.push(`${(hasBothArms(slave)) ? `hands` : `hand`} on`);
 						}
 						t.push(`her breasts. ${He}'s now <span class="positive">more aroused by women.</span>`);
 					}
diff --git a/src/endWeek/saRules.js b/src/endWeek/saRules.js
index ee970e4645556a04413e51090bf09f0ce367a2f8..0b325131f894578811cd9dab3baee08ced124b1b 100644
--- a/src/endWeek/saRules.js
+++ b/src/endWeek/saRules.js
@@ -14,6 +14,7 @@ App.SlaveAssignment.rules = function(slave) {
 			He, His,
 			he, his, him, himself, girl, wife
 		} = getPronouns(slave);
+		const hands = (hasBothArms(slave)) ? `hands` : `hand`;
 		let wife2;
 		let milkResult;
 		let wardenFunTimes;
@@ -638,7 +639,7 @@ App.SlaveAssignment.rules = function(slave) {
 										if (!hasAnyArms(slave)) {
 											r.push(`imagination`);
 										} else {
-											r.push(`${(hasBothArms(slave)) ? `hands` : `hand`}.`);
+											r.push(`${hands}.`);
 										}
 										r.push(`and toys, but <span class="mediumaquamarine">understands you care about ${his} current health.</span>`);
 										slave.trust += 1;
@@ -1029,7 +1030,7 @@ App.SlaveAssignment.rules = function(slave) {
 					if (!hasAnyArms(slave)) {
 						r.push(`figurative`);
 					}
-					r.push(`${(hasBothArms(slave)) ? `hands` : `hand`}.`);
+					r.push(`${hands}.`);
 					slave.devotion += 1;
 					slave.trust += 1;
 					r.push(`${He} finds plenty of time to relax between ${his} duties, or during them, should ${his} company be requested.`);
@@ -1234,7 +1235,7 @@ App.SlaveAssignment.rules = function(slave) {
 					if (!hasAnyArms(slave)) {
 						r.push(`figurative`);
 					}
-					r.push(`${(hasBothArms(slave)) ? `hands` : `hand`}.`);
+					r.push(`${hands}.`);
 					slave.devotion += 1;
 					slave.trust += 1;
 
@@ -1428,7 +1429,7 @@ App.SlaveAssignment.rules = function(slave) {
 					if (!hasAnyArms(slave)) {
 						r.push(`figurative`);
 					}
-					r.push(`${(hasBothArms(slave)) ? `hands` : `hand`}. It also helps to offset the tiring nature of ${his} position.`);
+					r.push(`${hands}. It also helps to offset the tiring nature of ${his} position.`);
 					slave.devotion += 1;
 					slave.trust += 1;
 
diff --git a/src/js/birth/birth.js b/src/js/birth/birth.js
index c6639b6d0dbfd5bce96287efc11c7e57af0fa1e1..212e9128d9acc433718dac356a44ba3cd97b16cf 100644
--- a/src/js/birth/birth.js
+++ b/src/js/birth/birth.js
@@ -46,6 +46,7 @@ globalThis.birth = function(slave, {birthStorm = false, cSection = false} = {})
 		He, His,
 		he, his, him, himself, wife, girl
 	} = getPronouns(slave);
+	const hands = (hasBothArms(slave)) ? "hands" : "hand";
 	if (V.seeImages && V.seeReportImages) {
 		App.UI.DOM.appendNewElement("div", el, App.Art.SlaveArtElement(slave, 2), ["imageRef", "medImg"]);
 	}
@@ -2196,13 +2197,7 @@ globalThis.birth = function(slave, {birthStorm = false, cSection = false} = {})
 							if (random(1, 20) > suddenBirth) {
 								r.push(`${He} is helped back to ${his} bed and stripped before slipping into it. Instinctively, ${he} begins to push out ${firstText} baby. ${His} child is promptly taken and ${he} is encouraged to keep resting.`);
 								if (hasAnyArms(slave)) {
-									r.push(`${He} runs ${his}`);
-									if (hasBothArms(slave)) {
-										r.push(`hands`);
-									} else {
-										r.push(`hand`);
-									}
-									r.push(`across the still huge dome of ${his} middle; to`);
+									r.push(`${He} runs ${his} ${hands} across the still huge dome of ${his} middle; to`);
 								} else {
 									r.push(`To`);
 								}
@@ -2226,13 +2221,7 @@ globalThis.birth = function(slave, {birthStorm = false, cSection = false} = {})
 							if (random(1, 20) > suddenBirth) {
 								r.push(`${He} returns to ${his} bed and strips before slipping into it. Instinctively, ${he} begins to push out ${firstText} baby. ${His} child is promptly taken and ${he} is encouraged to keep resting.`);
 								if (hasAnyArms(slave)) {
-									r.push(`${He} runs ${his}`);
-									if (hasBothArms(slave)) {
-										r.push(`hands`);
-									} else {
-										r.push(`hand`);
-									}
-									r.push(`across the still huge dome of ${his} middle; to`);
+									r.push(`${He} runs ${his} ${hands} across the still huge dome of ${his} middle; to`);
 								} else {
 									r.push(`To`);
 								}
@@ -3866,13 +3855,7 @@ globalThis.birth = function(slave, {birthStorm = false, cSection = false} = {})
 							if (random(1, 20) > suddenBirth) {
 								r.push(`${He} is helped back to ${his} bed and stripped before slipping into it. Instinctively, ${he} begins to push out ${firstText} baby. ${His} child is promptly taken and ${he} is encouraged to keep resting.`);
 								if (hasAnyArms(slave)) {
-									r.push(`${He} runs ${his}`);
-									if (hasBothArms(slave)) {
-										r.push(`hands`);
-									} else {
-										r.push(`hand`);
-									}
-									r.push(`across the still huge dome of ${his} middle; to`);
+									r.push(`${He} runs ${his} ${hands} across the still huge dome of ${his} middle; to`);
 								} else {
 									r.push(`To`);
 								}
@@ -3896,13 +3879,7 @@ globalThis.birth = function(slave, {birthStorm = false, cSection = false} = {})
 							if (random(1, 20) > suddenBirth) {
 								r.push(`${He} returns to ${his} bed and strips before slipping into it. Instinctively, ${he} begins to push out ${firstText} baby. ${His} child is promptly taken and ${he} is encouraged to keep resting.`);
 								if (hasAnyArms(slave)) {
-									r.push(`${He} runs ${his}`);
-									if (hasBothArms(slave)) {
-										r.push(`hands`);
-									} else {
-										r.push(`hand`);
-									}
-									r.push(`across the still huge dome of ${his} middle; to`);
+									r.push(`${He} runs ${his} ${hands} across the still huge dome of ${his} middle; to`);
 								} else {
 									r.push(`To`);
 								}
@@ -3930,13 +3907,7 @@ globalThis.birth = function(slave, {birthStorm = false, cSection = false} = {})
 					if (random(1, 20) > suddenBirth) {
 						r.push(`${He} is helped back to ${his} bed and stripped before slipping into it. Instinctively, ${he} begins to push out ${firstText} baby. ${His} child is promptly taken and ${he} is encouraged to keep resting.`);
 						if (hasAnyArms(slave)) {
-							r.push(`${He} runs ${his}`);
-							if (hasBothArms(slave)) {
-								r.push(`hands`);
-							} else {
-								r.push(`hand`);
-							}
-							r.push(`across the still huge dome of ${his} middle; to`);
+							r.push(`${He} runs ${his} ${hands} across the still huge dome of ${his} middle; to`);
 						} else {
 							r.push(`To`);
 						}
@@ -3982,13 +3953,7 @@ globalThis.birth = function(slave, {birthStorm = false, cSection = false} = {})
 					if (random(1, 20) > suddenBirth) {
 						r.push(`${He} returns to ${his} bed and strips before slipping into it. Instinctively, ${he} begins to push out ${firstText} baby. ${His} child is promptly taken and ${he} is encouraged to keep resting.`);
 						if (hasAnyArms(slave)) {
-							r.push(`${He} runs ${his}`);
-							if (hasBothArms(slave)) {
-								r.push(`hands`);
-							} else {
-								r.push(`hand`);
-							}
-							r.push(`across the still huge dome of ${his} middle; to`);
+							r.push(`${He} runs ${his} ${hands} across the still huge dome of ${his} middle; to`);
 						} else {
 							r.push(`To`);
 						}
diff --git a/src/npc/descriptions/butt/butt.js b/src/npc/descriptions/butt/butt.js
index 53cc54a8b2146046838eacc6a9d23706334c7afe..b88c8ab6b7f49026ab457b7f56fe6bb0535550f5 100644
--- a/src/npc/descriptions/butt/butt.js
+++ b/src/npc/descriptions/butt/butt.js
@@ -10,6 +10,7 @@ App.Desc.butt = function(slave, {market, eventDescription} = {}) {
 	const {
 		he, him, his, girl, He, His
 	} = getPronouns(slave);
+	const hands = (hasBothArms(slave)) ? "hands" : "hand";
 	if (V.showClothing === 1 && !market) {
 		if (V.surgeryDescription === 0) {
 			switch (slave.clothes) {
@@ -1229,13 +1230,7 @@ App.Desc.butt = function(slave, {market, eventDescription} = {}) {
 						}
 						r.push(`to support them.`);
 					} else if (slave.muscles > 30) {
-						r.push(`${He} can barely manage to get to ${his} feet unaided, and usually walks with ${his}`);
-						if (hasBothArms(slave)) {
-							r.push(`hands`);
-						} else {
-							r.push(`hand`);
-						}
-						r.push(`sunk into ${his} buttcheeks to help take their weight.`);
+						r.push(`${He} can barely manage to get to ${his} feet unaided, and usually walks with ${his} ${hands} sunk into ${his} buttcheeks to help take their weight.`);
 					} else if (slave.muscles > 5) {
 						r.push(`${He} requires assistance to get to ${his} feet, and tries to rest ${his} huge cheeks on whatever nearby surfaces ${he} can.`);
 					} else {
@@ -1275,13 +1270,7 @@ App.Desc.butt = function(slave, {market, eventDescription} = {}) {
 						}
 						r.push(`to support them.`);
 					} else if (slave.muscles > 30) {
-						r.push(`${He} can barely manage to get to ${his} feet unaided, and usually walks with ${his}`);
-						if (hasBothArms(slave)) {
-							r.push(`hands`);
-						} else {
-							r.push(`hand`);
-						}
-						r.push(`sunk into ${his} buttcheeks to help take their weight.`);
+						r.push(`${He} can barely manage to get to ${his} feet unaided, and usually walks with ${his} ${hands} sunk into ${his} buttcheeks to help take their weight.`);
 					} else if (slave.muscles > 5) {
 						r.push(`${He} requires assistance to get to ${his} feet, and tries to rest ${his} huge cheeks on whatever nearby surfaces ${he} can.`);
 					} else {
@@ -1321,13 +1310,7 @@ App.Desc.butt = function(slave, {market, eventDescription} = {}) {
 						}
 						r.push(`to support them.`);
 					} else if (slave.muscles > 30) {
-						r.push(`${He} can barely manage to get to ${his} feet unaided, and usually walks with ${his}`);
-						if (hasBothArms(slave)) {
-							r.push(`hands`);
-						} else {
-							r.push(`hand`);
-						}
-						r.push(`sunk into ${his} buttcheeks to help take their weight.`);
+						r.push(`${He} can barely manage to get to ${his} feet unaided, and usually walks with ${his} ${hands} sunk into ${his} buttcheeks to help take their weight.`);
 					} else if (slave.muscles > 5) {
 						r.push(`${He} requires assistance to get to ${his} feet, and tries to rest ${his} huge cheeks on whatever nearby surfaces ${he} can.`);
 					} else {
diff --git a/src/npc/generate/newSlaveIntro.js b/src/npc/generate/newSlaveIntro.js
index 693c3ae82f69d19d12c7d0ee487ea8abbbf3c3b1..3f7d0824c726d0d05a091f64615590f44c489eee 100644
--- a/src/npc/generate/newSlaveIntro.js
+++ b/src/npc/generate/newSlaveIntro.js
@@ -14,6 +14,7 @@ App.UI.newSlaveIntro = function(slave, slave2, {tankBorn = false, momInterest =
 		His, He, his, him, he, girl, hers, himself, daughter
 	} = getPronouns(slave);
 	const {woman: womanP} = getPronouns(V.PC);
+	const hands = (hasBothArms(slave)) ? "hands" : "hand";
 
 	const el = new DocumentFragment();
 	let r;
@@ -1317,8 +1318,7 @@ App.UI.newSlaveIntro = function(slave, slave2, {tankBorn = false, momInterest =
 								r.push(`sees ${himself}`);
 							} else {
 								if (hasAnyArms(slave)) {
-									r.push(`tenderly uses ${his} hand${hasBothArms(slave) ? 's' : ''}`);
-									r.push(`and finds ${himself}`);
+									r.push(`tenderly uses ${his} ${hands} and finds ${himself}`);
 								} else {
 									r.push(`stoically waits while you vividly describe ${his} new appearance. One`);
 								}
@@ -2102,7 +2102,8 @@ App.UI.newSlaveIntro = function(slave, slave2, {tankBorn = false, momInterest =
 					linkName: `Force-feed ${him}`,
 					result(slave) {
 						const r = [];
-						r.push(`${He} is much too thin and seems to shirk any offered food, but there is an easy solution to that. If ${he} refuses to eat, ${he} can be made to. Pulling the reluctant slave to the feeders, binding ${him} tightly to a chair, and attaching a hose to the slave food nozzle, you give ${him} a choice; suck the hose willingly or have it forced down ${his} throat. ${He} glares defiantly and keeps ${his} mouth firmly shut. You clamp down on ${his} nose, inevitably forcing ${him} to open ${his} mouth to breath. In that moment, you shove the hose in and down ${his} throat, carefully directing it down into ${his} stomach. ${He} gags as you turn on the flow, ${his} eyes filling with tears as ${he} feels the warm food travel down the tube and into ${his} stomach. ${He} sobs as ${his} belly steadily swells with unwelcome sustenance, ${his} eyes pleading with you, desperate to let you know ${he}'ll be good. You ignore ${him}, letting ${him} fill until ${his} belly is noticeably distended compared to ${his} thin frame. Once you feel ${he} has had enough, you pull the hose from ${his} gut, spraying ${his} face with food in the process, and tell ${him} it will go right back in if ${he} doesn't keep it all down. ${He} <span class="gold">nods fearfully,</span> anything to not go through that again. ${He} hobbles away once freed, one hand covering ${his} retching mouth and the other clasping ${his} <span class="mediumorchid">hated, food bloated middle.</span>`);
+						r.push(`${He} is much too thin and seems to shirk any offered food, but there is an easy solution to that. If ${he} refuses to eat, ${he} can be made to. Pulling the reluctant slave to the feeders, binding ${him} tightly to a chair, and attaching a hose to the slave food nozzle, you give ${him} a choice; suck the hose willingly or have it forced down ${his} throat. ${He} glares defiantly and keeps ${his} mouth firmly shut. You clamp down on ${his} nose, inevitably forcing ${him} to open ${his} mouth to breath. In that moment, you shove the hose in and down ${his} throat, carefully directing it down into ${his} stomach. ${He} gags as you turn on the flow, ${his} eyes filling with tears as ${he} feels the warm food travel down the tube and into ${his} stomach. ${He} sobs as ${his} belly steadily swells with unwelcome sustenance, ${his} eyes pleading with you, desperate to let you know ${he}'ll be good. You ignore ${him}, letting ${him} fill until ${his} belly is noticeably distended compared to ${his} thin frame. Once you feel ${he} has had enough, you pull the hose from ${his} gut, spraying ${his} face with food in the process, and tell ${him} it will go right back in if ${he} doesn't keep it all down. ${He} <span class="gold">nods fearfully,</span> anything to not go through that again. ${He} hobbles away once freed,`);
+						r.push(`one hand covering ${his} retching mouth and the other clasping ${his} <span class="mediumorchid">hated, food bloated middle.</span>`); //TODO: revise for hands
 						slave.devotion -= 10;
 						slave.trust -= 10;
 						return r.join(" ");
@@ -3602,7 +3603,7 @@ App.UI.newSlaveIntro = function(slave, slave2, {tankBorn = false, momInterest =
 									}
 									r.push(`${He} tries to squirm away from the moist spot growing under ${his} cheek, but you reveal your nipple and carefully direct ${his} mouth over it.`);
 									if (slave.fetish === "pregnancy") {
-										r.push(`Slowly ${he} begins to suckle from your swollen breast. You gently brush ${his} head as you try to hold back your pleasure — a wasted effort, as a hand sneaks its way to your`);
+										r.push(`Slowly ${he} begins to suckle from your swollen breast. You gently brush ${his} head as you try to hold back your pleasure — a wasted effort, as a hand sneaks its way to your`); // TODO: handness
 										if (V.PC.dick !== 0) {
 											r.push(`growing erection and enthusiastically begins pumping away.`);
 										} else {
@@ -4069,11 +4070,7 @@ App.UI.newSlaveIntro = function(slave, slave2, {tankBorn = false, momInterest =
 							const r = [];
 							r.push(`${He}'s not a virgin anywhere, so you'll have to go more extreme to provide a properly introductory level of sexual torture equivalent to defloration. You tie your new slave down on`);
 							if (hasAnyArms(slave)) {
-								if (hasBothArms(slave)) {
-									r.push(`hands`);
-								} else {
-									r.push(`hand`);
-								}
+								r.push(hands);
 								if (hasAnyLegs(slave)) {
 									r.push(`and`);
 								}
@@ -4115,11 +4112,7 @@ App.UI.newSlaveIntro = function(slave, slave2, {tankBorn = false, momInterest =
 							const r = [];
 							r.push(`${He}'s not an anal virgin, so you'll have to go more extreme to provide an introductory level of sexual torture equivalent to defloration. You tie your new slave down on`);
 							if (hasAnyArms(slave)) {
-								if (hasBothArms(slave)) {
-									r.push(`hands`);
-								} else {
-									r.push(`hand`);
-								}
+								r.push(hands);
 								if (hasAnyLegs(slave)) {
 									r.push(`and`);
 								}
@@ -4810,7 +4803,7 @@ App.UI.newSlaveIntro = function(slave, slave2, {tankBorn = false, momInterest =
 								const r = [];
 								r.push(`You escort ${him} to the remote surgery, strap ${him} in, and put ${him} under. When ${he} awakes, ${he} can't `);
 								if (hasAnyArms(slave)) {
-									r.push(`keep ${his} ${(hasBothArms(slave)) ? `hands` : `hand`} off`);
+									r.push(`keep ${his} ${hands} off`);
 								} else {
 									r.push(`stop shaking around`);
 								}
@@ -4837,7 +4830,7 @@ App.UI.newSlaveIntro = function(slave, slave2, {tankBorn = false, momInterest =
 								const r = [];
 								r.push(`You escort ${him} to the remote surgery, strap ${him} in, and put ${him} under. When ${he} awakes, ${he} can't `);
 								if (hasAnyArms(slave)) {
-									r.push(`keep ${his} ${(hasBothArms(slave)) ? `hands` : `hand`} off`);
+									r.push(`keep ${his} ${hands} off`);
 								} else {
 									r.push(`stop shaking around`);
 								}
@@ -4871,7 +4864,7 @@ App.UI.newSlaveIntro = function(slave, slave2, {tankBorn = false, momInterest =
 								const r = [];
 								r.push(`You escort ${him} to the remote surgery, strap ${him} in, and put ${him} under. When ${he} awakes, ${he} can't `);
 								if (hasAnyArms(slave)) {
-									r.push(`keep ${his} ${(hasBothArms(slave)) ? `hands` : `hand`} off`);
+									r.push(`keep ${his} ${hands} off`);
 								} else {
 									r.push(`stop shaking around`);
 								}
@@ -4899,7 +4892,7 @@ App.UI.newSlaveIntro = function(slave, slave2, {tankBorn = false, momInterest =
 								const r = [];
 								r.push(`You escort ${him} to the remote surgery, strap ${him} in, and put ${him} under. When ${he} awakes, ${he} can't `);
 								if (hasAnyArms(slave)) {
-									r.push(`keep ${his} ${(hasBothArms(slave)) ? `hands` : `hand`} off`);
+									r.push(`keep ${his} ${hands} off`);
 								} else {
 									r.push(`stop shaking around`);
 								}
@@ -5007,7 +5000,7 @@ App.UI.newSlaveIntro = function(slave, slave2, {tankBorn = false, momInterest =
 							const r = [];
 							r.push(`You escort ${him} to the remote surgery, strap ${him} in, and put ${him} under. When ${he} awakes, ${he} can't `);
 							if (hasAnyArms(slave)) {
-								r.push(`keep ${his} ${(hasBothArms(slave)) ? `hands` : `hand`} off`);
+								r.push(`keep ${his} ${hands} off`);
 							} else {
 								r.push(`stop shaking around`);
 							}
@@ -5167,7 +5160,7 @@ App.UI.newSlaveIntro = function(slave, slave2, {tankBorn = false, momInterest =
 								const r = [];
 								r.push(`You escort ${him} to the remote surgery, strap ${him} in, and put ${him} under. When ${he} awakes, ${he} can't `);
 								if (hasAnyArms(slave)) {
-									r.push(`keep ${his} ${(hasBothArms(slave)) ? `hands` : `hand`} off`);
+									r.push(`keep ${his} ${hands} off`);
 								} else {
 									r.push(`stop shaking around`);
 								}
@@ -5193,7 +5186,7 @@ App.UI.newSlaveIntro = function(slave, slave2, {tankBorn = false, momInterest =
 								const r = [];
 								r.push(`You escort ${him} to the remote surgery, strap ${him} in, and put ${him} under. When ${he} awakes, ${he} can't `);
 								if (hasAnyArms(slave)) {
-									r.push(`keep ${his} ${(hasBothArms(slave)) ? `hands` : `hand`} off`);
+									r.push(`keep ${his} ${hands} off`);
 								} else {
 									r.push(`stop shaking around`);
 								}
@@ -5280,7 +5273,7 @@ App.UI.newSlaveIntro = function(slave, slave2, {tankBorn = false, momInterest =
 								const r = [];
 								r.push(`You escort ${him} to the remote surgery, strap ${him} in, and put ${him} under. When ${he} awakes, ${he} can't `);
 								if (hasAnyArms(slave)) {
-									r.push(`keep ${his} ${(hasBothArms(slave)) ? `hands` : `hand`} off`);
+									r.push(`keep ${his} ${hands} off`);
 								} else {
 									r.push(`stop shaking around`);
 								}
@@ -5307,7 +5300,7 @@ App.UI.newSlaveIntro = function(slave, slave2, {tankBorn = false, momInterest =
 								const r = [];
 								r.push(`You escort ${him} to the remote surgery, strap ${him} in, and put ${him} under. When ${he} awakes, ${he} can't `);
 								if (hasAnyArms(slave)) {
-									r.push(`keep ${his} ${(hasBothArms(slave)) ? `hands` : `hand`} off`);
+									r.push(`keep ${his} ${hands} off`);
 								} else {
 									r.push(`stop shaking around`);
 								}
@@ -5333,7 +5326,7 @@ App.UI.newSlaveIntro = function(slave, slave2, {tankBorn = false, momInterest =
 								const r = [];
 								r.push(`You escort ${him} to the remote surgery, strap ${him} in, and put ${him} under. When ${he} awakes, ${he} can't `);
 								if (hasAnyArms(slave)) {
-									r.push(`keep ${his} ${(hasBothArms(slave)) ? `hands` : `hand`} off`);
+									r.push(`keep ${his} ${hands} off`);
 								} else {
 									r.push(`stop shaking around`);
 								}