diff --git a/src/facilities/salon/salonPassage.js b/src/facilities/salon/salonPassage.js
index 2c1bd5e2b7ec54ce32fd8dbd2d545790881bf923..5c8b678c639a7e6299ccfce1986a5ff7bad6794b 100644
--- a/src/facilities/salon/salonPassage.js
+++ b/src/facilities/salon/salonPassage.js
@@ -27,6 +27,10 @@ App.UI.salon = function(slave, cheat = false) {
 		}
 		el.append(eyewear());
 		el.append(ears());
+		if (slave.horn !== "none") {
+			el.append(horns());
+		}
+		el.append(makeup());
 		return el;
 	}
 
@@ -83,12 +87,13 @@ App.UI.salon = function(slave, cheat = false) {
 		} else {
 			r.push(`${He} is hearing impaired`);
 		}
-		const option = options.addOption(r.join(" "), "eyewear", slave)
+		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);
@@ -100,9 +105,75 @@ App.UI.salon = function(slave, cheat = false) {
 		return el;
 	}
 
+	function horns() {
+		const el = new DocumentFragment();
+		App.UI.DOM.appendNewElement("h2", el, "Horns");
+		const options = new App.UI.OptionsGroup();
+
+		options.addOption(`Set the color of ${his} ${slave.horn}`, "hornColor", slave)
+			.addValueList(makeAList(App.Medicine.Modification.Color.Primary.map(color => color.value)))
+			.addCallbackToEach(billMod);
+
+		el.append(options.render());
+
+		return el;
+	}
+
+	function makeup() {
+		const el = new DocumentFragment();
+		App.UI.DOM.appendNewElement("h2", 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 skin() {
+		const el = new DocumentFragment();
+		App.UI.DOM.appendNewElement("h2", el, "Skin");
+		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 billMod() {
 		if (!cheat) {
 			cashX(forceNeg(V.modCost), "slaveMod", slave);
 		}
 	}
+
+	function makeAList(iterable) {
+		return Array.from(iterable, (k => [capFirstChar(k), k]));
+	}
 };