diff --git a/js/003-data/startingGirlsData.js b/js/003-data/startingGirlsData.js
index 5af7cb18d04f3431ebb94cebf9417a19a6c6feef..2a647269195e884a98b2473c189b428c78b24ad4 100644
--- a/js/003-data/startingGirlsData.js
+++ b/js/003-data/startingGirlsData.js
@@ -92,5 +92,11 @@ App.Data.StartingGirls = {
 		{name: "Powerful", value: 65, max: 80, style: "on"},
 		{name: "Sex addict", value: 85, max: 99, style: "on"},
 		{name: "Nympho", value: 100, max: 999, style: "on"}
+	],
+	skill: [
+		{name: "Unskilled", value: 0, max: 10},
+		{name: "Basic", value: 15, max: 30},
+		{name: "Skilled", value: 35, max: 60},
+		{name: "Expert", value: 65, max: 999}
 	]
 };
diff --git a/src/npc/startingGirls/startingGirls.js b/src/npc/startingGirls/startingGirls.js
index 44c4dcc99b928394d0ee30b97943a425fff78218..540ea67aa15730fed446fb184449e960ed07e8a6 100644
--- a/src/npc/startingGirls/startingGirls.js
+++ b/src/npc/startingGirls/startingGirls.js
@@ -41,6 +41,11 @@ App.StartingGirls.generate = function(params) {
 	slave.attrXY = mapValue(slave.attrXY, App.Data.StartingGirls.attr);
 	slave.attrXX = mapValue(slave.attrXY, App.Data.StartingGirls.attr);
 	slave.energy = mapValue(slave.energy, App.Data.StartingGirls.energy);
+	slave.skill.oral = mapValue(slave.skill.oral, App.Data.StartingGirls.skill);
+	slave.skill.anal = mapValue(slave.skill.anal, App.Data.StartingGirls.skill);
+	slave.skill.vaginal = mapValue(slave.skill.vaginal, App.Data.StartingGirls.skill);
+	slave.skill.whoring = mapValue(slave.skill.whoring, App.Data.StartingGirls.skill);
+	slave.skill.entertainment = mapValue(slave.skill.entertainment, App.Data.StartingGirls.skill);
 
 	return slave;
 };
@@ -1364,3 +1369,67 @@ App.StartingGirls.mental = function(slave) {
 
 	return el;
 };
+
+/**
+ * @param {App.Entity.SlaveState}slave
+ * @returns {HTMLDivElement}
+ */
+App.StartingGirls.skills = function(slave) {
+	const options = new App.UI.OptionsGroup();
+
+	App.StartingGirls.addSet(
+		options.addOption("Oral sex", "oral", slave.skill),
+		App.Data.StartingGirls.skill);
+
+	let option = options.addOption("Anal sex", "anal", slave.skill);
+
+	if (slave.anus === 0) {
+		option.addComment("Anal virgins cannot be given anal skills.");
+	} else {
+		App.StartingGirls.addSet(option, App.Data.StartingGirls.skill);
+	}
+
+	option = options.addOption("Vaginal sex", "vaginal", slave.skill);
+	if (slave.vagina === 0) {
+		option.addComment("Virgins cannot be given anal skills.");
+	} else if (slave.vagina === -1) {
+		option.addComment("Must have a vagina to have vaginal skills.");
+	} else {
+		App.StartingGirls.addSet(option, App.Data.StartingGirls.skill);
+	}
+
+	App.StartingGirls.addSet(
+		options.addOption("Prostitution", "whoring", slave.skill),
+		App.Data.StartingGirls.skill);
+	App.StartingGirls.addSet(
+		options.addOption("Entertainment", "entertainment", slave.skill),
+		App.Data.StartingGirls.skill);
+
+	options.addOption("Combat", "combat", slave.skill)
+		.addValueList([["Unskilled", 0], ["Skilled", 1]]);
+
+	// skill warning
+	const totalSkill = slave.skill.whoring + slave.skill.entertainment + slave.skill.vaginal
+		+ slave.skill.anal + slave.skill.oral + (slave.skill.combat * 100);
+
+	if (totalSkill > 200) {
+		let comment = ["Starting slaves incur"];
+		if (totalSkill > 400) {
+			comment.push("a severe cost penalty for being highly");
+		} else {
+			comment.push("an additional cost penalty for being");
+		}
+		comment.push("skilled. This slave's");
+		if (slave.actualAge >= 25) {
+			if (slave.actualAge > 35) {
+				comment.push("advanced");
+			}
+			comment.push("age decreases the penalty.");
+		} else {
+			comment.push("young age requires paying the full penalty.");
+		}
+		options.addComment(`<span class="warning">${comment.join(" ")}</span>`);
+	}
+
+	return options.render();
+};
diff --git a/src/npc/startingGirls/startingGirls.tw b/src/npc/startingGirls/startingGirls.tw
index 6dc4e30a17bbc6c267dfbcebb163fd38ab8faefa..2e8f5704c14d297f37b4421f5da994398d8793d6 100644
--- a/src/npc/startingGirls/startingGirls.tw
+++ b/src/npc/startingGirls/startingGirls.tw
@@ -236,73 +236,7 @@
 
 <div id="Skills" class="tab-content">
 	<div class="content">
-	<<set _options = new App.UI.OptionsGroup()>>
-
-	<<run _options.addOption("Oral sex", "oral", $activeSlave.skill)
-	.addRange(0, 10, "<=", "Unskilled")
-	.addRange(15, 30, "<=", "Basic")
-	.addRange(35, 60, "<=", "Skilled")
-	.addRange(65, 60, ">", "Expert")>>
-
-	<<set _option = _options.addOption("Anal sex", "anal", $activeSlave.skill)>>
-	<<if $activeSlave.anus === 0>>
-		<<run _option.addComment("Anal virgins cannot be given anal skills.")>>
-	<<else>>
-		<<run _option.addRange(0, 10, "<=", "Unskilled")
-		.addRange(15, 30, "<=", "Basic")
-		.addRange(35, 60, "<=", "Skilled")
-		.addRange(65, 60, ">", "Expert")>>
-	<</if>>
-
-	<<set _option = _options.addOption("Vaginal sex", "vaginal", $activeSlave.skill)>>
-	<<if $activeSlave.vagina === 0>>
-		<<run _option.addComment("Virgins cannot be given anal skills.")>>
-	<<elseif $activeSlave.vagina === -1>>
-		<<run _option.addComment("Must have a vagina to have vaginal skills.")>>
-	<<else>>
-		<<run _option.addRange(0, 10, "<=", "Unskilled")
-		.addRange(15, 30, "<=", "Basic")
-		.addRange(35, 60, "<=", "Skilled")
-		.addRange(65, 60, ">", "Expert")>>
-	<</if>>
-
-	<<run _options.addOption("Prostitution", "whoring", $activeSlave.skill)
-	.addRange(0, 10, "<=", "Unskilled")
-	.addRange(15, 30, "<=", "Basic")
-	.addRange(35, 60, "<=", "Skilled")
-	.addRange(65, 60, ">", "Expert")>>
-
-	<<run _options.addOption("Entertainment", "entertainment", $activeSlave.skill)
-	.addRange(0, 10, "<=", "Unskilled")
-	.addRange(15, 30, "<=", "Basic")
-	.addRange(35, 60, "<=", "Skilled")
-	.addRange(65, 60, ">", "Expert")>>
-
-	<<run _options.addOption("Combat", "combat", $activeSlave.skill)
-	.addValueList([["Unskilled", 0], ["Skilled", 1]])>>
-
-	<<set _totalSkill = $activeSlave.skill.whoring + $activeSlave.skill.entertainment + $activeSlave.skill.vaginal
-		+ $activeSlave.skill.anal + $activeSlave.skill.oral + ($activeSlave.skill.combat * 100)>>
-	<<if _totalSkill > 200>>
-		<<set _comment = "Starting slaves incur">>
-		<<if _totalSkill > 400>>
-			<<set _comment += " a severe cost penalty for being highly">>
-		<<else>>
-			<<set _comment += " an additional cost penalty for being">>
-		<</if>>
-		<<set _comment += " skilled. 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 _options.addOption("").addComment(`<span class="warning">${_comment}</span>`)>>
-	<</if>>
-
-	<<includeDOM _options.render()>>
+		<<includeDOM App.StartingGirls.skills($activeSlave)>>
 	</div>
 </div>