diff --git a/devNotes/legacy files/walkPast.txt b/devNotes/legacy files/walkPast.txt
index 2ed9627191f56779c216d03eeb219946307471fe..86815322cb783f7639119d665bc121098b7b60fd 100644
--- a/devNotes/legacy files/walkPast.txt	
+++ b/devNotes/legacy files/walkPast.txt	
@@ -3539,7 +3539,7 @@
 	<</switch>>
 	<<set _target = "FAnus">>
 <<elseif (_seed > 0)>>
-	<<faceDescription>>
+	<<= App.Desc.face($activeSlave)>>
 	<<mouthDescription>>
 	<<switch $activeSlave.collar>>
 	<<case "a Fuckdoll suit">>
diff --git a/src/interaction/main/walkPast.js b/src/interaction/main/walkPast.js
index 526a02da6d47a6b50d4e658be551a0e1acad1d78..635b1fcc947c9aa6e341094ae717daf55309d1ef 100644
--- a/src/interaction/main/walkPast.js
+++ b/src/interaction/main/walkPast.js
@@ -9139,8 +9139,8 @@ globalThis.walkPast = (function() {
 			He, His
 		} = getPronouns(slave);
 
-		t += `<<faceDescription>>`;
-		t += `<<mouthDescription>>`;
+		t += App.Desc.face(slave);
+		t += ` <<mouthDescription>>`;
 		switch (slave.collar) {
 			case "uncomfortable leather":
 				t += `${His} uncomfortable leather collar makes ${him} swallow and lick ${his} lips periodically, making it look like ${he}'s offering oral even though ${he}'s just trying to relieve the discomfort.`;
diff --git a/src/npc/descriptions/face.js b/src/npc/descriptions/face.js
new file mode 100644
index 0000000000000000000000000000000000000000..74b8fbcb24c4e57d972caaaa1f1abe7bdf8502de
--- /dev/null
+++ b/src/npc/descriptions/face.js
@@ -0,0 +1,201 @@
+App.Desc.face = function(slave) {
+	const r = [];
+	const {
+		he, him, his, hers, himself, boy, He, His
+	} = getPronouns(slave);
+
+	r.push(`${His}<span class="pink">face is`);
+
+	switch (slave.faceShape) {
+		case "masculine":
+			if (slave.face < -95) {
+				r.push(`so ugly and masculine that ${his} designation as a slave girl is a mockery.`);
+			} else if (slave.face < -40) {
+				r.push(`ugly and masculine, making ${him} a poor slave girl by appearance.`);
+			} else if (slave.face < -10) {
+				r.push(`unattractively masculine.`);
+			} else if ((slave.face <= 10)) {
+				r.push(`masculine, but not entirely unappealing.`);
+			} else if ((slave.face <= 40)) {
+				r.push(`attractively masculine.`);
+			} else if ((slave.face <= 95)) {
+				r.push(`quite handsome in a masculine way.`);
+			} else {
+				r.push(`the height of masculine handsomeness.`);
+			}
+			break;
+		case "androgynous":
+			if (slave.face < -95) {
+				r.push(`disturbingly androgynous and terribly ugly.`);
+			} else if (slave.face < -40) {
+				r.push(`ugly and androgynous; ${he} has neither masculine nor feminine appeal.`);
+			} else if (slave.face < -10) {
+				r.push(`strangely androgynous, and rather unattractive.`);
+			} else if ((slave.face <= 10)) {
+				r.push(`strangely androgynous.`);
+			} else if ((slave.face <= 40)) {
+				r.push(`androgynous, and attractive enough that this ambiguity is interesting.`);
+			} else if ((slave.face <= 95)) {
+				r.push(`gorgeously androgynous in a complex way that captures the eye.`);
+			} else {
+				r.push(`so gorgeously androgynous that ${he} tends to induce sexual confusion.`);
+			}
+			break;
+		case "cute":
+			if (slave.face < -95) {
+				r.push(`very ugly, yet somehow cute; ${he}'s so unattractive that ${he} inspires pity.`);
+			} else if (slave.face < -40) {
+				r.push(`ugly, but cute, with a pitiable appeal.`);
+			} else if (slave.face < -10) {
+				r.push(`not attractive, but is appealingly cute.`);
+			} else if ((slave.face <= 10)) {
+				r.push(`merely average, but is appealingly cute.`);
+			} else if ((slave.face <= 40)) {
+				r.push(`both attractive and appealingly cute.`);
+			} else if ((slave.face <= 95)) {
+				r.push(`beautiful, yet somehow also approachably cute.`);
+			} else {
+				r.push(`an impossibly perfect combination of beauty and girl-next-door cuteness.`);
+			}
+			break;
+		case "sensual":
+			if (slave.face < -95) {
+				r.push(`very ugly, yet naturally slutty, promising a decent fuck despite its appearance.`);
+			} else if (slave.face < -40) {
+				r.push(`ugly, but also slutty, promising a good fuck despite its appearance.`);
+			} else if (slave.face < -10) {
+				r.push(`not attractive, but it has a certain sensual appeal.`);
+			} else if ((slave.face <= 10)) {
+				r.push(`merely average, but undeniably sensual.`);
+			} else if ((slave.face <= 40)) {
+				r.push(`both attractive and naturally sultry.`);
+			} else if ((slave.face <= 95)) {
+				r.push(`both beautiful and sultry, bringing sex to mind naturally.`);
+			} else {
+				r.push(`very beautiful in a consummately sexual way.`);
+			}
+			break;
+		case "exotic":
+			if (slave.face < -95) {
+				r.push(`very ugly and unusual, a real tragedy in flesh.`);
+			} else if (slave.face < -40) {
+				r.push(`ugly and unusual, a real misfortune.`);
+			} else if (slave.face < -10) {
+				r.push(`unattractive, and distinctive in its unattractiveness.`);
+			} else if ((slave.face <= 10)) {
+				r.push(`quite average, but not uninteresting.`);
+			} else if ((slave.face <= 40)) {
+				r.push(`attractive in an exotic and interesting way.`);
+			} else if ((slave.face <= 95)) {
+				r.push(`exotic and beautiful, capable of catching the eye and keeping its gaze.`);
+			} else {
+				r.push(`very beautiful and exotic, almost to the point of alien fascination.`);
+			}
+			break;
+		default:
+			if (slave.face < -95) {
+				r.push(`very ugly.`);
+			} else if (slave.face < -40) {
+				r.push(`quite ugly.`);
+			} else if (slave.face < -10) {
+				r.push(`unattractive.`);
+			} else if ((slave.face <= 10)) {
+				r.push(`average and conventionally feminine.`);
+			} else if ((slave.face <= 40)) {
+				r.push(`conventionally attractive.`);
+			} else if ((slave.face <= 95)) {
+				r.push(`conventionally beautiful.`);
+			} else {
+				r.push(`the height of conventional feminine beauty.`);
+			}
+	}
+	r.push(`</span>`);
+	if (slave.weight > 190) {
+		r.push(`${His} face is quite fat with ample excess chins.`);
+	} else if (slave.weight > 160) {
+		r.push(`${His} face is round and plump with a trio of extra chins.`);
+	} else if (slave.weight > 130) {
+		r.push(`${His} face is chubby with an obvious second chin.`);
+	} else if (slave.weight > 97) {
+		r.push(`${His} face is soft with barely a second chin.`);
+	}
+	if (slave.fuckdoll > 0) {
+		r.push(`However,`);
+		if (slave.face < -1) {
+			r.push(`it's hard to see this past the suit, since its face is padded to make ${him} seem less ugly.`);
+		} else if (slave.face < 1) {
+			r.push(`it's hard to see this past the suit, since its face is shaped to make ${him} seem prettier.`);
+		} else {
+			r.push(`the suit obscures all but the shape of ${him} pretty face.`);
+		}
+	} else {
+		if (slave.markings === "beauty mark") {
+			if (slave.face < -95) {
+				r.push(`It bears a severely disfiguring, discolored mark.`);
+			} else if (slave.face < -40) {
+				r.push(`It bears a couple of unsightly moles.`);
+			} else if (slave.face < -10) {
+				r.push(`It bears an ugly mole.`);
+			} else if ((slave.face <= 10)) {
+				r.push(`${He} has a distinctive beauty mark.`);
+			} else if ((slave.face <= 40)) {
+				r.push(`${He} has a nice beauty mark.`);
+			} else if ((slave.face <= 95)) {
+				r.push(`${He} has a beauty mark that adds to ${his} distinctiveness.`);
+			} else {
+				r.push(`${He} has a beauty mark that makes ${him} really memorable.`);
+			}
+		}
+	}
+	if (slave.faceImplant > 5) {
+		r.push(`${He}'s`);
+		if (slave.faceImplant > 95) {
+			r.push(`had so much cosmetic surgery that ${his} face is located at the bottom of the uncanny valley `);
+			if (slave.face < -10) {
+				r.push(`in addition to its ugliness.`);
+			} else if (slave.face <= 10) {
+				r.push(`the only thing really distinctive about it.`);
+			} else {
+				r.push(`its attractiveness notwithstanding.`);
+			}
+		} else if (slave.faceImplant > 60) {
+			r.push(`obviously gotten a lot of facial cosmetic surgery.`);
+		} else if (slave.faceImplant > 30) {
+			r.push(`noticeably received facial cosmetic surgery.`);
+		} else {
+			r.push(`had some facial cosmetic surgery, though it's subtle.`);
+			if (V.PC.skill.medicine >= 100) {
+				r.push(`Someone without your knowledge might miss it entirely.`);
+			}
+		}
+		if (V.arcologies[0].FSBodyPurist !== "unset") {
+			if (slave.faceImplant > 30) {
+				r.push(`This is considered extremely tragic by a society that values bodily purity.`);
+			} else {
+				r.push(`Since society values bodily purity, even this subtlety affects ${his} attractiveness when it's noticed.`);
+			}
+		} else if (V.arcologies[0].FSTransformationFetishist !== "unset") {
+			if (slave.faceImplant > 30) {
+				r.push(`Your transformationist society doesn't think this `);
+				if (slave.face >= -10) {
+					r.push(`reduces ${his} attractiveness.`);
+				} else {
+					r.push(`makes ${him} uglier.`);
+				}
+			}
+		} else {
+			if (slave.faceImplant > 30) {
+				r.push(`The effect is enough to reduce ${his} attractiveness.`);
+			}
+		}
+	}
+	if (slave.smells === -1) {
+		r.push(`${He} has no sense of smell, but this isn't immediately obvious just by looking at ${his} nose.`);
+	}
+
+	if (V.showBodyMods === 1) {
+		if (slave.fuckdoll === 0) {
+			r.push(App.Desc.makeup(slave));
+		}
+	} return r.join(" ");
+};
diff --git a/src/uncategorized/longSlaveDescription.tw b/src/uncategorized/longSlaveDescription.tw
index 38dc7038d52e341a445b87f5e26ec3af8a5a542e..51233c1e9a446c653c07e44ff1be62b7861f7da8 100644
--- a/src/uncategorized/longSlaveDescription.tw
+++ b/src/uncategorized/longSlaveDescription.tw
@@ -1909,7 +1909,7 @@ $He is
 <</if>>
 
 <<hornDescription>>
-<<faceDescription>>
+<<= App.Desc.face($activeSlave)>>
 <<mouthDescription>>
 
 <<if ($showClothing == 1) && ($saleDescription == 0)>>
diff --git a/src/utility/descriptionWidgetsFlesh.tw b/src/utility/descriptionWidgetsFlesh.tw
index d9316270c9b24f99b0932f3cee4ae5f6b772dbd1..70b0c913b30420b43e619579764eaa1fd7c8b287 100644
--- a/src/utility/descriptionWidgetsFlesh.tw
+++ b/src/utility/descriptionWidgetsFlesh.tw
@@ -1,184 +1,5 @@
 :: flesh description widgets [widget nobr]
 
-<<widget "faceDescription">>
-
-$His
-@@.pink;face is
-<<switch $activeSlave.faceShape>>
-<<case "masculine">>
-	<<if $activeSlave.face < -95>>
-		so ugly and masculine that $his designation as a slave girl is a mockery.
-	<<elseif $activeSlave.face < -40>>
-		ugly and masculine, making $him a poor slave girl by appearance.
-	<<elseif $activeSlave.face < -10>>
-		unattractively masculine.
-	<<elseif ($activeSlave.face <= 10)>>
-		masculine, but not entirely unappealing.
-	<<elseif ($activeSlave.face <= 40)>>
-		attractively masculine.
-	<<elseif ($activeSlave.face <= 95)>>
-		quite handsome in a masculine way.
-	<<else>>
-		the height of masculine handsomeness.
-	<</if>>
-<<case "androgynous">>
-	<<if $activeSlave.face < -95>>
-		disturbingly androgynous and terribly ugly.
-	<<elseif $activeSlave.face < -40>>
-		ugly and androgynous; $he has neither masculine nor feminine appeal.
-	<<elseif $activeSlave.face < -10>>
-		strangely androgynous, and rather unattractive.
-	<<elseif ($activeSlave.face <= 10)>>
-		strangely androgynous.
-	<<elseif ($activeSlave.face <= 40)>>
-		androgynous, and attractive enough that this ambiguity is interesting.
-	<<elseif ($activeSlave.face <= 95)>>
-		gorgeously androgynous in a complex way that captures the eye.
-	<<else>>
-		so gorgeously androgynous that $he tends to induce sexual confusion.
-	<</if>>
-<<case "cute">>
-	<<if $activeSlave.face < -95>>
-		very ugly, yet somehow cute; $he's so unattractive that $he inspires pity.
-	<<elseif $activeSlave.face < -40>>
-		ugly, but cute, with a pitiable appeal.
-	<<elseif $activeSlave.face < -10>>
-		not attractive, but is appealingly cute.
-	<<elseif ($activeSlave.face <= 10)>>
-		merely average, but is appealingly cute.
-	<<elseif ($activeSlave.face <= 40)>>
-		both attractive and appealingly cute.
-	<<elseif ($activeSlave.face <= 95)>>
-		beautiful, yet somehow also approachably cute.
-	<<else>>
-		an impossibly perfect combination of beauty and girl-next-door cuteness.
-	<</if>>
-<<case "sensual">>
-	<<if $activeSlave.face < -95>>
-		very ugly, yet naturally slutty, promising a decent fuck despite its appearance.
-	<<elseif $activeSlave.face < -40>>
-		ugly, but also slutty, promising a good fuck despite its appearance.
-	<<elseif $activeSlave.face < -10>>
-		not attractive, but it has a certain sensual appeal.
-	<<elseif ($activeSlave.face <= 10)>>
-		merely average, but undeniably sensual.
-	<<elseif ($activeSlave.face <= 40)>>
-		both attractive and naturally sultry.
-	<<elseif ($activeSlave.face <= 95)>>
-		both beautiful and sultry, bringing sex to mind naturally.
-	<<else>>
-		very beautiful in a consummately sexual way.
-	<</if>>
-<<case "exotic">>
-	<<if $activeSlave.face < -95>>
-		very ugly and unusual, a real tragedy in flesh.
-	<<elseif $activeSlave.face < -40>>
-		ugly and unusual, a real misfortune.
-	<<elseif $activeSlave.face < -10>>
-		unattractive, and distinctive in its unattractiveness.
-	<<elseif ($activeSlave.face <= 10)>>
-		quite average, but not uninteresting.
-	<<elseif ($activeSlave.face <= 40)>>
-		attractive in an exotic and interesting way.
-	<<elseif ($activeSlave.face <= 95)>>
-		exotic and beautiful, capable of catching the eye and keeping its gaze.
-	<<else>>
-		very beautiful and exotic, almost to the point of alien fascination.
-	<</if>>
-<<default>>
-	<<if $activeSlave.face < -95>>
-		very ugly.
-	<<elseif $activeSlave.face < -40>>
-		quite ugly.
-	<<elseif $activeSlave.face < -10>>
-		unattractive.
-	<<elseif ($activeSlave.face <= 10)>>
-		average and conventionally feminine.
-	<<elseif ($activeSlave.face <= 40)>>
-		conventionally attractive.
-	<<elseif ($activeSlave.face <= 95)>>
-		conventionally beautiful.
-	<<else>>
-		the height of conventional feminine beauty.
-	<</if>>
-<</switch>>@@
-<<if $activeSlave.weight > 190>>
-	$His face is quite fat with ample excess chins.
-<<elseif $activeSlave.weight > 160>>
-	$His face is round and plump with a trio of extra chins.
-<<elseif $activeSlave.weight > 130>>
-	$His face is chubby with an obvious second chin.
-<<elseif $activeSlave.weight > 97>>
-	$His face is soft with barely a second chin.
-<</if>>
-<<if $activeSlave.fuckdoll > 0>>
-	However,
-	<<if $activeSlave.face < -1>>
-		it's hard to see this past the suit, since its face is padded to make $him seem less ugly.
-	<<elseif $activeSlave.face < 1>>
-		it's hard to see this past the suit, since its face is shaped to make $him seem prettier.
-	<<else>>
-		the suit obscures all but the shape of $him pretty face.
-	<</if>>
-<<else>>
-	<<if $activeSlave.markings == "beauty mark">>
-		<<if $activeSlave.face < -95>>
-			It bears a severely disfiguring, discolored mark.
-		<<elseif $activeSlave.face < -40>>
-			It bears a couple of unsightly moles.
-		<<elseif $activeSlave.face < -10>>
-			It bears an ugly mole.
-		<<elseif ($activeSlave.face <= 10)>>
-			$He has a distinctive beauty mark.
-		<<elseif ($activeSlave.face <= 40)>>
-			$He has a nice beauty mark.
-		<<elseif ($activeSlave.face <= 95)>>
-			$He has a beauty mark that adds to $his distinctiveness.
-		<<else>>
-			$He has a beauty mark that makes $him really memorable.
-		<</if>>
-	<</if>>
-<</if>>
-<<if $activeSlave.faceImplant > 5>>
-	$He's
-	<<if $activeSlave.faceImplant > 95>>
-		had so much cosmetic surgery that $his face is located at the bottom of the uncanny valley <<if $activeSlave.face < -10>>in addition to its ugliness<<elseif $activeSlave.face <= 10>>the only thing really distinctive about it<<else>>its attractiveness notwithstanding<</if>>.
-	<<elseif $activeSlave.faceImplant > 60>>
-		obviously gotten a lot of facial cosmetic surgery.
-	<<elseif $activeSlave.faceImplant > 30>>
-		noticeably received facial cosmetic surgery.
-	<<else>>
-		had some facial cosmetic surgery, though it's subtle.
-		<<if $PC.skill.medicine >= 100>>Someone without your knowledge might miss it entirely.<</if>>
-	<</if>>
-	<<if $arcologies[0].FSBodyPurist != "unset">>
-		<<if $activeSlave.faceImplant > 30>>
-			This is considered extremely tragic by a society that values bodily purity.
-		<<else>>
-			Since society values bodily purity, even this subtlety affects $his attractiveness when it's noticed.
-		<</if>>
-	<<elseif $arcologies[0].FSTransformationFetishist != "unset">>
-		<<if $activeSlave.faceImplant > 30>>
-			Your transformationist society doesn't think this <<if $activeSlave.face >= -10>>reduces $his attractiveness<<else>>makes $him uglier<</if>>.
-		<</if>>
-	<<else>>
-		<<if $activeSlave.faceImplant > 30>>
-			The effect is enough to reduce $his attractiveness.
-		<</if>>
-	<</if>>
-<</if>>
-<<if $activeSlave.smells == -1>>
-	$He has no sense of smell, but this isn't immediately obvious just by looking at $his nose.
-<</if>>
-
-<<if $showBodyMods == 1>>
-	<<if $activeSlave.fuckdoll == 0>>
-		<<= App.Desc.makeup($activeSlave)>>
-	<</if>>
-<</if>>
-
-<</widget>>
-
 <<widget "hornDescription">>
 	<<if $activeSlave.horn == "curved succubus horns">>
 		$He has