diff --git a/src/js/utilsAssaySlave.js b/src/js/utilsAssaySlave.js
index d9a4ff083bacaefda9c947af7ed9600396bcd902..e3b47a59060b7cd3978f8b5fd64b88915c4334ed 100644
--- a/src/js/utilsAssaySlave.js
+++ b/src/js/utilsAssaySlave.js
@@ -66,198 +66,6 @@ globalThis.getSlaveTrustClass = function(slave) {
 	}
 };
 
-/**
- * @param {App.Entity.SlaveState} slave
- * @param {number} [induce]
- * @returns {string}
- */
-globalThis.induceLactation = function(slave, induce = 0) {
-	const {His} = getPronouns(slave);
-	let r = "";
-	let lactationStartChance = jsRandom(10, 100);
-	slave.induceLactation += induce;
-	if (slave.boobs < 300) {
-		lactationStartChance *= 1.5;
-	} else if (slave.boobs < 400 || slave.boobs >= 5000) {
-		lactationStartChance *= 1.2;
-	}
-	if (slave.pubertyXX === 0) {
-		lactationStartChance *= 1.5;
-	}
-	if (slave.preg > (slave.pregData.normalBirth / 1.33)) {
-		lactationStartChance *= .5;
-	}
-	if (slave.health.condition < -20) {
-		lactationStartChance *= 2;
-	}
-	if (slave.weight <= -30) {
-		lactationStartChance *= 1.5;
-	}
-	if (slave.boobsImplant > 0) {
-		lactationStartChance *= (1 + (slave.boobsImplant / slave.boobs));
-	}
-	if (slave.lactationAdaptation > 0) {
-		lactationStartChance = (lactationStartChance / (slave.lactationAdaptation / 10));
-	}
-	if (slave.geneticQuirks.galactorrhea === 2) {
-		lactationStartChance *= .5;
-	}
-	lactationStartChance = Math.floor(lactationStartChance);
-	if (slave.induceLactation >= lactationStartChance) {
-		r += `${His} breasts have been stimulated often enough to <span class="lime">induce lactation.</span>`;
-		slave.induceLactation = 0;
-		slave.lactationDuration = 2;
-		slave.lactation = 1;
-	}
-	return r;
-};
-
-/**
- * @param {string} targetSkill - Skill to be checked.
- * @param {Object} slave - Slave to be checked.
- * @param {number} [skillIncrease=1]
- * @returns {string}
- */
-globalThis.slaveSkillIncrease = function(targetSkill, slave, skillIncrease = 1) {
-	let r = "", skillDec;
-	const {He, his, him} = getPronouns(slave);
-	const isleadershipRole = function() {
-		if (['headGirl', 'recruiter', 'bodyguard', 'madam', 'DJ', 'nurse', 'teacher', 'attendant', 'matron', 'stewardess', 'milkmaid', 'farmer', 'wardeness'].includes(targetSkill)) {
-			return true;
-		}
-		return false;
-	};
-
-	if (slave.skill[targetSkill] <= 10) {
-		switch(targetSkill) {
-			case 'oral':
-			case 'vaginal':
-			case 'anal':
-				skillDec = `knowledge about ${targetSkill} sex,`; break;
-			case 'whoring':
-				skillDec = `knowledge about how to whore,`; break;
-			case 'entertainment':
-				skillDec = `knowledge about how to be entertaining,`; break;
-		}
-		if (isleadershipRole()) {
-			skillDec = `${capFirstChar(targetSkill)} skills.`;
-		}
-
-		if (slave.skill[targetSkill] + skillIncrease > 10) {
-			r = `<span class="green">${He} now has basic ${skillDec}</span>`;
-			switch(targetSkill) {
-				case 'oral':
-					r += ` and at least suck a dick without constant gagging.`; break;
-				case 'vaginal':
-					r += ` and can avoid some of the common pitfalls and turnoffs.`; break;
-				case 'anal':
-					r += ` and can accept penetration of ${his} anus without danger.`; break;
-				case 'whoring':
-					r += ` and can avoid some potentially dangerous situations.`; break;
-				case 'entertainment':
-					r += ` and can usually avoid serious faux pas.`; break;
-			}
-		}
-	} else if (slave.skill[targetSkill] <= 30) {
-		switch(targetSkill) {
-			case 'oral':
-			case 'vaginal':
-			case 'anal':
-				skillDec = `${targetSkill} skills,`; break;
-			case 'whoring':
-				skillDec = `skill as a whore,`; break;
-			case 'entertainment':
-				skillDec = `skill as an entertainer,`; break;
-		}
-		if (isleadershipRole()) {
-			skillDec = `skill as a ${capFirstChar(targetSkill)}.`;
-		}
-
-		if (slave.skill.oral + skillIncrease > 30) {
-			r = `<span class="green">${He} now has some ${skillDec}</span>`;
-			switch(targetSkill) {
-				case 'oral':
-					r += ` and can reliably bring dicks and pussies to climax with ${his} mouth.`; break;
-				case 'vaginal':
-					r += ` and can do more than just lie there and take it.`; break;
-				case 'anal':
-					r += ` and needs less preparation before taking rough penetration.`; break;
-				case 'whoring':
-					r += ` and knows how to sell ${his} body at a good price.`; break;
-				case 'entertainment':
-					r += ` and can flirt, dance, and strip acceptably.`; break;
-			}
-		}
-	} else if (slave.skill[targetSkill] <= 60) {
-		switch(targetSkill) {
-			case 'oral':
-			case 'vaginal':
-			case 'anal':
-				skillDec = `${targetSkill} sex expert,`; break;
-			case 'whoring':
-				skillDec = `expert whore,`; break;
-			case 'entertainment':
-				skillDec = `expert entertainer,`; break;
-		}
-		if (isleadershipRole()) {
-			skillDec = `expert ${capFirstChar(targetSkill)}.`;
-		}
-
-		if (slave.skill[targetSkill] + skillIncrease > 60) {
-			r = `<span class="green">${He} is now an ${skillDec}</span>`;
-			switch(targetSkill) {
-				case 'oral':
-					r += ` and has a delightfully experienced tongue.`; break;
-				case 'vaginal':
-					r += ` and has the muscular control to massage anything that's inside ${him}.`; break;
-				case 'anal':
-					r += ` and knows how to use ${his} sphincter to please.`; break;
-				case 'whoring':
-					r += ` and can often make clients forget that $he's a prostitute they're paying for.`; break;
-				case 'entertainment':
-					r += ` and can flirt engagingly, dance alluringly, and strip arousingly.`; break;
-			}
-		}
-	} else if (slave.skill[targetSkill] < 100) {
-		switch(targetSkill) {
-			case 'oral':
-			case 'vaginal':
-			case 'anal':
-				skillDec = `has mastered ${targetSkill} sex,`; break;
-			case 'whoring':
-				skillDec = `is now a masterful whore,`; break;
-			case 'entertainment':
-				skillDec = `is now a masterful entertainer,`; break;
-		}
-		if (isleadershipRole()) {
-			skillDec = `is now a masterful ${capFirstChar(targetSkill)}.`;
-		}
-
-		if (slave.skill[targetSkill] + skillIncrease >= 100) {
-			r = `<span class="green">${He} ${skillDec}</span>`;
-			switch(targetSkill) {
-				case 'oral':
-					r += ` and can learn nothing more about sucking dick or eating pussy.`; break;
-				case 'vaginal':
-					r += ` and can learn nothing more about tribbing or taking dick.`; break;
-				case 'anal':
-					r += ` and can learn nothing more about taking it up the ass.`; break;
-				case 'whoring':
-					r += ` and can learn nothing more about prostitution.`; break;
-				case 'entertainment':
-					r += ` and can learn nothing more about flirting, dancing, or stripping.`; break;
-			}
-		}
-	}
-
-	if (isleadershipRole() && slave.skill[targetSkill] + skillIncrease >= 100) {
-		V.tutorGraduate.push(slave.ID);
-		V.slaveTutor[capFirstChar(targetSkill)].delete(slave.ID);
-	}
-	slave.skill[targetSkill] += skillIncrease;
-	return r;
-};
-
 /**
  * Returns a "disobedience factor" between 0 (perfectly obedient) and 100 (completely defiant)
  * @param {App.Entity.SlaveState} slave
diff --git a/src/js/utilsSlave.js b/src/js/utilsSlave.js
index 02f8e60df6fb86c4ca77de3a71bab6278a839d50..0059cb694f8bfa3a7c15851d8c2fc6c385a7fce6 100644
--- a/src/js/utilsSlave.js
+++ b/src/js/utilsSlave.js
@@ -3254,3 +3254,195 @@ globalThis.ageSlave = function(slave, forceDevelopment = false) {
 		physicalDevelopment(slave);
 	}
 };
+
+/**
+ * @param {App.Entity.SlaveState} slave
+ * @param {number} [induce]
+ * @returns {string}
+ */
+globalThis.induceLactation = function(slave, induce = 0) {
+	const {His} = getPronouns(slave);
+	let r = "";
+	let lactationStartChance = jsRandom(10, 100);
+	slave.induceLactation += induce;
+	if (slave.boobs < 300) {
+		lactationStartChance *= 1.5;
+	} else if (slave.boobs < 400 || slave.boobs >= 5000) {
+		lactationStartChance *= 1.2;
+	}
+	if (slave.pubertyXX === 0) {
+		lactationStartChance *= 1.5;
+	}
+	if (slave.preg > (slave.pregData.normalBirth / 1.33)) {
+		lactationStartChance *= .5;
+	}
+	if (slave.health.condition < -20) {
+		lactationStartChance *= 2;
+	}
+	if (slave.weight <= -30) {
+		lactationStartChance *= 1.5;
+	}
+	if (slave.boobsImplant > 0) {
+		lactationStartChance *= (1 + (slave.boobsImplant / slave.boobs));
+	}
+	if (slave.lactationAdaptation > 0) {
+		lactationStartChance = (lactationStartChance / (slave.lactationAdaptation / 10));
+	}
+	if (slave.geneticQuirks.galactorrhea === 2) {
+		lactationStartChance *= .5;
+	}
+	lactationStartChance = Math.floor(lactationStartChance);
+	if (slave.induceLactation >= lactationStartChance) {
+		r += `${His} breasts have been stimulated often enough to <span class="lime">induce lactation.</span>`;
+		slave.induceLactation = 0;
+		slave.lactationDuration = 2;
+		slave.lactation = 1;
+	}
+	return r;
+};
+
+/**
+ * @param {string} targetSkill - Skill to be checked.
+ * @param {Object} slave - Slave to be checked.
+ * @param {number} [skillIncrease=1]
+ * @returns {string}
+ */
+globalThis.slaveSkillIncrease = function(targetSkill, slave, skillIncrease = 1) {
+	let r = "", skillDec;
+	const {He, his, him} = getPronouns(slave);
+	const isleadershipRole = function() {
+		if (['headGirl', 'recruiter', 'bodyguard', 'madam', 'DJ', 'nurse', 'teacher', 'attendant', 'matron', 'stewardess', 'milkmaid', 'farmer', 'wardeness'].includes(targetSkill)) {
+			return true;
+		}
+		return false;
+	};
+
+	if (slave.skill[targetSkill] <= 10) {
+		switch(targetSkill) {
+			case 'oral':
+			case 'vaginal':
+			case 'anal':
+				skillDec = `knowledge about ${targetSkill} sex,`; break;
+			case 'whoring':
+				skillDec = `knowledge about how to whore,`; break;
+			case 'entertainment':
+				skillDec = `knowledge about how to be entertaining,`; break;
+		}
+		if (isleadershipRole()) {
+			skillDec = `${capFirstChar(targetSkill)} skills.`;
+		}
+
+		if (slave.skill[targetSkill] + skillIncrease > 10) {
+			r = `<span class="green">${He} now has basic ${skillDec}</span>`;
+			switch(targetSkill) {
+				case 'oral':
+					r += ` and at least suck a dick without constant gagging.`; break;
+				case 'vaginal':
+					r += ` and can avoid some of the common pitfalls and turnoffs.`; break;
+				case 'anal':
+					r += ` and can accept penetration of ${his} anus without danger.`; break;
+				case 'whoring':
+					r += ` and can avoid some potentially dangerous situations.`; break;
+				case 'entertainment':
+					r += ` and can usually avoid serious faux pas.`; break;
+			}
+		}
+	} else if (slave.skill[targetSkill] <= 30) {
+		switch(targetSkill) {
+			case 'oral':
+			case 'vaginal':
+			case 'anal':
+				skillDec = `${targetSkill} skills,`; break;
+			case 'whoring':
+				skillDec = `skill as a whore,`; break;
+			case 'entertainment':
+				skillDec = `skill as an entertainer,`; break;
+		}
+		if (isleadershipRole()) {
+			skillDec = `skill as a ${capFirstChar(targetSkill)}.`;
+		}
+
+		if (slave.skill.oral + skillIncrease > 30) {
+			r = `<span class="green">${He} now has some ${skillDec}</span>`;
+			switch(targetSkill) {
+				case 'oral':
+					r += ` and can reliably bring dicks and pussies to climax with ${his} mouth.`; break;
+				case 'vaginal':
+					r += ` and can do more than just lie there and take it.`; break;
+				case 'anal':
+					r += ` and needs less preparation before taking rough penetration.`; break;
+				case 'whoring':
+					r += ` and knows how to sell ${his} body at a good price.`; break;
+				case 'entertainment':
+					r += ` and can flirt, dance, and strip acceptably.`; break;
+			}
+		}
+	} else if (slave.skill[targetSkill] <= 60) {
+		switch(targetSkill) {
+			case 'oral':
+			case 'vaginal':
+			case 'anal':
+				skillDec = `${targetSkill} sex expert,`; break;
+			case 'whoring':
+				skillDec = `expert whore,`; break;
+			case 'entertainment':
+				skillDec = `expert entertainer,`; break;
+		}
+		if (isleadershipRole()) {
+			skillDec = `expert ${capFirstChar(targetSkill)}.`;
+		}
+
+		if (slave.skill[targetSkill] + skillIncrease > 60) {
+			r = `<span class="green">${He} is now an ${skillDec}</span>`;
+			switch(targetSkill) {
+				case 'oral':
+					r += ` and has a delightfully experienced tongue.`; break;
+				case 'vaginal':
+					r += ` and has the muscular control to massage anything that's inside ${him}.`; break;
+				case 'anal':
+					r += ` and knows how to use ${his} sphincter to please.`; break;
+				case 'whoring':
+					r += ` and can often make clients forget that $he's a prostitute they're paying for.`; break;
+				case 'entertainment':
+					r += ` and can flirt engagingly, dance alluringly, and strip arousingly.`; break;
+			}
+		}
+	} else if (slave.skill[targetSkill] < 100) {
+		switch(targetSkill) {
+			case 'oral':
+			case 'vaginal':
+			case 'anal':
+				skillDec = `has mastered ${targetSkill} sex,`; break;
+			case 'whoring':
+				skillDec = `is now a masterful whore,`; break;
+			case 'entertainment':
+				skillDec = `is now a masterful entertainer,`; break;
+		}
+		if (isleadershipRole()) {
+			skillDec = `is now a masterful ${capFirstChar(targetSkill)}.`;
+		}
+
+		if (slave.skill[targetSkill] + skillIncrease >= 100) {
+			r = `<span class="green">${He} ${skillDec}</span>`;
+			switch(targetSkill) {
+				case 'oral':
+					r += ` and can learn nothing more about sucking dick or eating pussy.`; break;
+				case 'vaginal':
+					r += ` and can learn nothing more about tribbing or taking dick.`; break;
+				case 'anal':
+					r += ` and can learn nothing more about taking it up the ass.`; break;
+				case 'whoring':
+					r += ` and can learn nothing more about prostitution.`; break;
+				case 'entertainment':
+					r += ` and can learn nothing more about flirting, dancing, or stripping.`; break;
+			}
+		}
+	}
+
+	if (isleadershipRole() && slave.skill[targetSkill] + skillIncrease >= 100) {
+		V.tutorGraduate.push(slave.ID);
+		V.slaveTutor[capFirstChar(targetSkill)].delete(slave.ID);
+	}
+	slave.skill[targetSkill] += skillIncrease;
+	return r;
+};