diff --git a/devNotes/VersionChangeLog-Premod+LoliMod.txt b/devNotes/VersionChangeLog-Premod+LoliMod.txt
index 31847f6916d2a9b7319435041199d1ae3e2e3aba..85f05a4c85207a8bb3fd13a141e324019323298f 100644
--- a/devNotes/VersionChangeLog-Premod+LoliMod.txt
+++ b/devNotes/VersionChangeLog-Premod+LoliMod.txt
@@ -4575,4 +4575,17 @@ Pregmod 0.10.3.0
 	-Completed RESS cleanup
 	
 	132
-	-fix
\ No newline at end of file
+	-fix
+	
+	11/15/16
+	
+	133
+	-major fixes to temporarily removed slaves
+	-fixes
+	-removed restrictions on hormone blockes
+	-RESSTR event cleaning
+	
+	11/16/16
+	
+	134
+	-major revisions to how temporarily removed slaves are handled
\ No newline at end of file
diff --git a/src/npc/removeActiveSlave.tw b/src/npc/removeActiveSlave.tw
index e4b8899985d632b531359e2b8d38481e719d3714..d95c1339ec2ced988ccdc04c12d12075aff16e46 100644
--- a/src/npc/removeActiveSlave.tw
+++ b/src/npc/removeActiveSlave.tw
@@ -103,6 +103,33 @@
 	/% Remove from facility array or leadership role, if needed %/
 	<<removeJob $activeSlave $activeSlave.assignment>>
 
+	<<if $traitor != 0>>
+		<<if _ID == $traitor.pregSource>>
+			<<set $traitor.pregSource = 0>>
+		<</if>>
+		<<if $traitor.mother == _ID>>
+			<<set $traitor.mother = $missingParentID>>
+			<<set _missingID = 1>>
+		<</if>>
+		<<if $traitor.father == _ID>>
+			<<set $traitor.father = $missingParentID>>
+			<<set _missingID = 1>>
+		<</if>>
+	<</if>>
+	<<if $boomerangSlave != 0>>
+		<<if _ID == $boomerangSlave.pregSource>>
+			<<set $boomerangSlave.pregSource = 0>>
+		<</if>>
+		<<if $boomerangSlave.mother == _ID>>
+			<<set $boomerangSlave.mother = $missingParentID>>
+			<<set _missingID = 1>>
+		<</if>>
+		<<if $boomerangSlave.father == _ID>>
+			<<set $boomerangSlave.father = $missingParentID>>
+			<<set _missingID = 1>>
+		<</if>>
+	<</if>>
+	
 	<<set _o = $organs.findIndex(function(s) { return s.ID == $activeSlave.ID; })>>
 	<<if _o != -1>>
 		<<set $organs.deleteAt(_o)>>
diff --git a/src/uncategorized/pCoupAttempt.tw b/src/uncategorized/pCoupAttempt.tw
index d7ec65acb9509c4f29acd13ea033c11db5bfa474..32e3fd030290287e11dfcbadf3b3320a70b35d6d 100644
--- a/src/uncategorized/pCoupAttempt.tw
+++ b/src/uncategorized/pCoupAttempt.tw
@@ -74,7 +74,7 @@ You are awakened in the middle of the night by a jolt that shakes the entire arc
 	@@.yellow;The Daughters of Liberty are defeated.@@ @@.red;$arcologies[0].name is heavily damaged,@@ and the repairs will be very costly. The effect on your reputation is @@.green;muted, but positive,@@ since though you won, your victory was hard-fought and set the arcology's prosperity back @@.red;a long way.@@
 	<<if $traitor != 0>>
 		$traitor.slaveName was killed in the fighting.
-		<<set $traitor = 0>>
+		<<set $traitor = 0, $traitorStats = 0>>
 	<</if>>
 	<<set $daughtersVictory = 2>>
 	<<set $cash -= 10000>>
@@ -114,73 +114,49 @@ You are awakened in the middle of the night by a jolt that shakes the entire arc
 	<<set $traitor.assignmentVisible = 1>>
 	<<set $traitor.assignment = "stay confined">>
 	<<if $familyTesting == 1>>
+		<<if $traitorStats.PCpregSource > 0 && $PC.preg > 0 && $PC.pregSource == 0>>
+			<<set $PC.pregSource = $traitor.ID>>
+		<</if>>
+		<<if $traitorStats.PCmother > 0>>
+			<<set $PC.mother = $traitor.ID>>
+		<</if>>
+		<<if $traitorStats.PCfather > 0>>
+			<<set $PC.father = $traitor.ID>>
+		<</if>>
 		<<for _pca = 0; _pca < $slaves.length; _pca++>>
-			<<if (def $traitorMother) && $traitorMother.includes($slaves[_pca].ID)>>
+			<<if $traitorStats.traitorMother.includes($slaves[_pca].ID)>>
 				<<set $slaves[_pca].mother = $traitor.ID>>
 			<</if>>
-			<<if (def $traitorFather) && $traitorFather.includes($slaves[_pca].ID)>>
+			<<if $traitorStats.traitorFather.includes($slaves[_pca].ID)>>
 				<<set $slaves[_pca].father = $traitor.ID>>
 			<</if>>
+			<<if $traitorStats.traitorPregSources.includes($slaves[_pca].ID) && $slaves[_pca].preg > 0 && $slaves[_pca].pregSource == 0>>
+				<<set $slaves[_pca].pregSource = $traitor.ID>>
+			<</if>>
 		<</for>>
-		<<set _handledFather = 0>>
-		<<if $traitorSistersMother.length > 0>> /* welcome to code hell - so glad this will only run seldomly */
-			<<for _pca = 0; _pca < $slaves.length; _pca++>>
-				<<for _sis = 0; _sis < $traitorSistersMother.length; _sis++>>
-					<<if $traitorSistersMother[_sis].ID == $slaves[_pca].ID>>
-						<<if $traitor.mother != $slaves[_pca].mother>>
-							<<set $traitor.mother = $slaves[_pca].mother>>
-						<</if>>
-						<<set _foundMother = 1>>
-						<<break>>
-					<</if>>
+		<<if $incubator > 0>>
+			<<for _pca = 0; _pca < $tanks.length; _pca++>>
+				<<if $traitorStats.traitorMotherTank.includes($tanks[_pca].ID)>>
+					<<set $tanks[_pca].mother = $traitor.ID>>
 				<</if>>
-				<<if _foundMother == 1>>
-					<<break>>
+				<<if $traitorStats.traitorFatherTank.includes($tanks[_pca].ID)>>
+					<<set $tanks[_pca].father = $traitor.ID>>
 				<</if>>
 			<</for>>
-			<<unset $traitorSistersMother>>
-		<<elseif $traitor.mother > 0>>
-			<<set _pca = $slaves.find(function(s) { return s.ID == $traitor.mother; })>>
-			<<if ndef _pca>>
-				<<if $traitor.mother == $traitor.father>>
-					<<set $traitor.mother = $missingParentID, $traitor.father = $missingParentID>>
-					<<set $missingParentID-->>
-					<<set _handledFather = 1>>
-				<<else>>
-					<<set $traitor.mother = $missingParentID>>
-					<<set $missingParentID-->>
-				<</if>>
-			<</if>>			
 		<</if>>
-		<<if $traitorSistersFather.length > 0>>
-			<<set _foundFather = 0>>
+	<<else>>
+		<<if $traitorStats.traitorPregSources.length > 0>>
 			<<for _pca = 0; _pca < $slaves.length; _pca++>>
-				<<for _sis = 0; _sis < $traitorSistersFather.length; _sis++>>
-					<<if $traitorSistersFather[_sis].ID == $slaves[_pca].ID>>
-						<<if $traitor.father != $slaves[_pca].father>>
-							<<set $traitor.father = $slaves[_pca].father>>
-						<</if>>
-						<<set _foundFather = 1>>
-						<<break>>
-					<</if>>
-				<</if>>
-				<<if _foundFather == 1>>
-					<<break>>
+				<<if $traitorStats.traitorPregSources.includes($slaves[_pca].ID) && $slaves[_pca].preg > 0 && $slaves[_pca].pregSource == 0>>
+					<<set $slaves[_pca].pregSource = $traitor.ID>>
 				<</if>>
 			<</for>>
-			<<unset $traitorSistersFather>>
-		<<elseif $traitor.father > 0 && _handledFather != 1>>
-			<<set _pca = $slaves.find(function(s) { return s.ID == $traitor.father; })>>
-			<<if ndef _pca>>
-				<<set $traitor.father = $missingParentID>>
-				<<set $missingParentID-->>
-			<</if>>			
 		<</if>>
-		<<set $traitorMother = 0, $traitorFather = 0>>
 	<</if>>
 	<<set $traitor.health = random(-80,-60)>>
 	<<set $traitor.origin = "She was your slave, but you freed her, which she repaid by participating in a coup attempt against you. It failed, and she is again your chattel.">>
 	<<AddSlave $traitor>> /* skip New Slave Intro */
+	<<set $traitor = 0, $traitorStats = 0>>
 <</if>>
 
 <br><br>
diff --git a/src/uncategorized/pUndergroundRailroad.tw b/src/uncategorized/pUndergroundRailroad.tw
index f531a5ee3d478a76f05f71a341e52ce29023c516..4c73f1039cf906496357b2ff8e455b68f34e4067 100644
--- a/src/uncategorized/pUndergroundRailroad.tw
+++ b/src/uncategorized/pUndergroundRailroad.tw
@@ -100,26 +100,49 @@ that several nondescript citizens she sees occasionally at work have passed a fe
 		<</for>>
 	<</if>>
 	<<set $traitor = $activeSlave>>
+	<<set $traitorStats = {PCpregSource: 0, PCmother: 0, PCfather: 0, traitorMother: [], traitorFather: [], traitorPregSources: [], traitorMotherTank: [], traitorFatherTank: []}>>
 	<<if $familyTesting == 1>>
-		<<set $traitorMother = []>>
-		<<set $traitorfather = []>>
-		<<for $i = 0; $i < $slaves.length; $i++>>
-			<<if $slaves[$i].ID != $traitor.ID>>
-				<<if $slaves[$i].mother == $traitor.ID>>
-					<<set $traitorMother.push($slaves[$i].ID)>>
+		<<if $traitor.ID == $PC.pregSource>>
+			<<if $traitorStats.PCpregSource>>
+		<</if>>
+		<<if $PC.mother == $traitor.ID>>
+			<<set $traitorStats.PCmother = $traitor.ID>>
+		<</if>>
+		<<if $PC.father == $traitor.ID>>
+			<<set $traitorStats.PCfather = $traitor.ID>>
+		<</if>>
+		<<for _pur = 0; _pur < $slaves.length; _pur++>>
+			<<if $slaves[_pur].ID != $traitor.ID>>
+				<<if $slaves[_pur].mother == $traitor.ID>>
+					<<set $traitorStats.traitorMother.push($slaves[_pur].ID)>>
+				<</if>>
+				<<if $slaves[_pur].father == $traitor.ID>>
+					<<set $traitorStats.traitorFather.push($slaves[_pur].ID)>>
 				<</if>>
-				<<if $slaves[$i].father == $traitor.ID>>
-					<<set $traitorfather.push($slaves[$i].ID)>>
+				<<if $traitor.ID == $slaves[_pur].pregSource>>
+					<<set $traitorStats.traitorPregSources.push($slaves[_pur].ID)>>
 				<</if>>
 			<</if>>
 		<</for>>
-		<<if $traitor.mother > 0 || $traitor.father > 0>>
-			<<if $traitor.sisters > 0>>
-				<<set $traitorSistersMother = $slaves.filter(function(s) { return sameMom(s, $traitor) && s.ID != $traitor.ID$; })>>
-				<<set $traitorSistersFather = $slaves.filter(function(s) { return sameDad(s, $traitor) && s.ID != $traitor.ID$; })>>
-			<</if>>
+		<<if $incubator > 0>>
+			<<for _z = 0; _z < $tanks.length; _z++>>
+				<<if $traitor.ID == $tanks[_z].mother>>
+					<<set $traitorStats.traitorMotherTank.push($slaves[_z].ID)>>
+				<</if>>
+				<<if $traitor.ID == $tanks[_z].father>>
+					<<set $traitorStats.traitorFatherTank.push($slaves[_z].ID)>>
+				<</if>>
+			<</for>>
 		<</if>>
 		<<set $traitor.sisters = 0, $traitor.daughters = 0>>
+	<<else>>
+		<<for _pur = 0; _pur < $slaves.length; _pur++>>
+			<<if $slaves[_pur].ID != $traitor.ID>>
+				<<if $traitor.ID == $slaves[_pur].pregSource>>
+					<<set $traitorStats.traitorPregSources.push($slaves[_pur].ID)>>
+				<</if>>
+			<</if>>
+		<</for>>
 	<</if>>
 	<<include "Remove activeSlave">>
 	<</replace>>
diff --git a/src/uncategorized/reBoomerang.tw b/src/uncategorized/reBoomerang.tw
index 82a194043dbee50aa7a8107535539269912c0842..e5425e22bcf4596221dd53843104096e3e580d97 100644
--- a/src/uncategorized/reBoomerang.tw
+++ b/src/uncategorized/reBoomerang.tw
@@ -313,76 +313,53 @@ It isn't obvious how she managed to escape, though no doubt you could review the
 	<<set $rep += Math.trunc($slaveCost/10)>>
 	<<replace "#result">>
 		$activeSlave.slaveName keeps waiting, but the doors to the penthouse never open. When her owners arrive a few minutes later to collect her, she cries harder, but does not resist. Her weeping has the peculiar ring of utter hopelessness as they restrain her and drag her off. A few minutes after that, you receive a businesslike note @@.green;expressing gratitude@@ for your assistance in this matter.
+		<<set $boomerangStats = 0>>
 	<</replace>>
 <</link>>
 <<if $cash >= $contractCost>>
 <br><<link "Obfuscate her appearance and re-enslave her">>
 	<<set $cash -= $contractCost>>
 	<<if $familyTesting == 1>>
+		<<if $boomerangStats.PCpregSource > 0 && $PC.preg > 0 && $PC.pregSource == 0>>
+			<<set $PC.pregSource = $activeSlave.ID>>
+		<</if>>
+		<<if $boomerangStats.PCmother > 0>>
+			<<set $PC.mother = $activeSlave.ID>>
+		<</if>>
+		<<if $boomerangStats.PCfather > 0>>
+			<<set $PC.father = $activeSlave.ID>>
+		<</if>>
 		<<for _reb = 0; _reb < $slaves.length; _reb++>>
-			<<if (def $boomerangMother) && $boomerangMother.includes($slaves[_reb].ID)>>
+			<<if $boomerangStats.boomerangMother.includes($slaves[_reb].ID)>>
 				<<set $slaves[_reb].mother = $activeSlave.ID>>
 			<</if>>
-			<<if (def $boomerangfather) && $boomerangfather.includes($slaves[_reb].ID)>>
+			<<if $boomerangStats.boomerangFather.includes($slaves[_reb].ID)>>
 				<<set $slaves[_reb].father = $activeSlave.ID>>
 			<</if>>
+			<<if $boomerangStats.boomerangPregSources.includes($slaves[_reb].ID) && $slaves[_reb].preg > 0 && $slaves[_reb].pregSource == 0>>
+				<<set $slaves[_reb].pregSource = $activeSlave.ID>>
+			<</if>>
 		<</for>>
-		<<set _handledFather = 0>>
-		<<if $boomerangSistersMother.length > 0>> /* welcome to code hell - so glad this will only run seldomly */
-			<<for _reb = 0; _reb < $slaves.length; _reb++>>
-				<<for _sis = 0; _sis < $boomerangSistersMother.length; _sis++>>
-					<<if $boomerangSistersMother[_sis].ID == $slaves[_reb].ID>>
-						<<if $activeSlave.mother != $slaves[_reb].mother>>
-							<<set $activeSlave.mother = $slaves[_reb].mother>>
-						<</if>>
-						<<set _foundMother = 1>>
-						<<break>>
-					<</if>>
+		<<if $incubator > 0>>
+			<<for _reb = 0; _reb < $tanks.length; _reb++>>
+				<<if $boomerangStats.boomerangMotherTank.includes($tanks[_reb].ID)>>
+					<<set $tanks[_reb].mother = $activeSlave.ID>>
 				<</if>>
-				<<if _foundMother == 1>>
-					<<break>>
+				<<if $boomerangStats.boomerangFatherTank.includes($tanks[_reb].ID)>>
+					<<set $tanks[_reb].father = $activeSlave.ID>>
 				<</if>>
 			<</for>>
-			<<unset $boomerangSistersMother>>
-		<<elseif $activeSlave.mother > 0>>
-			<<set _reb = $slaves.find(function(s) { return s.ID == $activeSlave.mother; })>>
-			<<if ndef _reb>>
-				<<if $activeSlave.mother == $activeSlave.father>>
-					<<set $activeSlave.mother = $missingParentID, $activeSlave.father = $missingParentID>>
-					<<set $missingParentID-->>
-					<<set _handledFather = 1>>
-				<<else>>
-					<<set $activeSlave.mother = $missingParentID>>
-					<<set $missingParentID-->>
-				<</if>>
-			<</if>>			
 		<</if>>
-		<<if $boomerangSistersFather.length > 0>>
-			<<set _foundFather = 0>>
+	<<else>>
+		<<if $boomerangStats.boomerangPregSources.length > 0>>
 			<<for _reb = 0; _reb < $slaves.length; _reb++>>
-				<<for _sis = 0; _sis < $boomerangSistersFather.length; _sis++>>
-					<<if $boomerangSistersFather[_sis].ID == $slaves[_reb].ID>>
-						<<if $activeSlave.father != $slaves[_reb].father>>
-							<<set $activeSlave.father = $slaves[_reb].father>>
-						<</if>>
-						<<set _foundFather = 1>>
-						<<break>>
-					<</if>>
-				<</if>>
-				<<if _foundFather == 1>>
-					<<break>>
+				<<if $boomerangStats.boomerangPregSources.includes($slaves[_reb].ID) && $slaves[_reb].preg > 0 && $slaves[_reb].pregSource == 0>>
+					<<set $slaves[_reb].pregSource = $activeSlave.ID>>
 				<</if>>
 			<</for>>
-			<<unset $boomerangSistersFather>>
-		<<elseif $activeSlave.father > 0 && _handledFather != 1>>
-			<<set _reb = $slaves.find(function(s) { return s.ID == $activeSlave.father; })>>
-			<<if ndef _reb>>
-				<<set $activeSlave.father = $missingParentID>>
-				<<set $missingParentID-->>
-			<</if>>			
 		<</if>>
-		<<unset $boomerangMother, $boomerangfather>>
 	<</if>>
+	<<set $boomerangStats = 0>>
 	<<replace "#result">>
 		The penthouse opens, and $activeSlave.slaveName stumbles inside, sobbing her thanks. She's immediately conducted to the autosurgery for some quick cosmetic surgery, while you and $assistantName do the necessary work to falsify the arcology records and conceal her origins. Even so, it would probably be wise to keep her off public assignments for a while. In no time at all, she's standing in front of your desk like any other new slave. She waits obediently, knowing that it's in her best interests not to mention anything out of the ordinary.
 	<<include "New Slave Intro">>
@@ -392,6 +369,7 @@ It isn't obvious how she managed to escape, though no doubt you could review the
 	<<set $cash += $slaveCost>>
 	<<replace "#result">>
 		The penthouse opens, and $activeSlave.slaveName stumbles inside, sobbing her thanks. She's immediately conducted to the autosurgery for some quick cosmetic surgery, while you and $assistantName do the necessary work to falsify the arcology records and conceal her origins. Before she's even out from under anaesthesia, she's bundled off into one of the hundreds of slave shipments that move between arcologies every day. This time she'll be sold far enough away that no matter how much of an escape artist she is, you won't be seeing any more of her. She can whine elsewhere.
+		<<set $boomerangStats = 0>>
 	<</replace>>
 <</link>> //This will bring in ¤$slaveCost.//
 <<else>>
diff --git a/src/uncategorized/slaveSold.tw b/src/uncategorized/slaveSold.tw
index 342acbd4dd8f4caf89a1a856b892e819ee030d54..968aca8bef8150ba0b82c784039d1f3324ac3a39 100644
--- a/src/uncategorized/slaveSold.tw
+++ b/src/uncategorized/slaveSold.tw
@@ -13,26 +13,49 @@
 	<<if $activeSlave.devotion > 50>>
 		<<if $activeSlave.trust > 95 || $activeSlave.trust < -20 || $activeSlave.intelligence < 0>>
 			<<set $boomerangSlave = $activeSlave, $boomerangWeeks = 1, $boomerangBuyer = $buyer>>
+			<<set $boomerangStats = {PCpregSource: 0, PCmother: 0, PCfather: 0, boomerangMother: [], boomerangFather: [], boomerangPregSources: [], boomerangMotherTank: [], boomerangFatherTank: []}>>
 			<<if $familyTesting == 1>>
-				<<set $boomerangMother = []>>
-				<<set $boomerangfather = []>>
-				<<for $i = 0; $i < $slaves.length; $i++>>
-					<<if $slaves[$i].ID != $boomerangSlave.ID>>
-						<<if $slaves[$i].mother == $boomerangSlave.ID>>
-							<<set $boomerangMother.push($slaves[$i].ID)>>
+				<<if $activeSlave.ID == $PC.pregSource>>
+					<<if $boomerangStats.PCpregSource>>
+				<</if>>
+				<<if $PC.mother == $activeSlave.ID>>
+					<<set $boomerangStats.PCmother = $activeSlave.ID>>
+				<</if>>
+				<<if $PC.father == $activeSlave.ID>>
+					<<set $boomerangStats.PCfather = $activeSlave.ID>>
+				<</if>>
+				<<for _ss = 0; _ss < $slaves.length; _ss++>>
+					<<if $slaves[_ss].ID != $activeSlave.ID>>
+						<<if $slaves[_ss].mother == $activeSlave.ID>>
+							<<set $boomerangStats.boomerangMother.push($slaves[_ss].ID)>>
 						<</if>>
-						<<if $slaves[$i].father == $boomerangSlave.ID>>
-							<<set $boomerangfather.push($slaves[$i].ID)>>
+						<<if $slaves[_ss].father == $activeSlave.ID>>
+							<<set $boomerangStats.boomerangFather.push($slaves[_ss].ID)>>
+						<</if>>
+						<<if $activeSlave.ID == $slaves[_ss].pregSource>>
+							<<set $boomerangStats.boomerangPregSources.push($slaves[_ss].ID)>>
 						<</if>>
 					<</if>>
 				<</for>>
-				<<if $boomerangSlave.mother > 0 || $boomerangSlave.father > 0>>
-					<<if $boomerangSlave.sisters > 0>>
-						<<set $boomerangSistersMother = $slaves.filter(function(s) { return sameMom(s, $boomerangSlave) && s.ID != $boomerangSlave.ID$; })>>
-						<<set $boomerangSistersFather = $slaves.filter(function(s) { return sameDad(s, $boomerangSlave) && s.ID != $boomerangSlave.ID$; })>>
-					<</if>>
+				<<if $incubator > 0>>
+					<<for _z = 0; _z < $tanks.length; _z++>>
+						<<if $activeSlave.ID == $tanks[_z].mother>>
+							<<set $boomerangStats.boomerangMotherTank.push($slaves[_z].ID)>>
+						<</if>>
+						<<if $activeSlave.ID == $tanks[_z].father>>
+							<<set $boomerangStats.boomerangFatherTank.push($slaves[_z].ID)>>
+						<</if>>
+					<</for>>
 				<</if>>
-				<<set $boomerangSlave.sisters = 0, $boomerangSlave.daughters = 0>>
+				<<set $activeSlave.sisters = 0, $activeSlave.daughters = 0>>
+			<<else>>
+				<<for _ss = 0; _ss < $slaves.length; _ss++>>
+					<<if $slaves[_ss].ID != $activeSlave.ID>>
+						<<if $activeSlave.ID == $slaves[_ss].pregSource>>
+							<<set $boomerangStats.boomerangPregSources.push($slaves[_ss].ID)>>
+						<</if>>
+					<</if>>
+				<</for>>
 			<</if>>
 		<</if>>
 	<</if>>