diff --git a/src/facilities/nursery/nursery.tw b/src/facilities/nursery/nursery.tw
index 8a8e1c90b640551a3caed55deb06cc24302cc534..f5fb7e793849e42e3dd4cf597c17fb4769fe7b9b 100644
--- a/src/facilities/nursery/nursery.tw
+++ b/src/facilities/nursery/nursery.tw
@@ -481,16 +481,16 @@ Target age for release: <<textbox "$targetAgeNursery" $targetAgeNursery "Nursery
 			<<set $cribs[_c].ID = $nIDNumber++>>
 		<</if>>
 		<<capture $cribs[_c]>>
-		<<if $activeChild.actualAge >= 3>>
-			<<link "$cribs[_c].slaveName" "Child Interact">>
+		<<if $activeChild.actualAge < 3>>
+			<<link "$cribs[_c].slaveName" "Infant Interact">>
 				<<set $activeChild = $cribs[_c], $activeChild.weeksLeft = ($targetAgeNursery * 52) - $activeChild.actualAge>>
 			<</link>>
-			<<= App.Facilities.Nursery.ChildSummary($activeChild)>>
+			<<= App.Facilities.Nursery.InfantSummary($activeChild)>>
 		<<else>>
-			<<link "$cribs[_c].slaveName" "Infant Interact">>
+			<<link "$cribs[_c].slaveName" "Child Interact">>
 				<<set $activeChild = $cribs[_c], $activeChild.weeksLeft = ($targetAgeNursery * 52) - $activeChild.actualAge>>
 			<</link>>
-			<<= App.Facilities.Nursery.InfantSummary($activeChild)>>
+			<<= App.Facilities.Nursery.ChildSummary($activeChild)>>
 		<</if>>
 		<br>
 		<</capture>>
diff --git a/src/facilities/nursery/nurseryWidgets.js b/src/facilities/nursery/nurseryWidgets.js
index 3a124b0b98ef267c18448659802a5b248cec3a52..eba5fe213a58a7b883fd35bc43ab38e9cf6f7815 100644
--- a/src/facilities/nursery/nurseryWidgets.js
+++ b/src/facilities/nursery/nurseryWidgets.js
@@ -1,3 +1,5 @@
+/* INFANTS */
+
 /**
  * @param {App.Entity.InfantState} child
  * @returns {string}
@@ -1247,57 +1249,21 @@ App.Facilities.Nursery.InfantSummary = function(child) {
 	 * @param {App.Entity.SlaveState} child
 	 */
 	function longIntelligence(child) {
-		const intelligence = child.intelligence + child.intelligenceImplant;
-		if (child.intelligenceImplant >= 30) {
-			if (intelligence >= 130) {
-				r += `<span class="deepskyblue">Genius${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
-			} else if (intelligence > 95) {
-				r += `<span class="deepskyblue">Brilliant, well educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
-			} else if (intelligence > 50) {
-				r += `<span class="deepskyblue">Very smart, well educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
-			} else if (intelligence > 15) {
-				r += `<span class="deepskyblue">Smart, well educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
-			} else if (intelligence >= -15) {
-				r += `Average intelligence, well educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}. `;
-			} else if (intelligence >= -50) {
-				r += `<span class="orangered">Slow, well educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
-			} else if (intelligence >= -95) {
-				r += `<span class="orangered">Very slow, well educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
-			} else {
-				r += `<span class="orangered">Moronic, well educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
-			}
-		} else if (child.intelligenceImplant >= 15) {
-			if (intelligence > 95) {
-				r += `<span class="deepskyblue">Brilliant, educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
-			} else if (intelligence > 50) {
-				r += `<span class="deepskyblue">Very smart, educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
-			} else if (intelligence > 15) {
-				r += `<span class="deepskyblue">Smart, educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
-			} else if (intelligence >= -15) {
-				r += `Average intelligence, educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}. `;
-			} else if (intelligence >= -50) {
-				r += `<span class="orangered">Slow, educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
-			} else if (intelligence >= -95) {
-				r += `<span class="orangered">Very slow, educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
-			} else {
-				r += `<span class="orangered">Moronic, educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
-			}
+		const intelligence = child.intelligence;
+		if (child.intelligence > 95) {
+			r += `<span class="deepskyblue">Likely to be brilliant${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
+		} else if (intelligence > 50) {
+			r += `<span class="deepskyblue">Likely to be very smart${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
+		} else if (intelligence > 15) {
+			r += `<span class="deepskyblue">Likely to be smart${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
+		} else if (intelligence >= -15) {
+			r += `Average intelligence${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}. `;
+		} else if (intelligence >= -50) {
+			r += `<span class="orangered">Likely to be slow${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
+		} else if (intelligence >= -95) {
+			r += `<span class="orangered">Likely to be very slow${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
 		} else {
-			if (child.intelligence > 95) {
-				r += `<span class="deepskyblue">Brilliant${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
-			} else if (intelligence > 50) {
-				r += `<span class="deepskyblue">Very smart${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
-			} else if (intelligence > 15) {
-				r += `<span class="deepskyblue">Smart${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
-			} else if (intelligence >= -15) {
-				r += `Average intelligence${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}. `;
-			} else if (intelligence >= -50) {
-				r += `<span class="orangered">Slow${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
-			} else if (intelligence >= -95) {
-				r += `<span class="orangered">Very slow${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
-			} else {
-				r += `<span class="orangered">Moronic${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
-			}
+			r += `<span class="orangered">Likely to be moronic${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
 		}
 	}
 
@@ -1857,13 +1823,23 @@ App.Facilities.Nursery.InfantSummary = function(child) {
 };
 
 /**
- * @param {App.Entity.SlaveState} child
+ * @param {App.Entity.InfantState} child
  * @returns {string}
  */
-App.Facilities.Nursery.ChildSummary = function(child) {
+App.Facilities.Nursery.LongInfantDescription = function(child) {
 	"use strict";
-	const V = State.variables;
-	let r = ``;
+	const
+		V = State.variables,
+		PC = V.PC,
+		arcology = V.arcologies[0],
+		weeksOwned = V.week - child.weekAcquired;
+
+	let
+		r = ``,
+		age,
+		title,
+		father,
+		mother;
 	/* eslint-disable */
 	const
 		pronouns = getPronouns(child),
@@ -1877,3446 +1853,2806 @@ App.Facilities.Nursery.ChildSummary = function(child) {
 		His = capFirstChar(his);
 	/* eslint-enable */
 
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 * @returns {string}
-	 */
-	function ChildSummaryUncached(child) {
-		if (V.abbreviateDevotion === 1) {
-			shortDevotion(child);
-		} else if (V.abbreviateDevotion === 2) {
-			longDevotion(child);
-		}
-		if (child.fuckdoll === 0) {
-			if (V.abbreviateRules === 1) {
-				shortRules(child);
-			} else if (V.abbreviateRules === 2) {
-				longRules(child);
-			}
-		}
-		if (child.tired !== 0) {
-			r += `Tired. `;
-		}
-		if (V.abbreviateDiet === 1) {
-			shortWeight(child);
-		} else if (V.abbreviateDiet === 2) {
-			longWeight(child);
-		}
-		if (V.abbreviateDiet === 1) {
-			shortDiet(child);
-		} else if (V.abbreviateDiet === 2) {
-			longDiet(child);
+	if (child.father === -1 && child.mother === -1) {
+		father = PC;
+		mother = PC;
+	} else {
+		if (child.father === -1) {
+			father = PC;
+			mother = getSlave(child.mother);
+		} else if (child.mother === -1) {
+			father = getSlave(child.father);
+			mother = PC;
+		} else {
+			father = getSlave(child.father);
+			mother = getSlave(child.mother);
 		}
-		if (V.abbreviateHealth === 1) {
-			shortHealth(child);
-		} else if (V.abbreviateHealth === 2) {
-			longHealth(child);
+	}
+
+	// TODO: add infant art here
+
+	r += `&nbsp;&nbsp;&nbsp;&nbsp; `;
+
+	r += `<span id="childName"><strong><span class="pink">${SlaveFullName(child)}</span></strong></span> `;
+
+	if (typeof child.custom !== "undefined") {
+		if (child.custom.label) {
+			r += ` (<strong><span class="yellow">${child.custom.label}</span></strong>) `;
 		}
-		if (V.abbreviateDrugs === 1) {
-			shortDrugs(child);
-		} else if (V.abbreviateDrugs === 2) {
-			longDrugs(child);
+	}
+
+	if (child.actualAge > 0) {
+		age = `${child.actualAge}-year-old`;
+		if (child.actualAge > 1) {
+			title = `toddler`;
+		} else {
+			title = `baby`;
 		}
-		if (V.abbreviateNationality + V.abbreviateGenitalia + V.abbreviatePhysicals + V.abbreviateSkills + V.abbreviateMental !== 0) {
-			r += `<br> `;
-			if (V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1) {
-				r += "&nbsp;&nbsp;&nbsp;&nbsp;";
+	} else {
+		if (weeksOwned > 4) {
+			age = `${weeksOwned * 4}-month-old`;
+			title = `${baby}`;
+		} else {
+			if (weeksOwned <= 1) {
+				age = ``;
+				title = `newborn`;
+			} else {
+				age = `${weeksOwned}-week-old`;
+				title = `baby`;
 			}
 		}
-		V.desc = SlaveTitle(child);
-		const firstLetter = V.desc.substring(0, 1).toUpperCase();
-		V.desc = firstLetter + V.desc.substring(1);
-		r += `<strong><span class="coral">${V.desc}${V.abbreviatePhysicals === 2? '.' : ''}</span></strong> `;
-		if (V.seeRace === 1) {
-			r += `<span class="tan">`;
-			if (V.abbreviateRace === 1) {
-				shortRace(child);
-			} else if (V.abbreviateRace === 2) {
-				longRace(child);
+	}
+
+	r += ` is a ${age} <strong><span class="coral">${title}.</span></strong> ${He} was born in ${arcology.name} ${weeksOwned > 4 ? weeksOwned < 9 ? `about a month` : `${weeksOwned} months` : weeksOwned <= 1 ? `last week` : `${weeksOwned} weeks`}${weeksOwned > 1 ? ` ago` : ``}`;
+
+	if (typeof child.counter !== "undefined") {
+		const
+			oral = child.counter.oral,
+			vaginal = child.counter.vaginal,
+			anal = child.counter.oral,
+			mammary = child.counter.mammary,
+			penetrative = child.counter.penetrative,
+			total = oral + vaginal + anal + mammary + penetrative;
+
+		if (total > 0) {
+			r += `and has been fucked about ${total} times, including `;
+			if ((vaginal + anal + mammary + penetrative) > 0) {
+				if (vaginal > 0) {
+					r += `${vaginal} vanilla, `;
+				}
+				if (anal > 0) {
+					r += `${anal} anal, `;
+				}
+				if (mammary > 0) {
+					r += `${mammary} mammary `;
+				}
+				if (penetrative > 0) {
+					r += `${penetrative} penetrating, `;
+				}
+				r += ` and `;
 			}
-			r += `</span> `;
-		}
-		if (V.abbreviateNationality === 1) {
-			shortNationality(child);
-		} else if (V.abbreviateNationality === 2) {
-			longNationality(child);
-		}
-		if (V.abbreviatePhysicals === 1) {
-			shortSkin(child);
+			r += `${oral} oral sexual encounters. `;
 		} else {
-			r += `<span class="pink">${child.skin.charAt(0).toUpperCase() + child.skin.slice(1)} skin.</span> `;
-		}
-		if (V.abbreviateGenitalia === 1) {
-			shortGenitals(child);
-		} else if (V.abbreviateGenitalia === 2) {
-			longGenitals(child);
-		}
-		if (V.abbreviatePhysicals === 1) {
-			shortAge(child);
-			shortFace(child);
-			shortEyes(child);
-			shortEars(child);
-			if (child.markings !== "none") {
-				r += "Markings";
+			if (weeksOwned >= 1) {
+				r += `and `;
+			} else {
+				r += `. ${He} `;
 			}
-			shortLips(child);
-			shortTeeth(child);
-			shortMuscles(child);
-			shortLimbs(child);
-			shortVoice(child);
-			shortTitsAss(child);
-			shortHips(child);
-			shortWaist(child);
-			shortImplants(child);
-			shortLactation(child);
-			shortMods(child);
-			r += `</span> `;
-		} else if (V.abbreviatePhysicals === 2) {
-			longAge(child);
-			longFace(child);
-			longEyes(child);
-			longEars(child);
-			longLips(child);
-			longTeeth(child);
-			longMuscles(child);
-			longLimbs(child);
-			longVoice(child);
-			longTitsAss(child);
-			longHips(child);
-			longWaist(child);
-			longImplants(child);
-			longLactation(child);
-			longMods(child);
-			if (child.brand !== 0) {
-				r += `Branded. `;
+
+			r += `has had little or no sexual experience `;
+			if (child.weekAcquired !== 0) {
+				r += `as your slave `;
+			} else {
+				r += `in your new arcology `;
 			}
-			r += `</span> `;
-		}
-		if (V.abbreviateHormoneBalance === 1) {
-			if (child.hormoneBalance <= -21) {
-				r += `<span class="deepskyblue">`;
-				r += ` <strong>HB:M</strong> `;
-			} else if (child.hormoneBalance <= 20) {
-				r += `<span class="pink">`;
-				r += ` <strong>HB:N</strong> `;
-			} else if (child.hormoneBalance <= 500) {
-				r += `<span class="pink">`;
-				r += ` <strong>HB:F</strong> `;
-			}
-			r += `</span> `;
-		} else if (V.abbreviateHormoneBalance === 2) {
-			r += `<span class=`;
-			if (child.hormoneBalance <= -21) {
-				r += `"deepskyblue"`;
-			} else {
-				r += `"pink"`;
-			}
-			r += `> `;
-			if (child.hormoneBalance < -400) {
-				r += `Overwhelmingly masculine`;
-			} else if (child.hormoneBalance <= -300) {
-				r += `Extremely masculine`;
-			} else if (child.hormoneBalance <= -200) {
-				r += `Heavily masculine`;
-			} else if (child.hormoneBalance <= -100) {
-				r += `Very masculine`;
-			} else if (child.hormoneBalance <= -21) {
-				r += `Masculine`;
-			} else if (child.hormoneBalance <= 20) {
-				r += `Neutral`;
-			} else if (child.hormoneBalance <= 99) {
-				r += `Feminine`;
-			} else if (child.hormoneBalance <= 199) {
-				r += `Very feminine`;
-			} else if (child.hormoneBalance <= 299) {
-				r += `Heavily feminine`;
-			} else if (child.hormoneBalance <= 399) {
-				r += `Extremely feminine`;
-			} else if (child.hormoneBalance <= 500) {
-				r += `Overwhelmingly feminine`;
-			}
-			r += ` hormone balance.</span> `;
-		}
-		r += "<br>";
-		if (V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1) {
-			r += "&nbsp;&nbsp;&nbsp;&nbsp;";
-		}
-		if (V.abbreviateSkills === 1) {
-			shortIntelligence(child);
-			shortSexSkills(child);
-			if (child.skill.combat > 0) {
-				r += "C";
-			}
-			r += "</span> ";
-			shortPrestige(child);
-			shortPornPrestige(child);
-		} else if (V.abbreviateSkills === 2) {
-			longIntelligence(child);
-			longSexSkills(child);
-			if (child.skill.combat > 0) {
-				r += "Trained fighter.";
-			}
-			r += "</span> ";
-			longPrestige(child);
-			longPornPrestige(child);
-		}
-		if (V.abbreviateMental === 1) {
-			if (child.fetish !== "mindbroken") {
-				if (child.fetishKnown === 1) {
-					shortFetish(child);
-				}
-				if (child.attrKnown === 1) {
-					shortAttraction(child);
-				}
-			}
-			if (child.clitPiercing === 3) {
-				shortSmartFetish(child);
-				shortSmartAttraction(child);
-			}
-			shortBehaviorFlaw(child);
-			shortSexFlaw(child);
-			shortBehaviorQuirk(child);
-			shortSexQuirk(child);
-		} else if (V.abbreviateMental === 2) {
-			if (child.fetish !== "mindbroken") {
-				if (child.fetishKnown === 1) {
-					longFetish(child);
+			r += `yet. `;
+
+			let sortedCounts = [];
+			sortedCounts.push(
+				{type: "oral", value: oral},
+				{type: "vaginal", value: vaginal},
+				{type: "anal", value: anal},
+				{type: "mammary", value: mammary},
+				{type: "penetrative", value: penetrative}
+			);
+			sortedCounts = sortedCounts.sort(function(a, b) {	// sorts the counts from largest to smallest
+				return b.value - a.value;
+			});
+
+			if (sortedCounts[0].type === "oral") {
+				if (((weeksOwned * 112) / oral) < 4) {
+					r += `Remarkably, this means that ${he}'s sucked something off `;
+					if (((weeksOwned * 112) / oral) < 1) {
+						r += `more than once every hour `;
+					} else if (((weeksOwned * 112) / oral) < 1.5) {
+						r += `about once every hour `;
+					} else if (((weeksOwned * 112) / oral) < 2.5) {
+						r += `about once every two hours `;
+					} else if (((weeksOwned * 112) / oral) < 3.5) {
+						r += `about once every three hours `;
+					} else {
+						r += `about once every four hours `;
+					}
+					r += ` ${he}'s spent awake. `;
 				}
-				if (child.attrKnown === 1) {
-					longAttraction(child);
+			} else if (sortedCounts[0].type === "vaginal") {
+				if (((weeksOwned * 112) / oral) < 4) {
+					r += `Remarkably, this means that ${his} pussy has been fucked `;
+					if (((weeksOwned * 112) / oral) < 1) {
+						r += `more than once every hour `;
+					} else if (((weeksOwned * 112) / oral) < 1.5) {
+						r += `about once every hour `;
+					} else if (((weeksOwned * 112) / oral) < 2.5) {
+						r += `about once every two hours `;
+					} else if (((weeksOwned * 112) / oral) < 3.5) {
+						r += `about once every three hours `;
+					} else {
+						r += `about once every four hours `;
+					}
+					r += ` ${he}'s spent awake. `;
 				}
-			}
-			if (child.clitPiercing === 3) {
-				longSmartFetish(child);
-				longSmartAttraction(child);
-			}
-			longBehaviorFlaw(child);
-			longSexFlaw(child);
-			longBehaviorQuirk(child);
-			longSexQuirk(child);
-		}
-		if (child.custom.label) {
-			r += `<strong><span class="yellow">${capFirstChar(child.custom.label)}</span></strong> `;
-		}
-		if ((child.relationship !== 0) || (child.relation !== 0) || (V.abbreviateClothes === 2) || (V.abbreviateRulesets === 2)) {
-			r += `<br> `;
-			if (V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1) {
-				r += `&nbsp;&nbsp;&nbsp;&nbsp;`;
-			}
-		}
-		if (V.abbreviateMental === 1) {
-			r += `<span class="lightgreen">`;
-			if (V.familyTesting === 1) {
-				shortExtendedFamily(child);
-			} else {
-				shortLegacyFamily(child);
-			}
-			r += `</span> `;
-			shortClone(child);
-			shortRival(child);
-		} else if (V.abbreviateMental === 2) {
-			if (V.familyTesting === 1) {
-				longExtendedFamily(child);
-			} else {
-				longLegacyFamily(child);
-			}
-			longClone(child);
-			longRival(child);
-		}
-		if (child.fuckdoll === 0) {
-			if (V.abbreviateClothes === 2) {
-				r += `&nbsp;&nbsp;&nbsp;&nbsp;`;
-				if (child.choosesOwnClothes === 1) {
-					r += "Dressing herself. ";
+			} else if (sortedCounts[0].type === "anal") {
+				if (((weeksOwned * 112) / oral) < 4) {
+					r += `Remarkably, this means that ${he}'s been buttfucked `;
+					if (((weeksOwned * 112) / oral) < 1) {
+						r += `more than once every hour `;
+					} else if (((weeksOwned * 112) / oral) < 1.5) {
+						r += `about once every hour `;
+					} else if (((weeksOwned * 112) / oral) < 2.5) {
+						r += `about once every two hours `;
+					} else if (((weeksOwned * 112) / oral) < 3.5) {
+						r += `about once every three hours `;
+					} else {
+						r += `about once every four hours `;
+					}
+					r += ` ${he}'s spent awake. `;
 				}
-				longClothes(child);
-				longCollar(child);
-				longBelly(child);
-				if (child.amp !== 1) {
-					longLegs(child);
+			} else if (sortedCounts[0].type === "mammary") {
+				if (((weeksOwned * 112) / oral) < 4) {
+					r += `Remarkably, this means that ${he}'s put ${his} tits to work `;
+					if (((weeksOwned * 112) / oral) < 1) {
+						r += `more than once every hour `;
+					} else if (((weeksOwned * 112) / oral) < 1.5) {
+						r += `about once every hour `;
+					} else if (((weeksOwned * 112) / oral) < 2.5) {
+						r += `about once every two hours `;
+					} else if (((weeksOwned * 112) / oral) < 3.5) {
+						r += `about once every three hours `;
+					} else {
+						r += `about once every four hours `;
+					}
+					r += ` ${he}'s spent awake. `;
 				}
-				if (canWalk(child)) {
-					longShoes(child);
+			} else if (sortedCounts[0].type === "penetrative") {
+				if (((weeksOwned * 112) / oral) < 4) {
+					r += `Remarkably, this means that ${he}'s pounded a hole `;
+					if (((weeksOwned * 112) / oral) < 1) {
+						r += `more than once every hour `;
+					} else if (((weeksOwned * 112) / oral) < 1.5) {
+						r += `about once every hour `;
+					} else if (((weeksOwned * 112) / oral) < 2.5) {
+						r += `about once every two hours `;
+					} else if (((weeksOwned * 112) / oral) < 3.5) {
+						r += `about once every three hours `;
+					} else {
+						r += `about once every four hours `;
+					}
+					r += ` ${he}'s spent awake. `;
 				}
-				longChastity(child);
-				longVaginalAcc(child);
-				longDickAcc(child);
-				longButtplug(child);
 			}
 		}
-		r += `&nbsp;&nbsp;&nbsp;&nbsp;`;
-		rulesAssistant(child);
-		if (V.abbreviateOrigins === 2 && child.origin !== 0) {
-			origins(child);
-		}
-		return r;
 	}
 
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function shortDevotion(child) {
-		if (child.fetish === "mindbroken") {
-			r += `<span class="red">MB</span> `;
-		} else if (child.devotion < -95) {
-			r += `<span class="darkviolet">Hate${V.summaryStats ? `[${child.devotion}]` : ''}</span> `;
-		} else if (child.devotion < -50) {
-			r += `<span class="darkviolet">Hate${V.summaryStats ? `[${child.devotion}]` : ''}</span> `;
-		} else if (child.devotion < -20) {
-			r += `<span class="mediumorchid">Res${V.summaryStats ? `[${child.devotion}]` : ''}</span> `;
-		} else if (child.devotion <= 20) {
-			r += `<span class="yellow">Ambiv${V.summaryStats ? `[${child.devotion}]` : ''}</span> `;
-		} else if (child.devotion <= 50) {
-			r += `<span class="hotpink">Accept${V.summaryStats ? `[${child.devotion}]` : ''}</span> `;
-		} else if (child.devotion <= 95) {
-			r += `<span class="deeppink">Devo${V.summaryStats ? `[${child.devotion}]` : ''}</span> `;
+	/* OPEN FAMILY */
+
+	if (father === PC && mother === PC) {
+		r += `${He} is <span class="lightgreen">your child;</span> you knocked yourself up with ${him}. `;
+	} else if (father === mother) {
+		r += `He was <span class="lightgreen">both fathered and mothered by ${father.slaveName}.</span> `;
+	} else {
+		if (father === PC) {
+			r += `${He} is <span class="lightgreen">your child;</span> you knocked up ${his} mother, ${SlaveFullName(mother)}. `;
+		} else if (mother === PC) {
+			r += `${He} is <span class="lightgreen">your child;</span> you gave birth to ${him}. `;
 		} else {
-			r += `<span class="magenta">Wor${V.summaryStats ? `[${child.devotion}]` : ''}</span> `;
+			let pName;
+			if (father > 0) {
+				if (child.father in V.missingTable && V.showMissingSlaves) {
+					pName = V.slaves[V.slaveIndices[child.father]].slaveName;
+				} else {
+					pName = `your former slave ${V.missingTable[child.father].slaveName}`;
+				}
+				r += `${He} was <span class="lightgreen">fathered by ${pName}'s</span> virile dick. `;
+			} else if (mother > 0) {
+				if (child.mother in V.missingTable && V.showMissingSlaves) {
+					pName = V.slaves[V.slaveIndices[child.mother]].slaveName;
+				} else {
+					pName = `your former slave ${V.missingTable[child.mother].slaveName}`;
+				}
+				r += `${He} was born from ${pName}'s fertile womb. `;
+			}
 		}
-		if (child.fetish === "mindbroken") {
-			return;
-		} else if (child.trust < -95) {
-			r += `<span class="darkgoldenrod">ETerr${V.summaryStats ? `[${child.trust}]` : ''}</span> `;
-		} else if (child.trust < -50) {
-			r += `<span class="goldenrod">Terr${V.summaryStats ? `[${child.trust}]` : ''}</span> `;
-		} else if (child.trust < -20) {
-			r += `<span class="gold">Fright${V.summaryStats ? `[${child.trust}]` : ''}</span> `;
-		} else if (child.trust <= 20) {
-			r += `<span class="yellow">Fear${V.summaryStats ? `[${child.trust}]` : ''}</span> `;
-		} else if (child.trust <= 50) {
-			if (child.devotion < -20) {
-				r += `<span class="orange">Caref${V.summaryStats ? `[${child.trust}]` : ''}</span> `;
-			} else {
-				r += `<span class="mediumaquamarine">Caref${V.summaryStats ? `[${child.trust}]` : ''}</span> `;
+	}
+
+	if (V.showDistantRelatives) {
+		const
+			mi = mother,
+			fi = father;
+
+		let
+			mmi,
+			fmi,
+			mfi,
+			ffi;
+
+		if (typeof mi !== "undefined") {
+			mmi = mother.mother;
+			fmi = mother.father;
+		} else if (mother === PC) {
+			mmi = PC.mother;
+			fmi = PC.father;
+		}
+
+		if (typeof fi !== "undefined") {
+			mfi = father.mother;
+			ffi = father.father;
+		} else if (father === PC) {
+			mfi = PC.mother;
+			ffi = PC.father;
+		}
+
+		// TODO: if this starts breaking, add undef checks
+
+		// grandparents
+		if (mmi === PC || fmi === PC || mfi === PC || ffi === PC) {
+			if (mi === fi) {
+				if (PC === mother.mother && PC === father.father) {
+					r += `${He} is <span class="lightgreen">your grandchild.</span> You impregnated yourself with ${his} sole biological parent. `;
+				} else if (PC === mother.mother) {
+					r += `${He} is <span class="lightgreen">your grandchild.</span> You gave birth to ${his} sole biological parent. `;
+				} else if (PC === father.father) {
+					r += `${He} is <span class="lightgreen">your grandchild.</span> You fathered ${his} sole biological parent. `;
+				}
+			} else if (PC === mother.mother && PC === father.mother) {
+				r += `${He} is <span class="lightgreen">your grandchild.</span> You gave birth to both of ${his} parents. `;
+			} else if (PC === mother.father && PC === father.father) {
+				r += `${He} is <span class="lightgreen">your grandchild.</span> You fathered both of ${his} parents. `;
+			} else if (PC === mother.mother) {
+				r += `${He} is <span class="lightgreen">your grandchild.</span> You gave birth to ${his} mother. `;
+			} else if (PC === mother.father) {
+				r += `${He} is <span class="lightgreen">your grandchild.</span> You fathered ${his} mother. `;
 			}
-		} else if (child.trust < 95) {
-			if (child.devotion < -20) {
-				r += `<span class="orangered">Bold${V.summaryStats ? `[${child.trust}]` : ''}</span> `;
-			} else {
-				r += `<span class="mediumseagreen">Trust${V.summaryStats ? `[${child.trust}]` : ''}</span> `;
+			if (PC === father.mother) {
+				r += `${He} is <span class="lightgreen">your grandchild.</span> You gave birth to ${his} father. `;
+			} else if (PC === father.father) {
+				r += `${He} is <span class="lightgreen">your grandchild.</span> You fathered ${his} father. `;
 			}
 		} else {
-			if (child.devotion < -20) {
-				r += `<span class="darkred">Defiant${V.summaryStats ? `[${child.trust}]` : ''}</span> `;
+			if (mmi === ffi) {
+				r += `${His} sole granparent is ${mmi.slaveName}.</span> `;
 			} else {
-				r += `<span class="seagreen">VTrust ${V.summaryStats ? `[${child.trust}]` : ''}</span> `;
+				if (mmi === mfi) {
+					r += `${His} sole <span class="lightgreen">grandparent is ${mmi}.</span> `;
+				} else {
+					r += `${His} maternal <span class="lightgreen">grandmother is ${mmi.slaveName}.</span> ${His} paternal <span class="lightgreen">grandmother is ${mfi.slaveName}.</span> `;
+				}
+				if (fmi === ffi) {
+					r += `${His} sole <span class="lightgreen">grandparent is ${ffi}.</span> `;
+				} else {
+					r += `${His} maternal <span class="lightgreen">grandfather is ${fmi.slaveName}.</span> ${His} paternal <span class="lightgreen">grandfather is ${ffi.slaveName}.</span> `;
+				}
 			}
 		}
-	}
 
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function longDevotion(child) {
-		if (child.fetish === "mindbroken") {
-			r += `<span class="red">Mindbroken.</span> `;
-		} else if (child.devotion < -95) {
-			r += `<span class="darkviolet">Very hateful${V.summaryStats ? `[${child.devotion}]` : ''}.</span> `;
-		} else if (child.devotion < -50) {
-			r += `<span class="darkviolet">Hateful${V.summaryStats ? `[${child.devotion}]` : ''}.</span> `;
-		} else if (child.devotion < -20) {
-			r += `<span class="mediumorchid">Resistant${V.summaryStats ? `[${child.devotion}]` : ''}.</span> `;
-		} else if (child.devotion <= 20) {
-			r += `<span class="yellow">Ambivalent${V.summaryStats ? `[${child.devotion}]` : ''}.</span> `;
-		} else if (child.devotion <= 50) {
-			r += `<span class="hotpink">Accepting${V.summaryStats ? `[${child.devotion}]` : ''}.</span> `;
-		} else if (child.devotion <= 95) {
-			r += `<span class="deeppink">Devoted${V.summaryStats ? `[${child.devotion}]` : ''}.</span> `;
-		} else {
-			r += `<span class="magenta">Worshipful${V.summaryStats ? `[${child.devotion}]` : ''}.</span> `;
+		// aunts
+		for (let i = 0; i < V.slaves.length; i++) {
+			if (V.slaves[i] === mother || V.slaves[i] === father) {
+				for (let j = 0; j < V.slaves.length; j++) {
+					if (V.slaves[j].genes === "XX") {
+						if (areSisters(V.slaves[i], V.slaves[j]) === 1 || areSisters(V.slaves[i], V.slaves[j] === 2)) {
+							V.children.push(V.slaves[j]);
+						}
+					}
+				}
+			}
 		}
-		if (child.fetish === "mindbroken") {
-			return;
-		} else if (child.trust < -95) {
-			r += `<span class="darkgoldenrod">Extremely terrified${V.summaryStats ? `[${child.trust}]` : ''}.</span> `;
-		} else if (child.trust < -50) {
-			r += `<span class="goldenrod">Terrified${V.summaryStats ? `[${child.trust}]` : ''}.</span> `;
-		} else if (child.trust < -20) {
-			r += `<span class="gold">Frightened${V.summaryStats ? `[${child.trust}]` : ''}.</span> `;
-		} else if (child.trust <= 20) {
-			r += `<span class="yellow">Fearful${V.summaryStats ? `[${child.trust}]` : ''}.</span> `;
-		} else if (child.trust <= 50) {
-			if (child.devotion < -20) {
-				r += `<span class="orange">Careful${V.summaryStats ? `[${child.trust}]` : ''}.</span> `;
+
+		if (V.children.length > 0) {
+			r += `${He} `;
+			if (V.children.length > 2) {
+				r += `has <span class="lightgreen">many aunts, `;
+				for (j = 0; j < V.children.length; j++) {
+					if (j < V.children.length - 1) {
+						r += `${V.children[j].slaveName}, `;
+					} else {
+						r += `and ${V.children[j].slaveName}.</span> `;
+					}
+				}
+			} else if (V.children.length === 2) {
+				r += `has <span class="lightgreen">two aunts, ${V.children[0].slaveName}, and ${V.children[1].slaveName}.</span> `;
 			} else {
-				r += `<span class="mediumaquamarine">Careful${V.summaryStats ? `[${child.trust}]` : ''}.</span> `;
+				r += `has <span class="lightgreen">an aunt, ${V.children[0].slaveName}.</span> `;
 			}
-		} else if (child.trust < 95) {
-			if (child.devotion < -20) {
-				r += `<span class="orangered">Bold${V.summaryStats ? `[${child.trust}]` : ''}.</span> `;
-			} else {
-				r += `<span class="mediumseagreen">Trusting${V.summaryStats ? `[${child.trust}]` : ''}.</span> `;
+		}
+		V.children = [];
+
+		// uncles
+		for (let i = 0; i < V.slaves.length; i++) {
+			if (V.slaves[i] === mother || V.slaves[i] === father) {
+				for (let j = 0; j < V.slaves.length; j++) {
+					if (V.slaves[j].genes === "XY") {
+						if (areSisters(V.slaves[i], V.slaves[j]) === 1 || areSisters(V.slaves[i], V.slaves[j] === 2)) {
+							V.children.push(V.slaves[j]);
+						}
+					}
+				}
 			}
-		} else {
-			if (child.devotion < -20) {
-				r += `<span class="darkred">Defiant${V.summaryStats ? `[${child.trust}]` : ''}.</span> `;
+		}
+
+		if (V.children.length > 0) {
+			r += `${He} `;
+			if (V.children.length > 2) {
+				r += `has <span class="lightgreen">many uncles, `;
+				for (j = 0; j < V.children.length; j++) {
+					if (j < V.children.length - 1) {
+						r += `${V.children[j].slaveName}, `;
+					} else {
+						r += `and ${V.children[j].slaveName}.</span> `;
+					}
+				}
+			} else if (V.children.length === 2) {
+				r += `has <span class="lightgreen">two uncles, ${V.children[0].slaveName}, and ${V.children[1].slaveName}.</span> `;
 			} else {
-				r += `<span class="seagreen">Profoundly trusting${V.summaryStats ? `[${child.trust}]` : ''}.</span> `;
+				r += `has <span class="lightgreen">an uncle, ${V.children[0].slaveName}.</span> `;
 			}
 		}
-	}
+		V.children = [];
 
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function shortRules(child) {
-		switch (child.livingRules) {
-			case "luxurious":
-				r += `<strong>LS:Lux</strong> `;
-				break;
-			case "normal":
-				r += `<strong>LS:Nor</strong> `;
-				break;
-			default:
-				r += `<strong>LS:Spa</strong> `;
-				break;
-		}
-		if (canTalk(child)) {
-			switch (child.speechRules) {
-				case "permissive":
-					r += `<strong>SpR:P</strong> `;
-					break;
-				case "accent elimination":
-					r += `<strong>SpR:NoAcc</strong> `;
-					break;
-				case "language lessons":
-					r += `<strong>SpR:LL</strong> `;
-					break;
-				default:
-					r += `<strong>SpR:R</strong> `;
-					break;
+		// nieces
+		for (let i = 0; i < V.slaves.length; i++) {
+			if (areSisters(V.slaves[i], child) === 1 || areSisters(V.slaves[i], child) === 2) {
+				for (let j = 0; j < V.slaves.length; j++) {
+					if (V.slaves[i].ID !== V.slaves[j].ID && V.slaves[j].genes === "XX") {
+						if (V.slaves[i].ID === V.slaves[j].mother || V.slaves[i].ID === V.slaves[j].father) {
+							V.children.push(V.slaves[j]);
+						}
+					}
+				}
 			}
-			r += " ";
-		}
-		switch (child.relationshipRules) {
-			case "permissive":
-				r += `<strong>ReR:P</strong> `;
-				break;
-			case "just friends":
-				r += `<strong>ReR:Fr</strong> `;
-				break;
-			default:
-				r += `<strong>ReR:R</strong> `;
-				break;
-		}
-		switch (child.standardPunishment) {
-			case "confinement":
-				r += `<strong>Pun:Conf</strong> `;
-				break;
-			case "whipping":
-				r += `<strong>Pun:Whip</strong> `;
-				break;
-			case "chastity":
-				r += `<strong>Pun:Chas</strong> `;
-				break;
-			default:
-				r += `<strong>Pun:Situ</strong> `;
-				break;
-		}
-		switch (child.standardReward) {
-			case "relaxation":
-				r += `<strong>Rew:Relx</strong> `;
-				break;
-			case "drugs":
-				r += `<strong>Rew:Drug</strong> `;
-				break;
-			case "orgasm":
-				r += `<strong>Rew:Orga</strong> `;
-				break;
-			default:
-				r += `<strong>Rew:Situ</strong> `;
-				break;
-		}
-		switch (child.releaseRules) {
-			case "permissive":
-				r += `<strong>MaR:P</strong> `;
-				break;
-			case "sapphic":
-				r += `<strong>MaR:S</strong> `;
-				break;
-			case "masturbation":
-				r += `<strong>MaR:M</strong> `;
-				break;
-			case "chastity":
-				r += `<strong>MaR:C</strong> `;
-				break;
-			default:
-				r += `<strong>MaR:R</strong> `;
-				break;
 		}
-	}
 
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function longRules(child) {
-		r += `Living standard: ${child.livingRules}. `;
-		if (canTalk(child)) {
-			r += `Speech rules: ${child.speechRules}. `;
+		if (V.children.length > 0) {
+			r += `${He} `;
+			if (V.children.length > 2) {
+				r += `has <span class="lightgreen">many nieces, `;
+				for (j = 0; j < V.children.length; j++) {
+					if (j < V.children.length - 1) {
+						r += `${V.children[j].slaveName}, `;
+					} else {
+						r += `and ${V.children[j].slaveName}.</span> `;
+					}
+				}
+			} else if (V.children.length === 2) {
+				r += `has <span class="lightgreen">two nieces, ${V.children[0].slaveName}, and ${V.children[1].slaveName}.</span> `;
+			} else {
+				r += `has <span class="lightgreen">a niece, ${V.children[0].slaveName}.</span> `;
+			}
 		}
-		r += `Relationship rules: ${child.relationshipRules}. `;
-		r += `Typical punishment: ${child.standardPunishment}. `;
-		r += `Typical reward: ${child.standardReward}. `;
-		r += `Release rules: ${child.releaseRules}. `;
-	}
+		V.children = [];
 
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function shortWeight(child) {
-		if (child.weight < -95) {
-			r += `<strong><span class="red">W---${V.summaryStats? `[${child.weight}]` : ''}</span></strong> `;
-		} else if (child.weight < -30) {
-			if (child.hips < -1) {
-				r += `<strong>W--${V.summaryStats? `[${child.weight}]` : ''}</strong> `;
-			} else {
-				r += `<strong><span class="red">W--${V.summaryStats? `[${child.weight}]` : ''}</span></strong> `;
+		// nephews
+		for (let i = 0; i < V.slaves.length; i++) {
+			if (areSisters(V.slaves[i], child) === 1 || areSisters(V.slaves[i], child) === 2) {
+				for (let j = 0; j < V.slaves.length; j++) {
+					if (V.slaves[i].ID !== V.slaves[j].ID && V.slaves[j].genes === "XY") {
+						if (V.slaves[i].ID === V.slaves[j].mother || V.slaves[i].ID === V.slaves[j].father) {
+							V.children.push(V.slaves[j]);
+						}
+					}
+				}
 			}
-		} else if (child.weight < -10) {
-			r += `<strong>W-${V.summaryStats? `[${child.weight}]` : ''}</strong> `;
-		} else if (child.weight <= 10) {
-			r += `<strong>W${V.summaryStats? `[${child.weight}]` : ''}</strong> `;
-		} else if (child.weight <= 30) {
-			r += `<strong>W+${V.summaryStats? `[${child.weight}]` : ''}</strong> `;
-		} else if (child.weight <= 95) {
-			if (child.hips > 1 || V.arcologies[0].FSHedonisticDecadence !== "unset") {
-				r += `<strong>W++${V.summaryStats? `[${child.weight}]` : ''}</strong> `;
+		}
+
+		if (V.children.length > 0) {
+			r += `${He} `;
+			if (V.children.length > 2) {
+				r += `has <span class="lightgreen">many nephews, `;
+				for (j = 0; j < V.children.length; j++) {
+					if (j < V.children.length - 1) {
+						r += `${V.children[j].slaveName}, `;
+					} else {
+						r += `and ${V.children[j].slaveName}.</span> `;
+					}
+				}
+			} else if (V.children.length === 2) {
+				r += `has <span class="lightgreen">two nephews, ${V.children[0].slaveName}, and ${V.children[1].slaveName}.</span> `;
 			} else {
-				r += `<strong><span class="red">W++${V.summaryStats? `[${child.weight}]` : ''}</span></strong> `;
+				r += `has <span class="lightgreen">a nephew, ${V.children[0].slaveName}.</span> `;
 			}
-		} else if (child.weight <= 130) {
-			if (child.hips > 2 || V.arcologies[0].FSHedonisticDecadence !== "unset") {
-				r += `<strong>W+++${V.summaryStats? `[${child.weight}]` : ''}</strong> `;
-			} else {
-				r += `<strong><span class="red">W+++${V.summaryStats? `[${child.weight}]` : ''}</span></strong> `;
+		}
+		V.children = [];
+
+		let
+			twins = [],
+			sisters = [],
+			brothers = [],
+			halfSisters = [],
+			halfBrothers = [],
+			cousins = [];
+
+		for (let i = 0; i < V.slaves.length; i++) {
+			let sisterCheck = areSisters(V.slaves[i], child);
+			if (sisterCheck === 1) {
+				twins.push(V.slaves[i]);
 			}
-		} else if (child.weight <= 160) {
-			if (V.arcologies[0].FSHedonisticDecadence !== "unset") {
-				r += `<strong>W++++${V.summaryStats? `[${child.weight}]` : ''}</strong> `;
-			} else {
-				r += `<strong><span class="red">W++++${V.summaryStats? `[${child.weight}]` : ''}</span></strong> `;
+			if (sisterCheck === 2) {
+				(V.slaves[i].genes === "XX" ? sisters : brothers).push(V.slaves[i]);
 			}
-		} else if (child.weight <= 190) {
-			if (V.arcologies[0].FSHedonisticDecadence !== "unset") {
-				r += `<strong>W+++++${V.summaryStats? `[${child.weight}]` : ''}</strong> `;
-			} else {
-				r += `<strong><span class="red">W+++++${V.summaryStats? `[${child.weight}]` : ''}</span></strong> `;
+			if (sisterCheck === 3) {
+				(V.slaves[i].genes === "XX" ? halfSisters : halfBrothers).push(V.slaves[i]);
 			}
-		} else {
-			if (V.arcologies[0].FSHedonisticDecadence !== "unset") {
-				r += `<strong>W++++++${V.summaryStats? `[${child.weight}]` : ''}</strong> `;
-			} else {
-				r += `<strong><span class="red">W++++++${V.summaryStats? `[${child.weight}]` : ''}</span></strong> `;
+			if (V.showDistantRelatives) {
+				if (areCousins(V.slaves[i], child)) {
+					cousins.push(V.slaves[i]);
+				}
 			}
 		}
-	}
 
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function longWeight(child) {
-		if (child.weight < -95) {
-			r += `<span class="red">Emaciated${V.summaryStats ? `[${child.weight}]`: ''}.</span> `;
-		} else if (child.weight < -30) {
-			if (child.hips < -1) {
-				r += `Model-thin${V.summaryStats? `[${child.weight}]`: ''}. `;
-			} else {
-				r += `<span class="red">Very thin${V.summaryStats ? `[${child.weight}]`: ''}.</span> `;
-			}
-		} else if (child.weight < -10) {
-			r += `Thin${V.summaryStats? `[${child.weight}]`: ''}. `;
-		} else if (child.weight <= 10) {
-			r += `Trim${V.summaryStats? `[${child.weight}]`: ''}. `;
-		} else if (child.weight <= 30) {
-			r += `Plush${V.summaryStats? `[${child.weight}]`: ''}. `;
-		} else if (child.weight <= 95) {
-			if (child.hips > 1 || V.arcologies[0].FSHedonisticDecadence !== "unset") {
-				r += `Nicely chubby${V.summaryStats? `[${child.weight}]`: ''}. `;
-			} else {
-				r += `<span class="red">Overweight${V.summaryStats ? `[${child.weight}]`: ''}.</span> `;
-			}
-		} else if (child.weight <= 130) {
-			if (child.hips > 2 || V.arcologies[0].FSHedonisticDecadence !== "unset") {
-				r += `Pleasantly soft and shapely${V.summaryStats? `[${child.weight}]`: ''}. `;
-			} else {
-				r += `<span class="red">Fat${V.summaryStats ? `[${child.weight}]`: ''}.</span> `;
-			}
-		} else if (child.weight <= 160) {
-			if (V.arcologies[0].FSHedonisticDecadence !== "unset") {
-				r += `Amazingly voluptuous${V.summaryStats? `[${child.weight}]`: ''}. `;
+		// twins
+		if (twins.length > 0) {
+			r += `${He} `;
+			if (twins.length > 2) {
+				r += `<span class="lightgreen">shared a cramped womb with ${twins.reduce(function(res, ch, i, arr) {
+					return (res.slaveName || res) + (i === arr.length - 1 ? ` and ` : `, `) + ch.slaveName;
+				})}</span> `;
+			} else if (twins.length === 2) {
+				r += `is <span class="lightgreen">one of a set of triplets; ${twins[0].slaveName} and ${twins[1].slaveName}</span> complete the trio. `;
 			} else {
-				r += `<span class="red">Obese${V.summaryStats ? `[${child.weight}]`: ''}.</span> `;
+				r += `is <span class="lightgreen">twins with ${twins[0].slaveName}.</span> `;
 			}
-		} else if (child.weight <= 190) {
-			if (V.arcologies[0].FSHedonisticDecadence !== "unset") {
-				r += `SSBBW${V.summaryStats? `[${child.weight}]`: ''}. `;
+		}
+
+		// sisters
+		if (sisters.length > 0) {
+			if (sisters.length > 1) {
+				r += `<span class="lightgreen">${sisters.reduce(function(res, ch, i, arr) {
+					return (res.slaveName || res) + (i === arr.length - 1 ? ` and ` : `, `) + ch.slaveName;
+				})} are ${his} sisters.</span> `;
 			} else {
-				r += `<span class="red">Super Obese${V.summaryStats ? `[${child.weight}]`: ''}.</span> `;
+				r += `<span class="lightgreen">${sisters[0].slaveName} is $his sister. `;
 			}
-		} else {
-			if (V.arcologies[0].FSHedonisticDecadence !== "unset") {
-				r += `Perfectly massive${V.summaryStats? `[${child.weight}]`: ''}. `;
+		}
+
+		// brothers
+		if (brothers.length > 0) {
+			if (brothers.length > 1) {
+				r += `<span class="lightgreen">${brothers.reduce(function(res, ch, i, arr) {
+					return (res.slaveName || res) + (i === arr.length - 1 ? ` and ` : `, `) + ch.slaveName;
+				})} are ${his} brothers.</span> `;
 			} else {
-				r += `<span class="red">Dangerously Obese${V.summaryStats ? `[${child.weight}]`: ''}.</span> `;
+				r += `<span class="lightgreen">${brothers[0].slaveName} is $his brother. `;
 			}
 		}
-	}
 
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function shortDiet(child) {
-		r += `<span class="teal">`;
-		switch (child.diet) {
-			case "restricted":
-				r += `<strong>Di:W-</strong> `;
-				break;
-			case "fattening":
-				r += `<strong>Di:W+</strong> `;
-				break;
-			case "XX":
-				r += `<strong>Di:XX+</strong> `;
-				break;
-			case "XY":
-				r += `<strong>Di:XY+</strong> `;
-				break;
-			case "XXY":
-				r += `<strong>Di:XXY+</strong> `;
-				break;
-			case "muscle building":
-				r += `<strong>Di:M+</strong> `;
-				break;
-			case "slimming":
-				r += `<strong>Di:M-</strong> `;
-				break;
-			case "cum production":
-				r += `<strong>Di:C+</strong> `;
-				break;
-			case "cleansing":
-				r += `<strong>Di:H+</strong> `;
-				break;
-			case "fertility":
-				r += `<strong>Di:F+</strong> `;
-				break;
-		}
-		r += `</span> `;
-		r += `<span class="cyan">`;
-		if (child.dietCum === 2) {
-			r += `<strong>Cum++</strong> `;
-		} else if (((child.dietCum === 1) && (child.dietMilk === 0))) {
-			r += `<strong>Cum+</strong> `;
-		} else if (((child.dietCum === 1) && (child.dietMilk === 1))) {
-			r += `<strong>Cum+ Milk+</strong> `;
-		} else if (((child.dietCum === 0) && (child.dietMilk === 1))) {
-			r += `<strong>Milk+</strong> `;
-		} else if ((child.dietMilk === 2)) {
-			r += `<strong>Milk++</strong> `;
+		// half-sisters
+		children = V.slaves.filter(function(s) {
+			return areSisters(child, s) === 3 && s.genes === "XX";
+		});
+		if (children.length > 2) {
+			r += `<span class="lightgreen">${children.reduce(function(res, ch, i, arr) {
+				return (res.slaveName || res) + (i === arr.length - 1 ? ` and ` : `, `) + ch.slaveName;
+			})} are half-sisters to ${him}.</span> `;
+		} else if (children.length === 2) {
+			r += `<span class="lightgreen">${children[0].slaveName} and ${children[1].slaveName} are half-sisters to ${him}.</span> `;
+		} else {
+			r += `<span class="lightgreen">${children[0].slaveName} is a half-sister to ${him}.</span> `;
 		}
-		r += `</span> `;
-	}
 
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function longDiet(child) {
-		r += `<span class="teal">`;
-		switch (child.diet) {
-			case "restricted":
-				r += `Dieting. `;
-				break;
-			case "fattening":
-				r += `Gaining weight. `;
-				break;
-			case "XX":
-				r += `Estrogen rich. `;
-				break;
-			case "XY":
-				r += `Testosterone rich. `;
-				break;
-			case "XXY":
-				r += `Futanari mix. `;
-				break;
-			case "muscle building":
-				r += `Pumping iron. `;
-				break;
-			case "slimming":
-				r += `Slimming down. `;
-				break;
-			case "cum production":
-				r += `Cum production. `;
-				break;
-			case "cleansing":
-				r += `Cleansing. `;
-				break;
-			case "fertility":
-				r += `Fertility. `;
-				break;
-		}
-		r += `</span> `;
-		if (child.dietCum === 2) {
-			r += `Diet base: <span class="cyan">Cum Based.</span> `;
-		} else if (((child.dietCum === 1) && (child.dietMilk === 0))) {
-			r += `Diet base: <span class="cyan">Cum Added.</span> `;
-		} else if (((child.dietCum === 1) && (child.dietMilk === 1))) {
-			r += `Diet base: <span class="cyan">Milk & Cum Added.</span> `;
-		} else if (((child.dietCum === 0) && (child.dietMilk === 1))) {
-			r += `Diet base: <span class="cyan">Milk Added.</span> `;
-		} else if ((child.dietMilk === 2)) {
-			r += `Diet base: <span class="cyan">Milk Based.</span> `;
+		// half-brothers
+		children = V.slaves.filter(function(s) {
+			return areSisters(child, s) === 3 && s.genes === "XY";
+		});
+		if (children.length > 2) {
+			r += `<span class="lightgreen">${children.reduce(function(res, ch, i, arr) {
+				return (res.slaveName || res) + (i === arr.length - 1 ? ` and ` : `, `) + ch.slaveName;
+			})} are half-brothers to ${him}.</span> `;
+		} else if (children.length === 2) {
+			r += `<span class="lightgreen">${children[0].slaveName} and ${children[1].slaveName} are half-brothers to ${him}.</span> `;
+		} else {
+			r += `<span class="lightgreen">${children[0].slaveName} is a half-brother to ${him}.</span> `;
 		}
-	}
 
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function shortHealth(child) {
-		if (child.health < -20) {
-			r += `<strong><span class="red">H${V.summaryStats? `[${child.health}]` : ''}</span></strong> `;
-		} else if (child.health <= 20) {
-			r += `<strong><span class="yellow">H${V.summaryStats? `[${child.health}]` : ''}</span></strong> `;
-		} else if (child.health > 20) {
-			r += `<strong><span class="green">H${V.summaryStats? `[${child.health}]` : ''}</span></strong> `;
+		// cousins
+		children = V.slaves.filter(function(s) {
+			return areCousins(child, s);
+		});
+		if (children.length > 2) {
+			r += `<span class="lightgreen">${children.reduce(function(res, ch, i, arr) {
+				return (res.slaveName || res) + (i === arr.length - 1 ? ` and ` : `, `) + ch.slaveName;
+			})} are cousins to ${him}.</span> `;
+		} else if (children.length === 2) {
+			r += `<span class="lightgreen">${children[0].slaveName} and ${children[1].slaveName} are cousins to ${him}.</span> `;
+		} else {
+			r += `<span class="lightgreen">${children[0].slaveName} is a cousins to ${him}.</span> `;
 		}
 	}
 
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function longHealth(child) {
-		if (child.health < -90) {
-			r += `<span class="red">On the edge of death${V.summaryStats? `[${child.health}]` : ''}.</span> `;
-		} else if (child.health < -50) {
-			r += `<span class="red">Extremely unhealthy${V.summaryStats? `[${child.health}]` : ''}.</span> `;
-		} else if (child.health < -20) {
-			r += `<span class="red">Unhealthy${V.summaryStats? `[${child.health}]` : ''}.</span> `;
-		} else if (child.health <= 20) {
-			r += `<span class="yellow">Healthy${V.summaryStats? `[${child.health}]` : ''}.</span> `;
-		} else if (child.health <= 50) {
-			r += `<span class="green">Very healthy${V.summaryStats? `[${child.health}]` : ''}.</span> `;
-		} else if (child.health <= 90) {
-			r += `<span class="green">Extremely healthy${V.summaryStats? `[${child.health}]` : ''}.</span> `;
+	/* CLOSE FAMILY */
+
+	if (father === PC) {
+		if (child.eyeColor === PC.eyeColor) {
+			r += `${He} has your ${child.eyeColor} eyes, `;
 		} else {
-			r += `<span class="green">Unnaturally healthy${V.summaryStats? `[${child.health}]` : ''}.</span> `;
+			r += `${He} has ${his} mother ${mother.slaveName}'s ${child.eyeColor} eyes, `;
+		}
+	} else {
+		if (child.eyeColor === father.eyeColor) {
+			r += `${He} has ${his} father ${father.slaveName}'s ${child.eyeColor} eyes, `;
+		} else {
+			r += `${He} has ${his} mother ${mother.slaveName}'s ${child.eyeColor} eyes, `;
 		}
 	}
+	r += ` and ${he} will likely have ${child.hColor} hair when ${he}'s older. `;
+
+	r += `${He} is ${child.race} and ${child.nationality}, and has ${child.skin} skin. `;	// TODO: reword this
+
+	return r;
+};
+
+/* CHILDREN */
+
+/**
+ * @param {App.Entity.SlaveState} child
+ * @returns {string}
+ */
+App.Facilities.Nursery.ChildSummary = function(child) {
+	"use strict";
+	const V = State.variables;
+	let r = ``;
+	/* eslint-disable */
+	const
+		pronouns = getPronouns(child),
+		he = pronouns.pronoun,
+		him = pronouns.object,
+		his = pronouns.possessive,
+		hers = pronouns.possessivePronoun,
+		himself = pronouns.objectReflexive,
+		boy = pronouns.noun,
+		He = capFirstChar(he),
+		His = capFirstChar(his);
+	/* eslint-enable */
 
 	/**
 	 * @param {App.Entity.SlaveState} child
+	 * @returns {string}
 	 */
-	function shortDrugs(child) {
-		r += `<span class="tan">`;
-		switch (child.drugs) {
-			case "breast injections":
-				r += `<strong>Dr:Boobs+</strong> `;
-				break;
-			case "intensive breast injections":
-				r += `<strong>Dr:Boobs++</strong> `;
-				break;
-			case "hyper breast injections":
-				r += `<strong>Dr:Boobs+++</strong> `;
-				break;
-			case "butt injections":
-				r += `<strong>Dr:Butt+</strong> `;
-				break;
-			case "intensive butt injections":
-				r += `<strong>Dr:Butt++</strong> `;
-				break;
-			case "hyper butt injections":
-				r += `<strong>Dr:Butt+++</strong> `;
-				break;
-			case "lip injections":
-				r += `<strong>Dr:Lip+</strong> `;
-				break;
-			case "fertility drugs":
-				r += `<strong>Dr:Fert+</strong> `;
-				break;
-			case "super fertility drugs":
-				r += `<strong>Dr:Fert++</strong> `;
-				break;
-			case "penis enhancement":
-				r += `<strong>Dr:Dick+</strong> `;
-				break;
-			case "intensive penis enhancement":
-				r += `<strong>Dr:Dick++</strong> `;
-				break;
-			case "hyper penis enhancement":
-				r += `<strong>Dr:Dick+++</strong> `;
-				break;
-			case "testicle enhancement":
-				r += `<strong>Dr:Balls+</strong> `;
-				break;
-			case "intensive testicle enhancement":
-				r += `<strong>Dr:Balls++</strong> `;
-				break;
-			case "hyper testicle enhancement":
-				r += `<strong>Dr:Balls+++</strong> `;
-				break;
-			case "psychosuppressants":
-				r += `<strong>Dr:Psych</strong> `;
-				break;
-			case "steroids":
-				r += `<strong>Dr:Ster</strong> `;
-				break;
-			case "female hormone injections":
-				r += `<strong>Dr:HormXX++</strong> `;
-				break;
-			case "male hormone injections":
-				r += `<strong>Dr:HormXY++</strong> `;
-				break;
-			case "hormone enhancers":
-				r += `<strong>Dr:Horm+</strong> `;
-				break;
-			case "hormone blockers":
-				r += `<strong>Dr:Horm-</strong> `;
-				break;
-			case "anti-aging cream":
-				r += `<strong>Dr:Age-</strong> `;
-				break;
-			case "appetite suppressors":
-				r += `<strong>Dr:ApSup</strong> `;
-				break;
-			case "penis atrophiers":
-				r += `<strong>Dr:Dick-</strong> `;
-				break;
-			case "testicle atrophiers":
-				r += `<strong>Dr:Balls-</strong> `;
-				break;
-			case "clitoris atrophiers":
-				r += `<strong>Dr:Clit-</strong> `;
-				break;
-			case "labia atrophiers":
-				r += `<strong>Dr:Labia-</strong> `;
-				break;
-			case "nipple atrophiers":
-				r += `<strong>Dr:Nipple-</strong> `;
-				break;
-			case "lip atrophiers":
-				r += `<strong>Dr:Lip-</strong> `;
-				break;
-			case "breast redistributors":
-				r += `<strong>Dr:Breast-</strong> `;
-				break;
-			case "butt redistributors":
-				r += `<strong>Dr:Butt-</strong> `;
-				break;
-			case "sag-B-gone":
-				r += `<strong>Dr:AntiSag</strong> `;
-				break;
-			case "growth stimulants":
-				r += `<strong>Dr:groStim</strong> `;
-				break;
-		}
-		r += `</span> `;
-		r += `<span class="lightgreen">`;
-		if (child.curatives === 2) {
-			r += `<strong>Cura</strong> `;
-		} else if (child.curatives === 1) {
-			r += `<strong>Prev</strong> `;
+	function ChildSummaryUncached(child) {
+		if (V.abbreviateDevotion === 1) {
+			shortDevotion(child);
+		} else if (V.abbreviateDevotion === 2) {
+			longDevotion(child);
 		}
-		r += `</span> `;
-		if (child.aphrodisiacs !== 0) {
-			r += `<span class="lightblue">`;
-			if (child.aphrodisiacs === 1) {
-				r += `<strong>Aph</strong> `;
-			} else if (child.aphrodisiacs === 2) {
-				r += `<strong>Aph++</strong> `;
-			} else {
-				r += `<strong>Anaph</strong> `;
+		if (child.fuckdoll === 0) {
+			if (V.abbreviateRules === 1) {
+				shortRules(child);
+			} else if (V.abbreviateRules === 2) {
+				longRules(child);
 			}
-			r += `</span> `;
 		}
-		if (child.addict !== 0) {
-			r += `<span class="cyan">Add</span> `;
-		}
-		r += `<span class="lightsalmon">`;
-		if (child.hormones > 1) {
-			r += `<strong>Ho:F+</strong> `;
-		} else if (child.hormones > 0) {
-			r += `<strong>Ho:F</strong> `;
-		} else if (child.hormones < -1) {
-			r += `<strong>Ho:M+</strong> `;
-		} else if (child.hormones < 0) {
-			r += `<strong>Ho:M</strong> `;
-		}
-		r += `</span> `;
-		r += `<span class="mediumseagreen">`;
-		if ((child.bellyImplant > -1)) {
-			r += `<strong>Belly Imp</strong> `;
-		} else if (((child.preg <= -2) || (child.ovaries === 0)) && (child.vagina !== -1)) {
-			r += `<strong>Barr</strong> `;
-		} else if (child.pubertyXX === 0 && (child.ovaries === 1 || child.mpreg === 1)) {
-			r += `<strong>Prepub</strong> `;
-		} else if (child.ovaryAge >= 47 && (child.ovaries === 1 || child.mpreg === 1)) {
-			r += `<strong>Meno</strong> `;
-		} else if (child.pregWeek < 0) {
-			r += `<strong>Postpartum</strong> `;
-		} else if (child.preg === -1) {
-			r += `<strong>CC</strong> `;
-		} else if (child.preg === 0 && (child.ovaries === 1 || child.mpreg === 1)) {
-			r += `<strong>Fert+</strong> `;
-			// } else if (((child.preg < child.pregData.normalBirth / 10) && (child.preg > 0) && child.pregKnown === 0) || child.pregWeek === 1) {
-			//	r += `<strong>Preg?</strong> `;
-		} else if ((child.preg >= 36) && (child.broodmother > 0)) {
-			r += `<strong>Perm preg</strong> `;
-		} else if (child.pregKnown === 1) {
-			r += `<strong>${child.pregWeek} wks preg</strong> `;
-		}
-		r += `</span> `;
-		if (child.induce === 1) {
-			r += `<span class="orange"><strong>Early Labor</strong></span> `;
-		}
-		if (child.pubertyXY === 0 && child.balls > 0) {
-			r += `<strong>Prepub balls</strong> `;
-		}
-		if (child.balls > 0 && child.vasectomy === 1) {
-			r += `<strong>Vasect</strong> `;
-		}
-		r += `<span class="springgreen">`;
-		if (child.inflation === 3) {
-			r += `<strong>8 ltr ${child.inflationType}</strong> `;
-		} else if (child.inflation === 2) {
-			r += `<strong>4 ltr ${child.inflationType}</strong> `;
-		} else if (child.inflation === 1) {
-			r += `<strong>2 ltr ${child.inflationType}</strong> `;
-		} else if (child.bellyFluid > 0) {
-			r += `<strong>${child.bellyFluid}ccs ${child.inflationType}</strong> `;
-		}
-		r += `</span> `;
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function longDrugs(child) {
-		if ((child.drugs !== "no drugs") && (child.drugs !== "none")) {
-			r += `<span class="tan">On ${child.drugs}.</span> `;
+		if (child.tired !== 0) {
+			r += `Tired. `;
 		}
-		r += `<span class="lightgreen">`;
-		if (child.curatives === 2) {
-			r += `On curatives. `;
-		} else if (child.curatives === 1) {
-			r += `On preventatives. `;
+		if (V.abbreviateDiet === 1) {
+			shortWeight(child);
+		} else if (V.abbreviateDiet === 2) {
+			longWeight(child);
 		}
-		r += `</span> `;
-		r += `<span class="lightblue">`;
-		if (child.aphrodisiacs > 0) {
-			r += `On ${child.aphrodisiacs > 1 ? 'extreme': ''} aphrodisiacs. `;
-		} else if (child.aphrodisiacs === -1) {
-			r += `On anaphrodisiacs. `;
+		if (V.abbreviateDiet === 1) {
+			shortDiet(child);
+		} else if (V.abbreviateDiet === 2) {
+			longDiet(child);
 		}
-		r += `</span> `;
-		if (child.addict !== 0) {
-			r += `<span class="cyan">Addict.</span> `;
+		if (V.abbreviateHealth === 1) {
+			shortHealth(child);
+		} else if (V.abbreviateHealth === 2) {
+			longHealth(child);
 		}
-		r += `<span class="lightsalmon">`;
-		if (child.hormones > 1) {
-			r += `Heavy female hormones. `;
-		} else if (child.hormones > 0) {
-			r += `Female hormones. `;
-		} else if (child.hormones < -1) {
-			r += `Heavy male hormones. `;
-		} else if (child.hormones < 0) {
-			r += `Male hormones. `;
+		if (V.abbreviateDrugs === 1) {
+			shortDrugs(child);
+		} else if (V.abbreviateDrugs === 2) {
+			longDrugs(child);
 		}
-		r += `</span> `;
-		r += `<span class="mediumseagreen">`;
-		if ((child.bellyImplant > -1)) {
-			r += `Belly Implant. `;
-		} else if (((child.preg <= -2) || (child.ovaries === 0)) && (child.vagina !== -1)) {
-			r += `Barren. `;
-		} else if (child.pubertyXX === 0 && (child.ovaries === 1 || child.mpreg === 1)) {
-			r += `Not ovulating yet. `;
-		} else if (child.ovaryAge >= 47 && (child.ovaries === 1 || child.mpreg === 1)) {
-			r += `Menopausal. `;
-		} else if (child.pregWeek < 0) {
-			r += `Postpartum. `;
-		} else if (child.preg === -1) {
-			r += `On contraceptives. `;
-		} else if (child.preg === 0 && (child.ovaries === 1 || child.mpreg === 1)) {
-			r += `Fertile. `;
-		} else if (((child.preg < child.pregData.normalBirth / 10) && (child.preg > 0) && child.pregKnown === 0) || child.pregWeek === 1) {
-			r += `May be pregnant. `;
-		} else if ((child.preg >= 36) && (child.broodmother > 0)) {
-			r += `Permanently pregnant. `;
-		} else if (child.pregKnown === 1) {
-			if (child.pregType < 2 || child.broodmother > 0) {
-				r += `${child.pregWeek} weeks pregnant. `;
-			} else {
-				r += `${child.pregWeek} weeks pregnant with `;
-				if (child.pregType >= 40) {
-					r += `a tremendous brood of offspring. `;
-				} else if (child.pregType >= 20) {
-					r += `a brood of offspring. `;
-				} else if (child.pregType >= 10) {
-					r += `${child.pregType} babies. `;
-				} else if (child.pregType === 9) {
-					r += `nonuplets. `;
-				} else if (child.pregType === 8) {
-					r += `octuplets. `;
-				} else if (child.pregType === 7) {
-					r += `septuplets. `;
-				} else if (child.pregType === 6) {
-					r += `sextuplets. `;
-				} else if (child.pregType === 5) {
-					r += `quintuplets. `;
-				} else if (child.pregType === 4) {
-					r += `quadruplets. `;
-				} else if (child.pregType === 3) {
-					r += `triplets. `;
-				} else {
-					r += `twins. `;
-				}
+		if (V.abbreviateNationality + V.abbreviateGenitalia + V.abbreviatePhysicals + V.abbreviateSkills + V.abbreviateMental !== 0) {
+			r += `<br> `;
+			if (V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1) {
+				r += "&nbsp;&nbsp;&nbsp;&nbsp;";
 			}
-			if (child.preg > child.pregData.normalBirth && child.broodmother === 0) {
-				r += ` (Overdue.)`;
+		}
+		V.desc = SlaveTitle(child);
+		const firstLetter = V.desc.substring(0, 1).toUpperCase();
+		V.desc = firstLetter + V.desc.substring(1);
+		r += `<strong><span class="coral">${V.desc}${V.abbreviatePhysicals === 2? '.' : ''}</span></strong> `;
+		if (V.seeRace === 1) {
+			r += `<span class="tan">`;
+			if (V.abbreviateRace === 1) {
+				shortRace(child);
+			} else if (V.abbreviateRace === 2) {
+				longRace(child);
 			}
+			r += `</span> `;
 		}
-		r += `</span> `;
-		if (child.induce === 1) {
-			r += `<span class="orange">Showing signs of early labor.</span> `;
+		if (V.abbreviateNationality === 1) {
+			shortNationality(child);
+		} else if (V.abbreviateNationality === 2) {
+			longNationality(child);
 		}
-		if (child.pubertyXY === 0 && child.balls > 0) {
-			r += `Has not had first ejaculation. `;
+		if (V.abbreviatePhysicals === 1) {
+			shortSkin(child);
+		} else {
+			r += `<span class="pink">${child.skin.charAt(0).toUpperCase() + child.skin.slice(1)} skin.</span> `;
 		}
-		if (child.balls > 0 && child.vasectomy === 1) {
-			r += `Vasectomy. `;
+		if (V.abbreviateGenitalia === 1) {
+			shortGenitals(child);
+		} else if (V.abbreviateGenitalia === 2) {
+			longGenitals(child);
 		}
-		r += `<span class="springgreen">`;
-		if (child.inflation === 3) {
-			r += `Filled with 8 liters of ${child.inflationType}. `;
-		} else if (child.inflation === 2) {
-			r += `Filled with 4 liters of ${child.inflationType}. `;
-		} else if (child.inflation === 1) {
-			r += `Filled with 2 liters of ${child.inflationType}. `;
-		} else if (child.bellyFluid > 0) {
-			r += `Stuffed with ${child.bellyFluid}ccs of ${child.inflationType}. `;
+		if (V.abbreviatePhysicals === 1) {
+			shortAge(child);
+			shortFace(child);
+			shortEyes(child);
+			shortEars(child);
+			if (child.markings !== "none") {
+				r += "Markings";
+			}
+			shortLips(child);
+			shortTeeth(child);
+			shortMuscles(child);
+			shortLimbs(child);
+			shortVoice(child);
+			shortTitsAss(child);
+			shortHips(child);
+			shortWaist(child);
+			shortImplants(child);
+			shortLactation(child);
+			shortMods(child);
+			r += `</span> `;
+		} else if (V.abbreviatePhysicals === 2) {
+			longAge(child);
+			longFace(child);
+			longEyes(child);
+			longEars(child);
+			longLips(child);
+			longTeeth(child);
+			longMuscles(child);
+			longLimbs(child);
+			longVoice(child);
+			longTitsAss(child);
+			longHips(child);
+			longWaist(child);
+			longImplants(child);
+			longLactation(child);
+			longMods(child);
+			if (child.brand !== 0) {
+				r += `Branded. `;
+			}
+			r += `</span> `;
 		}
-		r += `</span> `;
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function shortRace(child) {
-		switch (child.race) {
-			case "white":
-				r += `C`;
-				break;
-			case "asian":
-				r += `A`;
-				break;
-			case "indo-aryan":
-				r += `I`;
-				break;
-			case "latina":
-				r += `L`;
-				break;
-			case "middle eastern":
-				r += `ME`;
-				break;
-			case "black":
-				r += `B`;
-				break;
-			case "pacific islander":
-				r += `PI`;
-				break;
-			case "malay":
-				r += `M`;
-				break;
-			case "amerindian":
-				r += `AI`;
-				break;
-			case "semitic":
-				r += `S`;
-				break;
-			case "southern european":
-				r += `SE`;
-				break;
-			case "mixed race":
-				r += `MR`;
-				break;
-			default:
-				r += `${child.race.charAt(0).toUpperCase() + child.race.charAt(1) + child.race.charAt(2)}`;
-				break;
+		if (V.abbreviateHormoneBalance === 1) {
+			if (child.hormoneBalance <= -21) {
+				r += `<span class="deepskyblue">`;
+				r += ` <strong>HB:M</strong> `;
+			} else if (child.hormoneBalance <= 20) {
+				r += `<span class="pink">`;
+				r += ` <strong>HB:N</strong> `;
+			} else if (child.hormoneBalance <= 500) {
+				r += `<span class="pink">`;
+				r += ` <strong>HB:F</strong> `;
+			}
+			r += `</span> `;
+		} else if (V.abbreviateHormoneBalance === 2) {
+			r += `<span class=`;
+			if (child.hormoneBalance <= -21) {
+				r += `"deepskyblue"`;
+			} else {
+				r += `"pink"`;
+			}
+			r += `> `;
+			if (child.hormoneBalance < -400) {
+				r += `Overwhelmingly masculine`;
+			} else if (child.hormoneBalance <= -300) {
+				r += `Extremely masculine`;
+			} else if (child.hormoneBalance <= -200) {
+				r += `Heavily masculine`;
+			} else if (child.hormoneBalance <= -100) {
+				r += `Very masculine`;
+			} else if (child.hormoneBalance <= -21) {
+				r += `Masculine`;
+			} else if (child.hormoneBalance <= 20) {
+				r += `Neutral`;
+			} else if (child.hormoneBalance <= 99) {
+				r += `Feminine`;
+			} else if (child.hormoneBalance <= 199) {
+				r += `Very feminine`;
+			} else if (child.hormoneBalance <= 299) {
+				r += `Heavily feminine`;
+			} else if (child.hormoneBalance <= 399) {
+				r += `Extremely feminine`;
+			} else if (child.hormoneBalance <= 500) {
+				r += `Overwhelmingly feminine`;
+			}
+			r += ` hormone balance.</span> `;
+		}
+		r += "<br>";
+		if (V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1) {
+			r += "&nbsp;&nbsp;&nbsp;&nbsp;";
+		}
+		if (V.abbreviateSkills === 1) {
+			shortIntelligence(child);
+			shortSexSkills(child);
+			if (child.skill.combat > 0) {
+				r += "C";
+			}
+			r += "</span> ";
+			shortPrestige(child);
+			shortPornPrestige(child);
+		} else if (V.abbreviateSkills === 2) {
+			longIntelligence(child);
+			longSexSkills(child);
+			if (child.skill.combat > 0) {
+				r += "Trained fighter.";
+			}
+			r += "</span> ";
+			longPrestige(child);
+			longPornPrestige(child);
+		}
+		if (V.abbreviateMental === 1) {
+			if (child.fetish !== "mindbroken") {
+				if (child.fetishKnown === 1) {
+					shortFetish(child);
+				}
+				if (child.attrKnown === 1) {
+					shortAttraction(child);
+				}
+			}
+			if (child.clitPiercing === 3) {
+				shortSmartFetish(child);
+				shortSmartAttraction(child);
+			}
+			shortBehaviorFlaw(child);
+			shortSexFlaw(child);
+			shortBehaviorQuirk(child);
+			shortSexQuirk(child);
+		} else if (V.abbreviateMental === 2) {
+			if (child.fetish !== "mindbroken") {
+				if (child.fetishKnown === 1) {
+					longFetish(child);
+				}
+				if (child.attrKnown === 1) {
+					longAttraction(child);
+				}
+			}
+			if (child.clitPiercing === 3) {
+				longSmartFetish(child);
+				longSmartAttraction(child);
+			}
+			longBehaviorFlaw(child);
+			longSexFlaw(child);
+			longBehaviorQuirk(child);
+			longSexQuirk(child);
+		}
+		if (child.custom.label) {
+			r += `<strong><span class="yellow">${capFirstChar(child.custom.label)}</span></strong> `;
+		}
+		if ((child.relationship !== 0) || (child.relation !== 0) || (V.abbreviateClothes === 2) || (V.abbreviateRulesets === 2)) {
+			r += `<br> `;
+			if (V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1) {
+				r += `&nbsp;&nbsp;&nbsp;&nbsp;`;
+			}
+		}
+		if (V.abbreviateMental === 1) {
+			r += `<span class="lightgreen">`;
+			if (V.familyTesting === 1) {
+				shortExtendedFamily(child);
+			} else {
+				shortLegacyFamily(child);
+			}
+			r += `</span> `;
+			shortClone(child);
+			shortRival(child);
+		} else if (V.abbreviateMental === 2) {
+			if (V.familyTesting === 1) {
+				longExtendedFamily(child);
+			} else {
+				longLegacyFamily(child);
+			}
+			longClone(child);
+			longRival(child);
+		}
+		if (child.fuckdoll === 0) {
+			if (V.abbreviateClothes === 2) {
+				r += `&nbsp;&nbsp;&nbsp;&nbsp;`;
+				if (child.choosesOwnClothes === 1) {
+					r += "Dressing herself. ";
+				}
+				longClothes(child);
+				longCollar(child);
+				longBelly(child);
+				if (child.amp !== 1) {
+					longLegs(child);
+				}
+				if (canWalk(child)) {
+					longShoes(child);
+				}
+				longChastity(child);
+				longVaginalAcc(child);
+				longDickAcc(child);
+				longButtplug(child);
+			}
+		}
+		r += `&nbsp;&nbsp;&nbsp;&nbsp;`;
+		rulesAssistant(child);
+		if (V.abbreviateOrigins === 2 && child.origin !== 0) {
+			origins(child);
 		}
+		return r;
 	}
 
 	/**
 	 * @param {App.Entity.SlaveState} child
 	 */
-	function longRace(child) {
-		switch (child.race) {
-			case "white":
-				r += `Caucasian. `;
-				break;
-			case "asian":
-				r += `Asian. `;
-				break;
-			case "indo-aryan":
-				r += `Indo-aryan. `;
-				break;
-			case "latina":
-				r += `Latina. `;
-				break;
-			case "middle eastern":
-				r += `Middle Eastern. `;
-				break;
-			case "black":
-				r += `Black. `;
-				break;
-			case "pacific islander":
-				r += `Pacific Islander. `;
-				break;
-			case "malay":
-				r += `Malay. `;
-				break;
-			case "amerindian":
-				r += `Amerindian. `;
-				break;
-			case "semitic":
-				r += `Semitic. `;
-				break;
-			case "southern european":
-				r += `Southern European. `;
-				break;
-			case "mixed race":
-				r += `Mixed race. `;
-				break;
-			default:
-				r += `${child.race.charAt(0).toUpperCase() + child.race.slice(1)}. `;
-				break;
+	function shortDevotion(child) {
+		if (child.fetish === "mindbroken") {
+			r += `<span class="red">MB</span> `;
+		} else if (child.devotion < -95) {
+			r += `<span class="darkviolet">Hate${V.summaryStats ? `[${child.devotion}]` : ''}</span> `;
+		} else if (child.devotion < -50) {
+			r += `<span class="darkviolet">Hate${V.summaryStats ? `[${child.devotion}]` : ''}</span> `;
+		} else if (child.devotion < -20) {
+			r += `<span class="mediumorchid">Res${V.summaryStats ? `[${child.devotion}]` : ''}</span> `;
+		} else if (child.devotion <= 20) {
+			r += `<span class="yellow">Ambiv${V.summaryStats ? `[${child.devotion}]` : ''}</span> `;
+		} else if (child.devotion <= 50) {
+			r += `<span class="hotpink">Accept${V.summaryStats ? `[${child.devotion}]` : ''}</span> `;
+		} else if (child.devotion <= 95) {
+			r += `<span class="deeppink">Devo${V.summaryStats ? `[${child.devotion}]` : ''}</span> `;
+		} else {
+			r += `<span class="magenta">Wor${V.summaryStats ? `[${child.devotion}]` : ''}</span> `;
+		}
+		if (child.fetish === "mindbroken") {
+			return;
+		} else if (child.trust < -95) {
+			r += `<span class="darkgoldenrod">ETerr${V.summaryStats ? `[${child.trust}]` : ''}</span> `;
+		} else if (child.trust < -50) {
+			r += `<span class="goldenrod">Terr${V.summaryStats ? `[${child.trust}]` : ''}</span> `;
+		} else if (child.trust < -20) {
+			r += `<span class="gold">Fright${V.summaryStats ? `[${child.trust}]` : ''}</span> `;
+		} else if (child.trust <= 20) {
+			r += `<span class="yellow">Fear${V.summaryStats ? `[${child.trust}]` : ''}</span> `;
+		} else if (child.trust <= 50) {
+			if (child.devotion < -20) {
+				r += `<span class="orange">Caref${V.summaryStats ? `[${child.trust}]` : ''}</span> `;
+			} else {
+				r += `<span class="mediumaquamarine">Caref${V.summaryStats ? `[${child.trust}]` : ''}</span> `;
+			}
+		} else if (child.trust < 95) {
+			if (child.devotion < -20) {
+				r += `<span class="orangered">Bold${V.summaryStats ? `[${child.trust}]` : ''}</span> `;
+			} else {
+				r += `<span class="mediumseagreen">Trust${V.summaryStats ? `[${child.trust}]` : ''}</span> `;
+			}
+		} else {
+			if (child.devotion < -20) {
+				r += `<span class="darkred">Defiant${V.summaryStats ? `[${child.trust}]` : ''}</span> `;
+			} else {
+				r += `<span class="seagreen">VTrust ${V.summaryStats ? `[${child.trust}]` : ''}</span> `;
+			}
 		}
 	}
 
 	/**
 	 * @param {App.Entity.SlaveState} child
 	 */
-	function shortNationality(child) {
-		r += `<span class="tan">`;
-		switch (child.nationality) {
-			case "Afghan":
-				r += `Afg`;
-				break;
-			case "Albanian":
-				r += `Alb`;
-				break;
-			case "Algerian":
-				r += `Alg`;
-				break;
-			case "American":
-				r += `USA`;
-				break;
-			case "Andorran":
-				r += `And`;
-				break;
-			case "Angolan":
-				r += `Ang`;
+	function longDevotion(child) {
+		if (child.fetish === "mindbroken") {
+			r += `<span class="red">Mindbroken.</span> `;
+		} else if (child.devotion < -95) {
+			r += `<span class="darkviolet">Very hateful${V.summaryStats ? `[${child.devotion}]` : ''}.</span> `;
+		} else if (child.devotion < -50) {
+			r += `<span class="darkviolet">Hateful${V.summaryStats ? `[${child.devotion}]` : ''}.</span> `;
+		} else if (child.devotion < -20) {
+			r += `<span class="mediumorchid">Resistant${V.summaryStats ? `[${child.devotion}]` : ''}.</span> `;
+		} else if (child.devotion <= 20) {
+			r += `<span class="yellow">Ambivalent${V.summaryStats ? `[${child.devotion}]` : ''}.</span> `;
+		} else if (child.devotion <= 50) {
+			r += `<span class="hotpink">Accepting${V.summaryStats ? `[${child.devotion}]` : ''}.</span> `;
+		} else if (child.devotion <= 95) {
+			r += `<span class="deeppink">Devoted${V.summaryStats ? `[${child.devotion}]` : ''}.</span> `;
+		} else {
+			r += `<span class="magenta">Worshipful${V.summaryStats ? `[${child.devotion}]` : ''}.</span> `;
+		}
+		if (child.fetish === "mindbroken") {
+			return;
+		} else if (child.trust < -95) {
+			r += `<span class="darkgoldenrod">Extremely terrified${V.summaryStats ? `[${child.trust}]` : ''}.</span> `;
+		} else if (child.trust < -50) {
+			r += `<span class="goldenrod">Terrified${V.summaryStats ? `[${child.trust}]` : ''}.</span> `;
+		} else if (child.trust < -20) {
+			r += `<span class="gold">Frightened${V.summaryStats ? `[${child.trust}]` : ''}.</span> `;
+		} else if (child.trust <= 20) {
+			r += `<span class="yellow">Fearful${V.summaryStats ? `[${child.trust}]` : ''}.</span> `;
+		} else if (child.trust <= 50) {
+			if (child.devotion < -20) {
+				r += `<span class="orange">Careful${V.summaryStats ? `[${child.trust}]` : ''}.</span> `;
+			} else {
+				r += `<span class="mediumaquamarine">Careful${V.summaryStats ? `[${child.trust}]` : ''}.</span> `;
+			}
+		} else if (child.trust < 95) {
+			if (child.devotion < -20) {
+				r += `<span class="orangered">Bold${V.summaryStats ? `[${child.trust}]` : ''}.</span> `;
+			} else {
+				r += `<span class="mediumseagreen">Trusting${V.summaryStats ? `[${child.trust}]` : ''}.</span> `;
+			}
+		} else {
+			if (child.devotion < -20) {
+				r += `<span class="darkred">Defiant${V.summaryStats ? `[${child.trust}]` : ''}.</span> `;
+			} else {
+				r += `<span class="seagreen">Profoundly trusting${V.summaryStats ? `[${child.trust}]` : ''}.</span> `;
+			}
+		}
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function shortRules(child) {
+		switch (child.livingRules) {
+			case "luxurious":
+				r += `<strong>LS:Lux</strong> `;
 				break;
-			case "Antiguan":
-				r += `AB`;
+			case "normal":
+				r += `<strong>LS:Nor</strong> `;
 				break;
-			case "Argentinian":
-				r += `Arg`;
+			default:
+				r += `<strong>LS:Spa</strong> `;
 				break;
-			case "Armenian":
-				r += `Arm`;
+		}
+		if (canTalk(child)) {
+			switch (child.speechRules) {
+				case "permissive":
+					r += `<strong>SpR:P</strong> `;
+					break;
+				case "accent elimination":
+					r += `<strong>SpR:NoAcc</strong> `;
+					break;
+				case "language lessons":
+					r += `<strong>SpR:LL</strong> `;
+					break;
+				default:
+					r += `<strong>SpR:R</strong> `;
+					break;
+			}
+			r += " ";
+		}
+		switch (child.relationshipRules) {
+			case "permissive":
+				r += `<strong>ReR:P</strong> `;
 				break;
-			case "Aruban":
-				r += `Aru`;
+			case "just friends":
+				r += `<strong>ReR:Fr</strong> `;
 				break;
-			case "Australian":
-				r += `Aus`;
+			default:
+				r += `<strong>ReR:R</strong> `;
 				break;
-			case "Austrian":
-				r += `Aut`;
+		}
+		switch (child.standardPunishment) {
+			case "confinement":
+				r += `<strong>Pun:Conf</strong> `;
 				break;
-			case "Azerbaijani":
-				r += `Aze`;
+			case "whipping":
+				r += `<strong>Pun:Whip</strong> `;
 				break;
-			case "Bahamian":
-				r += `Bah`;
+			case "chastity":
+				r += `<strong>Pun:Chas</strong> `;
 				break;
-			case "Bahraini":
-				r += `Bah`;
+			default:
+				r += `<strong>Pun:Situ</strong> `;
 				break;
-			case "Bangladeshi":
-				r += `Bgd`;
+		}
+		switch (child.standardReward) {
+			case "relaxation":
+				r += `<strong>Rew:Relx</strong> `;
 				break;
-			case "Barbadian":
-				r += `Bar`;
+			case "drugs":
+				r += `<strong>Rew:Drug</strong> `;
 				break;
-			case "Belarusian":
-				r += `Ber`;
+			case "orgasm":
+				r += `<strong>Rew:Orga</strong> `;
 				break;
-			case "Belgian":
-				r += `Bel`;
+			default:
+				r += `<strong>Rew:Situ</strong> `;
 				break;
-			case "Belizean":
-				r += `Blz`;
+		}
+		switch (child.releaseRules) {
+			case "permissive":
+				r += `<strong>MaR:P</strong> `;
 				break;
-			case "Beninese":
-				r += `Ben`;
+			case "sapphic":
+				r += `<strong>MaR:S</strong> `;
 				break;
-			case "Bermudian":
-				r += `Bmd`;
+			case "masturbation":
+				r += `<strong>MaR:M</strong> `;
 				break;
-			case "Bhutanese":
-				r += `Bhu`;
+			case "chastity":
+				r += `<strong>MaR:C</strong> `;
 				break;
-			case "Bissau-Guinean":
-				r += `GB`;
+			default:
+				r += `<strong>MaR:R</strong> `;
 				break;
-			case "Bolivian":
-				r += `Bol`;
-				break;
-			case "Bosnian":
-				r += `Bos`;
-				break;
-			case "Brazilian":
-				r += `Bra`;
-				break;
-			case "British":
-				r += `UK`;
-				break;
-			case "Bruneian":
-				r += `Bru`;
-				break;
-			case "Bulgarian":
-				r += `Bul`;
-				break;
-			case "Burkinabé":
-				r += `BF`;
-				break;
-			case "Burmese":
-				r += `Bur`;
-				break;
-			case "Burundian":
-				r += `Bnd`;
-				break;
-			case "Cambodian":
-				r += `Kam`;
+		}
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function longRules(child) {
+		r += `Living standard: ${child.livingRules}. `;
+		if (canTalk(child)) {
+			r += `Speech rules: ${child.speechRules}. `;
+		}
+		r += `Relationship rules: ${child.relationshipRules}. `;
+		r += `Typical punishment: ${child.standardPunishment}. `;
+		r += `Typical reward: ${child.standardReward}. `;
+		r += `Release rules: ${child.releaseRules}. `;
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function shortWeight(child) {
+		if (child.weight < -95) {
+			r += `<strong><span class="red">W---${V.summaryStats? `[${child.weight}]` : ''}</span></strong> `;
+		} else if (child.weight < -30) {
+			if (child.hips < -1) {
+				r += `<strong>W--${V.summaryStats? `[${child.weight}]` : ''}</strong> `;
+			} else {
+				r += `<strong><span class="red">W--${V.summaryStats? `[${child.weight}]` : ''}</span></strong> `;
+			}
+		} else if (child.weight < -10) {
+			r += `<strong>W-${V.summaryStats? `[${child.weight}]` : ''}</strong> `;
+		} else if (child.weight <= 10) {
+			r += `<strong>W${V.summaryStats? `[${child.weight}]` : ''}</strong> `;
+		} else if (child.weight <= 30) {
+			r += `<strong>W+${V.summaryStats? `[${child.weight}]` : ''}</strong> `;
+		} else if (child.weight <= 95) {
+			if (child.hips > 1 || V.arcologies[0].FSHedonisticDecadence !== "unset") {
+				r += `<strong>W++${V.summaryStats? `[${child.weight}]` : ''}</strong> `;
+			} else {
+				r += `<strong><span class="red">W++${V.summaryStats? `[${child.weight}]` : ''}</span></strong> `;
+			}
+		} else if (child.weight <= 130) {
+			if (child.hips > 2 || V.arcologies[0].FSHedonisticDecadence !== "unset") {
+				r += `<strong>W+++${V.summaryStats? `[${child.weight}]` : ''}</strong> `;
+			} else {
+				r += `<strong><span class="red">W+++${V.summaryStats? `[${child.weight}]` : ''}</span></strong> `;
+			}
+		} else if (child.weight <= 160) {
+			if (V.arcologies[0].FSHedonisticDecadence !== "unset") {
+				r += `<strong>W++++${V.summaryStats? `[${child.weight}]` : ''}</strong> `;
+			} else {
+				r += `<strong><span class="red">W++++${V.summaryStats? `[${child.weight}]` : ''}</span></strong> `;
+			}
+		} else if (child.weight <= 190) {
+			if (V.arcologies[0].FSHedonisticDecadence !== "unset") {
+				r += `<strong>W+++++${V.summaryStats? `[${child.weight}]` : ''}</strong> `;
+			} else {
+				r += `<strong><span class="red">W+++++${V.summaryStats? `[${child.weight}]` : ''}</span></strong> `;
+			}
+		} else {
+			if (V.arcologies[0].FSHedonisticDecadence !== "unset") {
+				r += `<strong>W++++++${V.summaryStats? `[${child.weight}]` : ''}</strong> `;
+			} else {
+				r += `<strong><span class="red">W++++++${V.summaryStats? `[${child.weight}]` : ''}</span></strong> `;
+			}
+		}
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function longWeight(child) {
+		if (child.weight < -95) {
+			r += `<span class="red">Emaciated${V.summaryStats ? `[${child.weight}]`: ''}.</span> `;
+		} else if (child.weight < -30) {
+			if (child.hips < -1) {
+				r += `Model-thin${V.summaryStats? `[${child.weight}]`: ''}. `;
+			} else {
+				r += `<span class="red">Very thin${V.summaryStats ? `[${child.weight}]`: ''}.</span> `;
+			}
+		} else if (child.weight < -10) {
+			r += `Thin${V.summaryStats? `[${child.weight}]`: ''}. `;
+		} else if (child.weight <= 10) {
+			r += `Trim${V.summaryStats? `[${child.weight}]`: ''}. `;
+		} else if (child.weight <= 30) {
+			r += `Plush${V.summaryStats? `[${child.weight}]`: ''}. `;
+		} else if (child.weight <= 95) {
+			if (child.hips > 1 || V.arcologies[0].FSHedonisticDecadence !== "unset") {
+				r += `Nicely chubby${V.summaryStats? `[${child.weight}]`: ''}. `;
+			} else {
+				r += `<span class="red">Overweight${V.summaryStats ? `[${child.weight}]`: ''}.</span> `;
+			}
+		} else if (child.weight <= 130) {
+			if (child.hips > 2 || V.arcologies[0].FSHedonisticDecadence !== "unset") {
+				r += `Pleasantly soft and shapely${V.summaryStats? `[${child.weight}]`: ''}. `;
+			} else {
+				r += `<span class="red">Fat${V.summaryStats ? `[${child.weight}]`: ''}.</span> `;
+			}
+		} else if (child.weight <= 160) {
+			if (V.arcologies[0].FSHedonisticDecadence !== "unset") {
+				r += `Amazingly voluptuous${V.summaryStats? `[${child.weight}]`: ''}. `;
+			} else {
+				r += `<span class="red">Obese${V.summaryStats ? `[${child.weight}]`: ''}.</span> `;
+			}
+		} else if (child.weight <= 190) {
+			if (V.arcologies[0].FSHedonisticDecadence !== "unset") {
+				r += `SSBBW${V.summaryStats? `[${child.weight}]`: ''}. `;
+			} else {
+				r += `<span class="red">Super Obese${V.summaryStats ? `[${child.weight}]`: ''}.</span> `;
+			}
+		} else {
+			if (V.arcologies[0].FSHedonisticDecadence !== "unset") {
+				r += `Perfectly massive${V.summaryStats? `[${child.weight}]`: ''}. `;
+			} else {
+				r += `<span class="red">Dangerously Obese${V.summaryStats ? `[${child.weight}]`: ''}.</span> `;
+			}
+		}
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function shortDiet(child) {
+		r += `<span class="teal">`;
+		switch (child.diet) {
+			case "restricted":
+				r += `<strong>Di:W-</strong> `;
 				break;
-			case "Cameroonian":
-				r += `Cam`;
+			case "fattening":
+				r += `<strong>Di:W+</strong> `;
 				break;
-			case "Canadian":
-				r += `Can`;
+			case "XX":
+				r += `<strong>Di:XX+</strong> `;
 				break;
-			case "Cape Verdean":
-				r += `CV`;
+			case "XY":
+				r += `<strong>Di:XY+</strong> `;
 				break;
-			case "Catalan":
-				r += `Cat`;
+			case "XXY":
+				r += `<strong>Di:XXY+</strong> `;
 				break;
-			case "Central African":
-				r += `CAR`;
+			case "muscle building":
+				r += `<strong>Di:M+</strong> `;
 				break;
-			case "Chadian":
-				r += `Cha`;
+			case "slimming":
+				r += `<strong>Di:M-</strong> `;
 				break;
-			case "Chilean":
-				r += `Chl`;
+			case "cum production":
+				r += `<strong>Di:C+</strong> `;
 				break;
-			case "Chinese":
-				r += `Chi`;
+			case "cleansing":
+				r += `<strong>Di:H+</strong> `;
 				break;
-			case "Colombian":
-				r += `Col`;
+			case "fertility":
+				r += `<strong>Di:F+</strong> `;
 				break;
-			case "Comorian":
-				r += `Com`;
+		}
+		r += `</span> `;
+		r += `<span class="cyan">`;
+		if (child.dietCum === 2) {
+			r += `<strong>Cum++</strong> `;
+		} else if (((child.dietCum === 1) && (child.dietMilk === 0))) {
+			r += `<strong>Cum+</strong> `;
+		} else if (((child.dietCum === 1) && (child.dietMilk === 1))) {
+			r += `<strong>Cum+ Milk+</strong> `;
+		} else if (((child.dietCum === 0) && (child.dietMilk === 1))) {
+			r += `<strong>Milk+</strong> `;
+		} else if ((child.dietMilk === 2)) {
+			r += `<strong>Milk++</strong> `;
+		}
+		r += `</span> `;
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function longDiet(child) {
+		r += `<span class="teal">`;
+		switch (child.diet) {
+			case "restricted":
+				r += `Dieting. `;
 				break;
-			case "Congolese":
-				r += `RC`;
+			case "fattening":
+				r += `Gaining weight. `;
 				break;
-			case "a Cook Islander":
-				r += `CI`;
+			case "XX":
+				r += `Estrogen rich. `;
 				break;
-			case "Costa Rican":
-				r += `CR`;
+			case "XY":
+				r += `Testosterone rich. `;
 				break;
-			case "Croatian":
-				r += `Cro`;
+			case "XXY":
+				r += `Futanari mix. `;
 				break;
-			case "Cuban":
-				r += `Cub`;
+			case "muscle building":
+				r += `Pumping iron. `;
 				break;
-			case "Curaçaoan":
-				r += `Cur`;
+			case "slimming":
+				r += `Slimming down. `;
 				break;
-			case "Cypriot":
-				r += `Cyp`;
+			case "cum production":
+				r += `Cum production. `;
 				break;
-			case "Czech":
-				r += `Cze`;
+			case "cleansing":
+				r += `Cleansing. `;
 				break;
-			case "Danish":
-				r += `Den`;
+			case "fertility":
+				r += `Fertility. `;
 				break;
-			case "Djiboutian":
-				r += `Dji`;
-				break;
-			case "Dominican":
-				r += `DR`;
-				break;
-			case "Dominiquais":
-				r += `Dom`;
-				break;
-			case "Dutch":
-				r += `Nld`;
-				break;
-			case "East Timorese":
-				r += `ET`;
-				break;
-			case "Ecuadorian":
-				r += `Ecu`;
-				break;
-			case "Egyptian":
-				r += `Egy`;
-				break;
-			case "Emirati":
-				r += `UAE`;
-				break;
-			case "Equatoguinean":
-				r += `EG`;
-				break;
-			case "Eritrean":
-				r += `Eri`;
-				break;
-			case "Estonian":
-				r += `Est`;
-				break;
-			case "Ethiopian":
-				r += `Eth`;
-				break;
-			case "Fijian":
-				r += `Fij`;
-				break;
-			case "Filipina":
-				r += `Phl`;
-				break;
-			case "Finnish":
-				r += `Fin`;
-				break;
-			case "French":
-				r += `Fra`;
-				break;
-			case "French Guianan":
-				r += `FG`;
-				break;
-			case "French Polynesian":
-				r += `FP`;
-				break;
-			case "Gabonese":
-				r += `Gab`;
-				break;
-			case "Gambian":
-				r += `Gam`;
-				break;
-			case "Georgian":
-				r += `Geo`;
-				break;
-			case "German":
-				r += `Ger`;
-				break;
-			case "Ghanan":
-				r += `Gha`;
-				break;
-			case "Greek":
-				r += `Gre`;
+		}
+		r += `</span> `;
+		if (child.dietCum === 2) {
+			r += `Diet base: <span class="cyan">Cum Based.</span> `;
+		} else if (((child.dietCum === 1) && (child.dietMilk === 0))) {
+			r += `Diet base: <span class="cyan">Cum Added.</span> `;
+		} else if (((child.dietCum === 1) && (child.dietMilk === 1))) {
+			r += `Diet base: <span class="cyan">Milk & Cum Added.</span> `;
+		} else if (((child.dietCum === 0) && (child.dietMilk === 1))) {
+			r += `Diet base: <span class="cyan">Milk Added.</span> `;
+		} else if ((child.dietMilk === 2)) {
+			r += `Diet base: <span class="cyan">Milk Based.</span> `;
+		}
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function shortHealth(child) {
+		if (child.health < -20) {
+			r += `<strong><span class="red">H${V.summaryStats? `[${child.health}]` : ''}</span></strong> `;
+		} else if (child.health <= 20) {
+			r += `<strong><span class="yellow">H${V.summaryStats? `[${child.health}]` : ''}</span></strong> `;
+		} else if (child.health > 20) {
+			r += `<strong><span class="green">H${V.summaryStats? `[${child.health}]` : ''}</span></strong> `;
+		}
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function longHealth(child) {
+		if (child.health < -90) {
+			r += `<span class="red">On the edge of death${V.summaryStats? `[${child.health}]` : ''}.</span> `;
+		} else if (child.health < -50) {
+			r += `<span class="red">Extremely unhealthy${V.summaryStats? `[${child.health}]` : ''}.</span> `;
+		} else if (child.health < -20) {
+			r += `<span class="red">Unhealthy${V.summaryStats? `[${child.health}]` : ''}.</span> `;
+		} else if (child.health <= 20) {
+			r += `<span class="yellow">Healthy${V.summaryStats? `[${child.health}]` : ''}.</span> `;
+		} else if (child.health <= 50) {
+			r += `<span class="green">Very healthy${V.summaryStats? `[${child.health}]` : ''}.</span> `;
+		} else if (child.health <= 90) {
+			r += `<span class="green">Extremely healthy${V.summaryStats? `[${child.health}]` : ''}.</span> `;
+		} else {
+			r += `<span class="green">Unnaturally healthy${V.summaryStats? `[${child.health}]` : ''}.</span> `;
+		}
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function shortDrugs(child) {
+		r += `<span class="tan">`;
+		switch (child.drugs) {
+			case "breast injections":
+				r += `<strong>Dr:Boobs+</strong> `;
 				break;
-			case "Greenlandic":
-				r += `Grn`;
+			case "intensive breast injections":
+				r += `<strong>Dr:Boobs++</strong> `;
 				break;
-			case "Grenadian":
-				r += `Gda`;
+			case "hyper breast injections":
+				r += `<strong>Dr:Boobs+++</strong> `;
 				break;
-			case "Guamanian":
-				r += `Gua`;
+			case "butt injections":
+				r += `<strong>Dr:Butt+</strong> `;
 				break;
-			case "Guatemalan":
-				r += `Gtm`;
+			case "intensive butt injections":
+				r += `<strong>Dr:Butt++</strong> `;
 				break;
-			case "Guinean":
-				r += `Gui`;
+			case "hyper butt injections":
+				r += `<strong>Dr:Butt+++</strong> `;
 				break;
-			case "Guyanese":
-				r += `Guy`;
+			case "lip injections":
+				r += `<strong>Dr:Lip+</strong> `;
 				break;
-			case "Haitian":
-				r += `Hai`;
+			case "fertility drugs":
+				r += `<strong>Dr:Fert+</strong> `;
 				break;
-			case "Honduran":
-				r += `Hon`;
+			case "super fertility drugs":
+				r += `<strong>Dr:Fert++</strong> `;
 				break;
-			case "Hungarian":
-				r += `Hun`;
+			case "penis enhancement":
+				r += `<strong>Dr:Dick+</strong> `;
 				break;
-			case "I-Kiribati":
-				r += `Kir`;
+			case "intensive penis enhancement":
+				r += `<strong>Dr:Dick++</strong> `;
 				break;
-			case "Icelandic":
-				r += `Ice`;
+			case "hyper penis enhancement":
+				r += `<strong>Dr:Dick+++</strong> `;
 				break;
-			case "Indian":
-				r += `Ind`;
+			case "testicle enhancement":
+				r += `<strong>Dr:Balls+</strong> `;
 				break;
-			case "Indonesian":
-				r += `Idn`;
+			case "intensive testicle enhancement":
+				r += `<strong>Dr:Balls++</strong> `;
 				break;
-			case "Iranian":
-				r += `Irn`;
+			case "hyper testicle enhancement":
+				r += `<strong>Dr:Balls+++</strong> `;
 				break;
-			case "Iraqi":
-				r += `Irq`;
+			case "psychosuppressants":
+				r += `<strong>Dr:Psych</strong> `;
 				break;
-			case "Irish":
-				r += `Irl`;
+			case "steroids":
+				r += `<strong>Dr:Ster</strong> `;
 				break;
-			case "Israeli":
-				r += `Isr`;
+			case "female hormone injections":
+				r += `<strong>Dr:HormXX++</strong> `;
 				break;
-			case "Italian":
-				r += `Ita`;
+			case "male hormone injections":
+				r += `<strong>Dr:HormXY++</strong> `;
 				break;
-			case "Ivorian":
-				r += `IC`;
+			case "hormone enhancers":
+				r += `<strong>Dr:Horm+</strong> `;
 				break;
-			case "Jamaican":
-				r += `Jam`;
+			case "hormone blockers":
+				r += `<strong>Dr:Horm-</strong> `;
 				break;
-			case "Japanese":
-				r += `Jpn`;
+			case "anti-aging cream":
+				r += `<strong>Dr:Age-</strong> `;
 				break;
-			case "Jordanian":
-				r += `Jor`;
+			case "appetite suppressors":
+				r += `<strong>Dr:ApSup</strong> `;
 				break;
-			case "Kazakh":
-				r += `Kaz`;
+			case "penis atrophiers":
+				r += `<strong>Dr:Dick-</strong> `;
 				break;
-			case "Kenyan":
-				r += `Ken`;
+			case "testicle atrophiers":
+				r += `<strong>Dr:Balls-</strong> `;
 				break;
-			case "Kittitian":
-				r += `SKN`;
+			case "clitoris atrophiers":
+				r += `<strong>Dr:Clit-</strong> `;
 				break;
-			case "Korean":
-				r += `Kor`;
+			case "labia atrophiers":
+				r += `<strong>Dr:Labia-</strong> `;
 				break;
-			case "Kosovan":
-				r += `Kos`;
+			case "nipple atrophiers":
+				r += `<strong>Dr:Nipple-</strong> `;
 				break;
-			case "Kurdish":
-				r += `Kur`;
+			case "lip atrophiers":
+				r += `<strong>Dr:Lip-</strong> `;
 				break;
-			case "Kuwaiti":
-				r += `Kuw`;
+			case "breast redistributors":
+				r += `<strong>Dr:Breast-</strong> `;
 				break;
-			case "Kyrgyz":
-				r += `Kyr`;
+			case "butt redistributors":
+				r += `<strong>Dr:Butt-</strong> `;
 				break;
-			case "Laotian":
-				r += `Lao`;
+			case "sag-B-gone":
+				r += `<strong>Dr:AntiSag</strong> `;
 				break;
-			case "Latvian":
-				r += `Lat`;
+			case "growth stimulants":
+				r += `<strong>Dr:groStim</strong> `;
 				break;
-			case "Lebanese":
-				r += `Lbn`;
-				break;
-			case "Liberian":
-				r += `Lib`;
-				break;
-			case "Libyan":
-				r += `Lby`;
-				break;
-			case "a Liechtensteiner":
-				r += `Lie`;
+		}
+		r += `</span> `;
+		r += `<span class="lightgreen">`;
+		if (child.curatives === 2) {
+			r += `<strong>Cura</strong> `;
+		} else if (child.curatives === 1) {
+			r += `<strong>Prev</strong> `;
+		}
+		r += `</span> `;
+		if (child.aphrodisiacs !== 0) {
+			r += `<span class="lightblue">`;
+			if (child.aphrodisiacs === 1) {
+				r += `<strong>Aph</strong> `;
+			} else if (child.aphrodisiacs === 2) {
+				r += `<strong>Aph++</strong> `;
+			} else {
+				r += `<strong>Anaph</strong> `;
+			}
+			r += `</span> `;
+		}
+		if (child.addict !== 0) {
+			r += `<span class="cyan">Add</span> `;
+		}
+		r += `<span class="lightsalmon">`;
+		if (child.hormones > 1) {
+			r += `<strong>Ho:F+</strong> `;
+		} else if (child.hormones > 0) {
+			r += `<strong>Ho:F</strong> `;
+		} else if (child.hormones < -1) {
+			r += `<strong>Ho:M+</strong> `;
+		} else if (child.hormones < 0) {
+			r += `<strong>Ho:M</strong> `;
+		}
+		r += `</span> `;
+		r += `<span class="mediumseagreen">`;
+		if ((child.bellyImplant > -1)) {
+			r += `<strong>Belly Imp</strong> `;
+		} else if (((child.preg <= -2) || (child.ovaries === 0)) && (child.vagina !== -1)) {
+			r += `<strong>Barr</strong> `;
+		} else if (child.pubertyXX === 0 && (child.ovaries === 1 || child.mpreg === 1)) {
+			r += `<strong>Prepub</strong> `;
+		} else if (child.ovaryAge >= 47 && (child.ovaries === 1 || child.mpreg === 1)) {
+			r += `<strong>Meno</strong> `;
+		} else if (child.pregWeek < 0) {
+			r += `<strong>Postpartum</strong> `;
+		} else if (child.preg === -1) {
+			r += `<strong>CC</strong> `;
+		} else if (child.preg === 0 && (child.ovaries === 1 || child.mpreg === 1)) {
+			r += `<strong>Fert+</strong> `;
+			// } else if (((child.preg < child.pregData.normalBirth / 10) && (child.preg > 0) && child.pregKnown === 0) || child.pregWeek === 1) {
+			//	r += `<strong>Preg?</strong> `;
+		} else if ((child.preg >= 36) && (child.broodmother > 0)) {
+			r += `<strong>Perm preg</strong> `;
+		} else if (child.pregKnown === 1) {
+			r += `<strong>${child.pregWeek} wks preg</strong> `;
+		}
+		r += `</span> `;
+		if (child.induce === 1) {
+			r += `<span class="orange"><strong>Early Labor</strong></span> `;
+		}
+		if (child.pubertyXY === 0 && child.balls > 0) {
+			r += `<strong>Prepub balls</strong> `;
+		}
+		if (child.balls > 0 && child.vasectomy === 1) {
+			r += `<strong>Vasect</strong> `;
+		}
+		r += `<span class="springgreen">`;
+		if (child.inflation === 3) {
+			r += `<strong>8 ltr ${child.inflationType}</strong> `;
+		} else if (child.inflation === 2) {
+			r += `<strong>4 ltr ${child.inflationType}</strong> `;
+		} else if (child.inflation === 1) {
+			r += `<strong>2 ltr ${child.inflationType}</strong> `;
+		} else if (child.bellyFluid > 0) {
+			r += `<strong>${child.bellyFluid}ccs ${child.inflationType}</strong> `;
+		}
+		r += `</span> `;
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function longDrugs(child) {
+		if ((child.drugs !== "no drugs") && (child.drugs !== "none")) {
+			r += `<span class="tan">On ${child.drugs}.</span> `;
+		}
+		r += `<span class="lightgreen">`;
+		if (child.curatives === 2) {
+			r += `On curatives. `;
+		} else if (child.curatives === 1) {
+			r += `On preventatives. `;
+		}
+		r += `</span> `;
+		r += `<span class="lightblue">`;
+		if (child.aphrodisiacs > 0) {
+			r += `On ${child.aphrodisiacs > 1 ? 'extreme': ''} aphrodisiacs. `;
+		} else if (child.aphrodisiacs === -1) {
+			r += `On anaphrodisiacs. `;
+		}
+		r += `</span> `;
+		if (child.addict !== 0) {
+			r += `<span class="cyan">Addict.</span> `;
+		}
+		r += `<span class="lightsalmon">`;
+		if (child.hormones > 1) {
+			r += `Heavy female hormones. `;
+		} else if (child.hormones > 0) {
+			r += `Female hormones. `;
+		} else if (child.hormones < -1) {
+			r += `Heavy male hormones. `;
+		} else if (child.hormones < 0) {
+			r += `Male hormones. `;
+		}
+		r += `</span> `;
+		r += `<span class="mediumseagreen">`;
+		if ((child.bellyImplant > -1)) {
+			r += `Belly Implant. `;
+		} else if (((child.preg <= -2) || (child.ovaries === 0)) && (child.vagina !== -1)) {
+			r += `Barren. `;
+		} else if (child.pubertyXX === 0 && (child.ovaries === 1 || child.mpreg === 1)) {
+			r += `Not ovulating yet. `;
+		} else if (child.ovaryAge >= 47 && (child.ovaries === 1 || child.mpreg === 1)) {
+			r += `Menopausal. `;
+		} else if (child.pregWeek < 0) {
+			r += `Postpartum. `;
+		} else if (child.preg === -1) {
+			r += `On contraceptives. `;
+		} else if (child.preg === 0 && (child.ovaries === 1 || child.mpreg === 1)) {
+			r += `Fertile. `;
+		} else if (((child.preg < child.pregData.normalBirth / 10) && (child.preg > 0) && child.pregKnown === 0) || child.pregWeek === 1) {
+			r += `May be pregnant. `;
+		} else if ((child.preg >= 36) && (child.broodmother > 0)) {
+			r += `Permanently pregnant. `;
+		} else if (child.pregKnown === 1) {
+			if (child.pregType < 2 || child.broodmother > 0) {
+				r += `${child.pregWeek} weeks pregnant. `;
+			} else {
+				r += `${child.pregWeek} weeks pregnant with `;
+				if (child.pregType >= 40) {
+					r += `a tremendous brood of offspring. `;
+				} else if (child.pregType >= 20) {
+					r += `a brood of offspring. `;
+				} else if (child.pregType >= 10) {
+					r += `${child.pregType} babies. `;
+				} else if (child.pregType === 9) {
+					r += `nonuplets. `;
+				} else if (child.pregType === 8) {
+					r += `octuplets. `;
+				} else if (child.pregType === 7) {
+					r += `septuplets. `;
+				} else if (child.pregType === 6) {
+					r += `sextuplets. `;
+				} else if (child.pregType === 5) {
+					r += `quintuplets. `;
+				} else if (child.pregType === 4) {
+					r += `quadruplets. `;
+				} else if (child.pregType === 3) {
+					r += `triplets. `;
+				} else {
+					r += `twins. `;
+				}
+			}
+			if (child.preg > child.pregData.normalBirth && child.broodmother === 0) {
+				r += ` (Overdue.)`;
+			}
+		}
+		r += `</span> `;
+		if (child.induce === 1) {
+			r += `<span class="orange">Showing signs of early labor.</span> `;
+		}
+		if (child.pubertyXY === 0 && child.balls > 0) {
+			r += `Has not had first ejaculation. `;
+		}
+		if (child.balls > 0 && child.vasectomy === 1) {
+			r += `Vasectomy. `;
+		}
+		r += `<span class="springgreen">`;
+		if (child.inflation === 3) {
+			r += `Filled with 8 liters of ${child.inflationType}. `;
+		} else if (child.inflation === 2) {
+			r += `Filled with 4 liters of ${child.inflationType}. `;
+		} else if (child.inflation === 1) {
+			r += `Filled with 2 liters of ${child.inflationType}. `;
+		} else if (child.bellyFluid > 0) {
+			r += `Stuffed with ${child.bellyFluid}ccs of ${child.inflationType}. `;
+		}
+		r += `</span> `;
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function shortRace(child) {
+		switch (child.race) {
+			case "white":
+				r += `C`;
 				break;
-			case "Lithuanian":
-				r += `Lit`;
+			case "asian":
+				r += `A`;
 				break;
-			case "Luxembourgian":
-				r += `Lux`;
+			case "indo-aryan":
+				r += `I`;
 				break;
-			case "Macedonian":
-				r += `Mac`;
+			case "latina":
+				r += `L`;
 				break;
-			case "Malagasy":
-				r += `Mad`;
+			case "middle eastern":
+				r += `ME`;
 				break;
-			case "Malawian":
-				r += `Mwi`;
+			case "black":
+				r += `B`;
 				break;
-			case "Malaysian":
-				r += `Mys`;
+			case "pacific islander":
+				r += `PI`;
 				break;
-			case "Maldivian":
-				r += `Mdv`;
+			case "malay":
+				r += `M`;
 				break;
-			case "Malian":
-				r += `Mal`;
+			case "amerindian":
+				r += `AI`;
 				break;
-			case "Maltese":
-				r += `Mlt`;
+			case "semitic":
+				r += `S`;
 				break;
-			case "Marshallese":
-				r += `MI`;
+			case "southern european":
+				r += `SE`;
 				break;
-			case "Mauritanian":
-				r += `Mta`;
+			case "mixed race":
+				r += `MR`;
 				break;
-			case "Mauritian":
-				r += `Mts`;
+			default:
+				r += `${child.race.charAt(0).toUpperCase() + child.race.charAt(1) + child.race.charAt(2)}`;
 				break;
-			case "Mexican":
-				r += `Mex`;
+		}
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function longRace(child) {
+		switch (child.race) {
+			case "white":
+				r += `Caucasian. `;
 				break;
-			case "Micronesian":
-				r += `FSM`;
+			case "asian":
+				r += `Asian. `;
 				break;
-			case "Moldovan":
-				r += `Mol`;
+			case "indo-aryan":
+				r += `Indo-aryan. `;
 				break;
-			case "Monégasque":
-				r += `Mnc`;
+			case "latina":
+				r += `Latina. `;
 				break;
-			case "Mongolian":
-				r += `Mon`;
+			case "middle eastern":
+				r += `Middle Eastern. `;
 				break;
-			case "Montenegrin":
-				r += `Mng`;
+			case "black":
+				r += `Black. `;
 				break;
-			case "Moroccan":
-				r += `Mor`;
+			case "pacific islander":
+				r += `Pacific Islander. `;
 				break;
-			case "Mosotho":
-				r += `Les`;
+			case "malay":
+				r += `Malay. `;
 				break;
-			case "Motswana":
-				r += `Bot`;
+			case "amerindian":
+				r += `Amerindian. `;
 				break;
-			case "Mozambican":
-				r += `Moz`;
+			case "semitic":
+				r += `Semitic. `;
 				break;
-			case "Namibian":
-				r += `Nam`;
+			case "southern european":
+				r += `Southern European. `;
 				break;
-			case "Nauruan":
-				r += `Nau`;
+			case "mixed race":
+				r += `Mixed race. `;
 				break;
-			case "Nepalese":
-				r += `Npl`;
+			default:
+				r += `${child.race.charAt(0).toUpperCase() + child.race.slice(1)}. `;
 				break;
-			case "New Caledonian":
-				r += `NC`;
+		}
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function shortNationality(child) {
+		r += `<span class="tan">`;
+		switch (child.nationality) {
+			case "Afghan":
+				r += `Afg`;
 				break;
-			case "a New Zealander":
-				r += `NZ`;
+			case "Albanian":
+				r += `Alb`;
 				break;
-			case "Ni-Vanuatu":
-				r += `Van`;
+			case "Algerian":
+				r += `Alg`;
 				break;
-			case "Nicaraguan":
-				r += `Nic`;
+			case "American":
+				r += `USA`;
 				break;
-			case "Nigerian":
-				r += `Nga`;
+			case "Andorran":
+				r += `And`;
 				break;
-			case "Nigerien":
-				r += `Ngr`;
+			case "Angolan":
+				r += `Ang`;
 				break;
-			case "Niuean":
-				r += `Niu`;
+			case "Antiguan":
+				r += `AB`;
 				break;
-			case "Norwegian":
-				r += `Nor`;
+			case "Argentinian":
+				r += `Arg`;
 				break;
-			case "Omani":
-				r += `Omn`;
+			case "Armenian":
+				r += `Arm`;
 				break;
-			case "Pakistani":
-				r += `Pak`;
+			case "Aruban":
+				r += `Aru`;
 				break;
-			case "Palauan":
-				r += `Plu`;
+			case "Australian":
+				r += `Aus`;
 				break;
-			case "Palestinian":
-				r += `Pal`;
+			case "Austrian":
+				r += `Aut`;
 				break;
-			case "Panamanian":
-				r += `Pan`;
+			case "Azerbaijani":
+				r += `Aze`;
 				break;
-			case "Papua New Guinean":
-				r += `PNG`;
+			case "Bahamian":
+				r += `Bah`;
 				break;
-			case "Paraguayan":
-				r += `Par`;
+			case "Bahraini":
+				r += `Bah`;
 				break;
-			case "Peruvian":
-				r += `Per`;
+			case "Bangladeshi":
+				r += `Bgd`;
 				break;
-			case "Polish":
-				r += `Pol`;
+			case "Barbadian":
+				r += `Bar`;
 				break;
-			case "Portuguese":
-				r += `Por`;
+			case "Belarusian":
+				r += `Ber`;
 				break;
-			case "Puerto Rican":
-				r += `PR`;
+			case "Belgian":
+				r += `Bel`;
 				break;
-			case "Qatari":
-				r += `Qat`;
+			case "Belizean":
+				r += `Blz`;
 				break;
-			case "Romanian":
-				r += `Rom`;
+			case "Beninese":
+				r += `Ben`;
 				break;
-			case "Russian":
-				r += `Rus`;
+			case "Bermudian":
+				r += `Bmd`;
 				break;
-			case "Rwandan":
-				r += `Rwa`;
+			case "Bhutanese":
+				r += `Bhu`;
 				break;
-			case "Sahrawi":
-				r += `Sah`;
+			case "Bissau-Guinean":
+				r += `GB`;
 				break;
-			case "Saint Lucian":
-				r += `SL`;
+			case "Bolivian":
+				r += `Bol`;
 				break;
-			case "Salvadoran":
-				r += `ES`;
+			case "Bosnian":
+				r += `Bos`;
 				break;
-			case "Sammarinese":
-				r += `SM`;
+			case "Brazilian":
+				r += `Bra`;
 				break;
-			case "Samoan":
-				r += `Sam`;
+			case "British":
+				r += `UK`;
 				break;
-			case "São Toméan":
-				r += `STP`;
+			case "Bruneian":
+				r += `Bru`;
 				break;
-			case "Saudi":
-				r += `Sau`;
+			case "Bulgarian":
+				r += `Bul`;
 				break;
-			case "Scottish":
-				r += `Sco`;
+			case "Burkinabé":
+				r += `BF`;
 				break;
-			case "Senegalese":
-				r += `Sen`;
+			case "Burmese":
+				r += `Bur`;
 				break;
-			case "Serbian":
-				r += `Srb`;
+			case "Burundian":
+				r += `Bnd`;
 				break;
-			case "Seychellois":
-				r += `Sey`;
+			case "Cambodian":
+				r += `Kam`;
 				break;
-			case "Sierra Leonean":
-				r += `Sie`;
+			case "Cameroonian":
+				r += `Cam`;
 				break;
-			case "Singaporean":
-				r += `Sng`;
+			case "Canadian":
+				r += `Can`;
 				break;
-			case "Slovak":
-				r += `Svk`;
+			case "Cape Verdean":
+				r += `CV`;
 				break;
-			case "Slovene":
-				r += `Svn`;
+			case "Catalan":
+				r += `Cat`;
 				break;
-			case "a Solomon Islander":
-				r += `SI`;
+			case "Central African":
+				r += `CAR`;
 				break;
-			case "Somali":
-				r += `Som`;
+			case "Chadian":
+				r += `Cha`;
 				break;
-			case "South African":
-				r += `RSA`;
+			case "Chilean":
+				r += `Chl`;
 				break;
-			case "South Sudanese":
-				r += `SS`;
+			case "Chinese":
+				r += `Chi`;
 				break;
-			case "Spanish":
-				r += `Spa`;
+			case "Colombian":
+				r += `Col`;
 				break;
-			case "Sri Lankan":
-				r += `Sri`;
+			case "Comorian":
+				r += `Com`;
 				break;
-			case "Sudanese":
-				r += `Sud`;
+			case "Congolese":
+				r += `RC`;
 				break;
-			case "Surinamese":
-				r += `Sur`;
+			case "a Cook Islander":
+				r += `CI`;
 				break;
-			case "Swazi":
-				r += `Swa`;
+			case "Costa Rican":
+				r += `CR`;
 				break;
-			case "Swedish":
-				r += `Swe`;
-				break;
-			case "Swiss":
-				r += `Swi`;
+			case "Croatian":
+				r += `Cro`;
 				break;
-			case "Syrian":
-				r += `Syr`;
+			case "Cuban":
+				r += `Cub`;
 				break;
-			case "Taiwanese":
-				r += `Tai`;
+			case "Curaçaoan":
+				r += `Cur`;
 				break;
-			case "Tajik":
-				r += `Taj`;
+			case "Cypriot":
+				r += `Cyp`;
 				break;
-			case "Tanzanian":
-				r += `Tza`;
+			case "Czech":
+				r += `Cze`;
 				break;
-			case "Thai":
-				r += `Tha`;
+			case "Danish":
+				r += `Den`;
 				break;
-			case "Tibetan":
-				r += `Tib`;
+			case "Djiboutian":
+				r += `Dji`;
 				break;
-			case "Togolese":
-				r += `Tog`;
+			case "Dominican":
+				r += `DR`;
 				break;
-			case "Tongan":
-				r += `Ton`;
+			case "Dominiquais":
+				r += `Dom`;
 				break;
-			case "Trinidadian":
-				r += `TT`;
+			case "Dutch":
+				r += `Nld`;
 				break;
-			case "Tunisian":
-				r += `Tun`;
+			case "East Timorese":
+				r += `ET`;
 				break;
-			case "Turkish":
-				r += `Tur`;
+			case "Ecuadorian":
+				r += `Ecu`;
 				break;
-			case "Turkmen":
-				r += `Tkm`;
+			case "Egyptian":
+				r += `Egy`;
 				break;
-			case "Tuvaluan":
-				r += `Tuv`;
+			case "Emirati":
+				r += `UAE`;
 				break;
-			case "Ugandan":
-				r += `Uga`;
+			case "Equatoguinean":
+				r += `EG`;
 				break;
-			case "Ukrainian":
-				r += `Ukr`;
+			case "Eritrean":
+				r += `Eri`;
 				break;
-			case "Uruguayan":
-				r += `Uru`;
+			case "Estonian":
+				r += `Est`;
 				break;
-			case "Uzbek":
-				r += `Uzb`;
+			case "Ethiopian":
+				r += `Eth`;
 				break;
-			case "Vatican":
-				r += `VC`;
+			case "Fijian":
+				r += `Fij`;
 				break;
-			case "Venezuelan":
-				r += `Ven`;
+			case "Filipina":
+				r += `Phl`;
 				break;
-			case "Vietnamese":
-				r += `Vnm`;
+			case "Finnish":
+				r += `Fin`;
 				break;
-			case "Vincentian":
-				r += `SVG`;
+			case "French":
+				r += `Fra`;
 				break;
-			case "Yemeni":
-				r += `Yem`;
+			case "French Guianan":
+				r += `FG`;
 				break;
-			case "Zairian":
-				r += `DRC`;
+			case "French Polynesian":
+				r += `FP`;
 				break;
-			case "Zambian":
-				r += `Zam`;
+			case "Gabonese":
+				r += `Gab`;
 				break;
-			case "Zimbabwean":
-				if (child.race === "white") {
-					r += `Rho`;
-				} else {
-					r += `Zwe`;
-				}
+			case "Gambian":
+				r += `Gam`;
 				break;
-			case "Ancient Chinese Revivalist":
-				r += `Chi Rev`;
+			case "Georgian":
+				r += `Geo`;
 				break;
-			case "Ancient Egyptian Revivalist":
-				r += `Egy Rev`;
+			case "German":
+				r += `Ger`;
 				break;
-			case "Arabian Revivalist":
-				r += `Ara Rev`;
+			case "Ghanan":
+				r += `Gha`;
 				break;
-			case "Aztec Revivalist":
-				r += `Azt Rev`;
+			case "Greek":
+				r += `Gre`;
 				break;
-			case "Edo Revivalist":
-				r += `Edo Rev`;
+			case "Greenlandic":
+				r += `Grn`;
 				break;
-			case "Roman Revivalist":
-				r += `Rom Rev`;
+			case "Grenadian":
+				r += `Gda`;
 				break;
-			case "":
-			case "none":
-			case "child":
-			case "Stateless":
-				r += `None`;
+			case "Guamanian":
+				r += `Gua`;
 				break;
-			default:
-				r += `${child.nationality.charAt(0) + child.nationality.charAt(1) + child.nationality.charAt(2)}`;
+			case "Guatemalan":
+				r += `Gtm`;
 				break;
-		}
-		r += `</span> `;
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function longNationality(child) {
-		r += `<span class="tan">`;
-		switch (child.nationality) {
-			case "a Cook Islander":
-				r += `Cook Islander. `;
+			case "Guinean":
+				r += `Gui`;
 				break;
-			case "a Liechtensteiner":
-				r += `Liechtensteiner. `;
+			case "Guyanese":
+				r += `Guy`;
 				break;
-			case "a New Zealander":
-				r += `New Zealander. `;
+			case "Haitian":
+				r += `Hai`;
 				break;
-			case "a Solomon Islander":
-				r += `Solomon Islander. `;
+			case "Honduran":
+				r += `Hon`;
 				break;
-			case "Zimbabwean":
-				if (child.race === "white") {
-					r += `Rhodesian. `;
-				} else {
-					r += `${child.nationality}. `;
-				}
+			case "Hungarian":
+				r += `Hun`;
 				break;
-			case "child":
-			case "none":
-			case "":
-			case "Stateless":
-				r += `Stateless. `;
+			case "I-Kiribati":
+				r += `Kir`;
 				break;
-			default:
-				r += `${child.nationality}. `;
+			case "Icelandic":
+				r += `Ice`;
 				break;
-		}
-		r += `</span> `;
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function shortSkin(child) {
-		r += `<span class="pink">`;
-		switch (child.skin) {
-			case "pure white":
-				r += `P. Whi`;
+			case "Indian":
+				r += `Ind`;
 				break;
-			case "extremely fair":
-				r += `E. Fai`;
+			case "Indonesian":
+				r += `Idn`;
 				break;
-			case "very fair":
-				r += `V. Fai`;
+			case "Iranian":
+				r += `Irn`;
 				break;
-			case "extremely pale":
-				r += `E. Pal`;
+			case "Iraqi":
+				r += `Irq`;
 				break;
-			case "very pale":
-				r += `V. Pal`;
+			case "Irish":
+				r += `Irl`;
 				break;
-			case "light brown":
-				r += `L. Br`;
+			case "Israeli":
+				r += `Isr`;
 				break;
-			case "dark brown":
-				r += `D. Br`;
+			case "Italian":
+				r += `Ita`;
 				break;
-			case "light olive":
-				r += `L. Oli`;
+			case "Ivorian":
+				r += `IC`;
 				break;
-			case "dark olive":
-				r += `D. Oli`;
+			case "Jamaican":
+				r += `Jam`;
 				break;
-			case "light beige":
-				r += `L. Bei`;
+			case "Japanese":
+				r += `Jpn`;
 				break;
-			case "dark beige":
-				r += `D. Bei`;
+			case "Jordanian":
+				r += `Jor`;
 				break;
-			case "tan":
-				r += `Tan`;
+			case "Kazakh":
+				r += `Kaz`;
 				break;
-			case "bronze":
-				r += `Bron`;
+			case "Kenyan":
+				r += `Ken`;
 				break;
-			case "ebony":
-				r += `Ebon`;
+			case "Kittitian":
+				r += `SKN`;
 				break;
-			case "pure black":
-				r += `P. Bla`;
+			case "Korean":
+				r += `Kor`;
 				break;
-			case "dark":
-			case "fair":
-			case "pale":
-				r += `${child.skin.charAt(0).toUpperCase() + child.skin.slice(1)}`;
+			case "Kosovan":
+				r += `Kos`;
 				break;
-			default:
-				r += `${child.skin.charAt(0).toUpperCase() + child.skin.charAt(1) + child.skin.charAt(2)}`;
+			case "Kurdish":
+				r += `Kur`;
 				break;
-		}
-		r += `</span> `;
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function shortGenitals(child) {
-		if (child.dick > 0) {
-			r += `<span class="pink">`;
-			if (child.balls === 0) {
-				r += `Geld`;
-			}
-			if ((child.dick > 8) && (child.balls > 8)) {
-				r += `Junk+++`;
-			} else if ((child.dick > 5) && (child.balls > 5)) {
-				r += `Junk++`;
-			} else if ((child.dick > 4) && (child.balls > 4)) {
-				r += `Junk+`;
-			} else if ((child.dick > 3) && (child.balls > 3)) {
-				r += `Junk`;
-			} else if (child.dick > 8) {
-				r += `Dick+++`;
-			} else if (child.dick > 5) {
-				r += `Dick++`;
-			} else if (child.dick > 4) {
-				r += `Dick+`;
-			} else if (child.dick > 3) {
-				r += `Dick`;
-			} else if (child.balls > 10) {
-				r += `Balls+++`;
-			} else if (child.balls > 5) {
-				r += `Balls++`;
-			} else if (child.balls > 4) {
-				r += `Balls+`;
-			} else if (child.balls > 3) {
-				r += `Balls`;
-			}
-			r += `</span> `;
-		}
-		if (child.vagina === 0) {
-			r += `<span class="lime">VV</span> `;
-		} else if ((child.pregKnown === 1) && canWalk(child) && (child.clothes === "no clothing" || child.clothes === "body oil") && (child.shoes === "none")) {
-			r += `<span class="pink">NBP</span> `;
-		}
-		if (child.anus === 0) {
-			r += ` <span class="lime">AV</span> `;
-		}
-		r += `<span class="pink">`;
-		if ((child.vagina > 3) && (child.anus > 3)) {
-			r += ` V++A++`;
-		} else if ((child.vagina > 2) && (child.anus > 2)) {
-			r += ` V+A+`;
-		} else if (child.vagina > 3) {
-			r += ` V++`;
-		} else if (child.vagina > 2) {
-			r += ` V+`;
-		} else if (child.anus > 3) {
-			r += ` A++`;
-		} else if (child.anus > 2) {
-			r += ` A+`;
-		}
-		r += `</span> `;
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function longGenitals(child) {
-		if (child.dick > 0) {
-			r += `<span class="pink">`;
-			if (child.balls === 0) {
-				r += `Gelded. `;
-			}
-			if ((child.dick > 8) && (child.balls > 8)) {
-				r += `Hyper dick & balls. `;
-			} else if ((child.dick > 5) && (child.balls > 5)) {
-				r += `Monster dick & balls. `;
-			} else if ((child.dick > 4) && (child.balls > 4)) {
-				r += `Huge dick & balls. `;
-			} else if ((child.dick > 3) && (child.balls > 3)) {
-				r += `Big dick & balls. `;
-			} else if (child.dick > 8) {
-				r += `Hyper dong. `;
-			} else if (child.dick > 5) {
-				r += `Monster dong. `;
-			} else if (child.dick > 4) {
-				r += `Huge dick. `;
-			} else if (child.dick > 3) {
-				r += `Big dick. `;
-			} else if (child.balls > 8) {
-				r += `Hyper balls. `;
-			} else if (child.balls > 5) {
-				r += `Monstrous balls. `;
-			} else if (child.balls > 4) {
-				r += `Huge balls. `;
-			} else if (child.balls > 3) {
-				r += `Big balls. `;
-			}
-			r += `</span> `;
-		}
-		if (child.vagina === 0) {
-			r += `<span class="lime">Virgin.</span> `;
-		} else if ((child.pregKnown === 1) && canWalk(child) && (child.clothes === "no clothing" || child.clothes === "body oil") && (child.shoes === "none")) {
-			r += `<span class="pink">Naked, barefoot, and pregnant.</span> `;
-		}
-		if (child.anus === 0) {
-			r += `<span class="lime">Anal virgin.</span> `;
-		}
-		r += `<span class="pink">`;
-		if ((child.vagina > 3) && (child.anus > 3)) {
-			r += `Blown out holes. `;
-		} else if ((child.vagina > 2) && (child.anus > 2)) {
-			r += `High mileage. `;
-		} else if (child.vagina > 3) {
-			r += `Cavernous pussy. `;
-		} else if (child.vagina > 2) {
-			r += `Loose pussy. `;
-		} else if (child.anus > 3) {
-			r += `Permagaped anus. `;
-		} else if (child.anus > 2) {
-			r += `Gaping anus. `;
-		}
-		r += `</span> `;
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function shortAge(child) {
-		r += `<span class="pink">`;
-		if (V.showAgeDetail === 1) {
-			r += child.actualAge;
-		} else if (child.actualAge >= 40) {
-			r += `40s`;
-		} else if (child.actualAge >= 35) {
-			r += `Lt30s`;
-		} else if (child.actualAge >= 30) {
-			r += `Ea30s`;
-		} else if (child.actualAge >= 25) {
-			r += `Lt20s`;
-		} else if (child.actualAge >= 20) {
-			r += `Ea20s`;
-		} else if (child.actualAge >= 18) {
-			r += child.actualAge;
-		}
-		if (child.actualAge !== child.physicalAge) {
-			r += ` w ${child.physicalAge}y-bdy`;
-		}
-		if (child.visualAge !== child.physicalAge) {
-			r += ` Lks${child.visualAge}`;
-		}
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function shortFace(child) {
-		if (child.face < -95) {
-			r += `<span class="red">Face---${V.summaryStats? `[${child.face}]` : ''}</span> `;
-		} else if (child.face < -40) {
-			r += `<span class="red">Face--${V.summaryStats? `[${child.face}]` : ''}</span> `;
-		} else if (child.face < -10) {
-			r += `<span class="red">Face-${V.summaryStats? `[${child.face}]` : ''}</span> `;
-		} else if (child.face <= 10) {
-			r += `Face${V.summaryStats? `[${child.face}]` : ''}`;
-		} else if (child.face <= 40) {
-			r += `<span class="pink">Face+${V.summaryStats? `[${child.face}]` : ''}</span> `;
-		} else if (child.face <= 95) {
-			r += `<span class="pink">Face++${V.summaryStats? `[${child.face}]` : ''}</span> `;
-		} else {
-			r += `<span class="pink">Face+++${V.summaryStats? `[${child.face}]` : ''}</span> `;
-		}
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function shortEyes(child) {
-		if (child.eyes === -2) {
-			r += `<span class="red">Blind</span> `;
-		} else if (((child.eyes === -1) && (child.eyewear !== "corrective glasses") && (child.eyewear !== "corrective contacts")) || (child.eyewear === "blurring glasses") || (child.eyewear === "blurring contacts")) {
-			r += `<span class="yellow">Sight-</span> `;
-		}
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function shortEars(child) {
-		if (child.hears === -2) {
-			r += `<span class="red">Deaf</span> `;
-		} else if ((child.hears === -1) && (child.earwear !== "hearing aids")) {
-			r += `<span class="yellow">Hearing-</span> `;
-		}
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function shortLips(child) {
-		if (child.lips > 95) {
-			r += `Facepussy`;
-		} else if (child.lips > 70) {
-			r += `Lips+++${V.summaryStats? `[${child.lips}]` : ''}`;
-		} else if (child.lips > 40) {
-			r += `Lips++${V.summaryStats? `[${child.lips}]` : ''}`;
-		} else if (child.lips > 20) {
-			r += `Lips+${V.summaryStats? `[${child.lips}]` : ''}`;
-		} else if (child.lips > 10) {
-			r += `Lips${V.summaryStats? `[${child.lips}]` : ''}`;
-		} else {
-			r += `<span class="red">Lips-${V.summaryStats? `[${child.lips}]` : ''}</span> `;
-		}
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function shortTeeth(child) {
-		if (child.teeth === "crooked") {
-			r += `<span class="yellow">Cr Teeth</span> `;
-		} else if (child.teeth === "gapped") {
-			r += `<span class="yellow">Gap</span> `;
-		} else if (child.teeth === "cosmetic braces") {
-			r += `Cos Braces`;
-		} else if (child.teeth === "straightening braces") {
-			r += `Braces`;
-		} else if (child.teeth === "removable") {
-			r += `Rem Teeth`;
-		} else if (child.teeth === "pointy") {
-			r += `Fangs`;
-		} else if (child.teeth === "baby") {
-			r += `Baby`;
-		} else if (child.teeth === "mixed") {
-			r += `Mixed`;
-		}
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function shortMuscles(child) {
-		if (child.muscles > 95) {
-			r += `Musc++${V.summaryStats? `[${child.muscles}]`: ''}`;
-		} else if (child.muscles > 50) {
-			r += `Musc+${V.summaryStats? `[${child.muscles}]`: ''}`;
-		} else if (child.muscles > 5) {
-			r += `Fit${V.summaryStats? `[${child.muscles}]`: ''}`;
-		} else if (child.muscles > -6) {
-			r += `Soft${V.summaryStats? `[${child.muscles}]`: ''}`;
-		} else if (child.muscles > -31) {
-			if (V.arcologies[0].FSPhysicalIdealist === "unset") {
-				r += `<span class="red">Weak</span>${V.summaryStats? `[${child.muscles}]`: ''}`;
-			} else {
-				r += `Soft${V.summaryStats? `[${child.muscles}]`: ''}`;
-			}
-		} else if (child.muscles > -96) {
-			if (V.arcologies[0].FSPhysicalIdealist === "unset") {
-				r += `<span class="red">Weak+</span>${V.summaryStats? `[${child.muscles}]`: ''}`;
-			} else {
-				r += `Soft+${V.summaryStats? `[${child.muscles}]`: ''}`;
-			}
-		} else {
-			r += `<span class="red">Weak++</span>${V.summaryStats? `[${child.muscles}]`: ''}`;
-		}
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function shortLimbs(child) {
-		if (child.amp !== 0) {
-			if (child.amp === -1) {
-				r += `P-Limbs`;
-			} else if (child.amp === -2) {
-				r += `Sex P-Limbs`;
-			} else if (child.amp === -3) {
-				r += `Beauty P-Limbs`;
-			} else if (child.amp === -4) {
-				r += `Combat P-Limbs`;
-			} else if (child.amp === -5) {
-				r += `Cyber P-Limbs`;
-			} else {
-				r += `Amp`;
-			}
-		}
-		if (!canWalk(child)) {
-			r += ` Immob `;
-		}
-		if (child.heels === 1) {
-			r += ` Heel `;
-		}
-		r += `</span> `;
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function shortVoice(child) {
-		if (child.voice === 0) {
-			r += `<span class="red">Mute</span> `;
-		} else {
-			if (child.accent === 3) {
-				r += `<span class="red">Acc--</span> `;
-			} else if (child.accent === 2) {
-				r += `Acc-`;
-			} else if (child.accent === 4) {
-				r += `Acc--`;
-			} else if (child.accent === 1) {
-				r += `<span class="pink">Acc</span> `;
-			}
-		}
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function shortTitsAss(child) {
-		r += `<span class="pink">`;
-		if ((child.boobs >= 12000) && (child.butt > 9)) {
-			r += `T&A+++`;
-		} else if ((child.boobs > 4000) && (child.butt > 8)) {
-			r += `T&A++`;
-		} else if ((child.boobs > 2000) && (child.butt > 6)) {
-			r += `T&A+`;
-		} else if ((child.boobs > 800) && (child.butt > 4)) {
-			r += `T&A`;
-		} else if ((child.boobs < 500) && (child.butt < 3) && (child.weight <= 10) && (child.muscles <= 30)) {
-			r += `Girlish`;
-		} else if (child.boobs >= 12000) {
-			r += `Boobs+++`;
-		} else if (child.boobs > 4000) {
-			r += `Boobs++`;
-		} else if (child.boobs > 2000) {
-			r += `Boobs+`;
-		} else if (child.boobs > 800) {
-			r += `Boobs`;
-		} else if (child.butt > 9) {
-			r += `Ass+++`;
-		} else if (child.butt > 8) {
-			r += `Ass++`;
-		} else if (child.butt > 6) {
-			r += `Ass+`;
-		} else if (child.butt > 4) {
-			r += `Ass`;
-		}
-		r += `</span> `;
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function shortHips(child) {
-		r += `<span class="red">`;
-		if (child.hips < -1) {
-			if (child.butt > 2 && (V.arcologies[0].FSTransformationFetishist < 20 || V.arcologies[0].FSTransformationFetishist === "unset") && (V.arcologies[0].FSHedonisticDecadence < 20 || V.arcologies[0].FSHedonisticDecadence === "unset")) {
-				r += `Disp+`;
-			}
-		} else if (child.hips < 0) {
-			if (child.butt > 4 && (V.arcologies[0].FSTransformationFetishist < 20 || V.arcologies[0].FSTransformationFetishist === "unset") && (V.arcologies[0].FSHedonisticDecadence < 20 || V.arcologies[0].FSHedonisticDecadence === "unset")) {
-				r += `Disp+`;
-			}
-		} else if (child.hips > 2) {
-			if (child.butt <= 8) {
-				r += `Disp-`;
-			}
-		} else if (child.hips > 1) {
-			if (child.butt <= 3 && (V.arcologies[0].FSSlimnessEnthusiast === "unset" || (child.boobs >= 500))) {
-				r += `Disp-`;
-			}
-		} else if (child.hips > 0) {
-			if (child.butt > 8) {
-				if ((V.arcologies[0].FSTransformationFetishist < 20 || V.arcologies[0].FSTransformationFetishist === "unset") && (V.arcologies[0].FSHedonisticDecadence < 20 || V.arcologies[0].FSHedonisticDecadence === "unset")) {
-					r += `Disp+`;
-				}
-			} else if (child.butt <= 2 && (V.arcologies[0].FSSlimnessEnthusiast === "unset" || (child.boobs >= 500))) {
-				r += `Disp-`;
-			}
-		} else {
-			if (child.butt > 6) {
-				if ((V.arcologies[0].FSTransformationFetishist < 20 || V.arcologies[0].FSTransformationFetishist === "unset") && (V.arcologies[0].FSHedonisticDecadence < 20 || V.arcologies[0].FSHedonisticDecadence === "unset")) {
-					r += `Disp+`;
-				}
-			} else if (child.butt <= 1 && (V.arcologies[0].FSSlimnessEnthusiast === "unset" || (child.boobs >= 500))) {
-				r += `Disp-`;
-			}
-		}
-		r += `</span> `;
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function shortWaist(child) {
-		if (child.waist > 95) {
-			r += `<span class="red">Wst---${V.summaryStats? `[${child.waist}]` : ''}</span> `;
-		} else if (child.waist > 40) {
-			r += `<span class="red">Wst--${V.summaryStats? `[${child.waist}]`: ''}</span> `;
-		} else if (child.waist > 10) {
-			r += `<span class="red">Wst-${V.summaryStats? `[${child.waist}]` : ''}</span> `;
-		} else if (child.waist >= -10) {
-			r += `Wst${V.summaryStats? `[${child.waist}]`: ''}`;
-		} else if (child.waist >= -40) {
-			r += `<span class="pink">Wst+${V.summaryStats? `[${child.waist}]` : ''}</span> `;
-		} else if (child.waist >= -95) {
-			r += `<span class="pink">Wst++${V.summaryStats? `[${child.waist}]` : ''}</span> `;
-		} else {
-			r += `<span class="pink">Wst+++${V.summaryStats? `[${child.waist}]`: ''}</span> `;
-		}
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function shortImplants(child) {
-		r += `<span class="pink">`;
-		if ((child.boobsImplant === 0) && (child.buttImplant === 0) && (child.waist >= -95) && (child.lipsImplant === 0) && (child.faceImplant <= 5) && (child.bellyImplant === -1)) {
-			r += `Natr`;
-		} else {
-			r += `Impl`;
-		}
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function shortLactation(child) {
-		if (child.lactation === 1) {
-			r += `Lact`;
-		} else if (child.lactation === 2) {
-			r += `Lact++`;
-		}
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function shortMods(child) {
-		V.modScorChildStatsChecker.modScore(child);
-		if (child.corsetPiercing === 0 && V.piercingScore < 3 && V.tatScore < 2) {
-			return;
-		} else if (V.modScore > 15 || (V.piercingScore > 8 && V.tatScore > 5)) {
-			r += `Mods++`;
-		} else if (V.modScore > 7) {
-			r += `Mods+`;
-		} else {
-			r += `Mods`;
-		}
-		if (child.brand !== 0) {
-			r += `Br`;
-		}
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function longAge(child) {
-		r += `<span class="pink">`;
-		if (V.showAgeDetail === 1) {
-			r += `Age ` + `${child.actualAge}` + `. `;
-		} else if (child.actualAge >= 40) {
-			r += `Forties. `;
-		} else if (child.actualAge >= 35) {
-			r += `Late thirties. `;
-		} else if (child.actualAge >= 30) {
-			r += `Early thirties. `;
-		} else if (child.actualAge >= 25) {
-			r += `Late twenties. `;
-		} else if (child.actualAge >= 20) {
-			r += `Early twenties. `;
-		} else if (child.actualAge >= 19) {
-			r += `Nineteen. `;
-		} else if (child.actualAge >= 18) {
-			r += `Eighteen. `;
-		} else {
-			r += `Underage. `;
-		}
-		/*
-		 ** No NCS, then do the standard, However because of the wrinkes of Incubators, as long as visual age is greater
-		 ** than or equal to physical age, we do the old physical body/Looks for fresh out of the can NCS slaves.
-		 */
-		if (((child.geneMods.NCS === 0) || (child.visualAge >= child.physicalAge))) {
-			if (child.actualAge !== child.physicalAge) {
-				r += `${child.physicalAge}` + ` year old body. `;
-			}
-			if (child.visualAge !== child.physicalAge) {
-				r += `Looks ` + `${child.visualAge}` + `. `;
-			}
-		} else {
-			/*
-			 ** Now the rub. The use of physical Age for the year old body above, basically conflicts with the changes
-			 ** that NCS introduces, so here to *distinguish* the changes, we use visual age with the 'year old body'
-			 ** and appears, for exampChild release from incubator at age 10, Her summary would show, 'Age 0. 10
-			 ** year old body.' But if she's given NCS a few weeks after release, while she's still before her first
-			 ** birthday, it'll appear the same. But once her birthday fires, if we ran with the above code it would
-			 ** say: 'Age 1. 11 year old body.' -- this conflicts with the way NCS works though, because she hasn't
-			 ** visually aged, so our change here makes it say 'Age 1. Appears to have a 10 year old body.'
-			 */
-			r += `Appears to have a ` + `${child.visualAge}` + ` year old body. `;
-		}
-		if (child.geneMods.NCS === 1) {
-			r += `(<span class="orange">NCS</span>) `;
-		}
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function longFace(child) {
-		if (child.face < -95) {
-			r += `<span class="red">Very ugly${V.summaryStats? `[${child.face}]`: ''}</span> `;
-		} else if (child.face < -40) {
-			r += `<span class="red">Ugly${V.summaryStats? `[${child.face}]`: ''}</span> `;
-		} else if (child.face < -10) {
-			r += `<span class="red">Unattractive${V.summaryStats? `[${child.face}]`: ''}</span> `;
-		} else if (child.face <= 10) {
-			r += `Average${V.summaryStats? `[${child.face}]`: ''}`;
-		} else if (child.face <= 40) {
-			r += `<span class="pink">Attractive${V.summaryStats? `[${child.face}]`: ''}</span> `;
-		} else if (child.face <= 95) {
-			r += `<span class="pink">Beautiful${V.summaryStats? `[${child.face}]`: ''}</span> `;
-		} else {
-			r += `<span class="pink">Very beautiful${V.summaryStats? `[${child.face}]`: ''}</span> `;
-		}
-		r += ` ${child.faceShape} face. `;
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function longEyes(child) {
-		if (child.eyes <= -2) {
-			r += `<span class="red">Blind.</span> `;
-		} else if (((child.eyes === -1) && (child.eyewear !== "corrective glasses") && (child.eyewear !== "corrective contacts")) || (child.eyewear === "blurring glasses") || (child.eyewear === "blurring contacts")) {
-			r += `<span class="yellow">Nearsighted.</span> `;
-		}
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function longEars(child) {
-		if (child.hears <= -2) {
-			r += `<span class="red">Deaf.</span> `;
-		} else if ((child.hears === -1) && (child.earwear !== "hearing aids")) {
-			r += `<span class="yellow">Hard of hearing.</span> `;
-		}
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function longLips(child) {
-		if (child.lips > 95) {
-			r += `Facepussy${V.summaryStats? `[${child.lips}]`: ''}. `;
-		} else if (child.lips > 70) {
-			r += `Huge lips${V.summaryStats? `[${child.lips}]`: ''}. `;
-		} else if (child.lips > 40) {
-			r += `Big lips${V.summaryStats? `[${child.lips}]`: ''}. `;
-		} else if (child.lips > 20) {
-			r += `Pretty lips${V.summaryStats? `[${child.lips}]`: ''}. `;
-		} else if (child.lips > 10) {
-			r += `Normal lips${V.summaryStats? `[${child.lips}]`: ''}. `;
-		} else {
-			r += `<span class="red">Thin lips${V.summaryStats? `[${child.lips}]`: ''}.</span> `;
-		}
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function longTeeth(child) {
-		if (child.teeth === "crooked") {
-			r += `<span class="yellow">Crooked teeth.</span> `;
-		} else if (child.teeth === "gapped") {
-			r += `<span class="yellow">Tooth gap.</span> `;
-		} else if (child.teeth === "cosmetic braces") {
-			r += `Cosmetic braces. `;
-		} else if (child.teeth === "straightening braces") {
-			r += `Braces. `;
-		} else if (child.teeth === "removable") {
-			r += `Removable teeth. `;
-		} else if (child.teeth === "pointy") {
-			r += `Sharp fangs. `;
-		} else if (child.teeth === "baby") {
-			r += `Baby teeth. `;
-		} else if (child.teeth === "mixed") {
-			r += `Mixed teeth. `;
-		}
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function longMuscles(child) {
-		if (child.muscles > 95) {
-			r += `Hugely muscular${V.summaryStats? `[${child.muscles}]` : ''}. `;
-		} else if (child.muscles > 50) {
-			r += `Muscular${V.summaryStats? `[${child.muscles}]`: ''}. `;
-		} else if (child.muscles > 5) {
-			r += `Fit${V.summaryStats? `[${child.muscles}]`: ''}. `;
-		} else if (child.muscles > -6) {
-			r += `Soft${V.summaryStats? `[${child.muscles}]`: ''}. `;
-		} else if (child.muscles > -31) {
-			if (V.arcologies[0].FSPhysicalIdealist === "unset") {
-				r += `<span class="red">Weak${V.summaryStats? `[${child.muscles}]`: ''}.</span> `;
-			} else {
-				r += `Weak${V.summaryStats? `[${child.muscles}]`: ''}. `;
-			}
-		} else if (child.muscles > -96) {
-			if (V.arcologies[0].FSPhysicalIdealist === "unset") {
-				r += `<span class="red">Very weak${V.summaryStats? `[${child.muscles}]`: ''}.</span> `;
-			} else {
-				r += `Very weak${V.summaryStats? `[${child.muscles}]`: ''}. `;
-			}
-		} else {
-			r += `<span class="red">Frail${V.summaryStats? `[${child.muscles}]`: ''}.</span> `;
-		}
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function longLimbs(child) {
-		if (child.amp !== 0) {
-			if (child.amp === -1) {
-				r += `Prosthetic limbs. `;
-			} else if (child.amp === -2) {
-				r += `Sexy prosthetic limbs. `;
-			} else if (child.amp === -3) {
-				r += `Beautiful prosthetic limbs. `;
-			} else if (child.amp === -4) {
-				r += `Deadly prosthetic limbs. `;
-			} else if (child.amp === -5) {
-				r += `Cyber prosthetic limbs. `;
-			} else {
-				r += `Amputee. `;
-			}
-		}
-		if (!canWalk(child)) {
-			r += `Immobile. `;
-		}
-		if (child.heels === 1) {
-			r += `Heeled. `;
-		}
-		r += `</span> `;
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function longVoice(child) {
-		if (child.voice === 0) {
-			r += `<span class="red">Mute.</span> `;
-		} else {
-			if (child.accent === 3) {
-				r += `<span class="red">Bad accent.</span> `;
-			} else if (child.accent === 4) {
-				r += `<span class="red">No language skills.</span> `;
-			} else if (child.accent === 2) {
-				r += `Accent. `;
-			} else if (child.accent === 1) {
-				r += `<span class="pink">Cute accent.</span> `;
-			}
-		}
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function longTitsAss(child) {
-		r += `<span class="pink">`;
-		if ((child.boobs >= 12000) && (child.butt > 9)) {
-			r += `Hyper T&A. `;
-		} else if ((child.boobs > 4000) && (child.butt > 8)) {
-			r += `Enormous T&A. `;
-		} else if ((child.boobs > 2000) && (child.butt > 6)) {
-			r += `Huge T&A. `;
-		} else if ((child.boobs > 800) && (child.butt > 4)) {
-			r += `Big T&A. `;
-		} else if ((child.boobs < 500) && (child.butt < 3) && (child.weight <= 10) && (child.muscles <= 30)) {
-			r += `Girlish figure. `;
-		} else if (child.boobs >= 12000) {
-			r += `Immobilizing tits. `;
-		} else if (child.boobs > 4000) {
-			r += `Monstrous tits. `;
-		} else if (child.boobs > 2000) {
-			r += `Huge tits. `;
-		} else if (child.boobs > 800) {
-			r += `Big tits. `;
-		} else if (child.butt > 9) {
-			r += `Hyper ass. `;
-		} else if (child.butt > 8) {
-			r += `Titanic ass. `;
-		} else if (child.butt > 6) {
-			r += `Huge ass. `;
-		} else if (child.butt > 4) {
-			r += `Big ass. `;
-		}
-		r += `</span> `;
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function longHips(child) {
-		r += `<span class="red">`;
-		if (child.hips < -1) {
-			if (child.butt > 2 && (V.arcologies[0].FSTransformationFetishist < 20 || V.arcologies[0].FSTransformationFetishist === "unset") && (V.arcologies[0].FSHedonisticDecadence < 20 || V.arcologies[0].FSHedonisticDecadence === "unset") && (V.arcologies[0].FSAssetExpansionist < 20 || V.arcologies[0].FSAssetExpansionist === "unset")) {
-				r += `Disproportionately big butt. `;
-			}
-		} else if (child.hips < 0) {
-			if (child.butt > 4 && (V.arcologies[0].FSTransformationFetishist < 20 || V.arcologies[0].FSTransformationFetishist === "unset") && (V.arcologies[0].FSHedonisticDecadence < 20 || V.arcologies[0].FSHedonisticDecadence === "unset") && (V.arcologies[0].FSAssetExpansionist < 20 || V.arcologies[0].FSAssetExpansionist === "unset")) {
-				r += `Disproportionately big butt. `;
-			}
-		} else if (child.hips > 2) {
-			if (child.butt <= 8) {
-				r += `Disproportionately small butt. `;
-			}
-		} else if (child.hips > 1) {
-			if (child.butt <= 3 && ((V.arcologies[0].FSSlimnessEnthusiast === "unset") || (child.boobs >= 500))) {
-				r += `Disproportionately small butt. `;
-			}
-		} else if (child.hips > 0) {
-			if (child.butt > 8) {
-				if ((V.arcologies[0].FSTransformationFetishist < 20 || V.arcologies[0].FSTransformationFetishist === "unset") && (V.arcologies[0].FSHedonisticDecadence < 20 || V.arcologies[0].FSHedonisticDecadence === "unset") && (V.arcologies[0].FSAssetExpansionist < 20 || V.arcologies[0].FSAssetExpansionist === "unset")) {
-					r += `Disproportionately big butt. `;
-				}
-			} else if (child.butt <= 2 && ((V.arcologies[0].FSSlimnessEnthusiast === "unset") || (child.boobs >= 500))) {
-				r += `Disproportionately small butt. `;
-			}
-		} else {
-			if (child.butt > 6) {
-				if ((V.arcologies[0].FSTransformationFetishist < 20 || V.arcologies[0].FSTransformationFetishist === "unset") && (V.arcologies[0].FSHedonisticDecadence < 20 || V.arcologies[0].FSHedonisticDecadence === "unset") && (V.arcologies[0].FSAssetExpansionist < 20 || V.arcologies[0].FSAssetExpansionist === "unset")) {
-					r += `Disproportionately big butt. `;
-				}
-			} else if (child.butt <= 1 && ((V.arcologies[0].FSSlimnessEnthusiast === "unset") || (child.boobs >= 500))) {
-				r += `Disproportionately small butt. `;
-			}
-		}
-		r += `</span> `;
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function longWaist(child) {
-		if (child.waist > 95) {
-			r += `<span class="red">Masculine waist${V.summaryStats? `[${child.waist}]`: ''}.</span> `;
-		} else if (child.waist > 40) {
-			r += `<span class="red">Ugly waist${V.summaryStats? `[${child.waist}]`: ''}.</span> `;
-		} else if (child.waist > 10) {
-			r += `<span class="red">Unattractive waist${V.summaryStats? `[${child.waist}]`: ''}.</span> `;
-		} else if (child.waist >= -10) {
-			r += `Average waist${V.summaryStats? `[${child.waist}]`: ''}. `;
-		} else if (child.waist >= -40) {
-			r += `<span class="pink">Feminine waist${V.summaryStats? `[${child.waist}]`: ''}.</span> `;
-		} else if (child.waist >= -95) {
-			r += `<span class="pink">Hourglass waist${V.summaryStats? `[${child.waist}]`: ''}.</span> `;
-		} else {
-			r += `<span class="pink">Absurdly narrow waist${V.summaryStats? `[${child.waist}]`: ''}.</span> `;
-		}
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function longImplants(child) {
-		r += `<span class="pink">`;
-		if ((child.boobsImplant !== 0) || (child.buttImplant !== 0) || (child.lipsImplant !== 0) || (child.bellyImplant !== -1)) {
-			r += `Implants. `;
-		} else if ((child.faceImplant >= 30) || (child.waist < -95)) {
-			r += `Surgery enhanced. `;
-		} else {
-			r += `All natural. `;
-		}
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function longLactation(child) {
-		if (child.lactation === 1) {
-			r += `Lactating naturally. `;
-		} else if (child.lactation === 2) {
-			r += `Heavy lactation. `;
-		}
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function longMods(child) {
-		V.modScorChildStatsChecker.modScore(child);
-		if (child.corsetPiercing === 0 && V.piercingScore < 3 && V.tatScore < 2) {
-			return;
-		} else if (V.modScore > 15 || (V.piercingScore > 8 && V.tatScore > 5)) {
-			r += `Extensive body mods. `;
-		} else if (V.modScore > 7) {
-			r += `Noticeable body mods. `;
-		} else {
-			r += `Light body mods. `;
-		}
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function shortIntelligence(child) {
-		const intelligence = child.intelligence + child.intelligenceImplant;
-		if (child.fetish === "mindbroken") {
-			return;
-		} else if (child.intelligenceImplant >= 30) {
-			if (intelligence >= 130) {
-				r += `<span class="deepskyblue">I++++(e+)${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}</span> `;
-			} else if (intelligence > 95) {
-				r += `<span class="deepskyblue">I+++(e+)${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}</span> `;
-			} else if (intelligence > 50) {
-				r += `<span class="deepskyblue">I++(e+)${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}</span> `;
-			} else if (intelligence > 15) {
-				r += `<span class="deepskyblue">I+(e+)${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}</span> `;
-			} else if (intelligence >= -15) {
-				r += `I(e+)${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}`;
-			} else if (intelligence >= -50) {
-				r += `<span class="orangered">I-(e+)${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}</span> `;
-			} else if (intelligence >= -95) {
-				r += `<span class="orangered">I--(e+)${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}</span> `;
-			} else {
-				r += `<span class="orangered">I---(e+)${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}</span> `;
-			}
-		} else if (child.intelligenceImplant >= 15) {
-			if (intelligence > 95) {
-				r += `<span class="deepskyblue">I+++(e)${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}</span> `;
-			} else if (intelligence > 50) {
-				r += `<span class="deepskyblue">I++(e)${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}</span> `;
-			} else if (intelligence > 15) {
-				r += `<span class="deepskyblue">I+(e)${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}</span> `;
-			} else if (intelligence >= -15) {
-				r += `I(e)${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}`;
-			} else if (intelligence >= -50) {
-				r += `<span class="orangered">I-(e)${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}</span> `;
-			} else if (intelligence >= -95) {
-				r += `<span class="orangered">I--(e)${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}</span> `;
-			} else {
-				r += `<span class="orangered">I---(e)${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}</span> `;
-			}
-		} else {
-			if (intelligence > 95) {
-				r += `<span class="deepskyblue">I+++${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}</span> `;
-			} else if (intelligence > 50) {
-				r += `<span class="deepskyblue">I++${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}</span> `;
-			} else if (intelligence > 15) {
-				r += `<span class="deepskyblue">I+${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}</span> `;
-			} else if (intelligence >= -15) {
-				r += `I${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}`;
-			} else if (intelligence >= -50) {
-				r += `<span class="orangered">I-${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}</span> `;
-			} else if (intelligence >= -95) {
-				r += `<span class="orangered">I--${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}</span> `;
-			} else {
-				r += `<span class="orangered">I---${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}</span> `;
-			}
-		}
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function shortSexSkills(child) {
-		let SSkills = child.skill.anal + child.skill.oral;
-		r += `<span class="aquamarine">`;
-		if (((SSkills + child.skill.whoring + child.skill.entertainment) >= 400) && ((child.vagina < 0) || (child.skill.vaginal >= 100))) {
-			r += `MSS`;
-		} else {
-			SSkills += child.skill.vaginal;
-			SSkills = Math.trunc(SSkills);
-			if (SSkills > 180) {
-				r += `S++`;
-			} else if ((SSkills > 120) && (child.vagina < 0)) {
-				r += `Sh++`;
-			} else if (SSkills > 90) {
-				r += `S+`;
-			} else if (SSkills > 30) {
-				r += `S`;
-			} else {
-				r += `S-`;
-			}
-			if (V.summaryStats) {
-				r += `[${SSkills}] `;
-			}
-			r += " ";
-			if (child.skill.whoring >= 100) {
-				r += `W+++`;
-			} else if (child.skill.whoring > 60) {
-				r += `W++`;
-			} else if (child.skill.whoring > 30) {
-				r += `W+`;
-			} else if (child.skill.whoring > 10) {
-				r += `W`;
-			}
-			if (child.skill.whoring > 10) {
-				if (V.summaryStats) {
-					r += `[${child.skill.whoring}] `;
-				}
-			}
-			r += " ";
-			if (child.skill.entertainment >= 100) {
-				r += `E+++`;
-			} else if (child.skill.entertainment > 60) {
-				r += `E++`;
-			} else if (child.skill.entertainment > 30) {
-				r += `E+`;
-			} else if (child.skill.entertainment > 10) {
-				r += `E`;
-			}
-			if (child.skill.entertainment > 10) {
-				if (V.summaryStats) {
-					r += `[${child.skill.entertainment}] `;
+			case "Kuwaiti":
+				r += `Kuw`;
+				break;
+			case "Kyrgyz":
+				r += `Kyr`;
+				break;
+			case "Laotian":
+				r += `Lao`;
+				break;
+			case "Latvian":
+				r += `Lat`;
+				break;
+			case "Lebanese":
+				r += `Lbn`;
+				break;
+			case "Liberian":
+				r += `Lib`;
+				break;
+			case "Libyan":
+				r += `Lby`;
+				break;
+			case "a Liechtensteiner":
+				r += `Lie`;
+				break;
+			case "Lithuanian":
+				r += `Lit`;
+				break;
+			case "Luxembourgian":
+				r += `Lux`;
+				break;
+			case "Macedonian":
+				r += `Mac`;
+				break;
+			case "Malagasy":
+				r += `Mad`;
+				break;
+			case "Malawian":
+				r += `Mwi`;
+				break;
+			case "Malaysian":
+				r += `Mys`;
+				break;
+			case "Maldivian":
+				r += `Mdv`;
+				break;
+			case "Malian":
+				r += `Mal`;
+				break;
+			case "Maltese":
+				r += `Mlt`;
+				break;
+			case "Marshallese":
+				r += `MI`;
+				break;
+			case "Mauritanian":
+				r += `Mta`;
+				break;
+			case "Mauritian":
+				r += `Mts`;
+				break;
+			case "Mexican":
+				r += `Mex`;
+				break;
+			case "Micronesian":
+				r += `FSM`;
+				break;
+			case "Moldovan":
+				r += `Mol`;
+				break;
+			case "Monégasque":
+				r += `Mnc`;
+				break;
+			case "Mongolian":
+				r += `Mon`;
+				break;
+			case "Montenegrin":
+				r += `Mng`;
+				break;
+			case "Moroccan":
+				r += `Mor`;
+				break;
+			case "Mosotho":
+				r += `Les`;
+				break;
+			case "Motswana":
+				r += `Bot`;
+				break;
+			case "Mozambican":
+				r += `Moz`;
+				break;
+			case "Namibian":
+				r += `Nam`;
+				break;
+			case "Nauruan":
+				r += `Nau`;
+				break;
+			case "Nepalese":
+				r += `Npl`;
+				break;
+			case "New Caledonian":
+				r += `NC`;
+				break;
+			case "a New Zealander":
+				r += `NZ`;
+				break;
+			case "Ni-Vanuatu":
+				r += `Van`;
+				break;
+			case "Nicaraguan":
+				r += `Nic`;
+				break;
+			case "Nigerian":
+				r += `Nga`;
+				break;
+			case "Nigerien":
+				r += `Ngr`;
+				break;
+			case "Niuean":
+				r += `Niu`;
+				break;
+			case "Norwegian":
+				r += `Nor`;
+				break;
+			case "Omani":
+				r += `Omn`;
+				break;
+			case "Pakistani":
+				r += `Pak`;
+				break;
+			case "Palauan":
+				r += `Plu`;
+				break;
+			case "Palestinian":
+				r += `Pal`;
+				break;
+			case "Panamanian":
+				r += `Pan`;
+				break;
+			case "Papua New Guinean":
+				r += `PNG`;
+				break;
+			case "Paraguayan":
+				r += `Par`;
+				break;
+			case "Peruvian":
+				r += `Per`;
+				break;
+			case "Polish":
+				r += `Pol`;
+				break;
+			case "Portuguese":
+				r += `Por`;
+				break;
+			case "Puerto Rican":
+				r += `PR`;
+				break;
+			case "Qatari":
+				r += `Qat`;
+				break;
+			case "Romanian":
+				r += `Rom`;
+				break;
+			case "Russian":
+				r += `Rus`;
+				break;
+			case "Rwandan":
+				r += `Rwa`;
+				break;
+			case "Sahrawi":
+				r += `Sah`;
+				break;
+			case "Saint Lucian":
+				r += `SL`;
+				break;
+			case "Salvadoran":
+				r += `ES`;
+				break;
+			case "Sammarinese":
+				r += `SM`;
+				break;
+			case "Samoan":
+				r += `Sam`;
+				break;
+			case "São Toméan":
+				r += `STP`;
+				break;
+			case "Saudi":
+				r += `Sau`;
+				break;
+			case "Scottish":
+				r += `Sco`;
+				break;
+			case "Senegalese":
+				r += `Sen`;
+				break;
+			case "Serbian":
+				r += `Srb`;
+				break;
+			case "Seychellois":
+				r += `Sey`;
+				break;
+			case "Sierra Leonean":
+				r += `Sie`;
+				break;
+			case "Singaporean":
+				r += `Sng`;
+				break;
+			case "Slovak":
+				r += `Svk`;
+				break;
+			case "Slovene":
+				r += `Svn`;
+				break;
+			case "a Solomon Islander":
+				r += `SI`;
+				break;
+			case "Somali":
+				r += `Som`;
+				break;
+			case "South African":
+				r += `RSA`;
+				break;
+			case "South Sudanese":
+				r += `SS`;
+				break;
+			case "Spanish":
+				r += `Spa`;
+				break;
+			case "Sri Lankan":
+				r += `Sri`;
+				break;
+			case "Sudanese":
+				r += `Sud`;
+				break;
+			case "Surinamese":
+				r += `Sur`;
+				break;
+			case "Swazi":
+				r += `Swa`;
+				break;
+			case "Swedish":
+				r += `Swe`;
+				break;
+			case "Swiss":
+				r += `Swi`;
+				break;
+			case "Syrian":
+				r += `Syr`;
+				break;
+			case "Taiwanese":
+				r += `Tai`;
+				break;
+			case "Tajik":
+				r += `Taj`;
+				break;
+			case "Tanzanian":
+				r += `Tza`;
+				break;
+			case "Thai":
+				r += `Tha`;
+				break;
+			case "Tibetan":
+				r += `Tib`;
+				break;
+			case "Togolese":
+				r += `Tog`;
+				break;
+			case "Tongan":
+				r += `Ton`;
+				break;
+			case "Trinidadian":
+				r += `TT`;
+				break;
+			case "Tunisian":
+				r += `Tun`;
+				break;
+			case "Turkish":
+				r += `Tur`;
+				break;
+			case "Turkmen":
+				r += `Tkm`;
+				break;
+			case "Tuvaluan":
+				r += `Tuv`;
+				break;
+			case "Ugandan":
+				r += `Uga`;
+				break;
+			case "Ukrainian":
+				r += `Ukr`;
+				break;
+			case "Uruguayan":
+				r += `Uru`;
+				break;
+			case "Uzbek":
+				r += `Uzb`;
+				break;
+			case "Vatican":
+				r += `VC`;
+				break;
+			case "Venezuelan":
+				r += `Ven`;
+				break;
+			case "Vietnamese":
+				r += `Vnm`;
+				break;
+			case "Vincentian":
+				r += `SVG`;
+				break;
+			case "Yemeni":
+				r += `Yem`;
+				break;
+			case "Zairian":
+				r += `DRC`;
+				break;
+			case "Zambian":
+				r += `Zam`;
+				break;
+			case "Zimbabwean":
+				if (child.race === "white") {
+					r += `Rho`;
+				} else {
+					r += `Zwe`;
 				}
-			}
+				break;
+			case "Ancient Chinese Revivalist":
+				r += `Chi Rev`;
+				break;
+			case "Ancient Egyptian Revivalist":
+				r += `Egy Rev`;
+				break;
+			case "Arabian Revivalist":
+				r += `Ara Rev`;
+				break;
+			case "Aztec Revivalist":
+				r += `Azt Rev`;
+				break;
+			case "Edo Revivalist":
+				r += `Edo Rev`;
+				break;
+			case "Roman Revivalist":
+				r += `Rom Rev`;
+				break;
+			case "":
+			case "none":
+			case "child":
+			case "Stateless":
+				r += `None`;
+				break;
+			default:
+				r += `${child.nationality.charAt(0) + child.nationality.charAt(1) + child.nationality.charAt(2)}`;
+				break;
 		}
+		r += `</span> `;
 	}
 
 	/**
 	 * @param {App.Entity.SlaveState} child
 	 */
-	function shortPrestige(child) {
-		if (child.prestige > 0) {
-			r += `<span class="green">`;
-			if (child.prestige > 2) {
-				r += `Prest++`;
-			} else if (child.prestige === 2) {
-				r += `Prest+`;
-			} else if (child.prestige === 1) {
-				r += `Prest`;
-			}
-			r += `</span> `;
+	function longNationality(child) {
+		r += `<span class="tan">`;
+		switch (child.nationality) {
+			case "a Cook Islander":
+				r += `Cook Islander. `;
+				break;
+			case "a Liechtensteiner":
+				r += `Liechtensteiner. `;
+				break;
+			case "a New Zealander":
+				r += `New Zealander. `;
+				break;
+			case "a Solomon Islander":
+				r += `Solomon Islander. `;
+				break;
+			case "Zimbabwean":
+				if (child.race === "white") {
+					r += `Rhodesian. `;
+				} else {
+					r += `${child.nationality}. `;
+				}
+				break;
+			case "child":
+			case "none":
+			case "":
+			case "Stateless":
+				r += `Stateless. `;
+				break;
+			default:
+				r += `${child.nationality}. `;
+				break;
 		}
+		r += `</span> `;
 	}
 
 	/**
 	 * @param {App.Entity.SlaveState} child
 	 */
-	function shortPornPrestige(child) {
-		if (child.pornPrestige > 0) {
-			r += `<span class="green">`;
-			if (child.pornPrestige > 2) {
-				r += `PPrest++`;
-			} else if (child.pornPrestige === 2) {
-				r += `PPrest+`;
-			} else if (child.pornPrestige === 1) {
-				r += `PPrest`;
-			}
-			r += `</span> `;
+	function shortSkin(child) {
+		r += `<span class="pink">`;
+		switch (child.skin) {
+			case "pure white":
+				r += `P. Whi`;
+				break;
+			case "extremely fair":
+				r += `E. Fai`;
+				break;
+			case "very fair":
+				r += `V. Fai`;
+				break;
+			case "extremely pale":
+				r += `E. Pal`;
+				break;
+			case "very pale":
+				r += `V. Pal`;
+				break;
+			case "light brown":
+				r += `L. Br`;
+				break;
+			case "dark brown":
+				r += `D. Br`;
+				break;
+			case "light olive":
+				r += `L. Oli`;
+				break;
+			case "dark olive":
+				r += `D. Oli`;
+				break;
+			case "light beige":
+				r += `L. Bei`;
+				break;
+			case "dark beige":
+				r += `D. Bei`;
+				break;
+			case "tan":
+				r += `Tan`;
+				break;
+			case "bronze":
+				r += `Bron`;
+				break;
+			case "ebony":
+				r += `Ebon`;
+				break;
+			case "pure black":
+				r += `P. Bla`;
+				break;
+			case "dark":
+			case "fair":
+			case "pale":
+				r += `${child.skin.charAt(0).toUpperCase() + child.skin.slice(1)}`;
+				break;
+			default:
+				r += `${child.skin.charAt(0).toUpperCase() + child.skin.charAt(1) + child.skin.charAt(2)}`;
+				break;
 		}
+		r += `</span> `;
 	}
 
 	/**
 	 * @param {App.Entity.SlaveState} child
 	 */
-	function longIntelligence(child) {
-		const intelligence = child.intelligence + child.intelligenceImplant;
-		if (child.fetish === "mindbroken") {
-			return;
-		} else if (child.intelligenceImplant >= 30) {
-			if (intelligence >= 130) {
-				r += `<span class="deepskyblue">Genius${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
-			} else if (intelligence > 95) {
-				r += `<span class="deepskyblue">Brilliant, well educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
-			} else if (intelligence > 50) {
-				r += `<span class="deepskyblue">Very smart, well educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
-			} else if (intelligence > 15) {
-				r += `<span class="deepskyblue">Smart, well educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
-			} else if (intelligence >= -15) {
-				r += `Average intelligence, well educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}. `;
-			} else if (intelligence >= -50) {
-				r += `<span class="orangered">Slow, well educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
-			} else if (intelligence >= -95) {
-				r += `<span class="orangered">Very slow, well educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
-			} else {
-				r += `<span class="orangered">Moronic, well educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
-			}
-		} else if (child.intelligenceImplant >= 15) {
-			if (intelligence > 95) {
-				r += `<span class="deepskyblue">Brilliant, educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
-			} else if (intelligence > 50) {
-				r += `<span class="deepskyblue">Very smart, educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
-			} else if (intelligence > 15) {
-				r += `<span class="deepskyblue">Smart, educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
-			} else if (intelligence >= -15) {
-				r += `Average intelligence, educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}. `;
-			} else if (intelligence >= -50) {
-				r += `<span class="orangered">Slow, educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
-			} else if (intelligence >= -95) {
-				r += `<span class="orangered">Very slow, educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
-			} else {
-				r += `<span class="orangered">Moronic, educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
+	function shortGenitals(child) {
+		if (child.dick > 0) {
+			r += `<span class="pink">`;
+			if (child.balls === 0) {
+				r += `Geld`;
 			}
-		} else {
-			if (intelligence > 95) {
-				r += `<span class="deepskyblue">Brilliant${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
-			} else if (intelligence > 50) {
-				r += `<span class="deepskyblue">Very smart${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
-			} else if (intelligence > 15) {
-				r += `<span class="deepskyblue">Smart${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
-			} else if (intelligence >= -15) {
-				r += `Average intelligence${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}. `;
-			} else if (intelligence >= -50) {
-				r += `<span class="orangered">Slow${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
-			} else if (intelligence >= -95) {
-				r += `<span class="orangered">Very slow${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
-			} else {
-				r += `<span class="orangered">Moronic${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
+			if ((child.dick > 8) && (child.balls > 8)) {
+				r += `Junk+++`;
+			} else if ((child.dick > 5) && (child.balls > 5)) {
+				r += `Junk++`;
+			} else if ((child.dick > 4) && (child.balls > 4)) {
+				r += `Junk+`;
+			} else if ((child.dick > 3) && (child.balls > 3)) {
+				r += `Junk`;
+			} else if (child.dick > 8) {
+				r += `Dick+++`;
+			} else if (child.dick > 5) {
+				r += `Dick++`;
+			} else if (child.dick > 4) {
+				r += `Dick+`;
+			} else if (child.dick > 3) {
+				r += `Dick`;
+			} else if (child.balls > 10) {
+				r += `Balls+++`;
+			} else if (child.balls > 5) {
+				r += `Balls++`;
+			} else if (child.balls > 4) {
+				r += `Balls+`;
+			} else if (child.balls > 3) {
+				r += `Balls`;
 			}
+			r += `</span> `;
 		}
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function longSexSkills(child) {
-		let SSkills = (child.skill.anal + child.skill.oral);
-		r += `<span class="aquamarine">`;
-		if (((SSkills + child.skill.whoring + child.skill.entertainment) >= 400) && ((child.vagina < 0) || (child.skill.vaginal >= 100))) {
-			r += `Masterful Child. `;
-		} else {
-			SSkills += child.skill.vaginal;
-			if (SSkills > 180) {
-				r += `Sex master${V.summaryStats? `[${Math.trunc(SSkills)}]`: ''}. `;
-			} else if ((SSkills > 120) && (child.vagina < 0)) {
-				r += `Masterful shemale${V.summaryStats? `[${Math.trunc(SSkills)}]`: ''}. `;
-			} else if (SSkills > 90) {
-				r += `Sexual expert${V.summaryStats? `[${Math.trunc(SSkills)}]`: ''}. `;
-			} else if (SSkills > 30) {
-				r += `Sexually skilled${V.summaryStats? `[${Math.trunc(SSkills)}]` : ''}. `;
-			} else {
-				r += `Sexually unskilled${V.summaryStats? `[${Math.trunc(SSkills)}]` : ''}. `;
-			}
-			r += " ";
-			if (child.skill.whoring >= 100) {
-				r += `Masterful whore${V.summaryStats? `[${child.skill.whoring}]`: ''}. `;
-			} else if (child.skill.whoring >= 60) {
-				r += `Expert whore${V.summaryStats? `[${child.skill.whoring}]`: ''}. `;
-			} else if (child.skill.whoring >= 30) {
-				r += `Skilled whore${V.summaryStats? `[${child.skill.whoring}]`: ''}. `;
-			} else if (child.skill.whoring >= 10) {
-				r += `Basic whore${V.summaryStats? `[${child.skill.whoring}]`: ''}. `;
-			}
-			r += " ";
-			if (child.skill.entertainment >= 100) {
-				r += `Masterful entertainer${V.summaryStats? `[${child.skill.entertainment}]`: ''}. `;
-			} else if (child.skill.entertainment >= 60) {
-				r += `Expert entertainer${V.summaryStats? `[${child.skill.entertainment}]`: ''}. `;
-			} else if (child.skill.entertainment >= 30) {
-				r += `Skilled entertainer${V.summaryStats? `[${child.skill.entertainment}]`: ''}. `;
-			} else if (child.skill.entertainment >= 10) {
-				r += `Basic entertainer${V.summaryStats? `[${child.skill.entertainment}]`: ''}. `;
-			}
-			r += " ";
+		if (child.vagina === 0) {
+			r += `<span class="lime">VV</span> `;
+		} else if ((child.pregKnown === 1) && canWalk(child) && (child.clothes === "no clothing" || child.clothes === "body oil") && (child.shoes === "none")) {
+			r += `<span class="pink">NBP</span> `;
+		}
+		if (child.anus === 0) {
+			r += ` <span class="lime">AV</span> `;
+		}
+		r += `<span class="pink">`;
+		if ((child.vagina > 3) && (child.anus > 3)) {
+			r += ` V++A++`;
+		} else if ((child.vagina > 2) && (child.anus > 2)) {
+			r += ` V+A+`;
+		} else if (child.vagina > 3) {
+			r += ` V++`;
+		} else if (child.vagina > 2) {
+			r += ` V+`;
+		} else if (child.anus > 3) {
+			r += ` A++`;
+		} else if (child.anus > 2) {
+			r += ` A+`;
 		}
+		r += `</span> `;
 	}
 
 	/**
 	 * @param {App.Entity.SlaveState} child
 	 */
-	function longPrestige(child) {
-		if (child.prestige > 0) {
-			r += `<span class="green">`;
-			if (child.prestige > 2) {
-				r += `Extremely prestigious. `;
-			} else if (child.prestige === 2) {
-				r += `Very prestigious. `;
-			} else if (child.prestige === 1) {
-				r += `Prestigious. `;
+	function longGenitals(child) {
+		if (child.dick > 0) {
+			r += `<span class="pink">`;
+			if (child.balls === 0) {
+				r += `Gelded. `;
 			}
-			r += `</span> `;
-		}
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function longPornPrestige(child) {
-		if (child.pornPrestige > 0) {
-			r += `<span class="green">`;
-			if (child.pornPrestige > 2) {
-				r += `Porn star. `;
-			} else if (child.pornPrestige === 2) {
-				r += `Porn slut. `;
-			} else if (child.pornPrestige === 1) {
-				r += `Porn amateur. `;
+			if ((child.dick > 8) && (child.balls > 8)) {
+				r += `Hyper dick & balls. `;
+			} else if ((child.dick > 5) && (child.balls > 5)) {
+				r += `Monster dick & balls. `;
+			} else if ((child.dick > 4) && (child.balls > 4)) {
+				r += `Huge dick & balls. `;
+			} else if ((child.dick > 3) && (child.balls > 3)) {
+				r += `Big dick & balls. `;
+			} else if (child.dick > 8) {
+				r += `Hyper dong. `;
+			} else if (child.dick > 5) {
+				r += `Monster dong. `;
+			} else if (child.dick > 4) {
+				r += `Huge dick. `;
+			} else if (child.dick > 3) {
+				r += `Big dick. `;
+			} else if (child.balls > 8) {
+				r += `Hyper balls. `;
+			} else if (child.balls > 5) {
+				r += `Monstrous balls. `;
+			} else if (child.balls > 4) {
+				r += `Huge balls. `;
+			} else if (child.balls > 3) {
+				r += `Big balls. `;
 			}
 			r += `</span> `;
 		}
+		if (child.vagina === 0) {
+			r += `<span class="lime">Virgin.</span> `;
+		} else if ((child.pregKnown === 1) && canWalk(child) && (child.clothes === "no clothing" || child.clothes === "body oil") && (child.shoes === "none")) {
+			r += `<span class="pink">Naked, barefoot, and pregnant.</span> `;
+		}
+		if (child.anus === 0) {
+			r += `<span class="lime">Anal virgin.</span> `;
+		}
+		r += `<span class="pink">`;
+		if ((child.vagina > 3) && (child.anus > 3)) {
+			r += `Blown out holes. `;
+		} else if ((child.vagina > 2) && (child.anus > 2)) {
+			r += `High mileage. `;
+		} else if (child.vagina > 3) {
+			r += `Cavernous pussy. `;
+		} else if (child.vagina > 2) {
+			r += `Loose pussy. `;
+		} else if (child.anus > 3) {
+			r += `Permagaped anus. `;
+		} else if (child.anus > 2) {
+			r += `Gaping anus. `;
+		}
+		r += `</span> `;
 	}
 
 	/**
 	 * @param {App.Entity.SlaveState} child
 	 */
-	function shortFetish(child) {
-		r += `<span class="lightcoral">`;
-		switch (child.fetish) {
-			case "submissive":
-				if (child.fetishStrength > 95) {
-					r += `Sub++`;
-				} else if (child.fetishStrength > 60) {
-					r += `Sub+`;
-				} else {
-					r += `Sub`;
-				}
-				break;
-			case "cumslut":
-				if (child.fetishStrength > 95) {
-					r += `Oral++`;
-				} else if (child.fetishStrength > 60) {
-					r += `Oral+`;
-				} else {
-					r += `Oral`;
-				}
-				break;
-			case "humiliation":
-				if (child.fetishStrength > 95) {
-					r += `Humil++`;
-				} else if (child.fetishStrength > 60) {
-					r += `Humil+`;
-				} else {
-					r += `Humil`;
-				}
-				break;
-			case "buttslut":
-				if (child.fetishStrength > 95) {
-					r += `Anal++`;
-				} else if (child.fetishStrength > 60) {
-					r += `Anal+`;
-				} else {
-					r += `Anal`;
-				}
-				break;
-			case "boobs":
-				if (child.fetishStrength > 95) {
-					r += `Boobs++`;
-				} else if (child.fetishStrength > 60) {
-					r += `Boobs+`;
-				} else {
-					r += `Boobs`;
-				}
-				break;
-			case "sadist":
-				if (child.fetishStrength > 95) {
-					r += `Sadist++`;
-				} else if (child.fetishStrength > 60) {
-					r += `Sadist+`;
-				} else {
-					r += `Sadist`;
-				}
-				break;
-			case "masochist":
-				if (child.fetishStrength > 95) {
-					r += `Pain++`;
-				} else if (child.fetishStrength > 60) {
-					r += `Pain+`;
-				} else {
-					r += `Pain`;
-				}
-				break;
-			case "dom":
-				if (child.fetishStrength > 95) {
-					r += `Dom++`;
-				} else if (child.fetishStrength > 60) {
-					r += `Dom+`;
-				} else {
-					r += `Dom`;
-				}
-				break;
-			case "pregnancy":
-				if (child.fetishStrength > 95) {
-					r += `Preg++`;
-				} else if (child.fetishStrength > 60) {
-					r += `Preg+`;
-				} else {
-					r += `Preg`;
-				}
-				break;
-			default:
-				r += `Vanilla`;
-				break;
+	function shortAge(child) {
+		r += `<span class="pink">`;
+		if (V.showAgeDetail === 1) {
+			r += child.actualAge;
+		} else if (child.actualAge >= 40) {
+			r += `40s`;
+		} else if (child.actualAge >= 35) {
+			r += `Lt30s`;
+		} else if (child.actualAge >= 30) {
+			r += `Ea30s`;
+		} else if (child.actualAge >= 25) {
+			r += `Lt20s`;
+		} else if (child.actualAge >= 20) {
+			r += `Ea20s`;
+		} else if (child.actualAge >= 18) {
+			r += child.actualAge;
 		}
-		if (V.summaryStats) {
-			r += `[${child.fetishStrength}]`;
+		if (child.actualAge !== child.physicalAge) {
+			r += ` w ${child.physicalAge}y-bdy`;
+		}
+		if (child.visualAge !== child.physicalAge) {
+			r += ` Lks${child.visualAge}`;
 		}
-		r += `</span> `;
 	}
 
 	/**
 	 * @param {App.Entity.SlaveState} child
 	 */
-	function shortAttraction(child) {
-		if (child.attrXY <= 5) {
-			r += `<span class="red">XY---${V.summaryStats? `[${child.attrXY}]`: ''}</span> `;
-		} else if (child.attrXY <= 15) {
-			r += `<span class="red">XY--${V.summaryStats? `[${child.attrXY}]`: ''}</span> `;
-		} else if (child.attrXY <= 35) {
-			r += `<span class="red">XY-${V.summaryStats? `[${child.attrXY}]`: ''}</span> `;
-		} else if (child.attrXY <= 65) {
-			r += `XY${V.summaryStats? `[${child.attrXY}]`: ''}`;
-		} else if (child.attrXY <= 85) {
-			r += `<span class="green">XY+${V.summaryStats? `[${child.attrXY}]`: ''}</span> `;
-		} else if (child.attrXY <= 95) {
-			r += `<span class="green">XY++${V.summaryStats? `[${child.attrXY}]`: ''}</span> `;
-		} else if (child.attrXX > 95) {
-			if (child.energy <= 95) {
-				r += `<span class="green">Omni!</span> `;
-			} else {
-				r += `<span class="green">Omni+Nympho!!</span> `;
-			}
-		} else {
-			r += `<span class="green">XY+++${V.summaryStats? `[${child.attrXY}]`: ''}</span> `;
-		}
-		if (child.attrXX <= 5) {
-			r += `<span class="red">XX---${V.summaryStats? `[${child.attrXX}]`: ''}</span> `;
-		} else if (child.attrXX <= 15) {
-			r += `<span class="red">XX--${V.summaryStats? `[${child.attrXX}]`: ''}</span> `;
-		} else if (child.attrXX <= 35) {
-			r += `<span class="red">XX-${V.summaryStats? `[${child.attrXX}]`: ''}</span> `;
-		} else if (child.attrXX <= 65) {
-			r += `XX${V.summaryStats? `[${child.attrXX}]`: ''}`;
-		} else if (child.attrXX <= 85) {
-			r += `<span class="green">XX+${V.summaryStats? `[${child.attrXX}]`: ''}</span> `;
-		} else if (child.attrXX <= 95) {
-			r += `<span class="green">XX++${V.summaryStats? `[${child.attrXX}]`: ''}</span> `;
-		} else if (child.attrXY <= 95) {
-			r += `<span class="green">XX+++${V.summaryStats? `[${child.attrXX}]`: ''}</span> `;
-		}
-		if (child.energy > 95) {
-			if ((child.attrXY <= 95) || (child.attrXX <= 95)) {
-				r += `<span class="green">Nympho!</span> `;
-			}
-		} else if (child.energy > 80) {
-			r += `<span class="green">SD++${V.summaryStats? `[${child.energy}]`: ''}</span> `;
-		} else if (child.energy > 60) {
-			r += `<span class="green">SD+${V.summaryStats? `[${child.energy}]`: ''}</span> `;
-		} else if (child.energy > 40) {
-			r += `<span class="yellow">SD${V.summaryStats? `[${child.energy}]`: ''}</span> `;
-		} else if (child.energy > 20) {
-			r += `<span class="red">SD-${V.summaryStats? `[${child.energy}]`: ''}</span> `;
+	function shortFace(child) {
+		if (child.face < -95) {
+			r += `<span class="red">Face---${V.summaryStats? `[${child.face}]` : ''}</span> `;
+		} else if (child.face < -40) {
+			r += `<span class="red">Face--${V.summaryStats? `[${child.face}]` : ''}</span> `;
+		} else if (child.face < -10) {
+			r += `<span class="red">Face-${V.summaryStats? `[${child.face}]` : ''}</span> `;
+		} else if (child.face <= 10) {
+			r += `Face${V.summaryStats? `[${child.face}]` : ''}`;
+		} else if (child.face <= 40) {
+			r += `<span class="pink">Face+${V.summaryStats? `[${child.face}]` : ''}</span> `;
+		} else if (child.face <= 95) {
+			r += `<span class="pink">Face++${V.summaryStats? `[${child.face}]` : ''}</span> `;
 		} else {
-			r += `<span class="red">SD--${V.summaryStats? `[${child.energy}]`: ''}</span> `;
+			r += `<span class="pink">Face+++${V.summaryStats? `[${child.face}]` : ''}</span> `;
 		}
 	}
 
 	/**
 	 * @param {App.Entity.SlaveState} child
 	 */
-	function shortSmartFetish(child) {
-		if (child.fetishKnown === 1) {
-			if (child.clitSetting === "off") {
-				r += `SP-`;
-			} else if (((child.fetish !== "submissive") || (child.fetishStrength <= 95)) && (child.clitSetting === "submissive")) {
-				r += `SP:sub`;
-			} else if (((child.fetish !== "cumslut") || (child.fetishStrength <= 95)) && (child.clitSetting === "oral")) {
-				r += `SP:oral`;
-			} else if (((child.fetish !== "humiliation") || (child.fetishStrength <= 95)) && (child.clitSetting === "humiliation")) {
-				r += `SP:humil`;
-			} else if (((child.fetish !== "buttslut") || (child.fetishStrength <= 95)) && (child.clitSetting === "anal")) {
-				r += `SP:anal`;
-			} else if (((child.fetish !== "boobs") || (child.fetishStrength <= 95)) && (child.clitSetting === "boobs")) {
-				r += `SP:boobs`;
-			} else if (((child.fetish !== "sadist") || (child.fetishStrength <= 95)) && (child.clitSetting === "sadist")) {
-				r += `SP:sade`;
-			} else if (((child.fetish !== "masochist") || (child.fetishStrength <= 95)) && (child.clitSetting === "masochist")) {
-				r += `SP:pain`;
-			} else if (((child.fetish !== "dom") || (child.fetishStrength <= 95)) && (child.clitSetting === "dom")) {
-				r += `SP:dom`;
-			} else if (((child.fetish !== "pregnancy") || (child.fetishStrength <= 95)) && (child.clitSetting === "pregnancy")) {
-				r += `SP:preg`;
-			} else if (((child.fetish !== "none") && (child.clitSetting === "vanilla"))) {
-				r += `SP:vanilla`;
-			} else if ((child.energy <= 95) && (child.clitSetting === "all")) {
-				r += `SP:all`;
-			} else if ((child.energy > 5) && (child.clitSetting === "none")) {
-				r += `SP:none`;
-			} else if (!["women", "men", "anti-women", "anti-men"].includes(child.clitSetting)) {
-				r += `SP:monitoring`;
-			}
-		} else {
-			switch (child.clitSetting) {
-				case "off":
-					r += `SP-`;
-					break;
-				case "submissive":
-					r += `SP:sub`;
-					break;
-				case "lesbian":
-					r += `SP:les`;
-					break;
-				case "oral":
-					r += `SP:oral`;
-					break;
-				case "humiliation":
-					r += `SP:humil`;
-					break;
-				case "anal":
-					r += `SP:anal`;
-					break;
-				case "boobs":
-					r += `SP:boobs`;
-					break;
-				case "sadist":
-					r += `SP:sade`;
-					break;
-				case "masochist":
-					r += `SP:pain`;
-					break;
-				case "dom":
-					r += `SP:dom`;
-					break;
-				case "pregnancy":
-					r += `SP:pregnancy`;
-					break;
-				case "vanilla":
-					r += `SP:vanilla`;
-					break;
-				case "all":
-					r += `SP:all`;
-					break;
-				case "none":
-					r += `SP:none`;
-					break;
-			}
+	function shortEyes(child) {
+		if (child.eyes === -2) {
+			r += `<span class="red">Blind</span> `;
+		} else if (((child.eyes === -1) && (child.eyewear !== "corrective glasses") && (child.eyewear !== "corrective contacts")) || (child.eyewear === "blurring glasses") || (child.eyewear === "blurring contacts")) {
+			r += `<span class="yellow">Sight-</span> `;
 		}
 	}
 
 	/**
 	 * @param {App.Entity.SlaveState} child
 	 */
-	function shortSmartAttraction(child) {
-		if (child.attrKnown === 1) {
-			if (child.clitSetting === "women") {
-				if (child.attrXX < 95) {
-					r += `SP:women`;
-				} else {
-					r += `SP:monitoring`;
-				}
-			} else if (child.clitSetting === "men") {
-				if (child.attrXY < 95) {
-					r += `SP:men`;
-				} else {
-					r += `SP:monitoring`;
-				}
-			} else if (child.clitSetting === "anti-women") {
-				if (child.attrXX > 0) {
-					r += `SP:anti-women`;
-				} else {
-					r += `SP:monitoring`;
-				}
-			} else if (child.clitSetting === "anti-men") {
-				if (child.attrXY > 0) {
-					r += `SP:anti-men`;
-				} else {
-					r += `SP:monitoring`;
-				}
-			}
+	function shortEars(child) {
+		if (child.hears === -2) {
+			r += `<span class="red">Deaf</span> `;
+		} else if ((child.hears === -1) && (child.earwear !== "hearing aids")) {
+			r += `<span class="yellow">Hearing-</span> `;
+		}
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function shortLips(child) {
+		if (child.lips > 95) {
+			r += `Facepussy`;
+		} else if (child.lips > 70) {
+			r += `Lips+++${V.summaryStats? `[${child.lips}]` : ''}`;
+		} else if (child.lips > 40) {
+			r += `Lips++${V.summaryStats? `[${child.lips}]` : ''}`;
+		} else if (child.lips > 20) {
+			r += `Lips+${V.summaryStats? `[${child.lips}]` : ''}`;
+		} else if (child.lips > 10) {
+			r += `Lips${V.summaryStats? `[${child.lips}]` : ''}`;
 		} else {
-			if (child.clitSetting === "women") {
-				r += `SP:women`;
-			} else if (child.clitSetting === "men") {
-				r += `SP:men`;
-			} else if (child.clitSetting === "anti-women") {
-				r += `SP:anti-women`;
-			} else if (child.clitSetting === "anti-men") {
-				r += `SP:anti-men`;
-			}
+			r += `<span class="red">Lips-${V.summaryStats? `[${child.lips}]` : ''}</span> `;
 		}
 	}
 
 	/**
 	 * @param {App.Entity.SlaveState} child
 	 */
-	function shortBehaviorFlaw(child) {
-		r += `<span class="red">`;
-		switch (child.behavioralFlaw) {
-			case "arrogant":
-				r += `Arrog`;
-				break;
-			case "bitchy":
-				r += `Bitchy`;
-				break;
-			case "odd":
-				r += `Odd`;
-				break;
-			case "hates men":
-				r += `Men-`;
-				break;
-			case "hates women":
-				r += `Women-`;
-				break;
-			case "gluttonous":
-				r += `Glut`;
-				break;
-			case "anorexic":
-				r += `Ano`;
-				break;
-			case "devout":
-				r += `Dev`;
-				break;
-			case "liberated":
-				r += `Lib`;
-				break;
-			default:
-				child.behavioralFlaw = "none";
-				break;
+	function shortTeeth(child) {
+		if (child.teeth === "crooked") {
+			r += `<span class="yellow">Cr Teeth</span> `;
+		} else if (child.teeth === "gapped") {
+			r += `<span class="yellow">Gap</span> `;
+		} else if (child.teeth === "cosmetic braces") {
+			r += `Cos Braces`;
+		} else if (child.teeth === "straightening braces") {
+			r += `Braces`;
+		} else if (child.teeth === "removable") {
+			r += `Rem Teeth`;
+		} else if (child.teeth === "pointy") {
+			r += `Fangs`;
+		} else if (child.teeth === "baby") {
+			r += `Baby`;
+		} else if (child.teeth === "mixed") {
+			r += `Mixed`;
 		}
-		r += `</span> `;
 	}
 
 	/**
 	 * @param {App.Entity.SlaveState} child
 	 */
-	function shortSexFlaw(child) {
-		switch (child.sexualFlaw) {
-			case "hates oral":
-				r += `<span class="red">Oral-</span> `;
-				break;
-			case "hates anal":
-				r += `<span class="red">Anal-</span> `;
-				break;
-			case "hates penetration":
-				r += `<span class="red">Fuck-</span> `;
-				break;
-			case "shamefast":
-				r += `<span class="red">Shame</span> `;
-				break;
-			case "idealistic":
-				r += `<span class="red">Ideal</span> `;
-				break;
-			case "repressed":
-				r += `<span class="red">Repre</span> `;
-				break;
-			case "apathetic":
-				r += `<span class="red">Apath</span> `;
-				break;
-			case "crude":
-				r += `<span class="red">Crude</span> `;
-				break;
-			case "judgemental":
-				r += `<span class="red">Judge</span> `;
-				break;
-			case "cum addict":
-				r += `<span class="yellow">CumAdd</span> `;
-				break;
-			case "anal addict":
-				r += `<span class="yellow">AnalAdd</span> `;
-				break;
-			case "attention whore":
-				r += `<span class="yellow">Attention</span> `;
-				break;
-			case "breast growth":
-				r += `<span class="yellow">BoobObsess</span> `;
-				break;
-			case "abusive":
-				r += `<span class="yellow">Abusive</span> `;
-				break;
-			case "malicious":
-				r += `<span class="yellow">Malice</span> `;
-				break;
-			case "self hating":
-				r += `<span class="yellow">SelfHatr</span> `;
-				break;
-			case "neglectful":
-				r += `<span class="yellow">SelfNeglect</span> `;
-				break;
-			case "breeder":
-				r += `<span class="yellow">BreedObsess</span> `;
-				break;
-			default:
-				child.sexualFlaw = "none";
-				break;
+	function shortMuscles(child) {
+		if (child.muscles > 95) {
+			r += `Musc++${V.summaryStats? `[${child.muscles}]`: ''}`;
+		} else if (child.muscles > 50) {
+			r += `Musc+${V.summaryStats? `[${child.muscles}]`: ''}`;
+		} else if (child.muscles > 5) {
+			r += `Fit${V.summaryStats? `[${child.muscles}]`: ''}`;
+		} else if (child.muscles > -6) {
+			r += `Soft${V.summaryStats? `[${child.muscles}]`: ''}`;
+		} else if (child.muscles > -31) {
+			if (V.arcologies[0].FSPhysicalIdealist === "unset") {
+				r += `<span class="red">Weak</span>${V.summaryStats? `[${child.muscles}]`: ''}`;
+			} else {
+				r += `Soft${V.summaryStats? `[${child.muscles}]`: ''}`;
+			}
+		} else if (child.muscles > -96) {
+			if (V.arcologies[0].FSPhysicalIdealist === "unset") {
+				r += `<span class="red">Weak+</span>${V.summaryStats? `[${child.muscles}]`: ''}`;
+			} else {
+				r += `Soft+${V.summaryStats? `[${child.muscles}]`: ''}`;
+			}
+		} else {
+			r += `<span class="red">Weak++</span>${V.summaryStats? `[${child.muscles}]`: ''}`;
 		}
 	}
 
 	/**
 	 * @param {App.Entity.SlaveState} child
 	 */
-	function shortBehaviorQuirk(child) {
-		r += `<span class="green">`;
-		switch (child.behavioralQuirk) {
-			case "confident":
-				r += `Confid`;
-				break;
-			case "cutting":
-				r += `Cutting`;
-				break;
-			case "funny":
-				r += `Funny`;
-				break;
-			case "fitness":
-				r += `Fit`;
-				break;
-			case "adores women":
-				r += `Women+`;
-				break;
-			case "adores men":
-				r += `Men+`;
-				break;
-			case "insecure":
-				r += `Insec`;
-				break;
-			case "sinful":
-				r += `Sinf`;
-				break;
-			case "advocate":
-				r += `Advoc`;
-				break;
-			default:
-				child.behavioralQuirk = "none";
-				break;
+	function shortLimbs(child) {
+		if (child.amp !== 0) {
+			if (child.amp === -1) {
+				r += `P-Limbs`;
+			} else if (child.amp === -2) {
+				r += `Sex P-Limbs`;
+			} else if (child.amp === -3) {
+				r += `Beauty P-Limbs`;
+			} else if (child.amp === -4) {
+				r += `Combat P-Limbs`;
+			} else if (child.amp === -5) {
+				r += `Cyber P-Limbs`;
+			} else {
+				r += `Amp`;
+			}
+		}
+		if (!canWalk(child)) {
+			r += ` Immob `;
+		}
+		if (child.heels === 1) {
+			r += ` Heel `;
 		}
+		r += `</span> `;
 	}
 
 	/**
 	 * @param {App.Entity.SlaveState} child
 	 */
-	function shortSexQuirk(child) {
-		switch (child.sexualQuirk) {
-			case "gagfuck queen":
-				r += `Gagfuck`;
-				break;
-			case "painal queen":
-				r += `Painal`;
-				break;
-			case "strugglefuck queen":
-				r += `Struggle`;
-				break;
-			case "tease":
-				r += `Tease`;
-				break;
-			case "romantic":
-				r += `Romantic`;
-				break;
-			case "perverted":
-				r += `Perverted`;
-				break;
-			case "caring":
-				r += `Caring`;
-				break;
-			case "unflinching":
-				r += `Unflinch`;
-				break;
-			case "size queen":
-				r += `SizeQ`;
-				break;
-			default:
-				child.sexualQuirk = "none";
-				break;
+	function shortVoice(child) {
+		if (child.voice === 0) {
+			r += `<span class="red">Mute</span> `;
+		} else {
+			if (child.accent === 3) {
+				r += `<span class="red">Acc--</span> `;
+			} else if (child.accent === 2) {
+				r += `Acc-`;
+			} else if (child.accent === 4) {
+				r += `Acc--`;
+			} else if (child.accent === 1) {
+				r += `<span class="pink">Acc</span> `;
+			}
+		}
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function shortTitsAss(child) {
+		r += `<span class="pink">`;
+		if ((child.boobs >= 12000) && (child.butt > 9)) {
+			r += `T&A+++`;
+		} else if ((child.boobs > 4000) && (child.butt > 8)) {
+			r += `T&A++`;
+		} else if ((child.boobs > 2000) && (child.butt > 6)) {
+			r += `T&A+`;
+		} else if ((child.boobs > 800) && (child.butt > 4)) {
+			r += `T&A`;
+		} else if ((child.boobs < 500) && (child.butt < 3) && (child.weight <= 10) && (child.muscles <= 30)) {
+			r += `Girlish`;
+		} else if (child.boobs >= 12000) {
+			r += `Boobs+++`;
+		} else if (child.boobs > 4000) {
+			r += `Boobs++`;
+		} else if (child.boobs > 2000) {
+			r += `Boobs+`;
+		} else if (child.boobs > 800) {
+			r += `Boobs`;
+		} else if (child.butt > 9) {
+			r += `Ass+++`;
+		} else if (child.butt > 8) {
+			r += `Ass++`;
+		} else if (child.butt > 6) {
+			r += `Ass+`;
+		} else if (child.butt > 4) {
+			r += `Ass`;
 		}
 		r += `</span> `;
 	}
@@ -5324,93 +4660,40 @@ App.Facilities.Nursery.ChildSummary = function(child) {
 	/**
 	 * @param {App.Entity.SlaveState} child
 	 */
-	function longFetish(child) {
-		r += `<span class="lightcoral">`;
-		switch (child.fetish) {
-			case "submissive":
-				if (child.fetishStrength > 95) {
-					r += `Complete submissive${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
-				} else if (child.fetishStrength > 60) {
-					r += `Submissive${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
-				} else {
-					r += `Submissive tendencies${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
-				}
-				break;
-			case "cumslut":
-				if (child.fetishStrength > 95) {
-					r += `Cumslut${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
-				} else if (child.fetishStrength > 60) {
-					r += `Oral fixation${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
-				} else {
-					r += `Prefers oral${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
-				}
-				break;
-			case "humiliation":
-				if (child.fetishStrength > 95) {
-					r += `Humiliation slut${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
-				} else if (child.fetishStrength > 60) {
-					r += `Exhibitionist${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
-				} else {
-					r += `Interest in humiliation${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
-				}
-				break;
-			case "buttslut":
-				if (child.fetishStrength > 95) {
-					r += `Buttslut${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
-				} else if (child.fetishStrength > 60) {
-					r += `Anal fixation${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
-				} else {
-					r += `Prefers anal${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
-				}
-				break;
-			case "boobs":
-				if (child.fetishStrength > 95) {
-					r += `Boobslut${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
-				} else if (child.fetishStrength > 60) {
-					r += `Breast fixation${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
-				} else {
-					r += `Loves boobs${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
-				}
-				break;
-			case "sadist":
-				if (child.fetishStrength > 95) {
-					r += `Complete sadist${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
-				} else if (child.fetishStrength > 60) {
-					r += `Sadist${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
-				} else {
-					r += `Sadistic tendencies${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
-				}
-				break;
-			case "masochist":
-				if (child.fetishStrength > 95) {
-					r += `Complete masochist${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
-				} else if (child.fetishStrength > 60) {
-					r += `Masochist${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
-				} else {
-					r += `Masochistic tendencies${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
-				}
-				break;
-			case "dom":
-				if (child.fetishStrength > 95) {
-					r += `Complete dom${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
-				} else if (child.fetishStrength > 60) {
-					r += `Dominant${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
-				} else {
-					r += `Dominant tendencies${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
-				}
-				break;
-			case "pregnancy":
-				if (child.fetishStrength > 95) {
-					r += `Pregnancy fetish${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
-				} else if (child.fetishStrength > 60) {
-					r += `Pregnancy kink${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
-				} else {
-					r += `Interest in impregnation${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
+	function shortHips(child) {
+		r += `<span class="red">`;
+		if (child.hips < -1) {
+			if (child.butt > 2 && (V.arcologies[0].FSTransformationFetishist < 20 || V.arcologies[0].FSTransformationFetishist === "unset") && (V.arcologies[0].FSHedonisticDecadence < 20 || V.arcologies[0].FSHedonisticDecadence === "unset")) {
+				r += `Disp+`;
+			}
+		} else if (child.hips < 0) {
+			if (child.butt > 4 && (V.arcologies[0].FSTransformationFetishist < 20 || V.arcologies[0].FSTransformationFetishist === "unset") && (V.arcologies[0].FSHedonisticDecadence < 20 || V.arcologies[0].FSHedonisticDecadence === "unset")) {
+				r += `Disp+`;
+			}
+		} else if (child.hips > 2) {
+			if (child.butt <= 8) {
+				r += `Disp-`;
+			}
+		} else if (child.hips > 1) {
+			if (child.butt <= 3 && (V.arcologies[0].FSSlimnessEnthusiast === "unset" || (child.boobs >= 500))) {
+				r += `Disp-`;
+			}
+		} else if (child.hips > 0) {
+			if (child.butt > 8) {
+				if ((V.arcologies[0].FSTransformationFetishist < 20 || V.arcologies[0].FSTransformationFetishist === "unset") && (V.arcologies[0].FSHedonisticDecadence < 20 || V.arcologies[0].FSHedonisticDecadence === "unset")) {
+					r += `Disp+`;
 				}
-				break;
-			default:
-				r += `Sexually vanilla${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
-				break;
+			} else if (child.butt <= 2 && (V.arcologies[0].FSSlimnessEnthusiast === "unset" || (child.boobs >= 500))) {
+				r += `Disp-`;
+			}
+		} else {
+			if (child.butt > 6) {
+				if ((V.arcologies[0].FSTransformationFetishist < 20 || V.arcologies[0].FSTransformationFetishist === "unset") && (V.arcologies[0].FSHedonisticDecadence < 20 || V.arcologies[0].FSHedonisticDecadence === "unset")) {
+					r += `Disp+`;
+				}
+			} else if (child.butt <= 1 && (V.arcologies[0].FSSlimnessEnthusiast === "unset" || (child.boobs >= 500))) {
+				r += `Disp-`;
+			}
 		}
 		r += `</span> `;
 	}
@@ -5418,337 +4701,257 @@ App.Facilities.Nursery.ChildSummary = function(child) {
 	/**
 	 * @param {App.Entity.SlaveState} child
 	 */
-	function longAttraction(child) {
-		if (child.attrXY <= 5) {
-			r += `<span class="red">Disgusted by men${V.summaryStats? `[${child.attrXY}]` : ''},</span> `;
-		} else if (child.attrXY <= 15) {
-			r += `<span class="red">Turned off by men${V.summaryStats? `[${child.attrXY}]` : ''},</span> `;
-		} else if (child.attrXY <= 35) {
-			r += `<span class="red">Not attracted to men${V.summaryStats? `[${child.attrXY}]` : ''},</span> `;
-		} else if (child.attrXY <= 65) {
-			r += `Indifferent to men${V.summaryStats? `[${child.attrXY}]` : ''}, `;
-		} else if (child.attrXY <= 85) {
-			r += `<span class="green">Attracted to men${V.summaryStats? `[${child.attrXY}]` : ''},</span> `;
-		} else if (child.attrXY <= 95) {
-			r += `<span class="green">Aroused by men${V.summaryStats? `[${child.attrXY}]` : ''},</span> `;
-		} else if (child.attrXX > 95) {
-			if (child.energy <= 95) {
-				r += `<span class="green">Omnisexual!</span> `;
-			} else {
-				r += `<span class="green">Omnisexual nymphomaniac!</span> `;
-			}
+	function shortWaist(child) {
+		if (child.waist > 95) {
+			r += `<span class="red">Wst---${V.summaryStats? `[${child.waist}]` : ''}</span> `;
+		} else if (child.waist > 40) {
+			r += `<span class="red">Wst--${V.summaryStats? `[${child.waist}]`: ''}</span> `;
+		} else if (child.waist > 10) {
+			r += `<span class="red">Wst-${V.summaryStats? `[${child.waist}]` : ''}</span> `;
+		} else if (child.waist >= -10) {
+			r += `Wst${V.summaryStats? `[${child.waist}]`: ''}`;
+		} else if (child.waist >= -40) {
+			r += `<span class="pink">Wst+${V.summaryStats? `[${child.waist}]` : ''}</span> `;
+		} else if (child.waist >= -95) {
+			r += `<span class="pink">Wst++${V.summaryStats? `[${child.waist}]` : ''}</span> `;
 		} else {
-			r += `<span class="green">Passionate about men${V.summaryStats? `[${child.attrXY}]` : ''},</span> `;
+			r += `<span class="pink">Wst+++${V.summaryStats? `[${child.waist}]`: ''}</span> `;
 		}
-		if (child.attrXX <= 5) {
-			r += `<span class="red">disgusted by women${V.summaryStats? `[${child.attrXX}]` : ''}.</span> `;
-		} else if (child.attrXX <= 15) {
-			r += `<span class="red">turned off by women${V.summaryStats? `[${child.attrXX}]` : ''}.</span> `;
-		} else if (child.attrXX <= 35) {
-			r += `<span class="red">not attracted to women${V.summaryStats? `[${child.attrXX}]` : ''}.</span> `;
-		} else if (child.attrXX <= 65) {
-			r += `indifferent to women${V.summaryStats? `[${child.attrXX}]` : ''}. `;
-		} else if (child.attrXX <= 85) {
-			r += `<span class="green">attracted to women${V.summaryStats? `[${child.attrXX}]` : ''}.</span> `;
-		} else if (child.attrXX <= 95) {
-			r += `<span class="green">aroused by women${V.summaryStats? `[${child.attrXX}]` : ''}.</span> `;
-		} else if (child.attrXY <= 95) {
-			r += `<span class="green">passionate about women${V.summaryStats? `[${child.attrXX}]` : ''}.</span> `;
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function shortImplants(child) {
+		r += `<span class="pink">`;
+		if ((child.boobsImplant === 0) && (child.buttImplant === 0) && (child.waist >= -95) && (child.lipsImplant === 0) && (child.faceImplant <= 5) && (child.bellyImplant === -1)) {
+			r += `Natr`;
+		} else {
+			r += `Impl`;
 		}
-		if (child.energy > 95) {
-			if ((child.attrXY <= 95) || (child.attrXX <= 95)) {
-				r += `<span class="green">Nymphomaniac!</span> `;
-			}
-		} else if (child.energy > 80) {
-			r += `<span class="green">Powerful sex drive${V.summaryStats? `[${child.energy}]` : ''}.</span> `;
-		} else if (child.energy > 60) {
-			r += `<span class="green">Good sex drive${V.summaryStats? `[${child.energy}]` : ''}.</span> `;
-		} else if (child.energy > 40) {
-			r += `<span class="yellow">Average sex drive${V.summaryStats? `[${child.energy}]` : ''}.</span> `;
-		} else if (child.energy > 20) {
-			r += `<span class="red">Poor sex drive${V.summaryStats? `[${child.energy}]` : ''}.</span> `;
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function shortLactation(child) {
+		if (child.lactation === 1) {
+			r += `Lact`;
+		} else if (child.lactation === 2) {
+			r += `Lact++`;
+		}
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function shortMods(child) {
+		V.modScorChildStatsChecker.modScore(child);
+		if (child.corsetPiercing === 0 && V.piercingScore < 3 && V.tatScore < 2) {
+			return;
+		} else if (V.modScore > 15 || (V.piercingScore > 8 && V.tatScore > 5)) {
+			r += `Mods++`;
+		} else if (V.modScore > 7) {
+			r += `Mods+`;
 		} else {
-			r += `<span class="red">No sex drive${V.summaryStats? `[${child.energy}]` : ''}.</span> `;
+			r += `Mods`;
+		}
+		if (child.brand !== 0) {
+			r += `Br`;
 		}
 	}
 
 	/**
 	 * @param {App.Entity.SlaveState} child
 	 */
-	function longSmartFetish(child) {
-		if (child.fetishKnown === 1) {
-			if (child.clitSetting === "off") {
-				r += `SP off. `;
-			} else if (((child.fetish !== "submissive") || (child.fetishStrength <= 95)) && (child.clitSetting === "submissive")) {
-				r += `SP: submissive. `;
-			} else if (((child.fetish !== "cumslut") || (child.fetishStrength <= 95)) && (child.clitSetting === "oral")) {
-				r += `SP: oral. `;
-			} else if (((child.fetish !== "humiliation") || (child.fetishStrength <= 95)) && (child.clitSetting === "humiliation")) {
-				r += `SP: humiliation. `;
-			} else if (((child.fetish !== "buttslut") || (child.fetishStrength <= 95)) && (child.clitSetting === "anal")) {
-				r += `SP: anal. `;
-			} else if (((child.fetish !== "boobs") || (child.fetishStrength <= 95)) && (child.clitSetting === "boobs")) {
-				r += `SP: breasts. `;
-			} else if (((child.fetish !== "sadist") || (child.fetishStrength <= 95)) && (child.clitSetting === "sadist")) {
-				r += `SP: sadism. `;
-			} else if (((child.fetish !== "masochist") || (child.fetishStrength <= 95)) && (child.clitSetting === "masochist")) {
-				r += `SP: masochism. `;
-			} else if (((child.fetish !== "dom") || (child.fetishStrength <= 95)) && (child.clitSetting === "dom")) {
-				r += `SP: dominance. `;
-			} else if (((child.fetish !== "pregnancy") || (child.fetishStrength <= 95)) && (child.clitSetting === "pregnancy")) {
-				r += `SP: pregnancy. `;
-			} else if ((child.fetish !== "none") && (child.clitSetting === "vanilla")) {
-				r += `SP: vanilla. `;
-			} else if ((child.energy <= 95) && (child.clitSetting === "all")) {
-				r += `SP: all. `;
-			} else if ((child.energy > 5) && (child.clitSetting === "none")) {
-				r += `SP: none. `;
-			} else if (!["women", "men", "anti-women", "anti-men"].includes(child.clitSetting)) {
-				r += `SP: monitoring. `;
-			}
+	function longAge(child) {
+		r += `<span class="pink">`;
+		if (V.showAgeDetail === 1) {
+			r += `Age ` + `${child.actualAge}` + `. `;
+		} else if (child.actualAge >= 40) {
+			r += `Forties. `;
+		} else if (child.actualAge >= 35) {
+			r += `Late thirties. `;
+		} else if (child.actualAge >= 30) {
+			r += `Early thirties. `;
+		} else if (child.actualAge >= 25) {
+			r += `Late twenties. `;
+		} else if (child.actualAge >= 20) {
+			r += `Early twenties. `;
+		} else if (child.actualAge >= 19) {
+			r += `Nineteen. `;
+		} else if (child.actualAge >= 18) {
+			r += `Eighteen. `;
 		} else {
-			switch (child.clitSetting) {
-				case "off":
-					r += `SP off. `;
-					break;
-				case "submissive":
-					r += `SP: submissive. `;
-					break;
-				case "oral":
-					r += `SP: oral. `;
-					break;
-				case "humiliation":
-					r += `SP: humiliation. `;
-					break;
-				case "anal":
-					r += `SP: anal. `;
-					break;
-				case "boobs":
-					r += `SP: breasts. `;
-					break;
-				case "sadist":
-					r += `SP: sadism. `;
-					break;
-				case "masochist":
-					r += `SP: masochism. `;
-					break;
-				case "dom":
-					r += `SP: dominance. `;
-					break;
-				case "pregnancy":
-					r += `SP: pregnancy. `;
-					break;
-				case "vanilla":
-					r += `SP: vanilla. `;
-					break;
-				case "all":
-					r += `SP: all. `;
-					break;
-				case "none":
-					r += `SP: none. `;
-					break;
+			r += `Underage. `;
+		}
+		/*
+		 ** No NCS, then do the standard, However because of the wrinkes of Incubators, as long as visual age is greater
+		 ** than or equal to physical age, we do the old physical body/Looks for fresh out of the can NCS slaves.
+		 */
+		if (((child.geneMods.NCS === 0) || (child.visualAge >= child.physicalAge))) {
+			if (child.actualAge !== child.physicalAge) {
+				r += `${child.physicalAge}` + ` year old body. `;
+			}
+			if (child.visualAge !== child.physicalAge) {
+				r += `Looks ` + `${child.visualAge}` + `. `;
 			}
+		} else {
+			/*
+			 ** Now the rub. The use of physical Age for the year old body above, basically conflicts with the changes
+			 ** that NCS introduces, so here to *distinguish* the changes, we use visual age with the 'year old body'
+			 ** and appears, for exampChild release from incubator at age 10, Her summary would show, 'Age 0. 10
+			 ** year old body.' But if she's given NCS a few weeks after release, while she's still before her first
+			 ** birthday, it'll appear the same. But once her birthday fires, if we ran with the above code it would
+			 ** say: 'Age 1. 11 year old body.' -- this conflicts with the way NCS works though, because she hasn't
+			 ** visually aged, so our change here makes it say 'Age 1. Appears to have a 10 year old body.'
+			 */
+			r += `Appears to have a ` + `${child.visualAge}` + ` year old body. `;
+		}
+		if (child.geneMods.NCS === 1) {
+			r += `(<span class="orange">NCS</span>) `;
+		}
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function longFace(child) {
+		if (child.face < -95) {
+			r += `<span class="red">Very ugly${V.summaryStats? `[${child.face}]`: ''}</span> `;
+		} else if (child.face < -40) {
+			r += `<span class="red">Ugly${V.summaryStats? `[${child.face}]`: ''}</span> `;
+		} else if (child.face < -10) {
+			r += `<span class="red">Unattractive${V.summaryStats? `[${child.face}]`: ''}</span> `;
+		} else if (child.face <= 10) {
+			r += `Average${V.summaryStats? `[${child.face}]`: ''}`;
+		} else if (child.face <= 40) {
+			r += `<span class="pink">Attractive${V.summaryStats? `[${child.face}]`: ''}</span> `;
+		} else if (child.face <= 95) {
+			r += `<span class="pink">Beautiful${V.summaryStats? `[${child.face}]`: ''}</span> `;
+		} else {
+			r += `<span class="pink">Very beautiful${V.summaryStats? `[${child.face}]`: ''}</span> `;
+		}
+		r += ` ${child.faceShape} face. `;
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function longEyes(child) {
+		if (child.eyes <= -2) {
+			r += `<span class="red">Blind.</span> `;
+		} else if (((child.eyes === -1) && (child.eyewear !== "corrective glasses") && (child.eyewear !== "corrective contacts")) || (child.eyewear === "blurring glasses") || (child.eyewear === "blurring contacts")) {
+			r += `<span class="yellow">Nearsighted.</span> `;
 		}
 	}
 
 	/**
 	 * @param {App.Entity.SlaveState} child
 	 */
-	function longSmartAttraction(child) {
-		if (child.attrKnown === 1) {
-			if ((child.attrXX < 100) && (child.clitSetting === "women")) {
-				r += `SP: women. `;
-			} else if ((child.attrXY < 100) && (child.clitSetting === "men")) {
-				r += `SP: men. `;
-			}
-		} else {
-			if (child.clitSetting === "women") {
-				r += `SP: women. `;
-			} else if (child.clitSetting === "men") {
-				r += `SP: men. `;
-			}
+	function longEars(child) {
+		if (child.hears <= -2) {
+			r += `<span class="red">Deaf.</span> `;
+		} else if ((child.hears === -1) && (child.earwear !== "hearing aids")) {
+			r += `<span class="yellow">Hard of hearing.</span> `;
 		}
 	}
 
 	/**
 	 * @param {App.Entity.SlaveState} child
 	 */
-	function longBehaviorFlaw(child) {
-		r += `<span class="red">`;
-		switch (child.behavioralFlaw) {
-			case "arrogant":
-				r += `Arrogant. `;
-				break;
-			case "bitchy":
-				r += `Bitchy. `;
-				break;
-			case "odd":
-				r += `Odd. `;
-				break;
-			case "hates men":
-				r += `Hates men. `;
-				break;
-			case "hates women":
-				r += `Hates women. `;
-				break;
-			case "gluttonous":
-				r += `Stress eater. `;
-				break;
-			case "anorexic":
-				r += `Anorexic. `;
-				break;
-			case "devout":
-				r += `Devoutly religious. `;
-				break;
-			case "liberated":
-				r += `Mentally liberated. `;
-				break;
-			default:
-				child.behavioralFlaw = "none";
-				break;
+	function longLips(child) {
+		if (child.lips > 95) {
+			r += `Facepussy${V.summaryStats? `[${child.lips}]`: ''}. `;
+		} else if (child.lips > 70) {
+			r += `Huge lips${V.summaryStats? `[${child.lips}]`: ''}. `;
+		} else if (child.lips > 40) {
+			r += `Big lips${V.summaryStats? `[${child.lips}]`: ''}. `;
+		} else if (child.lips > 20) {
+			r += `Pretty lips${V.summaryStats? `[${child.lips}]`: ''}. `;
+		} else if (child.lips > 10) {
+			r += `Normal lips${V.summaryStats? `[${child.lips}]`: ''}. `;
+		} else {
+			r += `<span class="red">Thin lips${V.summaryStats? `[${child.lips}]`: ''}.</span> `;
 		}
-		r += `</span> `;
 	}
 
 	/**
 	 * @param {App.Entity.SlaveState} child
 	 */
-	function longSexFlaw(child) {
-		switch (child.sexualFlaw) {
-			case "hates oral":
-				r += `<span class="red">Hates oral.</span> `;
-				break;
-			case "hates anal":
-				r += `<span class="red">Hates anal.</span> `;
-				break;
-			case "hates penetration":
-				r += `<span class="red">Hates penetration.</span> `;
-				break;
-			case "shamefast":
-				r += `<span class="red">Shamefast.</span> `;
-				break;
-			case "idealistic":
-				r += `<span class="red">Sexually idealistic.</span> `;
-				break;
-			case "repressed":
-				r += `<span class="red">Sexually repressed.</span> `;
-				break;
-			case "apathetic":
-				r += `<span class="red">Sexually apathetic.</span> `;
-				break;
-			case "crude":
-				r += `<span class="red">Sexually crude.</span> `;
-				break;
-			case "judgemental":
-				r += `<span class="red">Sexually judgemental.</span> `;
-				break;
-			case "cum addict":
-				r += `<span class="yellow">Cum addict.</span> `;
-				break;
-			case "anal addict":
-				r += `<span class="yellow">Anal addict.</span> `;
-				break;
-			case "attention whore":
-				r += `<span class="yellow">Attention whore.</span> `;
-				break;
-			case "breast growth":
-				r += `<span class="yellow">Breast obsession.</span> `;
-				break;
-			case "abusive":
-				r += `<span class="yellow">Sexually abusive.</span> `;
-				break;
-			case "malicious":
-				r += `<span class="yellow">Sexually malicious.</span> `;
-				break;
-			case "self hating":
-				r += `<span class="yellow">Self hatred.</span> `;
-				break;
-			case "neglectful":
-				r += `<span class="yellow">Self neglectful.</span> `;
-				break;
-			case "breeder":
-				r += `<span class="yellow">Breeding obsession.</span> `;
-				break;
-			default:
-				child.sexualFlaw = "none";
-				break;
+	function longTeeth(child) {
+		if (child.teeth === "crooked") {
+			r += `<span class="yellow">Crooked teeth.</span> `;
+		} else if (child.teeth === "gapped") {
+			r += `<span class="yellow">Tooth gap.</span> `;
+		} else if (child.teeth === "cosmetic braces") {
+			r += `Cosmetic braces. `;
+		} else if (child.teeth === "straightening braces") {
+			r += `Braces. `;
+		} else if (child.teeth === "removable") {
+			r += `Removable teeth. `;
+		} else if (child.teeth === "pointy") {
+			r += `Sharp fangs. `;
+		} else if (child.teeth === "baby") {
+			r += `Baby teeth. `;
+		} else if (child.teeth === "mixed") {
+			r += `Mixed teeth. `;
 		}
 	}
 
 	/**
 	 * @param {App.Entity.SlaveState} child
 	 */
-	function longBehaviorQuirk(child) {
-		r += `<span class="green">`;
-		switch (child.behavioralQuirk) {
-			case "confident":
-				r += `Confident. `;
-				break;
-			case "cutting":
-				r += `Cutting. `;
-				break;
-			case "funny":
-				r += `Funny. `;
-				break;
-			case "fitness":
-				r += `Fitness. `;
-				break;
-			case "adores women":
-				r += `Adores women. `;
-				break;
-			case "adores men":
-				r += `Adores men. `;
-				break;
-			case "insecure":
-				r += `Insecure. `;
-				break;
-			case "sinful":
-				r += `Sinful. `;
-				break;
-			case "advocate":
-				r += `Advocate. `;
-				break;
-			default:
-				child.behavioralQuirk = "none";
-				break;
+	function longMuscles(child) {
+		if (child.muscles > 95) {
+			r += `Hugely muscular${V.summaryStats? `[${child.muscles}]` : ''}. `;
+		} else if (child.muscles > 50) {
+			r += `Muscular${V.summaryStats? `[${child.muscles}]`: ''}. `;
+		} else if (child.muscles > 5) {
+			r += `Fit${V.summaryStats? `[${child.muscles}]`: ''}. `;
+		} else if (child.muscles > -6) {
+			r += `Soft${V.summaryStats? `[${child.muscles}]`: ''}. `;
+		} else if (child.muscles > -31) {
+			if (V.arcologies[0].FSPhysicalIdealist === "unset") {
+				r += `<span class="red">Weak${V.summaryStats? `[${child.muscles}]`: ''}.</span> `;
+			} else {
+				r += `Weak${V.summaryStats? `[${child.muscles}]`: ''}. `;
+			}
+		} else if (child.muscles > -96) {
+			if (V.arcologies[0].FSPhysicalIdealist === "unset") {
+				r += `<span class="red">Very weak${V.summaryStats? `[${child.muscles}]`: ''}.</span> `;
+			} else {
+				r += `Very weak${V.summaryStats? `[${child.muscles}]`: ''}. `;
+			}
+		} else {
+			r += `<span class="red">Frail${V.summaryStats? `[${child.muscles}]`: ''}.</span> `;
 		}
 	}
 
 	/**
 	 * @param {App.Entity.SlaveState} child
 	 */
-	function longSexQuirk(child) {
-		switch (child.sexualQuirk) {
-			case "gagfuck queen":
-				r += `Gagfuck queen. `;
-				break;
-			case "painal queen":
-				r += `Painal queen. `;
-				break;
-			case "strugglefuck queen":
-				r += `Strugglefuck queen. `;
-				break;
-			case "tease":
-				r += `Tease. `;
-				break;
-			case "romantic":
-				r += `Romantic. `;
-				break;
-			case "perverted":
-				r += `Perverted. `;
-				break;
-			case "caring":
-				r += `Caring. `;
-				break;
-			case "unflinching":
-				r += `Unflinching. `;
-				break;
-			case "size queen":
-				r += `Size queen. `;
-				break;
-			default:
-				child.sexualQuirk = "none";
-				break;
+	function longLimbs(child) {
+		if (child.amp !== 0) {
+			if (child.amp === -1) {
+				r += `Prosthetic limbs. `;
+			} else if (child.amp === -2) {
+				r += `Sexy prosthetic limbs. `;
+			} else if (child.amp === -3) {
+				r += `Beautiful prosthetic limbs. `;
+			} else if (child.amp === -4) {
+				r += `Deadly prosthetic limbs. `;
+			} else if (child.amp === -5) {
+				r += `Cyber prosthetic limbs. `;
+			} else {
+				r += `Amputee. `;
+			}
+		}
+		if (!canWalk(child)) {
+			r += `Immobile. `;
+		}
+		if (child.heels === 1) {
+			r += `Heeled. `;
 		}
 		r += `</span> `;
 	}
@@ -5756,719 +4959,831 @@ App.Facilities.Nursery.ChildSummary = function(child) {
 	/**
 	 * @param {App.Entity.SlaveState} child
 	 */
-	function shortExtendedFamily(child) {
-		let handled = 0;
-		if (child.mother > 0) {
-			const _ssj = V.slaves.findIndex(function(s) {
-				return s.ID === child.mother;
-			});
-			if (_ssj !== -1) {
-				r += `${SlaveFullName(V.slaves[_ssj])}'s daughter`;
-				if (child.relationshipTarget === V.slaves[_ssj].ID) {
-					const friendShipShort = relationshipTermShort(child);
-					r += ` & ${friendShipShort}`;
-					handled = 1;
-				}
-			}
-			r += " ";
-		} else if (child.mother === -1) {
-			r += `Your daughter`;
-			if (child.relationship === -3) {
-				r += ` & wife`;
-				handled = 1;
-			} else if (child.relationship === -2) {
-				r += ` & lover`;
-				handled = 1;
+	function longVoice(child) {
+		if (child.voice === 0) {
+			r += `<span class="red">Mute.</span> `;
+		} else {
+			if (child.accent === 3) {
+				r += `<span class="red">Bad accent.</span> `;
+			} else if (child.accent === 4) {
+				r += `<span class="red">No language skills.</span> `;
+			} else if (child.accent === 2) {
+				r += `Accent. `;
+			} else if (child.accent === 1) {
+				r += `<span class="pink">Cute accent.</span> `;
 			}
-			r += " ";
-		} else if (child.mother in V.missingTable && V.showMissingSlavesSD && V.showMissingSlaves) {
-			r += `${V.missingTable[child.mother].fullName}'s daughter `;
 		}
-		if (child.father > 0 && child.father !== child.mother) {
-			const _ssj = V.slaves.findIndex(function(s) {
-				return s.ID === child.father;
-			});
-			if (_ssj !== -1) {
-				r += `${SlaveFullName(V.slaves[_ssj])}'s daughter`;
-				if (child.relationshipTarget === V.slaves[_ssj].ID && handled !== 1) {
-					const friendShipShort = relationshipTermShort(child);
-					r += ` & ${friendShipShort}`;
-					handled = 1;
-				}
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function longTitsAss(child) {
+		r += `<span class="pink">`;
+		if ((child.boobs >= 12000) && (child.butt > 9)) {
+			r += `Hyper T&A. `;
+		} else if ((child.boobs > 4000) && (child.butt > 8)) {
+			r += `Enormous T&A. `;
+		} else if ((child.boobs > 2000) && (child.butt > 6)) {
+			r += `Huge T&A. `;
+		} else if ((child.boobs > 800) && (child.butt > 4)) {
+			r += `Big T&A. `;
+		} else if ((child.boobs < 500) && (child.butt < 3) && (child.weight <= 10) && (child.muscles <= 30)) {
+			r += `Girlish figure. `;
+		} else if (child.boobs >= 12000) {
+			r += `Immobilizing tits. `;
+		} else if (child.boobs > 4000) {
+			r += `Monstrous tits. `;
+		} else if (child.boobs > 2000) {
+			r += `Huge tits. `;
+		} else if (child.boobs > 800) {
+			r += `Big tits. `;
+		} else if (child.butt > 9) {
+			r += `Hyper ass. `;
+		} else if (child.butt > 8) {
+			r += `Titanic ass. `;
+		} else if (child.butt > 6) {
+			r += `Huge ass. `;
+		} else if (child.butt > 4) {
+			r += `Big ass. `;
+		}
+		r += `</span> `;
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function longHips(child) {
+		r += `<span class="red">`;
+		if (child.hips < -1) {
+			if (child.butt > 2 && (V.arcologies[0].FSTransformationFetishist < 20 || V.arcologies[0].FSTransformationFetishist === "unset") && (V.arcologies[0].FSHedonisticDecadence < 20 || V.arcologies[0].FSHedonisticDecadence === "unset") && (V.arcologies[0].FSAssetExpansionist < 20 || V.arcologies[0].FSAssetExpansionist === "unset")) {
+				r += `Disproportionately big butt. `;
 			}
-			r += " ";
-		} else if (child.father === -1 && child.mother !== -1) {
-			r += `Your daughter`;
-			if (child.relationship === -3) {
-				r += ` & wife`;
-				handled = 1;
-			} else if (child.relationship === -2) {
-				r += ` & lover`;
-				handled = 1;
+		} else if (child.hips < 0) {
+			if (child.butt > 4 && (V.arcologies[0].FSTransformationFetishist < 20 || V.arcologies[0].FSTransformationFetishist === "unset") && (V.arcologies[0].FSHedonisticDecadence < 20 || V.arcologies[0].FSHedonisticDecadence === "unset") && (V.arcologies[0].FSAssetExpansionist < 20 || V.arcologies[0].FSAssetExpansionist === "unset")) {
+				r += `Disproportionately big butt. `;
 			}
-			r += " ";
-		} else if (child.father in V.missingTable && child.father !== child.mother && V.showMissingSlavesSD && V.showMissingSlaves) {
-			r += `${V.missingTable[child.father].fullName}'s daughter`;
-		}
-		if (child.daughters === 1) {
-			let _ssj = V.slaves.findIndex(function(s) {
-				return s.mother === child.ID;
-			});
-			if (_ssj !== -1) {
-				r += `${SlaveFullName(V.slaves[_ssj])}'s mother`;
-				if (child.relationshipTarget === V.slaves[_ssj].ID) {
-					const friendShipShort = relationshipTermShort(child);
-					r += ` & ${friendShipShort}`;
-					handled = 1;
-				}
+		} else if (child.hips > 2) {
+			if (child.butt <= 8) {
+				r += `Disproportionately small butt. `;
 			}
-			r += " ";
-			_ssj = V.slaves.findIndex(function(s) {
-				return s.father === child.ID;
-			});
-			if (_ssj !== -1) {
-				r += `${SlaveFullName(V.slaves[_ssj])}'s father`;
-				if (child.relationshipTarget === V.slaves[_ssj].ID && handled !== 1) {
-					const friendShipShort = relationshipTermShort(child);
-					r += ` & ${friendShipShort}`;
-					handled = 1;
-				}
+		} else if (child.hips > 1) {
+			if (child.butt <= 3 && ((V.arcologies[0].FSSlimnessEnthusiast === "unset") || (child.boobs >= 500))) {
+				r += `Disproportionately small butt. `;
 			}
-			r += " ";
-		} else if (child.daughters > 1) {
-			r += `multiple daughters `;
-		}
-		if (child.sisters === 1) {
-			const _ssj = V.slaves.findIndex(function(s) {
-				return areSisters(s, child) > 0;
-			});
-			if (_ssj !== -1) {
-				r += `${SlaveFullName(V.slaves[_ssj])}'s sister`;
-				if (child.relationshipTarget === V.slaves[_ssj].ID) {
-					const friendShipShort = relationshipTermShort(child);
-					r += `& ${friendShipShort}`;
-					handled = 1;
+		} else if (child.hips > 0) {
+			if (child.butt > 8) {
+				if ((V.arcologies[0].FSTransformationFetishist < 20 || V.arcologies[0].FSTransformationFetishist === "unset") && (V.arcologies[0].FSHedonisticDecadence < 20 || V.arcologies[0].FSHedonisticDecadence === "unset") && (V.arcologies[0].FSAssetExpansionist < 20 || V.arcologies[0].FSAssetExpansionist === "unset")) {
+					r += `Disproportionately big butt. `;
 				}
+			} else if (child.butt <= 2 && ((V.arcologies[0].FSSlimnessEnthusiast === "unset") || (child.boobs >= 500))) {
+				r += `Disproportionately small butt. `;
 			}
-			r += " ";
-		} else if (child.sisters > 1) {
-			r += `multiple sisters `;
-		}
-		if (child.relationship > 0 && handled !== 1) {
-			const _ssj = V.slaves.findIndex(function(s) {
-				return s.ID === child.relationshipTarget;
-			});
-			if (_ssj !== -1) {
-				r += `${SlaveFullName(V.slaves[_ssj])}'s`;
-				const friendShipShort = relationshipTermShort(child);
-				r += ` ${friendShipShort}`;
+		} else {
+			if (child.butt > 6) {
+				if ((V.arcologies[0].FSTransformationFetishist < 20 || V.arcologies[0].FSTransformationFetishist === "unset") && (V.arcologies[0].FSHedonisticDecadence < 20 || V.arcologies[0].FSHedonisticDecadence === "unset") && (V.arcologies[0].FSAssetExpansionist < 20 || V.arcologies[0].FSAssetExpansionist === "unset")) {
+					r += `Disproportionately big butt. `;
+				}
+			} else if (child.butt <= 1 && ((V.arcologies[0].FSSlimnessEnthusiast === "unset") || (child.boobs >= 500))) {
+				r += `Disproportionately small butt. `;
 			}
-		} else if (child.relationship === -3 && child.mother !== -1 && child.father !== -1) {
-			r += `Your wife`;
-		} else if (child.relationship === -2) {
-			r += `E Bonded`;
-		} else if (child.relationship === -1) {
-			r += `E Slut`;
 		}
+		r += `</span> `;
 	}
 
 	/**
 	 * @param {App.Entity.SlaveState} child
 	 */
-	function shortLegacyFamily(child) {
-		if (child.relation !== 0) {
-			const _ssj = V.slaves.findIndex(function(s) {
-				return s.ID === child.relationTarget;
-			});
-			if (_ssj !== -1) {
-				r += `${SlaveFullName(V.slaves[_ssj])}'s ${child.relation}`;
-			}
-		}
-		if (child.relationship > 0) {
-			const _ssj = V.slaves.findIndex(function(s) {
-				return s.ID === child.relationshipTarget;
-			});
-			if (_ssj !== -1) {
-				const friendship = relationshipTerm(child);
-				if (child.relationshipTarget !== child.relationTarget) {
-					r += `${SlaveFullName(V.slaves[_ssj])}'s`;
-				} else {
-					r += ` &`;
-				}
-				r += ` ${friendship}`;
-			}
-		} else if (child.relationship === -3) {
-			r += `Your wife`;
-		} else if (child.relationship === -2) {
-			r += `E Bonded`;
-		} else if (child.relationship === -1) {
-			r += `E Slut`;
+	function longWaist(child) {
+		if (child.waist > 95) {
+			r += `<span class="red">Masculine waist${V.summaryStats? `[${child.waist}]`: ''}.</span> `;
+		} else if (child.waist > 40) {
+			r += `<span class="red">Ugly waist${V.summaryStats? `[${child.waist}]`: ''}.</span> `;
+		} else if (child.waist > 10) {
+			r += `<span class="red">Unattractive waist${V.summaryStats? `[${child.waist}]`: ''}.</span> `;
+		} else if (child.waist >= -10) {
+			r += `Average waist${V.summaryStats? `[${child.waist}]`: ''}. `;
+		} else if (child.waist >= -40) {
+			r += `<span class="pink">Feminine waist${V.summaryStats? `[${child.waist}]`: ''}.</span> `;
+		} else if (child.waist >= -95) {
+			r += `<span class="pink">Hourglass waist${V.summaryStats? `[${child.waist}]`: ''}.</span> `;
+		} else {
+			r += `<span class="pink">Absurdly narrow waist${V.summaryStats? `[${child.waist}]`: ''}.</span> `;
 		}
 	}
 
 	/**
 	 * @param {App.Entity.SlaveState} child
 	 */
-	function shortClone(child) {
-		if (child.clone !== 0) {
-			r += ` Clone`;
+	function longImplants(child) {
+		r += `<span class="pink">`;
+		if ((child.boobsImplant !== 0) || (child.buttImplant !== 0) || (child.lipsImplant !== 0) || (child.bellyImplant !== -1)) {
+			r += `Implants. `;
+		} else if ((child.faceImplant >= 30) || (child.waist < -95)) {
+			r += `Surgery enhanced. `;
+		} else {
+			r += `All natural. `;
 		}
 	}
 
 	/**
 	 * @param {App.Entity.SlaveState} child
 	 */
-	function shortRival(child) {
-		if (child.rivalry !== 0) {
-			r += `&nbsp;&nbsp;&nbsp;&nbsp;`;
-			const _ssj = V.slaves.findIndex(function(s) {
-				return s.ID === child.rivalryTarget;
-			});
-			if (_ssj !== -1) {
-				r += `<span class="lightsalmon">`;
-				if (child.rivalry <= 1) {
-					r += `Disl ${SlaveFullName(V.slaves[_ssj])}`;
-				} else if (child.rivalry <= 2) {
-					r += `${SlaveFullName(V.slaves[_ssj])}'s rival`;
-				} else {
-					r += `Hates ${SlaveFullName(V.slaves[_ssj])}`;
-				}
-				r += `</span> `;
-			}
+	function longLactation(child) {
+		if (child.lactation === 1) {
+			r += `Lactating naturally. `;
+		} else if (child.lactation === 2) {
+			r += `Heavy lactation. `;
 		}
 	}
 
 	/**
 	 * @param {App.Entity.SlaveState} child
 	 */
-	function longExtendedFamily(child) {
-		let handled = 0;
-		if (child.mother > 0) {
-			const _ssj = V.slaves.findIndex(function(s) {
-				return s.ID === child.mother;
-			});
-			if (_ssj !== -1) {
-				r += `${SlaveFullName(V.slaves[_ssj])}'s <span class="lightgreen">daughter`;
-				if (child.relationshipTarget === V.slaves[_ssj].ID) {
-					const friendShipShort = relationshipTerm(child);
-					r += ` and ${friendShipShort}`;
-					handled = 1;
-				}
-				r += `.</span> `;
-			}
-		} else if (child.mother === -1) {
-			r += `Your `;
-			if (child.relationship === -3) {
-				r += `<span class="lightgreen">daughter and wife.</span> `;
-				handled = 1;
-			} else if (child.relationship === -2) {
-				r += `<span class="lightgreen">daughter and lover.</span> `;
-				handled = 1;
-			} else {
-				r += `<span class="lightgreen">daughter.</span> `;
-			}
-		} else if (child.mother in V.missingTable && V.showMissingSlavesSD && V.showMissingSlaves) {
-			r += `${V.missingTable[child.mother].fullName}'s <span class="lightgreen">daughter.</span> `;
+	function longMods(child) {
+		V.modScorChildStatsChecker.modScore(child);
+		if (child.corsetPiercing === 0 && V.piercingScore < 3 && V.tatScore < 2) {
+			return;
+		} else if (V.modScore > 15 || (V.piercingScore > 8 && V.tatScore > 5)) {
+			r += `Extensive body mods. `;
+		} else if (V.modScore > 7) {
+			r += `Noticeable body mods. `;
+		} else {
+			r += `Light body mods. `;
 		}
-		if (child.father > 0 && child.father !== child.mother) {
-			const _ssj = V.slaves.findIndex(function(s) {
-				return s.ID === child.father;
-			});
-			if (_ssj !== -1) {
-				r += `${SlaveFullName(V.slaves[_ssj])}'s <span class="lightgreen">daughter`;
-				if (child.relationshipTarget === V.slaves[_ssj].ID) {
-					const friendShipShort = relationshipTerm(child);
-					r += ` and ${friendShipShort}`;
-					handled = 1;
-				}
-				r += `.</span> `;
-			}
-		} else if (child.father === -1 && child.father !== child.mother) {
-			r += `Your `;
-			if (child.relationship === -3) {
-				r += `<span class="lightgreen">daughter and wife.</span> `;
-				handled = 1;
-			} else if (child.relationship === -2) {
-				r += `<span class="lightgreen">daughter and lover.</span> `;
-				handled = 1;
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function shortIntelligence(child) {
+		const intelligence = child.intelligence + child.intelligenceImplant;
+		if (child.fetish === "mindbroken") {
+			return;
+		} else if (child.intelligenceImplant >= 30) {
+			if (intelligence >= 130) {
+				r += `<span class="deepskyblue">I++++(e+)${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}</span> `;
+			} else if (intelligence > 95) {
+				r += `<span class="deepskyblue">I+++(e+)${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}</span> `;
+			} else if (intelligence > 50) {
+				r += `<span class="deepskyblue">I++(e+)${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}</span> `;
+			} else if (intelligence > 15) {
+				r += `<span class="deepskyblue">I+(e+)${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}</span> `;
+			} else if (intelligence >= -15) {
+				r += `I(e+)${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}`;
+			} else if (intelligence >= -50) {
+				r += `<span class="orangered">I-(e+)${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}</span> `;
+			} else if (intelligence >= -95) {
+				r += `<span class="orangered">I--(e+)${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}</span> `;
 			} else {
-				r += `<span class="lightgreen">daughter.</span> `;
-			}
-		} else if (child.father in V.missingTable && child.father !== child.mother && V.showMissingSlavesSD && V.showMissingSlaves) {
-			r += `${V.missingTable[child.father].fullName}'s <span class="lightgreen">daughter.</span> `;
-		}
-		if (child.daughters === 1) {
-			let _ssj = V.slaves.findIndex(function(s) {
-				return s.mother === child.ID;
-			});
-			if (_ssj !== -1) {
-				r += `${SlaveFullName(V.slaves[_ssj])}'s <span class="lightgreen">mother`;
-				if (child.relationshipTarget === V.slaves[_ssj].ID) {
-					const friendShipShort = relationshipTerm(child);
-					r += ` and ${friendShipShort}`;
-					handled = 1;
-				}
-				r += `.</span> `;
-			}
-			_ssj = V.slaves.findIndex(function(s) {
-				return s.father === child.ID;
-			});
-			if (_ssj !== -1) {
-				r += `${SlaveFullName(V.slaves[_ssj])}'s <span class="lightgreen">father`;
-				if (child.relationshipTarget === V.slaves[_ssj].ID) {
-					const friendShipShort = relationshipTerm(child);
-					r += ` and ${friendShipShort}`;
-					handled = 1;
-				}
-				r += `.</span> `;
+				r += `<span class="orangered">I---(e+)${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}</span> `;
 			}
-		} else if (child.daughters > 1) {
-			if (child.daughters > 10) {
-				r += `<span class="lightgreen">Has tons of daughters.</span> `;
-			} else if (child.daughters > 5) {
-				r += `<span class="lightgreen">Has many daughters.</span> `;
+		} else if (child.intelligenceImplant >= 15) {
+			if (intelligence > 95) {
+				r += `<span class="deepskyblue">I+++(e)${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}</span> `;
+			} else if (intelligence > 50) {
+				r += `<span class="deepskyblue">I++(e)${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}</span> `;
+			} else if (intelligence > 15) {
+				r += `<span class="deepskyblue">I+(e)${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}</span> `;
+			} else if (intelligence >= -15) {
+				r += `I(e)${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}`;
+			} else if (intelligence >= -50) {
+				r += `<span class="orangered">I-(e)${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}</span> `;
+			} else if (intelligence >= -95) {
+				r += `<span class="orangered">I--(e)${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}</span> `;
 			} else {
-				r += `<span class="lightgreen">Has several daughters.</span> `;
-			}
-		}
-		if (child.sisters === 1) {
-			const _ssj = V.slaves.findIndex(function(s) {
-				return areSisters(s, child) > 0;
-			});
-			if (_ssj !== -1) {
-				r += `${SlaveFullName(V.slaves[_ssj])}'s <span class="lightgreen">sister`;
-				if (child.relationshipTarget === V.slaves[_ssj].ID) {
-					const friendShipShort = relationshipTerm(child);
-					r += ` and ${friendShipShort}`;
-					handled = 1;
-				}
-				r += `.</span> `;
+				r += `<span class="orangered">I---(e)${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}</span> `;
 			}
-		} else if (child.sisters > 1) {
-			if (child.sisters > 10) {
-				r += `<span class="lightgreen">One of many sisters.</span> `;
-			} else if (child.sisters > 5) {
-				r += `<span class="lightgreen">Has many sisters.</span> `;
+		} else {
+			if (intelligence > 95) {
+				r += `<span class="deepskyblue">I+++${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}</span> `;
+			} else if (intelligence > 50) {
+				r += `<span class="deepskyblue">I++${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}</span> `;
+			} else if (intelligence > 15) {
+				r += `<span class="deepskyblue">I+${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}</span> `;
+			} else if (intelligence >= -15) {
+				r += `I${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}`;
+			} else if (intelligence >= -50) {
+				r += `<span class="orangered">I-${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}</span> `;
+			} else if (intelligence >= -95) {
+				r += `<span class="orangered">I--${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}</span> `;
 			} else {
-				r += `<span class="lightgreen">Has several sisters.</span> `;
-			}
-		}
-		if (child.relationship > 0 && handled !== 1) {
-			const _ssj = V.slaves.findIndex(function(s) {
-				return s.ID === child.relationshipTarget;
-			});
-			if (_ssj !== -1) {
-				const friendship = relationshipTerm(child);
-				r += `${SlaveFullName(V.slaves[_ssj])}'s `;
-				r += `<span class="lightgreen">${friendship}.</span> `;
+				r += `<span class="orangered">I---${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}</span> `;
 			}
-		} else if (child.relationship === -3 && child.mother !== -1 && child.father !== -1) {
-			r += `<span class="lightgreen">Your wife.</span> `;
-		} else if (child.relationship === -2) {
-			r += `<span class="lightgreen">Emotionally bonded to you.</span> `;
-		} else if (child.relationship === -1) {
-			r += `<span class="lightgreen">Emotional slut.</span> `;
 		}
 	}
 
 	/**
 	 * @param {App.Entity.SlaveState} child
 	 */
-	function longLegacyFamily(child) {
-		if (child.relation !== 0) {
-			const _ssj = V.slaves.findIndex(function(s) {
-				return s.ID === child.relationTarget;
-			});
-			if (_ssj !== -1) {
-				r += `${SlaveFullName(V.slaves[_ssj])}'s `;
-				if (child.relationshipTarget !== child.relationTarget) {
-					r += `<span class="lightgreen">${child.relation}.</span> `;
-				} else {
-					r += `<span class="lightgreen">${child.relation}</span> `;
-				}
-				if (child.relationship <= 0) {
-					r += `&nbsp;&nbsp;&nbsp;&nbsp;`;
+	function shortSexSkills(child) {
+		let SSkills = child.skill.anal + child.skill.oral;
+		r += `<span class="aquamarine">`;
+		if (((SSkills + child.skill.whoring + child.skill.entertainment) >= 400) && ((child.vagina < 0) || (child.skill.vaginal >= 100))) {
+			r += `MSS`;
+		} else {
+			SSkills += child.skill.vaginal;
+			SSkills = Math.trunc(SSkills);
+			if (SSkills > 180) {
+				r += `S++`;
+			} else if ((SSkills > 120) && (child.vagina < 0)) {
+				r += `Sh++`;
+			} else if (SSkills > 90) {
+				r += `S+`;
+			} else if (SSkills > 30) {
+				r += `S`;
+			} else {
+				r += `S-`;
+			}
+			if (V.summaryStats) {
+				r += `[${SSkills}] `;
+			}
+			r += " ";
+			if (child.skill.whoring >= 100) {
+				r += `W+++`;
+			} else if (child.skill.whoring > 60) {
+				r += `W++`;
+			} else if (child.skill.whoring > 30) {
+				r += `W+`;
+			} else if (child.skill.whoring > 10) {
+				r += `W`;
+			}
+			if (child.skill.whoring > 10) {
+				if (V.summaryStats) {
+					r += `[${child.skill.whoring}] `;
 				}
 			}
-		}
-		if (child.relationship > 0) {
-			const _ssj = V.slaves.findIndex(function(s) {
-				return s.ID === child.relationshipTarget;
-			});
-			if (_ssj !== -1) {
-				const friendship = relationshipTerm(child);
-				if (child.relationshipTarget !== child.relationTarget) {
-					r += `${SlaveFullName(V.slaves[_ssj])}'s `;
-				} else {
-					r += ` and `;
+			r += " ";
+			if (child.skill.entertainment >= 100) {
+				r += `E+++`;
+			} else if (child.skill.entertainment > 60) {
+				r += `E++`;
+			} else if (child.skill.entertainment > 30) {
+				r += `E+`;
+			} else if (child.skill.entertainment > 10) {
+				r += `E`;
+			}
+			if (child.skill.entertainment > 10) {
+				if (V.summaryStats) {
+					r += `[${child.skill.entertainment}] `;
 				}
-				r += `<span class="lightgreen">${friendship}.</span> `;
 			}
-		} else if (child.relationship === -3) {
-			r += `<span class="lightgreen">Your wife.</span> `;
-		} else if (child.relationship === -2) {
-			r += `<span class="lightgreen">Emotionally bonded to you.</span> `;
-		} else if (child.relationship === -1) {
-			r += `<span class="lightgreen">Emotional slut.</span> `;
-		}
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function longClone(child) {
-		if (child.clone !== 0) {
-			r += ` <span class="skyblue">Clone of ${child.clone}.</span> `;
 		}
 	}
 
 	/**
 	 * @param {App.Entity.SlaveState} child
 	 */
-	function longRival(child) {
-		if (child.rivalry !== 0) {
-			r += `&nbsp;&nbsp;&nbsp;&nbsp;`;
-			const _ssj = V.slaves.findIndex(function(s) {
-				return s.ID === child.rivalryTarget;
-			});
-			if (_ssj !== -1) {
-				if (child.rivalry <= 1) {
-					r += `<span class="lightsalmon">Dislikes</span> ${SlaveFullName(V.slaves[_ssj])}. `;
-				} else if (child.rivalry <= 2) {
-					r += `${SlaveFullName(V.slaves[_ssj])}'s <span class="lightsalmon">rival.</span> `;
-				} else {
-					r += `<span class="lightsalmon">Hates</span> ${SlaveFullName(V.slaves[_ssj])}. `;
-				}
+	function shortPrestige(child) {
+		if (child.prestige > 0) {
+			r += `<span class="green">`;
+			if (child.prestige > 2) {
+				r += `Prest++`;
+			} else if (child.prestige === 2) {
+				r += `Prest+`;
+			} else if (child.prestige === 1) {
+				r += `Prest`;
 			}
-			r += " ";
+			r += `</span> `;
 		}
 	}
 
 	/**
 	 * @param {App.Entity.SlaveState} child
 	 */
-	function longClothes(child) {
-		switch (child.clothes) {
-			case "attractive lingerie":
-				r += `Nice lingerie. `;
-				break;
-			case "a succubus outfit":
-				r += `Succubus outfit. `;
-				break;
-			case "a string bikini":
-				r += `String bikini. `;
-				break;
-			case "a scalemail bikini":
-				r += `Scalemail bikini. `;
-				break;
-			case "striped panties":
-				r += `Striped panties. `;
-				break;
-			case "a monokini":
-				r += `Monokini. `;
-				break;
-			case "an apron":
-				r += `Apron. `;
-				break;
-			case "a cybersuit":
-				r += `Cybersuit. `;
-				break;
-			case "cutoffs and a t-shirt":
-				r += `Cutoffs, t-shirt. `;
-				break;
-			case "a slutty outfit":
-				r += `Slutty outfit. `;
-				break;
-			case "uncomfortable straps":
-				r += `Leather straps. `;
-				break;
-			case "a fallen nuns habit":
-				r += `Slutty habit. `;
-				break;
-			case "a chattel habit":
-				r += `Chattel habit. `;
-				break;
-			case "a penitent nuns habit":
-				r += `Cilice. `;
-				break;
-			case "slutty jewelry":
-				r += `Bangles. `;
-				break;
-			case "attractive lingerie for a pregnant woman":
-				r += `Preggo lingerie. `;
-				break;
-			case "a maternity dress":
-				r += `Maternity dress. `;
-				break;
-			case "stretch pants and a crop-top":
-				r += `Stretch pants, crop-top. `;
-				break;
-			case "harem gauze":
-				r += `Harem outfit. `;
-				break;
-			case "a child gown":
-				r += `Slave gown. `;
-				break;
-			case "a halter top dress":
-				r += `Halter top dress. `;
-				break;
-			case "a mini dress":
-				r += `Mini dress. `;
-				break;
-			case "a ball gown":
-				r += `Ball gown. `;
-				break;
-			case "slutty business attire":
-				r += `Slutty suit. `;
-				break;
-			case "nice business attire":
-				r += `Nice suit. `;
-				break;
-			case "a comfortable bodysuit":
-				r += `Bodysuit. `;
-				break;
-			case "a military uniform":
-				r += `Military uniform. `;
-				break;
-			case "a schutzstaffel uniform":
-				r += `Schutzstaffel uniform. `;
-				break;
-			case "a slutty schutzstaffel uniform":
-				r += `Slutty Schutzstaffel uniform. `;
-				break;
-			case "a red army uniform":
-				r += `Red Army uniform. `;
-				break;
-			case "a long qipao":
-				r += `Long Qipao. `;
-				break;
-			case "battlearmor":
-				r += `Battlearmor. `;
-				break;
-			case "a mounty outfit":
-				r += `Mounty outfit. `;
-				break;
-			case "a dirndl":
-				r += `Dirndl. `;
-				break;
-			case "lederhosen":
-				r += `Lederhosen. `;
-				break;
-			case "a biyelgee costume":
-				r += `Biyelgee costume. `;
-				break;
-			case "a leotard":
-				r += `Leotard. `;
-				break;
-			case "a bunny outfit":
-				r += `Bunny outfit. `;
-				break;
-			case "a slutty maid outfit":
-				r += `Slutty maid. `;
-				break;
-			case "a nice maid outfit":
-				r += `Nice maid. `;
-				break;
-			case "a slutty nurse outfit":
-				r += `Slutty nurse. `;
-				break;
-			case "a nice nurse outfit":
-				r += `Nice nurse. `;
-				break;
-			case "a schoolgirl outfit":
-				r += `Schoolgirl outfit. `;
-				break;
-			case "a kimono":
-				r += `Kimono. `;
-				break;
-			case "a hijab and abaya":
-				r += `Hijab and abaya. `;
-				break;
-			case "battledress":
-				r += `Battledress. `;
-				break;
-			case "a latex catsuit":
-				r += `Nice latex. `;
-				break;
-			case "restrictive latex":
-				r += `Bondage latex. `;
-				break;
-			case "conservative clothing":
-				r += `Conservative clothing. `;
-				break;
-			case "chains":
-				r += `Chains. `;
-				break;
-			case "overalls":
-				r += `Overalls. `;
-				break;
-			case "a cheerleader outfit":
-				r += `Cheerleader. `;
-				break;
-			case "clubslut netting":
-				r += `Netting. `;
-				break;
-			case "shibari ropes":
-				r += `Shibari. `;
-				break;
-			case "Western clothing":
-				r += `Chaps. `;
-				break;
-			case "body oil":
-				r += `Body oil. `;
-				break;
-			case "a toga":
-				r += `Toga. `;
-				break;
-			case "a huipil":
-				r += `Huipil. `;
-				break;
-			case "a slutty qipao":
-				r += `Slutty qipao. `;
-				break;
-			case "spats and a tank top":
-				r += `Spats, tank top. `;
-				break;
-			case "a burkini":
-				r += `Burkini. `;
-				break;
-			case "a niqab and abaya":
-				r += `Niqab and abaya. `;
-				break;
-			case "a klan robe":
-				r += `Klan robe. `;
-				break;
-			case "a hijab and blouse":
-				r += `Hijab and blouse. `;
-				break;
-			case "a burqa":
-				r += `Burqa. `;
-				break;
-			case "kitty lingerie":
-				r += `Kitty lingerie. `;
-				break;
-			case "a tube top and thong":
-				r += `Tube top, thong. `;
-				break;
-			case "a button-up shirt and panties":
-				r += `Button-up shirt, panties. `;
-				break;
-			case "a gothic lolita dress":
-				r += `Gothic lolita dress. `;
+	function shortPornPrestige(child) {
+		if (child.pornPrestige > 0) {
+			r += `<span class="green">`;
+			if (child.pornPrestige > 2) {
+				r += `PPrest++`;
+			} else if (child.pornPrestige === 2) {
+				r += `PPrest+`;
+			} else if (child.pornPrestige === 1) {
+				r += `PPrest`;
+			}
+			r += `</span> `;
+		}
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function longIntelligence(child) {
+		const intelligence = child.intelligence + child.intelligenceImplant;
+		if (child.fetish === "mindbroken") {
+			return;
+		} else if (child.intelligenceImplant >= 30) {
+			if (intelligence >= 130) {
+				r += `<span class="deepskyblue">Genius${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
+			} else if (intelligence > 95) {
+				r += `<span class="deepskyblue">Brilliant, well educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
+			} else if (intelligence > 50) {
+				r += `<span class="deepskyblue">Very smart, well educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
+			} else if (intelligence > 15) {
+				r += `<span class="deepskyblue">Smart, well educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
+			} else if (intelligence >= -15) {
+				r += `Average intelligence, well educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}. `;
+			} else if (intelligence >= -50) {
+				r += `<span class="orangered">Slow, well educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
+			} else if (intelligence >= -95) {
+				r += `<span class="orangered">Very slow, well educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
+			} else {
+				r += `<span class="orangered">Moronic, well educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
+			}
+		} else if (child.intelligenceImplant >= 15) {
+			if (intelligence > 95) {
+				r += `<span class="deepskyblue">Brilliant, educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
+			} else if (intelligence > 50) {
+				r += `<span class="deepskyblue">Very smart, educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
+			} else if (intelligence > 15) {
+				r += `<span class="deepskyblue">Smart, educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
+			} else if (intelligence >= -15) {
+				r += `Average intelligence, educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}. `;
+			} else if (intelligence >= -50) {
+				r += `<span class="orangered">Slow, educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
+			} else if (intelligence >= -95) {
+				r += `<span class="orangered">Very slow, educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
+			} else {
+				r += `<span class="orangered">Moronic, educated${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
+			}
+		} else {
+			if (intelligence > 95) {
+				r += `<span class="deepskyblue">Brilliant${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
+			} else if (intelligence > 50) {
+				r += `<span class="deepskyblue">Very smart${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
+			} else if (intelligence > 15) {
+				r += `<span class="deepskyblue">Smart${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
+			} else if (intelligence >= -15) {
+				r += `Average intelligence${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}. `;
+			} else if (intelligence >= -50) {
+				r += `<span class="orangered">Slow${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
+			} else if (intelligence >= -95) {
+				r += `<span class="orangered">Very slow${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
+			} else {
+				r += `<span class="orangered">Moronic${V.summaryStats ? `[${child.intelligence+child.intelligenceImplant}]` : ''}.</span> `;
+			}
+		}
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function longSexSkills(child) {
+		let SSkills = (child.skill.anal + child.skill.oral);
+		r += `<span class="aquamarine">`;
+		if (((SSkills + child.skill.whoring + child.skill.entertainment) >= 400) && ((child.vagina < 0) || (child.skill.vaginal >= 100))) {
+			r += `Masterful Child. `;
+		} else {
+			SSkills += child.skill.vaginal;
+			if (SSkills > 180) {
+				r += `Sex master${V.summaryStats? `[${Math.trunc(SSkills)}]`: ''}. `;
+			} else if ((SSkills > 120) && (child.vagina < 0)) {
+				r += `Masterful shemale${V.summaryStats? `[${Math.trunc(SSkills)}]`: ''}. `;
+			} else if (SSkills > 90) {
+				r += `Sexual expert${V.summaryStats? `[${Math.trunc(SSkills)}]`: ''}. `;
+			} else if (SSkills > 30) {
+				r += `Sexually skilled${V.summaryStats? `[${Math.trunc(SSkills)}]` : ''}. `;
+			} else {
+				r += `Sexually unskilled${V.summaryStats? `[${Math.trunc(SSkills)}]` : ''}. `;
+			}
+			r += " ";
+			if (child.skill.whoring >= 100) {
+				r += `Masterful whore${V.summaryStats? `[${child.skill.whoring}]`: ''}. `;
+			} else if (child.skill.whoring >= 60) {
+				r += `Expert whore${V.summaryStats? `[${child.skill.whoring}]`: ''}. `;
+			} else if (child.skill.whoring >= 30) {
+				r += `Skilled whore${V.summaryStats? `[${child.skill.whoring}]`: ''}. `;
+			} else if (child.skill.whoring >= 10) {
+				r += `Basic whore${V.summaryStats? `[${child.skill.whoring}]`: ''}. `;
+			}
+			r += " ";
+			if (child.skill.entertainment >= 100) {
+				r += `Masterful entertainer${V.summaryStats? `[${child.skill.entertainment}]`: ''}. `;
+			} else if (child.skill.entertainment >= 60) {
+				r += `Expert entertainer${V.summaryStats? `[${child.skill.entertainment}]`: ''}. `;
+			} else if (child.skill.entertainment >= 30) {
+				r += `Skilled entertainer${V.summaryStats? `[${child.skill.entertainment}]`: ''}. `;
+			} else if (child.skill.entertainment >= 10) {
+				r += `Basic entertainer${V.summaryStats? `[${child.skill.entertainment}]`: ''}. `;
+			}
+			r += " ";
+		}
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function longPrestige(child) {
+		if (child.prestige > 0) {
+			r += `<span class="green">`;
+			if (child.prestige > 2) {
+				r += `Extremely prestigious. `;
+			} else if (child.prestige === 2) {
+				r += `Very prestigious. `;
+			} else if (child.prestige === 1) {
+				r += `Prestigious. `;
+			}
+			r += `</span> `;
+		}
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function longPornPrestige(child) {
+		if (child.pornPrestige > 0) {
+			r += `<span class="green">`;
+			if (child.pornPrestige > 2) {
+				r += `Porn star. `;
+			} else if (child.pornPrestige === 2) {
+				r += `Porn slut. `;
+			} else if (child.pornPrestige === 1) {
+				r += `Porn amateur. `;
+			}
+			r += `</span> `;
+		}
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function shortFetish(child) {
+		r += `<span class="lightcoral">`;
+		switch (child.fetish) {
+			case "submissive":
+				if (child.fetishStrength > 95) {
+					r += `Sub++`;
+				} else if (child.fetishStrength > 60) {
+					r += `Sub+`;
+				} else {
+					r += `Sub`;
+				}
 				break;
-			case "a hanbok":
-				r += `Hanbok. `;
+			case "cumslut":
+				if (child.fetishStrength > 95) {
+					r += `Oral++`;
+				} else if (child.fetishStrength > 60) {
+					r += `Oral+`;
+				} else {
+					r += `Oral`;
+				}
 				break;
-			case "a bra":
-				r += `Nice bra. `;
+			case "humiliation":
+				if (child.fetishStrength > 95) {
+					r += `Humil++`;
+				} else if (child.fetishStrength > 60) {
+					r += `Humil+`;
+				} else {
+					r += `Humil`;
+				}
 				break;
-			case "a button-up shirt":
-				r += `Nice button-up shirt. `;
+			case "buttslut":
+				if (child.fetishStrength > 95) {
+					r += `Anal++`;
+				} else if (child.fetishStrength > 60) {
+					r += `Anal+`;
+				} else {
+					r += `Anal`;
+				}
 				break;
-			case "a nice pony outfit":
-				r += `Nice pony outfit. `;
+			case "boobs":
+				if (child.fetishStrength > 95) {
+					r += `Boobs++`;
+				} else if (child.fetishStrength > 60) {
+					r += `Boobs+`;
+				} else {
+					r += `Boobs`;
+				}
 				break;
-			case "a sweater":
-				r += `Nice sweater. `;
+			case "sadist":
+				if (child.fetishStrength > 95) {
+					r += `Sadist++`;
+				} else if (child.fetishStrength > 60) {
+					r += `Sadist+`;
+				} else {
+					r += `Sadist`;
+				}
 				break;
-			case "a tank-top":
-				r += `Nice tank-top. `;
+			case "masochist":
+				if (child.fetishStrength > 95) {
+					r += `Pain++`;
+				} else if (child.fetishStrength > 60) {
+					r += `Pain+`;
+				} else {
+					r += `Pain`;
+				}
 				break;
-			case "a thong":
-				r += `Nice thong. `;
+			case "dom":
+				if (child.fetishStrength > 95) {
+					r += `Dom++`;
+				} else if (child.fetishStrength > 60) {
+					r += `Dom+`;
+				} else {
+					r += `Dom`;
+				}
 				break;
-			case "a tube top":
-				r += `Nice tube top. `;
+			case "pregnancy":
+				if (child.fetishStrength > 95) {
+					r += `Preg++`;
+				} else if (child.fetishStrength > 60) {
+					r += `Preg+`;
+				} else {
+					r += `Preg`;
+				}
 				break;
-			case "a one-piece swimsuit":
-				r += `Swimsuit. `;
+			default:
+				r += `Vanilla`;
 				break;
-			case "a police uniform":
-				r += `Police uniform. `;
+		}
+		if (V.summaryStats) {
+			r += `[${child.fetishStrength}]`;
+		}
+		r += `</span> `;
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function shortAttraction(child) {
+		if (child.attrXY <= 5) {
+			r += `<span class="red">XY---${V.summaryStats? `[${child.attrXY}]`: ''}</span> `;
+		} else if (child.attrXY <= 15) {
+			r += `<span class="red">XY--${V.summaryStats? `[${child.attrXY}]`: ''}</span> `;
+		} else if (child.attrXY <= 35) {
+			r += `<span class="red">XY-${V.summaryStats? `[${child.attrXY}]`: ''}</span> `;
+		} else if (child.attrXY <= 65) {
+			r += `XY${V.summaryStats? `[${child.attrXY}]`: ''}`;
+		} else if (child.attrXY <= 85) {
+			r += `<span class="green">XY+${V.summaryStats? `[${child.attrXY}]`: ''}</span> `;
+		} else if (child.attrXY <= 95) {
+			r += `<span class="green">XY++${V.summaryStats? `[${child.attrXY}]`: ''}</span> `;
+		} else if (child.attrXX > 95) {
+			if (child.energy <= 95) {
+				r += `<span class="green">Omni!</span> `;
+			} else {
+				r += `<span class="green">Omni+Nympho!!</span> `;
+			}
+		} else {
+			r += `<span class="green">XY+++${V.summaryStats? `[${child.attrXY}]`: ''}</span> `;
+		}
+		if (child.attrXX <= 5) {
+			r += `<span class="red">XX---${V.summaryStats? `[${child.attrXX}]`: ''}</span> `;
+		} else if (child.attrXX <= 15) {
+			r += `<span class="red">XX--${V.summaryStats? `[${child.attrXX}]`: ''}</span> `;
+		} else if (child.attrXX <= 35) {
+			r += `<span class="red">XX-${V.summaryStats? `[${child.attrXX}]`: ''}</span> `;
+		} else if (child.attrXX <= 65) {
+			r += `XX${V.summaryStats? `[${child.attrXX}]`: ''}`;
+		} else if (child.attrXX <= 85) {
+			r += `<span class="green">XX+${V.summaryStats? `[${child.attrXX}]`: ''}</span> `;
+		} else if (child.attrXX <= 95) {
+			r += `<span class="green">XX++${V.summaryStats? `[${child.attrXX}]`: ''}</span> `;
+		} else if (child.attrXY <= 95) {
+			r += `<span class="green">XX+++${V.summaryStats? `[${child.attrXX}]`: ''}</span> `;
+		}
+		if (child.energy > 95) {
+			if ((child.attrXY <= 95) || (child.attrXX <= 95)) {
+				r += `<span class="green">Nympho!</span> `;
+			}
+		} else if (child.energy > 80) {
+			r += `<span class="green">SD++${V.summaryStats? `[${child.energy}]`: ''}</span> `;
+		} else if (child.energy > 60) {
+			r += `<span class="green">SD+${V.summaryStats? `[${child.energy}]`: ''}</span> `;
+		} else if (child.energy > 40) {
+			r += `<span class="yellow">SD${V.summaryStats? `[${child.energy}]`: ''}</span> `;
+		} else if (child.energy > 20) {
+			r += `<span class="red">SD-${V.summaryStats? `[${child.energy}]`: ''}</span> `;
+		} else {
+			r += `<span class="red">SD--${V.summaryStats? `[${child.energy}]`: ''}</span> `;
+		}
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function shortSmartFetish(child) {
+		if (child.fetishKnown === 1) {
+			if (child.clitSetting === "off") {
+				r += `SP-`;
+			} else if (((child.fetish !== "submissive") || (child.fetishStrength <= 95)) && (child.clitSetting === "submissive")) {
+				r += `SP:sub`;
+			} else if (((child.fetish !== "cumslut") || (child.fetishStrength <= 95)) && (child.clitSetting === "oral")) {
+				r += `SP:oral`;
+			} else if (((child.fetish !== "humiliation") || (child.fetishStrength <= 95)) && (child.clitSetting === "humiliation")) {
+				r += `SP:humil`;
+			} else if (((child.fetish !== "buttslut") || (child.fetishStrength <= 95)) && (child.clitSetting === "anal")) {
+				r += `SP:anal`;
+			} else if (((child.fetish !== "boobs") || (child.fetishStrength <= 95)) && (child.clitSetting === "boobs")) {
+				r += `SP:boobs`;
+			} else if (((child.fetish !== "sadist") || (child.fetishStrength <= 95)) && (child.clitSetting === "sadist")) {
+				r += `SP:sade`;
+			} else if (((child.fetish !== "masochist") || (child.fetishStrength <= 95)) && (child.clitSetting === "masochist")) {
+				r += `SP:pain`;
+			} else if (((child.fetish !== "dom") || (child.fetishStrength <= 95)) && (child.clitSetting === "dom")) {
+				r += `SP:dom`;
+			} else if (((child.fetish !== "pregnancy") || (child.fetishStrength <= 95)) && (child.clitSetting === "pregnancy")) {
+				r += `SP:preg`;
+			} else if (((child.fetish !== "none") && (child.clitSetting === "vanilla"))) {
+				r += `SP:vanilla`;
+			} else if ((child.energy <= 95) && (child.clitSetting === "all")) {
+				r += `SP:all`;
+			} else if ((child.energy > 5) && (child.clitSetting === "none")) {
+				r += `SP:none`;
+			} else if (!["women", "men", "anti-women", "anti-men"].includes(child.clitSetting)) {
+				r += `SP:monitoring`;
+			}
+		} else {
+			switch (child.clitSetting) {
+				case "off":
+					r += `SP-`;
+					break;
+				case "submissive":
+					r += `SP:sub`;
+					break;
+				case "lesbian":
+					r += `SP:les`;
+					break;
+				case "oral":
+					r += `SP:oral`;
+					break;
+				case "humiliation":
+					r += `SP:humil`;
+					break;
+				case "anal":
+					r += `SP:anal`;
+					break;
+				case "boobs":
+					r += `SP:boobs`;
+					break;
+				case "sadist":
+					r += `SP:sade`;
+					break;
+				case "masochist":
+					r += `SP:pain`;
+					break;
+				case "dom":
+					r += `SP:dom`;
+					break;
+				case "pregnancy":
+					r += `SP:pregnancy`;
+					break;
+				case "vanilla":
+					r += `SP:vanilla`;
+					break;
+				case "all":
+					r += `SP:all`;
+					break;
+				case "none":
+					r += `SP:none`;
+					break;
+			}
+		}
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function shortSmartAttraction(child) {
+		if (child.attrKnown === 1) {
+			if (child.clitSetting === "women") {
+				if (child.attrXX < 95) {
+					r += `SP:women`;
+				} else {
+					r += `SP:monitoring`;
+				}
+			} else if (child.clitSetting === "men") {
+				if (child.attrXY < 95) {
+					r += `SP:men`;
+				} else {
+					r += `SP:monitoring`;
+				}
+			} else if (child.clitSetting === "anti-women") {
+				if (child.attrXX > 0) {
+					r += `SP:anti-women`;
+				} else {
+					r += `SP:monitoring`;
+				}
+			} else if (child.clitSetting === "anti-men") {
+				if (child.attrXY > 0) {
+					r += `SP:anti-men`;
+				} else {
+					r += `SP:monitoring`;
+				}
+			}
+		} else {
+			if (child.clitSetting === "women") {
+				r += `SP:women`;
+			} else if (child.clitSetting === "men") {
+				r += `SP:men`;
+			} else if (child.clitSetting === "anti-women") {
+				r += `SP:anti-women`;
+			} else if (child.clitSetting === "anti-men") {
+				r += `SP:anti-men`;
+			}
+		}
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function shortBehaviorFlaw(child) {
+		r += `<span class="red">`;
+		switch (child.behavioralFlaw) {
+			case "arrogant":
+				r += `Arrog`;
 				break;
-			case "a striped bra":
-				r += `Striped bra. `;
+			case "bitchy":
+				r += `Bitchy`;
 				break;
-			case "a skimpy loincloth":
-				r += `Skimpy loincloth. `;
+			case "odd":
+				r += `Odd`;
 				break;
-			case "a slutty klan robe":
-				r += `Slutty klan robe. `;
+			case "hates men":
+				r += `Men-`;
 				break;
-			case "a slutty pony outfit":
-				r += `Slutty pony outfit. `;
+			case "hates women":
+				r += `Women-`;
 				break;
-			case "a Santa dress":
-				r += `Santa dress. `;
+			case "gluttonous":
+				r += `Glut`;
 				break;
-			case "a sports bra":
-				r += `Sports bra. `;
+			case "anorexic":
+				r += `Ano`;
 				break;
-			case "a sweater and panties":
-				r += `Sweater, panties. `;
+			case "devout":
+				r += `Dev`;
 				break;
-			case "a t-shirt":
-				r += `T-shirt. `;
+			case "liberated":
+				r += `Lib`;
 				break;
-			case "a tank-top and panties":
-				r += `Tank-top, panties. `;
+			default:
+				child.behavioralFlaw = "none";
 				break;
-			case "a t-shirt and thong":
-				r += `Thong, t-shirt. `;
+		}
+		r += `</span> `;
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function shortSexFlaw(child) {
+		switch (child.sexualFlaw) {
+			case "hates oral":
+				r += `<span class="red">Oral-</span> `;
 				break;
-			case "an oversized t-shirt and boyshorts":
-				r += `Over-sized t-shirt, boy shorts. `;
+			case "hates anal":
+				r += `<span class="red">Anal-</span> `;
 				break;
-			case "an oversized t-shirt":
-				r += `Nice over-sized t-shirt. `;
+			case "hates penetration":
+				r += `<span class="red">Fuck-</span> `;
 				break;
-			case "a t-shirt and jeans":
-				r += `Blue jeans, t-shirt. `;
+			case "shamefast":
+				r += `<span class="red">Shame</span> `;
 				break;
-			case "boyshorts":
-				r += `Boy shorts. `;
+			case "idealistic":
+				r += `<span class="red">Ideal</span> `;
 				break;
-			case "cutoffs":
-				r += `Jean shorts. `;
+			case "repressed":
+				r += `<span class="red">Repre</span> `;
 				break;
-			case "leather pants and pasties":
-				r += `Leather pants, pasties. `;
+			case "apathetic":
+				r += `<span class="red">Apath</span> `;
 				break;
-			case "leather pants":
-				r += `Nice leather pants. `;
+			case "crude":
+				r += `<span class="red">Crude</span> `;
 				break;
-			case "panties":
-				r += `Nice panties. `;
+			case "judgemental":
+				r += `<span class="red">Judge</span> `;
 				break;
-			case "sport shorts and a t-shirt":
-				r += `Nice sport shorts, shirt. `;
+			case "cum addict":
+				r += `<span class="yellow">CumAdd</span> `;
 				break;
-			case "a t-shirt and panties":
-				r += `Panties, t-shirt. `;
+			case "anal addict":
+				r += `<span class="yellow">AnalAdd</span> `;
 				break;
-			case "panties and pasties":
-				r += `Pasties, panties. `;
+			case "attention whore":
+				r += `<span class="yellow">Attention</span> `;
 				break;
-			case "striped underwear":
-				r += `Striped underwear`;
+			case "breast growth":
+				r += `<span class="yellow">BoobObsess</span> `;
 				break;
-			case "sport shorts and a sports bra":
-				r += `Shorts, bra. `;
+			case "abusive":
+				r += `<span class="yellow">Abusive</span> `;
 				break;
-			case "jeans":
-				r += `Tight blue jeans. `;
+			case "malicious":
+				r += `<span class="yellow">Malice</span> `;
 				break;
-			case "a sweater and cutoffs":
-				r += `Jean shorts, sweater. `;
+			case "self hating":
+				r += `<span class="yellow">SelfHatr</span> `;
 				break;
-			case "leather pants and a tube top":
-				r += `Leather pants, tube top. `;
+			case "neglectful":
+				r += `<span class="yellow">SelfNeglect</span> `;
 				break;
-			case "sport shorts":
-				r += `Shorts. `;
+			case "breeder":
+				r += `<span class="yellow">BreedObsess</span> `;
 				break;
 			default:
-				r += `Naked. `;
+				child.sexualFlaw = "none";
 				break;
 		}
 	}
@@ -6476,207 +5791,431 @@ App.Facilities.Nursery.ChildSummary = function(child) {
 	/**
 	 * @param {App.Entity.SlaveState} child
 	 */
-	function longCollar(child) {
-		switch (child.collar) {
-			case "uncomfortable leather":
-				r += `Leather collar. `;
-				break;
-			case "tight steel":
-				r += `Steel collar. `;
+	function shortBehaviorQuirk(child) {
+		r += `<span class="green">`;
+		switch (child.behavioralQuirk) {
+			case "confident":
+				r += `Confid`;
 				break;
-			case "preg biometrics":
-				r += `Pregnancy biometrics collar. `;
+			case "cutting":
+				r += `Cutting`;
 				break;
-			case "cruel retirement counter":
-				r += `Cruel counter collar. `;
+			case "funny":
+				r += `Funny`;
 				break;
-			case "shock punishment":
-				r += `Shock collar. `;
+			case "fitness":
+				r += `Fit`;
 				break;
-			case "dildo gag":
-				r += `Dildo gag. `;
+			case "adores women":
+				r += `Women+`;
 				break;
-			case "massive dildo gag":
-				r += `Throat-bulging dildo gag. `;
+			case "adores men":
+				r += `Men+`;
 				break;
-			case "neck corset":
-				r += `Neck corset. `;
+			case "insecure":
+				r += `Insec`;
 				break;
-			case "stylish leather":
-				r += `Stylish leather collar. `;
+			case "sinful":
+				r += `Sinf`;
 				break;
-			case "satin choker":
-				r += `Satin choker. `;
+			case "advocate":
+				r += `Advoc`;
 				break;
-			case "silk ribbon":
-				r += `Silken ribbon. `;
+			default:
+				child.behavioralQuirk = "none";
 				break;
-			case "heavy gold":
-				r += `Gold collar. `;
+		}
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function shortSexQuirk(child) {
+		switch (child.sexualQuirk) {
+			case "gagfuck queen":
+				r += `Gagfuck`;
 				break;
-			case "bowtie":
-				r += `Bowtie collar. `;
+			case "painal queen":
+				r += `Painal`;
 				break;
-			case "pretty jewelry":
-				r += `Pretty collar. `;
+			case "strugglefuck queen":
+				r += `Struggle`;
 				break;
-			case "nice retirement counter":
-				r += `Nice counter collar. `;
+			case "tease":
+				r += `Tease`;
 				break;
-			case "bell collar":
-				r += `Bell collar. `;
+			case "romantic":
+				r += `Romantic`;
 				break;
-			case "leather with cowbell":
-				r += `Cowbell collar. `;
+			case "perverted":
+				r += `Perverted`;
 				break;
-			case "ancient Egyptian":
-				r += `Wesekh. `;
+			case "caring":
+				r += `Caring`;
 				break;
-			case "ball gag":
-				r += `Ball gag. `;
+			case "unflinching":
+				r += `Unflinch`;
 				break;
-			case "bit gag":
-				r += `Bit gag. `;
+			case "size queen":
+				r += `SizeQ`;
 				break;
-			case "porcelain mask":
-				r += `Porcelain mask. `;
+			default:
+				child.sexualQuirk = "none";
 				break;
 		}
+		r += `</span> `;
 	}
 
 	/**
 	 * @param {App.Entity.SlaveState} child
 	 */
-	function longBelly(child) {
-		switch (child.bellyAccessory) {
-			case "shapewear":
-				r += `Shapewear. `;
+	function longFetish(child) {
+		r += `<span class="lightcoral">`;
+		switch (child.fetish) {
+			case "submissive":
+				if (child.fetishStrength > 95) {
+					r += `Complete submissive${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
+				} else if (child.fetishStrength > 60) {
+					r += `Submissive${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
+				} else {
+					r += `Submissive tendencies${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
+				}
 				break;
-			case "a small empathy belly":
-				r += `Small fake belly. `;
+			case "cumslut":
+				if (child.fetishStrength > 95) {
+					r += `Cumslut${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
+				} else if (child.fetishStrength > 60) {
+					r += `Oral fixation${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
+				} else {
+					r += `Prefers oral${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
+				}
 				break;
-			case "a medium empathy belly":
-				r += `Medium fake belly. `;
+			case "humiliation":
+				if (child.fetishStrength > 95) {
+					r += `Humiliation slut${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
+				} else if (child.fetishStrength > 60) {
+					r += `Exhibitionist${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
+				} else {
+					r += `Interest in humiliation${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
+				}
 				break;
-			case "a large empathy belly":
-				r += `Large fake belly. `;
+			case "buttslut":
+				if (child.fetishStrength > 95) {
+					r += `Buttslut${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
+				} else if (child.fetishStrength > 60) {
+					r += `Anal fixation${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
+				} else {
+					r += `Prefers anal${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
+				}
 				break;
-			case "a huge empathy belly":
-				r += `Huge fake belly. `;
+			case "boobs":
+				if (child.fetishStrength > 95) {
+					r += `Boobslut${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
+				} else if (child.fetishStrength > 60) {
+					r += `Breast fixation${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
+				} else {
+					r += `Loves boobs${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
+				}
 				break;
-			case "a corset":
-				r += `Corset. `;
+			case "sadist":
+				if (child.fetishStrength > 95) {
+					r += `Complete sadist${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
+				} else if (child.fetishStrength > 60) {
+					r += `Sadist${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
+				} else {
+					r += `Sadistic tendencies${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
+				}
 				break;
-			case "an extreme corset":
-				r += `Extreme corsetage. `;
+			case "masochist":
+				if (child.fetishStrength > 95) {
+					r += `Complete masochist${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
+				} else if (child.fetishStrength > 60) {
+					r += `Masochist${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
+				} else {
+					r += `Masochistic tendencies${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
+				}
+				break;
+			case "dom":
+				if (child.fetishStrength > 95) {
+					r += `Complete dom${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
+				} else if (child.fetishStrength > 60) {
+					r += `Dominant${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
+				} else {
+					r += `Dominant tendencies${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
+				}
+				break;
+			case "pregnancy":
+				if (child.fetishStrength > 95) {
+					r += `Pregnancy fetish${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
+				} else if (child.fetishStrength > 60) {
+					r += `Pregnancy kink${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
+				} else {
+					r += `Interest in impregnation${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
+				}
+				break;
+			default:
+				r += `Sexually vanilla${V.summaryStats? `[${child.fetishStrength}]` : ''}. `;
 				break;
 		}
+		r += `</span> `;
 	}
 
 	/**
 	 * @param {App.Entity.SlaveState} child
 	 */
-	function longLegs(child) {
-		if (child.legAccessory === "short stockings") {
-			r += `Short stockings. `;
-		} else if (child.legAccessory === "long stockings") {
-			r += `Long stockings. `;
-		}
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function longShoes(child) {
-		if (child.shoes === "heels") {
-			r += `Heels. `;
-		} else if (child.shoes === "pumps") {
-			r += `Pumps. `;
-		} else if (child.shoes === "extreme heels") {
-			r += `Extreme heels. `;
-		} else if (child.shoes === "boots") {
-			r += `Boots. `;
-		} else if (child.heels === 1) {
-			r += `<span class="yellow">Crawling.</span> `;
-		} else if (child.shoes === "flats") {
-			r += `Flats. `;
+	function longAttraction(child) {
+		if (child.attrXY <= 5) {
+			r += `<span class="red">Disgusted by men${V.summaryStats? `[${child.attrXY}]` : ''},</span> `;
+		} else if (child.attrXY <= 15) {
+			r += `<span class="red">Turned off by men${V.summaryStats? `[${child.attrXY}]` : ''},</span> `;
+		} else if (child.attrXY <= 35) {
+			r += `<span class="red">Not attracted to men${V.summaryStats? `[${child.attrXY}]` : ''},</span> `;
+		} else if (child.attrXY <= 65) {
+			r += `Indifferent to men${V.summaryStats? `[${child.attrXY}]` : ''}, `;
+		} else if (child.attrXY <= 85) {
+			r += `<span class="green">Attracted to men${V.summaryStats? `[${child.attrXY}]` : ''},</span> `;
+		} else if (child.attrXY <= 95) {
+			r += `<span class="green">Aroused by men${V.summaryStats? `[${child.attrXY}]` : ''},</span> `;
+		} else if (child.attrXX > 95) {
+			if (child.energy <= 95) {
+				r += `<span class="green">Omnisexual!</span> `;
+			} else {
+				r += `<span class="green">Omnisexual nymphomaniac!</span> `;
+			}
+		} else {
+			r += `<span class="green">Passionate about men${V.summaryStats? `[${child.attrXY}]` : ''},</span> `;
 		}
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function longChastity(child) {
-		if (child.chastityAnus === 1 && child.chastityPenis === 1 && child.chastityVagina === 1) {
-			r += `Full chastity. `;
-		} else if (child.chastityPenis === 1 && child.chastityVagina === 1) {
-			r += `Genital chastity. `;
-		} else if ((child.chastityAnus === 1 && child.chastityVagina === 1) || (child.chastityAnus === 1 && child.chastityPenis === 1)) {
-			r += `Combined chastity. `;
-		} else if (child.chastityVagina === 1) {
-			r += `Vaginal chastity. `;
-		} else if (child.chastityPenis === 1) {
-			r += `Chastity cage. `;
-		} else if (child.chastityAnus === 1) {
-			r += `Anal chastity. `;
+		if (child.attrXX <= 5) {
+			r += `<span class="red">disgusted by women${V.summaryStats? `[${child.attrXX}]` : ''}.</span> `;
+		} else if (child.attrXX <= 15) {
+			r += `<span class="red">turned off by women${V.summaryStats? `[${child.attrXX}]` : ''}.</span> `;
+		} else if (child.attrXX <= 35) {
+			r += `<span class="red">not attracted to women${V.summaryStats? `[${child.attrXX}]` : ''}.</span> `;
+		} else if (child.attrXX <= 65) {
+			r += `indifferent to women${V.summaryStats? `[${child.attrXX}]` : ''}. `;
+		} else if (child.attrXX <= 85) {
+			r += `<span class="green">attracted to women${V.summaryStats? `[${child.attrXX}]` : ''}.</span> `;
+		} else if (child.attrXX <= 95) {
+			r += `<span class="green">aroused by women${V.summaryStats? `[${child.attrXX}]` : ''}.</span> `;
+		} else if (child.attrXY <= 95) {
+			r += `<span class="green">passionate about women${V.summaryStats? `[${child.attrXX}]` : ''}.</span> `;
+		}
+		if (child.energy > 95) {
+			if ((child.attrXY <= 95) || (child.attrXX <= 95)) {
+				r += `<span class="green">Nymphomaniac!</span> `;
+			}
+		} else if (child.energy > 80) {
+			r += `<span class="green">Powerful sex drive${V.summaryStats? `[${child.energy}]` : ''}.</span> `;
+		} else if (child.energy > 60) {
+			r += `<span class="green">Good sex drive${V.summaryStats? `[${child.energy}]` : ''}.</span> `;
+		} else if (child.energy > 40) {
+			r += `<span class="yellow">Average sex drive${V.summaryStats? `[${child.energy}]` : ''}.</span> `;
+		} else if (child.energy > 20) {
+			r += `<span class="red">Poor sex drive${V.summaryStats? `[${child.energy}]` : ''}.</span> `;
+		} else {
+			r += `<span class="red">No sex drive${V.summaryStats? `[${child.energy}]` : ''}.</span> `;
 		}
 	}
 
 	/**
 	 * @param {App.Entity.SlaveState} child
 	 */
-	function longVaginalAcc(child) {
-		if (child.vaginalAttachment !== "vibrator") {
-			switch (child.vaginalAccessory) {
-				case "bullet vibrator":
-					r += `Attached bullet vibrator. `;
+	function longSmartFetish(child) {
+		if (child.fetishKnown === 1) {
+			if (child.clitSetting === "off") {
+				r += `SP off. `;
+			} else if (((child.fetish !== "submissive") || (child.fetishStrength <= 95)) && (child.clitSetting === "submissive")) {
+				r += `SP: submissive. `;
+			} else if (((child.fetish !== "cumslut") || (child.fetishStrength <= 95)) && (child.clitSetting === "oral")) {
+				r += `SP: oral. `;
+			} else if (((child.fetish !== "humiliation") || (child.fetishStrength <= 95)) && (child.clitSetting === "humiliation")) {
+				r += `SP: humiliation. `;
+			} else if (((child.fetish !== "buttslut") || (child.fetishStrength <= 95)) && (child.clitSetting === "anal")) {
+				r += `SP: anal. `;
+			} else if (((child.fetish !== "boobs") || (child.fetishStrength <= 95)) && (child.clitSetting === "boobs")) {
+				r += `SP: breasts. `;
+			} else if (((child.fetish !== "sadist") || (child.fetishStrength <= 95)) && (child.clitSetting === "sadist")) {
+				r += `SP: sadism. `;
+			} else if (((child.fetish !== "masochist") || (child.fetishStrength <= 95)) && (child.clitSetting === "masochist")) {
+				r += `SP: masochism. `;
+			} else if (((child.fetish !== "dom") || (child.fetishStrength <= 95)) && (child.clitSetting === "dom")) {
+				r += `SP: dominance. `;
+			} else if (((child.fetish !== "pregnancy") || (child.fetishStrength <= 95)) && (child.clitSetting === "pregnancy")) {
+				r += `SP: pregnancy. `;
+			} else if ((child.fetish !== "none") && (child.clitSetting === "vanilla")) {
+				r += `SP: vanilla. `;
+			} else if ((child.energy <= 95) && (child.clitSetting === "all")) {
+				r += `SP: all. `;
+			} else if ((child.energy > 5) && (child.clitSetting === "none")) {
+				r += `SP: none. `;
+			} else if (!["women", "men", "anti-women", "anti-men"].includes(child.clitSetting)) {
+				r += `SP: monitoring. `;
+			}
+		} else {
+			switch (child.clitSetting) {
+				case "off":
+					r += `SP off. `;
 					break;
-				case "smart bullet vibrator":
-					r += `Attached smart bullet vibrator. `;
+				case "submissive":
+					r += `SP: submissive. `;
 					break;
-				case "dildo":
-					r += `Vaginal dildo. `;
+				case "oral":
+					r += `SP: oral. `;
 					break;
-				case "large dildo":
-					r += `Large vaginal dildo. `;
+				case "humiliation":
+					r += `SP: humiliation. `;
 					break;
-				case "huge dildo":
-					r += `Huge vaginal dildo. `;
+				case "anal":
+					r += `SP: anal. `;
 					break;
-				case "long dildo":
-					r += `Long vaginal dildo. `;
+				case "boobs":
+					r += `SP: breasts. `;
 					break;
-				case "long, large dildo":
-					r += `Long and large vaginal dildo. `;
+				case "sadist":
+					r += `SP: sadism. `;
 					break;
-				case "long, huge dildo":
-					r += `Long and wide vaginal dildo. `;
+				case "masochist":
+					r += `SP: masochism. `;
+					break;
+				case "dom":
+					r += `SP: dominance. `;
+					break;
+				case "pregnancy":
+					r += `SP: pregnancy. `;
+					break;
+				case "vanilla":
+					r += `SP: vanilla. `;
+					break;
+				case "all":
+					r += `SP: all. `;
+					break;
+				case "none":
+					r += `SP: none. `;
 					break;
 			}
 		}
-		if (child.vaginalAttachment !== "none") {
-			switch (child.vaginalAttachment) {
-				case "vibrator":
-					r += `Vibrating dildo. `;
-					break;
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function longSmartAttraction(child) {
+		if (child.attrKnown === 1) {
+			if ((child.attrXX < 100) && (child.clitSetting === "women")) {
+				r += `SP: women. `;
+			} else if ((child.attrXY < 100) && (child.clitSetting === "men")) {
+				r += `SP: men. `;
+			}
+		} else {
+			if (child.clitSetting === "women") {
+				r += `SP: women. `;
+			} else if (child.clitSetting === "men") {
+				r += `SP: men. `;
 			}
-			r += " ";
 		}
 	}
 
 	/**
 	 * @param {App.Entity.SlaveState} child
 	 */
-	function longDickAcc(child) {
-		switch (child.dickAccessory) {
-			case "sock":
-				r += `Cock sock. `;
+	function longBehaviorFlaw(child) {
+		r += `<span class="red">`;
+		switch (child.behavioralFlaw) {
+			case "arrogant":
+				r += `Arrogant. `;
+				break;
+			case "bitchy":
+				r += `Bitchy. `;
+				break;
+			case "odd":
+				r += `Odd. `;
+				break;
+			case "hates men":
+				r += `Hates men. `;
+				break;
+			case "hates women":
+				r += `Hates women. `;
+				break;
+			case "gluttonous":
+				r += `Stress eater. `;
+				break;
+			case "anorexic":
+				r += `Anorexic. `;
+				break;
+			case "devout":
+				r += `Devoutly religious. `;
+				break;
+			case "liberated":
+				r += `Mentally liberated. `;
+				break;
+			default:
+				child.behavioralFlaw = "none";
+				break;
+		}
+		r += `</span> `;
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function longSexFlaw(child) {
+		switch (child.sexualFlaw) {
+			case "hates oral":
+				r += `<span class="red">Hates oral.</span> `;
+				break;
+			case "hates anal":
+				r += `<span class="red">Hates anal.</span> `;
+				break;
+			case "hates penetration":
+				r += `<span class="red">Hates penetration.</span> `;
+				break;
+			case "shamefast":
+				r += `<span class="red">Shamefast.</span> `;
+				break;
+			case "idealistic":
+				r += `<span class="red">Sexually idealistic.</span> `;
+				break;
+			case "repressed":
+				r += `<span class="red">Sexually repressed.</span> `;
+				break;
+			case "apathetic":
+				r += `<span class="red">Sexually apathetic.</span> `;
 				break;
-			case "bullet vibrator":
-				r += `Frenulum bullet vibrator. `;
+			case "crude":
+				r += `<span class="red">Sexually crude.</span> `;
 				break;
-			case "smart bullet vibrator":
-				r += `Smart frenulum bullet vibrator. `;
+			case "judgemental":
+				r += `<span class="red">Sexually judgemental.</span> `;
+				break;
+			case "cum addict":
+				r += `<span class="yellow">Cum addict.</span> `;
+				break;
+			case "anal addict":
+				r += `<span class="yellow">Anal addict.</span> `;
+				break;
+			case "attention whore":
+				r += `<span class="yellow">Attention whore.</span> `;
+				break;
+			case "breast growth":
+				r += `<span class="yellow">Breast obsession.</span> `;
+				break;
+			case "abusive":
+				r += `<span class="yellow">Sexually abusive.</span> `;
+				break;
+			case "malicious":
+				r += `<span class="yellow">Sexually malicious.</span> `;
+				break;
+			case "self hating":
+				r += `<span class="yellow">Self hatred.</span> `;
+				break;
+			case "neglectful":
+				r += `<span class="yellow">Self neglectful.</span> `;
+				break;
+			case "breeder":
+				r += `<span class="yellow">Breeding obsession.</span> `;
+				break;
+			default:
+				child.sexualFlaw = "none";
 				break;
 		}
 	}
@@ -6684,36 +6223,38 @@ App.Facilities.Nursery.ChildSummary = function(child) {
 	/**
 	 * @param {App.Entity.SlaveState} child
 	 */
-	function longButtplug(child) {
-		switch (child.buttplug) {
-			case "plug":
-				r += `Buttplug. `;
+	function longBehaviorQuirk(child) {
+		r += `<span class="green">`;
+		switch (child.behavioralQuirk) {
+			case "confident":
+				r += `Confident. `;
 				break;
-			case "large plug":
-				r += `Large buttplug. `;
+			case "cutting":
+				r += `Cutting. `;
 				break;
-			case "huge plug":
-				r += `Huge buttplug. `;
+			case "funny":
+				r += `Funny. `;
 				break;
-			case "long plug":
-				r += `Long buttplug. `;
+			case "fitness":
+				r += `Fitness. `;
 				break;
-			case "long, large plug":
-				r += `Large, long buttplug. `;
+			case "adores women":
+				r += `Adores women. `;
 				break;
-			case "long, huge plug":
-				r += `Enormous buttplug. `;
+			case "adores men":
+				r += `Adores men. `;
 				break;
-		}
-		switch (child.buttplugAttachment) {
-			case "tail":
-				r += `Attached tail. `;
+			case "insecure":
+				r += `Insecure. `;
 				break;
-			case "cat tail":
-				r += `Attached cat tail. `;
+			case "sinful":
+				r += `Sinful. `;
 				break;
-			case "fox tail":
-				r += `Attached fox tail. `;
+			case "advocate":
+				r += `Advocate. `;
+				break;
+			default:
+				child.behavioralQuirk = "none";
 				break;
 		}
 	}
@@ -6721,602 +6262,1030 @@ App.Facilities.Nursery.ChildSummary = function(child) {
 	/**
 	 * @param {App.Entity.SlaveState} child
 	 */
-	function rulesAssistant(child) {
-		if (child.useRulesAssistant === 0) {
-			r += `<span class="lightgreen">RA-Exempt</span> `;
-		} else if (V.abbreviateRulesets === 2 && (child.currentRules !== undefined) && (child.currentRules.length > 0)) {
-			r += `Rules: ${V.defaultRules.filter(x => ruleApplied(child, x)).map(x => x.name).join(", ")}`;
+	function longSexQuirk(child) {
+		switch (child.sexualQuirk) {
+			case "gagfuck queen":
+				r += `Gagfuck queen. `;
+				break;
+			case "painal queen":
+				r += `Painal queen. `;
+				break;
+			case "strugglefuck queen":
+				r += `Strugglefuck queen. `;
+				break;
+			case "tease":
+				r += `Tease. `;
+				break;
+			case "romantic":
+				r += `Romantic. `;
+				break;
+			case "perverted":
+				r += `Perverted. `;
+				break;
+			case "caring":
+				r += `Caring. `;
+				break;
+			case "unflinching":
+				r += `Unflinching. `;
+				break;
+			case "size queen":
+				r += `Size queen. `;
+				break;
+			default:
+				child.sexualQuirk = "none";
+				break;
 		}
+		r += `</span> `;
 	}
 
 	/**
 	 * @param {App.Entity.SlaveState} child
 	 */
-	function origins(child) {
-		r += `<br> `;
-		if (V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1) {
-			r += `&nbsp;&nbsp;&nbsp;&nbsp;`;
-		}
-		r += `<span class="gray">${child.origin}</span> `;
-	}
-
-	return ChildSummaryUncached(child);
-};
-
-/**
- * @param {App.Entity.InfantState} child
- * @returns {string}
- */
-App.Facilities.Nursery.LongInfantDescription = function(child) {
-	"use strict";
-	const
-		V = State.variables,
-		PC = V.PC,
-		arcology = V.arcologies[0],
-		weeksOwned = V.week - child.weekAcquired;
-
-	let
-		r = ``,
-		age,
-		title,
-		father,
-		mother;
-	/* eslint-disable */
-	const
-		pronouns = getPronouns(child),
-		he = pronouns.pronoun,
-		him = pronouns.object,
-		his = pronouns.possessive,
-		hers = pronouns.possessivePronoun,
-		himself = pronouns.objectReflexive,
-		boy = pronouns.noun,
-		He = capFirstChar(he),
-		His = capFirstChar(his);
-	/* eslint-enable */
-
-	if (child.father === -1 && child.mother === -1) {
-		father = PC;
-		mother = PC;
-	} else {
-		if (child.father === -1) {
-			father = PC;
-			mother = getSlave(child.mother);
+	function shortExtendedFamily(child) {
+		let handled = 0;
+		if (child.mother > 0) {
+			const _ssj = V.slaves.findIndex(function(s) {
+				return s.ID === child.mother;
+			});
+			if (_ssj !== -1) {
+				r += `${SlaveFullName(V.slaves[_ssj])}'s daughter`;
+				if (child.relationshipTarget === V.slaves[_ssj].ID) {
+					const friendShipShort = relationshipTermShort(child);
+					r += ` & ${friendShipShort}`;
+					handled = 1;
+				}
+			}
+			r += " ";
 		} else if (child.mother === -1) {
-			father = getSlave(child.father);
-			mother = PC;
-		} else {
-			father = getSlave(child.father);
-			mother = getSlave(child.mother);
-		}
-	}
-
-	// TODO: add infant art here
-
-	r += `&nbsp;&nbsp;&nbsp;&nbsp; `;
-
-	r += `<span id="childName"><strong><span class="pink">${SlaveFullName(child)}</span></strong></span> `;
-
-	if (typeof child.custom !== "undefined") {
-		if (child.custom.label) {
-			r += ` (<strong><span class="yellow">${child.custom.label}</span></strong>) `;
-		}
-	}
-
-	if (child.actualAge > 0) {
-		age = `${child.actualAge}-year-old`;
-		if (child.actualAge > 1) {
-			title = `toddler`;
-		} else {
-			title = `baby`;
+			r += `Your daughter`;
+			if (child.relationship === -3) {
+				r += ` & wife`;
+				handled = 1;
+			} else if (child.relationship === -2) {
+				r += ` & lover`;
+				handled = 1;
+			}
+			r += " ";
+		} else if (child.mother in V.missingTable && V.showMissingSlavesSD && V.showMissingSlaves) {
+			r += `${V.missingTable[child.mother].fullName}'s daughter `;
 		}
-	} else {
-		if (weeksOwned > 4) {
-			age = `${weeksOwned * 4}-month-old`;
-			title = `${baby}`;
-		} else {
-			if (weeksOwned <= 1) {
-				age = ``;
-				title = `newborn`;
-			} else {
-				age = `${weeksOwned}-week-old`;
-				title = `baby`;
+		if (child.father > 0 && child.father !== child.mother) {
+			const _ssj = V.slaves.findIndex(function(s) {
+				return s.ID === child.father;
+			});
+			if (_ssj !== -1) {
+				r += `${SlaveFullName(V.slaves[_ssj])}'s daughter`;
+				if (child.relationshipTarget === V.slaves[_ssj].ID && handled !== 1) {
+					const friendShipShort = relationshipTermShort(child);
+					r += ` & ${friendShipShort}`;
+					handled = 1;
+				}
+			}
+			r += " ";
+		} else if (child.father === -1 && child.mother !== -1) {
+			r += `Your daughter`;
+			if (child.relationship === -3) {
+				r += ` & wife`;
+				handled = 1;
+			} else if (child.relationship === -2) {
+				r += ` & lover`;
+				handled = 1;
 			}
+			r += " ";
+		} else if (child.father in V.missingTable && child.father !== child.mother && V.showMissingSlavesSD && V.showMissingSlaves) {
+			r += `${V.missingTable[child.father].fullName}'s daughter`;
 		}
-	}
-
-	r += ` is a ${age} <strong><span class="coral">${title}.</span></strong> ${He} was born in ${arcology.name} ${weeksOwned > 4 ? weeksOwned < 9 ? `about a month` : `${weeksOwned} months` : weeksOwned <= 1 ? `last week` : `${weeksOwned} weeks`}${weeksOwned > 1 ? ` ago. ` : `. `}`;
-
-	if (typeof child.counter !== "undefined") {
-		const
-			oral = child.counter.oral,
-			vaginal = child.counter.vaginal,
-			anal = child.counter.oral,
-			mammary = child.counter.mammary,
-			penetrative = child.counter.penetrative,
-			total = oral + vaginal + anal + mammary + penetrative;
-
-		if (total > 0) {
-			r += `and has been fucked about ${total} times, including `;
-			if ((vaginal + anal + mammary + penetrative) > 0) {
-				if (vaginal > 0) {
-					r += `${vaginal} vanilla, `;
-				}
-				if (anal > 0) {
-					r += `${anal} anal, `;
+		if (child.daughters === 1) {
+			let _ssj = V.slaves.findIndex(function(s) {
+				return s.mother === child.ID;
+			});
+			if (_ssj !== -1) {
+				r += `${SlaveFullName(V.slaves[_ssj])}'s mother`;
+				if (child.relationshipTarget === V.slaves[_ssj].ID) {
+					const friendShipShort = relationshipTermShort(child);
+					r += ` & ${friendShipShort}`;
+					handled = 1;
 				}
-				if (mammary > 0) {
-					r += `${mammary} mammary `;
+			}
+			r += " ";
+			_ssj = V.slaves.findIndex(function(s) {
+				return s.father === child.ID;
+			});
+			if (_ssj !== -1) {
+				r += `${SlaveFullName(V.slaves[_ssj])}'s father`;
+				if (child.relationshipTarget === V.slaves[_ssj].ID && handled !== 1) {
+					const friendShipShort = relationshipTermShort(child);
+					r += ` & ${friendShipShort}`;
+					handled = 1;
 				}
-				if (penetrative > 0) {
-					r += `${penetrative} penetrating, `;
+			}
+			r += " ";
+		} else if (child.daughters > 1) {
+			r += `multiple daughters `;
+		}
+		if (child.sisters === 1) {
+			const _ssj = V.slaves.findIndex(function(s) {
+				return areSisters(s, child) > 0;
+			});
+			if (_ssj !== -1) {
+				r += `${SlaveFullName(V.slaves[_ssj])}'s sister`;
+				if (child.relationshipTarget === V.slaves[_ssj].ID) {
+					const friendShipShort = relationshipTermShort(child);
+					r += `& ${friendShipShort}`;
+					handled = 1;
 				}
-				r += ` and `;
 			}
-			r += `${oral} oral sexual encounters. `;
-		} else {
-			if (weeksOwned >= 1) {
-				r += `and `;
-			} else {
-				r += `. ${He} `;
+			r += " ";
+		} else if (child.sisters > 1) {
+			r += `multiple sisters `;
+		}
+		if (child.relationship > 0 && handled !== 1) {
+			const _ssj = V.slaves.findIndex(function(s) {
+				return s.ID === child.relationshipTarget;
+			});
+			if (_ssj !== -1) {
+				r += `${SlaveFullName(V.slaves[_ssj])}'s`;
+				const friendShipShort = relationshipTermShort(child);
+				r += ` ${friendShipShort}`;
 			}
+		} else if (child.relationship === -3 && child.mother !== -1 && child.father !== -1) {
+			r += `Your wife`;
+		} else if (child.relationship === -2) {
+			r += `E Bonded`;
+		} else if (child.relationship === -1) {
+			r += `E Slut`;
+		}
+	}
 
-			r += `has had little or no sexual experience `;
-			if (child.weekAcquired !== 0) {
-				r += `as your slave `;
-			} else {
-				r += `in your new arcology `;
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function shortLegacyFamily(child) {
+		if (child.relation !== 0) {
+			const _ssj = V.slaves.findIndex(function(s) {
+				return s.ID === child.relationTarget;
+			});
+			if (_ssj !== -1) {
+				r += `${SlaveFullName(V.slaves[_ssj])}'s ${child.relation}`;
 			}
-			r += `yet. `;
-
-			let sortedCounts = [];
-			sortedCounts.push(
-				{type: "oral", value: oral},
-				{type: "vaginal", value: vaginal},
-				{type: "anal", value: anal},
-				{type: "mammary", value: mammary},
-				{type: "penetrative", value: penetrative}
-			);
-			sortedCounts = sortedCounts.sort(function(a, b) {	// sorts the counts from largest to smallest
-				return b.value - a.value;
+		}
+		if (child.relationship > 0) {
+			const _ssj = V.slaves.findIndex(function(s) {
+				return s.ID === child.relationshipTarget;
 			});
-
-			if (sortedCounts[0].type === "oral") {
-				if (((weeksOwned * 112) / oral) < 4) {
-					r += `Remarkably, this means that ${he}'s sucked something off `;
-					if (((weeksOwned * 112) / oral) < 1) {
-						r += `more than once every hour `;
-					} else if (((weeksOwned * 112) / oral) < 1.5) {
-						r += `about once every hour `;
-					} else if (((weeksOwned * 112) / oral) < 2.5) {
-						r += `about once every two hours `;
-					} else if (((weeksOwned * 112) / oral) < 3.5) {
-						r += `about once every three hours `;
-					} else {
-						r += `about once every four hours `;
-					}
-					r += ` ${he}'s spent awake. `;
-				}
-			} else if (sortedCounts[0].type === "vaginal") {
-				if (((weeksOwned * 112) / oral) < 4) {
-					r += `Remarkably, this means that ${his} pussy has been fucked `;
-					if (((weeksOwned * 112) / oral) < 1) {
-						r += `more than once every hour `;
-					} else if (((weeksOwned * 112) / oral) < 1.5) {
-						r += `about once every hour `;
-					} else if (((weeksOwned * 112) / oral) < 2.5) {
-						r += `about once every two hours `;
-					} else if (((weeksOwned * 112) / oral) < 3.5) {
-						r += `about once every three hours `;
-					} else {
-						r += `about once every four hours `;
-					}
-					r += ` ${he}'s spent awake. `;
-				}
-			} else if (sortedCounts[0].type === "anal") {
-				if (((weeksOwned * 112) / oral) < 4) {
-					r += `Remarkably, this means that ${he}'s been buttfucked `;
-					if (((weeksOwned * 112) / oral) < 1) {
-						r += `more than once every hour `;
-					} else if (((weeksOwned * 112) / oral) < 1.5) {
-						r += `about once every hour `;
-					} else if (((weeksOwned * 112) / oral) < 2.5) {
-						r += `about once every two hours `;
-					} else if (((weeksOwned * 112) / oral) < 3.5) {
-						r += `about once every three hours `;
-					} else {
-						r += `about once every four hours `;
-					}
-					r += ` ${he}'s spent awake. `;
-				}
-			} else if (sortedCounts[0].type === "mammary") {
-				if (((weeksOwned * 112) / oral) < 4) {
-					r += `Remarkably, this means that ${he}'s put ${his} tits to work `;
-					if (((weeksOwned * 112) / oral) < 1) {
-						r += `more than once every hour `;
-					} else if (((weeksOwned * 112) / oral) < 1.5) {
-						r += `about once every hour `;
-					} else if (((weeksOwned * 112) / oral) < 2.5) {
-						r += `about once every two hours `;
-					} else if (((weeksOwned * 112) / oral) < 3.5) {
-						r += `about once every three hours `;
-					} else {
-						r += `about once every four hours `;
-					}
-					r += ` ${he}'s spent awake. `;
-				}
-			} else if (sortedCounts[0].type === "penetrative") {
-				if (((weeksOwned * 112) / oral) < 4) {
-					r += `Remarkably, this means that ${he}'s pounded a hole `;
-					if (((weeksOwned * 112) / oral) < 1) {
-						r += `more than once every hour `;
-					} else if (((weeksOwned * 112) / oral) < 1.5) {
-						r += `about once every hour `;
-					} else if (((weeksOwned * 112) / oral) < 2.5) {
-						r += `about once every two hours `;
-					} else if (((weeksOwned * 112) / oral) < 3.5) {
-						r += `about once every three hours `;
-					} else {
-						r += `about once every four hours `;
-					}
-					r += ` ${he}'s spent awake. `;
+			if (_ssj !== -1) {
+				const friendship = relationshipTerm(child);
+				if (child.relationshipTarget !== child.relationTarget) {
+					r += `${SlaveFullName(V.slaves[_ssj])}'s`;
+				} else {
+					r += ` &`;
 				}
+				r += ` ${friendship}`;
 			}
+		} else if (child.relationship === -3) {
+			r += `Your wife`;
+		} else if (child.relationship === -2) {
+			r += `E Bonded`;
+		} else if (child.relationship === -1) {
+			r += `E Slut`;
 		}
 	}
 
-	/* OPEN FAMILY */
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function shortClone(child) {
+		if (child.clone !== 0) {
+			r += ` Clone`;
+		}
+	}
 
-	if (father === PC && mother === PC) {
-		r += `${He} is <span class="lightgreen">your child;</span> you knocked yourself up with ${him}. `;
-	} else if (father === mother) {
-		r += `He was <span class="lightgreen">both fathered and mothered by ${father.slaveName}.</span> `;
-	} else {
-		if (father === PC) {
-			r += `${He} is <span class="lightgreen">your child;</span> you knocked ${his} mother up. `;
-		} else if (mother === PC) {
-			r += `${He} is <span class="lightgreen">your child;</span> you gave birth to ${him}. `;
-		} else {
-			let pName;
-			if (father > 0) {
-				if (child.father in V.missingTable && V.showMissingSlaves) {
-					pName = V.slaves[V.slaveIndices[child.father]].slaveName;
-				} else {
-					pName = `your former slave ${V.missingTable[child.father].slaveName}`;
-				}
-				r += `${He} was <span class="lightgreen">fathered by ${pName}'s</span> virile dick. `;
-			} else if (mother > 0) {
-				if (child.mother in V.missingTable && V.showMissingSlaves) {
-					pName = V.slaves[V.slaveIndices[child.mother]].slaveName;
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function shortRival(child) {
+		if (child.rivalry !== 0) {
+			r += `&nbsp;&nbsp;&nbsp;&nbsp;`;
+			const _ssj = V.slaves.findIndex(function(s) {
+				return s.ID === child.rivalryTarget;
+			});
+			if (_ssj !== -1) {
+				r += `<span class="lightsalmon">`;
+				if (child.rivalry <= 1) {
+					r += `Disl ${SlaveFullName(V.slaves[_ssj])}`;
+				} else if (child.rivalry <= 2) {
+					r += `${SlaveFullName(V.slaves[_ssj])}'s rival`;
 				} else {
-					pName = `your former slave ${V.missingTable[child.mother].slaveName}`;
+					r += `Hates ${SlaveFullName(V.slaves[_ssj])}`;
 				}
-				r += `${He} was born from ${pName}'s fertile womb. `;
+				r += `</span> `;
 			}
 		}
 	}
 
-	if (V.showDistantRelatives) {
-		const
-			mi = mother,
-			fi = father;
-
-		let
-			mmi,
-			fmi,
-			mfi,
-			ffi;
-
-		if (typeof mi !== "undefined") {
-			mmi = mother.mother;
-			fmi = mother.father;
-		} else if (mother === PC) {
-			mmi = PC.mother;
-			fmi = PC.father;
-		}
-
-		if (typeof fi !== "undefined") {
-			mfi = father.mother;
-			ffi = father.father;
-		} else if (father === PC) {
-			mfi = PC.mother;
-			ffi = PC.father;
-		}
-
-		// TODO: if this starts breaking, add undef checks
-
-		// grandparents
-		if (mmi === PC || fmi === PC || mfi === PC || ffi === PC) {
-			if (mi === fi) {
-				if (PC === mother.mother && PC === father.father) {
-					r += `${He} is <span class="lightgreen">your grandchild.</span> You impregnated yourself with ${his} sole biological parent. `;
-				} else if (PC === mother.mother) {
-					r += `${He} is <span class="lightgreen">your grandchild.</span> You gave birth to ${his} sole biological parent. `;
-				} else if (PC === father.father) {
-					r += `${He} is <span class="lightgreen">your grandchild.</span> You fathered ${his} sole biological parent. `;
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function longExtendedFamily(child) {
+		let handled = 0;
+		if (child.mother > 0) {
+			const _ssj = V.slaves.findIndex(function(s) {
+				return s.ID === child.mother;
+			});
+			if (_ssj !== -1) {
+				r += `${SlaveFullName(V.slaves[_ssj])}'s <span class="lightgreen">daughter`;
+				if (child.relationshipTarget === V.slaves[_ssj].ID) {
+					const friendShipShort = relationshipTerm(child);
+					r += ` and ${friendShipShort}`;
+					handled = 1;
 				}
-			} else if (PC === mother.mother && PC === father.mother) {
-				r += `${He} is <span class="lightgreen">your grandchild.</span> You gave birth to both of ${his} parents. `;
-			} else if (PC === mother.father && PC === father.father) {
-				r += `${He} is <span class="lightgreen">your grandchild.</span> You fathered both of ${his} parents. `;
-			} else if (PC === mother.mother) {
-				r += `${He} is <span class="lightgreen">your grandchild.</span> You gave birth to ${his} mother. `;
-			} else if (PC === mother.father) {
-				r += `${He} is <span class="lightgreen">your grandchild.</span> You fathered ${his} mother. `;
-			}
-			if (PC === father.mother) {
-				r += `${He} is <span class="lightgreen">your grandchild.</span> You gave birth to ${his} father. `;
-			} else if (PC === father.father) {
-				r += `${He} is <span class="lightgreen">your grandchild.</span> You fathered ${his} father. `;
+				r += `.</span> `;
 			}
-		} else {
-			if (mmi === ffi) {
-				r += `${His} sole granparent is ${mmi.slaveName}.</span> `;
+		} else if (child.mother === -1) {
+			r += `Your `;
+			if (child.relationship === -3) {
+				r += `<span class="lightgreen">daughter and wife.</span> `;
+				handled = 1;
+			} else if (child.relationship === -2) {
+				r += `<span class="lightgreen">daughter and lover.</span> `;
+				handled = 1;
 			} else {
-				if (mmi === mfi) {
-					r += `${His} sole <span class="lightgreen">grandparent is ${mmi}.</span> `;
-				} else {
-					r += `${His} maternal <span class="lightgreen">grandmother is ${mmi.slaveName}.</span> ${His} paternal <span class="lightgreen">grandmother is ${mfi.slaveName}.</span> `;
-				}
-				if (fmi === ffi) {
-					r += `${His} sole <span class="lightgreen">grandparent is ${ffi}.</span> `;
-				} else {
-					r += `${His} maternal <span class="lightgreen">grandfather is ${fmi.slaveName}.</span> ${His} paternal <span class="lightgreen">grandfather is ${ffi.slaveName}.</span> `;
+				r += `<span class="lightgreen">daughter.</span> `;
+			}
+		} else if (child.mother in V.missingTable && V.showMissingSlavesSD && V.showMissingSlaves) {
+			r += `${V.missingTable[child.mother].fullName}'s <span class="lightgreen">daughter.</span> `;
+		}
+		if (child.father > 0 && child.father !== child.mother) {
+			const _ssj = V.slaves.findIndex(function(s) {
+				return s.ID === child.father;
+			});
+			if (_ssj !== -1) {
+				r += `${SlaveFullName(V.slaves[_ssj])}'s <span class="lightgreen">daughter`;
+				if (child.relationshipTarget === V.slaves[_ssj].ID) {
+					const friendShipShort = relationshipTerm(child);
+					r += ` and ${friendShipShort}`;
+					handled = 1;
 				}
+				r += `.</span> `;
+			}
+		} else if (child.father === -1 && child.father !== child.mother) {
+			r += `Your `;
+			if (child.relationship === -3) {
+				r += `<span class="lightgreen">daughter and wife.</span> `;
+				handled = 1;
+			} else if (child.relationship === -2) {
+				r += `<span class="lightgreen">daughter and lover.</span> `;
+				handled = 1;
+			} else {
+				r += `<span class="lightgreen">daughter.</span> `;
 			}
+		} else if (child.father in V.missingTable && child.father !== child.mother && V.showMissingSlavesSD && V.showMissingSlaves) {
+			r += `${V.missingTable[child.father].fullName}'s <span class="lightgreen">daughter.</span> `;
 		}
-
-		// aunts
-		for (let i = 0; i < V.slaves.length; i++) {
-			if (V.slaves[i] === mother || V.slaves[i] === father) {
-				for (let j = 0; j < V.slaves.length; j++) {
-					if (V.slaves[j].genes === "XX") {
-						if (areSisters(V.slaves[i], V.slaves[j]) === 1 || areSisters(V.slaves[i], V.slaves[j] === 2)) {
-							V.children.push(V.slaves[j]);
-						}
-					}
+		if (child.daughters === 1) {
+			let _ssj = V.slaves.findIndex(function(s) {
+				return s.mother === child.ID;
+			});
+			if (_ssj !== -1) {
+				r += `${SlaveFullName(V.slaves[_ssj])}'s <span class="lightgreen">mother`;
+				if (child.relationshipTarget === V.slaves[_ssj].ID) {
+					const friendShipShort = relationshipTerm(child);
+					r += ` and ${friendShipShort}`;
+					handled = 1;
+				}
+				r += `.</span> `;
+			}
+			_ssj = V.slaves.findIndex(function(s) {
+				return s.father === child.ID;
+			});
+			if (_ssj !== -1) {
+				r += `${SlaveFullName(V.slaves[_ssj])}'s <span class="lightgreen">father`;
+				if (child.relationshipTarget === V.slaves[_ssj].ID) {
+					const friendShipShort = relationshipTerm(child);
+					r += ` and ${friendShipShort}`;
+					handled = 1;
 				}
+				r += `.</span> `;
+			}
+		} else if (child.daughters > 1) {
+			if (child.daughters > 10) {
+				r += `<span class="lightgreen">Has tons of daughters.</span> `;
+			} else if (child.daughters > 5) {
+				r += `<span class="lightgreen">Has many daughters.</span> `;
+			} else {
+				r += `<span class="lightgreen">Has several daughters.</span> `;
 			}
 		}
-
-		if (V.children.length > 0) {
-			r += `${He} `;
-			if (V.children.length > 2) {
-				r += `has <span class="lightgreen">many aunts, `;
-				for (j = 0; j < V.children.length; j++) {
-					if (j < V.children.length - 1) {
-						r += `${V.children[j].slaveName}, `;
-					} else {
-						r += `and ${V.children[j].slaveName}.</span> `;
-					}
+		if (child.sisters === 1) {
+			const _ssj = V.slaves.findIndex(function(s) {
+				return areSisters(s, child) > 0;
+			});
+			if (_ssj !== -1) {
+				r += `${SlaveFullName(V.slaves[_ssj])}'s <span class="lightgreen">sister`;
+				if (child.relationshipTarget === V.slaves[_ssj].ID) {
+					const friendShipShort = relationshipTerm(child);
+					r += ` and ${friendShipShort}`;
+					handled = 1;
 				}
-			} else if (V.children.length === 2) {
-				r += `has <span class="lightgreen">two aunts, ${V.children[0].slaveName}, and ${V.children[1].slaveName}.</span> `;
+				r += `.</span> `;
+			}
+		} else if (child.sisters > 1) {
+			if (child.sisters > 10) {
+				r += `<span class="lightgreen">One of many sisters.</span> `;
+			} else if (child.sisters > 5) {
+				r += `<span class="lightgreen">Has many sisters.</span> `;
 			} else {
-				r += `has <span class="lightgreen">an aunt, ${V.children[0].slaveName}.</span> `;
+				r += `<span class="lightgreen">Has several sisters.</span> `;
 			}
 		}
-		V.children = [];
+		if (child.relationship > 0 && handled !== 1) {
+			const _ssj = V.slaves.findIndex(function(s) {
+				return s.ID === child.relationshipTarget;
+			});
+			if (_ssj !== -1) {
+				const friendship = relationshipTerm(child);
+				r += `${SlaveFullName(V.slaves[_ssj])}'s `;
+				r += `<span class="lightgreen">${friendship}.</span> `;
+			}
+		} else if (child.relationship === -3 && child.mother !== -1 && child.father !== -1) {
+			r += `<span class="lightgreen">Your wife.</span> `;
+		} else if (child.relationship === -2) {
+			r += `<span class="lightgreen">Emotionally bonded to you.</span> `;
+		} else if (child.relationship === -1) {
+			r += `<span class="lightgreen">Emotional slut.</span> `;
+		}
+	}
 
-		// uncles
-		for (let i = 0; i < V.slaves.length; i++) {
-			if (V.slaves[i] === mother || V.slaves[i] === father) {
-				for (let j = 0; j < V.slaves.length; j++) {
-					if (V.slaves[j].genes === "XY") {
-						if (areSisters(V.slaves[i], V.slaves[j]) === 1 || areSisters(V.slaves[i], V.slaves[j] === 2)) {
-							V.children.push(V.slaves[j]);
-						}
-					}
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function longLegacyFamily(child) {
+		if (child.relation !== 0) {
+			const _ssj = V.slaves.findIndex(function(s) {
+				return s.ID === child.relationTarget;
+			});
+			if (_ssj !== -1) {
+				r += `${SlaveFullName(V.slaves[_ssj])}'s `;
+				if (child.relationshipTarget !== child.relationTarget) {
+					r += `<span class="lightgreen">${child.relation}.</span> `;
+				} else {
+					r += `<span class="lightgreen">${child.relation}</span> `;
+				}
+				if (child.relationship <= 0) {
+					r += `&nbsp;&nbsp;&nbsp;&nbsp;`;
 				}
 			}
 		}
-
-		if (V.children.length > 0) {
-			r += `${He} `;
-			if (V.children.length > 2) {
-				r += `has <span class="lightgreen">many uncles, `;
-				for (j = 0; j < V.children.length; j++) {
-					if (j < V.children.length - 1) {
-						r += `${V.children[j].slaveName}, `;
-					} else {
-						r += `and ${V.children[j].slaveName}.</span> `;
-					}
+		if (child.relationship > 0) {
+			const _ssj = V.slaves.findIndex(function(s) {
+				return s.ID === child.relationshipTarget;
+			});
+			if (_ssj !== -1) {
+				const friendship = relationshipTerm(child);
+				if (child.relationshipTarget !== child.relationTarget) {
+					r += `${SlaveFullName(V.slaves[_ssj])}'s `;
+				} else {
+					r += ` and `;
 				}
-			} else if (V.children.length === 2) {
-				r += `has <span class="lightgreen">two uncles, ${V.children[0].slaveName}, and ${V.children[1].slaveName}.</span> `;
-			} else {
-				r += `has <span class="lightgreen">an uncle, ${V.children[0].slaveName}.</span> `;
+				r += `<span class="lightgreen">${friendship}.</span> `;
 			}
+		} else if (child.relationship === -3) {
+			r += `<span class="lightgreen">Your wife.</span> `;
+		} else if (child.relationship === -2) {
+			r += `<span class="lightgreen">Emotionally bonded to you.</span> `;
+		} else if (child.relationship === -1) {
+			r += `<span class="lightgreen">Emotional slut.</span> `;
 		}
-		V.children = [];
+	}
 
-		// nieces
-		for (let i = 0; i < V.slaves.length; i++) {
-			if (areSisters(V.slaves[i], child) === 1 || areSisters(V.slaves[i], child) === 2) {
-				for (let j = 0; j < V.slaves.length; j++) {
-					if (V.slaves[i].ID !== V.slaves[j].ID && V.slaves[j].genes === "XX") {
-						if (V.slaves[i].ID === V.slaves[j].mother || V.slaves[i].ID === V.slaves[j].father) {
-							V.children.push(V.slaves[j]);
-						}
-					}
-				}
-			}
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function longClone(child) {
+		if (child.clone !== 0) {
+			r += ` <span class="skyblue">Clone of ${child.clone}.</span> `;
 		}
+	}
 
-		if (V.children.length > 0) {
-			r += `${He} `;
-			if (V.children.length > 2) {
-				r += `has <span class="lightgreen">many nieces, `;
-				for (j = 0; j < V.children.length; j++) {
-					if (j < V.children.length - 1) {
-						r += `${V.children[j].slaveName}, `;
-					} else {
-						r += `and ${V.children[j].slaveName}.</span> `;
-					}
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function longRival(child) {
+		if (child.rivalry !== 0) {
+			r += `&nbsp;&nbsp;&nbsp;&nbsp;`;
+			const _ssj = V.slaves.findIndex(function(s) {
+				return s.ID === child.rivalryTarget;
+			});
+			if (_ssj !== -1) {
+				if (child.rivalry <= 1) {
+					r += `<span class="lightsalmon">Dislikes</span> ${SlaveFullName(V.slaves[_ssj])}. `;
+				} else if (child.rivalry <= 2) {
+					r += `${SlaveFullName(V.slaves[_ssj])}'s <span class="lightsalmon">rival.</span> `;
+				} else {
+					r += `<span class="lightsalmon">Hates</span> ${SlaveFullName(V.slaves[_ssj])}. `;
 				}
-			} else if (V.children.length === 2) {
-				r += `has <span class="lightgreen">two nieces, ${V.children[0].slaveName}, and ${V.children[1].slaveName}.</span> `;
-			} else {
-				r += `has <span class="lightgreen">a niece, ${V.children[0].slaveName}.</span> `;
 			}
+			r += " ";
+		}
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function longClothes(child) {
+		switch (child.clothes) {
+			case "attractive lingerie":
+				r += `Nice lingerie. `;
+				break;
+			case "a succubus outfit":
+				r += `Succubus outfit. `;
+				break;
+			case "a string bikini":
+				r += `String bikini. `;
+				break;
+			case "a scalemail bikini":
+				r += `Scalemail bikini. `;
+				break;
+			case "striped panties":
+				r += `Striped panties. `;
+				break;
+			case "a monokini":
+				r += `Monokini. `;
+				break;
+			case "an apron":
+				r += `Apron. `;
+				break;
+			case "a cybersuit":
+				r += `Cybersuit. `;
+				break;
+			case "cutoffs and a t-shirt":
+				r += `Cutoffs, t-shirt. `;
+				break;
+			case "a slutty outfit":
+				r += `Slutty outfit. `;
+				break;
+			case "uncomfortable straps":
+				r += `Leather straps. `;
+				break;
+			case "a fallen nuns habit":
+				r += `Slutty habit. `;
+				break;
+			case "a chattel habit":
+				r += `Chattel habit. `;
+				break;
+			case "a penitent nuns habit":
+				r += `Cilice. `;
+				break;
+			case "slutty jewelry":
+				r += `Bangles. `;
+				break;
+			case "attractive lingerie for a pregnant woman":
+				r += `Preggo lingerie. `;
+				break;
+			case "a maternity dress":
+				r += `Maternity dress. `;
+				break;
+			case "stretch pants and a crop-top":
+				r += `Stretch pants, crop-top. `;
+				break;
+			case "harem gauze":
+				r += `Harem outfit. `;
+				break;
+			case "a child gown":
+				r += `Slave gown. `;
+				break;
+			case "a halter top dress":
+				r += `Halter top dress. `;
+				break;
+			case "a mini dress":
+				r += `Mini dress. `;
+				break;
+			case "a ball gown":
+				r += `Ball gown. `;
+				break;
+			case "slutty business attire":
+				r += `Slutty suit. `;
+				break;
+			case "nice business attire":
+				r += `Nice suit. `;
+				break;
+			case "a comfortable bodysuit":
+				r += `Bodysuit. `;
+				break;
+			case "a military uniform":
+				r += `Military uniform. `;
+				break;
+			case "a schutzstaffel uniform":
+				r += `Schutzstaffel uniform. `;
+				break;
+			case "a slutty schutzstaffel uniform":
+				r += `Slutty Schutzstaffel uniform. `;
+				break;
+			case "a red army uniform":
+				r += `Red Army uniform. `;
+				break;
+			case "a long qipao":
+				r += `Long Qipao. `;
+				break;
+			case "battlearmor":
+				r += `Battlearmor. `;
+				break;
+			case "a mounty outfit":
+				r += `Mounty outfit. `;
+				break;
+			case "a dirndl":
+				r += `Dirndl. `;
+				break;
+			case "lederhosen":
+				r += `Lederhosen. `;
+				break;
+			case "a biyelgee costume":
+				r += `Biyelgee costume. `;
+				break;
+			case "a leotard":
+				r += `Leotard. `;
+				break;
+			case "a bunny outfit":
+				r += `Bunny outfit. `;
+				break;
+			case "a slutty maid outfit":
+				r += `Slutty maid. `;
+				break;
+			case "a nice maid outfit":
+				r += `Nice maid. `;
+				break;
+			case "a slutty nurse outfit":
+				r += `Slutty nurse. `;
+				break;
+			case "a nice nurse outfit":
+				r += `Nice nurse. `;
+				break;
+			case "a schoolgirl outfit":
+				r += `Schoolgirl outfit. `;
+				break;
+			case "a kimono":
+				r += `Kimono. `;
+				break;
+			case "a hijab and abaya":
+				r += `Hijab and abaya. `;
+				break;
+			case "battledress":
+				r += `Battledress. `;
+				break;
+			case "a latex catsuit":
+				r += `Nice latex. `;
+				break;
+			case "restrictive latex":
+				r += `Bondage latex. `;
+				break;
+			case "conservative clothing":
+				r += `Conservative clothing. `;
+				break;
+			case "chains":
+				r += `Chains. `;
+				break;
+			case "overalls":
+				r += `Overalls. `;
+				break;
+			case "a cheerleader outfit":
+				r += `Cheerleader. `;
+				break;
+			case "clubslut netting":
+				r += `Netting. `;
+				break;
+			case "shibari ropes":
+				r += `Shibari. `;
+				break;
+			case "Western clothing":
+				r += `Chaps. `;
+				break;
+			case "body oil":
+				r += `Body oil. `;
+				break;
+			case "a toga":
+				r += `Toga. `;
+				break;
+			case "a huipil":
+				r += `Huipil. `;
+				break;
+			case "a slutty qipao":
+				r += `Slutty qipao. `;
+				break;
+			case "spats and a tank top":
+				r += `Spats, tank top. `;
+				break;
+			case "a burkini":
+				r += `Burkini. `;
+				break;
+			case "a niqab and abaya":
+				r += `Niqab and abaya. `;
+				break;
+			case "a klan robe":
+				r += `Klan robe. `;
+				break;
+			case "a hijab and blouse":
+				r += `Hijab and blouse. `;
+				break;
+			case "a burqa":
+				r += `Burqa. `;
+				break;
+			case "kitty lingerie":
+				r += `Kitty lingerie. `;
+				break;
+			case "a tube top and thong":
+				r += `Tube top, thong. `;
+				break;
+			case "a button-up shirt and panties":
+				r += `Button-up shirt, panties. `;
+				break;
+			case "a gothic lolita dress":
+				r += `Gothic lolita dress. `;
+				break;
+			case "a hanbok":
+				r += `Hanbok. `;
+				break;
+			case "a bra":
+				r += `Nice bra. `;
+				break;
+			case "a button-up shirt":
+				r += `Nice button-up shirt. `;
+				break;
+			case "a nice pony outfit":
+				r += `Nice pony outfit. `;
+				break;
+			case "a sweater":
+				r += `Nice sweater. `;
+				break;
+			case "a tank-top":
+				r += `Nice tank-top. `;
+				break;
+			case "a thong":
+				r += `Nice thong. `;
+				break;
+			case "a tube top":
+				r += `Nice tube top. `;
+				break;
+			case "a one-piece swimsuit":
+				r += `Swimsuit. `;
+				break;
+			case "a police uniform":
+				r += `Police uniform. `;
+				break;
+			case "a striped bra":
+				r += `Striped bra. `;
+				break;
+			case "a skimpy loincloth":
+				r += `Skimpy loincloth. `;
+				break;
+			case "a slutty klan robe":
+				r += `Slutty klan robe. `;
+				break;
+			case "a slutty pony outfit":
+				r += `Slutty pony outfit. `;
+				break;
+			case "a Santa dress":
+				r += `Santa dress. `;
+				break;
+			case "a sports bra":
+				r += `Sports bra. `;
+				break;
+			case "a sweater and panties":
+				r += `Sweater, panties. `;
+				break;
+			case "a t-shirt":
+				r += `T-shirt. `;
+				break;
+			case "a tank-top and panties":
+				r += `Tank-top, panties. `;
+				break;
+			case "a t-shirt and thong":
+				r += `Thong, t-shirt. `;
+				break;
+			case "an oversized t-shirt and boyshorts":
+				r += `Over-sized t-shirt, boy shorts. `;
+				break;
+			case "an oversized t-shirt":
+				r += `Nice over-sized t-shirt. `;
+				break;
+			case "a t-shirt and jeans":
+				r += `Blue jeans, t-shirt. `;
+				break;
+			case "boyshorts":
+				r += `Boy shorts. `;
+				break;
+			case "cutoffs":
+				r += `Jean shorts. `;
+				break;
+			case "leather pants and pasties":
+				r += `Leather pants, pasties. `;
+				break;
+			case "leather pants":
+				r += `Nice leather pants. `;
+				break;
+			case "panties":
+				r += `Nice panties. `;
+				break;
+			case "sport shorts and a t-shirt":
+				r += `Nice sport shorts, shirt. `;
+				break;
+			case "a t-shirt and panties":
+				r += `Panties, t-shirt. `;
+				break;
+			case "panties and pasties":
+				r += `Pasties, panties. `;
+				break;
+			case "striped underwear":
+				r += `Striped underwear`;
+				break;
+			case "sport shorts and a sports bra":
+				r += `Shorts, bra. `;
+				break;
+			case "jeans":
+				r += `Tight blue jeans. `;
+				break;
+			case "a sweater and cutoffs":
+				r += `Jean shorts, sweater. `;
+				break;
+			case "leather pants and a tube top":
+				r += `Leather pants, tube top. `;
+				break;
+			case "sport shorts":
+				r += `Shorts. `;
+				break;
+			default:
+				r += `Naked. `;
+				break;
 		}
-		V.children = [];
+	}
 
-		// nephews
-		for (let i = 0; i < V.slaves.length; i++) {
-			if (areSisters(V.slaves[i], child) === 1 || areSisters(V.slaves[i], child) === 2) {
-				for (let j = 0; j < V.slaves.length; j++) {
-					if (V.slaves[i].ID !== V.slaves[j].ID && V.slaves[j].genes === "XY") {
-						if (V.slaves[i].ID === V.slaves[j].mother || V.slaves[i].ID === V.slaves[j].father) {
-							V.children.push(V.slaves[j]);
-						}
-					}
-				}
-			}
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function longCollar(child) {
+		switch (child.collar) {
+			case "uncomfortable leather":
+				r += `Leather collar. `;
+				break;
+			case "tight steel":
+				r += `Steel collar. `;
+				break;
+			case "preg biometrics":
+				r += `Pregnancy biometrics collar. `;
+				break;
+			case "cruel retirement counter":
+				r += `Cruel counter collar. `;
+				break;
+			case "shock punishment":
+				r += `Shock collar. `;
+				break;
+			case "dildo gag":
+				r += `Dildo gag. `;
+				break;
+			case "massive dildo gag":
+				r += `Throat-bulging dildo gag. `;
+				break;
+			case "neck corset":
+				r += `Neck corset. `;
+				break;
+			case "stylish leather":
+				r += `Stylish leather collar. `;
+				break;
+			case "satin choker":
+				r += `Satin choker. `;
+				break;
+			case "silk ribbon":
+				r += `Silken ribbon. `;
+				break;
+			case "heavy gold":
+				r += `Gold collar. `;
+				break;
+			case "bowtie":
+				r += `Bowtie collar. `;
+				break;
+			case "pretty jewelry":
+				r += `Pretty collar. `;
+				break;
+			case "nice retirement counter":
+				r += `Nice counter collar. `;
+				break;
+			case "bell collar":
+				r += `Bell collar. `;
+				break;
+			case "leather with cowbell":
+				r += `Cowbell collar. `;
+				break;
+			case "ancient Egyptian":
+				r += `Wesekh. `;
+				break;
+			case "ball gag":
+				r += `Ball gag. `;
+				break;
+			case "bit gag":
+				r += `Bit gag. `;
+				break;
+			case "porcelain mask":
+				r += `Porcelain mask. `;
+				break;
 		}
+	}
 
-		if (V.children.length > 0) {
-			r += `${He} `;
-			if (V.children.length > 2) {
-				r += `has <span class="lightgreen">many nephews, `;
-				for (j = 0; j < V.children.length; j++) {
-					if (j < V.children.length - 1) {
-						r += `${V.children[j].slaveName}, `;
-					} else {
-						r += `and ${V.children[j].slaveName}.</span> `;
-					}
-				}
-			} else if (V.children.length === 2) {
-				r += `has <span class="lightgreen">two nephews, ${V.children[0].slaveName}, and ${V.children[1].slaveName}.</span> `;
-			} else {
-				r += `has <span class="lightgreen">a nephew, ${V.children[0].slaveName}.</span> `;
-			}
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function longBelly(child) {
+		switch (child.bellyAccessory) {
+			case "shapewear":
+				r += `Shapewear. `;
+				break;
+			case "a small empathy belly":
+				r += `Small fake belly. `;
+				break;
+			case "a medium empathy belly":
+				r += `Medium fake belly. `;
+				break;
+			case "a large empathy belly":
+				r += `Large fake belly. `;
+				break;
+			case "a huge empathy belly":
+				r += `Huge fake belly. `;
+				break;
+			case "a corset":
+				r += `Corset. `;
+				break;
+			case "an extreme corset":
+				r += `Extreme corsetage. `;
+				break;
 		}
-		V.children = [];
+	}
 
-		let
-			twins = [],
-			sisters = [],
-			brothers = [],
-			halfSisters = [],
-			halfBrothers = [],
-			cousins = [];
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function longLegs(child) {
+		if (child.legAccessory === "short stockings") {
+			r += `Short stockings. `;
+		} else if (child.legAccessory === "long stockings") {
+			r += `Long stockings. `;
+		}
+	}
 
-		for (let i = 0; i < V.slaves.length; i++) {
-			let sisterCheck = areSisters(V.slaves[i], child);
-			if (sisterCheck === 1) {
-				twins.push(V.slaves[i]);
-			}
-			if (sisterCheck === 2) {
-				(V.slaves[i].genes === "XX" ? sisters : brothers).push(V.slaves[i]);
-			}
-			if (sisterCheck === 3) {
-				(V.slaves[i].genes === "XX" ? halfSisters : halfBrothers).push(V.slaves[i]);
-			}
-			if (V.showDistantRelatives) {
-				if (areCousins(V.slaves[i], child)) {
-					cousins.push(V.slaves[i]);
-				}
-			}
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function longShoes(child) {
+		if (child.shoes === "heels") {
+			r += `Heels. `;
+		} else if (child.shoes === "pumps") {
+			r += `Pumps. `;
+		} else if (child.shoes === "extreme heels") {
+			r += `Extreme heels. `;
+		} else if (child.shoes === "boots") {
+			r += `Boots. `;
+		} else if (child.heels === 1) {
+			r += `<span class="yellow">Crawling.</span> `;
+		} else if (child.shoes === "flats") {
+			r += `Flats. `;
 		}
+	}
 
-		// twins
-		if (twins.length > 0) {
-			r += `${He} `;
-			if (twins.length > 2) {
-				r += `<span class="lightgreen">shared a cramped womb with ${twins.reduce(function(res, ch, i, arr) {
-					return (res.slaveName || res) + (i === arr.length - 1 ? ` and ` : `, `) + ch.slaveName;
-				})}</span> `;
-			} else if (twins.length === 2) {
-				r += `is <span class="lightgreen">one of a set of triplets; ${twins[0].slaveName} and ${twins[1].slaveName}</span> complete the trio. `;
-			} else {
-				r += `is <span class="lightgreen">twins with ${twins[0].slaveName}.</span> `;
-			}
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function longChastity(child) {
+		if (child.chastityAnus === 1 && child.chastityPenis === 1 && child.chastityVagina === 1) {
+			r += `Full chastity. `;
+		} else if (child.chastityPenis === 1 && child.chastityVagina === 1) {
+			r += `Genital chastity. `;
+		} else if ((child.chastityAnus === 1 && child.chastityVagina === 1) || (child.chastityAnus === 1 && child.chastityPenis === 1)) {
+			r += `Combined chastity. `;
+		} else if (child.chastityVagina === 1) {
+			r += `Vaginal chastity. `;
+		} else if (child.chastityPenis === 1) {
+			r += `Chastity cage. `;
+		} else if (child.chastityAnus === 1) {
+			r += `Anal chastity. `;
 		}
+	}
 
-		// sisters
-		if (sisters.length > 0) {
-			if (sisters.length > 1) {
-				r += `<span class="lightgreen">${sisters.reduce(function(res, ch, i, arr) {
-					return (res.slaveName || res) + (i === arr.length - 1 ? ` and ` : `, `) + ch.slaveName;
-				})} are ${his} sisters.</span> `;
-			} else {
-				r += `<span class="lightgreen">${sisters[0].slaveName} is $his sister. `;
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function longVaginalAcc(child) {
+		if (child.vaginalAttachment !== "vibrator") {
+			switch (child.vaginalAccessory) {
+				case "bullet vibrator":
+					r += `Attached bullet vibrator. `;
+					break;
+				case "smart bullet vibrator":
+					r += `Attached smart bullet vibrator. `;
+					break;
+				case "dildo":
+					r += `Vaginal dildo. `;
+					break;
+				case "large dildo":
+					r += `Large vaginal dildo. `;
+					break;
+				case "huge dildo":
+					r += `Huge vaginal dildo. `;
+					break;
+				case "long dildo":
+					r += `Long vaginal dildo. `;
+					break;
+				case "long, large dildo":
+					r += `Long and large vaginal dildo. `;
+					break;
+				case "long, huge dildo":
+					r += `Long and wide vaginal dildo. `;
+					break;
 			}
 		}
-
-		// brothers
-		if (brothers.length > 0) {
-			if (brothers.length > 1) {
-				r += `<span class="lightgreen">${brothers.reduce(function(res, ch, i, arr) {
-					return (res.slaveName || res) + (i === arr.length - 1 ? ` and ` : `, `) + ch.slaveName;
-				})} are ${his} brothers.</span> `;
-			} else {
-				r += `<span class="lightgreen">${brothers[0].slaveName} is $his brother. `;
+		if (child.vaginalAttachment !== "none") {
+			switch (child.vaginalAttachment) {
+				case "vibrator":
+					r += `Vibrating dildo. `;
+					break;
 			}
+			r += " ";
 		}
+	}
 
-		// half-sisters
-		children = V.slaves.filter(function(s) {
-			return areSisters(child, s) === 3 && s.genes === "XX";
-		});
-		if (children.length > 2) {
-			r += `<span class="lightgreen">${children.reduce(function(res, ch, i, arr) {
-				return (res.slaveName || res) + (i === arr.length - 1 ? ` and ` : `, `) + ch.slaveName;
-			})} are half-sisters to ${him}.</span> `;
-		} else if (children.length === 2) {
-			r += `<span class="lightgreen">${children[0].slaveName} and ${children[1].slaveName} are half-sisters to ${him}.</span> `;
-		} else {
-			r += `<span class="lightgreen">${children[0].slaveName} is a half-sister to ${him}.</span> `;
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function longDickAcc(child) {
+		switch (child.dickAccessory) {
+			case "sock":
+				r += `Cock sock. `;
+				break;
+			case "bullet vibrator":
+				r += `Frenulum bullet vibrator. `;
+				break;
+			case "smart bullet vibrator":
+				r += `Smart frenulum bullet vibrator. `;
+				break;
 		}
+	}
 
-		// half-brothers
-		children = V.slaves.filter(function(s) {
-			return areSisters(child, s) === 3 && s.genes === "XY";
-		});
-		if (children.length > 2) {
-			r += `<span class="lightgreen">${children.reduce(function(res, ch, i, arr) {
-				return (res.slaveName || res) + (i === arr.length - 1 ? ` and ` : `, `) + ch.slaveName;
-			})} are half-brothers to ${him}.</span> `;
-		} else if (children.length === 2) {
-			r += `<span class="lightgreen">${children[0].slaveName} and ${children[1].slaveName} are half-brothers to ${him}.</span> `;
-		} else {
-			r += `<span class="lightgreen">${children[0].slaveName} is a half-brother to ${him}.</span> `;
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function longButtplug(child) {
+		switch (child.buttplug) {
+			case "plug":
+				r += `Buttplug. `;
+				break;
+			case "large plug":
+				r += `Large buttplug. `;
+				break;
+			case "huge plug":
+				r += `Huge buttplug. `;
+				break;
+			case "long plug":
+				r += `Long buttplug. `;
+				break;
+			case "long, large plug":
+				r += `Large, long buttplug. `;
+				break;
+			case "long, huge plug":
+				r += `Enormous buttplug. `;
+				break;
 		}
-
-		// cousins
-		children = V.slaves.filter(function(s) {
-			return areCousins(child, s);
-		});
-		if (children.length > 2) {
-			r += `<span class="lightgreen">${children.reduce(function(res, ch, i, arr) {
-				return (res.slaveName || res) + (i === arr.length - 1 ? ` and ` : `, `) + ch.slaveName;
-			})} are cousins to ${him}.</span> `;
-		} else if (children.length === 2) {
-			r += `<span class="lightgreen">${children[0].slaveName} and ${children[1].slaveName} are cousins to ${him}.</span> `;
-		} else {
-			r += `<span class="lightgreen">${children[0].slaveName} is a cousins to ${him}.</span> `;
+		switch (child.buttplugAttachment) {
+			case "tail":
+				r += `Attached tail. `;
+				break;
+			case "cat tail":
+				r += `Attached cat tail. `;
+				break;
+			case "fox tail":
+				r += `Attached fox tail. `;
+				break;
 		}
 	}
 
-	/* CLOSE FAMILY */
-
-	if (father === PC) {
-		if (child.eyeColor === PC.eyeColor) {
-			r += `${He} has your ${child.eyeColor} eyes. `;
-		} else {
-			r += `${He} has ${his} mother ${mother.slaveName}'s ${child.eyeColor} eyes. `;
-		}
-	} else {
-		if (child.eyeColor === father.eyeColor) {
-			r += `${He} has ${his} father ${father.slaveName}'s ${child.eyeColor} eyes. `;
-		} else {
-			r += `${He} has ${his} mother ${mother.slaveName}'s ${child.eyeColor} eyes. `;
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function rulesAssistant(child) {
+		if (child.useRulesAssistant === 0) {
+			r += `<span class="lightgreen">RA-Exempt</span> `;
+		} else if (V.abbreviateRulesets === 2 && (child.currentRules !== undefined) && (child.currentRules.length > 0)) {
+			r += `Rules: ${V.defaultRules.filter(x => ruleApplied(child, x)).map(x => x.name).join(", ")}`;
 		}
 	}
 
-	// TODO: add something about fetishes?
+	/**
+	 * @param {App.Entity.SlaveState} child
+	 */
+	function origins(child) {
+		r += `<br> `;
+		if (V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1) {
+			r += `&nbsp;&nbsp;&nbsp;&nbsp;`;
+		}
+		r += `<span class="gray">${child.origin}</span> `;
+	}
 
-	return r;
+	return ChildSummaryUncached(child);
 };
 
 /**
diff --git a/src/facilities/nursery/nurseryWorkaround.tw b/src/facilities/nursery/nurseryWorkaround.tw
index 80494c515538d5c767bd6b23f587ba76c61cedb6..42696c16c58501a465251239d4b4426b08cf8161 100644
--- a/src/facilities/nursery/nurseryWorkaround.tw
+++ b/src/facilities/nursery/nurseryWorkaround.tw
@@ -2,239 +2,6 @@
 
 <<if $cribs.length < $nursery>>
 	<<set $activeChild.growTime = ($targetAgeNursery*52)>>
+	<<set $activeChild.actualAge = 0>>
 	<<set $cribs.push($activeChild)>>
-	/* for later
-	TODO: is this going to be used?
-	<span id="naming">
-	<<if $activeChild.mother > 0>>
-		<<set _tempMom = getSlave($activeChild.mother)>>
-	<</if>>
-	<<if $activeChild.father > 0>>
-		<<set _tempDad = getSlave($activeChild.father)>>
-	<</if>>
-	<br>Choose a name for $him. <<textbox "$activeChild.slaveName" $activeChild.slaveName>>
-		<<link "Commit name.">>
-		<<set $activeChild.birthName = $activeChild.slaveName>>
-		<<replace "#naming">>
-		You instruct $assistantName to register the new $girl as "<<print $activeSlave.slaveName>>" in the slave registry.
-		<</replace>>
-		<<replace "#newName">>
-			''__@@.pink;$activeChild.slaveName@@__''
-		<</replace>>
-		<</link>>
-	<br><<link "Have your PA assign $him a random name">>
-		<<replace "#naming">>
-			<<NewChildName $activeSlave>>
-			$assistantName registers the new $girl as "<<print $activeSlave.slaveName>>" in your registry.
-		<</replace>>
-		<<replace "#newName">>
-			''__@@.pink;$activeChild.slaveName@@__''
-		<</replace>>
-	<</link>>
-	<<if $arcologies[0].FSPastoralist != "unset">>
-		<<if $activeChild.lactation > 0>>
-			<br><<link "Have your PA assign $him a random cow name">>
-			<<replace "#naming">>
-			<<set $activeSlave.slaveName = setup.cowSlaveNames.random()>>
-			<<set $activeSlave.birthName = $activeSlave.slaveName>>
-			$assistantName registers the new $girl as "<<print $activeSlave.slaveName>>" in your registry.
-			<</replace>>
-			<<replace "#newName">>
-				''__@@.pink;$activeChild.slaveName@@__''
-			<</replace>>
-			<</link>>
-		<</if>>
-	<</if>>
-	<<if $arcologies[0].FSChattelReligionist != "unset">>
-		<br><<link "Have your PA assign $him a random devotional name">>
-			<<replace "#naming">>
-			<<set $activeSlave.slaveName = setup.chattelReligionistSlaveNames.random()>>
-			<<set $activeSlave.birthName = $activeSlave.slaveName>>
-			$assistantName registers the new $girl as "<<print $activeSlave.slaveName>>" in your registry.
-			<</replace>>
-			<<replace "#newName">>
-				''__@@.pink;$activeChild.slaveName@@__''
-			<</replace>>
-		<</link>>
-	<</if>>
-	<<if $arcologies[0].FSRomanRevivalist != "unset">>
-		<br><<link "Have your PA assign $him a random Roman name">>
-			<<replace "#naming">>
-			<<set $activeSlave.slaveName = setup.romanSlaveNames.random()>>
-			<<set $activeSlave.birthName = $activeSlave.slaveName>>
-			$assistantName registers the new $girl as "<<print $activeSlave.slaveName>>" in your registry.
-			<</replace>>
-			<<replace "#newName">>
-				''__@@.pink;$activeChild.slaveName@@__''
-			<</replace>>
-		<</link>>
-	<<elseif $arcologies[0].FSAztecRevivalist != "unset">>
-		<br><<link "Have your PA assign $him a random Aztec name">>
-			<<replace "#naming">>
-			<<set $activeSlave.slaveName = setup.aztecSlaveNames.random()>>
-			<<set $activeSlave.birthName = $activeSlave.slaveName>>
-			$assistantName registers the new $girl as "<<print $activeSlave.slaveName>>" in your registry.
-			<</replace>>
-			<<replace "#newName">>
-				''__@@.pink;$activeChild.slaveName@@__''
-			<</replace>>
-		<</link>>
-	<<elseif $arcologies[0].FSEgyptianRevivalist != "unset">>
-		<br><<link "Have your PA assign $him a random ancient Egyptian name">>
-			<<replace "#naming">>
-			<<set $activeSlave.slaveName = setup.ancientEgyptianSlaveNames.random()>>
-			<<set $activeSlave.birthName = $activeSlave.slaveName>>
-			$assistantName registers the new $girl as "<<print $activeSlave.slaveName>>" in your registry.
-			<</replace>>
-			<<replace "#newName">>
-				''__@@.pink;$activeChild.slaveName@@__''
-			<</replace>>
-		<</link>>
-	<<elseif $arcologies[0].FSEdoRevivalist != "unset">>
-		<br><<link "Have your PA assign $him a random feudal Japanese name">>
-			<<replace "#naming">>
-			<<set $activeSlave.slaveName = setup.edoSlaveNames.random()>>
-			<<set $activeSlave.birthName = $activeSlave.slaveName>>
-			$assistantName registers the new $girl as "<<print $activeSlave.slaveName>>" in your registry.
-			<</replace>>
-			<<replace "#newName">>
-				''__@@.pink;$activeChild.slaveName@@__''
-			<</replace>>
-		<</link>>
-	<</if>>
-	<<if $arcologies[0].FSDegradationist != "unset">>
-		<br><<link "Have your PA assign $him a degrading name">>
-			<<replace "#naming">>
-			<<run DegradingName($activeSlave)>>
-			<<set $activeSlave.birthName = $activeSlave.slaveName>>
-			$assistantName registers the new $girl as "<<print $activeSlave.slaveName>>" in your registry.
-			<</replace>>
-			<<replace "#newName">>
-				''__@@.pink;$activeChild.slaveName@@__''
-			<</replace>>
-		<</link>>
-	<</if>>
-	<<if $activeChild.mother > 0>>
-	<<setLocalPronouns _tempMom 2>>
-		<<if _tempMom.ID == $Concubine.ID>>
-			<br><<link "Permit your Concubine to name _his2 daughter">>
-				<<replace "#naming">>
-					<<ParentNames _tempMom $activeChild>>
-					<<set $activeChild.birthName = $activeChild.slaveName>>
-					After some careful consideration, _tempMom.slaveName picks a name _he2 thinks you might find attractive; from now on _his2 daughter will be known as "<<print $activeChild.slaveName>>".
-				<</replace>>
-				<<replace "#newName">>
-					''__@@.pink;$activeChild.slaveName@@__''
-				<</replace>>
-			<</link>>
-		<<elseif _tempMom.relationship == -3 && (_tempMom.devotion >= -20)>>
-			<br><<link "Permit your wife to name _his2 daughter">>
-				<<replace "#naming">>
-					<<ParentNames _tempMom $activeChild>>
-					<<set $activeChild.birthName = $activeChild.slaveName>>
-					After some careful consideration, _tempMom.slaveName picks a name suitable for your daughter; from now on _he2 will be known as "<<print $activeChild.slaveName>>".
-				<</replace>>
-				<<replace "#newName">>
-					''__@@.pink;$activeChild.slaveName@@__''
-				<</replace>>
-			<</link>>
-		<<elseif _tempMom.ID == $Bodyguard.ID>>
-			<br><<link "Permit your bodyguard to name _his2 daughter">>
-				<<replace "#naming">>
-					<<ParentNames _tempMom $activeChild>>
-					<<set $activeChild.birthName = $activeChild.slaveName>>
-					After some careful consideration, _tempMom.slaveName decides on "<<print $activeChild.slaveName>>" for _his2 daughter. _He2 hopes you'll find it fitting $his station.
-				<</replace>>
-				<<replace "#newName">>
-					''__@@.pink;$activeChild.slaveName@@__''
-				<</replace>>
-			<</link>>
-		<<elseif _tempMom.ID == $HeadGirl.ID>>
-			<br><<link "Permit your headgirl to name _his2 daughter">>
-				<<replace "#naming">>
-					<<ParentNames _tempMom $activeChild>>
-					<<set $activeChild.birthName = $activeChild.slaveName>>
-					After some careful consideration, _tempMom.slaveName decides on "<<print $activeChild.slaveName>>" for _his2 daughter, and hopes it will be a name your other slaves will learn to respect.
-				<</replace>>
-				<<replace "#newName">>
-					''__@@.pink;$activeChild.slaveName@@__''
-				<</replace>>
-			<</link>>
-		<<elseif _tempMom.devotion > 50 && _tempMom.trust > 50>>
-			<br><<link "Permit $his devoted mother to name _his2 daughter">>
-				<<replace "#naming">>
-					<<ParentNames _tempMom $activeChild>>
-					<<set $activeChild.birthName = $activeChild.slaveName>>
-					After some careful consideration, _tempMom.slaveName picks a name _he2 hopes you'll like; from now on _his2 daughter will be known as "<<print $activeChild.slaveName>>".
-				<</replace>>
-				<<replace "#newName">>
-					''__@@.pink;$activeChild.slaveName@@__''
-				<</replace>>
-			<</link>>
-		<</if>>
-	<</if>>
-	<<if $activeChild.father > 0 && $activeChild.father != $activeChild.mother>>
-	<<setLocalPronouns _tempDad 2>>
-		<<if _tempDad.ID == $Concubine.ID>>
-			<br><<link "Permit your Concubine to name _his2 daughter">>
-				<<replace "#naming">>
-					<<ParentNames _tempDad $activeChild>>
-					<<set $activeChild.birthName = $activeChild.slaveName>>
-					After some careful consideration, _tempDad.slaveName picks a name _he2 thinks you might find attractive; from now on _his2 daughter will be known as "<<print $activeChild.slaveName>>".
-				<</replace>>
-				<<replace "#newName">>
-					''__@@.pink;$activeChild.slaveName@@__''
-				<</replace>>
-			<</link>>
-		<<elseif _tempDad.relationship == -3 && (_tempDad.devotion >= -20)>>
-			<br><<link "Permit your wife to name _his2 daughter">>
-				<<replace "#naming">>
-					<<ParentNames _tempDad $activeChild>>
-					<<set $activeChild.birthName = $activeChild.slaveName>>
-					After some careful consideration, _tempDad.slaveName picks a name suitable for your daughter; from now on $he will be known as "<<print $activeChild.slaveName>>".
-				<</replace>>
-				<<replace "#newName">>
-					''__@@.pink;$activeChild.slaveName@@__''
-				<</replace>>
-			<</link>>
-		<<elseif _tempDad.ID == $Bodyguard.ID>>
-			<br><<link "Permit your bodyguard to name _his2 daughter">>
-				<<replace "#naming">>
-					<<ParentNames _tempDad $activeChild>>
-					<<set $activeChild.birthName = $activeChild.slaveName>>
-					After some careful consideration, _tempDad.slaveName decides on "<<print $activeChild.slaveName>>" for _his2 daughter. _He2 hopes you'll find it fitting $his station.
-				<</replace>>
-				<<replace "#newName">>
-					''__@@.pink;$activeChild.slaveName@@__''
-				<</replace>>
-			<</link>>
-		<<elseif _tempDad.ID == $HeadGirl.ID>>
-			<br><<link "Permit your headgirl to name _his2 daughter">>
-				<<replace "#naming">>
-					<<ParentNames _tempDad $activeChild>>
-					<<set $activeChild.birthName = $activeChild.slaveName>>
-					After some careful consideration, _tempDad.slaveName decides on "<<print $activeChild.slaveName>>" for _his2 daughter, and hopes it will be a name your other slaves will learn to respect.
-				<</replace>>
-				<<replace "#newName">>
-					''__@@.pink;$activeChild.slaveName@@__''
-				<</replace>>
-			<</link>>
-		<<elseif _tempDad.devotion > 50 && _tempDad.trust > 50>>
-			<br><<link "Permit $his devoted father to name _his2 daughter">>
-				<<replace "#naming">>
-					<<ParentNames _tempDad $activeChild>>
-					<<set $activeChild.birthName = $activeChild.slaveName>>
-					After some careful consideration, _tempDad.slaveName picks a name _he2 hopes you'll like; from now on _his2 daughter will be known as "<<print $activeChild.slaveName>>".
-				<</replace>>
-				<<replace "#newName">>
-					''__@@.pink;$activeChild.slaveName@@__''
-				<</replace>>
-			<</link>>
-		<</if>>
-	<</if>>
-	</span>
-	<span id="newName">
-	<<set $activeChild.birthName = $activeChild.slaveName>>
-	</span>
-	*/
 <</if>>
\ No newline at end of file