diff --git a/src/gui/css/mainStyleSheet.css b/src/gui/css/mainStyleSheet.css
index e380ff8791f1bc0c60203b6c2562700912828939..a48a978db6fed407fe344251cfd7515804ac7854 100644
--- a/src/gui/css/mainStyleSheet.css
+++ b/src/gui/css/mainStyleSheet.css
@@ -351,6 +351,11 @@ div.double-choices, p.double-choices {
 	text-decoration-color: white;
 }
 
+.slave-name-simple {
+	color: pink;
+	font-weight: bold;
+}
+
 .name {
 	font-weight: bold;
 }
diff --git a/src/npc/descriptions/name.js b/src/npc/descriptions/name.js
new file mode 100644
index 0000000000000000000000000000000000000000..7967f98bdb7c7e61e5c17950bb362ebed43ba516
--- /dev/null
+++ b/src/npc/descriptions/name.js
@@ -0,0 +1,90 @@
+/**
+ * @param {App.Entity.SlaveState} slave
+ * @returns {string}
+ */
+App.Desc.name = function(slave) {
+	const r = [];
+	const {
+		he, his, He
+	} = getPronouns(slave);
+	if (slave.slaveName !== slave.birthName || slave.slaveSurname !== slave.birthSurname) {
+		let nameloss = 0;
+		if (slave.fuckdoll === 0) {
+			if (slave.slaveName !== slave.birthName && slave.slaveSurname !== slave.birthSurname) {
+				r.push(`${SlaveFullName(slave)} is not ${his} original full name;`);
+				if (slave.birthName === "" || slave.birthSurname === "") {
+					r.push(`whatever it was, however, has been lost forever.`);
+					nameloss = 1;
+				}
+			} else if (slave.slaveName !== slave.birthName) {
+				r.push(`${slave.slaveName} is not ${his} original given name;`);
+				if (slave.birthName === "") {
+					r.push(`whatever it was, however, has been lost forever.`);
+					nameloss = 1;
+				}
+			} else if (slave.slaveSurname !== slave.birthSurname) {
+				if (slave.slaveSurname === 0 && slave.birthSurname === "") {
+					r.push(`${He} once had a surname; whatever it was, however, has been lost forever.`);
+					nameloss = 1;
+				} else if (slave.slaveSurname !== 0) {
+					r.push(`${slave.slaveSurname} is not ${his} original surname;`);
+					if (slave.birthSurname === "") {
+						r.push(`whatever it was, however, has been lost forever.`);
+						nameloss = 1;
+					}
+				} else {
+					nameloss = 1;
+				}
+			}
+			if (slave.birthName !== "" || slave.birthSurname !== "") {
+				if (nameloss === 1) {
+					r.push(`${He}`);
+				} else {
+					r.push(`${he}`);
+				}
+				if (slave.devotion > 95) {
+					r.push(`adores ${his} slave name and affects to have forgotten that ${he} was ever called`);
+				} else if (slave.devotion > 50) {
+					r.push(`uses ${his} slave name automatically and gives no sign that ${he} was ever called`);
+				} else if (slave.devotion > 20) {
+					r.push(`uses ${his} slave name despite once being known as`);
+				} else if (slave.devotion >= -20) {
+					r.push(`uses ${his} slave name hesitantly since ${he} was once called`);
+				} else if (slave.devotion >= -50) {
+					r.push(`uses ${his} slave name with resentment since ${he} prefers ${his} original name,`);
+				} else {
+					r.push(`uses ${his} slave name only when constantly punished, since ${he} feels ${his} real name is`);
+				}
+				if (slave.slaveName !== slave.birthName && slave.slaveSurname !== slave.birthSurname) {
+					r.push(`${SlaveFullBirthName(slave)}.`);
+				} else if (slave.slaveName !== slave.birthName) {
+					if (slave.slaveName.endsWith(slave.birthName)) {
+						r.push(`just plain`);
+					}
+					r.push(`${slave.birthName}.`);
+				} else if (slave.slaveSurname !== slave.birthSurname) {
+					r.push(`${slave.birthSurname}.`);
+				}
+			} if (slave.slaveSurname === 0) {
+				r.push(`${He} has no surname as a slave, which ${he}`);
+				if (slave.devotion > 95) {
+					r.push(`loves.`);
+				} else if (slave.devotion > 50) {
+					r.push(`likes.`);
+				} else if (slave.devotion > 20) {
+					r.push(`accepts.`);
+				} else if (slave.devotion >= -20) {
+					r.push(`tolerates.`);
+				} else if (slave.devotion >= -50) {
+					r.push(`resents.`);
+				} else {
+					r.push(`hates.`);
+				}
+			}
+		} else {
+			r.push(`${SlaveFullName(slave)} is not ${his} original name: ${he} was once called ${SlaveFullBirthName(slave)}.`);
+		}
+	}
+
+	return r.join(" ");
+};
diff --git a/src/npc/descriptions/sceneIntro.js b/src/npc/descriptions/sceneIntro.js
new file mode 100644
index 0000000000000000000000000000000000000000..2658cd9f3f6349fc7adf4f422d909339236e824a
--- /dev/null
+++ b/src/npc/descriptions/sceneIntro.js
@@ -0,0 +1,297 @@
+/**
+ * @param {App.Entity.SlaveState} slave
+ * @returns {string}
+ */
+App.Desc.sceneIntro = function(slave) {
+	const r = [];
+	const {
+		he, him, his, He, His, himself
+	} = getPronouns(slave);
+
+	if (V.eventDescription === 1) {
+		r.push(`${He} is currently involved in an event, but is assigned to ${slave.assignment}.`);
+		if (slave.assignment === "be a subordinate slave") {
+			let lsd = V.slaveIndices[slave.subTarget];
+			if (lsd) {
+				r.push(`${He} has been ordered to serve <span class="slave-name-simple">${SlaveFullName(V.slaves[_lsd])}</span> specifically.`);
+			}
+		}
+	} else if (V.ui !== "start" && V.saleDescription !== 1) {
+		r.push(inspectionIntro());
+		if (slave.sentence > 0) {
+			r.push(sentence());
+		}
+		if (slave.fuckdoll === 0) {
+			if (slave.voice !== 0) {
+				r.push(voice());
+			}
+		}
+		r.push(relationship());
+		if (slave.fuckdoll === 0) {
+			r.push(sleepLoc());
+		}
+	}
+	return r.join(" ");
+
+	function inspectionIntro() {
+		const r = [];
+		if (slave.fuckdoll > 0) {
+			r.push(`You order another slave to bring ${him} before your desk so you can inspect ${him}.`);
+		} else if ((slave.assignment === "work in the dairy") && (V.dairyRestraintsSetting > 1)) {
+			r.push(`You go down to ${V.dairyName} to inspect ${his} heaving body.`);
+		} else if (slave.assignment === "be your agent") {
+			r.push(`You place a call to`);
+			let agentLocation = `${his} current location`;
+			for (let _i = 0; _i < V.arcologies.length; _i++) {
+				if (V.arcologies[_i].leaderID === slave.ID) {
+					agentLocation = V.arcologies[_i].name;
+					break;
+				}
+			}
+			r.push(`${agentLocation}, and ${he} instantly appears on camera.`);
+		} else {
+			r.push(`${He} comes to you for an inspection`);
+			switch (slave.assignment) {
+				case "whore":
+					r.push(`between customers.`);
+					break;
+				case "serve the public":
+					r.push(`from where ${he} was offering ${him}self publicly.`);
+					break;
+				case "work a glory hole":
+					r.push(`straight from confinement in a glory hole.`);
+					break;
+				case "get milked":
+					r.push(`between milkings.`);
+					break;
+				case "work as a farmhand":
+					r.push(`from where ${he} was taking care of crops and animals.`);
+					break;
+				case "rest":
+					r.push(`from where ${he} was resting.`);
+					break;
+				case "work as a nanny":
+					r.push(`from where ${he} was`);
+					if (V.nurseryBabies === 1) {
+						r.push(`taking care of a child.`);
+					} else if (V.nurseryBabies > 0) {
+						r.push(`taking care of children.`);
+					} else {
+						r.push(`keeping ${V.nurseryName} clean.`);
+					}
+					break;
+				case "please you":
+					r.push(`from where ${he} was offering ${himself} to you.`);
+					break;
+				case "be a subordinate slave":
+					if (slave.subTarget === -1) {
+						r.push(`from where ${he} was resting after ${his} latest baby-making session.`);
+					} else {
+						r.push(`straight from orally servicing another slave.`);
+					}
+					break;
+				case "be a servant":
+					r.push(`straight from bathing another slave.`);
+					break;
+				case "train slaves":
+					r.push(`between slave training contracts.`);
+					break;
+				case "stay confined":
+					r.push(`straight from ${his} confinement.`);
+					break;
+				case "guard you":
+					r.push(`armed and alert.`);
+					break;
+				case "recruit girls":
+					if (V.recruiterTarget !== "other arcologies") {
+						r.push(`after ${he} finishes cybering with a prospective recruit.`);
+					} else {
+						if (V.arcologies[0].influenceTarget === -1) {
+							r.push(`right away, since you haven't decided on an arcology to target for cultural influence, leaving ${him} with nothing to do.`);
+						} else {
+							r.push(`from where ${he} was resting after ${his} latest sexually exhausting visit to`);
+							for (let i = 0; i < V.arcologies.length; i++) {
+								if (V.arcologies[i].direction === V.arcologies[0].influenceTarget) {
+									r.push(`${V.arcologies[i].name}.`);
+									break;
+								}
+							}
+						}
+					}
+					break;
+				case "be your Head Girl":
+					r.push(`with updates on your other slaves ready for your review.`);
+					break;
+				default:
+					r.push(`as quickly as ${he} can.`);
+			}
+		}
+		return r.join(" ");
+	}
+
+	function sentence() {
+		const r = [];
+
+		if (slave.assignment === "work a glory hole") {
+			r.push(`${His} sentence lasts another`);
+			if (slave.sentence > 1) {
+				r.push(`${slave.sentence} weeks.`);
+			} else {
+				r.push(`week.`);
+			}
+		} else {
+			r.push(`${His} work assignment lasts another`);
+			if (slave.sentence > 1) {
+				r.push(`${slave.sentence} weeks.`);
+			} else {
+				r.push(`week.`);
+			}
+		}
+
+		return r.join(" ");
+	}
+
+	function voice() {
+		const r = [];
+
+		if (slave.rules.speech === "restrictive") {
+			r.push(`${He} is not allowed to speak unless spoken to, but when allowed, ${he} speaks in a`);
+		} else {
+			r.push(`${He} is allowed to ask questions, and when ${he} speaks, ${he} does so in a`);
+		}
+		if (slave.voice === 1) {
+			if (slave.voiceImplant < 0) {
+				r.push(`ridiculously deep, gravelly voice.`);
+			} else {
+				r.push(`deep, unfeminine voice.`);
+			}
+		} else if (slave.voice === 2) {
+			if (slave.voiceImplant !== 0) {
+				r.push(`slightly artificial feminine voice.`);
+			} else {
+				r.push(`pretty, feminine voice.`);
+			}
+		} else if (slave.voice === 3) {
+			if (slave.voiceImplant > 0) {
+				r.push(`ridiculously high, bubblegum voice.`);
+			} else {
+				r.push(`high, girly voice.`);
+			}
+		}
+
+		if (canTalk(slave, false)) {
+			r.push(App.Desc.accent(slave));
+		}
+
+		return r.join(" ");
+	}
+
+	function relationship() {
+		const r = [];
+		if (slave.relationship === -3) {
+			if (slave.fetish === "mindbroken") {
+				r.push(`${He} is <span class="relationship"> married to you,</span> not that it matters to ${his} broken mind; to ${him}, ${he} is a slave, nothing more.`);
+			} else if (slave.devotion + slave.trust >= 175) {
+				r.push(`${He} is <span class="relationship"> happily married to you,</span> though of course ${he} is still your slave; albeit a loving, devoted one.`);
+			} else if (slave.devotion < -20 && slave.trust > 20) {
+				r.push(`${He} is <span class="relationship"> reluctantly married to you,</span> though of course ${he} is still your slave.`);
+			} else if (slave.devotion < -20) {
+				r.push(`${He} is <span class="relationship"> forcibly married to you,</span> though of course ${he} is still your slave.`);
+			} else {
+				r.push(`${He} is <span class="relationship"> married to you,</span> though of course ${he} is still your slave.`);
+			}
+		} else if (slave.relationship === -1) {
+			r.push(`${He} is an <span class="relationship"> emotional slut,</span> happy to remain officially single and free to treat everyone equally.`);
+		} else if (slave.relationship === -2) {
+			r.push(`${He} is <span class="relationship"> emotionally bound to you;</span> ${his} feelings for you are comparable to those in a healthy, loving relationship.`);
+		} else if (slave.relationship !== 0) {
+			let lsd = V.slaveIndices[slave.relationshipTarget];
+			if (lsd) {
+				r.push(`${He} is`);
+				// TODO: update this with the new relationship rules
+				if (slave.relationship <= 1) {
+					r.push(`<span style="font-weight:bold" class="relationship">friends with ${SlaveFullName(V.slaves[lsd])};</span> the rules`);
+					if (slave.rules.relationship !== "restrictive") {
+						r.push(`encourage`);
+					} else {
+						r.push(`discourage`);
+					}
+					r.push(`their relationship.`);
+				} else if (slave.relationship <= 2) {
+					r.push(`<span style="font-weight:bold" class="relationship">best friends with ${SlaveFullName(V.slaves[lsd])};</span> the rules`);
+					if (slave.rules.relationship !== "restrictive") {
+						r.push(`encourage`);
+					} else {
+						r.push(`discourage`);
+					}
+					r.push(`their close relationship.`);
+				} else if (slave.relationship <= 3) {
+					r.push(`<span style="font-weight:bold" class="relationship">${SlaveFullName(V.slaves[lsd])}'s friend with benefits;</span> the rules`);
+					if (slave.rules.relationship === "permissive") {
+						r.push(`encourage`);
+					} else {
+						r.push(`discourage`);
+					}
+					r.push(`their sexual relationship.`);
+				} else if (slave.relationship <= 4) {
+					r.push(`<span style="font-weight:bold" class="relationship">${SlaveFullName(V.slaves[lsd])}'s lover;</span> the rules`);
+					if (slave.rules.relationship === "permissive") {
+						r.push(`encourage`);
+					} else {
+						r.push(`discourage`);
+					}
+					r.push(`their passionate relationship.`);
+				} else if (V.slaves[lsd].relationship > 4) {
+					r.push(`<span style="font-weight:bold" class="relationship">${SlaveFullName(V.slaves[lsd])}'s slave ${V.wife};</span> the rules`);
+					if (slave.rules.relationship === "permissive") {
+						r.push(`encourage`);
+					} else {
+						r.push(`discourage`);
+					}
+					r.push(`marital bliss.`);
+				}
+			}
+		} else if (slave.fuckdoll === 0) {
+			if (slave.rules.relationship === "restrictive") {
+				r.push(`The rules forbid ${him} from associating freely with other slaves.`);
+			} else if (slave.career === "a Futanari Sister") {
+				r.push(`The rules encourage ${him} to form friendships with other slaves, but ${he} seems disinclined to do so.${He}'s both friendly with them and eagerly sexual with them when allowed, but ${he} seems to be waiting for someone, deep down.`);
+			} else if (slave.rules.relationship === "just friends") {
+				r.push(`The rules encourage ${him} to form friendships with other slaves.`);
+			} else {
+				r.push(`The rules encourage ${him} to form relationships with other slaves.`);
+			}
+		}
+
+		return r.join(" ");
+	}
+
+	function sleepLoc() {
+		const r = [];
+
+		if (slave.ID === V.HeadGirl.ID && V.HGSuite === 1) {
+			r.push(`${He} lives in ${his} own suite within your penthouse,`);
+		} else if ((slave.ID === V.Bodyguard.ID) && (V.dojo > 1)) {
+			r.push(`${He} lives in ${his} own room within the armory,`);
+		} else if ((slave.assignment === "work in the dairy") && (V.dairyRestraintsSetting > 1)) {
+			r.push(`${He} sleeps attached to a milking machine,`);
+		} else if (slave.rules.living === "spare") {
+			r.push(`${He} sleeps on a bedroll,`);
+		} else if (slave.rules.living === "normal") {
+			r.push(`${He} sleeps on a cot,`);
+		} else if (slave.relationship >= 4) {
+			r.push(`${He} has ${his} own room, which ${he} shares with ${his}`);
+			if (slave.relationship === 5) {
+				r.push(getPronouns(slave).wife);
+			} else {
+				r.push(`${getPronouns(slave).girl}friend`);
+			}
+			r.push(`whenever they can manage it,`);
+		} else {
+			r.push(`${He} sleeps in ${his} own little room,`);
+		}
+		r.push(App.Desc.releaseDesc(slave));
+
+		return r.join(" ");
+	}
+};
diff --git a/src/uncategorized/longSlaveDescription.tw b/src/uncategorized/longSlaveDescription.tw
index 75fea3a756d7564cad0d2736d6fb01009f7641d0..d94d60c5a4c80811714c271b8b99d70a76058303 100644
--- a/src/uncategorized/longSlaveDescription.tw
+++ b/src/uncategorized/longSlaveDescription.tw
@@ -82,267 +82,9 @@ is
 	<</if>>
 <</if>>
 
-<<if $ui == "start">>
-<<elseif $saleDescription == 1>>
-<<elseif $eventDescription == 1>>
-	$He is currently involved in an event, but is assigned to $activeSlave.assignment.
-	<<if $activeSlave.assignment == "be a subordinate slave">>
-		<<set _lsd = $slaveIndices[$activeSlave.subTarget]>>
-		<<if def _lsd>>
-			$He has been ordered to serve <span style="font-weight:bold"><span class="pink"><<= SlaveFullName($slaves[_lsd])>></span></span> specifically.
-		<</if>>
-	<</if>>
-<<else>>
-
-	<<if $activeSlave.fuckdoll > 0>>
-		You order another slave to bring $him before your desk so you can inspect $him.
-	<<elseif ($activeSlave.assignment == "work in the dairy") && ($dairyRestraintsSetting > 1)>>
-		You go down to $dairyName to inspect $his heaving body.
-	<<elseif $activeSlave.assignment == "be your agent">>
-		You place a call to
-		<<set _agentLocation = "$his current location">>
-		<<for _i = 0; _i < $arcologies.length; _i++>>
-			<<if $arcologies[_i].leaderID == $activeSlave.ID>>
-				<<set _agentLocation = $arcologies[_i].name>>
-				<<break>>
-			<</if>>
-		<</for>>
-		<<print _agentLocation>>, and $he instantly appears on camera.
-	<<else>>
-		$He comes to you for an inspection
-		<<switch $activeSlave.assignment>>
-		<<case "whore">>
-			between customers.
-		<<case "serve the public">>
-			from where $he was offering $himself publicly.
-		<<case "work a glory hole">>
-			straight from confinement in a glory hole.
-		<<case "get milked">>
-			between milkings.
-		<<case "work as a farmhand">>
-			from where $he was taking care of crops and animals.
-		<<case "rest">>
-			from where $he was resting.
-		<<case "work as a nanny">>
-			from where $he was <<if $nurseryBabies > 0>>taking care of children<<else>>keeping $nurseryName clean<</if>>.
-		<<case "please you">>
-			from where $he was offering $himself to you.
-		<<case "be a subordinate slave">>
-			<<if $activeSlave.subTarget == -1>>
-				from where $he was resting after $his latest baby-making session.
-			<<else>>
-				straight from orally servicing another slave.
-			<</if>>
-		<<case "be a servant">>
-			straight from bathing another slave.
-		<<case "train slaves">>
-			between slave training contracts.
-		<<case "stay confined">>
-			straight from $his confinement.
-		<<case "guard you">>
-			armed and alert.
-		<<case "recruit girls">>
-			<<if $recruiterTarget != "other arcologies">>
-				after $he finishes cybering with a prospective recruit.
-			<<else>>
-				<<if $arcologies[0].influenceTarget == -1>>
-					right away, since you haven't decided on an arcology to target for cultural influence, leaving $him with nothing to do.
-				<<else>>
-					from where $he was resting after $his latest sexually exhausting visit to <<for $i = 0; $i < $arcologies.length; $i++>><<if $arcologies[$i].direction == $arcologies[0].influenceTarget>>$arcologies[$i].name<<break>><</if>><</for>>.
-				<</if>>
-			<</if>>
-		<<case "be your Head Girl">>
-			with updates on your other slaves ready for your review.
-		<<default>>
-			as quickly as $he can.
-		<</switch>>
-	<</if>>
-
-	<<if $activeSlave.sentence > 0>>
-		<<if $activeSlave.assignment == "work a glory hole">>
-			$His sentence lasts another <<if $activeSlave.sentence > 1>>$activeSlave.sentence weeks<<else>>week<</if>>.
-		<<else>>
-			$His work assignment lasts another <<if $activeSlave.sentence > 1>>$activeSlave.sentence weeks<<else>>week<</if>>.
-		<</if>>
-	<</if>>
-
-	<<if $activeSlave.fuckdoll == 0>>
-		<<if $activeSlave.voice != 0>>
-			<<if $activeSlave.rules.speech == "restrictive">>
-				$He is not allowed to speak unless spoken to, but when allowed, $he speaks in a
-			<<else>>
-				$He is allowed to ask questions, and when $he speaks, $he does so in a
-			<</if>>
-			<<if $activeSlave.voice == 1>>
-				<<if $activeSlave.voiceImplant < 0>>
-					ridiculously deep, gravelly voice.
-				<<else>>
-					deep, unfeminine voice.
-				<</if>>
-			<<elseif $activeSlave.voice == 2>>
-				<<if $activeSlave.voiceImplant != 0>>
-					slightly artificial feminine voice.
-				<<else>>
-					pretty, feminine voice.
-				<</if>>
-			<<elseif $activeSlave.voice == 3>>
-				<<if $activeSlave.voiceImplant > 0>>
-					ridiculously high, bubblegum voice.
-				<<else>>
-					high, girly voice.
-				<</if>>
-			<</if>>
-
-			<<if canTalk($activeSlave, false)>>
-				<<= App.Desc.accent($activeSlave)>>
-			<</if>>
-
-		<</if>>
-	<</if>>
-
-	<<if $activeSlave.relationship == -3>>
-		<<if $activeSlave.fetish == "mindbroken">>
-			$He is <span class="lightgreen">married to you,</span> not that it matters to $his broken mind; to $him, $he is a slave, nothing more.
-		<<elseif $activeSlave.devotion+$activeSlave.trust >= 175>>
-			$He is <span class="lightgreen">happily married to you,</span> though of course $he is still your slave; albeit a loving, devoted one.
-		<<elseif $activeSlave.devotion < -20 && $activeSlave.trust > 20>>
-			$He is <span class="lightgreen">reluctantly married to you,</span> though of course $he is still your slave.
-		<<elseif $activeSlave.devotion < -20>>
-			$He is <span class="lightgreen">forcibly married to you,</span> though of course $he is still your slave.
-		<<else>>
-			$He is <span class="lightgreen">married to you,</span> though of course $he is still your slave.
-		<</if>>
-	<<elseif $activeSlave.relationship == -1>>
-		$He is an <span class="lightgreen">emotional slut,</span> happy to remain officially single and free to treat everyone equally.
-	<<elseif $activeSlave.relationship == -2>>
-		$He is <span class="lightgreen">emotionally bound to you;</span> $his feelings for you are comparable to those in a healthy, loving relationship.
-	<<elseif $activeSlave.relationship != 0>>
-		<<set _lsd = $slaveIndices[$activeSlave.relationshipTarget]>>
-		<<if def _lsd>>
-			$He is
-			/* TODO: update this with the new relationship rules */
-			<<if $activeSlave.relationship <= 1>>
-				<span style="font-weight:bold" class="lightgreen">friends with <<= SlaveFullName($slaves[_lsd])>>;</span> the rules <<if $activeSlave.rules.relationship != "restrictive">>encourage<<else>> discourage<</if>> their relationship.
-			<<elseif $activeSlave.relationship <= 2>>
-				<span style="font-weight:bold" class="lightgreen">best friends with <<= SlaveFullName($slaves[_lsd])>>;</span> the rules <<if $activeSlave.rules.relationship != "restrictive">>encourage<<else>> discourage<</if>> their close relationship.
-			<<elseif $activeSlave.relationship <= 3>>
-				<span style="font-weight:bold" class="lightgreen"><<= SlaveFullName($slaves[_lsd])>>'s friend with benefits;</span> the rules <<if $activeSlave.rules.relationship == "permissive">>encourage<<else>> discourage<</if>> their sexual relationship.
-			<<elseif $activeSlave.relationship <= 4>>
-				<span style="font-weight:bold" class="lightgreen"><<= SlaveFullName($slaves[_lsd])>>'s lover;</span> the rules <<if $activeSlave.rules.relationship == "permissive">>encourage<<else>> discourage<</if>> their passionate relationship.
-			<<elseif $slaves[_lsd].relationship > 4>>
-				<span style="font-weight:bold" class="lightgreen"><<= SlaveFullName($slaves[_lsd])>>'s slave $wife;</span> the rules <<if $activeSlave.rules.relationship == "permissive">>encourage<<else>> discourage<</if>> marital bliss.
-			<</if>>
-		<</if>>
-	<<elseif $activeSlave.fuckdoll == 0>>
-		<<if $activeSlave.rules.relationship == "restrictive">>
-			The rules forbid $him from associating freely with other slaves.
-		<<elseif $activeSlave.career == "a Futanari Sister">>
-			The rules encourage $him to form friendships with other slaves, but $he seems disinclined to do so. $He's both friendly with them and eagerly sexual with them when allowed, but $he seems to be waiting for someone, deep down.
-		<<elseif $activeSlave.rules.relationship == "just friends">>
-			The rules encourage $him to form friendships with other slaves.
-		<<else>>
-			The rules encourage $him to form relationships with other slaves.
-		<</if>>
-	<</if>>
+<<= App.Desc.sceneIntro($activeSlave)>>
 
-	<<if $activeSlave.fuckdoll == 0>>
-		<<set _lover = getSlave($activeSlave.relationshipTarget)>>
-		<<if def _lover>>
-			<<setLocalPronouns _lover 2>>
-		<</if>>
-		<<if ($activeSlave.ID == $HeadGirl.ID) && ($HGSuite == 1)>>
-			$He lives in $his own suite within your penthouse,
-		<<elseif ($activeSlave.ID == $Bodyguard.ID) && ($dojo > 1)>>
-			$He lives in $his own room within the armory,
-		<<elseif ($activeSlave.assignment == "work in the dairy") && ($dairyRestraintsSetting > 1)>>
-			$He sleeps attached to a milking machine,
-		<<elseif $activeSlave.rules.living == "spare">>
-			$He sleeps on a bedroll,
-		<<elseif $activeSlave.rules.living == "normal">>
-			$He sleeps on a cot,
-		<<elseif $activeSlave.relationship >= 4>>
-			$He has $his own room, which $he shares with $his <<if $activeSlave.relationship == 5>>_wife2<<else>><<= _girl2>>friend<</if>> whenever they can manage it,
-		<<else>>
-			$He sleeps in $his own little room,
-		<</if>>
-		<<= App.Desc.releaseDesc($activeSlave)>>
-	<</if>>
-
-<</if>> /* CLOSES SALE AND EVENT RULES NONDISPLAY */
-
-<<if $activeSlave.slaveName != $activeSlave.birthName || $activeSlave.slaveSurname != $activeSlave.birthSurname>>
-	<<set _nameloss = 0>>
-	<<if $activeSlave.fuckdoll == 0>>
-		<<if $activeSlave.slaveName != $activeSlave.birthName && $activeSlave.slaveSurname != $activeSlave.birthSurname>>
-			<<= SlaveFullName($activeSlave)>> is not $his original full name;
-			<<if $activeSlave.birthName === "" || $activeSlave.birthSurname === "">>
-				whatever it was, however, has been lost forever.
-				<<set _nameloss = 1>>
-			<</if>>
-		<<elseif $activeSlave.slaveName != $activeSlave.birthName>>
-			$activeSlave.slaveName is not $his original given name;
-			<<if $activeSlave.birthName === "">>
-				whatever it was, however, has been lost forever.
-				<<set _nameloss = 1>>
-			<</if>>
-		<<elseif $activeSlave.slaveSurname != $activeSlave.birthSurname>>
-			<<if $activeSlave.slaveSurname === 0 && $activeSlave.birthSurname === "">>
-				$He once had a surname; whatever it was, however, has been lost forever.
-				<<set _nameloss = 1>>
-			<<elseif $activeSlave.slaveSurname !== 0>>
-				$activeSlave.slaveSurname is not $his original surname;
-				<<if $activeSlave.birthSurname === "">>
-					whatever it was, however, has been lost forever.
-					<<set _nameloss = 1>>
-				<</if>>
-			<<else>>
-				<<set _nameloss = 1>>
-			<</if>>
-		<</if>>
-		<<if $activeSlave.birthName !== "" || $activeSlave.birthSurname !== "">>
-			<<if _nameloss == 1>>
-				$He
-			<<else>>
-				$he
-			<</if>>
-			<<if $activeSlave.devotion > 95>>
-				adores $his slave name and affects to have forgotten that $he was ever called
-			<<elseif $activeSlave.devotion > 50>>
-				uses $his slave name automatically and gives no sign that $he was ever called
-			<<elseif $activeSlave.devotion > 20>>
-				uses $his slave name despite once being known as
-			<<elseif $activeSlave.devotion >= -20>>
-				uses $his slave name hesitantly since $he was once called
-			<<elseif $activeSlave.devotion >= -50>>
-				uses $his slave name with resentment since $he prefers $his original name,
-			<<else>>
-				uses $his slave name only when constantly punished, since $he feels $his real name is
-			<</if>>
-			<<if $activeSlave.slaveName !== $activeSlave.birthName && $activeSlave.slaveSurname !== $activeSlave.birthSurname>>
-				<<= SlaveFullBirthName($activeSlave)>>.
-			<<elseif $activeSlave.slaveName !== $activeSlave.birthName>>
-				<<if $activeSlave.slaveName.endsWith($activeSlave.birthName)>>
-					just plain
-				<</if>>
-				$activeSlave.birthName.
-			<<elseif $activeSlave.slaveSurname !== $activeSlave.birthSurname>>
-				$activeSlave.birthSurname.
-			<</if>>
-		<</if>>
-		<<if $activeSlave.slaveSurname == 0>>
-			$He has no surname as a slave, which $he
-			<<if $activeSlave.devotion > 95>>loves.
-			<<elseif $activeSlave.devotion > 50>>likes.
-			<<elseif $activeSlave.devotion > 20>>accepts.
-			<<elseif $activeSlave.devotion >= -20>>tolerates.
-			<<elseif $activeSlave.devotion >= -50>>resents.
-			<<else>>hates.
-			<</if>>
-		<</if>>
-	<<else>>
-		<<= SlaveFullName($activeSlave)>> is not $his original name: $he was once called <<= SlaveFullBirthName($activeSlave)>>.
-	<</if>>
-<</if>>
+<<= App.Desc.name($activeSlave)>>
 
 <<= App.Desc.ageAndHealth($activeSlave)>>