diff --git a/src/init/storyInit.tw b/src/init/storyInit.tw
index bd70a5ba27643ccbc776b19f2b3d3d74d6b20b0c..20cf36f892da1bd4881e1cd5189419e161541b54 100644
--- a/src/init/storyInit.tw
+++ b/src/init/storyInit.tw
@@ -142,7 +142,7 @@
 	<<set $slaves[_i].analCount = 0>>
 	<<set $slaves[_i].vaginalCount = 0>>
 	<</for>>
-	<<set $slavesOriginal = $slaves>>
+	<<set $slavesOriginal = []>> /* not used by pregmod */
 	<<if ndef $PC.intelligence>>
 		<<set $PC.intelligence = 3>>
 	<</if>>
@@ -169,7 +169,7 @@
 	<</if>>
 <<else>>
 	<<set $slaves = []>>
-	<<set $slavesOriginal = []>>
+	<<set $slavesOriginal = []>> /* not used by pregmod */
 	<<set $genePool = []>>
 <</if>>
 <<set $recruiterCareers = []>>
diff --git a/src/npc/removeActiveSlave.tw b/src/npc/removeActiveSlave.tw
index 5a9b2b42560523d56eb768a80008dbe6fa228f1a..08dd77f1c96388832b1e4873107ab50d617e7cc2 100644
--- a/src/npc/removeActiveSlave.tw
+++ b/src/npc/removeActiveSlave.tw
@@ -109,8 +109,6 @@
 	/% Remove from facility array or leadership role, if needed %/
 	<<removeJob $activeSlave $activeSlave.assignment>>
 
-	<<set $slavesOriginal.delete(_ID)>>
-
 	<<set _dump = $slaves.deleteAt(_x), _SL--, $activeSlave = 0>>
 	
 	<<if _missingID == 1>>
diff --git a/src/uncategorized/BackwardsCompatibility.tw b/src/uncategorized/BackwardsCompatibility.tw
index 0cd411b20e4a739b4d07f48c2fcc59e1ce384953..44e98075bb471693106bf577a163eed954a3b185 100644
--- a/src/uncategorized/BackwardsCompatibility.tw
+++ b/src/uncategorized/BackwardsCompatibility.tw
@@ -1887,9 +1887,7 @@ Setting missing slave variables:
 <<set $slaves[_bci] to _Slave>>
 <</for>>
 
-<<if ndef $slavesOriginal>>
-	<<set $slavesOriginal = $slaves>>
-<</if>>
+<<set $slavesOriginal = []>> /* not used by pregmod */
 
 Done!
 
diff --git a/src/uncategorized/main.tw b/src/uncategorized/main.tw
index a5d62e9691255fca8c3176ca9dd287d766976957..5d2656f83ef2932ab6ded7ff65bef90c8e873c5b 100644
--- a/src/uncategorized/main.tw
+++ b/src/uncategorized/main.tw
@@ -30,28 +30,6 @@
 <<if $slaves.includes(null)>>
 	<br><br>@@.red;ERROR: Main slaves array contains a null entry! Please report this.@@ <<link "Repair">><<set $slaves.delete(null)>><</link>><<goto "Main">><br><br>
 <</if>>
-<<if $slavesOriginal.includes(null)>>
-	<br><br>@@.red;ERROR: slavesOriginal array contains a null entry! Please report this.@@ <<link "Repair">><<set $slavesOriginal.delete(null)>><<goto "Main">><</link>><br><br>
-<<else>>
-	<<if $slavesOriginal.length != $slaves.length>><br><br>@@.red;slavesOriginal array length $slavesOriginal.length differs from slaves array length $slaves.length<</if>>
-	<<for _i = 0; _i < $slavesOriginal.length; _i++>>
-		<<if $slaves.findIndex(function(s) { return s.ID == $slavesOriginal[_i].ID; }) == -1>>
-			<<capture _i>>
-				<br>@@.red;slavesOriginal[_i] $slavesOriginal[_i].slaveName (birthName $slavesOriginal[_i].birthName) is not in the current slaves array@@ <<link "Remove from slavesOriginal array">><<set $slavesOriginal.deleteAt(_i)>><<goto "Main">><</link>> | <<link "Re-acquire this slave (as she was when you first acquired her)">><<AddSlave $slavesOriginal[_i]>><<set $genePool.deleteAt($genePool.length-1), $slavesOriginal.deleteAt($slavesOriginal.length-1)>><<goto "Main">><</link>>
-			<</capture>>
-		<<else>> /* check for duplicates */
-			<<for _j = _i + 1; _j < $slavesOriginal.length; _j++>>
-				<<if $slavesOriginal[_j].ID == $slavesOriginal[_i].ID>>
-					<<capture _i, _j>>
-						<br>@@.red;slavesOriginal[_i] $slavesOriginal[_i].slaveName (birthName $slavesOriginal[_i].birthName) has the same ID $slavesOriginal[_i].ID as slavesOriginal[_j] $slavesOriginal[_j].slaveName (birthName $slavesOriginal[_j].birthName)@@
-						&nbsp;&nbsp;&nbsp;&nbsp;The duplicate entries are <<if _.isEqual($slavesOriginal[_i], $slavesOriginal[_j])>>identical. <<link "Remove newer (higher-index) duplicate entry from slavesOriginal array">><<set $slavesOriginal.deleteAt(_j)>><<goto "Main">><</link>><<else>>different.<</if>>
-					<</capture>>
-				<</if>>
-			<</for>>
-		<</if>>
-	<</for>>
-	<br><br>
-<</if>>
 /* end extra sanity checks and repair */
 
 <<for $i = 0; $i < _SL; $i++>>
@@ -60,11 +38,6 @@
 			<br><br>@@.red;Duplicate slave ID $slaves[$i].ID at index $i - $slaves[$i].slaveName ($slaves[$i].assignment) and index _i - $slaves[_i].slaveName ($slaves[_i].assignment)@@<br><br>
 		<</if>>
 	<</for>>
-	<<if $slavesOriginal.findIndex(function(s) { return s && s.ID == $slaves[$i].ID; }) == -1>>
-		<<capture $i>>
-			<br><br>@@.red;Slave $slaves[$i].slaveName (birthname $slaves[$i].birthName) ID $slaves[$i].ID is missing from slavesOriginal array@@ <<link "Add using current stats">><<set $slavesOriginal.push($slaves[$i])>><<goto "Main">><</link>><br><br>
-		<</capture>>
-	<</if>>
 	<<if $slaves[$i].assignmentVisible == 1>>
 		<<set $slavesVisible++>>
 		<<if $slaves[$i].livingRules == "luxurious">>
diff --git a/src/uncategorized/randomNonindividualEvent.tw b/src/uncategorized/randomNonindividualEvent.tw
index 383c4e336220a6809f30959fe7fc7d4e9577167c..8a55b966a5b72bfe944baf3b6eb6e2b6a39fa074 100644
--- a/src/uncategorized/randomNonindividualEvent.tw
+++ b/src/uncategorized/randomNonindividualEvent.tw
@@ -585,10 +585,10 @@
 <<set $i = $slaves.findIndex(function(s) { return s.fuckdoll == 0 && s.canRecruit == 1 && s.devotion > 50 && canWalk(s); })>>
 <<if $i != -1>>
 	<<if random(1,100) > 90+(totalRelatives($slaves[$i])*2)>>
-		<<set $j = $slavesOriginal.findIndex(function(o) { return o.ID == $slaves[$i].ID; })>>
+		<<set $j = $genePool.findIndex(function(o) { return o.ID == $slaves[$i].ID; })>>
 		<<if $j != -1>>
 			<<set $events.push("RE relative recruiter")>>
-		<<else>> /* no matching slave object in the slavesOriginal array -- bug? */
+		<<else>> /* no matching slave object in the genePool array */
 			<<set $slaves[$i].canRecruit = 0>>
 		<</if>>
 	<</if>>
@@ -596,12 +596,12 @@
 
 <<else>> /* extended family mode == 0 */
 
-<<set $i = $slaves.findIndex(function(s) { return s.recruiter != 0 && s.fuckdoll == 0 && s.devotion > 50 && s.relation == 0 && s.canRecruit && canWalk(s); })>>
+<<set $i = $slaves.findIndex(function(s) { return s.recruiter != 0 && s.relation == 0 && s.fuckdoll == 0 && s.canRecruit == 1 && s.devotion > 50 && canWalk(s); })>>
 <<if $i != -1>>
-	<<set $j = $slavesOriginal.findIndex(function(o) { return o.ID == $slaves[$i].ID; })>>
+	<<set $j = $genePool.findIndex(function(o) { return o.ID == $slaves[$i].ID; })>>
 	<<if $j != -1>>
 		<<set $events.push("RE relative recruiter")>>
-	<<else>> /* no matching slave object in the slavesOriginal array -- bug? */
+	<<else>> /* no matching slave object in the genePool array */
 		<<set $slaves[$i].recruiter = 0>>
 	<</if>>
 <</if>>
diff --git a/src/uncategorized/reRelativeRecruiter.tw b/src/uncategorized/reRelativeRecruiter.tw
index ffef6685912d67b8d9da33112f8a1ff6cdd38fc3..1a23b289fec7f9eafd44e7c5e1b0e1ef84fdd805 100644
--- a/src/uncategorized/reRelativeRecruiter.tw
+++ b/src/uncategorized/reRelativeRecruiter.tw
@@ -18,14 +18,12 @@
 <</if>>
 
 <<set $eventSlave = $slaves.find(function(s) { return s.canRecruit == 1 && s.fuckdoll == 0 && s.devotion > 50 && canWalk(s) && (random(1,100) > (totalRelatives(s)*20)); })>>
-<<if (ndef $eventSlave)>><<goto "RIE Eligibility Check">><</if>> /* due to randomization, we might have to stop here */
-<<set $activeSlave = $slavesOriginal.find(function(o) { return o && o.ID == $eventSlave.ID; })>>
-<<if (ndef $activeSlave)>> /* slave not being in slavesOriginal array should never happen, but just in case ... */
-	@@.red;ERROR:@@  $eventSlave.slaveName ID $eventSlave.ID is not in the original slaves array: using current stats instead
-	<br>''this should never happen, so please save your game on this page and upload the save for investigation''
-	<br><br>
-	<<set $activeSlave = jQuery.extend(true, {}, $eventSlave)>> /* deep copy */
-<</if>>
+<<if (ndef $eventSlave)>> /* due to randomization, we might have to stop here */
+	<<goto "RIE Eligibility Check">>
+<<else>>
+
+<<set $activeSlave = clone($genePool.find(function(o) { return o && o.ID == $eventSlave.ID; }))>>
+
 <<set _recruitedType = []>>
 <<if $eventSlave.mother == 0 && $activeSlave.actualAge < 24 && $seeDicks != 100>>
 	<<set _recruitedType.push("mother")>>
@@ -732,15 +730,18 @@ You look up the _relationType. She costs ¤$slaveCost, a bargain, but you won't
 <</link>>
 </span>
 
+
 <</if>> /* _recruitedType.length */
+<</if>> /* eventSlave is valid */
+
 
 <<else>> /* vanilla */
 
 <<set $i = $slaves.findIndex(function(s) { return s.recruiter != 0 && s.fuckdoll == 0 && s.devotion > 50 && s.relation == 0 && canWalk(s); })>>
-<<set $j = $slavesOriginal.findIndex(function(o) { return o.ID == $slaves[$i].ID; })>>
+<<set $j = $genePool.findIndex(function(o) { return o.ID == $slaves[$i].ID; })>>
 
 <<set $eventSlave = $slaves[$i]>>
-<<set $activeSlave = $slavesOriginal[$j]>>
+<<set $activeSlave = clone($genePool[$j])>>
 
 /* 000-250-006 */
 /* <<if $seeImages == 1>><<SlaveArt $eventSlave 2 0>><</if>> */
diff --git a/src/utility/miscWidgets.tw b/src/utility/miscWidgets.tw
index 5e89302717e41696c2c7ef1956889bbdecf98699..5f03c90467ef597f929afb792d6ae442e90fa0e2 100644
--- a/src/utility/miscWidgets.tw
+++ b/src/utility/miscWidgets.tw
@@ -1358,7 +1358,7 @@
 	<<set $REReductionCheckinIDs.push($args[0].ID)>>
 <</if>>
 
-<<set $slaves.push($args[0]), $slavesOriginal.push($args[0]), $genePool.push($args[0])>>
+<<set $slaves.push($args[0]), $genePool.push($args[0])>>
 
 /* add to facilities array if needed */
 <<if $args[0].assignment != "rest">>