diff --git a/devTools/types/FC/gameState.d.ts b/devTools/types/FC/gameState.d.ts
index d1821a9cc66c25e37e6340a0381678048e75307b..1c7d94ab2fa997ab3dc7b141df2ca55508541aa7 100644
--- a/devTools/types/FC/gameState.d.ts
+++ b/devTools/types/FC/gameState.d.ts
@@ -75,8 +75,6 @@ declare namespace FC {
 		/** @deprecated */
 		REBoobCollisionSubIDs: string[];
 		/** @deprecated */
-		REIfYouEnjoyItSubIDs: string[];
-		/** @deprecated */
 		RECockmilkInterceptionIDs: number[];
 		/** @deprecated */
 		eligibleSlaves: SlaveState[];
diff --git a/src/002-config/sugarCubeConfig.js b/src/002-config/sugarCubeConfig.js
index 771f8b360634b68ebd6908feba5a1f5bfdc23bf0..a7cab8228445f24774c9af419d404b9f579913e6 100644
--- a/src/002-config/sugarCubeConfig.js
+++ b/src/002-config/sugarCubeConfig.js
@@ -6,12 +6,14 @@
 Config.passages.start = "init";
 
 /* Set description used by Save, for all passages, to give some decent information about game state. */
-Config.passages.descriptions = function () {
+Config.passages.descriptions = function() {
 	let sv = State.variables;
-	if (sv.arcologies === undefined || sv.arcologies.length === 0)
-		return "New Game Setup, Week 0"; // no arcology yet...
-	else
+	if (sv.arcologies === undefined || sv.arcologies.length === 0) {
+		// no arcology yet...
+		return "New Game Setup, Week 0";
+	} else {
 		return sv.arcologies[0].name + ", Week " + sv.week + ", " + sv.slaves.length + " Slaves, " + cashFormat(sv.cash);
+	}
 };
 
 /* Disable forward/back buttons in panel. */
diff --git a/src/004-base/000-proxies.js b/src/004-base/000-proxies.js
index 5d9da3f6190b4928176d0ded6c5ce8c37c424659..69b72acd7d6e9cf89d4301989b3a20a0c8de9df6 100644
--- a/src/004-base/000-proxies.js
+++ b/src/004-base/000-proxies.js
@@ -5,8 +5,8 @@
 		if (target[readOnlySymbol]) { return target; }
 		if (_.isArray(target)) {
 			return new Proxy(target, {
-				get:function(o, prop) {
-					if(prop === readOnlySymbol) { return true; }
+				get: function(o, prop) {
+					if (prop === readOnlySymbol) { return true; }
 					const val = o[prop];
 					if (typeof val === 'function') {
 						if (['push', 'unshift', 'pop'].includes(prop)) {
@@ -18,24 +18,24 @@
 					}
 					return createReadonlyProxy(val);
 				},
-				set:function(o, prop, value) {
+				set: function(o, prop, value) {
 					return true;
 				},
-				deleteProperty:function(o, prop) {
+				deleteProperty: function(o, prop) {
 					return true;
 				}
 			});
 		}
 		if (_.isObject(target)) {
 			return new Proxy(target, {
-				get:function(o, prop) {
-					if(prop === readOnlySymbol) { return true; }
+				get: function(o, prop) {
+					if (prop === readOnlySymbol) { return true; }
 					return createReadonlyProxy(o[prop]);
 				},
-				set:function(o, prop, value) {
+				set: function(o, prop, value) {
 					return true;
 				},
-				deleteProperty:function(o, prop) {
+				deleteProperty: function(o, prop) {
 					return true;
 				}
 			});
@@ -48,8 +48,8 @@
 		if (target[cheaterSymbol]) { return target; }
 		if (_.isArray(target)) {
 			return new Proxy(target, {
-				get:function(o, prop) {
-					if(prop === cheaterSymbol) { return true; }
+				get: function(o, prop) {
+					if (prop === cheaterSymbol) { return true; }
 					const val = o[prop];
 					if (typeof val === 'function') {
 						if (['push', 'unshift', 'pop'].includes(prop)) {
@@ -64,12 +64,12 @@
 					}
 					return createCheatProxy(val);
 				},
-				set:function(o, prop, value) {
+				set: function(o, prop, value) {
 					o[prop] = value;
 					State.variables.cheater = 1;// Can't use `V` because it probably points to a proxy.
 					return true;
 				},
-				deleteProperty:function(o, prop) {
+				deleteProperty: function(o, prop) {
 					delete o[prop];
 					State.variables.cheater = 1;// Can't use `V` because it probably points to a proxy.
 					return true;
@@ -78,16 +78,16 @@
 		}
 		if (_.isObject(target)) {
 			return new Proxy(target, {
-				get:function(o, prop) {
-					if(prop === cheaterSymbol) { return true; }
+				get: function(o, prop) {
+					if (prop === cheaterSymbol) { return true; }
 					return createCheatProxy(o[prop]);
 				},
-				set:function(o, prop, value) {
+				set: function(o, prop, value) {
 					o[prop] = value;
 					State.variables.cheater = 1;
 					return true;
 				},
-				deleteProperty:function(o, prop) {
+				deleteProperty: function(o, prop) {
 					delete o[prop];
 					State.variables.cheater = 1;
 					return true;
diff --git a/src/004-base/arcologyBuilding.js b/src/004-base/arcologyBuilding.js
index 990ab2d94deac013158bc9f52f952efc6da53a1f..b801932a8479fb47d82f6468173ef9eaeecbc88c 100644
--- a/src/004-base/arcologyBuilding.js
+++ b/src/004-base/arcologyBuilding.js
@@ -171,7 +171,7 @@ App.Arcology.Cell.BaseCell = class extends App.Entity.Serializable {
 				}
 			} else {
 				fragment.append(`You will have to acquire an additional ${oneCellPercentage}% interest in ${A.name} to take control of this sector. Such an interest is worth ${cashFormat(price)} and will require a transaction cost of ${cashFormat(10000)} to acquire for a total cost of ${cashFormat(price + 10000)}.`);
-				const availableCells = allCells.length * ((100-A.minority)/100) - ownedCells;
+				const availableCells = allCells.length * ((100 - A.minority) / 100) - ownedCells;
 				if (availableCells >= 1) {
 					const buySpan = document.createElement("span");
 					buySpan.classList.add("clear-formatting");
diff --git a/src/004-base/facility.js b/src/004-base/facility.js
index d4ef66b608f6f0e7d03f19bd3230af663fcdc5f2..8a73a5b25e5e1201d32b852a44768becdd384fc6 100644
--- a/src/004-base/facility.js
+++ b/src/004-base/facility.js
@@ -136,13 +136,14 @@ App.Entity.Facilities.Job = class {
 	 * @param {number} [pureTrust=101] Minimal high trust level to pass test without devotion
 	 * @returns {boolean}
 	 */
-	static _isBrokenEnough(slave, pureDevotion, devotion, trust, pureFear, pureTrust) {
-		if ((slave.devotion < (pureDevotion || 50)) &&
-			(slave.trust < (pureTrust || 101)) && (slave.trust > (pureFear || -51)) &&
-			((slave.devotion <= (devotion || -51)) || (slave.trust >= (trust || -21)))) {
-			return false;
-		}
-		return true;
+	static _isBrokenEnough(slave, pureDevotion = 50, devotion = -51, trust = -21, pureFear = -51, pureTrust = 101) {
+		return slave.devotion >= pureDevotion
+			|| slave.trust >= pureTrust
+			|| slave.trust <= pureFear
+			|| (
+				slave.devotion > devotion
+				&& slave.trust < trust
+			);
 	}
 
 	/**
@@ -198,6 +199,7 @@ App.Entity.Facilities.ManagingJob = class extends App.Entity.Facilities.Job {
 		}
 		return r;
 	}
+
 	/**
 	 * Returns true if slave has enough applicable skill or career
 	 * @param {App.Entity.SlaveState} slave
@@ -353,6 +355,7 @@ App.Entity.Facilities.Facility = class {
 	get totalOccupants() {
 		return this.hostedSlaves + this.nonEmployeeOccupantsCount;
 	}
+
 	get hasEmployees() {
 		return this.jobs.some(j => j.employeesIDs().size > 0);
 	}
@@ -546,6 +549,7 @@ App.Entity.Facilities.SingleJobFacility = class extends App.Entity.Facilities.Fa
 		}
 		this._job = this.job(); // cache the only job
 	}
+
 	/**
 	 * @override
 	 * @protected
diff --git a/src/005-passages/bcPassages.js b/src/005-passages/bcPassages.js
index 1cf82e5ac49e4725e18ce05fdaecdf64cf691620..47e6bbb32868dbe8217505c6be194d01400fa3e5 100644
--- a/src/005-passages/bcPassages.js
+++ b/src/005-passages/bcPassages.js
@@ -6,7 +6,8 @@ new App.DomPassage("Backwards Compatibility",
 
 		App.Update.setNonexistentProperties(V, App.Data.defaultGameStateVariables);
 
-		/* resetOnNGPlus contains half of the variables we need, but we use it politely here instead of forcing it so it fills in holes instead of overwriting data */
+		// resetOnNGPlus contains half of the variables we need, but we use it politely here instead of forcing it so it
+		// fills in holes instead of overwriting data.
 		App.Update.setNonexistentProperties(V, App.Data.resetOnNGPlus);
 
 		return App.Update.backwardsCompatibility();
diff --git a/src/endWeek/nextWeek/resetGlobals.js b/src/endWeek/nextWeek/resetGlobals.js
index 467b5485b42324cd1900ed5ed433f5243e481146..0c0f29026660c161401a2cccdf486a07ba5a04f7 100644
--- a/src/endWeek/nextWeek/resetGlobals.js
+++ b/src/endWeek/nextWeek/resetGlobals.js
@@ -50,8 +50,6 @@ App.EndWeek.resetGlobals = function() {
 	V.RETasteTestSubIDs = [];
 	V.rebelSlaves = [];
 	V.REBoobCollisionSubIDs = [];
-	V.REIfYouEnjoyItSubIDs = [];
-	V.REShowerForceSubIDs = [];
 	V.RECockmilkInterceptionIDs = [];
 	V.eligibleSlaves = [];
 
diff --git a/src/events/RETS/reIfYouEnjoyIt.js b/src/events/RETS/reIfYouEnjoyIt.js
new file mode 100644
index 0000000000000000000000000000000000000000..123638aac4b45725e983e406d4380fee4b72bb73
--- /dev/null
+++ b/src/events/RETS/reIfYouEnjoyIt.js
@@ -0,0 +1,332 @@
+App.Events.RETSIfYouEnjoyIt = class RETSIfYouEnjoyIt extends App.Events.BaseEvent {
+	eventPrerequisites() {
+		return [
+			() => V.universalRulesConsent === 0,
+		];
+	}
+
+	actorPrerequisites() {
+		return [
+			[
+				s => s.fetish !== "mindbroken",
+				hasBothArms,
+				hasAnyLegs,
+				canTalk,
+				s => s.devotion > 50,
+			],
+			[ // and subslave
+				s => s.fetish !== "mindbroken",
+				canTalk,
+				isSlaveAvailable,
+				s => s.devotion <= 20,
+				s => s.fetish !== "buttslut",
+				s => s.anus !== 0
+			]
+		];
+	}
+
+	execute(node) {
+		/** @type {Array<App.Entity.SlaveState>} */
+		let [eventSlave, subSlave] = this.actors.map(a => getSlave(a));
+		const {
+			He, he, his, him, himself,
+		} = getPronouns(eventSlave);
+		const {say} = getEnunciation(eventSlave);
+		const {
+			His2, him2, girl2, his2, he2, He2
+		} = getPronouns(subSlave).appendSuffix("2");
+		V.nextLink = "Next Week";
+
+		App.Events.drawEventArt(node, [eventSlave, subSlave], "no clothing");
+
+		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`));
+		if (eventSlave.butt > 4) {
+			t.push(`massive ass`);
+		} else if (eventSlave.butt > 2) {
+			t.push(`plush rear`);
+		} else {
+			t.push(`cute butt`);
+		}
+		t.push(`as ${he}`);
+		if (!canStand(eventSlave)) {
+			t.push(`kneels`);
+		} else {
+			t.push(`leans over`);
+		}
+		t.push(`on one of the bedrolls. It isn't immediately clear what's going on, but ${he}'s doing something with ${his}`);
+		if (canPenetrate(eventSlave)) {
+			t.push(`dick,`);
+		} else {
+			t.push(`hands,`);
+		}
+		t.push(`and there are a pair of ${subSlave.skin} feet visible on either side of ${him}. ${He}'s clearly got someone shoved down into the bedroll in front of ${him}, doggy style. That's the source of the whining.`);
+		App.Events.addParagraph(node, t);
+		t = [];
+
+		t.push(`Advancing to get a better view, you identify the bottom as`);
+		if (subSlave.bellyPreg >= 5000) {
+			t.push(`the pregnant`);
+		}
+		t.push(App.UI.DOM.combineNodes(App.UI.DOM.slaveDescriptionDialog(subSlave), "."));
+		t.push(`${eventSlave.slaveName} has`);
+		if (canPenetrate(eventSlave)) {
+			if (eventSlave.dick > 4) {
+				t.push(`${his} gigantic dick up ${subSlave.slaveName}'s`);
+				if (subSlave.anus > 2) {
+					t.push(`loose anus, but ${subSlave.slaveName}'s butthole is so accommodating that it probably isn't anal pain that's troubling ${him2}.`);
+				} else {
+					t.push(`asshole, which must be so stretched to accommodate it that ${his2} anguish is probably due in part to anal pain.`);
+				}
+			} else if (eventSlave.dick > 2) {
+				t.push(`${his} dick up ${subSlave.slaveName}'s`);
+				if (subSlave.anus > 1) {
+					t.push(`experienced anus, but ${subSlave.slaveName}'s butthole sufficiently used to buttsex that it probably isn't anal pain that's troubling ${him2}.`);
+				} else {
+					t.push(`tight little asshole, which must be so stretched to accommodate it that ${his2} anguish is probably due in part to anal pain.`);
+				}
+			} else {
+				t.push(`${his} little cock up ${subSlave.slaveName}'s anus. It's so small that it probably isn't anal pain that's troubling subSlave.slaveName.`);
+			}
+		} else {
+			if (subSlave.anus > 2) {
+				t.push(`three fingers up ${subSlave.slaveName}'s loose butthole, which is so accommodating that it probably isn't anal pain that's troubling ${him2}.`);
+			} else if (subSlave.anus > 1) {
+				t.push(`two fingers up ${subSlave.slaveName}'s butthole, which is experienced enough that it probably isn't anal pain that's troubling ${him2}.`);
+			} else {
+				t.push(`two fingers up ${subSlave.slaveName}'s tight ass, which must be so stretched to accommodate them that ${his2} anguish is probably due in part to anal pain.`);
+			}
+		}
+		t.push(`${eventSlave.slaveName} isn't fucking ${subSlave.slaveName} at all: ${he}'s just`);
+		if (canPenetrate(eventSlave)) {
+			t.push(`holding ${his} penis stationary`);
+		} else {
+			t.push(`holding ${his} fingers`);
+		}
+		t.push(`up ${subSlave.slaveName}'s rear hole. ${His2} buttocks has been severely spanked, so some of ${his2} unhappiness probably comes from being forced to eat sheets and let ${eventSlave.slaveName} play with ${his2} ass. But then you notice that ${eventSlave.slaveName} is`);
+		if (canPenetrate(eventSlave)) {
+			t.push(`reaching around`);
+		} else {
+			t.push(`using ${his} other hand to reach around`);
+		}
+		t.push(`${subSlave.slaveName}, and is`);
+		if (subSlave.dick > 0 && !(subSlave.chastityPenis)) {
+			t.push(`jerking ${subSlave.slaveName} off`);
+		} else {
+			t.push(`manually stimulating ${subSlave.slaveName}`);
+		}
+		if (eventSlave.skill.oral >= 60) {
+			t.push(`with all ${his} considerable expertise.`);
+		} else if (eventSlave.skill.oral > 30) {
+			t.push(`with considerable skill.`);
+		} else {
+			t.push(`with every appearance of effort.`);
+		}
+		t.push(`You're not sure what's going on here.`);
+
+		seX(subSlave, "anal", eventSlave, "penetrative");
+
+		App.Events.addParagraph(node, t);
+		App.Events.addResponses(node, [
+			new App.Events.Result("Just watch", watch),
+			new App.Events.Result(`${He}'s being too gentle`, join)
+		]);
+
+
+		function watch() {
+			const frag = document.createDocumentFragment();
+			t = [];
+
+			t.push(`You settle down to watch what happens. ${eventSlave.slaveName}, who has a devoted slave's sixth sense about ${his} ${getWrittenTitle(eventSlave)}'s presence, realizes you're there and turns toward you.`);
+			if (canSee(eventSlave)) {
+				t.push(`You've already got a reassuring, silent hand raised, and you gesture that ${he} should continue.`);
+			} else if (canHear(eventSlave)) {
+				t.push(`Not hearing any comments, ${he} takes it as a gesture to continue.`);
+			} else {
+				t.push(`Not sensing your touch, ${he} eventually decides to continue.`);
+			}
+			t.push(`${He} smiles naughtily at you, <span class="trust inc">pleased with your trust in ${him},</span> before going back to ${subSlave.slaveName}. ${He}`);
+			if (canPenetrate(eventSlave)) {
+				t.push(`hauls ${subSlave.slaveName}'s`);
+				if (subSlave.belly >= 5000) {
+					t.push(`gravid`);
+				}
+				t.push(`torso partway up`);
+			} else {
+				t.push(`bends over the poor ${girl2}`);
+			}
+			t.push(`so ${he} can speak directly into ${his2} ear, and ${say}s quietly,`);
+			t.push(Spoken(eventSlave, `"You're starting to enjoy this, aren't you, bitch?"`));
+			t.push(`${subSlave.slaveName}, still unaware you're there, shakes ${his2} head unhappily, tears starting to leak out the corners of ${his2} eyes.`);
+
+			App.Events.addParagraph(frag, t);
+			t = [];
+			t.push(`"N-no," ${he2} gasps.`);
+			t.push(Spoken(subSlave, `"I'm not! Please t-take ${canPenetrate(eventSlave) ? `it` : `them`} out!"`));
+			t.push(`${eventSlave.slaveName} makes no verbal reply, but continues ${his} manual stimulation, and`);
+			if (subSlave.earShape !== "none" && subSlave.earT !== "none") {
+				t.push(`sticks ${his} tongue into ${subSlave.slaveName}'s ear.`);
+			} else {
+				t.push(`runs ${his} tongue along ${subSlave.slaveName}'s ear hole.`);
+			}
+			t.push(`The poor ${girl2} lets out a startled yelp that trails off into a moan as ${eventSlave.slaveName}'s`);
+			if (eventSlave.skill.oral >= 60) {
+				t.push(`excellent`);
+			} else if (eventSlave.skill.oral > 1) {
+				t.push(`skillful`);
+			} else {
+				t.push(`enthusiastic`);
+			}
+			t.push(`ministrations really begin to have an effect on ${him2}.`);
+			App.Events.addParagraph(frag, t);
+			t = [];
+
+			t.push(`${eventSlave.slaveName} laughs unpleasantly at the desperately uncomfortable eventSlave, and ${say}s,`);
+			t.push(Spoken(eventSlave, `"Tell you what, slut. I'll leave you alone if this doesn't get you off."`));
+			t.push(`Already realizing ${his2} predicament, ${subSlave.slaveName} begins to protest, but ${eventSlave.slaveName} cuts ${him2} off.`);
+			t.push(Spoken(eventSlave, `"Shut your fucking cockholster, bitch, I'm talking. I'll leave you alone if this doesn't get you off, but if you come, you've obviously been lying to me, and you obviously want me to buttfuck you all night long."`));
+			t.push(`${subSlave.slaveName} tries very hard, taking a huge breath of air and holding it in, biting ${his2} lip, shutting ${his2} eyes tight, and more, but it's all for naught. Before long, ${he2} stiffens`);
+			if (subSlave.balls > 0 || subSlave.prostate > 0) {
+				t.push(`and makes a mess on the bedroll,`);
+			} else {
+				t.push(`with orgasm,`);
+			}
+			t.push(`moaning as ${his2} anal sphincter tightens against the invading`);
+			if (canPenetrate(eventSlave)) {
+				t.push(`cock.`);
+			} else {
+				t.push(`fingers.`);
+			}
+			t.push(`Once the climax leaves ${him2}, ${he2} begins to sob, knowing what this means. ${eventSlave.slaveName} takes ${his2} hand away from the crying ${girl2}'s crotch and begins to massage ${his2} back with surprising tenderness.`);
+			t.push(Spoken(eventSlave, `"Shh, sweetie, it's all right. I promise you'll enjoy this, if you let yourself."`));
+			t.push(`You leave quietly, letting ${eventSlave.slaveName} have ${his} fun. As the week goes on, ${subSlave.slaveName}'s <span class="fetish gain">attitude towards anal sex</span> improves quickly, though ${he2} feels rather conflicted about ${eventSlave.slaveName} for forcing this on ${him2}.`);
+			eventSlave.trust += 4;
+			seX(subSlave, "anal", eventSlave, "penetrative", 4);
+			subSlave.fetish = "buttslut";
+			subSlave.fetishKnown = 1;
+			subSlave.fetishStrength = 65;
+			if (canPenetrate(eventSlave) && canImpreg(subSlave, eventSlave)) {
+				t.push(knockMeUp(subSlave, 20, 1, eventSlave.ID, true));
+			}
+			App.Events.addParagraph(frag, t);
+			return frag;
+		}
+
+		function join() {
+			t= [];
+
+			t.push(`You advance on the slaves. ${eventSlave.slaveName}, who has a devoted eventSlave's sixth sense about ${his} ${getWrittenTitle(eventSlave)}'s presence, realizes you're there and turns toward you.`);
+			if (canSee(eventSlave)) {
+				t.push(`Silently but forcefully, you use a simple hand gesture to instruct ${him} unequivocally`);
+			} else {
+				t.push(`${He} can feel`);
+			}
+			t.push(`that ${he}'s to stop fucking around and pound the bitch's butt. ${He} looks a little taken aback, but obeys instantly,`);
+			if (canPenetrate(eventSlave)) {
+				t.push(`pumping ${his} dick in and out of ${subSlave.slaveName}`);
+			} else {
+				t.push(`fingerfucking ${subSlave.slaveName}'s ass`);
+			}
+			t.push(`without mercy. The eventSlave screams at the sudden change of pace, thrashing a little. ${His2} struggles bring`);
+			if (canSee(subSlave)) {
+				t.push(`${his2} head around, and ${he2}'s surprised to come face to face with your ankles. With dawning comprehension, ${his2} eyes track rapidly up your`);
+				if (V.arcologies[0].FSPhysicalIdealist !== "unset") {
+					t.push(`muscular`);
+				} else if (V.PC.title !== 0) {
+					t.push(`trim`);
+				} else {
+					t.push(`feminine`);
+				}
+				t.push(`thighs, past your`);
+				if (V.PC.dick !== 0) {
+					if (V.PC.vagina !== -1) {
+						t.push(`turgid dick and flushed pussy,`);
+					} else {
+						t.push(`turgid dick,`);
+					}
+				} else {
+					t.push(`flushed pussy,`);
+				}
+				t.push(`across your`);
+				if (V.PC.belly >= 100000) {
+					t.push(`massively pregnant middle`);
+				} else if (V.PC.belly >= 10000) {
+					t.push(`hugely pregnant middle`);
+				} else if (V.PC.belly >= 5000) {
+					t.push(`pregnant middle`);
+				} else if (V.PC.belly >= 1500) {
+					t.push(`swollen middle`);
+				} else if (V.PC.belly >= 100) {
+					t.push(`suspiciously swollen midriff`);
+				} else if (V.arcologies[0].FSPhysicalIdealist !== "unset") {
+					t.push(`shredded abs`);
+				} else {
+					t.push(`muscular abs`);
+				}
+				t.push(`and over your`);
+				if (V.PC.boobs < 300) {
+					if (V.arcologies[0].FSPhysicalIdealist !== "unset") {
+						t.push(`strong chest`);
+					} else if (V.PC.title !== 0) {
+						t.push(`firm chest`);
+					} else {
+						t.push(`flat chest`);
+					}
+				} else if (V.PC.boobs >= 1400) {
+					t.push(`giant`);
+					if (V.PC.boobsImplant > 0) {
+						t.push(`fake breasts`);
+					} else {
+						t.push(`cow tits`);
+					}
+				} else if (V.PC.boobs >= 1200) {
+					t.push(`huge`);
+					if (V.PC.boobsImplant > 0) {
+						t.push(`round`);
+					}
+					t.push(`breasts`);
+				} else if (V.PC.boobs >= 1000) {
+					t.push(`big`);
+					if (V.PC.boobsImplant > 0) {
+						t.push(`perky`);
+					}
+					t.push(`breasts`);
+				} else if (V.PC.boobs >= 800) {
+					t.push(`pretty breasts`);
+				} else {
+					t.push(`cute breasts`);
+				}
+				t.push(`to rest on your unforgiving face.`);
+			} else {
+				t.push(`a pleased chuckle out of you. With dawning comprehension, ${his2} face rapidly moves to face yours.`);
+			}
+			t.push(`${He2} wilts. ${eventSlave.slaveName} thinks this is hilarious, and laughs so hard at the eventSlave's reaction to your appearance that ${he} almost loses hold of ${subSlave.slaveName}'s `);
+			if (subSlave.dick > 0) {
+				t.push(`cock.`);
+			} else if (subSlave.clit > 0) {
+				t.push(`clit.`);
+			} else {
+				t.push(`ass.`);
+			}
+			t.push(`There's nothing quite like oral from a ${girl2} who's moaning with anal pain, so you sit on the head of the bedroll and`);
+			if (V.PC.dick !== 0) {
+				t.push(`stick your dick in ${subSlave.slaveName}'s mouth.`);
+			} else {
+				t.push(`pull ${subSlave.slaveName}'s mouth against your cunt.`);
+			}
+			t.push(`${eventSlave.slaveName} is still giggling, but leans over the unhappy eventSlave speared between the two of you to <span class="devotion inc">plant a kiss</span> on you. ${He} misses, smearing ${his} kiss along your cheek and past your ear, but you take ${his} face in your hands and kiss ${him} properly as ${subSlave.slaveName} begins to do ${his2} best to relax and get you off, <span class="trust dec">fearful</span> that worse is in store if ${he2} doesn't <span class="devotion inc">submit.</span>`);
+			eventSlave.devotion += 4;
+			seX(subSlave, "anal", eventSlave, "penetrative");
+			seX(subSlave, "oral", V.PC, "penetrative");
+			subSlave.trust -= 4;
+			subSlave.devotion += 4;
+			if (canPenetrate(eventSlave) && canImpreg(subSlave, eventSlave)) {
+				t.push(knockMeUp(subSlave, 20, 1, eventSlave.ID, true));
+			}
+
+			return t;
+		}
+	}
+};
diff --git a/src/events/randomEvent.js b/src/events/randomEvent.js
index 4404aea95d5756a68963908bb967f0ce4d01a7f4..1fd209254e126523ab9cea92e1a2beb694b65f8e 100644
--- a/src/events/randomEvent.js
+++ b/src/events/randomEvent.js
@@ -50,6 +50,7 @@ App.Events.getIndividualEvents = function() {
 		new App.Events.RETSAnalCowgirl(),
 		new App.Events.RETSDatePlease(),
 		new App.Events.RETSFucktoyPrefersRelative(),
+		new App.Events.RETSIfYouEnjoyIt(),
 		new App.Events.RETSInterslaveBegging(),
 		new App.Events.RETSAnalRepressedVirgin(),
 		new App.Events.RETSSadisticDescription(),
diff --git a/src/js/eventSelectionJS.js b/src/js/eventSelectionJS.js
index e6cf4ae8516c16a5ab6ab9e18e4989b7293a90b0..1a47bb1a224b0f2ad1f9af799d6654a15c3b5dbf 100644
--- a/src/js/eventSelectionJS.js
+++ b/src/js/eventSelectionJS.js
@@ -308,14 +308,6 @@ if(eventSlave.drugs === "breast injections") {
 					}
 				}
 
-				if (V.universalRulesConsent === 0) {
-					if (eventSlave.devotion > 50) {
-						if (V.REIfYouEnjoyItSubIDs.length > 0) {
-							V.RETSevent.push("if you enjoy it");
-						}
-					}
-				}
-
 				if (eventSlave.assignment !== Job.QUARTER) {
 					if (eventSlave.devotion < -50) {
 						if (eventSlave.trust >= -20) {
diff --git a/src/uncategorized/RETS.tw b/src/uncategorized/RETS.tw
index 77d681cc1aa2dd3bc8f0f2067a10fc2432dfc67c..78426beafab49ff165daf787e495eb2b5511495c 100644
--- a/src/uncategorized/RETS.tw
+++ b/src/uncategorized/RETS.tw
@@ -67,13 +67,6 @@
 	<</for>>
 <</if>>
 
-<<case "if you enjoy it">>
-
-<<if Array.isArray($REIfYouEnjoyItSubIDs)>>
-	<<set $REIfYouEnjoyItSubIDs = $REIfYouEnjoyItSubIDs.random()>>
-	<<set $subSlave = $slaves[$slaveIndices[$REIfYouEnjoyItSubIDs]]>>
-<</if>>
-
 <<case "cockmilk interception">>
 
 <<if Array.isArray($RECockmilkInterceptionIDs)>>
@@ -103,7 +96,7 @@
 <<set _clothesTemp2 = $subSlave.clothes>>
 <<switch $RETSevent>>
 	/*Some events start with the slave naked (any event that starts with the daily inspection, for example). Here we switch their clothing just for the image to load, then switch it back quickly so the player's choice is not messed up.*/
-	<<case "boob collision" "cockmilk interception" "if you enjoy it" "incestuous nursing" "repressed anal virgin" "taste test">>
+	<<case "boob collision" "cockmilk interception" "incestuous nursing" "taste test">>
 		<<set $activeSlave.clothes = "no clothing">>
 		<<set $subSlave.clothes = "no clothing">>
 <</switch>>
@@ -393,42 +386,6 @@ You pass by the slave quarters during a busy time. Slaves are hurrying back and
 <</if>>
 Once $he's gotten $himself positioned, $subSlave.slaveName reaches around $activeSlave.slaveName's $activeSlave.skin body to grab $his ass. _He2 holds $activeSlave.slaveName against _him2 as $activeSlave.slaveName starts humping gently, and cranes _his2 neck up to kiss $him.
 
-<<case "if you enjoy it">>
-
-<<run seX($subSlave, "anal", $activeSlave, "penetrative")>>
-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 <<= App.UI.slaveDescriptionDialog($activeSlave)>>'s $activeSlave.skin back and <<if ($activeSlave.butt > 4)>>massive ass<<elseif ($activeSlave.butt > 2)>>plush rear<<else>>cute butt<</if>> as $he <<if (hasAnyLegs($activeSlave))>>kneels<<else>>leans over<</if>> on one of the bedrolls. It isn't immediately clear what's going on, but $he's doing something with $his <<if canPenetrate($activeSlave)>>dick<<else>>hands<</if>>, and there are a pair of $subSlave.skin feet visible on either side of $him. $He's clearly got someone shoved down into the bedroll in front of $him, doggy style. That's the source of the whining.
-
-<br><br>
-Advancing to get a better view, you identify the bottom as <<if $subSlave.bellyPreg >= 5000>>the pregnant <</if>><<= App.UI.slaveDescriptionDialog($subSlave)>>. $activeSlave.slaveName has
-<<if canPenetrate($activeSlave)>>
-	<<if $activeSlave.dick > 4>>
-		$his gigantic dick up $subSlave.slaveName's
-		<<if $subSlave.anus > 2>>
-			loose anus, but $subSlave.slaveName's butthole is so accommodating that it probably isn't anal pain that's troubling _him2.
-		<<else>>
-			asshole, which must be so stretched to accommodate it that _his2 anguish is probably due in part to anal pain.
-		<</if>>
-	<<elseif $activeSlave.dick > 2>>
-		$his dick up $subSlave.slaveName's
-		<<if $subSlave.anus > 1>>
-			experienced anus, but $subSlave.slaveName's butthole sufficiently used to buttsex that it probably isn't anal pain that's troubling _him2.
-		<<else>>
-			tight little asshole, which must be so stretched to accommodate it that _his2 anguish is probably due in part to anal pain.
-		<</if>>
-	<<else>>
-		$his little cock up $subSlave.slaveName's anus. It's so small that it probably isn't anal pain that's troubling $subSlave.slaveName.
-	<</if>>
-<<else>>
-	<<if $subSlave.anus > 2>>
-		three fingers up $subSlave.slaveName's loose butthole, which is so accommodating that it probably isn't anal pain that's troubling _him2.
-	<<elseif $subSlave.anus > 1>>
-		two fingers up $subSlave.slaveName's butthole, which is experienced enough that it probably isn't anal pain that's troubling _him2.
-	<<else>>
-		two fingers up $subSlave.slaveName's tight ass, which must be so stretched to accommodate them that _his2 anguish is probably due in part to anal pain.
-	<</if>>
-<</if>>
-$activeSlave.slaveName isn't fucking $subSlave.slaveName at all: $he's just <<if canPenetrate($activeSlave)>>holding $his penis stationary<<else>>holding $his fingers<</if>> up $subSlave.slaveName's rear hole. _His2 buttocks has been severely spanked, so some of _his2 unhappiness probably comes from being forced to eat sheets and let $activeSlave.slaveName play with _his2 ass. But then you notice that $activeSlave.slaveName is <<if canPenetrate($activeSlave)>>reaching around<<else>>using $his other hand to reach around<</if>> $subSlave.slaveName, and is <<if $subSlave.dick > 0 && !($subSlave.chastityPenis)>>jerking $subSlave.slaveName off<<else>>manually stimulating $subSlave.slaveName<</if>> <<if ($activeSlave.skill.oral >= 60)>>with all $his considerable expertise<<elseif ($activeSlave.skill.oral > 30)>>with considerable skill<<else>>with every appearance of effort<</if>>. You're not sure what's going on here.
-
 <<case "cockmilk interception">>
 
 <<run seX($subSlave, "oral", $activeSlave, "oral")>>
@@ -798,93 +755,6 @@ $he adds impishly. <<if canHear($subSlave)>>Hearing this<<else>>Realizing your p
 <</if>>
 <</if>>
 
-<<case "if you enjoy it">>
-
-<<link "Just watch">>
-	<<replace "#result">>
-	You settle down to watch what happens. $activeSlave.slaveName, who has a devoted slave's sixth sense about $his <<= getWrittenTitle($activeSlave)>>'s presence, realizes you're there and turns toward you. <<if canSee($activeSlave)>>You've already got a reassuring, silent hand raised, and you gesture that $he should continue<<elseif canHear($activeSlave)>>Not hearing any comments, $he takes it as a gesture to continue<<else>>Not sensing your touch, $he eventually decides to continue<</if>>. $He smiles naughtily at you, @@.mediumaquamarine;pleased with your trust in $him,@@ before going back to $subSlave.slaveName. $He <<if canPenetrate($activeSlave)>>hauls $subSlave.slaveName's <<if $subSlave.belly >= 5000>>gravid <</if>>torso partway up<<else>>bends over the poor _girl2<</if>> so $he can speak directly into _his2 ear, and <<say>>s quietly, "You're <<s>>tarting to enjoy thi<<s>>, aren't you, bitch?" $subSlave.slaveName, still unaware you're there, shakes _his2 head unhappily, tears starting to leak out the corners of _his2 eyes.
-	<br><br>
-	<<run Enunciate($subSlave)>>
-	"N-no," _he2 gasps. "I'm not! Plea<<s>>e t-take <<if canPenetrate($activeSlave)>>it<<else>>them<</if>> out!"
-	<<run Enunciate($activeSlave)>>
-	$activeSlave.slaveName makes no verbal reply, but continues $his manual stimulation, and sticks $his tongue into $subSlave.slaveName's ear. The poor _girl2 lets out a startled yelp that trails off into a moan as $activeSlave.slaveName's <<if ($activeSlave.skill.oral >= 60)>>excellent<<elseif ($activeSlave.skill.oral > 1)>>skillful<<else>>enthusiastic<</if>> ministrations really begin to have an effect on _him2.
-	<br><br>
-	$activeSlave.slaveName laughs unpleasantly at the desperately uncomfortable slave, and <<say>>s, "Tell you what, <<s>>lut. I'll leave you alone if thi<<s>> doe<<s>>n't get you off." Already realizing _his2 predicament, $subSlave.slaveName begins to protest, but $activeSlave.slaveName cuts _him2 off. "<<Sh>>ut your fucking cockhol<<s>>ter, bitch, I'm talking. I'll leave you alone if thi<<s>> doe<<s>>n't get you off, but if you come, you've obviou<<s>>ly been lying to me, and you obviou<<s>>ly want me to buttfuck you all night long." $subSlave.slaveName tries very hard, taking a huge breath of air and holding it in, biting _his2 lip, shutting _his2 eyes tight, and more, but it's all for naught. Before long, _he2 stiffens <<if $subSlave.balls > 0 || $subSlave.prostate > 0>>and makes a mess on the bedroll<<else>>with orgasm<</if>>, moaning as _his2 anal sphincter tightens against the invading <<if canPenetrate($activeSlave)>>cock<<else>>fingers<</if>>. Once the climax leaves _him2, _he2 begins to sob, knowing what this means. $activeSlave.slaveName takes _his2 hand away from the crying _girl2's crotch and begins to massage _his2 back with surprising tenderness. "<<Sh>>h, <<s>>weetie, it'<<s>> all right. I promi<<s>>e you'll enjoy thi<<s>>, if you let your<<s>>elf." You leave quietly, letting $activeSlave.slaveName have $his fun. As the week goes on, $subSlave.slaveName's @@.lightcoral;attitude towards anal sex@@ improves quickly, though _he2 feels rather conflicted about $activeSlave.slaveName for forcing this on _him2.
-	<<set $activeSlave.trust += 4>>
-	<<if canPenetrate($activeSlave)>>
-		<<run seX($subSlave, "anal", $activeSlave, "penetrative", 4)>>
-	<<else>>
-		<<run actX($subSlave, "anal")>>
-	<</if>>
-	<<set $subSlave.fetish = "buttslut", $subSlave.fetishKnown = 1, $subSlave.fetishStrength = 65>>
-	<<if canPenetrate($activeSlave) && canImpreg($subSlave, $activeSlave)>>
-		<<= knockMeUp($subSlave, 20, 1, $activeSlave.ID, 1)>>
-	<</if>>
-	<<set $slaves[$slaveIndices[$subSlave.ID]] = $subSlave>>
-	<</replace>>
-<</link>>
-<br><<link "$He's being too gentle">>
-	<<replace "#result">>
-	You advance on the slaves. $activeSlave.slaveName, who has a devoted slave's sixth sense about $his <<= getWrittenTitle($activeSlave)>>'s presence, realizes you're there and turns toward you. <<if canSee($activeSlave)>>Silently but forcefully, you use a simple hand gesture to instruct $him unequivocally<<else>>$He can feel<</if>> that $he's to stop fucking around and pound the bitch's butt. $He looks a little taken aback, but obeys instantly, <<if canPenetrate($activeSlave)>>pumping $his dick in and out of $subSlave.slaveName<<else>>fingerfucking $subSlave.slaveName's ass<</if>> without mercy. The slave screams at the sudden change of pace, thrashing a little. _His2 struggles bring <<if canSee($subSlave)>>_his2 head around, and _he2's surprised to come face to face with your ankles. With dawning comprehension, _his2 eyes track rapidly up your
-	<<if $arcologies[0].FSPhysicalIdealist != "unset">>
-		muscular
-	<<elseif $PC.title != 0>>
-		trim
-	<<else>>
-		feminine
-	<</if>>
-	thighs, past your <<if $PC.dick != 0>>turgid dick<<if $PC.vagina != -1>> and <</if>><</if>><<if $PC.vagina != -1>>flushed pussy<</if>>, across your
-	<<if $PC.belly >= 100000>>
-		massively pregnant middle
-	<<elseif $PC.belly >= 10000>>
-		hugely pregnant middle
-	<<elseif $PC.belly >= 5000>>
-		pregnant middle
-	<<elseif $PC.belly >= 1500>>
-		swollen middle
-	<<elseif $PC.belly >= 100>>
-		suspiciously swollen midriff
-	<<elseif $arcologies[0].FSPhysicalIdealist != "unset">>
-		shredded abs
-	<<else>>
-		muscular abs
-	<</if>>
-	and over your
-	<<if $PC.boobs < 300>>
-		<<if $arcologies[0].FSPhysicalIdealist != "unset">>
-			strong chest
-		<<elseif $PC.title != 0>>
-			firm chest
-		<<else>>
-			flat chest
-		<</if>>
-	<<elseif $PC.boobs >= 1400>>
-		giant <<if $PC.boobsImplant > 0>>fake breasts<<else>>cow tits<</if>>
-	<<elseif $PC.boobs >= 1200>>
-		huge <<if $PC.boobsImplant > 0>>round <</if>>breasts
-	<<elseif $PC.boobs >= 1000>>
-		big <<if $PC.boobsImplant > 0>>perky <</if>>breasts
-	<<elseif $PC.boobs >= 800>>
-		pretty breasts
-	<<else>>
-		cute breasts
-	<</if>>
-	to rest on your unforgiving face<<else>>a pleased chuckle out of you. With dawning comprehension, _his2 face rapidly moves to face yours<</if>>. _He2 wilts. $activeSlave.slaveName thinks this is hilarious, and laughs so hard at the slave's reaction to your appearance that $he almost loses hold of $subSlave.slaveName's <<if $subSlave.dick > 0>>cock<<elseif $subSlave.clit > 0>>clit<<else>>ass<</if>>. There's nothing quite like oral from a _girl2 who's moaning with anal pain, so you sit on the head of the bedroll and <<if $PC.dick != 0>>stick your dick in $subSlave.slaveName's mouth<<else>>pull $subSlave.slaveName's mouth against your cunt<</if>>. $activeSlave.slaveName is still giggling, but leans over the unhappy slave speared between the two of you to @@.hotpink;plant a kiss@@ on you. $He misses, smearing $his kiss along your cheek and past your ear, but you take $his face in your hands and kiss $him properly as $subSlave.slaveName begins to do _his2 best to relax and get you off, @@.gold;fearful@@ that worse is in store if _he2 doesn't @@.hotpink;submit.@@
-	<<set $activeSlave.devotion += 4>>
-	<<if canPenetrate($activeSlave)>>
-		<<run seX($subSlave, "anal", $activeSlave, "penetrative")>>
-	<<else>>
-		<<run actX($subSlave, "anal")>>
-	<</if>>
-	<<run seX($subSlave, "oral", $PC, "penetrative")>>
-	<<set $subSlave.trust -= 4, $subSlave.devotion += 4>>
-	<<if canPenetrate($activeSlave) && canImpreg($subSlave, $activeSlave)>>
-		<<= knockMeUp($subSlave, 20, 1, $activeSlave.ID, 1)>>
-	<</if>>
-	<<set $slaves[$slaveIndices[$subSlave.ID]] = $subSlave>>
-	<</replace>>
-<</link>>
-
 <<case "cockmilk interception">>
 
 <<link "Step in for the stimulator">>
diff --git a/src/uncategorized/randomIndividualEvent.tw b/src/uncategorized/randomIndividualEvent.tw
index eff15705d31b49e8f4b1ad1eb6983ab5ddcd527d..da3d09041dd32544e7c1211a24fc7a4730054981 100644
--- a/src/uncategorized/randomIndividualEvent.tw
+++ b/src/uncategorized/randomIndividualEvent.tw
@@ -28,20 +28,14 @@
 
 	/* SUB CHECKS */
 
-	<<set $RETasteTestSubIDs = [], $RECockmilkInterceptionIDs = [], $REIfYouEnjoyItSubIDs = [], $REBoobCollisionSubIDs = []>>
+	<<set $RETasteTestSubIDs = [], $RECockmilkInterceptionIDs = [], $REBoobCollisionSubIDs = []>>
 
 	<<for $i = 0; $i < $slaves.length; $i++>>
 		<<if $slaves[$i].fetish != "mindbroken">>
 			<<if canWalk($slaves[$i])>>
 				<<if canTalk($slaves[$i])>>
 					<<if isSlaveAvailable($slaves[$i])>>
-						<<if $slaves[$i].devotion <= 20>>
-							<<if ($slaves[$i].fetish != "buttslut") || ($slaves[$i].fetishKnown == 0)>>
-								<<if $slaves[$i].anus != 0>>
-									<<set $REIfYouEnjoyItSubIDs.push($slaves[$i].ID)>>
-								<</if>>
-							<</if>>
-						<<else>>
+						<<if $slaves[$i].devotion > 20>>
 							<<if $slaves[$i].boobs > 3000>>
 								<<set $REBoobCollisionSubIDs.push($slaves[$i].ID)>>
 							<</if>>