diff --git a/src/uncategorized/BackwardsCompatibility.tw b/src/uncategorized/BackwardsCompatibility.tw
index 38b3c0fa7f60a2042d9ef4b6ba47a6adb256800c..52b5ea4df40986fdb0ca25a5a350166df00ad2f4 100644
--- a/src/uncategorized/BackwardsCompatibility.tw
+++ b/src/uncategorized/BackwardsCompatibility.tw
@@ -2732,81 +2732,8 @@ Setting missing global variables:
 
 Done!
 
-<<set $slavesOriginal = []>> /* not used by pregmod */
-
 <br><br>
-Updating gene pool records:
-/* $genePool MUST be updated before $slaves, or generateGenetics will break */
-<<for _bci = 0; _bci < $genePool.length; _bci++>>
-	<<set _Slave = $genePool[_bci]>>
-
-	<<PMODinit _Slave>>
-
-	<<if $genePool.map(function(s) { return s.ID; }).count(_Slave.ID) > 1>> /* first check for duplicate IDs, keep the first entry and delete the others */
-		<<for _bci2 = _bci + 1; _bci2 < $genePool.length; _bci2++>>
-			<<if $genePool[_bci2].ID == _Slave.ID>>
-				<<set $genePool.deleteAt(_bci2), _bci2-->>
-			<</if>>
-		<</for>>
-	<</if>>
-	<<set _dontDeleteMe = 0>>
-	<<if def $slaveIndices[_Slave.ID]>> /* are we still in the $slaves array? */
-		<<set _dontDeleteMe = 1>>
-	<</if>>
-	<<if $traitor != 0>>
-		<<if isImpregnatedBy($traitor, _Slave) || $traitor.ID == _Slave.ID>> /* did we impregnate the traitor, or are we the traitor? */
-			<<set _dontDeleteMe = 1>>
-		<</if>>
-	<</if>>
-	<<if $boomerangSlave != 0>>
-		<<if isImpregnatedBy($boomerangSlave, _Slave) || $boomerangSlave.ID == _Slave.ID>> /* did we impregnate the boomerang, or are we the boomerang? */
-			<<set _dontDeleteMe = 1>>
-		<</if>>
-	<</if>>
-	<<if isImpregnatedBy($PC, _Slave)>> /* did we impregnate the PC */
-		<<set _dontDeleteMe = 1>>
-	<</if>>
-	<<if _dontDeleteMe == 0>> /* avoid going through this loop if possible */
-		<<for _bci2 = 0; _bci2 < $slaves.length; _bci2++>>
-			<<if isImpregnatedBy($slaves[_bci2], _Slave)>> /* have we impregnated a slave on the slaves array? */
-				<<set _dontDeleteMe = 1>>
-				<<break>>
-			<</if>>
-		<</for>>
-	<</if>>
-	<<if _dontDeleteMe == 0>>
-		<<set $genePool.deleteAt(_bci), _bci-->>
-		<<continue>>
-	<</if>>
-
-	<<if ndef _Slave.origSkin>><<set _Slave.origSkin = _Slave.skin>><</if>>
-	<<if ndef _Slave.origRace>><<set _Slave.origRace = _Slave.race>><</if>>
-	<<if $releaseID < 1031>>
-		<<if _Slave.intelligence == -3>>
-			<<set _Slave.intelligence = -100>>
-		<<elseif _Slave.intelligence == -2>>
-			<<set _Slave.intelligence = -60>>
-		<<elseif _Slave.intelligence == -1>>
-			<<set _Slave.intelligence = -30>>
-		<<elseif _Slave.intelligence == 0>>
-			<<set _Slave.intelligence = 0>>
-		<<elseif _Slave.intelligence == 1>>
-			<<set _Slave.intelligence = 30>>
-		<<elseif _Slave.intelligence == 2>>
-			<<set _Slave.intelligence = 60>>
-		<<else>>
-			<<set _Slave.intelligence = 99>>
-		<</if>>
-		<<if _Slave.intelligenceImplant == 1>>
-			<<set _Slave.intelligenceImplant = 30>>
-		<</if>>
-	<</if>>
-
-	<<run App.Entity.Utils.GenePoolRecordCleanup(_Slave)>>
-	<<set $genePool[_bci] = _Slave>>
-<</for>>
-
-<br>Setting missing slave variables:
+Setting missing slave variables:
 /* Adding a new variable? Consider putting it in datatypeCleanupJS.tw instead of here */
 <<for _bci = 0; _bci < $slaves.length; _bci++>>
 <<set _Slave = $slaves[_bci]>>
@@ -3518,6 +3445,78 @@ Done<br>
 	Done<br>
 <</if>>
 
+<<set $slavesOriginal = []>> /* not used by pregmod */
+
+Updating gene pool records:
+<<for _bci = 0; _bci < $genePool.length; _bci++>>
+	<<set _Slave = $genePool[_bci]>>
+
+	<<PMODinit _Slave>>
+
+	<<if $genePool.map(function(s) { return s.ID; }).count(_Slave.ID) > 1>> /* first check for duplicate IDs, keep the first entry and delete the others */
+		<<for _bci2 = _bci + 1; _bci2 < $genePool.length; _bci2++>>
+			<<if $genePool[_bci2].ID == _Slave.ID>>
+				<<set $genePool.deleteAt(_bci2), _bci2-->>
+			<</if>>
+		<</for>>
+	<</if>>
+	<<set _dontDeleteMe = 0>>
+	<<if def $slaveIndices[_Slave.ID]>> /* are we still in the $slaves array? */
+		<<set _dontDeleteMe = 1>>
+	<</if>>
+	<<if $traitor != 0>>
+		<<if isImpregnatedBy($traitor, _Slave) || $traitor.ID == _Slave.ID>> /* did we impregnate the traitor, or are we the traitor? */
+			<<set _dontDeleteMe = 1>>
+		<</if>>
+	<</if>>
+	<<if $boomerangSlave != 0>>
+		<<if isImpregnatedBy($boomerangSlave, _Slave) || $boomerangSlave.ID == _Slave.ID>> /* did we impregnate the boomerang, or are we the boomerang? */
+			<<set _dontDeleteMe = 1>>
+		<</if>>
+	<</if>>
+	<<if isImpregnatedBy($PC, _Slave)>> /* did we impregnate the PC */
+		<<set _dontDeleteMe = 1>>
+	<</if>>
+	<<if _dontDeleteMe == 0>> /* avoid going through this loop if possible */
+		<<for _bci2 = 0; _bci2 < $slaves.length; _bci2++>>
+			<<if isImpregnatedBy($slaves[_bci2], _Slave)>> /* have we impregnated a slave on the slaves array? */
+				<<set _dontDeleteMe = 1>>
+				<<break>>
+			<</if>>
+		<</for>>
+	<</if>>
+	<<if _dontDeleteMe == 0>>
+		<<set $genePool.deleteAt(_bci), _bci-->>
+		<<continue>>
+	<</if>>
+
+	<<if ndef _Slave.origSkin>><<set _Slave.origSkin = _Slave.skin>><</if>>
+	<<if ndef _Slave.origRace>><<set _Slave.origRace = _Slave.race>><</if>>
+	<<if $releaseID < 1031>>
+		<<if _Slave.intelligence == -3>>
+			<<set _Slave.intelligence = -100>>
+		<<elseif _Slave.intelligence == -2>>
+			<<set _Slave.intelligence = -60>>
+		<<elseif _Slave.intelligence == -1>>
+			<<set _Slave.intelligence = -30>>
+		<<elseif _Slave.intelligence == 0>>
+			<<set _Slave.intelligence = 0>>
+		<<elseif _Slave.intelligence == 1>>
+			<<set _Slave.intelligence = 30>>
+		<<elseif _Slave.intelligence == 2>>
+			<<set _Slave.intelligence = 60>>
+		<<else>>
+			<<set _Slave.intelligence = 99>>
+		<</if>>
+		<<if _Slave.intelligenceImplant == 1>>
+			<<set _Slave.intelligenceImplant = 30>>
+		<</if>>
+	<</if>>
+
+	<<run App.Entity.Utils.GenePoolRecordCleanup(_Slave)>>
+	<<set $genePool[_bci] = _Slave>>
+<</for>>
+
 <<if $incubator > 0>>
 	<<for _bci = 0; _bci < $tanks.length; _bci++>>
 		<<set _incubatedSlave = $tanks[_bci]>>