diff --git a/devNotes/Useful JS Function Documentation.txt b/devNotes/Useful JS Function Documentation.txt
index 9e8c0ffbb795a16c65302f6e40bbabfdcf2790d3..eab58c5bc05d3eab207ea9b355caff647fd65c04 100644
--- a/devNotes/Useful JS Function Documentation.txt	
+++ b/devNotes/Useful JS Function Documentation.txt	
@@ -144,15 +144,63 @@ SlaveTitle(slave) - Returns the slave's descriptive title.
 
 relativeTerm(slave1, slave2) - Returns the term for slave2's relation to slave1. (daughter, mother, etc)
 
+relationshipChecks [script] All work as expected with <<if X.rivalryTarget == $slaves[$i].ID>> preceding them.
+	rivalryTerm(id) - Returns the rivarly term for the input . e.g. lines 99-100 of brothelReport. 
+		<<if $Madam.rivalryTarget == $slaves[$i].ID>> 
+			She forces her <<print rivalryTerm($Madam)>>, to service all the men in the brothel.
+		Would print 'She forces her growing rival, to service all the men in the brothel.'
+
+	relationshipTerm(id) Returns the long form relationship term for the input . e.g. lines 147-148 of saRules.
+		<<if $slaves[$i].relationship > 0>>
+			$He often asks to save these breaks so $he can spend them with $his <<print relationshipTerm($slaves[$i])>>.
+		Would print '$He often asks to save these breaks so $he can spend them with $his friend.'
+
+	relationshipTermShort(id) Prints the short form of the above. e.g. line 321 of slaveInteract.
+		`"Fuck $him with $his <<print relationshipTermShort($activeSlave)>> <<= SlaveFullName($slaves[_si])>>"`
+		Would print 'Fuck $him with $his BFF <<= SlaveFullName($slaves[_si])>>'
+
 bellyAdjective(slave) - Returns a string describing her belly size.
 
 lispReplace(string) - Ruturns the string lispified.
 
 nippleColor(slave) - Returns the slave's nipple color.
 
+UtilJS [script]
+	commaNum() - Returns the value thousand sepeated with ',' if $formatNumbers > 0 else provides the raw value.
+		line 138 of src/SpecialForce/Report.tw, '...focused their <<print commaNum($SFUnit.Troops)>> troops'
+		if $formatNumbers > 0 'focused their 1,589 troops' else 'focused their 1589 troops'
+
+	cashFormat() - uses the above function to return the value thousand sepeated with ',' if $formatNumbers > 0 else provides the raw value. either way prepend ¤ (the fc domination) symbol.
+		line 157 of the previously listed file, '..totaling @@.yellowgreen;<<print cashFormat(_SFIncome)>>@@'
+		if $formatNumbers > 0 'totaling @@.yellowgreen;¤1,500,000@@' else 'totaling @@.yellowgreen;¤1500000@@'
+
+		isFloat() - Checks if value is float.
+
+		isInt() - Checks if value is an interger.
+
+		numberWithCommas() - Currently unsed.
+
+		jsRandom()
+
+		jsRandomMany()
 
+		jsEither() - This function wants an array - which explains why it works like array.random(). Give it one or you'll face a NaN
 
+		deepCopy() - This function is alternative to clone - usage needed if nested objects present. Slower but result is separate object tree, not with reference to source object.
 
+		hashChoice() - hashes provided input.
+
+		hashSum() - totals provided input and then hashes.
+
+		arr2obj() - Converts an array to an object. e.g. line 250 of :: init Nationalities [silently]
+			<<set $nationalities = arr2obj(setup.baseNationalities)>>
+
+		hashPush() //Note really shure where input is being pushed to.
+
+		weightedArray2HashMap()
+
+		between(a, low, high) - outputs the value down the middle of two inputs e.g.
+			between($trees, 1, 3) returns $trees = 2
 
 Core Slave Functions:
 
@@ -194,8 +242,31 @@ SoftenBehavioralFlaw(slave) - Rplaces the slave's behavioral flaw with the corre
 
 SoftenSexualFlaw(slave) - Rplaces the slave's sexual flaw with the corresponding quirk.
 
+UtilJS [script]
+	Height.mean(nationality, race, genes, age) - returns the mean height for the given combination and age in years (>=2).
+ Height.mean(nationality, race, genes) - returns the mean adult height for the given combination.
+ Height.mean(slave) - returns the mean (expected) height for the given slave.
+
+ Height.random(nationality, race, genes, age) - returns a random height using the skew-normal distribution around the mean height for the given arguments.
+ Height.random(nationality, race, genes) - returns a random height for the given combination of an adult, as above.
+ Height.random(slave[, options]) - returns a random height for the given slave, as above.
+
+ Height.forAge(height, age, genes) - returns the height adapted to the age and genes.
+ Height.forAge(height, slave) - returns the height adapted to the slave's age and genes.
+
+ heightToEitherUnit() - takes an int in centimetres e.g. $activeSlave.height, returns a string in the format of either `200cm (6'7")`, `6'7"`, or `200cm`
 
+ Height.config(configuration) - configures the random height generator globally and returns the current configuration.
 
+ Intelligence.random(options) - returns a random intelligence. If no options are passed, the generated number will be on a normal distribution with mean 0 and standard deviation 45.
+
+ generateNewID()
+
+ getSlaveDevotionClass(slave) - returns the trust of the target as text. e.g. if ('mindbroken' == slave.fetish) return 'mindbroken';
+
+ getSlaveTrustClass(slave) - returns the trust of the target as text. e.g. if (slave.trust < -95) return 'extremely-terrified';
+
+ 
 
 Sex Functions:
 
@@ -217,7 +288,19 @@ SimpleSlaveFucking(slave, count) - Runs a slave on slave sex act count times. (r
 
 SimpleSlaveSlaveFucking(slave1, slave2, count) - Runs a slave2 on slave1 sex act count times. (randomly chooses hole based off availability.)
 
+UtilJS [script]
+	
+	dickToInchString() - takes a dick value e.g. $activeSlave.dick, returns a string in the format 6 inches
+
+	dickToCM() - takes a dick value e.g. $activeSlave.dick, returns an int of the dick length in cm
 
+	ballsToInchString() - takes a ball value e.g. $activeSlave.balls, returns a string in the format 3 inches
+
+	ballsToCM() - takes a ball value e.g. $activeSlave.balls, returns an int of the ball size in cm
+
+	dickToEitherUnit() - takes a dick value e.g. $activeSlave.dick, returns a string in the format of either `20cm (8 inches)`, `8 inches`, or `20cm`
+
+	ballsToEitherUnit() - takes a ball value e.g. $activeSlave.balls, returns a string in the format of either `20cm (8 inches)`, `8 inches`, or `20cm`
 
 Pregnancy Functions:
 
@@ -242,3 +325,24 @@ $slave.bellyPreg = WombGetWolume($slave) - return double, with current womb volu
 Other Functions:
 
 isItemAccessible(itemName) - Returns if the string is available for use. Defaults to true.
+
+UtilJS [script]
+	arraySwap() - swapps inputted array.
+
+	html5passage(passage_function) - circumvents sugarcube, allowing a plain HTML5 UI within it
+
+	capFirstChar()
+
+	cmToInchString() - takes an integer e.g. $activeSlave.hLength, returns a string in the format 10 inches
+
+	cmToFootInchString() - takes an integer e.g. $activeSlave.height, returns a string in the format 6'5"
+
+	lengthToEitherUnit() - takes an int in centimetres e.g. $activeSlave.hLength, returns a string in the format of either `30cm (12 inches)`, `12 inches`, or `30cm`
+
+	ValidateFacilityDecoration() - checks the value of the assoicated variable and it if it infinite i.e NA the text description is reset back to standard.
+		/* decoration should be passed as "facilityDecoration" in quotes. For example, ValidateFacilityDecoration("brothelDecoration"). The quotes are important, do not pass it as a story variable. */
+
+	FSChangePorn() - //Currently unused, widget version routes directly through FSChange()
+
+	ordinalSuffix(i) - takes a value as an input and then appends the appoperiate suffix. e.g.$Day === 1 "today is the <<print ordinalSuffix($Day)>> of the month"
+		would print "today is the 1st of the month"
\ No newline at end of file
diff --git a/devNotes/twine JS.txt b/devNotes/twine JS.txt
index e2ac07598a98c27d30644493b216b4080a747018..2106260425318ccd9033af7640ff0c8df625ea6a 100644
--- a/devNotes/twine JS.txt	
+++ b/devNotes/twine JS.txt	
@@ -9098,6 +9098,43 @@ window.faceIncrease = function faceIncrease(slave, amount) {
 	return r;
 };
 
+/*:: relationshipChecks [script]*/
+window.rivalryTerm = function(id) {
+	if (id.rivalry === 1) {
+		return `growing rival`;
+	} else if (id.rivalry === 2) {
+		return `rival`;
+	} else {
+		return `bitter rival`;
+	}
+}
+window.relationshipTerm = function(id) {
+	if (id.relationship === 1) {
+		return `friend`;
+	} else if (id.relationship === 2) {
+		return `best friend`;
+	} else if (id.relationship === 3) {
+			return `friend with benefits`;
+	} else if (id.relationship === 4) {
+			return `lover`;
+	} else {
+			return `slave wife`;
+	}
+}
+window.relationshipTermShort = function(id) {
+	if (id.relationship === 1) {
+		return `friend`;
+	} else if (id.relationship === 2) {
+		return `BFF`;
+	} else if (id.relationship === 3) {
+		return `FWB`;
+	} else if (id.relationship === 4) {
+		return `lover`;
+	} else {
+		return `wife`;
+	}
+}
+
 /*:: Summary Widgets JS [script]*/
 
 window.SlaveStatClamp = function SlaveStatClamp(slave) {
@@ -23460,17 +23497,8 @@ window.SlaveSummaryUncached = (function(){
 			if (_ssj !== -1) {
 				r += `${SlaveFullName(V.slaves[_ssj])}'s daughter`;
 				if (slave.relationshipTarget === V.slaves[_ssj].ID) {
-					if (slave.relationship === 1) {
-						r += ` & friend`;
-					} else if (slave.relationship === 2) {
-						r += ` & BFF`;
-					} else if (slave.relationship === 3) {
-						r += ` & FWB`;
-					} else if (slave.relationship === 4) {
-						r += ` & lover`;
-					} else {
-						r += ` & wife`;
-					}
+					var friendShipShort = relationshipTermShort(slave)
+					r += `${friendShipShort}`;
 					handled = 1;
 				}
 			}
@@ -23495,17 +23523,8 @@ window.SlaveSummaryUncached = (function(){
 			if (_ssj !== -1) {
 				r += `${SlaveFullName(V.slaves[_ssj])}'s daughter`;
 				if (slave.relationshipTarget === V.slaves[_ssj].ID && handled !== 1) {
-					if (slave.relationship === 1) {
-						r += ` & friend`;
-					} else if (slave.relationship === 2) {
-						r += ` & BFF`;
-					} else if (slave.relationship === 3) {
-						r += ` & FWB`;
-					} else if (slave.relationship === 4) {
-						r += ` & lover`;
-					} else {
-						r += ` & wife`;
-					}
+					var friendShipShort = relationshipTermShort(slave)
+					r += `& ${friendShipShort}`;
 					handled = 1;
 				}
 			}
@@ -23530,17 +23549,8 @@ window.SlaveSummaryUncached = (function(){
 			if (_ssj !== -1) {
 				r += `${SlaveFullName(V.slaves[_ssj])}'s mother`;
 				if (slave.relationshipTarget === V.slaves[_ssj].ID) {
-					if (slave.relationship === 1) {
-						r += ` & friend`;
-					} else if (slave.relationship === 2) {
-						r += ` & BFF`;
-					} else if (slave.relationship === 3) {
-						r += ` & FWB`;
-					} else if (slave.relationship === 4) {
-						r += ` & lover`;
-					} else {
-						r += ` & wife`;
-					}
+					var friendShipShort = relationshipTermShort(slave)
+					r += `& ${friendShipShort}`;
 					handled = 1;
 				}
 			}
@@ -23551,17 +23561,8 @@ window.SlaveSummaryUncached = (function(){
 			if (_ssj !== -1) {
 				r += `${SlaveFullName(V.slaves[_ssj])}'s father`;
 				if (slave.relationshipTarget === V.slaves[_ssj].ID && handled !== 1) {
-					if (slave.relationship === 1) {
-						r += ` & friend`;
-					} else if (slave.relationship === 2) {
-						r += ` & BFF`;
-					} else if (slave.relationship === 3) {
-						r += ` & FWB`;
-					} else if (slave.relationship === 4) {
-						r += ` & lover`;
-					} else {
-						r += ` & wife`;
-					}
+					var friendShipShort = relationshipTermShort(slave)
+					r += `& ${friendShipShort}`;
 					handled = 1;
 				}
 			}
@@ -23576,17 +23577,8 @@ window.SlaveSummaryUncached = (function(){
 			if (_ssj !== -1) {
 				r += `${SlaveFullName(V.slaves[_ssj])}'s sister`;
 				if (slave.relationshipTarget === V.slaves[_ssj].ID) {
-					if (slave.relationship === 1) {
-						r += ` & friend`;
-					} else if (slave.relationship === 2) {
-						r += ` & BFF`;
-					} else if (slave.relationship === 3) {
-						r += ` & FWB`;
-					} else if (slave.relationship === 4) {
-						r += ` & lover`;
-					} else {
-						r += ` & wife`;
-					}
+					var friendShipShort = relationshipTermShort(slave)
+					r += `& ${friendShipShort}`;
 					handled = 1;
 				}
 			}
@@ -23600,23 +23592,8 @@ window.SlaveSummaryUncached = (function(){
 			});
 			if (_ssj !== -1) {
 				r += `${SlaveFullName(V.slaves[_ssj])}'s`;
-				switch (slave.relationship) {
-					case 1:
-						r += ` friend`;
-						break;
-					case 2:
-						r += ` BFF`;
-						break;
-					case 3:
-						r += ` FWB`;
-						break;
-					case 4:
-						r += ` lover`;
-						break;
-					case 5:
-						r += ` wife`;
-						break;
-				}
+				var friendShipShort = relationshipTermShort(slave)
+				r += ` ${friendShipShort}`;
 			}
 		} else if (slave.relationship === -3 && slave.mother !== -1 && slave.father !== -1) {
 			r += `Your wife`;
@@ -23642,50 +23619,16 @@ window.SlaveSummaryUncached = (function(){
 				return s.ID === slave.relationshipTarget;
 			});
 			if (_ssj !== -1) {
-				switch (slave.relationship) {
-					case 1:
-						if (slave.relationshipTarget !== slave.relationTarget) {
-							r += `${SlaveFullName(V.slaves[_ssj])}'s`;
-						} else {
-							r += ` &`;
-						}
-						r += ` friend`;
-						break;
-					case 2:
-						if (slave.relationshipTarget !== slave.relationTarget) {
-							r += `${SlaveFullName(V.slaves[_ssj])}'s`;
-						} else {
-							r += ` &`;
-						}
-						r += ` BFF`;
-						break;
-					case 3:
-						if (slave.relationshipTarget !== slave.relationTarget) {
-							r += `${SlaveFullName(V.slaves[_ssj])}'s`;
-						} else {
-							r += ` &`;
-						}
-						r += ` FWB`;
-						break;
-					case 4:
-						if (slave.relationshipTarget !== slave.relationTarget) {
-							r += `${SlaveFullName(V.slaves[_ssj])}'s`;
-						} else {
-							r += ` &`;
-						}
-						r += ` lover`;
-						break;
-					case 5:
-						if (slave.relationshipTarget !== slave.relationTarget) {
-							r += `${SlaveFullName(V.slaves[_ssj])}'s`;
-						} else {
-							r += ` &`;
-						}
-						r += ` wife`;
-						break;
+				var friendShip = relationshipTerm(slave)
+					if (slave.relationshipTarget !== slave.relationTarget) {
+						r += `${SlaveFullName(V.slaves[_ssj])}'s`;
+					} else {
+						r += ` &`;
+					}
+					r += ` ${friendShip}`;
 				}
 			}
-		} else if (slave.relationship === -3 && slave.mother !== -1 && slave.father !== -1) {
+		} else if (slave.relationship === -3) {
 			r += `Your wife`;
 		} else if (slave.relationship === -2) {
 			r += `E Bonded`;
@@ -23723,17 +23666,8 @@ window.SlaveSummaryUncached = (function(){
 			if (_ssj !== -1) {
 				r += `${SlaveFullName(V.slaves[_ssj])}'s <span class="lightgreen">daughter`;
 				if (slave.relationshipTarget === V.slaves[_ssj].ID) {
-					if (slave.relationship === 1) {
-						r += ` and friend`;
-					} else if (slave.relationship === 2) {
-						r += ` and best friend`;
-					} else if (slave.relationship === 3) {
-						r += ` and FWB`;
-					} else if (slave.relationship === 4) {
-						r += ` and lover`;
-					} else {
-						r += ` and wife`;
-					}
+					var friendShipShort = relationshipTerm(slave)
+					r += ` and ${friendShipShort}`;
 					handled = 1;
 				}
 				r += `.</span> `;
@@ -23759,17 +23693,8 @@ window.SlaveSummaryUncached = (function(){
 			if (_ssj !== -1) {
 				r += `${SlaveFullName(V.slaves[_ssj])}'s <span class="lightgreen">daughter`;
 				if (slave.relationshipTarget === V.slaves[_ssj].ID) {
-					if (slave.relationship === 1) {
-						r += ` and friend`;
-					} else if (slave.relationship === 2) {
-						r += ` and best friend`;
-					} else if (slave.relationship === 3) {
-						r += ` and FWB`;
-					} else if (slave.relationship === 4) {
-						r += ` and lover`;
-					} else {
-						r += ` and wife`;
-					}
+					var friendShipShort = relationshipTerm(slave)
+					r += ` and ${friendShipShort}`;
 					handled = 1;
 				}
 				r += `.</span> `;
@@ -23795,17 +23720,8 @@ window.SlaveSummaryUncached = (function(){
 			if (_ssj !== -1) {
 				r += `${SlaveFullName(V.slaves[_ssj])}'s <span class="lightgreen">mother`;
 				if (slave.relationshipTarget === V.slaves[_ssj].ID) {
-					if (slave.relationship === 1) {
-						r += ` and friend`;
-					} else if (slave.relationship === 2) {
-						r += ` and best friend`;
-					} else if (slave.relationship === 3) {
-						r += ` and FWB`;
-					} else if (slave.relationship === 4) {
-						r += ` and lover`;
-					} else {
-						r += ` and wife`;
-					}
+					var friendShipShort = relationshipTerm(slave)
+					r += ` and ${friendShipShort}`;
 					handled = 1;
 				}
 				r += `.</span> `;
@@ -23816,17 +23732,8 @@ window.SlaveSummaryUncached = (function(){
 			if (_ssj !== -1) {
 				r += `${SlaveFullName(V.slaves[_ssj])}'s <span class="lightgreen">father`;
 				if (slave.relationshipTarget === V.slaves[_ssj].ID) {
-					if (slave.relationship === 1) {
-						r += ` and friend`;
-					} else if (slave.relationship === 2) {
-						r += ` and best friend`;
-					} else if (slave.relationship === 3) {
-						r += ` and FWB`;
-					} else if (slave.relationship === 4) {
-						r += ` and lover`;
-					} else {
-						r += ` and wife`;
-					}
+					var friendShipShort = relationshipTerm(slave)
+					r += ` and ${friendShipShort}`;
 					handled = 1;
 				}
 				r += `.</span> `;
@@ -23847,17 +23754,8 @@ window.SlaveSummaryUncached = (function(){
 			if (_ssj !== -1) {
 				r += `${SlaveFullName(V.slaves[_ssj])}'s <span class="lightgreen">sister`;
 				if (slave.relationshipTarget === V.slaves[_ssj].ID) {
-					if (slave.relationship === 1) {
-						r += ` and friend`;
-					} else if (slave.relationship === 2) {
-						r += ` and best friend`;
-					} else if (slave.relationship === 3) {
-						r += ` and FWB`;
-					} else if (slave.relationship === 4) {
-						r += ` and lover`;
-					} else {
-						r += ` and wife`;
-					}
+					var friendShipShort = relationshipTerm(slave)
+					r += ` and ${friendShipShort}`;
 					handled = 1;
 				}
 				r += `.</span> `;
@@ -23876,26 +23774,11 @@ window.SlaveSummaryUncached = (function(){
 				return s.ID === slave.relationshipTarget;
 			});
 			if (_ssj !== -1) {
+				var friendShip = relationshipTerm(slave)
 				r += `${SlaveFullName(V.slaves[_ssj])}'s `;
-				switch (slave.relationship) {
-					case 1:
-						r += `<span class="lightgreen">friend.</span> `;
-						break;
-					case 2:
-						r += `<span class="lightgreen">best friend.</span> `;
-						break;
-					case 3:
-						r += `<span class="lightgreen">FWB.</span> `;
-						break;
-					case 4:
-						r += `<span class="lightgreen">lover.</span> `;
-						break;
-					case 5:
-						r += `<span class="lightgreen">slave wife.</span> `;
-						break;
-				}
+				r += `<span class="lightgreen">${friendShip}.</span> `;
 			}
-		} else if (slave.relationship === -3) {
+		} else if (slave.relationship === -3 && slave.mother !== -1 && slave.father !== -1) {
 			r += `<span class="lightgreen">Your wife.</span> `;
 		} else if (slave.relationship === -2) {
 			r += `<span class="lightgreen">Emotionally bonded to you.</span> `;
@@ -23926,48 +23809,13 @@ window.SlaveSummaryUncached = (function(){
 				return s.ID === slave.relationshipTarget;
 			});
 			if (_ssj !== -1) {
-				switch (slave.relationship) {
-					case 1:
-						if (slave.relationshipTarget !== slave.relationTarget) {
-							r += `${SlaveFullName(V.slaves[_ssj])}'s `;
-						} else {
-							r += ` and `;
-						}
-						r += `<span class="lightgreen">friend.</span> `;
-						break;
-					case 2:
-						if (slave.relationshipTarget !== slave.relationTarget) {
-							r += `${SlaveFullName(V.slaves[_ssj])}'s `;
-						} else {
-							r += ` and `;
-						}
-						r += `<span class="lightgreen">best friend.</span> `;
-						break;
-					case 3:
-						if (slave.relationshipTarget !== slave.relationTarget) {
-							r += `${SlaveFullName(V.slaves[_ssj])}'s `;
-						} else {
-							r += ` and `;
-						}
-						r += `<span class="lightgreen">FWB.</span> `;
-						break;
-					case 4:
-						if (slave.relationshipTarget !== slave.relationTarget) {
-							r += `${SlaveFullName(V.slaves[_ssj])}'s `;
-						} else {
-							r += ` and `;
-						}
-						r += `<span class="lightgreen">lover.</span> `;
-						break;
-					case 5:
-						if (slave.relationshipTarget !== slave.relationTarget) {
-							r += `${SlaveFullName(V.slaves[_ssj])}'s`;
-						} else {
-							r += ` and `;
-						}
-						r += `<span class="lightgreen">slave wife.</span> `;
-						break;
+				var friendShip = relationshipTerm(slave)
+				if (slave.relationshipTarget !== slave.relationTarget) {
+					r += `${SlaveFullName(V.slaves[_ssj])}'s `;
+				} else {
+					r += ` and `;
 				}
+				r += `<span class="lightgreen">${friendShip}.</span> `;
 			}
 		} else if (slave.relationship === -3) {
 			r += `<span class="lightgreen">Your wife.</span> `;
diff --git a/src/art/vector/Leg.tw b/src/art/vector/Leg.tw
index c9b935383c6b9997c5bee76aed43adc1bd94858a..3d6c4fbed20b7f105ab56e7e297194507fe447a5 100644
--- a/src/art/vector/Leg.tw
+++ b/src/art/vector/Leg.tw
@@ -90,7 +90,7 @@
 	<<include _art>>
 <</if>>
 /* Changed next line for no attached limbs regardless of the PLimb state */
-/* <<if _artSlave.amp == 1 && _artSlave.PLimb == 0>> */
+/* <<if _artSlave.amp == 1 && _artSlave.PLimb == 0>> <</if>> */
 <<if _artSlave.amp == 1>>
 	<<include Art_Vector_Stump>>
 <</if>>
\ No newline at end of file
diff --git a/src/js/relationshipChecks.tw b/src/js/relationshipChecks.tw
new file mode 100644
index 0000000000000000000000000000000000000000..765e2fea22caadd97c46490f100482591d3d35f3
--- /dev/null
+++ b/src/js/relationshipChecks.tw
@@ -0,0 +1,36 @@
+:: relationshipChecks [script]
+window.rivalryTerm = function(id) {
+	if (id.rivalry === 1) {
+		return `growing rival`;
+	} else if (id.rivalry === 2) {
+		return `rival`;
+	} else {
+		return `bitter rival`;
+	}
+}
+window.relationshipTerm = function(id) {
+	if (id.relationship === 1) {
+		return `friend`;
+	} else if (id.relationship === 2) {
+		return `best friend`;
+	} else if (id.relationship === 3) {
+			return `friend with benefits`;
+	} else if (id.relationship === 4) {
+			return `lover`;
+	} else {
+			return `slave wife`;
+	}
+}
+window.relationshipTermShort = function(id) {
+	if (id.relationship === 1) {
+		return `friend`;
+	} else if (id.relationship === 2) {
+		return `BFF`;
+	} else if (id.relationship === 3) {
+		return `FWB`;
+	} else if (id.relationship === 4) {
+		return `lover`;
+	} else {
+		return `wife`;
+	}
+}
\ No newline at end of file
diff --git a/src/js/slaveSummaryWidgets.tw b/src/js/slaveSummaryWidgets.tw
index 0bf2907d0528146c2e8e09ff554baa3dacae29cb..271f157a5811c69bfbba69941df48c1a4916847d 100644
--- a/src/js/slaveSummaryWidgets.tw
+++ b/src/js/slaveSummaryWidgets.tw
@@ -3651,17 +3651,8 @@ window.SlaveSummaryUncached = (function(){
 			if (_ssj !== -1) {
 				r += `${SlaveFullName(V.slaves[_ssj])}'s daughter`;
 				if (slave.relationshipTarget === V.slaves[_ssj].ID) {
-					if (slave.relationship === 1) {
-						r += ` & friend`;
-					} else if (slave.relationship === 2) {
-						r += ` & BFF`;
-					} else if (slave.relationship === 3) {
-						r += ` & FWB`;
-					} else if (slave.relationship === 4) {
-						r += ` & lover`;
-					} else {
-						r += ` & wife`;
-					}
+					var friendShipShort = relationshipTermShort(slave)
+					r += ` & ${friendShipShort}`;
 					handled = 1;
 				}
 			}
@@ -3686,17 +3677,8 @@ window.SlaveSummaryUncached = (function(){
 			if (_ssj !== -1) {
 				r += `${SlaveFullName(V.slaves[_ssj])}'s daughter`;
 				if (slave.relationshipTarget === V.slaves[_ssj].ID && handled !== 1) {
-					if (slave.relationship === 1) {
-						r += ` & friend`;
-					} else if (slave.relationship === 2) {
-						r += ` & BFF`;
-					} else if (slave.relationship === 3) {
-						r += ` & FWB`;
-					} else if (slave.relationship === 4) {
-						r += ` & lover`;
-					} else {
-						r += ` & wife`;
-					}
+					var friendShipShort = relationshipTermShort(slave)
+					r += ` & ${friendShipShort}`;
 					handled = 1;
 				}
 			}
@@ -3721,17 +3703,8 @@ window.SlaveSummaryUncached = (function(){
 			if (_ssj !== -1) {
 				r += `${SlaveFullName(V.slaves[_ssj])}'s mother`;
 				if (slave.relationshipTarget === V.slaves[_ssj].ID) {
-					if (slave.relationship === 1) {
-						r += ` & friend`;
-					} else if (slave.relationship === 2) {
-						r += ` & BFF`;
-					} else if (slave.relationship === 3) {
-						r += ` & FWB`;
-					} else if (slave.relationship === 4) {
-						r += ` & lover`;
-					} else {
-						r += ` & wife`;
-					}
+					var friendShipShort = relationshipTermShort(slave)
+					r += ` & ${friendShipShort}`;
 					handled = 1;
 				}
 			}
@@ -3742,17 +3715,8 @@ window.SlaveSummaryUncached = (function(){
 			if (_ssj !== -1) {
 				r += `${SlaveFullName(V.slaves[_ssj])}'s father`;
 				if (slave.relationshipTarget === V.slaves[_ssj].ID && handled !== 1) {
-					if (slave.relationship === 1) {
-						r += ` & friend`;
-					} else if (slave.relationship === 2) {
-						r += ` & BFF`;
-					} else if (slave.relationship === 3) {
-						r += ` & FWB`;
-					} else if (slave.relationship === 4) {
-						r += ` & lover`;
-					} else {
-						r += ` & wife`;
-					}
+					var friendShipShort = relationshipTermShort(slave)
+					r += ` & ${friendShipShort}`;
 					handled = 1;
 				}
 			}
@@ -3767,17 +3731,8 @@ window.SlaveSummaryUncached = (function(){
 			if (_ssj !== -1) {
 				r += `${SlaveFullName(V.slaves[_ssj])}'s sister`;
 				if (slave.relationshipTarget === V.slaves[_ssj].ID) {
-					if (slave.relationship === 1) {
-						r += ` & friend`;
-					} else if (slave.relationship === 2) {
-						r += ` & BFF`;
-					} else if (slave.relationship === 3) {
-						r += ` & FWB`;
-					} else if (slave.relationship === 4) {
-						r += ` & lover`;
-					} else {
-						r += ` & wife`;
-					}
+					var friendShipShort = relationshipTermShort(slave)
+					r += `& ${friendShipShort}`;
 					handled = 1;
 				}
 			}
@@ -3791,23 +3746,8 @@ window.SlaveSummaryUncached = (function(){
 			});
 			if (_ssj !== -1) {
 				r += `${SlaveFullName(V.slaves[_ssj])}'s`;
-				switch (slave.relationship) {
-					case 1:
-						r += ` friend`;
-						break;
-					case 2:
-						r += ` BFF`;
-						break;
-					case 3:
-						r += ` FWB`;
-						break;
-					case 4:
-						r += ` lover`;
-						break;
-					case 5:
-						r += ` wife`;
-						break;
-				}
+				var friendShipShort = relationshipTermShort(slave)
+				r += ` ${friendShipShort}`;
 			}
 		} else if (slave.relationship === -3 && slave.mother !== -1 && slave.father !== -1) {
 			r += `Your wife`;
@@ -3833,48 +3773,13 @@ window.SlaveSummaryUncached = (function(){
 				return s.ID === slave.relationshipTarget;
 			});
 			if (_ssj !== -1) {
-				switch (slave.relationship) {
-					case 1:
-						if (slave.relationshipTarget !== slave.relationTarget) {
-							r += `${SlaveFullName(V.slaves[_ssj])}'s`;
-						} else {
-							r += ` &`;
-						}
-						r += ` friend`;
-						break;
-					case 2:
-						if (slave.relationshipTarget !== slave.relationTarget) {
-							r += `${SlaveFullName(V.slaves[_ssj])}'s`;
-						} else {
-							r += ` &`;
-						}
-						r += ` BFF`;
-						break;
-					case 3:
-						if (slave.relationshipTarget !== slave.relationTarget) {
-							r += `${SlaveFullName(V.slaves[_ssj])}'s`;
-						} else {
-							r += ` &`;
-						}
-						r += ` FWB`;
-						break;
-					case 4:
-						if (slave.relationshipTarget !== slave.relationTarget) {
-							r += `${SlaveFullName(V.slaves[_ssj])}'s`;
-						} else {
-							r += ` &`;
-						}
-						r += ` lover`;
-						break;
-					case 5:
-						if (slave.relationshipTarget !== slave.relationTarget) {
-							r += `${SlaveFullName(V.slaves[_ssj])}'s`;
-						} else {
-							r += ` &`;
-						}
-						r += ` wife`;
-						break;
-				}
+				var friendship = relationshipTerm(slave)
+					if (slave.relationshipTarget !== slave.relationTarget) {
+						r += `${SlaveFullName(V.slaves[_ssj])}'s`;
+					} else {
+						r += ` &`;
+					}
+					r += ` ${friendship}`;
 			}
 		} else if (slave.relationship === -3) {
 			r += `Your wife`;
@@ -3914,17 +3819,8 @@ window.SlaveSummaryUncached = (function(){
 			if (_ssj !== -1) {
 				r += `${SlaveFullName(V.slaves[_ssj])}'s <span class="lightgreen">daughter`;
 				if (slave.relationshipTarget === V.slaves[_ssj].ID) {
-					if (slave.relationship === 1) {
-						r += ` and friend`;
-					} else if (slave.relationship === 2) {
-						r += ` and best friend`;
-					} else if (slave.relationship === 3) {
-						r += ` and FWB`;
-					} else if (slave.relationship === 4) {
-						r += ` and lover`;
-					} else {
-						r += ` and wife`;
-					}
+					var friendShipShort = relationshipTerm(slave)
+					r += ` and ${friendShipShort}`;
 					handled = 1;
 				}
 				r += `.</span> `;
@@ -3950,17 +3846,8 @@ window.SlaveSummaryUncached = (function(){
 			if (_ssj !== -1) {
 				r += `${SlaveFullName(V.slaves[_ssj])}'s <span class="lightgreen">daughter`;
 				if (slave.relationshipTarget === V.slaves[_ssj].ID) {
-					if (slave.relationship === 1) {
-						r += ` and friend`;
-					} else if (slave.relationship === 2) {
-						r += ` and best friend`;
-					} else if (slave.relationship === 3) {
-						r += ` and FWB`;
-					} else if (slave.relationship === 4) {
-						r += ` and lover`;
-					} else {
-						r += ` and wife`;
-					}
+					var friendShipShort = relationshipTerm(slave)
+					r += ` and ${friendShipShort}`;
 					handled = 1;
 				}
 				r += `.</span> `;
@@ -3986,17 +3873,8 @@ window.SlaveSummaryUncached = (function(){
 			if (_ssj !== -1) {
 				r += `${SlaveFullName(V.slaves[_ssj])}'s <span class="lightgreen">mother`;
 				if (slave.relationshipTarget === V.slaves[_ssj].ID) {
-					if (slave.relationship === 1) {
-						r += ` and friend`;
-					} else if (slave.relationship === 2) {
-						r += ` and best friend`;
-					} else if (slave.relationship === 3) {
-						r += ` and FWB`;
-					} else if (slave.relationship === 4) {
-						r += ` and lover`;
-					} else {
-						r += ` and wife`;
-					}
+					var friendShipShort = relationshipTerm(slave)
+					r += ` and ${friendShipShort}`;
 					handled = 1;
 				}
 				r += `.</span> `;
@@ -4007,17 +3885,8 @@ window.SlaveSummaryUncached = (function(){
 			if (_ssj !== -1) {
 				r += `${SlaveFullName(V.slaves[_ssj])}'s <span class="lightgreen">father`;
 				if (slave.relationshipTarget === V.slaves[_ssj].ID) {
-					if (slave.relationship === 1) {
-						r += ` and friend`;
-					} else if (slave.relationship === 2) {
-						r += ` and best friend`;
-					} else if (slave.relationship === 3) {
-						r += ` and FWB`;
-					} else if (slave.relationship === 4) {
-						r += ` and lover`;
-					} else {
-						r += ` and wife`;
-					}
+					var friendShipShort = relationshipTerm(slave)
+					r += ` and ${friendShipShort}`;
 					handled = 1;
 				}
 				r += `.</span> `;
@@ -4038,17 +3907,8 @@ window.SlaveSummaryUncached = (function(){
 			if (_ssj !== -1) {
 				r += `${SlaveFullName(V.slaves[_ssj])}'s <span class="lightgreen">sister`;
 				if (slave.relationshipTarget === V.slaves[_ssj].ID) {
-					if (slave.relationship === 1) {
-						r += ` and friend`;
-					} else if (slave.relationship === 2) {
-						r += ` and best friend`;
-					} else if (slave.relationship === 3) {
-						r += ` and FWB`;
-					} else if (slave.relationship === 4) {
-						r += ` and lover`;
-					} else {
-						r += ` and wife`;
-					}
+					var friendShipShort = relationshipTerm(slave)
+					r += ` and ${friendShipShort}`;
 					handled = 1;
 				}
 				r += `.</span> `;
@@ -4067,24 +3927,9 @@ window.SlaveSummaryUncached = (function(){
 				return s.ID === slave.relationshipTarget;
 			});
 			if (_ssj !== -1) {
+				var friendship = relationshipTerm(slave)
 				r += `${SlaveFullName(V.slaves[_ssj])}'s `;
-				switch (slave.relationship) {
-					case 1:
-						r += `<span class="lightgreen">friend.</span> `;
-						break;
-					case 2:
-						r += `<span class="lightgreen">best friend.</span> `;
-						break;
-					case 3:
-						r += `<span class="lightgreen">FWB.</span> `;
-						break;
-					case 4:
-						r += `<span class="lightgreen">lover.</span> `;
-						break;
-					case 5:
-						r += `<span class="lightgreen">slave wife.</span> `;
-						break;
-				}
+				r += `<span class="lightgreen">${friendship}.</span> `;
 			}
 		} else if (slave.relationship === -3 && slave.mother !== -1 && slave.father !== -1) {
 			r += `<span class="lightgreen">Your wife.</span> `;
@@ -4117,48 +3962,13 @@ window.SlaveSummaryUncached = (function(){
 				return s.ID === slave.relationshipTarget;
 			});
 			if (_ssj !== -1) {
-				switch (slave.relationship) {
-					case 1:
-						if (slave.relationshipTarget !== slave.relationTarget) {
-							r += `${SlaveFullName(V.slaves[_ssj])}'s `;
-						} else {
-							r += ` and `;
-						}
-						r += `<span class="lightgreen">friend.</span> `;
-						break;
-					case 2:
-						if (slave.relationshipTarget !== slave.relationTarget) {
-							r += `${SlaveFullName(V.slaves[_ssj])}'s `;
-						} else {
-							r += ` and `;
-						}
-						r += `<span class="lightgreen">best friend.</span> `;
-						break;
-					case 3:
-						if (slave.relationshipTarget !== slave.relationTarget) {
-							r += `${SlaveFullName(V.slaves[_ssj])}'s `;
-						} else {
-							r += ` and `;
-						}
-						r += `<span class="lightgreen">FWB.</span> `;
-						break;
-					case 4:
-						if (slave.relationshipTarget !== slave.relationTarget) {
-							r += `${SlaveFullName(V.slaves[_ssj])}'s `;
-						} else {
-							r += ` and `;
-						}
-						r += `<span class="lightgreen">lover.</span> `;
-						break;
-					case 5:
-						if (slave.relationshipTarget !== slave.relationTarget) {
-							r += `${SlaveFullName(V.slaves[_ssj])}'s`;
-						} else {
-							r += ` and `;
-						}
-						r += `<span class="lightgreen">slave wife.</span> `;
-						break;
+				var friendship = relationshipTerm(slave)
+				if (slave.relationshipTarget !== slave.relationTarget) {
+					r += `${SlaveFullName(V.slaves[_ssj])}'s `;
+				} else {
+					r += ` and `;
 				}
+				r += `<span class="lightgreen">${friendship}.</span> `;
 			}
 		} else if (slave.relationship === -3) {
 			r += `<span class="lightgreen">Your wife.</span> `;
diff --git a/src/uncategorized/brothelReport.tw b/src/uncategorized/brothelReport.tw
index d7dc5a1df3d2b4aef338259b45c3a7a36df83535..82be24245e03e47265f98b686dc19c0cbaa5e9d2 100644
--- a/src/uncategorized/brothelReport.tw
+++ b/src/uncategorized/brothelReport.tw
@@ -97,7 +97,7 @@
 	<<for _dI = 0; _dI < _DL; _dI++>>
 		<<set $i = $slaveIndices[$BrothiIDs[_dI]]>>
 		<<if $Madam.rivalryTarget == $slaves[$i].ID>>
-			She forces her <<if $Madam.rivalry == 1>>growing rival<<elseif $Madam.rivalry == 2>>rival<<elseif $Madam.rivalry == 3>>bitter rival<</if>>, to service all the men in the brothel.
+			She forces her <<print rivalryTerm($Madam)>>, to service all the men in the brothel.
 			<<set $slaves[$i].devotion -= 2, $slaves[$i].trust -= 2>>
 			<<if canDoVaginal($slaves[$i])>>
 				<<set $slaves[$i].vaginalCount += 10, $vaginalTotal += 10>>
@@ -113,28 +113,11 @@
 				<<set $slaves[_FLs].rivalry++, $Madam.rivalry++, $slaves[$i].rivalry++>>
 			<</if>>
 		<<elseif $Madam.relationshipTarget == $slaves[$i].ID>>
-			She dotes over her <<if $Madam.relationship == 1>>friend<<elseif $Madam.relationship == 2>>best friend<<elseif $Madam.relationship == 3>>friend with benefits<<elseif $Madam.relationship == 4>>lover<<elseif $Madam.relationship == 5>>slave wife<</if>>, $slaves[$i].slaveName, making sure she is safe, but unfortunately driving potential customers away from her.
+			She dotes over her <<print relationshipTerm($Madam)>>, $slaves[$i].slaveName, making sure she is safe, but unfortunately driving potential customers away from her.
 			<<set $slaves[$i].devotion++, $madamCashBonus -= 0.05>>
 		<<elseif $familyTesting == 1 && totalRelatives($slaves[$i]) > 0>>
-			<<if $slaves[$i].mother == $Madam.ID || $slaves[$i].father == $Madam.ID>>
-				She pays special attention to her daughter, $slaves[$i].slaveName, making sure she is treated well and showing off her skills.
-				<<set $slaves[$i].trust++, $madamCashBonus += 0.05>>
-			<<elseif $slaves[$i].ID == $Madam.mother>>
-				She pays special attention to her mother, $slaves[$i].slaveName, making sure she is treated well and showing off her skills.
-				<<set $slaves[$i].trust++, $madamCashBonus += 0.05>>
-			<<elseif $slaves[$i].ID == $Madam.father>>
-				She pays special attention to her father, $slaves[$i].slaveName, making sure she is treated well and showing off her skills.
-				<<set $slaves[$i].trust++, $madamCashBonus += 0.05>>
-			<<elseif areSisters($slaves[$i], $Madam) == 1>>
-				She pays special attention to her twin sister, $slaves[$i].slaveName, making sure she is treated well and showing off her skills.
-				<<set $slaves[$i].trust++, $madamCashBonus += 0.05>>
-			<<elseif areSisters($slaves[$i], $Madam) == 2>>
-				She pays special attention to her sister, $slaves[$i].slaveName, making sure she is treated well and showing off her skills.
-				<<set $slaves[$i].trust++, $madamCashBonus += 0.05>>
-			<<elseif areSisters($slaves[$i], $Madam) == 3>>
-				She pays special attention to her half-sister, $slaves[$i].slaveName, making sure she is treated well and showing off her skills.
-				<<set $slaves[$i].trust++, $madamCashBonus += 0.05>>
-			<</if>>
+			She pays special attention to her <<print relativeTerm($Madam.ID,$slaves[$i].ID)>>, $slaves[$i].slaveName, making sure she is treated well and showing off her skills.
+			<<set $slaves[$i].trust++, $madamCashBonus += 0.05>>
 		<<elseif $Madam.relationTarget == $slaves[$i].ID && $familyTesting == 0>>
 			She pays special attention to her $slaves[$i].relation, $slaves[$i].slaveName, making sure she is treated well and showing off her skills.
 			<<set $slaves[$i].trust++, $madamCashBonus += 0.05>>
diff --git a/src/uncategorized/cellblockReport.tw b/src/uncategorized/cellblockReport.tw
index 45f29855436762a558998f13cc2b6beb438221a6..4f6d70d2f2488450010d4cd9b594f87aa5819b5f 100644
--- a/src/uncategorized/cellblockReport.tw
+++ b/src/uncategorized/cellblockReport.tw
@@ -89,41 +89,21 @@
 	<<for _dI = 0; _dI < _DL; _dI++>>
 		<<set $i = $slaveIndices[$CellBiIDs[_dI]]>>
 		<<if $Wardeness.rivalryTarget == $slaves[$i].ID>>
-			She greatly enjoys breaking her <<if $Wardeness.rivalry == 1>>growing rival<<elseif $Wardeness.rivalry == 2>>rival<<elseif $Wardeness.rivalry == 3>>bitter rival<</if>>, $slaves[$i].slaveName's will.
+			She greatly enjoys breaking her <<print rivalryTerm($Wardeness)>>, $slaves[$i].slaveName's will.
 			<<set $slaves[$i].devotion++, $slaves[$i].trust -= 3>>
 			<<if random(1,100) > 30>>
 				<<set $Wardeness.rivalry++, $slaves[_FLs].rivalry++, $slaves[$i].rivalry++>>
 			<</if>>
 		<<elseif $Wardeness.relationshipTarget == $slaves[$i].ID>>
-			She hates having to break her <<if $Wardeness.relationship == 1>>friend<<elseif $Wardeness.relationship == 2>>best friend<<elseif $Wardeness.relationship == 3>>friend with benefits<<elseif $Wardeness.relationship == 4>>lover<<elseif $Wardeness.relationship == 5>>slave wife<</if>>, $slaves[$i].slaveName, but her devotion to you wins out in the end.
+			She hates having to break her <<print relationshipTerm($Wardeness)>>, $slaves[$i].slaveName, but her devotion to you wins out in the end.
 			<<set $slaves[$i].devotion++, $slaves[$i].trust -= 3>>
 			<<if random(1,100) >= 50>>
 				Her 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 && totalRelatives($slaves[$i]) > 0>>
-			<<if $slaves[$i].mother == $Wardeness.ID || $slaves[$i].father == $Wardeness.ID>>
-				She shows her daughter $slaves[$i].slaveName no mercy, making sure she understands her place.
-				<<set $slaves[$i].devotion++, $slaves[$i].trust-->>
-			<<elseif $slaves[$i].ID == $Wardeness.mother>>
-				She shows her mother $slaves[$i].slaveName no mercy, making sure she understands her place.
-				<<set $slaves[$i].devotion++, $slaves[$i].trust-->>
-			<<elseif $slaves[$i].ID == $Wardeness.father>>
-				She shows her father $slaves[$i].slaveName no mercy, making sure she understands her place.
-				<<set $slaves[$i].devotion++, $slaves[$i].trust-->>
-			<<else>>
-				<<switch areSisters($slaves[$i], $Wardeness)>>
-				<<case 1>>
-					She shows her twin sister $slaves[$i].slaveName no mercy, making sure she understands her place.
-					<<set $slaves[$i].devotion++, $slaves[$i].trust-->>
-				<<case 2>>
-					She shows her sister $slaves[$i].slaveName no mercy, making sure she understands her place.
-					<<set $slaves[$i].devotion++, $slaves[$i].trust-->>
-				<<case 3>>
-					She shows her half-sister $slaves[$i].slaveName no mercy, making sure she understands her place.
-					<<set $slaves[$i].devotion++, $slaves[$i].trust-->>
-				<</switch>>
-			<</if>>
+			She shows her <<print relativeTerm($Wardeness.ID,$slaves[$i].ID)>> $slaves[$i].slaveName no mercy, making sure she understands her place.
+			<<set $slaves[$i].devotion++, $slaves[$i].trust-->>
 		<<elseif $Wardeness.relationTarget == $slaves[$i].ID && $familyTesting == 0>>
 			She shows her $slaves[$i].relation $slaves[$i].slaveName no mercy, making sure she understands her place.
 			<<set $slaves[$i].devotion++, $slaves[$i].trust-->>
diff --git a/src/uncategorized/clinicReport.tw b/src/uncategorized/clinicReport.tw
index 754f86b6470447f7f89d6460adef367acd6ccf48..da2cbdabf15746a46b722c7539050c2c3d5d0692 100644
--- a/src/uncategorized/clinicReport.tw
+++ b/src/uncategorized/clinicReport.tw
@@ -80,37 +80,17 @@
 	<<for _dI = 0; _dI < _DL; _dI++>>
 		<<set $i = $slaveIndices[$CliniciIDs[_dI]]>>
 		<<if $Nurse.rivalryTarget == $slaves[$i].ID>>
-			She purposefully neglects the needs of her <<if $Nurse.rivalry == 1>>growing rival<<elseif $Nurse.rivalry == 2>>rival<<elseif $Nurse.rivalry == 3>>bitter rival<</if>>, $slaves[$i].slaveName, hindering her recovery and deepening their dislike for each other.
+			She purposefully neglects the needs of her <<print rivalryTerm($Nurse)>>, $slaves[$i].slaveName, hindering her recovery and deepening their dislike for each other.
 			<<set $slaves[$i].devotion--, $slaves[$i].trust--, $slaves[$i].health -= 3>>
 			<<if random(1,100) > 65>>
 				<<set $Nurse.rivalry++, $slaves[_FLs].rivalry++, $slaves[$i].rivalry++>>
 			<</if>>
 		<<elseif $Nurse.relationshipTarget == $slaves[$i].ID>>
-			She dedicates most of her attention to her <<if $Nurse.relationship == 1>>friend<<elseif $Nurse.relationship == 2>>best friend<<elseif $Nurse.relationship == 3>>friend with benefits<<elseif $Nurse.relationship == 4>>lover<<elseif $Nurse.relationship == 5>>slave wife<</if>>, $slaves[$i].slaveName, making sure she has everything she needs and more. This lavish attention detracts from her overall effectiveness.
+			She dedicates most of her attention to her <<print relationshipTerm($Nurse)>>, $slaves[$i].slaveName, making sure she has everything she needs and more. This lavish attention detracts from her overall effectiveness.
 			<<set _idleBonus -= 3, $slaves[$i].devotion++, $slaves[$i].trust++, $slaves[$i].health += 3>>
 		<<elseif $familyTesting == 1 && totalRelatives($slaves[$i]) > 0>>
-			<<if $slaves[$i].mother == $Nurse.ID || $slaves[$i].father == $Nurse.ID>>
-				She makes sure to spend extra time caring for her daughter, $slaves[$i].slaveName.
-				<<set $slaves[$i].trust++, $slaves[$i].health++>>
-			<<elseif $slaves[$i].ID == $Nurse.mother>>
-				She makes sure to spend extra time caring for her mother, $slaves[$i].slaveName.
-				<<set $slaves[$i].trust++, $slaves[$i].health++>>
-			<<elseif $slaves[$i].ID == $Nurse.father>>
-				She makes sure to spend extra time caring for her father, $slaves[$i].slaveName.
-				<<set $slaves[$i].trust++, $slaves[$i].health++>>
-			<<else>>
-				<<switch areSisters($slaves[$i], $Nurse)>>
-				<<case 1>>
-					She makes sure to spend extra time caring for her twin sister, $slaves[$i].slaveName.
-					<<set $slaves[$i].trust++, $slaves[$i].health++>>
-				<<case 2>>
-					She makes sure to spend extra time caring for her sister, $slaves[$i].slaveName.
-					<<set $slaves[$i].trust++, $slaves[$i].health++>>
-				<<case 3>>
-					She makes sure to spend extra time caring for her half-sister, $slaves[$i].slaveName.
-					<<set $slaves[$i].trust++, $slaves[$i].health++>>
-				<</switch>>
-			<</if>>
+			She makes sure to spend extra time caring for her <<print relativeTerm($Nurse.ID,$slaves[$i].ID)>>, $slaves[$i].slaveName.
+			<<set $slaves[$i].trust++, $slaves[$i].health++>>
 		<<elseif $Nurse.relationTarget == $slaves[$i].ID && $familyTesting == 0>>
 			She makes sure to spend extra time caring for her $slaves[$i].relation, $slaves[$i].slaveName.
 			<<set $slaves[$i].trust++, $slaves[$i].health++>>
diff --git a/src/uncategorized/dairyReport.tw b/src/uncategorized/dairyReport.tw
index bf3f5577a580dc0b4ac47d6339883112845c5be1..8d2fad7becc41e15ec38fe4da0dbdcebabaa970b 100644
--- a/src/uncategorized/dairyReport.tw
+++ b/src/uncategorized/dairyReport.tw
@@ -177,37 +177,17 @@
 	<<for _dI = 0; _dI < _DL; _dI++>>
 		<<set $i = $slaveIndices[$DairyiIDs[_dI]]>>
 		<<if $Milkmaid.rivalryTarget == $slaves[$i].ID>>
-			She either neglects or harasses her <<if $Milkmaid.rivalry == 1>>growing rival<<elseif $Milkmaid.rivalry == 2>>rival<<elseif $Milkmaid.rivalry == 3>>bitter rival<</if>>, $slaves[$i].slaveName, making sure she is unhappy and uncomfortable.
+			She either neglects or harasses her <<print rivalryTerm($Milkmaid)>>, $slaves[$i].slaveName, making sure she is unhappy and uncomfortable.
 			<<set $slaves[$i].devotion -= 3, $slaves[$i].trust -= 3>>
 			<<if random(1,100) > 65>>
 				<<set $Milkmaid.rivalry++, $slaves[_FLs].rivalry++, $slaves[$i].rivalry++>>
 			<</if>>
 		<<elseif $Milkmaid.relationshipTarget == $slaves[$i].ID>>
-			She dotes over her <<if $Milkmaid.relationship == 1>>friend<<elseif $Milkmaid.relationship == 2>>best friend<<elseif $Milkmaid.relationship == 3>>friend with benefits<<elseif $Milkmaid.relationship == 4>>lover<<elseif $Milkmaid.relationship == 5>>slave wife<</if>>, $slaves[$i].slaveName, making sure she is happy and comfortable.
+			She dotes over her <<print relationshipTerm($Milkmaid)>>, $slaves[$i].slaveName, making sure she is happy and comfortable.
 			<<set $slaves[$i].devotion++, $slaves[$i].trust++>>
 		<<elseif $familyTesting == 1 && totalRelatives($slaves[$i]) > 0>>
-			<<if $slaves[$i].mother == $Milkmaid.ID || $slaves[$i].father == $Milkmaid.ID>>
-				She pays special attention to her daughter, $slaves[$i].slaveName, making sure she is well kept and happy.
-				<<set $slaves[$i].trust++>>
-			<<elseif $slaves[$i].ID == $Milkmaid.mother>>
-				She pays special attention to her mother, $slaves[$i].slaveName, making sure she is well kept and happy.
-				<<set $slaves[$i].trust++>>
-			<<elseif $slaves[$i].ID == $Milkmaid.father>>
-				She pays special attention to her father, $slaves[$i].slaveName, making sure she is well kept and happy.
-				<<set $slaves[$i].trust++>>
-			<<else>>
-				<<switch areSisters($slaves[$i], $Milkmaid)>>
-				<<case 1>>
-					She pays special attention to her twin sister, $slaves[$i].slaveName, making sure she is well kept and happy.
-					<<set $slaves[$i].trust++>>
-				<<case 2>>
-					She pays special attention to her sister, $slaves[$i].slaveName, making sure she is well kept and happy.
-					<<set $slaves[$i].trust++>>
-				<<case 3>>
-					She pays special attention to her half-sister, $slaves[$i].slaveName, making sure she is well kept and happy.
-					<<set $slaves[$i].trust++>>
-				<</switch>>
-			<</if>>
+			She pays special attention to her <<print relativeTerm($Milkmaid.ID,$slaves[$i].ID)>>, $slaves[$i].slaveName, making sure she is well kept and happy.
+			<<set $slaves[$i].trust++>>
 		<<elseif $Milkmaid.relationTarget == $slaves[$i].ID && $familyTesting == 0>>
 			She pays special attention to her $slaves[$i].relation, $slaves[$i].slaveName, making sure she is well kept and happy.
 			<<set $slaves[$i].trust++>>
diff --git a/src/uncategorized/saServeThePublic.tw b/src/uncategorized/saServeThePublic.tw
index 03ad25b2cb359cf5e39c5c9a7294dd539b72196a..d0c578909b04a06219f3b600e1985797033d8f3a 100644
--- a/src/uncategorized/saServeThePublic.tw
+++ b/src/uncategorized/saServeThePublic.tw
@@ -527,19 +527,7 @@ $His appearance attracted $beauty members of the public (<<print Math.trunc($bea
 <<if $slaves[$i].relationship > 0>>
 	<<set $j = $slaveIndices[$slaves[$i].relationshipTarget]>>
 	<<if def $j && $slaves[$j].assignment == $slaves[$i].assignment>>
-		$His
-		<<if $slaves[$j].relationship <= 1>>
-			friend
-		<<elseif $slaves[$j].relationship <= 2>>
-			best friend
-		<<elseif $slaves[$j].relationship <= 3>>
-			friend with benefits
-		<<elseif $slaves[$j].relationship <= 4>>
-			lover
-		<<elseif $slaves[$j].relationship > 4>>
-			slave wife
-		<</if>>
-		$slaves[$j].slaveName is also serving the public and they work well together.
+		$His <<print relationshipTerm($slaves[$i])>> $slaves[$j].slaveName is also serving the public and they work well together.
 	<</if>>
 <<elseif $slaves[$i].relationship == -1>>
 	$He relies on citizens' desire to fuck $him for emotional support, making $him an excellent, if occasionally disturbing, slut.
diff --git a/src/uncategorized/saWhore.tw b/src/uncategorized/saWhore.tw
index 7ac000d53db8c34b47cc226c17e7c295ac09ae7a..60d94b19e1a42b6c9bfdbcb463e6853a4e57f949 100644
--- a/src/uncategorized/saWhore.tw
+++ b/src/uncategorized/saWhore.tw
@@ -544,19 +544,7 @@ $His appearance attracted $beauty customers (<<print Math.trunc($beauty/7)>> a d
 <<if $slaves[$i].relationship > 0>>
 	<<set $j = $slaveIndices[$slaves[$i].relationshipTarget]>>
 	<<if def $j && $slaves[$j].assignment == $slaves[$i].assignment>>
-		$His
-		<<if $slaves[$j].relationship <= 1>>
-			friend
-		<<elseif $slaves[$j].relationship <= 2>>
-			best friend
-		<<elseif $slaves[$j].relationship <= 3>>
-			friend with benefits
-		<<elseif $slaves[$j].relationship <= 4>>
-			lover
-		<<elseif $slaves[$j].relationship > 4>>
-			slave wife
-		<</if>>
-		$slaves[$j].slaveName is also whoring, so $he earns a bit more.
+		$His <<print relationshipTerm($slaves[$i])>> $slaves[$j].slaveName is also whoring, so $he earns a bit more.
 	<</if>>
 <<elseif $slaves[$i].relationship == -1>>
 	$He relies on customers' desire to fuck $him for emotional support, making $him an excellent, if occasionally disturbing, whore.
diff --git a/src/uncategorized/schoolroomReport.tw b/src/uncategorized/schoolroomReport.tw
index 2df38e4a63aeba507b2f27bd33bbd7937aa173de..74ea250706aa26c1b9f783edda52aad47324faac 100644
--- a/src/uncategorized/schoolroomReport.tw
+++ b/src/uncategorized/schoolroomReport.tw
@@ -77,37 +77,17 @@
 	<<for _dI = 0; _dI < _DL; _dI++>>
 		<<set $i = $slaveIndices[$SchlRiIDs[_dI]]>>
 		<<if $Schoolteacher.rivalryTarget == $slaves[$i].ID>>
-			Ever since her <<if $Schoolteacher.rivalry == 1>>growing rival<<elseif $Schoolteacher.rivalry == 2>>rival<<elseif $Schoolteacher.rivalry == 3>>bitter rival<</if>>, was enrolled, she began stalking the classroom carrying a large paddle, much to $slaves[$i].slaveName's terror.
+			Ever since her <<print rivalryTerm($Schoolteacher)>>, was enrolled, she began stalking the classroom carrying a large paddle, much to $slaves[$i].slaveName's terror.
 			<<set $slaves[$i].devotion -= 4, $slaves[$i].trust -= 4>>
 			<<if random(1,100) > 35>>
 				<<set $Schoolteacher.rivalry++, $slaves[_FLs].rivalry++, $slaves[$i].rivalry++>>
 			<</if>>
 		<<elseif $Schoolteacher.relationshipTarget == $slaves[$i].ID>>
-			She dedicates most of her attention to her <<if $Schoolteacher.relationship == 1>>friend<<elseif $Schoolteacher.relationship == 2>>best friend<<elseif $Schoolteacher.relationship == 3>>friend with benefits<<elseif $Schoolteacher.relationship == 4>>lover<<elseif $Schoolteacher.relationship == 5>>slave wife<</if>>, $slaves[$i].slaveName, making sure she understands that day's lesson.
+			She dedicates most of her attention to her <<print relationshipTerm($Schoolteacher)>>, $slaves[$i].slaveName, making sure she understands that day's lesson.
 			<<set $slaves[$i].devotion += 2, $slaves[$i].trust += 2>>
 		<<elseif $familyTesting == 1 && totalRelatives($slaves[$i]) > 0>>
-			<<if $slaves[$i].mother == $Schoolteacher.ID || $slaves[$i].father == $Schoolteacher.ID>>
-				She makes sure to spend extra time teaching her daughter, $slaves[$i].slaveName.
-				<<set $slaves[$i].trust++>>
-			<<elseif $slaves[$i].ID == $Schoolteacher.mother>>
-				She makes sure to spend extra time teaching her mother, $slaves[$i].slaveName.
-				<<set $slaves[$i].trust++>>
-			<<elseif $slaves[$i].ID == $Schoolteacher.father>>
-				She makes sure to spend extra time teaching her father, $slaves[$i].slaveName.
-				<<set $slaves[$i].trust++>>
-			<<else>>
-				<<switch areSisters($slaves[$i], $Schoolteacher)>>
-				<<case 1>>
-					She makes sure to spend extra time teaching her twin sister, $slaves[$i].slaveName.
-					<<set $slaves[$i].trust++>>
-				<<case 2>>
-					She makes sure to spend extra time teaching her sister, $slaves[$i].slaveName.
-					<<set $slaves[$i].trust++>>
-				<<case 3>>
-					She makes sure to spend extra time teaching her half-sister, $slaves[$i].slaveName.
-					<<set $slaves[$i].trust++>>
-				<</switch>>
-			<</if>>
+			She makes sure to spend extra time teaching her <<print relativeTerm($Schoolteacher.ID,$slaves[$i].ID)>>, $slaves[$i].slaveName.
+			<<set $slaves[$i].trust++>>
 		<<elseif $Schoolteacher.relationTarget == $slaves[$i].ID && $familyTesting == 0>>
 			She makes sure to spend extra time teaching her $slaves[$i].relation, $slaves[$i].slaveName.
 			<<set $slaves[$i].trust++>>
diff --git a/src/uncategorized/seWedding.tw b/src/uncategorized/seWedding.tw
index 866bf66c0510680bd3edb4037d00f83a5aff62fa..84fe89ee8127aece8700093b420e239c9d2e63fd 100644
--- a/src/uncategorized/seWedding.tw
+++ b/src/uncategorized/seWedding.tw
@@ -291,15 +291,15 @@
 	<<else>>
 		light pink, since she's an experienced sex slave.
 	<</if>>
-	A filmy veil covers her head and shoulders.
+	A filmy veil covers her head and shoulders. Her lacy bridal bra
 	<<if ($activeSlave.boobs > 4000)>>
-		Her lacy bridal bra is a marvel of engineering, discreetly reinforced to support her gigantic udders.
+		is a marvel of engineering, discreetly reinforced to support her gigantic udders.
 	<<elseif ($activeSlave.boobs > 1200)>>
-		Her lacy bridal bra just barely restrains her huge boobs, leaving the tops of her areolae visible.
+		just barely restrains her huge boobs, leaving the tops of her areolae visible.
 	<<elseif ($activeSlave.boobs > 400)>>
-		Her lacy bridal bra flatters her pretty breasts.
+		flatters her pretty breasts.
 	<<else>>
-		Her lacy bridal bra flatters her pretty chest.
+		flatters her pretty chest.
 	<</if>>
 	<<if $activeSlave.bellyPreg >= 600000>>
 		Her expansive, squirming pregnant belly makes her bridal wear particularly obscene.
@@ -382,17 +382,17 @@
 		<<link "Give her your surname too">>
 			<<replace "#surnaming">>
 				<<set $activeSlave.slaveSurname = $PC.surname>>
-				You also proclaim your new slave wife $activeSlave.slaveName $activeSlave.slaveSurname.
+				You also proclaim your new slave wife $activeSlave.slaveName $activeSlave.slaveSurname. The new Mrs. $activeSlave.slaveSurname hears this, of course, and 
 				<<if $activeSlave.fetish == "mindbroken">>
-					The new Mrs. $activeSlave.slaveSurname hears this, of course, and shows no reaction. Like many things, names mean nothing to her now. Your guests, on the other hand, appreciate the gift.
+					shows no reaction. Like many things, names mean nothing to her now. Your guests, on the other hand, appreciate the gift.
 				<<elseif $activeSlave.devotion+$activeSlave.trust >= 175>>
-					The new Mrs. $activeSlave.slaveSurname hears this, of course, and breaks down again. Not only is she to be blessed with your child, but she's to take your surname as well.
+					breaks down again. Not only is she to be blessed with your child, but she's to take your surname as well.
 				<<elseif $activeSlave.devotion < -20 && $activeSlave.trust > 20>>
-					The new Mrs. $activeSlave.slaveSurname hears this, of course, and scoffs audibly. Just another burden for her to carry; like the child soon to be growing in her womb.
+					scoffs audibly. Just another burden for her to carry; like the child soon to be growing in her womb.
 				<<elseif $activeSlave.devotion < -20>>
-					The new Mrs. $activeSlave.slaveSurname hears this, of course, and breaks down again. Not only are you binding her to you with your child, but with your name as well.
+					Tbreaks down again. Not only are you binding her to you with your child, but with your name as well.
 				<<else>>
-					The new Mrs. $activeSlave.slaveSurname hears this, of course, and nods acceptingly. Your will is her will, after all.
+					nods acceptingly. Your will is her will, after all.
 				<</if>>
 			<</replace>>
 		<</link>>
@@ -554,17 +554,17 @@
 		<<link "Give her your surname as well">>
 			<<replace "#surnaming">>
 				<<set $activeSlave.slaveSurname = $PC.surname>>
-				You also proclaim your new slave wife $activeSlave.slaveName $activeSlave.slaveSurname.
+				You also proclaim your new slave wife $activeSlave.slaveName $activeSlave.slaveSurname. The new Mrs. $activeSlave.slaveSurname hears this, of course, and 
 				<<if $activeSlave.fetish == "mindbroken">>
-					The new Mrs. $activeSlave.slaveSurname hears this, of course, and shows no reaction. Like many things, names mean nothing to her now.
+					shows no reaction. Like many things, names mean nothing to her now.
 				<<elseif $activeSlave.devotion+$activeSlave.trust >= 175>>
-					The new Mrs. $activeSlave.slaveSurname hears this, of course, and breaks down again.
+					breaks down again.
 				<<elseif $activeSlave.devotion < -20 && $activeSlave.trust > 20>>
-					The new Mrs. $activeSlave.slaveSurname hears this, of course, and scoffs audibly.
+					scoffs audibly.
 				<<elseif $activeSlave.devotion < -20>>
-					The new Mrs. $activeSlave.slaveSurname hears this, of course, and breaks down again.
+					breaks down again.
 				<<else>>
-					The new Mrs. $activeSlave.slaveSurname hears this, of course, and nods acceptingly.
+					nods acceptingly.
 				<</if>>
 			<</replace>>
 		<</link>>
@@ -678,15 +678,15 @@
 	<<else>>
 		light pink, since she's an experienced sex slave.
 	<</if>>
-	A filmy veil covers her head and shoulders.
+	A filmy veil covers her head and shoulders. Her lacy bridal bra 
 	<<if ($activeSlave.boobs > 4000)>>
-		Her lacy bridal bra is a marvel of engineering, discreetly reinforced to support her gigantic udders.
+		is a marvel of engineering, discreetly reinforced to support her gigantic udders.
 	<<elseif ($activeSlave.boobs > 1200)>>
-		Her lacy bridal bra just barely restrains her huge boobs, leaving the tops of her areolae visible.
+		just barely restrains her huge boobs, leaving the tops of her areolae visible.
 	<<elseif ($activeSlave.boobs > 400)>>
-		Her lacy bridal bra flatters her pretty breasts.
+		flatters her pretty breasts.
 	<<else>>
-		Her lacy bridal bra flatters her pretty chest.
+		flatters her pretty chest.
 	<</if>>
 	<<if $activeSlave.bellyPreg >= 600000>>
 		Her expansive, squirming pregnant belly makes her bridal wear particularly obscene.
@@ -746,33 +746,33 @@
 		<<link "Give her your surname">>
 			<<replace "#surnaming">>
 				<<set $activeSlave.slaveSurname = $PC.surname>>
-				You also proclaim your new slave wife $activeSlave.slaveName $activeSlave.slaveSurname.
+				You also proclaim your new slave wife $activeSlave.slaveName $activeSlave.slaveSurname. The new Mrs. $activeSlave.slaveSurname hears this, of course, and 
 				<<if $activeSlave.fetish == "mindbroken">>
-					The new Mrs. $activeSlave.slaveSurname hears this, of course, and shows no reaction. Like many things, names mean nothing to her now. Your guests, on the other hand, appreciate the gift.
+					shows no reaction. Like many things, names mean nothing to her now. Your guests, on the other hand, appreciate the gift.
 				<<elseif $activeSlave.devotion+$activeSlave.trust >= 175>>
-					The new Mrs. $activeSlave.slaveSurname hears this, of course, and breaks down again; it's like a dream come true.
+					breaks down again; it's like a dream come true.
 				<<elseif $activeSlave.devotion < -20 && $activeSlave.trust > 20>>
-					The new Mrs. $activeSlave.slaveSurname hears this, of course, and scoffs audibly; just another burden for her to carry.
+					scoffs audibly; just another burden for her to carry.
 				<<elseif $activeSlave.devotion < -20>>
-					The new Mrs. $activeSlave.slaveSurname hears this, of course, and breaks down again; this is nothing more than another unwanted link to you.
+					breaks down again; this is nothing more than another unwanted link to you.
 				<<else>>
-					The new Mrs. $activeSlave.slaveSurname hears this, of course, and nods acceptingly. Your will is her will, after all.
+					nods acceptingly. Your will is her will, after all.
 				<</if>>
 			<</replace>>
 		<</link>>
 		</span>
 	<</if>>
-	<br><br>
+	<br><br> Then, you flip her veil over her head so she can <<if $PC.dick == 1>>suck your dick<<if $PC.vagina == 1>> and <</if>><</if>><<if $PC.vagina == 1>>eat you out<</if>> in front of your guests, as the ceremony requires. She approaches her task
 	<<if $activeSlave.fetish == "mindbroken">>
-		Then, you flip her veil over her head so she can <<if $PC.dick == 1>>suck your dick<<if $PC.vagina == 1>> and <</if>><</if>><<if $PC.vagina == 1>>eat you out<</if>> in front of your guests, as the ceremony requires. She approaches her task with robotic obedience. You climax promptly, <<if $PC.dick == 1>>shooting your cum down her throat<<else>>covering her face in girlcum<</if>>. Your guests and their attendant slaves applaud at the consummation, or rather, the first stage of the consummation. The balance will take place privately, however, and you scoop up your new slave wife to carry her back into the master bedroom. She absentmindedly rests her head against your <<if $PC.boobs == 1>>breasts<<elseif $PC.title == 0>>flat chest<<else>>strong chest<</if>> as you cradle her in your arms, gazing up at you with empty eyes.
+		with robotic obedience. You climax promptly, <<if $PC.dick == 1>>shooting your cum down her throat<<else>>covering her face in girlcum<</if>>. Your guests and their attendant slaves applaud at the consummation, or rather, the first stage of the consummation. The balance will take place privately, however, and you scoop up your new slave wife to carry her back into the master bedroom. She absentmindedly rests her head against your <<if $PC.boobs == 1>>breasts<<elseif $PC.title == 0>>flat chest<<else>>strong chest<</if>> as you cradle her in your arms, gazing up at you with empty eyes.
 	<<elseif $activeSlave.devotion+$activeSlave.trust >= 175>>
-		Then, you flip her veil over her head so she can <<if $PC.dick == 1>>suck your dick<<if $PC.vagina == 1>> and <</if>><</if>><<if $PC.vagina == 1>>eat you out<</if>> in front of your guests, as the ceremony requires. She approaches her task <<if ($activeSlave.fetish == "cumslut")>>enthusiastically<<else>>with a will<</if>>, and you climax promptly, <<if $PC.dick == 1>>shooting your cum down her throat<<else>>covering her face in girlcum<</if>>. Your guests and their attendant slaves @@.green;applaud at the consummation,@@ or rather, at the first stage of the consummation. The balance will take place privately, however, and you scoop up your new slave wife to carry her back into the master bedroom. She rests her head against your <<if $PC.boobs == 1>>breasts<<elseif $PC.title == 0>>flat chest<<else>>strong chest<</if>> as you cradle her in your arms, staring up at you.
+		<<if ($activeSlave.fetish == "cumslut")>>enthusiastically<<else>>with a will<</if>>, and you climax promptly, <<if $PC.dick == 1>>shooting your cum down her throat<<else>>covering her face in girlcum<</if>>. Your guests and their attendant slaves @@.green;applaud at the consummation,@@ or rather, at the first stage of the consummation. The balance will take place privately, however, and you scoop up your new slave wife to carry her back into the master bedroom. She rests her head against your <<if $PC.boobs == 1>>breasts<<elseif $PC.title == 0>>flat chest<<else>>strong chest<</if>> as you cradle her in your arms, staring up at you.
 	<<elseif $activeSlave.devotion < -20 && $activeSlave.trust > 20>>
-		Then, you flip her veil over her head so she can <<if $PC.dick == 1>>suck your dick<<if $PC.vagina == 1>> and <</if>><</if>><<if $PC.vagina == 1>>eat you out<</if>> in front of your guests, as the ceremony requires. She approaches her task with apprehension, so much so that things are taking too long, so you grab her head and facefuck her instead. She gags and sputters, tears running down her cheeks, as you violate her mouth publicly. You climax promptly, <<if $PC.dick == 1>>shooting your cum down her throat<<else>>covering her face in girlcum<</if>>. Your guests and their attendant slaves applaud at the consummation, or rather, the first stage of the consummation. The balance will take place privately, however, and you scoop up your new slave wife to carry her back into the master bedroom. She looks up at you with fearful, hate-filled eyes, blaming you for everything that has happened so far.
+		with apprehension, so much so that things are taking too long, so you grab her head and facefuck her instead. She gags and sputters, tears running down her cheeks, as you violate her mouth publicly. You climax promptly, <<if $PC.dick == 1>>shooting your cum down her throat<<else>>covering her face in girlcum<</if>>. Your guests and their attendant slaves applaud at the consummation, or rather, the first stage of the consummation. The balance will take place privately, however, and you scoop up your new slave wife to carry her back into the master bedroom. She looks up at you with fearful, hate-filled eyes, blaming you for everything that has happened so far.
 	<<elseif $activeSlave.devotion < -20>>
-		Then, you flip her veil over her head so she can <<if $PC.dick == 1>>suck your dick<<if $PC.vagina == 1>> and <</if>><</if>><<if $PC.vagina == 1>>eat you out<</if>> in front of your guests, as the ceremony requires. She approaches her task with apprehension, so much so that things are taking too long, so you grab her head and facefuck her instead. She gags and sputters, tears running down her cheeks, as you violate her mouth publicly. You climax promptly, <<if $PC.dick == 1>>shooting your cum down her throat<<else>>covering her face in girlcum<</if>>. Your guests and their attendant slaves applaud at the consummation, or rather, the first stage of the consummation. The balance will take place privately, however, and you scoop up your new slave wife to carry her back into the master bedroom. She looks up at you with fearful, tear-filled eyes as if pleading for you not to do this. 
+		with apprehension, so much so that things are taking too long, so you grab her head and facefuck her instead. She gags and sputters, tears running down her cheeks, as you violate her mouth publicly. You climax promptly, <<if $PC.dick == 1>>shooting your cum down her throat<<else>>covering her face in girlcum<</if>>. Your guests and their attendant slaves applaud at the consummation, or rather, the first stage of the consummation. The balance will take place privately, however, and you scoop up your new slave wife to carry her back into the master bedroom. She looks up at you with fearful, tear-filled eyes as if pleading for you not to do this. 
 	<<else>>
-		Then, you flip her veil over her head so she can <<if $PC.dick == 1>>suck your dick<<if $PC.vagina == 1>> and <</if>><</if>><<if $PC.vagina == 1>>eat you out<</if>> in front of your guests, as the ceremony requires. She approaches her task with a will. She approaches her task <<if ($activeSlave.fetish == "cumslut")>>enthusiastically<<else>>obediently<</if>>, and you climax promptly, <<if $PC.dick == 1>>shooting your cum down her throat<<else>>covering her face in girlcum<</if>>. Your guests and their attendant slaves applaud at the consummation, or rather, the first stage of the consummation. The balance will take place privately, however, and you scoop up your new slave wife to carry her back into the master bedroom. She looks up at you, her eyes unsure. 
+		with a will. She approaches her task <<if ($activeSlave.fetish == "cumslut")>>enthusiastically<<else>>obediently<</if>>, and you climax promptly, <<if $PC.dick == 1>>shooting your cum down her throat<<else>>covering her face in girlcum<</if>>. Your guests and their attendant slaves applaud at the consummation, or rather, the first stage of the consummation. The balance will take place privately, however, and you scoop up your new slave wife to carry her back into the master bedroom. She looks up at you, her eyes unsure. 
 	<</if>>
 	<<if $activeSlave.relationship != 0>>
 		<<if $activeSlave.devotion+$activeSlave.trust >= 175>>
diff --git a/src/uncategorized/servantsQuartersReport.tw b/src/uncategorized/servantsQuartersReport.tw
index a22031f0ffe0c89e2b3254c8116de9e137c9ea41..e1de90ab3e088e536210467476cadab67c6af4ba 100644
--- a/src/uncategorized/servantsQuartersReport.tw
+++ b/src/uncategorized/servantsQuartersReport.tw
@@ -112,37 +112,17 @@
 	<<for _dI = 0; _dI < _DL; _dI++>>
 		<<set $i = $slaveIndices[$ServQiIDs[_dI]]>>
 		<<if $Stewardess.rivalryTarget == $slaves[$i].ID>>
-			She bears down on her <<if $Stewardess.rivalry == 1>>growing rival<<elseif $Stewardess.rivalry == 2>>rival<<elseif $Stewardess.rivalry == 3>>bitter rival<</if>>, $slaves[$i].slaveName, forcing her to work extra hard or suffer punishment.
+			She bears down on her <<print rivalryTerm($Stewardess)>>, $slaves[$i].slaveName, forcing her to work extra hard or suffer punishment.
 			<<set $slaves[$i].devotion--, $slaves[$i].trust-->>
 			<<if random(1,100) > 65>>
 				<<set $Stewardess.rivalry++, $slaves[_FLs].rivalry++, $slaves[$i].rivalry++>>
 			<</if>>
 		<<elseif $Stewardess.relationshipTarget == $slaves[$i].ID>>
-			She dotes over her <<if $Stewardess.relationship == 1>>friend<<elseif $Stewardess.relationship == 2>>best friend<<elseif $Stewardess.relationship == 3>>friend with benefits<<elseif $Stewardess.relationship == 4>>lover<<elseif $Stewardess.relationship == 5>>slave wife<</if>>, $slaves[$i].slaveName, making sure she knows how to do a good job and keeping her well stocked with everything she needs.
+			She dotes over her <<print relationshipTerm($Stewardess)>>, $slaves[$i].slaveName, making sure she knows how to do a good job and keeping her well stocked with everything she needs.
 			<<set $slaves[$i].devotion++>>
 		<<elseif $familyTesting == 1 && totalRelatives($slaves[$i]) > 0>>
-			<<if $slaves[$i].mother == $Stewardess.ID || $slaves[$i].father == $Stewardess.ID>>
-				She pays special attention to her daughter, $slaves[$i].slaveName, making sure she doesn't slack off just because they are related.
-				<<set $slaves[$i].trust++>>
-			<<elseif $slaves[$i].ID == $Stewardess.mother>>
-				She pays special attention to her mother, $slaves[$i].slaveName, making sure she doesn't slack off just because they are related.
-				<<set $slaves[$i].trust++>>
-			<<elseif $slaves[$i].ID == $Stewardess.father>>
-				She pays special attention to her father, $slaves[$i].slaveName, making sure she doesn't slack off just because they are related.
-				<<set $slaves[$i].trust++>>
-			<<else>>
-				<<switch areSisters($slaves[$i], $Stewardess)>>
-				<<case 1>>
-					She pays special attention to her twin sister, $slaves[$i].slaveName, making sure she doesn't slack off just because they are related.
-					<<set $slaves[$i].trust++>>
-				<<case 2>>
-					She pays special attention to her sister, $slaves[$i].slaveName, making sure she doesn't slack off just because they are related.
-					<<set $slaves[$i].trust++>>
-				<<case 3>>
-					She pays special attention to her half-sister, $slaves[$i].slaveName, making sure she doesn't slack off just because they are related.
-					<<set $slaves[$i].trust++>>
-				<</switch>>
-			<</if>>
+			She pays special attention to her <<print relativeTerm($Stewardess.ID,$slaves[$i].ID)>>, $slaves[$i].slaveName, making sure she doesn't slack off just because they are related.
+			<<set $slaves[$i].trust++>>
 		<<elseif $Stewardess.relationTarget == $slaves[$i].ID && $familyTesting == 0>>
 			She pays special attention to her $slaves[$i].relation, $slaves[$i].slaveName, making sure she doesn't slack off just because they are related.
 			<<set $slaves[$i].trust++>>
diff --git a/src/uncategorized/slaveInteract.tw b/src/uncategorized/slaveInteract.tw
index 4292c4a1db24c264ed6cc6e200ded0758ba727bd..dcec7cd499af6bf3356edc89857f2378a30d5892 100644
--- a/src/uncategorized/slaveInteract.tw
+++ b/src/uncategorized/slaveInteract.tw
@@ -318,17 +318,7 @@
 	<<if ($activeSlave.relationship > 0)>>
 		<<set _si = $slaveIndices[$activeSlave.relationshipTarget]>>
 		<<if isSlaveAvailable($slaves[_si])>>
-			<<if ($activeSlave.relationship == 1)>>
-				| <<link `"Fuck $him with $his friend <<= SlaveFullName($slaves[_si])>>"`>><<replace "#miniscene">><<set $partner = "relationship">><<include "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-			<<elseif ($activeSlave.relationship == 2)>>
-				| <<link `"Fuck $him with $his best friend <<= SlaveFullName($slaves[_si])>>"`>><<replace "#miniscene">><<set $partner = "relationship">><<include "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-			<<elseif ($activeSlave.relationship == 3)>>
-				| <<link `"Fuck $him with $his FWB <<= SlaveFullName($slaves[_si])>>"`>><<replace "#miniscene">><<set $partner = "relationship">><<include "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-			<<elseif ($activeSlave.relationship == 4)>>
-				| <<link `"Fuck $him with $his lover <<= SlaveFullName($slaves[_si])>>"`>><<replace "#miniscene">><<set $partner = "relationship">><<include "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-			<<else>>
-				| <<link `"Fuck $him with $his slave wife <<= SlaveFullName($slaves[_si])>>"`>><<replace "#miniscene">><<set $partner = "relationship">><<include "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-			<</if>>
+			| <<link `"Fuck $him with $his <<print relationshipTermShort($activeSlave)>> <<= SlaveFullName($slaves[_si])>>"`>><<replace "#miniscene">><<set $partner = "relationship">><<include "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
 		<<else>>
 			<<if $slaves[_si].assignment == "be your agent">>
 				<<if $activeSlave.broodmother < 2>>
diff --git a/src/uncategorized/spaReport.tw b/src/uncategorized/spaReport.tw
index 0c4dae3efe4b32131af7073cd6679e9c952c5e2e..fc1051ec06fb4b64691fa0df769dfe80872ad867 100644
--- a/src/uncategorized/spaReport.tw
+++ b/src/uncategorized/spaReport.tw
@@ -103,37 +103,17 @@
 			<<set $slaves[$i].trust++>>
 		<</if>>
 		<<if $Attendant.rivalryTarget == $slaves[$i].ID>>
-			She constantly harasses her <<if $Attendant.rivalry == 1>>growing rival<<elseif $Attendant.rivalry == 2>>rival<<elseif $Attendant.rivalry == 3>>bitter rival<</if>>, $slaves[$i].slaveName, preventing her from getting comfortable and forcing her to keep her guard up.
+			She constantly harasses her <<print rivalryTerm($Stewardess)>>, $slaves[$i].slaveName, preventing her from getting comfortable and forcing her to keep her guard up.
 			<<set $slaves[$i].devotion -= 4, $slaves[$i].trust -= 4>>
 			<<if random(1,100) > 35>>
 				<<set $Attendant.rivalry++, $slaves[_FLs].rivalry++, $slaves[$i].rivalry++>>
 			<</if>>
 		<<elseif $Attendant.relationshipTarget == $slaves[$i].ID>>
-			She dedicates most of her attention to her <<if $Attendant.relationship == 1>>friend<<elseif $Attendant.relationship == 2>>best friend<<elseif $Attendant.relationship == 3>>friend with benefits<<elseif $Attendant.relationship == 4>>lover<<elseif $Attendant.relationship == 5>>slave wife<</if>>, $slaves[$i].slaveName, making her stress, both physical and mental, wash away.
+			She dedicates most of her attention to her <<print relationshipTerm($Attendant)>>, $slaves[$i].slaveName, making her stress, both physical and mental, wash away.
 			<<set $slaves[$i].devotion += 3, $slaves[$i].trust += 3>>
 		<<elseif $familyTesting == 1 && totalRelatives($slaves[$i]) > 0>>
-			<<if $slaves[$i].mother == $Attendant.ID || $slaves[$i].father == $Attendant.ID>>
-				She makes sure to spend extra time caring for her daughter, $slaves[$i].slaveName.
-				<<set $slaves[$i].trust++, $slaves[$i].health++>>
-			<<elseif $slaves[$i].ID == $Attendant.mother>>
-				She makes sure to spend extra time caring for her mother, $slaves[$i].slaveName.
-				<<set $slaves[$i].trust++, $slaves[$i].health++>>
-			<<elseif $slaves[$i].ID == $Attendant.father>>
-				She makes sure to spend extra time caring for her father, $slaves[$i].slaveName.
-				<<set $slaves[$i].trust++, $slaves[$i].health++>>
-			<<else>>
-				<<switch areSisters($slaves[$i], $Attendant)>>
-				<<case 1>>
-					She makes sure to spend extra time caring for her twin sister, $slaves[$i].slaveName.
-					<<set $slaves[$i].trust++, $slaves[$i].health++>>
-				<<case 2>>
-					She makes sure to spend extra time caring for her sister, $slaves[$i].slaveName.
-					<<set $slaves[$i].trust++, $slaves[$i].health++>>
-				<<case 3>>
-					She makes sure to spend extra time caring for her half-sister, $slaves[$i].slaveName.
-					<<set $slaves[$i].trust++, $slaves[$i].health++>>
-				<</switch>>
-			<</if>>
+			She makes sure to spend extra time caring for her <<print relativeTerm($Attendant.ID,$slaves[$i].ID)>>, $slaves[$i].slaveName.
+			<<set $slaves[$i].trust++, $slaves[$i].health++>>
 		<<elseif $Attendant.relationTarget == $slaves[$i].ID && $familyTesting == 0>>
 			She makes sure to spend extra time caring for her $slaves[$i].relation, $slaves[$i].slaveName.
 			<<set $slaves[$i].trust++>>