diff --git a/devNotes/VersionChangeLog-Premod+LoliMod.txt b/devNotes/VersionChangeLog-Premod+LoliMod.txt
index 30ba6fe3c6342e4378955f11668671045a86c139..ee693405b00dea0e01b5815d0105ec309b036aa2 100644
--- a/devNotes/VersionChangeLog-Premod+LoliMod.txt
+++ b/devNotes/VersionChangeLog-Premod+LoliMod.txt
@@ -1,9 +1,117 @@
 Pregmod 
 
-0.10.7.0/1
+0.10.7.1-0.1.x
+
+3/28/2018
+
+	13
+	-PC cheat edit improvements
+	-twincest options for new voluntarily enslaved twins during recruitment
+	-various typos fixed
+	-more bugs squashed, most notably virgins claiming to have given birth before
+
+3/27/2018
+
+	12
+	-fixed issues with eugenics and the rival conflict
+	-fixed various little bugs
+
+	11
+	-added many new git submitted nationalities
+	-fixed needless space between knock yourself up and its link
+	-revised saLiveWithHG's diet block to better stick to dietary targets
+
+3/26/2018
+
+	10
+	-added breeder's diet (boosts conception rates)
+
+3/26/2018
+
+	9
+	-git resync, mostly typos on this end
+	-fixes to issues in facilities on the git end
+
+3/25/2018
+
+	8
+	-fixes and tweaks, nothing major
+
+3/24/2018
+
+	7
+	-fixed a couple minor annoyances
+	-if any slave has a .reservedChildren value, the incubator global tracking resetter will be usable
+
+	6
+	-new voluntarily enslaved pairs can show their incestual love during recruitment
+	-minor tweaks to muscle building and steroids
+	-added fertility diet
+
+	5
+	-fixed improper usage of jsEither()
+
+3/23/2018
+
+	4
+	-fixes to setPregType()
+	-slimming diet can now be reassigned after muscles are completely gone to trim assets
+
+	3.1
+	-little fix to broodmother initiation in wombJS
+
+	3
+	-finished implementing setPregType(), now to find it outputs multiples too readily
+	-incubator now adjusts .hormoneBalance when the hormone settings are on
+	-various spelling corrections and a minor bugfix
+
+	2.1
+	-minor fixes
+	-fixed boomerang slave relation null pointer exception
+
+	2
+	-fixed boomerang slaves null pointer excetions regarding rivalries and relationships
+
+	1.1
+	-reverted change to traitor slave origin concatenation
+
+	1
+	-many spelling corrections
+	-fixes to decreasing custom nationality weighting
+	-fixes to bad versionID setting
+	-partial implementaion of setPregType()
+
+	0.1
+	-minor fix to generateXYslave
+
+	0
+	-fixes severe issues with customized slave trade
+	*Requires backwards compatibility - no exceptions
+
+	v1022 (0.10.7.1-0.1.0)
+
+0.10.7.0/1	
+
+3/22/2018
+
+	407
+	-spelling fixes
+	-decreased memory usage, apparently signifigantly
+	-added setPregType(), but not implemented it yet
+	*Severe issues with customized slave trade. If you are not using it, DO NOT USE THIS VERSION.
+
+	406
+	-minor fixes
+	-major fixes and overhauling to autosurgery and to the RA
+	-backwards compatibility should no longer unset all your rules
+	-FResult JSification
 
 3/21/2018
 
+	405
+	-various text fixes
+	-fixes to csec bug
+
 	404
 	-numerous reported bugs fixed
 	-also a few typos
diff --git a/devNotes/twine JS b/devNotes/twine JS
index a610d5e0fdb65e90969514c0f02d68f3dca118cf..b63629805c2d15dfcb559b851bddf071ae4f84e5 100644
--- a/devNotes/twine JS	
+++ b/devNotes/twine JS	
@@ -708,11 +708,6 @@ window.isItemAccessible = function(string) {
 	}
 };
 
-window.ruleApplied = function(slave, ID) {
-	if (!slave || !slave.currentRules)
-		return null;
-	return slave.currentRules.includes(ID);
-};
 
 window.expandFacilityAssignments = function(facilityAssignments) {
 	var assignmentPairs = {
@@ -738,139 +733,6 @@ window.expandFacilityAssignments = function(facilityAssignments) {
 	return fullList.flatten();
 };
 
-window.ruleSlaveSelected = function(slave, rule) {
-	if (!slave || !rule || !rule.selectedSlaves)
-		return false;
-	return rule.selectedSlaves.includes(slave.ID);
-};
-
-window.ruleSlaveExcluded = function(slave, rule) {
-	if (!slave || !rule || !rule.excludedSlaves)
-		return false;
-	return rule.excludedSlaves.includes(slave.ID);
-};
-
-window.ruleAssignmentSelected = function(slave, rule) {
-	if (!slave || !rule || (!rule.assignment && !rule.facility))
-		return false;
-	var assignment = rule.assignment.concat(expandFacilityAssignments(rule.facility));
-	return assignment.includes(slave.assignment);
-}
-
-window.ruleAssignmentExcluded = function(slave, rule) {
-	if (!slave || !rule || (!rule.excludeAssignment && !rule.excludeFacility))
-		return false;
-	var excludeAssignment = rule.excludeAssignment.concat(expandFacilityAssignments(rule.excludeFacility));
-	return excludeAssignment.includes(slave.assignment);
-}
-
-window.hasSurgeryRule = function(slave, rules) {
-	if (!slave || !rules || !slave.currentRules)
-		return false;
-
-	for (var d = rules.length-1; d >= 0; d--) {
-		if (ruleApplied(slave, rules[d].ID)) {
-			if (rules[d].autoSurgery > 0) {
-				return true;
-			}
-		}
-	}
-	return false;
-};
-
-window.hasRuleFor = function(slave, rules, what) {
-	if (!slave || !rules || !slave.currentRules)
-		return false;
-
-	for (var d = rules.length-1; d >= 0; d--) {
-		if (ruleApplied(slave, rules[d].ID)) {
-			if (rules[d][what] !== "no default setting") {
-				return true;
-			}
-		}
-	}
-	return false;
-};
-
-window.hasHColorRule = function(slave, rules) {
-	return hasRuleFor(slave, rules, "hColor");
-}
-
-window.hasHStyleRule = function(slave, rules) {
-	return hasRuleFor(slave, rules, "hStyle");
-};
-
-window.hasEyeColorRule = function(slave, rules) {
-	return hasRuleFor(slave, rules, "eyeColor");
-};
-
-window.lastPregRule = function(slave, rules) {
-	if (!slave || !rules)
-		return null;
-	if (!slave.currentRules)
-		return false;
-
-	for (var d = rules.length-1; d >= 0; d--) {
-		if (ruleApplied(slave, rules[d].ID)) {
-			if (rules[d].preg == -1) {
-				return true;
-			}
-		}
-	}
-
-	return null;
-};
-
-window.lastSurgeryRuleFor = function(slave, rules, what) {
-	if (!slave || !rules || !slave.currentRules)
-		return null;
-
-	for (var d = rules.length-1; d >= 0; d--) {
-		if (!rules[d].surgery)
-			return null;
-
-		if (ruleApplied(slave, rules[d].ID)) {
-			if (rules[d].surgery[what] != "no default setting") {
-				return rules[d];
-			}
-		}
-	}
-
-	return null;
-};
-
-window.lastEyeSurgeryRule = function(slave, rules) {
-	return lastSurgeryRuleFor(slave, rules, "eyes");
-}
-
-window.lastLactationSurgeryRule = function(slave, rules) {
-	return lastSurgeryRuleFor(slave, rules, "lactation");
-}
-
-window.lastProstateSurgeryRule = function(slave, rules) {
-	return lastSurgeryRuleFor(slave, rules, "prostate");
-}
-
-window.lastLipSurgeryRule = function(slave, rules) {
-	return lastSurgeryRuleFor(slave, rules, "lips");
-};
-
-window.lastBoobSurgeryRule = function(slave, rules) {
-	return lastSurgeryRuleFor(slave, rules, "boobs");
-};
-
-window.lastButtSurgeryRule = function(slave, rules) {
-	return lastSurgeryRuleFor(slave, rules, "butt");
-};
-
-window.lastHairSurgeryRule = function(slave, rules) {
-	return lastSurgeryRuleFor(slave, rules, "hair");
-}
-
-window.lastBodyHairSurgeryRule = function(slave, rules) {
-	return lastSurgeryRuleFor(slave, rules, "bodyhair");
-}
-
 window.milkAmount = function(slave) {
 	var milk;
 	var calcs;
@@ -1042,56 +904,6 @@ window.nameReplace = function(name)
 	return name;
 }
 
-window.mergeRules = function(rules) {
-    var combinedRule = {};
-
-    for (var i = 0; i < rules.length; i++) {
-        for (var prop in rules[i]) {
-            // A rule overrides any preceding ones if,
-            //   * there are no preceding ones,
-            //   * or it sets autoBrand,
-            //   * or it does not set autoBrand and is not "no default setting"
-            var applies = (
-                combinedRule[prop] === undefined
-                || (prop === "autoBrand" && rules[i][prop])
-                || (prop !== "autoBrand" && rules[i][prop] !== "no default setting")
-            );
-
-            if (applies)
-            {
-
-            	//Objects in JS in operations "=" pass by reference, so we need a completely new object to avoid messing up previous rules.
-            	if ("object" == typeof rules[i][prop] && "object" != typeof combinedRule[prop])
-            		combinedRule[prop] = new Object();
-
-            	//If we already have object - now we will process its properties, but object itself should be skipped.
-            	if ("object" != typeof combinedRule[prop])
-                	combinedRule[prop] = rules[i][prop];
-
-            	/*Some properties of rules now have second level properties. We need to check it, and change ones in combinedRule. (Good example - growth drugs. Breasts, butt, etc...) */
-            	if ( "object" == typeof rules[i][prop])
-    	        {
-	            	for (var subprop in rules[i][prop])
-    	        	{
-    	           		var subapplies = (
-            	    	combinedRule[prop][subprop] === undefined
-                			|| (rules[i][prop][subprop] !== "no default setting")
-	            		);
-
-		            	if (subapplies)
-    		            	combinedRule[prop][subprop] = rules[i][prop][subprop];
-    		        }
-
-            	}
-           	}
-
-        }
-
-    }
-
-    return combinedRule;
-}
-
 window.isVegetable = function(slave) {
 	slave = slave || State.variables.activeSlave;
 	if(!slave) { return false; }
@@ -1177,6 +989,18 @@ window.jsConsoleInfo = function(obj)
 
 /* see documentation for details /devNotes/Extended Family Mode Explained.txt */
 
+window.isMotherP = function isMotherP(daughter, mother) {
+	return daughter.mother === mother.ID
+}
+
+window.isFatherP = function isFatherP(daughter, father) {
+	return daughter.father === father.ID
+}
+
+window.isParentP = function isParentP(daughter, parent) {
+	return isMotherP(daughter,parent) || isFatherP(daughter,parent)
+}
+
 window.sameDad = function(slave1, slave2){
 	if ((slave1.father == slave2.father) && (slave1.father != 0 && slave1.father != -2)) {
 		return true;
@@ -1488,6 +1312,86 @@ window.bellyAdjective = function(slave) {
 	}
 }
 
+/* calculates and returns expected ovum count during conception*/
+window.setPregType = function(actor) {
+	/* IMHO rework is posssible. Can be more interesting to play, if this code will take in account more body conditions - age, fat, food, hormone levels, etc. */
+	
+	var ovum = 1;
+	var fertilityStack = 0;	// adds an increasing bonus roll for stacked fertility drugs
+
+	if(actor.broodmother < 1) { /* Broodmothers should be not processed here. Necessary now.*/
+		if(typeof actor.readyOva == "number" && actor.readyOva != 0) {
+			ovum = actor.readyOva;  /*just single override; for delayed impregnation cases */
+		} else if(actor.ID == -1) {
+			if(actor.birthMaster > 0) { // Predisposed to twins
+				if(actor.fertDrugs == 1) {
+					ovum += jsEither([1, 1, 2, 2, 2, 2, 3, 3]);
+				} else {
+					ovum += jsEither([0, 0, 0, 1, 1, 1, 1, 1, 1, 2]);
+				}
+				if(actor.forcedFertDrugs > 0) {
+					ovum += jsEither([1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4]);
+				}
+			} else {
+				if(actor.fertDrugs == 1) {
+					ovum += jsEither([0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3]);
+				} else {
+					ovum += jsEither([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]);
+				}
+				if(actor.forcedFertDrugs > 0) {
+					ovum += jsEither([0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 4]);
+				}
+			}
+		} else if(actor.pregType == 0) {
+			ovum += jsEither([0, 0, 0, 0, 0, 0, 0, 0, 0, 1]);	//base chance for twins
+			if(actor.hormones == 2) {
+				ovum += jsEither([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2]);
+				fertilityStack++;
+			}
+			if(actor.hormoneBalance >= 200) {
+				ovum += jsEither([0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2]);
+				fertilityStack++;
+			}
+			if(actor.diet == "fertility") {
+				ovum += jsEither([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]);
+				fertilityStack++;
+			}
+			if(State.variables.masterSuitePregnancyFertilitySupplements == 1 && ((actor.assignment == "serve in the master suite" || actor.assignment == "be your Concubine"))) {
+				ovum += jsEither([0, 0, 0, 1, 1, 2, 2, 2, 3, 3]);
+				fertilityStack++;
+				fertilityStack++;
+			}
+			if(State.variables.reproductionFormula == 1 && (State.variables.week-actor.weekAcquired > 0)) {
+				fertilityStack++;
+			}
+			if(actor.drugs == "super fertility drugs") {
+				ovum += jsEither([1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5]);
+				fertilityStack++;
+				fertilityStack++;
+				fertilityStack++;
+				fertilityStack++;
+				fertilityStack++;
+			} else if(actor.drugs == "fertility drugs") {
+				ovum += jsEither([0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3]);
+				fertilityStack++;
+			}
+			if(State.variables.seeHyperPreg == 1) {
+				if(actor.drugs == "super fertility drugs") {
+					ovum += jsRandom(0, fertilityStack*2);
+				} else {
+					ovum += jsRandom(0, fertilityStack);
+				}
+			} else {
+				ovum += jsRandom(0, fertilityStack);
+				if(ovum > 12) {
+					ovum = jsRandom(6,12);
+				}
+			}
+		}
+		return ovum;
+	}
+}
+
 /*:: RA Selector JS [script]*/
 
 window.growAdvSelector = function(slave, rule) {
@@ -2237,7 +2141,7 @@ window.getSlaveCost = function(s) {
 			cost += foodCost * s.pregType * (s.pregControl === 'speed up' ? 3 : 1);
 		}
 	}
-	if(s.diet === 'XX' || s.diet === 'XY') {
+	if(s.diet === 'XX' || s.diet === 'XY' || s.diet === 'fertility') {
 		cost += 25;
 	} else if(s.diet === 'cleansing') {
 		cost += 50;
@@ -3355,7 +3259,7 @@ window.Height = (function(){
 		"Afghan": 163.8, "Algerian": 162, "Argentinian": 159.6, "Armenian": 158.1, "Australian": 161.8, "Austrian": 166,
 		"Bangladeshi": 150.6, "Belarusian": 166.8, "Belgian": 168.1, "Bolivian": 142.2, "Brazilian": 158.8,
 		"British": 161.9, "Burmese": undefined, "Canadian": 162.3, "Chilean": 157.2, "Chinese": 155.8, "Colombian": 158.7,
-		"Congolese": 157.7, "Cuban": 156, "Czech": 167.22, "Danish": 168.7, "Dominican": 156.4, "Dutch": 169, "Egyptian": 158.9,
+		"Zairian": 157.7, "Cuban": 156, "Czech": 167.22, "Danish": 168.7, "Dominican": 156.4, "Dutch": 169, "Egyptian": 158.9,
 		"Emirati": 158.9, "Estonian": 165.5, "Ethiopian": 157.6, "Filipina": 151.8, "Finnish": 165.3, "French": 162.5,
 		"German": 162.8, "Ghanan": 158.5, "Greek": 165, "Guatemalan": 147.3, "Haitian": 158.6, "Hungarian": 164,
 		"Icelandic": 168, "Indian": 151.9, "Indonesian": 147, "Iranian": 157.2, "Iraqi": 155.8, "Irish": 163, "Israeli": 166,
@@ -3382,7 +3286,13 @@ window.Height = (function(){
 		"Niuean": 160.4, "Palauan": 161.4, "Palestinian": 158.2, "Papua New Guinean": 150.7, "Paraguayan": 158.3, "Qatari": 155,
 		"Kittitian": 156.9, "Saint Lucian": 157.1, "Vincentian": 156.2, "Samoan": 161, "Seychellois": 155.8,
 		"Slovene": 167.4, "a Solomon Islander": 151.8, "Sri Lankan": 151.4, "Surinamese": 155.7, "Tajik": 161.2, "Tongan": 159.5,
-		"Trinidadian": 157.4, "Turkmen": 158.2, "Ni-Vanuatu": 149.8, "Vatican": 162.5,
+		"Trinidadian": 157.4, "Turkmen": 158.2, "Ni-Vanuatu": 149.8, "Vatican": 162.5, "Angolan": undefined, "Beninese": 159.3, 
+		"Bissau-Guinean": undefined, "Burkinabé": 161.6, "Cape Verdean": undefined, "Catalan": undefined, "Central African": 158.9, 
+		"Chadian": 162.6, "Comorian": 154.8, "Congolese": 159, "Equatoguinean": undefined, "Eritrean": undefined, 
+		"French Polynesian": undefined, "Gambian": 157.8, "Guinean": 158.8, "Ivorian": 158.9, "Kurdish": undefined, "Liberian": 157.3, 
+		"Malawian": 155, "Mauritanian": undefined, "Mauritian": undefined, "Mosotho": 157.6, "Motswana": undefined, "Mozambican": 156, 
+		"Namibian": 160.7, "Rwandan": 157.7, "Sahrawi": undefined, "São Toméan": undefined, "Senegalese": 163, "Sierra Leonean": undefined, 
+		"Somali": undefined, "South Sudanese": undefined, "Swazi": 159.1, "Tibetan": undefined, "Togolese": 159, 
 		"": 162.5 // default
 	};
 	const xyMeanHeight = {
@@ -3390,7 +3300,7 @@ window.Height = (function(){
 		"Afghan": undefined, "Algerian": 172.2, "Argentinian": 174.46, "Armenian": undefined, "Australian": 175.6,
 		"Austrian": 179, "Bangladeshi": 150.8, "Belarusian": 176.9, "Belgian": 178.7, "Bolivian": 160, "Brazilian": 170.7,
 		"British": 175.3, "Burmese": 168.0, "Canadian": 175.1, "Chilean": 169.6, "Chinese": 167.1, "Colombian": 170.6,
-		"Congolese": 158.9, "Cuban": 168, "Czech": 180.31, "Danish": 180.4, "Dominican": 168.4, "Dutch": 181, "Egyptian": 170.3,
+		"Zairian": 158.9, "Cuban": 168, "Czech": 180.31, "Danish": 180.4, "Dominican": 168.4, "Dutch": 181, "Egyptian": 170.3,
 		"Emirati": 170.3, "Estonian": 179.1, "Ethiopian": undefined, "Filipina": 163.5, "Finnish": 178.9, "French": 175.6,
 		"German": 175.4, "Ghanan": 169.5, "Greek": 177, "Guatemalan": 157.5, "Haitian": undefined, "Hungarian": 176,
 		"Icelandic": 181, "Indian": 164.7, "Indonesian": 158, "Iranian": 170.3, "Iraqi": 165.4, "Irish": 177, "Israeli": 177,
@@ -3417,7 +3327,13 @@ window.Height = (function(){
 		"Niuean": 169.7, "Palauan": 174.6, "Palestinian": 169.7, "Papua New Guinean": 163.5, "Paraguayan": 168.8, "Qatari": 166.2,
 		"Kittitian": 164.4, "Saint Lucian": 168.3, "Vincentian": 165.4, "Samoan": 173, "Seychellois": 168.5,
 		"Slovene": 180.3, "a Solomon Islander": 163.1, "Sri Lankan": 163.6, "Surinamese": 165.2, "Tajik": 175.2, "Tongan": 168.2,
-		"Trinidadian": 170.8, "Turkmen": 171.4, "Ni-Vanuatu": 160.5, "Vatican": 176.5,
+		"Trinidadian": 170.8, "Turkmen": 171.4, "Ni-Vanuatu": 160.5, "Vatican": 176.5, "Angolan": undefined, "Beninese": undefined, 
+		"Bissau-Guinean": undefined, "Burkinabé": undefined, "Cape Verdean": undefined, "Catalan": undefined, "Central African": undefined, 
+		"Chadian": undefined, "Comorian": undefined, "Congolese": undefined, "Equatoguinean": undefined, "Eritrean": undefined, 
+		"French Polynesian": undefined, "Gambian": 168, "Guinean": undefined, "Ivorian": undefined, "Kurdish": undefined, "Liberian": undefined, 
+		"Malawian": 166, "Mauritanian": undefined, "Mauritian": undefined, "Mosotho": undefined, "Motswana": undefined, "Mozambican": undefined, 
+		"Namibian": undefined, "Rwandan": undefined, "Sahrawi": undefined, "São Toméan": undefined, "Senegalese": undefined, "Sierra Leonean": undefined, 
+		"Somali": undefined, "South Sudanese": undefined, "Swazi": undefined, "Tibetan": undefined, "Togolese": undefined, 
 		"": 172.5 // defaults
 	};
 	
@@ -3679,11 +3595,23 @@ window.jsRandomMany = function (arr, count) {
 	return result;
 }
 
+//This function wants an array - which explains why it works like array.random(). Give it one or you'll face a NaN
 window.jsEither = function(choices) {
 	var index = Math.floor(Math.random() * choices.length);
 	return choices[index];
 }
 
+//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.
+window.deepCopy = function (o) {
+   var output, v, key;
+   output = Array.isArray(o) ? [] : {};
+   for (key in o) {
+       v = o[key];
+       output[key] = (typeof v === "object") ? deepCopy(v) : v;
+   }
+   return output;
+}
+
 /*
 Make everything waiting for this execute. Usage:
 
@@ -3698,6 +3626,50 @@ if(typeof Categorizer === 'function') {
 */
 jQuery(document).trigger('categorizer.ready');
 
+
+window.hashChoice = function hashChoice(obj) {
+	let randint = Math.floor(Math.random()*hashSum(obj));
+	let ret;
+	Object.keys(obj).some(key => {
+		if (randint < obj[key]) {
+			ret = key;
+			return true;
+		} else {
+			randint -= obj[key];
+			return false;
+		}
+	});
+	return ret;
+};
+
+window.hashSum = function hashSum(obj) {
+	let sum = 0;
+	Object.keys(obj).forEach(key => { sum += obj[key]; });
+	return sum;
+};
+
+window.arr2obj = function arr2obj(arr) {
+	const obj = {};
+	arr.forEach(item => { obj[item] = 1; });
+	return obj;
+};
+
+window.hashPush = function hashPush(obj, ...rest) {
+	rest.forEach(item => {
+		if (obj[item] === undefined) obj[item] = 1;
+		else obj[item] += 1;
+	});
+};
+
+window.weightedArray2HashMap = function weightedArray2HashMap(arr) {
+	const obj = {};
+	arr.forEach(item => {
+		if (obj[item] === undefined) obj[item] = 1;
+		else obj[item] += 1;
+	})
+	return obj;
+};
+
 /*:: Span Macro JS [script]*/
 
 /*
@@ -5312,7 +5284,9 @@ if(eventSlave.fetish != "mindbroken") {
 
 	if(eventSlave.aphrodisiacs > 1 || eventSlave.inflationType == "aphrodisiac") {
 		if(eventSlave.speechRules == "restrictive" && eventSlave.releaseRules !== "permissive") {
-			State.variables.RESSevent.push("extreme aphrodisiacs");
+			if(eventSlave.amp != 1) {
+				State.variables.RESSevent.push("extreme aphrodisiacs");
+			}
 		}
 	}
 
@@ -6500,7 +6474,9 @@ if(eventSlave.fetish != "mindbroken") {
 
 	if(eventSlave.aphrodisiacs > 1 || eventSlave.inflationType == "aphrodisiac") {
 		if(eventSlave.speechRules == "restrictive" && eventSlave.releaseRules !== "permissive") {
-			State.variables.RESSevent.push("extreme aphrodisiacs");
+			if(eventSlave.amp != 1) {
+				State.variables.RESSevent.push("extreme aphrodisiacs");
+			}
 		}
 	}
 
@@ -6868,6 +6844,30 @@ window.slimPass = function(slave) {
 	return slimPass;
 }
 
+window.sameAssignmentP = function sameAssignmentP(A, B) {
+	return A.assignment === B.assignment
+}
+
+window.haveRelationP = function haveRelationP(slave, target) {
+	return slave.relationTarget === target.ID
+}
+
+window.haveRelationshipP = function haveRelationshipP(slave, target) {
+	return slave.relationshipTarget === target.ID
+}
+
+window.isRivalP = function isRivalP(slave, target) {
+	return slave.rivalryTarget === target.ID
+}
+
+window.supremeRaceP = function supremeRaceP(slave) {
+	return State.variables.arcologies[0].FSSupremacistRace === slave.race
+}
+
+window.inferiorRaceP = function inferiorRaceP(slave) {
+	return State.variables.arcologies[0].FSSubjugationistRace === slave.race
+}
+
 /*:: wombJS [script]*/
 
 /*
@@ -7129,7 +7129,7 @@ window.WombNormalizePreg = function(actor)
         actor.pregType = 0; 
         actor.pregKnown = 0;
         
-        if (actor.preg > 0)
+        if (actor.preg >= 0)
             actor.preg = 0.1; //to avoid legacy code conflicts - broodmother on hold can't be impregnated, but she not on normal contraceptives. So we set this for special case.
         
         if (actor.pregSource > 0)
@@ -7272,7 +7272,7 @@ window.todaysOutfit = function(slave) {
 				break;
 			case 'genderFund':
 				if(jsRandom(1,2) == 1) {
-					selection = {text: "she commonly sees cheerleaders around and instinctually follows along.", clothes: jsEither('a cheerleader outfit', 'a schoolgirl outfit')};
+					selection = {text: "she commonly sees cheerleaders around and instinctually follows along.", clothes: jsEither(['a cheerleader outfit', 'a schoolgirl outfit'])};
 				} else {
 					selection = {text: "she commonly sees bunnies around and instinctually follows along.", clothes: "a bunny outfit"};
 				}
@@ -7281,22 +7281,22 @@ window.todaysOutfit = function(slave) {
 				selection = {text: "she commonly sees others wearing clothing and is drawn to doing so herself.", clothes: "conservative clothing"};
 				break;
 			case 'degradationist':
-				selection = {text: "she commonly sees others wearing chains and is drawn to doing so herself.", clothes: jsEither('chains', 'uncomfortable straps', 'shibari ropes')};
+				selection = {text: "she commonly sees others wearing chains and is drawn to doing so herself.", clothes: jsEither(['chains', 'uncomfortable straps', 'shibari ropes'])};
 				break;
 			case 'mature':
-				selection = {text: "she commonly sees others wearing suits and is drawn to doing so herself.", clothes: jsEither('slutty business attire', 'a nice maid outfit', 'a military uniform', 'nice business attire')};
+				selection = {text: "she commonly sees others wearing suits and is drawn to doing so herself.", clothes: jsEither(['slutty business attire', 'a nice maid outfit', 'a military uniform', 'nice business attire'])};
 				break;
 			case 'youth':
-				selection = {text: "she commonly sees schoolgirls around and instinctually follows along.", clothes: jsEither('a schoolgirl outfit', 'a cheerleader outfit')};
+				selection = {text: "she commonly sees schoolgirls around and instinctually follows along.", clothes: jsEither(['a schoolgirl outfit', 'a cheerleader outfit'])};
 				break;
 			case 'physicalIdealist':
-				selection = {text: "she commonly sees naked girls around and seldom realizes they are coated in oil.", clothes: jsEither('body oil', 'no clothing', 'no clothing')};
+				selection = {text: "she commonly sees naked girls around and seldom realizes they are coated in oil.", clothes: jsEither(['body oil', 'no clothing', 'no clothing'])};
 				break;
 			case 'pastoralist':
 				selection = {text: "she commonly sees cowgirls around and instinctually follows along.", clothes: "Western clothing"};
 				break;
 			case 'bodyPurist':
-				selection = {text: "she commonly sees others wearing tight, form-fitting clothes and is drawn to doing so herself.", clothes: jsEither('a leotard', 'a string bikini', 'a slave gown', 'a comfortable bodysuit', 'restrictive latex', 'clubslut netting', 'a leotard', 'a halter top dress')};
+				selection = {text: "she commonly sees others wearing tight, form-fitting clothes and is drawn to doing so herself.", clothes: jsEither(['a leotard', 'a string bikini', 'a slave gown', 'a comfortable bodysuit', 'restrictive latex', 'clubslut netting', 'a leotard', 'a halter top dress'])};
 				break;
 			default:
 				selection = {text: "she chooses to put on underwear, the reasons lost to her, and moves on.", clothes: "attractive lingerie"};
@@ -7795,9 +7795,9 @@ window.todaysShoes = function(slave) {
 	
 	if(slave.fetish == 'mindbroken') {
 		if(slave.amp != 1 && slave.heels == 1) {
-			shoes.push({text: "She finds she can inexplicably walk if she wears heels; a daily lesson for her, as she forgets shortly after leaving.", shoes: jsEither("heels", "extreme heels", "boots")});
+			shoes.push({text: "She finds she can inexplicably walk if she wears heels; a daily lesson for her, as she forgets shortly after leaving.", shoes: jsEither(["heels", "extreme heels", "boots"])});
 		}
-		shoes.push({text: "She vaguely remembers putting things on her feet, so she does.", shoes: jsEither("heels", "extreme heels", "boots", "flats")});
+		shoes.push({text: "She vaguely remembers putting things on her feet, so she does.", shoes: jsEither(["heels", "extreme heels", "boots", "flats"])});
 		shoes.push({text: "She entered without shoes, and will leave the same.", shoes: "none"});
 	} else if(slave.devotion <= 20) {
 		if(slave.heels == 0) {
@@ -7873,7 +7873,7 @@ window.todaysCorset = function(slave) {
 			if(slave.weight > 130) {
 				belly.push({text: "She notices the fake bellies; since every girl she has ever met has a rounded middle, it's only natural she is compelled to wear one. She struggles to fit it around her huge gut, only stopping when another slave takes it away from her so she moves on and stops blocking the wardrobe with her fat ass.", bellyAccessory: "none"});
 			} else {
-				belly.push({text: "She notices the fake bellies; since every girl she has ever met has a rounded middle, it's only natural she is compelled to wear one.", bellyAccessory: jsEither("a small empathy belly", "a medium empathy belly", "a large empathy belly", "a huge empathy belly")});
+				belly.push({text: "She notices the fake bellies; since every girl she has ever met has a rounded middle, it's only natural she is compelled to wear one.", bellyAccessory: jsEither(["a small empathy belly", "a medium empathy belly", "a large empathy belly", "a huge empathy belly"])});
 			}
 		} else {
 			belly.push({text: "", bellyAccessory: slave.bellyAccessory}); /*compatiblity for no output, will likely get deprecated in the future as content is added*/
@@ -7885,7 +7885,7 @@ window.todaysCorset = function(slave) {
 			if(slave.weight > 130) {
 				belly.push({text: "struggles to fit a fake pregnant belly around her gut before giving up and hoping she can pass as fecund,", bellyAccessory: "none"});
 			} else {
-				belly.push({text: "straps on a fake pregnant belly to fit in with all the other pregnant girls,", bellyAccessory: jsEither("a small empathy belly", "a medium empathy belly", "a large empathy belly", "a huge empathy belly")});
+				belly.push({text: "straps on a fake pregnant belly to fit in with all the other pregnant girls,", bellyAccessory: jsEither(["a small empathy belly", "a medium empathy belly", "a large empathy belly", "a huge empathy belly"])});
 			}
 		} else if(slave.belly < 1500 && slave.fetish == "pregnancy" && isItemAccessible("a small empathy belly") && slave.sexualFlaw != "breeder" && slave.weight <= 130) {
 			if(slave.fetishStrength <= 30) {
@@ -7908,6 +7908,447 @@ window.todaysCorset = function(slave) {
 	return jsEither(belly);
 }
 
+/*:: FResult [script]*/
+
+// this is a port of the FResult widget
+// it has been broken up into several functions, because it grew too long
+// it has been wrapped in a closure so as not to polute the global namespace
+// and so that nested functions are only evaluated once
+
+window.FResult = (function() {
+	"use strict";
+	// we can't initialise our global variables on load, because SugarCube.State isn't initialised
+	// instead, declare them and initialise on run time
+	let V, incest_bonus;
+	function FResult(slave) {
+		V = State.variables;
+		incest_bonus = V.arcologies[0].FSEgyptianRevivalist > 20 || V.arcologies[0].FSEgyptianRevivalistIncestPolicy === 1;
+		
+		calcUseWeights(slave);
+		if (!slave.fuckdoll)
+			calcNotFuckdoll(slave);
+		else
+			V.FResult += slave.fuckdoll/10;
+		
+		V.FResult += Math.max(0, slave.aphrodisiacs) * 2;
+
+		if (slave.inflationType === "aphrodisiac")
+			V.FResult += slave.inflation*4;
+
+		if (slave.lactation > 0)
+			V.FResult += 1;
+
+		if (V.seeAge === 1)
+			calcAge(slave);
+		if (slave.fetish === "mindbroken")
+			V.FResult = Math.trunc(V.FResult*0.4);
+		else
+			V.FResult = Math.trunc(V.FResult*0.7);
+
+		if (slave.pregWeek < 0)
+			V.FResult -= Math.trunc(V.FResult*slave.pregWeek/10); // reduced the most just after birth
+
+		calcAmputation(slave);
+
+		if (V.arcologies[0].FSHedonisticDecadence > 20)
+			calcHedonismWeight(slave);
+		if (V.FResult < 2) {
+			if (supremeRaceP(slave))
+				V.FResult = 0;
+			else
+				V.FResult = 2;
+		}
+	}
+
+	function calcUseWeights(slave) {
+		V.FResult = (3 - slave.anus)+(slave.muscles/30);
+		if (slave.muscles < -95)
+			V.FResult -= 5;
+		else if (slave.muscle < -30)
+			V.FResult -= 2;
+
+		V.seed = V.oralUseWeight + V.vaginalUseWeight + V.analUseWeight;
+		if (V.seed <= 0) return;
+
+		V.FResult += (6+slave.tonguePiercing) * (V.oralUseWeight/V.seed) * (slave.oralSkill/30);
+		if (slave.sexualFlaw === "cum addict")
+			V.FResult += (V.oralUseWeight/V.seed) * (slave.oralSkill/30);
+		if (canDoVaginal(slave)) {
+			V.FResult += 6 * (V.vaginalUseWeight/V.seed) * (slave.vaginalSkill/30);
+			V.FResult += (3 - slave.vagina);
+			V.FResult += slave.vaginaLube;
+		}
+		if (canDoAnal(slave)) {
+			V.FResult += 6 * (V.analUseWeight/V.seed) * (slave.analSkill/30);
+			if (slave.sexualFlaw === "anal addict")
+				V.FResult += (V.analUseWeight/V.seed) * (slave.analSkill/30);
+			if (slave.inflationType === "aphrodisiac")
+				V.FResult += (V.analUseWeight/V.seed) * (slave.inflation * 3);
+		}
+	}
+
+	function calcWorksWithRelatives(slave) {
+		V.slaves.forEach(islave => {
+			if (isParentP(slave, islave) && sameAssignmentP(slave, islave)) {
+				V.FResult += 1;
+				if (incest_bonus) V.FResult += 1;
+			}
+			if (areSisters(slave, islave) > 0 && sameAssignmentP(slave, islave)) {
+				V.FResult += 1;
+				if (incest_bonus) V.FResult += 1;
+			}
+		});
+	}
+
+	function calcWorksWithRelativesVanilla(slave) {
+		const fre = V.slaves.findIndex(s => {
+			return haveRelationP(slave, s) && sameAssignmentP(slave, s);
+		});
+		if (fre !== -1) {
+			V.FResult += 2;
+			if (incest_bonus) V.FResult += 2;
+		}
+	}
+
+	function calcWorksWithRelationship(slave) {
+		const fre = V.slaves.findIndex(s => {
+			return haveRelationshipP(slave, s) && sameAssignmentP(slave, s);
+		});
+		if (fre !== -1) V.FResult += 1;
+	}
+	
+	function calcWorksWithRival(slave) {
+		const en = V.slaves.findIndex(s => {
+			return isRivalP(slave, s) && sameAssignmentP(slave, s);
+		});
+		if (en !== -1) V.FResult -= 1;
+	}
+
+	function calcHInjectionsDiet(slave) {
+		if (slave.drugs === "male hormone injections" || slave.drugs === "female hormone injections")
+			V.FResult -= 10;
+		if (slave.diet === "XXY")
+			V.FResult += 2;
+		else if (slave.diet === "XY" || slave.diet === "XX")
+			V.FResult += 1;
+		else if (slave.diet === "cum production")
+			V.FResult += 1;
+		else if (slave.diet === "fertility")
+			V.FResult += 1;
+	}
+	function calcPreg(slave) {
+		if (V.arcologies[0].FSRepopulationFocus > 20) {
+			if (slave.preg > 10) V.FResult += 2;
+			else V.FResult -= 2;
+		} else if (V.arcologies[0].FSRestart > 20) {
+			if (slave.bellyPreg >= 500 && slave.breedingMark === 1)
+				V.FResult += 1;
+			else if (slave.preg > 10)
+				V.FResult -= 10;
+			else
+				V.FResult += 0;
+		}
+	}
+
+	function calcRace(slave) {
+		if (V.arcologies[0].FSSupremacist !== "unset" && supremeRaceP(slave))
+			V.FResult -= (V.arcologies[0].FSSupremacist/5) + (V.arcologies[0].FSSupremacistLawME*10);
+		if (V.arcologies[0].FSSubjugationist !== "unset" && inferiorRaceP(slave))
+			V.FResult += (V.arcologies[0].FSSubjugationist/10) + (V.arcologies[0].FSSubjugationistLawME);
+	}
+
+	function calcSexAttributes(slave) {
+		if (slave.clitPiercing > 2) V.FResult += 1;
+		if (slave.fetishKnown === 1 && slave.fetishStrength > 60 && slave.fetish != "none")
+			V.FResult += slave.fetishStrength/5;
+		
+		if (slave.attrKnown === 1) {
+			V.FResult += Math.trunc(slave.attrXX/20);
+			V.FResult += Math.trunc(slave.attrXY/20);
+			if (slave.energy > 95) V.FResult += 3;
+			else if (slave.energy > 80) V.FResult += 2;
+			else if (slave.energy > 60) V.FResult += 1;
+			else if (slave.energy <= 20) V.FResult -= 2;
+			else if (slave.energy <= 40) V.FResult -= 1;
+		}
+		if (slave.sexualFlaw !== "none") V.FResult -= 2;
+		if (slave.sexualQuirk !== "none") V.FResult += 2;
+		if (slave.behavioralFlaw !== "none") V.FResult -= 2;
+		if (slave.behavioralQuirk !== "none") V.FResult += 2;
+	}
+
+	function calcCareer(slave) {
+		if (setup.whoreCareers.includes(slave.career))
+			V.FResult += 1;
+		else if (slave.oralCount + slave.analCount + slave.vaginalCount + slave.mammaryCount + slave.penetrativeCount > 1000)
+			V.FResult += 1;
+	}
+
+	function calcSight(slave) {
+		if (!canSee(slave)) V.FResult -= 3;
+		else if (slave.eyes <= -1) {
+			if (slave.eyewear !== "corrective glasses" && slave.eyewear !== "corrective contacts")
+				V.FResult -= 1;
+		} else if (slave.eyewear === "blurring glasses")
+			V.FResult -= 1;
+		else if (slave.eyewear === "blurring contacts")
+			V.FResult -= 1;
+	}
+
+	function calcEgyptianBonus(slave) {
+		if (V.racialVarieties === undefined) V.racialVarieties = [];
+		V.seed = 0;
+		V.racialVarieties.forEach(race => {
+			if (slave.race === race) V.seed = 1;
+		});
+		if (V.seed === 0)
+			V.racialVarieties.push(slave.race);
+	}
+
+	function calcYouthBonus(slave) {
+		if (slave.visualAge < 30) {
+			if (slave.actualAge > 30)
+				V.FResult += 5; // experienced for her apparent age
+			if (slave.physicalAge > 30)
+				V.FResult -= slave.physicalAge/2; // too old :(
+		}
+	}
+
+	function calcMatureBonus(slave) {
+		if (slave.visualAge >= 30 && slave.actualAge >= 30 && slave.physicalAge < slave.visualAge)
+			V.FResult += Math.min((slave.physicalAge - slave.visualAge) * 2, 20); // looks and acts mature, but has a body that just won't quit
+	}
+
+	function calcNotFuckdoll(slave) {
+		if (V.familyTesting === 1 && totalRelatives(slave) > 0)
+			calcWorksWithRelatives(slave);
+		else if(!V.familyTesting && slave.relation !==0)
+			calcWorksWithRelativesVanilla(slave);
+		if (slave.relationship > 0) calcWorksWithRelationship(slave);
+		if (slave.rivalry !== 0) calcWorksWithRival(slave);
+		calcHInjectionsDiet(slave);
+		calcPreg(slave);
+		calcRace(slave);
+		calcSexAttributes(slave);
+		calcCareer(slave);
+		calcSight(slave);
+		if (V.arcologies[0].FSEgyptianRevivalist !== "unset")
+			calcEgyptianBonus(slave);
+		if (V.arcologies[0].FSYouthPreferentialist !== "unset")
+			calcYouthBonus(slave);
+		else if (V.arcologies[0].FSMaturityPreferentialist !== "unset")
+			calcMatureBonus(slave);
+	}
+	
+	function calcAge(slave) {
+		if ((V.arcologies[0].FSRepopulationFocus !== "unset" || V.arcologies[0].FSGenderFundamentalist !== "unset") && slave.physicalAge === V.minimumSlaveAge && slave.physicalAge === V.fertilityAge && canGetPregnant(slave)) {
+			V.FResult += 1;
+			if (slave.birthWeek === 0) V.FResult += V.FResult;
+			else if (slave.birthWeek < 4) V.FResult += 0.2*V.FResult;
+		} else if (slave.physicalAge === V.minimumSlaveAge) {
+			V.FResult += 1;
+			if (slave.birthWeek === 0 ) V.FResult += 0.5*V.FResult;
+			else if (slave.birthWeek < 4) V.FResult += 0.1*V.FResult;
+		} else if (slave.physicalAge === V.fertilityAge && canGetPregnant(slave) && (V.arcologies[0].FSRepopulationFocus !== "unset" || V.arcologies[0].FSGenderFundamentalist !== "unset")) {
+			V.FResult += 1;
+			if (slave.birthWeek === 0)
+				V.FResult += 0.5*V.FResult;
+			else if (slave.birthWeek < 4)
+				V.FResult += 0.1*V.FResult;
+		}
+	}
+	
+	function calcAmputation(slave) {
+		switch(slave.amp) {
+		case 0:
+			break;
+		case 1:
+			V.FResult -= 2;
+			break;
+		case -2:
+			break;
+		case -5:
+			break;
+		default:
+			V.FResult -= 1;
+		}
+	}
+	
+	function calcHedonismWeight(slave) {
+		if (slave.weight < 10)
+			V.FResult -= 2;
+		else if (slave.weight > 190)
+			V.FResult -= 5; // too fat
+	}
+	return FResult;
+})();
+
+/*:: RA JS [script]*/
+
+window.ruleApplied = function(slave, ID) {
+	if (!slave || !slave.currentRules)
+		return null;
+	return slave.currentRules.includes(ID);
+};
+
+window.ruleSlaveSelected = function(slave, rule) {
+	if (!slave || !rule || !rule.selectedSlaves)
+		return false;
+	return rule.selectedSlaves.includes(slave.ID);
+};
+
+window.ruleSlaveExcluded = function(slave, rule) {
+	if (!slave || !rule || !rule.excludedSlaves)
+		return false;
+	return rule.excludedSlaves.includes(slave.ID);
+};
+
+window.ruleAssignmentSelected = function(slave, rule) {
+	if (!slave || !rule || (!rule.assignment && !rule.facility))
+		return false;
+	var assignment = rule.assignment.concat(expandFacilityAssignments(rule.facility));
+	return assignment.includes(slave.assignment);
+}
+
+window.ruleAssignmentExcluded = function(slave, rule) {
+	if (!slave || !rule || (!rule.excludeAssignment && !rule.excludeFacility))
+		return false;
+	var excludeAssignment = rule.excludeAssignment.concat(expandFacilityAssignments(rule.excludeFacility));
+	return excludeAssignment.includes(slave.assignment);
+}
+
+window.hasSurgeryRule = function(slave, rules) {
+	if (!slave || !rules || !slave.currentRules)
+		return false;
+
+	for (var d = rules.length-1; d >= 0; d--) {
+		if (ruleApplied(slave, rules[d].ID)) {
+			if (rules[d].autoSurgery > 0) {
+				return true;
+			}
+		}
+	}
+	return false;
+};
+
+window.hasRuleFor = function(slave, rules, what) {
+	if (!slave || !rules || !slave.currentRules)
+		return false;
+
+	for (var d = rules.length-1; d >= 0; d--) {
+		if (ruleApplied(slave, rules[d].ID)) {
+			if (rules[d][what] !== "no default setting") {
+				return true;
+			}
+		}
+	}
+	return false;
+};
+
+window.hasHColorRule = function(slave, rules) {
+	return hasRuleFor(slave, rules, "hColor");
+}
+
+window.hasHStyleRule = function(slave, rules) {
+	return hasRuleFor(slave, rules, "hStyle");
+};
+
+window.hasEyeColorRule = function(slave, rules) {
+	return hasRuleFor(slave, rules, "eyeColor");
+};
+
+window.lastPregRule = function(slave, rules) {
+	if (!slave || !rules)
+		return null;
+	if (!slave.currentRules)
+		return false;
+
+	for (var d = rules.length-1; d >= 0; d--) {
+		if (ruleApplied(slave, rules[d].ID)) {
+			if (rules[d].preg == -1) {
+				return true;
+			}
+		}
+	}
+
+	return null;
+};
+
+window.autoSurgerySelector = function(slave, ruleset)
+{
+
+	var appRules = ruleset.filter(function(rule){
+			return (rule.autoSurgery == 1) && this.currentRules.contains(rule.ID);
+		}, slave);
+
+	var surgery = {eyes: "no default setting", lactation: "no default setting", cosmetic: "nds", accent: "no default setting", shoulders: "no default setting", shouldersImplant: "no default setting", boobs: "no default setting", hips: "no default setting", hipsImplant: "no default setting", butt: "no default setting", faceShape: "no default setting", lips: "no default setting", holes: "nds", bodyhair: "nds", hair: "nds", bellyImplant: "no default setting"};
+	var i, key, ruleSurgery;
+
+	for (i in appRules)
+	{
+		ruleSurgery = appRules[i].surgery;
+		for (key in ruleSurgery)
+		{
+			if (ruleSurgery[key] != "no default setting" || ruleSurgery[key] != "nds")
+			{	
+				surgery[key] = ruleSurgery[key];
+			}
+		}
+	}
+
+	return surgery;
+}
+
+window.mergeRules = function(rules) {
+    var combinedRule = {};
+
+    for (var i = 0; i < rules.length; i++) {
+        for (var prop in rules[i]) {
+            // A rule overrides any preceding ones if,
+            //   * there are no preceding ones,
+            //   * or it sets autoBrand,
+            //   * or it does not set autoBrand and is not "no default setting"
+            var applies = (
+                combinedRule[prop] === undefined
+                || (prop === "autoBrand" && rules[i][prop])
+                || (prop !== "autoBrand" && rules[i][prop] !== "no default setting")
+            );
+
+            if (applies)
+            {
+
+            	//Objects in JS in operations "=" pass by reference, so we need a completely new object to avoid messing up previous rules.
+            	if ("object" == typeof rules[i][prop] && "object" != typeof combinedRule[prop])
+            		combinedRule[prop] = new Object();
+
+            	//If we already have object - now we will process its properties, but object itself should be skipped.
+            	if ("object" != typeof combinedRule[prop])
+                	combinedRule[prop] = rules[i][prop];
+
+            	/*Some properties of rules now have second level properties. We need to check it, and change ones in combinedRule. (Good example - growth drugs. Breasts, butt, etc...) */
+            	if ( "object" == typeof rules[i][prop])
+    	        {
+	            	for (var subprop in rules[i][prop])
+    	        	{
+    	           		var subapplies = (
+            	    	combinedRule[prop][subprop] === undefined
+                			|| (rules[i][prop][subprop] !== "no default setting")
+	            		);
+
+		            	if (subapplies)
+    		            	combinedRule[prop][subprop] = rules[i][prop][subprop];
+    		        }
+
+            	}
+           	}
+
+        }
+
+    }
+
+    return combinedRule;
+}
+
 /*:: DTreeJS [script]*/
 /* This is the minified version of lodash, d3 and dTree */
 ;
@@ -8737,3 +9178,30 @@ window.simpleWorldEconomyCheck = function() {
 		return n2;
 	}
 }
+
+window.HSM = function() {
+	if (State.variables.PC.hacking <= -100)
+		return 1.5;
+	else if (State.variables.PC.hacking <= -75)
+		return 1.35;
+	else if (State.variables.PC.hacking <= -50)
+		return 1.25;
+	else if (State.variables.PC.hacking <= -25)
+		return 1.15;
+	else if (State.variables.PC.hacking < 0)
+		return 1.10;
+	else if (State.variables.PC.hacking === 0)
+		return 1;
+	else if (State.variables.PC.hacking <= 10)
+		return .97;
+	else if (State.variables.PC.hacking <= 25)
+		return .95;
+	else if (State.variables.PC.hacking <= 50)
+		return .90;
+	else if (State.variables.PC.hacking <= 75)
+		return .85;
+	else if (State.variables.PC.hacking < 100)
+		return .80;
+	else if (State.variables.PC.hacking >= 100)
+		return .75;
+	}
diff --git a/slave variables documentation - Pregmod.txt b/slave variables documentation - Pregmod.txt
index 0d62847e0ce38e8a577461d5819283423edecb02..a2a9fe3d4bcc83cfb241de6337679f1a2d701a29 100644
--- a/slave variables documentation - Pregmod.txt	
+++ b/slave variables documentation - Pregmod.txt	
@@ -1740,6 +1740,7 @@ diet:
 "XXY"
 "cum production"
 "cleansing"
+"fertility"
 
 dietCum:
 
diff --git a/src/SecExp/attackHandler.tw b/src/SecExp/attackHandler.tw
index 1b704c89678592bcc429672518e407844d211305..face384da5a8ba22da4fc1f79fe65047bfa739c2 100644
--- a/src/SecExp/attackHandler.tw
+++ b/src/SecExp/attackHandler.tw
@@ -469,7 +469,7 @@
 			<</if>>
 		<</for>>
 	<</if>>
-	/* 60% chance of getting combat skill if nto already have it */
+	/* 60% chance of getting combat skill if not already have it */
 	<<if $HeadGirl.combatSkill == 0 && random(1,100) <= 60>>
 		<<set $gainedCombat = 1>>
 		<<set $HeadGirl.combatSkill = 1>>
diff --git a/src/SecExp/attackOptions.tw b/src/SecExp/attackOptions.tw
index 71db9263e7eee3b0f49bf9e4d207497875395f27..e19c46956107af42b111d2bf40678ac9487bf889 100644
--- a/src/SecExp/attackOptions.tw
+++ b/src/SecExp/attackOptions.tw
@@ -171,7 +171,7 @@ approximately <strong><<print $estimatedMen>> men</strong> are coming, they seem
 <<if $expectedEquip <= 0>>
 	<strong>poorly armed</strong>. Old rusty small arms are the norm with just a few barely working civilian vehicles. 
 <<elseif $expectedEquip == 1>>
-	<strong>lightly armed</strong>. Mostly small arms with some repurposed civilian vehicles and a scattered few machine guns. There's no sign of heavy vehicles, artillery or aircrafts.
+	<strong>lightly armed</strong>. Mostly small arms with some repurposed civilian vehicles and a scattered few machine guns. There's no sign of heavy vehicles, artillery or aircraft.
 <<elseif $expectedEquip == 2>>
 	<strong>decently armed</strong>. Good quality small arms, machine guns a few mortars. There seems to be some heavy military vehicles coming as well.
 <<elseif $expectedEquip == 3>>
diff --git a/src/SecExp/authorityReport.tw b/src/SecExp/authorityReport.tw
index bd283d1389efd09e66ac828d2bc6b022936404b5..1ea3fff713b65f739d3c242fa07ef4c34b3df5f1 100644
--- a/src/SecExp/authorityReport.tw
+++ b/src/SecExp/authorityReport.tw
@@ -131,10 +131,10 @@
 <</if>>
 
 <<if $arcologies[0].FSNull >= 90>>
-	Cultural openess allows dangerous ideas to spread in your arcology, damaging your reputation.
+	Cultural openness allows dangerous ideas to spread in your arcology, damaging your reputation.
 	<<set _authGrowth -= $arcologies[0].FSNull>>
 <<elseif $arcologies[0].FSNull >= 50>>
-	Cultural openess allows dangerous ideas to spread in your arcology, damaging your reputation.
+	Cultural openness allows dangerous ideas to spread in your arcology, damaging your reputation.
 	<<set _authGrowth -= $arcologies[0].FSNull>>
 <</if>>
 
@@ -144,7 +144,7 @@
 <</if>>
 
 <<if $secretService >= 1>>
-	Your secret services constantly keep under surveillance any potential threat, intervenening when necessary. Rumors of the secretive security service and mysterious disappereances make your authority increase.
+	Your secret services constantly keep under surveillance any potential threat, intervening when necessary. Rumors of the secretive security service and mysterious disappearances make your authority increase.
 	<<set _authGrowth += 15 * $secretService>>
 <</if>>
 
diff --git a/src/SecExp/edicts.tw b/src/SecExp/edicts.tw
index 93b418a93303baa3005bbf872aa59f6675ffacc2..b62cabdc44a58e683527464c3b3c21acb9f23bb0 100644
--- a/src/SecExp/edicts.tw
+++ b/src/SecExp/edicts.tw
@@ -53,13 +53,13 @@
 		<br>''Personnel training:'' $securityForceName is currently providing advanced equipment and training to security HQ personnel.
 		[[Repeal|edicts][$SFSupportLevel--, $SFSupportUpkeep -= 2000, $reqHelots += 5]]
 	<<elseif $SFSupportLevel == 3>>
-		<br>''Troops detachment:'' $securityForceName has currently transfered troops to the security department HQ in addition to providing advanced equipment and training to security HQ personnel.
+		<br>''Troops detachment:'' $securityForceName has currently transferred troops to the security department HQ in addition to providing advanced equipment and training to security HQ personnel.
 		[[Repeal|edicts][$SFSupportLevel--, $SFSupportUpkeep -= 3000, $reqHelots += 5]]
 	<<elseif $SFSupportLevel == 4>>
 		<br>''Full support:''$securityForceName is currently providing it's full support to the security department, while transferring troops to the security department HQ in addition to providing advanced equipment and training to security HQ personnel.
 		[[Repeal|edicts][$SFSupportLevel--, $SFSupportUpkeep -= 3000, $reqHelots += 5]]
 	<<elseif $SFSupportLevel == 5>>
-		<br>''Network assistance:''$securityForceName is currently assisting with a local install of it's custom network full support and has transfered troops to the security department HQ in addition to providing advanced equipment and training to security HQ personnel.
+		<br>''Network assistance:''$securityForceName is currently assisting with a local install of it's custom network full support and has transferred troops to the security department HQ in addition to providing advanced equipment and training to security HQ personnel.
 		[[Repeal|edicts][$SFSupportLevel--, $SFSupportUpkeep -= 4000, $secHQUpkeep -= 1000, $reqHelots += 5]]
 	<</if>>
 <</if>>
@@ -147,7 +147,7 @@
 		<</if>>
 			
 		<<if $pregExemption == 1>>
-			<br>''@@.lime;Military exemption for pregnancys:@@'' pregnant citizens are allowed, and encouraged, to avoid military service.
+			<br>''@@.lime;Military exemption for pregnancies:@@'' pregnant citizens are allowed, and encouraged, to avoid military service.
 			[[Repeal|edicts][$pregExemption = 0]]
 		<</if>>
 	<</if>>
@@ -508,7 +508,7 @@
 			<<else>>
 				<br>//Not enough Authority.//
 			<</if>>
-			<br>&nbsp;&nbsp;&nbsp;&nbsp;//Will replenish militia manpower moderatly fast and will cap at 5% of the total citizens population, but has a high authority cost//
+			<br>&nbsp;&nbsp;&nbsp;&nbsp;//Will replenish militia manpower moderately fast and will cap at 5% of the total citizens population, but has a high authority cost//
 		<</if>>
 		<<if $militaryService == 0>>
 			<br>''Obligatory military service:'' every citizen is required to register and serve under the militia.
@@ -565,7 +565,7 @@
 			
 		<<if $arcologies[0].FSRepopulationFocus >= 40 && ($conscription == 1 || $militaryService == 1 || $militarizedSociety == 1)>>
 		<<if $pregExemption == 0>>
-			<br>''@@.lime;Military exemption for pregnancys:@@'' pregnant citizens will be allowed, and encouraged, to avoid military service.
+			<br>''@@.lime;Military exemption for pregnancies:@@'' pregnant citizens will be allowed, and encouraged, to avoid military service.
 			<<if $authority >= 1000>>
 				[[Implement|edicts][$pregExemption = 1, $cash -=5000, $authority -= 1000]]
 			<<else>>
@@ -707,7 +707,7 @@
 
 	<<if $arcologies[0].FSChineseRevivalist >= 40>>
 		<<if $sunTzu == 0>>
-			<br>''@@.lime;Sun Tzu Teachings:@@'' Fund specialized training for your units and officers to comform your army to the teachings of the "Art of War".
+			<br>''@@.lime;Sun Tzu Teachings:@@'' Fund specialized training for your units and officers to conform your army to the teachings of the "Art of War".
 			<<if $authority >= 1000>>
 				[[Implement|edicts][$sunTzu = 1, $cash -=5000, $authority -= 1000, $militiaBaseAttack++, $militiaBaseDefense++, $mercBaseAttack++, $mercBaseDefense++, $slaveBaseAttack++, $slaveBaseDefense++, $militiaBaseMorale += 5, $mercBaseMorale += 5, $slaveBaseMorale += 5, $edictsUpkeep += 1000]]
 			<<else>>
diff --git a/src/SecExp/encyclopediaSecExpBattles.tw b/src/SecExp/encyclopediaSecExpBattles.tw
index 24b11e24b18d667ade14484b04cfaef84135d10e..b8714fe1fe9d665f33c2d33cd8f5a73de87e004f 100644
--- a/src/SecExp/encyclopediaSecExpBattles.tw
+++ b/src/SecExp/encyclopediaSecExpBattles.tw
@@ -18,7 +18,7 @@ One garrisoned by the mercenary platoon,more mercenaries will slowly make their
 Security drones do not accumulate experience and are not affected by morale modifiers (for better or worse).
 <br>
 <br>Units statistics:
-<br><strong>Troops</strong>: The number of active combatants the unit can field. If it reaches zero the unit will cease to be considered active. It may be reformed as a new unit without loosing the upgrades given to it, but experience is lost.
+<br><strong>Troops</strong>: The number of active combatants the unit can field. If it reaches zero the unit will cease to be considered active. It may be reformed as a new unit without losing the upgrades given to it, but experience is lost.
 <br><strong>Maximum Troops</strong>: The maximum number of combatants the unit can field. You can increase this number through upgrade.
 <br><strong>Equipment</strong>: The quality of equipment given to the unit. Each level of equipment will increase attack and defense values of the unit by 15%.
 <br><strong>Experience</strong>: The quality of training provide/acquired in battle by the unit. Experience is a 0-100 scale with increasingly high bonuses to attack, defense and morale of the unit, to a maximum of 50% at 100 experience.
diff --git a/src/SecExp/propagandaHub.tw b/src/SecExp/propagandaHub.tw
index 831964839f9e3126170032f63d7ef2f9bd6c38e9..474231ed311abbcf14292acd89d66ca2b0a8b272 100644
--- a/src/SecExp/propagandaHub.tw
+++ b/src/SecExp/propagandaHub.tw
@@ -1,6 +1,6 @@
 :: propagandaHub [nobr]
 
-<<HSM>>
+<<set $HackingSkillMultiplier = HSM()>>
 <<if $career == "capitalist" || $career == "celebrity" || $career == "wealth">>
 	<<set _HistoryDiscount = .5>>
 <<else>>
diff --git a/src/SecExp/riotControlCenter.tw b/src/SecExp/riotControlCenter.tw
index eba811b40b1e0abffe72520c4cf27049089cc9ed..f342a3c03a1ad2a542d9fbf399995f596c859cb5 100644
--- a/src/SecExp/riotControlCenter.tw
+++ b/src/SecExp/riotControlCenter.tw
@@ -1,6 +1,6 @@
 :: riotControlCenter [nobr]
 
-<<HSM>>
+<<set $HackingSkillMultiplier = HSM()>>
 <<set $nextButton = "Back to Arcology Management", $nextLink = "Manage Arcology", $returnTo = "Manage Arcology">>
 
 Riot Control Center
diff --git a/src/SecExp/secExpSmilingMan.tw b/src/SecExp/secExpSmilingMan.tw
index 2c1f34985eb8e05c2b40266cc9ea7d31c650f31b..dd834ebf43c7015e7b3323aa748fbc2a4336d52f 100644
--- a/src/SecExp/secExpSmilingMan.tw
+++ b/src/SecExp/secExpSmilingMan.tw
@@ -186,7 +186,7 @@
 					<</if>>
 				<</if>>
 			<</for>>
-			Vast amount of data relative to the ownership of the arcology is lost. You would've run the risk of loosing ownership of one of the sectors, but fortunately your authority is so high your citizens do not dare question your claims even in the absence of a valid legal case.
+			Vast amount of data relative to the ownership of the arcology is lost. You would've run the risk of losing ownership of one of the sectors, but fortunately your authority is so high your citizens do not dare question your claims even in the absence of a valid legal case.
 		<</if>>
 	<</if>>
 	<<if $secUpgrades.coldstorage > 3>>
diff --git a/src/SecExp/securityHQ.tw b/src/SecExp/securityHQ.tw
index a69371aa2345e47d93ac90045f117a5c24131b1c..5a8f3bdbe3608953c45d1240bf50be7bae2a525e 100644
--- a/src/SecExp/securityHQ.tw
+++ b/src/SecExp/securityHQ.tw
@@ -1,6 +1,6 @@
 :: securityHQ [nobr]
 
-<<HSM>>
+<<set $HackingSkillMultiplier = HSM()>>
 <<if $career == "mercenary" || $career == "gang" || $career == "slaver">>
 	<<set _HistoryDiscount = .5>>
 <<else>>
diff --git a/src/SecExp/weaponsManufacturing.tw b/src/SecExp/weaponsManufacturing.tw
index 2d9e4321ab66a098043d684ea4860a07ed4869fa..9a73e7c277e5842e750d992d104b2a811bc493c2 100644
--- a/src/SecExp/weaponsManufacturing.tw
+++ b/src/SecExp/weaponsManufacturing.tw
@@ -1,6 +1,6 @@
 :: weaponsManufacturing [nobr]
 
-<<HSM>>
+<<set $HackingSkillMultiplier = HSM()>>
 <<set $nextButton = "Back", $nextLink = "Main">>
 
 This sector of the arcology has been dedicated to weapons manufacturing. These factories supply
diff --git a/src/art/artWidgets.tw b/src/art/artWidgets.tw
index 0f2a9c7d279c93fc3333260745b2c6f46411d808..17063ece72cd6d49f9141ad7f3bde0b9381cfb73 100644
--- a/src/art/artWidgets.tw
+++ b/src/art/artWidgets.tw
@@ -406,7 +406,7 @@ vector art added later is drawn over previously added art
 <</if>>
 
 /% Boob %/
-<<if $args[0].boobs < 250>>
+<<if $args[0].boobs < 300>>
 	<<set _boobSize = 0>>
 <<elseif $args[0].boobs < 500>>
 	<<set _boobSize = 1>>
diff --git a/src/cheats/PCCheatMenu.tw b/src/cheats/PCCheatMenu.tw
index 951bcacd79954065453659e28e45aaad5cb66e1e..9ddb37b75d8295c2843499cd4003f406faa858ab 100644
--- a/src/cheats/PCCheatMenu.tw
+++ b/src/cheats/PCCheatMenu.tw
@@ -2,7 +2,40 @@
 
 <<set $showEncyclopedia = 0, $nextButton = "Back", $nextLink = "PCCheatMenuCheatDatatypeCleanup">>
 
+<<if $PC.title > 0>>
+	''Master''.
+	[[Switch to Mistress|PCCheatMenu][$PC.title = 0]]
+<<else>>
+	''Mistress''.
+	[[Switch to Master|PCCheatMenu][$PC.title = 1]]
+<</if>>
+
+<br>Nationality: ''$PC.nationality''.<<textbox "$PC.nationality" $PC.nationality "PCCheatMenu">>
+
+<br>Career: ''$PC.career''.
+	[[Wealth|PCCheatMenu][$PC.career = "wealth"]] |
+	[[Business|PCCheatMenu][$PC.career = "capitalist"]] |
+	[[PMC work|PCCheatMenu][$PC.career = "mercenary"]] |
+	[[Slaving|PCCheatMenu][$PC.career = "slaver"]] |
+	[[Engineering|PCCheatMenu][$PC.career = "engineer"]] |
+	[[Medicine|PCCheatMenu][$PC.career = "medicine"]] |
+	[[Celebrity|PCCheatMenu][$PC.career = "celebrity"]]
+
+<br>Method of acquiring the arcology: ''$PC.rumor''.
+	[[Wealth|PCCheatMenu][$PC.rumor = "wealth"]] |
+	[[Hard work|PCCheatMenu][$PC.rumor = "diligence"]] |
+	[[Force|PCCheatMenu][$PC.rumor = "force"]] |
+	[[Social engineering|PCCheatMenu][$PC.rumor = "social engineering"]] |
+	[[Luck|PCCheatMenu][$PC.rumor = "luck"]]
+
+<br>Preferred refreshment: <<textbox "$PC.refreshment" $PC.refreshment "PCCheatMenu">> [[Cigars|PCCheatMenu][$PC.refreshment = "cigar",$PC.refreshmentType = 0]] | [[Whiskey|PCCheatMenu][$PC.refreshment = "whiskey",$PC.refreshmentType = 1]]
+<br>Preferred method of consumption: <<if $PC.refreshmentType == 0>>Smoked<<elseif $PC.refreshmentType == 1>>Drank<<elseif $PC.refreshmentType == 2>>Eaten<<elseif $PC.refreshmentType == 3>>Snorted<<elseif $PC.refreshmentType == 4>>Injected<<elseif $PC.refreshmentType == 5>>Popped<<else>>Orally Dissolved<</if>>
+<br>[[Smoked|PCCheatMenu][$PC.refreshmentType = 0]] | [[Drank|PCCheatMenu][$PC.refreshmentType = 1]] | [[Eaten|PCCheatMenu][$PC.refreshmentType = 2]] | [[Snorted|PCCheatMenu][$PC.refreshmentType = 3]] | [[Injected|PCCheatMenu][$PC.refreshmentType = 4]] | [[Popped|PCCheatMenu][$PC.refreshmentType = 5]] | [[Orally Dissolved|PCCheatMenu][$PC.refreshmentType = 6]]
+
+''Name'': <<textbox "$PC.name" $PC.name "PCCheatMenu">>
 ''Surname'': <<textbox "$PC.surname" $PC.surname "PCCheatMenu">>
+''Custom title'': <<textbox "$PC.customTitle" $PC.customTitle "PCCheatMenu">>
+
 <br>''Boobs'': <<textbox "$PC.boobs" $PC.boobs "PCCheatMenu">> //0 - masculine chest (if title = 1) or flat chested (if title = 0)(WIP) 1 - feminine bust//
 <<if $PC.boobs > 0>>
 	<br>''BoobsBonus'': <<textbox "$PC.boobsBonus" $PC.boobsBonus "PCCheatMenu">> //breast size -1   - C-cup -0.5 - D-cup 0   - DD-cup 1   - F-cup 2   - G-cup 3   - H-cup//
@@ -44,3 +77,231 @@
 	<</if>>
 	<br>''PregMood'': <<textbox "$PC.pregMood" $PC.pregMood "PCCheatMenu">> //how you act when heavily pregnant. 0: no change 1: submissive and motherly 2: aggressive and dominant//
 <</if>>
+
+<br><br>''Skills:''
+<br>Trading:
+''<<if $PC.trading >= 100>>
+	You are a master at economics and trading.
+<<elseif $PC.trading >= 80>>
+	You are an expert at economics and trading.
+<<elseif $PC.trading >= 60>>
+	You are skilled in economics and trading.
+<<elseif $PC.trading >= 40>>
+	You know some things about economics and trading.
+<<elseif $PC.trading >= 20>>
+	You are a beginner in economics.
+<<elseif $PC.trading >= 0>>
+	You know only the basics of trading.
+<<elseif $PC.trading >= -20>>
+	You know how to haggle a little.
+<<elseif $PC.trading >= -40>>
+	You know how to shop around.
+<<elseif $PC.trading >= -60>>
+	You know not to pay sticker price.
+<<elseif $PC.trading >= -80>>
+	People always give you discounts, but you never save any money.
+<<else>>
+	They said it was a bear market, so where are the bears?
+<</if>>''
+<br>
+<<radiobutton "$PC.trading" 100>> Economics master
+| <<radiobutton "$PC.trading" 90>> Economics expert
+| <<radiobutton "$PC.trading" 70>> Skilled in economics
+| <<radiobutton "$PC.trading" 50>> Amateur economist
+| <<radiobutton "$PC.trading" 30>> Economics beginner
+| <<radiobutton "$PC.trading" 0>> Basic trader
+| <<radiobutton "$PC.trading" -10>> Haggler
+| <<radiobutton "$PC.trading" -30>> Shopper
+| <<radiobutton "$PC.trading" -50>> Weak saver
+| <<radiobutton "$PC.trading" -70>> Money sieve
+| <<radiobutton "$PC.trading" -90>> What's a trading?
+
+<br>Warfare:
+''<<if $PC.warfare >= 100>>
+	You are a master of warfare.
+<<elseif $PC.warfare >= 80>>
+	You are an expert at tactics and strategy.
+<<elseif $PC.warfare >= 60>>
+	You are skilled in combat.
+<<elseif $PC.warfare >= 40>>
+	You know some things about combat.
+<<elseif $PC.warfare >= 20>>
+	You are a beginner in tactics and strategy.
+<<elseif $PC.warfare >= 0>>
+	You know only the basics of fighting.
+<<elseif $PC.warfare >= -20>>
+	You know how to hold a gun.
+<<elseif $PC.warfare >= -40>>
+	You know how to stab with a knife.
+<<elseif $PC.warfare >= -60>>
+	Go for the throat?
+<<elseif $PC.warfare >= -80>>
+	Just kick them in the balls, right?
+<<else>>
+	People like you are usually the first raped in a war.
+<</if>>''
+<br>
+<<radiobutton "$PC.warfare" 100>> Warfare master
+| <<radiobutton "$PC.warfare" 90>> Warfare expert
+| <<radiobutton "$PC.warfare" 70>> Skilled in warfare
+| <<radiobutton "$PC.warfare" 50>> Amateur combatant
+| <<radiobutton "$PC.warfare" 30>> Combat beginner
+| <<radiobutton "$PC.warfare" 0>> Basic fighter
+| <<radiobutton "$PC.warfare" -10>> Gun haver
+| <<radiobutton "$PC.warfare" -30>> Knife holder
+| <<radiobutton "$PC.warfare" -50>> Throat puncher
+| <<radiobutton "$PC.warfare" -70>> Groin kicker?
+| <<radiobutton "$PC.warfare" -90>> Most likely to be raped
+
+<br>Slaving:
+''<<if $PC.slaving >= 100>>
+	You are a master slaver.
+<<elseif $PC.slaving >= 80>>
+	You are an expert at enslaving.
+<<elseif $PC.slaving >= 60>>
+	You are skilled in slaving.
+<<elseif $PC.slaving >= 40>>
+	You know some things about getting slaves.
+<<elseif $PC.slaving >= 20>>
+	You are a beginner in slaving.
+<<elseif $PC.slaving >= 0>>
+	You know only the basics of slaving.
+<<elseif $PC.slaving >= -20>>
+	You know how to avoid becoming a slave.
+<<elseif $PC.slaving >= -40>>
+	You know to read contracts before you sign them.
+<<elseif $PC.slaving >= -60>>
+	You know to be careful.
+<<elseif $PC.slaving >= -80>>
+	You know better than to trust anyone.
+<<else>>
+	It would be easy to enslave you.
+<</if>>''
+<br>
+<<radiobutton "$PC.slaving" 100>> Master slaver
+| <<radiobutton "$PC.slaving" 90>> Expert slaver
+| <<radiobutton "$PC.slaving" 70>> Skilled in slaving
+| <<radiobutton "$PC.slaving" 50>> Amateur slaver
+| <<radiobutton "$PC.slaving" 30>> Slaving beginner
+| <<radiobutton "$PC.slaving" 0>> Basic slaver
+| <<radiobutton "$PC.slaving" -10>> Can't make me a slave
+| <<radiobutton "$PC.slaving" -30>> Can read contracts
+| <<radiobutton "$PC.slaving" -50>> Careful now
+| <<radiobutton "$PC.slaving" -70>> Don't trust that guy
+| <<radiobutton "$PC.slaving" -90>> Potential slave
+
+<br>Engineering:
+''<<if $PC.engineering >= 100>>
+	You are a master engineer.
+<<elseif $PC.engineering >= 80>>
+	You are an expert at engineering.
+<<elseif $PC.engineering >= 60>>
+	You are skilled in engineering.
+<<elseif $PC.engineering >= 40>>
+	You know some things about engineering.
+<<elseif $PC.engineering >= 20>>
+	You are a beginner in engineering.
+<<elseif $PC.engineering >= 0>>
+	You know only the basics of engineering.
+<<elseif $PC.engineering >= -20>>
+	You can build a gingerbread house that doesn't collapse.
+<<elseif $PC.engineering >= -40>>
+	You can tie a tight knot, does that count?
+<<elseif $PC.engineering >= -60>>
+	Glue is your friend; lots of it.
+<<elseif $PC.engineering >= -80>>
+	You know better than to even try to build something.
+<<else>>
+	You can cook; that's sort of like building something, right?
+<</if>>''
+<br>
+<<radiobutton "$PC.engineering" 100>> Master engineer
+| <<radiobutton "$PC.engineering" 90>> Expert engineer
+| <<radiobutton "$PC.engineering" 70>> Skilled in engineering
+| <<radiobutton "$PC.engineering" 50>> Amateur engineer
+| <<radiobutton "$PC.engineering" 30>> Engineering beginner
+| <<radiobutton "$PC.engineering" 0>> Basic engineer
+| <<radiobutton "$PC.engineering" -10>> Gingerbread house
+| <<radiobutton "$PC.engineering" -30>> Knot tyer
+| <<radiobutton "$PC.engineering" -50>> You can use glue
+| <<radiobutton "$PC.engineering" -70>> You aren't handy
+| <<radiobutton "$PC.engineering" -90>> My hovercraft is full of eels
+
+<br>Medicine:
+''<<if $PC.medicine >= 100>>
+	You are a master surgeon.
+<<elseif $PC.medicine >= 80>>
+	You are an expert at medicine and surgery.
+<<elseif $PC.medicine >= 60>>
+	You are skilled in surgery.
+<<elseif $PC.medicine >= 40>>
+	You know some things about medicine.
+<<elseif $PC.medicine >= 20>>
+	You are a beginner in medicine.
+<<elseif $PC.medicine >= 0>>
+	You know the basics of treating injuries.
+<<elseif $PC.medicine >= -20>>
+	You can stop a wound from getting infected.
+<<elseif $PC.medicine >= -40>>
+	Gauze is your friend. Just keep wrapping.
+<<elseif $PC.medicine >= -60>>
+	You know how to apply a bandaid.
+<<elseif $PC.medicine >= -80>>
+	Cure-alls are wonderful. Why aren't they sold in stores, though?
+<<else>>
+	Alcohol makes pain go away, right?
+<</if>>''
+<br>
+<<radiobutton "$PC.medicine" 100>> Master surgeon
+| <<radiobutton "$PC.medicine" 90>> Expert surgeon
+| <<radiobutton "$PC.medicine" 70>> Skilled in medicine
+| <<radiobutton "$PC.medicine" 50>> Amateur surgeon
+| <<radiobutton "$PC.medicine" 30>> Medical beginner
+| <<radiobutton "$PC.medicine" 0>> Basic medic
+| <<radiobutton "$PC.medicine" -10>> Can treat wounds
+| <<radiobutton "$PC.medicine" -30>> First-aid kit user
+| <<radiobutton "$PC.medicine" -50>> Band-aid applyer
+| <<radiobutton "$PC.medicine" -70>> MEDIC!
+| <<radiobutton "$PC.medicine" -90>> Give me another beer
+
+<br>Hacking:
+''<<if $PC.hacking >= 100>>
+	You are a master of hacking.
+<<elseif $PC.hacking >= 80>>
+	You are an expert at hacking.
+<<elseif $PC.hacking >= 60>>
+	You are skilled in hacking.
+<<elseif $PC.hacking >= 40>>
+	You know some things about hacking.
+<<elseif $PC.hacking >= 20>>
+	You are a beginner in hacking.
+<<elseif $PC.hacking >= 0>>
+	You know only the basics of hacking.
+<<elseif $PC.hacking >= -20>>
+	You know how to click a mouse.
+<<elseif $PC.hacking >= -40>>
+	Enter does something?
+<<elseif $PC.hacking >= -60>>
+	Where is the "any" key?
+<<elseif $PC.hacking >= -80>>
+	You can push the power button, good job.
+<<else>>
+	This black box thingy is magical.
+<</if>>''
+<br>
+<<radiobutton "$PC.hacking" 100>> Master hacker
+| <<radiobutton "$PC.hacking" 90>> Expert hacker
+| <<radiobutton "$PC.hacking" 70>> Skilled hacker
+| <<radiobutton "$PC.hacking" 50>> Amateur hacker
+| <<radiobutton "$PC.hacking" 30>> Hacking beginner
+| <<radiobutton "$PC.hacking" 0>> Basic hacker
+| <<radiobutton "$PC.hacking" -10>> Mouse clicker
+| <<radiobutton "$PC.hacking" -30>> You can press Enter
+| <<radiobutton "$PC.hacking" -50>> Where's the "any" key?
+| <<radiobutton "$PC.hacking" -70>> Main screen turn on?
+| <<radiobutton "$PC.hacking" -90>> Ooh, cool glowy thingy!
+
+<br>Your mother ID:
+<<textbox "$PC.mother" $PC.mother "PCCheatMenu">>
+<br>Your father ID:
+<<textbox "$PC.father" $PC.father "PCCheatMenu">>
\ No newline at end of file
diff --git a/src/cheats/mod_EditArcologyCheat.tw b/src/cheats/mod_EditArcologyCheat.tw
index 56933e38cabc2ef84db48aaf57717eb3c4fd4bb5..ab1ed6b4dee335032149bb09fbee1a1d62a4313b 100644
--- a/src/cheats/mod_EditArcologyCheat.tw
+++ b/src/cheats/mod_EditArcologyCheat.tw
@@ -175,111 +175,6 @@ be mentioned.
 <</if>>
 <</nobr>>*/
 
-__Player Character__
-<br>Conversational title:
-<<if $PC.title > 0>>
-	''Master''.
-	[[Switch to Mistress|MOD_Edit Arcology Cheat][$PC.title = 0]]
-<<else>>
-	''Mistress''.
-	[[Switch to Master|MOD_Edit Arcology Cheat][$PC.title = 1]]
-<</if>>
-
-<br>Career: ''$PC.career''.
-	[[Wealth|MOD_Edit Arcology Cheat][$PC.career = "wealth"]] |
-	[[Business|MOD_Edit Arcology Cheat][$PC.career = "capitalist"]] |
-	[[PMC work|MOD_Edit Arcology Cheat][$PC.career = "mercenary"]] |
-	[[Slaving|MOD_Edit Arcology Cheat][$PC.career = "slaver"]] |
-	[[Engineering|MOD_Edit Arcology Cheat][$PC.career = "engineer"]] |
-	[[Medicine|MOD_Edit Arcology Cheat][$PC.career = "medicine"]] |
-	[[Celebrity|MOD_Edit Arcology Cheat][$PC.career = "celebrity"]]
-
-<br>Method of acquiring the arcology: ''$PC.rumor''.
-	[[Wealth|MOD_Edit Arcology Cheat][$PC.rumor = "wealth"]] |
-	[[Hard work|MOD_Edit Arcology Cheat][$PC.rumor = "diligence"]] |
-	[[Force|MOD_Edit Arcology Cheat][$PC.rumor = "force"]] |
-	[[Social engineering|MOD_Edit Arcology Cheat][$PC.rumor = "social engineering"]] |
-	[[Luck|MOD_Edit Arcology Cheat][$PC.rumor = "luck"]]
-
-<br>Genitalia:
-<<if $PC.dick > 0>>
-	''penis''. Standard sex scenes; easier reputation maintenance.
-	[[Switch to vagina|MOD_Edit Arcology Cheat][$PC.dick = 0]]
-<<else>>
-	''vagina''. Sex scene variations; more difficult reputation maintenance.
-	[[Switch to penis|MOD_Edit Arcology Cheat][$PC.dick = 1]]
-<</if>>
-
-<br>Chest:
-<<if $PC.boobs > 0>>
-	''breasts''. Sex scene variations; more difficult reputation maintenance.
-	[[Remove breasts|MOD_Edit Arcology Cheat][$PC.boobs = 0]]
-<<else>>
-	''masculine''. Standard sex scenes; easier reputation maintenance.
-	[[Add breasts|MOD_Edit Arcology Cheat][$PC.boobs = 1]]
-<</if>>
-
-<br>Age:
-<<if $PC.actualAge >= 65>>
-	''old''.
-<<elseif $PC.actualAge >= 50>>
-	''well into middle age''.
-<<elseif $PC.actualAge >= 35>>
-	''entering middle age''.
-<<else>>
-	''surprisingly young''.
-<</if>>
-<<textbox "$PC.actualAge" $PC.actualAge "MOD_Edit Arcology Cheat">>
-<<set $PC.physicalAge = $PC.actualAge, $PC.visualAge = $PC.actualAge>>
-<br>
-<<if $playerAging == 2>>
-	You will ''age naturally.''
-	[[Disable aging|MOD_Edit Arcology Cheat][$playerAging = 0]] |
-	[[Semi aging|MOD_Edit Arcology Cheat][$playerAging = 1]]
-<<elseif $playerAging == 1>>
-	You ''will'' celebrate birthdays, but ''not age.''
-	[[Enable aging fully|MOD_Edit Arcology Cheat][$playerAging = 2]] |
-	[[Disable aging|MOD_Edit Arcology Cheat][$playerAging = 0]]
-<<else>>
-	You will ''not age,'' and not experience birthdays.
-	[[Enable aging|MOD_Edit Arcology Cheat][$playerAging = 2]] |
-	[[Semi aging|MOD_Edit Arcology Cheat][$playerAging = 1]]
-<</if>>
-//This option cannot be changed during the game//
-<br>Rename your character: (given name) <<textbox "$PC.name" $PC.name "MOD_Edit Arcology Cheat">> (surname) <<textbox "$PC.surname" $PC.surname "MOD_Edit Arcology Cheat">>
-<br>Nationality: ''$PC.nationality''.<<textbox "$PC.nationality" $PC.nationality "MOD_Edit Arcology Cheat">>
-<br>Race: ''$PC.race''.
-	[[White|MOD_Edit Arcology Cheat][$PC.race = "white"]] |
-	[[Asian|MOD_Edit Arcology Cheat][$PC.race = "asian"]] |
-	[[Latina|MOD_Edit Arcology Cheat][$PC.race = "latina"]] |
-	[[Middle Eastern|MOD_Edit Arcology Cheat][$PC.race = "middle eastern"]] |
-	[[Black|MOD_Edit Arcology Cheat][$PC.race = "black"]] |
-	[[Semitic|MOD_Edit Arcology Cheat][$PC.race = "semitic"]] |
-	[[Southern European|MOD_Edit Arcology Cheat][$PC.race = "southern european"]] |
-	[[Indo-aryan|MOD_Edit Arcology Cheat][$PC.race = "indo-aryan"]] |
-	[[Amerindian|MOD_Edit Arcology Cheat][$PC.race = "amerindien"]] |
-	[[Pacific Islander|MOD_Edit Arcology Cheat][$PC.race = "pacific islander"]] |
-	[[Malay|MOD_Edit Arcology Cheat][$PC.race = "malay"]] |
-	[[Mixed Race|MOD_Edit Arcology Cheat][$PC.race = "mixed race"]]
-<br>Skin: ''$PC.skin''.
-	[[White|MOD_Edit Arcology Cheat][$PC.skin = "white"]] |
-	[[Fair|MOD_Edit Arcology Cheat][$PC.skin = "fair"]] |
-	[[Light|MOD_Edit Arcology Cheat][$PC.skin = "light"]] |
-	[[Dark|MOD_Edit Arcology Cheat][$PC.skin = "dark"]] |
-	[[Olive|MOD_Edit Arcology Cheat][$PC.skin = "olive"]] |
-	[[Black|MOD_Edit Arcology Cheat][$PC.skin = "black"]] |
-	[[Light Brown|MOD_Edit Arcology Cheat][$PC.skin = "light brown"]] |
-	[[Brown|MOD_Edit Arcology Cheat][$PC.skin = "brown"]] |
-	[[Pale|MOD_Edit Arcology Cheat][$PC.skin = "pale"]] |
-	[[Extremely Pale|MOD_Edit Arcology Cheat][$PC.skin = "extremely pale"]]
-<br>Eye color: ''$PC.eyeColor''.
-<<textbox "$PC.eyeColor" $PC.eyeColor "MOD_Edit Arcology Cheat">>
-<br>Hair color: ''$PC.hColor''.
-<<textbox "$PC.hColor" $PC.hColor "MOD_Edit Arcology Cheat">>
-<br>Preferred refreshment: <<textbox "$PC.refreshment" $PC.refreshment "MOD_Edit Arcology Cheat">> [[Cigars|MOD_Edit Arcology Cheat][$PC.refreshment = "cigar",$PC.refreshmentType = 0]] | [[Whiskey|MOD_Edit Arcology Cheat][$PC.refreshment = "whiskey",$PC.refreshmentType = 1]]
-<br>Preferred method of consumption: <<if $PC.refreshmentType == 0>>Smoked<<elseif $PC.refreshmentType == 1>>Drank<<elseif $PC.refreshmentType == 2>>Eaten<<elseif $PC.refreshmentType == 3>>Snorted<<elseif $PC.refreshmentType == 4>>Injected<<elseif $PC.refreshmentType == 5>>Popped<<else>>Orally Dissolved<</if>>
-<br>[[Smoked|MOD_Edit Arcology Cheat][$PC.refreshmentType = 0]] | [[Drank|MOD_Edit Arcology Cheat][$PC.refreshmentType = 1]] | [[Eaten|MOD_Edit Arcology Cheat][$PC.refreshmentType = 2]] | [[Snorted|MOD_Edit Arcology Cheat][$PC.refreshmentType = 3]] | [[Injected|MOD_Edit Arcology Cheat][$PC.refreshmentType = 4]] | [[Popped|MOD_Edit Arcology Cheat][$PC.refreshmentType = 5]] | [[Orally Dissolved|MOD_Edit Arcology Cheat][$PC.refreshmentType = 6]]
-
 <br><br>Arcology citizens: $ACitizens
 <<textbox "$ACitizens" $ACitizens>>
 <br>Arcology sex slaves: $ASlaves
diff --git a/src/cheats/mod_EditSlaveCheatDatatypeCleanupNew.tw b/src/cheats/mod_EditSlaveCheatDatatypeCleanupNew.tw
index 2cc4866ed34f0522fb4f756429cd4a1ae6f0b934..2bb08c572ba9ff4dc492d52c3696ffa77f3401ac 100644
--- a/src/cheats/mod_EditSlaveCheatDatatypeCleanupNew.tw
+++ b/src/cheats/mod_EditSlaveCheatDatatypeCleanupNew.tw
@@ -71,6 +71,8 @@
 <<set $tempSlave.pregSource = Number($tempSlave.pregSource) || 0>>
 <<if $tempSlave.preg < 0>>
     <<set $tempSlave.pregKnown = 0>>
+<<elseif $tempSlave.preg > 0>>
+    <<set $tempSlave.pregKnown = 1>>
 <</if>>
 <<set $tempSlave.dick = Number($tempSlave.dick) || 0>>
 <<set $tempSlave.clit = Number($tempSlave.clit) || 0>>
diff --git a/src/cheats/mod_editSlaveCheatNew.tw b/src/cheats/mod_editSlaveCheatNew.tw
index 76105b5f5248b929736e897466927be4f17202a9..426b3af506b0db55e218639ba81027a2b108e16c 100644
--- a/src/cheats/mod_editSlaveCheatNew.tw
+++ b/src/cheats/mod_editSlaveCheatNew.tw
@@ -558,20 +558,48 @@
 				<br>North America<br>
 				<<NOptions "American" >>
 				<<print " | ">>
+				<<NOptions "Bahamian" >>
+				<<print " | ">>
+				<<NOptions "Barbadian" >>
+				<<print " | ">>
+				<<NOptions "Belizean" >>
+				<<print " | ">> 
+				<<NOptions "Bermudian" >>
+				<<print " | ">> 
 				<<NOptions "Canadian" >>
 				<<print " | ">>
+				<<NOptions "Costa Rican" >>
+				<<print " | ">> 
 				<<NOptions "Cuban" >>
 				<<print " | ">>
 				<<NOptions "Dominican" >>
 				<<print " | ">>
+				<<NOptions "Dominiquais" >>
+				<br>
+				<<NOptions "Greenlandic" >>
+				<<print " | ">>
+				<<NOptions "Grenadian" >>
+				<<print " | ">>
+				<<NOptions "Guatemalan" >>
+				<<print " | ">> 
 				<<NOptions "Haitian" >>
 				<<print " | ">>
+				<<NOptions "Honduran" >>
+				<<print " | ">>
 				<<NOptions "Jamaican" >>
 				<<print " | ">>
 				<<NOptions "Mexican" >>
 				<<print " | ">>
+				<<NOptions "Nicaraguan" >>
+				<<print " | ">>
+				<<NOptions "Panamanian" >>
+				<<print " | ">>
 				<<NOptions "Puerto Rican" >>
 				<br>
+				<<NOptions "Salvadoran" >>
+				<<print " | ">>
+				<<NOptions "Trinidadian" >>
+				<br>
 
 				<br>South America<br>
 				<<NOptions "Argentinian" >>
@@ -584,22 +612,46 @@
 				<<print " | ">>
 				<<NOptions "Colombian" >>
 				<<print " | ">>
-				<<NOptions "Guatemalan" >>
-				<<print " | ">>
+				<<NOptions "Ecuadorian" >>
+				<<print " | ">> 
+				<<NOptions "French Guianan" >>
+				<<print " | ">> 
+				<<NOptions "Guyanese" >>
+				<<print " | ">> 
+				<<NOptions "Paraguayan" >>
+				<<print " | ">> 
 				<<NOptions "Peruvian" >>
+				<br>
+				<<NOptions "Peruvian" >>
+				<<print " | ">> 
+				<<NOptions "Surinamese" >>
+				<<print " | ">> 
+				<<NOptions "Uruguayan" >>
 				<<print " | ">> 
 				<<NOptions "Venezuelan" >>
 				<br>
 
 				<br>Europe<br>
+				<<NOptions "Albanian" >>
+				<<print " | ">>
+				<<NOptions "Andorran" >>
+				<<print " | ">>
 				<<NOptions "Austrian" >>
 				<<print " | ">>
 				<<NOptions "Belarusian" >>
 				<<print " | ">>
 				<<NOptions "Belgian" >>
 				<<print " | ">>
+				<<NOptions "Bosnian" >>
+				<<print " | ">>
 				<<NOptions "British" >>
 				<<print " | ">>
+				<<NOptions "Bulgarian" >>
+				<<print " | ">>
+				<<NOptions "Catalan" >>
+				<<print " | ">>
+				<<NOptions "Croatian" >>
+				<br>
 				<<NOptions "Czech" >>
 				<<print " | ">>
 				<<NOptions "Danish" >>
@@ -611,7 +663,7 @@
 				<<NOptions "Finnish" >>
 				<<print " | ">>
 				<<NOptions "French" >>
-				<br>
+				<<print " | ">>
 				<<NOptions "German" >>
 				<<print " | ">>
 				<<NOptions "Greek" >>
@@ -619,29 +671,51 @@
 				<<NOptions "Hungarian" >>
 				<<print " | ">>
 				<<NOptions "Icelandic" >>
-				<<print " | ">>
+				<br>
 				<<NOptions "Irish" >>
 				<<print " | ">>
 				<<NOptions "Italian" >>
 				<<print " | ">>
+				<<NOptions "Kosovan" >>
+				<<print " | ">>
+				<<NOptions "Latvian" >>
+				<<print " | ">>
+				<<NOptions "a Liechtensteiner" >>
+				<<print " | ">>
 				<<NOptions "Lithuanian" >>
 				<<print " | ">>
+				<<NOptions "Luxembourgian" >>
+				<<print " | ">>
+				<<NOptions "Macedonian" >>
+				<<print " | ">>
+				<<NOptions "Maltese" >>
+				<<print " | ">>
+				<<NOptions "Moldovan" >>
+				<br>
+				<<NOptions "Monégasque" >>
+				<<print " | ">>
+				<<NOptions "Montenegrin" >>
+				<<print " | ">>
 				<<NOptions "Norwegian" >>
 				<<print " | ">>
 				<<NOptions "Polish" >>
-				<br>
+				<<print " | ">>
 				<<NOptions "Portuguese" >>
 				<<print " | ">>
 				<<NOptions "Romanian" >>
 				<<print " | ">>
 				<<NOptions "Russian" >>
 				<<print " | ">>
+				<<NOptions "Sammarinese" >>
+				<<print " | ">>
 				<<NOptions "Scottish" >>
 				<<print " | ">>
 				<<NOptions "Serbian" >>
-				<<print " | ">>
+				<br>
 				<<NOptions "Slovak" >>
 				<<print " | ">>
+				<<NOptions "Slovene" >>
+				<<print " | ">>
 				<<NOptions "Spanish" >>
 				<<print " | ">>
 				<<NOptions "Swedish" >>
@@ -649,35 +723,65 @@
 				<<NOptions "Swiss" >>
 				<<print " | ">>
 				<<NOptions "Ukrainian" >>
+				<<print " | ">>
+				<<NOptions "Vatican" >>
 				<br>
 
 				<br>Asia<br>
 				<<NOptions "Bangladeshi" >>
 				<<print " | ">>
+				<<NOptions "Bhutanese" >>
+				<<print " | ">>
+				<<NOptions "Bruneian" >>
+				<<print " | ">>
 				<<NOptions "Burmese" >>
 				<<print " | ">>
+				<<NOptions "Cambodian" >>
+				<<print " | ">>
 				<<NOptions "Chinese" >>
 				<<print " | ">>
+				<<NOptions "East Timorese" >>
+				<<print " | ">>
 				<<NOptions "Filipina" >>
 				<<print " | ">>
 				<<NOptions "Indian" >>
 				<<print " | ">>
 				<<NOptions "Indonesian" >>
-				<<print " | ">>
+				<br>
 				<<NOptions "Japanese" >>
 				<<print " | ">>
 				<<NOptions "Kazakh" >>
-				<br>
+				<<print " | ">>
 				<<NOptions "Korean" >>
 				<<print " | ">>
+				<<NOptions "Kyrgyz" >>
+				<<print " | ">>
+				<<NOptions "Laotian" >>
+				<<print " | ">>
 				<<NOptions "Malaysian" >>
 				<<print " | ">>
+				<<NOptions "Maldivian" >>
+				<<print " | ">>
+				<<NOptions "Mongolian" >>
+				<<print " | ">>
 				<<NOptions "Nepalese" >>
 				<<print " | ">>
 				<<NOptions "Pakistani" >>
+				<br>
+				<<NOptions "Singaporean" >>
+				<<print " | ">>
+				<<NOptions "Sri Lankan" >>
+				<<print " | ">>
+				<<NOptions "Taiwanese" >>
+				<<print " | ">>
+				<<NOptions "Tajik" >>
 				<<print " | ">>
 				<<NOptions "Thai" >>
 				<<print " | ">>
+				<<NOptions "Tibetan" >>
+				<<print " | ">>
+				<<NOptions "Turkmen" >>
+				<<print " | ">>
 				<<NOptions "Uzbek" >>
 				<<print " | ">>
 				<<NOptions "Vietnamese" >>
@@ -688,24 +792,42 @@
 				<<print " | ">>
 				<<NOptions "Armenian" >>
 				<<print " | ">>
+				<<NOptions "Azerbaijani" >>
+				<<print " | ">>
+				<<NOptions "Bahraini" >>
+				<<print " | ">>
+				<<NOptions "Cypriot" >>
+				<<print " | ">>
 				<<NOptions "Egyptian" >>
 				<<print " | ">>
 				<<NOptions "Emirati" >>
 				<<print " | ">>
+				<<NOptions "Georgian" >>
+				<<print " | ">>
 				<<NOptions "Iranian" >>
 				<<print " | ">>
 				<<NOptions "Iraqi" >>
-				<<print " | ">>
+				<br>
 				<<NOptions "Israeli" >>
 				<<print " | ">>
 				<<NOptions "Jordanian" >>
 				<<print " | ">>
+				<<NOptions "Kurdish" >>
+				<<print " | ">>
+				<<NOptions "Kuwaiti" >>
+				<<print " | ">>
 				<<NOptions "Lebanese" >>
 				<<print " | ">>
 				<<NOptions "Omani" >>
 				<<print " | ">>
+				<<NOptions "Palestinian" >>
+				<<print " | ">>
+				<<NOptions "Qatari" >>
+				<<print " | ">>
 				<<NOptions "Saudi" >>
 				<<print " | ">>
+				<<NOptions "Syrian" >>
+				<br>
 				<<NOptions "Turkish" >>
 				<<print " | ">>
 				<<NOptions "Yemeni" >>
@@ -714,39 +836,147 @@
 				<br>Africa<br>
 				<<NOptions "Algerian" >>
 				<<print " | ">>
+				<<NOptions "Angolan" >>
+				<<print " | ">>
+				<<NOptions "Beninese" >>
+				<<print " | ">>
+				<<NOptions "Bissau-Guinean" >>
+				<<print " | ">>
+				<<NOptions "Burkinabé" >>
+				<<print " | ">>
+				<<NOptions "Burundian" >>
+				<<print " | ">>
+				<<NOptions "Cameroonian" >>
+				<<print " | ">>
+				<<NOptions "Cape Verdean" >>
+				<<print " | ">>
+				<<NOptions "Central African" >>
+				<<print " | ">>
+				<<NOptions "Chadian" >>
+				<br>
+				<<NOptions "Comorian" >>
+				<<print " | ">>
 				<<NOptions "Congolese" >>
 				<<print " | ">>
+				<<NOptions "Djiboutian" >>
+				<<print " | ">>
+				<<NOptions "Equatoguinean" >>
+				<<print " | ">>
+				<<NOptions "Eritrean" >>
+				<<print " | ">>
 				<<NOptions "Ethiopian" >>
 				<<print " | ">>
+				<<NOptions "Gabonese" >>
+				<<print " | ">>
+				<<NOptions "Gambian" >>
+				<<print " | ">>
 				<<NOptions "Ghanan" >>
 				<<print " | ">>
+				<<NOptions "Guinean" >>
+				<br>
+				<<NOptions "Ivorian" >>
+				<<print " | ">>
 				<<NOptions "Kenyan" >>
 				<<print " | ">>
+				<<NOptions "Liberian" >>
+				<<print " | ">>
 				<<NOptions "Libyan" >>
 				<<print " | ">>
+				<<NOptions "Malagasy" >>
+				<<print " | ">>
+				<<NOptions "Malawian" >>
+				<<print " | ">>
 				<<NOptions "Malian" >>
 				<<print " | ">>
+				<<NOptions "Mauritanian" >>
+				<<print " | ">>
+				<<NOptions "Mauritian" >>
+				<<print " | ">>
 				<<NOptions "Moroccan" >>
 				<br>
+				<<NOptions "Mosotho" >>
+				<<print " | ">>
+				<<NOptions "Motswana" >>
+				<<print " | ">>
+				<<NOptions "Mozambican" >>
+				<<print " | ">>
+				<<NOptions "Namibian" >>
+				<<print " | ">>
 				<<NOptions "Nigerian" >>
 				<<print " | ">>
+				<<NOptions "Nigerien" >>
+				<<print " | ">>
+				<<NOptions "Rwandan" >>
+				<<print " | ">>
+				<<NOptions "Sahrawi" >>
+				<<print " | ">>
+				<<NOptions "São Toméan" >>
+				<<print " | ">>
+				<<NOptions "Senegalese" >>
+				<br>
+				<<NOptions "Seychellois" >>
+				<<print " | ">>
+				<<NOptions "Sierra Leonean" >>
+				<<print " | ">>
+				<<NOptions "Somali" >>
+				<<print " | ">>
 				<<NOptions "South African" >>
 				<<print " | ">>
+				<<NOptions "South Sudanese" >>
+				<<print " | ">>
 				<<NOptions "Sudanese" >>
 				<<print " | ">>
+				<<NOptions "Swazi" >>
+				<<print " | ">>
 				<<NOptions "Tanzanian" >>
 				<<print " | ">>
-				<<NOptions "Tunisian" >>
+				<<NOptions "Togolese" >>
 				<<print " | ">>
+				<<NOptions "Tunisian" >>
+				<br>
 				<<NOptions "Ugandan" >>
 				<<print " | ">>
+				<<NOptions "Zairian" >>
+				<<print " | ">>
+				<<NOptions "Zambian" >>
+				<<print " | ">>
 				<<NOptions "Zimbabwean" >>
 				<br>
 
 				<br>Australia<br>
 				<<NOptions "Australian" >>
 				<<print " | ">>
+				<<NOptions "a Cook Islander" >>
+				<<print " | ">>
+				<<NOptions "Fijian" >>
+				<<print " | ">>
+				<<NOptions "French Polynesian" >>
+				<<print " | ">>
+				<<NOptions "I-Kiribati" >>
+				<<print " | ">>
+				<<NOptions "Marshallese" >>
+				<<print " | ">>
+				<<NOptions "Micronesian" >>
+				<<print " | ">>
+				<<NOptions "Nauruan" >>
+				<<print " | ">>
 				<<NOptions "a New Zealander" >>
+				<<print " | ">>
+				<<NOptions "Ni-Vanuatu" >>
+				<br>
+				<<NOptions "Niuean" >>
+				<<print " | ">>
+				<<NOptions "Palauan" >>
+				<<print " | ">>
+				<<NOptions "Papua New Guinean" >>
+				<<print " | ">>
+				<<NOptions "Samoan" >>
+				<<print " | ">>
+				<<NOptions "a Solomon Islander" >>
+				<<print " | ">>
+				<<NOptions "Tongan" >>
+				<<print " | ">>
+				<<NOptions "Tuvaluan" >>
 				<br>
 			<</replace>>
 	<<else>>
diff --git a/src/events/intro/initNationalities.tw b/src/events/intro/initNationalities.tw
index d1fed4b30b3a21b563f3e01f1b331664081ad669..21a549baccb095c2501f45f327d0911f30ebccb6 100644
--- a/src/events/intro/initNationalities.tw
+++ b/src/events/intro/initNationalities.tw
@@ -1,4 +1,4 @@
-:: init Nationalities [silently]
+:: init Nationalities [silently]
 
 <<set $minimumSlaveAge = variableAsNumber($minimumSlaveAge, 18, 3, 18)>>
 <<set $fertilityAge = variableAsNumber($fertilityAge, 13, 3, 18)>>
@@ -90,11 +90,11 @@
 <<unset $nationalitiescheck>> /* Removes unique nationalities array to avoid var bloat */
 
 <<if ndef $customVariety>> /* If non-custom variety, empties or defines $nationalities */
-<<set $nationalities = []>>
+<<set $nationalities = {}>>
 <</if>>
 <<if $terrain == "oceanic">>
 	<<if ndef $customVariety>>
-		<<set $nationalities = clone(setup.baseNationalities)>>
+		<<set $nationalities = arr2obj(setup.baseNationalities)>>
 	<</if>>
 	<<set $arcologies[0].FSSupremacistRace = "white">>
 	<<set $arcologies[0].FSSubjugationistRace = "middle eastern">>
@@ -104,409 +104,482 @@
 		<<set $arcologies[0].FSSupremacistRace = "white">>
 		<<set $arcologies[0].FSSubjugationistRace = "black">>
 		<<if ndef $customVariety>> /* If non-custom variety, adds regional $nationalities */
-		<<set $nationalities.push("American","American","American","American","American","American")>>
-		<<set $nationalities.push("Mexican","Mexican","Mexican")>>
-		<<set $nationalities.push("Dominican","Dominican")>>
-		<<set $nationalities.push("Canadian","Canadian")>>
-		<<set $nationalities.push("Haitian")>>
-		<<set $nationalities.push("Cuban")>>
-		<<set $nationalities.push("Puerto Rican")>>
-		<<set $nationalities.push("Jamaican")>>
-		<<set $nationalities.push("Guatemalan")>>
-		<<set $nationalities.push("Bermudian")>>
-		<<set $nationalities.push("Greenlandic")>>
-		<<set $nationalities.push("Belizean")>>
-		<<set $nationalities.push("Grenadian")>>
-		<<set $nationalities.push("Honduran")>>
-		<<set $nationalities.push("Costa Rican")>>
-		<<set $nationalities.push("Salvadoran")>>
-		<<set $nationalities.push("Nicaraguan")>>
-		<<set $nationalities.push("Panamanian")>>
+		<<set hashPush($nationalities, "American", "American", "American", "American", "American", "American")>>
+		<<set hashPush($nationalities, "Mexican", "Mexican", "Mexican")>>
+		<<set hashPush($nationalities, "Dominican", "Dominican")>>
+		<<set hashPush($nationalities, "Canadian", "Canadian")>>
+		<<set hashPush($nationalities, "Haitian")>>
+		<<set hashPush($nationalities, "Cuban")>>
+		<<set hashPush($nationalities, "Puerto Rican")>>
+		<<set hashPush($nationalities, "Jamaican")>>
+		<<set hashPush($nationalities, "Guatemalan")>>
+		<<set hashPush($nationalities, "Bermudian")>>
+		<<set hashPush($nationalities, "Greenlandic")>>
+		<<set hashPush($nationalities, "Belizean")>>
+		<<set hashPush($nationalities, "Grenadian")>>
+		<<set hashPush($nationalities, "Honduran")>>
+		<<set hashPush($nationalities, "Costa Rican")>>
+		<<set hashPush($nationalities, "Salvadoran")>>
+		<<set hashPush($nationalities, "Nicaraguan")>>
+		<<set hashPush($nationalities, "Panamanian")>>
+		<<set hashPush($nationalities, "Bahamian")>>
+		<<set hashPush($nationalities, "Barbadian")>>
+		<<set hashPush($nationalities, "Dominiquais")>>
+		<<set hashPush($nationalities, "Trinidadian")>>
 		<</if>>
 	<<case "South America">>
 		<<set $arcologies[0].FSSupremacistRace = "latina">>
 		<<set $arcologies[0].FSSubjugationistRace = "black">>
 		<<if ndef $customVariety>>
-		<<set $nationalities.push("Brazilian","Brazilian","Brazilian","Brazilian")>>
-		<<set $nationalities.push("Argentinian","Argentinian")>>
-		<<set $nationalities.push("Colombian","Colombian")>>
-		<<set $nationalities.push("Peruvian")>>
-		<<set $nationalities.push("Venezuelan")>>
-		<<set $nationalities.push("Bolivian")>>
-		<<set $nationalities.push("Chilean")>>
-		<<set $nationalities.push("Guatemalan")>>
-		<<set $nationalities.push("Uruguayan")>>
-		<<set $nationalities.push("Ecuadorian")>>
-		<<set $nationalities.push("French Guianan")>>
-		<<set $nationalities.push("Guyanese")>>
-		<<set $nationalities.push("Paraguayan")>>
-		<<set $nationalities.push("Surinamese")>>
+		<<set hashPush($nationalities, "Brazilian", "Brazilian", "Brazilian", "Brazilian")>>
+		<<set hashPush($nationalities, "Argentinian", "Argentinian")>>
+		<<set hashPush($nationalities, "Colombian", "Colombian")>>
+		<<set hashPush($nationalities, "Peruvian")>>
+		<<set hashPush($nationalities, "Venezuelan")>>
+		<<set hashPush($nationalities, "Bolivian")>>
+		<<set hashPush($nationalities, "Chilean")>>
+		<<set hashPush($nationalities, "Uruguayan")>>
+		<<set hashPush($nationalities, "Ecuadorian")>>
+		<<set hashPush($nationalities, "French Guianan")>>
+		<<set hashPush($nationalities, "Guyanese")>>
+		<<set hashPush($nationalities, "Paraguayan")>>
+		<<set hashPush($nationalities, "Surinamese")>>
 		<</if>>
 	<<case "Brazil">>
 		<<set $arcologies[0].FSSupremacistRace = "white">>
 		<<set $arcologies[0].FSSubjugationistRace = "black">>
 		<<if ndef $customVariety>>
-		<<set $nationalities.push("Brazilian","Brazilian","Brazilian","Brazilian","Brazilian","Brazilian","Brazilian","Brazilian","Brazilian","Brazilian","Brazilian","Brazilian","Brazilian","Brazilian","Brazilian")>>
-		<<set $nationalities.push("Argentinian","Argentinian")>>
-		<<set $nationalities.push("Colombian","Colombian")>>
-		<<set $nationalities.push("Peruvian")>>
-		<<set $nationalities.push("Venezuelan")>>
-		<<set $nationalities.push("Bolivian")>>
-		<<set $nationalities.push("Chilean")>>
-		<<set $nationalities.push("Guatemalan")>>
-		<<set $nationalities.push("Uruguayan")>>
-		<<set $nationalities.push("Ecuadorian")>>
-		<<set $nationalities.push("French Guianan")>>
-		<<set $nationalities.push("Guyanese")>>
-		<<set $nationalities.push("Paraguayan")>>
-		<<set $nationalities.push("Surinamese")>>
+		<<set hashPush($nationalities, "Brazilian", "Brazilian", "Brazilian", "Brazilian", "Brazilian", "Brazilian", "Brazilian", "Brazilian", "Brazilian", "Brazilian", "Brazilian", "Brazilian", "Brazilian", "Brazilian", "Brazilian")>>
+		<<set hashPush($nationalities, "Argentinian", "Argentinian")>>
+		<<set hashPush($nationalities, "Colombian", "Colombian")>>
+		<<set hashPush($nationalities, "Peruvian")>>
+		<<set hashPush($nationalities, "Venezuelan")>>
+		<<set hashPush($nationalities, "Bolivian")>>
+		<<set hashPush($nationalities, "Chilean")>>
+		<<set hashPush($nationalities, "Guatemalan")>>
+		<<set hashPush($nationalities, "Uruguayan")>>
+		<<set hashPush($nationalities, "Ecuadorian")>>
+		<<set hashPush($nationalities, "French Guianan")>>
+		<<set hashPush($nationalities, "Guyanese")>>
+		<<set hashPush($nationalities, "Paraguayan")>>
+		<<set hashPush($nationalities, "Surinamese")>>
 		<</if>>
 	<<case "the Middle East">>
 		<<set $arcologies[0].FSSupremacistRace = "middle eastern">>
 		<<set $arcologies[0].FSSubjugationistRace = "asian">>
 		<<if ndef $customVariety>>
-		<<set $nationalities.push("Egyptian", "Egyptian", "Egyptian")>>
-		<<set $nationalities.push("Iranian", "Iranian")>>
-		<<set $nationalities.push("Saudi", "Saudi")>>
-		<<set $nationalities.push("Turkish", "Turkish")>>
-		<<set $nationalities.push("Lebanese")>>
-		<<set $nationalities.push("Emirati")>>
-		<<set $nationalities.push("Jordanian")>>
-		<<set $nationalities.push("Omani")>>
-		<<set $nationalities.push("Israeli")>>
-		<<set $nationalities.push("Armenian")>>
-		<<set $nationalities.push("Iraqi")>>
-		<<set $nationalities.push("Afghan")>>
-		<<set $nationalities.push("Yemeni")>>
-		<<set $nationalities.push("Syrian")>>
-		<<set $nationalities.push("Azerbaijani")>>
-		<<set $nationalities.push("Bahraini")>>
-		<<set $nationalities.push("Cypriot")>>
-		<<set $nationalities.push("Georgian")>>
-		<<set $nationalities.push("Kuwaiti")>>
-		<<set $nationalities.push("Qatari")>>
-		<<set $nationalities.push("Palestinian")>>
+		<<set hashPush($nationalities, "Egyptian", "Egyptian", "Egyptian")>>
+		<<set hashPush($nationalities, "Iranian", "Iranian")>>
+		<<set hashPush($nationalities, "Saudi", "Saudi")>>
+		<<set hashPush($nationalities, "Turkish", "Turkish")>>
+		<<set hashPush($nationalities, "Lebanese")>>
+		<<set hashPush($nationalities, "Emirati")>>
+		<<set hashPush($nationalities, "Jordanian")>>
+		<<set hashPush($nationalities, "Omani")>>
+		<<set hashPush($nationalities, "Israeli")>>
+		<<set hashPush($nationalities, "Armenian")>>
+		<<set hashPush($nationalities, "Iraqi")>>
+		<<set hashPush($nationalities, "Afghan")>>
+		<<set hashPush($nationalities, "Yemeni")>>
+		<<set hashPush($nationalities, "Syrian")>>
+		<<set hashPush($nationalities, "Azerbaijani")>>
+		<<set hashPush($nationalities, "Bahraini")>>
+		<<set hashPush($nationalities, "Cypriot")>>
+		<<set hashPush($nationalities, "Georgian")>>
+		<<set hashPush($nationalities, "Kuwaiti")>>
+		<<set hashPush($nationalities, "Qatari")>>
+		<<set hashPush($nationalities, "Palestinian")>>
+		<<set hashPush($nationalities, "Kurdish")>>
 		<</if>>
 	<<case "Africa">>
 		<<set $arcologies[0].FSSupremacistRace = "black">>
 		<<set $arcologies[0].FSSubjugationistRace = "white">>
 		<<if ndef $customVariety>>
-		<<set $nationalities.push("Nigerian", "Nigerian", "Nigerian")>>
-		<<set $nationalities.push("South African","South African","South African")>>
-		<<set $nationalities.push("Kenyan", "Kenyan")>>
-		<<set $nationalities.push("Congolese", "Congolese")>>
-		<<set $nationalities.push("Ethiopian", "Ethiopian")>>
-		<<set $nationalities.push("Algerian","Algerian")>>
-		<<set $nationalities.push("Sudanese","Sudanese")>>
-		<<set $nationalities.push("Moroccan")>>
-		<<set $nationalities.push("Ghanan")>>
-		<<set $nationalities.push("Tunisian")>>
-		<<set $nationalities.push("Malian")>>
-		<<set $nationalities.push("Libyan")>>
-		<<set $nationalities.push("Zimbabwean")>>
-		<<set $nationalities.push("Tanzanian")>>
-		<<set $nationalities.push("Ugandan")>>
-		<<set $nationalities.push("Cameroonian")>>
-		<<set $nationalities.push("Gabonese")>>
-		<<set $nationalities.push("Djiboutian")>>
-		<<set $nationalities.push("Zambian")>>
-		<<set $nationalities.push("Malagasy")>>
-		<<set $nationalities.push("Nigerien")>>
-		<<set $nationalities.push("Burundian")>>
-		<<set $nationalities.push("Seychellois")>>
+		<<set hashPush($nationalities, "Nigerian", "Nigerian", "Nigerian")>>
+		<<set hashPush($nationalities, "South African", "South African", "South African")>>
+		<<set hashPush($nationalities, "Kenyan", "Kenyan")>>
+		<<set hashPush($nationalities, "Zairian", "Zairian")>>
+		<<set hashPush($nationalities, "Ethiopian", "Ethiopian")>>
+		<<set hashPush($nationalities, "Algerian", "Algerian")>>
+		<<set hashPush($nationalities, "Sudanese", "Sudanese")>>
+		<<set hashPush($nationalities, "Moroccan")>>
+		<<set hashPush($nationalities, "Ghanan")>>
+		<<set hashPush($nationalities, "Tunisian")>>
+		<<set hashPush($nationalities, "Malian")>>
+		<<set hashPush($nationalities, "Libyan")>>
+		<<set hashPush($nationalities, "Zimbabwean")>>
+		<<set hashPush($nationalities, "Tanzanian")>>
+		<<set hashPush($nationalities, "Ugandan")>>
+		<<set hashPush($nationalities, "Cameroonian")>>
+		<<set hashPush($nationalities, "Gabonese")>>
+		<<set hashPush($nationalities, "Djiboutian")>>
+		<<set hashPush($nationalities, "Zambian")>>
+		<<set hashPush($nationalities, "Malagasy")>>
+		<<set hashPush($nationalities, "Nigerien")>>
+		<<set hashPush($nationalities, "Burundian")>>
+		<<set hashPush($nationalities, "Seychellois")>>
+		<<set hashPush($nationalities, "Equatoguinean")>>
+		<<set hashPush($nationalities, "Bissau-Guinean")>>
+		<<set hashPush($nationalities, "Chadian")>>
+		<<set hashPush($nationalities, "Comorian")>>
+		<<set hashPush($nationalities, "Ivorian")>>
+		<<set hashPush($nationalities, "Mauritanian")>>
+		<<set hashPush($nationalities, "Mauritian")>>
+		<<set hashPush($nationalities, "Mosotho")>>
+		<<set hashPush($nationalities, "Sierra Leonean")>>
+		<<set hashPush($nationalities, "Swazi")>>
+		<<set hashPush($nationalities, "Angolan")>>
+		<<set hashPush($nationalities, "Sahrawi")>>
+		<<set hashPush($nationalities, "Burkinabé")>>
+		<<set hashPush($nationalities, "Cape Verdean")>>
+		<<set hashPush($nationalities, "Motswana")>>
+		<<set hashPush($nationalities, "Somali")>>
+		<<set hashPush($nationalities, "Rwandan")>>
+		<<set hashPush($nationalities, "São Toméan")>>
+		<<set hashPush($nationalities, "Beninese")>>
+		<<set hashPush($nationalities, "Central African")>>
+		<<set hashPush($nationalities, "Gambian")>>
+		<<set hashPush($nationalities, "Senegalese")>>
+		<<set hashPush($nationalities, "Togolese")>>
+		<<set hashPush($nationalities, "Eritrean")>>
+		<<set hashPush($nationalities, "Guinean")>>
+		<<set hashPush($nationalities, "Malawian")>>
+		<<set hashPush($nationalities, "Congolese")>>
+		<<set hashPush($nationalities, "Liberian")>>
+		<<set hashPush($nationalities, "Mozambican")>>
+		<<set hashPush($nationalities, "Namibian")>>
+		<<set hashPush($nationalities, "South Sudanese")>>
 		<</if>>
 	<<case "Asia">>
 		<<set $arcologies[0].FSSupremacistRace = "asian">>
 		<<set $arcologies[0].FSSubjugationistRace = "indo-aryan">>
 		<<if ndef $customVariety>>
-		<<set $nationalities.push("Chinese","Chinese","Chinese","Chinese","Chinese","Chinese","Chinese","Chinese","Chinese","Chinese","Chinese","Chinese","Chinese","Chinese")>>
-		<<set $nationalities.push("Indian","Indian","Indian","Indian","Indian","Indian","Indian","Indian","Indian","Indian")>>
-		<<set $nationalities.push("Indonesian","Indonesian","Indonesian")>>
-		<<set $nationalities.push("Bangladeshi","Bangladeshi","Bangladeshi")>>
-		<<set $nationalities.push("Thai","Thai")>>
-		<<set $nationalities.push("Vietnamese","Vietnamese")>>
-		<<set $nationalities.push("Korean","Korean")>>
-		<<set $nationalities.push("Pakistani","Pakistani")>>
-		<<set $nationalities.push("Filipina","Filipina")>>
-		<<set $nationalities.push("Japanese","Japanese")>>
-		<<set $nationalities.push("Burmese","Burmese")>>
-		<<set $nationalities.push("Malaysian", "Malaysian")>>
-		<<set $nationalities.push("Uzbek")>>
-		<<set $nationalities.push("Nepalese")>>
-		<<set $nationalities.push("Kazakh")>>
-		<<set $nationalities.push("Cambodian")>>
-		<<set $nationalities.push("Bruneian")>>
-		<<set $nationalities.push("Singaporean")>>
-		<<set $nationalities.push("Laotian")>>
-		<<set $nationalities.push("Mongolian")>>
-		<<set $nationalities.push("Taiwanese")>>
-		<<set $nationalities.push("Maldivian")>>
-		<<set $nationalities.push("Bhutanese")>>
-		<<set $nationalities.push("East Timorese")>>
-		<<set $nationalities.push("Kyrgyz")>>
-		<<set $nationalities.push("Sri Lankan")>>
-		<<set $nationalities.push("Tajik")>>
-		<<set $nationalities.push("Turkmen")>>
+		<<set hashPush($nationalities, "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese")>>
+		<<set hashPush($nationalities, "Indian", "Indian", "Indian", "Indian", "Indian", "Indian", "Indian", "Indian", "Indian", "Indian")>>
+		<<set hashPush($nationalities, "Indonesian", "Indonesian", "Indonesian")>>
+		<<set hashPush($nationalities, "Bangladeshi", "Bangladeshi", "Bangladeshi")>>
+		<<set hashPush($nationalities, "Thai", "Thai")>>
+		<<set hashPush($nationalities, "Vietnamese", "Vietnamese")>>
+		<<set hashPush($nationalities, "Korean", "Korean")>>
+		<<set hashPush($nationalities, "Pakistani", "Pakistani")>>
+		<<set hashPush($nationalities, "Filipina", "Filipina")>>
+		<<set hashPush($nationalities, "Japanese", "Japanese")>>
+		<<set hashPush($nationalities, "Burmese", "Burmese")>>
+		<<set hashPush($nationalities, "Malaysian", "Malaysian")>>
+		<<set hashPush($nationalities, "Uzbek")>>
+		<<set hashPush($nationalities, "Nepalese")>>
+		<<set hashPush($nationalities, "Kazakh")>>
+		<<set hashPush($nationalities, "Cambodian")>>
+		<<set hashPush($nationalities, "Bruneian")>>
+		<<set hashPush($nationalities, "Singaporean")>>
+		<<set hashPush($nationalities, "Laotian")>>
+		<<set hashPush($nationalities, "Mongolian")>>
+		<<set hashPush($nationalities, "Taiwanese")>>
+		<<set hashPush($nationalities, "Maldivian")>>
+		<<set hashPush($nationalities, "Bhutanese")>>
+		<<set hashPush($nationalities, "East Timorese")>>
+		<<set hashPush($nationalities, "Kyrgyz")>>
+		<<set hashPush($nationalities, "Sri Lankan")>>
+		<<set hashPush($nationalities, "Tajik")>>
+		<<set hashPush($nationalities, "Turkmen")>>
+		<<set hashPush($nationalities, "Tibetan")>>
 		<</if>>
 	<<case "Europe">>
 		<<set $arcologies[0].FSSupremacistRace = "white">>
 		<<set $arcologies[0].FSSubjugationistRace = "middle eastern">>
 		<<if ndef $customVariety>>
-		<<set $nationalities.push("Russian", "Russian", "Russian", "Russian")>>
-		<<set $nationalities.push("German", "German", "German")>>
-		<<set $nationalities.push("Belarusian","Belarusian")>>
-		<<set $nationalities.push("Ukrainian", "Ukrainian")>>
-		<<set $nationalities.push("French", "French")>>
-		<<set $nationalities.push("Italian", "Italian")>>
-		<<set $nationalities.push("Spanish", "Spanish")>>
-		<<set $nationalities.push("British", "British")>>
-		<<set $nationalities.push("Polish", "Polish")>>
-		<<set $nationalities.push("Swedish")>>
-		<<set $nationalities.push("Romanian")>>
-		<<set $nationalities.push("Lithuanian")>>
-		<<set $nationalities.push("Irish")>>
-		<<set $nationalities.push("Scottish")>>
-		<<set $nationalities.push("Icelandic")>>
-		<<set $nationalities.push("Finnish")>>
-		<<set $nationalities.push("Greek")>>
-		<<set $nationalities.push("Belgian")>>
-		<<set $nationalities.push("Danish")>>
-		<<set $nationalities.push("Czech")>>
-		<<set $nationalities.push("Serbian")>>
-		<<set $nationalities.push("Slovak")>>
-		<<set $nationalities.push("Norwegian")>>
-		<<set $nationalities.push("Dutch")>>
-		<<set $nationalities.push("Austrian")>>
-		<<set $nationalities.push("Swiss")>>
-		<<set $nationalities.push("Portuguese")>>
-		<<set $nationalities.push("Hungarian")>>
-		<<set $nationalities.push("Estonian")>>
-		<<set $nationalities.push("Sammarinese")>>
-		<<set $nationalities.push("Monégasque")>>
-		<<set $nationalities.push("Montenegrin")>>
-		<<set $nationalities.push("Albanian")>>
-		<<set $nationalities.push("Bosnian")>>
-		<<set $nationalities.push("Croatian")>>
-		<<set $nationalities.push("Kosovan")>>
-		<<set $nationalities.push("Macedonian")>>
-		<<set $nationalities.push("Maltese")>>
-		<<set $nationalities.push("Andorran")>>
-		<<set $nationalities.push("Bulgarian")>>
-		<<set $nationalities.push("Luxembourgian")>>
-		<<set $nationalities.push("Moldovan")>>
-		<<set $nationalities.push("a Liechtensteiner")>>
-		<<set $nationalities.push("Vatican")>>
-		<<set $nationalities.push("Belarusian")>>
-		<<set $nationalities.push("Latvian")>>
-		<<set $nationalities.push("Slovene")>>
+		<<set hashPush($nationalities, "Russian", "Russian", "Russian", "Russian")>>
+		<<set hashPush($nationalities, "German", "German", "German")>>
+		<<set hashPush($nationalities, "Belarusian", "Belarusian")>>
+		<<set hashPush($nationalities, "Ukrainian", "Ukrainian")>>
+		<<set hashPush($nationalities, "French", "French")>>
+		<<set hashPush($nationalities, "Italian", "Italian")>>
+		<<set hashPush($nationalities, "Spanish", "Spanish")>>
+		<<set hashPush($nationalities, "British", "British")>>
+		<<set hashPush($nationalities, "Polish", "Polish")>>
+		<<set hashPush($nationalities, "Swedish")>>
+		<<set hashPush($nationalities, "Romanian")>>
+		<<set hashPush($nationalities, "Lithuanian")>>
+		<<set hashPush($nationalities, "Irish")>>
+		<<set hashPush($nationalities, "Scottish")>>
+		<<set hashPush($nationalities, "Icelandic")>>
+		<<set hashPush($nationalities, "Finnish")>>
+		<<set hashPush($nationalities, "Greek")>>
+		<<set hashPush($nationalities, "Belgian")>>
+		<<set hashPush($nationalities, "Danish")>>
+		<<set hashPush($nationalities, "Czech")>>
+		<<set hashPush($nationalities, "Serbian")>>
+		<<set hashPush($nationalities, "Slovak")>>
+		<<set hashPush($nationalities, "Norwegian")>>
+		<<set hashPush($nationalities, "Dutch")>>
+		<<set hashPush($nationalities, "Austrian")>>
+		<<set hashPush($nationalities, "Swiss")>>
+		<<set hashPush($nationalities, "Portuguese")>>
+		<<set hashPush($nationalities, "Hungarian")>>
+		<<set hashPush($nationalities, "Estonian")>>
+		<<set hashPush($nationalities, "Sammarinese")>>
+		<<set hashPush($nationalities, "Monégasque")>>
+		<<set hashPush($nationalities, "Montenegrin")>>
+		<<set hashPush($nationalities, "Albanian")>>
+		<<set hashPush($nationalities, "Bosnian")>>
+		<<set hashPush($nationalities, "Croatian")>>
+		<<set hashPush($nationalities, "Kosovan")>>
+		<<set hashPush($nationalities, "Macedonian")>>
+		<<set hashPush($nationalities, "Maltese")>>
+		<<set hashPush($nationalities, "Andorran")>>
+		<<set hashPush($nationalities, "Bulgarian")>>
+		<<set hashPush($nationalities, "Luxembourgian")>>
+		<<set hashPush($nationalities, "Moldovan")>>
+		<<set hashPush($nationalities, "a Liechtensteiner")>>
+		<<set hashPush($nationalities, "Vatican")>>
+		<<set hashPush($nationalities, "Belarusian")>>
+		<<set hashPush($nationalities, "Latvian")>>
+		<<set hashPush($nationalities, "Slovene")>>
+		<<set hashPush($nationalities, "Catalan")>>
 		<</if>>
 	<<case "Australia">>
 		<<set $arcologies[0].FSSupremacistRace = "white">>
 		<<set $arcologies[0].FSSubjugationistRace = "asian">>
-		<<set $nationalities.push("Australian","Australian","Australian")>>
-		<<set $nationalities.push("a New Zealander")>>
-		<<set $nationalities.push("Marshallese")>>
-		<<set $nationalities.push("Tuvaluan")>>
-		<<set $nationalities.push("I-Kiribati")>>
-		<<set $nationalities.push("Nauruan")>>
-		<<set $nationalities.push("Micronesian")>>
-		<<set $nationalities.push("Palauan")>>
-		<<set $nationalities.push("Papua New Guinean")>>
-		<<set $nationalities.push("a Cook Islander")>>
-		<<set $nationalities.push("Fijian")>>
-		<<set $nationalities.push("Ni-Vanuatu")>>
-		<<set $nationalities.push("Niuean")>>
-		<<set $nationalities.push("Samoan")>>
-		<<set $nationalities.push("a Solomon Islander")>>
-		<<set $nationalities.push("Tongan")>>
+		<<set hashPush($nationalities, "Australian", "Australian", "Australian")>>
+		<<set hashPush($nationalities, "a New Zealander")>>
+		<<set hashPush($nationalities, "Marshallese")>>
+		<<set hashPush($nationalities, "Tuvaluan")>>
+		<<set hashPush($nationalities, "I-Kiribati")>>
+		<<set hashPush($nationalities, "Nauruan")>>
+		<<set hashPush($nationalities, "Micronesian")>>
+		<<set hashPush($nationalities, "Palauan")>>
+		<<set hashPush($nationalities, "Papua New Guinean")>>
+		<<set hashPush($nationalities, "a Cook Islander")>>
+		<<set hashPush($nationalities, "Fijian")>>
+		<<set hashPush($nationalities, "Ni-Vanuatu")>>
+		<<set hashPush($nationalities, "Niuean")>>
+		<<set hashPush($nationalities, "Samoan")>>
+		<<set hashPush($nationalities, "a Solomon Islander")>>
+		<<set hashPush($nationalities, "Tongan")>>
+		<<set hashPush($nationalities, "French Polynesian")>>
 	<<case "Japan">>
 		<<set $arcologies[0].FSSupremacistRace = "asian">>
 		<<set $arcologies[0].FSSubjugationistRace = "asian">>
 		<<if ndef $customVariety>>
-		<<set $nationalities.push("Japanese","Japanese","Japanese")>>
+		<<set hashPush($nationalities, "Japanese", "Japanese", "Japanese")>>
 		<</if>>
 	<</switch>>
 <</if>>
 
 <<if ndef $customVariety>> /* If non-custom variety, runs international trade restrictions script */
 <<if $internationalTrade != 0>>
-	<<set $nationalities = clone(setup.baseNationalities)>>
+	<<set $nationalities = arr2obj(setup.baseNationalities)>>
 	<<if $internationalVariety == 0>>
-		<<set $nationalities.push("Chinese","Chinese","Chinese","Chinese","Chinese","Chinese","Chinese","Chinese","Chinese","Chinese","Chinese","Chinese","Chinese","Chinese")>>
-		<<set $nationalities.push("Indian","Indian","Indian","Indian","Indian","Indian","Indian","Indian","Indian","Indian")>>
-		<<set $nationalities.push("American","American","American","American")>>
-		<<set $nationalities.push("Indonesian","Indonesian","Indonesian","Indonesian")>>
-		<<set $nationalities.push("Bangladeshi","Bangladeshi","Bangladeshi")>>
-		<<set $nationalities.push("Russian","Russian","Russian")>>
-		<<set $nationalities.push("Belarusian","Belarusian","Belarusian")>>
-		<<set $nationalities.push("Nigerian","Nigerian","Nigerian")>>
-		<<set $nationalities.push("South African","South African","South African")>>
-		<<set $nationalities.push("Brazilian","Brazilian","Brazilian")>>
-		<<set $nationalities.push("Mexican","Mexican","Mexican")>>
-		<<set $nationalities.push("Dominican","Dominican","Dominican")>>
-		<<set $nationalities.push("Argentinian","Argentinian")>>
-		<<set $nationalities.push("Egyptian","Egyptian")>>
-		<<set $nationalities.push("Pakistani","Pakistani")>>
-		<<set $nationalities.push("Filipina","Filipina")>>
-		<<set $nationalities.push("Vietnamese","Vietnamese")>>
-		<<set $nationalities.push("Iranian","Iranian")>>
-		<<set $nationalities.push("Korean","Korean")>>
-		<<set $nationalities.push("Japanese","Japanese")>>
-		<<set $nationalities.push("Thai","Thai")>>
-		<<set $nationalities.push("Turkish","Turkish")>>
-		<<set $nationalities.push("Ethiopian","Ethiopian")>>
-		<<set $nationalities.push("Kenyan", "Kenyan")>>
-		<<set $nationalities.push("Congolese","Congolese")>>
-		<<set $nationalities.push("Colombian","Colombian")>>
-		<<set $nationalities.push("Venezuelan","Venezuelan")>>
-		<<set $nationalities.push("German","German")>>
-		<<set $nationalities.push("French","French")>>
-		<<set $nationalities.push("British","British")>>
-		<<set $nationalities.push("Italian","Italian")>>
-		<<set $nationalities.push("Spanish","Spanish")>>
-		<<set $nationalities.push("Ukrainian","Ukrainian")>>
-		<<set $nationalities.push("Polish","Polish")>>
-		<<set $nationalities.push("Burmese","Burmese")>>
-		<<set $nationalities.push("Algerian","Algerian")>>
-		<<set $nationalities.push("Sudanese","Sudanese")>>
-		<<set $nationalities.push("Malaysian", "Malaysian")>>
-		<<set $nationalities.push("Lebanese")>>
-		<<set $nationalities.push("Tunisian")>>
-		<<set $nationalities.push("Emirati")>>
-		<<set $nationalities.push("Libyan")>>
-		<<set $nationalities.push("Jordanian")>>
-		<<set $nationalities.push("Omani")>>
-		<<set $nationalities.push("Malian")>>
-		<<set $nationalities.push("Iraqi")>>
-		<<set $nationalities.push("Uzbek")>>
-		<<set $nationalities.push("Nepalese")>>
-		<<set $nationalities.push("Afghan")>>
-		<<set $nationalities.push("Yemeni")>>
-		<<set $nationalities.push("Saudi")>>
-		<<set $nationalities.push("Australian")>>
-		<<set $nationalities.push("Ghanan")>>
-		<<set $nationalities.push("Canadian")>>
-		<<set $nationalities.push("Peruvian")>>
-		<<set $nationalities.push("Chilean")>>
-		<<set $nationalities.push("Guatemalan")>>
-		<<set $nationalities.push("a New Zealander")>>
-		<<set $nationalities.push("Irish")>>
-		<<set $nationalities.push("Scottish")>>
-		<<set $nationalities.push("Icelandic")>>
-		<<set $nationalities.push("Finnish")>>
-		<<set $nationalities.push("Israeli")>>
-		<<set $nationalities.push("Armenian")>>
-		<<set $nationalities.push("Greek")>>
-		<<set $nationalities.push("Moroccan")>>
-		<<set $nationalities.push("Zimbabwean")>>
-		<<set $nationalities.push("Tanzanian")>>
-		<<set $nationalities.push("Ugandan")>>
-		<<set $nationalities.push("Romanian")>>
-		<<set $nationalities.push("Swedish")>>
-		<<set $nationalities.push("Belgian")>>
-		<<set $nationalities.push("Danish")>>
-		<<set $nationalities.push("Czech")>>
-		<<set $nationalities.push("Serbian")>>
-		<<set $nationalities.push("Slovak")>>
-		<<set $nationalities.push("Norwegian")>>
-		<<set $nationalities.push("Dutch")>>
-		<<set $nationalities.push("Austrian")>>
-		<<set $nationalities.push("Swiss")>>
-		<<set $nationalities.push("Portuguese")>>
-		<<set $nationalities.push("Hungarian")>>
-		<<set $nationalities.push("Estonian")>>
-		<<set $nationalities.push("Lithuanian")>>
-		<<set $nationalities.push("Bolivian")>>
-		<<set $nationalities.push("Haitian")>>
-		<<set $nationalities.push("Puerto Rican")>>
-		<<set $nationalities.push("Jamaican")>>
-		<<set $nationalities.push("Cuban")>>
-		<<set $nationalities.push("Kazakh")>>
-		<<set $nationalities.push("Sammarinese")>>
-		<<set $nationalities.push("Marshallese")>>
-		<<set $nationalities.push("Syrian")>>
-		<<set $nationalities.push("Bermudian")>>
-		<<set $nationalities.push("Uruguayan")>>
-		<<set $nationalities.push("Monégasque")>>
-		<<set $nationalities.push("Montenegrin")>>
-		<<set $nationalities.push("Cambodian")>>
-		<<set $nationalities.push("Cameroonian")>>
-		<<set $nationalities.push("Gabonese")>>
-		<<set $nationalities.push("Djiboutian")>>
-		<<set $nationalities.push("Greenlandic")>>
-		<<set $nationalities.push("Tuvaluan")>>
-		<<set $nationalities.push("Zambian")>>
-		<<set $nationalities.push("Albanian")>>
-		<<set $nationalities.push("Bruneian")>>
-		<<set $nationalities.push("Singaporean")>>
-		<<set $nationalities.push("Laotian")>>
-		<<set $nationalities.push("Mongolian")>>
-		<<set $nationalities.push("Taiwanese")>>
-		<<set $nationalities.push("Belizean")>>
-		<<set $nationalities.push("Grenadian")>>
-		<<set $nationalities.push("I-Kiribati")>>
-		<<set $nationalities.push("Malagasy")>>
-		<<set $nationalities.push("Maldivian")>>
-		<<set $nationalities.push("Bosnian")>>
-		<<set $nationalities.push("Croatian")>>
-		<<set $nationalities.push("Kosovan")>>
-		<<set $nationalities.push("Macedonian")>>
-		<<set $nationalities.push("Honduran")>>
-		<<set $nationalities.push("Maltese")>>
-		<<set $nationalities.push("Nauruan")>>
-		<<set $nationalities.push("Micronesian")>>
-		<<set $nationalities.push("Costa Rican")>>
-		<<set $nationalities.push("Salvadoran")>>
-		<<set $nationalities.push("Nicaraguan")>>
-		<<set $nationalities.push("Panamanian")>>
-		<<set $nationalities.push("Nigerien")>>
-		<<set $nationalities.push("Andorran")>>
-		<<set $nationalities.push("Bulgarian")>>
-		<<set $nationalities.push("Luxembourgian")>>
-		<<set $nationalities.push("Moldovan")>>
-		<<set $nationalities.push("Bahamian")>>
-		<<set $nationalities.push("Barbadian")>>
-		<<set $nationalities.push("Dominiquais")>>
-		<<set $nationalities.push("Trinidadian")>>
-		<<set $nationalities.push("Palauan")>>
-		<<set $nationalities.push("Papua New Guinean")>>
-		<<set $nationalities.push("Kittitian")>>
-		<<set $nationalities.push("Ecuadorian")>>
-		<<set $nationalities.push("French Guianan")>>
-		<<set $nationalities.push("Guyanese")>>
-		<<set $nationalities.push("Paraguayan")>>
-		<<set $nationalities.push("Surinamese")>>
-		<<set $nationalities.push("Bhutanese")>>
-		<<set $nationalities.push("East Timorese")>>
-		<<set $nationalities.push("Kyrgyz")>>
-		<<set $nationalities.push("Sri Lankan")>>
-		<<set $nationalities.push("a Liechtensteiner")>>
-		<<set $nationalities.push("Vatican")>>
-		<<set $nationalities.push("Belarusian")>>
-		<<set $nationalities.push("Burundian")>>
-		<<set $nationalities.push("Latvian")>>
-		<<set $nationalities.push("Seychellois")>>
-		<<set $nationalities.push("Slovene")>>
-		<<set $nationalities.push("Antiguan")>>
-		<<set $nationalities.push("Saint Lucian")>>
-		<<set $nationalities.push("Aruban")>>
-		<<set $nationalities.push("Azerbaijani")>>
-		<<set $nationalities.push("Bahraini")>>
-		<<set $nationalities.push("Cypriot")>>
-		<<set $nationalities.push("Georgian")>>
-		<<set $nationalities.push("Kuwaiti")>>
-		<<set $nationalities.push("Qatari")>>
-		<<set $nationalities.push("Tajik")>>
-		<<set $nationalities.push("Turkmen")>>
-		<<set $nationalities.push("Vincentian")>>
-		<<set $nationalities.push("a Cook Islander")>>
-		<<set $nationalities.push("Fijian")>>
-		<<set $nationalities.push("Ni-Vanuatu")>>
-		<<set $nationalities.push("Niuean")>>
-		<<set $nationalities.push("Palestinian")>>
-		<<set $nationalities.push("Samoan")>>
-		<<set $nationalities.push("a Solomon Islander")>>
-		<<set $nationalities.push("Tongan")>>
+		<<set hashPush($nationalities, "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese", "Chinese")>>
+		<<set hashPush($nationalities, "Indian", "Indian", "Indian", "Indian", "Indian", "Indian", "Indian", "Indian", "Indian", "Indian")>>
+		<<set hashPush($nationalities, "American", "American", "American", "American")>>
+		<<set hashPush($nationalities, "Indonesian", "Indonesian", "Indonesian", "Indonesian")>>
+		<<set hashPush($nationalities, "Bangladeshi", "Bangladeshi", "Bangladeshi")>>
+		<<set hashPush($nationalities, "Russian", "Russian", "Russian")>>
+		<<set hashPush($nationalities, "Belarusian", "Belarusian", "Belarusian")>>
+		<<set hashPush($nationalities, "Nigerian", "Nigerian", "Nigerian")>>
+		<<set hashPush($nationalities, "South African", "South African", "South African")>>
+		<<set hashPush($nationalities, "Brazilian", "Brazilian", "Brazilian")>>
+		<<set hashPush($nationalities, "Mexican", "Mexican", "Mexican")>>
+		<<set hashPush($nationalities, "Dominican", "Dominican", "Dominican")>>
+		<<set hashPush($nationalities, "Argentinian", "Argentinian")>>
+		<<set hashPush($nationalities, "Egyptian", "Egyptian")>>
+		<<set hashPush($nationalities, "Pakistani", "Pakistani")>>
+		<<set hashPush($nationalities, "Filipina", "Filipina")>>
+		<<set hashPush($nationalities, "Vietnamese", "Vietnamese")>>
+		<<set hashPush($nationalities, "Iranian", "Iranian")>>
+		<<set hashPush($nationalities, "Korean", "Korean")>>
+		<<set hashPush($nationalities, "Japanese", "Japanese")>>
+		<<set hashPush($nationalities, "Thai", "Thai")>>
+		<<set hashPush($nationalities, "Turkish", "Turkish")>>
+		<<set hashPush($nationalities, "Ethiopian", "Ethiopian")>>
+		<<set hashPush($nationalities, "Kenyan", "Kenyan")>>
+		<<set hashPush($nationalities, "Zairian", "Zairian")>>
+		<<set hashPush($nationalities, "Colombian", "Colombian")>>
+		<<set hashPush($nationalities, "Venezuelan", "Venezuelan")>>
+		<<set hashPush($nationalities, "German", "German")>>
+		<<set hashPush($nationalities, "French", "French")>>
+		<<set hashPush($nationalities, "British", "British")>>
+		<<set hashPush($nationalities, "Italian", "Italian")>>
+		<<set hashPush($nationalities, "Spanish", "Spanish")>>
+		<<set hashPush($nationalities, "Ukrainian", "Ukrainian")>>
+		<<set hashPush($nationalities, "Polish", "Polish")>>
+		<<set hashPush($nationalities, "Burmese", "Burmese")>>
+		<<set hashPush($nationalities, "Algerian", "Algerian")>>
+		<<set hashPush($nationalities, "Sudanese", "Sudanese")>>
+		<<set hashPush($nationalities, "Malaysian", "Malaysian")>>
+		<<set hashPush($nationalities, "Lebanese")>>
+		<<set hashPush($nationalities, "Tunisian")>>
+		<<set hashPush($nationalities, "Emirati")>>
+		<<set hashPush($nationalities, "Libyan")>>
+		<<set hashPush($nationalities, "Jordanian")>>
+		<<set hashPush($nationalities, "Omani")>>
+		<<set hashPush($nationalities, "Malian")>>
+		<<set hashPush($nationalities, "Iraqi")>>
+		<<set hashPush($nationalities, "Uzbek")>>
+		<<set hashPush($nationalities, "Nepalese")>>
+		<<set hashPush($nationalities, "Afghan")>>
+		<<set hashPush($nationalities, "Yemeni")>>
+		<<set hashPush($nationalities, "Saudi")>>
+		<<set hashPush($nationalities, "Australian")>>
+		<<set hashPush($nationalities, "Ghanan")>>
+		<<set hashPush($nationalities, "Canadian")>>
+		<<set hashPush($nationalities, "Peruvian")>>
+		<<set hashPush($nationalities, "Chilean")>>
+		<<set hashPush($nationalities, "Guatemalan")>>
+		<<set hashPush($nationalities, "a New Zealander")>>
+		<<set hashPush($nationalities, "Irish")>>
+		<<set hashPush($nationalities, "Scottish")>>
+		<<set hashPush($nationalities, "Icelandic")>>
+		<<set hashPush($nationalities, "Finnish")>>
+		<<set hashPush($nationalities, "Israeli")>>
+		<<set hashPush($nationalities, "Armenian")>>
+		<<set hashPush($nationalities, "Greek")>>
+		<<set hashPush($nationalities, "Moroccan")>>
+		<<set hashPush($nationalities, "Zimbabwean")>>
+		<<set hashPush($nationalities, "Tanzanian")>>
+		<<set hashPush($nationalities, "Ugandan")>>
+		<<set hashPush($nationalities, "Romanian")>>
+		<<set hashPush($nationalities, "Swedish")>>
+		<<set hashPush($nationalities, "Belgian")>>
+		<<set hashPush($nationalities, "Danish")>>
+		<<set hashPush($nationalities, "Czech")>>
+		<<set hashPush($nationalities, "Serbian")>>
+		<<set hashPush($nationalities, "Slovak")>>
+		<<set hashPush($nationalities, "Norwegian")>>
+		<<set hashPush($nationalities, "Dutch")>>
+		<<set hashPush($nationalities, "Austrian")>>
+		<<set hashPush($nationalities, "Swiss")>>
+		<<set hashPush($nationalities, "Portuguese")>>
+		<<set hashPush($nationalities, "Hungarian")>>
+		<<set hashPush($nationalities, "Estonian")>>
+		<<set hashPush($nationalities, "Lithuanian")>>
+		<<set hashPush($nationalities, "Bolivian")>>
+		<<set hashPush($nationalities, "Haitian")>>
+		<<set hashPush($nationalities, "Puerto Rican")>>
+		<<set hashPush($nationalities, "Jamaican")>>
+		<<set hashPush($nationalities, "Cuban")>>
+		<<set hashPush($nationalities, "Kazakh")>>
+		<<set hashPush($nationalities, "Sammarinese")>>
+		<<set hashPush($nationalities, "Marshallese")>>
+		<<set hashPush($nationalities, "Syrian")>>
+		<<set hashPush($nationalities, "Bermudian")>>
+		<<set hashPush($nationalities, "Uruguayan")>>
+		<<set hashPush($nationalities, "Monégasque")>>
+		<<set hashPush($nationalities, "Montenegrin")>>
+		<<set hashPush($nationalities, "Cambodian")>>
+		<<set hashPush($nationalities, "Cameroonian")>>
+		<<set hashPush($nationalities, "Gabonese")>>
+		<<set hashPush($nationalities, "Djiboutian")>>
+		<<set hashPush($nationalities, "Greenlandic")>>
+		<<set hashPush($nationalities, "Tuvaluan")>>
+		<<set hashPush($nationalities, "Zambian")>>
+		<<set hashPush($nationalities, "Albanian")>>
+		<<set hashPush($nationalities, "Bruneian")>>
+		<<set hashPush($nationalities, "Singaporean")>>
+		<<set hashPush($nationalities, "Laotian")>>
+		<<set hashPush($nationalities, "Mongolian")>>
+		<<set hashPush($nationalities, "Taiwanese")>>
+		<<set hashPush($nationalities, "Belizean")>>
+		<<set hashPush($nationalities, "Grenadian")>>
+		<<set hashPush($nationalities, "I-Kiribati")>>
+		<<set hashPush($nationalities, "Malagasy")>>
+		<<set hashPush($nationalities, "Maldivian")>>
+		<<set hashPush($nationalities, "Bosnian")>>
+		<<set hashPush($nationalities, "Croatian")>>
+		<<set hashPush($nationalities, "Kosovan")>>
+		<<set hashPush($nationalities, "Macedonian")>>
+		<<set hashPush($nationalities, "Honduran")>>
+		<<set hashPush($nationalities, "Maltese")>>
+		<<set hashPush($nationalities, "Nauruan")>>
+		<<set hashPush($nationalities, "Micronesian")>>
+		<<set hashPush($nationalities, "Costa Rican")>>
+		<<set hashPush($nationalities, "Salvadoran")>>
+		<<set hashPush($nationalities, "Nicaraguan")>>
+		<<set hashPush($nationalities, "Panamanian")>>
+		<<set hashPush($nationalities, "Nigerien")>>
+		<<set hashPush($nationalities, "Andorran")>>
+		<<set hashPush($nationalities, "Bulgarian")>>
+		<<set hashPush($nationalities, "Luxembourgian")>>
+		<<set hashPush($nationalities, "Moldovan")>>
+		<<set hashPush($nationalities, "Bahamian")>>
+		<<set hashPush($nationalities, "Barbadian")>>
+		<<set hashPush($nationalities, "Dominiquais")>>
+		<<set hashPush($nationalities, "Trinidadian")>>
+		<<set hashPush($nationalities, "Palauan")>>
+		<<set hashPush($nationalities, "Papua New Guinean")>>
+		<<set hashPush($nationalities, "Kittitian")>>
+		<<set hashPush($nationalities, "Ecuadorian")>>
+		<<set hashPush($nationalities, "French Guianan")>>
+		<<set hashPush($nationalities, "Guyanese")>>
+		<<set hashPush($nationalities, "Paraguayan")>>
+		<<set hashPush($nationalities, "Surinamese")>>
+		<<set hashPush($nationalities, "Bhutanese")>>
+		<<set hashPush($nationalities, "East Timorese")>>
+		<<set hashPush($nationalities, "Kyrgyz")>>
+		<<set hashPush($nationalities, "Sri Lankan")>>
+		<<set hashPush($nationalities, "a Liechtensteiner")>>
+		<<set hashPush($nationalities, "Vatican")>>
+		<<set hashPush($nationalities, "Belarusian")>>
+		<<set hashPush($nationalities, "Burundian")>>
+		<<set hashPush($nationalities, "Latvian")>>
+		<<set hashPush($nationalities, "Seychellois")>>
+		<<set hashPush($nationalities, "Slovene")>>
+		<<set hashPush($nationalities, "Antiguan")>>
+		<<set hashPush($nationalities, "Saint Lucian")>>
+		<<set hashPush($nationalities, "Aruban")>>
+		<<set hashPush($nationalities, "Azerbaijani")>>
+		<<set hashPush($nationalities, "Bahraini")>>
+		<<set hashPush($nationalities, "Cypriot")>>
+		<<set hashPush($nationalities, "Georgian")>>
+		<<set hashPush($nationalities, "Kuwaiti")>>
+		<<set hashPush($nationalities, "Qatari")>>
+		<<set hashPush($nationalities, "Tajik")>>
+		<<set hashPush($nationalities, "Turkmen")>>
+		<<set hashPush($nationalities, "Vincentian")>>
+		<<set hashPush($nationalities, "a Cook Islander")>>
+		<<set hashPush($nationalities, "Fijian")>>
+		<<set hashPush($nationalities, "Ni-Vanuatu")>>
+		<<set hashPush($nationalities, "Niuean")>>
+		<<set hashPush($nationalities, "Palestinian")>>
+		<<set hashPush($nationalities, "Samoan")>>
+		<<set hashPush($nationalities, "a Solomon Islander")>>
+		<<set hashPush($nationalities, "Tongan")>>
+		<<set hashPush($nationalities, "Catalan")>>
+		<<set hashPush($nationalities, "Equatoguinean")>>
+		<<set hashPush($nationalities, "French Polynesian")>>
+		<<set hashPush($nationalities, "Kurdish")>>
+		<<set hashPush($nationalities, "Tibetan")>>
+		<<set hashPush($nationalities, "Bissau-Guinean")>>
+		<<set hashPush($nationalities, "Chadian")>>
+		<<set hashPush($nationalities, "Comorian")>>
+		<<set hashPush($nationalities, "Ivorian")>>
+		<<set hashPush($nationalities, "Mauritanian")>>
+		<<set hashPush($nationalities, "Mauritian")>>
+		<<set hashPush($nationalities, "Mosotho")>>
+		<<set hashPush($nationalities, "Sierra Leonean")>>
+		<<set hashPush($nationalities, "Swazi")>>
+		<<set hashPush($nationalities, "Angolan")>>
+		<<set hashPush($nationalities, "Sahrawi")>>
+		<<set hashPush($nationalities, "Burkinabé")>>
+		<<set hashPush($nationalities, "Cape Verdean")>>
+		<<set hashPush($nationalities, "Motswana")>>
+		<<set hashPush($nationalities, "Somali")>>
+		<<set hashPush($nationalities, "Rwandan")>>
+		<<set hashPush($nationalities, "São Toméan")>>
+		<<set hashPush($nationalities, "Beninese")>>
+		<<set hashPush($nationalities, "Central African")>>
+		<<set hashPush($nationalities, "Gambian")>>
+		<<set hashPush($nationalities, "Senegalese")>>
+		<<set hashPush($nationalities, "Togolese")>>
+		<<set hashPush($nationalities, "Eritrean")>>
+		<<set hashPush($nationalities, "Guinean")>>
+		<<set hashPush($nationalities, "Malawian")>>
+		<<set hashPush($nationalities, "Congolese")>>
+		<<set hashPush($nationalities, "Liberian")>>
+		<<set hashPush($nationalities, "Mozambican")>>
+		<<set hashPush($nationalities, "Namibian")>>
+		<<set hashPush($nationalities, "South Sudanese")>>
 	<</if>>
 <</if>>
 <</if>>
diff --git a/src/events/intro/introSummary.tw b/src/events/intro/introSummary.tw
index 54ab15e75c3f1abb5efcce0e2e3270419b8aef83..c8626f53a7720d8f6834dc146a2b668cd6bc8cf1 100644
--- a/src/events/intro/introSummary.tw
+++ b/src/events/intro/introSummary.tw
@@ -75,10 +75,10 @@ You are using standardized slave trading channels. [[Customize the slave trade|C
 		<<silently>><<include "Customize Slave Trade">><</silently>>
 	<</if>>
 	<br style="clear:both" /><hr style="margin:0">
-	<<for _i = 0; _i < $nationalitiescheck.length; _i++>>
-	<<set _nation = $nationalitiescheck[_i]>>
-		<<print _nation>> @@.orange;<<print (($nationalities.count(_nation)/$nationalities.length)*100).toFixed(2)>>%@@
-	<<if _i < $nationalitiescheck.length-1>> | <</if>>
+	<<set _len = Object.keys($nationalitiescheck).length>>
+	<<for _nation, _i range $nationalitiescheck>>
+		<<print _nation>> @@.orange;<<print (($nationalities[_nation]/hashSum($nationalities))*100).toFixed(2)>>%@@
+	<<if _i < _len-1>> | <</if>>
 	<</for>>
 	<br style="clear:both" /><hr style="margin:0">
 <</if>> /* closes $customVariety is defined */
@@ -157,6 +157,7 @@ __''General slave settings''__
 <</if>> //Extended family mode must be on for the incubation facility to be enabled.//
 
 <<if $familyTesting == 1>>
+<br>
 <<if $inbreeding  == 1>>
 	Successive breeding ''will'' result in sub-average slaves.
 	[[Disable inbreeding|Intro Summary][$inbreeding = 0]]
@@ -957,7 +958,7 @@ __''Mods''__
 [[Enable|Intro Summary][$SFMODToggle = 1]]
 <</if>>
 <br>
-// This mod initally from anon1888 but expanded by SFanon offers a lategame special (initally, security but changed to Special in order to try and reduce confusion with crimeanon's seperate Security Expansion mod) force, triggered around week 80. It is non-canon where it conflicts with canonical updates to the base game.//
+// This mod initially from anon1888 but expanded by SFanon offers a lategame special (initially, security but changed to Special in order to try and reduce confusion with crimeanon's separate Security Expansion mod) force, triggered around week 80. It is non-canon where it conflicts with canonical updates to the base game.//
 
 <br><br>
 
diff --git a/src/events/intro/pcBodyIntro.tw b/src/events/intro/pcBodyIntro.tw
index 8fc251732d0631eced47d8f8b91c5572f8f3ff6d..44e64275faa80b6c9b7d6283cd1414d9d8f1c25a 100644
--- a/src/events/intro/pcBodyIntro.tw
+++ b/src/events/intro/pcBodyIntro.tw
@@ -6,10 +6,10 @@ Most slaveowners in the Free Cities are male. The preexisting power structures o
 <br>
 
 <<if $PC.title > 0>>
-	You have a masculine figure and will be refered to as ''Master.''
+	You have a masculine figure and will be referred to as ''Master.''
 	[[Switch to a feminine appearance|PC Body Intro][$PC.title = 0]]
 <<else>>
-	You have a feminine figure and will be refered to as ''Mistress.''
+	You have a feminine figure and will be referred to as ''Mistress.''
 	[[Switch to a masculine appearance|PC Body Intro][$PC.title = 1]]
 <</if>>
 <br>&nbsp;&nbsp;&nbsp;&nbsp;
diff --git a/src/gui/Encyclopedia/encyclopedia.tw b/src/gui/Encyclopedia/encyclopedia.tw
index 4f786450e5d8e4518529fdc534cc001c9df14b6f..4dd68dc94fab9eac5f97d4f9d773ba5fe8f60d9e 100644
--- a/src/gui/Encyclopedia/encyclopedia.tw
+++ b/src/gui/Encyclopedia/encyclopedia.tw
@@ -2615,6 +2615,7 @@ __I do not give credit without explicit permission to do so.__ If you have contr
 <br>''anon'' for master slaving's multi slave training.
 <br>''Faraen'' for a full vector art variant.
 <br>''anon'' for more hair vectors for the external art.
+<br>''Vas'' for massive JS work.
 <br>''Bane70'' optimized huge swaths of code with notable professionalism.
 <br>''Circle Tritagonist'' provided several new collars and outfits.
 <br>''Qotsafan'' submitted bugfixes.
@@ -2801,6 +2802,15 @@ While nearly indistinguishable from a standard satellite antenna, the satellite
 <<case "Repopulationist Breeding School">>
 With the sheer number of children being brought into the world in the average Repopulationist society, society had to come up with a way to rear them all. Breeding schools are publicly funded institutions devoted to raising children into future breeders. Their hormone levels are carefully managed both to encourage early puberty and to maximize fertility. Once a class has become sexual active, boys and girls are encouraged to pair off and explore eachother's bodies. Virginities are quickly lost, and more often than not, girls find themselves pregnant, usually with multiples. The pairings, or groups should females outnumber males, are encouraged to stay together and form caring family-like units. In addition, girls are taught to enjoy and idolize motherhood, while boys are taught that it is their duty to mount and fuck any non-gravid slave girls they see until pregnancy is assured. Free women are encouraged to avoid the schools, lest they get pinned and gang raped by horny adolescents. While administration respects rape fetishests and their desire to have a rape baby, doing this sets a poor example to the impressionable youths and may lead to the rape and impregnation of other free women later on it their lives.
 
+<<case "Slave Fertility">>
+Placeholder.
+
+<<case "Fertility Mix">>
+Placeholder
+
+<<case "Breeders Dietary Blend">>
+Placeholder
+
 <<case "Security Expansion">>
 	<<include "encyclopediaSecExpMain">>
 
@@ -3194,12 +3204,55 @@ Game Mods:
 <br>The Security Expansion Mod: [[Security Expansion|Encyclopedia][$encyclopedia = "Security Expansion"]] | [[Battles in Security Expansion|Encyclopedia][$encyclopedia = "Battles"]]
 <</if>>
 
-<br>Pregmod: <<link "Repopulationism">><<set $encyclopedia = "Repopulationism">><<goto "Encyclopedia">><</link>> | <<link "Eugenics Focus">><<set $encyclopedia = "Eugenics Focus">><<goto "Encyclopedia">><</link>> | <<link "Hedonistic Decadence">><<set $encyclopedia = "Hedonistic Decadence">><<goto "Encyclopedia">><</link>> | <<link "Gender Radicalism research">><<set $encyclopedia = "Gender Radicalism research">><<goto "Encyclopedia">><</link>> | <<link "Transformation Fetishism research">><<set $encyclopedia = "Transformation Fetishism research">><<goto "Encyclopedia">><</link>> | <<link "Asset Expansionist research">><<set $encyclopedia = "Asset Expansionist research">><<goto "Encyclopedia">><</link>> | <<link "Slimness Enthusiast research">><<set $encyclopedia = "Slimness Enthusiast research">><<goto "Encyclopedia">><</link>> | <<link "Youth Preferentialism Research">><<set $encyclopedia = "Youth Preferentialism Research">><<goto "Encyclopedia">><</link>> | <<link "Hedonistic Decadence Research">><<set $encyclopedia = "Hedonistic Decadence Research">><<goto "Encyclopedia">><</link>> | <<link "Eugenics Breeding Proposal">><<set $encyclopedia = "Eugenics Breeding Proposal">><<goto "Encyclopedia">><</link>> | <<link "Repopulationist Breeding School">><<set $encyclopedia = "Repopulationist Breeding School">><<goto "Encyclopedia">><</link>> | <<link "Escort">><<set $encyclopedia = "Escort">><<goto "Encyclopedia">><</link>> | <<link "Servant">><<set $encyclopedia = "Servant">><<goto "Encyclopedia">><</link>> | <<link "Gang Leader">><<set $encyclopedia = "Gang Leader">><<goto "Encyclopedia">><</link>> | <<link "Hyper-pregnancy">><<set $encyclopedia = "Hyper-pregnancy">><<goto "Encyclopedia">><</link>> | <<link "Super Fertility Drugs">><<set $encyclopedia = "Super Fertility Drugs">><<goto "Encyclopedia">><</link>> | <<link "Pregnancy Generator">><<set $encyclopedia = "Pregnancy Generator">><<goto "Encyclopedia">><</link>> | <<link "Childbirth and C-Secs">><<set $encyclopedia = "Childbirth and C-Secs">><<goto "Encyclopedia">><</link>> | <<link "Enemas and Force-Feeding">><<set $encyclopedia = "Enemas and Force-Feeding">><<goto "Encyclopedia">><</link>> | <<link "Belly Implants">><<set $encyclopedia = "Belly Implants">><<goto "Encyclopedia">><</link>> | <<link "Cervix Micropump Filter">><<set $encyclopedia = "Cervix Micropump Filter">><<goto "Encyclopedia">><</link>> | <<link "Organic Mesh Breast Implant">><<set $encyclopedia = "Organic Mesh Breast Implant">><<goto "Encyclopedia">><</link>> | <<link "Ejaculation Boosting Prostate Implant">><<set $encyclopedia = "Ejaculation Boosting Prostate Implant">><<goto "Encyclopedia">><</link>> | <<link "Player Pregnancy">><<set $encyclopedia = "Player Pregnancy">><<goto "Encyclopedia">><</link>> | <<link "The Flesh Heap">><<set $encyclopedia = "The Flesh Heap">><<goto "Encyclopedia">><</link>> | <<link "The Job Fulfillment Center">><<set $encyclopedia = "The Job Fulfillment Center">><<goto "Encyclopedia">><</link>> | <<link "Gestation Drugs and Labor Suppressants">><<set $encyclopedia = "Gestation Drugs and Labor Suppressants">><<goto "Encyclopedia">><</link>>
-<br>Lolimod: <<link "Lolis and the Free Cities">><<set $encyclopedia = "Lolis and the Free Cities">><<goto "Encyclopedia">><</link>> | <<link "Fertility Age">><<set $encyclopedia = "Fertility Age">><<goto "Encyclopedia">><</link>> | <<link "Male Fertility">><<set $encyclopedia = "Male Fertility">><<goto "Encyclopedia">><</link>> | <<link "Precocious Puberty">><<set $encyclopedia = "Precocious Puberty">><<goto "Encyclopedia">><</link>> | <<link "Cradle Robbers">><<set $encyclopedia = "Cradle Robbers">><<goto "Encyclopedia">><</link>> | <<link "The Incubation Facility">><<set $encyclopedia = "The Incubation Facility">><<goto "Encyclopedia">><</link>>
-<br>FCTV mod: <<link "FCTV">><<set $encyclopedia = "FCTV">><<goto "Encyclopedia">><</link>> | <<link "FCTVReceiver">><<set $encyclopedia = "FCTVReceiver">><<goto "Encyclopedia">><</link>>
+<br>Pregmod:
+<<link "Repopulationism">><<set $encyclopedia = "Repopulationism">><<goto "Encyclopedia">><</link>>
+| <<link "Eugenics Focus">><<set $encyclopedia = "Eugenics Focus">><<goto "Encyclopedia">><</link>>
+| <<link "Hedonistic Decadence">><<set $encyclopedia = "Hedonistic Decadence">><<goto "Encyclopedia">><</link>>
+| <<link "Gender Radicalism research">><<set $encyclopedia = "Gender Radicalism research">><<goto "Encyclopedia">><</link>>
+| <<link "Transformation Fetishism research">><<set $encyclopedia = "Transformation Fetishism research">><<goto "Encyclopedia">><</link>>
+| <<link "Asset Expansionist research">><<set $encyclopedia = "Asset Expansionist research">><<goto "Encyclopedia">><</link>>
+| <<link "Slimness Enthusiast research">><<set $encyclopedia = "Slimness Enthusiast research">><<goto "Encyclopedia">><</link>>
+| <<link "Youth Preferentialism Research">><<set $encyclopedia = "Youth Preferentialism Research">><<goto "Encyclopedia">><</link>>
+| <<link "Hedonistic Decadence Research">><<set $encyclopedia = "Hedonistic Decadence Research">><<goto "Encyclopedia">><</link>>
+| <<link "Eugenics Breeding Proposal">><<set $encyclopedia = "Eugenics Breeding Proposal">><<goto "Encyclopedia">><</link>>
+| <<link "Repopulationist Breeding School">><<set $encyclopedia = "Repopulationist Breeding School">><<goto "Encyclopedia">><</link>>
+| <<link "Escort">><<set $encyclopedia = "Escort">><<goto "Encyclopedia">><</link>>
+| <<link "Servant">><<set $encyclopedia = "Servant">><<goto "Encyclopedia">><</link>>
+| <<link "Gang Leader">><<set $encyclopedia = "Gang Leader">><<goto "Encyclopedia">><</link>>
+| <<link "Slave Fertility">><<set $encyclopedia = "Slave Fertility">><<goto "Encyclopedia">><</link>>
+| <<link "Player Pregnancy">><<set $encyclopedia = "Player Pregnancy">><<goto "Encyclopedia">><</link>>
+| <<link "Hyper-pregnancy">><<set $encyclopedia = "Hyper-pregnancy">><<goto "Encyclopedia">><</link>>
+| <<link "Super Fertility Drugs">><<set $encyclopedia = "Super Fertility Drugs">><<goto "Encyclopedia">><</link>>
+| <<link "Fertility Mix">><<set $encyclopedia = "Fertility Mix">><<goto "Encyclopedia">><</link>>
+| <<link "Breeders Dietary Blend">><<set $encyclopedia = "Breeders Dietary Blend">><<goto "Encyclopedia">><</link>>
+| <<link "Pregnancy Generator">><<set $encyclopedia = "Pregnancy Generator">><<goto "Encyclopedia">><</link>>
+| <<link "Childbirth and C-Secs">><<set $encyclopedia = "Childbirth and C-Secs">><<goto "Encyclopedia">><</link>>
+| <<link "Gestation Drugs and Labor Suppressants">><<set $encyclopedia = "Gestation Drugs and Labor Suppressants">><<goto "Encyclopedia">><</link>>
+| <<link "Enemas and Force-Feeding">><<set $encyclopedia = "Enemas and Force-Feeding">><<goto "Encyclopedia">><</link>>
+| <<link "Belly Implants">><<set $encyclopedia = "Belly Implants">><<goto "Encyclopedia">><</link>>
+| <<link "Cervix Micropump Filter">><<set $encyclopedia = "Cervix Micropump Filter">><<goto "Encyclopedia">><</link>>
+| <<link "Organic Mesh Breast Implant">><<set $encyclopedia = "Organic Mesh Breast Implant">><<goto "Encyclopedia">><</link>>
+| <<link "Ejaculation Boosting Prostate Implant">><<set $encyclopedia = "Ejaculation Boosting Prostate Implant">><<goto "Encyclopedia">><</link>>
+| <<link "The Flesh Heap">><<set $encyclopedia = "The Flesh Heap">><<goto "Encyclopedia">><</link>>
+| <<link "The Job Fulfillment Center">><<set $encyclopedia = "The Job Fulfillment Center">><<goto "Encyclopedia">><</link>>
+
+<br>Lolimod:
+<<link "Lolis and the Free Cities">><<set $encyclopedia = "Lolis and the Free Cities">><<goto "Encyclopedia">><</link>>
+| <<link "Fertility Age">><<set $encyclopedia = "Fertility Age">><<goto "Encyclopedia">><</link>>
+| <<link "Male Fertility">><<set $encyclopedia = "Male Fertility">><<goto "Encyclopedia">><</link>>
+| <<link "Precocious Puberty">><<set $encyclopedia = "Precocious Puberty">><<goto "Encyclopedia">><</link>>
+| <<link "Cradle Robbers">><<set $encyclopedia = "Cradle Robbers">><<goto "Encyclopedia">><</link>>
+| <<link "The Incubation Facility">><<set $encyclopedia = "The Incubation Facility">><<goto "Encyclopedia">><</link>>
+
+<br>FCTV mod:
+<<link "FCTV">><<set $encyclopedia = "FCTV">><<goto "Encyclopedia">><</link>>
+| <<link "FCTVReceiver">><<set $encyclopedia = "FCTVReceiver">><<goto "Encyclopedia">><</link>>
+
 <<if $secExp == 1>>
-<br>The Security Expansion Mod: [[Security Expansion|Encyclopedia][$encyclopedia = "Security Expansion"]] | [[Battles in Security Expansion|Encyclopedia][$encyclopedia = "Battles"]]
+<br>The Security Expansion Mod: [[Security Expansion|Encyclopedia][$encyclopedia = "Security Expansion"]]
+| [[Battles in Security Expansion|Encyclopedia][$encyclopedia = "Battles"]]
 <</if>>
+
 <<if $securityForceActive>>
 <br>Special Force Mod:[[Special Force|Encyclopedia][$encyclopedia = "Special Force"]]
 <</if>>
diff --git a/src/init/dummy.tw b/src/init/dummy.tw
index cc831191cdf59cfa1561f6725f9390ecee75ecb6..eb3c2889072f01974996b77858de0b95a01634df 100644
--- a/src/init/dummy.tw
+++ b/src/init/dummy.tw
@@ -23,7 +23,7 @@ $ArcologyNamesEugenics, $ArcologyNamesRepopulationist, $ArcologyNamesHedonisticD
 $hare1, $hare2, $hare3, $hareSpeed, $hareSpeed1, $hareSpeed2, $hareSpeed3, $origin1, $origin2, $origin3, $LurcherSpeed
 $$i
 $activeSlave.bodySwap, $activeSlave.customImageFormat, $activeSlave.customHairVector, $activeSlave.shoeColor, $activeSlave.newGamePlus, $activeSlave.HasBeenAssignedToFacilitySupport, $activeSlave.nipplesAccessory
-$drugs
+$drugs, $harshCollars, $shoes, $bellyAccessories, $vaginalAccessories, $dickAccessories, $buttplugs
 $PC.origRace, $PC.origSkin
 $FacilitySupportCapacity
 $modded, $XY, $XX, $old, $young, $pregYes, $pregNo, $implanted, $unmodded
diff --git a/src/init/setupVars.tw b/src/init/setupVars.tw
index 18ceda704bb852a199a18273279a7b9aedb01eb7..61893887e2ecd902a3b357f0788fb14f80dae6c5 100644
--- a/src/init/setupVars.tw
+++ b/src/init/setupVars.tw
@@ -1,4 +1,4 @@
-:: setupVars [widget nobr]
+:: setupVars [widget nobr]
 
 /*
 * This passage is tagged as widget, so it will be loaded whenever any passage is loaded. The global setup object seems to reset itself to {} (empty object): until we figure out why, this is where we set properties for it.
@@ -15,19 +15,19 @@
 <<set setup.broodSizeOneShutDown = [0, 13090, 25340, 36760, 47360, 57160, 66030, 73960, 81060, 87400, 93040, 98040, 102440, 106290, 109620, 112460, 114860, 116850, 118470, 119760, 120760, 121520, 122070, 122460, 122720, 122880, 122980, 123030, 123050, 123060, 123060, 123060, 123060, 123060, 123060, 123060, 123060, 123060]>>
 
 /* START Custom Nationalities region filter */
-<<set setup.northamericaNationalities = ["American", "Mexican", "Dominican", "Canadian", "Haitian", "Cuban", "Puerto Rican", "Jamaican", "Guatemalan", "Bermudian", "Greenlandic", "Belizean", "Grenadian", "Honduran", "Costa Rican", "Salvadoran", "Nicaraguan", "Panamanian"]>>
+<<set setup.northamericaNationalities = ["American", "Bahamian", "Barbadian", "Belizean", "Bermudian", "Canadian", "Costa Rican", "Cuban", "Dominican", "Dominiquais", "Greenlandic", "Grenadian", "Guatemalan", "Haitian", "Honduran", "Jamaican", "Mexican", "Nicaraguan", "Panamanian", "Puerto Rican", "Salvadoran", "Trinidadian"]>>
 
-<<set setup.southamericaNationalities = ["Argentinian", "Bolivian", "Brazilian", "Chilean", "Colombian", "Guatemalan", "Peruvian", "Venezuelan", "Uruguayan", "Ecuadorian", "French Guianan", "Guyanese", "Paraguayan", "Surinamese"]>>
+<<set setup.southamericaNationalities = ["Argentinian", "Bolivian", "Brazilian", "Chilean", "Colombian", "Ecuadorian", "French Guianan", "Guyanese", "Paraguayan", "Peruvian", "Surinamese", "Uruguayan", "Venezuelan"]>>
 
-<<set setup.europeNationalities = ["Austrian", "Belarusian", "Belgian", "British", "Czech", "Danish", "Dutch", "Estonian", "Finnish", "French", "German", "Greek", "Hungarian", "Icelandic", "Irish", "Italian", "Lithuanian", "Norwegian", "Polish", "Portuguese", "Romanian", "Russian", "Scottish", "Serbian", "Slovak", "Spanish", "Swedish", "Swiss", "Ukrainian", "Sammarinese", "Monégasque", "Montenegrin", "Albanian", "Bosnian", "Croatian", "Kosovan", "Macedonian", "Maltese", "Andorran", "Bulgarian", "Luxembourgian", "Moldovan", "a Liechtensteiner", "Vatican", "Latvian", "Slovene"]>>
+<<set setup.europeNationalities = ["Albanian", "Andorran", "Austrian", "Belarusian", "Belgian", "Bosnian", "British", "Bulgarian", "Catalan", "Croatian", "Czech", "Danish", "Dutch", "Estonian", "Finnish", "French", "German", "Greek", "Hungarian", "Icelandic", "Irish", "Italian", "Kosovan", "Latvian", "a Liechtensteiner", "Lithuanian", "Luxembourgian", "Macedonian", "Maltese", "Moldovan", "Monégasque", "Montenegrin", "Norwegian", "Polish", "Portuguese", "Romanian", "Russian", "Sammarinese", "Scottish", "Serbian", "Slovak", "Slovene", "Spanish", "Swedish", "Swiss", "Ukrainian", "Vatican"]>>
 
-<<set setup.asiaNationalities = ["Bangladeshi", "Burmese", "Chinese", "Filipina", "Indian", "Indonesian", "Japanese", "Kazakh", "Korean", "Malaysian", "Nepalese", "Pakistani", "Thai", "Uzbek", "Vietnamese", "Cambodian", "Bruneian", "Singaporean", "Laotian", "Mongolian", "Taiwanese", "Maldivian", "Bhutanese", "East Timorese", "Kyrgyz", "Sri Lankan", "Tajik", "Turkmen"]>>
+<<set setup.asiaNationalities = ["Bangladeshi", "Bhutanese", "Bruneian", "Burmese", "Cambodian", "Chinese", "East Timorese", "Filipina", "Indian", "Indonesian", "Japanese", "Kazakh", "Korean", "Kyrgyz", "Laotian", "Malaysian", "Maldivian", "Mongolian", "Nepalese", "Pakistani", "Singaporean", "Sri Lankan", "Taiwanese", "Tajik", "Thai", "Tibetan", "Turkmen", "Uzbek", "Vietnamese"]>>
 
-<<set setup.middleeastNationalities = ["Afghan", "Armenian", "Egyptian", "Emirati", "Iranian", "Iraqi", "Israeli", "Jordanian", "Lebanese", "Omani", "Saudi", "Turkish", "Yemeni", "Syrian", "Azerbaijani", "Bahraini", "Cypriot", "Georgian", "Kuwaiti", "Qatari", "Palestinian"]>>
+<<set setup.middleeastNationalities = ["Afghan", "Armenian", "Azerbaijani", "Bahraini", "Cypriot", "Egyptian", "Emirati", "Georgian", "Iranian", "Iraqi", "Israeli", "Jordanian", "Kurdish", "Kuwaiti", "Lebanese", "Omani", "Palestinian", "Qatari", "Saudi", "Syrian", "Turkish", "Yemeni"]>>
 
-<<set setup.africaNationalities = ["Algerian", "Congolese", "Ethiopian", "Ghanan", "Kenyan", "Libyan", "Malian", "Moroccan", "Nigerian", "South African", "Sudanese", "Tanzanian", "Tunisian", "Ugandan", "Zimbabwean", "Cameroonian", "Gabonese", "Djiboutian", "Zambian", "Malagasy", "Nigerien", "Burundian", "Seychellois"]>>
+<<set setup.africaNationalities = ["Algerian", "Angolan", "Beninese", "Bissau-Guinean", "Burkinabé", "Burundian", "Cameroonian", "Cape Verdean", "Central African", "Chadian", "Comorian", "Congolese", "Djiboutian", "Equatoguinean", "Eritrean", "Ethiopian", "Gabonese", "Gambian", "Ghanan", "Guinean", "Ivorian", "Kenyan", "Liberian", "Libyan", "Malagasy", "Malawian", "Malian", "Mauritanian", "Mauritian", "Moroccan", "Mosotho", "Motswana", "Mozambican", "Namibian", "Nigerian", "Nigerien", "Rwandan", "Sahrawi", "São Toméan", "Senegalese", "Seychellois", "Sierra Leonean", "Somali", "South African", "South Sudanese", "Sudanese", "Swazi", "Tanzanian", "Togolese", "Tunisian", "Ugandan", "Zairian", "Zambian", "Zimbabwean"]>>
 
-<<set setup.australiaNationalities = ["Australian", "a New Zealander", "Marshallese", "Tuvaluan", "I-Kiribati", "Nauruan", "Micronesian", "Palauan", "Papua New Guinean", "a Cook Islander", "Fijian", "Ni-Vanuatu", "Niuean", "Samoan", "a Solomon Islander", "Tongan"]>>
+<<set setup.australiaNationalities = ["Australian", "a Cook Islander", "Fijian", "French Polynesian", "I-Kiribati", "Marshallese", "Micronesian", "Nauruan", "a New Zealander", "Ni-Vanuatu", "Niuean", "Palauan", "Papua New Guinean", "Samoan", "a Solomon Islander", "Tongan", "Tuvaluan"]>>
 
 /* Nationalities based on $continent value. Note that $continent can be undefined! */
 <<set setup.nationalityPoolSelector = {
@@ -45,187 +45,219 @@
 
 /*** pregmod exclusive end ***/
 
-/* Helper method to turn objects like {white: 5, black: 2, asian: 1} into weighted arrays */
-<<set window.weightedArray = function(obj) { return _(obj).toPairs().filter(p => _.isSafeInteger(p[1]) && p[1] > 0).flatMap(p => Array(p[1]).fill(p[0])).value(); }>>
-
-/* Nationality-to-race weighted arrays */
+/* Nationality-to-race weighted objects */
 <<set setup.raceSelector = {
-	"Afghan": weightedArray({"indo-aryan": 9, "middle eastern": 9, "mixed race": 2}),
-	"Algerian": weightedArray({"middle eastern": 9, "mixed race": 1}),
-	"American": weightedArray({black: 1, "middle eastern": 1, white: 3, latina: 2, asian: 1, amerindian: 1, "mixed race": 2}),
-	"Argentinian": weightedArray({white: 3, latina: 6, "mixed race": 1}),
-	"Armenian": weightedArray({"indo-aryan": 9, semitic: 9, "mixed race": 2}),
-	"Australian": weightedArray({white: 14, black: 2, asian: 4, "mixed race": 1}),
-	"Austrian": weightedArray({white: 9, "mixed race": 1}),
-	"Bangladeshi": weightedArray({"indo-aryan": 9, "mixed race": 1}),
-	"Belarusian": weightedArray({white: 9, "mixed race": 1}),
-	"Belgian": weightedArray({white: 9, "mixed race": 1}),
-	"Bolivian": weightedArray({latina: 9, amerindian: 9, "mixed race": 2}),
-	"Brazilian": weightedArray({black: 1, latina: 1, "mixed race": 3, amerindian: 1, white: 2, asian: 1}),
-	"British": weightedArray({"indo-aryan": 1, black: 1, white: 8, semitic: 1, "mixed race": 1}),
-	"Burmese": weightedArray({asian: 6, "indo-aryan": 3, "mixed race": 1}),
-	"Canadian": weightedArray({white: 16, asian: 2, amerindian: 2, "mixed race": 1}),
-	"Chilean": weightedArray({white: 2, latina: 6, "mixed race": 1}),
-	"Chinese": weightedArray({asian: 9, "mixed race": 1}),
-	"Colombian": weightedArray({latina: 9, "mixed race": 1}),
-	"Congolese": weightedArray({black: 9, "mixed race": 1}),
-	"Cuban": weightedArray({latina: 9, black: 9, "mixed race": 2}),
-	"Czech": weightedArray({white: 9, "mixed race": 1}),
-	"Danish": weightedArray({white: 9, "mixed race": 1}),
-	"Dominican": weightedArray({"mixed race": 7, white: 2, black: 1}),
-	"Dutch": weightedArray({white: 9, "mixed race": 1}),
-	"Egyptian": weightedArray({black: 2, "middle eastern": 6, semitic: 2, "mixed race": 1}),
-	"Emirati": weightedArray({"middle eastern": 9, "indo-aryan": 9, "mixed race": 2}),
-	"Estonian": weightedArray({white: 9, "mixed race": 1}),
-	"Ethiopian": weightedArray({black: 6, "middle eastern": 2, semitic: 2, "mixed race": 1}),
-	"Filipina": weightedArray({asian: 2, malay: 4, "pacific islander": 2, "mixed race": 1}),
-	"Finnish": weightedArray({white: 9, "mixed race": 1}),
-	"French": weightedArray({black: 1, "middle eastern": 1, white: 5, "southern european": 1, "mixed race": 1}),
-	"German": weightedArray({black: 1, "middle eastern": 1, white: 6, "mixed race": 1}),
-	"Ghanan": weightedArray({black: 6, semitic: 2, "mixed race": 1}),
-	"Greek": weightedArray({"southern european": 9, "mixed race": 1}),
-	"Guatemalan": weightedArray({latina: 9, amerindian: 9, "mixed race": 2}),
-	"Haitian": weightedArray({black: 9, "mixed race": 1}),
-	"Hungarian": weightedArray({white: 8, "indo-aryan": 2, "mixed race": 1}),
-	"Icelandic": weightedArray({white: 9, "mixed race": 1}),
-	"Indian": weightedArray({"indo-aryan": 9, "mixed race": 1}),
-	"Indonesian": weightedArray({asian: 2, malay: 6, "pacific islander": 2, "mixed race": 1}),
-	"Iraqi": weightedArray({semitic: 2, "middle eastern": 8, "mixed race": 1}),
-	"Iranian": weightedArray({"indo-aryan": 6, semitic: 2, "mixed race": 1}),
-	"Irish": weightedArray({white: 9, "mixed race": 1}),
-	"Israeli": weightedArray({white: 2, "middle eastern": 2, semitic: 4, "mixed race": 1}),
-	"Italian": weightedArray({"middle eastern": 2, "southern european": 4, white: 4, "mixed race": 1}),
-	"Jamaican": weightedArray({black: 9, "mixed race": 1}),
-	"Japanese": weightedArray({asian: 49, "mixed race": 1}),
-	"Jordanian": weightedArray({"middle eastern": 9, semitic: 9, "mixed race": 2}),
-	"Kazakh": weightedArray({asian: 6, semitic: 2, "indo-aryan": 2, "mixed race": 1}),
-	"Kenyan": weightedArray({black: 9, "mixed race": 1}),
-	"Korean": weightedArray({asian: 19, "mixed race": 1}),
-	"Lebanese": weightedArray({"middle eastern": 9, semitic: 9, "mixed race": 2}),
-	"Libyan": weightedArray({"middle eastern": 9, "mixed race": 1}),
-	"Lithuanian": weightedArray({white: 49, "mixed race": 1}),
-	"Malaysian": weightedArray({asian: 2, malay: 6, "mixed race": 1}),
-	"Malian": weightedArray({black: 10, "middle eastern": 2, "mixed race": 1}),
-	"Mexican": weightedArray({latina: 5, amerindian: 1, "mixed race": 1}),
-	"Moroccan": weightedArray({"middle eastern": 6, black: 2, "mixed race": 1}),
-	"Nepalese": weightedArray({asian: 6, "indo-aryan": 3, "mixed race": 1}),
-	"a New Zealander": weightedArray({white: 15, asian: 2, "pacific islander": 3, "mixed race": 1}),
-	"Nigerian": weightedArray({black: 9, "mixed race": 1}),
-	"Norwegian": weightedArray({white: 9, "mixed race": 1}),
-	"Omani": weightedArray({"middle eastern": 9, "indo-aryan": 9, "mixed race": 2}),
-	"Pakistani": weightedArray({"indo-aryan": 6, semitic: 2, "mixed race": 1}),
-	"Peruvian": weightedArray({latina: 9, amerindian: 9, "mixed race": 2}),
-	"Polish": weightedArray({white: 49, "mixed race": 1}),
-	"Portuguese": weightedArray({white: 9, "mixed race": 1}),
-	"Puerto Rican": weightedArray({latina: 9, "mixed race": 1}),
-	"Romanian": weightedArray({semitic: 8, white: 33, "indo-aryan": 8, "mixed race": 1}),
-	"Russian": weightedArray({white: 9, "mixed race": 1}),
-	"Saudi": weightedArray({black: 2, asian: 2, "middle eastern": 4, "mixed race": 1}),
-	"Scottish": weightedArray({"middle eastern": 1, "indo-aryan": 1, white: 7, "mixed race": 1}),
-	"Serbian": weightedArray({white: 9, "mixed race": 1}),
-	"Slovak": weightedArray({white: 8, "indo-aryan": 2, "mixed race": 1}),
-	"South African": weightedArray({black: 6, white: 3, "mixed race": 1}),
-	"Spanish": weightedArray({semitic: 3, "southern european": 6, "mixed race": 1}),
-	"Sudanese": weightedArray({black: 6, "middle eastern": 3, "mixed race": 1}),
-	"Swedish": weightedArray({"middle eastern": 2, white: 8, "mixed race": 1}),
-	"Swiss": weightedArray({white: 9, "mixed race": 1}),
-	"Tanzanian": weightedArray({black: 6, semitic: 2, "mixed race": 1}),
-	"Thai": weightedArray({asian: 6, malay: 3, "mixed race": 1}),
-	"Tunisian": weightedArray({"middle eastern": 9, "mixed race": 1}),
-	"Turkish": weightedArray({"middle eastern": 6, semitic: 2, "mixed race": 1}),
-	"Ugandan": weightedArray({black: 9, "mixed race": 1}),
-	"Ukrainian": weightedArray({white: 9, "mixed race": 1}),
-	"Uzbek": weightedArray({asian: 9, "mixed race": 1}),
-	"Venezuelan": weightedArray({latina: 9, "mixed race": 1}),
-	"Vietnamese": weightedArray({asian: 9, "mixed race": 1}),
-	"Yemeni": weightedArray({black: 2, semitic: 2, "middle eastern": 6, "mixed race": 1}),
-	"Zimbabwean": weightedArray({black: 8, white: 2, "mixed race": 1}),
+	"Afghan": {"indo-aryan": 9, "middle eastern": 9, "mixed race": 2},
+	"Algerian": {"middle eastern": 9, "mixed race": 1},
+	"American": {black: 1, "middle eastern": 1, white: 3, latina: 2, asian: 1, amerindian: 1, "mixed race": 2},
+	"Argentinian": {white: 3, latina: 6, "mixed race": 1},
+	"Armenian": {"indo-aryan": 9, semitic: 9, "mixed race": 2},
+	"Australian": {white: 14, black: 2, asian: 4, "mixed race": 1},
+	"Austrian": {white: 9, "mixed race": 1},
+	"Bangladeshi": {"indo-aryan": 9, "mixed race": 1},
+	"Belarusian": {white: 9, "mixed race": 1},
+	"Belgian": {white: 9, "mixed race": 1},
+	"Bolivian": {latina: 9, amerindian: 9, "mixed race": 2},
+	"Brazilian": {black: 1, latina: 1, "mixed race": 3, amerindian: 1, white: 2, asian: 1},
+	"British": {"indo-aryan": 1, black: 1, white: 8, semitic: 1, "mixed race": 1},
+	"Burmese": {asian: 6, "indo-aryan": 3, "mixed race": 1},
+	"Canadian": {white: 16, asian: 2, amerindian: 2, "mixed race": 1},
+	"Chilean": {white: 2, latina: 6, "mixed race": 1},
+	"Chinese": {asian: 9, "mixed race": 1},
+	"Colombian": {latina: 9, "mixed race": 1},
+	"Congolese": {black: 9, "mixed race": 1},
+	"Cuban": {latina: 9, black: 9, "mixed race": 2},
+	"Czech": {white: 9, "mixed race": 1},
+	"Danish": {white: 9, "mixed race": 1},
+	"Dominican": {"mixed race": 7, white: 2, black: 1},
+	"Dutch": {white: 9, "mixed race": 1},
+	"Egyptian": {black: 2, "middle eastern": 6, semitic: 2, "mixed race": 1},
+	"Emirati": {"middle eastern": 9, "indo-aryan": 9, "mixed race": 2},
+	"Estonian": {white: 9, "mixed race": 1},
+	"Ethiopian": {black: 6, "middle eastern": 2, semitic: 2, "mixed race": 1},
+	"Filipina": {asian: 2, malay: 4, "pacific islander": 2, "mixed race": 1},
+	"Finnish": {white: 9, "mixed race": 1},
+	"French": {black: 1, "middle eastern": 1, white: 5, "southern european": 1, "mixed race": 1},
+	"German": {black: 1, "middle eastern": 1, white: 6, "mixed race": 1},
+	"Ghanan": {black: 6, semitic: 2, "mixed race": 1},
+	"Greek": {"southern european": 9, "mixed race": 1},
+	"Guatemalan": {latina: 9, amerindian: 9, "mixed race": 2},
+	"Haitian": {black: 9, "mixed race": 1},
+	"Hungarian": {white: 8, "indo-aryan": 2, "mixed race": 1},
+	"Icelandic": {white: 9, "mixed race": 1},
+	"Indian": {"indo-aryan": 9, "mixed race": 1},
+	"Indonesian": {asian: 2, malay: 6, "pacific islander": 2, "mixed race": 1},
+	"Iraqi": {semitic: 2, "middle eastern": 8, "mixed race": 1},
+	"Iranian": {"indo-aryan": 6, semitic: 2, "mixed race": 1},
+	"Irish": {white: 9, "mixed race": 1},
+	"Israeli": {white: 2, "middle eastern": 2, semitic: 4, "mixed race": 1},
+	"Italian": {"middle eastern": 2, "southern european": 4, white: 4, "mixed race": 1},
+	"Jamaican": {black: 9, "mixed race": 1},
+	"Japanese": {asian: 49, "mixed race": 1},
+	"Jordanian": {"middle eastern": 9, semitic: 9, "mixed race": 2},
+	"Kazakh": {asian: 6, semitic: 2, "indo-aryan": 2, "mixed race": 1},
+	"Kenyan": {black: 9, "mixed race": 1},
+	"Korean": {asian: 19, "mixed race": 1},
+	"Lebanese": {"middle eastern": 9, semitic: 9, "mixed race": 2},
+	"Libyan": {"middle eastern": 9, "mixed race": 1},
+	"Lithuanian": {white: 49, "mixed race": 1},
+	"Malaysian": {asian: 2, malay: 6, "mixed race": 1},
+	"Malian": {black: 10, "middle eastern": 2, "mixed race": 1},
+	"Mexican": {latina: 5, amerindian: 1, "mixed race": 1},
+	"Moroccan": {"middle eastern": 6, black: 2, "mixed race": 1},
+	"Nepalese": {asian: 6, "indo-aryan": 3, "mixed race": 1},
+	"a New Zealander": {white: 15, asian: 2, "pacific islander": 3, "mixed race": 1},
+	"Nigerian": {black: 9, "mixed race": 1},
+	"Norwegian": {white: 9, "mixed race": 1},
+	"Omani": {"middle eastern": 9, "indo-aryan": 9, "mixed race": 2},
+	"Pakistani": {"indo-aryan": 6, semitic: 2, "mixed race": 1},
+	"Peruvian": {latina: 9, amerindian: 9, "mixed race": 2},
+	"Polish": {white: 49, "mixed race": 1},
+	"Portuguese": {white: 9, "mixed race": 1},
+	"Puerto Rican": {latina: 9, "mixed race": 1},
+	"Romanian": {semitic: 8, white: 33, "indo-aryan": 8, "mixed race": 1},
+	"Russian": {white: 9, "mixed race": 1},
+	"Saudi": {black: 2, asian: 2, "middle eastern": 4, "mixed race": 1},
+	"Scottish": {"middle eastern": 1, "indo-aryan": 1, white: 7, "mixed race": 1},
+	"Serbian": {white: 9, "mixed race": 1},
+	"Slovak": {white: 8, "indo-aryan": 2, "mixed race": 1},
+	"South African": {black: 6, white: 3, "mixed race": 1},
+	"Spanish": {semitic: 3, "southern european": 6, "mixed race": 1},
+	"Sudanese": {black: 6, "middle eastern": 3, "mixed race": 1},
+	"Swedish": {"middle eastern": 2, white: 8, "mixed race": 1},
+	"Swiss": {white: 9, "mixed race": 1},
+	"Tanzanian": {black: 6, semitic: 2, "mixed race": 1},
+	"Thai": {asian: 6, malay: 3, "mixed race": 1},
+	"Tunisian": {"middle eastern": 9, "mixed race": 1},
+	"Turkish": {"middle eastern": 6, semitic: 2, "mixed race": 1},
+	"Ugandan": {black: 9, "mixed race": 1},
+	"Ukrainian": {white: 9, "mixed race": 1},
+	"Uzbek": {asian: 9, "mixed race": 1},
+	"Venezuelan": {latina: 9, "mixed race": 1},
+	"Vietnamese": {asian: 9, "mixed race": 1},
+	"Yemeni": {black: 2, semitic: 2, "middle eastern": 6, "mixed race": 1},
+	"Zimbabwean": {black: 8, white: 2, "mixed race": 1},
 	/* these need some love, for now they are default */
-	"Albanian": weightedArray({white: 9, "mixed race": 1}),
-	"Andorran": weightedArray({"southern european": 6, white: 2, "mixed race": 1}),
-	"Antiguan": weightedArray({black: 8, white: 1, "mixed race": 1}),
-	"Aruban": weightedArray({latina: 7, black: 3, "mixed race": 1}),
-	"Azerbaijani": weightedArray({semitic: 6, "indo-aryan": 4, "mixed race": 1}),
-	"Bahamian": weightedArray({black: 8, white: 1, "mixed race": 1}),
-	"Bahraini": weightedArray({"indo-aryan": 9, "middle eastern": 9, "mixed race": 2}),
-	"Barbadian": weightedArray({black: 8, "mixed race": 2}),
-	"Belizean": weightedArray({latina: 7, black: 2, amerindian: 1, "mixed race": 1}),
-	"Bermudian": weightedArray({black: 8, white: 2, "mixed race": 1}),
-	"Bhutanese": weightedArray({asian: 9, "mixed race": 1}),
-	"Bosnian": weightedArray({white: 9, "mixed race": 1}),
-	"Bruneian": weightedArray({malay: 30, asian: 12, "indo-aryan": 8, "mixed race": 1}),
-	"Bulgarian": weightedArray({white: 44, "middle eastern": 4, "indo-aryan": 1, "mixed race": 1}),
-	"Burundian": weightedArray({black: 9, "mixed race": 1}),
-	"Cambodian": weightedArray({asian: 9, "mixed race": 1}),
-	"Cameroonian": weightedArray({black: 9, "mixed race": 1}),
-	"a Cook Islander": weightedArray({"pacific islander": 29, "mixed race": 1}),
-	"Costa Rican": weightedArray({latina: 7, white: 2, "mixed race": 1}),
-	"Croatian": weightedArray({white: 49, "mixed race": 1}),
-	"Cypriot": weightedArray({"southern european": 6, "middle eastern": 3, "mixed race": 1}),
-	"Djiboutian": weightedArray({black: 8, "middle eastern": 2, "mixed race": 1}),
-	"Dominiquais": weightedArray({black: 8, "mixed race": 3}),
-	"East Timorese": weightedArray({malay: 6, "pacific islander": 6, "mixed race": 1}),
-	"Ecuadorian": weightedArray({latina: 8, black: 2, white: 2, amerindian: 2, "mixed race": 1}),
-	"Fijian": weightedArray({"indo-aryan": 6, "pacific islander": 6, "mixed race": 1}),
-	"French Guianan": weightedArray({black: 8, white: 2, "mixed race": 1}),
-	"Gabonese": weightedArray({black: 9, "mixed race": 1}),
-	"Georgian": weightedArray({semitic: 6, "indo-aryan": 5, "mixed race": 1}),
-	"Greenlandic": weightedArray({amerindian: 40, white: 9, "mixed race": 1}),
-	"Grenadian": weightedArray({black: 9, "mixed race": 1}),
-	"Guyanese": weightedArray({black: 4, "indo-aryan": 3, amerindian: 2, "mixed race": 1}),
-	"Honduran": weightedArray({latina: 40, amerindian: 8, "mixed race": 2}),
-	"I-Kiribati": weightedArray({"pacific islander": 49, "mixed race": 1}),
-	"Kittitian": weightedArray({black: 9, "mixed race": 1}),
-	"Kosovan": weightedArray({white: 9, "mixed race": 1}),
-	"Kuwaiti": weightedArray({"middle eastern": 7, "indo-aryan": 4, "mixed race": 1}),
-	"Kyrgyz": weightedArray({asian: 8, white: 2, "mixed race": 1}),
-	"Laotian": weightedArray({asian: 9, "mixed race": 1}),
-	"Latvian": weightedArray({white: 49, "mixed race": 1}),
-	"a Liechtensteiner":  weightedArray({white: 10, "middle eastern": 3, "mixed race": 1}),
-	"Luxembourgian": weightedArray({white: 6, "southern european": 2, "mixed race": 1}),
-	"Macedonian": weightedArray({white: 9, "mixed race": 1}),
-	"Malagasy": weightedArray({black: 4, "indo-aryan": 4, "mixed race": 1}),
-	"Maldivian": weightedArray({"indo-aryan": 9, "mixed race": 1}),
-	"Maltese": weightedArray({"southern european": 9, "mixed race": 1}),
-	"Marshallese": weightedArray({"pacific islander": 9, "mixed race": 1}),
-	"Micronesian": weightedArray({"pacific islander": 9, "mixed race": 1}),
-	"Moldovan": weightedArray({white: 9, "mixed race": 1}),
-	"Monégasque": weightedArray({"southern european": 9, "mixed race": 1}),
-	"Mongolian": weightedArray({asian: 49, "mixed race": 1}),
-	"Montenegrin": weightedArray({white: 9, "mixed race": 1}),
-	"Nauruan": weightedArray({"pacific islander": 49, "mixed race": 1}),
-	"Ni-Vanuatu": weightedArray({"pacific islander": 49, "mixed race": 1}),
-	"Nicaraguan": weightedArray({latina: 10, white: 6, black: 3, "mixed race": 1}),
-	"Nigerien": weightedArray({black: 9, "mixed race": 1}),
-	"Niuean": weightedArray({"pacific islander": 15, white: 7, asian: 7, "mixed race": 1}),
-	"Palauan": weightedArray({"pacific islander": 25, asian: 7, "mixed race": 1}),
-	"Palestinian": weightedArray({"middle eastern": 6, semitic: 2, "mixed race": 1}),
-	"Panamanian": weightedArray({latina: 10, white: 3, black: 3, amerindian: 3, "mixed race": 1}),
-	"Papua New Guinean": weightedArray({malay: 6, "pacific islander": 3, "mixed race": 1}),
-	"Paraguayan": weightedArray({latina: 9, "mixed race": 1}),
-	"Qatari": weightedArray({"middle eastern": 10, "indo-aryan": 5, asian: 2, "mixed race": 1}),
-	"Saint Lucian": weightedArray({black: 9, "mixed race": 1}),
-	"Salvadoran": weightedArray({latina: 7, white: 2, "mixed race": 1}),
-	"Sammarinese": weightedArray({"southern european": 9, "mixed race": 1}),
-	"Samoan": weightedArray({"pacific islander": 49, "mixed race": 1}),
-	"Seychellois": weightedArray({black: 9, "mixed race": 1}),
-	"Singaporean": weightedArray({asian: 30, malay: 12, "indo-aryan": 8, "mixed race": 1}),
-	"Slovene": weightedArray({white: 9, "mixed race": 1}),
-	"a Solomon Islander": weightedArray({"pacific islander": 49, "mixed race": 1}),
-	"Sri Lankan": weightedArray({"indo-aryan": 9, "mixed race": 1}),
-	"Surinamese": weightedArray({black: 6, malay: 3, "indo-aryan": 6, "mixed race": 2}),
-	"Syrian": weightedArray({semitic: 2, "middle eastern": 8, "mixed race": 1}),
-	"Taiwanese": weightedArray({asian: 9, "mixed race": 1}),
-	"Tajik": weightedArray({"indo-aryan": 6, asian: 2, "mixed race": 1}),
-	"Tongan": weightedArray({"pacific islander": 49, "mixed race": 1}),
-	"Trinidadian": weightedArray({black: 3, "indo-aryan": 3, white: 2, "mixed race": 1}),
-	"Turkmen": weightedArray({"indo-aryan": 10, white: 3, "mixed race": 1}),
-	"Tuvaluan": weightedArray({"pacific islander": 9, "mixed race": 1}),
-	"Uruguayan": weightedArray({white: 2, latina: 6, "mixed race": 1}),
-	"Vatican": weightedArray({white: 5, "southern european": 5, "mixed race": 1}),
-	"Vincentian": weightedArray({black: 10, "indo-aryan": 2, "mixed race": 5}),
-	"Zambian": weightedArray({black: 9, "mixed race": 1}),
-	"": weightedArray({white: 9, "mixed race": 1}), /* default mix */
+	"Albanian": {white: 9, "mixed race": 1},
+	"Angolan": {black: 9, "mixed race": 1},
+	"Andorran": {"southern european": 6, white: 2, "mixed race": 1},
+	"Antiguan": {black: 8, white: 1, "mixed race": 1},
+	"Aruban": {latina: 7, black: 3, "mixed race": 1},
+	"Azerbaijani": {semitic: 6, "indo-aryan": 4, "mixed race": 1},
+	"Bahamian": {black: 8, white: 1, "mixed race": 1},
+	"Bahraini": {"indo-aryan": 9, "middle eastern": 9, "mixed race": 2},
+	"Barbadian": {black: 8, "mixed race": 2},
+	"Belizean": {latina: 7, black: 2, amerindian: 1, "mixed race": 1},
+	"Beninese": {black: 9, "mixed race": 1},
+	"Bermudian": {black: 8, white: 2, "mixed race": 1},
+	"Bhutanese": {asian: 9, "mixed race": 1},
+	"Bissau-Guinean": {black: 9, "mixed race": 1},
+	"Bosnian": {white: 9, "mixed race": 1},
+	"Bruneian": {malay: 30, asian: 12, "indo-aryan": 8, "mixed race": 1},
+	"Bulgarian": {white: 44, "middle eastern": 4, "indo-aryan": 1, "mixed race": 1},
+	"Burkinabé": {black: 9, "mixed race": 1},
+	"Burundian": {black: 9, "mixed race": 1},
+	"Cambodian": {asian: 9, "mixed race": 1},
+	"Cameroonian": {black: 9, "mixed race": 1},
+	"Cape Verdean": {black: 1, "mixed race": 4},
+	"Catalan": {"southern european": 9, "mixed race": 1},
+	"Central African": {black: 9, "mixed race": 1},
+	"Chadian": {black: 8, "middle eastern": 1, "mixed race": 1},
+	"Comorian": {black: 6, "middle eastern": 3, "mixed race": 1},
+	"a Cook Islander": {"pacific islander": 29, "mixed race": 1},
+	"Costa Rican": {latina: 7, white: 2, "mixed race": 1},
+	"Croatian": {white: 49, "mixed race": 1},
+	"Cypriot": {"southern european": 6, "middle eastern": 3, "mixed race": 1},
+	"Djiboutian": {black: 8, "middle eastern": 2, "mixed race": 1},
+	"Dominiquais": {black: 8, "mixed race": 3},
+	"East Timorese": {malay: 6, "pacific islander": 6, "mixed race": 1},
+	"Ecuadorian": {latina: 8, black: 2, white: 2, amerindian: 2, "mixed race": 1},
+	"Equatoguinean": {black: 9, "mixed race": 1},
+	"Eritrean": {black: 6, "middle eastern": 3, "mixed race": 1},
+	"Fijian": {"indo-aryan": 6, "pacific islander": 6, "mixed race": 1},
+	"French Guianan": {black: 8, white: 2, "mixed race": 1},
+	"French Polynesian": {"pacific islander": 9, asian: 1, "mixed race": 1},
+	"Gabonese": {black: 9, "mixed race": 1},
+	"Gambian": {black: 9, "mixed race": 1},
+	"Georgian": {semitic: 6, "indo-aryan": 5, "mixed race": 1},
+	"Greenlandic": {amerindian: 40, white: 9, "mixed race": 1},
+	"Grenadian": {black: 9, "mixed race": 1},
+	"Guinean": {black: 9, "mixed race": 1},
+	"Guyanese": {black: 4, "indo-aryan": 3, amerindian: 2, "mixed race": 1},
+	"Honduran": {latina: 40, amerindian: 8, "mixed race": 2},
+	"I-Kiribati": {"pacific islander": 49, "mixed race": 1},
+	"Ivorian": {black: 9, "mixed race": 1},
+	"Kittitian": {black: 9, "mixed race": 1},
+	"Kosovan": {white: 9, "mixed race": 1},
+	"Kurdish": {"indo-aryan": 8, semitic: 1, "middle eastern": 1, "mixed race": 1},
+	"Kuwaiti": {"middle eastern": 7, "indo-aryan": 4, "mixed race": 1},
+	"Kyrgyz": {asian: 8, white: 2, "mixed race": 1},
+	"Laotian": {asian: 9, "mixed race": 1},
+	"Latvian": {white: 49, "mixed race": 1},
+	"Liberian": {black: 9, "mixed race": 1},
+	"a Liechtensteiner":  {white: 10, "middle eastern": 3, "mixed race": 1},
+	"Luxembourgian": {white: 6, "southern european": 2, "mixed race": 1},
+	"Macedonian": {white: 9, "mixed race": 1},
+	"Malagasy": {black: 4, "indo-aryan": 4, "mixed race": 1},
+	"Malawian": {black: 9, "mixed race": 1},
+	"Maldivian": {"indo-aryan": 9, "mixed race": 1},
+	"Maltese": {"southern european": 9, "mixed race": 1},
+	"Marshallese": {"pacific islander": 9, "mixed race": 1},
+	"Mauritanian": {black: 6, "middle eastern": 3, "mixed race": 1},
+	"Mauritian": {"indo-aryan": 6, black: 2, "mixed race": 2},
+	"Micronesian": {"pacific islander": 9, "mixed race": 1},
+	"Moldovan": {white: 9, "mixed race": 1},
+	"Monégasque": {"southern european": 9, "mixed race": 1},
+	"Mongolian": {asian: 49, "mixed race": 1},
+	"Montenegrin": {white: 9, "mixed race": 1},
+	"Mosotho": {black: 9, "mixed race": 1},
+	"Motswana": {black: 9, "mixed race": 1},
+	"Mozambican": {black: 9, "mixed race": 1},
+	"Namibian": {black: 9, white: 1, "mixed race": 1},
+	"Nauruan": {"pacific islander": 49, "mixed race": 1},
+	"Ni-Vanuatu": {"pacific islander": 49, "mixed race": 1},
+	"Nicaraguan": {latina: 10, white: 6, black: 3, "mixed race": 1},
+	"Nigerien": {black: 9, "mixed race": 1},
+	"Niuean": {"pacific islander": 15, white: 7, asian: 7, "mixed race": 1},
+	"Palauan": {"pacific islander": 25, asian: 7, "mixed race": 1},
+	"Palestinian": {"middle eastern": 6, semitic: 2, "mixed race": 1},
+	"Panamanian": {latina: 10, white: 3, black: 3, amerindian: 3, "mixed race": 1},
+	"Papua New Guinean": {malay: 6, "pacific islander": 3, "mixed race": 1},
+	"Paraguayan": {latina: 9, "mixed race": 1},
+	"Qatari": {"middle eastern": 10, "indo-aryan": 5, asian: 2, "mixed race": 1},
+	"Rwandan": {black: 9, "mixed race": 1},
+	"Sahrawi": {black: 5, "middle eastern": 5, "mixed race": 1},
+	"Saint Lucian": {black: 9, "mixed race": 1},
+	"Salvadoran": {latina: 7, white: 2, "mixed race": 1},
+	"Sammarinese": {"southern european": 9, "mixed race": 1},
+	"Samoan": {"pacific islander": 49, "mixed race": 1},
+	"São Toméan": {black: 4, "mixed race": 1},
+	"Senegalese": {black: 9, "mixed race": 1},
+	"Seychellois": {black: 9, "mixed race": 1},
+	"Sierra Leonean": {black: 9, "mixed race": 1},
+	"Singaporean": {asian: 30, malay: 12, "indo-aryan": 8, "mixed race": 1},
+	"Slovene": {white: 9, "mixed race": 1},
+	"a Solomon Islander": {"pacific islander": 49, "mixed race": 1},
+	"Somali": {black: 9, "middle eastern": 1, "mixed race": 1},
+	"South Sudanese": {black: 9, "mixed race": 1},
+	"Sri Lankan": {"indo-aryan": 9, "mixed race": 1},
+	"Surinamese": {black: 6, malay: 3, "indo-aryan": 6, "mixed race": 2},
+	"Swazi": {black: 9, white: 1, "mixed race": 1},
+	"Syrian": {semitic: 2, "middle eastern": 8, "mixed race": 1},
+	"Taiwanese": {asian: 9, "mixed race": 1},
+	"Tajik": {"indo-aryan": 6, asian: 2, "mixed race": 1},
+	"Tibetan": {asian: 9, "mixed race": 1},
+	"Togolese": {black: 9, "mixed race": 1},
+	"Tongan": {"pacific islander": 49, "mixed race": 1},
+	"Trinidadian": {black: 3, "indo-aryan": 3, white: 2, "mixed race": 1},
+	"Turkmen": {"indo-aryan": 10, white: 3, "mixed race": 1},
+	"Tuvaluan": {"pacific islander": 9, "mixed race": 1},
+	"Uruguayan": {white: 2, latina: 6, "mixed race": 1},
+	"Vatican": {white: 5, "southern european": 5, "mixed race": 1},
+	"Vincentian": {black: 10, "indo-aryan": 2, "mixed race": 5},
+	"Zairian": {black: 9, "mixed race": 1},
+	"Zambian": {black: 9, "mixed race": 1},
+	"": {"white": 9, "mixed race": 1}, /* default mix */
 }>>
 
 <<set setup.servantMilkersJobs = ["be a servant", "work as a servant", "take classes", "please you", "be a subordinate slave", "stay confined", "recruit girls", "rest"]>>
@@ -237,27 +269,27 @@
 <<set setup.modestClothes = ["conservative clothing", "a toga", "a huipil", "a slutty qipao", "restrictive latex", "cutoffs and a t-shirt", "battledress", "a penitent nuns habit", "a slave gown", "slutty business attire", "nice business attire", "a comfortable bodysuit", "a leotard", "a bunny outfit", "a nice nurse outfit", "a slutty nurse outfit", "a schoolgirl outfit", "a hijab and abaya", "a kimono", "a nice maid outfit", "a slutty maid outfit", "a ball gown", "a halter top dress", "a mini dress", "a latex catsuit", "a military uniform", "a maternity dress", "spats and a tank top"]>>
 
 
-<<set setup.veryYoungCareers = ["a babysitter", "a beggar", "a beggar", "a cheerleader", "a child actress", "a child prostitute", "a child prostitute", "a child soldier", "a child soldier", "a club recruiter", "a dropout", "a dropout", "a farmer's daughter", "a girl scout", "a girl scout", "a handmaiden", "a juvenile delinquent", "a juvenile delinquent", "a military brat", "a model", "a model-UN star", "a pageant star", "a paper girl", "a part-time farm laborer", "a pick-pocket", "a refugee", "a refugee", "a refugee", "a street thug", "a street urchin", "a street urchin", "a street urchin", "a student council president", "a student from a boarding school", "a student from a private school", "a student from a public school", "a student from a public school", "a student from a public school", "a student from a public school", "a student from a public school", "a sweatshop worker", "a sweatshop worker", "a sweatshop worker", "a sweatshop worker", "an orphan", "an orphan", "an orphan", "an orphan", "an orphan", "being homeschooled by her parents", "captain of the kendo club", "from a lower class family", "from a lower class family", "from a lower class family", "from a middle class family", "from a middle class family", "from an upper class family", "homeless", "homeless", "homeless", "a cum dump", "a meat toilet", "a shrine maiden"]>> /* pregmod */
+<<set setup.veryYoungCareers = ["a babysitter", "a beggar", "a beggar", "a cheerleader", "a child actress", "a child prostitute", "a child prostitute", "a child soldier", "a child soldier", "a club recruiter", "a cum dump", "a dropout", "a dropout", "a farmer's daughter", "a girl scout", "a girl scout", "a handmaiden", "a juvenile delinquent", "a juvenile delinquent", "a meat toilet", "a military brat", "a model-UN star", "a model", "a pageant star", "a paper girl", "a part-time farm laborer", "a pick-pocket", "a refugee", "a refugee", "a refugee", "a shrine maiden", "a street thug", "a street urchin", "a street urchin", "a street urchin", "a student council president", "a student from a boarding school", "a student from a private school", "a student from a public school", "a student from a public school", "a student from a public school", "a student from a public school", "a student from a public school", "a sweatshop worker", "a sweatshop worker", "a sweatshop worker", "a sweatshop worker", "an orphan", "an orphan", "an orphan", "an orphan", "an orphan", "being homeschooled by her parents", "captain of the kendo club", "from a lower class family", "from a lower class family", "from a lower class family", "from a middle class family", "from a middle class family", "from an upper class family", "homeless", "homeless", "homeless"]>> /* pregmod */
 
-<<set setup.youngCareers = ["a barista", "a bartender", "a camgirl", "a cheerleader", "a cook", "a courier", "a criminal", "a factory worker", "a farm laborer", "a farm laborer", "a farmer's daughter", "a gang member", "a gang member", "a handmaiden", "a housesitter", "a housewife", "a maid", "a model", "a political activist", "a prisoner", "a prostitute", "a racing driver", "a refugee", "a ride attendant", "a saleswoman", "a secretary", "a security guard", "a service worker", "a soldier", "a stripper", "a student", "a student", "a student", "a teaching assistant", "a truck driver", "a waitress", "an air hostess", "an apprentice", "an arcade attendant", "an assassin", "an exotic dancer", "an office worker", "unemployed", "unemployed", "unemployed", "unemployed", "unemployed", "a cum dump", "a meat toilet", "a shrine maiden"]>>
+<<set setup.youngCareers = ["a ballerina", "a barista", "a bartender", "a camgirl", "a cheerleader", "a cook", "a courier", "a criminal", "a cum dump", "a factory worker", "a farm laborer", "a farm laborer", "a farmer's daughter", "a gang member", "a gang member", "a handmaiden", "a housesitter", "a housewife", "a maid", "a meat toilet", "a model", "a political activist", "a prisoner", "a prostitute", "a racing driver", "a refugee", "a ride attendant", "a saleswoman", "a secretary", "a security guard", "a service worker", "a shrine maiden", "a soldier", "a stripper", "a student", "a student", "a student", "a teaching assistant", "a truck driver", "a waitress", "an air hostess", "an apprentice", "an arcade attendant", "an assassin", "an escort", "an exotic dancer", "an office worker", "unemployed", "unemployed", "unemployed", "unemployed", "unemployed"]>>
 
-<<set setup.educatedCareers = ["a business owner", "a child actress", "a classical dancer", "a classical musician", "a college scout", "a counselor", "a criminal", "a cult leader", "a dispatch officer", "a doctor", "a journalist", "a journalist", "a lawyer", "a librarian", "a manager", "a mechanic", "a medical student", "a mercenary", "a military officer", "a military recruiter", "a nun", "a paramedic", "a pilot", "a political activist", "a politician", "a principal", "a private detective", "a private instructor", "a procuress", "a professional bartender", "a professor", "a programmer", "a psychologist", "a refugee", "a scholar", "a scientist", "a serial divorcee", "a shut-in", "a teacher", "a teaching assistant", "a therapist", "a transporter", "a veterinarian", "a wedding planner", "a writer", "an MS pilot", "an actress", "an air hostess", "an assassin", "an engineer", "an estate agent", "an investor", "a producer"]>>
+<<set setup.educatedCareers = ["a ballerina", "a business owner", "a child actress", "a classical dancer", "a classical musician", "a college scout", "a counselor", "a criminal", "a cult leader", "a dispatch officer", "a doctor", "a journalist", "a journalist", "a lawyer", "a librarian", "a manager", "a mechanic", "a medical student", "a mercenary", "a military officer", "a military recruiter", "a nun", "a paramedic", "a pilot", "a political activist", "a politician", "a principal", "a private detective", "a private instructor", "a procuress", "a producer", "a professional bartender", "a professor", "a programmer", "a psychologist", "a refugee", "a scholar", "a scientist", "a serial divorcee", "a shut-in", "a teacher", "a teaching assistant", "a therapist", "a transporter", "a veterinarian", "a wedding planner", "a writer", "an actress", "an air hostess", "an assassin", "an astronaut", "an engineer", "an estate agent", "an investor", "an MS pilot"]>>
 
-<<set setup.uneducatedCareers = ["a barista", "a bartender", "a bodyguard", "a bouncer", "a bounty hunter", "a camgirl", "a camwhore", "a caregiver", "a charity worker", "a cheerleader", "a cocktail waitress", "a cook", "a criminal", "a dairy worker", "a dancer", "a factory worker", "a farm laborer", "a farmer's daughter", "a fisherwoman", "a handmaiden", "a house DJ", "a housewife", "a law enforcement officer", "a lifeguard", "a local news anchor", "a maid", "a mail carrier", "a masseuse", "a masseuse", "a medic", "a medic", "a missionary", "a mistress", "a model", "a musician", "a nurse", "a paramedic", "a party girl", "a pimp", "a political activist", "a prison guard", "a prisoner", "a procuress", "a prostitute", "a racing driver", "a rancher", "a refugee", "a revolutionary", "a ride attendant", "a saleswoman", "a secretary", "a security guard", "a service worker", "a soldier", "a stripper", "a student", "a teacher", "a trophy wife", "a truck driver", "a waitress", "a weathergirl", "an actress", "an arcade attendant", "an aspiring pop star", "an athlete", "an enforcer", "an enforcer", "an exotic dancer", "an office worker", "in a militia", "unemployed", "unemployed", "unemployed", "unemployed", "unemployed", "a cum dump", "a meat toilet", "a shrine maiden", "an innkeeper"]>>
+<<set setup.uneducatedCareers = ["a barista", "a bartender", "a bodyguard", "a bouncer", "a bounty hunter", "a bus driver", "a camgirl", "a camwhore", "a caregiver", "a charity worker", "a cheerleader", "a cocktail waitress", "a cook", "a criminal", "a cum dump", "a dairy worker", "a dancer", "a factory worker", "a farm laborer", "a farmer's daughter", "a farmer", "a fisherwoman", "a handmaiden", "a house DJ", "a housewife", "a law enforcement officer", "a lifeguard", "a local news anchor", "a maid", "a mail carrier", "a masseuse", "a masseuse", "a meat toilet", "a medic", "a medic", "a milkmaid", "a missionary", "a mistress", "a model", "a musician", "a nurse", "a paramedic", "a party girl", "a pimp", "a pirate", "a political activist", "a prison guard", "a prisoner", "a procuress", "a prostitute", "a racing driver", "a rancher", "a refugee", "a revolutionary", "a ride attendant", "a saleswoman", "a secretary", "a security guard", "a service worker", "a shrine maiden", "a soldier", "a stripper", "a student", "a taxi driver", "a teacher", "a trophy wife", "a truck driver", "a waitress", "a weathergirl", "an actress", "an arcade attendant", "an aspiring pop star", "an athlete", "an enforcer", "an enforcer", "an escort", "an exotic dancer", "an innkeeper", "an office worker", "in a militia", "unemployed", "unemployed", "unemployed", "unemployed", "unemployed"]>>
 
 <<set setup.gratefulCareers = ["a beggar", "a child soldier", "a pick-pocket", "a prisoner", "a refugee", "a shut-in", "a street urchin", "a student from a boarding school", "a sweatshop worker", "an orphan", "from a lower class family", "homeless", "unemployed"]>>
 
-<<set setup.menialCareers = ["a babysitter", "a cook", "a courier", "a dropout", "a factory worker", "a farm laborer", "a fisherwoman", "a handmaiden", "a housesitter", "a housewife", "a maid", "a mail carrier", "a mechanic", "a nun", "a paper girl", "a part-time farm laborer", "a pilot", "a programmer", "a ride attendant", "a service worker", "a student from a private school", "a student from a public school", "a student", "a truck driver", "an apprentice", "an arcade attendant", "an athlete", "an engineer", "being homeschooled by her parents", "from a middle class family", "from an upper class family", "a producer"]>>
+<<set setup.menialCareers = ["a babysitter", "a bus driver", "a cook", "a courier", "a dropout", "a factory worker", "a farm laborer", "a fisherwoman", "a handmaiden", "a housesitter", "a housewife", "a maid", "a mail carrier", "a mechanic", "a nun", "a paper girl", "a part-time farm laborer", "a pilot", "a producer", "a programmer", "a ride attendant", "a service worker", "a student from a private school", "a student from a public school", "a student", "a taxi driver", "a truck driver", "an apprentice", "an arcade attendant", "an athlete", "an engineer", "being homeschooled by her parents", "from a middle class family", "from an upper class family"]>>
 
 <<set setup.entertainmentCareers = ["a camgirl", "a camwhore", "a cheerleader", "a child actress", "a cocktail waitress", "a journalist", "a local news anchor", "a party girl", "a racing driver", "a waitress", "a weathergirl", "a writer", "an actress"]>>
 
-<<set setup.whoreCareers = ["a Futanari Sister", "a child prostitute", "a criminal", "a juvenile delinquent", "a mistress", "a model", "a pageant star", "a porn star", "a prostitute", "a saleswoman", "a serial divorcee", "a stripper", "a trophy wife", "an exotic dancer", "a cum dump", "a meat toilet"]>>
+<<set setup.whoreCareers = ["a child prostitute", "a criminal", "a cum dump", "a Futanari Sister", "a juvenile delinquent", "a meat toilet", "a mistress", "a model", "a pageant star", "a pirate", "a porn star", "a prostitute", "a saleswoman", "a serial divorcee", "a stripper", "a trophy wife", "an escort", "an exotic dancer"]>>
 
-<<set setup.HGCareers = ["a lawyer", "a leading arcology citizen", "a military officer", "a model-UN star", "a politician", "a student council president", "a Queen"]>>
+<<set setup.HGCareers = ["a lawyer", "a leading arcology citizen", "a military officer", "a model-UN star", "a politician", "a Queen", "a student council president"]>>
 
 <<set setup.madamCareers = ["a business owner", "a manager", "a pimp", "a procuress", "an innkeeper"]>>
 
-<<set setup.DJCareers = ["a classical dancer", "a classical musician", "a dancer", "a house DJ", "a musician", "an aspiring pop star"]>>
+<<set setup.DJCareers = ["a ballerina", "a classical dancer", "a classical musician", "a dancer", "a house DJ", "a musician", "an aspiring pop star"]>>
 
 <<set setup.bodyguardCareers = ["a bodyguard", "a child soldier", "a kunoichi", "a law enforcement officer", "a military brat", "a prince", "a revolutionary", "a soldier", "a transporter", "an assassin", "an MS pilot", "captain of the kendo club", "in a militia"]>>
 
@@ -267,7 +299,7 @@
 
 <<set setup.attendantCareers = ["a counselor", "a dispatch officer", "a lifeguard", "a masseuse", "a psychologist", "a therapist"]>>
 
-<<set setup.milkmaidCareers = ["a dairy worker", "a farmer's daughter", "a rancher", "a veterinarian"]>>
+<<set setup.milkmaidCareers = ["a dairy worker", "a farmer's daughter", "a farmer", "a milkmaid", "a rancher", "a veterinarian"]>>
 
 <<set setup.stewardessCareers = ["a barista", "a bartender", "a caregiver", "a charity worker", "a professional bartender", "a secretary", "a wedding planner", "an air hostess", "an estate agent", "an investor", "an office worker"]>>
 
@@ -276,31 +308,31 @@
 <<set setup.recruiterCareers = ["a club recruiter", "a college scout", "a cult leader", "a girl scout", "a military recruiter", "a missionary", "a political activist", "a princess"]>> /* pregmod */
 
 
-<<set setup.baseNationalities = ["Afghan", "Albanian", "Algerian", "American", "Andorran", "Antiguan", "Argentinian", "Armenian", "Aruban", "Australian", "Austrian", "Azerbaijani", "Bahamian", "Bahraini", "Bangladeshi", "Barbadian", "Belarusian", "Belgian", "Belizean", "Bermudian", "Bhutanese", "Bolivian", "Bosnian", "Brazilian", "British", "Bruneian", "Bulgarian", "Burmese", "Burundian", "Cambodian", "Cameroonian", "Canadian", "Chilean", "Chinese", "Colombian", "Congolese", "a Cook Islander", "Costa Rican", "Croatian", "Cuban", "Cypriot", "Czech", "Danish", "Djiboutian", "Dominican", "Dominiquais", "Dutch", "East Timorese", "Ecuadorian", "Egyptian", "Emirati", "Estonian", "Ethiopian", "Fijian", "Filipina", "Finnish", "French", "French Guianan", "Gabonese", "Georgian", "German", "Ghanan", "Greek", "Greenlandic", "Grenadian", "Guatemalan", "Guyanese", "Haitian", "Honduran", "Hungarian", "I-Kiribati", "Icelandic", "Indian", "Indonesian", "Iranian", "Iraqi", "Irish", "Israeli", "Italian", "Jamaican", "Japanese", "Jordanian", "Kazakh", "Kenyan", "Kittitian", "Korean", "Kosovan", "Kuwaiti", "Kyrgyz", "Laotian", "Latvian", "Lebanese", "Libyan", "a Liechtensteiner", "Lithuanian", "Luxembourgian", "Macedonian", "Malagasy", "Malaysian", "Maldivian", "Malian", "Maltese", "Marshallese", "Mexican", "Micronesian", "Moldovan", "Monégasque", "Mongolian", "Montenegrin", "Moroccan", "Nauruan", "Nepalese", "a New Zealander", "Ni-Vanuatu", "Nicaraguan", "Nigerian", "Nigerien", "Niuean", "Norwegian", "Omani", "Pakistani", "Palauan", "Palestinian", "Panamanian", "Papua New Guinean", "Paraguayan", "Peruvian", "Polish", "Portuguese", "Puerto Rican", "Qatari", "Romanian", "Russian", "Saint Lucian", "Salvadoran", "Sammarinese", "Samoan", "Saudi", "Scottish", "Serbian", "Seychellois", "Singaporean", "Slovak", "Slovene", "a Solomon Islander", "South African", "Spanish", "Sri Lankan", "Sudanese", "Surinamese", "Swedish", "Swiss", "Syrian", "Taiwanese", "Tajik", "Tanzanian", "Thai", "Tongan", "Trinidadian", "Tunisian", "Turkish", "Turkmen", "Tuvaluan", "Ugandan", "Ukrainian", "Uruguayan", "Uzbek", "Vatican", "Venezuelan", "Vietnamese", "Vincentian", "Yemeni", "Zambian", "Zimbabwean"]>>
+<<set setup.baseNationalities = ["Afghan", "Albanian", "Algerian", "American", "Andorran", "Angolan", "Antiguan", "Argentinian", "Armenian", "Aruban", "Australian", "Austrian", "Azerbaijani", "Bahamian", "Bahraini", "Bangladeshi", "Barbadian", "Belarusian", "Belgian", "Belizean", "Beninese", "Bermudian", "Bhutanese", "Bissau-Guinean", "Bolivian", "Bosnian", "Brazilian", "British", "Bruneian", "Bulgarian", "Burkinabé", "Burmese", "Burundian", "Cambodian", "Cameroonian", "Canadian", "Cape Verdean", "Catalan", "Central African", "Chadian", "Chilean", "Chinese", "Colombian", "Comorian", "Congolese", "a Cook Islander", "Costa Rican", "Croatian", "Cuban", "Cypriot", "Czech", "Danish", "Djiboutian", "Dominican", "Dominiquais", "Dutch", "East Timorese", "Ecuadorian", "Egyptian", "Emirati", "Equatoguinean", "Eritrean", "Estonian", "Ethiopian", "Fijian", "Filipina", "Finnish", "French Guianan", "French Polynesian", "French", "Gabonese", "Gambian", "Georgian", "German", "Ghanan", "Greek", "Greenlandic", "Grenadian", "Guatemalan", "Guinean", "Guyanese", "Haitian", "Honduran", "Hungarian", "I-Kiribati", "Icelandic", "Indian", "Indonesian", "Iranian", "Iraqi", "Irish", "Israeli", "Italian", "Ivorian", "Jamaican", "Japanese", "Jordanian", "Kazakh", "Kenyan", "Kittitian", "Korean", "Kosovan", "Kurdish", "Kuwaiti", "Kyrgyz", "Laotian", "Latvian", "Lebanese", "Liberian", "Libyan", "a Liechtensteiner", "Lithuanian", "Luxembourgian", "Macedonian", "Malagasy", "Malawian", "Malaysian", "Maldivian", "Malian", "Maltese", "Marshallese", "Mauritanian", "Mauritian", "Mexican", "Micronesian", "Moldovan", "Monégasque", "Mongolian", "Montenegrin", "Moroccan", "Mosotho", "Motswana", "Mozambican", "Namibian", "Nauruan", "Nepalese", "a New Zealander", "Ni-Vanuatu", "Nicaraguan", "Nigerian", "Nigerien", "Niuean", "Norwegian", "Omani", "Pakistani", "Palauan", "Palestinian", "Panamanian", "Papua New Guinean", "Paraguayan", "Peruvian", "Polish", "Portuguese", "Puerto Rican", "Qatari", "Romanian", "Russian", "Rwandan", "Sahrawi", "Saint Lucian", "Salvadoran", "Sammarinese", "Samoan", "São Toméan", "Saudi", "Scottish", "Senegalese", "Serbian", "Seychellois", "Sierra Leonean", "Singaporean", "Slovak", "Slovene", "a Solomon Islander", "Somali", "South African", "South Sudanese", "Spanish", "Sri Lankan", "Sudanese", "Surinamese", "Swazi", "Swedish", "Swiss", "Syrian", "Taiwanese", "Tajik", "Tanzanian", "Thai", "Tibetan", "Togolese", "Tongan", "Trinidadian", "Tunisian", "Turkish", "Turkmen", "Tuvaluan", "Ugandan", "Ukrainian", "Uruguayan", "Uzbek", "Vatican", "Venezuelan", "Vietnamese", "Vincentian", "Yemeni", "Zairian", "Zambian", "Zimbabwean"]>>
  
 
 
-<<set setup.whiteNationalities = ["Albanian", "American", "Andorran", "Antiguan", "Argentinian", "Australian", "Austrian", "Bahamian", "Belarusian", "Belgian", "Belizean", "Bermudian", "Bosnian", "Brazilian", "British", "Bulgarian", "Canadian", "Chilean", "Costa Rican", "Croatian", "Czech", "Danish", "Djiboutian", "Dutch", "Ecuadorian", "Estonian", "Finnish", "French Guianan", "French", "German", "Greenlandic", "Hungarian", "Icelandic", "Irish", "Israeli", "Italian", "Kosovan", "Latvian", "a Liechtensteiner", "Lithuanian", "Luxembourgian", "Macedonian", "Moldovan", "Montenegrin", "a New Zealander", "Nicaraguan", "Niuean", "Norwegian", "Panamanian", "Polish", "Romanian", "Russian", "Salvadoran", "Scottish", "Serbian", "Slovak", "Slovene", "South African", "Swiss", "Trinidadian", "Turkmen", "Ukrainian", "Uruguayan", "Vatican"]>>
+<<set setup.whiteNationalities = ["Albanian", "American", "Andorran", "Antiguan", "Argentinian", "Australian", "Austrian", "Bahamian", "Belarusian", "Belgian", "Belizean", "Bermudian", "Bosnian", "Brazilian", "British", "Bulgarian", "Canadian", "Chilean", "Costa Rican", "Croatian", "Czech", "Danish", "Djiboutian", "Dominican", "Dutch", "Ecuadorian", "Estonian", "Finnish", "French Guianan", "French", "German", "Greenlandic", "Hungarian", "Icelandic", "Irish", "Israeli", "Italian", "Kosovan", "Latvian", "a Liechtensteiner", "Lithuanian", "Luxembourgian", "Macedonian", "Moldovan", "Montenegrin", "Namibian", "a New Zealander", "Nicaraguan", "Niuean", "Norwegian", "Panamanian", "Polish", "Romanian", "Russian", "Salvadoran", "Scottish", "Serbian", "Slovak", "Slovene", "South African", "Swazi", "Swedish", "Swiss", "Trinidadian", "Turkmen", "Ukrainian", "Uruguayan", "Vatican"]>>
 
-<<set setup.asianNationalities = ["Bruneian", "Burmese", "Cambodian", "Chinese", "Filipina", "Indonesian", "Japanese", "Kazakh", "Korean", "Laotian", "Malaysian", "Mongolian", "Nepalese", "Singaporean", "Taiwanese", "Thai", "Uzbek", "Vietnamese"]>>
+<<set setup.asianNationalities = ["American", "Australian", "Bhutanese", "Bruneian", "Burmese", "Cambodian", "Canadian", "Chinese", "Filipina", "French Polynesian", "Indonesian", "Japanese", "Kazakh", "Korean", "Kyrgyz", "Laotian", "Malaysian", "Mongolian", "Nepalese", "a New Zealander", "Niuean", "Palauan", "Qatari", "Saudi", "Singaporean", "Taiwanese", "Tajik", "Thai", "Tibetan", "Turkmen", "Uzbek", "Vietnamese"]>>
 
 <<set setup.latinaNationalities = ["American", "Argentinian", "Aruban", "Belizean", "Bolivian", "Brazilian", "Chilean", "Colombian", "Costa Rican", "Cuban", "Dominican", "Ecuadorian", "Guatemalan", "Honduran", "Mexican", "Nicaraguan", "Panamanian", "Paraguayan", "Peruvian", "Puerto Rican", "Salvadoran", "Uruguayan", "Venezuelan"]>>
 
-<<set setup.middleeasternNationalities = ["Afghan", "Algerian", "American", "Bahraini", "Cypriot", "Djiboutian", "Egyptian", "Emirati", "Ethiopian", "French", "German", "Iraqi", "Israeli", "Italian", "Jordanian", "Kuwaiti", "Lebanese", "Libyan", "Malian", "Moroccan", "Omani", "Palestinian", "Qatari", "Saudi", "Sudanese", "Swedish", "Syrian", "Tunisian", "Turkish", "Yemeni"]>>
+<<set setup.middleeasternNationalities = ["Afghan", "Algerian", "American", "Bahraini", "Chadian", "Comorian", "Cypriot", "Djiboutian", "Egyptian", "Emirati", "Eritrean", "Ethiopian", "French", "German", "Iraqi", "Israeli", "Italian", "Jordanian", "Kurdish", "Kuwaiti", "Lebanese", "Libyan", "Malian", "Mauritanian", "Moroccan", "Omani", "Palestinian", "Qatari", "Sahrawi", "Saudi", "Somali", "Sudanese", "Swedish", "Syrian", "Tunisian", "Turkish", "Yemeni"]>>
 
-<<set setup.blackNationalities = ["American", "Antiguan", "Aruban", "Australian", "Bahamian", "Barbadian", "Belizean", "Bermudian", "Brazilian", "British", "Burundian", "Cameroonian", "Congolese", "Cuban", "Djiboutian", "Dominican", "Dominiquais", "Ecuadorian", "Egyptian", "Ethiopian", "French Guianan", "French", "Gabonese", "German", "Ghanan", "Grenadian", "Guyanese", "Haitian", "Jamaican", "Kenyan", "Kittitian", "Malagasy", "Malian", "Moroccan", "Nicaraguan", "Nigerian", "Nigerien", "Panamanian", "Saint Lucian", "Saudi", "Seychellois", "South African", "Sudanese", "Surinamese", "Swedish", "Tanzanian", "Trinidadian", "Ugandan", "Vincentian", "Yemeni", "Zambian", "Zimbabwean"]>>
+<<set setup.blackNationalities = ["American", "Angolan", "Antiguan", "Aruban", "Australian", "Bahamian", "Barbadian", "Belizean", "Beninese", "Bermudian", "Bissau-Guinean", "Brazilian", "British", "Burkinabé", "Burundian", "Cameroonian", "Cape Verdean", "Central African", "Chadian", "Comorian", "Congolese", "Cuban", "Djiboutian", "Dominican", "Dominiquais", "Ecuadorian", "Egyptian", "Equatoguinean", "Eritrean", "Ethiopian", "French Guianan", "French", "Gabonese", "Gambian", "German", "Ghanan", "Grenadian", "Guinean", "Guyanese", "Haitian", "Ivorian", "Jamaican", "Kenyan", "Kittitian", "Liberian", "Malagasy", "Malawian", "Malian", "Mauritanian", "Mauritian", "Moroccan", "Mosotho", "Motswana", "Mozambican", "Namibian", "Nicaraguan", "Nigerian", "Nigerien", "Panamanian", "Rwandan", "Sahrawi", "Saint Lucian", "São Toméan", "Saudi", "Senegalese", "Seychellois", "Sierra Leonean", "Somali", "South African", "South Sudanese", "Sudanese", "Surinamese", "Swazi", "Tanzanian", "Togolese", "Trinidadian", "Ugandan", "Vincentian", "Yemeni", "Zairian", "Zambian", "Zimbabwean"]>>
 
-<<set setup.indoaryanNationalities = ["Afghan", "Armenian", "Azerbaijani", "Bahraini", "Bangladeshi", "British", "Bruneian", "Burmese", "Emirati", "Fijian", "Georgian", "Guyanese", "Hungarian", "Indian", "Iranian", "Kazakh", "Kuwaiti", "Malagasy", "Maldivian", "Nepalese", "Omani", "Pakistani", "Qatari", "Romanian", "Singaporean", "Slovak", "Sri Lankan", "Surinamese", "Tajik", "Trinidadian", "Vincentian"]>>
+<<set setup.indoaryanNationalities = ["Afghan", "Armenian", "Azerbaijani", "Bahraini", "Bangladeshi", "British", "Bruneian", "Burmese", "Emirati", "Fijian", "Georgian", "Guyanese", "Hungarian", "Indian", "Iranian", "Kazakh", "Kurdish", "Kuwaiti", "Malagasy", "Maldivian", "Mauritian", "Nepalese", "Omani", "Pakistani", "Qatari", "Romanian", "Singaporean", "Slovak", "Sri Lankan", "Surinamese", "Tajik", "Trinidadian", "Vincentian"]>>
 
-<<set setup.pacificislanderNationalities = ["a Cook Islander", "East Timorese", "Fijian", "Filipina", "I-Kiribati", "Indonesian", "Marshallese", "Micronesian", "Nauruan", "a New Zealander", "Ni-Vanuatu", "Niuean", "Palauan", "Papua New Guinean", "Samoan", "a Solomon Islander", "Tongan", "Tuvaluan"]>>
+<<set setup.pacificislanderNationalities = ["a Cook Islander", "East Timorese", "Fijian", "Filipina", "French Polynesian", "I-Kiribati", "Indonesian", "Marshallese", "Micronesian", "Nauruan", "a New Zealander", "Ni-Vanuatu", "Niuean", "Palauan", "Papua New Guinean", "Samoan", "a Solomon Islander", "Tongan", "Tuvaluan"]>>
 
 <<set setup.malayNationalities = ["Bruneian", "East Timorese", "Filipina", "Indonesian", "Malaysian", "Papua New Guinean", "Singaporean", "Surinamese", "Thai"]>>
 
 <<set setup.amerindianNationalities = ["American", "Belizean", "Bolivian", "Brazilian", "Canadian", "Ecuadorian", "Greenlandic", "Guatemalan", "Guyanese", "Honduran", "Mexican", "Panamanian", "Peruvian"]>>
 
-<<set setup.southerneuropeanNationalities = ["Andorran", "Cypriot", "French", "Greek", "Italian", "Luxembourgian", "Maltese", "Monégasque", "Portuguese", "Sammarinese", "Spanish", "Vatican"]>>
+<<set setup.southerneuropeanNationalities = ["Andorran", "Catalan", "Cypriot", "French", "Greek", "Italian", "Luxembourgian", "Maltese", "Monégasque", "Portuguese", "Sammarinese", "Spanish", "Vatican"]>>
 
-<<set setup.semiticNationalities = ["Armenian", "Azerbaijani", "British", "Egyptian", "Ethiopian", "Georgian", "Ghanan", "Iranian", "Iraqi", "Israeli", "Jordanian", "Kazakh", "Lebanese", "Pakistani", "Palestinian", "Romanian", "Spanish", "Syrian", "Tanzanian", "Turkish", "Yemeni"]>>
+<<set setup.semiticNationalities = ["Armenian", "Azerbaijani", "British", "Egyptian", "Ethiopian", "Georgian", "Ghanan", "Iranian", "Iraqi", "Israeli", "Jordanian", "Kazakh", "Kurdish", "Lebanese", "Pakistani", "Palestinian", "Romanian", "Spanish", "Syrian", "Tanzanian", "Turkish", "Yemeni"]>>
 
 
 
@@ -343,7 +375,7 @@
 <<set setup.japaneseSlaveNames = ["Ai", "Aika", "Aiko", "Aimi", "Aina", "Airi", "Akane", "Akari", "Akemi", "Aki", "Akiko", "Akira", "Ami", "Anna", "Aoi", "Asuka", "Atsuko", "Aya", "Ayaka", "Ayako", "Ayame", "Ayane", "Ayano", "Ayumi", "Chidori", "Chie", "Chihiro", "Chika", "Chikako", "Chinatsu", "Chiyo", "Chiyoko", "Cho", "Chou", "Chouko", "Emi", "Erika", "Etsuko", "Futaba", "Fuuka", "Hana", "Hanae", "Hanako", "Haru", "Haruka", "Haruko", "Haruna", "Hibiki", "Hikari", "Hikaru", "Hina", "Hinata", "Hiroko", "Hitomi", "Honoka", "Hoshi", "Hoshiko", "Hotaru", "Izumi", "Junko", "Kaede", "Kana", "Kanako", "Kanon", "Kaori", "Kaoru", "Kasumi", "Kazue", "Kazuko", "Keiko", "Kiku", "Kimiko", "Kiyoko", "Kohaku", "Koharu", "Kokoro", "Kotone", "Kumiko", "Kyo", "Kyou", "Mai", "Maki", "Makoto", "Mami", "Manami", "Mao", "Mari", "Mariko", "Marina", "Masami", "Masuyo", "Mayu", "Megumi", "Mei", "Michi", "Michiko", "Midori", "Miho", "Mika", "Miki", "Miku", "Minako", "Minami", "Minato", "Minoru", "Mio", "Misaki", "Mitsuko", "Mitsuru", "Miu", "Miyako", "Miyu", "Mizuki", "Moe", "Momoka", "Momoko", "Moriko", "Nana", "Nanako", "Nanami", "Nao", "Naoko", "Naomi", "Naoto", "Natsuki", "Natsuko", "Natsumi", "Noa", "Noriko", "Ran", "Rei", "Ren", "Riko", "Rin", "Rina", "Rio", "Risa", "Sachiko", "Sadayo", "Sae", "Saeko", "Saki", "Sakura", "Sakurako", "Satomi", "Saya", "Sayaka", "Sayuri", "Setsuko", "Shiho", "Shinju", "Shinobu", "Shiori", "Shizuka", "Shun", "Sora", "Sumiko", "Suzu", "Suzume", "Takako", "Takara", "Tamiko", "Tomiko", "Tomoko", "Tomomi", "Tsubaki", "Tsubame", "Tsubasa", "Tsukiko", "Ulala", "Ume", "Umeko", "Wakana", "Yasu", "Yoko", "Yoshi", "Yoshiko", "Youko", "Yua", "Yui", "Yuina", "Yuka", "Yukari", "Yuki", "Yukiko", "Yukino", "Yuko", "Yumi", "Yumiko", "Yuri", "Yuu", "Yuuka", "Yuuki", "Yuuko", "Yuuna", "Yuzuki"]>>
 <<set setup.japaneseSlaveSurnames = ["Abe", "Adachi", "Akechi", "Amada", "Amagi", "Amano", "Ando", "Aoki", "Aragaki", "Arai", "Arisato", "Ayase", "Dojima", "Ebihara", "Endo", "Fujii", "Fujita", "Fujiwara", "Fukuda", "Fukuda", "Goto", "Hara", "Harada", "Hasegawa", "Hashimoto", "Hayashi", "Honda", "Hoshi", "Ikeda", "Imai", "Inaba", "Inoue", "Iori", "Ishida", "Ishii", "Ishikawa", "Ito", "Kan", "Kaneko", "Kashiwagi", "Kato", "Kawakami", "Kawamura", "Kido", "Kikichu", "Kimura", "Kirijo", "Kirishima", "Kitagawa", "Kobayashi", "Koizumi", "Kondo", "Kos", "Kujikawa", "Kurusu", "Li", "Maeda", "Masuda", "Matsuda", "Matsumoto", "Matsunaga", "Mayuzumi", "Mishima", "Mishina", "Miura", "Miyamoto", "Miyazaki", "Mori", "Morita", "Mtsui", "Murakami", "Murata", "Nakagawa", "Nakajima", "Nakamura", "Nakano", "Nakayama", "Nanjo", "Narukami", "Niijima", "Nishimura", "Noda", "Ogawa", "Okada", "Okamoto", "Ono", "Ota", "Ozawa", "Saito", "Sakai", "Sakamoto", "Sakura", "Sakurai", "Sanada", "Sasaki", "Sato", "Satonaka", "Serizawa", "Shibata", "Shimada", "Shimizu", "Shirogane", "Sonomura", "Sudou", "Suou", "Suzuki", "Takagi", "Takahashi", "Takami", "Takeba", "Takeda", "Takeuchi", "Tamura", "Tanaka", "Tatsumi", "Toudou", "Uchida", "Ueda", "Ueno", "Ueseugi", "Wada", "Wang", "Watanabe", "Yamada", "Yamagishi", "Yamaguchi", "Yamamoto", "Yamashita", "Yamazaki", "Yokoyama", "Yoshida", "Yoshino", "Yuuki"]>>
 
-<<set setup.nigerianSlaveNames = ["Abigail", "Ayomide", "Chinelo", "Dorcas", "Doris", "Esther", "Habeeba", "Hadiza", "Hannah", "Hellen", "Kebe", "Kemi", "Linda", "Marie", "Maris", "Mary", "Mercy", "Michelle", "Olabisi", "Promise", "Redeem", "Rose", "Stella", "Stephanie", "Temitope", "Theresa", "Wendy", "Wisfavour"]>>
+<<set setup.nigerianSlaveNames = ["Abigail", "Amina", "Ayomide", "Chinelo", "Dorcas", "Doris", "Esther", "Habeeba", "Hadiza", "Hannah", "Hellen", "Kebe", "Kemi", "Linda", "Marie", "Maris", "Mary", "Mercy", "Michelle", "Olabisi", "Promise", "Redeem", "Rose", "Stella", "Stephanie", "Temitope", "Theresa", "Wendy", "Wisfavour"]>>
 <<set setup.nigerianSlaveSurnames = ["Abdullahi", "Abu", "Abubakar", "Adebayo", "Adebowale", "Adekoya", "Adekunle", "Adeleye", "Adeniyi", "Adepoju", "Adesina", "Adewumi", "Adeyemi", "Adeyemo", "Afolabi", "Agboola", "Agu", "Ahmed", "Ajayi", "Ajiboye", "Akinola", "Akpan", "Alabi", "Aliyu", "Anyanwu", "Augustine", "Ayoola", "Azeez", "Babalola", "Babatunde", "Balogun", "Bamidele", "Bashir", "Bassey", "Bello", "Brown", "Chukwu", "Daramola", "Dauda", "Effiong", "Emmanuel", "Etim", "Eze", "Garba", "Godwin", "Hassan", "Ibe", "Ibrahim", "Idowu", "Idris", "Ige", "Igwe", "Inyang", "Isah", "Ishola", "Issac", "Jimoh", "John", "Johnson", "Joseph", "Kalu", "Kolawole", "Lawal", "Madu", "Martins", "Michael", "Mohammed", "Momoh", "Moses", "Muhammad", "Musa", "Mustapha", "Nelson", "Njoku", "Nwachukwu", "Nwankwo", "Obi", "Ojo", "Okafor", "Oke", "Okeke", "Okereke", "Okoli", "Okon", "Okonkwo", "Okoro", "Oladipo", "Oladopo", "Olaniyan", "Olanrewaju", "Olayiwola", "Opara", "Orji", "Owolabi", "Paul", "Peter", "Peters", "Raji", "Sadiq", "Salami", "Samuel", "Sani", "Sanni", "Sanusi", "Shehu", "Smith", "Solomon", "Suleiman", "Taiwo", "Tijani", "Uche", "Udoh", "Umar", "Umoh", "Usman", "Williams", "Yahaya", "Yusuf"]>>
 
 <<set setup.pakistaniSlaveNames = ["Aanya", "Aisha", "Alayna", "Ameria", "Anam", "Areeba", "Asma", "Asmi", "Ayesha", "Eraj", "Faiza", "Hajra", "Haniya", "Ifrah", "Imama", "Kainat", "Karen", "Kheezran", "Komal", "Krishma", "Leah", "Lintah", "Mahrukh", "Mariam", "Mariyam", "Mishael", "Mizha", "Momna", "Neha", "Noor", "Rabia", "Rameen", "Riasat", "Rida", "Ruby", "Rue", "Saima", "Sajida", "Sana", "Sana", "Sara", "Sarah", "Tooba", "Umara", "Unsa", "Usmaan", "Zainab", "Zainnah", "Zakia", "Zuny"]>>
@@ -379,8 +411,8 @@
 <<set setup.iranianSlaveNames = ["Aeen", "Angel", "Ashraf", "Assal", "Atousa", "Azin", "Banu", "Bita", "Boshra", "Donya", "Elisa", "Fatemeh", "Fatima", "Ghazaleh", "Goli", "Haniye", "Jaleh", "Katy", "Kiana", "Laleh", "Leila", "Mahdie", "Mandana", "Mania", "Mari", "Maria", "Marjan", "Maryam", "Mehrnaz", "Mina", "Mino", "Mojan", "Nasrin", "Nazanin", "Nazi", "Neda", "Negin", "Nikki", "Niloofar", "Nooshin", "Pani", "Parinaz", "Payvand", "Poone", "Raha", "Raheleh", "Reyhan", "Romi", "Rozhin", "Saba", "Sabs", "Saedeh", "Sajedeh", "Sara", "Sarah", "Saye", "Setareaseman", "Shaghayegh", "Sima", "Soha", "Somaye", "Tooska", "Touska", "Tuska", "Yasamin", "Yasmin", "Zahra", "Zaynab", "Zhila"]>>
 <<set setup.iranianSlaveSurnames = ["Abbasi", "Ahmadi", "Akbari", "Alizadeh", "Amini", "Amiri", "Asadi", "Ayari", "Azizi", "Bagheri", "Boroumand", "Darvish", "Ebrahimi", "Eftekhari", "Farzan", "Ghasemi", "Gholami", "Ghorbani", "Gilani", "Hashemi", "Heidari", "Hosseini", "Jafari", "Jahangiri", "Karimi", "Kazemi", "Lashgari", "Mahabadi", "Maleki", "Mohamadi", "Mohammadi", "Moradi", "Mousavi", "Mustafazadeh", "Najafi", "Najafzadeh", "Nazari", "Rafati", "Rahimi", "Rahmani", "Razaei", "Rouhani", "Sadeghi", "Salehi", "Satrapi", "Sharifi", "Soltani", "Taheri", "Veisi", "Yousefi", "Zadeh", "Zamani", "Zare"]>>
 
-<<set setup.congoleseSlaveNames = ["Aicha", "Amba", "Aminata", "Andreche", "Belcha", "Belinda", "Belvie", "Claire", "Claudia", "Clavidia", "Dan", "Delande", "Divine", "Dorsia", "Duchel", "Durcia", "Fiavina", "Franchelyn", "Frichnelle", "Genicka", "Grace", "Grasnie", "Ingrid", "Isabelle", "Japhet", "Jeanny", "Jodrey", "Julie", "Junelle", "Keicha", "Lady", "Léonie", "Liu", "Lolie", "Lylie", "Maguy", "Marvine", "Mayifa", "Merveille", "Mholie", "Mich", "Nada", "Nicole", "Nuptia", "Patrique", "Pauline", "Peniel", "Reine", "Rihanna", "Ruth", "Sabrina", "Sandra", "Sarah", "Sereine", "Sidorelle", "Stael", "Staelle", "Sylvie", "Valdinelle", "Valentina", "Valerie"]>>
-<<set setup.congoleseSlaveSurnames = ["Bahati", "Banza", "Beya", "Bisimwa", "Bokese", "Bokungu", "Botende", "Bukasa", "Elia", "Ibaka", "Ilunga", "Kabamba", "Kabangu", "Kabeya", "Kabongo", "Kadima", "Kalala", "Kalenga", "Kalombo", "Kalonji", "Kambale", "Kasongo", "Kayembe", "Kazadi", "Kazembe", "Kitenge", "Kongolo", "Kyenge", "Lukusa", "Malango", "Matondo", "Mbaya", "Mbuyi", "Mika", "Mondeko", "Mpeko", "Muamba", "Mukendi", "Mulamba", "Mulumba", "Mutombo", "Mvouba", "Mwamba", "Ngandu", "Ngoie", "Ngoma", "Ngoy", "Ntumba", "Nyembo", "Olomide", "Tambwe", "Tshibangu", "Tshimanga", "Youlou", "Zakuani", "Zola"]>>
+<<set setup.zairianSlaveNames = ["Aicha", "Amba", "Aminata", "Andreche", "Belcha", "Belinda", "Belvie", "Claire", "Claudia", "Clavidia", "Dan", "Delande", "Divine", "Dorsia", "Duchel", "Durcia", "Fiavina", "Franchelyn", "Frichnelle", "Genicka", "Grace", "Grasnie", "Ingrid", "Isabelle", "Japhet", "Jeanny", "Jodrey", "Julie", "Junelle", "Keicha", "Lady", "Léonie", "Liu", "Lolie", "Lylie", "Maguy", "Marvine", "Mayifa", "Merveille", "Mholie", "Mich", "Nada", "Nicole", "Nuptia", "Patrique", "Pauline", "Peniel", "Reine", "Rihanna", "Ruth", "Sabrina", "Sandra", "Sarah", "Sereine", "Sidorelle", "Stael", "Staelle", "Sylvie", "Valdinelle", "Valentina", "Valerie"]>>
+<<set setup.zairianSlaveSurnames = ["Amani", "Amisi", "Assani", "Augustin", "Badibanga", "Bahati", "Banza", "Banze", "Beya", "Bisimwa", "Bokese", "Bokungu", "Bondo", "Botende", "Buhendwa", "Bukasa", "Byamungu", "Congo", "Dieudonné", "Elia", "Fataki", "Ibaka", "Ilunga", "Jean", "Junior", "Kabala", "Kabamba", "Kabambi", "Kabanga", "Kabangu", "Kabasele", "Kabemba", "Kabengele", "Kabeya", "Kabila", "Kabongo", "Kabulo", "Kabuya", "Kabwe", "Kadima", "Kahindo", "Kakule", "Kalala", "Kalambay", "Kalenga", "Kalombo", "Kalonji", "Kalubi", "Kalume", "Kalunga", "Kamba", "Kambale", "Kanda", "Kandolo", "Kaniki", "Kankolongo", "Kanku", "Kanyinda", "Kapinga", "Kasereka", "Kashala", "Kasonga", "Kasongo", "Katanga", "Katembo", "Katende", "Kayembe", "Kayumba", "Kazadi", "Kazembe", "Kinkela", "Kitenge", "Kitoko", "Kongolo", "Kwete", "Kyenge", "Kyungu", "Landu", "Lelo", "Lubamba", "Luboya", "Lukusa", "Lumbala", "Lumbu", "Lutete", "Lutumba", "Luzolo", "Lwamba", "Mabiala", "Mafuta", "Makengo", "Malango", "Maloba", "Mamba", "Mambu", "Mampuya", "Manda", "Mande", "Masengo", "Masiala", "Massamba", "Masudi", "Mata", "Matadi", "Matondo", "Mavinga", "Mavungu", "Mbaki", "Mbala", "Mbaya", "Mbayo", "Mbikayi", "Mbiya", "Mbo", "Mboma", "Mbombo", "Mbula", "Mbumba", "Mbungu", "Mbuya", "Mbuyamba", "Mbuyi", "Mbuyu", "Mika", "Mirindi", "Moke", "Mondeko", "Monga", "Mpeko", "Mpiana", "Mpoyi", "Mputu", "Muamba", "Muanda", "Mubenga", "Muganza", "Mugisho", "Muhindo", "Mujinga", "Mukadi", "Mukalay", "Mukanya", "Mukeba", "Mukendi", "Mukenge", "Mukoko", "Mukuna", "Mulamba", "Mulenda", "Mulongo", "Mulumba", "Mulunda", "Mumba", "Mumbere", "Musafiri", "Mushagalusa", "Mutamba", "Muteba", "Mutombo", "Muyumba", "Mvouba", "Mwamba", "Mwanza", "Mwenze", "Mwepu", "Nawej", "Ndala", "Ndaya", "Ngalamulume", "Ngalula", "Ngandu", "Ngimbi", "Ngoie", "Ngoma", "Ngongo", "Ngoy", "Ngoyi", "Nkongolo", "Nkulu", "Nlandu", "Nsenga", "Nsimba", "Nsumbu", "Ntambwe", "Ntumba", "Numbi", "Nyembo", "Nzau", "Nzuzi", "Olomide", "Omari", "Omba", "Patel", "Ramazani", "Saidi", "Salumu", "Samba", "Sangwa", "Selemani", "Senga", "Shabani", "Tambwe", "Tsasa", "Tshibanda", "Tshibangu", "Tshilumba", "Tshimanga", "Tumba", "Umba", "Vangu", "Wa", "Youlou", "Yumba", "Zakuani", "Zola"]>>
 
 <<set setup.frenchSlaveNames = ["Aaliyah", "Abigael", "Adèle", "Adriana", "Adrienne", "Agathe", "Aicha", "Albane", "Alessia", "Alexandra", "Alexia", "Aleyna", "Alia", "Alice", "Alicia", "Alienor", "Aline", "Alix", "Aliya", "Aliyah", "Alizee", "Alya", "Alycia", "Alyssa", "Alyssia", "Amandine", "Ambre", "Ambrine", "Amel", "Amelia", "Amélie", "Amina", "Aminata", "Amira", "Amy", "Ana", "Anae", "Anaelle", "Anaïs", "Anastasia", "Andrea", "Angela", "Angèle", "Angelina", "Angeline", "Anissa", "Anna", "Annabelle", "Annaelle", "Anouk", "Apolline", "Ashley", "Asma", "Assia", "Assya", "Astrid", "Athénaïs", "Audrey", "Augustine", "Aurélie", "Aurore", "Ava", "Awa", "Axelle", "Aya", "Berenice", "Bertille", "Blanche", "Cali", "Calie", "Camelia", "Camille", "Candice", "Capucine", "Carla", "Carmen", "Caroline", "Cassandra", "Cassandre", "Cassie", "Cécile", "Cecilia", "Céleste", "Célestine", "Celia", "Céline", "Celya", "Chahinez", "Chaima", "Charlene", "Charlie", "Charline", "Charlotte", "Chayma", "Chiara", "Chloé", "Claire", "Clara", "Clarisse", "Clea", "Clelia", "Clémence", "Clementine", "Cleo", "Cloé", "Clotilde", "Coline", "Constance", "Coralie", "Cyrielle", "Daphné", "Deborah", "Diana", "Diane", "Dina", "Dounia", "Eden", "Ela", "Elea", "Eleana", "Elena", "Eléonore", "Elia", "Elif", "Elina", "Eline", "Elisa", "Élisabeth", "Élise", "Elissa", "Ella", "Eloane", "Élodie", "Éloïse", "Elona", "Elora", "Elsa", "Elya", "Elyna", "Elyne", "Ema", "Emeline", "Emie", "Émilie", "Emily", "Emma", "Emmanuelle", "Emmie", "Emmy", "Emna", "Emy", "Enola", "Enora", "Erine", "Estelle", "Esther", "Eugénie", "Eva", "Eve", "Eya", "Fanny", "Fantine", "Farah", "Fatima", "Fatma", "Fatoumata", "Faustine", "Flavie", "Fleur", "Flora", "Flore", "Florine", "Gabriella", "Gabrielle", "Gaëlle", "Garance", "Genevieve", "Giulia", "Grace", "Gwenaëlle", "Gwendoline", "Hafsa", "Hajar", "Halima", "Hana", "Hanae", "Hanna", "Hannah", "Hawa", "Helena", "Hélène", "Héloïse", "Hermine", "Hiba", "Hind", "Hortense", "Ibtissem", "Ilana", "Iliana", "Ilona", "Ilyana", "Imane", "Imen", "Imene", "Inaya", "Inès", "Irina", "Iris", "Isaure", "Isis", "Isra", "Izia", "Jade", "Jana", "Janelle", "Janna", "Jasmine", "Jeanne", "Jenna", "Jessica", "Jihane", "Joan", "Joana", "Johanna", "Joséphine", "Joy", "Joyce", "Judith", "Julia", "Julie", "Juliette", "Juline", "Justine", "Kahina", "Kaina", "Kamelia", "Kayla", "Kayna", "Kelia", "Kelly", "Kelya", "Kenza", "Kessy", "Khadija", "Kiara", "Kim", "Kimberley", "Kyara", "Laetitia", "Lalie", "Laly", "Lamia", "Lana", "Lara", "Laura", "Laure", "Laurine", "Layana", "Léa", "Leana", "Leane", "Leanne", "Leelou", "Leia", "Leila", "Leina", "Lena", "Leona", "Léonie", "Leyna", "Lia", "Liana", "Lila", "Lilas", "Lili", "Lilia", "Lilie", "LiliRose", "Lilly", "Lilou", "Lilwenn", "Lily", "Lilya", "LilyRose", "Lina", "Linda", "Lindsay", "Line", "Lisa", "Lise", "Lison", "Livia", "Liya", "Loane", "Loanne", "Lois", "Lola", "Lorena", "Lou", "Louane", "Louann", "LouAnn", "Louanne", "LouAnne", "Louisa", "Louise", "Louison", "Louna", "Luce", "Lucia", "Lucie", "Lucile", "Lucille", "Lucy", "Ludivine", "Luna", "Lya", "Lyana", "Lydia", "Lylia", "Lylou", "Lyna", "Madeleine", "Mae", "Maelia", "Maelie", "Maeline", "Maëlle", "Maelly", "Maellys", "Maely", "Maelyne", "Maëlys", "Maelyss", "Maeva", "Maia", "Maily", "Mailys", "Maimouna", "Maina", "Maissa", "Maissane", "Maiwenn", "Malak", "Malia", "Manel", "Manelle", "Manon", "Margaux", "Margot", "Maria", "Mariam", "Marie", "Marilou", "Marina", "Marine", "Marion", "Marwa", "Maryam", "Marylou", "Mathilde", "Maud", "Maya", "Maylis", "Mayssa", "Meissa", "Mélanie", "Melia", "Melina", "Melinda", "Méline", "Mélissa", "Mellina", "Melodie", "Melody", "Melyna", "Melyne", "Meriem", "Meryem", "Mia", "Mila", "Milla", "Mina", "Mona", "Morgane", "Mya", "Myriam", "Nada", "Naelle", "Naia", "Naila", "Naima", "Nais", "Naomi", "Naomie", "Nawel", "Naya", "Nayla", "Neila", "Nelia", "Nell", "Nesrine", "Neyla", "Nina", "Ninon", "Nisa", "Noa", "Noelie", "Noeline", "Noémie", "Nola", "Nora", "Norah", "Nour", "Océane", "Olivia", "Ophélie", "Oriane", "Orlane", "Ornella", "Paloma", "Paola", "Pauline", "Pénélope", "Perrine", "Philippine", "Philomène", "Prune", "Rachel", "Rahma", "Rania", "Raphaëlle", "Rébecca", "Romane", "Romy", "Rosalie", "Rose", "Roxane", "Sabrina", "Sacha", "Safa", "Safia", "Safiya", "Sakina", "Salma", "Salomé", "Samia", "Sana", "Sara", "Sarah", "Sasha", "Savannah", "Selena", "Selene", "Selma", "Serena", "Shaima", "Shaina", "Shana", "Shanna", "Shayna", "Sherine", "Sidonie", "Sirine", "Sixtine", "Sofia", "Solène", "Soline", "Sonia", "Sophia", "Sophie", "Soraya", "Soukaina", "Soumaya", "Stella", "Suzanne", "Suzie", "Syrine", "Taina", "Talia", "Tamara", "Tania", "Tatiana", "Tess", "Tessa", "Thais", "Thalia", "Thea", "Tiffany", "Tina", "Tiphaine", "Valentine", "Vanessa", "Victoire", "Victoria", "Violette", "Wendy", "Yael", "Yaelle", "Yasmina", "Yasmine", "Youna", "Yousra", "Yuna", "Yvette", "Yvonne", "Zahra", "Zelie", "Zia", "Zoé"]>>
 <<set setup.frenchSlaveSurnames = ["Andre", "Arnaud", "Arsenault", "Barbier", "Benoit", "Bernard", "Bertrand", "Blanc", "Blanchard", "Bonnet", "Bouvier", "Boyer", "Brun", "Chevalier", "Clement", "Cohen", "Cousteau", "David", "Denis", "Deschamps", "Dubois", "Dufour", "Dumas", "Dumont", "Dupont", "Durand", "Duval", "Fabre", "Faure", "Favreau", "Fontaine", "Fournier", "Francois", "Gaillard", "Garnier", "Gauthier", "Gautier", "Gerard", "Girard", "Giraud", "Guerin", "Henry", "Jean", "Joly", "Lacroix", "Lambert", "Laurent", "Leclerc", "Lefebvre", "Lefevre", "Legrand", "Lemaire", "Leroux", "Leroy", "Levy", "Lucas", "Marchand", "Marie", "Martin", "Masson", "Mathieu", "Mercier", "Meunier", "Michel", "Moreau", "Morel", "Morin", "Nicolas", "Noel", "Olivier", "Paris", "Perrin", "Petit", "Phillipe", "Picard", "Pierre", "Renaud", "Richard", "Robert", "Robin", "Roche", "Rousseau", "Roussel", "Roux", "Roy", "Simon", "Thomas", "Vidal", "Vincent"]>>
@@ -548,7 +580,7 @@
 <<set setup.sudaneseSlaveNames = ["Amina", "Awmima", "Bakhita", "Fatima", "Halima", "Hawa", "Jalila", "Leila", "Malkat", "Mariam", "Mhadsin", "Muna", "Muram", "Nahid", "Nawal", "Safa", "Tasabih", "Widad", "Yamilé", "Zina"]>>
 <<set setup.sudaneseSlaveSurnames = ["Abass", "Abbas", "Abd", "Abdalla", "Abdallah", "Abdel", "Abdelbagi", "Abdelgadir", "Abdelrahim", "Abdelrahman", "Abdelwahab", "Abdullah", "Abu", "Adam", "Adil", "Ahmad", "Ahmed", "Alamin", "Ali", "Awad", "Aziz", "Babiker", "Babikir", "Badr", "Bashir", "Dafalla", "Deng", "Elamin", "Elhassan", "Elmahi", "Elsayed", "Elsheikh", "Elsir", "Eltayeb", "Fadul", "Gamal", "Gasim", "Hamid", "Hashim", "Hassan", "Hussein", "Ibrahim", "Idris", "Imam", "Ismail", "Juma", "Kamal", "Khalifa", "Magzoub", "Mahgoub", "Mahmoud", "Makki", "Malik", "Mansour", "Mohamed", "Mohammed", "Mohmed", "Mukhtar", "Musa", "Mustafa", "Nasr", "Nour", "Omar", "Omer", "Osman", "Saad", "Saeed", "Salah", "Salih", "Salim", "Satti", "Sudan", "Suleiman", "Sulieman", "Suliman", "Taban", "Taha", "Yassin", "Younis", "Yousif", "Zain"]>>
 
-<<set setup.iraqiSlaveNames = ["Affifa", "Aida", "Alaa", "Alia", "Amal", "Atika", "Awatef", "Bahija", "Basimah", "Bedia", "Betool", "Danah", "Dunya", "Eaman", "Farida", "Gulustan", "Haifa", "Houzan", "Huda", "Inam", "Kenza", "Leila", "Lihadh", "Maysar", "Maysoon", "Nahla", "Naziha", "Nazik", "Noor", "Nuha", "Raghad", "Rahma", "Rana", "Rihab", "Sahar", "Sajida", "Sajida", "Salima", "Samira", "Shatha", "Sondul", "Suaad", "Sundus", "Thumal", "Thura", "Toba", "Wasma'a", "Yanar", "Zaha", "Zainab"]>>
+<<set setup.iraqiSlaveNames = ["Affifa", "Aida", "Alaa", "Alia", "Amal", "Atika", "Awatef", "Bahija", "Basimah", "Bedia", "Betool", "Danah", "Dunya", "Eaman", "Farida", "Gulustan", "Haifa", "Houzan", "Huda", "Inam", "Kenza", "Leila", "Lihadh", "Maysar", "Maysoon", "Nahla", "Nayir", "Naziha", "Nazik", "Noor", "Nuha", "Raghad", "Rahma", "Rana", "Rihab", "Sahar", "Sajida", "Sajida", "Salima", "Samira", "Shatha", "Sondul", "Suaad", "Sundus", "Thumal", "Thura", "Toba", "Wasma'a", "Yanar", "Zaha", "Zainab"]>>
 <<set setup.iraqiSlaveSurnames = ["Abas", "Abbas", "Abd", "Abdul", "Abdulla", "Abdullah", "Abdulrahman", "Abed", "Abnan", "Abo", "Abood", "Ahmad", "Alani", "Alasadi", "Alazzawi", "Albayati", "Aljanabi", "Amin", "Anwar", "Asaad", "Azad", "Azeez", "Aziz", "Baban", "Emad", "Fadhil", "Faris", "Ghazi", "Hadi", "Haider", "Hama", "Hamed", "Hameed", "Hasan", "Hashim", "Hussain", "Hussein", "Hussien", "Ibrahim", "Ismail", "Issa", "Jaafar", "Jabbar", "Jalal", "Jamal", "Jameel", "Jasim", "Jawad", "Kadhim", "Kadhum", "Kaka", "Kamal", "Kamil", "Kareem", "Khoshnaw", "Kurdi", "Mahdi", "Mahmood", "Mahmoud", "Mahmud", "Majeed", "Mohamad", "Mohamed", "Mohammad", "Mohammed", "Mousa", "Muhamad", "Muhammad", "Muhammed", "Mustafa", "Naji", "Noori", "Omar", "Omer", "Othman", "Qadir", "Qasim", "Qassim", "Raad", "Raheem", "Rahman", "Rasheed", "Saad", "Saadi", "Saeed", "Salah", "Salam", "Saleem", "Saleh", "Salem", "Salih", "Salim", "Salman", "Sami", "Sharif", "Sulaiman", "Sultan", "Taha", "Taher", "Yahya", "Yaseen", "Yassin", "Yousif", "Zangana"]>>
 
 <<set setup.uzbekSlaveNames = ["Anora", "Chinara", "Durdona", "Elnura", "Feruza", "Firuza", "Guldasta", "Guli", "Gulnara", "Gulnora", "Indira", "Nargiza", "Olma", "Ona", "Parizoda", "Shahlo", "Shahnoza", "Tahmina", "Umida", "Yulduz", "Zarina", "Zeb"]>>
@@ -845,13 +877,119 @@
 <<set setup.tonganSlaveNames = ["Ana", "Anaseini", "Angelika", "Cassandra", "Dorothy", "Elisiva", "Fakafānua", "Fekitamoeloa", "Fifita", "Fusipala", "Hala'evalu", "Halaevalu", "Heu'ifanga", "Hoamofaleono", "Irene", "Kalolaine", "Lātūfuipeka", "Lavinia", "Luani", "Lusitania", "Mata'aho", "Mele", "Melenaite", "Nanasipau'u", "Neomai", "Papiloa", "Pilolevu", "Rose", "Salote", "Sālote", "Seini", "Siatukimoana", "Sinaitakala", "Siosiana", "Taina", "Tongovua", "Tuputupu", "Uluvalu", "Virginia"]>>
 <<set setup.tonganSlaveSurnames = ["Afeaki", "Afu", "Aho", "Ahoafi", "Aholelei", "Akau'ola", "Akauola", "Akolo", "Aleamotua", "Bloomfield", "Cama", "Chen", "Cocker", "Emberson", "Esau", "Fakahua", "Fakaosi", "Fakatava", "Fakatou", "Fakatulolo", "Falekaono", "Faletau", "Fangupo", "Fanua", "Faupula", "Fe'ao", "Fetokai", "Fifita", "Filiai", "Finau", "Fineanganofo", "Folau", "Foliaki", "Fonokalafi", "Fonua", "Fotu", "Fukofuka", "Fulivai", "Funaki", "Fusimalohi", "Guttenbeil", "Hafoka", "Hakaumotu", "Halapua", "Hansen", "Hausia", "Havea", "Havili", "Heimuli", "Helu", "Hoeft", "Hufanga", "Huni", "Ika", "Ilangana", "John", "Jones", "Kaho", "Kaitapu", "Kalaniuvalu", "Kamoto", "Katoa", "Kaufusi", "Kautoke", "Kava", "Kavaliku", "Kim", "Kioa", "Koloamatangi", "Lakai", "Langi", "Latu", "Lavaka", "Lavaki", "Lavemai", "Lee", "Leger", "Leha", "Lemoto", "Leone", "Liava'a", "Lino", "Lokotui", "Lolohea", "Lui", "Lutui", "Maasi", "Mafi", "Mafileo", "Mahe", "Maka", "Malupo", "Manu", "Manuofetoa", "Masila", "Mataele", "Matangi", "Matoto", "Mau", "Mele", "Miller", "Mo'unga", "Moa", "Moala", "Mone", "Moses", "Mounga", "Nadan", "Nakao", "Nau", "Ngauamo", "Nishi", "Niu", "Niukapu", "Ofa", "Oko", "Otuafi", "Otukolo", "Otunuku", "Pahulu", "Palavi", "Palu", "Panuve", "Paongo", "Pasikala", "Paunga", "Pele", "Penitani", "Petelo", "Pohiva", "Polota", "Pongia", "Prasad", "Pulini", "Puloka", "Pulu", "Ramlu", "Salesi", "Schaumkel", "Sela", "Sika", "Smith", "Soakai", "Ta'ai", "Tai", "Taione", "Takai", "Takau", "Talau", "Tangi", "Tapueluelu", "Tatafu", "Taufa", "Taufatofua", "Taukolo", "Taumoepeau", "Taungakava", "Tausinga", "Tautua'a", "Tei", "Telefoni", "Thomas", "Toa", "Tohi", "Tongia", "Toutai", "Tu'inukuafe", "Tu'ipulotu", "Tu'ivakano", "Tuakoi", "Tufui", "Tuihalamaka", "Tuineau", "Tuionetoa", "Tuipulotu", "Tuita", "Tuitupou", "Tuivai", "Tuku'aho", "Tukuafu", "Tupou", "Tupouniua", "Ulakai", "Vaenuku", "Vailea", "Vaipulu", "Vaipuna", "Vaisima", "Vaitai", "Vaka", "Vakasiuola", "Vakauta", "Vave", "Vea", "Vehikite", "Veikoso", "Vete", "Vi", "Wang", "Wolfgramm"]>>
 
+<<set setup.catalanSlaveNames = ["Aina", "Ana", "Àngels", "Anna", "Annabel", "Antònia", "Carla", "Carmen", "Clara", "Cristina", "Elisabeth", "Elvira", "Emma", "Empar", "Esther", "Irene", "Isabel", "Julià", "Júlia", "Laia", "Laura", "Lola", "Lucia", "Lydia", "Magalí", "Marcella", "Maria del Pilar", "Maria", "María", "Martina", "Maruja", "Mercedes", "Mònica", "Noa", "Núria", "Olga", "Paula", "Rosa", "Roser", "Samanta", "Soledad", "Teresa", "Zenobia"]>>
+<<set setup.catalanSlaveSurnames = ["Altafaj", "Amela", "Andreu", "Badía", "Ballesta", "Bertran", "Canal", "Carret", "Casamajó", "Castarà", "Cubas", "Fàbrega", "Farran", "Folguera", "Forns", "González", "Guillamon", "Junqueras", "Karr", "Mas", "Moliner", "Monserdà", "Montalbán", "Montanyà", "Monzó", "Mulder", "Nopca", "Pagans", "Partal", "Pla", "Plaja", "Polo", "Puig", "Puigdemont", "Puyal", "Sagi", "Sala", "Saladrigas", "Sancho", "Sanllorente", "Terribas", "Tortajada", "Villar", "Xammar"]>>
+
+<<set setup.equatoguineanSlaveNames = ["Adriana", "Ana", "Bibiana", "Blessing", "Camila", "Carmen", "Carolina", "Christelle", "Constancia", "Cristina", "Dorine", "Emilia", "Emiliana", "Esperanza", "Flor", "Genoveva", "Gloria", "Isabel", "Jade", "Juliana", "Laetitia", "Lúcia", "Lucrecia", "Magdalena", "Mari", "María del Carmen", "María Teresa", "María", "Marlene", "Milagrosa", "Natalia", "Paula", "Paz", "Pilar", "Raquel", "Rosa", "Ruth", "Sinforosa", "Teresa"]>>
+<<set setup.equatoguineanSlaveSurnames = ["Abaga", "Abeso", "Ada", "Adugu", "Aguilera", "Ahmad", "Akapo", "Alo", "Alogo", "Alvarez", "Andeme", "Angono", "Angue", "Aniceto", "Antai", "Asumu", "Avomo", "Ba", "Bacale", "Bah", "Bakale", "Barleycorn", "Bela", "Belope", "Bibang", "Bielo", "Bindang", "Bioko", "Biyogo", "Blanco", "Boho", "Borico", "Cabrera", "Camara", "Chicampo", "Cisse", "Collins", "Conde", "Conten", "Coulibaly", "Cruz", "Davies", "Diallo", "Diawara", "Diaz", "Diop", "Diouf", "Dominguez", "Doucoure", "Dougan", "Ebang", "Ebong", "Ebuka", "Edjang", "Edu", "Efa", "Eg", "Ela", "Ele", "Elo", "Eneme", "Engo", "Engonga", "Engono", "Esono", "Esteban", "Esuba", "Eyama", "Eyang", "Eyene", "Fakih", "Fernandes", "Fernandez", "Ferreira", "Garca", "Garcia", "Gomez", "Gonzalez", "Gueye", "Guinee", "Hassan", "Hernandez", "Ibrahim", "Iyanga", "Jackson", "Jean", "Jimenez", "Johnson", "Jones", "Jose", "Keita", "King", "Koffi", "Kouassi", "Lawson", "Lee", "Lima", "Lohoba", "Lopez", "Luna", "Malabo", "Man", "Mane", "Manga", "Mangue", "Martin", "Martinez", "Martins", "Maye", "Mba", "Mbana", "Mbang", "Mbo", "Mbomio", "Medja", "Memba", "Mengue", "Micha", "Miko", "Mitogo", "Modjo", "Molina", "Molongua", "Momese", "Monsuy", "Motu", "Mpanga", "Muñoz", "Nana", "Nchama", "Ncogo", "Ndjeng", "Ndong", "Ndongo", "Ngo", "Ngomo", "Ngua", "Nguema", "Niang", "Njoya", "Nkulu", "Nsang", "Nsue", "Ntongono", "Ntutumu", "Nzang", "Nze", "Obama", "Obiang", "Obono", "Okenve", "Oko", "Okomo", "Oliveira", "Olo", "Oma", "Ona", "Ondo", "Onguene", "Orichi", "Orobiyi", "Osa", "Ovono", "Owono", "Oyana", "Oyono", "Paz", "Pereira", "Perez", "Ramirez", "Rivas", "Rodrigues", "Rodriguez", "Rojas", "Roku", "Rondo", "Saleh", "Salomon", "Sam", "Sanchez", "Santos", "Segorbe", "Seriche", "Shaw", "Silva", "Sima", "Sissoko", "Slabý", "Smith", "Sow", "Teixeira", "Thomas", "Thompson", "Toichoa", "Traore", "Wafo", "Williams", "Wong", "Yao", "Young"]>>
+
+<<set setup.frenchPolynesianSlaveNames = ["Béatrice", "Célestine", "Cheyenne", "Gina", "Heikapu", "Henriette", "Hereiti", "Hina", "Hinano", "Hinarere", "Jeanne", "Jocelyne", "Karina", "Maeva", "Mareva", "Marie", "Moea", "Moeata", "Poema", "Rita", "Taïna", "Tarita", "Teura", "Tiare", "Titaina", "Titaua", "Vaea", "Vaitiare"]>>
+<<set setup.frenchPolynesianSlaveSurnames = ["Adams", "Alexandre", "Amaru", "Amo", "Arai", "Atger", "Aumeran", "Bambridge", "Barff", "Bellais", "Bennett", "Bernard", "Bessert", "Bonnefin", "Bonnet", "Bonno", "Boosie", "Bordes", "Brodien", "Brothers", "Brotherson", "Buchin", "Buillard", "Chan", "Chang", "Chansin", "Chen", "Cheung", "Chin", "Chong", "Chung", "Clark", "Colombani", "Cowan", "Dauphin", "David", "Deane", "Dexter", "Domingo", "Doom", "Doucet", "Drollet", "Dubois", "Dupont", "Durand", "Estall", "Ferrand", "Flohr", "Flores", "Frogier", "Fuller", "Garbutt", "Garcia", "Garnier", "Gooding", "Grand", "Guilloux", "Guyot", "Haiti", "Hamblin", "Hapairai", "Hart", "Hauata", "Haumani", "Ho", "Holman", "Hunter", "Ioane", "Itchner", "Jamet", "Johnston", "Juventin", "Lai", "Laille", "Lao", "Lau", "Laurent", "Law", "le Gall", "Leboucher", "Lee", "Lehartel", "Lemaire", "Lenoir", "Leou", "Li", "Liao", "Lo", "Lucas", "Ly", "Mai", "Maitere", "Mamatui", "Manate", "Manea", "Manutahi", "Mare", "Marie", "Mariteragi", "Martin", "Martinez", "Maurin", "Mercier", "Michel", "Mou", "Mu", "Nicolas", "Nouveau", "Nui", "Pambrun", "Paofai", "Parker", "Pasquier", "Peni", "Perez", "Perry", "Petit", "Picard", "Putoa", "Quesnot", "Raapoto", "Raoulx", "Rey", "Richard", "Richmond", "Robert", "Roche", "Rochette", "Sacault", "Sage", "Salmon", "Sandford", "Sanford", "Shan", "Siu", "Smith", "Taerea", "Tahuhuterani", "Taiarui", "Tama", "Tamarii", "Tang", "Tapi", "Taputu", "Taputuarai", "Tarahu", "Taruoura", "Tauatiti", "Tauraa", "Tauru", "Tautu", "Tchen", "Teai", "Teamo", "Teamotuaitau", "Teariki", "Tefaatau", "Tehahe", "Teheiura", "Tehoiri", "Teihotaata", "Teihotu", "Teinauri", "Teissier", "Teiva", "Temaiana", "Temarii", "Temauri", "Tepa", "Terai", "Teriierooiterai", "Teriipaia", "Teriitahi", "Teriitehau", "Terorotua", "Tetuanui", "Teuira", "Thomas", "Tihoni", "Tinorua", "Tixier", "Toomaru", "Tuairau", "Tuheiava", "Tumahai", "Tunutu", "Utia", "Vaiho", "Vernaudon", "Vidal", "Viriamu", "Vivish", "Voirin", "Vongue", "Wan", "Williams", "Wöhler", "Wong", "Yau", "Yu"]>>
+
+<<set setup.kurdishSlaveNames = ["Ajamê", "Aynur", "Ayşe", "Bahîya", "Dashni", "Dilek", "Dillberê", "Fehriye", "Fidan", "Gulhat", "Helan", "Houzan", "Hozan", "Ismahan", "Lana", "Leyla", "Najla", "Nalin", "Nayir", "Neda", "Nur", "Perwin", "Rojda", "Sakine", "Sebahat", "Sihadet", "Soraya", "Widad", "Xafshê", "Zînê", "Zuhal"]>>
+<<set setup.kurdishSlaveSurnames = ["Ahmad", "Ahmed", "Al-Atrushi", "Al-Maliki", "Ali", "Amin", "Ata", "Ayna", "Baban", "Bapir", "Barzanji", "Baydemir", "Birdal", "Buldan", "Dabagh", "Demir", "Güven", "Huso", "Irmak", "Kalkan", "Karima", "Krekar", "Kurtulan", "Mahmoud", "Mamand", "Muhammed", "Mustafa", "Nouri", "Omar", "Omer", "Othman", "Özsökmenler", "Rahim", "Ramazan", "Saleh", "Salih", "Sayfour", "Shaways", "Sindi", "Tuncel", "Uthman", "Wahby", "Zana", "Ziad"]>>
+
+<<set setup.tibetanSlaveNames = ["Bhuti", "Chingdrol", "Choedon", "Choenyi", "Chokey", "Chokphel", "Damchoe", "Dawa", "Dema", "Dhundup", "Dickey", "Dicki", "Dolkar", "Dolma", "Dorjee", "Drolma", "Gyatso", "Gyurmey", "Jampa", "Jamyang", "Jangchup", "Jetsun", "Jungney", "Karma", "Kelsang", "Khando", "Kunchok", "Kunga", "Lekhshey", "Lhakpa", "Lhamo", "Lhawang", "Magyal", "Metok", "Namdak", "Namdol", "Namgyal", "Ngonga", "Norbu", "Nyima", "Paljor", "Passang", "Pema", "Pemba", "Phuntsok", "Rabgyal", "Rabten", "Rangdol", "Rigsang", "Rigzin", "Rinchen", "Samdup", "Samten", "Sangyal", "Sonam", "Soname", "Tashi", "Tenzin", "Tsering", "Tseten", "Tsomo", "Tsundue", "Wangchuk", "Wangmo", "Wangyag", "Woeser", "Woeten", "Yangkey", "Yuying"]>>
+<<set setup.tibetanSlaveSurnames = ["Beru", "Bumsa", "Cezhug", "Chang", "Chen", "Choephel", "Choeyang", "Choling", "Chungtak", "Cui", "Dhondup", "Dhundup", "Dolma", "Dongkar", "Dorje", "Dorjee", "Gyalpo", "Gyaltsen", "Gyatso", "Jamcan", "Jigme", "Khyentse", "Kyab", "Kyi", "Lhamo", "Li", "Losal", "Losang", "Ming", "Mipham", "Namdak", "Namgyal", "Ngapoi", "Norbu", "Nyatri", "Nyidron", "Nyingpo", "Pema", "Phagpa", "Puncog", "Rinpoche", "Chhoyang", "Sangay", "Songtsen", "Tashi", "Tenzin", "Tethong", "Thondup", "Tobgyal", "Topgyal", "Trizin", "Tsechu", "Tsemo", "Tsering", "Wangdi", "Wangyal", "Wong", "Yang", "Yangchen", "Zheng"]>>
+
+<<set setup.bissauGuineanSlaveNames = ["Adiato", "Anhel", "Anne", "Antonieta", "Cadi", "Carlina", "Carmen", "Domingas", "Fatumata", "Fidelma", "Filomena", "Francisca", "Graciela", "Isabel", "Jacira", "Jessica", "Leopoldina", "Maria", "Odete", "Rebecca", "Rosa", "Salomea", "Sona", "Sylvia", "Taciana", "Tamara", "Zinha"]>>
+<<set setup.bissauGuineanSlaveSurnames = ["Abulai", "Aguayo", "Ake", "Albino", "Alfredo", "Almeida", "Alvarenga", "Alves", "Amancio", "Ano", "Antonio", "Araujo", "Attebi", "Augusto", "Ba", "Bacar", "Bafata", "Bah", "Bald", "Balde", "Baltazar", "Bamba", "Banjai", "Barai", "Barbosa", "Bari", "Barros", "Barry", "Batista", "Bernardo", "Biague", "Biai", "Bissau", "Boissy", "Brakwah", "Brandao", "Ca", "Cabral", "Caetano", "Camara", "Campal", "Campos", "Cande", "Cante", "Cardoso", "Carlos", "Carvalho", "Casimiro", "Cassama", "Coly", "Conte", "Correia", "Costa", "Coumbassa", "Cuino", "Cunha", "da Costa", "da Cunha", "da Silva", "Daba", "Dabo", "Danfa", "Danso", "Darame", "Dauda", "de Carvalho", "de Pina", "Delgado", "Diallo", "Diamanka", "Dias", "Diatta", "Dieme", "Djalo", "Djassi", "Djata", "Djau", "Djeme", "Domingos", "dos Reis", "dos Santos", "Duarte", "Embalo", "Esteves", "Evora", "Fati", "Fernandes", "Fernando", "Ferreira", "Fonseca", "Fortes", "Furtado", "Gama", "Goia", "Gomes", "Gomis", "Goncalves", "Gonzalez", "Gueye", "Guine", "Handem", "Henriques", "Iala", "Ie", "Indami", "Indi", "Indjai", "Injai", "Jalo", "Jamanca", "Jaquite", "Jassi", "Joao", "Jose", "Junior", "Keita", "Konan", "Lima", "Lopes", "Lourenço", "Luis", "Malam", "Mamadu", "Manafa", "Mane", "Manga", "Mango", "Manuel", "Mario", "Marques", "Martinho", "Martins", "Master", "Mendes", "Mendonça", "Mendy", "Miranda", "Monteiro", "Moreira", "Nancassa", "Nanque", "Ndiaye", "Nhaga", "Nunes", "Ocante", "Oliveira", "Paralta", "Pedro", "Pereira", "Piña", "Pinto", "Pires", "Quade", "Quebe", "Queita", "Quintino", "Raj", "Ramos", "Reis", "Ribeiro", "Robalo", "Rocha", "Rodrigues", "Sa", "Saliu", "Sambu", "Sampa", "Sanca", "Sanches", "Sane", "Sanha", "Sani", "Sano", "Santos", "Saqui", "Seco", "Seide", "Seidi", "Semedo", "Sene", "Sharma", "Siga", "Sila", "Silva", "So", "Soares", "Sousa", "Souza", "Sow", "Stevens", "Tamba", "Tavares", "Tchuda", "Te", "Teixeira", "Traore", "Türe", "Varela", "Vaz", "Vieira"]>>
+
+<<set setup.chadianSlaveNames = ["Agnes", "Albertine", "Amani", "Angela", "Arafa", "Bibiro", "Bourkou", "Carine", "Christine", "Delphine", "Elsie", "Fadoul", "Fatime", "Georges", "Hadjé", "Hinda", "Hinikissia", "Jacqueline", "Jodie", "Kalthouma", "Kaltouma", "Louise", "Luiza", "Prudence", "Rosalie", "Sylviane"]>>
+<<set setup.chadianSlaveSurnames = ["Abakar", "Abass", "Abba", "Abbas", "Abbo", "Abdallah", "Abdel", "Abdel-Aziz", "Abdelaziz", "Abdelkerim", "Abdelrahim", "Abdelsalam", "Abderaman", "Abderamane", "Abdou", "Abdoulaye", "Abdramane", "Aboubakar", "Adam", "Adamou", "Adannou", "Adoudou", "Adoum", "Ahamat", "Ahmat", "Ahmed", "Alain", "Ali", "Alio", "Alladoum", "Allamine", "Allarassem", "Amine", "Annour", "Appolinaire", "Arabi", "Assane", "Ayoub", "Baba", "Babikir", "Bachar", "Badaoui", "Barka", "Barkai", "Batran", "Beassoum", "Bechir", "Bedoum", "Beguy", "Belem", "Benam", "Beninga", "Beral", "Bichara", "Blague", "Bouba", "Boukar", "Bourma", "Brahim", "Cherif", "Choukou", "Clement", "Commelin", "Constant", "Coulibaly", "Dadi", "Dahab", "Daoud", "Diallo", "Dieudonné", "Djarma", "Djerane", "Djibrine", "Djidda", "Djikoloum", "Djimadoum", "Djimadoumbaye", "Djimbaye", "Djimet", "Doumde", "Doungous", "Dounia", "Elie", "Emmanuel", "Eric", "Fadoul", "Fall", "Fatimé", "Felix", "Fidele", "Fils", "Frederic", "Goni", "Goudja", "Goukouni", "Habib", "Haggar", "Hamat", "Hamdan", "Hamid", "Hamit", "Hamza", "Haroun", "Hassaballah", "Hassan", "Hassane", "Hissein", "Hisseine", "Ibrahim", "Idriss", "Innocent", "Issa", "Jacques", "Jean", "Josiane", "Kabir", "Kanika", "Kara", "Katir", "Khalil", "Khamis", "Kumar", "Li", "Madingar", "Mahamat", "Mahdi", "Maissala", "Malick", "Mallah", "Malloum", "Manga", "Mangue", "Masra", "Matar", "Mbaigoto", "Mbainaissem", "Mbairamadji", "Mbodou", "Mohamed", "Moukhtar", "Moursal", "Moussa", "Moustapha", "Mouta", "Nabia", "Nadji", "Nadjingar", "Narcisse", "Nassour", "Ndouba", "Ngaba", "Ngakoutou", "Ngaro", "Noudjalbaye", "Nour", "Olivier", "Ouchar", "Oumar", "Ousman", "Ousmane", "Outman", "Palebele", "Ramadan", "Ramadane", "Ramat", "Remadji", "Richard", "Rodrigue", "Roland", "Ronel", "Sakal", "Saleh", "Sanoussi", "Seid", "Seidou", "Senoussi", "Sidick", "Silva", "Smith", "Soudy", "Sougui", "Souleyman", "Souleymane", "Soumaine", "Sow", "Taha", "Tahir", "Tao", "Tidjani", "Toko", "Toure", "Traore", "Wang", "Yacoub", "Yaya", "Yerima", "Younous", "Youssouf", "Zakaria", "Zhang"]>>
+
+<<set setup.comorianSlaveNames = ["Ahamada", "Anlia", "Asmayat", "Ayidat", "Ayouba", "Bahia", "Chamsia", "Coralie", "Denika", "Djoueria", "Faïza", "Feta", "Hadidja", "Hadjira", "Housnati", "Liane", "Nazlati", "Rafida", "Rifka", "Safia", "Salhate", "Sandjema", "Tina", "Touhfat"]>>
+<<set setup.comorianSlaveSurnames = ["Abbas", "Abdallah", "Abderemane", "Abdillah", "Abdillahi", "Abdou", "Abdoul", "Abdoul-Karim", "Abdoulkarim", "Abdouroihamane", "Abdullatuf", "Abou", "Aboubacar", "Aboudou", "Adam", "Adinani", "Ahamad", "Ahamada", "Ahamadi", "Ahamed", "Ahmada", "Ahmed", "Alhadhur", "Ali", "Allaoui", "Amina", "Anli", "Assani", "Assoumani", "Athoumani", "Attoumane", "Attoumani", "Azali", "Bacar", "Bazi", "Bedja", "Ben", "ben Abdallah", "ben Abdou", "ben Ali", "Boina", "Boinaheri", "Boinali", "Boura", "Bourhane", "Bourhani", "Chakir", "Chami", "Chamsidine", "Chanfi", "Charif", "Cheikh", "Correa", "Cortes", "Daniel", "Daoud", "Daroueche", "Diaz", "Djae", "Djoumoi", "El-Aziz", "Elamine", "Elarif", "Farhane", "Farid", "Farouk", "Fatima", "Fatouma", "Garcia", "Gomez", "Gonzalez", "Hachim", "Hadidja", "Hadji", "Hafidhou", "Hakim", "Halidi", "Halifa", "Hamada", "Hamadi", "Hamidou", "Hamza", "Harisy", "Haruna", "Hassan", "Hassane", "Hassani", "Himidi", "Houbabi", "Houmadi", "Humblot", "Ibouroi", "Ibrahim", "Ibrahima", "Idarousse", "Idriss", "Ismael", "Issa", "Kalfane", "Kamal", "Kassim", "Khodidas", "Lopes", "Lopez", "Loutfi", "M'Madi", "Maamoune", "Madi", "Mahamoud", "Mahamoudou", "Mansour", "Maoulida", "Marco", "Mari", "Martinez", "Martins", "Massoudi", "Massoundi", "Mbae", "Mbaraka", "Mchangama", "Mdahoma", "Mgomri", "Mhoma", "Mhoudine", "Mhoumadi", "Mina", "Miradji", "Mirghane", "Mlanao", "Mmadi", "Mogne", "Mogni", "Mohamadi", "Mohamed", "Moina", "Moindjie", "Moindze", "Mouhidine", "Mouhtar", "Mouigni", "Moumine", "Mourchid", "Mourdi", "Moussa", "Moustoifa", "Mroivili", "Msahazi", "Msaidie", "Nadjim", "Nakib", "Nashmi", "Nassor", "Nassuf", "Nassur", "Nourdine", "Omar", "Oumouri", "Ousseni", "Papa", "Perez", "Quintero", "Rachad", "Rachid", "Reyes", "Rodrguez", "Roukia", "Saadi", "Saandi", "Sahimi", "Said", "Saidali", "Saindou", "Salim", "Sanchez", "Sidi", "Silai", "Silva", "Sitti", "Smith", "Soidri", "Soidridine", "Soilihi", "Soudjay", "Souef", "Soulaimana", "Soule", "Suarez", "Tabibou", "Taoufik", "Tourqui", "Toybou", "Wu", "Yahaya", "Youssouf", "Zaid", "Zainati", "Zakaria", "Zen", "Zoubert"]>>
+
+<<set setup.ivorianSlaveNames = ["Adé", "Adjoua", "Affoussiata", "Alimata", "Amenan", "Angèle", "Anna", "Annabelle", "Anne-Marie", "Anne", "Audrey", "Aya", "Chantal", "Christelle", "Christiane", "Christine", "Claudia", "Constance", "Desiree", "Dobet", "Dominique", "Elise", "Emma", "Fatou", "Fatoumata", "Grace", "Henriette", "Jacqueline", "Joana", "Josette", "Maimouna", "Marguerite", "Mariam", "Marie-Thérèse", "Marie", "Mathilde", "Micheline", "Nayanka", "Pascale", "Paula", "Priscilla", "Rachelle", "Regina", "Rose", "Simone", "Sonia", "Tanella", "Thérèse", "Vanessa", "Véronique", "Virgine", "Werewere", "Yohou"]>>
+<<set setup.ivorianSlaveSurnames = ["Abou", "Achi", "Adingra", "Adje", "Adon", "Adou", "Ahoua", "Ake", "Akpa", "Akre", "Alla", "Allou", "Aman", "Amani", "Amon", "Ange", "Anoh", "Assamoi", "Assemien", "Assi", "Assoumou", "Atse", "Atta", "Bah", "Bakayoko", "Ballo", "Bamba", "Beda", "Benie", "Berte", "Beugre", "Bi", "Bile", "Bini", "Ble", "Boa", "Bogui", "Bohoussou", "Boka", "Bolou", "Boni", "Bosson", "Boua", "Brou", "Camara", "Cherif", "Cisse", "Coulibaly", "Dadie", "Dagnogo", "Dago", "Danho", "Dao", "Dembele", "Diabagate", "Diabate", "Diaby", "Diakite", "Diallo", "Diarra", "Diarrassouba", "Dibi", "Diby", "Die", "Digbeu", "Diomande", "Diop", "Djaha", "Dje", "Djedje", "Dosso", "Doumbia", "Dubois", "Ehouman", "Ehui", "Ekra", "Essoh", "Ettien", "Fadiga", "Fofana", "Gbane", "Gnagne", "Gnahore", "Gnamien", "Goli", "Guede", "Guehi", "Guei", "Gueu", "Gueye", "Irie", "Issa", "Jean", "Kaba", "Kablan", "Kabore", "Kabran", "Kacou", "Kadio", "Kadjo", "Kakou", "Kamagate", "Kamara", "Kanga", "Kangah", "Kante", "Karamoko", "Kassi", "Keita", "Kipre", "Kobenan", "Kodjo", "Koffi", "Komenan", "Kon", "Konan", "Konate", "Kone", "Kore", "Kossonou", "Koua", "Kouacou", "Kouadio", "Kouakou", "Kouam", "Kouame", "Kouao", "Kouassi", "Koudou", "Kouman", "Kourouma", "Koutouan", "Kouyate", "Kpan", "Lago", "Lasme", "Loba", "Loukou", "Maiga", "Malan", "Marie", "Meite", "Mel", "Meledje", "Miezan", "Mobio", "N'Cho", "N'Da", "N'Dri", "N'Goran", "N'Guessan", "N'Zi", "Ncho", "Nda", "Ndri", "Ngoran", "Nguessan", "Niamien", "Niamke", "Oka", "Okou", "Ouattara", "Ouedraogo", "Oulai", "Sako", "Sangare", "Sanogo", "Savane", "Sawadogo", "Seka", "Sekongo", "Seri", "Sery", "Sidibe", "Sie", "Silue", "Soro", "Soumahoro", "Sow", "Sylla", "Tano", "Tanoh", "Tape", "Tia", "Timite", "Toure", "Tra", "Traor", "Traore", "Tuo", "Yao", "Yapi", "Yapo", "Yavo", "Yeboue", "Yeo", "Yoboue", "Yoro", "Zadi", "Zamble"]>>
+
+<<set setup.mauritanianSlaveNames = ["Aicha", "Aïchetou", "Aïssata", "Aminata", "Bounkou", "Cheikha", "Coumba", "Couro", "Dimi", "Diouma", "Fati", "Fatimatou", "Fatou", "Hawa", "Houleye", "Keera", "Khatou", "Malouma", "Maria", "Mariam", "Maty", "Melissa", "Mintata", "Mubarkah", "Naha", "Um", "Vatma", "Zeina"]>>
+<<set setup.mauritanianSlaveSurnames = ["Abd", "Abdallahi", "Abdella", "Abdellahi", "Abderrahmane", "Abdi", "Abdy", "Abeid", "Abeidi", "Abeidy", "Abidine", "Achour", "Ahaimed", "Aheimed", "Ahmed", "Ahmedou", "Alioune", "Allah", "Aly", "Amar", "Anne", "Aw", "Ba", "Baba", "Babah", "Babe", "Babou", "Bah", "Barka", "Barry", "Beibou", "Beilil", "Belkhair", "Belkheir", "Beye", "Bilal", "Blal", "Boilil", "Boubacar", "Boubou", "Bouh", "Bouna", "Boushab", "Brahim", "Camara", "Cheikh", "Cheine", "Cisse", "Cissokho", "Coulibaly", "Dah", "Dahi", "Deh", "Dem", "Demba", "Dia", "Diagne", "Diakite", "Diallo", "Diarra", "Diaw", "Diawara", "Didi", "Dieng", "Dine", "Diop", "Ebeid", "El Abd", "El Abed", "El Barka", "El Bechir", "El Boukhary", "El Hacen", "El Hadj", "El Hassen", "El Hor", "El Id", "El Khair", "El Kheir", "El Kory", "El Mamy", "El Moctar", "El Mokhtar", "El Moustapha", "Elemine", "Eleyatt", "Ely", "Ethmane", "Fall", "Gaye", "Gueye", "Habib", "Haiballa", "Hamadi", "Hamady", "Hamed", "Hamoud", "Hemed", "Imijine", "Issa", "Jeddou", "Jedou", "Jiddou", "Jidou", "Kane", "Kebe", "Keita", "Konate", "Labeid", "Laghdaf", "Lam", "Lebeid", "Lehbib", "Lemine", "Lemrabott", "Limam", "Ly", "M'Bareck", "M'Barek", "M'Baye", "M'Beirick", "M'Beirik", "M'Bodj", "M'Boirick", "M'Haimid", "M'Hamed", "M'Heimid", "Maatalla", "Magha", "Maham", "Mahmoud", "Maleck", "Maouloud", "Massa", "Massoud", "Matalla", "Mbareck", "Meilid", "Meissa", "Merzoug", "Messaoud", "Messoud", "Moctar", "Mohamed", "Mohamedou", "Moussa", "N'Diaye", "N'Dongo", "N'Gaidé", "Najem", "Niang", "Niass", "Oubeid", "Ould", "Oumar", "R'Chid", "Ramdhane", "Sabar", "Said", "Saleck", "Saleh", "Salek", "Salem", "Sall", "Samba", "Sambe", "Sarr", "Seck", "Sghair", "Sid'ahmed", "Sidi", "Sidibe", "Sidiya", "Sleimane", "Sokhona", "Soueidi", "Soueidy", "Soueilem", "Soule", "Soumare", "Sow", "Sy", "Sylla", "Taher", "Taleb", "Tall", "Thiam", "Toure", "Traore", "Vadel", "Val", "Vall", "Wane", "Weiss", "Werzeg", "Yahya", "Yarg", "Zeidane", "Zein", "Zeine"]>>
+
+<<set setup.mauritianSlaveNames = ["Aimée", "Ameeksha", "Ameenah", "Anais", "Anaïs", "Ananda", "Anita", "Annabelle", "Anne", "Aurelie", "Bessika", "Carole", "Caroline", "Cheyenne", "Christiane", "Christianne", "Cindy", "Daisy", "Dalysha", "Danielle", "Danika", "Dhandevy", "Diya", "Florence", "Françoise", "Geneviève", "Geraldine", "Jacky", "Jenny", "Karen", "Kushboo", "Laetitia", "Leena", "Lindsey", "Maria", "Marie-Aimée", "Marie-Anne", "Marie-Geraldine", "Marie-Natacha", "Marie-Thérèse", "Marie", "Mariella", "Marinne", "Maryse", "Maya", "Melody", "Micaella", "Michelle", "Monique", "Natacha", "Nathacha", "Nirmala", "Nita", "Olivia", "Oona", "Pallavi", "Priscilla", "Ranini", "Sabine", "Sheila", "Shenaz", "Shirin", "Stephanie", "Sylvie", "Thérèse", "Veronique", "Viveka"]>>
+<<set setup.mauritianSlaveSurnames = ["Abdool", "Adam", "Angel", "Antoine", "Appadoo", "Appadu", "Armoogum", "Ash", "Atchia", "Aubeeluck", "Augustin", "Babajee", "Bahadoor", "Baichoo", "Balgobin", "Balloo", "Beeharry", "Begue", "Bholah", "Bhoyroo", "Bhujun", "Bhunjun", "Bhurtun", "Bissessur", "Boodhoo", "Boodhun", "Boojhawon", "Boolaky", "Bucktowar", "Bundhoo", "Bundhun", "Carver", "Catherine", "Caunhye", "Chan", "Chetty", "Cheung", "Chummun", "Chung", "Curpen", "Daby", "Damree", "David", "Desvaux", "Devi", "Domah", "Domun", "Dowlut", "Duval", "Dwarka", "Edoo", "Emrith", "Fong", "Francois", "Gilbert", "Gobin", "Goburdhun", "Goder", "Gokhool", "Gokool", "Gopal", "Gopaul", "Gopee", "Govinden", "Gujadhur", "Gungah", "Gungaram", "Gunnoo", "Hardy", "Harel", "Heerah", "Hosany", "Hossen", "How", "Hurry", "Ip", "Jankee", "Jean", "Jeebun", "Jeetoo", "Jeetun", "Jhugroo", "Jhurry", "Jolicoeur", "Joomun", "Joseph", "Jugoo", "Khadaroo", "Khan", "Khodabocus", "Khodabux", "Koenig", "Kowlessur", "Kumar", "Labonne", "Lafleur", "Lagesse", "Lai", "Lam", "Lan", "Lebon", "Lee", "Leung", "Li", "Lim", "Louis", "Luchmun", "Luximon", "Mamet", "Mamode", "Marie", "Maurel", "Maurice", "Michel", "Mohabeer", "Mohamed", "Mohit", "Mohun", "Mootoosamy", "Moutou", "Mudhoo", "Mungroo", "Mungur", "Murday", "Narain", "Narrainen", "Ng", "Nowbuth", "Nunkoo", "Oozeer", "Padaruth", "Panchoo", "Patel", "Paul", "Peerally", "Peerbux", "Peeroo", "Permal", "Perrine", "Persand", "Pierre", "Pillay", "Prayag", "Purmessur", "Raggoo", "Raj", "Rajcoomar", "Ram", "Ramasamy", "Ramasawmy", "Ramchurn", "Ramdenee", "Ramdhony", "Ramdin", "Ramen", "Ramessur", "Ramful", "Ramgoolam", "Ramjaun", "Ramkissoon", "Ramloll", "Ramlugun", "Ramnarain", "Ramphul", "Ramsaha", "Ramsahye", "Ramsamy", "Ramsurrun", "Ramtohul", "Rawat", "Rey", "Rose", "Rughoobur", "Seebaluck", "Seeboruth", "Seechurn", "Seegoolam", "Seeruttun", "Seetohul", "Shah", "Sham", "Sharma", "Sheik", "Singh", "Smith", "Soobarah", "Sookun", "Sunassee", "Sungkur", "Teeluck", "Thomas", "Toolsee", "Tsang", "Tse", "Ujoodha", "Veerapen", "Veerasamy", "Wan", "Wong", "Yan"]>>
+
+<<set setup.mosothoSlaveNames = ["Alice", "Amelia", "Anna", "Bereng", "Christina", "Constance", "Deborah", "Khauhelo", "Lineo", "Lipolelo", "Litsitso", "M'apotlaki", "Mamokete", "Mamorallo", "Masempe", "Mathato", "Michelle", "Mohato", "Moipone", "Nteboheleng", "Nthona", "Ntlhoi", "Pontso", "Priscilla", "Reitumetse", "Sebongile", "Selloane", "Sheila", "Tabitha", "Tsepang"]>>
+<<set setup.mosothoSlaveSurnames = ["Bereng", "Chabeli", "Chobokoane", "Diaho", "Hlalele", "Kabi", "Kali", "Khaketla", "Khalema", "Khetsi", "Khoabane", "Khoeli", "Khomari", "Kolobe", "Lebaka", "Lebesa", "Lebitsa", "Leboela", "Lebona", "Lebusa", "Lechesa", "Lehloenya", "Lehohla", "Lejaha", "Lekhanya", "Lenka", "Lepheana", "Lephoto", "Lepota", "Lerotholi", "Lesaoana", "Lesenyeho", "Letete", "Letseka", "Letsie", "Letsoela", "Letuka", "Lipholo", "Liphoto", "Maama", "Mabaleha", "Mabathoana", "Mabote", "Macheli", "Mafa", "Mafatle", "Mafisa", "Mahao", "Mahase", "Mahloane", "Majara", "Majoro", "Makakole", "Makara", "Makhakhe", "Makhele", "Makhetha", "Makoa", "Makoae", "Malebo", "Malefane", "Maleke", "Maliehe", "Mapetla", "Masilo", "Masoabi", "Masupha", "Matela", "Matete", "Mathaba", "Matla", "Matlali", "Matlanyane", "Matsepe", "Matsoso", "Metsing", "Moabi", "Moahloli", "Moeketsi", "Moeletsi", "Moeti", "Mofoka", "Mofokeng", "Mofolo", "Mohale", "Mohapeloa", "Mohapi", "Mohasi", "Mohasoa", "Mohau", "Mohlomi", "Moiloa", "Mokete", "Mokhele", "Mokhesi", "Mokhethi", "Mokhothu", "Mokitimi", "Mokoena", "Mokoma", "Mokone", "Mokose", "Mokuoane", "Molapo", "Molefe", "Molefi", "Moleko", "Moleleki", "Molelekoa", "Moletsane", "Molisana", "Molise", "Moloi", "Molupe", "Monaheng", "Monare", "Monethi", "Montsi", "Monyake", "Monyane", "Moorosi", "Mopeli", "Moremoholo", "Morojele", "Mosala", "Moshabesha", "Moshoeshoe", "Mosito", "Mosoeunyane", "Mosothoane", "Mota", "Mothae", "Mothibe", "Mothibeli", "Motlomelo", "Motsamai", "Motseki", "Motsoane", "Moyo", "Mphana", "Mpholo", "Mphutlane", "Mpota", "Nhlapo", "Nkhabu", "Nkhahle", "Nkhasi", "Nkoe", "Nkuebe", "Nkune", "Ntaote", "Ntene", "Nteso", "Nthako", "Ntho", "Nthunya", "Ntoi", "Ntsane", "Ntsekhe", "Phafoli", "Phakisi", "Phamotse", "Pheko", "Pitso", "Posholi", "Pule", "Pulumo", "Putsoa", "Putsoane", "Qhobela", "Ramaisa", "Rampai", "Sebatane", "Seboka", "Seeiso", "Sefali", "Sehloho", "Seitlheko", "Sekese", "Sekhesa", "Sekhonyana", "Sekoati", "Sekonyela", "Selebalo", "Sello", "Sephelane", "Shale", "Taoana", "Tau", "Thabane", "Thamae", "Theko", "Thoahlane", "Thokoa", "Thulo", "Tlali", "Tlebere", "Tshabalala", "Tsiu", "Tsolo"]>>
+
+<<set setup.sierraLeoneanSlaveNames = ["Adelaide", "Aminata", "Baba", "Bernadette", "Bunturabie", "Christiana", "Claudetta", "Constance", "Delia", "Doris", "Elizabeth", "Ella", "Estella", "Eugenia", "Eunice", "Fatmata", "Favour", "Gladys", "Hafsatu", "Haja", "Hassanatou", "Hawanatu", "Isata", "Isha", "Jeillo", "Kadi", "Lucy", "Mabinty", "Maggie", "Marai", "Mariatu", "Mary", "Melrose", "Michaela", "Nenneh", "Ola", "Olivette", "Patricia", "Sama", "Shirley", "Sia", "Yaema", "Youkie", "Zainab"]>>
+<<set setup.sierraLeoneanSlaveSurnames = ["Abdulai", "Abu", "Allen", "Allieu", "Alpha", "Amara", "Ansumana", "Aruna", "Augustine", "Bah", "Bakarr", "Bangura", "Banya", "Barrie", "Bassie", "Bayoh", "Beckley", "Bendu", "Blake", "Bockarie", "Boima", "Brewah", "Brima", "Browne", "Bull", "Bundu", "Campbell", "Carew", "Caulker", "Charles", "Coker", "Cole", "Collier", "Conteh", "Coomber", "Daboh", "Daramy", "Dauda", "Davies", "Deen", "Dumbuya", "During", "Faulkner", "Foday", "Fofana", "Fofanah", "Fomba", "Foray", "Fornah", "Freeman", "French", "Ganda", "Gassama", "Gbla", "Gbondo", "Gborie", "George", "Harding", "Hassan", "Hughes", "Ibrahim", "Jabati", "Jabbie", "Jackson", "Jah", "Jalloh", "James", "Janneh", "Jarrett", "Jawara", "Jaward", "John", "Johnny", "Johnson", "Jonah", "Jones", "Juana", "Jusu", "Kabba", "Kabia", "Kaikai", "Kailie", "Kallay", "Kallon", "Kalokoh", "Kamanda", "Kamara", "Kandeh", "Kanneh", "Kanu", "Kargbo", "Karim", "Karimu", "Katta", "Kawa", "Kebbie", "King", "Köker", "Komba", "Konneh", "Konteh", "Koroma", "Kpaka", "Kuyateh", "Lahai", "Lamin", "Lansana", "Lebbie", "Leigh", "Leone", "Lewis", "Luseni", "Macarthy", "Macauley", "Macfoy", "Mansaray", "Marah", "Marrah", "Mason", "Massaquoi", "Mattia", "Mbayo", "Momoh", "Moore", "Moriba", "Moseray", "Musa", "Mustapha", "Nelson-Williams", "Ngegba", "Ngobeh", "Nicol", "Palmer", "Pearce", "Pessima", "Pratt", "Quee", "Rashid", "Renner", "Roberts", "Rogers", "Saccoh", "Saffa", "Saidu", "Sam", "Sama", "Samah", "Samai", "Samba", "Samuels", "Samura", "Sandy", "Sankoh", "Sannoh", "Savage", "Sawaneh", "Sawyerr", "Scott", "Seisay", "Sellu", "Senesie", "Sesay", "Sheriff", "Sierra", "Sillah", "Smart", "Smith", "Sow", "Sowa", "Squire", "Stevens", "Sulaiman", "Suma", "Swaray", "Swarray", "Sylvester", "Tamba", "Tarawali", "Tarawalie", "Tarawallie", "Tarawally", "Taylor", "Tejan", "Tengbeh", "Tholley", "Thomas", "Thompson", "Thoronka", "Timbo", "Tommy", "Tucker", "Turay", "Vandi", "Vandy", "Walker", "Williams", "Wilson", "Wright", "Wurie", "Yambasu"]>>
+
+<<set setup.swaziSlaveNames = ["Constance", "Gcinile", "Gina", "Hlengiwe", "Jane", "Joy", "Labotsibeni", "Lisa", "Lojiba", "Lomawa", "Lomvula", "Msindvose", "Nicole", "Nosibusiso", "Ntfombi", "Nukwase", "Patricia", "Phumlile", "Priscilla", "Robyn", "Sarah", "Senele", "Seneleleni", "Seneleni", "Sibonelo", "Sikhanyiso", "Sisile", "Sophie", "Taylor", "Temalangeni", "Thuli", "Tibati", "Tinah", "Tsandzile", "Zenani", "Zihlathi"]>>
+<<set setup.swaziSlaveSurnames = ["Adams", "Banda", "Bennett", "Bhembe", "Brown", "Bulunga", "Buthelezi", "de Sousa", "Dhladhla", "Dladla", "Dlamini", "Dludlu", "Du-Pont", "Dube", "Earnshaw", "Fakudze", "Gama", "Gamedze", "Gina", "Ginindza", "Groening", "Gule", "Gumbi", "Gumede", "Gumedze", "Gwebu", "Hadebe", "Henwood", "Hlanze", "Hlatshwako", "Hlatshwayo", "Hleta", "Hlope", "Hlophe", "Jele", "Johnson", "Khanyile", "Khoza", "Khumalo", "Kim", "Kunene", "Langa", "Langwenya", "Lee", "Lukhele", "Lushaba", "Mabaso", "Mabila", "Mabilisa", "Mabuza", "Madonsela", "Magagula", "Magongo", "Mahlalela", "Makama", "Makhanya", "Makhubu", "Malambe", "Malaza", "Malindzisa", "Malinga", "Mamba", "Manana", "Manyatsi", "Maphalala", "Maphanga", "Maphosa", "Masango", "Maseko", "Mashwama", "Masilela", "Masina", "Masinga", "Masuku", "Mathabela", "Mathonsi", "Mathunjwa", "Matse", "Matsebula", "Matsenjwa", "Mavimbela", "Mavuso", "Mayisela", "Mazibuko", "Maziya", "Mbatha", "Mbhamali", "Mbingo", "Mbuli", "Mdlovu", "Mdluli", "Mdziniso", "Methula", "Mhlanga", "Mhlongo", "Mkhabela", "Mkhaliphi", "Mkhatshwa", "Mkhombe", "Mkhonta", "Mkhwanazi", "Mkoko", "Mlambo", "Mlangeni", "Mlotsa", "Mncina", "Mndzebele", "Mngometulu", "Mngomezulu", "Mnisi", "Mordaunt", "Motsa", "Moyo", "Mpanza", "Msibi", "Mtetwa", "Mthembu", "Mthethwa", "Mthimkhulu", "Mthupha", "Mtsetfwa", "Mtshali", "Mvubu", "Myeni", "Mzileni", "Ncongwane", "Ncube", "Ndaba", "Ndlangamandla", "Ndlela", "Ndlovu", "Ndwandwe", "Ndzimandze", "Ndzinisa", "Ngcamphalala", "Ngcobo", "Ngozo", "Ngubane", "Ngubeni", "Ngwenya", "Nhlabatsi", "Nhleko", "Nhlengethwa", "Nkabinde", "Nkambule", "Nkonyane", "Nkosi", "Nkwanyana", "Nsibande", "Nsibandze", "Ntshalintshali", "Ntshangase", "Ntuli", "Nxumalo", "Nyawo", "Nyoni", "Nzima", "Patel", "Phiri", "Phungwayo", "Radebe", "Rudd", "Sacolo", "Shabalala", "Shabangu", "Shiba", "Shin", "Shongwe", "Sibanda", "Sibandze", "Sibanyoni", "Sibiya", "Sifundza", "Sigudla", "Sigwane", "Sihlongonyane", "Sikhondze", "Simelane", "Sithole", "Smith", "Stewart", "Sukati", "Taylor", "Tembe", "Tfwala", "Thomo", "Thring", "Thwala", "Tsabedze", "Tshabalala", "Twala", "Vilakati", "Vilakazi", "Vilane", "Xaba", "Zikalala", "Zitha", "Zondo", "Zulu", "Zwane"]>>
+
+<<set setup.angolanSlaveNames = ["Adriana", "Albina", "Ana", "Anália", "Ângela", "Antónia", "Astrida", "Birgite", "Carla", "Catarina", "Cristina", "Efigênia", "Elsa", "Felismina", "Felizarda", "Fineza", "Guilhermina", "Helga", "Isménia", "Italee", "Jurema", "Kimpa", "Lauriela", "Leila", "Lesliana", "Liliana", "Lourdes", "Luísa", "Luzia", "Madalena", "Marcelina", "Maria", "Mariana", "Micaela", "Michele", "Nacissela", "Nádia", "Nadir", "Neide", "Nelsa", "Nguendula", "Palmira", "Paula", "Rosa", "Sofia", "Stiviandra", "Teresa", "Whitney", "Zuleica"]>>
+<<set setup.angolanSlaveSurnames = ["Abreu", "Adriano", "Afonso", "Agostinho", "Aguiar", "Alberto", "Alexandre", "Alfredo", "Almeida", "Alves", "Amado", "Amaral", "Amaro", "Ambrosio", "Andrade", "Andre", "Antonio", "Antunes", "Araujo", "Armando", "Assis", "Augusto", "Avelino", "Azevedo", "Baltazar", "Baptista", "Barbosa", "Barros", "Bartolomeu", "Bastos", "Bento", "Bernardo", "Borges", "Brito", "Bumba", "Cabral", "Caetano", "Candido", "Capita", "Cardoso", "Carlos", "Carneiro", "Casimiro", "Celestino", "Chaves", "Clemente", "Coelho", "Conceição", "Conde", "Cordeiro", "Correia", "Cristovao", "Cunha", "da Costa", "da Cruz", "da Silva", "Dala", "de Almeida", "de Carvalho", "de Oliveira", "de Sousa", "Dias", "Dinis", "Diogo", "Domingos", "dos Santos", "Duarte", "Eduardo", "Ernesto", "Estevao", "Esteves", "Faria", "Faustino", "Feliciano", "Felix", "Fernandes", "Fernando", "Ferraz", "Ferreira", "Figueira", "Figueiredo", "Filipe", "Fonseca", "Fortes", "Fortunato", "Francisco", "Franco", "Freitas", "Gabriel", "Gama", "Gaspar", "Gil", "Gomes", "Gonalves", "Goncalves", "Gonga", "Gourgel", "Gouveia", "Guedes", "Guimaraes", "Henrique", "Henriques", "Inacio", "Ingles", "Jacinto", "Jesus", "Joao", "Joaquim", "Joo", "Jorge", "Julio", "Junior", "Justino", "Kiala", "Leite", "Lelo", "Lemos", "Lima", "Lopes", "Lourenço", "Luemba", "Luis", "Macedo", "Machado", "Magalhaes", "Manuel", "Mario", "Marques", "Martinho", "Martins", "Mateus", "Matias", "Matos", "Melo", "Mendes", "Menezes", "Miguel", "Miranda", "Moniz", "Monteiro", "Morais", "Moreira", "Mota", "Moura", "Nascimento", "Neto", "Neves", "Ngola", "Nicolau", "Nogueira", "Nunes", "Oliveira", "Pacheco", "Paim", "Paiva", "Panzo", "Pascoal", "Paulino", "Paulo", "Pedro", "Pereira", "Pimentel", "Pinheiro", "Pinto", "Pires", "Pitra", "Prata", "Quintas", "Rafael", "Reis", "Ricardo", "Rocha", "Rosa", "Salvador", "Sambo", "Sampaio", "Samuel", "Saraiva", "Sardinha", "Sebastiao", "Silvestre", "Simao", "Simoes", "Tati", "Tavares", "Teixeira", "Tomas", "Trindade", "Valente", "Van-Dúnem", "Varela", "Vasconcelos", "Vaz", "Vemba", "Ventura", "Victor", "Viegas", "Vunge", "Xavier", "Zau"]>>
+
+<<set setup.sahrawiSlaveNames = ["Abba", "Aicha", "Aminatou", "Aziza", "Chafia", "Chaiaa", "Ebhaiya", "Embarka", "Fala", "Fatma", "Fennina", "Khadija", "Luisa", "Mahfuda", "Mayra", "Minatou", "Muieina", "Nadhira", "Thawra"]>>
+<<set setup.sahrawiSlaveSurnames = ["Abdelaziz", "Admi", "Ahmed", "Ali", "Allal", "Ameidan", "Amidane", "Bachir", "Badi", "Bassiri", "Bayoun", "Beiba", "Biadillah", "Boukhreis", "Brahim", "Daddach", "Dahane", "Elmoutaoikil", "Fadel", "Ghali", "Haidar", "Hassan", "Kentaui", "Lakhrif", "Lamin", "Mojtar", "Mouloud", "Omar", "Oumar", "Rguibi", "Salem", "Sayed", "Tamek"]>>
+
+<<set setup.burkinabeSlaveNames = ["Adiza", "Aïssata", "Angèle", "Angelika", "Béatrice", "Bernadette", "Blandine", "Célestine", "Céline", "Chantal", "Elisabeth", "Élodie", "Fanta", "Françoise", "Hanatou", "Irène", "Joséphine", "Karidjatou", "Lætitia", "Mariam", "Mariama", "Marie", "Marlène", "Marthe", "Monique", "Pon-Karidjatou", "Régina", "Rosine", "Salimata", "Sarah", "Séverine", "Sobonfu", "Yao"]>>
+<<set setup.burkinabeSlaveSurnames = ["Amadou", "Badini", "Bado", "Badolo", "Bagaya", "Baguian", "Bako", "Balima", "Balma", "Bambara", "Bamogo", "Bance", "Bande", "Bara", "Barro", "Barry", "Bationo", "Bayala", "Bazie", "Belem", "Bikienga", "Birba", "Bolly", "Boly", "Bonkoungou", "Bouda", "Bougma", "Bourgou", "Cisse", "Combari", "Combary", "Compaore", "Congo", "Coulibaly", "Coulidiati", "Dabire", "Dabourgou", "Dabre", "Dah", "Damiba", "Dao", "Dayamba", "Dembele", "Derra", "Diabate", "Diallo", "Dianda", "Diande", "Diao", "Diarra", "Dicko", "Dipama", "Drabo", "Fofana", "Ganame", "Gansonre", "Gnoumou", "Gouba", "Guebre", "Guigma", "Guira", "Guiro", "Hama", "Hamadou", "Hamidou", "Hema", "Hien", "Ilboudo", "Ima", "Kabore", "Kabre", "Kafando", "Kagambega", "Kam", "Kambire", "Kambou", "Kanazoe", "Kando", "Kere", "Ki", "Kiema", "Kiemde", "Kiemtore", "Kiendrebeogo", "Kienou", "Kientega", "Kinda", "Kindo", "Koala", "Koanda", "Kologo", "Konate", "Kone", "Konfe", "Konkobo", "Koudougou", "Kouraogo", "Lankoande", "Lompo", "Maiga", "Mande", "Mano", "Meda", "Millogo", "Naba", "Nabaloum", "Nacanabo", "Nacoulma", "Nadinga", "Namoano", "Nana", "Nare", "Nebie", "Neya", "Niampa", "Nignan", "Nikiema", "Ouali", "Ouattara", "Oubda", "Ouedraogo", "Ouermi", "Ouoba", "Pafadnam", "Pale", "Palenfo", "Pare", "Poda", "Porgo", "Rabo", "Ramde", "Rouamba", "Sagnon", "Sakande", "Sama", "Sana", "Sandwidi", "Sanfo", "Sangare", "Sankara", "Sanogo", "Sanou", "Sare", "Savadogo", "Sawadogo", "Sebgo", "Segda", "Sere", "Sia", "Sidibe", "Simpore", "Sinare", "Soma", "Somda", "Some", "Sonde", "Sore", "Sorgho", "Soro", "Sory", "Soulama", "Sow", "Tall", "Tamboura", "Tankoano", "Tao", "Tapsoba", "Thiombiano", "Tiemtore", "Tiendrebeogo", "Tindano", "Toe", "Tonde", "Tou", "Tougma", "Toure", "Traore", "Yabre", "Yameogo", "Yarga", "Yaro", "Yattara", "Ye", "Yoda", "Yonli", "Yougbare", "Zabre", "Zagre", "Zalle", "Zango", "Zangre", "Zerbo", "Zida", "Zidouemba", "Zongo", "Zore", "Zorome", "Zougmore", "Zoundi", "Zoungrana"]>>
+
+<<set setup.capeVerdeanSlaveNames = ["Adysângela", "Almada", "Ana", "Bela", "Belinda", "Carla", "Carmen", "Celina", "Cesária", "Crispina", "Cristina", "Débora", "Dulce", "Eileen", "Elida", "Elyane", "Eva", "Fátima", "Francelina", "Gardénia", "Helena", "Hermínia", "Isaura", "Isménia", "Ivone", "Jade", "Janira", "Karin", "Lenira", "Letícia", "Lidiane", "Louisa", "Maria", "Mayra", "Nancy", "Orlanda", "Paula", "Rosângela", "Sónia", "Tatianne", "Vera", "Verona", "Wania", "Yara", "Yolanda"]>>
+<<set setup.capeVerdeanSlaveSurnames = ["Abreu", "Afonso", "Aguiar", "Alberto", "Alfama", "Almada", "Almeida", "Alves", "Amado", "Amarante", "Andrade", "Antonio", "Antunes", "Araujo", "Arteaga", "Azevedo", "Baessa", "Balde", "Baptista", "Barbosa", "Barreto", "Barros", "Batalha", "Batista", "Bento", "Bettencourt", "Borges", "Brito", "Cabo", "Cabral", "Camara", "Canuto", "Cardoso", "Carlos", "Carvalho", "Castro", "Centeio", "Cesar", "Chantre", "Coelho", "Correia", "Costa", "Coutinho", "Cruz", "Cunha", "da Cruz", "da Graca", "da Luz", "da Silva", "da Veiga", "David", "de Pina", "Delgado", "Dias", "do Rosario", "Domingos", "dos Reis", "dos Santos", "Duarte", "Dupret", "Estrela", "Evora", "Faria", "Fernandes", "Ferreira", "Ferro", "Fidalgo", "Figueiredo", "Firmino", "Fogo", "Fonseca", "Fontes", "Fortes", "Frederico", "Freire", "Freitas", "Furtado", "Garcia", "Gil", "Gomes", "Gonalves", "Goncalves", "Gonzalez", "Graça", "Helena", "Hernandez", "Horta", "Inocencio", "Jesus", "Joao", "Jorge", "Jose", "Junior", "Landim", "Leal", "Leite", "Levy", "Lima", "Livramento", "Lizardo", "Lobo", "Lopes", "Lubrano", "Luis", "Luz", "Machado", "Maio", "Manuel", "Maria", "Marques", "Martins", "Mascarenhas", "Matos", "Mauricio", "Medina", "Melicio", "Melo", "Mendes", "Mendonça", "Miranda", "Modesto", "Moniz", "Monteiro", "Montrond", "Morais", "Moreira", "Moreno", "Mosso", "Mota", "Moura", "Nascimento", "Nelson", "Neves", "Nobre", "Nogueira", "Nunes", "Oliveira", "Ortet", "Osorio", "Paiva", "Paulo", "Pedro", "Pereira", "Perez", "Pimenta", "Piña", "Pinheiro", "Pinto", "Pires", "Praia", "Querido", "Ramalho", "Ramos", "Rebelo", "Reis", "Rendall", "Ribeiro", "Robalo", "Rocha", "Rodrigues", "Rodriguez", "Rosa", "Rosario", "Sa", "Sanca", "Sancha", "Sanches", "Santana", "Santiago", "Santos", "Semedo", "Sena", "Sequeira", "Silva", "Silveira", "Silves", "Sita", "Smith", "Soares", "Soule", "Sousa", "Spencer", "Spinola", "Tavares", "Teixeira", "Timas", "Tomar", "Varela", "Vasconcelos", "Vaz", "Veiga", "Vera-Cruz", "Verde", "Verissimo", "Vicente", "Vieira", "Vora", "Wahnon", "Wilson", "Xavier"]>>
+
+<<set setup.motswanaSlaveNames = ["Amantle", "Amelia", "Athaliah", "Barbara", "Bessie", "Botho", "Caitlin", "Carolyn", "Christine", "Deandra", "Emma", "Galefele", "Gaositwe", "Gladys", "Goitseone", "Karabo", "Larona", "Lesego", "Lydia", "Mable", "Makabelo", "Malebogo", "Margaret", "Mmasekgoa", "Mosadi", "Mpule", "Naomi", "Pelonomi", "Ruth", "Samantha", "Sanji", "Sheila", "Shirley", "Siyanda", "Sumaiyah", "Tshotlego", "Unity"]>>
+<<set setup.motswanaSlaveSurnames = ["Bagwasi", "Bakwena", "Banda", "Bogatsu", "Boikanyo", "Botha", "Brown", "Busang", "Butale", "Daniel", "David", "Dikgang", "Dintwe", "Disang", "Dube", "Gaborone", "Isaacs", "John", "Johnson", "Joseph", "Kabelo", "Kaisara", "Kenosi", "Kepaletswe", "Kgaodi", "Kgari", "Kgomotso", "Kgosi", "Kgosiemang", "Kgosietsile", "Khama", "Khan", "Khumalo", "Khupe", "Koontse", "Kumar", "Leburu", "Lekoko", "Lesetedi", "Lesole", "Letsholo", "Letshwiti", "Mabote", "Mabutho", "Madisa", "Mafoko", "Magosi", "Maikano", "Malope", "Mangole", "Mannathoko", "Maphane", "Marope", "Marumo", "Maruping", "Masala", "Masalila", "Maseko", "Masilo", "Masole", "Masuku", "Maswabi", "Matenge", "Matlapeng", "Matlhare", "Matlho", "Mbaiwa", "Mbulawa", "Medupe", "Mfolwe", "Mmereki", "Mmolawa", "Mmopi", "Mmusi", "Moagi", "Moalosi", "Moatlhodi", "Moatshe", "Moatswi", "Modisane", "Modise", "Moeng", "Moeti", "Mogapi", "Mogomotsi", "Mogorosi", "Mogotsi", "Moilwa", "Moipolai", "Mokalake", "Mokgethi", "Mokgosi", "Mokgwathi", "Mokobi", "Mokone", "Mokotedi", "Mokwena", "Molapisi", "Molatlhegi", "Molebatsi", "Molefe", "Molefhe", "Molefi", "Molelekwa", "Moloi", "Molosiwa", "Monageng", "Monare", "Monthe", "Montshiwa", "Montsho", "Monyatsi", "Mooketsi", "Mookodi", "Morake", "Morapedi", "Moremi", "Moreri", "Moroka", "Morolong", "Mosarwa", "Mosarwe", "Moseki", "Moses", "Mosinyi", "Mosweu", "Mothibi", "Motlhabane", "Motlhagodi", "Motlogelwa", "Motsamai", "Motsumi", "Motswagole", "Moyo", "Mpofu", "Mudongo", "Ncube", "Ndaba", "Ndlovu", "Nfila", "Ngwako", "Ngwenya", "Nkomo", "Nkwe", "Ntshole", "Nyathi", "Nyoni", "Obuseng", "Oitsile", "Oteng", "Othusitse", "Otukile", "Patel", "Pelaelo", "Phale", "Pheko", "Pheto", "Phiri", "Phuthego", "Pilane", "Pitso", "Pule", "Samuel", "Sebele", "Sebina", "Sebonego", "Sechele", "Segokgo", "Seitshiro", "Sejoe", "Seleka", "Seleke", "Selelo", "Sello", "Seretse", "Serumola", "Sesinyi", "Setlhare", "Sibanda", "Simon", "Singh", "Sithole", "Smith", "Solomon", "Tafa", "Tau", "Tebogo", "Tembo", "Thapelo", "Thebe", "Thekiso", "Thipe", "Thomas", "Tiro", "Tladi", "Tlale", "Tlhalerwa", "Toteng", "Tshekiso", "Tsheko", "Tshukudu"]>>
+
+<<set setup.somaliSlaveNames = ["Amina", "Amira", "Asha", "Ayaan", "Ayan", "Dada", "Edna", "Elisa", "Fadumo", "Fartun", "Fathia", "Fatima", "Fatimo", "Guduuda", "Halima", "Hawa", "Hawo", "Hibo", "Idil", "Jawahir", "Khadija", "Manal", "Maryam", "Maryan", "Nadifa", "Nasra", "Qamar", "Saado", "Saba", "Safia", "Sahra", "Samia", "Samira", "Saynab", "Sofia", "Ubah", "Waris", "Warsan", "Yasmin", "Yasmine", "Zahra", "Zamzam", "Zara"]>>
+<<set setup.somaliSlaveSurnames = ["Aadam", "Aadan", "Abas", "Abdalla", "Abdallah", "Abdi", "Abdikadir", "Abdikarim", "Abdilaahi", "Abdilahi", "Abdillahi", "Abdinoor", "Abdinur", "Abdirahman", "Abdukadir", "Abdulahi", "Abdulkadir", "Abdullahi", "Abdulle", "Abdulrahman", "Abokor", "Abshir", "Abukar", "Abuukar", "Adam", "Adan", "Addow", "Aden", "Ahmad", "Ahmed", "Aidarus", "Aideed", "Alasow", "Ali", "Amiin", "Amin", "Arab", "Arahman", "Artan", "Askar", "Awad", "Awale", "Awed", "Awil", "Axmed", "Barre", "Bashiir", "Bashir", "Bile", "Billow", "Botan", "Cabdalla", "Cabdi", "Cabdilaahi", "Cabdiraxmaan", "Cabdulaahi", "Cadde", "Cade", "Cali", "Cige", "Ciise", "Cilmi", "Cismaan", "Cumar", "Daahir", "Dahir", "Daud", "Dirie", "Diriye", "Duale", "Dualeh", "Egal", "Egeh", "Elmi", "Essa", "Faarah", "Faarax", "Farah", "Gedi", "Geedi", "Gelle", "Gulaid", "Guled", "Gure", "Gutale", "Hagi", "Haji", "Hamud", "Hared", "Hasan", "Hashi", "Hassan", "Hersi", "Hirsi", "Husein", "Hussein", "Ibraahim", "Ibraahin", "Ibrahim", "Iimaan", "Iman", "Isak", "Ismael", "Ismail", "Issa", "Isse", "Jaamac", "Jama", "Jamac", "Jibril", "Jimale", "Kaariye", "Kahin", "Kasim", "Kassim", "Khadar", "Khalif", "Khaliif", "Macalin", "Madar", "Magan", "Mahad", "Mahamed", "Mahamud", "Mahdi", "Maxamed", "Maxamud", "Maxamuud", "Mayow", "Mire", "Mo'alim", "Moalim", "Moallim", "Mohamed", "Mohammed", "Mohamoud", "Mohamud", "Muhumed", "Mukhtar", "Mursal", "Musa", "Muse", "Musse", "Mustafa", "Muumin", "Muuse", "Noor", "Nor", "Nour", "Nur", "Nuur", "Olad", "Olow", "Omar", "Omer", "Osmaan", "Osman", "Qalinle", "Rage", "Roble", "Rooble", "Saciid", "Saed", "Saeed", "Sagal", "Sahal", "Said", "Salaad", "Salad", "Salah", "Saleebaan", "Samatar", "Samater", "Sharif", "Shariif", "Sheik", "Sheikh", "Shire", "Siad", "Siciid", "Singh", "Siyad", "Som", "Suleiman", "Tahlil", "Ugaas", "Warsame", "Weheliye", "Xaaji", "Xaashi", "Xasan", "Xassan", "Xuseen", "Yare", "Yasin", "Yassin", "Yousuf", "Yussuf", "Yusuf", "Yuusuf"]>>
+
+<<set setup.rwandanSlaveNames = ["Agathe", "Agnes", "Agnès", "Akaliza", "Alice", "Alphonsine", "Alvera", "Anne-Marie", "Anne", "Apollinarie", "Beatha", "Béatrice", "Christine", "Clare", "Claudette", "Daphrose", "Diane", "Donnatille", "Épiphanie", "Espérance", "Esther", "Fanfan", "Francine", "Gérardine", "Germaine", "Immaculée", "Inmaculle", "Jacqueline", "Jeanne", "Jeannette", "Johanna", "Joy", "Judith", "Julienne", "Laurence", "Louise", "Marcianne", "Maria", "Marie-Solange", "Marie", "Monique", "Odette", "Pamela", "Pauline", "Rose", "Rosemary", "Salome", "Scholastique", "Solange", "Sonia", "Stella", "Thérèse", "Valentine", "Victoire", "Yolande"]>>
+<<set setup.rwandanSlaveSurnames = ["Asiimwe", "Augustin", "Bahati", "Bayingana", "Bigirimana", "Bimenyimana", "Bizimana", "Bosco", "Bugingo", "Butera", "Byiringiro", "Byukusenge", "Celestin", "Cyubahiro", "Damascene", "Deo", "Dieudonné", "Dusabe", "Dusabimana", "Dusenge", "Dushimimana", "Emmanuel", "Eric", "Gakuba", "Gakwaya", "Gasana", "Gasore", "Gatera", "Gatete", "Habimana", "Habineza", "Habinshuti", "Habiyambere", "Habiyaremye", "Habumugisha", "Habyarimana", "Hagenimana", "Hakizimana", "Harelimana", "Harerimana", "Hategekimana", "Havugimana", "Hirwa", "Hitimana", "Ingabire", "Innocent", "Ishimwe", "Iyakaremye", "Iyamuremye", "Janvier", "Jean", "Kabanda", "Kabera", "Kagabo", "Kalisa", "Kamali", "Kamana", "Kamanzi", "Kanamugire", "Kaneza", "Karangwa", "Karekezi", "Karemera", "Karenzi", "Kayihura", "Kayiranga", "Kayitare", "Kayitesi", "Kayumba", "Kimenyi", "Kubwimana", "Kwizera", "Mahoro", "Maniraguha", "Manzi", "Marie", "Mazimpaka", "Mbabazi", "Mbarushimana", "Minani", "Mucyo", "Mugabe", "Mugabo", "Mugiraneza", "Mugisha", "Mugwaneza", "Muhawenimana", "Muhire", "Muhirwa", "Muhizi", "Muhoza", "Mukamana", "Mukeshimana", "Mukiza", "Munezero", "Munyaneza", "Mupenzi", "Murekatete", "Murenzi", "Musabyimana", "Musafiri", "Mushimiyimana", "Musonera", "Musoni", "Mutabaruka", "Mutabazi", "Mutangana", "Mutesi", "Mutoni", "Muvunyi", "Mwizerwa", "Nahimana", "Ndagijimana", "Ndahayo", "Ndahimana", "Ndahiro", "Ndayambaje", "Ndayisaba", "Ndayisenga", "Ndayishimiye", "Ndikumana", "Ndizeye", "Ngabo", "Ngabonziza", "Ngarambe", "Ngendahayo", "Ngendahimana", "Ngoga", "Nikuze", "Nishimwe", "Niyibizi", "Niyigena", "Niyitegeka", "Niyomugabo", "Niyonkuru", "Niyonsaba", "Niyonsenga", "Niyonshuti", "Niyonzima", "Nizeyimana", "Nkubito", "Nkurunziza", "Nkusi", "Nsabimana", "Nsanzimana", "Nsengimana", "Nsengiyumva", "Nshimiyimana", "Nshuti", "Ntaganda", "Ntakirutimana", "Ntambara", "Ntirenganya", "Ntwali", "Nyandwi", "Nyiraneza", "Nzabonimpa", "Nzayisenga", "Nzeyimana", "Olivier", "Rudasingwa", "Rugamba", "Rukundo", "Rurangwa", "Rutagengwa", "Rutayisire", "Ruzindana", "Shema", "Shyaka", "Sibomana", "Tuyisenge", "Tuyishime", "Tuyishimire", "Tuyizere", "Twagirayezu", "Twahirwa", "Twizeyimana", "Umubyeyi", "Umugwaneza", "Umuhire", "Umuhoza", "Umulisa", "Umurerwa", "Umutesi", "Umutoni", "Uwamahoro", "Uwamariya", "Uwanyirigira", "Uwase", "Uwayezu", "Uwera", "Uwimana", "Uwimbabazi", "Uwineza", "Uwingabire", "Uwiragiye", "Uwitonze", "Uwizeye", "Uwizeyimana", "Valens"]>>
+
+<<set setup.saoTomeanSlaveNames = ["Alda", "Amelia", "Amélia", "Célia", "Celma", "Conceição", "Elsa", "Francisca", "Fumilay", "Isabel", "Lecabela", "Leopoldina", "Margarida", "Maria", "Naide", "Nana", "Olinda", "Sara", "Sarah", "Sortelina"]>>
+<<set setup.saoTomeanSlaveSurnames = ["Abreu", "Afonso", "Agostinho", "Aguiar", "Alcantara", "Alcntara", "Alegre", "Almeida", "Alves", "Amado", "Amorim", "Andrade", "Anjos", "Antunes", "Aragao", "Arago", "Augusto", "Aurelio", "Baguide", "Baia", "Bandeira", "Barbosa", "Barreto", "Barros", "Barroso", "Batista", "Bernard", "Boa", "Bom", "Bonfim", "Borges", "Botelho", "Bragança", "Branco", "Bueno", "Cabral", "Capela", "Cardoso", "Carlos", "Carneiro", "Carvalho", "Castro", "Ceita", "Coelho", "Copinet", "Correia", "Costa", "Couto", "Cravid", "Cristo", "Cruz", "D'Alva", "da Costa", "da Graca", "da Mata", "da Silva", "Daio", "Das", "de Carvalho", "de Castro", "de Ceita", "de Sousa", "del Pino", "Dias", "Diogo", "do Espirito", "Domingos", "Doria", "dos Prazeres", "dos Ramos", "dos Santos", "Espirito", "Esteves", "Fahe", "Fernandes", "Ferreira", "Fonseca", "Fortes", "Franco", "Garcia", "Garrido", "Godinho", "Gomes", "Goncalves", "Gonzales", "Graa", "Graça", "Havenga", "Henriques", "Jesus", "Jose", "Laura", "Leal", "Leite", "Lima", "Loloum", "Lopes", "Loureiro", "Luis", "Major", "Managem", "Mandinga", "Manuel", "Maquengo", "Marques", "Martinho", "Martins", "Mata", "Matata", "Matias", "Matos", "May", "Mendes", "Menezes", "Metzger", "Moita", "Moniz", "Monteiro", "Monteverde", "Morais", "Mota", "Nascimento", "Nazare", "Neto", "Neves", "Novo", "Nunes", "Oliveira", "Paquete", "Paraiso", "Pedroso", "Pereira", "Pimentel", "Piña", "Pinheiro", "Pinto", "Pires", "Pontes", "Posser", "Prado", "Prazeres", "Principe", "Quaresma", "Quintas", "Ramos", "Raposo", "Ratinho", "Reis", "Ribeiro", "Rita", "Rodrigo", "Rodrigues", "Rolim", "Rosamonte", "Rosario", "Sacramento", "Salvaterra", "Sanoussi", "Santana", "Santiago", "Santo", "Santos", "Sarea", "Seca", "Semedo", "Sequeira", "Serodio", "Silva", "Silveira", "Smith", "Soares", "Solange", "Sole", "Sousa", "Stassen", "Tavares", "Tebus", "Teixeira", "Teles", "Timteo", "Tome", "Torres", "Trigueiros", "Trindade", "Trovoada", "Umbelina", "van Gijn", "Varela", "Vaz", "Veiga", "Vera", "Viana", "Vicente", "Viegas", "Vieira", "Vila", "Vilanova", "Vilhete", "Wagner", "Will"]>>
+
+<<set setup.benineseSlaveNames = ["Adelaide", "Angélique", "Béatrice", "Berthe-Evelyne", "Berthe", "Chantal", "Christine", "Colette", "Edwige", "Elise", "Evelyne", "Fabienne", "Felicia", "Félicite", "Gloria", "Grace", "Isabelle", "Laraïba", "Laure", "Lydia", "Margaret", "Mariam", "Marie-Elise", "Marie", "Noélie", "Odile", "Rafiatou", "Rosine", "Sonya"]>>
+<<set setup.benineseSlaveSurnames = ["Aballo", "Abdoulaye", "Aboudou", "Accrombessi", "Adam", "Adamou", "Adande", "Adjagba", "Adjaho", "Adjanohoun", "Adjibi", "Adjovi", "Adoukonou", "Affo", "Agbessi", "Agbo", "Agboton", "Agossa", "Agossou", "Aho", "Ahossi", "Ahouandjinou", "Ahouansou", "Ahounou", "Akadiri", "Akakpo", "Akanni", "Akplogan", "Akpo", "Akpovo", "Alao", "Alapini", "Ali", "Allagbe", "Amadou", "Aminou", "Amoussa", "Amoussou", "Anago", "Anagonou", "Anani", "Anato", "Aniambossou", "Aplogan", "Assani", "Assogba", "Atchade", "Atindehou", "Bada", "Badarou", "Badou", "Bakary", "Balogoun", "Bankole", "Behanzin", "Bello", "Biaou", "Bio", "Boco", "Boko", "Boni", "Bonou", "Bossou", "Boukari", "Bouraima", "Boussari", "Cakpo", "Capo-Chichi", "Chabi", "Chitou", "Codjia", "Codjo", "Codo", "Coffi", "D'Almeida", "da Silva", "Dagba", "Dalmeida", "Dandjinou", "Dansou", "Daouda", "de Souza", "Degbe", "Deguenon", "Djidonou", "Djossa", "Djossou", "do Rego", "Dohou", "Domingo", "Dossa", "Dossou", "Dossou-Yovo", "Dovonou", "Ezin", "Falade", "Fanou", "Fassinou", "Feliho", "Gandaho", "Gandonou", "Gbadamassi", "Gbaguidi", "Gbedo", "Gbenou", "Glele", "Gnacadja", "Gnansounou", "Gnonlonfoun", "Godonou", "Gogan", "Guedegbe", "Hazoume", "Hessou", "Hodonou", "Houenou", "Houessinon", "Houessou", "Houeto", "Houndjo", "Houngbedji", "Houngbo", "Houngue", "Hounkanrin", "Hounkpatin", "Hounkpe", "Hounkponou", "Hounmenou", "Hounnou", "Hounsa", "Hounsinou", "Hounsou", "Hountondji", "Houssou", "Ibrahim", "Idohou", "Idrissou", "Imorou", "Issa", "Kakpo", "Kiki", "Koffi", "Kora", "Kouassi", "Koukoui", "Kouton", "Kpadonou", "Kpanou", "Laleye", "Lassissi", "Lawani", "Legba", "Ligan", "Loko", "Lokonon", "Lokossou", "Mensah", "Migan", "Montcho", "Moussa", "Moustapha", "Nobime", "Odjo", "Oke", "Orou", "Osseni", "Oussou", "Padonou", "Paraiso", "Quenum", "Radji", "Raimi", "Sagbo", "Sagbohan", "Saizonou", "Saka", "Salami", "Salifou", "Sanni", "Senou", "Sessou", "Soglo", "Sossa", "Sossou", "Soule", "Soumanou", "Tchibozo", "Tidjani", "Togbe", "Tossa", "Tossou", "Vigan", "Vodounou", "Yessoufou", "Zannou", "Zinsou", "Zinzindohoue", "Zohoun", "Zossou", "Zounon"]>>
+
+<<set setup.centralAfricanSlaveNames = ["Adrienne", "Ambroisine", "Andrée", "Anne-Marie", "Anne", "Antoinette", "Béatrice", "Bertille", "Brigitte", "Catherine", "Chloe", "Denise", "Elisabeth", "Emilie", "Henriette", "Jeanne-Marie", "Jeanne", "Joëlle", "Joséphe", "Judith", "Léonie", "Maria-Joëlle", "Maria", "Marie-Joséphe", "Marie", "Mireille", "Solange", "Sylvie"]>>
+<<set setup.centralAfricanSlaveSurnames = ["Abakar", "Abdel", "Abdoulaye", "Adam", "Adoum", "Ahamat", "Ahmat", "Aime", "Akondja", "Alain", "Ali", "Anderson", "Anibie", "Anne", "Antoinette", "Awal", "Baba", "Baguida", "Baidou", "Banga", "Bango", "Bangui", "Barthelemy", "Bata", "Bekangba", "Benam", "Bero", "Biamba", "Bienvenu", "Binga", "Bokassa", "Bondo", "Bouba", "Brice", "Bruce", "Bruno", "Camara", "Chaou", "Charles", "Cisse", "Dacko", "Damango", "Darlan", "Diallo", "Dibert", "Dieudonné", "Dimanche", "Djeguede", "Doko", "Donald", "Dondon", "Doumbia", "Ekolo", "Elenga", "Evrard", "Fakhoury", "Fatimé", "Ferdinand", "Florentin", "Foulou", "Gabita", "Gamba", "Garba", "Gervais", "Gilbert", "Gombe", "Gonda", "Gondje", "Goniaga", "Grothe", "Guegbelet", "Guerendo", "Gueret", "Guiyama", "Guy", "Hamidou", "Hassan", "Issa", "Jackson", "Jean", "Joseph", "Junior", "Kaimba", "Kaine", "Kakesa", "Kamach", "Kanga", "Kassa", "Kassai", "Kaya", "Kazangba", "Keita", "Kette", "Khan", "Khatim", "Kodongo", "Koe", "Koffi", "Kombo", "Kone", "Kongbo", "Kongo", "Kopati", "Kossi", "Kossingou", "Koumba", "Magale", "Magba", "Magna", "Mahamat", "Maliki", "Malot", "Mamadou", "Mandaba", "Mandazou", "Mapouka", "Martin", "Matongo", "Mavoungou", "Mayan", "Mbami", "Mbombo", "Mbondji", "Mingala", "Mohamadou", "Moussa", "Nakombo", "Nana", "Ndaoulet", "Ndedi", "Ndiaye", "Ndongo", "Ndouba", "Nembi", "Ngaba", "Ngakola", "Ngana", "Ngaya", "Ngoma", "Ngomba", "Niang", "Nicaise", "Nimaga", "Nyame", "Oria", "Otto", "Ouilibona", "Oumarou", "Ousman", "Patrick", "Perriere", "Pierre", "Poumale", "Poumaye", "Pounaba", "Ramadan", "Rca", "Renaud", "Richard", "Rock", "Rodrigue", "Sakanga", "Sale", "Saleh", "Samba", "Sambo", "Sana", "Sanga", "Sanze", "Sekola", "Serge", "Serville", "Sibiro", "Singa", "Siolo", "Smith", "Sokambi", "Soupene", "Sow", "Sylvestre", "Tanga", "Tete", "Teteya", "Teya", "Thomas", "Vondo", "Wilson", "Yabanda", "Yabouri", "Yadjindji", "Yamale", "Yamba", "Yamissi", "Yamodo", "Yangana", "Yapende", "Yerima", "Zakari", "Zama", "Zanga"]>>
+
+<<set setup.gambianSlaveNames = ["Adama", "Amie", "Angela", "Augusta", "Belinda", "Bintanding", "Claudiana", "Dolly", "Elizabeth", "Fatim", "Fatima", "Fatou", "Fatoumata", "Georgiana", "Gina", "Hawa", "Isatou", "Jabou", "Janet", "Julia", "Louise", "Mariam", "Marie", "Nancy", "Neneh", "Nyimasata", "Saffie", "Sally", "Sarjo", "Saruba", "Susan", "Teneng", "Victoria", "Zeinab"]>>
+<<set setup.gambianSlaveSurnames = ["Adeyemi", "Baba", "Badjan", "Badjie", "Bah", "Bahoum", "Bajo", "Balajo", "Baldeh", "Bangura", "Barry", "Bass", "Bayo", "Bensouda", "Beyai", "Bittaye", "Bobb", "Bojang", "Boy", "Boye", "Buba", "Camara", "Ceesay", "Cham", "Chorr", "Coker", "Colley", "Conteh", "Corr", "Correa", "Daffeh", "Dampha", "Danso", "Darbo", "Darboe", "Dawda", "Deen", "Dem", "Demba", "Diallo", "Diatta", "Dibba", "Diop", "Drammeh", "Dukureh", "Dumbuya", "Faal", "Fadera", "Fatajo", "Fatty", "Faye", "Fofana", "Foon", "Fye", "Gai", "Gassama", "Gaye", "Gibba", "Gitteh", "Hydara", "Jabang", "Jabbi", "Jabbie", "Jadama", "Jagne", "Jah", "Jahateh", "Jaiteh", "Jalloh", "Jallow", "Jammeh", "Janko", "Janneh", "Jarjou", "Jarju", "Jarjue", "Jarjusey", "Jarra", "Jasseh", "Jassey", "Jatta", "Jaw", "Jawara", "Jawla", "Jawneh", "Jawo", "Jaye", "Jeng", "Jobarteh", "Jobe", "Joof", "Jow", "Juwara", "Kabba", "Kah", "Kamara", "Kambi", "Kandeh", "Kanteh", "Kanu", "Kanuteh", "Kanyi", "Kargbo", "Kassama", "Kebbeh", "Keita", "Khan", "Kijera", "Kinteh", "Kolley", "Konateh", "Konteh", "Koroma", "Krubally", "Kujabi", "Kuyateh", "Lamin", "Loum", "Lowe", "Makalo", "Manga", "Manjang", "Manka", "Manneh", "Mansaray", "Marenah", "Marong", "Mballow", "Mbaye", "Mbenga", "Mboge", "Mboob", "Mbowe", "Mbye", "Mendy", "Minteh", "Musa", "Ndiaye", "Ndong", "Ndow", "Ndure", "Ngum", "Nicol", "Njai", "Njie", "Nyang", "Nyass", "Nyassi", "Pa", "Sabally", "Sagnia", "Saho", "Saidy", "Saidykhan", "Saine", "Sallah", "Sama", "Samateh", "Samba", "Sambou", "Sankareh", "Sanneh", "Sanyang", "Sarr", "Sawaneh", "Sawo", "Secka", "Senghore", "Sesay", "Sey", "Sheriff", "Sidibeh", "Sillah", "Sima", "Singhateh", "Sinyan", "Sisawo", "Sisay", "Sise", "Sissoho", "Sohna", "Sonko", "Sosseh", "Sow", "Sowe", "Sumareh", "Suso", "Susso", "Suwareh", "Sylva", "Taal", "Tamba", "Tambajang", "Touray", "Trawally", "Tunkara", "Turay", "Wadda", "Waggeh", "Wally"]>>
+
+<<set setup.senegaleseSlaveNames = ["Adama", "Adja", "Aicha", "Aida", "Aïda", "Aïssa", "Aissatou", "Aïssatou", "Amina", "Aminata", "Amy", "Angèle", "Annette", "Arame", "Astou", "Awa", "Aya", "Bineta", "Binta", "Bintou", "Caroline", "Catherine", "Cécile", "Constance", "Coumba", "Diana", "Fama", "Fatim", "Fatima", "Fatou", "Fatoumata", "Françoise", "Germaine", "Gisèle", "Gnima", "Hortense", "Isabelle", "Jacqueline", "Jeanne", "Julia", "Julie", "Kéné", "Khadi", "Khadidiatou", "Khadija", "Khady", "Khathia", "Khoudia", "Kiné", "Korka", "Lala", "Lalya", "Maimouna", "Maïmouna", "Mame-Marie", "Mame", "Mamy", "Mareme", "Mariama", "Marie-Sadio", "Marie", "Marieme", "Marième", "Mariètou", "Mata", "Mbarika", "Mbissine", "Myriam", "N'Deye", "Nafi", "Nafissatou", "Ndew", "Ndeye", "Ndèye", "Ndialou", "Ndoye", "Oumou", "Oumoul", "Penda", "Rama", "Ramata", "Ramatoulaye", "Sadio", "Safi", "Safiatou", "Seni", "Sokhna", "Thérèse", "Viviane", "Zeïna"]>>
+<<set setup.senegaleseSlaveSurnames = ["Aidara", "Amar", "Anne", "Aw", "Ba", "Babou", "Badiane", "Badji", "Bah", "Bakhoum", "Balde", "Barro", "Barry", "Basse", "Bassene", "Bathily", "Bayo", "Beye", "Biaye", "Biteye", "Bodian", "Boiro", "Bop", "Bousso", "Boye", "Camara", "Ciss", "Cisse", "Cissokho", "Coly", "Correa", "Coulibaly", "Dabo", "Daffe", "Danfa", "Danfakha", "Deh", "Demba", "Dembele", "Deme", "Dia", "Diaby", "Diack", "Diagne", "Diakhate", "Diakhite", "Diakite", "Diallo", "Diamanka", "Diame", "Diane", "Diankha", "Diao", "Diarra", "Diasse", "Diassy", "Diatta", "Diaw", "Diawara", "Diba", "Diedhiou", "Dieme", "Diene", "Dieng", "Dieye", "Diome", "Dione", "Diongue", "Diop", "Diouf", "Dioum", "Djiba", "Djigo", "Djitte", "Doucoure", "Drame", "Fall", "Faty", "Faye", "Fofana", "Gadiaga", "Gano", "Gassama", "Gaye", "Gning", "Gningue", "Gomis", "Goudiaby", "Gueye", "Guisse", "Hane", "Hanne", "Ka", "Kama", "Kamara", "Kande", "Kandji", "Kane", "Kanoute", "Kante", "Kasse", "Kebe", "Keita", "Khoule", "Khouma", "Konate", "Kone", "Konte", "Lam", "Leye", "Lo", "Loum", "Ly", "Mandiang", "Mane", "Manga", "Mangane", "Mansaly", "Mar", "Marone", "Mbacke", "Mballo", "Mbaye", "Mbengue", "Mbodj", "Mbodji", "Mboup", "Mbow", "Mendy", "Ndao", "Ndaw", "Ndiaye", "Ndione", "Ndir", "Ndong", "Ndongo", "Ndour", "Ndoye", "Ngom", "Nguer", "Niane", "Niang", "Niass", "Niasse", "Pene", "Pouye", "Preira", "Sabaly", "Sadio", "Sagna", "Sagne", "Sakho", "Sall", "Samb", "Samba", "Sambe", "Sambou", "Sane", "Sarr", "Seck", "Segnane", "Sene", "Senghor", "Seydi", "Seye", "Sidibe", "Sock", "Sonko", "Souare", "Soumare", "Sow", "Sy", "Syll", "Sylla", "Tall", "Tamba", "Tendeng", "Thiam", "Thiandoum", "Thiao", "Thiare", "Thiaw", "Thiombane", "Thiongane", "Thior", "Thioub", "Thioune", "Thioye", "Tine", "Top", "Tounkara", "Toure", "Traore", "Vilane", "Wade", "Wagne", "Wane", "Wilane", "Willane", "Yade"]>>
+
+<<set setup.togoleseSlaveNames = ["Abra", "Adjaratou", "Adzo", "Alessia", "Alifatou", "Ama", "Améyo", "Amivi", "Anne-Laure", "Anne", "Bamab", "Christiane", "Cina", "Claire", "Direma", "Florence", "Germaine", "Isabelle", "Jeannette", "Laure", "Mathilde-Amivi", "Mathilde", "Patricia", "Prenam", "Pyabelo", "Sandrine"]>>
+<<set setup.togoleseSlaveSurnames = ["Abalo", "Abbey", "Abdel", "Abotchi", "Abotsi", "Adam", "Adamou", "Adams", "Adjivon", "Adom", "Adote", "Afanou", "Affo", "Agba", "Agbessi", "Agbo", "Agbobli", "Agbodjan", "Agboh", "Agbokou", "Agossou", "Ahadji", "Ahmed", "Aholou", "Ajavon", "Akakpo", "Akouete", "Akpo", "Akue", "Alassani", "Ali", "Amadou", "Amah", "Amavi", "Amega", "Amegah", "Amegan", "Ameganvi", "Ametepe", "Amevor", "Amoussou", "Amouzou", "Anani", "Anthony", "Apedo", "Aquereburu", "Arouna", "Assignon", "Assih", "Assogba", "Atayi", "Atsou", "Atsu", "Attiogbe", "Attipoe", "Attisso", "Awesso", "Ayeva", "Ayite", "Ayivi", "Baba", "Barr", "Barry", "Bello", "Benson", "Bodjona", "Bonfoh", "Boukari", "Bouraima", "Bruce", "Camara", "Coulibaly", "D'Almeida", "da Silveira", "Dadzie", "Dansou", "David", "de Souza", "Degbe", "Degboe", "Diallo", "Djagba", "Djobo", "Dogbe", "Dosseh", "Dossou", "Dotse", "Douti", "Dovi", "Edoh", "Edorh", "Eklou", "Eklu", "Ekoue", "Ekue", "Emmanuel", "Esso", "Etse", "Fofana", "Foli", "Folly", "Foster", "Freitas", "Gaba", "Gbati", "George", "Gnassingbe", "Godwin", "Homawoo", "Ibrahim", "Idrissou", "Issa", "Issifou", "John", "Johnson", "Jones", "Joseph", "Kalu", "Kangni", "Kao", "Kassegne", "Klutse", "Kodjo", "Koffi", "Kokou", "Koku", "Kola", "Kolani", "Kombate", "Komi", "Komla", "Komlan", "Kondo", "Kone", "Kossi", "Kouassi", "Kouevi", "Kpade", "Kpadenou", "Kpatcha", "Kpodar", "Kponton", "Kueviakoe", "Lamboni", "Lare", "Lassey", "Lawani", "Lawson", "Lemou", "Locoh", "Logossou", "Lome", "Mark", "Martins", "Mensah", "Messan", "Mohamed", "Morgan", "Moussa", "Mouzou", "Nabine", "Olympio", "Ong", "Ouedraogo", "Ouro", "Palanga", "Prince", "Robert", "Rodrigue", "Salami", "Sam", "Sama", "Sani", "Sassou", "Sedjro", "Sessou", "Smith", "Sodji", "Sokpoh", "Sossou", "Tagba", "Tchalim", "Tchalla", "Tchamdja", "Tchedre", "Teko", "Tengue", "Tete", "Togbe", "Tomety", "Tossou", "Toure", "Traore", "Tsogbe", "William", "Williams", "Wilson", "Yao", "Yaya", "Yovo"]>>
+
+<<set setup.congoleseSlaveNames = ["Adama", "Addo", "Adélaïde", "Adèle", "Aimée", "Aminata", "Angèle", "Angélique", "Bellore", "Brigitte", "Cecilia", "Céline", "Claudine", "Edith", "Émilienne", "Flore", "Florence", "Francine", "Françoise", "Ghislaine", "Jeanette", "Jeanne", "Jennifer", "Judith", "Julienne", "Lasnet", "Leontine", "Léontine", "Lorène", "Lucie", "Mambou", "Marie-Leontine", "Marie", "Mélanie", "Michelle", "Monika", "Natacha", "Pamela", "Tatiana"]>>
+<<set setup.congoleseSlaveSurnames = ["Akouala", "Alain", "Babingui", "Badila", "Bakala", "Balou", "Bantsimba", "Banzouzi", "Batchi", "Bayonne", "Bemba", "Bidounga", "Bienvenu", "Bikindou", "Bilongo", "Bitsindou", "Biyoudi", "Bongo", "Bouanga", "Bouesso", "Bouiti", "Bouity", "Bouka", "Boukaka", "Boumba", "Bounda", "Boungou", "Congo", "Diafouka", "Diallo", "Dibala", "Dieudonné", "Dinga", "Diop", "Doucoure", "Elenga", "Foutou", "Ganga", "Gatse", "Goma", "Ibara", "Ibata", "Ikonga", "Ilunga", "Itoua", "Jean", "Junior", "Kaba", "Kabongo", "Kalala", "Kalonji", "Kasongo", "Kassa", "Kaya", "Kengue", "Kibamba", "Kibangou", "Kimbembe", "Kinouani", "Kitoko", "Kiyindou", "Kodia", "Kokolo", "Kombo", "Kongo", "Koubaka", "Koubemba", "Kouka", "Kouma", "Koumba", "Kounkou", "Landry", "Likibi", "Locko", "Loemba", "Loembe", "Loembet", "Loko", "Loubaki", "Loubassou", "Louzolo", "Mabanza", "Mabiala", "Mabika", "Mabonzo", "Madzou", "Mafouta", "Mahoukou", "Mahoungou", "Makanga", "Makaya", "Makita", "Makosso", "Makouangou", "Makoumbou", "Malanda", "Malela", "Malonga", "Mampassi", "Mampouya", "Mananga", "Mankou", "Massala", "Massamba", "Massanga", "Massengo", "Matoko", "Matondo", "Mavoungou", "Mayala", "Mbama", "Mbani", "Mbemba", "Mberi", "Mboko", "Mbongo", "Mboumba", "Mboungou", "Mendes", "Mfoutou", "Milandou", "Milongo", "Missamou", "Mizere", "Mokoko", "Mombo", "Mongo", "Mouanda", "Mouandza", "Mouanga", "Mouele", "Moukala", "Moukoko", "Mounzeo", "Moussounda", "Moutou", "Mouyabi", "Mpandzou", "Mpassi", "Mpika", "Mulumba", "Nanitelamio", "Ndala", "Ndinga", "Ndongo", "Ndzaba", "Ngakosso", "Nganga", "Ngassaki", "Ngatse", "Ngoma", "Ngouaka", "Ngouala", "Ngoulou", "Ngouma", "Ngoy", "Ngoyi", "Nguimbi", "Nkaya", "Nkodia", "Nkouka", "Nkounkou", "Nombo", "Nsonde", "Nzaba", "Nzambi", "Nzaou", "Nzingoula", "Oba", "Obambi", "Okemba", "Oko", "Okoko", "Okombi", "Ondongo", "Ossebi", "Paka", "Pambou", "Pandi", "Pandzou", "Pangou", "Poaty", "Rodrigue", "Samba", "Sita", "Sitou", "Sylla", "Tati", "Taty", "Tchibinda", "Tchicaya", "Tchikaya", "Tchissambo", "Tchissambou", "Tchitembo", "Traore", "Tsiba", "Tsoumou", "Yengo", "Yoka"]>>
+
+<<set setup.eritreanSlaveNames = ["Amna", "Askalu", "Aster", "Elsa", "Fozia", "Furtuna", "Hanna", "Hannah", "Ileni", "Marina", "Meraf", "Miriam", "Mossana", "Nazret", "Nebiat", "Rehaset", "Ruth", "Saba", "Selma", "Simret", "Wehazit", "Wogahta", "Worku", "Zeudi"]>>
+<<set setup.eritreanSlaveSurnames = ["Abdu", "Abraha", "Abraham", "Adem", "Adhanom", "Afewerki", "Ahmad", "Ahmed", "Alem", "Ali", "Aman", "Amare", "Ande", "Andebrhan", "Andemariam", "Andom", "Araia", "Araya", "As", "Asefaw", "Asfaha", "Asmara", "Asmelash", "Asrat", "Bahta", "Basha", "Belay", "Beraki", "Bereket", "Berhane", "Berhe", "Beyene", "Brhane", "Daniel", "Dawit", "Demoz", "Desta", "Estifanos", "Eyassu", "Eyob", "Fekadu", "Fernandez", "Fessehaye", "Fessehazion", "Fesshaye", "Fisseha", "Fitwi", "Franco", "Gebre", "Gebreab", "Gebrehiwet", "Gebrekidan", "Gebremariam", "Gebremedhin", "Gebremeskel", "Gebremicael", "Gebremichael", "Gebrewold", "Gebreyohannes", "Ghebre", "Ghebrehiwet", "Ghebrekidan", "Ghebremariam", "Ghebremedhin", "Ghebremeskel", "Ghebremicael", "Ghebremichael", "Ghebreyohannes", "Ghebru", "Gherezghiher", "Ghide", "Ghirmay", "Gmichael", "Goitom", "Habtai", "Habte", "Habtemariam", "Habtemichael", "Hadera", "Hadgu", "Hagos", "Hailai", "Haile", "Hailemariam", "Hailemichael", "Hailom", "Hassen", "Ibrahim", "Idris", "Isaac", "John", "Joseph", "Kahsai", "Kahsay", "Kebede", "Keleta", "Kesete", "Khan", "Kibreab", "Kidane", "Kiflay", "Kifle", "Kiflemariam", "Kiros", "Kumar", "Lee", "Li", "Mahmud", "Mebrahtu", "Medhanie", "Mehari", "Mehreteab", "Mekonnen", "Melake", "Melles", "Mengistu", "Mesfin", "Michael", "Mohammed", "Muller", "Munir", "Mussie", "Naib", "Naizghi", "Negash", "Negassi", "Negusse", "Nemariam", "Ogbazghi", "Ogbe", "Osman", "Palla", "Perez", "Russom", "Saleh", "Samson", "Sebhatu", "Semere", "Seyoum", "Sibhatu", "Simon", "Sium", "Smith", "Solomon", "Sultan", "Tadesse", "Taha", "Tareke", "Teame", "Tecle", "Tecleab", "Teclu", "Tedla", "Tekeste", "Tekie", "Teklay", "Tekle", "Tekleab", "Teklehaimanot", "Teklu", "Tesfa", "Tesfagaber", "Tesfai", "Tesfamariam", "Tesfamicael", "Tesfamichael", "Tesfatsion", "Tesfay", "Tesfazghi", "Tewelde", "Teweldebrhan", "Teweldemedhin", "Tewolde", "Tsegai", "Tsegay", "Tsehaie", "Tsehaye", "Tsighe", "Welday", "Weldemichael", "Weldu", "Woldeab", "Woldemichael", "Woldeselassie", "Woldu", "Yacob", "Yebio", "Yemane", "Yohannes", "Yonas", "Yoseph", "Yosief", "Zecarias", "Zekarias", "Zemichael", "Zerai", "Zeratsion", "Zere", "Zeremariam", "Zeru"]>>
+
+<<set setup.guineanSlaveNames = ["Aïcha", "Aissata", "Aissatou", "Aïssatou", "Aminata", "Dede", "Djene", "Fatmata", "Fatoumata", "Hadja", "Jeanne", "Kesso", "Koumanthio", "Lofo", "M'Balia", "M'mah", "Mahawa", "Makalé", "Makoura", "Malado", "Mamadama", "Mamadie", "Mariama", "Oumou", "Sirah", "Siré", "Sylla", "Zeinab"]>>
+<<set setup.guineanSlaveSurnames = ["Abdoulaye", "Abou", "Alpha", "Amadou", "Aribot", "Aziz", "Ba", "Baba", "Bah", "Bakayoko", "Balamou", "Bald", "Balde", "Bamba", "Bangoura", "Barry", "Bayo", "Beavogui", "Berete", "Boiro", "Bokoum", "Bongono", "Camara", "Cherif", "Ciss", "Cisse", "Cissoko", "Conakry", "Cond", "Conde", "Conte", "Coulibaly", "Coumbassa", "Curtis", "Dabo", "Daffe", "Damba", "Damey", "Dansoko", "Delamou", "Dia", "Diabate", "Diaby", "Diakhaby", "Diakit", "Diakite", "Diallo", "Diane", "Diaoune", "Diarra", "Diawara", "Dieng", "Diop", "Dioubate", "Donzo", "Dopavogui", "Dore", "Doukoure", "Doumbia", "Doumbouya", "Douno", "Drame", "Dramou", "Faber", "Fadiga", "Fall", "Faye", "Feindouno", "Fofana", "Gbanamou", "Gomez", "Goumou", "Guemou", "Gueye", "Guilao", "Guilavogui", "Guinea", "Guinee", "Guisse", "Haba", "Haidara", "Hann", "Hassan", "Ibrahima", "Issa", "Jalloh", "Jallow", "Johnson", "Kaba", "Kadouno", "Kake", "Kalil", "Kalivogui", "Kallo", "Kaloga", "Kamano", "Kamara", "Kande", "Kane", "Kann", "Kante", "Kebe", "Keita", "Koita", "Koivogui", "Kolie", "Koly", "Komara", "Kon", "Konat", "Konate", "Kone", "Koroma", "Kouadio", "Kouame", "Koulemou", "Koulibaly", "Koumbassa", "Koundouno", "Kourouma", "Kouyate", "Kpoghomou", "Lama", "Lamah", "Leno", "Loua", "Ly", "Magassouba", "Malkoun", "Mamadou", "Mamy", "Mane", "Manet", "Mansare", "Maomou", "Mara", "Millimono", "Millimouno", "Mohamed", "Monemou", "Moussa", "N'Diaye", "Nabe", "Ndiaye", "Niang", "Nimaga", "Onivogui", "Ouendeno", "Oulare", "Oumar", "Oury", "Sacko", "Sagno", "Sakho", "Sako", "Sall", "Samoura", "Sampil", "Sandouno", "Sangare", "Sano", "Sanoh", "Sarl", "Savane", "Seck", "Sesay", "Sidibe", "Sidime", "Singh", "Sompare", "Soropogui", "Souar", "Souare", "Soumah", "Soumahoro", "Soumaoro", "Sow", "Sy", "Sylla", "Tall", "Thea", "Thiam", "Thierno", "Tolno", "Tonguino", "Tounkara", "Toupou", "Toure", "Traor", "Traore", "Turay", "Wague", "Wann", "Yansane", "Yaradouno", "Yattara", "Yombouno", "Youla", "Zogbelemou", "Zoumanigui"]>>
+
+<<set setup.malawianSlaveNames = ["Agnes", "Angela", "Anita", "Annie", "Callista", "Catherine", "Cecelia", "Cecilia", "Chanju", "Chrissie", "Connie", "Emesia", "Emily", "Emmie", "Ethel", "Etta", "Eunice", "Flora", "Flossie", "Gertrude", "Grace", "Jane", "Jean", "Joyce", "Lilian", "Lucia", "Mary", "Mwayi", "Nancy", "Patricia", "Prisca", "Rose", "Samantha", "Seodi", "Tabitha", "Taonere", "Tapiwa", "Tereza", "Tujilane", "Vera", "Walije"]>>
+<<set setup.malawianSlaveSurnames = ["Banda", "Bandawe", "Bonongwe", "Botha", "Butao", "Bwanali", "Chabwera", "Chanza", "Chauluka", "Chavula", "Chawinga", "Chibwana", "Chihana", "Chikoko", "Chikopa", "Chikuse", "Chilemba", "Chimaliro", "Chimenya", "Chimombo", "Chimwala", "Chimwaza", "Chinyama", "Chipeta", "Chipofya", "Chirambo", "Chirombo", "Chirwa", "Chisale", "Chisi", "Chitsulo", "Chiumia", "Chiwaula", "Chiwaya", "Chunga", "Gama", "Gausi", "Gomani", "Gondwe", "Hara", "Harawa", "Ibrahim", "Issa", "Jambo", "Jere", "Juma", "Jumbe", "Jussab", "Kachala", "Kachale", "Kachingwe", "Kaliati", "Kalima", "Kalonga", "Kalua", "Kaluwa", "Kamanga", "Kambalame", "Kamoto", "Kamwana", "Kamwendo", "Kandulu", "Kanyenda", "Kaonga", "Kapalamula", "Kapito", "Karim", "Katunga", "Kaunda", "Kawonga", "Kayange", "Kayira", "Kayuni", "Kazembe", "Khan", "Khonje", "Kondowe", "Kumwenda", "Kunje", "Lipenga", "Longwe", "Luhanga", "Lungu", "Maganga", "Magombo", "Mahomed", "Majawa", "Makawa", "Makina", "Makwinja", "Malata", "Malenga", "Maliro", "Malunga", "Maluwa", "Manda", "Mandala", "Mangani", "Mapemba", "Masamba", "Maseko", "Mataka", "Mataya", "Matemba", "Matewere", "Matola", "Maulidi", "Mbale", "Mbendera", "Mbewe", "Mbwana", "Mdala", "Mfune", "Mhango", "Mhone", "Milanzi", "Misomali", "Mkandawire", "Mlenga", "Moyo", "Mphande", "Mponda", "Msiska", "Msosa", "Msowoya", "Msuku", "Msukwa", "Mtambo", "Mtawali", "Mtenje", "Mtonga", "Mughogho", "Mulenga", "Mumba", "Munthali", "Mussa", "Mvula", "Mwafulirwa", "Mwale", "Mwalwanda", "Mwandira", "Mwangonde", "Mwanza", "Mwase", "Mwenda", "Mwenelupembe", "Mwenifumbo", "Mzembe", "Mzumara", "Ndalama", "Ndau", "Ndhlovu", "Ndovi", "Ng'ambi", "Ng'oma", "Ngalande", "Ngoma", "Ngosi", "Ngulube", "Ngwira", "Nhlane", "Nkhata", "Nkhoma", "Nkhonjera", "Nkhwazi", "Nkosi", "Nyangulu", "Nyasulu", "Nyirenda", "Nyirongo", "Nyondo", "Nyoni", "Omar", "Osman", "Patel", "Phiri", "Rashid", "Saidi", "Saka", "Sakala", "Sambo", "Sattar", "Selemani", "Shaba", "Shawa", "Sibale", "Sibande", "Sichinga", "Sikwese", "Simwaka", "Singini", "Soko", "Tambala", "Tembo", "Thindwa", "Thole", "Zgambo", "Ziba", "Zimba", "Zulu"]>>
+
+<<set setup.liberianSlaveNames = ["Angie", "Ann", "Antoinette", "Cheryl", "Comfort", "Cyvette", "Dorothy", "Ellen", "Fatima", "Gladys", "Gloria", "Grace-Ann", "Grace", "Hannah", "Hawa", "Izetta", "Jewel", "Kia", "Kirat", "Kou", "Leymah", "Margaret", "Mariam", "Martha", "Mary", "Matee", "Melvina", "Michaela", "Olubanke", "Ophelia", "Phobay", "Raasin", "Ruth", "Sie-A-Nyene", "Suah"]>>
+<<set setup.liberianSlaveSurnames = ["Akoi", "Allen", "Allison", "Anderson", "Augustine", "Bah", "Ballah", "Bangura", "Barclay", "Barry", "Baysah", "Bedell", "Benson", "Bestman", "Beyan", "Bility", "Blamo", "Boakai", "Borbor", "Bright", "Brooks", "Bropleh", "Brown", "Browne", "Bryant", "Carter", "Cassell", "Chea", "Clarke", "Cole", "Coleman", "Collins", "Conteh", "Cooper", "Cummings", "Dahn", "Daniels", "David", "Davies", "Davis", "Dennis", "Diallo", "Diggs", "Dixon", "Doe", "Dolo", "Donzo", "Dorbor", "Dorley", "Dukuly", "Dunbar", "Duncan", "Dweh", "Eid", "Fahnbulleh", "Fallah", "Fayiah", "Flomo", "Fofana", "Freeman", "Gaye", "Gayflor", "George", "Gibson", "Goll", "Gono", "Gray", "Greaves", "Greene", "Harmon", "Harris", "Hill", "Hinneh", "Howard", "Howe", "Jabateh", "Jackson", "Jacobs", "Jah", "Jallah", "Jalloh", "James", "Joe", "Johnson", "Jones", "Jusu", "Kaba", "Kamara", "Kandakai", "Kanneh", "Keita", "Kemokai", "Kennedy", "Kenneh", "Kesselly", "Kiazolu", "King", "Koffa", "Kollie", "Konneh", "Kpadeh", "Kpoto", "Kromah", "Kumar", "Lewis", "Lloyd", "Logan", "Marshall", "Martin", "Mason", "Massaley", "Massaquoi", "Mensah", "Miller", "Mitchell", "Momo", "Momoh", "Monger", "Moore", "Morgan", "Morris", "Mulbah", "Myers", "Nagbe", "Nah", "Nelson", "Neufville", "Nimely", "Nimley", "Nyemah", "Nyumah", "Paasewe", "Paye", "Payne", "Peters", "Quaye", "Reeves", "Richards", "Roberts", "Rogers", "Ross", "Saah", "Sackie", "Sackor", "Sampson", "Sando", "Saydee", "Saye", "Scott", "Sesay", "Sherif", "Sheriff", "Sherman", "Sieh", "Singh", "Sirleaf", "Smith", "Solomon", "Somah", "Stewart", "Suah", "Sumo", "Swaray", "Swen", "Tamba", "Tarpeh", "Tarr", "Taylor", "Teah", "Thomas", "Thompson", "Toe", "Togba", "Togbah", "Tokpa", "Tokpah", "Tolbert", "Tucker", "Turay", "Tweh", "Vah", "Varney", "Walker", "Wallace", "Washington", "Watson", "Weah", "Wesseh", "Wiah", "Williams", "Willie", "Wilson", "Wisseh", "Wleh", "Woods", "Wreh", "Wright", "Young", "Zayzay", "Zinnah"]>>
+
+<<set setup.mozambicanSlaveNames = ["Acacia", "Alcinda", "Anabela", "Angelina", "Berry", "Bertina", "Binta", "Carolina", "Cátia", "Clarisse", "Deolinda", "Elisa", "Ermelinda", "Esperança", "Frances", "Gisela", "Graça", "Helena", "Iolanda", "Isabel", "Isaura", "Ivone", "Jannah", "Jessica", "Josina", "Leda", "Leia", "Leonor", "Lidia", "Lília", "Lina", "Ludovina", "Luísa", "Marcelina", "Maria", "Miriam", "Neidy", "Noémia", "Paulina", "Sara", "Silvia", "Tânia", "Tanya", "Tina", "Valerdina", "Verónica", "Ximene"]>>
+<<set setup.mozambicanSlaveSurnames = ["Abdula", "Afonso", "Agostinho", "Alberto", "Albino", "Ali", "Almeida", "Alves", "Amade", "Amaral", "Andrade", "Antonio", "Araujo", "Armando", "Assane", "Augusto", "Bacar", "Bambo", "Banze", "Baptista", "Bento", "Bernardo", "Bila", "Brito", "Buque", "Caetano", "Cardoso", "Carimo", "Carlos", "Carvalho", "Cassamo", "Chauque", "Chemane", "Chirindza", "Chissano", "Chongo", "Coelho", "Conceição", "Correia", "Cossa", "Costa", "Cruz", "Cuamba", "Cuambe", "Cumbana", "Cumbane", "Cumbe", "Cuna", "da Costa", "da Silva", "Daniel", "David", "de Sousa", "Dias", "Dimande", "Dinis", "Domingos", "dos Santos", "Duarte", "Ernesto", "Fernandes", "Fernando", "Ferrao", "Ferreira", "Filipe", "Fonseca", "Francisco", "Fumo", "Gimo", "Gomes", "Goncalves", "Guambe", "Ibraimo", "Inacio", "Ismael", "Issufo", "Jaime", "Jamal", "Joao", "Joaquim", "Jorge", "Jose", "Juma", "Junior", "Khan", "Langa", "Lopes", "Lourenço", "Luis", "Mabjaia", "Mabote", "Mabunda", "Macamo", "Macaringue", "Machado", "Machava", "Macie", "Macuacua", "Madeira", "Magaia", "Mahomed", "Mahumane", "Malate", "Mambo", "Mandlate", "Manhica", "Manhique", "Manjate", "Manuel", "Mario", "Marques", "Martins", "Massango", "Massinga", "Massingue", "Matavel", "Matavele", "Mate", "Mateus", "Matola", "Matos", "Matsinhe", "Matusse", "Mausse", "Mavie", "Mazive", "Mendes", "Meque", "Miguel", "Miranda", "Moçambique", "Moiane", "Moises", "Momade", "Mondlane", "Monjane", "Monteiro", "Morais", "Mucavele", "Muchanga", "Muianga", "Munguambe", "Mussa", "Mussagy", "Nelson", "Neves", "Nhaca", "Nhampossa", "Nhancale", "Nhantumbo", "Novela", "Nunes", "Nuvunga", "Oliveira", "Omar", "Paulino", "Paulo", "Pedro", "Pelembe", "Pereira", "Pinto", "Pires", "Rafael", "Ramos", "Ribeiro", "Rocha", "Rodrigues", "Rosario", "Rungo", "Sambo", "Samuel", "Santos", "Sigauque", "Silva", "Simango", "Simao", "Simbine", "Sitoe", "Soares", "Sousa", "Tamele", "Teixeira", "Tembe", "Timana", "Tivane", "Tomas", "Uamusse", "Ubisse", "Ussene", "Vasco", "Vaz", "Vieira", "Vilanculo", "Vilanculos", "Wilson", "Xavier", "Xerinda", "Zacarias", "Zandamela", "Zimba"]>>
+
+<<set setup.namibianSlaveNames = ["Agnes", "Angelika", "Barbara", "Behati", "Clara", "Doreen", "Elaine", "Elma", "Gustaphine", "Hansina", "Hilma", "Ida", "Kanuni", "Katrina", "Kovambo", "Laura", "Lempy", "Libertina", "Loide", "Lucia", "Lydia", "Marelize", "Margaret", "Marichen", "Marlene", "Michelle", "Monica", "Netumbo", "Ngohauvi", "Nora", "Pashukeni", "Pendukeni", "Penehupifo", "Petrina", "Priscilla", "Rebecca", "Rosa", "Rosalia", "Rosina", "Saara", "Sophia", "Suné", "Uilika", "Venantia"]>>
+<<set setup.namibianSlaveSurnames = ["Abrahams", "Adams", "Alberts", "Amadhila", "Amakali", "Amunyela", "Amupolo", "Amutenya", "Anderson", "Andreas", "Angula", "Apollus", "Ashipala", "Barnard", "Basson", "Beukes", "Bezuidenhout", "Blaauw", "Bock", "Boois", "Booysen", "Boshoff", "Botes", "Botha", "Brand", "Brandt", "Britz", "Burger", "Claasen", "Cloete", "Coetzee", "David", "Davids", "de Jager", "de Klerk", "de Villiers", "de Waal", "Diergaardt", "Dreyer", "du Plessis", "du Preez", "du Toit", "Ekandjo", "Elago", "Emvula", "Endjala", "Engelbrecht", "Erasmus", "Farmer", "Feris", "Ferreira", "Fourie", "Fredericks", "Gabriel", "Gariseb", "Garises", "Gertze", "Greeff", "Grobler", "Groenewald", "Haimbodi", "Haingura", "Haipinge", "Hamukwaya", "Hamunyela", "Hamutenya", "Hango", "Hangula", "Hansen", "Haufiku", "Hausiku", "Hauwanga", "Heita", "Horn", "Husselmann", "Iileka", "Iipinge", "Iipumbu", "Iiyambo", "Indongo", "Ipinge", "Isaacs", "Iyambo", "Izaaks", "Jacobs", "Jansen", "Johannes", "Jordaan", "Joseph", "Joubert", "Kamati", "Kambonde", "Kandjii", "Kanime", "Kavari", "Kisting", "Kotze", "Kruger", "Labuschagne", "le Roux", "Liebenberg", "Louw", "Lukas", "Maasdorp", "Manuel", "Marais", "Maritz", "Martin", "Matengu", "Matheus", "Mbango", "Meyer", "Moller", "Moses", "Mostert", "Mouton", "Moyo", "Muller", "Murangi", "Muteka", "Nakale", "Nambahu", "Nangolo", "Nangombe", "Negumbo", "Nekongo", "Nel", "Ntinda", "Nuuyoma", "Nyambe", "Olivier", "Oosthuizen", "Opperman", "Paulus", "Petrus", "Pienaar", "Pieters", "Platt", "Plessis", "Potgieter", "Pretorius", "Prinsloo", "Rossouw", "Sakaria", "Samuel", "Schmidt", "Scholtz", "Shaanika", "Sheehama", "Sheya", "Shifotoka", "Shigwedha", "Shiimi", "Shikongo", "Shilongo", "Shipanga", "Shivute", "Shuuya", "Simasiku", "Simataa", "Simon", "Sinvula", "Smit", "Smith", "Snyman", "Steenkamp", "Stephanus", "Steyn", "Strauss", "Strydom", "Swanepoel", "Swart", "Swartbooi", "Swartz", "Theron", "Thomas", "Titus", "Uugwanga", "Uushona", "van der Merwe", "van der Westhuizen", "van Niekerk", "van Rensburg", "van Rooi", "van Rooyen", "van Schalkwyk", "van Staden", "van Wyk", "van Zyl", "Venter", "Vermeulen", "Viljoen", "Visagie", "Visser", "Vries", "Willemse", "Williams", "Witbooi", "Wyk", "Zyl"]>>
+
+<<set setup.southSudaneseSlaveNames = ["Adut", "Agnes", "Aheu", "Alek", "Angelina", "Anisia", "Anjelina", "Ann", "Anne", "Ataui", "Atek", "Awiei", "Awien", "Awut", "Betty", "Dorothy", "Emma", "Hellen", "Jemma", "Josephine", "Juliet", "Margret", "Mary", "Nyandeng", "Pricilla", "Rebecca", "Rose", "Suzanne", "Theresa"]>>
+<<set setup.southSudaneseSlaveSurnames = ["Abraham", "Abugo", "Achieng", "Acuil", "Agor", "Akol", "Akot", "Akuong", "Aleu", "Aligo", "Atem", "Awan", "Baki", "Bakosoro", "Barsan", "Batali", "Bok", "Bola", "Boyoi", "Bureng", "Dau", "Deliech", "Deng", "Echom", "Frances", "Gai", "Gakmar", "Gale", "Garang", "Gatluak", "Gilo", "Hassan", "Ifeny", "Igga", "Ija", "Jaden", "Jang", "Jok", "Kiir", "Koang", "Konga", "Konya", "Ladu", "Lam", "Legge", "Lojore", "Lokuron", "Loluke", "Lom", "Lomong", "Loweth", "Machar", "Madut", "Majok", "Makana", "Makuach", "Malou", "Mawut", "Mayardit", "Mayen", "Michael", "Miskin", "Monday", "Monytuil", "Nhial", "Nyipuoc", "Ohure", "Okwaci", "Pacifo", "Paperture", "Peuok", "Piol", "Puoch", "Raphael", "Rassas", "Taban", "Tong", "Ubur", "Uguak", "Wako", "Wal", "Wani", "Wanji", "Waya", "Wol", "Worju", "Yak"]>>
+
+
 
 
 <<set setup.cowSlaveNames = ["Anna", "Annabelle", "Annie", "Arabella", "Baby", "Bella", "Bella", "Bella", "Bertha", "Bessie", "Betty Sue", "Big Mac", "Blue", "Brown Cow", "Candie", "Cinnamon", "Clarabelle", "Clover", "Cocoa", "Cookie", "Cowlick", "Cupcake", "Dahlia", "Daisy", "Darla", "Diamond", "Dorothy", "Ella", "Emma", "Esmeralda", "Flower", "Gertie", "Hamburger", "Heifer", "Henrietta", "Honeybun", "Jasmayne", "Jasmine", "Lois", "Madonna", "Maggie", "Margie", "Meg", "Minnie", "Molly", "MooMoo", "Moscow", "Muffin", "Nettie", "Penelope", "Penny", "Pinky", "Precious", "Princess", "Rose", "Sasha", "Shelly", "Sugar", "Sunny", "Sunshine", "Sweetie", "Sweetpea", "Swiss Miss", "Waffles"]>>
 
 
 
-<<set setup.chattelReligionistSlaveNames = ["Abundance", "Allegiance", "Amity", "Amnesty", "Ardour", "Beauty", "Belief", "Blessing", "Bliss", "Charisma", "Charity", "Charm", "Chastity", "Chastity", "Cheer", "Clarity", "Clemency", "Comfort", "Compassion", "Concord", "Condolence", "Constance", "Constancy", "Courage", "Credence", "Desire", "Destiny", "Discretion", "Empathy", "Endurance", "Esteem", "Eternity", "Evanescence", "Faith", "Favour", "Felicity", "Fidelity", "Fortune", "Gaiety", "Glory", "Grace", "Grace", "Gracious", "Gravitas", "Happiness", "Harmony", "Heaven", "Honesty", "Hope", "Hope", "Humility", "Innocent", "Integrity", "Joy", "Justice", "Kindness", "Laughter", "Love", "Loyalty", "Luck", "Mercy", "Merit", "Modesty", "Patience", "Peace", "Penance", "Perserverance", "Piety", "Pleasant", "Prosperity", "Prudence", "Prudence", "Purity", "Purity", "Radiance", "Remembrance", "Respect", "Reverence", "Salvation", "Sanctity", "Serendipity", "Serenity", "Silence", "Sincerity", "Solace", "Solemnity", "Success", "Sympathy", "Temperance", "Temperance", "Thankfulness", "Tolerance", "Tranquility", "Trinity", "Truth", "Unity", "Verity", "Virtue", "Wisdom", "Wonder"]>>
+<<set setup.chattelReligionistSlaveNames = ["Abundance", "Allegiance", "Amity", "Amnesty", "Ardour", "Beauty", "Belief", "Benevolence", "Blessing", "Bliss", "Care", "Charisma", "Charity", "Charm", "Chastity", "Cheer", "Clarity", "Clemency", "Comfort", "Compassion", "Concord", "Condolence", "Constance", "Constancy", "Courage", "Credence", "Desire", "Destiny", "Diligence", "Discretion", "Dutifulness", "Empathy", "Endurance", "Esteem", "Eternity", "Evanescence", "Faith", "Favour", "Felicity", "Fidelity", "Fortune", "Gaiety", "Glory", "Grace", "Gracious", "Gravitas", "Happiness", "Harmony", "Heaven", "Honesty", "Honor", "Hope", "Humanity", "Humility", "Innocent", "Integrity", "Joy", "Justice", "Kindness", "Laughter", "Love", "Loyalty", "Luck", "Mercy", "Merit", "Mindfulness", "Modesty", "Obedience", "Patience", "Peace", "Penance", "Perseverance", "Piety", "Pleasant", "Prosperity", "Prudence", "Purity", "Radiance", "Rectitude", "Remembrance", "Respect", "Reverence", "Salvation", "Sanctity", "Serendipity", "Serenity", "Silence", "Sincerity", "Solace", "Solemnity", "Success", "Sympathy", "Temperance", "Thankfulness", "Tolerance", "Tranquility", "Trinity", "Truth", "Unity", "Verity", "Virtue", "Wisdom", "Wonder"]>>
 
 <<set setup.romanSlaveNames = ["Aconia", "Aelia", "Agricola", "Agrippa", "Agrippina", "Ahala", "Ahenobarba", "Alba", "Albina", "Ambusta", "Annalis", "Antistia", "Antonia", "Appia", "Aquila", "Aquilina", "Arria", "Arvina", "Asina", "Atella", "Atia", "Aula", "Aurela", "Avita", "Baebiana", "Balba", "Barba", "Barbata", "Bassa", "Bestia", "Bibacula", "Bibula", "Blaesa", "Broccha", "Bruta", "Bubulca", "Bulba", "Caeca", "Caecilia", "Caesonia", "Calida", "Calpurnia", "Calva", "Calvina", "Camilla", "Cana", "Canina", "Catilina", "Catula", "Celeris", "Celsa", "Cethega", "Cicurina", "Cincinnata", "Cinna", "Claudia", "Corda", "Cornelia", "Cornicen", "Cornuta", "Corva", "Corvina", "Cossa", "Costa", "Cotta", "Crassa", "Crassipes", "Crispa", "Crispina", "Crispina", "Curva", "Decima", "Dentata", "Dentra", "Diana", "Dives", "Dolabella", "Domitia", "Domitilla", "Drusa", "Drusilla", "Euphemia", "Eutropia", "Fabia", "Faustina", "Figula", "Fimbria", "Flacca", "Flava", "Flavia", "Flora", "Fusa", "Gaia", "Galeria", "Galla", "Gemella", "Gnaea", "Gnaea", "Graccha", "Gratidia", "Gurges", "Habita", "Helena", "Helva", "Helvia", "Herennia", "Honoria", "Hostia", "Imperiosa", "Iulla", "Julia", "Junia", "Justina", "Lactuca", "Laenas", "Laevina", "Lanata", "Laterensis", "Lentula", "Leontia", "Lepida", "Lepida", "Licina", "Licinia", "Livia", "Livilla", "Lollia", "Longa", "Lucia", "Lucilla", "Luculla", "Lupa", "Macra", "Macula", "Maecia", "Magia", "Malleola", "Mamerca", "Mania", "Manlia", "Marca", "Marcella", "Marcella", "Marcia", "Mellisa", "Merenda", "Merga", "Merula", "Messalina", "Messalla", "Metella", "Metella", "Minervina", "Munatia", "Murena", "Mus", "Musca", "Nasica", "Natta", "Nepos", "Nerva", "Nigra", "Novella", "Numeria", "Ocella", "Ocellina", "Octavia", "Orbiana", "Otacilia", "Paccia", "Pacila", "Paeta", "Pansa", "Papa", "Papianilla", "Patercula", "Paulina", "Paulla", "Pera", "Pictrix", "Placiaida", "Planca", "Plauta", "Plautia", "Plautilla", "Plotina", "Pompeia", "Popilla", "Poplicola", "Poppaea", "Porcia", "Postuma", "Potita", "Praeconina", "Praetextata", "Prisca", "Procula", "Publia", "Publicola", "Pulcheria", "Pulchra", "Pulla", "Pulvilla", "Quadrata", "Quinta", "Ralla", "Regilla", "Regula", "Risca", "Rufa", "Ruga", "Rulla", "Rutila", "Sabina", "Salinatrix", "Salonina", "Saturnina", "Scaeva", "Scaevola", "Scapula", "Scaura", "Scrofa", "Sempronia", "Seneca", "Servia", "Servilia", "Severa", "Severa", "Sexta", "Sila", "Silana", "Spuria", "Statilia", "Structa", "Sulla", "Sulpicia", "Sura", "Taura", "Terentia", "Theodora", "Tiberia", "Tita", "Titania", "Tranquillina", "Triaria", "Trigemina", "Tuberta", "Tubula", "Tuditana", "Tulla", "Tullia", "Turda", "Ulpia", "Urgulania", "Valeria", "Vara", "Vatia", "Verina", "Verres", "Vesta", "Vetus", "Vibia", "Vibia", "Violentilla", "Vipsania", "Vistilla", "Vitula", "Volusa"]>>
 <<set setup.romanSlaveSurnames = ["Acilia", "Aebutia", "Aelia", "Aemilia", "Anicia", "Annia", "Antistia", "Antonia", "Appuleia", "Aquillia", "Ateia", "Atilia", "Atinia", "Attia", "Aufidia", "Aurelia", "Baebia", "Caecilia", "Caedicia", "Caelia", "Calpurnia", "Caninia", "Canuleia", "Carvilia", "Cassia", "Claudia", "Clodia", "Cloelia", "Cluvia", "Coelia", "Considia", "Cornelia", "Cosconia", "Curia", "Curiatia", "Curtia", "Decia", "Decimia", "Didia", "Domitia", "Duillia", "Egnatia", "Fabia", "Fabricia", "Fannia", "Flaminia", "Flavia", "Fonteia", "Fulvia", "Fundania", "Furia", "Gabinia", "Gegania", "Genucia", "Herennia", "Horatia", "Hortensia", "Hostilia", "Icilia", "Julia", "Junia", "Juventia", "Laelia", "Laetoria", "Licinia", "Livia", "Lollia", "Lucilia", "Lucretia", "Lutatia", "Maenia", "Mallia", "Mamilia", "Manilia", "Manlia", "Marcia", "Maria", "Matiena", "Memmia", "Menenia", "Minucia", "Mucia", "Mummia", "Munatia", "Naevia", "Nautia", "Nonia", "Octavia", "Ogulnia", "Opimia", "Oppia", "Otacilia", "Papia", "Papiria", "Peducaea", "Perperna", "Petellia", "Pinaria", "Plaetoria", "Plautia", "Plotia", "Poetelia", "Pompeia", "Pomponia", "Popillia", "Porcia", "Postumia", "Publicia", "Publilia", "Pupia", "Quinctia", "Quinctilia", "Quintia", "Roscia", "Rubria", "Rutilia", "Scribonia", "Sempronia", "Sergia", "Servilia", "Sestia", "Sextia", "Sextilia", "Sicinia", "Silia", "Sulpicia", "Terentia", "Titia", "Titinia", "Trebonia", "Tremellia", "Tullia", "Valeria", "Verginia", "Veturia", "Vibia", "Villia", "Voconia", "Volcatia", "Volumnia"]>>
@@ -878,6 +1016,7 @@ Then pick _namePool.random(), or display those names as possible choices, or do
 	"Albanian": setup.albanianSlaveNames,
 	"Algerian": setup.algerianSlaveNames,
 	"Andorran": setup.andorranSlaveNames,
+	"Angolan": setup.angolanSlaveNames,
 	"Antiguan": setup.antiguanSlaveNames,
 	"American.black": setup.africanAmericanSlaveNames, "American.latina": setup.latinaSlaveNames, "American.asian": setup.asianAmericanSlaveNames,
 	"American.middle eastern": setup.egyptianSlaveNames, "American": setup.whiteAmericanSlaveNames,
@@ -894,22 +1033,30 @@ Then pick _namePool.random(), or display those names as possible choices, or do
 	"Belarusian": setup.belarusianSlaveNames,
 	"Belgian": setup.belgianSlaveNames,
 	"Belizean.white": setup.germanSlaveNames, "Belizean": setup.belizeanSlaveNames,
+	"Beninese": setup.benineseSlaveNames,
 	"Bermudian": setup.bermudianSlaveNames,
 	"Bhutanese": setup.bhutaneseSlaveNames,
+	"Bissau-Guinean": setup.bissauGuineanSlaveNames,
 	"Bolivian": setup.bolivianSlaveNames,
 	"Bosnian": setup.bosnianSlaveNames,
 	"Brazilian": setup.brazilianSlaveNames,
 	"British.indo-aryan": setup.indianSlaveNames, "British": setup.britishSlaveNames,
 	"Bruneian": setup.bruneianSlaveNames,
 	"Bulgarian": setup.bulgarianSlaveNames,
+	"Burkinabé": setup.burkinabeSlaveNames,
 	"Burmese": setup.burmeseSlaveNames,
 	"Burundian": setup.burundianSlaveNames,
 	"Cambodian": setup.cambodianSlaveNames,
 	"Cameroonian": setup.cameroonianSlaveNames,
 	"Canadian.Asian": setup.asianAmericanSlaveNames, "Canadian": setup.canadianSlaveNames,
+	"Cape Verdean": setup.capeVerdeanSlaveNames,
+	"Catalan": setup.catalanSlaveNames,
+	"Central African": setup.centralAfricanSlaveNames,
+	"Chadian": setup.chadianSlaveNames,
 	"Chilean": setup.chileanSlaveNames,
 	"Chinese": setup.chineseSlaveNames,
 	"Colombian": setup.colombianSlaveNames,
+	"Comorian": setup.comorianSlaveNames,
 	"Congolese": setup.congoleseSlaveNames,
 	"a Cook Islander": setup.cookIslanderSlaveNames,
 	"Costa Rican": setup.costaRicanSlaveNames,
@@ -926,6 +1073,8 @@ Then pick _namePool.random(), or display those names as possible choices, or do
 	"Ecuadorian": setup.ecuadorianSlaveNames,
 	"Egyptian": setup.egyptianSlaveNames,
 	"Emirati": setup.emiratiSlaveNames,
+	"Equatoguinean": setup.equatoguineanSlaveNames,
+	"Eritrean": setup.eritreanSlaveNames,
 	"Estonian": setup.estonianSlaveNames,
 	"Ethiopian": setup.ethiopianSlaveNames,
 	"Fijian": setup.fijianSlaveNames,
@@ -933,7 +1082,9 @@ Then pick _namePool.random(), or display those names as possible choices, or do
 	"Finnish": setup.finnishSlaveNames,
 	"French": setup.frenchSlaveNames,
 	"French Guianan": setup.frenchGuiananSlaveNames,
+	"French Polynesian": setup.frenchPolynesianSlaveNames,
 	"Gabonese": setup.gaboneseSlaveNames,
+	"Gambian": setup.gambianSlaveNames,
 	"Georgian": setup.georgianSlaveNames,
 	"German.middle eastern": setup.turkishSlaveNames, "German": setup.germanSlaveNames,
 	"Ghanan": setup.ghananSlaveNames,
@@ -941,6 +1092,7 @@ Then pick _namePool.random(), or display those names as possible choices, or do
 	"Greenlandic": setup.greenlandicSlaveNames,
 	"Grenadian":  setup.grenadianSlaveNames,
 	"Guatemalan": setup.guatemalanSlaveNames,
+	"Guinean": setup.guineanSlaveNames,
 	"Guyanese": setup.guyaneseSlaveNames,
 	"Haitian": setup.haitianSlaveNames,
 	"Honduran": setup.honduranSlaveNames,
@@ -954,6 +1106,7 @@ Then pick _namePool.random(), or display those names as possible choices, or do
 	"Irish": setup.irishSlaveNames,
 	"Israeli": setup.israeliSlaveNames,
 	"Italian": setup.italianSlaveNames,
+	"Ivorian": setup.ivorianSlaveNames,
 	"Jamaican": setup.jamaicanSlaveNames,
 	"Japanese": setup.japaneseSlaveNames,
 	"Jordanian": setup.jordanianSlaveNames,
@@ -962,22 +1115,27 @@ Then pick _namePool.random(), or display those names as possible choices, or do
 	"Kittitian": setup.kittitianSlaveNames,
 	"Korean": setup.koreanSlaveNames,
 	"Kosovan": setup.kosovanSlaveNames,
+	"Kurdish": setup.kurdishSlaveNames,
 	"Kuwaiti": setup.kuwaitiSlaveNames,
 	"Kyrgyz": setup.kyrgyzSlaveNames,
 	"Laotian": setup.laotianSlaveNames,
 	"Latvian": setup.latvianSlaveNames,
 	"Lebanese": setup.lebaneseSlaveNames,
+	"Liberian": setup.liberianSlaveNames,
 	"Libyan": setup.libyanSlaveNames,
 	"a Liechtensteiner": setup.liechtensteinerSlaveNames,
 	"Lithuanian": setup.lithuanianSlaveNames,
 	"Luxembourgian": setup.luxembourgianSlaveNames,
 	"Macedonian": setup.macedonianSlaveNames,
 	"Malagasy": setup.malagasySlaveNames,
+	"Malawian": setup.malawianSlaveNames,
 	"Malaysian": setup.malaysianSlaveNames,
 	"Maldivian": setup.maldivianSlaveNames,
 	"Malian": setup.malianSlaveNames,
 	"Maltese": setup.malteseSlaveNames,
 	"Marshallese": setup.marshalleseSlaveNames,
+	"Mauritanian": setup.mauritanianSlaveNames,
+	"Mauritian": setup.mauritianSlaveNames,
 	"Mexican": setup.mexicanSlaveNames,
 	"Micronesian": setup.micronesianSlaveNames,
 	"Moldovan": setup.moldovanSlaveNames,
@@ -985,6 +1143,10 @@ Then pick _namePool.random(), or display those names as possible choices, or do
 	"Mongolian": setup.mongolianSlaveNames,
 	"Montenegrin": setup.montenegrinSlaveNames,
 	"Moroccan": setup.moroccanSlaveNames,
+	"Mosotho": setup.mosothoSlaveNames,
+	"Motswana": setup.motswanaSlaveNames,
+	"Mozambican": setup.mozambicanSlaveNames,
+	"Namibian": setup.namibianSlaveNames,
 	"Nauruan": setup.nauruanSlaveNames,
 	"Nepalese": setup.nepaleseSlaveNames,
 	"a New Zealander.asian": setup.asianAmericanSlaveNames, "a New Zealander": setup.newZealanderSlaveNames,
@@ -1008,23 +1170,31 @@ Then pick _namePool.random(), or display those names as possible choices, or do
 	"Qatari": setup.qatariSlaveNames,
 	"Romanian": setup.romanianSlaveNames,
 	"Russian": setup.russianSlaveNames,
+	"Rwandan": setup.rwandanSlaveNames,
+	"Sahrawi": setup.sahrawiSlaveNames,
 	"Saint Lucian": setup.saintLucianSlaveNames,
 	"Salvadoran": setup.salvadoranSlaveNames,
 	"Sammarinese": setup.sammarineseSlaveNames,
 	"Samoan": setup.samoanSlaveNames,
+	"São Toméan": setup.saoTomeanSlaveNames,
 	"Saudi": setup.saudiSlaveNames,
 	"Scottish": setup.scottishSlaveNames,
+	"Senegalese": setup.senegaleseSlaveSurnames,
 	"Serbian": setup.serbianSlaveNames,
 	"Seychellois": setup.seychelloisSlaveNames,
+	"Sierra Leonean": setup.sierraLeoneanSlaveSurnames,
 	"Singaporean": setup.singaporeanSlaveNames,
 	"Slovak": setup.slovakSlaveNames,
 	"Slovene": setup.sloveneSlaveNames,
 	"a Solomon Islander": setup.solomonIslanderSlaveNames,
+	"Somali": setup.somaliSlaveNames,
 	"South African.black": setup.blackSouthAfricanSlaveNames, "South African": setup.whiteSouthAfricanSlaveNames,
+	"South Sudanese": setup.southSudaneseSlaveNames,
 	"Spanish": setup.spanishSlaveNames,
 	"Sri Lankan": setup.sriLankanSlaveNames,
 	"Sudanese": setup.sudaneseSlaveNames,
 	"Surinamese": setup.surinameseSlaveNames,
+	"Swazi": setup.swaziSlaveNames,
 	"Swedish": setup.swedishSlaveNames,
 	"Swiss": setup.swissSlaveNames,
 	"Syrian": setup.syrianSlaveNames,
@@ -1032,6 +1202,8 @@ Then pick _namePool.random(), or display those names as possible choices, or do
 	"Tajik": setup.tajikSlaveNames,
 	"Tanzanian": setup.tanzanianSlaveNames,
 	"Thai": setup.thaiSlaveNames,
+	"Tibetan": setup.tibetanSlaveNames,
+	"Togolese": setup.togoleseSlaveNames,
 	"Tongan": setup.tonganSlaveNames,
 	"Trinidadian": setup.trinidadianSlaveNames,
 	"Tunisian": setup.tunisianSlaveNames,
@@ -1047,6 +1219,7 @@ Then pick _namePool.random(), or display those names as possible choices, or do
 	"Vietnamese": setup.vietnameseSlaveNames,
 	"Vincentian": setup.vincentianSlaveNames,
 	"Yemeni": setup.yemeniSlaveNames,
+	"Zairian": setup.zairianSlaveNames,
 	"Zambian": setup.zambianSlaveNames,
 	"Zimbabwean.white": setup.whiteSouthAfricanSlaveNames, "Zimbabwean": setup.zimbabweanSlaveNames,
 	}>>
@@ -1055,6 +1228,7 @@ Then pick _namePool.random(), or display those names as possible choices, or do
 	"Albanian": setup.albanianSlaveSurnames,
 	"Algerian": setup.algerianSlaveSurnames,
 	"Andorran": setup.andorranSlaveSurnames,
+	"Angolan": setup.angolanSlaveSurnames,
 	"Antiguan": setup.antiguanSlaveSurnames,
 	"American.black": setup.africanAmericanSlaveSurnames, "American.latina": setup.latinaSlaveSurnames, "American.asian": setup.asianAmericanSlaveSurnames,
 	"American.middle eastern": setup.egyptianSlaveSurnames, "American": setup.whiteAmericanSlaveSurnames,
@@ -1071,22 +1245,30 @@ Then pick _namePool.random(), or display those names as possible choices, or do
 	"Belarusian": setup.belarusianSlaveSurnames,
 	"Belgian": setup.belgianSlaveSurnames,
 	"Belizean.white": setup.germanSlaveSurnames, "Belizean": setup.belizeanSlaveSurnames,
+	"Beninese": setup.benineseSlaveSurnames,
 	"Bermudian": setup.bermudianSlaveSurnames,
 	"Bhutanese": setup.bhutaneseSlaveSurnames,
+	"Bissau-Guinean": setup.bissauGuineanSlaveSurnames,
 	"Bolivian": setup.bolivianSlaveSurnames,
 	"Bosnian": setup.bosnianSlaveSurnames,
 	"Brazilian": setup.brazilianSlaveSurnames,
 	"British.indo-aryan": setup.indianSlaveSurnames, "British": setup.britishSlaveSurnames,
 	"Bruneian": setup.bruneianSlaveSurnames,
 	"Bulgarian": setup.bulgarianSlaveSurnames,
+	"Burkinabé": setup.burkinabeSlaveSurnames,
 	"Burmese": setup.burmeseSlaveSurnames,
 	"Burundian": setup.burundianSlaveSurnames,
 	"Cambodian": setup.cambodianSlaveSurnames,
 	"Cameroonian": setup.cameroonianSlaveSurnames,
 	"Canadian.Asian": setup.asianAmericanSlaveSurnames, "Canadian": setup.canadianSlaveSurnames,
+	"Cape Verdean": setup.capeVerdeanSlaveSurnames,
+	"Catalan": setup.catalanSlaveSurnames,
+	"Central African": setup.centralAfricanSlaveSurnames,
+	"Chadian": setup.chadianSlaveSurnames,
 	"Chilean": setup.chileanSlaveSurnames,
 	"Chinese": setup.chineseSlaveSurnames,
 	"Colombian": setup.colombianSlaveSurnames,
+	"Comorian": setup.comorianSlaveSurnames,
 	"Congolese": setup.congoleseSlaveSurnames,
 	"a Cook Islander": setup.cookIslanderSlaveSurnames,
 	"Costa Rican": setup.costaRicanSlaveSurnames,
@@ -1103,6 +1285,8 @@ Then pick _namePool.random(), or display those names as possible choices, or do
 	"Ecuadorian": setup.ecuadorianSlaveSurnames,
 	"Egyptian": setup.egyptianSlaveSurnames,
 	"Emirati": setup.emiratiSlaveSurnames,
+	"Equatoguinean": setup.equatoguineanSlaveSurnames,
+	"Eritrean": setup.eritreanSlaveSurnames,
 	"Estonian": setup.estonianSlaveSurnames,
 	"Ethiopian": setup.ethiopianSlaveSurnames,
 	"Fijian": setup.fijianSlaveSurnames,
@@ -1110,7 +1294,9 @@ Then pick _namePool.random(), or display those names as possible choices, or do
 	"Finnish": setup.finnishSlaveSurnames,
 	"French": setup.frenchSlaveSurnames,
 	"French Guianan": setup.frenchGuiananSlaveSurnames,
+	"French Polynesian": setup.frenchPolynesianSlaveSurnames,
 	"Gabonese": setup.gaboneseSlaveSurnames,
+	"Gambian": setup.gambianSlaveSurnames,
 	"Georgian": setup.georgianSlaveSurnames,
 	"German.middle eastern": setup.turkishSlaveSurnames, "German": setup.germanSlaveSurnames,
 	"Ghanan": setup.ghananSlaveSurnames,
@@ -1118,6 +1304,7 @@ Then pick _namePool.random(), or display those names as possible choices, or do
 	"Greenlandic": setup.greenlandicSlaveSurnames,
 	"Grenadian":  setup.grenadianSlaveSurnames,
 	"Guatemalan": setup.guatemalanSlaveSurnames,
+	"Guinean": setup.guineanSlaveSurnames,
 	"Guyanese": setup.guyaneseSlaveSurnames,
 	"Haitian": setup.haitianSlaveSurnames,
 	"Honduran": setup.honduranSlaveSurnames,
@@ -1131,6 +1318,7 @@ Then pick _namePool.random(), or display those names as possible choices, or do
 	"Irish": setup.irishSlaveSurnames,
 	"Israeli": setup.israeliSlaveSurnames,
 	"Italian": setup.italianSlaveSurnames,
+	"Ivorian": setup.ivorianSlaveSurnames,
 	"Jamaican": setup.jamaicanSlaveSurnames,
 	"Japanese": setup.japaneseSlaveSurnames,
 	"Jordanian": setup.jordanianSlaveSurnames,
@@ -1139,22 +1327,27 @@ Then pick _namePool.random(), or display those names as possible choices, or do
 	"Kittitian": setup.kittitianSlaveSurnames,
 	"Korean": setup.koreanSlaveSurnames,
 	"Kosovan": setup.kosovanSlaveSurnames,
+	"Kurdish": setup.kurdishSlaveSurnames,
 	"Kuwaiti": setup.kuwaitiSlaveSurnames,
 	"Kyrgyz": setup.kyrgyzSlaveSurnames,
 	"Laotian": setup.laotianSlaveSurnames,
 	"Latvian": setup.latvianSlaveSurnames,
 	"Lebanese": setup.lebaneseSlaveSurnames,
+	"Liberian": setup.liberianSlaveSurnames,
 	"Libyan": setup.libyanSlaveSurnames,
 	"a Liechtensteiner": setup.liechtensteinerSlaveSurnames,
 	"Lithuanian": setup.lithuanianSlaveSurnames,
 	"Luxembourgian": setup.luxembourgianSlaveSurnames,
 	"Macedonian": setup.macedonianSlaveSurnames,
 	"Malagasy": setup.malagasySlaveSurnames,
+	"Malawian": setup.malawianSlaveSurnames,
 	"Malaysian": setup.malaysianSlaveSurnames,
 	"Maldivian": setup.maldivianSlaveSurnames,
 	"Malian": setup.malianSlaveSurnames,
 	"Maltese": setup.malteseSlaveSurnames,
 	"Marshallese": setup.marshalleseSlaveSurnames,
+	"Mauritanian": setup.mauritanianSlaveSurnames,
+	"Mauritian": setup.mauritianSlaveSurnames,
 	"Mexican": setup.mexicanSlaveSurnames,
 	"Micronesian": setup.micronesianSlaveSurnames,
 	"Moldovan": setup.moldovanSlaveSurnames,
@@ -1162,6 +1355,10 @@ Then pick _namePool.random(), or display those names as possible choices, or do
 	"Mongolian": setup.mongolianSlaveSurnames,
 	"Montenegrin": setup.montenegrinSlaveSurnames,
 	"Moroccan": setup.moroccanSlaveSurnames,
+	"Mosotho": setup.mosothoSlaveSurnames,
+	"Motswana": setup.motswanaSlaveSurnames,
+	"Mozambican": setup.mozambicanSlaveSurnames,
+	"Namibian": setup.namibianSlaveSurnames,
 	"Nauruan": setup.nauruanSlaveSurnames,
 	"Nepalese": setup.nepaleseSlaveSurnames,
 	"a New Zealander.asian": setup.asianAmericanSlaveSurnames, "a New Zealander": setup.newZealanderSlaveSurnames,
@@ -1185,23 +1382,31 @@ Then pick _namePool.random(), or display those names as possible choices, or do
 	"Qatari": setup.qatariSlaveSurnames,
 	"Romanian": setup.romanianSlaveSurnames,
 	"Russian": setup.russianSlaveSurnames,
+	"Rwandan": setup.rwandanSlaveSurnames,
+	"Sahrawi": setup.sahrawiSlaveSurnames,
 	"Saint Lucian": setup.saintLucianSlaveSurnames,
 	"Salvadoran": setup.salvadoranSlaveSurnames,
 	"Sammarinese": setup.sammarineseSlaveSurnames,
 	"Samoan": setup.samoanSlaveSurnames,
+	"São Toméan": setup.saoTomeanSlaveSurnames,
 	"Saudi": setup.saudiSlaveSurnames,
 	"Scottish": setup.scottishSlaveSurnames,
+	"Senegalese": setup.senegaleseSlaveSurnames,
 	"Serbian": setup.serbianSlaveSurnames,
 	"Seychellois": setup.seychelloisSlaveSurnames,
+	"Sierra Leonean": setup.sierraLeoneanSlaveSurnames,
 	"Singaporean": setup.singaporeanSlaveSurnames,
 	"Slovak": setup.slovakSlaveSurnames,
 	"Slovene": setup.sloveneSlaveSurnames,
 	"a Solomon Islander": setup.solomonIslanderSlaveSurnames,
+	"Somali": setup.somaliSlaveSurnames,
 	"South African.black": setup.blackSouthAfricanSlaveSurnames, "South African": setup.whiteSouthAfricanSlaveSurnames,
+	"South Sudanese": setup.southSudaneseSlaveSurnames,
 	"Spanish": setup.spanishSlaveSurnames,
 	"Sri Lankan": setup.sriLankanSlaveSurnames,
 	"Sudanese": setup.sudaneseSlaveSurnames,
 	"Surinamese": setup.surinameseSlaveSurnames,
+	"Swazi": setup.swaziSlaveSurnames,
 	"Swedish": setup.swedishSlaveSurnames,
 	"Swiss": setup.swissSlaveSurnames,
 	"Syrian": setup.syrianSlaveSurnames,
@@ -1209,6 +1414,8 @@ Then pick _namePool.random(), or display those names as possible choices, or do
 	"Tajik": setup.tajikSlaveSurnames,
 	"Tanzanian": setup.tanzanianSlaveSurnames,
 	"Thai": setup.thaiSlaveSurnames,
+	"Tibetan": setup.tibetanSlaveSurnames,
+	"Togolese": setup.togoleseSlaveSurnames,
 	"Tongan": setup.tonganSlaveSurnames,
 	"Trinidadian": setup.trinidadianSlaveSurnames,
 	"Tunisian": setup.tunisianSlaveSurnames,
@@ -1224,66 +1431,67 @@ Then pick _namePool.random(), or display those names as possible choices, or do
 	"Vietnamese": setup.vietnameseSlaveSurnames,
 	"Vincentian": setup.vincentianSlaveSurnames,
 	"Yemeni": setup.yemeniSlaveSurnames,
+	"Zairian": setup.zairianSlaveSurnames,
 	"Zambian": setup.zambianSlaveSurnames,
 	"Zimbabwean.white": setup.whiteSouthAfricanSlaveSurnames, "Zimbabwean": setup.zimbabweanSlaveSurnames,
 	}>>
 
 
-<<set setup.ArcologyNamesSupremacistWhite = ["The Old Dominion", "Thule"]>>
-<<set setup.ArcologyNamesSupremacistAsian = ["The Celestial Temple", "Shambhala", "Shangri-La"]>>
-<<set setup.ArcologyNamesSupremacistLatina = ["La Sagrada", "Alhambra", "Alcázar de Segovia", "Tenochtitlan", "Aztlan"]>>
-<<set setup.ArcologyNamesSupremacistMiddleEastern = ["The Caliphate", "New Cairo"]>>
-<<set setup.ArcologyNamesSupremacistBlack = ["United Africa", "Benin"]>>
-<<set setup.ArcologyNamesSupremacistIndoAryan = ["Swarga Loka", "New New Delhi"]>>
-<<set setup.ArcologyNamesSupremacistPacificIslander = ["Maui", "Rapa Nui"]>>
-<<set setup.ArcologyNamesSupremacistMalay = ["Brunei", "Patani"]>>
-<<set setup.ArcologyNamesSupremacistAmerindian = ["Cahokia", "The Confederated Tribes"]>>
-<<set setup.ArcologyNamesSupremacistSouthernEuropean = ["New Athens", "Olympus"]>>
-<<set setup.ArcologyNamesSupremacistSemitic = ["The Fifth Temple", "The Promised Land"]>>
-<<set setup.ArcologyNamesSupremacistMixedRace = ["Hybrid Vigor", "Meltingpot"]>>
-<<set setup.ArcologyNamesSubjugationistWhite = ["The World Turned Upside Down", "Anticolonialism One"]>>
-<<set setup.ArcologyNamesSubjugationistAsian = ["The East India Company", "Pearl of the Orient"]>>
-<<set setup.ArcologyNamesSubjugationistLatina = ["Los Conquistados", "Annual", "Fort Veracruz"]>>
-<<set setup.ArcologyNamesSubjugationistMiddleEastern = ["Constantinople", "Vlad's Castle"]>>
-<<set setup.ArcologyNamesSubjugationistBlack = ["Dixie", "The Plantation"]>>
-<<set setup.ArcologyNamesSubjugationistIndoAryan = ["The East India Company", "Trade Fort"]>>
-<<set setup.ArcologyNamesSubjugationistPacificIslander = ["Cargo Cult", "Moro Castle"]>>
-<<set setup.ArcologyNamesSubjugationistMalay = ["Pulo Prabang", "Eastern Emporium"]>>
-<<set setup.ArcologyNamesSubjugationistAmerindian = ["Fort Laramie", "The Rez"]>>
-<<set setup.ArcologyNamesSubjugationistSouthernEuropean = ["Istanbul", "Al-Andalus"]>>
-<<set setup.ArcologyNamesSubjugationistSemitic = ["Solomon's Lament", "New Canaan"]>>
-<<set setup.ArcologyNamesSubjugationistMixedRace = ["Purity", "Bloodlines"]>>
-<<set setup.ArcologyNamesGenderRadicalist = ["Saturnalia", "Bacchanalia", "Gomorrah", "Sodom", "The Rosebud"]>>
+<<set setup.ArcologyNamesSupremacistWhite = ["Avalon", "Hy-Brasil", "The Old Dominion", "Thule"]>>
+<<set setup.ArcologyNamesSupremacistAsian = ["Shambhala", "Shangri-La", "The Celestial Temple", "Tian"]>>
+<<set setup.ArcologyNamesSupremacistLatina = ["Alcázar de Segovia", "Alhambra", "Aztlan", "Ciudad Blanca", "La Sagrada", "Tenochtitlan"]>>
+<<set setup.ArcologyNamesSupremacistMiddleEastern = ["New Cairo", "The Caliphate", "Ubar", "Zerzura"]>>
+<<set setup.ArcologyNamesSupremacistBlack = ["Benin", "The Promised Land", "United Africa"]>>
+<<set setup.ArcologyNamesSupremacistIndoAryan = ["New New Delhi", "Swarga Loka"]>>
+<<set setup.ArcologyNamesSupremacistPacificIslander = ["Hawaiki", "Maui", "Rapa Nui"]>>
+<<set setup.ArcologyNamesSupremacistMalay = ["Brunei", "Patani", "Tanah Melayu"]>>
+<<set setup.ArcologyNamesSupremacistAmerindian = ["Cahokia", "Caral", "The Confederated Tribes"]>>
+<<set setup.ArcologyNamesSupremacistSouthernEuropean = ["New Athens", "Olympus", "Siglo de Oro"]>>
+<<set setup.ArcologyNamesSupremacistSemitic = ["Garden of Eden", "Olam Ha-Ba", "The Fifth Temple", "The Promised Land"]>>
+<<set setup.ArcologyNamesSupremacistMixedRace = ["Fusion", "Hybrid Vigor", "Meltingpot"]>>
+<<set setup.ArcologyNamesSubjugationistWhite = ["Anticolonialism One", "Mayocide", "The World Turned Upside Down"]>>
+<<set setup.ArcologyNamesSubjugationistAsian = ["Diyu", "Pearl of the Orient", "The East India Company"]>>
+<<set setup.ArcologyNamesSubjugationistLatina = ["Annual", "Fort Veracruz", "Los Conquistados", "Porvenir"]>>
+<<set setup.ArcologyNamesSubjugationistMiddleEastern = ["Constantinople", "La Reconquista", "Vlad's Castle"]>>
+<<set setup.ArcologyNamesSubjugationistBlack = ["Dixie", "Rubber Farm", "The Plantation", "The Projects"]>>
+<<set setup.ArcologyNamesSubjugationistIndoAryan = ["The East India Company", "Trade Fort", "UCIL Plant"]>>
+<<set setup.ArcologyNamesSubjugationistPacificIslander = ["Cargo Cult", "Castle Bravo", "Moro Castle"]>>
+<<set setup.ArcologyNamesSubjugationistMalay = ["Bencoolen", "Eastern Emporium", "Pulo Prabang"]>>
+<<set setup.ArcologyNamesSubjugationistAmerindian = ["Fort Laramie", "The Rez", "Wounded Knee"]>>
+<<set setup.ArcologyNamesSubjugationistSouthernEuropean = ["Al-Andalus", "Istanbul", "Parish Prison"]>>
+<<set setup.ArcologyNamesSubjugationistSemitic = ["Exodus", "New Canaan", "Solomon's Lament"]>>
+<<set setup.ArcologyNamesSubjugationistMixedRace = ["Bloodlines", "Purity", "Segregation"]>>
+<<set setup.ArcologyNamesGenderRadicalist = ["Bacchanalia", "Gomorrah", "Saturnalia", "Sodom", "The Rosebud"]>>
 <<set setup.ArcologyNamesGenderFundamentalist = ["The Arbor", "The Rose", "The Source"]>>
-<<set setup.ArcologyNamesPaternalist = ["Sanctum", "Asylum", "Sanctuary", "Haven", "New Springfield", "The Sanctuary", "Glory"]>>
-<<set setup.ArcologyNamesDegradationist = ["Hell", "Golgotha", "The Tower"]>>
-<<set setup.ArcologyNamesBodyPurist = ["Walden", "New Eden", "Elysium", "Purity", "The Ark", "The Repository"]>>
-<<set setup.ArcologyNamesTransformationFetishist = ["The Dollhouse", "Silicone Valley", "The Hospital", "Bimboland"]>>
-<<set setup.ArcologyNamesYouthPreferentialist = ["Sunnyside", "Fuck High", "Dick U.", "Sex College"]>>
-<<set setup.ArcologyNamesMaturityPreferentialist = ["Shady Acres", "MILFtown", "MILF Heights", "Park Avenue Tower"]>>
-<<set setup.ArcologyNamesSlimnessEnthusiast = ["The Island", "Upskirt", "Virginland"]>>
-<<set setup.ArcologyNamesAssetExpansionist = ["The Bouncy Castle", "The Mounds", "Twin Peaks", "Boobs Tower"]>>
-<<set setup.ArcologyNamesPastoralist = ["Cornucopia", "Abundance", "Plenty", "Bounty", "Greener Pastures", "God's Country", "The Ranch", "Pasturelands"]>>
-<<set setup.ArcologyNamesPhysicalIdealist = ["Themyscira", "Midgard", "Muscle Beach", "Skid Row"]>>
-<<set setup.ArcologyNamesChattelReligionist = ["Heaven", "The Light", "Heaven on Earth"]>>
-<<set setup.ArcologyNamesRomanRevivalist = ["Elysian Fields", "Carthago Nova", "Nova Roma", "Neapolis", "Capua", "Ostia", "Salernum", "The City of the Seven Hills"]>>
-<<set setup.ArcologyNamesAztecRevivalist = ["The Halls of Montezuma", "Aztlan"]>>
-<<set setup.ArcologyNamesEgyptianRevivalist = ["Thebes", "Memphis", "Alexandria"]>>
-<<set setup.ArcologyNamesEdoRevivalist = ["Onogoro", "Kokyo", "Tengoku", "Takama-ga-hara", "New Kyoto", "The Imperial Palace", "New Tokyo"]>>
-<<set setup.ArcologyNamesArabianRevivalist = ["Jannah", "Madinat al-Salam", "Madinat al-Hareer", "Madinat al-Zahra", "Madinat al-Yasmin", "Bayt al-Hikma", "Baghdad", "Alhambra", "Samarra"]>>
-<<set setup.ArcologyNamesChineseRevivalist = ["Yinfu", "Huangquan", "Jiuquan", "Youming", "Huokang", "Mingfu", "Jin Shan", "Qi Lin", "Xin Hua", "Feng Huang", "The Middle Kingdom", "The Forbidden Palace"]>>
+<<set setup.ArcologyNamesPaternalist = ["Asylum", "Glory", "Haven", "New Springfield", "Sanctuary", "Sanctum", "The Sanctuary"]>>
+<<set setup.ArcologyNamesDegradationist = ["Golgotha", "Hell", "Misery", "The Tower"]>>
+<<set setup.ArcologyNamesBodyPurist = ["Elysium", "New Eden", "Purity", "The Ark", "The Repository", "Walden"]>>
+<<set setup.ArcologyNamesTransformationFetishist = ["Bimboland", "Silicone Valley", "The Dollhouse", "The Hospital"]>>
+<<set setup.ArcologyNamesYouthPreferentialist = ["Dick U.", "Fuck High", "Sex College", "Sorority Row", "Sunnyside"]>>
+<<set setup.ArcologyNamesMaturityPreferentialist = ["Maturity", "MILF Heights", "MILFtown", "Park Avenue Tower", "Shady Acres"]>>
+<<set setup.ArcologyNamesSlimnessEnthusiast = ["Skinny Bop", "Slim City", "The Island", "Upskirt", "Virginland"]>>
+<<set setup.ArcologyNamesAssetExpansionist = ["Boobs Tower", "The Bouncy Castle", "The Expanse", "The Mounds", "Twin Peaks"]>>
+<<set setup.ArcologyNamesPastoralist = ["Abundance", "Bounty", "Cornucopia", "God's Country", "Greener Pastures", "Pasturelands", "Plenty", "The Ranch"]>>
+<<set setup.ArcologyNamesPhysicalIdealist = ["Midgard", "Muscle Beach", "Skid Row", "Themyscira", "Valhalla"]>>
+<<set setup.ArcologyNamesChattelReligionist = ["Eden", "Heaven on Earth", "Heaven", "The Light"]>>
+<<set setup.ArcologyNamesRomanRevivalist = ["Capua", "Carthago Nova", "Elysian Fields", "Neapolis", "Nova Roma", "Ostia", "Salernum", "The City of the Seven Hills"]>>
+<<set setup.ArcologyNamesAztecRevivalist = ["Aztlan", "Chicomoztoc", "Omeyocan", "The Halls of Montezuma"]>>
+<<set setup.ArcologyNamesEgyptianRevivalist = ["Alexandria", "Avaris", "Bubastis", "Heliopolis", "Memphis", "Mendes", "Rosetta", "Sais", "Tanis", "Thebes"]>>
+<<set setup.ArcologyNamesEdoRevivalist = ["Edo", "Kasagiyama", "Kokyo", "New Kyoto", "New Tokyo", "Onogoro", "Takama-ga-hara", "Tengoku", "The Imperial Palace"]>>
+<<set setup.ArcologyNamesArabianRevivalist = ["Alhambra", "Baghdad", "Bayt al-Hikma", "Jannah", "Kufa", "Madinat al-Hareer", "Madinat al-Salam", "Madinat al-Yasmin", "Madinat al-Zahra", "Medina", "Samarra"]>>
+<<set setup.ArcologyNamesChineseRevivalist = ["Feng Huang", "Fusang", "Huangquan", "Huokang", "Jin Shan", "Jiuquan", "Mingfu", "Qi Lin", "The Forbidden Palace", "The Middle Kingdom", "Xin Hua", "Yinfu", "Youdu", "Youming"]>>
 
 /* pregmod FS */
-<<set setup.ArcologyNamesEugenics = ["Perfection", "Ascension", "Second Chance"]>>
-<<set setup.ArcologyNamesRepopulationist = ["Hope", "The Womb", "Holders of the Future", "Future", "Haven of the Pregnant", "Sacred Womb", "Glorious Mother"]>>
-<<set setup.ArcologyNamesHedonisticDecadence = ["Sloth", "Gluttony", "New Wisconsin", "Indulgence", "Stuffedtopia", "Plumpland", "Decadence", "All You Can Eat"]>>
-<<set setup.ArcologyNamesCummunism = ["Cumstantine", "Mother Cumtry", "Crusty Cummies", "Cummunist Russwhore", "Jizzington upon Wank", "Arscrotzka", "Free Slave Central", "Da Cumrade", "Cumstantinople"]>>
-<<set setup.ArcologyNamesIncestFetishist = ["Oedipal City", "Oeditropolis", "Sib City", "Incestral Home", "Family Fortunes", "Familial Embrace", "Pure Blood"]>>
+<<set setup.ArcologyNamesEugenics = ["Ascension", "Perfection", "Second Chance"]>>
+<<set setup.ArcologyNamesRepopulationist = ["Future", "Glorious Mother", "Haven of the Pregnant", "Holders of the Future", "Hope", "Sacred Womb", "The Womb"]>>
+<<set setup.ArcologyNamesHedonisticDecadence = ["All You Can Eat", "Decadence", "Gluttony", "Indulgence", "New Wisconsin", "Plumpland", "Sloth", "Stuffedtopia"]>>
+<<set setup.ArcologyNamesCummunism = ["Arscrotzka", "Crusty Cummies", "Cummunist Russwhore", "Cumstantine", "Cumstantinople", "Da Cumrade", "Free Slave Central", "Jizzington upon Wank", "Mother Cumtry"]>>
+<<set setup.ArcologyNamesIncestFetishist = ["Familial Embrace", "Family Fortunes", "Incestral Home", "Oedipal City", "Oeditropolis", "Pure Blood", "Sib City"]>>
 
 
-<<set setup.badWords = ["fuck", "shit", "ass", "cock", "piss", "dick", "slut", "cum", "whore", "butt", "boob", "cunt", "cunny", "pussy", "junk", "trash", "slave"]>>
+<<set setup.badWords = ["ass", "bitch", "boob", "butt", "cock", "cum", "cunny", "cunt", "dick", "fuck", "junk", "piss", "pussy", "shit", "slave", "slut", "trash", "whore"]>>
 
-<<set setup.badNames = ["Dipshit", "Asshole", "Cunt", "Whore", "Dick", "Pussy", "Slaver", "Assfucker", "Sodomite", "Rapist", "Despoiler", "Ruiner", "Ass", "Fucker", "Trash", "Traitor", "Cocksucker", "Dicksucker", "Ass Kisser", "Ass Licker", "Bitch", "Jerk", "Fuckface", "Prick", "Creep", "Retard", "Dumbass", "DumbFuck", "Douchebag"]>>
+<<set setup.badNames = ["Ass Kisser", "Ass Licker", "Ass", "Assfucker", "Asshole", "Bitch", "Cocksucker", "Creep", "Cunt", "Despoiler", "Dick", "Dicksucker", "Dipshit", "Douchebag", "Dumbass", "DumbFuck", "Fucker", "Fuckface", "Fuckhead", "Jerk", "Prick", "Pussy", "Rapist", "Retard", "Ruiner", "Slaver", "Sodomite", "Traitor", "Trash", "Whore"]>>
 
 <<set setup.drugs = [{name: "No default setting", value: "no default setting"}, {name: "None", value: "none"}, {name: "Psychosuppressants", value: "psychosuppressants"}, {name: "Steroids", value: "steroids"}, {name: "Natural hormone enhancers", value: "hormone enhancers"}, {name: "Hormone blockers", value: "hormone blockers"}, {name: "Growth Stimulants", value: "growth stimulants", rs: "growth"}, {name: "Sag-B-gone", value: "sag-B-gone", rs: "nosag"}, {name: "Female hormone injections", value: "female hormone injections", rs: "pubHorm"}, {name: "Male hormone injections", value: "male hormone injections", rs: "pubHorm"}, {name: "Anti-aging cream", value: "anti-aging cream", fs: "youth"}]>>
 <<set setup.harshCollars = [{name: "Tight steel", value: "tight steel"}, {name: "Cruel retirement counter", value: "cruel retirement counter", fs: "seeage"}, {name: "Uncomfortable leather", value: "uncomfortable leather"}, {name: "Pregnancy biometrics", value: "preg biometrics"}, {name: "Shock punishment", value: "shock punishment"}, {name: "Dildo gag", value: "dildo gag"}, {name: "Massive dildo gag", value: "massive dildo gag", rs: "buyGag"}, {name: "Ball gag", value: "ball gag"}, {name: "Bit gag", value: "bit gag"}, {name: "Neck corset", value: "neck corset"}]>>
diff --git a/src/init/storyInit.tw b/src/init/storyInit.tw
index 9ee3b2735ef8aedbbad196b544e923d5cb2c275f..7c57c70ae38e169ef4f3600db4e79bd694b25eb3 100644
--- a/src/init/storyInit.tw
+++ b/src/init/storyInit.tw
@@ -15,8 +15,8 @@ You should have received a copy of the GNU General Public License along with thi
 <<set $returnTo = "init", $nextButton = "Continue", $nextLink = "Alpha disclaimer">>
 
 <<unset $releaseID>>
-<<set $ver = "0.10.7", $releaseID = 1021>>
-<<if ndef $releaseID>><<set $releaseID = 1021>><</if>>
+<<set $ver = "0.10.7", $releaseID = 1022>>
+<<if ndef $releaseID>><<set $releaseID = 1022>><</if>>
 
 /* This needs to be broken down into individual files that can be added to StoryInit instead. */
 
@@ -857,8 +857,10 @@ DairyRestraintsSetting($dairyRestraintsSetting)
 <<set $dietXXY = 0>>
 <<set $dietCleanse = 0>>
 <<set $cumProDiet = 0>>
+<<set $dietFertility = 0>>
 <<set $curativeUpgrade = 0>>
 <<set $growthStim = 0>>
+<<set $reproductionFormula = 0>>
 <<set $aphrodisiacUpgrade = 0>>
 <<set $aphrodisiacUpgradeRefine = 0>>
 <<set $healthyDrugsUpgrade = 0>>
@@ -1222,7 +1224,7 @@ FertilityAge($fertilityAge)
 /* FacilitySupport */
 <<set $Lieutenantcolonel = 0>>						/* Has a slave been selected to be a Lieutenant colonel? */
 <<set $FacilitySupportSlaves = 0>>					/* How many slaves are assiting in the facility support? */
-<<set $FacilitySupportfficiency = 0>>				/* How efficent is the support facility? */
+<<set $FacilitySupportEfficiency = 0>>				/* How efficient is the support facility? */
 <<set $FacilitySupportUpgrade = 0>>					/* How many support facility upgrades has the play brought? */
 <<set $FacilitySupportCapacity = 5>>					/* How many slaves can the support facility house? */
 
diff --git a/src/interaction/researchLab.tw b/src/interaction/researchLab.tw
index 1e5938c963712a03d98b86c4c181a1e5612e688e..8c7ac07f77d11a5b000eb32834ec7e37d34ec03e 100644
--- a/src/interaction/researchLab.tw
+++ b/src/interaction/researchLab.tw
@@ -194,7 +194,7 @@
 <<case 1>>
 	<<set $temp = 0>>
 	<<set $nextLink = "Research Lab">>
-	//You contact representative of one of the larger cybernetics companies and inquired about their products.<br>&nbsp;This is what they have to offer://<br><br>
+	//You contact a representative of one of the larger cybernetics companies and inquire about their products.<br>&nbsp;This is what they have to offer://<br><br>
 
 	__Hardware__<br>
 	[[Basic prosthetics interface|Research Lab][$temp = 1, $cash -= 25000, $stockpile.basicPLimbInterface += 1]] //Costs <<print cashFormat(25000)>>. Currently have: $stockpile.basicPLimbInterface//<br>
diff --git a/src/js/SFJS.tw b/src/js/SFJS.tw
index d016e96b98ec6fb448bb8e1061c6bcde578d654a..cd39e0634a773ca1c01d4eb27fd50959dfb5aa38 100644
--- a/src/js/SFJS.tw
+++ b/src/js/SFJS.tw
@@ -13,3 +13,29 @@ window.simpleWorldEconomyCheck = function() {
 	}
 }
 
+window.HSM = function() {
+	if (State.variables.PC.hacking <= -100)
+		return 1.5;
+	else if (State.variables.PC.hacking <= -75)
+		return 1.35;
+	else if (State.variables.PC.hacking <= -50)
+		return 1.25;
+	else if (State.variables.PC.hacking <= -25)
+		return 1.15;
+	else if (State.variables.PC.hacking < 0)
+		return 1.10;
+	else if (State.variables.PC.hacking === 0)
+		return 1;
+	else if (State.variables.PC.hacking <= 10)
+		return .97;
+	else if (State.variables.PC.hacking <= 25)
+		return .95;
+	else if (State.variables.PC.hacking <= 50)
+		return .90;
+	else if (State.variables.PC.hacking <= 75)
+		return .85;
+	else if (State.variables.PC.hacking < 100)
+		return .80;
+	else if (State.variables.PC.hacking >= 100)
+		return .75;
+	}
\ No newline at end of file
diff --git a/src/js/assayJS.tw b/src/js/assayJS.tw
index fbffa54784b166f9256b7b1cfe2165536e7893a4..c89035b3ab3dbe1bd53cf4d04a55ac339ad48509 100644
--- a/src/js/assayJS.tw
+++ b/src/js/assayJS.tw
@@ -189,4 +189,28 @@ window.slimPass = function(slave) {
 	}
 	
 	return slimPass;
-}
\ No newline at end of file
+}
+
+window.sameAssignmentP = function sameAssignmentP(A, B) {
+	return A.assignment === B.assignment
+}
+
+window.haveRelationP = function haveRelationP(slave, target) {
+	return slave.relationTarget === target.ID
+}
+
+window.haveRelationshipP = function haveRelationshipP(slave, target) {
+	return slave.relationshipTarget === target.ID
+}
+
+window.isRivalP = function isRivalP(slave, target) {
+	return slave.rivalryTarget === target.ID
+}
+
+window.supremeRaceP = function supremeRaceP(slave) {
+	return State.variables.arcologies[0].FSSupremacistRace === slave.race
+}
+
+window.inferiorRaceP = function inferiorRaceP(slave) {
+	return State.variables.arcologies[0].FSSubjugationistRace === slave.race
+}
diff --git a/src/js/clothingSelectionJS.tw b/src/js/clothingSelectionJS.tw
index d7b7027b160e1041d44b986db7c13a498a7bc48e..ee39543f5b90f8ee60f45ef2e248a26f4277d095 100644
--- a/src/js/clothingSelectionJS.tw
+++ b/src/js/clothingSelectionJS.tw
@@ -74,7 +74,7 @@ window.todaysOutfit = function(slave) {
 				break;
 			case 'genderFund':
 				if(jsRandom(1,2) == 1) {
-					selection = {text: "she commonly sees cheerleaders around and instinctually follows along.", clothes: jsEither('a cheerleader outfit', 'a schoolgirl outfit')};
+					selection = {text: "she commonly sees cheerleaders around and instinctually follows along.", clothes: jsEither(['a cheerleader outfit', 'a schoolgirl outfit'])};
 				} else {
 					selection = {text: "she commonly sees bunnies around and instinctually follows along.", clothes: "a bunny outfit"};
 				}
@@ -83,22 +83,22 @@ window.todaysOutfit = function(slave) {
 				selection = {text: "she commonly sees others wearing clothing and is drawn to doing so herself.", clothes: "conservative clothing"};
 				break;
 			case 'degradationist':
-				selection = {text: "she commonly sees others wearing chains and is drawn to doing so herself.", clothes: jsEither('chains', 'uncomfortable straps', 'shibari ropes')};
+				selection = {text: "she commonly sees others wearing chains and is drawn to doing so herself.", clothes: jsEither(['chains', 'uncomfortable straps', 'shibari ropes'])};
 				break;
 			case 'mature':
-				selection = {text: "she commonly sees others wearing suits and is drawn to doing so herself.", clothes: jsEither('slutty business attire', 'a nice maid outfit', 'a military uniform', 'nice business attire')};
+				selection = {text: "she commonly sees others wearing suits and is drawn to doing so herself.", clothes: jsEither(['slutty business attire', 'a nice maid outfit', 'a military uniform', 'nice business attire'])};
 				break;
 			case 'youth':
-				selection = {text: "she commonly sees schoolgirls around and instinctually follows along.", clothes: jsEither('a schoolgirl outfit', 'a cheerleader outfit')};
+				selection = {text: "she commonly sees schoolgirls around and instinctually follows along.", clothes: jsEither(['a schoolgirl outfit', 'a cheerleader outfit'])};
 				break;
 			case 'physicalIdealist':
-				selection = {text: "she commonly sees naked girls around and seldom realizes they are coated in oil.", clothes: jsEither('body oil', 'no clothing', 'no clothing')};
+				selection = {text: "she commonly sees naked girls around and seldom realizes they are coated in oil.", clothes: jsEither(['body oil', 'no clothing', 'no clothing'])};
 				break;
 			case 'pastoralist':
 				selection = {text: "she commonly sees cowgirls around and instinctually follows along.", clothes: "Western clothing"};
 				break;
 			case 'bodyPurist':
-				selection = {text: "she commonly sees others wearing tight, form-fitting clothes and is drawn to doing so herself.", clothes: jsEither('a leotard', 'a string bikini', 'a slave gown', 'a comfortable bodysuit', 'restrictive latex', 'clubslut netting', 'a leotard', 'a halter top dress')};
+				selection = {text: "she commonly sees others wearing tight, form-fitting clothes and is drawn to doing so herself.", clothes: jsEither(['a leotard', 'a string bikini', 'a slave gown', 'a comfortable bodysuit', 'restrictive latex', 'clubslut netting', 'a leotard', 'a halter top dress'])};
 				break;
 			default:
 				selection = {text: "she chooses to put on underwear, the reasons lost to her, and moves on.", clothes: "attractive lingerie"};
@@ -597,9 +597,9 @@ window.todaysShoes = function(slave) {
 	
 	if(slave.fetish == 'mindbroken') {
 		if(slave.amp != 1 && slave.heels == 1) {
-			shoes.push({text: "She finds she can inexplicably walk if she wears heels; a daily lesson for her, as she forgets shortly after leaving.", shoes: jsEither("heels", "extreme heels", "boots")});
+			shoes.push({text: "She finds she can inexplicably walk if she wears heels; a daily lesson for her, as she forgets shortly after leaving.", shoes: jsEither(["heels", "extreme heels", "boots"])});
 		}
-		shoes.push({text: "She vaguely remembers putting things on her feet, so she does.", shoes: jsEither("heels", "extreme heels", "boots", "flats")});
+		shoes.push({text: "She vaguely remembers putting things on her feet, so she does.", shoes: jsEither(["heels", "extreme heels", "boots", "flats"])});
 		shoes.push({text: "She entered without shoes, and will leave the same.", shoes: "none"});
 	} else if(slave.devotion <= 20) {
 		if(slave.heels == 0) {
@@ -675,10 +675,10 @@ window.todaysCorset = function(slave) {
 			if(slave.weight > 130) {
 				belly.push({text: "She notices the fake bellies; since every girl she has ever met has a rounded middle, it's only natural she is compelled to wear one. She struggles to fit it around her huge gut, only stopping when another slave takes it away from her so she moves on and stops blocking the wardrobe with her fat ass.", bellyAccessory: "none"});
 			} else {
-				belly.push({text: "She notices the fake bellies; since every girl she has ever met has a rounded middle, it's only natural she is compelled to wear one.", bellyAccessory: jsEither("a small empathy belly", "a medium empathy belly", "a large empathy belly", "a huge empathy belly")});
+				belly.push({text: "She notices the fake bellies; since every girl she has ever met has a rounded middle, it's only natural she is compelled to wear one.", bellyAccessory: jsEither(["a small empathy belly", "a medium empathy belly", "a large empathy belly", "a huge empathy belly"])});
 			}
 		} else {
-			belly.push({text: "", bellyAccessory: slave.bellyAccessory}); /*compatiblity for no output, will likely get deprecated in the future as content is added*/
+			belly.push({text: "", bellyAccessory: slave.bellyAccessory}); /*compatibility for no output, will likely get deprecated in the future as content is added*/
 		}
 	} else if(slave.devotion <= 20) {
 		
@@ -687,7 +687,7 @@ window.todaysCorset = function(slave) {
 			if(slave.weight > 130) {
 				belly.push({text: "struggles to fit a fake pregnant belly around her gut before giving up and hoping she can pass as fecund,", bellyAccessory: "none"});
 			} else {
-				belly.push({text: "straps on a fake pregnant belly to fit in with all the other pregnant girls,", bellyAccessory: jsEither("a small empathy belly", "a medium empathy belly", "a large empathy belly", "a huge empathy belly")});
+				belly.push({text: "straps on a fake pregnant belly to fit in with all the other pregnant girls,", bellyAccessory: jsEither(["a small empathy belly", "a medium empathy belly", "a large empathy belly", "a huge empathy belly"])});
 			}
 		} else if(slave.belly < 1500 && slave.fetish == "pregnancy" && isItemAccessible("a small empathy belly") && slave.sexualFlaw != "breeder" && slave.weight <= 130) {
 			if(slave.fetishStrength <= 30) {
@@ -704,7 +704,7 @@ window.todaysCorset = function(slave) {
 		} else if(empathyBellies.includes(slave.bellyAccessory) && slave.sexualFlaw == "breeder") {
 			belly.push({text: "pulls her fake belly off, disgusted by it,", bellyAccessory: "none"});
 		} else {
-			belly.push({text: "", bellyAccessory: slave.bellyAccessory}); /*compatiblity for no output, will likely get deprecated in the future as content is added*/
+			belly.push({text: "", bellyAccessory: slave.bellyAccessory}); /*compatibility for no output, will likely get deprecated in the future as content is added*/
 		}
 	}
 	return jsEither(belly);
diff --git a/src/js/economyJS.tw b/src/js/economyJS.tw
index 325af134220356c5932c391b7dd55912a8aaf211..6d9ddd969221a09066c9dc76fc88a032ded56075 100644
--- a/src/js/economyJS.tw
+++ b/src/js/economyJS.tw
@@ -443,7 +443,7 @@ window.getSlaveCost = function(s) {
 			cost += foodCost * s.pregType * (s.pregControl === 'speed up' ? 3 : 1);
 		}
 	}
-	if(s.diet === 'XX' || s.diet === 'XY') {
+	if(s.diet === 'XX' || s.diet === 'XY' || s.diet === 'fertility') {
 		cost += 25;
 	} else if(s.diet === 'cleansing') {
 		cost += 50;
diff --git a/src/js/eventSelectionJS.tw b/src/js/eventSelectionJS.tw
index 4a6ee86b9310bd5a71aa41fcc411cd2b9f9f229e..d592884fd60d415ae4399e772ab98551018fd065 100644
--- a/src/js/eventSelectionJS.tw
+++ b/src/js/eventSelectionJS.tw
@@ -216,22 +216,21 @@ if(eventSlave.fetish != "mindbroken") {
 				}
 			}
 
-			if(State.variables.RERelationshipSlave != 0) {
-				if(eventSlave.relationship > 3) {
-					if(State.variables.RERelationshipSlave.devotion > 20) {
-						if(canWalk(State.variables.RERelationshipSlave)) {
-							if(canTalk(State.variables.RERelationshipSlave)) {
-								if(eventSlave.devotion > 50) {
-									if(eventSlave.trust > 50) {
-										if(eventSlave.speechRules != "restrictive") {
-											State.variables.RETSevent.push("date please");
-										}
-										if(State.variables.RERelationshipSlave.anus != 0) {
-											if(State.variables.RERelationshipSlave.dick != 1) {
-												if(State.variables.RERelationshipSlave.dick == 0 || canAchieveErection(State.variables.RERelationshipSlave)) {
-													if(State.variables.RERelationshipSlave.fetish == "dom" || State.variables.RERelationshipSlave.fetish == "sadist") {
-														State.variables.RETSevent.push("top exhaustion");
-													}
+			if(eventSlave.relationship > 3) {
+				var relationshipSlave = State.variables.slaves.find(function(s) { return s.ID == eventSlave.relationshipTarget; });
+				if(relationshipSlave.devotion > 20) {
+					if(canWalk(relationshipSlave)) {
+						if(canTalk(relationshipSlave)) {
+							if(eventSlave.devotion > 50) {
+								if(eventSlave.trust > 50) {
+									if(eventSlave.speechRules != "restrictive") {
+										State.variables.RETSevent.push("date please");
+									}
+									if(relationshipSlave.anus != 0) {
+										if(relationshipSlave.dick != 1) {
+											if(relationshipSlave.dick == 0 || canAchieveErection(relationshipSlave)) {
+												if(relationshipSlave.fetish == "dom" || relationshipSlave.fetish == "sadist") {
+													State.variables.RETSevent.push("top exhaustion");
 												}
 											}
 										}
@@ -1577,7 +1576,9 @@ if(eventSlave.fetish != "mindbroken") {
 
 	if(eventSlave.aphrodisiacs > 1 || eventSlave.inflationType == "aphrodisiac") {
 		if(eventSlave.speechRules == "restrictive" && eventSlave.releaseRules !== "permissive") {
-			State.variables.RESSevent.push("extreme aphrodisiacs");
+			if(eventSlave.amp != 1) {
+				State.variables.RESSevent.push("extreme aphrodisiacs");
+			}
 		}
 	}
 
@@ -1921,19 +1922,18 @@ if(eventSlave.fetish != "mindbroken") {
 				}
 			}
 
-			if(State.variables.RERelationshipSlave != 0) {
-				if(eventSlave.relationship > 3) {
-					if(State.variables.RERelationshipSlave.devotion > 20) {
-						if(canWalk(State.variables.RERelationshipSlave)) {
-							if(canTalk(State.variables.RERelationshipSlave)) {
-								if(eventSlave.devotion > 50) {
-									if(eventSlave.trust > 50) {
-										if(State.variables.RERelationshipSlave.anus != 0) {
-											if(State.variables.RERelationshipSlave.dick != 1) {
-												if(State.variables.RERelationshipSlave.dick == 0 || canAchieveErection(State.variables.RERelationshipSlave)) {
-													if(State.variables.RERelationshipSlave.fetish == "dom" || State.variables.RERelationshipSlave.fetish == "sadist") {
-														State.variables.RETSevent.push("top exhaustion");
-													}
+			if(eventSlave.relationship > 3) {
+				var relationshipSlave = State.variables.slaves.find(function(s) { return s.ID == eventSlave.relationshipTarget; });
+				if(relationshipSlave.devotion > 20) {
+					if(canWalk(relationshipSlave)) {
+						if(canTalk(relationshipSlave)) {
+							if(eventSlave.devotion > 50) {
+								if(eventSlave.trust > 50) {
+									if(relationshipSlave.anus != 0) {
+										if(relationshipSlave.dick != 1) {
+											if(relationshipSlave.dick == 0 || canAchieveErection(relationshipSlave)) {
+												if(relationshipSlave.fetish == "dom" || relationshipSlave.fetish == "sadist") {
+													State.variables.RETSevent.push("top exhaustion");
 												}
 											}
 										}
@@ -2765,7 +2765,9 @@ if(eventSlave.fetish != "mindbroken") {
 
 	if(eventSlave.aphrodisiacs > 1 || eventSlave.inflationType == "aphrodisiac") {
 		if(eventSlave.speechRules == "restrictive" && eventSlave.releaseRules !== "permissive") {
-			State.variables.RESSevent.push("extreme aphrodisiacs");
+			if(eventSlave.amp != 1) {
+				State.variables.RESSevent.push("extreme aphrodisiacs");
+			}
 		}
 	}
 
diff --git a/src/js/extendedFamilyModeJS.tw b/src/js/extendedFamilyModeJS.tw
index 917565f32cd89f3ed6a33caf6a1598d92462c63f..2075e0b3b4491a44f8a3696b001d5ddf502cc5bf 100644
--- a/src/js/extendedFamilyModeJS.tw
+++ b/src/js/extendedFamilyModeJS.tw
@@ -2,6 +2,18 @@
 
 /* see documentation for details /devNotes/Extended Family Mode Explained.txt */
 
+window.isMotherP = function isMotherP(daughter, mother) {
+	return daughter.mother === mother.ID
+}
+
+window.isFatherP = function isFatherP(daughter, father) {
+	return daughter.father === father.ID
+}
+
+window.isParentP = function isParentP(daughter, parent) {
+	return isMotherP(daughter,parent) || isFatherP(daughter,parent)
+}
+
 window.sameDad = function(slave1, slave2){
 	if ((slave1.father == slave2.father) && (slave1.father != 0 && slave1.father != -2)) {
 		return true;
diff --git a/src/js/fresult.tw b/src/js/fresult.tw
new file mode 100644
index 0000000000000000000000000000000000000000..4eeb8a9e3c4cee5d054e4935798a991e99c380f6
--- /dev/null
+++ b/src/js/fresult.tw
@@ -0,0 +1,274 @@
+:: FResult [script]
+
+// this is a port of the FResult widget
+// it has been broken up into several functions, because it grew too long
+// it has been wrapped in a closure so as not to polute the global namespace
+// and so that nested functions are only evaluated once
+
+window.FResult = (function() {
+	"use strict";
+	// we can't initialise our global variables on load, because SugarCube.State isn't initialised
+	// instead, declare them and initialise on run time
+	let V, incest_bonus;
+	function FResult(slave) {
+		V = State.variables;
+		incest_bonus = V.arcologies[0].FSEgyptianRevivalist > 20 || V.arcologies[0].FSEgyptianRevivalistIncestPolicy === 1;
+		
+		calcUseWeights(slave);
+		if (!slave.fuckdoll)
+			calcNotFuckdoll(slave);
+		else
+			V.FResult += slave.fuckdoll/10;
+		
+		V.FResult += Math.max(0, slave.aphrodisiacs) * 2;
+
+		if (slave.inflationType === "aphrodisiac")
+			V.FResult += slave.inflation*4;
+
+		if (slave.lactation > 0)
+			V.FResult += 1;
+
+		if (V.seeAge === 1)
+			calcAge(slave);
+		if (slave.fetish === "mindbroken")
+			V.FResult = Math.trunc(V.FResult*0.4);
+		else
+			V.FResult = Math.trunc(V.FResult*0.7);
+
+		if (slave.pregWeek < 0)
+			V.FResult -= Math.trunc(V.FResult*slave.pregWeek/10); // reduced the most just after birth
+
+		calcAmputation(slave);
+
+		if (V.arcologies[0].FSHedonisticDecadence > 20)
+			calcHedonismWeight(slave);
+		if (V.FResult < 2) {
+			if (supremeRaceP(slave))
+				V.FResult = 0;
+			else
+				V.FResult = 2;
+		}
+	}
+
+	function calcUseWeights(slave) {
+		V.FResult = (3 - slave.anus)+(slave.muscles/30);
+		if (slave.muscles < -95)
+			V.FResult -= 5;
+		else if (slave.muscle < -30)
+			V.FResult -= 2;
+
+		V.seed = V.oralUseWeight + V.vaginalUseWeight + V.analUseWeight;
+		if (V.seed <= 0) return;
+
+		V.FResult += (6+slave.tonguePiercing) * (V.oralUseWeight/V.seed) * (slave.oralSkill/30);
+		if (slave.sexualFlaw === "cum addict")
+			V.FResult += (V.oralUseWeight/V.seed) * (slave.oralSkill/30);
+		if (canDoVaginal(slave)) {
+			V.FResult += 6 * (V.vaginalUseWeight/V.seed) * (slave.vaginalSkill/30);
+			V.FResult += (3 - slave.vagina);
+			V.FResult += slave.vaginaLube;
+		}
+		if (canDoAnal(slave)) {
+			V.FResult += 6 * (V.analUseWeight/V.seed) * (slave.analSkill/30);
+			if (slave.sexualFlaw === "anal addict")
+				V.FResult += (V.analUseWeight/V.seed) * (slave.analSkill/30);
+			if (slave.inflationType === "aphrodisiac")
+				V.FResult += (V.analUseWeight/V.seed) * (slave.inflation * 3);
+		}
+	}
+
+	function calcWorksWithRelatives(slave) {
+		V.slaves.forEach(islave => {
+			if (isParentP(slave, islave) && sameAssignmentP(slave, islave)) {
+				V.FResult += 1;
+				if (incest_bonus) V.FResult += 1;
+			}
+			if (areSisters(slave, islave) > 0 && sameAssignmentP(slave, islave)) {
+				V.FResult += 1;
+				if (incest_bonus) V.FResult += 1;
+			}
+		});
+	}
+
+	function calcWorksWithRelativesVanilla(slave) {
+		const fre = V.slaves.findIndex(s => {
+			return haveRelationP(slave, s) && sameAssignmentP(slave, s);
+		});
+		if (fre !== -1) {
+			V.FResult += 2;
+			if (incest_bonus) V.FResult += 2;
+		}
+	}
+
+	function calcWorksWithRelationship(slave) {
+		const fre = V.slaves.findIndex(s => {
+			return haveRelationshipP(slave, s) && sameAssignmentP(slave, s);
+		});
+		if (fre !== -1) V.FResult += 1;
+	}
+	
+	function calcWorksWithRival(slave) {
+		const en = V.slaves.findIndex(s => {
+			return isRivalP(slave, s) && sameAssignmentP(slave, s);
+		});
+		if (en !== -1) V.FResult -= 1;
+	}
+
+	function calcHInjectionsDiet(slave) {
+		if (slave.drugs === "male hormone injections" || slave.drugs === "female hormone injections")
+			V.FResult -= 10;
+		if (slave.diet === "XXY")
+			V.FResult += 2;
+		else if (slave.diet === "XY" || slave.diet === "XX")
+			V.FResult += 1;
+		else if (slave.diet === "cum production")
+			V.FResult += 1;
+		else if (slave.diet === "fertility")
+			V.FResult += 1;
+	}
+	function calcPreg(slave) {
+		if (V.arcologies[0].FSRepopulationFocus > 20) {
+			if (slave.preg > 10) V.FResult += 2;
+			else V.FResult -= 2;
+		} else if (V.arcologies[0].FSRestart > 20) {
+			if (slave.bellyPreg >= 500 && slave.breedingMark === 1)
+				V.FResult += 1;
+			else if (slave.preg > 10)
+				V.FResult -= 10;
+			else
+				V.FResult += 0;
+		}
+	}
+
+	function calcRace(slave) {
+		if (V.arcologies[0].FSSupremacist !== "unset" && supremeRaceP(slave))
+			V.FResult -= (V.arcologies[0].FSSupremacist/5) + (V.arcologies[0].FSSupremacistLawME*10);
+		if (V.arcologies[0].FSSubjugationist !== "unset" && inferiorRaceP(slave))
+			V.FResult += (V.arcologies[0].FSSubjugationist/10) + (V.arcologies[0].FSSubjugationistLawME);
+	}
+
+	function calcSexAttributes(slave) {
+		if (slave.clitPiercing > 2) V.FResult += 1;
+		if (slave.fetishKnown === 1 && slave.fetishStrength > 60 && slave.fetish != "none")
+			V.FResult += slave.fetishStrength/5;
+		
+		if (slave.attrKnown === 1) {
+			V.FResult += Math.trunc(slave.attrXX/20);
+			V.FResult += Math.trunc(slave.attrXY/20);
+			if (slave.energy > 95) V.FResult += 3;
+			else if (slave.energy > 80) V.FResult += 2;
+			else if (slave.energy > 60) V.FResult += 1;
+			else if (slave.energy <= 20) V.FResult -= 2;
+			else if (slave.energy <= 40) V.FResult -= 1;
+		}
+		if (slave.sexualFlaw !== "none") V.FResult -= 2;
+		if (slave.sexualQuirk !== "none") V.FResult += 2;
+		if (slave.behavioralFlaw !== "none") V.FResult -= 2;
+		if (slave.behavioralQuirk !== "none") V.FResult += 2;
+	}
+
+	function calcCareer(slave) {
+		if (setup.whoreCareers.includes(slave.career))
+			V.FResult += 1;
+		else if (slave.oralCount + slave.analCount + slave.vaginalCount + slave.mammaryCount + slave.penetrativeCount > 1000)
+			V.FResult += 1;
+	}
+
+	function calcSight(slave) {
+		if (!canSee(slave)) V.FResult -= 3;
+		else if (slave.eyes <= -1) {
+			if (slave.eyewear !== "corrective glasses" && slave.eyewear !== "corrective contacts")
+				V.FResult -= 1;
+		} else if (slave.eyewear === "blurring glasses")
+			V.FResult -= 1;
+		else if (slave.eyewear === "blurring contacts")
+			V.FResult -= 1;
+	}
+
+	function calcEgyptianBonus(slave) {
+		if (V.racialVarieties === undefined) V.racialVarieties = [];
+		V.seed = 0;
+		V.racialVarieties.forEach(race => {
+			if (slave.race === race) V.seed = 1;
+		});
+		if (V.seed === 0)
+			V.racialVarieties.push(slave.race);
+	}
+
+	function calcYouthBonus(slave) {
+		if (slave.visualAge < 30) {
+			if (slave.actualAge > 30)
+				V.FResult += 5; // experienced for her apparent age
+			if (slave.physicalAge > 30)
+				V.FResult -= slave.physicalAge/2; // too old :(
+		}
+	}
+
+	function calcMatureBonus(slave) {
+		if (slave.visualAge >= 30 && slave.actualAge >= 30 && slave.physicalAge < slave.visualAge)
+			V.FResult += Math.min((slave.physicalAge - slave.visualAge) * 2, 20); // looks and acts mature, but has a body that just won't quit
+	}
+
+	function calcNotFuckdoll(slave) {
+		if (V.familyTesting === 1 && totalRelatives(slave) > 0)
+			calcWorksWithRelatives(slave);
+		else if(!V.familyTesting && slave.relation !==0)
+			calcWorksWithRelativesVanilla(slave);
+		if (slave.relationship > 0) calcWorksWithRelationship(slave);
+		if (slave.rivalry !== 0) calcWorksWithRival(slave);
+		calcHInjectionsDiet(slave);
+		calcPreg(slave);
+		calcRace(slave);
+		calcSexAttributes(slave);
+		calcCareer(slave);
+		calcSight(slave);
+		if (V.arcologies[0].FSEgyptianRevivalist !== "unset")
+			calcEgyptianBonus(slave);
+		if (V.arcologies[0].FSYouthPreferentialist !== "unset")
+			calcYouthBonus(slave);
+		else if (V.arcologies[0].FSMaturityPreferentialist !== "unset")
+			calcMatureBonus(slave);
+	}
+	
+	function calcAge(slave) {
+		if ((V.arcologies[0].FSRepopulationFocus !== "unset" || V.arcologies[0].FSGenderFundamentalist !== "unset") && slave.physicalAge === V.minimumSlaveAge && slave.physicalAge === V.fertilityAge && canGetPregnant(slave)) {
+			V.FResult += 1;
+			if (slave.birthWeek === 0) V.FResult += V.FResult;
+			else if (slave.birthWeek < 4) V.FResult += 0.2*V.FResult;
+		} else if (slave.physicalAge === V.minimumSlaveAge) {
+			V.FResult += 1;
+			if (slave.birthWeek === 0 ) V.FResult += 0.5*V.FResult;
+			else if (slave.birthWeek < 4) V.FResult += 0.1*V.FResult;
+		} else if (slave.physicalAge === V.fertilityAge && canGetPregnant(slave) && (V.arcologies[0].FSRepopulationFocus !== "unset" || V.arcologies[0].FSGenderFundamentalist !== "unset")) {
+			V.FResult += 1;
+			if (slave.birthWeek === 0)
+				V.FResult += 0.5*V.FResult;
+			else if (slave.birthWeek < 4)
+				V.FResult += 0.1*V.FResult;
+		}
+	}
+	
+	function calcAmputation(slave) {
+		switch(slave.amp) {
+		case 0:
+			break;
+		case 1:
+			V.FResult -= 2;
+			break;
+		case -2:
+			break;
+		case -5:
+			break;
+		default:
+			V.FResult -= 1;
+		}
+	}
+	
+	function calcHedonismWeight(slave) {
+		if (slave.weight < 10)
+			V.FResult -= 2;
+		else if (slave.weight > 190)
+			V.FResult -= 5; // too fat
+	}
+	return FResult;
+})();
diff --git a/src/js/pregJS.tw b/src/js/pregJS.tw
index bc319c2cdce7f4e325fe5bfd39b30285ce5929a6..cae3d56e2bcdde5c720e4615edc654978ced35cd 100644
--- a/src/js/pregJS.tw
+++ b/src/js/pregJS.tw
@@ -59,4 +59,84 @@ window.bellyAdjective = function(slave) {
 	} else {
 		return '';
 	}
+}
+
+/* calculates and returns expected ovum count during conception*/
+window.setPregType = function(actor) {
+	/* IMHO rework is posssible. Can be more interesting to play, if this code will take in account more body conditions - age, fat, food, hormone levels, etc. */
+	
+	var ovum = 1;
+	var fertilityStack = 0;	// adds an increasing bonus roll for stacked fertility drugs
+
+	if(actor.broodmother < 1) { // Broodmothers should be not processed here. Necessary now.
+		if(typeof actor.readyOva == "number" && actor.readyOva != 0) {
+			ovum = actor.readyOva;  //just single override; for delayed impregnation cases 
+		} else if(actor.ID == -1) {
+			if(actor.birthMaster > 0) { // Predisposed to twins
+				if(actor.fertDrugs == 1) {
+					ovum += jsEither([1, 1, 2, 2, 2, 2, 3, 3]);
+				} else {
+					ovum += jsEither([0, 0, 0, 1, 1, 1, 1, 1, 1, 2]);
+				}
+				if(actor.forcedFertDrugs > 0) {
+					ovum += jsEither([1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4]);
+				}
+			} else {
+				if(actor.fertDrugs == 1) {
+					ovum += jsEither([0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3]);
+				} else {
+					ovum += jsEither([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]);
+				}
+				if(actor.forcedFertDrugs > 0) {
+					ovum += jsEither([0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 4]);
+				}
+			}
+		} else if(actor.pregType == 0) {
+			ovum += jsEither([0, 0, 0, 0, 0, 0, 0, 0, 0, 1]);	//base chance for twins
+			if(actor.hormones == 2) {
+				ovum += jsEither([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2]);
+				fertilityStack++;
+			}
+			if(actor.hormoneBalance >= 200) {
+				ovum += jsEither([0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2]);
+				fertilityStack++;
+			}
+			if(actor.diet == "fertility") {
+				ovum += jsEither([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]);
+				fertilityStack++;
+			}
+			if(State.variables.masterSuitePregnancyFertilitySupplements == 1 && ((actor.assignment == "serve in the master suite" || actor.assignment == "be your Concubine"))) {
+				ovum += jsEither([0, 0, 0, 1, 1, 2, 2, 2, 3, 3]);
+				fertilityStack++;
+				fertilityStack++;
+			}
+			if(State.variables.reproductionFormula == 1 && (State.variables.week-actor.weekAcquired > 0)) {
+				fertilityStack++;
+			}
+			if(actor.drugs == "super fertility drugs") {
+				ovum += jsEither([1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5]);
+				fertilityStack++;
+				fertilityStack++;
+				fertilityStack++;
+				fertilityStack++;
+				fertilityStack++;
+			} else if(actor.drugs == "fertility drugs") {
+				ovum += jsEither([0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3]);
+				fertilityStack++;
+			}
+			if(State.variables.seeHyperPreg == 1) {
+				if(actor.drugs == "super fertility drugs") {
+					ovum += jsRandom(0, fertilityStack*2);
+				} else {
+					ovum += jsRandom(0, fertilityStack);
+				}
+			} else {
+				ovum += jsRandom(0, fertilityStack);
+				if(ovum > 12) {
+					ovum = jsRandom(6, 12);
+				}
+			}
+		}
+	}
+	return ovum;
 }
\ No newline at end of file
diff --git a/src/js/raJS.tw b/src/js/raJS.tw
new file mode 100644
index 0000000000000000000000000000000000000000..55de79d75324387528d864bbce0911b6a16ee3a5
--- /dev/null
+++ b/src/js/raJS.tw
@@ -0,0 +1,165 @@
+:: RA JS [script]
+
+window.ruleApplied = function(slave, ID) {
+	if (!slave || !slave.currentRules)
+		return null;
+	return slave.currentRules.includes(ID);
+};
+
+window.ruleSlaveSelected = function(slave, rule) {
+	if (!slave || !rule || !rule.selectedSlaves)
+		return false;
+	return rule.selectedSlaves.includes(slave.ID);
+};
+
+window.ruleSlaveExcluded = function(slave, rule) {
+	if (!slave || !rule || !rule.excludedSlaves)
+		return false;
+	return rule.excludedSlaves.includes(slave.ID);
+};
+
+window.ruleAssignmentSelected = function(slave, rule) {
+	if (!slave || !rule || (!rule.assignment && !rule.facility))
+		return false;
+	var assignment = rule.assignment.concat(expandFacilityAssignments(rule.facility));
+	return assignment.includes(slave.assignment);
+}
+
+window.ruleAssignmentExcluded = function(slave, rule) {
+	if (!slave || !rule || (!rule.excludeAssignment && !rule.excludeFacility))
+		return false;
+	var excludeAssignment = rule.excludeAssignment.concat(expandFacilityAssignments(rule.excludeFacility));
+	return excludeAssignment.includes(slave.assignment);
+}
+
+window.hasSurgeryRule = function(slave, rules) {
+	if (!slave || !rules || !slave.currentRules)
+		return false;
+
+	for (var d = rules.length-1; d >= 0; d--) {
+		if (ruleApplied(slave, rules[d].ID)) {
+			if (rules[d].autoSurgery > 0) {
+				return true;
+			}
+		}
+	}
+	return false;
+};
+
+window.hasRuleFor = function(slave, rules, what) {
+	if (!slave || !rules || !slave.currentRules)
+		return false;
+
+	for (var d = rules.length-1; d >= 0; d--) {
+		if (ruleApplied(slave, rules[d].ID)) {
+			if (rules[d][what] !== "no default setting") {
+				return true;
+			}
+		}
+	}
+	return false;
+};
+
+window.hasHColorRule = function(slave, rules) {
+	return hasRuleFor(slave, rules, "hColor");
+}
+
+window.hasHStyleRule = function(slave, rules) {
+	return hasRuleFor(slave, rules, "hStyle");
+};
+
+window.hasEyeColorRule = function(slave, rules) {
+	return hasRuleFor(slave, rules, "eyeColor");
+};
+
+window.lastPregRule = function(slave, rules) {
+	if (!slave || !rules)
+		return null;
+	if (!slave.currentRules)
+		return false;
+
+	for (var d = rules.length-1; d >= 0; d--) {
+		if (ruleApplied(slave, rules[d].ID)) {
+			if (rules[d].preg == -1) {
+				return true;
+			}
+		}
+	}
+
+	return null;
+};
+
+window.autoSurgerySelector = function(slave, ruleset)
+{
+
+	var appRules = ruleset.filter(function(rule){
+			return (rule.autoSurgery == 1) && this.currentRules.contains(rule.ID);
+		}, slave);
+
+	var surgery = {eyes: "no default setting", lactation: "no default setting", cosmetic: "nds", accent: "no default setting", shoulders: "no default setting", shouldersImplant: "no default setting", boobs: "no default setting", hips: "no default setting", hipsImplant: "no default setting", butt: "no default setting", faceShape: "no default setting", lips: "no default setting", holes: "nds", bodyhair: "nds", hair: "nds", bellyImplant: "no default setting"};
+	var i, key, ruleSurgery;
+
+	for (i in appRules)
+	{
+		ruleSurgery = appRules[i].surgery;
+		for (key in ruleSurgery)
+		{
+			if (ruleSurgery[key] != "no default setting" || ruleSurgery[key] != "nds")
+			{	
+				surgery[key] = ruleSurgery[key];
+			}
+		}
+	}
+
+	return surgery;
+}
+
+window.mergeRules = function(rules) {
+    var combinedRule = {};
+
+    for (var i = 0; i < rules.length; i++) {
+        for (var prop in rules[i]) {
+            // A rule overrides any preceding ones if,
+            //   * there are no preceding ones,
+            //   * or it sets autoBrand,
+            //   * or it does not set autoBrand and is not "no default setting"
+            var applies = (
+                combinedRule[prop] === undefined
+                || (prop === "autoBrand" && rules[i][prop])
+                || (prop !== "autoBrand" && rules[i][prop] !== "no default setting")
+            );
+
+            if (applies)
+            {
+
+            	//Objects in JS in operations "=" pass by reference, so we need a completely new object to avoid messing up previous rules.
+            	if ("object" == typeof rules[i][prop] && "object" != typeof combinedRule[prop])
+            		combinedRule[prop] = new Object();
+
+            	//If we already have object - now we will process its properties, but object itself should be skipped.
+            	if ("object" != typeof combinedRule[prop])
+                	combinedRule[prop] = rules[i][prop];
+
+            	/*Some properties of rules now have second level properties. We need to check it, and change ones in combinedRule. (Good example - growth drugs. Breasts, butt, etc...) */
+            	if ( "object" == typeof rules[i][prop])
+    	        {
+	            	for (var subprop in rules[i][prop])
+    	        	{
+    	           		var subapplies = (
+            	    	combinedRule[prop][subprop] === undefined
+                			|| (rules[i][prop][subprop] !== "no default setting")
+	            		);
+
+		            	if (subapplies)
+    		            	combinedRule[prop][subprop] = rules[i][prop][subprop];
+    		        }
+
+            	}
+           	}
+
+        }
+
+    }
+
+    return combinedRule;
+}
\ No newline at end of file
diff --git a/src/js/storyJS.tw b/src/js/storyJS.tw
index d45c47bda36842c52fc8a3fd940e97404772c200..724825972bd832fe9ca3ccfe9eb75abf50a4d0a3 100644
--- a/src/js/storyJS.tw
+++ b/src/js/storyJS.tw
@@ -708,11 +708,6 @@ window.isItemAccessible = function(string) {
 	}
 };
 
-window.ruleApplied = function(slave, ID) {
-	if (!slave || !slave.currentRules)
-		return null;
-	return slave.currentRules.includes(ID);
-};
 
 window.expandFacilityAssignments = function(facilityAssignments) {
 	var assignmentPairs = {
@@ -738,139 +733,6 @@ window.expandFacilityAssignments = function(facilityAssignments) {
 	return fullList.flatten();
 };
 
-window.ruleSlaveSelected = function(slave, rule) {
-	if (!slave || !rule || !rule.selectedSlaves)
-		return false;
-	return rule.selectedSlaves.includes(slave.ID);
-};
-
-window.ruleSlaveExcluded = function(slave, rule) {
-	if (!slave || !rule || !rule.excludedSlaves)
-		return false;
-	return rule.excludedSlaves.includes(slave.ID);
-};
-
-window.ruleAssignmentSelected = function(slave, rule) {
-	if (!slave || !rule || (!rule.assignment && !rule.facility))
-		return false;
-	var assignment = rule.assignment.concat(expandFacilityAssignments(rule.facility));
-	return assignment.includes(slave.assignment);
-}
-
-window.ruleAssignmentExcluded = function(slave, rule) {
-	if (!slave || !rule || (!rule.excludeAssignment && !rule.excludeFacility))
-		return false;
-	var excludeAssignment = rule.excludeAssignment.concat(expandFacilityAssignments(rule.excludeFacility));
-	return excludeAssignment.includes(slave.assignment);
-}
-
-window.hasSurgeryRule = function(slave, rules) {
-	if (!slave || !rules || !slave.currentRules)
-		return false;
-
-	for (var d = rules.length-1; d >= 0; d--) {
-		if (ruleApplied(slave, rules[d].ID)) {
-			if (rules[d].autoSurgery > 0) {
-				return true;
-			}
-		}
-	}
-	return false;
-};
-
-window.hasRuleFor = function(slave, rules, what) {
-	if (!slave || !rules || !slave.currentRules)
-		return false;
-
-	for (var d = rules.length-1; d >= 0; d--) {
-		if (ruleApplied(slave, rules[d].ID)) {
-			if (rules[d][what] !== "no default setting") {
-				return true;
-			}
-		}
-	}
-	return false;
-};
-
-window.hasHColorRule = function(slave, rules) {
-	return hasRuleFor(slave, rules, "hColor");
-}
-
-window.hasHStyleRule = function(slave, rules) {
-	return hasRuleFor(slave, rules, "hStyle");
-};
-
-window.hasEyeColorRule = function(slave, rules) {
-	return hasRuleFor(slave, rules, "eyeColor");
-};
-
-window.lastPregRule = function(slave, rules) {
-	if (!slave || !rules)
-		return null;
-	if (!slave.currentRules)
-		return false;
-
-	for (var d = rules.length-1; d >= 0; d--) {
-		if (ruleApplied(slave, rules[d].ID)) {
-			if (rules[d].preg == -1) {
-				return true;
-			}
-		}
-	}
-
-	return null;
-};
-
-window.lastSurgeryRuleFor = function(slave, rules, what) {
-	if (!slave || !rules || !slave.currentRules)
-		return null;
-
-	for (var d = rules.length-1; d >= 0; d--) {
-		if (!rules[d].surgery)
-			return null;
-
-		if (ruleApplied(slave, rules[d].ID)) {
-			if (rules[d].surgery[what] != "no default setting") {
-				return rules[d];
-			}
-		}
-	}
-
-	return null;
-};
-
-window.lastEyeSurgeryRule = function(slave, rules) {
-	return lastSurgeryRuleFor(slave, rules, "eyes");
-}
-
-window.lastLactationSurgeryRule = function(slave, rules) {
-	return lastSurgeryRuleFor(slave, rules, "lactation");
-}
-
-window.lastProstateSurgeryRule = function(slave, rules) {
-	return lastSurgeryRuleFor(slave, rules, "prostate");
-}
-
-window.lastLipSurgeryRule = function(slave, rules) {
-	return lastSurgeryRuleFor(slave, rules, "lips");
-};
-
-window.lastBoobSurgeryRule = function(slave, rules) {
-	return lastSurgeryRuleFor(slave, rules, "boobs");
-};
-
-window.lastButtSurgeryRule = function(slave, rules) {
-	return lastSurgeryRuleFor(slave, rules, "butt");
-};
-
-window.lastHairSurgeryRule = function(slave, rules) {
-	return lastSurgeryRuleFor(slave, rules, "hair");
-}
-
-window.lastBodyHairSurgeryRule = function(slave, rules) {
-	return lastSurgeryRuleFor(slave, rules, "bodyhair");
-}
-
 window.milkAmount = function(slave) {
 	var milk;
 	var calcs;
@@ -1042,56 +904,6 @@ window.nameReplace = function(name)
 	return name;
 }
 
-window.mergeRules = function(rules) {
-    var combinedRule = {};
-
-    for (var i = 0; i < rules.length; i++) {
-        for (var prop in rules[i]) {
-            // A rule overrides any preceding ones if,
-            //   * there are no preceding ones,
-            //   * or it sets autoBrand,
-            //   * or it does not set autoBrand and is not "no default setting"
-            var applies = (
-                combinedRule[prop] === undefined
-                || (prop === "autoBrand" && rules[i][prop])
-                || (prop !== "autoBrand" && rules[i][prop] !== "no default setting")
-            );
-
-            if (applies)
-            {
-
-            	//Objects in JS in operations "=" pass by reference, so we need a completely new object to avoid messing up previous rules.
-            	if ("object" == typeof rules[i][prop] && "object" != typeof combinedRule[prop])
-            		combinedRule[prop] = new Object();
-
-            	//If we already have object - now we will process its properties, but object itself should be skipped.
-            	if ("object" != typeof combinedRule[prop])
-                	combinedRule[prop] = rules[i][prop];
-
-            	/*Some properties of rules now have second level properties. We need to check it, and change ones in combinedRule. (Good example - growth drugs. Breasts, butt, etc...) */
-            	if ( "object" == typeof rules[i][prop])
-    	        {
-	            	for (var subprop in rules[i][prop])
-    	        	{
-    	           		var subapplies = (
-            	    	combinedRule[prop][subprop] === undefined
-                			|| (rules[i][prop][subprop] !== "no default setting")
-	            		);
-
-		            	if (subapplies)
-    		            	combinedRule[prop][subprop] = rules[i][prop][subprop];
-    		        }
-
-            	}
-           	}
-
-        }
-
-    }
-
-    return combinedRule;
-}
-
 window.isVegetable = function(slave) {
 	slave = slave || State.variables.activeSlave;
 	if(!slave) { return false; }
diff --git a/src/js/utilJS.tw b/src/js/utilJS.tw
index e3a908dc92173cad6816bea9a3dbe9c4d5945b62..f9015f54b47450447a6b948caf80ef53fa89fcf8 100644
--- a/src/js/utilJS.tw
+++ b/src/js/utilJS.tw
@@ -1,4 +1,4 @@
-:: UtilJS [script]
+:: UtilJS [script]
 
 /*
  * Height.mean(nationality, race, genes, age) - returns the mean height for the given combination and age in years (>=2)
@@ -90,7 +90,7 @@ window.Height = (function(){
 		"Afghan": 163.8, "Algerian": 162, "Argentinian": 159.6, "Armenian": 158.1, "Australian": 161.8, "Austrian": 166,
 		"Bangladeshi": 150.6, "Belarusian": 166.8, "Belgian": 168.1, "Bolivian": 142.2, "Brazilian": 158.8,
 		"British": 161.9, "Burmese": undefined, "Canadian": 162.3, "Chilean": 157.2, "Chinese": 155.8, "Colombian": 158.7,
-		"Congolese": 157.7, "Cuban": 156, "Czech": 167.22, "Danish": 168.7, "Dominican": 156.4, "Dutch": 169, "Egyptian": 158.9,
+		"Zairian": 157.7, "Cuban": 156, "Czech": 167.22, "Danish": 168.7, "Dominican": 156.4, "Dutch": 169, "Egyptian": 158.9,
 		"Emirati": 158.9, "Estonian": 165.5, "Ethiopian": 157.6, "Filipina": 151.8, "Finnish": 165.3, "French": 162.5,
 		"German": 162.8, "Ghanan": 158.5, "Greek": 165, "Guatemalan": 147.3, "Haitian": 158.6, "Hungarian": 164,
 		"Icelandic": 168, "Indian": 151.9, "Indonesian": 147, "Iranian": 157.2, "Iraqi": 155.8, "Irish": 163, "Israeli": 166,
@@ -117,7 +117,13 @@ window.Height = (function(){
 		"Niuean": 160.4, "Palauan": 161.4, "Palestinian": 158.2, "Papua New Guinean": 150.7, "Paraguayan": 158.3, "Qatari": 155,
 		"Kittitian": 156.9, "Saint Lucian": 157.1, "Vincentian": 156.2, "Samoan": 161, "Seychellois": 155.8,
 		"Slovene": 167.4, "a Solomon Islander": 151.8, "Sri Lankan": 151.4, "Surinamese": 155.7, "Tajik": 161.2, "Tongan": 159.5,
-		"Trinidadian": 157.4, "Turkmen": 158.2, "Ni-Vanuatu": 149.8, "Vatican": 162.5,
+		"Trinidadian": 157.4, "Turkmen": 158.2, "Ni-Vanuatu": 149.8, "Vatican": 162.5, "Angolan": undefined, "Beninese": 159.3, 
+		"Bissau-Guinean": undefined, "Burkinabé": 161.6, "Cape Verdean": undefined, "Catalan": undefined, "Central African": 158.9, 
+		"Chadian": 162.6, "Comorian": 154.8, "Congolese": 159, "Equatoguinean": undefined, "Eritrean": undefined, 
+		"French Polynesian": undefined, "Gambian": 157.8, "Guinean": 158.8, "Ivorian": 158.9, "Kurdish": undefined, "Liberian": 157.3, 
+		"Malawian": 155, "Mauritanian": undefined, "Mauritian": undefined, "Mosotho": 157.6, "Motswana": undefined, "Mozambican": 156, 
+		"Namibian": 160.7, "Rwandan": 157.7, "Sahrawi": undefined, "São Toméan": undefined, "Senegalese": 163, "Sierra Leonean": undefined, 
+		"Somali": undefined, "South Sudanese": undefined, "Swazi": 159.1, "Tibetan": undefined, "Togolese": 159, 
 		"": 162.5 // default
 	};
 	const xyMeanHeight = {
@@ -125,7 +131,7 @@ window.Height = (function(){
 		"Afghan": undefined, "Algerian": 172.2, "Argentinian": 174.46, "Armenian": undefined, "Australian": 175.6,
 		"Austrian": 179, "Bangladeshi": 150.8, "Belarusian": 176.9, "Belgian": 178.7, "Bolivian": 160, "Brazilian": 170.7,
 		"British": 175.3, "Burmese": 168.0, "Canadian": 175.1, "Chilean": 169.6, "Chinese": 167.1, "Colombian": 170.6,
-		"Congolese": 158.9, "Cuban": 168, "Czech": 180.31, "Danish": 180.4, "Dominican": 168.4, "Dutch": 181, "Egyptian": 170.3,
+		"Zairian": 158.9, "Cuban": 168, "Czech": 180.31, "Danish": 180.4, "Dominican": 168.4, "Dutch": 181, "Egyptian": 170.3,
 		"Emirati": 170.3, "Estonian": 179.1, "Ethiopian": undefined, "Filipina": 163.5, "Finnish": 178.9, "French": 175.6,
 		"German": 175.4, "Ghanan": 169.5, "Greek": 177, "Guatemalan": 157.5, "Haitian": undefined, "Hungarian": 176,
 		"Icelandic": 181, "Indian": 164.7, "Indonesian": 158, "Iranian": 170.3, "Iraqi": 165.4, "Irish": 177, "Israeli": 177,
@@ -152,7 +158,13 @@ window.Height = (function(){
 		"Niuean": 169.7, "Palauan": 174.6, "Palestinian": 169.7, "Papua New Guinean": 163.5, "Paraguayan": 168.8, "Qatari": 166.2,
 		"Kittitian": 164.4, "Saint Lucian": 168.3, "Vincentian": 165.4, "Samoan": 173, "Seychellois": 168.5,
 		"Slovene": 180.3, "a Solomon Islander": 163.1, "Sri Lankan": 163.6, "Surinamese": 165.2, "Tajik": 175.2, "Tongan": 168.2,
-		"Trinidadian": 170.8, "Turkmen": 171.4, "Ni-Vanuatu": 160.5, "Vatican": 176.5,
+		"Trinidadian": 170.8, "Turkmen": 171.4, "Ni-Vanuatu": 160.5, "Vatican": 176.5, "Angolan": undefined, "Beninese": undefined, 
+		"Bissau-Guinean": undefined, "Burkinabé": undefined, "Cape Verdean": undefined, "Catalan": undefined, "Central African": undefined, 
+		"Chadian": undefined, "Comorian": undefined, "Congolese": undefined, "Equatoguinean": undefined, "Eritrean": undefined, 
+		"French Polynesian": undefined, "Gambian": 168, "Guinean": undefined, "Ivorian": undefined, "Kurdish": undefined, "Liberian": undefined, 
+		"Malawian": 166, "Mauritanian": undefined, "Mauritian": undefined, "Mosotho": undefined, "Motswana": undefined, "Mozambican": undefined, 
+		"Namibian": undefined, "Rwandan": undefined, "Sahrawi": undefined, "São Toméan": undefined, "Senegalese": undefined, "Sierra Leonean": undefined, 
+		"Somali": undefined, "South Sudanese": undefined, "Swazi": undefined, "Tibetan": undefined, "Togolese": undefined, 
 		"": 172.5 // defaults
 	};
 	
@@ -414,11 +426,23 @@ window.jsRandomMany = function (arr, count) {
 	return result;
 }
 
+//This function wants an array - which explains why it works like array.random(). Give it one or you'll face a NaN
 window.jsEither = function(choices) {
 	var index = Math.floor(Math.random() * choices.length);
 	return choices[index];
 }
 
+//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.
+window.deepCopy = function (o) {
+   var output, v, key;
+   output = Array.isArray(o) ? [] : {};
+   for (key in o) {
+       v = o[key];
+       output[key] = (typeof v === "object") ? deepCopy(v) : v;
+   }
+   return output;
+}
+
 /*
 Make everything waiting for this execute. Usage:
 
@@ -432,3 +456,46 @@ if(typeof Categorizer === 'function') {
 }
 */
 jQuery(document).trigger('categorizer.ready');
+
+window.hashChoice = function hashChoice(obj) {
+	let randint = Math.floor(Math.random()*hashSum(obj));
+	let ret;
+	Object.keys(obj).some(key => {
+		if (randint < obj[key]) {
+			ret = key;
+			return true;
+		} else {
+			randint -= obj[key];
+			return false;
+		}
+	});
+	return ret;
+};
+
+window.hashSum = function hashSum(obj) {
+	let sum = 0;
+	Object.keys(obj).forEach(key => { sum += obj[key]; });
+	return sum;
+};
+
+window.arr2obj = function arr2obj(arr) {
+	const obj = {};
+	arr.forEach(item => { obj[item] = 1; });
+	return obj;
+};
+
+window.hashPush = function hashPush(obj, ...rest) {
+	rest.forEach(item => {
+		if (obj[item] === undefined) obj[item] = 1;
+		else obj[item] += 1;
+	});
+};
+
+window.weightedArray2HashMap = function weightedArray2HashMap(arr) {
+	const obj = {};
+	arr.forEach(item => {
+		if (obj[item] === undefined) obj[item] = 1;
+		else obj[item] += 1;
+	})
+	return obj;
+};
diff --git a/src/js/wombJS.tw b/src/js/wombJS.tw
index a6fc9594541b52cd0495f01c186c5eb55220b488..6c4816bac8ec760b7478f7147a9bb26746cb6f68 100644
--- a/src/js/wombJS.tw
+++ b/src/js/wombJS.tw
@@ -259,7 +259,7 @@ window.WombNormalizePreg = function(actor)
         actor.pregType = 0; 
         actor.pregKnown = 0;
         
-        if (actor.preg > 0)
+        if (actor.preg >= 0)
             actor.preg = 0.1; //to avoid legacy code conflicts - broodmother on hold can't be impregnated, but she not on normal contraceptives. So we set this for special case.
         
         if (actor.pregSource > 0)
diff --git a/src/npc/descriptions/fVagina.tw b/src/npc/descriptions/fVagina.tw
index cf1d28742cc296b06fe96202081726d078e7e9c4..4a377fbfda33e7344bd857ac4b7c71ebd37c9099 100644
--- a/src/npc/descriptions/fVagina.tw
+++ b/src/npc/descriptions/fVagina.tw
@@ -99,9 +99,9 @@ You call her over so you can
 	<<if (_fPosition <= 20)>>
 		in the missionary position. You tell her to lie down on the couch next to your desk.
 		<<if $activeSlave.bellyPreg >= 600000>>
-			A position that will be a challange due to her immense pregnancy.
+			A position that will be a challenge due to her immense pregnancy.
 		<<elseif $activeSlave.belly >= 600000>>
-			A position that will be a challange due to her immense stomach.
+			A position that will be a challenge due to her immense stomach.
 		<<elseif $activeSlave.bellyPreg >= 300000>>
 			A position that will be difficult due to her massive pregnancy.
 		<<elseif $activeSlave.belly >= 300000>>
@@ -120,7 +120,7 @@ You call her over so you can
 		<<elseif $activeSlave.belly >= 300000>>
 			A position that will allow you to tease her massive belly as you fuck her.
 		<<elseif $activeSlave.belly+$PC.belly >= 20000 && $activeSlave.belly >= 1500 && $PC.belly >= 1500>>
-			A position that will be akward with the combined size of your rounded middles.
+			A position that will be awkward with the combined size of your rounded middles.
 		<</if>>
 	<<elseif (_fPosition <= 60)>>
 		doggy-style. You tell her to get on the couch beside your desk on her hands and knees.
diff --git a/src/npc/fFeelings.tw b/src/npc/fFeelings.tw
index b23dbe5a3e83244b6475df023c4ec62fa24005ac..2ec5faaf907d9503df113154f41697fae2cbbc05 100644
--- a/src/npc/fFeelings.tw
+++ b/src/npc/fFeelings.tw
@@ -609,6 +609,16 @@ My favorite part of my body i<<s>>
 	<</if>>
 <</if>>
 
+<<switch $activeSlave.diet>>
+<<case "fertility">>
+	My <<s>>tomach feel<<s>> tingly, e<<s>>pe<<c>>ially when I think of dick<<s>>, but that'<<s>> normal, right?
+	<<if $PC.dick > 0>>Oh! It'<<s>> happening now! I bet we both know why...<</if>>
+<<case "cum production">>
+	My load<<s>> have been bigger lately. That diet mu<<s>>t be having an effect on me.
+<<case "cleansing">>
+	I'm feeling really good, <<Master>>, the diet mu<<s>>t be working. It really ta<<s>>te<<s>> horrible, though...
+<</switch>>
+
 <<switch $activeSlave.drugs>>
 <<case "intensive penis enhancement">>
 	<<if ($activeSlave.dick > 0)>>
diff --git a/src/npc/newSlaveIncestSex.tw b/src/npc/newSlaveIncestSex.tw
new file mode 100644
index 0000000000000000000000000000000000000000..c4560d444a70ef356a36137cefb868d9df2c0b11
--- /dev/null
+++ b/src/npc/newSlaveIncestSex.tw
@@ -0,0 +1,126 @@
+:: newSlaveIncestSex [nobr]
+
+<br/><br/>
+
+/* setup pronouns (switch on vagina for sisters and herms regardless of genes) */
+<<set _oneshe = "she" >>
+<<set _oneher = "her" >>
+<<if $sissy.vagina == -1 >>
+	<<set _oneshe = "he" >>
+	<<set _oneher = "his" >>
+<</if>>
+<<set _othershe = "she" >>
+<<set _otherher = "her" >>
+<<if $activeSlave.vagina == -1 >>
+	<<set _othershe = "he" >>
+	<<set _otherher = "his" >>
+<</if>>
+
+/* setup identifiers */
+<<if $familyTesting == 1 >>
+	<<set _one = relativeTerm($activeSlave, $sissy)>> /* sissy is active's blank */
+	<<set _other = relativeTerm($sissy, $activeSlave)>> /* active is sissy's blank */
+<<else>>
+	<<set _one = $sissy.relation >>
+	<<set _other = $activeSlave.relation >>
+<</if>>
+
+/* gender relation descriptions */
+/* TODO: is there a function for gender-aware relationships? */
+<<if $sissy.vagina == -1 >>
+	<<set _one = _one.replace("mother","father").replace("sister","brother").replace("daughter","son") >>
+<</if>>
+<<if $activeSlave.vagina == -1 >>
+	<<set _other = _other.replace("mother","father").replace("sister","brother").replace("daughter","son") >>
+<</if>>
+
+<<if _one == _other >>
+/* two sisters / brothers: identify by age */
+	<<if $sissy.actualAge > $activeSlave.actualAge>>
+		<<set _onelong = "older "+_one >>
+		<<set _otherlong = "younger "+_other >>
+	<<elseif $sissy.actualAge < $activeSlave.actualAge>>
+		/* Note: this is never true (at least without extended family mode) */
+		<<set _onelong = "younger "+_one >>
+		<<set _otherlong = "older "+_other >>
+	<<else>> /* twins, no real differentiation */
+		<<if $sissy.vagina == -1 >>
+			<<set _onelong = _one + " brother">>
+		<<else>>
+			<<set _onelong = _one + " sister">>
+		<</if>>
+		<<if $activeSlave.vagina == -1 >>
+			<<set _otherlong = _other + " brother" >>
+		<<else>>
+			<<set _otherlong = _other + " sister" >>
+		<</if>>
+	<</if>>
+<<else>>
+	<<set _onelong = _one>>
+	<<set _otherlong = _other>>
+<</if>>
+
+/* prepare some text passages based on options */
+<<set _actions = [] >>
+<<set _secretions = [] >>
+<<set _genitals = [] >>
+<<if ($sissy.dick == 0) || ($activeSlave.dick == 0) >>
+	/* at least one vagina is present */
+	<<run _actions.push("clit-flinging tongue-action") >> /* TODO: check oral skill of slaves */
+	<<run _secretions.push("femcum") >>
+	<<run _genitals.push("licked wet cunt") >>
+<</if>>
+<<if ($sissy.dick != 0) || ($activeSlave.dick != 0) >>
+	/* at least one penis is present */
+	<<run _actions.push("nose-pressed-against-balls deep-throats") >> /* TODO: check oral skill of slaves */
+	<<run _secretions.push("semen") >>
+	<<run _genitals.push("limp dangling cock") >>
+<</if>>
+<<if _genitals.length == 1 >>
+	<<set _genitals = _genitals[0]+"s" >>
+<<else>>
+	<<set _genitals = _genitals.join(" and ") >>
+<</if>>
+
+<<if $debugMode >>
+SISSY SLAVE (FIRST): <br/>
+_one ($sissy.relation) <br/>
+$sissy.physicalAge <br/>
+_oneshe / _oneher <br/>
+ACTIVE SLAVE (SECOND): <br/>
+_other ($activeSlave.relation) <br/>
+$activeSlave.physicalAge <br/>
+_othershe / _otherher <br/>
+<</if>>
+
+<span id="result">
+<<link "Order them to demonstrate their love for each other">>
+<<replace "#result">>
+Now that you own them, you want to see proof of their love for each other. You order the <<if _one == "twin">>twins<<elseif _one == _other && _one == "brother">>brothers<<elseif _one == _other && _one == "sister">>sisters<<else>>_one and _other<</if>> to perform mutual oral sex in front of you.
+Hesitantly, they assume 69 position on your couch. They either never did this in front of a stranger or never had sex this way before. You remind them that they are sex slaves now. They need to follow all orders, especially sexual ones, so this is a comparatively gentle start.
+<br/><br/>
+<<if _one == "twin">>One _one<<else>>The _onelong<</if>> shows more boldness as _oneshe lowers _oneher head towards _oneher _otherlong's privates.
+<<if $activeSlave.dick == 0 >>
+Carefully, _oneshe spreads _oneher _other's labia. Then _oneshe continues to give _oneher _other's exposed pussy a few experimental licks. At first, _oneher efforts seem to be futile, but after a while the _otherlong's clit becomes engorged and _otherher juices start flowing.
+<<else>>
+Uncertain, _oneshe grabs _oneher <<if _other == "twin">>_other<<else>>_otherlong<</if>>'s penis. Then _oneshe puts _oneher _other's flaccid member into _oneher mouth and gives it an experimental suck. At first, _oneher efforts seem to be futile, but after a while the _otherlong sports a nice, hard erection.
+<</if>>
+As the _other's arousal grows, _othershe becomes more eager to please _otherher _onelong, too. Going down on _otherher's lover's genitals, _othershe starts to mimic _otherher ministrations.
+	<<if ($sissy.dick == 0) != ($activeSlave.dick == 0) >>
+	Of course, _othershe has to adapt _otherher actions <<if $sissy.dick == 0 >>from the feelings on _otherher dick to the pussy pressed against _otherher lips.<<else>>from the feelings at _otherher pussy to the dick in _otherher mouth.<</if>>
+	<</if>>
+<br/><br/>
+You can tell how uncomfortable they are with you watching them, but as they become increasingly worked up, they lose their inhibitions. Soon, you watch really enthralling <<print $RecETSevent.replace("incest","") >> incest action at your office<<if _actions.length >>, including some enthusiastic <<print _actions.join(" and ")>><</if>>. Eventually, they bring each other to an impressive mutual orgasm. Their lusty moans are only muffled by each others crotches. Spent, exhausted, and with their faces covered in each others <<print _secretions.join(" and ")>> respectively, they untangle to rest comfortably on your couch.
+<br/><br/>
+You indicate them to present themselves to you. Still shaking from the aftershocks of their orgasms, they are standing side by side in front of you. Panting, naked and with their	_genitals dripping mixed juices. You simply nod, showing your approval. They are visibly relieved, not only sexually. They are more confident of having made the right choice in enslaving themselves to you since you seem @@.mediumaquamarine;trustworthy@@ and @@.hotpink;sympathetic.@@ They hug again, kissing and licking the sexual fluids off each others stained faces.
+<</replace>>
+<<set $sissy.devotion += 4>>
+<<set $sissy.trust += 4>>
+<<set $sissy.oralCount += 1>>
+<<set $oralTotal += 1>>
+<<set $activeSlave.devotion += 4>>
+<<set $activeSlave.trust += 4>>
+<<set $activeSlave.oralCount += 1>>
+<<set $oralTotal += 1>>
+<</link>>
+</span>
diff --git a/src/npc/startingGirls/startingGirls.tw b/src/npc/startingGirls/startingGirls.tw
index bb171a501f1b0ecee71721b9d4530be67ac1d433..7afaf888e781f569c8dd20c3842c9c740faae0ac 100644
--- a/src/npc/startingGirls/startingGirls.tw
+++ b/src/npc/startingGirls/startingGirls.tw
@@ -401,7 +401,7 @@ __You are customizing this slave:__
 | [[More customization options]]
 
 | <<link "Start over with a random slave">>
-<<set $fixedNationality = $nationalities.random()>>
+<<set $fixedNationality = hashChoice($nationalities)>>
 <<StartingGirlsWorkaround>>
 <<StartingGirlsRefresh>>
 <<SaleDescription>>
diff --git a/src/pregmod/SecForceEX/SpecialForceUpgradeDec.tw b/src/pregmod/SecForceEX/SpecialForceUpgradeDec.tw
index 7db07e497d988c1b4150da1793f4511f5fede1da..57b6f194c7468c68455089d45a27bd8c5536f372 100644
--- a/src/pregmod/SecForceEX/SpecialForceUpgradeDec.tw
+++ b/src/pregmod/SecForceEX/SpecialForceUpgradeDec.tw
@@ -25,20 +25,20 @@
 <<case 10>>
 	 Has (mostly) taken on the appearance of a professional military installation, with clearly defined soldier and logistical areas, dedicated support and recreation facilities, and advanced command and control apparatus. As final measures, quad heavy, long range, electromagnetic railgun artillery 406 cm pieces have been installed in fortified EMP/jammer resistant casemates along the aerial launch pads and a powerful arcology wide electromagnetic forcefield has been installed, giving $securityForceName an immense superiority in local firepower.
 <<case 11>>
-	 Has (mostly) taken on the appearance of a professional military installation, with clearly defined soldier and logistical areas, dedicated support and recreation facilities, and advanced command and control apparatus. As final measures, quad heavy, long range, dual barreled electromagnetic railgun artillery 406 cm pieces have been installed in fortified EMP/jammer resistant casemates along the aerial launch pads and a powerful arcology wide electromagnetic forcefield has been installed, giving $securityForceName an immense superiority in local firepower.
+	 Has (mostly) taken on the appearance of a professional military installation, with clearly defined soldier and logistical areas, dedicated support and recreation facilities, and advanced command and control apparatus. As final measures, quad heavy, long range, double-barrelled electromagnetic railgun artillery 406 cm pieces have been installed in fortified EMP/jammer resistant casemates along the aerial launch pads and a powerful arcology wide electromagnetic forcefield has been installed, giving $securityForceName an immense superiority in local firepower.
 <<case 12>>
-	 Has (mostly) taken on the appearance of a professional military installation, with clearly defined soldier and logistical areas, dedicated support and recreation facilities, and advanced command and control apparatus. As final measures, quad heavy, long range, tri barreled electromagnetic railgun artillery 406 cm pieces have been installed in fortified EMP/jammer resistant casemates along the aerial launch pads and a powerful arcology wide electromagnetic forcefield has been installed, giving $securityForceName an immense superiority in local firepower.
+	 Has (mostly) taken on the appearance of a professional military installation, with clearly defined soldier and logistical areas, dedicated support and recreation facilities, and advanced command and control apparatus. As final measures, quad heavy, long range, tri-barrelled electromagnetic railgun artillery 406 cm pieces have been installed in fortified EMP/jammer resistant casemates along the aerial launch pads and a powerful arcology wide electromagnetic forcefield has been installed, giving $securityForceName an immense superiority in local firepower.
 <<case 13>>
-	 Has (mostly) taken on the appearance of a professional military installation, with clearly defined soldier and logistical areas, dedicated support and recreation facilities, and advanced command and control apparatus. As final measures, quad heavy, long range, tri barreled electromagnetic railgun artillery 406 cm pieces have been installed in fortified EMP/jammer resistant casemates along the aerial launch pads and a powerful arcology wide electromagnetic forcefield has been installed, giving $securityForceName an immense superiority in local firepower.
+	 Has (mostly) taken on the appearance of a professional military installation, with clearly defined soldier and logistical areas, dedicated support and recreation facilities, and advanced command and control apparatus. As final measures, quad heavy, long range, tri-barrelled electromagnetic railgun artillery 406 cm pieces have been installed in fortified EMP/jammer resistant casemates along the aerial launch pads and a powerful arcology wide electromagnetic forcefield has been installed, giving $securityForceName an immense superiority in local firepower.
 	<br>After pooling resources between several departmental R&D teams, $securityForceName now has a faster and much more efficient custom network.
 <<case 14>>
-	 Has (mostly) taken on the appearance of a professional military installation, with clearly defined soldier and logistical areas, dedicated support and recreation facilities, and advanced command and control apparatus. As final measures, quad heavy, long range, tri barreled electromagnetic railgun artillery 406 cm pieces have been installed in fortified EMP/jammer resistant casemates along the aerial launch pads and a powerful arcology wide electromagnetic forcefield has been installed, giving $securityForceName an immense superiority in local firepower.
+	 Has (mostly) taken on the appearance of a professional military installation, with clearly defined soldier and logistical areas, dedicated support and recreation facilities, and advanced command and control apparatus. As final measures, quad heavy, long range, tri-barrelled electromagnetic railgun artillery 406 cm pieces have been installed in fortified EMP/jammer resistant casemates along the aerial launch pads and a powerful arcology wide electromagnetic forcefield has been installed, giving $securityForceName an immense superiority in local firepower.
 	<br>After pooling resources between several departmental R&D teams, $securityForceName now has a faster and much more efficient custom network. <br>'Borrowed' old world designs for a kill house.
 <<case 15>>
-	 Has (mostly) taken on the appearance of a professional military installation, with clearly defined soldier and logistical areas, dedicated support and recreation facilities, and advanced command and control apparatus. As final measures, quad heavy, long range, tri barreled electromagnetic railgun artillery 406 cm pieces have been installed in fortified EMP/jammer resistant casemates along the aerial launch pads and a powerful arcology wide electromagnetic forcefield has been installed, giving $securityForceName an immense superiority in local firepower.
+	 Has (mostly) taken on the appearance of a professional military installation, with clearly defined soldier and logistical areas, dedicated support and recreation facilities, and advanced command and control apparatus. As final measures, quad heavy, long range, tri-barrelled electromagnetic railgun artillery 406 cm pieces have been installed in fortified EMP/jammer resistant casemates along the aerial launch pads and a powerful arcology wide electromagnetic forcefield has been installed, giving $securityForceName an immense superiority in local firepower.
 	<br>After pooling resources between several departmental R&D teams, $securityForceName now has a faster and much more efficient custom network. <br>Added electronics to the kill house.
 <<case 16>>
-	 Has (mostly) taken on the appearance of a professional military installation, with clearly defined soldier and logistical areas, dedicated support and recreation facilities, and advanced command and control apparatus. As final measures, quad heavy, long range, tri barreled electromagnetic railgun artillery 406 cm pieces have been installed in fortified EMP/jammer resistant casemates along the aerial launch pads and a powerful arcology wide electromagnetic forcefield has been installed, giving $securityForceName an immense superiority in local firepower.
+	 Has (mostly) taken on the appearance of a professional military installation, with clearly defined soldier and logistical areas, dedicated support and recreation facilities, and advanced command and control apparatus. As final measures, quad heavy, long range, tri-barrelled electromagnetic railgun artillery 406 cm pieces have been installed in fortified EMP/jammer resistant casemates along the aerial launch pads and a powerful arcology wide electromagnetic forcefield has been installed, giving $securityForceName an immense superiority in local firepower.
 	<br>After pooling resources between several departmental R&D teams, $securityForceName now has a faster and much more efficient custom network. <br>Added VR support to the kill house.
 <</switch>>
 
@@ -68,7 +68,7 @@
 */
 
 <br><br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ''Armory:''
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ''armoury:''
 <<switch $securityForceInfantryPower>>
 <<case 0>>
 	 Is well-stocked with high-quality personal weapons and light armour, but contains little in the way of exceptional armament.
@@ -108,22 +108,22 @@
 <<case 2>>
 	 Replaced the soldiers' stimulants with methamphetamine-based variants, greatly increasing their alertness and aggressiveness when under their influence.
 <<case 3>>
-	 Improved and concentrated the methamphetamine-based stimulants, and has also begun providing soldiers with phenylcyclidine-based dissociatives, allowing the soldiers to excuse their actions in the field and reducing any reluctance to follow severe orders.
+	 Improved and concentrated the methamphetamine-based stimulants, and has also begun providing soldiers with phencyclidine-based dissociatives, allowing the soldiers to excuse their actions in the field and reducing any reluctance to follow severe orders.
 <<case 4>>
-	 Has further refined the formulas of the methamphetamine-based stimulants and phenylcyclidine-based dissociatives, and has also begun providing tryptamine-based psychedelics to the soldiers, allowing them to avoid traumatic stress in the field.
+	 Has further refined the formulas of the methamphetamine-based stimulants and phencyclidine-based dissociatives, and has also begun providing tryptamine-based psychedelics to the soldiers, allowing them to avoid traumatic stress in the field.
 <<case 5>>
-	 Has maximally refined the formulas of the methamphetamine-based stimulants, phenylcyclidine-based dissociatives, and tryptamine-based psychedelics, increasing their effectiveness in all aspects and ensuring that the soldiers of $securityForceName go into combat wired, aggressive, and euphoric (if needed).
+	 Has maximally refined the formulas of the methamphetamine-based stimulants, phencyclidine-based dissociatives, and tryptamine-based psychedelics, increasing their effectiveness in all aspects and ensuring that the soldiers of $securityForceName go into combat wired, aggressive, and euphoric (if needed).
 <<case 6>>
-	 Has slightly refined the formulas of higher purity methamphetamine-based stimulants, phenylcyclidine-based dissociatives, and tryptamine-based psychedelics, increasing their effectiveness in all aspects and ensuring that the soldiers of $securityForceName go into combat wired, aggressive, and euphoric (if needed).
+	 Has slightly refined the formulas of higher purity methamphetamine-based stimulants, phencyclidine-based dissociatives, and tryptamine-based psychedelics, increasing their effectiveness in all aspects and ensuring that the soldiers of $securityForceName go into combat wired, aggressive, and euphoric (if needed).
 <<case 7>>
-	 Has maximally refined the formulas of higher purity methamphetamine-based stimulants, phenylcyclidine-based dissociatives, and tryptamine-based psychedelics, increasing their effectiveness in all aspects and ensuring that the soldiers of $securityForceName go into combat wired, aggressive, and euphoric (if needed).
+	 Has maximally refined the formulas of higher purity methamphetamine-based stimulants, phencyclidine-based dissociatives, and tryptamine-based psychedelics, increasing their effectiveness in all aspects and ensuring that the soldiers of $securityForceName go into combat wired, aggressive, and euphoric (if needed).
 <<case 8>>
-	 Has mixed the higher purity methamphetamine-based stimulants, phenylcyclidine-based dissociatives, and tryptamine-based psychedelics into a single dose further increasing their effectiveness in all aspects and ensuring that the soldiers of $securityForceName go into combat wired, aggressive, and euphoric (if needed). However side effects may include (no particular order): Dissociative Identity Disorder , severe clincal depresssion, unstopabble vomitting, extreme paranoia, PTSD, finally total organ failfure. Recommended by 9/10 doctors*. <br>* Only the doctors of $securityForceName were consulted to ensure a completely unbiased result.
+	 Has mixed the higher purity methamphetamine-based stimulants, phencyclidine-based dissociatives, and tryptamine-based psychedelics into a single dose further increasing their effectiveness in all aspects and ensuring that the soldiers of $securityForceName go into combat wired, aggressive, and euphoric (if needed). However side effects may include (no particular order): Dissociative Identity Disorder , severe clinical depression, unstoppable vomiting, extreme paranoia, PTSD, finally total organ failure. Recommended by 9/10 doctors*. <br>* Only the doctors of $securityForceName were consulted to ensure a completely unbiased result.
 <<case 9>>
-	 Has mixed the higher purity methamphetamine-based stimulants, phenylcyclidine-based dissociatives, and tryptamine-based psychedelics into a single dose further increasing their effectiveness in all aspects and ensuring that the soldiers of $securityForceName go into combat wired, aggressive, and euphoric (if needed). Potentinal side effects have been reduced slightly to "only mildly" severe ones: Dissociative Identity Disorder , severe clincal depresssion, unstopabble vomitting, extreme paranoia and PTSD. Now recommended by 15/10 doctors*. <br>* Only the doctors of $securityForceName were consulted to ensure a completely unbiased result.
+	 Has mixed the higher purity methamphetamine-based stimulants, phencyclidine-based dissociatives, and tryptamine-based psychedelics into a single dose further increasing their effectiveness in all aspects and ensuring that the soldiers of $securityForceName go into combat wired, aggressive, and euphoric (if needed). Potential side effects have been reduced slightly to “only mildly” severe ones: Dissociative Identity Disorder , severe clinical depression, unstoppable vomiting, extreme paranoia and PTSD. Now recommended by 15/10 doctors*. <br>* Only the doctors of $securityForceName were consulted to ensure a completely unbiased result.
 <<case 10>>
-	 Has increased the single dose strength of the mixture of higher purity methamphetamine-based stimulants, phenylcyclidine-based dissociatives, and tryptamine-based psychedelics which further increases their effectiveness in all aspects and ensuring that the soldiers of $securityForceName go into combat wired, aggressive, and euphoric (if needed) at the cost of lengthing the effects.
-	 <br>Potentinal side effects have been reduced slightly to "only mildly" severe ones: Dissociative Identity Disorder , severe clincal depresssion, unstopabble vomitting, extreme paranoia and PTSD. Now recommended by 15/10 doctors*. <br>* Only the doctors of $securityForceName were consulted to ensure a completely unbiased result.
+	 Has increased the single dose strength of the mixture of higher purity methamphetamine-based stimulants, phencyclidine-based dissociatives, and tryptamine-based psychedelics which further increases their effectiveness in all aspects and ensuring that the soldiers of $securityForceName go into combat wired, aggressive, and euphoric (if needed) at the cost of lengthening the effects.
+	 <br>Potentinal side effects have been reduced slightly to "only mildly" severe ones: Dissociative Identity Disorder , severe clinical depression, unstoppable vomiting, extreme paranoia and PTSD. Now recommended by 15/10 doctors*. <br>* Only the doctors of $securityForceName were consulted to ensure a completely unbiased result.
 <</switch>>
 
 <<if _Garage > 0 && $securityForceArcologyUpgrades >= 1>>
@@ -156,9 +156,9 @@
 <<case 1>>
 	A basic heavy battle tank has been 'borrowed' from the old world.
 <<case 2>>
-	Modernised the armor.
+	Modernised the armour.
 <<case 3>>
-	Modernised the armor and upgradeded the main gun to a 356 cm barrel.
+	Modernised the armour and upgraded the main gun to a 356 cm barrel.
 <</switch>>
 <</if>>
 <</if>>
@@ -170,33 +170,33 @@
 ''Airforce:''
 <<switch $securityForceAircraftPower>>
 <<case 0>>
-	Primarily consists of light transport VTOLs equipped with non-lethal weaponry.
+	Primarily consists of light transport VTOL's equipped with non-lethal weaponry.
 <<case 1>>
-	Upgraded light transport VTOLs  with additional fire-power and lethal weaponry.
+	Upgraded light transport VTOL's  with additional fire-power and lethal weaponry.
 <<case 2>>
-	The VTOLs have been upgraded to higher-capacity variants with heavier weaponry.
+	The VTOL's have been upgraded to higher-capacity variants with heavier weaponry.
 <<case 3>>
-	The medium transport VTOLs have been upgraded with enhanced armour and customized cargo compartments to better transport captured stock.
+	The medium transport VTOL's have been upgraded with enhanced armour and customized cargo compartments to better transport captured stock.
 <<case 4>>
-	Acquired specialized attack VTOLs to complement and escort its advanced transport fleet, as well as to provide close air support.
+	Acquired specialized attack VTOL's to complement and escort its advanced transport fleet, as well as to provide close air support.
 <<case 5>>
-	Upgraded its attack VTOLs for enhanced lethality, and further improved the armour and armament of its transport VTOLs, ensuring that the airfleet of $securityForceName is amongst the most capable still in operation in the area.
+	Upgraded its attack VTOL's for enhanced lethality, and further improved the armour and armament of its transport VTOL's, ensuring that the airfleet of $securityForceName is amongst the most capable still in operation in the area.
 <<case 6>>
-	Upgraded its attack VTOLs for enhanced lethality/speed, and further improved the armour and armament of its transport VTOLs, ensuring that the airfleet of $securityForceName is amongst the most capable still in operation in the area.
+	Upgraded its attack VTOL's for enhanced lethality/speed, and further improved the armour and armament of its transport VTOL's, ensuring that the airfleet of $securityForceName is amongst the most capable still in operation in the area.
 <<case 7>>
-	Upgraded its attack VTOLs for enhanced lethality/speed/armour, and further improved the armour and armament of its transport VTOLs, ensuring that the airfleet of $securityForceName is amongst the most capable still in operation in the area.
+	Upgraded its attack VTOL's for enhanced lethality/speed/armour, and further improved the armour and armament of its transport VTOL's, ensuring that the airfleet of $securityForceName is amongst the most capable still in operation in the area.
 <<case 8>>
-	Upgraded its attack VTOLs for enhanced lethality/speed/armour, and further improved the armour and armament of its transport VTOLs, ensuring that the airfleet of $securityForceName is amongst the most capable still in operation in the area. <br>Also It now possesses a basic old world bomber.
+	Upgraded its attack VTOL's for enhanced lethality/speed/armour, and further improved the armour and armament of its transport VTOL's, ensuring that the airfleet of $securityForceName is amongst the most capable still in operation in the area. <br>Also It now possesses a basic old world bomber.
 <<case 9>>
-	Upgraded its attack VTOLs for enhanced lethality/speed/armour, and further improved the armour and armament of its transport VTOLs, ensuring that the airfleet of $securityForceName is amongst the most capable still in operation in the area. <br>Improved the bomber's engines.
+	Upgraded its attack VTOL's for enhanced lethality/speed/armour, and further improved the armour and armament of its transport VTOL's, ensuring that the airfleet of $securityForceName is amongst the most capable still in operation in the area. <br>Improved the bomber's engines.
 <<case 10>>
-	Upgraded its attack VTOLs for enhanced lethality/speed/armour, and further improved the armour and armament of its transport VTOLs, ensuring that the airfleet of $securityForceName is amongst the most capable still in operation in the area. <br>Improved the bomber's engines and armour.
+	Upgraded its attack VTOL's for enhanced lethality/speed/armour, and further improved the armour and armament of its transport VTOL's, ensuring that the airfleet of $securityForceName is amongst the most capable still in operation in the area. <br>Improved the bomber's engines and armour.
 <</switch>>
 <<if $securityForceSpacePlanePower > 0>>
 <br>''Space Plane:''
 <<switch $securityForceSpacePlanePower>>
 	<<case 1>>
-		A basic two engine SpacePlane has been 'borrowed' from the old world.
+		A basic twin engine space plane has been 'borrowed' from the old world.
 	<<case 2>>
 		Upgraded the shielding, reducing both potential heat damage and radar signature.
 	<<case 3>>
@@ -212,26 +212,26 @@
 	<<case 8>>
 		Upgraded the shielding, reducing both potential heat damage and radar signature, mounted another engine on top of the tail. Modernized the electronics in addition to the fuel lines to increase efficiency and the engines to allow for more efficient fuel. Reduced the weight and reworked the body to reduce drag. Increased the crew comfort and life support systems to increase operational time.
 	<<case 9>>
-		Upgraded the shielding, reducing both potential heat damage and radar signature, mounted another engine on top of the tail. Modernized the electronics in addition to the fuel lines to increase efficiency and the engines to allow for more efficient fuel. Reduced the weight and reworked the body to reduce drag. Increased the crew comfort and life support systems to increase operational time. Added an additional engine per wing which greatly increases acceleration and raises the top speed to mach 15, making the Space Plane of $securityForceName untouchable.
+		Upgraded the shielding, reducing both potential heat damage and radar signature, mounted another engine on top of the tail. Modernized the electronics in addition to the fuel lines to increase efficiency and the engines to allow for more efficient fuel. Reduced the weight and reworked the body to reduce drag. Increased the crew comfort and life support systems to increase operational time. Added an engine per wing which greatly increases acceleration and raises the top speed to mach 15, making the Space Plane of $securityForceName untouchable.
 	<<case 10>>
-		Upgraded the shielding, reducing both potential heat damage and radar signature, mounted another engine on top of the tail. Modernized the electronics in addition to the fuel lines to increase efficiency and the engines to allow for more efficient fuel. Reduced the weight and reworked the body to reduce drag. Increased the crew comfort and life support systems to increase operational time. Added an additional engine per wing which greatly increases acceleration and raises the top speed to mach 15, making the Space Plane of $securityForceName untouchable. Replaced the skin with a basic optical illusion kit.
+		Upgraded the shielding, reducing both potential heat damage and radar signature, mounted another engine on top of the tail. Modernized the electronics in addition to the fuel lines to increase efficiency and the engines to allow for more efficient fuel. Reduced the weight and reworked the body to reduce drag. Increased the crew comfort and life support systems to increase operational time. Added an engine per wing which greatly increases acceleration and raises the top speed to mach 15, making the Space Plane of $securityForceName untouchable. Replaced the skin with a basic optical illusion kit.
 	<<case 11>>
-		Upgraded the shielding, reducing both potential heat damage and radar signature, mounted another engine on top of the tail. Modernized the electronics in addition to the fuel lines to increase efficiency and the engines to allow for more efficient fuel. Reduced the weight and reworked the body to reduce drag. Increased the crew comfort and life support systems to increase operational time. Added an additional engine per wing which greatly increases acceleration and raises the top speed to mach 15, making the Space Plane of $securityForceName untouchable. Replaced the skin with an advanced optical illusion kit.
+		Upgraded the shielding, reducing both potential heat damage and radar signature, mounted another engine on top of the tail. Modernized the electronics in addition to the fuel lines to increase efficiency and the engines to allow for more efficient fuel. Reduced the weight and reworked the body to reduce drag. Increased the crew comfort and life support systems to increase operational time. Added an engine per wing which greatly increases acceleration and raises the top speed to mach 15, making the Space Plane of $securityForceName untouchable. Replaced the skin with an advanced optical illusion kit.
 	<<case 12>>
-		Upgraded the shielding, reducing both potential heat damage and radar signature, mounted another engine on top of the tail. Modernized the electronics in addition to the fuel lines to increase efficiency and the engines to allow for more efficient fuel. Reduced the weight and reworked the body to reduce drag. Increased the crew comfort and life support systems to increase operational time. Added VTOL capabilites into an additional engine per wing which greatly increases acceleration and raises the top speed to mach 15, making the Space Plane of $securityForceName untouchable. Replaced the skin with an advanced optical illusion kit.
+		Upgraded the shielding, reducing both potential heat damage and radar signature, mounted another engine on top of the tail. Modernized the electronics in addition to the fuel lines to increase efficiency and the engines to allow for more efficient fuel. Reduced the weight and reworked the body to reduce drag. Increased the crew comfort and life support systems to increase operational time. Added VTOL capabilities into an additional engine per wing which greatly increases acceleration and raises the top speed to Mach 15, making the Space Plane of $securityForceName untouchable. Replaced the skin with an advanced optical illusion kit.
 <</switch>>
 <</if>>
 <<if $securityForceFortressZeppelin > 0>>
 <br>''Fortress Zeppelin:''
 <<switch $securityForceFortressZeppelin>>
 	<<case 1>>
-		A basic fortress zeppelin has been 'borrowed' from the old world.
+		A basic fortress Zeppelin has been 'borrowed' from the old world.
 	<<case 2>>
-		Modernized the armor.
+		Modernized the armour.
 	<<case 3>>
-		Modernized the armor and weaponry.
+		Modernized the armour and weaponry.
 	<<case 4>>
-		Modernized the armor and weaponry. Improved the speaker system.
+		Modernized the armour and weaponry. Improved the speaker system.
 <</switch>>
 <</if>>
 <<if $securityForceAC130 > 0>>
@@ -240,15 +240,15 @@
 	<<case 1>>
 		A basic AC-130 has been 'borrowed' from the old world.
 	<<case 2>>
-		Modernized the armor.
+		Modernized the armour.
 	<<case 3>>
-		Modernized the armor and weaponry.
+		Modernized the armour and weaponry.
 	<<case 4>>
-		Modernized the armor, weaponry and electronics.
+		Modernized the armour, weaponry and electronics.
 	<<case 5>>
-		Modernized the armor, weaponry, electronics and crew seating.
+		Modernized the armour, weaponry, electronics and crew seating.
 	<<case 6>>
-		Modernized the armor, weaponry, electronics and crew seating. Increased the speed and moverability.
+		Modernized the armour, weaponry, electronics and crew seating. Increased the speed and moverability.
 <</switch>>
 <</if>>
 <<if $securityForceHeavyTransport > 0>>
@@ -257,11 +257,11 @@
 	<<case 1>>
 		A basic heavy transport has been 'borrowed' from the old world.
 	<<case 2>>
-		Modernized the armor.
+		Modernized the armour.
 	<<case 3>>
-		Modernized the armor and engines.
+		Modernized the armour and engines.
 	<<case 4>>
-		Modernized the armor and engines. Replaced the ballistic gun mounts with electromagnetic ones.
+		Modernized the armour and engines. Replaced the ballistic gun mounts with electromagnetic ones.
 <</switch>>
 <</if>>
 <</if>>
@@ -310,35 +310,35 @@
 	<<case 6>>
 		Modernized the electronics, wiring and circuitry. Boosted the advanced comms jammer power by 25% (now can damage affected equipment).
 	<<case 7>>
-		Modernized the electronics, wiring and circuitry. Boosted the advanced comms jammer's power by 50% (now can destroy affected equipment).
+		Modernized the electronics, wiring and circuitry. Boosted the power of the advanced comms jammer by 50% (now can destroy affected equipment).
 	<<case 8>>
-		Modernized the electronics, wiring and circuitry. Boosted the advanced comms jammer's power by 50% (now can destroy affected equipment). The Satellite is now equipped with a basic EMP generator (advanced EMP hardening was applied before the insulation and activation) that will "slightly" anger locals until it is deactivated.
+		Modernized the electronics, wiring and circuitry. Boosted the power of the advanced comms jammer by 50% (now can destroy affected equipment). The Satellite is now equipped with a basic EMP generator (advanced EMP hardening was applied before the insulation and activation) that will "slightly" anger locals until it is deactivated.
 	<<case 9>>
-		Modernized the electronics, wiring and circuitry. Boosted the advanced comms jammer's power by 50% (now can destroy affected equipment). The Satellite is now equipped with an advanced EMP generator by, increasing the AO localization which reduces the quantity of affected equipment.
+		Modernized the electronics, wiring and circuitry. Boosted the power of the advanced comms jammer by 50% (now can destroy affected equipment). The Satellite is now equipped with an advanced EMP generator by, increasing the AO localization which reduces the quantity of affected equipment.
 	<<case 10>>
-		Modernized the electronics, wiring and circuitry. Boosted the advanced comms jammer's power by 50% (now can destroy affected equipment) and the output of the advanced EMP generator by 25% (now can damage affected equipment).
+		Modernized the electronics, wiring and circuitry. Boosted the power of the advanced comms jammer by 50% (now can destroy affected equipment) and the output of the advanced EMP generator by 25% (now can damage affected equipment).
 	<<case 11>>
-		Modernized the electronics, wiring and circuitry. Boosted the advanced comms jammer's power by 50% (now can destroy affected equipment) and the output of the advanced EMP generator by 50% (now can destroy affected equipment).
+		Modernized the electronics, wiring and circuitry. Boosted the power of the advanced comms jammer by 50% (now can destroy affected equipment) and the output of the advanced EMP generator by 50% (now can destroy affected equipment).
 	<<case 12>>
-		Modernized the electronics, wiring and circuitry. Boosted the advanced comms jammer's power by 50% (now can destroy affected equipment) and the output of the advanced EMP generator by 50% (now can destroy affected equipment). Provided R&D funds to be able to shoot a concentrated beam of pure energy that is able to level an entire city block. It required overhauling the battery system and shielding.
+		Modernized the electronics, wiring and circuitry. Boosted the power of the advanced comms jammer by 50% (now can destroy affected equipment) and the output of the advanced EMP generator by 50% (now can destroy affected equipment). Provided R&D funds to be able to shoot a concentrated beam of pure energy that is able to level an entire city block. It required overhauling the battery system and shielding.
 	<<case 13>>
-		Modernized the electronics, wiring and circuitry. Boosted the advanced comms jammer's power by 50% (now can destroy affected equipment) and the output of the advanced EMP generator by 50% (now can destroy affected equipment). Provided R&D funds to focus the beam enough to level a suburb.
+		Modernized the electronics, wiring and circuitry. Boosted the power of the advanced comms jammer by 50% (now can destroy affected equipment) and the output of the advanced EMP generator by 50% (now can destroy affected equipment). Provided R&D funds to focus the beam enough to level a suburb.
 	<<case 14>>
-		Modernized the electronics, wiring and circuitry. Boosted the advanced comms jammer's power by 50% (now can destroy affected equipment) and the output of the advanced EMP generator by 50% (now can destroy affected equipment). Provided R&D funds to focus the beam enough to level a block of houses.
+		Modernized the electronics, wiring and circuitry. Boosted the power of the advanced comms jammer by 50% (now can destroy affected equipment) and the output of the advanced EMP generator by 50% (now can destroy affected equipment). Provided R&D funds to focus the beam enough to level a block of houses.
 	<<case 15>>
-		Modernized the electronics, wiring and circuitry. Boosted the advanced comms jammer's power by 50% (now can destroy affected equipment) and the output of the advanced EMP generator by 50% (now can destroy affected equipment). Provided R&D funds to focus the beam enough to level a single house.
+		Modernized the electronics, wiring and circuitry. Boosted the power of the advanced comms jammer by 50% (now can destroy affected equipment) and the output of the advanced EMP generator by 50% (now can destroy affected equipment). Provided R&D funds to focus the beam enough to level a single house.
 	<<case 16>>
-		Modernized the electronics, wiring and circuitry. Boosted the advanced comms jammer's power by 50% (now can destroy affected equipment) and the output of the advanced EMP generator by 50% (now can destroy affected equipment). Provided R&D funds to focus the beam enough to level 366 cm.
+		Modernized the electronics, wiring and circuitry. Boosted the power of the advanced comms jammer by 50% (now can destroy affected equipment) and the output of the advanced EMP generator by 50% (now can destroy affected equipment). Provided R&D funds to focus the beam enough to level 366 cm.
 	<<case 17>>
-		Modernized the electronics, wiring and circuitry. Boosted the advanced comms jammer's power by 50% (now can destroy affected equipment) and the output of the advanced EMP generator by 50% (now can destroy affected equipment). Provided R&D funds to focus the beam enough to level 30 cm.
+		Modernized the electronics, wiring and circuitry. Boosted the power of the advanced comms jammer by 50% (now can destroy affected equipment) and the output of the advanced EMP generator by 50% (now can destroy affected equipment). Provided R&D funds to focus the beam enough to level 30 cm.
 	<<case 18>>
-		Modernized the electronics, wiring and circuitry. Boosted the advanced comms jammer's power by 50% (now can destroy affected equipment) and the output of the advanced EMP generator by 50% (now can destroy affected equipment). Provided R&D funds to focus the beam enough to level 15 cm.
+		Modernized the electronics, wiring and circuitry. Boosted the power of the advanced comms jammer by 50% (now can destroy affected equipment) and the output of the advanced EMP generator by 50% (now can destroy affected equipment). Provided R&D funds to focus the beam enough to level 15 cm.
 	<<case 19>>
-		Modernized the electronics, wiring and circuitry. Boosted the advanced comms jammer's power by 50% (now can destroy affected equipment) and the output of the advanced EMP generator by 50% (now can destroy affected equipment). Provided R&D funds to switch the 15 cm wide beam from laser to nanites.
+		Modernized the electronics, wiring and circuitry. Boosted the power of the advanced comms jammer by 50% (now can destroy affected equipment) and the output of the advanced EMP generator by 50% (now can destroy affected equipment). Provided R&D funds to switch the 15 cm wide beam from laser to nanites.
 	<<case 20>>
-		Modernized the electronics, wiring and circuitry. Boosted the advanced comms jammer's power by 50% (now can destroy affected equipment) and the output of the advanced EMP generator by 50% (now can destroy affected equipment). Provided R&D funds to switch the 15 cm wide beam from laser to nanites and allow the beam to be split (if needed).
+		Modernized the electronics, wiring and circuitry. Boosted the power of the advanced comms jammer by 50% (now can destroy affected equipment) and the output of the advanced EMP generator by 50% (now can destroy affected equipment). Provided R&D funds to switch the 15 cm wide beam from laser to nanites and allow the beam to be split (if needed).
 	<<case 21>>
-		Modernized the electronics (in addition to overclocking), wiring and circuitry. Boosted the advanced comms jammer's power by 50% (now can destroy affected equipment) and the output of the advanced EMP generator by 50% (now can destroy affected equipment). Provided R&D funds to switch the 15 cm wide beam from laser to nanites and allow the beam to be split (if needed).
+		Modernized the electronics (in addition to overclocking), wiring and circuitry. Boosted the power of the advanced comms jammer by 50% (now can destroy affected equipment) and the output of the advanced EMP generator by 50% (now can destroy affected equipment). Provided R&D funds to switch the 15 cm wide beam from laser to nanites and allow the beam to be split (if needed).
 <</switch>>
 <</if>>
 <<if $securityForceGiantRobot > 0>>
@@ -369,13 +369,13 @@
 	<<case 12>>
 		Upgraded the wiring, circuitry, power efficiency, battery capacity, armour and weapons to include heat seeking missiles, a massive long sword, quad 356 cm back mounted nanite rather than electromagnetic cannons. Increased the number of pilots to two via a synced neural link. Improved the life support systems, allowing for longer operational time. Replaced the skin of $securityForceName's giant robot with an advanced optical illusion kit.
 	<<case 13>>
-		Upgraded the wiring, circuitry, power efficiency, battery capacity, armour and weapons to include heat seeking missiles, a massive long sword, quad 356 cm back mounted nanite rather than electromagnetic cannons. Increased the number of pilots to two via a synced neural link. Improved the life support systems, allowing for longer operational time. Replaced the skin of $securityForceName's giant robot with an advanced optical illusion kit. Added hover capabilites.
+		Upgraded the wiring, circuitry, power efficiency, battery capacity, armour and weapons to include heat seeking missiles, a massive long sword, quad 356 cm back mounted nanite rather than electromagnetic cannons. Increased the number of pilots to two via a synced neural link. Improved the life support systems, allowing for longer operational time. Replaced the skin of $securityForceName's giant robot with an advanced optical illusion kit. Added hover capabilities.
 	<<case 14>>
-		Upgraded the wiring, circuitry, power efficiency, battery capacity, armour and weapons to include heat seeking missiles, a massive long sword, quad 356 cm back mounted nanite rather than electromagnetic cannons and a massive wrist mounted shield. Increased the number of pilots to two via a synced neural link. Improved the life support systems, allowing for longer operational time. Replaced the skin of $securityForceName's giant robot with an advanced optical illusion kit. Added hover capabilites.
+		Upgraded the wiring, circuitry, power efficiency, battery capacity, armour and weapons to include heat seeking missiles, a massive long sword, quad 356 cm back mounted nanite rather than electromagnetic cannons and a massive wrist mounted shield. Increased the number of pilots to two via a synced neural link. Improved the life support systems, allowing for longer operational time. Replaced the skin of $securityForceName's giant robot with an advanced optical illusion kit. Added hover capabilities.
 	<<case 15>>
-		Upgraded the wiring, circuitry, power efficiency, battery capacity, armour and weapons to include heat seeking missiles, a massive long sword, quad 356 cm back mounted nanite rather than electromagnetic cannons, a massive wrist mounted shield and electric fists. Increased the number of pilots to two via a synced neural link. Improved the life support systems, allowing for longer operational time. Replaced the skin of $securityForceName's giant robot with an advanced optical illusion kit. Added hover capabilites.
+		Upgraded the wiring, circuitry, power efficiency, battery capacity, armour and weapons to include heat seeking missiles, a massive long sword, quad 356 cm back mounted nanite rather than electromagnetic cannons, a massive wrist mounted shield and electric fists. Increased the number of pilots to two via a synced neural link. Improved the life support systems, allowing for longer operational time. Replaced the skin of $securityForceName's giant robot with an advanced optical illusion kit. Added hover capabilities.
 	<<case 16>>
-		Upgraded the wiring, circuitry, power efficiency, battery capacity, armour and weapons to include heat seeking missiles, a massive long sword, quad 356 cm back mounted nanite rather than electromagnetic cannons, a massive wrist mounted shield and electric fists. Increased the number of pilots to two via a synced neural link. Improved the life support systems, allowing for longer operational time. Replaced the skin of $securityForceName's giant robot with an advanced optical illusion kit. Added hover capabilites. Overclocked the movement systems allowing for greater mobility.
+		Upgraded the wiring, circuitry, power efficiency, battery capacity, armour and weapons to include heat seeking missiles, a massive long sword, quad 356 cm back mounted nanite rather than electromagnetic cannons, a massive wrist mounted shield and electric fists. Increased the number of pilots to two via a synced neural link. Improved the life support systems, allowing for longer operational time. Replaced the skin of $securityForceName's giant robot with an advanced optical illusion kit. Added hover capabilities. Overclocked the movement systems allowing for greater mobility.
 <</switch>>
 <</if>>
 <<if $securityForceMissileSilo > 0>>
@@ -436,15 +436,15 @@
 	<<case 1>>
 		A basic heavy amphibious transport has been 'borrowed' from the old world.
 	<<case 2>>
-		Modernized the armor.
+		Modernized the armour.
 	<<case 3>>
-		Modernized the armor and speed.
+		Modernized the armour and speed.
 	<<case 4>>
-		Modernized the armor and speed. Added miniaturized railguns in all four corners.
+		Modernized the armour and speed. Added miniaturized railguns in all four corners.
 	<<case 5>>
-		Modernized the armor and speed. Added miniaturized railguns in all four corners and a laser designator in the midle.
+		Modernized the armour and speed. Added miniaturized railguns in all four corners and a laser designator in the middle.
 	<<case 6>>
-		Modernized the armor and speed. Replaced the corner miniaturized railguns with nanite ones while keeping the laser designator in the midle.
+		Modernized the armour and speed. Replaced the corner miniaturized railguns with nanite ones while keeping the laser designator in the middle.
 <</switch>>
 <</if>>
 <</if>>
\ No newline at end of file
diff --git a/src/pregmod/SecForceEX/SpecialForceUpgradeOptions.tw b/src/pregmod/SecForceEX/SpecialForceUpgradeOptions.tw
index c6b18ddafd3379ab948f8956b626a1c1ff7de4be..7bafd37b3eca7750eb326afa0babe853f2429358 100644
--- a/src/pregmod/SecForceEX/SpecialForceUpgradeOptions.tw
+++ b/src/pregmod/SecForceEX/SpecialForceUpgradeOptions.tw
@@ -1,6 +1,6 @@
 :: SpecialForceUpgradeOptions [nobr]
 <<set _costDebuff = 1>>
-<<HSM>>
+<<set $HackingSkillMultiplier = HSM()>>
 <<if ($SFAO < _max) && $securityForceUpgradeToken == 0>>
 <span id="resultX">
 	<br>Which facility or equipment do you wish _Name to upgrade this week?
diff --git a/src/pregmod/SecForceEX/securityForceTradeShow.tw b/src/pregmod/SecForceEX/securityForceTradeShow.tw
index f42f8d0266939a0de966c2021964b59d9943973f..7977ca5a82c3346a112d5cb8802eff41b6acbcc0 100644
--- a/src/pregmod/SecForceEX/securityForceTradeShow.tw
+++ b/src/pregmod/SecForceEX/securityForceTradeShow.tw
@@ -103,7 +103,7 @@ The (bi-yearly) security trade show has finally come around and even though you'
 	<<set _MenialSlaves = Math.ceil(random(0,_TradeShowAttendes)*_BonusProviderPercentage*_MenialSlavesPerAttendee*_PersuationBonus)>>
 	<<set _Profit = Math.ceil($cash*.010*$SFNO || $SFO*$arcologies[0].prosperity*$Env)*_PersuationBonus>>
 
-		<br>During a break, The Colonel manages to sell some generic scematics to the _TradeShowAttendes people peresent, some decided to also give her some menial slaves as a bonus.
+		<br>During a break, The Colonel manages to sell some generic schematics to the _TradeShowAttendes people present, some decided to also give her some menial slaves as a bonus.
 
 			<<set $helots = $helots+_MenialSlaves>>
 			<<set $TradeShowHelots += _MenialSlaves>>
@@ -116,7 +116,7 @@ The (bi-yearly) security trade show has finally come around and even though you'
 		<<if $ColonelRelationship >= 400 && $LieutenantColonel == 1 && $ColonelCore == "brazen">>
 			<br><br>	
 			<<link "Have sex with The Colonel in a bathroom stall">>
-				The crowd are shocked by the loud noises comming from a bathroom stall.
+				The crowd are shocked by the loud noises coming from a bathroom stall.
 				<<set $rep -= 150, $securityForceSexedColonel += 1>>
 			<</link>>
 		<</if>>
@@ -126,7 +126,7 @@ The (bi-yearly) security trade show has finally come around and even though you'
 	
 	<<link "Request she remain on base">>
 	<<replace "#choice2">>
-		<br>The look of disappointement is bearly noticable on The Colonel's face.
+		<br>The look of disappointement is barely noticeable on The Colonel's face.
 	<</replace>>
 	<</link>>
 
diff --git a/src/pregmod/basenationalitiesControls.tw b/src/pregmod/basenationalitiesControls.tw
index a4ca9501ff17042828615842b7f652e7870c9c02..e0dd96ed016cc57bee36c00d9cde82d45eb95fed 100644
--- a/src/pregmod/basenationalitiesControls.tw
+++ b/src/pregmod/basenationalitiesControls.tw
@@ -1,6 +1,6 @@
 :: Basenationalities Controls [nobr]
 
-<<if $nationalities.length < 1>>
+<<if hashSum($nationalities) < 1>>
 	//You cannot be a slave owner without a slave trade. Please add nationalities to continue.//
 <<else>>
 	<<link "Confirm customization">>
@@ -15,14 +15,14 @@
 <br>
 
 /* Generates cloned array of $nationalities, removing duplicates and then sorting */
-<<set $nationalitiescheck = _.uniq($nationalities, false).sort()>>
+<<set $nationalitiescheck = Object.assign({}, $nationalities)>>
 
 /* Prints distribution of $nationalities, using $nationalitiescheck to render array */
-<<set _percentPerPoint = 100.0 / $nationalities.length>>
-<<for _i = 0; _i < $nationalitiescheck.length; _i++>>
-	<<set _nation = $nationalitiescheck[_i]>>
-	_nation @@.orange;<<= ($nationalities.count(_nation) * _percentPerPoint).toFixed(2)>>%@@
-	<<if _i < $nationalitiescheck.length-1>> | <</if>>
+<<set _percentPerPoint = 100.0 / hashSum($nationalities)>>
+<<set _len = Object.keys($nationalitiescheck).length>>
+<<for _nation, _i range $nationalitiescheck>>
+	_nation @@.orange;<<= ($nationalities[_nation] * _percentPerPoint).toFixed(2)>>%@@
+	<<if _i < _len-1>> | <</if>>
 <</for>>
 <<unset _percentPerPoint>>
 <br><br>
@@ -76,24 +76,27 @@ Filter by Region:
 		<div style="float: left;">
 		<<set _nation = setup.baseNationalities[_i]>>
 		<<print "
-		_nation 
+		_nation
 			@@.plusButton;<<link '+'>>
-				<<set $nationalities.push(setup.baseNationalities[" + _i + "])>>
+				<<set hashPush($nationalities, setup.baseNationalities["+_i+"])>>
 				<<replace '#PopControl'>><<include 'Basenationalities Controls'>><</replace>>
 			<</link>>@@
 		">>
-	<<if $nationalitiescheck.includes(_nation) > 0 >>
+	<<if def $nationalitiescheck[_nation]>>
 		<<print "
 			@@.minusButton;<<link '–'>>
-				<<set $nationalities.deleteAt(($nationalities.indexOf(setup.baseNationalities[" + _i + "])))>>
+				<<set $nationalities[setup.baseNationalities["+_i+"]] -= 1>>
+				<<if $nationalities[setup.baseNationalities["+_i+"]] <= 0>>
+					<<set delete $nationalities[setup.baseNationalities["+_i+"]]>>
+				<</if>>
 				<<replace '#PopControl'>><<include 'Basenationalities Controls'>><</replace>>
 			<</link>>@@
 		">>
 		<</if>>
-	<<if $nationalities.count(_nation) > 1 >>
+	<<if $nationalities[_nation] > 1 >>
 		<<print "
 			@@.zeroButton;<<link '0'>>
-				<<set $nationalities.delete(setup.baseNationalities[" + _i + "])>>
+				<<set delete $nationalities[setup.baseNationalities["+_i+"]]>>
 				<<replace '#PopControl'>><<include 'Basenationalities Controls'>><</replace>>
 			<</link>>@@
 		">>
@@ -105,19 +108,19 @@ Filter by Region:
 	<<foreach _race of setup.filterRaces>>
 		<<set _racialNationalities = setup.baseNationalities.filter(function(n) {
 			var races = setup.raceSelector[n] || setup.raceSelector[''];
-			return races.count(_race.toLowerCase()) * 2 > races.length; })>>
+			return races[_race.toLowerCase()] * 2 > hashSum(races); })>>
 		<<if _racialNationalities.length > 0>>
 			<<= "<div style='float: left; width: 13em; padding: 0 5px;' title='"
 				+ (_racialNationalities.length > 0 ? _racialNationalities.join(", ") : "(none)") 
 				+"'>_race @@.plusButton; <<link '+'>>
-				<<run Array.prototype.push.apply($nationalities, setup.baseNationalities.filter(function(n) {
+				<<run setup.baseNationalities.filter(function(n) {
 						var races = setup.raceSelector[n] || setup.raceSelector[''];
-						return races.count('" + _race.toLowerCase() + "') * 2 > races.length; }))>>
+						return races['" + _race.toLowerCase() + "'] * 2 > hashSum(races); }).forEach(function(n) { hashPush($nationalities, n);})>>
 				<<replace '#PopControl'>><<include 'Basenationalities Controls'>><</replace>>
 			<</link>>@@ @@.zeroButton;<<link '0'>>
-				<<run Array.prototype.delete.apply($nationalities, setup.baseNationalities.filter(function(n) {
+				<<run setup.baseNationalities.filter(function(n) {
 						var races = setup.raceSelector[n] || setup.raceSelector[''];
-						return races.count('" + _race.toLowerCase() + "') * 2 > races.length; }))>>
+						return races['" + _race.toLowerCase() + "'] * 2 > hashSum(races.length); }).forEach(function(n) { delete $nationalities[n]; })>>
 				<<replace '#PopControl'>><<include 'Basenationalities Controls'>><</replace>>
 			<</link>>@@</div>">>
 		<</if>>
@@ -131,22 +134,25 @@ Filter by Region:
 		<<print "
 		_nation 
 			@@.plusButton;<<link '+'>>
-				<<set $nationalities.push(_controlsNationality[" + _i + "])>>
+				<<set hashPush($nationalities, _controlsNationality[" + _i + "])>>
 				<<replace '#PopControl'>><<include 'Basenationalities Controls'>><</replace>>
 			<</link>>@@
 		">>
-	<<if $nationalitiescheck.includes(_nation) > 0 >>
+	<<if def $nationalitiescheck[_nation]>>
 		<<print "
 			@@.minusButton;<<link '–'>>
-				<<set $nationalities.deleteAt(($nationalities.indexOf(_controlsNationality[" + _i + "])))>>
+				<<set $nationalities[_controlsNationality["+_i+"]] -= 1>>
+				<<if $nationalities[_controlsNationality["+_i+"]] <= 0>>
+					<<set delete $nationalities[_controlsNationality["+_i+"]]>>
+				<</if>>
 				<<replace '#PopControl'>><<include 'Basenationalities Controls'>><</replace>>
 			<</link>>@@
 		">>
 		<</if>>
-	<<if $nationalities.count(_nation) > 1 >>
+	<<if $nationalities[_nation] > 1 >>
 		<<print "
 			@@.zeroButton;<<link '0'>>
-				<<set $nationalities.delete(_controlsNationality[" + _i + "])>>
+				<<set delete $nationalities[_controlsNationality["+_i+"]]>>
 				<<replace '#PopControl'>><<include 'Basenationalities Controls'>><</replace>>
 			<</link>>@@
 		">>
@@ -156,4 +162,4 @@ Filter by Region:
 	<</for>>
 <</if>>
 <div style="clear: both; height: 0;"></div>
-</div>
\ No newline at end of file
+</div>
diff --git a/src/pregmod/csec.tw b/src/pregmod/csec.tw
index 048a12883fbc8764c4a3c714f2b33710dadcbd70..177a991f16525e890686952e9b7f15442d80af3a 100644
--- a/src/pregmod/csec.tw
+++ b/src/pregmod/csec.tw
@@ -43,7 +43,7 @@
 	<</if>>
 <</if>>
 <<set _afterSize = WombGetVolume($activeSlave)>> /* not really needed right now, but better to add alredy for future usage. To not forget later.*/
-<<set $diffSize = _beforeSize / (1 + _afterSize)>> /* 1 used to avoid devide by zero error.*/ 
+<<set $diffSize = _beforeSize / (1 + _afterSize)>> /* 1 used to avoid divide by zero error.*/ 
 
 <<set _incubated = 0>>
 <<set _oldDevotion = $activeSlave.devotion>>
diff --git a/src/pregmod/customizeSlaveTrade.tw b/src/pregmod/customizeSlaveTrade.tw
index bd3cc3f9d13ee972e2eeb11178fa05a2c108222e..9bed5816c428666b447cbccbe7483faa8761b2dc 100644
--- a/src/pregmod/customizeSlaveTrade.tw
+++ b/src/pregmod/customizeSlaveTrade.tw
@@ -1,9 +1,7 @@
 :: Customize Slave Trade [nobr]
 
 <<if ndef $nationalities>>
-	<<set $nationalities = []>>
-<<else>>
-	<<set $nationalities.sort()>>
+	<<set $nationalities = {}>>
 <</if>>
 <<if ndef $baseControlsFilter>>
 	<<set $baseControlsFilter = "all">>
@@ -18,7 +16,7 @@ When civilization turned upon itself, some countries readily took to enslaving t
 <br><br>
 <span id="PopControl"><<include "Basenationalities Controls">></span>
 <br>
-[[Reset filters|passage()][$baseControlsFilter = "all"]] | [[Clear all nationalities|passage()][$nationalities = []]]
+[[Reset filters|passage()][$baseControlsFilter = "all"]] | [[Clear all nationalities|passage()][$nationalities = {}]]
 <br style="clear:both" /><hr style="margin:0">
 Vanilla presets:
 <span id="vanilla-presets"></span>
@@ -44,4 +42,4 @@ var widgets = Story.widgets
 	.filter(function(w) { return Macro.has(w.replace(/[<>]/g, '')); })
 	.sort().join(' | ');
 setTimeout(function() { new Wikifier(jQuery('#mod-presets'), widgets); }, 0);
-<</script>>
\ No newline at end of file
+<</script>>
diff --git a/src/pregmod/fFeet.tw b/src/pregmod/fFeet.tw
index bc3c005a1fbceae596fd40aa96adb1947815f534..521ece90b88950edba894765f88ade972335ebe4 100644
--- a/src/pregmod/fFeet.tw
+++ b/src/pregmod/fFeet.tw
@@ -134,7 +134,7 @@
 <</if>>
 
 <<if $activeSlave.balls == 1>>
-	<<set _balls = 'vestigal'>>
+	<<set _balls = 'vestigial'>>
 <<elseif $activeSlave.balls == 2>>
 	<<set _balls = 'small'>>
 <<elseif $activeSlave.balls == 3>>
@@ -240,7 +240,7 @@ You call $activeSlave.slaveName to your office, telling $possessive to use $poss
 	$pronounCap complies quietly. 
 <<else>>
 	<<if ($activeSlave.trust < -50)>>
-		Although her she just bearly trusts that you will not harm her, she is still unshure about what you are going to do which makes her pause.
+		Although her she just barely trusts that you will not harm her, she is still unsure about what you are going to do which makes her pause.
 	<<else>>
 		$pronounCap rushes to comply. 
 	<</if>>
@@ -270,7 +270,7 @@ You call $activeSlave.slaveName to your office, telling $possessive to use $poss
 <</if>>
 <<if $activeSlave.fetish == "mindbroken">>
 	<<if $activeSlave.amp == -2 || $activeSlave.amp == -5>>
-		then pour lubricant onto your hands, aplying it to $possessive elegant artificial feet. 
+		then pour lubricant onto your hands, applying it to $possessive elegant artificial feet. 
 	<<elseif $activeSlave.amp == -4>>
 		then pour lubricant onto your hands, applying it to $possessive deadly artificial feet. 
 	<<elseif $activeSlave.amp == -1>>
@@ -299,7 +299,7 @@ You call $activeSlave.slaveName to your office, telling $possessive to use $poss
 		$pronounCap seems a bit surprised by the attention, occasionally letting out a moan.
 	<<else>>
 		<<if ($activeSlave.trust < -50)>>
-			She asks "What is this strange feeling that I am expirencing <<if def $PC.customTitle>>$PC.customTitle<<elseif $PC.title != 0>>sir<<else>>ma'am<</if>>? I am scared". Spoiling the moment.
+			She asks "What is this strange feeling that I am experiencing <<if def $PC.customTitle>>$PC.customTitle<<elseif $PC.title != 0>>sir<<else>>ma'am<</if>>? I am scared". Spoiling the moment.
 		<<else>>
 			$pronounCap enjoys the massage, moaning in pleasure at your touch.
 		<</if>>
@@ -371,9 +371,9 @@ You call $activeSlave.slaveName to your office, telling $possessive to use $poss
 	<<elseif $activeSlave.fetish == "cumslut" && $activeSlave.fetishKnown == 1 && $activeSlave.fetishStrength >= 60>>
 		As a devoted cumslut, $activeSlave.slaveName eagerly strokes your cock with $possessive feet, delightedly smearing your precum on $possessive soles. $pronounCap <<if canSee($activeSlave)>>stares at your <<if $PC.balls >=2>>massive balls with a ravenous gaze, <<elseif $PC.balls >=1>>large balls with a hungry gaze, <<else>>balls with a steady gaze, <</if>><<else>>gingerly feels the weight of your <<if $PC.balls >=2>>massive balls <<elseif $PC.balls >=1>>large balls <<else>>balls <</if>>with $possessive feet, <</if>>shivering in anticipation. 
 	<<elseif $activeSlave.fetish == "humiliation" && $activeSlave.fetishKnown == 1 && $activeSlave.fetishStrength >= 60>>
-		$activeSlave.slaveName slowly strokes your cock with $possessive feet, getting off on the degrading use of $possessive feet amd avoiding your gaze. $pronounCap is showing an embarassed smile<<if $activeSlave.skin == 'black'>>, and if $possessive skin was any lighter you would see $possessive<<else>> and<</if>> bright blushing cheeks. 
+		$activeSlave.slaveName slowly strokes your cock with $possessive feet, getting off on the degrading use of $possessive feet and avoiding your gaze. $pronounCap is showing an embarrassed smile<<if $activeSlave.skin == 'black'>>, and if $possessive skin was any lighter you would see $possessive<<else>> and<</if>> bright blushing cheeks. 
 	<<elseif $activeSlave.fetish == "boobs" && $activeSlave.fetishKnown == 1 && $activeSlave.fetishStrength >= 60>>
-		As $activeSlave.slaveName deftly strokes your cock with $possessive feet, $possessive hands plays with $possessive  <<if $activeSlave.boobs < 299>>erect nipples. <<elseif $activeSlave.boobs < 499>>small chest. <<elseif $activeSlave.boobs >= 18000>>_boobs breasts, though $pronoun can't reach $possessive nipples. <<else>>_boobs breasts and erect nipples. <</if>> $pronounCap is certsinly giving you plenty of sexy options for you to watch. 
+		As $activeSlave.slaveName deftly strokes your cock with $possessive feet, $possessive hands plays with $possessive  <<if $activeSlave.boobs < 299>>erect nipples. <<elseif $activeSlave.boobs < 499>>small chest. <<elseif $activeSlave.boobs >= 18000>>_boobs breasts, though $pronoun can't reach $possessive nipples. <<else>>_boobs breasts and erect nipples. <</if>> $pronounCap is certainly giving you plenty of sexy options for you to watch. 
 	<<elseif $activeSlave.fetish == "sadist" && $activeSlave.fetishKnown == 1 && $activeSlave.fetishStrength >= 60>>
 		$activeSlave.slaveName is a sadist, and $possessive deft footjob toys with the boundaries of pain and pleasure. $possessiveCap devoted yet belittling <<if canSee($activeSlave)>>gaze carefully watches your face<<else>>expressions are clear as $pronoun feels<</if>> for every reaction. 
 	<<elseif $activeSlave.fetish == "dom" && $activeSlave.fetishKnown == 1 && $activeSlave.fetishStrength >= 60>>
diff --git a/src/pregmod/incubator.tw b/src/pregmod/incubator.tw
index 0b74ed8a742a1f59e3975d9220f187282f1edef0..a54a63469161e207cb33a5b0c959d7b6fd7b93c2 100644
--- a/src/pregmod/incubator.tw
+++ b/src/pregmod/incubator.tw
@@ -49,6 +49,7 @@ Reserve an eligible mother-to-be's child to be placed in a tank upon birth. Of $
 		<</if>>
 		<<if $slaves[_u].pregType > 1>>$slaves[_u].pregType babies<<else>>baby<</if>>.
 		<<if $slaves[_u].reservedChildren > 0>>
+			<<set _childrenReserved = 1>>
 		    <<if $slaves[_u].pregType == 1>>
 				Her child will be placed in $incubatorName.
 			<<elseif $slaves[_u].reservedChildren < $slaves[_u].pregType>>
@@ -117,6 +118,7 @@ Reserve an eligible mother-to-be's child to be placed in a tank upon birth. Of $
 			octuplets.
 		<</switch>>
 	<<if $PC.reservedChildren > 0>>
+		<<set _childrenReserved = 1>>
 		<<if $PC.pregType == 1>>
 			Your child will be placed in $incubatorName.
 		<<elseif $PC.reservedChildren < $PC.pregType>>
@@ -157,7 +159,7 @@ Reserve an eligible mother-to-be's child to be placed in a tank upon birth. Of $
 		You have @@.red;no room for your offspring.@@
 	<</if>>
 <</if>>
-<<if $reservedChildren != 0>> /* the oops I made it go negative somehow button */
+<<if $reservedChildren != 0 || _childrenReserved == 1>> /* the oops I made it go negative somehow button */
 	<br>
 	 <<link "Clear all reserved children">>
 		<<for _u = 0; _u < _SL; _u++>>
diff --git a/src/pregmod/incubatorReport.tw b/src/pregmod/incubatorReport.tw
index 8ad8ea08b745235021a8ee2010b39689aa4ba80a..18b873776236d56a53c1b863e2fe5228fbb496ec 100644
--- a/src/pregmod/incubatorReport.tw
+++ b/src/pregmod/incubatorReport.tw
@@ -217,6 +217,9 @@
 				Combined with the abundant food provided to her, her body grows rapidly.
 				<<if $tanks[_inc].ovaries == 1>>
 					<<set $tanks[_inc].pubertyXX = 1>>
+					<<if $tanks[_inc].hormoneBalance < 500>>
+						<<set $tanks[_inc].hormoneBalance += 100>>
+					<</if>>
 					<<if $seeHyperPreg == 1>>
 						<<set $tanks[_inc].readyOva = random(25,45)>>
 					<<else>>
@@ -290,6 +293,9 @@
 					<</if>>
 				<<elseif $tanks[_inc].balls > 0>>
 					<<set $tanks[_inc].pubertyXY = 1>>
+					<<if $tanks[_inc].hormoneBalance > -500>>
+						<<set $tanks[_inc].hormoneBalance -= 100>>
+					<</if>>
 					<<if $incubatorUpgradeSpeed == 52>>
 						<<if $tanks[_inc].balls < 40>>
 							The excess testosterone-laced growth hormones @@.green;cause her balls to balloon for extra cum production.@@
@@ -341,6 +347,9 @@
 				Combined with the healthy food provided to her, her body grows readily.
 				<<if $tanks[_inc].ovaries == 1>>
 					<<set $tanks[_inc].pubertyXX = 1>>
+					<<if $tanks[_inc].hormoneBalance < 500>>
+						<<set $tanks[_inc].hormoneBalance += 100>>
+					<</if>>
 					<<if $seeHyperPreg == 1>>
 						<<set $tanks[_inc].readyOva = random(15,25)>>
 					<<else>>
@@ -414,6 +423,9 @@
 					<</if>>
 				<<elseif $tanks[_inc].balls > 0>>
 					<<set $tanks[_inc].pubertyXY = 1>>
+					<<if $tanks[_inc].hormoneBalance > -500>>
+						<<set $tanks[_inc].hormoneBalance -= 100>>
+					<</if>>
 					<<if $incubatorUpgradeSpeed == 52>>
 						<<if $tanks[_inc].balls < 10>>
 							The excess testosterone-laced growth hormones @@.green;cause her balls to balloon for extra cum production.@@
@@ -465,6 +477,9 @@
 				Since her body has little to work with, her growth is fairly minor.
 				<<if $tanks[_inc].ovaries == 1>>
 					<<set $tanks[_inc].pubertyXX = 1>>
+					<<if $tanks[_inc].hormoneBalance < 500>>
+						<<set $tanks[_inc].hormoneBalance += 100>>
+					<</if>>
 					<<if $seeHyperPreg == 1>>
 						<<set $tanks[_inc].readyOva = random(10,15)>>
 					<<else>>
@@ -538,6 +553,9 @@
 					<</if>>
 				<<elseif $tanks[_inc].balls > 0>>
 					<<set $tanks[_inc].pubertyXY = 1>>
+					<<if $tanks[_inc].hormoneBalance > -500>>
+						<<set $tanks[_inc].hormoneBalance -= 100>>
+					<</if>>
 					<<if $incubatorUpgradeSpeed == 52>>
 						<<if $tanks[_inc].balls < 6>>
 							The excess testosterone-laced growth hormones @@.green;cause her balls to grow for extra cum production.@@
@@ -590,6 +608,7 @@
 			Her hormone levels are being carefully managed, @@.green;encouraging early puberty.@@
 			<<if $tanks[_inc].ovaries == 1>>
 				<<set $tanks[_inc].pubertyXX = 1>>
+				<<set $tanks[_inc].hormoneBalance = 250>>
 				<<if $tanks[_inc].boobs < 400 && random(1,100) > 60>>
 					The added estrogen @@.green;causes her breasts to swell.@@
 					<<set $tanks[_inc].boobs += 50>>
@@ -604,6 +623,7 @@
 				<</if>>
 			<<elseif $tanks[_inc].balls > 0>>
 				<<set $tanks[_inc].pubertyXY = 1>>
+				<<set $tanks[_inc].hormoneBalance = -250>>
 				<<if $tanks[_inc].balls < 3 && random(1,100) > 80>>
 					The added testosterone @@.green;causes her balls to swell.@@
 					<<set $tanks[_inc].balls++>>
@@ -614,6 +634,11 @@
 				<</if>>
 			<</if>>
 		<<else>>
+			<<if $tanks[_inc].hormoneBalance > 100>>
+				<<set $tanks[_inc].hormoneBalance -= 50>>
+			<<elseif $tanks[_inc].hormoneBalance < -100>>
+				<<set $tanks[_inc].hormoneBalance += 50>>
+			<</if>>
 			<<if $tanks[_inc].balls > 0>>
 				<<if $tanks[_inc].balls > 1>>
 					<<set $tanks[_inc].balls -= 5>>
@@ -636,6 +661,11 @@
 			<</if>>
 		<</if>>
 	<<else>>
+		<<if $tanks[_inc].hormoneBalance > 100>>
+			<<set $tanks[_inc].hormoneBalance -= 50>>
+		<<elseif $tanks[_inc].hormoneBalance < -100>>
+			<<set $tanks[_inc].hormoneBalance += 50>>
+		<</if>>
 		<<if $tanks[_inc].balls > 0>>
 			<<if $tanks[_inc].balls > 1>>
 				<<set $tanks[_inc].balls -= 5>>
@@ -673,6 +703,7 @@
 	<<set $tanks[_inc].balls = Math.clamp($tanks[_inc].balls, 0, 40)>>
 	<<set $tanks[_inc].boobs = Math.clamp($tanks[_inc].boobs, 0, 30000)>>
 	<<set $tanks[_inc].height = Math.clamp($tanks[_inc].height, 0, 274)>>
+	<<set $tanks[_inc].hormoneBalance = Math.clamp($tanks[_inc].hormoneBalance, -500, 500)>>
 	
 <br>
 <</for>>
diff --git a/src/pregmod/managePersonalAffairs.tw b/src/pregmod/managePersonalAffairs.tw
index 27e8076af853ba45c2c11ba0d74687af107f0b4a..ef41134f7a0384db77bcea664e2094d6ea9309e4 100644
--- a/src/pregmod/managePersonalAffairs.tw
+++ b/src/pregmod/managePersonalAffairs.tw
@@ -456,7 +456,7 @@ In total, you have given birth to:
 		<br><br>
 		The tap connected to $dairyName is calling to you. Begging to let it fill you with cum again. If you wanted to try and go bigger, that is.
 		<br>[[Sounds fun!|FSelf]]
-		<br><<link "You only want to get pregnant.">><<set $PC.preg = 1, $PC.pregWeek = 1, $PC.pregSource = 0, $PC.pregKnown = 1>><<SetPregType $PC>><<set WombImpregnate($PC, $PC.pregType, 0, 1)>><<goto "Manage Personal Affairs">><</link>>
+		<br><<link "You only want to get pregnant.">><<set $PC.preg = 1, $PC.pregWeek = 1, $PC.pregSource = 0, $PC.pregKnown = 1>><<set $PC.pregType = setPregType($PC)>><<set WombImpregnate($PC, $PC.pregType, 0, 1)>><<goto "Manage Personal Affairs">><</link>>
 	<</if>>
 <</if>>
 <<if $PC.vagina == 1 && $PC.dick == 1>>
@@ -467,7 +467,7 @@ In total, you have given birth to:
 	<<else>>
 		<br><br>
 		You have an empty vagina, a working set of balls, and a strong craving for a hot creampie. Who better to give it to you than you?
-		<br><br>[[Grab an extra syringe.|MpregSelf]]
+		[[Grab an extra syringe.|MpregSelf]]
 	<</if>>
 <</if>>
 
diff --git a/src/pregmod/newChildIntro.tw b/src/pregmod/newChildIntro.tw
index 460dc3cd7d858867052bb2043d5e1f7251e71975..b246458d6138d8818844a2e4da1699d3637aafb5 100644
--- a/src/pregmod/newChildIntro.tw
+++ b/src/pregmod/newChildIntro.tw
@@ -658,7 +658,7 @@ You slowly strip down, gauging her reactions to your show, until you are fully n
 		<<FSChange "GenderFundamentalist" 2>>
 	<</if>>
 	<<set $activeSlave.preg = 1>>
-	<<SetPregType $activeSlave>>
+	<<set $activeSlave.pregType = setPregType($activeSlave)>>
 	<<set $activeSlave.pregSource = -1>>
 	<<set $activeSlave.pregKnown = 1>>
 	<<set $activeSlave.pregWeek = 1>>
@@ -1108,7 +1108,7 @@ You beckon the curious girl to your hefty breasts, having noticed how hungrily s
 <br><<link "Give her a lewd tramp stamp">>
 <<set $activeSlave.stampTat = either("advertisements", "rude words", "degradation")>>
 <<replace "#result">>
-	You bring her down to the studio, lay the compliant girls in the chair facedown, and select a sufficiently lewd pattern to decorate her lower back. When the automated tattooing is done, a topical application of analgesics leaves her with nothing more than a slight ache there. When allowed to stand, she immediately turns her back to one of the studio's full length mirrors and cranes around to gawk at the picture just over her butt. She wiggles her rear and giggles at the drawing moving along with it. It seems she @@.hotpink;enjoys it.@@
+	You bring her down to the studio, lay the compliant girls in the chair face-down, and select a sufficiently lewd pattern to decorate her lower back. When the automated tattooing is done, a topical application of analgesics leaves her with nothing more than a slight ache there. When allowed to stand, she immediately turns her back to one of the studio's full length mirrors and cranes around to gawk at the picture just over her butt. She wiggles her rear and giggles at the drawing moving along with it. It seems she @@.hotpink;enjoys it.@@
 	<<set $activeSlave.devotion += 5>>
 <</replace>>
 <</link>>
diff --git a/src/pregmod/pInsemination.tw b/src/pregmod/pInsemination.tw
index 33956e7ad52f27796e2f498a3d8f0f359228735b..e2de7ce96e8ee79e8410c6e9961d9ab740d77c10 100644
--- a/src/pregmod/pInsemination.tw
+++ b/src/pregmod/pInsemination.tw
@@ -84,7 +84,7 @@
 		You arrive at the apartment of the rather moody girl with both sets of functional genitals. What answers the door surprises you; she is extremely pregnant, easily ready to drop. Positioning you over the edge of her bed, she mounts you and begins to enjoy herself. Between the sensations within your pussy, <<if $PC.dick == 1>>your dick's motions against her satin sheets,<</if>>and her belly rubbing up and down your ass and lower back; you quickly tense up in orgasm, prompting her to cum strongly into your pussy. You help her onto her couch and head on your way, but not before she informs you that she'll be waiting to fuck you when you are as pregnant as she is now.
 		<<set $preggoCount++>>
 	<<elseif $preggoCount == 1>>
-		You arrive at the apartment of the heavily pregnant futa. When she answers the door and you are greeted by an even larger belly than last time it become abundantly clear that you two are on similar reproductive schedules. Noticing your look, she grabs your hands and happily says "twins". You wrap you arms around your lover for the evening and help her back to her bed, enjoying the weight of her middle. She stops you once she takes a seat and asks "You know, I have some fertility drugs if you want to get as big as me this time, cutey?" You shake your head "no", being that pregnant would certainly impede your ability to run the arcology. She sighs and lies back, her stiff prick pressed against the underside of her belly, and invites you to ride her cock. You waste no time in mounting her, the feel of <<if $PC.dick == 1>>your own erection rubbing between your bellies<<else>>the underside of her pregnancy pushing into your own middle<</if>> as she thrusts up into you driving you wild with lust. It doesn't take long for you to start bucking with orgasm and wrapping your arms around her gravid middle. Her occupants send several kicks your way as she quickens her pace, grabs your hips, and thrusts hard, cumming deep in your pussy. Panting, you slide off her and snuggle up beside her as you catch your breath. "You're looking good after having a child you know? But obviously you looked even better heavy with my child. I'm keeping those pictures of you close!" she says with a giggle as you rise. With a gentle pat on your bottom, she sends you on your way.
+		You arrive at the apartment of the heavily pregnant futa. When she answers the door and you are greeted by an even larger belly than last time it becomes abundantly clear that you two are on similar reproductive schedules. Noticing your look, she grabs your hands and happily says "twins". You wrap you arms around your lover for the evening and help her back to her bed, enjoying the weight of her middle. She stops you once she takes a seat and asks "You know, I have some fertility drugs if you want to get as big as me this time, cutey?" You shake your head "no", being that pregnant would certainly impede your ability to run the arcology. She sighs and lies back, her stiff prick pressed against the underside of her belly, and invites you to ride her cock. You waste no time in mounting her, the feel of <<if $PC.dick == 1>>your own erection rubbing between your bellies<<else>>the underside of her pregnancy pushing into your own middle<</if>> as she thrusts up into you, driving you wild with lust. It doesn't take long for you to start bucking with orgasm and wrapping your arms around her gravid middle. Her occupants send several kicks your way as she quickens her pace, grabs your hips, and thrusts hard, cumming deep in your pussy. Panting, you slide off her and snuggle up beside her as you catch your breath. "You're looking good after having a child you know? But obviously you looked even better heavy with my child. I'm keeping those pictures of you close!" she says with a giggle as you rise. With a gentle pat on your bottom, she sends you on your way.
 		<<set $preggoCount++>>
 	<<else>>
 		You arrive once more at the apartment of the heavily pregnant futa, though this time she takes awhile to reach the door by the sound of it. When it opens, you are greeting by her usual smile and an octuplets stuffed belly. She grabs your hand and pulls it to her taut middle. "Feel them kick! There's so many of them, it feels amazing!" You wrap you arms around your heavy lover for the evening and help her back to her bed, savoring the weight of her pregnancy. She stops you once she takes a seat and asks "My offer still stands, cutey. I assure you it feels amazing to be so full of babies." You shake your head "no", being that pregnant would definitely impede your ability to run the arcology and even enjoy your slaves properly. She lies back, before shifting her weight to her side out of discomfort. Her belly is really big, and hangs low enough that reaching her needy cock is quite the challenge, you take a moment to think of a good position to receive her. You take her dick, and gently sliding yourself between her legs, fit it into your pussy. The two of you buck against each other as best you can; a struggle, seeing as you are bearing the weight of her children right now. You have no choice but to wrap your arms around the eagerly kicking mass<<if $PC.dick == 1>>, trapping your dick between it and yourself,<</if>> as you near your climax. You feel your nethers clamp down as she cums, hard, deep into your pussy. Her children shift under your arms as her water breaks onto you. You quickly untangle yourself and help her to her feet; you can't help but enjoy the feeling of her close contractions under your hand. She points you to her bathroom; "Water birth" she pants, struggling to not give birth where she stands. The tub is already prepared for her, so you help her into it. She refuses to let go of your hand, "Join me?" You take her up on the offer and slide in behind her. You massage her taxed stomach as she struggles to bring her children into the world. A loud moan, escapes her lips as the first of her children slips from her pussy and into your waiting hands. Setting her aside, you prepare for the next. After several hours, and a mutual shower, you and her recover together with her eight children; as thanks, you have one milky nipple all to yourself. When it's time to leave, she blows you a kiss and thanks you sincerely for helping her through this.
@@ -106,6 +106,6 @@
 
 /* You're getting pregnant, period be damned */
 <<set $PC.preg = 1, $PC.pregSource = -1, $PC.pregKnown = 1>>
-<<SetPregType $PC>>
+<<set $PC.pregType = setPregType($PC)>>
 <<set WombImpregnate($PC, $PC.pregType, -1, 1)>>
 
diff --git a/src/pregmod/seFCTVshows.tw b/src/pregmod/seFCTVshows.tw
index fbebb9990809124ca0e7c7559facf5367d704702..02e4b417e373d99ad99c08ae25554b185faf53d7 100644
--- a/src/pregmod/seFCTVshows.tw
+++ b/src/pregmod/seFCTVshows.tw
@@ -73,7 +73,7 @@ Tired after a long day, you tell <<if $Concubine != 0>>@@.pink;$Concubine.slaveN
 		<br><br>The camera cuts back to two distinguished looking gentlemen, one is labeled by the screen as medical researchers. <<if $PC.medicine == 100>>You vaguely recognize both of them from your time studying medicine. <</if>>One of them continues the conversation, apparently answering a question. <i>"That's right, the results of our research tell us what everyone already suspected, but now with an indisputable weight of evidence behind it."</i> The other nods and continues, <i>"our meta analysis examines over two decades of data, and nearly 6000 independent studies. We can safely say that free city slaves are healthier than the average person living anywhere in the old world. While a few of the wealthiest countries of the old world may surpass one or two areas, our slaves have better nutrition, standard of living, are more psychologically stable, have longer lives, and are happier on average as well."</i> The first gentleman interjects, <i>"We even found strong evidence that the higher sexual tempo and libido-stimulating training given to sex slaves greatly contributes to their life span; they live even longer than the average slave, and even look younger than their age."</i>
 		<br><br>The camera switches back to the two anchors, showing an excited Jules hefting and bouncing her tits. "They've barely sagged at all since they stopped growing, now I know why!"
 		<br><br>As the AnchorSlave continues to squeeze, one of the researchers answers from off camera. <i>"That's right, it can be rather amazing. To tell you the truth, we didn't believe it at first, but the evidence made it too hard to ignore."</i> Jules starts looking toward the backstage area trying to signal someone as the other researcher continues. <i>"It's also important not to wear a bra unless you're doing high-impact cardio. We've known since the mid 20th century that wearing bras causes sagging; bras devastate the breasts of postpartum women in particular, and promote breast cancer... Despite countless decades-long studies showing us this, the old world insists on forcing women to wear..."</i>
-		<br><br>It seems that Jules finally got the approval she was looking for, because she immediately reached down between her legs, causing the researcher to distractedly forget what he was saying. Apparently the panties she's wearing are of the dildo variety, because when she removes her hand you can see a tell-tale green indicator light glowing on the front of them. A cute rosey flush comes to Jules cheeks before she apologizes and urges the pair of researchers to continue.
+		<br><br>It seems that Jules finally got the approval she was looking for, because she immediately reached down between her legs, causing the researcher to distractedly forget what he was saying. Apparently the panties she's wearing are of the dildo variety, because when she removes her hand you can see a tell-tale green indicator light glowing on the front of them. A cute rosy flush comes to Jules cheeks before she apologizes and urges the pair of researchers to continue.
 		<br><br>...
 	<</if>>
 <<case 1>>
@@ -650,13 +650,13 @@ The offered price is <<print cashFormat($slaveCost)>>.
             <br><br>Sarah looked at both her parents, then tilted her head and frowned. “You and daddy were playing that weird game again, weren’t you?” Scott and Annie looked at each other; silently communicating in a way only parents can. Annie looked at her daughter and said, “When you’re a bit older you’re going to want to play those games too.” Sarah looked unconvinced. “Anyway, you got the lube, are both your milker and vibrator charged?” Annie asked. Sarah bobbed her head. “Then why don’t you lube up daddy?” Sarah bobbed her head again and kneeled at the side of the bed.
             <br><br>Scott quickly undressed and sat at the edge of the bed. Sarah kneeled between her father’s legs. She began softly licking her father’s cock, her tongue sliding along its length and gently swirling around its head, her mouth making lewd noises. She ran her tongue on the underside of her dad’s cock, took him into her mouth and began to give him a slow blowjob.
             <br><br>Scott felt himself slowly harden to full mast. He resisted the urge to pull her down till her nose touched his crotch and said, “That’s good sweetheart, now use the lube.” Sarah pulled herself off his cock with a lewd pop and picked up the bottle of lube. She squirted a generous amount of it into one hand, rubbed both hands together, and began to stroke his cock.  “You’re doing a good job sweetie, did you help mommy too?” he asked. Annie nodded “She did a very good job and was very through.” Sarah preened at her parents praise and said, “It wasn’t easy. I had to use a whole bottle to do mommy.”  Scott turned his head to his wife and raised an eyebrow. Annie gave him a lewd grin and her blush slowly spread down her chest, but said nothing.
-            <br><br>Scott patted his daughter’s head. “Okay sweetie, take a seat.”  Sarah gave her dad’s cock a kiss on the head, grabbed her vibrator and sat down on the couch across from the bed. She rubbed the lube on her hands over her cotch and her vibrator before licking off what remained. Scott began to stand, but paused; an impish smile spread across his face. “Before we begin, I have question for mommy.” He reached into a night table and pulled out an odd remote and a Wartenberg pinwheel.
+            <br><br>Scott patted his daughter’s head. “Okay sweetie, take a seat.”  Sarah gave her dad’s cock a kiss on the head, grabbed her vibrator and sat down on the couch across from the bed. She rubbed the lube on her hands over her crotch and her vibrator before licking off what remained. Scott began to stand, but paused; an impish smile spread across his face. “Before we begin, I have question for mommy.” He reached into a night table and pulled out an odd remote and a Wartenberg pinwheel.
             <br><br>“Oh, and what would that be?” Annie said in a knowing tone, her eyes twinkling. Scott just grinned and pressed a button on the remote. Annie squealed as her exosuit shifted her forward onto her breasts. Scott craned his head to look behind wife. “You alright down there Sadie?” He cocked his head a bit more and barely made out a thumbs up beyond the horizon of his wife’s ass. “Good. Now-“ He rolled the pinwheel across her arm to collar bone and Annie gasped. “-why did you ask Sadie to stay behind when I sent her off for cloths?”
             <br><br>Annie inhaled sharply and said, “I needed to cum.” He ran the pinwheel slowly down her collarbone to her breast. “And what had you so worked up you needed Sadie?” Her breathing began to speed up. “I nearly threw my back out getting into my exo.” He raised an eyebrow and ran the pinwheel in winding loops across her breasts, goosebumps forming in its wake. “Oh? And why would that get you so hot and bothered?” he asked in a knowing tone.
             <br><br>Annie’s breath became more ragged and began to babble. “I’m-I’m so big, so big. I’m a breast obsessed cowslut.” She held the smart material of her exo in a white knuckle grip. “I came when I couldn’t see my feet anymore. I masturbated seven times when I first got stuck in a door. I once wrapped my tits around a guard rail and humped it for three hours. I came buckets to the look on Cathy’s face when she met me.” Annie gave him a look of pure want. “I need to cum. Mommy needs her boobs pounded.” She pleaded. Scott smiled and pressed a button on the remote that caused the smart material to press Annie’s breasts into a fuckable channel. He positioned himself and said, “Honesty is to be rewarded”, then thrust himself into her.
             <br><br>She gasped and moaned loudly. Her mewling was almost loud enough to match the lewd noises of flesh against flesh. Scott began to increase his speed. With each thrust sending ripples through her body. With how worked up she was, it wasn’t long before her moaning increased in volume until she suddenly gasped, her body tensed up, shuddered and then relaxed.  Annie’s tongue lolled out and her eyes fluttered.
             <br><br>Scott snorted in amusement and was about to continue when he felt a tongue licking him. He looked down to see Sarah. She looked at him with pleading eyes “Daddy, I need it.”  Scott sighed, but smiled softly at his daughter and said, “Okay, how do you want it.” She thought for a second before saying, “I want puss-puss.” He nodded, picked her up and laid his daughter atop his wife’s vast breasts.
-            <br><br>He teased himself against her cunny and then began to ease himself into her. She gasped at the intrusion and began to tease her own nipples, milk slowly leaking out of them. As he eased into her tight cunny, he could feel his own orgasm building. He paused for a moment and then began to move. It didn’t take long for his orgasum to build again. He increased the speed of his thrusts until he came inside his daughter. He continued until she tensed, her breasts spraying milk violently, and fell limp.
+            <br><br>He teased himself against her cunny and then began to ease himself into her. She gasped at the intrusion and began to tease her own nipples, milk slowly leaking out of them. As he eased into her tight cunny, he could feel his own orgasm building. He paused for a moment and then began to move. It didn’t take long for his orgasm to build again. He increased the speed of his thrusts until he came inside his daughter. He continued until she tensed, her breasts spraying milk violently, and fell limp.
             <br><br>Scott leaned into his wife’s breasts to bask in the afterglow. While Annie had coaxed Sarah to turn around, pulled Sarah’s cunny to her face and began to slowly eat her daughter out. Sarah just lay bonelessly atop her mother’s breasts.
             <br><br>Scott just enjoyed the sight of mother-daughter bonding for a while before recalling his earlier plans. “I was thinking of taking the family out for ice cream after lunch.” Annie made a pleased sound as she continued licking her daughters cunny, Sarah cheered lazily, Sadie’s legs wiggled with what could be called excitement. 
             <br><br>“I was also thinking of taking Cathy with us.” Annie stopped sucking on her daughter’s clit to frown at him. He placating gesture and said, “She won’t make a big scene with all of us there and besides you enjoy it when she has a mini freak out.” She paused to think for a moment then said, “You have cameras and a drone on her right?” He nodded. “I want copies.” She gave him a lusty grin before returning to her meal. He turned Sarah. “I wanna bloom berry sundae with bottom boost sprinkles.” He nodded, hooked his head to look behind his wife and said, “How about you Sadie?” The hand that poked out from behind his wife waggled uncertainly, but ultimately became a thumbs up.
@@ -668,7 +668,7 @@ The offered price is <<print cashFormat($slaveCost)>>.
             <br><br>The LCD screen above the entrance wasn’t anything too eye catching. It proudly displayed the words Blue Barn Creamery & Grocery in bright letters. An ever changing list of advertisements and new products on sale scrolled along the bottom. Truly, it could have fit-in with old world signs if no one looked too closely at the words on screen. What was truly eye catching is what surrounded it.
             <br><br>Dozens of cowslaves mounted in milking frames surrounded the screen up and down the building. The building curved out to dangle slaves into the street. Whoever created the display had been thoughtful enough to arrange the cowslaves in order of pregnancy, from flat bellies at the top to the monstrously pregnant at the bottom.   
             <br><br>Scott walked back to Cathy grabbed her hand. “Come along.” He managed to get a dozen paces before she pulled her hand out of his grasp.  “Those are people” she hissed under her breath. “Of course they’re people. What did you think they were, animatronics?” he scoffed. “This isn’t Yellow Farmhouse.” He shook his head. “Honestly, what were they thinking?”
-            <br><br>She sputtered and fumed at him for a moment before she found her voice again. “That isn’t what I meant and you know it.” She turned away from him to take in the scene. A dark haired beauty with smokey eyes amongst the cowslaves above caught her eye and gave her a lewd grin or, rather, attempted to do so around the feeding dildo in her mouth. Cathy wrinkled her nose. “Why would people do this?”
+            <br><br>She sputtered and fumed at him for a moment before she found her voice again. “That isn’t what I meant and you know it.” She turned away from him to take in the scene. A dark haired beauty with smoky eyes amongst the cowslaves above caught her eye and gave her a lewd grin or, rather, attempted to do so around the feeding dildo in her mouth. Cathy wrinkled her nose. “Why would people do this?”
             <br><br>“Well, at Blue Barn Creamery they believe customers have the right to see the cow before they drink from it.” He answered in a wry tone. “But never mind that, let’s go.” He gave her butt a quick slap and continued walking. She winced at the impact, but followed him, her eyes still on the display.
             <br><br>After a moment, her features slowly shifted from disgust to morbid curiosity. “What happens when they need to give birth?” Scott beamed at her. “You can’t see it, but those platforms have systems that allow them to give birth without removing them and after giving birth they can be easily moved back to the top.” He said gesturing to the slaves. “Blue Barn also offers an app that allows you to follow a slave’s pregnancy and insemination.”
             <br><br>As they approached the entrance to the creamery, a crowd began to form around it. Slaves with the Blue Barn logo tattooed on their cheek passed out cups to the crowd. Scott and Cathy rejoined the family as June was gathering cups for everyone.  “Everything alright?” Annie asked, an odd twinkle in her eye. “Nothing to worry about.” Scott said as June gave him and Cathy their cups.
@@ -691,7 +691,7 @@ The offered price is <<print cashFormat($slaveCost)>>.
             <br><br>A window had opened and was playing a video of the cows that helped produce the cake. A heavily pregnant cowslave was railing a far younger, but equally as pregnant cow with a strap-on. The younger cow’s eyes were glassy and unfocused. The older slave let out a growl of need and began to pick up speed, their considerable breasts jiggling with each thrust. The menu was polite enough to have a blurb informing them that the cows are actresses on The Young and the Fecund. If one was feeling uncharitable, they could say that the sole video tag of lactating lolis was technically correct, but a woefully inadequate description. 
             <br><br>He raised an eyebrow. “I thought you wanted a bloom berry sundae?” She gave him puppy dog eyes. “I want cake too,” she whined. He narrowed his eyes at her. The puppy dog eyes increased in intensity. A moment passed before he caved. “You can have a small slice.” The puppy dog eyes vanished and she let out a small cheer. Annie set down her menu. “I think I’ll have rum raisin-“She smiled at him, her eyes crinkling. “-and a slice of cake.” He huffed at her, but smiled anyway. Then he turned to Cathy. “And you?” he asked. “I think I’ll have a vanilla sundae.” He cocked his head at her and raised an eyebrow.  “What?” she said defensively. He held up his hands in a placating gesture. “Nothing, nothing. If you’ve made up your mind, just use the remote.” She picked up the remote and pressed the call button.  
             <br><br>A few moments later, Martha returned, her face flushed. “Everyone all set?” She briskly took down their orders and set off for the kitchens. After a few minutes, she returned with a full tray. With an agility that only comes from years of being a fighter pilot or working in the food industry, she passed out their orders and topped off every glass. With a quick, “Buzz me if you need me,” Martha returned to the counter. 
-            <br><br>June demurely ate her ice cream while Sadie seemed intent on eating her banana split in as lewd a fashion possible. In stark contrast, Sarah was savaging her cake and ice cream, icing smearing on her face and chest. As Annie was eating her ice cream, she ‘accidently’ started dribbling onto her cleavage.  “Oh my!” she said in a tone of faux concern.  “Sweety could you help mommy out?”  Sarah wiggled around in her mother’s cleavage and began to lap up the drips of ice cream, leaving smears of icing in her wake. “Oh, you’ve such a messy eater. Come here and let mommy clean you up.” Annie pulled her close and began to lick the remnants of cake and ice cream off her face. Her licks slowly morphed into a deep kiss. Their tongues danced and faces flushed.  Annie pulled away from her, trailing a line of kisses down her chest and began to suckle from her. Sarah bit her lip, eyes closed, and began to moan, her fingers teasing her clit.
+            <br><br>June demurely ate her ice cream while Sadie seemed intent on eating her banana split in as lewd a fashion possible. In stark contrast, Sarah was savaging her cake and ice cream, icing smearing on her face and chest. As Annie was eating her ice cream, she ‘accidentally’ started dribbling onto her cleavage.  “Oh my!” she said in a tone of faux concern.  “Sweety could you help mommy out?”  Sarah wiggled around in her mother’s cleavage and began to lap up the drips of ice cream, leaving smears of icing in her wake. “Oh, you’ve such a messy eater. Come here and let mommy clean you up.” Annie pulled her close and began to lick the remnants of cake and ice cream off her face. Her licks slowly morphed into a deep kiss. Their tongues danced and faces flushed.  Annie pulled away from her, trailing a line of kisses down her chest and began to suckle from her. Sarah bit her lip, eyes closed, and began to moan, her fingers teasing her clit.
             <br><br>Cathy looked upon this scene with an expression that could only be charitably described as slack jawed.  Scott caught her eye and gave her and gave her an amused grin. She flushed with embarrassment and cleared her throat before asking, “So, you own this place, don’t you?” He took a lick of his ice cream. “Indeed I do, something you want to ask?“
             <br><br>Her features became troubled and she shifted in her seat. “Yeah, why do you have all those girls mounted out front?”  He shrugged his shoulders. “Like I said, we at Blue Barn Creamery believe the customer has a right to see the cow before they drink from it.” She nodded “Yeah you said that, but why? Wouldn’t putting up a bunch of screens be as effective?”
             <br><br>Scott pondered her question for a moment, before saying, “Shortly after starting up here, there was a big scandal over slave milk. Apparently, some moron thought adulterating slave milk with actual cow milk was a good idea. As you might guess, it didn’t turn out well for him.” He took a bite of his ice cream before continuing. “After that, customer trust was at an all-time low. So, I decided to make sure customers could see the whole process right outside the door.” He jabbed his cone at her. “That level of transparency made me quite rich and my cows famous. Upstairs, you can buy all sorts of merchandise based on them, clothes, dolls, you name it.” He smiled. “There’s even a cartoon in the works.” Cathy looked at him with a thoughtful expression. “So, that’s why?” He gave her a lewd grin. “That, and it’s quite sexy. Now, eat your ice cream before it melts.” He turned his wife and daughter. “That goes for you too. Remember, clean your plate, then masturbate.” Sarah pulled away from Annie, gobbled down what remained of food, and then pressed her breasts into her mother’s face.
@@ -909,7 +909,7 @@ The offered price is <<print cashFormat($slaveCost)>>.
 		<br>
 		"Yes Daddy." even though she's almost whispering, her voice is filled with confidence.
 		<br>
-		Jason takes one hand off her hips and positions himself at the entrance to her pussy, sliding in the head with ease before immeditely hitting a block. He leans forward until he can whisper in her ear "Deep breath, sweetie." then pushes a little harder against the resistance. "Ah..." Jessica moans, a mixture of pain and unprecedented pleasure. Finally breaking her hymen, his penis suddenly slides more than halfway into her. "AH!" He pushes the rest in before slowly sliding out, savoring every millimeter of her insides. The slow pace continues for some time, with Jessica's body slowly lowering more and more until only her father's hands are keeping her ass in the air. By that point Jason is hammering away, every thrust producing a slap loud enough to carry a slight echo in the apartment's master bedroom. The sheets beneath Jessica's pussy are soaked through, with a strand of femcum hanging between them and her clit. Her father grabs her tightly and rotates her body to missionary without removing his cock from her, then rips open her shirt, throwing buttons all around the room and exposing her tiny tits. He starts to play with them, resuming the tempo of his thrusts.
+		Jason takes one hand off her hips and positions himself at the entrance to her pussy, sliding in the head with ease before immediately hitting a block. He leans forward until he can whisper in her ear "Deep breath, sweetie." then pushes a little harder against the resistance. "Ah..." Jessica moans, a mixture of pain and unprecedented pleasure. Finally breaking her hymen, his penis suddenly slides more than halfway into her. "AH!" He pushes the rest in before slowly sliding out, savoring every millimeter of her insides. The slow pace continues for some time, with Jessica's body slowly lowering more and more until only her father's hands are keeping her ass in the air. By that point Jason is hammering away, every thrust producing a slap loud enough to carry a slight echo in the apartment's master bedroom. The sheets beneath Jessica's pussy are soaked through, with a strand of femcum hanging between them and her clit. Her father grabs her tightly and rotates her body to missionary without removing his cock from her, then rips open her shirt, throwing buttons all around the room and exposing her tiny tits. He starts to play with them, resuming the tempo of his thrusts.
 		<br>
 		Jessica's hands grab at the sheets blindly, balling them up in her fists and causing one of the corners to become detached from the mattress. At this point she's no longer capable of dialogue, moaning at a volume that would be audible at a club and begging for more in an almost unintelligible way. Her legs wrap around her father's hips, pulling her in closer, and making the seal between them tighter. Feeling this drives Jason over the edge and he slams into her crotch recklessly, knocking the bedframe against the window with every thrust. He mauls her tits, squeezing them and pinching the nipples, sometimes dipping his head down to suck and lick them. With one final hard thrust, he stops while completely inside her and blows an impressive load, especially for TV. His daughter's pussy is filled so quickly that cum is squeezed out of the limited space between his cock and her inner walls, squirting out onto the bed and pooling against her ass and on the inside of the back of her skirt. Jessica moans and convulses, her pussy contractions squeezing a second orgasm out of Jason. Panting, he says "You make the same face your mother used to."
 		<br>
diff --git a/src/pregmod/widgets/bodySwapReaction.TW b/src/pregmod/widgets/bodySwapReaction.TW
index 50bf02f8ae7f613b80e851506f7ef88c39660805..1a5f01e070de86c161d776acca34e30fb2c7257f 100644
--- a/src/pregmod/widgets/bodySwapReaction.TW
+++ b/src/pregmod/widgets/bodySwapReaction.TW
@@ -216,7 +216,7 @@ Now you only have to wait for her to wake up.
 	<<if $args[1].voice == 0>>
 		When she finishes, she turns to you and gestures for a mirror.
 		<<if $args[0].voice != 0>>
-			You gesture as if you couldn't hear her, to which she squeeks in response. It immediately @@.hotpink;dawns on her@@ what this means. She @@.mediumaquamarine;thanks you profusely@@ before asking for a mirror.
+			You gesture as if you couldn't hear her, to which she squeaks in response. It immediately @@.hotpink;dawns on her@@ what this means. She @@.mediumaquamarine;thanks you profusely@@ before asking for a mirror.
 			<<set $args[0].devotion += 5, $args[0].trust += 10>>
 		<</if>>
 	<<else>>
@@ -306,7 +306,7 @@ Now you only have to wait for her to wake up.
 			<</if>>
 		<<elseif $args[0].boobs <= $args[1].boobs-100 && $args[1].boobs > 300 && $args[0].fetish == "boobs" && $args[0].fetishKnown>> /*(Smaller breasts + breast fetish)*/
 			<<if $args[0].devotion > 20>>
-				her bust has shrunk. She is saddened by the loss of the beautiful weight she once beared and struggles to keep herself under control for your sake, @@.mediumorchid;barely.@@
+				her bust has shrunk. She is saddened by the loss of the beautiful weight she once bore and struggles to keep herself under control for your sake, @@.mediumorchid;barely.@@
 			<<else>>
 				that her chest is not as large as it once was.  @@.mediumcorchid;Tears leap into her eyes@@ as her shoulders begin to shake<<if $args[0].voice != 0>> and sobs echo about the room<</if>>. She pauses to gather herself together and let the tears run from her eyes before continuing her bodily inspection.
 			<</if>>
@@ -384,7 +384,7 @@ Now you only have to wait for her to wake up.
 			<</if>>
 		<<elseif $args[0].boobs <= $args[1].boobs-100 && $args[1].boobs > 300 && $args[0].fetish == "boobs" && $args[0].fetishKnown>> /*(Smaller breasts + breast fetish)*/
 			<<if $args[0].devotion > 20>>
-				her bust has shrunk. She is saddened by the loss of the beautiful weight she once beared and struggles to keep herself under control for your sake, @@.mediumorchid;barely.@@
+				her bust has shrunk. She is saddened by the loss of the beautiful weight she once bore and struggles to keep herself under control for your sake, @@.mediumorchid;barely.@@
 			<<else>>
 				that her chest is not as large as it once was.  @@.mediumcorchid;Tears leap into her eyes@@ as her shoulders begin to shake<<if $args[0].voice != 0>> and sobs echo about the room<</if>>. She pauses to gather herself together and let the tears run from her eyes before continuing her bodily inspection.
 			<</if>>
@@ -472,7 +472,7 @@ Now you only have to wait for her to wake up.
 			<</if>>
 		<<else>> /*(No change (less than a 100 cc’s of change)*/
 			<<if $args[0].devotion > 20>>
-				and finds a familiar chest waiting for her, albiet implant free.
+				and finds a familiar chest waiting for her, albeit implant free.
 				<<if ($args[0].physicalAge < $args[1].physicalAge-5)>> /*(younger)*/
 					She is pleased to see her breasts are now more pert and smooth then they were before.
 				<</if>>
@@ -619,7 +619,7 @@ Now you only have to wait for her to wake up.
 	<<if $args[1].voice == 0>>
 		After a moment, she turns to you and gestures for a mirror.
 		<<if $args[0].voice != 0>>
-			You gesture as if you couldn't hear her, to which she squeeks in response. It immediately @@.hotpink;dawns on her@@ what this means. She @@.mediumaquamarine;thanks you profusely@@ before asking for a mirror.
+			You gesture as if you couldn't hear her, to which she squeaks in response. It immediately @@.hotpink;dawns on her@@ what this means. She @@.mediumaquamarine;thanks you profusely@@ before asking for a mirror.
 			<<set $args[0].devotion += 5, $args[0].trust += 10>>
 		<</if>>
 	<<else>>
@@ -796,7 +796,7 @@ You depress a button and a long, body length mirror slides up from the floor nea
 		<<if $PhysicalRetirementAgePolicy == 1>>
 			spend more time with you before the end of her service.
 		<<else>>
-			use all of her the youth for the benefit of her master instead of herself.
+			use all of her youth for the benefit of her master instead of herself.
 		<</if>>
 	<</if>>
 <</if>>
diff --git a/src/pregmod/widgets/bodyswapWidgets.tw b/src/pregmod/widgets/bodyswapWidgets.tw
index 79fa6735cb47481436242d761234127a08981845..655059df7cccaff801c5167ae5790ed5e44d617b 100644
--- a/src/pregmod/widgets/bodyswapWidgets.tw
+++ b/src/pregmod/widgets/bodyswapWidgets.tw
@@ -169,6 +169,7 @@
 <<set $args[0].bellyFluid = $args[1].bellyFluid>>
 <<set $args[0].readyOva = $args[1].readyOva>>
 <<set $args[0].womb = $args[1].womb>> /* this is array assigned by reference, if slave body that is $args[1] will be stil used anywhere in code (not discarded) - it's WRONG (they now technicaly share one womb object). Please tell me about it then. But if old body $args[1] just discarded - it's no problem then.*/
+<<set $args[0].laborCount = $args[1].laborCount>>
 
 <<set $args[0].canRecruit = 0>>
 
diff --git a/src/pregmod/widgets/playerDescriptionWidgets.tw b/src/pregmod/widgets/playerDescriptionWidgets.tw
index f75a1b9ad0dcd7dd3ead4c5f71e7b6d7516ce4df..49f82d927adc8148f3764ebb31f2be68172ae52b 100644
--- a/src/pregmod/widgets/playerDescriptionWidgets.tw
+++ b/src/pregmod/widgets/playerDescriptionWidgets.tw
@@ -221,7 +221,7 @@
 	<<elseif $PC.title == 1>>
 		Your chest is quite masculine<<if $PC.preg > 30 || $PC.births > 0>>, though the pair of wetspots forming over your nipples suggest otherwise,<</if>><<if $PC.markings == "freckles">> and covered in a light spray of freckles<<elseif $PC.markings == "heavily freckled">> and covered in dense freckles<</if>>.
 	<<else>>
-		Your chest is non-existant<<if $PC.preg > 30 || $PC.births > 0>>, save for the pair of bulging milk glands beneath your nipples,<</if>><<if $PC.markings == "freckles">> and covered in a light spray of freckles<<elseif $PC.markings == "heavily freckled">> and covered in dense freckles<</if>>.
+		Your chest is non-existent<<if $PC.preg > 30 || $PC.births > 0>>, save for the pair of bulging milk glands beneath your nipples,<</if>><<if $PC.markings == "freckles">> and covered in a light spray of freckles<<elseif $PC.markings == "heavily freckled">> and covered in dense freckles<</if>>.
 	<</if>>
 <</if>>
 
diff --git a/src/pregmod/widgets/pregmodBirthWidgets.tw b/src/pregmod/widgets/pregmodBirthWidgets.tw
index 400412b1a1bb1cf2f16b8fea146c4507f6bef866..89021ad07e410897ceba310a7b07ee407ec975d5 100644
--- a/src/pregmod/widgets/pregmodBirthWidgets.tw
+++ b/src/pregmod/widgets/pregmodBirthWidgets.tw
@@ -591,7 +591,7 @@
 <<case "learn in the schoolroom">>
 	<<if !canWalk($slaves[$i])>>
 		<<if (random(1,20) > $suddenBirth)>>
-			Having been notified in the weeks leading up to her <<if $slaves[$i].birthsTotal == 0>>first<<else>>regular<</if>> birth, she is helped to the front of the class and stripped; she is being used as a learning aid in this lesson. Blushing strongly, she begins working on birthing <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby, fully aware of the rapt attention of the other students. Her child is promptly taken and, following a cleaning and fresh change of clothes, she is helped back to her seat. She can't help but <<if canSee($slaves[$i])>>notice some of the detailed notes the class took on her genitals<<else>>overhear some of the lewd commments about her still very gravid figure<</if>>.
+			Having been notified in the weeks leading up to her <<if $slaves[$i].birthsTotal == 0>>first<<else>>regular<</if>> birth, she is helped to the front of the class and stripped; she is being used as a learning aid in this lesson. Blushing strongly, she begins working on birthing <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby, fully aware of the rapt attention of the other students. Her child is promptly taken and, following a cleaning and fresh change of clothes, she is helped back to her seat. She can't help but <<if canSee($slaves[$i])>>notice some of the detailed notes the class took on her genitals<<else>>overhear some of the lewd comments about her still very gravid figure<</if>>.
 			<<set $humiliation = 1>>
 		<<else>>
 			During a lesson in $schoolroomName, $slaves[$i].slaveName's water breaks. Since she can't leave the lesson, she tries her best to hold back the upcoming birth. She fails to manage and a particularly strong contraction elicits a moan noticeable enough to draw all the students' attention.
@@ -601,7 +601,7 @@
 		<</if>>
 	<<else>>
 		<<if (random(1,20) > $suddenBirth)>>
-			Having been notified in the weeks leading up to her <<if $slaves[$i].birthsTotal == 0>>first<<else>>regular<</if>> birth, she heads to the front of the class and strips; she is being used as a learning aid in this lesson. Blushing strongly, she begins working on birthing <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby, fully aware of the rapt attention of the other students. Her child is promptly taken and, following a cleaning and fresh change of clothes, she returns to her seat. She can't help but <<if canSee($slaves[$i])>>notice some of the detailed notes the class took on her genitals<<else>>overhear some of the lewd commments about her still very gravid figure<</if>>.
+			Having been notified in the weeks leading up to her <<if $slaves[$i].birthsTotal == 0>>first<<else>>regular<</if>> birth, she heads to the front of the class and strips; she is being used as a learning aid in this lesson. Blushing strongly, she begins working on birthing <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby, fully aware of the rapt attention of the other students. Her child is promptly taken and, following a cleaning and fresh change of clothes, she returns to her seat. She can't help but <<if canSee($slaves[$i])>>notice some of the detailed notes the class took on her genitals<<else>>overhear some of the lewd comments about her still very gravid figure<</if>>.
 			<<set $humiliation = 1>>
 		<<else>>
 			During a lesson in $schoolroomName, $slaves[$i].slaveName's water breaks. Since she can't leave the lesson, she tries her best to hold back the upcoming birth. She fails to manage and a particularly strong contraction elicits a moan noticeable enough to draw all the students' attention.
@@ -613,10 +613,10 @@
 
 <<case "take classes">>
 	<<if (random(1,20) > $suddenBirth)>>
-		Or she would have, had <<if $assistantName == "your personal assistant">>your personal assistant<<else>>$assistantName<</if>> allowed it. Since she can't leave the lesson, she tries her best to hold back the upcoming birth, not without your assistant noticing. As punishment for poor planning, especially since this will be a weekly occurence in her life, her birth will be turned into a live broadcast. Blushing strongly, she begins working on birthing <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby, trying her best to hide her shame. Exhausted from the birth, she is permitted a short break as her child is collected to clean herself up before the lesson is continued.
+		Or she would have, had <<if $assistantName == "your personal assistant">>your personal assistant<<else>>$assistantName<</if>> allowed it. Since she can't leave the lesson, she tries her best to hold back the upcoming birth, not without your assistant noticing. As punishment for poor planning, especially since this will be a weekly occurrence in her life, her birth will be turned into a live broadcast. Blushing strongly, she begins working on birthing <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby, trying her best to hide her shame. Exhausted from the birth, she is permitted a short break as her child is collected to clean herself up before the lesson is continued.
 		<<set $humiliation = 1>>
 	<<else>>
-		During a lesson under <<if $assistantName == "your personal assistant">>your personal assistant<<else>>$assistantName<</if>>, $slaves[$i].slaveName's water breaks. Since she can't leave the lesson, she tries her best to hold back the upcoming birth, not without your assistant noticing. As punishment for poor planning, especially since this will be a weekly occurence in her life, she is forbidden from leaving. Additionally, her birth will be turned into a live broadcast.
+		During a lesson under <<if $assistantName == "your personal assistant">>your personal assistant<<else>>$assistantName<</if>>, $slaves[$i].slaveName's water breaks. Since she can't leave the lesson, she tries her best to hold back the upcoming birth, not without your assistant noticing. As punishment for poor planning, especially since this will be a weekly occurrence in her life, she is forbidden from leaving. Additionally, her birth will be turned into a live broadcast.
 		<<set $humiliation = 1>>
 		<<ClothingBirth>>
 		Exhausted from the birth, she is permitted a short break as <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> child is gathered to <<if !canWalk($slaves[$i])>>be cleaned<<else>>clean herself<</if>> up before the lesson is continued.
@@ -736,7 +736,7 @@
 		<</if>>
 	<<else>>
 		<<if (random(1,20) > $suddenBirth)>>
-			While stripping, she makes her way to the front of the classroom and settles herself in a way her entire class can see. Birth <<if $slaves[$i].birthsTotal == 0>>will be<<else>>is<</if>> a regular occurence in her life and it would be a waste to not work it into her lesson plan. She wiggles herself into a comfortable spot and begins working on birthing <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby, fully aware of her watching students. She demonstrates the proper ways to labor and how to deliver a baby. She explains the infant's future as her child is taken and excuses the class for a short break in order to freshen up. Upon their return, she begins a lesson on being a broodmother, as there is always a curious face locked onto her still very gravid middle.
+			While stripping, she makes her way to the front of the classroom and settles herself in a way her entire class can see. Birth <<if $slaves[$i].birthsTotal == 0>>will be<<else>>is<</if>> a regular occurrence in her life and it would be a waste to not work it into her lesson plan. She wiggles herself into a comfortable spot and begins working on birthing <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby, fully aware of her watching students. She demonstrates the proper ways to labor and how to deliver a baby. She explains the infant's future as her child is taken and excuses the class for a short break in order to freshen up. Upon their return, she begins a lesson on being a broodmother, as there is always a curious face locked onto her still very gravid middle.
 			<<set $humiliation = 1>>
 		<<else>>
 			While teaching a lesson, $slaves[$i].slaveName's water breaks. Sensing she wouldn't be able to make it to the birthing area, she instead chooses to act on the opportunity. Today's lesson will be on childbirth.
@@ -749,7 +749,7 @@
 <<case "be your Concubine">>
 	<<if $slaves[$i].pregSource == -1 && $slaves[$i].relationship == -3>>
 		<<if (random(1,20) > $suddenBirth)>>
-			You make sure to find time in your busy schedule to be at your concubine wife's side as she gives birth to your children, even if it's <<if $slaves[$i].birthsTotal == 0>>to be <</if>> a weekly occurence. You gently caress $slaves[$i].slaveName's body as she begins to push out <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby. You help her upright and hold your child to her breasts. The two of you cuddle as you watch your newborn suckle from its mother. Since she is quite special to you, you allow her the time to pick out names before her child has to be taken away. When the time comes to pick up the newborn, the slave servant is surprised to find a name-card affixed to its blanket.<<if $slaves[$i].fetish != "mindbroken">> She can't help but feel more devoted to her master after seeing such a touching act. Before you leave, $slaves[$i].slaveName expresses how cute she found your child and that she can't wait to see the next one.<</if>>
+			You make sure to find time in your busy schedule to be at your concubine wife's side as she gives birth to your children, even if it's <<if $slaves[$i].birthsTotal == 0>>to be <</if>> a weekly occurrence. You gently caress $slaves[$i].slaveName's body as she begins to push out <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby. You help her upright and hold your child to her breasts. The two of you cuddle as you watch your newborn suckle from its mother. Since she is quite special to you, you allow her the time to pick out names before her child has to be taken away. When the time comes to pick up the newborn, the slave servant is surprised to find a name-card affixed to its blanket.<<if $slaves[$i].fetish != "mindbroken">> She can't help but feel more devoted to her master after seeing such a touching act. Before you leave, $slaves[$i].slaveName expresses how cute she found your child and that she can't wait to see the next one.<</if>>
 		<<else>>
 			Your sleep is awoken by a moist sensation and a loud moan beside you. As you help your concubine wife up, she can't hold back the coming birth.
 			<<ClothingBirth>>
@@ -893,7 +893,7 @@
 		While tending to the girls in the spa, $slaves[$i].slaveName's water breaks. The girls quickly come to her aid as the contractions get closer and closer together. Their hands are all over her laboring body, unsure of what they should be doing.
 		<<set $humiliation = 1>>
 		<<ClothingBirth>>
-		She thanks her charges for their, less than helpful, efforts and collects <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> child for removal. Upon returning, she strips down and enters the pool, desperate for a break and eager to take the weight off her still veyr gravid body.
+		She thanks her charges for their, less than helpful, efforts and collects <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> child for removal. Upon returning, she strips down and enters the pool, desperate for a break and eager to take the weight off her still very gravid body.
 	<</if>>
 
 <<case "be the Madam">>
@@ -1034,7 +1034,7 @@
   	<</if>>
 
 <<default>>
-	//Assignment was $slaves[$i].assignment so why did we defualt? Report this!//
+	//Assignment was $slaves[$i].assignment so why did we default? Report this!//
 	<<if !canWalk($slaves[$i])>>
 		<<if $slaves[$i].fetish == "mindbroken">>
 			<<if (random(1,20) > $suddenBirth)>>
@@ -1103,7 +1103,7 @@
 					While eating in the cafeteria, $slaves[$i].slaveName's body begins to birth <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby. Unable to walk without assistance, she finds herself stranded in the middle of all the dining slaves.
 					<<set $humiliation = 1>>
 					<<ClothingBirth>>
-					She gathers her child and waits to be rescued from the vicious mockery, fully aware of all the gestering and laughter.
+					She gathers her child and waits to be rescued from the vicious mockery, fully aware of all the jestering and laughter.
 				<<else>>
 					$slaves[$i].slaveName is awoken from her rest by a moist sensation followed by a contraction. She rolls over and clutches her gravid belly as another contraction wracks her body.
 					<<ClothingBirth>>
@@ -1143,7 +1143,7 @@
 					While waddling through the penthouse on her way to the cafeteria, $slaves[$i].slaveName's body begins to birth <<if $slaves[$i].birthsTotal == 0>>her first<<else>>this week's<</if>> baby. Unable to reach the prepared birthing room in time, she finds herself stranded in the middle of all the dining slaves.
 					<<set $humiliation = 1>>
 					<<ClothingBirth>>
-					She gathers her child and recovers her strength before trying to escape out of sight of the jeering crowd. Finding a servant to give her child to, she hastily heads back to her bed to hide herself from the mockery. She runs a hand across her still very gravid middle; she'll have ot be more carefull in the future as there are plenty more children growing within her.
+					She gathers her child and recovers her strength before trying to escape out of sight of the jeering crowd. Finding a servant to give her child to, she hastily heads back to her bed to hide herself from the mockery. She runs a hand across her still very gravid middle; she'll have to be more careful in the future as there are plenty more children growing within her.
 				<<else>>
 					$slaves[$i].slaveName is awoken from her rest by a moist sensation followed by a contraction. She rolls over and clutches her gravid belly as another contraction wracks her body.
 					<<ClothingBirth>>
@@ -1729,7 +1729,7 @@
       While eating in the cafeteria, $slaves[$i].slaveName's body begins to birth another of her brood. Unable to move, she finds herself stranded in the middle of all the dining slaves.
     <<set $humiliation = 1>>
     <<ClothingBirth>>
-    She gathers her child and waits to be rescued from the vicious mockery, fully aware of all the gestering and laughter.
+    She gathers her child and waits to be rescued from the vicious mockery, fully aware of all the jestering and laughter.
     <</if>>
   <</if>>
   <<else>>
@@ -1773,7 +1773,7 @@
       While eating in the cafeteria, $slaves[$i].slaveName's body begins to birth another of her brood. Unable to move, she finds herself stranded in the middle of all the dining slaves.
     <<set $humiliation = 1>>
     <<ClothingBirth>>
-    She gathers her child and waits to be rescued from the vicious mockery, fully aware of all the gestering and laughter.
+    She gathers her child and waits to be rescued from the vicious mockery, fully aware of all the jestering and laughter.
     <</if>>
   <</if>>
   <<else>>
diff --git a/src/pregmod/widgets/pregmodWidgets.tw b/src/pregmod/widgets/pregmodWidgets.tw
index 7a3211072bc95e71207bd527792c3adcbd67f7be..95e0e7d70d4114b5be45e8cb59f975f75c3257e7 100644
--- a/src/pregmod/widgets/pregmodWidgets.tw
+++ b/src/pregmod/widgets/pregmodWidgets.tw
@@ -194,6 +194,9 @@
 <<if ndef $args[0].broodmotherCountDown>>
 	<<set $args[0].broodmotherCountDown = 0>>
 <</if>>
+<<if ndef $args[0].laborCount>>
+	<<set $args[0].laborCount = $args[0].birthsTotal>>
+<</if>>
 
 <<if ndef $args[0].pregKnown>>
 	<<if $args[0].preg > 0>>
@@ -417,7 +420,7 @@ In order to be eligible to be bred, the potential breeding bitch must first sati
 	<br>She must be in good health.
 <</if>>
 <<if $arcologies[0].FSBodyPurist > 20>>
-	<br>Her genome must be damage free.
+	<br>She must have low carcinogen levels.
 	<br>She must be implant free.
 <</if>>
 <<if $arcologies[0].FSMaturityPreferentialist > 20>>
@@ -477,9 +480,9 @@ $activeSlave.slaveName is up for review:
 	<<set $passing-->>
 <</if>>
 <<if $activeSlave.chem <= $activeStandard.chem>>
-	<br>She @@.lime;PASSED@@ the genome damage test.
+	<br>She @@.lime;PASSED@@ the carcinogen test.
 <<else>>
-	<br>She @@.red;FAILED@@ the genome damage test.
+	<br>She @@.red;FAILED@@ the carcinogen test.
 	<<set $passing-->>
 <</if>>
 <<if $activeSlave.addict >= $activeStandard.addict>>
@@ -1896,13 +1899,13 @@ Of $possessive $slaves[$i].pregType child<<if $slaves[$i].pregType > 1>>ren<</if
 		s.nationality = setup.nationalityPoolSelector[Object.keys(setup.nationalityPoolSelector).random()].random();
 		/* Check for a pre-set race and if the nationality fits, else regenerate */
 		if(s.race && validRaces.includes(s.race)) {
-			while(setup.raceSelector[s.nationality] && !setup.raceSelector[s.nationality].includes(s.race)) {
+			while(setup.raceSelector[s.nationality] && !(s.race in setup.raceSelector[s.nationality])) {
 				s.nationality = setup.nationalityPoolSelector[Object.keys(setup.nationalityPoolSelector).random()].random();
 			}
 		}
 	}
 	if(!s.race || !validRaces.includes(s.race)) {
-		s.race = (setup.raceSelector[s.nationality] || setup.raceSelector[""]).random();
+		s.race = hashChoice(setup.raceSelector[s.nationality] || setup.raceSelector[""]);
 	}
 	if(!s.birthSurname) {
 		s.birthSurname = (setup.surnamePoolSelector[s.nationality + "." + s.race]
@@ -1911,34 +1914,3 @@ Of $possessive $slaves[$i].pregType child<<if $slaves[$i].pregType > 1>>ren<</if
 	}
 })>>
 <</widget>>
-
-/%
-Call as <<HSM>>
-%/
-<<widget "HSM">>
-	<<if ndef $PC.hacking>>
-		<<set $PC.hacking = 1, $HackingSkillMultiplier = 1>>
-	<<elseif $PC.hacking <= -100>>
-		<<set $HackingSkillMultiplier = 1.5>>
-	<<elseif $PC.hacking <= -75>>
-		<<set $HackingSkillMultiplier = 1.35>>
-	<<elseif $PC.hacking <= -50>>
-		<<set $HackingSkillMultiplier = 1.25>>
-	<<elseif $PC.hacking <= -25>>
-		<<set $HackingSkillMultiplier = 1.15>>
-	<<elseif $PC.hacking < 0>>
-		<<set $HackingSkillMultiplier = 1.10>>
-	<<elseif $PC.hacking <= 10>>
-		<<set $HackingSkillMultiplier = 1>>
-	<<elseif $PC.hacking <= 25>>
-		<<set $HackingSkillMultiplier = .95>>
-	<<elseif $PC.hacking <= 50>>
-		<<set $HackingSkillMultiplier = .90>>
-	<<elseif $PC.hacking <= 75>>
-		<<set $HackingSkillMultiplier = .85>>
-	<<elseif $PC.hacking < 100>>
-		<<set $HackingSkillMultiplier = .80>>
-	<<elseif $PC.hacking >= 100>>
-		<<set $HackingSkillMultiplier = .75>>
-	<</if>>
-<</widget>>
\ No newline at end of file
diff --git a/src/pregmod/widgets/seBirthWidgets.tw b/src/pregmod/widgets/seBirthWidgets.tw
index 038053265a884b503ded6c22caf1d03ce0b21486..c9cb9ea45d06df3bf77855b9516fce1c3779ebb5 100644
--- a/src/pregmod/widgets/seBirthWidgets.tw
+++ b/src/pregmod/widgets/seBirthWidgets.tw
@@ -47,7 +47,7 @@
 <<elseif $slaves[$i].physicalAge < 13>>
 	<<set $birthDamage += 1>>
 <</if>>
-<<if $slaves[$i].birthsTotal == 0>>
+<<if $slaves[$i].laborCount == 0>>
 	<<set $birthDamage += 2>>
 <</if>>
 <<if $slaves[$i].mpreg != 1>>
@@ -96,7 +96,7 @@
 <<if $slaves[$i].intelligenceImplant > 0>>
 	<<set $birthDamage -= 2>>
 <</if>>
-<<if $slaves[$i].birthsTotal > 0>>
+<<if $slaves[$i].laborCount > 0>>
 	<<set $birthDamage -= 3>>
 <</if>>
 <<if $slaves[$i].mpreg != 1>>
@@ -312,7 +312,7 @@
 <</if>>
 
 <<set _afterSize = WombGetVolume($slaves[$i])>>
-<<set $diffSize = _beforeSize / (1 + _afterSize)>> /* 1 used to avoid devide by zero error.*/
+<<set $diffSize = _beforeSize / (1 + _afterSize)>> /* 1 used to avoid divide by zero error.*/
 
 <</widget>>
 
@@ -482,7 +482,7 @@ This decriptions can be expanded with more outcomes later. But it's not practica
 				 <<if $slaves[$i].fetishKnown == 0>>What would have made most girls blackout from pain sent $object into the lewdest orgasm you've seen today. $pronounCap @@.lightcoral;must get off to pain.@@.<<set $slaves[$i].fetishKnown = 1>><<else>> $pronounCap claims to have never climaxed so hard and  @@.hotpink;wishes her hips could have stayed that narrow for next time.@@<</if>>
 				<<set $slaves[$i].devotion += 5>>
 			<<elseif $slaves[$i].devotion > 70>>
-				When $pronoun comes to, $possessive pelvis has already been patched up. $pronounCap is just glad that $pronoun managed to finish giving birth despite the hinderence.
+				When $pronoun comes to, $possessive pelvis has already been patched up. $pronounCap is just glad that $pronoun managed to finish giving birth despite the hindrance.
 			<<else>>
 				When $pronoun comes to, $possessive pelvis has already been patched up. $pronounCap @@.mediumorchid;loathes you@@ for forcing $possessive body to undergo such a painful experience and @@.gold;fears@@ what horror you have planned next.
 				<<set $slaves[$i].devotion -= 25, $slaves[$i].trust -= 25>>
@@ -557,7 +557,7 @@ This decriptions can be expanded with more outcomes later. But it's not practica
 	/* I think all this reactions should be showed only if no c'section used too. Setting it up for just in case: */
 <<if $csec == 0 && $slaves[$i].assignment != "work in the dairy">> /*if not desired, this check can be easily removed or deactevated with condition set to true.*/
 	<br>
-	<<if $slaves[$i].birthsTotal == 0>>
+	<<if $slaves[$i].laborCount == 0>>
 		<br>
 		$possessiveCap inexperience @@.red;complicated $possessive first birth@@.
 		<<set _compoundCondition = 1>>
@@ -644,7 +644,7 @@ This decriptions can be expanded with more outcomes later. But it's not practica
 				$possessiveCap @@.green;moist vagina@@ hastened $possessive <<if _curBabies >1>>children's<<else>>child's<</if>> birth.
 			<</if>>
 		<</if>>
-		<<if $slaves[$i].birthsTotal > 0>>
+		<<if $slaves[$i].laborCount > 0>>
 			<br>
 			$pronounCap has @@.green;given birth before@@, so $pronoun knows just what to do.
 		<</if>>
@@ -680,7 +680,7 @@ All in all,
 	<</if>>
 	<<if $birthDamage > 0>>
 		<<set $slaves[$i].health -= Math.round(($birthDamage/2)*10)>>
-		<<if $birthDamage > 5 && _compoundCondition == 1>>
+		<<if $birthDamage > 5 && _compoundCondition == 1 && _curBabies > 0>>
 			Or it would have been, were $pronoun only having one. With each additional child that needed to be birthed, @@.red;the damage to $possessive health was compounded.@@
 			<<set $slaves[$i].health -= _curBabies>>
 		<</if>>
diff --git a/src/pregmod/widgets/slaveSummaryWidgets.tw b/src/pregmod/widgets/slaveSummaryWidgets.tw
index 240a68591e1f5123d49d72f22f4ab4506d8df4d0..c8659bd0280eb9222984b8a02cbf01b56fc41cfc 100644
--- a/src/pregmod/widgets/slaveSummaryWidgets.tw
+++ b/src/pregmod/widgets/slaveSummaryWidgets.tw
@@ -1,4 +1,4 @@
-:: Slave Summary Widgets [nobr widget]
+:: Slave Summary Widgets [nobr widget]
 
 /* Try to use cached summary */
 <<run setup.summaryCache = {}>>
@@ -292,6 +292,8 @@ Release rules: _Slave.releaseRules.
 		''Di:C+''
 	<<case "cleansing">>
 		''Di:H+''
+	<<case "fertility">>
+		''Di:F+''
 	<</switch>>
 	<<if _Slave.dietCum == 2>>
 		''Cum++''
@@ -324,6 +326,8 @@ Release rules: _Slave.releaseRules.
 		Cum production.
 	<<case "cleansing">>
 		Cleansing.
+	<<case "fertility">>
+		Fertility.
 	<</switch>>
 	<<if _Slave.dietCum == 2>>
 		Diet Base: @@.cyan;Cum Based.@@
@@ -748,7 +752,7 @@ Release rules: _Slave.releaseRules.
 <<case "Ghanan">>
 	Gha
 <<case "Congolese">>
-	Cog
+	RC
 <<case "Ethiopian">>
 	Eth
 <<case "South African">>
@@ -864,7 +868,7 @@ Release rules: _Slave.releaseRules.
 <<case "Spanish">>
 	Spa
 <<case "British">>
-	GB
+	UK
 <<case "Australian">>
 	Aus
 <<case "a New Zealander">>
@@ -952,7 +956,7 @@ Release rules: _Slave.releaseRules.
 <<case "Moldovan">>
 	Mol
 <<case "Nigerien">>
-	Ng
+	Ngr
 <<case "Bahamian">>
 	Bah
 <<case "Barbadian">>
@@ -1037,6 +1041,76 @@ Release rules: _Slave.releaseRules.
 	SI
 <<case "Tongan">>
 	Ton
+<<case "Catalan">>
+	Cat
+<<case "Equatoguinean">>
+	EG
+<<case "French Polynesian">>
+	FP
+<<case "Kurdish">>
+	Kur
+<<case "Tibetan">>
+	Tib
+<<case "Bissau-Guinean">>
+	GB
+<<case "Chadian">>
+	Cha
+<<case "Comorian">>
+	Com
+<<case "Ivorian">>
+	IC
+<<case "Mauritanian">>
+	Mta
+<<case "Mauritian">>
+	Mts
+<<case "Mosotho">>
+	Les
+<<case "Sierra Leonean">>
+	Sie
+<<case "Swazi">>
+	Swa
+<<case "Angolan">>
+	Ang"
+<<case "Sahrawi">>
+	Sah
+<<case "Burkinabé">>
+	BF
+<<case "Cape Verdean">>
+	CV
+<<case "Motswana">>
+	Bot
+<<case "Somali">>
+	Som
+<<case "Rwandan">>
+	Rwa
+<<case "São Toméan">>
+	STP
+<<case "Beninese">>
+	Ben
+<<case "Central African">>
+	CAR
+<<case "Gambian">>
+	Gam
+<<case "Senegalese">>
+	Sen
+<<case "Togolese">>
+	Tog
+<<case "Eritrean">>
+	Eri
+<<case "Guinean">>
+	Gui
+<<case "Malawian">>
+	Mwi
+<<case "Zairian">>
+	DRC
+<<case "Liberian">>
+	Lib
+<<case "Mozambican">>
+	Moz
+<<case "Namibian">>
+	Nam
+<<case "South Sudanese">>
+	SS
 <<case "Ancient Egyptian Revivalist">>
 	Egy Rev
 <<case "Ancient Chinese Revivalist">>
diff --git a/src/pregmod/widgets/slaveTradePresetWidgets.tw b/src/pregmod/widgets/slaveTradePresetWidgets.tw
index d59f4b880c53e4dc05a572f521636ec44d7c9c8f..b12dc4ce4cc0dc71c7e0e1eb08f6f28d0168956b 100644
--- a/src/pregmod/widgets/slaveTradePresetWidgets.tw
+++ b/src/pregmod/widgets/slaveTradePresetWidgets.tw
@@ -5,12 +5,13 @@
 
 <<widget "NationalityPresetVanillaGlobal">>
 <<link "Vanilla Global">>
-	<<set $nationalities = weightedArray({
+	<<set $nationalities = {
 		Afghan: 2,
 		Albanian: 1,
 		Algerian: 3,
 		American: 5,
 		Andorran: 1,
+		Angolan: 1,
 		Antiguan: 1,
 		Argentinian: 3,
 		Armenian: 2,
@@ -25,23 +26,30 @@
 		Belarusian: 1,
 		Belgian: 2,
 		Belizean: 1,
+		Beninese: 1,
 		Bermudian: 1,
 		Bhutanese: 1,
+		"Bissau-Guinean": 1,
 		Bolivian: 2,
 		Bosnian: 1,
 		Brazilian: 4,
 		British: 3,
 		Bruneian: 1,
 		Bulgarian: 2,
-		Burmese: 3,
-		Burmese: 1,
+		Burkinabé: 1,
+		Burmese: 2,
 		Burundian: 1,
 		Cambodian: 1,
 		Cameroonian: 1,
 		Canadian: 2,
+		"Cape Verdean": 1,
+		Catalan: 1,
+		"Central African": 1,
+		Chadian: 1,
 		Chilean: 2,
 		Chinese: 15,
 		Colombian: 3,
+		Comorian: 1,
 		Congolese: 3,
 		"a Cook Islander": 1,
 		"Costa Rican": 1,
@@ -58,6 +66,8 @@
 		Ecuadorian: 1,
 		Egyptian: 3,
 		Emirati: 2,
+		Equatoguinean: 1,
+		Eritrean: 1,
 		Estonian: 2,
 		Ethiopian: 3,
 		Fijian: 1,
@@ -65,7 +75,9 @@
 		Finnish: 2,
 		French: 3,
 		"French Guianan": 1,
+		"French Polynesian": 1,
 		Gabonese: 1,
+		Gambian: 1,
 		Georgian: 1,
 		German: 3,
 		Ghanan: 2,
@@ -73,6 +85,7 @@
 		Greenlandic: 1,
 		Grenadian: 1,
 		Guatemalan: 2,
+		Guinean: 1,
 		Guyanese: 1,
 		Haitian: 2,
 		Honduran: 1,
@@ -86,6 +99,7 @@
 		Irish: 2,
 		Israeli: 2,
 		Italian: 3,
+		Ivorian: 1,
 		Jamaican: 2,
 		Japanese: 3,
 		Jordanian: 2,
@@ -94,21 +108,26 @@
 		Kittitian: 1,
 		Korean: 1,
 		Kosovan: 1,
+		Kurdish: 1,
 		Kuwaiti: 1,
 		Kyrgyz: 1,
 		Laotian: 1,
 		Latvian: 1,
 		Lebanese: 2,
+		Liberian: 1,
 		Libyan: 2,
 		Lithuanian: 2,
 		Luxembourgian: 1,
 		Macedonian: 1,
 		Malagasy: 1,
+		Malawian: 1,
 		Malaysian: 3,
 		Maldivian: 1,
 		Malian: 2,
 		Maltese: 1,
 		Marshallese: 1,
+		Mauritanian: 1,
+		Mauritian: 1,
 		Mexican: 4,
 		Monégasque: 1,
 		Micronesian: 1,
@@ -116,6 +135,10 @@
 		Mongolian: 1,
 		Montenegrin: 1,
 		Moroccan: 2,
+		Mosotho: 1,
+		Motswana: 1,
+		Mozambican: 1,
+		Namibian: 1,
 		Nauruan: 1,
 		Nepalese: 2,
 		"Ni-Vanuatu": 1,
@@ -138,23 +161,31 @@
 		Qatari: 1,
 		Romanian: 2,
 		Russian: 4,
+		Rwandan: 1,
+		Sahrawi: 1,
 		"Saint Lucian": 1,
 		Salvadoran: 2,
 		Sammarinese: 1,
 		Samoan: 1,
+		"São Toméan": 1,
 		Saudi: 2,
 		Scottish: 1,
+		Senegalese: 1,
 		Serbian: 2,
 		Seychellois: 1,
+		"Sierra Leonean": 1,
 		Singaporean: 1,
 		Slovak: 2,
 		Slovene: 1,
 		"a Solomon Islander": 1,
+		Somali: 1,
 		"South African": 4,
+		"South Sudanese": 1,
 		Spanish: 3,
 		"Sri Lankan": 1,
 		Sudanese: 3,
 		Surinamese: 1,
+		Swazi: 1,
 		Swedish: 2,
 		Swiss: 2,
 		Syrian: 1,
@@ -162,6 +193,8 @@
 		Tajik: 1,
 		Tanzanian: 2,
 		Thai: 3,
+		Tibetan: 1,
+		Togolese: 1,
 		Tongan: 1,
 		Trinidadian: 1,
 		Tunisian: 2,
@@ -180,7 +213,7 @@
 		Zambian: 1,
 		Zimbabwean: 2,
 		"a New Zealander": 2
-		})>>
+		}>>
 	<<set _gotoPassage = passage()>>
 	<<goto _gotoPassage>>
 <</link>>
@@ -188,7 +221,7 @@
 
 <<widget "NationalityPresetVanillaNA">>
 <<link "Vanilla North America">>
-	<<set $nationalities = weightedArray({
+	<<set $nationalities = {
 		American: 6,
 		Canadian: 2,
 		Mexican: 3,
@@ -207,7 +240,7 @@
 		Salvadoran: 1,
 		Nicaraguan: 1,
 		Panamanian: 1
-		})>>
+		}>>
 	<<set _gotoPassage = passage()>>
 	<<goto _gotoPassage>>
 <</link>>
@@ -215,7 +248,7 @@
 
 <<widget "NationalityPresetVanillaSA">>
 <<link "Vanilla South America">>
-	<<set $nationalities = weightedArray({
+	<<set $nationalities = {
 		Brazilian: 4,
 		Argentinian: 2,
 		Colombian: 2,
@@ -230,7 +263,7 @@
 		Guyanese: 1,
 		Paraguayan: 1,
 		Surinamese: 1
-		})>>
+		}>>
 	<<set _gotoPassage = passage()>>
 	<<goto _gotoPassage>>
 <</link>>
@@ -238,7 +271,7 @@
 
 <<widget "NationalityPresetVanillaME">>
 <<link "Vanilla Middle East">>
-	<<set $nationalities = weightedArray({
+	<<set $nationalities = {
 		Egyptian: 3,
 		Iranian: 2,
 		Saudi: 2,
@@ -259,8 +292,9 @@
 		Georgian: 1,
 		Kuwaiti: 1,
 		Qatari: 1,
-		Palestinian: 1
-		})>>
+		Palestinian: 1,
+		Kurdish: 1
+		}>>
 	<<set _gotoPassage = passage()>>
 	<<goto _gotoPassage>>
 <</link>>
@@ -268,7 +302,7 @@
 
 <<widget "NationalityPresetVanillaAfrica">>
 <<link "Vanilla Africa">>
-	<<set $nationalities = weightedArray({
+	<<set $nationalities = {
 		Nigerian: 3,
 		"South African": 3,
 		Kenyan: 2,
@@ -291,8 +325,39 @@
 		Malagasy: 1,
 		Nigerien: 1,
 		Burundian: 1,
-		Seychellois: 1
-		})>>
+		Seychellois: 1,
+		Equatoguinean: 1,
+		"Bissau-Guinean": 1,
+		Chadian: 1,
+		Comorian: 1,
+		Ivorian: 1,
+		Mauritanian: 1,
+		Mauritian: 1,
+		Mosotho: 1,
+		"Sierra Leonean": 1,
+		Swazi: 1,
+		Angolan: 1,
+		Sahrawi: 1,
+		Burkinabé: 1,
+		"Cape Verdean": 1,
+		Motswana: 1,
+		Somali: 1,
+		Rwandan: 1,
+		"São Toméan": 1,
+		Beninese: 1,
+		"Central African": 1,
+		Gambian: 1,
+		Senegalese: 1,
+		Togolese: 1,
+		Eritrean: 1,
+		Guinean: 1,
+		Malawian: 1,
+		Congolese: 1,
+		Liberian: 1,
+		Mozambican: 1,
+		Namibian: 1,
+		"South Sudanese": 1
+		}>>
 	<<set _gotoPassage = passage()>>
 	<<goto _gotoPassage>>
 <</link>>
@@ -300,7 +365,7 @@
 
 <<widget "NationalityPresetVanillaAsia">>
 <<link "Vanilla Asia">>
-	<<set $nationalities = weightedArray({
+	<<set $nationalities = {
 		Chinese: 14,
 		Indian: 10,
 		Bangladeshi: 3,
@@ -327,8 +392,9 @@
 		Kyrgyz: 1,
 		"Sri Lankan": 1,
 		Tajik: 1,
-		Turkmen: 1
-		})>>
+		Turkmen: 1,
+		Tibetan: 1
+		}>>
 	<<set _gotoPassage = passage()>>
 	<<goto _gotoPassage>>
 <</link>>
@@ -336,7 +402,7 @@
 
 <<widget "NationalityPresetVanillaEU">>
 <<link "Vanilla Europe">>
-	<<set $nationalities = weightedArray({
+	<<set $nationalities = {
 		Russian: 4,
 		German: 3,
 		Belarusian: 1,
@@ -381,8 +447,9 @@
 		"a Liechtensteiner": 1,
 		Vatican: 1,
 		Latvian: 1,
-		Slovene: 1
-		})>>
+		Slovene: 1,
+		Catalan: 1
+		}>>
 	<<set _gotoPassage = passage()>>
 	<<goto _gotoPassage>>
 <</link>>
@@ -390,7 +457,7 @@
 
 <<widget "NationalityPresetVanillaAU">>
 <<link "Vanilla Australia">>
-	<<set $nationalities = weightedArray({
+	<<set $nationalities = {
 		Australian: 3,
 		"a New Zealander": 1,
 		Marshallese: 1,
@@ -406,8 +473,9 @@
 		Niuean: 1,
 		Samoan: 1,
 		"a Solomon Islander": 1,
-		Tongan: 1
-		})>>
+		Tongan: 1,
+		"French Polynesian": 1
+		}>>
 	<<set _gotoPassage = passage()>>
 	<<goto _gotoPassage>>
 <</link>>
@@ -416,7 +484,7 @@
 /* I need reweighting and possibly country additions */
 <<widget "NationalityPresetModEurope">>
 <<link "Europe">>
-	<<set $nationalities = weightedArray({
+	<<set $nationalities = {
 		Albanian: 29,
 		Andorran: 1,
 		Austrian: 87,
@@ -441,6 +509,7 @@
 		Kazakh: 182,
 		Kosovan: 22,
 		Latvian: 19,
+		"a Liechtensteiner": 1,
 		Lithuanian: 29,
 		Luxembourgian: 6,
 		Macedonian: 21,
@@ -463,9 +532,8 @@
 		Slovene: 20,
 		Turkish: 807,
 		Ukrainian: 442,
-		"a Liechtensteiner": 1,
 		Vatican: 1		
-		})>>
+		}>>
 	<<set _gotoPassage = passage()>>
 	<<goto _gotoPassage>>
 <</link>>
@@ -473,7 +541,7 @@
 
 <<widget "NationalityPresetModEastAsia">>
 <<link "East Asia">>
-	<<set $nationalities = weightedArray({Chinese: 21, Japanese: 2, Korean: 1})>>
+	<<set $nationalities = {Chinese: 21, Japanese: 2, Korean: 1}>>
 	<<set _gotoPassage = passage()>>
 	<<goto _gotoPassage>>
 <</link>>
@@ -481,7 +549,7 @@
 
 <<widget "NationalityPresetModUSA">>
 <<link USA>>
-	<<set $nationalities = weightedArray({American: 8, Canadian: 1, Mexican: 3})>>
+	<<set $nationalities = {American: 8, Canadian: 1, Mexican: 3}>>
 	<<set _gotoPassage = passage()>>
 	<<goto _gotoPassage>>
 <</link>>
@@ -489,7 +557,7 @@
 
 <<widget "NationalityPresetModJapan">>
 <<link Japan>>
-	<<set $nationalities = weightedArray({Japanese: 3})>>
+	<<set $nationalities = {Japanese: 3}>>
 	<<set _gotoPassage = passage()>>
 	<<goto _gotoPassage>>
 <</link>>
@@ -497,7 +565,7 @@
 
 <<widget "NationalityPresetModBrazil">>
 <<link Brazil>>
-	<<set $nationalities = weightedArray({
+	<<set $nationalities = {
 		Brazilian: 30,
 		Argentinian: 4,
 		Colombian: 3,
@@ -509,7 +577,7 @@
 		Uruguayan: 2,
 		Paraguayan: 1,
 		Ecuadorian: 1
-		})>>
+		}>>
 	<<set _gotoPassage = passage()>>
 	<<goto _gotoPassage>>
 <</link>>
@@ -518,12 +586,13 @@
 /* I need reweighting */
 <<widget "NationalityPresetModGlobalRealism">>
 <<link "Global Realism">>
-	<<set $nationalities = weightedArray({
+	<<set $nationalities = {
 		Afghan: 355,
 		Albanian: 29,
 		Algerian: 413,
 		American: 3245,
 		Andorran: 1,
+		Angolan: 257,
 		Antiguan: 1,
 		Argentinian: 443,
 		Armenian: 29,
@@ -538,23 +607,31 @@
 		Belarusian: 95,
 		Belgian: 114,
 		Belizean: 4,
+		Beninese: 108,
 		Bermudian: 1,
 		Bhutanese: 8,
+		"Bissau-Guinean": 18,
 		Bolivian: 111,
 		Bosnian: 35,
 		Brazilian: 2093,
 		British: 662,
 		Bruneian: 4,
 		Bulgarian: 71,
+		Burkinabé: 201,
 		Burmese: 534,
 		Burundian: 109,
 		Cambodian: 160,
 		Cameroonian: 241,
 		Canadian: 366,
+		"Cape Verdean": 5,
+		Catalan: 75,
+		"Central African": 45,
+		Chadian: 136,
 		Chilean: 181,
 		Chinese: 14095,
 		Colombian: 491,
-		Congolese: 53,
+		Comorian: 7,
+		Congolese: 51,
 		"a Cook Islander": 1,
 		"Costa Rican": 49,
 		Croatian: 42,
@@ -570,14 +647,18 @@
 		Ecuadorian: 166,
 		Egyptian: 976,
 		Emirati: 94,
+		Equatoguinean: 12,
+		Eritrean: 49,
 		Estonian: 13,
 		Ethiopian: 1050,
 		Fijian: 1,
 		Filipina: 1005,
 		Finnish: 55,
 		French: 650,
-		"French Guianan": 1,
+		"French Guianan": 2,
+		"French Polynesian": 2,
 		Gabonese: 20,
+		Gambian: 20,
 		Georgian: 39,
 		German: 821,
 		Ghanan: 288,
@@ -585,6 +666,7 @@
 		Greenlandic: 1,
 		Grenadian: 1,
 		Guatemalan: 169,
+		Guinean: 123,
 		Guyanese: 8,
 		Haitian: 110,
 		Honduran: 93,
@@ -598,6 +680,7 @@
 		Irish: 48,
 		Israeli: 83,
 		Italian: 594,
+		Ivorian: 237,
 		Jamaican: 29,
 		Japanese: 1275,
 		Jordanian: 97,
@@ -606,22 +689,27 @@
 		Kittitian: 1,
 		Korean: 763,
 		Kosovan: 22,
+		Kurdish: 57,
 		Kuwaiti: 41,
 		Kyrgyz: 60,
 		Laotian: 69,
 		Latvian: 19,
 		Lebanese: 61,
+		Liberian: 45,
 		Libyan: 64,
 		"a Liechtensteiner": 1,
 		Lithuanian: 29,
 		Luxembourgian: 6,
 		Macedonian: 21,
 		Malagasy: 255,
+		Malawian: 180,
 		Malaysian: 316,
 		Maldivian: 4,
 		Malian: 185,
 		Maltese: 4,
 		Marshallese: 1,
+		Mauritanian: 43,
+		Mauritian: 12,
 		Mexican: 1292,
 		Micronesian: 1,
 		Moldovan: 41,
@@ -629,8 +717,13 @@
 		Montenegrin: 6,
 		Monégasque: 1,
 		Moroccan: 358,
+		Mosotho: 22,
+		Motswana: 22,
+		Mozambican: 288,
+		Namibian: 26,
 		Nauruan: 1,
 		Nepalese: 293,
+		"a New Zealander": 47,
 		"Ni-Vanuatu": 1,
 		Nicaraguan: 62,
 		Nigerian: 1909,
@@ -651,23 +744,31 @@
 		Qatari: 26,
 		Romanian: 197,
 		Russian: 1440,
+		Rwandan: 112,
+		Sahrawi: 5,
 		"Saint Lucian": 1,
 		Salvadoran: 64,
 		Sammarinese: 1,
 		Samoan: 2,
+		"São Toméan": 1,
 		Saudi: 329,
 		Scottish: 54,
+		Senegalese: 154,
 		Serbian: 88,
 		Seychellois: 1,
-		Singaporean: 57,
+		"Sierra Leonean": 70,
+		Singaporean: 56,
 		Slovak: 54,
 		Slovene: 21,
 		"a Solomon Islander": 6,
+		Somali: 143,
 		"South African": 567,
+		"South Sudanese": 122,
 		Spanish: 464,
 		"Sri Lankan": 209,
-		Sudanese: 405,
+		Sudanese: 395,
 		Surinamese: 6,
+		Swazi: 13,
 		Swedish: 99,
 		Swiss: 85,
 		Syrian: 183,
@@ -675,6 +776,8 @@
 		Tajik: 89,
 		Tanzanian: 573,
 		Thai: 690,
+		Tibetan: 31,
+		Togolese: 79,
 		Tongan: 1,
 		Trinidadian: 14,
 		Tunisian: 115,
@@ -690,11 +793,11 @@
 		Vietnamese: 955,
 		Vincentian: 1,
 		Yemeni: 283,
+		Zairian: 787,
 		Zambian: 171,
-		Zimbabwean: 165,
-		"a New Zealander": 47
-		})>>
+		Zimbabwean: 165
+		}>>
 	<<set _gotoPassage = passage()>>
 	<<goto _gotoPassage>>
 <</link>>
-<</widget>>
\ No newline at end of file
+<</widget>>
diff --git a/src/uncategorized/BackwardsCompatibility.tw b/src/uncategorized/BackwardsCompatibility.tw
index 9eeca44eca37abdd839aa3e7762be1691bffc420..93bf3e13a905a6254d47793a483e285410bba301 100644
--- a/src/uncategorized/BackwardsCompatibility.tw
+++ b/src/uncategorized/BackwardsCompatibility.tw
@@ -2,6 +2,14 @@
 
 <<set $nextButton = "Continue", $nextLink = "Main", $returnTo = "Main">>
 
+<<if $releaseID == 1021 || $releaseID == 1020 || $releaseID == 1019 || $releaseID == 2022>>
+	<<set $releaseID = 1022>>
+<</if>>
+
+<<if Array.isArray($nationalities)>>
+	<<set $nationalities = weightedArray2HashMap($nationalities)>>
+<</if>>
+
 <<if def $youngCareers>>
 	<<unset $youngCareers, $educatedCareers, $uneducatedCareers, $gratefulCareers, $menialCareers, $entertainmentCareers, $whoreCareers, $HGCareers, $madamCareers, $DJCareers, $bodyguardCareers, $wardenessCareers, $nurseCareers, $attendantCareers, $milkmaidCareers, $stewardessCareers, $schoolteacherCareers>>
 
@@ -22,7 +30,7 @@
 	<<unset $northamericaNationalities, $southamericaNationalities, $europeNationalities, $asiaNationalities, $middleeastNationalities, $africaNationalities, $australiaNationalities>>
 	<<unset $belarusianSlaveNames, $dominicanSlaveNames, $scottishSlaveNames>>
 	<<unset $ArcologyNamesEugenics, $ArcologyNamesRepopulationist, $ArcologyNamesHedonisticDecadence>>
-	<<unset $drugs, harshCollars, shoes, bellyAccessories, vaginalAccessories, dickAccessories, buttplugs>>
+	<<unset $drugs, $harshCollars, $shoes, $bellyAccessories, $vaginalAccessories, $dickAccessories, $buttplugs>>
 <</if>>
 
 <<if def $servantMilkerJobs>>
@@ -749,8 +757,11 @@
 		<<set $FacilitySupportSlaves = 0>>
 	<</if>>
 
-	<<if ndef $FacilitySupportfficiency>>
-		<<set $FacilitySupportfficiency = 0>>
+	<<if ndef $FacilitySupportEfficiency>>
+		<<set $FacilitySupportEfficiency = 0>>
+	<</if>>
+	<<if def $FacilitySupportfficiency>>
+		<<unset $FacilitySupportfficiency>>
 	<</if>>
 	<<if ndef $FacilitySupportUpgrade>>
 		<<set $FacilitySupportUpgrade = 0>>
@@ -1008,6 +1019,7 @@
 		case "schoolroom": return "learn in the schoolroom";
 		case "mastersuite": return "serve in the master suite";
 		case "servantsquarters": return "work as a servant";
+		default : return x;
 		}
 	})>>
 
@@ -1024,6 +1036,7 @@
 		case "schoolroom": return "learn in the schoolroom";
 		case "mastersuite": return "serve in the master suite";
 		case "servantsquarters": return "work as a servant";
+		default : return x;
 		}
 	})>>
 
@@ -1096,13 +1109,7 @@
 		<<set $defaultRules[_bci].clitSetting = "no default setting", $defaultRules[_bci].clitSettingXX = 100>>
 	<</switch>>
 	<<if ndef $defaultRules[_bci].surgery>>
-		<<set $defaultRules[_bci].surgery = {lactation: "no default setting", cosmetic: 0, accent: "no default setting", shoulders: "no default setting", shouldersImplant: "no default setting", boobs: "no default setting", hips: "no default setting", hipsImplant: "no default setting", butt: "no default setting", faceShape: "no default setting", lips: "no default setting", holes: 0}>>
-	<</if>>
-	<<if ndef $defaultRules[_bci].surgery.prostate>>
-		<<set $defaultRules[_bci].surgery.prostate = "no default setting">>
-	<</if>>
-	<<if ndef $defaultRules[_bci].surgery.eyes>>
-		<<set $defaultRules[_bci].surgery.eyes = "no default setting">>
+		<<set $defaultRules[_bci].surgery = {}>> /*just empty object enough to avoid problems */
 	<</if>>
 	<<if $releaseID < 1018>>
 		<<if $defaultRules[_bci].growth == "none">>
@@ -1583,6 +1590,9 @@ Setting missing global variables:
 <<if ndef $REReductionCheckinIDs>>
 	<<set $REReductionCheckinIDs = []>>
 <</if>>
+<<if def $RERelationshipSlave>>
+	<<unset $RERelationshipSlave>>
+<</if>>
 <<if ndef $dormitory>>
 	<<set $dormitory = 20>>
 <</if>>
@@ -1974,6 +1984,9 @@ Setting missing global variables:
 <<if ndef $dietCleanse>>
 	<<set $dietCleanse = 0>>
 <</if>>
+<<if ndef $dietFertility>>
+	<<set $dietFertility = 0>>
+<</if>>
 <<if ndef $cumProDiet>>
 	<<set $cumProDiet = 0>>
 <</if>>
@@ -1983,6 +1996,9 @@ Setting missing global variables:
 <<if ndef $healthyDrugsUpgrade>>
 	<<set $healthyDrugsUpgrade = 0>>
 <</if>>
+<<if ndef $reproductionFormula>>
+	<<set $reproductionFormula = 0>>
+<</if>>
 <<if ndef $superFertilityDrugs>>
 	<<set $superFertilityDrugs = 0>>
 <</if>>
diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw
index eb253d5feafbc944fc02ed626317781c2c0e1c4d..514972b3890d5460aaeea36dbea7ac07fb17caad 100644
--- a/src/uncategorized/RESS.tw
+++ b/src/uncategorized/RESS.tw
@@ -867,9 +867,9 @@ Late at night, <<EventNameLink $activeSlave>> returns to the living area of the
 
 <<EventNameLink $activeSlave>> has a little free time this evening, so she finds a quiet corner and engages in her anal proclivities. Since her asshole is so stretched out, she sticks the base of a huge dildo to the ground and
 <<if $activeSlave.belly >= 100000>>
-	stuggles to lower her heavy, very gravid body down onto it,
+	struggles to lower her heavy, very gravid body down onto it,
 <<elseif $activeSlave.belly >= 10000>>
-	catiously lowers her <<if $activeSlave.bellyFluid >= 10000>><<print $activeSlave.inflationType>>-stuffed<<else>>very gravid<</if>> body on it,
+	cautiously lowers her <<if $activeSlave.bellyFluid >= 10000>><<print $activeSlave.inflationType>>-stuffed<<else>>very gravid<</if>> body on it,
 <<elseif $activeSlave.belly >= 5000>>
 	delicately lowers her <<if $activeSlave.bellyFluid >= 5000>>bloated<<else>>gravid<</if>> body on it,
 <<else>>
@@ -1838,7 +1838,7 @@ At your <<if canSee($activeSlave)>>nod<<else>>acknowledgement<</if>>, she
 	<<if canAchieveErection($activeSlave)>>
 		"<<Master>>, may I have a <<sh>>aft pier<<c>>ing? If I get to <<s>>tick it in another girl, I'd love to <<if canSee($activeSlave)>><<s>>ee her fa<<c>>e<<else>>feel her <<sh>>udder<</if>> when that extra little bit of metal <<s>>lide<<s>> in<<s>>ide her. Plea<<s>>e?"
 	<<elseif $activeSlave.dick > 0>>
-		"<<Master>>, may I have a toungue pier<<c>>ing? If I get to eat another girl out, I'd love to li<<s>>ten to her <<s>>queal when that little bit of metal <<s>>crape<<s>> again<<s>>t her. Plea<<s>>e?". Plea<<s>>e?"
+		"<<Master>>, may I have a tongue pier<<c>>ing? If I get to eat another girl out, I'd love to li<<s>>ten to her <<s>>queal when that little bit of metal <<s>>crape<<s>> again<<s>>t her. Plea<<s>>e?". Plea<<s>>e?"
 	<<else>>
 		"<<Master>>, may I have a labia pier<<c>>ing? If I get to trib another girl, I'd love to <<if canSee($activeSlave)>><<s>>ee her fa<<c>>e<<else>>feel her <<sh>>udder<</if>> when that little bit of metal grind<<s>> again<<s>>t her. Plea<<s>>e?"
 	<</if>>
@@ -1940,7 +1940,7 @@ You complete the final rep of your first workout of the day, rack the bar, and j
 <<elseif $PC.boobsBonus == 2>>
 	sports bra clad boobs with almost painful intensity. You can't really blame her; the bra's two sizes too small, allowing your huge <<if $PC.boobsImplant == 1>>fake <</if>>breasts to lewdly bulge out of them, soaked in your sweat<<if $PC.preg > 30 || $PC.births > 0>>and breast milk<</if>>, and your nipples are clearly visible as bumps in the strained material.
 <<elseif $PC.boobsBonus == 1>>
-	sports bra clad boobs with almost painful intensity. You can't really blame her; the bra's one size too small, allowing your big <<if $PC.boobsImplant == 1>>fake <</if>>breasts to bulge out of them, soaked in your sweat<<if $PC.preg > 30 || $PC.births > 0>>and breast milk<</if>>, and your nipples are clearly visible as bumps in the tuat material.
+	sports bra clad boobs with almost painful intensity. You can't really blame her; the bra's one size too small, allowing your big <<if $PC.boobsImplant == 1>>fake <</if>>breasts to bulge out of them, soaked in your sweat<<if $PC.preg > 30 || $PC.births > 0>>and breast milk<</if>>, and your nipples are clearly visible as bumps in the taut material.
 <<elseif $PC.boobs == 1>>
 	sports bra clad boobs with almost painful intensity. You can't really blame her; the bra's soaked in your sweat<<if $PC.preg > 30 || $PC.births > 0>>and breast milk<</if>> and your nipples are clearly visible as bumps in the tight material.
 <<elseif $PC.belly >= 1500>>
@@ -2026,7 +2026,7 @@ She swallows uncomfortably, frozen in place and staring at the floor. Her eyes f
 
 <<case "penitent">>
 
-As <<EventNameLink $activeSlave>> comes before you for routine inspection, it is obvious that her penitent's habit is having an effect. She moves with exquisite care, desperate to minimize the chafing<<if $activeSlave.pregKnown == 1 && $activeSlave.belly >= 1500>>, especially on her growing pregnancy<</if>>. She seems totally concentrated on obedience: the constant discomfort often has the effect of forcing a slave to marshal all her mental faculties in the service of pain avoidance.
+As <<EventNameLink $activeSlave>> comes before you for routine inspection, it is obvious that her penitent habit is having an effect. She moves with exquisite care, desperate to minimize the chafing<<if $activeSlave.pregKnown == 1 && $activeSlave.belly >= 1500>>, especially on her growing pregnancy<</if>>. She seems totally concentrated on obedience: the constant discomfort often has the effect of forcing a slave to marshal all her mental faculties in the service of pain avoidance.
 <br><br>
 Her responses to your routine questions are so mechanical and honest that you make an impromptu confession of it. You require her to tell the full tale of all her minor infractions against the rules, and even order her to confess her resistant thoughts to you as well. Past the ability to resist, she pours out a stream of her inner fears, hopes, and feelings about her life as a sex slave.
 
@@ -2267,7 +2267,7 @@ You decide to stop by to see her method at work. By the time you arrive, she's a
 	<<case "succubus">>
 		is groping herself to the sight.
 	<<case "imp">>
-		is hovering while visciously fingering her cunt.
+		is hovering while viciously fingering her cunt.
 	<<case "witch">>
 		is pretending to read from her spellbook, but is obviously watching over the top of it.
 	<<case "ERROR_1606_APPEARANCE_FILE_CORRUPT">>
@@ -3581,7 +3581,7 @@ says a third, obviously smitten. "I'd give anything to have a night with her."
 
 <<case "lazy evening">>
 
-Although your life as an arcology owner comes with many associated privileges, extended idleness to bask in your luxury is not often among them. Thankfully, $assistantName knows better than to let you run yourself ragged from the weight of your assorted responsibilities and often alots time in the evenings of your active schedule to simply relax.
+Although your life as an arcology owner comes with many associated privileges, extended idleness to bask in your luxury is not often among them. Thankfully, $assistantName knows better than to let you run yourself ragged from the weight of your assorted responsibilities and often allots time in the evenings of your active schedule to simply relax.
 <br><br>
 Of course, no self respecting arcology owner could be expected to enjoy a lazy night of idle relaxation on their own. As you resolve the last of your most pressing responsibilities for the evening, $assistantName directs one of your attentive slaves to gently guide you away from the unending burdens of running your arcology. Leaning against the doorway and wearing a facsimile of what an old world woman might wear on a casual night in, <<EventNameLink $activeSlave>>
 <<if canTalk($activeSlave) == false>>
@@ -3942,7 +3942,7 @@ May I plea<<s>>e try out <<s>>omething <<s>>kimpier today?"
 	<</if>>
 	She enjoys herself immensely, but she loses it again when she feels your seed in her, realizing that she will find herself swelling with your child over the coming months. She has become @@.hotpink;more submissive@@ to your will now that her very first egg has been fertilized by her <<Master>>.
 	<<set $activeSlave.devotion += 5, $activeSlave.preg = 1, $activeSlave.pregWeek = 1, $activeSlave.pregKnown = 1, $activeSlave.pregSource = -1>>
-	<<SetPregType $activeSlave>>
+	<<set $activeSlave.pregType = setPregType($activeSlave)>>
 	<<set WombImpregnate($activeSlave, $activeSlave.pregType, -1, 1)>>
 	<<VaginalVCheck>>
 	<</replace>>
@@ -4060,7 +4060,7 @@ May I plea<<s>>e try out <<s>>omething <<s>>kimpier today?"
 	<<else>>
 		flat
 	<</if>>
-	butt sinking your cock deep into her <<if $activeSlave.anus == 0>>virgin<</if>> asspusy. You lean forward, running your hands across her nipples<<if $activeSlave.belly >= 5000>> and _belly <<if $activeSlave.belly >= 3000>>pregnant <</if>>belly<</if>> as you move to tease her stiff prick. Between your dick in her ass and your hand on her cock, she rapidly approaches her peak. Quickly, you bind the base of her penis, denying her release and eliciting a long moan from the pent-up girl. You begin thrusting hard, telling her that YOU are the one who'll be orgasming here, not her. Only once you have taught her her place by filling her asspussy with your cum do you allow her release. Just undoing the binding is enough to set her over the edge, coating the cushions<<if $activeSlave.belly >= 5000>> and the bottom of her _belly <<if $activeSlave.belly >= 3000>>pregnant <</if>>belly<</if>> in her virile sperm. You dismount and order the exhausted girl to clean herself and the couch up before going back to her assignment; she @@.hotpink;complies meekly@@, understanding that having a potent penis is meaningless in her position.<<if $activeSlave.fetish == "none">>The next time she walks past your office, you can't help notice the growing erection she carries. @@.coral;Your dominating display has left her craving domination.@@<<set $activeSlave.fetish = "submissive", $activeSlave.fetishStrength = 10>><</if>>
+	butt sinking your cock deep into her <<if $activeSlave.anus == 0>>virgin<</if>> asspussy. You lean forward, running your hands across her nipples<<if $activeSlave.belly >= 5000>> and _belly <<if $activeSlave.belly >= 3000>>pregnant <</if>>belly<</if>> as you move to tease her stiff prick. Between your dick in her ass and your hand on her cock, she rapidly approaches her peak. Quickly, you bind the base of her penis, denying her release and eliciting a long moan from the pent-up girl. You begin thrusting hard, telling her that YOU are the one who'll be orgasming here, not her. Only once you have taught her her place by filling her asspussy with your cum do you allow her release. Just undoing the binding is enough to set her over the edge, coating the cushions<<if $activeSlave.belly >= 5000>> and the bottom of her _belly <<if $activeSlave.belly >= 3000>>pregnant <</if>>belly<</if>> in her virile sperm. You dismount and order the exhausted girl to clean herself and the couch up before going back to her assignment; she @@.hotpink;complies meekly@@, understanding that having a potent penis is meaningless in her position.<<if $activeSlave.fetish == "none">>The next time she walks past your office, you can't help notice the growing erection she carries. @@.coral;Your dominating display has left her craving domination.@@<<set $activeSlave.fetish = "submissive", $activeSlave.fetishStrength = 10>><</if>>
 	<<set $activeSlave.devotion += 5>>
 	<</replace>>
 <</if>>
@@ -4150,7 +4150,7 @@ May I plea<<s>>e try out <<s>>omething <<s>>kimpier today?"
 <br><<link "Embrace her">>
 	<<EventNameDelink $activeSlave>>
 	<<replace "#result">>
-	You gently grab her face and stare deeply into her $activeSlave.eyeColor eyes. <<if canSee($activeSlave)>>Thay are full of life as opposed to their usual dullness<<else>>They are as dull as always, but that isn't her fault. Her facial expressions at the act tell you all you need to know<</if>>. You pull your wife into a tight embrace, her coming back to you is more than enough a gift, she needn't do anything more for now. You pull the covers over the both of you and begin to doze off, smiling at the warth cuddling ever closer to you.
+	You gently grab her face and stare deeply into her $activeSlave.eyeColor eyes. <<if canSee($activeSlave)>>They are full of life as opposed to their usual dullness<<else>>They are as dull as always, but that isn't her fault. Her facial expressions at the act tell you all you need to know<</if>>. You pull your wife into a tight embrace, her coming back to you is more than enough a gift, she needn't do anything more for now. You pull the covers over the both of you and begin to doze off, smiling at the warmth cuddling ever closer to you.
 	She is @@.green;no longer mindbroken@@ and thanks to your care deeply and sincerely @@.hotpink;loves@@ and @@.mediumaquamarine;trusts@@ you.
 	<<set $activeSlave.devotion = 100, $activeSlave.oldDevotion = 100, $activeSlave.trust = 100, $activeSlave.oldTrust = 100, $activeSlave.sexualQuirk = "romantic", $activeSlave.fetish = "none", $activeSlave.fetishKnown = 1>>
 	<<if ($arcologies[0].FSPaternalist != "unset")>>
@@ -4197,7 +4197,7 @@ May I plea<<s>>e try out <<s>>omething <<s>>kimpier today?"
 	<<else>>
 		slam her head into your crotch.
 		<<if $PC.dick == 1>>
-			You viciously face-fuck her, cuming strongly down her gagging throat while making sure to save one last spurt to paint her face with.
+			You viciously face-fuck her, cumming strongly down her gagging throat while making sure to save one last spurt to paint her face with.
 		<<else>>
 			As she recoils, you grab a strap-on and force it into her mouth before fastening it to yourself. Once you are situated, you viciously face-fuck her until you are satisfied. As she struggles to catch her breath, you toggle the release and reveal that it is a squirt dildo, painting her face with fake semen.
 		<</if>>
@@ -4376,7 +4376,7 @@ May I plea<<s>>e try out <<s>>omething <<s>>kimpier today?"
 	<br><<link "Try to talk it out">>
 		<<EventNameDelink $activeSlave>>
 		<<replace "#result">>
-		You start trying to her down, hoping to persuade them that you migt reconsider your punishment if they stopped this foolishness; she doesn't seem too keen on listening to you, instead pushing you against a wall and tearing your clothes off. Ignoring your words, she forces her
+		You start trying to talk her down, hoping to persuade them that you might reconsider your punishment if they stopped this foolishness; she doesn't seem too keen on listening to you, instead pushing you against a wall and tearing your clothes off. Ignoring your words, she forces her
 		<<if $activeSlave.dick == 1>>
 			pathetic
 		<<elseif $activeSlave.dick == 2>>
@@ -5579,9 +5579,9 @@ May I plea<<s>>e try out <<s>>omething <<s>>kimpier today?"
 		<<if $activeSlave.belly >= 750000>>
 			she's nothing more than a giant egg just waiting for her children to hatch; how she's so close to bursting with life that just a few more babies should do it.
 		<<elseif $activeSlave.belly >= 600000>>
-			if she grows any larger with child, she'll practacally be nothing more than an overswollen womb.
+			if she grows any larger with child, she'll practically be nothing more than an overswollen womb.
 		<<elseif $activeSlave.belly >= 450000>>
-			it must feel to be so obscenely pregnant that anyone and everyone can see the life distening her struggling body.
+			it must feel to be so obscenely pregnant that anyone and everyone can see the life distending her struggling body.
 		<<elseif $activeSlave.belly >= 300000>>
 			full she would feel if she got anymore pregnant and how it would be to do even the most simple of tasks.
 		<<elseif $activeSlave.belly >= 150000>>
@@ -6114,7 +6114,7 @@ May I plea<<s>>e try out <<s>>omething <<s>>kimpier today?"
 	<<set $activeSlave.trust += 4>>
 	<<AnalVCheck>>
 	<</replace>>
-<</link>>
+<</link>><<if ($activeSlave.anus == 0 && canDoAnal($activeSlave))>> //This option will take anal virginity//<</if>>
 <br><<link "Pound that ass">>
 	<<EventNameDelink $activeSlave>>
 	<<replace "#result">>
@@ -6172,7 +6172,7 @@ May I plea<<s>>e try out <<s>>omething <<s>>kimpier today?"
 	<<set $activeSlave.devotion += 4>>
 	<<AnalVCheck>>
 	<</replace>>
-<</link>>
+<</link>><<if ($activeSlave.anus == 0 && canDoAnal($activeSlave))>> //This option will take anal virginity//<</if>>
 <</if>>
 <<if canDoVaginal($activeSlave)>>
 <br><<link "Pound that pussy">>
@@ -6230,7 +6230,7 @@ May I plea<<s>>e try out <<s>>omething <<s>>kimpier today?"
 	<<set $activeSlave.devotion += 4>>
 	<<VaginalVCheck>>
 	<</replace>>
-<</link>>
+<</link>><<if ($activeSlave.vagina == 0 && canDoVaginal($activeSlave))>> //This option will take virginity//<</if>>
 <</if>>
 <<if ($activeSlave.toyHole == "dick" || $sexualOpeness == 1) && canPenetrate($activeSlave)>>
 <br><<link "Invite her 'in'">>
@@ -6386,9 +6386,9 @@ May I plea<<s>>e try out <<s>>omething <<s>>kimpier today?"
 			<<if $PC.newVag == 1>>
 				You shudder with overwhelming pleasure as her huge dick fills you completely.
 			<<elseif $PC.career == "escort">>
-				You moan with pleasure as her huge dick completely fills your stretched pussy. You gently carress her dick through the bulge in your middle.
+				You moan with pleasure as her huge dick completely fills your stretched pussy. You gently caress her dick through the bulge in your middle.
 			<<elseif $PC.births >= 10>>
-				You moan with pleasure as her huge dick completely fills your stretched pussy. You gently carress her dick through the bulge in your middle.
+				You moan with pleasure as her huge dick completely fills your stretched pussy. You gently caress her dick through the bulge in your middle.
 				<<if isPlayerFertile($PC) && $activeSlave.ballType == "human" && $activeSlave.vasectomy == 0>> A small tickling in your belly reminds you you're fertile.<</if>> 
 			<<elseif $PC.career == "servant">>
 				You moan with pleasure as her huge dick stretches your used pussy. She's far bigger than your Master ever was.
@@ -6411,7 +6411,7 @@ May I plea<<s>>e try out <<s>>omething <<s>>kimpier today?"
 	<<elseif $activeSlave.dick == 9>>
 		absurd dick
 	<</if>>
-	She gently fucks you<<if $activeSlave.balls > 8>>, her oversized balls slaping your thighs with every thrust<</if>>, making sure you're enjoying her penis as much as physically possible. You climax as she cums inside eliciting a gasp from the horny girl<<if $PC.dick == 1>>, as you spurt across the floor<</if>>. She apologizes profusly for cuming in you, but after she helps clean you up and back to your desk, all is forgiven. As you work, you can't help but steal glances at her renewed erection. She winks
+	She gently fucks you<<if $activeSlave.balls > 8>>, her oversized balls slapping your thighs with every thrust<</if>>, making sure you're enjoying her penis as much as physically possible. You climax as she cums inside eliciting a gasp from the horny girl<<if $PC.dick == 1>>, as you spurt across the floor<</if>>. She apologizes profusely for cumming in you, but after she helps clean you up and back to your desk, all is forgiven. As you work, you can't help but steal glances at her renewed erection. She winks
 	<<if !canTalk($activeSlave)>>
 		and @@.mediumaquamarine;earnestly asks@@ for more when you get the chance.
 	<<else>>
@@ -6991,7 +6991,7 @@ You tell her kindly that you understand, and that she'll be trained to address t
 	<<EventNameDelink $activeSlave>>
 	<<replace "#result">>
 	You instruct her to get cleaned up and get dressed in her nicest clothing. She obeys, mystified, and is further puzzled to find that you're taking her out for a nice evening at a small bar. You share a tasty meal and listen to good music played on the little stage by an older slave. As the set concludes, you lean over and give $activeSlave.slaveName her real orders for the evening. She freezes in terror but eventually makes her way up to the stage, strips in front of all the patrons, and says
-	<<if canTalk($activeSlave)>>
+	<<if !canTalk($activeSlave)>>
 		in embarrassed gestures, "please use me, I'm cheap."
 	<<else>>
 		"One credit per fuck, if you'll do my worthle<<ss>> body on <<s>>tage."
@@ -7363,7 +7363,7 @@ You tell her kindly that you understand, and that she'll be trained to address t
 <</if>>
 <<if $PC.preg > 30 && $PC.pregMood == 1 && $PC.boobs == 1 && $PC.boobsImplant == 0 && $PC.boobsBonus >= 0>>
 	<br><<link "She just needs a mother's touch">>
-		You reassure the frightened $desc and beckon her to return to the hole before settling your gravid body before the door and pushing a fat, milk-ladden breast through the gap. You coax the nervous girl to drink her fill; she must be starving in there, after all. After some hesitation, you finally feel a pair of lips wrap themselves around your erect nipple and begin to drink deep. You talk to the suckling slave, explaining to her just what she needs to do to thrive in her new life, shushing her whenever she tries to object and asking her to just listen. Before long, your teat is drained of all its mother's milk, and as you move to shift to the other closer to the door, the desperate slave begs you not to go. You slip a hand through the slat, caressing her face as you let her know you're just turning around. As she suckles your remaining milk, you feel her @@.mediumaquamarine;relax and lower her guard.@@ She needed to connect to someone and she didn't expect it to be you, especially like not this. @@.hotpink;Her willingness to listen to your has increased.@@
+		You reassure the frightened $desc and beckon her to return to the hole before settling your gravid body before the door and pushing a fat, milk-laden breast through the gap. You coax the nervous girl to drink her fill; she must be starving in there, after all. After some hesitation, you finally feel a pair of lips wrap themselves around your erect nipple and begin to drink deep. You talk to the suckling slave, explaining to her just what she needs to do to thrive in her new life, shushing her whenever she tries to object and asking her to just listen. Before long, your teat is drained of all its mother's milk, and as you move to shift to the other closer to the door, the desperate slave begs you not to go. You slip a hand through the slat, caressing her face as you let her know you're just turning around. As she suckles your remaining milk, you feel her @@.mediumaquamarine;relax and lower her guard.@@ She needed to connect to someone and she didn't expect it to be you, especially like not this. @@.hotpink;Her willingness to listen to your has increased.@@
 		<<set $activeSlave.devotion += 15, $activeSlave.trust += 5>>
 	<</link>>
 <</if>>
@@ -8389,7 +8389,7 @@ You tell her kindly that you understand, and that she'll be trained to address t
 	<<if canDoAnal($activeSlave)>>
 		After a good long throatfuck that leaves her gasping and moaning, you flip her over and fuck her ass until she's squealing with each thrust.
 	<<else>>
-		Only after an extended and forcefull series of throatfuckings that leaves the bewildered $desc gasping for air and barely conscious, do you feel she has learned what hole she should be focused on. For good measure, you deepthroat her one last time, to really drive the point home.
+		Only after an extended and forceful series of throatfuckings that leaves the bewildered $desc gasping for air and barely conscious, do you feel she has learned what hole she should be focused on. For good measure, you deepthroat her one last time, to really drive the point home.
 	<</if>>
 	As she leaves, sore all over, she's @@.mediumorchid;badly confused@@ that she was apparently punished for asking questions.
 	<<set $activeSlave.devotion -= 5>>
@@ -9578,7 +9578,7 @@ You tell her kindly that you understand, and that she'll be trained to address t
 	<<elseif $PC.title == 0>>
 		feminine
 	<<else>>
-		maculine
+		masculine
 	<</if>>
 	waist. Your hands, thus freed to grope her, tenderly hold her head and neck instead, cupping her <<if $activeSlave.face > 95>>gorgeous<<elseif $activeSlave.face >= -10>>pretty<<else>>homely<</if>> jawline and making her moan at the intimacy.
 	<br><br>
@@ -9635,7 +9635,7 @@ You tell her kindly that you understand, and that she'll be trained to address t
 	<<replace "#result">>
 	You make no reply at all, but walk around to stand behind the slave. She knows she's fucked, and starts to shake with fear. You put a foot on her ass and shove her down<<if $activeSlave.belly >= 5000>> so her rear is pointed into the air again<<else>> to lie flat on the floor<</if>>, and then straddle her, shoving <<if $PC.dick == 1>>your<<if $PC.vagina == 1>> futa<</if>> cock up her butt<<else>>one more finger than she can comfortably take up her butt<</if>>. She tries to beg some more, but you give her a warning slap, and she shuts up. Despite your roughness, she's so horny that she starts to get hard. You can't see or feel this directly, of course, but it's easy to tell from her desperate sobbing and involuntary writhing, and the lovely spasming of her anal sphincter. Her tears dry up as she builds towards a climax; orgasm might be an uncomfortable experience for her, but it will buy her a few minutes free of discomfort.
 	<br><br>
-	But she's to be disappointed. You <<if $PC.dick == 1>>worm a hand down between her ass and your stomach, and shove a finger up inside her, alongside your dick<<if $PC.vagina == 1>>, dextrously using the thumb of that hand to stroke your own pussy<</if>><<else>>use the hand that isn't fucking her to pull one of her arms around behind her into a painful joint lock<</if>>. The pain ruins her building orgasm, and she cries with frustration and @@.gold;despair@@ as she realizes that she won't be getting off today. You force her to experience this horrible near-release twice more, bringing her to a terribly uncomfortable state of arousal and then using sudden pain to destroy any chance she has of getting relief. All the wriggling and jerking around is good for you, though.
+	But she's to be disappointed. You <<if $PC.dick == 1>>worm a hand down between her ass and your stomach, and shove a finger up inside her, alongside your dick<<if $PC.vagina == 1>>, dexterously using the thumb of that hand to stroke your own pussy<</if>><<else>>use the hand that isn't fucking her to pull one of her arms around behind her into a painful joint lock<</if>>. The pain ruins her building orgasm, and she cries with frustration and @@.gold;despair@@ as she realizes that she won't be getting off today. You force her to experience this horrible near-release twice more, bringing her to a terribly uncomfortable state of arousal and then using sudden pain to destroy any chance she has of getting relief. All the wriggling and jerking around is good for you, though.
 	<<set $activeSlave.trust -= 4>>
 	<<AnalVCheck>>
 	<</replace>>
@@ -10435,7 +10435,7 @@ You tell her kindly that you understand, and that she'll be trained to address t
 	<<replace "#result">>
 	$activeSlave.slaveName obeys <<if $activeSlave.devotion > 20>>without hesitation<<else>>hesitantly<</if>> when you order her to kneel next to your desk the next time she tries to go to the milkers. Her devotion is severely tested over the next hours as you ignore her. The occasional glance at her shows her growing increasingly frantic as her breasts grow heavier and her inverted nipples, which prevent any release of pressure without the strong suction of the milkers to protrude them, grow more tender. Eventually, she loses all composure and begins to beg you abjectly to give her relief. Your cruel smile at the kneeling girl with tears streaming down her $activeSlave.skin cheeks fills her with @@.gold;anticipatory horror.@@ You tell her to get on all fours like the <<if $activeSlave.pregKnown == 1>>pregnant<</if>> cow she is.
 	<<if $activeSlave.belly >= 750000>>
-		She is so horribly <<if $activeSlave.bellyPreg >= 3000>>pregnant<<else>>bloated<</if>> that it is a struggle just to shift onto her _belly stomach in the hope that she can even reach the floor with all four limbs. Even worse, her effots are absolutely agonizing to her engorged breasts; when she finally does get onto the mass that is her middle, the sudden shift of her breasts causes her to shriek with pain.
+		She is so horribly <<if $activeSlave.bellyPreg >= 3000>>pregnant<<else>>bloated<</if>> that it is a struggle just to shift onto her _belly stomach in the hope that she can even reach the floor with all four limbs. Even worse, her efforts are absolutely agonizing to her engorged breasts; when she finally does get onto the mass that is her middle, the sudden shift of her breasts causes her to shriek with pain.
 	<<elseif $activeSlave.belly >= 300000>>
 		She has to crawl onto her _belly stomach to even get all four limbs on the ground. The drastic shifting of her breasts is agonizing and she shrieks in spite of herself.
 	<<elseif $activeSlave.belly >= 100000>>
@@ -11227,7 +11227,7 @@ You tell her kindly that you understand, and that she'll be trained to address t
 			<<else>>
 				"Plea<<s>>e, would you pretend to be pregnant with my baby, <<Master>>?" Her eyes are glued to your middle. You could play pretend with her, and you do,
 				<<if isItemAccessible("a small empathy belly")>>
-					straping an empathy belly on yourself before bending over for her.
+					strapping an empathy belly on yourself before bending over for her.
 				<<else>>
 					tossing on a camisole and sticking a pillow under it before bending over for her.
 				<</if>>
@@ -11246,7 +11246,7 @@ You tell her kindly that you understand, and that she'll be trained to address t
 			<<else>>
 				"Plea<<s>>e, would you pretend that I'm pregnant with your baby, <<Master>>?" She pokes out her belly and sways it enticingly, lest you misunderstand. You could play pretend with her, and you do,
 				<<if isItemAccessible("a small empathy belly")>>
-					straping an empathy belly on her before feeling her up.
+					strapping an empathy belly on her before feeling her up.
 				<<else>>
 					tossing her a camisole and a pillow before feeling her up.
 				<</if>>
@@ -11416,16 +11416,15 @@ You tell her kindly that you understand, and that she'll be trained to address t
 		<<set $activeSlave.lipsTat = "tribal patterns">>
 	<<elseif ($activeSlave.fetish == "sadist") && ($activeSlave.fetishKnown == 1)>>
 		<<if canAchieveErection($activeSlave)>>
-			take hold of her most intimate parts and put a set of massive piercings straight through her shaft. She shrieks with agony, the noise going on and on before diminishing into breathless sobbing. Much later, when she gets gingerly up from the chair, she doesn't look eager to stick her cock in anything,
+			take hold of her most intimate parts and put a set of massive piercings straight through her shaft. She shrieks with agony, the noise going on and on before diminishing into breathless sobbing. Much later, when she gets gingerly up from the chair, she doesn't look eager to stick her cock in anything, but she's @@.hotpink;thankful enough.@@
 			<<set $activeSlave.dickPiercing = 2>>
 		<<elseif $activeSlave.dick > 0>>
 			hold her mouth agape and place the first piercing. She can't make much of a facial expression with her mouth that wide, but there is a lewd <<if canSee($activeSlave)>>glint in her eye<<else>>look on her face<</if>> when she realizes she's getting more than one. When you're done, she's sore enough that she gestures her thanks, @@.hotpink;smiling devotedly;@@ she looks eager to try out her new piercing on a fresh pussy.
 			<<set $activeSlave.tonguePiercing = 2>>
 		<<else>>
-			take hold of her most intimate parts and put a set of massive piercings straight through her pussylips. She shrieks with agony, the noise going on and on before diminishing into breathless sobbing. Much later, when she gets gingerly up from the chair, she doesn't look eager to trib anything,
+			take hold of her most intimate parts and put a set of massive piercings straight through her pussylips. She shrieks with agony, the noise going on and on before diminishing into breathless sobbing. Much later, when she gets gingerly up from the chair, she doesn't look eager to trib anything, but she's @@.hotpink;thankful enough.@@
 			<<set $activeSlave.vaginaPiercing = 2>>
 		<</if>>
-		but she's @@.hotpink;thankful enough.@@
 	<<elseif ($activeSlave.fetish == "masochist") && ($activeSlave.fetishKnown == 1)>>
 		take hold of her most intimate parts and put a series of massive piercing straight through her
 		<<if $activeSlave.dick > 0>>
@@ -12780,7 +12779,7 @@ You tell her kindly that you understand, and that she'll be trained to address t
 <<link "Help her with those hard to reach places">>
 	<<EventNameDelink $activeSlave>>
 	<<replace "#result">>
-	She's absorbed enough with her application that she starts with surprise when you gently encircle her from behind with a hug<<if $PC.belly >= 5000>>, pushing your own gravidty into the small of her back<</if>>. When you take the lotion and begin to lovingly massage it into her harder to reach areas, she sighs with pleasure and leans against you.
+	She's absorbed enough with her application that she starts with surprise when you gently encircle her from behind with a hug<<if $PC.belly >= 5000>>, pushing your own gravid belly into the small of her back<</if>>. When you take the lotion and begin to lovingly massage it into her harder to reach areas, she sighs with pleasure and leans against you.
 	<<if ($activeSlave.amp != 1) && $PC.belly >= 1500>> She takes the lotion and begins to return the favor. You spend the rest of her break carefully massaging each other's baby bumps.<</if>>
 	<<if !canTalk($activeSlave)>>
 		<<if $activeSlave.voice == 0>>
@@ -12809,7 +12808,7 @@ You tell her kindly that you understand, and that she'll be trained to address t
 <br><<link "Gently fuck her while helping her apply lotion">>
 	<<EventNameDelink $activeSlave>>
 	<<replace "#result">>
-	She's absorbed enough with her application that she starts with surprise when you gently encircle her from behind with a hug<<if $PC.belly >= 5000>>, pushing your own gravidty into the small of her back<</if>>. When you take the lotion and begin to lovingly massage it into her harder to reach areas, she sighs with pleasure and leans back into you. She feels <<if $PC.dick == 0>>the warmth of your growing arousal<<else>>your erection hard<</if>> against her, so she
+	She's absorbed enough with her application that she starts with surprise when you gently encircle her from behind with a hug<<if $PC.belly >= 5000>>, pushing your own gravid belly into the small of her back<</if>>. When you take the lotion and begin to lovingly massage it into her harder to reach areas, she sighs with pleasure and leans back into you. She feels <<if $PC.dick == 0>>the warmth of your growing arousal<<else>>your erection hard<</if>> against her, so she
 	<<if ($activeSlave.amp == 1)>>
 		wriggles her limbless form around on the floor so as to offer herself to you.
 	<<else>>
@@ -13301,7 +13300,7 @@ You tell her kindly that you understand, and that she'll be trained to address t
 		<<if $activeSlave.pregKnown == 1>>
 			hugs her pregnancy
 		<<else>>
-			attemts to hug herself with her _belly belly in the way
+			attempts to hug herself with her _belly belly in the way
 		<</if>>
 	<<else>>
 		hugs herself
@@ -13711,11 +13710,11 @@ You tell her kindly that you understand, and that she'll be trained to address t
 	You
 	<<if $PC.belly >= 10000>>
 		<<if $activeSlave.belly >= 300000>>
-			tip her over her _belly <<if $activeSlave.bellyPreg >= 3000>>pregnancy<<else>>middle<</if>>, do your best to get close beisde her,
+			tip her over her _belly <<if $activeSlave.bellyPreg >= 3000>>pregnancy<<else>>middle<</if>>, do your best to get close beside her,
 		<<elseif $activeSlave.belly >= 5000>>
 			order her to bend over beside you so your pregnancy doesn't obstruct you as badly
 		<<else>>
-			lean back, pull her over your knee and under your gavid dome of a middle
+			lean back, pull her over your knee and under your gravid dome of a middle
 		<</if>>
 	<<else>>
 		<<if $activeSlave.belly >= 300000>>
@@ -13745,11 +13744,11 @@ You tell her kindly that you understand, and that she'll be trained to address t
 	You
 	<<if $PC.belly >= 10000>>
 		<<if $activeSlave.belly >= 300000>>
-			tip her over her _belly <<if $activeSlave.bellyPreg >= 3000>>pregnancy<<else>>middle<</if>>, do your best to get close beisde her, and grope her thoroughly, bringing her to the painful edge of orgasm. Just when she's about to tip over the edge, the stimulation stops and you flip her onto her back, lower your gravid body down to her level and start playing with her nipples.
+			tip her over her _belly <<if $activeSlave.bellyPreg >= 3000>>pregnancy<<else>>middle<</if>>, do your best to get close beside her, and grope her thoroughly, bringing her to the painful edge of orgasm. Just when she's about to tip over the edge, the stimulation stops and you flip her onto her back, lower your gravid body down to her level and start playing with her nipples.
 		<<elseif $activeSlave.belly >= 5000>>
 			order her to bend over beside you so your pregnancy doesn't obstruct you as badly and grope her thoroughly, bringing her to the painful edge of orgasm. Just when she's about to tip over the edge, the stimulation stops and you haul her upright and start playing with her nipples.
 		<<else>>
-			lean back, pull her over your knee and under your gavid dome of a middle and grope her thoroughly, bringing her to the painful edge of orgasm. Just when she's about to tip over the edge, the stimulation stops and you haul her upright and start playing with her nipples.
+			lean back, pull her over your knee and under your gravid dome of a middle and grope her thoroughly, bringing her to the painful edge of orgasm. Just when she's about to tip over the edge, the stimulation stops and you haul her upright and start playing with her nipples.
 		<</if>>
 	<<else>>
 		<<if $activeSlave.belly >= 300000>>
@@ -13801,11 +13800,11 @@ You tell her kindly that you understand, and that she'll be trained to address t
 	You
 	<<if $PC.belly >= 10000>>
 		<<if $activeSlave.belly >= 300000>>
-			tip her over her _belly <<if $activeSlave.bellyPreg >= 3000>>pregnancy<<else>>middle<</if>>, do your best to get close beisde her,
+			tip her over her _belly <<if $activeSlave.bellyPreg >= 3000>>pregnancy<<else>>middle<</if>>, do your best to get close beside her,
 		<<elseif $activeSlave.belly >= 5000>>
 			order her to bend over beside you so your pregnancy doesn't obstruct you as badly
 		<<else>>
-			lean back, pull her over your knee and under your gavid dome of a middle
+			lean back, pull her over your knee and under your gravid dome of a middle
 		<</if>>
 	<<else>>
 		<<if $activeSlave.belly >= 300000>>
@@ -14095,7 +14094,7 @@ You tell her kindly that you understand, and that she'll be trained to address t
 	secure a bullet vibrator her quivering perineum, and another to the base of her dick, and set them all to gradually increase the strength of their vibrations. In no time at all she releases a <<if ["chastity", "combined chastity"].includes($activeSlave.dickAccessory)>>
 		squirt of ejaculate from her cock cage,
 	<<elseif $activeSlave.prostate > 2>>
-		torrent of nearly clear, whatery ejaculate,
+		torrent of nearly clear, watery ejaculate,
 	<<elseif $activeSlave.prostate == 0>>
 		pathetic dribble of semen,
 	<<elseif $activeSlave.balls > 0>>
@@ -14447,7 +14446,7 @@ You tell her kindly that you understand, and that she'll be trained to address t
 		<<else>>
 			wrapping your hands around the sloshing globe
 		<</if>>
-		and vigorously shaking. As her gut's groaning from the sudden shift of its contents dies down, you gently apply pressure to the bloated organ, careful to only cause her discomfort and not to discourge her contents. Satisfied,
+		and vigorously shaking. As her gut's groaning from the sudden shift of its contents dies down, you gently apply pressure to the bloated organ, careful to only cause her discomfort and not to disgorge her contents. Satisfied,
 	<<else>>
 		Her eyes fly open as soon as she feels someone touching her
 		<<if $activeSlave.weight > 190>>
@@ -14461,7 +14460,7 @@ You tell her kindly that you understand, and that she'll be trained to address t
 		<<else>>
 			chubby middle. You're massaging and jiggling her tiny gut.
 		<</if>>
-		Her face contorts with surprise and then outrage, but then she <<if !canSee($activeSlave)>>recognizes your familiar smell and <</if>>realizes whose hand it is that's taking liberties with her. <<if $activeSlave.intelligence > 1>>Though she's smart,<<elseif $activeSlave.intelligence > -1>>Though she's not dumb,<<else>>She's an idiot, and<</if>> in her drowsy state she can't figure out what to do. She settles for @@.hotpink;freezing submissively@@ and letting you do what you like. You test her compliance by roughly kneading her pliante flesh, testing how well it can be molded into pleasurable valleys and ravines. Satisfied,
+		Her face contorts with surprise and then outrage, but then she <<if !canSee($activeSlave)>>recognizes your familiar smell and <</if>>realizes whose hand it is that's taking liberties with her. <<if $activeSlave.intelligence > 1>>Though she's smart,<<elseif $activeSlave.intelligence > -1>>Though she's not dumb,<<else>>She's an idiot, and<</if>> in her drowsy state she can't figure out what to do. She settles for @@.hotpink;freezing submissively@@ and letting you do what you like. You test her compliance by roughly kneading her pliant flesh, testing how well it can be molded into pleasurable valleys and ravines. Satisfied,
 	<</if>>
 	you leave her to get back to sleep as best she can.
 	<<set $activeSlave.devotion += 4>>
@@ -14584,7 +14583,7 @@ You tell her kindly that you understand, and that she'll be trained to address t
 	<<if $activeSlave.belly >= 750000>>
 		"Oh <<Master>>! I'm <<s>>welling <<s>>o fast with imp<<s>> for you! There'<<s>> <<s>>o many in me... Oh god, it feel<<s>> like I'm going to bur<<s>>t! <<S>>o many... <<Master>> <<s>>ure i<<s>> potent! I hope <<if $PC.title == 1>>he<<else>><<sh>>e<</if>> can handle them all!" She groans, cradling her _belly belly and pretending to be forced to the ground by her pregnancy growing ever larger. "<<Master>>! They won't <<s>>top! Oh... <<S>>o full... I can't <<s>>top con<<c>>eiving!" She roles onto her back and clutches her absurd stomach. "<<S>>o tight! <<S>>o full! <<S>>o Good! I need more! Oh, <<Master>>..." She may be getting a little too into the fantasy.
 		<<if $activeSlave.broodmother == 2 && $activeSlave.preg > 37>>
-			A gush of fluid flows from her pussy, snapping her out of her roleplay. "<<Master>>! I need... One'<<s>> coming now!" You rub her contracting stomach, enjoying the feeling of the life within shifting to take advantage of the free space. You sigh and lean down, the vessel of your spawn needs help after pinning herself in such a compromising position. Holding her belly clear of her crotch, you watch her steadily push out her child before spasming with orgasm and pushing ti effortlessly into the world. After collecting it for a servant to handle, you help the exhausted girl back to her feet. She thanks you sincerely for the assist before going to clean herself up. You barely have time to turn away before another splash catches your attention. "<<Master>>... Another'<<s>>, mmmmh, coming...".
+			A gush of fluid flows from her pussy, snapping her out of her roleplay. "<<Master>>! I need... One'<<s>> coming now!" You rub her contracting stomach, enjoying the feeling of the life within shifting to take advantage of the free space. You sigh and lean down, the vessel of your spawn needs help after pinning herself in such a compromising position. Holding her belly clear of her crotch, you watch her steadily push out her child before spasming with orgasm and freeing it effortlessly into the world. After collecting it for a servant to handle, you help the exhausted girl back to her feet. She thanks you sincerely for the assist before going to clean herself up. You barely have time to turn away before another splash catches your attention. "<<Master>>... Another'<<s>>, mmmmh, coming...".
 		<</if>>
 	<<elseif $activeSlave.belly >= 600000>>
 		"Oh <<Master>>! I'm <<s>>welling <<s>>o fast with imp<<s>> for you! There'<<s>> <<s>>o many in me... Oh god, it feel<<s>> like I'm going to bur<<s>>t! <<S>>o many... <<Master>> <<s>>ure i<<s>> potent! I hope <<if $PC.title == 1>>he<<else>><<sh>>e<</if>> can handle them all!" She teases, cradling her _belly belly and pretending to be forced to the ground by her pregnancy growing ever larger.
@@ -15270,9 +15269,9 @@ You tell her kindly that you understand, and that she'll be trained to address t
 	<<elseif $activeSlave.fetish == "boobs">>
 		Knowing her tastes and wanting the intimacy of mutual pleasure, you make sure your nipples line up with hers as best you can. You note the buck of pleasure this produces each time you get it perfectly right as you make love to her.
 	<<elseif $activeSlave.fetish == "pregnancy" && $activeSlave.pregKnown == 1>>
-		Being on the bottom for some missionary lovemaking is very much to her tastes, even though she is already pregnant. She builds to orgasm slowly, revelling in the feeling of being your woman.
+		Being on the bottom for some missionary lovemaking is very much to her tastes, even though she is already pregnant. She builds to orgasm slowly, reveling in the feeling of being your woman.
 	<<elseif $activeSlave.fetish == "pregnancy">>
-		Being on the bottom for some missionary lovemaking is very much to her tastes, even though the encounter isn't particularly likely to get her pregnant. She builds to orgasm slowly, revelling in the feeling of being your woman.
+		Being on the bottom for some missionary lovemaking is very much to her tastes, even though the encounter isn't particularly likely to get her pregnant. She builds to orgasm slowly, reveling in the feeling of being your woman.
 	<</if>>
 	As you made love to her, the gentle motions, feminine sighs, and delicate aroma of pleasure woke the other girls in bed with you, and they began their own intimacy with each other. As you go back to sleep, you're surrounded with something very like Sapphic paradise. $activeSlave.slaveName nestles up to you once more, embracing you with @@.mediumaquamarine;trust born of love.@@
 	<<set $activeSlave.trust += 4, $activeSlave.vaginalCount++, $vaginalTotal++>>
@@ -15487,7 +15486,7 @@ You tell her kindly that you understand, and that she'll be trained to address t
 		<<elseif $PC.refreshmentType == 5>>
 			your finger pushing a pill deep into her <<if $activeSlave.vagina > 0 && canDoVaginal($activeSlave)>>pussy<<else>>asshole<</if>>. You didn't give her much, but her body is very sensitive there, and the effects hit her very quickly.
 		<<elseif $PC.refreshmentType == 6>>
-			finger pushing a tab into her <<if $activeSlave.vagina > 0 && canDoVaginal($activeSlave)>>pussy<<else>>asshole<</if>>. You didn't give her much, but it quickly disolves and her body is very sensitive there, so the effects hit her very quickly.
+			finger pushing a tab into her <<if $activeSlave.vagina > 0 && canDoVaginal($activeSlave)>>pussy<<else>>asshole<</if>>. You didn't give her much, but it quickly dissolves and her body is very sensitive there, so the effects hit her very quickly.
 		<</if>>
 		You go back to work, letting the slave loll around on your desk, enjoying the effects. You reflect that it's probably some kind of milestone in wealth that you're willing to throw the good stuff around like this. When she's had time to reflect on the strange incident, she @@.mediumaquamarine;resolves to trust you more in the future,@@ since it can be fun.
 	<<else>>
@@ -15898,7 +15897,7 @@ You tell her kindly that you understand, and that she'll be trained to address t
 	<</if>>
 	thighs, producing a shiver from the $desc, and lift her up against your chest, pinning her there with your hands supporting the backs of her knees. Giggling<<if $activeSlave.voice == 0>> mutely<</if>>, she finds herself held in a fetal position with her back pressed against your <<if $PC.boobs == 1>>tits<<else>>chest<</if>>.
 	<<if $activeSlave.boobs > 40000>>
-		Her expansive tits not only weigh her down, but also forc you to push her against the shower wall for added support.
+		Her expansive tits not only weigh her down, but also force you to push her against the shower wall for added support.
 	<<elseif $activeSlave.weight > 160>>
 		She's certainly an armful and a little too fat, forcing you to push her against the shower wall for added support.
 	<<elseif $activeSlave.balls > 200>>
@@ -17717,7 +17716,7 @@ You tell her kindly that you understand, and that she'll be trained to address t
 					turns around and shivers with pleasure as she hilts her anal sphincter around the base of <<if $PC.dick == 1>>your cock<<else>>the phallus<</if>>. She bounces on it happily, reaming her own ass,
 					<<AnalVCheck>>
 				<<else>>
-					turns around and shivers with pleasure as she feels <<if $PC.dick == 1>>your cock<<else>>the phallus<</if>> slip between her buttcheecks. She rubs against it, happy to share her butt with you,
+					turns around and shivers with pleasure as she feels <<if $PC.dick == 1>>your cock<<else>>the phallus<</if>> slip between her buttcheeks. She rubs against it, happy to share her butt with you,
 				<</if>>
 				<<set _fucked = 1>>
 			<<case "boobs">>
@@ -17949,7 +17948,7 @@ You tell her kindly that you understand, and that she'll be trained to address t
 			She gasps wantonly as she feels the familiar sensation of <<if $PC.dick == 1>>your dick<<else>>a strap-on<</if>> infiltrating between her cheeks and towards her <<if $activeSlave.anus >= 3>>loose<<elseif $activeSlave.anus >= 2>>relaxed<<else>>tight little<</if>> anus. She releases her grip on the constricting clothing that's binding her thighs together and grinds her ass back against you, making sure every centimeter of your <<if $PC.dick == 1>>hard member<<else>>phallus<</if>> that will fit gets inside her asshole. Some time later, the hard pounding dislodges the clothing and it slides down her legs to gather around her ankles. @@.hotpink;She doesn't notice.@@
 			<<AnalVCheck>>
 		<<elseif $activeSlave.energy > 80>>
-			She's so horny that she doesn't need any foreplay. Nor does she get any. You grab her hips and smack your <<if $PC.dick == 1>>dick<<else>>strap-on<</if>> against her jiggling buttocks a couple of times, making her bounce with eagerness and frustration at the anticipation of imminent sexual release. Exercising mercy, you pull her ass back against you and maneuver <<if $PC.dick == 1>>yourself<<else>>your insturment<</if>> inside her, enjoying her shiver at the @@.hotpink;satisfaction of her hopes.@@ The constricting clothes pin her legs together, and you hold her arms against her sides, keeping her back pressed against your
+			She's so horny that she doesn't need any foreplay. Nor does she get any. You grab her hips and smack your <<if $PC.dick == 1>>dick<<else>>strap-on<</if>> against her jiggling buttocks a couple of times, making her bounce with eagerness and frustration at the anticipation of imminent sexual release. Exercising mercy, you pull her ass back against you and maneuver <<if $PC.dick == 1>>yourself<<else>>your instrument<</if>> inside her, enjoying her shiver at the @@.hotpink;satisfaction of her hopes.@@ The constricting clothes pin her legs together, and you hold her arms against her sides, keeping her back pressed against your
 			<<if $PC.belly > 1500>>
 				pregnancy
 			<<elseif $PC.boobs == 1>>
@@ -18121,16 +18120,22 @@ You tell her kindly that you understand, and that she'll be trained to address t
 	<</if>>
 	her youthful partners particularly enjoyed filling her with their potent seed. Unsurprisingly, at a routine check up later that week, $activeSlave.slaveName joyfully discovers that she was impregnated during her Frat House excursion. It seems that being bred by a bunch of horny college boys has eliminated her prior worries about the importance of age and also caused her to @@.lightcoral;fetishize impregnation.@@ @@.hotpink;She has become more submissive to you@@ for giving her the means to broaden her sexual horizons.
 	<<set $activeSlave.devotion += 4, $activeSlave.preg = 1, $activeSlave.pregWeek = 1, $activeSlave.pregKnown = 1>>
-	<<SetPregType $activeSlave>>
+	<<set $activeSlave.pregType = setPregType($activeSlave)>>
 	<<set WombImpregnate($activeSlave, $activeSlave.pregType, 0, 1)>>
 	<<set $activeSlave.fetish = "pregnancy", $activeSlave.fetishKnown = 1, $activeSlave.fetishStrength = 5>>
 	<<if $activeSlave.mpreg == 1>>
-		<<AnalVCheck 10>>
+		<<set $activeSlave.analCount += 10, $analTotal += 10>>
+		<<if $activeSlave.anus == 0>>
+			<<set $activeSlave.anus++>>
+		<</if>>
 	<<else>>
-		<<VaginalVCheck 10>>
+		<<set $activeSlave.vaginalCount += 10, $vaginalTotal += 10>>
+		<<if $activeSlave.vagina == 0>>
+			<<set $activeSlave.vagina++>>
+		<</if>>
 	<</if>>
 	<</replace>>
-<</link>> //This option will render $activeSlave.slaveName pregnant//
+<</link>> //This option will render $activeSlave.slaveName pregnant//<<if canDoVaginal($activeSlave) && ($activeSlave.vagina == 0)>> // and take her virginity//<<elseif !canDoVaginal($activeSlave) && ($activeSlave.anus == 0)>> //and take her anal virginity//<</if>>
 <</if>>
 
 <<case "old PC age difference">>
@@ -18138,7 +18143,7 @@ You tell her kindly that you understand, and that she'll be trained to address t
 <<link "Gently acclimate her to the age difference with some lovemaking">>
 	<<EventNameDelink $activeSlave>>
 	<<replace "#result">>
-	As you cross the breadth of your office to reach $activeSlave.slaveName, she presents herself for your sexual usage out of habit. However, you take her by surprise by drawing her into you arms, running the tips of your fingers through her $activeSlave.hColor hair,  and looking into her $activeSlave.eyeColor eyes. <<if canSee($activeSlave)>>She meets your gaze for a brief moment before blushing girlishly, as if forgetting how many years her senior you are<<else>>She seems to feel the intensity of your gaze despite her sightless eyes and blushes girlishly, as if forgetting how many years her senior you are<</if>> . In lieu of words, you lift her chin with a single beckoning finger and steal her breath from her lips with a firm kiss. Once she's recovered her wits she clings to you with almost animalistic attachment. After a few moments she moves to get down on her knees, clearly defaulting to her role as a sex slave in response to your unexpected intimacy. 
+	As you cross the breadth of your office to reach $activeSlave.slaveName, she presents herself for your sexual usage out of habit. However, you take her by surprise by drawing her into you arms, running the tips of your fingers through her $activeSlave.hColor hair, and looking into her $activeSlave.eyeColor eyes. <<if canSee($activeSlave)>>She meets your gaze for a brief moment before blushing girlishly, as if forgetting how many years her senior you are<<else>>She seems to feel the intensity of your gaze despite her sightless eyes and blushes girlishly, as if forgetting how many years her senior you are<</if>> . In lieu of words, you lift her chin with a single beckoning finger and steal her breath from her lips with a firm kiss. Once she's recovered her wits she clings to you with almost animalistic attachment. After a few moments she moves to get down on her knees, clearly defaulting to her role as a sex slave in response to your unexpected intimacy. 
 	Instead, you
 	<<if $activeSlave.belly >= 300000>>
 		help her to her feet and guide her to bed, aiding the
@@ -18191,7 +18196,7 @@ You tell her kindly that you understand, and that she'll be trained to address t
 	<<elseif $activeSlave.preg > 20>>
 		stroke her pregnant belly,
 	<<elseif $activeSlave.belly >= 5000>>
-		carress the curve of her _belly belly,
+		caress the curve of her _belly belly,
 	<</if>>
 	and bring her to climax again and again. After a final frantic orgasm together in her
 	<<if canDoVaginal($activeSlave)>>
@@ -18267,16 +18272,22 @@ You tell her kindly that you understand, and that she'll be trained to address t
 	<</if>>
 	her aged partners particularly enjoyed filling her with their still potent seed. Unsurprisingly, at a routine check up later that week, $activeSlave.slaveName joyfully discovers that she was impregnated during her excursion. It seems that being bred by a bunch of horny old men has eliminated her prior worries about the importance of age and also caused her to @@.lightcoral;fetishize impregnation.@@ @@.hotpink;She has become more submissive to you@@ for giving her the means to broaden her sexual horizons.
 	<<set $activeSlave.devotion += 4, $activeSlave.preg = 1, $activeSlave.pregWeek = 1, $activeSlave.pregKnown = 1>>
-	<<SetPregType $activeSlave>>
+	<<set $activeSlave.pregType = setPregType($activeSlave)>>
 	<<set WombImpregnate($activeSlave, $activeSlave.pregType, 0, 1)>>
 	<<set $activeSlave.fetish = "pregnancy", $activeSlave.fetishKnown = 1, $activeSlave.fetishStrength = 5>>
 	<<if $activeSlave.mpreg == 1>>
-		<<AnalVCheck 10>>
+		<<set $activeSlave.analCount += 10, $analTotal += 10>>
+		<<if $activeSlave.anus == 0>>
+			<<set $activeSlave.anus++>>
+		<</if>>
 	<<else>>
-		<<VaginalVCheck 10>>
+		<<set $activeSlave.vaginalCount += 10, $vaginalTotal += 10>>
+		<<if $activeSlave.vagina == 0>>
+			<<set $activeSlave.vagina++>>
+		<</if>>
 	<</if>>
 	<</replace>>
-<</link>> //This option will render $activeSlave.slaveName pregnant//
+<</link>> //This option will render $activeSlave.slaveName pregnant//<<if canDoVaginal($activeSlave) && ($activeSlave.vagina == 0)>> // and take her virginity//<<elseif !canDoVaginal($activeSlave) && ($activeSlave.anus == 0)>> //and take her anal virginity//<</if>>
 <</if>>
 
 <<case "devoted educated slave">>
@@ -18475,7 +18486,7 @@ You tell her kindly that you understand, and that she'll be trained to address t
 		<<if $activeSlave.bellyPreg >= 3000>>
 			kneels carefully with an arm wrapped protectively around her bump
 		<<else>>
-			kneels carefully with an arm craddling her _belly belly
+			kneels carefully with an arm cradling her _belly belly
 		<</if>>
 	<<else>>
 		sinks to her knees obediently with her hands placed placidly on her thighs
@@ -18787,7 +18798,7 @@ You tell her kindly that you understand, and that she'll be trained to address t
 	<<EventNameDelink $activeSlave>>
 	<<replace "#result">>
 	<<if $activeSlave.belly >= 3000000>>
-		You pull your chair back from your desk and order her to lie on her back with her _belly belly to the ceiling. She isn't sure what you are up to, but it quickly dawns on her as you staddle her stomach and take a seat. She groans under the massive pressure increase inside her, but does her best to hold your weight.
+		You pull your chair back from your desk and order her to lie on her back with her _belly belly to the ceiling. She isn't sure what you are up to, but it quickly dawns on her as you straddle her stomach and take a seat. She groans under the massive pressure increase inside her, but does her best to hold your weight.
 		<<if $activeSlave.preg > 10>>
 			You manage to get very little work done. The sheer amount of motion
 			<<if $PC.dick == 1>>
diff --git a/src/uncategorized/RETS.tw b/src/uncategorized/RETS.tw
index 1a313bf2ae480a1ee0b7db6f305f98b25e2cf7d0..efafd4557f5f150037d370558335289549865d6c 100644
--- a/src/uncategorized/RETS.tw
+++ b/src/uncategorized/RETS.tw
@@ -46,172 +46,113 @@
 <<case "taste test">>
 
 <<if Array.isArray($RETasteTestSubIDs)>>
-<<set $RETasteTestSubIDs = $RETasteTestSubIDs.shuffle()>>
-<<for $i = 0; $i < $RETasteTestSubIDs.length; $i++>>
-	<<if $eventSlave.ID != $RETasteTestSubIDs[$i]>>
-		<<for _s = 0; _s < $slaves.length; _s++>>
-			<<if $RETasteTestSubIDs[$i] == $slaves[_s].ID>>
-				<<set $subSlave = $slaves[_s]>>
-				<<break>>
-			<</if>>
-		<</for>>
-	<<break>>
-	<</if>>
-<</for>>
+	<<set $RETasteTestSubIDs = $RETasteTestSubIDs.shuffle()>>
+	<<for $i = 0; $i < $RETasteTestSubIDs.length; $i++>>
+		<<if $eventSlave.ID != $RETasteTestSubIDs[$i]>>
+			<<set $subSlave = $slaves.find(function(s) { return s.ID == $RETasteTestSubIDs[$i]; })>>
+			<<break>>
+		<</if>>
+	<</for>>
 <</if>>
 
 <<case "date please">>
 
-<<for $i = 0; $i < $slaves.length; $i++>>
-<<if $eventSlave.relationshipTarget == $slaves[$i].ID>>
-<<set $subSlave = $slaves[$i]>>
-<<break>>
-<</if>>
-<</for>>
+<<set $subSlave = $slaves.find(function(s) { return s.ID == $eventSlave.relationshipTarget; })>>
 
 <<case "anal cowgirl">>
 
 <<if Array.isArray($REAnalCowgirlSubIDs)>>
-<<set $REAnalCowgirlSubIDs = $REAnalCowgirlSubIDs.shuffle()>>
-<<for $i = 0; $i < $REAnalCowgirlSubIDs.length; $i++>>
-	<<if $eventSlave.ID != $REAnalCowgirlSubIDs[$i]>>
-		<<for _s = 0; _s < $slaves.length; _s++>>
-			<<if $REAnalCowgirlSubIDs[$i] == $slaves[_s].ID>>
-				<<set $subSlave = $slaves[_s]>>
-				<<break>>
-			<</if>>
-		<</for>>
-	<<break>>
-	<</if>>
-<</for>>
+	<<set $REAnalCowgirlSubIDs = $REAnalCowgirlSubIDs.shuffle()>>
+	<<for $i = 0; $i < $REAnalCowgirlSubIDs.length; $i++>>
+		<<if $eventSlave.ID != $REAnalCowgirlSubIDs[$i]>>
+			<<set $subSlave = $slaves.find(function(s) { return s.ID == $REAnalCowgirlSubIDs[$i]; })>>
+			<<break>>
+		<</if>>
+	<</for>>
 <</if>>
 
 <<case "boob collision">>
 
 <<if Array.isArray($REBoobCollisionSubIDs)>>
-<<set $REBoobCollisionSubIDs = $REBoobCollisionSubIDs.shuffle()>>
-<<for $i = 0; $i < $REBoobCollisionSubIDs.length; $i++>>
-	<<if $eventSlave.ID != $REBoobCollisionSubIDs[$i]>>
-		<<for _s = 0; _s < $slaves.length; _s++>>
-			<<if $REBoobCollisionSubIDs[$i] == $slaves[_s].ID>>
-				<<set $subSlave = $slaves[_s]>>
-				<<break>>
-			<</if>>
-		<</for>>
-	<<break>>
-	<</if>>
-<</for>>
+	<<set $REBoobCollisionSubIDs = $REBoobCollisionSubIDs.shuffle()>>
+	<<for $i = 0; $i < $REBoobCollisionSubIDs.length; $i++>>
+		<<if $eventSlave.ID != $REBoobCollisionSubIDs[$i]>>
+			<<set $subSlave = $slaves.find(function(s) { return s.ID == $REBoobCollisionSubIDs[$i]; })>>
+			<<break>>
+		<</if>>
+	<</for>>
 <</if>>
 
 <<case "if you enjoy it">>
 
 <<if Array.isArray($REIfYouEnjoyItSubIDs)>>
-<<set $REIfYouEnjoyItSubIDs = $REIfYouEnjoyItSubIDs.random()>>
-<<for _s = 0; _s < $slaves.length; _s++>>
-	<<if $REIfYouEnjoyItSubIDs == $slaves[_s].ID>>
-		<<set $subSlave = $slaves[_s]>>
-		<<break>>
-	<</if>>
-<</for>>
+	<<set $REIfYouEnjoyItSubIDs = $REIfYouEnjoyItSubIDs.random()>>
+	<<set $subSlave = $slaves.find(function(s) { return s.ID == $REIfYouEnjoyItSubIDs; })>>
 <</if>>
 
 <<case "sadistic description">>
 
 <<if Array.isArray($RESadisticDescriptionSubIDs)>>
-<<set $RESadisticDescriptionSubIDs = $RESadisticDescriptionSubIDs.random()>>
-<<for _s = 0; _s < $slaves.length; _s++>>
-	<<if $RESadisticDescriptionSubIDs == $slaves[_s].ID>>
-		<<set $subSlave = $slaves[_s]>>
-		<<break>>
-	<</if>>
-<</for>>
+	<<set $RESadisticDescriptionSubIDs = $RESadisticDescriptionSubIDs.random()>>
+	<<set $subSlave = $slaves.find(function(s) { return s.ID == $RESadisticDescriptionSubIDs; })>>
 <</if>>
 
 <<case "shower force">>
 
 <<if Array.isArray($REShowerForceSubIDs)>>
-<<set $REShowerForceSubIDs = $REShowerForceSubIDs.random()>>
-<<for _s = 0; _s < $slaves.length; _s++>>
-	<<if $REShowerForceSubIDs == $slaves[_s].ID>>
-		<<set $subSlave = $slaves[_s]>>
-		<<break>>
-	<</if>>
-<</for>>
+	<<set $REShowerForceSubIDs = $REShowerForceSubIDs.random()>>
+	<<set $subSlave = $slaves.find(function(s) { return s.ID == $REShowerForceSubIDs; })>>
 <</if>>
 
 <<case "repressed anal virgin">>
 
 <<if Array.isArray($RERepressedAnalVirginSubIDs)>>
-<<set $RERepressedAnalVirginSubIDs = $RERepressedAnalVirginSubIDs.random()>>
-<<for _s = 0; _s < $slaves.length; _s++>>
-	<<if $RERepressedAnalVirginSubIDs == $slaves[_s].ID>>
-		<<set $subSlave = $slaves[_s]>>
-		<<set $slaves[_s].analCount += 1>>
-		<<set $analTotal += 1>>
-		<<break>>
-	<</if>>
-<</for>>
+	<<set $RERepressedAnalVirginSubIDs = $RERepressedAnalVirginSubIDs.random()>>
+	<<set _s = $slaves.findIndex(function(s) { return s.ID == $RERepressedAnalVirginSubIDs; })>>
+	<<set $subSlave = $slaves[_s]>>
+	<<set $slaves[_s].analCount += 1>>
+	<<set $analTotal += 1>>
 <</if>>
 
 <<case "top exhaustion">>
 
-<<set $subSlave = $RERelationshipSlave>>
+<<set $subSlave = $slaves.find(function(s) { return s.ID == $eventSlave.relationshipTarget; })>>
 
 <<case "simple assault">>
 
 <<if Array.isArray($RESimpleAssaultIDs)>>
-<<set $RESimpleAssaultIDs = $RESimpleAssaultIDs.random()>>
-<<for _s = 0; _s < $slaves.length; _s++>>
-	<<if $RESimpleAssaultIDs == $slaves[_s].ID>>
-		<<set $subSlave = $slaves[_s]>>
-		<<break>>
-	<</if>>
-<</for>>
+	<<set $RESimpleAssaultIDs = $RESimpleAssaultIDs.random()>>
+	<<set $subSlave = $slaves.find(function(s) { return s.ID == $RESimpleAssaultIDs; })>>
 <</if>>
 
 <<case "cockmilk interception">>
 
 <<if Array.isArray($RECockmilkInterceptionIDs)>>
-<<set $RECockmilkInterceptionIDs = $RECockmilkInterceptionIDs.shuffle()>>
-<<for _i = 0; _i < $RECockmilkInterceptionIDs.length; _i++>>
-	<<if $eventSlave.ID != $RECockmilkInterceptionIDs[_i]>>
-		<<for _s = 0; _s < $slaves.length; _s++>>
-			<<if $RECockmilkInterceptionIDs[_i] == $slaves[_s].ID>>
-				<<set $subSlave = $slaves[_s]>>
-				<<break>>
-			<</if>>
-		<</for>>
-	<<break>>
-	<</if>>
-<</for>>
+	<<set $RECockmilkInterceptionIDs = $RECockmilkInterceptionIDs.shuffle()>>
+	<<for _i = 0; _i < $RECockmilkInterceptionIDs.length; _i++>>
+		<<if $eventSlave.ID != $RECockmilkInterceptionIDs[_i]>>
+			<<set $subSlave = $slaves.find(function(s) { return s.ID == $RECockmilkInterceptionIDs[_i]; })>>
+			<<break>>
+		<</if>>
+	<</for>>
 <</if>>
 
 <<case "interslave begging">>
 
 <<if Array.isArray($REInterslaveBeggingIDs)>>
-<<set $REInterslaveBeggingIDs = $REInterslaveBeggingIDs.shuffle()>>
-<<for _i = 0; _i < $REInterslaveBeggingIDs.length; _i++>>
-	<<if $eventSlave.ID != $REInterslaveBeggingIDs[_i]>>
-		<<for _s = 0; _s < $slaves.length; _s++>>
-			<<if $REInterslaveBeggingIDs[_i] == $slaves[_s].ID>>
-				<<set $subSlave = $slaves[_s]>>
-				<<break>>
-			<</if>>
-		<</for>>
-	<<break>>
-	<</if>>
-<</for>>
+	<<set $REInterslaveBeggingIDs = $REInterslaveBeggingIDs.shuffle()>>
+	<<for _i = 0; _i < $REInterslaveBeggingIDs.length; _i++>>
+		<<if $eventSlave.ID != $REInterslaveBeggingIDs[_i]>>
+			<<set $subSlave = $slaves.find(function(s) { return s.ID == $REInterslaveBeggingIDs[_i]; })>>
+			<<break>>
+		<</if>>
+	<</for>>
 <</if>>
 
 <<case "incestuous nursing">>
 
 <<if $familyTesting == 0>>
-	<<for _s = 0; _s < $slaves.length; _s++>>
-		<<if $activeSlave.relationTarget == $slaves[_s].ID>>
-			<<set $subSlave = $slaves[_s]>>
-			<<break>>
-		<</if>>
-	<</for>>
+	<<set $subSlave = $slaves.find(function(s) { return s.ID == $activeSlave.relationTarget; })>>
 <<else>>
 	<<set $subSlave = randomAvailableDaughter($activeSlave)>>
 	<<if ndef $subSlave>>
@@ -704,7 +645,7 @@ $activeSlave.slaveName coughs and looks doubtful, like she's mulling over a ques
 	<<set $seed = 1>>
 <</if>>
 <<set _belly = bellyAdjective($activeSlave)>>
-As you stroll past the best part of the slave living area one evening, you hear a lewd slap, slap, slap coming from the room <<EventNameLink $activeSlave>> and $RERelationshipSlave.slaveName share. It's quite obvious what they're up to, but you look in anyway. $activeSlave.slaveName has clearly had a long day, and is tired, but she's being a good <<if $activeSlave.relationship > 4>>wife<<else>>lover<</if>> and letting $RERelationshipSlave.slaveName use her body. $activeSlave.slaveName is lying face-down on their bed, arms crossed under her head, looking quite relaxed. She has a couple of pillows tucked under her hips to raise them so that her <<if $activeSlave.relationship > 4>>wife<<else>>sweetheart<</if>> can fuck her comfortably<<if $activeSlave.belly >= 5000>> and to give her _belly <<if $activeSlave.bellyPreg >= 3000>>pregnancy<<else>>belly<</if>> room beneath her<</if>>. They've obviously been at this for a while. $RERelationshipSlave.slaveName likes to top and is not gentle at it, and she's pounding $activeSlave.slaveName as hard as she can. She's <<if $RERelationshipSlave.muscles > 30>>a very strong girl, and her muscles work noticeably<<elseif $RERelationshipSlave.muscles > 5>>physically fit, but even so, she's showing signs of fatigue<<else>>not very fit, and she's gasping tiredly<</if>> as she pistons <<if canPenetrate($RERelationshipSlave)>>her penis<<else>>the strap-on she's wearing<</if>> in and out of the <<if $seed == 1>>asshole<<else>>pussy<</if>> beneath her.
+As you stroll past the best part of the slave living area one evening, you hear a lewd slap, slap, slap coming from the room <<EventNameLink $activeSlave>> and $subSlave.slaveName share. It's quite obvious what they're up to, but you look in anyway. $activeSlave.slaveName has clearly had a long day, and is tired, but she's being a good <<if $activeSlave.relationship > 4>>wife<<else>>lover<</if>> and letting $subSlave.slaveName use her body. $activeSlave.slaveName is lying face-down on their bed, arms crossed under her head, looking quite relaxed. She has a couple of pillows tucked under her hips to raise them so that her <<if $activeSlave.relationship > 4>>wife<<else>>sweetheart<</if>> can fuck her comfortably<<if $activeSlave.belly >= 5000>> and to give her _belly <<if $activeSlave.bellyPreg >= 3000>>pregnancy<<else>>belly<</if>> room beneath her<</if>>. They've obviously been at this for a while. $subSlave.slaveName likes to top and is not gentle at it, and she's pounding $activeSlave.slaveName as hard as she can. She's <<if $subSlave.muscles > 30>>a very strong girl, and her muscles work noticeably<<elseif $subSlave.muscles > 5>>physically fit, but even so, she's showing signs of fatigue<<else>>not very fit, and she's gasping tiredly<</if>> as she pistons <<if canPenetrate($subSlave)>>her penis<<else>>the strap-on she's wearing<</if>> in and out of the <<if $seed == 1>>asshole<<else>>pussy<</if>> beneath her.
 
 <br><br>
 
@@ -713,27 +654,27 @@ For her part, $activeSlave.slaveName is playing an utterly passive role. She eve
 	<<if $activeSlave.anus > 2>>
 		Her welcoming asspussy can take this all night.
 	<<elseif $activeSlave.anus > 1>>
-		<<if canPenetrate($RERelationshipSlave)>>
-			<<if $RERelationshipSlave.dick > 4>>
+		<<if canPenetrate($subSlave)>>
+			<<if $subSlave.dick > 4>>
 				Her lover's cock is big enough that it sometimes bothers even her experienced anus, but she was clearly fucked into a nice relaxed gape a while ago.
 			<<else>>
 				She can take her lover's modest cock easily.
 			<</if>>
-			<<if canImpreg($activeSlave, $RERelationshipSlave)>>
-				<<KnockMeUp $activeSlave 10 1 $RERelationshipSlave.ID 1>>
+			<<if canImpreg($activeSlave, $subSlave)>>
+				<<KnockMeUp $activeSlave 10 1 $subSlave.ID 1>>
 			<</if>>
 		<<else>>
 			Her lover is using a formidable phallus, but she was clearly fucked into a nice relaxed gape a while ago.
 		<</if>>
 	<<else>>
-		<<if canPenetrate($RERelationshipSlave)>>
-			<<if $RERelationshipSlave.dick > 2>>
+		<<if canPenetrate($subSlave)>>
+			<<if $subSlave.dick > 2>>
 				Her lover's cock is big enough that it often causes her some anal pain, but her tight ass has clearly been worked in gradually tonight, and she's taking it just fine.
 			<<else>>
 				Her lover's little dick is well suited to her tight butt, and she's taking her anal pounding just fine.
 			<</if>>
-			<<if canImpreg($activeSlave, $RERelationshipSlave)>>
-				<<KnockMeUp $activeSlave 10 1 $RERelationshipSlave.ID 1>>
+			<<if canImpreg($activeSlave, $subSlave)>>
+				<<KnockMeUp $activeSlave 10 1 $subSlave.ID 1>>
 			<</if>>
 		<<else>>
 			Her lover is using a formidable phallus, but her tight ass has clearly been worked in gradually tonight, and she's taking it just fine.
@@ -743,39 +684,39 @@ For her part, $activeSlave.slaveName is playing an utterly passive role. She eve
 	<<if $activeSlave.vagina > 2>>
 		Her gaping cunt can take this all night.
 	<<elseif $activeSlave.vagina > 1>>
-		<<if canPenetrate($RERelationshipSlave)>>
-			<<if $RERelationshipSlave.dick > 4>>
+		<<if canPenetrate($subSlave)>>
+			<<if $subSlave.dick > 4>>
 				Her lover's cock is big enough that it sometimes bothers even her veteran pussy, but she's relaxed and taking it easily.
 			<<else>>
 				She can take her lover's modest cock easily.
 			<</if>>
-			<<if canImpreg($activeSlave, $RERelationshipSlave)>>
-				<<KnockMeUp $activeSlave 10 0 $RERelationshipSlave.ID 1>>
+			<<if canImpreg($activeSlave, $subSlave)>>
+				<<KnockMeUp $activeSlave 10 0 $subSlave.ID 1>>
 			<</if>>
 		<<else>>
 			Her lover is using a formidable phallus, but she's relaxed and taking it easily.
 		<</if>>
 	<<else>>
-		<<if canPenetrate($RERelationshipSlave)>>
-			<<if $RERelationshipSlave.dick > 2>>
+		<<if canPenetrate($subSlave)>>
+			<<if $subSlave.dick > 2>>
 				Her lover's cock is big enough that it often causes her some pain, but her tight little pussy has clearly been worked in gradually tonight, and she's taking it just fine.
 			<<else>>
 				Her lover's little dick is well suited to her tight little pussy, and she's taking her pounding just fine.
 			<</if>>
-			<<if canImpreg($activeSlave, $RERelationshipSlave)>>
-				<<KnockMeUp $activeSlave 10 0 $RERelationshipSlave.ID 1>>
+			<<if canImpreg($activeSlave, $subSlave)>>
+				<<KnockMeUp $activeSlave 10 0 $subSlave.ID 1>>
 			<</if>>
 		<<else>>
 			Her lover is using a formidable phallus, but her tight little pussy has clearly been worked in gradually tonight, and she's taking it just fine.
 		<</if>>
 	<</if>>
 <</if>>
-Being the <<if $activeSlave.relationship > 4>>wife<<else>>lover<</if>> of a lusty fucker like $activeSlave.slaveName can be tiring, especially in addition to her other duties. But despite the vigor, the sex looks quite loving. $activeSlave.slaveName goes on smiling comfortably as <<if $activeSlave.butt > 7>>her enormous ass ripples<<elseif $activeSlave.butt > 4>>her heavy ass jiggles<<else>>her cute butt jiggles a bit<</if>> under each hard slap as $RERelationshipSlave.slaveName brings her hips down to penetrate her fully, yet again.
+Being the <<if $activeSlave.relationship > 4>>wife<<else>>lover<</if>> of a lusty fucker like $activeSlave.slaveName can be tiring, especially in addition to her other duties. But despite the vigor, the sex looks quite loving. $activeSlave.slaveName goes on smiling comfortably as <<if $activeSlave.butt > 7>>her enormous ass ripples<<elseif $activeSlave.butt > 4>>her heavy ass jiggles<<else>>her cute butt jiggles a bit<</if>> under each hard slap as $subSlave.slaveName brings her hips down to penetrate her fully, yet again.
 
 <br><br>
-<<set _belly = bellyAdjective($RERelationshipSlave)>>
+<<set _belly = bellyAdjective($subSlave)>>
 
-Mere moments after you absorb this arresting scene, $RERelationshipSlave.slaveName thrusts <<if canPenetrate($RERelationshipSlave)>>her cock<<else>>the strap-on<</if>> all the way inside $activeSlave.slaveName's <<if $seed == 1>>ass<<else>>womanhood<</if>> and shudders, <<if canPenetrate($RERelationshipSlave)>>filling it with her cum<<else>>orgasming<</if>>. Then she collapses, utterly spent. $activeSlave.slaveName <<if canPenetrate($RERelationshipSlave)>>gasps at the sensation of the ejaculate shooting into her body<<else>>smiles a little wider as she feels $activeSlave.slaveName's muscles tense with climax<</if>>, and then grunts a little as $RERelationshipSlave.slaveName lies down on top of her.<<if $RERelationshipSlave.boobs > 5000>> The enormous weight of her lover's boobs squashes her.<</if>><<if $RERelationshipSlave.belly >= 5000>> Her _belly <<if $RERelationshipSlave.bellyPreg >= 3000>>pregnancy<<else>>belly<</if>> pushing into the small of her back.<</if>> After a few seconds, she wiggles her hips a little as a wordless question. The sensation <<if canPenetrate($RERelationshipSlave)>>against $RERelationshipSlave.slaveName's softening, overstimulated member<<else>>is transmitted through the phallus and its harness to $RERelationshipSlave.slaveName's overstimulated clit, and this<</if>> makes the exhausted slave on top quiver, eliciting a giggle from the slave underneath her. "I love you, $RERelationshipSlave.slaveName," she whispers, and receives a mumbled "I love you too" in breathy response, right next to her ear.
+Mere moments after you absorb this arresting scene, $subSlave.slaveName thrusts <<if canPenetrate($subSlave)>>her cock<<else>>the strap-on<</if>> all the way inside $activeSlave.slaveName's <<if $seed == 1>>ass<<else>>womanhood<</if>> and shudders, <<if canPenetrate($subSlave)>>filling it with her cum<<else>>orgasming<</if>>. Then she collapses, utterly spent. $activeSlave.slaveName <<if canPenetrate($subSlave)>>gasps at the sensation of the ejaculate shooting into her body<<else>>smiles a little wider as she feels $activeSlave.slaveName's muscles tense with climax<</if>>, and then grunts a little as $subSlave.slaveName lies down on top of her.<<if $subSlave.boobs > 5000>> The enormous weight of her lover's boobs squashes her.<</if>><<if $subSlave.belly >= 5000>> Her _belly <<if $subSlave.bellyPreg >= 3000>>pregnancy<<else>>belly<</if>> pushing into the small of her back.<</if>> After a few seconds, she wiggles her hips a little as a wordless question. The sensation <<if canPenetrate($subSlave)>>against $subSlave.slaveName's softening, overstimulated member<<else>>is transmitted through the phallus and its harness to $subSlave.slaveName's overstimulated clit, and this<</if>> makes the exhausted slave on top quiver, eliciting a giggle from the slave underneath her. "I love you, $subSlave.slaveName," she whispers, and receives a mumbled "I love you too" in breathy response, right next to her ear.
 
 <<case "simple assault">>
 
@@ -894,7 +835,7 @@ voice. It's $subSlave.slaveName.
 <<elseif $subSlave.preg > 30 && $activeSlave.dick > 3>>
 	"I'm really pregnant, and it'<<s>> getting uncomfortable to take a big cock like your<<s>>."
 <<elseif $subSlave.assignment == "work in the brothel" || $subSlave.assignment == "whore">>
-	"And my <<if _vaginal>>pu<<ss>>y<<else>>a<<ss>><</if>> i<<s>> <<s>>ore. Cu<<s>>tomer<<s>> <<if _vaginal>>fucked me<<s>><<else>>pounded it<</if>> all day."
+	"And my <<if _vaginal>>pu<<ss>>y<<else>>a<<ss>><</if>> i<<s>> <<s>>ore. Cu<<s>>tomer<<s>> <<if _vaginal>>fucked me<<else>>pounded it<</if>> all day."
 <<elseif $subSlave.assignment == "serve in the club" || $subSlave.assignment == "serve the public">>
 	"And my <<if _vaginal>>pu<<ss>>y<<else>>a<<ss>><</if>> i<<s>> <<s>>ore. Citizen<<s>> <<if _vaginal>>fucked me<<else>>pounded it<</if>> all day."
 <<else>>
@@ -989,7 +930,7 @@ $activeSlave.slaveName is almost in tears.
 <<case "incestuous nursing">>
 
 <<set _meal = either("breakfast", "lunch", "dinner")>>
-<<if _meal == "breakfast">>At the begininning<<elseif _meal == "lunch">>At the midpoint<<else>>Near the end<</if>> of $subSlave.slaveName's scheduled day, you come across her curled up in her mother <span id="name"><<print "[[$activeSlave.slaveName|Long Slave Description][$nextLink = passage(), $eventDescription = 1]]">></span>'s lap, face buried in her bosom. $activeSlave.slaveName is running a gentle hand <<if $activeSlave.hLength > 5>>through $subSlave.slaveName's hair<<else>>across $subSlave.slaveName's scalp<</if>>, and is softly <<say>>ing something to her. As you approach, you catch the end of it.
+<<if _meal == "breakfast">>At the beginning<<elseif _meal == "lunch">>At the midpoint<<else>>Near the end<</if>> of $subSlave.slaveName's scheduled day, you come across her curled up in her mother <span id="name"><<print "[[$activeSlave.slaveName|Long Slave Description][$nextLink = passage(), $eventDescription = 1]]">></span>'s lap, face buried in her bosom. $activeSlave.slaveName is running a gentle hand <<if $activeSlave.hLength > 5>>through $subSlave.slaveName's hair<<else>>across $subSlave.slaveName's scalp<</if>>, and is softly <<say>>ing something to her. As you approach, you catch the end of it.
 <<if $activeSlave.genes == "XX" && $subSlave.tankBaby < 1>>
 	"I mi<<ss>>ed doing thi<<s>> for you <<s>>o much," she murmurs. "It'<<s>> <<s>>o ni<<c>>e to do it again."
 <<else>>
@@ -1087,7 +1028,7 @@ she adds impishly. Hearing this, $subSlave.slaveName lets the breast pop free of
 <br><<link "Look, a bare butt">>
 	<<replace "#name">>$activeSlave.slaveName<</replace>>
 	<<replace "#result">>
-	You move in, looking intently at $subSlave.slaveName's bare, vulnerable butt. $activeSlave.slaveName <<if canSee($activeSlave)>>catches sight of<<else>> your approach, and then follows the line of your gaze<<else>>notices your approach, the realization of what your intent likely quickly dawns on her<</if>>. You see the corners of her mouth quirk upward with horny maliciousness. She leans back against the edge of the kitchen counter, pulling $subSlave.slaveName with her, and then reaches down and
+	You move in, looking intently at $subSlave.slaveName's bare, vulnerable butt. $activeSlave.slaveName <<if canSee($activeSlave)>>catches sight of your approach, and then follows the line of your gaze<<else>>notices your approach<</if>>, the realization of what your intent likely quickly dawns on her. You see the corners of her mouth quirk upward with horny maliciousness. She leans back against the edge of the kitchen counter, pulling $subSlave.slaveName with her, and then reaches down and
 	<<if ($subSlave.butt > 6)>>
 		grabs handfuls of $subSlave.slaveName's massive ass,
 	<<elseif ($subSlave.butt > 3)>>
@@ -1434,7 +1375,7 @@ she adds impishly. Hearing this, $subSlave.slaveName lets the breast pop free of
 <<link "Just watch">>
 	<<replace "#name">>$activeSlave.slaveName<</replace>>
 	<<replace "#result">>
-	You settle down to watch what happens. $activeSlave.slaveName, who has a devoted slave's sixth sense about her <<WrittenMaster $activeSlave>>'s presence, realizes you're there and turns toward you. <<if canSee($activeSlave)>>You've already got a reassuring, silent hand raised, and you gesture that she should continue<<else>>Not hearing any comments, she takes it as a gesture to continue<</if>>. She smiles naughtily at you, @@.mediumaquamarine;pleased with your trust in her,@@ before going back to $subSlave.slaveName. She <<if canPenetrate($activeSlave)>>hauls $subSlave.slaveName's <<if $subSlave.belly >= 5000>>gravid <</if>>torso partyway up<<else>>bends over the poor girl<</if>> so she can speak directly into her ear, and <<say>>s quietly, "You're <<s>>tarting to enjoy thi<<s>>, aren't you, bitch?" $subSlave.slaveName, still unaware you're there, shakes her head unhappily, tears starting to leak out the corners of her eyes.
+	You settle down to watch what happens. $activeSlave.slaveName, who has a devoted slave's sixth sense about her <<WrittenMaster $activeSlave>>'s presence, realizes you're there and turns toward you. <<if canSee($activeSlave)>>You've already got a reassuring, silent hand raised, and you gesture that she should continue<<else>>Not hearing any comments, she takes it as a gesture to continue<</if>>. She smiles naughtily at you, @@.mediumaquamarine;pleased with your trust in her,@@ before going back to $subSlave.slaveName. She <<if canPenetrate($activeSlave)>>hauls $subSlave.slaveName's <<if $subSlave.belly >= 5000>>gravid <</if>>torso partway up<<else>>bends over the poor girl<</if>> so she can speak directly into her ear, and <<say>>s quietly, "You're <<s>>tarting to enjoy thi<<s>>, aren't you, bitch?" $subSlave.slaveName, still unaware you're there, shakes her head unhappily, tears starting to leak out the corners of her eyes.
 	<br><br>
 	<<Enunciate $subSlave>>
 	"N-no," she gasps. "I'm not! Plea<<s>>e t-take <<if canPenetrate($activeSlave)>>it<<else>>them<</if>> out!"
@@ -1663,12 +1604,12 @@ she adds impishly. Hearing this, $subSlave.slaveName lets the breast pop free of
 <<link "They're not done yet">>
 	<<replace "#name">>$activeSlave.slaveName<</replace>>
 	<<replace "#result">>
-	$RERelationshipSlave.slaveName is out of it, and doesn't realize you're there. The first indication she gets of your presence is the <<if $PC.dick == 1>>head of your penis<<else>>tip of your strap-on<</if>> <<if $RERelationshipSlave.anus > 2>>sliding easily inside her soft butthole<<elseif $RERelationshipSlave.anus > 1>>pushing firmly up her relaxed anus<<else>>penetrating her tight little asshole<</if>>. She groans, but greets you properly, slurring a little from sheer fatigue and overstimulation. Nevertheless, she reaches clumsily around to spread her cheeks for you. As you begin to fuck her butt, your invading <<if $PC.dick == 1>>cock<<else>>phallus<</if>> <<if canPenetrate($RERelationshipSlave)>>presses against her prostate, forcing her hard again<<else>>and thrusting hips get her moving again, too<</if>>. Beneath her, $activeSlave.slaveName shifts uncomfortably at the resumed sex and the extra weight. To relieve her, you haul her <<if $activeSlave.relationship > 4>>wife<<else>>lover<</if>> into a more upright position so she can fuck and be fucked while straddling $activeSlave.slaveName's pressed-together thighs. You fuck $RERelationshipSlave.slaveName just as hard as she was fucking $activeSlave.slaveName, taking your pleasure from her without mercy. Despite this, the sexed-out slave orgasms again.
-	<<if ($PC.dick == 1) && (canPenetrate($RERelationshipSlave))>>Deciding to really fill $activeSlave.slaveName, you shove $RERelationshipSlave.slaveName's quivering body off to one side without ceremony, shove yourself inside the $desc on the bottom, and add your cum to the two loads already inside her.<<else>>You climax yourself, and then stand.<</if>>
+	$subSlave.slaveName is out of it, and doesn't realize you're there. The first indication she gets of your presence is the <<if $PC.dick == 1>>head of your penis<<else>>tip of your strap-on<</if>> <<if $subSlave.anus > 2>>sliding easily inside her soft butthole<<elseif $subSlave.anus > 1>>pushing firmly up her relaxed anus<<else>>penetrating her tight little asshole<</if>>. She groans, but greets you properly, slurring a little from sheer fatigue and overstimulation. Nevertheless, she reaches clumsily around to spread her cheeks for you. As you begin to fuck her butt, your invading <<if $PC.dick == 1>>cock<<else>>phallus<</if>> <<if canPenetrate($subSlave)>>presses against her prostate, forcing her hard again<<else>>and thrusting hips get her moving again, too<</if>>. Beneath her, $activeSlave.slaveName shifts uncomfortably at the resumed sex and the extra weight. To relieve her, you haul her <<if $activeSlave.relationship > 4>>wife<<else>>lover<</if>> into a more upright position so she can fuck and be fucked while straddling $activeSlave.slaveName's pressed-together thighs. You fuck $subSlave.slaveName just as hard as she was fucking $activeSlave.slaveName, taking your pleasure from her without mercy. Despite this, the sexed-out slave orgasms again.
+	<<if ($PC.dick == 1) && (canPenetrate($subSlave))>>Deciding to really fill $activeSlave.slaveName, you shove $subSlave.slaveName's quivering body off to one side without ceremony, shove yourself inside the $desc on the bottom, and add your cum to the two loads already inside her.<<else>>You climax yourself, and then stand.<</if>>
 	Pleased, you head off to find more amusement, leaving the sex-stained slaves dozing in each other's arms, @@.hotpink;not thinking for a moment@@ about how profoundly sexual pleasure dominates their lives.
 	<<SimpleVCheck>>
 	<<set $activeSlave.devotion += 4>>
-	<<set _rets = $slaves.findIndex(function(s) { return s.ID == $RERelationshipSlave.ID; })>>
+	<<set _rets = $slaves.findIndex(function(s) { return s.ID == $subSlave.ID; })>>
 	<<if canPenetrate($slaves[_rets])>>
 		<<if canImpreg($activeSlave, $slaves[_rets])>>
 			<<KnockMeUp $activeSlave 5 1 $slaves[_rets].ID 1>>
@@ -1688,7 +1629,7 @@ she adds impishly. Hearing this, $subSlave.slaveName lets the breast pop free of
 <br><<link "Rinse off with them">>
 	<<replace "#name">>$activeSlave.slaveName<</replace>>
 	<<replace "#result">>
-	You announce that they definitely need to rinse off before bed. They both start with surprise and then greet you as best they can, though $RERelationshipSlave.slaveName groans a little at having to get up so soon after exhausting herself and then climaxing. Giggling, $activeSlave.slaveName heaves her to her feet, and between the two of you, you get her to the showers. She's really spent; her legs are wobbly, and she slithers down to crouch under the warm water as soon as she can. Uncoordinated, she fumbles for the soap and washes her sore body, only vaguely noticing the sex going on mere centimeters over her head. Since $activeSlave.slaveName was being such a good girl and looking after her <<if $activeSlave.relationship > 4>>wife's<<else>>lover's<</if>> needs, you take her in the way she likes it best,
+	You announce that they definitely need to rinse off before bed. They both start with surprise and then greet you as best they can, though $subSlave.slaveName groans a little at having to get up so soon after exhausting herself and then climaxing. Giggling, $activeSlave.slaveName heaves her to her feet, and between the two of you, you get her to the showers. She's really spent; her legs are wobbly, and she slithers down to crouch under the warm water as soon as she can. Uncoordinated, she fumbles for the soap and washes her sore body, only vaguely noticing the sex going on mere centimeters over her head. Since $activeSlave.slaveName was being such a good girl and looking after her <<if $activeSlave.relationship > 4>>wife's<<else>>lover's<</if>> needs, you take her in the way she likes it best,
 	<<switch $activeSlave.fetish>>
 	<<case "submissive">>
 		holding the submissive $desc up against the shower wall and giving her a second reaming.
@@ -1725,10 +1666,10 @@ she adds impishly. Hearing this, $subSlave.slaveName lets the breast pop free of
 		pushing the vanilla girl's back against the wall and kissing her lovingly.
 		<<SimpleVCheck>>
 	<</switch>>
-	As $activeSlave.slaveName orgasms in your arms, you feel $RERelationshipSlave.slaveName hug your thighs lightly before starting to <<if $PC.dick == 1>>blow you<<else>>lick your pussy<</if>> herself. Afterward, you bring the tired pair back to their bed and get them tucked in. They @@.mediumaquamarine;find the gesture comforting,@@ and are asleep in an instant.
+	As $activeSlave.slaveName orgasms in your arms, you feel $subSlave.slaveName hug your thighs lightly before starting to <<if $PC.dick == 1>>blow you<<else>>lick your pussy<</if>> herself. Afterward, you bring the tired pair back to their bed and get them tucked in. They @@.mediumaquamarine;find the gesture comforting,@@ and are asleep in an instant.
 	<<SimpleVCheck>>
 	<<set $activeSlave.trust += 4>>
-	<<set _rets = $slaves.findIndex(function(s) { return s.ID == $RERelationshipSlave.ID; })>>
+	<<set _rets = $slaves.findIndex(function(s) { return s.ID == $subSlave.ID; })>>
 	<<set $slaves[_rets].oralCount++, $slaves[_rets].penetrativeCount++, $slaves[_rets].trust += 4>>
 	<<set $oralTotal++, $penetrativeTotal++>>
 	<</replace>>
@@ -1914,7 +1855,7 @@ she adds impishly. Hearing this, $subSlave.slaveName lets the breast pop free of
 	<</if>>
 	When you cum, you thrust as far inside as you can manage and
 	<<if $PC.balls == 3>>
-		pump oversized load after oversized load down her throat, steadily swelling her stomch with your jizz.
+		pump oversized load after oversized load down her throat, steadily swelling her stomach with your jizz.
 	<<elseif $PC.balls == 2>>
 		pump your massive load into her until she gags.
 	<<elseif $PC.balls == 1>>
@@ -2163,7 +2104,7 @@ she adds impishly. Hearing this, $subSlave.slaveName lets the breast pop free of
 		<</if>>
 	<</if>>
 	<</replace>>
-<</link>> // This option WILL riscind the universal rule against interslave rape. //
+<</link>> // This option WILL rescind the universal rule against interslave rape. //
 
 <<case "incestuous nursing">>
 
@@ -2347,4 +2288,4 @@ she adds impishly. Hearing this, $subSlave.slaveName lets the breast pop free of
 
 </span>
 
-<</if>> /* CLOSES EVENT SELECTION */
+<</if>> /* CLOSES EVENT SELECTION */
\ No newline at end of file
diff --git a/src/uncategorized/SFMBarracks.tw b/src/uncategorized/SFMBarracks.tw
index 2eaaa3d8e240ba21552b54e40ef5990c3a43068b..1d7a41a0084326c2731b3fa5a5dd872da9c7134e 100644
--- a/src/uncategorized/SFMBarracks.tw
+++ b/src/uncategorized/SFMBarracks.tw
@@ -1,6 +1,5 @@
 :: SFM Barracks [nobr]
 
-<<HSM>>
 <<set _Name = "<<if $CurrentTradeShowAttendance == 1 && $LieutenantColonel == 2>>Lieutenant Colonel <<SlaveFullName $LieutenantColonel>> <<elseif $CurrentTradeShowAttendance == 1 && $LieutenantColonel != 2>> a soldier <<elseif $CurrentTradeShowAttendance == 0>>  The Colonel<</if>>">>
 
 <<if ndef $ColonelRelationship>>
@@ -100,7 +99,7 @@
 						The Colonel smiles widely. "Sure boss," she says, "I can put in a good word for you with some of my contacts out there. A lot of them know other big shots in the Cities." She picks up a tablet on the table, tapping a few commands on it. "I just put the word out, boss. Your @@.green;reputation should be a bit better@@ now."
 					<</if>>
 				<<else>>
-					The Colonel picks up a tablet. "Sure boss," she says, "I can talk you up a bit. This new gig has impressed a lot of people, they'll definitely listen when I speak." She taps a few commands on the tablet. "I just put the word out, boss. Your @@.green;reputation should be a bit better@@ now."
+					The Colonel picks up a tablet. "Sure boss," she says, "I can talk you up a bit. This new gig has impressed a lot of people; they'll definitely listen when I speak." She taps a few commands on the tablet. "I just put the word out, boss. Your @@.green;reputation should be a bit better@@ now."
 				<</if>>
 				<<set $securityForceGiftToken = 1>>
 				<<set $rep += $GoodWords1>>
diff --git a/src/uncategorized/arcade.tw b/src/uncategorized/arcade.tw
index 8afe05a4e0fb81a05bc3ac9f16f34b0a3b260b1c..2d754758b96658b52e2daf0922e130c691be44cf 100644
--- a/src/uncategorized/arcade.tw
+++ b/src/uncategorized/arcade.tw
@@ -77,7 +77,7 @@ $arcadeNameCaps
 	<</link>>
 <</if>>
 
-<br>It can support $arcade inmates. Currently $arcadeSlaves slaves are incarcerated.
+<br>It can support $arcade inmates. Currently $arcadeSlaves <<if $arcadeSlaves == 1>>slave is<<else>>slaves are<</if>> incarcerated.
 <<if ($arcade < $arcadeSlaves) && ($arcadeUpgradeFuckdolls == 1)>>
 	@@.yellow;$arcadeNameCaps is overcrowded;@@ the least popular inmate will be converted to a standard Fuckdoll this week.
 <</if>>
diff --git a/src/uncategorized/assistantAutosurgery.tw b/src/uncategorized/assistantAutosurgery.tw
deleted file mode 100644
index ea79e63c1c492f79294b412ab982c3228d3feacb..0000000000000000000000000000000000000000
--- a/src/uncategorized/assistantAutosurgery.tw
+++ /dev/null
@@ -1,262 +0,0 @@
-:: Assistant Autosurgery
-
-<<nobr>>
-
-<<set $surgeries = []>>
-
-<<if $HGTastes == 1>>
-	<<set $thisSurgery = {lactation: 0, cosmetic: 1, faceShape: "cute", lips: 10, hips: 0, hipsImplant: 0, butt: 0, accent: 0, shoulders: 0, shouldersImplant: 0, boobs: 0, holes: 0}>>
-<<elseif $HGTastes == 2>>
-	<<set $thisSurgery = {lactation: 0, cosmetic: 1, faceShape: "cute", lips: 60, hips: 0, hipsImplant: 0, butt: 4, accent: 0, shoulders: 0, shouldersImplant: 0, boobs: 1200, holes: 0}>>
-<<elseif $HGTastes == 4>>
-	<<set $thisSurgery = {lactation: 1, cosmetic: 1, faceShape: "cute", lips: 10, hips: 3, hipsImplant: 0, butt: 0, accent: 0, shoulders: 0, shouldersImplant: 0, boobs: 0, holes: 0}>>
-<<else>>
-	<<set $thisSurgery = {lactation: 0, cosmetic: 1, faceShape: "cute", lips: 95, hips: 0, hipsImplant: 0, butt: 8, accent: 0, shoulders: 0, shouldersImplant: 0, boobs: 10000, holes: 2}>>
-<</if>>
-
-<<set $seed = 0>>
-<<for $seed == 0>>
-
-<<if ($slaves[$i].health <= 40)>>
-	<<set $seed = 1>>
-<<else>>
-<<if ($slaves[$i].lactation != 2) && ($thisSurgery.lactation == 1)>>
-	<<set $surgeries.push("lactation inducing implanted drugs")>>
-	<<set $slaves[$i].lactation = 2>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-	<<if $PC.medicine < 100 && random($PC.medicine,100) > 50>><<set $PC.medicine += .5, set $slaves[$i].health -= 7>><<else>><<set $PC.medicine += .1, set $slaves[$i].health -= 9>><</if>>
-<<elseif ($slaves[$i].anus > 3) && ($thisSurgery.cosmetic > 0)>>
-	<<set $surgeries.push("a restored anus")>>
-	<<set $slaves[$i].anus = 3>>
-	<<if $slaves[$i].analSkill > 10>>
-		<<set $slaves[$i].analSkill -= 10>>
-	<</if>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-	<<if $PC.medicine < 100 && random($PC.medicine,100) > 50>><<set $PC.medicine += .5, set $slaves[$i].health -= 7>><<else>><<set $PC.medicine += .1, set $slaves[$i].health -= 9>><</if>>
-<<elseif ($slaves[$i].vagina > 3) && ($thisSurgery.cosmetic > 0)>>
-	<<set $surgeries.push("a restored pussy")>>
-	<<set $slaves[$i].vagina = 3>>
-	<<if $slaves[$i].vaginalSkill > 10>>
-		<<set $slaves[$i].vaginalSkill -= 10>>
-	<</if>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-	<<if $PC.medicine < 100 && random($PC.medicine,100) > 50>><<set $PC.medicine += .5, set $slaves[$i].health -= 7>><<else>><<set $PC.medicine += .1, set $slaves[$i].health -= 9>><</if>>
-<<elseif ($slaves[$i].faceImplant == 0) && ($slaves[$i].face <= 95) && ($thisSurgery.cosmetic != 0)>>
-	<<set $surgeries.push("a nicer face")>>
-	<<if $slaves[$i].faceShape is "masculine">><<set $slaves[$i].faceShape = "androgynous">><</if>>
-	<<set $slaves[$i].faceImplant = 1>>
-	<<set $slaves[$i].face = Math.clamp($slaves[$i].face+20,-100,100)>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-	<<if $PC.medicine < 100 && random($PC.medicine,100) > 50>><<set $PC.medicine += .5, set $slaves[$i].health -= 7>><<else>><<set $PC.medicine += .1, set $slaves[$i].health -= 9>><</if>>
-<<elseif ($slaves[$i].ageImplant != 1) && ($slaves[$i].physicalAge >= 25) && ($thisSurgery.cosmetic != 0)>>
-	<<set $surgeries.push("an age lift")>>
-	<<set $slaves[$i].ageImplant = 1>>
-	<<if $slaves[$i].visualAge > 80>>
-		<<set $slaves[$i].visualAge -= 40>>
-	<<elseif $slaves[$i].visualAge >= 70>>
-		<<set $slaves[$i].visualAge -= 30>>
-	<<elseif $slaves[$i].visualAge > 50>>
-		<<set $slaves[$i].visualAge -= 20>>
-	<<elseif $slaves[$i].visualAge > 36>>
-		<<set $slaves[$i].visualAge -= 10>>
-	<<else>>
-		<<set $slaves[$i].visualAge -= 5>>
-	<</if>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-	<<if $PC.medicine < 100 && random($PC.medicine,100) > 50>><<set $PC.medicine += .5, set $slaves[$i].health -= 7>><<else>><<set $PC.medicine += .1, set $slaves[$i].health -= 9>><</if>>
-<<elseif ($slaves[$i].weight >= 10) && ($thisSurgery.cosmetic != 0)>>
-	<<set $surgeries.push("liposuction")>>
-	<<set $slaves[$i].weight -= 50>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-	<<if $PC.medicine < 100 && random($PC.medicine,100) > 50>><<set $PC.medicine += .5, set $slaves[$i].health -= 7>><<else>><<set $PC.medicine += .1, set $slaves[$i].health -= 9>><</if>>
-<<elseif ($slaves[$i].waist >= -10) && ($thisSurgery.cosmetic != 0)>>
-	<<set $surgeries.push("a narrower waist")>>
-	<<set $slaves[$i].waist -= 20>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-	<<if $PC.medicine < 100 && random($PC.medicine,100) > 50>><<set $PC.medicine += .5, set $slaves[$i].health -= 7>><<else>><<set $PC.medicine += .1, set $slaves[$i].health -= 9>><</if>>
-<<elseif ($slaves[$i].voice == 1) && ($slaves[$i].voiceImplant == 0) && ($thisSurgery.cosmetic != 0)>>
-	<<set $surgeries.push("a feminine voice")>>
-	<<set $slaves[$i].voice += 1>>
-	<<set $slaves[$i].voiceImplant += 1>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-	<<if $PC.medicine < 100 && random($PC.medicine,100) > 50>><<set $PC.medicine += .5, set $slaves[$i].health -= 7>><<else>><<set $PC.medicine += .1, set $slaves[$i].health -= 9>><</if>>
-<<elseif ($slaves[$i].lips < $thisSurgery.lips)>>
-	<<set $surgeries.push("bigger lips")>>
-	<<set $slaves[$i].lipsImplant += 10>>
-	<<set $slaves[$i].lips += 10>>
-	<<if $slaves[$i].oralSkill > 10>>
-		<<set $slaves[$i].oralSkill -= 10>>
-	<</if>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-	<<if $PC.medicine < 100 && random($PC.medicine,100) > 50>><<set $PC.medicine += .5, set $slaves[$i].health -= 7>><<else>><<set $PC.medicine += .1, set $slaves[$i].health -= 9>><</if>>
-<<elseif ($slaves[$i].faceImplant == 1) && ($slaves[$i].face <= 95) && ($thisSurgery.cosmetic is 2)>>
-	<<set $surgeries.push("a nicer face")>>
-	<<if $slaves[$i].faceShape is "masculine">><<set $slaves[$i].faceShape to "androgynous">><</if>>
-	<<set $slaves[$i].faceImplant to 2>>
-	<<set $slaves[$i].face = Math.clamp($slaves[$i].face+20,-100,100)>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-	<<if $PC.medicine < 100 && random($PC.medicine,100) > 50>><<set $PC.medicine += .5, set $slaves[$i].health -= 7>><<else>><<set $PC.medicine += .1, set $slaves[$i].health -= 9>><</if>>
-<<elseif ($slaves[$i].faceImplant > 0) && ($slaves[$i].face <= 95) && ($surgeryUpgrade == 1) && ($thisSurgery.cosmetic is 2)>>
-	<<set $surgeries.push("a nicer face")>>
-	<<if $slaves[$i].faceShape is "masculine">><<set $slaves[$i].faceShape to "androgynous">><</if>>
-	<<set $slaves[$i].faceImplant to 2>>
-	<<set $slaves[$i].face = Math.clamp($slaves[$i].face+20,-100,100)>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-	<<if $PC.medicine < 100 && random($PC.medicine,100) > 50>><<set $PC.medicine += .5, set $slaves[$i].health -= 7>><<else>><<set $PC.medicine += .1, set $slaves[$i].health -= 9>><</if>>
-<<elseif ($slaves[$i].hips < 1) && ($slaves[$i].hips < $thisSurgery.hips) && ($surgeryUpgrade == 1)>>
-	<<set $surgeries.push("wider hips")>>
-	<<set $slaves[$i].hips++, $slaves[$i].hipsImplant++>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-	<<if $PC.medicine < 100 && random($PC.medicine,100) > 50>><<set $PC.medicine += .5, set $slaves[$i].health -= 7>><<else>><<set $PC.medicine += .1, set $slaves[$i].health -= 9>><</if>>
-<<elseif ($slaves[$i].waist >= -95) && ($thisSurgery.cosmetic is 2) && ($seeExtreme == 1)>>
-	<<set $surgeries.push("a narrower waist")>>
-	<<set $slaves[$i].waist = Math.clamp($slaves[$i].waist-20,-100,100)>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-	<<if $PC.medicine < 100 && random($PC.medicine,100) > 50>><<set $PC.medicine += .5, set $slaves[$i].health -= 7>><<else>><<set $PC.medicine += .1, set $slaves[$i].health -= 9>><</if>>
-<<elseif ($slaves[$i].voice < 3) && ($slaves[$i].voiceImplant == 0) && ($thisSurgery.cosmetic == 2)>>
-	<<set $surgeries.push("a bimbo's voice")>>
-	<<set $slaves[$i].voice += 1>>
-	<<set $slaves[$i].voiceImplant += 1>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-	<<if $PC.medicine < 100 && random($PC.medicine,100) > 50>><<set $PC.medicine += .5, set $slaves[$i].health -= 7>><<else>><<set $PC.medicine += .1, set $slaves[$i].health -= 9>><</if>>
-<<elseif ($slaves[$i].butt <= 3) && ($slaves[$i].butt < $thisSurgery.butt)>>
-	<<set $surgeries.push("a bigger butt")>>
-	<<set $slaves[$i].buttImplant = 1>>
-	<<set $slaves[$i].butt += 1>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-	<<if $PC.medicine < 100 && random($PC.medicine,100) > 50>><<set $PC.medicine += .5, set $slaves[$i].health -= 7>><<else>><<set $PC.medicine += .1, set $slaves[$i].health -= 9>><</if>>
-<<elseif ($slaves[$i].boobs <= 600) && ($slaves[$i].lactation < 2) && ($slaves[$i].boobs+400 <= $thisSurgery.boobs)>>
-	<<set $surgeries.push("bigger boobs")>>
-	<<set $slaves[$i].boobsImplant += 400>>
-	<<set $slaves[$i].boobs += 400>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-	<<if $PC.medicine < 100 && random($PC.medicine,100) > 50>><<set $PC.medicine += .5, set $slaves[$i].health -= 7>><<else>><<set $PC.medicine += .1, set $slaves[$i].health -= 9>><</if>>
-<<elseif ($slaves[$i].boobs <= 600) && ($slaves[$i].lactation < 2) && ($slaves[$i].boobs+200 <= $thisSurgery.boobs)>>
-	<<set $surgeries.push("modestly bigger boobs")>>
-	<<set $slaves[$i].boobsImplant += 200>>
-	<<set $slaves[$i].boobs += 200>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-	<<if $PC.medicine < 100 && random($PC.medicine,100) > 50>><<set $PC.medicine += .5, set $slaves[$i].health -= 7>><<else>><<set $PC.medicine += .1, set $slaves[$i].health -= 9>><</if>>
-<<elseif ($slaves[$i].butt <= 5) && ($slaves[$i].butt < $thisSurgery.butt)>>
-	<<set $surgeries.push("a bigger butt")>>
-	<<set $slaves[$i].buttImplant = 1>>
-	<<set $slaves[$i].butt += 1>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-	<<if $PC.medicine < 100 && random($PC.medicine,100) > 50>><<set $PC.medicine += .5, set $slaves[$i].health -= 7>><<else>><<set $PC.medicine += .1, set $slaves[$i].health -= 9>><</if>>
-<<elseif ($slaves[$i].boobs <= 2000) && ($slaves[$i].lactation < 2) && ($slaves[$i].boobs+400 < $thisSurgery.boobs)>>
-	<<set $surgeries.push("bigger boobs")>>
-	<<set $slaves[$i].boobsImplant += 400>>
-	<<set $slaves[$i].boobs += 400>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-	<<if $PC.medicine < 100 && random($PC.medicine,100) > 50>><<set $PC.medicine += .5, set $slaves[$i].health -= 7>><<else>><<set $PC.medicine += .1, set $slaves[$i].health -= 9>><</if>>
-<<elseif ($slaves[$i].anus > 0) && ($surgeryUpgrade == 1) && ($thisSurgery.holes == 2)>>
-	<<set $surgeries.push("a virgin anus")>>
-	<<set $slaves[$i].anus = 0>>
-	<<if $slaves[$i].analSkill > 10>>
-		<<set $slaves[$i].analSkill -= 10>>
-	<</if>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-	<<if $PC.medicine < 100 && random($PC.medicine,100) > 50>><<set $PC.medicine += .5, set $slaves[$i].health -= 7>><<else>><<set $PC.medicine += .1, set $slaves[$i].health -= 9>><</if>>
-<<elseif ($slaves[$i].vagina > 0) && ($surgeryUpgrade == 1) && ($thisSurgery.holes == 2)>>
-	<<set $surgeries.push("a virgin pussy")>>
-	<<set $slaves[$i].vagina = 0>>
-	<<if $slaves[$i].vaginalSkill > 10>>
-		<<set $slaves[$i].vaginalSkill -= 10>>
-	<</if>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-	<<if $PC.medicine < 100 && random($PC.medicine,100) > 50>><<set $PC.medicine += .5, set $slaves[$i].health -= 7>><<else>><<set $PC.medicine += .1, set $slaves[$i].health -= 9>><</if>>
-<<elseif ($slaves[$i].hips < 2) && ($slaves[$i].hips < $thisSurgery.hips) && ($surgeryUpgrade == 1)>>
-	<<set $surgeries.push("wider hips")>>
-	<<set $slaves[$i].hips++, $slaves[$i].hipsImplant++>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-	<<if $PC.medicine < 100 && random($PC.medicine,100) > 50>><<set $PC.medicine += .5, set $slaves[$i].health -= 7>><<else>><<set $PC.medicine += .1, set $slaves[$i].health -= 9>><</if>>
-<<elseif ($slaves[$i].anus > 1) && ($thisSurgery.holes == 1)>>
-	<<set $surgeries.push("a tighter anus")>>
-	<<set $slaves[$i].anus = 1>>
-	<<if $slaves[$i].analSkill > 10>>
-		<<set $slaves[$i].analSkill -= 10>>
-	<</if>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-	<<if $PC.medicine < 100 && random($PC.medicine,100) > 50>><<set $PC.medicine += .5, set $slaves[$i].health -= 7>><<else>><<set $PC.medicine += .1, set $slaves[$i].health -= 9>><</if>>
-<<elseif ($slaves[$i].vagina > 1) && ($thisSurgery.holes == 1)>>
-	<<set $surgeries.push("a tighter pussy")>>
-	<<set $slaves[$i].vagina = 1>>
-	<<if $slaves[$i].vaginalSkill > 10>>
-		<<set $slaves[$i].vaginalSkill -= 10>>
-	<</if>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-	<<if $PC.medicine < 100 && random($PC.medicine,100) > 50>><<set $PC.medicine += .5, set $slaves[$i].health -= 7>><<else>><<set $PC.medicine += .1, set $slaves[$i].health -= 9>><</if>>
-<<elseif ($slaves[$i].butt <= 8) && ($slaves[$i].butt < $thisSurgery.butt)>>
-	<<set $surgeries.push("a bigger butt")>>
-	<<set $slaves[$i].buttImplant = 1>>
-	<<set $slaves[$i].butt += 1>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-	<<if $PC.medicine < 100 && random($PC.medicine,100) > 50>><<set $PC.medicine += .5, set $slaves[$i].health -= 7>><<else>><<set $PC.medicine += .1, set $slaves[$i].health -= 9>><</if>>
-<<elseif ($slaves[$i].boobs <= 9000) && ($slaves[$i].lactation < 2) && ($slaves[$i].boobs < $thisSurgery.boobs)>>
-	<<set $surgeries.push("bigger boobs")>>
-	<<set $slaves[$i].boobsImplant += 200>>
-	<<set $slaves[$i].boobs += 200>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-	<<if $PC.medicine < 100 && random($PC.medicine,100) > 50>><<set $PC.medicine += .5, set $slaves[$i].health -= 7>><<else>><<set $PC.medicine += .1, set $slaves[$i].health -= 9>><</if>>
-<<elseif ($slaves[$i].hips < 3) && ($slaves[$i].hips < $thisSurgery.hips) && ($surgeryUpgrade == 1)>>
-	<<set $surgeries.push("wider hips")>>
-	<<set $slaves[$i].hips++, $slaves[$i].hipsImplant++>>
-	<<set $cash -= $surgeryCost>>
-	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-	<<if $PC.medicine < 100 && random($PC.medicine,100) > 50>><<set $PC.medicine += .5, set $slaves[$i].health -= 7>><<else>><<set $PC.medicine += .1, set $slaves[$i].health -= 9>><</if>>
-<<else>>
-	<<set $seed = 1>>
-<</if>>
-<</if>>
-
-<</for>>
-
-<<if $surgeries.length > 0>>
-
-<<set $surgeriesDisplay = "">>
-
-<<for $j = 0; $j < $surgeries.length; $j++>>
-	<<set $seed = $surgeries[$j]>>
-	<<set $surgeriesDisplay = ($surgeriesDisplay + $seed)>>
-	<<if $j < $surgeries.length-2>>
-	<<set $surgeriesDisplay = ($surgeriesDisplay + ", ")>>
-	<<elseif $j < $surgeries.length-1>>
-	<<if $surgeries.length > 2>>
-		<<set $surgeriesDisplay = ($surgeriesDisplay + ", and ")>>
-	<<else>>
-		<<set $surgeriesDisplay = ($surgeriesDisplay + " and ")>>
-	<</if>>
-	<</if>>
-<</for>>
-
-<<if $assistantName == "your personal assistant">>Your personal assistant<<else>>$assistantName<</if>>, ordered to apply surgery at will, gives $slaves[$i].slaveName @@.lime;$surgeriesDisplay.@@
-
-<</if>>
-
-<</nobr>>
diff --git a/src/uncategorized/autosurgerySettings.tw b/src/uncategorized/autosurgerySettings.tw
index 937ebbaf1ffcd360e8b49881e500a009611ac028..d3cbdf8375f5536fdda2e7d16aedfbdcc2ef11d7 100644
--- a/src/uncategorized/autosurgerySettings.tw
+++ b/src/uncategorized/autosurgerySettings.tw
@@ -135,12 +135,22 @@ Cosmetic surgery:
 	''invasive.''
 <<elseif ($currentRule.surgery.cosmetic == 1)>>
 	''subtle.''
-<<else>>
+<<elseif $currentRule.surgery.cosmetic == 0>>
 	''none.''
+<<else>>
+	''off.''
 <</if>>
 
 <br>
 
+<<if ($currentRule.surgery.cosmetic !== "nds")>>
+	<<link "No default setting">>
+		<<set $currentRule.surgery.cosmetic = "nds">>
+		<<RASurgeryChangeCosmetic>>
+	<</link>> |
+<<else>>
+	Off |
+<</if>>
 <<if ($currentRule.surgery.cosmetic !== 0)>>
 	<<link "None">>
 		<<set $currentRule.surgery.cosmetic = 0>>
@@ -406,18 +416,18 @@ Orifice tightening:
 <<elseif ($currentRule.surgery.holes == 1)>>
 	''hole tightening'' will be applied.
 <<else>>
-	''none.''
+	''No default setting.''
 <</if>>
 
 <br>
 
-<<if ($currentRule.surgery.holes != 0)>>
-	<<link "Off">>
-	<<set $currentRule.surgery.holes = 0>>
+<<if ($currentRule.surgery.holes != "nds")>>
+	<<link "No default setting">>
+	<<set $currentRule.surgery.holes = "nds">>
 	<<RASurgeryChangeHoles>>
 	<</link>> |
 <<else>>
-	Off |
+	No default setting |
 <</if>>
 <<if ($currentRule.surgery.holes != 1)>>
 	<<link "Tightening">>
@@ -448,9 +458,9 @@ Orifice tightening:
 <</if>>
 
 <br>
-<<if ($currentRule.surgery.bodyhair != 0)>>
+<<if ($currentRule.surgery.bodyhair != "nds")>>
 	<<link "No default setting">>
-	<<set $currentRule.surgery.bodyhair = 0>>
+	<<set $currentRule.surgery.bodyhair = "nds">>
 	<<RASurgeryBodyHair>>
 	<</link>> |
 <<else>>
@@ -487,9 +497,9 @@ Orifice tightening:
 <</if>>
 
 <br>
-<<if ($currentRule.surgery.hair != 0)>>
+<<if ($currentRule.surgery.hair != "nds")>>
 	<<link "No default setting">>
-	<<set $currentRule.surgery.hair = 0>>
+	<<set $currentRule.surgery.hair = "nds">>
 	<<RASurgeryHair>>
 	<</link>> |
 <<else>>
diff --git a/src/uncategorized/brothel.tw b/src/uncategorized/brothel.tw
index 05bb0de0aec236234c7edf283ad9a7e06e22fe28..2c102f263c45cd1bf948904700ee45562320c9c6 100644
--- a/src/uncategorized/brothel.tw
+++ b/src/uncategorized/brothel.tw
@@ -146,7 +146,7 @@ $brothelNameCaps
 <</if>>
 
 <<set _Tmult0 = Math.trunc($brothel*1000*$upgradeMultiplierArcology)>>
-<br>It can support $brothel whores. Currently $brothelSlaves whore at $brothelNameCaps.
+<br>It can support $brothel whores. Currently there <<if $brothelSlaves == 1>>is<<else>>are<</if>> $brothelSlaves whore<<if $brothelSlaves != 1>>s<</if>> at $brothelNameCaps.
 [[Expand the brothel|Brothel][$cash -= _Tmult0, $brothel += 5, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>> and will increase upkeep costs//
 
 <br>
diff --git a/src/uncategorized/cellblock.tw b/src/uncategorized/cellblock.tw
index e3ce235f0e82d6ca4cac92056fe5bbcfbaa201c3..d503699fe689946b51d58a13685342b16390049b 100644
--- a/src/uncategorized/cellblock.tw
+++ b/src/uncategorized/cellblock.tw
@@ -71,7 +71,7 @@ $cellblockNameCaps
 <</if>>
 
 <<set _Tmult0 = Math.trunc($cellblock*1000*$upgradeMultiplierArcology)>>
-<br>$cellblockNameCaps has room for $cellblock slaves to be kept in close confinement. Currently $cellblockSlaves are kept in close confinement.
+<br>$cellblockNameCaps has room for $cellblock slaves to be kept in close confinement. Currently $cellblockSlaves <<if $cellblockSlaves == 1>>is<<else>>are<</if>> kept in close confinement.
 [[Expand the cellblock|Cellblock][$cash -= _Tmult0, $cellblock += 5, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>>//
 
 <br>
diff --git a/src/uncategorized/clinic.tw b/src/uncategorized/clinic.tw
index 16ca2bd77ea6daee1b05f2c80c433a57e49139b6..85239cb32997a323d0e3f925c05589e7be85c86a 100644
--- a/src/uncategorized/clinic.tw
+++ b/src/uncategorized/clinic.tw
@@ -71,12 +71,12 @@ $clinicNameCaps
 <</if>>
 
 <<set _Tmult0 = Math.trunc($clinic*1000*$upgradeMultiplierArcology)>>
-<br>$clinicNameCaps has room to support $clinic slaves while they receive treatment. Currently $clinicSlaves slaves are reciving treatement.
+<br>$clinicNameCaps has room to support $clinic slaves while they receive treatment. Currently $clinicSlaves slave<<if $clinicSlaves == 1>> is<<else>>s are<</if>> receiving treatment.
 [[Expand the clinic|Clinic][$cash -= _Tmult0, $clinic += 5, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>>//
 
 <br>
 <<if $clinicUpgradeScanner == 1>>
-	$clinicNameCaps's scanners have been upgraded with a sampling system that can estimate carcinogenic damage to a slave's genome.
+	$clinicNameCaps's scanners have been upgraded with a sampling system that can estimate carcinogenic damage to a slave's body.
 <<else>>
 	<<set _Tmult1 = Math.trunc(10000*$upgradeMultiplierArcology)>>
 	It mounts powerful medical scanning technology. [[Upgrade the scanners to help detect genomic damage|Clinic][$cash -= _Tmult1, $clinicUpgradeScanner = 1]] //Costs <<print cashFormat(_Tmult1)>>//
diff --git a/src/uncategorized/club.tw b/src/uncategorized/club.tw
index d305cafff56ae09b8753ffe6a436f589973402bc..a4a99dfb834b64bb93cc6096e213ff81b886a3b8 100644
--- a/src/uncategorized/club.tw
+++ b/src/uncategorized/club.tw
@@ -201,7 +201,7 @@ $clubNameCaps
 <</if>>
 
 <<set _Tmult0 = Math.trunc($club*1000*$upgradeMultiplierArcology)>>
-<br>There are rooms off $clubName to support slaves as they work as club sluts. They can support $club slaves. Currently $clubSlaves are serving in $clubName.
+<br>There are rooms off $clubName to support slaves as they work as club sluts. They can support $club slaves. Currently $clubSlaves <<if $clubSlaves == 1>>is<<else>>are<</if>> serving in $clubName.
 [[Expand the club|Club][$cash -= _Tmult0, $club += 5, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>> and will increase upkeep costs//
 
 <br>
diff --git a/src/uncategorized/costs.tw b/src/uncategorized/costs.tw
index 562bdad57f3c425cefc60114933fd692d2d7c920..1eba11db155dee518b743db2eb7051608a58621d 100644
--- a/src/uncategorized/costs.tw
+++ b/src/uncategorized/costs.tw
@@ -196,7 +196,7 @@
 <</if>>
 
 <<switch $slaves[$i].diet>>
-<<case "XX" "XY">>
+<<case "XX" "XY" "fertility">>
 	<<set $costs += 25>>
 <<case "cleansing">>
 	<<set $costs += 50>>
diff --git a/src/uncategorized/costsReport.tw b/src/uncategorized/costsReport.tw
index f584ec77c247b047636fa7bf1b3e9549e45a3151..06206c2781dcd73ab3cb2ac67a074808454f5403 100644
--- a/src/uncategorized/costsReport.tw
+++ b/src/uncategorized/costsReport.tw
@@ -362,6 +362,9 @@ trainer fees: <<print cashFormat(_cost)>>
 	<<case "cleansing">>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;Chemical cleansing diet: <<print cashFormat(50)>>
 		<<set $individualCosts += 50>>
+	<<case "fertility">>
+		<br>&nbsp;&nbsp;&nbsp;&nbsp;Specialized fertility diet: <<print cashFormat(25)>>
+		<<set $individualCosts += 50>>
 	<</switch>>
 	<<if $boobAccessibility != 1>>
 	<<if ($slaves[$i].boobs > 20000)>>
diff --git a/src/uncategorized/dairy.tw b/src/uncategorized/dairy.tw
index 64ae1aaa0d20eb2326777f6e6ae3eb62d9740993..e87656ad13f8974545168634bb84390253cc9330 100644
--- a/src/uncategorized/dairy.tw
+++ b/src/uncategorized/dairy.tw
@@ -307,7 +307,7 @@ $dairyNameCaps
 <</if>>
 
 <<set _Tmult0 = Math.trunc($dairy*1000*$upgradeMultiplierArcology)>>
-<br>$dairyNameCaps can support $dairy milkers. There are currently $dairySlaves cows. [[Expand the dairy|Dairy][$cash -= _Tmult0, $dairy += 5, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>> and will increase upkeep costs//
+<br>$dairyNameCaps can support $dairy milkers. There <<if $dairySlaves == 1>>is<<else>>are<</if>> currently $dairySlaves cow<<if $dairySlaves != 1>>s<</if>>. [[Expand the dairy|Dairy][$cash -= _Tmult0, $dairy += 5, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>> and will increase upkeep costs//
 
 <<set _Tmult1 = Math.trunc(10000*$upgradeMultiplierArcology)>>
 <br>
diff --git a/src/uncategorized/dairyReport.tw b/src/uncategorized/dairyReport.tw
index 07d43cf37b6c17e17457976ba564faaa66f10493..1ca0743f12796a647d31e73e2de450622cbb9d0d 100644
--- a/src/uncategorized/dairyReport.tw
+++ b/src/uncategorized/dairyReport.tw
@@ -62,7 +62,7 @@
 			<<set $i = $slaveIndices[$DairyiIDs[_dI]]>>
 			<<if (canImpreg($slaves[$i], $Milkmaid))>>
 				<<set $slaves[$i].preg = 1, $slaves[$i].pregSource = $Milkmaid.ID, $slaves[$i].pregKnown = 1, $slaves[$i].pregWeek = 1, _milkmaidImpregnated++, $slaves[$i].vaginalCount += 10, $vaginalTotal += 10>>
-				<<SetPregType $slaves[$i]>>
+				<<set $slaves[$i].pregType = setPregType($slaves[$i])>>
 				<<set WombImpregnate($slaves[$i], $slaves[$i].pregType, $Milkmaid.ID, 1)>>
 			<</if>>
 		<</for>>
diff --git a/src/uncategorized/dispensary.tw b/src/uncategorized/dispensary.tw
index 34e1bb19f17ae3369cf983ace5813b0ad2be81ab..8f35a7788768a7ee93955550d64a7b9e7652e272 100644
--- a/src/uncategorized/dispensary.tw
+++ b/src/uncategorized/dispensary.tw
@@ -1,7 +1,7 @@
 :: Dispensary [nobr]
 
-<<HSM>>
-<<set $nextButton = "Back", $nextLink = "Manage Penthouse", $showEncyclopedia = 1, $encyclopedia = "The Pharmaceutical Fab.",_PCSkillCheck = Math.max($upgradeMultiplierMedicine, $HackingSkillMultiplier)>>
+<<set $HackingSkillMultiplier = HSM()>>
+<<set $nextButton = "Back", $nextLink = "Manage Penthouse", $showEncyclopedia = 1, $encyclopedia = "The Pharmaceutical Fab.", _PCSkillCheck = Math.max($upgradeMultiplierMedicine, $HackingSkillMultiplier)>>
 
 <br>
 The Dispensary
@@ -232,8 +232,8 @@ The hormone replacement therapies
 		//You lack the reputation to fund forced puberty drugs//
 		<br>
 	<<elseif ($pubertyHormones == 0) && ($rep > 4500*_PCSkillCheck)>>
-		[[Fund research into powerful hormonal injections to jumpstart puberty|Dispensary][$cash -= 30000*$upgradeMultiplierMedicine, $pubertyHormones = 1]]
-		//Costs <<print cashFormat(30000*$upgradeMultiplierMedicine)>>//
+		[[Fund research into powerful hormonal injections to jumpstart puberty|Dispensary][$cash -= 30000*_PCSkillCheck, $pubertyHormones = 1]]
+		//Costs <<print cashFormat(30000*_PCSkillCheck)>>//
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;//Will allow the production of powerful hormonal drugs designed to force a slave through puberty without regard for side effects. //
 		<br>
 	<<elseif ($pubertyHormones == 1)>>
@@ -250,8 +250,8 @@ Dietary Upgrades
 		//You lack the reputation to fund research into hermaphrodite hormones//
 		<br>
 	<<elseif ($dietXXY == 0) && ($rep > 3500*_PCSkillCheck)>>
-		[[Fund research into developing hermaphrodite hormone therapies|Dispensary][$cash -= 10000*$upgradeMultiplierMedicine, $dietXXY = 1]]
-		//Costs <<print cashFormat(10000*$upgradeMultiplierMedicine)>>//
+		[[Fund research into developing hermaphrodite hormone therapies|Dispensary][$cash -= 10000*_PCSkillCheck, $dietXXY = 1]]
+		//Costs <<print cashFormat(10000*_PCSkillCheck)>>//
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;//Will allow for specially balanced meals to be served in the cafeteria designed to promote both halves of a herm's sexuality. //
 		<br>
 	<<elseif ($dietXXY == 1)>>
@@ -263,6 +263,26 @@ Dietary Upgrades
 	<br>
 <</if>>
 
+<<if $seePreg == 1>>
+<<if $feeder == 1>>
+	<<if ($reproductionFormula == 0) && ($rep <= 10000*_PCSkillCheck)>>
+		//You lack the reputation to access breeders' dietary blends//
+		<br>
+	<<elseif ($reproductionFormula == 0) && ($rep > 10000*_PCSkillCheck)>>
+		[[Purchase reputable breeders' dietary blends|Dispensary][$cash -= 25000*_PCSkillCheck, $reproductionFormula = 1]]
+		//Costs <<print cashFormat(25000*_PCSkillCheck)>>//
+		<br>&nbsp;&nbsp;&nbsp;&nbsp;//Will allow for specially refined meals to be served in the cafeteria designed to promote energetic sperm and robust pregnancies. Side effects may include an increased number of twins being conceived.//
+		<br>
+	<<elseif ($reproductionFormula == 1)>>
+		The fabricator is producing meals to be served in the cafeteria that promote energetic sperm and robust pregnancies.
+		<br>
+	<</if>>
+<<else>>
+	The feeders are incapable of modifying slave diets well enough to manage to enhance reproductive ability.
+	<br>
+<</if>>
+<</if>>
+
 <<if $cumProDiet == 0>>
 	[[Purchase recipes to encourage cum production|Dispensary][$cash -= 5000*_PCSkillCheck, $cumProDiet = 1]]
 	//Costs <<print cashFormat(5000*_PCSkillCheck)>>//
@@ -273,8 +293,20 @@ Dietary Upgrades
 	<br>
 <</if>>
 
+<<if $seePreg == 1>>
+	<<if $dietFertility != 1>>
+		[[Purchase recipes to encourage ovulation|Dispensary][$cash -= 5000*_PCSkillCheck, $dietFertility = 1]]
+		//Costs <<print cashFormat(3000*_PCSkillCheck)>>//
+		<br>&nbsp;&nbsp;&nbsp;&nbsp;//Will allow for specially designed meals to be served in the cafeteria to promote slave fertility.//
+		<br>
+	<<elseif $dietFertility == 1>>
+		The fabricator is producing meals to be served in the cafeteria designed to promote slave fertility.
+		<br>
+	<</if>>
+<</if>>
+
 <<if $dietCleanse == 0>>
-	[[Purchase cleansing recipes to lessen genome damage|Dispensary][$cash -= 10000*_PCSkillCheck, $dietCleanse = 1]]
+	[[Purchase cleansing recipes to lessen carcinogen buildup|Dispensary][$cash -= 10000*_PCSkillCheck, $dietCleanse = 1]]
 	//Costs <<print cashFormat(10000*_PCSkillCheck)>>//
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;//Will allow for specially designed meals to be served in the cafeteria to counteract excessive drug use.//
 	<br>
@@ -329,8 +361,8 @@ Pharmacological Upgrades
 <<if ($healthyDrugsUpgrade == 0)>>
 	<<if (($organFarmUpgrade >= 1) && ($injectionUpgrade != 0) && ($curativeUpgrade == 1) && ($aphrodisiacUpgrade == 1))>>
 		<<if ($rep >= 15000*_PCSkillCheck)>>
-			[[Fund research into drug formulations without negative physical side effects|Dispensary][$cash -= 500000*$upgradeMultiplierMedicine,$healthyDrugsUpgrade = 1]]
-			//Costs <<print cashFormat(500000*$upgradeMultiplierMedicine)>>//
+			[[Fund research into drug formulations without negative physical side effects|Dispensary][$cash -= 500000*_PCSkillCheck,$healthyDrugsUpgrade = 1]]
+			//Costs <<print cashFormat(500000*_PCSkillCheck)>>//
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;//Will prevent the negative side effects of excessive drug usage on your slaves.//
 			<br>
 		<<else>>
@@ -358,8 +390,8 @@ Fertility Focused Pharmacology
 <hr>
 <<if $seeHyperPreg == 1>>
 	<<if $superFertilityDrugs == 1 && ($rep > 10000*_PCSkillCheck) && $pregSpeedControl != 1>>
-		[[Fund research pregnancy speed control methods|Dispensary][$cash -= 200000*$upgradeMultiplierMedicine, $pregSpeedControl = 1, $clinicSpeedGestation = 0]]
-		//Costs <<print cashFormat(200000*$upgradeMultiplierMedicine)>>//
+		[[Fund research pregnancy speed control methods|Dispensary][$cash -= 200000*_PCSkillCheck, $pregSpeedControl = 1, $clinicSpeedGestation = 0]]
+		//Costs <<print cashFormat(200000*_PCSkillCheck)>>//
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;// Fund underground research labs to develop methods for controlling pregnancy progress. //
 		<br>
 	<<elseif ($rep <= 10000*_PCSkillCheck) && $pregSpeedControl != 1>>
@@ -371,8 +403,8 @@ Fertility Focused Pharmacology
 	<</if>>
 <<elseif $birthsTotal > 10>>
 	<<if ($rep > 10000*_PCSkillCheck) && $pregSpeedControl != 1>>
-		[[Fund research pregnancy speed control methods|Dispensary][$cash -= 200000*$upgradeMultiplierMedicine, $pregSpeedControl = 1, $clinicSpeedGestation = 0]]
-		//Costs <<print cashFormat(200000*$upgradeMultiplierMedicine)>>//
+		[[Fund research pregnancy speed control methods|Dispensary][$cash -= 200000*_PCSkillCheck, $pregSpeedControl = 1, $clinicSpeedGestation = 0]]
+		//Costs <<print cashFormat(200000*_PCSkillCheck)>>//
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;// Fund underground research labs to develop methods for controlling pregnancy progress. //
 		<br>
 	<<elseif ($rep <= 10000*_PCSkillCheck) && $pregSpeedControl != 1>>
@@ -501,7 +533,7 @@ Future Societies Research
 <<if $arcologies[0].FSGenderRadicalistDecoration == 100 && $organFarmUpgrade > 0>>
 	<<if ($arcologies[0].FSGenderRadicalistResearch == 0)>>
 		<<if ($rep >= 10000*_PCSkillCheck)>>
-			[[Fund research into developing male pregnancy methods|Dispensary][$cash -= 50000*$upgradeMultiplierMedicine,$arcologies[0].FSGenderRadicalistResearch = 1]] //Costs <<print cashFormat(50000*$upgradeMultiplierMedicine)>>. Will allow cloning and production of anal uteri and ovaries.//
+			[[Fund research into developing male pregnancy methods|Dispensary][$cash -= 50000*_PCSkillCheck,$arcologies[0].FSGenderRadicalistResearch = 1]] //Costs <<print cashFormat(50000*_PCSkillCheck)>>. Will allow cloning and production of anal uteri and ovaries.//
 			<br>
 		<<else>>
 			// You lack the reputation to access the research necessary to develop anal uteri and ovaries. //
@@ -544,7 +576,7 @@ Future Societies Research
 <<if $arcologies[0].FSAssetExpansionistDecoration == 100>>
 	<<if ($arcologies[0].FSAssetExpansionistResearch == 0)>>
 		<<if ($rep >= 5000*_PCSkillCheck)>>
-			[[Fund research into drug formulations for growth without limit|Dispensary][$cash -= 30000*$upgradeMultiplierMedicine,$arcologies[0].FSAssetExpansionistResearch = 1]] //Costs <<print cashFormat(30000*$upgradeMultiplierMedicine)>>. Will allow creation of drugs to push assets to unthinkable sizes.//
+			[[Fund research into drug formulations for growth without limit|Dispensary][$cash -= 30000*_PCSkillCheck,$arcologies[0].FSAssetExpansionistResearch = 1]] //Costs <<print cashFormat(30000*_PCSkillCheck)>>. Will allow creation of drugs to push assets to unthinkable sizes.//
 			<br>
 		<<else>>
 			// You lack the reputation to access the research necessary to develop advanced growth drug formulations. //
@@ -565,7 +597,7 @@ Future Societies Research
 <<if $arcologies[0].FSSlimnessEnthusiastDecoration == 100>>
 	<<if ($arcologies[0].FSSlimnessEnthusiastResearch == 0)>>
 		<<if ($rep >= 5000*_PCSkillCheck)>>
-			[[Fund research into drug formulations for slimming slaves|Dispensary][$cash -= 30000*$upgradeMultiplierMedicine,$arcologies[0].FSSlimnessEnthusiastResearch = 1]] //Costs <<print cashFormat(30000*$upgradeMultiplierMedicine)>>. Will allow creation of drugs to shrink assets.//
+			[[Fund research into drug formulations for slimming slaves|Dispensary][$cash -= 30000*_PCSkillCheck,$arcologies[0].FSSlimnessEnthusiastResearch = 1]] //Costs <<print cashFormat(30000*_PCSkillCheck)>>. Will allow creation of drugs to shrink assets.//
 			<br>
 		<<else>>
 			// You lack the reputation to access the research necessary to develop asset reducing drug formulations. //
@@ -586,7 +618,7 @@ Future Societies Research
 <<if $arcologies[0].FSYouthPreferentialistDecoration == 100>>
 	<<if ($arcologies[0].FSYouthPreferentialistResearch == 0)>>
 		<<if ($rep >= 5000*_PCSkillCheck)>>
-			[[Fund research into skin care designed to reverse the effects of aging|Dispensary][$cash -= 30000*$upgradeMultiplierMedicine,$arcologies[0].FSYouthPreferentialistResearch = 1]] //Costs <<print cashFormat(30000*$upgradeMultiplierMedicine)>>. Will allow creation of beauty creams designed to make slaves look young again.//
+			[[Fund research into skin care designed to reverse the effects of aging|Dispensary][$cash -= 30000*_PCSkillCheck,$arcologies[0].FSYouthPreferentialistResearch = 1]] //Costs <<print cashFormat(30000*_PCSkillCheck)>>. Will allow creation of beauty creams designed to make slaves look young again.//
 			<br>
 		<<else>>
 			// You lack the reputation to access the research necessary to develop beauty creams designed to make slaves look young again. //
diff --git a/src/uncategorized/endWeek.tw b/src/uncategorized/endWeek.tw
index aa72244016fae0fe0313db62f6effb1bc7945f4e..66772dfc1ae96a0e762444421fc3b9c71e40926e 100644
--- a/src/uncategorized/endWeek.tw
+++ b/src/uncategorized/endWeek.tw
@@ -21,7 +21,6 @@
 <<if $sexualOpeness == 1>>
 	<<set $penetrativeUseWeight++>>
 <</if>>
-<<HSM>>
 
 <<for _i = 0; _i < $slaves.length; _i++>>
 	<<if $slaves[_i].inflationMethod == 1 || $slaves[_i].inflationMethod == 2>>
diff --git a/src/uncategorized/exportAllRules.tw b/src/uncategorized/exportAllRules.tw
index cc62cd57c769350e68c666a7ca37cec7b1860beb..be6267639804a81e454bb3b3dfbdb80cf839af6f 100644
--- a/src/uncategorized/exportAllRules.tw
+++ b/src/uncategorized/exportAllRules.tw
@@ -2,58 +2,12 @@
 
 <<set $nextButton = "Continue", $nextLink = "Rules Assistant">>
 
-//Copy one of following blocks for importing later. The first method is generated from a hand-maintained variable list and is not a complete export (at minimum, it omits auto-surgery rule settings). The second method (direct JSON) is automatic and guaranteed to export ALL rule variables, but may not work in some browsers. (Mostly old ones.)//
-
+//Copy one of following blocks for importing later. RA rules become too complex, only new (direct JSON) method guarantee proper result, but may not work in some browsers.//
 
 <br>
-<br> __Default FC export method__: <br>
-
-<<set _length = $defaultRules.length>>
-
-<<for _r = _length - 1; _r >= 0; _r-->>
-<<if $defaultRules[_r] == null>>
-	<<continue>>
-<</if>>
-<<set _currentRule = $defaultRules[_r]>>
-		
-name: "_currentRule.name",
-condition: "<<print unparseExpr(_currentRule.condition)>>",
-releaseRules: "_currentRule.releaseRules", clitSetting: "_currentRule.clitSetting", clitSettingXY: "_currentRule.clitSettingXY", clitSettingXX: "_currentRule.clitSettingXX", clitSettingEnergy: "_currentRule.clitSettingEnergy", speechRules: "_currentRule.speechRules", clothes: "_currentRule.clothes", collar: "_currentRule.collar", shoes: "_currentRule.shoes", virginAccessory: "_currentRule.virginAccessory", aVirginAccessory: "_currentRule.aVirginAccessory", vaginalAccessory: "_currentRule.vaginalAccessory", dickAccessory: "_currentRule.dickAccessory", aVirginDickAccessory: "_currentRule.aVirginDickAccessory", bellyAccessory: "_currentRule.bellyAccessory", aVirginButtplug: "_currentRule.aVirginButtplug", buttplug: "_currentRule.buttplug", eyeColor: "_currentRule.eyeColor", makeup: "_currentRule.makeup", nails: "_currentRule.nails", hColor: "_currentRule.hColor", hLength: "_currentRule.hLength", hStyle: "_currentRule.hStyle", pubicHColor: "_currentRule.pubicHColor", pubicHStyle: "_currentRule.pubicHStyle", nipplesPiercing: "_currentRule.nipplesPiercing", areolaePiercing: "_currentRule.areolaePiercing", clitPiercing: "_currentRule.clitPiercing", vaginaLube: "_currentRule.vaginaLube", vaginaPiercing: "_currentRule.vaginaPiercing", dickPiercing: "_currentRule.dickPiercing", anusPiercing: "_currentRule.anusPiercing", lipsPiercing: "_currentRule.lipsPiercing", tonguePiercing: "_currentRule.tonguePiercing", earPiercing: "_currentRule.earPiercing", nosePiercing: "_currentRule.nosePiercing", eyebrowPiercing: "_currentRule.eyebrowPiercing", navelPiercing: "_currentRule.navelPiercing", corsetPiercing: "_currentRule.corsetPiercing", boobsTat: "_currentRule.boobsTat", buttTat: "_currentRule.buttTat", vaginaTat: "_currentRule.vaginaTat", dickTat: "_currentRule.dickTat", lipsTat: "_currentRule.lipsTat", anusTat: "_currentRule.anusTat", shouldersTat: "_currentRule.shouldersTat", armsTat: "_currentRule.armsTat", legsTat: "_currentRule.legsTat", backTat: "backTat", stampTat: "_currentRule.stampTat", curatives: "_currentRule.curatives", livingRules: "_currentRule.livingRules", relationshipRules: "_currentRule.relationshipRules", standardPunishment: "situational", standardReward: "situational", diet: "_currentRule.diet", dietCum: "_currentRule.dietCum", dietMilk: "_currentRule.dietMilk", muscles: "_currentRule.muscles", XY: "_currentRule.XY", XX: "_currentRule.XX", gelding: "_currentRule.gelding", preg: "_currentRule.preg", growth: "_currentRule.growth", aphrodisiacs: "_currentRule.aphrodisiacs", autoSurgery: _currentRule.autoSurgery, autoBrand: _currentRule.autoBrand, pornFameSpending: "_currentRule.pornFameSpending", dietGrowthSupport: _currentRule.dietGrowthSupport, eyewear: "_currentRule.eyewear",
-
-/* pregmod exclusive variables */
-underarmHColor: "_currentRule.underArmHColor", underArmHStyle: "_currentRule.underarmHStyle",
-/* end pregmod variables */
 
-assignment: <<if ndef _currentRule.assignment || _currentRule.assignment.length < 1>>[],<<else>>_currentRule.assignment,<</if>>
-excludeAssignment:<<if ndef _currentRule.excludeAssignment || _currentRule.excludeAssignment.length < 1>>[],<<else>>
-	[<<for _i = 0; _i < _currentRule.excludeAssignment.length; _i++>>
-		<<if _i > 0>>,<</if>>"_currentRule.excludeAssignment[_i]"
-	<</for>>],
-<</if>>
-setAssignment: "_currentRule.setAssignment",
-facility: <<if ndef _currentRule.facility || _currentRule.facility.length < 1>>[],<<else>>_currentRule.facility,<</if>>
-excludeFacility:<<if ndef _currentRule.excludeFacility || _currentRule.excludeFacility.length < 1>>[],<<else>>
-	[<<for _i = 0; _i < _currentRule.excludeFacility.length; _i++>>
-		<<if _i > 0>>,<</if>>"_currentRule.excludeFacility[_i]"
-	<</for>>],
-<</if>>
-assignFacility: "_currentRule.assignFacility", excludeSpecialSlaves: _currentRule.excludeSpecialSlaves, facilityRemove: _currentRule.facilityRemove, removalAssignment: "_currentRule.removalAssignment",
-selectedSlaves: <<if ndef _currentRule.selectedSlaves || _currentRule.selectedSlaves.length < 1>>[],<<else>>
-	[<<for _i = 0; _i < _currentRule.selectedSlaves.length; _i++>>
-		<<if _i > 0>>,<</if>>_currentRule.selectedSlaves[_i]
-	<</for>>],
-<</if>>
-excludedSlaves: <<if ndef _currentRule.excludedSlaves || _currentRule.excludedSlaves.length < 1>>[]<<else>>
-	[<<for _i = 0; _i < _currentRule.excludedSlaves.length; _i++>>
-		<<if _i > 0>>,<</if>>_currentRule.excludedSlaves[_i]
-	<</for>>]
-<</if>>
-<br><br>
-<</for>>
-
-<br>
 <br> __Direct JSON export method__: <br>
-
+<<set _length = $defaultRules.length>>
 <<for _r = _length - 1; _r >= 0; _r-->>
 <<if $defaultRules[_r] == null>>
 	<<continue>>
diff --git a/src/uncategorized/exportRule.tw b/src/uncategorized/exportRule.tw
index ce782b49533026756aa087dd52cbda6527c6af84..4eb191c8685faf5ce2281976e8f1da8f6f26aeb4 100644
--- a/src/uncategorized/exportRule.tw
+++ b/src/uncategorized/exportRule.tw
@@ -2,48 +2,9 @@
 
 <<set $nextButton = "Continue", $nextLink = "Rules Assistant">>
 
-//Copy one of following blocks for importing later. The first method is generated from a hand-maintained variable list and is not a complete export (at minimum, it omits auto-surgery rule settings). The second method (direct JSON) is automatic and guaranteed to export ALL rule variables, but may not work in some browsers. (Mostly old ones.)//
+//RA rules become too complex, only new (direct JSON) method guarantee proper result, but may not work in some browsers. (Mostly old ones.)//
 
-
-<br>
-<br> __Default FC export method__: <br>
-
-
-name: "$currentRule.name",
-condition: "<<print unparseExpr($currentRule.condition)>>",
-releaseRules: "$currentRule.releaseRules", clitSetting: "$currentRule.clitSetting", clitSettingXY: "$currentRule.clitSettingXY", clitSettingXX: "$currentRule.clitSettingXX", clitSettingEnergy: "$currentRule.clitSettingEnergy", speechRules: "$currentRule.speechRules", clothes: "$currentRule.clothes", collar: "$currentRule.collar", shoes: "$currentRule.shoes", virginAccessory: "$currentRule.virginAccessory", aVirginAccessory: "$currentRule.aVirginAccessory", vaginalAccessory: "$currentRule.vaginalAccessory", dickAccessory: "$currentRule.dickAccessory", aVirginDickAccessory: "$currentRule.aVirginDickAccessory", bellyAccessory: "$currentRule.bellyAccessory", aVirginButtplug: "$currentRule.aVirginButtplug", buttplug: "$currentRule.buttplug", eyeColor: "$currentRule.eyeColor", makeup: "$currentRule.makeup", nails: "$currentRule.nails", hColor: "$currentRule.hColor", hLength: "$currentRule.hLength", hStyle: "$currentRule.hStyle", pubicHColor: "$currentRule.pubicHColor", pubicHStyle: "$currentRule.pubicHStyle", nipplesPiercing: "$currentRule.nipplesPiercing", areolaePiercing: "$currentRule.areolaePiercing", clitPiercing: "$currentRule.clitPiercing", vaginaLube: "$currentRule.vaginaLube", vaginaPiercing: "$currentRule.vaginaPiercing", dickPiercing: "$currentRule.dickPiercing", anusPiercing: "$currentRule.anusPiercing", lipsPiercing: "$currentRule.lipsPiercing", tonguePiercing: "$currentRule.tonguePiercing", earPiercing: "$currentRule.earPiercing", nosePiercing: "$currentRule.nosePiercing", eyebrowPiercing: "$currentRule.eyebrowPiercing", navelPiercing: "$currentRule.navelPiercing", corsetPiercing: "$currentRule.corsetPiercing", boobsTat: "$currentRule.boobsTat", buttTat: "$currentRule.buttTat", vaginaTat: "$currentRule.vaginaTat", dickTat: "$currentRule.dickTat", lipsTat: "$currentRule.lipsTat", anusTat: "$currentRule.anusTat", shouldersTat: "$currentRule.shouldersTat", armsTat: "$currentRule.armsTat", legsTat: "$currentRule.legsTat", backTat: "backTat", stampTat: "$currentRule.stampTat", curatives: "$currentRule.curatives", livingRules: "$currentRule.livingRules", relationshipRules: "$currentRule.relationshipRules", standardPunishment: "situational", standardReward: "situational", diet: "$currentRule.diet", dietCum: "$currentRule.dietCum", dietMilk: "$currentRule.dietMilk", muscles: "$currentRule.muscles", XY: "$currentRule.XY", XX: "$currentRule.XX", gelding: "$currentRule.gelding", preg: "$currentRule.preg", growth: "$currentRule.growth", aphrodisiacs: "$currentRule.aphrodisiacs", autoSurgery: $currentRule.autoSurgery, autoBrand: $currentRule.autoBrand, pornFameSpending: "$currentRule.pornFameSpending", dietGrowthSupport: $currentRule.dietGrowthSupport, eyewear: "$currentRule.eyewear",
-
-/* pregmod exclusive variables */
-underarmHColor: "$currentRule.underArmHColor", underArmHStyle: "$currentRule.underarmHStyle",
-/* end pregmod variables */
-
-assignment: <<if ndef $currentRule.assignment || $currentRule.assignment.length < 1>>[],<<else>>$currentRule.assignment,<</if>>
-excludeAssignment:<<if ndef $currentRule.excludeAssignment || $currentRule.excludeAssignment.length < 1>>[],<<else>>
-	[<<for _i = 0; _i < $currentRule.excludeAssignment.length; _i++>>
-		<<if _i > 0>>,<</if>>"$currentRule.excludeAssignment[_i]"
-	<</for>>],
-<</if>>
-setAssignment: "$currentRule.setAssignment",
-facility: <<if ndef $currentRule.facility || $currentRule.facility.length < 1>>[],<<else>>$currentRule.facility,<</if>>
-excludeFacility:<<if ndef $currentRule.excludeFacility || $currentRule.excludeFacility.length < 1>>[],<<else>>
-	[<<for _i = 0; _i < $currentRule.excludeFacility.length; _i++>>
-		<<if _i > 0>>,<</if>>"$currentRule.excludeFacility[_i]"
-	<</for>>],
-<</if>>
-assignFacility: "$currentRule.assignFacility", excludeSpecialSlaves: $currentRule.excludeSpecialSlaves, facilityRemove: $currentRule.facilityRemove, removalAssignment: "$currentRule.removalAssignment",
-selectedSlaves: <<if ndef $currentRule.selectedSlaves || $currentRule.selectedSlaves.length < 1>>[],<<else>>
-	[<<for _i = 0; _i < $currentRule.selectedSlaves.length; _i++>>
-		<<if _i > 0>>,<</if>>$currentRule.selectedSlaves[_i]
-	<</for>>],
-<</if>>
-excludedSlaves: <<if ndef $currentRule.excludedSlaves || $currentRule.excludedSlaves.length < 1>>[]<<else>>
-	[<<for _i = 0; _i < $currentRule.excludedSlaves.length; _i++>>
-		<<if _i > 0>>,<</if>>$currentRule.excludedSlaves[_i]
-	<</for>>]
-<</if>>
-
-<br>
-<br> __Direct JSON export method__: <br>
+<br> __Direct JSON export method__: <br><br>
 
 <div class="output">
 <<set _jsonText = toJson($currentRule)>>
diff --git a/src/uncategorized/futureSocities.tw b/src/uncategorized/futureSociety.tw
similarity index 100%
rename from src/uncategorized/futureSocities.tw
rename to src/uncategorized/futureSociety.tw
diff --git a/src/uncategorized/generateXXSlave.tw b/src/uncategorized/generateXXSlave.tw
index ee10a4b1501f5aa482e10caaec59c557d4d5aeda..8cebddadd5d46d8cad385cceacd7b8a5bc11964a 100644
--- a/src/uncategorized/generateXXSlave.tw
+++ b/src/uncategorized/generateXXSlave.tw
@@ -143,7 +143,7 @@
 /% Begin height replacement section. %/
 /% Since we use nationality for height effects we need to initialize it now instead of later on like in vanilla Free Cities. %/
 <<if $fixedNationality == 0>>
-	<<set $activeSlave.nationality = $nationalities.random()>>
+	<<set $activeSlave.nationality = hashChoice($nationalities)>>
 <<else>>
 	<<set $activeSlave.nationality = $fixedNationality>>
 <</if>>
@@ -157,7 +157,7 @@
 		<<set _capUpgradeNationalities = []>>
 		<<for _u = 0; _u < _capUpgradeCheck.length; _u++>>
 			<<set _capNation = _capUpgradeCheck[_u]>>
-			<<if $nationalities.includes(_capNation)>>
+			<<if _capNation in $nationalities>>
 				<<set _capUpgradeNationalities.push(_capNation)>>
 			<</if>>
 		<</for>>
diff --git a/src/uncategorized/generateXYSlave.tw b/src/uncategorized/generateXYSlave.tw
index 24fdd8bb1386ff85d0c2501bf2711ea5453ed6ab..1555efc0d3d865c59fc94b206622c508278b0527 100644
--- a/src/uncategorized/generateXYSlave.tw
+++ b/src/uncategorized/generateXYSlave.tw
@@ -1,4 +1,4 @@
-:: Generate XY Slave [nobr]
+:: Generate XY Slave [nobr]
 
 <<BaseSlave>>
 /% Defaults that differ from the old template %/
@@ -141,7 +141,7 @@
 /% Since we use nationality for height effects we need to initialize it now instead of later on like in vanilla Free Cities. %/
 
 <<if $fixedNationality == 0>>
-	<<set $activeSlave.nationality = $nationalities.random()>>
+	<<set $activeSlave.nationality = hashChoice($nationalities)>>
 <<else>>
 	<<set $activeSlave.nationality = $fixedNationality>>
 <</if>>
@@ -155,7 +155,7 @@
 		<<set _capUpgradeNationalities = []>>
 		<<for _u = 0; _u < _capUpgradeCheck.length; _u++>>
 			<<set _capNation = _capUpgradeCheck[_u]>>
-			<<if $nationalities.includes(_capNation)>>
+			<<if _capNation in $nationalities>>
 				<<set _capUpgradeNationalities.push(_capNation)>>
 			<</if>>
 		<</for>>
@@ -452,61 +452,75 @@
 <<else>>
 	/% Temporarily use activeSlave.foreskin to store the chance of circumcision. %/
 	<<switch $activeSlave.nationality>>
-	<<case "Iranian" "Moroccan" "Afghan" "Tunisian">>
+	<<case "Iranian" "Moroccan" "Afghan" "Tunisian" "Palestinian" "Sahrawi">>
 		<<set $activeSlave.foreskin = 100>>
-	<<case "Turkish" "Nigerian" "Iraqi" "Yemeni" "Jordanian" "Gabonese" "Tajik">>
+	<<case "Turkish" "Nigerian" "Iraqi" "Yemeni" "Jordanian" "Gabonese" "Tajik" "Comorian" "Kurdish" "Mauritanian">>
 		<<set $activeSlave.foreskin = 99>>
-	<<case "Algerian" "Maldivian" "Azerbaijani">>
+	<<case "Algerian" "Maldivian" "Azerbaijani" "Liberian">>
 		<<set $activeSlave.foreskin = 98>>
-	<<case "Saudi" "Uzbek" "Libyan" "Djiboutian">>
+	<<case "Saudi" "Uzbek" "Libyan" "Djiboutian" "Eritrean" "Ivorian">>
 		<<set $activeSlave.foreskin = 97>>
-	<<case "Congolese" "Pakistani" "Nigerien" "Turkmen">>
-		/% Population-weighted average of Democratic Republic of Congo and Republic of Congo %/
+	<<case "Zairian" "Pakistani" "Nigerien" "Turkmen" "Sierra Leonean">>
 		<<set $activeSlave.foreskin = 96>>
-	<<case "Egyptian" "Tuvaluan" "Malagasy" "Nauruan" "a Cook Islander" "Niuean" "Palauan" "Samoan" "a Solomon Islander" "Tongan" "Ni-Vanuatu">>
+	<<case "Egyptian" "Tuvaluan" "Malagasy" "Nauruan" "a Cook Islander" "Niuean" "Palauan" "Samoan" "a Solomon Islander" "Tongan" "Ni-Vanuatu" "Gambian" "Togolese">>
 		<<set $activeSlave.foreskin = 95>>
-	<<case "Cameroonian">>
+	<<case "Cameroonian" "Senegalese" "Somali">>
 		<<set $activeSlave.foreskin = 94>>
-	<<case "Indonesian" "Bangladeshi" "Syrian">>
+	<<case "Indonesian" "Bangladeshi" "Syrian" "Beninese" "Bissau-Guinean">>
 		<<set $activeSlave.foreskin = 93>>
 	<<case "Israeli" "Ghanan" "Ethiopian" "Filipina" "Kosovan">>
 		<<set $activeSlave.foreskin = 92>>
-	<<case "Kenyan" "Kyrgyz" "Palestinian">>
+	<<case "Kenyan" "Kyrgyz">>
 		<<set $activeSlave.foreskin = 91>>
-	<<case "Omani">>
+	<<case "Omani" "Burkinabé">>
 		<<set $activeSlave.foreskin = 88>>
+	<<case "Equatoguinean">>
+		<<set $activeSlave.foreskin = 87>>
 	<<case "Malian" "Kuwaiti">>
 		<<set $activeSlave.foreskin = 86>>
+	<<case "Guinean">>
+		<<set $activeSlave.foreskin = 84>>
 	<<case "Bahraini">>
 		<<set $activeSlave.foreskin = 81>>
+	<<case "French Polynesian">>
+		<<set $activeSlave.foreskin = 78>>
 	<<case "American" "Qatari">>
 		<<set $activeSlave.foreskin = 77>>
 	<<case "Emirati">>
 		<<set $activeSlave.foreskin = 76>>
+	<<case "Chadian">>
+		<<set $activeSlave.foreskin = 74>>
 	<<case "Tanzanian">>
 		<<set $activeSlave.foreskin = 72>>
+	<<case "Congolese">>
+		<<set $activeSlave.foreskin = 70>>
+	<<case "Central African">>
+		<<set $activeSlave.foreskin = 63>>
 	<<case "Malaysian" "Burundian">>
 		<<set $activeSlave.foreskin = 61>>
 	<<case "Lebanese">>
 		<<set $activeSlave.foreskin = 60>>
+	<<case "Angolan">>
+		<<set $activeSlave.foreskin = 58>>
 	<<case "Kazakh" "Fijian">>
 		<<set $activeSlave.foreskin = 56>>
-	<<case "Korean" "Bruneian">>
+	<<case "Korean" "Bruneian" "Mosotho">>
 		/% Population-weighted average of South Korea and North Korea. %/
 		<<set $activeSlave.foreskin = 52>>
 	<<case "Albanian">>
 		<<set $activeSlave.foreskin = 48>>
+	<<case "Mozambican">>
+		<<set $activeSlave.foreskin = 47>>
 	<<case "South African">>
 		<<set $activeSlave.foreskin = 45>>
 	<<case "Dominican">>
 		<<set $activeSlave.foreskin = 43>>
 	<<case "Bosnian">>
 		<<set $activeSlave.foreskin = 42>>
+	<<case "Sudanese">>
+		<<set $activeSlave.foreskin = 39>>
 	<<case "Mexican">>
 		<<set $activeSlave.foreskin = 38>>
-	<<case "Sudanese">>
-		/% Population-weighted average of Sudan and South Sudan. %/
-		<<set $activeSlave.foreskin = 36>>
 	<<case "Macedonian">>
 		<<set $activeSlave.foreskin = 34>>
 	<<case "a New Zealander">>
@@ -515,19 +529,27 @@
 		<<set $activeSlave.foreskin = 28>>
 	<<case "Ugandan" "Australian">>
 		<<set $activeSlave.foreskin = 27>>
+	<<case "Namibian">>
+		<<set $activeSlave.foreskin = 26>>
+	<<case "South Sudanese">>
+		<<set $activeSlave.foreskin = 24>>
 	<<case "Belgian" "Thai" "Cypriot">>
 		<<set $activeSlave.foreskin = 23>>
+	<<case "Malawian">>
+		<<set $activeSlave.foreskin = 22>>
 	<<case "British">>
 		<<set $activeSlave.foreskin = 21>>
 	<<case "Puerto Rican">>
 		<<set $activeSlave.foreskin = 20>>
 	<<case "Montenegrin">>
 		<<set $activeSlave.foreskin = 19>>
-	<<case "Singaporean" "Surinamese">>
+	<<case "Mauritian">>
+		<<set $activeSlave.foreskin = 17>>
+	<<case "Singaporean" "Surinamese" "Motswana">>
 		<<set $activeSlave.foreskin = 15>>
 	<<case "Jamaican" "French" "Chinese" "Indian">>
 		<<set $activeSlave.foreskin = 14>>
-	<<case "Zambian" "Bulgarian">>
+	<<case "Zambian" "Bulgarian" "Rwandan">>
 		<<set $activeSlave.foreskin = 13>>
 	<<case "Russian" "French Guianan" "Guyanese">>
 		<<set $activeSlave.foreskin = 12>>
@@ -537,9 +559,9 @@
 		<<set $activeSlave.foreskin = 10>>
 	<<case "Zimbabwean" "Japanese">>
 		<<set $activeSlave.foreskin = 9>>
-	<<case "Taiwanese" "Slovene" "Sri Lankan">>
+	<<case "Taiwanese" "Slovene" "Sri Lankan" "Swazi">>
 		<<set $activeSlave.foreskin = 8>>
-	<<case "Haitian" "Spanish">>
+	<<case "Haitian" "Spanish" "Catalan">>
 		<<set $activeSlave.foreskin = 7>>
 	<<case "Dutch" "Austrian" "Swiss" "East Timorese" "Trinidadian">>
 		<<set $activeSlave.foreskin = 6>>
@@ -549,14 +571,14 @@
 		<<set $activeSlave.foreskin = 4>>
 	<<case "Italian" "Norwegian" "Argentinian">>
 		<<set $activeSlave.foreskin = 3>>
-	<<case "Ukrainian" "Luxembourgian" "Vincentian">>
+	<<case "Ukrainian" "Luxembourgian" "Vincentian" "Tibetan">>
 		<<set $activeSlave.foreskin = 2>>
 	<<case "Portuguese" "Hungarian" "Irish" "Finnish" "Brazilian" "Bermudian" "Uruguayan" "Monégasque" "Andorran" "Croatian" "Moldovan" "Panamanian" "Barbadian" "Bhutanese" "Seychellois">>
 			<<set $activeSlave.foreskin = 1>>
 	<<case 	"Cuban" "Guatemalan" "Chilean" "Bolivian" "Venezuelan" "Lithuanian" "Slovak" "Czech" "Romanian" "Estonian" "Icelandic" "Polish" "Colombian" 
 			"Armenian" "Vietnamese" "Sammarinese" "Marshallese" "Greenlandic" "Belizean" "Costa Rican" "Salvadoran" "Micronesian" "Grenadian" "Honduran"
 			"I-Kiribati" "Laotian" "Maltese" "Nicaraguan" "Antiguan" "Bahamian" "Dominiquais" "Ecuadorian" "Latvian" "Paraguayan" "Kittitian" "Vatican"
-			"Saint Lucian">>
+			"Saint Lucian" "Cape Verdean" "São Toméan">>
 		<<set $activeSlave.foreskin = 0>>
 	<<default>>
 		/% Some overlooked country, or possibly stateless. Use global average. %/
diff --git a/src/uncategorized/hgSelect.tw b/src/uncategorized/hgSelect.tw
index cc6501bf79455c03d314f3ffa9412faf5009066e..33e48fa08c99fa06537c4d173342c38237a3ac53 100644
--- a/src/uncategorized/hgSelect.tw
+++ b/src/uncategorized/hgSelect.tw
@@ -77,7 +77,7 @@ _HGName
 <<if $HeadGirl != 0>>
 <<if $universalRulesImpregnation == "HG">>
 	<br><br>_HGName is responsible for impregnating fertile slaves.
-	<<set $HGCum = 2+Math.trunc(($HeadGirl.balls/4)+($HeadGirl.energy/95)+($HeadGirl.health/95))>>
+	<<set $HGCum = 2+Math.trunc(($HeadGirl.balls/5)+($HeadGirl.energy/95)+($HeadGirl.health/95)+($HeadGirl.devotion/95)+($reproductionFormula*5))>>
 	<<if canPenetrate($HeadGirl) && $HeadGirl.pubertyXY == 1>>
 		To maximize the chances of impregnation, she will fuck fertile pussies frequently during the week. $HeadGirl.slaveName can service $HGCum slaves this way.
 		<<if $HeadGirl.devotion > 95>>She loves you so much she'll fuck them until she's sore.<<else>>If she were more devoted to you, she might be able to drive herself to get hard and service one more.<</if>>
diff --git a/src/uncategorized/initRules.tw b/src/uncategorized/initRules.tw
index b826b28888037b8fdca1bafce4d3b1ee70a51a16..1f64b201211cc08b0124b59e2995a7303c9b0236 100644
--- a/src/uncategorized/initRules.tw
+++ b/src/uncategorized/initRules.tw
@@ -3,13 +3,13 @@
 <<silently>>
 <<set $defaultRules = []>>
 
-<<set _activeRule = {ID: 1, name: "Obedient Slaves", condition: {id: ">", first: {id: "(name)", name: "devotion"}, second: {id: "(number)", value: 20}}, releaseRules: "no default setting", clitSetting: "no default setting", clitSettingXY: "no default setting", clitSettingXX: "no default setting", clitSettingEnergy: "no default setting", speechRules: "no default setting", clothes: "no default setting", collar: "no default setting", shoes: "no default setting", virginAccessory: "no default setting", aVirginAccessory: "no default setting", vaginalAccessory: "no default setting", aVirginDickAccessory: "no default setting", dickAccessory: "no default setting", bellyAccessory: "no default setting", aVirginButtplug: "no default setting", buttplug: "no default setting", eyeColor: "no default setting", makeup: "no default setting", nails: "no default setting", hColor: "no default setting", hLength: "no default setting", hStyle: "no default setting", pubicHColor: "no default setting", pubicHStyle: "no default setting", nipplesPiercing: "no default setting", areolaePiercing: "no default setting", clitPiercing: "no default setting", vaginaLube: "no default setting", vaginaPiercing: "no default setting", dickPiercing: "no default setting", anusPiercing: "no default setting", lipsPiercing: "no default setting", tonguePiercing: "no default setting", earPiercing: "no default setting", nosePiercing: "no default setting", eyebrowPiercing: "no default setting", navelPiercing: "no default setting", corsetPiercing: "no default setting", boobsTat: "no default setting", buttTat: "no default setting", vaginaTat: "no default setting", dickTat: "no default setting", lipsTat: "no default setting", anusTat: "no default setting", shouldersTat: "no default setting", armsTat: "no default setting", legsTat: "no default setting", backTat: "no default setting", stampTat: "no default setting", curatives: "no default setting", livingRules: "no default setting", relationshipRules: "no default setting", standardPunishment: "no default setting", standardReward: "no default setting", diet: "no default setting", dietCum: "no default setting", dietMilk: "no default setting", muscles: "no default setting", XY: "no default setting", XX: "no default setting", gelding: "no default setting", preg: "no default setting", growth: {boobs: "no default setting", butt: "no default setting", lips: "no default setting", dick: "no default setting", balls: "no default setting"}, aphrodisiacs: "no default setting", autoSurgery: 0, autoBrand: 0, pornFameSpending: "no default setting", dietGrowthSupport: 0, eyewear: "no default setting", assignment: [], excludeAssignment: [], setAssignment: "no default setting", facility: [], excludeFacility: [], excludeSpecialSlaves: false, facilityRemove: false, removalAssignment: "rest", selectedSlaves: [], excludedSlaves: [], surgery: {eyes: "no default setting", lactation: "no default setting", prostate: "no default setting", cosmetic: 0, accent: "no default setting", shoulders: "no default setting", shouldersImplant: "no default setting", boobs: "no default setting", hips: "no default setting", hipsImplant: "no default setting", butt: "no default setting", faceShape: "no default setting", lips: "no default setting", holes: 0}, underArmHColor: "no default setting", underArmHStyle: "no default setting", drug: "no default setting" }>>
+<<set _activeRule = {ID: 1, name: "Obedient Slaves", condition: {id: ">", first: {id: "(name)", name: "devotion"}, second: {id: "(number)", value: 20}}, releaseRules: "no default setting", clitSetting: "no default setting", clitSettingXY: "no default setting", clitSettingXX: "no default setting", clitSettingEnergy: "no default setting", speechRules: "no default setting", clothes: "no default setting", collar: "no default setting", shoes: "no default setting", virginAccessory: "no default setting", aVirginAccessory: "no default setting", vaginalAccessory: "no default setting", aVirginDickAccessory: "no default setting", dickAccessory: "no default setting", bellyAccessory: "no default setting", aVirginButtplug: "no default setting", buttplug: "no default setting", eyeColor: "no default setting", makeup: "no default setting", nails: "no default setting", hColor: "no default setting", hLength: "no default setting", hStyle: "no default setting", pubicHColor: "no default setting", pubicHStyle: "no default setting", nipplesPiercing: "no default setting", areolaePiercing: "no default setting", clitPiercing: "no default setting", vaginaLube: "no default setting", vaginaPiercing: "no default setting", dickPiercing: "no default setting", anusPiercing: "no default setting", lipsPiercing: "no default setting", tonguePiercing: "no default setting", earPiercing: "no default setting", nosePiercing: "no default setting", eyebrowPiercing: "no default setting", navelPiercing: "no default setting", corsetPiercing: "no default setting", boobsTat: "no default setting", buttTat: "no default setting", vaginaTat: "no default setting", dickTat: "no default setting", lipsTat: "no default setting", anusTat: "no default setting", shouldersTat: "no default setting", armsTat: "no default setting", legsTat: "no default setting", backTat: "no default setting", stampTat: "no default setting", curatives: "no default setting", livingRules: "no default setting", relationshipRules: "no default setting", standardPunishment: "no default setting", standardReward: "no default setting", diet: "no default setting", dietCum: "no default setting", dietMilk: "no default setting", muscles: "no default setting", XY: "no default setting", XX: "no default setting", gelding: "no default setting", preg: "no default setting", growth: {boobs: "no default setting", butt: "no default setting", lips: "no default setting", dick: "no default setting", balls: "no default setting"}, aphrodisiacs: "no default setting", autoSurgery: 0, autoBrand: 0, pornFameSpending: "no default setting", dietGrowthSupport: 0, eyewear: "no default setting", assignment: [], excludeAssignment: [], setAssignment: "no default setting", facility: [], excludeFacility: [], excludeSpecialSlaves: false, facilityRemove: false, removalAssignment: "rest", selectedSlaves: [], excludedSlaves: [], surgery: {eyes: "no default setting", lactation: "no default setting", prostate: "no default setting", cosmetic: "nds", accent: "no default setting", shoulders: "no default setting", shouldersImplant: "no default setting", boobs: "no default setting", hips: "no default setting", hipsImplant: "no default setting", butt: "no default setting", faceShape: "no default setting", lips: "no default setting", holes: "nds"}, underArmHColor: "no default setting", underArmHStyle: "no default setting", drug: "no default setting" }>>
 <<set $defaultRules.push(_activeRule)>>
 
-<<set _activeRule = {ID: 2, name: "Disobedient Slaves", condition: {id: "<=", first: {id: "(name)", name: "devotion"}, second: {id: "(number)", value: 20}}, releaseRules: "no default setting", clitSetting: "no default setting", clitSettingXY: "no default setting", clitSettingXX: "no default setting", clitSettingEnergy: "no default setting", speechRules: "no default setting", clothes: "no default setting", collar: "no default setting", shoes: "no default setting", virginAccessory: "no default setting", aVirginAccessory: "no default setting", vaginalAccessory: "no default setting", aVirginDickAccessory: "no default setting", dickAccessory: "no default setting", bellyAccessory: "no default setting", aVirginButtplug: "no default setting", buttplug: "no default setting", eyeColor: "no default setting", makeup: "no default setting", nails: "no default setting", hColor: "no default setting", hLength: "no default setting", hStyle: "no default setting", pubicHColor: "no default setting", pubicHStyle: "no default setting", nipplesPiercing: "no default setting", areolaePiercing: "no default setting", clitPiercing: "no default setting", vaginaLube: "no default setting", vaginaPiercing: "no default setting", dickPiercing: "no default setting", anusPiercing: "no default setting", lipsPiercing: "no default setting", tonguePiercing: "no default setting", earPiercing: "no default setting", nosePiercing: "no default setting", eyebrowPiercing: "no default setting", navelPiercing: "no default setting", corsetPiercing: "no default setting", boobsTat: "no default setting", buttTat: "no default setting", vaginaTat: "no default setting", dickTat: "no default setting", lipsTat: "no default setting", anusTat: "no default setting", shouldersTat: "no default setting", armsTat: "no default setting", legsTat: "no default setting", backTat: "no default setting", stampTat: "no default setting", curatives: "no default setting", livingRules: "spare", relationshipRules: "no default setting", standardPunishment: "no default setting", standardReward: "no default setting", diet: "no default setting", dietCum: "no default setting", dietMilk: "no default setting", muscles: "no default setting", XY: "no default setting", XX: "no default setting", gelding: "no default setting", preg: "no default setting", growth: {boobs: "no default setting", butt: "no default setting", lips: "no default setting", dick: "no default setting", balls: "no default setting"}, aphrodisiacs: "no default setting", autoSurgery: 0, autoBrand: 0, pornFameSpending: "no default setting", dietGrowthSupport: 0, eyewear: "no default setting", assignment: [], excludeAssignment: [], setAssignment: "no default setting", facility: [], excludeFacility: [], excludeSpecialSlaves: false, facilityRemove: false, removalAssignment: "rest", selectedSlaves: [], excludedSlaves: [], surgery: {eyes: "no default setting", lactation: "no default setting", prostate: "no default setting", cosmetic: 0, accent: "no default setting", shoulders: "no default setting", shouldersImplant: "no default setting", boobs: "no default setting", hips: "no default setting", hipsImplant: "no default setting", butt: "no default setting", faceShape: "no default setting", lips: "no default setting", holes: 0}, underArmHColor: "no default setting", underArmHStyle: "no default setting", drug: "no default setting"}>>
+<<set _activeRule = {ID: 2, name: "Disobedient Slaves", condition: {id: "<=", first: {id: "(name)", name: "devotion"}, second: {id: "(number)", value: 20}}, releaseRules: "no default setting", clitSetting: "no default setting", clitSettingXY: "no default setting", clitSettingXX: "no default setting", clitSettingEnergy: "no default setting", speechRules: "no default setting", clothes: "no default setting", collar: "no default setting", shoes: "no default setting", virginAccessory: "no default setting", aVirginAccessory: "no default setting", vaginalAccessory: "no default setting", aVirginDickAccessory: "no default setting", dickAccessory: "no default setting", bellyAccessory: "no default setting", aVirginButtplug: "no default setting", buttplug: "no default setting", eyeColor: "no default setting", makeup: "no default setting", nails: "no default setting", hColor: "no default setting", hLength: "no default setting", hStyle: "no default setting", pubicHColor: "no default setting", pubicHStyle: "no default setting", nipplesPiercing: "no default setting", areolaePiercing: "no default setting", clitPiercing: "no default setting", vaginaLube: "no default setting", vaginaPiercing: "no default setting", dickPiercing: "no default setting", anusPiercing: "no default setting", lipsPiercing: "no default setting", tonguePiercing: "no default setting", earPiercing: "no default setting", nosePiercing: "no default setting", eyebrowPiercing: "no default setting", navelPiercing: "no default setting", corsetPiercing: "no default setting", boobsTat: "no default setting", buttTat: "no default setting", vaginaTat: "no default setting", dickTat: "no default setting", lipsTat: "no default setting", anusTat: "no default setting", shouldersTat: "no default setting", armsTat: "no default setting", legsTat: "no default setting", backTat: "no default setting", stampTat: "no default setting", curatives: "no default setting", livingRules: "spare", relationshipRules: "no default setting", standardPunishment: "no default setting", standardReward: "no default setting", diet: "no default setting", dietCum: "no default setting", dietMilk: "no default setting", muscles: "no default setting", XY: "no default setting", XX: "no default setting", gelding: "no default setting", preg: "no default setting", growth: {boobs: "no default setting", butt: "no default setting", lips: "no default setting", dick: "no default setting", balls: "no default setting"}, aphrodisiacs: "no default setting", autoSurgery: 0, autoBrand: 0, pornFameSpending: "no default setting", dietGrowthSupport: 0, eyewear: "no default setting", assignment: [], excludeAssignment: [], setAssignment: "no default setting", facility: [], excludeFacility: [], excludeSpecialSlaves: false, facilityRemove: false, removalAssignment: "rest", selectedSlaves: [], excludedSlaves: [], surgery: {eyes: "no default setting", lactation: "no default setting", prostate: "no default setting", cosmetic: "nds", accent: "no default setting", shoulders: "no default setting", shouldersImplant: "no default setting", boobs: "no default setting", hips: "no default setting", hipsImplant: "no default setting", butt: "no default setting", faceShape: "no default setting", lips: "no default setting", holes: "nds"}, underArmHColor: "no default setting", underArmHStyle: "no default setting", drug: "no default setting"}>>
 <<set $defaultRules.push(_activeRule)>>
 
-<<set _activeRule = {ID: 3, name: "Unhealthy Slaves", condition: {id: "<", first: {id: "(name)", name: "health"}, second: {id: "(number)", value: -10}}, releaseRules: "no default setting", clitSetting: "no default setting", clitSettingXY: "no default setting", clitSettingXX: "no default setting", clitSettingEnergy: "no default setting", speechRules: "no default setting", clothes: "no default setting", collar: "no default setting", shoes: "no default setting", virginAccessory: "no default setting", aVirginAccessory: "no default setting", vaginalAccessory: "no default setting", dickAccessory: "no default setting", aVirginDickAccessory: "no default setting", bellyAccessory: "no default setting", aVirginButtplug: "no default setting", buttplug: "no default setting", eyeColor: "no default setting", makeup: "no default setting", nails: "no default setting", hColor: "no default setting", hLength: "no default setting", hStyle: "no default setting", pubicHColor: "no default setting", pubicHStyle: "no default setting", nipplesPiercing: "no default setting", areolaePiercing: "no default setting", clitPiercing: "no default setting", vaginaLube: "no default setting", vaginaPiercing: "no default setting", dickPiercing: "no default setting", anusPiercing: "no default setting", lipsPiercing: "no default setting", tonguePiercing: "no default setting", earPiercing: "no default setting", nosePiercing: "no default setting", eyebrowPiercing: "no default setting", navelPiercing: "no default setting", corsetPiercing: "no default setting", boobsTat: "no default setting", buttTat: "no default setting", vaginaTat: "no default setting", dickTat: "no default setting", lipsTat: "no default setting", anusTat: "no default setting", shouldersTat: "no default setting", armsTat: "no default setting", legsTat: "no default setting", backTat: "no default setting", stampTat: "no default setting", curatives: "applied", livingRules: "no default setting", relationshipRules: "no default setting", standardPunishment: "no default setting", standardReward: "no default setting", diet: "no default setting", dietCum: "no default setting", dietMilk: "no default setting", muscles: "no default setting", XY: "no default setting", XX: "no default setting", gelding: "no default setting", preg: "no default setting", growth: {boobs: "no default setting", butt: "no default setting", lips: "no default setting", dick: "no default setting", balls: "no default setting"}, aphrodisiacs: "no default setting", autoSurgery: 0, autoBrand: 0, pornFameSpending: "no default setting", dietGrowthSupport: 0, eyewear: "no default setting", assignment: [], excludeAssignment: [], setAssignment: "no default setting", facility: [], excludeFacility: [], excludeSpecialSlaves: false, facilityRemove: false, removalAssignment: "rest", selectedSlaves: [], excludedSlaves: [], surgery: {eyes: "no default setting", lactation: "no default setting", prostate: "no default setting", cosmetic: 0, accent: "no default setting", shoulders: "no default setting", shouldersImplant: "no default setting", boobs: "no default setting", hips: "no default setting", hipsImplant: "no default setting", butt: "no default setting", faceShape: "no default setting", lips: "no default setting", holes: 0}, underArmHColor: "no default setting", underArmHStyle: "no default setting", drug: "no default setting"}>>
+<<set _activeRule = {ID: 3, name: "Unhealthy Slaves", condition: {id: "<", first: {id: "(name)", name: "health"}, second: {id: "(number)", value: -10}}, releaseRules: "no default setting", clitSetting: "no default setting", clitSettingXY: "no default setting", clitSettingXX: "no default setting", clitSettingEnergy: "no default setting", speechRules: "no default setting", clothes: "no default setting", collar: "no default setting", shoes: "no default setting", virginAccessory: "no default setting", aVirginAccessory: "no default setting", vaginalAccessory: "no default setting", dickAccessory: "no default setting", aVirginDickAccessory: "no default setting", bellyAccessory: "no default setting", aVirginButtplug: "no default setting", buttplug: "no default setting", eyeColor: "no default setting", makeup: "no default setting", nails: "no default setting", hColor: "no default setting", hLength: "no default setting", hStyle: "no default setting", pubicHColor: "no default setting", pubicHStyle: "no default setting", nipplesPiercing: "no default setting", areolaePiercing: "no default setting", clitPiercing: "no default setting", vaginaLube: "no default setting", vaginaPiercing: "no default setting", dickPiercing: "no default setting", anusPiercing: "no default setting", lipsPiercing: "no default setting", tonguePiercing: "no default setting", earPiercing: "no default setting", nosePiercing: "no default setting", eyebrowPiercing: "no default setting", navelPiercing: "no default setting", corsetPiercing: "no default setting", boobsTat: "no default setting", buttTat: "no default setting", vaginaTat: "no default setting", dickTat: "no default setting", lipsTat: "no default setting", anusTat: "no default setting", shouldersTat: "no default setting", armsTat: "no default setting", legsTat: "no default setting", backTat: "no default setting", stampTat: "no default setting", curatives: "applied", livingRules: "no default setting", relationshipRules: "no default setting", standardPunishment: "no default setting", standardReward: "no default setting", diet: "no default setting", dietCum: "no default setting", dietMilk: "no default setting", muscles: "no default setting", XY: "no default setting", XX: "no default setting", gelding: "no default setting", preg: "no default setting", growth: {boobs: "no default setting", butt: "no default setting", lips: "no default setting", dick: "no default setting", balls: "no default setting"}, aphrodisiacs: "no default setting", autoSurgery: 0, autoBrand: 0, pornFameSpending: "no default setting", dietGrowthSupport: 0, eyewear: "no default setting", assignment: [], excludeAssignment: [], setAssignment: "no default setting", facility: [], excludeFacility: [], excludeSpecialSlaves: false, facilityRemove: false, removalAssignment: "rest", selectedSlaves: [], excludedSlaves: [], surgery: {eyes: "no default setting", lactation: "no default setting", prostate: "no default setting", cosmetic: "nds", accent: "no default setting", shoulders: "no default setting", shouldersImplant: "no default setting", boobs: "no default setting", hips: "no default setting", hipsImplant: "no default setting", butt: "no default setting", faceShape: "no default setting", lips: "no default setting", holes: "nds"}, underArmHColor: "no default setting", underArmHStyle: "no default setting", drug: "no default setting"}>>
 <<set $defaultRules.push(_activeRule)>>
 
 <</silently>>
diff --git a/src/uncategorized/longSlaveDescription.tw b/src/uncategorized/longSlaveDescription.tw
index 7ae95c486c997e2c05cbb50eb35bad8f80e11d54..18ae457d54a8ad55142d0395d0ce333a5b251695 100644
--- a/src/uncategorized/longSlaveDescription.tw
+++ b/src/uncategorized/longSlaveDescription.tw
@@ -370,7 +370,7 @@ She comes to you for an inspection
 <<if $clinic != 0>>
 <<if $clinicUpgradeScanner == 1>>
 <<if $activeSlave.chem > 15>>
-  $clinicNameCaps's scanners score long term damage to $possessive genome at @@.cyan;<<print Math.ceil($activeSlave.chem/10)>>@@.
+  $clinicNameCaps's scanners score long term carcinogenic buildup in $possessive body at @@.cyan;<<print Math.ceil($activeSlave.chem/10)>>@@.
 <<else>>
   $clinicNameCaps's scanners confirm that $pronoun has good prospects for long term health.
 <</if>>
@@ -1532,7 +1532,7 @@ when a dick is pushed inside <<if $activeSlave.vagina >= -1>>either of its lower
 <</if>>
 
 <<if ($showScores != 0)>>
-	<<FResult $activeSlave>>
+	<<set FResult($activeSlave)>>
 	Currently, $pronoun has an @@.pink;''attractiveness score'' of __''$beauty''__@@ and a @@.lightcoral;''sexual score'' of __''$FResult''__.@@
 <</if>>
 
diff --git a/src/uncategorized/main.tw b/src/uncategorized/main.tw
index aba97642869a2ee91977942abed2efa683ed2016..438d88128df0cc6a2154eb17c212b08b6f5da1da 100644
--- a/src/uncategorized/main.tw
+++ b/src/uncategorized/main.tw
@@ -3,7 +3,9 @@
 <<unset $Flag>>
 <<resetAssignmentFilter>>
 <<if $releaseID >= 1000 || $ver.includes("0.9") || $ver.includes("0.8") || $ver.includes("0.7") || $ver.includes("0.6")>>
-	<<if $releaseID >= 1019>>
+	<<if $releaseID >= 1022>>
+	<<elseif $releaseID >= 1019>>
+		''@@.red;INCOMPATIBILITY WARNING:@@'' your saved game was created using version $ver build $releaseID. Due to a major change to nationality weighting, you must run backwards compatiblity.
 	<<else>>
 		''@@.red;INCOMPATIBLE SAVE WARNING:@@'' your saved game was created using version $ver build $releaseID. Please select New Game Plus from the Options menu or start a new game.
 		<br><br>
diff --git a/src/uncategorized/manageArcology.tw b/src/uncategorized/manageArcology.tw
index 2d244592731ed845bc1eacb121f6635eb54451e3..feca9e882d874b16e3da3b4bbc38e41813f570e1 100644
--- a/src/uncategorized/manageArcology.tw
+++ b/src/uncategorized/manageArcology.tw
@@ -1,6 +1,6 @@
 :: Manage Arcology [nobr]
 
-<<HSM>>
+<<set $HackingSkillMultiplier = HSM()>>
 <<set $nextButton = "Back", $nextLink = "Main">>
 
 <<if $cheatMode == 1>>
diff --git a/src/uncategorized/masterSuite.tw b/src/uncategorized/masterSuite.tw
index bc565c00cac996ca7deaeefc5bd2f40481c97aa4..269403b85774b26c7d407fcc544a4769caad889e 100644
--- a/src/uncategorized/masterSuite.tw
+++ b/src/uncategorized/masterSuite.tw
@@ -294,7 +294,7 @@ $masterSuiteNameCaps is furnished
 
 <</if>>
 
-<br>$masterSuiteNameCaps has room for $masterSuite slaves to live comfortably<<if $masterSuiteUpgradeLuxury == 2>> in the moments when they're not in the fuckpit<<elseif $masterSuiteUpgradeLuxury == 1>> on its huge bed<</if>>. There are currently $masterSuiteSlaves in $masterSuiteNameCaps.
+<br>$masterSuiteNameCaps has room for $masterSuite slaves to live comfortably<<if $masterSuiteUpgradeLuxury == 2>> in the moments when they're not in the fuckpit<<elseif $masterSuiteUpgradeLuxury == 1>> on its huge bed<</if>>. There <<if $masterSuiteSlaves == 1>>is<<else>>are<</if>> currently $masterSuiteSlaves slave<<if $masterSuiteSlaves != 1>>s<</if>> in $masterSuiteNameCaps.
 <<set _Tmult0 = Math.trunc($masterSuite*1000*$upgradeMultiplierArcology)>>
 [[Expand the Master Suite|Master Suite][$cash -= _Tmult0, $masterSuite += 2, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>>//
 <<if $Concubine == 0 && $masterSuiteSlaves == 0>>
diff --git a/src/uncategorized/newSlaveIntro.tw b/src/uncategorized/newSlaveIntro.tw
index 9db679cbd95be4f5f8d66a0610436125c9429404..75c3aee55eabbf38016002ffa7925ae98ffe812c 100644
--- a/src/uncategorized/newSlaveIntro.tw
+++ b/src/uncategorized/newSlaveIntro.tw
@@ -976,7 +976,7 @@ The legalities completed, ''__@@.pink;<<SlaveFullName $activeSlave>>@@__'' <<if
 	<<link "Give her a lewd tramp stamp">>
 	<<set $activeSlave.stampTat = either("advertisements", "rude words", "degradation")>>
 	<<replace "#introResult">>
-		You <<if $activeSlave.devotion > 20>>bring her down to the studio, lay the compliant<<else>>drag her down to the studio, strap the reluctant<</if>> slave in the chair facedown, and select a sufficiently lewd pattern to decorate her lower back. When the automated tattooing is done, a topical application of analgesics leaves her with nothing more than a slight ache there. When allowed to stand, she immediately turns her back to one of the studio's full length mirrors and cranes around to read the writing just over her butt. It's difficult, since of course it's reversed, and she mouths the words letter by letter.
+		You <<if $activeSlave.devotion > 20>>bring her down to the studio, lay the compliant<<else>>drag her down to the studio, strap the reluctant<</if>> slave in the chair face-down, and select a sufficiently lewd pattern to decorate her lower back. When the automated tattooing is done, a topical application of analgesics leaves her with nothing more than a slight ache there. When allowed to stand, she immediately turns her back to one of the studio's full length mirrors and cranes around to read the writing just over her butt. It's difficult, since of course it's reversed, and she mouths the words letter by letter.
 		<<if $activeSlave.stampTat == "advertisements">>
 			She mouths, 'Fuck my ass!'
 		<<elseif $activeSlave.stampTat == "rude words">>
@@ -1211,7 +1211,6 @@ The legalities completed, ''__@@.pink;<<SlaveFullName $activeSlave>>@@__'' <<if
 		<<else>>
 			<<VaginalVCheck>>
 		<</if>>
-		<<SetPregType $activeSlave>>
 		<<if $arcologies[0].FSRestart != "unset">>
 			The Societal Elite @@.green;disapprove@@ of this breach of eugenics.
 			<<set $failedElite += 5>>
@@ -1224,11 +1223,11 @@ The legalities completed, ''__@@.pink;<<SlaveFullName $activeSlave>>@@__'' <<if
 		<</if>>
 	<</replace>>
 	<<set $activeSlave.preg = 1>>
-	<<SetPregType $activeSlave>>
-	<<set WombImpregnate($activeSlave, $activeSlave.pregType, -1, 1)>>
+	<<set $activeSlave.pregType = setPregType($activeSlave)>>
 	<<set $activeSlave.pregWeek = 1>>
 	<<set $activeSlave.pregKnown = 1>>
 	<<set $activeSlave.pregSource = -1>>
+	<<set WombImpregnate($activeSlave, $activeSlave.pregType, -1, 1)>>
 	<</link>>
 <</if>>
 <</if>>
@@ -1241,7 +1240,7 @@ The legalities completed, ''__@@.pink;<<SlaveFullName $activeSlave>>@@__'' <<if
 		<</replace>>
 		<<set $activeSlave.devotion -= 5>>
 		<<set $activeSlave.trust -= 10>>
-		<<set $activeSlave.vagina = 1>>
+		<<set $activeSlave.vaginalCount += 1>>
 		<<set $vaginalTotal += 1>>
 		<<set $activeSlave.vagina = 1>>
 	<</link>>
@@ -1251,7 +1250,7 @@ The legalities completed, ''__@@.pink;<<SlaveFullName $activeSlave>>@@__'' <<if
 		<<replace "#introResult">>
 			You cuff her wrists and ankles and secure her unresisting body to the couch next to your desk with her legs spread. She writhes and moans as you enter her virgin pussy. You might not have even had to restrain her for this, but being tied up and deflowered sends her a message. She's certainly entered your service in a way that colors her impression of you @@.hotpink;with pain@@ and @@.gold;fear.@@ @@.lime;Her tight little pussy has been broken in.@@
 		<</replace>>
-		<<set $activeSlave.devotion -= 5>>
+		<<set $activeSlave.devotion += 5>>
 		<<set $activeSlave.trust -= 10>>
 		<<set $activeSlave.vaginalCount += 1>>
 		<<set $vaginalTotal += 1>>
diff --git a/src/uncategorized/nextWeek.tw b/src/uncategorized/nextWeek.tw
index 56eb99a1751a85741e69dca73c4c9437c74e515b..913c163ed64d613d71095245a8acb7d93750c5e2 100644
--- a/src/uncategorized/nextWeek.tw
+++ b/src/uncategorized/nextWeek.tw
@@ -249,7 +249,7 @@
 <<set $events = [], $RESSevent = [], $RESSTRevent = [], $RETSevent = [], $RECIevent = [], $RecETSevent = [], $REFIevent = [], $REFSevent = [], $PESSevent = [], $PETSevent = [], $FSAcquisitionEvents = [], $FSNonconformistEvents = [], $qualifiedNicknames = [], $REAnalCowgirlSubIDs = [], $REButtholeCheckinIDs = [], $recruit = [], $RETasteTestSubIDs = [], $devotedSlaves = [], $rebelSlaves = [], $REBoobCollisionSubIDs = [], $REIfYouEnjoyItSubIDs = [], $RESadisticDescriptionSubIDs = [], $REShowerForceSubIDs = [], $RESimpleAssaultIDs = [], $RECockmilkInterceptionIDs = [], $REInterslaveBeggingIDs = [], $bedSlaves = [], $qualifiedFS = []>>
 
 /% Slave Objects using 0 instead of null. Second most memory eaten up. %/
-<<set $activeSlave = 0, $eventSlave = 0, $RERelationshipSlave = 0, $slaveWithoutBonuses = 0, $subSlave = 0, $milfSlave = 0, $milkTap = 0, $relation = 0>>
+<<set $activeSlave = 0, $eventSlave = 0, $slaveWithoutBonuses = 0, $subSlave = 0, $milfSlave = 0, $milkTap = 0, $relation = 0>>
 
 /% Slave Objects that never get zeroed so null them here. Second most memory eaten up. %/
 <<set $assayedSlave = null, $beforeGingering = null, $mother = null, $daughter = null, $devMother = null, $devDaughter = null, $alphaTwin = null, $betaTwin = null, $youngerSister = null, $olderSister = null, $recruiterMother = null, $recruiterSister = null, $sibling = null, $recruiterSlave = null>>
diff --git a/src/uncategorized/pHostageAcquisition.tw b/src/uncategorized/pHostageAcquisition.tw
index cb13e5ab92e6c07bb603a1a363f8587680e2a3a6..43868f74fbdfea8a518da38eb35eb07761e01208 100644
--- a/src/uncategorized/pHostageAcquisition.tw
+++ b/src/uncategorized/pHostageAcquisition.tw
@@ -53,7 +53,7 @@ Your hired mercenaries are en route now with your precious cargo.
 	The mercenary captain quickly gags her, "My apologies, I did warn you she was a handful. Please be careful when you unbind her, I'd hate for anything to happen to my best employer." He says, as he and his group exit your penthouse, leaving you with the enraged $activeSlave.slaveName. She looks the same as you remember, but she acts nothing like the girl you used to know. Odds are high that she'll cause problems for you in the future.
 	<</if>>
 <<case "Racial Supremacism">>
-	<<SetPregType $activeSlave>>
+	<<set $activeSlave.pregType = setPregType($activeSlave)>>
 	<<set WombInit($activeSlave)>>
 	<<if $rivalryDuration <= 5>>
 	Upon seeing you, $activeSlave.slaveName dives into your <<if $PC.boobs == 1>>ample bust<<else>>chest<</if>> sobbing "Thank you... Thank you...". You gently wrap your arms around her in a comforting embrace. She's nearly the same as you remember her, albeit acting slightly odd and covered in scars.
diff --git a/src/uncategorized/pRivalInitiation.tw b/src/uncategorized/pRivalInitiation.tw
index afdbb9bbee06717a5033c55418ba5d2dcc52624c..8333e4fc24abb97559340a39fd0605e270b575f1 100644
--- a/src/uncategorized/pRivalInitiation.tw
+++ b/src/uncategorized/pRivalInitiation.tw
@@ -52,7 +52,7 @@ This is a special week, the week of your victory. <<EventNameLink $activeSlave>>
 		<<replace "#result">>
 		You announce that since $activeSlave.slaveName damaged the arcology, she will be taking a leading role in the reconstruction. She will be doing this by replacing one of the residents killed in the violence - by bearing a new slave, to be conceived collectively. The shame and @@.mediumorchid;horror@@ of her future as breeding stock comes home to her as she's restrained in a chair with her legs spread. Soon, the stream of fluids is running down her thoroughly-fucked pussy and over her virgin anus to pool on the floor beneath her. Modern medical imaging reveals her fertile ovum's last, losing battle against a legion of sperm in real time, and the images are projected on large screens.
 		<<set $rep += 500, $activeSlave.preg = 1, $activeSlave.pregSource = -2, $activeSlave.pregKnown = 1, $activeSlave.pregWeek = 1, $activeSlave.devotion -= 15>>
-		<<SetPregType $activeSlave>>
+		<<set $activeSlave.pregType = setPregType($activeSlave)>>
 		<<set WombImpregnate($activeSlave, $activeSlave.pregType, -2, 1)>>
 		<<if $activeSlave.publicCount>><<set $activeSlave.publicCount += 47>><<else>><<set $activeSlave.publicCount = 47>><</if>>
 		<</replace>>
diff --git a/src/uncategorized/pRivalryActions.tw b/src/uncategorized/pRivalryActions.tw
index 76009942fe8afb9b62d38a8ede5a62ff9dcf254e..3b8ae930e62418aeb153d2d958a24e1623f06d72 100644
--- a/src/uncategorized/pRivalryActions.tw
+++ b/src/uncategorized/pRivalryActions.tw
@@ -495,7 +495,7 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty
 		<<case "pregnancy">>
 			take you off your birth control, won't be long after that."
 			<<set $hostage.preg = 1>>
-			<<SetPregType $hostage>>
+			<<set $hostage.pregType = setPregType($hostage)>>
 			<<set WombImpregnate($hostage, $hostage.pregType, 0, 1)>>
 			<<set $hostage.pregKnown = 1>>
 			<<set $hostage.pregWeek = 1>>
@@ -3851,26 +3851,11 @@ You remind yourself that success in this conflict will not be defined by the tra
 	<</replace>>
 <</link>>
 <<if $arcologies[0].FSRestartDecoration == 100>>
-<<if $rep >= 10000>>
+<<if $rep >= 15000>>
 <br><<link "Use your connections to throttle your rival's arcology">>
 	<<replace "#result">>
-	With every external, and several internal, supply lines severed, <<if _num < $seeDicks>>his<<else>>her<</if>> tenants are @@.green;faced with imminent destruction@@ and rise up against their hapless landlord. <<if _num < $seeDicks>>He<<else>>She<</if>> is quickly disposed in an effort to appease you.
-	<<if $rivalSet != 0>>
-	  <<for _pra = 0; _pra < $arcologies.length; _pra++>>
-		<<if $arcologies[_pra].rival == 1>>
-		  <<set $arcologies[_pra].embargo = 0>>
-		  <<set $arcologies[_pra].embargoTarget = -1>>
-		  <<set $arcologies[_pra].influenceTarget = -1>>
-		  <<set $arcologies[_pra].rival = 0>>
-		  <<set $arcologies[_pra].government = "direct democracy">>
-		  <<break>>
-		<</if>>
-	  <</for>>
-	<</if>>
-	<<if $hostageAnnounced == 1>>
-		They also present <<if _num < $seeDicks>>her<<else>>his<</if>> hostage in hopes of being released from your iron grasp.
-		<<set $hostageRescued = 1>>
-	<</if>>
+	With every external, and several internal, supply lines severed, <<if _num < $seeDicks>>his<<else>>her<</if>> tenants are faced with imminent destruction and @@.green;rise up@@ against their hapless landlord. <<if _num < $seeDicks>>He<<else>>She<</if>> will not be able to weather such a siege for long. 
+	<<set $rivalryPower += 10>>
 	<</replace>>
 <</link>>
 <br>&nbsp;&nbsp;&nbsp;&nbsp;//This option is available due to your @@.springgreen;societal connections,@@ and will economically devastate your rival//
@@ -3926,4 +3911,66 @@ You remind yourself that success in this conflict will not be defined by the tra
 <</link>>&nbsp;&nbsp;&nbsp;&nbsp;//This option is available due to your @@.springgreen;military background,@@ and will immediately end the conflict without enslaving your rival//
 <</if>>
 <</if>>
+
+<<if ($PC.hacking >= 100)>>
+<<if $mercenaries >= 3>>
+<br><<link "Lock your rival down and let your mercs walk right in.">>
+	<<replace "#result">>
+	While you hold your rival's arcology's system under your complete control. $assistantName finally reports to you in <<if $assistant == 0>>its<<else>>her<</if>> normal tones, "Team One reports
+
+		<<switch $rivalryFS>>
+		<<case "Racial Subjugationism">>Racemixer
+		<<case "Racial Supremacism">>Miscegenator
+		<<case "Repopulation Focus">>Sterilizer
+		<<case "Eugenics">>Breeder
+		<<case "Gender Radicalism">>Handholder
+		<<case "Gender Fundamentalism">>Sodomite
+		<<case "Paternalism">>Lucifer
+		<<case "Degradationism">>Archangel Prime
+		<<case "Body Purism">>Plastic Surgeon
+		<<case "Transformation Fetishism">>Purist One
+		<<case "Youth Preferentialism">>Cake Eater
+		<<case "Maturity Preferentialism">>Epheb
+		<<case "Slimness Enthusiasm">>Grower
+		<<case "Asset Expansionism">>Flat Lover
+		<<case "Pastoralism">>Gym Rat
+		<<case "Physical Idealism">>Feeder
+		<<case "Hedonistic Decadence">>Gym Rat
+		<<case "Chattel Religionism">>Cultural Marxist
+		<<case "Multiculturalism">>Prophet
+		<<default>>Target One
+		<</switch>>
+
+		<<if random(0,100) > 50>>
+			Bagged and tagged. Confirm, bagged and tagged. No
+			<<set $rivalOwner = -1>>
+		<<else>>
+			EKIA. Confirm, E. K. I. A. No other
+			<<set $rivalOwner = 0>>
+		<</if>>
+		casualties, team exfiltrating."
+		<<set $rivalryPower = 0>>
+
+		<<if $rivalSet != 0>>
+		  <<for _pra = 0; _pra < $arcologies.length; _pra++>>
+			<<if $arcologies[_pra].rival == 1>>
+			  <<set $arcologies[_pra].embargo = 0>>
+			  <<set $arcologies[_pra].embargoTarget = -1>>
+			  <<set $arcologies[_pra].influenceTarget = -1>>
+			  <<set $arcologies[_pra].rival = 0>>
+			  <<set $arcologies[_pra].government = "direct democracy">>
+			  <<break>>
+			<</if>>
+		  <</for>>
+		<</if>>
+
+	<<if $hostageAnnounced == 1>>
+		$assistantName pauses. "Also confirm package is secure."
+		<<set $hostageRescued = 1>>
+	<</if>>
+	Smirking to yourself at a job well done, you return to your usual work.
+	<</replace>>
+<</link>>&nbsp;&nbsp;&nbsp;&nbsp;//This option is available due to your @@.springgreen;your hacking mastery,@@. This will immediately end the conflict with a chance of enslaving your rival//
+<</if>>
+<</if>>
 </span>
diff --git a/src/uncategorized/persBusiness.tw b/src/uncategorized/persBusiness.tw
index 8bb9b5b2bec7810b6810511a8d94271057bdef57..f2eccd7652cdce7ba1fcc1ee23387480fdc89590 100644
--- a/src/uncategorized/persBusiness.tw
+++ b/src/uncategorized/persBusiness.tw
@@ -593,7 +593,7 @@
 	<</if>>
 	
 <<case "technical accidents">> /* needs work */
-	<<set $cash += 25000*$PC.hacking*$arcologies[0].prosperity, _X = 0>>
+	<<set _windfall = (150*$PC.hacking)+random(100,2500), _X = 0>>
 	<<if $PC.hacking == -100>>
 		<<set _Catchtchance = 10>>
 	<<elseif $PC.hacking <= -75>>
@@ -613,7 +613,24 @@
 	<<elseif $PC.hacking >= 100>>
 		<<set _Catchtchance = 100>>
 	<</if>>
-	This week your technical accidents for the highest bidder earned you @@.yellowgreen;<<print cashFormat(25000*$PC.hacking*$arcologies[0].prosperity)>>.@@ <<if random(0,100) > _Catchtchance>> however as you were traced your <<if $secExp == 1>> <<set _X = 1>> @@.red;authority@@, <<set $authority -= random(100,500)>> @@.red;crime rate@@ <<set $crime += random(10,25)>> and<</if>> @@.red;reputation@@ <<set $rep -= random (100,500)>> <<if _X != 1>> has <<else>> have<</if>> been affected <</if>>.
+	This week your services to the highest bidder earned you @@.yellowgreen;<<print cashFormat(_windfall)>>.@@ 
+	<<if random(0,100) >= _Catchtchance>> 
+		however, since the source of the attack was traced back to your archology your 
+		<<if $secExp == 1>> <<set _X = 1>> 
+			@@.red;authority@@, <<set $authority -= random(100,500)>> @@.red;crime rate@@ <<set $crime += random(10,25)>> and
+		<</if>> 
+		@@.red;reputation@@ <<set $rep -= random (100,500)>> 
+		<<if _X != 1>> 
+			has 
+		<<else>> 
+			have all
+		<</if>> 
+		been negatively affected.
+	<</if>>
+	<<if $PC.hacking < 100>>
+		<<set $PC.hacking += .5>>
+	<</if>>
+	<<set $cash += _windfall>>
 
 <</switch>>
 <</if>>
diff --git a/src/uncategorized/personalAssistantOptions.tw b/src/uncategorized/personalAssistantOptions.tw
index 779757d38eccec404f572f6e0e061bc049ec6750..18670cfb1b13a8e92435aadb98cecf0e16776bbd 100644
--- a/src/uncategorized/personalAssistantOptions.tw
+++ b/src/uncategorized/personalAssistantOptions.tw
@@ -1,6 +1,6 @@
 :: Personal assistant options [nobr]
 
-<<HSM>>
+<<set $HackingSkillMultiplier = HSM()>>
 <<set $nextButton = "Back", $nextLink = "Main">>
 
 <<if $marketAssistantLimit>><<set $marketAssistantLimit to Math.clamp($marketAssistantLimit, 10000, 10000000)>><</if>>
diff --git a/src/uncategorized/personalAttentionSelect.tw b/src/uncategorized/personalAttentionSelect.tw
index a7be0dd814a285a9437fd581fefe66de3663451d..56d5ee4abf2c95fa6c7d71673d2cf41b688d9a0a 100644
--- a/src/uncategorized/personalAttentionSelect.tw
+++ b/src/uncategorized/personalAttentionSelect.tw
@@ -11,6 +11,9 @@
 	<<if $PC.career == "gang">>
 		| [[Help people "pass" things around|Main][$personalAttention = "smuggling"]]
 	<</if>>
+	<<if $PC.hacking > 25>>
+		<br>[[Sell your intrusion services to the highest bidder|Main][$personalAttention = "technical accidents"]]
+	<</if>>
 <</if>>
 <<if $HeadGirl != 0>>
 	<br>[[Support your Head Girl|Main][$personalAttention = "HG"]]
@@ -147,7 +150,7 @@
 	<</if>>
 <</if>>
 <</if>>
-<<if $PC.actualAge >= $IsInPrimePC && $PC.actualAge < $IsPastPrimePC && ($PC.medicine < 100 || $PC.engineering < 100 || $PC.slaving < 100 || $PC.warfare < 100 || $PC.trading < 100 || $PC.hacking < 100 )>><br>//Training will cost <<print cashFormat(_cost)>> per week.//<</if>>
+<<if $PC.actualAge >= $IsInPrimePC && $PC.actualAge < $IsPastPrimePC && ($PC.medicine < 100 || $PC.engineering < 100 || $PC.slaving < 100 || $PC.warfare < 100 || $PC.trading < 100 || $PC.hacking < 100)>><br>//Training will cost <<print cashFormat(_cost)>> per week.//<</if>>
 <br><br>
 
 <<if typeof $personalAttention != "object" || $personalAttention.length == 0>>
diff --git a/src/uncategorized/randomIndividualEvent.tw b/src/uncategorized/randomIndividualEvent.tw
index 5bb5f42d5d62d0e37f164374fdfd75ee1a83e484..f73a5204873c4290068c8f157e90659ebbabd802 100644
--- a/src/uncategorized/randomIndividualEvent.tw
+++ b/src/uncategorized/randomIndividualEvent.tw
@@ -31,7 +31,6 @@
 
 /* SUB CHECKS */
 
-<<set $RERelationshipSlave = 0>>
 <<set $REAnalCowgirlSubIDs = [], $RETasteTestSubIDs = [], $RESimpleAssaultIDs = [], $REInterslaveBeggingIDs = [], $RECockmilkInterceptionIDs = [], $REShowerForceSubIDs = [], $RESadisticDescriptionSubIDs = [], $REIfYouEnjoyItSubIDs = [], $REBoobCollisionSubIDs = [], $RERepressedAnalVirginSubIDs = []>>
 
 <<for $i = 0; $i < $slaves.length; $i++>>
diff --git a/src/uncategorized/reBoomerang.tw b/src/uncategorized/reBoomerang.tw
index 4fba34e6719a2dab81a914c48a7b16c20234221f..ce9114cfc9e33c58f71de23604681e26856174bf 100644
--- a/src/uncategorized/reBoomerang.tw
+++ b/src/uncategorized/reBoomerang.tw
@@ -381,6 +381,21 @@ It isn't obvious how she managed to escape, though no doubt you could review the
 			<</for>>
 		<</if>>
 	<<else>>
+		<<if $boomerangStats.boomerangRelation > 0>>
+			<<set _reb = $slaves.findIndex(function(s) { return s.ID == $boomerangStats.boomerangRelation; })>>
+			<<if _reb != -1>>
+				<<if $activeSlave.relation == "mother">>
+					<<set $slaves[_reb].relation = "daughter">>
+				<<elseif $activeSlave.relation == "daughter">>
+					<<set $slaves[_reb].relation = "mother">>
+				<<else>>
+					<<set $slaves[_reb].relation = $activeSlave.relation>>
+				<</if>>
+				<<set $slaves[_reb].relationshipTarget = $activeSlave.ID>>
+			<<else>>
+				<<set $activeSlave.relation = 0, $activeSlave.relationTarget = 0>>
+			<</if>>
+		<</if>>
 		<<if $boomerangStats.boomerangPregSources.length > 0>>
 			<<for _reb = 0; _reb < $slaves.length; _reb++>>
 				<<if $boomerangStats.boomerangPregSources.includes($slaves[_reb].ID) && $slaves[_reb].preg > 0 && $slaves[_reb].pregSource == 0>>
@@ -389,6 +404,22 @@ It isn't obvious how she managed to escape, though no doubt you could review the
 			<</for>>
 		<</if>>
 	<</if>>
+	<<if $boomerangStats.boomerangRelationship > 0>>
+		<<set _reb = $slaves.findIndex(function(s) { return s.ID == $boomerangStats.boomerangRelationship; })>>
+		<<if _reb != -1>>
+			<<set $slaves[_reb].relationship = $activeSlave.relationship, $slaves[_reb].relationshipTarget = $activeSlave.ID>>
+		<<else>>
+			<<set $activeSlave.relationship = 0, $activeSlave.relationshipTarget = 0>>
+		<</if>>
+	<</if>>
+	<<if $boomerangStats.boomerangRivalry > 0>>
+		<<set _reb = $slaves.findIndex(function(s) { return s.ID == $boomerangStats.boomerangRivalry; })>>
+		<<if _reb != -1>>
+			<<set $slaves[_reb].rivalry = $activeSlave.rivalry, $slaves[_reb].rivalryTarget = $activeSlave.ID>>
+		<<else>>
+			<<set $activeSlave.rivalry = 0, $activeSlave.rivalryTarget = 0>>
+		<</if>>
+	<</if>>
 	<<set $boomerangStats = 0>>
 	<<replace "#result">>
 		The penthouse opens, and $activeSlave.slaveName stumbles inside, sobbing her thanks. She's immediately conducted to the autosurgery for some quick cosmetic surgery, while you and $assistantName do the necessary work to falsify the arcology records and conceal her origins. Even so, it would probably be wise to keep her off public assignments for a while. In no time at all, she's standing in front of your desk like any other new slave. She waits obediently, knowing that it's in her best interests not to mention anything out of the ordinary.
diff --git a/src/uncategorized/reNickname.tw b/src/uncategorized/reNickname.tw
index e16987f6f878fc7b00d31965a33622d3e3ed6476..f7715900cdeec4757623b52c050ef6c658af7ac3 100644
--- a/src/uncategorized/reNickname.tw
+++ b/src/uncategorized/reNickname.tw
@@ -251,6 +251,8 @@
 		<<set $nickname = either("'Burger'", "'Chicago'", "'Hollywood'", "'Lady Liberty'", "'Lone Star'", "'New York'", "'Washington'", "'Yankee'", "'Stars & Stripes'", "'Yankee'", "'California'", "'Septic'", "'Trump'")>>
 	<<case "Andorran">>
 		<<set $nickname = either("'Ski Trip'", "'Skossyreff'")>>
+	<<case "Angolan">>
+		<<set $nickname to either("'Cabinda'", "'Luanda'")>>
 	<<case "Antiguan">>
 		<<set $nickname = either("'Barbuda'", "'Redonda'")>>
 	<<case "Argentinian">>
@@ -274,27 +276,33 @@
 	<<case "Barbadian">>
 		<<set $nickname = either("'Bajan'", "'Bridgetown'", "'Sugar Cane'")>>
 	<<case "Belarusian">>
-		<<set $nickname = either("'Minsk'", "'Stalker'", "'Shlyukha'", "'White Russian'", "'Bulbash'")>>
+		<<set $nickname = either("'Bulbash'", "'Minsk'", "'Shlyukha'", "'Å liucha'", "'Stalker'", "'White Russian'")>>
 	<<case "Belgian">>
 		<<set $nickname = either("'Antwerp'", "'Brussels'", "'Sprout'", "'Straatmeid'", "'Truttemie'", "'Waffles'")>>
 	<<case "Belizean">>
 		<<set $nickname = either("'Belmopan'", "'Great Blue Hole'")>>
+	<<case "Beninese">>
+		<<set $nickname to either("'Cotonou'", "'Dahomey'", "'Porto-Novo'")>>
 	<<case "Bermudian">>
 		<<set $nickname = either("'Bermuda Triangle'", "'Hamilton'")>>
 	<<case "Bhutanese">>
 		<<set $nickname = either("'Druk'", "'Thimphu'")>>
+	<<case "Bissau-Guinean">>
+		<<set $nickname to either("'Bissau'", "'Bolama'", "'Kriol'")>>
 	<<case "Bolivian">>
-		<<set $nickname = either("'La Paz'", "'Titicaca'")>>
+		<<set $nickname = either("'La Paz'", "'Sucre'", "'Titicaca'")>>
 	<<case "Bosnian">>
 		<<set $nickname = either("'Herzegovina'", "'Sarajevo'")>>
 	<<case "Brazilian">>
 		<<set $nickname = either("'7-1'", "'Bunda'", "'Dago'", "'Favelada'", "'Hue'", "'Ipanema'", "'Monkey'", "'São Paulo'", "'Zika'", "'Bauru'","'Carmen Miranda'")>>
 	<<case "British">>
-		<<set $nickname = either("'Britbong'", "'Chav'", "'Fish'n'Chips'", "'Limey'", "'London'", "'Pikey'", "'Pommie'", "'Rosbif'", "'Scrubber'", "'Slag'", "'Slapper'", "'Brexit'")>>
+		<<set $nickname = either("'Brit'", "'Britbong'", "'Chav'", "'Fish'n'Chips'", "'Limey'", "'London'", "'Pikey'", "'Pommie'", "'Rosbif'", "'Scrubber'", "'Slag'", "'Slapper'", "'Brexit'")>>
 	<<case "Bruneian">>
 		<<set $nickname = either("'Abode of Peace'", "'Bandar Seri Begawan'")>>
 	<<case "Bulgarian">>
 		<<set $nickname = either("'Sofia'", "'Zhivkov'")>>
+	<<case "Burkinabé">>
+		<<set $nickname to either("'Ouagadougou'", "'Upper Volta'")>>
 	<<case "Burmese">>
 		<<set $nickname = either("'Burma Shave'", "'Burmese Python'", "'Golden Triangle'", "'Rangoon'")>>
 	<<case "Burundian">>
@@ -305,14 +313,24 @@
 		<<set $nickname = either("'Douala'", "'Yaoundé'")>>
 	<<case "Canadian">>
 		<<set $nickname = either("'Canuck'", "'Loonie'", "'Maple Syrup'", "'Mountie'", "'Poutine'", "'Quebec'", "'Toronto'", "'Vancouver'", "'Yukon'")>>
+	<<case "Cape Verdean">>
+		<<set $nickname to either("'Cabo Verde'", "'Praia'")>>
+	<<case "Catalan">>
+		<<set $nickname to either("'Barcelona'", "'Castell'", "'Senyera'")>>
+	<<case "Central African">>
+		<<set $nickname to either("'Bangui'", "'Bokassa'")>>
+	<<case "Chadian">>
+		<<set $nickname to either("'Chad'", "'Habré'", "'N'Djamena'", "'Tombalbaye'")>>
 	<<case "Chilean">>
 		<<set $nickname = either("'Chela'", "'Pinochet'", "'Santiago'", "'Toya'")>>
 	<<case "Chinese">>
 		<<set $nickname = either("'Beijing'", "'Dim Sum'", "'Dragon'", "'Empress'", "'Guangzhou'", "'Kung Fu'", "'Lead Toys'", "'Lotus'", "'Made in China'", "'Manchu'", "'Nanking'", "'Renmenbi'", "'Shanghai'")>>
 	<<case "Colombian">>
 		<<set $nickname = either("'Bogotá'", "'Cafetera'", "'Coca'", "'Crystal'", "'FARC'", "'Pablita Escobar'")>>
+	<<case "Comorian">>
+		<<set $nickname to either("'Karthala'", "'Mayotte'", "'Moroni'")>>
 	<<case "Congolese">>
-		<<set $nickname = either("'Bongo'", "'Diamond'", "'Ebola'")>>
+		<<set $nickname = either("'Brazzaville'", "'Ngouabi'", "'Nguesso'")>>
 	<<case "a Cook Islander">>
 		<<set $nickname = either("'Avarua'", "'Rarotonga'")>>
 	<<case "Costa Rican">>
@@ -330,7 +348,7 @@
 	<<case "Djiboutian">>
 		<<set $nickname = either("'Ifat'", "'Tadjoura'")>>
 	<<case "Dominican">>
-		<<set $nickname = either("'Taíno'", "'Caribbean'", "'Domingo'", "'Palo'", "'Trinitaria'")>>
+		<<set $nickname = either("'Caribbean'", "'Domingo'", "'Palo'", "'Santo Domingo'", "'Taíno'", "'Trinitaria'")>>
 	<<case "Dominiquais">>
 		<<set $nickname = either("'Red Dog'", "'Roseau'")>>
 	<<case "Dutch">>
@@ -343,6 +361,10 @@
 		<<set $nickname = either("'Cairo'", "'Cleopatra'", "'Misirlou'", "'Sinai'", "'Sphinx'", "'Suez'")>>
 	<<case "Emirati">>
 		<<set $nickname = either("'Abu Dhabi'", "'Bedouin'", "'Dubai'")>>
+	<<case "Equatoguinean">>
+		<<set $nickname to either("'Bata'", "'Malabo'", "'Nguema'", "'Oyala'")>>
+	<<case "Eritrean">>
+		<<set $nickname to either("'Asmara'", "'Punt'")>>
 	<<case "Estonian">>
 		<<set $nickname = either("'Baltic'", "'Eesti'", "'Tallinn'")>>
 	<<case "Ethiopian">>
@@ -357,8 +379,12 @@
 		<<set $nickname = either("'Belle'", "'Fille de Joie'", "'Mademoiselle'", "'Marseille'", "'Paris'", "'Surrender Monkey'", "'Charlie Hebdo'")>>
 	<<case "French Guianan">>
 		<<set $nickname = either("'Cayenne'", "'ÃŽle du Diable'")>>
+	<<case "French Polynesian">>
+		<<set $nickname to either("'Fangataufa'", "'Moruroa'", "'Papeete'", "'Tahiti'")>>
 	<<case "Gabonese">>
 		<<set $nickname = either("'Bongo'", "'Libreville'")>>
+	<<case "Gambian")>>
+		<<set $nickname to either("'Banjul'", "'Serekunda'")>>
 	<<case "Georgian">>
 		<<set $nickname = either("'Kutaisi'", "'Tbilisi'")>>
 	<<case "German">>
@@ -372,13 +398,15 @@
 	<<case "Grenadian">>
 		<<set $nickname = either("'Grenada Dove'", "'Urgent Fury'", "'Woolie'")>>
 	<<case "Guatemalan">>
-		<<set $nickname = either("'Guatemalan'", "'Mayan'")>>
+		<<set $nickname = either("'Chapín'", "'Guatemalan'", "'Mayan'")>>
+	<<case "Guinean">>
+		<<set $nickname to either("'Bauxite'", "'Conakry'", "'Toure'")>>
 	<<case "Guyanese">>
 		<<set $nickname = either("'Georgetown'", "'Hoatzin'")>>
 	<<case "Haitian">>
-		<<set $nickname = either("'Maîtresse'", "'Mama Doc'", "'Maman'", "'Voodoo'")>>
+		<<set $nickname = either("'Maîtresse'", "'Mama Doc'", "'Maman'", "'Port-au-Prince'", "'Voodoo'")>>
 	<<case "Honduran">>
-		<<set $nickname = either("'Anchuria'", "'Tegucigalpa'")>>
+		<<set $nickname = either("'Anchuria'", "'Catracho'", "'Tegucigalpa'")>>
 	<<case "Hungarian">>
 		<<set $nickname = either("'Budapest'", "'Magyar'", "'Szuka'")>>
 	<<case "I-Kiribati">>
@@ -399,8 +427,10 @@
 		<<set $nickname = either("'God's Chosen'", "'Hebrew'", "'Levantine'", "'Tel Aviv'", "'Merchant'", "'Oven Dodger'", "'Shiksa'", "'Sharmuta'", "'Shekels'")>>
 	<<case "Italian">>
 		<<set $nickname = either("'Bologna'", "'Greaseball'", "'Latin'", "'Napoli'", "'Renaissance'", "'Rome'", "'Salami'", "'Sicilian'", "'Spaghetti'", "'Terrone'", "'Wop'")>>
+	<<case "Ivorian">>
+		<<set $nickname to either("'Abidjan'", "'Ivory'", "'Yamoussoukro'")>>
 	<<case "Jamaican">>
-		<<set $nickname = either("'Kingston'", "'Kush'", "'Rasta'", "'Reggae'", "'West Indies'")>>
+		<<set $nickname = either("'Kingston'", "'Kush'", "'Rasta'", "'Reggae'", "'West Indies'", "'Yardie'")>>
 	<<case "Japanese">>
 		<<set $nickname = either("'Anime'", "'Banzai'", "'Bishoujo'", "'Fukushima'", "'Geisha Girl'", "'Hello Kitty'", "'Hiroshima'", "'Hokkaido'", "'Ichiban'", "'Kamikaze'", "'Kawasaki'", "'Kyoto'", "'Kyushu'", "'Nagano'", "'Nagasaki'", "'Nipponese'", "'Osaka'", "'Sushi'", "'Tempura'", "'Tokyo'", "'Wasabi'", "'Yakuza'", "'Yamaha'", "'Yamato Nadeshiko'")>>
 	<<case "Jordanian">>
@@ -415,6 +445,8 @@
 		<<set $nickname = either("'Dokdo'", "'Gangnam'", "'K-Pop'", "'Kimchi'", "'Nida'", "'Pyongyang'", "'Samsung'", "'Seoul'")>>
 	<<case "Kosovan">>
 		<<set $nickname = either("'Kosovar'", "'Pristina'")>>
+	<<case "Kurdish">>
+		<<set $nickname to either("'Ararat'", "'Kurd'", "'Mahabad'")>>
 	<<case "Kuwaiti">>
 		<<set $nickname = either("'Burgan'", "'Gulf War'")>>
 	<<case "Kyrgyz">>
@@ -425,6 +457,8 @@
 		<<set $nickname = either("'Livonia'", "'Riga'")>>
 	<<case "Lebanese">>
 		<<set $nickname = either("'Beirut'", "'Cedar'", "'Druze'", "'Lebo'", "'Maronite'", "'Phoenician'")>>
+	<<case "Liberian">>
+		<<set $nickname to either("'Monrovia'", "'Taylor'")>>
 	<<case "Libyan">>
 		<<set $nickname = either("'Cyrene'", "'Gaddafi'", "'Silphium'", "'Tripoli'", "'Zenga Zenga'")>>
 	<<case "a Liechtensteiner">>
@@ -437,6 +471,8 @@
 		<<set $nickname = either("'Sarissa'", "'Skopje'")>>
 	<<case "Malagasy">>
 		<<set $nickname = either("'Antananarivo'", "'Lemur'")>>
+	<<case "Malawian">>
+		<<set $nickname to either("'Lilongwe'", "'Warm Heart of Africa'")>>
 	<<case "Malaysian">>
 		<<set $nickname = either("'Kuala Lumpur'", "'Malay Girl'", "'Pirate'")>>
 	<<case "Maldivian">>
@@ -447,6 +483,10 @@
 		<<set $nickname = either("'Maltese Falcon'", "'Valletta'")>>
 	<<case "Marshallese">>
 		<<set $nickname = either("'Bikini Atoll'", "'Majuro'")>>
+	<<case "Mauritanian">>
+		<<set $nickname to either("'Coppolani'", "'Nouakchott'")>>
+	<<case "Mauritian">>
+		<<set $nickname to either("'Dodo'", "'Port Louis'")>>
 	<<case "Mexican">>
 		<<set $nickname = either("'Azteca'", "'Beaner'", "'Burrito'", "'Cartel'", "'Chiquita'", "'Fence Hopper'", "'Headless'", "'Juarez'", "'Malinche'", "'Mamacita'", "'Senorita'", "'Sinaloa'", "'Taco'", "'Tijuana'", "'Wetback'")>>
 	<<case "Micronesian">>
@@ -461,6 +501,14 @@
 		<<set $nickname = either("'Black Mountain'", "'Podgorica'")>>
 	<<case "Moroccan">>
 		<<set $nickname = either("'Casablanca'", "'Rabat'")>>
+	<<case "Mosotho">>
+        <<set $nickname to either("'Maseru'", "'Moshoeshoe'")>>
+	<<case "Motswana">>
+		<<set $nickname to either("'Gaborone'", "'Kalahari'")>>
+	<<case "Mozambican">>
+		<<set $nickname to either("'Lourenço Marques'", "'Maputo'")>>
+	<<case "Namibian">>
+		<<set $nickname to either("'Namib'", "'Windhoek'")>>
 	<<case "Nauruan">>
 		<<set $nickname = either("'Phosphate'", "'Pleasant Island'")>>
 	<<case "Nepalese">>
@@ -507,6 +555,10 @@
 		<<set $nickname = either("'Bucharest'", "'Ceausescu'", "'Dracula'", "'Gypsy'", "'Impaler'", "'Orphan'", "'Roma'")>>
 	<<case "Russian">>
 		<<set $nickname = either("'Commie'", "'Suka'", "'Suchka'", "'Moscow'", "'Moskal'", "'Red Banner'", "'Russkie'", "'Siberian Kitten'", "'Slav'", "'Suka'", "'Tovarish'", "'Tsaritsa'", "'Vodka'", "'Sickle & Hammer'", "'Bolshevik'", "'Kacap'", "'Shlyukha'")>>
+	<<case "Rwandan">>
+		<<set $nickname to either("'Hotel Rwanda'", "'Kigali'")>>
+	<<case "Sahrawi">>
+		<<set $nickname to either("'El-Aaiún'", "'Tifariti'", "'Western Saharan'")>>
 	<<case "Saint Lucian">>
 		<<set $nickname = either("'Castries'", "'Helen of the West Indies'")>>
 	<<case "Salvadoran">>
@@ -515,14 +567,20 @@
 		<<set $nickname = either("'Saint Marinus'", "'Three Towers'")>>
 	<<case "Samoan">>
 		<<set $nickname = either("'Apia'", "'Navigator'")>>
+	<<case "São Toméan">>
+		<<set $nickname to either("'Príncipe'", "'Roças'")>>
 	<<case "Saudi">>
-		<<set $nickname = either("'Burqua'", "'Mecca'", "'Riyadh'", "'Sandy'", "'Al Qaeda'")>>
+		<<set $nickname = either("'Burqa'", "'Mecca'", "'Riyadh'", "'Sandy'", "'Al Qaeda'")>>
 	<<case "Scottish">>
 		<<set $nickname = either("'Braveheart'", "'Edinburgh'", "'Glasgow'", "'Nessie'", "'Endinburg'", "'Ned'", "'Hadrian'", "'Unicorn'", "'Lass'")>>
+	<<case "Senegalese">>
+		<<set $nickname to either("'Dakar'", "'Our Boat'", "'Wolof'")>>
 	<<case "Serbian">>
 		<<set $nickname = either("'Belgrade'", "'Picka'", "'Remove Kebab'")>>
 	<<case "Seychellois">>
 		<<set $nickname = either("'Seabird'", "'Victoria'")>>
+	<<case "Sierra Leonean">>
+		<<set $nickname to either("'Blood Diamond'", "'Freetown'")>>
 	<<case "Singaporean">>
 		<<set $nickname = either("'Bedok'", "'Merlion'")>>
 	<<case "Slovak">>
@@ -531,6 +589,8 @@
 		<<set $nickname = either("'Ljubljana'", "'Prince's Stone'")>>
 	<<case "a Solomon Islander">>
 		<<set $nickname = either("'Guadalcanal'", "'Honiara'")>>
+	<<case "Somali">>
+		<<set $nickname to either("'Black Hawk Down'", "'Mogadishu'", "'The Captain Now'")>>
 	<<case "South African">>
 		<<set $nickname = either("'Afrikaner'", "'Apartheid'", "'Cape Town'", "'Johannesburg'", "'Saffer'", "'Shaka'", "'Springbok'", "'Boer'")>>
 	<<case "Spanish">>
@@ -541,6 +601,8 @@
 		<<set $nickname = either("'Gordon's Revenge'", "'Khartoum'", "'Nubian'", "'Omdurman'")>>
 	<<case "Surinamese">>
 		<<set $nickname = either("'Bouterse'", "'Paramaribo'")>>
+	<<case "Swazi">>
+		<<set $nickname to either("'Eswatini'", "'Mbabane'")>>
 	<<case "Swedish">>
 		<<set $nickname = either("'Ikea'", "'Norse'", "'Stockholm'", "'Sweden Yes'")>>
 	<<case "Swiss">>
@@ -555,6 +617,10 @@
 		<<set $nickname = either("'Dar es Salaam'", "'Dodoma'", "'Wilderness'", "'Zanzibar'")>>
 	<<case "Thai">>
 		<<set $nickname = either("'Bangcock'", "'Bangkok'", "'Ladyboy'", "'Pattaya'", "'T-Girl'")>>
+	<<case "Tibetan">>
+		<<set $nickname to either("'Dalai Lama'", "'Himalayan'", "'Lhasa'")>>
+	<<case "Togolese">>
+		<<set $nickname to either("'Lomé'", "'Togoland'")>>
 	<<case "Tongan">>
 		<<set $nickname = either("'Friendly'", "'Nuku'alofa'")>>
 	<<case "Trinidadian">>
@@ -585,6 +651,8 @@
 		<<set $nickname = either("'Kingstown'", "'Vincy'")>>
 	<<case "Yemeni">>
 		<<set $nickname = either("'Khat'", "'Red Sea Pirate'", "'Queen of the Desert'")>>
+	<<case "Zairian">>
+		<<set $nickname to either("'Bongo'", "'Diamond'", "'Ebola'", "'Kinshasa'")>>
 	<<case "Zambian">>
 		<<set $nickname = either("'Livingstone'", "'Lusaka'", "'Victoria Falls'")>>
 	<<case "Zimbabwean">>
@@ -1121,4 +1189,3 @@
 </span>
 
 <</if>> /* closes $qualifiedNicknames.length > 0 */
-
diff --git a/src/uncategorized/reStaffedMorning.tw b/src/uncategorized/reStaffedMorning.tw
index 6b5485db2ebb1ab1675a447db0d8551064db49ed..65871b58957d2c132c95cb49316f89d1a4fae260 100644
--- a/src/uncategorized/reStaffedMorning.tw
+++ b/src/uncategorized/reStaffedMorning.tw
@@ -26,7 +26,7 @@ The bathroom door is open and the shower is running. Though the steam is beginni
 	<<if $PC.dick == 1>>
 		You begin to thrust gently into _bedSlaves[0].slaveName's mouth. The girls moan and giggle into you at the signal that you're not going to get up right this instant, and <<if (_bedSlaves[0].dick > 0) && (_bedSlaves[1].dick > 0)>>start jerking each other off harder, making lewd noises and humping each other's hands<<else>>really start giving each other proper handjobs, jerking around lewdly as their arousal builds<</if>>.<<if $PC.vagina == 1>> They always spare at least one hand for your cunt, despite your thrusting.<</if>> When you climax, they do, too, one after the other. They quickly switch mouth positions and suck you back to full mast so you can enjoy your shower.
 	<<else>>
-		You reach down and run a possessive hand across each slave's scalp, neck, and back, eliciting shivers. Then, you gently hook them under the armpits and pull them up a bit, without breaking their lip locks with your nipples, or forcing them to stop playing with your cunt. Each slave ends curled up, mostly facedown, with their mouths still sucking on your <<if $PC.boobs == 1>>boobs<<else>>chest<</if>> and their free hands trapped between their legs. They get the message and begin to look after themselves, too; their resultant moaning against your nipples grows when you reach down and start teasing their butts. The three of you climax more or less together, and you bounce up with undiminished arousal to enjoy your shower.
+		You reach down and run a possessive hand across each slave's scalp, neck, and back, eliciting shivers. Then, you gently hook them under the armpits and pull them up a bit, without breaking their lip locks with your nipples, or forcing them to stop playing with your cunt. Each slave ends curled up, mostly face-down, with their mouths still sucking on your <<if $PC.boobs == 1>>boobs<<else>>chest<</if>> and their free hands trapped between their legs. They get the message and begin to look after themselves, too; their resultant moaning against your nipples grows when you reach down and start teasing their butts. The three of you climax more or less together, and you bounce up with undiminished arousal to enjoy your shower.
 	<</if>>
 	<br><br>
 	By now, the shower is an impenetrable fog of steam. The wet, soapy bodies inside are easy to find, though. _bedSlaves[2].slaveName happens to be closest, so you
@@ -73,7 +73,7 @@ The bathroom door is open and the shower is running. Though the steam is beginni
 	<<else>>
 		Next to the neat stack of clothes, the two slaves are bent over the bed with their buttocks spread. They're perfectly still, awaiting your pleasure. You select _bedSlaves[1].slaveName and ram your strap-on up her <<if _bedSlaves[1].anus > 2>>welcoming asspussy<<elseif _bedSlaves[1].anus > 1>>soft butthole<<else>>tight anus<</if>>, assraping her without mercy while _bedSlaves[0].slaveName helps you into your top. When it's done, you push her down next to _bedSlaves[1].slaveName and switch assholes, letting _bedSlaves[1].slaveName up to do her best to dress your lower half. When _bedSlaves[0].slaveName has been buttfucked into helplessness, you throw her away like the human sex toy she is and pound _bedSlaves[1].slaveName and then the dried-off _bedSlaves[3].slaveName and _bedSlaves[2].slaveName senseless, careful to frequently pull far enough out that the slaves have to take the pain of initial penetration again.
 	<</if>>
-	When you finally leave the suite, all four slaves are lying like discarded tissues on the bed, facedown with their buttocks spread to relieve their sore assholes. @@.hotpink;Your fucktoys are reminded of who you are.@@
+	When you finally leave the suite, all four slaves are lying like discarded tissues on the bed, face-down with their buttocks spread to relieve their sore assholes. @@.hotpink;Your fucktoys are reminded of who you are.@@
 	<<set $slaves.forEach(function(s) { if ([_bedSlaves[0].ID, _bedSlaves[1].ID, _bedSlaves[2].ID, _bedSlaves[3].ID].includes(s.ID)) { s.devotion += 4, s.analCount += 1, s.oralCount += 1; } })>>
 	<<set $analTotal += 4, $oralTotal += 4>>
 <</replace>>
diff --git a/src/uncategorized/recETSWorkaround.tw b/src/uncategorized/recETSWorkaround.tw
index 9b2174b955a3c39c709745dec9b96e121d0af6f6..3e4fdcb9d39cceb24d7be344db63e5b635fa7426 100644
--- a/src/uncategorized/recETSWorkaround.tw
+++ b/src/uncategorized/recETSWorkaround.tw
@@ -435,7 +435,7 @@ The father hugs his son tight and slips a hand down his pants. They ought to be
 <<set $activeSlave.visualAge = $activeSlave.actualAge>>
 <<set $activeSlave.ovaryAge = $activeSlave.actualAge>>
 <<ResyncHeight $activeSlave>>
-<<set $activeSlave.vagina = 0>>
+<<set $activeSlave.vagina = -1>>
 <<if $activeSlave.actualAge < $potencyAge>>
 	<<set $activeSlave.pubertyXY = 0>>
 <</if>>
@@ -647,3 +647,10 @@ You turn to the child clutching her mother's grotesque belly.
 <<set $activeSlave.birthSurname = _familyBirthSurname>>
 
 <<AddSlave $activeSlave>>
+
+<<switch $RecETSevent>>
+	<<case "incest mother son" "incest father daughter" "incest brother sister" "incest sister sister" "incest brother brother" "incest mother daughter" "incest father son" "incest twin sister" "incest twins mixed" "incest twin brother">>
+		<<include "newSlaveIncestSex">>
+	<<default>>
+		/* do nothing */
+<</switch>>
diff --git a/src/uncategorized/remoteSurgery.tw b/src/uncategorized/remoteSurgery.tw
index 51f638e0af1e42fa2532ea69b297b63d14b824a6..6a20cb58d965d87b7e129d446e97eae58e9a3fed 100644
--- a/src/uncategorized/remoteSurgery.tw
+++ b/src/uncategorized/remoteSurgery.tw
@@ -766,7 +766,7 @@ Work on her sex:
 		<<if $activeSlave.womb.length == 0 >>
 			[[Remove a pregnancy generator|Surgery Degradation][$activeSlave.preg = 0,$activeSlave.pregWeek = -2,$activeSlave.pregSource = 0,$activeSlave.pregWeek = 0,$activeSlave.pregKnown = 0,$activeSlave.pregType = 0,$activeSlave.broodmother = 0,$activeSlave.broodmotherFetuses = 0,$activeSlave.broodmotherOnHold = 0,$cash -= $surgeryCost,$activeSlave.pregControl = "none",$activeSlave.health -= 10,$surgeryType = "pregRemove"]] 
 		<<else>>
-			$possessiveCap is pregnant right now, so her broodmother implant can't be safely extracted.
+			$pronounCap is pregnant right now, so $possessive broodmother implant can't be safely extracted.
 		<</if>>
 	<</if>>
 <</if>>
diff --git a/src/uncategorized/resSale.tw b/src/uncategorized/resSale.tw
index 2e771c94fde5df3a4575c4a250de91983513405a..798ddd1882243fc483171ecf6d8de1d51f6d0cd8 100644
--- a/src/uncategorized/resSale.tw
+++ b/src/uncategorized/resSale.tw
@@ -61,7 +61,7 @@ You pause for a moment, and she plunges on: "<<if $PC.title == 1>>Sir<<else>>Ma'
 <<elseif $RESSale == "TGA">>
 	My tutelage has been long and hard, and I'm very eager to begin my life as a slave." She's nude, and stands up to reveal her hardon. She spins for the camera, showing herself off. "I can help protect you, too: I'm proficient in unarmed combat, and I have weapons training. I would love to be your bitch, or your bodyguard, <<if $PC.title == 1>>Sir<<else>>Ma'am<</if>>," she says, doing her very best to sound appealing, like she's been told.
 <<elseif $RESSale == "HA">>
-	I am ready to serve you in any way you deem fit and do everything I can to protect your life." She's wearing a delicate maid uniform, beautifully contrasting her poweful physique and towering stature. "The academy has given me the opportunity to learn many valuable skills and I look forward put them at your service."
+	I am ready to serve you in any way you deem fit and do everything I can to protect your life." She's wearing a delicate maid uniform, beautifully contrasting her powerful physique and towering stature. "The academy has given me the opportunity to learn many valuable skills and I look forward put them at your service."
 <<else>>
 	The time has come for me to serve my Sisters by leaving my community and becoming a slave. Our sex skills are unparalleled," she says proudly. She's nude, and reclines luxuriantly for the camera, showing her remarkable body off in all its gorgeous strangeness. Her boobs are huge, her dick is hard, her pussy is wet, and her ass is relaxed. "I love to fuck, <<if $PC.title == 1>>Sir<<else>>Ma'am<</if>>," she says, and you believe her.
 	<<if ($PC.dick == 1) && ($PC.vagina == 1)>>
diff --git a/src/uncategorized/rulesAssistant.tw b/src/uncategorized/rulesAssistant.tw
index 44c4d2f19f324af9c5eb859e5f08048d26f76ca5..94acc3234c31a15f0c939494a5b5383575dbac41 100644
--- a/src/uncategorized/rulesAssistant.tw
+++ b/src/uncategorized/rulesAssistant.tw
@@ -130,10 +130,43 @@ List of rules: <br>
 		<<rbutton "_crule" _r>> $defaultRules[_r].name
 	<</for>>
 	<br>
-	<<link "Switch to selected rule">>
+	<<link "Switch to selected rule">>  
 		<<set $currentRule = $defaultRules[_crule]>>
 		<<goto "Rules Assistant">>
-	<</link>>
+	<</link>> | 
+<</if>>
+
+	<<link "Add a new rule">>
+
+		<<set _tempRule = {aphrodisiacs: "no default setting", condition: {id: "false"}, releaseRules: "no default setting", clitSetting: "no default setting", clitSettingXY: "no default setting", clitSettingXX: "no default setting", clitSettingEnergy: "no default setting", speechRules: "no default setting", clothes: "no default setting", collar: "no default setting", shoes: "no default setting", virginAccessory: "no default setting", aVirginAccessory: "no default setting", vaginalAccessory: "no default setting", aVirginDickAccessory: "no default setting", dickAccessory: "no default setting", bellyAccessory: "no default setting", aVirginButtplug: "no default setting", buttplug: "no default setting", eyeColor: "no default setting", makeup: "no default setting", nails: "no default setting", hColor: "no default setting", hLength: "no default setting", hStyle: "no default setting", pubicHColor: "no default setting", pubicHStyle: "no default setting", nipplesPiercing: "no default setting", areolaePiercing: "no default setting", clitPiercing: "no default setting", vaginaLube: "no default setting", vaginaPiercing: "no default setting", dickPiercing: "no default setting", anusPiercing: "no default setting", lipsPiercing: "no default setting", tonguePiercing: "no default setting", earPiercing: "no default setting", nosePiercing: "no default setting", eyebrowPiercing: "no default setting", navelPiercing: "no default setting", corsetPiercing: "no default setting", boobsTat: "no default setting", buttTat: "no default setting", vaginaTat: "no default setting", dickTat: "no default setting", lipsTat: "no default setting", anusTat: "no default setting", shouldersTat: "no default setting", armsTat: "no default setting", legsTat: "no default setting", backTat: "no default setting", stampTat: "no default setting", curatives: "no default setting", livingRules: "no default setting", relationshipRules: "no default setting", standardPunishment: "no default setting", standardReward: "no default setting", diet: "no default setting", dietCum: "no default setting", dietMilk: "no default setting", muscles: "no default setting", XY: "no default setting", XX: "no default setting", gelding: "no default setting", preg: "no default setting", growth: {boobs: "no default setting", butt: "no default setting", lips: "no default setting", dick: "no default setting", balls: "no default setting"}, autoSurgery: 0, autoBrand: 0, pornFameSpending: "no default setting", dietGrowthSupport: 0, eyewear: "no default setting", assignment: [], excludeAssignment: [], setAssignment: "no default setting", facility: [], excludeFacility: [], excludeSpecialSlaves: true, facilityRemove: false, removalAssignment: "rest", selectedSlaves: [], excludedSlaves: [], surgery: {eyes: "no default setting", lactation: "no default setting", prostate: "no default setting", cosmetic: "nds", accent: "no default setting", shoulders: "no default setting", shouldersImplant: "no default setting", boobs: "no default setting", hips: "no default setting", hair: "nds", bodyhair:"nds", hipsImplant: "no default setting", butt: "no default setting", faceShape: "no default setting", lips: "no default setting", holes: "nds", bellyImplant: "no default setting"}, underArmHColor: "no default setting", underArmHStyle: "no default setting", drug: "no default setting", eyes: "no default setting", pregSpeed: "nds", bellyImplantVol: -1}>>
+
+		/* pick an ID higher than the highest ID of any existing rule */
+		<<for _tempRule.ID = 1, _r = 0; _r < _length; _r++>>
+			<<set _tempRule.ID = Math.max(_tempRule.ID, $defaultRules[_r].ID + 1)>>
+		<</for>>
+		<<set _tempRule.name = "Rule " + (_length+1)>>
+
+		<<set $defaultRules.push(_tempRule)>>
+		<<set $currentRule = $defaultRules[_length]>>
+		<<goto "Rules Assistant">>
+
+	<</link>> | 
+	<<link "Remove rule '$currentRule.name'">>
+		<<set $defaultRules.deleteAt($r-1)>>
+		<<for $r = $defaultRules.length; $r > 0; $r-->>
+			<<if def $defaultRules[$r-1]>>
+				<<set $currentRule = $defaultRules[$r-1]>>
+				<<break>>
+			<</if>>
+		<</for>>
+		<<goto "Rules Assistant">>
+	<</link>> |
+	<span class="saveresult"></span>
+		<<timed 50ms>>
+		<<RAChangeSave>>
+	<</timed>>
+<br><br>
+<<if _length >= 10>>''@@.red;ATTENTION! Current rules count is 10 or above. High rules count can dramatically slow down game speed (especially if slaves count is high too), or even cause freeze of game page/browser. Use at your own risk!@@''
 <br><br>
 <</if>>
 
@@ -1050,6 +1083,25 @@ Buttplugs for other slaves: <span id="buaccessory">''$currentRule.buttplug.''</s
 
 <br><br>
 Body modification: [[Cosmetic Rules Assistant Settings][$artificialEyeColor = "",$artificialEyeShape = ""]] | [[Body Mod Rules Assistant Settings]] | [[Autosurgery Settings]]
+<br>
+Assistant-applied implants (Autosurgery global switch):
+<span id = "assistantimplants">
+<<if $currentRule.autoSurgery == 1>>
+	''ACTIVE, STAND CLEAR.''
+	<<link "Off">>
+		<<set $currentRule.autoSurgery = 0>>
+		<<RAChangeAssistantImplants>>
+		<<RARuleModified>>
+	<</link>>
+<<else>>
+	''off.''
+	<<link "Activate">>
+		<<set $currentRule.autoSurgery = 1>>
+		<<RAChangeAssistantImplants>>
+		<<RARuleModified>>
+	<</link>>
+<</if>>
+</span>
 
 <br><br>
 
@@ -1505,6 +1557,10 @@ Slave diets:
 	''fat slaves will slim down to plush; skinny slaves will fill out to thin.''
 <<elseif $currentRule.diet == "cleansing">>
 	''designed to promote health''
+<<elseif $currentRule.diet == "fertility">>
+	''designed to promote ovulation''
+<<elseif $currentRule.diet == "cum production">>
+	''designed to promote cum production''
 <<else>>
 	''no default setting.''
 <</if>>
@@ -1569,6 +1625,22 @@ Slave diets:
 		<<RARuleModified>>
 	<</link>>
 <</if>>
+<<if $dietFertility == 1>>
+	|
+	<<link "Fertility">>
+		<<set $currentRule.diet = "fertility">>
+		<<RAChangeDiet>>
+		<<RARuleModified>>
+	<</link>>
+<</if>>
+<<if $cumProDiet == 1>>
+	|
+	<<link "Cum production">>
+		<<set $currentRule.diet = "cum production">>
+		<<RAChangeDiet>>
+		<<RARuleModified>>
+	<</link>>
+<</if>>
 <span id = "dietsupport">
 <<if $currentRule.diet !== "no default setting">>
 
@@ -1749,26 +1821,7 @@ Braces:
 	<<RARuleModified>>
 <</link>>
 
-<br>
 
-Assistant-applied implants:
-<span id = "assistantimplants">
-<<if $currentRule.autoSurgery == 1>>
-	''ACTIVE, STAND CLEAR.''
-	<<link "Off">>
-		<<set $currentRule.autoSurgery = 0>>
-		<<RAChangeAssistantImplants>>
-		<<RARuleModified>>
-	<</link>>
-<<else>>
-	''off.''
-	<<link "Activate">>
-		<<set $currentRule.autoSurgery = 1>>
-		<<RAChangeAssistantImplants>>
-		<<RARuleModified>>
-	<</link>>
-<</if>>
-</span>
 
 <br><br>
 
@@ -2459,43 +2512,25 @@ Relationship rules: <span id="relation">''$currentRule.relationshipRules.''</spa
 	<<goto "Rules Assistant">>
 <</link>>
 <</if>>
-
 |
-<<link "Remove rule $r">>
-	<<set $defaultRules.deleteAt($r-1)>>
-	<<for $r = $defaultRules.length; $r > 0; $r-->>
-		<<if def $defaultRules[$r-1]>>
-			<<set $currentRule = $defaultRules[$r-1]>>
-			<<break>>
-		<</if>>
-	<</for>>
-	<<goto "Rules Assistant">>
-<</link>>
-
-<</if>> /* closes if _length > 0 */
-
-<br><br>
-
-<<if _length >= 10>>''@@.red;ATTENTION! Current rules count is 10 or above. High rules count can dramatically slow down game speed (especially if slaves count is high too), or even cause freeze of game page/browser. Use at your own risk!@@''
-<br><br>
-<</if>>
-
-	<<link "Add a new rule">>
-
-		<<set _tempRule = {aphrodisiacs: "no default setting", condition: {id: "false"}, releaseRules: "no default setting", clitSetting: "no default setting", clitSettingXY: "no default setting", clitSettingXX: "no default setting", clitSettingEnergy: "no default setting", speechRules: "no default setting", clothes: "no default setting", collar: "no default setting", shoes: "no default setting", virginAccessory: "no default setting", aVirginAccessory: "no default setting", vaginalAccessory: "no default setting", aVirginDickAccessory: "no default setting", dickAccessory: "no default setting", bellyAccessory: "no default setting", aVirginButtplug: "no default setting", buttplug: "no default setting", eyeColor: "no default setting", makeup: "no default setting", nails: "no default setting", hColor: "no default setting", hLength: "no default setting", hStyle: "no default setting", pubicHColor: "no default setting", pubicHStyle: "no default setting", nipplesPiercing: "no default setting", areolaePiercing: "no default setting", clitPiercing: "no default setting", vaginaLube: "no default setting", vaginaPiercing: "no default setting", dickPiercing: "no default setting", anusPiercing: "no default setting", lipsPiercing: "no default setting", tonguePiercing: "no default setting", earPiercing: "no default setting", nosePiercing: "no default setting", eyebrowPiercing: "no default setting", navelPiercing: "no default setting", corsetPiercing: "no default setting", boobsTat: "no default setting", buttTat: "no default setting", vaginaTat: "no default setting", dickTat: "no default setting", lipsTat: "no default setting", anusTat: "no default setting", shouldersTat: "no default setting", armsTat: "no default setting", legsTat: "no default setting", backTat: "no default setting", stampTat: "no default setting", curatives: "no default setting", livingRules: "no default setting", relationshipRules: "no default setting", standardPunishment: "no default setting", standardReward: "no default setting", diet: "no default setting", dietCum: "no default setting", dietMilk: "no default setting", muscles: "no default setting", XY: "no default setting", XX: "no default setting", gelding: "no default setting", preg: "no default setting", growth: {boobs: "no default setting", butt: "no default setting", lips: "no default setting", dick: "no default setting", balls: "no default setting"}, autoSurgery: 0, autoBrand: 0, pornFameSpending: "no default setting", dietGrowthSupport: 0, eyewear: "no default setting", assignment: [], excludeAssignment: [], setAssignment: "no default setting", facility: [], excludeFacility: [], excludeSpecialSlaves: true, facilityRemove: false, removalAssignment: "rest", selectedSlaves: [], excludedSlaves: [], surgery: {eyes: "no default setting", lactation: "no default setting", prostate: "no default setting", cosmetic: 0, accent: "no default setting", shoulders: "no default setting", shouldersImplant: "no default setting", boobs: "no default setting", hips: "no default setting", hipsImplant: "no default setting", butt: "no default setting", faceShape: "no default setting", lips: "no default setting", holes: 0, bellyImplant: "no default setting"}, underArmHColor: "no default setting", underArmHStyle: "no default setting", drug: "no default setting", eyes: "no default setting", pregSpeed: "nds", bellyImplantVol: -1}>>
-
-		/* pick an ID higher than the highest ID of any existing rule */
-		<<for _tempRule.ID = 1, _r = 0; _r < _length; _r++>>
-			<<set _tempRule.ID = Math.max(_tempRule.ID, $defaultRules[_r].ID + 1)>>
+<span class="saveresult"></span>
+	<<timed 50ms>>
+	<<RAChangeSave>>
+<</timed>>
+|
+<<link "Remove rule '$currentRule.name'">>
+		<<set $defaultRules.deleteAt($r-1)>>
+		<<for $r = $defaultRules.length; $r > 0; $r-->>
+			<<if def $defaultRules[$r-1]>>
+				<<set $currentRule = $defaultRules[$r-1]>>
+				<<break>>
+			<</if>>
 		<</for>>
-		<<set _tempRule.name = "Rule " + (_length+1)>>
-
-		<<set $defaultRules.push(_tempRule)>>
-		<<set $currentRule = $defaultRules[_length]>>
 		<<goto "Rules Assistant">>
+	<</link>>
+<</if>> /* closes if _length > 0 */
 
-	<</link>> |
-
+<br><br>
 
 <<if _length > 0>>
 	<span id="applyresult"></span>
diff --git a/src/uncategorized/rulesAutosurgery.tw b/src/uncategorized/rulesAutosurgery.tw
index 096e2e1847d7bbb3b0808b4c94879e6c3fcec56e..2a61403ba77ca4fca0beb4b5bca560f026243a55 100644
--- a/src/uncategorized/rulesAutosurgery.tw
+++ b/src/uncategorized/rulesAutosurgery.tw
@@ -1,9 +1,10 @@
 :: Rules Autosurgery [nobr]
 
 <<set $surgeries = []>>
+<<unset $thisSurgery>>
 
-<<if $HGTastes>>
-	<<if $HGTastes == 1>>
+<<if (def $HGTastes) && $HGTastes > 0>>
+	<<if $HGTastes == 1>> 
 		<<set $thisSurgery = {lactation: 0, cosmetic: 1, faceShape: "cute", lips: 10, hips: 0, hipsImplant: 0, butt: 0, accent: 0, shoulders: 0, shouldersImplant: 0, boobs: 0, holes: 0}>>
 	<<elseif $HGTastes == 2>>
 		<<set $thisSurgery = {lactation: 0, cosmetic: 1, faceShape: "cute", lips: 60, hips: 0, hipsImplant: 0, butt: 4, accent: 0, shoulders: 0, shouldersImplant: 0, boobs: 1200, holes: 0}>>
@@ -13,75 +14,27 @@
 		<<set $thisSurgery = {lactation: 0, cosmetic: 1, faceShape: "cute", lips: 95, hips: 0, hipsImplant: 0, butt: 8, accent: 0, shoulders: 0, shouldersImplant: 0, boobs: 10000, holes: 2}>>
 	<</if>>
 <<else>>
-	<<for _r = $defaultRules.length-1; _r >= 0; _r-->>
-		<<set _currentRule = $defaultRules[_r]>>
-		<<if (def _currentRule) && (_currentRule.autoSurgery != 0)>>
-			/* <<set $thisSurgery = _currentRule.surgery>>  THIS IS VERY BAD!!! Fuck up autosurgery rules */
-			<<set $thisSurgery = Object.assign({}, _currentRule.surgery)>> /* We need deep copy, not shallow copy here. */
-			
-			<<set _temp = lastLactationSurgeryRule($slaves[$i], $defaultRules)>>
-			<<if _temp != null>>
-				<<set $thisSurgery.lactation = _temp.surgery.lactation>>
+	<<set $thisSurgery = autoSurgerySelector($slaves[$i], $defaultRules)>>
+	 <<if ($thisSurgery.hips !== "no default setting") && ($thisSurgery.butt !== "no default setting")>>
+		<<if $slaves[$i].hips < -1>>
+			<<if $thisSurgery.butt > 2>>
+				<<set $thisSurgery.butt = 2>>
 			<</if>>
-			<<set _temp = lastProstateSurgeryRule($slaves[$i], $defaultRules)>>
-			<<if _temp != null>>
-				<<set $thisSurgery.prostate = _temp.surgery.prostate>>
+		<<elseif $slaves[$i].hips < 0>>
+			<<if $thisSurgery.butt > 4>>
+				<<set $thisSurgery.butt = 4>>
 			<</if>>
-			<<set _temp = lastLipSurgeryRule($slaves[$i], $defaultRules)>>
-			<<if _temp != null>>
-				<<set $thisSurgery.lips = _temp.surgery.lips>>
+		<<elseif $slaves[$i].hips > 0>>
+			<<if $thisSurgery.butt > 8>>
+				<<set $thisSurgery.butt = 8>>
 			<</if>>
-			<<set _temp = lastButtSurgeryRule($slaves[$i], $defaultRules)>>
-			<<if _temp != null>>
-				<<set $thisSurgery.butt = _temp.surgery.butt>>
-			<</if>>
-			<<set _temp = lastBoobSurgeryRule($slaves[$i], $defaultRules)>>
-			<<if _temp != null>>
-				<<set $thisSurgery.boobs = _temp.surgery.boobs>>
-			<</if>>
-			<<set _temp = lastEyeSurgeryRule($slaves[$i], $defaultRules)>>
-			<<if _temp != null>>
-				<<set $thisSurgery.eyes = _temp.surgery.eyes>>
-			<</if>>
-			<<set _temp = lastBodyHairSurgeryRule($slaves[$i], $defaultRules)>>
-			<<if _temp != null>>
-				<<set $thisSurgery.bodyhair = _temp.surgery.bodyhair>>
-			<</if>>
-			<<set _temp = lastHairSurgeryRule($slaves[$i], $defaultRules)>>
-			<<if _temp != null>>
-				<<set $thisSurgery.hair = _temp.surgery.hair>>
-			<</if>>
-			<<set _temp = lastSurgeryRuleFor($slaves[$i], $defaultRules, "bellyImplant")>>
-			<<if _temp != null>>
-				<<set $thisSurgery.bellyImplant = _temp.surgery.bellyImplant>>
-			<</if>>
-			<<if ($thisSurgery.hips !== "no default setting") && ($thisSurgery.butt !== "no default setting")>>
-				<<if $slaves[$i].hips < -1>>
-					<<if $thisSurgery.butt > 2>>
-						<<set $thisSurgery.butt = 2>>
-					<</if>>
-				<<elseif $slaves[$i].hips < 0>>
-					<<if $thisSurgery.butt > 4>>
-						<<set $thisSurgery.butt = 4>>
-					<</if>>
-				<<elseif $slaves[$i].hips > 0>>
-					<<if $thisSurgery.butt > 8>>
-						<<set $thisSurgery.butt = 8>>
-					<</if>>
-				<<elseif $slaves[$i].hips > 1>>
-				<<else>>
-					<<if $thisSurgery.butt > 6>>
-						<<set $thisSurgery.butt = 6>>
-					<</if>>
-				<</if>>
+		<<elseif $slaves[$i].hips > 1>>
+		<<else>>
+			<<if $thisSurgery.butt > 6>>
+				<<set $thisSurgery.butt = 6>>
 			<</if>>
-			<<break>>
 		<</if>>
-	<</for>>
-<</if>>
-
-<<if ndef $thisSurgery>>
-	<<set $thisSurgery = {eyes: "no default setting", lactation: "no default setting", cosmetic: 0, accent: "no default setting", shoulders: "no default setting", shouldersImplant: "no default setting", boobs: "no default setting", hips: "no default setting", hipsImplant: "no default setting", butt: "no default setting", faceShape: "no default setting", lips: "no default setting", holes: 0, bodyhair: 0, hair: 0, bellyImplant: "no default setting"}>>
+	<</if>>
 <</if>>
 
 <<set $seed = 0>>
@@ -124,14 +77,14 @@
 	<</if>>
 	<<set $cash -= $surgeryCost>>
 	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-<<elseif ($slaves[$i].faceImplant <= 15) && ($slaves[$i].face <= 95) && ($thisSurgery.cosmetic != 0)>>
+<<elseif ($slaves[$i].faceImplant <= 15) && ($slaves[$i].face <= 95) && ($thisSurgery.cosmetic > 0)>>
 	<<set $surgeries.push("a nicer face")>>
 	<<if $slaves[$i].faceShape == "masculine">><<set $slaves[$i].faceShape = "androgynous">><</if>>
 	<<set $slaves[$i].faceImplant += 25-5*Math.trunc($PC.medicine/100)-5*$surgeryUpgrade>>
 	<<set $slaves[$i].face = Math.clamp($slaves[$i].face+20,-100,100)>>
 	<<set $cash -= $surgeryCost>>
 	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-<<elseif ($slaves[$i].faceImplant <= 15) && ($slaves[$i].ageImplant != 1) && ($slaves[$i].visualAge >= 25) && ($thisSurgery.cosmetic != 0)>>
+<<elseif ($slaves[$i].faceImplant <= 15) && ($slaves[$i].ageImplant != 1) && ($slaves[$i].visualAge >= 25) && ($thisSurgery.cosmetic > 0)>>
 	<<set $surgeries.push("an age lift")>>
 	<<set $slaves[$i].ageImplant = 1>>
 	<<set $slaves[$i].faceImplant += 25-5*Math.trunc($PC.medicine/100)-5*$surgeryUpgrade>>
@@ -157,28 +110,28 @@
 	<<set $surgeries.push("hair removal")>>
 	<<set $slaves[$i].hStyle = "bald", $slaves[$i].bald = 1>>
 	<<set $cash -= $surgeryCost>>
-<<elseif ($slaves[$i].weight >= 10) && ($thisSurgery.cosmetic != 0)>>
+<<elseif ($slaves[$i].weight >= 10) && ($thisSurgery.cosmetic > 0)>>
 	<<set $surgeries.push("liposuction")>>
 	<<set $slaves[$i].weight -= 50>>
 	<<set $cash -= $surgeryCost>>
 	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-<<elseif ($slaves[$i].voice == 1) && ($slaves[$i].voiceImplant == 0) && ($thisSurgery.cosmetic != 0)>>
+<<elseif ($slaves[$i].voice == 1) && ($slaves[$i].voiceImplant == 0) && ($thisSurgery.cosmetic > 0)>>
 	<<set $surgeries.push("a feminine voice")>>
 	<<set $slaves[$i].voice += 1>>
 	<<set $slaves[$i].voiceImplant += 1>>
 	<<set $cash -= $surgeryCost>>
 	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-<<elseif ($slaves[$i].waist >= -10) && ($thisSurgery.cosmetic != 0)>>
+<<elseif ($slaves[$i].waist >= -10) && ($thisSurgery.cosmetic > 0)>>
 	<<set $surgeries.push("a narrower waist")>>
 	<<set $slaves[$i].waist -= 20>>
 	<<set $cash -= $surgeryCost>>
 	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-<<elseif (($slaves[$i].boobShape == "saggy") || ($slaves[$i].boobShape == "downward-facing")) && ($thisSurgery.cosmetic != 0) && ($slaves[$i].breastMesh != 1)>>
+<<elseif (($slaves[$i].boobShape == "saggy") || ($slaves[$i].boobShape == "downward-facing")) && ($thisSurgery.cosmetic > 0) && ($slaves[$i].breastMesh != 1)>>
 	<<set $surgeries.push("a breast lift")>>
 	<<set $slaves[$i].boobShape = "normal">>
 	<<set $cash -= $surgeryCost>>
 	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
-<<elseif (($slaves[$i].boobShape == "normal") || ($slaves[$i].boobShape == "wide-set")) && ($thisSurgery.cosmetic != 0) && ($slaves[$i].breastMesh != 1)>>
+<<elseif (($slaves[$i].boobShape == "normal") || ($slaves[$i].boobShape == "wide-set")) && ($thisSurgery.cosmetic > 0) && ($slaves[$i].breastMesh != 1)>>
 	<<if $slaves[$i].boobs > 800>>
 		<<set $slaves[$i].boobShape = "torpedo-shaped">>
 	<<else>>
@@ -250,12 +203,15 @@
 <<elseif ($thisSurgery.butt == 0) && ($slaves[$i].buttImplant > 0)>>
 	<<set $surgeries.push("surgery to remove her butt implants")>>
 	<<set $slaves[$i].butt -= $slaves[$i].buttImplant>>
+	<<set $slaves[$i].buttImplant = 0>>
+	<<set $slaves[$i].buttImplantType = 0>>
 	<<set $cash -= $surgeryCost>>
 	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
 <<elseif ($thisSurgery.boobs == 0) && ($slaves[$i].boobsImplant > 0)>>
 	<<set $surgeries.push("surgery to remove her boob implants")>>
 	<<set $slaves[$i].boobs -= $slaves[$i].boobsImplant>>
 	<<set $slaves[$i].boobsImplant = 0>>
+	<<set $slaves[$i].boobsImplantType = 0>>
 	<<set $cash -= $surgeryCost>>
 	<<if $PC.medicine >= 100>><<set $slaves[$i].health -= 5>><<else>><<set $slaves[$i].health -= 10>><</if>>
 <<elseif ($slaves[$i].butt <= 3) && ($slaves[$i].butt < $thisSurgery.butt)>>
diff --git a/src/uncategorized/saDevotion.tw b/src/uncategorized/saDevotion.tw
index b6717db8ef8d7318576ea461915c64622c29773a..8eb50dbfa26571b30b0ffd49e0cdc5e979bffcb8 100644
--- a/src/uncategorized/saDevotion.tw
+++ b/src/uncategorized/saDevotion.tw
@@ -115,10 +115,10 @@
 <<if $slaves[$i].devotion <= 20 && $slaves[$i].devotion >= -50>>
 	<<if $slaves[$i].trust > 20>>
 		$slaves[$i].slaveName does not like you and believes that you will not punish her severely, and her @@.mediumorchid;regard for you is severely reduced@@ by this lack of respect.
-		<<set $slaves[$i].trust -= 4>>
+		<<set $slaves[$i].devotion -= 4>>
 	<<elseif $slaves[$i].trust >= -20>>
 		$slaves[$i].slaveName neither likes nor fears you, and her @@.mediumorchid;regard for you is reduced@@ by this lack of respect.
-		<<set $slaves[$i].trust -= 2>>
+		<<set $slaves[$i].devotion -= 2>>
 	<</if>>
 <</if>>
 
diff --git a/src/uncategorized/saDiet.tw b/src/uncategorized/saDiet.tw
index 2bda641090e462e9df4df163adf45d5e120075a0..d08212738e2c8bfefe23f8fe2bb3887ec6c0edf2 100644
--- a/src/uncategorized/saDiet.tw
+++ b/src/uncategorized/saDiet.tw
@@ -363,53 +363,83 @@
 		She is no longer capable of actively working out. Her special diet @@.yellow;has ended.@@
 		<<set $slaves[$i].diet = "healthy">>
 	<<else>>
-	<<if $slaves[$i].muscles <= 10>>
-		Her long workouts focus on cardio. She has finally @@.or;lost all visible musculature.@@
-		<<set $slaves[$i].muscles = 0>>
-		<<set $slaves[$i].diet = "healthy">>
-	<<elseif ($slaves[$i].drugs == "steroids")>>
-		Her long workouts focus on cardio, but since she's still shooting gear, she @@.lime;loses mass slowly.@@
-		<<set $slaves[$i].muscles -= 3>>
-	<<elseif ($slaves[$i].balls > 0) && ($slaves[$i].hormoneBalance <= -100)>>
-		Her long workouts focus on cardio, but since she's got so much natural and artificial testosterone, she @@.lime;loses mass slowly.@@
-		<<set $slaves[$i].muscles -= 3>>
-	<<elseif ($slaves[$i].balls > 0) && ($slaves[$i].hormoneBalance >= 100)>>
-		Her long workouts focus on cardio, and with the natural testosterone in her system counteracted by hormone treatment, she @@.lime;loses musculature.@@
-		<<set $slaves[$i].muscles -= 5>>
-	<<elseif ($slaves[$i].balls > 0)>>
-		Her long workouts focus on cardio, but with some natural testosterone in her system, she @@.lime;loses muscle slowly.@@
-		<<set $slaves[$i].muscles -= 3>>
-	<<elseif ($slaves[$i].hormoneBalance >= 100)>>
-		Her long workouts focus on cardio, and with female hormone treatment, she @@.lime;loses musculature rapidly.@@
-		<<set $slaves[$i].muscles -= 8>>
-	<<elseif ($slaves[$i].hormoneBalance <= -100)>>
-		Her long workouts focus on cardio, but under male hormone treatment, she @@.lime;loses muscle slowly.@@
-		<<set $slaves[$i].muscles -= 3>>
-	<<else>>
-		Her long workouts focus on cardio, and she @@.lime;loses musculature.@@
-		<<set $slaves[$i].muscles -= 5>>
-	<</if>>
-	<<if ($slaves[$i].behavioralQuirk == "fitness")>>
-		She approaches endurance work with real enthusiasm, quickly slimming her down.
-		<<set $slaves[$i].muscles -= 2>>
-	<</if>>
-	<<if random(1,100) > 90>>
-	<<if ($slaves[$i].boobs-$slaves[$i].boobsImplant >= 200)>>
-		@@.orange;Her breasts get a little smaller.@@
-		<<set $slaves[$i].boobs -= 50>>
-	<<elseif ($slaves[$i].butt > 1)>>
-		@@.orange;Her butt gets a little smaller.@@
-		<<set $slaves[$i].butt -= 1>>
-	<</if>>
-	<</if>>
-	<<if random(1,100) > 80>>
-		Her workout successes have @@.green;improved her health.@@
-		<<set $slaves[$i].health += 10>>
-	<</if>>
-	<<if $slaves[$i].weight > 10>>
-		Her workouts have also @@.orange;burned off some excess fat.@@
-		<<set $slaves[$i].weight -= 2>>
-	<</if>>
+		<<if $slaves[$i].muscles <= 10>>
+			<<if $slaves[$i].muscles <= 10>>
+				Her long workouts focus on cardio. She has finally @@.orange;lost all visible musculature.@@
+				<<set $slaves[$i].muscles = 0>>
+				<<set $slaves[$i].diet = "healthy">>
+			<<elseif ($slaves[$i].drugs == "steroids")>>
+				Her long workouts focus on cardio, but since she's still shooting gear, she @@.lime;loses mass slowly.@@
+				<<set $slaves[$i].muscles -= 3>>
+			<<elseif ($slaves[$i].balls > 0) && ($slaves[$i].hormoneBalance <= -100)>>
+				Her long workouts focus on cardio, but since she's got so much natural and artificial testosterone, she @@.lime;loses mass slowly.@@
+				<<set $slaves[$i].muscles -= 3>>
+			<<elseif ($slaves[$i].balls > 0) && ($slaves[$i].hormoneBalance >= 100)>>
+				Her long workouts focus on cardio, and with the natural testosterone in her system counteracted by hormone treatment, she @@.lime;loses musculature.@@
+				<<set $slaves[$i].muscles -= 5>>
+			<<elseif ($slaves[$i].balls > 0)>>
+				Her long workouts focus on cardio, but with some natural testosterone in her system, she @@.lime;loses muscle slowly.@@
+				<<set $slaves[$i].muscles -= 3>>
+			<<elseif ($slaves[$i].hormoneBalance >= 100)>>
+				Her long workouts focus on cardio, and with female hormone treatment, she @@.lime;loses musculature rapidly.@@
+				<<set $slaves[$i].muscles -= 8>>
+			<<elseif ($slaves[$i].hormoneBalance <= -100)>>
+				Her long workouts focus on cardio, but under male hormone treatment, she @@.lime;loses muscle slowly.@@
+				<<set $slaves[$i].muscles -= 3>>
+			<<else>>
+				Her long workouts focus on cardio, and she @@.lime;loses musculature.@@
+				<<set $slaves[$i].muscles -= 5>>
+			<</if>>
+			<<if ($slaves[$i].behavioralQuirk == "fitness")>>
+				She approaches endurance work with real enthusiasm, quickly slimming her down.
+				<<set $slaves[$i].muscles -= 2>>
+			<</if>>
+			<<if random(1,100) > 90>>
+				<<if ($slaves[$i].boobs-$slaves[$i].boobsImplant >= 200)>>
+					@@.orange;Her breasts get a little smaller.@@
+					<<set $slaves[$i].boobs -= 50>>
+				<<elseif ($slaves[$i].butt > 1)>>
+					@@.orange;Her butt gets a little smaller.@@
+					<<set $slaves[$i].butt -= 1>>
+				<</if>>
+			<</if>>
+			<<if random(1,100) > 80>>
+				Her workout successes have @@.green;improved her health.@@
+				<<set $slaves[$i].health += 10>>
+			<</if>>
+			<<if $slaves[$i].weight > 10>>
+				Her workouts have also @@.orange;burned off some excess fat.@@
+				<<set $slaves[$i].weight -= 2>>
+			<</if>>
+		<<else>>
+			Her long workouts focus on cardio to keep her body lithe.
+			<<if ($slaves[$i].behavioralQuirk == "fitness")>>
+				She @@.hotpink;enjoys@@ the time she's given to workout.
+				<<set $slaves[$i].devotion += 2>>
+			<</if>>
+			<<if $slaves[$i].muscles < -10>>
+				Since she is rather weak, her routine slowly tones her soft muscles.
+				<<set $slaves[$i].muscles++>>
+			<</if>>
+			<<if ($slaves[$i].boobs-$slaves[$i].boobsImplant >= 200)>>
+				@@.orange;Her breasts get a little smaller.@@
+				<<set $slaves[$i].boobs -= 50>>
+			<</if>>
+			<<if random(1,100) > 50>>
+				<<if ($slaves[$i].butt > 1)>>
+					@@.orange;Her butt loses a little mass.@@
+					<<set $slaves[$i].butt -= 1>>
+				<</if>>
+			<</if>>
+			<<if random(1,100) > 50 && $slaves[$i].health <= 90 && $slaves[$i].health >= -20>>
+				Her workout successes have @@.green;improved her health.@@
+				<<set $slaves[$i].health += 5>>
+			<</if>>
+			<<if $slaves[$i].weight > 10>>
+				Her workouts have also @@.orange;burned off some excess fat.@@
+				<<set $slaves[$i].weight -= 2>>
+			<</if>>
+		<</if>>
 	<</if>>
 <<case "cum production">>
 	<<if $slaves[$i].fetish != "mindbroken">>
@@ -682,6 +712,46 @@
 			<<set $slaves[$i].chem -= 2>>
 		<</if>>
 	<</if>>
+<<case "fertility">> /* + ovum and small boosts to energy and attrXY */
+	<<if !canGetPregnant($slaves[$i])>>
+		<<if $slaves[$i].pregKnown == 0 && $slaves[$i].preg > 0>>
+			The diet is not properly working; tests reveal the reason is a @@.lime;new pregnancy.@@
+			<<set $slaves[$i].pregKnown = 1>>
+		<<else>>
+			She is no longer able to get pregnant, for one reason or another.
+		<</if>>
+		@@.yellow;Her fertility diet has been ended.@@
+		<<set $slaves[$i].diet = "healthy">>
+	<</if>>
+	<<if $slaves[$i].fetish == "mindbroken">>
+		She doesn't really notice that @@.lime;her body is being prepared to carry multiples.@@
+		<<if $slaves[$i].energy < 45 && $slaves[$i].energy > 20>>
+			She begins craving @@.green;sex for the sole purpose of reproduction,@@ even if she doesn't comprehend it.
+			<<set $slaves[$i].energy++>>
+		<</if>>
+	<<elseif $slaves[$i].sexualFlaw == "breeder">>
+		Her diet is @@.lime;prepping her to carry multiple fetues,@@ and she feels it. She @@.hotpink;eagerly awaits to swell with children.@@
+		<<set $slaves[$i].devotion += 2>>
+		<<if $slaves[$i].attrXY < 70>>
+			She certainly notices @@.green;how much more attractive men are.@@
+			<<set $slaves[$i].attrXY += 2>>
+		<</if>>
+		<<if $slaves[$i].energy < 45 && $slaves[$i].energy > 20>>
+			She begins craving @@.green;penetrative sex and hot loads left inside her@@ as well.
+			<<set $slaves[$i].energy++>>
+		<</if>>
+	<<else>>
+		She doesn't really notice that @@.lime;her body is being prepared to carry multiples,@@ other than the slight tingle in her lower belly.
+		<<set $slaves[$i].devotion -= 2, $slaves[$i].trust++, $slaves[$i].health += 2>>
+		<<if $slaves[$i].attrXY < 70>>
+			She certainly notices @@.green;how much more attractive men are,@@ however.
+			<<set $slaves[$i].attrXY += 2>>
+		<</if>>
+		<<if $slaves[$i].energy < 45 && $slaves[$i].energy > 20>>
+			She begins craving @@.green;penetrative sex and hot loads left inside her@@ as well.
+			<<set $slaves[$i].energy++>>
+		<</if>>
+	<</if>>
 <</switch>>
 
 <<if ($slaves[$i].dietCum > 0)>>
@@ -1087,7 +1157,14 @@
 		It can't get any healthier. @@.yellow;Its cleansing diet has been ended.@@
 		<<set $slaves[$i].diet = "healthy">>
 	<</if>>
-	
+
+<<case "fertility">> /* + ovum and small boosts to energy and attrXY */
+	The ports in Fuckdoll suits allow total dietary control, and it's barely aware its being @@.lime;prepared to carry multiples.@@
+	<<if !canGetPregnant($slaves[$i])>>
+		It is no longer able to be impregnated. @@.yellow;Its fertility diet has been ended.@@
+		<<set $slaves[$i].diet = "healthy">>
+	<</if>>
+
 <</switch>>
 
 <</if>> /* CLOSES FUCKDOLL CHECK */
diff --git a/src/uncategorized/saDrugs.tw b/src/uncategorized/saDrugs.tw
index 8971f57b224f6ff3497f2278247f10a4eeb1e1ba..8f4fba274d4bd0dd04c44b864c304a8892664732 100644
--- a/src/uncategorized/saDrugs.tw
+++ b/src/uncategorized/saDrugs.tw
@@ -32,6 +32,9 @@
 	<<if ($slaves[$i].diet == "fattening")>>
 		all the food $pronoun's required to consume fuels growth, <<if $slaves[$i].health > -20>>and<<else>>but<</if>>
 		<<set _growth += 6>>
+	<<elseif ($slaves[$i].diet == "fertility")>>
+		the fertility hormones in $possessive food favor breast growth, <<if $slaves[$i].health > -20>>and<<else>>but<</if>>
+		<<set _growth += 1>>
 	<<elseif ($slaves[$i].diet == "restricted")>>
 		$possessive restricted diet means $possessive body has few resources to grow on, <<if $slaves[$i].health > -20>>but<<else>>and<</if>>
 		<<set _growth -= 1>>
@@ -96,7 +99,7 @@
 		<<set _growth += 10>>
 		<<if ($slaves[$i].boobShape != "normal") && ($slaves[$i].breastMesh != 1)>>
 		  <<if random(1,10) == 1>>
-			$possessiveCap @@.coral;breasts lose their unique shape@@ as they adapt to their monstrous, unnatural size. There's simply nowhere else for her mass of boob to go, and its expansion fills her breasts out and points her nipples forward.
+			$possessiveCap @@.coral;breasts lose their unique shape@@ as they adapt to their monstrous, unnatural size. There's simply nowhere else for $possessive mass of boob to go, and its expansion fills $possessive breasts out and points $possessive nipples forward.
 			<<set $slaves[$i].boobShape = "normal">>
 		  <</if>>
 		<</if>>
@@ -125,6 +128,9 @@
 	<<if ($slaves[$i].diet == "fattening")>>
 		all the food $pronoun's required to consume fuels growth, <<if $slaves[$i].health > -20>>and<<else>>but<</if>>
 		<<set _growth += 2>>
+	<<elseif ($slaves[$i].diet == "fertility")>>
+		the fertility hormones in $possessive food favor breast growth, <<if $slaves[$i].health > -20>>and<<else>>but<</if>>
+		<<set _growth += 1>>
 	<<elseif ($slaves[$i].diet == "restricted")>>
 		$possessive restricted diet means $possessive body has few resources to grow on, <<if $slaves[$i].health > -20>>but<<else>>and<</if>>
 		<<set _growth -= 2>>
@@ -410,6 +416,18 @@
 			diet.
 		<</if>>
 		<<set _growth -= 0.2>>
+	<<elseif ($slaves[$i].diet == "fertility")>>
+		the fertility hormones in $possessive food restrain $possessive
+		<<if $slaves[$i].dietMilk == 2>>
+			growth, but the generous amount of added milk mitigates its effect.
+			<<set _growth += 0.3>>
+		<<elseif $slaves[$i].dietMilk == 1>>
+			growth, but the added milk mitigates its effect.
+		<<set _growth += 0.2>>
+		<<else>>
+			growth.
+		<</if>>
+		<<set _growth -= 0.1>>
 	<<elseif $slaves[$i].diet == "XY" || $slaves[$i].diet == "XX" || $slaves[$i].diet == "XXY">>
 		$possessiveCap growth is restrained by $possessive sexual hormones rich
 		<<if $slaves[$i].dietMilk == 2>>
@@ -654,26 +672,26 @@
 
 <<case "steroids">>
 	<<if ($slaves[$i].dick == 0) && (random(1,100) > 40+($slaves[$i].clit*10))>>
-	The gear $pronoun's on @@.lime;increases the size of $possessive clit.@@
-	<<set $slaves[$i].clit += 1>>
+		The gear $pronoun's on @@.lime;increases the size of $possessive clit.@@
+		<<set $slaves[$i].clit += 1>>
 	<<elseif ($slaves[$i].dick != 0) && ($slaves[$i].dick < 3) && (random(1,100) > 95)>>
-	The gear $pronoun's on @@.lime;increases the size of $possessive penis.@@
-	<<set $slaves[$i].dick += 1>>
+		The gear $pronoun's on @@.lime;increases the size of $possessive penis.@@
+		<<set $slaves[$i].dick += 1>>
 	<<elseif ($slaves[$i].faceShape != "masculine") && ($slaves[$i].faceShape != "androgynous") && (random(1,100) > 95)>>
-	The gear $pronoun's on @@.orange;hardens $possessive face into androgyny.@@
-	<<set $slaves[$i].faceShape = "androgynous">>
+		The gear $pronoun's on @@.orange;hardens $possessive face into androgyny.@@
+		<<set $slaves[$i].faceShape = "androgynous">>
 	<<elseif ($slaves[$i].balls != 0) && ($slaves[$i].scrotum != 0) && ($slaves[$i].balls < 3) && (random(1,100) > 95)>>
-	The gear $pronoun's on @@.lime;increases the size of $possessive balls.@@
-	<<set $slaves[$i].balls += 1>>
+		The gear $pronoun's on @@.lime;increases the size of $possessive balls.@@
+		<<set $slaves[$i].balls += 1>>
 	<<elseif random(1,100) > 110-($slaves[$i].anus*10)>>
-	The steroids $pronoun's on have an effect on $possessive stretched anal muscles, giving $object a @@.lime;tighter butthole.@@
-	<<set $slaves[$i].anus -= 1>>
+		The steroids $pronoun's on have an effect on $possessive stretched anal muscles, giving $object a @@.lime;tighter butthole.@@
+		<<set $slaves[$i].anus -= 1>>
 	<<elseif random(1,100) > 110-($slaves[$i].vagina*10)>>
-	The steroids $pronoun's on have an effect on $possessive vaginal muscles, giving $object a @@.lime;tighter pussy.@@
-	<<set $slaves[$i].vagina -= 1>>
-	<<elseif ($slaves[$i].face-$slaves[$i].faceImplant > 10) && (random(1,100) > 90)>>
-	The gear $pronoun's on @@.orange;hardens $possessive pretty face a little.@@
-	<<set $slaves[$i].face -= 5>>
+		The steroids $pronoun's on have an effect on $possessive vaginal muscles, giving $object a @@.lime;tighter pussy.@@
+		<<set $slaves[$i].vagina -= 1>>
+	<<elseif ($slaves[$i].face-$slaves[$i].faceImplant > 10) && (random(1,100) > 95)>>
+		The gear $pronoun's on @@.orange;hardens $possessive pretty face a little.@@
+		<<set $slaves[$i].face -= 5>>
 	<</if>>
 
 <<case "anti-aging cream">>
diff --git a/src/uncategorized/saGetMilked.tw b/src/uncategorized/saGetMilked.tw
index 67b9b6285451922575e915f3b15930e610c98146..4b4d092de0e328df873b2cd7c7fe9cb1f2b47c17 100644
--- a/src/uncategorized/saGetMilked.tw
+++ b/src/uncategorized/saGetMilked.tw
@@ -65,10 +65,10 @@ gets milked this week.
 	<</if>>
 
 	<<set $hormones = $slaves[$i].hormoneBalance/100>>
-	<<if ($slaves[$i].balls != 0) && ($hormones < -20)>>
+	<<if ($slaves[$i].balls != 0)>>
 		<<set $hormones -= 1>>
 	<</if>>
-	<<if (($slaves[$i].ovaries != 0) || ($slaves[$i].mpreg != 0)) && ($hormones > 20)>>
+	<<if (($slaves[$i].ovaries != 0) || ($slaves[$i].mpreg != 0))>>
 		<<set $hormones += 1>>
 	<</if>>
 	<<if ($hormones > 1)>>
diff --git a/src/uncategorized/saLiveWithHG.tw b/src/uncategorized/saLiveWithHG.tw
index 05469547d62a451a7d1e038670a55856a0143bfc..416e35c7ade55d24003709e2f1a6f9828a0a7e7e 100644
--- a/src/uncategorized/saLiveWithHG.tw
+++ b/src/uncategorized/saLiveWithHG.tw
@@ -305,7 +305,7 @@
 				Unsurprisingly, she gives in to her own cravings and also takes $slaves[$i].slaveName's loads until she @@.lime;gets pregnant@@ too.
 				<<KnockMeUp $HeadGirl 100 2 $slaves[$i].ID>>
 			<</if>>
-		<<elseif  $HeadGirl.fetishKnown == 1>>
+		<<elseif $HeadGirl.fetishKnown == 1>>
 			$HeadGirl.slaveName knows better than to even consider knocking up $slaves[$i].slaveName.
 		<</if>>
 	<<elseif ($HeadGirl.fetish == "pregnancy") && canImpreg($HeadGirl, $slaves[$i])>>
@@ -753,32 +753,56 @@
 	<</if>>
 <</if>>
 
-<<if ($slaves[$i].weight < 100) && ($slaves[$i].diet != "fattening") && ($arcologies[0].FSHedonisticDecadence >= 20)>>
-	$HeadGirl.slaveName puts $slaves[$i].slaveName on a fattening diet since plump girls are all the rage in your arcology.
-	<<set $slaves[$i].diet = "fattening">>
-<<elseif ($slaves[$i].weight > 30) && ($slaves[$i].diet != "restricted") && ($arcologies[0].FSHedonisticDecadence == "unset")>>
-	$HeadGirl.slaveName puts $slaves[$i].slaveName on a diet.
-	<<set $slaves[$i].diet = "restricted">>
-<<elseif ($slaves[$i].weight < -10) && ($slaves[$i].diet != "fattening") && ($arcologies[0].FSHedonisticDecadence == "unset")>>
-	$HeadGirl.slaveName puts $slaves[$i].slaveName on a fattening diet.
-	<<set $slaves[$i].diet = "fattening">>
-<<elseif ($slaves[$i].muscles <= 95) && ($arcologies[0].FSPhysicalIdealist > 0) && ($slaves[$i].amp != 1) && ($slaves[$i].diet != "muscle building")>>
-	$HeadGirl.slaveName wants to support your societal goals, so she makes $slaves[$i].slaveName work out hard.
-	<<set $slaves[$i].diet = "muscle building">>
-<<elseif ($slaves[$i].muscles <= 95) && ($HeadGirl.fetish == "submissive") && ($HeadGirl.fetishKnown == 1) && ($slaves[$i].amp != 1) && ($slaves[$i].diet != "muscle building")>>
-	$HeadGirl.slaveName wants a strong girl in bed with her, so she makes $slaves[$i].slaveName work out hard.
-	<<set $slaves[$i].diet = "muscle building">>
-<<elseif ($slaves[$i].muscles <= 95) && ($HeadGirl.fetish == "masochist") && ($HeadGirl.fetishKnown == 1) && ($slaves[$i].amp != 1) && ($slaves[$i].diet != "muscle building")>>
-	$HeadGirl.slaveName wants a strong girl to spank her, so she makes $slaves[$i].slaveName work out hard.
-	<<set $slaves[$i].diet = "muscle building">>
-<<elseif ($slaves[$i].muscles <= 5) && ($slaves[$i].amp != 1) && ($slaves[$i].diet != "muscle building")>>
-	$HeadGirl.slaveName likes a bit of muscle, so she makes $slaves[$i].slaveName work out hard.
-	<<set $slaves[$i].diet = "muscle building">>
-<<elseif ($slaves[$i].balls > 0) && ($HeadGirl.fetish is "cumslut") && ($HeadGirl.fetishKnown == 1) && ($slaves[$i].diet != "cum production") && ($cumProDiet == 1)>>
-	HeadGirl.slaveName loves cum, so she puts $slaves[$i].slaveName on a diet designed to make her cum harder and stronger.
-	<<set $slaves[$i].diet = "cum production">>
-<<elseif ($slaves[$i].diet != "healthy")>>
-	<<set $slaves[$i].diet = "healthy">>
+<<if ($slaves[$i].weight < 100 && $arcologies[0].FSHedonisticDecadence >= 20) || ($slaves[$i].weight < -10)>>
+	$HeadGirl.slaveName thinks $slaves[$i].slaveName could use a little extra weight <<if $arcologies[0].FSHedonisticDecadence >= 20>>since plump girls are all the rage in your arcology <</if>>
+	<<if $slaves[$i].diet != "fattening">>
+		and assigns her a diet to fatten her up.
+		<<set $slaves[$i].diet = "fattening">>
+	<<else>>
+		and keeps her on her fattening diet.
+	<</if>>
+<<elseif $slaves[$i].weight > 30 && $arcologies[0].FSHedonisticDecadence == "unset">>
+	$HeadGirl.slaveName thinks $slaves[$i].slaveName is a little too porky
+	<<if $slaves[$i].diet != "restricted">>
+		and puts her on a diet.
+		<<set $slaves[$i].diet = "restricted">>
+	<<else>>
+		and keeps her on her diet.
+	<</if>>
+<<elseif (($slaves[$i].muscles <= 95 && ($arcologies[0].FSPhysicalIdealist > 0 || (($HeadGirl.fetish == "submissive" || $HeadGirl.fetish == "masochist") && $HeadGirl.fetishKnown == 1))) || $slaves[$i].muscles <= 5) && $slaves[$i].amp != 1>>
+	$HeadGirl.slaveName thinks $slaves[$i].slaveName 
+	<<if $arcologies[0].FSPhysicalIdealist > 0>>
+		could use bigger muscles to support your societal goals
+	<<elseif $HeadGirl.fetish == "submissive">>
+		could use bigger muscles to better dominate her with in bed
+	<<elseif $HeadGirl.fetish == "masochist">>
+		could use bigger muscles to better spank her
+	<<else>>
+		could use a bit of muscle
+	<</if>>
+	<<if $slaves[$i].diet != "muscle building">>
+		and makes her work out hard.
+		<<set $slaves[$i].diet = "muscle building">>
+	<<else>>
+		and keeps her working out.
+	<</if>>
+<<elseif $slaves[$i].balls > 0 && $HeadGirl.fetish == "cumslut" && $HeadGirl.fetishKnown == 1 && $cumProDiet == 1>>
+	HeadGirl.slaveName loves cum, so she
+	<<if $slaves[$i].diet != "cum production">>
+		puts
+		<<set $slaves[$i].diet = "cum production">>
+	<<else>>
+		keeps
+	<</if>>
+	$slaves[$i].slaveName on a diet designed to make her cum harder and stronger.
+<<else>>
+	$HeadGirl.slaveName thinks $slaves[$i].slaveName is fine as is
+	<<if $slaves[$i].diet != "healthy">>
+		and puts her on a normal diet.
+		<<set $slaves[$i].diet = "healthy">>
+	<<else>>
+		and keeps her on her healthy diet
+	<</if>>
 <</if>>
 
 <<if $HGSuiteHormones != 0 && $slaves[$i].hormones != 2>>
diff --git a/src/uncategorized/saLongTermEffects.tw b/src/uncategorized/saLongTermEffects.tw
index 2ed9d8f8ff8ee86878b35c2a9668aa833b4b3b8d..dbec3f4d7908dbfe85b03ee051a49d381e60b757 100644
--- a/src/uncategorized/saLongTermEffects.tw
+++ b/src/uncategorized/saLongTermEffects.tw
@@ -3319,15 +3319,15 @@
 
 <<if $slaves[$i].diet == "muscle building">>
 <<if ($slaves[$i].muscles > 30)>>
-	<<if ($slaves[$i].face-$slaves[$i].faceImplant > 10) && (random(1,100) > 90)>>
-		All the hormones in $possessive system from $possessive heavy workouts @@.orange;harden $possessive face a little.@@
+	<<if ($slaves[$i].face-$slaves[$i].faceImplant > 10) && (random(1,100) > 90) && $slaves[$i].drugs == "steroids">>
+		All the hormones in $possessive system from $possessive heavy, steroid enhanced workouts @@.orange;harden $possessive face a little.@@
 		<<set $slaves[$i].face -= 5>>
 	<</if>>
 	<<if (($slaves[$i].boobs - $slaves[$i].boobsImplant) > 250)>>
-	<<if (random(1,100) > 95)>>
-		All the hormones in $possessive system from $possessive heavy workouts @@.orange;shrink $possessive breasts slightly.@@
-		<<set $slaves[$i].boobs -= 50>>
-	<</if>>
+		<<if (random(1,100) > 95)>>
+			All the hormones in $possessive system from $possessive heavy workouts @@.orange;shrink $possessive breasts slightly.@@
+			<<set $slaves[$i].boobs -= 50>>
+		<</if>>
 	<</if>>
 <</if>>
 <</if>>
@@ -3600,6 +3600,8 @@
 
 	<<if ($slaves[$i].diet == "XX" || $slaves[$i].diet == "XXY")>>
 	    <<set $slaves[$i].pubertyAgeXX -= 0.1>>
+	<<elseif $slaves[$i].diet == "fertility">>
+		 <<set $slaves[$i].pubertyAgeXX -= 0.1>>
 	<</if>>
 	<<if ($slaves[$i].drugs == "fertility drugs")>>
 	    <<set $slaves[$i].pubertyAgeXX -= 0.1>>
@@ -4133,8 +4135,8 @@
 		<</if>>
 	<</if>> /* closes .preg >= 10 */
 
-	<<if ($slaves[$i].preg > 0 && $slaves[$i].pregType == 0)>> //Catch for strange cases - now with checking.
-	 	<<SetPregType $slaves[$i]>> 
+	<<if ($slaves[$i].preg > 0 && $slaves[$i].pregType == 0)>> /*Catch for strange cases - now with checking.*/
+	 	<<set $slaves[$i].pregType = setPregType($slaves[$i])>>
 	 	<<set WombImpregnate($slaves[$i], $slaves[$i].pregType, $slaves[$i].pregSource, $slaves[$i].preg)>>
 	<</if>>
 
@@ -4189,7 +4191,7 @@
 		<</if>>
 	<</if>>
 
-	<<set $slaves[$i].preg = 1, $slaves[$i].pregSource = -1, $slaves[$i].pregWeek = 1, $slaves[$i].pregKnown = 1>><<SetPregType $slaves[$i]>>
+	<<set $slaves[$i].preg = 1, $slaves[$i].pregSource = -1, $slaves[$i].pregWeek = 1, $slaves[$i].pregKnown = 1>><<set $slaves[$i].pregType = setPregType($slaves[$i])>>
 	<<set WombImpregnate($slaves[$i], $slaves[$i].pregType, -1, 1)>>
 	<<set $activeSlave = $slaves[$i]>><<if $slaves[$i].mpreg == 1>><<AnalVCheck 10>><<else>><<VaginalVCheck 10>><</if>><<set $slaves[$i] = $activeSlave>>
 
@@ -4284,18 +4286,16 @@
 		<</if>> /* closes not fuckdoll not mindbroken */
 
 		<<set $slaves[$i].preg = 1, $slaves[$i].pregSource = $HeadGirl.ID, $slaves[$i].pregWeek = 1, $slaves[$i].pregKnown = 1, $HGCum -= 1, $HeadGirl.penetrativeCount += 10, $penetrativeTotal += 10>>
-		<<SetPregType $slaves[$i]>>
+		<<set $slaves[$i].pregType = setPregType($slaves[$i])>>
 		<<set WombImpregnate($slaves[$i], $slaves[$i].pregType, $HeadGirl.ID, 1)>>
 		<<set $activeSlave = $slaves[$i]>><<if $slaves[$i].mpreg == 1>><<AnalVCheck 10>><<else>><<VaginalVCheck 10>><</if>><<set $slaves[$i] = $activeSlave>>
-		<<for $j = 0; $j < $slaves.length; $j++>>
-			<<if $HeadGirl.ID == $slaves[$j].ID>>
-				<<set $slaves[$j] = $HeadGirl>>
-				<<break>>
-			<</if>>
-		<</for>>
+		<<set _saLTE = $slaves.findIndex(function(s) { return s.ID == $HeadGirl.ID; })>>
+		<<if _saLTE != -1>>
+			<<set $slaves[_saLTE] = $HeadGirl>>
+		<</if>>
 
 	<</if>> /* closes HG impregnation */
-<<elseif (_conceptionSeed > 50)>>
+<<elseif _conceptionSeed > (50-($reproductionFormula*10))>>
 	<<switch $slaves[$i].assignment>>
 	<<case "rest" "stay confined" "be confined in the cellblock">>
 		/* these assignments are safe from random impregnation */
@@ -4303,14 +4303,14 @@
 	<<case "be your Concubine">>
 		<<if ($PC.dick == 1) && ($slaves[$i].fuckdoll == 0) && ($slaves[$i].fetish != "mindbroken") && ($slaves[$i].eggType == "human")>>
 			As your concubine, she takes care to only share her fertile <<if $slaves[$i].mpreg == 1>>ass<<else>>pussy<</if>> with you. Her efforts paid off; @@.lime;she has become pregnant with your child.@@
-			<<set $slaves[$i].preg = 1, $slaves[$i].pregSource = -1, $slaves[$i].pregWeek = 1, $slaves[$i].pregKnown = 1>><<SetPregType $slaves[$i]>>
+			<<set $slaves[$i].preg = 1, $slaves[$i].pregSource = -1, $slaves[$i].pregWeek = 1, $slaves[$i].pregKnown = 1>><<set $slaves[$i].pregType = setPregType($slaves[$i])>>
 			<<set WombImpregnate($slaves[$i], $slaves[$i].pregType, -1, 1)>>
 		<</if>>
 
 	<<case "serve in the master suite">>
 		<<if ($PC.dick == 1) && ($slaves[$i].eggType == "human") && (($slaves[$i].toyHole == "all her holes" && $slaves[$i].mpreg != 1 && $slaves[$i].vagina > 0) || ($slaves[$i].toyHole == "all her holes" && $slaves[$i].mpreg == 1 && $slaves[$i].anus > 0) || ($slaves[$i].toyHole == "pussy" && $slaves[$i].mpreg != 1) || ($slaves[$i].mpreg == 1 && $slaves[$i].toyHole == "ass"))>>
 			You frequently avail yourself to her fertile <<if $slaves[$i].mpreg == 1>>ass<<else>>pussy<</if>>. It's no surprise when @@.lime;she ends up pregnant with your child.@@
-			<<set $slaves[$i].preg = 1, $slaves[$i].pregSource = -1, $slaves[$i].pregWeek = 1, $slaves[$i].pregKnown = 1>><<SetPregType $slaves[$i]>>
+			<<set $slaves[$i].preg = 1, $slaves[$i].pregSource = -1, $slaves[$i].pregWeek = 1, $slaves[$i].pregKnown = 1>><<set $slaves[$i].pregType = setPregType($slaves[$i])>>
 			<<set WombImpregnate($slaves[$i], $slaves[$i].pregType, -1, 1)>>
 
 		<<else>> /% look for a random father among master suite slaves %/
@@ -4326,7 +4326,7 @@
 					<</if>>
 					/* found eligible father */
 					After all the unprotected sex $pronoun had this week, it's really no surprise when @@.lime;$pronoun ends up pregnant.@@
-					<<set $slaves[$i].preg = 1, $slaves[$i].pregSource = _msSlaves[_m].ID, $slaves[$i].pregWeek = 1, $slaves[$i].pregKnown = 1>><<SetPregType $slaves[$i]>>
+					<<set $slaves[$i].preg = 1, $slaves[$i].pregSource = _msSlaves[_m].ID, $slaves[$i].pregWeek = 1, $slaves[$i].pregKnown = 1>><<set $slaves[$i].pregType = setPregType($slaves[$i])>>
 					<<set WombImpregnate($slaves[$i], $slaves[$i].pregType, $slaves[$i].pregSource, 1)>>
 					<<break>>
 				<</if>>
@@ -4336,21 +4336,21 @@
 	<<case "please you">>
 		<<if ($PC.dick == 1) && ($slaves[$i].eggType == "human") && (($slaves[$i].toyHole == "all her holes" && $slaves[$i].mpreg != 1 && $slaves[$i].vagina > 0) || ($slaves[$i].toyHole == "all her holes" && $slaves[$i].mpreg == 1 && $slaves[$i].anus > 0) || ($slaves[$i].toyHole == "pussy" && $slaves[$i].mpreg != 1) || ($slaves[$i].mpreg == 1 && $slaves[$i].toyHole == "ass"))>>
 			You frequently avail yourself to her fertile <<if $slaves[$i].mpreg == 1>>ass<<else>>pussy<</if>>. It's no surprise when @@.lime;she ends up pregnant with your child.@@
-			<<set $slaves[$i].preg = 1, $slaves[$i].pregSource = -1, $slaves[$i].pregWeek = 1, $slaves[$i].pregKnown = 1>><<SetPregType $slaves[$i]>>
+			<<set $slaves[$i].preg = 1, $slaves[$i].pregSource = -1, $slaves[$i].pregWeek = 1, $slaves[$i].pregKnown = 1>><<set $slaves[$i].pregType = setPregType($slaves[$i])>>
 			<<set WombImpregnate($slaves[$i], $slaves[$i].pregType, -1, 1)>>
 		<</if>>
 
 	<<case "work in the brothel" "serve in the club" "whore" "serve the public">>
 		<<if ($slaves[$i].eggType == "human")>>
 			Due to all the citizens cumming in $possessive fertile <<if $slaves[$i].mpreg == 1>>ass<<else>>pussy<</if>>, @@.lime;$pronoun has become pregnant.@@
-			<<set $slaves[$i].preg = 1, $slaves[$i].pregSource = -2, $slaves[$i].pregWeek = 1, $slaves[$i].pregKnown = 1>><<SetPregType $slaves[$i]>>
+			<<set $slaves[$i].preg = 1, $slaves[$i].pregSource = -2, $slaves[$i].pregWeek = 1, $slaves[$i].pregKnown = 1>><<set $slaves[$i].pregType = setPregType($slaves[$i])>>
 			<<set WombImpregnate($slaves[$i], $slaves[$i].pregType, -2, 1)>>
 		<</if>>
 
 	<<case "work a glory hole" "be confined in the arcade">>
 		<<if ($slaves[$i].eggType == "human")>>
 			Due to all the customers cumming in $possessive fertile, restrained <<if $slaves[$i].mpreg == 1>>ass<<else>>pussy<</if>>, @@.lime;$pronoun has become pregnant.@@
-			<<set $slaves[$i].preg = 1, $slaves[$i].pregSource = -2, $slaves[$i].pregWeek = 1, $slaves[$i].pregKnown = 1>><<SetPregType $slaves[$i]>>
+			<<set $slaves[$i].preg = 1, $slaves[$i].pregSource = -2, $slaves[$i].pregWeek = 1, $slaves[$i].pregKnown = 1>><<set $slaves[$i].pregType = setPregType($slaves[$i])>>
 			<<set WombImpregnate($slaves[$i], $slaves[$i].pregType, -2, 1)>>
 		<</if>>
 
@@ -4401,7 +4401,7 @@
 			<</if>>
 			<<if $slaves[$i].pregSource != 0>>
 				A quick scan after a bout of morning nausea reveals that @@.lime;$pronoun has become pregnant.@@
-				<<set $slaves[$i].preg = 1, $slaves[$i].pregWeek = 1, $slaves[$i].pregKnown = 1>><<SetPregType $slaves[$i]>>
+				<<set $slaves[$i].preg = 1, $slaves[$i].pregWeek = 1, $slaves[$i].pregKnown = 1>><<set $slaves[$i].pregType = setPregType($slaves[$i])>>
 				<<set WombImpregnate($slaves[$i], $slaves[$i].pregType, $slaves[$i].pregSource, 1)>>
 			<</if>>
 		<</if>> /* closes random chance and non-zero sex acts check */
@@ -4415,13 +4415,13 @@
 		<<set $slaves[$i].pregType = 0>>
 		<<set WombFlush($slaves[$i])>>
 	<</if>>
-	<<if $slaves[$i].readyOva != 0>>
-		<<set $slaves[$i].readyOva = 0>>
-	<</if>>
 <<elseif $slaves[$i].preg > 0 && $slaves[$i].pregType == 0>>
-	<<SetPregType $slaves[$i]>>
+	<<set $slaves[$i].pregType = setPregType($slaves[$i])>>
 	<<set WombImpregnate($slaves[$i], $slaves[$i].pregType, $slaves[$i].pregSource, 1)>>
 <</if>>
+<<if $slaves[$i].readyOva != 0>>
+	<<set $slaves[$i].readyOva = 0>>
+<</if>>
 <</if>> /* closes $seePreg */
 
 <<if $slaves[$i].bellyFluid >= 1500>> /* PREGMOD: NOT PREGNANT, YES INFLATION */
@@ -4951,18 +4951,16 @@
 		<</if>>
 		<<if $slaves[$i].pregKnown == 1>>
 			<<if $slaves[$i].pregSource > 0>>
-				<<for $j = 0; $j < $slaves.length; $j++>>
-				<<if $slaves[$i].pregSource == $slaves[$j].ID>>
-					<<if $slaves[$i].race != $slaves[$j].race>>
-						Society @@.red;strongly disapproves@@ of your allowing a pure $arcologies[0].FSSupremacistRace slave to be miscegenated by $slaves[$j].slaveName.
+				<<set _saLTE = $slaves.find(function(s) { return $slaves[$i].pregSource == s.ID; })>>
+				<<if def _saLTE>>
+					<<if $slaves[$i].race != _saLTE.race>>
+						Society @@.red;strongly disapproves@@ of your allowing a pure $arcologies[0].FSSupremacistRace slave to be miscegenated by _saLTE.slaveName.
 						<<FSChangePorn "Supremacist" -2>>
 					<<else>>
 						Society @@.green;strongly approves@@ of your using slave breeders like $slaves[$i].slaveName to propagate the $arcologies[0].FSSupremacistRace race.
 						<<FSChangePorn "Supremacist" 2>>
 					<</if>>
-					<<break>>
 				<</if>>
-				<</for>>
 			<</if>>
 		<</if>>
 		<<if $slaves[$i].fuckdoll > 0>>
@@ -6412,7 +6410,7 @@
 			<</if>>
 		<<else>>
 			<<if ($slaves[$i].pregType >= 20)>>
-				Her straining womb is @@.mediumorchid;very worrying@@ to her. She moans @@.red;painfully@@ every time one of her brood moves within her.
+				Her straining womb is @@.mediumorchid;very worrying@@ to her. She @@.red;moans with pain@@ every time one of her brood moves within her.
 				<<if $slaves[$i].pregControl == "slow gestation" && $slaves[$i].intelligence > -2>>
  					Her slowed gestation rate gives her body more time to adapt to her hyper gravidity, easing some of her worries.
 					<<set $slaves[$i].devotion -= 1>>
diff --git a/src/uncategorized/saPleaseYou.tw b/src/uncategorized/saPleaseYou.tw
index 103c11366ab5922d322970b019b47c6c4c3a5d0e..a965788da5afbe51daf13bd355927e99acbc2c48 100644
--- a/src/uncategorized/saPleaseYou.tw
+++ b/src/uncategorized/saPleaseYou.tw
@@ -832,7 +832,7 @@ serves you this week.
 	<</if>>
 <</if>>
 
-<<FResult $slaves[$i]>>
+<<set FResult($slaves[$i])>>
 <<Beauty $slaves[$i]>>
 
 <<set _multiplier = 0.1>>
diff --git a/src/uncategorized/saServeThePublic.tw b/src/uncategorized/saServeThePublic.tw
index 776734fe301583980c02d6cd735f7255fdefd996..e65a3b6ec068fe4cdd81862e6f454d12dda746a8 100644
--- a/src/uncategorized/saServeThePublic.tw
+++ b/src/uncategorized/saServeThePublic.tw
@@ -8,7 +8,7 @@
 	<<set $publicServants += 1>>
 <</if>>
 
-<<FResult $slaves[$i]>>
+<<set FResult($slaves[$i])>>
 <<if ($slaves[$i].releaseRules == "restrictive") && ($slaves[$i].standardReward !== "orgasm")>>
 	<<set $FResult += 2>>
 <</if>>
diff --git a/src/uncategorized/saServeYourOtherSlaves.tw b/src/uncategorized/saServeYourOtherSlaves.tw
index f75f3188ae09d344796a0e8f0ea75b7b8bbeccca..d0b392f0947f5ac03965df529b6d3c37306d2f90 100644
--- a/src/uncategorized/saServeYourOtherSlaves.tw
+++ b/src/uncategorized/saServeYourOtherSlaves.tw
@@ -61,20 +61,20 @@
 		<<set $slaves[$i].tired = 1>>
 		<<if $slaves[$i].sexualFlaw == "self hating">>
 			With so many other slaves taking advantage of her body, her life's purpose of @@.hotpink;being nothing more than a piece of meat@@ has come true.
-			<<set $slaves[$i].deovtion += 5>>
+			<<set $slaves[$i].devotion += 5>>
 		<<elseif $slaves[$i].sexualFlaw == "attention whore">>
 			With little competition for her body and so many slaves eager to use her, her dreams of being the center of attention are @@.hotpink;have come true.@@
 			<<if $slaves[$i].weight < 10 && $slaves[$i].belly < 100>>
 				<<if canDoVaginal($slaves[$i]) && $slaves[$i].vagina > 0 && canDoAnal($slaves[$i]) && $slaves[$i].anus > 0>>
 					She ends each day cradling her cum swollen stomach, marvelling at the "attention" bestowed upon her.
 				<<elseif (canDoVaginal($slaves[$i]) && $slaves[$i].vagina > 0) || (canDoAnal($slaves[$i]) && $slaves[$i].anus > 0)>>
-					By the end of the day, her stomach has a noticible bulge to it from all the "attention" bestowed upon her.
+					By the end of the day, her stomach has a noticeable bulge to it from all the "attention" bestowed upon her.
 				<</if>>
 			<</if>>
-			<<set $slaves[$i].deovtion += 5>>
+			<<set $slaves[$i].devotion += 5>>
 		<<elseif $slaves[$i].energy > 95>>
 			With so many other slaves using her body, her @@.hotpink;burning libido is finally sated.@@
-			<<set $slaves[$i].deovtion += 2>>
+			<<set $slaves[$i].devotion += 2>>
 		<</if>>
 	<<else>>
 		Since <<if $subSlave == 1>>she is the only slave<<else>>there are so few other slaves<</if>> servicing your stock, she is used to the @@.red;point of exhaustion.@@
@@ -97,20 +97,20 @@
 		<</if>>
 		<<if $slaves[$i].sexualFlaw == "self hating">>
 			With so many other slaves taking advantage of her body, her life's purpose of @@.hotpink;being nothing more than a piece of meat@@ has come true.
-			<<set $slaves[$i].deovtion += 5>>
+			<<set $slaves[$i].devotion += 5>>
 		<<elseif $slaves[$i].sexualFlaw == "attention whore">>
 			With little competition for her body and so many slaves eager to use her, her dreams of being the center of attention are @@.hotpink;have come true.@@
 			<<if $slaves[$i].weight < 10 && $slaves[$i].belly < 100>>
 				<<if canDoVaginal($slaves[$i]) && $slaves[$i].vagina > 0 && canDoAnal($slaves[$i]) && $slaves[$i].anus > 0>>
 					She ends each day cradling her cum swollen stomach, marvelling at the "attention" bestowed upon her.
 				<<elseif (canDoVaginal($slaves[$i]) && $slaves[$i].vagina > 0) || (canDoAnal($slaves[$i]) && $slaves[$i].anus > 0)>>
-					By the end of the day, her stomach has a noticible bulge to it from all the "attention" bestowed upon her.
+					By the end of the day, her stomach has a noticeable bulge to it from all the "attention" bestowed upon her.
 				<</if>>
 			<</if>>
-			<<set $slaves[$i].deovtion += 5>>
+			<<set $slaves[$i].devotion += 5>>
 		<<elseif $slaves[$i].energy > 95>>
 			With so many other slaves using her body, her @@.hotpink;burning libido is finally sated.@@
-			<<set $slaves[$i].deovtion += 2>>
+			<<set $slaves[$i].devotion += 2>>
 		<</if>>
 	<</if>>
 <</if>>
diff --git a/src/uncategorized/saWhore.tw b/src/uncategorized/saWhore.tw
index 5a1ba416ca2bcf0644214880149f1da7fccbd162..dfcf6d445e740502c52df0a94c05525c95eaa850 100644
--- a/src/uncategorized/saWhore.tw
+++ b/src/uncategorized/saWhore.tw
@@ -3,7 +3,7 @@
 <!-- Statistics gathering -->
 <<set _incomeStats = getSlaveStatisticData($slaves[$i], $slaves[$i].assignment === Job.BROTHEL ? $facility.brothel : undefined)>>
 
-<<FResult $slaves[$i]>>
+<<set FResult($slaves[$i])>>
 <<if ($slaves[$i].releaseRules == "restrictive") && ($slaves[$i].standardReward !== "orgasm")>>
 	<<set $FResult += 2>>
 <</if>>
diff --git a/src/uncategorized/schoolroom.tw b/src/uncategorized/schoolroom.tw
index 461bf359c2e73b0ce8d67e283f138bb157c33313..fe4dd54e33c9a7473625afe96953a91587b83a65 100644
--- a/src/uncategorized/schoolroom.tw
+++ b/src/uncategorized/schoolroom.tw
@@ -71,7 +71,7 @@ $schoolroomNameCaps is well-equipped, with wall screens to display lessons. Thes
 	[[Decommission the schoolroom|Main][$schoolroom = 0, $schoolroomUpgradeSkills = 0, $schoolroomUpgradeLanguage = 0, $schoolroomUpgradeRemedial = 0, $schoolroomDecoration = "standard"]]
 <</if>>
 <<set _Tmult0 = Math.trunc($schoolroom*1000*$upgradeMultiplierArcology)>>
-<br>$schoolroomNameCaps has room to house $schoolroom slaves while they learn. Currently $schoolroomSlaves are learning.
+<br>$schoolroomNameCaps has room to house $schoolroom slaves while they learn. Currently $schoolroomSlaves <<if $schoolroomSlaves == 1>>is<<else>>are<</if>> learning.
 [[Expand the schoolroom|Schoolroom][$cash -= _Tmult0, $schoolroom += 5, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>>//
 
 <br>
diff --git a/src/uncategorized/seBirth.tw b/src/uncategorized/seBirth.tw
index f48e8fe31f4c587112411c3e32fec694f91c8153..dc783e56ed32c9b834a0629708c93fccc2c2b927 100644
--- a/src/uncategorized/seBirth.tw
+++ b/src/uncategorized/seBirth.tw
@@ -23,6 +23,12 @@ I need to break single passage to several widgets, as it's been overcomplicated
 
 <<for $i to 0; $i < $slaves.length; $i++>>
 	<<if $slaves[$i].labor == 1>>
+		<<if ndef $slaves[$i].laborCount>>
+			<<set $slaves[$i].laborCount = 0>>
+			<<if $slaves[$i].birthsTotal > 0 && $slaves[$i].laborCount == 0>>
+				<<set $slaves[$i].laborCount = $slaves[$i].birthsTotal>> /*we do not have a way to know multiples birth count for backward compatibility code. :( */
+			<</if>>
+		<</if>>
 		<<set $dispositionId = _.uniqueId('babyDisposition-')>>
 		Birth report: @@.coral;$slaves[$i].slaveName <<if $slaves[$i].slaveSurname != 0>>$slaves[$i].slaveSurname<</if>>@@
 		<br>
@@ -41,7 +47,7 @@ I need to break single passage to several widgets, as it's been overcomplicated
 		<<seBirthCritical>>
 		
 		<br><br><hr style="margin:0"><br>
-
+		<<set $slaves[$i].laborCount++>>
 	<</if>>
 <</for>>
 
diff --git a/src/uncategorized/seRaiding.tw b/src/uncategorized/seRaiding.tw
index 96c1b3cdcae40ca28589952fc420f7002f4f7d1d..a0a5d1cb25b92f072f4dd199539c2008db7035e2 100644
--- a/src/uncategorized/seRaiding.tw
+++ b/src/uncategorized/seRaiding.tw
@@ -83,7 +83,7 @@ Worthy of consideration is that although the $mercenariesTitle will enslave the
 	<<if isFertile($activeSlave) && $seePreg != 0>>
 		<<set $activeSlave.preg = either(-1, -1, -1, 0, 0, 0, 5, 10, 20, 30, 39)>>
 		<<if $activeSlave.preg > 0>>
-			<<SetPregType $activeSlave>>
+			<<set $activeSlave.pregType = setPregType($activeSlave)>>
 			<<set WombImpregnate($activeSlave, $activeSlave.pregType, 0, $activeSlave.preg)>>
 			<<set $activeSlave.pregKnown = 1>>
 			<<set $activeSlave.pregWeek = $activeSlave.preg>>
@@ -119,7 +119,7 @@ Worthy of consideration is that although the $mercenariesTitle will enslave the
 	<<if isFertile($activeSlave) && $seePreg != 0>>
 		<<set $activeSlave.preg = either(-1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 5, 10, 20, 30, 39)>>
 		<<if $activeSlave.preg > 0>>
-			<<SetPregType $activeSlave>>
+			<<set $activeSlave.pregType = setPregType($activeSlave)>>
 			<<set WombImpregnate($activeSlave, $activeSlave.pregType, 0, $activeSlave.preg)>>
 			<<set $activeSlave.pregKnown = 1>>
 			<<set $activeSlave.pregWeek = $activeSlave.preg>>
@@ -150,7 +150,7 @@ Worthy of consideration is that although the $mercenariesTitle will enslave the
 	<<if isFertile($activeSlave) && $seePreg != 0>>
 		<<set $activeSlave.preg = either(-1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 5, 10)>>
 		<<if $activeSlave.preg > 0>>
-			<<SetPregType $activeSlave>>
+			<<set $activeSlave.pregType = setPregType($activeSlave)>>
 			<<set WombImpregnate($activeSlave, $activeSlave.pregType, 0, $activeSlave.preg)>>
 			<<set $activeSlave.pregKnown = 1>>
 			<<set $activeSlave.pregWeek = $activeSlave.preg>>
@@ -228,7 +228,7 @@ Worthy of consideration is that although the $mercenariesTitle will enslave the
 	<<if isFertile($activeSlave) && $seePreg != 0>>
 		<<set $activeSlave.preg = either(-1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 5, 5)>>
 		<<if $activeSlave.preg > 0>>
-			<<SetPregType $activeSlave>>
+			<<set $activeSlave.pregType = setPregType($activeSlave)>>
 			<<set WombImpregnate($activeSlave, $activeSlave.pregType, 0, $activeSlave.preg)>>
 			<<set $activeSlave.pregKnown = 1>>
 			<<set $activeSlave.pregWeek = $activeSlave.preg>>
@@ -257,7 +257,7 @@ Worthy of consideration is that although the $mercenariesTitle will enslave the
 	<<if isFertile($activeSlave) && $seePreg != 0>>
 		<<set $activeSlave.preg = either(-1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 5, 10)>>
 		<<if $activeSlave.preg > 0>>
-			<<SetPregType $activeSlave>>
+			<<set $activeSlave.pregType = setPregType($activeSlave)>>
 			<<set WombImpregnate($activeSlave, $activeSlave.pregType, 0, $activeSlave.preg)>>
 			<<set $activeSlave.pregKnown = 1>>
 			<<set $activeSlave.pregWeek = $activeSlave.preg>>
@@ -305,7 +305,7 @@ Worthy of consideration is that although the $mercenariesTitle will enslave the
 	<<if isFertile($activeSlave) && $seePreg != 0>>
 		<<set $activeSlave.preg = either(-1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 5, 10)>>
 		<<if $activeSlave.preg > 0>>
-			<<SetPregType $activeSlave>>
+			<<set $activeSlave.pregType = setPregType($activeSlave)>>
 			<<set WombImpregnate($activeSlave, $activeSlave.pregType, 0, $activeSlave.preg)>>
 			<<set $activeSlave.pregKnown = 1>>
 			<<set $activeSlave.pregWeek = $activeSlave.preg>>
@@ -380,7 +380,7 @@ Worthy of consideration is that although the $mercenariesTitle will enslave the
 	<<if isFertile($activeSlave) && $seePreg != 0>>
 		<<set $activeSlave.preg = either(-1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 5, 5)>>
 		<<if $activeSlave.preg > 0>>
-			<<SetPregType $activeSlave>>
+			<<set $activeSlave.pregType = setPregType($activeSlave)>>
 			<<set WombImpregnate($activeSlave, $activeSlave.pregType, 0, $activeSlave.preg)>>
 			<<set $activeSlave.pregKnown = 1>>
 			<<set $activeSlave.pregWeek = $activeSlave.preg>>
@@ -410,7 +410,7 @@ Worthy of consideration is that although the $mercenariesTitle will enslave the
 		<<if isFertile($activeSlave) && $seePreg != 0>>
 			<<set $activeSlave.preg = either(-1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 5, 10)>>
 			<<if $activeSlave.preg > 0>>
-				<<SetPregType $activeSlave>>
+				<<set $activeSlave.pregType = setPregType($activeSlave)>>
 				<<set WombImpregnate($activeSlave, $activeSlave.pregType, 0, $activeSlave.preg)>>
 				<<set $activeSlave.pregKnown = 1>>
 				<<set $activeSlave.pregWeek = $activeSlave.preg>>
@@ -443,7 +443,7 @@ Worthy of consideration is that although the $mercenariesTitle will enslave the
 	<<if isFertile($activeSlave) && $seePreg != 0>>
 		<<set $activeSlave.preg = either(-1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 10, 20, 30, 39)>>
 		<<if $activeSlave.preg > 0>>
-			<<SetPregType $activeSlave>>
+			<<set $activeSlave.pregType = setPregType($activeSlave)>>
 			<<set WombImpregnate($activeSlave, $activeSlave.pregType, 0, $activeSlave.preg)>>
 			<<set $activeSlave.pregKnown = 1>>
 			<<set $activeSlave.pregWeek = $activeSlave.preg>>
@@ -501,7 +501,7 @@ Worthy of consideration is that although the $mercenariesTitle will enslave the
 	<<if isFertile($activeSlave) && $seePreg != 0>>
 		<<set $activeSlave.preg = either(-1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 10, 20, 30, 39)>>
 		<<if $activeSlave.preg > 0>>
-			<<SetPregType $activeSlave>>
+			<<set $activeSlave.pregType = setPregType($activeSlave)>>
 			<<set WombImpregnate($activeSlave, $activeSlave.pregType, 0, $activeSlave.preg)>>
 			<<set $activeSlave.pregKnown = 1>>
 			<<set $activeSlave.pregWeek = $activeSlave.preg>>
@@ -546,7 +546,7 @@ Worthy of consideration is that although the $mercenariesTitle will enslave the
 	<<if isFertile($activeSlave) && $seePreg != 0>>
 		<<set $activeSlave.preg = either(-1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 10, 20, 30, 39)>>
 		<<if $activeSlave.preg > 0>>
-			<<SetPregType $activeSlave>>
+			<<set $activeSlave.pregType = setPregType($activeSlave)>>
 			<<set WombImpregnate($activeSlave, $activeSlave.pregType, 0, $activeSlave.preg)>>
 			<<set $activeSlave.pregKnown = 1>>
 			<<set $activeSlave.pregWeek = $activeSlave.preg>>
diff --git a/src/uncategorized/seRecruiterSuccess.tw b/src/uncategorized/seRecruiterSuccess.tw
index 419020ebf24c8367c2cb190fe2e6d7cbf2236c8b..089fec83f5aa19a020addc0aa671928f78003be3 100644
--- a/src/uncategorized/seRecruiterSuccess.tw
+++ b/src/uncategorized/seRecruiterSuccess.tw
@@ -141,7 +141,7 @@ Your recruiter $Recruiter.slaveName has succeeded; she's convinced an old world
 <<set $activeSlave.health = random(-80,-20)>>
 <<set $activeSlave.vagina = random(1,3)>>
 <<set $activeSlave.preg = random(15,39)>>
-<<SetPregType $activeSlave>>
+<<set $activeSlave.pregType = setPregType($activeSlave)>>
 <<set WombImpregnate($activeSlave, $activeSlave.pregType, 0, $activeSlave.preg)>>
 <<set $activeSlave.pregKnown = 1>>
 <<set $activeSlave.pregWeek = $activeSlave.preg>>
diff --git a/src/uncategorized/seRetirement.tw b/src/uncategorized/seRetirement.tw
index f2ae903301389c58e55f5db3672b30d2493101e6..3a78ff690aae948155c6173fcf7538d1e3d387c4 100644
--- a/src/uncategorized/seRetirement.tw
+++ b/src/uncategorized/seRetirement.tw
@@ -147,7 +147,7 @@ When you return to your desk you realize something.
 	that she's quite eager to fuck you as a free woman.
 	<<if $activeSlave.relationship == -3>>
 		<<if $activeSlave.devotion+$activeSlave.trust >= 175>>
-			When she knows she has your attention, she flashes <<if $activeSlave.amp != 1>>her hand, revealing the steel ring that she wore when she was your slave wife<<else>> the steel ring that she wore when she was your slave wife attached to the same chain you placed around her neck on your wedding<</if>>. Even though the ring is meaningless to society, it holds a speacial meaning to you and her.
+			When she knows she has your attention, she flashes <<if $activeSlave.amp != 1>>her hand, revealing the steel ring that she wore when she was your slave wife<<else>> the steel ring that she wore when she was your slave wife attached to the same chain you placed around her neck on your wedding<</if>>. Even though the ring is meaningless to society, it holds a special meaning to you and her.
 		<<else>>
 			When she knows she has your attention, she produces the steel ring that she wore when she was your slave wife. She doesn't put it on, but she kisses it suggestively before putting it back in her purse.
 		<</if>>
diff --git a/src/uncategorized/seWedding.tw b/src/uncategorized/seWedding.tw
index fe71022465b9b6e7ed6514d5bdc2cfb9a274004e..d845c26f30d21714bef3a5144cfe8ec97b28a2ef 100644
--- a/src/uncategorized/seWedding.tw
+++ b/src/uncategorized/seWedding.tw
@@ -42,7 +42,7 @@
 				<<if canGetPregnant($activeSlave) && (random(1,100) > 70) && $activeSlave.eggType == "human">>
 					A pre-wedding checkup following an unusual bout of morning nausea reveals the bitch managed to get knocked up. There is no time before the ceremony to deal with it.
 					<<set $activeSlave.preg = 1, $activeSlave.pregKnown = 1, $activeSlave.pregWeek = 1>>
-					<<SetPregType $activeSlave>>
+					<<set $activeSlave.pregType = setPregType($activeSlave)>>
 					<<set WombImpregnate($activeSlave, $activeSlave.pregType, $activeSlave.pregSource, $activeSlave.preg)>>
 				<</if>>
 			<<elseif canDoVaginal($activeSlave)>>
@@ -57,7 +57,7 @@
 				<<if canGetPregnant($activeSlave) && (random(1,100) > 70) && $activeSlave.eggType == "human">>
 					A pre-wedding checkup following an unusual bout of morning nausea reveals the bitch managed to get knocked up. There is no time before the ceremony to deal with it.
 					<<set $activeSlave.preg = 1, $activeSlave.pregKnown = 1, $activeSlave.pregWeek = 1>>
-					<<SetPregType $activeSlave>>
+					<<set $activeSlave.pregType = setPregType($activeSlave)>>
 					<<set WombImpregnate($activeSlave, $activeSlave.pregType, $activeSlave.pregSource, $activeSlave.preg)>>
 				<</if>>
 			<<elseif canDoAnal($activeSlave)>>
@@ -72,7 +72,7 @@
 				<<if canGetPregnant($activeSlave) && (random(1,100) > 70) && $activeSlave.eggType == "human">>
 					A pre-wedding checkup following an unusual bout of morning nausea reveals the bitch managed to get knocked up. There is no time before the ceremony to deal with it.
 					<<set $activeSlave.preg = 1, $activeSlave.pregKnown = 1, $activeSlave.pregWeek = 1>>
-					<<SetPregType $activeSlave>>
+					<<set $activeSlave.pregType = setPregType($activeSlave)>>
 					<<set WombImpregnate($activeSlave, $activeSlave.pregType, $activeSlave.pregSource, $activeSlave.preg)>>
 				<</if>>
 			<<else>>
@@ -98,7 +98,7 @@
 				<<if canImpreg($activeSlave, $slaves[_m]) && (random(1,100) > 70)>>
 					A pre-wedding checkup following an unusual bout of morning nausea reveals the bitch managed to get knocked up. There is no time before the ceremony to deal with it.
 					<<set $activeSlave.preg = 1, $activeSlave.pregKnown = 1, $activeSlave.pregWeek = 1, $activeSlave.pregSource = $slaves[_m].ID, $slaves[_m].penetrativeCount += (_randomVag+_randomAnal), $penetrativeTotal += (_randomVag+_randomAnal)>>
-					<<SetPregType $activeSlave>>
+					<<set $activeSlave.pregType = setPregType($activeSlave)>>
 					<<set WombImpregnate($activeSlave, $activeSlave.pregType, $activeSlave.pregSource, $activeSlave.preg)>>
 				<</if>>
 			<<elseif canDoVaginal($activeSlave)>>
@@ -112,7 +112,7 @@
 				<<if canImpreg($activeSlave, $slaves[_m]) && (random(1,100) > 70)>>
 					A pre-wedding checkup following an unusual bout of morning nausea reveals the bitch managed to get knocked up. There is no time before the ceremony to deal with it.
 					<<set $activeSlave.preg = 1, $activeSlave.pregKnown = 1, $activeSlave.pregWeek = 1, $activeSlave.pregSource = $slaves[_m].ID, $slaves[_m].penetrativeCount += (_randomVag), $penetrativeTotal += (_randomVag)>>
-					<<SetPregType $activeSlave>>
+					<<set $activeSlave.pregType = setPregType($activeSlave)>>
 					<<set WombImpregnate($activeSlave, $activeSlave.pregType, $activeSlave.pregSource, $activeSlave.preg)>>
 				<</if>>
 			<<elseif canDoAnal($activeSlave)>>
@@ -126,7 +126,7 @@
 				<<if canImpreg($activeSlave, $slaves[_m]) && (random(1,100) > 70)>>
 					A pre-wedding checkup following an unusual bout of morning nausea reveals the bitch managed to get knocked up. There is no time before the ceremony to deal with it.
 					<<set $activeSlave.preg = 1, $activeSlave.pregKnown = 1, $activeSlave.pregWeek = 1, $activeSlave.pregSource = $slaves[_m].ID, $slaves[_m].penetrativeCount += (_randomAnal), $penetrativeTotal += (_randomAnal)>>
-					<<SetPregType $activeSlave>>
+					<<set $activeSlave.pregType = setPregType($activeSlave)>>
 					<<set WombImpregnate($activeSlave, $activeSlave.pregType, $activeSlave.pregSource, $activeSlave.preg)>>
 				<</if>>
 			<<else>>
@@ -152,7 +152,7 @@
 				<<if canImpreg($activeSlave, $slaves[_m]) && (random(1,100) > 70)>>
 					A pre-wedding checkup following an unusual bout of morning nausea reveals the bitch managed to get knocked up. There is no time before the ceremony to deal with it.
 					<<set $activeSlave.preg = 1, $activeSlave.pregKnown = 1, $activeSlave.pregWeek = 1, $activeSlave.pregSource = $slaves[_m].ID, $slaves[_m].penetrativeCount += (_randomVag+_randomAnal), $penetrativeTotal += (_randomVag+_randomAnal)>>
-					<<SetPregType $activeSlave>>
+					<<set $activeSlave.pregType = setPregType($activeSlave)>>
 					<<set WombImpregnate($activeSlave, $activeSlave.pregType, $activeSlave.pregSource, $activeSlave.preg)>>
 				<</if>>
 			<<elseif canDoVaginal($activeSlave)>>
@@ -166,7 +166,7 @@
 				<<if canImpreg($activeSlave, $slaves[_m]) && (random(1,100) > 70)>>
 					A pre-wedding checkup following an unusual bout of morning nausea reveals the bitch managed to get knocked up. There is no time before the ceremony to deal with it.
 					<<set $activeSlave.preg = 1, $activeSlave.pregKnown = 1, $activeSlave.pregWeek = 1, $activeSlave.pregSource = $slaves[_m].ID, $slaves[_m].penetrativeCount += (_randomVag), $penetrativeTotal += (_randomVag)>>
-					<<SetPregType $activeSlave>>
+					<<set $activeSlave.pregType = setPregType($activeSlave)>>
 					<<set WombImpregnate($activeSlave, $activeSlave.pregType, $activeSlave.pregSource, $activeSlave.preg)>>
 				<</if>>
 			<<elseif canDoAnal($activeSlave)>>
@@ -180,7 +180,7 @@
 				<<if canImpreg($activeSlave, $slaves[_m]) && (random(1,100) > 70)>>
 					A pre-wedding checkup following an unusual bout of morning nausea reveals the bitch managed to get knocked up. There is no time before the ceremony to deal with it.
 					<<set $activeSlave.preg = 1, $activeSlave.pregKnown = 1, $activeSlave.pregWeek = 1, $activeSlave.pregSource = $slaves[_m].ID, $slaves[_m].penetrativeCount += (_randomAnal), $penetrativeTotal += (_randomAnal)>>
-					<<SetPregType $activeSlave>>
+					<<set $activeSlave.pregType = setPregType($activeSlave)>>
 					<<set WombImpregnate($activeSlave, $activeSlave.pregType, $activeSlave.pregSource, $activeSlave.preg)>>
 				<</if>>
 			<<else>>
@@ -216,7 +216,7 @@
 				<<if canImpreg($activeSlave, $slaves[_m]) && (random(1,100) > 90)>>
 					A pre-wedding checkup following an unusual bout of morning nausea reveals $activeSlave.slaveName managed to get knocked up. There is no time before the ceremony to deal with it and the distraught girl is in a panic for making you go through this.
 					<<set $activeSlave.preg = 1, $activeSlave.pregKnown = 1, $activeSlave.pregWeek = 1, $activeSlave.pregSource = $slaves[_m].ID, $slaves[_m].penetrativeCount++, $penetrativeTotal++>>
-					<<SetPregType $activeSlave>>
+					<<set $activeSlave.pregType = setPregType($activeSlave)>>
 					<<set WombImpregnate($activeSlave, $activeSlave.pregType, $activeSlave.pregSource, $activeSlave.preg)>>
 				<</if>>
 			<<elseif canDoAnal($activeSlave)>>
@@ -225,7 +225,7 @@
 				<<if canImpreg($activeSlave, $slaves[_m]) && (random(1,100) > 90)>>
 					A pre-wedding checkup following an unusual bout of morning nausea reveals $activeSlave.slaveName managed to get knocked up. There is no time before the ceremony to deal with it and the distraught girl is in a panic for making you go through this.
 					<<set $activeSlave.preg = 1, $activeSlave.pregKnown = 1, $activeSlave.pregWeek = 1, $activeSlave.pregSource = $slaves[_m].ID, $slaves[_m].penetrativeCount++, $penetrativeTotal++>>
-					<<SetPregType $activeSlave>>
+					<<set $activeSlave.pregType = setPregType($activeSlave)>>
 					<<set WombImpregnate($activeSlave, $activeSlave.pregType, $activeSlave.pregSource, $activeSlave.preg)>>
 				<</if>>
 			<<else>>
@@ -240,7 +240,7 @@
 				<<if canImpreg($activeSlave, $slaves[_m]) && (random(1,100) > 90)>>
 					A pre-wedding checkup following an unusual bout of morning nausea reveals $activeSlave.slaveName managed to get knocked up. There is no time before the ceremony to deal with it and the distraught girl is in a panic for making you go through this.
 					<<set $activeSlave.preg = 1, $activeSlave.pregKnown = 1, $activeSlave.pregWeek = 1, $activeSlave.pregSource = $slaves[_m].ID, $slaves[_m].penetrativeCount++, $penetrativeTotal++>>
-					<<SetPregType $activeSlave>>
+					<<set $activeSlave.pregType = setPregType($activeSlave)>>
 					<<set WombImpregnate($activeSlave, $activeSlave.pregType, $activeSlave.pregSource, $activeSlave.preg)>>
 				<</if>>
 			<<elseif canDoAnal($activeSlave)>>
@@ -249,7 +249,7 @@
 				<<if canImpreg($activeSlave, $slaves[_m]) && (random(1,100) > 90)>>
 					A pre-wedding checkup following an unusual bout of morning nausea reveals $activeSlave.slaveName managed to get knocked up. There is no time before the ceremony to deal with it and the distraught girl is in a panic for making you go through this.
 					<<set $activeSlave.preg = 1, $activeSlave.pregKnown = 1, $activeSlave.pregWeek = 1, $activeSlave.pregSource = $slaves[_m].ID, $slaves[_m].penetrativeCount++, $penetrativeTotal++>>
-					<<SetPregType $activeSlave>>
+					<<set $activeSlave.pregType = setPregType($activeSlave)>>
 					<<set WombImpregnate($activeSlave, $activeSlave.pregType, $activeSlave.pregSource, $activeSlave.preg)>>
 				<</if>>
 			<<else>>
@@ -389,7 +389,7 @@
 		$activeSlave.slaveName isn’t particularly excited about what’s coming, but she’s fully prepared for it and accepted it as a fact of life. There are worse things one can be than the slave-wife of a wealthy arcology owner. You <<if $activeSlave.amp == 1>>gather her up and hold her in front of you, pulling her panties off as you do. Showing considerable dexterity, you maneuver your dick inside her while holding her against your <<if $PC.boobs == 1>>breasts<<else>>chest<</if>><<else>>take her hand and pull her to her feet while she shimmies out of her panties. She cocks her hips for you and you slide your cock inside her before taking her knees and drawing them up to hold her in midair, impaled on you<</if>>. Though her face is towards the crowd, her mind is concentrated on your hard cock, pumping in and out of her at an angle; to her, it is what it is. She gasps when your seed flows into her, orgasming shortly after to @@.green;applause from your guests.@@ You'll fuck her repeatedly over the next few days, ensuring impregnation.
 	<</if>>
 	<<set $activeSlave.preg = 1, $activeSlave.pregKnown = 1, $activeSlave.pregWeek = 1>>
-	<<SetPregType $activeSlave>>
+	<<set $activeSlave.pregType = setPregType($activeSlave)>>
 	<<set WombImpregnate($activeSlave, $activeSlave.pregType, -1, $activeSlave.preg)>>
 	<<set $activeSlave.pregSource = -1>>
 	<<if ($activeSlave.vagina == 0) || ($activeSlave.mpreg == 1 && $activeSlave.anus == 0)>>
diff --git a/src/uncategorized/securityForceEOWReport.tw b/src/uncategorized/securityForceEOWReport.tw
index 221b4435e8eb68af1e38cf15d717d1cd47e1c41f..cbbd692503e9780a2983b4b941f9ed559140380e 100644
--- a/src/uncategorized/securityForceEOWReport.tw
+++ b/src/uncategorized/securityForceEOWReport.tw
@@ -234,7 +234,7 @@
 	<<set _RaidingEfficiency = .1>>
 
 	/* Raiding Efficiency Modifier Calculations
-	/* Drugs make them better at everything, but especially much better at raiding - much easier to murder and pillage when you're fucked out of your mind on a mix of meth, pcp, and lsd. Having an effective; CIC (Combat Infomation Centre) at the barracks,airforce, Satellite,AC-130,major and more efficent facility support massivey improves raiding efficiency. If we are dealing with an oceanic aracolgy the sub and carrier massively improve efficiency. */
+	/* Drugs make them better at everything, but especially much better at raiding - much easier to murder and pillage when you're fucked out of your mind on a mix of meth, pcp, and lsd. Having an effective; CIC (Combat Infomation Centre) at the barracks,airforce, Satellite,AC-130,major and more efficient facility support massivey improves raiding efficiency. If we are dealing with an oceanic aracolgy the sub and carrier massively improve efficiency. */
 
 	/* Facilities */
 
diff --git a/src/uncategorized/servantsQuarters.tw b/src/uncategorized/servantsQuarters.tw
index 9d795664cd0c4ec6820921de1c0b557758701e70..119d862e74b2dcdea8b95321bdf68618a6aaf52e 100644
--- a/src/uncategorized/servantsQuarters.tw
+++ b/src/uncategorized/servantsQuarters.tw
@@ -55,7 +55,7 @@ $servantsQuartersNameCaps
 <<case "Slimness Enthusiast">>
 	are comfortable and well-kept. There are pornographic pictures on the walls, depicting slender slaves earnestly enjoying sex.
 <<case "Hedonistic">>
-	are comfortable and well-kept. There are plently of soft couches to recline on between shifts and a number of feeders to keep servants full and happy. There are pornographic pictures on the walls, depicting fat slaves earnestly enjoying sex while stuffing their and their partners faces.
+	are comfortable and well-kept. There are plenty of soft couches to recline on between shifts and a number of feeders to keep servants full and happy. There are pornographic pictures on the walls, depicting fat slaves earnestly enjoying sex while stuffing their and their partners faces.
 <<default>>
 	are comfortable. Servants sleep together in a dormitory, eat together in a little kitchen, bathe together in a communal shower, and then head out into the penthouse to serve.
 <</switch>>
@@ -71,7 +71,7 @@ $servantsQuartersNameCaps
 <</if>>
 
 <<set _Tmult0 = Math.trunc($servantsQuarters*1000*$upgradeMultiplierArcology)>>
-<br>$servantsQuartersNameCaps has room to keep $servantsQuarters slaves while they serve. Currently $servantsQuartersSlaves are serving.
+<br>$servantsQuartersNameCaps has room to keep $servantsQuarters slaves while they serve. Currently $servantsQuartersSlaves <<if $servantsQuartersSlaves == 1>>is<<else>>are<</if>> serving.
 [[Expand the Servants' Quarters|Servants' Quarters][$cash -= _Tmult0, $servantsQuarters += 5, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>>//
 
 <br>
diff --git a/src/uncategorized/servantsQuartersReport.tw b/src/uncategorized/servantsQuartersReport.tw
index 7b1bd4e6a0b5584e18549e3c956c5e6f6c4d04e6..3d699147b7984c3757403517a9bcda1b3b907867 100644
--- a/src/uncategorized/servantsQuartersReport.tw
+++ b/src/uncategorized/servantsQuartersReport.tw
@@ -51,7 +51,7 @@
 			<<set $i = $slaveIndices[$ServQiIDs[_dI]]>>
 			<<if (canImpreg($slaves[$i], $Stewardess))>>
 				<<KnockMeUp $slaves[$i] 100 2 $Stewardess.ID>>
-				<<set $slaves[$i].preg = 1, $slaves[$i].pregKnown = 1, $slaves[$i].pregWeek = 1, $slaves[$i].pregSource = $Stewardess.ID>><<SetPregType $slaves[$i]>>
+				<<set $slaves[$i].preg = 1, $slaves[$i].pregKnown = 1, $slaves[$i].pregWeek = 1, $slaves[$i].pregSource = $Stewardess.ID>><<set $slaves[$i].pregType = setPregType($slaves[$i])>>
 				<<set WombImpregnate($slaves[$i], $slaves[$i].pregType, $slaves[$i].pregSource, 1)>>
 				<<set $slaves[$i].vagina = Math.clamp($slaves[$i].vagina,1,10), _stewardessImpregnated++, $slaves[$i].vaginalCount += 10, $vaginalTotal += 10>>
 				<<set $slaves[$i].need = 0>>
diff --git a/src/uncategorized/slaveAssignmentsReport.tw b/src/uncategorized/slaveAssignmentsReport.tw
index 6b21ad2c906d5bffbd4c5a52e736243376538699..e9ecf31c3341fc0020d112b0ce7acd3d21cd10a1 100644
--- a/src/uncategorized/slaveAssignmentsReport.tw
+++ b/src/uncategorized/slaveAssignmentsReport.tw
@@ -65,7 +65,7 @@
 			<<set $HGEnergy++>>
 		<</if>>
 		<<if canAchieveErection($HeadGirl)>>
-			<<set $HGCum = 2+Math.trunc(($HeadGirl.balls/5)+($HeadGirl.energy/95)+($HeadGirl.health/95)+($HeadGirl.devotion/95))>>
+			<<set $HGCum = 2+Math.trunc(($HeadGirl.balls/5)+($HeadGirl.energy/95)+($HeadGirl.health/95)+($HeadGirl.devotion/95)+($reproductionFormula*5))>>
 		<</if>>
 	<<else>>
 		<<removeJob $slaves[$i] "be your Head Girl">>
@@ -355,6 +355,9 @@
 	<<if ($slaves[$i].ovaries == 1 || $slaves[$i].mpreg == 1) && $slaves[$i].pubertyXX == 1 && $slaves[$i].physicalAge <= ($slaves[$i].pubertyAgeXX + 2) && $slaves[$i].physicalAge < 18>>
 		<<set $slaves[$i].need = ($slaves[$i].need*2)>>
 	<</if>>
+	<<if $slaves[$i].diet == "fertility">>
+		<<set $slaves[$i].need += 10>>
+	<</if>>
 <</if>>
 <</if>>
 
diff --git a/src/uncategorized/slaveInteract.tw b/src/uncategorized/slaveInteract.tw
index 4e7d804d3b055eb6ef1e50a46b656949222b83a1..49216679889ba29b8c8df046c54d0f07cda6e2f7 100644
--- a/src/uncategorized/slaveInteract.tw
+++ b/src/uncategorized/slaveInteract.tw
@@ -1234,6 +1234,9 @@ Hormones: <strong><span id="hormones">
 <<if ($activeSlave.balls > 0) && ($cumProDiet == 1)>>
 | <<link "Cum production">><<set $activeSlave.diet = "cum production">><<replace "#diet">>$activeSlave.diet<</replace>><</link>>
 <</if>>
+<<if canGetPregnant($activeSlave) && ($dietFertility == 1)>>
+| <<link "Fertility">><<set $activeSlave.diet = "fertility">><<replace "#diet">>$activeSlave.diet<</replace>><</link>>
+<</if>>
 <<if ($activeSlave.weight >= -95)>>
 | <<link "Lose weight">><<set $activeSlave.diet = "restricted">><<replace "#diet">>$activeSlave.diet<</replace>><</link>>
 <<else>>
@@ -1258,11 +1261,11 @@ Hormones: <strong><span id="hormones">
 <<else>>
 | //She has no limbs and thus can't effectively build muscle//
 <</if>>
-<<if $activeSlave.muscles > 5 && canWalk($activeSlave)>>
+<<if ($activeSlave.muscles > 5 || $activeSlave.fuckdoll == 0) && canWalk($activeSlave)>>
 | <<link "Slim down">><<set $activeSlave.diet = "slimming">><<replace "#diet">>$activeSlave.diet<</replace>><</link>>
 <<elseif !canWalk($activeSlave)>>
 | //She can't move and thus can't trim down//
-<<else>>
+<<elseif $activeSlave.fuckdoll > 0>>
 | //She has no muscles left to lose//
 <</if>>
 
diff --git a/src/uncategorized/slaveShelter.tw b/src/uncategorized/slaveShelter.tw
index fa7a0e19d6f42ac8aaec7bb96600066334073ad7..289ad31ac4de1b9161983ef90f1391f6bc976bc6 100644
--- a/src/uncategorized/slaveShelter.tw
+++ b/src/uncategorized/slaveShelter.tw
@@ -187,7 +187,7 @@ You contact the Slave Shelter to review the profile of the slave the Shelter is
 		<<set $shelterSlave.preg = either(-3, -2, -2, -2, 0, 0, 2, 3, 4, 5)>>
 		<<if $shelterSlave.preg > 0>>
 			<<set $shelterSlave.pregSource = -2, $shelterSlave.pregKnown = 1>>
-			<<SetPregType $shelterSlave>>
+			<<set $shelterSlave.pregType = setPregType($shelterSlave)>>
 			<<set WombImpregnate($shelterSlave, $shelterSlave.pregType, $shelterSlave.pregSource, $shelterSlave.preg)>>
 		<</if>>
 	<</if>>
diff --git a/src/uncategorized/slaveSold.tw b/src/uncategorized/slaveSold.tw
index 9896a7f9a08aeaaa7f6267514a3e6e3dd94f3c06..ad84364685e7dd9d9eb24566a6e869b650fcd64e 100644
--- a/src/uncategorized/slaveSold.tw
+++ b/src/uncategorized/slaveSold.tw
@@ -13,7 +13,7 @@
 	<<if $activeSlave.devotion > 50>>
 		<<if $activeSlave.trust > 95 || $activeSlave.trust < -20 || $activeSlave.intelligence < 0>>
 			<<set $boomerangSlave = $activeSlave, $boomerangWeeks = 1, $boomerangBuyer = $buyer>>
-			<<set $boomerangStats = {PCpregSource: 0, PCmother: 0, PCfather: 0, boomerangMother: [], boomerangFather: [], boomerangPregSources: [], boomerangMotherTank: [], boomerangFatherTank: []}>>
+			<<set $boomerangStats = {PCpregSource: 0, PCmother: 0, PCfather: 0, boomerangMother: [], boomerangFather: [], boomerangPregSources: [], boomerangMotherTank: [], boomerangFatherTank: [], boomerangRelationship: 0, boomerangRivalry: 0, boomerangRelation: 0}>>
 			<<if $familyTesting == 1>>
 				<<if $activeSlave.ID == $PC.pregSource>>
 					<<set $boomerangStats.PCpregSource = $activeSlave.ID>>
@@ -49,6 +49,9 @@
 				<</if>>
 				<<set $activeSlave.sisters = 0, $activeSlave.daughters = 0>>
 			<<else>>
+				<<if $activeSlave.relation != 0>>
+					<<set $boomerangStats.boomerangRelation = $activeSlave.relationTarget>>
+				<</if>>
 				<<for _ss = 0; _ss < $slaves.length; _ss++>>
 					<<if $slaves[_ss].ID != $activeSlave.ID>>
 						<<if $activeSlave.ID == $slaves[_ss].pregSource>>
@@ -57,6 +60,12 @@
 					<</if>>
 				<</for>>
 			<</if>>
+			<<if $activeSlave.relationship > 0>>
+				<<set $boomerangStats.boomerangRelationship = $activeSlave.relationshipTarget>>
+			<</if>>
+			<<if $activeSlave.rivalry > 0>>
+				<<set $boomerangStats.boomerangRivalry = $activeSlave.rivalryTarget>>
+			<</if>>
 		<</if>>
 	<</if>>
 	<</if>>
diff --git a/src/uncategorized/spa.tw b/src/uncategorized/spa.tw
index c809b43ebd5971983ab69208fe541b080fbc9b8b..0343ba8e9c93d9256f8d4e62bab787a6dcddfe71 100644
--- a/src/uncategorized/spa.tw
+++ b/src/uncategorized/spa.tw
@@ -71,7 +71,7 @@ $spaNameCaps
 <</if>>
 
 <<set _Tmult0 = Math.trunc($spa*1000*$upgradeMultiplierArcology)>>
-<br>$spaNameCaps can house $spa slaves while they recuperate here. Curretly $spaSlaves are recuperating.
+<br>$spaNameCaps can house $spa slaves while they recuperate here. Currently $spaSlaves <<if $spaSlaves == 1>>is<<else>>are<</if>> recuperating.
 [[Expand the spa|Spa][$cash -= _Tmult0, $spa += 5]] //Costs <<print cashFormat(_Tmult0)>>//
 
 <br>
diff --git a/src/uncategorized/walkPast.tw b/src/uncategorized/walkPast.tw
index 802e82f45c151f957fb1f82b472f6b5ea5dc62b9..8489554b36ab39ca4e2f1bc6c3d882c2ce1f7705 100644
--- a/src/uncategorized/walkPast.tw
+++ b/src/uncategorized/walkPast.tw
@@ -738,7 +738,7 @@
 		<<if $activeSlave.livingRules == "luxurious">>in bed in the nice little room they share,<<else>>out in the open on $activeSlave.slaveName's bedroll in the slave dormitory,<</if>> having gentle anal sex while spooning. $activeSlave.slaveName is enjoying _partnerSlave.slaveName's ass, and is doing her best to ensure her _activeSlaveRel enjoys being buttfucked. She's nibbling her _activeSlaveRel's ears and neck, cupping a breast with one hand, and lightly stimulating her with the other.
 		<<set _partnerSlave.analCount++, $activeSlave.penetrativeCount++, $analTotal++, $penetrativeTotal++>>
 	<<elseif ($activeSlave.clit > 2) && canDoAnal(_partnerSlave) && (_partnerSlave.anus > 0) && (_partnerSlave.amp != 1) && ($activeSlave.amp != 1)>>
-		<<if $activeSlave.livingRules == "luxurious">>in bed in the nice little room they share,<<else>>out in the open on $activeSlave.slaveName's bedroll in the slave dormitory,<</if>> managing to have clitoral-anal sex. _partnerSlave.slaveName is facedown with her ass up, spreading her buttocks as wide as possible, giving her _activeSlaveRel the opportunity to squat over her and penetrate it with her huge, erect clit. $activeSlave.slaveName can't thrust much, but the shocking lewdness of the act is enough for both of them.
+		<<if $activeSlave.livingRules == "luxurious">>in bed in the nice little room they share,<<else>>out in the open on $activeSlave.slaveName's bedroll in the slave dormitory,<</if>> managing to have clitoral-anal sex. _partnerSlave.slaveName is face-down with her ass up, spreading her buttocks as wide as possible, giving her _activeSlaveRel the opportunity to squat over her and penetrate it with her huge, erect clit. $activeSlave.slaveName can't thrust much, but the shocking lewdness of the act is enough for both of them.
 		<<set _partnerSlave.analCount++, $activeSlave.penetrativeCount++, $analTotal++, $penetrativeTotal++>>
 	<<elseif ($activeSlave.dick > 1) && canPenetrate($activeSlave) && (_partnerSlave.amp != 1) && ($activeSlave.amp != 1)>>
 		<<if $activeSlave.livingRules == "luxurious">>in bed in the nice little room they share,<<else>>out in the open on $activeSlave.slaveName's bedroll in the slave dormitory,<</if>> spooning while $activeSlave.slaveName gently rubs her cock between _partnerSlave.slaveName's thighs, pressed tightly together. Since _partnerSlave.slaveName is a virgin, this is the closest they can come to penetrative intercourse, but $activeSlave.slaveName is enjoying _partnerSlave.slaveName's body anyway, and is doing her best to ensure her _activeSlaveRel enjoys herself. She's nibbling her _activeSlaveRel's ears and neck, cupping a breast with one hand, and lightly stimulating her with the other.
diff --git a/src/utility/assayWidgets.tw b/src/utility/assayWidgets.tw
index 60877beef605c3dee6f6b636212075d5c4f18b9d..ef7a49c941f14cc3ab371c241bd944a60a3a47f2 100644
--- a/src/utility/assayWidgets.tw
+++ b/src/utility/assayWidgets.tw
@@ -230,7 +230,7 @@
 
 <<else>> /* FUCKDOLL */
 
-<<set $beauty += 100 + ($args[0].waist/20) - ($args[0].muscles/30) +($args[0].lips/10) + ($args[0].face/10) + ($args[0].clit) + (($args[0].height-160)/10) + (2*$args[0].hips)>>
+<<set $beauty += 120 - ($args[0].waist/20) - ($args[0].muscles/30) + ($args[0].lips/10) + ($args[0].clit) + (($args[0].height-160)/10) + (2*$args[0].hips)>>
 
 <</if>> /* CLOSES FUCKDOLL CHECK */
 
@@ -1113,311 +1113,6 @@
 
 <</widget>>
 
-<<widget "FResult">>
-
-<<set $FResult = (3-$args[0].anus)+($args[0].muscles/30)>>
-
-<<if $args[0].muscles < -95>>
-	<<set $FResult -= 5>>
-<<elseif $args[0].muscles < -30>>
-	<<set $FResult -= 2>>
-<</if>>
-
-<<set $seed = $oralUseWeight + $vaginalUseWeight + $analUseWeight>>
-
-<<if $seed > 0>>
-<<set $FResult += (6+$args[0].tonguePiercing)*($oralUseWeight/$seed)*($args[0].oralSkill/30)>>
-<<if $args[0].sexualFlaw == "cum addict">>
-	<<set $FResult += ($oralUseWeight/$seed)*($args[0].oralSkill/30)>>
-<</if>>
-<<if $args[0].vagina > -1>>
-<<if $args[0].vaginalAccessory != "chastity belt">>
-	<<set $FResult += 6*($vaginalUseWeight/$seed)*($args[0].vaginalSkill/30)>>
-	<<set $FResult += (3-$args[0].vagina)>>
-	<<set $FResult += ($args[0].vaginaLube)>>
-<</if>>
-<</if>>
-	<<set $FResult += 6*($analUseWeight/$seed)*($args[0].analSkill/30)>>
-<<if $args[0].sexualFlaw == "anal addict">>
-	<<set $FResult += ($analUseWeight/$seed)*($args[0].analSkill/30)>>
-<</if>>
-<<if $args[0].inflationType == "aphrodisiac">>
-	<<set $FResult += ($analUseWeight/$seed)*($args[0].inflation*3)>>
-<</if>>
-<</if>>
-
-<<if $args[0].fuckdoll == 0>> /* NOT A FUCKDOLL */
-
-<<if $familyTesting == 1>>
-	<<if totalRelatives($args[0]) > 0>>
-	<<for $j = 0; $j < $slaves.length; $j++>>
-		<<if $args[0].mother == $slaves[$j].ID>>
-			<<if $slaves[$j].assignment == $args[0].assignment>>
-			<<set $FResult += 1>>
-				<<if $arcologies[0].FSEgyptianRevivalist > 20 || $arcologies[0].FSEgyptianRevivalistIncestPolicy == 1>>
-					<<set $FResult += 1>>
-				<</if>>
-			<</if>>
-		<</if>>
-		<<if $args[0].father == $slaves[$j].ID>>
-			<<if $slaves[$j].assignment == $args[0].assignment>>
-			<<set $FResult += 1>>
-				<<if $arcologies[0].FSEgyptianRevivalist > 20 || $arcologies[0].FSEgyptianRevivalistIncestPolicy == 1>>
-					<<set $FResult += 1>>
-				<</if>>
-			<</if>>
-		<</if>>
-		<<if $slaves[$j].mother == $args[0].ID || $slaves[$j].father == $args[0].ID>>
-			<<if $slaves[$j].assignment == $args[0].assignment>>
-			<<set $FResult += 1>>
-				<<if $arcologies[0].FSEgyptianRevivalist > 20 || $arcologies[0].FSEgyptianRevivalistIncestPolicy == 1>>
-					<<set $FResult += 1>>
-				<</if>>
-			<</if>>
-		<</if>>
-		<<if areSisters($args[0], $slaves[$j]) > 0>>
-			<<if $slaves[$j].assignment == $args[0].assignment>>
-			<<set $FResult += 1>>
-				<<if $arcologies[0].FSEgyptianRevivalist > 20 || $arcologies[0].FSEgyptianRevivalistIncestPolicy == 1>>
-					<<set $FResult += 1>>
-				<</if>>
-			<</if>>
-		<</if>>
-	<</for>>
-	<</if>>
-<<else>>
-	<<if $args[0].relation != 0>>
-		<<set _fre = $slaves.findIndex(function(s) { return s.ID == $args[0].relationTarget && s.assignment == $args[0].assignment; })>>
-		<<if _fre != -1>>
-			<<set $FResult += 2>>
-			<<if $arcologies[0].FSEgyptianRevivalist > 20 || $arcologies[0].FSEgyptianRevivalistIncestPolicy == 1>>
-				<<set $FResult += 2>>
-			<</if>>
-		<</if>>
-	<</if>>
-<</if>>
-<<if $args[0].relationship > 0>>
-	<<set _fre = $slaves.findIndex(function(s) { return s.ID == $args[0].relationshipTarget && s.assignment == $args[0].assignment; })>>
-	<<if _fre != -1>>
-		<<set $FResult += 1>>
-	<</if>>
-<<elseif $args[0].relationship == -1>>
-	<<set $FResult += 2>>
-<</if>>
-<<if $args[0].rivalry != 0>>
-	<<set _fre = $slaves.findIndex(function(s) { return s.ID == $args[0].rivalryTarget && s.assignment == $args[0].assignment; })>>
-	<<if _fre != -1>>
-		<<set $FResult -= 1>>
-	<</if>>
-<</if>>
-
-<<if $args[0].drugs == "male hormone injections" || $args[0].drugs == "female hormone injections">>
-	<<set $FResult -= 10>>
-<</if>>
-
-<<if $args[0].diet == "XXY">>
-	<<set $FResult += 2>>
-<<elseif $args[0].diet == "XY" || $args[0].diet == "XX">>
-	<<set $FResult += 1>>
-<<elseif $args[0].diet == "cum production">>
-	<<set $FResult += 1>>
-<</if>>
-
-<<if $arcologies[0].FSRepopulationFocus > 20>>
-	<<if $args[0].preg > 10>>
-	<<set $FResult += 2>>
-	<<else>>
-	<<set $FResult -= 2>>
-	<</if>>
-<<elseif $arcologies[0].FSRestart > 20>>
-	<<if $args[0].bellyPreg >= 500 && $args[0].breedingMark == 1>>
-		<<set $FResult += 1>>
-	<<elseif $args[0].preg > 10>>
-		<<set $FResult -= 10>>
-	<<else>>
-		<<set $FResult += 0>>
-	<</if>>
-<</if>>
-
-<<if ($args[0].clitPiercing > 2)>>
-	<<set $FResult += 1>>
-<</if>>
-
-<<if $arcologies[0].FSSupremacist != "unset">>
-	<<if $args[0].race == $arcologies[0].FSSupremacistRace>>
-		<<set $FResult -= ($arcologies[0].FSSupremacist/5)+($arcologies[0].FSSupremacistLawME*10)>>
-	<</if>>
-<</if>>
-<<if $arcologies[0].FSSubjugationist != "unset">>
-	<<if $args[0].race == $arcologies[0].FSSubjugationistRace>>
-		<<set $FResult += ($arcologies[0].FSSubjugationist/10)+($arcologies[0].FSSubjugationistLawME)>>
-	<</if>>
-<</if>>
-
-<<if ($args[0].fetishKnown == 1)>>
-<<if ($args[0].fetishStrength > 60)>>
-<<if ($args[0].fetish != "none")>>
-	<<set $FResult += $args[0].fetishStrength/5>>
-<</if>>
-<</if>>
-<</if>>
-<<if ($args[0].attrKnown == 1)>>
-<<set $FResult += Math.trunc($args[0].attrXX/20)>>
-<<set $FResult += Math.trunc($args[0].attrXY/20)>>
-<<if ($args[0].energy > 95)>>
-	<<set $FResult += 3>>
-<<elseif ($args[0].energy > 80)>>
-	<<set $FResult += 2>>
-<<elseif ($args[0].energy > 60)>>
-	<<set $FResult += 1>>
-<<elseif ($args[0].energy <= 20)>>
-	<<set $FResult -= 2>>
-<<elseif ($args[0].energy <= 40)>>
-	<<set $FResult -= 1>>
-<</if>>
-<</if>>
-
-<<if ($args[0].sexualFlaw != "none")>>
-	<<set $FResult -= 2>>
-<</if>>
-<<if ($args[0].sexualQuirk != "none")>>
-	<<set $FResult += 2>>
-<</if>>
-<<if ($args[0].behavioralFlaw != "none")>>
-	<<set $FResult -= 2>>
-<</if>>
-<<if ($args[0].behavioralQuirk != "none")>>
-	<<set $FResult += 2>>
-<</if>>
-
-<<if setup.whoreCareers.includes($args[0].career)>>
-	<<set $FResult += 1>>
-<<elseif ($args[0].oralCount + $args[0].analCount + $args[0].vaginalCount + $args[0].mammaryCount + $args[0].penetrativeCount > 1000)>>
-	<<set $FResult += 1>>
-<</if>>
-
-<<if !canSee($args[0])>>
-	<<set $FResult -= 3>>
-<<elseif $args[0].eyes <= -1>>
-	<<if $args[0].eyewear != "corrective glasses">>
-	<<if $args[0].eyewear != "corrective contacts">>
-	<<set $FResult -= 1>>
-	<</if>>
-	<</if>>
-<<elseif $args[0].eyewear == "blurring glasses">>
-	<<set $FResult -= 1>>
-<<elseif $args[0].eyewear == "blurring contacts">>
-	<<set $FResult -= 1>>
-<</if>>
-
-<<if $arcologies[0].FSEgyptianRevivalist != "unset">>
-	<<if ndef $racialVarieties>>
-	<<set $racialVarieties = []>>
-	<</if>>
-	<<set $seed = 0>>
-	<<for $j = 0; $j < $racialVarieties.length; $j++>>
-	<<if $args[0].race == $racialVarieties[$j]>>
-		<<set $seed = 1>>
-	<</if>>
-	<</for>>
-	<<if $seed == 0>>
-	<<set $racialVarieties.push($args[0].race)>>
-	<</if>>
-<</if>>
-
-<<if $arcologies[0].FSYouthPreferentialist != "unset">>
-	<<if $args[0].visualAge < 30>>
-		<<if $args[0].actualAge > 30>>
-			<<set $FResult += 5>> /* experienced for her apparent age */
-		<</if>>
-		<<if $args[0].physicalAge > 30>>
-			<<set $FResult -= $args[0].physicalAge/2>> /* young bodies shouldn't be creaking like that */
-		<</if>>
-	<</if>>
-<<elseif $arcologies[0].FSMaturityPreferentialist != "unset">>
-	<<if $args[0].visualAge >= 30 && $args[0].actualAge >= 30 && $args[0].physicalAge < $args[0].visualAge>>
-		<<set _kickingBody = Math.min((($args[0].physicalAge-$args[0].visualAge)*2),20)>> /* looks and acts mature, but has a body that just won't quit */
-		<<set $FResult += _kickingBody>>
-	<</if>>
-<</if>>
-
-<<else>> /* FUCKDOLL */
-
-<<set $FResult += $args[0].fuckdoll/10>>
-
-<</if>> /* CLOSES FUCKDOLL CHECK */
-
-<<set $FResult += Math.max(0, $args[0].aphrodisiacs)*2>>
-<<if $args[0].inflationType == "aphrodisiac">>
-	<<set $FResult += $args[0].inflation*4>>
-<</if>>
-
-<<if ($args[0].lactation > 0)>>
-	<<set $FResult += 1>>
-<</if>>
-
-<<if $seeAge == 1>>
-<<if $args[0].physicalAge == $minimumSlaveAge && $args[0].physicalAge == $fertilityAge && canGetPregnant($args[0]) && ($arcologies[0].FSRepopulationFocus != "unset" || $arcologies[0].FSGenderFundamentalist != "unset")>>
-	<<set $FResult += 1>>
-	<<if $args[0].birthWeek == 0>>
-		<<set $FResult += 1*$FResult>>
-	<<elseif $args[0].birthWeek < 4>>
-		<<set $FResult += 0.2*$FResult>>
-	<</if>>
-<<elseif $args[0].physicalAge == $minimumSlaveAge>>
-	<<set $FResult += 1>>
-	<<if $args[0].birthWeek == 0>>
-		<<set $FResult += 0.5*$FResult>>
-	<<elseif $args[0].birthWeek < 4>>
-		<<set $FResult += 0.1*$FResult>>
-	<</if>>
-<<elseif $args[0].physicalAge == $fertilityAge && canGetPregnant($args[0]) && ($arcologies[0].FSRepopulationFocus != "unset" || $arcologies[0].FSGenderFundamentalist != "unset")>>
-	<<set $FResult += 1>>
-	<<if $args[0].birthWeek == 0>>
-		<<set $FResult += 0.5*$FResult>>
-	<<elseif $args[0].birthWeek < 4>>
-		<<set $FResult += 0.1*$FResult>>
-	<</if>>
-<</if>>
-<</if>>
-
-<<if ($args[0].fetish == "mindbroken")>>
-	<<set $FResult = Math.trunc($FResult*0.4)>>
-<<else>>
-	<<set $FResult = Math.trunc($FResult*0.7)>>
-<</if>>
-
-<<if $args[0].pregWeek < 0>>
-	<<set $FResult = Math.trunc($FResult*((10+($args[0].pregWeek))*.10))>> /* should be reduced the msot just after birth and increase until normal */
-<</if>>
-
-<<if $args[0].amp == 0>>
-<<elseif $args[0].amp == 1>>
-	<<set $FResult -= 2>>
-<<elseif $args[0].amp == -2>>
-<<elseif $args[0].amp == -5>>
-<<else>>
-	<<set $FResult -= 1>>
-<</if>>
-
-<<if $arcologies[0].FSHedonisticDecadence > 20>>
-	<<if $args[0].weight < 10>>
-		<<set $FResult -= 2>>
-	<<elseif $args[0].weight > 190>> /* literally too fat to fuck */
-		<<set $FResult -= 5>>
-	<</if>>
-<</if>>
-
-<<if $FResult < 2>>
-	<<if $arcologies[0].FSSupremacist != "unset" && $args[0].race == $arcologies[0].FSSupremacistRace>>
-		<<set $FResult = 0>>
-	<<else>>
-		<<set $FResult = 2>>
-	<</if>>
-<</if>>
-
-<</widget>>
-
 <<widget "Deadliness">>
 
 <<set $deadliness = 2>>
@@ -1972,7 +1667,7 @@
 <<widget "slaveCost">>
 
 <<Beauty $args[0]>>
-<<FResult $args[0]>>
+<<set FResult($args[0])>>
 
 <<set $slaveCost = ($beauty*$FResult)>>
 
diff --git a/src/utility/descriptionWidgetsFlesh.tw b/src/utility/descriptionWidgetsFlesh.tw
index f7ebbb9a887532d375fdd3bdb55c5e6788f0da6e..a0d3fad85fee2624e885755396644b333faaa90a 100644
--- a/src/utility/descriptionWidgetsFlesh.tw
+++ b/src/utility/descriptionWidgetsFlesh.tw
@@ -9979,7 +9979,7 @@ she's
 	<</if>>
 	<<case "downward-facing">>
 	<<if $activeSlave.boobs > 12000>>
-		Their naturally downward-facing shape makes them a convenient cushion when $pronoun's facedown, naturally placing $possessive in a kneeling position.
+		Their naturally downward-facing shape makes them a convenient cushion when $pronoun's face-down, naturally placing $possessive in a kneeling position.
 	<<elseif $activeSlave.boobs > 5000>>
 		They're huge pillows of soft flesh, distorted by gravity and where they rest against $possessive stomach and each other. Naturally downward-facing, they are so big that $possessive nipples point directly down.
 	<<elseif $activeSlave.boobs > 2500>>
@@ -10011,7 +10011,7 @@ she's
 	<</if>>
 	<<case "wide-set">>
 	<<if $activeSlave.boobs > 12000>>
-		They are naturally wide-set, which can be seen in the way they stick out more than a meter to either side of $possessive when $pronoun's facedown.
+		They are naturally wide-set, which can be seen in the way they stick out more than a meter to either side of $possessive when $pronoun's face-down.
 	<<elseif $activeSlave.boobs > 5000>>
 		They're huge pillows of soft flesh whose natural wide-set shape somehow keeps them from touching despite their mass.
 	<<elseif $activeSlave.boobs > 2500>>
@@ -10027,7 +10027,7 @@ she's
 	<</if>>
 	<<case "saggy">>
 	<<if $activeSlave.boobs > 12000>>
-		Their naturally saggy shape makes them a convenient cushion when $pronoun's facedown, naturally placing $possessive in a kneeling position.
+		Their naturally saggy shape makes them a convenient cushion when $pronoun's face-down, naturally placing $possessive in a kneeling position.
 	<<elseif $activeSlave.boobs > 5000>>
 		They're huge pillows of soft flesh that sag past $possessive navel. $possessiveCap nipples are placed on their bottoms, pointed at the ground by the heavy mass of breastflesh above them.
 	<<elseif $activeSlave.boobs > 2500>>
@@ -10043,7 +10043,7 @@ she's
 	<</if>>
 	<<default>>
 	<<if $activeSlave.boobs > 12000>>
-		They anchor $possessive when $pronoun's facedown, and pin $possessive when $pronoun's on $possessive back.
+		They anchor $possessive when $pronoun's face-down, and pin $possessive when $pronoun's on $possessive back.
 	<<elseif $activeSlave.boobs > 5000>>
 		They're huge pillows of soft flesh, distorted by gravity and where they rest against $possessive stomach and each other.
 	<<elseif $activeSlave.boobs > 2500>>
diff --git a/src/utility/miscWidgets.tw b/src/utility/miscWidgets.tw
index a23a4c2d8216217ff4217d7f2fb83ebb73cf6d5d..e40d07d090d4b6f675a3f385213f503df14e1af6 100644
--- a/src/utility/miscWidgets.tw
+++ b/src/utility/miscWidgets.tw
@@ -2356,6 +2356,7 @@ This experience
 <</widget>>
 
 /*
+ OBSOLETE: Use setPregType()instead!
  Call as <<SetPregType>>
  $args[0]: Slave.
 */
@@ -2432,14 +2433,14 @@ This experience
 */
 <<widget "KnockMeUp">>
 	<<if $seePreg != 0>>
-		<<if random(0,99) < $args[1]>>
+		<<if random(0,99) < ($args[1]+($reproductionFormula*(($args[0].pregSource <= 0) ? (($args[0].ID == -1) ? 0 : 10) : 20)))>>
 			<<if $args[0].mpreg === $args[2]>>
 				<<set $args[0].preg = 1>>
 				<<set $args[0].pregSource = $args[3] || 0>>
 				<<if $args[0].ID != -1>>
 					<<set $args[0].pregWeek = 1>>
 				<</if>>
-				<<SetPregType $args[0]>>
+				<<set $args[0].pregType = setPregType($args[0])>>
 				<<set WombImpregnate($args[0], $args[0].pregType, $args[0].pregSource, 1)>>
 				<<if $menstruation == 1>>
 				<<elseif ndef $args[4]>>
@@ -2460,7 +2461,7 @@ This experience
 				<<if $args[0].ID != -1>>
 					<<set $args[0].pregWeek = 1>>
 				<</if>>
-				<<SetPregType $args[0]>>
+				<<set $args[0].pregType = setPregType($args[0])>>
 				<<set WombImpregnate($args[0], $args[0].pregType, $args[0].pregSource, 1)>>
 				<<if $menstruation == 1>>
 				<<elseif ndef $args[4]>>
diff --git a/src/utility/raWidgets.tw b/src/utility/raWidgets.tw
index 0eab42727b0d9a8a9cdab89e5549abab24fdfe8a..ab3a63ecf43c6d492f50315ee8bbdc9bfb44a281 100644
--- a/src/utility/raWidgets.tw
+++ b/src/utility/raWidgets.tw
@@ -1627,6 +1627,10 @@ Other drugs: // Will be overriden by hormones and other drugs where applicable./
 	''designed to promote hermaphrodite development.''
 <<elseif $currentRule.diet == "cleansing">>
 	''designed to promote health.''
+<<elseif $currentRule.diet == "fertility">>
+	''designed to promote ovulation''
+<<elseif $currentRule.diet == "cum production">>
+	''designed to promote cum production''
 <<else>>
 	''no default setting.''
 <</if>>
@@ -1891,7 +1895,7 @@ Diet support for growth drugs:
  % Call as <<RASaveRule>>
  %/
 <<widget "RASaveRule">>
-<<replace #saveresult>>
+<<replace .saveresult>>
 <<for _t = 0; _t < $defaultRules.length; _t++>>
 	<<if ($currentRule.ID != $defaultRules[_t].ID)>>
 		<<continue>>
@@ -1910,7 +1914,7 @@ Diet support for growth drugs:
 	<</if>>
 
 	<<set $defaultRules[_t] = $currentRule>>
-	//Rule $r saved//
+	//Rule '$currentRule.name' saved//
 	<<break>>
 <</for>>
 <</replace>>
@@ -1921,8 +1925,8 @@ Diet support for growth drugs:
  % Call as <<RAChangeSave>>
  %/
 <<widget "RAChangeSave">>
-<<replace #saveresult>>
-<<link "Save Rule $r">>
+<<replace .saveresult>>
+<<link "Save Rule '$currentRule.name'">>
 	<<RASaveRule>>
 <</link>>
 <</replace>>
@@ -2460,12 +2464,22 @@ Your brand design is ''$brandDesign.''
 		''invasive.''
 	<<elseif ($currentRule.surgery.cosmetic == 1)>>
 		''subtle.''
-	<<else>>
+	<<elseif $currentRule.surgery.cosmetic == 0>>
 		''none.''
+	<<else>>
+		''off.''
 	<</if>>
 
 	<br>
 
+	<<if ($currentRule.surgery.cosmetic !== "nds")>>
+		<<link "No default setting">>
+			<<set $currentRule.surgery.cosmetic = "nds">>
+			<<RASurgeryChangeCosmetic>>
+		<</link>> |
+	<<else>>
+		Off |
+	<</if>>
 	<<if ($currentRule.surgery.cosmetic !== 0)>>
 		<<link "None">>
 			<<set $currentRule.surgery.cosmetic = 0>>
@@ -2731,17 +2745,17 @@ Your brand design is ''$brandDesign.''
 	<<elseif ($currentRule.surgery.holes == 1)>>
 		''hole tightening'' will be applied.
 	<<else>>
-		''none.''
+		''No default setting.''
 	<</if>>
 
 	<br>
-	<<if ($currentRule.surgery.holes != 0)>>
-		<<link "Off">>
-		<<set $currentRule.surgery.holes = 0>>
+	<<if ($currentRule.surgery.holes != "nds")>>
+		<<link "No default setting">>
+		<<set $currentRule.surgery.holes = "nds">>
 		<<RASurgeryChangeHoles>>
 		<</link>> |
 	<<else>>
-		Off |
+		No default setting |
 	<</if>>
 	<<if ($currentRule.surgery.holes != 1)>>
 		<<link "Tightening">>
@@ -2776,9 +2790,9 @@ Your brand design is ''$brandDesign.''
 	<</if>>
 
 	<br>
-	<<if ($currentRule.surgery.bodyhair != 0)>>
+	<<if ($currentRule.surgery.bodyhair != "nds")>>
 		<<link "No default setting">>
-		<<set $currentRule.surgery.bodyhair = 0>>
+		<<set $currentRule.surgery.bodyhair = "nds">>
 		<<RASurgeryBodyHair>>
 		<</link>> |
 	<<else>>
@@ -2820,9 +2834,9 @@ Your brand design is ''$brandDesign.''
 	<</if>>
 
 	<br>
-	<<if ($currentRule.surgery.hair != 0)>>
+	<<if ($currentRule.surgery.hair != "nds")>>
 		<<link "No default setting">>
-		<<set $currentRule.surgery.hair = 0>>
+		<<set $currentRule.surgery.hair = "nds">>
 		<<RASurgeryHair>>
 		<</link>> |
 	<<else>>
@@ -3105,6 +3119,7 @@ Your brand design is ''$brandDesign.''
 	<</switch>>
 
 	/% merge the current rule (possibly modified by the code above) into the combined rule %/
+	/* <br>+++ currentRule <<print JSON.stringify(_currentRule)>><br>	*/
 	<<set _combinedRule = mergeRules([_combinedRule, _currentRule])>>
 
 <</for>> /* done merging rules; from here onwards, we should only use _combinedRule */
@@ -4120,6 +4135,35 @@ Your brand design is ''$brandDesign.''
 				<<set $args[0].diet = "cleansing">>
 				<br>$args[0].slaveName has been put on a diet of cleansers.
 			<</if>>
+		<<elseif (_combinedRule.diet == "fertility")>>
+			<<if canGetPregnant($args[0])>>
+				<<if ($args[0].diet !== "fertility")>>
+					<<set $args[0].diet = "fertility">>
+					<br>$args[0].slaveName has been put on a diet to enhance fertilty.
+				<</if>>
+			<<else>>
+				<<if ($args[0].diet !== "healthy")>>
+					<<set $args[0].diet = "healthy">>
+					<<if $args[0].pregKnown == 0 && $args[0].preg > 0>>
+						<br>$args[0].slaveName has been put on a standard diet since tests reveal she has become pregnant.
+						<<set $args[0].pregKnown = 1>>
+					<<else>>
+						<br>$args[0].slaveName has been put on a standard diet since she is currently unable to become pregnant.
+					<</if>>
+				<</if>>
+			<</if>>
+		<<elseif (_combinedRule.diet == "cum production")>>
+			<<if ($args[0].balls > 0)>>
+				<<if ($args[0].diet !== "cum production")>>
+					<<set $args[0].diet = "cum production">>
+					<br>$args[0].slaveName has been put on a diet to promote cum production.
+				<</if>>
+			<<else>>
+				<<if ($args[0].diet !== "healthy")>>
+					<<set $args[0].diet = "healthy">>
+					<br>$args[0].slaveName has been put on a standard diet since she is no longer able to produce cum.
+				<</if>>
+			<</if>>
 		<</if>>
 	<</if>>
 <<elseif (def _combinedRule.muscles) && (_combinedRule.muscles !== "no default setting") && ($args[0].amp != 1)>> /* no diet rule, muscles only */
diff --git a/src/utility/slaveCreationWidgets.tw b/src/utility/slaveCreationWidgets.tw
index 27bce4a48e793c67e2cb29b7a2290cd2b388a5d7..13699405762262e35af4eb52d8f72a23ecc454b6 100644
--- a/src/utility/slaveCreationWidgets.tw
+++ b/src/utility/slaveCreationWidgets.tw
@@ -2430,7 +2430,7 @@
 				<<set $activeSlave.mpreg = 1>>
 				<<if isFertile($activeSlave)>>
 					<<set $activeSlave.preg = random(1,39)>>
-					<<SetPregType $activeSlave>>
+					<<set $activeSlave.pregType = setPregType($activeSlave)>>
 					<<SetBellySize $activeSlave>>
 				<</if>>
 			<</if>>
@@ -2462,7 +2462,7 @@
 		<<set $activeSlave.preg = 0>> /*removing contraception of default slave generation so isFertile can work right*/
 		<<if isFertile($activeSlave)>>
 			<<set $activeSlave.preg = random(1,40)>>
-			<<SetPregType $activeSlave>>
+			<<set $activeSlave.pregType = setPregType($activeSlave)>>
 			<<SetBellySize $activeSlave>>
 			<<set $activeSlave.lactation = random(0,1)>>
 		<</if>>
@@ -2820,7 +2820,7 @@
 	<<if $activeSlave.vagina > 1 && isFertile($activeSlave)>>
 		<<set $activeSlave.preg = either(-2, -1, -1, -1, -1, -1, -1, -1, 1, 20, 40)>>
 		<<if $activeSlave.preg > 0>>
-			<<SetPregType $activeSlave>>
+			<<set $activeSlave.pregType = setPregType($activeSlave)>>
 		<</if>>
 		<<SetBellySize $activeSlave>>
 	<</if>>
@@ -2856,7 +2856,7 @@
 		<<set $activeSlave.preg = either(-2, -1, -1, -1, -1, -1, -1, -1, 1, 1)>>
 		<<if $activeSlave.physicalAge < $activeSlave.pubertyAgeXX>><<set $activeSlave.preg = -1>><</if>>
 		<<if $activeSlave.preg > 0>>
-			<<SetPregType $activeSlave>>
+			<<set $activeSlave.pregType = setPregType($activeSlave)>>
 		<</if>>
 		<<SetBellySize $activeSlave>>
 		<<set $activeSlave.vaginalSkill = random(15,100)>>
diff --git a/src/uncategorized/slaveGenerationWidgets.tw b/src/utility/slaveGenerationWidgets.tw
similarity index 83%
rename from src/uncategorized/slaveGenerationWidgets.tw
rename to src/utility/slaveGenerationWidgets.tw
index 27ba8fede099883ac29d6b77419ab513c5b150ef..611eada41f621b11d3df9d28bbf007bbdbe0ef1d 100644
--- a/src/uncategorized/slaveGenerationWidgets.tw
+++ b/src/utility/slaveGenerationWidgets.tw
@@ -2,7 +2,7 @@
 
 <<widget "NationalityToRace">>
 <<set $args[0].race
-	= (setup.raceSelector[$args[0].nationality] || setup.raceSelector[""]).random()>>
+	= hashChoice(setup.raceSelector[$args[0].nationality] || setup.raceSelector[""])>>
 <</widget>>
 
 <<widget "NationalityToName">>
@@ -743,6 +743,172 @@
 	<</if>>
 <<case "Tongan">>
 	<<set $args[0].accent = _naturalAccent>>
+	<<case "Catalan">>
+	<<set $args[0].accent = _naturalAccent>>
+<<case "Equatoguinean">>
+	<<if $language == "Spanish">>
+	<<set $args[0].accent = 1>>
+	<<else>>
+	<<set $args[0].accent = _naturalAccent>>
+	<</if>>
+<<case "French Polynesian">>
+	<<if $language == "French">>
+	<<set $args[0].accent = 1>>
+	<<else>>
+	<<set $args[0].accent = _naturalAccent>>
+	<</if>>
+<<case "Kurdish">>
+	<<set $args[0].accent = _naturalAccent>>
+<<case "Tibetan">>
+	<<if $language == "Chinese">>
+	<<set $args[0].accent = 1>>
+	<<else>>
+	<<set $args[0].accent = _naturalAccent>>
+	<</if>>
+<<case "Bissau-Guinean">>
+	<<if $language == "Portuguese">>
+	<<set $args[0].accent = 1>>
+	<<else>>
+	<<set $args[0].accent = _naturalAccent>>
+	<</if>>
+<<case "Chadian">>
+	<<if $language == "Arabic">>
+	<<set $args[0].accent = 1>>
+	<<else>>
+	<<set $args[0].accent = _naturalAccent>>
+	<</if>>
+<<case "Comorian">>
+	<<set $args[0].accent = _naturalAccent>>
+<<case "Ivorian">>
+	<<if $language == "French">>
+	<<set $args[0].accent = 1>>
+	<<else>>
+	<<set $args[0].accent = _naturalAccent>>
+	<</if>>
+<<case "Mauritanian">>
+	<<if $language == "Arabic">>
+	<<set $args[0].accent = 1>>
+	<<else>>
+	<<set $args[0].accent = _naturalAccent>>
+	<</if>>
+<<case "Mauritian">>
+	<<set $args[0].accent = _naturalAccent>>
+<<case "Mosotho">>
+	<<set $args[0].accent = _naturalAccent>>
+<<case "Sierra Leonean">>
+	<<if $language == "English">>
+	<<set $args[0].accent = 1>>
+	<<else>>
+	<<set $args[0].accent = _naturalAccent>>
+	<</if>>
+<<case "Swazi">>
+	<<set $args[0].accent = _naturalAccent>>
+<<case "Angolan">>
+	<<if $language == "Portuguese">>
+	<<set $args[0].accent = 1>>
+	<<else>>
+	<<set $args[0].accent = _naturalAccent>>
+	<</if>>
+<<case "Sahrawi">>
+	<<if $language == "Arabic">>
+	<<set $args[0].accent = 1>>
+	<<else>>
+	<<set $args[0].accent = _naturalAccent>>
+	<</if>>
+<<case "Burkinabé">>
+	<<if $language == "French">>
+	<<set $args[0].accent = 1>>
+	<<else>>
+	<<set $args[0].accent = _naturalAccent>>
+	<</if>>
+<<case "Cape Verdean">>
+	<<if $language == "Portuguese">>
+	<<set $args[0].accent = 1>>
+	<<else>>
+	<<set $args[0].accent = _naturalAccent>>
+	<</if>>
+<<case "Motswana">>
+	<<if $language == "English">>
+	<<set $args[0].accent = 1>>
+	<<else>>
+	<<set $args[0].accent = _naturalAccent>>
+	<</if>>
+<<case "Somali">>
+	<<if $language == "Arabic">>
+	<<set $args[0].accent = 1>>
+	<<else>>
+	<<set $args[0].accent = _naturalAccent>>
+	<</if>>
+<<case "Rwandan">>
+	<<set $args[0].accent = _naturalAccent>>
+<<case "São Toméan">>
+	<<if $language == "Portuguese">>
+	<<set $args[0].accent = 1>>
+	<<else>>
+	<<set $args[0].accent = _naturalAccent>>
+	<</if>>
+<<case "Beninese">>
+	<<if $language == "French">>
+	<<set $args[0].accent = 1>>
+	<<else>>
+	<<set $args[0].accent = _naturalAccent>>
+	<</if>>
+<<case "Central African">>
+	<<if $language == "French">>
+	<<set $args[0].accent = 1>>
+	<<else>>
+	<<set $args[0].accent = _naturalAccent>>
+	<</if>>
+<<case "Gambian">>
+	<<if $language == "English">>
+	<<set $args[0].accent = 1>>
+	<<else>>
+	<<set $args[0].accent = _naturalAccent>>
+	<</if>>
+<<case "Senegalese">>
+	<<if $language == "French">>
+	<<set $args[0].accent = 1>>
+	<<else>>
+	<<set $args[0].accent = _naturalAccent>>
+	<</if>>
+<<case "Togolese">>
+	<<if $language == "French">>
+	<<set $args[0].accent = 1>>
+	<<else>>
+	<<set $args[0].accent = _naturalAccent>>
+	<</if>>
+<<case "Eritrean">>
+	<<set $args[0].accent = _naturalAccent>>
+<<case "Guinean">>
+	<<set $args[0].accent = _naturalAccent>>
+<<case "Malawian">>
+	<<set $args[0].accent = _naturalAccent>>
+<<case "Zairian">>
+	<<set $args[0].accent = _naturalAccent>>
+<<case "Liberian">>
+	<<if $language == "English">>
+	<<set $args[0].accent = 1>>
+	<<else>>
+	<<set $args[0].accent = _naturalAccent>>
+	<</if>>
+<<case "Mozambican">>
+	<<if $language == "Portuguese">>
+	<<set $args[0].accent = 1>>
+	<<else>>
+	<<set $args[0].accent = _naturalAccent>>
+	<</if>>
+<<case "Namibian">>
+	<<if $language == "English">>
+	<<set $args[0].accent = 1>>
+	<<else>>
+	<<set $args[0].accent = _naturalAccent>>
+	<</if>>
+<<case "South Sudanese">>
+	<<if $language == "English">>
+	<<set $args[0].accent = 1>>
+	<<else>>
+	<<set $args[0].accent = _naturalAccent>>
+	<</if>>
 <<case "Roman Revivalist">>
 	<<if $language == "Latin">>
 	<<set $args[0].accent = 0>>