diff --git a/src/events/RECI/butthole.js b/src/events/RECI/butthole.js
index 6f4770d2ca2804c33222781ff95087bc75922da8..a1d8fe295ef7589033591bf957c8309f36137660 100644
--- a/src/events/RECI/butthole.js
+++ b/src/events/RECI/butthole.js
@@ -46,8 +46,8 @@ 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(App.UI.DOM.slaveDescriptionDialog(eventSlave));
-		t.push(`checking out ${his} own anus in the bathroom mirror`);
+		t.push(contextualIntro(V.PC, eventSlave, "DOM"));
+		t.push(`checking out ${his} own anus in the bathroom mirror.`);
 		App.Events.addParagraph(node, t);
 
 		t = [];
diff --git a/src/events/RECI/futa.js b/src/events/RECI/futa.js
index 45c40942af0569afaf329b9ebb1cfcd25ba098f6..303c8543daf55f30d743c1b958aacb9a6d96b9a2 100644
--- a/src/events/RECI/futa.js
+++ b/src/events/RECI/futa.js
@@ -38,10 +38,7 @@ App.Events.RECIFuta = class RECIFuta extends App.Events.BaseEvent {
 
 		let t = [];
 		t.push(`You're just finishing up`);
-		let possessiveName = new DocumentFragment;
-		possessiveName.append(App.UI.DOM.slaveDescriptionDialog(eventSlave));
-		possessiveName.append("'s");
-		t.push(possessiveName);
+		t.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, "DOM"), "'s"));
 		t.push(`weekly inspection. The`);
 		if (eventSlave.face >= -10) {
 			t.push(`pretty`);
diff --git a/src/events/RESS/comfortableSeat.js b/src/events/RESS/comfortableSeat.js
index 595938dbdda35c3da89a6fcc75aef0a299ac73d6..1f1b76e69be852ae064684c5a2f0818613a66867 100644
--- a/src/events/RESS/comfortableSeat.js
+++ b/src/events/RESS/comfortableSeat.js
@@ -58,7 +58,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(App.UI.DOM.slaveDescriptionDialog(eventSlave), "."));
+		t.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, "DOM"), "."));
 		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"}.`);
@@ -77,7 +77,7 @@ App.Events.RESSComfortableSeat = class RESSComfortableSeat extends App.Events.Ba
 		App.Events.addParagraph(node, t);
 		t = [];
 
-		t.push(`You're nude, a consequence of ${V.ConcubineID !== 0 && V.ConcubineID !== eventSlave.ID ? `recent activities involving ${S.Concubine.slaveName}` : "recent unrelated activities"}. ${PC.dick !== 0 ? "Your formidable dick is three quarters hard," : "Nude, that is, all except for the strap-on you were just using and haven't taken off yet,"} and ${eventSlave.slaveName} is pointing right at it. ${He} knows exactly what ${he}'s asking for and gives ${his}`);
+		t.push(`You're nude, a consequence of ${V.ConcubineID !== 0 && V.ConcubineID !== eventSlave.ID ? `recent activities involving ${contextualIntro(V.PC, S.Concubine)}` : "recent unrelated activities"}. ${PC.dick !== 0 ? "Your formidable dick is three quarters hard," : "Nude, that is, all except for the strap-on you were just using and haven't taken off yet,"} and ${eventSlave.slaveName} is pointing right at it. ${He} knows exactly what ${he}'s asking for and gives ${his}`);
 		if (eventSlave.hips > 0) {
 			t.push("broad");
 		} else if (eventSlave.hips > -1) {
diff --git a/src/events/RESS/frighteningDick.js b/src/events/RESS/frighteningDick.js
index d08c34bbdd287cef1d8149aaf9485750b7bf927a..8197156e5cd2ca7f65543bf2fb63bebece282bd2 100644
--- a/src/events/RESS/frighteningDick.js
+++ b/src/events/RESS/frighteningDick.js
@@ -41,7 +41,7 @@ App.Events.RESSFrighteningDick = class RESSFrighteningDick extends App.Events.Ba
 		let t = [];
 
 		t.push("In a fortuitous confluence of circumstances,");
-		t.push(App.UI.DOM.slaveDescriptionDialog(eventSlave));
+		t.push(contextualIntro(V.PC, eventSlave, "DOM"));
 		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 0c983b030d0432e8ab0e8f5a353b1ba2f4fb9d17..b6eb39d968e67365a9fdf2a0c6de9cc8400569af 100644
--- a/src/events/RESS/hotPC.js
+++ b/src/events/RESS/hotPC.js
@@ -50,7 +50,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(App.UI.DOM.slaveDescriptionDialog(eventSlave));
+		t.push(contextualIntro(V.PC, eventSlave, "DOM"));
 		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/lazyEvening.js b/src/events/RESS/lazyEvening.js
index add2da8f962bc980016d7e0e2711bc8f4e0dbcfa..a3e65a0e18129c37bbf62903f8b9c20f89789004 100644
--- a/src/events/RESS/lazyEvening.js
+++ b/src/events/RESS/lazyEvening.js
@@ -58,7 +58,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(App.UI.DOM.slaveDescriptionDialog(eventSlave));
+		t.push(contextualIntro(V.PC, eventSlave, "DOM"));
 		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/moistPussy.js b/src/events/RESS/moistPussy.js
index 9e8ce2e572b68bface7023ea3faeb5e3564b7f24..f2a7ed66f9a5ad9a9009f6d5d28cdd5e481a97e6 100644
--- a/src/events/RESS/moistPussy.js
+++ b/src/events/RESS/moistPussy.js
@@ -29,7 +29,7 @@ App.Events.RESSMoistPussy = class RESSMoistPussy extends App.Events.BaseEvent {
 
 		let t = [];
 		t.push("Just as you're about to give");
-		t.push(App.UI.DOM.slaveDescriptionDialog(eventSlave));
+		t.push(contextualIntro(V.PC, eventSlave, "DOM"));
 		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 f63755302d141bd5f7f830fd2523fe2debe755b8..c01b14a275ad5b0a711ed0d8e248cd770bd76c2f 100644
--- a/src/events/RESS/muscles.js
+++ b/src/events/RESS/muscles.js
@@ -28,7 +28,7 @@ App.Events.RESSMuscles = class RESSMuscles extends App.Events.BaseEvent {
 
 		let t = [];
 		t.push(`Early one morning,`);
-		t.push(App.UI.DOM.slaveDescriptionDialog(eventSlave));
+		t.push(contextualIntro(V.PC, eventSlave, "DOM"));
 		if (!canWalk(eventSlave)) {
 			t.push(`crawls`);
 		} else if (shoeHeelCategory(eventSlave) > 1) {
diff --git a/src/events/RESS/passingDeclaration.js b/src/events/RESS/passingDeclaration.js
index ed4cc1ba9c6835ec7b5f1ec078f251c630125baf..a479261d02da33d6f9f82c25f5e86c08b89fe479 100644
--- a/src/events/RESS/passingDeclaration.js
+++ b/src/events/RESS/passingDeclaration.js
@@ -41,7 +41,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(App.UI.DOM.slaveDescriptionDialog(eventSlave));
+		t.push(contextualIntro(V.PC, eventSlave, "DOM"));
 		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/retchingCum.js b/src/events/RESS/retchingCum.js
index aa25dd3abd5c2c8c06b10c364a793bfc23a3060d..98a197e8170cb7f8543b3be7f882a6b7639aedc9 100644
--- a/src/events/RESS/retchingCum.js
+++ b/src/events/RESS/retchingCum.js
@@ -29,8 +29,9 @@ App.Events.RESSRetchingCum = class RESSRetchingCum extends App.Events.BaseEvent
 		App.Events.drawEventArt(node, eventSlave, "no clothing");
 
 		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.`);
-		t.push(App.UI.DOM.slaveDescriptionDialog(eventSlave));
+		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(`catches your attention.`);
 		if (V.cockFeeder === 1) {
 			t.push(`You see as ${he} kneels in front of the feeder`);
 			t.push(canSee(eventSlave) ? `phallus, staring at it with disgust plainly written on ${his} face.` : `phallus with a look of disgust on ${his} face.`);
diff --git a/src/events/RESS/slaveOnSlaveClit.js b/src/events/RESS/slaveOnSlaveClit.js
index 07bf828365f3037ce6e1a321579b67ec1d794639..c16d42811f97a8c73248360b62a8eafed1034df2 100644
--- a/src/events/RESS/slaveOnSlaveClit.js
+++ b/src/events/RESS/slaveOnSlaveClit.js
@@ -32,8 +32,8 @@ App.Events.RESSSlaveOnSlaveClit = class RESSSlaveOnSlaveClit extends App.Events.
 
 		let t = [];
 
-		t.push(`Through the glass walls of your office, you see `);
-		t.push(App.UI.DOM.slaveDescriptionDialog(eventSlave));
+		t.push(`Through the glass walls of your office, you see`);
+		t.push(contextualIntro(V.PC, eventSlave, "DOM"));
 		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 d15553e8557d2ddcd6397184efcf61488fea9f1f..cef204fae518732a6acf1e12af889368001bc0ad 100644
--- a/src/events/RESS/slaveOnSlaveDick.js
+++ b/src/events/RESS/slaveOnSlaveDick.js
@@ -35,7 +35,7 @@ App.Events.RESSSlaveOnSlaveDick = class RESSSlaveOnSlaveDick extends App.Events.
 		let t = [];
 
 		t.push(`Through the glass walls of your office, you see`);
-		t.push(App.UI.DOM.slaveDescriptionDialog(eventSlave));
+		t.push(contextualIntro(V.PC, eventSlave, "DOM"));
 		t.push(`fucking another slave with ${his}`);
 		if (eventSlave.dick <= 2) {
 			t.push(`small penis.`);
diff --git a/src/events/RESS/tooThinForCumDiet.js b/src/events/RESS/tooThinForCumDiet.js
index 2a0dd087e7072def727f8efde9585977db733264..84de69d9e16fe4c5b2918b79145a1f98edf90d27 100644
--- a/src/events/RESS/tooThinForCumDiet.js
+++ b/src/events/RESS/tooThinForCumDiet.js
@@ -40,7 +40,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(App.UI.DOM.slaveDescriptionDialog(eventSlave));
+		t.push(contextualIntro(V.PC, eventSlave, "DOM"));
 		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 (eventSlave.clothes === "no clothing") {
 			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/reInterslaveBegging.js b/src/events/RETS/reInterslaveBegging.js
index efe243b8fbd7eeb43b3a5cc92d9d7be251997512..93ca3472f9087225de4e9b38bddbccdad2978795 100644
--- a/src/events/RETS/reInterslaveBegging.js
+++ b/src/events/RETS/reInterslaveBegging.js
@@ -56,7 +56,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(App.UI.DOM.slaveDescriptionDialog(eventSlave), "'s'"));
+		t.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, eventSlave, "DOM"), "'s'"));
 		if (eventSlave.voice > 2) {
 			t.push(`girly voice raised in`);
 		} else if (eventSlave.voice > 1) {
@@ -104,7 +104,8 @@ App.Events.RETSInterslaveBegging = class RETSInterslaveBegging extends App.Event
 				t.push(`a harsh`);
 			}
 		}
-		t.push(`voice. It's ${contextualIntro(eventSlave, subSlave)}.`);
+		t.push(`voice. It's`);
+		t.push(App.UI.DOM.combineNodes(contextualIntro(eventSlave, subSlave, "DOM"), `.`));
 		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/reSimpleAssault.js b/src/events/RETS/reSimpleAssault.js
index 4e6a7339575b7da09425d1e08ee301943efc62c4..f8cc32856cc839cd4d1654e9b7ab71e5b88e1d64 100644
--- a/src/events/RETS/reSimpleAssault.js
+++ b/src/events/RETS/reSimpleAssault.js
@@ -56,7 +56,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(App.UI.DOM.slaveDescriptionDialog(domSlave), "."));
+		t.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, domSlave, "DOM"), "."));
 		t.push(`${He}'s on top of another slave, humping away; ${his}`);
 		if (domSlave.butt > 8) {
 			t.push(`monstrous, naked ass jiggles lewdly`);