diff --git a/src/events/RE/incest/REresistantmotherdaughter.js b/src/events/RE/incest/REresistantmotherdaughter.js
new file mode 100644
index 0000000000000000000000000000000000000000..241122673fe79f219541c6ccf55ae9e0679daa3b
--- /dev/null
+++ b/src/events/RE/incest/REresistantmotherdaughter.js
@@ -0,0 +1,125 @@
+App.Events.REResistantMotherDaughter = class REResistantMotherDaughter extends App.Events.BaseEvent {
+	eventPrerequisites() {
+		return [
+			() => V.seeIncest === 1
+		];
+	}
+
+	actorPrerequisites() {
+		return [
+			[
+				(s) => s.daughters > 0,
+				(s) => s.devotion > 50,
+				(s) => s.anus !== 0,
+				canWalk,
+			],
+			[
+				s => s.mother === this.actors[0],
+				(s) => s.devotion < 10,
+				(s) => s.anus !== 0,
+				canWalk
+			]
+		];
+	}
+
+	execute(node) {
+		V.nextButton = "Continue";
+		V.nextLink = "RIE Eligibility Check";
+		let r = [];
+		const mommy = getSlave(this.actors[0]);
+		const daughter = getSlave(this.actors[1]);
+		const {
+			he, him, his, mother
+		} = getPronouns(mommy);
+
+		const {
+			his2, daughter2
+		} = getPronouns(daughter).appendSuffix("2");
+
+		App.Events.drawEventArt(node, [mommy, daughter], "no clothing");
+
+		r.push(`${mommy.slaveName} and ${his} ${daughter2} are both having trouble getting acclimated to your ownership, with their obedience suffering as a result. Though neither of them have done anything particular egregious lately, their combined list of minor transgressions is reaching a point where rendering punishment on the two would not be seen as unfair. By happenstance they come before you for inspection one after the other. Though they certainly`);
+		if (canSee(mommy) && canSee(daughter)) {
+			r.push(`see each other naked frequently around`);
+		} else {
+			r.push(`are frequently naked around each other in`);
+		}
+		r.push(`the penthouse, neither seems particularly comfortable around the other when nudity is involved. While you finish ${mommy.slaveName}'s inspection, ${his} ${daughter2} fidgets uneasily even while trying to mimic the posture and appearance of an obedient slave. It occurs to you that the current situation presents an opportunity to do <i>something</i> about this resistant ${mother}-${daughter2} pair.`);
+		App.Events.addParagraph(node, r);
+
+		const choices = [];
+		choices.push(new App.Events.Result(`Spend the evening gently acclimating them to your ownership`, gently));
+		choices.push(new App.Events.Result(`Make an example of the ${mother}`, exampleMommy));
+		App.Events.addResponses(node, choices);
+
+		function gently() {
+			const frag = new DocumentFragment();
+			let r = [];
+			r.push(`Though neither of the two vehemently protests your decision to have them both join you in bed, furtive uneasy glances are exchanged between the two. Since they're already naked, they clamber onto your bed before you and reluctantly kneel facing each other, leaving enough space between them for you${(canSee(mommy) && canSee(daughter)) ? "and for them to avert their eyes to avoid the other's nakedness" : ""}. They clearly assume you would start by using one of them, so they're quite taken aback when you remain standing at the edge of the bed and suggest that ${mommy.slaveName} play with ${his} ${daughter2}. ${daughter.slaveName} awkwardly flounders a little as ${his2} ${mother}'s`);
+			if (hasBothArms(mommy)) {
+				r.push(`hands roam`);
+			} else if (hasAnyArms(mommy)) {
+				r.push(`hand roams`);
+			}
+			r.push(`about ${his2} body, but does not reel back from the intimate touching. In time you instruct ${daughter.slaveName} to pleasure ${his2} ${mother}, but still decline to join the incestuous union unfolding on your sheets. You extend the foreplay for hours, bringing both ${mother} and ${daughter2} to such a state of naked arousal that they begin grinding against each other uninhibitedly. They are both so desperate for release that they do not object when you finally decide to join them, instead eagerly moving to include you in their coupling. What started with ${daughter.slaveName} awkwardly kneeling unmoving while ${his2} ${mother} sucked ${his2} nipples ends with ${daughter.slaveName}`);
+			if (hasAllLimbs(daughter)) {
+				r.push(`on all fours`);
+			} else {
+				r.push(`bent over`);
+			}
+			r.push(`getting fucked by you while orally pleasuring ${mommy.slaveName}. You gaze over at ${mommy.slaveName} and ${he} moans and licks ${his} lips enticingly back at you as ${daughter.slaveName} moans into ${his} fuckhole.`);
+			r.push(`<span class="trust inc">They have both become more trusting of you.</span>`);
+
+			mommy.trust += 4;
+			daughter.trust += 4;
+			seX(mommy, "oral", daughter, "oral");
+
+			if (canDoAnal(mommy)) {
+				actX(mommy, "anal");
+			} else if (canDoVaginal(mommy)) {
+				actX(mommy, "vaginal");
+			}
+
+			if (canDoAnal(daughter)) {
+				actX(daughter, "anal");
+			} else if (canDoVaginal(daughter)) {
+				actX(daughter, "vaginal");
+			}
+
+			App.Events.addParagraph(frag, r);
+			return frag;
+		}
+
+		function exampleMommy() {
+			const frag = new DocumentFragment();
+			let r = [];
+			r.push(`You give them orders of devastating simplicity: You are going to assrape ${mommy.slaveName} and if ${his} ${daughter2} offers even the most token of resistance, you'll punish ${mommy.slaveName}. They're stunned, but you shake them out of their shock by grabbing ${mommy.slaveName} by the arm${(V.PC.dick === 0) ? ", donning a strap-on" : ""} and shoving ${him} over your desk. ${daughter.slaveName} flinches visibly as you enter ${his2} ${mother}'s ass in one brutal stroke, for which you stain ${his2} ${mother}'s asscheeks a rosy red with a torrent of harsh spanks. ${mommy.slaveName} takes the rough anal pounding with only quiet sobbing and the occasional whimper of pain, but ${his} ${daughter2} can't bear to`);
+			if (canSee(daughter)) {
+				r.push(`see`);
+			} else if (canHear(daughter)) {
+				r.push(`hear`);
+			} else {
+				r.push(`have`);
+			}
+			r.push(`${mommy.slaveName} in such duress and breaks ${his2} short-lived silence to beg for mercy. When you step away from ${mommy.slaveName}, ${daughter.slaveName} lets out a sigh of relief, but ${his2} expression soon turns to horror and revulsion when you return to mount ${his2} ${mother} with a lash in hand.`);
+			App.Events.addParagraph(frag, r);
+			r = [];
+			r.push(`When you eventually finish your merciless assrape of ${mommy.slaveName}, ${his} body is covered in bruises, marks, and handprints. A testament to ${daughter.slaveName}'s inability to keep ${his2} silence as you brutalized ${his2} ${mother}. You leave your office wordlessly to attend to other matters, while behind you ${daughter.slaveName} gazes`);
+			if (canSee(daughter)) {
+				r.push(`forlornly`);
+			} else {
+				r.push(`blindly`);
+			}
+			r.push(`at the gibbering mess you have reduced ${his2} ${mother} to. Your severe punishment of ${his2} ${mother} has encouraged ${daughter.slaveName} to <span class="trust dec">fear you.</span> ${mommy.slaveName} has been fucked into <span class="devotion inc">submission</span> but your savage treatment has caused ${him} to <span class="flaw gain">hate buttsex.</span>`);
+
+			daughter.trust -= 10;
+			mommy.devotion += 4;
+
+			seX(mommy, "anal", V.PC, "penetrative");
+			mommy.sexualFlaw = "hates anal";
+
+			App.Events.addParagraph(frag, r);
+			return frag;
+		}
+	}
+};
diff --git a/src/events/RE/incest/reDevotedMotherDaughter.js b/src/events/RE/incest/reDevotedMotherDaughter.js
new file mode 100644
index 0000000000000000000000000000000000000000..6ae79dfc76f407b0c5b4928865a7827d3b35d887
--- /dev/null
+++ b/src/events/RE/incest/reDevotedMotherDaughter.js
@@ -0,0 +1,86 @@
+App.Events.REDevotedMotherDaughter = class REDevotedMotherDaughter extends App.Events.BaseEvent {
+	eventPrerequisites() {
+		return [
+			() => V.seeIncest === 1
+		];
+	}
+
+	actorPrerequisites() {
+		return [
+			[
+				(s) => s.daughters > 0,
+				(s) => s.devotion > 50,
+				(s) => s.anus !== 0,
+				canWalk,
+			],
+			[
+				s => s.mother === this.actors[0],
+				(s) => s.devotion > 50,
+				(s) => s.anus !== 0,
+				canWalk
+			]
+		];
+	}
+
+	execute(node) {
+		V.nextButton = "Continue";
+		V.nextLink = "RIE Eligibility Check";
+		let r = [];
+		const mommy = getSlave(this.actors[0]);
+		const daughter = getSlave(this.actors[1]);
+		const {
+			he, his, mother
+		} = getPronouns(mommy);
+
+		const {
+			he2, his2, daughter2
+		} = getPronouns(daughter).appendSuffix("2");
+
+		App.Events.drawEventArt(node, [mommy, daughter], "no clothing");
+
+		r.push(`${mommy.slaveName} and ${his} ${daughter2} ${daughter.slaveName} are both good slaves, devoted and obedient. They'd probably do anything you order them to do. By happenstance they come before you for inspection one after the other. They certainly see each other stark naked frequently enough. As you finish ${mommy.slaveName}'s inspection, ${his} ${daughter2} waits patiently for ${his2} turn. It occurs to you that they probably would do <i>anything</i> you order them to do, and that they're so acclimated to sexual slavery that they might well enjoy it.`);
+
+		App.Events.addParagraph(node, r);
+
+		const choices = [];
+		choices.push(new App.Events.Result(`Spend the night sharing your bed with them, and each of them with the other`, share));
+		choices.push(new App.Events.Result(`Get them started and then keep them at it in your office`, started));
+		App.Events.addResponses(node, choices);
+
+		function share() {
+			const frag = new DocumentFragment();
+			let r = [];
+			r.push(`Neither of them bat an eye when you announce you're turning in early and that they'll be joining you. Since they're already naked, they get into your big soft bed before you and lie facing each other, with enough room in between them for you to take a central position. They clearly assume you'll start with one of them on each side of you, so they're quite surprised when you slide in behind ${mommy.slaveName} instead. ${daughter.slaveName} snuggles up to ${his2} ${mother} happily enough, however. You extend the foreplay for hours, eventually bringing both of them to such a state of naked arousal that they begin grinding against each other as much as they do you. They get the idea, and things turn into a sort of unspoken mutual one-upmanship between them. What starts with ${daughter.slaveName} clearly feeling very daring as ${he2} sucks ${his2} ${mother}'s nipple ends with ${mommy.slaveName} lying on ${his} back getting fucked by you while ${he} orally pleasures ${daughter.slaveName}. You're face to face with ${daughter.slaveName} and ${he2} groans happily into your mouth as ${mommy.slaveName} moans into ${his2} fuckhole. <span class="trust inc">They have both become more trusting of you.</span>`);
+
+			mommy.trust += 4;
+			daughter.trust += 4;
+			seX(mommy, "oral", daughter, "oral");
+
+			if (canDoAnal(mommy)) {
+				actX(mommy, "anal");
+			} else if (canDoVaginal(mommy)) {
+				actX(mommy, "vaginal");
+			}
+
+			if (canDoAnal(daughter)) {
+				actX(daughter, "anal");
+			} else if (canDoVaginal(daughter)) {
+				actX(daughter, "vaginal");
+			}
+			App.Events.addParagraph(frag, r);
+			return frag;
+		}
+
+		function started() {
+			const frag = new DocumentFragment();
+			let r = [];
+			r.push(`You give them orders of devastating simplicity: they are to repair to the couch in your office and are to take turns getting each other off until such time as you tell them otherwise. They're momentarily stunned, but ${mommy.slaveName} takes the lead and draws ${his} ${daughter2} over to the couch${(hasAnyArms(mommy) && hasAnyArms(daughter)) ? "by the hand" : ""}. They're both accomplished sex slaves and obey orders well, so they are quite successful in the little game, if a bit mechanical. For the rest of the day, interviewees come and go and are treated to the sight of the two of them having subdued sex on the couch. Showing off one's slaves for business interlocutors is a common Free Cities practice, but more than one perceptive person figures out what the resemblance between the two slaves and the age gap between them really means. Of course, all those who figure it out are impressed by your sheer decadence.`);
+			r.push(`<span class="reputation inc">Your reputation has increased considerably.</span>`);
+			repX(2500, "event", mommy);
+			repX(2500, "event", daughter);
+			seX(mommy, "oral", daughter, "oral", 5);
+			App.Events.addParagraph(frag, r);
+			return frag;
+		}
+	}
+};
diff --git a/src/events/RE/incest/reSiblingRevenge.js b/src/events/RE/incest/reSiblingRevenge.js
new file mode 100644
index 0000000000000000000000000000000000000000..83fcbaa203062fd643817a59da454375d131c75e
--- /dev/null
+++ b/src/events/RE/incest/reSiblingRevenge.js
@@ -0,0 +1,151 @@
+App.Events.RESiblingRevenge = class RESiblingRevenge extends App.Events.BaseEvent {
+	eventPrerequisites() {
+		return [
+			() => V.seeIncest === 1
+		];
+	}
+
+	actorPrerequisites() {
+		return [
+			[
+				(s) => s.sisters > 0,
+				(s) => s.origin === "$He was sold into slavery by $his older sister.",
+				canPenetrate,
+			],
+			[
+				(s) => s.anus === 0,
+				(s) => getSlave(this.actors[0]).devotion > (s.devotion + 20),
+				(s) => areSisters(getSlave(this.actors[0]), s) > 0,
+			]
+		];
+	}
+
+	execute(node) {
+		V.nextButton = "Continue";
+		V.nextLink = "RIE Eligibility Check";
+		let r = [];
+		const youngerSis = getSlave(this.actors[0]);
+		const olderSis = getSlave(this.actors[1]);
+		const {
+			He, His,
+			he, him, his, himself,
+		} = getPronouns(youngerSis);
+		const {
+			title: Master
+		} = getEnunciation(youngerSis);
+
+		const {
+			his2, him2, sister2, girl2
+		} = getPronouns(olderSis).appendSuffix("2");
+
+		App.Events.drawEventArt(node, [youngerSis, olderSis], "no clothing");
+
+		r.push(
+			`${youngerSis.slaveName}, whose older ${sister2} tried to sell ${him} to you, is up for inspection. As usual, you pepper your inspection with questions about ${his} duties, ${his} feelings about ${his} physical condition, and experiences. More information about one's property is never a bad thing. When the inspection reaches ${youngerSis.slaveName}'s asshole, you ask whether ${he} enjoyed having ${his} older ${sister2} sell ${his} butt.`,
+			Spoken(youngerSis, `"No, ${Master},"`),
+			`${he} says.`
+		);
+		App.Events.addParagraph(node, r);
+
+		const choices = [];
+		choices.push(new App.Events.Result(`Turnabout is fair play`, turn));
+		choices.push(new App.Events.Result(`Let ${him} have ${his} revenge, but remind ${him} of ${his} place`, place));
+		App.Events.addResponses(node, choices);
+
+		function turn() {
+			const frag = new DocumentFragment();
+			let r = [];
+			r.push(`${olderSis.slaveName} is brought in. You gag ${him2}, throw the resisting bitch down on the couch, and hold ${him2} there. Then, you peremptorily order the wide-eyed ${youngerSis.slaveName} to`);
+			if (canDoAnal(olderSis)) {
+				r.push(`sodomize`);
+			} else {
+				r.push(`facefuck`);
+			}
+			r.push(`${his} ${sister2}. ${He} stares open mouthed for a moment, but comes over obediently. ${His} face is a strange mix of vengeful eagerness, revulsion, and even a little lust. ${He} shoves ${himself} into the frantically struggling ${girl2}'s`);
+			if (canDoAnal(olderSis)) {
+				r.push(`butt`);
+			} else {
+				r.push(`jaw`);
+			}
+			r.push(`without mercy. ${His} cock is`);
+			if (youngerSis.dick < 3) {
+				r.push(`pathetically small,`);
+			} else if (youngerSis.dick < 5) {
+				r.push(`nothing out of the ordinary,`);
+			} else if (youngerSis.dick < 7) {
+				r.push(`admittedly nothing to scoff at,`);
+			} else {
+				r.push(`a source of great envy amongst your slaves,`);
+			}
+			r.push(`but by how ${olderSis.slaveName} reacts it might as well be a baseball bat. ${youngerSis.slaveName} rarely gets to penetrate anything, mostly serving as an oral slut${canDoAnal(youngerSis) ? "and anal cocksleeve" : ""}, so ${he} comes in no time and takes a turn holding ${olderSis.slaveName} down${canDoAnal(olderSis) ? `so you can claim sloppy seconds on ${his2} spasming butthole` : ""}.`);
+			r.push(`<span class="devotion inc">${youngerSis.slaveName} has become more devoted to you,</span> while ${olderSis.slaveName} <span class="trust inc">hates you</span> and has become <span class="trust dec">more afraid of you,</span>${canDoAnal(olderSis) ? `and <span class="virginity loss">${olderSis.slaveName} has lost ${his2} anal virginity.</span>` : `.`}`);
+			youngerSis.devotion += 4;
+
+			olderSis.trust -= 5;
+			olderSis.devotion -= 4;
+			if (canDoAnal(olderSis)) {
+				olderSis.anus = 1;
+				seX(youngerSis, "penetrative", olderSis, "anal");
+			} else {
+				seX(youngerSis, "penetrative", olderSis, "oral");
+			}
+			App.Events.addParagraph(frag, r);
+			return frag;
+		}
+
+		function place() {
+			const frag = new DocumentFragment();
+			let r = [];
+			r.push(`${olderSis.slaveName} is brought in. You gag ${him2}, throw the resisting bitch down on the couch, and hold ${him2} there. Then, you peremptorily order the wide-eyed ${youngerSis.slaveName} to put ${his} cock`);
+			if (canDoAnal(olderSis)) {
+				r.push(`up ${his} ${sister2}'s ass,`);
+			} else {
+				r.push(`in ${his} ${sister2}'s mouth,`);
+			}
+			r.push(`and then hold it there. ${He} stares open mouthed for a moment, but comes over obediently. ${His} face is a strange mix of vengeful eagerness, revulsion, and even a little lust. ${He} shoves ${himself} into the frantically struggling ${girl2}'s`);
+			if (canDoAnal(olderSis)) {
+				r.push(`butt`);
+			} else {
+				r.push(`jaw`);
+			}
+			r.push(`without mercy. ${His} cock is`);
+			if (youngerSis.dick < 3) {
+				r.push(`pathetically small,`);
+			} else if (youngerSis.dick < 5) {
+				r.push(`nothing out of the ordinary,`);
+			} else if (youngerSis.dick < 7) {
+				r.push(`admittedly nothing to scoff at,`);
+			} else {
+				r.push(`a source of great envy amongst your slaves,`);
+			}
+			r.push(`but by how ${olderSis.slaveName} reacts it might as well be a baseball bat. ${youngerSis.slaveName} obeys your orders and holds still after inserting ${himself}. You`);
+			if (V.PC.dick === 0) {
+				r.push(`don a strap-on,`);
+			}
+			r.push(`move around`);
+			if (canDoAnal(youngerSis)) {
+				r.push(`behind ${him} and start ass`);
+			} else {
+				r.push(`in front of ${him} and start face-`);
+			}
+			r.push(`fucking ${him} in turn, slowly permitting ${him} to find a rhythm where ${he} can fuck and get fucked at the same time. ${He}'s getting it much harder than ${he}'s giving it but ${he}'s experienced enough that ${he} comes quickly.`);
+			r.push(`<span class="devotion inc">${youngerSis.slaveName} has become more devoted to you,</span> while <span class="devotion dec">${olderSis.slaveName} has become more rebellious,</span>${(canDoAnal(olderSis)) ? ` and <span class="virginity loss">${olderSis.slaveName} has lost ${his2} anal virginity.</span>` : `.`}`);
+			youngerSis.devotion += 4;
+			if (canDoAnal(youngerSis)) {
+				seX(youngerSis, "anal", V.PC, "penetrative");
+			} else {
+				seX(youngerSis, "oral", V.PC, "penetrative");
+			}
+
+			olderSis.devotion -= 5;
+			if (canDoAnal(olderSis)) {
+				olderSis.anus = 1;
+				seX(youngerSis, "penetrative", olderSis, "anal");
+			} else {
+				seX(youngerSis, "penetrative", olderSis, "oral");
+			}
+			App.Events.addParagraph(frag, r);
+			return frag;
+		}
+	}
+};
diff --git a/src/events/randomEvent.js b/src/events/randomEvent.js
index 0c3cfdcc9016f64ca112623e711aeed86fd53bf4..0d47d426341620fa5c60b0dabb118a56a7659196 100644
--- a/src/events/randomEvent.js
+++ b/src/events/randomEvent.js
@@ -97,6 +97,11 @@ App.Events.getIndividualEvents = function() {
 
 		new App.Events.REStandardPunishment(),
 		new App.Events.RERebels(),
+
+		// Relationship Events
+		new App.Events.REDevotedMotherDaughter(),
+		new App.Events.REResistantMotherDaughter(),
+		new App.Events.RESiblingRevenge(),
 	];
 };
 
diff --git a/src/uncategorized/REresistantmotherdaughter.tw b/src/uncategorized/REresistantmotherdaughter.tw
deleted file mode 100644
index 7f5fd09bf2d606103fcc64f0719c487989143215..0000000000000000000000000000000000000000
--- a/src/uncategorized/REresistantmotherdaughter.tw
+++ /dev/null
@@ -1,70 +0,0 @@
-:: RE resistant mother daughter [nobr]
-
-<<set $nextButton = "Continue", $nextLink = "RIE Eligibility Check">>
-
-<<set $i = $slaveIndices[$motherSlave]>>
-<<set $j = $slaveIndices[$daughterSlave]>>
-<<setLocalPronouns $slaves[$i]>>
-<<setLocalPronouns $slaves[$j] 2>>
-
-<<set _clothesTemp = $slaves[$i].clothes, $slaves[$i].clothes = "no clothing">>
-<<set _clothesTemp2 = $slaves[$j].clothes, $slaves[$j].clothes = "no clothing">>
-<span id="art-frame">
-/* 000-250-006 */
-<<if $seeImages == 1>>
-	<div class="imageColumn">
-		<div class="imageRef medImg">
-			<<SlaveArt $slaves[$i] 2 0>>
-		</div>
-		<div class="imageRef medImg">
-			<<SlaveArt $slaves[$j] 2 0>>
-		</div>
-	</div>
-<</if>>
-/* 000-250-006 */
-</span>
-<<set $slaves[$i].clothes = _clothesTemp>>
-<<set $slaves[$j].clothes = _clothesTemp2>>
-
-$slaves[$i].slaveName and $his _daughter2 are both having trouble getting acclimated to your ownership, with their obedience suffering as a result. Though neither of them have done anything particular egregious lately, their combined list of minor transgressions is reaching a point where rendering punishment on the two would not be seen as unfair. By happenstance they come before you for inspection one after the other. Though they certainly <<if canSee($slaves[$i]) && canSee($slaves[$j])>>see each other naked frequently around<<else>>are frequently naked around each other in<</if>> the penthouse, neither seems particularly comfortable around the other when nudity is involved. While you finish $slaves[$i].slaveName's inspection, $his _daughter2 fidgets uneasily even while trying to mimic the posture and appearance of an obedient slave. It occurs to you that the current situation presents an opportunity to do //something// about this resistant $mother-_daughter2 pair.
-
-<br><br>
-<span id="result">
-<br><<link "Spend the evening gently acclimating them to your ownership">>
-	<<replace "#result">>
-	Though neither of the two vehemently protests your decision to have them both join you in bed, furtive uneasy glances are exchanged between the two. Since they're already naked, they clamber onto your bed before you and reluctantly kneel facing each other, leaving enough space between them for you<<if canSee($slaves[$i]) && canSee($slaves[$j])>> and for them to avert their eyes to avoid the other's nakedness<</if>>. They clearly assume you would start by using one of them, so they're quite taken aback when you remain standing at the edge of the bed and suggest that $slaves[$i].slaveName play with $his _daughter2. $slaves[$j].slaveName awkwardly flounders a little as _his2 $mother's <<if hasBothArms($slaves[$i])>>hands roam<<elseif hasAnyArms($slaves[$i])>>hand roams<</if>> about _his2 body, but does not reel back from the intimate touching. In time you instruct $slaves[$j].slaveName to pleasure _his2 $mother, but still decline to join the incestuous union unfolding on your sheets. You extend the foreplay for hours, bringing both $mother and _daughter2 to such a state of naked arousal that they begin grinding against each other uninhibitedly. They are both so desperate for release that they do not object when you finally decide to join them, instead eagerly moving to include you in their coupling. What started with $slaves[$j].slaveName awkwardly kneeling unmoving while _his2 $mother sucked _his2 nipples ends with $slaves[$j].slaveName <<if hasAllLimbs($slaves[$j])>>on all fours<<else>>bent over<</if>> getting fucked by you while orally pleasuring $slaves[$i].slaveName. You gaze over at $slaves[$i].slaveName and $he moans and licks $his lips enticingly back at you as $slaves[$j].slaveName moans into $his fuckhole.
-	@@.mediumaquamarine;They have both become more trusting of you.@@
-
-	<<set $slaves[$i].trust += 4, $slaves[$j].trust += 4, $slaves[$i].counter.oral += 1, $slaves[$j].counter.oral += 1, $oralTotal += 2>>
-
-	<<if canDoAnal($slaves[$j])>>
-		<<set $slaves[$j].counter.anal += 1>>
-		<<set $analTotal += 1>>
-	<<elseif canDoVaginal($slaves[$j])>>
-		<<set $slaves[$j].counter.vaginal += 1>>
-		<<set $vaginalTotal += 1>>
-	<</if>>
-
-	<<if canDoAnal($slaves[$i])>>
-		<<set $slaves[$i].counter.anal += 1>>
-		<<set $analTotal += 1>>
-	<<elseif canDoVaginal($slaves[$i])>>
-		<<set $slaves[$i].counter.vaginal += 1>>
-		<<set $vaginalTotal += 1>>
-	<</if>>
-
-	<</replace>>
-<</link>>
-<br><<link "Make an example of the $mother">>
-	<<replace "#result">>
-	You give them orders of devastating simplicity: You are going to assrape $slaves[$i].slaveName and if $his _daughter2 offers even the most token of resistance, you'll punish $slaves[$i].slaveName. They're stunned, but you shake them out of their shock by grabbing $slaves[$i].slaveName by the arm<<if $PC.dick == 0>>,donning a strap-on<</if>> and shoving $him over your desk. $slaves[$j].slaveName flinches visibly as you enter _his2 $mother's ass in one brutal stroke, for which you stain _his2 $mother's asscheeks a rosy red with a torrent of harsh spanks. $slaves[$i].slaveName takes the rough anal pounding with only quiet sobbing and the occasional whimper of pain, but $his _daughter2 can't bear to <<if canSee($slaves[$j])>>see<<elseif canHear($slaves[$j])>>hear<<else>>have<</if>> $slaves[$i].slaveName in such duress and breaks _his2 short-lived silence to beg for mercy. When you step away from $slaves[$i].slaveName, $slaves[$j].slaveName lets out a sigh of relief, but _his2 expression soon turns to horror and revulsion when you return to mount _his2 $mother with a lash in hand.
-	<br><br>
-	When you eventually finish your merciless assrape of $slaves[$i].slaveName, $his body is covered in bruises, marks, and handprints. A testament to $slaves[$j].slaveName's inability to keep _his2 silence as you brutalized _his2 $mother. You leave your office wordlessly to attend to other matters, while behind you $slaves[$j].slaveName gazes <<if canSee($slaves[$j])>>forlornly<<else>>blindly<</if>> at the gibbering mess you have reduced _his2 $mother to.
-	Your severe punishment of _his2 $mother has encouraged $slaves[$j].slaveName to @@.gold;fear you.@@ $slaves[$i].slaveName has been fucked into @@.hotpink;submission@@ but your savage treatment has caused $him to @@.red;hate buttsex.@@
-
-	<<set $slaves[$j].trust -= 10>>
-	<<set $slaves[$i].devotion += 4, $slaves[$i].counter.anal += 1, $analTotal += 1, $slaves[$i].sexualFlaw = "hates anal">>
-
-	<</replace>>
-<</link>>
-</span>
diff --git a/src/uncategorized/randomNonindividualEvent.tw b/src/uncategorized/randomNonindividualEvent.tw
index 62437fb9d54f70aa28d3ea01d7ead73b960a2934..6f80da0b6abb73ea45f5a8d6c418dafe679b1170 100644
--- a/src/uncategorized/randomNonindividualEvent.tw
+++ b/src/uncategorized/randomNonindividualEvent.tw
@@ -95,50 +95,6 @@
 		<</if>>
 	<</if>>
 
-	/* Relationship Events */
-
-	<<if $seeIncest == 1>>
-
-		<<set _relatedSlaves = $slaves.filter(function(s) { return s.daughters > 0 || s.sisters > 0; })>>
-
-		<<set _devMothers = _relatedSlaves.filter(function(s) { return s.daughters > 0 && s.devotion > 50 && s.anus != 0 && canWalk(s); })>>
-		<<for _devMothers.length > 0>>
-			<<set $devMother = _devMothers.pluck()>>
-			<<set $devDaughter = randomDaughter($devMother)>>
-			<<if (def $devDaughter) && ($devDaughter.devotion > 50) && ($devDaughter.anus != 0) && canWalk($devDaughter)>>
-				<<set $events.push("RE devoted mother daughter")>>
-				<<set $devMother = $devMother.ID>>
-				<<set $devDaughter = $devDaughter.ID>>
-				<<break>>
-			<</if>>
-		<</for>>
-
-		<<set _resMothers = _relatedSlaves.filter(s => s.daughters > 0 && s.devotion < 10 && s.anus != 0 && canWalk(s))>>
-		<<for _resMothers.length > 0>>
-			<<set $motherSlave = _resMothers.pluck()>>
-			<<set $daughterSlave = randomDaughter($motherSlave)>>
-			<<if (def $daughterSlave) && ($daughterSlave.devotion < 10) && ($daughterSlave.anus != 0) && canWalk($daughterSlave)>>
-				<<set $events.push("RE resistant mother daughter")>>
-				<<set $motherSlave = $motherSlave.ID>>
-				<<set $daughterSlave = $daughterSlave.ID>>
-				<<break>>
-			<</if>>
-		<</for>>
-
-		<<set _youngerSisters = _relatedSlaves.filter(function(s) { return s.sisters > 0 && s.origin == "$He was sold into slavery by $his older sister." && canPenetrate(s); })>>
-		<<for _youngerSisters.length > 0>>
-			<<set $youngerSister = _youngerSisters.pluck()>>
-			<<set $olderSister = randomSister($youngerSister)>>
-			<<if (def $olderSister) && ($olderSister.anus == 0) && $youngerSister.devotion > ($olderSister.devotion+20)>>
-				<<set $events.push("RE sibling revenge")>>
-				<<set $youngerSister = $youngerSister.ID>>
-				<<set $olderSister = $olderSister.ID>>
-				<<break>>
-			<</if>>
-		<</for>>
-
-	<</if>>
-
 	/* Multislave Events */
 	<<set _L = App.Utils.countFacilityWorkers(["brothel", "clinic", "club", "dairy", "cellblock", "spa", "schoolroom", "servantsQuarters"])>>
 
diff --git a/src/uncategorized/reDevotedMotherDaughter.tw b/src/uncategorized/reDevotedMotherDaughter.tw
deleted file mode 100644
index 7b1f1ca9740b1d8a546ac6bf7ab842b7fa0e2d4c..0000000000000000000000000000000000000000
--- a/src/uncategorized/reDevotedMotherDaughter.tw
+++ /dev/null
@@ -1,68 +0,0 @@
-:: RE devoted mother daughter [nobr]
-
-<<set $nextButton = "Continue", $nextLink = "RIE Eligibility Check">>
-
-<<set $i = $slaveIndices[$devMother]>>
-<<set $j = $slaveIndices[$devDaughter]>>
-<<setLocalPronouns $slaves[$i]>>
-<<setLocalPronouns $slaves[$j] 2>>
-
-<<set _clothesTemp = $slaves[$i].clothes, $slaves[$i].clothes = "no clothing">>
-<<set _clothesTemp2 = $slaves[$j].clothes, $slaves[$j].clothes = "no clothing">>
-<span id="art-frame">
-	/* 000-250-006 */
-	<<if $seeImages == 1>>
-		<div class="imageColumn">
-			<div class="imageRef medImg">
-				<<SlaveArt $slaves[$i] 2 0>>
-			</div>
-			<div class="imageRef medImg">
-				<<SlaveArt $slaves[$j] 2 0>>
-			</div>
-		</div>
-	<</if>>
-	/* 000-250-006 */
-</span>
-<<set $slaves[$i].clothes = _clothesTemp>>
-<<set $slaves[$j].clothes = _clothesTemp2>>
-
-$slaves[$i].slaveName and $his _daughter2 $slaves[$j].slaveName are both good slaves, devoted and obedient. They'd probably do anything you order them to do. By happenstance they come before you for inspection one after the other. They certainly see each other stark naked frequently enough. As you finish $slaves[$i].slaveName's inspection, $his _daughter2 waits patiently for _his2 turn. It occurs to you that they probably would do //anything// you order them to do, and that they're so acclimated to sexual slavery that they might well enjoy it.
-
-<br><br>
-
-<span id="result">
-<br><<link "Spend the night sharing your bed with them, and each of them with the other">>
-	<<replace "#result">>
-	Neither of them bat an eye when you announce you're turning in early and that they'll be joining you. Since they're already naked, they get into your big soft bed before you and lie facing each other, with enough room in between them for you to take a central position. They clearly assume you'll start with one of them on each side of you, so they're quite surprised when you slide in behind $slaves[$i].slaveName instead. $slaves[$j].slaveName snuggles up to _his2 $mother happily enough, however. You extend the foreplay for hours, eventually bringing both of them to such a state of naked arousal that they begin grinding against each other as much as they do you. They get the idea, and things turn into a sort of unspoken mutual one-upmanship between them. What starts with $slaves[$j].slaveName clearly feeling very daring as _he2 sucks _his2 $mother's nipple ends with $slaves[$i].slaveName lying on $his back getting fucked by you while $he orally pleasures $slaves[$j].slaveName. You're face to face with $slaves[$j].slaveName and _he2 groans happily into your mouth as $slaves[$i].slaveName moans into _his2 fuckhole.
-	@@.mediumaquamarine;They have both become more trusting of you.@@
-
-	<<set $slaves[$i].trust += 4, $slaves[$j].trust += 4, $slaves[$i].counter.oral += 1, $slaves[$j].counter.oral += 1, $oralTotal += 2>>
-
-	<<if canDoAnal($slaves[$i])>>
-		<<set $slaves[$i].counter.anal += 1>>
-		<<set $analTotal += 1>>
-	<<elseif canDoVaginal($slaves[$i])>>
-		<<set $slaves[$i].counter.vaginal += 1>>
-		<<set $vaginalTotal += 1>>
-	<</if>>
-
-	<<if canDoAnal($slaves[$j])>>
-		<<set $slaves[$j].counter.anal += 1>>
-		<<set $analTotal += 1>>
-	<<elseif canDoVaginal($slaves[$j])>>
-		<<set $slaves[$j].counter.vaginal += 1>>
-		<<set $vaginalTotal += 1>>
-	<</if>>
-
-	<</replace>>
-<</link>>
-<br><<link "Get them started and then keep them at it in your office">>
-	<<replace "#result">>
-	You give them orders of devastating simplicity: they are to repair to the couch in your office and are to take turns getting each other off until such time as you tell them otherwise. They're momentarily stunned, but $slaves[$i].slaveName takes the lead and draws $his _daughter2 over to the couch<<if hasAnyArms($slaves[$i]) && hasAnyArms($slaves[$j])>> by the hand<</if>>. They're both accomplished sex slaves and obey orders well, so they are quite successful in the little game, if a bit mechanical. For the rest of the day, interviewees come and go and are treated to the sight of the two of them having subdued sex on the couch. Showing off one's slaves for business interlocutors is a common Free Cities practice, but more than one perceptive person figures out what the resemblance between the two slaves and the age gap between them really means. Of course, all those who figure it out are impressed by your sheer decadence.
-	@@.green;Your reputation has increased considerably.@@
-	<<run repX(2500, "event", $slaves[$i])>>
-	<<run repX(2500, "event", $slaves[$j])>>
-	<<set $slaves[$i].counter.oral += 5, $slaves[$j].counter.oral += 5, $oralTotal += 10>>
-	<</replace>>
-<</link>>
-</span>
diff --git a/src/uncategorized/reSiblingRevenge.tw b/src/uncategorized/reSiblingRevenge.tw
deleted file mode 100644
index d5c97ea6c740eb7428734d1cf41cd11aa5292d97..0000000000000000000000000000000000000000
--- a/src/uncategorized/reSiblingRevenge.tw
+++ /dev/null
@@ -1,82 +0,0 @@
-:: RE sibling revenge [nobr]
-
-<<set $nextButton = "Continue", $nextLink = "RIE Eligibility Check">>
-
-<<set $i = $slaveIndices[$youngerSister]>>
-<<set $j = $slaveIndices[$olderSister]>>
-<<setLocalPronouns $slaves[$i]>>
-<<setLocalPronouns $slaves[$j] 2>>
-
-<<set _clothesTemp = $slaves[$i].clothes, $slaves[$i].clothes = "no clothing">>
-<<set _clothesTemp2 = $slaves[$j].clothes, $slaves[$j].clothes = "no clothing">>
-<span id="art-frame">
-/* 000-250-006 */
-<<if $seeImages == 1>>
-	<div class="imageColumn">
-		<div class="imageRef medImg">
-			<<SlaveArt $slaves[$i] 2 0>>
-		</div>
-		<div class="imageRef medImg">
-			<<SlaveArt $slaves[$j] 2 0>>
-		</div>
-	</div>
-<</if>>
-/* 000-250-006 */
-</span>
-<<set $slaves[$i].clothes = _clothesTemp>>
-<<set $slaves[$j].clothes = _clothesTemp2>>
-
-$slaves[$i].slaveName, whose older _sister2 tried to sell $him to you, is up for inspection. As usual, you pepper your inspection with questions about $his duties, $his feelings about $his physical condition, and experiences. More information about one's property is never a bad thing. When the inspection reaches $slaves[$i].slaveName's asshole, you ask whether $he enjoyed having $his older _sister2 sell $his butt.
-
-"No, <<Master $slaves[$i]>>," $he says.
-
-<br><br>
-
-<span id="result">
-<br><<link "Turnabout is fair play">>
-	<<replace "#result">>
-	$slaves[$j].slaveName is brought in. You gag _him2, throw the resisting bitch down on the couch, and hold _him2 there. Then, you peremptorily order the wide-eyed $slaves[$i].slaveName to <<if canDoAnal($slaves[$j])>>sodomize<<else>>facefuck<</if>> $his _sister2. $He stares open mouthed for a moment, but comes over obediently. $His face is a strange mix of vengeful eagerness, revulsion, and even a little lust. $He shoves $himself into the frantically struggling _girl2's <<if canDoAnal($slaves[$j])>>butt<<else>>jaw<</if>> without mercy. $His cock is <<if $slaves[$i].dick < 3>>pathetically small<<elseif $slaves[$i].dick < 5>>nothing out of the ordinary<<elseif $slaves[$i].dick < 7>>admittedly nothing to scoff at<<else>>a source of great envy amongst your slaves<</if>>, but by how $slaves[$j].slaveName reacts it might as well be a baseball bat. $slaves[$i].slaveName rarely gets to penetrate anything, mostly serving as an oral slut<<if canDoAnal($slaves[$i])>> and anal cocksleeve<</if>>, so $he comes in no time and takes a turn holding $slaves[$j].slaveName down <<if canDoAnal($slaves[$j])>>so you can claim sloppy seconds on _his2 spasming butthole<</if>>.
-	@@.hotpink;$slaves[$i].slaveName has become more devoted to you,@@ while $slaves[$j].slaveName @@.mediumorchid;hates you@@ and has become @@.gold;more afraid of you,@@<<if canDoAnal($slaves[$j])>> and @@.lime;$slaves[$j].slaveName has lost _his2 anal virginity.@@<<else>>.<</if>>
-	<<set $slaves[$i].devotion += 4>>
-	<<set $slaves[$i].counter.penetrative += 1>>
-	<<set $penetrativeTotal += 1>>
-
-	<<set $slaves[$j].trust -= 5>>
-	<<set $slaves[$j].devotion -= 4>>
-	<<if canDoAnal($slaves[$j])>>
-		<<set $slaves[$j].anus = 1>>
-		<<set $slaves[$j].counter.anal += 1>>
-		<<set $analTotal += 1>>
-	<<else>>
-		<<set $slaves[$j].counter.oral += 1>>
-		<<set $oralTotal += 1>>
-	<</if>>
-	<</replace>>
-<</link>>
-<br><<link "Let $him have $his revenge, but remind $him of $his place">>
-	<<replace "#result">>
-	$slaves[$j].slaveName is brought in. You gag _him2, throw the resisting bitch down on the couch, and hold _him2 there. Then, you peremptorily order the wide-eyed $slaves[$i].slaveName to put $his cock <<if canDoAnal($slaves[$j])>>up $his _sister2's ass<<else>>in $his _sister2's mouth<</if>>, and then hold it there. $He stares open mouthed for a moment, but comes over obediently. $His face is a strange mix of vengeful eagerness, revulsion, and even a little lust. $He shoves $himself into the frantically struggling _girl2's <<if canDoAnal($slaves[$j])>>butt<<else>>jaw<</if>> without mercy. $His cock is <<if $slaves[$i].dick < 3>>pathetically small<<elseif $slaves[$i].dick < 5>>nothing out of the ordinary<<elseif $slaves[$i].dick < 7>>admittedly nothing to scoff at<<else>>a source of great envy amongst your slaves<</if>>, but by how $slaves[$j].slaveName reacts it might as well be a baseball bat. $slaves[$i].slaveName obeys your orders and holds still after inserting $himself. You<<if $PC.dick == 0>> don a strap-on,<</if>> move around <<if canDoAnal($slaves[$i])>>behind $him and start ass<<else>>in front of $him and start face-<</if>>fucking $him in turn, slowly permitting $him to find a rhythm where $he can fuck and get fucked at the same time. $He's getting it much harder than $he's giving it but $he's experienced enough that $he comes quickly.
-	@@.hotpink;$slaves[$i].slaveName has become more devoted to you,@@ while @@.mediumorchid;$slaves[$j].slaveName has become more rebellious,@@<<if canDoAnal($slaves[$j])>> and @@.lime;$slaves[$j].slaveName has lost _his2 anal virginity.@@<<else>>.<</if>>
-	<<set $slaves[$i].devotion += 4>>
-	<<if canDoAnal($slaves[$i])>>
-		<<set $slaves[$i].counter.anal += 1>>
-		<<set $analTotal += 1>>
-	<<else>>
-		<<set $slaves[$i].counter.oral += 1>>
-		<<set $oralTotal += 1>>
-	<</if>>
-	<<set $slaves[$i].counter.penetrative += 1>>
-	<<set $penetrativeTotal += 1>>
-
-	<<set $slaves[$j].devotion -= 5>>
-	<<if canDoAnal($slaves[$j])>>
-		<<set $slaves[$j].anus = 1>>
-		<<set $slaves[$j].counter.anal += 2>>
-		<<set $analTotal += 2>>
-	<<else>>
-		<<set $slaves[$j].counter.oral += 2>>
-		<<set $oralTotal += 2>>
-	<</if>>
-	<</replace>>
-<</link>>
-</span>