diff --git a/src/facilities/salon/salonPassage.js b/src/facilities/salon/salonPassage.js
index b78f34aecd986a313a2b0b7ad571d04d2ef83311..20b0aab88504918ea0b801d8e069723acbcce54c 100644
--- a/src/facilities/salon/salonPassage.js
+++ b/src/facilities/salon/salonPassage.js
@@ -276,24 +276,22 @@ App.UI.salon = function(slave, cheat = false) {
 	function skin() {
 		const el = new DocumentFragment();
 		let r;
+		let option;
 		App.UI.DOM.appendNewElement("h3", el, "Skin");
 		const options = new App.UI.OptionsGroup();
 		let comment = [];
 
 		if (cheat) {
-			options.addOption(`${His} natural skin color is`, "origSkin", slave).showTextBox()
-				.addValueList([["Pure White", "pure white"], ["Ivory", "ivory"], ["White", "white"], ["Extremely Pale", "extremely pale"],
-					["Very Pale", "very pale"], ["Pale", "pale"], ["Extremely Fair", "extremely fair"], ["Very Fair", "very fair"],
-					["Fair", "fair"], ["Light", "light"], ["Light Olive", "light olive"], ["Tan", "tan"], ["Olive", "olive"], ["Bronze", "bronze"],
-					["Dark Olive", "dark olive"], ["Dark", "dark"], ["Light Beige", "light beige"], ["Beige", "beige"],
-					["Dark Beige", "dark beige"], ["Light Brown", "light brown"], ["Brown", "brown"], ["Dark Brown", "dark brown"],
-					["Black", "black"], ["Ebony", "ebony"], ["Pure Black", "pure black"]]).pulldown();
+			option = options.addOption(`${His} natural skin color is`, "origSkin", slave).showTextBox().pulldown();
+			for (const skin of App.Medicine.Modification.naturalSkins) {
+				option.addValue(capFirstChar(skin), skin, () => slave.skin = slave.origSkin);
+			}
 		}
 
-		let option = options.addOption(`${His} skin is ${slave.skin}.`, "skin", slave);
+		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"))) {
+		} else if ((slave.skin === "sun tanned") || (slave.skin === "spray tanned")) {
 			option.addValue("Remove tanning", slave.origSkin, billMod);
 		}
 
diff --git a/src/gui/options/options.js b/src/gui/options/options.js
index 12967cf2e552c9559016fb40caf4366002e479df..5ff496ffbfa9cedf0e9cc91094dd523f7753d98b 100644
--- a/src/gui/options/options.js
+++ b/src/gui/options/options.js
@@ -91,13 +91,17 @@ App.UI.OptionsGroup = (function() {
 
 		/**
 		 * @param {string} [unit]
+		 * @param {string} [length]
 		 * @returns {Option}
 		 */
-		showTextBox(unit) {
+		showTextBox(unit, length) {
 			this.textbox = true;
 			if (unit) {
 				this.unit = unit;
 			}
+			if (length) {
+				this.textBoxLength = length;
+			}
 			return this;
 		}
 
@@ -318,6 +322,11 @@ App.UI.OptionsGroup = (function() {
 				if (this.unit) {
 					buttonGroup.append(" ", this.unit);
 				}
+				textbox.style.minWidth = "15em";
+				textbox.style.width = currentValue.length + "ch";
+				if (this.textBoxLength) {
+					textbox.style.width = this.textBoxLength;
+				}
 			}
 			if (this.comment) {
 				const comment = document.createElement("span");
diff --git a/src/npc/startingGirls/startingGirls.js b/src/npc/startingGirls/startingGirls.js
index 8a03b57faeb3de2c96e13845758dcdf4de0288b3..8839927356e6e22df4f2fd5e7c54ffc6e690bf6a 100644
--- a/src/npc/startingGirls/startingGirls.js
+++ b/src/npc/startingGirls/startingGirls.js
@@ -247,73 +247,6 @@ App.StartingGirls.uncommittedFamilyTree = function(slave) {
 	renderFamilyTree(tSlaves, slave.ID);
 };
 
-App.StartingGirls.career = function(slave) {
-	let el = new DocumentFragment();
-	let text;
-	let pullDown;
-
-	if (V.AgePenalty === 1) {
-		if (slave.actualAge < 16) {
-			text = "Very young careers: ";
-			pullDown = render(App.Utils.alphabetizeIterable(App.Data.Careers.General.veryYoung));
-		} else if (slave.actualAge <= 24) {
-			text = "Young careers: ";
-			pullDown = render(App.Utils.alphabetizeIterable(App.Data.Careers.General.young));
-		} else if (slave.intelligenceImplant >= 15) {
-			text = "Educated careers: ";
-			pullDown = render(App.Utils.alphabetizeIterable(App.Data.Careers.General.educated));
-		} else {
-			text = "Uneducated careers: ";
-			pullDown = render(App.Utils.alphabetizeIterable(App.Data.Careers.General.uneducated));
-		}
-	} else {
-		if (slave.actualAge < 16) {
-			text = "Very young careers: ";
-			pullDown = render(App.Utils.alphabetizeIterable(App.Data.Careers.General.veryYoung));
-		} else if (slave.intelligenceImplant >= 15) {
-			text = "Educated careers: ";
-			pullDown = render(App.Utils.alphabetizeIterable(App.Data.Careers.General.educated));
-		} else if (slave.actualAge <= 24) {
-			text = "Young careers: ";
-			pullDown = render(App.Utils.alphabetizeIterable(App.Data.Careers.General.young));
-		} else {
-			text = "Uneducated careers: ";
-			pullDown = render(App.Utils.alphabetizeIterable(App.Data.Careers.General.uneducated));
-		}
-	}
-	function render(options) {
-		let select = document.createElement("select");
-		select.classList.add("rajs-list");
-
-		for (const opt of options) {
-			let el = document.createElement("option");
-			el.textContent = capFirstChar(opt);
-			el.value = opt;
-			if (slave.career === opt) {
-				el.selected = true;
-			}
-			select.appendChild(el);
-		}
-		select.onchange = () => {
-			slave.career = select.options[select.selectedIndex].value;
-			jQuery("#career-textbox").empty().append(
-				App.UI.DOM.makeTextBox(
-					slave.career,
-					v => {
-						slave.career = v;
-					},
-					false,
-				)
-			);
-		};
-
-		return select;
-	}
-	el.append(text);
-	el.append(pullDown);
-	return el;
-};
-
 App.StartingGirls.applyPlayerOrigin = function(slave) {
 	switch (V.PC.career) {
 		case "wealth":
@@ -683,3 +616,736 @@ App.StartingGirls.applyPlayerOrigin = function(slave) {
 		}
 	}
 };
+
+App.StartingGirls.physical = function(slave) {
+	const el = new DocumentFragment();
+	const {he} = getPronouns(slave);
+	const options = new App.UI.OptionsGroup();
+	let option;
+
+	options.addOption("Condition", "condition", slave.health)
+		.addValueList([["Unhealthy", -40], ["Healthy", 0], ["Very healthy", 40], ["Extremely healthy", 80]]);
+
+	options.addOption(`Height: ${heightToEitherUnit(slave.height)}`, "height", slave).showTextBox("cm")
+		.addRange(145, 150, "<", "Petite")
+		.addRange(155, 160, "<", "Short")
+		.addRange(165, 170, "<", "Average")
+		.addRange(180, 185, "<", "Tall")
+		.addRange(190, 185, ">=", "Very tall");
+	option = options.addOption(`Average height for a ${slave.actualAge} year old """is ${heightToEitherUnit(Math.round(Height.mean(slave)))}"""`)
+		.customButton(
+			"Make average",
+			() => resyncSlaveHight(slave),
+			""
+		);
+	if (V.cheatMode === 1) {
+		option.customButton(
+			"Make dwarf",
+			() => slave.height = Height.random(slave, {limitMult: [-4, -1], spread: 0.15}),
+			""
+		)
+			.customButton(
+				"Make giant",
+				() => slave.height = Height.random(slave, {limitMult: [3, 10], spread: 0.15}),
+				""
+			);
+	}
+
+	options.addOption("Weight", "weight", slave)
+		.addRange(-100, -95, "<", "Emaciated")
+		.addRange(-50, -30, "<", "Skinny")
+		.addRange(-20, -10, "<", "Thin")
+		.addRange(0, 10, "<", "Average")
+		.addRange(20, 30, "<", "Plush")
+		.addRange(50, 95, "<", "Chubby")
+		.addRange(100, 130, "<", "Fat")
+		.addRange(140, 160, "<", "Obese")
+		.addRange(180, 190, "<", "Super obese")
+		.addRange(200, 190, ">=", "Dangerously obese");
+
+	options.addOption("Muscles", "muscles", slave)
+		.addRange(-100, -96, "<", "Frail")
+		.addRange(-66, -51, "<", "Very weak")
+		.addRange(-41, -6, "<", "Weak")
+		.addRange(0, 5, "<", "Normal")
+		.addRange(20, 30, "<", "Toned")
+		.addRange(40, 50, "<", "Well built")
+		.addRange(65, 95, "<", "Quite muscular")
+		.addRange(100, 95, ">=", "Ripped");
+
+	options.addOption("Waist", "waist", slave)
+		.addRange(-100, -95, "<", "	Absurd")
+		.addRange(-55, -40, "<", "Hourglass")
+		.addRange(-25, -15, "<", "Feminine")
+		.addRange(0, 10, "<", "Average")
+		.addRange(15, 40, "<", "Unattractive")
+		.addRange(55, 95, "<", "Ugly")
+		.addRange(100, 10, ">=", "Masculine");
+
+	option = options.addOption("Facial appearance", "faceShape", slave)
+		.addValue("Normal", "normal");
+	if (V.seeDicks !== 0) {
+		option.addValue("Masculine", "masculine");
+	}
+	option.addValueList([["Androgynous", "androgynous"], ["Cute", "cute"], ["Sensual", "sensual"], ["Exotic", "exotic"]]);
+
+	options.addOption("Facial attractiveness", "face", slave)
+		.addRange(-100, -95, "<", "Very ugly")
+		.addRange(-55, -40, "<", "Ugly")
+		.addRange(-15, -10, "<", "Unattractive")
+		.addRange(0, 10, "<", "Average")
+		.addRange(15, 40, "<", "Attractive")
+		.addRange(55, 95, "<", "Beautiful")
+		.addRange(100, 95, ">=", "Very beautiful");
+
+	option = options.addOption("Lips", "lips", slave)
+		.addRange(5, 10, "<", "Thin")
+		.addRange(15, 20, "<", "Normal")
+		.addRange(25, 40, "<", "Pretty")
+		.addRange(55, 70, "<", "Plush");
+	if (V.seeExtreme === 1) {
+		option.addRange(85, 95, "<", "Huge")
+			.addRange(100, 95, ">=", "Facepussy");
+	} else {
+		option.addRange(85, 70, ">=", "Huge");
+	}
+
+	options.addOption("Voice", "voice", slave)
+		.addValueList([["Mute", 0], ["Deep", 1], ["Normal", 2], ["High", 3]]);
+
+	if (slave.voice !== 0) {
+		options.addOption(V.language, "accent", slave)
+			.addValueList([
+				["Unaccented", 0],
+				[`Pretty ${aNational(slave.nationality)} accent`, 1],
+				[`Thick ${aNational(slave.nationality)} accent`, 2],
+				["Not fluent", 3]
+			]);
+	}
+
+	option = options.addOption("Teeth", "teeth", slave)
+		.addValueList([
+			["Crooked", "crooked"],
+			["Gapped", "gapped"],
+			["Braces", "straightening braces"]
+		]);
+	if (slave.physicalAge >= 12) {
+		if (slave.teeth === "baby" || slave.teeth === "mixed") {
+			slave.teeth = "normal";
+		}
+		option.addValue("Straight", "normal");
+	} else if (slave.physicalAge >= 6) {
+		if (slave.teeth === "baby" || slave.teeth === "normal" || slave.teeth === "") {
+			slave.teeth = "mixed";
+		}
+		option.addValue("Mixed adult & child", "mixed");
+	} else {
+		if (slave.teeth === "mixed" || slave.teeth === "normal" || slave.teeth === "") {
+			slave.teeth = "mixed";
+		}
+		option.addValue("Baby", "baby");
+	}
+
+	options.addOption("Breasts", "boobs", slave).showTextBox("CCs")
+		.addRange(200, 200, "<=", "Flat (AA-cup)")
+		.addRange(300, 300, "<=", "Small (A-cup)")
+		.addRange(400, 400, "<=", "Medium (B-cup)")
+		.addRange(500, 500, "<=", "Healthy (C-cup)")
+		.addRange(800, 800, "<=", "Large (DD-cup)")
+		.addRange(1200, 1200, "<=", "Very Large (G-cup)")
+		.addRange(2050, 2050, "<=", "Huge (K-cup)")
+		.addRange(3950, 3950, "<=", "Massive (Q-cup)")
+		.addRange(6000, 6000, "<=", "Monstrous")
+		.addRange(8000, 6000, ">", "Science Experiment");
+
+	options.addOption("Natural shape", "boobShape", slave)
+		.addValueList([
+			["Normal", "normal"],
+			["Perky", "perky"],
+			["Torpedo-shaped", "torpedo-shaped"],
+			["Wide-set", "wide-set"],
+			["Downward-facing", "downward-facing"],
+			["Saggy", "saggy"]
+		]);
+
+	options.addOption("Lactation", "lactation", slave)
+		.addValue("Artificial", 2, () => slave.lactationDuration = 2)
+		.addValue("Natural", 1, () => slave.lactationDuration = 2)
+		.addValue("None", 0);
+
+	options.addOption("Nipples", "nipples", slave)
+		.addValueList([["Tiny", "tiny"], ["Cute", "cute"], ["Puffy", "puffy"], ["Partially Inverted", "partially inverted"], ["Inverted", "inverted"], ["Huge", "huge"]]);
+
+	options.addOption("Areolae", "areolae", slave)
+		.addValueList([["Normal", 0], ["Large", 1], ["Wide", 2], ["Huge", 3], ["Massive", 4]]);
+
+	options.addOption("Shoulders", "shoulders", slave)
+		.addValueList([["Very narrow", -2], ["Narrow", -1], ["Feminine", 0], ["Broad", 1], ["Very broad", 2]]);
+
+	options.addOption("Hips", "hips", slave)
+		.addValueList([["Very narrow", -2], ["Narrow", -1], ["Normal", 0], ["Broad", 1], ["Very broad", 2]]);
+
+	options.addOption("Butt", "butt", slave)
+		.addValueList([["Flat", 0], ["Small", 1], ["Plump", 2], ["Big", 3], ["Huge", 4], ["Enormous", 5], ["Gigantic", 6], ["Massive", 7]]);
+
+	options.addOption("Anus", "anus", slave)
+		.addValueList([["Virgin", 0], ["Normal", 1], ["Veteran", 2], ["Gaping", 3]]);
+
+	if (slave.anus > 0) {
+		let comment;
+		if (slave.analArea <= slave.anus) {
+			comment = "Recently stretched to current size.";
+		} else if (slave.analArea - slave.anus === 1) {
+			comment = "Used to current size.";
+		} else {
+			comment = "Very broad.";
+		}
+		options.addOption("External anus appearance", "anus", slave)
+			.addValueList([
+				["Recently stretched", slave.analArea = slave.anus],
+				["Used to current size", slave.analArea = slave.anus+1],
+				["Very broad", slave.analArea = slave.anus+2],
+			]).addComment(comment);
+	}
+
+	options.addOption("Vagina", "vagina", slave)
+		.addValue("No vagina", -1, () => {
+			slave.preg = 0;
+			WombFlush(slave);
+			slave.belly = 0;
+			slave.bellyPreg = 0;
+			slave.pubertyXX = 0;
+			slave.pubertyAgeXX = V.fertilityAge;
+			slave.ovaries= 0;
+		})
+		.addValue("Virgin", 0, () => {
+			slave.preg = -1;
+			slave.belly = 0;
+			slave.bellyPreg = 0;
+			slave.ovaries = 1;
+		})
+		.addValue("Normal", 1, () => {
+			slave.preg = -1;
+			slave.belly = 0;
+			slave.bellyPreg = 0;
+			slave.ovaries = 1;
+		})
+		.addValue("Veteran", 2, () => {
+			slave.preg = -1;
+			slave.belly = 0;
+			slave.bellyPreg = 0;
+			slave.ovaries = 1;
+		})
+		.addValue("Gaping", 3, () => {
+			slave.preg = -1;
+			slave.belly = 0;
+			slave.bellyPreg = 0;
+			slave.ovaries = 1;
+		});
+
+	if (slave.vagina > -1) {
+		if (slave.dick === 0) {
+			options.addOption("Clit", "clit", slave)
+				.addValueList([["Normal", 0], ["Large", 1], ["Huge", 2]]);
+		}
+
+		options.addOption("Labia", "labia", slave)
+			.addValueList([["Normal", 0], ["Large", 1], ["Huge", 2], ["Huge Dangling", 3]]);
+
+		options.addOption("Vaginal wetness", "vaginaLube", slave)
+			.addValueList([["Dry", 0], ["Normal", 1], ["Excessive", 2]]);
+
+		if (V.seePreg !== 0) {
+			/* This is only shown if slave has vagina */
+			options.addOption("Puberty", "pubertyXX", slave)
+				.addValue("Prepubescent", 0, () => {
+					slave.pubertyAgeXX = V.fertilityAge;
+					slave.belly = 0;
+					slave.bellyPreg = 0;
+					WombFlush(slave);
+				}).addValue("Postpubescent", 1);
+
+			options.addOption("Age of puberty", "pubertyAgeXX", slave).showTextBox();
+
+			if (slave.pubertyXX === 1) {
+				option = options.addOption("Pregnancy", "preg", slave);
+				if (V.seeHyperPreg === 1 && V.cheatMode === 1) {
+					option.addValue("Bursting at the seams", 43, () => {
+						slave.pregType = 150;
+						slave.pregWeek = 43;
+						slave.pregKnown = 1;
+						slave.belly = 2700000;
+						slave.bellyPreg = 2700000;
+						slave.pubertyXX = 1;
+					});
+					if (slave.preg === 43) {
+						option.addComment("Extreme hyper pregnancy!");
+					}
+				}
+				option.addValue("Completely Filled", 42, () => {
+					slave.pregType = 8;
+					slave.pregWeek = 42;
+					slave.pregKnown = 1;
+					slave.belly = 120000;
+					slave.bellyPreg = 120000;
+					slave.pubertyXX = 1;
+				}).addValue("Ready to drop", 40, () => {
+					slave.pregType = 1;
+					slave.pregWeek = 40;
+					slave.pregKnown = 1;
+					slave.belly = 15000;
+					slave.bellyPreg = 15000;
+					slave.pubertyXX = 1;
+				}).addValue("Advanced", 34, () => {
+					slave.pregType = 1;
+					slave.pregWeek = 34;
+					slave.pregKnown = 1;
+					slave.belly = 10000;
+					slave.bellyPreg = 10000;
+					slave.pubertyXX = 1;
+				}).addValue("Showing", 27, () => {
+					slave.pregType = 1;
+					slave.pregWeek = 27;
+					slave.pregKnown = 1;
+					slave.belly = 5000;
+					slave.bellyPreg = 5000;
+					slave.pubertyXX = 1;
+				}).addValue("Early", 12, () => {
+					slave.pregType = 1;
+					slave.pregWeek = 12;
+					slave.pregKnown = 1;
+					slave.belly = 100;
+					slave.bellyPreg = 100;
+					slave.pubertyXX = 1;
+				}).addValue("None", 0, () => {
+					slave.pregType = 0;
+					slave.belly = 0;
+					slave.bellyPreg = 0;
+					slave.pregSource = 0;
+					slave.pregWeek = 0;
+					slave.pregKnown = 0;
+				}).addValue("Contraceptives", -1, () => {
+					slave.pregType = 0;
+					slave.belly = 0;
+					slave.bellyPreg = 0;
+					slave.pregSource = 0;
+					slave.pregWeek = 0;
+					slave.pregKnown = 0;
+				}).addValue("Barren", -2, () => {
+					slave.pregType = 0;
+					slave.belly = 0;
+					slave.bellyPreg = 0;
+					slave.pregSource = 0;
+					slave.pregWeek = 0;
+					slave.pregKnown = 0;
+				});
+				options.addOption("Births", "birthsTotal", slave.counter).showTextBox().addComment(`How many times ${he} has already given birth, not necessarily while owned by you.`);
+			}
+
+			if (V.PC.dick > 0 && slave.preg > 0) {
+				options.addOption("Father of child", "pregSource", slave)
+					.addValueList([["My child", -1], ["Not me", 0]]);
+			}
+		}
+	}
+
+	if (V.seeDicks !== 0 || V.makeDicks === 1) {
+		options.addOption("Penis", "dick", slave)
+			.addValue("None", 0, () => {
+				slave.balls = 0;
+				slave.pubertyXY = 0;
+				slave.pubertyAgeXY = V.potencyAge;
+			})
+			.addValue("Tiny", 1, () => slave.clit = 0)
+			.addValue("Small", 2, () => slave.clit = 0)
+			.addValue("Normal", 3, () => slave.clit = 0)
+			.addValue("Large", 4, () => slave.clit = 0)
+			.addValue("Massive", 5, () => slave.clit = 0);
+
+		if (slave.dick > 0) {
+			option = options.addOption("Foreskin", "foreskin", slave);
+			if (V.seeCircumcision === 1) {
+				option.addValue("Circumcised", 0);
+			} else if (slave.foreskin === 0) {
+				slave.foreskin = 3;
+			}
+			option.addValueList([["Tiny", 1], ["Small", 2], ["Normal", 3], ["Large", 4], ["Massive", 5]]);
+		}
+
+		options.addOption("Testicles", "balls", slave)
+			.addValue("None", 0, () => {
+				slave.pubertyXY = 0;
+				slave.pubertyAgeXY = V.potencyAge;
+				slave.scrotum = 0;
+			}).addValueList([["Vestigial", 1], ["Small", 2], ["Normal", 3], ["Large", 4], ["Massive", 5]]);
+
+		options.addOption("Age of Male Puberty", "pubertyAgeXY", slave).showTextBox();
+
+		if (slave.balls > 0) {
+			options.addOption("Ballsack", "scrotum", slave)
+				.addValueList([["None", 0], ["Tiny", 1], ["Small", 2], ["Normal", 3], ["Large", 4], ["Massive", 5]]);
+
+			options.addOption("Male Puberty", "pubertyXY", slave)
+				.addValue("Prepubescent", 0, () => slave.pubertyAgeXY = V.potencyAge)
+				.addValue("Postpubescent", 1);
+		}
+	}
+
+	options.addOption("Prostate", "prostate", slave)
+		.addValueList([
+			["No prostate", 0],
+			["Has a prostate", 1]
+		]);
+
+	const optionLeft = options.addOption("Left eye", "vision", slave.eye.left);
+	const optionRight = options.addOption("Right eye", "vision", slave.eye.right);
+	optionLeft.addValueList([["Normal", 2], ["Nearsighted", 1]]);
+	optionRight.addValueList([["Normal", 2], ["Nearsighted", 1]]);
+	if (V.seeExtreme === 1) {
+		optionLeft.addValue("Blind", 0);
+		optionRight.addValue("Blind", 0);
+	} else {
+		if (slave.eye.left.vision === 0) {
+			slave.eye.left.vision = 2;
+		}
+		if (slave.eye.right.vision === 0) {
+			slave.eye.right.vision = 2;
+		}
+	}
+	option = options.addOption("Natural eye color", "origColor", slave.eye);
+	for (const color of App.Medicine.Modification.eyeColor.map(color => color.value)) {
+		option.addValue(capFirstChar(color), color);
+	}
+	option.pulldown();
+
+	option = options.addOption("Hearing", "hears", slave);
+	option.addValueList([["Normal", 0], ["Hard of hearing", -1]]);
+	if (V.seeExtreme === 1) {
+		option.addValue("Deaf", -2);
+	} else if (slave.hears === 0) {
+		slave.hears = 2;
+	}
+
+	if (V.seeExtreme === 1) {
+		options.addOption("Smell ability", "smells", slave)
+			.addValueList([["Normal", 0], ["None", -1]]);
+
+		options.addOption("Taste ability", "tastes", slave)
+			.addValueList([["Normal", 0], ["None", -1]]);
+
+		State.temporary.LA = hasLeftArm(slave);
+		options.addOption("Left arm", "LA", State.temporary)
+			.addValue("Healthy", true, () => slave.arm.left = new App.Entity.LimbState())
+			.addValue("Amputated", false, () => slave.arm.left = null);
+
+		State.temporary.RA = hasRightArm(slave);
+		options.addOption("Right arm", "RA", State.temporary)
+			.addValue("Healthy", true, () => slave.arm.right = new App.Entity.LimbState())
+			.addValue("Amputated", false, () => slave.arm.right = null);
+
+		State.temporary.LL = hasLeftLeg(slave);
+		options.addOption("Left leg", "LL", State.temporary)
+			.addValue("Healthy", true, () => slave.leg.left = new App.Entity.LimbState())
+			.addValue("Amputated", false, () => slave.leg.left = null);
+
+		State.temporary.RL = hasRightLeg(slave);
+		options.addOption("Right leg", "RL", State.temporary)
+			.addValue("Healthy", true, () => slave.leg.right = new App.Entity.LimbState())
+			.addValue("Amputated", false, () => slave.leg.right = null);
+	}
+
+	el.append(options.render());
+	return el;
+};
+
+App.StartingGirls.profile = function(slave) {
+	const el = new DocumentFragment();
+	let options = new App.UI.OptionsGroup();
+	let r;
+	let option;
+	const {His} = getPronouns(slave);
+
+	options.addOption("Birth name", "birthName", slave).showTextBox();
+	options.addOption("Slave name", "slaveName", slave).showTextBox();
+	options.addOption("Birth surname", "birthSurname", slave).showTextBox();
+	options.addOption("Slave surname", "slaveSurname", slave).showTextBox();
+
+	option = options.addOption("Career", "career", slave).showTextBox();
+	let careers;
+	let text;
+	if (V.AgePenalty === 1) {
+		if (slave.actualAge < 16) {
+			text = "Very young careers";
+			careers = App.Data.Careers.General.veryYoung;
+		} else if (slave.actualAge <= 24) {
+			text = "Young careers";
+			careers = App.Utils.alphabetizeIterable(App.Data.Careers.General.young);
+		} else if (slave.intelligenceImplant >= 15) {
+			text = "Educated careers";
+			careers = App.Utils.alphabetizeIterable(App.Data.Careers.General.educated);
+		} else {
+			text = "Uneducated careers";
+			careers = App.Utils.alphabetizeIterable(App.Data.Careers.General.uneducated);
+		}
+	} else {
+		if (slave.actualAge < 16) {
+			text = "Very young careers";
+			careers = App.Utils.alphabetizeIterable(App.Data.Careers.General.veryYoung);
+		} else if (slave.intelligenceImplant >= 15) {
+			text = "Educated careers";
+			careers = App.Utils.alphabetizeIterable(App.Data.Careers.General.educated);
+		} else if (slave.actualAge <= 24) {
+			text = "Young careers";
+			careers = App.Utils.alphabetizeIterable(App.Data.Careers.General.young);
+		} else {
+			text = "Uneducated careers";
+			careers = App.Utils.alphabetizeIterable(App.Data.Careers.General.uneducated);
+		}
+	}
+	for (const career of careers) {
+		option.addValue(capFirstChar(career), career);
+	}
+	option.addComment(text).pulldown();
+
+	options.addOption("Legal status", "indenture", slave)
+		.addValue("Slave", -1, () => slave.indentureRestrictions = 0)
+		.addRange(52, 0, ">=", "Indentured Servant");
+	if (slave.indenture > -1) {
+		options.addOption("Remaining weeks", "indenture", slave).showTextBox();
+
+		options.addOption("Indenture restrictions", "indentureRestrictions", slave)
+			.addValueList([["None", 0], ["Protective", 1], ["Restrictive", 2]]);
+	}
+
+	options.addOption("Age", "actualAge", slave).showTextBox()
+		.customButton("Resync characteristics to age", () => resyncSlaveToAge(slave), "")
+		.customButton("Resync only height to age", () => slave.height = Height.random(slave), "")
+		.addComment("It is recommended to resync if you change age significantly");
+
+	options.addOption("Birth week", "birthWeek", slave).showTextBox();
+
+	options.addOption("Genes", "genes", slave)
+		.addValue("XX (Female)", "XX", () => {
+			slave.dick = 0;
+			slave.balls = 0;
+			slave.clit = 0;
+			slave.pubertyXY = 0;
+			slave.pubertyAgeXY = V.potencyAge;
+			slave.pubertyXX = (slave.pubertyAgeXX < slave.actualAge ? 1 : 0);
+			slave.vagina = Math.max(0, slave.vagina);
+			slave.boobs = Math.max(500, slave.boobs);
+			slave.balls = 0;
+			slave.scrotum = 0;
+			slave.prostate = 0;
+			slave.shoulders = either(-2, -1, 0);
+			slave.hips = either(-2, -1, 0);
+		}).addValue("XY (Male)", "XY", () => {
+			slave.dick = 3;
+			slave.vagina = -1;
+			WombFlush(slave);
+			slave.belly = 0;
+			slave.bellyPreg = 0;
+			slave.pubertyXY = (slave.pubertyAgeXY < slave.actualAge ? 1 : 0);
+			slave.pubertyXX = 0;
+			slave.pubertyAgeXX = V.fertilityAge;
+			slave.ovaries = 0;
+			slave.boobs = 0;
+			slave.balls = 3;
+			slave.scrotum = 3;
+			slave.prostate = 1;
+			slave.shoulders = either(0, 1, 2);
+			slave.hips = either(0, 1, 2);
+		});
+
+	option = options.addOption("Prestige", "prestige", slave)
+		.addValueList([["None", 0], ["Locally known", 1], ["Regionally famous", 2], ["World renowned", 3]]);
+	if (slave.prestige > 0) {
+		r = [];
+		r.push("Starting slaves incur an extreme cost penalty for prestige. This slave's");
+		if (slave.actualAge >= 25) {
+			if (slave.actualAge > 35) {
+				r.push(" advanced");
+			}
+			r.push(" age decreases the penalty.");
+		} else {
+			r.push(" young age requires paying the full penalty.");
+		}
+		option.addComment(`<span class=warning>${r.join(" ")}</span>`);
+	}
+
+	options.addOption(`${His} nationality is`, "nationality", slave).showTextBox()
+		.addValueList(Object.keys(App.Data.SlaveSummary.short.nationality))
+		.pulldown();
+
+
+	if (V.seeRace === 1) {
+		options.addOption(`${His} ethnicity is`, "race", slave).showTextBox().pulldown()
+			.addValueList([["White", "white"], ["Asian", "asian"], ["Latina", "latina"], ["Middle Eastern", "middle eastern"],
+				["Black", "black"], ["Semitic", "semitic"], ["Southern European", "southern european"], ["Indo-Aryan", "indo-aryan"],
+				["Amerindian", "amerindian"], ["Pacific Islander", "pacific islander"], ["Malay", "malay"], ["Mixed Race", "mixed race"]]);
+	}
+
+	el.append(options.render());
+	App.UI.DOM.appendNewElement("h3", el, "Optional customizations");
+	options = new App.UI.OptionsGroup();
+
+	options.addOption("Origin story", "origin", slave).showTextBox("", "100em").addComment("Use complete, capitalized and punctuated sentences.");
+
+	options.addOption("Origin override", "originOverride", V)
+		.addValue("Enable", 1).on()
+		.addValue("Disable", 0).off()
+		.addComment("Prevent Starting Girls from overwriting custom origin and tattoo with its defaults.");
+
+	if (slave.prestige) {
+		options.addOption("Prestige description", "prestigeDesc", V).showTextBox().addComment("Use complete, capitalized and punctuated sentences.");
+	}
+	options.addOption("Description", "desc", slave.custom).showTextBox().addComment("Use complete, capitalized and punctuated sentences.");
+	options.addOption("Label", "label", slave.custom).showTextBox().addComment("Use a short phrase");
+
+
+	el.append(options.render());
+	return el;
+};
+
+App.StartingGirls.mental = function(slave) {
+	const el = new DocumentFragment();
+	const options = new App.UI.OptionsGroup();
+	let option;
+	let r;
+
+	options.addOption("Intelligence", "intelligence", slave)
+		.addValueList([["Moronic", -100], ["Very stupid", -60], ["Stupid", -30], ["Average", 0], ["Smart", 30], ["Very smart", 60], ["Brilliant", 100]]);
+
+	options.addOption("Education", "intelligenceImplant", slave)
+		.addValueList([["Uneducated", 0], ["Educated", 15], ["Well educated", 30]]);
+
+	option = options.addOption("Devotion", "devotion", slave).showTextBox()
+		.addRange(-100, -95, "<", "Utterly hateful")
+		.addRange(-70, -50, "<", "Hateful")
+		.addRange(-35, -20, "<", "Resistant")
+		.addRange(0, 20, "<", "Ambivalent")
+		.addRange(35, 50, "<", "Accepting")
+		.addRange(70, 95, "<", "Devoted")
+		.addRange(100, 95, ">=", "Worshipful");
+	if (slave.devotion > 20) {
+		r = [];
+		r.push("Starting slaves incur");
+		if (slave.devotion > 50) {
+			r.push("severe cost penalty at very high");
+		} else {
+			r.push("an additional cost penalty at high");
+		}
+		r.push("levels of devotion. This slave's");
+		if (slave.actualAge >= 25) {
+			if (slave.actualAge > 35) {
+				r.push("advanced");
+			}
+			r.push("age decreases the penalty.");
+		} else {
+			r.push("young age requires paying the full penalty.");
+		}
+		option.addComment(`<span class=warning>${r.join(" ")}</span>`);
+	}
+
+	options.addOption("Trust", "trust", slave).showTextBox()
+		.addRange(-100, -95, "<", "Abjectly terrified")
+		.addRange(-70, -50, "<", "Terrified")
+		.addRange(-35, -20, "<", "Frightened")
+		.addRange(0, 20, "<", "Fearful")
+		.addRange(35, 50, "<", "Careful")
+		.addRange(70, 95, "<", "Trusting")
+		.addRange(100, 95, ">=", "Absolute trust");
+
+
+
+	if (slave.fetishKnown === 0) {
+		options.addOption("Fetish", "fetishKnown", slave)
+			.addValueList([["Unknown", 0], ["Known", 1]]);
+	} else {
+		option = options.addOption("Fetish", "fetish", slave)
+			.addValue("Unknown", "", () => {
+				slave.fetish = either("boobs", "buttslut", "cumslut", "dom", "humiliation", "masochist", "pregnancy", "sadist",
+					"submissive", "none", "none", "none", "none", "none", "none", "none", "none", "none", "none");
+				slave.fetishKnown = 0;
+			}).addValueList([["None", "none"], ["Sub", "submissive"], ["Dom", "dom"], ["Cumslut", "cumslut"], ["Humiliation", "humiliation"],
+				["Buttslut", "buttslut"], ["Breasts", "boobs"], ["Pregnancy", "pregnancy"], ["Sadism", "sadist"], ["Masochism", "masochist"]]);
+		if (V.seeExtreme === 1) {
+			option.addValue("Mindbroken", "mindbroken", () => {
+				slave.fetishStrength = 10;
+				slave.sexualFlaw = "none";
+				slave.sexualQuirk = "none";
+				slave.behavioralFlaw = "none";
+				slave.behavioralQuirk = "none";
+			});
+		}
+
+		if (slave.fetish !== "none" && slave.fetish !== "mindbroken") {
+			options.addOption("Fetish strength", "fetishStrength", slave)
+				.addRange(15, 30, "<=", "Very Low")
+				.addRange(45, 60, "<=", "Low")
+				.addRange(75, 85, "<=", "Normal")
+				.addRange(90, 95, "<=", "High")
+				.addRange(100, 95, ">", "Extremely High");
+		}
+	}
+
+	options.addOption("Sexuality", "attrKnown", slave)
+		.addValue("Known", 1, () => {
+			slave.attrXX = random(0, 100);
+			slave.attrXY = random(0, 100);
+			slave.energy = random(1, 90);
+		}).on()
+		.addValue("Unknown", 0).off();
+	if (slave.attrKnown === 1) {
+		options.addOption("Attraction to men", "attrXY", slave)
+			.addRange(0, 5, "<=", "Disgusted").off()
+			.addRange(10, 15, "<=", "Turned off").off()
+			.addRange(25, 35, "<=", "Not attracted").off()
+			.addRange(50, 65, "<=", "Indifferent").neutral()
+			.addRange(75, 85, "<=", "Attracted").on()
+			.addRange(90, 95, "<=", "Aroused").on()
+			.addRange(100, 95, ">", "Passionate").on();
+		options.addOption("Attraction to women", "attrXX", slave)
+			.addRange(0, 5, "<=", "Disgusted").off()
+			.addRange(10, 15, "<=", "Turned off").off()
+			.addRange(25, 35, "<=", "Not attracted").off()
+			.addRange(50, 65, "<=", "Indifferent").neutral()
+			.addRange(75, 85, "<=", "Attracted").on()
+			.addRange(90, 95, "<=", "Aroused").on()
+			.addRange(100, 95, ">", "Passionate").on();
+
+		options.addOption("Sex drive", "energy", slave)
+			.addRange(5, 10, "<=", "Frigid").off()
+			.addRange(25, 40, "<=", "Poor").off()
+			.addRange(45, 60, "<=", "Average").neutral()
+			.addRange(65, 80, "<=", "Powerful").on()
+			.addRange(85, 99, "<=", "Sex addict").on()
+			.addRange(100, 99, ">", "Nympho").on();
+	}
+
+	if (slave.fetish !== "mindbroken") {
+		options.addOption("Behavioral Flaw", "behavioralFlaw", slave)
+			.addValueList([["None", "none"], ["Arrogant", "arrogant"], ["Bitchy", "bitchy"], ["Odd", "odd"], ["Hates Men", "hates men"],
+				["Hates Women", "hates women"], ["Anorexic", "anorexic"], ["Gluttonous", "gluttonous"], ["Devout", "devout"],
+				["Liberated", "liberated"]]);
+
+		options.addOption("Behavioral Quirk", "behavioralQuirk", slave)
+			.addValueList([["None", "none"], ["Confident", "confident"], ["Cutting", "cutting"], ["Funny", "funny"],
+				["Adores Men", "adores men"], ["Adores Women", "adores women"], ["Insecure", "insecure"], ["Fitness", "fitness"],
+				["Sinful", "sinful"], ["Advocate", "advocate"]]);
+
+		options.addOption("Sexual Flaw", "sexualFlaw", slave)
+			.addValueList([["None", "none"], ["Hates Oral", "hates oral"], ["Hates Anal", "hates anal"],
+				["Hates Penetration", "hates penetration"], ["Repressed", "repressed"], ["Shamefast", "shamefast"], ["Apathetic", "apathetic"],
+				["Crude", "crude"], ["Judgemental", "judgemental"], ["Sexually idealistic", "idealistic"]]);
+
+		options.addOption("Sexual Quirk", "sexualQuirk", slave)
+			.addValueList([["None", "none"], ["Oral", "gagfuck queen"], ["Anal", "painal queen"], ["Penetration", "strugglefuck queen"],
+				["Perverted", "perverted"], ["Tease", "tease"], ["Caring", "caring"], ["Unflinching", "unflinching"], ["Size queen", "size queen"],
+				["Romantic", "romantic"]]);
+	}
+
+	el.append(options.render());
+
+	return el;
+};
diff --git a/src/npc/startingGirls/startingGirls.tw b/src/npc/startingGirls/startingGirls.tw
index eb8a930e046c3575c14da7388c7e367ae4a7892d..6dc4e30a17bbc6c267dfbcebb163fd38ab8faefa 100644
--- a/src/npc/startingGirls/startingGirls.tw
+++ b/src/npc/startingGirls/startingGirls.tw
@@ -200,14 +200,13 @@
 <h2>You are customizing this slave:</h2> <<includeDOM App.Desc.longSlave(V.activeSlave, {market: "generic"})>>
 
 <div class="tab-bar">
-	<button class="tab-links" onclick="App.UI.tabBar.openTab(event, 'Overview')" id="tab Overview">Overview</button>
+	<button class="tab-links" onclick="App.UI.tabBar.openTab(event, 'profile')" id="tab profile">Profile</button>
 	<button class="tab-links" onclick="App.UI.tabBar.openTab(event, 'Physical')" id="tab Physical">Physical</button>
 	<button class="tab-links" onclick="App.UI.tabBar.openTab(event, 'Mental')" id="tab Mental">Mental</button>
 	<button class="tab-links" onclick="App.UI.tabBar.openTab(event, 'Skills')" id="tab Skills">Skills</button>
 	<button class="tab-links" onclick="App.UI.tabBar.openTab(event, 'Family', App.StartingGirls.uncommittedFamilyTree(V.activeSlave))" id="tab Family">Family</button>
 	<button class="tab-links" onclick="App.UI.tabBar.openTab(event, 'body-mods')" id="tab body-mods">Body Mods</button>
 	<button class="tab-links" onclick="App.UI.tabBar.openTab(event, 'salon')" id="tab salon">Salon</button>
-	<button class="tab-links" onclick="App.UI.tabBar.openTab(event, 'Customization')" id="tab Customization">Customization</button>
 	<<if $cash >= _slaveCost>>
 		<button class="tab-links" onclick="App.UI.tabBar.openTab(event, 'assignRemove')" id="tab assignRemove">Finalize</button>
 	<<else>>
@@ -217,627 +216,21 @@
 
 <<run App.Utils.setLocalPronouns($activeSlave)>>
 
-<div id="Overview" class="tab-content">
+<div id="profile" class="tab-content">
 	<div class="content">
-
-	<<set _options = new App.UI.OptionsGroup()>>
-
-	<<set _option = _options.addOption("Devotion", "devotion", $activeSlave).showTextBox()
-	.addRange(-100, -95, "<", "Utterly hateful")
-	.addRange(-70, -50, "<", "Hateful")
-	.addRange(-35, -20, "<", "Resistant")
-	.addRange(0, 20, "<", "Ambivalent")
-	.addRange(35, 50, "<", "Accepting")
-	.addRange(70, 95, "<", "Devoted")
-	.addRange(100, 95, ">=", "Worshipful")>>
-	<<if $activeSlave.devotion > 20>>
-		<<set _comment = "Starting slaves incur">>
-		<<if $activeSlave.devotion > 50>>
-			<<run _comment += " severe cost penalty at very high">>
-		<<else>>
-			<<run _comment += " an additional cost penalty at high">>
-		<</if>>
-		<<run _comment += " levels of devotion. This slave's">>
-		<<if $activeSlave.actualAge >= 25>>
-			<<if $activeSlave.actualAge > 35>>advanced	<</if>>
-			<<run _comment += " age decreases the penalty.">>
-		<<else>>
-			<<run _comment += " young age requires paying the full penalty.">>
-		<</if>>
-		<<run _option.addComment(`<span class=warning>${_comment}</span>`)>>
-	<</if>>
-
-	<<run _options.addOption("Trust", "trust", $activeSlave).showTextBox()
-	.addRange(-100, -95, "<", "Abjectly terrified")
-	.addRange(-70, -50, "<", "Terrified")
-	.addRange(-35, -20, "<", "Frightened")
-	.addRange(0, 20, "<", "Fearful")
-	.addRange(35, 50, "<", "Careful")
-	.addRange(70, 95, "<", "Trusting")
-	.addRange(100, 95, ">=", "Absolute trust")>>
-
-	<<run _options.addOption("Legal status", "indenture", $activeSlave)
-	.addValue("Slave", -1, () => V.activeSlave.indentureRestrictions = 0)
-	.addRange(52, 0, ">=", "Indentured Servant")>>
-	<<if $activeSlave.indenture > -1>>
-		<<run _options.addOption("Remaining weeks", "indenture", $activeSlave).showTextBox()>>
-
-		<<run _options.addOption("Indenture restrictions", "indentureRestrictions", $activeSlave)
-		.addValueList([["None", 0], ["Protective", 1], ["Restrictive", 2]])>>
-	<</if>>
-
-	<<run _options.addOption("Age", "actualAge", $activeSlave).showTextBox()
-	.customButton("Resync characteristics to age", () => resyncSlaveToAge(V.activeSlave))
-	.customButton("Resync only height to age", () => V.activeSlave.height = Height.random(V.activeSlave))
-	.addComment("It is recommended to resync if you change age significantly")>>
-
-	<<run _options.addOption("Birth week", "birthWeek", $activeSlave).showTextBox()>>
-
-	<<run _options.addOption("Genes", "genes", $activeSlave)
-	.addValue("XX (Female)", "XX", () => {
-		V.activeSlave.dick = 0;
-		V.activeSlave.balls = 0;
-		V.activeSlave.clit = 0;
-		V.activeSlave.pubertyXY = 0;
-		V.activeSlave.pubertyAgeXY = V.potencyAge;
-		V.activeSlave.pubertyXX = (V.activeSlave.pubertyAgeXX < V.activeSlave.actualAge ? 1 : 0);
-		V.activeSlave.vagina = Math.max(0, V.activeSlave.vagina);
-		V.activeSlave.boobs = Math.max(500, V.activeSlave.boobs);
-		V.activeSlave.balls = 0;
-		V.activeSlave.scrotum = 0;
-		V.activeSlave.prostate = 0;
-		V.activeSlave.shoulders = either(-2,-1,0);
-		V.activeSlave.hips = either(-2,-1,0);
-	}).addValue("XY (Male)", "XY", () => {
-		V.activeSlave.dick = 3;
-		V.activeSlave.vagina = -1;
-		WombFlush(V.activeSlave);
-		V.activeSlave.belly = 0;
-		V.activeSlave.bellyPreg = 0;
-		V.activeSlave.pubertyXY = (V.activeSlave.pubertyAgeXY < V.activeSlave.actualAge ? 1 : 0);
-		V.activeSlave.pubertyXX = 0;
-		V.activeSlave.pubertyAgeXX = V.fertilityAge;
-		V.activeSlave.ovaries = 0;
-		V.activeSlave.boobs = 0;
-		V.activeSlave.balls = 3;
-		V.activeSlave.scrotum = 3;
-		V.activeSlave.prostate = 1;
-		V.activeSlave.shoulders = either(0,1,2);
-		V.activeSlave.hips = either(0,1,2);
-	})>>
-
-	<<run _options.addOption("Condition", "condition", $activeSlave.health)
-	.addValueList([["Unhealthy", -40], ["Healthy", 0], ["Very healthy", 40], ["Extremely healthy", 80]])>>
-
-	<<set _option = _options.addOption("Prestige", "prestige", $activeSlave)
-	.addValueList([["None", 0], ["Locally known", 1], ["Regionally famous", 2], ["World renowned", 3]])>>
-	<<if $activeSlave.prestige > 0>>
-		<<set _comment = "Starting slaves incur an extreme cost penalty for prestige. This slave's">>
-		<<if $activeSlave.actualAge >= 25>>
-			<<if $activeSlave.actualAge > 35>>
-				<<set _comment += " advanced">>
-			<</if>>
-			<<set _comment += " age decreases the penalty.">>
-		<<else>>
-			<<set _comment += " young age requires paying the full penalty.">>
-		<</if>>
-		<<run _option.addComment(`<span class=warning>${_comment}</span>`)>>
-	<</if>>
-
-	<<run _options.addOption("$His nationality is", "nationality", $activeSlave).showTextBox()
-	.addValueList(Object.keys(App.Data.SlaveSummary.short.nationality))
-	.pulldown()
-	>>
-
-	<<if $seeRace == 1>>
-		<<run _options.addOption("$His ethnicity is", "race", $activeSlave).showTextBox()
-		.addValueList([["White", "white"], ["Asian", "asian"], ["Latina", "latina"], ["Middle Eastern", "middle eastern"],
-			["Black", "black"], ["Semitic", "semitic"], ["Southern European", "southern european"], ["Indo-Aryan", "indo-aryan"],
-			["Amerindian", "amerindian"], ["Pacific Islander", "pacific islander"], ["Malay", "malay"], ["Mixed Race", "mixed race"]])>>
-	<</if>>
-
-	<<run _options.addOption("Intelligence", "intelligence", $activeSlave)
-	.addValueList([["Moronic", -100], ["Very stupid", -60], ["Stupid", -30], ["Average", 0], ["Smart", 30], ["Very smart", 60], ["Brilliant", 100]])>>
-
-	<<run _options.addOption("Education", "intelligenceImplant", $activeSlave)
-	.addValueList([["Uneducated", 0], ["Educated", 15], ["Well educated", 30]])>>
-
-	<<includeDOM _options.render()>>
+		<<includeDOM App.StartingGirls.profile($activeSlave)>>
 	</div>
 </div>
 
 <div id="Physical" class="tab-content">
 	<div class="content">
-
-	<<set _options = new App.UI.OptionsGroup()>>
-
-	<<run _options.addOption(`Height: ${heightToEitherUnit($activeSlave.height)}`, "height", $activeSlave).showTextBox("cm")
-	.addRange(145, 150, "<", "Petite")
-	.addRange(155, 160, "<", "Short")
-	.addRange(165, 170, "<", "Average")
-	.addRange(180, 185, "<", "Tall")
-	.addRange(190, 185, ">=", "Very tall")>>
-	<<set _option = _options.addOption(`Average height for a ${$activeSlave.actualAge} year old """is ${heightToEitherUnit(Math.round(Height.mean(V.activeSlave)))}"""`)
-	.customButton("Make average", () => resyncSlaveHight($activeSlave))>>
-	<<if $cheatMode === 1>>
-		<<run _option.customButton("Make dwarf", () => V.activeSlave.height = Height.random(V.activeSlave, {limitMult:	[-4, -1], spread: 0.15}))
-		.customButton("Make giant", () => V.activeSlave.height = Height.random(V.activeSlave, {limitMult:	[3, 10], spread: 0.15}))>>
-	<</if>>
-
-	<<run _options.addOption("Weight", "weight", $activeSlave)
-	.addRange(-100, -95, "<", "Emaciated")
-	.addRange(-50, -30, "<", "Skinny")
-	.addRange(-20, -10, "<", "Thin")
-	.addRange(0, 10, "<", "Average")
-	.addRange(20, 30, "<", "Plush")
-	.addRange(50, 95, "<", "Chubby")
-	.addRange(100, 130, "<", "Fat")
-	.addRange(140, 160, "<", "Obese")
-	.addRange(180, 190, "<", "Super obese")
-	.addRange(200, 190, ">=", "Dangerously obese")>>
-
-	<<run _options.addOption("Muscles", "muscles", $activeSlave)
-	.addRange(-100, -96, "<", "Frail")
-	.addRange(-66, -51, "<", "Very weak")
-	.addRange(-41, -6, "<", "Weak")
-	.addRange(0, 5, "<", "Normal")
-	.addRange(20, 30, "<", "Toned")
-	.addRange(40, 50, "<", "Well built")
-	.addRange(65, 95, "<", "Quite muscular")
-	.addRange(100, 95, ">=", "Ripped")>>
-
-	<<run _options.addOption("Waist", "waist", $activeSlave)
-	.addRange(-100, -95, "<", "	Absurd")
-	.addRange(-55, -40, "<", "Hourglass")
-	.addRange(-25, -15, "<", "Feminine")
-	.addRange(0, 10, "<", "Average")
-	.addRange(15, 40, "<", "Unattractive")
-	.addRange(55, 95, "<", "Ugly")
-	.addRange(100, 10, ">=", "Masculine")>>
-
-	<<set _option = _options.addOption("Facial appearance", "faceShape", $activeSlave)
-	.addValue("Normal", "normal")>>
-	<<if $seeDicks !== 0>>
-		<<run _option.addValue("Masculine", "masculine")>>
-	<</if>>
-	<<run _option.addValueList([["Androgynous", "androgynous"], ["Cute", "cute"], ["Sensual", "sensual"], ["Exotic", "exotic"]])>>
-
-	<<run _options.addOption("Facial attractiveness", "face", $activeSlave)
-	.addRange(-100, -95, "<", "Very ugly")
-	.addRange(-55, -40, "<", "Ugly")
-	.addRange(-15, -10, "<", "Unattractive")
-	.addRange(0, 10, "<", "Average")
-	.addRange(15, 40, "<", "Attractive")
-	.addRange(55, 95, "<", "Beautiful")
-	.addRange(100, 95, ">=", "Very beautiful")>>
-
-	<<set _option = _options.addOption("Lips", "lips", $activeSlave)
-	.addRange(5, 10, "<", "Thin")
-	.addRange(15, 20, "<", "Normal")
-	.addRange(25, 40, "<", "Pretty")
-	.addRange(55, 70, "<", "Plush")>>
-	<<if $seeExtreme == 1>>
-		<<run _option.addRange(85, 95, "<", "Huge")
-			.addRange(100, 95, ">=", "Facepussy")>>
-	<<else>>
-		<<run _option.addRange(85, 70, ">=", "Huge")>>
-	<</if>>
-
-	<<run _options.addOption("Voice", "voice", $activeSlave)
-	.addValueList([["Mute", 0], ["Deep", 1], ["Normal", 2], ["High", 3]])>>
-
-	<<if $activeSlave.voice !== 0>>
-		<<run _options.addOption("$language", "accent", $activeSlave)
-		.addValueList([["Unaccented", 0], [`Pretty ${aNational($activeSlave.nationality)} accent`, 1],
-		[`Thick ${aNational($activeSlave.nationality)} accent`, 2], ["Not fluent", 3]])>>
-	<</if>>
-
-	<<set _option = _options.addOption("Teeth", "teeth", $activeSlave)
-	.addValueList([["Crooked", "crooked"], ["Gapped", "gapped"], ["Braces", "straightening braces"]])>>
-	<<if $activeSlave.physicalAge >= 12>>
-		<<if $activeSlave.teeth == "baby" || $activeSlave.teeth == "mixed">>
-			<<set $activeSlave.teeth = "normal">>
-		<</if>>
-		<<run _option.addValue("Straight", "normal")>>
-	<<elseif $activeSlave.physicalAge >= 6>>
-		<<if $activeSlave.teeth == "baby" || $activeSlave.teeth == "normal" || $activeSlave.teeth == "">>
-			<<set $activeSlave.teeth = "mixed">>
-		<</if>>
-		<<run _option.addValue("Mixed adult & child", "mixed")>>
-	<<else>>
-		<<if $activeSlave.teeth == "mixed" || $activeSlave.teeth == "normal" || $activeSlave.teeth == "">>
-			<<set $activeSlave.teeth = "mixed">>
-		<</if>>
-		<<run _option.addValue("Baby", "baby")>>
-	<</if>>
-
-	<<run _options.addOption("Breasts", "boobs", $activeSlave).showTextBox("CCs")
-	.addRange(200, 200, "<=", "Flat (AA-cup)")
-	.addRange(300, 300, "<=", "Small (A-cup)")
-	.addRange(400, 400, "<=", "Medium (B-cup)")
-	.addRange(500, 500, "<=", "Healthy (C-cup)")
-	.addRange(800, 800, "<=", "Large (DD-cup)")
-	.addRange(1200, 1200, "<=", "Very Large (G-cup)")
-	.addRange(2050, 2050, "<=", "Huge (K-cup)")
-	.addRange(3950, 3950, "<=", "Massive (Q-cup)")
-	.addRange(6000, 6000, "<=", "Monstrous")
-	.addRange(8000, 6000, ">", "Science Experiment")>>
-
-	<<run _options.addOption("Natural shape", "boobShape", $activeSlave)
-	.addValueList([
-		["Normal", "normal"],
-		["Perky", "perky"],
-		["Torpedo-shaped", "torpedo-shaped"],
-		["Wide-set", "wide-set"],
-		["Downward-facing", "downward-facing"],
-		["Saggy", "saggy"]
-	])>>
-
-	<<run _options.addOption("Lactation", "lactation", $activeSlave)
-	.addValue("Artificial", 2, () => V.activeSlave.lactationDuration = 2)
-	.addValue("Natural", 1, () => V.activeSlave.lactationDuration = 2)
-	.addValue("None", 0)>>
-
-	<<run _options.addOption("Nipples", "nipples", $activeSlave)
-	.addValueList([["Tiny", "tiny"], ["Cute", "cute"], ["Puffy", "puffy"], ["Partially Inverted", "partially inverted"], ["Inverted", "inverted"], ["Huge", "huge"]])>>
-
-	<<run _options.addOption("Areolae", "areolae", $activeSlave)
-	.addValueList([["Normal", 0], ["Large", 1], ["Wide", 2], ["Huge", 3], ["Massive", 4]])>>
-
-	<<run _options.addOption("Shoulders", "shoulders", $activeSlave)
-	.addValueList([["Very narrow", -2], ["Narrow", -1], ["Feminine", 0], ["Broad", 1], ["Very broad", 2]])>>
-
-	<<run _options.addOption("Hips", "hips", $activeSlave)
-	.addValueList([["Very narrow", -2], ["Narrow", -1], ["Normal", 0], ["Broad", 1], ["Very broad", 2]])>>
-
-	<<run _options.addOption("Butt", "butt", $activeSlave)
-	.addValueList([["Flat", 0], ["Small", 1], ["Plump", 2], ["Big", 3], ["Huge", 4], ["Enormous", 5], ["Gigantic", 6], ["Massive", 7]])>>
-
-	<<run _options.addOption("Anus", "anus", $activeSlave)
-	.addValueList([["Virgin", 0], ["Normal", 1], ["Veteran", 2], ["Gaping", 3]])>>
-
-	<<if $activeSlave.anus > 0>>
-		<<if $activeSlave.analArea <= $activeSlave.anus>>
-			<<set _comment = "Recently stretched to current size.">>"
-		<<elseif $activeSlave.analArea - $activeSlave.anus == 1>>
-			<<set _comment = "Used to current size."">>
-		<<else>>
-			<<set _comment = "Very broad."">>
-		<</if>>
-		<<run _options.addOption("External anus appearance", "anus", $activeSlave)
-		.addValueList([
-			["Recently stretched", $activeSlave.analArea = $activeSlave.anus],
-			["Used to current size", $activeSlave.analArea = $activeSlave.anus+1],
-			["Very broad", $activeSlave.analArea = $activeSlave.anus+2],
-		]).addComment(_comment)>>
-	<</if>>
-
-	<<run _options.addOption("Vagina", "vagina", $activeSlave)
-	.addValue("No vagina", -1, () => {
-		V.activeSlave.preg = 0;
-		WombFlush(V.activeSlave);
-		V.activeSlave.belly = 0;
-		V.activeSlave.bellyPreg = 0;
-		V.activeSlave.pubertyXX = 0;
-		V.activeSlave.pubertyAgeXX = V.fertilityAge;
-		V.activeSlave.ovaries = 0;
-	}).addValue("Virgin", 0, () => {
-		V.activeSlave.preg = -1;
-		V.activeSlave.belly = 0;
-		V.activeSlave.bellyPreg = 0;
-		V.activeSlave.ovaries = 1
-	}).addValue("Normal", 1, () => {
-		V.activeSlave.preg = -1;
-		V.activeSlave.belly = 0;
-		V.activeSlave.bellyPreg = 0;
-		V.activeSlave.ovaries = 1
-	}).addValue("Veteran", 2, () => {
-		V.activeSlave.preg = -1;
-		V.activeSlave.belly = 0;
-		V.activeSlave.bellyPreg = 0;
-		V.activeSlave.ovaries = 1
-	}).addValue("Gaping", 3, () => {
-		V.activeSlave.preg = -1;
-		V.activeSlave.belly = 0;
-		V.activeSlave.bellyPreg = 0;
-		V.activeSlave.ovaries = 1
-	})>>
-
-	<<if $activeSlave.vagina > -1>>
-		<<if $activeSlave.dick === 0>>
-			<<run _options.addOption("Clit", "clit", $activeSlave)
-			.addValueList([["Normal", 0], ["Large", 1], ["Huge", 2]])>>
-		<</if>>
-
-		<<run _options.addOption("Labia", "labia", $activeSlave)
-		.addValueList([["Normal", 0], ["Large", 1], ["Huge", 2], ["Huge Dangling", 3]])>>
-
-		<<run _options.addOption("Vaginal wetness", "vaginaLube", $activeSlave)
-		.addValueList([["Dry", 0], ["Normal", 1], ["Excessive", 2]])>>
-
-		<<if $seePreg !== 0>>
-			/* This is only shown if slave has vagina */
-			<<run _options.addOption("Puberty", "pubertyXX", $activeSlave)
-			.addValue("Prepubescent", 0, () => {
-				V.activeSlave.pubertyAgeXX = V.fertilityAge;
-				V.activeSlave.belly = 0;
-				V.activeSlave.bellyPreg = 0;
-				WombFlush(V.activeSlave)
-			}).addValue("Postpubescent", 1)>>
-
-			<<run _options.addOption("Age of puberty", "pubertyAgeXX", $activeSlave).showTextBox()>>
-
-			<<if $activeSlave.pubertyXX === 1>>
-				<<set _option = _options.addOption("Pregnancy", "preg", $activeSlave)>>
-				<<if $seeHyperPreg === 1 && $cheatMode === 1>>
-					<<run _option.addValue("Bursting at the seams", 43, () => {
-						V.activeSlave.pregType = 150;
-						V.activeSlave.pregWeek = 43;
-						V.activeSlave.pregKnown = 1;
-						V.activeSlave.belly = 2700000;
-						V.activeSlave.bellyPreg = 2700000;
-						V.activeSlave.pubertyXX = 1;
-					})>>
-					<<if $activeSlave.preg === 43>>
-						<<run _option.addComment("Extreme hyper pregnancy!")>>
-					<</if>>
-				<</if>>
-				<<run _option.addValue("Completely Filled", 42, () => {
-					V.activeSlave.pregType = 8;
-					V.activeSlave.pregWeek = 42;
-					V.activeSlave.pregKnown = 1;
-					V.activeSlave.belly = 120000;
-					V.activeSlave.bellyPreg = 120000;
-					V.activeSlave.pubertyXX = 1;
-				}).addValue("Ready to drop", 40, () => {
-					V.activeSlave.pregType = 1;
-					V.activeSlave.pregWeek = 40;
-					V.activeSlave.pregKnown = 1;
-					V.activeSlave.belly = 15000;
-					V.activeSlave.bellyPreg = 15000;
-					V.activeSlave.pubertyXX = 1;
-				}).addValue("Advanced", 34, () => {
-					V.activeSlave.pregType = 1;
-					V.activeSlave.pregWeek = 34;
-					V.activeSlave.pregKnown = 1;
-					V.activeSlave.belly = 10000;
-					V.activeSlave.bellyPreg = 10000;
-					V.activeSlave.pubertyXX = 1;
-				}).addValue("Showing", 27, () => {
-					V.activeSlave.pregType = 1;
-					V.activeSlave.pregWeek = 27;
-					V.activeSlave.pregKnown = 1;
-					V.activeSlave.belly = 5000;
-					V.activeSlave.bellyPreg = 5000;
-					V.activeSlave.pubertyXX = 1;
-				}).addValue("Early", 12, () => {
-					V.activeSlave.pregType = 1;
-					V.activeSlave.pregWeek = 12;
-					V.activeSlave.pregKnown = 1;
-					V.activeSlave.belly = 100;
-					V.activeSlave.bellyPreg = 100;
-					V.activeSlave.pubertyXX = 1;
-				}).addValue("None", 0, () => {
-					V.activeSlave.pregType = 0;
-					V.activeSlave.belly = 0;
-					V.activeSlave.bellyPreg = 0;
-					V.activeSlave.pregSource = 0;
-					V.activeSlave.pregWeek = 0;
-					V.activeSlave.pregKnown = 0;
-				}).addValue("Contraceptives", -1, () => {
-					V.activeSlave.pregType = 0;
-					V.activeSlave.belly = 0;
-					V.activeSlave.bellyPreg = 0;
-					V.activeSlave.pregSource = 0;
-					V.activeSlave.pregWeek = 0;
-					V.activeSlave.pregKnown = 0;
-				}).addValue("Barren", -2, () => {
-					V.activeSlave.pregType = 0;
-					V.activeSlave.belly = 0;
-					V.activeSlave.bellyPreg = 0;
-					V.activeSlave.pregSource = 0;
-					V.activeSlave.pregWeek = 0;
-					V.activeSlave.pregKnown = 0;
-				})>>
-			<</if>>
-
-			<<if $PC.dick > 0 && $activeSlave.preg > 0>>
-				<<run _options.addOption("Father of child", "pregSource", $activeSlave)
-				.addValueList([["My child", -1], ["Not me", 0]])>>
-			<</if>>
-		<</if>>
-	<</if>>
-
-	<<if $seeDicks !== 0 || $makeDicks === 1>>
-		<<run _options.addOption("Penis", "dick", $activeSlave)
-		.addValue("None", 0, () => {
-			V.activeSlave.balls = 0;
-			V.activeSlave.pubertyXY = 0;
-			V.activeSlave.pubertyAgeXY = V.potencyAge;
-		}).addValue("Tiny", 1, () => {V.activeSlave.clit = 0})
-		.addValue("Small", 2, () => {V.activeSlave.clit = 0})
-		.addValue("Normal", 3, () => {V.activeSlave.clit = 0})
-		.addValue("Large", 4, () => {V.activeSlave.clit = 0})
-		.addValue("Massive", 5, () => {V.activeSlave.clit = 0})>>
-
-		<<if $activeSlave.dick > 0>>
-			<<set _option = _options.addOption("Foreskin", "foreskin", $activeSlave)>>
-			<<if $seeCircumcision === 1>>
-				<<run _option.addValue("Circumcised", 0)>>
-			<<elseif $activeSlave.foreskin === 0>>
-				<<set $activeSlave.foreskin = 3>>
-			<</if>>
-			<<run _option.addValueList([["Tiny", 1], ["Small", 2], ["Normal", 3], ["Large", 4], ["Massive", 5]])>>
-		<</if>>
-
-		<<run _options.addOption("Testicles", "balls", $activeSlave)
-		.addValue("None", 0, () => {
-			V.activeSlave.pubertyXY = 0;
-			V.activeSlave.pubertyAgeXY = V.potencyAge;
-			V.activeSlave.scrotum = 0;
-		}).addValueList([["Vestigial", 1], ["Small", 2], ["Normal", 3], ["Large", 4], ["Massive", 5]])>>
-
-		<<run _options.addOption("Age of Male Puberty", "pubertyAgeXY", $activeSlave).showTextBox()>>
-
-		<<if $activeSlave.balls > 0>>
-			<<run _options.addOption("Ballsack", "scrotum", $activeSlave)
-			.addValueList([["None", 0], ["Tiny", 1], ["Small", 2], ["Normal", 3], ["Large", 4], ["Massive", 5]])>>
-
-			<<run _options.addOption("Male Puberty", "pubertyXY", $activeSlave)
-			.addValue("Prepubescent", 0, () => {V.activeSlave.pubertyAgeXY = V.potencyAge})
-			.addValue("Postpubescent", 1)>>
-		<</if>>
-	<</if>>
-
-	<<run _options.addOption("Prostate", "prostate", $activeSlave)
-	.addValueList([["No prostate", 0], ["Has a prostate", 1]])>>
-
-	<<set _optionLeft = _options.addOption("Left eye", "vision", $activeSlave.eye.left)>>
-	<<set _optionRight = _options.addOption("Right eye", "vision", $activeSlave.eye.right)>>
-	<<run _optionLeft.addValueList([["Normal", 2], ["Nearsighted", 1]]), _optionRight.addValueList([["Normal", 2], ["Nearsighted", 1]])>>
-	<<if $seeExtreme === 1>>
-		<<run _optionLeft.addValue("Blind", 0),  _optionRight.addValue("Blind", 0)>>
-	<<else>>
-		<<if $activeSlave.eye.left.vision === 0>>
-			<<set $activeSlave.eye.left.vision = 2>>
-		<</if>>
-		<<if $activeSlave.eye.right.vision === 0>>
-			<<set $activeSlave.eye.right.vision = 2>>
-		<</if>>
-	<</if>>
-
-	<<set _option = _options.addOption("Hearing", "hears", $activeSlave)>>
-	<<run _option.addValueList([["Normal", 0], ["Hard of hearing", -1]])>>
-	<<if $seeExtreme == 1>>
-		<<run _option.addValue("Deaf", -2)>>
-	<<elseif $activeSlave.hears === 0>>
-		<<set $activeSlave.hears = 2>>
-	<</if>>
-
-
-	<<if $seeExtreme == 1>>
-		<<run _options.addOption("Smell ability", "smells", $activeSlave)
-		.addValueList([["Normal", 0], ["None", -1]])>>
-
-		<<run _options.addOption("Taste ability", "tastes", $activeSlave)
-		.addValueList([["Normal", 0], ["None", -1]])>>
-
-		<<set _LA = hasLeftArm($activeSlave)>>
-		<<run _options.addOption("Left arm", "LA", State.temporary)
-		.addValue("Healthy", true, () => V.activeSlave.arm.left = new App.Entity.LimbState())
-		.addValue("Amputated", false, () => V.activeSlave.arm.left = null)>>
-
-		<<set _RA = hasRightArm($activeSlave)>>
-		<<run _options.addOption("Right arm", "RA", State.temporary)
-		.addValue("Healthy", true, () => V.activeSlave.arm.right = new App.Entity.LimbState())
-		.addValue("Amputated", false, () => V.activeSlave.arm.right = null)>>
-
-		<<set _LL = hasLeftLeg($activeSlave)>>
-		<<run _options.addOption("Left leg", "LL", State.temporary)
-		.addValue("Healthy", true, () => V.activeSlave.leg.left = new App.Entity.LimbState())
-		.addValue("Amputated", false, () => V.activeSlave.leg.left = null)>>
-
-		<<set _RL = hasRightLeg($activeSlave)>>
-		<<run _options.addOption("Right leg", "RL", State.temporary)
-		.addValue("Healthy", true, () => V.activeSlave.leg.right = new App.Entity.LimbState())
-		.addValue("Amputated", false, () => V.activeSlave.leg.right = null)>>
-	<</if>>
-
-	<<includeDOM _options.render()>>
+		<<includeDOM App.StartingGirls.physical($activeSlave)>>
 	</div>
 </div>
 
 <div id="Mental" class="tab-content">
 	<div class="content">
-
-	<<set _options = new App.UI.OptionsGroup()>>
-	<<if $activeSlave.fetishKnown === 0>>
-		<<run _options.addOption("Fetish", "fetishKnown", $activeSlave)
-		.addValueList([["Unknown", 0], ["Known", 1]])>>
-	<<else>>
-		<<set _option = _options.addOption("Fetish", "fetish", $activeSlave)
-		.addValue("Unknown", "", () => {
-			V.activeSlave.fetish = either("boobs", "buttslut", "cumslut", "dom", "humiliation", "masochist", "pregnancy", "sadist",
-				"submissive", "none", "none", "none", "none", "none", "none", "none", "none", "none", "none");
-			V.activeSlave.fetishKnown = 0
-		}).addValueList([["None", "none"], ["Sub", "submissive"], ["Dom", "dom"], ["Cumslut", "cumslut"], ["Humiliation", "humiliation"],
-		["Buttslut", "buttslut"], ["Breasts", "boobs"], ["Pregnancy", "pregnancy"], ["Sadism", "sadist"], ["Masochism", "masochist"]])>>
-		<<if $seeExtreme === 1>>
-			<<run _option.addValue("Mindbroken", "mindbroken", () => {
-				V.activeSlave.fetishStrength = 10;
-				V.activeSlave.sexualFlaw = "none";
-				V.activeSlave.sexualQuirk = "none";
-				V.activeSlave.behavioralFlaw = "none";
-				V.activeSlave.behavioralQuirk = "none";
-			})>>
-		<</if>>
-
-		<<if $activeSlave.fetish !== "none" && $activeSlave.fetish !== "mindbroken">>
-			<<run _options.addOption("Fetish strength", "fetishStrength", $activeSlave)
-			.addRange(15, 30, "<=", "Very Low")
-			.addRange(45, 60, "<=", "Low")
-			.addRange(75, 85, "<=", "Normal")
-			.addRange(90, 95, "<=", "High")
-			.addRange(100, 95, ">", "Extremely High")>>
-		<</if>>
-	<</if>>
-
-	<<run _options.addOption("Sexuality", "attrKnown", $activeSlave)
-	.addValue("Unknown", 0).addValue("Known", 1, () => {
-		V.activeSlave.attrXX = random(0, 100);
-		V.activeSlave.attrXY = random(0, 100);
-		V.activeSlave.energy = random(1, 90);
-	})>>
-	<<if $activeSlave.attrKnown === 1>>
-		<<run _options.addOption("Attraction to men", "attrXY", $activeSlave)
-		.addRange(0, 5, "<=", "Disgusted").off()
-		.addRange(10, 15, "<=", "Turned off").off()
-		.addRange(25, 35, "<=", "Not attracted").off()
-		.addRange(50, 65, "<=", "Indifferent").neutral()
-		.addRange(75, 85, "<=", "Attracted").on()
-		.addRange(90, 95, "<=", "Aroused").on()
-		.addRange(100, 95, ">", "Passionate").on()>>
-		<<run _options.addOption("Attraction to women", "attrXX", $activeSlave)
-		.addRange(0, 5, "<=", "Disgusted").off()
-		.addRange(10, 15, "<=", "Turned off").off()
-		.addRange(25, 35, "<=", "Not attracted").off()
-		.addRange(50, 65, "<=", "Indifferent").neutral()
-		.addRange(75, 85, "<=", "Attracted").on()
-		.addRange(90, 95, "<=", "Aroused").on()
-		.addRange(100, 95, ">", "Passionate").on()>>
-
-		<<run _options.addOption("Sex drive", "energy", $activeSlave)
-		.addRange(5, 10, "<=", "Frigid").off()
-		.addRange(25, 40, "<=", "Poor").off()
-		.addRange(45, 60, "<=", "Average").neutral()
-		.addRange(65, 80, "<=", "Powerful").on()
-		.addRange(85, 99, "<=", "Sex addict").on()
-		.addRange(100, 99, ">", "Nympho").on()>>
-	<</if>>
-
-	<<if $activeSlave.fetish !== "mindbroken">>
-		<<run _options.addOption("Behavioral Flaw", "behavioralFlaw", $activeSlave)
-		.addValueList([["None", "none"], ["Arrogant", "arrogant"], ["Bitchy", "bitchy"], ["Odd", "odd"], ["Hates Men", "hates men"],
-		["Hates Women", "hates women"], ["Anorexic", "anorexic"], ["Gluttonous", "gluttonous"], ["Devout", "devout"],
-		["Liberated", "liberated"]])>>
-
-		<<run _options.addOption("Behavioral Quirk", "behavioralQuirk", $activeSlave)
-		.addValueList([["None", "none"], ["Confident", "confident"], ["Cutting", "cutting"], ["Funny", "funny"],
-		["Adores Men", "adores men"], ["Adores Women", "adores women"], ["Insecure", "insecure"], ["Fitness", "fitness"],
-		["Sinful", "sinful"], ["Advocate", "advocate"]])>>
-
-		<<run _options.addOption("Sexual Flaw", "sexualFlaw", $activeSlave)
-		.addValueList([["None", "none"], ["Hates Oral", "hates oral"], ["Hates Anal", "hates anal"],
-		["Hates Penetration", "hates penetration"], ["Repressed", "repressed"], ["Shamefast", "shamefast"], ["Apathetic", "apathetic"],
-		["Crude", "crude"], ["Judgemental", "judgemental"], ["Sexually idealistic", "idealistic"]])>>
-
-		<<run _options.addOption("Sexual Quirk", "sexualQuirk", $activeSlave)
-		.addValueList([["None", "none"], ["Oral", "gagfuck queen"], ["Anal", "painal queen"], ["Penetration", "strugglefuck queen"],
-		["Perverted", "perverted"], ["Tease", "tease"], ["Caring", "caring"], ["Unflinching", "unflinching"], ["Size queen", "size queen"],
-		["Romantic", "romantic"]])>>
-	<</if>>
-
-	<<includeDOM _options.render()>>
+		<<includeDOM App.StartingGirls.mental($activeSlave)>>
 	</div>
 </div>
 
@@ -931,44 +324,6 @@
 	</div>
 </div>
 
-<div id="Customization" class="tab-content">
-	<div class="content">
-
-	''Birth name:'' <<textbox "$activeSlave.birthName" $activeSlave.birthName "Starting Girls">>
-	| ''Slave name:'' <<textbox "$activeSlave.slaveName" $activeSlave.slaveName "Starting Girls">>
-	<br>''Birth surname:'' <<textbox "$activeSlave.birthSurname" $activeSlave.birthSurname "Starting Girls">>
-	| ''Slave surname:'' <<textbox "$activeSlave.slaveSurname" $activeSlave.slaveSurname "Starting Girls">>
-	<br>''Career:'' <span id="career-textbox"><<textbox "$activeSlave.career" $activeSlave.career "Starting Girls">></span>
-	<span id="careers"></span>
-	<script>jQuery('#careers').empty().append(App.StartingGirls.career(V.activeSlave));</script>
-	<br>''Eye color:'' <<textbox "$activeSlave.eye.origColor" $activeSlave.eye.origColor "Starting Girls">>
-	<<if def $pupil_temp>>
-		<<set $activeSlave.eye.left.pupil = $pupil_temp, $activeSlave.eye.right.pupil = $pupil_temp, delete $pupil_temp>>
-	<</if>>
-	<br>''Pupil shape:'' <<textbox "$pupil_temp" $activeSlave.eye.left.pupil "Starting Girls">>
-	<<if def $sclerae_temp>>
-		<<set $activeSlave.eye.left.sclera = $sclerae_temp, $activeSlave.eye.right.sclera = $sclerae_temp, delete $sclerae_temp>>
-	<</if>>
-	<br>''Sclera color:'' <<textbox "$sclerae_temp" $activeSlave.eye.left.sclera "Starting Girls">>
-	<br>Custom origin story: <<textbox "$activeSlave.origin" $activeSlave.origin "Starting Girls">> //Use complete, capitalized and punctuated sentences.//
-	<br>Origin override:
-	<<if $originOverride == 1>>
-		@@.green;Enabled@@ [[Disable|Starting Girls][$originOverride = 0]] //Disabling will allow Starting Girls to overwrite origins and tattoos with its defaults.//
-	<<else>>
-		@@.red;Disabled@@ [[Enable|Starting Girls][$originOverride = 1]] //Enabling will keep your custom origin and tattoo from being overwritten by Starting Girls.//
-	<</if>>
-	<<if $activeSlave.prestige>>
-		<br>Reason for prestigiousness: <<textbox "$activeSlave.prestigeDesc" $activeSlave.prestigeDesc>> //Use complete, capitalized and punctuated sentences.//
-	<</if>>
-	<br>Custom description: <<textbox "$activeSlave.custom.desc" $activeSlave.custom.desc "Starting Girls">> //Use complete, capitalized and punctuated sentences.//
-	<br>Custom label: <<textbox "$activeSlave.custom.label" $activeSlave.custom.label "Starting Girls">> //Use a short phrase.//
-
-	<br><br>
-	''Births:'' <<textbox "$activeSlave.counter.birthsTotal" $activeSlave.counter.birthsTotal "Starting Girls">> //How many times $he has already given birth, not necessarily while owned by you.//
-
-	</div>
-</div>
-
 <div id="assignRemove" class="tab-content">
 	<div class="content">