diff --git a/js/003-data/miscData.js b/js/003-data/miscData.js
index a0a906213fdd4bb2278d7f912445f137d778ccbd..11a4116e3d8df59fa7a7444e0e59b9a122549610 100644
--- a/js/003-data/miscData.js
+++ b/js/003-data/miscData.js
@@ -261,9 +261,6 @@ App.Data.misc = {
 	filterRaces: ["Amerindian", "Asian", "Black", "Indo-Aryan", "Latina", "Malay", "Middle Eastern", "Mixed Race", "Pacific Islander", "Semitic", "Southern European", "White"],
 	filterRacesLowercase: ["amerindian", "asian", "black", "indo-aryan", "latina", "malay", "middle eastern", "mixed race", "pacific islander", "semitic", "southern european", "white"],
 	filterRegions: ["Africa", "Asia", "Australia", "Europe", "Middle East", "North America", "South America"],
-	naturalSkins: ["pure white", "ivory", "white", "extremely pale", "very pale", "pale", "extremely fair", "very fair", "fair", "light", "light olive", "tan", "olive", "bronze", "dark olive", "dark", "light beige", "beige", "dark beige", "light brown", "brown", "dark brown", "black", "ebony", "pure black"],
-	dyedSkins: ["camouflage patterned", "dyed blue", "dyed gray", "dyed green", "dyed pink", "dyed red", "tiger striped"],
-	naturalNippleColors: ["black", "brown", "dark brown", "ebony", "ivory", "light brown", "pale pink", "pink"],
 
 	/* START Custom Nationalities region filter */
 	/* Not currently weighted, but will accept weights */
diff --git a/js/003-data/slaveMods.js b/js/003-data/slaveMods.js
index 4f5deee28451931127bc72def9764c48bea0f140..752667ac7a317042ae7a67a39f50937cab505ae7 100644
--- a/js/003-data/slaveMods.js
+++ b/js/003-data/slaveMods.js
@@ -438,3 +438,12 @@ App.Medicine.Modification.eyeShape = [
 	{value: "vacant"},
 	{value: "wide-eyed"}
 ];
+
+App.Medicine.Modification.naturalSkins = ["pure white", "ivory", "white", "extremely pale", "very pale", "pale", "extremely fair", "very fair", "fair", "light", "light olive", "tan", "olive", "bronze", "dark olive", "dark", "light beige", "beige", "dark beige", "light brown", "brown", "dark brown", "black", "ebony", "pure black"];
+App.Medicine.Modification.dyedSkins = ["camouflage patterned", "dyed blue", "dyed gray", "dyed green", "dyed pink", "dyed red", "tiger striped"];
+App.Medicine.Modification.naturalNippleColors = ["black", "brown", "dark brown", "ebony", "ivory", "light brown", "pale pink", "pink"];
+App.Medicine.Modification.eyebrowStyles = new Set(["shaved", "straight", "rounded", "natural", "slanted inwards", "slanted outwards", "high-arched", "elongated", "shortened", "curved"]);
+App.Medicine.Modification.eyebrowFullness = new Set(["pencil-thin", "thin", "threaded", "natural", "tapered", "thick", "bushy"]);
+App.Medicine.Modification.pubicStyles = new Set(["waxed", "in a strip", "neat", "bushy", "bushy in the front and neat in the rear", "very bushy"]);
+App.Medicine.Modification.armpitStyles = new Set(["waxed", "shaved", "neat", "bushy"]);
+App.Medicine.Modification.hornColor = new Set(["golden", "copper", "red", "deep red", "green", "pink", "dark brown", "brown", "burgundy", "jet black", "black", "grey", "silver", "white", "blue-violet", "purple", "dark orchid", "sea green", "green-yellow", "dark blue", "blazing red", "neon green", "neon blue", "neon pink"]);
diff --git a/src/events/intro/pcAppearance.js b/src/events/intro/pcAppearance.js
index a00de6104d564930d3944f1e488a332772d09495..ef4b7e88ebd0cc74a064d46e506487c69e6a601b 100644
--- a/src/events/intro/pcAppearance.js
+++ b/src/events/intro/pcAppearance.js
@@ -15,11 +15,11 @@ App.UI.Player.appearance = function(options) {
 	}
 
 	options.addOption("Your skin tone is", "skin", V.PC).showTextBox()
-		.addValueList(makeAList(setup.naturalSkins));
+		.addValueList(makeAList(App.Medicine.Modification.naturalSkins));
 
 	if (V.cheatMode) {
 		options.addOption("Your genetic skin tone is", "origSkin", V.PC).showTextBox()
-			.addValueList(makeAList(setup.naturalSkins));
+			.addValueList(makeAList(App.Medicine.Modification.naturalSkins));
 	}
 
 	options.addOption("Your body", "markings", V.PC)
diff --git a/src/facilities/bodyModification/bodyModification.js b/src/facilities/bodyModification/bodyModification.js
index 682f9b9c50cfab76016516595779bca380b4291c..93e3be757f1c1fa864bbd37018aa0e28c5c1aa97 100644
--- a/src/facilities/bodyModification/bodyModification.js
+++ b/src/facilities/bodyModification/bodyModification.js
@@ -41,7 +41,7 @@ App.UI.bodyModification = function(slave, cheat = false) {
 	function intro() {
 		const el = new DocumentFragment();
 		App.UI.DOM.appendNewElement("h1", el, "Body Modification Studio");
-		App.UI.DOM.appendNewElement("div", el, `${SlaveFullName(slave)} is lying strapped down on the table in your body modification studio. ${He} is entirely at your mercy.`);
+		App.UI.DOM.appendNewElement("div", el, `${SlaveFullName(slave)} is lying strapped down on the table in your body modification studio. ${He} is entirely at your mercy.`, "scene-intro");
 		return el;
 	}
 
diff --git a/src/facilities/salon/salon.tw b/src/facilities/salon/salon.tw
new file mode 100644
index 0000000000000000000000000000000000000000..07bb6f37df73148445f546bf7c0e95cc38fb42a3
--- /dev/null
+++ b/src/facilities/salon/salon.tw
@@ -0,0 +1,5 @@
+:: Salon [nobr jump-from-safe]
+
+<<set $nextButton = "Confirm changes", $nextLink = "Slave Interact", $encyclopedia = "The Auto Salon">>
+
+<<includeDOM App.UI.salon(getSlave($AS))>>
\ No newline at end of file
diff --git a/src/facilities/salon/salonPassage.js b/src/facilities/salon/salonPassage.js
new file mode 100644
index 0000000000000000000000000000000000000000..bebe975fa5e5904c660702a33beb88604bbc0535
--- /dev/null
+++ b/src/facilities/salon/salonPassage.js
@@ -0,0 +1,366 @@
+/**
+ * UI for the Salon.  Refreshes without refreshing the passage.
+ * @param {App.Entity.SlaveState} slave
+ * @param {boolean} cheat if true, will hide scenes and keep the player from being billed for changes.
+ */
+App.UI.salon = function(slave, cheat = false) {
+	const container = document.createElement("span");
+	container.id = "salon";
+	const {
+		He, His,
+		he, his, him
+	} = getPronouns(slave);
+	Enunciate(slave);
+
+	container.append(createPage());
+	return container;
+
+	function createPage() {
+		const el = new DocumentFragment();
+		if (!cheat) {
+			if (V.seeImages > 0) {
+				App.Events.drawEventArt(el, slave);
+			}
+			el.append(intro());
+		}
+		el.append(eyewear());
+		el.append(ears());
+		if (slave.horn !== "none") {
+			el.append(horns());
+		}
+		el.append(hair());
+		el.append(makeup());
+		el.append(skin());
+		el.append(bodyHair());
+		return el;
+	}
+
+	function intro() {
+		const el = new DocumentFragment();
+		App.UI.DOM.appendNewElement("h1", el, "The Auto Salon");
+		App.UI.DOM.appendNewElement("div", el, `${SlaveFullName(slave)} is seated in the auto salon. ${He} is awaiting your artistic pleasure.`, "scene-intro");
+		return el;
+	}
+
+	function eyewear() {
+		const el = new DocumentFragment();
+		App.UI.DOM.appendNewElement("h3", el, "Eyewear");
+		const r = [];
+		const options = new App.UI.OptionsGroup();
+
+		if (getBestVision(slave) === 0) {
+			r.push(`${He} is blind`);
+		} else if (anyVisionEquals(slave, 1)) {
+			r.push(`${He} is nearsighted`);
+		} else {
+			r.push(`${His} vision is normal`);
+		}
+
+		const option = options.addOption(r.join(" "), "eyewear", slave)
+			.addValue("None", "none")
+			.addValue("Cosmetic glasses", "glasses", billMod);
+		if (getBestVision(slave) !== 0 && anyVisionEquals(slave, 1)) {
+			option.addValue("Corrective glasses", "corrective glasses", billMod);
+			option.addValue("Corrective glasses", "corrective glasses", billMod);
+		} else {
+			option.addValue("Blurring glasses", "blurring glasses", billMod);
+			option.addValue("Blurring glasses", "blurring glasses", billMod);
+			option.addComment("Blurring options are annoying and impede performance on some assignments.");
+		}
+		el.append(options.render());
+
+		el.append(App.Medicine.Modification.eyeSelector(slave, cheat));
+		return el;
+	}
+
+	function ears() {
+		const el = new DocumentFragment();
+		App.UI.DOM.appendNewElement("h3", el, "Ears");
+		const r = [];
+		const options = new App.UI.OptionsGroup();
+
+		if (slave.earImplant === 1) {
+			r.push(`${He} has artificial inner ear implants`);
+		} else if (slave.hears < -1) {
+			r.push(`${He} is deaf`);
+		} else if (slave.hears > -1) {
+			r.push(`${His} hearing is normal`);
+		} else {
+			r.push(`${He} is hearing impaired`);
+		}
+		const option = options.addOption(r.join(" "), "earwear", slave)
+			.addValue("None", "none");
+		// Hard of hearing
+		if (slave.hears === -1 && slave.earImplant !== 1) {
+			option.addValue("Hearing aids", "hearing aids", billMod);
+		}
+		// Is not deaf
+		if (slave.hears > -2 || slave.earImplant === 1) {
+			option.addValue("Muffling ear plugs", "muffling ear plugs", billMod);
+			option.addValue("Deafening ear plugs", "deafening ear plugs", billMod);
+		}
+		el.append(options.render());
+
+		el.append(App.Medicine.Salon.ears(slave));
+
+		return el;
+	}
+
+	function horns() {
+		const el = new DocumentFragment();
+		App.UI.DOM.appendNewElement("h3", el, "Horns");
+		const options = new App.UI.OptionsGroup();
+
+		const option = options.addOption(`Set the color of ${his} ${slave.horn}`, "hornColor", slave);
+		for (const hornColor of App.Medicine.Modification.hornColor) {
+			option.addValue(capFirstChar(hornColor), hornColor, billMod);
+		}
+
+		el.append(options.render());
+
+		return el;
+	}
+
+	function makeup() {
+		const el = new DocumentFragment();
+		App.UI.DOM.appendNewElement("h3", el, "Makeup");
+		const options = new App.UI.OptionsGroup();
+
+		options.addOption(App.Desc.makeup(slave), "makeup", slave)
+			.addValue("Nice", 1, billMod)
+			.addValue("Gorgeous", 2, billMod)
+			.addValue("Slutty", 4, billMod)
+			.addValue("Color-coordinate with hair", 3, billMod);
+
+		options.addOption("", "makeup", slave)
+			.addValue("Neon", 5, billMod)
+			.addValue("Neon, color-coordinate with hair", 6, billMod);
+
+		options.addOption("", "makeup", slave)
+			.addValue("Metallic", 7, billMod)
+			.addValue("Metallic, color-coordinate with hair", 8, billMod);
+
+		el.append(options.render());
+
+		return el;
+	}
+
+	function hair() {
+		const el = new DocumentFragment();
+		App.UI.DOM.appendNewElement("h3", el, "Hair");
+
+		el.append(App.Medicine.Salon.hair(slave, {cheat: cheat}));
+		return el;
+	}
+
+	function skin() {
+		const el = new DocumentFragment();
+		let r;
+		App.UI.DOM.appendNewElement("h3", el, "Skin");
+		const options = new App.UI.OptionsGroup();
+		let comment = [];
+
+		let option = options.addOption(`${His} skin is ${slave.skin}.`, "skin", slave);
+		if (App.Medicine.Modification.dyedSkins.includes(slave.skin)) {
+			option.addValue("Remove coloring", slave.origSkin, billMod);
+		} else if (((slave.skin === "sun tanned") || (slave.skin === "spray tanned"))) {
+			option.addValue("Remove tanning", slave.origSkin, billMod);
+		}
+
+		if (!App.Medicine.Modification.dyedSkins.includes(slave.skin)) {
+			if (slave.skin === "sun tanned" || slave.skin === "spray tanned") {
+				comment.push(`${His} skin tanning must be removed before any advanced procedure to change ${his} skin color.`);
+			} else {
+				if (skinToneLevel(slave.skin) > 1) {
+					option.addValue("Bleach", changeSkinTone(slave.skin, -2), billMod);
+				}
+				if (skinToneLevel(slave.skin) > 8) {
+					option.addValue("Lighten", changeSkinTone(slave.skin, -1), billMod);
+				}
+				if (skinToneLevel(slave.skin) < 18) {
+					option.addValue("Darken", changeSkinTone(slave.skin, 1), billMod);
+				}
+				if (skinToneLevel(slave.skin) < 25) {
+					option.addValue("Blacken", changeSkinTone(slave.skin, 2), billMod);
+				}
+			}
+			if (slave.skin !== "sun tanned") {
+				if (skinToneLevel(slave.skin) < 6) {
+					comment.push(`${His} skin is so light in color that any attempt at natural tanning is more likely to damage ${his} skin.`);
+				} else if ((skinToneLevel(slave.skin) > 20)) {
+					comment.push(`${His} skin is so dark in color that any attempt at natural tanning is not likely to appear on ${his} skin.`);
+				} else {
+					option.addValue("Sun tan", "sun tanned", billMod);
+				}
+			}
+			if (slave.skin !== "spray tanned") {
+				option.addValue("Spray tan", "sun tanned", billMod);
+			}
+			option.addComment(comment.join(" "));
+		}
+
+		option = options.addOption(`Dye or paint`, "skin", slave);
+		for (const dye of App.Medicine.Modification.dyedSkins) {
+			option.addValue(capFirstChar(dye), dye, billMod);
+		}
+		option.pulldown();
+
+		if (slave.markings === "beauty mark") {
+			r = [];
+			r.push(`${He} has a prominent mole on ${his} face, which`);
+			if (slave.face > 40) {
+				r.push(`qualifies as a beauty mark and enhances ${his} attractiveness due to ${his} facial beauty.`);
+			} else if (slave.face < -10) {
+				r.push(`makes ${him} even less attractive.`);
+			} else {
+				r.push(`qualifies as a beauty mark since ${he}'s pretty, having no significant impact on ${his} beauty.`);
+			}
+			options.addOption(r.join(" "), "markings", slave)
+				.addValue("Remove it", "none", billMod);
+		}
+		if (slave.markings === "birthmark") {
+			r = [];
+			r.push(`${He} has a large birthmark, which`);
+			if (slave.prestige > 0 || slave.porn.prestige > 1) {
+				r.push(`enhances ${his} attractiveness due to ${his} prestige.`);
+			} else {
+				r.push(`detracts from ${his} attractiveness.`);
+			}
+			options.addOption(r.join(" "), "markings", slave)
+				.addValue("Bleach it", "none", billMod);
+		}
+
+		el.append(options.render());
+
+		return el;
+	}
+
+	function bodyHair() {
+		const el = new DocumentFragment();
+		const options = new App.UI.OptionsGroup();
+		let option;
+		let r = [];
+		App.UI.DOM.appendNewElement("h3", el, "Body hair");
+
+		// Eyebrows
+		if (slave.eyebrowHStyle !== "bald") {
+			// Describe and change color
+			r.push(`${His} eyebrows`);
+			if (slave.eyebrowHStyle === "shaved") {
+				r.push(`would be ${slave.eyebrowHColor} if present.`);
+			} else {
+				r.push(`are ${slave.eyebrowHColor}.`);
+			}
+
+			option = options.addOption(r.join(" "), "eyebrowHColor", slave);
+			if (slave.eyebrowHColor !== slave.hColor) {
+				option.addValue("Match the hair", slave.hColor);
+			}
+			option.addValueList(makeAList(App.Medicine.Modification.Color.Primary.map(color => color.value)));
+			option.addCallbackToEach(billMod);
+			option.pulldown();
+
+			// Style
+			option = options.addOption(`Style ${his} eyebrow hair`, "eyebrowHStyle", slave);
+			for (const fullness of App.Medicine.Modification.eyebrowStyles) {
+				option.addValue(capFirstChar(fullness), fullness, billMod);
+			}
+			option.pulldown();
+
+			// Fullness
+			option = options.addOption(`Shape ${his} eyebrow hair`, "eyebrowFullness", slave);
+			for (const fullness of App.Medicine.Modification.eyebrowFullness) {
+				option.addValue(capFirstChar(fullness), fullness, billMod);
+			}
+			option.pulldown();
+		} else {
+			options.addComment(`${His} eyebrows are completely hairless.`);
+		}
+
+		// Pubic hair
+		const _pubertyAge = Math.min(slave.pubertyAgeXX, slave.pubertyAgeXY);
+		r = [];
+		const hasPubes = (slave.pubicHStyle !== "bald" && slave.pubicHStyle !== "hairless" && slave.physicalAge >= _pubertyAge - 1);
+		if (hasPubes) {
+			r.push(`${His}`);
+			if (slave.physicalAge < _pubertyAge) {
+				r.push(`wispy pubic hair, which is just starting to grow in,`);
+			} else if (slave.pubicHStyle === "in a strip") {
+				r.push(`pubic hair, which is shaved into a strip,`);
+			} else {
+				r.push(`${slave.pubicHStyle} pubic hair`);
+			}
+			if (slave.pubicHStyle === "waxed") {
+				r.push(`would be ${slave.pubicHColor} if present.`);
+			} else {
+				r.push(`is ${slave.pubicHColor}.`);
+			}
+		} else {
+			r.push(`${His} groin is completely hairless.`);
+		}
+		option = options.addOption(r.join(" "), "pubicHColor", slave);
+		if (hasPubes) {
+			if (slave.pubicHColor !== slave.hColor) {
+				option.addValue("Match the curtains", slave.pubicHColor);
+			}
+			option.addValueList(makeAList(App.Medicine.Modification.Color.Primary.map(color => color.value)))
+				.addCallbackToEach(billMod)
+				.pulldown();
+
+			// Style
+			option = options.addOption(`Style ${his} pubic hair`, "pubicHStyle", slave);
+			for (const fullness of App.Medicine.Modification.pubicStyles) {
+				option.addValue(capFirstChar(fullness), fullness, billMod);
+			}
+			option.pulldown();
+		}
+
+		// Armpit hair
+		r = [];
+		const hasPitHair = (slave.underArmHStyle !== "bald" && slave.underArmHStyle !== "hairless" && slave.physicalAge >= _pubertyAge - 1);
+		if (hasPitHair) {
+			r.push(`${His}`);
+			if (slave.physicalAge < _pubertyAge) {
+				r.push(`wispy underarm hair`);
+			} else {
+				r.push(`${slave.underArmHStyle} underarm hair`);
+			}
+			if (slave.underArmHStyle === "waxed") {
+				r.push(`would be ${slave.underArmHColor} if present.`);
+			} else {
+				r.push(`is ${slave.underArmHColor}.`);
+			}
+		} else {
+			r.push(`${His} underarms are completely hairless.`);
+		}
+		option = options.addOption(r.join(" "), "underArmHColor", slave);
+		if (hasPitHair) {
+			if (slave.underArmHColor !== slave.hColor) {
+				option.addValue("Match the hair", slave.hColor);
+			}
+			option.addValueList(makeAList(App.Medicine.Modification.Color.Primary.map(color => color.value)))
+				.addCallbackToEach(billMod)
+				.pulldown();
+
+			// Style
+			option = options.addOption(`Style ${his} armpit hair`, "underArmHStyle", slave);
+			for (const fullness of App.Medicine.Modification.armpitStyles) {
+				option.addValue(capFirstChar(fullness), fullness, billMod);
+			}
+			option.pulldown();
+		}
+
+		el.append(options.render());
+		return el;
+	}
+
+	function billMod() {
+		if (!cheat) {
+			cashX(forceNeg(V.modCost), "slaveMod", slave);
+		}
+	}
+
+	function makeAList(iterable) {
+		return Array.from(iterable, (k => [capFirstChar(k), k]));
+	}
+};
diff --git a/src/gui/options/options.js b/src/gui/options/options.js
index a8aafbcd3f844fc3df238d83117f9f22402ad0bf..c9d5d2dbc27b08e8839589b5516f6e8ccd074385 100644
--- a/src/gui/options/options.js
+++ b/src/gui/options/options.js
@@ -65,6 +65,17 @@ App.UI.OptionsGroup = (function() {
 			return this;
 		}
 
+		/**
+		 * @param {Map} values
+		 * @returns {Option}
+		 */
+		addValueMap(values) {
+			for (const [key, value] of values) {
+				this.addValue(key, value);
+			}
+			return this;
+		}
+
 		/**
 		 * @param {*} value
 		 * @param {number} compareValue
@@ -144,6 +155,14 @@ App.UI.OptionsGroup = (function() {
 			return this;
 		}
 
+		/**
+		 * @param {Function} callback gets executed on every button click. Selected value is given as argument.
+		 */
+		addCallbackToEach(callback) {
+			this.valuePairs.forEach(pair => pair.callback = callback);
+			return this;
+		}
+
 		/**
 		 * Mark option as on to style differently.
 		 * @returns {Option}
@@ -247,6 +266,7 @@ App.UI.OptionsGroup = (function() {
 					buttonGroup.append(button);
 				}
 			} else {
+				let matchFound = false;
 				let select = document.createElement("select");
 				select.classList.add("rajs-list");
 
@@ -256,9 +276,13 @@ App.UI.OptionsGroup = (function() {
 					el.value = value.value;
 					if (this.object[this.property] === value.value) {
 						el.selected = true;
+						matchFound = true;
 					}
 					select.appendChild(el);
 				}
+				if (!matchFound) {
+					select.selectedIndex = -1;
+				}
 				select.onchange = () => {
 					const O = select.options[select.selectedIndex];
 					if (isNaN(Number(O.value))) {
diff --git a/src/js/rulesAssistantOptions.js b/src/js/rulesAssistantOptions.js
index 03ce426239d71eb0f92e498c642749506d27e6be..ccc8b24aa8fafc3d015748080a818e4239f2212b 100644
--- a/src/js/rulesAssistantOptions.js
+++ b/src/js/rulesAssistantOptions.js
@@ -3029,32 +3029,7 @@ globalThis.rulesAssistantOptions = (function() {
 
 	class HornColorList extends ListSelector {
 		constructor() {
-			const pairs = [
-				["golden"],
-				["copper"],
-				["red"],
-				["deep red"],
-				["green"],
-				["pink"],
-				["dark brown"],
-				["brown"],
-				["burgundy"],
-				["jet black"],
-				["black"],
-				["grey"],
-				["silver"],
-				["white"],
-				["blue-violet"],
-				["purple"],
-				["dark orchid"],
-				["sea green"],
-				["green-yellow"],
-				["dark blue"],
-				["blazing red"],
-				["neon green"],
-				["neon blue"],
-				["neon pink"]
-			];
+			const pairs = Array.from(App.Medicine.Modification.hornColor, color => [color]);
 			super("Horn color", pairs);
 			this.setValue(current_rule.set.hornColor);
 			this.onchange = (value) => current_rule.set.hornColor = value;
@@ -3081,18 +3056,7 @@ globalThis.rulesAssistantOptions = (function() {
 
 	class EyebrowStyleList extends ListSelector {
 		constructor() {
-			const pairs = [
-				["shaved"],
-				["straight"],
-				["rounded"],
-				["natural"],
-				["slanted inwards"],
-				["slanted outwards"],
-				["high-arched"],
-				["elongated"],
-				["shortened"],
-				["curved"]
-			];
+			const pairs = Array.from(App.Medicine.Modification.eyebrowStyles, style => [style]);
 			super("Eyebrow style", pairs);
 			this.setValue(current_rule.set.eyebrowHStyle);
 			this.onchange = (value) => current_rule.set.eyebrowHStyle = value;
@@ -3101,15 +3065,7 @@ globalThis.rulesAssistantOptions = (function() {
 
 	class EyebrowFullnessList extends ListSelector {
 		constructor() {
-			const pairs = [
-				["pencil-thin"],
-				["thin"],
-				["threaded"],
-				["natural"],
-				["tapered"],
-				["thick"],
-				["bushy"]
-			];
+			const pairs = Array.from(App.Medicine.Modification.eyebrowFullness, fullness => [fullness]);
 			super("Eyebrow fullness", pairs);
 			this.setValue(current_rule.set.eyebrowFullness);
 			this.onchange = (value) => current_rule.set.eyebrowFullness = value;
@@ -3140,14 +3096,7 @@ globalThis.rulesAssistantOptions = (function() {
 
 	class PubicHairStyleList extends ListSelector {
 		constructor() {
-			const pairs = [
-				["waxed"],
-				["in a strip"],
-				["neat"],
-				["bushy"],
-				["bushy in the front and neat in the rear"],
-				["very bushy"]
-			];
+			const pairs = Array.from(App.Medicine.Modification.pubicStyles, style => [style]);
 			super("Pubic hairstyle", pairs);
 			this.setValue(current_rule.set.pubicHStyle);
 			this.onchange = (value) => current_rule.set.pubicHStyle = value;
@@ -3165,12 +3114,7 @@ globalThis.rulesAssistantOptions = (function() {
 
 	class ArmpitHairStyleList extends ListSelector {
 		constructor() {
-			const pairs = [
-				["waxed"],
-				["shaved"],
-				["neat"],
-				["bushy"]
-			];
+			const pairs = Array.from(App.Medicine.Modification.armpitStyles, style => [style]);
 			super("Underarm hair style", pairs);
 			this.setValue(current_rule.set.underArmHStyle);
 			this.onchange = (value) => current_rule.set.underArmHStyle = value;
@@ -4022,13 +3966,7 @@ globalThis.rulesAssistantOptions = (function() {
 				["pure black"],
 				["sun tanned"],
 				["spray tanned"],
-				["dyed red"],
-				["dyed green"],
-				["dyed blue"],
-				["dyed pink"],
-				["dyed gray"],
-				["tiger striped"],
-				["camouflage patterned"],
+				...App.Medicine.Modification.dyedSkins
 			];
 			super("Dye or tan skin", items);
 			this.setValue(current_rule.set.skinColor);
diff --git a/src/js/salon.js b/src/js/salon.js
index 9a0e8ccdfd578613e480eb56978c00c947dab257..04e21f62dd86d985cdc01560d2e7a31783211afb 100644
--- a/src/js/salon.js
+++ b/src/js/salon.js
@@ -1,8 +1,9 @@
 /**
  * @param {FC.HumanState} entity
+ * @param {Boolean} cheat
  * @returns {HTMLDivElement}
  */
-App.Medicine.Modification.eyeSelector = function(entity) {
+App.Medicine.Modification.eyeSelector = function(entity, cheat = false) {
 	const {He, him, his} = getPronouns(entity);
 
 	const player = entity === V.PC;
@@ -166,7 +167,9 @@ App.Medicine.Modification.eyeSelector = function(entity) {
 			selectedPupil === "none" ? "" : selectedPupil,
 			selectedSclera === "none" ? "" : selectedSclera,
 			selectedSide);
-		cashX(forceNeg(V.modCost), "slaveMod", entity);
+		if (!cheat) {
+			cashX(forceNeg(V.modCost), "slaveMod", entity);
+		}
 
 		App.UI.reload();
 	}
@@ -226,70 +229,79 @@ App.Medicine.Modification.eyeSelector = function(entity) {
  * @param {object} params
  * @param {number|string} [params.primaryEarColor=0]
  * @param {string} [params.secondaryEarColor=""]
- * @returns {JQuery<HTMLElement>}
+ * @param {Boolean} [params.cheat=false]
+ * @returns {HTMLElement}
  */
-App.Medicine.Salon.ears = function(slave, {primaryEarColor = 0, secondaryEarColor = ""} = {}) {
-	const frag = new DocumentFragment();
+App.Medicine.Salon.ears = function(slave, {primaryEarColor = 0, secondaryEarColor = "", cheat = false} = {}) {
 	let updatePrimary = (newVal) => { primaryEarColor = newVal; apply(); };
 	let updateSecondary = (newVal) => { secondaryEarColor = newVal; apply(); };
+	const container = document.createElement("div");
+	container.id = "salon-ears";
+	container.append(content());
+	return container;
 
-	if (slave.earT !== "none" && slave.earTColor !== "hairless") {
-		const {His, his} = getPronouns(slave);
-		let div;
-		let p;
-		frag.append(`${His} fluffy ears are ${slave.earTColor}.`);
-
-		div = document.createElement("div");
-		div.classList.add("choices");
-		if (slave.earTColor !== slave.hColor) {
-			div.append(
-				App.UI.DOM.link(
-					"Match current hair",
-					() => {
-						slave.earTColor = slave.hColor;
-						App.Art.refreshSlaveArt(slave, 3, "art-frame");
-						apply();
-					}
-				)
-			);
-			div.append(" or ");
-			App.UI.DOM.appendNewElement("span", div, "choose a new one: ", "note");
-		} else {
-			App.UI.DOM.appendNewElement("span", div, `Choose a dye color before dyeing ${his} ears:`, "note");
-		}
-		frag.append(div);
-
-		div = document.createElement("div");
-		div.classList.add("choices");
-		div.append(`Colors:`);
-		div.append(createList(App.Medicine.Modification.Color.Primary, updatePrimary));
-		frag.append(div);
-
-		div = document.createElement("div");
-		div.classList.add("choices");
-		div.append(`Highlights:`);
-		div.append(createList(App.Medicine.Modification.Color.Secondary, updateSecondary));
-		frag.append(div);
-
-		if (primaryEarColor !== 0) {
-			p = document.createElement("p");
-			p.classList.add("choices");
-			p.append(
-				App.UI.DOM.link(
-					`Color ${his} ears`,
-					() => {
-						slave.earTColor = (primaryEarColor + secondaryEarColor);
-						App.Art.refreshSlaveArt(slave, 3, "art-frame");
-						cashX(forceNeg(V.modCost), "slaveMod", slave);
-						App.Medicine.Salon.ears(slave); // discard selections after locking them in.
-					}
-				)
-			);
-			p.append(` ${primaryEarColor}${secondaryEarColor} now?`);
-			frag.append(p);
+	function content() {
+		const frag = new DocumentFragment();
+		if (slave.earT !== "none" && slave.earTColor !== "hairless") {
+			const {His, his} = getPronouns(slave);
+			let div;
+			let p;
+			frag.append(`${His} fluffy ears are ${slave.earTColor}.`);
+
+			div = document.createElement("div");
+			div.classList.add("choices");
+			if (slave.earTColor !== slave.hColor) {
+				div.append(
+					App.UI.DOM.link(
+						"Match current hair",
+						() => {
+							slave.earTColor = slave.hColor;
+							App.Art.refreshSlaveArt(slave, 3, "art-frame");
+							apply();
+						}
+					)
+				);
+				div.append(" or ");
+				App.UI.DOM.appendNewElement("span", div, "choose a new one: ", "note");
+			} else {
+				App.UI.DOM.appendNewElement("span", div, `Choose a dye color before dyeing ${his} ears:`, "note");
+			}
+			frag.append(div);
+
+			div = document.createElement("div");
+			div.classList.add("choices");
+			div.append(`Colors:`);
+			div.append(createList(App.Medicine.Modification.Color.Primary, updatePrimary));
+			frag.append(div);
+
+			div = document.createElement("div");
+			div.classList.add("choices");
+			div.append(`Highlights:`);
+			div.append(createList(App.Medicine.Modification.Color.Secondary, updateSecondary));
+			frag.append(div);
+
+			if (primaryEarColor !== 0) {
+				p = document.createElement("p");
+				p.classList.add("choices");
+				p.append(
+					App.UI.DOM.link(
+						`Color ${his} ears`,
+						() => {
+							slave.earTColor = (primaryEarColor + secondaryEarColor);
+							App.Art.refreshSlaveArt(slave, 3, "art-frame");
+							if (!cheat) {
+								cashX(forceNeg(V.modCost), "slaveMod", slave);
+							}
+							App.Medicine.Salon.ears(slave); // discard selections after locking them in.
+						}
+					)
+				);
+				p.append(` ${primaryEarColor}${secondaryEarColor} now?`);
+				frag.append(p);
+			}
 		}
+		return frag;
 	}
-	return jQuery("#salon-ears").empty().append(frag);
 
 	function createList(array, method) {
 		const links = [];
@@ -322,30 +334,38 @@ App.Medicine.Salon.ears = function(slave, {primaryEarColor = 0, secondaryEarColo
  * @param {object} params
  * @param {number|string} [params.primaryHairColor]
  * @param {string} [params.secondaryHairColor]
- * @returns {JQuery<HTMLElement>}
+ * @param {Boolean} [params.cheat=false]
+ * @returns {HTMLElement}
  */
-App.Medicine.Salon.hair = function(slave, {primaryHairColor = 0, secondaryHairColor = ""} = {}) {
-	const frag = new DocumentFragment();
+App.Medicine.Salon.hair = function(slave, {primaryHairColor = 0, secondaryHairColor = "", cheat = false} = {}) {
 	let updatePrimary = (newVal) => { primaryHairColor = newVal.value; apply(); };
 	let updateSecondary = (newVal) => { secondaryHairColor = newVal.value; apply(); };
 	const {His, his, He, him} = getPronouns(slave);
+	const div = document.createElement("div");
+	div.id = "salon-hair";
+	div.append(contents());
 
-	if (slave.bald !== 1) {
-		frag.append(hairDye());
-		frag.append(hairStyle());
-		frag.append(hairLength());
-		frag.append(hairMaint());
-	} else {
-		// Bald
-		if (slave.hStyle === "bald") {
-			frag.append(`${He} is completely bald. `);
+	return div;
+
+	function contents() {
+		const frag = new DocumentFragment();
+		if (slave.bald !== 1) {
+			frag.append(hairDye());
+			frag.append(hairStyle());
+			frag.append(hairLength());
+			frag.append(hairMaint());
 		} else {
-			frag.append(wigDye());
+			// Bald
+			if (slave.hStyle === "bald") {
+				frag.append(`${He} is completely bald. `);
+			} else {
+				frag.append(wigDye());
+			}
+			frag.append(wigStyle());
+			frag.append(wigLength());
 		}
-		frag.append(wigStyle());
-		frag.append(wigLength());
+		return frag;
 	}
-	return jQuery("#salon-hair").empty().append(frag);
 
 	function hairDye() {
 		const frag = new DocumentFragment();
@@ -362,7 +382,9 @@ App.Medicine.Salon.hair = function(slave, {primaryHairColor = 0, secondaryHairCo
 					() => {
 						slave.hColor = slave.origHColor;
 						App.Art.refreshSlaveArt(slave, 3, "art-frame");
-						cashX(forceNeg(V.modCost), "slaveMod", slave);
+						if (!cheat) {
+							cashX(forceNeg(V.modCost), "slaveMod", slave);
+						}
 						apply();
 					}
 				)
@@ -395,7 +417,9 @@ App.Medicine.Salon.hair = function(slave, {primaryHairColor = 0, secondaryHairCo
 					() => {
 						slave.hColor = (primaryHairColor + secondaryHairColor);
 						App.Art.refreshSlaveArt(slave, 3, "art-frame");
-						cashX(forceNeg(V.modCost), "slaveMod", slave);
+						if (!cheat) {
+							cashX(forceNeg(V.modCost), "slaveMod", slave);
+						}
 						App.Medicine.Salon.hair(slave); // discard selections after locking them in.
 					}
 				)
@@ -424,7 +448,9 @@ App.Medicine.Salon.hair = function(slave, {primaryHairColor = 0, secondaryHairCo
 		div.classList.add("choices");
 		method = (newVal) => {
 			slave.hStyle = newVal.value;
-			cashX(forceNeg(V.modCost), "slaveMod", slave);
+			if (!cheat) {
+				cashX(forceNeg(V.modCost), "slaveMod", slave);
+			}
 			apply();
 		};
 		if (slave.hLength > 1) {
@@ -441,7 +467,9 @@ App.Medicine.Salon.hair = function(slave, {primaryHairColor = 0, secondaryHairCo
 		method = (newVal) => {
 			slave.hStyle = newVal.value;
 			slave.hLength = newVal.hLength;
-			cashX(forceNeg(V.modCost), "slaveMod", slave);
+			if (!cheat) {
+				cashX(forceNeg(V.modCost), "slaveMod", slave);
+			}
 			apply();
 		};
 		if (slave.hLength > 1) {
@@ -481,7 +509,9 @@ App.Medicine.Salon.hair = function(slave, {primaryHairColor = 0, secondaryHairCo
 						v = Math.round(v * 2.54);
 					}
 					slave.hLength = v;
-					cashX(forceNeg(V.modCost), "slaveMod", slave);
+					if (!cheat) {
+						cashX(forceNeg(V.modCost), "slaveMod", slave);
+					}
 					apply();
 				},
 				true
@@ -568,7 +598,9 @@ App.Medicine.Salon.hair = function(slave, {primaryHairColor = 0, secondaryHairCo
 					() => {
 						slave.earTColor = (primaryHairColor + secondaryHairColor);
 						App.Art.refreshSlaveArt(slave, 3, "art-frame");
-						cashX(forceNeg(V.modCost), "slaveMod", slave);
+						if (!cheat) {
+							cashX(forceNeg(V.modCost), "slaveMod", slave);
+						}
 						App.Medicine.Salon.hair(slave); // discard selections after locking them in.
 					}
 				)
@@ -611,7 +643,9 @@ App.Medicine.Salon.hair = function(slave, {primaryHairColor = 0, secondaryHairCo
 						v = Math.round(v * 2.54);
 					}
 					slave.hLength = v;
-					cashX(forceNeg(V.modCost), "slaveMod", slave);
+					if (!cheat) {
+						cashX(forceNeg(V.modCost), "slaveMod", slave);
+					}
 					apply();
 				},
 				true
@@ -634,7 +668,9 @@ App.Medicine.Salon.hair = function(slave, {primaryHairColor = 0, secondaryHairCo
 		div.classList.add("choices");
 		const method = (newVal) => {
 			slave.hStyle = newVal.value;
-			cashX(forceNeg(V.modCost), "slaveMod", slave);
+			if (!cheat) {
+				cashX(forceNeg(V.modCost), "slaveMod", slave);
+			}
 			apply();
 		};
 
@@ -694,9 +730,10 @@ App.Medicine.Salon.hair = function(slave, {primaryHairColor = 0, secondaryHairCo
  * @param {object} params
  * @param {number|string} [params.primaryTailColor]
  * @param {string} [params.secondaryTailColor]
+ * @param {Boolean} [params.cheat]
  * @returns {JQuery<HTMLElement>}
  */
-App.Medicine.Salon.tail = function(slave, {primaryTailColor = 0, secondaryTailColor = ""} = {}) {
+App.Medicine.Salon.tail = function(slave, {primaryTailColor = 0, secondaryTailColor = "", cheat = false} = {}) {
 	const frag = new DocumentFragment();
 	let updatePrimary = (newVal) => { primaryTailColor = newVal.value; apply(); };
 	let updateSecondary = (newVal) => { secondaryTailColor = newVal.value; apply(); };
@@ -723,7 +760,9 @@ App.Medicine.Salon.tail = function(slave, {primaryTailColor = 0, secondaryTailCo
 					() => {
 						slave.tailColor = slave.hColor;
 						App.Art.refreshSlaveArt(slave, 3, "art-frame");
-						cashX(forceNeg(V.modCost), "slaveMod", slave);
+						if (!cheat) {
+							cashX(forceNeg(V.modCost), "slaveMod", slave);
+						}
 						apply();
 					}
 				)
@@ -756,7 +795,9 @@ App.Medicine.Salon.tail = function(slave, {primaryTailColor = 0, secondaryTailCo
 					() => {
 						slave.tailColor = (primaryTailColor + secondaryTailColor);
 						App.Art.refreshSlaveArt(slave, 3, "art-frame");
-						cashX(forceNeg(V.modCost), "slaveMod", slave);
+						if (!cheat) {
+							cashX(forceNeg(V.modCost), "slaveMod", slave);
+						}
 						App.Medicine.Salon.tail(slave); // discard selections after locking them in.
 					}
 				)
diff --git a/src/js/utilsFC.js b/src/js/utilsFC.js
index febd84b8831a2472c3d0b5fcd362fba36b1013ac..779c965102fff7ef801041666187948cecb7d077 100644
--- a/src/js/utilsFC.js
+++ b/src/js/utilsFC.js
@@ -2577,7 +2577,7 @@ globalThis.randomRaceHair = function(raceName) {
  * @returns {number}
  */
 globalThis.skinToneLevel = function(skinTone) {
-	if (!setup.naturalSkins.includes(skinTone)) {
+	if (!App.Medicine.Modification.naturalSkins.includes(skinTone)) {
 		return undefined;
 	}
 	const skinToMelanin = {
@@ -2617,7 +2617,7 @@ globalThis.skinToneLevel = function(skinTone) {
  * @returns {string}
  */
 globalThis.changeSkinTone = function(skin, value) {
-	if (!setup.naturalSkins.includes(skin)) {
+	if (!App.Medicine.Modification.naturalSkins.includes(skin)) {
 		return skin;
 	}
 	const skinToMelanin = {
@@ -2670,7 +2670,7 @@ globalThis.changeSkinTone = function(skin, value) {
  * @returns {number}
  */
 globalThis.nippleColorLevel = function(color) {
-	if (!setup.naturalNippleColors.includes(color)) {
+	if (!App.Medicine.Modification.naturalNippleColors.includes(color)) {
 		return undefined;
 	}
 	const nippleColor = {
diff --git a/src/markets/specificMarkets/customSlaveMarket.js b/src/markets/specificMarkets/customSlaveMarket.js
index 16c09e908488c3e92ab4e2bfc453ea1bd37cc6c1..5838770da2fdae91ad4f50d3a54eb3143e8c507f 100644
--- a/src/markets/specificMarkets/customSlaveMarket.js
+++ b/src/markets/specificMarkets/customSlaveMarket.js
@@ -349,7 +349,7 @@ App.Markets["Custom Slave"] = function() {
 		const choices = new Map([
 			["left natural", "Left natural"]
 		]);
-		for (const skin of App.Data.misc.naturalSkins) {
+		for (const skin of App.Medicine.Modification.naturalSkins) {
 			choices.set(skin, capFirstChar(skin));
 		}
 
diff --git a/src/npc/interaction/fAbuse.tw b/src/npc/interaction/fAbuse.tw
index bc3ca37031738e907fb72e9831c5b55700323280..266ac82a3d89fda3428ec704e5af1ec552912de9 100644
--- a/src/npc/interaction/fAbuse.tw
+++ b/src/npc/interaction/fAbuse.tw
@@ -362,7 +362,7 @@ from your victim.
 	<</if>>
 <</if>>
 
-<<if (setup.dyedSkins.includes(getSlave($AS).skin))>>
+<<if (App.Medicine.Modification.dyedSkins.includes(getSlave($AS).skin))>>
 	$His <<= getSlave($AS).skin>><<if $seeRace == 1>>, <<= getSlave($AS).race>><</if>> ass barely shows the spanking.
 <<elseif (skinToneLevel(getSlave($AS)) < 5)>>
 	$His <<= getSlave($AS).skin>><<if $seeRace == 1>>, <<= getSlave($AS).race>><</if>> ass shows the spanking extremely well.
diff --git a/src/uncategorized/salon.tw b/src/uncategorized/salon.tw
deleted file mode 100644
index 40e4e8d6b826fff50902559e31453a202499bee5..0000000000000000000000000000000000000000
--- a/src/uncategorized/salon.tw
+++ /dev/null
@@ -1,551 +0,0 @@
-:: Salon [nobr jump-from-safe]
-
-<<set $nextButton = "Confirm changes", $nextLink = "Slave Interact", $encyclopedia = "The Auto Salon">>
-<<run App.Utils.setLocalPronouns(getSlave($AS))>>
-
-<<if $showInches == 2>>
-	<<set _oldHLength = Math.round(getSlave($AS).hLength/2.54), _newHLength = 0>>
-<<else>>
-	<<set _oldHLength = getSlave($AS).hLength, _newHLength = 0>>
-<</if>>
-
-<h1>The Auto Salon</h1>
-
-<span class="note">
-	<<= getSlave($AS).slaveName>> is seated in the auto salon. $He is awaiting your artistic pleasure.
-</span>
-
-/* 000-250-006 */
-<span id="art-frame">
-	<<if $seeImages == 1>>
-		<<if $imageChoice == 1>>
-			<div class="imageRef lrgVector"><div class="mask">&nbsp;</div><<= SlaveArt(getSlave($AS), 3, 0)>></div>
-		<<else>>
-			<div class="imageRef lrgRender"><div class="mask">&nbsp;</div><<= SlaveArt(getSlave($AS), 3, 0)>></div>
-		<</if>>
-	<</if>>
-</span>
-/* 000-250-006 */
-
-/* EYES */
-
-<h3>Eyewear</h3>
-<<if getBestVision(getSlave($AS)) === 0>>
-	$He is blind, and
-	<<if getSlave($AS).eyewear == "none">>
-		has no eyewear.
-	<<else>>
-		is wearing <<= getSlave($AS).eyewear>>. [[Remove|Salon][getSlave($AS).eyewear = "none"]]
-	<</if>>
-	<div class="choices">
-		Give $him: [[Cosmetic glasses|Salon][getSlave($AS).eyewear = "glasses",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-	</div>
-<<elseif anyVisionEquals(getSlave($AS), 1)>>
-	$He is nearsighted, and $he
-	<<if getSlave($AS).eyewear == "none">>
-		has no eyewear.
-	<<else>>
-		is wearing <<= getSlave($AS).eyewear>>. [[Remove|Salon][getSlave($AS).eyewear = "none"]]
-	<</if>>
-	<div class="choices">
-		Give $him: [[Cosmetic glasses|Salon][getSlave($AS).eyewear = "glasses",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-		| [[Corrective glasses|Salon][getSlave($AS).eyewear = "corrective glasses",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-		| [[Corrective contacts|Salon][getSlave($AS).eyewear = "corrective contacts",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-		<span class="note">Nearsightedness will impede performance on some assignments.</span>
-	</div>
-<<else>>
-	$His vision is normal, and $he
-	<<if getSlave($AS).eyewear == "none">>
-		has no eyewear.
-	<<else>>
-		is wearing <<= getSlave($AS).eyewear>>. [[Remove|Salon][getSlave($AS).eyewear = "none"]]
-	<</if>>
-	<div class="choices">
-		Give $him: [[Cosmetic glasses|Salon][getSlave($AS).eyewear = "glasses",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-		| [[Blurring glasses|Salon][getSlave($AS).eyewear = "blurring glasses",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-		| [[Blurring contacts|Salon][getSlave($AS).eyewear = "blurring contacts",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-		<span class="note">Blurring options are annoying and impede performance on some assignments.</span>
-	</div>
-<</if>>
-
-<<includeDOM App.Medicine.Modification.eyeSelector(getSlave($AS))>>
-
-/* EARS */
-<h3>Ears</h3>
-<p id="salon-ears"></p>
-<script>
-	App.Medicine.Salon.ears(getSlave(V.AS));
-</script>
-
-<div>
-	<<if getSlave($AS).earImplant == 1>>
-		$He has artificial inner ear implants,
-		<<if getSlave($AS).earwear == "none">>
-			which are unobstructed.
-		<<else>>
-			and is wearing <<= getSlave($AS).earwear>>. [[Remove|Salon][getSlave($AS).earwear = "none"]]
-		<</if>>
-	<<elseif getSlave($AS).hears < -1>>
-		$He is deaf, and
-		<<if getSlave($AS).earwear == "none">>
-			is wearing nothing on $his ears.
-		<<else>>
-			is wearing <<= getSlave($AS).earwear>>. [[Remove|Salon][getSlave($AS).earwear = "none"]]
-		<</if>>
-	<<elseif getSlave($AS).hears > -1>>
-		$His hearing is normal, and $he
-		<<if getSlave($AS).earwear == "none">>
-			has nothing in $his ears.
-		<<else>>
-			is wearing <<= getSlave($AS).earwear>>. [[Remove|Salon][getSlave($AS).earwear = "none"]]
-		<</if>>
-	<<else>>
-		$He is hearing impaired, and
-		<<if getSlave($AS).earwear == "none">>
-			wears nothing to correct or worsen this.
-		<<else>>
-			is wearing <<= getSlave($AS).earwear>>. [[Remove|Salon][getSlave($AS).earwear = "none"]]
-		<</if>>
-	<</if>>
-	<div class="choices">
-		Give $him:
-		[[Hearing aids|Salon][getSlave($AS).earwear = "hearing aids",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-		| [[Muffling ear plugs|Salon][getSlave($AS).earwear = "muffling ear plugs",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-		| [[Deafening ear plugs|Salon][getSlave($AS).earwear = "deafening ear plugs",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-		<span class="note">Muffling options are annoying and impede performance on some assignments.</span>
-	</div>
-</div>
-
-/*End ear check */
-<div>
-	<<if getSlave($AS).horn != "none">>
-		$His <<= getSlave($AS).horn>> are <<= getSlave($AS).hornColor>>
-		<div class="choices">
-			Set horn color:
-				[[Black|Salon][getSlave($AS).hornColor = "black",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-				| [[Blazing Red|Salon][getSlave($AS).hornColor = "blazing red",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-				| [[Blue-Violet|Salon][getSlave($AS).hornColor = "blue-violet",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-				| [[Blue|Salon][getSlave($AS).hornColor = "blue",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-				| [[Brown|Salon][getSlave($AS).hornColor = "brown",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-				| [[Burgundy|Salon][getSlave($AS).hornColor = "burgundy",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-				| [[Copper|Salon][getSlave($AS).hornColor = "copper",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-				| [[Dark Blue|Salon][getSlave($AS).hornColor = "dark blue",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-				| [[Dark Brown|Salon][getSlave($AS).hornColor = "dark brown",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-				| [[Dark Orchid|Salon][getSlave($AS).hornColor = "dark orchid",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-				| [[Deep Red|Salon][getSlave($AS).hornColor = "deep red",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-				| [[Golden|Salon][getSlave($AS).hornColor = "golden",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-				| [[Green-yellow|Salon][getSlave($AS).hornColor = "green-yellow",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-				| [[Green|Salon][getSlave($AS).hornColor = "green",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-				| [[Grey|Salon][getSlave($AS).hornColor = "grey",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-				| [[Jet Black|Salon][getSlave($AS).hornColor = "jet black",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-				| [[Neon Blue|Salon][getSlave($AS).hornColor = "neon blue",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-				| [[Neon Green|Salon][getSlave($AS).hornColor = "neon green",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-				| [[Neon Pink|Salon][getSlave($AS).hornColor = "neon pink",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-				| [[Pink|Salon][getSlave($AS).hornColor = "pink",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-				| [[Ivory|Salon][getSlave($AS).hornColor = "ivory",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-				| [[Purple|Salon][getSlave($AS).hornColor = "purple",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-				| [[Red|Salon][getSlave($AS).hornColor = "red",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-				| [[Sea Green|Salon][getSlave($AS).hornColor = "sea green",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-				| [[Silver|Salon][getSlave($AS).hornColor = "silver",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-				| [[White|Salon][getSlave($AS).hornColor = "white",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-		</div>
-	<</if>>
-</div>
-
-/* HAIR */
-
-<h3>Hair</h3>
-<p id="salon-hair"></p>
-<script>
-	App.Medicine.Salon.hair(getSlave(V.AS));
-</script>
-
-/* MAKEUP */
-<h3>Makeup</h3>
-
-<div>
-	<<= App.Desc.makeup(getSlave($AS))>>
-	<<if getSlave($AS).makeup > 0>>
-		[[Remove|Salon][getSlave($AS).makeup = 0,cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-	<</if>>
-	<div class="choices">
-	Apply makeup:
-		[[Nice|Salon][getSlave($AS).makeup = 1,cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-		| [[Gorgeous|Salon][getSlave($AS).makeup = 2,cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-		| [[Slutty|Salon][getSlave($AS).makeup = 4,cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-		| [[Color-coordinate with hair|Salon][getSlave($AS).makeup = 3,cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-	</div>
-	<div class="choices">
-		&nbsp;&nbsp;
-		[[Neon|Salon][getSlave($AS).makeup = 5,cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-		| [[Neon, color-coordinate with hair|Salon][getSlave($AS).makeup = 6,cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-	</div>
-	<div class="choices">
-		&nbsp;&nbsp;
-		[[Metallic|Salon][getSlave($AS).makeup = 7,cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-		| [[Metallic, color-coordinate with hair|Salon][getSlave($AS).makeup = 8,cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-	</div>
-</div>
-
-/* NAILS */
-<div>
-	<<= App.Desc.nails(getSlave($AS))>>
-
-	<<if hasAnyArms(getSlave($AS))>>
-		<div class="choices">
-			Treat nails:
-			[[Clip|Salon][getSlave($AS).nails = 0,cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Extend|Salon][getSlave($AS).nails = 1,cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Sharp, claw-like|Salon][getSlave($AS).nails = 3,cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Bright, glittery|Salon][getSlave($AS).nails = 4,cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Streetwalker-style|Salon][getSlave($AS).nails = 5,cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Color-coordinate with hair|Salon][getSlave($AS).nails = 2,cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-		</div>
-		<div class="choices">
-			&nbsp;&nbsp;
-			[[Neon|Salon][getSlave($AS).nails = 6,cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Neon, color-coordinate with hair|Salon][getSlave($AS).nails = 7,cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-		</div>
-		<div class="choices">
-			&nbsp;&nbsp;
-			[[Metallic|Salon][getSlave($AS).nails = 8,cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Metallic, color-coordinate with hair|Salon][getSlave($AS).nails = 9,cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-		</div>
-	<</if>>
-</div>
-
-/* SKIN */
-<h3>Skin</h3>
-<div>
-	$His skin is <<= getSlave($AS).skin>>.
-
-	<<if (setup.dyedSkins.includes(getSlave($AS).skin))>>
-		[[Remove coloring|Salon][getSlave($AS).skin = getSlave($AS).origSkin,cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-	<<elseif ((getSlave($AS).skin == "sun tanned") || (getSlave($AS).skin == "spray tanned"))>>
-		[[Remove tanning|Salon][getSlave($AS).skin = getSlave($AS).origSkin,cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-	<</if>>
-</div>
-
-<<if (!setup.dyedSkins.includes(getSlave($AS).skin))>>
-	<div class="choices">
-		<<if (getSlave($AS).skin == "sun tanned" || getSlave($AS).skin == "spray tanned")>>
-			$His skin tanning must be removed before any advanced procedure to change $his skin color.
-		<<else>>
-			Change skin tone:
-			<<set _needsSpacers = 0>>
-			<<if (skinToneLevel(getSlave($AS).skin) > 1)>>
-				<<if _needsSpacers == 1>> | <</if>>
-				[[Bleach|Salon][getSlave($AS).skin = changeSkinTone(getSlave($AS).skin, -2), cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-				<<set _needsSpacers = 1>>
-			<</if>>
-			<<if (skinToneLevel(getSlave($AS).skin) > 8)>>
-				<<if _needsSpacers == 1>> | <</if>>
-				[[Lighten|Salon][getSlave($AS).skin = changeSkinTone(getSlave($AS).skin, -1), cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-				<<set _needsSpacers = 1>>
-			<</if>>
-			<<if (skinToneLevel(getSlave($AS).skin) < 18)>>
-				<<if _needsSpacers == 1>> | <</if>>
-				[[Darken|Salon][getSlave($AS).skin = changeSkinTone(getSlave($AS).skin, 1), cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-				<<set _needsSpacers = 1>>
-			<</if>>
-			<<if (skinToneLevel(getSlave($AS).skin) < 25)>>
-				<<if _needsSpacers == 1>> | <</if>>
-				[[Blacken|Salon][getSlave($AS).skin = changeSkinTone(getSlave($AS).skin, 2), cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-				<<set _needsSpacers = 1>>
-			<</if>>
-		<</if>>
-	</div>
-	<div class="choices">
-		<<set _needsSpacers = 0>>
-		<<if (getSlave($AS).skin != "sun tanned")>>
-			<<if (skinToneLevel(getSlave($AS).skin) < 6)>>
-				$His skin is so light in color that any attempt at natural tanning is more likely to damage $his skin.
-			<<elseif (skinToneLevel(getSlave($AS).skin) > 20)>>
-				$His skin is so dark in color that any attempt at natural tanning is not likely to appear on $his skin.
-			<<else>>
-				[["Sun tan " + $his + " skin"|Salon][getSlave($AS).skin = "sun tanned", cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-				<<set _needsSpacers = 1>>
-			<</if>>
-		<</if>>
-		<<if (getSlave($AS).skin != "spray tanned")>>
-			<<if _needsSpacers == 1>> | <</if>>
-			[["Spray tan " + $his + " skin"|Salon][getSlave($AS).skin = "spray tanned", cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-		<</if>>
-	</div>
-<</if>>
-
-<div class="choices">
-	Dye or paint:
-	[[Blue|Salon][getSlave($AS).skin = "dyed blue",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-	| [[Camouflage|Salon][getSlave($AS).skin = "camouflage patterned",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-	| [[Gray|Salon][getSlave($AS).skin = "dyed gray",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-	| [[Green|Salon][getSlave($AS).skin = "dyed green",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-	| [[Pink|Salon][getSlave($AS).skin = "dyed pink",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-	| [[Red|Salon][getSlave($AS).skin = "dyed red",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-	| [[Tiger Stripes|Salon][getSlave($AS).skin = "tiger striped",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-</div>
-
-<p id="salon-tail"></p>
-<script>
-	App.Medicine.Salon.tail(getSlave(V.AS));
-</script>
-
-/* MARKS */
-<div>
-	<<if (getSlave($AS).markings == "beauty mark")>>
-		$He has a prominent mole on $his face, which
-		<<if getSlave($AS).face > 40>>
-			qualifies as a beauty mark and enhances $his attractiveness due to $his facial beauty.
-		<<elseif getSlave($AS).face < -10>>
-			makes $him even less attractive.
-		<<else>>
-			qualifies as a beauty mark since $he's pretty, having no significant impact on $his beauty.
-		<</if>>
-		[[Remove it|Salon][getSlave($AS).markings = "none",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-	<</if>>
-</div>
-
-<div>
-	<<if (getSlave($AS).markings == "birthmark")>>
-		$He has a large birthmark, which
-		<<if getSlave($AS).prestige > 0 || getSlave($AS).porn.prestige > 1>>
-			enhances $his attractiveness due to $his prestige.
-		<<else>>
-			detracts from $his attractiveness.
-		<</if>>
-		[[Bleach it|Salon][getSlave($AS).markings = "none",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-	<</if>>
-</div>
-
-
-<h3>Body hair</h3>
-/* EYEBROW HAIR */
-
-<<if getSlave($AS).eyebrowHStyle != "bald">>
-	<div>
-		$His <<if getSlave($AS).eyebrowFullness != "natural">><<= getSlave($AS).eyebrowFullness>><<if getSlave($AS).eyebrowHStyle != "natural">>,<</if>> <</if>><<if getSlave($AS).eyebrowHStyle != "natural">><<= getSlave($AS).eyebrowHStyle>> <</if>> eyebrows
-		<<if getSlave($AS).eyebrowHStyle == "shaved">>
-			would be <<= getSlave($AS).eyebrowHColor>> if present.
-		<<else>>
-			are <<= getSlave($AS).eyebrowHColor>>.
-		<</if>>
-		<<if getSlave($AS).eyebrowHColor != getSlave($AS).hColor>>
-			[[Match the hair?|Salon][getSlave($AS).eyebrowHColor = getSlave($AS).hColor,cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-		<</if>>
-	</div>
-
-	<div class="choices">
-		Dye $his eyebrow hair:
-			[[Auburn|Salon][getSlave($AS).eyebrowHColor = "auburn",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Black|Salon][getSlave($AS).eyebrowHColor = "black",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Blazing Red|Salon][getSlave($AS).eyebrowHColor = "blazing red",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Blonde|Salon][getSlave($AS).eyebrowHColor = "blonde",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Blue-Violet|Salon][getSlave($AS).eyebrowHColor = "blue-violet",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Blue|Salon][getSlave($AS).eyebrowHColor = "blue",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Brown|Salon][getSlave($AS).eyebrowHColor = "brown",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Burgundy|Salon][getSlave($AS).eyebrowHColor = "burgundy",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Chestnut|Salon][getSlave($AS).eyebrowHColor = "chestnut",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Chocolate|Salon][getSlave($AS).eyebrowHColor = "chocolate brown",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Copper|Salon][getSlave($AS).eyebrowHColor = "copper",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Dark Blue|Salon][getSlave($AS).eyebrowHColor = "dark blue",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Dark Brown|Salon][getSlave($AS).eyebrowHColor = "dark brown",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Dark Orchid|Salon][getSlave($AS).eyebrowHColor = "dark orchid",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Deep Red|Salon][getSlave($AS).eyebrowHColor = "deep red",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Ginger|Salon][getSlave($AS).eyebrowHColor = "ginger",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Golden|Salon][getSlave($AS).eyebrowHColor = "golden",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Green-yellow|Salon][getSlave($AS).eyebrowHColor = "green-yellow",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Green|Salon][getSlave($AS).eyebrowHColor = "green",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Grey|Salon][getSlave($AS).eyebrowHColor = "grey",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Hazel|Salon][getSlave($AS).eyebrowHColor = "hazel",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Jet Black|Salon][getSlave($AS).eyebrowHColor = "jet black",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Neon Blue|Salon][getSlave($AS).eyebrowHColor = "neon blue",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Neon Green|Salon][getSlave($AS).eyebrowHColor = "neon green",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Neon Pink|Salon][getSlave($AS).eyebrowHColor = "neon pink",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Pink|Salon][getSlave($AS).eyebrowHColor = "pink",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Platinum Blonde|Salon][getSlave($AS).eyebrowHColor = "platinum blonde",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Purple|Salon][getSlave($AS).eyebrowHColor = "purple",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Red|Salon][getSlave($AS).eyebrowHColor = "red",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Sea Green|Salon][getSlave($AS).eyebrowHColor = "sea green",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Silver|Salon][getSlave($AS).eyebrowHColor = "silver",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Strawberry-Blonde|Salon][getSlave($AS).eyebrowHColor = "strawberry-blonde",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[White|Salon][getSlave($AS).eyebrowHColor = "white",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-	</div>
-
-	<div class="choices">
-		Style $his eyebrow hair:
-			[[Natural|Salon][getSlave($AS).eyebrowHStyle = "natural",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Curved|Salon][getSlave($AS).eyebrowHStyle = "curved",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Elongated|Salon][getSlave($AS).eyebrowHStyle = "elongated",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[High-Arched|Salon][getSlave($AS).eyebrowHStyle = "high-arched",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Rounded|Salon][getSlave($AS).eyebrowHStyle = "rounded",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Shaved|Salon][getSlave($AS).eyebrowHStyle = "shaved",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Shortened|Salon][getSlave($AS).eyebrowHStyle = "shortened",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Slanted Inwards|Salon][getSlave($AS).eyebrowHStyle = "slanted inwards",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Slanted Outwards|Salon][getSlave($AS).eyebrowHStyle = "slanted outwards",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Straight|Salon][getSlave($AS).eyebrowHStyle = "straight",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-	</div>
-
-	<div class="choices">
-		Shape $his eyebrow hair:
-			[[Natural|Salon][getSlave($AS).eyebrowFullness = "natural",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Bushy|Salon][getSlave($AS).eyebrowFullness = "bushy",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Thick|Salon][getSlave($AS).eyebrowFullness = "thick",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Tapered|Salon][getSlave($AS).eyebrowFullness = "tapered",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Threaded|Salon][getSlave($AS).eyebrowFullness = "threaded",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Thin|Salon][getSlave($AS).eyebrowFullness = "thin",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Pencil-Thin|Salon][getSlave($AS).eyebrowFullness = "pencil-thin",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-	</div>
-<<else>>
-	<div>
-		$His eyebrows are completely hairless.
-	</div>
-<</if>>
-
-/* PUBIC HAIR */
-
-<<set _pubertyAge = Math.min(getSlave($AS).pubertyAgeXX, getSlave($AS).pubertyAgeXY)>>
-<<if getSlave($AS).pubicHStyle != "bald" && getSlave($AS).pubicHStyle != "hairless" && getSlave($AS).physicalAge >= _pubertyAge-1>>
-
-	<div>
-		$His
-		<<if getSlave($AS).physicalAge < _pubertyAge>>
-			wispy pubic hair, which is just starting to grow in,
-		<<elseif getSlave($AS).pubicHStyle == "in a strip">>
-			pubic hair, which is shaved into a strip,
-		<<else>>
-			<<= getSlave($AS).pubicHStyle>> pubic hair
-		<</if>>
-		<<if getSlave($AS).pubicHStyle == "waxed">>
-			would be <<= getSlave($AS).pubicHColor>> if present.
-		<<else>>
-			is <<= getSlave($AS).pubicHColor>>.
-		<</if>>
-		<<if getSlave($AS).pubicHColor != getSlave($AS).hColor>>
-			[[Match the curtains?|Salon][getSlave($AS).pubicHColor = getSlave($AS).hColor,cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-		<</if>>
-	</div>
-
-	<div class="choices">
-		Dye $his pubic hair:
-			[[Auburn|Salon][getSlave($AS).pubicHColor = "auburn",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Black|Salon][getSlave($AS).pubicHColor = "black",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Blazing Red|Salon][getSlave($AS).pubicHColor = "blazing red",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Blonde|Salon][getSlave($AS).pubicHColor = "blonde",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Blue-Violet|Salon][getSlave($AS).pubicHColor = "blue-violet",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Blue|Salon][getSlave($AS).pubicHColor = "blue",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Brown|Salon][getSlave($AS).pubicHColor = "brown",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Burgundy|Salon][getSlave($AS).pubicHColor = "burgundy",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Chestnut|Salon][getSlave($AS).pubicHColor = "chestnut",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Chocolate|Salon][getSlave($AS).pubicHColor = "chocolate brown",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Copper|Salon][getSlave($AS).pubicHColor = "copper",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Dark Blue|Salon][getSlave($AS).pubicHColor = "dark blue",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Dark Brown|Salon][getSlave($AS).pubicHColor = "dark brown",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Dark Orchid|Salon][getSlave($AS).pubicHColor = "dark orchid",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Deep Red|Salon][getSlave($AS).pubicHColor = "deep red",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Ginger|Salon][getSlave($AS).pubicHColor = "ginger",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Golden|Salon][getSlave($AS).pubicHColor = "golden",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Green-yellow|Salon][getSlave($AS).pubicHColor = "green-yellow",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Green|Salon][getSlave($AS).pubicHColor = "green",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Grey|Salon][getSlave($AS).pubicHColor = "grey",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Hazel|Salon][getSlave($AS).pubicHColor = "hazel",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Jet Black|Salon][getSlave($AS).pubicHColor = "jet black",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Neon Blue|Salon][getSlave($AS).pubicHColor = "neon blue",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Neon Green|Salon][getSlave($AS).pubicHColor = "neon green",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Neon Pink|Salon][getSlave($AS).pubicHColor = "neon pink",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Pink|Salon][getSlave($AS).pubicHColor = "pink",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Platinum Blonde|Salon][getSlave($AS).pubicHColor = "platinum blonde",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Purple|Salon][getSlave($AS).pubicHColor = "purple",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Red|Salon][getSlave($AS).pubicHColor = "red",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Sea Green|Salon][getSlave($AS).pubicHColor = "sea green",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Silver|Salon][getSlave($AS).pubicHColor = "silver",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Strawberry-Blonde|Salon][getSlave($AS).pubicHColor = "strawberry-blonde",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[White|Salon][getSlave($AS).pubicHColor = "white",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-	</div>
-
-	<div class="choices">
-		Style $his pubic hair:
-			[[Waxed|Salon][getSlave($AS).pubicHStyle = "waxed",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Landing strip|Salon][getSlave($AS).pubicHStyle = "in a strip",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Neat|Salon][getSlave($AS).pubicHStyle = "neat",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Bushy in the front|Salon][getSlave($AS).pubicHStyle = "bushy in the front and neat in the rear",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Bushy|Salon][getSlave($AS).pubicHStyle = "bushy",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Very Bushy|Salon][getSlave($AS).pubicHStyle = "very bushy",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-	</div>
-
-<<else>>
-	<div>
-		$His groin is completely hairless.
-	</div>
-<</if>>
-
-/* UNDERARM HAIR */
-
-<<if getSlave($AS).underArmHStyle != "bald" && getSlave($AS).underArmHStyle != "hairless" && getSlave($AS).physicalAge >= _pubertyAge-1>>
-
-	<div>
-		$His
-		<<if getSlave($AS).physicalAge < _pubertyAge>>
-			wispy underarm hair
-		<<else>>
-			<<= getSlave($AS).underArmHStyle>> underarm hair
-		<</if>>
-		<<if getSlave($AS).underArmHStyle == "waxed">>
-			would be <<= getSlave($AS).underArmHColor>> if present.
-		<<else>>
-			is <<= getSlave($AS).underArmHColor>>.
-		<</if>>
-		<<if getSlave($AS).underArmHColor != getSlave($AS).hColor>>
-			[[Match the hair?|Salon][getSlave($AS).underArmHColor = getSlave($AS).hColor,cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-		<</if>>
-	</div>
-
-	<div class="choices">
-		Dye $his armpit hair:
-			[[Auburn|Salon][getSlave($AS).underArmHColor = "auburn",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Black|Salon][getSlave($AS).underArmHColor = "black",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Blazing Red|Salon][getSlave($AS).underArmHColor = "blazing red",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Blonde|Salon][getSlave($AS).underArmHColor = "blonde",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Blue-Violet|Salon][getSlave($AS).underArmHColor = "blue-violet",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Blue|Salon][getSlave($AS).underArmHColor = "blue",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Brown|Salon][getSlave($AS).underArmHColor = "brown",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Burgundy|Salon][getSlave($AS).underArmHColor = "burgundy",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Chestnut|Salon][getSlave($AS).underArmHColor = "chestnut",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Chocolate|Salon][getSlave($AS).underArmHColor = "chocolate brown",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Copper|Salon][getSlave($AS).underArmHColor = "copper",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Dark Blue|Salon][getSlave($AS).underArmHColor = "dark blue",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Dark Brown|Salon][getSlave($AS).underArmHColor = "dark brown",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Dark Orchid|Salon][getSlave($AS).underArmHColor = "dark orchid",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Deep Red|Salon][getSlave($AS).underArmHColor = "deep red",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Ginger|Salon][getSlave($AS).underArmHColor = "ginger",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Golden|Salon][getSlave($AS).underArmHColor = "golden",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Green-yellow|Salon][getSlave($AS).underArmHColor = "green-yellow",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Green|Salon][getSlave($AS).underArmHColor = "green",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Grey|Salon][getSlave($AS).underArmHColor = "grey",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Hazel|Salon][getSlave($AS).underArmHColor = "hazel",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Jet Black|Salon][getSlave($AS).underArmHColor = "jet black",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Neon Blue|Salon][getSlave($AS).underArmHColor = "neon blue",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Neon Green|Salon][getSlave($AS).underArmHColor = "neon green",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Neon Pink|Salon][getSlave($AS).underArmHColor = "neon pink",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Pink|Salon][getSlave($AS).underArmHColor = "pink",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Platinum Blonde|Salon][getSlave($AS).underArmHColor = "platinum blonde",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Purple|Salon][getSlave($AS).underArmHColor = "purple",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Red|Salon][getSlave($AS).underArmHColor = "red",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Sea Green|Salon][getSlave($AS).underArmHColor = "sea green",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Silver|Salon][getSlave($AS).underArmHColor = "silver",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Strawberry-Blonde|Salon][getSlave($AS).underArmHColor = "strawberry-blonde",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[White|Salon][getSlave($AS).underArmHColor = "white",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-	</div>
-
-	<div class="choices">
-		Style $his armpit hair:
-			[[Waxed|Salon][getSlave($AS).underArmHStyle = "waxed",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Shaved|Salon][getSlave($AS).underArmHStyle = "shaved",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Neat|Salon][getSlave($AS).underArmHStyle = "neat",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-			| [[Bushy|Salon][getSlave($AS).underArmHStyle = "bushy",cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
-	</div>
-
-<<else>>
-	<div>
-		$His underarms are completely hairless.
-	</div>
-<</if>>