diff --git a/js/003-data/gameVariableData.js b/js/003-data/gameVariableData.js
index 0a3cbb9e094c031bf45ea4aae64ee9a9640170ee..16aa0642711d0d91a09d3da4fdb20b8e44cc5c41 100644
--- a/js/003-data/gameVariableData.js
+++ b/js/003-data/gameVariableData.js
@@ -64,6 +64,7 @@ App.Data.defaultGameStateVariables = {
 	FSNamePref: 0,
 	HGFormality: 1,
 	HGSeverity: 0,
+	HGPiercings: 1,
 	abbreviateSidebar: 1,
 	adamPrinciple: 0,
 	allowFamilyTitles: 0,
@@ -363,7 +364,6 @@ App.Data.resetOnNGPlus = {
 	eliteAuctioned: 0,
 	slavesSacrificedThisWeek: 0,
 
-	HGtraining: "",
 	mercenariesTitle: "",
 	hormones: 0,
 	FSReminder: 0,
diff --git a/src/endWeek/reports/penthouseReport.js b/src/endWeek/reports/penthouseReport.js
new file mode 100644
index 0000000000000000000000000000000000000000..776b0e6cf67bd4a21d324de2cb12a13826c923ff
--- /dev/null
+++ b/src/endWeek/reports/penthouseReport.js
@@ -0,0 +1,684 @@
+App.EndWeek.penthouseReport = function() {
+	const el = document.createElement("p");
+	let r;
+
+	const HGSuiteSlaves = App.Utils.jobForAssignment(Job.HEADGIRLSUITE).employees();
+	const HGTrainSlavesIDs = slavesToTrain();
+
+	for (const slave of V.slaves) {
+		if (assignmentVisible(slave)) {
+			r = [];
+			const slaveEntry = App.UI.DOM.appendNewElement("div", el, '', "slave-report");
+			if (V.seeImages && V.seeReportImages) {
+				App.UI.DOM.appendNewElement("div", slaveEntry, App.Art.SlaveArtElement(slave, 0, 0), ["imageRef", "tinyImg"]);
+			}
+			slaveEntry.append(App.EndWeek.favoriteIcon(slave), " ");
+			r.push(fullReport(slave));
+			App.Events.addNode(el, r, "p");
+
+			if (slave.ID === V.HeadGirlID && HGSuiteSlaves.length > 0) {
+				/* We found the Head Girl, now let's find her slave */
+				const hgSlave = getSlave(HGSuiteSlaves[0].ID);
+				const {He2, he2} = getPronouns(hgSlave).appendSuffix("2");
+				r = [];
+				if (hgSlave.assignment !== "live with your Head Girl") {
+					r.push(`<span class="red">${hgSlave.slaveName} had been assigned to live with your Head Girl, but this week ${he2} was assigned to ${hgSlave.assignment}. ${He2} has been released to your penthouse for reassignment.</span>`);
+					removeJob(hgSlave, "live with your Head Girl");
+				} else {
+					r.push(App.UI.DOM.makeElement("span", SlaveFullName(hgSlave), "slave-name"));
+					if (hgSlave.choosesOwnAssignment === 2) {
+						r.push(App.SlaveAssignment.choosesOwnJob(hgSlave));
+						r.push(He2);
+					}
+					r.push(App.SlaveAssignment.liveWithHG(hgSlave));
+				}
+				App.Events.addNode(el, r, "p");
+			}
+		}
+	}
+
+	/* count open spots in facilities after all assignments have been decided for the week */
+	V.brothelSpots = App.Entity.facilities.brothel.freeSpace;
+	V.clubSpots = App.Entity.facilities.club.freeSpace;
+	V.dairySpots = App.Entity.facilities.dairy.freeSpace;
+	V.servantsQuartersSpots = App.Entity.facilities.servantsQuarters.freeSpace;
+
+	return el;
+
+	/**
+	 * @param {App.Entity.SlaveState} slave
+	 */
+	function fullReport(slave) {
+		const el = new DocumentFragment();
+		const {
+			He, His,
+			he, him
+		} = getPronouns(slave);
+		let r = [];
+		let milkResults;
+		let milkResult;
+
+		r.push(App.UI.DOM.makeElement("span", SlaveFullName(slave), "slave-name"));
+		if (slave.choosesOwnAssignment === 2) {
+			r.push(App.SlaveAssignment.choosesOwnJob(slave));
+			r.push(He);
+		}
+
+		switch (slave.assignment) {
+			case "rest":
+				r.push(App.SlaveAssignment.rest(slave));
+				break;
+			case "whore":
+				r.push(App.SlaveAssignment.whore(slave));
+				break;
+			case "serve the public":
+				r.push(App.SlaveAssignment.serveThePublic(slave));
+				break;
+			case "work a glory hole":
+				r.push(App.SlaveAssignment.workAGloryHole(slave));
+				break;
+			case "get milked":
+				milkResults = App.SlaveAssignment.getMilked(slave);
+				r.push(milkResults.text);
+				break;
+			case "take classes":
+				r.push(App.SlaveAssignment.takeClasses(slave));
+				break;
+			case "please you":
+				r.push(App.SlaveAssignment.pleaseYou(slave));
+				break;
+			case "be a subordinate slave":
+				r.push(App.SlaveAssignment.serveYourOtherSlaves(slave));
+				break;
+			case "be a servant":
+				r.push(App.SlaveAssignment.servant(slave));
+				break;
+			case "stay confined":
+				r.push(App.SlaveAssignment.stayConfined(slave));
+				break;
+			case "guard you":
+				r.push(App.SlaveAssignment.guardYou(slave));
+				break;
+			case "be your Head Girl":
+				r.push(App.SlaveAssignment.beYourHeadGirl(slave));
+				break;
+			case "recruit girls":
+				r.push(App.SlaveAssignment.recruitGirls(slave));
+				break;
+			default:
+				removeJob(slave, slave.assignment);
+				r.push(App.SlaveAssignment.rest(slave));
+		}
+
+		if (V.servantMilkers === 1 && slave.lactation > 0 && slave.assignment !== "get milked") {
+			r.push(`${His} assignment`);
+			if (App.Data.misc.servantMilkersJobs.includes(slave.assignment)) {
+				r.push(`is not strenuous, so ${he}`);
+				if (slave.devotion > 20) {
+					if (slave.fetish === "boobs") {
+						r.push(`eagerly`);
+					}
+					r.push(`uses`);
+				} else if (slave.devotion >= -20) {
+					r.push(`is required to use`);
+				} else {
+					r.push(`is forced to use`);
+				}
+				r.push(`the penthouse milkers frequently,`);
+				milkResult = App.SlaveAssignment.getMilked(slave, 0.5);
+			} else {
+				r.push(`keeps ${him} busy, but ${he}`);
+				if (slave.devotion > 20) {
+					if (slave.fetish === "boobs") {
+						r.push(`eagerly`);
+					}
+					r.push(`uses`);
+				} else if (slave.devotion >= -20) {
+					r.push(`is required to use`);
+				} else {
+					r.push(`is forced to use`);
+				}
+				r.push(`the penthouse milkers whenever ${he} can,`);
+				milkResult = App.SlaveAssignment.getMilked(slave, 0.25);
+			}
+			r.push(`and ${he} gives ${milkResult.milk} liters of milk over the week, which is sold for <span class="yellowgreen">${cashFormat(milkResult.milkSale)}.</span>`);
+		}
+
+		App.Events.addNode(el, r, "div");
+		r = [];
+		if (slave.minorInjury !== 0) {
+			r.push(`${His} ${slave.minorInjury} will heal by the end of the week.`);
+		}
+
+		if (V.showEWD !== 0) {
+			r.push(App.SlaveAssignment.standardSlaveReport(slave, false));
+		} else {
+			// discard return values silently
+			App.SlaveAssignment.standardSlaveReport(slave, true);
+		}
+
+		if (V.PC.health.shortDamage < 30 && Array.isArray(V.personalAttention) && V.personalAttention.findIndex(function(s) { return s.ID === slave.ID; }) !== -1) {
+			r.push(personalAttention(slave));
+		}
+
+		if (HGTrainSlavesIDs.length > 0) {
+			const trainee = HGTrainSlavesIDs.find(trainee => slave.ID === trainee.ID);
+			if (trainee) {
+				r.push(HGApplication(slave, trainee.training));
+			}
+		}
+
+		r.push(App.SlaveAssignment.devotion(slave));
+		App.Events.addNode(el, r);
+		return el;
+	}
+
+	/**
+	 * @param {App.Entity.SlaveState} slave
+	 * @param {string} headGirlsTraining
+	 */
+	function HGApplication(slave, headGirlsTraining) {
+		const el = document.createElement("span");
+		const {
+			He, His,
+			he, his, him, himself, girl
+		} = getPronouns(S.HeadGirl);
+		const {he2, his2, him2, himself2, girl2} = getPronouns(slave).appendSuffix("2");
+		let r = [];
+
+		slave.training = Math.clamp(slave.training, 0, 150);
+		let effectiveness = S.HeadGirl.actualAge + ((S.HeadGirl.intelligence + S.HeadGirl.intelligenceImplant) / 3) - (S.HeadGirl.accent * 5) + (V.HGSeverity * 10) + ((slave.intelligence + slave.intelligenceImplant) / 4) - (slave.accent * 5);
+		if (V.AgePenalty === 0) {
+			effectiveness += Math.max(0, (30 - S.HeadGirl.actualAge));
+		}
+		if (S.HeadGirl.sexualFlaw === "abusive" && V.HGSeverity >= 0) {
+			effectiveness += 10;
+		}
+		if (headGirlsTraining !== "health") {
+			slave.health.tired += 25;
+		}
+
+		r.push(`<span style="font-weight: bold">Your Head Girl</span> <span class='slave-name'>${S.HeadGirl.slaveName}</span> notices that <span class='slave-name'>${slave.slaveName}</span>`);
+		switch (headGirlsTraining) {
+			case "health":
+				r.push(`is unwell.`);
+				break;
+			case "obedience":
+				r.push(`is disobedient.`);
+				break;
+			case "paraphilia":
+				r.push(`has a paraphilia.`);
+				break;
+			case "flaw":
+				r.push(`has an unpleasant flaw worth fixing.`);
+				break;
+			case "soften":
+				r.push(`has an unpleasant flaw that ${he} can try to soften into a unique quirk.`);
+				break;
+			case "oral skill":
+				r.push(`isn't as orally skilled as ${he} is.`);
+				break;
+			case "anal skill":
+				r.push(`isn't as skilled at taking anal as ${he} is.`);
+				break;
+			case "fuck skill":
+				r.push(`isn't as skilled at vaginal intercourse as ${he} is.`);
+				break;
+			case "whore skill":
+				r.push(`isn't as skilled at the fine art of sex for money as ${he} is.`);
+				break;
+			case "entertain skill":
+				r.push(`isn't as skilled at entertainment as ${he} is.`);
+		}
+
+		if (headGirlsTraining === "health") {
+			r.push(`${He} helps ${slave.slaveName} however ${he} can. The tender care has <span class="green">improved ${slave.slaveName}'s health.</span>`);
+			improveCondition(slave, 10);
+			slave.health.tired = Math.clamp(slave.health.tired - 10, 0, 1000);
+			slave.training = 0;
+		} else {
+			if (S.HeadGirl.career === "an arcology owner") {
+				r.push(`${He} was once an arcology owner ${himself}, making ${him} truly peerless as a Head Girl.`);
+				effectiveness += 50;
+			} else if (setup.HGCareers.includes(S.HeadGirl.career)) {
+				r.push(`${He} was used to giving commands and being obeyed in ${his} life before ${he} was a slave, experience ${he} can call on now.`);
+				effectiveness += 5;
+			} else if (S.HeadGirl.skill.headGirl >= V.masteredXP) {
+				r.push(`${He} is used to giving commands and being obeyed through experience, rendering ${him} more effective.`);
+				effectiveness += 5;
+			}
+
+			if (S.HeadGirl.actualAge > 30) {
+				r.push(`${His} age and experience help ${him} as ${he} works with ${slave.slaveName}.`);
+			} else if (S.HeadGirl.actualAge < 25 && V.AgePenalty > 0) {
+				r.push(`${His} youth and inexperience impede ${him} as ${he} works with ${slave.slaveName}.`);
+			}
+
+			if (S.HeadGirl.accent >= 3) {
+				r.push(`${He} does ${his} best to give orders in ${V.language}, but has to resort to a lot of unseemly gesticulation and shouting, making ${him} much less effective.`);
+			} else if (S.HeadGirl.accent === 2) {
+				r.push(`${His} heavy ${aNational(S.HeadGirl.nationality)} accent impedes ${his} clarity in ${V.language}, making ${him} somewhat less effective.`);
+			}
+
+			if (headGirlsTraining === "obedience" || headGirlsTraining === "flaw" || headGirlsTraining === "soften") {
+				if (S.HeadGirl.intelligence + S.HeadGirl.intelligenceImplant > 50) {
+					if (slave.intelligence + slave.intelligenceImplant > 50) {
+						r.push(`${He} needs ${his} wits about ${him} to mold ${slave.slaveName}, who's quite intelligent ${himself2}.`);
+					} else if (slave.intelligence + slave.intelligenceImplant >= -50) {
+						r.push(`${His} intelligence helps ${him} mold ${slave.slaveName}.`);
+					} else {
+						r.push(`Molding ${slave.slaveName} is very easy, especially for a smart Head Girl like ${him}.`);
+					}
+				}
+			} else {
+				if (S.HeadGirl.intelligence + S.HeadGirl.intelligenceImplant > 50) {
+					if (slave.intelligence + slave.intelligenceImplant > 50) {
+						r.push(`Both slaves are quite intelligent, making ${his} job much easier.`);
+					} else if (slave.intelligence + slave.intelligenceImplant >= -50) {
+						r.push(`${He}'s quite intelligent and can teach ${slave.slaveName} well.`);
+					} else {
+						r.push(`${He} needs all ${his} considerable intelligence to get through to the idiot ${he} has to teach.`);
+					}
+				}
+			}
+
+			if (V.HGSeverity > 0) {
+				r.push(`Your directives encourage ${him} to rape any slave that fails in the slightest way, a task ${he} approaches`);
+				if (S.HeadGirl.sexualFlaw === "abusive") {
+					r.push(`eagerly, since ${he} prefers to take ${his} pleasure without consent.`);
+				} else if (S.HeadGirl.fetish === "sadist") {
+					r.push(`with sadistic enthusiasm.`);
+				} else if (S.HeadGirl.fetish === "dom") {
+					r.push(`with confidence.`);
+				} else if (S.HeadGirl.energy > 95) {
+					r.push(`as a convenient way to`);
+					if (S.HeadGirl.balls > 0) {
+						r.push(`drain ${his} perpetually overfilled balls into a series of spasming holes.`);
+					} else {
+						r.push(`sate ${his} excess sexual appetite.`);
+					}
+				} else {
+					r.push(`dutifully.`);
+				}
+				if (slave.vagina === 0) {
+					r.push(`In ${slave.slaveName}'s case, ${he}'s careful to limit ${his2} sexual abuse to things that won't take the ${girl2}'s virginity. The slave`);
+				} else if (slave.anus === 0) {
+					r.push(`${He}'s careful to molest ${slave.slaveName} in ways that don't involve penetrating ${his2} virgin ass. The slave`);
+				} else {
+					r.push(`${slave.slaveName}`);
+				}
+				if (slave.devotion > 50) {
+					r.push(`accepts the abuse, believing ${he2} deserves to be raped.`);
+				} else if (slave.devotion >= -20) {
+					r.push(`is <span class="gold">frightened</span> by the unceasing abuse.`);
+					slave.trust -= 1;
+				} else {
+					r.push(`<span class="mediumorchid">hates</span> and <span class="gold">fears</span> the constant abuse.`);
+					slave.trust -= 1;
+					slave.devotion -= 1;
+				}
+				r.push(`${S.HeadGirl.slaveName} makes sure ${his} victim hates it, every time, and ${slave.slaveName} can't help but do ${his2} very best to avoid this treatment.`);
+			} else if (V.HGSeverity === 0) {
+				r.push(`You allow ${him} to use ${his} own judgment when punishing failures,`);
+				if (S.HeadGirl.sexualFlaw === "abusive") {
+					r.push(`and ${he} usually decides in favor of forcing misbehaving slaves to get ${him} off.`);
+				} else if (S.HeadGirl.fetish === "sadist") {
+					r.push(`permission the sadist uses for ${his} own gratification.`);
+				} else if (S.HeadGirl.fetish === "dom") {
+					r.push(`which the dominant ${girl} uses confidently.`);
+				} else if (S.HeadGirl.energy > 95) {
+					r.push(`which ${he} uses to`);
+					if (S.HeadGirl.balls > 0) {
+						r.push(`force ${his} subordinates to keep ${his} balls drained.`);
+					} else {
+						r.push(`extract the constant sexual favors ${his} libido demands.`);
+					}
+				} else {
+					r.push(`and ${he} does ${his} best to be fair.`);
+				}
+				r.push(`${slave.slaveName}`);
+				if (slave.devotion > 50) {
+					r.push(`is <span class="mediumaquamarine">grateful</span> that ${he2} is punished justly when ${he2} makes mistakes.`);
+					slave.trust += 1;
+				} else if (slave.devotion >= -20) {
+					r.push(`does ${his2} best to learn quickly and avoid punishment.`);
+				} else {
+					r.push(`is <span class="gold">scared</span> by ${his2} inability to get away with the smallest disobedience.`);
+					slave.trust -= 1;
+				}
+			} else {
+				r.push(`You require ${him} to use respect when punishing; ${he} does ${his} best to motivate, but is unable to use real fear as a tool. ${slave.slaveName} understands this, and <span class="mediumaquamarine">trusts</span> that if ${he2} fails, the consequences won't be too awful.`);
+				slave.trust += 1;
+			}
+
+			if (headGirlsTraining === "obedience") {
+				slave.training = 0;
+				effectiveness -= (slave.intelligence + slave.intelligenceImplant) / 3;
+				if (effectiveness <= 0) {
+					r.push(`${slave.slaveName} is smart enough to complicate things; ${he2} manages to outwit ${him} this week and makes no progress.`);
+				} else {
+					slave.devotion += Math.ceil(effectiveness / 4);
+					if (slave.devotion < -50) {
+						r.push(`${He} helps watch and restrain the rebellious ${slave.slaveName}, helping wear ${him2} down, <span class="gold">breaking ${slave.slaveName}'s rebelliousness.</span>`);
+					} else if (slave.devotion < -20) {
+						r.push(`${He} keeps ${slave.slaveName} constantly aware of ${his2} slavery, <span class="gold">breaking ${slave.slaveName}'s resistance.</span>`);
+					} else {
+						r.push(`${He} acts as another pair of eyes watching ${slave.slaveName} and metes out punishments, <span class="gold">improving ${slave.slaveName}'s servitude.</span>`);
+					}
+				}
+			} else if (headGirlsTraining === "paraphilia") {
+				effectiveness -= (slave.intelligence + slave.intelligenceImplant) / 3;
+				slave.training += effectiveness;
+				r.push(`${S.HeadGirl.slaveName} does ${his} best to get ${slave.slaveName} past it with punishments and rewards,`);
+				if (slave.training > 100) {
+					r.push(`and <span class="green">resolves ${slave.slaveName}'s paraphilia.</span>`);
+					slave.training = 0;
+					slave.sexualFlaw = "none";
+				} else {
+					r.push(`and makes partial progress.`);
+				}
+			} else if (headGirlsTraining === "flaw") {
+				effectiveness -= (slave.intelligence + slave.intelligenceImplant) / 3;
+				slave.training += effectiveness;
+				r.push(`${S.HeadGirl.slaveName} punishes ${slave.slaveName} whenever ${he} catches ${him2} indulging in ${his2} bad habits,`);
+				if (slave.training > 100) {
+					r.push(`and <span class="green">fixes ${slave.slaveName}'s flaw.</span>`);
+					slave.training = 0;
+					if (slave.behavioralFlaw !== "none") {
+						slave.behavioralFlaw = "none";
+					} else if (slave.sexualFlaw !== "none") {
+						slave.sexualFlaw = "none";
+					}
+				} else {
+					r.push(`and makes partial progress.`);
+				}
+			} else if (headGirlsTraining === "soften") {
+				effectiveness -= (slave.intelligence + slave.intelligenceImplant) / 3;
+				slave.training += effectiveness;
+				r.push(`${He} punishes ${slave.slaveName} whenever ${he} sees ${him2} breaking the rules yet does ${his} best to retain what makes the slave special,`);
+				if (slave.training > 150) {
+					slave.training = 0;
+					r.push(`and successfully <span class="green">softens ${slave.slaveName}'s flaw.</span>`);
+					if (slave.behavioralFlaw !== "none") {
+						SoftenBehavioralFlaw(slave);
+					} else if (slave.sexualFlaw !== "none") {
+						SoftenSexualFlaw(slave);
+					}
+				} else {
+					r.push(`and makes partial progress.`);
+				}
+			} else if (headGirlsTraining === "oral skill") {
+				slave.training = 0;
+				if (S.HeadGirl.fetish === "cumslut" && S.HeadGirl.fetishStrength > 60) {
+					r.push(`In spare moments ${he} teaches ${slave.slaveName} how to suck cocks, cunts, and assholes. ${His} enthusiasm for oral sex is infectious. ${slave.slaveName}'s <span class="green">oral skills have improved.</span>`);
+					slaveSkillIncrease('oral', slave, random(5, 10));
+				} else if ((S.HeadGirl.dick > 0) && canPenetrate(S.HeadGirl)) {
+					r.push(`In spare moments ${he} teaches ${slave.slaveName} how to suck cocks, cunts, and assholes. Your Head Girl uses ${his} penis as an effective teaching tool. ${slave.slaveName}'s <span class="green">oral skills have improved.</span>`);
+					slaveSkillIncrease('oral', slave, random(5, 10));
+				} else if ((S.HeadGirl.clit > 2)) {
+					r.push(`In spare moments ${he} teaches ${slave.slaveName} how to suck cocks, cunts, and assholes. Your Head Girl uses ${his} pseudophallus-sized clit as an effective teaching tool. ${slave.slaveName}'s <span class="green">oral skills have improved.</span>`);
+					slaveSkillIncrease('oral', slave, random(5, 10));
+				} else {
+					r.push(`In spare moments ${he} teaches ${slave.slaveName} how to suck cocks, cunts, and assholes. ${slave.slaveName}'s <span class="green">oral skills have improved.</span>`);
+				}
+				slaveSkillIncrease('oral', slave, Math.ceil(effectiveness / 10));
+			} else if (headGirlsTraining === "anal skill") {
+				slave.training = 0;
+				if (S.HeadGirl.fetish === "buttslut" && S.HeadGirl.fetishStrength > 60) {
+					r.push(`In spare moments ${he} teaches ${slave.slaveName} how to take it up the ass. Your Head Girl's enthusiasm for backdoor loving is infectious. ${slave.slaveName}'s <span class="green">anal skills have improved.</span>`);
+					slaveSkillIncrease('anal', slave, random(5, 10));
+				} else if ((S.HeadGirl.dick > 0) && canPenetrate(S.HeadGirl)) {
+					r.push(`In spare moments ${he} teaches ${slave.slaveName} how to take a dick up the butt. Your Head Girl uses ${his} penis as an effective teaching tool. ${slave.slaveName}'s <span class="green">anal skills have improved.</span>`);
+					slaveSkillIncrease('anal', slave, random(5, 10));
+				} else if ((S.HeadGirl.clit > 2)) {
+					r.push(`In spare moments ${he} teaches ${slave.slaveName} how to take a phallus up the butt. Your Head Girl uses ${his} pseudophallus-sized clit as an effective teaching tool. ${slave.slaveName}'s <span class="green">anal skills have improved.</span>`);
+					slaveSkillIncrease('anal', slave, random(5, 10));
+				} else {
+					r.push(`In spare moments ${he} teaches ${slave.slaveName} how to take a dick up the butt. ${slave.slaveName}'s <span class="green">anal skills have improved.</span>`);
+				}
+				slaveSkillIncrease('anal', slave, Math.ceil(effectiveness / 10));
+			} else if (headGirlsTraining === "fuck skill") {
+				slave.training = 0;
+				if (S.HeadGirl.energy > 95) {
+					r.push(`In spare moments ${he} teaches ${slave.slaveName} how to take a dick. Your Head Girl's enthusiasm for sex is infectious. ${slave.slaveName}'s <span class="green">vanilla sex skills have improved.</span>`);
+					slaveSkillIncrease('vaginal', slave, random(5, 10));
+				} else if ((S.HeadGirl.dick > 0) && canPenetrate(S.HeadGirl)) {
+					r.push(`In spare moments ${he} teaches ${slave.slaveName} how to take a dick. Your Head Girl uses ${his} penis as an effective teaching tool. ${slave.slaveName}'s <span class="green">vanilla sex skills have improved.</span>`);
+					slaveSkillIncrease('vaginal', slave, random(5, 10));
+				} else if ((S.HeadGirl.clit > 2)) {
+					r.push(`In spare moments ${he} teaches ${slave.slaveName} how to take a phallus. Your Head Girl uses ${his} pseudophallus-sized clit as an effective teaching tool. ${slave.slaveName}'s <span class="green">vanilla sex skills have improved.</span>`);
+					slaveSkillIncrease('vaginal', slave, random(5, 10));
+				} else {
+					r.push(`In spare moments ${he} teaches ${slave.slaveName} how to take a dick. ${slave.slaveName}'s <span class="green">vanilla sex skills have improved.</span>`);
+				}
+				slaveSkillIncrease('vaginal', slave, Math.ceil(effectiveness / 10));
+			} else if (headGirlsTraining === "whore skill") {
+				slave.training = 0;
+				r.push(`In spare moments ${he} teaches ${slave.slaveName} how to prostitute ${himself2}. ${slave.slaveName}'s <span class="green">whoring skills have improved.</span>`);
+				slaveSkillIncrease('whoring', slave, Math.ceil(effectiveness / 10));
+			} else if (headGirlsTraining === "entertain skill") {
+				slave.training = 0;
+				if (S.HeadGirl.fetish === "humiliation" && S.HeadGirl.fetishStrength > 60) {
+					r.push(`In spare moments ${he} teaches ${slave.slaveName} how to entertain. Your Head Girl's enthusiasm for public display is infectious. ${slave.slaveName}'s <span class="green">entertainment skills have improved.</span>`);
+					slaveSkillIncrease('entertainment', slave, random(5, 10));
+				} else {
+					r.push(`In spare moments ${he} teaches ${slave.slaveName} how to entertain. ${slave.slaveName}'s <span class="green">entertainment skills have improved.</span>`);
+				}
+				slaveSkillIncrease('entertainment', slave, Math.ceil(effectiveness / 10));
+			}
+		}
+
+		if (slave.devotion >= -20) {
+			if (slave.attrKnown === 0) {
+				slave.attrKnown = 1;
+				r.push(`${S.HeadGirl.slaveName} also investigates the slave's basic sexual orientation, finding that ${he2} is`);
+				if (slave.attrXY <= 40) {
+					r.push(`<span class="red">disgusted by men</span>`);
+				} else if ((slave.attrXY <= 60)) {
+					r.push(`indifferent to men`);
+				} else if ((slave.attrXY <= 80)) {
+					r.push(`<span class="green">attracted to men</span>`);
+				} else {
+					r.push(`<span class="green">intensely attracted to men</span>`);
+				}
+				r.push(`and`);
+				if (slave.attrXX <= 40) {
+					r.push(`<span class="red">disgusted by women.</span>`);
+				} else if ((slave.attrXX <= 60)) {
+					r.push(`indifferent to women.`);
+				} else if ((slave.attrXX <= 80)) {
+					r.push(`<span class="green">attracted to women.</span>`);
+				} else {
+					r.push(`<span class="green">intensely attracted to women.</span>`);
+				}
+			}
+		}
+
+		if (V.HGPiercings) {
+			if (slave.devotion >= -20 && slave.genes === "XY" && slave.attrXY <= 35 && V.arcologies[0].FSBodyPurist === "unset" && (V.arcologies[0].FSPaternalist === "unset" || SlaveStatsChecker.modScore(slave).total < 13)) {
+				piercingCheck();
+			}
+		}
+
+		App.Events.addNode(el, r, "div", "indent");
+		return el;
+
+		function piercingCheck() {
+			let piercingForbidden = 0;
+			if (slave.earPiercing === 0 && slave.earShape !== "none") {
+				if (V.arcologies[0].FSDegradationist !== "unset") {
+					slave.earPiercing = 2;
+				} else {
+					slave.earPiercing = 1;
+				}
+				RulesDeconfliction(slave);
+				if (slave.earPiercing !== V.slaveAfterRA.earPiercing) {
+					piercingForbidden = 1;
+					slave.earPiercing = 0;
+				} else {
+					if (V.arcologies[0].FSDegradationist !== "unset") {
+						r.push(`${S.HeadGirl.slaveName} knows that ${slave.slaveName} needs to adjust to life as a slave${girl2}, so ${he} has the slave's ears pierced. This will be a constant reminder that ${he2} is simply a sexual object here.`);
+					} else {
+						r.push(`${S.HeadGirl.slaveName} knows that ${slave.slaveName} needs help adjusting to life as a slave${girl2}, so ${he} has the slave's ears pierced. A little feminine touch can make a big difference.`);
+					}
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
+					return;
+				}
+			}
+			if (slave.nosePiercing === 0) {
+				if (V.arcologies[0].FSDegradationist !== "unset") {
+					slave.nosePiercing = 2;
+				} else {
+					slave.nosePiercing = 1;
+				}
+				RulesDeconfliction(slave);
+				if (slave.nosePiercing !== V.slaveAfterRA.nosePiercing) {
+					piercingForbidden = 1;
+					slave.nosePiercing = 0;
+				} else {
+					if (V.arcologies[0].FSDegradationist !== "unset") {
+						r.push(`${S.HeadGirl.slaveName} knows that ${slave.slaveName} needs to adjust to life as a slave${girl2}, so ${he} gives the slave nasal studs and a large septum ring. It should push ${slave.slaveName} to see ${himself2} as a sexual object for others to use.`);
+					} else {
+						r.push(`${S.HeadGirl.slaveName} knows that ${slave.slaveName} needs help adjusting to life as a slave${girl2}, so ${he} gives the slave a cute little nose piercing. It should help ${slave.slaveName} see ${himself2} as a bit more feminine.`);
+					}
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
+					return;
+				}
+			}
+			if (slave.eyebrowPiercing === 0) {
+				if (V.arcologies[0].FSDegradationist !== "unset") {
+					slave.eyebrowPiercing = 2;
+				} else {
+					slave.eyebrowPiercing = 1;
+				}
+				RulesDeconfliction(slave);
+				if (slave.eyebrowPiercing !== V.slaveAfterRA.eyebrowPiercing) {
+					piercingForbidden = 1;
+					slave.eyebrowPiercing = 0;
+				} else {
+					if (V.arcologies[0].FSDegradationist !== "unset") {
+						r.push(`${S.HeadGirl.slaveName} knows that ${slave.slaveName} needs to adjust to life as a slave${girl2}, so ${he} gives the slave multiple eyebrow piercings. A slutty touch for a slave${girl2} should help ${him2} feel a little hungrier for cock.`);
+					} else {
+						r.push(`${S.HeadGirl.slaveName} knows that ${slave.slaveName} needs help adjusting to life as a slave${girl2}, so ${he} gives the slave a cute little eyebrow piercing. A slutty touch for a slave${girl2} should help ${him2} feel a little hungrier for cock.`);
+					}
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
+					return;
+				}
+			}
+			if (slave.lipsPiercing === 0) {
+				if (V.arcologies[0].FSDegradationist !== "unset") {
+					slave.lipsPiercing = 2;
+				} else {
+					slave.lipsPiercing = 1;
+				}
+				RulesDeconfliction(slave);
+				if (slave.lipsPiercing !== V.slaveAfterRA.lipsPiercing) {
+					piercingForbidden = 1;
+					slave.lipsPiercing = 0;
+				} else {
+					if (V.arcologies[0].FSDegradationist !== "unset") {
+						r.push(`${S.HeadGirl.slaveName} knows that ${slave.slaveName} needs to adjust to life as a slave${girl2}, so ${he} has the slave's lower lip pierced. ${his2} mouth is for pleasing penises now, so it'll help ${him2} if it looks like it.`);
+					} else {
+						r.push(`${S.HeadGirl.slaveName} knows that ${slave.slaveName} needs help adjusting to life as a slave${girl2}, so ${he} has the slave's lower lip pierced. ${his2} mouth is for pleasing penises now, so it'll help ${him2} if it looks like it.`);
+					}
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
+					return;
+				}
+			}
+			if (slave.navelPiercing === 0) {
+				if (V.arcologies[0].FSDegradationist !== "unset") {
+					slave.navelPiercing = 2;
+				} else {
+					slave.navelPiercing = 1;
+				}
+				RulesDeconfliction(slave);
+				if (slave.navelPiercing !== V.slaveAfterRA.navelPiercing) {
+					piercingForbidden = 1;
+					slave.navelPiercing = 0;
+				} else {
+					if (V.arcologies[0].FSDegradationist !== "unset") {
+						r.push(`${S.HeadGirl.slaveName} knows that ${slave.slaveName} needs help adjusting to life as a slave${girl2}, so ${he} has the slave's navel pierced with a big ring. Whatever ${he2} thinks in ${his2} mind, S.HeadGirl.slaveName makes clear to ${him2} that ${his2} body belongs to you.`);
+					} else {
+						r.push(`${S.HeadGirl.slaveName} knows that ${slave.slaveName} needs help adjusting to life as a slave${girl2}, so ${he} has the slave's navel pierced. The prettier ${his2} lower half looks, the less reluctant ${he2} should feel to take it up the butt.`);
+					}
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
+					return;
+				}
+			}
+			if (piercingForbidden) {
+				if (V.arcologies[0].FSDegradationist !== "unset") {
+					r.push(`${S.HeadGirl.slaveName} thinks some piercings might push ${slave.slaveName} to adjust to life as a slave${girl2}, but ${he} also knows you have rules applied to this slave that forbid it.`);
+				} else {
+					r.push(`${S.HeadGirl.slaveName} thinks some cute piercings might help ${slave.slaveName} adjust to life as a slave${girl2}, but ${he} also knows you have rules applied to this slave that forbid it.`);
+				}
+			}
+		}
+	}
+
+	function slavesToTrain() {
+		if (S.HeadGirl) {
+			/** @type {FC.HeadGirlTrainee[][]} */
+			const HGPossibleSlaves = [[], [], [], [], [], []];
+			for (const slave of V.slaves) {
+				if (!assignmentVisible(slave) || slave.fuckdoll === 1 || slave.ID === V.BodyguardID || slave.ID === V.HeadGirlID || slave.fetish === "mindbroken") {
+					continue;
+				} else if (Array.isArray(V.personalAttention) && V.personalAttention.some(p => p.ID === slave.ID)) {
+					continue;
+				}
+
+				if (V.headGirlTrainsHealth && slave.health.condition < -20) {
+					HGPossibleSlaves[0].push({ID: slave.ID, training: "health"});
+					continue;
+				}
+
+				if (slave.health.tired < 50) {
+					const hasParaphilia = (App.Data.misc.paraphiliaList.includes(slave.sexualFlaw));
+					if (V.headGirlTrainsParaphilias && hasParaphilia) {
+						HGPossibleSlaves[1].push({ID: slave.ID, training: "paraphilia"});
+						continue;
+					}
+
+					if (V.headGirlTrainsFlaws || V.headGirlSoftensFlaws) {
+						if (slave.behavioralFlaw !== "none" || (slave.sexualFlaw !== "none" && !hasParaphilia)) {
+							if (V.headGirlSoftensFlaws) {
+								if (slave.devotion > 20) {
+									if ((slave.behavioralFlaw !== "none" && slave.behavioralQuirk === "none") || (slave.sexualFlaw !== "none" && slave.sexualQuirk === "none" && !hasParaphilia)) {
+										HGPossibleSlaves[3].push({ID: slave.ID, training: "soften"});
+									} else {
+										HGPossibleSlaves[3].push({ID: slave.ID, training: "flaw"});
+									}
+									continue;
+								}
+							} else if (V.headGirlTrainsFlaws) {
+								HGPossibleSlaves[2].push({ID: slave.ID, training: "flaw"});
+								continue;
+							}
+						}
+					}
+
+					if (V.headGirlTrainsObedience && slave.devotion <= 20 && slave.trust >= -20) {
+						HGPossibleSlaves[4].push({ID: slave.ID, training: "obedience"});
+						continue;
+					}
+
+					if (V.headGirlTrainsSkills) {
+						if (slave.skill.oral < S.HeadGirl.skill.oral) {
+							HGPossibleSlaves[5].push({ID: slave.ID, training: "oral skill"});
+						} else if ((slave.skill.vaginal < S.HeadGirl.skill.vaginal) && (slave.vagina > 0) && (canDoVaginal(slave))) {
+							HGPossibleSlaves[5].push({ID: slave.ID, training: "fuck skill"});
+						} else if ((slave.skill.anal < S.HeadGirl.skill.anal) && (slave.anus > 0) && (canDoAnal(slave))) {
+							HGPossibleSlaves[5].push({ID: slave.ID, training: "anal skill"});
+						} else if (slave.skill.whoring < S.HeadGirl.skill.whoring) {
+							HGPossibleSlaves[5].push({ID: slave.ID, training: "whore skill"});
+						} else if ((slave.skill.entertainment < S.HeadGirl.skill.entertainment) && !isAmputee(slave)) {
+							HGPossibleSlaves[5].push({ID: slave.ID, training: "entertain skill"});
+						}
+					}
+				}
+			}
+			return HGPossibleSlaves.flatten().slice(0, App.EndWeek.saVars.HGEnergy);
+		} else {
+			return [];
+		}
+	}
+};
diff --git a/src/endWeek/reports/personalAttention.js b/src/endWeek/reports/personalAttention.js
index a6c7598774368d342005cb7bb2d028b1f20ff7b0..384c10e3778c0f1246a9bb137fc3e38f300d8c8d 100644
--- a/src/endWeek/reports/personalAttention.js
+++ b/src/endWeek/reports/personalAttention.js
@@ -88,7 +88,7 @@ globalThis.personalAttention = (function() {
 
 	/**
 	 * @param {App.Entity.SlaveState} slave
-	 * @returns {Node}
+	 * @returns {HTMLElement}
 	 */
 	function personalAttention(slave) {
 		const el = document.createElement("p");
diff --git a/src/endWeek/reportsTW/penthouseReport.tw b/src/endWeek/reportsTW/penthouseReport.tw
new file mode 100644
index 0000000000000000000000000000000000000000..76857d1b84df48b6af0145a9a63d34104bf78731
--- /dev/null
+++ b/src/endWeek/reportsTW/penthouseReport.tw
@@ -0,0 +1,3 @@
+:: Penthouse Report [nobr]
+
+<<includeDOM App.EndWeek.penthouseReport()>>
diff --git a/src/endWeek/slaveAssignmentReport.js b/src/endWeek/slaveAssignmentReport.js
index 6e2c5ba860109411a735b2d8b68d9feb4e9a7e2f..ae7220bd60721c1f53d29463e153c8e261b7436c 100644
--- a/src/endWeek/slaveAssignmentReport.js
+++ b/src/endWeek/slaveAssignmentReport.js
@@ -232,71 +232,6 @@ App.EndWeek.slaveAssignmentReport = function() {
 		}
 	}
 
-	if (S.HeadGirl) {
-		/** @type {FC.HeadGirlTrainee[][]} */
-		const HGPossibleSlaves = [[], [], [], [], [], []];
-		for (const slave of V.slaves) {
-			if (!assignmentVisible(slave) || slave.fuckdoll === 1 || slave.ID === V.BodyguardID || slave.ID === V.HeadGirlID || slave.fetish === "mindbroken") {
-				continue;
-			} else if (Array.isArray(V.personalAttention) && V.personalAttention.some(p => p.ID === slave.ID)) {
-				continue;
-			}
-
-			if (V.headGirlTrainsHealth && slave.health.condition < -20) {
-				HGPossibleSlaves[0].push({ID: slave.ID, training: "health"});
-				continue;
-			}
-
-			if (slave.health.tired < 50) {
-				const hasParaphilia = (["abusive", "anal addict", "attention whore", "breast growth", "breeder", "cum addict", "malicious", "neglectful", "self hating"].includes(slave.sexualFlaw));
-				if (V.headGirlTrainsParaphilias && hasParaphilia) {
-					HGPossibleSlaves[1].push({ID: slave.ID, training: "paraphilia"});
-					continue;
-				}
-
-				if (V.headGirlTrainsFlaws || V.headGirlSoftensFlaws) {
-					if (slave.behavioralFlaw !== "none" || (slave.sexualFlaw !== "none" && !hasParaphilia)) {
-						if (V.headGirlSoftensFlaws) {
-							if (slave.devotion > 20) {
-								if ((slave.behavioralFlaw !== "none" && slave.behavioralQuirk === "none") || (slave.sexualFlaw !== "none" && slave.sexualQuirk === "none" && !hasParaphilia)) {
-									HGPossibleSlaves[3].push({ID: slave.ID, training: "soften"});
-								} else {
-									HGPossibleSlaves[3].push({ID: slave.ID, training: "flaw"});
-								}
-								continue;
-							}
-						} else if (V.headGirlTrainsFlaws) {
-							HGPossibleSlaves[2].push({ID: slave.ID, training: "flaw"});
-							continue;
-						}
-					}
-				}
-
-				if (V.headGirlTrainsObedience && slave.devotion <= 20 && slave.trust >= -20) {
-					HGPossibleSlaves[4].push({ID: slave.ID, training: "obedience"});
-					continue;
-				}
-
-				if (V.headGirlTrainsSkills) {
-					if (slave.skill.oral < S.HeadGirl.skill.oral) {
-						HGPossibleSlaves[5].push({ID: slave.ID, training: "oral skill"});
-					} else if ((slave.skill.vaginal < S.HeadGirl.skill.vaginal) && (slave.vagina > 0) && (canDoVaginal(slave))) {
-						HGPossibleSlaves[5].push({ID: slave.ID, training: "fuck skill"});
-					} else if ((slave.skill.anal < S.HeadGirl.skill.anal) && (slave.anus > 0) && (canDoAnal(slave))) {
-						HGPossibleSlaves[5].push({ID: slave.ID, training: "anal skill"});
-					} else if (slave.skill.whoring < S.HeadGirl.skill.whoring) {
-						HGPossibleSlaves[5].push({ID: slave.ID, training: "whore skill"});
-					} else if ((slave.skill.entertainment < S.HeadGirl.skill.entertainment) && !isAmputee(slave)) {
-						HGPossibleSlaves[5].push({ID: slave.ID, training: "entertain skill"});
-					}
-				}
-			}
-		}
-		V.HGTrainSlavesIDs = HGPossibleSlaves.flatten().slice(0, App.EndWeek.saVars.HGEnergy);
-	} else {
-		V.HGTrainSlavesIDs = [];
-	}
-
 	/**
 	 * Accordion
 	 * @version 0.7RC
diff --git a/src/uncategorized/fullReport.tw b/src/uncategorized/fullReport.tw
deleted file mode 100644
index 95d64be55e6178b8149b4e3c8b328f271593c277..0000000000000000000000000000000000000000
--- a/src/uncategorized/fullReport.tw
+++ /dev/null
@@ -1,94 +0,0 @@
-:: Full Report [nobr]
-
-/* 000-250-006 */
-<<if $seeImages && $seeReportImages>>
-	<div class="imageRef medImg">
-		<<= SlaveArt($slaves[$i], 2, 0)>>
-	</div>
-<</if>>
-/* 000-250-006 */
-
-<<setLocalPronouns $slaves[$i]>>
-
-<<switch $slaves[$i].assignment>>
-<<case "rest">>
-	<<= App.SlaveAssignment.rest($slaves[$i])>>
-<<case "whore">>
-	<<= App.SlaveAssignment.whore($slaves[$i])>>
-<<case "serve the public">>
-	<<= App.SlaveAssignment.serveThePublic($slaves[$i])>>
-<<case "work a glory hole">>
-	<<= App.SlaveAssignment.workAGloryHole($slaves[$i])>>
-<<case "get milked">>
-	<<set _milkResults = App.SlaveAssignment.getMilked($slaves[$i])>>
-	<<= _milkResults.text>>
-<<case "take classes">>
-	<<= App.SlaveAssignment.takeClasses($slaves[$i])>>
-<<case "please you">>
-	<<= App.SlaveAssignment.pleaseYou($slaves[$i])>>
-<<case "be a subordinate slave">>
-	<<= App.SlaveAssignment.serveYourOtherSlaves($slaves[$i])>>
-<<case "be a servant">>
-	<<= App.SlaveAssignment.servant($slaves[$i])>>
-<<case "stay confined">>
-	<<= App.SlaveAssignment.stayConfined($slaves[$i])>>
-<<case "guard you">>
-	<<= App.SlaveAssignment.guardYou($slaves[$i])>>
-<<case "be your Head Girl">>
-	<<= App.SlaveAssignment.beYourHeadGirl($slaves[$i])>>
-<<case "recruit girls">>
-	<<= App.SlaveAssignment.recruitGirls($slaves[$i])>>
-<<default>>
-	<<= removeJob($slaves[$i], $slaves[$i].assignment)>>
-	<<= App.SlaveAssignment.rest($slaves[$i])>>
-<</switch>>
-
-<<if $servantMilkers == 1 && $slaves[$i].lactation > 0 && $slaves[$i].assignment != "get milked">>
-	$His assignment
-	<<if setup.servantMilkersJobs.includes($slaves[$i].assignment)>>
-		is not strenuous, so $he <<if $slaves[$i].devotion > 20>><<if $slaves[$i].fetish == "boobs">>eagerly <</if>>uses<<elseif $slaves[$i].devotion >= -20>>is required to use<<else>>is forced to use<</if>> the penthouse milkers frequently,
-		<<set _milkResult = App.SlaveAssignment.getMilked($slaves[$i], 0.5)>>
-	<<else>>
-		keeps $him busy, but $he <<if $slaves[$i].devotion > 20>><<if $slaves[$i].fetish == "boobs">>eagerly <</if>>uses<<elseif $slaves[$i].devotion >= -20>>is required to use<<else>>is forced to use<</if>> the penthouse milkers whenever $he can,
-		<<set _milkResult = App.SlaveAssignment.getMilked($slaves[$i], 0.25)>>
-	<</if>>
-	and $he gives <<= _milkResult.milk>> liters of milk over the week, which is sold for @@.yellowgreen;<<print cashFormat(_milkResult.milkSale)>>.@@
-<</if>>
-
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-<<if $slaves[$i].minorInjury != 0>>
-	$His $slaves[$i].minorInjury will heal by the end of the week.
-<</if>>
-
-<<if $showEWD == 0>>
-	<<includeDOM App.SlaveAssignment.rules($slaves[$i])>>
-	<<run App.SlaveAssignment.choosesOwnClothes($slaves[$i])>>
-	<<run App.SlaveAssignment.diet($slaves[$i])>>
-	<<run App.SlaveAssignment.longTermEffects($slaves[$i])>>
-	<<run App.SlaveAssignment.drugs($slaves[$i])>>
-	<<run App.SlaveAssignment.relationships($slaves[$i])>>
-	<<run App.SlaveAssignment.rivalries($slaves[$i])>>
-<<else>>
-	<<includeDOM App.SlaveAssignment.rules($slaves[$i])>>
-	<<= App.SlaveAssignment.choosesOwnClothes($slaves[$i])>>
-	<<= App.SlaveAssignment.diet($slaves[$i])>>
-	<<includeDOM App.SlaveAssignment.longTermEffects($slaves[$i])>>
-	<<= App.SlaveAssignment.drugs($slaves[$i])>>
-	<<= App.SlaveAssignment.relationships($slaves[$i])>>
-	<<= App.SlaveAssignment.rivalries($slaves[$i])>>
-	<br>
-<</if>>
-
-<<if $PC.health.shortDamage < 30 && Array.isArray($personalAttention) && $personalAttention.findIndex(function(s) { return s.ID == $slaves[$i].ID; }) != -1>>
-	<<includeDOM personalAttention($slaves[$i])>>
-<</if>>
-
-<<for _hgtsidx = 0; _hgtsidx < $HGTrainSlavesIDs.length; _hgtsidx++>>
-	<<if $slaves[$i].ID == $HGTrainSlavesIDs[_hgtsidx].ID>>
-		<<set $activeSlave = $slaves[$i], $HGtraining = $HGTrainSlavesIDs[_hgtsidx].training>>
-		<<include "HG Application">>
-		<br>
-	<</if>>
-<</for>>
-
-&nbsp;&nbsp;&nbsp;&nbsp;<<= App.SlaveAssignment.devotion($slaves[$i])>>
diff --git a/src/uncategorized/hgApplication.tw b/src/uncategorized/hgApplication.tw
deleted file mode 100644
index c5b39589583edfcd96b9386303845d1742b8b0b8..0000000000000000000000000000000000000000
--- a/src/uncategorized/hgApplication.tw
+++ /dev/null
@@ -1,441 +0,0 @@
-:: HG Application [nobr]
-
-<<setLocalPronouns _S.HeadGirl>>
-<<setLocalPronouns $activeSlave 2>>
-
-<<if ndef $HGSeverity>>
-	<<set $HGSeverity = 0>>
-<</if>>
-
-<<set $activeSlave.training = Math.clamp($activeSlave.training, 0, 150)>>
-<<set _effectiveness = _S.HeadGirl.actualAge+((_S.HeadGirl.intelligence+_S.HeadGirl.intelligenceImplant)/3)-(_S.HeadGirl.accent*5)+($HGSeverity*10)+(($activeSlave.intelligence+$activeSlave.intelligenceImplant)/4)-($activeSlave.accent*5)>>
-<<if $AgePenalty == 0>>
-	<<set _effectiveness += Math.max(0,(30-_S.HeadGirl.actualAge))>>
-<</if>>
-<<if _S.HeadGirl.sexualFlaw == "abusive" && $HGSeverity >= 0>>
-	<<set _effectiveness += 10>>
-<</if>>
-<<if $HGtraining != "health">>
-	<<set $activeSlave.health.tired += 25>>
-<</if>>
-
-&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-weight: bold">Your Head Girl</span> <span class='slave-name'>_S.HeadGirl.slaveName</span> notices that <span class='slave-name'>$activeSlave.slaveName</span>
-<<switch $HGtraining>>
-<<case "health">>
-	is unwell.
-<<case "obedience">>
-	is disobedient.
-<<case "paraphilia">>
-	has a paraphilia.
-<<case "flaw">>
-	has an unpleasant flaw worth fixing.
-<<case "soften">>
-	has an unpleasant flaw that $he can try to soften into a unique quirk.
-<<case "oral skill">>
-	isn't as orally skilled as $he is.
-<<case "anal skill">>
-	isn't as skilled at taking anal as $he is.
-<<case "fuck skill">>
-	isn't as skilled at vaginal intercourse as $he is.
-<<case "whore skill">>
-	isn't as skilled at the fine art of sex for money as $he is.
-<<case "entertain skill">>
-	isn't as skilled at entertainment as $he is.
-<</switch>>
-
-<<if $HGtraining == "health">>
-
-$He helps $activeSlave.slaveName however $he can. The tender care has @@.green;improved $activeSlave.slaveName's health.@@
-<<run improveCondition($activeSlave, 10)>>
-<<set $activeSlave.health.tired = Math.clamp($activeSlave.health.tired-10, 0, 1000)>>
-<<set $activeSlave.training = 0>>
-
-<<else>>
-
-<<if _S.HeadGirl.career == "an arcology owner">>
-	$He was once an arcology owner $himself, making $him truly peerless as a Head Girl.
-	<<set _effectiveness += 50>>
-<<elseif setup.HGCareers.includes(_S.HeadGirl.career)>>
-	$He was used to giving commands and being obeyed in $his life before $he was a slave, experience $he can call on now.
-	<<set _effectiveness += 5>>
-<<elseif _S.HeadGirl.skill.headGirl >= $masteredXP>>
-	$He is used to giving commands and being obeyed through experience, rendering $him more effective.
-	<<set _effectiveness += 5>>
-<</if>>
-
-<<if _S.HeadGirl.actualAge > 30>>
-	$His age and experience help $him as $he works with $activeSlave.slaveName.
-<<elseif _S.HeadGirl.actualAge < 25 && $AgePenalty > 0>>
-	$His youth and inexperience impede $him as $he works with $activeSlave.slaveName.
-<</if>>
-
-<<if _S.HeadGirl.accent >= 3>>
-	$He does $his best to give orders in $language, but has to resort to a lot of unseemly gesticulation and shouting, making $him much less effective.
-<<elseif _S.HeadGirl.accent == 2>>
-	$His heavy <<print aNational(_S.HeadGirl.nationality)>> accent impedes $his clarity in $language, making $him somewhat less effective.
-<</if>>
-
-<<if ($HGtraining == "obedience") || ($HGtraining == "flaw") || ($HGtraining == "soften")>>
-	<<if _S.HeadGirl.intelligence+_S.HeadGirl.intelligenceImplant > 50>>
-		<<if $activeSlave.intelligence+$activeSlave.intelligenceImplant > 50>>
-			$He needs $his wits about $him to mold $activeSlave.slaveName, who's quite intelligent _himself2.
-		<<elseif $activeSlave.intelligence+$activeSlave.intelligenceImplant >= -50>>
-			$His intelligence helps $him mold $activeSlave.slaveName.
-		<<else>>
-			Molding $activeSlave.slaveName is very easy, especially for a smart Head Girl like $him.
-		<</if>>
-	<</if>>
-<<else>>
-	<<if _S.HeadGirl.intelligence+_S.HeadGirl.intelligenceImplant > 50>>
-		<<if $activeSlave.intelligence+$activeSlave.intelligenceImplant > 50>>
-			Both slaves are quite intelligent, making $his job much easier.
-		<<elseif $activeSlave.intelligence+$activeSlave.intelligenceImplant >= -50>>
-			$He's quite intelligent and can teach $activeSlave.slaveName well.
-		<<else>>
-			$He needs all $his considerable intelligence to get through to the idiot $he has to teach.
-		<</if>>
-	<</if>>
-<</if>>
-
-<<if $HGSeverity > 0>>
-	Your directives encourage $him to rape any slave that fails in the slightest way, a task $he approaches
-	<<if _S.HeadGirl.sexualFlaw == "abusive">>
-		eagerly, since $he prefers to take $his pleasure without consent.
-	<<elseif _S.HeadGirl.fetish == "sadist">>
-		with sadistic enthusiasm.
-	<<elseif _S.HeadGirl.fetish == "dom">>
-		with confidence.
-	<<elseif _S.HeadGirl.energy > 95>>
-		as a convenient way to
-		<<if (_S.HeadGirl.balls > 0)>>
-			drain $his perpetually overfilled balls into a series of spasming holes.
-		<<else>>
-			sate $his excess sexual appetite.
-		<</if>>
-	<<else>>
-		dutifully.
-	<</if>>
-	<<if $activeSlave.vagina == 0>>
-		In $activeSlave.slaveName's case, $he's careful to limit _his2 sexual abuse to things that won't take the _girl2's virginity. The slave
-	<<elseif $activeSlave.anus == 0>>
-		$He's careful to molest $activeSlave.slaveName in ways that don't involve penetrating _his2 virgin ass. The slave
-	<<else>>
-		$activeSlave.slaveName
-	<</if>>
-	<<if $activeSlave.devotion > 50>>
-		accepts the abuse, believing _he2 deserves to be raped.
-	<<elseif $activeSlave.devotion >= -20>>
-		is @@.gold;frightened@@ by the unceasing abuse.
-		<<set $activeSlave.trust -= 1>>
-	<<else>>
-		@@.mediumorchid;hates@@ and @@.gold;fears@@ the constant abuse.
-		<<set $activeSlave.trust -= 1>>
-		<<set $activeSlave.devotion -= 1>>
-	<</if>>
-	_S.HeadGirl.slaveName makes sure $his victim hates it, every time, and $activeSlave.slaveName can't help but do _his2 very best to avoid this treatment.
-<<elseif $HGSeverity == 0>>
-	You allow $him to use $his own judgment when punishing failures,
-	<<if _S.HeadGirl.sexualFlaw == "abusive">>
-		and $he usually decides in favor of forcing misbehaving slaves to get $him off.
-	<<elseif _S.HeadGirl.fetish == "sadist">>
-		permission the sadist uses for $his own gratification.
-	<<elseif _S.HeadGirl.fetish == "dom">>
-		which the dominant $girl uses confidently.
-	<<elseif _S.HeadGirl.energy > 95>>
-		which $he uses to
-		<<if (_S.HeadGirl.balls > 0)>>
-			force $his subordinates to keep $his balls drained.
-		<<else>>
-			extract the constant sexual favors $his libido demands.
-		<</if>>
-	<<else>>
-		and $he does $his best to be fair.
-	<</if>>
-	$activeSlave.slaveName
-	<<if $activeSlave.devotion > 50>>
-		is @@.mediumaquamarine;grateful@@ that _he2 is punished justly when _he2 makes mistakes.
-		<<set $activeSlave.trust += 1>>
-	<<elseif $activeSlave.devotion >= -20>>
-		does _his2 best to learn quickly and avoid punishment.
-	<<else>>
-		is @@.gold;scared@@ by _his2 inability to get away with the smallest disobedience.
-		<<set $activeSlave.trust -= 1>>
-	<</if>>
-<<else>>
-	You require $him to use respect when punishing; $he does $his best to motivate, but is unable to use real fear as a tool. $activeSlave.slaveName understands this, and @@.mediumaquamarine;trusts@@ that if _he2 fails, the consequences won't be too awful.
-	<<set $activeSlave.trust += 1>>
-<</if>>
-
-<<if $HGtraining == "obedience">>
-
-<<set $activeSlave.training = 0>>
-<<set _effectiveness -= ($activeSlave.intelligence+$activeSlave.intelligenceImplant)/3>>
-<<if _effectiveness <= 0>>
-	$activeSlave.slaveName is smart enough to complicate things; _he2 manages to outwit $him this week and makes no progress.
-<<else>>
-	<<set $activeSlave.devotion += Math.ceil(_effectiveness/4)>>
-	<<if $activeSlave.devotion < -50>>
-		$He helps watch and restrain the rebellious $activeSlave.slaveName, helping wear _him2 down, @@.gold;breaking $activeSlave.slaveName's rebelliousness.@@
-	<<elseif $activeSlave.devotion < -20>>
-		$He keeps $activeSlave.slaveName constantly aware of _his2 slavery, @@.gold;breaking $activeSlave.slaveName's resistance.@@
-	<<else>>
-		$He acts as another pair of eyes watching $activeSlave.slaveName and metes out punishments, @@.gold;improving $activeSlave.slaveName's servitude.@@
-	<</if>>
-<</if>>
-
-<<elseif $HGtraining == "paraphilia">>
-
-<<set _effectiveness -= ($activeSlave.intelligence+$activeSlave.intelligenceImplant)/3>>
-<<set $activeSlave.training += _effectiveness>>
-_S.HeadGirl.slaveName does $his best to get $activeSlave.slaveName past it with punishments and rewards,
-<<if $activeSlave.training > 100>>
-	and @@.green;resolves $activeSlave.slaveName's paraphilia.@@
-	<<set $activeSlave.training = 0>>
-	<<set $activeSlave.sexualFlaw = "none">>
-<<else>>
-	and makes partial progress.
-<</if>>
-
-<<elseif $HGtraining == "flaw">>
-
-<<set _effectiveness -= ($activeSlave.intelligence+$activeSlave.intelligenceImplant)/3>>
-<<set $activeSlave.training += _effectiveness>>
-_S.HeadGirl.slaveName punishes $activeSlave.slaveName whenever $he catches _him2 indulging in _his2 bad habits,
-<<if $activeSlave.training > 100>>
-	and @@.green;fixes $activeSlave.slaveName's flaw.@@
-	<<set $activeSlave.training = 0>>
-	<<if $activeSlave.behavioralFlaw != "none">>
-		<<set $activeSlave.behavioralFlaw = "none">>
-	<<elseif $activeSlave.sexualFlaw != "none">>
-		<<set $activeSlave.sexualFlaw = "none">>
-	<</if>>
-<<else>>
-	and makes partial progress.
-<</if>>
-
-<<elseif $HGtraining == "soften">>
-
-<<set _effectiveness -= ($activeSlave.intelligence+$activeSlave.intelligenceImplant)/3>>
-<<set $activeSlave.training += _effectiveness>>
-$He punishes $activeSlave.slaveName whenever $he sees _him2 breaking the rules yet does $his best to retain what makes the slave special,
-<<if $activeSlave.training > 150>>
-	<<set $activeSlave.training = 0>>
-	and successfully @@.green;softens $activeSlave.slaveName's flaw.@@
-	<<if $activeSlave.behavioralFlaw != "none">>
-		<<run SoftenBehavioralFlaw($activeSlave)>>
-	<<elseif $activeSlave.sexualFlaw != "none">>
-		<<run SoftenSexualFlaw($activeSlave)>>
-	<</if>>
-<<else>>
-	and makes partial progress.
-<</if>>
-
-<<elseif $HGtraining == "oral skill">>
-
-<<set $activeSlave.training = 0>>
-<<if (_S.HeadGirl.fetish == "cumslut") && (_S.HeadGirl.fetishStrength > 60)>>
-	In spare moments $he teaches $activeSlave.slaveName how to suck cocks, cunts, and assholes. $His enthusiasm for oral sex is infectious. $activeSlave.slaveName's @@.green;oral skills have improved.@@
-	<<= slaveSkillIncrease('oral', $activeSlave, random(5,10))>>
-<<elseif (_S.HeadGirl.dick > 0) && canPenetrate(_S.HeadGirl)>>
-	In spare moments $he teaches $activeSlave.slaveName how to suck cocks, cunts, and assholes. Your Head Girl uses $his penis as an effective teaching tool. $activeSlave.slaveName's @@.green;oral skills have improved.@@
-	<<= slaveSkillIncrease('oral', $activeSlave, random(5,10))>>
-<<elseif (_S.HeadGirl.clit > 2)>>
-	In spare moments $he teaches $activeSlave.slaveName how to suck cocks, cunts, and assholes. Your Head Girl uses $his pseudophallus-sized clit as an effective teaching tool. $activeSlave.slaveName's @@.green;oral skills have improved.@@
-	<<= slaveSkillIncrease('oral', $activeSlave, random(5,10))>>
-<<else>>
-	In spare moments $he teaches $activeSlave.slaveName how to suck cocks, cunts, and assholes. $activeSlave.slaveName's @@.green;oral skills have improved.@@
-<</if>>
-<<= slaveSkillIncrease('oral', $activeSlave, Math.ceil(_effectiveness/10))>>
-
-<<elseif $HGtraining == "anal skill">>
-
-<<set $activeSlave.training = 0>>
-<<if (_S.HeadGirl.fetish == "buttslut") && (_S.HeadGirl.fetishStrength > 60)>>
-	In spare moments $he teaches $activeSlave.slaveName how to take it up the ass. Your Head Girl's enthusiasm for backdoor loving is infectious. $activeSlave.slaveName's @@.green;anal skills have improved.@@
-	<<= slaveSkillIncrease('anal', $activeSlave, random(5,10))>>
-<<elseif (_S.HeadGirl.dick > 0) && canPenetrate(_S.HeadGirl)>>
-	In spare moments $he teaches $activeSlave.slaveName how to take a dick up the butt. Your Head Girl uses $his penis as an effective teaching tool. $activeSlave.slaveName's @@.green;anal skills have improved.@@
-	<<= slaveSkillIncrease('anal', $activeSlave, random(5,10))>>
-<<elseif (_S.HeadGirl.clit > 2)>>
-	In spare moments $he teaches $activeSlave.slaveName how to take a phallus up the butt. Your Head Girl uses $his pseudophallus-sized clit as an effective teaching tool. $activeSlave.slaveName's @@.green;anal skills have improved.@@
-	<<= slaveSkillIncrease('anal', $activeSlave, random(5,10))>>
-<<else>>
-	In spare moments $he teaches $activeSlave.slaveName how to take a dick up the butt. $activeSlave.slaveName's @@.green;anal skills have improved.@@
-<</if>>
-<<= slaveSkillIncrease('anal', $activeSlave, Math.ceil(_effectiveness/10))>>
-
-<<elseif $HGtraining == "fuck skill">>
-
-<<set $activeSlave.training = 0>>
-<<if (_S.HeadGirl.energy > 95)>>
-	In spare moments $he teaches $activeSlave.slaveName how to take a dick. Your Head Girl's enthusiasm for sex is infectious. $activeSlave.slaveName's @@.green;vanilla sex skills have improved.@@
-	<<= slaveSkillIncrease('vaginal', $activeSlave, random(5,10))>>
-<<elseif (_S.HeadGirl.dick > 0) && canPenetrate(_S.HeadGirl)>>
-	In spare moments $he teaches $activeSlave.slaveName how to take a dick. Your Head Girl uses $his penis as an effective teaching tool. $activeSlave.slaveName's @@.green;vanilla sex skills have improved.@@
-	<<= slaveSkillIncrease('vaginal', $activeSlave, random(5,10))>>
-<<elseif (_S.HeadGirl.clit > 2)>>
-	In spare moments $he teaches $activeSlave.slaveName how to take a phallus. Your Head Girl uses $his pseudophallus-sized clit as an effective teaching tool. $activeSlave.slaveName's @@.green;vanilla sex skills have improved.@@
-	<<= slaveSkillIncrease('vaginal', $activeSlave, random(5,10))>>
-<<else>>
-	In spare moments $he teaches $activeSlave.slaveName how to take a dick. $activeSlave.slaveName's @@.green;vanilla sex skills have improved.@@
-<</if>>
-<<= slaveSkillIncrease('vaginal', $activeSlave, Math.ceil(_effectiveness/10))>>
-
-<<elseif $HGtraining == "whore skill">>
-
-<<set $activeSlave.training = 0>>
-In spare moments $he teaches $activeSlave.slaveName how to prostitute _himself2. $activeSlave.slaveName's @@.green;whoring skills have improved.@@
-<<= slaveSkillIncrease('whoring', $activeSlave, Math.ceil(_effectiveness/10))>>
-
-<<elseif $HGtraining == "entertain skill">>
-
-<<set $activeSlave.training = 0>>
-<<if (_S.HeadGirl.fetish == "humiliation") && (_S.HeadGirl.fetishStrength > 60)>>
-	In spare moments $he teaches $activeSlave.slaveName how to entertain. Your Head Girl's enthusiasm for public display is infectious. $activeSlave.slaveName's @@.green;entertainment skills have improved.@@
-	<<= slaveSkillIncrease('entertainment', $activeSlave, random(5,10))>>
-<<else>>
-	In spare moments $he teaches $activeSlave.slaveName how to entertain. $activeSlave.slaveName's @@.green;entertainment skills have improved.@@
-<</if>>
-<<= slaveSkillIncrease('entertainment', $activeSlave, Math.ceil(_effectiveness/10))>>
-
-<</if>>
-<</if>>
-
-<<if ($activeSlave.devotion >= -20)>>
-<<if ($activeSlave.attrKnown == 0)>>
-	<<set $activeSlave.attrKnown = 1>>
-	_S.HeadGirl.slaveName also investigates the slave's basic sexual orientation, finding that _he2 is
-	<<if ($activeSlave.attrXY <= 40)>>
-		@@.red;disgusted by men@@
-	<<elseif ($activeSlave.attrXY <= 60)>>
-		indifferent to men
-	<<elseif ($activeSlave.attrXY <= 80)>>
-		@@.green;attracted to men@@
-	<<else>>
-		@@.green;intensely attracted to men@@
-	<</if>>
-	and
-	<<if ($activeSlave.attrXX <= 40)>>
-		@@.red;disgusted by women.@@
-	<<elseif ($activeSlave.attrXX <= 60)>>
-		indifferent to women.
-	<<elseif ($activeSlave.attrXX <= 80)>>
-		@@.green;attracted to women.@@
-	<<else>>
-		@@.green;intensely attracted to women.@@
-	<</if>>
-<</if>>
-<</if>>
-
-<<if $HGPiercings>>
-	<<if $activeSlave.devotion >= -20 && $activeSlave.genes == "XY" && $activeSlave.attrXY <= 35 && $arcologies[0].FSBodyPurist == "unset" && ($arcologies[0].FSPaternalist == "unset" || ($arcologies[0].FSPaternalist != "unset" && SlaveStatsChecker.modScore($activeSlave).total < 13))>>
-		<<set _piercingForbidden = 0>>
-		<<for _i = 0; _i < 1; _i++>>
-			<<if $activeSlave.earPiercing == 0 && $activeSlave.earShape !== "none">>
-				<<if $arcologies[0].FSDegradationist != "unset">>
-					<<set $activeSlave.earPiercing = 2>>
-				<<else>>
-					<<set $activeSlave.earPiercing = 1>>
-				<</if>>
-				<<run RulesDeconfliction($activeSlave)>>
-				<<if $activeSlave.earPiercing != $slaveAfterRA.earPiercing>>
-					<<set _piercingForbidden = 1, $activeSlave.earPiercing = 0>>
-				<<else>>
-					<<if $arcologies[0].FSDegradationist != "unset">>
-						_S.HeadGirl.slaveName knows that $activeSlave.slaveName needs to adjust to life as a slave _girl2, so $he has the slave's ears pierced. This will be a constant reminder that _he2 is simply a sexual object here.
-					<<else>>
-						_S.HeadGirl.slaveName knows that $activeSlave.slaveName needs help adjusting to life as a slave _girl2, so $he has the slave's ears pierced. A little feminine touch can make a big difference.
-					<</if>>
-					<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>>
-					<<break>>
-				<</if>>
-			<</if>>
-			<<if $activeSlave.nosePiercing == 0>>
-				<<if $arcologies[0].FSDegradationist != "unset">>
-					<<set $activeSlave.nosePiercing = 2>>
-				<<else>>
-					<<set $activeSlave.nosePiercing = 1>>
-				<</if>>
-				<<run RulesDeconfliction($activeSlave)>>
-				<<if $activeSlave.nosePiercing != $slaveAfterRA.nosePiercing>>
-					<<set _piercingForbidden = 1, $activeSlave.nosePiercing = 0>>
-				<<else>>
-					<<if $arcologies[0].FSDegradationist != "unset">>
-						_S.HeadGirl.slaveName knows that $activeSlave.slaveName needs to adjust to life as a slave _girl2, so $he gives the slave nasal studs and a large septum ring. It should push $activeSlave.slaveName to see _himself2 as a sexual object for others to use.
-					<<else>>
-						_S.HeadGirl.slaveName knows that $activeSlave.slaveName needs help adjusting to life as a slave _girl2, so $he gives the slave a cute little nose piercing. It should help $activeSlave.slaveName see _himself2 as a bit more feminine.
-					<</if>>
-					<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>>
-					<<break>>
-				<</if>>
-			<</if>>
-			<<if $activeSlave.eyebrowPiercing == 0>>
-				<<if $arcologies[0].FSDegradationist != "unset">>
-					<<set $activeSlave.eyebrowPiercing = 2>>
-				<<else>>
-					<<set $activeSlave.eyebrowPiercing = 1>>
-				<</if>>
-				<<run RulesDeconfliction($activeSlave)>>
-				<<if $activeSlave.eyebrowPiercing != $slaveAfterRA.eyebrowPiercing>>
-					<<set _piercingForbidden = 1, $activeSlave.eyebrowPiercing = 0>>
-				<<else>>
-					<<if $arcologies[0].FSDegradationist != "unset">>
-						_S.HeadGirl.slaveName knows that $activeSlave.slaveName needs to adjust to life as a slave _girl2, so $he gives the slave multiple eyebrow piercings. A slutty touch for a slave _girl2 should help _him2 feel a little hungrier for cock.
-					<<else>>
-						_S.HeadGirl.slaveName knows that $activeSlave.slaveName needs help adjusting to life as a slave _girl2, so $he gives the slave a cute little eyebrow piercing. A slutty touch for a slave _girl2 should help _him2 feel a little hungrier for cock.
-					<</if>>
-					<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>>
-					<<break>>
-				<</if>>
-			<</if>>
-			<<if $activeSlave.lipsPiercing == 0>>
-				<<if $arcologies[0].FSDegradationist != "unset">>
-					<<set $activeSlave.lipsPiercing = 2>>
-				<<else>>
-					<<set $activeSlave.lipsPiercing = 1>>
-				<</if>>
-				<<run RulesDeconfliction($activeSlave)>>
-				<<if $activeSlave.lipsPiercing != $slaveAfterRA.lipsPiercing>>
-					<<set _piercingForbidden = 1, $activeSlave.lipsPiercing = 0>>
-				<<else>>
-					<<if $arcologies[0].FSDegradationist != "unset">>
-						_S.HeadGirl.slaveName knows that $activeSlave.slaveName needs to adjust to life as a slave _girl2, so $he has the slave's lower lip pierced. _His2 mouth is for pleasing penises now, so it'll help _him2 if it looks like it.
-					<<else>>
-						_S.HeadGirl.slaveName knows that $activeSlave.slaveName needs help adjusting to life as a slave _girl2, so $he has the slave's lower lip pierced. _His2 mouth is for pleasing penises now, so it'll help _him2 if it looks like it.
-					<</if>>
-					<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>>
-					<<break>>
-				<</if>>
-			<</if>>
-			<<if $activeSlave.navelPiercing == 0>>
-				<<if $arcologies[0].FSDegradationist != "unset">>
-					<<set $activeSlave.navelPiercing = 2>>
-				<<else>>
-					<<set $activeSlave.navelPiercing = 1>>
-				<</if>>
-				<<run RulesDeconfliction($activeSlave)>>
-				<<if $activeSlave.navelPiercing != $slaveAfterRA.navelPiercing>>
-					<<set _piercingForbidden = 1, $activeSlave.navelPiercing = 0>>
-				<<else>>
-					<<if $arcologies[0].FSDegradationist != "unset">>
-						_S.HeadGirl.slaveName knows that $activeSlave.slaveName needs help adjusting to life as a slave _girl2, so $he has the slave's navel pierced with a big ring. Whatever _he2 thinks in _his2 mind, _S.HeadGirl.slaveName makes clear to _him2 that _his2 body belongs to you.
-					<<else>>
-						_S.HeadGirl.slaveName knows that $activeSlave.slaveName needs help adjusting to life as a slave _girl2, so $he has the slave's navel pierced. The prettier _his2 lower half looks, the less reluctant _he2 should feel to take it up the butt.
-					<</if>>
-					<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>>
-					<<break>>
-				<</if>>
-			<</if>>
-			<<break>>
-		<</for>>
-		<<if _piercingForbidden>>
-			<<if $arcologies[0].FSDegradationist != "unset">>
-				_S.HeadGirl.slaveName thinks some piercings might push $activeSlave.slaveName to adjust to life as a slave _girl2, but $he also knows you have rules applied to this slave that forbid it.
-			<<else>>
-				_S.HeadGirl.slaveName thinks some cute piercings might help $activeSlave.slaveName adjust to life as a slave _girl2, but $he also knows you have rules applied to this slave that forbid it.
-			<</if>>
-		<</if>>
-	<</if>>
-<</if>>
-
-<<set $slaves[$slaveIndices[$activeSlave.ID]] = $activeSlave>> /* save changes */
diff --git a/src/uncategorized/penthouseReport.tw b/src/uncategorized/penthouseReport.tw
deleted file mode 100644
index 8119bfbbce3a0627c94ccc60c6b6057dd1b48e86..0000000000000000000000000000000000000000
--- a/src/uncategorized/penthouseReport.tw
+++ /dev/null
@@ -1,44 +0,0 @@
-:: Penthouse Report [nobr]
-
-<<set _SL = $slaves.length>>
-
-<<set _HGSuitSlaves = App.Utils.jobForAssignment(Job.HEADGIRLSUITE).employees()>>
-
-<<for $i = 0; $i < _SL; $i++>>
-	<<if assignmentVisible($slaves[$i])>>
-		<div>
-		<<includeDOM App.EndWeek.favoriteIcon($slaves[$i])>>
-		<span class='slave-name'><<= SlaveFullName($slaves[$i])>></span>
-		<<if $slaves[$i].choosesOwnAssignment == 2>>
-			<<= App.SlaveAssignment.choosesOwnJob($slaves[$i])>>
-			$He
-		<</if>>
-		<<include "Full Report">>
-		<br><br>
-
-		<<if ($slaves[$i].ID == $HeadGirlID) && (_HGSuitSlaves.length > 0)>>
-			/% We found the Head Girl, now let's find her slave %/
-			<<set _iTemp = $i>>
-			<<set _ID = _HGSuitSlaves[0].ID, $i = $slaveIndices[_ID]>>
-
-			<<if $slaves[$i].assignment != "live with your Head Girl">>
-				<br>@@.red;$slaves[$i].slaveName had been assigned to live with your Head Girl, but this week $he was assigned to $slaves[$i].assignment. $He has been released to your penthouse for reassignment.@@
-				<<= removeJob($slaves[$i], "live with your Head Girl")>>
-			<<else>>
-				<span class='slave-name'><<= SlaveFullName($slaves[$i])>></span>
-				<<if $slaves[$i].choosesOwnAssignment == 2>>
-					<<= App.SlaveAssignment.choosesOwnJob($slaves[$i])>>
-					$He
-				<</if>>
-				<<includeDOM App.SlaveAssignment.liveWithHG($slaves[$i])>>
-				<br><br>
-			<</if>>
-
-			<<set $i = _iTemp>>
-		<</if>>
-		<br style="clear: both;"></div>
-	<</if>>
-<</for>>
-
-/* count open spots in facilities after all assignments have been decided for the week */
-<<set $brothelSpots = App.Entity.facilities.brothel.freeSpace, $clubSpots = App.Entity.facilities.club.freeSpace, $dairySpots = App.Entity.facilities.dairy.freeSpace, $servantsQuartersSpots = App.Entity.facilities.servantsQuarters.freeSpace>>