diff --git a/src/npc/children/longChildDescription.js b/src/npc/children/longChildDescription.js
index c3521993d28948de75183aa528cb05ee0de8dea1..40644f4da5d3f17367f608510420d249eb484312 100644
--- a/src/npc/children/longChildDescription.js
+++ b/src/npc/children/longChildDescription.js
@@ -47,10 +47,10 @@ App.Facilities.Nursery.LongChildDescription = function(child, {market = 0, event
 
 		if (child.accent !== 0) {
 			if (child.accent === 1) {
-				accent = jsEither("a beautiful", "a distinctive", "an intriguing", "a light", "a lovely", "a mild", "a pleasant", "a rich", "a slight", "a smooth");
+				accent = either("a beautiful", "a distinctive", "an intriguing", "a light", "a lovely", "a mild", "a pleasant", "a rich", "a slight", "a smooth");
 				r += `${He} speaks ${V.language} in ${accent} ${nationality} accent${child.rules.speech === "accent elimination" ? `, which the rules encourage ${him} to suppress` : ``}. `;
 			} else if (child.accent === 2) {
-				accent = jsEither("a broad", "a harsh", "a heavy", "an intense", "a marked", "a noticeable", "a rough", "a significant", "a stressed", "a strong", "a thick");
+				accent = either("a broad", "a harsh", "a heavy", "an intense", "a marked", "a noticeable", "a rough", "a significant", "a stressed", "a strong", "a thick");
 				r += `${He} speaks ${V.language} in ${accent} ${nationality} accent that can be hard to understand${child.rules.speech === "accent elimination" ? `, and the rules encourage ${him} to make an effort to suppress it` : ``}. `;
 			} else {
 				r += `${He} speaks little ${V.language}, but understands enough to be given orders. `;
@@ -375,49 +375,49 @@ App.Facilities.Nursery.LongChildDescription = function(child, {market = 0, event
 			skinDesc = "darker";
 		}
 
-		analSkinDesc = jsEither("crinkled", "puckered", "puffy");
+		analSkinDesc = either("crinkled", "puckered", "puffy");
 
 		if (child.anus === 0) {
 			r += `${He} is an <span class="lime">anal virgin;</span> ${his} asshole is fresh and tight. `;
 		} else if (child.anus === 1) {
-			ass = jsEither("anal opening", "anus", "asshole", "butthole");
-			r += `${His} ${ass} is ${jsEither("nice and", "very")} tight, `;
+			ass = either("anal opening", "anus", "asshole", "butthole");
+			r += `${His} ${ass} is ${either("nice and", "very")} tight, `;
 			if (anus > 3) {
 				r += `but it's surrounded by a massive oval of ${analSkinDesc} ${skinDesc} skin that runs from ${his} tailbone all the way down to the ${child.vagina > -1 ? `bottom of ${his} pussy` : `base of ${his} cock`}. `;
 			} else if (anus > 2) {
-				r += `but it's surrounded by an oval of ${analSkinDesc} ${skinDesc} skin that occupies ${his} entire ${jsEither("asscrack", "buttcrack")} ${ass}. `;
+				r += `but it's surrounded by an oval of ${analSkinDesc} ${skinDesc} skin that occupies ${his} entire ${either("asscrack", "buttcrack")} ${ass}. `;
 			} else if (anus > 1) {
 				r += `but it's surrounded by a big ring of ${analSkinDesc} ${skinDesc} skin. `;
 			} else if (anus > 0) {
-				r += `and it's surrounded by a cute ${jsEither("pucker", "ring", "rosebud")} ${ass} of ${skinDesc} skin. `;
+				r += `and it's surrounded by a cute ${either("pucker", "ring", "rosebud")} ${ass} of ${skinDesc} skin. `;
 			} else {
 				r += `and the ${skinDesc} skin around it is stretched smooth, since it's been deflowered only recently. `;
 			}
 		} else if (child.anus === 2) {
-			ass = jsEither("anal opening", "anus", "asshole", "asspussy", "butthole");
-			r += `${His} ${ass} is ${anus > 1 ? `only ` : ``}${jsEither("relaxed", "loose", "accommodating")} ${ass}, `;
+			ass = either("anal opening", "anus", "asshole", "asspussy", "butthole");
+			r += `${His} ${ass} is ${anus > 1 ? `only ` : ``}${either("relaxed", "loose", "accommodating")} ${ass}, `;
 			if (anus > 2) {
 				r += `but it's surrounded by a massive oval of ${analSkinDesc} ${skinDesc} skin that runs from ${his} tailbone all the way down to the ${child.vagina > -1 ? `bottom of ${his} pussy` : `base of ${his} cock`}. `;
 			} else if (anus > 1) {
-				r += `but it's surrounded by an oval of ${analSkinDesc} ${skinDesc} skin that occupies ${his} entire ${jsEither("asscrack", "buttcrack")} ${ass}. `;
+				r += `but it's surrounded by an oval of ${analSkinDesc} ${skinDesc} skin that occupies ${his} entire ${either("asscrack", "buttcrack")} ${ass}. `;
 			} else if (anus > 0) {
 				r += `and it's surrounded by a big ring of ${analSkinDesc} ${skinDesc} skin. `;
 			} else {
 				r += `and the ${skinDesc} skin around it is stretched smooth, suggesting it's getting used to being this way. `;
 			}
 		} else if (child.anus === 3) {
-			ass = jsEither("anal opening", "anus", "asshole", "asspussy", "butthole");
-			r += `${His} ${ass} is a ${jsEither("lewd", "loose", "relaxed", "welcoming")} ${ass} slit, `;
+			ass = either("anal opening", "anus", "asshole", "asspussy", "butthole");
+			r += `${His} ${ass} is a ${either("lewd", "loose", "relaxed", "welcoming")} ${ass} slit, `;
 			if (anus > 1) {
 				r += `and it's surrounded by a massive oval of ${analSkinDesc} ${skinDesc} skin that runs from ${his} tailbone all the way down to the ${child.vagina > -1 ? `bottom of ${his} pussy` : `base of ${his} cock`}. `;
 			} else if (anus > 0) {
-				r += `and it's surrounded by an oval of ${analSkinDesc} ${skinDesc} skin that occupies ${his} entire ${jsEither("asscrack", "buttcrack")} ${ass}. `;
+				r += `and it's surrounded by an oval of ${analSkinDesc} ${skinDesc} skin that occupies ${his} entire ${either("asscrack", "buttcrack")} ${ass}. `;
 			} else {
 				r += `and the ${skinDesc} skin around it is stretched smooth, suggesting ${he}'s getting used to having such a cock-hungry rear fuckhole. `;
 			}
 		} else {
-			ass = jsEither("anal opening", "anal slit", "anus", "asshole", "asspussy", "butthole");
-			r += `${His} ${ass} is a ${jsEither("loose", "open", "permanent", "relaxed")} ${ass} gape, `;
+			ass = either("anal opening", "anal slit", "anus", "asshole", "asspussy", "butthole");
+			r += `${His} ${ass} is a ${either("loose", "open", "permanent", "relaxed")} ${ass} gape, `;
 			if (anus > 0) {
 				r += `and it's surrounded by a massive oval of ${skinDesc} skin that runs from ${his} tailbone all the way down to the ${child.vagina > -1 ? `bottom of ${his} pussy` : `base of ${his} cock`}. `;
 			} else {
@@ -546,44 +546,44 @@ App.Facilities.Nursery.LongChildDescription = function(child, {market = 0, event
 		if (child.butt <= 1) {
 			r += `flat and `;
 			if (arcology.FSSlimnessEnthusiast > 20 && arcology.FSHedonisticDecadence === "unset") {
-				r += `${jsEither("attractive", "enticing", "fashionable")} `;
+				r += `${either("attractive", "enticing", "fashionable")} `;
 			} else {
-				r += `${jsEither("skinny", "slim", "taut")} `;
+				r += `${either("skinny", "slim", "taut")} `;
 			}
 			r += `ass. `;
 		} else if (child.butt <= 2) {
 			if (arcology.FSSlimnessEnthusiast > 20 && arcology.FSHedonisticDecadence === "unset") {
-				r += `${jsEither("fashionable", "sleek and attractive", "small and enticing")} `;
+				r += `${either("fashionable", "sleek and attractive", "small and enticing")} `;
 			} else {
-				r += `${jsEither("small, sleek", "small but rounded", "rounded, small")} `;
+				r += `${either("small, sleek", "small but rounded", "rounded, small")} `;
 			}
 			r += `rear end. `;
 		} else if (child.butt <= 3) {
-			r += `${jsEither("big and healthy", "curved and plump", "healthy and plump")} derrière. `;
+			r += `${either("big and healthy", "curved and plump", "healthy and plump")} derrière. `;
 		} else if (child.butt <= 4) {
-			r += `${jsEither("big bubble", "curvy and enticing", "juicy and large")} butt. `;
+			r += `${either("big bubble", "curvy and enticing", "juicy and large")} butt. `;
 		} else if (child.butt <= 5) {
-			r += `${jsEither("huge", "juicy and huge", "massive and undeniable")} rear end. `;
+			r += `${either("huge", "juicy and huge", "massive and undeniable")} rear end. `;
 		} else if (child.butt <= 6) {
-			r += `${jsEither("enormous", "truly massive")} posterior. `;
+			r += `${either("enormous", "truly massive")} posterior. `;
 		} else if (child.butt <= 7) {
-			r += `${jsEither("gigantic", "titanic")} ass. `;
+			r += `${either("gigantic", "titanic")} ass. `;
 		} else if (child.butt <= 10) {
-			r += `${jsEither("gigantic", "titanic")} ass. `;
+			r += `${either("gigantic", "titanic")} ass. `;
 			if (!canWalk(child)) {
 				r += ` It's so big it would jiggle as ${he} walked — if ${he} could walk. `;
 			} else {
 				r += ` It's so big it jiggles as ${he} walks. `;
 			}
 		} else if (child.butt <= 14) {
-			r += `${jsEither("cushion-like", "hall-crowding")} ass. `;
+			r += `${either("cushion-like", "hall-crowding")} ass. `;
 			if (!canWalk(child)) {
 				r += ` It's so big it would jiggle nonstop as ${he} walked — if ${he} could walk. `;
 			} else {
 				r += ` It's so big it jiggles nonstop as ${he} walks. `;
 			}
 		} else {
-			r += `${jsEither("bean bag sized", "room-crowding")} ass. `;
+			r += `${either("bean bag sized", "room-crowding")} ass. `;
 			if (!canWalk(child)) {
 				r += ` It's so massive it would jiggle endlessly as ${he} walked — if ${he} could walk. `;
 			} else {
@@ -2220,7 +2220,7 @@ App.Facilities.Nursery.LongChildDescription = function(child, {market = 0, event
 				r += `${He} has high tech cyber-ears that could be mistaken for headphones. `;
 				break;
 			case "pointy":
-				r += `${His} small, ${jsEither("elfin", "leaf-shaped", "pointed")} ears are quite cute and give ${him} an exotic appearance. `;
+				r += `${His} small, ${either("elfin", "leaf-shaped", "pointed")} ears are quite cute and give ${him} an exotic appearance. `;
 				break;
 			case "elven":
 				r += `${He} has long, thin elven ears that ${jsEither(`tend to droop when ${he} is relaxed or sad`, `tend to waggle up and down when ${he} is excited`, `twitch at the slightest touch`)}. `;
@@ -7442,54 +7442,54 @@ App.Facilities.Nursery.LongChildDescription = function(child, {market = 0, event
 
 	if (child.weight > 190) {
 		if (arcology.FSHedonisticDecadence !== "unset") {
-			r += `${jsEither("perfectly curvy", "perfectly plush")}. `;
+			r += `${either("perfectly curvy", "perfectly plush")}. `;
 		} else {
-			r += `<span class="red">${jsEither("dangerously fat", "dangerously overweight", "extremely obese")}.</span> `;
+			r += `<span class="red">${either("dangerously fat", "dangerously overweight", "extremely obese")}.</span> `;
 		}
 	} else if (child.weight > 160) {
 		if (arcology.FSHedonisticDecadence !== "unset") {
-			r += `${jsEither("spectacularly curvy", "spectacularly plush")}. `;
+			r += `${either("spectacularly curvy", "spectacularly plush")}. `;
 		} else {
-			r += `<span class="red">${jsEither("extremely fat", "extremely overweight")}.</span> `;
+			r += `<span class="red">${either("extremely fat", "extremely overweight")}.</span> `;
 		}
 	} else if (child.weight > 130) {
 		if (arcology.FSHedonisticDecadence !== "unset") {
-			r += `${jsEither("amazingly curvy", "amazingly plush")}. `;
+			r += `${either("amazingly curvy", "amazingly plush")}. `;
 		} else {
-			r += `<span class="red">${jsEither("very overweight", "obese", "very fat")}.</span> `;
+			r += `<span class="red">${either("very overweight", "obese", "very fat")}.</span> `;
 		}
 	} else if (child.weight > 95) {
 		if (child.hips > 1) {
-			r += `${jsEither("extremely curvy", "extremely plush")}, but ${his} huge hips make the extra weight attractive on ${him}. `;
+			r += `${either("extremely curvy", "extremely plush")}, but ${his} huge hips make the extra weight attractive on ${him}. `;
 		} else if (arcology.FSHedonisticDecadence !== "unset") {
-			r += `${jsEither("extremely curvy", "extremely plush")}. `;
+			r += `${either("extremely curvy", "extremely plush")}. `;
 		} else {
-			r += `<span class="red">${jsEither("carrying a lot of extra weight", "fat", "overweight")}.</span> `;
+			r += `<span class="red">${either("carrying a lot of extra weight", "fat", "overweight")}.</span> `;
 		}
 	} else if (child.weight > 30) {
 		if (child.hips > 1) {
-			r += `${jsEither("quite curvy", "very plush")}, but ${his} motherly hips make the extra weight attractive on ${him}. `;
+			r += `${either("quite curvy", "very plush")}, but ${his} motherly hips make the extra weight attractive on ${him}. `;
 		} else if (arcology.FSHedonisticDecadence !== "unset") {
-			r += `${jsEither("quite curvy", "very plush")}. `;
+			r += `${either("quite curvy", "very plush")}. `;
 		} else {
-			r += `<span class="red">${jsEither("carrying extra weight", "chubby")}.</span> `;
+			r += `<span class="red">${either("carrying extra weight", "chubby")}.</span> `;
 		}
 	} else if (child.weight > 10) {
-		r += `${jsEither("nicely plush", "pleasingly curvy")}. `;
+		r += `${either("nicely plush", "pleasingly curvy")}. `;
 	} else if (child.weight >= -10) {
-		r += `${jsEither("a healthy weight", "an attractive weight")}. `;
+		r += `${either("a healthy weight", "an attractive weight")}. `;
 	} else if (child.weight >= -30) {
-		r += `${jsEither("appealingly skinny", "pleasingly thin")}. `;
+		r += `${either("appealingly skinny", "pleasingly thin")}. `;
 	} else if (child.weight >= -95) {
 		if (child.hips > 1) {
-			r += `${jsEither("quite skinny", "very thin")}, but ${his} wide hips make the gap between ${his} thighs very noticeable. `;
+			r += `${either("quite skinny", "very thin")}, but ${his} wide hips make the gap between ${his} thighs very noticeable. `;
 		} else if (child.hips < -1) {
-			r += `${jsEither("quite skinny", "very thin")}, but ${his} trim hips make ${him} look like a model. `;
+			r += `${either("quite skinny", "very thin")}, but ${his} trim hips make ${him} look like a model. `;
 		} else {
-			r += `<span class="red">${jsEither("rail thin", "too skinny", "underweight")}.</span> `;
+			r += `<span class="red">${either("rail thin", "too skinny", "underweight")}.</span> `;
 		}
 	} else {
-		r += `<span class="red">${jsEither("dangerously skinny", "emaciated")}.</span> `;
+		r += `<span class="red">${either("dangerously skinny", "emaciated")}.</span> `;
 	}
 
 	if (child.hips > 2) {
diff --git a/src/npc/descriptions/accent.js b/src/npc/descriptions/accent.js
index 79bfdc5ad6838865f9d611f9538061496bbbc79e..7472b41337f56cb9903d6a6dcb700db27033c822 100644
--- a/src/npc/descriptions/accent.js
+++ b/src/npc/descriptions/accent.js
@@ -10,7 +10,7 @@ App.Desc.accent = function(slave) {
 	let accent;
 	if (slave.accent !== 0) {
 		if (slave.accent === 1) {
-			accent = jsEither("a beautiful", "a distinctive", "an intriguing", "a light", "a lovely", "a mild", "a pleasant", "a rich", "a slight", "a smooth");
+			accent = either("a beautiful", "a distinctive", "an intriguing", "a light", "a lovely", "a mild", "a pleasant", "a rich", "a slight", "a smooth");
 			r.push(`${He} speaks ${V.language} in ${accent} ${aNational(slave.nationality)}`);
 			if (slave.rules.speech === "accent elimination") {
 				r.push(`accent, which the rules encourage ${him} to suppress.`);
@@ -18,7 +18,7 @@ App.Desc.accent = function(slave) {
 				r.push(`accent.`);
 			}
 		} else if (slave.accent === 2) {
-			accent = jsEither("a broad", "a harsh", "a heavy", "an intense", "a marked", "a noticeable", "a rough", "a significant", "a stressed", "a strong", "a thick");
+			accent = either("a broad", "a harsh", "a heavy", "an intense", "a marked", "a noticeable", "a rough", "a significant", "a stressed", "a strong", "a thick");
 			r.push(`${He} speaks ${V.language} in ${accent} ${aNational(slave.nationality)} accent that can be hard to`);
 			if (slave.rules.speech === "accent elimination") {
 				r.push(`understand, and the rules encourage ${him} to make an effort to suppress it.`);
diff --git a/src/npc/descriptions/butt/anus.js b/src/npc/descriptions/butt/anus.js
index f72ff22152b318e09e96e8ef3de832546173fa1e..15592c9a067db93278996c86a58670724b30c3cb 100644
--- a/src/npc/descriptions/butt/anus.js
+++ b/src/npc/descriptions/butt/anus.js
@@ -20,11 +20,11 @@ App.Desc.anus = function(slave, {market, eventDescription} = {}) {
 	} else {
 		skinDesc = "darker";
 	}
-	let analSkinDesc = jsEither("crinkled", "puckered", "puffy");
+	let analSkinDesc = either("crinkled", "puckered", "puffy");
 	if (slave.anus === 0) {
 		r.push(`${He} is an <span class="lime">anal virgin;</span> ${his} asshole is fresh and tight.`);
 	} else if (slave.anus === 1) {
-		r.push(`${His} ${jsEither("anal opening", "anus", "asshole", "butthole")} is ${jsEither("nice and", "very")} tight,`);
+		r.push(`${His} ${either("anal opening", "anus", "asshole", "butthole")} is ${either("nice and", "very")} tight,`);
 		if (slave.analArea - slave.anus > 3) {
 			r.push(`but it's surrounded by a massive oval of ${analSkinDesc} ${skinDesc} skin that runs from ${his} tailbone all the way down to the`);
 			if (slave.vagina > -1) {
@@ -33,20 +33,20 @@ App.Desc.anus = function(slave, {market, eventDescription} = {}) {
 				r.push(`base of ${his} cock.`);
 			}
 		} else if (slave.analArea - slave.anus > 2) {
-			r.push(`but it's surrounded by an oval of ${analSkinDesc} ${skinDesc} skin that occupies ${his} entire ${jsEither("asscrack", "buttcrack")} ass.`);
+			r.push(`but it's surrounded by an oval of ${analSkinDesc} ${skinDesc} skin that occupies ${his} entire ${either("asscrack", "buttcrack")} ass.`);
 		} else if (slave.analArea - slave.anus > 1) {
 			r.push(`but it's surrounded by a big ring of ${analSkinDesc} ${skinDesc} skin.`);
 		} else if (slave.analArea - slave.anus > 0) {
-			r.push(`and it's surrounded by a cute ${jsEither("pucker", "ring", "rosebud")} of ${skinDesc} skin.`);
+			r.push(`and it's surrounded by a cute ${either("pucker", "ring", "rosebud")} of ${skinDesc} skin.`);
 		} else {
 			r.push(`and the ${skinDesc} skin around it is stretched smooth, since it's been deflowered only recently.`);
 		}
 	} else if (slave.anus === 2) {
-		r.push(`${His} ${jsEither("anal opening", "anus", "asshole", "asspussy", "butthole")} is`);
+		r.push(`${His} ${either("anal opening", "anus", "asshole", "asspussy", "butthole")} is`);
 		if (slave.analArea - slave.anus > 1) {
 			r.push(`only`);
 		}
-		r.push(jsEither("relaxed", "loose", "accommodating"));
+		r.push(either("relaxed", "loose", "accommodating"));
 		if (slave.analArea - slave.anus > 2) {
 			r.push(`but it's surrounded by a massive oval of ${analSkinDesc} ${skinDesc} skin that runs from ${his} tailbone all the way down to the`);
 			if (slave.vagina > -1) {
@@ -55,14 +55,14 @@ App.Desc.anus = function(slave, {market, eventDescription} = {}) {
 				r.push(`base of ${his} cock.`);
 			}
 		} else if (slave.analArea - slave.anus > 1) {
-			r.push(`but it's surrounded by an oval of ${analSkinDesc} ${skinDesc} skin that occupies ${his} entire ${jsEither("asscrack", "buttcrack")}`);
+			r.push(`but it's surrounded by an oval of ${analSkinDesc} ${skinDesc} skin that occupies ${his} entire ${either("asscrack", "buttcrack")}`);
 		} else if (slave.analArea - slave.anus > 0) {
 			r.push(`and it's surrounded by a big ring of ${analSkinDesc} ${skinDesc} skin.`);
 		} else {
 			r.push(`and the ${skinDesc} skin around it is stretched smooth, suggesting it's getting used to being this way.`);
 		}
 	} else if (slave.anus === 3) {
-		r.push(`${His} ${jsEither("anal opening", "anus", "asshole", "asspussy", "butthole")} is a ${jsEither("lewd", "loose", "relaxed", "welcoming")} slit`);
+		r.push(`${His} ${either("anal opening", "anus", "asshole", "asspussy", "butthole")} is a ${either("lewd", "loose", "relaxed", "welcoming")} slit`);
 		if (slave.analArea - slave.anus > 1) {
 			r.push(`and it's surrounded by a massive oval of ${analSkinDesc} ${skinDesc} skin that runs from ${his} tailbone all the way down to the`);
 			if (slave.vagina > -1) {
@@ -71,12 +71,12 @@ App.Desc.anus = function(slave, {market, eventDescription} = {}) {
 				r.push(`base of ${his} cock.`);
 			}
 		} else if (slave.analArea - slave.anus > 0) {
-			r.push(`and it's surrounded by an oval of ${analSkinDesc} ${skinDesc} skin that occupies ${his} entire ${jsEither("asscrack", "buttcrack")}.`);
+			r.push(`and it's surrounded by an oval of ${analSkinDesc} ${skinDesc} skin that occupies ${his} entire ${either("asscrack", "buttcrack")}.`);
 		} else {
 			r.push(`and the ${skinDesc} skin around it is stretched smooth, suggesting ${he}'s getting used to having such a cock-hungry rear fuckhole.`);
 		}
 	} else {
-		r.push(`${His} ${jsEither("anal opening", "anal slit", "anus", "asshole", "asspussy", "butthole")} is a ${jsEither("loose", "open", "permanent", "relaxed")} gape,`);
+		r.push(`${His} ${either("anal opening", "anal slit", "anus", "asshole", "asspussy", "butthole")} is a ${either("loose", "open", "permanent", "relaxed")} gape,`);
 		if (slave.analArea - slave.anus > 0) {
 			r.push(`and it's surrounded by a massive oval of ${skinDesc} skin that runs from ${his} tailbone all the way down to the`);
 			if (slave.vagina > -1) {
diff --git a/src/npc/descriptions/butt/butt.js b/src/npc/descriptions/butt/butt.js
index 488e80366ff579d84b2ade573ef10d54816abecf..f689b0364bf21e18c23a42438f9a3f1511d8a2fa 100644
--- a/src/npc/descriptions/butt/butt.js
+++ b/src/npc/descriptions/butt/butt.js
@@ -1057,30 +1057,30 @@ App.Desc.butt = function(slave, {market, eventDescription} = {}) {
 	if (slave.butt <= 1) {
 		r.push(`flat and`);
 		if (V.arcologies[0].FSSlimnessEnthusiast > 20 && V.arcologies[0].FSHedonisticDecadence === "unset") {
-			r.push(jsEither("attractive", "enticing", "fashionable"));
+			r.push(either("attractive", "enticing", "fashionable"));
 		} else {
-			r.push(jsEither("skinny", "slim", "taut"));
+			r.push(either("skinny", "slim", "taut"));
 		}
 		r.push(`ass,`);
 	} else if (slave.butt <= 2) {
 		if (V.arcologies[0].FSSlimnessEnthusiast > 20 && V.arcologies[0].FSHedonisticDecadence === "unset") {
-			r.push(jsEither("fashionable", "sleek and attractive", "small and enticing"));
+			r.push(either("fashionable", "sleek and attractive", "small and enticing"));
 		} else {
-			r.push(jsEither("rounded, small", "small but rounded", "small, sleek"));
+			r.push(either("rounded, small", "small but rounded", "small, sleek"));
 		}
 		r.push(`rear end,`);
 	} else if (slave.butt <= 3) {
-		r.push(`${jsEither("big and healthy", "curved and plump", "healthy and plump")} derrière,`);
+		r.push(`${either("big and healthy", "curved and plump", "healthy and plump")} derrière,`);
 	} else if (slave.butt <= 4) {
-		r.push(`${jsEither("big bubble", "curvy and enticing", "juicy and large")} butt,`);
+		r.push(`${either("big bubble", "curvy and enticing", "juicy and large")} butt,`);
 	} else if (slave.butt <= 5) {
-		r.push(`${jsEither("huge", "juicy and huge", "massive and undeniable")} rear end,`);
+		r.push(`${either("huge", "juicy and huge", "massive and undeniable")} rear end,`);
 	} else if (slave.butt <= 6) {
-		r.push(`${jsEither("enormous", "truly massive")} posterior,`);
+		r.push(`${either("enormous", "truly massive")} posterior,`);
 	} else if (slave.butt <= 7) {
-		r.push(`${jsEither("gigantic", "titanic")} ass,`);
+		r.push(`${either("gigantic", "titanic")} ass,`);
 	} else if (slave.butt <= 10) {
-		r.push(`${jsEither("gigantic", "titanic")} ass,`);
+		r.push(`${either("gigantic", "titanic")} ass,`);
 		if (slave.assignment === "work in the dairy" && V.dairyStimulatorsSetting > 1) {
 			r.push(`so big it jiggles as the machine rapes ${his} asshole,`);
 		} else if (!canWalk(slave)) {
@@ -1089,7 +1089,7 @@ App.Desc.butt = function(slave, {market, eventDescription} = {}) {
 			r.push(`so big it jiggles as ${he} walks,`);
 		}
 	} else if (slave.butt <= 14) {
-		r.push(`${jsEither("cushion-like", "hall-crowding")} ass,`);
+		r.push(`${either("cushion-like", "hall-crowding")} ass,`);
 		if (slave.assignment === "work in the dairy" && V.dairyStimulatorsSetting > 1) {
 			r.push(`so big it massively jiggles as the machine rapes ${his} asshole,`);
 		} else if (!canWalk(slave)) {
@@ -1098,7 +1098,7 @@ App.Desc.butt = function(slave, {market, eventDescription} = {}) {
 			r.push(`so big it jiggles nonstop as ${he} walks,`);
 		}
 	} else {
-		r.push(`${jsEither("bean bag sized", "room-crowding")} ass,`);
+		r.push(`${either("bean bag sized", "room-crowding")} ass,`);
 		if (slave.assignment === "work in the dairy" && V.dairyStimulatorsSetting > 1) {
 			r.push(`so massive it jiggles endlessly as the machine rapes ${his} asshole,`);
 		} else if (!canWalk(slave)) {
diff --git a/src/npc/descriptions/ears.js b/src/npc/descriptions/ears.js
index 93ae21425d4f6fb9931534428f753a76165713fe..2928dd696aeb02db122f3b8b487dd9d035162cdb 100644
--- a/src/npc/descriptions/ears.js
+++ b/src/npc/descriptions/ears.js
@@ -33,7 +33,7 @@ App.Desc.ears = function(slave) {
 	} else if (slave.earShape === "robot") {
 		r.push(`${He} has high tech cyber-ears that could be mistaken for headphones.`);// not yet implemented
 	} else if (slave.earShape === "pointy") {
-		r.push(`${His} small, ${jsEither("elfin", "leaf-shaped", "pointed")} ears are quite cute and give ${him} an exotic appearance.`);
+		r.push(`${His} small, ${either("elfin", "leaf-shaped", "pointed")} ears are quite cute and give ${him} an exotic appearance.`);
 	} else if (slave.earShape === "elven") {
 		r.push(`${He} has long, thin elven ears that ${jsEither(`tend to droop when ${he} is relaxed or sad`, `tend to waggle up and down when ${he} is excited`, `twitch at the slightest touch`)}.`);
 	} else if (slave.earShape === "ushi") {
diff --git a/src/pregmod/FCTV/FCTVshows.js b/src/pregmod/FCTV/FCTVshows.js
index b8299692435da0f99ea55a35ef6b0c4f53470aef..be804411e536f28b86d63bb923dd9dcc9a9a2673 100644
--- a/src/pregmod/FCTV/FCTVshows.js
+++ b/src/pregmod/FCTV/FCTVshows.js
@@ -129,9 +129,9 @@ App.Data.FCTV.actors = {
 		slave.attrKnown = 1;
 		slave.fetishKnown = 1;
 		slave.lips = jsRandom(20, 50);
-		slave.fetish = jsEither("cumslut", "cumslut", "humiliation", "pregnancy", "pregnancy", "pregnancy", "submissive");
-		slave.behavioralQuirk = jsEither("advocate", "funny", "insecure", "none", "none");
-		slave.sexualQuirk = jsEither("caring", "none", "romantic");
+		slave.fetish = either("cumslut", "cumslut", "humiliation", "pregnancy", "pregnancy", "pregnancy", "submissive");
+		slave.behavioralQuirk = either("advocate", "funny", "insecure", "none", "none");
+		slave.sexualQuirk = either("caring", "none", "romantic");
 		slave.fetishStrength = jsRandom(70, 100);
 		slave.sexualFlaw = "none";
 		slave.behavioralFlaw = "none";
@@ -179,7 +179,7 @@ App.Data.FCTV.actors = {
 		slave.sexualFlaw = "breeder";
 		slave.behavioralFlaw = "none";
 		slave.behavioralQuirk = "none";
-		slave.sexualQuirk = jsEither("caring", "caring", "romantic");
+		slave.sexualQuirk = either("caring", "caring", "romantic");
 		slave.intelligence = jsRandom(-15, 80);
 		slave.intelligenceImplant = 15;
 		if (V.seeHyperPreg === 0) {
@@ -222,7 +222,7 @@ App.Data.FCTV.actors = {
 		slave.attrKnown = 1;
 		slave.fetishKnown = 1;
 		slave.sexualQuirk = "none";
-		slave.fetish = jsEither("cumslut", "humiliation", "pregnancy", "pregnancy", "submissive");
+		slave.fetish = either("cumslut", "humiliation", "pregnancy", "pregnancy", "submissive");
 		slave.fetishStrength = jsRandom(70, 100);
 		slave.sexualFlaw = "none";
 		slave.behavioralFlaw = "none";
@@ -260,7 +260,7 @@ App.Data.FCTV.actors = {
 		slave.attrXX = jsRandom(40, 85);
 		slave.attrKnown = 1;
 		slave.fetishKnown = 1;
-		slave.fetish = jsEither("buttslut", "buttslut", "cumslut", "cumslut", "humiliation", "pregnancy", "pregnancy", "submissive");
+		slave.fetish = either("buttslut", "buttslut", "cumslut", "cumslut", "humiliation", "pregnancy", "pregnancy", "submissive");
 		slave.fetishStrength = jsRandom(70, 100);
 		slave.sexualFlaw = "none";
 		slave.behavioralFlaw = "none";
@@ -295,8 +295,8 @@ App.Data.FCTV.actors = {
 		slave.preg = 0;
 		slave.lips = jsRandom(25, 50);
 		slave.vaginaLube = 2;
-		slave.sexualFlaw = jsEither("hates anal", "hates oral", "hates penetration", "idealistic");
-		slave.behavioralFlaw = jsEither("arrogant", "bitchy", "hates men");
+		slave.sexualFlaw = either("hates anal", "hates oral", "hates penetration", "idealistic");
+		slave.behavioralFlaw = either("arrogant", "bitchy", "hates men");
 		slave.energy = 10;
 		slave.fetish = "none";
 		slave.clit = jsEither(3, 3, 4, 4, 5, 8, 10);