diff --git a/src/events/RETS/reDatePlease.js b/src/events/RETS/reDatePlease.js
index 063783d3b107e9bac6901803f5afb021751bb5f7..21ece54fc51f06dfa27d4865e54f7f698aafd47f 100644
--- a/src/events/RETS/reDatePlease.js
+++ b/src/events/RETS/reDatePlease.js
@@ -75,7 +75,7 @@ App.Events.RETSDatePlease = class RETSDatePlease extends App.Events.BaseEvent {
 			t.push(Spoken(eventSlave, `"But, I don't understand. What are we going to do?"`));
 			t.push(`Whatever you want, you tell ${him}. ${He} furrows ${his} brow, looking troubled, as though the concept is somehow alien to ${him}. After some thought, ${he} brightens and asks if ${he} can go tell ${his} ${partner}. ${He} can, you respond, and the slave bounces over to give you a kiss before running out. It costs you a small sum in upkeep and other trifles to cover an unexpected unavailability of both slaves, but they deserve it. Their busy lives mean that their shifts rarely align exactly, and this is more time than they've had together in a long time. It isn't particularly exciting, but they enjoy themselves. They eat a meal in the kitchen together, watch the sunset from one of the penthouse balconies, make love out there, share a long shower, and then go to bed, spending the rest of the night cuddling and chatting quietly. The next morning, they come to see you hand in hand, and <span class="devotion inc">thank you in unison.</span> As they leave, ${eventSlave.slaveName} looks back over ${his} shoulder at you, and mouths 'That was perfect, ${getWrittenTitle(eventSlave)}!'`);
 			cashX(-500, "event", eventSlave);
-			if (canPenetrate(eventSlave)) { 
+			if (canPenetrate(eventSlave)) {
 				SimpleSexAct.Slaves(subSlave, eventSlave);
 			} else if (canPenetrate(subSlave)) {
 				SimpleSexAct.Slaves(eventSlave, subSlave);
@@ -97,7 +97,7 @@ App.Events.RETSDatePlease = class RETSDatePlease extends App.Events.BaseEvent {
 			t.push(`Rather than answering ${him} directly, you tell ${V.assistant.name} to clear ${eventSlave.slaveName}'s and ${subSlave.slaveName}'s schedules for the evening, and then contact ${S.Attendant.slaveName}, the Attendant of your Spa, to instruct ${him3} to expect the two slaves for some quality time together. ${S.Attendant.slaveName}, of course, is all for it (${Spoken(S.Attendant, `"Leave it to me, ${getWrittenTitle(S.Attendant)}!"`)}). ${He3} greets the couple at the steamy entrance to the Spa an hour later, and takes charge of them with a matronly air, telling them to undress and relax.`);
 			App.Events.addParagraph(frag, t);
 			t = [];
-			t.push(`It costs you a small sum in upkeep and other trifles to cover an unexpected unavailability of both slaves, but they deserve it, and your Attendant does not disappoint. After the slaves have soaked in the main pool for a while, ${he3} gives them a series of mud packs, hot rock massages, and skin treatments, always setting them up right next to each other. They chat a bit at first, but soon relax into companionable silence, ${hasAnyHands(eventSlave) && hasAnyHands(subSlave) ? "holding hands and enjoying" : "side by side to enjoy"} the pampering.`);
+			t.push(`It costs you a small sum in upkeep and other trifles to cover an unexpected unavailability of both slaves, but they deserve it, and your Attendant does not disappoint. After the slaves have soaked in the main pool for a while, ${he3} gives them a series of mud packs, hot rock massages, and skin treatments, always setting them up right next to each other. They chat a bit at first, but soon relax into companionable silence, ${hasAnyArms(eventSlave) && hasAnyArms(subSlave) ? "holding hands and enjoying" : "side by side to enjoy"} the pampering.`);
 			if (S.Attendant.lactation > 0) {
 				t.push(`${S.Attendant.slaveName} has their evening meal sent down, and supplements it with milk drunk fresh from ${his3} own nipples.`);
 			}
diff --git a/src/facilities/incubator/incubatorInteract.js b/src/facilities/incubator/incubatorInteract.js
index c4ff6c7e019107c67048b28a177ba2e0b40c1614..08751e5d5226dc118d3029abf596ee5fed3797bd 100644
--- a/src/facilities/incubator/incubatorInteract.js
+++ b/src/facilities/incubator/incubatorInteract.js
@@ -510,23 +510,23 @@ App.UI.incubator = function() {
 		const _WL = V.PC.womb.length;
 		const _reservedIncubator = WombReserveCount(V.PC, "incubator");
 		const _reservedNursery = WombReserveCount(V.PC, "nursery");
-		r.push(App.UI.DOM.makeElement("span", `You're ${V.PC.pregWeek} ${(V.PC.pregWeek === 1) ? `week`:`weeks`} pregnant`, ["pink", "bold"]));
+		r.push(App.UI.DOM.makeElement("span", `You're ${V.PC.pregWeek} ${(V.PC.pregWeek === 1) ? `week`: `weeks`} pregnant`, ["pink", "bold"]));
 		if (_WL === 1) {
 			r.push(`with a baby`);
 		} else {
 			r.push(`with ${pregNumberName(_WL, 2)}`);
 		}
-		
+
 		if (reservedChildren < freeTanks) {
 			if (freeTanks === 1) {
-					r.push(`and have an <span class="lime">available aging tank.</span>`);
-				} else {
-					r.push(`and have <span class="lime">${freeTanks - reservedChildren} available aging tanks.</span>`);
-				}
+				r.push(`and have an <span class="lime">available aging tank.</span>`);
+			} else {
+				r.push(`and have <span class="lime">${freeTanks - reservedChildren} available aging tanks.</span>`);
+			}
 		} else if (reservedChildren >= freeTanks) {
 			r.push(`and <span class='red'>ran out of room for your offspring.</span>`);
 		}
-		
+
 		if (V.pregnancyMonitoringUpgrade === 1) {
 			r.push(
 				App.UI.DOM.link(
@@ -537,10 +537,10 @@ App.UI.incubator = function() {
 				)
 			);
 		}
-		
+
 		App.Events.addNode(el, r, "div");
 		r = [];
-		
+
 		let choices = document.createElement("div");
 		choices.classList.add("choices");
 		if (_reservedIncubator > 0) {
@@ -586,7 +586,7 @@ App.UI.incubator = function() {
 						}
 					)
 				);
-				
+
 				const availableChildren = reservedChildren + _WL - _reservedIncubator;
 				if (_WL > 1 && (availableChildren <= freeTanks)) {
 					linkArray.push(
@@ -603,9 +603,9 @@ App.UI.incubator = function() {
 			choices.append(App.UI.DOM.generateLinksStrip(linkArray));
 			el.append(choices);
 		}
-		
+
 		App.Events.addNode(el, r, "div");
-		
+
 		choices = document.createElement("div");
 		choices.classList.add("choices");
 		linkArray = [];
@@ -631,7 +631,7 @@ App.UI.incubator = function() {
 				)
 			);
 		}
-		
+
 		choices.append(App.UI.DOM.generateLinksStrip(linkArray));
 		el.append(choices);
 
diff --git a/src/npc/generate/heroCreator.js b/src/npc/generate/heroCreator.js
index 69ada836db9589aa11488f96bb36ee57ecc50932..ada1ff4100603f83626a51bad5e52ce8fc4cc141 100644
--- a/src/npc/generate/heroCreator.js
+++ b/src/npc/generate/heroCreator.js
@@ -22,15 +22,11 @@ App.Utils.buildHeroArray = function() {
 	let array = [].concat(...chunks);
 	delete V.heroSlaves;
 
-	for (let hero = 0; hero < array.length; hero++) {
-		if (V.seePreg !== 1 && [900089, 900102].includes(array[hero].ID)) {
-			array.splice(hero, 1);
-			hero--;
-		} else if (V.heroSlavesPurchased.includes(array[hero].ID)) {
-			array.splice(hero, 1);
-			hero--;
-		}
-	}
+	/** @type {function(App.Entity.SlaveState):boolean} */
+	const disallowedPregnantSlave = (s) => (V.seePreg !== 1 && s.preg > 0);
+	/** @type {function(App.Entity.SlaveState):boolean} */
+	const underAgedSlave = (s) => (s.actualAge < V.minimumSlaveAge);
+	array.deleteWith((s) => V.heroSlavesPurchased.includes(s.ID) || disallowedPregnantSlave(s) || underAgedSlave(s));
 
 	const collator = new Intl.Collator('en', {usage: "sort", ignorePunctuation: true});
 	return array.sort((a, b) => collator.compare(a.slaveName, b.slaveName));