diff --git a/devNotes/Useful JS Function Documentation.txt b/devNotes/Useful JS Function Documentation.txt
index 8faea827966d6336569f053c48597e22f77b4bce..b51924b0d311744fbea9a488ca648782825fc94a 100644
--- a/devNotes/Useful JS Function Documentation.txt	
+++ b/devNotes/Useful JS Function Documentation.txt	
@@ -28,8 +28,6 @@ canImproveHeight(slave) - Returns if slave height can be improved with growth st
 
 sameAssignmentP(slave, slave) - Returns if slaves are on the same assignment.
 
-haveRelationP(slave1, slave2) - Returns if slave1 is related to second slave2. (NOT extended family mode compliant).
-
 haveRelationshipP(slave1, slave2) - Returns if slave1 is in a relationship with slave2.
 
 isRivalP(slave1, slave2) - Returns if slave1 is in a rivalry with slave2.
diff --git a/src/facilities/farmyard/farmyardReport.tw b/src/facilities/farmyard/farmyardReport.tw
index 31c5009c61ce7f69a230479ac57931b78043fb3f..022948b8e2bed8ecba760f006aef077ac4e86975 100644
--- a/src/facilities/farmyard/farmyardReport.tw
+++ b/src/facilities/farmyard/farmyardReport.tw
@@ -121,12 +121,9 @@
 		<<elseif $Farmer.relationshipTarget == $slaves[$i].ID>>
 			_He2 dotes over _his2 <<print relationshipTerm($Farmer)>>, $slaves[$i].slaveName, making sure $he isn't worked too hard, but unfortunately manages to get in the way of $his work.
 			<<set $slaves[$i].devotion++, $FarmerCashBonus -= 0.05>>
-		<<elseif $familyTesting == 1 && areRelated($Farmer, $slaves[$i]) > 0>>
+		<<elseif areRelated($Farmer, $slaves[$i])>>
 			_He2 pays special attention to _his2 <<print relativeTerm($Farmer.ID,$slaves[$i].ID)>>, $slaves[$i].slaveName, making sure $he is treated well and showing off $his skills. /* TODO: does this need rewriting? */
 			<<set $slaves[$i].trust++, $FarmerCashBonus += 0.05>>
-		<<elseif $Farmer.relationTarget == $slaves[$i].ID && $familyTesting == 0>>
-			_He2 pays special attention to _his2 $slaves[$i].relation, $slaves[$i].slaveName, making sure $he is treated well and showing off $his skills. /* TODO: does this need rewriting? */
-			<<set $slaves[$i].trust++, $FarmerCashBonus += 0.05>>
 		<</if>>
 	<</for>>
 
diff --git a/src/facilities/farmyard/farmyardWidgets.js b/src/facilities/farmyard/farmyardWidgets.js
index 40946fe274441511839eeb4231640906b68629aa..8ebf31666ae40667dd4b61a8e2078df9cecc6601 100644
--- a/src/facilities/farmyard/farmyardWidgets.js
+++ b/src/facilities/farmyard/farmyardWidgets.js
@@ -96,9 +96,7 @@ App.Facilities.Farmyard.farmyardReport = () => {
 
 		if (Farmer.relationshipTarget === slave.ID) {
 			FarmerCashBonus -= 0.05;
-		} else if (V.familyTesting && areRelated(Farmer, slave) > 0) {
-			FarmerCashBonus += 0.05;
-		} else if (Farmer.relationTarget === slave.ID && !V.familyTesting) {
+		} else if (areRelated(Farmer, slave)) {
 			FarmerCashBonus += 0.05;
 		}
 
@@ -149,11 +147,8 @@ App.Facilities.Farmyard.farmyardReport = () => {
 			} else if (Farmer.relationshipTarget === slave.ID) {
 				t += `${p.He} dotes over ${p.his} ${relationshipTerm(Farmer)}, ${slave.slaveName}, making sure ${he} isn't worked too hard, but unfortunately manages to get in the way of ${his} work. `;
 				slave.devotion++;
-			} else if (V.familyTesting && areRelated(Farmer, slave) > 0) {
-				t += `${p.He} pays special attention to ${p.his} ${relativeTerm(Farmer.ID, slave.ID)}, ${slave.slaveName}, making sure ${he} is treated well and showing off ${his} skills. `; // TODO: does this need rewriting?
-				slave.trust++;
-			} else if (Farmer.relationTarget === slave.ID && !V.familyTesting) {
-				t += `${p.He} pays special attention to ${p.his} ${slave.relation}, ${slave.slaveName}, making sure ${he} is treated well and showing off ${his} skills. `; // TODO: does this need rewriting?
+			} else if (areRelated(Farmer, slave)) {
+				t += `${p.He} pays special attention to ${p.his} ${relativeTerm(Farmer.ID, slave.ID)}, ${slave.slaveName}, making sure ${he} is treated well and showing off ${his} skills. `;
 				slave.trust++;
 			}
 
diff --git a/src/js/assayJS.js b/src/js/assayJS.js
index 425529c834aeba211b220b8414d93c8a18ad972f..4190785dd6ba934a70aef69c497288a650fd8c81 100644
--- a/src/js/assayJS.js
+++ b/src/js/assayJS.js
@@ -38,15 +38,6 @@ window.canImproveHeight = function canImproveHeight(slave) {
 	return slave.height < maxHeight(slave);
 };
 
-/**
- * @param {App.Entity.SlaveState} slave
- * @param {App.Entity.SlaveState} target
- * @returns {boolean}
- */
-window.haveRelationP = function haveRelationP(slave, target) {
-	return slave.relationTarget === target.ID;
-};
-
 /**
  * @param {App.Entity.SlaveState} slave
  * @param {App.Entity.SlaveState} target
diff --git a/src/js/economyJS.js b/src/js/economyJS.js
index 2feac509d9dbdece4209aeec30c33b1feaf84df9..13afca367d9fd99086bc6d027aabe43b4f9e5dfe 100644
--- a/src/js/economyJS.js
+++ b/src/js/economyJS.js
@@ -1273,9 +1273,7 @@ window.slaveJobValues = function(lowerClassSexDemandRef, middleClassSexDemandRef
 			let i = V.slaveIndices[V.BrothiIDs[dI]];
 			if (V.Madam.relationshipTarget === V.slaves[i].ID) {
 				V.MadamCashBonus -= 0.05;
-			} else if (V.familyTesting === 1 && areRelated(V.Madam, V.slaves[i]) > 0) {
-				V.MadamCashBonus += 0.05;
-			} else if (V.Madam.relationTarget === V.slaves[i].ID && V.familyTesting === 0) {
+			} else if (areRelated(V.Madam, V.slaves[i])) {
 				V.MadamCashBonus += 0.05;
 			}
 			if (V.slaves[i].prestigeDesc === "$He is a famed Free Cities whore, and commands top prices.") {
diff --git a/src/js/extendedFamilyModeJS.js b/src/js/extendedFamilyModeJS.js
index ee2a22d680559560b4c88971ed1ebd6b9cda3898..e10f433f13b2e1e2efd383fe75ff328f9483819c 100644
--- a/src/js/extendedFamilyModeJS.js
+++ b/src/js/extendedFamilyModeJS.js
@@ -48,7 +48,7 @@ window.sameMom = function(slave1, slave2) {
 	return false;
 };
 
-window.sameParent = function isParentP(slave1, slave2) {
+window.sameParent = function(slave1, slave2) {
 	return sameMom(slave1, slave2) || sameDad(slave1, slave2);
 };
 
@@ -148,29 +148,6 @@ window.areSisters = function(slave1, slave2) {
 	}
 };
 
-/*
-//3 = half-sisters, 2 = sisters, 1 = twins, 0 = not related
-window.areSisters = function(c1, c2) {
-	if(c1.ID === c2.ID) {
-		return 0;
-	}
-	var sib = 4;
-	if(sameMom(c1, c2)) {
-		sib -= 1;
-	}
-	if(sameDad(c1, c2)) {
-		sib -=1;
-	}
-	if (sib === 2 && c1.actualAge === c2.actualAge && c1.birthWeek === c2.birthWeek) {
-		sib -= 1;
-	}
-	if(sib === 4) {
-		return 0
-	} else {
-		return sib;
-	}
-}
-*/
 /**
  * @param {App.Entity.SlaveState} slave1
  * @param {App.Entity.SlaveState} slave2
@@ -204,14 +181,19 @@ window.areCousins = function(slave1, slave2) {
 };
 
 /**
+ * Returns whether two slaves are *closely* related (i.e. siblings or parent/child).
+ * Distant relatives are not checked by this function.
  * @param {App.Entity.SlaveState} slave1
  * @param {App.Entity.SlaveState} slave2
  * @returns {boolean}
  */
-window.areRelated =
-	function(slave1, slave2) {
+window.areRelated = function(slave1, slave2) {
+	if (V.familyTesting === 1) {
 		return (slave1.father === slave2.ID || slave1.mother === slave2.ID || slave2.father === slave1.ID || slave2.mother === slave1.ID || areSisters(slave1, slave2) > 0);
-	};
+	} else {
+		return slave1.relationTarget === slave2.ID;
+	}
+};
 
 /**
  * @param {App.Entity.SlaveState} slave
@@ -246,14 +228,6 @@ window.mutualChildren = function(slave1, slave2, slaves) {
 	}).length;
 };
 
-/* OLD
-window.randomRelatedSlave = function(slave, filterFunction) {
-	if(!slave || !SugarCube) { return undefined; }
-	if(typeof filterFunction !== 'function') { filterFunction = function(s, index, array) { return true; }; }
-	return State.variables.slaves.filter(filterFunction).shuffle().find(function(s, index, array) {return areSisters(slave, s) || s.mother === slave.ID || s.father === slave.ID || slave.ID === s.mother || slave.ID === s.father; })
-}
-*/
-
 /**
  * @param {App.Entity.SlaveState} slave
  * @param {function(App.Entity.SlaveState): boolean} filterFunction
@@ -428,55 +402,82 @@ window.totalPlayerRelatives = function(pc) {
 };
 
 /**
+ * Returns the term for slave2's relationship to slave1 (i.e. "daughter" if slave2 is slave1's daughter).
+ * Performs distant relative checking if enabled.
  * @param {App.Entity.SlaveState} slave1
  * @param {App.Entity.SlaveState} slave2
- * @returns {string}
+ * @returns {string|null} - returns null if the slaves are not related, even distantly.
  */
-window.relativeTerm =
-	function(slave1, slave2) {
+window.relativeTerm = function(slave1, slave2) {
+	if (V.familyTesting === 1) {
 		if (slave2.mother === slave1.ID || slave2.father === slave1.ID) {
-			if (slave2.genes === "XY" && State.variables.diversePronouns) {
+			if (slave2.genes === "XY" && V.diversePronouns) {
 				return "son";
 			} else {
 				return "daughter";
 			}
+		} else if (slave1.mother === slave2.ID && slave1.father === slave2.ID) {
+			return "sole parent";
 		} else if (slave1.mother === slave2.ID) {
 			return "mother";
 		} else if (slave1.father === slave2.ID) {
 			return "father";
 		} else if (areSisters(slave2, slave1) === 1) {
-			if (slave2.genes === "XY" && State.variables.diversePronouns) {
+			if (slave2.genes === "XY" && V.diversePronouns) {
 				return "twin brother";
 			} else {
 				return "twin sister";
 			}
 		} else if (areSisters(slave2, slave1) === 2) {
-			if (slave2.genes === "XY" && State.variables.diversePronouns) {
+			if (slave2.genes === "XY" && V.diversePronouns) {
 				return "brother";
 			} else {
 				return "sister";
 			}
 		} else if (areSisters(slave2, slave1) === 3) {
-			if (slave2.genes === "XY" && State.variables.diversePronouns) {
+			if (slave2.genes === "XY" && V.diversePronouns) {
 				return "half-brother";
 			} else {
 				return "half-sister";
 			}
 		} else if (isAunt(slave1, slave2)) {
-			if (slave2.genes === "XY" && State.variables.diversePronouns) {
+			if (slave2.genes === "XY" && V.diversePronouns) {
 				return "nephew";
 			} else {
 				return "niece";
 			}
 		} else if (isAunt(slave2, slave1)) {
-			if (slave2.genes === "XY" && State.variables.diversePronouns) {
+			if (slave2.genes === "XY" && V.diversePronouns) {
 				return "uncle";
 			} else {
 				return "aunt";
 			}
 		} else if (areCousins(slave2, slave1)) {
 			return "cousin";
-		} else {
-			return "some unknown blood connection";
+		} else if (isGrandfatherP(slave1, slave2)) {
+			return "grandfather";
+		} else if (isGrandmotherP(slave1, slave2)) {
+			return "grandmother";
+		} else if (isGrandparentP(slave2, slave1)) {
+			if (slave2.genes === "XY" && V.diversePronouns) {
+				return "grandson";
+			} else {
+				return "granddaughter";
+			}
 		}
-	};
+	} else {
+		if (slave2.relationTarget === slave1.ID && slave2.relation !== 0) {
+			if (slave2.relation === "sister" || slave2.relation === "twin") {
+				let r = (slave1.actualAge === slave2.actualAge) ? "twin " : "";
+				if (slave2.genes === "XY" && V.diversePronouns) {
+					return r + "brother";
+				} else {
+					return r + "sister";
+				}
+			}
+			return slave2.relation;
+		}
+	}
+
+	return null;
+};
diff --git a/src/js/releaseRules.js b/src/js/releaseRules.js
index ed9a20e8d5796ca03b798771f3a58c54e9a4a1a5..2f1775813bc17846822897fddd0abd4aa9e774b6 100644
--- a/src/js/releaseRules.js
+++ b/src/js/releaseRules.js
@@ -12,9 +12,7 @@ App.Utils.sexAllowed = function sexAllowed(slaveA, slaveB) {
 		return slaveA.rules.release.master === 1;
 	} else if (haveRelationshipP(slaveA, slaveB)) {
 		return (slaveA.rules.release.partner === 1) && (slaveB.rules.release.partner === 1);
-	} else if (V.familyTesting === 0 && haveRelationP(slaveA, slaveB)) {
-		return V.seeIncest && (slaveA.rules.release.family === 1) && (slaveB.rules.release.family === 1);
-	} else if (V.familyTesting === 1 && areRelated(slaveA, slaveB)) {
+	} else if (areRelated(slaveA, slaveB)) {
 		return V.seeIncest && (slaveA.rules.release.family === 1) && (slaveB.rules.release.family === 1);
 	} else {
 		return (slaveA.rules.release.slaves === 1) && (slaveB.rules.release.slaves === 1);
diff --git a/src/js/utilsFC.js b/src/js/utilsFC.js
index 3f6607a557af17ba8c725405ffd6910eea2f3bb5..961b7914cb47d4a1579b811a041d8b11a0576fd9 100644
--- a/src/js/utilsFC.js
+++ b/src/js/utilsFC.js
@@ -2769,7 +2769,7 @@ window.randomRapeRivalryTarget = function(slave, predicate) {
 
 	function canRape(rapist, rapee) {
 		const opportunity = (assignmentVisible(rapist) && assignmentVisible(rapee)) || rapist.assignment === rapee.assignment;
-		const taboo = V.seeIncest === 0 && (V.familyTesting === 1 ? areRelated(rapist, rapee) : haveRelationP(rapist, rapee));
+		const taboo = V.seeIncest === 0 && areRelated(rapist, rapee);
 		const desire = !(rapist.relationship >= 3 && rapist.relationshipTarget === rapee.id) && !taboo;
 		const permission = willIgnoreRules || App.Utils.sexAllowed(rapist, rapee);
 		return opportunity && desire && permission;
diff --git a/src/npc/fSlaveImpreg.tw b/src/npc/fSlaveImpreg.tw
index 79660309dd23610f79553caa57ea114a27cbab81..0c4f65c4f64f50224329ea00a40b92fe19a80f22 100644
--- a/src/npc/fSlaveImpreg.tw
+++ b/src/npc/fSlaveImpreg.tw
@@ -17,7 +17,7 @@ __Select an eligible slave to serve as the semen donatrix:__
 	<<if _eligibles[_i].custom.label>> (@@.yellow;''<<print _eligibles[_i].custom.label>>''@@)<</if>>
 	<<if $familyTesting == 1 && totalRelatives($activeSlave) > 0>>
 		<<set _relTerm = relativeTerm($activeSlave, _eligibles[_i])>>
-		<<if _relTerm != "some unknown blood connection">>
+		<<if _relTerm != null>>
 			@@.lightgreen;<<= capFirstChar(_relTerm)>>@@
 		<</if>>
 	<</if>> /* closes extended family mode */
diff --git a/src/npc/newSlaveIncestSex.tw b/src/npc/newSlaveIncestSex.tw
index 9c44977e0b5666014c29236cec1d024633635c6b..a4f489ff0be037eef808a189786fef322aa03e7c 100644
--- a/src/npc/newSlaveIncestSex.tw
+++ b/src/npc/newSlaveIncestSex.tw
@@ -26,29 +26,10 @@
 <<setLocalPronouns $relative2 2>>
 
 /* setup identifiers */
-<<if $familyTesting == 1 >>
-	<<set _one = relativeTerm($relative2, $relative)>> /* relative is relative2's blank */
-	<<set _other = relativeTerm($relative, $relative2)>> /* relative2 is relative's blank */
-<<else>>
-	<<if $relative.actualAge == $relative2.actualAge>>
-		<<set _one = "twin">>
-		<<set _other = "twin">>
-	<<else>>
-		<<set _one = $relative.relation>>
-		<<set _other = $relative2.relation>>
-	<</if>>
-<</if>>
+<<set _one = relativeTerm($relative2, $relative)>> /* relative is relative2's blank */
+<<set _other = relativeTerm($relative, $relative2)>> /* relative2 is relative's blank */
 
-/* gender relation descriptions */
-/* TODO: is there a function for gender-aware relationships? */
-<<if $relative.vagina == -1 >>
-	<<set _one = _one.replace("mother", "father").replace("sister", "brother").replace("daughter", "son") >>
-<</if>>
-<<if $relative2.vagina == -1 >>
-	<<set _other = _other.replace("mother", "father").replace("sister", "brother").replace("daughter", "son") >>
-<</if>>
-
-<<if _one == _other >>
+<<if _one == _other>>
 /* two sisters / brothers: identify by age, in the case of same age twins check their birthWeek */
 	<<if $relative.actualAge == $relative2.actualAge>>
 		<<if $relative.birthWeek >= $relative2.birthWeek>>
@@ -62,20 +43,8 @@
 		<<set _onelong = "older "+_one >>
 		<<set _otherlong = "younger "+_other >>
 	<<elseif $relative.actualAge < $relative2.actualAge>>
-		/* Note: this is never true (at least without extended family mode) */
 		<<set _onelong = "younger "+_one >>
 		<<set _otherlong = "older "+_other >>
-	<<elseif $familyTesting != 1>> /* twins, no real differentiation */
-		<<if $relative.vagina == -1 && _one != "brother">>
-			<<set _onelong = _one + " brother">>
-		<<elseif _one != "sister">>
-			<<set _onelong = _one + " sister">>
-		<</if>>
-		<<if $relative2.vagina == -1 && _one != "brother">>
-			<<set _otherlong = _other + " brother" >>
-		<<elseif _one != "sister">>
-			<<set _otherlong = _other + " sister" >>
-		<</if>>
 	<</if>>
 <<else>>
 	<<set _onelong = _one>>
diff --git a/src/pregmod/fSlaveSlaveDick.tw b/src/pregmod/fSlaveSlaveDick.tw
index 6d88595f2b6a8ec7c469731b6c1dc81a2de218a8..181de817f8b699e944144409f4ca43d18f2f8ace 100644
--- a/src/pregmod/fSlaveSlaveDick.tw
+++ b/src/pregmod/fSlaveSlaveDick.tw
@@ -20,7 +20,7 @@ __Select an eligible slave:__
 	<</if>>
 	<<if $familyTesting == 1 && totalRelatives($activeSlave) > 0>>
 		<<set _relTerm = relativeTerm($activeSlave, _eligibles[_i])>>
-		<<if _relTerm != "some unknown blood connection">>
+		<<if _relTerm != null>>
 			@@.lightgreen;<<= capFirstChar(_relTerm)>>@@
 		<</if>>
 	<</if>> /* closes extended family mode */
diff --git a/src/pregmod/fSlaveSlaveDickConsummate.tw b/src/pregmod/fSlaveSlaveDickConsummate.tw
index 798e975be8051ade53425041bb3cc6ad2216fc80..075701944792f4e117ed1c50b2b832e8fe837e0e 100644
--- a/src/pregmod/fSlaveSlaveDickConsummate.tw
+++ b/src/pregmod/fSlaveSlaveDickConsummate.tw
@@ -28,7 +28,7 @@
 	<</if>>
 <</if>>
 
-<<if $activeSlave.mother == $slaverapistx.ID || $activeSlave.father == $slaverapistx.ID || $slaverapistx.mother == $activeSlave.ID || $slaverapistx.father == $activeSlave.ID || (areSisters($activeSlave, $slaverapistx) > 0)>>
+<<if areRelated($activeSlave, $slaverapistx)>>
 	<<set _isIncest = 1>>
 <</if>>
 
@@ -138,7 +138,7 @@ You call $slaverapistx.slaveName into the room.
 			$his own mother,
 		<<elseif $activeSlave.father == $slaverapistx.ID>>
 			the slave that fathered $him,
-		<<elseif (areSisters($activeSlave, $slaverapistx) > 0)>>
+		<<else>>
 			$his <<print relativeTerm($activeSlave, $slaverapistx)>>,
 		<</if>>
 	<<else>>
@@ -156,7 +156,7 @@ You call $slaverapistx.slaveName into the room.
 			$his own mother,
 		<<elseif $activeSlave.father == $slaverapistx.ID>>
 			the slave that fathered $him,
-		<<elseif (areSisters($activeSlave, $slaverapistx) > 0)>>
+		<<else>>
 			$his <<print relativeTerm($activeSlave, $slaverapistx)>>,
 		<</if>>
 	<<else>>
@@ -175,7 +175,7 @@ You call $slaverapistx.slaveName into the room.
 			$his own mother,
 		<<elseif $activeSlave.father == $slaverapistx.ID>>
 			the slave that fathered $him,
-		<<elseif (areSisters($activeSlave, $slaverapistx) > 0)>>
+		<<else>>
 			$his <<print relativeTerm($activeSlave, $slaverapistx)>>,
 		<</if>>
 		<<if ($activeSlave.sexualQuirk == "perverted") || ($activeSlave.sexualQuirk == "sinful")>>
@@ -234,7 +234,7 @@ You call $slaverapistx.slaveName into the room.
 			_his2 own mother
 		<<elseif $slaverapistx.father == $activeSlave.ID>>
 			the slave that fathered _him2
-		<<elseif (areSisters($slaverapistx, $activeSlave) > 0)>>
+		<<else>>
 			_his2 <<print relativeTerm($activeSlave, $slaverapistx)>>
 		<</if>>
 		tied to the bed,
diff --git a/src/pregmod/fSlaveSlaveVag.tw b/src/pregmod/fSlaveSlaveVag.tw
index 8e5ac20e9ac8491f6d658292a511e5c4e191aac0..918ddf181b3c761c52aebaf7404b0704cd2f956d 100644
--- a/src/pregmod/fSlaveSlaveVag.tw
+++ b/src/pregmod/fSlaveSlaveVag.tw
@@ -20,7 +20,7 @@ __Select an eligible slave:__
 	<</if>>
 	<<if $familyTesting == 1 && totalRelatives($activeSlave) > 0>>
 		<<set _relTerm = relativeTerm($activeSlave, _eligibles[_i])>>
-		<<if _relTerm != "some unknown blood connection">>
+		<<if _relTerm != null>>
 			@@.lightgreen;<<= capFirstChar(_relTerm)>>@@
 		<</if>>
 	<</if>> /* closes extended family mode */
diff --git a/src/pregmod/fSlaveSlaveVagConsummate.tw b/src/pregmod/fSlaveSlaveVagConsummate.tw
index 91d144f7f76dd2fd344daed69948b49c513f53d7..090bca27ba3281090b52efe19fb525c84fd8cbca 100644
--- a/src/pregmod/fSlaveSlaveVagConsummate.tw
+++ b/src/pregmod/fSlaveSlaveVagConsummate.tw
@@ -31,7 +31,7 @@
 	<<set _dicksize = "obscene">>
 <</if>>
 
-<<if $activeSlave.mother == $slaverapistx.ID || $activeSlave.father == $slaverapistx.ID || $slaverapistx.mother == $activeSlave.ID || $slaverapistx.father == $activeSlave.ID || (areSisters($activeSlave, $slaverapistx) > 0)>>
+<<if areRelated($activeSlave, $slaverapistx)>>
 	<<set _isIncest = 1>>
 <</if>>
 
@@ -70,7 +70,7 @@ You take a look at the slave you selected.
 		_his2 own mother,
 	<<elseif $slaverapistx.mother == $activeSlave.ID>>
 		the slave that fathered _him2,
-	<<elseif (areSisters($activeSlave, $slaverapistx) > 0)>>
+	<<else>>
 		_his2 <<print relativeTerm($slaverapistx, $activeSlave)>>,
 	<</if>>
 	<<if ($slaverapistx.sexualQuirk == "perverted") || ($slaverapistx.sexualQuirk == "sinful")>>
@@ -109,7 +109,7 @@ Next, you see to $activeSlave.slaveName.
 		$his own mother,
 	<<elseif $activeSlave.father == $slaverapistx.ID>>
 		the slave that fathered $him,
-	<<elseif (areSisters($activeSlave, $slaverapistx) > 0)>>
+	<<else>>
 		$his <<print relativeTerm($activeSlave, $slaverapistx)>>,
 	<</if>>
 	<<if ($activeSlave.sexualQuirk == "perverted") || ($activeSlave.sexualQuirk == "sinful")>>
diff --git a/src/pregmod/slaveOnSlaveFeedingWorkAround.tw b/src/pregmod/slaveOnSlaveFeedingWorkAround.tw
index 7dd9cbb6a79058f9da866389d4ae0e75bfa8dddb..3fd432e7361eb38e669f6d56c04480c9f250d48e 100644
--- a/src/pregmod/slaveOnSlaveFeedingWorkAround.tw
+++ b/src/pregmod/slaveOnSlaveFeedingWorkAround.tw
@@ -45,7 +45,7 @@ __2 Liters__
 		<<if ($slaves[_i].ID != $activeSlave.ID) && $slaves[_i].nipples != "fuckable">>
 			<<set _name = SlaveFullName($slaves[_i])>>
 			<<print "[[_name|FSlaveFeed][$milkTap = $slaves[" + _i + "], $activeSlave.inflation = 1, $activeSlave.inflationType = _descM, $activeSlave.inflationMethod = 3]]">>
-			<<if relativeTerm($activeSlave, $slaves[_i]) != "some unknown blood connection">>
+			<<if relativeTerm($activeSlave, $slaves[_i]) != null>>
 				<<print relativeTerm($activeSlave, $slaves[_i])>>
 			<</if>>
 			<<if $slaves[_i].relationshipTarget == $activeSlave.ID>>
@@ -89,7 +89,7 @@ __4 Liters__
 			<<if ($slaves[_i].ID != $activeSlave.ID) && $slaves[_i].nipples != "fuckable">>
 				<<set _name = SlaveFullName($slaves[_i])>>
 				<<print "[[_name|FSlaveFeed][$milkTap = $slaves[" + _i + "], $activeSlave.inflation = 2, $activeSlave.inflationType = _descM, $activeSlave.inflationMethod = 3]]">>
-				<<if relativeTerm($activeSlave, $slaves[_i]) != "some unknown blood connection">>
+				<<if relativeTerm($activeSlave, $slaves[_i]) != null>>
 					<<print relativeTerm($activeSlave, $slaves[_i])>>
 				<</if>>
 				<<if $slaves[_i].relationshipTarget == $activeSlave.ID>>
@@ -132,7 +132,7 @@ __4 Liters__
 			<<if ($slaves[_i].ID != $activeSlave.ID) && $slaves[_i].nipples != "fuckable">>
 				<<set _name = SlaveFullName($slaves[_i])>>
 				<<print "[[_name|FSlaveFeed][$milkTap = $slaves[" + _i + "], $activeSlave.inflation = 3, $activeSlave.inflationType = _descM, $activeSlave.inflationMethod = 3]]">>
-				<<if relativeTerm($activeSlave, $slaves[_i]) != "some unknown blood connection">>
+				<<if relativeTerm($activeSlave, $slaves[_i]) != null>>
 					<<print relativeTerm($activeSlave, $slaves[_i])>>
 				<</if>>
 				<<if $slaves[_i].relationshipTarget == $activeSlave.ID>>
diff --git a/src/uncategorized/brothelReport.tw b/src/uncategorized/brothelReport.tw
index 46c4650b86f9258d1cf68db1d40657c079727c88..1e6fa3ba0ab4b63abbd52360982e634eb4e8e208 100644
--- a/src/uncategorized/brothelReport.tw
+++ b/src/uncategorized/brothelReport.tw
@@ -100,14 +100,10 @@
 			<<setLocalPronouns $slaves[$i] 2>>
 			$He dotes over $his <<print relationshipTerm($Madam)>>, $slaves[$i].slaveName, making sure _he2 is safe, but unfortunately driving potential customers away from _him2.
 			<<set $slaves[$i].devotion++>>
-		<<elseif $familyTesting == 1 && areRelated($Madam, $slaves[$i]) > 0>>
+		<<elseif areRelated($Madam, $slaves[$i])>>
 			<<setLocalPronouns $slaves[$i] 2>>
 			$He pays special attention to $his <<print relativeTerm($Madam,$slaves[$i])>>, $slaves[$i].slaveName, making sure _he2 is treated well and showing off _his2 skills.
 			<<set $slaves[$i].trust++>>
-		<<elseif $Madam.relationTarget == $slaves[$i].ID && $familyTesting == 0>>
-			<<setLocalPronouns $slaves[$i] 2>>
-			$He pays special attention to $his $slaves[$i].relation, $slaves[$i].slaveName, making sure _he2 is treated well and showing off _his2 skills.
-			<<set $slaves[$i].trust++>>
 		<</if>>
 		<<if $slaves[$i].prestigeDesc == "$He is a famed Free Cities whore, and commands top prices.">>
 			<<setLocalPronouns $slaves[$i] 2>>
diff --git a/src/uncategorized/cellblockReport.tw b/src/uncategorized/cellblockReport.tw
index fc7d032af4309216d914739489cd6dae4b5d545a..215ced49ecf477c11db116ffed040ad8dd0e0a91 100644
--- a/src/uncategorized/cellblockReport.tw
+++ b/src/uncategorized/cellblockReport.tw
@@ -105,14 +105,10 @@
 				$His and $slaves[$i].slaveName's relationship has been shattered by these events.
 				<<set $Wardeness.relationship = 0, $Wardeness.relationshipTarget = 0, $slaves[_FLs].relationship = 0, $slaves[_FLs].relationshipTarget = 0, $slaves[$i].relationship = 0, $slaves[$i].relationshipTarget = 0>>
 			<</if>>
-		<<elseif $familyTesting == 1 && areRelated($Wardeness, $slaves[$i])>>
+		<<elseif areRelated($Wardeness, $slaves[$i])>>
 			<<setLocalPronouns $slaves[$i] 2>>
 			$He shows $his <<print relativeTerm($Wardeness,$slaves[$i])>> $slaves[$i].slaveName no mercy, making sure _he2 understands _his2 place.
 			<<set $slaves[$i].devotion++, $slaves[$i].trust-->>
-		<<elseif $Wardeness.relationTarget == $slaves[$i].ID && $familyTesting == 0>>
-			<<setLocalPronouns $slaves[$i] 2>>
-			$He shows $his $slaves[$i].relation $slaves[$i].slaveName no mercy, making sure _he2 understands _his2 place.
-			<<set $slaves[$i].devotion++, $slaves[$i].trust-->>
 		<</if>>
 	<</for>>
 	<<if (_DL < $cellblock)>>
diff --git a/src/uncategorized/clinicReport.tw b/src/uncategorized/clinicReport.tw
index 98b84d44f1c0564f72e2e3eae232eb8353c8136b..ca96d227f4b8bf6c2b60bf24f6858b4dbd7e4838 100644
--- a/src/uncategorized/clinicReport.tw
+++ b/src/uncategorized/clinicReport.tw
@@ -93,14 +93,10 @@
 			$He dedicates most of $his attention to $his <<print relationshipTerm($Nurse)>>, $slaves[$i].slaveName, making sure _he2 has everything _he2 needs and more. This lavish attention detracts from $his overall effectiveness.
 			<<set _idleBonus -= 3, $slaves[$i].devotion++, $slaves[$i].trust++>>
 			<<run improveCondition($slaves[$i], 3)>>
-		<<elseif $familyTesting == 1 && areRelated($Nurse, $slaves[$i]) > 0>>
+		<<elseif areRelated($Nurse, $slaves[$i])>>
 			$He makes sure to spend extra time caring for $his <<print relativeTerm($Nurse,$slaves[$i])>>, $slaves[$i].slaveName.
 			<<set $slaves[$i].trust++>>
 			<<run improveCondition($slaves[$i], 1)>>
-		<<elseif $Nurse.relationTarget == $slaves[$i].ID && $familyTesting == 0>>
-			$He makes sure to spend extra time caring for $his $slaves[$i].relation, $slaves[$i].slaveName.
-			<<set $slaves[$i].trust++>>
-			<<run improveCondition($slaves[$i], 1)>>
 		<</if>>
 		<<switch $slaves[$i].prestigeDesc>>
 		<<case "$He is a famed Free Cities whore, and commands top prices.">>
diff --git a/src/uncategorized/dairyReport.tw b/src/uncategorized/dairyReport.tw
index dc7f7d9b32f5746d10eed941133e494b6b2bdbb9..969f2fc0d7daf485b3968822dfa07a85b088f444 100644
--- a/src/uncategorized/dairyReport.tw
+++ b/src/uncategorized/dairyReport.tw
@@ -233,14 +233,10 @@
 			<<setLocalPronouns $slaves[$i] 2>>
 			$He dotes over $his <<print relationshipTerm($Milkmaid)>>, $slaves[$i].slaveName, making sure _he2 is happy and comfortable.
 			<<set $slaves[$i].devotion++, $slaves[$i].trust++>>
-		<<elseif $familyTesting == 1 && areRelated($Milkmaid, $slaves[$i]) > 0>>
+		<<elseif areRelated($Milkmaid, $slaves[$i])>>
 			<<setLocalPronouns $slaves[$i] 2>>
 			$He pays special attention to $his <<print relativeTerm($Milkmaid,$slaves[$i])>>, $slaves[$i].slaveName, making sure _he2 is well kept and happy.
 			<<set $slaves[$i].trust++>>
-		<<elseif $Milkmaid.relationTarget == $slaves[$i].ID && $familyTesting == 0>>
-			<<setLocalPronouns $slaves[$i] 2>>
-			$He pays special attention to $his $slaves[$i].relation, $slaves[$i].slaveName, making sure _he2 is well kept and happy.
-			<<set $slaves[$i].trust++>>
 		<</if>>
 		<<if $slaves[$i].prestigeDesc == "$He is remembered for winning best in show as a dairy cow.">>
 			<<if ($slaves[$i].lactation > 0) && (($slaves[$i].boobs-$slaves[$i].boobsImplant) > 6000)>>
diff --git a/src/uncategorized/freeRangeDairyAssignmentScene.tw b/src/uncategorized/freeRangeDairyAssignmentScene.tw
index d245d0e7fcfab1a240e7c414f9e82ef7d79b2bd8..ad3cf8c3df054be206da4f878a85ee80d1b741dd 100644
--- a/src/uncategorized/freeRangeDairyAssignmentScene.tw
+++ b/src/uncategorized/freeRangeDairyAssignmentScene.tw
@@ -116,39 +116,12 @@
 		/* GETTING IN */
 		Eventually, $activeSlave.slaveName arrives at $his designated milking stall.
 		<<set _assayedSlaveAvailable = 0>>
-		<<if $familyTesting == 1>>
-			<<if totalRelatives($activeSlave) > 0>>
-				<<set _relativeCattle = $slaves.filter(function(s) { return (areRelated(s, $activeSlave) && s.assignment == "work in the dairy") ; })>>
-				<<if _relativeCattle.length > 0>>
-					<<set _assayedSlave = _relativeCattle.random()>>
-					<<set _assayedSlaveAvailable = 1>>
-					<<if $activeSlave.mother == _assayedSlave.ID>>
-						<<set _assayType = "mother">>
-					<<elseif _assayedSlave.mother == $activeSlave.ID || _assayedSlave.father == $activeSlave.ID>>
-						<<set _assayType = "daughter">>
-					<<elseif $activeSlave.father == _assayedSlave.ID>>
-						<<set _assayType = "father">>
-					<<else>>
-						<<switch areSisters($activeSlave, _assayedSlave)>>
-						<<case 1>>
-							<<set _assayType = "twin">>
-						<<case 2>>
-							<<set _assayType = "sister">>
-						<<case 3>>
-							<<set _assayType = "half-sister">>
-						<</switch>>
-					<</if>>
-				<</if>>
-			<</if>>
-		<<else>>
-			<<if ($activeSlave.relation != 0)>>
-				<<set _assayedSlave = getSlave($activeSlave.relationTarget)>>
-				<<if (def _assayedSlave) && _assayedSlave.assignment == "work in the dairy">>
-					<<set _assayedSlaveAvailable = 1>>
-					<<set _assayType = $activeSlave.relation>>
-				<</if>>
-			<</if>>
-		<</if>> /*closes extended family mode */
+		<<set _relativeCattle = $slaves.filter(function(s) { return (areRelated(s, $activeSlave) && s.assignment == "work in the dairy") ; })>>
+		<<if _relativeCattle.length > 0>>
+			<<set _assayedSlave = _relativeCattle.random()>>
+			<<set _assayedSlaveAvailable = 1>>
+			<<set _assayType = relativeTerm($activeSlave, _assayedSlave)>>
+		<</if>>
 		<<if _assayedSlaveAvailable == 0 && $activeSlave.relationship > 0>>
 			<<set _assayedSlave = getSlave($activeSlave.relationshipTarget)>>
 			<<if (def _assayedSlave) && _assayedSlave.assignment == "work in the dairy">>
diff --git a/src/uncategorized/longSlaveDescription.tw b/src/uncategorized/longSlaveDescription.tw
index ce246bfad8eb5a8c5e70d605a34f33abf3e1d1b0..dc4d10ed8ec4ca6b71def1db09f5d9a103dcd74b 100644
--- a/src/uncategorized/longSlaveDescription.tw
+++ b/src/uncategorized/longSlaveDescription.tw
@@ -957,66 +957,15 @@ is
 	<<if $activeSlave.relationship >= 3 && totalRelatives($activeSlave) > 0>>
 		<<set _lover = getSlave($activeSlave.relationshipTarget)>>
 		<<if def _lover>>
-			<<setLocalPronouns _lover 2>>
-			<<if $activeSlave.mother == _lover.ID>>
-				$He is in an <span class="lightgreen">incestuous relationship with $his mother, <<= SlaveFullName(_lover)>>.</span>
-			<<elseif $activeSlave.father == _lover.ID>>
-				$He is in an <span class="lightgreen">incestuous relationship with $his father, <<= SlaveFullName(_lover)>>.</span>
-			<<elseif _lover.mother == $activeSlave.ID || _lover.father == $activeSlave.ID>>
-				$He is in an <span class="lightgreen">incestuous relationship with $his _daughter2, <<= SlaveFullName(_lover)>>.</span>
-			<<elseif (def $showDistantRelatives) && $showDistantRelatives == 1>>
-				<<if isAunt($activeSlave, _lover)>>
-					$He is in an <span class="lightgreen">incestuous relationship with $his aunt, <<= SlaveFullName(_lover)>>.</span>
-				<<elseif isAunt(_lover, $activeSlave)>>
-					$He is in an <span class="lightgreen">incestuous relationship with $his niece, <<= SlaveFullName(_lover)>>.</span>
-				<<elseif areCousins($activeSlave, _lover)>>
-					$He is in an <span class="lightgreen">incestuous relationship with $his cousin, <<= SlaveFullName(_lover)>>.</span>
-				<</if>>
-			<<else>>
-				<<switch areSisters($activeSlave, _lover)>>
-				<<case 1>>
-					$He is in an <span class="lightgreen">incestuous relationship with $his twin, <<= SlaveFullName(_lover)>>.</span>
-				<<case 2>>
-					$He is in an <span class="lightgreen">incestuous relationship with $his _sister2, <<= SlaveFullName(_lover)>>.</span>
-				<<case 3>>
-					$He is in an <span class="lightgreen">incestuous relationship with $his half-<<= _sister2>>, <<= SlaveFullName(_lover)>>.</span>
-				<</switch>>
+			<<set _relTerm = relativeTerm($activeSlave, _lover)>>
+			<<if def _relTerm>>
+				$He is in an <span class="lightgreen">incestuous relationship with $his _relTerm, <<= SlaveFullName(_lover)>>.</span>
 			<</if>>
 		<</if>>
 	<<elseif $activeSlave.relationship <= -2>>
-		<<setPlayerPronouns>>
-		<<if ($activeSlave.mother == -1 || $activeSlave.father == -1)>>
-			<<if ($activeSlave.mother == -1 && $activeSlave.father == -1)>>
-				$He is in an <span class="lightgreen">incestuous relationship with $his sole parent, you.</span>
-			<<elseif $activeSlave.mother == -1>>
-				$He is in an <span class="lightgreen">incestuous relationship with $his mother, you.</span>
-			<<elseif $activeSlave.father == -1>>
-				$He is in an <span class="lightgreen">incestuous relationship with $his father, you.</span>
-			<</if>>
-		<<elseif $PC.mother == $activeSlave.ID || $PC.father == $activeSlave.ID>>
-			$He is in an <span class="lightgreen">incestuous relationship with $his _daughterP, you.</span>
-		<<elseif (def $showDistantRelatives) && $showDistantRelatives == 1>>
-			<<if isAunt($activeSlave, $PC)>>
-				<<if $PC.title == 1>>
-					$He is in an <span class="lightgreen">incestuous relationship with $his uncle, you.</span>
-				<<elseif $PC.title == 0>>
-					$He is in an <span class="lightgreen">incestuous relationship with $his aunt, you.</span>
-				<</if>>
-			<<elseif isAunt($PC, $activeSlave) && $PC.title == 0>>
-				<<if $PC.title == 1>>
-					$He is in an <span class="lightgreen">incestuous relationship with $his nephew, you.</span>
-				<<elseif $PC.title == 0>>
-					$He is in an <span class="lightgreen">incestuous relationship with $his niece, you.</span>
-				<</if>>
-			<<elseif areCousins($PC, $activeSlave)>>
-				$He is in an <span class="lightgreen">incestuous relationship with $his cousin, you.</span>
-			<</if>>
-		<<elseif areSisters($PC, $activeSlave) == 1>>
-			$He is in an <span class="lightgreen">incestuous relationship with $his twin _sisterP, you.</span>
-		<<elseif areSisters($PC, $activeSlave) == 2>>
-			$He is in an <span class="lightgreen">incestuous relationship with $his _sisterP, you.</span>
-		<<elseif areSisters($PC, $activeSlave) == 3>>
-			$He is in an <span class="lightgreen">incestuous relationship with $his half-<<= _sisterP>>, you.</span>
+		<<set _relTerm = relativeTerm($activeSlave, $PC)>>
+		<<if def _relTerm>>
+			$He is in an <span class="lightgreen">incestuous relationship with $his _relTerm, you.</span>
 		<</if>>
 	<</if>>
 
diff --git a/src/uncategorized/neighborsFSAdoption.tw b/src/uncategorized/neighborsFSAdoption.tw
index 243903eef8d02bbb66d2719b9e8467d8aba3966f..0ec292191497c1bcb0158481af06a252d5b27fd1 100644
--- a/src/uncategorized/neighborsFSAdoption.tw
+++ b/src/uncategorized/neighborsFSAdoption.tw
@@ -479,13 +479,9 @@ societal development.
 	<</if>>
 <</if>>
 <<if ($arcologies[$i].FSIncestFetishist == "unset")>>
-	<<if $familyTesting == 1>>
-		<<set _lover = $slaves.find(function(s) { return s.ID == $leaders[$j].relationshipTarget && areRelated(s, $leaders[$j]) && s.assignment == "live with your agent"; })>>
-	<<else>>
-		<<set _lover = $slaves.find(function(s) { return s.ID == $leaders[$j].relationshipTarget && s.ID == $leaders[$j].relationTarget && s.assignment == "live with your agent"; })>>
-	<</if>>
+	<<set _lover = $slaves.find(function(s) { return s.ID == $leaders[$j].relationshipTarget && areRelated(s, $leaders[$j]) && s.assignment == "live with your agent"; })>>
 	<<if ($leaders[$j].behavioralQuirk == "sinful" || $leaders[$j].sexualQuirk == "perverted") && def _lover && $seeIncest == 1>>
-		Your agent @@.pink;$leaders[$j].slaveName@@ successfully pushes it to @@.yellow;adopt Incest Festishism,@@ to share the love and joy $he holds with $his relativeTerm($leaders[$j], _lover).
+		Your agent @@.pink;$leaders[$j].slaveName@@ successfully pushes it to @@.yellow;adopt Incest Festishism,@@ to share the love and joy $he holds with $his <<print relativeTerm($leaders[$j], _lover)>>.
 		<<set $arcologies[$i].FSIncestFetishist = 5>><<break>>
 	<</if>>
 <</if>>
diff --git a/src/uncategorized/randomNonindividualEvent.tw b/src/uncategorized/randomNonindividualEvent.tw
index 8fce0e6d77011dab9b5164110090ba38c9a2af5f..dd4804cf31744ff66b8f7ca70b67990a8c78796f 100644
--- a/src/uncategorized/randomNonindividualEvent.tw
+++ b/src/uncategorized/randomNonindividualEvent.tw
@@ -766,42 +766,24 @@
 	<</if>>
 
 	<<if $familyTesting == 1>>
-
 		<<set _recruiterSlaves = $slaves.filter(function(s) { return s.fuckdoll == 0 && s.canRecruit == 1 && s.devotion > 50 && canWalk(s); })>>
-		<<for _recruiterSlaves.length > 0>>
-			<<set $recruiterSlave = _recruiterSlaves.pluck()>>
-			<<if (random(1,100) > 90+(totalRelatives($recruiterSlave)*2) || $cheatMode)>>
-				<<set $j = $genePool.findIndex(function(o) { return o.ID == $recruiterSlave.ID; })>>
-				<<if $j != -1>>
-					<<set $events.push("RE relative recruiter")>>
-					<<set $recruiterSlave = $recruiterSlave.ID>>
-					<<break>>
-				<<else>> /* no matching slave object in the slavesOriginal array */
-					<<set $i = $slaveIndices[$recruiterSlave.ID]>>
-					<<set $slaves[$i].canRecruit = 0>>
-					<<set $recruiterSlave = -1>>
-				<</if>>
-			<</if>>
-		<</for>>
-
-	<<else>> /* extended family mode == 0 */
-
+	<<else>>
 		<<set _recruiterSlaves = $slaves.filter(function(s) { return s.recruiter != 0 && s.fuckdoll == 0 && s.devotion > 50 && s.relation == 0 && canWalk(s); })>>
-		<<for _recruiterSlaves.length > 0>>
-			<<set $recruiterSlave = _recruiterSlaves.pluck()>>
-			<<set $j = $genePool.findIndex(function(o) { return o.ID == $recruiterSlave.ID; })>>
-			<<if $j != -1>>
-				<<set $events.push("RE relative recruiter")>>
-				<<set $recruiterSlave = $recruiterSlave.ID>>
-				<<break>>
-			<<else>> /* no matching slave object in the slavesOriginal array -- bug? */
-				<<set $i = $slaveIndices[$recruiterSlave.ID]>>
-				<<set $slaves[$i].canRecruit = 0>>
-				<<set $recruiterSlave = -1>>
-			<</if>>
-		<</for>>
+	<</if>>
 
-	<</if>> /* closes extended family mode */
+	<<for _recruiterSlaves.length > 0>>
+		<<set $recruiterSlave = _recruiterSlaves.pluck()>>
+		<<set $j = $genePool.findIndex(function(o) { return o.ID == $recruiterSlave.ID; })>>
+		<<if $j != -1>>
+			<<set $events.push("RE relative recruiter")>>
+			<<set $recruiterSlave = $recruiterSlave.ID>>
+			<<break>>
+		<<else>> /* no matching slave object in the slavesOriginal array -- bug? */
+			<<set $i = $slaveIndices[$recruiterSlave.ID]>>
+			<<set $slaves[$i].canRecruit = 0>>
+			<<set $recruiterSlave = -1>>
+		<</if>>
+	<</for>>
 
 	<<if $FSAnnounced == 1>>
 		<<set $FSAcquisitionEvents = []>>
diff --git a/src/uncategorized/saLiveWithHG.tw b/src/uncategorized/saLiveWithHG.tw
index 566ba58c518b9cf9a7cc9128010cc1a09289cf4c..aa6ab7c9106388bb6df1ff8feb5114898d492a81 100644
--- a/src/uncategorized/saLiveWithHG.tw
+++ b/src/uncategorized/saLiveWithHG.tw
@@ -172,121 +172,39 @@
 	$HeadGirl.slaveName @@.lightgreen;resolves the rivalry@@ between _him2 and $slaves[$i].slaveName, mostly by the expedient of punishing $slaves[$i].slaveName savagely whenever $he gives any trouble.
 	<<set $HeadGirl.rivalry = 0, $HeadGirl.rivalryTarget = 0, $slaves[$i].rivalry = 0, $slaves[$i].rivalryTarget = 0>>
 <<elseif ($HeadGirl.relationship == 0)>>
-	<<if $familyTesting == 1>>
-		<<if $slaves[$i].mother == $HeadGirl.ID || $slaves[$i].father == $HeadGirl.ID || $slaves[$i].ID == $HeadGirl.mother || $slaves[$i].ID == $HeadGirl.father || areSisters($HeadGirl, $slaves[$i]) > 0>>
-			$HeadGirl.slaveName
-			<<if $HeadGirl.devotion > 95>>
-				is so inured to the perversities of slavery that _he2 @@.hotpink;enjoys@@ the prospect of sexual service from _his2
-				<<set $HeadGirl.devotion += 1>>
-			<<elseif $HeadGirl.devotion > 60>>
-				is so devoted to you that _he2 accepts the prospect of sexual service from _his2
-			<<else>>
-				is somewhat @@.mediumorchid;disturbed@@ by the prospect of sexual service from _his2
-				<<set $HeadGirl.devotion -= 2>>
-			<</if>>
-			<<if $slaves[$i].mother == $HeadGirl.ID || $slaves[$i].father == $HeadGirl.ID>>
-				$daughter.
-			<<elseif $HeadGirl.mother == $slaves[$i].ID>>
-				mother.
-			<<elseif $HeadGirl.father == $slaves[$i].ID>>
-				father.
-			<<else>>
-				<<switch areSisters($HeadGirl, $slaves[$i])>>
-				<<case 1>>
-					twin.
-				<<case 2>>
-					$sister.
-				<<case 3>>
-					half-<<= $sister>>.
-				<</switch>>
-			<</if>>
-			$slaves[$i].slaveName
-			<<if $slaves[$i].devotion > 95>>
-				is so inured to the perversities of slavery that $he @@.hotpink;enjoys@@ the prospect of sexually servicing $his
-				<<set $slaves[$i].devotion += 1>>
-			<<elseif $slaves[$i].devotion > 60>>
-				is so devoted to you that $he accepts the prospect of sexually servicing $his
-			<<elseif $slaves[$i].devotion > 40>>
-				is somewhat @@.mediumorchid;disturbed@@ by the prospect of sexually servicing $his
-				<<set $slaves[$i].devotion -= 2>>
-			<<elseif $slaves[$i].devotion > 20>>
-				is @@.mediumorchid;disturbed@@ by the prospect of sexually servicing $his
-				<<set $slaves[$i].devotion -= 4>>
-			<<elseif $slaves[$i].devotion >= -20>>
-				is @@.mediumorchid;strongly disturbed@@ by the prospect of sexually servicing $his
-				<<set $slaves[$i].devotion -= 5>>
-			<<else>>
-				is @@.mediumorchid;revolted@@ by the prospect of sexually servicing $his
-				<<set $slaves[$i].devotion -= 10>>
-			<</if>>
-			<<if $HeadGirl.mother == $slaves[$i].ID || $HeadGirl.father == $slaves[$i].ID>>
-				_daughter2.
-			<<elseif $slaves[$i].mother == $HeadGirl.ID>>
-				mother.
-			<<elseif $slaves[$i].father == $HeadGirl.ID>>
-				father.
-			<<else>>
-				<<switch areSisters($HeadGirl, $slaves[$i])>>
-				<<case 1>>
-					twin.
-				<<case 2>>
-					_sister2.
-				<<case 3>>
-					half-<<= _sister2>>.
-				<</switch>>
-			<</if>>
+	<<if areRelated($slaves[$i], $HeadGirl)>>
+		$HeadGirl.slaveName
+		<<if $HeadGirl.devotion > 95>>
+			is so inured to the perversities of slavery that _he2 @@.hotpink;enjoys@@ the prospect of sexual service from _his2
+			<<set $HeadGirl.devotion += 1>>
+		<<elseif $HeadGirl.devotion > 60>>
+			is so devoted to you that _he2 accepts the prospect of sexual service from _his2
+		<<else>>
+			is somewhat @@.mediumorchid;disturbed@@ by the prospect of sexual service from _his2
+			<<set $HeadGirl.devotion -= 2>>
 		<</if>>
-	<<else>>
-		<<if $slaves[$i].relation != 0 && $slaves[$i].relationTarget == $HeadGirl.ID>>
-			$HeadGirl.slaveName
-			<<if $HeadGirl.devotion > 95>>
-				is so inured to the perversities of slavery that _he2 @@.hotpink;enjoys@@ the prospect of sexual service from _his2
-				<<set $HeadGirl.devotion += 1>>
-			<<elseif $HeadGirl.devotion > 60>>
-				is so devoted to you that _he2 accepts the prospect of sexual service from _his2
-			<<else>>
-				is somewhat @@.mediumorchid;disturbed@@ by the prospect of sexual service from _his2
-				<<set $HeadGirl.devotion -= 2>>
-			<</if>>
-			<<if $HeadGirl.relation == "twin">>
-				twin.
-			<<elseif $HeadGirl.relation == "sister">>
-				$sister.
-			<<elseif $HeadGirl.relation == "mother">>
-				$daughter.
-			<<elseif $HeadGirl.relation == "daughter">>
-				mother.
-			<</if>>
-			$slaves[$i].slaveName
-			<<if $slaves[$i].devotion > 95>>
-				is so inured to the perversities of slavery that $he @@.hotpink;enjoys@@ the prospect of sexually servicing $his
-				<<set $slaves[$i].devotion += 1>>
-			<<elseif $slaves[$i].devotion > 60>>
-				is so devoted to you that $he accepts the prospect of sexually servicing $his
-			<<elseif $slaves[$i].devotion > 40>>
-				is somewhat @@.mediumorchid;disturbed@@ by the prospect of sexually servicing $his
-				<<set $slaves[$i].devotion -= 2>>
-			<<elseif $slaves[$i].devotion > 20>>
-				is @@.mediumorchid;disturbed@@ by the prospect of sexually servicing $his
-				<<set $slaves[$i].devotion -= 4>>
-			<<elseif $slaves[$i].devotion >= -20>>
-				is @@.mediumorchid;strongly disturbed@@ by the prospect of sexually servicing $his
-				<<set $slaves[$i].devotion -= 5>>
-			<<else>>
-				is @@.mediumorchid;revolted@@ by the prospect of sexually servicing $his
-				<<set $slaves[$i].devotion -= 10>>
-			<</if>>
-			<<if $slaves[$i].relation == "twin">>
-				twin.
-			<<elseif $slaves[$i].relation == "sister">>
-				_sister2.
-			<<elseif $slaves[$i].relation == "mother">>
-				_daughter2.
-			<<elseif $slaves[$i].relation == "daughter">>
-				mother.
-			<</if>>
+		<<print relativeTerm($HeadGirl, $slaves[$i])>>.
+		$slaves[$i].slaveName
+		<<if $slaves[$i].devotion > 95>>
+			is so inured to the perversities of slavery that $he @@.hotpink;enjoys@@ the prospect of sexually servicing $his
+			<<set $slaves[$i].devotion += 1>>
+		<<elseif $slaves[$i].devotion > 60>>
+			is so devoted to you that $he accepts the prospect of sexually servicing $his
+		<<elseif $slaves[$i].devotion > 40>>
+			is somewhat @@.mediumorchid;disturbed@@ by the prospect of sexually servicing $his
+			<<set $slaves[$i].devotion -= 2>>
+		<<elseif $slaves[$i].devotion > 20>>
+			is @@.mediumorchid;disturbed@@ by the prospect of sexually servicing $his
+			<<set $slaves[$i].devotion -= 4>>
+		<<elseif $slaves[$i].devotion >= -20>>
+			is @@.mediumorchid;strongly disturbed@@ by the prospect of sexually servicing $his
+			<<set $slaves[$i].devotion -= 5>>
+		<<else>>
+			is @@.mediumorchid;revolted@@ by the prospect of sexually servicing $his
+			<<set $slaves[$i].devotion -= 10>>
 		<</if>>
-	<</if>> /*closes extended family mode */
+		<<print relativeTerm($slaves[$i], $HeadGirl)>>.
+	<</if>>
 	<<if ($slaves[$i].relationship == 0) && ($slaves[$i].devotion > 20)>>
 		$slaves[$i].slaveName sees $HeadGirl.slaveName constantly, and does $his best to @@.lightgreen;become _his2 friend.@@
 		<<set $HeadGirl.relationship = 1, $HeadGirl.relationshipTarget = $slaves[$i].ID, $slaves[$i].relationship = 1, $slaves[$i].relationshipTarget = $HeadGirl.ID>>
diff --git a/src/uncategorized/saRecruitGirls.tw b/src/uncategorized/saRecruitGirls.tw
index d2128598523c2bfa318c6c75177b139aa0ad16cb..70e1fce44d86e1b4889b1c5d746b3113609a2e67 100644
--- a/src/uncategorized/saRecruitGirls.tw
+++ b/src/uncategorized/saRecruitGirls.tw
@@ -293,7 +293,7 @@
 			<</if>>
 		<<elseif $arcologies[0].FSEgyptianRevivalist != "unset">>
 			<<if $arcologies[_j].FSEgyptianRevivalist != "unset">>
-				$He advances Egyptian Revivalism there by playing $his part in the endless round of voluptuous entertainments<<if $slaves[$i].relationship && $slaves[$i].relation && $slaves[$i].relationshipTarget == $slaves[$i].relationTarget>>, which $he's perfect for, since everyone knows that at the end of the day $he'll go home and make love to a blood relative<<set $arcologies[_j].FSEgyptianRevivalist++>><</if>>.
+				$He advances Egyptian Revivalism there by playing $his part in the endless round of voluptuous entertainments<<if hasFamilySex($slaves[$i])>>, which $he's perfect for, since everyone knows that at the end of the day $he'll go home and make love to a blood relative<<set $arcologies[_j].FSEgyptianRevivalist++>><</if>>.
 				<<set $arcologies[_j].FSEgyptianRevivalist += _influence>>
 			<</if>>
 		<<elseif $arcologies[0].FSEdoRevivalist != "unset">>
@@ -739,25 +739,11 @@
 			<</if>>
 		<</if>>
 	<<elseif $arcologies[0].FSEgyptianRevivalist != "unset">>
-		<<if $familyTesting == 1>>
-			<<if totalRelatives($slaves[$i]) > 0>>
-				<<set _recruiterRelation = randomRelatedAvailableSlave($slaves[$i])>>
-				<<if def _recruiterRelation>>
-					<<if ($slaves[$i].energy > 60 || $slaves[$i].sexualQuirk == "tease" || $slaves[$i].sexualQuirk == "perverted") && (_recruiterRelation.energy > 60 || _recruiterRelation.sexualQuirk == "tease" || _recruiterRelation.sexualQuirk == "perverted")>>
-						<<set _seed += 6, _FSmatch++, $arcologies[0].FSEgyptianRevivalist += 0.02*$FSSingleSlaveRep>>
-					<</if>>
-				<</if>>
-			<</if>>
-		<<else>>
-			<<if $slaves[$i].relation != 0>>
-				<<set _recruiterRelation = getSlave($slaves[$i].relationTarget)>>
-				/* availability */
-				<<if isSlaveAvailable(_recruiterRelation)>>
-					/* willingness; protip: relationSHIP optional */
-					<<if ($slaves[$i].energy > 60 || $slaves[$i].sexualQuirk == "tease" || $slaves[$i].sexualQuirk == "perverted") && (_recruiterRelation.energy > 60 || _recruiterRelation.sexualQuirk == "tease" || _recruiterRelation.sexualQuirk == "perverted")>>
-						<<set _seed += 6, _FSmatch++, $arcologies[0].FSEgyptianRevivalist += 0.02*$FSSingleSlaveRep>>
-					<</if>>
-				<</if>>
+		<<set _recruiterRelation = ($familyTesting === 1) ? randomAvailableRelatedSlave($slaves[$i]) : getSlave($slaves[$i].relationTarget)>>
+		<<if def _recruiterRelation>>
+			/* willingness; protip: relationship optional, and actual sex doesn't need to be allowed */
+			<<if ($slaves[$i].energy > 60 || $slaves[$i].sexualQuirk == "tease" || $slaves[$i].sexualQuirk == "perverted") && (_recruiterRelation.energy > 60 || _recruiterRelation.sexualQuirk == "tease" || _recruiterRelation.sexualQuirk == "perverted")>>
+				<<set _seed += 6, _FSmatch++, $arcologies[0].FSEgyptianRevivalist += 0.02*$FSSingleSlaveRep>>
 			<</if>>
 		<</if>>
 	<<elseif $arcologies[0].FSEdoRevivalist != "unset">>
@@ -1131,19 +1117,7 @@
 				<<if totalRelatives($slaves[$i]) > 0>>
 					<<if def _recruiterRelation>>
 						<<setLocalPronouns _recruiterRelation 2>>
-						<<if _recruiterRelation.mother == $slaves[$i].ID || _recruiterRelation.father == $slaves[$i].ID>>
-							<<set _relationType = _daughter2>>
-						<<elseif $slaves[$i].mother == _recruiterRelation.ID>>
-							<<set _relationType = "mother">>
-						<<elseif $slaves[$i].father == _recruiterRelation.ID>>
-							<<set _relationType = "father">>
-						<<elseif areSisters($slaves[$i], _recruiterRelation) == 1>>
-							<<set _relationType = "twin">>
-						<<elseif areSisters($slaves[$i], _recruiterRelation) == 2>>
-							<<set _relationType = _sister2>>
-						<<elseif areSisters($slaves[$i], _recruiterRelation) == 3>>
-							<<set _relationType = "half-<<= _sister2>>">>
-						<</if>>
+						<<set _relationType = relativeTerm($slaves[$i], _recruiterRelation)>>
 						<<if $slaves[$i].energy > 60 || $slaves[$i].sexualQuirk == "tease" || $slaves[$i].sexualQuirk == "perverted">>
 							<<if _recruiterRelation.energy > 60 || _recruiterRelation.sexualQuirk == "tease" || _recruiterRelation.sexualQuirk == "perverted">>
 								$slaves[$i].slaveName and $his _relationType _recruiterRelation.slaveName collaborate on a series of short commercials showing them <<if canWalk($slaves[$i]) || canWalk(_recruiterRelation)>>walking and <</if>>playing in your arcology's public spaces. A little <<if hasAnyArms($slaves[$i]) || hasAnyArms(_recruiterRelation)>>hand on the ass<<else>>cuddling<</if>> here, a little lips almost touching there, and it's enough to tease your Ancient Egyptian sensibility about incest without running afoul of too many old world censors.
@@ -1165,7 +1139,7 @@
 				<</if>>
 			<<else>>
 				<<if $slaves[$i].relation != 0 && (!(_recruiterRelation.assignment == "be your agent" || _recruiterRelation.assignment == "live with your agent"))>>
-					<<if (_recruiterRelation.assignment == "work in the dairy" && $dairyRestraintsSetting > 1) || _recruiterRelation.assignment == "stay confined" || _recruiterRelation.assignment == "be confined in the cellblock">>
+					<<if !isSlaveAvailable(_recruiterRelation)>>
 						One idea that comes up while brainstorming is to act out Ancient Egyptian incest with $his _recruiterRelation.relation, but _recruiterRelation.slaveName is confined and unavailable.
 					<<else>>
 						<<if $slaves[$i].energy > 60 || $slaves[$i].sexualQuirk == "tease" || $slaves[$i].sexualQuirk == "perverted">>
diff --git a/src/uncategorized/saRelationships.tw b/src/uncategorized/saRelationships.tw
index 4b1f9b05c531f4352644c095e8abc5bd5c99d9d2..d1990706c0888485601912e1eab9b87d224b0739 100644
--- a/src/uncategorized/saRelationships.tw
+++ b/src/uncategorized/saRelationships.tw
@@ -985,10 +985,7 @@
 						<<set _SlaveI.relationship = -2>>
 					<</if>>
 					<<set _SlaveJ.relationship = 0, _SlaveJ.relationshipTarget = 0, _SlaveI.relationshipTarget = 0>>
-				<<elseif $familyTesting == 1 && areRelated(_SlaveI, _SlaveJ) && (random(1,100) > 80)>>
-					They build on their family relationship and become @@.lightgreen;best friends.@@
-					<<set _SlaveI.relationship++, _SlaveJ.relationship = _SlaveI.relationship>>
-				<<elseif (_SlaveI.relation != 0) && (_SlaveI.relationTarget == _SlaveI.relationshipTarget) && (random(1, 100) > 80)>>
+				<<elseif areRelated(_SlaveI, _SlaveJ) && (random(1,100) > 80)>>
 					They build on their family relationship and become @@.lightgreen;best friends.@@
 					<<set _SlaveI.relationship++, _SlaveJ.relationship = _SlaveI.relationship>>
 				<<elseif mutualChildren(_SlaveI, _SlaveJ, $slaves) > 0 && (random(1, 100) < (50+(10*mutualChildren(_SlaveI, _SlaveJ, $slaves))))>>
@@ -1033,22 +1030,13 @@
 				<<elseif mutualChildren(_SlaveI, _SlaveJ, $slaves) > 0 && (random(1, 100) < (50+(10*mutualChildren(_SlaveI, _SlaveJ, $slaves))+_seed))>>
 					Having already had kids together, their relationship turns sexual once again and they become @@.lightgreen;friends with benefits.@@
 					<<set _SlaveI.relationship++, _SlaveJ.relationship = _SlaveI.relationship>>
-				<<elseif $seeIncest == 1 && $familyTesting == 1 && (_SlaveI.energy > 95) && areRelated(_SlaveI, _SlaveJ) && (random(1,100) > (90-_seed))>>
-					Driven by nymphomania to attempt to have sex with everyone, _SlaveI.slaveName successfully seduces _SlaveJ.slaveName and they become @@.lightgreen;friends with benefits.@@
-					<<set _SlaveI.relationship++, _SlaveJ.relationship = _SlaveI.relationship>>
-				<<elseif $seeIncest == 1 && (_SlaveI.energy > 95) && (_SlaveI.relation != 0) && (_SlaveI.relationTarget == _SlaveI.relationshipTarget) && (random(1, 100) > (90 - _seed))>>
+				<<elseif $seeIncest == 1 && (_SlaveI.energy > 95) && areRelated(_SlaveI, _SlaveJ) && (random(1,100) > (90-_seed))>>
 					Driven by nymphomania to attempt to have sex with everyone, _SlaveI.slaveName successfully seduces _SlaveJ.slaveName and they become @@.lightgreen;friends with benefits.@@
 					<<set _SlaveI.relationship++, _SlaveJ.relationship = _SlaveI.relationship>>
-				<<elseif $seeIncest == 1 && $familyTesting == 1 && (_SlaveI.sexualQuirk == "perverted") && areRelated(_SlaveI, _SlaveJ) && (random(1,100) > (80-_seed))>>
-					Reveling in the taboo nature of $his attraction to _SlaveJ.slaveName, _SlaveI.slaveName successfully seduces _him2 and they become @@.lightgreen;friends with benefits.@@
-					<<set _SlaveI.relationship++, _SlaveJ.relationship = _SlaveI.relationship>>
-				<<elseif $seeIncest == 1 && (_SlaveI.sexualQuirk == "perverted") && (_SlaveI.relation != 0) && (_SlaveI.relationTarget == _SlaveI.relationshipTarget) && (random(1, 100) > (80 - _seed))>>
+				<<elseif $seeIncest == 1 && (_SlaveI.sexualQuirk == "perverted") && areRelated(_SlaveI, _SlaveJ) && (random(1,100) > (80-_seed))>>
 					Reveling in the taboo nature of $his attraction to _SlaveJ.slaveName, _SlaveI.slaveName successfully seduces _him2 and they become @@.lightgreen;friends with benefits.@@
 					<<set _SlaveI.relationship++, _SlaveJ.relationship = _SlaveI.relationship>>
-				<<elseif $seeIncest == 1 && $familyTesting == 1 && (_SlaveI.behavioralQuirk == "sinful") && areRelated(_SlaveI, _SlaveJ) && (random(1,100) > (80-_seed))>>
-					Aroused by the chance to commit the sin of incest, _SlaveI.slaveName successfully seduces _SlaveJ.slaveName and they become @@.lightgreen;friends with benefits.@@
-					<<set _SlaveI.relationship++, _SlaveJ.relationship = _SlaveI.relationship>>
-				<<elseif $seeIncest == 1 && (_SlaveI.behavioralQuirk == "sinful") && (_SlaveI.relation != 0) && (_SlaveI.relationTarget == _SlaveI.relationshipTarget) && (random(1, 100) > (80 - _seed))>>
+				<<elseif $seeIncest == 1 && (_SlaveI.behavioralQuirk == "sinful") && areRelated(_SlaveI, _SlaveJ) && (random(1,100) > (80-_seed))>>
 					Aroused by the chance to commit the sin of incest, _SlaveI.slaveName successfully seduces _SlaveJ.slaveName and they become @@.lightgreen;friends with benefits.@@
 					<<set _SlaveI.relationship++, _SlaveJ.relationship = _SlaveI.relationship>>
 				<<elseif (_SlaveI.energy > 95) && (random(1, 100) > (80 - _seed))>>
@@ -1064,16 +1052,11 @@
 						_SlaveI.slaveName successfully seduces _SlaveJ.slaveName and they become @@.lightgreen;friends with benefits.@@
 						<<set _SlaveI.relationship++, _SlaveJ.relationship = _SlaveI.relationship>>
 					<</if>>
-				<<elseif $seeIncest == 1 && $familyTesting == 1 && areRelated(_SlaveI, _SlaveJ)>>
+				<<elseif $seeIncest == 1 && areRelated(_SlaveI, _SlaveJ)>>
 					<<if random(1,100) > (95-_seed)>>
 						Eventually, they happen to be together and horny, and find themselves fucking without thinking. They have become incestuous @@.lightgreen;friends with benefits.@@
 						<<set _SlaveI.relationship++, _SlaveJ.relationship = _SlaveI.relationship>>
 					<</if>>
-				<<elseif $seeIncest == 1 && (_SlaveI.relation != 0) && (_SlaveI.relationTarget == _SlaveI.relationshipTarget)>>
-					<<if random(1, 100) > (95 - _seed)>>
-						Eventually, they happen to be together and horny, and find themselves fucking without thinking. They have become incestuous @@.lightgreen;friends with benefits.@@
-						<<set _SlaveI.relationship++, _SlaveJ.relationship = _SlaveI.relationship>>
-					<</if>>
 				<<elseif (random(1, 100) > (95 - _seed))>>
 					<<if (_SlaveJ.vagina != -1) && (_SlaveI.behavioralFlaw == "hates women") && (random(1, 2) == 1)>>
 						Despite _SlaveI.slaveName's dislike of pussy,
@@ -1091,22 +1074,13 @@
 					$His romantic bent drives $him to do $his best to advance $his relationship to an emotional level.
 					<<set _seed = 10>>
 				<</if>>
-				<<if $seeIncest == 1 && $familyTesting == 1 && _SlaveI.energy > 95 && areRelated(_SlaveI, _SlaveJ) && (random(1,100) > (90-_seed))>>
-					$He's such a desperate nympho that constant incest is nothing to $him. $He develops real feelings for _SlaveJ.slaveName as a romantic partner. Their relationship becomes @@.lightgreen;romantically emotional@@ as well as physical and familial.
-					<<set _SlaveI.relationship++, _SlaveJ.relationship = _SlaveI.relationship>>
-				<<elseif $seeIncest == 1 && (_SlaveI.energy > 95) && (_SlaveI.relation != 0) && (_SlaveI.relationTarget == _SlaveI.relationshipTarget) && (random(1, 100) > (90 - _seed))>>
+				<<if $seeIncest == 1 && _SlaveI.energy > 95 && areRelated(_SlaveI, _SlaveJ) && (random(1,100) > (90-_seed))>>
 					$He's such a desperate nympho that constant incest is nothing to $him. $He develops real feelings for _SlaveJ.slaveName as a romantic partner. Their relationship becomes @@.lightgreen;romantically emotional@@ as well as physical and familial.
 					<<set _SlaveI.relationship++, _SlaveJ.relationship = _SlaveI.relationship>>
-				<<elseif $seeIncest == 1 && $familyTesting == 1 && (_SlaveI.sexualQuirk == "perverted") && areRelated(_SlaveI, _SlaveJ) && (random(1,100) > (80-_seed))>>
-					Reveling in the taboo nature of $his sexual relationship with _SlaveJ.slaveName, $he not only enjoys _SlaveJ.slaveName's body, but looks after _his2 pleasure, too. Their relationship becomes @@.lightgreen;romantically emotional@@ as well as physical and familial.
-					<<set _SlaveI.relationship++, _SlaveJ.relationship = _SlaveI.relationship>>
-				<<elseif $seeIncest == 1 && (_SlaveI.sexualQuirk == "perverted") && (_SlaveI.relation != 0) && (_SlaveI.relationTarget == _SlaveI.relationshipTarget) && (random(1, 100) > (80 - _seed))>>
+				<<elseif $seeIncest == 1 && (_SlaveI.sexualQuirk == "perverted") && areRelated(_SlaveI, _SlaveJ) && (random(1,100) > (80-_seed))>>
 					Reveling in the taboo nature of $his sexual relationship with _SlaveJ.slaveName, $he not only enjoys _SlaveJ.slaveName's body, but looks after _his2 pleasure, too. Their relationship becomes @@.lightgreen;romantically emotional@@ as well as physical and familial.
 					<<set _SlaveI.relationship++, _SlaveJ.relationship = _SlaveI.relationship>>
-				<<elseif $seeIncest == 1 && $familyTesting == 1 && (_SlaveI.behavioralQuirk == "sinful") && areRelated(_SlaveI, _SlaveJ) && (random(1,100) > (80-_seed))>>
-					$He gets deep, perverse satisfaction by constant commission of the sin of incest, which is extreme enough to appease even $his appetite for transgression. $His incestuous relationship becomes @@.lightgreen;romantically emotional@@ as well as physical and familial.
-					<<set _SlaveI.relationship++, _SlaveJ.relationship = _SlaveI.relationship>>
-				<<elseif $seeIncest == 1 && (_SlaveI.behavioralQuirk == "sinful") && (_SlaveI.relation != 0) && (_SlaveI.relationTarget == _SlaveI.relationshipTarget) && (random(1, 100) > (80 - _seed))>>
+				<<elseif $seeIncest == 1 && && (_SlaveI.behavioralQuirk == "sinful") && areRelated(_SlaveI, _SlaveJ) && (random(1,100) > (80-_seed))>>
 					$He gets deep, perverse satisfaction by constant commission of the sin of incest, which is extreme enough to appease even $his appetite for transgression. $His incestuous relationship becomes @@.lightgreen;romantically emotional@@ as well as physical and familial.
 					<<set _SlaveI.relationship++, _SlaveJ.relationship = _SlaveI.relationship>>
 				<<elseif mutualChildren(_SlaveI, _SlaveJ, $slaves) > 0 && (random(1, 100) < (50+(10*mutualChildren(_SlaveI, _SlaveJ, $slaves))+_seed))>>
@@ -1186,173 +1160,77 @@
 	<</if>>
 	/% FWB, lovers, slave wives %/
 	<<if _SlaveI.relationship > 2>>
-		<<if $familyTesting == 1>>
-			<<if totalRelatives(_SlaveI) > 0>>
-				<<set $relation = 0>>
-				<<set $relationType = 0>>
-				<<set _sr = getSlave(_SlaveI.relationshipTarget)>>
-				<<if def _sr>>
-					<<setLocalPronouns _sr 2>>
-					<<if areRelated(_SlaveI, _sr)>>
-						<<set $relationType = relativeTerm(_SlaveI, _sr)>>
-						<<set $relation = _sr>>
-					<</if>>
-				<</if>>
-				<<if $relation != 0>>
-					_SlaveI.slaveName
-					<<if _SlaveI.origin == "$He offered $himself to you for enslavement hoping you would preserve $his incestuous relationship with $his sibling." || _SlaveI.origin == "$He offered to become your slave to protect $his incestuous relationship.">>
-						is @@.hotpink;grateful@@ and @@.mediumaquamarine;trusting@@ towards you for protecting $him in $his long-standing incestuous relationship.
-						<<set _SlaveI.devotion += 2>>
-						<<set _SlaveI.trust += 2>>
-					<<elseif _SlaveI.sexualQuirk == "perverted">>
-						is such a pervert that $he @@.hotpink;enjoys@@ carrying on an incestuous relationship with $his own $relationType.
-						<<set _SlaveI.devotion += 1>>
-					<<elseif _SlaveI.devotion > 95>>
-						is so inured to the perversities of slavery that $he @@.hotpink;enjoys@@ carrying on an incestuous relationship with $his own $relationType.
-						<<set _SlaveI.devotion += 1>>
-					<<elseif _SlaveI.behavioralQuirk == "sinful">>
-						is torn between sinful delight and deep disgust that $he's carrying on an incestuous relationship with $his own $relationType.
-					<<elseif _SlaveI.devotion > 75>>
-						is so devoted to you that $he accepts carrying on an incestuous relationship with $his own $relationType.
-					<<elseif _SlaveI.devotion > 50>>
-						is somewhat @@.mediumorchid;disturbed@@ that $he's carrying on an incestuous relationship with $his own $relationType.
-						<<set _SlaveI.devotion -= 2>>
-					<<elseif _SlaveI.devotion > 20>>
-						is @@.mediumorchid;disturbed@@ and @@.gold;scared@@ that $he's carrying on an incestuous relationship with $his own $relationType.
-						<<set _SlaveI.devotion -= 2>>
-						<<set _SlaveI.trust -= 2>>
-					<<else>>
-						is @@.mediumorchid;revolted@@ and @@.gold;scared@@ that $he's carrying on an incestuous relationship with $his own $relationType.
-						<<set _SlaveI.devotion -= 4>>
-						<<set _SlaveI.trust -= 4>>
-					<</if>>
-					<<if _SlaveI.pregKnown == 1>>
-						<<if _SlaveI.pregSource == $relation.ID>>
-							<<if _SlaveI.origin == "$He offered $himself to you for enslavement hoping you would preserve $his incestuous relationship with $his sibling.">>
-								$He's @@.hotpink;overjoyed@@ to be carrying $his _sister2's child<<if _SlaveI.pregType > 1>>ren<</if>>.
-								<<set _SlaveI.devotion += 2>>
-							<<elseif _SlaveI.origin == "$He offered to become your slave to protect $his incestuous relationship.">>
-								$He's @@.hotpink;overjoyed@@ to be carrying $his <<print $relationType>>'s child<<if _SlaveI.pregType > 1>>ren<</if>>.
-								<<set _SlaveI.devotion += 2>>
-							<<elseif _SlaveI.sexualQuirk == "perverted">>
-								$He's even @@.hotpink;aroused@@ by the constant awareness that $his $relationType is the parent of the daughter<<if _SlaveI.pregType > 1>>s<</if>> $he's carrying.
-								<<set _SlaveI.devotion += 1>>
-							<<elseif _SlaveI.behavioralQuirk == "sinful">>
-								$His feelings about carrying $his <<print $relationType>>'s child<<if _SlaveI.pregType > 1>>ren<</if>> are @@.hotpink;secretly less mixed,@@ though.
-								<<set _SlaveI.devotion += 1>>
-							<<elseif _SlaveI.devotion > 95>>
-								$He occasionally remembers that $he's carrying $his <<print $relationType>>'s child<<if _SlaveI.pregType > 1>>ren<</if>>, but does $his best to accept it by not thinking about it.
-							<<elseif _SlaveI.devotion > 50>>
-								$He's @@.mediumorchid;disgusted@@ that the bab<<if _SlaveI.pregType > 1>>ies $he's carrying are<<else>>y $he's carrying is<</if>> $his <<print $relationType>>'s, though $he tries $his best not to think about it.
-								<<set _SlaveI.devotion -= 1>>
-							<<elseif _SlaveI.devotion > 20>>
-								$He's so @@.mediumorchid;disgusted@@ that the bab<<if _SlaveI.pregType > 1>>ies $he's carrying are<<else>>y $he's carrying is<</if>> $his <<print $relationType>>'s that $he often wakes up crying about it.
-								<<set _SlaveI.devotion -= 2>>
-							<<else>>
-								$He's @@.mediumorchid;passionately hateful@@ of you for making $him carry an incestuous pregnancy.
-								<<set _SlaveI.devotion -= 4>>
-							<</if>>
-						<</if>>
-					<</if>>
-					<<if $arcologies[0].FSEgyptianRevivalist != "unset">>
-						Society @@.green;strongly approves@@ of their incestuous relationship, which advances the Egyptian revivalist ideal of slave incest.
-						<<run repX(2*$FSSingleSlaveRep*($arcologies[0].FSEgyptianRevivalist/$FSLockinLevel), "SlaveRelationships", _SlaveI)>>
-						<<set $arcologies[0].FSEgyptianRevivalist += 0.1*$FSSingleSlaveRep>>
-						<<if _SlaveI.bellyPreg >= 1500>>
-							<<if _SlaveI.pregSource == $relation.ID>>
-								@@.green;The effect is greatly enhanced@@ by _SlaveI.slaveName's pureblooded pregnancy.
-								<<run repX($FSSingleSlaveRep*($arcologies[0].FSEgyptianRevivalist/$FSLockinLevel), "SlaveRelationships", _SlaveI)>>
-								<<set $arcologies[0].FSEgyptianRevivalist += 0.05*$FSSingleSlaveRep*$pornFameBonus>>
-							<</if>>
-						<</if>>
-					<<elseif $arcologies[0].FSEgyptianRevivalistIncestPolicy == 1>>
-						Society @@.green;enjoys@@ their incestuous relationship since incest is currently trendy.
-						<<run repX(1.5*$FSSingleSlaveRep, "SlaveRelationships", _SlaveI)>>
-						<<if _SlaveI.bellyPreg >= 1500>>
-							<<if _SlaveI.pregSource == $relation.ID>>
-								@@.green;The effect is enhanced@@ by _SlaveI.slaveName's pureblooded pregnancy.
-								<<run repX($FSSingleSlaveRep, "SlaveRelationships", _SlaveI)>>
-							<</if>>
-						<</if>>
-					<</if>>
-				<</if>>
-				<<set $relation = 0>>
-				<<set $relationType = 0>>
+		<<set _relation = areRelated(_SlaveI, _SlaveJ) ? _SlaveJ : 0>>
+		<<set _relationType = relativeTerm(_SlaveI, _SlaveJ)>>
+		<<if _relation != 0>>
+			_SlaveI.slaveName
+			<<if _SlaveI.origin == "$He offered $himself to you for enslavement hoping you would preserve $his incestuous relationship with $his sibling." || _SlaveI.origin == "$He offered to become your slave to protect $his incestuous relationship.">>
+				is @@.hotpink;grateful@@ and @@.mediumaquamarine;trusting@@ towards you for protecting $him in $his long-standing incestuous relationship.
+				<<set _SlaveI.devotion += 2>>
+				<<set _SlaveI.trust += 2>>
+			<<elseif _SlaveI.sexualQuirk == "perverted">>
+				is such a pervert that $he @@.hotpink;enjoys@@ carrying on an incestuous relationship with $his own _relationType.
+				<<set _SlaveI.devotion += 1>>
+			<<elseif _SlaveI.devotion > 95>>
+				is so inured to the perversities of slavery that $he @@.hotpink;enjoys@@ carrying on an incestuous relationship with $his own _relationType.
+				<<set _SlaveI.devotion += 1>>
+			<<elseif _SlaveI.behavioralQuirk == "sinful">>
+				is torn between sinful delight and deep disgust that $he's carrying on an incestuous relationship with $his own _relationType.
+			<<elseif _SlaveI.devotion > 75>>
+				is so devoted to you that $he accepts carrying on an incestuous relationship with $his own _relationType.
+			<<elseif _SlaveI.devotion > 50>>
+				is somewhat @@.mediumorchid;disturbed@@ that $he's carrying on an incestuous relationship with $his own _relationType.
+				<<set _SlaveI.devotion -= 2>>
+			<<elseif _SlaveI.devotion > 20>>
+				is @@.mediumorchid;disturbed@@ and @@.gold;scared@@ that $he's carrying on an incestuous relationship with $his own _relationType.
+				<<set _SlaveI.devotion -= 2>>
+				<<set _SlaveI.trust -= 2>>
+			<<else>>
+				is @@.mediumorchid;revolted@@ and @@.gold;scared@@ that $he's carrying on an incestuous relationship with $his own _relationType.
+				<<set _SlaveI.devotion -= 4>>
+				<<set _SlaveI.trust -= 4>>
 			<</if>>
-		<<else>>
-			<<if _SlaveI.relation != 0 && (_SlaveI.relationTarget == _SlaveI.relationshipTarget)>>
-				<<set _sr = getSlave(_SlaveI.relationshipTarget)>>
-				<<if def _sr>>
-					<<setLocalPronouns _sr 2>>
-				<</if>>
-				_SlaveI.slaveName is
-				<<if _SlaveI.origin == "$He offered $himself to you for enslavement hoping you would preserve $his incestuous relationship with $his sibling.">>
-					@@.hotpink;grateful@@ and @@.mediumaquamarine;trusting@@ towards you for protecting $him in $his long-standing incestuous relationship.
-					<<set _SlaveI.devotion += 2, _SlaveI.trust += 2>>
+			<<if _SlaveI.pregKnown == 1 && _SlaveI.pregSource == _relation.ID>>
+				<<if _SlaveI.origin == "$He offered $himself to you for enslavement hoping you would preserve $his incestuous relationship with $his sibling." || _SlaveI.origin == "$He offered to become your slave to protect $his incestuous relationship.">>
+					$He's @@.hotpink;overjoyed@@ to be carrying $his <<print _relationType>>'s child<<if _SlaveI.pregType > 1>>ren<</if>>.
+					<<set _SlaveI.devotion += 2>>
 				<<elseif _SlaveI.sexualQuirk == "perverted">>
-					such a pervert that $he @@.hotpink;enjoys@@ carrying on an incestuous relationship with $his own <<print relationTargetWord(_SlaveI)>>.
-					<<set _SlaveI.devotion++>>
-				<<elseif _SlaveI.devotion > 95>>
-					so inured to the perversities of slavery that $he @@.hotpink;enjoys@@ carrying on an incestuous relationship with $his own <<print relationTargetWord(_SlaveI)>>.
-					<<set _SlaveI.devotion++>>
+					$He's even @@.hotpink;aroused@@ by the constant awareness that $his _relationType is the parent of the daughter<<if _SlaveI.pregType > 1>>s<</if>> $he's carrying.
+					<<set _SlaveI.devotion += 1>>
 				<<elseif _SlaveI.behavioralQuirk == "sinful">>
-					torn between sinful delight and deep disgust that $he's carrying on an incestuous relationship with $his own <<print relationTargetWord(_SlaveI)>>.
-				<<elseif _SlaveI.devotion > 75>>
-					so devoted to you that $he accepts carrying on an incestuous relationship with $his own <<print relationTargetWord(_SlaveI)>>.
+					$His feelings about carrying $his <<print _relationType>>'s child<<if _SlaveI.pregType > 1>>ren<</if>> are @@.hotpink;secretly less mixed,@@ though.
+					<<set _SlaveI.devotion += 1>>
+				<<elseif _SlaveI.devotion > 95>>
+					$He occasionally remembers that $he's carrying $his <<print _relationType>>'s child<<if _SlaveI.pregType > 1>>ren<</if>>, but does $his best to accept it by not thinking about it.
 				<<elseif _SlaveI.devotion > 50>>
-					somewhat @@.mediumorchid;disturbed@@ that $he's carrying on an incestuous relationship with $his own <<print relationTargetWord(_SlaveI)>>.
-					<<set _SlaveI.devotion -= 2>>
+					$He's @@.mediumorchid;disgusted@@ that the bab<<if _SlaveI.pregType > 1>>ies $he's carrying are<<else>>y $he's carrying is<</if>> $his <<print _relationType>>'s, though $he tries $his best not to think about it.
+					<<set _SlaveI.devotion -= 1>>
 				<<elseif _SlaveI.devotion > 20>>
-					@@.mediumorchid;disturbed@@ and @@.gold;scared@@ that $he's carrying on an incestuous relationship with $his own <<print relationTargetWord(_SlaveI)>>.
-					<<set _SlaveI.devotion -= 2, _SlaveI.trust -= 2>>
+					$He's so @@.mediumorchid;disgusted@@ that the bab<<if _SlaveI.pregType > 1>>ies $he's carrying are<<else>>y $he's carrying is<</if>> $his <<print _relationType>>'s that $he often wakes up crying about it.
+					<<set _SlaveI.devotion -= 2>>
 				<<else>>
-					@@.mediumorchid;revolted@@ and @@.gold;scared@@ that $he's carrying on an incestuous relationship with $his own <<print relationTargetWord(_SlaveI)>>.
-					<<set _SlaveI.devotion -= 4, _SlaveI.trust -= 4>>
+					$He's @@.mediumorchid;passionately hateful@@ of you for making $him carry an incestuous pregnancy.
+					<<set _SlaveI.devotion -= 4>>
 				<</if>>
-				<<if (_SlaveI.pregKnown == 1) && (_SlaveI.pregSource == _SlaveI.relationTarget)>>
-					<<if _SlaveI.origin == "$He offered $himself to you for enslavement hoping you would preserve $his incestuous relationship with $his sibling.">>
-						$He's @@.hotpink;overjoyed@@ to be carrying $his _sister2's child<<if _SlaveI.pregType > 1>>ren<</if>>.
-						<<set _SlaveI.devotion += 2>>
-					<<elseif _SlaveI.sexualQuirk == "perverted">>
-						$He's even @@.hotpink;aroused@@ by the constant awareness that $his <<print relationTargetWord(_SlaveI)>> is the parent of the daughter<<if _SlaveI.pregType > 1>>s<</if>> $he's carrying.
-						<<set _SlaveI.devotion++>>
-					<<elseif _SlaveI.behavioralQuirk == "sinful">>
-						$His feelings about carrying $his <<print relationTargetWord(_SlaveI)>>'s child<<if _SlaveI.pregType > 1>>ren<</if>> are @@.hotpink;secretly less mixed,@@ though.
-						<<set _SlaveI.devotion++>>
-					<<elseif _SlaveI.devotion > 95>>
-						$He occasionally remembers that $he's carrying $his <<print relationTargetWord(_SlaveI)>>'s child<<if _SlaveI.pregType > 1>>ren<</if>>, but does $his best to accept it by not thinking about it.
-					<<elseif _SlaveI.devotion > 50>>
-						$He's @@.mediumorchid;disgusted@@ that the bab<<if _SlaveI.pregType > 1>>ies $he's carrying are<<else>>y $he's carrying is<</if>> $his <<print relationTargetWord(_SlaveI)>>'s, though $he tries $his best not to think about it.
-						<<set _SlaveI.devotion-->>
-					<<elseif _SlaveI.devotion > 20>>
-						$He's so @@.mediumorchid;disgusted@@ that the bab<<if _SlaveI.pregType > 1>>ies $he's carrying are<<else>>y $he's carrying is<</if>> $his <<print relationTargetWord(_SlaveI)>>'s that $he often wakes up crying about it.
-						<<set _SlaveI.devotion -= 2>>
-					<<else>>
-						$He's @@.mediumorchid;passionately hateful@@ of you for making $him carry an incestuous pregnancy.
-						<<set _SlaveI.devotion -= 4>>
-					<</if>>
+			<</if>>
+			<<if $arcologies[0].FSEgyptianRevivalist != "unset">>
+				Society @@.green;strongly approves@@ of their incestuous relationship, which advances the Egyptian revivalist ideal of slave incest.
+				<<run repX(2*$FSSingleSlaveRep*($arcologies[0].FSEgyptianRevivalist/$FSLockinLevel), "SlaveRelationships", _SlaveI)>>
+				<<set $arcologies[0].FSEgyptianRevivalist += 0.1*$FSSingleSlaveRep>>
+				<<if _SlaveI.bellyPreg >= 1500 && _SlaveI.pregSource == _relation.ID>>
+					@@.green;The effect is greatly enhanced@@ by _SlaveI.slaveName's pureblooded pregnancy.
+					<<run repX($FSSingleSlaveRep*($arcologies[0].FSEgyptianRevivalist/$FSLockinLevel), "SlaveRelationships", _SlaveI)>>
+					<<set $arcologies[0].FSEgyptianRevivalist += 0.05*$FSSingleSlaveRep*$pornFameBonus>>
+				<</if>>
+			<<elseif $arcologies[0].FSEgyptianRevivalistIncestPolicy == 1>>
+				Society @@.green;enjoys@@ their incestuous relationship since incest is currently trendy.
+				<<run repX(1.5*$FSSingleSlaveRep, "SlaveRelationships", _SlaveI)>>
+				<<if _SlaveI.bellyPreg >= 1500 && _SlaveI.pregSource == _relation.ID>>
+					@@.green;The effect is enhanced@@ by _SlaveI.slaveName's pureblooded pregnancy.
+					<<run repX($FSSingleSlaveRep, "SlaveRelationships", _SlaveI)>>
 				<</if>>
-				<<if $arcologies[0].FSEgyptianRevivalist != "unset">>
-					Society @@.green;strongly approves@@ of their incestuous relationship, which advances the Egyptian revivalist ideal of slave incest.
-					<<set $arcologies[0].FSEgyptianRevivalist += 0.1 * $FSSingleSlaveRep>>
-					<<run repX(2 * $FSSingleSlaveRep * ($arcologies[0].FSEgyptianRevivalist / $FSLockinLevel), "SlaveRelationships", _SlaveI)>>
-					<<if (_SlaveI.bellyPreg >= 1500) && (_SlaveI.pregSource == _SlaveI.relationTarget)>>
-						@@.green;The effect is greatly enhanced@@ by _SlaveI.slaveName's pureblooded pregnancy.
-						<<set $arcologies[0].FSEgyptianRevivalist += 0.05 * $FSSingleSlaveRep * $pornFameBonus>>
-						<<run repX($FSSingleSlaveRep * ($arcologies[0].FSEgyptianRevivalist / $FSLockinLevel), "SlaveRelationships", _SlaveI)>>
-					<</if>>
-					<<elseif $arcologies[0].FSEgyptianRevivalistIncestPolicy == 1>>
-						Society @@.green;enjoys@@ their incestuous relationship since incest is currently trendy.
-						<<run repX(1.5*$FSSingleSlaveRep, "SlaveRelationships", _SlaveI)>>
-						<<if _SlaveI.bellyPreg >= 1500>>
-							<<if _SlaveI.pregSource == $relation.ID>>
-								@@.green;The effect is enhanced@@ by _SlaveI.slaveName's pureblooded pregnancy.
-								<<run repX($FSSingleSlaveRep, "SlaveRelationships", _SlaveI)>>
-							<</if>>
-						<</if>>
-					<</if>>
 			<</if>>
-		<</if>> /* closes extended family mode */
+		<</if>>
 
 		<<if App.Utils.sexAllowed(_SlaveI, _SlaveJ)>>
 			<<if (_SlaveI.sexualQuirk == "size queen") && (canPenetrate(_SlaveJ))>>
diff --git a/src/uncategorized/saRivalries.tw b/src/uncategorized/saRivalries.tw
index 223f4e856ad06d7c425503105d4ce6e1340ac9f4..ab48315c0df43b30721452f8941dc325d881917f 100644
--- a/src/uncategorized/saRivalries.tw
+++ b/src/uncategorized/saRivalries.tw
@@ -241,25 +241,13 @@
 			<</if>>
 		<</if>>
 	<</if>>
-	<<if $familyTesting>>
-		<<if areRelated($slaves[$i], $slaves[_j])>>
-			<<if _roll > 70 && $slaves[$i].rivalry < 3 && _lightenedRivalry != 1>>
-				$slaves[$i].slaveName and <<= SlaveFullName($slaves[_j])>> @@.lightsalmon;pursue their family rivalry.@@
-				<<set $slaves[_j].rivalry += 1, $slaves[$i].rivalry += 1>>
-			<<elseif _roll > 40 && $slaves[$i].rivalry > 0 && _worsenedRivalry != 1>>
-				$slaves[$i].slaveName and <<= SlaveFullName($slaves[_j])>> @@.lightgreen;patch up their family relationship.@@
-				<<set $slaves[_j].rivalry -= 1, $slaves[$i].rivalry -= 1, _lightenedRivalry = 1>>
-			<</if>>
-		<</if>>
-	<<else>>
-		<<if $slaves[$i].relation && $slaves[$i].relationTarget == $slaves[$i].rivalryTarget>>
-			<<if _roll > 70 && $slaves[$i].rivalry < 3 && _lightenedRivalry != 1>>
-				$slaves[$i].slaveName and <<= SlaveFullName($slaves[_j])>> @@.lightsalmon;pursue their family rivalry.@@
-				<<set $slaves[_j].rivalry += 1, $slaves[$i].rivalry += 1>>
-			<<elseif _roll > 40 && $slaves[$i].rivalry > 0 && _worsenedRivalry != 1>>
-				$slaves[$i].slaveName and <<= SlaveFullName($slaves[_j])>> @@.lightgreen;patch up their family relationship.@@
-				<<set $slaves[_j].rivalry -= 1, $slaves[$i].rivalry -= 1, _lightenedRivalry = 1>>
-			<</if>>
+	<<if areRelated($slaves[$i], $slaves[_j])>>
+		<<if _roll > 70 && $slaves[$i].rivalry < 3 && _lightenedRivalry != 1>>
+			$slaves[$i].slaveName and <<= SlaveFullName($slaves[_j])>> @@.lightsalmon;pursue their family rivalry.@@
+			<<set $slaves[_j].rivalry += 1, $slaves[$i].rivalry += 1>>
+		<<elseif _roll > 40 && $slaves[$i].rivalry > 0 && _worsenedRivalry != 1>>
+			$slaves[$i].slaveName and <<= SlaveFullName($slaves[_j])>> @@.lightgreen;patch up their family relationship.@@
+			<<set $slaves[_j].rivalry -= 1, $slaves[$i].rivalry -= 1, _lightenedRivalry = 1>>
 		<</if>>
 	<</if>>
 	<<if $slaves[_j].origBodyOwnerID == $slaves[$i].ID && _lightenedRivalry != 1>>
diff --git a/src/uncategorized/schoolroomReport.tw b/src/uncategorized/schoolroomReport.tw
index c7048109cdbfda10cc67746c5b5da985820c5c8e..ee0525e681493b9e844dda29d3a27b3a2018d2cb 100644
--- a/src/uncategorized/schoolroomReport.tw
+++ b/src/uncategorized/schoolroomReport.tw
@@ -87,12 +87,9 @@
 		<<elseif $Schoolteacher.relationshipTarget == $slaves[$i].ID>>
 			$He dedicates most of $his attention to $his <<print relationshipTerm($Schoolteacher)>>, $slaves[$i].slaveName, making sure _he2 understands that day's lesson.
 			<<set $slaves[$i].devotion += 2, $slaves[$i].trust += 2>>
-		<<elseif $familyTesting == 1 && areRelated($Schoolteacher, $slaves[$i]) > 0>>
+		<<elseif areRelated($Schoolteacher, $slaves[$i])>>
 			$He makes sure to spend extra time teaching $his <<print relativeTerm($Schoolteacher,$slaves[$i])>>, $slaves[$i].slaveName.
 			<<set $slaves[$i].trust++>>
-		<<elseif $Schoolteacher.relationTarget == $slaves[$i].ID && $familyTesting == 0>>
-			$He makes sure to spend extra time teaching $his $slaves[$i].relation, $slaves[$i].slaveName.
-			<<set $slaves[$i].trust++>>
 		<</if>>
 	<</for>>
 	<<if (_DL < $schoolroom)>>
diff --git a/src/uncategorized/seLethalPit.tw b/src/uncategorized/seLethalPit.tw
index 2ede093158121f708b3c3aff288d76f1d40e8339..714a55dc859e6e82f5911e2459acab2cd29670f9 100644
--- a/src/uncategorized/seLethalPit.tw
+++ b/src/uncategorized/seLethalPit.tw
@@ -630,30 +630,12 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 			<<set _winner.fetish = "mindbroken">>
 			<<set _winner.fetishKnown = 1>>
 		<</if>>
-	<<elseif _winner.mother == _loser.ID>>
+	<<elseif isParentP(_winner, _loser) || isParentP(_loser, _winner)>>
 		<<if (_winner.devotion > 95)>>
-			$He is so worshipful of you that $he sees the death of $his mother at $his own hand as an @@.hotpink;honorable@@ end to their doomed family.
+			$He is so worshipful of you that $he sees the death of $his <<print relativeTerm(_winner, _loser)>> at $his own hand as an @@.hotpink;honorable@@ end to their doomed family.
 			<<set _winner.devotion += 4>>
 		<<else>>
-			$He shows little reaction to the death of $his mother at $his own hand. In the coming days, it becomes clear that this is because $he is @@.red;no longer capable@@ of reacting to anything on an emotional level. Ever again.
-			<<set _winner.fetish = "mindbroken">>
-			<<set _winner.fetishKnown = 1>>
-		<</if>>
-	<<elseif _winner.father == _loser.ID>>
-		<<if (_winner.devotion > 95)>>
-			$He is so worshipful of you that $he sees the death of $his father at $his own hand as an @@.hotpink;honorable@@ end to their doomed family.
-			<<set _winner.devotion += 4>>
-		<<else>>
-			$He shows little reaction to the death of $his father at $his own hand. In the coming days, it becomes clear that this is because $he is @@.red;no longer capable@@ of reacting to anything on an emotional level. Ever again.
-			<<set _winner.fetish = "mindbroken">>
-			<<set _winner.fetishKnown = 1>>
-		<</if>>
-	<<elseif _loser.mother == _winner.ID || _loser.father == _winner.ID>>
-		<<if (_winner.devotion > 95)>>
-			$He is so worshipful of you that $he sees the death of $his _daughter2 at $his own hand as an @@.hotpink;honorable@@ end to their doomed family.
-			<<set _winner.devotion += 4>>
-		<<else>>
-			$He shows little reaction to the death of $his _daughter2 at $his own hand. In the coming days, it becomes clear that this is because $he is @@.red;no longer capable@@ of reacting to anything on an emotional level. Ever again.
+			$He shows little reaction to the death of $his <<print relativeTerm(_winner, _loser)>> at $his own hand. In the coming days, it becomes clear that this is because $he is @@.red;no longer capable@@ of reacting to anything on an emotional level. Ever again.
 			<<set _winner.fetish = "mindbroken">>
 			<<set _winner.fetishKnown = 1>>
 		<</if>>
@@ -661,19 +643,19 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 		<<switch areSisters(_winner, _loser)>>
 		<<case 1>>
 			<<if (_winner.devotion > 95)>>
-				$He is so worshipful of you that $he sees the death of $his twin at $his own hand as an @@.hotpink;honorable@@ end to their doomed family.
+				$He is so worshipful of you that $he sees the death of $his <<print relativeTerm(_winner, _loser)>> at $his own hand as an @@.hotpink;honorable@@ end to their doomed family.
 				<<set _winner.devotion += 4>>
 			<<else>>
-				$He shows little reaction to the death of $his twin at $his own hand. In the coming days, it becomes clear that this is because $he is @@.red;no longer capable@@ of reacting to anything on an emotional level. Ever again.
+				$He shows little reaction to the death of $his <<print relativeTerm(_winner, _loser)>> at $his own hand. In the coming days, it becomes clear that this is because $he is @@.red;no longer capable@@ of reacting to anything on an emotional level. Ever again.
 				<<set _winner.fetish = "mindbroken">>
 				<<set _winner.fetishKnown = 1>>
 			<</if>>
 		<<case 2>>
 			<<if (_winner.devotion > 95)>>
-				$He is so worshipful of you that $he sees the death of $his _sister2 at $his own hand as an @@.hotpink;honorable@@ end to their doomed family.
+				$He is so worshipful of you that $he sees the death of $his <<print relativeTerm(_winner, _loser)>> at $his own hand as an @@.hotpink;honorable@@ end to their doomed family.
 				<<set _winner.devotion += 4>>
 			<<else>>
-				$He shows little reaction to the death of $his _sister2 at $his own hand. In the coming days, it becomes clear that this is because $he is @@.red;no longer capable@@ of reacting to anything on an emotional level. Ever again.
+				$He shows little reaction to the death of $his <<print relativeTerm(_winner, _loser)>> at $his own hand. In the coming days, it becomes clear that this is because $he is @@.red;no longer capable@@ of reacting to anything on an emotional level. Ever again.
 				<<set _winner.fetish = "mindbroken">>
 				<<set _winner.fetishKnown = 1>>
 			<</if>>
@@ -688,10 +670,10 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 		<</switch>>
 	<<elseif (_winner.relation != 0) && (_loser.ID == _winner.relationTarget)>>
 		<<if (_winner.devotion > 95)>>
-			$He is so worshipful of you that $he sees the death of $his _loser.relation at $his own hand as an @@.hotpink;honorable@@ end to their doomed family.
+			$He is so worshipful of you that $he sees the death of $his <<print relativeTerm(_winner, _loser)>> at $his own hand as an @@.hotpink;honorable@@ end to their doomed family.
 			<<set _winner.devotion += 4>>
 		<<else>>
-			$He shows little reaction to the death of $his _loser.relation at $his own hand. In the coming days, it becomes clear that this is because $he is @@.red;no longer capable@@ of reacting to anything on an emotional level. Ever again.
+			$He shows little reaction to the death of $his <<print relativeTerm(_winner, _loser)>> at $his own hand. In the coming days, it becomes clear that this is because $he is @@.red;no longer capable@@ of reacting to anything on an emotional level. Ever again.
 			<<set _winner.fetish = "mindbroken">>
 			<<set _winner.fetishKnown = 1>>
 		<</if>>
diff --git a/src/uncategorized/seNonlethalPit.tw b/src/uncategorized/seNonlethalPit.tw
index 572351d77c1e404aace3bb94a94a7dfeaa2ca6bd..9527e44303df8cb5b7e617c205d3471e4e0e8928 100644
--- a/src/uncategorized/seNonlethalPit.tw
+++ b/src/uncategorized/seNonlethalPit.tw
@@ -868,55 +868,10 @@
 <<elseif (_winner.relationship >= 0) && (_loser.ID == _winner.relationshipTarget)>>
 	$He @@.mediumorchid;hates@@ having to abuse _loser.slaveName.
 	<<set _winner.devotion -= 10>>
-<<elseif _winner.mother == _loser.ID>>
-	<<if _winner.devotion > 20>>
-		$He accepts having to abuse $his mother, _loser.slaveName, and plans to make it up to _him2 later.
-	<<else>>
-		_winner.slaveName is unenthusiastic and just thrusts mechanically, to avoid being punished. $He @@.mediumorchid;resents@@ having to fight and fuck. The audience barely pays attention.
-		<<set _winner.devotion -= 2>>
-	<</if>>
-<<elseif _winner.father == _loser.ID>>
-	<<if _winner.devotion > 20>>
-		$He accepts having to abuse $his father, _loser.slaveName, and plans to make it up to _him2 later.
-	<<else>>
-		$He @@.mediumorchid;hates@@ having to abuse $his father, _loser.slaveName.
-		<<set _winner.devotion -= 10>>
-	<</if>>
-<<elseif _loser.mother == _winner.ID || _loser.father == _winner.ID>>
-	<<if _winner.devotion > 20>>
-		$He accepts having to abuse $his _daughter2, _loser.slaveName, and plans to make it up to _him2 later.
-	<<else>>
-		$He @@.mediumorchid;hates@@ having to abuse $his _daughter2, _loser.slaveName.
-		<<set _winner.devotion -= 10>>
-	<</if>>
-<<elseif _winner.sisters > 0>>
-	<<switch areSisters(_winner, _loser)>>
-	<<case 1>>
-		<<if _winner.devotion > 20>>
-			$He accepts having to abuse $his twin _sister2, _loser.slaveName, and plans to make it up to _him2 later.
-		<<else>>
-			$He @@.mediumorchid;hates@@ having to abuse $his twin _sister2, _loser.slaveName.
-			<<set _winner.devotion -= 10>>
-		<</if>>
-	<<case 2>>
-		<<if _winner.devotion > 20>>
-			$He accepts having to abuse $his _sister2, _loser.slaveName, and plans to make it up to _him2 later.
-		<<else>>
-			$He @@.mediumorchid;hates@@ having to abuse $his _sister2, _loser.slaveName.
-			<<set _winner.devotion -= 10>>
-		<</if>>
-	<<case 3>>
-		<<if _winner.devotion > 20>>
-			$He accepts having to abuse $his half-<<= _sister2>>, _loser.slaveName, and plans to make it up to _him2 later.
-		<<else>>
-			$He @@.mediumorchid;hates@@ having to abuse $his half-<<= _sister2>>, _loser.slaveName.
-			<<set _winner.devotion -= 10>>
-		<</if>>
-	<</switch>>
-<<elseif (_winner.relation != 0) && (_loser.ID == _winner.relationTarget) && (_winner.devotion > 20)>>
-	$He accepts having to abuse _loser.slaveName, and plans to make it up to _him2 later.
-<<elseif (_winner.relation != 0) && (_loser.ID == _winner.relationTarget)>>
-	$He @@.mediumorchid;hates@@ having to abuse _loser.slaveName.
+<<elseif areRelated(_winner, _loser) && (_winner.devotion > 20)>>
+	$He accepts having to abuse $his <<print relativeTerm(_winner, _loser)>>, _loser.slaveName, and plans to make it up to _him2 later.
+<<elseif areRelated(_winner, _loser)>>
+	$He @@.mediumorchid;hates@@ having to abuse $his <<print relativeTerm(_winner, _loser)>>, _loser.slaveName.
 	<<set _winner.devotion -= 10>>
 <</if>>
 <<if _winner.fetish == "sadist" && _winner.fetishStrength > 90 && _winner.sexualFlaw != "malicious" && _winner.devotion > 20>>
@@ -957,66 +912,11 @@
 	_He2 @@.mediumorchid;hates@@ having to accept rape from _winner.slaveName, and @@.gold;fears@@ that it will happen again.
 	<<set _loser.trust -= 10>>
 	<<set _loser.devotion -= 10>>
-<<elseif _loser.mother == _winner.ID>>
-	<<if _loser.devotion > 20>>
-		_He2 accepts _his2 mother, _winner.slaveName, having to rape _him2, but _he2 @@.gold;fears@@ that it will happen again.
-		<<set _loser.trust -= 10>>
-	<<else>>
-		_He2 @@.mediumorchid;hates@@ having to accept rape from _his2 own mother, _winner.slaveName, and @@.gold;fears@@ that it will happen again.
-		<<set _loser.devotion -= 10>>
-		<<set _loser.trust -= 10>>
-	<</if>>
-<<elseif _loser.father == _winner.ID>>
-	<<if _loser.devotion > 20>>
-		_He2 accepts _his2 father, _winner.slaveName, having to rape _him2, but _he2 @@.gold;fears@@ that it will happen again.
-		<<set _loser.trust -= 10>>
-	<<else>>
-		_He2 @@.mediumorchid;hates@@ having to accept rape from _his2 own father, _winner.slaveName, and @@.gold;fears@@ that it will happen again.
-		<<set _loser.devotion -= 10>>
-		<<set _loser.trust -= 10>>
-	<</if>>
-<<elseif _winner.mother == _loser.ID || _winner.father == _loser.ID>>
-	<<if _loser.devotion > 20>>
-		_He2 accepts _his2 $daughter, _winner.slaveName, having to rape _him2, but _he2 @@.gold;fears@@ that it will happen again.
-		<<set _loser.trust -= 10>>
-		<<set _loser.devotion -= 10>>
-		<<set _loser.trust -= 10>>
-	<</if>>
-<<elseif _loser.sisters > 0>>
-	<<switch areSisters(_winner, _loser)>>
-	<<case 1>>
-		<<if _loser.devotion > 20>>
-			_He2 accepts _his2 twin $sister, _winner.slaveName, having to rape _him2, but _he2 @@.gold;fears@@ that it will happen again.
-			<<set _loser.trust -= 10>>
-		<<else>>
-			_He2 @@.mediumorchid;hates@@ having to accept rape from _his2 own twin $sister, _winner.slaveName, and @@.gold;fears@@ that it will happen again.
-			<<set _loser.devotion -= 10>>
-			<<set _loser.trust -= 10>>
-		<</if>>
-	<<case 2>>
-		<<if _loser.devotion > 20>>
-			_He2 accepts _his2 $sister, _winner.slaveName, having to rape _him2, but _he2 @@.gold;fears@@ that it will happen again.
-			<<set _loser.trust -= 10>>
-		<<else>>
-			_He2 @@.mediumorchid;hates@@ having to accept rape from _his2 own $sister, _winner.slaveName, and @@.gold;fears@@ that it will happen again.
-			<<set _loser.devotion -= 10>>
-			<<set _loser.trust -= 10>>
-		<</if>>
-	<<case 3>>
-		<<if _loser.devotion > 20>>
-			_He2 accepts _his2 half-<<= $sister>>, _winner.slaveName, having to rape _him2, but _he2 @@.gold;fears@@ that it will happen again.
-			<<set _loser.trust -= 10>>
-		<<else>>
-			_He2 @@.mediumorchid;hates@@ having to accept rape from _his2 own half-<<= $sister>>, _winner.slaveName, and @@.gold;fears@@ that it will happen again.
-			<<set _loser.devotion -= 10>>
-			<<set _loser.trust -= 10>>
-		<</if>>
-	<</switch>>
-<<elseif (_loser.relation != 0) && (_winner.ID == _loser.relationTarget) && (_loser.devotion > 20)>>
-	_He2 accepts _winner.slaveName having to rape _him2, but _he2 @@.gold;fears@@ that it will happen again.
+<<elseif areRelated(_loser, _winner) && (_loser.devotion > 20)>>
+	_He2 accepts $his <<print relativeTerm(_loser, _winner)>>, _winner.slaveName, having to rape _him2, but _he2 @@.gold;fears@@ that it will happen again.
 	<<set _loser.trust -= 10>>
-<<elseif (_loser.relation != 0) && (_winner.ID == _loser.relationTarget)>>
-	_He2 @@.mediumorchid;hates@@ having to accept rape from _winner.slaveName, and @@.gold;fears@@ that it will happen again.
+<<elseif areRelated(_loser, _winner)>>
+	_He2 @@.mediumorchid;hates@@ having to accept rape from $his <<print relativeTerm(_loser, _winner)>>, _winner.slaveName, and @@.gold;fears@@ that it will happen again.
 	<<set _loser.devotion -= 10>>
 	<<set _loser.trust -= 10>>
 <</if>>
diff --git a/src/uncategorized/servantsQuartersReport.tw b/src/uncategorized/servantsQuartersReport.tw
index 3db2eae19d40a48e6ad3698b2a84750e2c22fb6c..20e0066dfdeb5dd2ea5e1fb9d25361f4fe29e09a 100644
--- a/src/uncategorized/servantsQuartersReport.tw
+++ b/src/uncategorized/servantsQuartersReport.tw
@@ -122,12 +122,9 @@
 		<<elseif $Stewardess.relationshipTarget == $slaves[$i].ID>>
 			$He dotes over $his <<print relationshipTerm($Stewardess)>>, $slaves[$i].slaveName, making sure _he2 knows how to do a good job and keeping _him2 well stocked with everything _he2 needs.
 			<<set $slaves[$i].devotion++>>
-		<<elseif $familyTesting == 1 && areRelated($Stewardess, $slaves[$i]) > 0>>
+		<<elseif areRelated($Stewardess, $slaves[$i])>>
 			$He pays special attention to $his <<print relativeTerm($Stewardess,$slaves[$i])>>, $slaves[$i].slaveName, making sure _he2 doesn't slack off just because they are related.
 			<<set $slaves[$i].trust++>>
-		<<elseif $Stewardess.relationTarget == $slaves[$i].ID && $familyTesting == 0>>
-			$He pays special attention to $his $slaves[$i].relation, $slaves[$i].slaveName, making sure _he2 doesn't slack off just because they are related.
-			<<set $slaves[$i].trust++>>
 		<</if>>
 		<<switch $slaves[$i].prestigeDesc>>
 		<<case "$He is a famed Free Cities whore, and commands top prices.">>
diff --git a/src/uncategorized/spaReport.tw b/src/uncategorized/spaReport.tw
index bc108dc5141f431b768213d2115f03fb4e79c54d..943ee0c4ff005866cd4cad908f4e12ab08e9f757 100644
--- a/src/uncategorized/spaReport.tw
+++ b/src/uncategorized/spaReport.tw
@@ -114,13 +114,10 @@
 		<<elseif $Attendant.relationshipTarget == $slaves[$i].ID>>
 			$He dedicates most of $his attention to $his <<print relationshipTerm($Attendant)>>, $slaves[$i].slaveName, making _his2 stress, both physical and mental, wash away.
 			<<set $slaves[$i].devotion += 3, $slaves[$i].trust += 3>>
-		<<elseif $familyTesting == 1 && areRelated($Attendant, $slaves[$i]) > 0>>
+		<<elseif areRelated($Attendant, $slaves[$i])>>
 			$He makes sure to spend extra time caring for $his <<print relativeTerm($Attendant,$slaves[$i])>>, $slaves[$i].slaveName.
 			<<set $slaves[$i].trust++>>
 			<<run improveCondition($slaves[$i], 1)>>
-		<<elseif $Attendant.relationTarget == $slaves[$i].ID && $familyTesting == 0>>
-			$He makes sure to spend extra time caring for $his $slaves[$i].relation, $slaves[$i].slaveName.
-			<<set $slaves[$i].trust++>>
 		<</if>>
 		<<switch $slaves[$i].prestigeDesc>>
 		<<case "$He is a famed Free Cities whore, and commands top prices.">>
diff --git a/src/uncategorized/surgeryDegradation.tw b/src/uncategorized/surgeryDegradation.tw
index 70e6a15d7997c4aa7e60fd71f7ed06ec89e996df..ae4ad678c509f9e14e6bdba03507e6e1c26d4d5c 100644
--- a/src/uncategorized/surgeryDegradation.tw
+++ b/src/uncategorized/surgeryDegradation.tw
@@ -128,55 +128,25 @@ As the remote surgery's long recovery cycle completes,
 	<<run generatePronouns($activeSlave)>>
 	<<setLocalPronouns $activeSlave>>
 	<<if $familyTesting == 1>>
-		<<for $j = 0; $j < $slaves.length; $j++>>
-			<<if $activeSlave.mother == $slaves[$j].ID>>
-				<<setLocalPronouns $slaves[$j] 2>>
-				$slaves[$j].slaveName will be @@.mediumorchid;horrified@@ and @@.gold;afraid@@ when _he2 finds out that _his2 $daughter is now a Fuckdoll.
-				<<set $slaves[$j].devotion -= 40, $slaves[$j].trust -= 40>>
-			<</if>>
-			<<if $activeSlave.father == $slaves[$j].ID>>
-				<<setLocalPronouns $slaves[$j] 2>>
-				$slaves[$j].slaveName will be @@.mediumorchid;horrified@@ and @@.gold;afraid@@ when _he2 finds out that _his2 $daughter is now a Fuckdoll.
-				<<set $slaves[$j].devotion -= 40, $slaves[$j].trust -= 40>>
+		<<set _rels = $slaves.filter((s) => areRelated(s, $activeSlave) && !(s.ID === $activeSlave.relationshipTarget))>>
+		<<for _rel range _rels>>
+			<<setLocalPronouns _rel 2>>
+			<<if isParentP($activeSlave, _rel) || isParentP(_rel, $activeSlave)>>
+				_rel.slaveName will be @@.mediumorchid;horrified@@ and @@.gold;afraid@@ when _he2 finds out that _his2 <<print relativeTerm(_rel, $activeSlave)>> is now a Fuckdoll.
+				<<set _rel.devotion -= 40, _rel.trust -= 40>>
 			<</if>>
-			<<if $activeSlave.ID == $slaves[$j].father>>
-				<<setLocalPronouns $slaves[$j] 2>>
-				$slaves[$j].slaveName will be @@.mediumorchid;horrified@@ and @@.gold;afraid@@ when _he2 finds out that _his2 father is now a Fuckdoll.
-				<<set $slaves[$j].devotion -= 40, $slaves[$j].trust -= 40>>
-			<</if>>
-			<<if $activeSlave.ID == $slaves[$j].mother>>
-				<<setLocalPronouns $slaves[$j] 2>>
-				$slaves[$j].slaveName will be @@.mediumorchid;horrified@@ and @@.gold;afraid@@ when _he2 finds out that _his2 mother is now a Fuckdoll.
-				<<set $slaves[$j].devotion -= 40, $slaves[$j].trust -= 40>>
-			<</if>>
-			<<switch areSisters($activeSlave, $slaves[$j])>>
+			<<switch areSisters($activeSlave, _rel)>>
 			<<case 1>>
-				<<setLocalPronouns $slaves[$j] 2>>
-				$slaves[$j].slaveName will be @@.mediumorchid;horrified@@ and @@.gold;afraid@@ when _he2 finds out that _his2 twin is now a Fuckdoll. Is _he2 next?
-				<<set $slaves[$j].devotion -= 50, $slaves[$j].trust -= 50>>
+				_rel.slaveName will be @@.mediumorchid;horrified@@ and @@.gold;afraid@@ when _he2 finds out that _his2 twin is now a Fuckdoll. Is _he2 next?
+				<<set _rel.devotion -= 50, _rel.trust -= 50>>
 			<<case 2>>
-				<<setLocalPronouns $slaves[$j] 2>>
-				$slaves[$j].slaveName will be @@.mediumorchid;horrified@@ and @@.gold;afraid@@ when _he2 finds out that _his2 $sister is now a Fuckdoll.
-				<<set $slaves[$j].devotion -= 40, $slaves[$j].trust -= 40>>
+				_rel.slaveName will be @@.mediumorchid;horrified@@ and @@.gold;afraid@@ when _he2 finds out that _his2 $sister is now a Fuckdoll.
+				<<set _rel.devotion -= 40, _rel.trust -= 40>>
 			<<case 3>>
-				<<setLocalPronouns $slaves[$j] 2>>
-				$slaves[$j].slaveName will be @@.mediumorchid;horrified@@ and @@.gold;afraid@@ when _he2 finds out that _his2 half-<<= $sister>> is now a Fuckdoll.
-				<<set $slaves[$j].devotion -= 30, $slaves[$j].trust -= 30>>
+				_rel.slaveName will be @@.mediumorchid;horrified@@ and @@.gold;afraid@@ when _he2 finds out that _his2 half-<<= $sister>> is now a Fuckdoll.
+				<<set _rel.devotion -= 30,_rel.trust -= 30>>
 			<</switch>>
 		<</for>>
-		<<if $activeSlave.relationship > 0>>
-			<<set $j = $slaveIndices[$activeSlave.relationshipTarget]>>
-			<<if def $j>>
-				<<setLocalPronouns $slaves[$j] 2>>
-				$slaves[$j].slaveName will be @@.mediumorchid;horrified@@ and @@.gold;afraid@@ when _he2 finds out that _his2 <<if $activeSlave.relationship > 4>>$wife<<elseif $activeSlave.relationship > 3>>lover<<elseif $activeSlave.relationship > 2>>intimate friend<<elseif $activeSlave.relationship > 1>>best friend<<else>>friend<</if>> is now a Fuckdoll.
-				<<set $slaves[$j].devotion -= $activeSlave.relationship*10>>
-				<<set $slaves[$j].trust -= $activeSlave.relationship*10>>
-				<<set $slaves[$j].relationship = 0>>
-				<<set $slaves[$j].relationshipTarget = 0>>
-			<</if>>
-		<<elseif $activeSlave.relationship < 0>>
-			$His @@.lightsalmon;slave relationship to you is effectively over,@@ since everyone in the world outside $his suit is created equal to $him. $He'll probably forget to distinguish your <<if $PC.dick != 0>>dick if it's pushed inside $his<<else>>pussy if it's pressed against $his face hole<</if>> soon enough.
-		<</if>>
 	<<else>>
 		<<if $activeSlave.relation != 0>>
 			<<set $j = $slaveIndices[$activeSlave.relationTarget]>>
@@ -187,20 +157,21 @@ As the remote surgery's long recovery cycle completes,
 				<<set $slaves[$j].trust -= 40>>
 			<</if>>
 		<</if>>
-		<<if $activeSlave.relationship > 0>>
-			<<set $j = $slaveIndices[$activeSlave.relationshipTarget]>>
-			<<if def $j>>
-				<<setLocalPronouns $slaves[$j] 2>>
-				$slaves[$j].slaveName will be @@.mediumorchid;horrified@@ and @@.gold;afraid@@ when _he2 finds out that _his2 <<if $activeSlave.relationshipTarget == $activeSlave.relationTarget>>$activeSlave.relation and<</if>> <<if $activeSlave.relationship > 4>>$wife<<elseif $activeSlave.relationship > 3>>lover<<elseif $activeSlave.relationship > 2>>intimate friend<<elseif $activeSlave.relationship > 1>>best friend<<else>>friend<</if>> is now a Fuckdoll.
-				<<set $slaves[$j].devotion -= $activeSlave.relationship*10>>
-				<<set $slaves[$j].trust -= $activeSlave.relationship*10>>
-				<<set $slaves[$j].relationship = 0>>
-				<<set $slaves[$j].relationshipTarget = 0>>
-			<</if>>
-		<<elseif $activeSlave.relationship < 0>>
-			$His @@.lightsalmon;slave relationship to you is effectively over,@@ since everyone in the world outside $his suit is created equal to $him. $He'll probably forget to distinguish your <<if $PC.dick != 0>>dick if it's pushed inside $his<<else>>pussy if it's pressed against $his face hole<</if>> soon enough.
-		<</if>>
 	<</if>> /*closes extended family mode */
+	<<if $activeSlave.relationship > 0>>
+		<<set $j = $slaveIndices[$activeSlave.relationshipTarget]>>
+		<<if def $j>>
+			<<setLocalPronouns $slaves[$j] 2>>
+			<<set _relTerm = relativeTerm($slaves[$j], $activeSlave)>>
+			$slaves[$j].slaveName will be @@.mediumorchid;horrified@@ and @@.gold;afraid@@ when _he2 finds out that _his2 <<if _relTerm != null>>_relTerm and<</if>> <<if $activeSlave.relationship > 4>>$wife<<elseif $activeSlave.relationship > 3>>lover<<elseif $activeSlave.relationship > 2>>intimate friend<<elseif $activeSlave.relationship > 1>>best friend<<else>>friend<</if>> is now a Fuckdoll.
+			<<set $slaves[$j].devotion -= $activeSlave.relationship*10>>
+			<<set $slaves[$j].trust -= $activeSlave.relationship*10>>
+			<<set $slaves[$j].relationship = 0>>
+			<<set $slaves[$j].relationshipTarget = 0>>
+		<</if>>
+	<<elseif $activeSlave.relationship < 0>>
+		$His @@.lightsalmon;slave relationship to you is effectively over,@@ since everyone in the world outside $his suit is created equal to $him. $He'll probably forget to distinguish your <<if $PC.dick != 0>>dick if it's pushed inside $his<<else>>pussy if it's pressed against $his face hole<</if>> soon enough.
+	<</if>>
 	<<if $activeSlave.rivalry != 0>>
 		<<set $j = $slaveIndices[$activeSlave.rivalryTarget]>>
 		<<if def $j>>