diff --git a/src/events/PE/UnderageConcubine.js b/src/events/PE/UnderageConcubine.js
index caaf3c0ed1ac1288d3dde1a6e46faf73681ac204..5bb78c2d7db2bff90045450f1accb8811639e2d9 100644
--- a/src/events/PE/UnderageConcubine.js
+++ b/src/events/PE/UnderageConcubine.js
@@ -37,7 +37,7 @@ App.Events.PEUnderageConcubine = class PEUnderageConcubine extends App.Events.Ba
 
 		let t = [];
 		t.push(`You've found a bit of time in your hectic schedule, as you always try to do, to relax and enjoy letting`);
-		t.push(contextualIntro(V.PC, concubine, "DOM"));
+		t.push(contextualIntro(V.PC, concubine, true));
 		t.push(`do what ${he} does best.`);
 		const receptacle = concubine.toyHole === "all her holes" || concubine.toyHole === "dick" ? "mouth" : concubine.toyHole;
 		t.push(`Just after you come ${concubine.toyHole === "boobs" ? `on ${his} chest` : `in ${his} ${receptacle}`}, ${V.assistant.name} lets you know that you and ${V.arcologies[0].name} have been trending in old-world social media.`);
diff --git a/src/events/PE/peHeadgirlConcubine.js b/src/events/PE/peHeadgirlConcubine.js
index aaaef08315b5d235c7e0e6c66ff758e783af6333..2164298f7dc4f289124f3bc01ddc9d01047c597d 100644
--- a/src/events/PE/peHeadgirlConcubine.js
+++ b/src/events/PE/peHeadgirlConcubine.js
@@ -53,7 +53,7 @@ App.Events.PEHeadgirlConcubine = class PEHeadgirlConcubine extends App.Events.Ba
 		};
 
 
-		r.push(`You wake up one morning to find`, contextualIntro(V.PC, S.HeadGirl, "DOM"), `and`, contextualIntro(S.HeadGirl, S.Concubine, "DOM"), `waiting next to your bed. It's immediately obvious that they both have a minor item of business for you, since nothing was urgent enough to wake you early, and they evidently both came in to catch you at your normal hour of rising. They're kneeling side by side next to the`);
+		r.push(`You wake up one morning to find`, contextualIntro(V.PC, S.HeadGirl, true), `and`, contextualIntro(S.HeadGirl, S.Concubine, true), `waiting next to your bed. It's immediately obvious that they both have a minor item of business for you, since nothing was urgent enough to wake you early, and they evidently both came in to catch you at your normal hour of rising. They're kneeling side by side next to the`);
 		if (S.HeadGirl.boobs >= 10000 && S.Concubine.boobs >= 10000) {
 			r.push(`bed (a position that smashes their massive breasts together on one side),`);
 		} else if (S.HeadGirl.belly >= 45000 && S.Concubine.belly >= 45000) {
diff --git a/src/events/PETS/petsAggressiveWardeness.js b/src/events/PETS/petsAggressiveWardeness.js
index 836ec65f4335737f860ea20ac39bef5448540bac..fd7b68960cac3a282011730b9ab07a6febd6b3a2 100644
--- a/src/events/PETS/petsAggressiveWardeness.js
+++ b/src/events/PETS/petsAggressiveWardeness.js
@@ -28,7 +28,7 @@ App.Events.petsAggressiveWardeness = class petsAggressiveWardeness extends App.E
 			`As you pass the entrance to the hall of cells where`,
 			App.UI.DOM.slaveDescriptionDialog(S.Wardeness),
 			`breaks bitches late one night, you hear some muffled cursing, followed by moans. Curious, you lean into the one cell with an open door and are treated to the sight of ${S.Wardeness.slaveName} holding`,
-			App.UI.DOM.combineNodes(contextualIntro(S.Wardeness, subSlave, "DOM"), `'s head`),
+			App.UI.DOM.combineNodes(contextualIntro(S.Wardeness, subSlave, true), `'s head`),
 			`${hasBothLegs(S.Wardeness) ? `between ${his} legs` : `at ${his} groin`}, receiving what is very obviously non-consensual oral sex. ${S.Wardeness.slaveName} is clearly enjoying ${himself}, but gathers ${himself} together and greets you properly, without stopping.`
 		]);
 
diff --git a/src/events/PETS/petsComfortingAttendant.js b/src/events/PETS/petsComfortingAttendant.js
index aa1a0fdb47c3a9a0196a6241dbd203290e92f181..af00abf018d610a9c1d352ce6e546b280fdf7ff7 100644
--- a/src/events/PETS/petsComfortingAttendant.js
+++ b/src/events/PETS/petsComfortingAttendant.js
@@ -32,9 +32,9 @@ App.Events.petsComfortingAttendant = class petsComfortingAttendant extends App.E
 		}
 		r.push(
 			`company is always nice even if you aren't actively using the spa's resting inhabitants. The steam in the warm pool room is turned up very high, and you can hardly see. As you lower yourself into the warm water, you see`,
-			contextualIntro(V.PC, S.Attendant, "DOM"),
+			contextualIntro(V.PC, S.Attendant, true),
 			`across from you, sitting in the water against the pool wall. ${He}'s holding`,
-			contextualIntro(S.Attendant, subSlave, "DOM"),
+			contextualIntro(S.Attendant, subSlave, true),
 			`in ${his} arms, rubbing a comforting hand up and down ${his2} back and murmuring into ${his2} ear. ${subSlave.slaveName} has ${his2} head`);
 		if (S.Attendant.boobs > 2000) {
 			r.push(`almost hidden between ${S.Attendant.slaveName}'s massive tits,`);
diff --git a/src/events/RE/reAnalPunishment.js b/src/events/RE/reAnalPunishment.js
index badd6cd97bde075f9b864e39bb1ab4e76ba5ff11..2e4050bb76fb6285e4c77de527b31d54c0fff4b3 100644
--- a/src/events/RE/reAnalPunishment.js
+++ b/src/events/RE/reAnalPunishment.js
@@ -42,7 +42,7 @@ App.Events.REAnalPunishment = class REAnalPunishment extends App.Events.BaseEven
 		r.push(
 			`As you're making the rounds through your penthouse, you hear ${S.HeadGirl.slaveName} speaking in the tones ${he2} uses to castigate misbehaving slaves in the next room. When you appear in the doorway, you have little chance to survey the situation before`,
 			App.UI.DOM.combineNodes(
-				contextualIntro(S.HeadGirl, slave, "DOM"),
+				contextualIntro(S.HeadGirl, slave, true),
 				`, apparently the miscreant, flings ${himself} at your feet. ${He} clings to one of your legs convulsively, choking on tears as ${he} stares up at you and tries to muster an explanation. After two false starts, ${he} manages to start begging.`
 			),
 			Spoken(slave, `"Please, ${Master},"`),
diff --git a/src/events/RE/reArcologyInspection.js b/src/events/RE/reArcologyInspection.js
index 8254c119c2e7c639bf7ae77ea6ad33c207f23335..bf6411922a9286e0d887125d14f296f77e39be88 100644
--- a/src/events/RE/reArcologyInspection.js
+++ b/src/events/RE/reArcologyInspection.js
@@ -32,7 +32,7 @@ App.Events.REArcologyInspection = class REArcologyInspection extends App.Events.
 		let t = [];
 		t.push(`Although your primary day-to-day responsibility is to ${home.name}, you are careful not to completely ignore your other interests in the Free City. This week you've decided to pay a surprise visit to ${arcology.name}, which is being governed in your stead by`);
 		if (agent) {
-			t.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, agent, "DOM"), "."));
+			t.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, agent, true), "."));
 		} else {
 			t.push("a group of trustees you've appointed.");
 		}
@@ -48,7 +48,7 @@ App.Events.REArcologyInspection = class REArcologyInspection extends App.Events.
 		}
 		if (BG) {
 			const {hisBG} = getPronouns(BG).appendSuffix("BG");
-			t.push(`As is ${hisBG} habit and duty,`, contextualIntro(V.PC, BG, "DOM"), `accompanies you wherever you go, armed to the teeth.`);
+			t.push(`As is ${hisBG} habit and duty,`, contextualIntro(V.PC, BG, true), `accompanies you wherever you go, armed to the teeth.`);
 		} else {
 			t.push(`You feel a bit exposed, so you ask ${V.assistant.name} to loan you a couple of security drones for protection, and make a note that you should probably assign a devoted slave to Bodyguard duty.`);
 		}
diff --git a/src/events/RE/reHGReplacement.js b/src/events/RE/reHGReplacement.js
index 72504dc341958a072132610cff3401c91bfca8a0..36206079b79fab8df718a78546e51e584571ef31 100644
--- a/src/events/RE/reHGReplacement.js
+++ b/src/events/RE/reHGReplacement.js
@@ -54,7 +54,7 @@ App.Events.REHGReplacement = class REHGReplacement extends App.Events.BaseEvent
 		}
 		r.push(
 			`During one of ${his2} visits,`,
-			contextualIntro(S.HeadGirl, slave, "DOM"),
+			contextualIntro(S.HeadGirl, slave, true),
 			`happens to come in for ${his} scheduled inspection. ${He} perches politely on the couch, waiting ${his} turn like a good ${girl}. ${His} ${App.Desc.eyesColor(slave)} are watchful, however, and ${he} seems to be paying very close attention to your conversation with your Head Girl.`
 		);
 
diff --git a/src/events/RE/reRebels.js b/src/events/RE/reRebels.js
index d1eae36a7760ab065bd2e9ef5446df696853096e..e2f503e620aba6845a4c10d3b73e4b0dc1a9e9c1 100644
--- a/src/events/RE/reRebels.js
+++ b/src/events/RE/reRebels.js
@@ -42,7 +42,7 @@ App.Events.RERebels = class RERebels extends App.Events.BaseEvent {
 			`You have a rebel problem.`,
 			App.UI.DOM.slaveDescriptionDialog(thingOne),
 			`and`,
-			contextualIntro(thingOne, thingTwo, "DOM"),
+			contextualIntro(thingOne, thingTwo, true),
 			`are both unbroken, and they seem to draw strength from each other. They're discreet about it, but the arcology's always-vigilant systems occasionally catch them nodding to one another after one of them is punished, or giving each other quiet words of encouragement when they think no one is listening. This is extremely dangerous and should be addressed promptly.`
 		);
 
diff --git a/src/events/RE/reShowerPunishment.js b/src/events/RE/reShowerPunishment.js
index 67038a7136cfe2ec55f85d18428d29cb9920f4ad..6f3bc05fe77eaa77160450dd4f37ddbf826a5920 100644
--- a/src/events/RE/reShowerPunishment.js
+++ b/src/events/RE/reShowerPunishment.js
@@ -51,7 +51,7 @@ App.Events.REShowerPunishment = class REShowerPunishment extends App.Events.Base
 			`${slave.skin} form moving busily around a ${S.HeadGirl.skin} figure, which is standing confidently in the middle of the warm, moist space. As you draw nearer, you identify the stationary slave as your Head Girl,`,
 			App.UI.DOM.combineNodes(App.UI.DOM.slaveDescriptionDialog(S.HeadGirl), "."),
 			`${His2} attendant is`,
-			App.UI.DOM.combineNodes(contextualIntro(S.HeadGirl, slave, "DOM"), `,`),
+			App.UI.DOM.combineNodes(contextualIntro(S.HeadGirl, slave, true), `,`),
 			`and ${he}'s washing ${his} superior with a big sponge.`,
 		);
 
diff --git a/src/events/RE/reSiblingPlease.js b/src/events/RE/reSiblingPlease.js
index d36866ca88d3e5749149a9f29b94f4dc9e513b54..c7434d2fb4160a1a22b87e304d1c8686ed6eff12 100644
--- a/src/events/RE/reSiblingPlease.js
+++ b/src/events/RE/reSiblingPlease.js
@@ -46,12 +46,12 @@ App.Events.RESiblingPlease = class RESiblingPlease extends App.Events.BaseEvent
 
 		const t = new SpacedTextAccumulator(node);
 		t.push(`After you complete your weekly inspection of`);
-		t.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, dau, "DOM"), `, your instincts tell you that the ${SlaveTitle(dau)} has something more on ${his} mind.`));
+		t.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, dau, true), `, your instincts tell you that the ${SlaveTitle(dau)} has something more on ${his} mind.`));
 		t.push(`You take a moment to look at ${him}, ${canStand(dau) ? "standing" : "sitting"} there in front of your desk. ${He}'s devoted to you, willing to please you for the sake of pleasing you, rather than to avoid punishment or to make ${his} own life easier, and ${he} trusts you implicitly. With that in mind, you ask what's bothering ${him}.`);
 		t.toParagraph();
 
 		t.push(Spoken(dau, `"I...I was thinking about family, and mom. Can...can I have a little sister, ${Master}? We could do all sorts of things together!"`));
-		t.push(`${He} winks seductively at you, and suddenly you're thinking about all the fun things you could do with them. And with a bit of patience it's definitely workable;`, contextualIntro(dau, mom, "DOM"), `could bear ${mom.counter.births > 0 ? `another` : `a`} child for you, without a doubt.`);
+		t.push(`${He} winks seductively at you, and suddenly you're thinking about all the fun things you could do with them. And with a bit of patience it's definitely workable;`, contextualIntro(dau, mom, true), `could bear ${mom.counter.births > 0 ? `another` : `a`} child for you, without a doubt.`);
 		t.toParagraph();
 
 		App.Events.addResponses(node, [
diff --git a/src/events/RECI/butthole.js b/src/events/RECI/butthole.js
index 7403dcfff46cdb0ae8c960ebe73c8a4cb902481b..7fffa0fb96ac8fedc8089f40a3dae0d72f4119ac 100644
--- a/src/events/RECI/butthole.js
+++ b/src/events/RECI/butthole.js
@@ -43,7 +43,7 @@ App.Events.RECIButthole = class RECIButthole extends App.Events.BaseEvent {
 
 		let t = [];
 		t.push(`The slave bathrooms are designed to completely eliminate privacy. There are few partitions, and those are glass. Your better-behaved slaves have all long since lost any hesitation about performing their ablutions nude. As you pass through the area, you notice`);
-		t.push(contextualIntro(V.PC, eventSlave, "DOM"));
+		t.push(contextualIntro(V.PC, eventSlave, true));
 		t.push(`checking out ${his} own anus in the bathroom mirror.`);
 		App.Events.addParagraph(node, t);
 
diff --git a/src/events/RECI/futa.js b/src/events/RECI/futa.js
index bf70beafdb8b07e172951742efcd8726d62d1210..67a6f82cfdc21175991c343a0fae2d9af5366697 100644
--- a/src/events/RECI/futa.js
+++ b/src/events/RECI/futa.js
@@ -37,7 +37,7 @@ App.Events.RECIFuta = class RECIFuta extends App.Events.BaseEvent {
 
 		let t = [];
 		t.push(`You're just finishing up`);
-		t.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, "DOM"), "'s"));
+		t.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, true), "'s"));
 		t.push(`weekly inspection. The`);
 		if (eventSlave.face >= -10) {
 			t.push(`pretty`);
diff --git a/src/events/REFI/reBoobslut.js b/src/events/REFI/reBoobslut.js
index 4d7c2029a2fe91a871e12514c4379c9fdb70dbd8..6d336725804ed9cf8ede6616fdd343915ff5a910 100644
--- a/src/events/REFI/reBoobslut.js
+++ b/src/events/REFI/reBoobslut.js
@@ -39,7 +39,7 @@ App.Events.REFIBoobslut = class REFIBoobslut extends App.Events.BaseEvent {
 		let t = [];
 
 		t.push(`On lunch duty today is`);
-		t.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, subSlave, "DOM"), "."));
+		t.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, subSlave, true), "."));
 		t.push(`That means that as you eat your working lunch, ${he2} sits on the edge of your desk right next to you, so that`);
 		if (subSlave.belly >= 100000) {
 			t.push(`a nipple is`);
@@ -67,7 +67,7 @@ App.Events.REFIBoobslut = class REFIBoobslut extends App.Events.BaseEvent {
 			}
 		}
 		t.push(`Though you never touch anything but ${his2} nipples, ${he2} climaxes twice. After you finish and ${he2} leaves, you notice`);
-		t.push(contextualIntro(V.PC, eventSlave, "DOM"), `at the door to your office. You call ${him} in.`);
+		t.push(contextualIntro(V.PC, eventSlave, true), `at the door to your office. You call ${him} in.`);
 		App.Events.addParagraph(node, t);
 		t = [];
 
diff --git a/src/events/REFI/reButtslut.js b/src/events/REFI/reButtslut.js
index 515bdd3d2000a988673e2b00a476331f9beee706..46d8464228efd82aab13dfe1a0e90fa86f36d7e4 100644
--- a/src/events/REFI/reButtslut.js
+++ b/src/events/REFI/reButtslut.js
@@ -36,9 +36,9 @@ App.Events.REFIButtslut = class REFIButtslut extends App.Events.BaseEvent {
 
 		let t = [];
 		t.push(`In the middle of the afternoon, you take a break from work to fuck`);
-		t.push(contextualIntro(V.PC, subSlave, "DOM"));
+		t.push(contextualIntro(V.PC, subSlave, true));
 		t.push(`in your office. ${subSlave.slaveName} is such a complete buttslut that ${he2}'s enjoying ${himself2} to an almost indecent degree: moaning, begging, or just smiling idiotically with ${his2} mouth open and ${his2} tongue lolling. After you finish and ${he2} leaves, you notice`);
-		t.push(contextualIntro(V.PC, eventSlave, "DOM"));
+		t.push(contextualIntro(V.PC, eventSlave, true));
 		t.push(`at the door to your office. You call ${him} in.`);
 		App.Events.addParagraph(node, t);
 		t = [];
diff --git a/src/events/REFI/reCumslut.js b/src/events/REFI/reCumslut.js
index bcae892b0e7158dba78743e5c017da8a21216a5a..9ac950da2666fb66c1ea032a9e0d2ef864e42eac 100644
--- a/src/events/REFI/reCumslut.js
+++ b/src/events/REFI/reCumslut.js
@@ -30,14 +30,14 @@ App.Events.REFICumslut = class REFICumslut extends App.Events.BaseEvent {
 
 		if (V.PC.dick > 0) {
 			t.push(`You wake up to the sensation of`);
-			t.push(contextualIntro(V.PC, subSlave, "DOM"));
+			t.push(contextualIntro(V.PC, subSlave, true));
 			t.push(`eagerly sucking your dick. ${He2}'s industriously pumping ${his2} mouth up and down on your member. In truth, ${subSlave.slaveName} doesn't give the perfect blowjob: ${he2} loves cum so much that ${he2} mostly enjoys oral sex in an anticipatory way, and usually works to make the recipient cum as soon as possible so as to get ${his2} favorite treat into ${his2} mouth quicker. Still, ${his2} enthusiasm is nice and ${he2} does have permission to wake you at your usual time in this way. As you get up after finishing, you notice`);
-			t.push(contextualIntro(subSlave, eventSlave, "DOM"));
+			t.push(contextualIntro(subSlave, eventSlave, true));
 			t.push(`at the door to your bedroom. You call ${him} in.`);
 			seX(subSlave, "oral", V.PC, "penetrative");
 		} else {
 			t.push(`You come across ${subSlave.slaveName} in the middle of what appears to be an impromptu blowbang, one that seems to be drawing to a close. One by one, the citizens pull out of ${his2} wide-open mouth and splash cum into it. The bliss on ${his2} face is obvious even from where you are standing, and as you watch the scene unfolding before you, you notice`);
-			t.push(contextualIntro(subSlave, eventSlave, "DOM"));
+			t.push(contextualIntro(subSlave, eventSlave, true));
 			t.push(`at the door of the room. You call ${him} in.`);
 			actX(subSlave, "oral", 4);
 		}
diff --git a/src/events/REFI/reDominant.js b/src/events/REFI/reDominant.js
index 89282a2145e2a59f1378e838839a53af922b7d29..78c5b09b06a89f5836b4537c81cfba941fd21953 100644
--- a/src/events/REFI/reDominant.js
+++ b/src/events/REFI/reDominant.js
@@ -54,7 +54,7 @@ App.Events.REFIDominant = class REFIDominant extends App.Events.BaseEvent {
 			}
 		}
 		t.push(`The slave${girlU} had been disobedient, and ${hisU} punishment was to let`);
-		t.push(contextualIntro(V.PC, subSlave, "DOM"));
+		t.push(contextualIntro(V.PC, subSlave, true));
 		t.push(`dominate ${himU}. The truth is this is also ${his2} reward; ${he2} is such a dominant that ${he2}'s prone to lashing out at your other slaves if ${he2} isn't given a proper outlet. Sure enough, ${his2} moans begin to increase in pitch and frequency, reaching a crescendo as ${he2} comes to an orgasm. Once you feel the poor ${girlU} beneath ${him2} has had enough, you give ${subSlave.slaveName} the order to dismount. ${He2}`);
 		if (canMove(subSlave)) {
 			t.push(`leaves`);
@@ -62,7 +62,7 @@ App.Events.REFIDominant = class REFIDominant extends App.Events.BaseEvent {
 			t.push(`is taken from`);
 		}
 		t.push(`your office with a smile on ${his2} face, passing`);
-		t.push(App.UI.DOM.combineNodes(contextualIntro(subSlave, eventSlave, "DOM"), ", who is"));
+		t.push(App.UI.DOM.combineNodes(contextualIntro(subSlave, eventSlave, true), ", who is"));
 		if (isAmputee(eventSlave)) {
 			t.push(`propped limblessly nearby. ${He} has`);
 		} else if (!hasAnyLegs(eventSlave)) {
diff --git a/src/events/REFI/reHumiliation.js b/src/events/REFI/reHumiliation.js
index 1e764b04720f1433f4d98ce99e8adda0b2181afe..d75ed61f59c965c1a078209f3f3d4f2d365a45b1 100644
--- a/src/events/REFI/reHumiliation.js
+++ b/src/events/REFI/reHumiliation.js
@@ -39,9 +39,9 @@ App.Events.REFIHumiliation = class REFIHumiliation extends App.Events.BaseEvent
 
 		let t = [];
 		t.push(`You have`);
-		t.push(contextualIntro(V.PC, subSlave, "DOM"));
+		t.push(contextualIntro(V.PC, subSlave, true));
 		t.push(`pinned up against a railing on a balcony that overlooks a public atrium. Passersby below cannot see you, but they can certainly see ${subSlave.slaveName}'s upper body as ${he2} takes your dick. ${He2}'s blushing furiously with the sex and with ${his2} trademark mixed arousal and embarrassment at having an audience. ${He2} makes a show of trying to disguise the fact that ${he2}'s getting railed, but it's obvious. When you finish, you pull ${him2} off the railing so ${he2} can clean up.`);
-		t.push(contextualIntro(subSlave, eventSlave, "DOM"));
+		t.push(contextualIntro(subSlave, eventSlave, true));
 		if (canSee(eventSlave)) {
 			t.push(`saw`);
 		} else {
diff --git a/src/events/REFI/reMasochist.js b/src/events/REFI/reMasochist.js
index 1bef1dbd92f530d941d34c0f83340e7c475c0fb2..84058db9d35520607e52ad2e2ffa9dc79b647bdb 100644
--- a/src/events/REFI/reMasochist.js
+++ b/src/events/REFI/reMasochist.js
@@ -41,7 +41,7 @@ App.Events.REFIMasochist = class REFIMasochist extends App.Events.BaseEvent {
 		let t = [];
 		if (subSlave.belly >= 1500) {
 			t.push(`You have`);
-			t.push(contextualIntro(V.PC, subSlave, "DOM"));
+			t.push(contextualIntro(V.PC, subSlave, true));
 			t.push(`lying down on your desk, and are seeing to your own amusement and ${his2} masochistic streak at once. ${He2} has ${his2} body flat on the surface, but is unrestrained, and has been told that ${he2} must not rise off it at all, nor tilt ${his2} bulk to either side. You then tell ${his2} to count strokes and begin to flog ${his2} ${subBelly} belly with a leathern`);
 			if (subSlave.pregKnown === 1) {
 				t.push(`instrument, taking care not to cause ${his2} pregnancy any lasting harm.`);
@@ -69,7 +69,7 @@ App.Events.REFIMasochist = class REFIMasochist extends App.Events.BaseEvent {
 			t.push(`Your grip around ${his2} neck only adds to ${his2} thrill.`);
 		} else {
 			t.push(`You have`);
-			t.push(contextualIntro(V.PC, subSlave, "DOM"));
+			t.push(contextualIntro(V.PC, subSlave, true));
 			t.push(`bent over your desk, and are seeing to your own amusement and ${his2} masochistic streak at once. ${He2} has ${his2} body flat on the surface, but is unrestrained, and has been told that ${he2} must not rise off it at all. You then tell ${him2} to count strokes and begin to flog ${his2}`);
 			if (subSlave.butt <= 0) {
 				t.push(`flat`);
@@ -136,7 +136,7 @@ App.Events.REFIMasochist = class REFIMasochist extends App.Events.BaseEvent {
 			t.push(`and short of breath`);
 		}
 		t.push(`but with a faraway look of release, you notice`);
-		t.push(contextualIntro(V.PC, eventSlave, "DOM"));
+		t.push(contextualIntro(V.PC, eventSlave, true));
 		t.push(`at the door to your office. You call ${him} in.`);
 
 		App.Events.addParagraph(node, t);
diff --git a/src/events/REFI/rePregnancy.js b/src/events/REFI/rePregnancy.js
index 978ae5733c0a20034145ab9b017d1e62996ae62a..751d9691c2cd7136affa6ef8f0b97b7d4210fb53 100644
--- a/src/events/REFI/rePregnancy.js
+++ b/src/events/REFI/rePregnancy.js
@@ -28,7 +28,7 @@ App.Events.REFIPregnancy = class REFIPregnancy extends App.Events.BaseEvent {
 
 		let t = [];
 		t.push(`Since ${he2}'s quite pregnant,`);
-		t.push(contextualIntro(V.PC, subSlave, "DOM"));
+		t.push(contextualIntro(V.PC, subSlave, true));
 		t.push(`gets inspected more regularly than your other slaves. ${His2} pregnancy is progressing acceptably, but having ${his2} belly inspected gets ${him2}`);
 		if (subSlave.pregSource === -1) {
 			t.push(`extremely eager to feel more of ${his2} ${getWrittenTitle(subSlave)}'s seed in ${his2} fertile`);
@@ -155,7 +155,7 @@ App.Events.REFIPregnancy = class REFIPregnancy extends App.Events.BaseEvent {
 			}
 		}
 		t.push(`After you both finish and ${he2} leaves, smiling contentedly at you, you notice`);
-		t.push(contextualIntro(subSlave, eventSlave, "DOM"));
+		t.push(contextualIntro(subSlave, eventSlave, true));
 		t.push(`at the door to your office. You call ${him} in.`);
 		App.Events.addParagraph(node, t);
 		t = [];
diff --git a/src/events/REFI/reSadist.js b/src/events/REFI/reSadist.js
index c97192b612867f5db11e2ddc72e700d2884efe8f..c16dfa380a4909928ca97d7b5da83720f775a02e 100644
--- a/src/events/REFI/reSadist.js
+++ b/src/events/REFI/reSadist.js
@@ -29,7 +29,7 @@ App.Events.REFISadist = class REFISadist extends App.Events.BaseEvent {
 
 		let t = [];
 		t.push(`You are in your office, watching as`);
-		t.push(contextualIntro(V.PC, subSlave, "DOM"));
+		t.push(contextualIntro(V.PC, subSlave, true));
 		t.push(`takes a riding crop to another slave. This has become an almost daily occurrence, as ${he2} is liable to strike out against your other slaves out-of-turn if ${he2} isn't allowed to get a chance to satisfy ${his2} sadistic streak. The slave`);
 		if (hasBothLegs(subSlave)) {
 			t.push(`at ${his2} feet`);
@@ -43,7 +43,7 @@ App.Events.REFISadist = class REFISadist extends App.Events.BaseEvent {
 			t.push(`the strap-on ${he2} is wearing`);
 		}
 		t.push(`a few rubs before unceremoniously stuffing it into ${his2} victim's asshole. You can't hide your smile this time as the poor ${girlU} gives a loud shriek, and a small noise at the doorway catches your attention. To your surprise, you see`);
-		t.push(contextualIntro(V.PC, eventSlave, "DOM"));
+		t.push(contextualIntro(V.PC, eventSlave, true));
 		t.push(`at the door to your office. You call ${him} in.`);
 
 		App.Events.addParagraph(node, t);
diff --git a/src/events/REFI/reSubmissive.js b/src/events/REFI/reSubmissive.js
index c029e97cab299e6baaec0ff23029a09ed506d4f6..7180be6cd1aa7a65c90481d1593da9404a9e8b32 100644
--- a/src/events/REFI/reSubmissive.js
+++ b/src/events/REFI/reSubmissive.js
@@ -37,7 +37,7 @@ App.Events.REFISubmissive = class REFISubmissive extends App.Events.BaseEvent {
 		}
 
 		let t = [];
-		t.push(`You have`, contextualIntro(V.PC, subSlave, "DOM"), `lying on the edge of your desk with ${his2}`);
+		t.push(`You have`, contextualIntro(V.PC, subSlave, true), `lying on the edge of your desk with ${his2}`);
 		if (subSlave.belly >= 1500) {
 			t.push(`bloated`);
 		}
@@ -54,7 +54,7 @@ App.Events.REFISubmissive = class REFISubmissive extends App.Events.BaseEvent {
 			t.push(`is taken from`);
 		}
 		t.push(`your office with a serene look on ${his2} face, passing`);
-		t.push(App.UI.DOM.combineNodes(contextualIntro(subSlave, eventSlave, "DOM"), ", who is"));
+		t.push(App.UI.DOM.combineNodes(contextualIntro(subSlave, eventSlave, true), ", who is"));
 		if (isAmputee(eventSlave)) {
 			t.push(`propped limblessly nearby. ${He} has`);
 		} else if (!hasAnyLegs(eventSlave)) {
diff --git a/src/events/RESS/PAFlirting.js b/src/events/RESS/PAFlirting.js
index ae84a2113a184201776158e6eeb34360a0bb2439..9b4c6dcf3a2d3138af40385b94d4d345491e831f 100644
--- a/src/events/RESS/PAFlirting.js
+++ b/src/events/RESS/PAFlirting.js
@@ -41,7 +41,7 @@ App.Events.RESSPAFlirting = class RESSPAFlirting extends App.Events.BaseEvent {
 
 		let r = [];
 		r.push(`Partway through`);
-		r.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, "DOM"), "'s"));
+		r.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, true), "'s"));
 		r.push(`weekly inspection, you have to leave for a moment to deal with a minor matter. Inspecting such a devoted slave is a pleasure, but you tear yourself away. Such sacrifices must be made.`);
 		App.Events.addParagraph(node, r);
 
diff --git a/src/events/RESS/ageDifferenceOldPC.js b/src/events/RESS/ageDifferenceOldPC.js
index d6fab598f449a8f944c90ef9b9d0c5ce4bf47f0e..d94966f269079f4193e5a6a4301327a1eff515dd 100644
--- a/src/events/RESS/ageDifferenceOldPC.js
+++ b/src/events/RESS/ageDifferenceOldPC.js
@@ -33,7 +33,7 @@ App.Events.RESSAgeDifferenceOldPC = class RESSAgeDifferenceOldPC extends App.Eve
 
 		let r = [];
 		r.push(`As another long week draws to a close,`);
-		r.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, "DOM"), ","));
+		r.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, true), ","));
 		r.push(`happens to`);
 		if (eventSlave.belly >= 10000) {
 			r.push("waddle");
diff --git a/src/events/RESS/ageDifferenceYoungPC.js b/src/events/RESS/ageDifferenceYoungPC.js
index b94ee3f0a44ddc11532b73085d5a0bb4ff72d3e2..f42dbb1c81e5c3ba41bf87afd204f72c74e975a7 100644
--- a/src/events/RESS/ageDifferenceYoungPC.js
+++ b/src/events/RESS/ageDifferenceYoungPC.js
@@ -34,7 +34,7 @@ App.Events.RESSAgeDifferenceYoungPC = class RESSAgeDifferenceYoungPC extends App
 
 		let r = [];
 		r.push(`As another long week draws to a close,`);
-		r.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, "DOM"), ","));
+		r.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, true), ","));
 		r.push(`happens to`);
 		if (eventSlave.belly >= 10000) {
 			r.push("waddle");
diff --git a/src/events/RESS/ampResting.js b/src/events/RESS/ampResting.js
index 0741760012aa27d5cfbff3bde6eee9b259be8a73..7ec9071e193a0db28c3d5d10ed93e70537a982e2 100644
--- a/src/events/RESS/ampResting.js
+++ b/src/events/RESS/ampResting.js
@@ -25,7 +25,7 @@ App.Events.RESSAmpResting = class RESSAmpResting extends App.Events.BaseEvent {
 
 		let r = [];
 		r.push(`You're working at your desk late at night when the arcology's systems discreetly highlight significant movement in the slave quarters.`);
-		r.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, "DOM"), "'s"));
+		r.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, true), "'s"));
 		r.push(`limbless torso is in bed, asleep but struggling in discomfort. Without arms or legs, it seems the sheet has become wrapped around ${him}. ${He}'s dreaming of something sexual;`);
 		if (eventSlave.chastityPenis === 1) {
 			r.push(`${his} cock is caged, but precum is`);
diff --git a/src/events/RESS/arcadeSadist.js b/src/events/RESS/arcadeSadist.js
index 7967d10bfa9d4baf682e1625e528623175c7cd24..e38d02f3b7da36540c0ada2e68584fcd39073bca 100644
--- a/src/events/RESS/arcadeSadist.js
+++ b/src/events/RESS/arcadeSadist.js
@@ -37,7 +37,7 @@ App.Events.RESSArcadeSadist = class RESSArcadeSadist extends App.Events.BaseEven
 
 		let r = [];
 		r.push(`You happen to come across`);
-		r.push(contextualIntro(V.PC, eventSlave, "DOM"));
+		r.push(contextualIntro(V.PC, eventSlave, true));
 		r.push(`during one of ${his} rest periods. ${He}'s lying on a couch in the slave areas,`);
 		if (canSee(eventSlave)) {
 			r.push(`staring at the ceiling above ${him}`);
diff --git a/src/events/RESS/bedSnuggle.js b/src/events/RESS/bedSnuggle.js
index e5c6419ac7f58a756588e54ae0cd331e8f553e36..fd9cda0e9e62d7ddd7c2271440fde60b26717a1e 100644
--- a/src/events/RESS/bedSnuggle.js
+++ b/src/events/RESS/bedSnuggle.js
@@ -97,7 +97,7 @@ App.Events.RESSBedSnuggle = class RESSBedSnuggle extends App.Events.BaseEvent {
 		} else {
 			r.push("chest.");
 		}
-		r.push(contextualIntro(V.PC, eventSlave, "DOM", false, true));
+		r.push(contextualIntro(V.PC, eventSlave, true, false, true));
 		r.push(`has snuggled up against you in ${his} sleep. ${He}'s nude, and so are you; everyone sleeps naked in your penthouse. The sheet is down at your hips, leaving your upper bodies bare.`);
 		if (!hasAnyArms(eventSlave)) {
 			r.push(`${He}'s wormed ${his}`);
diff --git a/src/events/RESS/birthday.js b/src/events/RESS/birthday.js
index 1f3d770e57adcaafdddf41747dd063b0bea07cf0..85ae5c0ec214d5f6807d1931e59ed423452a528a 100644
--- a/src/events/RESS/birthday.js
+++ b/src/events/RESS/birthday.js
@@ -39,7 +39,7 @@ App.Events.RESSBirthday = class RESSBirthday extends App.Events.BaseEvent {
 		let r = [];
 		r.push(
 			`You come across`,
-			contextualIntro(V.PC, eventSlave, "DOM"),
+			contextualIntro(V.PC, eventSlave, true),
 			`in the kitchen. ${He} has a normal slave meal on a plate in front of ${him}, but also has a pack of hot wax candles from your sex gear. Oddly, ${he} has a candle upright in the food and is trying to light it. You ask what ${he}'s doing, and ${he} explains meekly,`,
 			Spoken(eventSlave, `"I don't know, ${Master}. I've been a slave so long. I just`)
 		);
diff --git a/src/events/RESS/bondageGear.js b/src/events/RESS/bondageGear.js
index c05ff65a2df5851f003bac2b493a11ee66a250ca..1bbdeecb24538034ebc1194bd19fd835f1b2229a 100644
--- a/src/events/RESS/bondageGear.js
+++ b/src/events/RESS/bondageGear.js
@@ -26,7 +26,7 @@ App.Events.RESSBondageGear = class RESSBondageGear extends App.Events.BaseEvent
 
 		let t = [];
 		t.push(`One day, you catch sight of`);
-		t.push(contextualIntro(V.PC, eventSlave, "DOM"));
+		t.push(contextualIntro(V.PC, eventSlave, true));
 		if (!canWalk(eventSlave)) {
 			t.push(`crawling`);
 		} else if (shoeHeelCategory(eventSlave) > 1) {
diff --git a/src/events/RESS/breedingBull.js b/src/events/RESS/breedingBull.js
index 6fd404edb1e6a36b72e906b412656e69fa1071c9..f59ece210a152fffdcd1024ae598e87e74c8aa67 100644
--- a/src/events/RESS/breedingBull.js
+++ b/src/events/RESS/breedingBull.js
@@ -44,7 +44,7 @@ App.Events.RESSBreedingBull = class RESSBreedingBull extends App.Events.BaseEven
 
 		let r = [];
 		r.push(`You are awakened from a sound sleep by a pair of strong hands pinning your shoulders. Struggling to get your bearings, you come face to face with the drooling`);
-		r.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, "DOM"), "."));
+		r.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, true), "."));
 		r.push(`You had nothing planned this morning, so you've been allowed to sleep in undisturbed, and try as you might, you cannot slip your arms from under ${his} weight. ${He} hastily shifts ${his} weight around, almost giving you the chance to break free, but you freeze when something big, heavy and wet slaps against your stomach.`);
 		App.Events.addParagraph(node, r);
 		App.Events.addParagraph(node, [`${He} is fully erect and dripping precum: ${he} is going to breed you!`]);
diff --git a/src/events/RESS/comfortableSeat.js b/src/events/RESS/comfortableSeat.js
index 4f75a2eae23d09b07b381e45b4331c137b7d57d2..3a1abba6867cdef0d3d0f39e4f6349b5b4df7864 100644
--- a/src/events/RESS/comfortableSeat.js
+++ b/src/events/RESS/comfortableSeat.js
@@ -54,7 +54,7 @@ App.Events.RESSComfortableSeat = class RESSComfortableSeat extends App.Events.Ba
 		t = [];
 
 		t.push(`One of them slows as ${he} goes by, however. Looking up, you see that it's`);
-		t.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, "DOM"), "."));
+		t.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, true), "."));
 		if (canTalk(eventSlave)) {
 			if (eventSlave.belly >= 1500) {
 				t.push(`"Hi ${Master}," ${he} ${say}s flirtatiously rubbing a hand across ${his} ${belly} ${eventSlave.bellyPreg > 0 ? "pregnancy" : "belly"}.`);
diff --git a/src/events/RESS/coolerLockin.js b/src/events/RESS/coolerLockin.js
index 81441e275cefe968ec2951c976e7757458e8e9f5..a4b08cc2a87c06f697289ba476371ec318e074fe 100644
--- a/src/events/RESS/coolerLockin.js
+++ b/src/events/RESS/coolerLockin.js
@@ -38,7 +38,7 @@ App.Events.RESSCoolerLockin = class RESSCoolerLockin extends App.Events.BaseEven
 			r.push(`"Baby,"`);
 		}
 		r.push(`${heA} says,"`);
-		r.push(contextualIntro(V.PC, eventSlave, "DOM"));
+		r.push(contextualIntro(V.PC, eventSlave, true));
 		r.push(`can't get out of the refrigerator."`);
 		if (V.assistant.personality <= 0) {
 			r.push(`The personal assistant explains the absurd statement: "${He}'s been assigned to get some items out of the walk-in refrigerator. ${He} accidentally let the door shut behind ${him}, didn't notice, took too long in there, and is now too chilled to figure out the emergency release. I can unlock it remotely, or you can let ${him} out yourself."`);
diff --git a/src/events/RESS/devotedFearfulSlave.js b/src/events/RESS/devotedFearfulSlave.js
index 078f08608b866f5bec8e22f46411bc3607d9ad42..c5f2d4694b020641fdb2afc0f469d641d8807e2e 100644
--- a/src/events/RESS/devotedFearfulSlave.js
+++ b/src/events/RESS/devotedFearfulSlave.js
@@ -43,7 +43,7 @@ App.Events.RESSDevotedFearfulSlave = class RESSDevotedFearfulSlave extends App.E
 			t.push(`tab of`);
 		}
 
-		t.push(`${V.PC.refreshment} brought in to you. This time`, contextualIntro(V.PC, eventSlave, "DOM"), `has been sent to deliver it. ${He} loves you, but fears you simultaneously. Such relationships were not uncommon before the advent of modern slavery, but they are especially prevalent in its wake, as fear has proven a highly effective control method for those slaveowners with the inclination and relative lack of conscience to utilize it as such. You hurriedly put the finishing touches on your work, eager to be done, and then reach for your ${V.PC.refreshment}. ${eventSlave.slaveName} flinches at your sudden movement, taking a few frightened steps back, nearly dropping the serving tray and leaving you grasping at thin air. It was a simple fear response; ${he} didn't realize you were ready for your treat and instinctively thought you were reaching out to strike ${him}. Tears swell up in ${his} eyes as ${he} apologizes profusely.`);
+		t.push(`${V.PC.refreshment} brought in to you. This time`, contextualIntro(V.PC, eventSlave, true), `has been sent to deliver it. ${He} loves you, but fears you simultaneously. Such relationships were not uncommon before the advent of modern slavery, but they are especially prevalent in its wake, as fear has proven a highly effective control method for those slaveowners with the inclination and relative lack of conscience to utilize it as such. You hurriedly put the finishing touches on your work, eager to be done, and then reach for your ${V.PC.refreshment}. ${eventSlave.slaveName} flinches at your sudden movement, taking a few frightened steps back, nearly dropping the serving tray and leaving you grasping at thin air. It was a simple fear response; ${he} didn't realize you were ready for your treat and instinctively thought you were reaching out to strike ${him}. Tears swell up in ${his} eyes as ${he} apologizes profusely.`);
 
 		App.Events.addParagraph(node, t);
 
diff --git a/src/events/RESS/devotedNympho.js b/src/events/RESS/devotedNympho.js
index c5aba1a2a26de6433d3e104c4222ed817f5c5adc..067cad65e4787fb99f4f4459ab4666e8ff090231 100644
--- a/src/events/RESS/devotedNympho.js
+++ b/src/events/RESS/devotedNympho.js
@@ -30,7 +30,7 @@ App.Events.RESSDevotedNympho = class RESSDevotedNympho extends App.Events.BaseEv
 
 		let r = [];
 		r.push(`On first slot of the inspection schedule for the day is`);
-		r.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, "DOM"), "."));
+		r.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, true), "."));
 		r.push(`When ${he} walks clumsily through the door of your office, it's obvious the poor nympho slut hasn't found release since waking up. ${His} incredible sex drive has ${his} arousal at a fever pitch.`);
 		App.Events.addParagraph(node, r);
 
diff --git a/src/events/RESS/forbiddenMasturbation.js b/src/events/RESS/forbiddenMasturbation.js
index 838f23160bf6d7991f46c92d330daf9af3e6bd3e..b3f7125d1ad7789b2ef18ead55c56a4c730d76ba 100644
--- a/src/events/RESS/forbiddenMasturbation.js
+++ b/src/events/RESS/forbiddenMasturbation.js
@@ -36,7 +36,7 @@ App.Events.RESSForbiddenMasturbation = class RESSForbiddenMasturbation extends A
 
 		let r = [];
 		if (V.assistant.personality > 0) {
-			r.push(`There is an alert from ${V.assistant.name}, in ${hisA} deliciously feminine voice: "${properMaster()},`, contextualIntro(V.PC, eventSlave, "DOM"), `is masturbating. Ooh, ${he}'s breaking the rules, ${properMaster()}!" ${HisA} avatar`);
+			r.push(`There is an alert from ${V.assistant.name}, in ${hisA} deliciously feminine voice: "${properMaster()},`, contextualIntro(V.PC, eventSlave, true), `is masturbating. Ooh, ${he}'s breaking the rules, ${properMaster()}!" ${HisA} avatar`);
 			switch (V.assistant.appearance) {
 				case "monstergirl":
 					r.push(`strokes ${hisA} dicks suggestively.`);
@@ -92,7 +92,7 @@ App.Events.RESSForbiddenMasturbation = class RESSForbiddenMasturbation extends A
 					r.push(`spins accusingly.`);
 			}
 		} else {
-			r.push(`There is a gentle alert from ${V.assistant.name}: "${properMaster()},`, contextualIntro(V.PC, eventSlave, "DOM"), `is masturbating in violation of the rules."`);
+			r.push(`There is a gentle alert from ${V.assistant.name}: "${properMaster()},`, contextualIntro(V.PC, eventSlave, true), `is masturbating in violation of the rules."`);
 		}
 		r.push(`A video feed appears.`);
 		if (eventSlave.chastityVagina && eventSlave.chastityPenis === 1) {
diff --git a/src/events/RESS/frighteningDick.js b/src/events/RESS/frighteningDick.js
index 66a10a2c4ff2178de9b8efa7bd3f44d0b939e18f..e305bb65ab556f23327efc3ac5f076133e9ab99d 100644
--- a/src/events/RESS/frighteningDick.js
+++ b/src/events/RESS/frighteningDick.js
@@ -37,7 +37,7 @@ App.Events.RESSFrighteningDick = class RESSFrighteningDick extends App.Events.Ba
 		let t = [];
 
 		t.push("In a fortuitous confluence of circumstances,");
-		t.push(contextualIntro(V.PC, eventSlave, "DOM"));
+		t.push(contextualIntro(V.PC, eventSlave, true));
 		t.push(`happens to be polishing your office one evening. Keeping every surface in the penthouse at a state of perfect shine is one of your servants' endless tasks, and your office is ${his} area of responsibility today. At the key moment, ${he}'s working on an area at waist height, directly next to the door that leads to your suite; and ${he}'s crouching to polish this area most comfortably. ${He} is working diligently, and is paying close attention to what ${he}'s doing. Meanwhile, and for completely unrelated reasons, you have just finished having fun inside said suite. You are naked, and your penis remains fully erect despite your having climaxed only moments before; you are in excellent physical and sexual condition and this happens frequently. You have decided to address a likewise unrelated matter in your office, and walk into it from your suite, naked and erect.`);
 		App.Events.addParagraph(node, t);
 		t = [];
diff --git a/src/events/RESS/hotPC.js b/src/events/RESS/hotPC.js
index 4668f69d94d3f69ca01cc183a037f8a5730a23cf..a362f5998c1d04cc26817c1aa2ab09206e51df94 100644
--- a/src/events/RESS/hotPC.js
+++ b/src/events/RESS/hotPC.js
@@ -46,7 +46,7 @@ App.Events.RESSHotPC = class RESSHotPC extends App.Events.BaseEvent {
 		t = [];
 
 		t.push(`You complete the final rep of your first workout of the day, rack the bar, and jump to your feet to shower, change, and see to your empire. The motion brings your field of view up, and you notice for the first time that`);
-		t.push(contextualIntro(V.PC, eventSlave, "DOM"));
+		t.push(contextualIntro(V.PC, eventSlave, true));
 		t.push(`is frozen in the open doorway, having seen something in the workout room that caught ${his} attention as ${he} passed by. ${His} eyes are fixed on your`);
 		if (PC.belly >= 120000) {
 			t.push(`massive pregnancy with almost painful intensity. You can't really blame ${him}; you're the perfect image of a fertile goddess and your overfilled belly is coated in sweat. Even though you can't work your core any longer, you still take your workouts seriously, something most pregnant women would shy away from. You flush a little at what must ${he} must have thought; with all the grunting and effort, ${he} likely thought you were giving birth.`);
diff --git a/src/events/RESS/imScared.js b/src/events/RESS/imScared.js
index 4c772a8cd14dda1041bce1004dd14a0f30898c42..b4ddb16088203344d7caf0a2df7309d4fc2baccd 100644
--- a/src/events/RESS/imScared.js
+++ b/src/events/RESS/imScared.js
@@ -31,7 +31,7 @@ App.Events.RESSImScared = class RESSImScared extends App.Events.BaseEvent {
 		let t = [];
 
 		t.push(`During ${his} weekly inspection,`);
-		t.push(contextualIntro(V.PC, eventSlave, "DOM"));
+		t.push(contextualIntro(V.PC, eventSlave, true));
 		t.push(`has trouble following the routine orders that position ${him} so you can examine ${his} body. The cause is not difficult to determine: ${he}'s so cripplingly terrified that ${he}'s having difficulty functioning. ${He} seems to be trying to obey you, but ${he}'s so scared that ${his} mind is having trouble translating your simple verbal commands into physical obedience. You ask ${him} what ${he}'s so frightened of. The question stuns ${him}, and ${he} ${canSee(eventSlave) ? "stares at" : "faces"} you in mute horror, looking even more terrified than ${he} has up to this point and completely devoid of any idea how to respond. You order ${him} to respond, and this starts ${him} out of ${his} fugue. ${He} begins to cry, makes two false starts, sobs, and then begins forcing out words.`);
 		App.Events.addParagraph(node, t);
 		t = [];
diff --git a/src/events/RESS/impregnationPlease.js b/src/events/RESS/impregnationPlease.js
index 27ef0f4b2a8c211ad4b85dc3d0a14699d1a551c8..eea0db9b8943a4310538479e000fd89e9e775a21 100644
--- a/src/events/RESS/impregnationPlease.js
+++ b/src/events/RESS/impregnationPlease.js
@@ -38,7 +38,7 @@ App.Events.RESSImpregnationPlease = class RESSImpregnationPlease extends App.Eve
 
 		let r = [];
 		r.push(`Taken by a mood,`);
-		r.push(contextualIntro(V.PC, eventSlave, "DOM"));
+		r.push(contextualIntro(V.PC, eventSlave, true));
 		if (isPregnantAndSuperfetation) {
 			if (eventSlave.belly >= 750000) {
 				r.push(`barely makes into your office before turning and leaning against ${his} ${belly} belly. Once ${he} manages to get comfortable against the strained mass, ${he} wiggles ${his} exposed`);
diff --git a/src/events/RESS/injectionsPlease.js b/src/events/RESS/injectionsPlease.js
index 6ab3ec40e74dc6a26c209155f624df3ff84e5b2f..8d33250b86a259c515e64bfdd215de66337fd223 100644
--- a/src/events/RESS/injectionsPlease.js
+++ b/src/events/RESS/injectionsPlease.js
@@ -33,7 +33,7 @@ App.Events.RESSInjectionsPlease = class RESSInjectionsPlease extends App.Events.
 
 		App.Events.addParagraph(node, [
 			`Coming to see you in a clearly good mood is`,
-			App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, "DOM"), "."),
+			App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, true), "."),
 			`Since ${he}'s allowed to ask questions, ${he} comes right out with it.`,
 			Spoken(eventSlave, `"${Master}, I'm feeling healthy, and I've been a good ${girl} this week. With everyone getting so many powerful drugs —"`),
 			`${he} takes a breath before asking in a rush`,
diff --git a/src/events/RESS/languageLesson.js b/src/events/RESS/languageLesson.js
index 7650b34c1f25b8954fd885bcd63e42724ac88bed..cef79a7bde81ab74504c4fa4ebbd5d6362aaeb4b 100644
--- a/src/events/RESS/languageLesson.js
+++ b/src/events/RESS/languageLesson.js
@@ -34,7 +34,7 @@ App.Events.RESSLanguageLesson = class RESSLanguageLesson extends App.Events.Base
 
 		let r = [];
 		r.push(`Standing before you for an inspection is`);
-		r.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, "DOM"), "."));
+		r.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, true), "."));
 		r.push(`The obedient ${SlaveTitle(eventSlave)} has run through the prescribed motions of a normal inspection, and you've reached the part of the routine where you usually ask the slave a few questions, give ${him} a few orders, or fuck ${him}. ${His}`);
 		if (canSee(eventSlave)) {
 			r.push(`${App.Desc.eyesColor(eventSlave)} are watching you closely,`);
diff --git a/src/events/RESS/lazyEvening.js b/src/events/RESS/lazyEvening.js
index a660ce7f4c4af3b015323259942513356c20cda4..4dae2ea9e1e61b1d1b6714e6233fb0c2cbb802f0 100644
--- a/src/events/RESS/lazyEvening.js
+++ b/src/events/RESS/lazyEvening.js
@@ -56,7 +56,7 @@ App.Events.RESSLazyEvening = class RESSLazyEvening extends App.Events.BaseEvent
 
 		t = [];
 		t.push(`Of course, no self respecting arcology owner could be expected to enjoy a lazy night of idle relaxation on their own. As you resolve the last of your most pressing responsibilities for the evening, ${V.assistant.name} directs one of your attentive slaves to gently guide you away from the unending burdens of running your arcology. Leaning against the doorway and wearing a facsimile of what an old world ${woman} might wear on a casual night in,`);
-		t.push(contextualIntro(V.PC, eventSlave, "DOM"));
+		t.push(contextualIntro(V.PC, eventSlave, true));
 		if (!canTalk(eventSlave)) {
 			t.push(`asks with a gesture that carries just the right mixture of submission and exaggerated casualness if you'd like to 'hang out.'`);
 		} else if (SlaveStatsChecker.checkForLisp(eventSlave)) {
diff --git a/src/events/RESS/masterfulWhore.js b/src/events/RESS/masterfulWhore.js
index a0ec9cdec53c7a3670a7d3b8e5283e12de8f2b11..3ddea44ce481faa0027273ee68dd1ce1a751e6fa 100644
--- a/src/events/RESS/masterfulWhore.js
+++ b/src/events/RESS/masterfulWhore.js
@@ -28,7 +28,7 @@ App.Events.RESSMasterfulWhore = class RESSMasterfulWhore extends App.Events.Base
 
 		let r = [];
 		r.push(`As a queen of the whorehouse,`);
-		r.push(contextualIntro(V.PC, eventSlave, "DOM"));
+		r.push(contextualIntro(V.PC, eventSlave, true));
 		r.push(`is never surprised, never squeamish, and always on the prowl for ${his} next customer. ${He} has mastered the transactionalization of sex. When ${he}'s selling ${himself} by the hole, a customer who purchases ${his} skilled oral services will often find himself upsold to a more expensive`);
 		if (canDoVaginal(eventSlave) && eventSlave.vagina > 0) {
 			r.push(`vaginal experience.`);
diff --git a/src/events/RESS/meanGirls.js b/src/events/RESS/meanGirls.js
index 4eef9f4f0e4d9d72938437706312f9e08925cc65..dd4cab42d4b0c34505f4cf5d298db61f955e9c74 100644
--- a/src/events/RESS/meanGirls.js
+++ b/src/events/RESS/meanGirls.js
@@ -74,11 +74,11 @@ App.Events.RESSMeanGirls = class RESSMeanGirls extends App.Events.BaseEvent {
 		if (V.assistant.personality > 0) {
 			r.push(`work, ${hisA} ${V.assistant.appearance} avatar looking uncharacteristically somber.`);
 			r.push(`"${properMaster()}," ${heA} says, "a group of tourists are giving`);
-			r.push(contextualIntro(V.PC, eventSlave, "DOM"));
+			r.push(contextualIntro(V.PC, eventSlave, true));
 			r.push(`a bad time." Before you can ask why the security drones haven't addressed the situation, ${heA} continues, "They're not abusing ${him} physically or anything. But, look." ${HeA}`);
 		} else {
 			r.push(`work, announcing that a group of visitors to the arcology are being verbally abusive to`);
-			r.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, "DOM"), "."));
+			r.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, true), "."));
 			r.push(`Before you can ask why ${heA}'s bothering you with this, ${heA} continues, "An enslavement opportunity may exist," and`);
 		}
 		r.push(`brings up a video feed.`);
diff --git a/src/events/RESS/milkgasm.js b/src/events/RESS/milkgasm.js
index 4ecaf0e5bfb3aa2da25955849d82098389527ba0..74d38d302d42b6d522ead7026b0d1ddf66cb4784 100644
--- a/src/events/RESS/milkgasm.js
+++ b/src/events/RESS/milkgasm.js
@@ -30,7 +30,7 @@ App.Events.RESSMilkgasm = class RESSMilkgasm extends App.Events.BaseEvent {
 		let r = [];
 		r.push(
 			`${eventSlave.slaveName} is implanted with slow-release lactation drugs. ${His} lactation is dissimilar to that of a normal mother. It's the same stuff, but it's produced at a much, much higher volume. To stay comfortable,`,
-			contextualIntro(V.PC, eventSlave, "DOM"),
+			contextualIntro(V.PC, eventSlave, true),
 			`has to use milkers every couple of`
 		);
 		if (eventSlave.assignment !== "get milked") {
diff --git a/src/events/RESS/mindbrokenMorning.js b/src/events/RESS/mindbrokenMorning.js
index 6b1120a2888df222590ec2d17199f81d2f7cb8d8..5e2d8459a66375ad3fdb31561ef02f9a5ac4b44f 100644
--- a/src/events/RESS/mindbrokenMorning.js
+++ b/src/events/RESS/mindbrokenMorning.js
@@ -27,7 +27,7 @@ App.Events.RESSMindbrokenMorning = class RESSMindbrokenMorning extends App.Event
 		let r = [];
 
 		r.push(`It's a sunny morning, with rare mild weather, and you're stuck at your desk, as usual. After the typical rush of slaves clears the kitchen after the breakfast hour, you see one peel off to stand out on a balcony for a moment with the light on ${his} face. You pay little attention to such a trifle, but then notice that it's`);
-		r.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, "DOM"), "."));
+		r.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, true), "."));
 		App.Events.addParagraph(node, r);
 		r = [];
 
diff --git a/src/events/RESS/modestClothes.js b/src/events/RESS/modestClothes.js
index 2ca58a5253b5f19bf1f7dd1baa022ec7c8708b59..9ede5e12639e7d535a3088982ab59bc1ffa9f5eb 100644
--- a/src/events/RESS/modestClothes.js
+++ b/src/events/RESS/modestClothes.js
@@ -38,7 +38,7 @@ App.Events.RESSModestClothes = class RESSModestClothes extends App.Events.BaseEv
 		let r = [];
 
 		r.push(`Near the end of ${his} weekly inspection,`);
-		r.push(contextualIntro(V.PC, eventSlave, "DOM"));
+		r.push(contextualIntro(V.PC, eventSlave, true));
 		r.push(`asks you a question. The inspection happens to have been at the start of ${his} day, and after you're done with ${him}, ${he}'ll be heading off to get dressed. ${He}'s naked for inspection, of course,`);
 		if (eventSlave.fetishKnown && eventSlave.fetish === "humiliation") {
 			r.push(`which has the humiliation fetishist ${desc} decently aroused.`);
diff --git a/src/events/RESS/moistPussy.js b/src/events/RESS/moistPussy.js
index b332252b6f0c4c428f38a80d9c5f48608fe4838d..6acfa850cc6ecd7efa4346db8a185f1fb4cd6549 100644
--- a/src/events/RESS/moistPussy.js
+++ b/src/events/RESS/moistPussy.js
@@ -27,7 +27,7 @@ App.Events.RESSMoistPussy = class RESSMoistPussy extends App.Events.BaseEvent {
 
 		let t = [];
 		t.push("Just as you're about to give");
-		t.push(contextualIntro(V.PC, eventSlave, "DOM"));
+		t.push(contextualIntro(V.PC, eventSlave, true));
 		t.push(`${his} weekly inspection, a minor business matter comes up and diverts your attention.`);
 		t.push(`So, for about ten minutes, ${he} has nothing at all to do other than ${canStand(eventSlave) ? "stand" : hasAnyLegs(eventSlave) ? "kneel" : "sit"} in front of your desk in your office, ${canSee(eventSlave) ? "watching" : canHear(eventSlave) ? "listening to" : "feeling the subtle vibrations from"} you, ${(V.assistant.personality > 0) ? `${V.assistant.name}'s avatar,` : ""} the other slaves who come and go, and the general lewdness of the arcology, much of which is ${(canSee(eventSlave)) ? "visible" : canHear(eventSlave) ? "audible" : "apparent"} from right here.`);
 		if ((eventSlave.attrXY > 50) && (V.PC.boobs < 300)) {
diff --git a/src/events/RESS/muscles.js b/src/events/RESS/muscles.js
index a13cf0d4c4484db38d96117a1a3932b8b49301bb..d0e5772b730a3f84ec219d94f983e71943fd09e4 100644
--- a/src/events/RESS/muscles.js
+++ b/src/events/RESS/muscles.js
@@ -26,7 +26,7 @@ App.Events.RESSMuscles = class RESSMuscles extends App.Events.BaseEvent {
 
 		let t = [];
 		t.push(`Early one morning,`);
-		t.push(contextualIntro(V.PC, eventSlave, "DOM"));
+		t.push(contextualIntro(V.PC, eventSlave, true));
 		if (!canWalk(eventSlave)) {
 			t.push(`crawls`);
 		} else if (shoeHeelCategory(eventSlave) > 1) {
diff --git a/src/events/RESS/mutinyAttempt.js b/src/events/RESS/mutinyAttempt.js
index abcb5778be4bf1b78618dab161e0e3092cc3d5cd..727932eb3e0a06e8b1d9c08e6050165274c147c5 100644
--- a/src/events/RESS/mutinyAttempt.js
+++ b/src/events/RESS/mutinyAttempt.js
@@ -36,7 +36,7 @@ App.Events.RESSMutinyAttempt = class RESSMutinyAttempt extends App.Events.BaseEv
 
 		let r = [];
 		r.push(`Finishing your work, you lean back for a well-deserved break. Your peace is quickly disturbed by several loud smashes from down the penthouse hall. As you get up from your desk, you hear somebody running down the hallway, and before you know it,`);
-		r.push(contextualIntro(V.PC, eventSlave, "DOM"));
+		r.push(contextualIntro(V.PC, eventSlave, true));
 		r.push(`is inside. ${He} is looking quite treacherous and`);
 		if (eventSlave.skill.combat > 0) {
 			r.push(`relatively confident.`);
diff --git a/src/events/RESS/nightVisit.js b/src/events/RESS/nightVisit.js
index c13bd51983349178998975949c5318e823256a79..20b33e3c01344037dd3b3ac05736022c577a55de 100644
--- a/src/events/RESS/nightVisit.js
+++ b/src/events/RESS/nightVisit.js
@@ -34,7 +34,7 @@ App.Events.RESSNightVisit = class RESSNightVisit extends App.Events.BaseEvent {
 
 		let r = [];
 		r.push(`As you are retiring for the night,`);
-		r.push(contextualIntro(V.PC, eventSlave, "DOM"));
+		r.push(contextualIntro(V.PC, eventSlave, true));
 		if (!canWalk(eventSlave)) {
 			if (eventSlave.rules.mobility === "permissive") {
 				r.push(`hobbles`);
diff --git a/src/events/RESS/passingDeclaration.js b/src/events/RESS/passingDeclaration.js
index 146634bd3ba40ec26fa3971ac7e5942efcfd393b..9d4fabaa85401b23da6b25e27833ed6ab2203fed 100644
--- a/src/events/RESS/passingDeclaration.js
+++ b/src/events/RESS/passingDeclaration.js
@@ -37,7 +37,7 @@ App.Events.RESSPassingDeclaration = class RESSPassingDeclaration extends App.Eve
 		let t = [];
 
 		t.push("As you manage your empire from your office, a constant traffic of slaves passes by its door. The glass walls allow a good view of them, and since you naturally own what you find appealing, the passing chattel often draws your eye. For example, this morning you notice");
-		t.push(contextualIntro(V.PC, eventSlave, "DOM"));
+		t.push(contextualIntro(V.PC, eventSlave, true));
 		t.push(`almost bounce into view. ${He}'s physically fit, at a healthy weight,`);
 		if (eventSlave.belly >= 10000) {
 			if (eventSlave.bellyPreg >= 3000) {
diff --git a/src/events/RESS/penitent.js b/src/events/RESS/penitent.js
index 22f5a8fe40128facddfd8a7bf556e6bf9570ee45..97a662d1ed46e17c419488619765568b405d94a4 100644
--- a/src/events/RESS/penitent.js
+++ b/src/events/RESS/penitent.js
@@ -29,7 +29,7 @@ App.Events.RESSPenitent = class RESSPenitent extends App.Events.BaseEvent {
 
 		let r = [];
 		r.push(`As`);
-		r.push(contextualIntro(V.PC, eventSlave, "DOM"));
+		r.push(contextualIntro(V.PC, eventSlave, true));
 		r.push(`comes before you for routine inspection, it is obvious that ${his} penitent habit is having an effect. ${He} moves with exquisite care, desperate to minimize the`);
 		if (eventSlave.pregKnown === 1 && eventSlave.belly >= 1500) {
 			r.push(`chafing, especially on ${his} growing pregnancy.`);
diff --git a/src/events/RESS/permittedMasturbation.js b/src/events/RESS/permittedMasturbation.js
index 726621fc22292f6fa33ef85771cbc25d6b6151c1..ff243220cfbdfd1dc1345a6af05c9f0de52261f7 100644
--- a/src/events/RESS/permittedMasturbation.js
+++ b/src/events/RESS/permittedMasturbation.js
@@ -44,7 +44,7 @@ App.Events.RESSPermittedMasturbation = class RESSPermittedMasturbation extends A
 			r.push(`through the cavernous slave dormitory`);
 		}
 		r.push(`and see`);
-		r.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, "DOM"), ","));
+		r.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, true), ","));
 		r.push(`alone in bed tonight. ${He}'s nude, of course, and has not pulled the sheets up over ${himself}. ${He}'s lying face-down,`);
 		if (eventSlave.belly >= 10000) {
 			r.push(`though ${his} bulbous middle forces ${him} to twist awkwardly,`);
diff --git a/src/events/RESS/plimbHelp.js b/src/events/RESS/plimbHelp.js
index d7824074784a8a548b660ef62774117808c62652..e7c12c936b2f752439ba7c91c417665540ba3117 100644
--- a/src/events/RESS/plimbHelp.js
+++ b/src/events/RESS/plimbHelp.js
@@ -38,7 +38,7 @@ App.Events.RESSPlimbHelp = class RESSPlimbHelp extends App.Events.BaseEvent {
 		r.push(`First thing in the morning,`);
 		if (eventSlave.ID === V.BodyguardID) {
 			r.push(`before you've even gotten out of bed, you hear`);
-			r.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, "DOM"), "'s"));
+			r.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, true), "'s"));
 			r.push(`voice coming up from where ${he} sleeps,`);
 			if (V.dojo >= 1) {
 				r.push(`in the armory watching over your suite.`);
@@ -54,7 +54,7 @@ App.Events.RESSPlimbHelp = class RESSPlimbHelp extends App.Events.BaseEvent {
 			r.push(`troubleshooting the problem, but in the meantime, poor`);
 		} else {
 			r.push(`${V.assistant.name} informs you that there's a minor problem with`);
-			r.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, "DOM"), ","));
+			r.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, true), ","));
 			r.push(`and asks whether you'd like it to be handled without you. ${He} sleeps out of ${his} P-Limbs, since it's good to rest the anchor points implanted into ${his} torso. When ${he} wakes up, ${he} usually asks whichever slave is nearest to attach ${his} dominant arm, at which point ${he} can do the rest ${himself}. Due to an unexpected change in the slaves' schedules, though, ${he}'s all alone today. Poor`);
 		}
 		r.push(`${eventSlave.slaveName} is left as a helpless,`);
diff --git a/src/events/RESS/plugDisobedience.js b/src/events/RESS/plugDisobedience.js
index c8f626a21c43d79616f138c4f087dc3c2eb27f73..500fd7886cf157bc1def54ba9b03e26fadd27a32 100644
--- a/src/events/RESS/plugDisobedience.js
+++ b/src/events/RESS/plugDisobedience.js
@@ -31,7 +31,7 @@ App.Events.RESSPlugDisobedience = class RESSPlugDisobedience extends App.Events.
 
 		let r = [];
 		r.push(`One morning, you see`);
-		r.push(contextualIntro(V.PC, eventSlave, "DOM"));
+		r.push(contextualIntro(V.PC, eventSlave, true));
 		if (!canWalk(eventSlave)) {
 			r.push(`crawl`);
 		} else if (canMove(eventSlave) && eventSlave.rules.mobility === "permissive") {
diff --git a/src/events/RESS/refreshmentDelivery.js b/src/events/RESS/refreshmentDelivery.js
index 323fa978d3d63bacd538c80007981e6a38842d35..5e8b6d85be17a95c2a74351d2e3ac22a55ed3620 100644
--- a/src/events/RESS/refreshmentDelivery.js
+++ b/src/events/RESS/refreshmentDelivery.js
@@ -31,7 +31,7 @@ App.Events.RESSRefreshmentDelivery = class RESSRefreshmentDelivery extends App.E
 		let r = [];
 		r.push(
 			`When it's time for refreshments, ${V.assistant.name} directs the closest unoccupied slave capable of bringing them in to do so. This has the added advantage of bringing an enjoyably unpredictable variety of slaves under your eyes. This time,`,
-			contextualIntro(V.PC, eventSlave, "DOM"),
+			contextualIntro(V.PC, eventSlave, true),
 			`comes through the door of your office, carrying`
 		);
 		if (V.PC.refreshmentType === 0) {
diff --git a/src/events/RESS/restrictedSmart.js b/src/events/RESS/restrictedSmart.js
index 85c9f61224f331936c3d63847197df178c51a7e2..0c53ea25f0ab89b4eb0c1c2b89e075c0d2fad97c 100644
--- a/src/events/RESS/restrictedSmart.js
+++ b/src/events/RESS/restrictedSmart.js
@@ -31,7 +31,7 @@ App.Events.RESSRestrictedSmart = class RESSRestrictedSmart extends App.Events.Ba
 
 		let r = [];
 		r.push(`During a routine inspection of`);
-		r.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, "DOM"), ","));
+		r.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, true), ","));
 		r.push(`you notice that ${he}'s behaving a little strangely. ${He}'s participating in the inspection with almost manic attention, trying to anticipate your directions and hanging desperately on your every word. After a moment, you reflect that ${he}'s a smart ${girl}, and is probably suffering for a lack of conversation. As you regard ${him}`);
 		if (!hasAnyLegs(eventSlave)) {
 			r.push(`sitting`);
diff --git a/src/events/RESS/retchingCum.js b/src/events/RESS/retchingCum.js
index 5d8a55386394bbc281d6817fe62db905f5ce1be5..f8c429a6637723fb8ccd424898af8967f4c27a32 100644
--- a/src/events/RESS/retchingCum.js
+++ b/src/events/RESS/retchingCum.js
@@ -28,7 +28,7 @@ App.Events.RESSRetchingCum = class RESSRetchingCum extends App.Events.BaseEvent
 
 		let t = [];
 		t.push(`You are inspecting the slave feeding area early in the week, watching your slaves as they come and go to get their required nourishment for the morning, and`);
-		t.push(contextualIntro(V.PC, eventSlave, "DOM"));
+		t.push(contextualIntro(V.PC, eventSlave, true));
 		t.push(`catches your attention.`);
 		if (V.cockFeeder === 1) {
 			t.push(`You see as ${he} kneels in front of the feeder`);
diff --git a/src/events/RESS/review/PAservant.js b/src/events/RESS/review/PAservant.js
index 12a07c38b85bec67467910aa2ec23bf97d64b48c..d299ae7c811965ecf1d06d14a4dd5ba330ac3733 100644
--- a/src/events/RESS/review/PAservant.js
+++ b/src/events/RESS/review/PAservant.js
@@ -92,7 +92,7 @@ App.Events.RESSPAServant = class RESSPAServant extends App.Events.BaseEvent {
 		}
 		r.push(
 			`personal assistant coming from your office. Looking in, you are treated to the sight of`,
-			App.UI.DOM.combineNodes(contextualIntro(PC, eventSlave, "DOM"), "'s")
+			App.UI.DOM.combineNodes(contextualIntro(PC, eventSlave, true), "'s")
 		);
 		if (eventSlave.butt > 8) {
 			r.push(`ridiculous bottom jiggling`);
diff --git a/src/events/RESS/review/aGift.js b/src/events/RESS/review/aGift.js
index b8659e556ff68f415e56ae8662f31a63b232f6da..b6fdf28976d13eb24bf5cf47c7be6434fad09b9d 100644
--- a/src/events/RESS/review/aGift.js
+++ b/src/events/RESS/review/aGift.js
@@ -102,7 +102,7 @@ App.Events.RESSAGift = class RESSAGift extends App.Events.BaseEvent {
 
 		let r = [];
 		r.push(`You're working at your desk when`);
-		r.push(contextualIntro(V.PC, eventSlave, "DOM"));
+		r.push(contextualIntro(V.PC, eventSlave, true));
 		r.push(`walks by your office. ${He} checks to see whether you're in while trying very hard to look like ${he}'s minding ${his} own business, and turns to go once ${he}`);
 		if (canSee(eventSlave)) {
 			r.push(`sees`);
diff --git a/src/events/RESS/review/ageImplant.js b/src/events/RESS/review/ageImplant.js
index 082e289a9697e1837c7f766293f871155ebb42c6..8613ead35d1fcb65ba9dc36f8297943631898425 100644
--- a/src/events/RESS/review/ageImplant.js
+++ b/src/events/RESS/review/ageImplant.js
@@ -33,7 +33,7 @@ App.Events.RESSAgeImplant = class RESSAgeImplant extends App.Events.BaseEvent {
 
 		App.Events.addParagraph(node, [
 			`In the morning the penthouse is a busy bustle of female energy. Slaves get up promptly, eat, shower, dress themselves, and head out to work. They chatter if able and allowed, and draw a good deal of strength from each other. As you pass by the kitchen, you are narrowly avoided by a rush of slaves heading to the showers. They're almost bouncing, feeding off each others' youthful energy. At the back of the pack is`,
-			App.UI.DOM.combineNodes(contextualIntro(PC, eventSlave, "DOM"), `. ${He} looks as young as any of them, but after they're out, ${he} leans against the door frame for a moment and exhales slowly.`)
+			App.UI.DOM.combineNodes(contextualIntro(PC, eventSlave, true), `. ${He} looks as young as any of them, but after they're out, ${he} leans against the door frame for a moment and exhales slowly.`)
 		]);
 		let r = [];
 		r.push(`${His} ${App.Desc.eyeColor(eventSlave)}-eyed gaze catches yours for a moment, and you are reminded that ${he} isn't as young as they are, not at all. ${His} face might look youthful, but ${his} eyes don't.`);
diff --git a/src/events/RESS/review/ampDevoted.js b/src/events/RESS/review/ampDevoted.js
index b1eb220f7cba48415fc7770e832d3d7c071da81d..e2d46f3d5c76c568b7022e181a88679f5fb92803 100644
--- a/src/events/RESS/review/ampDevoted.js
+++ b/src/events/RESS/review/ampDevoted.js
@@ -26,7 +26,7 @@ App.Events.RESSAmpDevoted = class RESSAmpDevoted extends App.Events.BaseEvent {
 
 		let r = [];
 		r.push(`Lying on the couch next to your desk as you work is`);
-		r.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, "DOM"), ","));
+		r.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, true), ","));
 		r.push(`looking like the neglected`);
 		if (eventSlave.belly >= 600000) {
 			if (eventSlave.bellyPreg > 0) {
diff --git a/src/events/RESS/review/backStretch.js b/src/events/RESS/review/backStretch.js
index 5b89d83d88b13b9ded19feb919574db29daa207e..8aec6e6457a8d42a0c32f00ea582f28d72dd8a93 100644
--- a/src/events/RESS/review/backStretch.js
+++ b/src/events/RESS/review/backStretch.js
@@ -33,7 +33,7 @@ App.Events.RESSBackStretch = class RESSBackStretch extends App.Events.BaseEvent
 		const r = new SpacedTextAccumulator(node);
 		r.push(
 			`You pass through your slaves' living area as some of them are starting their days.`,
-			contextualIntro(PC, eventSlave, "DOM"),
+			contextualIntro(PC, eventSlave, true),
 			`is one of them, and ${he}'s just`,
 		);
 		if (eventSlave.rules.living === "spare") {
diff --git a/src/events/RESS/review/badDream.js b/src/events/RESS/review/badDream.js
index 6e2b26e7bd359c73a47e23c4d1a22b3bc1f6de22..4fbbdd303c1313d12ad8da3a8cd009d6db4963dd 100644
--- a/src/events/RESS/review/badDream.js
+++ b/src/events/RESS/review/badDream.js
@@ -31,7 +31,7 @@ App.Events.RESSBadDream = class RESSBadDream extends App.Events.BaseEvent {
 		let r = [];
 		r.push(
 			`Passing near the slave dormitory late at night, you hear a quiet cry within. This is strange; most slaves housed there are not inclined or not allowed to have sex in the middle of the night, and in any case, the noise wasn't one of pleasure. Looking in, you see a jerky movement near the door. It's`,
-			App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, "DOM"), ","),
+			App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, true), ","),
 			`and ${he}'s obviously having a bad dream. ${He} raises`
 		);
 		if (hasBothArms(eventSlave)) {
diff --git a/src/events/RESS/review/bondedLove.js b/src/events/RESS/review/bondedLove.js
index 6afe5b46dd86526550030c0f20db655ab87b5b82..ac87d9329469ef68dcc55ff0bbb1a0faa8590129 100644
--- a/src/events/RESS/review/bondedLove.js
+++ b/src/events/RESS/review/bondedLove.js
@@ -31,7 +31,7 @@ App.Events.RESSBondedLove = class RESSBondedLove extends App.Events.BaseEvent {
 		const r = new SpacedTextAccumulator(node);
 		r.push(
 			`Working in your office early in the morning, you can hear the low, human hum of your slaves who work during the daytime busily getting ready for their days. Suddenly, there's motion at your doorway, and`,
-			contextualIntro(V.PC, eventSlave, "DOM"),
+			contextualIntro(V.PC, eventSlave, true),
 			`hurries in. ${He}'s nude, ${his} ${eventSlave.skin} skin glowing with the fresh cleanliness of having just gotten out of the shower. ${He}`,
 		);
 		if (canSee(eventSlave)) {
diff --git a/src/events/RESS/review/breastExpansionBlues.js b/src/events/RESS/review/breastExpansionBlues.js
index 58056f9dc7f8cd3da075e3cd16e0906144e1db70..a6900a64cc5cb847c2bbf5eb2df3a44411311e49 100644
--- a/src/events/RESS/review/breastExpansionBlues.js
+++ b/src/events/RESS/review/breastExpansionBlues.js
@@ -39,7 +39,7 @@ App.Events.RESSBreastExpansionBlues = class RESSBreastExpansionBlues extends App
 		const r = new SpacedTextAccumulator(node);
 		r.push(
 			`During ${his} routine weekly inspection,`,
-			contextualIntro(PC, eventSlave, "DOM"),
+			contextualIntro(PC, eventSlave, true),
 			`cradles ${his} huge breasts with ${his} ${arms} whenever the maneuvers of being inspected allow ${him} to do so. It's not an unusual gesture for a ${SlaveTitle(eventSlave)} on breast growth drugs, since slaves whose tits are expanding are, by definition, not used to their weight yet. But ${eventSlave.slaveName} is more than just uncomfortable. ${He} seems to regard ${his} weighty mammaries with distaste.`,
 		);
 		if (eventSlave.intelligence+eventSlave.intelligenceImplant >= -15) {
diff --git a/src/events/RESS/review/cageRelief.js b/src/events/RESS/review/cageRelief.js
index f65208f8bf9b38a4c5131b3c6a067070065c5513..a3f9e757e99a749a745295e2ba48a0adf498f391 100644
--- a/src/events/RESS/review/cageRelief.js
+++ b/src/events/RESS/review/cageRelief.js
@@ -35,7 +35,7 @@ App.Events.RESSCageRelief = class RESSCageRelief extends App.Events.BaseEvent {
 		let r = [];
 		r.push(
 			`You come face to face with`,
-			contextualIntro(PC, eventSlave, "DOM"),
+			contextualIntro(PC, eventSlave, true),
 			`in a hallway of your penthouse, entirely by happenstance.`
 		);
 		if (canSee(eventSlave)) {
diff --git a/src/events/RESS/review/confidentTanning.js b/src/events/RESS/review/confidentTanning.js
index 90d7fd02f723edbe47caace5b4412f1b477bd556..c5541d7f65069e7b012546a0bd15b9f2184953c7 100644
--- a/src/events/RESS/review/confidentTanning.js
+++ b/src/events/RESS/review/confidentTanning.js
@@ -36,7 +36,7 @@ App.Events.RESSConfidentTanning = class RESSConfidentTanning extends App.Events.
 		const r = new SpacedTextAccumulator(node);
 		r.push(
 			`It's an unusually nice day, with mild sunshine, light breezes, and nothing offensive or dangerous in the atmosphere. In the middle of the afternoon, you take a break from your busy schedule of sex and business and stroll out onto one of your penthouse balconies. It seems`,
-			contextualIntro(PC, eventSlave, "DOM"),
+			contextualIntro(PC, eventSlave, true),
 			`was struck by a similar impulse.`,
 		);
 		if (eventSlave.assignment === "rest") {
diff --git a/src/events/RESS/review/cowMilking.js b/src/events/RESS/review/cowMilking.js
index b998fd087ca407fc067c0444263fbbfbbaa183a8..e7e3e8f638fde8bfe921fcd6812e775bb891e94f 100644
--- a/src/events/RESS/review/cowMilking.js
+++ b/src/events/RESS/review/cowMilking.js
@@ -34,7 +34,7 @@ App.Events.RESSCowMilking = class RESSCowMilking extends App.Events.BaseEvent {
 		const r = new SpacedTextAccumulator(node);
 		r.push(
 			`Heading back towards your office after seeing to a minor matter, you encounter`,
-			contextualIntro(PC, eventSlave, "DOM")
+			contextualIntro(PC, eventSlave, true)
 		);
 		r.addToLast(`, heading for the penthouse milkers.`);
 		if (eventSlave.assignment === "get milked") {
diff --git a/src/events/RESS/review/cumslutWhore.js b/src/events/RESS/review/cumslutWhore.js
index 042588bccdd7b97fb59dde1cbf40274e8a6a43a3..8093dfdbbe3f4a81d3b443eb7c376dcafd685c93 100644
--- a/src/events/RESS/review/cumslutWhore.js
+++ b/src/events/RESS/review/cumslutWhore.js
@@ -32,7 +32,7 @@ App.Events.RESSCumslutWhore = class RESSCumslutWhore extends App.Events.BaseEven
 		let r = [];
 		r.push(
 			`Late at night,`,
-			contextualIntro(V.PC, eventSlave, "DOM"),
+			contextualIntro(V.PC, eventSlave, true),
 			`returns to the living area of the penthouse. It's the end of ${his} day as a working girl, and despite being obviously tired, ${he}'s smiling with obvious sexual satiation. Every so often, ${he}'ll get a dreamy expression and lick ${his} lips. ${He} fetishizes cum to the extent that getting to eat a`
 		);
 		if (V.showInches === 2) {
diff --git a/src/events/RESS/review/desperateNull.js b/src/events/RESS/review/desperateNull.js
index 468e707f06ff9ecb9dfa84d35c7333cfbccde971..35d90856d532c8af5ca4fc69749f97fb7758e094 100644
--- a/src/events/RESS/review/desperateNull.js
+++ b/src/events/RESS/review/desperateNull.js
@@ -37,7 +37,7 @@ App.Events.RESSDesperateNull = class RESSDesperateNull extends App.Events.BaseEv
 		const r = new SpacedTextAccumulator(node);
 		r.push(
 			`You're inspecting`,
-			contextualIntro(PC, eventSlave, "DOM")
+			contextualIntro(PC, eventSlave, true)
 		);
 		r.addToLast(`, and ${he}'s an unhappy little null today.`);
 		if (eventSlave.devotion > 50) {
diff --git a/src/events/RESS/review/desperatelyHorny.js b/src/events/RESS/review/desperatelyHorny.js
index 4620f430d1d79ecb8533732b2cef63280dbf1a5e..f337d24127e790526ced2213f4779155a052775b 100644
--- a/src/events/RESS/review/desperatelyHorny.js
+++ b/src/events/RESS/review/desperatelyHorny.js
@@ -33,7 +33,7 @@ App.Events.RESSDesperatelyHorny = class RESSDesperatelyHorny extends App.Events.
 		let r = [];
 		r.push(
 			`Looking deeply unhappy and shivering occasionally,`,
-			contextualIntro(PC, eventSlave, "DOM"),
+			contextualIntro(PC, eventSlave, true),
 			`comes to see you.`
 		);
 		if (eventSlave.rules.speech === "restrictive") {
diff --git a/src/events/RESS/review/devotedExhibition.js b/src/events/RESS/review/devotedExhibition.js
index a6aa819086fe1e4f747221d1ee39c40fe9cd9c49..f2bc2f72eaf8deaf82467b5fb23a140abd716d60 100644
--- a/src/events/RESS/review/devotedExhibition.js
+++ b/src/events/RESS/review/devotedExhibition.js
@@ -33,7 +33,7 @@ App.Events.RESSDevotedExhibition = class RESSDevotedExhibition extends App.Event
 		const r = new SpacedTextAccumulator(node);
 		r.push(
 			`You make a habit of circulating through the arcology's public spaces when you can, to maintain your reputation for hands-on control and to keep a personal eye on the atmosphere. Citizens high and low avail themselves of the opportunity to greet you, introduce themselves, or bring small matters to your attention. Today, one of your prominent citizens brought up an unusually important subject, so you performed a walk and talk with him, ending out on a balcony. He goes away satisfied, but you spent longer than you intended away from the penthouse. As such, you missed the start of`,
-			contextualIntro(PC, eventSlave, "DOM")
+			contextualIntro(PC, eventSlave, true)
 		);
 		r.addToLast(`'s weekly inspection. ${He} finds you out on the balcony, directed to you by ${V.assistant.name},`);
 		if (eventSlave.weight > 160) {
diff --git a/src/events/RESS/review/devotedLotion.js b/src/events/RESS/review/devotedLotion.js
index bbb4b509b727dc995e9b028048daf3d168a526df..7a75fb5699bcf24590470cb2071d34c51aa4e5be 100644
--- a/src/events/RESS/review/devotedLotion.js
+++ b/src/events/RESS/review/devotedLotion.js
@@ -33,7 +33,7 @@ App.Events.RESSDevotedLotion = class RESSDevotedLotion extends App.Events.BaseEv
 		const r = new SpacedTextAccumulator(node);
 		r.push(
 			`Your slaves are required to take very good care of themselves, and your best ones spend several hours a day maintaining every ${inch} of their bodies. You notice`,
-			contextualIntro(V.PC, eventSlave, "DOM"),
+			contextualIntro(V.PC, eventSlave, true),
 			`standing naked in front of a mirror outside the bathroom, carefully applying moisturizing lotion to every ${inch} of ${his} ${eventSlave.skin} skin. ${He}'s clearly feeling well, and ${his}`
 		);
 		if (eventSlave.face > 95) {
diff --git a/src/events/RESS/review/devotedOld.js b/src/events/RESS/review/devotedOld.js
index 30a736be188e1edb63b4d0a5619a95814cfde4d0..2c0ba851c3bf6fddff59cd8fdcd2b95b203d117d 100644
--- a/src/events/RESS/review/devotedOld.js
+++ b/src/events/RESS/review/devotedOld.js
@@ -33,7 +33,7 @@ App.Events.RESSDevotedOld = class RESSDevotedOld extends App.Events.BaseEvent {
 		let r = [];
 		App.Events.addParagraph(node, [
 			`At the end of a long week,`,
-			contextualIntro(V.PC, eventSlave, "DOM"),
+			contextualIntro(V.PC, eventSlave, true),
 			`moves past your office toward bed. This is completely normal part of the arcology routine, but you notice as ${he} passes that ${he}'s wearing a preoccupied, almost sad expression. You call ${him} over, and ${he} makes a visible effort to brighten up as ${he} comes before you and asks your pleasure. You ask ${him} what's the matter, and ${his} face falls.`
 		]);
 		r.push(Spoken(eventSlave, `"${Master}, I'm so sorry you noticed,"`));
diff --git a/src/events/RESS/review/dickWringing.js b/src/events/RESS/review/dickWringing.js
index 0168393821326849e53ad027d8aa383bf671ff9d..2c1a3a82c752082a285cff43c53c75616e6c2f90 100644
--- a/src/events/RESS/review/dickWringing.js
+++ b/src/events/RESS/review/dickWringing.js
@@ -35,7 +35,7 @@ App.Events.RESSDickWringing = class RESSDickWringing extends App.Events.BaseEven
 		let r = [];
 		r.push(
 			`You run into`,
-			contextualIntro(PC, eventSlave, "DOM"),
+			contextualIntro(PC, eventSlave, true),
 			`in the hallway outside your office. The devoted ${SlaveTitle(eventSlave)} smiles at you as ${he} approaches. You barely notice how awkward ${his} gait is, since ${he} usually walks a little strangely. ${His} third leg tends to have that effect. But on consideration, ${he} does seem especially uncomfortable right now. The poor ${girl}'s`
 		);
 		if (eventSlave.scrotum === 0) {
diff --git a/src/events/RESS/review/dickgirlPC.js b/src/events/RESS/review/dickgirlPC.js
index 520b3075cb13dcebda238630abddd89bffb4267b..cda286df255d9a7cb166373a9a029d9d06b88a24 100644
--- a/src/events/RESS/review/dickgirlPC.js
+++ b/src/events/RESS/review/dickgirlPC.js
@@ -35,7 +35,7 @@ App.Events.RESSDickgirlPC = class RESSDickgirlPC extends App.Events.BaseEvent {
 
 		App.Events.addParagraph(node, [
 			`Having just enjoyed one of your slaves, you take a quick post-coital rinse in one of the showers scattered around the arcology for the purpose. Thus refreshed, you step out and come face to face with`,
-			App.UI.DOM.combineNodes(contextualIntro(PC, eventSlave, "DOM"), ","),
+			App.UI.DOM.combineNodes(contextualIntro(PC, eventSlave, true), ","),
 			`who is going about ${his} assigned business. ${His} ${App.Desc.eyesColor(eventSlave)} lock with yours for a surprised moment, and then flick down submissively.`
 		]);
 
diff --git a/src/events/RESS/review/extremeAphrodisiacs.js b/src/events/RESS/review/extremeAphrodisiacs.js
index 8804607fca06f79e75588931f3aac91e62509bc3..4806433b07926a3ead9b2ca4cc59675806e5f1a0 100644
--- a/src/events/RESS/review/extremeAphrodisiacs.js
+++ b/src/events/RESS/review/extremeAphrodisiacs.js
@@ -29,7 +29,7 @@ App.Events.RESSExtremeAphrodisiacs = class RESSExtremeAphrodisiacs extends App.E
 		const r = new SpacedTextAccumulator(node);
 		r.push(
 			`As you are retiring for the night,`,
-			contextualIntro(PC, eventSlave, "DOM")
+			contextualIntro(PC, eventSlave, true)
 		);
 		if (!canWalk(eventSlave)) {
 			r.push(`crawls`);
diff --git a/src/events/RESS/review/fearfulHumiliation.js b/src/events/RESS/review/fearfulHumiliation.js
index 3f65b84273f6a1d039d1661d2e57def170ac274d..d934a296017c34005bed593a74d56379bab75949 100644
--- a/src/events/RESS/review/fearfulHumiliation.js
+++ b/src/events/RESS/review/fearfulHumiliation.js
@@ -33,7 +33,7 @@ App.Events.RESSFearfulHumiliation = class RESSFearfulHumiliation extends App.Eve
 
 		App.Events.addParagraph(node, [
 			`Even if ${he} isn't yet a truly devoted sex slave,`,
-			contextualIntro(V.PC, eventSlave, "DOM"),
+			contextualIntro(V.PC, eventSlave, true),
 			`generally obeys orders. ${He} blushes furiously when given any sexual command, but ${his} true feelings about humiliation become clear when ${he} is ordered to serve in front of others, even other slaves. It sometimes seems the number of people watching ${him} get fondled, used, or fucked directly reduces the distance between ${him} and ${his} next blushing or even sobbing orgasm.`
 		]);
 
diff --git a/src/events/RESS/review/fucktoyTribbing.js b/src/events/RESS/review/fucktoyTribbing.js
index e4232655b3650deda4c82380222f861633477276..cdbc8f2169856387b7c267ed853dc5945348361d 100644
--- a/src/events/RESS/review/fucktoyTribbing.js
+++ b/src/events/RESS/review/fucktoyTribbing.js
@@ -96,7 +96,7 @@ App.Events.RESSFucktoyTribbing = class RESSFucktoyTribbing extends App.Events.Ba
 		}
 		r.push(
 			`thigh against your womanhood in turn. It's`,
-			contextualIntro(V.PC, eventSlave, "DOM")
+			contextualIntro(V.PC, eventSlave, true)
 		);
 		r.addToLast(`, and you feel yourself begin to grow wet as you gaze at ${him} in the dim light and feel ${his} slumbering heat.`);
 
diff --git a/src/events/RESS/review/gaggedSlave.js b/src/events/RESS/review/gaggedSlave.js
index 374865ad65803ffd96978f525ca4236cd70621d8..a4223dc768906fdb9a20122b14b656b382f53da5 100644
--- a/src/events/RESS/review/gaggedSlave.js
+++ b/src/events/RESS/review/gaggedSlave.js
@@ -27,7 +27,7 @@ App.Events.RESSGaggedSlave = class RESSGaggedSlave extends App.Events.BaseEvent
 		let r = [];
 		r.push(
 			`You cross paths with`,
-			contextualIntro(V.PC, eventSlave, "DOM"),
+			contextualIntro(V.PC, eventSlave, true),
 			`as ${he} returns from ${eventSlave.assignment} after a long day. One of the things most readily apparent about ${eventSlave.slaveName} is the`
 		);
 		if (eventSlave.mouthAccessory === "ball gag") {
diff --git a/src/events/RESS/review/gapedAsshole.js b/src/events/RESS/review/gapedAsshole.js
index 2768e031cc5bd056bdf6bc2d2cba3ae229e7e6e5..93edcc616639a6e5683508b90764648e42184a70 100644
--- a/src/events/RESS/review/gapedAsshole.js
+++ b/src/events/RESS/review/gapedAsshole.js
@@ -33,7 +33,7 @@ App.Events.RESSGapedAsshole = class RESSGapedAsshole extends App.Events.BaseEven
 		const r = new SpacedTextAccumulator(node);
 		r.push(
 			`You encounter`,
-			contextualIntro(PC, eventSlave, "DOM"),
+			contextualIntro(PC, eventSlave, true),
 			`at the beginning of ${his} day, as ${he} finishes ${his} morning ablutions and heads off to`,
 		);
 		if (eventSlave.clothes !== "no clothing") {
diff --git a/src/events/RESS/review/happyDance.js b/src/events/RESS/review/happyDance.js
index a40a0e7c46c45b50a21c7c81d22a4af8f8ddef57..c522a3f7378fd4116ec38f7e2883807ea9aa826f 100644
--- a/src/events/RESS/review/happyDance.js
+++ b/src/events/RESS/review/happyDance.js
@@ -42,7 +42,7 @@ App.Events.RESSHappyDance = class RESSHappyDance extends App.Events.BaseEvent {
 		}
 		r.push(
 			`humming. It's`,
-			contextualIntro(V.PC, eventSlave, "DOM")
+			contextualIntro(V.PC, eventSlave, true)
 		);
 		r.addToLast(`, dancing`);
 		if (eventSlave.rules.living === "luxurious") {
diff --git a/src/events/RESS/review/heavyPiercing.js b/src/events/RESS/review/heavyPiercing.js
index 1321b23cc23e96254cafc979972896d12eefa482..3a18de23c6df53abb8f4e971b2dc24b96bf9a55c 100644
--- a/src/events/RESS/review/heavyPiercing.js
+++ b/src/events/RESS/review/heavyPiercing.js
@@ -29,7 +29,7 @@ App.Events.RESSHeavyPiercing = class RESSHeavyPiercing extends App.Events.BaseEv
 		let r = [];
 		r.push(
 			`The intimate areas of`,
-			contextualIntro(V.PC, eventSlave, "DOM"),
+			contextualIntro(V.PC, eventSlave, true),
 			`are heavily pierced. This is great; it draws attention to ${his} holes and makes ${him} look like the sex slave ${he} is. However, it does necessitate some extra maintenance. It's the end of the day, and ${eventSlave.slaveName} is in a bathroom`
 		);
 		if (canSee(eventSlave)) {
diff --git a/src/events/RESS/review/heels_event.js b/src/events/RESS/review/heels_event.js
index 6122001042ac202cf6ae90f0c357b2e779b9c0db..26eebe959460a89c4f43ab6f121c35e6f8326476 100644
--- a/src/events/RESS/review/heels_event.js
+++ b/src/events/RESS/review/heels_event.js
@@ -29,7 +29,7 @@ App.Events.RESSHeels = class RESSHeels extends App.Events.BaseEvent {
 		let r = [];
 		r.push(
 			`Since`,
-			App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, "DOM"), "'s"),
+			App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, true), "'s"),
 			`tendons were shortened, forcing ${him} to wear heels in order to walk, ${he}'s permanently subject to your whims in shoe selection. ${He} walks carefully into your office, the sway of ${his} hips greatly`
 		);
 		if (eventSlave.bellyPreg >= 10000) {
diff --git a/src/events/RESS/review/hugeTits.js b/src/events/RESS/review/hugeTits.js
index 75bca13c25f75f25cef88da05371dba3db97c243..a481ae15b012d5a5e2a636d3ba97972c4ff1fb95 100644
--- a/src/events/RESS/review/hugeTits.js
+++ b/src/events/RESS/review/hugeTits.js
@@ -36,7 +36,7 @@ App.Events.RESSHugeTits = class RESSHugeTits extends App.Events.BaseEvent {
 		let r = [];
 		r.push(
 			`There is a horrible crash from the shower. You rush in to see`,
-			contextualIntro(V.PC, eventSlave, "DOM"),
+			contextualIntro(V.PC, eventSlave, true),
 			`face-down and covered in soap. ${He}'s uninjured, but ${his} tits are so huge that, soapy as ${he} is, ${he} can't seem to stand again. ${His} udders have ${him} pinned to the ground with ${his} legs sticking out of the shower. ${He} pleads`
 		);
 		if (eventSlave.lips > 70) {
diff --git a/src/events/RESS/review/hyperpregStuck.js b/src/events/RESS/review/hyperpregStuck.js
index e0231950d805fa99abec22e17a54963935799c69..db99aef7afb73d1da95ca221a92c21f1bc86339f 100644
--- a/src/events/RESS/review/hyperpregStuck.js
+++ b/src/events/RESS/review/hyperpregStuck.js
@@ -33,7 +33,7 @@ App.Events.RESSHyperpregStuck = class RESSHyperpregStuck extends App.Events.Base
 		} else {
 			r.push(`debilitatingly pregnant slave,`);
 		}
-		r.push(contextualIntro(V.PC, eventSlave, "DOM"));
+		r.push(contextualIntro(V.PC, eventSlave, true));
 		r.addToLast(`. It seems`);
 		if (V.pregAccessibility === 1 || V.ballsAccessibility === 1 || V.buttAccessibility === 1 || V.boobAccessibility === 1) {
 			r.push(`that, despite updating your penthouse to accommodate extra wide slaves,`);
diff --git a/src/events/RESS/review/ignorantHorny.js b/src/events/RESS/review/ignorantHorny.js
index 69965f2e82c50b228632e7a86b3d0900ed291b3e..731f09e25cc7476dbd3169c231c4851582b1a0a7 100644
--- a/src/events/RESS/review/ignorantHorny.js
+++ b/src/events/RESS/review/ignorantHorny.js
@@ -37,7 +37,7 @@ App.Events.RESSIgnorantHorny = class RESSIgnorantHorny extends App.Events.BaseEv
 		let r = [];
 		r.push(
 			`First on the inspection schedule is`,
-			App.UI.DOM.combineNodes(contextualIntro(PC, eventSlave, "DOM"), ","),
+			App.UI.DOM.combineNodes(contextualIntro(PC, eventSlave, true), ","),
 			`and as you watch ${him} enter your office, you note several good signs about ${his} progress towards becoming a good sex slave. ${He} enters obediently, without pretending to be thrilled to be here, but also without hesitation. Best of all,`
 		);
 		if (eventSlave.chastityPenis && canAchieveErection(eventSlave)) {
diff --git a/src/events/RESS/review/inconvenientLabia.js b/src/events/RESS/review/inconvenientLabia.js
index ed38d3ec3c784157a83b5bbefab081979cab201b..a6410c876b641c00bc8b5a6457dca6ad23fadf3d 100644
--- a/src/events/RESS/review/inconvenientLabia.js
+++ b/src/events/RESS/review/inconvenientLabia.js
@@ -41,7 +41,7 @@ App.Events.RESSInconvenientLabia = class RESSInconvenientLabia extends App.Event
 		let r = [];
 		App.Events.addParagraph(node, [
 			`You see`,
-			contextualIntro(V.PC, eventSlave, "DOM"),
+			contextualIntro(V.PC, eventSlave, true),
 			`moving gingerly as ${he} heads out of the workout room, as though ${he}'s suffering some pain in ${his} groin. Since ${he}'s coming off a workout rather than any duty that would explain a sore pussy, you head over to ${him} to investigate. ${He} greets you properly, looking a little rueful.`
 		]);
 		if (!canTalk(eventSlave)) {
diff --git a/src/events/RESS/review/looseButtslut.js b/src/events/RESS/review/looseButtslut.js
index 976da4f2d915aee5cb9bf3539e81e2d6ae0e5f7c..8bded89c8033a5a9608e03f8f639a60aaeb4ba3b 100644
--- a/src/events/RESS/review/looseButtslut.js
+++ b/src/events/RESS/review/looseButtslut.js
@@ -30,7 +30,7 @@ App.Events.RESSLooseButtslut = class RESSLooseButtslut extends App.Events.BaseEv
 		let r = [];
 		r.push(
 			`Since ${he} has a little free time this evening,`,
-			contextualIntro(V.PC, eventSlave, "DOM"),
+			contextualIntro(V.PC, eventSlave, true),
 			`finds a quiet corner and engages in ${his} anal proclivities. Since ${his} asshole is so stretched out, ${he} sticks the base of a huge dildo to the ground and`);
 		if (eventSlave.belly >= 100000) {
 			r.push(`struggles to lower ${his} heavy, very gravid body down onto it,`);
diff --git a/src/events/RESS/review/masterfulEntertainer.js b/src/events/RESS/review/masterfulEntertainer.js
index ae32b8a58c602e523d23ca5eec94cf31cf5f0cbc..4400531b8bf0606aad203837ec28da7926970fa9 100644
--- a/src/events/RESS/review/masterfulEntertainer.js
+++ b/src/events/RESS/review/masterfulEntertainer.js
@@ -30,7 +30,7 @@ App.Events.RESSMasterfulEntertainer = class RESSMasterfulEntertainer extends App
 		let r = [];
 		r.push(
 			`It's Friday evening, the most socially important part of the week in ${V.arcologies[0].name}.`,
-			contextualIntro(PC, eventSlave, "DOM"),
+			contextualIntro(PC, eventSlave, true),
 			`happens to be free this evening, and your schedule is open, too. Lately, ${he}'s been putting on a tour de force of seduction, erotic dance, and lewd entertainment whenever ${he} gets the chance to catch someone's eye`
 		);
 		if (eventSlave.belly >= 5000) {
diff --git a/src/events/RESS/review/millenary.js b/src/events/RESS/review/millenary.js
index 10406c61e301091901b041129117dcdd0f363ef1..2058aff677fdb2c11ebfbb64b1bbee287b7a6714 100644
--- a/src/events/RESS/review/millenary.js
+++ b/src/events/RESS/review/millenary.js
@@ -30,7 +30,7 @@ App.Events.RESSMillenary = class RESSMillenary extends App.Events.BaseEvent {
 
 		App.Events.addParagraph(node, [
 			`Late one night,`,
-			contextualIntro(V.PC, slave, "DOM"),
+			contextualIntro(V.PC, slave, true),
 			`comes to see you. Strangely, several of your other slaves are stealing glances at ${him} as ${he} does. ${He} seems oddly proud of ${himself}. Asked why, ${he} ${say}s,`,
 			Spoken(slave, `"It's my millenary, ${Master}. The arcology has logged me getting fucked ${num(999)} times."`),
 			`The other slaves obviously view it as significant, too.`
diff --git a/src/events/RESS/review/newlyDevotedSunrise.js b/src/events/RESS/review/newlyDevotedSunrise.js
index 7ec0898dbcda0992138810e7629da262406cffb6..1c2ade21fe1d1ba6a86534087d52aef43b2e1b14 100644
--- a/src/events/RESS/review/newlyDevotedSunrise.js
+++ b/src/events/RESS/review/newlyDevotedSunrise.js
@@ -29,7 +29,7 @@ App.Events.RESSNewlyDevotedSunrise = class RESSNewlyDevotedSunrise extends App.E
 
 		let r = [];
 		r.push(`Early to bed and early to rise makes an arcology owner healthy, wealthy, and wise. It also allows you to enjoy the beautiful sunrises. The degradation of the planet does have its advantages: all the rubbish in the air often paints the morning light a striking color, and this is one such morning. Taken with the grandeur, you step out onto a balcony to take it in, only to find`);
-		r.push(contextualIntro(V.PC, slave, "DOM"));
+		r.push(contextualIntro(V.PC, slave, true));
 		r.push(`out there already, doing just the same thing. The luxurious rules ${he} enjoys offer ${him} small breaks here and there, and ${he}'s obviously come out to enjoy`);
 		if (canSee(slave)) {
 			r.push(`the sight`);
diff --git a/src/events/RESS/review/niceGuys.js b/src/events/RESS/review/niceGuys.js
index ff711aa49d39af823d9bed4aafbc4dfaffb6665b..996d57f6d7e6cb66d6988537253f16a5f4c35863 100644
--- a/src/events/RESS/review/niceGuys.js
+++ b/src/events/RESS/review/niceGuys.js
@@ -32,13 +32,13 @@ App.Events.RESSNiceGuys = class RESSNiceGuys extends App.Events.BaseEvent {
 		if (V.assistant.personality > 0) {
 			r.push(
 				`${HisA} ${V.assistant.appearance} avatar looks unusually curious. "${properTitle()}, " ${heA} says, "a group of tourists have just entered the arcology. They seem strangely enthralled by`,
-				contextualIntro(V.PC, eventSlave, "DOM"),
+				contextualIntro(V.PC, eventSlave, true),
 			);
 			r.addToLast(`." Before you can ask why ${heA} deemed this important enough news to draw your attention to, ${heA} continues, "They're not using ${him} or anything. Just look." ${HeA}`);
 		} else {
 			r.push(
 				`It announces that a group of tourists have just entered the arcology, and seem unusually enthralled by`,
-				contextualIntro(V.PC, eventSlave, "DOM"),
+				contextualIntro(V.PC, eventSlave, true),
 			);
 			r.addToLast(`. Before you can ask why ${heA}'s bothering you with this, ${heA} continues, "A business opportunity may exist," and`);
 		}
diff --git a/src/events/RESS/review/nymphoWithAssistant.js b/src/events/RESS/review/nymphoWithAssistant.js
index 29c297816711ebbaf4eedadd00e8f10dd835d143..c7991ec65701926669c1bf9784b8024268129052 100644
--- a/src/events/RESS/review/nymphoWithAssistant.js
+++ b/src/events/RESS/review/nymphoWithAssistant.js
@@ -32,7 +32,7 @@ App.Events.RESSNymphoWithAssistant = class RESSNymphoWithAssistant extends App.E
 		const r = new SpacedTextAccumulator(node);
 		r.push(
 			`You pass one of the penthouse's several supply closets by chance, and are surprised to hear ${V.assistant.name}'s voice inside. Oddly, there seems to be more than one of ${himA}. You open the door on a whim, to find that almost every one of the dildo machines in the closet is currently fucking`,
-			contextualIntro(PC, eventSlave, "DOM")
+			contextualIntro(PC, eventSlave, true)
 		);
 		if (eventSlave.belly >= 500000) {
 			r.addToLast(`, atop ${his}`);
diff --git a/src/events/RESS/review/objectifyingVisit.js b/src/events/RESS/review/objectifyingVisit.js
index 20a657d7c84246150d115e6ce16c5e6e3985c007..5cacaea2fdac754be29f142978964d845052be04 100644
--- a/src/events/RESS/review/objectifyingVisit.js
+++ b/src/events/RESS/review/objectifyingVisit.js
@@ -27,7 +27,7 @@ App.Events.RESSObjectifyingVisit = class RESSObjectifyingVisit extends App.Event
 
 		let r = [];
 		r.push(`At appropriate intervals during the day ${V.assistant.name} directs an unoccupied slave to visit your office to ensure all your needs are currently being met. With such a vague task set before them, the slaves who enter your domain in such a way often find themselves used in a multitude of refreshingly novel ways. At this particular moment,`);
-		r.push(contextualIntro(V.PC, eventSlave, "DOM"));
+		r.push(contextualIntro(V.PC, eventSlave, true));
 		r.push(`comes through the door of your office and obediently`);
 		if (eventSlave.belly >= 300000) {
 			r.push(`settles ${himself}`);
diff --git a/src/events/RESS/review/orchiectomyPlease.js b/src/events/RESS/review/orchiectomyPlease.js
index 91ab69a18e2e5d04c6cc17beb2f938b3e7c54841..1f26b44541176266015505e82b3b3f1873039483 100644
--- a/src/events/RESS/review/orchiectomyPlease.js
+++ b/src/events/RESS/review/orchiectomyPlease.js
@@ -35,7 +35,7 @@ App.Events.RESSOrchiectomyPlease = class RESSOrchiectomyPlease extends App.Event
 		const r = new SpacedTextAccumulator(node);
 		r.push(
 			`Near the end of`,
-			contextualIntro(PC, eventSlave, "DOM")
+			contextualIntro(PC, eventSlave, true)
 		);
 		r.addToLast(`'s weekly inspection, it's obvious the ${SlaveTitle(eventSlave)} is nerving ${himself} to ask you something.`);
 		if (eventSlave.devotion > 20) {
diff --git a/src/events/RESS/review/rebelliousArrogant.js b/src/events/RESS/review/rebelliousArrogant.js
index fffe4018fed6c36e4b47d3e5d6116d570405c2d9..93421c1dcf5d3a6fd377ab7bd0fea1524bc8ba30 100644
--- a/src/events/RESS/review/rebelliousArrogant.js
+++ b/src/events/RESS/review/rebelliousArrogant.js
@@ -27,7 +27,7 @@ App.Events.RESSRebelliousArrogant = class RESSRebelliousArrogant extends App.Eve
 
 		App.Events.addParagraph(node, [
 			`You have a lot of work to do with`,
-			App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, "DOM"), "."),
+			App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, true), "."),
 			`${He} compounds the usual rebellious anger at being a slave with an apparently unshakeable conviction that ${he} is better than you. Oddly, ${he} seems to maintain the idea that enslaving other people is somehow inappropriate, and that having done so has lowered you morally. This morning, ${he} did not appear to start ${his} morning chores as previously ordered. ${He} sleeps on a bedroll: a brief investigation discloses that ${he} is still in it, and has pulled the blanket up over ${his} head. ${He} refuses to acknowledge your peremptory command to get up.`
 		]);
 
diff --git a/src/events/RESS/review/resistantGelding.js b/src/events/RESS/review/resistantGelding.js
index 1b4f336d8c2cc075585abb0c239bf84eb43228ae..dbc297a695d1717c47ccbb65f3a89eda3a132dfb 100644
--- a/src/events/RESS/review/resistantGelding.js
+++ b/src/events/RESS/review/resistantGelding.js
@@ -32,7 +32,7 @@ App.Events.RESSResistantGelding = class RESSResistantGelding extends App.Events.
 		let r = [];
 		r.push(
 			`You come across`,
-			contextualIntro(V.PC, eventSlave, "DOM"),
+			contextualIntro(V.PC, eventSlave, true),
 			`standing in the bathroom in front of the sink, with one leg up on the counter so ${he} can inspect ${his} genitalia.`
 		);
 		if (canSee(eventSlave)) {
diff --git a/src/events/RESS/review/resistantShower.js b/src/events/RESS/review/resistantShower.js
index 47f23217927fd1ea6a997ad97ecf0a7a4afdd2a3..02de7066ccb82fcf71cb2ac429d0784a519672fe 100644
--- a/src/events/RESS/review/resistantShower.js
+++ b/src/events/RESS/review/resistantShower.js
@@ -28,7 +28,7 @@ App.Events.RESSResistantShower = class RESSResistantShower extends App.Events.Ba
 
 		App.Events.addParagraph(node, [
 			`Though ${V.assistant.name} constantly monitors all your slaves, you keep an eye on the video feeds yourself. There's nothing like the personal, human touch. You notice one night that`,
-			contextualIntro(V.PC, eventSlave, "DOM"),
+			contextualIntro(V.PC, eventSlave, true),
 			`is crouched in the bottom of the shower. Sensing something amiss, you discreetly investigate, and find that ${he}'s crying quietly under the warm water.`
 		]);
 
diff --git a/src/events/RESS/review/servantMaid.js b/src/events/RESS/review/servantMaid.js
index b723592ee29f1e5f34eac1c6622d04d17c518e02..b90ef79e841eed739a5a1290ea6af759ee4fefa4 100644
--- a/src/events/RESS/review/servantMaid.js
+++ b/src/events/RESS/review/servantMaid.js
@@ -27,7 +27,7 @@ App.Events.RESSServantMaid = class RESSServantMaid extends App.Events.BaseEvent
 		let r = [];
 		App.Events.addParagraph(node, [
 			`As one of ${his} many duties while a servant in your penthouse,`,
-			contextualIntro(V.PC, eventSlave, "DOM"),
+			contextualIntro(V.PC, eventSlave, true),
 			`is scheduled to clean your office today. ${He} pauses in the doorway of your office for a moment, only entering once it becomes clear that you're not going to be using ${him} immediately.`
 		]);
 		r.push(`${He} begins ${his} cleaning dutifully, fluttering about your office in a flurry of scrubbing and dusting. ${His} almost frenzied sanitization of your office allows you ample opportunity to inspect ${him}, your eyes lingering on ${his} body as ${he} moves back and forth in front of you.`);
diff --git a/src/events/RESS/review/sexySuccubus.js b/src/events/RESS/review/sexySuccubus.js
index ff62888c43fadd4d1ec75a06f6b923663f8ac4c7..4c00cd83532877be30e9f1349b20dbb997e90493 100644
--- a/src/events/RESS/review/sexySuccubus.js
+++ b/src/events/RESS/review/sexySuccubus.js
@@ -34,7 +34,7 @@ App.Events.RESSSexySuccubus = class RESSSexySuccubus extends App.Events.BaseEven
 		let r = [];
 		r.push(
 			`You cross paths with`,
-			contextualIntro(PC, eventSlave, "DOM"),
+			contextualIntro(PC, eventSlave, true),
 			`as ${he} moves from the living area to ${eventSlave.assignment}, just starting ${his} day. ${He}'s full of energy, and ${his} succubus outfit is delightful. ${He}`
 		);
 		if (canSee(eventSlave)) {
diff --git a/src/events/RESS/review/shiftDoorframe.js b/src/events/RESS/review/shiftDoorframe.js
index 9cee6cea15898096ebd7826fbc425d3a987cdad9..4097407e27531fcd668cc4dba8b2359865505bcf 100644
--- a/src/events/RESS/review/shiftDoorframe.js
+++ b/src/events/RESS/review/shiftDoorframe.js
@@ -41,7 +41,7 @@ App.Events.RESSShiftDoorframe = class RESSShiftDoorframe extends App.Events.Base
 			r.push(`Your personal assistant, ${capFirstChar(V.assistant.name)}`);
 		}
 		r.push(`manages a schedule for them, constantly changing it up to keep the sluts from getting predictable. Just coming to ${his} shift is`);
-		r.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, "DOM"), "."));
+		r.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, true), "."));
 		App.Events.addParagraph(node, r);
 
 		r = [];
diff --git a/src/events/RESS/review/slaveDickHuge.js b/src/events/RESS/review/slaveDickHuge.js
index b911d3a76c0ee610afd089e7b4852d8efbb6c1c8..08b1f248e1f0752408b9fa3ae6038bbbaadab087 100644
--- a/src/events/RESS/review/slaveDickHuge.js
+++ b/src/events/RESS/review/slaveDickHuge.js
@@ -30,7 +30,7 @@ App.Events.RESSSlaveDickHuge = class RESSSlaveDickHuge extends App.Events.BaseEv
 		const r = new SpacedTextAccumulator(node);
 		r.push(
 			`The showers your slaves use are well vented and transparent walled so that you can see their occupants clearly, even from your desk. Working late at night, you see`,
-			contextualIntro(PC, eventSlave, "DOM"),
+			contextualIntro(PC, eventSlave, true),
 			`sitting hunched under the water in one of the showers, with ${his} back to you. You tell your desk to focus on ${him}, and you are rewarded with three different angles of ${eventSlave.slaveName} giving ${himself} a blowjob. ${He} has to bend over very hard`,
 		);
 		if (eventSlave.belly >= 5000) {
diff --git a/src/events/RESS/review/sleepingAmbivalent.js b/src/events/RESS/review/sleepingAmbivalent.js
index 27da144f7c0e19348fab9f1933bd50770dac9aab..638d9279bbaa5c98f1546a9c809c3385359c0283 100644
--- a/src/events/RESS/review/sleepingAmbivalent.js
+++ b/src/events/RESS/review/sleepingAmbivalent.js
@@ -32,7 +32,7 @@ App.Events.RESSSleepingAmbivalent = class RESSSleepingAmbivalent extends App.Eve
 
 		App.Events.addParagraph(node, [
 			`Passing through the slave dormitory at night, you run your eyes down the row of sleeping chattel. The light here is low, but it's not dark. Slaves need to be able to find the bathroom, slaves on late assignments need to find their beds, and those permitted to do so need to be able to select slaves for sex.`,
-			contextualIntro(V.PC, eventSlave, "DOM"),
+			contextualIntro(V.PC, eventSlave, true),
 			`catches your eye. The dormitory is kept at a pleasant temperature so that the slaves, who of course sleep nude, are comfortable on their bedrolls covered by a single sheet, or nothing at all. ${He} probably went to sleep with ${his} sheet pulled up to ${his} chin, which is normal behavior for slaves who aren't yet accepting of their status as compulsory sex objects, but ${he}'s shrugged it down. Half ${his} torso is bare.`
 		]);
 		let r = [];
diff --git a/src/events/RESS/review/soreAss.js b/src/events/RESS/review/soreAss.js
index 88e7fd87e9e2df598f35d94f48de0e174f57b1f4..ba7daa19a34fe109a8658f027ae59f97d0bcddee 100644
--- a/src/events/RESS/review/soreAss.js
+++ b/src/events/RESS/review/soreAss.js
@@ -27,7 +27,7 @@ App.Events.RESSSoreAss = class RESSSoreAss extends App.Events.BaseEvent {
 		let r = [];
 		r.push(
 			`One night, you see`,
-			contextualIntro(V.PC, eventSlave, "DOM")
+			contextualIntro(V.PC, eventSlave, true)
 		);
 
 		if (!hasAnyLegs(eventSlave)) {
diff --git a/src/events/RESS/review/spaBoobs.js b/src/events/RESS/review/spaBoobs.js
index 8eda0b852cfadbf72a9494eee09188693cc33627..b7285a47fa81a654b139828b070713f0f6b4e422 100644
--- a/src/events/RESS/review/spaBoobs.js
+++ b/src/events/RESS/review/spaBoobs.js
@@ -36,7 +36,7 @@ App.Events.RESSSpaBoobs = class RESSSpaBoobs extends App.Events.BaseEvent {
 		const r = new SpacedTextAccumulator(node);
 		r.push(
 			`The steamy air and hot water of the spa aren't only for slaves assigned to rest there full-time. When you head in to soak the day's stress away one evening, you see the back of`,
-			contextualIntro(PC, eventSlave, "DOM")
+			contextualIntro(PC, eventSlave, true)
 		);
 		r.addToLast(`'s head resting against the edge of the warm pool; ${he}'s clearly come in after work.`);
 		if (canHear(eventSlave)) {
diff --git a/src/events/RESS/review/subjugationBlues.js b/src/events/RESS/review/subjugationBlues.js
index 829fcc088b341cf947f8cc3ff7b58214aa2c5010..3afb41fe641e4cd76d27b7f48681dac5ad4d617f 100644
--- a/src/events/RESS/review/subjugationBlues.js
+++ b/src/events/RESS/review/subjugationBlues.js
@@ -46,7 +46,7 @@ App.Events.RESSSubjugationBlues = class RESSSubjugationBlues extends App.Events.
 		}
 		r.push(
 			`since you acquired`,
-			contextualIntro(PC, eventSlave, "DOM"),
+			contextualIntro(PC, eventSlave, true),
 			`as your slave. Since then ${he} has been nothing but trouble. ${He} has been ungrateful, rebellious and particularly hateful toward you since you acquired ${him}. ${He} often needs to be confined or forced to perform ${his} assignments, and has little regard for your power or authority. You bring ${him} in for inspection and ${he} whines and squirms in resistance as you feel up ${his} ${eventSlave.nipples} nipples,`
 		);
 		if (eventSlave.belly >= 5000) {
diff --git a/src/events/RESS/review/surgeryAddict.js b/src/events/RESS/review/surgeryAddict.js
index 3f2f55b59bafcdd13d40255b56a9fffc126f488d..efeffa14471500a9380eb087aa3d67abe0b00e0d 100644
--- a/src/events/RESS/review/surgeryAddict.js
+++ b/src/events/RESS/review/surgeryAddict.js
@@ -29,7 +29,7 @@ App.Events.RESSSurgeryAddict = class RESSSurgeryAddict extends App.Events.BaseEv
 
 		let r = [];
 		r.push(`Going about your day, you see`);
-		r.push(contextualIntro(V.PC, eventSlave, "DOM"));
+		r.push(contextualIntro(V.PC, eventSlave, true));
 		r.push(`sitting`);
 		if (hasAnyLegs(eventSlave)) {
 			if (hasBothLegs(eventSlave)) {
diff --git a/src/events/RESS/review/surprisingWakeup.js b/src/events/RESS/review/surprisingWakeup.js
index e06b4811d03f42b7fd704b357daa468c3a60b2fb..a2464faa5ba64df831f3a434bc8792545de0c2f6 100644
--- a/src/events/RESS/review/surprisingWakeup.js
+++ b/src/events/RESS/review/surprisingWakeup.js
@@ -35,7 +35,7 @@ App.Events.RESSSurprisingWakeup = class RESSSurprisingWakeup extends App.Events.
 		}
 		r.push(
 			`Your slaves know better than to disturb you, let alone take the initiative, but you are shocked when you pull back the sheets and reveal the smile of`,
-			contextualIntro(PC, eventSlave, "DOM")
+			contextualIntro(PC, eventSlave, true)
 		);
 		r.addToLast(`.`);
 		if (!canTalk(eventSlave)) {
diff --git a/src/events/RESS/review/tendonFall.js b/src/events/RESS/review/tendonFall.js
index cf1ab85041b0d77134f2783a1fb3b83463708364..3af1aa52667c7d79f2b8165dba9895c7eed79089 100644
--- a/src/events/RESS/review/tendonFall.js
+++ b/src/events/RESS/review/tendonFall.js
@@ -34,7 +34,7 @@ App.Events.RESSTendonFall = class RESSTendonFall extends App.Events.BaseEvent {
 		const r = new SpacedTextAccumulator(node);
 		r.push(
 			`There is a horrible crash from the bathroom. You rush in to see`,
-			contextualIntro(PC, eventSlave, "DOM"),
+			contextualIntro(PC, eventSlave, true),
 			`curled up helplessly in the bottom of the shower with the water playing over ${his}`,
 		);
 		if (eventSlave.belly >= 5000) {
diff --git a/src/events/RESS/review/tittymonsterInspection.js b/src/events/RESS/review/tittymonsterInspection.js
index b56e5bee23843ea367f7644460b2afceedeeec06..d6f90360ffb0fb90421fb673ca54e82bed722501 100644
--- a/src/events/RESS/review/tittymonsterInspection.js
+++ b/src/events/RESS/review/tittymonsterInspection.js
@@ -29,7 +29,7 @@ App.Events.RESSTittymonsterInspection = class RESSTittymonsterInspection extends
 		const r = new SpacedTextAccumulator(node);
 		r.push(
 			`You enter your office from other business a few minutes after the scheduled start of`,
-			contextualIntro(PC, eventSlave, "DOM")
+			contextualIntro(PC, eventSlave, true)
 		);
 		r.addToLast(`'s inspection. The`);
 		if (V.boobAccessibility === 1) {
diff --git a/src/events/RESS/review/torpedoSqueeze.js b/src/events/RESS/review/torpedoSqueeze.js
index ca9aeb8d55b141d981338352dab760b56df16a2e..71c8bfd4f206dea0ef83bd048034195e284d6337 100644
--- a/src/events/RESS/review/torpedoSqueeze.js
+++ b/src/events/RESS/review/torpedoSqueeze.js
@@ -37,7 +37,7 @@ App.Events.RESSTorpedoSqueeze = class RESSTorpedoSqueeze extends App.Events.Base
 		}
 		r.push(
 			`of them have just been awoken and showered and are hurrying to prettify themselves, this row of sinks presents one of the nicer sights in the arcology, a neatly spaced line of slave butts and a matching line of breasts reflected in the mirror.`,
-			contextualIntro(V.PC, eventSlave, "DOM"),
+			contextualIntro(V.PC, eventSlave, true),
 			`is especially impressive. ${His}`
 		);
 		if (eventSlave.boobs > 4000) {
diff --git a/src/events/RESS/review/unhappyVirgin.js b/src/events/RESS/review/unhappyVirgin.js
index 3620a6a01e09920b4e3bac1e23c50020195358a9..8463cf3e89e4f36329af33cf6aa4bee71217c001 100644
--- a/src/events/RESS/review/unhappyVirgin.js
+++ b/src/events/RESS/review/unhappyVirgin.js
@@ -32,7 +32,7 @@ App.Events.RESSUnhappyVirgin = class RESSUnhappyVirgin extends App.Events.BaseEv
 		const r = new SpacedTextAccumulator(node);
 		r.push(
 			`During a routine inspection,`,
-			contextualIntro(PC, eventSlave, "DOM"),
+			contextualIntro(PC, eventSlave, true),
 			`respectfully asks a question.`,
 		);
 		if (!canTalk(eventSlave)) {
diff --git a/src/events/RESS/review/usedWhore.js b/src/events/RESS/review/usedWhore.js
index ffeac58c71618cad6c2e00d0c712633686fe5499..7dac00c68761d422809d79b31d200dd0f4768ef6 100644
--- a/src/events/RESS/review/usedWhore.js
+++ b/src/events/RESS/review/usedWhore.js
@@ -33,7 +33,7 @@ App.Events.RESSUsedWhore = class RESSUsedWhore extends App.Events.BaseEvent {
 		let r = [];
 		r.push(
 			`At the end of a long day, you take a moment to watch the comings and goings of your arcology to decompress. While doing so, you notice someone who's clearly had a longer day than you.`,
-			contextualIntro(PC, eventSlave, "DOM"),
+			contextualIntro(PC, eventSlave, true),
 			`is`
 		);
 		if (eventSlave.belly >= 5000) {
diff --git a/src/events/RESS/review/vocalDisobedience.js b/src/events/RESS/review/vocalDisobedience.js
index d049af5b05941ed1990f6c529d3f18083c32ed61..bc7d055b79a6391d2ba7af49036ef62d106e9e4e 100644
--- a/src/events/RESS/review/vocalDisobedience.js
+++ b/src/events/RESS/review/vocalDisobedience.js
@@ -33,7 +33,7 @@ App.Events.RESSVocalDisobedience = class RESSVocalDisobedience extends App.Event
 		let r = [];
 		r.push(
 			`One morning, despite the fact that ${he} is not allowed to speak without being spoken to,`,
-			contextualIntro(V.PC, eventSlave, "DOM"),
+			contextualIntro(V.PC, eventSlave, true),
 		);
 		if (canSee(eventSlave)) {
 			r.push(`looks you directly in the eye`);
diff --git a/src/events/RESS/scrubbing.js b/src/events/RESS/scrubbing.js
index 001ae7124127fe01981481b337162ea19ec1cfa9..4abb0033e3e5c157a1df1d09dea182c9f1d7b6cc 100644
--- a/src/events/RESS/scrubbing.js
+++ b/src/events/RESS/scrubbing.js
@@ -28,7 +28,7 @@ App.Events.RESSScrubbing = class RESSScrubbing extends App.Events.BaseEvent {
 
 		let r = [];
 		r.push(`${V.arcologies[0].name} is well fitted with automated cleaning systems. However,`);
-		r.push(contextualIntro(V.PC, eventSlave, "DOM"));
+		r.push(contextualIntro(V.PC, eventSlave, true));
 		r.push(`is acting as a servant to your other slaves, so whenever ${he} has nothing else to do the cleaners are deactivated and ${he} is made to clean by hand. After all, there is no sense in leaving ${him} idle, when ${he} could be scrubbing floors.`);
 		App.Events.addParagraph(node, r);
 
diff --git a/src/events/RESS/slaveOnSlaveClit.js b/src/events/RESS/slaveOnSlaveClit.js
index 74087788aaffeea557fc64418b64830ea2204c2c..8d9cf10c4bede01384668ff60eb756b08a400b25 100644
--- a/src/events/RESS/slaveOnSlaveClit.js
+++ b/src/events/RESS/slaveOnSlaveClit.js
@@ -29,7 +29,7 @@ App.Events.RESSSlaveOnSlaveClit = class RESSSlaveOnSlaveClit extends App.Events.
 		let t = [];
 
 		t.push(`Through the glass walls of your office, you see`);
-		t.push(contextualIntro(V.PC, eventSlave, "DOM"));
+		t.push(contextualIntro(V.PC, eventSlave, true));
 		t.push(`fucking another slave. Odd, since ${he} doesn't have a penis: it seems the other slave likes ${him} enough to try to make clitoral penetration work. ${eventSlave.slaveName}'s ${V.seeRace === 1 ? eventSlave.race : ""} clit is certainly big enough to make it possible. Since you gave ${him} orders that permit ${him} to fuck your other slaves, ${he}'s been having as much sex with them as ${he} can. The other slave is enjoying ${himselfU} even though the clit in ${hisU} pussy is a little disappointing compared to a real cock.`);
 		App.Events.addParagraph(node, t);
 		t = [];
diff --git a/src/events/RESS/slaveOnSlaveDick.js b/src/events/RESS/slaveOnSlaveDick.js
index 9dc32225a15dd1452a926fb60783a44b14b6d7aa..5aaa1fce70a69c7751fbd63df9d343fee87150c4 100644
--- a/src/events/RESS/slaveOnSlaveDick.js
+++ b/src/events/RESS/slaveOnSlaveDick.js
@@ -31,7 +31,7 @@ App.Events.RESSSlaveOnSlaveDick = class RESSSlaveOnSlaveDick extends App.Events.
 		let t = [];
 
 		t.push(`Through the glass walls of your office, you see`);
-		t.push(contextualIntro(V.PC, eventSlave, "DOM"));
+		t.push(contextualIntro(V.PC, eventSlave, true));
 		t.push(`fucking another slave with ${his}`);
 		if (eventSlave.dick <= 2) {
 			t.push(`small penis.`);
diff --git a/src/events/RESS/solitaryDesperation.js b/src/events/RESS/solitaryDesperation.js
index ecd1f9d775357adb61ac8172c5afb6add2d21304..8ebf9dd9ac80d7da4b83e5b93877562652376faf 100644
--- a/src/events/RESS/solitaryDesperation.js
+++ b/src/events/RESS/solitaryDesperation.js
@@ -29,7 +29,7 @@ App.Events.RESSSolitaryDesperation = class RESSSolitaryDesperation extends App.E
 
 		let r = [];
 		r.push(`Sitting by ${himself} in solitary is`);
-		r.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, "DOM"), "."));
+		r.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, true), "."));
 		r.push(`${He}'s let out whenever required for a slave task, but unless ${he}'s serving, ${he} spends ${his} days in a featureless cell. It's clean and dry, but designed to totally deny any mental stimulation. Careful monitoring is necessary to prevent mental damage.`);
 		App.Events.addParagraph(node, r);
 
diff --git a/src/events/RESS/tooThinForCumDiet.js b/src/events/RESS/tooThinForCumDiet.js
index abb7577bb7b5c08636828a0095f6f35690c37c57..30d1700dfa68104c421d15f6663e8710042a02aa 100644
--- a/src/events/RESS/tooThinForCumDiet.js
+++ b/src/events/RESS/tooThinForCumDiet.js
@@ -39,7 +39,7 @@ App.Events.RESSTooThinForCumDiet = class RESSTooThinForCumDiet extends App.Event
 
 		let t = [];
 		t.push(`You are in your office, tending to the tedious business of requisition orders for your penthouse when you see`);
-		t.push(contextualIntro(V.PC, eventSlave, "DOM"));
+		t.push(contextualIntro(V.PC, eventSlave, true));
 		t.push(`appear outside your door. ${He} hovers outside in the hall, peeking ${his} head around the entry-way, looking very unsure about disturbing you. You stop what you're doing and call ${him} in. ${He}'s reticent at first, but then ${he} obediently steps into your office. ${He} is`);
 		if (App.Data.clothes.get(eventSlave.clothes).exposure >= 4) {
 			t.push(`forced to remain naked at all times, and the most striking thing about ${his} body is how`);
diff --git a/src/events/RETS/reAnalCowgirl.js b/src/events/RETS/reAnalCowgirl.js
index fa55035395244ff4828f669d30d0e5e7600641cf..2907ffa24dd5304e304070258f19efdbd4d2949e 100644
--- a/src/events/RETS/reAnalCowgirl.js
+++ b/src/events/RETS/reAnalCowgirl.js
@@ -57,13 +57,13 @@ App.Events.RETSAnalCowgirl = class RETSAnalCowgirl extends App.Events.BaseEvent
 
 
 		t.push(`As you approach your office returning from an unexpected but minor matter, you hear the unmistakable sounds of sexual congress. Reviewing your schedule as you cover the last few ${V.showInches === 2 ? "feet" : "meters"} you see that indeed,`);
-		t.push(contextualIntro(V.PC, eventSlave, "DOM"));
+		t.push(contextualIntro(V.PC, eventSlave, true));
 		t.push(`is due to be inspected. It seems likely that while waiting for your return, ${he} called a fellow slave who was passing your office in to keep ${him} company. And as you enter, you see that this is true.`);
 		App.Events.addParagraph(node, t);
 		t= [];
 
 		t.push(`${He}'s sitting on the end of the couch, though only ${his} legs, crotch, and ${hands} are immediately visible. This is because ${he} has`);
-		t.push(contextualIntro(eventSlave, subSlave, "DOM"));
+		t.push(contextualIntro(eventSlave, subSlave, true));
 		t.push(`on top of ${him}, impaled on`);
 		if (canP) {
 			t.push(`${his} cock.`);
diff --git a/src/events/RETS/reBoobCollision.js b/src/events/RETS/reBoobCollision.js
index 07b90c02e9d075d8089c50142aa48c024ece3167..126719dd31eb0bf90d13629d787378450a1da963 100644
--- a/src/events/RETS/reBoobCollision.js
+++ b/src/events/RETS/reBoobCollision.js
@@ -47,7 +47,7 @@ App.Events.RETSBoobCollision = class RETSBoobCollision extends App.Events.BaseEv
 		let t = [];
 
 		t.push(`You pass by the slave quarters during a busy time. Slaves are hurrying back and forth, rushing to bathe, eat, and get dressed. In a particular hurry is`);
-		t.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, "DOM"), ","));
+		t.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, true), ","));
 		t.push(`${his}`);
 		if (eventSlave.belly >= 10000) {
 			if (eventSlave.bellyPreg >= 8000) {
@@ -63,7 +63,7 @@ App.Events.RETSBoobCollision = class RETSBoobCollision extends App.Events.BaseEv
 			t.push(`huge boobs getting in the way`);
 		}
 		t.push(`as ${he} rushes around. Returning from the shower to the sleeping area, ${he} turns a corner and runs hard into`);
-		t.push(App.UI.DOM.combineNodes(contextualIntro(eventSlave, subSlave, "DOM"), "."));
+		t.push(App.UI.DOM.combineNodes(contextualIntro(eventSlave, subSlave, true), "."));
 		t.push(`Both slaves are nude, and the collision of their massive breasts makes an audibly painful smack. ${eventSlave.slaveName} has enough momentum that ${he} overbears the top-heavy ${subSlave.slaveName} entirely. The poor`);
 		if (subSlave.physicalAge > 30) {
 			t.push(woman2);
diff --git a/src/events/RETS/reCockmilkInterception.js b/src/events/RETS/reCockmilkInterception.js
index 35775d9ee82946827b6f40c187d2caaa16cdf6a3..3784bfbf69b084b646b9a2211577d2efb5650c3e 100644
--- a/src/events/RETS/reCockmilkInterception.js
+++ b/src/events/RETS/reCockmilkInterception.js
@@ -43,7 +43,7 @@ App.Events.RETSCockmilkInterception = class RETSCockmilkInterception extends App
 		App.Events.drawEventArt(node, [slave, subSlave], "no clothing");
 
 		let t = [];
-		t.push(`Early in the morning, you run across`, contextualIntro(V.PC, subSlave, "DOM"), `using one of the penthouse milking machines. This isn't surprising;`);
+		t.push(`Early in the morning, you run across`, contextualIntro(V.PC, subSlave, true), `using one of the penthouse milking machines. This isn't surprising;`);
 		if (subSlave.lactation === 0) {
 			t.push(`${he2}'s not lactating, but ${he2}'s a good semen producer and when ${he2} wakes up, ${he2}'s usually very ready to have one of the machines drain ${his2} balls for ${him2}.`);
 		} else {
@@ -123,7 +123,7 @@ App.Events.RETSCockmilkInterception = class RETSCockmilkInterception extends App
 		} else {
 			t.push(`skinny`);
 		}
-		t.push(`legs, and ${slave.skin} skin, it's`, App.UI.DOM.combineNodes(contextualIntro(subSlave, slave, "DOM"), "."), `${He}'s allowed access to cockmilk and ${he}'s getting it straight from the source. ${subSlave.slaveName}`);
+		t.push(`legs, and ${slave.skin} skin, it's`, App.UI.DOM.combineNodes(contextualIntro(subSlave, slave, true), "."), `${He}'s allowed access to cockmilk and ${he}'s getting it straight from the source. ${subSlave.slaveName}`);
 		if (subSlave.dick < 3) {
 			t.push(`has a`);
 			if (subSlave.dick < 2) {
diff --git a/src/events/RETS/reDatePlease.js b/src/events/RETS/reDatePlease.js
index de5918dec30939ae8a8dd3b924b617bc2518d4e6..7940ad98bea26a23917ccffd94839fdc0d061d8a 100644
--- a/src/events/RETS/reDatePlease.js
+++ b/src/events/RETS/reDatePlease.js
@@ -46,7 +46,7 @@ App.Events.RETSDatePlease = class RETSDatePlease extends App.Events.BaseEvent {
 		let t = [];
 
 		t.push(`After you complete your weekly inspection of`);
-		t.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, "DOM"), `, the ${SlaveTitle(eventSlave)} asks if ${he} can beg a favor. Absurd though it sounds, ${he} does exactly that, saying in ${his} ${pitch} voice, "${master}, may I ask a favor?"`));
+		t.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, true), `, the ${SlaveTitle(eventSlave)} asks if ${he} can beg a favor. Absurd though it sounds, ${he} does exactly that, saying in ${his} ${pitch} voice, "${master}, may I ask a favor?"`));
 		t.push(`You take a moment to look at ${him}, standing there in front of your desk. ${He}'s devoted to you, willing to please you for the sake of pleasing you, rather than to avoid punishment or to make ${his} own life easier. And ${he}'s very trusting, confident that ${he} can say such an odd thing without fear. So, you hear ${him} out.`);
 		App.Events.addParagraph(node, t);
 		t = [];
diff --git a/src/events/RETS/reFucktoyPrefersRelative.js b/src/events/RETS/reFucktoyPrefersRelative.js
index 2b85186b3ea059a5f2f47addb1a9c9f477792c89..ed936b9f354120122ce347bdf6bb5439185c619b 100644
--- a/src/events/RETS/reFucktoyPrefersRelative.js
+++ b/src/events/RETS/reFucktoyPrefersRelative.js
@@ -66,7 +66,7 @@ App.Events.RETSFucktoyPrefersRelative = class RETSFucktoyPrefersRelative extends
 		}
 
 		let t = [];
-		t.push(`You're enjoying`, contextualIntro(V.PC, fucktoy, "DOM"), `one evening in your office when`, contextualIntro(fucktoy, relative, "DOM"), `passes by stark naked (probably on ${his2} way to or from the shower). The glass walls of your office are designed to let you, and by extension everyone else inside, clearly see everything that happens in the rest of the Penthouse, as well as the comings and goings of all your slaves.`);
+		t.push(`You're enjoying`, contextualIntro(V.PC, fucktoy, true), `one evening in your office when`, contextualIntro(fucktoy, relative, true), `passes by stark naked (probably on ${his2} way to or from the shower). The glass walls of your office are designed to let you, and by extension everyone else inside, clearly see everything that happens in the rest of the Penthouse, as well as the comings and goings of all your slaves.`);
 		App.Events.addParagraph(node, t);
 
 		t = [];
diff --git a/src/events/RETS/reIfYouEnjoyIt.js b/src/events/RETS/reIfYouEnjoyIt.js
index 09c1e8bc3bcadcb03dba37b9525677c23a5cb1b9..9393761749a3fa6fa2cd2ce7ee6e14a2ae96f3b6 100644
--- a/src/events/RETS/reIfYouEnjoyIt.js
+++ b/src/events/RETS/reIfYouEnjoyIt.js
@@ -41,7 +41,7 @@ App.Events.RETSIfYouEnjoyIt = class RETSIfYouEnjoyIt extends App.Events.BaseEven
 		let t = [];
 
 		t.push(`The distinctive sounds of a sexual encounter in which exactly one of the participants is enjoying ${himself} are coming from the dormitory. This is by no means uncommon, but this particular nonconsensual assignation sounds interesting, so you stick your head in on your way by. You're treated to the sight of`);
-		t.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, "DOM"), `'s ${eventSlave.skin} back and`));
+		t.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, true), `'s ${eventSlave.skin} back and`));
 		if (eventSlave.butt > 4) {
 			t.push(`massive ass`);
 		} else if (eventSlave.butt > 2) {
diff --git a/src/events/RETS/reIncestuousNursing.js b/src/events/RETS/reIncestuousNursing.js
index 588ebde9b5f30e3ef02a517e23cebc9619b3a9fe..73e016153cb5575db5634877c575f3cffde424b6 100644
--- a/src/events/RETS/reIncestuousNursing.js
+++ b/src/events/RETS/reIncestuousNursing.js
@@ -56,7 +56,7 @@ App.Events.RETSIncestuousNursing = class RETSIncestuousNursing extends App.Event
 		} else {
 			t.push(`Near the end of`);
 		}
-		t.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, subSlave, "DOM"), `'s scheduled day, you come across ${him2} curled up in ${his2} ${mother}`));
+		t.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, subSlave, true), `'s scheduled day, you come across ${him2} curled up in ${his2} ${mother}`));
 		t.push(App.UI.DOM.combineNodes(App.UI.DOM.slaveDescriptionDialog(eventSlave), `'s lap, face buried in ${his} bosom. ${eventSlave.slaveName} is running a gentle hand`));
 		if (eventSlave.hLength > 5) {
 			t.push(`through ${subSlave.slaveName}'s hair,`);
diff --git a/src/events/RETS/reInterslaveBegging.js b/src/events/RETS/reInterslaveBegging.js
index d57ba9eaefa0c886d021dfbf8dfcbe6de8dc5732..dba77793b43dba0c3df0ac51b359866ea0f8db7b 100644
--- a/src/events/RETS/reInterslaveBegging.js
+++ b/src/events/RETS/reInterslaveBegging.js
@@ -57,7 +57,7 @@ App.Events.RETSInterslaveBegging = class RETSInterslaveBegging extends App.Event
 		let t = [];
 
 		t.push(`Passing the slave quarters late at night, you hear`);
-		t.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, "DOM"), "'s'"));
+		t.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, true), "'s'"));
 		if (eventSlave.voice > 2) {
 			t.push(`girly voice raised in`);
 		} else if (eventSlave.voice > 1) {
@@ -106,7 +106,7 @@ App.Events.RETSInterslaveBegging = class RETSInterslaveBegging extends App.Event
 			}
 		}
 		t.push(`voice. It's`);
-		t.push(App.UI.DOM.combineNodes(contextualIntro(eventSlave, subSlave, "DOM"), `.`));
+		t.push(App.UI.DOM.combineNodes(contextualIntro(eventSlave, subSlave, true), `.`));
 		if (subSlave.belly >= 120000 && eventSlave.dick > 3) {
 			if (subSlave.bellyPreg >= 2000) {
 				t.push(Spoken(subSlave, `"I'm way too pregnant; there's just no room for a big cock like yours inside me anymore. Plus you'll wake them up and they'll be kicking all night again."`));
diff --git a/src/events/RETS/reRepressedAnalVirgin.js b/src/events/RETS/reRepressedAnalVirgin.js
index e5cc3952b8dda9184259b46a5f08e128daf7a1e7..37fbda978431bdd2d448082e18f40828334f21b1 100644
--- a/src/events/RETS/reRepressedAnalVirgin.js
+++ b/src/events/RETS/reRepressedAnalVirgin.js
@@ -45,7 +45,7 @@ App.Events.RETSAnalRepressedVirgin = class RETSAnalRepressedVirgin extends App.E
 		App.Events.drawEventArt(node, [eventSlave, subSlave]);
 
 		let t = [];
-		t.push(contextualIntro(V.PC, subSlave, "DOM"));
+		t.push(contextualIntro(V.PC, subSlave, true));
 		t.push(`has been a very good ${girl2} this week, so when ${his2}`);
 		if (subSlave.anus > 2) {
 			t.push(`loose asshole`);
@@ -55,7 +55,7 @@ App.Events.RETSAnalRepressedVirgin = class RETSAnalRepressedVirgin extends App.E
 			t.push(`tight anus`);
 		}
 		t.push(`catches your eye near the start of a long inspection, you decide to be kind to ${him2} as you conduct the rest of your inspection with ${pDick ? "your cock" : "a strap-on"}.`);
-		t.push(contextualIntro(V.PC, eventSlave, "DOM"));
+		t.push(contextualIntro(V.PC, eventSlave, true));
 		t.push(`is next on the inspection schedule, and when ${he} comes into your office, it's to the`);
 		if (canSee(eventSlave)) {
 			t.push(`sight of`);
diff --git a/src/events/RETS/reSadisticDescription.js b/src/events/RETS/reSadisticDescription.js
index 345264d17d165507cdf23f447eb924ea1830d99d..1ae71109393a54404e5e48702049498a999ed1ea 100644
--- a/src/events/RETS/reSadisticDescription.js
+++ b/src/events/RETS/reSadisticDescription.js
@@ -57,7 +57,7 @@ App.Events.RETSSadisticDescription = class RETSSadisticDescription extends App.E
 		t.push(`You look in on your slaves as a group of them heads for bed.`);
 		t.push(App.UI.DOM.slaveDescriptionDialog(subSlave));
 		t.push(`finds`);
-		t.push(contextualIntro(subSlave, eventSlave, "DOM"));
+		t.push(contextualIntro(subSlave, eventSlave, true));
 		t.push(`blocking the way to ${hers2}. Poor ${subSlave.slaveName} cringes at ${eventSlave.slaveName}'s predatory expression, but the horny slave doesn't pounce at once. Instead, ${he} starts to walk around ${subSlave.slaveName}, whose ${subSlave.skin} body is nude for bed, groping and prodding ${him2} as ${subSlave.slaveName} shivers with fear. Finally ${eventSlave.slaveName} sidles up behind ${subSlave.slaveName},`);
 		if (eventSlave.belly >= 5000) {
 			t.push(`until ${his} bulging belly pushes into ${his2} back, before`);
diff --git a/src/events/RETS/reShowerForce.js b/src/events/RETS/reShowerForce.js
index 158d81dc69abafe8ba7e37cd515245754b4f9422..078dc374bda5fb7313c9504bae24b1276a5a55f6 100644
--- a/src/events/RETS/reShowerForce.js
+++ b/src/events/RETS/reShowerForce.js
@@ -84,8 +84,8 @@ App.Events.RETSShowerForce = class RETSShowerForce extends App.Events.BaseEvent
 			t.push(`soft`);
 		}
 		t.push(`${eventSlave.skin} ${hasBothLegs(eventSlave) ? "calves" : "calf"} behind ${subSlave.slaveName}'s.`);
-		t.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, "DOM"), "'s' face appears at"));
-		t.push(App.UI.DOM.combineNodes(contextualIntro(eventSlave, subSlave, "DOM"), `'s ear, and though you can't hear exactly what ${he} says, it's something along the lines of "Take it, you whiny little bitch." ${He}'s clearly got ${canPenetrate(eventSlave) ? `${his} cock` : `a couple of fingers`} up ${subSlave.slaveName}'s asshole.`));
+		t.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, true), "'s' face appears at"));
+		t.push(App.UI.DOM.combineNodes(contextualIntro(eventSlave, subSlave, true), `'s ear, and though you can't hear exactly what ${he} says, it's something along the lines of "Take it, you whiny little bitch." ${He}'s clearly got ${canPenetrate(eventSlave) ? `${his} cock` : `a couple of fingers`} up ${subSlave.slaveName}'s asshole.`));
 		App.Events.addParagraph(node, t);
 		t = [];
 		t.push(`Both slaves notice you at the same time. ${subSlave.slaveName}'s ${canSee(subSlave)? `${App.Desc.eyesColor(subSlave)} widen` : "face lights up"}, but ${his2} momentary look of hope is snuffed out when ${he2} remembers who you are. ${eventSlave.slaveName}, on the other hand, looks a little doubtful. The rules allow ${him} to fuck your other slaves, but ${he} isn't quite sure what the right thing to do is, since ${he} isn't the most dominant force in the showers any more.`);
diff --git a/src/events/RETS/reSiblingTussle.js b/src/events/RETS/reSiblingTussle.js
index d28711bb6f1f85eccef9a0a922cb95355cdf5fc4..2b1b3a5e101ceed5c8866afef9a76bccd8cf6a5c 100644
--- a/src/events/RETS/reSiblingTussle.js
+++ b/src/events/RETS/reSiblingTussle.js
@@ -49,7 +49,7 @@ App.Events.RETSSiblingTussle = class RETSSiblingTussle extends App.Events.BaseEv
 		t.push(`Like most siblings who haven't yet developed mature conflict-resolution skills,`);
 		t.push(App.UI.DOM.slaveDescriptionDialog(sib1));
 		t.push(`and`);
-		t.push(contextualIntro(sib1, sib2, "DOM"));
+		t.push(contextualIntro(sib1, sib2, true));
 		t.push(`sometimes get physical when they annoy one another. Today a tussle has broken out over some minor slight.`);
 		App.Events.addParagraph(node, t);
 
diff --git a/src/events/RETS/reSimpleAssault.js b/src/events/RETS/reSimpleAssault.js
index 8eac0042f455dd3159985c35ff3a1536d8e57bcf..75b45d97f9396f9678d36b98d335d1c89196cbd9 100644
--- a/src/events/RETS/reSimpleAssault.js
+++ b/src/events/RETS/reSimpleAssault.js
@@ -52,7 +52,7 @@ App.Events.RETSSimpleAssault = class RETSSimpleAssault extends App.Events.BaseEv
 		let t = [];
 
 		t.push(`You round a corner and almost trip over`);
-		t.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, domSlave, "DOM"), "."));
+		t.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, domSlave, true), "."));
 		t.push(`${He}'s on top of another slave, humping away; ${his}`);
 		if (domSlave.butt > 8) {
 			t.push(`monstrous, naked ass jiggles lewdly`);
@@ -66,7 +66,7 @@ App.Events.RETSSimpleAssault = class RETSSimpleAssault extends App.Events.BaseEv
 			t.push(`nice little butt flexes cutely`);
 		}
 		t.push(`as ${he} thrusts. You can't see much of the slave ${vaginal ? `lying on ${his2} back` : "face-down"} underneath ${domSlave.slaveName}, but you recognize ${him2} as`);
-		t.push(contextualIntro(domSlave, subSlave, "DOM"));
+		t.push(contextualIntro(domSlave, subSlave, true));
 		t.push(`by ${his2} sobbing. ${He2}'s struggling a little, but ${domSlave.slaveName} has ${him2} pinned to the floor by ${his2} ${hasBothArms(subSlave) ? "wrists" : "wrist"}, and ${domSlave.slaveName} is quickly raping the resistance out of the ${SlaveTitle(subSlave)}.`);
 		App.Events.addParagraph(node, t);
 		t = [];
diff --git a/src/events/RETS/reTasteTest.js b/src/events/RETS/reTasteTest.js
index c7b5ea1435ecaab727c607f6231e38ec7c56f861..63178e1537de1e8737f208671fa38d0b935142c2 100644
--- a/src/events/RETS/reTasteTest.js
+++ b/src/events/RETS/reTasteTest.js
@@ -49,7 +49,7 @@ App.Events.RETSTasteTest = class RETSTasteTest extends App.Events.BaseEvent {
 		let t = [];
 
 		t.push(`You look into the part of the kitchens used for slave feeding one morning during a quiet time, finding the area deserted except for`);
-		t.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, "DOM"), `. ${He}`));
+		t.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, true), `. ${He}`));
 		if (canSee(eventSlave)) {
 			t.push(`sees you enter`);
 		} else {
diff --git a/src/events/RETS/reTopExhaustion.js b/src/events/RETS/reTopExhaustion.js
index bcc9095f789876b2f3dea2b99688fe5b35f38c56..fcb804887ed0c1774b8cce1509b769489b6d0bfa 100644
--- a/src/events/RETS/reTopExhaustion.js
+++ b/src/events/RETS/reTopExhaustion.js
@@ -60,7 +60,7 @@ App.Events.RETSTopExhaustion = class RETSTopExhaustion extends App.Events.BaseEv
 		t.push(`As you stroll past the best part of the slave living area one evening, you hear a lewd slap, slap, slap coming from the room`);
 		t.push(App.UI.DOM.slaveDescriptionDialog(subSlave));
 		t.push(`and`);
-		t.push(contextualIntro(subSlave, domSlave, "DOM"));
+		t.push(contextualIntro(subSlave, domSlave, true));
 		t.push(`share. It's quite obvious what they're up to, but you look in anyway. ${subSlave.slaveName} has clearly had a long day, and is tired, but ${he}'s being a good ${subSlave.relationship > 4 ? `${wife}` : `lover`} and letting ${domSlave.slaveName} use ${his} body. ${subSlave.slaveName} is lying`);
 		if (subSlave.belly < 5000) {
 			t.push(`face-down on their bed, ${arms} crossed under ${his} head, looking quite relaxed. ${He} has a couple of pillows tucked under ${his} hips to raise them so that ${his} ${subSlave.relationship > 4 ? `${wife2}` : `sweetheart`} can fuck ${him}`);
diff --git a/src/events/scheduled/pitFightLethal.js b/src/events/scheduled/pitFightLethal.js
index b0ca132fa0eda2a67fe753394a579343205053b2..b678b0a4bd99c6967559b34d5ab49e1c445290e6 100644
--- a/src/events/scheduled/pitFightLethal.js
+++ b/src/events/scheduled/pitFightLethal.js
@@ -70,7 +70,7 @@ App.Facilities.Pit.lethalFight = function(fighters) {
 			App.UI.DOM.slaveDescriptionDialog(fighterOne), `and`,
 			animal
 				? anAnimal
-				: App.UI.DOM.combineNodes(contextualIntro(fighterOne, fighterTwo, "DOM"), "."));
+				: App.UI.DOM.combineNodes(contextualIntro(fighterOne, fighterTwo, true), "."));
 
 		if (V.pit.audience === "none") {
 			r.push(`You are alone above the pit, left to watch them kill and die in private.`);
diff --git a/src/events/scheduled/pitFightNonlethal.js b/src/events/scheduled/pitFightNonlethal.js
index ef0acdda56158c142b284c242a3fe363c174ab76..b63543361bc1b8b516bcfecb228e6cbd2b73bd64 100644
--- a/src/events/scheduled/pitFightNonlethal.js
+++ b/src/events/scheduled/pitFightNonlethal.js
@@ -83,7 +83,7 @@ App.Facilities.Pit.nonlethalFight = function(fighters) {
 			r.push(`This week ${anAnimal} is going to try to use ${fighterOne.slaveName}.`);
 		} else {
 			r.push(`This week's fight is between`, App.UI.DOM.slaveDescriptionDialog(fighterOne), `and`,
-				App.UI.DOM.combineNodes(contextualIntro(fighterOne, fighterTwo, "DOM"), "."));
+				App.UI.DOM.combineNodes(contextualIntro(fighterOne, fighterTwo, true), "."));
 		}
 
 		if (animal) {
diff --git a/src/js/relationshipChecks.js b/src/js/relationshipChecks.js
index e48adae77ccf32a201e947a205ecefcf68ebf717..6da883430ceb5fc18412462c8dffcaf75011892b 100644
--- a/src/js/relationshipChecks.js
+++ b/src/js/relationshipChecks.js
@@ -68,7 +68,7 @@ globalThis.PCrelationshipTerm = function(id) {
  * even though it's not going to have any mechanical impact on the scene.
  * @param {FC.HumanState} context
  * @param {FC.HumanState} actor
- * @param {boolean|'DOM'} [asLink] When true, instead of using the slave's first name, use their full name with a (SC Markup) link to the slave description dialog. when "DOM", generate a DOM link and return a DocumentFragment.
+ * @param {boolean} [asLink] When true, instead of using the slave's first name, use their full name with a link to the slave description dialog.
  * @param {boolean} [insertComma] When true, if a relationship is found, it will be separated from the actor's name by a comma ("her father, Dave" instead of "her father Dave")
  * @param {boolean} [capitalize] When true, capitalizes the first letter of the intro. Use if called at the beginning of a sentence.
  * @returns {string|DocumentFragment}
@@ -100,13 +100,12 @@ globalThis.contextualIntro = function(context, actor, asLink = false, insertComm
 		r += (insertComma || actor === V.PC) ? ", " : " ";
 	}
 
-	if (asLink === "DOM" && actorSlave) {
+	if (asLink && actorSlave) {
 		const frag = document.createDocumentFragment();
 		frag.append(r, App.UI.DOM.slaveDescriptionDialog(actorSlave));
 		return frag;
 	} else {
-		const namePart = (asLink && actorSlave) ? App.UI.slaveDescriptionDialog(actorSlave) : actor.slaveName;
-		r += actor === V.PC ? "you" : namePart;
+		r += actor === V.PC ? "you" : actor.slaveName;
 		return r;
 	}
 };