diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 0e09b5b4c5a8dac8ebfc37ab89581aea447e0671..577bcb9585838c96ecbc30129ac41f642f8ca17e 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,4 +1,4 @@
-# Contributing to FC pregmod
+# Contributing to FC: Pregmod
 
 First off, thanks for taking the time to contribute!
 
@@ -46,21 +46,93 @@ rules from `.eslintrc.json`.
 * prefer strict equality/inequality
 * etc.
 
-### JSDoc
+### Documentation
 
-It's a good idea to provide meaningful JSDoc for new functions and classes where possible. We follow Typescript's JSDoc
-type dialect for the most part (and we provide a Typescript configuration and auxiliary type definition files if you'd
-like to use it yourself...it's pretty nifty). Don't worry too much about specific type syntax if you can't make TS work
-or don't understand it, someone else will probably fix it for you as long as you've made the intent clear in some form
-of JSDoc.
+It's a good idea to provide meaningful documentation for new functions and classes where possible. We follow
+Typescript's [JSDoc](https://jsdoc.app) type dialect for the most part (and we provide a Typescript configuration and
+auxiliary type definition files if you'd like to use it yourself – it's pretty nifty). Don't worry too much about
+specific type syntax if you can't make TS work or don't understand it, someone else will probably fix it for you as long
+as you've made the intent clear in some form of JSDoc.
 
 ### Naming conventions
 
-* JS names are camelCase `fooBar`
-  * initial lowercase for variables and functions `fooBar`
-  * initial uppercase for classes and namespaces `Foo.Bar`
-  * all-caps for constants
-* CSS classes are kebob-case. `foo-bar`
+* JavaScript variable and function names should be `camelCase`.
+
+```js
+// bad
+let foobar;
+let Foobar;
+let FooBar;
+
+// good
+let fooBar;
+```
+
+* Enum members should be `ALLCAPS`.
+
+```ts
+// bad
+enum Foo {
+  bar = 'bar',
+  Baz = 'baz',
+}
+
+// good
+enum Foo {
+  BAR = 'bar',
+  BAZ = 'baz',
+}
+```
+
+This also applies to JavaScript objects that are used as enums.
+
+```js
+// bad
+/** @enum {string} */
+const foo = {
+  bar: 'bar',
+  Baz: 'baz',
+}
+
+// good
+/** @enum {string} */
+const foo = {
+  BAR: 'bar',
+  BAZ: 'baz',
+}
+
+
+// better
+/** @enum {string} */
+const Foo = {
+  BAR: 'bar',
+  BAZ: 'baz',
+}
+```
+
+* JavaScript classes and namespaces should be `PascalCase`.
+
+```js
+// bad
+class foo {}
+class FOO {}
+App.foo.bar();
+
+// good
+class Foo {}
+App.Foo.bar();
+```
+
+* CSS classes are `kebob-case`.
+
+```css
+/* bad */
+.fooBar {}
+.FOO-BAR {}
+
+/* good */
+.foo-bar {}
+```
 
 New code should generally get organized into the `App` namespace. See `js/002-config/fc-init-js.js` for a rough outline.
 
@@ -94,8 +166,8 @@ errors, it's not totally clean as is and there are a few false positives.
 ## Wiki Files
 
 * Writing Guides
-  * [Twine (Twine is being phased out of the project however the concepts are still relevant.)](devNotes/scene-guide.txt)
-  * [JS](devNotes/jsEventCreationGuide.md)
+  * [Twine (Twine is being phased out of the project however the concepts are still relevant)](devNotes/scene-guide.txt)
+  * [JavaScript](devNotes/jsEventCreationGuide.md)
 * [Exception handling](devNotes/exceptions.md)
 * [Sanity check](devNotes/exceptions.md)
 * [Slave List](devNotes/slaveListing.md)
@@ -105,7 +177,7 @@ errors, it's not totally clean as is and there are a few false positives.
   * [Limbs](devNotes/limb functions.md)
   * [Standalone functions](devNotes/standaloneFunctions.md)
   * [Some potentially useful JS functions](devNotes/usefulJSFunctionDocumentation.txt)
-  * [Content embending chart](devNotes/contentEmbendingChart.png) (for more detail refer to https://gitgud.io/pregmodfan/fc-pregmod/-/merge_requests/7453#note_118616)
+  * [Content embedding chart](devNotes/contentEmbeddingChart.png) (for more details refer to https://gitgud.io/pregmodfan/fc-pregmod/-/merge_requests/7453#note_118616)
 
 ## Useful issues
 
diff --git a/css/facilities/farmyard.css b/css/facilities/farmyard.css
index 9db4266282fc4af9fc1f3adccc204c105295d698..eddd66d9a37b03f05deb26a80c90f2e6b3a3431b 100644
--- a/css/facilities/farmyard.css
+++ b/css/facilities/farmyard.css
@@ -8,6 +8,7 @@
 .farmyard-rules,
 .farmyard-upgrades,
 .farmyard-animals,
+.farmyard-remove,
 .farmyard-slaves,
 .farmyard-heading {
 	margin-top: 1em;
diff --git a/css/gui/tooltips/textWithTooltip.css b/css/gui/tooltips/textWithTooltip.css
index 60036f7ff6dfdb4509470a83523403b9c0b68d5f..6af64664bfecfc979302889d85fcfb9f3b0239ef 100644
--- a/css/gui/tooltips/textWithTooltip.css
+++ b/css/gui/tooltips/textWithTooltip.css
@@ -1,7 +1,6 @@
 /* TODO unify tooltip systems */
 .textWithTooltip {
     position: relative;
-    display: inline-block;
     text-decoration: underline;
     text-decoration-color: lightblue;
 }
diff --git a/css/rulesAssistant/raSummary.css b/css/rulesAssistant/raSummary.css
index b9734d8fc017ea4f50347937dd2f3aa377bdfc3c..7a4a27adb36837bbec507f4fc7799c390ccb99af 100644
--- a/css/rulesAssistant/raSummary.css
+++ b/css/rulesAssistant/raSummary.css
@@ -1,3 +1,38 @@
 .scroll {
     overflow: auto;
+    height: 90vh
+}
+
+table.ra-sum {
+    text-align: left;
+    border-collapse: separate;
+    empty-cells: hide;
+}
+
+th.ra-sum, td.ra-sum {
+    border: 1px solid grey;
+}
+
+td.ra-sum {
+    white-space: nowrap;
+    overflow: hidden;
+}
+
+tr.ra-sum.header {
+    position:sticky;
+    top:0px;
+    z-index:2;
+    background:#111;
+}
+
+th.ra-sum.first-header-cell {
+    empty-cells: show;
+    border-style: hidden 
+}
+
+td.ra-sum.row-title {
+    position:sticky;
+    left: 0px;
+    z-index:1;
+    background:#111;
 }
diff --git a/devNotes/contentEmbendingChart.png b/devNotes/contentEmbeddingChart.png
similarity index 100%
rename from devNotes/contentEmbendingChart.png
rename to devNotes/contentEmbeddingChart.png
diff --git a/devTools/javaSanityCheck/ignoredVariables b/devTools/javaSanityCheck/ignoredVariables
index da4a3be56126777de80bdbdfa84d4036404c1321..7caca87985afedde1020bf1dcad3761f587b6ce7 100644
--- a/devTools/javaSanityCheck/ignoredVariables
+++ b/devTools/javaSanityCheck/ignoredVariables
@@ -1,10 +1,9 @@
 # Add hits, that are false positives and should therefore be ignored, here
+atkMod
+defMod
+tacChance
 #re-added below 11/14
 ############################
-#corp
-perUnit
-DivLegal
-DivWhoreDev
 acquire
 ############################
 societyChanged
@@ -12,9 +11,5 @@ totalMerc
 securityHQ
 waterwayTime
 dickSize
-bodyDesire
 dinnerParty
-RESSMuscles
-tempEventToggle
-showAppraisal
 sacrificeType
\ No newline at end of file
diff --git a/devTools/types/FC/human.d.ts b/devTools/types/FC/human.d.ts
index 4b2295a1ae88c98c0dc04f43f5ea39fa36a0bd0e..29ecadb2abc2ee986c6ad177e9ee858359fecdde 100644
--- a/devTools/types/FC/human.d.ts
+++ b/devTools/types/FC/human.d.ts
@@ -3,6 +3,7 @@ declare global {
 	export namespace FC {
 		export type SlaveState = InstanceType<typeof App.Entity.SlaveState>;
 		export type PlayerState = InstanceType<typeof App.Entity.PlayerState>;
+		export type AnimalState = InstanceType<typeof App.Entity.Animal>;
 
 		export type DeepPartialSlaveState = DeepPartial<SlaveState>;
 
@@ -318,8 +319,8 @@ declare global {
 		type HeightImplant = -1 | 0 | 1;
 		type Hearing = -2 | -1 | 0;
 
-		type AnimalKind = "human" | "dog" | "pig" | "horse" | "cow";
-		type SpermType = AnimalKind | "sterile";
+		type AnimalType = "human" | "dog" | "pig" | "horse" | "cow";
+		type SpermType = AnimalType | "sterile";
 
 		type GeneticQuirk = 0 | 1 | 2;
 		interface GeneticQuirks {
diff --git a/devTools/types/FC/misc.d.ts b/devTools/types/FC/misc.d.ts
index dda79ab6dd6e67096d513c0194f2d1f247d6d2f4..5756b821a712a5b9747123eedde1213985b10afe 100644
--- a/devTools/types/FC/misc.d.ts
+++ b/devTools/types/FC/misc.d.ts
@@ -6,7 +6,7 @@ declare namespace FC {
 	type SlaveMarketName = LawlessMarkets | OrdinaryMarkets;
 	type Gingering = Zeroable<"antidepressant" | "depressant" | "stimulant" | "vasoconstrictor" | "vasodilator" | "aphrodisiac" | "ginger">;
 	type GingeringDetection = Zeroable<"slaver" | "mercenary" | "force">;
-	type SlaveActs = "PCChildrenFathered" | "PCKnockedUp" | "anal" | "births" | "birthsTotal" | "cum" | "laborCount" | "mammary" | "milk" | "oral" | "penetrative" | "pitKills" | "miscarriages" | "publicUse" | "slavesFathered" | "slavesKnockedUp" | "vaginal" | "abortions" | "birth";
+	type SlaveActs = "PCChildrenFathered" | "PCKnockedUp" | "anal" | "births" | "birthsTotal" | "cum" | "laborCount" | "mammary" | "milk" | "oral" | "penetrative" | "pitKills" | "miscarriages" | "publicUse" | "slavesFathered" | "slavesKnockedUp" | "vaginal" | "abortions" | "birth" | "bestiality";
 
 	interface SlaveSchool {
 		title: string,
diff --git a/js/002-config/fc-js-init.js b/js/002-config/fc-js-init.js
index 7617588f4e275b1d16a255fc8313369058afe262..326ce62de2af6fb1f208ef236edfa4db51b1c089 100644
--- a/js/002-config/fc-js-init.js
+++ b/js/002-config/fc-js-init.js
@@ -21,6 +21,7 @@ App.Data.FCTV = {};
 App.Data.HeroSlaves = {};
 App.Data.Policies = {};
 App.Data.Policies.Selection = {};
+App.Data.SecExp = {};
 App.Data.Weather = {};
 App.Debug = {};
 App.Desc = {};
@@ -65,7 +66,6 @@ App.SecExp = {};
 App.SlaveAssignment = {};
 App.StartingGirls = {};
 App.UI = {};
-App.UI.Budget = {};
 App.UI.Cheat = {};
 App.UI.DOM = {};
 App.UI.DOM.Widgets = {};
diff --git a/js/003-data/gameVariableData.js b/js/003-data/gameVariableData.js
index b54896d5b4bd96d2bd005ae6ce4c51ca36b2ec82..b9a25e77b7633554b970aaf2f8c23a1fa1f7108e 100644
--- a/js/003-data/gameVariableData.js
+++ b/js/003-data/gameVariableData.js
@@ -87,6 +87,7 @@ App.Data.defaultGameStateVariables = {
 	slaveInteractLongForm: false,
 	headGirlSoftensFlaws: 1,
 	headGirlTrainsFlaws: 1,
+	headGirlOverridesQuirks: 0,
 	headGirlTrainsHealth: 1,
 	headGirlTrainsObedience: 1,
 	headGirlTrainsParaphilias: 1,
@@ -386,6 +387,9 @@ App.Data.resetOnNGPlus = {
 	thisWeeksIllegalWares: 0,
 	Sweatshops: 0,
 
+	/** @type {Array<Array<App.Events.BaseEvent>>} */
+	eventQueue: [],
+
 	rivalID: 0,
 	eliteAuctioned: 0,
 	slavesSacrificedThisWeek: 0,
@@ -953,6 +957,7 @@ App.Data.resetOnNGPlus = {
 	birthsTotal: 0,
 	abortionsTotal: 0,
 	miscarriagesTotal: 0,
+	bestialityTotal: 0,
 	pitKillsTotal: 0,
 	pitFightsTotal: 0,
 
diff --git a/js/003-data/playerData.js b/js/003-data/playerData.js
index e6b0c286886636a075f89f814b09c974d89d71c5..2d32ccd713105b2437f6dd8ce94e872c4c186844 100644
--- a/js/003-data/playerData.js
+++ b/js/003-data/playerData.js
@@ -42,5 +42,65 @@ App.Data.player = {
 				suggestions: new Set(["stimulants"])
 			}
 		],
+	]),
+	career: new Map([
+		["wealth", {
+			22: "wealth",
+			14: "trust fund",
+			10: "rich kid"
+		}],
+		["capitalist", {
+			22: "capitalist",
+			14: "entrepreneur",
+			10: "business kid"
+		}],
+		["mercenary", {
+			22: "mercenary",
+			14: "recruit",
+			10: "child soldier"
+		}],
+		["slaver", {
+			22: "slaver",
+			14: "slave overseer",
+			10: "slave tender"
+		}],
+		["engineer", {
+			22: "engineer",
+			14: "construction",
+			10: "worksite helper"
+		}],
+		["medicine", {
+			22: "medicine",
+			14: "medical assistant",
+			10: "nurse"
+		}],
+		["celebrity", {
+			22: "celebrity",
+			14: "rising star",
+			10: "child star"
+		}],
+		["escort", {
+			22: "escort",
+			14: "prostitute",
+			10: "child prostitute"
+		}],
+		["servant", {
+			22: "servant",
+			14: "handmaiden",
+			10: "child servant"
+		}],
+		["gang", {
+			22: "gang",
+			14: "hoodlum",
+			10: "street urchin"
+		}],
+		["BlackHat", {
+			22: "BlackHat",
+			14: "hacker",
+			10: "script kiddy"
+		}],
+		["arcology owner", {
+			22: "arcology owner"
+		}],
 	])
 };
diff --git a/js/003-data/slaveGeneData.js b/js/003-data/slaveGeneData.js
index 84656be8defc38d8d71dcc8e4f80f3a3b10af828..60714aaacbda54c10d6048ea5f005ed8a3768e19 100644
--- a/js/003-data/slaveGeneData.js
+++ b/js/003-data/slaveGeneData.js
@@ -1,5 +1,14 @@
-/** @type {Map.<FC.GeneticQuirks|string>} */
-App.Data.genes = new Map([
+/**
+ * @typedef {object} geneData
+ * @property {string} title
+ * @property {string} abbreviation
+ * @property {string} description
+ * @property {boolean} [goodTrait]
+ * @property {boolean} [requirements]
+ * @property {boolean} [pubertyActivated]
+ */
+/** @type {Map.<FC.GeneticQuirks|string, geneData>} */
+App.Data.geneticQuirks = new Map([
 	["albinism",
 		{
 			title: "albinism",
@@ -183,3 +192,31 @@ App.Data.genes = new Map([
 		}
 	],
 ]);
+
+/** @type {Map.<FC.GeneticMods|string, geneData>} */
+App.Data.geneticMods = new Map([
+	["NCS",
+		{
+			title: "induced NCS",
+			abbreviation: "ncs",
+			goodTrait: true,
+			description: ""
+		},
+	],
+	["rapidCellGrowth",
+		{
+			title: "rapid cell growth",
+			abbreviation: "rcg",
+			goodTrait: true,
+			description: "elasticity (plasticity) treatment"
+		},
+	],
+	["immortality",
+		{
+			title: "immortal",
+			abbreviation: "imrtl",
+			goodTrait: true,
+			description: "slave stops aging.  Can still die of other causes."
+		},
+	],
+]);
diff --git a/js/003-data/startingGirlsData.js b/js/003-data/startingGirlsData.js
index 86e157aa8b36c4df852f661a9804a1441f2abd04..191c4b51c66eb42f2af79b44bb78ac2d8e8e1aa4 100644
--- a/js/003-data/startingGirlsData.js
+++ b/js/003-data/startingGirlsData.js
@@ -97,7 +97,8 @@ App.Data.StartingGirls = {
 		{name: "Unskilled", value: 0, max: 10},
 		{name: "Basic", value: 15, max: 30},
 		{name: "Skilled", value: 35, max: 60},
-		{name: "Expert", value: 65, max: 999}
+		{name: "Expert", value: 65, max: 998},
+		{name: "Masterful", value: 999, max: 999},
 	],
 	devotion: [
 		{name: "Utterly hateful", value: -100, max: -95},
diff --git a/js/medicine/2-reproductiveOrgans.js b/js/medicine/2-reproductiveOrgans.js
index 27c13db5de8458dac788c155e034c57639a7a818..907325de657856652467c364fbf4f8ab3e0c6d4d 100644
--- a/js/medicine/2-reproductiveOrgans.js
+++ b/js/medicine/2-reproductiveOrgans.js
@@ -38,7 +38,7 @@ App.Medicine.OrganFarm.Testicles = class extends App.Medicine.OrganFarm.Organ {
 	/**
 	 * @param {Object} params
 	 * @param {string} params.name
-	 * @param {FC.AnimalKind} params.ballType
+	 * @param {FC.AnimalType} params.ballType
 	 */
 	constructor({name, ballType}) {
 		super({
@@ -158,7 +158,7 @@ App.Medicine.OrganFarm.Ovaries = class extends App.Medicine.OrganFarm.Organ {
 	/**
 	 * @param {object} params
 	 * @param {string} params.name
-	 * @param {FC.AnimalKind} params.eggType
+	 * @param {FC.AnimalType} params.eggType
 	 * @param {string} params.pregData
 	 */
 	constructor({name, eggType, pregData}) {
@@ -182,7 +182,7 @@ App.Medicine.OrganFarm.Ovaries = class extends App.Medicine.OrganFarm.Organ {
 						/**
 						 * @type {FC.PregnancyData}
 						 */
-							// @ts-ignore
+						// @ts-ignore
 						const data = {};
 						deepAssign(data, App.Data.misc.pregData[this.pregData]);
 						s.pregData = data;
@@ -208,7 +208,7 @@ App.Medicine.OrganFarm.Ovaries = class extends App.Medicine.OrganFarm.Organ {
 						/**
 						 * @type {FC.PregnancyData}
 						 */
-							// @ts-ignore
+						// @ts-ignore
 						const data = {};
 						deepAssign(data, App.Data.misc.pregData[this.pregData]);
 						s.pregData = data;
@@ -231,7 +231,7 @@ App.Medicine.OrganFarm.Ovaries = class extends App.Medicine.OrganFarm.Organ {
 App.Medicine.OrganFarm.AnalWombImplantAction = class extends App.Medicine.OrganFarm.OrganImplantAction {
 	/**
 	 * @param {object} params
-	 * @param {FC.AnimalKind} params.eggType
+	 * @param {FC.AnimalType} params.eggType
 	 * @param {string} params.pregData
 	 */
 	constructor({eggType, pregData}) {
@@ -251,7 +251,7 @@ App.Medicine.OrganFarm.AnalWombImplantAction = class extends App.Medicine.OrganF
 				/**
 				 * @type {FC.PregnancyData}
 				 */
-					// @ts-ignore
+				// @ts-ignore
 				const data = {};
 				deepAssign(data, App.Data.misc.pregData[this.pregData]);
 				s.pregData = data;
@@ -273,7 +273,7 @@ App.Medicine.OrganFarm.AnalWomb = class extends App.Medicine.OrganFarm.Organ {
 	/**
 	 * @param {object} params
 	 * @param {string} params.name
-	 * @param {FC.AnimalKind} params.eggType
+	 * @param {FC.AnimalType} params.eggType
 	 * @param {string} params.pregData
 	 */
 	constructor({name, eggType, pregData}) {
diff --git a/js/utils.js b/js/utils.js
index 4f12699266a5d314939830e8f09c1789c1327649..09a51932aa4f3a140d97b20ffaa438b2eb55386e 100644
--- a/js/utils.js
+++ b/js/utils.js
@@ -13,14 +13,6 @@ function jsDef(x) {
 	return !(typeof x === "undefined" || x === null || x === undefined);
 }
 
-/**
- * @param {number} n
- * @returns {boolean}
- */
-function isFloat(n) {
-	return Number.isFinite(n) && Math.floor(n) !== n;
-}
-
 /**
  * Determines if a is between low and high
  * @param {number} a
diff --git a/src/002-config/fc-version.js b/src/002-config/fc-version.js
index fac73455af3908898aee320c87ad7a7774e12d4a..5d0c318ff3484e04543706ca3428502ca6761555 100644
--- a/src/002-config/fc-version.js
+++ b/src/002-config/fc-version.js
@@ -2,5 +2,5 @@ App.Version = {
 	base: "0.10.7.1", // The vanilla version the mod is based off of, this should never be changed.
 	pmod: "3.9.6",
 	commitHash: null,
-	release: 1124 // When getting close to 2000,  please remove the check located within the onLoad() function defined at line five of src/js/eventHandlers.js.
+	release: 1128 // When getting close to 2000,  please remove the check located within the onLoad() function defined at line five of src/js/eventHandlers.js.
 };
diff --git a/src/002-config/mousetrapConfig.js b/src/002-config/mousetrapConfig.js
index 8c051bec6773f93f9698e41ad0b50836cc7ee815..f2a106d1eec639ec75d1ad19dff717ee1113339d 100644
--- a/src/002-config/mousetrapConfig.js
+++ b/src/002-config/mousetrapConfig.js
@@ -270,14 +270,14 @@ App.UI.Hotkeys = (function() {
 		a.target = "_blank";
 		a.append("US-QWERTY layout");
 		li.append(a,
-			"there may be keys or combinations of keys where the recorded key is different from the key used to listen to key events. You will have to find these keys yourself through trial and error.");
+			" there may be keys or combinations of keys where the recorded key is different from the key used to listen to key events. You will have to find these keys yourself through trial and error.");
 		ul.append(li);
 
 		App.UI.DOM.appendNewElement("li", ul, "Custom hotkeys are browser specific and are not part of your save.");
 
 		li = document.createElement("li");
-		li.append("While we try not to overwrite browser or OS level key combinations it is possible to do so with custom hotkeys. This also means that during recording of custom hotkeys no browser or OS level key combinations are available. There are however keys that cannot be overwritten, the ",
-			App.UI.DOM.makeElement("code", "Win key"), " on Windows is an example for this.");
+		li.append("While we try not to overwrite browser or OS level key combinations it is possible to do so with custom hotkeys. This also means that during recording of custom hotkeys no browser or OS level key combinations are available. There are however keys that cannot be overwritten, such as the ",
+			App.UI.DOM.makeElement("code", "Win key"), " on Windows.");
 		ul.append(li);
 
 		p.append(ul);
diff --git a/src/004-base/baseEvent.js b/src/004-base/baseEvent.js
index bae6fd8cb5b22a4995b63fc34dbac0759e2edcc0..19ca30806f7a181f783cc96b65ff8f2bdb9eb510 100644
--- a/src/004-base/baseEvent.js
+++ b/src/004-base/baseEvent.js
@@ -82,6 +82,20 @@ App.Events.BaseEvent = class BaseEvent {
 	castActors(firstActor) {
 		const prereqs = this.actorPrerequisites();
 
+		// if casting is already complete and still valid, don't do it again
+		if (this.actors.length === prereqs.length) {
+			let recast = false;
+			for (let i = 0; i < this.actors.length; ++i) {
+				const actor = getSlave(this.actors[i]);
+				recast = actor && prereqs[i].some(p => !p(actor));
+			}
+			if (!recast) {
+				return true; // all roles previously cast & prereqs still met
+			}
+		}
+
+		this.actors = [];
+
 		let i = 0;
 		if (firstActor && prereqs.length > 0) {
 			if (prereqs[0].every(p => p(firstActor))) {
diff --git a/src/005-passages/eventsPassages.js b/src/005-passages/eventsPassages.js
index ecdec9db6a572fcf7aedd6c05b5dc962d67a3b18..411794b7ab4d46acf481f7e134eca19003f3e1e8 100644
--- a/src/005-passages/eventsPassages.js
+++ b/src/005-passages/eventsPassages.js
@@ -54,3 +54,12 @@ new App.DomPassage("P rivalry victory",
 		return App.Events.pRivalryVictory();
 	}
 );
+
+new App.DomPassage("P hostage acquisition",
+	() => {
+		V.nextButton = "Continue";
+		V.nextLink = "Scheduled Event";
+		V.returnTo = "Scheduled Event";
+		return App.Events.pHostageAcquisition();
+	}
+);
diff --git a/src/005-passages/facilitiesPassages.js b/src/005-passages/facilitiesPassages.js
index e3d475ee9462f184bedf1f9e0a2b3a2eb66de3a3..7cc3640ea05ce90f289661635ec2bcd189f755c3 100644
--- a/src/005-passages/facilitiesPassages.js
+++ b/src/005-passages/facilitiesPassages.js
@@ -62,6 +62,15 @@ new App.DomPassage("Rules Assistant",
 	}, ["jump-to-safe", "jump-from-safe"]
 );
 
+new App.DomPassage("Rules Assistant Summary",
+	() => {
+		V.nextButton = "Back";
+		V.nextLink = "Rules Assistant";
+		V.returnTo = "Rules Assistant";
+		return App.RA.summary();
+	}, ["jump-to-safe", "jump-from-safe"]
+);
+
 new App.DomPassage("Toy Shop",
 	() => {
 		V.nextButton = "Back";
diff --git a/src/005-passages/managePassages.js b/src/005-passages/managePassages.js
index 1cd34871ac5e4c484b1940d86890d18669b1feb5..4f0fb63a06a797ea23508921dbb67fee05aea3f4 100644
--- a/src/005-passages/managePassages.js
+++ b/src/005-passages/managePassages.js
@@ -30,7 +30,7 @@ new App.DomPassage("retire",
 new App.DomPassage("Change Language",
 	() => {
 		V.nextButton = "Confirm changes";
-		V.nextLink = "Main"
+		V.nextLink = "Main";
 		return App.Arcology.changeLanguage();
 	}, ["jump-from-safe"]
 );
@@ -42,3 +42,12 @@ new App.DomPassage("Neighbor Arcology Cheat",
 		return App.UI.Cheat.neighbors();
 	}
 );
+
+new App.DomPassage("Manage Corporation",
+	() => {
+		V.nextButton = "Back";
+		V.nextLink = "Main";
+		V.encyclopedia = "The Corporation";
+		return App.Corporate.manage();
+	}, ["jump-to-safe", "jump-from-safe"]
+);
diff --git a/src/Corporation/corporate-divisionBase.js b/src/Corporation/corporate-divisionBase.js
index 0fb03eb656f22c7ed222b8e560657d99414a8713..d09adf086b145cc1a1d4d61d0699ea140ba6278f 100644
--- a/src/Corporation/corporate-divisionBase.js
+++ b/src/Corporation/corporate-divisionBase.js
@@ -137,13 +137,13 @@ App.Corporate.Init_DivisionBase = function(shared) {
 			this.setStored(`To${division.id}`, value ? 1 : 0);
 		}
 		getAutoSendToMarket() {
-			return this.getStored("ToMarket") == 1;
+			return this.getStored("ToMarket") || 0;
 		}
 		setAutoSendToMarket(value) {
 			this.setStored("ToMarket", value ? 1 : 0);
 		}
 		getAutoBuyFromMarket() {
-			return this.getStored("FromMarket");
+			return this.getStored("FromMarket")||0;
 		}
 		setAutoBuyFromMarket(value) {
 			this.setStored("FromMarket", value ? 1 : 0);
diff --git a/src/Corporation/manageCorporation.js b/src/Corporation/manageCorporation.js
index 9735544ef960b6f0aa666c9531ff79dad555e7de..4b41033a20d1291e7873f7b636cadcd706904932 100644
--- a/src/Corporation/manageCorporation.js
+++ b/src/Corporation/manageCorporation.js
@@ -1,57 +1,2118 @@
-App.Corporate.corpRaces = function() {
-	const el = new DocumentFragment();
-	App.UI.DOM.appendNewElement("div", el, `The corporation enslaves people of the following race${V.corp.SpecRaces.length === 1 ? ``:`s`}:`);
-	for (const [race, capRace] of App.Data.misc.filterRaces) {
-		const r = [];
-		if (V.corp.SpecRaces.includes(race)) {
-			r.push(capRace);
-			if (!(V.arcologies[0].FSSubjugationist !== "unset" && V.arcologies[0].FSSubjugationistRace !== race)) {
-				if (V.corp.SpecRaces.length > 1 && V.corp.SpecTimer === 0) {
-					const needsToken = (V.corp.SpecRaces.length === 4 || V.corp.SpecRaces.length === 8);
-					if (needsToken && V.corp.SpecToken > 0) {
-						r.push(
-							App.UI.DOM.link(
-								"Blacklist",
-								() => {
-									V.corp.SpecRaces = corpBlacklistRace(race, 1);
-									V.corp.SpecToken -= 1;
-									V.corp.SpecTimer = 1;
-									App.UI.reload();
-								},
-							)
-						);
-					} else if (!needsToken) {
-						r.push(
-							App.UI.DOM.link(
-								"Blacklist",
-								() => {
-									V.corp.SpecRaces = corpBlacklistRace(race, 1);
-									App.UI.reload();
-								},
-							)
-						);
+App.Corporate.manage = function() {
+	const wrapper = document.createElement("div");
+	wrapper.append(structure());
+	return wrapper;
+
+	/**
+	 * @returns {DocumentFragment}
+	 */
+	function structure() {
+		const f = new DocumentFragment();
+
+		if (!App.Corporate.founded) {
+			f.append(foundingPage());
+		} else {
+			App.UI.DOM.appendNewElement("h1", f, "Corporation Overview");
+			if (App.Corporate.foundedDate) {
+				App.UI.DOM.appendNewElement("div", f, `Founded on ${asDateString(App.Corporate.foundedDate)}.`, "founding");
+			}
+
+			f.append(App.Corporate.writeLedger(App.Corporate.ledger.old, V.week - 1));
+
+			f.append(divisionManagement());
+			if (App.Corporate.canExpand) { // Is the corporation large enough to expand into another division?
+				f.append(newDivision());
+			}
+			f.append(financials());
+			f.append(specializations());
+			f.append(dissolveLink());
+		}
+
+		return f;
+	}
+
+	function refresh() {
+		App.UI.DOM.replace(wrapper, structure());
+	}
+
+	/**
+	 * @returns {DocumentFragment}
+	 */
+	function foundingPage() {
+		const el = new DocumentFragment();
+		App.UI.DOM.appendNewElement("h1", el, "Incorporation");
+		App.UI.DOM.appendNewElement("p", el, "Please consider that the market price of slaves has quite the impact on the profitability of your corporation. Focus on acquisition when prices are high, exploitation if prices are low. Slave improvement is a safe choice either way. Also note the option for a 8 - 7 share split instead of the vanilla 2 - 1, this makes the initial investment cheaper but leaves you with relatively less shares.", "intro");
+
+		const divisionsByFoundingCost = App.Corporate.divisionList.concat().sort(function(a, b) { return a.founding.startingPrice - b.founding.startingPrice; });
+		const optionsText = ["to found a slave corporation", "for most options", "for many options", "for some options", "for the final option"];
+
+		// Picking a starting division
+		let personalShares = 8000;
+		let publicShares = 7000;
+		if (V.vanillaShareSplit === 1) {
+			personalShares = 2000;
+			publicShares = 1000;
+		}
+
+		for (let i = 0; i < divisionsByFoundingCost.length; i++) {
+			const division = divisionsByFoundingCost[i];
+			const divisionCost = App.Corporate.foundingCostToPlayer(division, personalShares, publicShares);
+			if (V.cash >= divisionCost) {
+				if (i === 0) {
+					App.UI.DOM.appendNewElement("div", el, `You can lay the groundwork for a slave corporation and choose to start out with:`);
+				}
+				addDiv(el,
+					App.UI.DOM.link(division.name, () => {
+						App.Corporate.create(division.id, personalShares, publicShares);
+						refresh();
+					}),
+					" (",
+					App.UI.DOM.makeElement("span", cashFormat(divisionCost), "cash"),
+					"): Focuses on ", division.focusDescription, "."
+				);
+			} else {
+				const r = [];
+				r.push("You lack the funds");
+				r.push(optionsText[App.Utils.mapIndexBetweenLists(i, divisionsByFoundingCost, optionsText)] + ".");
+				r.push(`You need at least`);
+				r.push(App.UI.DOM.makeElement("span", cashFormat(divisionCost), "cash"));
+
+				if (i !== 0) {
+					if (i < divisionsByFoundingCost.length - 1) {
+						r.push(`for the next option and at most`);
+						r.push(App.UI.DOM.makeElement("span",
+							cashFormat(App.Corporate.foundingCostToPlayer(
+								divisionsByFoundingCost[divisionsByFoundingCost.length - 1],
+								personalShares, publicShares)),
+							"cash"));
+					} else {
+						r.push(`for it.`);
 					}
 				}
+				App.Events.addParagraph(el, r);
+				break;
+			}
+		}
+
+		const options = new App.UI.OptionsGroup().customRefresh(refresh);
+		options.addOption("Share split", "vanillaShareSplit")
+			.addValue("2-1", 1).addValue("8-7", 0);
+		el.append(options.render());
+		return el;
+	}
+
+	/**
+	 * @returns {DocumentFragment}
+	 */
+	function divisionManagement() {
+		const el = new DocumentFragment();
+		App.UI.DOM.appendNewElement("h1", el, "Division Management");
+
+		for (let _div of App.Corporate.divisionList) {
+			if (!_div.founded) {
+				continue;
+			}
+
+			App.UI.DOM.appendNewElement("h2", el, `${_div.name} Division`);
+			if (_div.foundedDate !== 0) {
+				App.UI.DOM.appendNewElement("div", el, `Founded on ${asDateString(_div.foundedDate)}.`, "founding");
+			}
+
+			App.UI.DOM.appendNewElement("div", el, `This division focuses on ${_div.focusDescription}.`);
+
+			let div = document.createElement("div");
+			$(div).append(_div.messageSlaveCount());
+			el.append(div);
+
+			let _divMaint = _div.getDisplayMaintenanceCost();
+			addDiv(el, "It costs ",
+				App.UI.DOM.makeElement("span", cashFormat(Math.trunc(_divMaint.cost)), ["cash", "dec"]),
+				" to run. On average that is ",
+				App.UI.DOM.makeElement("span", cashFormat(Math.trunc(_divMaint.perUnit)), ["cash", "dec"]),
+				" per slave.");
+
+			div = document.createElement("div");
+			$(div).append(_div.messageSlaveOutput());
+			el.append(div);
+
+			let _divSentenceStart = ["Currently the division", "It also"];
+			App.UI.DOM.appendNewElement("h3", el, "Direct Control");
+
+			if (_div.fromMarket) {
+				addDiv(el, `${_divSentenceStart.shift()} is ${_div.slaveAction.present} `,
+					App.UI.DOM.makeElement("span", numberWithPlural(_div.activeSlaves, "slave"), "green"));
+
+				if (_div.activeSlaves < _div.developmentCount) {
+					let _fillSlaveCount = _div.availableRoom;
+					addDiv(el, `There is room to ${_div.slaveAction.future} ${numberWithPluralOne(_fillSlaveCount, "more slave")}.`);
+
+					let _buySlaveArray = [
+						{'name': 'Buy Slave', 'count': 1},
+						{'name': 'Buy x10', 'count': 10}
+					];
+
+					if (!_buySlaveArray.some(function(x) { return x.count === _fillSlaveCount; })) {
+						_buySlaveArray.push({'name': 'Fill', 'count': _fillSlaveCount});
+					}
+					let _singleSlaveCost = App.Corporate.slaveMarketPurchaseValue(_div, 1);
+					if (V.corp.Cash > _singleSlaveCost) {
+						addDiv(el, `The corporation can purchase slaves directly from the market for about `,
+							cashFormatColor(_singleSlaveCost), ".");
+
+						const links = [];
+
+						for (const _slaveNum of _buySlaveArray.filter(num => _div.availableRoom >= num.count)) {
+							let _slaveSetCost = App.Corporate.slaveMarketPurchaseValue(_div, _slaveNum.count);
+							if (V.corp.Cash < _slaveSetCost) {
+								continue;
+							}
+							links.push(App.UI.DOM.link(_slaveNum.name, () => {
+								App.Corporate.buySlaves(_div.id, _slaveNum.count);
+								refresh();
+							}));
+						}
+						el.append(App.UI.DOM.generateLinksStrip(links));
+					} else {
+						addDiv(el, App.UI.DOM.makeElement("span", "The corporation cannot afford to purchase any slaves from the market.", "note"), " It requires about ",
+							App.UI.DOM.makeElement("span", cashFormat(_singleSlaveCost), "cash"), ` to buy a ${asSingular(_div.slaveAction.market)}.`);
+					}
+				} else {
+					addDiv(el, "There is ", App.UI.DOM.makeElement("em", "no room"), ` to ${_div.slaveAction.future} more slaves.`);
+				}
+			}
+			if (_div.toMarket) {
+				let _finishedSlaveNoun = _div.nounFinishedSlave;
+				if (_div.heldSlaves > 0) {
+					addDiv(el, `${_divSentenceStart.shift()} holds `,
+						App.UI.DOM.makeElement("span", numberWithPlural(_div.heldSlaves, _finishedSlaveNoun), "green"),
+						".");
+					for (const _nextDiv of _div.relatedDivisions.to
+						.filter(div => div.availableRoom > 0
+							&& !App.Corporate.ownsIntermediaryDivision(_div, div))) {
+						addDiv(el, `The ${_nextDiv.name} Division can accept up to `, App.UI.DOM.makeElement("span", numberWithPlural(_nextDiv.availableRoom, "slave"), "green"), ".");
+
+						let _sendSlaveArray = [
+							{'name': 'Send Slave', 'count': 1},
+							{'name': 'Send x10', 'count': 10}
+						];
+						if (_div.heldSlaves >= _nextDiv.availableRoom) {
+							_sendSlaveArray.push({
+								'name': `Fill  ${_nextDiv.name} Division`,
+								'count': _nextDiv.availableRoom
+							});
+						} else {
+							_sendSlaveArray.push({'name': 'Send All', 'count': _div.heldSlaves});
+						}
+						const links = [];
+						for (const _slaveNum of _sendSlaveArray.filter(slaveNum => slaveNum.count <= _nextDiv.availableRoom && slaveNum.count <= _div.heldSlaves)) {
+							links.push(App.UI.DOM.link(_slaveNum.name, () => {
+								App.Corporate.transferSlaves(_div.id, _nextDiv.id, _slaveNum.count);
+								refresh();
+							}));
+						}
+						el.append(App.UI.DOM.generateLinksStrip(links));
+					}
+
+					App.UI.DOM.appendNewElement("div", el, "The corporation can sell these slaves to the market.");
+
+					let _sellSlaveArray = [
+						{'name': 'Sell Slave', 'count': 1},
+						{'name': 'Sell x10', 'count': 10},
+						{'name': 'Sell x100', 'count': 100},
+						{'name': 'Sell All', 'count': _div.heldSlaves}
+					];
+
+					const links = [];
+					for (const _slaveNum of _sellSlaveArray.filter(slaveNum => _div.heldSlaves >= slaveNum.count)) {
+						links.push(App.UI.DOM.link(_slaveNum.name, () => {
+							App.Corporate.sellSlaves(_div.id, _slaveNum.count);
+							refresh();
+						}));
+					}
+					el.append(App.UI.DOM.generateLinksStrip(links));
+				} else {
+					App.UI.DOM.appendNewElement("div", el, `The division is not holding any ${asPlural(_finishedSlaveNoun)}.`);
+				}
+			}
+
+			// Division size
+			const links = [];
+
+			/* Expanding the division*/
+			let _depExpandCost = _div.sizeCost * 1000;
+			addDiv(el, "Expanding the division costs ", App.UI.DOM.makeElement("span", cashFormat(_depExpandCost), ["cash", "dec"]), " Downsizing recoups 80% of the investment; slaves will be sold at the going rate.");
+
+			let _buyDevArray = [
+				{'name': 'Expand Division', 'count': 1},
+				{'name': 'Expand x10', 'count': 10}
+			];
+
+			for (const _buySet of _buyDevArray.filter(buySet => App.Corporate.cash >= buySet.count * _depExpandCost)) {
+				links.push(App.UI.DOM.link(_buySet.name, () => {
+					App.Corporate.buyDevelopment(_div.id, _buySet.count);
+					refresh();
+				}));
+			}
+
+			/* Downsize the division*/
+			const _sellDevArray = [
+				{'name': 'Downsize Division', 'count': 1},
+				{'name': 'Downsize x10', 'count': 10}
+			];
+
+			for (const _sellSet of _sellDevArray.filter(divNum => _div.developmentCount > divNum.count)) {
+				links.push(App.UI.DOM.link(_sellSet.name, () => {
+					App.Corporate.sellDevelopment(_div.id, _sellSet.count);
+					refresh();
+				}));
+			}
+
+			el.append(App.UI.DOM.generateLinksStrip(links));
+
+			App.UI.DOM.appendNewElement("h3", el, "Rules");
+
+			const options = new App.UI.OptionsGroup().customRefresh(refresh);
+			for (const _nextDiv of _div.relatedDivisions.to
+				.filter(nextDiv => nextDiv.founded && !App.Corporate.ownsIntermediaryDivision(_div, nextDiv))) {
+				// TODO: Originally this had a bit of flavor per nextDep. ie, Surgery said "to undergo surgery"
+				const o = {send: _div.getAutoSendToDivision(_nextDiv)};
+				options.addOption(`Auto send slaves to ${_nextDiv.name} Division`, "send", o)
+					.addValue("Enabled", true, () => {
+						App.Corporate.setAutoSendToDivision(_div.id, _nextDiv.id, true);
+						refresh();
+					}).on()
+					.addValue("Disabled", false, () => {
+						App.Corporate.setAutoSendToDivision(_div.id, _nextDiv.id, false);
+						refresh();
+					}).off();
+			}
+
+			if (_div.toMarket) {
+				const o = {send: _div.getAutoSendToMarket()};
+				options.addOption("Auto send to market", "send", o)
+					.addValue("Enabled", 1, () => {
+						App.Corporate.setAutoSendToMarket(_div.id, 1);
+						refresh();
+					}).on()
+					.addValue("Disabled", 0, () => {
+						App.Corporate.setAutoSendToMarket(_div.id, 0);
+						refresh();
+					}).off();
 			}
+
+			if (_div.fromMarket) {
+				const o = {buy: _div.getAutoBuyFromMarket()};
+				options.addOption("Auto buy slaves from the market", "buy", o)
+					.addValue("Enabled", 1, () => {
+						App.Corporate.setAutoBuyFromMarket(_div.id, 1);
+						refresh();
+					}).on()
+					.addValue("Disabled", 0, () => {
+						App.Corporate.setAutoBuyFromMarket(_div.id, 0);
+						refresh();
+					}).off();
+			}
+			el.append(options.render());
+
+			if (App.Corporate.numDivisions > 1) {
+				// Cannot dissolve the last division
+				addDiv(el,
+					App.UI.DOM.link("Dissolve Division", () => {
+						if (Dialog.isOpen()) {
+							Dialog.close();
+						}
+
+						Dialog.setup("Dissolve Division");
+						const frag = new DocumentFragment();
+						App.UI.DOM.appendNewElement("p", frag, "Dissolving the division will destroy all of its assets!", "note");
+						App.UI.DOM.appendNewElement("p", frag, "This decision cannot be reverted!", ["warning", "note"]);
+						frag.append(App.UI.DOM.link("Dissolve", () => {
+							App.Corporate.divisions[_div.id].dissolve();
+							refresh();
+							Dialog.close();
+						}));
+						$(Dialog.body()).empty().append(frag);
+						Dialog.open();
+					})
+				);
+			}
+		}
+		return el;
+	}
+
+	/**
+	 * @returns {DocumentFragment}
+	 */
+	function newDivision() {
+		const el = new DocumentFragment();
+		App.UI.DOM.appendNewElement("h1", el, "Found New Division");
+
+		addDiv(el, `The corporation can expand by founding a new division related to its current ${onlyPlural(App.Corporate.divisionList.filter(div => div.founded).length, "division")}.`);
+
+		for (const _div of App.Corporate.divisionList.filter(x => !x.founded && x.relatedDivisions.anyFounded)) {
+			const _depCost = _div.foundingCost * 1000;
+
+			if (App.Corporate.cash >= _depCost) {
+				addDiv(el,
+					App.UI.DOM.link("Add " + _div.name + " Division", () => {
+						App.Corporate.divisions[_div.id].create(App.Corporate);
+						refresh();
+					}),
+					" (",
+					App.UI.DOM.makeElement("span", cashFormat(_depCost), "cash"),
+					`): A division focusing on ${_div.focusDescription}.`);
+			} else {
+				addDiv(el, `${_div.name} (`,
+					App.UI.DOM.makeElement("span", cashFormat(_depCost), ["cash", "dec"]),
+					`): The corporation cannot afford to start a division focusing on ${_div.focusDescription}.`);
+			}
+		}
+		return el;
+	}
+
+	/**
+	 * @returns {DocumentFragment}
+	 */
+	function financials() {
+		const el = new DocumentFragment();
+
+		App.UI.DOM.appendNewElement("h1", el, "Financials");
+		App.UI.DOM.appendNewElement("h2", el, "Dividend");
+
+		const div = document.createElement("div");
+		let _dividends = App.Corporate.dividendOptions;
+		let _index = _dividends.findIndex(element => App.Corporate.dividendRatio >= element);
+		let _dividend = _dividends[_index];
+		if (_index >= 0) {
+			let _nextIndex = _index + 1;
+			App.Corporate.dividendRatio = _dividend;/* Normalize */
+			div.append(`The corporation is currently reserving ${Math.trunc(_dividend * 100)}% of its profit to be paid out as dividends. `);
+			const links = [];
+			if (_index > 0) {
+				links.push(App.UI.DOM.link("Increase Ratio", () => {
+					App.Corporate.dividendRatio = _dividends[_index - 1];
+					refresh();
+				}));
+			}
+			if (_nextIndex !== _dividends.length) {
+				links.push(App.UI.DOM.link("Reduce Ratio", () => {
+					App.Corporate.dividendRatio = _dividends[_nextIndex];
+					refresh();
+				}));
+			} else {
+				links.push(App.UI.DOM.link("None", () => {
+					App.Corporate.dividendRatio = 0;
+					refresh();
+				}));
+			}
+			div.append(App.UI.DOM.generateLinksStrip(links));
 		} else {
-			r.push(App.UI.DOM.makeElement("span", capFirstChar(capRace), "strikethrough"));
+			div.append(`The corporation is currently not reserving a portion of its profit to be paid out as dividends. `);
+			div.append(App.UI.DOM.link("Increase Ratio", () => {
+				App.Corporate.dividendRatio = _dividends[_dividends.length - 1];
+				refresh();
+			}));
+		}
+		el.append(div);
+
+		if (App.Corporate.payoutCash) {
+			addDiv(el, "The corporation will payout unused cash reserves over ", App.UI.DOM.makeElement("span", cashFormat(App.Corporate.payoutAfterCash), "yellowgreen"), " as dividends. ", App.UI.DOM.link("Stop", () => {
+				App.Corporate.payoutCash = false;
+				refresh();
+			}));
+		} else {
+			addDiv(el, "You can direct the corporation to reserve cash over ", App.UI.DOM.makeElement("span", cashFormat(App.Corporate.payoutAfterCash), "yellowgreen"), " to be paid out as dividends as well. ", App.UI.DOM.link("Payout Cash Reserves", () => {
+				App.Corporate.payoutCash = true;
+				refresh();
+			}));
+		}
+
+		App.UI.DOM.appendNewElement("h2", el, "Shares");
+		let r = [];
+
+		r.push(`You own`);
+		r.push(num(V.personalShares));
+		r.push(`shares while another`);
+		r.push(num(V.publicShares));
+		r.push(`shares are traded publicly. The going rate on the market for 1000 shares is currently`);
+		r.push(App.UI.DOM.makeElement("span", `${cashFormat(corpSharePrice())}.`, "cash"));
+		addDiv(el, ...App.Events.spaceSentences(r));
+
+		r = [];
+		r.push(`The corporation can buyback 1000 shares for`);
+		r.push(App.UI.DOM.makeElement("span", cashFormat(corpSharePrice(-1000)), ["cash", "dec"]));
+		r.push(`or issue 1000 shares and net`);
+		r.push(App.UI.DOM.makeElement("span", `${cashFormat(corpSharePrice(1000))}.`, "cash"));
+		r.push(`The corporation will prefer to round shares to the nearest 1000 and will issue or buy shares toward that goal first.`);
+		addDiv(el, ...App.Events.spaceSentences(r));
+
+		if (V.corp.Cash > corpSharePrice(-1000)) {
+			if (V.publicShares <= V.personalShares - 2000 && V.publicShares > 0) {
+				// It won't buy back player shares if the corporation is entirely owned by the player
+				let _persExtraShares = V.personalShares % 1000 || 1000;
+				addDiv(el, "The corporation can buyback some of your shares. ",
+					App.UI.DOM.link(`Buyback ${_persExtraShares}`, () => {
+						cashX(corpSharePrice(-_persExtraShares), 'stocksTraded');
+						V.corp.Cash -= corpSharePrice(-_persExtraShares);
+						V.personalShares -= _persExtraShares;
+						refresh();
+					}));
+			}
+			if (V.publicShares >= 1000) {
+				let _pubExtraShares = V.publicShares % 1000 || 1000;
+				addDiv(el, "The corporation can buyback some of the public shares. ",
+					App.UI.DOM.link(`Buyback ${_pubExtraShares}`, () => {
+						V.corp.Cash -= corpSharePrice(-_pubExtraShares);
+						V.corp.Cash -= corpSharePrice(-_pubExtraShares);
+						V.publicShares -= _pubExtraShares;
+						refresh();
+					}));
+			}
+		}
+
+		let _persLeftoverShares = 1000 - (V.personalShares % 1000);
+		if (V.cash > corpSharePrice(_persLeftoverShares)) {
+			addDiv(el, `The corporation can issue ${_persLeftoverShares} shares to you. `,
+				App.UI.DOM.link(`Issue ${_persLeftoverShares}`, () => {
+					cashX(forceNeg(corpSharePrice(_persLeftoverShares)), 'stocksTraded');
+					V.corp.Cash += corpSharePrice(_persLeftoverShares);
+					V.personalShares += _persLeftoverShares;
+					refresh();
+				}));
+		}
+		let _pubLeftoverShares = 1000 - (V.publicShares % 1000);
+		if (V.publicShares <= V.personalShares - 2000) {
+			addDiv(el, `The corporation can issue ${_pubLeftoverShares} shares onto the stock market. `,
+				App.UI.DOM.link(`Issue ${_pubLeftoverShares}`, () => {
+					V.corp.Cash += corpSharePrice(_pubLeftoverShares);
+					V.publicShares += _pubLeftoverShares;
+					refresh();
+				}));
+		}
+		if (V.publicShares <= V.personalShares - 3000) {
+			addDiv(el, `You can sell some of your shares on the stock market. `,
+				App.UI.DOM.link("Sell 1000", () => {
+					cashX(corpSharePrice(), "stocksTraded");
+					V.personalShares -= 1000;
+					V.publicShares += 1000;
+					refresh();
+				}));
+		}
+
+		if (V.cash > corpSharePrice() && V.publicShares >= 1000) {
+			addDiv(el, "You can buy some shares from the stock market. ",
+				App.UI.DOM.link("Buy 1000", () => {
+					cashX(forceNeg(corpSharePrice()), "stocksTraded");
+					V.personalShares += 1000;
+					V.publicShares -= 1000;
+					refresh();
+				}));
+		}
+
+		App.UI.DOM.appendNewElement("h3", el, "Stock Split");
+		// Splitting shares when they're unwieldy
+		let _splitFeeInitial = 10000;
+		let _splitFeeValue = _splitFeeInitial - Math.floor((_splitFeeInitial * (V.PC.skill.trading / 100.0) / 2.0) / 1000) * 1000;
+		let _splitStockConstants = App.Corporate.stockSplits;
+
+		r = [];
+		r.push(`The corporation can perform a stock split to increase the number of stocks while maintaining the same owned value. This requires paying a market fee of`);
+		r.push(App.UI.DOM.makeElement("span", cashFormat(_splitFeeValue), ["cash", "dec"]));
+		r.push(`plus a per-share fee depending on the type of split being done.`);
+
+		if (_splitFeeValue < _splitFeeInitial) {
+			r.push(App.UI.DOM.makeElement("span", "You negotiated lower fees due to your", "note"));
+			r.push(App.UI.DOM.makeElement("span", "business acumen", ["skill", "player", "note"]));
+		}
+		addDiv(el, ...App.Events.spaceSentences(r));
+
+		if (V.corp.SpecTimer > 0) {
+			App.UI.DOM.appendNewElement("div", el, "The corporation has restructured too recently.", "note");
+		}
+
+		const ul = document.createElement("ul");
+		for (const _stockType of _splitStockConstants) {
+			let _splitValue = _stockType.cost;
+			let _splitDenom = _stockType.oldStocks || 1;
+			let _splitNumerator = _stockType.newStocks || 1;
+			let _splitMultiplier = _splitNumerator / _splitDenom;
+			let _splitTotal = _splitValue * (V.publicShares + V.personalShares) + _splitFeeValue;
+			let _splitWeek = _stockType.weeks;
+
+			const li = document.createElement("li");
+			r = [];
+			r.push(`${_splitNumerator}-for-${_splitDenom}`);
+			if (_splitDenom > _splitNumerator) {
+				r.push(`inverse`);
+			}
+			r.push(`stock split at`);
+			r.push(App.UI.DOM.makeElement("span", cashFormat(_splitValue), ["cash", "dec"]));
+			r.push(`per share. Including market fees, this will cost the corporation a total of`);
+			r.push(App.UI.DOM.makeElement("span", `${cashFormat(_splitTotal)},`, ["cash", "dec"]));
+			r.push(`leaving the going rate for stock at`);
+			r.push(App.UI.DOM.makeElement("span", cashFormat(Math.floor(corpSharePrice(0, V.personalShares * _splitMultiplier, V.publicShares * _splitMultiplier))), "cash"));
+			r.push(`per 1000 shares.`);
 			if (V.corp.SpecTimer === 0) {
-				r.push(
-					App.UI.DOM.link(
-						"Whitelist",
-						() => {
-							V.corp.SpecRaces = corpBlacklistRace(race, 0);
-							if (V.corp.SpecRaces.length === 3 || V.corp.SpecRaces.length === 7 || V.corp.SpecRaces.length === 11) {
-								V.corp.SpecToken += 1;
+				if (V.publicShares % _splitDenom !== 0 || V.personalShares % _splitDenom !== 0) {
+					r.push(App.UI.DOM.makeElement("span", "The number of shares cannot be evenly split", "note"));
+				} else if (V.corp.Cash > _splitTotal) {
+					r.push(App.UI.DOM.link("Split Shares", () => {
+						V.corp.Cash -= _splitTotal;
+						V.publicShares *= _splitMultiplier;
+						V.personalShares *= _splitMultiplier;
+						V.corp.SpecTimer = _splitWeek;
+						refresh();
+					}));
+				} else {
+					r.push(App.UI.DOM.makeElement("span", "The corporation cannot afford the fees.", "note"));
+				}
+			}
+			li.append(...App.Events.spaceSentences(r));
+			ul.append(li);
+		}
+		el.append(ul);
+		return el;
+	}
+
+	/**
+	 * @returns {DocumentFragment}
+	 */
+	function specializations() {
+		const el = new DocumentFragment();
+		App.UI.DOM.appendNewElement("h1", el, "Slave specialization");
+		if (V.corp.SpecToken > 0) {
+			// Spending tokens on new specializations
+			const r = [];
+			if (V.corp.SpecToken > 1) {
+				r.push(`Your corporation has ${V.corp.SpecToken} specializations left.`);
+			} else {
+				r.push(`Your corporation has one specialization left.`);
+			}
+			if (V.corp.SpecTimer > 0) {
+				r.push(`You have recently changed specializations and the corporation needs`);
+				if (V.corp.SpecTimer > 1) {
+					r.push(`${V.corp.SpecTimer} more weeks`);
+				} else {
+					r.push(`another week`);
+				}
+
+				r.push(`before it can comply with another directive.`);
+				if (V.cheatMode === 1) {
+					r.push(App.UI.DOM.link("Skip wait", () => {
+						V.corp.SpecTimer = 0;
+						refresh();
+					}));
+				}
+				addDiv(el, ...App.Events.spaceSentences(r));
+			} else {
+				addDiv(el, ...App.Events.spaceSentences(r));
+				addDiv(el, "Choosing to specialize your corporation uses a specialization. The corporation can be directed to focus on the following:");
+				if (V.corp.SpecRaces.length === 0 && (V.corp.DivExtra > 0 || V.corp.DivLegal > 0)) {
+					// This used to be V.captureUpgradeRace, it is a general acquisition specialization
+
+					const links = [];
+					for (const [key, race] of App.Data.misc.filterRacesBase) {
+						if (V.arcologies[0].FSSubjugationistRace !== key || V.arcologies[0].FSSubjugationist === "unset") {
+							links.push(App.UI.DOM.link(race, () => {
+								V.corp.SpecRaces = corpBlacklistRace(key, 1);
+								V.corp.SpecToken -= 1;
 								V.corp.SpecTimer = 1;
+								refresh();
+							}));
+						}
+					}
+					addDiv(el, "Slaves who are not ", App.UI.DOM.generateLinksStrip(links), "— ", App.UI.DOM.makeElement("span", "additional races can be excluded. 4 races per token.", "note"));
+
+					if (V.corp.SpecToken >= 3) {
+						const links = [];
+						for (const [key, race] of App.Data.misc.filterRacesBase) {
+							if (V.arcologies[0].FSSupremacistRace !== key || V.arcologies[0].FSSupremacist === "unset") {
+								links.push(App.UI.DOM.link(race, () => {
+									V.corp.SpecRaces = corpBlacklistRace(key, 0);
+									V.corp.SpecToken -= 3;
+									V.corp.SpecTimer = 2;
+									refresh();
+								}));
 							}
-							App.UI.reload();
-						},
-					)
-				);
+						}
+						addDiv(el, "Only slaves who are ", App.UI.DOM.generateLinksStrip(links));
+					} else {
+						addDiv(el, "Only slaves of a particular race requires 3 tokens.");
+					}
+				}
+
+				if ((!jsDef(V.corp.SpecNationality)) && V.corp.DivExtra > 0 && (V.arcologies[0].FSEdoRevivalist !== "unset" || V.arcologies[0].FSChineseRevivalist !== "unset")) {
+					if (V.arcologies[0].FSEdoRevivalist !== "unset") {
+						addDiv(el, `Since you are pursuing Edo Revivalism, slaves who are `, App.UI.DOM.link("Japanese", () => {
+							V.corp.SpecNationality = "Japanese";
+							V.corp.SpecToken -= 1;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+					}
+					if (V.arcologies[0].FSChineseRevivalist !== "unset") {
+						addDiv(el, `Since you are pursuing Chinese Revivalism, slaves who are `, App.UI.DOM.link("Chinese", () => {
+							V.corp.SpecNationality = "Chinese";
+							V.corp.SpecToken -= 1;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+					}
+				}
+				if (V.seeDicks !== 0 && !jsDef(V.corp.SpecGender) && (V.corp.DivExtra > 0 || V.corp.DivLegal > 0)) {
+					// This used to be V.captureUpgradeGender, it is a general acquisition specialization
+					const links = [];
+					links.push(App.UI.DOM.link("Pussies", () => {
+						V.corp.SpecGender = 1;
+						V.corp.SpecToken -= 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+					links.push(App.UI.DOM.link("Dicks", () => {
+						V.corp.SpecGender = 2;
+						V.corp.SpecToken -= 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+					addDiv(el, "Train only slaves with ", App.UI.DOM.generateLinksStrip(links));
+				}
+				if (!jsDef(V.corp.SpecHeight) && (V.corp.DivExtra > 0 || V.corp.DivLegal > 0)) {
+					// This is a general acquisition specialization
+					const links = [];
+					links.push(App.UI.DOM.link("Short", () => {
+						V.corp.SpecHeight = 2;
+						V.corp.SpecToken -= 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+					links.push(App.UI.DOM.link("Tall", () => {
+						V.corp.SpecHeight = 4;
+						V.corp.SpecToken -= 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+					addDiv(el, "Slaves that are ", App.UI.DOM.generateLinksStrip(links), "- ", App.UI.DOM.makeElement("span", "Further specializations possible", "note"));
+				}
+				if (!jsDef(V.corp.SpecVirgin) && (V.corp.DivExtra > 0 || V.corp.DivLegal > 0)) {
+					// This is a general acquisition specialization
+					addDiv(el, "Slaves that are ", App.UI.DOM.link("Virgins", () => {
+						V.corp.SpecVirgin = 1;
+						V.corp.SpecToken -= 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+				}
+				if (!jsDef(V.corp.SpecIntelligence) && V.corp.DivLegal > 0) {
+					// This used to be V.entrapmentUpgradeIntelligence, it is a legal enslavement specialization
+					const links = [];
+					links.push(App.UI.DOM.link("Stupid", () => {
+						V.corp.SpecIntelligence = 1;
+						V.corp.SpecToken -= 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+					links.push(App.UI.DOM.link("Intelligent", () => {
+						V.corp.SpecIntelligence = 3;
+						V.corp.SpecToken -= 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+					addDiv(el, "Slaves who are ", App.UI.DOM.generateLinksStrip(links), "- ", App.UI.DOM.makeElement("span", "Further specializations possible", "note"));
+				}
+				if (!jsDef(V.corp.SpecAge) && V.corp.DivExtra > 0) {
+					// This used to be V.captureUpgradeAge, it is the extralegal enslavement specialization
+					const links = [];
+					links.push(App.UI.DOM.link("Younger", () => {
+						V.corp.SpecAge = 1;
+						V.corp.SpecToken -= 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+					links.push(App.UI.DOM.link("Older", () => {
+						V.corp.SpecAge = 3;
+						V.corp.SpecToken -= 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+					addDiv(el, "Slaves who are ", App.UI.DOM.generateLinksStrip(links));
+				}
+				if (!jsDef(V.corp.SpecWeight) && (V.corp.DivBreak > 0 || V.corp.DivSurgery > 0 || V.corp.DivTrain > 0)) {
+					// This used to be V.generalUpgradeWeight, it is a general improvement specialization
+					const links = [];
+					links.push(App.UI.DOM.link("Thin Slaves", () => {
+						V.corp.SpecWeight = 2;
+						V.corp.SpecToken -= 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+					links.push(App.UI.DOM.link("Fat nor Thin Slaves", () => {
+						V.corp.SpecWeight = 3;
+						V.corp.SpecToken -= 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+					links.push(App.UI.DOM.link("Fat Slaves", () => {
+						V.corp.SpecWeight = 5;
+						V.corp.SpecToken -= 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+					addDiv(el, "Managing slaves' diets to achieve ", App.UI.DOM.generateLinksStrip(links), " -- ", App.UI.DOM.makeElement("span", "Further specializations possible", "note"));
+				}
+				if (!jsDef(V.corp.SpecDevotion) && (V.corp.DivBreak > 0 || V.corp.DivSurgery > 0 || V.corp.DivTrain > 0)) {
+					// This used to be V.entrapmentUpgradeDevotionOne/Two, it is a general improvement specialization
+					const links = [];
+					links.push(App.UI.DOM.link("Reluctant", () => {
+						V.corp.SpecDevotion = 2;
+						V.corp.SpecToken -= 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+					links.push(App.UI.DOM.link("Obedient", () => {
+						V.corp.SpecDevotion = 4;
+						V.corp.SpecToken -= 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+					addDiv(el, "Slaves who are ", App.UI.DOM.generateLinksStrip(links), " -- ", App.UI.DOM.makeElement("span", "Further specializations possible", "note"));
+				}
+				if (!jsDef(V.corp.SpecAccent) && (V.corp.DivBreak > 0 || V.corp.DivSurgery > 0 || V.corp.DivTrain > 0)) {
+					// This used to be V.trainingUpgradeAccent, it is a general improvement specialization
+					const links = [];
+					links.push(App.UI.DOM.link("Speak the Language", () => {
+						V.corp.SpecAccent = 1;
+						V.corp.SpecToken -= 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+					links.push(App.UI.DOM.link("Speak without Accent", () => {
+						V.corp.SpecAccent = 2;
+						V.corp.SpecToken -= 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+					addDiv(el, "Slaves are taught to ", App.UI.DOM.generateLinksStrip(links));
+				}
+				if (!jsDef(V.corp.SpecHormones) && (V.corp.DivBreak > 0 || V.corp.DivSurgery > 0 || V.corp.DivTrain > 0)) {
+					// This used to be V.drugUpgradeHormones, it is a general improvement specialization
+					const links = [];
+					links.push(App.UI.DOM.link("Feminize", () => {
+						V.corp.SpecHormones = 1;
+						V.corp.SpecToken -= 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+					links.push(App.UI.DOM.link("Masculinize", () => {
+						V.corp.SpecHormones = 2;
+						V.corp.SpecToken -= 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+					addDiv(el, "Slaves are given hormones to ", App.UI.DOM.generateLinksStrip(links));
+				}
+				if (!jsDef(V.corp.SpecInjection) && (V.corp.DivBreak > 0 || V.corp.DivSurgery > 0 || V.corp.DivTrain > 0)) {
+					// This used to be V.drugUpgradeInjectionOne, it is a general improvement specialization
+					const links = [];
+					links.push(App.UI.DOM.link("Petite", () => {
+						V.corp.SpecInjection = 1;
+						V.corp.SpecToken -= 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+					links.push(App.UI.DOM.link("Tasteful", () => {
+						V.corp.SpecInjection = 2;
+						V.corp.SpecToken -= 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+					links.push(App.UI.DOM.link("Huge", () => {
+						V.corp.SpecInjection = 3;
+						V.corp.SpecToken -= 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+					addDiv(el, "Slave assets are made to be ", App.UI.DOM.generateLinksStrip(links), " -- ", App.UI.DOM.makeElement("span", "Further specializations possible", "note"));
+				}
+				if (!jsDef(V.corp.SpecCosmetics) && (V.corp.DivBreak > 0 || V.corp.DivSurgery > 0 || V.corp.DivTrain > 0)) {
+					// This used to be V.surgicalUpgradeCosmetics, it is a general improvement specialization
+					const links = [];
+					links.push(App.UI.DOM.link("Applied", () => {
+						V.corp.SpecCosmetics = 1;
+						V.corp.SpecToken -= 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+					links.push(App.UI.DOM.link("Not Applied", () => {
+						V.corp.SpecCosmetics = 0;
+						V.corp.SpecTimer = 2;
+					}));
+					addDiv(el, "Straightforward cosmetic procedures are ", App.UI.DOM.generateLinksStrip(links));
+				}
+				if (!jsDef(V.corp.SpecEducation) && V.corp.DivTrain > 0) {
+					// This used to be V.trainingUpgradeEducation, it is the training specialization
+					const links = [];
+					links.push(App.UI.DOM.link("No Education", () => {
+						V.corp.SpecEducation = 0;
+						V.corp.SpecToken -= 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+					links.push(App.UI.DOM.link("Basic Education", () => {
+						V.corp.SpecEducation = 1;
+						V.corp.SpecToken -= 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+					addDiv(el, "Slaves are given ", App.UI.DOM.generateLinksStrip(links), " -- ", App.UI.DOM.makeElement("span", "Further specializations possible", "note"));
+				}
+				if (!jsDef(V.corp.SpecImplants) && V.corp.DivSurgery > 0) {
+					// This used to be V.surgicalUpgradeImplants, it is the surgery specialization
+					const links = [];
+					links.push(App.UI.DOM.link("Applied", () => {
+						V.corp.SpecImplants = 1;
+						V.corp.SpecToken -= 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+					links.push(App.UI.DOM.link("Not Applied", () => {
+						V.corp.SpecImplants = 0;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+					addDiv(el, "Slave implants are ", App.UI.DOM.generateLinksStrip(links), " -- ", App.UI.DOM.makeElement("span", "Further specializations possible", "note"));
+				}
+				if (!jsDef(V.corp.SpecGenitalia) && V.corp.DivSurgeryDev > 100) {
+					// This used to be V.surgicalUpgradeGenitalia, it is the surgery specialization
+					const links = [];
+					links.push(App.UI.DOM.link("Add Pussy", () => {
+						V.corp.SpecPussy = 1;
+						V.corp.SpecGenitalia = 1;
+						V.corp.SpecToken -= 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+					links.push(App.UI.DOM.link("Remove Pussy", () => {
+						V.corp.SpecPussy = -1;
+						V.corp.SpecGenitalia = 1;
+						V.corp.SpecToken -= 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+					links.push(App.UI.DOM.link("Add Dick", () => {
+						V.corp.SpecDick = 1;
+						V.corp.SpecGenitalia = 1;
+						V.corp.SpecToken -= 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+					links.push(App.UI.DOM.link("Remove Dick", () => {
+						V.corp.SpecDick = -1;
+						V.corp.SpecGenitalia = 1;
+						V.corp.SpecToken -= 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+					links.push(App.UI.DOM.link("Add Balls", () => {
+						V.corp.SpecBalls = 1;
+						V.corp.SpecGenitalia = 1;
+						V.corp.SpecToken -= 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+					links.push(App.UI.DOM.link("Remove Balls", () => {
+						V.corp.SpecBalls = -1;
+						V.corp.SpecGenitalia = 1;
+						V.corp.SpecToken -= 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+					addDiv(el, "Slaves get their genitalia reconfigured ", App.UI.DOM.generateLinksStrip(links), " -- ", App.UI.DOM.makeElement("span", "Further specializations possible", "note"));
+				}
+				if (!jsDef(V.corp.SpecTrust) && V.corp.DivBreak > 0) {
+					// This used to be V.generalUpgradeBreaking, it is the slave breaking specific specialization
+					const links = [];
+					links.push(App.UI.DOM.link("Brutality", () => {
+						V.corp.SpecTrust = 2;
+						V.corp.SpecToken -= 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+					links.push(App.UI.DOM.link("Care", () => {
+						V.corp.SpecTrust = 4;
+						V.corp.SpecToken -= 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+					addDiv(el, "Breaking slaves with ", App.UI.DOM.generateLinksStrip(links), " -- ", App.UI.DOM.makeElement("span", "Further specializations possible", "note"));
+				}
+				if (!jsDef(V.corp.SpecAmputee) && V.corp.DivArcade > 0 && V.corp.DivSurgeryDev > 100) {
+					// This is the arcade specialization
+					addDiv(el, "Slave limbs are categorically ", App.UI.DOM.link("Removed", () => {
+						V.corp.SpecAmputee = 1;
+						V.corp.SpecToken -= 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+				}
+				if (!jsDef(V.corp.SpecMuscle) && V.corp.DivMenial > 0) {
+					// This used to be V.generalUpgradeMuscle, it is the Menial division's specialization
+					const links = [];
+					if (V.arcologies[0].FSPhysicalIdealist === "unset") {
+						links.push(App.UI.DOM.link("Weak", () => {
+							V.corp.SpecMuscle = 2;
+							V.corp.SpecToken -= 1;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+					}
+					links.push(App.UI.DOM.link("Soft", () => {
+						V.corp.SpecMuscle = 3;
+						V.corp.SpecToken -= 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+					links.push(App.UI.DOM.link("Toned", () => {
+						V.corp.SpecMuscle = 4;
+						V.corp.SpecToken -= 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+					addDiv(el, "Slaves with muscles that are ", App.UI.DOM.generateLinksStrip(links), " -- ", App.UI.DOM.makeElement("span", "Further specializations possible", "note"));
+				}
+				if (!jsDef(V.corp.SpecMilk) && V.corp.DivDairy > 0) {
+					// This is the dairy specialization
+					const links = [];
+					links.push(App.UI.DOM.link("Naturally", () => {
+						V.corp.SpecMilk = 1;
+						V.corp.SpecToken -= 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+					links.push(App.UI.DOM.link("Through Implant", () => {
+						V.corp.SpecMilk = 2;
+						V.corp.SpecToken -= 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+					addDiv(el, "Slaves are made to be lactating ", App.UI.DOM.generateLinksStrip(links));
+				}
+				if (!jsDef(V.corp.SpecSexEd) && V.corp.DivWhore > 0) {
+					// This used to be V.trainingUpgradeSexEd, it is the escort division specialization
+					const links = [];
+					links.push(App.UI.DOM.link("Clueless", () => {
+						V.corp.SpecSexEd = 0;
+						V.corp.SpecToken -= 0;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+					links.push(App.UI.DOM.link("Competent", () => {
+						V.corp.SpecSexEd = 1;
+						V.corp.SpecToken -= 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+					addDiv(el, "Slaves are sexually ", App.UI.DOM.generateLinksStrip(links), " -- ", App.UI.DOM.makeElement("span", "Further specializations possible", "note"));
+				}
 			}
+		} else {
+			const div = App.UI.DOM.makeElement("div", "Your corporation cannot pick a new specialization at this time.");
+			if (V.cheatMode === 1) {
+				div.append(" ", App.UI.DOM.link("Unlock specialization", () => {
+					V.corp.Spec++;
+					V.corp.SpecToken++;
+					V.corp.SpecTimer = 0;
+					refresh();
+				}));
+			}
+			el.append(div);
 		}
-		App.Events.addNode(el, r, "div");
+
+		if (V.corp.Spec > V.corp.SpecToken) {
+			const p = document.createElement("p");
+			// Modifying specializations
+			p.append(`You have chosen the following specializations:`);
+			App.UI.DOM.appendNewElement("div", p, `You can choose to specialize further with additional tokens, specialize less, end the specialization or sometimes tweak them for free.`, "note");
+
+			if (V.corp.SpecRaces.length === 12) {
+				V.corp.SpecRaces = [];
+			}
+			if (V.corp.SpecRaces.length > 0) {
+				p.append(corpRaces());
+			}
+			if (V.corp.SpecNationality) {
+				const div = App.UI.DOM.makeElement("div", `The corporation trains slaves who are ${V.corp.SpecNationality}.`);
+				if (V.corp.SpecTimer === 0) {
+					div.append(" ", App.UI.DOM.link("No Focus", () => {
+						delete V.corp.SpecNationality;
+						V.corp.SpecToken += 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+				}
+				p.append(div);
+			}
+
+			if (V.corp.SpecGender !== undefined) {
+				const r = [];
+				r.push("The corporation trains slaves with");
+				if (V.corp.SpecGender === 1) {
+					r.push("pussies.");
+				} else if (V.corp.SpecGender === 2) {
+					r.push("dicks.");
+				}
+				if (V.corp.SpecTimer === 0) {
+					r.push(App.UI.DOM.link("No Focus", () => {
+						delete V.corp.SpecGender;
+						V.corp.SpecToken += 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+				}
+				App.Events.addNode(p, r, "div");
+			}
+
+			if (V.corp.SpecHeight !== undefined) {
+				const r = [];
+				const links = [];
+				r.push("The corporation is targeting");
+				let tokenGain = 1;
+				if (V.corp.SpecHeight === 1) {
+					r.push("tiny");
+					if (V.corp.SpecTimer === 0) {
+						links.push(App.UI.DOM.link("Short Slaves", () => {
+							V.corp.SpecHeight = 2;
+							V.corp.SpecToken += 1;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+						tokenGain = 2;
+					}
+				} else if (V.corp.SpecHeight === 2) {
+					r.push("short");
+					if (V.corp.SpecTimer === 0) {
+						if (V.corp.SpecToken > 0 && ((V.corp.DivExtraDev || 0) + (V.corp.DivLegalDev || 0)) > 50) {
+							links.push(App.UI.DOM.link("Tiny Slaves", () => {
+								V.corp.SpecHeight = 1;
+								V.corp.SpecToken -= 1;
+								V.corp.SpecTimer = 2;
+								refresh();
+							}));
+						}
+					}
+				} else if (V.corp.SpecHeight === 4) {
+					r.push("tall");
+					if (V.corp.SpecTimer === 0) {
+						if (V.corp.SpecToken > 0 && ((V.corp.DivExtraDev || 0) + (V.corp.DivLegalDev || 0)) > 50) {
+							links.push(App.UI.DOM.link("Giant Slaves", () => {
+								V.corp.SpecHeight = 5;
+								V.corp.SpecToken -= 1;
+								V.corp.SpecTimer = 2;
+								refresh();
+							}));
+						}
+					}
+				} else if (V.corp.SpecHeight === 5) {
+					r.push("giant");
+					if (V.corp.SpecTimer === 0) {
+						links.push(App.UI.DOM.link("Tall Slaves", () => {
+							V.corp.SpecHeight = 4;
+							V.corp.SpecToken += 1;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+					}
+					tokenGain = 2;
+				}
+				r.push("slaves.");
+				if (V.corp.SpecTimer === 0) {
+					links.push(App.UI.DOM.link("No Focus", () => {
+						delete V.corp.SpecHeight;
+						V.corp.SpecToken += tokenGain;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+				}
+				r.push(App.UI.DOM.generateLinksStrip(links));
+				App.Events.addNode(p, r, "div");
+			}
+
+			if (V.corp.SpecVirgin === 1) {
+				const div = App.UI.DOM.makeElement("div", `The corporation is ensuring slaves remain virgins.`);
+				if (V.corp.SpecTimer === 0) {
+					div.append(" ", App.UI.DOM.link("No Focus", () => {
+						delete V.corp.SpecVirgin;
+						V.corp.SpecToken += 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+				}
+				p.append(div);
+			}
+
+			if (V.corp.SpecTrust !== undefined) {
+				const r = [];
+				const links = [];
+				r.push("The corporation is breaking slaves with");
+				let tokenGain = 1;
+				if (V.corp.SpecTrust === 1) {
+					r.push("extreme brutality.");
+					if (V.corp.SpecTimer === 0) {
+						links.push(App.UI.DOM.link("Apply Less Brutality", () => {
+							V.corp.SpecTrust = 2;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+					}
+				} else if (V.corp.SpecTrust === 2) {
+					r.push("brutality.");
+					if (V.corp.SpecTimer === 0) {
+						if (V.corp.SpecToken > 0 && V.arcologies[0].FSDegradationist > 20 && V.corp.DivBreakDev > 50) {
+							links.push(App.UI.DOM.link("Apply Extreme Brutality", () => {
+								V.corp.SpecTrust = 1;
+								// Don't think this deserves the added cost of a token, unlike the 'utmost care' one.
+								V.corp.SpecTimer = 2;
+								refresh();
+							}));
+						}
+					}
+				} else if (V.corp.SpecTrust === 4) {
+					r.push("care.");
+					if (V.corp.SpecTimer === 0) {
+						if (V.corp.SpecToken > 0 && V.arcologies[0].FSPaternalist > 20 && V.corp.DivBreakDev > 50) {
+							links.push(App.UI.DOM.link("Use the Utmost Care", () => {
+								V.corp.SpecTrust = 5;
+								V.corp.SpecToken -= 1;
+								V.corp.SpecTimer = 2;
+								refresh();
+							}));
+						}
+					}
+				} else if (V.corp.SpecTrust === 5) {
+					r.push("the utmost care.");
+					if (V.corp.SpecTimer === 0) {
+						links.push(App.UI.DOM.link("Use Less Care", () => {
+							V.corp.SpecTrust = 4;
+							V.corp.SpecToken += 1;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+						tokenGain = 2;
+					}
+				}
+				if (V.corp.SpecTimer === 0) {
+					links.push(App.UI.DOM.link("No Focus", () => {
+						delete V.corp.SpecTrust;
+						V.corp.SpecToken += tokenGain;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+				}
+				r.push(App.UI.DOM.generateLinksStrip(links));
+				App.Events.addNode(p, r, "div");
+			}
+
+			if (V.corp.SpecWeight !== undefined) {
+				const r = [];
+				const links = [];
+				r.push("The corporation");
+				if (V.corp.SpecWeight === 1) {
+					r.push("makes slaves follow incredibly strict diets.");
+					if (V.corp.SpecTimer === 0) {
+						links.push(App.UI.DOM.link("Apply Looser Diet", () => {
+							V.corp.SpecWeight = 2;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+					}
+				} else if (V.corp.SpecWeight === 2) {
+					r.push("makes slaves diet.");
+					if (V.corp.SpecTimer === 0) {
+						if (V.corp.SpecToken > 0 && V.arcologies[0].FSHedonisticDecadence === "unset") {
+							links.push(App.UI.DOM.link("Apply Strict Diet", () => {
+								V.corp.SpecWeight = 1;
+								V.corp.SpecTimer = 2;
+								refresh();
+							}));
+						}
+						links.push(App.UI.DOM.link("Aim for Healthy Weight", () => {
+							V.corp.SpecWeight = 3;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+					}
+				} else if (V.corp.SpecWeight === 3) {
+					r.push("is aiming for slaves with a healthy weight.");
+					if (V.corp.SpecTimer === 0) {
+						links.push(App.UI.DOM.link("Apply Diet", () => {
+							V.corp.SpecWeight = 2;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+						// TODO: Perhaps 'plump up' is not the right phrase
+						links.push(App.UI.DOM.link("Plump up Slaves", () => {
+							V.corp.SpecWeight = 5;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+					}
+				} else if (V.corp.SpecWeight === 5) {
+					r.push("aims for plump slaves.");
+					if (V.corp.SpecTimer === 0) {
+						if (V.corp.SpecToken > 0 && V.arcologies[0].FSPhysicalIdealist === "unset") {
+							links.push(App.UI.DOM.link("Fatten Slaves", () => {
+								V.corp.SpecWeight = 6;
+								V.corp.SpecTimer = 2;
+								refresh();
+							}));
+						}
+						links.push(App.UI.DOM.link("Aim for Healthy Weight", () => {
+							V.corp.SpecWeight = 3;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+					}
+				} else if (V.corp.SpecWeight === 6) {
+					r.push("aims for fat slaves.");
+					if (V.corp.SpecTimer === 0) {
+						links.push(App.UI.DOM.link("Settle for Plump", () => {
+							V.corp.SpecWeight = 5;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+					}
+				}
+				if (V.corp.SpecTimer === 0) {
+					links.push(App.UI.DOM.link("No Focus", () => {
+						delete V.corp.SpecWeight;
+						V.corp.SpecToken += 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+				}
+				r.push(App.UI.DOM.generateLinksStrip(links));
+				App.Events.addNode(p, r, "div");
+			}
+
+			if (V.corp.SpecMuscle !== undefined) {
+				const r = [];
+				r.push("The corporation");
+				const links = [];
+				let tokenGain = 1;
+				if (V.corp.SpecMuscle === 1) {
+					r.push("aims to have frail slaves.");
+					if (V.corp.SpecTimer === 0) {
+						links.push(App.UI.DOM.link("Aim for Weak", () => {
+							V.corp.SpecMuscle = 2;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+					}
+				} else if (V.corp.SpecMuscle === 2) {
+					// Don't think this deserves the added cost of a token, unlike slaves getting ripped
+					r.push("aims to have weak slaves.");
+					if (V.corp.SpecTimer === 0) {
+						if (V.arcologies[0].FSPhysicalIdealist === "unset") {
+							links.push(App.UI.DOM.link("Aim for Frail", () => {
+								V.corp.SpecMuscle = 1;
+								V.corp.SpecTimer = 2;
+								refresh();
+							}));
+						}
+					}
+				} else if (V.corp.SpecMuscle === 3) {
+					r.push("is aiming for slaves with soft muscles.");
+					if (V.corp.SpecTimer === 0) {
+						if (V.arcologies[0].FSPhysicalIdealist === "unset") {
+							links.push(App.UI.DOM.link("Aim for Weak", () => {
+								V.corp.SpecMuscle = 2;
+								V.corp.SpecTimer = 2;
+								refresh();
+							}));
+						}
+						links.push(App.UI.DOM.link("Aim for Toned", () => {
+							V.corp.SpecMuscle = 4;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+					}
+				} else if (V.corp.SpecMuscle === 4) {
+					r.push("aims for toned muscles.");
+					if (V.corp.SpecTimer === 0) {
+						if (V.corp.SpecToken > 0
+							&& ((V.corp.DivBreakDev || 0) + (V.corp.DivSurgeryDev || 0) + (V.corp.DivTrainDev || 0) > 100)) {
+							links.push(App.UI.DOM.link("Aim for Ripped", () => {
+								V.corp.SpecMuscle = 5;
+								V.corp.SpecToken -= 1;
+								V.corp.SpecTimer = 2;
+								refresh();
+							}));
+						}
+					}
+				} else if (V.corp.SpecMuscle === 5) {
+					r.push("aims for ripped slaves.");
+					if (V.corp.SpecTimer === 0) {
+						links.push(App.UI.DOM.link("Aim for Toned", () => {
+							V.corp.SpecMuscle = 4;
+							V.corp.SpecToken += 1;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+						tokenGain = 2;
+					}
+				}
+				if (V.corp.SpecTimer === 0) {
+					if (V.corp.SpecMuscle === 4 || V.corp.SpecMuscle === 2) {
+						links.push(App.UI.DOM.link("Aim for Soft", () => {
+							V.corp.SpecMuscle = 3;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+					}
+					links.push(App.UI.DOM.link("No Focus", () => {
+						delete V.corp.SpecWeight;
+						V.corp.SpecToken += tokenGain;
+						V.corp.SpecTimer = 2;
+					}));
+				}
+				r.push(App.UI.DOM.generateLinksStrip(links));
+				App.Events.addNode(p, r, "div");
+			}
+
+			if (V.corp.SpecDevotion !== undefined) {
+				const r = [];
+				const links = [];
+				let tokenGain = 1;
+				if (V.corp.SpecDevotion === 1) {
+					r.push(`The corporation keeps slaves extremely defiant.`);
+					if (V.corp.SpecTimer === 0) {
+						links.push(App.UI.DOM.link("Less Defiant", () => {
+							V.corp.SpecDevotion = 2;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+					}
+				} else if (V.corp.SpecDevotion === 2) {
+					r.push(`The corporation keeps slaves reluctant.`);
+					if (V.corp.SpecTimer === 0) {
+						links.push(App.UI.DOM.link("Make them Defiant", () => {
+							V.corp.SpecDevotion = 1;
+							// Don't think this deserves the added cost of a token, unlike the 'devoted' one
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+					}
+				} else if (V.corp.SpecDevotion === 4) {
+					r.push(`The corporation is fostering obedience.`);
+					if (V.corp.SpecTimer === 0) {
+						if (V.corp.SpecToken > 0 && V.corp.DivTrainDev > 100) {
+							links.push(App.UI.DOM.link("Foster Devotion", () => {
+								V.corp.SpecDevotion = 5;
+								V.corp.SpecToken += 1;
+								V.corp.SpecTimer = 2;
+								refresh();
+							}));
+						}
+					}
+				} else if (V.corp.SpecDevotion === 5) {
+					r.push(`The corporation is fostering devotion.`);
+					if (V.corp.SpecTimer === 0) {
+						links.push(App.UI.DOM.link("Settle for Obedience", () => {
+							V.corp.SpecDevotion = 4;
+							V.corp.SpecToken += 1;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+					}
+				}
+				if (V.corp.SpecTimer === 0) {
+					links.push(App.UI.DOM.link("No Focus", () => {
+						delete V.corp.SpecDevotion;
+						V.corp.SpecToken += tokenGain;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+				}
+				r.push(App.UI.DOM.generateLinksStrip(links));
+				App.Events.addNode(p, r, "div");
+			}
+
+			if (V.corp.SpecIntelligence !== undefined) {
+				let div = document.createElement("div");
+				if (V.corp.SpecIntelligence === 1) {
+					div.append(`The corporation keeps stupid slaves.`);
+				} else if (V.corp.SpecIntelligence === 3) {
+					div.append(`The corporation keeps intelligent slaves.`);
+				}
+				if (V.corp.SpecTimer === 0) {
+					div.append(" ", App.UI.DOM.link("No Focus", () => {
+						delete V.corp.SpecIntelligence;
+						V.corp.SpecToken += 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+				}
+				p.append(div);
+			}
+
+			if (V.corp.SpecAge !== undefined) {
+				let div = document.createElement("div");
+				if (V.corp.SpecAge === 1) {
+					div.append(`The corporation focuses on young slaves.`);
+				} else if (V.corp.SpecAge === 3) {
+					div.append(`The corporation focuses on older slaves.`);
+				}
+				if (V.corp.SpecTimer === 0) {
+					div.append(" ", App.UI.DOM.link("No Focus", () => {
+						delete V.corp.SpecAge;
+						V.corp.SpecToken += 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+				}
+				p.append(div);
+			}
+
+			if (V.corp.SpecAccent !== undefined) {
+				const r = [];
+				const links = [];
+				if (V.corp.SpecAccent === 1) {
+					r.push(`The corporation teaches slaves to speak the lingua franca.`);
+					if (V.corp.SpecTimer === 0) {
+						links.push(App.UI.DOM.link("Eliminate Accents", () => {
+							V.corp.SpecAccent = 2;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+					}
+				} else if (V.corp.SpecAccent === 2) {
+					r.push(`The corporation teaches slaves to speak the lingua franca without an accent.`);
+					if (V.corp.SpecTimer === 0) {
+						links.push(App.UI.DOM.link("Just Teach Language", () => {
+							V.corp.SpecAccent = 1;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+					}
+				}
+				if (V.corp.SpecTimer === 0) {
+					links.push(App.UI.DOM.link("No Focus", () => {
+						delete V.corp.SpecAccent;
+						V.corp.SpecToken += 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+				}
+				r.push(App.UI.DOM.generateLinksStrip(links));
+				App.Events.addNode(p, r, "div");
+			}
+
+			if (V.corp.SpecEducation !== undefined) {
+				const r = [];
+				const links = [];
+				let tokenGain = 1;
+				if (V.corp.SpecEducation === 0) {
+					r.push(`The corporation focuses on uneducated slaves.`);
+					if (V.corp.SpecTimer === 0) {
+						if (V.corp.SpecToken > 0) {
+							links.push(App.UI.DOM.link("Basic Education", () => {
+								V.corp.SpecEducation = 1;
+								V.corp.SpecTimer = 2;
+								refresh();
+							}));
+						}
+					}
+				} else if (V.corp.SpecEducation === 1) {
+					r.push(`The corporation makes sure all slaves have a basic education.`);
+					if (V.corp.SpecTimer === 0) {
+						if (V.corp.DivTrainDev > 200 && V.corp.SpecToken > 0) {
+							links.push(App.UI.DOM.link("Advanced Education", () => {
+								V.corp.SpecEducation = 2;
+								V.corp.SpecToken -= 1;
+								V.corp.SpecTimer = 2;
+								refresh();
+							}));
+						}
+						links.push(App.UI.DOM.link("No Education", () => {
+							V.corp.SpecEducation = 1;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+					}
+				} else if (V.corp.SpecEducation === 2) {
+					r.push(`The corporation makes sure all slaves have an advanced education.`);
+					if (V.corp.SpecTimer === 0) {
+						links.push(App.UI.DOM.link("Basic Education", () => {
+							V.corp.SpecEducation = 1;
+							V.corp.SpecToken += 1;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+						tokenGain = 2;
+					}
+				}
+				if (V.corp.SpecTimer === 0) {
+					links.push(App.UI.DOM.link("No Focus", () => {
+						delete V.corp.SpecEducation;
+						V.corp.SpecToken += tokenGain;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+				}
+				r.push(App.UI.DOM.generateLinksStrip(links));
+				App.Events.addNode(p, r, "div");
+			}
+
+			if (V.corp.SpecCosmetics !== undefined) {
+				const r = [];
+				const links = [];
+				let tokenGain = 0;
+				if (V.corp.SpecCosmetics === 1) {
+					r.push(`The corporation applies straightforward cosmetic procedures.`);
+					tokenGain = 1;
+				} else if (V.corp.SpecCosmetics === 0) {
+					r.push(`The corporation doesn't apply cosmetic procedures.`);
+					if (V.corp.SpecTimer === 0) {
+						if (V.corp.SpecToken > 0) {
+							links.push(App.UI.DOM.link("Applied", () => {
+								V.corp.SpecCosmetics = 1;
+								V.corp.SpecToken -= 1;
+								V.corp.SpecTimer = 2;
+								refresh();
+							}));
+						}
+					}
+				}
+				if (V.corp.SpecTimer === 0) {
+					links.push(App.UI.DOM.link("No Focus", () => {
+						delete V.corp.SpecCosmetics;
+						V.corp.SpecToken += tokenGain;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+				}
+				r.push(App.UI.DOM.generateLinksStrip(links));
+				App.Events.addNode(p, r, "div");
+			}
+
+			if (V.corp.SpecImplants !== undefined) {
+				const r = [];
+				const links = [];
+				let tokenGain = 1;
+				if (V.corp.SpecImplants === 1) {
+					r.push(`The corporation applies tasteful implants to all slaves.`);
+					if (V.corp.SpecTimer === 0) {
+						if (V.corp.DivSurgeryDev > 100 && V.corp.SpecToken > 0) {
+							links.push(App.UI.DOM.link("Absurd Implants", () => {
+								V.corp.SpecImplants = 2;
+								V.corp.SpecToken -= 1;
+								V.corp.SpecTimer = 2;
+								refresh();
+							}));
+						}
+					}
+				} else if (V.corp.SpecImplants === 2) {
+					r.push(`The corporation applies absurd implants to all slaves.`);
+					if (V.corp.SpecTimer === 0) {
+						links.push(App.UI.DOM.link("Tasteful Implants", () => {
+							V.corp.SpecImplants = 1;
+							V.corp.SpecToken += 1;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+						tokenGain = 2;
+					}
+				} else if (V.corp.SpecImplants === 0) {
+					r.push(`The corporation keeps their slaves entirely implant free.`);
+					if (V.corp.SpecTimer === 0) {
+						if (V.corp.SpecToken > 0) {
+							links.push(App.UI.DOM.link("Tasteful Implants", () => {
+								V.corp.SpecImplants = 1;
+								V.corp.SpecToken -= 1;
+								V.corp.SpecTimer = 2;
+								refresh();
+							}));
+						}
+						tokenGain = 0;
+					}
+				}
+				if (V.corp.SpecTimer === 0) {
+					links.push(App.UI.DOM.link("No Focus", () => {
+						delete V.corp.SpecImplants;
+						V.corp.SpecToken += tokenGain;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+				}
+				r.push(App.UI.DOM.generateLinksStrip(links));
+				App.Events.addNode(p, r, "div");
+			}
+
+			if (!jsDef(V.corp.SpecPussy) && !jsDef(V.corp.SpecDick) && !jsDef(V.corp.SpecBalls) && V.corp.SpecGenitalia === 1) {
+				delete V.corp.SpecGenitalia;
+				V.corp.SpecToken += 1;
+			}
+			if (V.corp.SpecGenitalia === 1) {
+				if (V.corp.SpecPussy === 1) {
+					const div = App.UI.DOM.makeElement("div", `The corporation adds a pussy to all slaves.`);
+					if (V.corp.SpecTimer === 0) {
+						div.append(" ", App.UI.DOM.link("Stop", () => {
+							delete V.corp.SpecPussy;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+					}
+					p.append(div);
+				} else if (V.corp.SpecPussy === -1) {
+					const div = App.UI.DOM.makeElement("div", `The corporation removes pussies from all slaves.`);
+					if (V.corp.SpecTimer === 0) {
+						div.append(" ", App.UI.DOM.link("Stop", () => {
+							delete V.corp.SpecPussy;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+					}
+					p.append(div);
+				} else {
+					const div = App.UI.DOM.makeElement("div", `The corporation has no plans for pussies.`);
+					if (V.corp.SpecTimer === 0) {
+						const links = [];
+						links.push(App.UI.DOM.link("Add Pussy", () => {
+							V.corp.SpecPussy = 1;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+						links.push(App.UI.DOM.link("Remove Pussy", () => {
+							V.corp.SpecPussy = -1;
+							V.corp.SpecToken -= 1;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+						div.append(" ", App.UI.DOM.generateLinksStrip(links));
+					}
+					p.append(div);
+				}
+				if (V.corp.SpecDick === 1) {
+					const div = App.UI.DOM.makeElement("div", `The corporation adds a dick to all slaves.`);
+					if (V.corp.SpecTimer === 0) {
+						div.append(" ", App.UI.DOM.link("Stop", () => {
+							delete V.corp.SpecDick;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+					}
+					p.append(div);
+				} else if (V.corp.SpecDick === -1) {
+					const div = App.UI.DOM.makeElement("div", `The corporation removes dicks from all slaves.`);
+					if (V.corp.SpecTimer === 0) {
+						div.append(" ", App.UI.DOM.link("Stop", () => {
+							delete V.corp.SpecDick;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+					}
+					p.append(div);
+				} else {
+					const div = App.UI.DOM.makeElement("div", `The corporation has no plans for dicks.`);
+					if (V.corp.SpecTimer === 0) {
+						const links = [];
+						links.push(App.UI.DOM.link("Add Dick", () => {
+							V.corp.SpecDick = 1;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+						links.push(App.UI.DOM.link("Remove Dick", () => {
+							V.corp.SpecDick = -1;
+							V.corp.SpecToken -= 1;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+						div.append(" ", App.UI.DOM.generateLinksStrip(links));
+					}
+					p.append(div);
+				}
+				if (V.corp.SpecBalls === 1) {
+					const div = App.UI.DOM.makeElement("div", `The corporation adds balls to all slaves (penis required).`);
+					if (V.corp.SpecTimer === 0) {
+						div.append(" ", App.UI.DOM.link("Stop", () => {
+							delete V.corp.SpecBalls;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+					}
+					p.append(div);
+				} else if (V.corp.SpecBalls === -1) {
+					const div = App.UI.DOM.makeElement("div", `The corporation removes balls from all slaves.`);
+					if (V.corp.SpecTimer === 0) {
+						div.append(" ", App.UI.DOM.link("Stop", () => {
+							delete V.corp.SpecBalls;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+					}
+					p.append(div);
+				} else {
+					const div = App.UI.DOM.makeElement("div", `The corporation has no plans for balls.`);
+					if (V.corp.SpecTimer === 0) {
+						const links = [];
+						links.push(App.UI.DOM.link("Add Balls", () => {
+							V.corp.SpecBalls = 1;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+						links.push(App.UI.DOM.link("Remove Balls", () => {
+							V.corp.SpecBalls = -1;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+						div.append(" ", App.UI.DOM.generateLinksStrip(links));
+					}
+					p.append(div);
+				}
+			}
+
+			if (V.corp.SpecInjection !== undefined) {
+				const r = [];
+				const links = [];
+				let tokenGain = 1;
+				if (V.corp.SpecInjection === 1) {
+					r.push(`The corporation aims for petite assets.`);
+					if (V.corp.SpecTimer === 0) {
+						links.push(App.UI.DOM.link("Tasteful Size", () => {
+							V.corp.SpecInjection = 2;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+						links.push(App.UI.DOM.link("Huge Size", () => {
+							V.corp.SpecInjection = 3;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+					}
+				} else if (V.corp.SpecInjection === 2) {
+					r.push(`The corporation aims for tasteful assets.`);
+					if (V.corp.SpecTimer === 0) {
+						links.push(App.UI.DOM.link("Small Size", () => {
+							V.corp.SpecInjection = 1;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+						links.push(App.UI.DOM.link("Huge Size", () => {
+							V.corp.SpecInjection = 3;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+					}
+				} else if (V.corp.SpecInjection === 3) {
+					r.push(`The corporation aims for huge assets.`);
+					if (V.corp.SpecTimer === 0) {
+						links.push(App.UI.DOM.link("Small Size", () => {
+							V.corp.SpecInjection = 1;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+						links.push(App.UI.DOM.link("Tasteful Size", () => {
+							V.corp.SpecInjection = 2;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+						if (V.corp.DivSurgeryDev > 100 && V.corp.SpecToken > 0) {
+							links.push(App.UI.DOM.link("Supermassive Size", () => {
+								V.corp.SpecInjection = 4;
+								V.corp.SpecToken -= 1;
+								V.corp.SpecTimer = 2;
+								refresh();
+							}));
+						}
+						if (V.corp.DivDairyDev > 200 && V.corp.SpecToken > 0) {
+							links.push(App.UI.DOM.link("Pastoral Size", () => {
+								V.corp.SpecInjection = 5;
+								V.corp.SpecToken -= 1;
+								V.corp.SpecTimer = 2;
+								refresh();
+							}));
+						}
+					}
+				} else if (V.corp.SpecInjection === 4) {
+					r.push(`The corporation aims for supermassive assets.`);
+					if (V.corp.SpecTimer === 0) {
+						links.push(App.UI.DOM.link("Huge Size", () => {
+							V.corp.SpecInjection = 3;
+							V.corp.SpecToken += 1;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+						if (V.corp.DivDairyDev > 200) {
+							links.push(App.UI.DOM.link("Pastoral Size", () => {
+								V.corp.SpecInjection = 5;
+								V.corp.SpecTimer = 2;
+								refresh();
+							}));
+						}
+						tokenGain = 2;
+					}
+				} else if (V.corp.SpecInjection === 5) {
+					r.push(`The corporation aims for pastoral assets.`);
+					if (V.corp.SpecTimer === 0) {
+						links.push(App.UI.DOM.link("Huge Size", () => {
+							V.corp.SpecInjection = 3;
+							V.corp.SpecToken += 1;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+						if (V.corp.DivSurgeryDev > 50) {
+							links.push(App.UI.DOM.link("Supermassive Size", () => {
+								V.corp.SpecInjection = 4;
+								V.corp.SpecTimer = 2;
+								refresh();
+							}));
+						}
+						tokenGain = 2;
+					}
+				}
+				if (V.corp.SpecTimer === 0) {
+					links.push(App.UI.DOM.link("No Focus", () => {
+						delete V.corp.SpecInjection;
+						V.corp.SpecToken += tokenGain;
+						V.corp.SpecTimer = 2;
+					}));
+				}
+				r.push(App.UI.DOM.generateLinksStrip(links));
+				App.Events.addNode(p, r, "div");
+			}
+
+			if (V.corp.SpecHormones !== undefined) {
+				const r = [];
+				const links = [];
+				if (V.corp.SpecHormones === 1) {
+					r.push(`The corporation feminizes slaves with hormones.`);
+					if (V.corp.SpecTimer === 0) {
+						links.push(App.UI.DOM.link("Masculinize", () => {
+							V.corp.SpecHormones = 2;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+					}
+				} else if (V.corp.SpecHormones === 2) {
+					r.push(`The corporation masculinize slaves with hormones.`);
+					if (V.corp.SpecTimer === 0) {
+						links.push(App.UI.DOM.link("Feminize", () => {
+							V.corp.SpecHormones = 1;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+					}
+				}
+				if (V.corp.SpecTimer === 0) {
+					links.push(App.UI.DOM.link("No Focus", () => {
+						delete V.corp.SpecHormones;
+						V.corp.SpecToken += 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+				}
+				r.push(App.UI.DOM.generateLinksStrip(links));
+				App.Events.addNode(p, r, "div");
+			}
+
+			if (V.corp.SpecAmputee === 1) {
+				const div = App.UI.DOM.makeElement("div", `The corporation removes all limbs from its slaves.`);
+				if (V.corp.SpecTimer === 0) {
+					div.append(" ", App.UI.DOM.link("Stop", () => {
+						delete V.corp.SpecAmputee;
+						V.corp.SpecToken += 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+				}
+				p.append(div);
+			}
+
+			if (V.corp.SpecMilk !== undefined) {
+				const r = [];
+				const links = [];
+				if (V.corp.SpecMilk === 1) {
+					r.push(`The corporation makes sure all slaves are naturally lactating.`);
+					if (V.corp.SpecTimer === 0) {
+						links.push(App.UI.DOM.link("Lactation Implant", () => {
+							V.corp.SpecMilk = 2;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+					}
+				} else if (V.corp.SpecMilk === 2) {
+					r.push(`The corporation equips all slaves with lactation implants.`);
+					if (V.corp.SpecTimer === 0) {
+						links.push(App.UI.DOM.link("Natural Lactation", () => {
+							V.corp.SpecMilk = 1;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+					}
+				}
+				if (V.corp.SpecTimer === 0) {
+					links.push(App.UI.DOM.link("No Focus", () => {
+						delete V.corp.SpecMilk;
+						V.corp.SpecToken += 1;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+				}
+				r.push(App.UI.DOM.generateLinksStrip(links));
+				App.Events.addNode(p, r, "div");
+			}
+
+			if (V.corp.SpecSexEd !== undefined) {
+				const r = [];
+				const links = [];
+				let tokenGain = 1;
+				if (V.corp.SpecSexEd === 1) {
+					r.push(`The corporation familiarizes slaves with sexual service.`);
+					if (V.corp.SpecTimer === 0) {
+						if (V.corp.SpecToken > 0 && V.corp.DivWhoreDev > 200) {
+							links.push(App.UI.DOM.link("Advanced Training", () => {
+								V.corp.SpecSexEd = 2;
+								V.corp.SpecToken -= 1;
+								V.corp.SpecTimer = 2;
+								refresh();
+							}));
+						}
+					}
+				} else if (V.corp.SpecSexEd === 2) {
+					r.push(`The corporation teaches advanced sexual techniques to its slaves.`);
+					if (V.corp.SpecTimer === 0) {
+						links.push(App.UI.DOM.link("Basic Training", () => {
+							V.corp.SpecSexEd = 1;
+							V.corp.SpecToken += 1;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+						tokenGain = 2;
+					}
+				} else if (V.corp.SpecSexEd === 0) {
+					r.push(`The corporation teaches no sexual techniques to its slaves.`);
+					if (V.corp.SpecTimer === 0) {
+						links.push(App.UI.DOM.link("Basic Training", () => {
+							V.corp.SpecSexEd = 1;
+							V.corp.SpecToken -= 1;
+							V.corp.SpecTimer = 2;
+							refresh();
+						}));
+						tokenGain = 0;
+					}
+				}
+				if (V.corp.SpecTimer === 0) {
+					links.push(App.UI.DOM.link("No Focus", () => {
+						delete V.corp.SpecSexEd;
+						V.corp.SpecToken += tokenGain;
+						V.corp.SpecTimer = 2;
+						refresh();
+					}));
+				}
+				r.push(App.UI.DOM.generateLinksStrip(links));
+				App.Events.addNode(p, r, "div");
+			}
+
+			el.append(p);
+		}
+
+		return el;
+	}
+
+	/**
+	 * @returns {HTMLParagraphElement}
+	 */
+	function dissolveLink() {
+		const p = document.createElement("p");
+		p.append(App.UI.DOM.link("Dissolve the corporation", () => {
+			if (Dialog.isOpen()) {
+				Dialog.close();
+			}
+
+			Dialog.setup("Dissolve Corporation");
+			const frag = new DocumentFragment();
+			App.UI.DOM.appendNewElement("p", frag, "Dissolving the corporation will destroy all assets your corporation owns!", "note");
+			App.UI.DOM.appendNewElement("p", frag, "This decision cannot be reverted!", ["warning", "note"]);
+			frag.append(App.UI.DOM.link("Dissolve", () => {
+				cashX(Math.min(corpSharePrice() * V.personalShares / 1000, 1000000), "stocksTraded");
+				App.Corporate.dissolve();
+				refresh();
+				Dialog.close();
+			}));
+			$(Dialog.body()).empty().append(frag);
+			Dialog.open();
+		}));
+		return p;
+	}
+
+	/**
+	 * @returns {DocumentFragment}
+	 */
+	function corpRaces() {
+		const el = new DocumentFragment();
+		App.UI.DOM.appendNewElement("div", el, `The corporation enslaves people of the following race${V.corp.SpecRaces.length === 1 ? `` : `s`}:`);
+		for (const [race, capRace] of App.Data.misc.filterRaces) {
+			const r = [];
+			if (V.corp.SpecRaces.includes(race)) {
+				r.push(capRace);
+				if (!(V.arcologies[0].FSSubjugationist !== "unset" && V.arcologies[0].FSSubjugationistRace !== race)) {
+					if (V.corp.SpecRaces.length > 1 && V.corp.SpecTimer === 0) {
+						const needsToken = (V.corp.SpecRaces.length === 4 || V.corp.SpecRaces.length === 8);
+						if (needsToken && V.corp.SpecToken > 0) {
+							r.push(
+								App.UI.DOM.link(
+									"Blacklist",
+									() => {
+										V.corp.SpecRaces = corpBlacklistRace(race, 1);
+										V.corp.SpecToken -= 1;
+										V.corp.SpecTimer = 1;
+										App.UI.reload();
+									},
+								)
+							);
+						} else if (!needsToken) {
+							r.push(
+								App.UI.DOM.link(
+									"Blacklist",
+									() => {
+										V.corp.SpecRaces = corpBlacklistRace(race, 1);
+										App.UI.reload();
+									},
+								)
+							);
+						}
+					}
+				}
+			} else {
+				r.push(App.UI.DOM.makeElement("span", capFirstChar(capRace), "strikethrough"));
+				if (V.corp.SpecTimer === 0) {
+					r.push(
+						App.UI.DOM.link(
+							"Whitelist",
+							() => {
+								V.corp.SpecRaces = corpBlacklistRace(race, 0);
+								if (V.corp.SpecRaces.length === 3 || V.corp.SpecRaces.length === 7 || V.corp.SpecRaces.length === 11) {
+									V.corp.SpecToken += 1;
+									V.corp.SpecTimer = 1;
+								}
+								App.UI.reload();
+							},
+						)
+					);
+				}
+			}
+			App.Events.addNode(el, r, "div");
+		}
+		return el;
+	}
+
+	/**
+	 * @param {HTMLElement|DocumentFragment} parent
+	 * @param {Array<string|Node>} children
+	 */
+	function addDiv(parent, ...children) {
+		const div = document.createElement("div");
+		// @ts-ignore
+		$(div).append(...children);
+		parent.append(div);
 	}
-	return el;
 };
diff --git a/src/Corporation/manageCorporation.tw b/src/Corporation/manageCorporation.tw
deleted file mode 100644
index 9425d60841c84de2d2b14a594527768e738d8cdf..0000000000000000000000000000000000000000
--- a/src/Corporation/manageCorporation.tw
+++ /dev/null
@@ -1,958 +0,0 @@
-:: Manage Corporation [nobr jump-to-safe jump-from-safe]
-
-<<set $nextButton = "Back", $nextLink = "Main", $encyclopedia = "The Corporation">>
-
-<<set _sepObj = { 'need': false, text: '|' }>>
-
-<<if !App.Corporate.founded >>
-<h1>Incorporation</h1>
-<br>//Please consider that the market price of slaves has quite the impact on the profitability of your corporation.//
-<br>//Focus on acquisition when prices are high, exploitation if prices are low. Slave improvement is a safe choice either way.//
-<br>//Also note the option for a 8 - 7 share split instead of the vanilla 2 - 1, this makes the initial investment cheaper but leaves you with relatively less shares.//
-<br><br>
-
-<<set _divisionsByFoundingCost = App.Corporate.divisionList.concat().sort( function(a,b) { return a.founding.startingPrice - b.founding.startingPrice; })>>
-<<set _optionsText = ["to found a slave corporation", "for most options", "for many options", "for some options", "for the final option"]>>
-
- /*Picking a starting division*/
-<<if $vanillaShareSplit == 1>>
-	<<set _corpPerShares = 2000>>
-	<<set _corpPubShares = 1000>>
-<<else>>
-	<<set _corpPerShares = 8000>>
-	<<set _corpPubShares = 7000>>
-<</if>>
-
-<<for _index, _div range _divisionsByFoundingCost>>
-	<<set _divCost = App.Corporate.foundingCostToPlayer(_div, _corpPerShares, _corpPubShares)>>
-	<<if $cash >= _divCost>>
-		<<if _index == 0>>
-			You can lay the groundwork for a slave corporation and choose to start out with:
-		<</if>>
-		<div>
-		<<= "[[" + _div.name + "|Manage Corporation]"
-		 +  "[App.Corporate.create( '"+ _div.id + "'"
-								+", " + _corpPerShares
-								+", " + _corpPubShares
-								+")]]">> (<<=cashFormat(_divCost)>>): Focuses on <<= _div.focusDescription >>.
-		</div>
-	<<else>>
-		<br>You lack the funds <<= _optionsText[App.Utils.mapIndexBetweenLists(_index, _divisionsByFoundingCost, _optionsText)] >>. You need at least @@.yellowgreen;<<print cashFormat(_divCost)>>@@
-		<<if _index != 0>>
-			<<if _index < _divisionsByFoundingCost.length - 1>>
-				for the next option and at most @@.yellowgreen;<<print cashFormat(App.Corporate.foundingCostToPlayer(_divisionsByFoundingCost[_divisionsByFoundingCost.length - 1], _corpPerShares, _corpPubShares))>>@@.
-			<<else>>
-				for it.
-			<</if>>
-		<</if>>
-		<<break>>
-	<</if>>
-<</for>>
-
-<<if $vanillaShareSplit == 1>>
-	<br>[[8-7 Share Split|Manage Corporation][$vanillaShareSplit = 0]]
-<<else>>
-	<br>[[2-1 Share Split|Manage Corporation][$vanillaShareSplit = 1]]
-<</if>>
-
-<<else>> /*When the corporation exists*/
-
-<h1>Corporation Overview</h1>
-<<if App.Corporate.foundedDate>>
-<div class="founding">Founded on <<= asDateString(App.Corporate.foundedDate)>></div>
-<</if>>
-<<includeDOM App.Corporate.writeLedger(App.Corporate.ledger.old, $week-1)>>
-
-<h1>Division Management</h1>
-<<for _div range App.Corporate.divisionList.filter(x => x.founded)>>
-	<h2><<= _div.name>> Division</h2>
-	<<if _div.foundedDate != 0>>
-	<div class="founding">Founded on <<= asDateString(_div.foundedDate)>></div>
-	<</if>>
-	This division focuses on <<= _div.focusDescription >>.
-	<br><<= _div.messageSlaveCount() >>
-
-	<<set _divMaint = _div.getDisplayMaintenanceCost()>>
-	<br>It costs @@.cash.dec;<<= cashFormat(Math.trunc(_divMaint.cost))>>@@ to run. On average that is @@.cash.dec;<<= cashFormat(Math.trunc(_divMaint.perUnit)) >>@@ per slave.
-	<br><<= _div.messageSlaveOutput() >>
-	<<set _divSentenceStart = ["Currently the division", "It also"]>>
-	<h3>Direct Control</h3>
-	<<if _div.fromMarket>>
-		<div>
-		<<= _divSentenceStart.shift() >> is <<= _div.slaveAction.present >> @@.green;<<= numberWithPlural(_div.activeSlaves, "slave") >>@@.
-		<<if _div.activeSlaves < _div.developmentCount>>
-			<<set _fillSlaveCount  = _div.availableRoom>>
-			<br>There is room to <<= _div.slaveAction.future >> <<= numberWithPluralOne(_fillSlaveCount, "more slave")>>.
-			<<set _buySlaveArray = [
-				{ 'name': 'Buy Slave', 'count':1 },
-				{ 'name': 'Buy x10'  , 'count':10}
-			]>>
-			<<if !_buySlaveArray.some(function(x) { return x.count == _fillSlaveCount })>>
-				<<run _buySlaveArray.push({ 'name': 'Fill'  , 'count':_fillSlaveCount})>>
-			<</if>>
-			<<set _singleSlaveCost = App.Corporate.slaveMarketPurchaseValue(_div, 1)>>
-			<<if $corp.Cash > _singleSlaveCost>>
-				<div>
-				The corporation can purchase slaves directly from the market for about <<=cashFormatColor(_singleSlaveCost)>>
-				</div>
-				<div>
-				<<set _sepObj.need = false>>
-				<<for  _slaveNum range _buySlaveArray.filter(num => _div.availableRoom >= num.count)>>
-					<<set _slaveSetCost = App.Corporate.slaveMarketPurchaseValue(_div, _slaveNum.count)>>
-					<<if $corp.Cash < _slaveSetCost>>
-						<<continue>>
-					<</if>>
-					<<= Separator(_sepObj) >>
-					<<= "[[" + _slaveNum.name + "|Manage Corporation]"
-					  + "[App.Corporate.buySlaves('"+_div.id+"', "+_slaveNum.count+")]"
-					  + "]">>
-				<</for>>
-				</div>
-			<<else>>
-				<div>//The corporation cannot afford to purchase any slaves from the market.// It requires about @@.yellowgreen;<<= cashFormat(_singleSlaveCost)>>@@ to buy a <<= asSingular(_div.slaveAction.market)>>.</div>
-			<</if>>
-		<<else>>
-		<br>There is //no room// to <<= _div.slaveAction.future>> more slaves.
-		<</if>>
-		</div>
-	<</if>>
-	<<if _div.toMarket>>
-		<<set _finishedSlaveNoun = _div.nounFinishedSlave>>
-		<<if _div.heldSlaves > 0>>
-			<div>
-			<<= _divSentenceStart.shift() >> holds @@.green;<<= numberWithPlural(_div.heldSlaves, _finishedSlaveNoun) >>@@.
-			<<for _nextDiv range _div.relatedDivisions
-									 .to
-									 .filter(div => div.availableRoom > 0
-												 && !App.Corporate.ownsIntermediaryDivision(_div, div))>>
-				<div>
-				The <<= _nextDiv.name >> Division can accept up to @@.green;<<= numberWithPlural(_nextDiv.availableRoom, "slave") >>@@.
-
-				<<set _sendSlaveArray = [
-					{'name': 'Send Slave', 'count':1  },
-					{'name': 'Send x10'   , 'count':10 }
-				]>>
-				<<if _div.heldSlaves >= _nextDiv.availableRoom>>
-					<<run _sendSlaveArray.push({'name':`Fill  ${_nextDiv.name} Division`, 'count':_nextDiv.availableRoom})>>
-				<<else>>
-					<<run _sendSlaveArray.push({'name':'Send All', 'count':_div.heldSlaves})>>
-				<</if>>
-				<<set _sepObj.need = false>>
-				<<for _index, _slaveNum range _sendSlaveArray.filter(slaveNum => slaveNum.count <= _nextDiv.availableRoom && slaveNum.count <= _div.heldSlaves)>>
-					<<= Separator(_sepObj)>>
-					<<= "[[" + _slaveNum.name + "|Manage Corporation]"
-					  + "[App.Corporate.transferSlaves('"+_div.id+"', '"+_nextDiv.id+"', "+_slaveNum.count+")"
-					  + "]]">>
-				<</for>>
-				</div>
-			<</for>>
-			</div>
-
-			<div>The corporation can sell these slaves to the market.
-
-			<<set _sellSlaveArray = [
-				{'name':'Sell Slave', 'count':1   },
-				{'name':'Sell x10'  , 'count':10  },
-				{'name':'Sell x100' , 'count':100 },
-				{'name':'Sell All'  , 'count':_div.heldSlaves }
-			]>>
-
-			<<set _sepObj.need = false>>
-			<<for _index, _slaveNum range _sellSlaveArray.filter(slaveNum => _div.heldSlaves >= slaveNum.count)>>
-				<<= Separator(_sepObj)>>
-				<<= "[[" + _slaveNum.name + "|Manage Corporation]"
-				  + "[App.Corporate.sellSlaves('"+_div.id+"',"+_slaveNum.count+")]"
-				  + "]">>
-			<</for>>
-			</div>
-		<<else>>
-			<div>The division is not holding any <<= asPlural(_finishedSlaveNoun)>>.</div>
-		<</if>>
-	<</if>>
-
-	/* Expanding the division*/
-	<<set _depExpandCost = _div.sizeCost * 1000>>
-	<div>Expanding the division costs <span class="cash dec"><<print cashFormat(_depExpandCost)>>.</span> Downsizing recoups 80% of the investment; slaves will be sold at the going rate.</div>
-	<div>
-	<<set _buyDevArray = [
-				{ 'name': 'Expand Division' , 'count':1},
-				{ 'name': 'Expand x10', 'count':10}
-			]>>
-	<<set _sepObj.need = false>>
-	<<for _buySet range _buyDevArray.filter(buySet => App.Corporate.cash >= buySet.count * _depExpandCost)>>
-		<<= Separator(_sepObj) >>
-		<<= "[["+_buySet.name+"|Manage Corporation]"
-		  + "[App.Corporate.buyDevelopment('" + _div.id + "', " + _buySet.count + ")]"
-		  + "]">>
-	<</for>>
-
-	/* Downsize the division*/
-	<<set _depDownsizeCost = _depExpandCost * 0.8>>
-	<<set _sellDevArray = [
-				{ 'name': 'Downsize Division', 'count':1 },
-				{ 'name': 'Downsize x10'	 , 'count':10}
-			]>>
-	<<for _sellSet range _sellDevArray.filter(divNum => _div.developmentCount > divNum.count)>>
-		<<= Separator(_sepObj) >>
-		<<= "[["+_sellSet.name+"|Manage Corporation]"
-		  + "[App.Corporate.sellDevelopment('"+_div.id+"', "+_sellSet.count+")]"
-		  + "]">>
-	<</for>>
-	</div>
-	<h3>Rules</h3>
-	<<for _nextDiv range _div.relatedDivisions.to.filter(nextDiv => nextDiv.founded && !App.Corporate.ownsIntermediaryDivision(_div, nextDiv))>>
-		/* TODO: Originally this had a bit of flavor per nextDep. ie, Surgery said "to undergo surgery"*/
-		<div>
-		<<if _div.getAutoSendToDivision(_nextDiv)>>
-			Auto send slaves to <<= _nextDiv.name >> Division <<= "[[Stop Auto Send|Manage Corporation][App.Corporate.setAutoSendToDivision('"+_div.id+"', '"+_nextDiv.id+"', false)]]">>
-		<<else>>
-			Do not send slaves to <<= _nextDiv.name >> Division <<= "[[Auto Send|Manage Corporation][App.Corporate.setAutoSendToDivision('"+_div.id+"', '"+_nextDiv.id+"', true)]]">>
-		<</if>>
-		</div>
-	<</for>>
-	<<if _div.toMarket>>
-		<div>
-		<<if _div.getAutoSendToMarket()>>
-			Auto sell slaves to the market <<= "[[Stop Auto Sell|Manage Corporation][App.Corporate.setAutoSendToMarket('"+_div.id+"', false)]]" >>
-		<<else>>
-			Do not sell slaves to the market <<= "[[Auto Sell|Manage Corporation][App.Corporate.setAutoSendToMarket('"+_div.id+"', true)]]" >>
-		<</if>>
-		</div>
-	<</if>>
-	<<if _div.fromMarket>>
-		<div>
-		<<if _div.getAutoBuyFromMarket()>>
-			Auto buy slaves from the market <<= "[[Stop Auto Buy|Manage Corporation][App.Corporate.setAutoBuyFromMarket('"+ _div.id +"', false)]]" >>
-		<<else>>
-			Do not buy slaves from the market <<= "[[Auto Buy|Manage Corporation][App.Corporate.setAutoBuyFromMarket('"+ _div.id +"', true)]]" >>
-		<</if>>
-		</div>
-	<</if>>
-	<<if App.Corporate.numDivisions > 1>> /* Cannot dissolve the last division */
-		<div>Dissolve the division @@.orange;//Think before you click//@@ /* TODO: Add a confirmation button. Probably use replace?*/
-		<<= "[[Dissolve|Manage Corporation]"
-		  + "[App.Corporate.divisions['" + _div.id + "'].dissolve()]"
-		  + "]">>
-		</div>
-	<</if>>
-<</for>>
-
-
-<<if App.Corporate.canExpand>> /*is the corporation large enough to expand into another division?*/
-<h1>Found New Division</h1>
-<div>The corporation can expand by founding a new division related to its current <<= onlyPlural(App.Corporate.divisionList.filter(div => div.founded).length, "division") >>.</div>
-	<<for _div range App.Corporate.divisionList.filter(x => !x.founded && x.relatedDivisions.anyFounded)>>
-		<<set _depCost = _div.foundingCost * 1000>>
-		<div>
-		<<if App.Corporate.cash >= _depCost>>
-			<<= "[[Add " + _div.name + " Division|Manage Corporation]"
-			  + "[App.Corporate.divisions['"+_div.id+"'].create(App.Corporate)]]">>
-			(@@.yellowgreen;<<print cashFormat(_depCost)>>@@): A division focusing on <<= _div.focusDescription >>.
-		<<else>>
-			<<=  _div.name >>
-			(@@.cash.dec;<<print cashFormat(_depCost)>>@@):
-			The corporation cannot afford to start a division focusing on <<= _div.focusDescription >>.
-		<</if>>
-		</div>
-	<</for>>
-<</if>>
-<h1>Financials</h1>
-<h2>Dividend</h2>
-<div>
-
-<<set _dividends = App.Corporate.dividendOptions>>
-<<set _index = _dividends.findIndex(element => App.Corporate.dividendRatio >= element ) >>
-<<set _dividend = _dividends[_index] >>
-<<if _index >= 0>>
-	<<set _nextIndex = _index + 1>>
-	<<set App.Corporate.dividendRatio = _dividend>>/* Normalize */
-	The corporation is currently reserving <<= Math.trunc(_dividend * 100)>>% of its profit to be paid out as dividends.
-	<<set _sepObj.need = false>>
-	<<if _index > 0>>
-		<<= Separator(_sepObj)>>
-		<<= "[[Increase Ratio|Manage Corporation][App.Corporate.dividendRatio = " + _dividends[_index - 1] + "]]">>
-	<</if>>
-	<<if _nextIndex != _dividends.length>>
-		<<= Separator(_sepObj)>>
-		<<= "[[Reduce Ratio|Manage Corporation][App.Corporate.dividendRatio = " + _dividends[_nextIndex] + "]]">>
-	<<else>>
-		<<= Separator(_sepObj)>>
-		<<= "[[None|Manage Corporation][App.Corporate.dividendRatio = 0]]">>
-	<</if>>
-<<else>>
-	The corporation is currently not reserving a portion of its profit to be paid out as dividends.
-	<<= "[[Increase Ratio|Manage Corporation][App.Corporate.dividendRatio = "+_dividends[_dividends.length - 1]+"]]" >>
-<</if>>
-</div>
-
-<div>
-<<if App.Corporate.payoutCash>>
-	The corporation will payout unused cash reserves over @@.yellowgreen;<<print cashFormat(App.Corporate.payoutAfterCash)>>@@ as dividends [[Stop|Manage Corporation][App.Corporate.payoutCash = false]]
-<<else>>
-	You can direct the corporation to reserve cash over @@.yellowgreen;<<print cashFormat(App.Corporate.payoutAfterCash)>>@@ to be paid out as dividends as well. [[Payout Cash Reserves|Manage Corporation][App.Corporate.payoutCash = true]]
-<</if>>
-</div>
-
-
-<h2>Shares</h2>
-You own <<print num($personalShares)>> shares while another <<print num($publicShares)>> shares are traded publicly. The going rate on the market for 1000 shares is currently @@.yellowgreen;<<print cashFormat(corpSharePrice())>>.@@
-<br>The corporation can buyback 1000 shares for @@.cash.dec;<<print cashFormat(corpSharePrice(-1000))>>@@ or issue 1000 shares and net @@.yellowgreen;<<print cashFormat(corpSharePrice(1000))>>.@@ The corporation will prefer to round shares to the nearest 1000 and will issue or buy shares toward that goal first.
-<<if $corp.Cash > corpSharePrice(-1000)>>
-	<<if $publicShares <= $personalShares - 2000 && $publicShares > 0>> /*It won't buy back player shares if the corporation is entirely owned by the player*/
-		<<set _persExtraShares = $personalShares % 1000 || 1000>>
-		<br>The corporation can buyback some of your shares.
-		<<= "[[Buyback "+ _persExtraShares + "|Manage Corporation][cashX(corpSharePrice(-"+_persExtraShares+"), 'stocksTraded'), $corp.Cash -= corpSharePrice(-"+_persExtraShares+"), $personalShares -= "+_persExtraShares+"]]">>
-	<</if>>
-	<<if $publicShares >= 1000>>
-		<<set _pubExtraShares = $publicShares % 1000 || 1000>>
-		<br>The corporation can buyback some of the public shares.
-		<<= "[[Buyback "+ _pubExtraShares + "|Manage Corporation][$corp.Cash -= corpSharePrice(-"+_pubExtraShares+"), $publicShares -= "+_pubExtraShares+"]]">>
-	<</if>>
-<</if>>
-
-<<set _persLeftoverShares = 1000 - ($personalShares % 1000)>>
-<<if $cash > corpSharePrice(_persLeftoverShares)>>
-	<br>The corporation can issue <<=_persLeftoverShares>> shares to you.
-	<<= "[[Issue " + _persLeftoverShares + "|Manage Corporation][cashX(forceNeg(corpSharePrice("+_persLeftoverShares+")), 'stocksTraded'), $corp.Cash += corpSharePrice("+_persLeftoverShares+"), $personalShares += "+_persLeftoverShares+"]]">>
-<</if>>
-<<set _pubLeftoverShares = 1000 - ($publicShares % 1000)>>
-<<if $publicShares <= $personalShares - 2000>>
-	<br>The corporation can issue <<=_pubLeftoverShares>> shares onto the stock market.
-	<<= "[[Issue " + _pubLeftoverShares + "|Manage Corporation][$corp.Cash += corpSharePrice("+_pubLeftoverShares+"), $publicShares += "+_pubLeftoverShares+"]]">>
-<</if>>
-<<if $publicShares <= $personalShares - 3000>>
-	<br>You can sell some of your shares on the stock market. [[Sell 1000|Manage Corporation][cashX(corpSharePrice(), "stocksTraded"), $personalShares -= 1000, $publicShares += 1000]]
-<</if>>
-<<if $cash > corpSharePrice() && $publicShares >= 1000>>
-	<br>You can buy some shares from the stock market. [[Buy 1000|Manage Corporation][cashX(forceNeg(corpSharePrice()), "stocksTraded"), $personalShares += 1000, $publicShares -= 1000]]
-<</if>>
-<h3>Stock Split</h3>
-
-/* Splitting shares when they're unwieldy */
-<<set _splitFeeInitial = 10000>>
-<<set _splitFeeValue = _splitFeeInitial - Math.floor((_splitFeeInitial * ($PC.skill.trading / 100.0) / 2.0) / 1000) * 1000>>
-<<set _splitStockConstants = App.Corporate.stockSplits >>
-
-	The corporation can perform a stock split to increase the number of stocks while maintaining the same owned value. This requires paying a market fee of @@.cash.dec;<<= cashFormat(_splitFeeValue)>>@@ plus a per-share fee depending on the type of split being done.
-	<<if _splitFeeValue < _splitFeeInitial>>
-		//You negotiated lower fees due to your @@.springgreen;business acumen@@.//
-	<</if>>
-<<if $corp.SpecTimer > 0>>
-	<br>//The corporation has restructured too recently.//
-<</if>>
-<ul>
-<<for _stockType range _splitStockConstants>>
-	<<set _splitInitial	= _stockType['cost']>>
-	<<set _splitValue	  = _splitInitial>>
-	<<set _splitDenom	  = _stockType['oldStocks'] || 1>>
-	<<set _splitNumerator  = _stockType['newStocks'] || 1>>
-	<<set _splitMultiplier = _splitNumerator / _splitDenom>>
-	<<set _splitTotal	  = _splitValue * ($publicShares + $personalShares) + _splitFeeValue>>
-	<<set _splitWeek	   = _stockType['weeks']>>
-	<li><<= _splitNumerator >>-for-<<= _splitDenom>> <<if _splitDenom > _splitNumerator>>inverse<</if>> stock split at @@.cash.dec;<<= cashFormat(_splitValue) >>@@ per share.
-		Including market fees, this will cost the corporation a total of @@.cash.dec;<<= cashFormat(_splitTotal)>>,@@
-		leaving the going rate for stock at @@.yellowgreen;<<= cashFormat(Math.floor(corpSharePrice(0, $personalShares * _splitMultiplier, $publicShares * _splitMultiplier))) >>@@ per 1000 shares.
-	<<if $corp.SpecTimer == 0>>
-		<<if $publicShares % _splitDenom != 0 || $personalShares % _splitDenom != 0>>
-		//The number of shares cannot be evenly split//
-		<<elseif $corp.Cash > _splitTotal>>
-		<<= "[[Split Shares|Manage Corporation][$corp.Cash -= " + _splitTotal + ", $publicShares *= " + _splitMultiplier + ", $personalShares *= " + _splitMultiplier + ", $corp.SpecTimer="+_splitWeek+"]]" >>
-		<<else>>
-		//The corporation cannot afford the fees.//
-		<</if>>
-	<</if>>
-	</li>
-<</for>>
-</ul>
-
-<h2>Slave specialization</h2>
-<<if $corp.SpecToken > 0>> /*Spending tokens on new specializations*/
-	<<if $corp.SpecToken > 1>>
-		Your corporation has $corp.SpecToken specializations left.
-	<<else>>
-		Your corporation has one specialization left.
-	<</if>>
-	<<if $corp.SpecTimer > 0>>
-		You have recently changed specializations and the corporation needs <<if $corp.SpecTimer > 1>>$corp.SpecTimer more weeks<<else>>another week<</if>> before it can comply with another directive.
-		<<if $cheatMode == 1>>
-			[[Skip wait|Manage Corporation][$corp.SpecTimer = 0]]
-		<</if>>
-	<<else>>
-		<br>Choosing to specialize your corporation uses a specialization. The corporation can be directed to focus on the following:
-		<<if $corp.SpecRaces.length == 0 && ($corp.DivExtra > 0 || $corp.DivLegal > 0)>> /*This used to be $captureUpgradeRace, it is a general acquisition specialization*/
-			<br>Slaves who are not
-			<<if $arcologies[0].FSSubjugationistRace != "amerindian" || $arcologies[0].FSSubjugationist == "unset">>[[Amerindian|Manage Corporation][$corp.SpecRaces = corpBlacklistRace("amerindian", 1), $corp.SpecToken -= 1, $corp.SpecTimer = 1]] | <</if>>
-			<<if $arcologies[0].FSSubjugationistRace != "asian" || $arcologies[0].FSSubjugationist == "unset">>[[Asian|Manage Corporation][$corp.SpecRaces = corpBlacklistRace("asian", 1), $corp.SpecToken -= 1, $corp.SpecTimer = 1]] | <</if>>
-			<<if $arcologies[0].FSSubjugationistRace != "black" || $arcologies[0].FSSubjugationist == "unset">>[[Black|Manage Corporation][$corp.SpecRaces = corpBlacklistRace("black", 1), $corp.SpecToken -= 1, $corp.SpecTimer = 1]] | <</if>>
-			<<if $arcologies[0].FSSubjugationistRace != "indo-aryan" || $arcologies[0].FSSubjugationist == "unset">>[[Indo-aryan|Manage Corporation][$corp.SpecRaces = corpBlacklistRace("indo-aryan", 1), $corp.SpecToken -= 1, $corp.SpecTimer = 1]] | <</if>>
-			<<if $arcologies[0].FSSubjugationistRace != "latina" || $arcologies[0].FSSubjugationist == "unset">>[[Latina|Manage Corporation][$corp.SpecRaces = corpBlacklistRace("latina", 1), $corp.SpecToken -= 1, $corp.SpecTimer = 1]] | <</if>>
-			<<if $arcologies[0].FSSubjugationistRace != "malay" || $arcologies[0].FSSubjugationist == "unset">>[[Malay|Manage Corporation][$corp.SpecRaces = corpBlacklistRace("malay", 1), $corp.SpecToken -= 1, $corp.SpecTimer = 1]] | <</if>>
-			<<if $arcologies[0].FSSubjugationistRace != "middle eastern" || $arcologies[0].FSSubjugationist == "unset">>[[Middle Eastern|Manage Corporation][$corp.SpecRaces = corpBlacklistRace("middle eastern", 1), $corp.SpecToken -= 1, $corp.SpecTimer = 1]] | <</if>>
-			<<if $arcologies[0].FSSubjugationistRace != "mixed race" || $arcologies[0].FSSubjugationist == "unset">>[[Mixed Race|Manage Corporation][$corp.SpecRaces = corpBlacklistRace("mixed race", 1), $corp.SpecToken -= 1, $corp.SpecTimer = 1]] | <</if>>
-			<<if $arcologies[0].FSSubjugationistRace != "pacific islander" || $arcologies[0].FSSubjugationist == "unset">>[[Pacific Islander|Manage Corporation][$corp.SpecRaces = corpBlacklistRace("pacific islander", 1), $corp.SpecToken -= 1, $corp.SpecTimer = 1]] | <</if>>
-			<<if $arcologies[0].FSSubjugationistRace != "semitic" || $arcologies[0].FSSubjugationist == "unset">>[[Semitic|Manage Corporation][$corp.SpecRaces = corpBlacklistRace("semitic", 1), $corp.SpecToken -= 1, $corp.SpecTimer = 1]] | <</if>>
-			<<if $arcologies[0].FSSubjugationistRace != "southern european" || $arcologies[0].FSSubjugationist == "unset">>[[Southern European|Manage Corporation][$corp.SpecRaces = corpBlacklistRace("southern european", 1), $corp.SpecToken -= 1, $corp.SpecTimer = 1]] | <</if>>
-			<<if $arcologies[0].FSSubjugationistRace != "white" || $arcologies[0].FSSubjugationist == "unset">>[[White|Manage Corporation][$corp.SpecRaces = corpBlacklistRace("white", 1), $corp.SpecToken -= 1, $corp.SpecTimer = 1]]<</if>>
-			— //additional races can be excluded. 4 races per token.//
-			<<if $corp.SpecToken >= 3>>
-				<br>Only slaves who are
-				<<if $arcologies[0].FSSupremacistRace != "amerindian" || $arcologies[0].FSSupremacist == "unset">>[[Amerindian|Manage Corporation][$corp.SpecRaces = corpBlacklistRace("amerindian", 0), $corp.SpecToken -= 3, $corp.SpecTimer = 2]] | <</if>>
-				<<if $arcologies[0].FSSupremacistRace != "asian" || $arcologies[0].FSSupremacist == "unset">>[[Asian|Manage Corporation][$corp.SpecRaces = corpBlacklistRace("asian", 0), $corp.SpecToken -= 3, $corp.SpecTimer = 2]] | <</if>>
-				<<if $arcologies[0].FSSupremacistRace != "black" || $arcologies[0].FSSupremacist == "unset">>[[Black|Manage Corporation][$corp.SpecRaces = corpBlacklistRace("black", 0), $corp.SpecToken -= 3, $corp.SpecTimer = 2]] | <</if>>
-				<<if $arcologies[0].FSSupremacistRace != "indo-aryan" || $arcologies[0].FSSupremacist == "unset">>[[Indo-aryan|Manage Corporation][$corp.SpecRaces = corpBlacklistRace("indo-aryan", 0), $corp.SpecToken -= 3, $corp.SpecTimer = 2]] | <</if>>
-				<<if $arcologies[0].FSSupremacistRace != "latina" || $arcologies[0].FSSupremacist == "unset">>[[Latina|Manage Corporation][$corp.SpecRaces = corpBlacklistRace("latina", 0), $corp.SpecToken -= 3, $corp.SpecTimer = 2]] | <</if>>
-				<<if $arcologies[0].FSSupremacistRace != "malay" || $arcologies[0].FSSupremacist == "unset">>[[Malay|Manage Corporation][$corp.SpecRaces = corpBlacklistRace("malay", 0), $corp.SpecToken -= 3, $corp.SpecTimer = 2]] | <</if>>
-				<<if $arcologies[0].FSSupremacistRace != "middle eastern" || $arcologies[0].FSSupremacist == "unset">>[[Middle Eastern|Manage Corporation][$corp.SpecRaces = corpBlacklistRace("middle eastern", 0), $corp.SpecToken -= 3, $corp.SpecTimer = 2]] | <</if>>
-				<<if $arcologies[0].FSSupremacistRace != "mixed race" || $arcologies[0].FSSupremacist == "unset">>[[Mixed Race|Manage Corporation][$corp.SpecRaces = corpBlacklistRace("mixed race", 0), $corp.SpecToken -= 3, $corp.SpecTimer = 2]] | <</if>>
-				<<if $arcologies[0].FSSupremacistRace != "pacific islander" || $arcologies[0].FSSupremacist == "unset">>[[Pacific Islander|Manage Corporation][$corp.SpecRaces = corpBlacklistRace("pacific islander", 0), $corp.SpecToken -= 3, $corp.SpecTimer = 2]] | <</if>>
-				<<if $arcologies[0].FSSupremacistRace != "semitic" || $arcologies[0].FSSupremacist == "unset">>[[Semitic|Manage Corporation][$corp.SpecRaces = corpBlacklistRace("semitic", 0), $corp.SpecToken -= 3, $corp.SpecTimer = 2]] | <</if>>
-				<<if $arcologies[0].FSSupremacistRace != "southern european" || $arcologies[0].FSSupremacist == "unset">>[[Southern European|Manage Corporation][$corp.SpecRaces = corpBlacklistRace("southern european", 0), $corp.SpecToken -= 3, $corp.SpecTimer = 2]] | <</if>>
-				<<if $arcologies[0].FSSupremacistRace != "white" || $arcologies[0].FSSupremacist == "unset">>[[White|Manage Corporation][$corp.SpecRaces = corpBlacklistRace("white", 0), $corp.SpecToken -= 3, $corp.SpecTimer = 2]]<</if>>
-			<<else>>
-				<br>Only slaves of a particular race requires 3 tokens.
-			<</if>>
-		<</if>>
-		<<if (ndef $corp.SpecNationality && $corp.DivExtra > 0) && ($arcologies[0].FSEdoRevivalist != "unset" || $arcologies[0].FSChineseRevivalist != "unset")>>
-			<br>
-			<<if $arcologies[0].FSEdoRevivalist != "unset">>
-				Since you are pursuing Edo Revivalism, slaves who are [[Japanese|Manage Corporation][$corp.SpecNationality = "Japanese", $corp.SpecToken -= 1, $corp.SpecTimer = 2]]
-			<</if>>
-			<<if $arcologies[0].FSChineseRevivalist != "unset">>
-				Since you are pursuing Chinese Revivalism, slaves who are [[Chinese|Manage Corporation][$corp.SpecNationality = "Chinese", $corp.SpecToken -= 1, $corp.SpecTimer = 2]]
-			<</if>>
-		<</if>>
-		<<if $seeDicks != 0 && ndef $corp.SpecGender && ($corp.DivExtra > 0 || $corp.DivLegal > 0)>> /*This used to be $captureUpgradeGender, it is a general acquisition specialization*/
-			<br>Train only slaves with [[Pussies|Manage Corporation][$corp.SpecGender = 1, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] | [[Dicks|Manage Corporation][$corp.SpecGender = 2, $corp.SpecToken -= 1, $corp.SpecTimer = 2]]
-		<</if>>
-		<<if ndef $corp.SpecHeight && ($corp.DivExtra > 0 || $corp.DivLegal > 0)>> /*This is a general acquisition specialization*/
-			<br>Slaves that are [[Short|Manage Corporation][$corp.SpecHeight = 2, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] | [[Tall|Manage Corporation][$corp.SpecHeight = 4, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] -- //Further specializations possible//
-		<</if>>
-		<<if ndef $corp.SpecVirgin && ($corp.DivExtra > 0 || $corp.DivLegal > 0)>> /*This is a general acquisition specialization*/
-			<br>Slaves that are [[Virgins|Manage Corporation][$corp.SpecVirgin = 1, $corp.SpecToken -= 1, $corp.SpecTimer = 2]]
-		<</if>>
-		<<if ndef $corp.SpecIntelligence && $corp.DivLegal > 0 >> /*This used to be $entrapmentUpgradeIntelligence, it is a legal enslavement specialization*/
-			<br>Slaves who are [[Stupid|Manage Corporation][$corp.SpecIntelligence = 1, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] | [[Intelligent|Manage Corporation][$corp.SpecIntelligence = 3, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] --//Further specializations possible//
-		<</if>>
-		<<if ndef $corp.SpecAge && $corp.DivExtra > 0>> /*This used to be $captureUpgradeAge, it is the extralegal enslavement specialization*/
-			<br>Slaves who are [[Younger|Manage Corporation][$corp.SpecAge = 1, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] | [[Older|Manage Corporation][$corp.SpecAge = 3, $corp.SpecToken -= 1, $corp.SpecTimer = 2]]
-		<</if>>
-		<<if ndef $corp.SpecWeight && ($corp.DivBreak > 0 || $corp.DivSurgery > 0 || $corp.DivTrain > 0)>> /*This used to be $generalUpgradeWeight, it is a general improvement specialization*/
-			<br>Managing slaves' diets to achieve [[Thin Slaves|Manage Corporation][$corp.SpecWeight = 2, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] | [[Fat nor Thin Slaves|Manage Corporation][$corp.SpecWeight = 3, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] | [[Fat Slaves|Manage Corporation][$corp.SpecWeight = 5, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] -- //Further specializations possible//
-		<</if>>
-		<<if ndef $corp.SpecDevotion && ($corp.DivBreak > 0 || $corp.DivSurgery > 0 || $corp.DivTrain > 0)>> /*This used to be $entrapmentUpgradeDevotionOne/Two, it is a general improvement specialization*/
-			<br>Slaves who are [[Reluctant|Manage Corporation][$corp.SpecDevotion = 2, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] | [[Obedient|Manage Corporation][$corp.SpecDevotion = 4, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] -- //Further specializations possible//
-		<</if>>
-		<<if ndef $corp.SpecAccent && ($corp.DivBreak > 0 || $corp.DivSurgery > 0 || $corp.DivTrain > 0)>> /*This used to be $trainingUpgradeAccent, it is a general improvement specialization*/
-			<br>Slaves are taught to [[Speak the Language|Manage Corporation][$corp.SpecAccent = 1, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] | [[Speak without Accent|Manage Corporation][$corp.SpecAccent = 2, $corp.SpecToken -= 1, $corp.SpecTimer = 2]]
-		<</if>>
-		<<if ndef $corp.SpecHormones && ($corp.DivBreak > 0 || $corp.DivSurgery > 0 || $corp.DivTrain > 0)>> /*This used to be $drugUpgradeHormones, it is a general improvement specialization*/
-			<br>Slaves are given hormones to [[Feminize|Manage Corporation][$corp.SpecHormones = 1, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] | [[Masculinize|Manage Corporation][$corp.SpecHormones = 2, $corp.SpecToken -= 1, $corp.SpecTimer = 2]]
-		<</if>>
-		<<if ndef $corp.SpecInjection && ($corp.DivBreak > 0 || $corp.DivSurgery > 0 || $corp.DivTrain > 0)>> /*This used to be $drugUpgradeInjectionOne, it is a general improvement specialization*/
-			<br>Slave assets are made to be [[Petite|Manage Corporation][$corp.SpecInjection = 1, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] | [[Tasteful|Manage Corporation][$corp.SpecInjection = 2, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] | [[Huge|Manage Corporation][$corp.SpecInjection = 3, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] -- //Further specializations possible//
-		<</if>>
-		<<if ndef $corp.SpecCosmetics && ($corp.DivBreak > 0 || $corp.DivSurgery > 0 || $corp.DivTrain > 0)>> /*This used to be $surgicalUpgradeCosmetics, it is a general improvement specialization*/
-			<br>Straightforward cosmetic procedures are [[Applied|Manage Corporation][$corp.SpecCosmetics = 1, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] | [[Not Applied|Manage Corporation][$corp.SpecCosmetics = 0, $corp.SpecTimer = 2]]
-		<</if>>
-		<<if ndef $corp.SpecEducation && $corp.DivTrain > 0>> /*This used to be $trainingUpgradeEducation, it is the training specialization*/
-			<br>Slaves are given [[No Education|Manage Corporation][$corp.SpecEducation = 0, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] | [[Basic Education|Manage Corporation][$corp.SpecEducation = 1, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] -- //Further specializations possible//
-		<</if>>
-		<<if ndef $corp.SpecImplants && $corp.DivSurgery > 0>> /*This used to be $surgicalUpgradeImplants, it is the surgery specialization*/
-			<br>Slave implants are [[Applied|Manage Corporation][$corp.SpecImplants = 1, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] | [[Not Applied|Manage Corporation][$corp.SpecImplants = 0, $corp.SpecTimer = 2]] -- //Further specializations possible//
-		<</if>>
-		<<if ndef $corp.SpecGenitalia && $corp.DivSurgeryDev > 100>> /*This used to be $surgicalUpgradeGenitalia, it is the surgery specialization*/
-			<br>Slaves get their genitalia reconfigured [[Add Pussy|Manage Corporation][$corp.SpecPussy = 1, $corp.SpecGenitalia = 1, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] | [[Remove Pussy|Manage Corporation][$corp.SpecPussy = -1, $corp.SpecGenitalia = 1, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] | [[Add Dick|Manage Corporation][$corp.SpecDick = 1, $corp.SpecGenitalia = 1, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] | [[Remove Dick|Manage Corporation][$corp.SpecDick = -1, $corp.SpecGenitalia = 1, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] | [[Add Balls|Manage Corporation][$corp.SpecBalls = 1, $corp.SpecGenitalia = 1, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] | [[Remove Balls|Manage Corporation][$corp.SpecBalls = -1, $corp.SpecGenitalia = 1, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] -- //Further specializations possible//
-		<</if>>
-		<<if ndef $corp.SpecTrust && $corp.DivBreak > 0>> /*This used to be $generalUpgradeBreaking, it is the slave breaking specific specialization*/
-			<br>Breaking slaves with [[Brutality|Manage Corporation][$corp.SpecTrust = 2, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] | [[Care|Manage Corporation][$corp.SpecTrust = 4, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] -- //Further specializations possible//
-		<</if>>
-		<<if ndef $corp.SpecAmputee && $corp.DivArcade > 0 && $corp.DivSurgeryDev > 100>> /*This is the arcade specialization*/
-			<br>Slave limbs are categorically [[Removed|Manage Corporation][$corp.SpecAmputee = 1, $corp.SpecToken -= 1, $corp.SpecTimer = 2]]
-		<</if>>
-		<<if ndef $corp.SpecMuscle && $corp.DivMenial > 0>> /*This used to be $generalUpgradeMuscle, it is the Menial division's specialization*/
-			<br>Slaves with muscles that are <<if $arcologies[0].FSPhysicalIdealist == "unset">> [[Weak|Manage Corporation][$corp.SpecMuscle = 2, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] | <</if>>[[Soft|Manage Corporation][$corp.SpecMuscle = 3, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] | [[Toned|Manage Corporation][$corp.SpecMuscle = 4, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] -- //Further specializations possible//
-		<</if>>
-		<<if ndef $corp.SpecMilk && $corp.DivDairy > 0>> /*This is the dairy specialization*/
-			<br>Slaves are made to be lactating [[Naturally|Manage Corporation][$corp.SpecMilk = 1, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] | [[Through Implant|Manage Corporation][$corp.SpecMilk = 2, $corp.SpecToken -= 1, $corp.SpecTimer = 2]]
-		<</if>>
-		<<if ndef $corp.SpecSexEd && $corp.DivWhore > 0>> /*This used to be $trainingUpgradeSexEd, it is the escort division specialization*/
-			<br>Slaves are sexually [[Clueless|Manage Corporation][$corp.SpecSexEd = 0, $corp.SpecToken -= 0, $corp.SpecTimer = 2]] | [[Competent|Manage Corporation][$corp.SpecSexEd = 1, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] -- //Further specializations possible//
-		<</if>>
-	<</if>>
-<<else>>
-	<br>Your corporation cannot pick a new specialization at this time.
-	<<if $cheatMode == 1>>
-		[[Unlock specialization|Manage Corporation][$corp.SpecToken++, $corp.SpecTimer = 0]]
-	<</if>>
-<</if>>
-
-<p>
-	<<if $corp.Spec > $corp.SpecToken>> /*Modifying specializations*/
-		You have chosen the following specializations;
-		<div class="note">
-			You can choose to specialize further with additional tokens, specialize less, end the specialization or sometimes tweak them for free.
-		</div>
-		<<if $corp.SpecRaces.length == 12>>
-			<<set $corp.SpecRaces = []>>
-		<</if>>
-		<<if $corp.SpecRaces.length > 0>>
-			<<includeDOM App.Corporate.corpRaces()>>
-		<</if>>
-		<div>
-			<<if $corp.SpecNationality>>
-				The corporation trains slaves who are $corp.SpecNationality.
-				<<if $corp.SpecTimer == 0>>
-					<<link "No Focus">><<run delete $corp.SpecNationality>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<</if>>
-		</div>
-		<div>
-			<<if $corp.SpecGender == 1>>
-				The corporation trains slaves with pussies.
-				<<if $corp.SpecTimer == 0>>
-					<<link "No Focus">><<run delete $corp.SpecGender>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<<elseif $corp.SpecGender == 2>>
-				<br>The corporation trains slaves with dicks.
-				<<if $corp.SpecTimer == 0>>
-					<<link "No Focus">><<run delete $corp.SpecGender>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<</if>>
-		</div>
-		<div>
-			<<if $corp.SpecHeight == 1>>
-				The corporation is targeting tiny slaves.
-				<<if $corp.SpecTimer == 0>>
-					[[Short Slaves|Manage Corporation][$corp.SpecHeight = 2, $corp.SpecToken += 1, $corp.SpecTimer = 2]] | <<link "No Focus">><<run delete $corp.SpecHeight>><<set $corp.SpecToken += 2, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<<elseif $corp.SpecHeight == 2>>
-				The corporation is targeting short slaves.
-				<<if $corp.SpecTimer == 0>>
-					<<if $corp.SpecToken > 0 && ($corp.DivExtraDev + $corp.DivLegalDev) > 50>>
-						[[Tiny Slaves|Manage Corporation][$corp.SpecHeight = 1, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] |
-					<</if>>
-					<<link "No Focus">><<run delete $corp.SpecHeight>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<<elseif $corp.SpecHeight == 4>>
-				The corporation is targeting tall slaves.
-				<<if $corp.SpecTimer == 0>>
-					<<if $corp.SpecToken > 0 && ($corp.DivExtraDev + $corp.DivLegalDev) > 50>>
-						[[Giant Slaves|Manage Corporation][$corp.SpecHeight = 5, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] |
-					<</if>>
-					<<link "No Focus">><<run delete $corp.SpecHeight>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<<elseif $corp.SpecHeight == 5>>
-				The corporation is targeting giant slaves.
-				<<if $corp.SpecTimer == 0>>
-					[[Tall Slaves|Manage Corporation][$corp.SpecHeight = 4, $corp.SpecToken += 1, $corp.SpecTimer = 2]] | <<link "No Focus">><<run delete $corp.SpecHeight>><<set $corp.SpecToken += 2, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<</if>>
-		</div>
-		<div>
-			<<if $corp.SpecVirgin == 1>>
-				The corporation is ensuring slaves remain virgins.
-				<<if $corp.SpecTimer == 0>>
-					<<link "No Focus">><<run delete $corp.SpecVirgin>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<</if>>
-		</div>
-		<div>
-			<<if $corp.SpecTrust == 1>>
-				The corporation is breaking slaves with extreme brutality.
-				<<if $corp.SpecTimer == 0>>
-					[[Apply Less Brutality|Manage Corporation][$corp.SpecTrust = 2, $corp.SpecTimer = 2]] | <<link "No Focus">><<run delete $corp.SpecTrust>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>> /*Don't think this deserves the added cost of a token, unlike the 'utmost care' one*/
-			<<elseif $corp.SpecTrust == 2>>
-				The corporation is breaking slaves with brutality.
-				<<if $corp.SpecTimer == 0>>
-					<<if $corp.SpecToken > 0 && $arcologies[0].FSDegradationist > 20 && $corp.DivBreakDev > 50>>
-						[[Apply Extreme Brutality|Manage Corporation][$corp.SpecTrust = 1, $corp.SpecTimer = 2]] |
-					<</if>>
-					<<link "No Focus">><<run delete $corp.SpecTrust>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<<elseif $corp.SpecTrust == 4>>
-				The corporation is breaking slaves with care.
-				<<if $corp.SpecTimer == 0>>
-					<<if $corp.SpecToken > 0 && $arcologies[0].FSPaternalist > 20 && $corp.DivBreakDev > 50>>
-						[[Use the Utmost Care|Manage Corporation][$corp.SpecTrust = 5, $corp.SpecToken += 1, $corp.SpecTimer == 2]] |
-					<</if>>
-					<<link "No Focus">><<run delete $corp.SpecTrust>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<<elseif $corp.SpecTrust == 5>>
-				The corporation is breaking slaves with the utmost care.
-				<<if $corp.SpecTimer == 0>>
-					[[Use Less Care|Manage Corporation][$corp.SpecTrust = 4, $corp.SpecToken += 1, $corp.SpecTimer = 2]] | <<link "No Focus">><<run delete $corp.SpecTrust>><<set $corp.SpecToken += 2, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<</if>>
-		</div>
-		<div>
-			<<if $corp.SpecWeight == 1>>
-				The corporation makes slaves follow incredibly strict diets.
-				<<if $corp.SpecTimer == 0>>
-					[[Apply Looser Diet|Manage Corporation][$corp.SpecWeight = 2, $corp.SpecTimer = 2]] | <<link "No Focus">><<run delete $corp.SpecWeight>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<<elseif $corp.SpecWeight == 2>>
-				The corporation makes slaves diet.
-				<<if $corp.SpecTimer == 0>>
-					<<if $corp.SpecToken > 0 && $arcologies[0].FSHedonisticDecadence == "unset">>
-						[[Apply Strict Diet|Manage Corporation][$corp.SpecWeight = 1, $corp.SpecTimer = 2]] |
-					<</if>>
-					[[Aim for Healthy Weight|Manage Corporation][$corp.SpecWeight = 3, $corp.SpecTimer = 2]] | <<link "No Focus">><<run delete $corp.SpecWeight>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<<elseif $corp.SpecWeight == 3>>
-				The corporation is aiming for slaves with a healthy weight.
-				<<if $corp.SpecTimer == 0>>
-					[[Apply Diet|Manage Corporation][$corp.SpecWeight = 2, $corp.SpecTimer = 2]] | [[Plump up Slaves|Manage Corporation][$corp.SpecWeight = 5, $corp.SpecTimer = 2]] | <<link "No Focus">><<run delete $corp.SpecWeight>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>> /*Perhaps 'plump up' is not the right phrase*/
-			<<elseif $corp.SpecWeight == 5>>
-				The corporation aims for plump slaves.
-				<<if $corp.SpecTimer == 0>>
-					<<if $corp.SpecToken > 0 && $arcologies[0].FSPhysicalIdealist == "unset">>
-						[[Fatten Slaves|Manage Corporation][$corp.SpecWeight = 6, $corp.SpecTimer = 2]] |
-					<</if>>
-					[[Aim for Healthy Weight|Manage Corporation][$corp.SpecWeight = 3, $corp.SpecTimer = 2]] | <<link "No Focus">><<run delete $corp.SpecWeight>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<<elseif $corp.SpecWeight == 6>>
-				The corporation aims for fat slaves.
-				<<if $corp.SpecTimer == 0>>
-					[[Settle for Plump|Manage Corporation][$corp.SpecWeight = 5, $corp.SpecTimer = 2]] | <<link "No Focus">><<run delete $corp.SpecWeight>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<</if>>
-		</div>
-		<div>
-			<<if $corp.SpecMuscle == 1>>
-				The corporation aims to have frail slaves.
-				<<if $corp.SpecTimer == 0>>
-					[[Aim for Weak|Manage Corporation][$corp.SpecMuscle = 2, $corp.SpecTimer = 2]] | <<link "No Focus">><<run delete $corp.SpecMuscle>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<<elseif $corp.SpecMuscle == 2>> /*Don't think this deserves the added cost of a token, unlike slaves getting ripped*/
-				The corporation aims to have weak slaves.
-				<<if $corp.SpecTimer == 0>>
-					<<if $arcologies[0].FSPhysicalIdealist == "unset">>
-						[[Aim for Frail|Manage Corporation][$corp.SpecMuscle = 1, $corp.SpecTimer = 2]] |
-					<</if>>
-					[[Aim for Soft|Manage Corporation][$corp.SpecMuscle = 3, $corp.SpecTimer = 2]] | <<link "No Focus">><<run delete $corp.SpecWeight>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<<elseif $corp.SpecMuscle == 3>>
-				The corporation is aiming for slaves with soft muscles.
-				<<if $corp.SpecTimer == 0>>
-					<<if $arcologies[0].FSPhysicalIdealist == "unset">>
-						[[Aim for Weak|Manage Corporation][$corp.SpecMuscle = 2, $corp.SpecTimer = 2]] |
-					<</if>>
-					[[Aim for Toned|Manage Corporation][$corp.SpecMuscle = 4, $corp.SpecTimer = 2]] | <<link "No Focus">><<run delete $corp.SpecWeight>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<<elseif $corp.SpecMuscle == 4>>
-				The corporation aims for toned muscles.
-				<<if $corp.SpecTimer == 0>>
-					<<if $corp.SpecToken > 0 && ($corp.DivBreakDev + $corp.DivSurgeryDev + $corp.DivTrainDev > 100)>>
-						[[Aim for Ripped|Manage Corporation][$corp.SpecMuscle = 5, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] |
-					<</if>>
-					[[Aim for Soft|Manage Corporation][$corp.SpecMuscle = 3, $corp.SpecTimer = 2]] | <<link "No Focus">><<run delete $corp.SpecWeight>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<<elseif $corp.SpecMuscle == 5>>
-				The corporation aims for ripped slaves.
-				<<if $corp.SpecTimer == 0>>
-					[[Aim for Toned|Manage Corporation][$corp.SpecMuscle = 4, $corp.SpecToken += 1, $corp.SpecTimer = 2]] | <<link "No Focus">><<run delete $corp.SpecWeight>><<set $corp.SpecToken += 2, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<</if>>
-		</div>
-		<div>
-			<<if $corp.SpecDevotion == 1>>
-				The corporation keeps slaves extremely defiant.
-				<<if $corp.SpecTimer == 0>>
-					[[Less Defiant|Manage Corporation][$corp.SpecDevotion = 2, $corp.SpecTimer = 2]] | <<link "No Focus">><<run delete $corp.SpecDevotion>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>> /*Don't think this deserves the added cost of a token, unlike the 'devoted' one*/
-			<<elseif $corp.SpecDevotion == 2>>
-				The corporation keeps slaves reluctant.
-				<<if $corp.SpecTimer == 0>>
-					[[Make them Defiant|Manage Corporation][$corp.SpecDevotion = 1, $corp.SpecTimer = 2]] | <<link "No Focus">><<run delete $corp.SpecDevotion>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<<elseif $corp.SpecDevotion == 4>>
-				The corporation is fostering obedience.
-				<<if $corp.SpecTimer == 0>>
-					<<if $corp.SpecToken > 0 && $corp.DivTrainDev > 100>>
-						[[Foster Devotion|Manage Corporation][$corp.SpecDevotion = 5, $corp.SpecToken += 1, $corp.SpecTimer = 2]] |
-					<</if>>
-				<<link "No Focus">><<run delete $corp.SpecDevotion>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<<elseif $corp.SpecDevotion == 5>>
-				The corporation is fostering devotion.
-				<<if $corp.SpecTimer == 0>>
-					[[Settle for Obedience|Manage Corporation][$corp.SpecDevotion = 4, $corp.SpecToken += 1, $corp.SpecTimer = 2]] | <<link "No Focus">><<run delete $corp.SpecDevotion>><<set $corp.SpecToken += 2, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<</if>>
-		</div>
-		<div>
-			<<if $corp.SpecIntelligence == 1>>
-				The corporation keeps stupid slaves.
-				<<if $corp.SpecTimer == 0>>
-					<<link "No Focus">><<run delete $corp.SpecIntelligence>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<<elseif $corp.SpecIntelligence == 3>>
-				The corporation keeps intelligent slaves.
-				<<if $corp.SpecTimer == 0>>
-					<<link "No Focus">><<run delete $corp.SpecIntelligence>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<</if>>
-		</div>
-		<div>
-			<<if $corp.SpecAge == 1>>
-				The corporation focuses on young slaves.
-				<<if $corp.SpecTimer == 0>>
-					<<link "No Focus">><<run delete $corp.SpecAge>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<<elseif $corp.SpecAge == 3>>
-				The corporation focuses on older slaves.
-				<<if $corp.SpecTimer == 0>>
-					<<link "No Focus">><<run delete $corp.SpecAge>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<</if>>
-		</div>
-		<div>
-			<<if $corp.SpecAccent == 1>>
-				The corporation teaches slaves to speak the lingua franca.
-				<<if $corp.SpecTimer == 0>>
-					[[Eliminate Accents|Manage Corporation][$corp.SpecAccent = 2, $corp.SpecTimer = 2]] | <<link "No Focus">><<run delete $corp.SpecAccent>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<<elseif $corp.SpecAccent == 2>>
-				The corporation teaches slaves to speak the lingua franca without an accent.
-				<<if $corp.SpecTimer == 0>>
-					[[Just Teach Language|Manage Corporation][$corp.SpecAccent = 1, $corp.SpecTimer = 2]] | <<link "No Focus">><<run delete $corp.SpecAccent>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<</if>>
-		</div>
-		<div>
-			<<if $corp.SpecEducation == 0>>
-				The corporation focuses on uneducated slaves.
-				<<if $corp.SpecTimer == 0>>
-					<<if $corp.SpecToken > 0>>
-						[[Basic Education|Manage Corporation][$corp.SpecEducation = 1, $corp.SpecTimer = 2]] |
-					<</if>>
-				<<link "No Focus">><<run delete $corp.SpecEducation>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<<elseif $corp.SpecEducation == 1>>
-				The corporation makes sure all slaves have a basic education.
-				<<if $corp.SpecTimer == 0>>
-					<<if $corp.DivTrainDev > 200 && $corp.SpecToken > 0>>
-						[[Advanced Education|Manage Corporation][$corp.SpecEducation = 2, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] |
-					<</if>>
-					[[No Education|Manage Corporation][$corp.SpecEducation = 1, $corp.SpecTimer = 2]] | <<link "No Focus">><<run delete $corp.SpecEducation>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<<elseif $corp.SpecEducation == 2>>
-				The corporation makes sure all slaves have an advanced education.
-				<<if $corp.SpecTimer == 0>>
-					[[Basic Education|Manage Corporation][$corp.SpecEducation = 1, $corp.SpecToken += 1, $corp.SpecTimer = 2]] | <<link "No Focus">><<run delete $corp.SpecEducation>><<set $corp.SpecToken += 2, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<</if>>
-		</div>
-		<div>
-			<<if $corp.SpecCosmetics == 1>>
-				The corporation applies straightforward cosmetic procedures.
-				<<if $corp.SpecTimer == 0>>
-					<<link "No Focus">><<run delete $corp.SpecCosmetics>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<<elseif $corp.SpecCosmetics == 0>>
-				The corporation doesn't apply cosmetic procedures.
-				<<if $corp.SpecTimer == 0>>
-					<<if $corp.SpecToken > 0>>
-						[[Applied|Manage Corporation][$corp.SpecCosmetics = 1, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] |
-					<</if>>
-					<<link "No Focus">><<run delete $corp.SpecCosmetics>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<</if>>
-		</div>
-		<div>
-			<<if $corp.SpecImplants == 1>>
-				The corporation applies tasteful implants to all slaves.
-				<<if $corp.SpecTimer == 0>>
-					<<if $corp.DivSurgeryDev > 100 && $corp.SpecToken > 0>>
-						[[Absurd Implants|Manage Corporation][$corp.SpecImplants = 2, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] |
-					<</if>>
-					<<link "No Focus">><<run delete $corp.SpecImplants>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<<elseif $corp.SpecImplants == 2>>
-				The corporation applies absurd implants to all slaves.
-				<<if $corp.SpecTimer == 0>>
-					[[Tasteful Implants|Manage Corporation][$corp.SpecImplants = 1, $corp.SpecToken += 1, $corp.SpecTimer = 2]] | <<link "No Focus">><<run delete $corp.SpecImplants>><<set $corp.SpecToken += 2, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<<elseif $corp.SpecImplants == 0>>
-				The corporation keeps their slaves entirely implant free.
-				<<if $corp.SpecTimer == 0>>
-					<<if $corp.SpecToken > 0>>
-						[[Tasteful Implants|Manage Corporation][$corp.SpecImplants = 1, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] |
-					<</if>>
-					<<link "No Focus">><<run delete $corp.SpecImplants>><<set $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<</if>>
-		</div>
-		<<if ndef $corp.SpecPussy && ndef $corp.SpecDick && ndef $corp.SpecBalls && $corp.SpecGenitalia == 1>>
-			<<set ndef $corp.SpecGenitalia,
-			$corp.SpecToken += 1>>
-		<</if>>
-		<<if $corp.SpecGenitalia == 1>>
-			<div>
-				<<if $corp.SpecPussy == 1>>
-					The corporation adds a pussy to all slaves.
-					<<if $corp.SpecTimer == 0>>
-						<<link "Stop">><<run delete $corp.SpecPussy>><<set $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-					<</if>>
-				<<elseif $corp.SpecPussy == -1>>
-					The corporation removes pussies from all slaves.
-					<<if $corp.SpecTimer == 0>>
-						<<link "Stop">><<run delete $corp.SpecPussy>><<set $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-					<</if>>
-				<<else>>
-					The corporation has no plans for pussies.
-					<<if $corp.SpecTimer == 0>>
-						[[Add Pussy|Manage Corporation][$corp.SpecPussy = 1, $corp.SpecTimer = 2]] | [[Remove Pussy|Manage Corporation][$corp.SpecPussy = -1, $corp.SpecToken -= 1, $corp.SpecTimer = 2]]
-					<</if>>
-				<</if>>
-			</div>
-			<div>
-				<<if $corp.SpecDick == 1>>
-					The corporation adds a dick to all slaves.
-					<<if $corp.SpecTimer == 0>>
-						<<link "Stop">><<run delete $corp.SpecDick>><<set $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-					<</if>>
-				<<elseif $corp.SpecDick == -1>>
-					The corporation removes dicks from all slaves.
-					<<if $corp.SpecTimer == 0>>
-						<<link "Stop">><<run delete $corp.SpecDick>><<set $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-					<</if>>
-				<<else>>
-					The corporation has no plans for dicks.
-					<<if $corp.SpecTimer == 0>>
-						[[Add Dick|Manage Corporation][$corp.SpecDick = 1, $corp.SpecTimer = 2]] | [[Remove Dick|Manage Corporation][$corp.SpecDick = -1, $corp.SpecToken -= 1, $corp.SpecTimer = 2]]
-					<</if>>
-				<</if>>
-			</div>
-			<div>
-				<<if $corp.SpecBalls == 1>>
-					The corporation adds balls to all slaves (penis required).
-					<<if $corp.SpecTimer == 0>>
-						<<link "Stop">><<run delete $corp.SpecBalls>><<set $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-					<</if>>
-				<<elseif $corp.SpecBalls == -1>>
-					The corporation removes balls from all slaves.
-					<<if $corp.SpecTimer == 0>>
-						<<link "Stop">><<run delete $corp.SpecBalls>><<set $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-					<</if>>
-				<<else>>
-					The corporation has no plans for balls.
-					<<if $corp.SpecTimer == 0>>
-						[[Add Balls|Manage Corporation][$corp.SpecBalls = 1, $corp.SpecTimer = 2]] | [[Remove Balls|Manage Corporation][$corp.SpecBalls = -1, $corp.SpecTimer = 2]]
-					<</if>>
-				<</if>>
-			</div>
-		<</if>>
-		<div>
-			<<if $corp.SpecInjection == 1>>
-				The corporation aims for petite assets.
-				<<if $corp.SpecTimer == 0>>
-					[[Tasteful Size|Manage Corporation][$corp.SpecInjection = 2, $corp.SpecTimer = 2]] | [[Huge Size|Manage Corporation][$corp.SpecInjection = 3, $corp.SpecTimer = 2]] | <<link "No Focus">><<run delete $corp.SpecInjection>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<<elseif $corp.SpecInjection == 2>>
-				The corporation aims for tasteful assets.
-				<<if $corp.SpecTimer == 0>>
-					[[Small Size|Manage Corporation][$corp.SpecInjection = 1, $corp.SpecTimer = 2]] | [[Huge Size|Manage Corporation][$corp.SpecInjection = 3, $corp.SpecTimer = 2]] | <<link "No Focus">><<run delete $corp.SpecInjection>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<<elseif $corp.SpecInjection == 3>>
-				The corporation aims for huge assets.
-				<<if $corp.SpecTimer == 0>>
-					[[Small Size|Manage Corporation][$corp.SpecInjection = 1, $corp.SpecTimer = 2]] | [[Tasteful Size|Manage Corporation][$corp.SpecInjection = 2, $corp.SpecTimer = 2]] |
-					<<if $corp.DivSurgeryDev > 100 && $corp.SpecToken > 0>>
-						[[Supermassive Size|Manage Corporation][$corp.SpecInjection = 4, $corp.SpecToken -= 1, $corp.SpecTimer = 2]]
-					<</if>>
-					<<if $corp.DivDairyDev > 200 && $corp.SpecToken > 0>> |
-						[[Pastoral Size|Manage Corporation][$corp.SpecInjection = 5, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] |
-					<</if>>
-					<<link "No Focus">><<run delete $corp.SpecInjection>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<<elseif $corp.SpecInjection == 4>>
-				The corporation aims for supermassive assets.
-				<<if $corp.SpecTimer == 0>>
-					[[Huge Size|Manage Corporation][$corp.SpecInjection = 3, $corp.SpecToken += 1, $corp.SpecTimer = 2]] |
-					<<if $corp.DivDairyDev > 200>>
-						[[Pastoral Size|Manage Corporation][$corp.SpecInjection = 5, $corp.SpecTimer = 2]] |
-					<</if>>
-				<<link "No Focus">><<run delete $corp.SpecInjection>><<set $corp.SpecToken += 2, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<<elseif $corp.SpecInjection == 5>>
-				The corporation aims for pastoral assets.
-				<<if $corp.SpecTimer == 0>>
-					[[Huge Size|Manage Corporation][$corp.SpecInjection = 3, $corp.SpecToken += 1, $corp.SpecTimer = 2]] |
-					<<if $corp.DivSurgeryDev > 50>>
-						[[Supermassive Size|Manage Corporation][$corp.SpecInjection = 4, $corp.SpecTimer = 2]] |
-					<</if>>
-					<<link "No Focus">><<run delete $corp.SpecInjection>><<set $corp.SpecToken += 2, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<</if>>
-		</div>
-		<div>
-			<<if $corp.SpecHormones == 1>>
-				The corporation feminizes slaves with hormones.
-				<<if $corp.SpecTimer == 0>>
-					[[Masculinize|Manage Corporation][$corp.SpecHormones = 2, $corp.SpecTimer = 2]] | <<link "No Focus">><<run delete $corp.SpecHormones>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<<elseif $corp.SpecHormones == 2>>
-				The corporation masculinize slaves with hormones.
-				<<if $corp.SpecTimer == 0>>
-					[[Feminize|Manage Corporation][$corp.SpecHormones = 1, $corp.SpecTimer = 2]] | <<link "No Focus">><<run delete $corp.SpecHormones>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<</if>>
-		</div>
-		<div>
-			<<if $corp.SpecAmputee == 1>>
-				The corporation removes all limbs from its slaves.
-				<<if $corp.SpecTimer == 0>>
-					<<link "Stop">><<run delete $corp.SpecAmputee>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<</if>>
-		</div>
-		<div>
-			<<if $corp.SpecMilk == 1>>
-				The corporation makes sure all slaves are naturally lactating.
-				<<if $corp.SpecTimer == 0>>
-					[[Lactation Implant|Manage Corporation][$corp.SpecMilk = 2, $corp.SpecTimer = 2]] | <<link "No Focus">><<run delete $corp.SpecMilk>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<<elseif $corp.SpecMilk == 2>>
-				The corporation equips all slaves with lactation implants.
-				<<if $corp.SpecTimer == 0>>
-					[[Natural Lactation|Manage Corporation][$corp.SpecMilk = 1, $corp.SpecTimer = 2]] | <<link "No Focus">><<run delete $corp.SpecMilk>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<</if>>
-		</div>
-		<div>
-			<<if $corp.SpecSexEd == 1>>
-				The corporation familiarizes slaves with sexual service.
-				<<if $corp.SpecTimer == 0>>
-					<<if $corp.SpecToken > 0 && $corp.DivWhoreDev > 200>>
-						[[Advanced Training|Manage Corporation][$corp.SpecSexEd = 2, $corp.SpecToken -= 1, $corp.SpecTimer = 2]] |
-					<</if>>
-					<<link "No Focus">><<run delete $corp.SpecSexEd>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<<elseif $corp.SpecSexEd == 2>>
-				The corporation teaches advanced sexual techniques to its slaves.
-				<<if $corp.SpecTimer == 0>>
-					[[Basic Training|Manage Corporation][$corp.SpecSexEd = 1, $corp.SpecToken +=1, $corp.SpecTimer = 2]] | <<link "No Focus">><<run delete $corp.SpecSexEd>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<<elseif $corp.SpecSexEd == 0>>
-				The corporation teaches no sexual techniques to its slaves.
-				<<if $corp.SpecTimer == 0>>
-					[[Basic Training|Manage Corporation][$corp.SpecSexEd = 1, $corp.SpecToken -=1, $corp.SpecTimer = 2]] | <<link "No Focus">><<run delete $corp.SpecSexEd>><<set $corp.SpecToken += 1, $corp.SpecTimer = 2>><<goto "Manage Corporation">><</link>>
-				<</if>>
-			<</if>>
-		</div>
-	<</if>> /*End of activated specializations*/
-</p>
-<br><br>
-
-@@.orange;//Warning: Think TWICE before you click this!//@@
-<<link "Dissolve the corporation">>
-	<<set cashX(Math.min(corpSharePrice() * $personalShares / 1000, 1000000), "stocksTraded")>>
-	<<run App.Corporate.dissolve()>>
-	<<goto "Manage Corporation">>
-<</link>>
-@@.orange;//Warning!//@@
-
-<</if>> /*end of incorporated or not check*/
diff --git a/src/Mods/SecExp/attackHandler.tw b/src/Mods/SecExp/attackHandler.tw
index acb12f42d219be99dc32474fd55bfac75d6fd2d4..ec51f1ef8efb88e32de36169794d270b2f7a042b 100644
--- a/src/Mods/SecExp/attackHandler.tw
+++ b/src/Mods/SecExp/attackHandler.tw
@@ -460,243 +460,10 @@
 		<<set _tacChance += random(40) * 0.1>>
 	<</if>>
 	/* Terrain and Tactics */
-	<<if $SecExp.war.terrain == "urban">>
-		<<if $SecExp.war.chosenTactic == "Bait and Bleed">>
-			<<set _atkMod += 0.15>>
-			<<set _defMod += 0.10>>
-			<<set _tacChance += 0.25>>
-		<<elseif $SecExp.war.chosenTactic == "Guerrilla">>
-			<<set _atkMod += 0.10>>
-			<<set _defMod += 0.15>>
-			<<set _tacChance += 0.25>>
-		<<elseif $SecExp.war.chosenTactic == "Choke Points">>
-			<<set _atkMod += 0.10>>
-			<<set _defMod += 0.15>>
-			<<set _tacChance += 0.25>>
-		<<elseif $SecExp.war.chosenTactic == "Interior Lines">>
-			<<set _atkMod += 0.05>>
-			<<set _defMod += 0.10>>
-			<<set _tacChance += 0.15>>
-		<<elseif $SecExp.war.chosenTactic == "Pincer Maneuver">>
-			<<set _atkMod -= 0.05>>
-			<<set _defMod -= 0.10>>
-			<<set _tacChance -= 0.15>>
-		<<elseif $SecExp.war.chosenTactic == "Defense In Depth">>
-			<<set _atkMod -= 0.05>>
-			<<set _defMod -= 0.05>>
-			<<set _tacChance -= 0.10>>
-		<<elseif $SecExp.war.chosenTactic == "Blitzkrieg">>
-			<<set _atkMod -= 0.15>>
-			<<set _defMod -= 0.10>>
-			<<set _tacChance -= 0.25>>
-		<<elseif $SecExp.war.chosenTactic == "Human Wave">>
-			<<set _atkMod -= 0.15>>
-			<<set _defMod -= 0.15>>
-			<<set _tacChance -= 0.30>>
-		<</if>>
-	<<elseif $SecExp.war.terrain == "rural">>
-		<<if $SecExp.war.chosenTactic == "Bait and Bleed">>
-			<<set _atkMod -= 0.05>>
-			<<set _defMod -= 0.10>>
-			<<set _tacChance -= 0.15>>
-		<<elseif $SecExp.war.chosenTactic == "Guerrilla">>
-			<<set _atkMod -= 0.10>>
-			<<set _defMod -= 0.10>>
-			<<set _tacChance -= 0.20>>
-		<<elseif $SecExp.war.chosenTactic == "Choke Points">>
-			<<set _atkMod -= 0.10>>
-			<<set _defMod -= 0.15>>
-			<<set _tacChance -= 0.25>>
-		<<elseif $SecExp.war.chosenTactic == "Interior Lines">>
-			<<set _atkMod += 0.10>>
-			<<set _defMod += 0.15>>
-			<<set _tacChance += 0.25>>
-		<<elseif $SecExp.war.chosenTactic == "Pincer Maneuver">>
-			<<set _atkMod += 0.15>>
-			<<set _defMod += 0.10>>
-			<<set _tacChance += 0.25>>
-		<<elseif $SecExp.war.chosenTactic == "Defense In Depth">>
-			<<set _atkMod += 0.15>>
-			<<set _defMod += 0.15>>
-			<<set _tacChance += 0.30>>
-		<<elseif $SecExp.war.chosenTactic == "Blitzkrieg">>
-			<<set _atkMod += 0.15>>
-			<<set _defMod += 0.10>>
-			<<set _tacChance += 0.25>>
-		<<elseif $SecExp.war.chosenTactic == "Human Wave">>
-			<<set _atkMod += 0.20>>
-			<<set _defMod += 0.05>>
-			<<set _tacChance += 0.25>>
-		<</if>>
-	<<elseif $SecExp.war.terrain == "hills">>
-		<<if $SecExp.war.chosenTactic == "Bait and Bleed">>
-			<<set _atkMod += 0.05>>
-			<<set _defMod += 0.05>>
-			<<set _tacChance += 0.10>>
-		<<elseif $SecExp.war.chosenTactic == "Guerrilla">>
-			<<set _atkMod += 0.05>>
-			<<set _defMod += 0.10>>
-			<<set _tacChance += 0.15>>
-		<<elseif $SecExp.war.chosenTactic == "Choke Points">>
-			<<set _atkMod += 0.10>>
-			<<set _defMod += 0.10>>
-			<<set _tacChance += 0.20>>
-		<<elseif $SecExp.war.chosenTactic == "Interior Lines">>
-			<<set _atkMod -= 0.05>>
-			<<set _defMod -= 0.05>>
-			<<set _tacChance -= 0.10>>
-		<<elseif $SecExp.war.chosenTactic == "Pincer Maneuver">>
-			<<set _atkMod += 0.10>>
-			<<set _defMod += 0.05>>
-			<<set _tacChance += 0.15>>
-		<<elseif $SecExp.war.chosenTactic == "Defense In Depth">>
-			<<set _atkMod -= 0.10>>
-			<<set _defMod -= 0.05>>
-			<<set _tacChance -= 0.15>>
-		<<elseif $SecExp.war.chosenTactic == "Blitzkrieg">>
-			<<set _atkMod -= 0.10>>
-			<<set _defMod -= 0.15>>
-			<<set _tacChance += 0.25>>
-		<<elseif $SecExp.war.chosenTactic == "Human Wave">>
-			<<set _atkMod -= 0.15>>
-			<<set _defMod -= 0.15>>
-			<<set _tacChance -= 0.30>>
-		<</if>>
-	<<elseif $SecExp.war.terrain == "coast">>
-		<<if $SecExp.war.chosenTactic == "Bait and Bleed">>
-			<<set _atkMod -= 0.05>>
-			<<set _defMod -= 0.05>>
-			<<set _tacChance -= 0.10>>
-		<<elseif $SecExp.war.chosenTactic == "Guerrilla">>
-			<<set _atkMod += 0.05>>
-			<<set _defMod += 0.05>>
-			<<set _tacChance += 0.10>>
-		<<elseif $SecExp.war.chosenTactic == "Choke Points">>
-			<<set _atkMod += 0.05>>
-			<<set _defMod += 0.15>>
-			<<set _tacChance += 0.15>>
-		<<elseif $SecExp.war.chosenTactic == "Interior Lines">>
-			<<set _atkMod += 0.10>>
-			<<set _defMod += 0.10>>
-			<<set _tacChance += 0.20>>
-		<<elseif $SecExp.war.chosenTactic == "Pincer Maneuver">>
-			<<set _atkMod -= 0.10>>
-			<<set _defMod -= 0.10>>
-			<<set _tacChance -= 0.20>>
-		<<elseif $SecExp.war.chosenTactic == "Defense In Depth">>
-			<<set _atkMod += 0.10>>
-			<<set _defMod += 0.10>>
-			<<set _tacChance += 0.20>>
-		<<elseif $SecExp.war.chosenTactic == "Blitzkrieg">>
-			<<set _atkMod -= 0.05>>
-			<<set _defMod -= 0.05>>
-			<<set _tacChance -= 0.10>>
-		<<elseif $SecExp.war.chosenTactic == "Human Wave">>
-			<<set _atkMod += 0.05>>
-			<<set _defMod -= 0.05>>
-		<</if>>
-	<<elseif $SecExp.war.terrain == "outskirts">>
-		<<if $SecExp.war.chosenTactic == "Bait and Bleed">>
-			<<set _atkMod -= 0.10>>
-			<<set _defMod -= 0.15>>
-			<<set _tacChance -= 0.25>>
-		<<elseif $SecExp.war.chosenTactic == "Guerrilla">>
-			<<set _atkMod -= 0.10>>
-			<<set _defMod -= 0.05>>
-			<<set _tacChance -= 0.15>>
-		<<elseif $SecExp.war.chosenTactic == "Choke Points">>
-			<<set _atkMod += 0.10>>
-			<<set _defMod += 0.15>>
-			<<set _tacChance += 0.25>>
-		<<elseif $SecExp.war.chosenTactic == "Interior Lines">>
-			<<set _atkMod += 0.15>>
-			<<set _defMod += 0.10>>
-			<<set _tacChance += 0.25>>
-		<<elseif $SecExp.war.chosenTactic == "Pincer Maneuver">>
-			<<set _atkMod += 0.05>>
-			<<set _defMod += 0.10>>
-			<<set _tacChance += 0.15>>
-		<<elseif $SecExp.war.chosenTactic == "Defense In Depth">>
-			<<set _atkMod += 0.10>>
-			<<set _defMod += 0.15>>
-			<<set _tacChance += 0.25>>
-		<<elseif $SecExp.war.chosenTactic == "Blitzkrieg">>
-			<<set _atkMod += 0.10>>
-			<<set _defMod -= 0.05>>
-			<<set _tacChance += 0.05>>
-		<<elseif $SecExp.war.chosenTactic == "Human Wave">>
-			<<set _atkMod += 0.10>>
-			<<set _defMod -= 0.10>>
-		<</if>>
-	<<elseif $SecExp.war.terrain == "mountains">>
-		<<if $SecExp.war.chosenTactic == "Bait and Bleed">>
-			<<set _atkMod += 0.10>>
-			<<set _defMod += 0.15>>
-			<<set _tacChance += 0.25>>
-		<<elseif $SecExp.war.chosenTactic == "Guerrilla">>
-			<<set _atkMod += 0.10>>
-			<<set _defMod += 0.15>>
-			<<set _tacChance += 0.25>>
-		<<elseif $SecExp.war.chosenTactic == "Choke Points">>
-			<<set _atkMod += 0.05>>
-			<<set _defMod += 0.20>>
-			<<set _tacChance += 0.25>>
-		<<elseif $SecExp.war.chosenTactic == "Interior Lines">>
-			<<set _atkMod += 0.10>>
-			<<set _defMod += 0.10>>
-			<<set _tacChance += 0.20>>
-		<<elseif $SecExp.war.chosenTactic == "Pincer Maneuver">>
-			<<set _atkMod += 0.10>>
-			<<set _defMod -= 0.05>>
-			<<set _tacChance += 0.05>>
-		<<elseif $SecExp.war.chosenTactic == "Defense In Depth">>
-			<<set _atkMod += 0.10>>
-			<<set _defMod += 0.10>>
-			<<set _tacChance += 0.20>>
-		<<elseif $SecExp.war.chosenTactic == "Blitzkrieg">>
-			<<set _atkMod -= 0.10>>
-			<<set _defMod -= 0.10>>
-			<<set _tacChance -= 0.20>>
-		<<elseif $SecExp.war.chosenTactic == "Human Wave">>
-			<<set _atkMod -= 0.10>>
-			<<set _defMod -= 0.10>>
-			<<set _tacChance -= 0.20>>
-		<</if>>
-	<<elseif $SecExp.war.terrain == "wasteland">>
-		<<if $SecExp.war.chosenTactic == "Bait and Bleed">>
-			<<set _atkMod += 0.05>>
-			<<set _defMod += 0.05>>
-			<<set _tacChance += 0.10>>
-		<<elseif $SecExp.war.chosenTactic == "Guerrilla">>
-			<<set _atkMod += 0.10>>
-			<<set _defMod += 0.05>>
-			<<set _tacChance += 0.15>>
-		<<elseif $SecExp.war.chosenTactic == "Choke Points">>
-			<<set _atkMod -= 0.10>>
-			<<set _defMod += 0.05>>
-			<<set _tacChance -= 0.05>>
-		<<elseif $SecExp.war.chosenTactic == "Interior Lines">>
-			<<set _atkMod += 0.10>>
-			<<set _defMod += 0.15>>
-			<<set _tacChance += 0.25>>
-		<<elseif $SecExp.war.chosenTactic == "Pincer Maneuver">>
-			<<set _atkMod += 0.15>>
-			<<set _defMod += 0.10>>
-			<<set _tacChance += 0.25>>
-		<<elseif $SecExp.war.chosenTactic == "Defense In Depth">>
-			<<set _atkMod += 0.05>>
-			<<set _defMod += 0.10>>
-			<<set _tacChance += 0.15>>
-		<<elseif $SecExp.war.chosenTactic == "Blitzkrieg">>
-			<<set _atkMod += 0.15>>
-			<<set _defMod += 0.15>>
-			<<set _tacChance += 0.30>>
-		<<elseif $SecExp.war.chosenTactic == "Human Wave">>
-			<<set _atkMod += 0.20>>
-			<<set _defMod += 0.05>>
-			<<set _tacChance += 0.25>>
-		<</if>>
-	<</if>>
+	<<set _tacticsObj = App.Data.SecExp.TerrainAndTactics.get($SecExp.war.terrain)[$SecExp.war.chosenTactic]>>
+	<<set _atkMod += _tacticsObj.atkMod>>
+	<<set _defMod += _tacticsObj.defMod>>
+	<<set _tacChance += _tacticsObj.tacChance>>
 
 	<<if $SecExp.war.chosenTactic == "Bait and Bleed">>
 		<<if $SecExp.war.attacker.type == "raiders">>
diff --git a/src/Mods/SecExp/js/buildingsJS.js b/src/Mods/SecExp/js/buildingsJS.js
index 40727ca838161203a9d02c672950419759c05458..1db4424c933248b5bc8ff63d1e4c33bc19f2d488 100644
--- a/src/Mods/SecExp/js/buildingsJS.js
+++ b/src/Mods/SecExp/js/buildingsJS.js
@@ -252,7 +252,7 @@ App.SecExp.barracks = (function() {
 		if (V.SecExp.buildings.barracks) {
 			delete V.SecExp.buildings.barracks.active;
 		}
-		if (V.SecExp.buildings.barracks && Object.entries(V.SecExp.buildings.barracks === 0).length) {
+		if (V.SecExp.buildings.barracks && Object.entries(V.SecExp.buildings.barracks).length === 0) {
 			delete V.SecExp.buildings.barracks;
 		} else if (V.secBarracks || (V.SecExp.buildings.barracks && Object.entries(V.SecExp.buildings.barracks).length > 0)) {
 			V.SecExp.buildings.barracks = V.SecExp.buildings.barracks || V.secBarracksUpgrades || {};
diff --git a/src/Mods/SecExp/terrainAndTactics.js b/src/Mods/SecExp/terrainAndTactics.js
new file mode 100644
index 0000000000000000000000000000000000000000..90e11e86e12c3795e30804ee31afeb73ad2d6a72
--- /dev/null
+++ b/src/Mods/SecExp/terrainAndTactics.js
@@ -0,0 +1,351 @@
+globalThis.terrainAndTactics = function() {
+	const el = new DocumentFragment();
+	const table = App.UI.DOM.appendNewElement("table", el);
+	table.classList.add("facility-stats");
+	const header = table.createTHead();
+	let row = header.insertRow();
+	row.insertCell(); // top left corner should be empty
+
+	const tacticTotal = new Map();
+
+	// Column headers
+	for (const terrainType of Object.keys(App.Data.SecExp.TerrainAndTactics.get("urban"))) {
+		const cell = row.insertCell();
+		cell.innerHTML = terrainType;
+	}
+
+	// Column summarizing which terrains are the easiest.
+	const cell = row.insertCell();
+	cell.innerHTML = "Ease";
+
+	for (const [terrainType, tactics] of App.Data.SecExp.TerrainAndTactics) {
+		const row = table.insertRow();
+
+		// First cell describes terrain
+		const cell = row.insertCell();
+		cell.innerHTML = capFirstChar(terrainType);
+
+		let terrainDifficulty = 0;
+		for (const tactic in tactics) {
+			let mods = 0;
+			for (const mod in tactics[tactic]) {
+				mods += tactics[tactic][mod];
+			}
+			terrainDifficulty += mods;
+			tacticTotal.set(tactic, tacticTotal.get(tactic) + mods || mods);
+			const color = (mods > 0) ? "green" : "red";
+			App.UI.DOM.appendNewElement("td", row, stringy(mods), color);
+		}
+
+		// Ease column entry
+		App.UI.DOM.appendNewElement("td", row, stringy(terrainDifficulty));
+	}
+
+	// Row summarizing average of each tactic.
+	row = table.insertRow();
+	App.UI.DOM.appendNewElement("td", row, "Strength");
+	console.log(tacticTotal);
+	for (const value of tacticTotal.values()) {
+		App.UI.DOM.appendNewElement("td", row, stringy(value));
+	}
+	return el;
+
+	function stringy(num) {
+		return String(Math.trunc(100*num)/10);
+	}
+};
+
+App.Data.SecExp.TerrainAndTactics = new Map([
+	["urban", {
+		"Bait and Bleed": {
+			atkMod: 0.15,
+			defMod: 0.10,
+			tacChance: 0.25,
+		},
+		"Guerrilla": {
+			atkMod: 0.10,
+			defMod: 0.15,
+			tacChance: 0.25,
+		},
+		"Choke Points": {
+			atkMod: 0.10,
+			defMod: 0.15,
+			tacChance: 0.25,
+		},
+		"Interior Lines": {
+			atkMod: 0.05,
+			defMod: 0.10,
+			tacChance: 0.15,
+		},
+		"Pincer Maneuver": {
+			atkMod: -0.05,
+			defMod: -0.10,
+			tacChance: -0.15,
+		},
+		"Defense In Depth": {
+			atkMod: -0.05,
+			defMod: -0.05,
+			tacChance: -0.10,
+		},
+		"Blitzkrieg": {
+			atkMod: -0.15,
+			defMod: -0.10,
+			tacChance: -0.25,
+		},
+		"Human Wave": {
+			atkMod: -0.15,
+			defMod: -0.15,
+			tacChance: -0.30,
+		},
+	}],
+	["rural", {
+		"Bait and Bleed": {
+			atkMod: -0.05,
+			defMod: -0.10,
+			tacChance: -0.15,
+		},
+		"Guerrilla": {
+			atkMod: -0.10,
+			defMod: -0.10,
+			tacChance: -0.20,
+		},
+		"Choke Points": {
+			atkMod: -0.10,
+			defMod: -0.15,
+			tacChance: -0.25,
+		},
+		"Interior Lines": {
+			atkMod: 0.10,
+			defMod: 0.15,
+			tacChance: 0.25,
+		},
+		"Pincer Maneuver": {
+			atkMod: 0.15,
+			defMod: 0.10,
+			tacChance: 0.25,
+		},
+		"Defense In Depth": {
+			atkMod: 0.15,
+			defMod: 0.15,
+			tacChance: 0.30,
+		},
+		"Blitzkrieg": {
+			atkMod: 0.15,
+			defMod: 0.10,
+			tacChance: 0.25,
+		},
+		"Human Wave": {
+			atkMod: 0.20,
+			defMod: 0.05,
+			tacChance: 0.25,
+		},
+	}],
+	["hills", {
+		"Bait and Bleed": {
+			atkMod: 0.05,
+			defMod: 0.05,
+			tacChance: 0.10,
+		},
+		"Guerrilla": {
+			atkMod: 0.05,
+			defMod: 0.10,
+			tacChance: 0.15,
+		},
+		"Choke Points": {
+			atkMod: 0.10,
+			defMod: 0.10,
+			tacChance: 0.20,
+		},
+		"Interior Lines": {
+			atkMod: -0.05,
+			defMod: -0.05,
+			tacChance: -0.10,
+		},
+		"Pincer Maneuver": {
+			atkMod: 0.10,
+			defMod: 0.05,
+			tacChance: 0.15,
+		},
+		"Defense In Depth": {
+			atkMod: -0.10,
+			defMod: -0.05,
+			tacChance: -0.15,
+		},
+		"Blitzkrieg": {
+			atkMod: -0.10,
+			defMod: -0.15,
+			tacChance: 0.25,
+		},
+		"Human Wave": {
+			atkMod: -0.15,
+			defMod: -0.15,
+			tacChance: -0.30,
+		},
+	}],
+	["coast", {
+		"Bait and Bleed": {
+			atkMod: -0.05,
+			defMod: -0.05,
+			tacChance: -0.10,
+		},
+		"Guerrilla": {
+			atkMod: 0.05,
+			defMod: 0.05,
+			tacChance: 0.10,
+		},
+		"Choke Points": {
+			atkMod: 0.05,
+			defMod: 0.15,
+			tacChance: 0.15,
+		},
+		"Interior Lines": {
+			atkMod: 0.10,
+			defMod: 0.10,
+			tacChance: 0.20,
+		},
+		"Pincer Maneuver": {
+			atkMod: -0.10,
+			defMod: -0.10,
+			tacChance: -0.20,
+		},
+		"Defense In Depth": {
+			atkMod: 0.10,
+			defMod: 0.10,
+			tacChance: 0.20,
+		},
+		"Blitzkrieg": {
+			atkMod: -0.05,
+			defMod: -0.05,
+			tacChance: -0.10,
+		},
+		"Human Wave": {
+			atkMod: 0.05,
+			defMod: -0.05,
+		},
+	}],
+	["outskirts", {
+		"Bait and Bleed": {
+			atkMod: -0.10,
+			defMod: -0.15,
+			tacChance: -0.25,
+		},
+		"Guerrilla": {
+			atkMod: -0.10,
+			defMod: -0.05,
+			tacChance: -0.15,
+		},
+		"Choke Points": {
+			atkMod: 0.10,
+			defMod: 0.15,
+			tacChance: 0.25,
+		},
+		"Interior Lines": {
+			atkMod: 0.15,
+			defMod: 0.10,
+			tacChance: 0.25,
+		},
+		"Pincer Maneuver": {
+			atkMod: 0.05,
+			defMod: 0.10,
+			tacChance: 0.15,
+		},
+		"Defense In Depth": {
+			atkMod: 0.10,
+			defMod: 0.15,
+			tacChance: 0.25,
+		},
+		"Blitzkrieg": {
+			atkMod: 0.10,
+			defMod: -0.05,
+			tacChance: 0.05,
+		},
+		"Human Wave": {
+			atkMod: 0.10,
+			defMod: -0.10,
+		},
+	}],
+	["mountains", {
+		"Bait and Bleed": {
+			atkMod: 0.10,
+			defMod: 0.15,
+			tacChance: 0.25,
+		},
+		"Guerrilla": {
+			atkMod: 0.10,
+			defMod: 0.15,
+			tacChance: 0.25,
+		},
+		"Choke Points": {
+			atkMod: 0.05,
+			defMod: 0.20,
+			tacChance: 0.25,
+		},
+		"Interior Lines": {
+			atkMod: 0.10,
+			defMod: 0.10,
+			tacChance: 0.20,
+		},
+		"Pincer Maneuver": {
+			atkMod: 0.10,
+			defMod: -0.05,
+			tacChance: 0.05,
+		},
+		"Defense In Depth": {
+			atkMod: 0.10,
+			defMod: 0.10,
+			tacChance: 0.20,
+		},
+		"Blitzkrieg": {
+			atkMod: -0.10,
+			defMod: -0.10,
+			tacChance: -0.20,
+		},
+		"Human Wave": {
+			atkMod: -0.10,
+			defMod: -0.10,
+			tacChance: -0.20,
+		},
+	}],
+	["wasteland", {
+		"Bait and Bleed": {
+			atkMod: 0.05,
+			defMod: 0.05,
+			tacChance: 0.10,
+		},
+		"Guerrilla": {
+			atkMod: 0.10,
+			defMod: 0.05,
+			tacChance: 0.15,
+		},
+		"Choke Points": {
+			atkMod: -0.10,
+			defMod: 0.05,
+			tacChance: -0.05,
+		},
+		"Interior Lines": {
+			atkMod: 0.10,
+			defMod: 0.15,
+			tacChance: 0.25,
+		},
+		"Pincer Maneuver": {
+			atkMod: 0.15,
+			defMod: 0.10,
+			tacChance: 0.25,
+		},
+		"Defense In Depth": {
+			atkMod: 0.05,
+			defMod: 0.10,
+			tacChance: 0.15,
+		},
+		"Blitzkrieg": {
+			atkMod: 0.15,
+			defMod: 0.15,
+			tacChance: 0.30,
+		},
+		"Human Wave": {
+			atkMod: 0.20,
+			defMod: 0.05,
+			tacChance: 0.25,
+		},
+	}],
+]);
diff --git a/src/cheats/cheatEditSlave.js b/src/cheats/cheatEditSlave.js
index e1fc813eadc69b3f13c4116c0fdc2cc862d29ee5..39835b4cb3096d7791a83bcfde0a3ca1e76eb5bb 100644
--- a/src/cheats/cheatEditSlave.js
+++ b/src/cheats/cheatEditSlave.js
@@ -17,7 +17,7 @@ App.UI.SlaveInteract.cheatEditSlave = function(slave) {
 	if (V.tempSlave.womb.length > 0) {
 		tabBar.addTab("Womb", "womb", analyzePregnancies(V.tempSlave, true));
 	}
-	tabBar.addTab("Genetic quirks", "quirks", App.UI.SlaveInteract.geneticQuirks(V.tempSlave, true));
+	tabBar.addTab("Genes", "genes", genes());
 	tabBar.addTab("Mental", "mental", App.StartingGirls.mental(V.tempSlave, true));
 	tabBar.addTab("Skills", "skills", App.StartingGirls.skills(V.tempSlave, true));
 	tabBar.addTab("Stats", "stats", App.StartingGirls.stats(V.tempSlave, true));
@@ -33,6 +33,15 @@ App.UI.SlaveInteract.cheatEditSlave = function(slave) {
 
 	return el;
 
+	function genes() {
+		const el = new DocumentFragment();
+		App.UI.DOM.appendNewElement("h2", el, "Genetic mods");
+		el.append(App.UI.SlaveInteract.geneticMods(V.tempSlave, true));
+		App.UI.DOM.appendNewElement("h2", el, "Genetic quirks");
+		el.append(App.UI.SlaveInteract.geneticQuirks(V.tempSlave, true));
+		return el;
+	}
+
 	function finalize() {
 		const el = new DocumentFragment();
 		App.UI.DOM.appendNewElement("div", el, App.UI.DOM.link(
@@ -43,10 +52,11 @@ App.UI.SlaveInteract.cheatEditSlave = function(slave) {
 			[],
 			"Slave Interact"
 		));
+		showChanges(V.tempSlave, getSlave(V.AS));
 		App.UI.DOM.appendNewElement("div", el, App.UI.DOM.link(
 			"Apply cheat edits",
 			() => {
-				App.StartingGirls.cleanup(V.tempSlave);
+				SlaveDatatypeCleanup(V.tempSlave);
 				V.slaves[V.slaveIndices[slave.ID]] = V.tempSlave;
 				ibc.recalculate_coeff_id(slave.ID);
 				delete V.tempSlave;
@@ -55,6 +65,31 @@ App.UI.SlaveInteract.cheatEditSlave = function(slave) {
 			"Cheat Edit JS Apply"
 		));
 		return el;
+		/**
+		 * Compares two slaves and makes a div for each difference
+		 * @param {Object} edited
+		 * @param {Object} original
+		 */
+		function showChanges(edited, original){
+			const isObj = (o) => (typeof o === "object" && o !== null);
+			for (const key in edited) {
+				const value = edited[key];
+				const originalValue = original[key];
+				if (isObj(value) && isObj(originalValue)) {
+					showChanges(value, originalValue);
+				} else if (
+					(value instanceof Set && originalValue instanceof Set) ||
+					(value instanceof Map && originalValue instanceof Map)
+				) {
+					showChanges(edited.get(key), original.get(key));
+				} else if (value !== originalValue){
+					const div = App.UI.DOM.appendNewElement("div", el);
+					const span = App.UI.DOM.appendNewElement("span", div, key);
+					span.style.fontFamily = "monospace";
+					div.append(` changed from ${originalValue} to ${value}`);
+				}
+			}
+		}
 	}
 
 	function extreme() {
diff --git a/src/data/backwardsCompatibility/backwardsCompatibility.js b/src/data/backwardsCompatibility/backwardsCompatibility.js
index 5c5a330af32ad4471ae2b941535e25744c64edbc..a202550464b45fb8c33116926dcff1511fd35754 100644
--- a/src/data/backwardsCompatibility/backwardsCompatibility.js
+++ b/src/data/backwardsCompatibility/backwardsCompatibility.js
@@ -1244,7 +1244,6 @@ App.Update.globalVariables = function(node) {
 	}
 
 	// eventResults
-	V.eventResults.shoot = V.eventResults.shoot || V.PShoot || 0;
 	V.eventResults.snatch = V.eventResults.snatch || V.PSnatch || 0;
 	V.eventResults.raid = V.eventResults.raid || V.PRaid || 0;
 	V.eventResults.raidTarget = V.eventResults.raidTarget || V.PRaidTarget || 0;
@@ -1307,6 +1306,7 @@ App.Update.globalVariables = function(node) {
 	V.building.findCells(cell => cell instanceof App.Arcology.Cell.Shop && cell.type === "Neo Imperialist").forEach(cell => cell.type = "Neo-Imperialist");
 
 	V.experimental.raGrowthExpr = V.experimental.raGrowthExpr || 0;
+	V.experimental.reportMissingClothing = V.experimental.reportMissingClothing || 0;
 
 	node.append(`Done!`);
 };
diff --git a/src/data/backwardsCompatibility/datatypeCleanup.js b/src/data/backwardsCompatibility/datatypeCleanup.js
index 00f4ae4469da5b349f7ad30db296f2a8649cbc04..4fe8e5fb2bcecf94b96e6b2045f63507dcc9eaf1 100644
--- a/src/data/backwardsCompatibility/datatypeCleanup.js
+++ b/src/data/backwardsCompatibility/datatypeCleanup.js
@@ -490,6 +490,9 @@ globalThis.SlaveDatatypeCleanup = (function SlaveDatatypeCleanup() {
 	 * @param {App.Entity.SlaveState} slave
 	 */
 	function slaveAgeDatatypeCleanup(slave) {
+		if (slave.birthWeek > 51) {
+			slave.birthWeek = slave.birthWeek % 52;
+		}
 		slave.birthWeek = Math.clamp(+slave.birthWeek, 0, 51) || 0;
 		if (slave.age > 0) {
 			slave.actualAge = Math.clamp(+slave.actualAge, V.minimumSlaveAge, Infinity) || slave.age; /* if undefined, this sets to slave.age */
@@ -611,7 +614,7 @@ globalThis.SlaveDatatypeCleanup = (function SlaveDatatypeCleanup() {
 		if (typeof slave.boobShape !== "string") {
 			slave.boobShape = "normal";
 		}
-		if (slave.boobShape === "spherical" && slave.boobsImplants === 0) {
+		if (slave.boobShape === "spherical" && slave.boobsImplant === 0) {
 			slave.boobShape = "normal";
 		}
 		if (typeof slave.nipples !== "string") {
@@ -755,7 +758,7 @@ globalThis.SlaveDatatypeCleanup = (function SlaveDatatypeCleanup() {
 		slave.faceImplant = Math.clamp(+slave.faceImplant, 0, 100) || 0;
 		slave.lipsImplant = Math.clamp(+slave.lipsImplant, 0, 100) || 0;
 		slave.voiceImplant = Math.clamp(+slave.voiceImplant, -1, 1) || 0;
-		slave.boobsImplant = Math.max(+slave.boobsImplant, 0) || 0;
+		slave.boobsImplant = Math.clamp(+slave.boobsImplant, 0, slave.boobs) || 0;
 		if (slave.boobsImplant === 0) {
 			slave.boobsImplantType = "none";
 		} else if (slave.boobsImplant > 0 && slave.boobsImplantType === "none") {
@@ -770,7 +773,7 @@ globalThis.SlaveDatatypeCleanup = (function SlaveDatatypeCleanup() {
 			}
 		}
 		slave.breastMesh = Math.clamp(+slave.breastMesh, 0, 1) || 0;
-		slave.buttImplant = Math.clamp(+slave.buttImplant, 0, 20) || 0;
+		slave.buttImplant = Math.clamp(+slave.buttImplant, 0, Math.min(slave.butt, 20)) || 0;
 		if (typeof slave.buttImplantType !== "string") {
 			if (slave.buttImplant === 0) {
 				slave.buttImplantType = "none";
@@ -780,8 +783,8 @@ globalThis.SlaveDatatypeCleanup = (function SlaveDatatypeCleanup() {
 		}
 		slave.heightImplant = Math.clamp(+slave.heightImplant, -10, 10) || 0;
 		slave.earImplant = Math.clamp(+slave.earImplant, 0, 1) || 0;
-		slave.shouldersImplant = Math.clamp(+slave.shouldersImplant, -1, 1) || 0;
-		slave.hipsImplant = Math.clamp(+slave.hipsImplant, -1, 1) || 0;
+		slave.shouldersImplant = Math.clamp(+slave.shouldersImplant, -10, 10) || 0;
+		slave.hipsImplant = Math.clamp(+slave.hipsImplant, -10, 10) || 0;
 	}
 
 	/**
@@ -1040,6 +1043,7 @@ globalThis.SlaveDatatypeCleanup = (function SlaveDatatypeCleanup() {
 		slave.counter.PCChildrenFathered = Math.max(+slave.counter.PCChildrenFathered, 0) || 0;
 		slave.counter.slavesKnockedUp = Math.max(+slave.counter.slavesKnockedUp, 0) || 0;
 		slave.counter.PCKnockedUp = Math.max(+slave.counter.PCKnockedUp, 0) || 0;
+		slave.counter.bestiality = Math.max(+slave.counter.bestiality, 0) || 0;
 		slave.bodySwap = Math.max(+slave.bodySwap, 0) || 0;
 	}
 
@@ -1108,6 +1112,8 @@ globalThis.SlaveDatatypeCleanup = (function SlaveDatatypeCleanup() {
 	 * @param {App.Entity.SlaveState} slave
 	 */
 	function slaveMiscellaneousDatatypeCleanup(slave) {
+		slave.slaveName = slave.slaveName || "Nameless";
+		slave.slaveSurname = slave.slaveSurname || 0;
 		slave.weekAcquired = Math.max(+slave.weekAcquired, 0) || 0;
 		slave.newGamePlus = Math.clamp(+slave.newGamePlus, 0, 1) || 0;
 		slave.prestige = Math.clamp(+slave.prestige, 0, 3) || 0;
diff --git a/src/data/backwardsCompatibility/updateSlaveObject.js b/src/data/backwardsCompatibility/updateSlaveObject.js
index ed13a9d60e0d54a08a52ec5960cdc7a03c40616c..ff853013fface37ab3640e001fb4f91af7e714d8 100644
--- a/src/data/backwardsCompatibility/updateSlaveObject.js
+++ b/src/data/backwardsCompatibility/updateSlaveObject.js
@@ -1,7 +1,7 @@
 App.Update.Slave = function(slave, genepool = false) {
 	const quirks = {};
-	App.Data.genes.forEach((value, q) => quirks[q] = 0);
-	slave.geneticQuirks = Object.assign(quirks, slave.geneticQuirks);
+	App.Data.geneticQuirks.forEach((value, q) => quirks[q] = 0);
+	slave.geneticQuirks = Object.assign(clone(quirks), slave.geneticQuirks);
 
 	if (slave.earShape === undefined) { slave.earShape = "normal"; }
 	if (slave.earT === undefined) { slave.earT = "none"; }
@@ -1038,6 +1038,6 @@ App.Update.Slave = function(slave, genepool = false) {
 		});
 	}
 	slave.womb.forEach(f => {
-		f.genetics.geneticQuirks = Object.assign(quirks, f.genetics.geneticQuirks);
+		f.genetics.geneticQuirks = Object.assign(clone(quirks), f.genetics.geneticQuirks);
 	});
 };
diff --git a/src/endWeek/economics/personalNotes.js b/src/endWeek/economics/personalNotes.js
index 01504987396ffa0656f4262ef3c84250186a3704..29fb7b15138f8823b70546ff55bc962c641cdbba 100644
--- a/src/endWeek/economics/personalNotes.js
+++ b/src/endWeek/economics/personalNotes.js
@@ -35,10 +35,10 @@ App.EndWeek.personalNotes = function() {
 				r.push(`Whenever you have a free moment and a chest swollen with milk, you spend your time attached to the nearest milker. As a result, you produce ${milk} liters of sellable milk over the week.`);
 				if (V.arcologies[0].FSPastoralist !== "unset") {
 					if (V.arcologies[0].FSPastoralistLaw === 1) {
-						milkSale = milk * (28 + Math.trunc(V.arcologies[0].FSPastoralist / 30));
+						milkSale = Math.round(milk * ((28 * (V.rep/1000)) + Math.trunc(V.arcologies[0].FSPastoralist / 30)));
 						r.push(`Since breast milk is ${V.arcologies[0].name}'s only legal dairy product, and yours is in a class all of its own, society can't get enough of it and you make <span class="yellowgreen">${cashFormat(milkSale)}.</span>`);
 					} else {
-						milkSale = milk * (12 + Math.trunc(V.arcologies[0].FSPastoralist / 30));
+						milkSale = Math.round(milk * ((12 * (V.rep/1000)) + Math.trunc(V.arcologies[0].FSPastoralist / 30)));
 						r.push(`Since milk is fast becoming a major part of the ${V.arcologies[0].name}'s dietary culture, and yours is in a class all of its own, you make <span class="yellowgreen">${cashFormat(milkSale)}.</span>`);
 					}
 				} else {
diff --git a/src/endWeek/nextWeek/nextWeek.js b/src/endWeek/nextWeek/nextWeek.js
index 6c56f31700258c2646d3bcf770ce655da07e5a69..a9926dd3060bea79f6ed066009f08a6f5e15228f 100644
--- a/src/endWeek/nextWeek/nextWeek.js
+++ b/src/endWeek/nextWeek/nextWeek.js
@@ -291,6 +291,12 @@ App.EndWeek.nextWeek = function() {
 		V.playerSurgery--;
 	}
 
+	// advance the event queue
+	if (V.eventQueue[0] && V.eventQueue[0].length > 0) {
+		console.log("These events were queued for this week, but got skipped: ", V.eventQueue[0]);
+	}
+	V.eventQueue.shift();
+
 	if (V.secExpEnabled > 0) {
 		V.foughtThisWeek = 0;
 		if (V.SecExp.buildings.riotCenter) {
diff --git a/src/endWeek/nextWeek/resetGlobals.js b/src/endWeek/nextWeek/resetGlobals.js
index eaf91db35d2bbf0a3eee57b3f0a3b3bc60da7273..9674eefe92fffd6e5bb1528a070271c1587f4fee 100644
--- a/src/endWeek/nextWeek/resetGlobals.js
+++ b/src/endWeek/nextWeek/resetGlobals.js
@@ -12,14 +12,6 @@ App.EndWeek.resetGlobals = function() {
 	V.devDaughter = -1;
 	V.youngerSister = -1;
 	V.olderSister = -1;
-	V.boobsID = -1;
-	V.boobsInterestTargetID = -1;
-	V.buttslutID = -1;
-	V.buttslutInterestTargetID = -1;
-	V.cumslutID = -1;
-	V.cumslutInterestTargetID = -1;
-	V.humiliationID = -1;
-	V.humiliationInterestTargetID = -1;
 
 	// Other arrays
 	V.events = [];
diff --git a/src/endWeek/reports/penthouseReport.js b/src/endWeek/reports/penthouseReport.js
index 3ec5b780a6660ff6d47ec4d98ccc37561fe488d7..3a7628e1c40eac3ade508aacab7465055a4f7f0a 100644
--- a/src/endWeek/reports/penthouseReport.js
+++ b/src/endWeek/reports/penthouseReport.js
@@ -663,9 +663,18 @@ App.EndWeek.penthouseReport = function() {
 						continue;
 					}
 
-					if (V.headGirlTrainsFlaws || V.headGirlSoftensFlaws) {
+					if (V.headGirlTrainsFlaws || V.headGirlSoftensFlaws || V.headGirlOverridesQuirks) {
 						if (slave.behavioralFlaw !== "none" || (slave.sexualFlaw !== "none" && !hasParaphilia)) {
-							if (V.headGirlSoftensFlaws) {
+							if (V.headGirlOverridesQuirks) {
+								if (slave.devotion > 20) {
+									if ((slave.behavioralFlaw !== "none") || (slave.sexualFlaw !== "none" && !hasParaphilia)) {
+										HGPossibleSlaves[3].push({ID: slave.ID, training: "soften"});
+									} else {
+										HGPossibleSlaves[3].push({ID: slave.ID, training: "flaw"});
+									}
+									continue;
+								}
+							} else if (V.headGirlSoftensFlaws) {
 								if (slave.devotion > 20) {
 									if ((slave.behavioralFlaw !== "none" && slave.behavioralQuirk === "none") || (slave.sexualFlaw !== "none" && slave.sexualQuirk === "none" && !hasParaphilia)) {
 										HGPossibleSlaves[3].push({ID: slave.ID, training: "soften"});
diff --git a/src/events/RE/reShelterInspection.js b/src/events/RE/reShelterInspection.js
index 3aec10b7da3b68ae5965341224c3e8716ff8d078..5931bcc201462d1fc0f3957139d6827b7f0475f4 100644
--- a/src/events/RE/reShelterInspection.js
+++ b/src/events/RE/reShelterInspection.js
@@ -190,7 +190,7 @@ App.Events.REShelterInspection  = class REShelterInspection extends App.Events.B
 			if (V.dairyPregSetting > 1) {
 				r.push(`${He2} sees ${his2} vagina drooling as it's fucked in preparation for pregnancy.`);
 			}
-			if (V.dairyStimulatorsSettingChanged > 1) {
+			if (V.dairyStimulatorsSetting > 0) {
 				r.push(`${He2} sees a massive piston moving slowly back and forth beneath ${his2} buttocks, and understands what the ache of impossible fullness in ${his2} bottom is.`);
 			}
 			r.push(`${His2} hands ball into fists.`);
diff --git a/src/events/REFI/reBoobslut.js b/src/events/REFI/reBoobslut.js
new file mode 100644
index 0000000000000000000000000000000000000000..e755279a75920432ab7eec73b1c2a6eeded9be19
--- /dev/null
+++ b/src/events/REFI/reBoobslut.js
@@ -0,0 +1,274 @@
+
+App.Events.REFIBoobslut = class REFIBoobslut extends App.Events.BaseEvent {
+	eventPrerequisites() {
+		return [];
+	}
+
+	actorPrerequisites() {
+		return [
+			[ // event slave /InterestTargetID
+				isSlaveAvailable,
+				s => (s.fetish === "none" || s.fetishStrength <= 60),
+				s => (canSee(s) || canHear(s)),
+				s => s.rules.speech !== "restrictive",
+			],
+			[ // and subslave /subID
+				s => App.Events.qualifiesForREFIsubSlave(s, "boobs"),
+				s => s.lactation > 0
+			]
+		];
+	}
+
+	execute(node) {
+		/** @type {Array<App.Entity.SlaveState>} */
+		let [eventSlave, subSlave] = this.actors.map(a => getSlave(a));
+		const {He, he, his, him, himself} = getPronouns(eventSlave);
+		const {he2, his2} = getPronouns(subSlave).appendSuffix("2");
+		const {say} = getEnunciation(eventSlave);
+
+		V.nextLink = "Next Week";
+
+		App.Events.drawEventArt(node, [eventSlave, subSlave], [eventSlave.clothes, "no clothing"]);
+
+		if (subSlave.lactation > 0) {
+			subSlave.lactationDuration = 2;
+			subSlave.boobs -= subSlave.boobsMilk;
+			subSlave.boobsMilk = 0;
+		} else {
+			induceLactation(subSlave, 4);
+		}
+
+		let t = [];
+
+		t.push(`On lunch duty today is`);
+		t.push(App.UI.DOM.combineNodes(contextualIntro(V.PC, subSlave, "DOM"), "."));
+		t.push(`That means that as you eat your working lunch, ${he2} sits on the edge of your desk right next to you, so that`);
+		if (subSlave.belly >= 100000) {
+			t.push(`a nipple is`);
+		} else {
+			t.push(`${his2} nipples are`);
+		}
+		t.push(`conveniently at mouth height. Whenever you feel thirsty, you lean`);
+		if (subSlave.nipples === "partially inverted" || subSlave.nipples === "inverted") {
+			t.push(`over, pop one out,`);
+		} else if (subSlave.nipples === "fuckable") {
+			t.push(`over, slip your tongue deep inside,`);
+		} else {
+			t.push("over,");
+		}
+		t.push(`take some of ${his2} creamy, slightly vanilla-toned milk straight from the source. Every time you do, ${he2} shudders convulsively,`);
+		if (canTalk(subSlave)) {
+			t.push(`giving little mewling whimpers.`);
+		} else {
+			if (subSlave.accent >= 3) {
+				t.push(`giving little mewling whimpers.`);
+			} else if (subSlave.voice === 0) {
+				t.push(`making the harsh gasping noises that are all ${he2} can manage, as a mute.`);
+			} else {
+				t.push(`giving small moans through ${his2} obstructed mouth.`);
+			}
+		}
+		t.push(`Though you never touch anything but ${his2} nipples, ${he2} climaxes twice. After you finish and ${he2} leaves, you notice`);
+		t.push(contextualIntro(V.PC, eventSlave, "DOM"), `at the door to your office. You call ${him} in.`);
+		App.Events.addParagraph(node, t);
+		t = [];
+
+		t.push(`${eventSlave.slaveName} hesitates before explaining ${himself}, and the ${SlaveTitle(eventSlave)} is obviously aroused:`);
+		if ((eventSlave.dick > 0) && (eventSlave.chastityPenis === 1)) {
+			t.push(`${he}'s got a string of precum leaking out of ${his} chastity cage.`);
+		} else if ((eventSlave.dick > 0) && (eventSlave.hormoneBalance >= 100)) {
+			t.push(`though ${his} hormone-filled body can't get ${his} dick hard any more, ${he}'s got a string of precum coming off ${his} member.`);
+		} else if (eventSlave.dick > 0 && eventSlave.balls > 0 && eventSlave.ballType === "sterile") {
+			t.push(`though ${his} useless balls can't muster the effort to get ${his} dick hard any more, ${he}'s got a string of precum coming off ${his} limp member.`);
+		} else if ((eventSlave.dick > 0) && (eventSlave.balls === 0)) {
+			t.push(`though ${his} gelded body can't get ${his} dick hard any more, ${he}'s got a string of precum coming off ${his} limp member.`);
+		} else if (canAchieveErection(eventSlave)) {
+			if (eventSlave.dick > 4) {
+				t.push(`${his} gigantic cock is standing out like a mast.`);
+			} else if (eventSlave.dick > 2) {
+				t.push(`${he}'s sporting an impressive erection.`);
+			} else if (eventSlave.dick > 0) {
+				t.push(`${his} little penis is rock hard.`);
+			}
+		} else if (eventSlave.dick > 7) {
+			t.push(`${he}'s got a string of precum coming off ${his} engorged member.`);
+		} else if (eventSlave.dick > 0) {
+			t.push(`${he}'s got a string of precum coming off ${his} limp member.`);
+		} else if (eventSlave.clit > 0) {
+			t.push(`${his} large clit is visibly engorged.`);
+		} else if (eventSlave.vagina > -1) {
+			if (eventSlave.nipples !== "fuckable") {
+				t.push(`${his} nipples are hard and`);
+			}
+			t.push(`there's a sheen on ${his} pussylips.`);
+		} else if (eventSlave.balls > 0) {
+			if (eventSlave.nipples !== "fuckable") {
+				t.push(`${his} nipples are hard and`);
+			}
+			t.push(`there is a distinct dribble of precum running from ${his} featureless crotch.`);
+		} else {
+			if (eventSlave.nipples !== "fuckable") {
+				t.push(`${his} nipples are hard and`);
+			}
+			t.push(`there is a clear scent of lust around ${him}.`);
+		}
+		t.push(`It seems ${he} passed by while you were drinking from`, contextualIntro(eventSlave, subSlave), `and found the`);
+		if (canSee(eventSlave)) {
+			t.push(`sight`);
+		} else {
+			t.push(`sounds`);
+		}
+		t.push(`rather compelling. It should be possible to either encourage this fascination or steer ${him} away from it for now.`);
+
+		App.Events.addParagraph(node, t);
+		App.Events.addResponses(node, [
+			new App.Events.Result(`Turn ${him} into another breast fetishist`, turn),
+			new App.Events.Result(`Steer ${him} away from breast obsession for the moment`, steer),
+		]);
+
+		function turn() {
+			t = [];
+
+			if (!canTalk(eventSlave)) {
+				if (eventSlave.accent >= 3) {
+					if (!hasAnyArms(eventSlave)) {
+						t.push(`Since ${he} isn't conversant in ${V.language} and lacks the hands to gesture, ${he}'s forced to push out ${his} chest and wiggle to try to communicate that ${he} would like to experience a nipple orgasm, too.`);
+					} else {
+						t.push(`Since ${he} isn't conversant in ${V.language}, ${he}'s forced to use some delightfully lewd gestures at ${his} own boobs to communicate that ${he} would like to experience a nipple orgasm, too.`);
+					}
+				} else if (eventSlave.voice === 0) {
+					if (!hasAnyArms(eventSlave)) {
+						t.push(`${He}'s mute and has no hands, so it takes a long, frustrating time for ${him} to communicate that ${he} would like to experience a nipple orgasm, too.`);
+					} else {
+						t.push(`${He}'s mute, so ${he} uses gestures to ask you for a nipple orgasm, too.`);
+					}
+				} else {
+					t.push(`${He} can't form`);
+					if (!hasAnyArms(eventSlave)) {
+						t.push(`words and has no hands, so it takes a long, frustrating time for ${him} to communicate that ${he} would like to experience a nipple orgasm, too.`);
+					} else {
+						t.push(`words, so ${he} uses gestures to ask you for a nipple orgasm, too.`);
+					}
+				}
+			} else {
+				if (eventSlave.lips > 70) {
+					t.push(`${He} ${say}s through ${his} massive dick-sucking lips,`);
+				} else if (eventSlave.lipsPiercing + eventSlave.tonguePiercing > 2) {
+					t.push(`${He} ${say}s through ${his} big oral piercings,`);
+				} else {
+					t.push(`${He} ${say}s,`);
+				}
+				t.push(Spoken(eventSlave, `"${getWrittenTitle(eventSlave)}, may I have a nipple orgasm, too?"`));
+			}
+			t.push(`You make ${him} state it more explicitly, so ${he} tries again:`);
+			if (!hasAnyArms(eventSlave) && !canTalk(eventSlave)) {
+				t.push(`${he} sticks ${his} chest out as far as it will go, and wiggles it back and forth demonstratively.`);
+			} else if (!canTalk(eventSlave)) {
+				t.push(`${he} tries to depict suckling and orgasm with ${his}`);
+				if (hasBothArms(eventSlave)) {
+					t.push(`hands,`);
+				} else {
+					t.push(`hand,`);
+				}
+				t.push(`but gives up and just sticks ${his} tits out at`);
+				if (eventSlave.nipples === "fuckable") {
+					t.push(`you while fingering ${his} nipplecunts.`);
+				} else {
+					t.push(`you, pinching ${his} nipples hard.`);
+				}
+			} else {
+				t.push(Spoken(eventSlave, `"Please use my boobs, ${getWrittenTitle(eventSlave)}!"`));
+			}
+			t.push(`${He} gasps as you seize ${him} and carry ${him}`);
+			if (V.PC.belly >= 30000) {
+				t.push(`to the couch, but ${he}'s clearly pleased. While you would rather sit ${him} on your lap, you are far too pregnant to fit ${him}; instead you settle ${him} beside you and torment`);
+			} else {
+				t.push(`back to your desk chair, but ${he}'s clearly pleased. You sit in the chair with ${him} in your lap facing away from`);
+				if (V.PC.boobs >= 300) {
+					t.push(`you, ${his} back against your breasts and torment`);
+				} else {
+					t.push(`you, and torment`);
+				}
+			}
+			t.push(`${his} nipples until ${he}'s close to climax. Then you get ${him} on`);
+			if (hasBothLegs(eventSlave)) {
+				t.push(`${his} knees`);
+			} else {
+				t.push(`the floor`);
+			}
+			t.push(`and push ${him} over the edge with`);
+			if (V.PC.dick !== 0) {
+				if (eventSlave.nipples === "fuckable") {
+					t.push(`your cock and fingers deep inside ${his}`);
+				} else {
+					t.push(`your cock between ${his}`);
+				}
+			} else {
+				if (eventSlave.nipples === "fuckable") {
+					t.push(`your fingers deep inside ${his}`);
+				} else {
+					t.push(`your pussy rubbing against the stiff nipples atop ${his}`);
+				}
+			}
+			if (eventSlave.boobs > 40000) {
+				t.push(`gargantuan`);
+			} else if (eventSlave.boobs > 25000) {
+				t.push(`immense`);
+			} else if (eventSlave.boobs > 10000) {
+				t.push(`ridiculous`);
+			} else if (eventSlave.boobs > 5000) {
+				t.push(`enormous`);
+			} else if (eventSlave.boobs > 3200) {
+				t.push(`giant`);
+			} else if (eventSlave.boobs > 1600) {
+				t.push(`huge`);
+			} else if (eventSlave.boobs > 800) {
+				t.push(`big`);
+			} else if (eventSlave.boobs > 300) {
+				t.push(`modest`);
+			} else {
+				t.push(`flat`);
+			}
+			if (eventSlave.boobs > 300) {
+				t.push(`tits.`);
+			} else {
+				t.push(`chest.`);
+			}
+			t.push(`<span class="devotion inc">${He} has become more devoted to you,</span> and <span class="fetish gain">${his} sexuality now focuses on ${his} breasts.</span>`);
+			eventSlave.devotion += 4;
+			seX(eventSlave, "mammary", V.PC, "penetrative");
+			eventSlave.fetish = "boobs";
+			eventSlave.fetishKnown = 1;
+			eventSlave.fetishStrength = 65;
+			if (eventSlave.lactation > 0) {
+				eventSlave.lactationDuration = 2;
+				eventSlave.boobs -= eventSlave.boobsMilk;
+				eventSlave.boobsMilk = 0;
+			} else {
+				t.push(induceLactation(eventSlave, 5));
+			}
+			return t;
+		}
+
+		function steer() {
+			t = [];
+			t.push(`Good slaves get aroused according to their masters' whim, not their own silly tendencies. You call ${eventSlave.slaveName} over before ${he} can give voice to ${his} interest in nipple play,`);
+			if (canDoVaginal(eventSlave) || (eventSlave.dick > 0 && !(eventSlave.chastityPenis))) {
+				t.push(`and let ${him} masturbate while`);
+				if (V.PC.dick === 0) {
+					t.push(`eating you out,`);
+					seX(eventSlave, "oral", V.PC, "vaginal");
+				} else {
+					t.push(`sucking you off,`);
+					seX(eventSlave, "oral", V.PC, "penetrative");
+				}
+				t.push(`to associate non-mammary intercourse with pleasure.`);
+			} else {
+				t.push(`and play with ${him} until ${he} orgasms while carefully keeping ${his} boobs and nipples untouched and unstimulated.`);
+			}
+			t.push(`You'll keep an eye on ${him}, and with this correction <span class="devotion inc">${he}'ll become more submissive to you.</span>`);
+			eventSlave.devotion += 4;
+			return t;
+		}
+	}
+};
diff --git a/src/events/REFI/reButtslut.js b/src/events/REFI/reButtslut.js
new file mode 100644
index 0000000000000000000000000000000000000000..790961f0566b2c747e2c40f0775be4d58d37a093
--- /dev/null
+++ b/src/events/REFI/reButtslut.js
@@ -0,0 +1,273 @@
+
+App.Events.REFIButtslut = class REFIButtslut extends App.Events.BaseEvent {
+	eventPrerequisites() {
+		return [];
+	}
+
+	actorPrerequisites() {
+		return [
+			[ // event slave /InterestTargetID
+				isSlaveAvailable,
+				s => (s.fetish === "none" || s.fetishStrength <= 60),
+				s => (canSee(s) || canHear(s)),
+				s => s.rules.speech !== "restrictive",
+			],
+			[ // and subslave /subID
+				s => App.Events.qualifiesForREFIsubSlave(s, "buttslut"),
+				s => s.anus > 0,
+				canDoAnal
+			]
+		];
+	}
+
+	execute(node) {
+		/** @type {Array<App.Entity.SlaveState>} */
+		let [eventSlave, subSlave] = this.actors.map(a => getSlave(a));
+		const {He, he, his, him, himself} = getPronouns(eventSlave);
+		const {he2, his2, himself2} = getPronouns(subSlave).appendSuffix("2");
+		const {say} = getEnunciation(eventSlave);
+
+		V.nextLink = "Next Week";
+
+		App.Events.drawEventArt(node, [eventSlave, subSlave], [eventSlave.clothes, "no clothing"]);
+
+		if (canImpreg(subSlave, V.PC)) {
+			knockMeUp(subSlave, 5, 1, -1, true);
+		}
+		seX(subSlave, "anal", V.PC, "penetrative");
+
+		let t = [];
+		t.push(`In the middle of the afternoon, you take a break from work to fuck`);
+		t.push(contextualIntro(V.PC, subSlave, "DOM"));
+		t.push(`in your office. ${subSlave.slaveName} is such a complete buttslut that ${he2}'s enjoying ${himself2} to an almost indecent degree: moaning, begging, or just smiling idiotically with ${his2} mouth open and ${his2} tongue lolling. After you finish and ${he2} leaves, you notice`);
+		t.push(contextualIntro(V.PC, eventSlave, "DOM"));
+		t.push(`at the door to your office. You call ${him} in.`);
+		App.Events.addParagraph(node, t);
+		t = [];
+		t.push(`${eventSlave.slaveName} hesitates before explaining ${himself}, and the ${SlaveTitle(eventSlave)} is obviously aroused:`);
+		if (eventSlave.chastityPenis === 1) {
+			t.push(`${he}'s got a string of precum leaking out of ${his} chastity cage.`);
+		} else if ((eventSlave.dick > 0) && (eventSlave.hormoneBalance >= 100)) {
+			t.push(`though ${his} hormone-filled body can't get ${his} dick hard any more, ${he}'s got a string of precum coming off ${his} member.`);
+		} else if (eventSlave.dick > 0 && eventSlave.balls > 0 && eventSlave.ballType === "sterile") {
+			t.push(`though ${his} useless balls can't muster the effort to get ${his} dick hard any more, ${he}'s got a string of precum coming off ${his} limp member.`);
+		} else if ((eventSlave.dick > 0) && (eventSlave.balls === 0)) {
+			t.push(`though ${his} gelded body can't get ${his} dick hard any more, ${he}'s got a string of precum coming off ${his} limp member.`);
+		} else if (canAchieveErection(eventSlave)) {
+			if (eventSlave.dick > 4) {
+				t.push(`${his} gigantic cock is standing out like a mast.`);
+			} else if (eventSlave.dick > 2) {
+				t.push(`${he}'s sporting an impressive erection.`);
+			} else if (eventSlave.dick > 0) {
+				t.push(`${his} little penis is rock hard.`);
+			}
+		} else if (eventSlave.dick > 7) {
+			t.push(`${he}'s got a string of precum coming off ${his} engorged member.`);
+		} else if (eventSlave.dick > 0) {
+			t.push(`${he}'s got a string of precum coming off ${his} limp member.`);
+		} else if (eventSlave.clit > 0) {
+			t.push(`${his} large clit is visibly engorged.`);
+		} else if (eventSlave.vagina > -1) {
+			if (eventSlave.nipples !== "fuckable") {
+				t.push(`${his} nipples are hard and`);
+			}
+			t.push(`there's a sheen on ${his} pussylips.`);
+		} else if (eventSlave.balls > 0) {
+			if (eventSlave.nipples !== "fuckable") {
+				t.push(`${his} nipples are hard and`);
+			}
+			t.push(`there is a distinct dribble of precum running from ${his} featureless crotch.`);
+		} else {
+			if (eventSlave.nipples !== "fuckable") {
+				t.push(`${his} nipples are hard and`);
+			}
+			t.push(`there is a clear scent of lust around ${him}.`);
+		}
+		t.push(`It seems ${he} passed by while you were buttfucking`, contextualIntro(eventSlave, subSlave), `and found the`);
+		if (canSee(eventSlave)) {
+			t.push(`sight`);
+		} else {
+			t.push(`sounds`);
+		}
+		t.push(`rather compelling. It should be possible to either encourage this fascination or steer ${him} away from it for now.`);
+
+		App.Events.addParagraph(node, t);
+		App.Events.addResponses(node, [
+			new App.Events.Result(`Turn ${him} into another anal slut`, turn, virginityWarning()),
+			new App.Events.Result(`Steer ${him} away from anal obsession for the moment`, steer),
+		]);
+
+		function virginityWarning() {
+			if (canDoAnal(eventSlave) && eventSlave.anus === 0) {
+				return `This option will take ${his} anal virginity`;
+			}
+			return null;
+		}
+
+		function turn() {
+			t = [];
+			if (!canTalk(eventSlave)) {
+				if (eventSlave.accent >= 3) {
+					if (!hasAnyArms(eventSlave)) {
+						t.push(`Since ${he} isn't conversant in ${V.language} and lacks the hands to gesture, so it takes a long, frustrating time for ${him} to communicate that ${he} would like you to do to ${him} what you did to ${subSlave.slaveName}.`);
+					} else {
+						t.push(`Since ${he} isn't conversant in ${V.language}, so ${he} uses gestures to ask you to do to ${him} what you did to ${subSlave.slaveName}.`);
+					}
+				} else if (eventSlave.voice === 0) {
+					if (!hasAnyArms(eventSlave)) {
+						t.push(`${He}'s mute and has no hands, so it takes a long, frustrating time for ${him} to communicate that ${he} would like you to do to ${him} what you did to ${subSlave.slaveName}.`);
+					} else {
+						t.push(`${He}'s mute, so ${he} uses gestures to ask you to do to ${him} what you did to ${subSlave.slaveName}.`);
+					}
+				} else {
+					t.push(`${He} can't form`);
+					if (!hasAnyArms(eventSlave)) {
+						t.push(`words and has no hands, so it takes a long, frustrating time for ${him} to communicate that ${he} would like you to do to ${him} what you did to ${subSlave.slaveName}.`);
+					} else {
+						t.push(`words, so ${he} uses gestures to ask you to do to ${him} what you did to ${subSlave.slaveName}.`);
+					}
+				}
+			} else {
+				if (eventSlave.lips > 70) {
+					t.push(`${He} ${say}s through ${his} massive dick-sucking lips,`);
+				} else if ((eventSlave.lipsPiercing+eventSlave.tonguePiercing > 2)) {
+					t.push(`${He} ${say}s through ${his} big oral piercings,`);
+				} else {
+					t.push(`${He} ${say}s,`);
+				}
+				t.push(Spoken(eventSlave, `"${getWrittenTitle(eventSlave)}, would you please do me like that?"`));
+			}
+			t.push(`You make ${him} state it more explicitly, so ${he} tries again:`);
+			if (!hasAnyArms(eventSlave) && !canTalk(eventSlave)) {
+				t.push(`${he} wriggles around until ${his} ass is pointed straight at you,`);
+				if (canDoAnal(eventSlave)) {
+					t.push(`lets out a deep breath, and relaxes ${his} sphincter visibly.`);
+				} else {
+					t.push(`and bounces ${his} rear enticingly.`);
+				}
+			} else if (!canTalk(eventSlave)) {
+				t.push(`${he} tries to depict anal sex with hand gestures, then gives up and turns around and points to ${his} ass.`);
+			} else {
+				t.push(Spoken(eventSlave, `"Please fuck my butt, ${getWrittenTitle(eventSlave)}!"`));
+			}
+			if (canDoAnal(eventSlave)) {
+				t.push(`${He} squeaks with surprise as you throw ${him} on the couch, but ${his} eagerness is obvious. ${He} does everything right, relaxing as you`);
+				if (V.PC.dick === 0) {
+					t.push(`push a strap-on into`);
+				} else {
+					t.push(`enter`);
+				}
+				t.push(`${his} ass and enjoying ${himself} all the way through. ${He} climaxes hard to`);
+				if (V.PC.dick === 0) {
+					t.push(`the phallus`);
+				} else {
+					t.push(`the cock`);
+				}
+				t.push(`in ${his} asshole. <span class="devotion inc">${He} has become more devoted to you,</span> and <span class="fetish gain">${his} sexuality now focuses on ${his} anus.</span>`);
+				t.push(VCheck.Anal(eventSlave, 1));
+			} else if (V.PC.dick !== 0) {
+				t.push(`${He} squeaks with surprise as you push ${him}`);
+				if (eventSlave.belly >= 300000) {
+					t.push(`onto ${his} ${bellyAdjective(eventSlave)}`);
+					if (eventSlave.bellyPreg >= 1500) {
+						t.push(`pregnancy`);
+					} else {
+						t.push(`belly`);
+					}
+				} else if (eventSlave.belly >= 5000) {
+					t.push(`against the couch`);
+				} else {
+					t.push(`onto the couch`);
+				}
+				t.push(`and`);
+				if (eventSlave.butt >= 6) {
+					t.push(`hug ${his}`);
+					if (eventSlave.butt <= 6) {
+						t.push(`gigantic`);
+					} else if (eventSlave.butt <= 7) {
+						t.push(`ridiculous`);
+					} else if (eventSlave.butt <= 10) {
+						t.push(`immense`);
+					} else if (eventSlave.butt <= 14) {
+						t.push(`inhuman`);
+					} else if (eventSlave.butt <= 20) {
+						t.push(`absurdly massive`);
+					}
+					t.push(`ass around your cock. Deep within its quivering`);
+					if (eventSlave.buttImplant / eventSlave.butt > .60) {
+						t.push(`firmness,`);
+					} else {
+						t.push(`softness,`);
+					}
+					t.push(`you can clearly feel how excited ${he} is over ${his} rear getting the attention it deserves. While ${he} may have expected anal, you've decided otherwise, so you go to work savoring the depths of ${his} butt cheeks. ${He} is`);
+					if (!canTalk(eventSlave)) {
+						t.push(`practically`);
+					}
+					t.push(`mewling with lust by the time you cum in ${him}, joining you in orgasm as ${he} feels your seed trickle down ${his} lower back and down to ${his} chastity belt.`);
+				} else if (eventSlave.butt >= 2) {
+					t.push(`slip your cock between ${his}`);
+					if (eventSlave.butt <= 3) {
+						t.push(`big`);
+					} else if (eventSlave.butt <= 4) {
+						t.push(`huge`);
+					} else if (eventSlave.butt <= 5) {
+						t.push(`enormous`);
+					}
+					if (eventSlave.buttImplant / eventSlave.butt > .60) {
+						t.push(`firm`);
+					} else {
+						t.push(`soft`);
+					}
+					t.push(`buttocks, atop ${his} anal chastity. You let ${him} quiver with anticipation for a little before reminding ${him} that the belt's removal is a reward for good slaves, and you might give release ${him} from it one day — but that ${he} doesn't deserve it yet. With that, you begin thrusting against ${his} rear, enjoying the twin pairs off flesh against your palms. ${He} is`);
+					if (!canTalk(eventSlave)) {
+						t.push(`practically`);
+					}
+					t.push(`mewling with lust by the time you cum on ${him}, joining you in orgasm as ${he} feels your seed trickle down ${his} lower back and down to ${his} chastity belt.`);
+				} else {
+					t.push(`rest your cock between ${his}`);
+					if (eventSlave.butt <= 0) {
+						t.push(`flat`);
+					} else {
+						t.push(`small`);
+					}
+					t.push(`buttocks, atop ${his} anal chastity. You let ${him} quiver with anticipation for a little before reminding ${him} that the belt's removal is a reward for good slaves, and you might give release ${him} from it one day — but that ${he} doesn't deserve it yet. With that, you begin thrusting between what can barely be called an ass. ${He} is`);
+					if (!canTalk(eventSlave)) {
+						t.push(`practically`);
+					}
+					t.push(`mewling with lust by the time you cum on ${him}, joining you in orgasm as ${he} feels your seed trickle down ${his} lower back and down to ${his} chastity belt.`);
+				}
+				t.push(`<span class="devotion inc">${He} has become more devoted to you,</span> and <span class="fetish gain">${his} sexuality now focuses on ${his} rear end.</span>`);
+				seX(subSlave, "anal", V.PC, "penetrative");
+			} else {
+				t.push(`You trace a dildo around ${his} anal chastity before reminding ${him} that the belt's removal is a reward for good slaves, and you might give release ${him} from it one day — but that ${he} doesn't deserve it yet. With that, you run your hand across the quivering slave's rump, sending ${him} over the edge.`);
+				t.push(`<span class="devotion inc">${He} has become more devoted to you,</span> and <span class="fetish gain">${his} sexuality now focuses on ${his} rear end.</span>`);
+			}
+			eventSlave.devotion += 4;
+			eventSlave.fetish = "buttslut";
+			eventSlave.fetishKnown = 1;
+			eventSlave.fetishStrength = 65;
+			return t;
+		}
+
+		function steer() {
+			t = [];
+			t.push(`Good slaves get aroused according to their masters' whim, not their own silly tendencies. You call ${eventSlave.slaveName} over before ${he} can give voice to ${his} interest in anal sex,`);
+			if (canDoVaginal(eventSlave) || (eventSlave.dick > 0 && !(eventSlave.chastityPenis))) {
+				t.push(`and let ${him} masturbate while`);
+				if (V.PC.dick === 0) {
+					t.push(`eating you out,`);
+					seX(eventSlave, "oral", V.PC, "vaginal");
+				} else {
+					t.push(`sucking you off,`);
+					seX(eventSlave, "oral", V.PC, "penetrative");
+				}
+				t.push(`to associate non-anal intercourse with pleasure.`);
+			} else {
+				t.push(`and play with ${him} until ${he} orgasms while carefully keeping ${his} ass untouched and unstimulated.`);
+			}
+			t.push(`You'll keep an eye on ${him}, and with this correction <span class="devotion inc">${he}'ll become more submissive to you.</span>`);
+			eventSlave.devotion += 4;
+			return t;
+		}
+	}
+};
diff --git a/src/events/REFI/reCumslut.js b/src/events/REFI/reCumslut.js
new file mode 100644
index 0000000000000000000000000000000000000000..363be4a7a1b1271619fbcbb4f5de810940fa0c9c
--- /dev/null
+++ b/src/events/REFI/reCumslut.js
@@ -0,0 +1,149 @@
+App.Events.REFICumslut = class REFICumslut extends App.Events.BaseEvent {
+	eventPrerequisites() {
+		return [
+		];
+	}
+
+	actorPrerequisites() {
+		return [
+			[ // event slave /InterestTargetID
+				s => App.Events.qualifiesForREFIeventSlave(s)
+			],
+			[ // and subslave /subID
+				s => App.Events.qualifiesForREFIsubSlave(s, "cumslut"),
+				s => ["none", "ring gag"].includes(s.mouthAccessory),
+				s => canMove(s) || hasAnyArms(s),
+				canTaste
+			]
+		];
+	}
+
+	execute(node) {
+		/** @type {Array<App.Entity.SlaveState>} */
+		let [eventSlave, subSlave] = this.actors.map(a => getSlave(a));
+		const {He, he, his, him, himself} = getPronouns(eventSlave);
+		const {he2, his2, He2} = getPronouns(subSlave).appendSuffix("2");
+
+		V.nextLink = "Next Week";
+
+		App.Events.drawEventArt(node, [eventSlave, subSlave], [eventSlave.clothes, "no clothing"]);
+
+
+
+		let t = [];
+
+		if (V.PC.dick > 0) {
+			t.push(`You wake up to the sensation of`);
+			t.push(contextualIntro(V.PC, subSlave, "DOM"));
+			t.push(`eagerly sucking your dick. ${He2}'s industriously pumping ${his2} mouth up and down on your member. In truth, ${subSlave.slaveName} doesn't give the perfect blowjob: ${he2} loves cum so much that ${he2} mostly enjoys oral sex in an anticipatory way, and usually works to make the recipient cum as soon as possible so as to get ${his2} favorite treat into ${his2} mouth quicker. Still, ${his2} enthusiasm is nice and ${he2} does have permission to wake you at your usual time in this way. As you get up after finishing, you notice`);
+			t.push(contextualIntro(subSlave, eventSlave, "DOM"));
+			t.push(`at the door to your bedroom. You call ${him} in.`);
+			seX(subSlave, "oral", V.PC, "penetrative");
+		} else {
+			t.push(`You come across ${subSlave.slaveName} in the middle of what appears to be an impromptu blowbang, one that seems to be drawing to a close. One by one, the citizens pull out of ${his2} wide-open mouth and splash cum into it. The bliss on ${his2} face is obvious even from where you are standing, and as you watch the scene unfolding before you, you notice`);
+			t.push(contextualIntro(subSlave, eventSlave, "DOM"));
+			t.push(`at the door of the room. You call ${him} in.`);
+			actX(subSlave, "oral", 4);
+		}
+
+		App.Events.addParagraph(node, t);
+		t = [];
+
+		t.push(`${eventSlave.slaveName} hesitates before explaining ${himself}, and the ${SlaveTitle(eventSlave)} is obviously aroused:`);
+		if (eventSlave.chastityPenis === 1) {
+			t.push(`${he}'s got a string of precum leaking out of ${his} chastity cage.`);
+		} else if ((eventSlave.dick > 0) && (eventSlave.hormoneBalance >= 100)) {
+			t.push(`though ${his} hormone-filled body can't get ${his} dick hard any more, ${he}'s got a string of precum coming off ${his} member.`);
+		} else if (eventSlave.dick > 0 && eventSlave.balls > 0 && eventSlave.ballType === "sterile") {
+			t.push(`though ${his} useless balls can't muster the effort to get ${his} dick hard any more, ${he}'s got a string of precum coming off ${his} limp member.`);
+		} else if ((eventSlave.dick > 0) && (eventSlave.balls === 0)) {
+			t.push(`though ${his} gelded body can't get ${his} dick hard any more, ${he}'s got a string of precum coming off ${his} limp member.`);
+		} else if (canAchieveErection(eventSlave)) {
+			if (eventSlave.dick > 4) {
+				t.push(`${his} gigantic cock is standing out like a mast.`);
+			} else if (eventSlave.dick > 2) {
+				t.push(`${he}'s sporting an impressive erection.`);
+			} else if (eventSlave.dick > 0) {
+				t.push(`${his} little penis is rock hard.`);
+			}
+		} else if (eventSlave.dick > 7) {
+			t.push(`${he}'s got a string of precum coming off ${his} engorged member.`);
+		} else if (eventSlave.dick > 0) {
+			t.push(`${he}'s got a string of precum coming off ${his} limp member.`);
+		} else if (eventSlave.clit > 0) {
+			t.push(`${his} large clit is visibly engorged.`);
+		} else if (eventSlave.vagina > -1) {
+			if (eventSlave.nipples !== "fuckable") {
+				t.push(`${his} nipples are hard and`);
+			}
+			t.push(`there's a sheen on ${his} pussylips.`);
+		} else if (eventSlave.balls > 0) {
+			if (eventSlave.nipples !== "fuckable") {
+				t.push(`${his} nipples are hard and`);
+			}
+			t.push(`there is a distinct dribble of precum running from ${his} featureless crotch.`);
+		} else {
+			if (eventSlave.nipples !== "fuckable") {
+				t.push(`${his} nipples are hard and`);
+			}
+			t.push(`there is a clear scent of lust around ${him}.`);
+		}
+		if (V.PC.dick === 0) {
+			t.push(`It seems ${he} passed by while`, contextualIntro(eventSlave, subSlave), `was in the midst of ${his2} little oral party.`);
+		} else {
+			t.push(`blowing you.`);
+		}
+
+		t.push(`${He} swallows painfully at the`);
+		if (canSee(eventSlave)) {
+			t.push(`sight of the satisfied cumslut swirling the ejaculate around ${his2} mouth.`);
+		} else {
+			t.push(`sound of the satisfied cumslut savoring the fresh load.`);
+		}
+		t.push(`It should be possible to either encourage this fascination or steer ${him} away from it for now.`);
+
+		App.Events.addParagraph(node, t);
+		App.Events.addResponses(node, [
+			new App.Events.Result(`Turn ${him} into a cumslut too`, turn),
+			new App.Events.Result(`Steer ${him} away from cum obsession for the moment`, steer),
+		]);
+
+		function turn() {
+			t = [];
+
+			t.push(`Focusing a slave's sexuality on cum isn't as easy as some other manipulations, for the simple reason that even you have a limited supply of the stuff and it would be a shame to waste it all on ${him}. So, you take another approach; you instruct ${eventSlave.slaveName} to accompany ${subSlave.slaveName}, and vice versa, whenever their duties permit. They're to act as sexual partners, and share cum whenever there's any forthcoming. They spend the week giving blowjobs whenever they can, and making out to swap the cum back and forth afterward. If someone insists on penetrating them instead, that just means that the other has to suck it out of them before they can share it. Most importantly, ${eventSlave.slaveName} is punished if ${he} ever orgasms without cum in ${his} mouth. Soon, ${he} gets aroused by the mere`);
+			if (canSmell(eventSlave)) {
+				t.push(`scent`);
+			} else {
+				t.push(`thought`);
+			}
+			t.push(`of the stuff. <span class="devotion inc">${He} has become more submissive to you,</span> and <span class="fetish gain">${his} sexuality now focuses on cum.</span>`);
+			eventSlave.devotion += 4;
+			seX(eventSlave, "oral", "public", "penetrative", 50);
+			seX(subSlave, "oral", "public", "penetrative", 50);
+			eventSlave.fetish = "cumslut";
+			eventSlave.fetishKnown = 1;
+			eventSlave.fetishStrength = 65;
+			return t;
+		}
+
+		function steer() {
+			t = [];
+
+			t.push(`Good slaves get aroused according to their masters' whim, not their own silly tendencies. You call ${eventSlave.slaveName} over before ${he} can give voice to ${his} interest in cum, and`);
+			if ((canDoVaginal(eventSlave) && eventSlave.vagina > 0) || (canDoAnal(eventSlave) && eventSlave.anus > 0)) {
+				t.push(`fuck ${him} until ${he} orgasms, but you are careful to keep your cum well away from ${him}.`);
+			} else {
+				t.push(`enjoy ${him} until ${he} orgasms, making sure to not involve cum at all.`);
+			}
+			t.push(`You'll keep an eye on ${him}, and with this correction <span class="devotion inc">${he}'ll become more submissive to you.</span>`);
+			if (canDoVaginal(eventSlave) && eventSlave.vagina > 0) {
+				t.push(VCheck.Vaginal(eventSlave, 1));
+			} else if (canDoAnal(eventSlave) && eventSlave.anus > 0) {
+				t.push(VCheck.Anal(eventSlave, 1));
+			}
+			eventSlave.devotion += 4;
+			return t;
+		}
+	}
+};
diff --git a/src/events/REFI/reDominant.js b/src/events/REFI/reDominant.js
index ed756b9938ef11a7db690ee7203a363bc6e7da80..a083a29e934c1f844add33874dd091db209bf6cd 100644
--- a/src/events/REFI/reDominant.js
+++ b/src/events/REFI/reDominant.js
@@ -27,9 +27,8 @@ App.Events.REFIDominant = class REFIDominant extends App.Events.BaseEvent {
 		App.Events.drawEventArt(node, [eventSlave, subSlave], "no clothing");
 
 		let t = [];
-		t.push(contextualIntro(V.PC, subSlave, "DOM"));
 		if (subSlave.vagina > 0 || subSlave.anus > 0) {
-			t.push(`is riding another slave,`);
+			t.push(`${subSlave.slaveName} is riding another slave,`);
 			if (hasAnyArms(subSlave)) {
 				t.push(`${his2} hand${hasBothArms(subSlave) ? "s" : ""} pinning ${himU} down.`);
 			} else {
@@ -41,7 +40,7 @@ App.Events.REFIDominant = class REFIDominant extends App.Events.BaseEvent {
 				actX(subSlave, "anal");
 			}
 		} else {
-			t.push(`is straddling another slave, ${his2}`);
+			t.push(`${subSlave.slaveName} is straddling another slave, ${his2}`);
 			if (subSlave.dick > 0) {
 				t.push(`cock in ${hisU} mouth.`);
 				actX(subSlave, "penetrative");
@@ -56,7 +55,9 @@ App.Events.REFIDominant = class REFIDominant extends App.Events.BaseEvent {
 				t.push(`pressed to ${hisU} face.`);
 			}
 		}
-		t.push(`The slave${girlU} had been disobedient, and ${hisU} punishment was to let ${subSlave.slaveName} dominate ${himU}. The truth is this is also ${his2} reward; ${he2} is such a dominant that ${he2}'s prone to lashing out at your other slaves if ${he2} isn't given a proper outlet. Sure enough, ${his2} moans begin to increase in pitch and frequency, reaching a crescendo as ${he2} comes to an orgasm. Once you feel the poor ${girlU} beneath ${him2} has had enough, you give ${subSlave.slaveName} the order to dismount. ${He2}`);
+		t.push(`The slave${girlU} had been disobedient, and ${hisU} punishment was to let`);
+		t.push(contextualIntro(V.PC, subSlave, "DOM"));
+		t.push(`dominate ${himU}. The truth is this is also ${his2} reward; ${he2} is such a dominant that ${he2}'s prone to lashing out at your other slaves if ${he2} isn't given a proper outlet. Sure enough, ${his2} moans begin to increase in pitch and frequency, reaching a crescendo as ${he2} comes to an orgasm. Once you feel the poor ${girlU} beneath ${him2} has had enough, you give ${subSlave.slaveName} the order to dismount. ${He2}`);
 		if (canMove(subSlave)) {
 			t.push(`leaves`);
 		} else {
@@ -104,17 +105,17 @@ App.Events.REFIDominant = class REFIDominant extends App.Events.BaseEvent {
 			t.push(`${his} large clit is visibly engorged.`);
 		} else if (eventSlave.vagina > -1) {
 			if (eventSlave.nipples !== "fuckable") {
-				t.push(`${his} nipples are hard and `);
+				t.push(`${his} nipples are hard and`);
 			}
 			t.push(`there's a sheen on ${his} pussylips.`);
 		} else if (eventSlave.balls > 0) {
 			if (eventSlave.nipples !== "fuckable") {
-				t.push(`${his} nipples are hard and `);
+				t.push(`${his} nipples are hard and`);
 			}
 			t.push(`there is a distinct dribble of precum running from ${his} featureless crotch.`);
 		} else {
 			if (eventSlave.nipples !== "fuckable") {
-				t.push(`${his} nipples are hard and `);
+				t.push(`${his} nipples are hard and`);
 			}
 			t.push(`there is a clear scent of lust around ${him}.`);
 		}
diff --git a/src/events/REFI/reHumiliation.js b/src/events/REFI/reHumiliation.js
new file mode 100644
index 0000000000000000000000000000000000000000..e12851f0a7abeef1361b86b1b8c227a14cd8b12c
--- /dev/null
+++ b/src/events/REFI/reHumiliation.js
@@ -0,0 +1,167 @@
+App.Events.REFIHumiliation = class REFIHumiliation extends App.Events.BaseEvent {
+	eventPrerequisites() {
+		return [];
+	}
+
+	actorPrerequisites() {
+		return [
+			[ // event slave /InterestTargetID
+				s => App.Events.qualifiesForREFIeventSlave(s)
+			],
+			[ // and subslave /subID
+				s => App.Events.qualifiesForREFIsubSlave(s, "humiliation"),
+				s => ((s.anus > 0 && canDoAnal(s)) || (s.vagina > 0 && canDoVaginal(s))),
+				s => s.belly < 30000
+			]
+		];
+	}
+
+	execute(node) {
+		/** @type {Array<App.Entity.SlaveState>} */
+		let [eventSlave, subSlave] = this.actors.map(a => getSlave(a));
+		const {He, he, his, him, himself} = getPronouns(eventSlave);
+		const {he2, his2, him2, He2} = getPronouns(subSlave).appendSuffix("2");
+
+		V.nextLink = "Next Week";
+
+		App.Events.drawEventArt(node, [eventSlave, subSlave], [eventSlave.clothes, "no clothing"]);
+
+
+		if (canDoVaginal(subSlave) && subSlave.vagina > 0) {
+			seX(subSlave, "vaginal", V.PC, "penetrative");
+			if (canImpreg(subSlave, V.PC)){
+				knockMeUp(subSlave, 5, 0, -1, true);
+			}
+		} else {
+			seX(subSlave, "anal", V.PC, "penetrative");
+			if (canImpreg(subSlave, V.PC)){
+				knockMeUp(subSlave, 5, 1, -1, true);
+			}
+		}
+
+		let t = [];
+		t.push(`You have`);
+		t.push(contextualIntro(V.PC, subSlave, "DOM"));
+		t.push(`pinned up against a railing on a balcony that overlooks a public atrium. Passersby below cannot see you, but they can certainly see ${subSlave.slaveName}'s upper body as ${he2} takes your dick. ${He2}'s blushing furiously with the sex and with ${his2} trademark mixed arousal and embarrassment at having an audience. ${He2} makes a show of trying to disguise the fact that ${he2}'s getting railed, but it's obvious. When you finish, you pull ${him2} off the railing so ${he2} can clean up.`);
+		t.push(contextualIntro(subSlave, eventSlave, "DOM"));
+		if (canSee(eventSlave)) {
+			t.push(`saw`);
+		} else {
+			t.push(`heard`);
+		}
+		t.push(`the denouement of this exhibitionist fun, and seems intrigued.`);
+		App.Events.addParagraph(node, t);
+		t = [];
+
+		t.push(`${eventSlave.slaveName} hesitates before explaining ${himself}, and the ${SlaveTitle(eventSlave)} is obviously aroused:`);
+		if (eventSlave.chastityPenis === 1) {
+			t.push(`${he}'s got a string of precum leaking out of ${his} chastity cage.`);
+		} else if ((eventSlave.dick > 0) && (eventSlave.hormoneBalance >= 100)) {
+			t.push(`though ${his} hormone-filled body can't get ${his} dick hard any more, ${he}'s got a string of precum coming off ${his} member.`);
+		} else if (eventSlave.dick > 0 && eventSlave.balls > 0 && eventSlave.ballType === "sterile") {
+			t.push(`though ${his} useless balls can't muster the effort to get ${his} dick hard any more, ${he}'s got a string of precum coming off ${his} limp member.`);
+		} else if ((eventSlave.dick > 0) && (eventSlave.balls === 0)) {
+			t.push(`though ${his} gelded body can't get ${his} dick hard any more, ${he}'s got a string of precum coming off ${his} limp member.`);
+		} else if (canAchieveErection(eventSlave)) {
+			if (eventSlave.dick > 4) {
+				t.push(`${his} gigantic cock is standing out like a mast.`);
+			} else if (eventSlave.dick > 2) {
+				t.push(`${he}'s sporting an impressive erection.`);
+			} else if (eventSlave.dick > 0) {
+				t.push(`${his} little penis is rock hard.`);
+			}
+		} else if (eventSlave.dick > 7) {
+			t.push(`${he}'s got a string of precum coming off ${his} engorged member.`);
+		} else if (eventSlave.dick > 0) {
+			t.push(`${he}'s got a string of precum coming off ${his} limp member.`);
+		} else if (eventSlave.clit > 0) {
+			t.push(`${his} large clit is visibly engorged.`);
+		} else if (eventSlave.vagina > -1) {
+			if (eventSlave.nipples !== "fuckable") {
+				t.push(`${his} nipples are hard and`);
+			}
+			t.push(`there's a sheen on ${his} pussylips.`);
+		} else if (eventSlave.balls > 0) {
+			if (eventSlave.nipples !== "fuckable") {
+				t.push(`${his} nipples are hard and`);
+			}
+			t.push(`there is a distinct dribble of precum running from ${his} featureless crotch.`);
+		} else {
+			if (eventSlave.nipples !== "fuckable") {
+				t.push(`${his} nipples are hard and`);
+			}
+			t.push(`there is a clear scent of lust around ${him}.`);
+		}
+		t.push(`There was a glint of envy`);
+		if (canSee(eventSlave)) {
+			t.push(`in ${his} eyes when ${he} saw`);
+		} else {
+			t.push(`across ${his} face as ${he} listened to`);
+		}
+		t.push(`${subSlave.slaveName}'s satisfaction at being publicly used. It should be possible to either encourage this fascination with humiliation or steer ${him} away from it for now.`);
+
+
+		App.Events.addParagraph(node, t);
+		App.Events.addResponses(node, [
+			new App.Events.Result(`Turn ${him} into a humiliation fetishist too`, turn, virginityWarning()),
+			new App.Events.Result(`Steer ${him} away from humiliation fetishism for the moment`, steer),
+		]);
+
+		function virginityWarning() {
+			if (canDoVaginal(eventSlave) && eventSlave.vagina === 0 && (eventSlave.anus === 0 || !canDoAnal(eventSlave))) {
+				return `This option will take ${his} virginity`;
+			} else if (eventSlave.anus === 0) {
+				return `This option will take ${his} anal virginity`;
+			}
+			return null;
+		}
+
+		function turn() {
+			t = [];
+
+			t.push(`You bring ${eventSlave.slaveName} to the railing ${subSlave.slaveName} just left. For a long while, you just play with ${his} naked breasts,`);
+			if (canSee(eventSlave)) {
+				t.push(`requiring ${him} to look any member of the public below that stares at ${him} right in the eyes.`);
+			} else {
+				t.push(`making sure to keep ${him} well informed of how many passersby are ogling ${him}.`);
+			}
+			t.push(`${He} sobs and shakes with abject embarrassment`);
+			if (canSee(eventSlave)) {
+				t.push(`as ${he} locks eyes with person after person.`);
+			} else {
+				t.push(`as ${he} hears each whistle and catcall from onlookers.`);
+			}
+			t.push(`After enough of this, ${he}'s so sexually primed that ${he} orgasms convulsively almost immediately`);
+			if ((canDoVaginal(eventSlave) && eventSlave.vagina > 0) || (canDoAnal(eventSlave) && eventSlave.anus > 0)) {
+				t.push(`after you enter ${him} from behind.`);
+			} else {
+				t.push(`once run your hand across ${his} crotch.`);
+			}
+			t.push(`<span class="devotion inc">${He} has become more obedient,</span> and <span class="fetish gain">${his} sexuality now focuses on public humiliation.</span>`);
+			if (canDoVaginal(eventSlave) && (eventSlave.vagina > 0 || eventSlave.anus === 0)) {
+				t.push(VCheck.Vaginal(eventSlave, 1));
+			} else if (canDoAnal(eventSlave)) {
+				t.push(VCheck.Anal(eventSlave, 1));
+			}
+			eventSlave.devotion += 4;
+			eventSlave.fetish = "humiliation";
+			eventSlave.fetishKnown = 1;
+			eventSlave.fetishStrength = 65;
+			return t;
+		}
+
+		function steer() {
+			t = [];
+			t.push(`Good slaves get aroused according to their masters' whim, not their own silly tendencies. You call ${eventSlave.slaveName} over before ${he} can give voice to ${his} interest in humiliation and fuck ${him} privately in your office. You'll keep an eye on ${him}, and with this correction <span class="devotion inc">${he}'ll become more obedient.</span>`);
+			if (canDoVaginal(eventSlave) && eventSlave.vagina > 0) {
+				t.push(VCheck.Vaginal(eventSlave, 1));
+			} else if (canDoAnal(eventSlave) && eventSlave.anus > 0) {
+				t.push(VCheck.Anal(eventSlave, 1));
+			} else {
+				t.push(SimpleSexAct.Player(eventSlave));
+			}
+			eventSlave.devotion += 4;
+			return t;
+		}
+	}
+};
diff --git a/src/events/REFI/reMasochist.js b/src/events/REFI/reMasochist.js
index c0627d05947bff940e751fd3ae51cd2f7bf9669f..4f7300e6298227cfc139c9e26300978c61e1bbae 100644
--- a/src/events/REFI/reMasochist.js
+++ b/src/events/REFI/reMasochist.js
@@ -144,7 +144,7 @@ App.Events.REFIMasochist = class REFIMasochist extends App.Events.BaseEvent {
 		App.Events.addParagraph(node, t);
 		t = [];
 		t.push(`${eventSlave.slaveName} hesitates before explaining ${himself}, and the ${SlaveTitle(eventSlave)} is obviously aroused:`);
-		if (eventSlave.chastityPenis === 1) {
+		if ((eventSlave.dick > 0) && (eventSlave.chastityPenis === 1)) {
 			t.push(`${he}'s got a string of precum leaking out of ${his} chastity cage.`);
 		} else if ((eventSlave.dick > 0) && (eventSlave.hormoneBalance >= 100)) {
 			t.push(`though ${his} hormone-filled body can't get ${his} dick hard any more, ${he}'s got a string of precum coming off ${his} member.`);
diff --git a/src/events/REFI/rePregnancy.js b/src/events/REFI/rePregnancy.js
index 90c47e8ae9a9359e7a4f726e52ad64f92d7a11b5..316e2ba1597129f646a641f2f35ff05a35037afb 100644
--- a/src/events/REFI/rePregnancy.js
+++ b/src/events/REFI/rePregnancy.js
@@ -29,8 +29,9 @@ App.Events.REFIPregnancy = class REFIPregnancy extends App.Events.BaseEvent {
 		App.Events.drawEventArt(node, [eventSlave, subSlave], [eventSlave.clothes, "no clothing"]);
 
 		let t = [];
+		t.push(`Since ${he2}'s quite pregnant,`);
 		t.push(contextualIntro(V.PC, subSlave, "DOM"));
-		t.push(`gets inspected more regularly than your other slaves, since ${he2}'s quite pregnant. ${His2} pregnancy is progressing acceptably, but having ${his2} belly inspected gets ${him2}`);
+		t.push(`gets inspected more regularly than your other slaves. ${His2} pregnancy is progressing acceptably, but having ${his2} belly inspected gets ${him2}`);
 		if (subSlave.pregSource === -1) {
 			t.push(`extremely eager to feel more of ${his2} ${getWrittenTitle(subSlave)}'s seed in ${his2} fertile`);
 			if (subSlave.mpreg === 1) {
@@ -158,8 +159,11 @@ App.Events.REFIPregnancy = class REFIPregnancy extends App.Events.BaseEvent {
 		t.push(`After you both finish and ${he2} leaves, smiling contentedly at you, you notice`);
 		t.push(contextualIntro(subSlave, eventSlave, "DOM"));
 		t.push(`at the door to your office. You call ${him} in.`);
+		App.Events.addParagraph(node, t);
+		t = [];
+
 		t.push(`${eventSlave.slaveName} hesitates before explaining ${himself}, and the ${SlaveTitle(eventSlave)} is obviously aroused:`);
-		if (eventSlave.chastityPenis === 1) {
+		if ((eventSlave.dick > 0) && (eventSlave.chastityPenis === 1)) {
 			t.push(`${he}'s got a string of precum leaking out of ${his} chastity cage.`);
 		} else if ((eventSlave.dick > 0) && (eventSlave.hormoneBalance >= 100)) {
 			t.push(`though ${his} hormone-filled body can't get ${his} dick hard any more, ${he}'s got a string of precum coming off ${his} member.`);
@@ -653,8 +657,8 @@ App.Events.REFIPregnancy = class REFIPregnancy extends App.Events.BaseEvent {
 					t.push(Spoken(eventSlave, `"Yes, ${getWrittenTitle(eventSlave)}, that must feel ama-"`), `${his} voice catches as you spear yourself on ${his} dick. ${His} answer really didn't matter since ${his} cock already spilled ${his} thoughts.`);
 				}
 				t.push(`You begin riding ${him}, eager to scratch that growing itch that's been hounding you lately, only to find ${his}`);
-				if (hasAnyHands(eventSlave)) {
-					t.push(`hand${hasBothHands(eventSlave) ? "s" : ""} tracing your`);
+				if (hasAnyArms(eventSlave)) {
+					t.push(`hand${hasBothArms(eventSlave) ? "s" : ""} tracing your`);
 				} else {
 					t.push(`face nuzzling your`);
 				}
diff --git a/src/events/eventUtils.js b/src/events/eventUtils.js
index a8a2f08b9f9fd78227d0cfa5f6db2cc55990ecb3..0f46783b5c74a6646fc200654c5baf55cf4bbc83 100644
--- a/src/events/eventUtils.js
+++ b/src/events/eventUtils.js
@@ -345,6 +345,17 @@ App.Events.effectiveWeek = function() {
 	return V.week - V.nationHate;
 };
 
+/** Returns whether a particular event can execute right now or not. Performs actor casting.
+ * @param {App.Events.BaseEvent} event - event to test
+ * @param {App.Entity.SlaveState} [eventSlave] - slave which must be used as the first actor. omit if no first slave requirement.
+ * @returns {boolean}
+ */
+App.Events.canExecute = function(event, eventSlave) {
+	return (event instanceof App.Events.BaseEvent)		// is an event (and deserialized correctly)
+		&& event.eventPrerequisites().every(p => p())	// passes prerequisites
+		&& event.castActors(eventSlave);				// casts actors successfully
+};
+
 /** Qualifies for REFI eventSlave event?
  * @param {App.Entity.SlaveState} slave
  * @returns {boolean}
@@ -361,3 +372,25 @@ App.Events.qualifiesForREFIeventSlave = function(slave) {
 App.Events.qualifiesForREFIsubSlave = function(slave, fetish) {
 	return slave.fetishKnown === 1 && slave.fetishStrength > 95 && isSlaveAvailable(slave) && slave.fetish === fetish;
 };
+
+/** Queue an event for scheduled execution on a later week.  Queued events are executed automatically at the end of Nonrandom Event on the chosen week.
+ * @param {number} weeks - the number of weeks to wait before executing the event. 0 means execute this week, 1 execute next week, etc.  Note that events generally cannot safely queue other events for the same week; they should always pass 1 or more in this parameter.  Other parts of the game (Slave Interact, etc) can safely queue events for this week (i.e. the upcoming End Week cycle) by passing 0.
+ * @param {App.Events.BaseEvent} event - the event to execute. note that this event is serialized normally, so changes to the class name or parameter structure will break the event in saved games!
+ * @param {Object} [params] - any parameters to serialize with the event. when the event executes, these will be accessible in "this.params".
+ */
+App.Events.queueEvent = function(weeks, event, params = {}) {
+	Object.assign(event.params, params);
+	if (!V.eventQueue[weeks]) {
+		V.eventQueue[weeks] = [];
+	}
+	V.eventQueue[weeks].push(event);
+};
+
+/** Returns whether an event with the given type is already in the queue.
+ * Useful if you want to prevent multiple copies of a followup event from being queued.
+ * @param {Function} type - the class or constructor of the event to test for (i.e. 'App.Events.PESomeEvent')
+ * @returns {boolean}
+ */
+App.Events.isInQueue = function(type) {
+	return V.eventQueue.some(q => q.some(e => (e instanceof type)));
+};
diff --git a/src/events/legacy/REFI.tw b/src/events/legacy/REFI.tw
new file mode 100644
index 0000000000000000000000000000000000000000..9c1c5341c73717d282f91b5ce9b25d8dcd39232b
--- /dev/null
+++ b/src/events/legacy/REFI.tw
@@ -0,0 +1,52 @@
+:: REFI [nobr]
+
+/* This is one of several files that contains and organizes many different events.	*/
+/*	genericPlotEvents.tw															*/
+/*	PESS.tw: Player Event, Single Slave												*/
+/*	PETS.tw: Player Event, Two Slaves												*/
+/*	RECI.tw: Random Event, Check In													*/
+/*	REFI.tw: Random Event, Fetish Interest											*/
+/*	REFS.tw: Random Event, Future Societies											*/
+/*	RESS.tw: Random Event, Single Slave												*/
+/*	RESSTR.tw: Random Event, Single Slave (Test Realm, for debugging events)		*/
+/*	RETS.tw: Random Event, Two Slaves												*/
+/*																					*/
+/* Events can also be in a dedicated *.tw file, formatted as follows:				*/
+/*	jeXXXXX.tw: Justice Event														*/
+/*	pXXXXXX.tw: Player event														*/
+/*	peXXXXX.tw: Player Event focused on a slave										*/
+/*	reXXXXX.tw: Random Event														*/
+/*	resXXXX.tw: Random Event, School												*/
+/*	seXXXXX.tw: Slave Event, focuses on slaves coming or going						*/
+/*	securityForceXXXXX.tw: Special (Security) Force event							*/
+/*																					*/
+/* Some scenes are also stored in useGuard.tw, walkPast.tw, and toychest.tw			*/
+
+
+<<if Array.isArray($REFIevent)>>
+	<<set $activeSlave = $eventSlave>>
+	<<if $cheatMode == 1>>
+		<<set $nextButton = "Back", $nextLink = "Nonrandom Event", $returnTo = "Nonrandom Event">> /* if user just clicks spacebar */
+		''A random fetish interest event would have been selected from the following:''
+		<br>
+		<<for _i = 0; _i < $REFIevent.length; _i++>>
+			<<print "[[$REFIevent[_i]|REFI][$REFIevent = $REFIevent[" + _i + "]]]">>
+			<br>
+		<</for>>
+		<br><br>[[Go Back to Random Nonindividual Event|Random Nonindividual Event][$eventSlave = 0]]
+	<<else>>
+		<<set $REFIevent = $REFIevent.random()>>
+		<<goto "REFI">>
+	<</if>>
+<<else>>
+
+<<set $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "RIE Eligibility Check">>
+
+<span id="result">
+<<if $cheatMode == 1>>
+	<br><br>DEBUG: &nbsp;&nbsp;&nbsp;&nbsp;[[Go back to Nonrandom Event|Nonrandom Event][$activeSlave = 0, $eventSlave = 0]]
+<</if>>
+
+</span>
+
+<</if>> /* CLOSES EVENT SELECTION */
diff --git a/src/events/nonRandom/arcologyNaming.js b/src/events/nonRandom/arcologyNaming.js
index 18f2734818ce0a00b958c4e4bada3c1d49071877..e0e58e319ccc6db5bac3246f8364541b7e2868b0 100644
--- a/src/events/nonRandom/arcologyNaming.js
+++ b/src/events/nonRandom/arcologyNaming.js
@@ -28,9 +28,9 @@ App.Events.PArcologyNaming = class PArcologyNaming extends App.Events.BaseEvent
 			r.push(`an incredible opportunity,`);
 		}
 		r.push(`is nothing short of astonishing. Other arcologies have taken many years to develop along anything but strictly conservative lines, and you are not the only arcology owner with a background`);
-		if (V.PC.career === "wealth" || V.PC.career === "trust fund" || V.PC.career === "rich kid") {
+		if (isPCCareerInCategory("wealth")) {
 			r.push(`of substantial wealth.`);
-		} else if (V.PC.career === "capitalist" || V.PC.career === "entrepreneur" || V.PC.career === "business kid") {
+		} else if (isPCCareerInCategory("capitalist")) {
 			r.push(`in business.`);
 		} else if (V.PC.career === "mercenary") {
 			r.push(`in the world of private contracting.`);
diff --git a/src/events/nonRandom/pAidInvitation.js b/src/events/nonRandom/pAidInvitation.js
index 33bdea2077cd648e3a612ccd0712fb4796003db5..b8b6118c16b1325950d0a024b9cfe950f71acf66 100644
--- a/src/events/nonRandom/pAidInvitation.js
+++ b/src/events/nonRandom/pAidInvitation.js
@@ -131,6 +131,7 @@ App.Events.pAidInvitation = class pAidInvitation extends App.Events.BaseEvent {
 			}
 			r.push(`are extremely grateful, though they would be less hopeful if they knew the true nature of the aircraft coming to retrieve them.`);
 			V.eventResults.aid = 1;
+			App.Events.queueEvent(1, new App.Events.pAidResult());
 			cashX(forceNeg(price), "event");
 			App.Events.addParagraph(el, r);
 			return el;
diff --git a/src/events/nonRandom/pAidResult.js b/src/events/nonRandom/pAidResult.js
index c7aa629dc19b95a1485729363abc3593e9900fb4..99497ed42d8a9a9b6303b34bcadeaed6f6128583 100644
--- a/src/events/nonRandom/pAidResult.js
+++ b/src/events/nonRandom/pAidResult.js
@@ -3,14 +3,8 @@ App.Events.pAidResult = class pAidResult extends App.Events.BaseEvent {
 		super(actors, params);
 	}
 
-	actorPrerequisites() {
-		return [];
-	}
-
 	eventPrerequisites() {
-		return [
-			() => V.eventResults.aid === 1
-		];
+		return []; // always run if queued
 	}
 
 	execute(node) {
diff --git a/src/events/nonRandom/rival/pHostageAcquisition.js b/src/events/nonRandom/rival/pHostageAcquisition.js
new file mode 100644
index 0000000000000000000000000000000000000000..464bd577c81e44c36a2525af580bc04add7c9da6
--- /dev/null
+++ b/src/events/nonRandom/rival/pHostageAcquisition.js
@@ -0,0 +1,1259 @@
+App.Events.pHostageAcquisition = function() {
+	return execute();
+
+	function execute() {
+		const node = new DocumentFragment();
+		let r = [];
+		if (V.hostage === 0) {
+			return node;
+		}
+		const {
+			He, His,
+			he, his, him, girl, woman
+		} = getPronouns(V.hostage);
+		V.hostageRescued = 0;
+		// V.hostage.ID += 55555;
+		V.hostage.weekAcquired = V.week;
+
+		const {
+			his2, woman2, wife2, girl2
+		} = getPronouns(V.hostageWife ? V.hostageWife : {pronoun: App.Data.Pronouns.Kind.plural}).appendSuffix("2");
+		const {girlU} = getNonlocalPronouns(V.seeDicks).appendSuffix("U");
+		const {title: Master} = getEnunciation(V.hostage);
+		App.Events.drawEventArt(node, V.hostage);
+
+		r.push(`${SlaveFullName(V.hostage)}, once`);
+		switch (V.PC.career) {
+			case "wealth":
+				r.push(`a popular party ${girl}`);
+				break;
+			case "capitalist":
+				r.push(`a bright young manager`);
+				break;
+			case "mercenary":
+				r.push(`a logistics officer`);
+				break;
+			case "engineer":
+				r.push(`an arcology sales${woman}`);
+				break;
+			case "medicine":
+				r.push(`a surgical nurse`);
+				break;
+			case "slaver":
+				r.push(`an abusive pens guard`);
+				break;
+			case "celebrity":
+				r.push(`a popular groupie`);
+				break;
+			case "escort":
+				r.push(`an expensive escort`);
+				break;
+			case "gang":
+				r.push(`a gang member`);
+				break;
+			case "servant":
+				r.push(`a maid`);
+				break;
+			case "BlackHat":
+				r.push(`a brilliant code breaker`);
+				break;
+			default:
+				r.push(`a prominent Free Cities citizen`);
+		}
+		r.push(`of your acquaintance from before you were an arcology owner, and then a pawn in your rival arcology owner's campaign of psychological warfare against you, is now one of your slaves.
+		Your hired mercenaries are en route now with your precious cargo.`);
+
+		switch (V.rivalryFS) {
+			case "Racial Subjugationism":
+				if (V.hostage.preg > 0) {
+					WombFatherRace(V.hostage, V.arcologies[0].FSSubjugationistRace);
+				}
+				setHealth(V.hostage, 50, V.hostage.health.shortDamage, V.hostage.health.longDamage, 0, 10);
+				if (V.rivalryDuration <= 5) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} dives into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`sobbing`);
+					r.push(Spoken(V.hostage, `"They kept trying to rape me with ${V.arcologies[0].FSSubjugationistRace} slaves!"`));
+					r.push(`You gently wrap your arms around ${him} in a comforting embrace. ${He}'s nearly the same as you remember ${him}, albeit a bit more hateful towards ${V.arcologies[0].FSSubjugationistRace} people.`);
+				} else if (V.rivalryDuration <= 10) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} gingerly approaches, uncertain if ${he} should. You pull ${him} into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`as ${he} breaks down in tears.`);
+					r.push(Spoken(V.hostage, `"They raped me with ${V.arcologies[0].FSSubjugationistRace} slaves!" ${He}'s nearly the same as you remember ${him}, albeit with a slight ${V.arcologies[0].FSSubjugationistRace} fetish.`));
+				} else if (V.rivalryDuration <= 15) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} shifts ${his} weight back and forth, unsure of what to make of you. As you step forward, ${he} hesitatingly approaches. Once ${he} is close enough ${he} asks`);
+					r.push(Spoken(V.hostage, `"Can I spend some time with the ${V.arcologies[0].FSSubjugationistRace} slaves?"`));
+					r.push(`While ${he} looks the same as you remember, ${he} certainly doesn't think the same anymore.`);
+				} else if (V.rivalryDuration <= 20) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} shifts ${his} weight back and forth, unsure of what to make of you. As you step forward, ${he} quickly steps back. After several steps, ${he} bluntly asks`);
+					r.push(Spoken(V.hostage, `"Can I get fucked by some ${V.arcologies[0].FSSubjugationistRace} studs?"`));
+					r.push(`While ${he} looks the same as you remember, ${he} definitely doesn't think the same anymore.`);
+				} else {
+					V.hostage.trust = 80;
+					r.push(`Your mercenaries radio you upon arrival. "This one's got quite some spunk in ${him}, you better ready yourself. We're coming in now."`);
+					r.push(`Upon seeing you, ${V.hostage.slaveName}'s eyes fill with a distinct hatred. As you step forward, ${he} stands ${his} ground. After several steps, ${he} shouts`);
+					r.push(Spoken(V.hostage, `"Why do you hate ${V.arcologies[0].FSSubjugationistRace} people so much?! They are a great race, capable of the most sublime love! How dare you ta-"`));
+					r.push(`The mercenary captain quickly gags ${him}. "My apologies, I did warn you ${he} was a handful. Please be careful when you unbind ${him}, 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 ${V.hostage.slaveName}. ${He} looks the same as you remember, but ${he} acts nothing like the ${girl} you used to know. Odds are high that ${he}'ll cause problems for you in the future.`);
+				}
+				break;
+			case "Racial Supremacism":
+				if (V.seePreg !== 0) {
+					V.hostage.pregType = setPregType(V.hostage);
+					WombInit(V.hostage);
+					WombFatherRace(V.hostage, (V.arcologies[0].FSSubjugationistRace !== 0) ?
+						V.arcologies[0].FSSubjugationistRace :
+						App.Utils.getRaceArrayWithoutParamRace(V.arcologies[0].FSSupremacistRace).random()
+					);
+				}
+				if (V.rivalryDuration <= 5) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} dives into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`sobbing`);
+					r.push(Spoken(V.hostage, `"Thank you... Thank you..."`));
+					r.push(`You gently wrap your arms around ${him} in a comforting embrace. ${He}'s nearly the same as you remember ${him}, albeit acting slightly odd and covered in scars.`);
+					V.hostage.weight = 0;
+					V.hostage.muscles = 0;
+					if (V.hostage.health.health > -20) {
+						setHealth(V.hostage, 0, Math.max(V.hostage.health.shortDamage, 10), Math.max(V.hostage.health.longDamage, 10), 0, 100);
+					}
+					V.hostage.custom.tattoo = "$He has slight scarring from being beaten under your rival's rule.";
+				} else if (V.rivalryDuration <= 10) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} walks into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`sobbing`);
+					r.push(Spoken(V.hostage, `"T-thank you... T-thank you..."`));
+					r.push(`You gently draw ${his} thin body into a comforting embrace. ${He}'s nearly the same as you remember ${him}, albeit thinner, acting odd and covered in many scars.`);
+					V.hostage.weight = -20;
+					V.hostage.muscles = -20;
+					if (V.hostage.health.health > -40) {
+						setHealth(V.hostage, 0, Math.max(V.hostage.health.shortDamage, 20), Math.max(V.hostage.health.longDamage, 20), 1, 100);
+					}
+					V.hostage.custom.tattoo = "$He has noticeable scarring from being beaten under your rival's rule.";
+				} else if (V.rivalryDuration <= 15) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} shuffles into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`sobbing`);
+					r.push(Spoken(V.hostage, `"T-thank you..."`));
+					r.push(`You gently draw ${his} rail thin body into a comforting embrace, though you can't help but feel ${his}`);
+					if (V.seePreg !== 0) {
+						r.push(`swollen`);
+					} else {
+						r.push(`caved-in`);
+					}
+					r.push(`belly pressing into your own. ${He}'s nearly the same as you remember ${him}, albeit thinner,`);
+					if (V.seePreg !== 0) {
+						r.push(`pregnant,`);
+					}
+					r.push(`acting very odd, and heavily covered in scars.`);
+					V.hostage.weight = -50;
+					V.hostage.muscles = -50;
+					if (V.hostage.health.health > -60) {
+						setHealth(V.hostage, -10, 25, Math.max(V.hostage.health.longDamage, 25), 2, 100);
+					}
+					V.hostage.custom.tattoo = "$He has heavy scarring from being beaten under your rival's rule.";
+				} else if (V.rivalryDuration <= 20) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} attempts to stumble into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`but only makes it several pained steps before collapsing to the ground. You gently pick up ${his} frail,`);
+					if (V.seePreg !== 0) {
+						r.push(`bloated`);
+					} else {
+						r.push(`sickly`);
+					}
+					r.push(`body and hold it in a comforting embrace. A short`);
+					r.push(Spoken(V.hostage, `"T-thank you..."`));
+					r.push(`escapes ${his} tired lips. ${He}'s nearly the same as you remember ${him}, albeit emaciated,`);
+					if (V.seePreg !== 0) {
+						r.push(`pregnant,`);
+					}
+					r.push(`acting very odd and completely covered in scars.`);
+					V.hostage.weight = -100;
+					V.hostage.muscles = -75;
+					if (V.hostage.health.health > -80) {
+						setHealth(V.hostage, -20, 30, Math.max(V.hostage.health.longDamage, 30), 3, 100);
+					}
+					V.hostage.custom.tattoo = "$He has heavy scarring all over $his body from being beaten under your rival's rule.";
+				} else {
+					r.push(`Your mercenaries radio you upon arrival. "VIP recovered but... ${He} isn't all there."`);
+					r.push(`Upon seeing ${him}, it's obvious ${V.hostage.slaveName} has been completely broken. You beckon to the mercenary captain to give ${him} to you. Holding ${him} in your arms, it's clear that the poor ${girl} is barely clinging to life. The mercenary captain apologizes again. "My apologies, we found ${him} like that. I'm sorry," he says as he and his group exit your penthouse, leaving you with the comatose ${V.hostage.slaveName}. ${He} looks the same as you remember, albeit emaciated, battered,`);
+					if (V.seePreg !== 0) {
+						r.push(`broken, and very pregnant.`);
+					} else {
+						r.push(`and broken.`);
+					}
+					r.push(`Although, if ${he} pulls through this, ${he}'ll be devoted to you forever.`);
+					V.hostage.weight = -100;
+					V.hostage.muscles = -100;
+					if (V.hostage.health.health > -100) {
+						setHealth(V.hostage, -40, 30, Math.max(V.hostage.health.longDamage, 30), 4, 100);
+					}
+					V.hostage.custom.tattoo = "$He has intense scarring all over $his body from being beaten under your rival's rule.";
+				}
+				break;
+			case "Repopulation Focus":
+				setHealth(V.hostage, 50, V.hostage.health.shortDamage, V.hostage.health.longDamage, 0, 5);
+				WombFlush(V.hostage);
+				if (V.rivalryDuration <= 5) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} dives into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`sobbing`);
+					r.push(Spoken(V.hostage, `"They took my eggs away!"`));
+					r.push(`You gently wrap your arms around ${him} in a comforting embrace. ${He}'s exactly as you remember, though a medical scan reveals that ${his} ovaries contain absolutely zero egg cells.`);
+				} else if (V.rivalryDuration <= 10) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} gingerly approaches, uncertain if ${he} should. You pull ${him} into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`as ${he} breaks down in tears.`);
+					r.push(Spoken(V.hostage, `"They took my fertility away!"`));
+					r.push(`${He}'s exactly as you remember, though a medical scan reveals that ${his} ovaries contain absolutely zero egg cells.`);
+				} else if (V.rivalryDuration <= 15) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} shifts ${his} weight back and forth, unsure of what to make of you. As you step forward, ${he} hesitatingly approaches. Once ${he} is close enough ${he} says`);
+					r.push(Spoken(V.hostage, `"You don't have to worry about knocking me up, I'm sterile!"`));
+					r.push(`with a wink. While ${he} looks the same as you remember, ${he} certainly doesn't think the same anymore.`);
+				} else if (V.rivalryDuration <= 20) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} shifts ${his} weight back and forth, unsure of what to make of you. As you step forward, ${he} quickly steps back. After several steps, ${he} bluntly says`);
+					r.push(Spoken(V.hostage, `"I won't let you ruin my body with a child!"`));
+					r.push(`While ${he} looks the same as you remember, ${he} definitely doesn't think the same anymore.`);
+				} else {
+					V.hostage.trust = 80;
+					r.push(`Your mercenaries radio you upon arrival. "This one's got quite a lip on ${him}, you better ready yourself. We're coming in now."`);
+					r.push(`Upon seeing you, ${V.hostage.slaveName}'s eyes fill with a distinct hatred. As you step forward, ${he} stands ${his} ground. After several steps, ${he} shouts`);
+					r.push(Spoken(V.hostage, `"Stay away from me, you sick freak! My body is undefiled by child and never will be! I know your type! All you want to do is watch my belly swell with —"`));
+					r.push(`The mercenary captain quickly gags ${him}, "My apologies, I did warn you ${he} was a handful. Please be careful when you unbind ${him}, ${he} may try to do something stupid," he says as he and his group exit your penthouse, leaving you with the enraged ${V.hostage.slaveName}. ${He} looks the same as you remember, but ${he} acts nothing like the ${girl} you used to know. Odds are high that ${he}'ll cause problems for you in the future, especially given ${his} hatred for pregnancy.`);
+				}
+				break;
+			case "Eugenics":
+				setHealth(V.hostage, 50, V.hostage.health.shortDamage, V.hostage.health.longDamage, 0, 20);
+				if (V.seeHyperPreg !== 1) {
+					if (V.rivalryDuration <= 5) {
+						r.push(`Upon seeing you, ${V.hostage.slaveName} dives into your`);
+						if (V.PC.boobs >= 650) {
+							r.push(`ample bust`);
+						} else {
+							r.push(`chest`);
+						}
+						r.push(`sobbing`);
+						r.push(Spoken(V.hostage, `"They filled me with cum! I think I'm pregnant!"`));
+						r.push(`You gently wrap your arms around ${him} in a comforting embrace. ${He}'s exactly as you remember, though a medical scan reveals that ${he} is carrying ${pregNumberName(V.hostage.pregType, 2)}.`);
+					} else if (V.rivalryDuration <= 10) {
+						r.push(`Upon seeing you, ${V.hostage.slaveName} gingerly approaches, uncertain if ${he} should. You pull ${him} into your`);
+						if (V.PC.boobs >= 650) {
+							r.push(`ample bust`);
+						} else {
+							r.push(`chest`);
+						}
+						r.push(`as ${he} breaks down in tears, ${his} rounded middle pressing into your own.`);
+						r.push(Spoken(V.hostage, `"They knocked me up!"`));
+						r.push(`${He}'s exactly as you remember, though a medical scan reveals that ${he} is carrying ${pregNumberName(V.hostage.pregType, 2)}.`);
+					} else if (V.rivalryDuration <= 15) {
+						r.push(`Upon seeing you, ${V.hostage.slaveName} shifts ${his} gravid bulk back and forth, unsure of what to make of you. As you step forward, ${he} hesitatingly approaches. Once ${he} is close enough ${he} says`);
+						r.push(Spoken(V.hostage, `"Please don't take them from me, I love them..."`));
+						r.push(`While ${he} looks the same as you remember, albeit rather pregnant, ${he} certainly doesn't think the same anymore.`);
+					} else if (V.rivalryDuration <= 20) {
+						r.push(`Upon seeing you, ${V.hostage.slaveName} shifts ${his} gravid bulk back and forth, unsure of what to make of you. As you step forward, ${he} carefully steps back. After several steps, ${he} bluntly says`);
+						r.push(Spoken(V.hostage, `"I won't let you hurt them!"`));
+						r.push(`as ${he} covers ${his} pregnant belly. While ${he} looks the same as you remember, albeit very pregnant, ${he} definitely doesn't think the same anymore.`);
+					} else {
+						V.hostage.trust = 80;
+						r.push(`Your mercenaries radio you upon arrival. "This one's got quite a lip on ${him}, you better ready yourself. We're coming in now."`);
+						r.push(`Upon seeing you, ${V.hostage.slaveName}'s eyes fill with a distinct hatred. As you step forward, ${he} stands ${his} ground. After several steps, ${he} shouts`);
+						r.push(Spoken(V.hostage, `"Stay away from me, you sick fuck! How dare you steal a woman's purpose away from her! I'll fucking kill you if you try to touch my bab-"`));
+						r.push(`The mercenary captain quickly gags ${him}, "My apologies, I did warn you ${he} was a handful. Please be careful when you unbind ${him}, ${he} may try to do something stupid," he says as he and his group exit your penthouse, leaving you with the enraged ${V.hostage.slaveName}. ${He} looks the same as you remember, but ${he} acts nothing like the ${girl} you used to know. Odds are high that ${he}'ll cause problems for you in the future, especially when ${he} realizes ${his} babies didn't follow ${him} here.`);
+					}
+				} else {
+					if (V.rivalryDuration <= 5) {
+						r.push(`Upon seeing you, ${V.hostage.slaveName} dives into your`);
+						if (V.PC.boobs >= 650) {
+							r.push(`ample bust`);
+						} else {
+							r.push(`chest`);
+						}
+						r.push(`sobbing`);
+						r.push(Spoken(V.hostage, `"They filled me with cum! I think I'm pregnant!"`));
+						r.push(`You gently wrap your arms around ${him} in a comforting embrace, yet you can't help but notice how distended ${his} belly is. ${He}'s exactly as you remember, maybe a little heftier, but a medical scan reveals, horrifyingly, that ${he} is carrying over two dozen babies in ${his} womb.`);
+					} else if (V.rivalryDuration <= 10) {
+						r.push(`Upon seeing you, ${V.hostage.slaveName} gingerly approaches, uncertain if ${he} should. You try to pull ${him} into your`);
+						if (V.PC.boobs >= 650) {
+							r.push(`ample bust,`);
+						} else {
+							r.push(`chest,`);
+						}
+						r.push(`but ${his} huge pregnant belly prevents you. As ${he} breaks down in tears, ${he} moans`);
+						r.push(Spoken(V.hostage, `"My womb is soo full..."`));
+						r.push(`${He}'s nearly the same as you remember ${him}, save for ${his} huge pregnant belly, which a medical scan reveals contains over two dozen children.`);
+					} else if (V.rivalryDuration <= 15) {
+						r.push(`Upon seeing you, ${V.hostage.slaveName} shifts ${his} super gravid bulk back and forth, unsure of what to make of you. As you step forward, ${he} hesitatingly approaches. Once ${he} is close enough for ${his} monstrous belly to bump into your own, ${he} says`);
+						r.push(Spoken(V.hostage, `"It feels so good to be stuffed completely full of life. You'll let me enjoy this, won't you?"`));
+						r.push(`While ${he} looks the same as you remember, albeit grossly pregnant, ${he} certainly doesn't think the same anymore. A medical exam, much to ${his} enjoyment, reveals ${his} overfilled womb contains nearly two dozen children.`);
+					} else if (V.rivalryDuration <= 20) {
+						r.push(`Upon seeing you, ${V.hostage.slaveName} shifts ${his} hyper gravid bulk back and forth, unsure of what to make of you. As you step forward, ${he} carefully steps back. After several steps, ${he} bluntly says`);
+						r.push(Spoken(V.hostage, `"Unless you want to put more babies in me, get back!"`));
+						r.push(`as ${he} attempts to cover ${his} super-sized pregnant belly. While ${he} looks the same as you remember, albeit grotesquely pregnant, ${he} certainly doesn't think the same anymore. A medical exam, much to ${his} delight, reveals ${his} near bursting womb contains nearly two dozen children.`);
+					} else {
+						V.hostage.trust = 80;
+						r.push(`Your mercenaries radio you upon arrival. "This one's got quite a lip on ${him}, you better ready yourself. We're coming in now."`);
+						r.push(`Upon seeing you, ${V.hostage.slaveName}'s eyes fill with a distinct hatred. As you step forward, ${he} stands ${his} ground. After several steps, ${he} shouts`);
+						r.push(Spoken(V.hostage, `"Stay away from me, you sick fuck! How dare you steal a woman's purpose away from her! I'll show you! I hope my new pregnancy makes me burst all over your fucking off-"`));
+						r.push(`The mercenary captain quickly gags ${him}. "My apologies, I did warn you ${he} was a handful. Please be careful when you unbind ${him}, ${he} may try to do something stupid. Also when we raided that arcology, we saw some shit. Girls looking like they were pregnant with elephants or with bellies coated with lumps and bumps. ${He} might be carrying something terrifying in ${his} womb, just lettin' you know," he says as he and his group exit your penthouse, leaving you with the enraged ${V.hostage.slaveName}. ${He} looks the same as you remember, save for ${his} notable pot belly, but ${he} acts nothing like the ${girl} you used to know. Odds are high that ${he}'ll cause problems for you in the future, especially if ${he} is telling the truth about what lurks in ${his} womb.`);
+					}
+				}
+				break;
+			case "Gender Radicalism":
+				setHealth(V.hostage, 60, V.hostage.health.shortDamage, V.hostage.health.longDamage, 0, 20);
+				if (V.rivalryDuration <= 5) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} dives into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`sobbing`);
+					r.push(Spoken(V.hostage, `"They acted so weird!"`));
+					r.push(`You gently wrap your arms around ${him} in a comforting embrace. ${He}'s exactly as you remember, if not slightly more attached to you.`);
+				} else if (V.rivalryDuration <= 10) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} gingerly approaches, uncertain if ${he} should. You pull ${him} into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`as ${he} breaks down in tears.`);
+					r.push(Spoken(V.hostage, `"Will you be as kind to me as they were?"`));
+					r.push(`${He}'s exactly as you remember, if not slightly more attached to you.`);
+				} else if (V.rivalryDuration <= 15) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} shifts ${his} weight back and forth, unsure of what to make of you. As you step forward, ${he} hesitatingly approaches. Once ${he} is close enough ${he} asks`);
+					r.push(Spoken(V.hostage, `"Will you love me too?"`));
+					r.push(`While ${he} looks the same as you remember, ${he} certainly doesn't think the same anymore.`);
+				} else if (V.rivalryDuration <= 20) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} shifts ${his} weight back and forth, unsure of what to make of you. As you step forward, ${he} quickly steps back. After several steps, ${he} bluntly shouts`);
+					r.push(Spoken(V.hostage, `"Stay away from me you rapist!"`));
+					r.push(`While ${he} looks the same as you remember, ${he} definitely doesn't think the same anymore.`);
+				} else {
+					V.hostage.trust = 80;
+					r.push(`Your mercenaries radio you upon arrival. "This one's got quite some spunk in ${him}, you better ready yourself. We're coming in now."`);
+					r.push(`Upon seeing you, ${V.hostage.slaveName}'s eyes fill with a distinct hatred. As you step forward, ${he} stands ${his} ground. After several steps, ${he} shouts`);
+					r.push(Spoken(V.hostage, `"Stay away from me, you sick fuck! Vaginas are for sex, not assholes! Don't you dare come near my ass —"`));
+					r.push(`The mercenary captain quickly gags ${him}, "My apologies, I did warn you ${he} was a handful. Please be careful when you unbind ${him}, ${he} may try to do something stupid," he says as he and his group exit your penthouse, leaving you with the enraged ${V.hostage.slaveName}. ${He} looks the same as you remember, but ${he} acts nothing like the ${girl} you used to know. Odds are high that ${he}'ll cause problems for you in the future, given ${his} views on a ${girl}'s place in society.`);
+				}
+				break;
+			case "Gender Fundamentalism":
+				setHealth(V.hostage, 20, V.hostage.health.shortDamage, V.hostage.health.longDamage, 0, 20);
+				if (V.rivalryDuration <= 5) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} dives into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`sobbing`);
+					r.push(Spoken(V.hostage, `"They did such terrible things to my butt!"`));
+					r.push(`You gently wrap your arms around ${him} in a comforting embrace. ${He}'s exactly as you remember, if not a little curious about anal.`);
+				} else if (V.rivalryDuration <= 10) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} gingerly approaches, uncertain if ${he} should. You pull ${him} into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`as ${he} breaks down in tears.`);
+					r.push(Spoken(V.hostage, `"They broke my butthole!"`));
+					r.push(`${He}'s exactly as you remember, minus ${his} loose rear.`);
+				} else if (V.rivalryDuration <= 15) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} shifts ${his} weight back and forth, unsure of what to make of you. As you step forward, ${he} hesitatingly approaches. Once ${he} is close enough ${he} says`);
+					r.push(Spoken(V.hostage, `"Do you want to fuck my butt?`));
+					if (V.seeDicks !== 0) {
+						r.push(`Maybe touch my penis?`);
+					}
+					r.push(Spoken(V.hostage, `" While ${he} looks the same as you remember, minus ${his} very loose butthole${(V.seeDicks !== 0) ? ` and minuscule dick` : ``}, ${he} certainly doesn't think the same anymore.`));
+				} else if (V.rivalryDuration <= 20) {
+					V.hostage.trust = 60;
+					r.push(`Upon seeing you, ${V.hostage.slaveName} shifts ${his} weight back and forth, unsure of what to make of you. As you step forward, ${he} quickly steps back. After several steps, ${he} bluntly says`);
+					r.push(Spoken(V.hostage, `"Piss off vagina fucker, slaves' asses are for pounding!"`));
+					r.push(`before swinging around revealing ${his} gaping butthole. While ${he} looks the same as you remember, minus ${his} gaping anus${(V.seeDicks !== 0) ? `, tiny cock, and testicles` : ``}, ${he} definitely doesn't think the same anymore.`);
+				} else {
+					V.hostage.trust = 80;
+					r.push(`Your mercenaries radio you upon arrival. "This one's quite lively, you better ready yourself.`);
+					if (V.seeDicks !== 0) {
+						r.push(`${He}'s been rock hard the entire way here, we think ${he} might have something crammed up ${his} rear. What ever it is, it isn't dangerous.`);
+					}
+					r.push(`We're coming in now."`);
+					r.push(`Upon seeing you, ${V.hostage.slaveName}'s eyes fill with a distinct hatred. As you step forward, ${he} stands ${his} ground. After several steps, ${he} shouts`);
+					r.push(Spoken(V.hostage, `"Stay away from me, you sick fuck! Assholes are the superior sex organ!"`));
+					if (V.seeDicks !== 0) {
+						r.push(`${He} quickly flexes ${his} Kegels several times and blows a load of cum across your shoes.`);
+					} else {
+						r.push(`${He} spits on your shoes.`);
+					}
+					r.push(`The mercenary captain quickly pulls ${him} back, "My apologies, I did warn you ${he} was a handful. Please be careful when you unbind ${him}, ${he} may try to do something stupid," he says as he and his group exit your penthouse, leaving you with the enraged ${V.hostage.slaveName}. ${He} looks the same as you remember${(V.seeDicks !== 0) ? `, save for ${his} working cock and balls` : ``}, but ${he} acts nothing like the ${girl} you used to know. Odds are high that ${he}'ll cause problems for you in the future, given ${his} penchant for sticking things in butts.`);
+				}
+				break;
+			case "Paternalism":
+				if (V.rivalryDuration <= 5) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} dives into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`sobbing`);
+					r.push(Spoken(V.hostage, `"Thank you... Thank you..."`));
+					r.push(`You gently wrap your arms around ${him} in a comforting embrace. ${He}'s nearly the same as you remember ${him}, albeit acting slightly odd and covered in piercings and tattoos.`);
+					V.hostage.weight = 0;
+					if (V.hostage.health.health > -20) {
+						setHealth(V.hostage, 0, Math.max(V.hostage.health.shortDamage, 10), Math.max(V.hostage.health.longDamage, 10), 0, 70);
+					}
+				} else if (V.rivalryDuration <= 10) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} tries to crawl to you. You help ${him} into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`as ${he} sobs`);
+					r.push(Spoken(V.hostage, `"T-thank you... T-thank you..."`));
+					r.push(`You gently draw ${his} thin body into a comforting embrace. ${He}'s nearly the same as you remember ${him}, albeit thinner, acting odd and covered in piercings and tattoos.`);
+					V.hostage.weight = -20;
+					V.hostage.muscles = -20;
+					if (V.hostage.health.health > -40) {
+						setHealth(V.hostage, 0, Math.max(V.hostage.health.shortDamage, 20), Math.max(V.hostage.health.longDamage, 20), 0, 80);
+					}
+				} else if (V.rivalryDuration <= 15) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} tries to crawl to you. You help ${him} into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`as ${he} sobs. You gently draw ${his} rail thin body into a comforting embrace, though you can't help but notice several of ${his} ribs are broken. ${He}'s barely recognizable; being much thinner, acting very odd and covered in piercings and tattoos.`);
+					V.hostage.weight = -50;
+					V.hostage.muscles = -50;
+					if (V.hostage.health.health > -60) {
+						setHealth(V.hostage, -10, 25, Math.max(V.hostage.health.longDamage, 25), 1, 90);
+					}
+				} else if (V.rivalryDuration <= 20) {
+					r.push(`Upon being placed in your office, ${V.hostage.slaveName} curls into a fetal position and begins sobbing. You help ${him} into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`as ${he} pitifully struggles. You gently draw ${his} emaciated body into a comforting embrace and call out ${his} name, having realized ${he} is blind. ${He} immediately calms down and moves closer to you. ${He}'s barely recognizable; being skin and bone, acting very odd and covered in piercings and tattoos.`);
+					V.hostage.weight = -100;
+					V.hostage.muscles = -80;
+					if (V.hostage.health.health > -80) {
+						setHealth(V.hostage, -20, 30, Math.max(V.hostage.health.longDamage, 30), 1, 100);
+					}
+				} else {
+					r.push(`Your mercenaries radio you upon arrival. "VIP recovered but... I'm so sorry..."`);
+					r.push(`You immediately wretch from the smell that follows the merc troop into your office. You rise to shout at them for tracking it in when you realize what the source of the smell is. A crate containing the twisted, mutilated, inked and pierced body of ${V.hostage.slaveName}. The mercenaries see themselves out as you carefully take a biometric scan of the inert, limbless body before you. ${He} is alive, but barely, and a brain scan shows few signs of activity. You call for some servants to clean ${him} up, hoping that maybe it will draw ${him} out of ${his} stupor. Deep down, you understand the ${girl} you used to know has been twisted and broken completely; never to be the same again.`);
+					if (V.hostage.health.health > -100) {
+						setHealth(V.hostage, -40, 30, Math.max(V.hostage.health.longDamage, 30), 2, 100);
+					}
+					V.hostage.weight = -100;
+					V.hostage.muscles = -100;
+				}
+				break;
+			case "Degradationism":
+				setHealth(V.hostage, 60, V.hostage.health.shortDamage, V.hostage.health.longDamage, 0, 0);
+				if (V.rivalryDuration <= 5) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} dives into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`sobbing`);
+					r.push(Spoken(V.hostage, `"They acted so weird!"`));
+					r.push(`You gently wrap your arms around ${him} in a comforting embrace. ${He}'s exactly as you remember, if not slightly more attached to you.`);
+				} else if (V.rivalryDuration <= 10) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} gingerly approaches, uncertain if ${he} should. You pull ${him} into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`as ${he} breaks down in tears.`);
+					r.push(Spoken(V.hostage, `"Will you be as kind to me as they were?"`));
+					r.push(`${He}'s exactly as you remember, if not slightly more attached to you.`);
+				} else if (V.rivalryDuration <= 15) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} shifts ${his} weight back and forth, unsure of what to make of you. As you step forward, ${he} hesitatingly approaches. Once ${he} is close enough ${he} asks`);
+					r.push(Spoken(V.hostage, `"Will you love me too?"`));
+					r.push(`While ${he} looks the same as you remember, ${he} certainly doesn't think the same anymore.`);
+				} else if (V.rivalryDuration <= 20) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} shifts ${his} weight back and forth, unsure of what to make of you. As you step forward, ${he} quickly steps back. After several steps, ${he} bluntly says`);
+					r.push(Spoken(V.hostage, `"Stay away from me you rapist!"`));
+					r.push(`While ${he} looks the same as you remember, ${he} definitely doesn't think the same anymore.`);
+				} else {
+					V.hostage.trust = 100;
+					r.push(`Your mercenaries radio you upon arrival. "This one's got quite some spunk in ${him}, you better ready yourself. We're coming in now."`);
+					r.push(`Upon seeing you, ${V.hostage.slaveName}'s eyes fill with a distinct hatred. As you step forward, ${he} stands ${his} ground. After several steps, ${he} shouts`);
+					r.push(Spoken(V.hostage, `"Stay away from me, you sick fuck! I've seen what you do to your ${girl}s! You're sick! SICK! Don't you —"`));
+					r.push(`The mercenary captain quickly gags ${him}, "My apologies, I did warn you ${he} was a handful. Please be careful when you unbind ${him}, ${he} may try to do something stupid," he says as he and his group exit your penthouse, leaving you with the enraged ${V.hostage.slaveName}. ${He} looks the same as you remember,`);
+					if (V.seePreg !== 0) {
+						r.push(`minus ${his} rounded belly,`);
+					}
+					r.push(`but ${he} acts nothing like the ${girl} you used to know. Odds are high that ${he}'ll cause problems for you in the future, seeing as ${he} intends to undermine you at every turn.`);
+				}
+				break;
+			case "Body Purism":
+				setHealth(V.hostage, 0, Math.max(V.hostage.health.shortDamage, 15), Math.max(V.hostage.health.longDamage, 15), 0, 20);
+				if (V.rivalryDuration <= 5) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} attempts to dive into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust.`);
+					} else {
+						r.push(`chest.`);
+					}
+					r.push(`The weight of ${his} huge ${V.hostage.boobs}cc fake tits knocks the wind out of you. You embrace ${him} as best you can as ${he} sobs`);
+					r.push(Spoken(V.hostage, `"Look what they did to my chest! They ruined it!"`));
+					r.push(`${He} looks similar to how you remember, minus ${his} huge chest of course.`);
+				} else if (V.rivalryDuration <= 10) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} gingerly approaches, uncertain if ${he} should. You pull ${his} massive ${V.hostage.boobs}cc fake tits into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`as ${he} breaks down in tears.`);
+					r.push(Spoken(V.hostage, `"Why do these tit balloons feel so good?!"`));
+					r.push(`${He} looks similar to how you remember, minus ${his} massive chest of course.`);
+				} else if (V.rivalryDuration <= 15) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} shifts ${his} massive weight back and forth, unsure of what to make of you. As you step forward, ${he} attempts to move closer, only to fall to the ground under the weight of ${his} obscene ${V.hostage.boobs}cc fake tits. You kneel beside ${him}, a hand on ${his} huge fake ass, as ${he} asks`);
+					r.push(Spoken(V.hostage, `"Do you like them? I think they should be bigger..."`));
+					r.push(`The ${girl} you used to know is barely recognizable under those implants and ${he} certainly doesn't think the same anymore.`);
+				} else if (V.rivalryDuration <= 20) {
+					r.push(`${V.hostage.slaveName}'s impressive bulk is placed in your office. Upon seeing you, ${V.hostage.slaveName} shifts ${his} weight back and forth atop ${his} ${V.hostage.boobs}cc implants, unsure of what to make of you. As you step forward, ${he} screams`);
+					r.push(Spoken(V.hostage, `"Don't pop my implants!"`));
+					r.push(`The ${girl} you used to know is barely recognizable under those implants and ${he} certainly doesn't think the same anymore.`);
+				} else {
+					V.hostage.trust = 80;
+					r.push(`Your mercenaries radio you upon arrival. "We got a problem sir. ${He}, um, isn't going to fit... We could try bringing ${him} in through the penthouse balcony, but I'd worry about breaking things."`);
+					r.push(`Once ${V.hostage.slaveName}'s immense form is safely in the penthouse, you finally get a good look at ${him}. Upon seeing you, ${V.hostage.slaveName}'s eyes fill with a distinct hatred. As you step forward, ${he} begins to let out a low growl. After several steps, ${he} shouts`);
+					r.push(Spoken(V.hostage, `"Stay away from me, you sick fuck! Flat girls are trash! Real men like big fake tits and asses! You're sick! SICK! Don't you-"`));
+					r.push(`The mercenary captain quickly gags ${him}, "My apologies, I did warn you ${he} was a handful." He pats ${his} grotesque breast, adding "'Least ${he} won't be going anywhere." He and his group exit your penthouse, leaving you with the enraged ${V.hostage.slaveName}. The ${girl} you used to know is barely recognizable under those implants and ${he} certainly doesn't think the same anymore. Odds are high that ${he}'ll cause problems for you in the future, assuming you can find a doctor to remove those ridiculous implants from ${his} once flat chest. Or you could leave ${him} as an immobile ornament, though implants are definitely out of style.`);
+				}
+				break;
+			case "Transformation Fetishism":
+				setHealth(V.hostage, 60, V.hostage.health.shortDamage, V.hostage.health.longDamage, 0, 10);
+				if (V.rivalryDuration <= 5) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} dives into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`sobbing`);
+					r.push(Spoken(V.hostage, `"They told me such horrible things about you!"`));
+					r.push(`You gently wrap your arms around ${him} in a comforting embrace. ${He}'s exactly as you remember.`);
+				} else if (V.rivalryDuration <= 10) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} gingerly approaches, uncertain if ${he} should. You pull ${him} into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`as ${he} breaks down in tears.`);
+					r.push(Spoken(V.hostage, `"You aren't going to force implants into me, are you?" While ${he} looks the same as you remember, ${he} certainly doesn't think the same anymore.`));
+				} else if (V.rivalryDuration <= 15) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} shifts ${his} weight back and forth, unsure of what to make of you. As you step forward, ${he} hesitatingly approaches. Once ${he} is close enough ${he} states`);
+					r.push(Spoken(V.hostage, `"Please don't make me into a blow up doll..."`));
+					r.push(`While ${he} looks the same as you remember, ${he} certainly doesn't think the same anymore.`);
+				} else if (V.rivalryDuration <= 20) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} shifts ${his} weight back and forth, unsure of what to make of you. As you step forward, ${he} quickly steps back. After several steps, ${he} screams`);
+					r.push(Spoken(V.hostage, `"Keep away from me! I don't want balloons on my chest!"`));
+					r.push(`While ${he} looks the same as you remember, ${he} definitely doesn't think the same anymore.`);
+				} else {
+					V.hostage.trust = 80;
+					r.push(`Your mercenaries radio you upon arrival. "This one's got quite some spunk in ${him}, you better ready yourself. We're coming in now."`);
+					r.push(`Upon seeing you, ${V.hostage.slaveName}'s eyes fill with a distinct hatred. As you step forward, ${he} stands ${his} ground. After several steps, ${he} shouts`);
+					r.push(Spoken(V.hostage, `"Stay away from me, you sick fuck! I've seen what you do to your girls! Filling them with silicone and implants and shit! Don't you ever THINK abou-"`));
+					r.push(`The mercenary captain quickly gags ${him}, "My apologies, I did warn you ${he} was a handful. Please be careful when you unbind ${him}, ${he} may try to do something stupid," he says as he and his group exit your penthouse, leaving you with the enraged ${V.hostage.slaveName}. ${He} looks the same as you remember, but ${he} acts nothing like the ${girl} you used to know. Odds are high that ${he}'ll cause problems for you in the future, given ${his} hatred for implants.`);
+				}
+				break;
+			case "Youth Preferentialism":
+				setHealth(V.hostage, 60, V.hostage.health.shortDamage, V.hostage.health.longDamage, 0, 10);
+				if (V.rivalryDuration <= 5) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} dives into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`sobbing`);
+					r.push(Spoken(V.hostage, `"This old ${woman2} tried to make me ${his2} pet!"`));
+					r.push(`You gently wrap your arms around ${him} in a comforting embrace. ${He}'s exactly as you remember.`);
+				} else if (V.rivalryDuration <= 10) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} gingerly approaches, uncertain if ${he} should. You pull ${him} into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`as ${he} breaks down in tears.`);
+					r.push(Spoken(V.hostage, `"They made me make out with an old lady!"`));
+					r.push(`${He}'s exactly as you remember.`);
+				} else if (V.rivalryDuration <= 15) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} shifts ${his} weight back and forth, unsure of what to make of you. As you step forward, ${he} hesitatingly approaches. Once ${he} is close enough ${he} asks`);
+					if (V.PC.visualAge >= 50) {
+						r.push(Spoken(V.hostage, `"Were you always that attractive?"`));
+					} else {
+						r.push(Spoken(V.hostage, `"Can I hang out with some MILFs?"`));
+					}
+					r.push(`While ${he} looks the same as you remember, ${he} certainly doesn't think the same anymore.`);
+				} else if (V.rivalryDuration <= 20) {
+					V.hostage.trust = 40;
+					r.push(`Upon seeing you, ${V.hostage.slaveName} shifts ${his} weight back and forth, unsure of what to make of you. As you step forward, ${he} quickly steps back. After several steps, ${he} says`);
+					if (V.PC.visualAge >= 50) {
+						r.push(Spoken(V.hostage, `"You know, you're soo much older than me... I like that,"`), `with a wink.`);
+					} else if (V.PC.visualAge < 35) {
+						r.push(Spoken(V.hostage, `"Ew, you're soo young. Keep your hands off me!"`));
+					} else {
+						r.push(Spoken(V.hostage, `"Can you hook me up with a nice MILF?"`));
+					}
+					r.push(`While ${he} looks the same as you remember, ${he} definitely doesn't think the same anymore.`);
+				} else {
+					setHealth(V.hostage, 80, V.hostage.health.shortDamage, V.hostage.health.longDamage);
+					r.push(`Your mercenaries radio you upon arrival. "This one's got quite some spunk in ${him}, you better ready yourself. We're coming in now."`);
+					r.push(`Upon seeing you, ${V.hostage.slaveName}'s eyes fill with a distinct hatred. As you step forward, ${he} stands ${his} ground. After several steps, ${he} shouts`);
+					r.push(Spoken(V.hostage, `"How fucking DARE you split me up from my MILFy ${wife2}! I saw your arcology on the way in, and it's SICK. So many young ${girlU}s, you're sick, you hear me!? SI-"`));
+					r.push(`The mercenary captain quickly gags ${him}, "My apologies, I did warn you ${he} was a handful. Please be careful when you unbind ${him}, ${he} may try to do something stupid," he says as he and his group exit your penthouse, leaving you with the enraged ${V.hostage.slaveName}. ${He} looks the same as you remember, but ${he} acts nothing like the ${girl} you used to know. Odds are high that ${he}'ll cause problems for you in the future, given ${his} hatred for young people.`);
+				}
+				break;
+			case "Maturity Preferentialism":
+				setHealth(V.hostage, 60, V.hostage.health.shortDamage, V.hostage.health.longDamage, 0, 10);
+				if (V.rivalryDuration <= 5) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} dives into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`sobbing`);
+					r.push(Spoken(V.hostage, `"This young ${girl2} kept molesting me!"`));
+					r.push(`You gently wrap your arms around ${him} in a comforting embrace. ${He}'s exactly as you remember.`);
+				} else if (V.rivalryDuration <= 10) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} gingerly approaches, uncertain if ${he} should. You pull ${him} into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`as ${he} breaks down in tears.`);
+					r.push(Spoken(V.hostage, `"They made me make out with some young harlot!"`));
+					r.push(`${He}'s exactly as you remember.`);
+				} else if (V.rivalryDuration <= 15) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} shifts ${his} weight back and forth, unsure of what to make of you. As you step forward, ${he} hesitatingly approaches. Once ${he} is close enough ${he} asks`);
+					if (V.PC.visualAge < 35) {
+						r.push(Spoken(V.hostage, `"Were you always that attractive?"`));
+					} else {
+						r.push(Spoken(V.hostage, `"Can I hang out with the rest of the young ladies?"`));
+					}
+					r.push(`While ${he} looks the same as you remember, ${he} certainly doesn't think the same anymore.`);
+				} else if (V.rivalryDuration <= 20) {
+					V.hostage.trust = 40;
+					r.push(`Upon seeing you, ${V.hostage.slaveName} shifts ${his} weight back and forth, unsure of what to make of you. As you step forward, ${he} quickly steps back. After several steps, ${he} says`);
+					if (V.PC.visualAge < 35) {
+						r.push(Spoken(V.hostage, `"You know, you're soo young... I like that,"`), `with a wink.`);
+					} else if (V.PC.visualAge >= 50) {
+						r.push(Spoken(V.hostage, `"Ew, you're soo old. Keep your hands off me!"`));
+					} else {
+						r.push(Spoken(V.hostage, `"Can you hook me up with a nice young ${girl2}?"`));
+					}
+					r.push(`While ${he} looks the same as you remember, ${he} definitely doesn't think the same anymore.`);
+				} else {
+					V.hostage.trust = 80;
+					r.push(`Your mercenaries radio you upon arrival. "This one's got quite some spunk in ${him}, you better ready yourself. We're coming in now."`);
+					r.push(`Upon seeing you, ${V.hostage.slaveName}'s eyes fill with a distinct hatred. As you step forward, ${he} stands ${his} ground. After several steps, ${he} shouts`);
+					r.push(Spoken(V.hostage, `"How fucking DARE you split me up from my youthful ${wife2}! I saw your arcology on the way in, and it's SICK. So many old ladies, you're sick, you hear me!? SI-"`));
+					r.push(`The mercenary captain quickly gags ${him}, "My apologies, I did warn you ${he} was a handful. Please be careful when you unbind ${him}, ${he} may try to do something stupid," he says as he and his group exit your penthouse, leaving you with the enraged ${V.hostage.slaveName}. ${He} looks the same as you remember, but ${he} acts nothing like the ${girl} you used to know. Odds are high that ${he}'ll cause problems for you in the future, given ${his} hatred for older people.`);
+				}
+				break;
+			case "Slimness Enthusiasm":
+				setHealth(V.hostage, -30, V.hostage.health.shortDamage, V.hostage.health.longDamage, 0, 40);
+				V.hostage.chem = 100;
+				if (V.rivalryDuration <= 5) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} attempts to dive into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust.`);
+					} else {
+						r.push(`chest.`);
+					}
+					r.push(`The weight of ${his} huge ${V.hostage.boobs}cc tits knocks the wind out of you. You embrace ${him} as best you can, you hands sinking into ${his} soft butt, as ${he} sobs`);
+					r.push(Spoken(V.hostage, `"Look what they did to my chest and ass! They ruined them!"`));
+					r.push(`${He} looks similar to how you remember, minus ${his} huge assets of course.`);
+				} else if (V.rivalryDuration <= 10) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} gingerly approaches, uncertain if ${he} should. You pull ${his} massive ${V.hostage.boobs}cc breasts into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`as ${he} breaks down in tears.`);
+					r.push(Spoken(V.hostage, `"Why do these meat balloons feel so good?!"`));
+					r.push(`${He} looks similar to how you remember, minus ${his} massive assets of course.`);
+				} else if (V.rivalryDuration <= 15) {
+					r.push(`${V.hostage.slaveName}'s impressive bulk is placed in your office. Upon seeing you, ${V.hostage.slaveName} shifts ${his} weight back and forth atop ${his} ${V.hostage.boobs}cc breasts, causing ${his} chubby body and fat ass to jiggle, unsure of what to make of you. As you step forward, ${he} asks`);
+					r.push(Spoken(V.hostage, `"Can you make my tits bigger?"`));
+					r.push(`The ${girl} you used to know is barely recognizable under those massive tits and ${he} certainly doesn't think the same anymore.`);
+				} else if (V.rivalryDuration <= 20) {
+					r.push(`${V.hostage.slaveName}'s impressive bulk is placed in your office. Upon seeing you, ${V.hostage.slaveName} shifts ${his} weight back and forth atop ${his} ${V.hostage.boobs}cc implants, causing ${his} plump body and huge ass to jiggle, unsure of what to make of you. As you step forward, ${he} screams`);
+					r.push(Spoken(V.hostage, `"Don't take my breasts away!"`));
+					r.push(`The ${girl} you used to know is barely recognizable under those immense tits and ${he} certainly doesn't think the same anymore.`);
+				} else {
+					V.hostage.trust = 80;
+					r.push(`Your mercenaries radio you upon arrival. "We got a problem sir. ${He}, um, isn't going to fit... We could try bringing ${him} in through the penthouse balcony, but I'd worry about breaking things."`);
+					r.push(`Once ${V.hostage.slaveName}'s immense form is safely in the penthouse, you finally get a good look at ${him}. Upon seeing you, ${V.hostage.slaveName}'s eyes fill with a distinct hatred. As you step forward, ${he} begins to let out a low growl. After several steps, ${he} shouts`);
+					r.push(Spoken(V.hostage, `"Stay away from me, you sick fuck! Flat girls are trash! Real men like big tits and asses! You're sick! SICK! Don't you —"`));
+					r.push(`The mercenary captain quickly gags ${him}, "My apologies, I did warn you ${he} was a handful." He pats ${his} grotesque breast, adding "'Least ${he} won't be going anywhere." He and his group exit your penthouse, leaving you with the enraged and struggling ${V.hostage.slaveName}. You sigh at the amount of motion running through ${his} absurd tits, mountainous ass, and obese body. The ${girl} you used to know is barely recognizable under all that flesh and ${he} certainly doesn't think the same anymore. Odds are high that ${he}'ll cause problems for you in the future, once ${his} body sheds the weight. Or you could leave ${him} as an immobile ornament, though assets of that size are definitely out of style.`);
+				}
+				break;
+			case "Asset Expansionism":
+				setHealth(V.hostage, 60, V.hostage.health.shortDamage, V.hostage.health.longDamage, 0, 10);
+				if (V.rivalryDuration <= 5) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} dives into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`sobbing`);
+					r.push(Spoken(V.hostage, `"They told me such horrible things about you!"`));
+					r.push(`You gently wrap your arms around ${him} in a comforting embrace. ${He}'s exactly as you remember.`);
+				} else if (V.rivalryDuration <= 10) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} gingerly approaches, uncertain if ${he} should. You pull ${him} into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`as ${he} breaks down in tears.`);
+					r.push(Spoken(V.hostage, `"You aren't going to make my tits huge, are you?"`));
+					r.push(`While ${he} looks the same as you remember, ${he} certainly doesn't think the same anymore.`);
+				} else if (V.rivalryDuration <= 15) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} shifts ${his} weight back and forth, unsure of what to make of you. As you step forward, ${he} hesitatingly approaches. Once ${he} is close enough ${he} pleads`);
+					r.push(Spoken(V.hostage, `"Please don't turn me into a big boobed freak..."`));
+					r.push(`While ${he} looks the same as you remember, ${he} certainly doesn't think the same anymore.`);
+				} else if (V.rivalryDuration <= 20) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} shifts ${his} weight back and forth, unsure of what to make of you. As you step forward, ${he} quickly steps back. After several steps, ${he} screams`);
+					r.push(Spoken(V.hostage, `"Keep away from me! I don't want tits bigger than my body!"`));
+					r.push(`While ${he} looks the same as you remember, ${he} definitely doesn't think the same anymore.`);
+				} else {
+					V.hostage.trust = 80;
+					r.push(`Your mercenaries radio you upon arrival. "This one's got quite some spunk in ${him}, you better ready yourself. We're coming in now."`);
+					r.push(`Upon seeing you, ${V.hostage.slaveName}'s eyes fill with a distinct hatred. As you step forward, ${he} stands ${his} ground. After several steps, ${he} shouts`);
+					r.push(Spoken(V.hostage, `"Stay away from me, you sick fuck! I've seen what you do to your girls! Filling them up with growth drugs! Don't you ever THINK abou-"`));
+					r.push(`The mercenary captain quickly gags ${him}. "My apologies, I did warn you ${he} was a handful. Please be careful when you unbind ${him}, ${he} may try to do something stupid," he says as he and his group exit your penthouse, leaving you with the enraged ${V.hostage.slaveName}. ${He} looks the same as you remember, but ${he} acts nothing like the ${girl} you used to know. Odds are high that ${he}'ll cause problems for you in the future, given ${his} hatred for huge assets.`);
+				}
+				break;
+			case "Pastoralism":
+				setHealth(V.hostage, 60, V.hostage.health.shortDamage, V.hostage.health.longDamage, 0, 70);
+				if (V.rivalryDuration <= 5) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} dives into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`sobbing`);
+					r.push(Spoken(V.hostage, `"I've never had to exercise so much; I'm exhausted!"`));
+					r.push(`You gently wrap your arms around ${his} soft body in a comforting embrace. ${He}'s exactly as you remember.`);
+				} else if (V.rivalryDuration <= 10) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} gingerly approaches, uncertain if ${he} should. You pull ${him} into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust,`);
+					} else {
+						r.push(`chest,`);
+					}
+					r.push(`feeling the muscles under ${his} chubby body, as ${he} breaks down in tears.`);
+					r.push(Spoken(V.hostage, `"You aren't going to make me pump iron, are you?"`));
+					r.push(`While ${he}'s thinner than you remember, and a little more muscular, ${his} personality is exactly the same.`);
+				} else if (V.rivalryDuration <= 15) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} shifts ${his} weight back and forth, unsure of what to make of you. As you step forward, ${he} hesitatingly approaches. Once ${he} is close enough ${he} says`);
+					r.push(Spoken(V.hostage, `"I don't want to ever be so heavy again..."`));
+					r.push(`${He} is noticeably thinner and much more muscular than you remember; ${he} certainly doesn't think the same anymore, either.`);
+				} else if (V.rivalryDuration <= 20) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} shifts ${his} weight back and forth, unsure of what to make of you. As you step forward, ${he} quickly steps back. After several steps, ${he} screams`);
+					r.push(Spoken(V.hostage, `"Keep away from me! I don't want ever want to be a fat cow again!"`));
+					r.push(`${He} is thin and extremely muscular, a stark difference from the soft, chubby ${girl} you used to know; ${he} certainly doesn't think the same anymore, either.`);
+				} else {
+					V.hostage.trust = 80;
+					r.push(`Your mercenaries radio you upon arrival. "We have a problem, sir. This one is a fighter, ${he} already broke one of our guy's jaw. We think ${he} is tranq'd and restrained enough to bring in. Please be ready."`);
+					r.push(`Upon seeing you, ${V.hostage.slaveName}'s eyes fill with a distinct hatred. As you step forward, ${he} stands ${his} ground. After several steps, ${he} shouts`);
+					r.push(Spoken(V.hostage, `"Stay away from me, you sick fuck! I'll never be a cow again. DON'T YOU DARE TOUCH ME!"`));
+					r.push(`The mercenary captain is thrown back as ${he} explodes out of ${his} restraints, having been preparing to gag ${him}. The rest of the troop center their weapons on ${him}, forcing ${him} to back down. ${He} glares at you as the captain picks himself up and exits your penthouse, leaving you with the enraged ${V.hostage.slaveName}. ${He} grunts as ${he} exits the office for the slave quarters, stopping in the doorway.`);
+					r.push(Spoken(V.hostage, `"I'll be your slave, but you're going to be sorry."`));
+					r.push(`With a hand on each door frame, ${he} rips it out of the wall. ${He} lets out a single laugh while scowling at you. ${He} is thin and extremely muscular, a stark difference from the soft, chubby ${girl} you used to know; ${he} certainly doesn't think the same anymore, either. Odds are high that ${he}'ll cause problems for you in the future, given ${his} hatred for you and ${his} frightening strength.`);
+				}
+				break;
+			case "Cummunism":
+				setHealth(V.hostage, -30, V.hostage.health.shortDamage, V.hostage.health.longDamage, 0, 10);
+				if (V.rivalryDuration <= 5) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} attempts to dive into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust.`);
+					} else {
+						r.push(`chest.`);
+					}
+					r.push(`The weight of ${his} huge ${V.hostage.boobs}cc tits knocks the wind out of you. You embrace ${him} as best you can, you hands sinking into ${his} soft butt, as ${he} sobs`);
+					r.push(Spoken(V.hostage, `"They made me fat! My nipples won't stop leaking milk!"`));
+					r.push(`${He} looks similar to how you remember, minus ${his} huge milky assets of course.`);
+				} else if (V.rivalryDuration <= 10) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} gingerly approaches, uncertain if ${he} should. You pull ${his} massive ${V.hostage.boobs}cc milky breasts into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`as ${he} breaks down in tears.`);
+					r.push(Spoken(V.hostage, `"Why did they make me into a cow, I don't understand..."`));
+					r.push(`${He} looks similar to how you remember, minus ${his} massive assets of course.`);
+				} else if (V.rivalryDuration <= 15) {
+					r.push(`${V.hostage.slaveName}'s impressive bulk is placed in your office. Upon seeing you, ${V.hostage.slaveName} shifts ${his} weight back and forth atop ${his} ${V.hostage.boobs}cc breasts, causing ${his} chubby body and fat ass to jiggle, unsure of what to make of you. As you step forward, ${he} asks`);
+					r.push(Spoken(V.hostage, `"Can you milk me?"`));
+					r.push(`The ${girl} you used to know is barely recognizable under all that fat and ${he} certainly doesn't think the same anymore.`);
+				} else if (V.rivalryDuration <= 20) {
+					V.hostage.trust = 40;
+					r.push(`${V.hostage.slaveName}'s impressive bulk is placed in your office. Upon seeing you, ${V.hostage.slaveName} shifts ${his} weight back and forth atop ${his} ${V.hostage.boobs}cc breasts, causing ${his} fat body and huge ass to jiggle, unsure of what to make of you. As you step forward, ${he} asks`);
+					r.push(Spoken(V.hostage, `"I hear a baby will make my milk better, would you like to try?"`));
+					r.push(`The ${girl} you used to know is barely recognizable under those immense tits and obese body; ${he} certainly doesn't think the same anymore, either.`);
+				} else {
+					V.hostage.trust = 80;
+					r.push(`Your mercenaries radio you upon arrival. "We got a problem sir. ${He}, um, isn't going to fit... We could try bringing ${him} in through the penthouse balcony, but I'd worry about breaking things."`);
+					r.push(`Once ${V.hostage.slaveName}'s immense form is safely in the penthouse, you finally get a good look at ${him}. Upon seeing you, ${V.hostage.slaveName}'s eyes fill with a distinct hatred. As you step forward, ${he} begins to let out a low growl. After several steps, ${he} shouts`);
+					r.push(Spoken(V.hostage, `"Stay away from me, you sick fuck! Fit girls are trash! Real men like big soft bodies! You're sick! SICK! Don't you —"`));
+					r.push(`The mercenary captain quickly gags ${him}. "My apologies, I did warn you ${he} was a handful." He pats ${his} grotesque breast, adding "'Least ${he} won't be going anywhere." He and his group exit your penthouse, leaving you with the enraged and struggling ${V.hostage.slaveName}. You sigh at the amount of motion running through ${his} absurd tits, mountainous ass, and obese body. The ${girl} you used to know is barely recognizable under all that flesh and ${he} certainly doesn't think the same anymore. Odds are high that ${he}'ll cause problems for you in the future, once ${his} body sheds the weight. Or you could leave ${him} as an immobile ornament, though assets of that size are definitely out of style.`);
+				}
+				break;
+			case "Physical Idealism":
+				if (V.rivalryDuration <= 5) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} dives into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust,`);
+					} else {
+						r.push(`chest,`);
+					}
+					r.push(`${his} added heft knocking the wind out of you. You gently wrap your arms around ${him} in a comforting embrace, your arms gently sinking into ${his} soft flesh, as ${he} sobs,`);
+					r.push(Spoken(V.hostage, `"They made me fat! I'm so glad those guys let me puke up all that food; I don't even want to think how big I'd be otherwise!"`));
+					r.push(`${He} looks similar to how you remember, thanks to the pudge, though that can be easily rectified.`);
+					setHealth(V.hostage, 0, V.hostage.health.shortDamage, V.hostage.health.longDamage, 0, 0);
+				} else if (V.rivalryDuration <= 10) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} gingerly approaches, uncertain if ${he} should. You pull ${his} meaty body into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`as ${he} breaks down in tears.`);
+					r.push(Spoken(V.hostage, `"Why did they make me into a sow, I don't understand..."`));
+					r.push(`${He} looks similar to how you remember, minus ${his} added weight of course.`);
+					setHealth(V.hostage, -10, V.hostage.health.shortDamage, V.hostage.health.longDamage, 0, 0);
+				} else if (V.rivalryDuration <= 15) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} shifts ${his} weight back and forth causing ${his} plump body, big breasts and fat ass to jiggle, unsure of what to make of you. As you step forward, ${he} asks`);
+					r.push(Spoken(V.hostage, `"Can I have some food?"`));
+					r.push(`The ${girl} you used to know is barely recognizable under all that fat and ${he} certainly doesn't think the same anymore.`);
+					setHealth(V.hostage, -30, V.hostage.health.shortDamage, V.hostage.health.longDamage, 0, 0);
+				} else if (V.rivalryDuration <= 20) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} shifts ${his} weight back and forth causing ${his} fat body to jiggle, unsure of what to make of you. As you step forward, ${he} stumbles back. After several steps, ${he} screams`);
+					r.push(Spoken(V.hostage, `"Keep away from me! I don't want to work out! Stuffing my face and holes whenever I please is too much fun!"`));
+					r.push(`The ${girl} you used to know is barely recognizable under that obese body; ${he} certainly doesn't think the same anymore, either.`);
+					setHealth(V.hostage, -50, V.hostage.health.shortDamage, V.hostage.health.longDamage, 0, 0);
+				} else {
+					V.hostage.trust = 80;
+					r.push(`Your mercenaries radio you upon arrival. "We got a problem sir. ${He}, um, is rather heavy and can't walk well... We're working our way up, but, do you have a freight elevator by chance?"`);
+					r.push(`Once ${V.hostage.slaveName}'s hugely fat ass is safely in the penthouse, you finally get a good look at ${him}. Upon seeing you, ${V.hostage.slaveName}'s eyes fill with a distinct hatred. As you step forward, ${he} begins to let out a low growl. After several steps, ${he} shouts`);
+					r.push(Spoken(V.hostage, `"Stay away from me, you sick fuck! Fit girls are trash! Real men like big soft bodies! You're sick! SICK! Don't you —"`));
+					r.push(`The mercenary captain quickly gags ${him}, "My apologies, I did warn you ${he} was a handful." He pats ${his} fat coated shoulder, to which ${he} immediately sits down. Several mercs join their captain in trying to pull ${him} back to ${his} feet. A load crack and a groan of pain escapes the captain as he drops to the ground clutching his back. His comrades quickly help him from the penthouse, leaving you to deal with the scowling blob of fat and flesh. ${He} is intent on not budging from that spot and you aren't interested in breaking anything, though you're certain ${he}'ll be begging for food within an hour and easily manipulated. ${He} is massively fat, a stark difference from the fit, thin ${girl} you used to know; ${he} certainly doesn't think the same anymore, either. Odds are high that ${he}'ll cause problems for you in the future, be it breaking furniture or getting stuck in doors, though given ${his} rather laid back life up until this point, ${he} is likely to be quite malleable. Though ${he} is wheezing quite a lot considering ${he} is just sitting there.`);
+					setHealth(V.hostage, -80, V.hostage.health.shortDamage, V.hostage.health.longDamage, 0, 0);
+				}
+				break;
+			case "Hedonistic Decadence":
+				setHealth(V.hostage, 60, V.hostage.health.shortDamage, V.hostage.health.longDamage, 0, 70);
+				if (V.rivalryDuration <= 5) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} dives into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`sobbing`);
+					r.push(Spoken(V.hostage, `"I've never had to exercise so much, I'm exhausted!"`));
+					r.push(`You gently wrap your arms around ${his} soft body in a comforting embrace. ${He}'s exactly as you remember.`);
+				} else if (V.rivalryDuration <= 10) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} gingerly approaches, uncertain if ${he} should. You pull ${him} into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust,`);
+					} else {
+						r.push(`chest,`);
+					}
+					r.push(`feeling the muscles under ${his} chubby body, as ${he} breaks down in tears.`);
+					r.push(Spoken(V.hostage, `"You aren't going to make me pump iron, are you?"`));
+					r.push(`While ${he}'s thinner than you remember, and a little more muscular, ${his} personality is exactly the same.`);
+				} else if (V.rivalryDuration <= 15) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} shifts ${his} weight back and forth, unsure of what to make of you. As you step forward, ${he} hesitatingly approaches. Once ${he} is close enough ${he} says`);
+					r.push(Spoken(V.hostage, `"I don't want to ever be so heavy again..."`));
+					r.push(`${He} is noticeably thinner and much more muscular than you remember; ${he} certainly doesn't think the same anymore, either.`);
+				} else if (V.rivalryDuration <= 20) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} shifts ${his} weight back and forth, unsure of what to make of you. As you step forward, ${he} quickly steps back. After several steps, ${he} screams`);
+					r.push(Spoken(V.hostage, `"Keep away from me! I don't want ever want to be a fat sow again!"`));
+					r.push(`${He} is thin and extremely muscular, a stark difference from the soft, chubby ${girl} you used to know; ${he} certainly doesn't think the same anymore, either.`);
+				} else {
+					V.hostage.trust = 100;
+					r.push(`Your mercenaries radio you upon arrival. "We have a problem, sir. This one is a fighter, ${he} already broke one of our guy's jaw. We think ${he} is tranq'd and restrained enough to bring in. Please be ready."`);
+					r.push(`Upon seeing you, ${V.hostage.slaveName}'s eyes fill with a distinct hatred. As you step forward, ${he} stands ${his} ground. After several steps, ${he} shouts`);
+					r.push(Spoken(V.hostage, `"Stay away from me, you sick fuck! I'll never be a cow again. DON'T YOU DARE TOUCH ME!"`));
+					r.push(`The mercenary captain is thrown back as ${he} explodes out of ${his} restraints, having been preparing to gag ${him}. The rest of the troop center their weapons on ${him}, forcing ${him} to back down. ${He} glares at you as the captain picks himself up and exits your penthouse, leaving you with the enraged ${V.hostage.slaveName}. ${He} grunts as ${he} exits the office for the slave quarters, stopping in the doorway.`);
+					r.push(Spoken(V.hostage, `"I'll be your slave, but you're going to be sorry."`));
+					r.push(`With a hand on each door frame, ${he} rips it out of the wall. ${He} lets out a single laugh while scowling at you. ${He} is thin and extremely muscular, a stark difference from the soft, chubby ${girl} you used to know; ${he} certainly doesn't think the same anymore, either. Odds are high that ${he}'ll cause problems for you in the future, given ${his} hatred for you and ${his} frightening strength.`);
+				}
+				break;
+			case "Chattel Religionism":
+				setHealth(V.hostage, 50, V.hostage.health.shortDamage, V.hostage.health.longDamage, 0, 10);
+				if (V.rivalryDuration <= 5) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} dives into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`sobbing`);
+					r.push(Spoken(V.hostage, `"They told me such horrible things about you!"`));
+					r.push(`You gently wrap your arms around ${him} in a comforting embrace. ${He}'s exactly as you remember.`);
+				} else if (V.rivalryDuration <= 10) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} gingerly approaches, uncertain if ${he} should. You pull ${him} into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`as ${he} breaks down in tears.`);
+					r.push(Spoken(V.hostage, `"You aren't trying to make some crazy religion, are you?"`));
+					r.push(`While ${he} looks the same as you remember, ${he} certainly doesn't think the same anymore.`);
+				} else if (V.rivalryDuration <= 15) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} shifts ${his} weight back and forth, unsure of what to make of you. As you step forward, ${he} hesitatingly approaches. Once ${he} is close enough ${he} pleads`);
+					r.push(Spoken(V.hostage, `"Please don't turn me into a disciple of your religion..."`));
+					r.push(`While ${he} looks the same as you remember, ${he} certainly doesn't think the same anymore.`);
+				} else if (V.rivalryDuration <= 20) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} shifts ${his} weight back and forth, unsure of what to make of you. As you step forward, ${he} quickly steps back. After several steps, ${he} screams`);
+					r.push(Spoken(V.hostage, `"Keep away from me! I don't want to be part of your cult!"`));
+					r.push(`While ${he} looks the same as you remember, ${he} definitely doesn't think the same anymore.`);
+				} else {
+					V.hostage.trust = 80;
+					r.push(`Your mercenaries radio you upon arrival. "This one's got quite some spunk in ${him}, you better ready yourself. We're coming in now."`);
+					r.push(`Upon seeing you, ${V.hostage.slaveName}'s eyes fill with a distinct hatred. As you step forward, ${he} stands ${his} ground. After several steps, ${he} shouts`);
+					r.push(Spoken(V.hostage, `"Stay away from me, you crazy psycho! Making your own religion, blasphemous! You think yourself a proph-"`));
+					r.push(`The mercenary captain quickly gags ${him}. "My apologies, I did warn you ${he} was a handful. Please be careful when you unbind ${him}, ${he} may try to do something stupid," he says, as he and his group exit your penthouse, leaving you with the enraged ${V.hostage.slaveName}. ${He} looks the same as you remember, but ${he} acts nothing like the ${girl} you used to know. Odds are high that ${he}'ll cause problems for you in the future.`);
+				}
+				break;
+			case "Multiculturalism":
+				setHealth(V.hostage, 60, V.hostage.health.shortDamage, V.hostage.health.longDamage, 0, 10);
+				if (V.rivalryDuration <= 5) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} dives into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`sobbing`);
+					r.push(Spoken(V.hostage, `"They said such crazy things!"`));
+					r.push(`You gently wrap your arms around ${him} in a comforting embrace. ${He}'s exactly as you remember.`);
+				} else if (V.rivalryDuration <= 10) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} gingerly approaches, uncertain if ${he} should. You pull ${him} into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`as ${he} breaks down in tears.`);
+					r.push(Spoken(V.hostage, `"They made me pray for your arcology; why is that?"`));
+					r.push(`${He}'s exactly as you remember.`);
+				} else if (V.rivalryDuration <= 15) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} shifts ${his} weight back and forth, unsure of what to make of you. As you step forward, ${he} hesitatingly approaches. Once ${he} is close enough ${he} prays`);
+					r.push(Spoken(V.hostage, `"Please pardon this arcology..."`));
+					r.push(`While ${he} looks the same as you remember, ${he} certainly doesn't think the same anymore.`);
+				} else if (V.rivalryDuration <= 20) {
+					V.hostage.trust = 40;
+					r.push(`Upon seeing you, ${V.hostage.slaveName} shifts ${his} weight back and forth, unsure of what to make of you. As you step forward, ${he} quickly steps back. After several steps, ${he} drops to ${his}`);
+					if (hasBothLegs(V.hostage)) {
+						r.push(`${his} knees`);
+					} else {
+						r.push(`the ground`);
+					}
+					r.push(`and begins praying`);
+					r.push(Spoken(V.hostage, `"Please pardon this arcology's sins! They know naught what they do!"`));
+					r.push(`While ${he} looks the same as you remember, ${he} definitely doesn't think the same anymore.`);
+				} else {
+					V.hostage.trust = 80;
+					r.push(`Your mercenaries radio you upon arrival. "This one's got quite a mouth on ${him}, you better ready yourself. We're coming in now."`);
+					r.push(`Upon seeing you, ${V.hostage.slaveName}'s eyes fill with a mercy. As you step forward, ${he} stands ${his} ground. After several steps, ${he} shouts`);
+					r.push(Spoken(V.hostage, `"Be still, I'll lead your arcology to salvation. Place your faith in me and be sav-"`));
+					r.push(`The mercenary captain quickly gags ${him}. "My apologies, I did warn you about that mouth. Please be careful when you unbind ${him}, ${he} may try to do something stupid," he says as he and his group exit your penthouse, leaving you with the disappointed ${V.hostage.slaveName}. ${He} looks the same as you remember, but ${he} acts nothing like the ${girl} you used to know. Odds are high that ${he}'ll cause problems for you in the future, trying to preach ${his} new faith.`);
+				}
+				break;
+			case "Intellectual Dependency":
+				setHealth(V.hostage, 80, V.hostage.health.shortDamage, V.hostage.health.longDamage, 0, 5);
+				if (V.rivalryDuration <= 5) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} dives into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`sobbing`);
+					r.push(Spoken(V.hostage, `"They tried to teach me the most obscene things!"`));
+					r.push(`You gently wrap your arms around ${him} in a comforting embrace. ${He}'s exactly as you remember.`);
+				} else if (V.rivalryDuration <= 10) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} gingerly approaches, uncertain if ${he} should. You pull ${him} into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`as ${he} breaks down in tears.`);
+					r.push(Spoken(V.hostage, `"They made me a whore. I feel so disgusting..."`));
+					r.push(`${He}'s exactly as you remember.`);
+				} else if (V.rivalryDuration <= 15) {
+					V.hostage.devotion = 40;
+					V.hostage.trust = 40;
+					r.push(`Upon seeing you, ${V.hostage.slaveName} stiffens up and waits for you to make a move. ${He} holds completely still, even as you place a hand on ${his} shoulder. ${He} stutters out a quiet`);
+					r.push(Spoken(V.hostage, `"${Master}? W-what may I do f-for you?"`));
+					r.push(`While ${he} looks the same as you remember, ${he} certainly doesn't think the same anymore.`);
+				} else if (V.rivalryDuration <= 20) {
+					V.hostage.devotion = 65;
+					V.hostage.trust = 65;
+					r.push(`Upon seeing you, ${V.hostage.slaveName} graciously bows, giving you a lovely view down ${his} cleavage. ${He} holds this position, before stating`);
+					r.push(Spoken(V.hostage, `"My body is yours to use."`));
+					r.push(`While ${he} looks the same as you remember, ${he} certainly doesn't think the same anymore.`);
+				} else {
+					V.hostage.devotion = 100;
+					V.hostage.trust = 100;
+					r.push(`Upon seeing you, ${V.hostage.slaveName} graciously bows, giving you a lovely view down ${his} cleavage, before resuming ${his} perfect stance.`);
+					r.push(Spoken(V.hostage, `"I am your property now and any thoughts of my previous owner are no longer relevant. Any feelings I may have had have been left behind and will not influence me. I am yours to use as you please, no matter what the outcome may be. How may I service you, ${Master}?"`));
+					r.push(`While ${he} looks the same as you remember, ${he} certainly doesn't think the same anymore.`);
+				}
+				break;
+			case "Slave Professionalism":
+				setHealth(V.hostage, 60, V.hostage.health.shortDamage, V.hostage.health.longDamage, 0, 0);
+				if (V.rivalryDuration <= 5) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} dives into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`sobbing`);
+					r.push(Spoken(V.hostage, `"They did things to me! My head hurts so much..."`));
+					r.push(`You gently wrap your arms around ${him} in a comforting embrace. ${He}'s exactly as you remember.`);
+				} else if (V.rivalryDuration <= 10) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} gingerly approaches, uncertain if ${he} should. You pull ${him} into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`as ${he} breaks down in tears.`);
+					r.push(Spoken(V.hostage, `"I can barely remember things anymore; who were you again? I hate to ask, but... I need a good fuck right now..."`));
+					r.push(`While ${he} looks the same as you remember, ${he} certainly can't think the same anymore.`);
+				} else if (V.rivalryDuration <= 15) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} shifts ${his} weight back and forth, unsure of what to make of you. As you step forward, ${he} bounces into your arms.`);
+					r.push(Spoken(V.hostage, `"Wanna do it?"`));
+					r.push(`While ${he} looks the same as you remember, ${he} certainly doesn't think the same anymore.`);
+				} else if (V.rivalryDuration <= 20) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} wastes no time in`);
+					if (V.PC.dick !== 0) {
+						r.push(`unbuckling your pants`);
+					} else {
+						r.push(`slipping under your skirt`);
+					}
+					r.push(`and going to town. While ${he} looks the same as you remember${(V.seePreg !== 0) ? `, albeit a little pregnant` : ``}, ${he} definitely doesn't think the same anymore.`);
+				} else {
+					r.push(`Your mercenaries radio you upon arrival. "This one's got one thing ${his} mind, you better ready yourself. We're coming in now."`);
+					r.push(`Upon seeing you, ${V.hostage.slaveName}'s eyes fill with excitement. As you step forward, ${he} struggles against ${his} bindings, desperately trying to get loose. The mercenary captain yanks ${him} back. "My apologies, the only thing left of ${his} mind is a libido it feels like. Please be careful when you unbind ${him}, ${he}'s nothing more than a horny idiot now," he says as he and his group exit your penthouse, leaving you with the dripping ${V.hostage.slaveName}. ${He} looks the same as you remember${(V.seePreg !== 0) ? `, albeit a little pregnant` : ``}, but ${he} acts nothing like the ${girl} you used to know. ${He}'s probably too dumb to manage to cause any trouble, but is likely to be high maintenance given ${his} ineptitude and nymphomania.`);
+				}
+				break;
+			case "Petite Admiration":
+				setHealth(V.hostage, 60, V.hostage.health.shortDamage, V.hostage.health.longDamage, 0, 10);
+				if (V.rivalryDuration <= 5) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} dives into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`sobbing`);
+					r.push(Spoken(V.hostage, `"This giant ${woman2} tried to make me ${his2} pet!"`));
+					r.push(`You gently wrap your arms around ${him} in a comforting embrace. ${He}'s exactly as you remember.`);
+				} else if (V.rivalryDuration <= 10) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} gingerly approaches, uncertain if ${he} should. You pull ${him} into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`as ${he} breaks down in tears.`);
+					r.push(Spoken(V.hostage, `"They made me make out with a giant!"`));
+					r.push(`${He}'s exactly as you remember.`);
+				} else if (V.rivalryDuration <= 15) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} shifts ${his} weight back and forth, unsure of what to make of you. As you step forward, ${he} hesitatingly approaches. Once ${he} is close enough ${he} asks`);
+					/* player height check here */
+					r.push(Spoken(V.hostage, `"Can I hang out with someone taller than me?"`));
+					r.push(`While ${he} looks the same as you remember, ${he} certainly doesn't think the same anymore.`);
+				} else if (V.rivalryDuration <= 20) {
+					V.hostage.trust = 40;
+					r.push(`Upon seeing you, ${V.hostage.slaveName} shifts ${his} weight back and forth, unsure of what to make of you. As you step forward, ${he} quickly steps back. After several steps, ${he} says`);
+					/* player height check here */
+					r.push(Spoken(V.hostage, `"Can you hook me up with someone nice and tall?"`));
+					r.push(`While ${he} looks the same as you remember, ${he} definitely doesn't think the same anymore.`);
+				} else {
+					V.hostage.trust = 80;
+					r.push(`Your mercenaries radio you upon arrival. "This one's got quite some spunk in ${him}, you better ready yourself. We're coming in now."`);
+					r.push(`Upon seeing you, ${V.hostage.slaveName}'s eyes fill with a distinct hatred. As you step forward, ${he} stands ${his} ground. After several steps, ${he} shouts`);
+					r.push(Spoken(V.hostage, `"How fucking DARE you split me up from my sweet giant! I saw your arcology on the way in, and it's SICK. So many little girls, you're sick, you hear me!? SI-"`));
+					r.push(`The mercenary captain quickly gags ${him}, "My apologies, I did warn you ${he} was a handful. Please be careful when you unbind ${him}, ${he} may try to do something stupid," he says as he and his group exit your penthouse, leaving you with the enraged ${V.hostage.slaveName}. ${He} looks the same as you remember, but ${he} acts nothing like the ${girl} you used to know. Odds are high that ${he}'ll cause problems for you in the future, given ${his} hatred for the short.`);
+				}
+				break;
+			case "Statuesque Glorification":
+				setHealth(V.hostage, 60, V.hostage.health.shortDamage, V.hostage.health.longDamage, 0, 10);
+				if (V.rivalryDuration <= 5) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} dives into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`sobbing`);
+					r.push(Spoken(V.hostage, `"This midget kept molesting me!"`));
+					r.push(`You gently wrap your arms around ${him} in a comforting embrace. ${He}'s exactly as you remember.`);
+				} else if (V.rivalryDuration <= 10) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} gingerly approaches, uncertain if ${he} should. You pull ${him} into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`as ${he} breaks down in tears.`);
+					r.push(Spoken(V.hostage, `"They made me get on${(hasBothLegs(V.hostage)) ? `my knees` : `the ground`}and make out with some tiny harlot!"`));
+					r.push(`${He}'s exactly as you remember.`);
+				} else if (V.rivalryDuration <= 15) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} shifts ${his} weight back and forth, unsure of what to make of you. As you step forward, ${he} hesitatingly approaches. Once ${he} is close enough ${he} asks`);
+					/* player height check here */
+
+					r.push(Spoken(V.hostage, `"Is there anyone shorter I can hang out with around here?"`));
+					r.push(`While ${he} looks the same as you remember, ${he} certainly doesn't think the same anymore.`);
+				} else if (V.rivalryDuration <= 20) {
+					V.hostage.trust = 40;
+					r.push(`Upon seeing you, ${V.hostage.slaveName} shifts ${his} weight back and forth, unsure of what to make of you. As you step forward, ${he} quickly steps back. After several steps, ${he} says`);
+					/* player height check here */
+
+					r.push(Spoken(V.hostage, `"Can you hook me up with someone on the short side? I didn't really notice anyone on the way in..."`));
+					r.push(`While ${he} looks the same as you remember, ${he} definitely doesn't think the same anymore.`);
+				} else {
+					V.hostage.trust = 80;
+					r.push(`Your mercenaries radio you upon arrival. "This one's got quite some spunk in ${him}, you better ready yourself. We're coming in now."`);
+					r.push(`Upon seeing you, ${V.hostage.slaveName}'s eyes fill with a distinct hatred. As you step forward, ${he} stands ${his} ground. After several steps, ${he} shouts`);
+					r.push(Spoken(V.hostage, `"How fucking DARE you split me up from my little ${wife2}! There was more love in ${his2} tiny body than in your entire arcology! To think that you fucks place everything on hei-"`));
+					r.push(`The mercenary captain quickly gags ${him}, "My apologies, I did warn you ${he} was a handful. Please be careful when you unbind ${him}, ${he} may try to do something stupid," he says as he and his group exit your penthouse, leaving you with the enraged ${V.hostage.slaveName}. ${He} looks the same as you remember, but ${he} acts nothing like the ${girl} you used to know. Odds are high that ${he}'ll cause problems for you in the future, given ${his} hatred for tall people.`);
+				}
+				break;
+			default:
+				setHealth(V.hostage, 40, V.hostage.health.shortDamage, V.hostage.health.longDamage, 0, 10);
+				if (V.rivalryDuration <= 5) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} dives into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`sobbing`);
+					r.push(Spoken(V.hostage, `"They told me such horrible things about you!"`));
+					r.push(`You gently wrap your arms around ${him} in a comforting embrace. ${He}'s exactly as you remember.`);
+				} else if (V.rivalryDuration <= 10) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} gingerly approaches, uncertain if ${he} should. You pull ${him} into your`);
+					if (V.PC.boobs >= 650) {
+						r.push(`ample bust`);
+					} else {
+						r.push(`chest`);
+					}
+					r.push(`as ${he} breaks down in tears.`);
+					if (V.rivalryFS !== 0) {
+						r.push(Spoken(V.hostage, `"You aren't trying to make some crazy old-timey society, are you?"`));
+					} else {
+						r.push(Spoken(V.hostage, `"You aren't going to try to make me... do things to you, right?"`));
+					}
+					r.push(`While ${he} looks the same as you remember, ${he} certainly doesn't think the same anymore.`);
+				} else if (V.rivalryDuration <= 15) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} shifts ${his} weight back and forth, unsure of what to make of you. As you step forward, ${he} hesitatingly approaches. Once ${he} is close enough ${he} says`);
+					if (V.rivalryFS !== 0) {
+						r.push(Spoken(V.hostage, `"Please don't make me play along..."`));
+					} else {
+						r.push(Spoken(V.hostage, `"I don't want to be your plaything..."`));
+					}
+					r.push(`While ${he} looks the same as you remember, ${he} certainly doesn't think the same anymore.`);
+				} else if (V.rivalryDuration <= 20) {
+					r.push(`Upon seeing you, ${V.hostage.slaveName} shifts ${his} weight back and forth, unsure of what to make of you. As you step forward, ${he} quickly steps back. After several steps, ${he} screams`);
+					r.push(Spoken(V.hostage, `"Keep away from me! I don't want to be part of your crazy society!"`));
+					r.push(`While ${he} looks the same as you remember, ${he} definitely doesn't think the same anymore.`);
+				} else {
+					V.hostage.trust = 80;
+					r.push(`Your mercenaries radio you upon arrival. "This one's got quite some spunk in ${him}, you better ready yourself. We're coming in now."`);
+					r.push(`Upon seeing you, ${V.hostage.slaveName}'s eyes fill with a distinct hatred. As you step forward, ${he} stands ${his} ground. After several steps, ${he} shouts`);
+					r.push(Spoken(V.hostage, `"Stay away from me, you crazy psycho! ${(V.rivalryFS !== 0) ? `Remaking a fallen empire, madness! You think yourself a king —"` : `You think you can just take whatever you want from people — Fuck, I don't even know if you even THINK of them as people anymore! How dare you even think I —"`}`));
+					r.push(`The mercenary captain quickly gags ${him}, "My apologies, I did warn you ${he} was a handful. Please be careful when you unbind ${him}, ${he} may try to do something stupid," he says as he and his group exit your penthouse, leaving you with the enraged ${V.hostage.slaveName}. ${He} looks the same as you remember, but ${he} acts nothing like the ${girl} you used to know. Odds are high that ${he}'ll cause problems for you in the future.`);
+				}
+		}
+
+		if (V.rivalryDuration <= 10 || (V.rivalryFS === "Racial Supremacism" && V.rivalryDuration <= 20) || (V.rivalryFS === "Paternalism" && V.rivalryDuration <= 20)) {
+			r.push(`${He} considers you ${his} rescuer, since ${his} previous owner subjected ${him} to unremitting horror in an attempt`);
+			if (V.rivalryFS !== 0) {
+				r.push(`to offend your philosophy of ${V.rivalryFS}.`);
+			} else {
+				r.push(`turn ${him} against you.`);
+			}
+			r.push(`${He}'s overjoyed to be your slave.`);
+		} else if ((V.rivalryFS === "Racial Supremacism" && V.rivalryDuration > 20) || (V.rivalryFS === "Paternalism" && V.rivalryDuration > 20)) {
+			r.push(`${His} mind and body were destroyed in an attempt to offend your philosophy of ${V.rivalryFS}. If ${he} ever recovers, ${he}'d consider you ${his} savior and be overjoyed to be your slave.`);
+		} else if (V.rivalryFS === "Slave Professionalism") {
+			r.push(`${His} mind was ravaged and perverted by rampant use of psychosuppressants and aphrodisiacs. There is no coming back from the damages done.`);
+		} else if (V.rivalryFS === "Intellectual Dependency") {
+			r.push(`${He} has undergone so much slave training that ${he} considers this turn of events ultimately meaningless. You are just ${his} new owner and ${he} will serve you to the best of ${his} abilities; as a slave should.`);
+		} else if (V.rivalryDuration > 20) {
+			r.push(`You took everything from ${him} and ${he} hates you as much as ${he} possibly can for it. You ripped ${him} away from heaven to sentence ${him} to a living hell, and ${he} swears to do everything ${he} can to hurt you.`);
+		} else {
+			r.push(`${He} is horrified by this turn of events. Your rival taught ${him} a great deal about slave life in your arcology and indulged ${his} deepest fantasies. ${V.hostage.slaveName} considers becoming your slave little better than a condemnation to purgatory.`);
+		}
+
+		App.Events.addParagraph(node, r);
+		node.append(App.UI.newSlaveIntro(V.hostage));
+		return node;
+	}
+};
diff --git a/src/events/nonRandom/rival/pHostageAcquisition.tw b/src/events/nonRandom/rival/pHostageAcquisition.tw
deleted file mode 100644
index 37ff4f55f64cc47f1b01a6774469f5ad09654f30..0000000000000000000000000000000000000000
--- a/src/events/nonRandom/rival/pHostageAcquisition.tw
+++ /dev/null
@@ -1,600 +0,0 @@
-:: P hostage acquisition [nobr]
-
-<<set $nextButton = "Continue", $nextLink = "Scheduled Event", $returnTo = "Scheduled Event">>
-
-<<set $hostageRescued = 0>>
-<<set $hostage.ID += 55555>>
-<<set $hostage.weekAcquired = $week>>
-<<run Enunciate($hostage)>>
-<<run App.Utils.setLocalPronouns($hostage)>>
-<<setNonlocalPronouns $seeDicks>>
-
-<<if $hostageWife != 0>>
-	<<setLocalPronouns $hostageWife 2>>
-	<<setSpokenLocalPronouns $hostage $hostageWife>>
-<</if>>
-
-<span id="art-frame">
-	/* 000-250-006 */
-	<<if $seeImages == 1>>
-		<<if $imageChoice == 1>>
-			<div class="imageRef lrgVector"><div class="mask">&nbsp;</div><<SlaveArt $hostage 3 0>></div>
-		<<else>>
-			<div class="imageRef lrgRender"><div class="mask">&nbsp;</div><<SlaveArt $hostage 3 0>></div>
-		<</if>>
-	<</if>>
-	/* 000-250-006 */
-</span>
-
-<<= SlaveFullName($hostage)>>, once
-<<switch $PC.career>>
-<<case "wealth">>
-	a popular party $girl
-<<case "capitalist">>
-	a bright young manager
-<<case "mercenary">>
-	a logistics officer
-<<case "engineer">>
-	an arcology sales<<= $woman>>
-<<case "medicine">>
-	a surgical nurse
-<<case "slaver">>
-	an abusive pens guard
-<<case "celebrity">>
-	a popular groupie
-<<case "escort">>
-	an expensive escort
-<<case "gang">>
-	a gang member
-<<case "servant">>
-	a maid
-<<case "BlackHat">>
-	a brilliant code breaker
-<<default>>
-	a prominent Free Cities citizen
-<</switch>>
-of your acquaintance from before you were an arcology owner, and then a pawn in your rival arcology owner's campaign of psychological warfare against you, is now one of your slaves.
-Your hired mercenaries are en route now with your precious cargo.
-
-<<switch $rivalryFS>>
-<<case "Racial Subjugationism">>
-	<<if $hostage.preg > 0>>
-		<<run WombFatherRace($hostage, $arcologies[0].FSSubjugationistRace)>>
-	<</if>>
-	<<run setHealth($hostage, 50, $hostage.health.shortDamage, $hostage.health.longDamage, 0, 10)>>
-	<<if $rivalryDuration <= 5>>
-		Upon seeing you, $hostage.slaveName dives into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> sobbing "They kept trying to rape me with $arcologies[0].FSSubjugationistRace <<s>>lave<<s>>!" You gently wrap your arms around $him in a comforting embrace. $He's nearly the same as you remember $him, albeit a bit more hateful towards $arcologies[0].FSSubjugationistRace people.
-	<<elseif $rivalryDuration <= 10>>
-		Upon seeing you, $hostage.slaveName gingerly approaches, uncertain if $he should. You pull $him into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> as $he breaks down in tears. "They raped me with $arcologies[0].FSSubjugationistRace <<s>>lave<<s>>!" $He's nearly the same as you remember $him, albeit with a slight $arcologies[0].FSSubjugationistRace fetish.
-	<<elseif $rivalryDuration <= 15>>
-		Upon seeing you, $hostage.slaveName shifts $his weight back and forth, unsure of what to make of you. As you step forward, $he hesitatingly approaches. Once $he is close enough $he asks "Can I <<s>>pend <<s>>ome time with the $arcologies[0].FSSubjugationistRace <<s>>lave<<s>>?" While $he looks the same as you remember, $he certainly doesn't think the same anymore.
-	<<elseif $rivalryDuration <= 20>>
-		Upon seeing you, $hostage.slaveName shifts $his weight back and forth, unsure of what to make of you. As you step forward, $he quickly steps back. After several steps, $he bluntly asks "Can I get fucked by <<s>>ome $arcologies[0].FSSubjugationistRace <<s>>tud<<s>>?" While $he looks the same as you remember, $he definitely doesn't think the same anymore.
-	<<else>>
-		<<set $hostage.trust = 80>>
-		Your mercenaries radio you upon arrival. "This one's got quite some spunk in $him, you better ready yourself. We're coming in now."
-		Upon seeing you, $hostage.slaveName's eyes fill with a distinct hatred. As you step forward, $he stands $his ground. After several steps, $he shouts "Why do you hate $arcologies[0].FSSubjugationistRace people <<s>>o much?! They are a great ra<<c>>e, capable of the mo<<s>>t <<s>>ublime love! How dare you ta-"
-		The mercenary captain quickly gags $him. "My apologies, I did warn you $he was a handful. Please be careful when you unbind $him, 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 $hostage.slaveName. $He looks the same as you remember, but $he acts nothing like the $girl you used to know. Odds are high that $he'll cause problems for you in the future.
-	<</if>>
-<<case "Racial Supremacism">>
-	<<if $seePreg != 0>>
-		<<set $hostage.pregType = setPregType($hostage)>>
-		<<set WombInit($hostage)>>
-		<<if $arcologies[0].FSSubjugationistRace != 0>>
-			<<set _notSupreme = $arcologies[0].FSSubjugationistRace>>
-		<<else>>
-			<<set _races = App.Utils.getRaceArrayWithoutParamRace($arcologies[0].FSSupremacistRace)>>
-			<<set _notSupreme = _races.random()>>
-		<</if>>
-		<<run WombFatherRace($hostage, _notSupreme)>>
-	<</if>>
-	<<if $rivalryDuration <= 5>>
-		Upon seeing you, $hostage.slaveName dives into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> sobbing "Thank you... Thank you..." You gently wrap your arms around $him in a comforting embrace. $He's nearly the same as you remember $him, albeit acting slightly odd and covered in scars.
-		<<set $hostage.weight = 0>>
-		<<set $hostage.muscles = 0>>
-		<<if $hostage.health.health > -20>>
-			<<run setHealth($hostage, 0, Math.max($hostage.health.shortDamage, 10), Math.max($hostage.health.longDamage, 10), 0, 100)>>
-		<</if>>
-		<<set $hostage.custom.tattoo = "$He has slight scarring from being beaten under your rival's rule.">>
-	<<elseif $rivalryDuration <= 10>>
-		Upon seeing you, $hostage.slaveName walks into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> sobbing "T-thank you... T-thank you..." You gently draw $his thin body into a comforting embrace. $He's nearly the same as you remember $him, albeit thinner, acting odd and covered in many scars.
-		<<set $hostage.weight = -20>>
-		<<set $hostage.muscles = -20>>
-		<<if $hostage.health.health > -40>>
-			<<run setHealth($hostage, 0, Math.max($hostage.health.shortDamage, 20), Math.max($hostage.health.longDamage, 20), 1, 100)>>
-		<</if>>
-		<<set $hostage.custom.tattoo = "$He has noticeable scarring from being beaten under your rival's rule.">>
-	<<elseif $rivalryDuration <= 15>>
-		Upon seeing you, $hostage.slaveName shuffles into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> sobbing "T-thank you..." You gently draw $his rail thin body into a comforting embrace, though you can't help but feel $his <<if $seePreg != 0>>swollen<<else>>caved-in<</if>> belly pressing into your own. $He's nearly the same as you remember $him, albeit thinner,<<if $seePreg != 0>> pregnant,<</if>> acting very odd, and heavily covered in scars.
-		<<set $hostage.weight = -50>>
-		<<set $hostage.muscles = -50>>
-		<<if $hostage.health.health > -60>>
-			<<run setHealth($hostage, -10, 25, Math.max($hostage.health.longDamage, 25), 100), 2, 100)>>
-		<</if>>
-		<<set $hostage.custom.tattoo = "$He has heavy scarring from being beaten under your rival's rule.">>
-	<<elseif $rivalryDuration <= 20>>
-		Upon seeing you, $hostage.slaveName attempts to stumble into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> but only makes it several pained steps before collapsing to the ground. You gently pick up $his frail, <<if $seePreg != 0>>bloated<<else>>sickly<</if>> body and hold it in a comforting embrace. a short "T-thank you..." escapes $his tired lips. $He's nearly the same as you remember $him, albeit emaciated,<<if $seePreg != 0>> pregnant,<</if>> acting very odd and completely covered in scars.
-		<<set $hostage.weight = -100>>
-		<<set $hostage.muscles = -75>>
-		<<if $hostage.health.health > -80>>
-			<<run setHealth($hostage, -20, 30, Math.max($hostage.health.longDamage, 30), 1), 3, 100>>
-		<</if>>
-		<<set $hostage.custom.tattoo = "$He has heavy scarring all over $his body from being beaten under your rival's rule.">>
-	<<else>>
-		Your mercenaries radio you upon arrival. "VIP recovered but... $He isn't all there."
-		Upon seeing $him, it's obvious $hostage.slaveName has been completely broken. You beckon to the mercenary captain to give $him to you. Holding $him in your arms, it's clear that the poor $girl is barely clinging to life.
-		The mercenary captain apologizes again. "My apologies, we found $him like that. I'm sorry," he says as he and his group exit your penthouse, leaving you with the comatose $hostage.slaveName. $He looks the same as you remember, albeit emaciated, battered, <<if $seePreg != 0>>broken, and very pregnant<<else>>and broken<</if>>. Although, if $he pulls through this, $he'll be devoted to you forever.
-		<<set $hostage.weight = -100>>
-		<<set $hostage.muscles = -100>>
-		<<if $hostage.health.health > -100>>
-			<<run setHealth($hostage, -40, 30, Math.max($hostage.health.longDamage, 30), 4, 100)>>
-		<</if>>
-		<<set $hostage.custom.tattoo = "$He has intense scarring all over $his body from being beaten under your rival's rule.">>
-	<</if>>
-<<case "Repopulation Focus">>
-	<<run setHealth($hostage, 50, $hostage.health.shortDamage, $hostage.health.longDamage, 0, 5)>>
-	<<set WombFlush($hostage)>>
-	<<if $rivalryDuration <= 5>>
-		Upon seeing you, $hostage.slaveName dives into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> sobbing "They took my egg<<s>> away!" You gently wrap your arms around $him in a comforting embrace. $He's exactly as you remember, though a medical scan reveals that $his ovaries contain absolutely zero egg cells.
-	<<elseif $rivalryDuration <= 10>>
-		Upon seeing you, $hostage.slaveName gingerly approaches, uncertain if $he should. You pull $him into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> as $he breaks down in tears. "They took my fertility away!" $He's exactly as you remember, though a medical scan reveals that $his ovaries contain absolutely zero egg cells.
-	<<elseif $rivalryDuration <= 15>>
-		Upon seeing you, $hostage.slaveName shifts $his weight back and forth, unsure of what to make of you. As you step forward, $he hesitatingly approaches. Once $he is close enough $he says "You don't have to worry about knocking me up, I'm <<s>>terile!" with a wink. While $he looks the same as you remember, $he certainly doesn't think the same anymore.
-	<<elseif $rivalryDuration <= 20>>
-		Upon seeing you, $hostage.slaveName shifts $his weight back and forth, unsure of what to make of you. As you step forward, $he quickly steps back. After several steps, $he bluntly says "I won't let you ruin my body with a child!" While $he looks the same as you remember, $he definitely doesn't think the same anymore.
-	<<else>>
-		<<set $hostage.trust = 80>>
-		Your mercenaries radio you upon arrival. "This one's got quite a lip on $him, you better ready yourself. We're coming in now."
-		Upon seeing you, $hostage.slaveName's eyes fill with a distinct hatred. As you step forward, $he stands $his ground. After several steps, $he shouts "<<S>>tay away from me, you <<s>>ick freak! My body i<<s>> undefiled by child and never will be! I know your type! All you want to do i<<s>> watch my belly <<s>>well with —"
-		The mercenary captain quickly gags $him, "My apologies, I did warn you $he was a handful. Please be careful when you unbind $him, $he may try to do something stupid," he says as he and his group exit your penthouse, leaving you with the enraged $hostage.slaveName. $He looks the same as you remember, but $he acts nothing like the $girl you used to know. Odds are high that $he'll cause problems for you in the future, especially given $his hatred for pregnancy.
-	<</if>>
-<<case "Eugenics">>
-	<<run setHealth($hostage, 50, $hostage.health.shortDamage, $hostage.health.longDamage, 0, 20)>>
-	<<if $seeHyperPreg != 1>>
-		<<if $rivalryDuration <= 5>>
-			Upon seeing you, $hostage.slaveName dives into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> sobbing "They filled me with cum! I think I'm pregnant!" You gently wrap your arms around $him in a comforting embrace. $He's exactly as you remember, though a medical scan reveals that $he is carrying <<print pregNumberName($hostage.pregType, 2)>>.
-		<<elseif $rivalryDuration <= 10>>
-			Upon seeing you, $hostage.slaveName gingerly approaches, uncertain if $he should. You pull $him into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> as $he breaks down in tears, $his rounded middle pressing into your own. "They knocked me up!" $He's exactly as you remember, though a medical scan reveals that $he is carrying <<print pregNumberName($hostage.pregType, 2)>>.
-		<<elseif $rivalryDuration <= 15>>
-			Upon seeing you, $hostage.slaveName shifts $his gravid bulk back and forth, unsure of what to make of you. As you step forward, $he hesitatingly approaches. Once $he is close enough $he says "Plea<<s>>e don't take them from me, I love them..." While $he looks the same as you remember, albeit rather pregnant, $he certainly doesn't think the same anymore.
-		<<elseif $rivalryDuration <= 20>>
-			Upon seeing you, $hostage.slaveName shifts $his gravid bulk back and forth, unsure of what to make of you. As you step forward, $he carefully steps back. After several steps, $he bluntly says "I won't let you hurt them!" as $he covers $his pregnant belly. While $he looks the same as you remember, albeit very pregnant, $he definitely doesn't think the same anymore.
-		<<else>>
-			<<set $hostage.trust = 80>>
-			Your mercenaries radio you upon arrival. "This one's got quite a lip on $him, you better ready yourself. We're coming in now."
-			Upon seeing you, $hostage.slaveName's eyes fill with a distinct hatred. As you step forward, $he stands $his ground. After several steps, $he shouts "<<S>>tay away from me, you <<s>>ick fuck! How dare you <<s>>teal a woman'<<s>> purpo<<s>>e away from her! I'll fucking kill you if you try to touch my bab-"
-			The mercenary captain quickly gags $him, "My apologies, I did warn you $he was a handful. Please be careful when you unbind $him, $he may try to do something stupid," he says as he and his group exit your penthouse, leaving you with the enraged $hostage.slaveName. $He looks the same as you remember, but $he acts nothing like the $girl you used to know. Odds are high that $he'll cause problems for you in the future, especially when $he realizes $his babies didn't follow $him here.
-		<</if>>
-	<<else>>
-		<<if $rivalryDuration <= 5>>
-			Upon seeing you, $hostage.slaveName dives into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> sobbing "They filled me with cum! I think I'm pregnant!" You gently wrap your arms around $him in a comforting embrace, yet you can't help but notice how distended $his belly is. $He's exactly as you remember, maybe a little heftier, but a medical scan reveals, horrifyingly, that $he is carrying over two dozen babies in $his womb.
-		<<elseif $rivalryDuration <= 10>>
-			Upon seeing you, $hostage.slaveName gingerly approaches, uncertain if $he should. You try to pull $him into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>>, but $his huge pregnant belly prevents you. As $he breaks down in tears, $he moans "My womb is <<s>>oo full..." $He's nearly the same as you remember $him, save for $his huge pregnant belly, which a medical scan reveals contains over two dozen children.
-		<<elseif $rivalryDuration <= 15>>
-			Upon seeing you, $hostage.slaveName shifts $his super gravid bulk back and forth, unsure of what to make of you. As you step forward, $he hesitatingly approaches. Once $he is close enough for $his monstrous belly to bump into your own, $he says "It feel<<s>> so good to be <<s>>tuffed completely full of life. You'll let me enjoy thi<<s>>, won't you?" While $he looks the same as you remember, albeit grossly pregnant, $he certainly doesn't think the same anymore. A medical exam, much to $his enjoyment, reveals $his overfilled womb contains nearly two dozen children.
-		<<elseif $rivalryDuration <= 20>>
-			Upon seeing you, $hostage.slaveName shifts $his hyper gravid bulk back and forth, unsure of what to make of you. As you step forward, $he carefully steps back. After several steps, $he bluntly says "Unle<<ss>> you want to put more babie<<s>> in me, get back!" as $he attempts to cover $his super-sized pregnant belly. While $he looks the same as you remember, albeit grotesquely pregnant, $he certainly doesn't think the same anymore. A medical exam, much to $his delight, reveals $his near bursting womb contains nearly two dozen children.
-		<<else>>
-			<<set $hostage.trust = 80>>
-			Your mercenaries radio you upon arrival. "This one's got quite a lip on $him, you better ready yourself. We're coming in now."
-			Upon seeing you, $hostage.slaveName's eyes fill with a distinct hatred. As you step forward, $he stands $his ground. After several steps, $he shouts "<<S>>tay away from me, you <<s>>ick fuck! How dare you <<s>>teal a woman'<<s>> purpo<<s>>e away from her! I'll <<sh>>ow you! I hope my new pregnan<<c>>y makes me bur<<s>>t all over your fucking off-"
-			The mercenary captain quickly gags $him. "My apologies, I did warn you $he was a handful. Please be careful when you unbind $him, $he may try to do something stupid. Also when we raided that arcology, we saw some shit. Girls looking like they were pregnant with elephants or with bellies coated with lumps and bumps. $He might be carrying something terrifying in $his womb, just lettin' you know," he says as he and his group exit your penthouse, leaving you with the enraged $hostage.slaveName. $He looks the same as you remember, save for $his notable pot belly, but $he acts nothing like the $girl you used to know. Odds are high that $he'll cause problems for you in the future, especially if $he is telling the truth about what lurks in $his womb.
-		<</if>>
-	<</if>>
-<<case "Gender Radicalism">>
-	<<run setHealth($hostage, 60, $hostage.health.shortDamage, $hostage.health.longDamage, 0, 20)>>
-	<<if $rivalryDuration <= 5>>
-		Upon seeing you, $hostage.slaveName dives into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> sobbing "They acted <<s>>o weird!" You gently wrap your arms around $him in a comforting embrace. $He's exactly as you remember, if not slightly more attached to you.
-	<<elseif $rivalryDuration <= 10>>
-		Upon seeing you, $hostage.slaveName gingerly approaches, uncertain if $he should. You pull $him into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> as $he breaks down in tears. "Will you be a<<s>> kind to me a<<s>> they were?" $He's exactly as you remember, if not slightly more attached to you.
-	<<elseif $rivalryDuration <= 15>>
-		Upon seeing you, $hostage.slaveName shifts $his weight back and forth, unsure of what to make of you. As you step forward, $he hesitatingly approaches. Once $he is close enough $he asks "Will you love me too?" While $he looks the same as you remember, $he certainly doesn't think the same anymore.
-	<<elseif $rivalryDuration <= 20>>
-		Upon seeing you, $hostage.slaveName shifts $his weight back and forth, unsure of what to make of you. As you step forward, $he quickly steps back. After several steps, $he bluntly shouts "<<S>>tay away from me you rapi<<s>>t!" While $he looks the same as you remember, $he definitely doesn't think the same anymore.
-	<<else>>
-		<<set $hostage.trust = 80>>
-		Your mercenaries radio you upon arrival. "This one's got quite some spunk in $him, you better ready yourself. We're coming in now."
-		Upon seeing you, $hostage.slaveName's eyes fill with a distinct hatred. As you step forward, $he stands $his ground. After several steps, $he shouts "<<S>>tay away from me, you <<s>>ick fuck! Vagina<<s>> are for <<s>>e<<x>>, not a<<ss>>hole<<s>>! Don't you dare come near my a<<ss>> —"
-		The mercenary captain quickly gags $him, "My apologies, I did warn you $he was a handful. Please be careful when you unbind $him, $he may try to do something stupid," he says as he and his group exit your penthouse, leaving you with the enraged $hostage.slaveName. $He looks the same as you remember, but $he acts nothing like the $girl you used to know. Odds are high that $he'll cause problems for you in the future, given $his views on a $girl's place in society.
-	<</if>>
-<<case "Gender Fundamentalism">>
-	<<run setHealth($hostage, 20, $hostage.health.shortDamage, $hostage.health.longDamage, 0, 20)>>
-	<<if $rivalryDuration <= 5>>
-		Upon seeing you, $hostage.slaveName dives into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> sobbing "They did <<s>>uch terrible thing<<s>> to my butt!" You gently wrap your arms around $him in a comforting embrace. $He's exactly as you remember, if not a little curious about anal.
-	<<elseif $rivalryDuration <= 10>>
-		Upon seeing you, $hostage.slaveName gingerly approaches, uncertain if $he should. You pull $him into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> as $he breaks down in tears. "They broke my butthole!" $He's exactly as you remember, minus $his loose rear.
-	<<elseif $rivalryDuration <= 15>>
-		Upon seeing you, $hostage.slaveName shifts $his weight back and forth, unsure of what to make of you. As you step forward, $he hesitatingly approaches. Once $he is close enough $he says "Do you want to fuck my butt?<<if $seeDicks != 0>> Maybe touch my peni<<s>>?<</if>>" While $he looks the same as you remember, minus $his very loose butthole<<if $seeDicks != 0>> and minuscule dick<</if>>, $he certainly doesn't think the same anymore.
-	<<elseif $rivalryDuration <= 20>>
-		<<set $hostage.trust = 60>>
-		Upon seeing you, $hostage.slaveName shifts $his weight back and forth, unsure of what to make of you. As you step forward, $he quickly steps back. After several steps, $he bluntly says "Pi<<ss>> off vagina fucker, <<s>>lave<<s>>' a<<ss>>e<<s>> are for pounding!" before swinging around revealing $his gaping butthole. While $he looks the same as you remember, minus $his gaping anus<<if $seeDicks != 0>>, tiny cock, and testicles<</if>>, $he definitely doesn't think the same anymore.
-	<<else>>
-		<<set $hostage.trust = 80>>
-		Your mercenaries radio you upon arrival. "This one's quite lively, you better ready yourself.<<if $seeDicks != 0>> $He's been rock hard the entire way here, we think $he might have something crammed up $his rear. What ever it is, it isn't dangerous.<</if>> We're coming in now."
-		Upon seeing you, $hostage.slaveName's eyes fill with a distinct hatred. As you step forward, $he stands $his ground. After several steps, $he shouts "<<S>>tay away from me, you <<s>>ick fuck! A<<ss>>hole<<s>> are the <<s>>uperior <<s>>e<<x>> organ!"<<if $seeDicks != 0>> $He quickly flexes $his Kegels several times and blows a load of cum across your shoes<<else>> $He spits on your shoes<</if>>.
-		The mercenary captain quickly pulls $him back, "My apologies, I did warn you $he was a handful. Please be careful when you unbind $him, $he may try to do something stupid," he says as he and his group exit your penthouse, leaving you with the enraged $hostage.slaveName. $He looks the same as you remember<<if $seeDicks != 0>>, save for $his working cock and balls<</if>>, but $he acts nothing like the $girl you used to know. Odds are high that $he'll cause problems for you in the future, given $his penchant for sticking things in butts.
-	<</if>>
-<<case "Paternalism">>
-	<<if $rivalryDuration <= 5>>
-		Upon seeing you, $hostage.slaveName dives into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> sobbing "Thank you... Thank you..." You gently wrap your arms around $him in a comforting embrace. $He's nearly the same as you remember $him, albeit acting slightly odd and covered in piercings and tattoos.
-		<<set $hostage.weight = 0>>
-		<<if $hostage.health.health > -20>>
-			<<run setHealth($hostage, 0, Math.max($hostage.health.shortDamage, 10), Math.max($hostage.health.longDamage, 10), 0, 70)>>
-		<</if>>
-	<<elseif $rivalryDuration <= 10>>
-		Upon seeing you, $hostage.slaveName tries to crawl to you. You help $him into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> as $he sobs "T-thank you... T-thank you..." You gently draw $his thin body into a comforting embrace. $He's nearly the same as you remember $him, albeit thinner, acting odd and covered in piercings and tattoos.
-		<<set $hostage.weight = -20>>
-		<<set $hostage.muscles = -20>>
-		<<if $hostage.health.health > -40>>
-			<<run setHealth($hostage, 0, Math.max($hostage.health.shortDamage, 20), Math.max($hostage.health.longDamage, 20), 0, 80)>>
-		<</if>>
-	<<elseif $rivalryDuration <= 15>>
-		Upon seeing you, $hostage.slaveName tries to crawl to you. You help $him into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> as $he sobs. You gently draw $his rail thin body into a comforting embrace, though you can't help but notice several of $his ribs are broken. $He's barely recognizable; being much thinner, acting very odd and covered in piercings and tattoos.
-		<<set $hostage.weight = -50>>
-		<<set $hostage.muscles = -50>>
-		<<if $hostage.health.health > -60>>
-			<<run setHealth($hostage, -10, 25, Math.max($hostage.health.longDamage, 25), 1, 90)>>
-		<</if>>
-	<<elseif $rivalryDuration <= 20>>
-		Upon being placed in your office, $hostage.slaveName curls into a fetal position and begins sobbing. You help $him into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> as $he pitifully struggles. You gently draw $his emaciated body into a comforting embrace and call out $his name, having realized $he is blind. $He immediately calms down and moves closer to you. $He's barely recognizable; being skin and bone, acting very odd and covered in piercings and tattoos.
-		<<set $hostage.weight = -100>>
-		<<set $hostage.muscles = -80>>
-		<<if $hostage.health.health > -80>>
-			<<run setHealth($hostage, -20, 30, Math.max($hostage.health.longDamage, 30), 1, 100)>>
-		<</if>>
-	<<else>>
-		Your mercenaries radio you upon arrival. "VIP recovered but... I'm so sorry..."
-		You immediately wretch from the smell that follows the merc troop into your office. You rise to shout at them for tracking it in when you realize what the source of the smell is. A crate containing the twisted, mutilated, inked and pierced body of $hostage.slaveName. The mercenaries see themselves out as you carefully take a biometric scan of the inert, limbless body before you. $He is alive, but barely, and a brain scan shows few signs of activity. You call for some servants to clean $him up, hoping that maybe it will draw $him out of $his stupor. Deep down, you understand the $girl you used to know has been twisted and broken completely; never to be the same again.
-		<<if $hostage.health.health > -100>>
-			<<run setHealth($hostage, -40, 30, Math.max($hostage.health.longDamage, 30), 2, 100)>>
-		<</if>>
-		<<set $hostage.weight = -100>>
-		<<set $hostage.muscles = -100>>
-	<</if>>
-<<case "Degradationism">>
-	<<run setHealth($hostage, 60, $hostage.health.shortDamage, $hostage.health.longDamage, 0, 0)>>
-	<<if $rivalryDuration <= 5>>
-		Upon seeing you, $hostage.slaveName dives into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> sobbing "They acted <<s>>o weird!" You gently wrap your arms around $him in a comforting embrace. $He's exactly as you remember, if not slightly more attached to you.
-	<<elseif $rivalryDuration <= 10>>
-		Upon seeing you, $hostage.slaveName gingerly approaches, uncertain if $he should. You pull $him into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> as $he breaks down in tears. "Will you be a<<s>> kind to me a<<s>> they were?" $He's exactly as you remember, if not slightly more attached to you.
-	<<elseif $rivalryDuration <= 15>>
-		Upon seeing you, $hostage.slaveName shifts $his weight back and forth, unsure of what to make of you. As you step forward, $he hesitatingly approaches. Once $he is close enough $he asks "Will you love me too?" While $he looks the same as you remember, $he certainly doesn't think the same anymore.
-	<<elseif $rivalryDuration <= 20>>
-		Upon seeing you, $hostage.slaveName shifts $his weight back and forth, unsure of what to make of you. As you step forward, $he quickly steps back. After several steps, $he bluntly says "<<S>>tay away from me you rapi<<s>>t!" While $he looks the same as you remember, $he definitely doesn't think the same anymore.
-	<<else>>
-		<<set $hostage.trust = 100>>
-		Your mercenaries radio you upon arrival. "This one's got quite some spunk in $him, you better ready yourself. We're coming in now."
-		Upon seeing you, $hostage.slaveName's eyes fill with a distinct hatred. As you step forward, $he stands $his ground. After several steps, $he shouts "<<S>>tay away from me, you <<s>>ick fuck! I've <<s>>een what you do to your $girl<<s>>! You're <<s>>ick! <<S>>ICK! Don't you —"
-		The mercenary captain quickly gags $him, "My apologies, I did warn you $he was a handful. Please be careful when you unbind $him, $he may try to do something stupid," he says as he and his group exit your penthouse, leaving you with the enraged $hostage.slaveName. $He looks the same as you remember,<<if $seePreg != 0>> minus $his rounded belly,<</if>> but $he acts nothing like the $girl you used to know. Odds are high that $he'll cause problems for you in the future, seeing as $he intends to undermine you at every turn.
-	<</if>>
-<<case "Body Purism">>
-	<<run setHealth($hostage, 0, Math.max($hostage.health.shortDamage, 15), Math.max($hostage.health.longDamage, 15), 0, 20)>>
-	<<if $rivalryDuration <= 5>>
-		Upon seeing you, $hostage.slaveName attempts to dive into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>>. The weight of $his huge <<print $hostage.boobs>>cc fake tits knocks the wind out of you. You embrace $him as best you can as $he sobs "Look what they did to my che<<s>>t! They ruined it!" $He looks similar to how you remember, minus $his huge chest of course.
-	<<elseif $rivalryDuration <= 10>>
-		Upon seeing you, $hostage.slaveName gingerly approaches, uncertain if $he should. You pull $his massive <<print $hostage.boobs>>cc fake tits into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> as $he breaks down in tears. "Why do the<<s>>e tit balloon<<s>> feel so good?!" $He looks similar to how you remember, minus $his massive chest of course.
-	<<elseif $rivalryDuration <= 15>>
-		Upon seeing you, $hostage.slaveName shifts $his massive weight back and forth, unsure of what to make of you. As you step forward, $he attempts to move closer, only to fall to the ground under the weight of $his obscene <<print $hostage.boobs>>cc fake tits. You kneel beside $him, a hand on $his huge fake ass, as $he asks "Do you like them? I think they <<sh>>ould be bigger..." The $girl you used to know is barely recognizable under those implants and $he certainly doesn't think the same anymore.
-	<<elseif $rivalryDuration <= 20>>
-		$hostage.slaveName's impressive bulk is placed in your office. Upon seeing you, $hostage.slaveName shifts $his weight back and forth atop $his <<print $hostage.boobs>>cc implants, unsure of what to make of you. As you step forward, $he screams "Don't pop my implant<<s>>!" The $girl you used to know is barely recognizable under those implants and $he certainly doesn't think the same anymore.
-	<<else>>
-		<<set $hostage.trust = 80>>
-		Your mercenaries radio you upon arrival. "We got a problem sir. $He, um, isn't going to fit... We could try bringing $him in through the penthouse balcony, but I'd worry about breaking things."
-		Once $hostage.slaveName's immense form is safely in the penthouse, you finally get a good look at $him. Upon seeing you, $hostage.slaveName's eyes fill with a distinct hatred. As you step forward, $he begins to let out a low growl. After several steps, $he shouts "<<S>>tay away from me, you <<s>>ick fuck! Flat girl<<s>> are tra<<sh>>! Real men like big fake tit<<s>> and a<<ss>>e<<s>>! You're <<s>>ick! <<S>>ICK! Don't you-"
-		The mercenary captain quickly gags $him, "My apologies, I did warn you $he was a handful." He pats $his grotesque breast, adding "'Least $he won't be going anywhere." He and his group exit your penthouse, leaving you with the enraged $hostage.slaveName. The $girl you used to know is barely recognizable under those implants and $he certainly doesn't think the same anymore. Odds are high that $he'll cause problems for you in the future, assuming you can find a doctor to remove those ridiculous implants from $his once flat chest. Or you could leave $him as an immobile ornament, though implants are definitely out of style.
-	<</if>>
-<<case "Transformation Fetishism">>
-	<<run setHealth($hostage, 60, $hostage.health.shortDamage, $hostage.health.longDamage, 0, 10)>>
-	<<if $rivalryDuration <= 5>>
-		Upon seeing you, $hostage.slaveName dives into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> sobbing "They told me <<s>>uch horrible thing<<s>> about you!" You gently wrap your arms around $him in a comforting embrace. $He's exactly as you remember.
-	<<elseif $rivalryDuration <= 10>>
-		Upon seeing you, $hostage.slaveName gingerly approaches, uncertain if $he should. You pull $him into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> as $he breaks down in tears. "You aren't going to for<<c>>e implant<<s>> into me, are you?" While $he looks the same as you remember, $he certainly doesn't think the same anymore.
-	<<elseif $rivalryDuration <= 15>>
-		Upon seeing you, $hostage.slaveName shifts $his weight back and forth, unsure of what to make of you. As you step forward, $he hesitatingly approaches. Once $he is close enough $he states "Plea<<s>>e don't make me into a blow up doll..." While $he looks the same as you remember, $he certainly doesn't think the same anymore.
-	<<elseif $rivalryDuration <= 20>>
-		Upon seeing you, $hostage.slaveName shifts $his weight back and forth, unsure of what to make of you. As you step forward, $he quickly steps back. After several steps, $he screams "Keep away from me! I don't want balloon<<s>> on my che<<s>>t!" While $he looks the same as you remember, $he definitely doesn't think the same anymore.
-	<<else>>
-		<<set $hostage.trust = 80>>
-		Your mercenaries radio you upon arrival. "This one's got quite some spunk in $him, you better ready yourself. We're coming in now."
-		Upon seeing you, $hostage.slaveName's eyes fill with a distinct hatred. As you step forward, $he stands $his ground. After several steps, $he shouts "<<S>>tay away from me, you <<s>>ick fuck! I've <<s>>een what you do to your girl<<s>>! Filling them with <<s>>ilicone and implant<<s>> and <<sh>>it! Don't you ever THINK abou-"
-		The mercenary captain quickly gags $him, "My apologies, I did warn you $he was a handful. Please be careful when you unbind $him, $he may try to do something stupid," he says as he and his group exit your penthouse, leaving you with the enraged $hostage.slaveName. $He looks the same as you remember, but $he acts nothing like the $girl you used to know. Odds are high that $he'll cause problems for you in the future, given $his hatred for implants.
-	<</if>>
-<<case "Youth Preferentialism">>
-	<<run setHealth($hostage, 60, $hostage.health.shortDamage, $hostage.health.longDamage, 0, 10)>>
-	<<if $rivalryDuration <= 5>>
-		Upon seeing you, $hostage.slaveName dives into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> sobbing "Thi<<s>> old _woman2 tried to make me <<his 2>> pet!" You gently wrap your arms around $him in a comforting embrace. $He's exactly as you remember.
-	<<elseif $rivalryDuration <= 10>>
-		Upon seeing you, $hostage.slaveName gingerly approaches, uncertain if $he should. You pull $him into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> as $he breaks down in tears. "They made me make out with an old lady!" $He's exactly as you remember.
-	<<elseif $rivalryDuration <= 15>>
-		Upon seeing you, $hostage.slaveName shifts $his weight back and forth, unsure of what to make of you. As you step forward, $he hesitatingly approaches. Once $he is close enough $he asks "<<if $PC.visualAge >= 50>>Were you alway<<s>> that attractive?<<else>>Can I hang out with some MILF<<s>>?<</if>>" While $he looks the same as you remember, $he certainly doesn't think the same anymore.
-	<<elseif $rivalryDuration <= 20>>
-		<<set $hostage.trust = 40>>
-		Upon seeing you, $hostage.slaveName shifts $his weight back and forth, unsure of what to make of you. As you step forward, $he quickly steps back. After several steps, $he says "<<if $PC.visualAge >= 50>>You know, you're <<s>>oo much older than me... I like that," with a wink.<<elseif $PC.visualAge < 35>>Ew, you're <<s>>oo young. Keep your hand<<s>> off me!<<else>>Can you hook me up with a ni<<c>>e MILF?<</if>>" While $he looks the same as you remember, $he definitely doesn't think the same anymore.
-	<<else>>
-		<<run setHealth($hostage, 80, $hostage.health.shortDamage, $hostage.health.longDamage)>>
-		Your mercenaries radio you upon arrival. "This one's got quite some spunk in $him, you better ready yourself. We're coming in now."
-		Upon seeing you, $hostage.slaveName's eyes fill with a distinct hatred. As you step forward, $he stands $his ground. After several steps, $he shouts "How fucking DARE you <<s>>plit me up from my MILFy <<wife 2>>! I <<s>>aw your arcology on the way in, and it'<<s>> <<S>>ICK. <<S>>o many young _girlU<<s>>, you're <<s>>ick, you hear me!? <<S>>I-"
-		The mercenary captain quickly gags $him, "My apologies, I did warn you $he was a handful. Please be careful when you unbind $him, $he may try to do something stupid," he says as he and his group exit your penthouse, leaving you with the enraged $hostage.slaveName. $He looks the same as you remember, but $he acts nothing like the $girl you used to know. Odds are high that $he'll cause problems for you in the future, given $his hatred for young people.
-	<</if>>
-<<case "Maturity Preferentialism">>
-	<<run setHealth($hostage, 60, $hostage.health.shortDamage, $hostage.health.longDamage, 0, 10)>>
-	<<if $rivalryDuration <= 5>>
-		Upon seeing you, $hostage.slaveName dives into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> sobbing "Thi<<s>> young _girl2 kept mole<<s>>ting me!" You gently wrap your arms around $him in a comforting embrace. $He's exactly as you remember.
-	<<elseif $rivalryDuration <= 10>>
-		Upon seeing you, $hostage.slaveName gingerly approaches, uncertain if $he should. You pull $him into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> as $he breaks down in tears. "They made me make out with <<s>>ome young harlot!" $He's exactly as you remember.
-	<<elseif $rivalryDuration <= 15>>
-		Upon seeing you, $hostage.slaveName shifts $his weight back and forth, unsure of what to make of you. As you step forward, $he hesitatingly approaches. Once $he is close enough $he asks "<<if $PC.visualAge < 35>>Were you alway<<s>> that attractive?<<else>>Can I hang out with the re<<s>>t of the young ladie<<s>>?<</if>>" While $he looks the same as you remember, $he certainly doesn't think the same anymore.
-	<<elseif $rivalryDuration <= 20>>
-		<<set $hostage.trust = 40>>
-		Upon seeing you, $hostage.slaveName shifts $his weight back and forth, unsure of what to make of you. As you step forward, $he quickly steps back. After several steps, $he says "<<if $PC.visualAge < 35>>You know, you're <<s>>oo young... I like that," with a wink.<<elseif $PC.visualAge >= 50>>Ew, you're <<s>>oo old. Keep your hand<<s>> off me!<<else>>Can you hook me up with a ni<<c>>e young _girl2?<</if>>". While $he looks the same as you remember, $he definitely doesn't think the same anymore.
-	<<else>>
-		<<set $hostage.trust = 80>>
-		Your mercenaries radio you upon arrival. "This one's got quite some spunk in $him, you better ready yourself. We're coming in now."
-		Upon seeing you, $hostage.slaveName's eyes fill with a distinct hatred. As you step forward, $he stands $his ground. After several steps, $he shouts "How fucking DARE you <<s>>plit me up from my youthful <<wife 2>>! I <<s>>aw your arcology on the way in, and it'<<s>> <<S>>ICK. <<S>>o many old ladie<<s>>, you're <<s>>ick, you hear me!? <<S>>I-"
-		The mercenary captain quickly gags $him, "My apologies, I did warn you $he was a handful. Please be careful when you unbind $him, $he may try to do something stupid," he says as he and his group exit your penthouse, leaving you with the enraged $hostage.slaveName. $He looks the same as you remember, but $he acts nothing like the $girl you used to know. Odds are high that $he'll cause problems for you in the future, given $his hatred for older people.
-	<</if>>
-<<case "Slimness Enthusiasm">>
-	<<run setHealth($hostage, -30, $hostage.health.shortDamage, $hostage.health.longDamage, 0, 40)>>
-	<<set $hostage.chem = 100>>
-	<<if $rivalryDuration <= 5>>
-		Upon seeing you, $hostage.slaveName attempts to dive into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>>. The weight of $his huge <<print $hostage.boobs>>cc tits knocks the wind out of you. You embrace $him as best you can, you hands sinking into $his soft butt, as $he sobs "Look what they did to my che<<s>>t and a<<ss>>! They ruined them!" $He looks similar to how you remember, minus $his huge assets of course.
-	<<elseif $rivalryDuration <= 10>>
-		Upon seeing you, $hostage.slaveName gingerly approaches, uncertain if $he should. You pull $his massive <<print $hostage.boobs>>cc breasts into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> as $he breaks down in tears. "Why do the<<s>>e meat balloon<<s>> feel <<s>>o good?!" $He looks similar to how you remember, minus $his massive assets of course.
-	<<elseif $rivalryDuration <= 15>>
-		$hostage.slaveName's impressive bulk is placed in your office. Upon seeing you, $hostage.slaveName shifts $his weight back and forth atop $his <<print $hostage.boobs>>cc breasts, causing $his chubby body and fat ass to jiggle, unsure of what to make of you. As you step forward, $he asks "Can you make my tit<<s>> bigger?" The $girl you used to know is barely recognizable under those massive tits and $he certainly doesn't think the same anymore.
-	<<elseif $rivalryDuration <= 20>>
-		$hostage.slaveName's impressive bulk is placed in your office. Upon seeing you, $hostage.slaveName shifts $his weight back and forth atop $his <<print $hostage.boobs>>cc implants, causing $his plump body and huge ass to jiggle, unsure of what to make of you. As you step forward, $he screams "Don't take my brea<<s>>t<<s>> away!" The $girl you used to know is barely recognizable under those immense tits and $he certainly doesn't think the same anymore.
-	<<else>>
-		<<set $hostage.trust = 80>>
-		Your mercenaries radio you upon arrival. "We got a problem sir. $He, um, isn't going to fit... We could try bringing $him in through the penthouse balcony, but I'd worry about breaking things."
-		Once $hostage.slaveName's immense form is safely in the penthouse, you finally get a good look at $him. Upon seeing you, $hostage.slaveName's eyes fill with a distinct hatred. As you step forward, $he begins to let out a low growl. After several steps, $he shouts "<<S>>tay away from me, you <<s>>ick fuck! Flat girl<<s>> are tra<<sh>>! Real men like big tit<<s>> and a<<ss>>e<<s>>! You're <<s>>ick! <<S>>ICK! Don't you —"
-		The mercenary captain quickly gags $him, "My apologies, I did warn you $he was a handful." He pats $his grotesque breast, adding "'Least $he won't be going anywhere." He and his group exit your penthouse, leaving you with the enraged and struggling $hostage.slaveName. You sigh at the amount of motion running through $his absurd tits, mountainous ass, and obese body. The $girl you used to know is barely recognizable under all that flesh and $he certainly doesn't think the same anymore. Odds are high that $he'll cause problems for you in the future, once $his body sheds the weight. Or you could leave $him as an immobile ornament, though assets of that size are definitely out of style.
-	<</if>>
-<<case "Asset Expansionism">>
-	<<run setHealth($hostage, 60, $hostage.health.shortDamage, $hostage.health.longDamage, 0, 10)>>
-	<<if $rivalryDuration <= 5>>
-		Upon seeing you, $hostage.slaveName dives into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> sobbing "They told me <<s>>uch horrible thing<<s>> about you!" You gently wrap your arms around $him in a comforting embrace. $He's exactly as you remember.
-	<<elseif $rivalryDuration <= 10>>
-		Upon seeing you, $hostage.slaveName gingerly approaches, uncertain if $he should. You pull $him into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> as $he breaks down in tears. "You aren't going to make my tit<<s>> huge, are you?" While $he looks the same as you remember, $he certainly doesn't think the same anymore.
-	<<elseif $rivalryDuration <= 15>>
-		Upon seeing you, $hostage.slaveName shifts $his weight back and forth, unsure of what to make of you. As you step forward, $he hesitatingly approaches. Once $he is close enough $he pleads "Plea<<s>>e don't turn me into a big boobed freak..." While $he looks the same as you remember, $he certainly doesn't think the same anymore.
-	<<elseif $rivalryDuration <= 20>>
-		Upon seeing you, $hostage.slaveName shifts $his weight back and forth, unsure of what to make of you. As you step forward, $he quickly steps back. After several steps, $he screams "Keep away from me! I don't want tit<<s>> bigger than my body!" While $he looks the same as you remember, $he definitely doesn't think the same anymore.
-	<<else>>
-		<<set $hostage.trust = 80>>
-		Your mercenaries radio you upon arrival. "This one's got quite some spunk in $him, you better ready yourself. We're coming in now."
-		Upon seeing you, $hostage.slaveName's eyes fill with a distinct hatred. As you step forward, $he stands $his ground. After several steps, $he shouts "<<S>>tay away from me, you <<s>>ick fuck! I've <<s>>een what you do to your girl<<s>>! Filling them up with growth drug<<s>>! Don't you ever THINK abou-"
-		The mercenary captain quickly gags $him. "My apologies, I did warn you $he was a handful. Please be careful when you unbind $him, $he may try to do something stupid," he says as he and his group exit your penthouse, leaving you with the enraged $hostage.slaveName. $He looks the same as you remember, but $he acts nothing like the $girl you used to know. Odds are high that $he'll cause problems for you in the future, given $his hatred for huge assets.
-	<</if>>
-<<case "Pastoralism">>
-	<<run setHealth($hostage, 60, $hostage.health.shortDamage, $hostage.health.longDamage, 0, 70)>>
-	<<if $rivalryDuration <= 5>>
-		Upon seeing you, $hostage.slaveName dives into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> sobbing "I've never had to e<<x>>er<<c>>i<<s>>e <<s>>o much; I'm exhau<<s>>ted!" You gently wrap your arms around $his soft body in a comforting embrace. $He's exactly as you remember.
-	<<elseif $rivalryDuration <= 10>>
-		Upon seeing you, $hostage.slaveName gingerly approaches, uncertain if $he should. You pull $him into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>>, feeling the muscles under $his chubby body, as $he breaks down in tears. "You aren't going to make me pump iron, are you?" While $he's thinner than you remember, and a little more muscular, $his personality is exactly the same.
-	<<elseif $rivalryDuration <= 15>>
-		Upon seeing you, $hostage.slaveName shifts $his weight back and forth, unsure of what to make of you. As you step forward, $he hesitatingly approaches. Once $he is close enough $he says "I don't want to ever be <<s>>o heavy again..." $He is noticeably thinner and much more muscular than you remember; $he certainly doesn't think the same anymore, either.
-	<<elseif $rivalryDuration <= 20>>
-		Upon seeing you, $hostage.slaveName shifts $his weight back and forth, unsure of what to make of you. As you step forward, $he quickly steps back. After several steps, $he screams "Keep away from me! I don't want ever want to be a fat cow again!" $He is thin and extremely muscular, a stark difference from the soft, chubby $girl you used to know; $he certainly doesn't think the same anymore, either.
-	<<else>>
-		<<set $hostage.trust = 80>>
-		Your mercenaries radio you upon arrival. "We have a problem, sir. This one is a fighter, $he already broke one of our guy's jaw. We think $he is tranq'd and restrained enough to bring in. Please be ready."
-		Upon seeing you, $hostage.slaveName's eyes fill with a distinct hatred. As you step forward, $he stands $his ground. After several steps, $he shouts "<<S>>tay away from me, you <<s>>ick fuck! I'll never be a cow again. DON'T YOU DARE TOUCH ME!"
-		The mercenary captain is thrown back as $he explodes out of $his restraints, having been preparing to gag $him. The rest of the troop center their weapons on $him, forcing $him to back down. $He glares at you as the captain picks himself up and exits your penthouse, leaving you with the enraged $hostage.slaveName. $He grunts as $he exits the office for the slave quarters, stopping in the doorway. "I'll be your <<s>>lave, but you're going to be <<s>>orry." With a hand on each door frame, $he rips it out of the wall. $He lets out a single laugh while scowling at you. $He is thin and extremely muscular, a stark difference from the soft, chubby $girl you used to know; $he certainly doesn't think the same anymore, either. Odds are high that $he'll cause problems for you in the future, given $his hatred for you and $his frightening strength.
-	<</if>>
-<<case "Cummunism">>
-	<<run setHealth($hostage, -30, $hostage.health.shortDamage, $hostage.health.longDamage, 0, 10)>>
-	<<if $rivalryDuration <= 5>>
-		Upon seeing you, $hostage.slaveName attempts to dive into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>>. The weight of $his huge <<print $hostage.boobs>>cc tits knocks the wind out of you. You embrace $him as best you can, you hands sinking into $his soft butt, as $he sobs "They made me fat! My nipple<<s>> won't <<s>>top leaking milk!" $He looks similar to how you remember, minus $his huge milky assets of course.
-	<<elseif $rivalryDuration <= 10>>
-		Upon seeing you, $hostage.slaveName gingerly approaches, uncertain if $he should. You pull $his massive <<print $hostage.boobs>>cc milky breasts into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> as $he breaks down in tears. "Why did they make me into a cow, I don't under<<s>>tand..." $He looks similar to how you remember, minus $his massive assets of course.
-	<<elseif $rivalryDuration <= 15>>
-		$hostage.slaveName's impressive bulk is placed in your office. Upon seeing you, $hostage.slaveName shifts $his weight back and forth atop $his <<print $hostage.boobs>>cc breasts, causing $his chubby body and fat ass to jiggle, unsure of what to make of you. As you step forward, $he asks "Can you milk me?" The $girl you used to know is barely recognizable under all that fat and $he certainly doesn't think the same anymore.
-	<<elseif $rivalryDuration <= 20>>
-		<<set $hostage.trust = 40>>
-		$hostage.slaveName's impressive bulk is placed in your office. Upon seeing you, $hostage.slaveName shifts $his weight back and forth atop $his <<print $hostage.boobs>>cc breasts, causing $his fat body and huge ass to jiggle, unsure of what to make of you. As you step forward, $he asks "I hear a baby will make my milk better, would you like to try?" The $girl you used to know is barely recognizable under those immense tits and obese body; $he certainly doesn't think the same anymore, either.
-	<<else>>
-		<<set $hostage.trust = 80>>
-		Your mercenaries radio you upon arrival. "We got a problem sir. $He, um, isn't going to fit... We could try bringing $him in through the penthouse balcony, but I'd worry about breaking things."
-		Once $hostage.slaveName's immense form is safely in the penthouse, you finally get a good look at $him. Upon seeing you, $hostage.slaveName's eyes fill with a distinct hatred. As you step forward, $he begins to let out a low growl. After several steps, $he shouts "<<S>>tay away from me, you <<s>>ick fuck! Fit girl<<s>> are tra<<sh>>! Real men like big <<s>>oft bodie<<s>>! You're <<s>>ick! <<S>>ICK! Don't you —"
-		The mercenary captain quickly gags $him. "My apologies, I did warn you $he was a handful." He pats $his grotesque breast, adding "'Least $he won't be going anywhere." He and his group exit your penthouse, leaving you with the enraged and struggling $hostage.slaveName. You sigh at the amount of motion running through $his absurd tits, mountainous ass, and obese body. The $girl you used to know is barely recognizable under all that flesh and $he certainly doesn't think the same anymore. Odds are high that $he'll cause problems for you in the future, once $his body sheds the weight. Or you could leave $him as an immobile ornament, though assets of that size are definitely out of style.
-	<</if>>
-<<case "Physical Idealism">>
-	<<if $rivalryDuration <= 5>>
-		Upon seeing you, $hostage.slaveName dives into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>>, $his added heft knocking the wind out of you. You gently wrap your arms around $him in a comforting embrace, your arms gently sinking into $his soft flesh, as $he sobs, "They made me fat! I'm <<s>>o glad tho<<s>>e guy<<s>> let me puke up all that food; I don't even want to think how big I'd be otherwi<<s>>e!" $He looks similar to how you remember, thanks to the pudge, though that can be easily rectified.
-		<<run setHealth($hostage, 0, $hostage.health.shortDamage, $hostage.health.longDamage, 0, 0)>>
-	<<elseif $rivalryDuration <= 10>>
-		Upon seeing you, $hostage.slaveName gingerly approaches, uncertain if $he should. You pull $his meaty body into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> as $he breaks down in tears. "Why did they make me into a <<s>>ow, I don't under<<s>>tand..." $He looks similar to how you remember, minus $his added weight of course.
-		<<run setHealth($hostage, -10, $hostage.health.shortDamage, $hostage.health.longDamage, 0, 0)>>
-	<<elseif $rivalryDuration <= 15>>
-		Upon seeing you, $hostage.slaveName shifts $his weight back and forth causing $his plump body, big breasts and fat ass to jiggle, unsure of what to make of you. As you step forward, $he asks "Can I have <<s>>ome food?" The $girl you used to know is barely recognizable under all that fat and $he certainly doesn't think the same anymore.
-		<<run setHealth($hostage, -30, $hostage.health.shortDamage, $hostage.health.longDamage, 0, 0)>>
-	<<elseif $rivalryDuration <= 20>>
-		Upon seeing you, $hostage.slaveName shifts $his weight back and forth causing $his fat body to jiggle, unsure of what to make of you. As you step forward, $he stumbles back. After several steps, $he screams "Keep away from me! I don't want to work out! <<S>>tuffing my fa<<c>>e and hole<<s>> whenever I plea<<s>>e i<<s>> too much fun!" The $girl you used to know is barely recognizable under that obese body; $he certainly doesn't think the same anymore, either.
-		<<run setHealth($hostage, -50, $hostage.health.shortDamage, $hostage.health.longDamage, 0, 0)>>
-	<<else>>
-		<<set $hostage.trust = 80>>
-		Your mercenaries radio you upon arrival. "We got a problem sir. $He, um, is rather heavy and can't walk well... We're working our way up, but, do you have a freight elevator by chance?"
-		Once $hostage.slaveName's hugely fat ass is safely in the penthouse, you finally get a good look at $him. Upon seeing you, $hostage.slaveName's eyes fill with a distinct hatred. As you step forward, $he begins to let out a low growl. After several steps, $he shouts "<<S>>tay away from me, you <<s>>ick fuck! Fit girl<<s>> are tra<<sh>>! Real men like big <<s>>oft bodie<<s>>! You're <<s>>ick! <<S>>ICK! Don't you —"
-		The mercenary captain quickly gags $him, "My apologies, I did warn you $he was a handful." He pats $his fat coated shoulder, to which $he immediately sits down. Several mercs join their captain in trying to pull $him back to $his feet. A load crack and a groan of pain escapes the captain as he drops to the ground clutching his back. His comrades quickly help him from the penthouse, leaving you to deal with the scowling blob of fat and flesh. $He is intent on not budging from that spot and you aren't interested in breaking anything, though you're certain $he'll be begging for food within an hour and easily manipulated. $He is massively fat, a stark difference from the fit, thin $girl you used to know; $he certainly doesn't think the same anymore, either. Odds are high that $he'll cause problems for you in the future, be it breaking furniture or getting stuck in doors, though given $his rather laid back life up until this point, $he is likely to be quite malleable. Though $he is wheezing quite a lot considering $he is just sitting there.
-		<<run setHealth($hostage, -80, $hostage.health.shortDamage, $hostage.health.longDamage, 0, 0)>>
-	<</if>>
-<<case "Hedonistic Decadence">>
-	<<run setHealth($hostage, 60, $hostage.health.shortDamage, $hostage.health.longDamage, 0, 70)>>
-	<<if $rivalryDuration <= 5>>
-		Upon seeing you, $hostage.slaveName dives into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> sobbing "I've never had to e<<x>>er<<c>>i<<s>>e <<s>>o much, I'm exhau<<s>>ted!" You gently wrap your arms around $his soft body in a comforting embrace. $He's exactly as you remember.
-	<<elseif $rivalryDuration <= 10>>
-		Upon seeing you, $hostage.slaveName gingerly approaches, uncertain if $he should. You pull $him into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>>, feeling the muscles under $his chubby body, as $he breaks down in tears. "You aren't going to make me pump iron, are you?" While $he's thinner than you remember, and a little more muscular, $his personality is exactly the same.
-	<<elseif $rivalryDuration <= 15>>
-		Upon seeing you, $hostage.slaveName shifts $his weight back and forth, unsure of what to make of you. As you step forward, $he hesitatingly approaches. Once $he is close enough $he says "I don't want to ever be <<s>>o heavy again..." $He is noticeably thinner and much more muscular than you remember; $he certainly doesn't think the same anymore, either.
-	<<elseif $rivalryDuration <= 20>>
-		Upon seeing you, $hostage.slaveName shifts $his weight back and forth, unsure of what to make of you. As you step forward, $he quickly steps back. After several steps, $he screams "Keep away from me! I don't want ever want to be a fat <<s>>ow again!" $He is thin and extremely muscular, a stark difference from the soft, chubby $girl you used to know; $he certainly doesn't think the same anymore, either.
-	<<else>>
-		<<set $hostage.trust = 100>>
-		Your mercenaries radio you upon arrival. "We have a problem, sir. This one is a fighter, $he already broke one of our guy's jaw. We think $he is tranq'd and restrained enough to bring in. Please be ready."
-		Upon seeing you, $hostage.slaveName's eyes fill with a distinct hatred. As you step forward, $he stands $his ground. After several steps, $he shouts "<<S>>tay away from me, you <<s>>ick fuck! I'll never be a cow again. DON'T YOU DARE TOUCH ME!"
-		The mercenary captain is thrown back as $he explodes out of $his restraints, having been preparing to gag $him. The rest of the troop center their weapons on $him, forcing $him to back down. $He glares at you as the captain picks himself up and exits your penthouse, leaving you with the enraged $hostage.slaveName. $He grunts as $he exits the office for the slave quarters, stopping in the doorway. "I'll be your <<s>>lave, but you're going to be <<s>>orry." With a hand on each door frame, $he rips it out of the wall. $He lets out a single laugh while scowling at you. $He is thin and extremely muscular, a stark difference from the soft, chubby $girl you used to know; $he certainly doesn't think the same anymore, either. Odds are high that $he'll cause problems for you in the future, given $his hatred for you and $his frightening strength.
-	<</if>>
-<<case "Chattel Religionism">>
-	<<run setHealth($hostage, 50, $hostage.health.shortDamage, $hostage.health.longDamage, 0, 10)>>
-	<<if $rivalryDuration <= 5>>
-		Upon seeing you, $hostage.slaveName dives into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> sobbing "They told me <<s>>uch horrible thing<<s>> about you!" You gently wrap your arms around $him in a comforting embrace. $He's exactly as you remember.
-	<<elseif $rivalryDuration <= 10>>
-		Upon seeing you, $hostage.slaveName gingerly approaches, uncertain if $he should. You pull $him into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> as $he breaks down in tears. "You aren't trying to make <<s>>ome cra<<z>>y religion, are you?" While $he looks the same as you remember, $he certainly doesn't think the same anymore.
-	<<elseif $rivalryDuration <= 15>>
-		Upon seeing you, $hostage.slaveName shifts $his weight back and forth, unsure of what to make of you. As you step forward, $he hesitatingly approaches. Once $he is close enough $he pleads "Plea<<s>>e don't turn me into a di<<sc>>iple of your religion..." While $he looks the same as you remember, $he certainly doesn't think the same anymore.
-	<<elseif $rivalryDuration <= 20>>
-		Upon seeing you, $hostage.slaveName shifts $his weight back and forth, unsure of what to make of you. As you step forward, $he quickly steps back. After several steps, $he screams "Keep away from me! I don't want to be part of your cult!" While $he looks the same as you remember, $he definitely doesn't think the same anymore.
-	<<else>>
-		<<set $hostage.trust = 80>>
-		Your mercenaries radio you upon arrival. "This one's got quite some spunk in $him, you better ready yourself. We're coming in now."
-		Upon seeing you, $hostage.slaveName's eyes fill with a distinct hatred. As you step forward, $he stands $his ground. After several steps, $he shouts "<<S>>tay away from me, you cra<<z>>y <<ps>>ycho! Making your own religion, bla<<s>>phemou<<s>>! You think your<<s>>elf a proph-"
-		The mercenary captain quickly gags $him. "My apologies, I did warn you $he was a handful. Please be careful when you unbind $him, $he may try to do something stupid," he says, as he and his group exit your penthouse, leaving you with the enraged $hostage.slaveName. $He looks the same as you remember, but $he acts nothing like the $girl you used to know. Odds are high that $he'll cause problems for you in the future.
-	<</if>>
-<<case "Multiculturalism">>
-	<<run setHealth($hostage, 60, $hostage.health.shortDamage, $hostage.health.longDamage, 0, 10)>>
-	<<if $rivalryDuration <= 5>>
-		Upon seeing you, $hostage.slaveName dives into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> sobbing "They <<s>>aid <<s>>uch cra<<z>>y thing<<s>>!" You gently wrap your arms around $him in a comforting embrace. $He's exactly as you remember.
-	<<elseif $rivalryDuration <= 10>>
-		Upon seeing you, $hostage.slaveName gingerly approaches, uncertain if $he should. You pull $him into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> as $he breaks down in tears. "They made me pray for your arcology; why i<<s>> that?" $He's exactly as you remember.
-	<<elseif $rivalryDuration <= 15>>
-		Upon seeing you, $hostage.slaveName shifts $his weight back and forth, unsure of what to make of you. As you step forward, $he hesitatingly approaches. Once $he is close enough $he prays "Plea<<s>>e pardon thi<<s>> arcology..." While $he looks the same as you remember, $he certainly doesn't think the same anymore.
-	<<elseif $rivalryDuration <= 20>>
-		<<set $hostage.trust = 40>>
-		Upon seeing you, $hostage.slaveName shifts $his weight back and forth, unsure of what to make of you. As you step forward, $he quickly steps back. After several steps, $he drops to $his <<if hasBothLegs($hostage)>>$his knees<<else>>the ground<</if>> and begins praying "Plea<<s>>e pardon thi<<s>> arcology'<<s>> <<s>>in<<s>>! They know naught what they do!" While $he looks the same as you remember, $he definitely doesn't think the same anymore.
-	<<else>>
-		<<set $hostage.trust = 80>>
-		Your mercenaries radio you upon arrival. "This one's got quite a mouth on $him, you better ready yourself. We're coming in now."
-		Upon seeing you, $hostage.slaveName's eyes fill with a mercy. As you step forward, $he stands $his ground. After several steps, $he shouts "Be <<s>>till, I'll lead your arcology to <<s>>alvation. Pla<<c>>e your faith in me and be <<s>>av-"
-		The mercenary captain quickly gags $him. "My apologies, I did warn you about that mouth. Please be careful when you unbind $him, $he may try to do something stupid," he says as he and his group exit your penthouse, leaving you with the disappointed $hostage.slaveName. $He looks the same as you remember, but $he acts nothing like the $girl you used to know. Odds are high that $he'll cause problems for you in the future, trying to preach $his new faith.
-	<</if>>
-<<case "Intellectual Dependency">>
-	<<run setHealth($hostage, 80, $hostage.health.shortDamage, $hostage.health.longDamage, 0, 5)>>
-	<<if $rivalryDuration <= 5>>
-		Upon seeing you, $hostage.slaveName dives into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> sobbing "They tried to teach me the mo<<s>>t ob<<sc>>ene thing<<s>>!" You gently wrap your arms around $him in a comforting embrace. $He's exactly as you remember.
-	<<elseif $rivalryDuration <= 10>>
-		Upon seeing you, $hostage.slaveName gingerly approaches, uncertain if $he should. You pull $him into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> as $he breaks down in tears. "They made me a whore. I feel <<s>>o di<<s>>gu<<s>>ting..." $He's exactly as you remember.
-	<<elseif $rivalryDuration <= 15>>
-		<<set $hostage.devotion = 40>>
-		<<set $hostage.trust = 40>>
-		Upon seeing you, $hostage.slaveName stiffens up and waits for you to make a move. $He holds completely still, even as you place a hand on $his shoulder. $He stutters out a quiet "<<Master>>? W-what may I do f-for you?" While $he looks the same as you remember, $he certainly doesn't think the same anymore.
-	<<elseif $rivalryDuration <= 20>>
-		<<set $hostage.devotion = 65>>
-		<<set $hostage.trust = 65>>
-		Upon seeing you, $hostage.slaveName graciously bows, giving you a lovely view down $his cleavage. $He holds this position, before stating "My body i<<s>> your<<s>> to u<<s>>e." While $he looks the same as you remember, $he certainly doesn't think the same anymore.
-	<<else>>
-		<<set $hostage.devotion = 100>>
-		<<set $hostage.trust = 100>>
-		Upon seeing you, $hostage.slaveName graciously bows, giving you a lovely view down $his cleavage, before resuming $his perfect stance. "I am your property now and any thought<<s>> of my previou<<s>> owner are no longer relevant. Any feeling<<s>> I may have had have been left behind and will not influen<<c>>e me. I am your<<s>> to u<<s>>e a<<s>> you plea<<s>>e, no matter what the outcome may be. How may I <<s>>ervi<<c>>e you, <<Master>>?" While $he looks the same as you remember, $he certainly doesn't think the same anymore.
-	<</if>>
-<<case "Slave Professionalism">>
-	<<run setHealth($hostage, 60, $hostage.health.shortDamage, $hostage.health.longDamage, 0, 0)>>
-	<<if $rivalryDuration <= 5>>
-		Upon seeing you, $hostage.slaveName dives into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> sobbing "They did thing<<s>> to me! My head hurt<<s>> <<s>>o much..." You gently wrap your arms around $him in a comforting embrace. $He's exactly as you remember.
-	<<elseif $rivalryDuration <= 10>>
-		Upon seeing you, $hostage.slaveName gingerly approaches, uncertain if $he should. You pull $him into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> as $he breaks down in tears. "I can barely remember thing<<s>> anymore; who were you again? I hate to a<<s>>k, but... I need a good fuck right now..." While $he looks the same as you remember, $he certainly can't think the same anymore.
-	<<elseif $rivalryDuration <= 15>>
-		Upon seeing you, $hostage.slaveName shifts $his weight back and forth, unsure of what to make of you. As you step forward, $he bounces into your arms. "Wanna do it?" While $he looks the same as you remember, $he certainly doesn't think the same anymore.
-	<<elseif $rivalryDuration <= 20>>
-		Upon seeing you, $hostage.slaveName wastes no time in <<if $PC.dick != 0>>unbuckling your pants<<else>>slipping under your skirt<</if>> and going to town. While $he looks the same as you remember<<if $seePreg != 0>>, albeit a little pregnant<</if>>, $he definitely doesn't think the same anymore.
-	<<else>>
-		Your mercenaries radio you upon arrival. "This one's got one thing $his mind, you better ready yourself. We're coming in now."
-		Upon seeing you, $hostage.slaveName's eyes fill with excitement. As you step forward, $he struggles against $his bindings, desperately trying to get loose. The mercenary captain yanks $him back. "My apologies, the only thing left of $his mind is a libido it feels like. Please be careful when you unbind $him, $he's nothing more than a horny idiot now." he says as he and his group exit your penthouse, leaving you with the dripping $hostage.slaveName. $He looks the same as you remember<<if $seePreg != 0>>, albeit a little pregnant<</if>>, but $he acts nothing like the $girl you used to know. $He's probably too dumb to manage to cause any trouble, but is likely to be high maintenance given $his ineptitude and nymphomania.
-	<</if>>
-<<case "Petite Admiration">>
-	<<run setHealth($hostage, 60, $hostage.health.shortDamage, $hostage.health.longDamage, 0, 10)>>
-	<<if $rivalryDuration <= 5>>
-		Upon seeing you, $hostage.slaveName dives into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> sobbing "Thi<<s>> giant _woman2 tried to make me <<his 2>> pet!" You gently wrap your arms around $him in a comforting embrace. $He's exactly as you remember.
-	<<elseif $rivalryDuration <= 10>>
-		Upon seeing you, $hostage.slaveName gingerly approaches, uncertain if $he should. You pull $him into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> as $he breaks down in tears. "They made me make out with a giant!" $He's exactly as you remember.
-	<<elseif $rivalryDuration <= 15>>
-		Upon seeing you, $hostage.slaveName shifts $his weight back and forth, unsure of what to make of you. As you step forward, $he hesitatingly approaches. Once $he is close enough $he asks
-		/* player height check here */
-		"Can I hang out with someone taller than me?"
-		While $he looks the same as you remember, $he certainly doesn't think the same anymore.
-	<<elseif $rivalryDuration <= 20>>
-		<<set $hostage.trust = 40>>
-		Upon seeing you, $hostage.slaveName shifts $his weight back and forth, unsure of what to make of you. As you step forward, $he quickly steps back. After several steps, $he says
-		/* player height check here */
-		"Can you hook me up with someone ni<<c>>e and tall?"
-		While $he looks the same as you remember, $he definitely doesn't think the same anymore.
-	<<else>>
-		<<set $hostage.trust = 80>>
-		Your mercenaries radio you upon arrival. "This one's got quite some spunk in $him, you better ready yourself. We're coming in now."
-		Upon seeing you, $hostage.slaveName's eyes fill with a distinct hatred. As you step forward, $he stands $his ground. After several steps, $he shouts "How fucking DARE you <<s>>plit me up from my <<s>>weet giant! I <<s>>aw your arcology on the way in, and it'<<s>> <<S>>ICK. <<S>>o many little girl<<s>>, you're <<s>>ick, you hear me!? <<S>>I-"
-		The mercenary captain quickly gags $him, "My apologies, I did warn you $he was a handful. Please be careful when you unbind $him, $he may try to do something stupid," he says as he and his group exit your penthouse, leaving you with the enraged $hostage.slaveName. $He looks the same as you remember, but $he acts nothing like the $girl you used to know. Odds are high that $he'll cause problems for you in the future, given $his hatred for the short.
-	<</if>>
-<<case "Statuesque Glorification">>
-	<<run setHealth($hostage, 60, $hostage.health.shortDamage, $hostage.health.longDamage, 0, 10)>>
-	<<if $rivalryDuration <= 5>>
-		Upon seeing you, $hostage.slaveName dives into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> sobbing "Thi<<s>> midget kept mole<<s>>ting me!" You gently wrap your arms around $him in a comforting embrace. $He's exactly as you remember.
-	<<elseif $rivalryDuration <= 10>>
-		Upon seeing you, $hostage.slaveName gingerly approaches, uncertain if $he should. You pull $him into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> as $he breaks down in tears. "They made me get on <<if hasBothLegs($hostage)>>my knee<<s>><<else>>the ground<</if>> and make out with <<s>>ome tiny harlot!" $He's exactly as you remember.
-	<<elseif $rivalryDuration <= 15>>
-		Upon seeing you, $hostage.slaveName shifts $his weight back and forth, unsure of what to make of you. As you step forward, $he hesitatingly approaches. Once $he is close enough $he asks
-		/* player height check here */
-		"I<<s>> there anyone <<sh>>orter I can hang out with around here?"
-		While $he looks the same as you remember, $he certainly doesn't think the same anymore.
-	<<elseif $rivalryDuration <= 20>>
-		<<set $hostage.trust = 40>>
-		Upon seeing you, $hostage.slaveName shifts $his weight back and forth, unsure of what to make of you. As you step forward, $he quickly steps back. After several steps, $he says
-		/* player height check here */
-		"Can you hook me up with <<s>>omeone on the <<sh>>ort <<s>>ide? I didn't really noti<<c>>e anyone on the way in..."
-		While $he looks the same as you remember, $he definitely doesn't think the same anymore.
-	<<else>>
-		<<set $hostage.trust = 80>>
-		Your mercenaries radio you upon arrival. "This one's got quite some spunk in $him, you better ready yourself. We're coming in now."
-		Upon seeing you, $hostage.slaveName's eyes fill with a distinct hatred. As you step forward, $he stands $his ground. After several steps, $he shouts "How fucking DARE you <<s>>plit me up from my little <<wife 2>>! There wa<<s>> more love in <<his 2>> tiny body than in your entire arcology! To think that you fuck<<s>> pla<<c>>e everything on hei-"
-		The mercenary captain quickly gags $him, "My apologies, I did warn you $he was a handful. Please be careful when you unbind $him, $he may try to do something stupid," he says as he and his group exit your penthouse, leaving you with the enraged $hostage.slaveName. $He looks the same as you remember, but $he acts nothing like the $girl you used to know. Odds are high that $he'll cause problems for you in the future, given $his hatred for tall people.
-	<</if>>
-<<default>>
-	<<run setHealth($hostage, 40, $hostage.health.shortDamage, $hostage.health.longDamage, 0, 10)>>
-	<<if $rivalryDuration <= 5>>
-		Upon seeing you, $hostage.slaveName dives into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> sobbing "They told me <<s>>uch horrible thing<<s>> about you!" You gently wrap your arms around $him in a comforting embrace. $He's exactly as you remember.
-	<<elseif $rivalryDuration <= 10>>
-		Upon seeing you, $hostage.slaveName gingerly approaches, uncertain if $he should. You pull $him into your <<if $PC.boobs >= 650>>ample bust<<else>>chest<</if>> as $he breaks down in tears.
-		<<if $rivalryFS != 0>>
-			"You aren't trying to make <<s>>ome cra<<z>>y old-timey <<s>>o<<c>>iety, are you?"
-		<<else>>
-			"You aren't going to try to make me... do thing<<s>> to you, right?"
-		<</if>>
-		While $he looks the same as you remember, $he certainly doesn't think the same anymore.
-	<<elseif $rivalryDuration <= 15>>
-		Upon seeing you, $hostage.slaveName shifts $his weight back and forth, unsure of what to make of you. As you step forward, $he hesitatingly approaches. Once $he is close enough $he says
-		<<if $rivalryFS != 0>>
-			"Plea<<s>>e don't make me play along..."
-		<<else>>
-			"I don't want to be your plaything..."
-		<</if>>
-		While $he looks the same as you remember, $he certainly doesn't think the same anymore.
-	<<elseif $rivalryDuration <= 20>>
-		Upon seeing you, $hostage.slaveName shifts $his weight back and forth, unsure of what to make of you. As you step forward, $he quickly steps back. After several steps, $he screams "Keep away from me! I don't want to be part of your cra<<z>>y <<s>>o<<c>>iety!" While $he looks the same as you remember, $he definitely doesn't think the same anymore.
-	<<else>>
-		<<set $hostage.trust = 80>>
-		Your mercenaries radio you upon arrival. "This one's got quite some spunk in $him, you better ready yourself. We're coming in now."
-		Upon seeing you, $hostage.slaveName's eyes fill with a distinct hatred. As you step forward, $he stands $his ground. After several steps, $he shouts "<<S>>tay away from me, you cra<<z>>y <<ps>>ycho!
-		<<if $rivalryFS != 0>>
-			Remaking a fallen empire, madne<<ss>>! You think your<<s>>elf a king —"
-		<<else>>
-			You think you can ju<<s>>t take whatever you want from people — Fuck, I don't even know if you even THINK of them a<<s>> people anymore! How dare you even think I —"
-		<</if>>
-		The mercenary captain quickly gags $him, "My apologies, I did warn you $he was a handful. Please be careful when you unbind $him, $he may try to do something stupid," he says as he and his group exit your penthouse, leaving you with the enraged $hostage.slaveName. $He looks the same as you remember, but $he acts nothing like the $girl you used to know. Odds are high that $he'll cause problems for you in the future.
-	<</if>>
-<</switch>>
-
-<<if $rivalryDuration <= 10 || ($rivalryFS == "Racial Supremacism" && $rivalryDuration <= 20) || ($rivalryFS == "Paternalism" && $rivalryDuration <= 20)>>
-	$He considers you $his rescuer, since $his previous owner subjected $him to unremitting horror in an attempt <<if $rivalryFS != 0>>to offend your philosophy of $rivalryFS<<else>>turn $him against you<</if>>. $He's overjoyed to be your slave.
-<<elseif ($rivalryFS == "Racial Supremacism" && $rivalryDuration > 20) || ($rivalryFS == "Paternalism" && $rivalryDuration > 20)>>
-	$His mind and body were destroyed in an attempt to offend your philosophy of $rivalryFS. If $he ever recovers, $he'd consider you $his savior and be overjoyed to be your slave.
-<<elseif $rivalryFS == "Slave Professionalism">>
-	$His mind was ravaged and perverted by rampant use of psychosuppressants and aphrodisiacs. There is no coming back from the damages done.
-<<elseif $rivalryFS == "Intellectual Dependency">>
-	$He has undergone so much slave training that $he considers this turn of events ultimately meaningless. You are just $his new owner and $he will serve you to the best of $his abilities; as a slave should.
-<<elseif $rivalryDuration > 20>>
-	You took everything from $him and $he hates you as much as $he possibly can for it. You ripped $him away from heaven to sentence $him to a living hell, and $he swears to do everything $he can to hurt you.
-<<else>>
-	$He is horrified by this turn of events. Your rival taught $him a great deal about slave life in your arcology and indulged $his deepest fantasies. $hostage.slaveName considers becoming your slave little better than a condemnation to purgatory.
-<</if>>
-
-<br><br>
-<<includeDOM App.UI.newSlaveIntro($hostage)>>
diff --git a/src/events/nonRandom/rival/pRivalryActions.js b/src/events/nonRandom/rival/pRivalryActions.js
index 336e92c2b1995978916ba2dd6de4687ab1a6615c..712552ed9f8301529b9c055e77595ed9d1344b48 100644
--- a/src/events/nonRandom/rival/pRivalryActions.js
+++ b/src/events/nonRandom/rival/pRivalryActions.js
@@ -24,6 +24,8 @@ App.Events.pRivalryActions = function() {
 				He, His,
 				he, him, himself, his, girl, woman
 			} = getPronouns(V.hostage);
+			const seed = random(1, 100);
+
 			if (V.rivalryDuration >= 30) {
 				r.push(`The latest message from your rival is a live communication.`);
 			} else {
@@ -209,18 +211,18 @@ App.Events.pRivalryActions = function() {
 						V.hostage.sexualFlaw = "shamefast";
 						r.push(`being weighed and measured to document ${his} trim body.`);
 						break;
-					case "Physical IdealismOLD":
-						V.hostage.lactation = 2;
-						V.hostage.lactationDuration = 2;
-						V.hostage.trust -= 5;
-						V.hostage.devotion -= 5;
-						V.hostage.boobs += 1000;
-						V.hostage.weight = 0;
-						V.hostage.butt = 4;
-						V.hostage.behavioralFlaw = "anorexic";
-						V.hostage.sexualFlaw = "shamefast";
-						r.push(`standing in front of a mirror sobbing as droplets of milk form on ${his} ${V.hostage.nipples} nipples, courtesy of ${his} newly implanted lactation drugs.`);
-						break;
+					// case "Physical IdealismOLD": // FIXME: Remove duplicate case?
+					// 	V.hostage.lactation = 2;
+					// 	V.hostage.lactationDuration = 2;
+					// 	V.hostage.trust -= 5;
+					// 	V.hostage.devotion -= 5;
+					// 	V.hostage.boobs += 1000;
+					// 	V.hostage.weight = 0;
+					// 	V.hostage.butt = 4;
+					// 	V.hostage.behavioralFlaw = "anorexic";
+					// 	V.hostage.sexualFlaw = "shamefast";
+					// 	r.push(`standing in front of a mirror sobbing as droplets of milk form on ${his} ${V.hostage.nipples} nipples, courtesy of ${his} newly implanted lactation drugs.`);
+					// 	break;
 					case "Pastoralism":
 						V.hostage.trust -= 5;
 						V.hostage.devotion -= 5;
@@ -530,7 +532,7 @@ App.Events.pRivalryActions = function() {
 						V.hostage.vagina = 3;
 						V.hostage.behavioralFlaw = "anorexic";
 						V.hostage.sexualFlaw = "hates penetration";
-						r.push(`groaning as ${his} taut belly is measured and ${his} weight is taken; 140 tallies adorn ${his} lower belly. "88 kilos, a good start, but nowhere near the end. Now about that fetish of yours..." ${He} responds with a meek`);
+						r.push(`groaning as ${his} taut belly is measured and ${his} weight is taken; 140 tallies adorn ${his} lower belly. "15 kilos since last weigh in, a good start, but nowhere near the end. Now about that fetish of yours..." ${He} responds with a meek`);
 						if (V.seePreg !== 0) {
 							V.hostage.fetish = either("boobs", "buttslut", "cumslut", "dom", "humiliation", "masochist", "pregnancy", "sadist", "submissive");
 						} else {
@@ -820,7 +822,7 @@ App.Events.pRivalryActions = function() {
 						V.hostage.sexualFlaw = "none";
 						V.hostage.behavioralQuirk = "insecure";
 						V.hostage.sexualQuirk = "romantic";
-						r.push(`realizing that a woman's place is next to the powerful, not being powerful.`);
+						r.push(`realizing that a ${V.hostage.actualAge < 16 ? `${girl}` : `${woman}`}'s place is next to the powerful, not being powerful.`);
 						break;
 					case "Gender Fundamentalism":
 						V.hostage.trust -= 5;
@@ -995,7 +997,7 @@ App.Events.pRivalryActions = function() {
 						V.hostage.counter.vaginal += 35;
 						V.hostage.vagina = 3;
 						V.hostage.vaginaTat = "lewd crest";
-						r.push(`giggling and flirting while ${his} body is measured and ${his} weight is taken; 280 tallies adorn ${his} soft belly. "108 kilos, getting there. Oh don't make that face, there's plenty of food left."`);
+						r.push(`giggling and flirting while ${his} body is measured and ${his} weight is taken; 280 tallies adorn ${his} soft belly. "Another 20 kilos, getting there. Oh don't make that face, there's plenty of food left."`);
 						switch (V.hostage.fetish) {
 							case "cumslut":
 								V.hostage.counter.oral += 70;
@@ -1278,7 +1280,6 @@ App.Events.pRivalryActions = function() {
 						V.hostage.tonguePiercing = 2;
 						V.hostage.lipsTat = "degradation";
 						V.hostage.anusTat = "degradation";
-						const seed = random(1, 100);
 						if (seed < 40) {
 							App.Medicine.Modification.addScar(V.hostage, "left breast", "burn", 2);
 						} else if (seed < 80) {
@@ -1391,7 +1392,7 @@ App.Events.pRivalryActions = function() {
 						V.hostage.fetishStrength = 100;
 						V.hostage.counter.vaginal += 40;
 						V.hostage.vagina = 4;
-						r.push(`giggling and flirting as ${his} flabby body is groped and fondled while ${his} weight is taken; ${his} stomach is so large you can't make out how many tallies adorn it any longer. "128 kilos, pretty big now, aren't we?"`);
+						r.push(`giggling and flirting as ${his} flabby body is groped and fondled while ${his} weight is taken; ${his} stomach is so large you can't make out how many tallies adorn it any longer. "55 kilos gained since you got here; pretty big now, aren't we?"`);
 						switch (V.hostage.fetish) {
 							case "cumslut":
 								V.hostage.counter.oral += 70;
@@ -1470,7 +1471,7 @@ App.Events.pRivalryActions = function() {
 						V.hostage.addict += 2;
 						V.hostage.fetishStrength = 100;
 						V.hostage.tonguePiercing = 1;
-						V.hostage.stampTat = "'Princess' is tattooed over ${his} rear.";
+						V.hostage.stampTat = "'Princess' is tattooed over $his rear.";
 						V.hostage.hLength += 7;
 						V.hostage.lips = Math.clamp(V.hostage.lips + 5, 0, 100);
 						r.push(`giggling and chatting with a group of fellow bimbos as they try to entice a quick fuck from passersby.`);
@@ -1606,7 +1607,7 @@ App.Events.pRivalryActions = function() {
 							WombImpregnate(V.hostage, V.hostage.pregType, 0, V.hostage.preg);
 							SetBellySize(V.hostage);
 						}
-						r.push(`giving an interview. ${He} gushes over how great it feels knowing that someone is always watching out for ${his} safety and health as a traditional ${woman}, as well as how terrible it is that some people want to blur the lines between the genders.`);
+						r.push(`giving an interview. ${He} gushes over how great it feels knowing that someone is always watching out for ${his} safety and health as a traditional ${V.hostage.actualAge < 16 ? `${girl}` : `${woman}`}, as well as how terrible it is that some people want to blur the lines between the genders.`);
 						break;
 					case "Gender Fundamentalism":
 						V.hostage.counter.anal += 10;
@@ -1639,7 +1640,6 @@ App.Events.pRivalryActions = function() {
 						V.hostage.tonguePiercing = 2;
 						V.hostage.fetish = "mindbroken";
 						V.hostage.fetishStrength = 10;
-						const seed = random(1, 100);
 						if (seed < 40) {
 							App.Medicine.Modification.addScar(V.hostage, "anus", "burn", 2);
 						} else if (seed < 80) {
@@ -1758,7 +1758,7 @@ App.Events.pRivalryActions = function() {
 								V.hostage.sexualFlaw = "abusive";
 								break;
 							case "pregnancy":
-								r.push(Spoken(V.hostage, `"I'm preggers you know! V.hostage.preg weeks along now and you know what? I always want to be pregnant! Always!"`));
+								r.push(Spoken(V.hostage, `"I'm preggers you know! ${V.hostage.preg} weeks along now and you know what? I always want to be pregnant! Always!"`));
 								V.hostage.preg++;
 								V.hostage.pregKnown = 1;
 								V.hostage.pregWeek++;
@@ -1836,7 +1836,7 @@ App.Events.pRivalryActions = function() {
 						r.push(`"Looking for ${SlaveFullName(V.hostage)}? Too bad, I couldn't bear to think of you ever getting your rotten little hands on ${him}, so I sent ${him} and ${his} lovers someplace far away. Someplace you'll never find them. Bet tha"`);
 						break;
 					case "Racial Supremacism":
-						r.push(`"Looking for ${SlaveFullName(V.hostage)} ? Too bad, the poor bitch died`);
+						r.push(`"Looking for ${SlaveFullName(V.hostage)}? Too bad, the poor bitch died`);
 						if (V.seePreg !== 0) {
 							r.push(`trying to give birth to ${his} baby.`);
 						} else {
@@ -1845,70 +1845,70 @@ App.Events.pRivalryActions = function() {
 						r.push(`We had lots of room in the clinic too, but slaves like ${him} aren't worth the expenses, you know? I should find some more people you knew, keep our little game goi"`);
 						break;
 					case "Repopulation Focus":
-						r.push(`"Looking for ${SlaveFullName(V.hostage)} ? Too bad, I couldn't bear to think of you ever getting your rotten little hands on ${him}, so I sent ${him} far away. Someplace you'll never find ${him}. Bet tha"`);
+						r.push(`"Looking for ${SlaveFullName(V.hostage)}? Too bad, I couldn't bear to think of you ever getting your rotten little hands on ${him}, so I sent ${him} far away. Someplace you'll never find ${him}. Bet tha"`);
 						break;
 					case "Eugenics":
-						r.push(`"Looking for ${SlaveFullName(V.hostage)} ? Too bad, I couldn't bear to think of you ever getting your rotten little hands on ${him}, so I sent ${him} far away. Someplace you'll never find ${him}. Bet tha"`);
+						r.push(`"Looking for ${SlaveFullName(V.hostage)}? Too bad, I couldn't bear to think of you ever getting your rotten little hands on ${him}, so I sent ${him} far away. Someplace you'll never find ${him}. Bet tha"`);
 						break;
 					case "Gender Radicalism":
-						r.push(`"Looking for ${SlaveFullName(V.hostage)} ? Too bad, I couldn't bear to think of you ever getting your rotten little hands on ${him}, so I sent ${him} far away. I'll miss ${him}, of course, but there is no way I'd let you have ${him}. Bet that piss"`);
+						r.push(`"Looking for ${SlaveFullName(V.hostage)}? Too bad, I couldn't bear to think of you ever getting your rotten little hands on ${him}, so I sent ${him} far away. I'll miss ${him}, of course, but there is no way I'd let you have ${him}. Bet that piss"`);
 						break;
 					case "Gender Fundamentalism":
-						r.push(`"Looking for ${SlaveFullName(V.hostage)} ? Too bad, ${he} took a dick a little too big for ${his} ass and ruined ${his} sphincter. ${He}'s off, someplace far away, recovering. But I'll never tell you where, bet that piss"`);
+						r.push(`"Looking for ${SlaveFullName(V.hostage)}? Too bad, ${he} took a dick a little too big for ${his} ass and ruined ${his} sphincter. ${He}'s off, someplace far away, recovering. But I'll never tell you where, bet that piss"`);
 						break;
 					case "Paternalism":
-						r.push(`"Looking for ${SlaveFullName(V.hostage)} ? Too bad, ${he} got kicked around just a little too much. We had lots of fun with ${him}, before ${he} broke of course...Say, do you have anyone else you love, or even were familiar with? I should acquire them, keep our little game goi"`);
+						r.push(`"Looking for ${SlaveFullName(V.hostage)}? Too bad, ${he} got kicked around just a little too much. We had lots of fun with ${him}, before ${he} broke of course... Say, do you have anyone else you love, or even were familiar with? I should acquire them, keep our little game goi"`);
 						break;
 					case "Degradationism":
-						r.push(`"Looking for ${SlaveFullName(V.hostage)} ? Too bad, I couldn't bear to think of you ever getting your rotten little hands on ${him}, so I sent ${him} far away. I'll miss ${him}, of course, but there is no way I'd let you have ${him}. I'll keep ${him} saf"`);
+						r.push(`"Looking for ${SlaveFullName(V.hostage)}? Too bad, I couldn't bear to think of you ever getting your rotten little hands on ${him}, so I sent ${him} far away. I'll miss ${him}, of course, but there is no way I'd let you have ${him}. I'll keep ${him} saf"`);
 						break;
 					case "Body Purism":
-						r.push(`"Looking for ${SlaveFullName(V.hostage)} ? Too bad, apparently implants can be too big. ${His} breasts literally popped, couldn't save ${him} though. Definitely going to miss playing with those balloons. I should hunt down more people you knew, keep our little game goi"`);
+						r.push(`"Looking for ${SlaveFullName(V.hostage)}? Too bad, apparently implants can be too big. ${His} breasts literally popped, couldn't save ${him} though. Definitely going to miss playing with those balloons. I should hunt down more people you knew, keep our little game goi"`);
 						break;
 					case "Transformation Fetishism":
-						r.push(`"Looking for ${SlaveFullName(V.hostage)} ? Too bad, I couldn't bear to think of you ever getting your rotten little hands on ${him}, so I sent ${him} far away. Someplace you'll never find ${him}. Bet tha"`);
+						r.push(`"Looking for ${SlaveFullName(V.hostage)}? Too bad, I couldn't bear to think of you ever getting your rotten little hands on ${him}, so I sent ${him} far away. Someplace you'll never find ${him}. Bet tha"`);
 						break;
 					case "Youth Preferentialism":
-						r.push(`"Looking for ${SlaveFullName(V.hostage)} ? Too bad, I couldn't bear to think of you ever getting your rotten little hands on ${him}, so I sent ${him} and ${his} lover someplace far away. Someplace you'll never find them. Bet tha"`);
+						r.push(`"Looking for ${SlaveFullName(V.hostage)}? Too bad, I couldn't bear to think of you ever getting your rotten little hands on ${him}, so I sent ${him} and ${his} lover someplace far away. Someplace you'll never find them. Bet tha"`);
 						break;
 					case "Maturity Preferentialism":
-						r.push(`"Looking for ${SlaveFullName(V.hostage)} ? Too bad, I couldn't bear to think of you ever getting your rotten little hands on ${him}, so I sent ${him} and ${his} lover someplace far away. Someplace you'll never find them. Bet tha"`);
+						r.push(`"Looking for ${SlaveFullName(V.hostage)}? Too bad, I couldn't bear to think of you ever getting your rotten little hands on ${him}, so I sent ${him} and ${his} lover someplace far away. Someplace you'll never find them. Bet tha"`);
 						break;
 					case "Slimness Enthusiasm":
-						r.push(`"Looking for ${SlaveFullName(V.hostage)} ? Too bad, apparently those growth drugs have quite the side effects.Pretty much had cancer everywhere.Definitely going to miss playing with those milkbags, though.I should hunt down more people you knew, keep our little game goi"`);
+						r.push(`"Looking for ${SlaveFullName(V.hostage)}? Too bad, apparently those growth drugs have quite the side effects. Pretty much had cancer everywhere. Definitely going to miss playing with those milkbags, though. I should hunt down more people you knew, keep our little game goi"`);
 						break;
 					case "Asset Expansionism":
-						r.push(`"Looking for ${SlaveFullName(V.hostage)} ? Too bad, I couldn't bear to think of you ever getting your rotten little hands on ${him}, so I sent ${him} far away. Someplace you'll never find ${him}. Bet tha"`);
+						r.push(`"Looking for ${SlaveFullName(V.hostage)}? Too bad, I couldn't bear to think of you ever getting your rotten little hands on ${him}, so I sent ${him} far away. Someplace you'll never find ${him}. Bet tha"`);
 						break;
 					case "Pastoralism":
-						r.push(`"Looking for ${SlaveFullName(V.hostage)} ? Too bad, I couldn't bear to think of you ever getting your rotten little hands on ${him}, so I sent ${him} far away. I'll miss ${him}, of course, but there is no way I'd let you have ${him}. Bet that piss"`);
+						r.push(`"Looking for ${SlaveFullName(V.hostage)}? Too bad, I couldn't bear to think of you ever getting your rotten little hands on ${him}, so I sent ${him} far away. I'll miss ${him}, of course, but there is no way I'd let you have ${him}. Bet that piss"`);
 						break;
 					case "Physical Idealism":
-						r.push(`"Looking for ${SlaveFullName(V.hostage)} ? Too bad, apparently being that fat isn't good for your heart, who knew? Definitely going to miss playing with those folds; ${he} jiggled so much when I fucked ${him}. I should hunt down more people you knew, fatten them up, keep our little game goi"`);
+						r.push(`"Looking for ${SlaveFullName(V.hostage)}? Too bad, apparently being that fat isn't good for your heart, who knew? Definitely going to miss playing with those folds; ${he} jiggled so much when I fucked ${him}. I should hunt down more people you knew, fatten them up, keep our little game goi"`);
 						break;
 					case "Hedonistic Decadence":
-						r.push(`"Looking for ${SlaveFullName(V.hostage)} ? Too bad, I couldn't bear to think of you ever getting your rotten little hands on ${him}, so I sent ${him} far away. I'll miss ${him}, of course, but there is no way I'd let you have ${him}. Bet that piss"`);
+						r.push(`"Looking for ${SlaveFullName(V.hostage)}? Too bad, I couldn't bear to think of you ever getting your rotten little hands on ${him}, so I sent ${him} far away. I'll miss ${him}, of course, but there is no way I'd let you have ${him}. Bet that piss"`);
 						break;
 					case "Chattel Religionism":
-						r.push(`"Looking for ${SlaveFullName(V.hostage)} ? Too bad, I couldn't bear to think of you ever getting your rotten little hands on ${him}, so I sent ${him} far away. Someplace you'll never find ${him}. Bet tha"`);
+						r.push(`"Looking for ${SlaveFullName(V.hostage)}? Too bad, I couldn't bear to think of you ever getting your rotten little hands on ${him}, so I sent ${him} far away. Someplace you'll never find ${him}. Bet tha"`);
 						break;
 					case "Multiculturalism":
-						r.push(`"Looking for ${SlaveFullName(V.hostage)} ? Too bad, ${he} decided to martyr ${himself} for your arcology's salvation. Got fucked till ${his} body gave out. Of course I enjoyed ${him} in ${his} final moments, and don't worry, ${he} died smiling.I should hunt down more people you knew, keep our little game goi"`);
+						r.push(`"Looking for ${SlaveFullName(V.hostage)}? Too bad, ${he} decided to martyr ${himself} for your arcology's salvation. Got fucked till ${his} body gave out. Of course I enjoyed ${him} in ${his} final moments, and don't worry, ${he} died smiling.I should hunt down more people you knew, keep our little game goi"`);
 						break;
 					case "Intellectual Dependency":
-						r.push(`"Looking for ${SlaveFullName(V.hostage)} ? Too bad, ${he} ran the math and determined that the odds of me keeping ${him} through this were too low and that ${he} should go into hiding until it's safe to come back. ${He}'s a well trained ${girl} now, so I trust ${him}, and even if I did lose this war, it'd still be worth taking ${his} advice just to deny you your prize. Bet tha"`);
+						r.push(`"Looking for ${SlaveFullName(V.hostage)}? Too bad, ${he} ran the math and determined that the odds of me keeping ${him} through this were too low and that ${he} should go into hiding until it's safe to come back. ${He}'s a well trained ${girl} now, so I trust ${him}, and even if I did lose this war, it'd still be worth taking ${his} advice just to deny you your prize. Bet tha"`);
 						break;
 					case "Slave Professionalism":
-						r.push(`"Looking for ${SlaveFullName(V.hostage)} ? Too bad, bitch was so dumb ${he} couldn't understand the warning signs, rushed down some slick stairs for a fuck and broke ${his} neck. ${He} was fun, no denying that. Died the way ${he} lived, thinking of sucking cock. Not unlike you, act"`);
+						r.push(`"Looking for ${SlaveFullName(V.hostage)}? Too bad, bitch was so dumb ${he} couldn't understand the warning signs, rushed down some slick stairs for a fuck and broke ${his} neck. ${He} was fun, no denying that. Died the way ${he} lived, thinking of sucking cock. Not unlike you, act"`);
 						break;
 					case "Petite Admiration":
-						r.push(`"Looking for ${SlaveFullName(V.hostage)} ? Too bad, I couldn't bear to think of you ever getting your rotten little hands on ${him}, so I sent ${him} and ${his} lover someplace far away. Someplace you'll never find them. Bet tha"`);
+						r.push(`"Looking for ${SlaveFullName(V.hostage)}? Too bad, I couldn't bear to think of you ever getting your rotten little hands on ${him}, so I sent ${him} and ${his} lover someplace far away. Someplace you'll never find them. Bet tha"`);
 						break;
 					case "Statuesque Glorification":
-						r.push(`"Looking for ${SlaveFullName(V.hostage)} ? Too bad, I couldn't bear to think of you ever getting your rotten little hands on ${him}, so I sent ${him} and ${his} lover someplace far away. Someplace you'll never find them. Bet tha"`);
+						r.push(`"Looking for ${SlaveFullName(V.hostage)}? Too bad, I couldn't bear to think of you ever getting your rotten little hands on ${him}, so I sent ${him} and ${his} lover someplace far away. Someplace you'll never find them. Bet tha"`);
 						break;
 					default:
-						r.push(`"Looking for ${SlaveFullName(V.hostage)} ? Too bad, I couldn't bear to think of you ever getting your rotten little hands on ${him}, so I sent ${him} far away. Someplace you'll never find ${him}. Bet tha"`);
+						r.push(`"Looking for ${SlaveFullName(V.hostage)}? Too bad, I couldn't bear to think of you ever getting your rotten little hands on ${him}, so I sent ${him} far away. Someplace you'll never find ${him}. Bet tha"`);
 				}
 				r.push(`- You end the call.`);
 			} else {
@@ -2850,7 +2850,7 @@ App.Events.pRivalryActions = function() {
 									SetBellySize(V.hostage);
 									break;
 							}
-							hostageAction.push(`relaxing in ${his} comfy bed sucking on ${his} feeding tube. One hand is fondling ${his} plush body while the other is teasing ${his} clit. ${His} body has become notably plush, made even more obvious when an orgasm sends ripples through ${his} soft flesh.`);
+							hostageAction.push(`relaxing in ${his} comfy bed sucking on ${his} feeding tube. One hand is fondling ${his} thick body while the other is teasing ${his} clit. ${His} body has become notably plush, made even more obvious when an orgasm sends ripples through ${his} soft flesh.`);
 							hostageAction.push(`humming as ${he} soothes ${his} full belly as ${he} enjoys a good fucking.`);
 							switch (V.hostage.fetish) {
 								case "submissive":
@@ -3468,11 +3468,11 @@ App.Events.pRivalryActions = function() {
 				if (random(1, 100) > 70) {
 					repX(-100, "war");
 					V.rivalryPower += 5;
-					jQuery(result).empty().append(`Since you are not so uncouth as to, for example, help fund a coup attempt, you fund traditional acts of corporate sabotage, including hacking, slander, and actual, physical thievery. There are some <span class="red">minor rumors</span> that you are to blame, but they're outweighed by the <span class="green">great pressure</span> these incidents put on your enemy.`);
+					jQuery(result).empty().append(`Since you are not so uncouth as to, for example, help fund a coup attempt, you fund traditional acts of corporate sabotage, including hacking, slander, and actual, physical thievery. There are some <span class="reputation dec">minor rumors</span> that you are to blame, but they're outweighed by the <span class="green">great pressure</span> these incidents put on your enemy.`);
 				} else {
 					repX(-500, "war");
 					V.rivalryPower += 2;
-					jQuery(result).empty().append(`Since you are not so uncouth as to, for example, help fund a coup attempt, you fund traditional acts of corporate sabotage, including hacking, slander, and actual, physical thievery. Unfortunately, you seem to be a step behind this week. Your enemy <span class="red">prevents</span> many of your attacks, and even manages to turn a few minor players into public confessions that <span class="red">damage</span> your reputation.`);
+					jQuery(result).empty().append(`Since you are not so uncouth as to, for example, help fund a coup attempt, you fund traditional acts of corporate sabotage, including hacking, slander, and actual, physical thievery. Unfortunately, you seem to be a step behind this week. Your enemy <span class="red">prevents</span> many of your attacks, and even manages to turn a few minor players into public confessions that <span class="reputation dec">damage</span> your reputation.`);
 				}
 			}
 		));
diff --git a/src/events/nonRandom/rival/pRivalryHostage.js b/src/events/nonRandom/rival/pRivalryHostage.js
index 88ef72bb91c6c06563da3e9aa3f39770f69c8243..30dc805557c8288546c19e6bc0b39358848c8f2c 100644
--- a/src/events/nonRandom/rival/pRivalryHostage.js
+++ b/src/events/nonRandom/rival/pRivalryHostage.js
@@ -17,7 +17,7 @@ App.Events.pRivalryHostage = function() {
 
 		const {
 			He, His,
-			he, him, himself, his, girl, woman, brother
+			he, him, himself, his, girl, woman, sister
 		} = getPronouns(V.hostage);
 		const {
 			HeR,
@@ -30,7 +30,7 @@ App.Events.pRivalryHostage = function() {
 
 		let _closer = 0;
 		r.push(`Only a few days into your inter-arcology war, you receive a video message from your rival. Once ${V.assistant.name} is satisfied that the file is clean, you clear your office and pull it up. To your surprise, there are two faces on your desk, not one. One of them is your rival, and after a moment, you remember who the other is. You recognize ${him} from your`);
-		if (V.PC.career === "wealth" || V.PC.career === "trust fund" || V.PC.career === "rich kid") {
+		if (isPCCareerInCategory("wealth")) {
 			if (V.PC.career === "wealth" || V.PC.career === "trust fund" || V.PC.actualAge > 16) {
 				r.push(`time as a wealthy ${womanP} of leisure. ${He} was a pretty little party ${girl} who ran in those circles. You were never particularly close,`);
 			} else if (V.PC.career === "rich kid") {
@@ -43,20 +43,20 @@ App.Events.pRivalryHostage = function() {
 				r.push(`You can't say that you've kept in touch,`);
 				_closer = 1;
 			}
-		} else if (V.PC.career === "escort" || V.PC.career === "prostitute" || V.PC.career === "child prostitute") {
+		} else if (isPCCareerInCategory("escort")) {
 			r.push(`time as a ${womanP} of sexual promiscuity.`);
 			if (V.PC.career === "escort" || V.PC.career === "prostitute" || V.PC.actualAge > 16) {
 				r.push(` ran in the same sex circles. You were never particularly close,`);
 			} else if (V.PC.career === "child prostitute") {
 				if (V.hostage.actualAge >= V.PC.actualAge + 6) {
-					r.push(`${He} was a pretty little slut that kept a watchful eye on you to make sure you stayed safe, as if ${he} were your big ${brother}.`);
+					r.push(`${He} was a pretty little slut that kept a watchful eye on you to make sure you stayed safe, as if ${he} were your big ${sister}.`);
 				} else {
 					r.push(`${He} was a pretty little slut around your age that you spent most of your time with. You played together, bathed together, shared clients together, and even lost your virginities together.`);
 				}
 				r.push(`You lost track of ${him} while moving up in the world,`);
 				_closer = 1;
 			}
-		} else if (V.PC.career === "servant" || V.PC.career === "handmaiden" || V.PC.career === "child servant") {
+		} else if (isPCCareerInCategory("servant")) {
 			r.push(`time as a ${womanP} of servitude. ${He} was a`);
 			if (V.PC.career === "servant" || V.PC.career === "handmaiden" || V.PC.actualAge > 16) {
 				if (V.PC.title === 1) {
@@ -75,7 +75,7 @@ App.Events.pRivalryHostage = function() {
 				r.push(`fellow servant under your late Master`);
 				if (V.hostage.actualAge >= V.PC.actualAge + 6) {
 					r.push(`that dedicated a lot of ${his} time to raising`);
-					if (slave.counter.birthsTotal > 0 && V.seePreg) {
+					if (V.hostage.counter.birthsTotal > 0 && V.seePreg) {
 						r.push(`you, even when burdened with ${his} own growing pregnancy.`);
 					} else {
 						r.push(`you.`);
@@ -89,13 +89,13 @@ App.Events.pRivalryHostage = function() {
 					}
 				} else {
 					r.push(`about the same are as you. You spent a lot of time playing and doing chores`);
-					if (V.seePreg && (slave.counter.birthsTotal > 0 || V.PC.counter.birthMaster >= 2)) {
+					if (V.seePreg && (V.hostage.counter.birthsTotal > 0 || V.PC.counter.birthMaster >= 2)) {
 						r.push(`together, and later,`);
-						if (slave.counter.birthsTotal > 0) {
+						if (V.hostage.counter.birthsTotal > 0) {
 							if (V.PC.counter.birthMaster >= 8) {
 								r.push(`just resting against each other since ${he} never became so swollen with children to the point that ${he} could no longer move.`);
 							} else if (V.PC.counter.birthMaster >= 2) {
-								r.push(`learning how to function with a baby-filled bellies.`);
+								r.push(`learning how to function with baby-filled bellies.`);
 							} else {
 								r.push(`exploring ${his} baby-laden young body.`);
 							}
@@ -111,23 +111,120 @@ App.Events.pRivalryHostage = function() {
 				r.push(`You lost track of ${him} while moving up in the world,`);
 				_closer = 1;
 			}
-		} else if (V.PC.career === "gang") {
-			r.push(`time as a gang leader. ${He} was one of your best, yet you never got close enough,`);
-		} else if (V.PC.career === "BlackHat") {
-			r.push(`time as a hacker for hire. ${He} supported you on jobs, even sent some choice pictures of ${himself}, but you were never really close,`);
-		} else if (V.PC.career === "capitalist") {
-			r.push(`career in venture capital. ${He} was a rising manager, young, attractive, and bright. You never worked particularly closely with ${him},`);
-		} else if (V.PC.career === "mercenary") {
-			r.push(`career as a mercenary. ${He} was in logistical support, and was clever and pretty, but without the essential hardness. You were never that close,`);
-		} else if (V.PC.career === "engineer") {
-			r.push(`career as an arcology engineer. ${He} was a glorified sales${woman}, with the gorgeous looks and extreme intelligence necessary to sell entire arcologies. You were never close,`);
-		} else if (V.PC.career === "medicine") {
-			r.push(`career in medicine. ${He} was a surgical nurse, one of the best. ${He} was smart, pretty, and ${he} had sure hands. You were never that close,`);
-		} else if (V.PC.career === "slaver") {
-			r.push(`career as a slaver. ${He} was a guard in one of the slave receiving pens, and a notorious one, at that. Nobody was quite as eager to break in new slaves as ${he} was. You were never that close,`);
-		} else if (V.PC.career === "celebrity") {
-			r.push(`time as a minor celebrity. ${He} was a pretty little groupie who flitted from entourage to entourage. You were never particularly close,`);
-		} else if (V.PC.career === "arcology owner") {
+		} else if (isPCCareerInCategory("gang")) {
+			if (V.PC.career === "gang") {
+				r.push(`time as a gang leader. ${He} was one of your best, yet you never got close enough,`);
+			} else if (V.PC.career === "hoodlum" || V.PC.actualAge > 16) {
+				r.push(`time with the gang. ${He} often caught your eye, but you never got particularly close,`);
+			} else if (V.PC.career === "street urchin") {
+				r.push(`time on the streets.`);
+				if (V.hostage.actualAge >= V.PC.actualAge + 6) {
+					r.push(`${He} was a charming homeless ${girl} that kept a watchful eye on you to make sure you stayed safe, as if ${he} were your big ${brother}. ${He} even helped you become a gang initiate.`);
+				} else {
+					r.push(`${He} was another destitute child that you spent most of your time with. You foraged for scraps together, kept each other warm at night, and even became initiates into the same gang.`);
+				}
+				if (V.hostage.weight > 0) {
+					r.push(`${He}'s put on a surprising amount of weight, so at least ${he} has been eating well.`);
+				}
+				r.push(`You lost track of ${him} while moving up in the world,`);
+				_closer = 1;
+			}
+		} else if (isPCCareerInCategory("BlackHat")) {
+			if (V.PC.career === "BlackHat") {
+				r.push(`time as a hacker for hire. ${He} supported you on jobs, even sent some choice pictures of ${himself}, but you were never really close,`);
+			} else if (V.PC.career === "hacker" || V.PC.actualAge > 16) {
+				r.push(`time as a hacker for fun. You both snatched some lovely pictures of each other and might have decided to take it a step further. You may have only exchanged some salacious messages and images,`);
+			} else if (V.PC.career === "script kiddy") {
+				r.push(`time as a hacker for fun.`);
+				if (V.hostage.actualAge >= V.PC.actualAge + 6) {
+					r.push(`${He} was a cute little shut-in that taught you how to hack.`);
+				} else {
+					r.push(`${He} was another kid you often practiced your scripts with, or on, considering your stash of nudes pics of ${him}.`);
+				}
+				r.push(`You never really found the time to check up on ${him} while moving up in the world,`);
+				_closer = 1;
+			}
+		} else if (isPCCareerInCategory("capitalist")) {
+			if (V.PC.career === "capitalist") {
+				r.push(`career in venture capital. ${He} was a rising manager, young, attractive, and bright. You never worked particularly closely with ${him},`);
+			} else if (V.PC.career === "entrepreneur" || V.PC.actualAge > 16) {
+				r.push(`career in business. ${He} was an intern, young, attractive, and bright. You never paid too much attention to ${him},`);
+			} else if (V.PC.career === "business kid") {
+				r.push(`career in business.`);
+				if (V.hostage.actualAge >= V.PC.actualAge + 6) {
+					r.push(`${He} was a pretty older student that tutored you in business.`);
+				} else {
+					r.push(`${He} was a cute classmate that you spent a lot of time with learning the ins and outs of business.`);
+				}
+				r.push(`You can't say that you've kept in touch,`);
+				_closer = 1;
+			}
+		} else if (isPCCareerInCategory("mercenary")) {
+			if (V.PC.career === "mercenary" || V.PC.career === "recruit" || V.PC.actualAge > 16) {
+				r.push(`career as a mercenary. ${He} was in logistical support, and was clever and pretty, but without the essential hardness. You were never that close,`);
+			} else if (V.PC.career === "child soldier") {
+				r.push(`time as a conscript.`);
+				if (V.hostage.actualAge >= V.PC.actualAge + 6) {
+					r.push(`${He} was a pretty soldier that saw combat from a young age, like yourself. ${He} looked out for you when things got dangerous.`);
+				} else {
+					r.push(`${He} was another child soldier that served along side you. You were always there to support each other when combat become too overwhelming.`);
+				}
+				r.push(`You weren't sure what became of them,`);
+				_closer = 1;
+			}
+		} else if (isPCCareerInCategory("engineer")) {
+			if (V.PC.career === "engineer" || V.PC.career === "construction" || V.PC.actualAge > 16) {
+				r.push(`career as an arcology engineer. ${He} was a glorified sales${woman}, with the gorgeous looks and extreme intelligence necessary to sell entire arcologies. You were never close,`);
+			} else if (V.PC.career === "worksite helper") {
+				r.push(`career working construction jobs.`);
+				if (V.hostage.actualAge >= V.PC.actualAge + 6) {
+					r.push(`${He} was a pretty older ${girl} that frequently visited the worksite. Both stunning and brilliant, you had little doubt ${he}'d go far.`);
+				} else {
+					r.push(`${He} was a cute little ${girl} that loved to stop by the worksite and ask questions. ${He} had a knack for design, and loved to share ${his} ideas with you.`);
+				}
+				r.push(`You can't say that you've kept in touch,`);
+				_closer = 1;
+			}
+		} else if (isPCCareerInCategory("medicine")) {
+			r.push(`career in medicine.`);
+			if (V.PC.career === "medicine" || V.PC.career === "medical assistant" || V.PC.actualAge > 16) {
+				r.push(`${He} was a surgical nurse, one of the best. ${He} was smart, pretty, and ${he} had sure hands. You were never that close,`);
+			} else if (V.PC.career === "nurse") {
+				if (V.hostage.actualAge >= V.PC.actualAge + 6) {
+					r.push(`${He} was a pretty older nurse that taught you a lot of little things about medicine and patient care.`);
+				} else {
+					r.push(`${He} was another little nurse that worked alongside you, entertaining patients and doing ${his} best to stay out of the way.`);
+				}
+				r.push(`You can't say that you've kept in touch,`);
+				_closer = 1;
+			}
+		} else if (isPCCareerInCategory("slaver")) {
+			if (V.PC.career === "slaver" || V.PC.career === "slave overseer" || V.PC.actualAge > 16) {
+				r.push(`career as a slaver. ${He} was a guard in one of the slave receiving pens, and a notorious one, at that. Nobody was quite as eager to break in new slaves as ${he} was. You were never that close,`);
+			} else if (V.PC.career === "slave tender") {
+				r.push(`time looking after slaves.`);
+				if (V.hostage.actualAge >= V.PC.actualAge + 6) {
+					r.push(`${He} was a pretty, if slightly scary, older ${girl} that kept a watchful eye over the slaves and you, almost like a grumpy big ${brother}.`);
+				} else {
+					r.push(`${He} was a little ${girl} that helped clean and feed the slaves with you. You made a pretty good team; if a new capture thought it would be easy to overpower a child, they'd quickly learn to watch their back.`);
+				}
+				r.push(`You can't say that you've kept in touch,`);
+				_closer = 1;
+			}
+		} else if (isPCCareerInCategory("celebrity")) {
+			r.push(`time as a minor celebrity.`);
+			if (V.PC.career === "celebrity" || V.PC.career === "rising star" || V.PC.actualAge > 16) {
+				r.push(`${He} was a pretty little groupie who flitted from entourage to entourage. You were never particularly close,`);
+			} else if (V.PC.career === "child star") {
+				if (V.hostage.actualAge >= V.PC.actualAge + 6) {
+					r.push(`${He} older ${girl} that not only acted as your ${brother} on the set, but also taught in the ins and outs of show business.`);
+				} else {
+					r.push(`${He} was a child star that was often booked alongside you. So much so, you started to be treated more like siblings than competitors.`);
+				}
+				r.push(`You can't say that you've kept in touch,`);
+				_closer = 1;
+			}
+		} else if (isPCCareerInCategory("arcology owner")) {
 			r.push(`time owning another arcology. ${He} was a prominent citizen who supported your government. You were never particularly close,`);
 		}
 		if (_closer !== 1) {
@@ -248,6 +345,9 @@ App.Events.pRivalryHostage = function() {
 			case "Paternalism":
 				r.push(`I'm going to destroy ${him}. Holes first, of course. I'll have to get more inventive after that, and I'll leave ${his} vocal cords for last. That way, ${he}'ll be able to beg. Isn't that right, ${SlaveFullName(V.hostage)}?" The slave begins to scream, and the noise goes on and on. And on.`);
 				break;
+			case "Degradationism":
+				r.push(`${He}'s going to be my lover. ${He}'ll have everything ${he} could ever want, and I'll be sure to let ${him} know all about what you do to your slaves. Isn't that right, ${SlaveFullName(V.hostage)}?" The slave nods uncertainly.`);
+				break;
 			case "Repopulation Focus":
 				r.push(`I'm going to ruin ${his} womb, making sure ${he} can never have children again. I bet you spent lots of nights fantasizing about ${him} with a huge belly didn't you?`);
 				break;
@@ -258,9 +358,6 @@ App.Events.pRivalryHostage = function() {
 					r.push(`I'm going to have ${him} knocked up; not with my seed, of course, but the seed of the lowest of the low. I'm also going to fill ${him} with the most powerful fertility drugs I can get. ${His} poor little womb will be stretched to the limit with society's worst. But ${he}'ll enjoy that, won't you ${SlaveFullName(V.hostage)}?" The slave nods hesitantly, but with evident arousal.`);
 				}
 				break;
-			case "Degradationism":
-				r.push(`${He}'s going to be my lover. ${He}'ll have everything ${he} could ever want, and I'll be sure to let ${him} know all about what you do to your slaves. Isn't that right, ${SlaveFullName(V.hostage)}?" The slave nods uncertainly.`);
-				break;
 			case "Body Purism":
 				r.push(`I'm going to give ${him} a nice pair of fake tits. No reason to be excessively clever when I can just make ${his} tits so huge ${he} won't be able to walk. Isn't that right, ${SlaveFullName(V.hostage)}?" The slave begins to sob.`);
 				break;
@@ -286,7 +383,7 @@ App.Events.pRivalryHostage = function() {
 				r.push(`${He}'s going to be my personal milk dispenser. I shouldn't have to chain ${him} to my desk after the first month, since ${his} udders will pin ${him} in place. Isn't that right, ${SlaveFullName(V.hostage)}?" The slave begins to sob.`);
 				break;
 			case "Physical Idealism":
-				r.push(`${He}'s going to learn to enjoy yourself. I'm going to force ${his} face full of food, ${his} cunt full of dicks and discover ${his} deepest, darkest desires. Wouldn't you like that, ${SlaveFullName(V.hostage)}?" The slave begins to sob. "To start, how about a weigh in? Sixty three and a half kilograms, such a pity, but don't worry, I'll have ${him} nice and plump soon enough."`);
+				r.push(`${He}'s going to learn to enjoy yourself. I'm going to force ${his} face full of food, ${his} cunt full of dicks and discover ${his} deepest, darkest desires. Wouldn't you like that, ${SlaveFullName(V.hostage)}?" The slave begins to sob. "To start, how about a weigh in? ${V.hostage.weight < 0 ? "Just skin and bones, how dreadful" : "So thin and shapeless, such a pity"}, but don't worry, I'll have ${him} nice and plump soon enough."`);
 				break;
 			case "Hedonistic Decadence":
 				r.push(`${He}'s going to be my spotter. Girls should be strong, smoking hot ladies, not disgusting obese slobs. Isn't that right, ${SlaveFullName(V.hostage)}?" The slave nods uncertainly.`);
@@ -509,7 +606,7 @@ App.Events.pRivalryHostage = function() {
 				}
 				slave.face = 75;
 				slave.intelligence = 100;
-			} else if (V.PC.career === "capitalist" || V.PC.career === "entrepreneur" || V.PC.career === "business kid") {
+			} else if (isPCCareerInCategory("capitalist")) {
 				if (V.PC.career === "capitalist" || V.PC.actualAge > 24) {
 					slave.actualAge = random(18, 24);
 					slave.career = "a manager";
@@ -685,22 +782,28 @@ App.Events.pRivalryHostage = function() {
 					slave.boobs = 300;
 					break;
 				case "Slimness Enthusiasm":
-					slave.weight = -20;
+					if (slave.weight > -20) {
+						slave.weight = -20;
+					}
 					slave.boobs = 800;
 					break;
-				case "Pastoralism":
+				case "Pastoralism": // note to self: check age for child hostages and comment on acquisition that she grew tits!
 					slave.weight = 100;
 					slave.muscles = 0;
 					slave.boobs = 1200;
 					break;
 				case "Cummunism":
 					slave.boobs = 800;
-					slave.weight = -20;
+					if (slave.weight > -20) {
+						slave.weight = -20;
+					}
 					break;
 				case "Physical Idealism":
 					slave.boobs = 200;
 					slave.butt = 1;
-					slave.weight = -20;
+					if (slave.weight > -20) {
+						slave.weight = -20;
+					}
 					break;
 				case "Hedonistic Decadence":
 					slave.weight = 100;
diff --git a/src/events/nonRandom/shootInvitation.js b/src/events/nonRandom/shootInvitation.js
index 0fea7a533a67470e81e1dc1c07e58dea6b86efc4..f47c5994be30d88f938e52ef876a670fab280f3d 100644
--- a/src/events/nonRandom/shootInvitation.js
+++ b/src/events/nonRandom/shootInvitation.js
@@ -23,7 +23,7 @@ App.Events.PShootInvitation = class PShootInvitation extends App.Events.BaseEven
 
 		function buy() {
 			cashX(-5000, "event");
-			V.eventResults.shoot = 1;
+			App.Events.queueEvent(1, new App.Events.PShootResult());
 			return `You receive a brief but elegant confirmation. It looks like you've RSVP'd.`;
 		}
 		function decline() {
diff --git a/src/events/nonRandom/shootResult.js b/src/events/nonRandom/shootResult.js
index 707151f4d39babf474b33a1bbc2228d10f999a5d..32aed9c3dd423c80a7335ebdffda10d1d834d0ad 100644
--- a/src/events/nonRandom/shootResult.js
+++ b/src/events/nonRandom/shootResult.js
@@ -4,9 +4,7 @@ App.Events.PShootResult = class PShootResult extends App.Events.BaseEvent {
 	}
 
 	eventPrerequisites() {
-		return [
-			() => V.eventResults.shoot === 1,
-		];
+		return []; // always executes if queued
 	}
 
 	get eventName() {
@@ -24,7 +22,6 @@ App.Events.PShootResult = class PShootResult extends App.Events.BaseEvent {
 		r =[];
 		r.push(`The crowd of nude slaves led up to the lawn and chained to rings along one edge all have pale skin — the better to show impacts, perhaps. But besides that, they are extremely varied, and all physically extraordinary in some way. After you and your fellow partiers are ready, your host fires an old-fashioned revolver in the air and the chained slaves are all released at once. You could easily hit any of them, but you only have one shot.`);
 		App.Events.addParagraph(node, r);
-		V.eventResults.shoot = 0;
 		IncreasePCSkills('warfare', 2);
 
 		const responses = [];
diff --git a/src/events/nonRandomEvent.js b/src/events/nonRandomEvent.js
index 7ecde3a3a7e2a7f0ad10da132612ace27604772d..cd9fa3e73df0747837204f3727c853b04814186c 100644
--- a/src/events/nonRandomEvent.js
+++ b/src/events/nonRandomEvent.js
@@ -53,8 +53,6 @@ App.Events.getNonrandomEvents = function() {
 		new App.Events.pBadCuratives(),
 		new App.Events.pBadBreasts(),
 		new App.Events.pAidInvitation(),
-		new App.Events.pAidResult(),
-		new App.Events.PShootResult(),
 		new App.Events.TwineEvent().wrapPassage([
 			() => V.RecruiterID !== 0,
 			() => V.recruiterProgress >= (13 + (V.recruiterEugenics === 1 ? policies.countEugenicsSMRs() * 6 : 0))
@@ -116,7 +114,7 @@ App.Events.getNonrandomEvents = function() {
  */
 App.Events.getNextNonrandomEvent = function() {
 	return App.Events.getNonrandomEvents()
-		.find(e => e.eventPrerequisites().every(p => p()) && e.castActors());
+		.find(e => App.Events.canExecute(e));
 };
 
 /** get all the nonrandom events which should fire this week
@@ -124,7 +122,27 @@ App.Events.getNextNonrandomEvent = function() {
  */
 App.Events.getWeekNonrandomEvents = function() {
 	return App.Events.getNonrandomEvents()
-		.filter(e => e.eventPrerequisites().every(p => p()) && e.castActors());
+		.filter(e => App.Events.canExecute(e));
+};
+
+/** get the next queued event which should fire, and remove it from the queue
+ * @returns {App.Events.BaseEvent}
+ */
+App.Events.dequeueNextQueuedEvent = function() {
+	const event = (V.eventQueue[0] || [])
+		.find(e => App.Events.canExecute(e));
+	if (event) {
+		V.eventQueue[0].delete(event);
+	}
+	return event;
+};
+
+/** get all the queued events which should fire this week
+ * @returns {Array<App.Events.BaseEvent>}
+ */
+App.Events.getWeekQueuedEvents = function() {
+	return (V.eventQueue[0] || [])
+		.filter(e => App.Events.canExecute(e));
 };
 
 App.Events.playNonrandomEvent = function() {
@@ -141,7 +159,7 @@ App.Events.playNonrandomEvent = function() {
 	} else {
 		if (V.cheatMode) {
 			V.nextButton = "Refresh";
-			// show all the scheduled and nonrandom events, and allow the cheater to play them in any order and skip the remainder
+			// show all the scheduled, nonrandom, and queued events, and allow the cheater to play them in any order and skip the remainder
 			App.UI.DOM.appendNewElement("h2", d, "Scheduled and Nonrandom Events");
 			App.UI.DOM.appendNewElement("div", d, "These scheduled and nonrandom events still need to play this week, in this order.");
 			App.UI.DOM.appendNewElement("div", d, "WARNING: playing certain scheduled events out of order, or skipping them, can break your game! Be careful!", ["note", "warning"]);
@@ -150,15 +168,19 @@ App.Events.playNonrandomEvent = function() {
 			for (const event of events) {
 				App.UI.DOM.appendNewElement("div", linkList, App.UI.DOM.passageLink(event.eventName, passage(), () => { V.event = event; }));
 			}
-			if (events.length > 0) {
+			const queuedEvents = App.Events.getWeekQueuedEvents();
+			for (const event of queuedEvents) {
+				App.UI.DOM.appendNewElement("div", linkList, App.UI.DOM.passageLink(event.eventName, passage(), () => { V.event = event; V.eventQueue[0].delete(event); }));
+			}
+			if (events.length + queuedEvents.length > 0) {
 				App.UI.DOM.appendNewElement("div", d, App.UI.DOM.passageLink("SKIP remaining events and proceed", "Nonrandom Event"));
 			} else {
 				App.UI.DOM.appendNewElement("div", d, App.UI.DOM.passageLink("No more events. Proceed.", "Nonrandom Event"));
 			}
 			d.append(App.Events.renderEventDebugger());
 		} else {
-			// pick the next scheduled or nonrandom event, if there is one
-			const event = App.Events.getNextNonrandomEvent();
+			// pick the next scheduled, nonrandom, or queued event, if there is one
+			const event = App.Events.getNextNonrandomEvent() || App.Events.dequeueNextQueuedEvent();
 			if (event) {
 				// record the chosen event in 'current' (pre-play!) history as well as current state so that it will serialize out correctly if saved from this passage
 				// WARNING: THIS IS ***NOT*** THE ACTIVE STATE PAGE!
diff --git a/src/events/randomEvent.js b/src/events/randomEvent.js
index af00777a5476c74996ab3f385743eb1891afb134..100e737caf4fda444c40b8b352a8aa57e67ef33a 100644
--- a/src/events/randomEvent.js
+++ b/src/events/randomEvent.js
@@ -94,7 +94,11 @@ App.Events.getNonindividualEvents = function() {
 		new App.Events.RERoyalBlood(),
 		new App.Events.REArcologyInspection(),
 
+		new App.Events.REFIBoobslut(),
+		new App.Events.REFIButtslut(),
+		new App.Events.REFICumslut(),
 		new App.Events.REFIDominant(),
+		new App.Events.REFIHumiliation(),
 		new App.Events.REFIMasochist(),
 		new App.Events.REFIPregnancy(),
 		new App.Events.REFISadist(),
@@ -113,7 +117,7 @@ App.Events.getNonindividualEvents = function() {
  */
 App.Events.getValidEvents = function(eventList, slave) {
 	return eventList
-		.filter(e => (e.eventPrerequisites().every(p => p()) && e.castActors(slave)))
+		.filter(e => App.Events.canExecute(e, slave))
 		.reduce((res, cur) => res.concat(Array(cur.weight).fill(cur)), []);
 };
 
diff --git a/src/events/reRecruit.js b/src/events/reRecruit.js
index 448ec7f044484431efd997cb94b3900d7b24cabd..7fa8670531e6eb57689a5cc454e85becdaa6d9ae 100644
--- a/src/events/reRecruit.js
+++ b/src/events/reRecruit.js
@@ -69,7 +69,7 @@ App.Events.RERecruit = class RERecruit extends App.Events.BaseEvent {
 		// filter and weight the delegate events based on their prerequisites, casting requirements, and weight
 		/** @type {App.Events.BaseEvent[]} */
 		const validEvents = this.eventList
-			.filter(e => (e.eventPrerequisites().every(p => p()) && e.castActors()))
+			.filter(e => App.Events.canExecute(e))
 			.reduce((res, cur) => res.concat(Array(cur.weight).fill(cur)), []);
 
 		// we randomly select a qualifying event and immediately write it onto this.params so that
@@ -114,7 +114,7 @@ App.Events.RERecruit = class RERecruit extends App.Events.BaseEvent {
 			const el = App.UI.DOM.appendNewElement("span", node);
 			App.UI.DOM.appendNewElement("span", el, `One of the following recruitment events would have appeared: `);
 			const select = App.UI.DOM.appendNewElement("select", el);
-			const evList = this.eventList.filter(e => (e.eventPrerequisites().every(p => p()) && e.castActors()));
+			const evList = this.eventList.filter(e => App.Events.canExecute(e));
 			for (const ev of evList) {
 				const choice = App.UI.DOM.appendNewElement("option", select, ev.eventName);
 				choice.value = ev.eventName;
diff --git a/src/events/scheduled/pitFightNonlethal.js b/src/events/scheduled/pitFightNonlethal.js
index 1c895cb7ff7bd3dcec47a0789b216e2fc0f0b313..7818d1d4784787579b04cdd10f91bbe33a373e5b 100644
--- a/src/events/scheduled/pitFightNonlethal.js
+++ b/src/events/scheduled/pitFightNonlethal.js
@@ -91,7 +91,7 @@ App.Facilities.Pit.nonlethalFight = function(fighters) {
 
 			const approves = slave.devotion > 50 || (slave.devotion > 20 && (slave.fetish === "masochist" || slave.fetish === "humiliation" || slave.sexualQuirk === "perverted" || slave.behavioralQuirk === "sinful"));
 
-			r.push(`${slave.slaveName} and the ${animal.name} enter ${V.pit.name} from opposite sides. ${slave.slaveName} is naked and ${his} wrists have been bound, and ${he} has already been given ${his} instructions: ${he} is to try to avoid being caught and ${approves ? `fucked` : `raped`} by the animal for five minutes, and if ${he} succeeds, ${he} wins two complete days of rest. The ${animal.name} has been given a large dose of aphrodisiacs, and its lust is apparent – its ${animal.dick.desc} cock is clearly visible, even from where you're seated.`);
+			r.push(`${slave.slaveName} and the ${animal.name} enter ${V.pit.name} from opposite sides. ${slave.slaveName} is naked except for a ring gag, ${his} wrists have been bound, and ${he} has already been given ${his} instructions: ${he} is to try to avoid being caught and ${approves ? `fucked` : `raped`} by the animal for five minutes, and if ${he} succeeds, ${he} wins two complete days of rest. The ${animal.name} has been given a large dose of aphrodisiacs, and its lust is apparent – its ${animal.dick.desc} cock is clearly visible, even from where you're seated.`);
 		} else {
 			r.push(`You review the rules — the combatants are wearing light gloves, and the fight will be nonlethal, with you as the judge. The winner will have the right to do anything they wish to the loser,`);
 
@@ -656,6 +656,7 @@ App.Facilities.Pit.nonlethalFight = function(fighters) {
 				const {him, his} = getPronouns(slave);
 
 				const approves = slave.devotion > 50 || (slave.devotion > 20 && (slave.fetish === "masochist" || slave.fetish === "humiliation" || slave.sexualQuirk === "perverted" || slave.behavioralQuirk === "sinful"));
+				const isVirgin = (canDoVaginal(slave) && slave.vagina === 0) || (canDoAnal(slave) && slave.anus === 0);
 
 				const pussy = ['pussy', 'cunt', 'slit'];
 				const asshole = ['asshole', 'rear hole', 'anus'];
@@ -664,10 +665,18 @@ App.Facilities.Pit.nonlethalFight = function(fighters) {
 				const orifice = () => canDoVaginal(slave) ? either(pussy) : canDoAnal(slave) ? either(asshole) : either(mouth);
 				const consummation = App.UI.DOM.makeElement('span', `breaks in`, ["virginity", "loss"]);
 
-				r.push(`It ${animal.type === "hooved" ? `headbutts ${him}` : `swipes at ${his} ${hasAnyLegs(slave) ? hasBothLegs(slave) ? `legs` : `leg` : `lower body`}`}, causing ${him} to go down hard. The ${animal.name} doesn't waste a moment, and mounts ${him} quicker than you thought was possible${animal.type === "hooved" ? ` for ${animal.articleAn} ${animal.name}` : ``}. It takes a few tries, but it finally manages to sink its ${animal.dick.desc} cock into ${slave.slaveName}'s ${orifice()}, causing${V.pit.audience !== 'none' ? ` the crowd to go wild and` : ``} the slave to give a long, loud, drawn-out ${approves ? `moan` : `scream`} as its ${animal.dick.desc} dick `, (canDoVaginal(slave) && slave.vagina === 0) || (canDoAnal(slave) && slave.anus === 0) ? consummation : `fills`, `${his} ${orifice()}. Without pausing for even a second, it begins to steadily thrust, pounding ${him} harder and harder as it gets closer and closer to climax. After several minutes, you see the animal ${animal.type === "canine" ? `push its knot into ${slave.slaveName}'s ${orifice()} and` : ``} finally stop thrusting while the barely-there slave gives a loud ${approves ? `moan` : `groan`}. ${V.pit.audience !== "none" ? `The crowd gives a loud cheer as the` : `The`} animal pulls out, leaving the thoroughly fucked-out ${slave.slaveName} lying there, ${animal.species} cum streaming out of ${his} ${orifice()}.`);
+				// TODO: redo this to better account for oral
+				r.push(`It ${animal.type === "hooved" ? `headbutts ${him}` : `swipes at ${his} ${hasAnyLegs(slave) ? hasBothLegs(slave) ? `legs` : `leg` : `lower body`}`}, causing ${him} to go down hard. The ${animal.name} doesn't waste a moment, and mounts ${him} quicker than you thought was possible${animal.type === "hooved" ? ` for ${animal.articleAn} ${animal.name}` : ``}. It takes a few tries, but it finally manages to sink its ${animal.dick.desc} cock into ${slave.slaveName}'s ${orifice()}, causing${V.pit.audience !== 'none' ? ` the crowd to go wild and` : ``} the slave to give a long, loud, drawn-out ${approves ? `moan` : `scream`} as its ${animal.dick.desc} dick `, isVirgin ? consummation : `fills`, `${his} ${orifice()}. Without pausing for even a second, it begins to steadily thrust, pounding ${him} harder and harder as it gets closer and closer to climax. After several minutes, you see the animal ${animal.type === "canine" ? `push its knot into ${slave.slaveName}'s ${orifice()} and` : ``} finally stop thrusting while the barely-there slave gives a loud ${approves ? `moan` : `groan`}. ${V.pit.audience !== "none" ? `The crowd gives a loud cheer as the` : `The`} animal pulls out, leaving the thoroughly fucked-out ${slave.slaveName} lying there, ${animal.species} cum streaming out of ${his} ${orifice()}.`);
 
-				// FIXME: not working correctly
-				slave.vagina = slave.vagina < animal.dick.size - 1 ? animal.dick.size - 1 : slave.vagina;
+				if (canDoVaginal(slave)) {
+					seX(slave, 'anal', 'animal');
+					fighters[0].vagina = slave.vagina < animal.dick.size ? animal.dick.size : slave.vagina;
+				} else if (canDoAnal(slave)) {
+					seX(slave, 'vaginal', 'animal');
+					fighters[0].anus = slave.anus < animal.dick.size ? animal.dick.size : slave.anus;
+				} else {
+					seX(slave, 'oral', 'animal');
+				}
 			}
 		} else {
 			const {he, his, him, He} = getPronouns(winner);
diff --git a/src/facilities/bodyModification/bodyModification.js b/src/facilities/bodyModification/bodyModification.js
index bed1a2fa661f9f9ee7ebc53ff04c713b069199b8..025809e659e8ec1779b08276334420f36f00eb67 100644
--- a/src/facilities/bodyModification/bodyModification.js
+++ b/src/facilities/bodyModification/bodyModification.js
@@ -438,6 +438,8 @@ App.UI.bodyModification = function(slave, cheat = false) {
 			validTattooLocations = ["anus"];
 		} else if (tattooChoice === "permanent makeup") {
 			validTattooLocations = ["lips"];
+		} else if (tattooChoice === "lewd crest") {
+			validTattooLocations = ["vagina"];
 		} else {
 			validTattooLocations = Array.from(tattooLocations.keys());
 			if (!hasAnyNaturalArms(slave)) {
@@ -472,7 +474,7 @@ App.UI.bodyModification = function(slave, cheat = false) {
 		}
 		// Entire body
 		linkArray = [];
-		if (tattooChoice !== undefined && tattooChoice !== "bleached") {
+		if (tattooChoice !== undefined && validTattooLocations.length > 1) {
 			linkArray.push(
 				App.UI.DOM.link(
 					"Entire body",
@@ -516,6 +518,13 @@ App.UI.bodyModification = function(slave, cheat = false) {
 				}
 			)
 		);
+		if (cheat) {
+			const options = new App.UI.OptionsGroup();
+			options.addOption("Breeding mark", "breedingMark", slave)
+				.addValue("On", 1).on()
+				.addValue("Off", 0).off();
+			el.append(options.render());
+		}
 		el.append(customEl);
 
 		return el;
diff --git a/src/facilities/farmyard/farmyard.js b/src/facilities/farmyard/farmyard.js
index 369ae801acc8104d787864c945be36c3e33e08a5..137e46ac40784b9846bc30fc00c83d41d45c2084 100644
--- a/src/facilities/farmyard/farmyard.js
+++ b/src/facilities/farmyard/farmyard.js
@@ -7,6 +7,12 @@ App.Facilities.Farmyard.farmyard = function() {
 	const rulesDiv = document.createElement("div");
 	const upgradesDiv = document.createElement("div");
 	const animalsDiv = document.createElement("div");
+	const kennelsDiv = document.createElement("div");
+	const stablesDiv = document.createElement("div");
+	const cagesDiv = document.createElement("div");
+	const removeHousingDiv = document.createElement("div");
+
+	const farmyardNameCaps = capFirstChar(V.farmyardName);
 
 	V.nextButton = "Back to Main";
 	V.nextLink = "Main";
@@ -19,7 +25,7 @@ App.Facilities.Farmyard.farmyard = function() {
 		menials(),
 		rules(),
 		upgrades(),
-		animals()
+		animals(),
 	);
 
 	App.UI.DOM.appendNewElement("div", frag, App.UI.SlaveList.stdFacilityPage(App.Entity.facilities.farmyard), "farmyard-slaves");
@@ -37,15 +43,12 @@ App.Facilities.Farmyard.farmyard = function() {
 
 	return frag;
 
-
-
 	function intro() {
 		introDiv.classList.add("farmyard-intro", "scene-intro");
 
-		const desc = App.UI.DOM.appendNewElement("div", introDiv, `${capFirstChar(V.farmyardName)} is an oasis of growth in the midst of the jungle of steel and concrete that is ${V.arcologies[0].name}. Animals are kept in pens, tended to by your slaves, while ${V.farmyardUpgrades.hydroponics
+		const desc = App.UI.DOM.appendNewElement("div", introDiv, `${farmyardNameCaps} is an oasis of growth in the midst of the jungle of steel and concrete that is ${V.arcologies[0].name}. Animals are kept in pens, tended to by your slaves, while ${V.farmyardUpgrades.hydroponics
 			? `rows of hydroponics equipment`
 			: `makeshift fields`} grow crops. `);
-		const link = App.UI.DOM.makeElement("div", null, "indent");
 
 		const count = App.Entity.facilities.farmyard.totalEmployeesCount;
 
@@ -125,22 +128,28 @@ App.Facilities.Farmyard.farmyard = function() {
 			case "Hedonistic":
 				desc.append(`It features wider gates and stalls, for both the humans visiting or tending the occupants, and the animals starting to mimic their handlers${V.seeBestiality ? ` and company` : ``}, with plenty of seats along the way.`);
 				break;
+			case "Slave Professionalism":
+				// desc.append(`TODO:`);
+				break;
+			case "Intellectual Dependency":
+				// desc.append(`TODO:`);
+				break;
 			default:
 				desc.append(`It is very much a converted warehouse still, sectioned off in various 'departments'${V.farmyardUpgrades.machinery ? ` with machinery placed where it can be` : V.farmyardUpgrades.hydroponics ? ` and plumbing for the hydroponics system running every which way` : ``}.`);
 				break;
 		}
 
 		if (count > 2) {
-			desc.append(` ${capFirstChar(V.farmyardName)} is bustling with activity. Farmhands are hurrying about, on their way to feed animals and maintain farming equipment.`);
+			desc.append(` ${farmyardNameCaps} is bustling with activity. Farmhands are hurrying about, on their way to feed animals and maintain farming equipment.`);
 		} else if (count) {
-			desc.append(` ${capFirstChar(V.farmyardName)} is working steadily. Farmhands are moving about, looking after the animals and crops.`);
+			desc.append(` ${farmyardNameCaps} is working steadily. Farmhands are moving about, looking after the animals and crops.`);
 		} else if (S.Farmer) {
 			desc.append(` ${S.Farmer.slaveName} is alone in ${V.farmyardName}, and has nothing to do but look after the animals and crops.`);
 		} else {
-			desc.append(` ${capFirstChar(V.farmyardName)} is empty and quiet.`);
+			desc.append(` ${farmyardNameCaps} is empty and quiet.`);
 		}
 
-		link.append(App.UI.DOM.passageLink(`Decommission ${V.farmyardName}`, "Main", () => {
+		App.UI.DOM.appendNewElement("div", desc, App.UI.DOM.passageLink(`Decommission ${V.farmyardName}`, "Main", () => {
 			if (V.farmMenials) {
 				V.menials += V.farmMenials;
 				V.farmMenials = 0;
@@ -177,37 +186,28 @@ App.Facilities.Farmyard.farmyard = function() {
 			App.Arcology.cellUpgrade(V.building, App.Arcology.Cell.Manufacturing, "Farmyard", "Manufacturing");
 		}));
 
-		desc.append(link);
-		introDiv.appendChild(desc);
-
 		return introDiv;
 	}
 
 	function expand() {
 		expandDiv.classList.add("farmyard-expand");
 
-		const desc = document.createElement("div");
-		const link = App.UI.DOM.makeElement("div", null, "indent");
-		const note = App.UI.DOM.makeElement("span", null, "note");
-		const cost = App.UI.DOM.makeElement("span", null, "yellowgreen");
-
 		const upgradeCost = Math.trunc(V.farmyard * 1000 * V.upgradeMultiplierArcology);
 		const farmhands = App.Entity.facilities.farmyard.totalEmployeesCount;
 
-		cost.append(cashFormat(upgradeCost));
-
-		desc.append(`It can support ${V.farmyard} farmhands. Currently there ${farmhands === 1 ? `is` : `are`} ${farmhands} ${farmhands === 1 ? `farmhand` : `farmhands`} in ${V.farmyardName}. `);
-		note.append(` Costs `, cost, ` and will increase upkeep costs`);
+		App.UI.DOM.appendNewElement('div', expandDiv, `It can support ${V.farmyard} farmhands. Currently there ${farmhands === 1 ? `is` : `are`} ${farmhands} ${farmhands === 1 ? `farmhand` : `farmhands`} in ${V.farmyardName}. `);
 
-		link.append(App.UI.DOM.passageLink(`Expand ${V.farmyardName}`, "Farmyard", () => {
+		App.UI.DOM.appendNewElement('div', expandDiv, App.UI.DOM.link(`Expand ${V.farmyardName}`, () => {
 			cashX(forceNeg(upgradeCost), "capEx");
 			V.farmyard += 5;
 			V.PC.skill.engineering += .1;
-		}));
 
-		link.append(note);
-		desc.append(link);
-		expandDiv.appendChild(desc);
+			App.UI.DOM.replace(expandDiv, expand);
+		},
+		null,
+		'',
+		`Costs ${cashFormat(upgradeCost)} and will increase upkeep costs`),
+		['indent']);
 
 		if (App.Entity.facilities.farmyard.totalEmployeesCount) {
 			App.UI.DOM.appendNewElement("div", expandDiv, removeFacilityWorkers("farmyard"), "indent");
@@ -228,69 +228,72 @@ App.Facilities.Farmyard.farmyard = function() {
 		const frag = new DocumentFragment();
 
 		const links = [];
-		const linksDiv = App.UI.DOM.makeElement("div", null, "indent");
-
-		const menials = V.menials;
-		const farmMenials = V.farmMenials;
-		const farmMenialsSpace = V.farmMenialsSpace;
 
-		if (farmMenials) {
-			frag.append(`Assigned to ${V.farmyardName} ${farmMenials === 1 ? `is` : `are`} ${farmMenials} menial ${farmMenials === 1 ? `slave` : `slaves`}, working to produce as much food for your arcology as they can. `);
+		if (V.farmMenials) {
+			frag.append(`Assigned to ${V.farmyardName} ${V.farmMenials === 1 ? `is` : `are`} ${V.farmMenials} menial ${V.farmMenials === 1 ? `slave` : `slaves`}, working to produce as much food for your arcology as they can. `);
 		}
 
-		if (farmMenialsSpace) {
-			frag.append(`You ${menials ? `own ${num(menials)}` : `don't own any`} free menial slaves. ${capFirstChar(V.farmyardName)} can house ${farmMenialsSpace} menial slaves total, with ${farmMenialsSpace - farmMenials} free spots. `);
+		if (V.farmMenialsSpace) {
+			frag.append(`You ${V.menials ? `own ${num(V.menials)}` : `don't own any`} free menial slaves. ${farmyardNameCaps} can house ${V.farmMenialsSpace} menial slaves total, with ${V.farmMenialsSpace - V.farmMenials} free spots. `);
 		}
 
-		if (farmMenialsSpace && farmMenials < farmMenialsSpace) {
-			if (menials) {
-				links.push(App.UI.DOM.passageLink("Transfer in a menial slave", "Farmyard", () => {
+		if (V.farmMenialsSpace && V.farmMenials < V.farmMenialsSpace) {
+			if (V.menials) {
+				links.push(App.UI.DOM.link("Transfer in a menial slave", () => {
 					V.menials--;
 					V.farmMenials++;
+
+					App.UI.DOM.replace(menialsDiv, menials);
 				}));
 			}
 
-			if (menials >= 10 && farmMenials <= farmMenialsSpace - 10) {
-				links.push(App.UI.DOM.passageLink("Transfer in 10 menial slaves", "Farmyard", () => {
+			if (V.menials >= 10 && V.farmMenials <= V.farmMenialsSpace - 10) {
+				links.push(App.UI.DOM.link("Transfer in 10 menial slaves", () => {
 					V.menials -= 10;
 					V.farmMenials += 10;
+
+					App.UI.DOM.replace(menialsDiv, menials);
 				}));
 			}
 
-			if (menials >= 100 && farmMenials <= farmMenialsSpace - 100) {
-				links.push(App.UI.DOM.passageLink("Transfer in 100 menial slaves", "Farmyard", () => {
+			if (V.menials >= 100 && V.farmMenials <= V.farmMenialsSpace - 100) {
+				links.push(App.UI.DOM.link("Transfer in 100 menial slaves", () => {
 					V.menials -= 100;
 					V.farmMenials += 100;
+
+					App.UI.DOM.replace(menialsDiv, menials);
 				}));
 			}
 
-			if (menials) {
-				links.push(App.UI.DOM.passageLink("Transfer in all free menial slaves", "Farmyard", () => {
-					if (menials > farmMenialsSpace - farmMenials) {
-						V.menials -= farmMenialsSpace - farmMenials;
-						V.farmMenials = farmMenialsSpace;
+			if (V.menials) {
+				links.push(App.UI.DOM.link("Transfer in all free menial slaves", () => {
+					if (V.menials > V.farmMenialsSpace - V.farmMenials) {
+						V.menials -= V.farmMenialsSpace - V.farmMenials;
+						V.farmMenials = V.farmMenialsSpace;
 					} else {
-						V.farmMenials += menials;
+						V.farmMenials += V.menials;
 						V.menials = 0;
 					}
+
+					App.UI.DOM.replace(menialsDiv, menials);
 				}));
 			}
-		} else if (!farmMenialsSpace) {
-			frag.append(`${capFirstChar(V.farmyardName)} cannot currently house any menial slaves. `);
+		} else if (!V.farmMenialsSpace) {
+			frag.append(`${farmyardNameCaps} cannot currently house any menial slaves. `);
 		} else {
-			frag.append(`${capFirstChar(V.farmyardName)} has all the menial slaves it can currently house assigned to it. `);
+			frag.append(`${farmyardNameCaps} has all the menial slaves it can currently house assigned to it. `);
 		}
 
-		if (farmMenials) {
-			links.push(App.UI.DOM.passageLink("Transfer out all menial slaves", "Farmyard", () => {
-				V.menials += farmMenials;
+		if (V.farmMenials) {
+			links.push(App.UI.DOM.link("Transfer out all menial slaves", () => {
+				V.menials += V.farmMenials;
 				V.farmMenials = 0;
+
+				App.UI.DOM.replace(menialsDiv, menials);
 			}));
 		}
 
-		linksDiv.append(App.UI.DOM.generateLinksStrip(links));
-		frag.append(linksDiv);
-
+		App.UI.DOM.appendNewElement("div", frag, App.UI.DOM.generateLinksStrip(links), ['indent']);
 
 		return frag;
 	}
@@ -299,48 +302,51 @@ App.Facilities.Farmyard.farmyard = function() {
 		const frag = new DocumentFragment();
 
 		const links = [];
-		const linksDiv = App.UI.DOM.makeElement("div", null, "indent");
 
-		const menials = V.menials;
-		const farmMenials = V.farmMenials;
-		const farmMenialsSpace = V.farmMenialsSpace;
 		const popCap = menialPopCap();
-		const bulkMax = popCap.value - menials - V.fuckdolls - V.menialBioreactors;
+		const bulkMax = popCap.value - V.menials - V.fuckdolls - V.menialBioreactors;
 
 		const menialPrice = Math.trunc(menialSlaveCost());
 		const maxMenials = Math.trunc(Math.clamp(V.cash / menialPrice, 0, bulkMax));
 
-		if (farmMenialsSpace) {
+		if (V.farmMenialsSpace) {
 			if (bulkMax > 0 || V.menials + V.fuckdolls + V.menialBioreactors === 0) {
-				links.push(App.UI.DOM.passageLink("Buy ", "Farmyard", () => {
+				links.push(App.UI.DOM.link(`Buy ${num(1)}`, () => {
 					V.menials++;
 					V.menialSupplyFactor--;
 					cashX(forceNeg(menialPrice), "farmyard");
+
+					App.UI.DOM.replace(menialsDiv, menials);
 				}));
 
-				links.push(App.UI.DOM.passageLink("(x10)", "Farmyard", () => {
+				links.push(App.UI.DOM.link(`Buy ${num(10)}`, () => {
 					V.menials += 10;
 					V.menialSupplyFactor -= 10;
 					cashX(forceNeg(menialPrice * 10), "farmyard");
+
+					App.UI.DOM.replace(menialsDiv, menials);
 				}));
 
-				links.push(App.UI.DOM.passageLink("(x100)", "Farmyard", () => {
+				links.push(App.UI.DOM.link(`Buy ${num(100)}`, () => {
 					V.menials += 100;
 					V.menialSupplyFactor -= 100;
 					cashX(forceNeg(menialPrice * 100), "farmyard");
+
+					App.UI.DOM.replace(menialsDiv, menials);
 				}));
 
-				links.push(App.UI.DOM.passageLink("(max)", "Farmyard", () => {
+				links.push(App.UI.DOM.link(`Buy maximum`, () => {
 					V.menials += maxMenials;
 					V.menialSupplyFactor -= maxMenials;
 					cashX(forceNeg(maxMenials * menialPrice), "farmyard");
+
+					App.UI.DOM.replace(menialsDiv, menials);
 				}));
 			}
 		}
 
-		if (farmMenials) {
-			linksDiv.append(App.UI.DOM.generateLinksStrip(links));
-			frag.append(linksDiv);
+		if (V.farmMenials) {
+			App.UI.DOM.appendNewElement("div", frag, App.UI.DOM.generateLinksStrip(links), ['indent']);
 		}
 
 		return frag;
@@ -349,26 +355,19 @@ App.Facilities.Farmyard.farmyard = function() {
 	function houseMenials() {
 		const frag = new DocumentFragment();
 
-		const desc = document.createElement("div");
-		const link = App.UI.DOM.makeElement("div", null, "indent");
-		const note = App.UI.DOM.makeElement("span", null, "note");
-		const cost = App.UI.DOM.makeElement("span", null, "yellowgreen");
-
 		const unitCost = Math.trunc(1000 * V.upgradeMultiplierArcology);
 
-		cost.append(cashFormat(unitCost));
-
 		if (V.farmMenialsSpace < 500) {
-			desc.append(`There is enough room in ${V.farmyardName} to build housing, enough to give ${V.farmMenialsSpace + 100} menial slaves a place to sleep and relax. `);
-			note.append(` Costs `, cost, ` and will increase upkeep costs`);
+			App.UI.DOM.appendNewElement("div", frag, `There is enough room in ${V.farmyardName} to build housing, enough to give ${V.farmMenialsSpace + 100} menial slaves a place to sleep and relax.`);
 
-			link.append(App.UI.DOM.passageLink("Build a new housing unit", "Farmyard", () => {
+			App.UI.DOM.appendNewElement("div", frag, App.UI.DOM.link(`Build a new housing unit`, () => {
 				cashX(forceNeg(unitCost), "farmyard");
 				V.farmMenialsSpace += 100;
-			}), note);
-
-			desc.append(link);
-			frag.append(desc);
+			},
+			null,
+			'',
+			`Costs ${cashFormat(unitCost)} and will increase upkeep costs`),
+			['indent']);
 		}
 
 		return frag;
@@ -468,9 +467,11 @@ App.Facilities.Farmyard.farmyard = function() {
 				desc.append(bold, ` ${descText}. `);
 			}
 
-			link.append(App.UI.DOM.passageLink(linkText, "Farmyard", () => {
+			link.append(App.UI.DOM.link(linkText, () => {
 				enabled.forEach(i => V[i] = 1);
 				disabled.forEach(i => V[i] = 0);
+
+				App.UI.DOM.replace(rulesDiv, rules);
 			}));
 
 			desc.append(link);
@@ -492,324 +493,285 @@ App.Facilities.Farmyard.farmyard = function() {
 		const machineryCost = Math.trunc(50000 * V.upgradeMultiplierArcology);
 
 		if (!farmyardUpgrades.pump) {
-			const desc = document.createElement("div");
-			const upgrade = createUpgrade(
+			App.UI.DOM.appendNewElement("div", upgradesDiv, `${farmyardNameCaps} is currently using the basic water pump that it came with.`);
+
+			upgradesDiv.append(createUpgrade(
 				"Upgrade the water pump",
 				pumpCost,
 				'slightly decreases upkeep costs',
 				"pump"
-			);
-
-			desc.append(`${capFirstChar(V.farmyardName)} is currently using the basic water pump that it came with.`);
-
-			upgradesDiv.append(desc, upgrade);
+			));
 		} else {
-			const desc = document.createElement("div");
-
-			desc.append(`The water pump in ${V.farmyardName} is a more efficient model, slightly improving the amount of crops it produces.`);
-
-			upgradesDiv.append(desc);
+			App.UI.DOM.appendNewElement("div", upgradesDiv, `The water pump in ${V.farmyardName} is a more efficient model, slightly improving the amount of crops it produces.`);
 
 			if (!farmyardUpgrades.fertilizer) {
-				const upgrade = createUpgrade(
+				upgradesDiv.append(createUpgrade(
 					"Use a higher-quality fertilizer",
 					fertilizerCost,
 					'moderately increases crop yield and slightly increases upkeep costs',
 					"fertilizer"
-				);
-
-				upgradesDiv.append(upgrade);
+				));
 			} else {
-				const desc = document.createElement("div");
-
-				desc.append(`${capFirstChar(V.farmyardName)} is using a higher-quality fertilizer, moderately increasing the amount of crops it produces and raising slightly raising upkeep costs.`);
-
-				upgradesDiv.append(desc);
+				App.UI.DOM.appendNewElement("div", upgradesDiv, `${farmyardNameCaps} is using a higher-quality fertilizer, moderately increasing the amount of crops it produces and slightly raising upkeep costs.`);
 
 				if (!farmyardUpgrades.hydroponics) {
-					const upgrade = createUpgrade(
+					upgradesDiv.append(createUpgrade(
 						"Purchase an advanced hydroponics system",
 						hydroponicsCost,
 						'moderately decreases upkeep costs',
 						"hydroponics"
-					);
-
-					upgradesDiv.append(upgrade);
+					));
 				} else {
-					const desc = document.createElement("div");
-
-					desc.append(`${capFirstChar(V.farmyardName)} is outfitted with an advanced hydroponics system, reducing the amount of water your crops consume and thus moderately reducing upkeep costs.`);
-
-					upgradesDiv.append(desc);
+					App.UI.DOM.appendNewElement("div", upgradesDiv, `${farmyardNameCaps} is outfitted with an advanced hydroponics system, reducing the amount of water your crops consume and thus moderately reducing upkeep costs.`);
 
 					if (!farmyardUpgrades.seeds) {
-						const upgrade = createUpgrade(
+						upgradesDiv.append(createUpgrade(
 							"Purchase genetically modified seeds",
 							seedsCost,
 							'moderately increases crop yield and slightly increases upkeep costs',
 							"seeds"
-						);
-
-						upgradesDiv.append(upgrade);
+						));
 					} else {
-						const desc = document.createElement("div");
-
-						desc.append(`${capFirstChar(V.farmyardName)} is using genetically modified seeds, significantly increasing the amount of crops it produces and moderately increasing upkeep costs.`);
-
-						upgradesDiv.append(desc);
+						App.UI.DOM.appendNewElement("div", upgradesDiv, `${farmyardNameCaps} is using genetically modified seeds, significantly increasing the amount of crops it produces and moderately increasing upkeep costs.`);
 
 						if (!farmyardUpgrades.machinery) {
-							const upgrade = createUpgrade(
+							upgradesDiv.append(createUpgrade(
 								"Upgrade the machinery",
 								machineryCost,
 								'moderately increases crop yield and slightly increases upkeep costs',
 								"machinery"
-							);
-
-							upgradesDiv.append(upgrade);
+							));
 						} else {
-							const desc = document.createElement("div");
-
-							desc.append(`The machinery in ${V.farmyardName} has been upgraded, and is more efficient, significantly increasing crop yields and significantly decreasing upkeep costs.`);
-
-							upgradesDiv.append(desc);
+							App.UI.DOM.appendNewElement("div", upgradesDiv, `The machinery in ${V.farmyardName} has been upgraded and is more efficient, significantly increasing crop yields and significantly decreasing upkeep costs.`);
 						}
 					}
 				}
 			}
 		}
 
+		/**
+		 * @param {string} linkText The text to display.
+		 * @param {number} price The price of the upgrade.
+		 * @param {string} effect The change the upgrade causes.
+		 * @param {"pump"|"fertilizer"|"hydroponics"|"machinery"|"seeds"} type The variable name of the upgrade.
+		 */
 		function createUpgrade(linkText, price, effect, type) {
-			const desc = document.createElement("div");
-			const link = App.UI.DOM.makeElement("div", null, "indent");
-			const note = App.UI.DOM.makeElement("span", null, "note");
-			const cost = App.UI.DOM.makeElement("span", null, "yellowgreen");
-
-			cost.append(cashFormat(price));
+			const frag = new DocumentFragment();
 
-			link.append(App.UI.DOM.passageLink(linkText, "Farmyard", () => {
+			App.UI.DOM.appendNewElement("div", frag, App.UI.DOM.link(linkText, () => {
 				cashX(forceNeg(price), "farmyard");
 				farmyardUpgrades[type] = 1;
-			}));
 
-			note.append(` Costs `, cost, ` and ${effect}.`);
-			link.append(note);
-			desc.append(link);
+				App.UI.DOM.replace(upgradesDiv, upgrades);
+			},
+			null,
+			'',
+			`Costs ${cashFormat(price)} and ${effect}.`),
+			['indent']);
 
-			return desc;
+			return frag;
 		}
 
 		return upgradesDiv;
 	}
 
 	function animals() {
-		const baseCost = Math.trunc(5000 * V.upgradeMultiplierArcology);
-		const upgradedCost = Math.trunc(10000 * V.upgradeMultiplierArcology);
+		animalsDiv.classList.add("farmyard-animals");
 
-		let farmyardKennels = V.farmyardKennels;
-		let farmyardStables = V.farmyardStables;
-		let farmyardCages = V.farmyardCages;
+		animalsDiv.append(kennels(), stables(), cages());
 
+		if (V.farmyardKennels || V.farmyardStables || V.farmyardCages) {
+			animalsDiv.append(removeHousing());
+		}
 
+		return animalsDiv;
+	}
 
-		// MARK: Kennels
+	function kennels() {
+		const baseCost = Math.trunc(5000 * V.upgradeMultiplierArcology);
+		const upgradedCost = Math.trunc(10000 * V.upgradeMultiplierArcology);
 
 		const CL = V.canine.length;
 
-		const dogs = CL === 1 ? `${V.canine[0]}s` : CL < 3 ?
-			`several different breeds of dogs` :
-			`all kinds of dogs`;
-		const canines = CL === 1 ? V.canine[0].species === "dog" ?
-			V.canine[0].breed : V.canine[0].speciesPlural : CL < 3 ?
-			`several different ${V.canine.every(
-				c => c.species === "dog") ?
-				`breeds of dogs` : `species of canines`}` :
-			`all kinds of canines`;
-
-		const kennels = document.createElement("div");
-		const kennelsUpgrade = App.UI.DOM.makeElement("div", null, "indent");
-		const kennelsNote = App.UI.DOM.makeElement("span", null, "note");
-		const kennelsCost = App.UI.DOM.makeElement("span", null, "yellowgreen");
-
-		if (farmyardKennels === 0) {
-			kennels.append(App.UI.DOM.passageLink("Add kennels", "Farmyard",
-				() => {
-					cashX(forceNeg(baseCost), "farmyard");
-					V.farmyardKennels = 1;
-				}));
-
-			kennelsCost.append(cashFormat(baseCost));
-			kennelsNote.append(` Costs `, kennelsCost, `, will incur upkeep costs, and unlocks domestic canines`);
-
-			kennels.append(kennelsNote);
-		} else if (farmyardKennels === 1) {
-			kennels.append(App.UI.DOM.passageLink("Kennels", "Farmyard Animals"));
-			kennels.append(` have been built in one corner of ${V.farmyardName}, and are currently ${CL < 1 ? `empty` : `occupied by ${dogs}`}.`);
+		const dogs = CL === 1
+			? `${V.canine[0]}s`
+			: CL < 3
+				? `several different breeds of dogs`
+				: `all kinds of dogs`;
+		const canines = CL === 1
+			? V.canine[0].species === "dog"
+				? V.canine[0].breed
+				: V.canine[0].speciesPlural
+			: CL < 3
+				? `several different ${V.canine.every(c => c.species === "dog")
+					? `breeds of dogs`
+					: `species of canines`}`
+				: `all kinds of canines`;
+
+		if (V.farmyardKennels === 0) {
+			kennelsDiv.append(App.UI.DOM.link(`Add kennels`, () => {
+				cashX(forceNeg(baseCost), "farmyard");
+				V.farmyardKennels = 1;
+
+				App.UI.DOM.replace(kennelsDiv, kennels);
+			},
+			null,
+			'',
+			`Costs ${cashFormat(baseCost)}, will incur upkeep costs, and unlocks domestic canines`));
+		} else if (V.farmyardKennels === 1) {
+			kennelsDiv.append(App.UI.DOM.passageLink("Kennels", "Farmyard Animals"), ` have been built in one corner of ${V.farmyardName}, and are currently ${CL < 1 ? `empty` : `occupied by ${dogs}`}.`);
 
 			if (V.rep > 10000) {
-				kennelsUpgrade.append(App.UI.DOM.passageLink("Upgrade kennels", "Farmyard",
-					() => {
-						cashX(forceNeg(upgradedCost), "farmyard");
-						V.farmyardKennels = 2;
-					}));
-
-				kennelsCost.append(cashFormat(upgradedCost));
-				kennelsNote.append(` Costs `, kennelsCost, `, will incur additional upkeep costs, and unlocks exotic canines`);
-
-				kennelsUpgrade.append(kennelsNote);
-				kennels.append(kennelsUpgrade);
+				App.UI.DOM.appendNewElement("div", kennelsDiv, App.UI.DOM.link("Upgrade kennels", () => {
+					cashX(forceNeg(upgradedCost), "farmyard");
+					V.farmyardKennels = 2;
+
+					App.UI.DOM.replace(kennelsDiv, kennels);
+				},
+				null,
+				'',
+				`Costs ${cashFormat(upgradedCost)} will incur additional upkeep costs, and unlocks exotic canines`),
+				['indent']);
 			} else {
-				kennelsNote.append(`You must be more reputable to be able to house exotic canines`);
-				kennels.append(kennelsNote);
+				App.UI.DOM.appendNewElement("div", stablesDiv, App.UI.DOM.disabledLink("Upgrade kennels",
+					[`You must be more reputable to be able to house exotic canines.`]),
+				['indent']);
 			}
-		} else if (farmyardKennels === 2) {
-			kennels.append(App.UI.DOM.passageLink("Large kennels", "Farmyard Animals"));
-			kennels.append(` have been built in one corner of ${V.farmyardName}, and are currently ${CL < 1 ? `empty` : `occupied by ${canines}`}.`);
+		} else if (V.farmyardKennels === 2) {
+			kennelsDiv.append(App.UI.DOM.passageLink("Large kennels", "Farmyard Animals"), ` have been built in one corner of ${V.farmyardName}, and are currently ${CL < 1 ? `empty` : `occupied by ${canines}`}.`);
 		}
 
+		return kennelsDiv;
+	}
 
-
-		// MARK: Stables
+	function stables() {
+		const baseCost = Math.trunc(5000 * V.upgradeMultiplierArcology);
+		const upgradedCost = Math.trunc(10000 * V.upgradeMultiplierArcology);
 
 		const HL = V.hooved.length;
 
-		const hooved = HL === 1 ? `${V.hooved[0]}s` : HL < 3 ?
-			`several different types of hooved animals` :
-			`all kinds of hooved animals`;
-
-		const stables = document.createElement("div");
-		const stablesUpgrade = App.UI.DOM.makeElement("div", null, "indent");
-		const stablesNote = App.UI.DOM.makeElement("span", null, "note");
-		const stablesCost = App.UI.DOM.makeElement("span", null, "yellowgreen");
-
-		if (farmyardStables === 0) {
-			stables.append(App.UI.DOM.passageLink("Add stables", "Farmyard",
-				() => {
-					cashX(forceNeg(baseCost), "farmyard");
-					V.farmyardStables = 1;
-				}));
+		const hooved = HL === 1
+			? `${V.hooved[0]}s` : HL < 3
+				? `several different types of hooved animals`
+				: `all kinds of hooved animals`;
 
-			stablesCost.append(cashFormat(baseCost));
-			stablesNote.append(` Costs `, stablesCost, `, will incur upkeep costs, and unlocks domestic hooved animals`);
+		if (V.farmyardStables === 0) {
+			App.UI.DOM.appendNewElement("div", stablesDiv, App.UI.DOM.link("Add stables", () => {
+				cashX(forceNeg(baseCost), "farmyard");
+				V.farmyardStables = 1;
 
-			stables.append(stablesNote);
-		} else if (farmyardStables === 1) {
-			stables.append(App.UI.DOM.passageLink("Stables", "Farmyard Animals"));
-			stables.append(` have been built in one corner of ${V.farmyardName}, and are currently ${HL < 1 ? `empty` : `occupied by ${hooved}`}.`);
+				App.UI.DOM.replace(stablesDiv, stables);
+			},
+			null,
+			'',
+			`Costs ${cashFormat(baseCost)}, will incur upkeep costs, and unlocks domestic hooved animals`));
+		} else if (V.farmyardStables === 1) {
+			stablesDiv.append(App.UI.DOM.passageLink("Stables", "Farmyard Animals"), ` have been built in one corner of ${V.farmyardName}, and are currently ${HL < 1 ? `empty` : `occupied by ${hooved}`}.`);
 
 			if (V.rep > 10000) {
-				stablesUpgrade.append(App.UI.DOM.passageLink("Upgrade stables", "Farmyard",
-					() => {
-						cashX(forceNeg(upgradedCost), "farmyard");
-						V.farmyardStables = 2;
-					}));
-
-				stablesCost.append(cashFormat(upgradedCost));
-				stablesNote.append(` Costs `, stablesCost, `, will incur additional upkeep costs, and unlocks exotic hooved animals`);
-
-				stablesUpgrade.append(stablesNote);
-				stables.append(stablesUpgrade);
+				App.UI.DOM.appendNewElement("div", stablesDiv, App.UI.DOM.link("Upgrade stables", () => {
+					cashX(forceNeg(upgradedCost), "farmyard");
+					V.farmyardStables = 2;
+
+					App.UI.DOM.replace(stablesDiv, stables);
+				},
+				null,
+				'',
+				`Costs ${cashFormat(upgradedCost)}, will incur additional upkeep costs, and unlocks exotic hooved animals`),
+				['indent']);
 			} else {
-				stablesNote.append(`You must be more reputable to be able to house exotic hooved animals`);
-				stables.append(stablesNote);
+				App.UI.DOM.appendNewElement("div", stablesDiv, App.UI.DOM.disabledLink("Upgrade stables",
+					[`You must be more reputable to be able to house exotic hooved animals.`]),
+				['indent']);
 			}
-		} else if (farmyardStables === 2) {
-			stables.append(App.UI.DOM.passageLink("Large stables", "Farmyard Animals"));
-			stables.append(` have been built in one corner of ${V.farmyardName}, and are currently ${HL < 1 ? `empty` : `occupied by ${hooved}`}.`);
+		} else if (V.farmyardStables === 2) {
+			stablesDiv.append(App.UI.DOM.passageLink("Large stables", "Farmyard Animals"), ` have been built in one corner of ${V.farmyardName}, and are currently ${HL < 1 ? `empty` : `occupied by ${hooved}`}.`);
 		}
 
+		return stablesDiv;
+	}
 
-
-		// MARK: Cages
+	function cages() {
+		const baseCost = Math.trunc(5000 * V.upgradeMultiplierArcology);
+		const upgradedCost = Math.trunc(10000 * V.upgradeMultiplierArcology);
 
 		const FL = V.feline.length;
 
-		const cats = FL === 1 ? `${V.feline[0]}s` : FL < 3 ?
-			`several different breeds of cats` :
-			`all kinds of cats`;
-		const felines = FL === 1 ? V.feline[0].species === "cat" ?
-			V.feline[0].breed : V.feline[0].speciesPlural : FL < 3 ?
-			`several different ${V.feline.every(
-				c => c.species === "cat") ?
-				`breeds of cats` : `species of felines`}` :
-			`all kinds of felines`;
-
-		const cages = document.createElement("div");
-		const cagesUpgrade = App.UI.DOM.makeElement("div", null, "indent");
-		const cagesNote = App.UI.DOM.makeElement("span", null, "note");
-		const cagesCost = App.UI.DOM.makeElement("span", null, "yellowgreen");
-
-		if (farmyardCages === 0) {
-			cages.append(App.UI.DOM.passageLink("Add cages", "Farmyard",
-				() => {
-					cashX(forceNeg(baseCost), "farmyard");
-					V.farmyardCages = 1;
-				}));
-
-			cagesCost.append(cashFormat(baseCost));
-			cagesNote.append(` Costs `, cagesCost, `, will incur upkeep costs, and unlocks domestic felines`);
-
-			cages.append(cagesNote);
-		} else if (farmyardCages === 1) {
-			cages.append(App.UI.DOM.passageLink("Cages", "Farmyard Animals"));
-			cages.append(` have been built in one corner of ${V.farmyardName}, and are currently ${FL < 1 ? `empty` : `occupied by ${cats}`}.`);
+		const cats = FL === 1
+			? `${V.feline[0]}s`
+			: FL < 3
+				? `several different breeds of cats`
+				: `all kinds of cats`;
+		const felines = FL === 1
+			? V.feline[0].species === "cat"
+				? V.feline[0].breed
+				: V.feline[0].speciesPlural
+			: FL < 3
+				? `several different ${V.feline.every(c => c.species === "cat")
+					? `breeds of cats`
+					: `species of felines`}`
+				: `all kinds of felines`;
+
+		if (V.farmyardCages === 0) {
+			cagesDiv.append(App.UI.DOM.link("Add cages", () => {
+				cashX(forceNeg(baseCost), "farmyard");
+				V.farmyardCages = 1;
+
+				App.UI.DOM.replace(cagesDiv, cages);
+			},
+			null,
+			'',
+			`Costs ${cashFormat(baseCost)}, will incur upkeep costs, and unlocks domestic felines`));
+		} else if (V.farmyardCages === 1) {
+			cagesDiv.append(App.UI.DOM.passageLink("Cages", "Farmyard Animals"), ` have been built in one corner of ${V.farmyardName}, and are currently ${FL < 1 ? `empty` : `occupied by ${cats}`}.`);
 
 			if (V.rep > 10000) {
-				cagesUpgrade.append(App.UI.DOM.passageLink("Upgrade cages", "Farmyard",
-					() => {
-						cashX(forceNeg(upgradedCost), "farmyard");
-						V.farmyardCages = 2;
-					}));
-
-				cagesCost.append(cashFormat(upgradedCost));
-				cagesNote.append(` Costs `, cagesCost, `, will incur additional upkeep costs, and unlocks exotic felines`);
-
-				cagesUpgrade.append(cagesNote);
-				cages.append(cagesUpgrade);
+				App.UI.DOM.appendNewElement("div", cagesDiv, App.UI.DOM.link("Upgrade cages", () => {
+					cashX(forceNeg(upgradedCost), "farmyard");
+					V.farmyardCages = 2;
+
+					App.UI.DOM.replace(cagesDiv, cages);
+				},
+				null,
+				'',
+				`Costs ${cashFormat(upgradedCost)}, will increase upkeep costs, and unlocks exotic felines`),
+				['indent']);
 			} else {
-				cagesNote.append(`You must be more reputable to be able to house exotic felines`);
-				cages.append(cagesNote);
+				App.UI.DOM.appendNewElement("div", cagesDiv, App.UI.DOM.disabledLink("Upgrade cages",
+					[`You must be more reputable to be able to house exotic felines.`]),
+				['indent']);
 			}
-		} else if (farmyardCages === 2) {
-			cages.append(App.UI.DOM.passageLink("Large cages", "Farmyard Animals"));
-			cages.append(` have been built in one corner of ${V.farmyardName}, and are currently ${FL < 1 ? `empty` : `occupied by ${felines}`}.`);
+		} else if (V.farmyardCages === 2) {
+			cagesDiv.append(App.UI.DOM.passageLink("Large cages", "Farmyard Animals"), ` have been built in one corner of ${V.farmyardName}, and are currently ${FL < 1 ? `empty` : `occupied by ${felines}`}.`);
 		}
 
+		return cagesDiv;
+	}
 
+	function removeHousing() {
+		removeHousingDiv.classList.add("farmyard-remove");
 
-		// MARK: Remove Housing
-
-		const removeHousing = document.createElement("div");
-		const removeHousingNote = App.UI.DOM.makeElement("span", null, "note");
-		const removeHousingCost = App.UI.DOM.makeElement("span", null, "yellowgreen");
-
-		const removeHousingPrice = ((farmyardKennels + farmyardStables + farmyardCages) * 5000) * V.upgradeMultiplierArcology;
-
-		if (farmyardKennels || farmyardStables || farmyardCages) {
-			removeHousing.append(document.createElement("br"));
-
-			removeHousing.append(App.UI.DOM.passageLink("Remove the animal housing", "Farmyard",
-				() => {
-					V.farmyardKennels = 0;
-					V.farmyardStables = 0;
-					V.farmyardCages = 0;
+		const removeHousingPrice = ((V.farmyardKennels + V.farmyardStables + V.farmyardCages) * 5000) * V.upgradeMultiplierArcology;
 
-					V.farmyardShows = 0;
-					V.farmyardBreeding = 0;
-					V.farmyardRestraints = 0;
+		App.UI.DOM.appendNewElement("div", removeHousingDiv, App.UI.DOM.link("Remove the animal housing", () => {
+			V.farmyardKennels = 0;
+			V.farmyardStables = 0;
+			V.farmyardCages = 0;
 
-					clearAnimalsPurchased();
-					cashX(forceNeg(removeHousingPrice), "farmyard");
-				}));
+			V.farmyardShows = 0;
+			V.farmyardBreeding = 0;
+			V.farmyardRestraints = 0;
 
-			removeHousingCost.append(cashFormat(removeHousingPrice));
-			removeHousingNote.append(` Will cost `, removeHousingCost);
-			removeHousing.append(removeHousingNote);
-		}
+			clearAnimalsPurchased();
+			cashX(forceNeg(removeHousingPrice), "farmyard");
 
-		animalsDiv.append(kennels, stables, cages, removeHousing);
+			App.UI.DOM.replace(removeHousingDiv, removeHousing);
+		},
+		null,
+		'',
+		`Will cost ${cashFormat(removeHousingPrice)}`));
 
-		return animalsDiv;
+		return removeHousingDiv;
 	}
 
 	function clearAnimalsPurchased() {
diff --git a/src/facilities/salon/salonPassage.js b/src/facilities/salon/salonPassage.js
index 8c5ddad0f84ce9f72d56003965e5e2a84e8826a1..00dba29238bb3c875a147a35cd0c2071bf0bb164 100644
--- a/src/facilities/salon/salonPassage.js
+++ b/src/facilities/salon/salonPassage.js
@@ -348,7 +348,7 @@ App.UI.salon = function(slave, cheat = false) {
 			option.addComment(comment.join(" "));
 		}
 
-		option = options.addOption(`Dye or paint`, "skin", slave);
+		option = options.addOption(`Dye or paint`, "skin", slave).showTextBox();
 		for (const dye of App.Medicine.Modification.dyedSkins) {
 			option.addValue(capFirstChar(dye), dye, billMod);
 		}
@@ -417,7 +417,7 @@ App.UI.salon = function(slave, cheat = false) {
 			option.pulldown();
 
 			// Style
-			option = options.addOption(`Style ${his} eyebrow hair`, "eyebrowHStyle", slave);
+			option = options.addOption(`Style ${his} eyebrow hair`, "eyebrowHStyle", slave).showTextBox();
 			for (const fullness of App.Medicine.Modification.eyebrowStyles) {
 				option.addValue(capFirstChar(fullness), fullness, billMod);
 			}
@@ -454,7 +454,7 @@ App.UI.salon = function(slave, cheat = false) {
 		} else {
 			r.push(`${His} groin is completely hairless.`);
 		}
-		option = options.addOption(r.join(" "), "pubicHColor", slave);
+		option = options.addOption(r.join(" "), "pubicHColor", slave).showTextBox();
 		if (hasPubes) {
 			if (slave.pubicHColor !== slave.hColor) {
 				option.addValue("Match the curtains", slave.hColor);
diff --git a/src/facilities/surgery/analyzePregnancy.js b/src/facilities/surgery/analyzePregnancy.js
index 0ee7c0452650f0311ce8d3ac7aa13ecd2aae1d69..2a17314c88e6b09fd8939013a6b3b508bc97a0d0 100644
--- a/src/facilities/surgery/analyzePregnancy.js
+++ b/src/facilities/surgery/analyzePregnancy.js
@@ -208,7 +208,7 @@ globalThis.analyzePregnancies = function(mother, cheat) {
 
 			const abnormalitySpans = [];
 			for (const gene in genes.geneticQuirks) {
-				const geneObj = App.Data.genes.get(gene);
+				const geneObj = App.Data.geneticQuirks.get(gene);
 				const quirkName = (geneObj && geneObj.abbreviation) ? geneObj.abbreviation : gene;
 				const quirkColor = (geneObj && geneObj.goodTrait) ? "green" : "red";
 				if (genes.geneticQuirks[gene] >= 2 || typeof genes.geneticQuirks[gene] === "string") { // String check is for heterochromia
diff --git a/src/facilities/surgery/geneticQuirks.js b/src/facilities/surgery/geneticQuirks.js
index 22d86b374937c56f8aa418649ec98c2648073185..1cf5bd4dc462c35eaa8e178fd6d7e1092d2dfc36 100644
--- a/src/facilities/surgery/geneticQuirks.js
+++ b/src/facilities/surgery/geneticQuirks.js
@@ -6,7 +6,7 @@
 App.UI.SlaveInteract.geneticQuirks = function(slave, fetus) {
 	const el = new DocumentFragment();
 	const options = new App.UI.OptionsGroup();
-	for (const [key, obj] of App.Data.genes) {
+	for (const [key, obj] of App.Data.geneticQuirks) {
 		if (obj.hasOwnProperty("requirements") && !obj.requirements) {
 			continue;
 		}
diff --git a/src/facilities/surgery/geneticmods.js b/src/facilities/surgery/geneticmods.js
new file mode 100644
index 0000000000000000000000000000000000000000..ba097ddb6c9036b6a7b70ec7e3a01a5c3eb7ad64
--- /dev/null
+++ b/src/facilities/surgery/geneticmods.js
@@ -0,0 +1,19 @@
+/**
+ * @param {App.Entity.SlaveState} slave
+ * @returns {DocumentFragment}
+ */
+App.UI.SlaveInteract.geneticMods = function(slave) {
+	const el = new DocumentFragment();
+	const options = new App.UI.OptionsGroup();
+	for (const [key, obj] of App.Data.geneticMods) {
+		if (obj.hasOwnProperty("requirements") && !obj.requirements) {
+			continue;
+		}
+		options.addOption(capFirstChar(obj.title), key, slave.geneMods)
+			.addComment(capFirstChar(obj.description))
+			.addValue("off", 0).off()
+			.addValue("on", 1).on();
+	}
+	el.append(options.render());
+	return el;
+};
diff --git a/src/facilities/surgery/surgeryPassageExotic.js b/src/facilities/surgery/surgeryPassageExotic.js
index 378e7cbaa8331ba403e17c3de231e4dea313c01d..4f5996639118b6d5d9513acac816174297b4baa9 100644
--- a/src/facilities/surgery/surgeryPassageExotic.js
+++ b/src/facilities/surgery/surgeryPassageExotic.js
@@ -132,7 +132,7 @@ App.UI.surgeryPassageExotic = function(slave, cheat = false) {
 				select.classList.add("rajs-list");
 				const description = App.UI.DOM.appendNewElement("div", el, null);
 				for (const gene in slave.geneticQuirks) {
-					const geneData = App.Data.genes.get(gene);
+					const geneData = App.Data.geneticQuirks.get(gene);
 
 					// Continue if player settings do not allow them to even see it described
 					if (geneData.hasOwnProperty("requirements") && !geneData.requirements) {
@@ -169,7 +169,7 @@ App.UI.surgeryPassageExotic = function(slave, cheat = false) {
 					const el = new DocumentFragment();
 					const r = [];
 					const linkArray = [];
-					const geneData = App.Data.genes.get(selectedGene);
+					const geneData = App.Data.geneticQuirks.get(selectedGene);
 					r.push(`Selected gene is`);
 					r.push(App.UI.DOM.makeElement("span", `${geneData.title}:`, "orange"));
 					r.push(`${geneData.description}.`);
diff --git a/src/gui/Encyclopedia/encyclopedia.tw b/src/gui/Encyclopedia/encyclopedia.tw
index 58e8e16c1a1fea12bf3ceb1e1cb35b4973284de6..75cb8e94e7c6cacb1a3639306d037c0c2706c386 100644
--- a/src/gui/Encyclopedia/encyclopedia.tw
+++ b/src/gui/Encyclopedia/encyclopedia.tw
@@ -129,15 +129,23 @@ PLAYING FREE CITIES
 
 
 <<case "Keyboard Shortcuts">>
-	The game supports a few keyboard shortcuts.
-
-	<br><br>''Enter'' or ''space'' will activate the uppermost button in the left-side UI bar. This button is context sensitive; in events and reports it continues the game, while in menus it functions as a back button. ''Enter'' is used to end the week from the main menu, and ''space'' is used to continue in all other situations.
-
-	<br><br>''Right arrow'', ''left arrow'' and ''q'', ''e'' will move between slaves in slaves' individual menus.
-
-	<br><br>On the main menus, ''C'' will open arcology management, ''S'' will open the slave markets, ''A'' will open personal attention options, ''H'' will open Head Girl management, ''B'' will open Bodyguard management, ''R'' will open Recruiter management, ''X'' will review your personal affairs, and ''F'' will initiate the short sex scene at the bottom of the main menu.
-
-
+	The uppermost button (in events and reports it continues the game, while in menus it functions as a back button) in the left-side UI bar can be activated via context sensitive keybinds; ''<<print App.UI.Hotkeys.hotkeys("endWeek")>>'' is used to end the week from the main menu, and ''<<print App.UI.Hotkeys.hotkeys("nextLink")>>'' is used to continue in all other situations.
+
+	<br><br>Within slaves' individual menus ''<<print App.UI.Hotkeys.hotkeys("prev-slave")>>'' will move to the last slave and ''<<print App.UI.Hotkeys.hotkeys("next-slave")>>'' to the next.
+
+	<br>Review your personal affairs with ''<<print App.UI.Hotkeys.hotkeys("Manage Personal Affairs")>>'' and weekly actions with ''<<print App.UI.Hotkeys.hotkeys("Personal Attention Select")>>''.
+	<br>''<<print App.UI.Hotkeys.hotkeys("Rules Assistant")>>'' will open RA Rules. 
+	<br>''<<print App.UI.Hotkeys.hotkeys("Manage Arcology")>>'' will open arcology management.
+	<br>''<<print App.UI.Hotkeys.hotkeys("Options")>>'' will opens the options menu.
+	<br>''<<print App.UI.Hotkeys.hotkeys("Buy Slaves")>>'' will open the slave markets.
+	<br>''<<print App.UI.Hotkeys.hotkeys("BG Select")>>'' will open Bodyguard management.
+	<br>''<<print App.UI.Hotkeys.hotkeys("Future Society")>>'' will open Future Societies.
+	<br>''<<print App.UI.Hotkeys.hotkeys("Manage Penthouse")>>'' will open Manage Penthouse.
+	
+	<br>''<<print App.UI.Hotkeys.hotkeys("Manage Penthouse")>>'' will ''only open'' Head Girl management on the main page.
+
+	 <br><br>Nearly every key can be rebound in Hotkey Settings which can be accessed in game via SideBar -> Options -> Hotkey Settings. 
+	 <<includeDOM App.UI.DOM.linkReplace(" Modify/review them now", App.UI.Hotkeys.settings())>>
 <<case "The Arcology Interface">>
 	The Arcology Interface is the large table-based display at the top of the main menu. It's designed as an abstract representation of the arcology.
 
@@ -3075,6 +3083,8 @@ MODS
 
 		<br><strong>Leader</strong>: The leader is who will command the combined troops in the field. Each type of leader has its bonuses and maluses.
 
+		<br><br><<includeDOM terrainAndTactics()>>
+
 	<br><br>Leaders:
 		<<setAssistantPronouns>>
 		<br><strong>The Assistant</strong>: The assistant can lead the troops. _HisA performance will entirely depend on the computational power _heA has available. Human soldiers will be not happy to be lead by a computer however and will fight with less ardor, unless your own reputation or authority is high enough.
diff --git a/src/gui/options/optionsGroup.js b/src/gui/options/optionsGroup.js
index 4d583bfb4612c13c8018555afcafe09303f1e70f..1401237940d57a0fe2f24963fbc6d9ea48df14c7 100644
--- a/src/gui/options/optionsGroup.js
+++ b/src/gui/options/optionsGroup.js
@@ -2,8 +2,9 @@ App.UI.OptionsGroup = (function() {
 	class Row {
 		/**
 		 * @param {HTMLDivElement} container
+		 * @param {function():void} refresh
 		 */
-		render(container) {} // jshint ignore:line
+		render(container, refresh) {} // jshint ignore:line
 	}
 
 	/**
@@ -195,8 +196,9 @@ App.UI.OptionsGroup = (function() {
 
 		/**
 		 * @param {HTMLDivElement} container
+		 * @param {function():void} refresh
 		 */
-		render(container) {
+		render(container, refresh) {
 			/* left side */
 			const desc = document.createElement("div");
 			desc.className = "description";
@@ -232,7 +234,7 @@ App.UI.OptionsGroup = (function() {
 							if (value.value) {
 								Engine.play(value.value);
 							} else {
-								App.UI.reload();
+								refresh();
 							}
 						};
 					} else {
@@ -260,7 +262,7 @@ App.UI.OptionsGroup = (function() {
 							if (value.callback) {
 								value.callback(value.value);
 							}
-							App.UI.reload();
+							refresh();
 						};
 					}
 					buttonGroup.append(button);
@@ -293,7 +295,7 @@ App.UI.OptionsGroup = (function() {
 					if (originalObj && typeof originalObj.callback === "function") {
 						originalObj.callback(originalObj.value);
 					}
-					App.UI.reload();
+					refresh();
 				};
 				buttonGroup.append(select);
 			}
@@ -302,7 +304,7 @@ App.UI.OptionsGroup = (function() {
 				const onlyNumber = !this.textbox.forceString && typeof currentValue === "number";
 				const textbox = App.UI.DOM.makeTextBox(currentValue, input => {
 					this.object[this.property] = input;
-					App.UI.reload();
+					refresh();
 				}, onlyNumber);
 				if (onlyNumber) {
 					textbox.classList.add("number");
@@ -394,8 +396,9 @@ App.UI.OptionsGroup = (function() {
 
 		/**
 		 * @param {HTMLDivElement} container
+		 * @param {function():void} refresh
 		 */
-		render(container) {
+		render(container, refresh) {
 			/* left side */
 			const desc = document.createElement("div");
 			desc.className = "description";
@@ -414,7 +417,7 @@ App.UI.OptionsGroup = (function() {
 					if (button.passage) {
 						Engine.play(button.passage);
 					} else {
-						App.UI.reload();
+						refresh();
 					}
 				};
 				buttonGroup.append(buttonElement);
@@ -443,8 +446,9 @@ App.UI.OptionsGroup = (function() {
 
 		/**
 		 * @param {HTMLDivElement} container
+		 * @param {function():void} refresh
 		 */
-		render(container) {
+		render(container, refresh) {
 			/* left */
 			container.append(document.createElement("div"));
 
@@ -482,6 +486,7 @@ App.UI.OptionsGroup = (function() {
 			 */
 			this.rows = [];
 			this.doubleColumn = false;
+			this.refresh = App.UI.reload;
 		}
 
 		/**
@@ -492,6 +497,18 @@ App.UI.OptionsGroup = (function() {
 			return this;
 		}
 
+		/**
+		 * Adds a custom function to be executed when changing an option. By default App.UI.reload() is executed.
+		 * Can be overwritten by some options, the behaviour is the same as with the default function.
+		 *
+		 * @param {function():void} refresh
+		 * @returns {OptionsGroup}
+		 */
+		customRefresh(refresh) {
+			this.refresh = refresh;
+			return this;
+		}
+
 		/**
 		 * @template {Row} T
 		 * @param {T} row
@@ -551,8 +568,8 @@ App.UI.OptionsGroup = (function() {
 				container.classList.add("double");
 			}
 
-			for (/** @type {Row} */ const row of this.rows) {
-				row.render(container);
+			for (const row of this.rows) {
+				row.render(container, this.refresh);
 			}
 
 			return container;
diff --git a/src/gui/storyCaption.js b/src/gui/storyCaption.js
index d1874a601e38d335365748aa4e101582d2fa1166..138447be6be60c49654539dbc4fdd925b13617e1 100644
--- a/src/gui/storyCaption.js
+++ b/src/gui/storyCaption.js
@@ -62,11 +62,6 @@ App.UI.storyCaption = function() {
 		App.UI.DOM.appendNewElement("p", fragment, App.UI.quickMenu());
 
 		if (V.nextButton !== "Continue" && V.nextButton !== " ") {
-			if (pass === "Rules Assistant") {
-				App.UI.DOM.appendNewElement("p", fragment,
-					App.UI.DOM.passageLink("Rules Assistant Summary", "Rules Assistant Summary"));
-			}
-
 			if (V.debugMode > 0) {
 				fragment.append(debug());
 			}
diff --git a/src/interaction/main/mainLinks.js b/src/interaction/main/mainLinks.js
index 19f1c3a13d25c94b604d343c9fdbd499cc9314c5..c26d9c4e7cd189ff2b34a72215f3b953e141d4fc 100644
--- a/src/interaction/main/mainLinks.js
+++ b/src/interaction/main/mainLinks.js
@@ -84,7 +84,7 @@ App.UI.View.mainLinks = function() {
 	if (V.PC.health.shortDamage < 30) {
 		const link = App.UI.DOM.makeElement("span", App.UI.DOM.passageLink("Change plans", "Personal Attention Select"), "major-link");
 		link.id = "managePA";
-		fragment.append(" ", link, " ", App.UI.DOM.makeElement("span", App.UI.Hotkeys.hotkeys("Personal Attention"), "hotkey"));
+		fragment.append(" ", link, " ", App.UI.DOM.makeElement("span", App.UI.Hotkeys.hotkeys("Personal Attention Select"), "hotkey"));
 	}
 
 	if (V.useSlaveSummaryOverviewTab === 0) {
diff --git a/src/interaction/main/walkPast.js b/src/interaction/main/walkPast.js
index 63b5f54bf3c81117a72656e2f26868aa28bdd9d7..a33af50bc6ea68a22ad03491d7ee9a8abe6d3a74 100644
--- a/src/interaction/main/walkPast.js
+++ b/src/interaction/main/walkPast.js
@@ -154,7 +154,7 @@ globalThis.walkPast = (function() {
 		}
 
 		const frag = document.createDocumentFragment();
-		$(frag).append(output);
+		$(frag).append(output + ' ');
 		const span = App.UI.DOM.appendNewElement("span", frag, App.UI.DOM.generateLinksStrip(links));
 		span.id = `walkpast-${activeSlave.ID}`;
 		return frag;
diff --git a/src/interaction/siWork.js b/src/interaction/siWork.js
index 8a4558b2d555bdfdb33b65ff2b42719e028dbb77..bf97f37f5f3815b46c4a33ac4d1cd58378d884fc 100644
--- a/src/interaction/siWork.js
+++ b/src/interaction/siWork.js
@@ -353,7 +353,7 @@ App.UI.SlaveInteract.work = function(slave, refresh) {
 			sexOptions.push({text: `Use ${his} mouth`, scene: `FLips`});
 			sexOptions.push({text: `Kiss ${him}`, scene: `FKiss`});
 			if (hasAnyLegs(slave)) {
-				sexOptions.push({text: `Have ${him} dance for you`, get scene() { return App.Interact.dance(slave); }});
+				sexOptions.push({text: `Have ${him} dance for you`, get scene() { return App.Interact.fDance(slave); }});
 			}
 
 			sexOptions.push({text: `Play with ${his} tits`, scene: `FBoobs`});
@@ -409,7 +409,10 @@ App.UI.SlaveInteract.work = function(slave, refresh) {
 
 			if (canGetPregnant(slave) && (slave.geneticQuirks.superfetation !== 2 || V.geneticMappingUpgrade !== 0) && (slave.fuckdoll === 0) && V.seePreg !== 0) {
 				if (canImpreg(slave, V.PC)) {
-					sexOptions.push({text: `Impregnate ${him} yourself`, scene: `FPCImpreg`});
+					sexOptions.push({
+						text: `Impregnate ${him} yourself`,
+						get scene() { return App.Interact.fPCImpreg(slave); },
+					});
 				}
 				if (canImpreg(slave, slave)) {
 					sexOptions.push({text: `Use ${his} own seed to impregnate ${him}`, scene: `FSlaveSelfImpreg`});
@@ -684,7 +687,7 @@ App.UI.SlaveInteract.work = function(slave, refresh) {
 				}
 			}
 			if (slave.fetish !== "mindbroken" && slave.accent < 4 && ((canTalk(slave)) || hasAnyArms(slave))) {
-				sexOptions.push({text: `Ask ${him} about ${his} feelings`, scene: `FFeelings`});
+				sexOptions.push({text: `Ask ${him} about ${his} feelings`, scene: App.Interact.feelings(slave)});
 				if (V.PC.dick > 0) {
 					sexOptions.push({text: `Make ${him} beg`, scene: `FBeg`});
 				}
diff --git a/src/js/DefaultRules.js b/src/js/DefaultRules.js
index 8760fbab5102f87764c4afe98fc5b6d19ecda458..a810a07bf3991064fb2581add046741f81cc2847 100644
--- a/src/js/DefaultRules.js
+++ b/src/js/DefaultRules.js
@@ -1821,19 +1821,13 @@ globalThis.DefaultRules = (function() {
 			} else if (slave.balls > 0) {
 				if ((rule.XY !== undefined) && (rule.XY !== null)) {
 					if (slave.hormones !== rule.XY) {
-						if (slave.assignment !== Job.RECRUITER) {
-							if (slave.assignment !== Job.WARDEN) {
-								if (slave.assignment !== Job.MADAM) {
-									const _oldHormones = slave.hormones;
-									slave.hormones = rule.XY;
-									if (slave.indentureRestrictions >= 2) {
-										slave.hormones = Math.clamp(slave.hormones, -1, 1);
-									}
-									if (slave.hormones !== _oldHormones) {
-										r += `<br>${slave.slaveName} is a shemale, so ${he} has been put on the appropriate hormonal regime.`;
-									}
-								}
-							}
+						const _oldHormones = slave.hormones;
+						slave.hormones = rule.XY;
+						if (slave.indentureRestrictions >= 2) {
+							slave.hormones = Math.clamp(slave.hormones, -1, 1);
+						}
+						if (slave.hormones !== _oldHormones) {
+							r += `<br>${slave.slaveName} is a shemale, so ${he} has been put on the appropriate hormonal regime.`;
 						}
 					}
 				}
diff --git a/src/js/SlaveState.js b/src/js/SlaveState.js
index 01b6d3ef11e838e3897c1a95fe035011e2d46659..5636ddf9c581a569783c4d9dc7d1061959985d5a 100644
--- a/src/js/SlaveState.js
+++ b/src/js/SlaveState.js
@@ -299,7 +299,7 @@ App.Entity.SlaveActionsCountersState = class {
 		this.mammary = 0;
 		/** penetrative sex count */
 		this.penetrative = 0;
-		/** */
+		/** number of times used by the general public */
 		this.publicUse = 0;
 		/** number of slaves killed in pit fights*/
 		this.pitKills = 0;
@@ -307,6 +307,8 @@ App.Entity.SlaveActionsCountersState = class {
 		this.pitWins = 0;
 		/** number of pit fights lost */
 		this.pitLosses = 0;
+		/** number of bestiality encounters */
+		this.bestiality = 0;
 		/** How many slaves she has sired under your ownership. */
 		this.slavesFathered = 0;
 		/** How many children she has fucked into you that you later birthed. */
@@ -2468,7 +2470,7 @@ App.Entity.SlaveState = class SlaveState {
 		 * * "pig"
 		 * * "horse"
 		 * * "cow"
-		 * @type {FC.AnimalKind}
+		 * @type {FC.AnimalType}
 		 */
 		this.eggType = "human";
 		/** Eugenics variable. Is the slave allowed to choose to wear chastity.
diff --git a/src/js/economyJS.js b/src/js/economyJS.js
index 9018814f9757ac8ce486113d628e418b1d703786..ff5179fb5f18b6a169750f977d1d841d0bd7cc63 100644
--- a/src/js/economyJS.js
+++ b/src/js/economyJS.js
@@ -227,6 +227,9 @@ globalThis.CategoryAssociatedGroup = Object.freeze({
 		'specialForces',
 		'specialForcesCap',
 		'peacekeepers'
+	],
+	WASTE: [
+		'multiplier'
 	]
 });
 
diff --git a/src/js/rulesAssistant.js b/src/js/rulesAssistant.js
index 826982329b3340ddb665ddd08e6ede3ea2ef486c..c524403210c586ba7b2fb4920d67a380ff3edb2d 100644
--- a/src/js/rulesAssistant.js
+++ b/src/js/rulesAssistant.js
@@ -411,111 +411,6 @@ globalThis.RulesDeconfliction = function(slave) {
 	slave = before;
 };
 
-/**
- * Creates a table to summarize RA
- * @returns {string}
- */
-globalThis.RASummaryCell = function() {
-	/**
-	 * @param {object[]} objects
-	 * @param {string[]} member
-	 */
-	function collectMemberFromObjects(objects, member) {
-		let r = [];
-		for (const o of objects) {
-			let to = o;
-			for (const m of member) {
-				to = to[m];
-			}
-			r.push(to);
-		}
-		return r;
-	}
-
-	/**
-	 * @callback objectWalker
-	 * @param {object} obj
-	 * @param {string[]} memberPath
-	 */
-
-	/**
-	 * @param {object} obj
-	 * @param {objectWalker} walker
-	 * @param {string[]} path
-	 */
-	function walkObject(obj, walker, path) {
-		for (const prop in obj) {
-			const v = obj[prop];
-			const vp = path.concat([prop]);
-			if (v !== null && typeof v === 'object') {
-				walkObject(v, walker, vp);
-			} else {
-				walker(obj, vp);
-			}
-		}
-	}
-
-	/**
-	 * @param {string[]} path
-	 * @param {Array} cells
-	 * @param {string[]} table
-	 */
-	function addRow(path, cells, table) {
-		if (!cells.some(v => v !== null)) { // skip empty rows
-			return;
-		}
-
-		function ruleSetValueToString(v) {
-			if (typeof v === 'object') {
-				if (v.hasOwnProperty('cond') && v.hasOwnProperty('val')) {
-					return `<nowiki>${v.cond}</nowiki>&nbsp;${v.val}`;
-				} else if (v.hasOwnProperty('min') && v.hasOwnProperty('max')) {
-					return `${v.min} to ${v.max}`;
-				} else {
-					return JSON.stringify(v);
-				}
-			}
-			return `${v}`;
-		}
-
-		let r = `<td>${path.join('.')}</td>`;
-		for (const cell of cells) {
-			r += cell !== null ? `<td>${ruleSetValueToString(cell)}</td>` : '<td></td>';
-		}
-		table.push(r);
-	}
-	/** @type {FC.RA.Rule[]} */
-	const rules = V.defaultRules;
-	let r = "";
-
-	if (rules.length === 0) {
-		return '';
-	}
-
-	/* start row title */
-	r += `<tr><th style="position:sticky; top:0px; background:#111"></th>`;
-
-	/* make rest of row title */
-	for (const rule of rules) {
-		r += `<th style="position:sticky; top:0px; background:#111">${rule.name}</th>`;
-	}
-	r += `</tr>`;
-
-	const setters = rules.map(r => r.set);
-	/* A row for every condition the RA can set. */
-	/* start loop for row*/
-
-	let tableRows = [];
-	walkObject(emptyDefaultRule().set, (obj, path) => {
-		addRow(path, collectMemberFromObjects(setters, path), tableRows);
-	}, []);
-
-	for (const row of tableRows) {
-		r += `<tr>${row}</tr>`;
-	}
-	return r;
-};
-
 /**
  * Creates RA target object used in rules for body properties
  * @param {string} condition comparison condition. One of '==', '>=', '<=', '>', '<'
diff --git a/src/js/rulesAssistantOptions.js b/src/js/rulesAssistantOptions.js
index fb71848936cabb24564abfbc82ecdb73414d3aab..4b25cc9b20f798f5867c6a854a266f1ff53e3cec 100644
--- a/src/js/rulesAssistantOptions.js
+++ b/src/js/rulesAssistantOptions.js
@@ -1175,9 +1175,12 @@ App.RA.options = (function() {
 		}
 
 		render(element) {
-			const greeting = document.createElement("p");
-			greeting.innerHTML = `<em>${properTitle()}, I will review your slaves and make changes that will have a beneficial effect. Apologies, ${properTitle()}, but this function is... not fully complete. It may have some serious limitations. Please use the '${noDefaultSetting.text}' option to identify areas I should not address.
-			<br>For things like breast, butt, lip, dick and ball injections you need to only set the growth targets in Physical Regimen and I'll try to figure out how to best achieve them, you probably won't need a separate rules for each of them or have to worry about ending the injections.</em>`;
+			const greeting = App.UI.DOM.makeElement("p", null, "scene-intro");
+			App.UI.DOM.appendNewElement("div", greeting, `${properTitle()}, I will review your slaves and make changes that will have a beneficial effect. Apologies, ${properTitle()}, but this function is... not fully complete. It may have some serious limitations. Please use the '${noDefaultSetting.text}' option to identify areas I should not address.`);
+			App.UI.DOM.appendNewElement("div", greeting, `For things like breast, butt, lip, dick and ball injections you need to only set the growth targets in Physical Regimen and I'll try to figure out how to best achieve them, you probably won't need a separate rules for each of them or have to worry about ending the injections.`);
+			const summary = App.UI.DOM.appendNewElement("div", greeting, `You can always see an overview of all of your rules in the `);
+			summary.append(App.UI.DOM.passageLink("summary view", "Rules Assistant Summary"));
+			summary.append(`.`);
 			element.appendChild(greeting);
 			return element;
 		}
diff --git a/src/js/rulesAssistantSummary.js b/src/js/rulesAssistantSummary.js
new file mode 100644
index 0000000000000000000000000000000000000000..d67a754b6a860ca63f30d530073eede7f3949f34
--- /dev/null
+++ b/src/js/rulesAssistantSummary.js
@@ -0,0 +1,116 @@
+App.RA.summary = function() {
+	const el = App.UI.DOM.makeElement("div", null, "scroll");
+	App.UI.DOM.appendNewElement("div", el, `Here you can see an overview of all of your rules at the same time.`, "scene-intro");
+	App.UI.DOM.appendNewElement("div", el, `Rules further to the right will always take priority, but some rules may not apply to all slaves.`, "scene-intro");
+
+	el.append(makeTable());
+	return el;
+	/**
+	 * Creates a table to summarize RA
+	 * @returns {HTMLTableElement}
+	 */
+	function makeTable() {
+		const table = App.UI.DOM.makeElement("table", null, "ra-sum");
+		/** @type {FC.RA.Rule[]} */
+		const rules = V.defaultRules;
+
+		if (rules.length === 0) {
+			return table;
+		}
+
+		/* start row title */
+		const header = App.UI.DOM.appendNewElement("tr", table, null, ["ra-sum", "header"]);
+		App.UI.DOM.appendNewElement("th", header, null, ["ra-sum", "first-header-cell"]);
+
+		/* make rest of row title */
+		for (const rule of rules) {
+			App.UI.DOM.appendNewElement("th", header, App.UI.DOM.link(
+				rule.name,
+				() => {
+					V.currentRule = rule.ID;
+				},
+				[],
+				"Rules Assistant"
+			), "ra-sum");
+		}
+
+		const setters = rules.map(r => r.set);
+		/* A row for every condition the RA can set. */
+		/* start loop for row*/
+
+		walkObject(emptyDefaultRule().set, (obj, path) => {
+			addRow(path, collectMemberFromObjects(setters, path));
+		}, []);
+
+		return table;
+		/**
+		 * @param {object[]} objects
+		 * @param {string[]} member
+		 */
+		function collectMemberFromObjects(objects, member) {
+			let r = [];
+			for (const o of objects) {
+				let to = o;
+				for (const m of member) {
+					to = to[m];
+				}
+				r.push(to);
+			}
+			return r;
+		}
+
+		/**
+		 * @callback objectWalker
+		 * @param {object} obj
+		 * @param {string[]} memberPath
+		 */
+
+		/**
+		 * @param {object} obj
+		 * @param {objectWalker} walker
+		 * @param {string[]} path
+		 */
+		function walkObject(obj, walker, path) {
+			for (const prop in obj) {
+				const v = obj[prop];
+				const vp = path.concat([prop]);
+				if (v !== null && typeof v === 'object') {
+					walkObject(v, walker, vp);
+				} else {
+					walker(obj, vp);
+				}
+			}
+		}
+
+		/**
+		 * @param {string[]} path
+		 * @param {Array} cells
+		 */
+		function addRow(path, cells) {
+			if (!cells.some(v => v !== null)) { // skip empty rows
+				return;
+			}
+			const row = App.UI.DOM.makeElement("tr", null, "ra-sum");
+
+			function ruleSetValueToString(v) {
+				if (typeof v === 'object') {
+					if (v.hasOwnProperty('cond') && v.hasOwnProperty('val')) {
+						return `${v.cond} ${v.val}`;
+					} else if (v.hasOwnProperty('min') && v.hasOwnProperty('max')) {
+						return `${v.min} to ${v.max}`;
+					} else {
+						return JSON.stringify(v);
+					}
+				}
+				return `${v}`;
+			}
+
+			App.UI.DOM.appendNewElement("td", row, path.join('.'), ["ra-sum", "row-title"]);
+			for (const cell of cells) {
+				const content = cell !== null ? ruleSetValueToString(cell) : null;
+				App.UI.DOM.appendNewElement("td", row, content, "ra-sum");
+			}
+			table.append(row);
+		}
+	}
+};
diff --git a/src/js/sexActsJS.js b/src/js/sexActsJS.js
index be7405df4c52d7ad1fc7343f07cb6d22352fd3e4..26e576fd2391631c5fd86522ca83bc7cc4ca5bda 100644
--- a/src/js/sexActsJS.js
+++ b/src/js/sexActsJS.js
@@ -473,6 +473,9 @@ globalThis.actX = function(slave, act, count = 1) {
 		case "abortions":
 			V.abortionsTotal += count;
 			break;
+		case "bestiality":
+			V.bestialityTotal += count;
+			break;
 		default:
 			// Act was likely entered incorrectly.
 			return;
@@ -487,11 +490,11 @@ globalThis.actX = function(slave, act, count = 1) {
  * Sex is between two. This is a handy wrapper for actX that emphasizes that.
  * @param {FC.HumanState} slave1 slave or PC
  * @param {FC.SlaveActs} act1 oral, anal, etc
- * @param {FC.HumanState | "public" | "slaves"} slave2 slave or PC or "public"
- * @param {FC.SlaveActs} act2 oral, anal, etc
+ * @param {FC.HumanState | "animal" | "public" | "slaves"} slave2 slave, PC, "public", or "animal"
+ * @param {FC.SlaveActs} [act2="penetrative"] oral, anal, etc
  * @param {number} [count=1]
  */
-globalThis.seX = function(slave1, act1, slave2, act2, count = 1) {
+globalThis.seX = function(slave1, act1, slave2, act2 = "penetrative", count = 1) {
 	// Slave 1 does their normal thing
 	actX(slave1, act1, count);
 
@@ -499,6 +502,9 @@ globalThis.seX = function(slave1, act1, slave2, act2, count = 1) {
 	if (slave2 === "public" && slave1.ID !== -1) {
 		actX(slave1, "publicUse", count);
 		addPartner(slave1, -2);
+	} else if (slave2 === "animal") {
+		actX(slave1, "bestiality", count);
+		addPartner(slave1, -8);
 	} else if (typeof slave2 === 'string') {
 		// someday we may track "slaves" and "assistant"
 	} else {
diff --git a/src/js/slaveCostJS.js b/src/js/slaveCostJS.js
index 8fd69f343f16ac35c022bedfdb98de073db60980..fcbb4a71a861ce6cad4e6a41a41be5bc9b5c1838 100644
--- a/src/js/slaveCostJS.js
+++ b/src/js/slaveCostJS.js
@@ -1211,19 +1211,19 @@ globalThis.BeautyArray = (function() {
 	 */
 	function calcFutaLawBigBootyBeauty(slave) {
 		if (slave.hips >= 1) {
-			adjustBeauty("Butt: Futa Law: Big", (4 * (slave.hips - 1))); /* 8 */
+			adjustBeauty("Futa Law: Bottom Heavy: Hips", (4 * (slave.hips - 1))); /* 8 */
 			if (arcology.FSSlimnessEnthusiast !== "unset") {
-				adjustBeauty("Butt: Futa Law: Big: Slimness Enthusiast", (4 * (slave.hips - 1))); /* 8 */ /* offsets the malus for big butts */
+				adjustBeauty("Futa Law: Bottom Heavy: Hips (Slimness Enthusiast)", (4 * (slave.hips - 1))); /* 8 */ /* offsets the malus for big butts */
 			}
 		}
 		if (slave.skill.anal > 60 && slave.anus >= 2) {
-			adjustBeauty("Butt: Futa Law: Big", (2 * (slave.anus - 2))); /* 6 */
+			adjustBeauty("Futa Law: Bottom Heavy: Anus", (2 * (slave.anus - 2))); /* 6 */
 			if (arcology.FSSlimnessEnthusiast !== "unset") {
-				adjustBeauty("Butt: Futa Law: Big: Slimness Enthusiast", (2 * (slave.anus - 2))); /* 6 */ /* offsets the malus for big butts */
+				adjustBeauty("Futa Law: Bottom Heavy: Anus (Slimness Enthusiast)", (2 * (slave.anus - 2))); /* 6 */ /* offsets the malus for big butts */
 			}
 		}
 		if (slave.butt >= 5) {
-			adjustBeauty("Butt: Futa Law: Big", (slave.butt - 5)); /* 15 */
+			adjustBeauty("Futa Law: Bottom Heavy: Butt", (slave.butt - 5)); /* 15 */
 		}
 	}
 
diff --git a/src/js/statsChecker/eyeChecker.js b/src/js/statsChecker/eyeChecker.js
index d7d8ed835d660683457063c377843de13ef74f14..82f03cca7cb0b54b80734216e84b21ced11b7ef9 100644
--- a/src/js/statsChecker/eyeChecker.js
+++ b/src/js/statsChecker/eyeChecker.js
@@ -192,7 +192,7 @@ globalThis.getLeftEyeColor = function(slave) {
  * @returns {string}
  */
 globalThis.getRightEyeColor = function(slave) {
-	if (hasLeftEye(slave)) {
+	if (hasRightEye(slave)) {
 		return slave.eye.right.iris;
 	} else {
 		return "empty";
@@ -216,7 +216,7 @@ globalThis.getLeftEyePupil = function(slave) {
  * @returns {string}
  */
 globalThis.getRightEyePupil = function(slave) {
-	if (hasLeftEye(slave)) {
+	if (hasRightEye(slave)) {
 		return slave.eye.right.pupil;
 	} else {
 		return "circular";
@@ -240,7 +240,7 @@ globalThis.getLeftEyeSclera = function(slave) {
  * @returns {string}
  */
 globalThis.getRightEyeSclera = function(slave) {
-	if (hasLeftEye(slave)) {
+	if (hasRightEye(slave)) {
 		return slave.eye.right.sclera;
 	} else {
 		return "empty";
diff --git a/src/js/utilsPC.js b/src/js/utilsPC.js
index f62c7b141b1b4d00444dff3d970749b892d3fda6..2c2eb72a692b863b88145e28a4714cf03348a373 100644
--- a/src/js/utilsPC.js
+++ b/src/js/utilsPC.js
@@ -646,3 +646,17 @@ globalThis.resetPersonalAttention = function() {
 		V.personalAttention = "business";
 	}
 };
+
+/**
+ * Param takes "classic" PC careers, and then function checks data to see if PC has that classic career or a 4.0 equivalent.
+ * @param {String} category
+ * @returns {boolean}
+ */
+globalThis.isPCCareerInCategory = function(category) {
+	try {
+		return Object.values(App.Data.player.career.get(category)).includes(V.PC.career);
+	} catch {
+		console.log(`"${category}" not found in App.Data.player.career`);
+		return false;
+	}
+};
diff --git a/src/js/utilsSlave.js b/src/js/utilsSlave.js
index 007708d9ff4ed3bddbdc16a8ffe024470b840f4a..fc914ef55984e879415a152e78ce9db3df6aeb5f 100644
--- a/src/js/utilsSlave.js
+++ b/src/js/utilsSlave.js
@@ -3524,7 +3524,7 @@ globalThis.randomRapeRivalryTarget = function(slave, predicate) {
 /**
  * TODO: move this into seX() once interact scenes are converted
  * @param {FC.HumanState} slave
- * @param {FC.HumanState|number} partner The slave's partner, or the ID of the slave's partner.
+ * @param {FC.HumanState|FC.AnimalState|number} partner The slave's partner, or the ID of the slave's partner.
  *
  * | ***ID*** | **Type**              |
  * |---------:|:----------------------|
@@ -3556,8 +3556,9 @@ globalThis.addPartner = function(slave, partner) {
 	} else if ("ID" in partner) {
 		slave.partners.add(partner.ID);
 	} else {
-		throw new TypeError(`partner must be an object or ID, not "${partner}"`);
+		throw new TypeError(`Partner must be an object or ID, not "${partner}"`);
 	}
+
 	const partnerState = getPartnerState();
 	if (partnerState) {
 		partnerState.partners.add(slave.ID);
diff --git a/src/npc/children/ChildState.js b/src/npc/children/ChildState.js
index edcbb7ec0b58e1a9f5798007286290734cc169f4..a8ab35266361a237b2fa248b903e6ce48284c1b0 100644
--- a/src/npc/children/ChildState.js
+++ b/src/npc/children/ChildState.js
@@ -1836,7 +1836,7 @@ App.Facilities.Nursery.ChildState = class ChildState {
 		 * * "pig"
 		 * * "horse"
 		 * * "cow"
-		 * @type {FC.AnimalKind}
+		 * @type {FC.AnimalType}
 		 */
 		this.eggType = "human";
 		/** Eugenics variable. Is the slave allowed to choose to wear chastity.
diff --git a/src/npc/generate/generateGenetics.js b/src/npc/generate/generateGenetics.js
index 172db9c5abc0eaf88eb4bc9696d5ad84bc2f52b0..960d4af8d6eab32f0cd5773690bc51372e910964 100644
--- a/src/npc/generate/generateGenetics.js
+++ b/src/npc/generate/generateGenetics.js
@@ -672,7 +672,7 @@ globalThis.generateGenetics = (function() {
 	 */
 	function setGeneticQuirks(father, mother, sex) {
 		const quirks = {};
-		App.Data.genes.forEach((value, q) => quirks[q] = 0);
+		App.Data.geneticQuirks.forEach((value, q) => quirks[q] = 0);
 		let chance = 0;
 		let fatherGenes = 0;
 		/** @type {number} */
diff --git a/src/npc/interaction/fAnimal.js b/src/npc/interaction/fAnimal.js
index fb8642c51dad9dcbf441642228237ffc10031eef..d8a064064ce3a29c66ae694fe26b0374d4d78c0c 100644
--- a/src/npc/interaction/fAnimal.js
+++ b/src/npc/interaction/fAnimal.js
@@ -17,6 +17,7 @@ App.Interact.fAnimal = function(slave, type) {
 
 	const approvingFetishes = ["masochist", "humiliation", "perverted", "sinful"];	// not strictly fetishes, but approvingFetishesAndBehavioralQuirksAndSexualQuirks doesn't have the same ring to it
 
+	/** @type {App.Entity.Animal} */
 	const animal = V.active[type];
 
 	const stretches = App.UI.DOM.makeElement("span", `stretches`, ["lime"]);
@@ -601,6 +602,20 @@ App.Interact.fAnimal = function(slave, type) {
 				throw new Error(`Unexpected animal type '${animal}' in completion()`);
 		}
 
+		if (act === Acts.ORAL) {
+			seX(slave, 'oral', 'animal');
+		} else if (act === Acts.ANAL) {
+			seX(slave, 'anal', 'animal');
+
+			slave.vagina = slave.vagina < animal.dick.size ? animal.dick.size : slave.vagina;
+		} else if (act === Acts.VAGINAL) {
+			seX(slave, 'vaginal', 'animal');
+
+			slave.anus = slave.anus < animal.dick.size ? animal.dick.size : slave.anus;
+		} else {
+			throw new Error(`Unexpected act type '${act}' in completion()`);
+		}
+
 		if (act !== Acts.ORAL && canGetPregnant(slave) && canBreed(slave, animal)) {
 			knockMeUp(slave, 5, hole, -8);
 		}
@@ -613,22 +628,6 @@ App.Interact.fAnimal = function(slave, type) {
 					`now-gaping ${orifice()}` :
 					orifice()}, causing a thick stream of cum to slide out of it. Having finished its business, the ${animal.name} runs off, presumably in search of food. `);
 			}
-
-			switch (act) {
-				case Acts.ORAL:
-					slave.counter.oral++;
-					break;
-				case Acts.VAGINAL:
-					slave.counter.vaginal++;
-					slave.vagina = slave.vagina < 3 ? 3 : slave.vagina;
-					break;
-				case Acts.ANAL:
-					slave.counter.anal++;
-					slave.anus = slave.anus < 2 ? 2 : slave.anus;
-					break;
-				default:
-					throw new Error(`Unexpected act type '${act} in completionCanine().`);
-			}
 		}
 
 		function completionHooved() {
@@ -637,22 +636,6 @@ App.Interact.fAnimal = function(slave, type) {
 			} else {
 				r.push(`The ${animal.species === "horse" ? `stallion` : animal.name} begins to thrust faster and faster, causing ${him} to moan and groan as the huge ${animal.species} cock ${act === Acts.VAGINAL ? `batters ${his} cervix` : `fills ${him} completely`}. Before too long, the ${animal.name}'s movements begin to slow, and you can see its large testicles contract as its begins to erupt and fill ${his} ${orifice()} with its thick baby batter. After what seems like an impossibly long time, the ${animal.name}'s dick finally begins to soften and pull out, leaving ${slave.slaveName} panting and covered in sweat. You have another slave lead the ${animal.name} away, with a fresh apple as a treat for its good performance. `);
 			}
-
-			switch (act) {
-				case Acts.ORAL:
-					slave.counter.oral++;
-					break;
-				case Acts.VAGINAL:
-					slave.counter.vaginal++;
-					slave.vagina = slave.vagina < 4 ? 4 : slave.vagina;
-					break;
-				case Acts.ANAL:
-					slave.counter.anal++;
-					slave.anus = slave.anus < 3 ? 3 : slave.anus;
-					break;
-				default:
-					throw new Error(`Unexpected act type '${act}' in completionHooved().`);
-			}
 		}
 
 		function completionFeline() {
@@ -663,22 +646,6 @@ App.Interact.fAnimal = function(slave, type) {
 			}
 
 			healthDamage(slave, 1);
-
-			switch (act) {
-				case Acts.ORAL:
-					slave.counter.oral++;
-					return;
-				case Acts.VAGINAL:
-					slave.counter.vaginal++;
-					slave.vagina = slave.vagina < 2 ? 2 : slave.vagina;
-					return;
-				case Acts.ANAL:
-					slave.counter.anal++;
-					slave.anus = slave.anus < 1 ? 1 : slave.anus;
-					return;
-				default:
-					throw new Error(`Unexpected act type '${act} in completionFeline().`);
-			}
 		}
 
 		App.Events.addNode(mainSpan, r);
diff --git a/src/npc/interaction/fDance.js b/src/npc/interaction/fDance.js
index f1756bcd9b26ee754e109c953999494b5a98ac59..1c2d60f969112e95f728837574cc71c793adedeb 100644
--- a/src/npc/interaction/fDance.js
+++ b/src/npc/interaction/fDance.js
@@ -3,7 +3,7 @@
  * @param {App.Entity.SlaveState} slave
  * @returns {DocumentFragment}
  */
-App.Interact.dance = function(slave) {
+App.Interact.fDance = function(slave) {
 	const node = new DocumentFragment();
 	let r = [];
 
@@ -47,7 +47,7 @@ App.Interact.dance = function(slave) {
 	} else if (slave.weight > 0) {
 		r.push(`${His} trim body is highlighted by ${his} dance. Whenever ${he} rolls ${his} ass or sways ${his} hips it highlights the contours of ${his} waist.`);
 	} else if (slave.weight < 0) {
-		r.push(`Your slave's trim body glides to the music like a ${either("belly dancer", "stripper")}. ${He} is thin and tight, with no bodyfat to speak of,`);
+		r.push(`Your slave's trim body glides to the music like a ${either("belly dancer", "stripper")}. ${He} is thin and tight, with no body fat to speak of,`);
 		if (slave.boobs > 400) {
 			r.push(`making ${his} tits`);
 			if (slave.butt > 1) {
@@ -160,7 +160,7 @@ App.Interact.dance = function(slave) {
 			break;
 		case "feline":
 			if (slave.face < -95) {
-				r.push(`revolting in its alien cat-like appearance, the mangly fur distracting you tremendously.`);
+				r.push(`revolting in its alien cat-like appearance, the mangy fur distracting you tremendously.`);
 			} else if (slave.face < -40) {
 				r.push(`ugly and feline, making it hard to do anything but stare at ${his} bizarre cat features.`);
 			} else if (slave.face < -10) {
@@ -1952,7 +1952,7 @@ App.Interact.dance = function(slave) {
 		}
 	} else if (random(1, 100) > (110 - slave.devotion)) {
 		if (slave.fetish === "none" && slave.sexualFlaw !== "shamefast") {
-			r.push(`Being on display for your pleasure has <span class="lightcoral">encouraged ${him} to focus exposing ${himself} more often.</span>`);
+			r.push(`Being on display for your pleasure has <span class="fetish gain">encouraged ${him} to focus exposing ${himself} more often.</span>`);
 			slave.fetish = "humiliation";
 			slave.fetishKnown = 1;
 		}
diff --git a/src/npc/interaction/fFeelings.js b/src/npc/interaction/fFeelings.js
new file mode 100644
index 0000000000000000000000000000000000000000..ec234dcc57f62699a061c20991d654842fad5977
--- /dev/null
+++ b/src/npc/interaction/fFeelings.js
@@ -0,0 +1,2172 @@
+/**
+ *
+ * @param {App.Entity.SlaveState} slave
+ * @returns {DocumentFragment}
+ */
+App.Interact.feelings = function(slave) {
+	/* Slaves are expected to be either able to talk or to sign when entering this passage. */
+	const el = new DocumentFragment();
+	let r = [];
+	const {
+		He,
+		he, his, him, wife, woman, girl
+	} = getPronouns(slave);
+	const {title: Master, say: say} = getEnunciation(slave);
+	if (!canTalk(slave) && !hasAnyArms(slave)) {
+		r.push(`${slave.slaveName} is unable to communicate and thus this place should have been unreachable. Please report this.`);
+	}
+	const _lisping = (canTalk(slave) && SlaveStatsChecker.checkForLisp(slave)) ? 1 :0;
+
+	/* TODO: clean up this passage - lots of repeating blocks */
+	if (slave.devotion < -50) {
+		r.push(`${He}`);
+		if (slave.trust >= -20) {
+			if (!canTalk(slave)) {
+				r.push(`gestures`);
+			} else if (_lisping === 1) {
+				r.push(`lisps`);
+			} else {
+				r.push(`declares`);
+			}
+			r.push(`angrily that it's wrong to keep ${him} a slave, and that you should free ${him}.`);
+		} else if (slave.trust >= -50) {
+			if (!canTalk(slave)) {
+				r.push(`gestures`);
+			} else if (_lisping === 1) {
+				r.push(`lisps`);
+			} else {
+				r.push(`mutters`);
+			}
+			r.push(`hesitantly that it's wrong to keep ${him} a slave, and that you should free ${him}.`);
+		} else {
+			if (!canTalk(slave)) {
+				r.push(`gestures a perfunctory plea not to hurt ${him}.`);
+			} else {
+				r.push(`mutters a perfunctory`);
+				r.push(Spoken(slave, `"Please don't hurt me, ${(slave.rudeTitle === 1) ? PoliteRudeTitle(slave) : Master}."`));
+			}
+		}
+	} else if (slave.devotion < -20) {
+		r.push(`${He}`);
+		if (!canTalk(slave)) {
+			r.push(`gestures`);
+		} else if (_lisping === 1) {
+			r.push(`lisps`);
+		} else {
+			r.push(`mutters`);
+		}
+		if (slave.trust >= -20) {
+			r.push(`hesitantly that ${he} does not like being a slave, and then`);
+			if (!canTalk(slave)) {
+				r.push(`lets ${his} ${(hasBothArms(slave)) ? `hands` : `hand`} fall to ${his} sides.`);
+			} else {
+				r.push(`falls silent.`);
+			}
+		} else if (slave.trust >= -50) {
+			r.push(`fearfully that ${he} does not like being a slave, and then`);
+			if (!canTalk(slave)) {
+				r.push(`lets ${his} ${(hasBothArms(slave)) ? `hands` : `hand`} fall to ${his} sides, shaking a little.`);
+			} else {
+				r.push(`falls silent, shaking a little.`);
+			}
+		} else {
+			r.push(`a perfunctory`);
+			if (!canTalk(slave)) {
+				r.push(`plea not to hurt ${him}`);
+			} else {
+				r.push(Spoken(slave, `"Please don't hurt me, ${Master}."`));
+			}
+		}
+	} else if (slave.devotion <= 20) {
+		r.push(`${He}`);
+		if (!canTalk(slave)) {
+			r.push(`gestures`);
+		} else {
+			r.push(`${say}s`);
+		}
+		if (slave.trust >= -20) {
+			r.push(`earnestly`);
+		} else if (slave.trust >= -50) {
+			r.push(`fearfully`);
+		} else {
+			r.push(`shakily`);
+		}
+		r.push(`that ${he} will do whatever you order ${him} to, since ${he} does not want to be`);
+		switch (slave.rules.punishment) {
+			case "confinement":
+				r.push(`shut up in the dark, which is of course ${his} standard punishment.`);
+				break;
+			case "whipping":
+				r.push(`whipped, which is of course ${his} standard punishment.`);
+				break;
+			case "chastity":
+				r.push(`put in restrictive chastity, which is of course ${his} standard punishment.`);
+				break;
+			default:
+				r.push(`punished, not knowing what to expect when ${he}'s bad.`);
+				break;
+		}
+		r.push(`Once ${he} learns to accept slavery, ${he} will be better able to open up.`);
+	} else {
+		if (slave.devotion <= 50) {
+			if (!canTalk(slave)) {
+				r.push(`${He} gestures that you're ${his} ${getWrittenTitle(slave)}, and ${he} will do ${his} best to obey you. ${He} continues to sign${(slave.accent === 3 && slave.voice !== 0) ? `, using gestures to supplant ${his} poor ${V.language}` : ``}:`);
+			} else {
+				r.push(Spoken(slave, `"You're my ${Master}, and I'll do my best to obey you,"`));
+				r.push(`${he} ${say}s`);
+			}
+		} else if (slave.devotion <= 95) {
+			if (!canTalk(slave)) {
+				r.push(`${He} gestures that you're ${his} beloved ${Master}. ${He} continues to sign${(slave.accent === 3) ? `, using gestures to supplant ${his} poor ${V.language}` : ``}:`);
+			} else {
+				r.push(Spoken(slave, `"${(slave.relationship === -3) ? `I'm content with being your ${wife},` : `You're`} my beloved ${Master}, and you know what's best for me,"`));
+				r.push(`${he} ${say}s`);
+			}
+		} else {
+			if (!canTalk(slave)) {
+				r.push(`${He} makes a simple gesture, meaning "I love you." ${He} continues to sign${(slave.accent === 3) ? `, using gestures to supplant ${his} poor ${V.language}` : ``}:`);
+			} else {
+				r.push(Spoken(slave, `"I love you,"`));
+				r.push(`${he} ${say}s in ${his}`);
+				if (slave.voice === 1) {
+					if (slave.voiceImplant < 0) {
+						r.push(`guttural`);
+					} else {
+						r.push(`deep`);
+					}
+				} else if (slave.voice === 2) {
+					r.push(`pretty`);
+				} else {
+					if (slave.voiceImplant > 0) {
+						r.push(`high bimbo`);
+					} else {
+						r.push(`girly`);
+					}
+				}
+				r.push(`voice.`);
+			}
+		}
+		r.push(` `);
+		App.Events.addNode(el, r, "span");
+
+		// Begin block of mostly "Spoken()".
+		r = [];
+		if (slave.trust < -50) {
+			r.push(`"I'm terrified of you.`);
+		} else if (slave.trust < -20) {
+			r.push(`"You frighten me, sometimes.`);
+		} else if (slave.trust < 20) {
+			r.push(`"I know you have total power over me.`);
+		} else if (slave.trust < 50) {
+			r.push(`"You know what's best for me.`);
+		} else if (slave.trust < 95) {
+			r.push(`"I trust you to know what's best for me.`);
+		} else {
+			r.push(`"I trust you completely.`);
+		}
+
+		if (slave.rules.speech === "restrictive") {
+			if (slave.devotion > 20) {
+				r.push(`Thank you so much for a chance to talk a little, ${Master}. I understand why I must be silent, but it's nice to get the chance.`);
+			} else {
+				r.push(`Thank you so much for a chance to talk a little, ${Master}. It's hard, never speaking.`);
+			}
+		}
+
+		if (slave.devotion > 50 && slave.health.condition < -20) {
+			r.push(`I feel`);
+			if (slave.health.condition < -50) {
+				r.push(`really`);
+			}
+			r.push(`sick, ${Master}.`);
+			if (slave.trust > 20) {
+				r.push(`I wish you could give me something to ease the pain.`);
+			}
+		}
+		if (slave.devotion > 20 && slave.devotion <= 90 && slave.trust >= -20 && slave.fetish !== "pregnancy" && slave.bellyPreg > (slave.pregAdaptation * 2000)) {
+			if (slave.belly > (slave.pregAdaptation * 4500)) {
+				r.push(`${Master}, my body is full...`);
+				if (slave.geneticQuirks.uterineHypersensitivity === 2) {
+					r.push(`I can't fit anymore... So than why does every near rupture feel so fucking good?`);
+				} else if (slave.sexualFlaw === "self hating") {
+					r.push(`I surely couldn't even`);
+					if (V.PC.dick > 2) {
+						r.push(`find room to fit your dick in me right now.`);
+					} else if (V.PC.dick === 0) {
+						r.push(`find room to stick that hulking strap-on in me right now.`);
+					} else {
+						r.push(`fit the slightest amount more inside me right now; even you'll feel positively enormous in me.`);
+					}
+					r.push(`Maybe you should just shove me down and force it in? Send me right over the edge? Please?`);
+				} else {
+					r.push(`I'm just going to explode at some point, aren't I?`);
+				}
+			} else if (slave.belly > (slave.pregAdaptation * 3200)) {
+				r.push(`My body feels full,`);
+				if (slave.geneticQuirks.uterineHypersensitivity === 2) {
+					r.push(`like a balloon ready to explode into the biggest orgasm I've ever had. Am I losing my mind?`);
+				} else {
+					r.push(`almost like I'm going to pop if I get any bigger. ${Master}, am... am I going to be alright?`);
+				}
+			} else {
+				r.push(`My body feels tight, like really tight.`);
+				if (slave.geneticQuirks.uterineHypersensitivity === 2) {
+					r.push(`And kind of good, like I'm could come at any moment.`);
+				} else {
+					r.push(`I get that I'm super pregnant, but should it hurt like this?`);
+				}
+			}
+		}
+
+		if (slave.fetishKnown === 1) {
+			if (slave.energy > 95) {
+				r.push(`I love being your nympho slut.`);
+			} else if (slave.fetishStrength > 60) {
+				switch (slave.fetish) {
+					case "submissive":
+						r.push(`I love it when you use me.`);
+						break;
+					case "dom":
+						r.push(`I love fucking the other slaves.`);
+						break;
+					case "sadist":
+						r.push(`I love hurting the other slaves.`);
+						break;
+					case "masochist":
+						r.push(`I love it when you hurt me.`);
+						break;
+					case "cumslut":
+						r.push(`I love`);
+						if (V.PC.dick !== 0) {
+							r.push(`sucking on your cock${(V.PC.vagina !== -1) ? ` and eating you out` : ``}.`);
+						} else {
+							r.push(`eating you out.`);
+						}
+						break;
+					case "humiliation":
+						r.push(`I love it when you use me in public.`);
+						break;
+					case "buttslut":
+						r.push(`I love it when you use my ass.`);
+						break;
+					case "pregnancy":
+						if (slave.counter.births > 0) {
+							r.push(`I love being your breeder.`);
+						} else if (slave.counter.birthsTotal > 0) {
+							r.push(`I love being bred.`);
+						} else {
+							r.push(`I can't wait to be bred.`);
+						}
+						break;
+					case "boobs":
+						r.push(`I love it when you pinch my nipples.`);
+						break;
+					default:
+						r.push(`It's boring of me, ${Master}, but I really do love normal sex.`);
+				}
+			}
+		}
+		if (slave.attrKnown === 1) {
+			if (slave.attrXX > 80) {
+				r.push(`I love fucking the other girls.`);
+			} else if (slave.attrXX > 60) {
+				r.push(`It's nice, fucking the other girls.`);
+			}
+			if (slave.attrXY > 80 && V.seeDicks > 0) {
+				r.push(`I love spending time with slaves with dicks, ${Master}.`);
+			} else if (slave.attrXY > 60 && V.seeDicks > 0) {
+				r.push(`It's nice, spending time with slaves with dicks, ${Master}.`);
+			}
+		} else {
+			r.push(`I wish I understood my own sexuality better.`);
+		}
+
+		r.push(`My favorite part of my body is`);
+		if (slave.fetishKnown === 1) {
+			if (slave.sexualFlaw === "neglectful" && slave.fetishStrength > 95) {
+				r.push(`unimportant, ${Master}. What part of me do <span class="note">you</span> like? N-not that I'm telling you that you need to like me! I'm just so happy when you're happy.`);
+			} else if (slave.sexualFlaw === "malicious" && slave.fetishStrength > 95 && slave.muscles > 30) {
+				r.push(`my muscles, I like how I can use them to force the slutty bitches around here to do what I want. The way they squeal when I flex what I've got gets me hot every time.`);
+			} else if (slave.sexualFlaw === "abusive" && slave.fetishStrength > 95 && slave.muscles > 30) {
+				r.push(`my muscles. I like how I can use them to hurt the other slaves, ${Master}. The way they cry, their tears, their blood. How long has it been since I beat a bitch senseless? I can't wait to work out some stress on my next toy.`);
+			} else if (slave.sexualFlaw === "self hating" && slave.fetishStrength > 95) {
+				r.push(`my blood. It's so pretty and red, and there's so much of it when you and the other slaves <span class="note">really</span> lay into me. I'm so fucking hot right now, thinking about the things you can do to my slutty body.`);
+			} else if (slave.sexualFlaw === "cum addict" && slave.fetishStrength > 95) {
+				if (slave.lips > 40) {
+					r.push(`my`);
+					if (slave.lips > 70) {
+						r.push(`huge`);
+					}
+					r.push(`lips, I like how everyone expects to facefuck me, and how my lips wrap around their dicks to keep all that`);
+					if (canTaste(slave)) {
+						r.push(`yummy`);
+					} else {
+						r.push(`warm`);
+					}
+					r.push(`cum in my belly. Oh! I like my belly, too, and that warm, sloshy feeling as it's packed full of baby juice. It's so — I'm sorry, ${Master}. I think my mouth is watering. Please give me a moment to collect myself.`);
+				} else if (V.PC.dick !== 0) {
+					r.push(`my tummy${(slave.vagina > -1) ? ` — and my womb` : ``}! The sloshy feeling when I'm all packed full of cum in both ends gets me so incredibly horny. sometimes I wonder what it would be like if I were just a puffed up cum-balloon of a ${woman}, helpless and filled with cum, over, and over, and — I'm sorry, ${Master}. I'm being weird again, aren't I?`);
+				} else {
+					r.push(`my mouth, I love how it feels to — to eat pussy, ${Master}. I love eating out your pussy. Especially when it's been filled up with some`);
+					if (canTaste(slave)) {
+						r.push(`yummy`);
+					} else {
+						r.push(`warm`);
+					}
+					r.push(`cum. Maybe you could let me eat cum out of your pussy soon?`);
+				}
+			} else if (slave.sexualFlaw === "attention whore" && slave.fetishStrength > 95) {
+				r.push(`my whole ${slave.skin} body, and whatever part of me is best used to make me look like a total slut.`);
+			} else if (slave.sexualFlaw === "anal addict" && slave.fetishStrength > 95) {
+				if (slave.anus > 3) {
+					r.push(`my gaping butthole. It's <span class="note">so</span> fucked out and beautiful. I can barely remember what anal pain feels like, but thinking about the sorts of things we can put in me, now, gets me so hot.`);
+				} else if (slave.anus > 2) {
+					r.push(`my asspussy — I can take anything! It's <span class="note">so</span> much better than my`);
+					if (slave.dick > 0) {
+						r.push(`cock.`);
+					} else {
+						r.push(`pussy.`);
+					}
+					r.push(`It brings me so much pleasure... and pain... and... I'm sorry, ${Master} what were we talking about again? Oh! Right.`);
+				} else if (slave.anus > 1) {
+					r.push(`my asshole, I like how I can take anyone's cock. It's <span class="note">so</span> much better than my`);
+					if (slave.dick > 0) {
+						r.push(`cock.`);
+					} else {
+						r.push(`pussy.`);
+					}
+					r.push(`It brings me so much pleasure... and pain... and... I'm sorry, ${Master} what were we talking about again? Oh! Right.`);
+				} else if (slave.anus === 1) {
+					r.push(`my tight little anus, I like feeling it stretch to take a fuck. It's <span class="note">so</span> much better than my`);
+					if (slave.dick > 0) {
+						r.push(`cock.`);
+					} else {
+						r.push(`pussy.`);
+					}
+					r.push(`It brings me so much pleasure... and pain... and... I'm sorry, ${Master} what were we talking about again? Oh! Right.`);
+				} else if (slave.anus === 0) {
+					r.push(`my little virgin butthole. I can't wait for the first time you fuck me in the ass — I wonder if it'll hurt.`);
+				}
+			} else if (slave.sexualFlaw === "breeder" && slave.fetishStrength > 95) {
+				if (slave.bellyPreg >= 600000) {
+					r.push(`... Um... our impossibly pregnant belly, of course. We love being so packed full with life that we're more baby than ${woman}, now. And the way our belly keeps our slutty preggo bodies stuck to the floor! We're so hot just thinking about it.`);
+					if (slave.pregSource === -1) {
+						r.push(`Thank you for breeding us, ${Master}! Our womb is yours to impregnate.`);
+					}
+					r.push(`What? Oh, I'm thinking of myself and my`);
+					if (slave.fetus_count >= 2 || slave.broodmother >= 1) {
+						r.push(`babies`);
+					} else {
+						r.push(`baby`);
+					}
+					r.push(`as one person again, aren't I? I'm sorry, ${Master}. It's just so hard to remember when my womb is so much more than I am in every way.`);
+				} else if (slave.bellyPreg >= 300000) {
+					r.push(`... Um... our massive pregnant belly, of course. We love feeling our womb swell with life. It's so hard to move now! We're so hot just thinking about it.`);
+					if (slave.pregSource === -1) {
+						r.push(`Thank you for breeding us, ${Master}! Our womb is yours to impregnate.`);
+					}
+					r.push(`What? Oh, I'm thinking of myself and my`);
+					if (slave.fetus_count >= 2 || slave.broodmother >= 1) {
+						r.push(`babies`);
+					} else {
+						r.push(`baby`);
+					}
+					r.push(`as one person again, aren't I? I'm sorry, ${Master}. It's just so hard to remember when my womb is so much more than I am in every way.`);
+				} else if (slave.bellyPreg >= 15000) {
+					r.push(`... Um... our bulging pregnant belly, of course. We love feeling our womb swell with life.`);
+					if (slave.pregSource === -1) {
+						r.push(`Thank you for breeding us, ${Master}! Our womb is yours to impregnate.`);
+					}
+					r.push(`What? Oh, I'm thinking of myself and my`);
+					if (slave.fetus_count >= 2 || slave.broodmother >= 1) {
+						r.push(`babies`);
+					} else {
+						r.push(`baby`);
+					}
+					r.push(`as one person again, aren't I? I'm sorry, ${Master}. It's just so hard to remember when my womb is so much more than I am in every way.`);
+				} else if (slave.bellyPreg >= 100) {
+					r.push(`... Um... our pregnant belly, of course.`);
+					if (slave.pregSource === -1) {
+						r.push(`Thank you for breeding us, ${Master}! Our womb is yours to impregnate.`);
+					}
+					r.push(`What? Oh, I'm thinking of myself and my`);
+					if (slave.fetus_count >= 2) {
+						r.push(`babies`);
+					} else {
+						r.push(`baby`);
+					}
+					r.push(`as one person again, aren't I? I'm sorry, ${Master}. It's just so hard to remember when my womb is so much more than I am in every way.`);
+				} else if (slave.pregKnown === 1) {
+					r.push(`my belly, now that it has`);
+					if (slave.fetus_count >= 2) {
+						r.push(`the babies`);
+					} else {
+						r.push(`a baby`);
+					}
+					r.push(`growing in it. Just thinking about swelling up bigger and bigger has me quivering. I wish we could keep filling me with babies forever.`);
+					if (slave.pregSource === -1) {
+						r.push(`Thank you for impregnating me, ${Master}!`);
+					}
+				} else if (slave.dick > 0 && slave.balls > 4) {
+					r.push(`my big breeder balls. I just want to fill other slaves with babies forever.`);
+				} else if (slave.dick > 0 && slave.balls > 0) {
+					r.push(`my cock. I just want to fill other slaves with babies forever.`);
+				} else if (slave.weight > 95) {
+					r.push(`my big tummy. Think of how many babies we could stretch it over! No, really. Please, ${Master}. Think about it.`);
+				} else if (slave.weight > 10) {
+					r.push(`my plush tummy. Think of how many babies we could stretch it over! No, really. Please, ${Master}. Think about it.`);
+				} else if (slave.counter.birthsTotal > 10 && isFertile(slave)) {
+					r.push(`my womb. It's made so many babies. It feels so sad and empty right now. I really wish we could just keep it stuffed full of babies forever.`);
+				} else if (isFertile(slave)) {
+					r.push(`my womb. It's ready, ${Master}. It feels so sad and empty right now. I really wish we could just keep it stuffed full of babies forever.`);
+				} else {
+					r.push(`my tight tummy, I like to imagine how it would swell if I got pregnant. I... I really wish we could put a baby in me, ${Master}.`);
+				}
+				if (slave.geneticQuirks.superfetation === 2 && slave.womb.length > 0 && slave.pregKnown === 1) {
+					if (slave.intelligence + slave.intelligenceImplant > 15) {
+						if (slave.belly < (slave.pregAdaptation * 1750)) {
+							if (V.PC.dick !== 0) {
+								r.push(`You know, ${Master}, I think I could fit another baby or two in here if you wanted to take advantage of my condition...`);
+							} else {
+								r.push(`You know, I think I could fit a few more babies in here if you wanted me to...`);
+							}
+						} else {
+							r.push(`Oh ${Master}, I feel it's that awful time when I have to let an egg go to waste for the sake of the rest of us. I wish it didn't have to be this way and I could just keep swelling larger and larger with children.`);
+						}
+					} else {
+						if (V.PC.dick !== 0) {
+							r.push(`You know, ${Master}, I think I can feel that tingle deep inside me... You know, the one that gets me even more pregnant... Don't you think I need another baby inside me?`);
+						} else {
+							r.push(`I think it's time, actually... Oh yes, it's surely time to use my gift and make even more babies in me.`);
+						}
+					}
+				}
+			} else if (slave.sexualFlaw === "breast growth" && slave.fetishStrength > 95) {
+				if (slave.boobs > 10000) {
+					r.push(`my colossal boobies, ${Master}. sometimes, I think I <span class="note">am</span> my boobies. I mean, they're so much more me than the rest of 'me,' right? Literally. They're bigger than the rest of my body and the only thing that would make me happier is if they were even <span class="note">bigger.</span>`);
+				} else if (slave.boobs > 2000) {
+					r.push(`my huge boobies, ${Master}. sometimes, I think I <span class="note">am</span> my boobies. I mean, they're so much more me than the rest of 'me,' right? so big, and so beautiful, and so heavy... I'm sorry, ${Master}, what were we talking about? Oh, yes!`);
+				} else if (slave.nipples === "fuckable") {
+					r.push(`my nipple pussies of course. It's so hot when they get abused and I'm always trying to think of new ways to use them to pleasure you.`);
+				} else if (slave.lactation > 0) {
+					r.push(`my milky nipples of course. Especially when you don't touch them for awhile and my breasts bloat up nice and big.`);
+				} else if (slave.nipples === "huge" || slave.nipples === "puffy") {
+					r.push(`my big nipples, it's like having clits on my chest. My only wish is that they were even bigger.`);
+				} else if (slave.boobs > 700) {
+					r.push(`my big boobs. I like how they feel wrapped around a dick, and they are the center of my world. sometimes, I think I <span class="note">am</span> my boobies. I mean, they're so much more me than the rest of 'me,' right?`);
+				} else {
+					r.push(`my boobs, of course. They're so beautiful, and the center of my world.`);
+				}
+			} else if (slave.energy > 95) {
+				r.push(`- is — I can't decide!`);
+				if (slave.vagina > -1) {
+					r.push(`I love my pussy of course.`);
+					if (slave.clit > 0) {
+						r.push(`Having another slave suck my big clit is incredible.`);
+					}
+					r.push(`But`);
+				} else {
+					r.push(`Of course`);
+				}
+				if (slave.anus > 1) {
+					r.push(`taking big dicks up my ass is lots of fun.`);
+				} else if (slave.anus > 0) {
+					r.push(`taking cock in my tight ass is lots of fun.`);
+				} else {
+					r.push(`I love my little virgin butthole, but I can't wait to get assraped for the first time.`);
+				}
+				if (slave.dick > 3) {
+					r.push(`My big cock swings around when I get sodomized from behind, it's great.`);
+				} else if (slave.dick > 1) {
+					r.push(`My dick flops around when I get sodomized from behind, it's great.`);
+				} else if (slave.dick > 0) {
+					r.push(`My tiny little bitch dick is good for encouraging people to molest my butthole.`);
+				}
+				if (slave.nipples === "fuckable") {
+					r.push(`I love my fuckable nipples, it really feels like I've got a pair of pussies on my chest.`);
+				} else if (slave.nipples === "huge" || slave.nipples === "puffy") {
+					r.push(`I love my big nipples, it's like having clits on my chest.`);
+				}
+				if (slave.lactation > 0) {
+					r.push(`Being able to nurse is really sexy, I always want to fuck right after. Or during.`);
+				}
+				if (slave.boobs > 2000) {
+					r.push(`My huge boobs are great, they're like an advertisement I want to fuck.`);
+				} else if (slave.boobs > 700) {
+					r.push(`I like showing off my big boobs.`);
+				}
+				if (slave.lips > 40) {
+					r.push(`Can't forget my dick sucking lips, I don't know what I'd do without them.`);
+				} else {
+					r.push(`Can't forget my lips and tongue, getting people off with them is fun too.`);
+				}
+			} else if (slave.fetish === "submissive" && slave.fetishStrength > 60) {
+				r.push(`my bare ${slave.skin} skin, I like how it feels when you look me all over before you take me.`);
+			} else if (slave.fetish === "dom" && slave.fetishStrength > 60 && slave.muscles > 30) {
+				r.push(`my muscles, I like how it feels to be strong, forcing another slave.`);
+			} else if (slave.fetish === "sadist" && slave.fetishStrength > 60 && slave.muscles > 30) {
+				r.push(`my muscles, I like how it feels to be strong, forcing another slave.`);
+			} else if (slave.fetish === "masochist" && slave.fetishStrength > 60) {
+				r.push(`my ${slave.skin} skin, I like how it looks when it bruises.`);
+			} else if (slave.fetish === "cumslut" && slave.fetishStrength > 60) {
+				if (slave.lips > 40) {
+					r.push(`my`);
+					if (slave.lips > 70) {
+						r.push(`huge`);
+					}
+					r.push(`lips, I like how everyone expects to facefuck me.`);
+				} else if (V.PC.dick !== 0) {
+					r.push(`my mouth, I love how it feels to suck dicks and drink all the cum.`);
+				} else {
+					r.push(`my mouth, I love how it feels to eat pussy.`);
+				}
+			} else if (slave.fetish === "humiliation" && slave.fetishStrength > 60) {
+				r.push(`my whole ${slave.skin} body, I like how it feels when everyone stares at me getting fucked.`);
+			} else if (slave.fetish === "buttslut" && slave.fetishStrength > 60) {
+				if (slave.anus > 3) {
+					r.push(`my gaping butthole, though I'm sad it's so fucked out. I can barely remember what anal pain feels like.`);
+				} else if (slave.anus > 2) {
+					r.push(`my asspussy — I can take anything! It's basically replaced my`);
+					if (slave.dick > 0) {
+						r.push(`cock`);
+					} else {
+						r.push(`pussy`);
+					}
+					r.push(`as my main sex organ.`);
+				} else if (slave.anus > 1) {
+					r.push(`my asshole, I like how I can take anyone's cock. It's basically replaced my`);
+					if (slave.dick > 0) {
+						r.push(`cock`);
+					} else {
+						r.push(`pussy`);
+					}
+					r.push(`as my main sex organ.`);
+				} else {
+					r.push(`my tight little anus, I like feeling it stretch to take a fuck. It's basically replaced my`);
+					if (slave.dick > 0) {
+						r.push(`cock`);
+					} else {
+						r.push(`pussy`);
+					}
+					r.push(`as my main sex organ.`);
+				}
+			} else if (slave.fetish === "pregnancy" && slave.fetishStrength > 60) {
+				if (slave.bellyPreg >= 600000) {
+					r.push(`my hypermassive pregnant belly, of course. I love being debilitatingly filled with life.`);
+					if (slave.pregSource === -1) {
+						r.push(`Thank you for breeding me, ${Master}! My womb is yours to impregnate. I can't think of anything better than getting bred by you forever.`);
+					}
+				} else if (slave.bellyPreg >= 300000) {
+					r.push(`my massive pregnant belly, of course. I love being so packed full of life.`);
+					if (slave.pregSource === -1) {
+						r.push(`Thank you for breeding me, ${Master}! My womb is yours to impregnate. I can't think of anything better than getting bred by you forever.`);
+					}
+				} else if (slave.bellyPreg >= 15000) {
+					r.push(`my bulging pregnant belly, of course. I love feeling my womb swell with life.`);
+					if (slave.pregSource === -1) {
+						r.push(`Thank you for breeding me, ${Master}! My womb is yours to impregnate. I can't think of anything better than getting bred by you forever.`);
+					}
+				} else if (slave.bellyPreg >= 100) {
+					r.push(`my pregnant belly, of course.`);
+					if (slave.pregSource === -1) {
+						r.push(`Thank you for breeding me, ${Master}! Please use me to make babies whenever you want.`);
+					}
+				} else if (slave.pregKnown === 1) {
+					r.push(`my belly, now that it has a baby growing in it. I can't wait for it to start showing.`);
+					if (slave.pregSource === -1) {
+						r.push(`Thank you for impregnating me, ${Master}!`);
+					}
+				} else if (slave.dick > 0 && slave.balls > 4) {
+					r.push(`my big breeder balls, I imagine knocking another slave up all the time.`);
+				} else if (slave.dick > 0 && slave.balls > 0) {
+					r.push(`my cock, I imagine knocking another slave up all the time.`);
+				} else if (slave.weight > 95) {
+					r.push(`my big tummy, I can imagine myself pregnant.`);
+				} else if (slave.weight > 10) {
+					r.push(`my plush tummy, I can imagine myself pregnant.`);
+				} else if (slave.counter.birthsTotal > 10 && isFertile(slave)) {
+					r.push(`my womb, it's made so many babies and I can't wait to make more.`);
+				} else if (isFertile(slave)) {
+					r.push(`my fertile pussy, I want to get filled with cum so badly.`);
+				} else {
+					r.push(`my tight tummy, I like to imagine how it would swell if I got pregnant.`);
+				}
+			} else if (slave.fetish === "boobs" && slave.fetishStrength > 60) {
+				if (slave.boobs > 2000) {
+					r.push(`my huge tits, I like how they're so big they're the center of attention.`);
+				} else if (slave.nipples === "fuckable") {
+					r.push(`my nipple pussies of course.`);
+				} else if (slave.lactation > 0) {
+					r.push(`my milky nipples of course.`);
+				} else if (slave.nipples === "huge" || slave.nipples === "puffy") {
+					r.push(`my big nipples, it's like having clits on my chest.`);
+				} else if (slave.boobs > 700) {
+					r.push(`my big boobs, I like how they feel wrapped around a dick.`);
+				} else {
+					r.push(`my boobs, of course.`);
+				}
+			} else if (slave.attrKnown === 1 && slave.attrXX > 80) {
+				if (slave.lips > 70) {
+					r.push(`my huge lips, I like how the other girls will do anything for oral from me.`);
+				} else if (slave.dick > 1 && slave.balls > 0) {
+					r.push(`my cock; I still do like slaying pussy.`);
+				} else if (slave.lips > 40) {
+					r.push(`my kissy lips, I like how it feels to make out with the other girls.`);
+				} else {
+					r.push(`my lips, I guess. They're the best way I have of getting girls to like me.`);
+				}
+			} else if (slave.attrKnown === 1 && slave.attrXY > 80) {
+				if (slave.lips > 70) {
+					r.push(`my huge lips, I like how anyone with a dick wants oral from me.`);
+				} else if (slave.dick > 1 && slave.balls > 0) {
+					r.push(`my cock. It's fun having sex with two dicks involved!`);
+				} else if (slave.lips > 40) {
+					r.push(`my kissy lips, I like how anyone with a dick sees them and wants to fuck them.`);
+				} else if (slave.vagina > -1) {
+					r.push(`my pussy, I love getting fucked by strong cocks.`);
+				} else {
+					r.push(`my butt, I guess. It's the best way I have of getting boys to like me.`);
+				}
+			} else {
+				r.push(`my face,`);
+				if (slave.face > 10) {
+					r.push(`it's nice to be pretty.`);
+				} else {
+					r.push(`I guess.`);
+				}
+			}
+		} else {
+			r.push(`my face,`);
+			if (slave.face > 10) {
+				r.push(`it's nice to be pretty.`);
+			} else {
+				r.push(`I guess.`);
+			}
+		}
+
+		if (slave.pregSource === -9 && slave.bellyPreg >= 5000 && slave.devotion > 0) {
+			r.push(`My little sister is getting big; do you think she'll be a good little futa like me someday?`);
+		}
+
+		if (slave.need) {
+			const touch = (hasAnyArms(slave)) ? "touch myself," : "rub myself against stuff,";
+			if (slave.rules.release.masturbation === 1) {
+				r.push(`Thank you for letting me`);
+				if (slave.fetishKnown === 1) {
+					if (slave.energy > 95 && !canSee(slave)) {
+						r.push(`${touch} ${Master}. It's a good thing I can't get any more blind from it.`);
+					} else if (slave.energy > 95) {
+						r.push(`${touch} ${Master}. It's a good thing I can't actually go blind from it.`);
+					} else if (slave.fetish === "humiliation" && slave.fetishStrength > 60) {
+						r.push(`${touch} ${Master}. I love doing it where people can see me.`);
+					} else if (slave.fetish === "sadist" && slave.fetishStrength > 60) {
+						r.push(`${touch} ${Master}. I try to be nearby when a bitch gets punished so I can masturbate to it.`);
+					} else if (slave.fetish === "buttslut" && slave.fetishStrength > 60) {
+						r.push(`fuck my own asshole, ${Master}.`);
+					} else if (slave.fetish === "boobs" && slave.fetishStrength > 60) {
+						r.push(`pamper my own breasts, ${Master}.`);
+					} else if (slave.fetish === "pregnancy" && slave.fetishStrength > 60) {
+						r.push(`${touch} ${Master}.`);
+						if (slave.bellyPreg >= 5000) {
+							r.push(`I love feeling my big pregnant belly as I masturbate to it.`);
+						} else if (slave.dick > 1 && slave.balls > 0) {
+							r.push(`I love picturing my cock getting all the hot girls pregnant.`);
+						} else {
+							r.push(`I love imagining how I'd look with a tummy swollen with babies.`);
+						}
+					} else if (slave.fetish === "cumslut" && slave.fetishStrength > 60) {
+						r.push(`${touch} ${Master}.`);
+						if (slave.dick > 0 && slave.balls > 0) {
+							r.push(`Being able to drink my own cum is really fun too.`);
+						} else if (slave.dietCum === 1 || slave.dietCum === 2 ) {
+							r.push(`I love having cum in my food, being able to masturbate right after eating cum is so satisfying.`);
+						}
+					} else if (slave.attrKnown === 1 && slave.attrXX > 80 && !canSee(slave)) {
+						r.push(`${touch} ${Master}. With all these hot girls around, it's a good thing I can't get any more blind from it.`);
+					} else if (slave.attrKnown === 1 && slave.attrXY > 80 && !canSee(slave)) {
+						r.push(`${touch} ${Master}. With all these hot cocks around, it's a good thing I can't get any more blind from it.`);
+					} else if (slave.attrKnown === 1 && slave.attrXX > 80) {
+						r.push(`${touch} ${Master}. With all these hot girls around, it's a good thing I can't actually go blind from it.`);
+					} else if (slave.attrKnown === 1 && slave.attrXY > 80) {
+						r.push(`${touch} ${Master}. With all these hot cocks around, it's a good thing I can't actually go blind from it.`);
+					} else {
+						r.push(`${touch} ${Master}.`);
+					}
+				} else {
+					r.push(`${touch} ${Master}.`);
+				}
+			} else if (slave.rules.release.slaves === 1) {
+				r.push(`Thank you for letting`);
+				if (slave.fetishKnown === 1) {
+					if (slave.energy > 95) {
+						r.push(`me fuck everyone,`);
+					} else if (slave.fetish === "humiliation" && slave.fetishStrength > 60) {
+						r.push(`the other slaves fuck me, I love doing it in the dormitory where they can all see me.`);
+					} else if (slave.fetish === "sadist" && slave.fetishStrength > 60) {
+						r.push(`me abuse the other slaves,`);
+					} else if (slave.fetish === "buttslut" && slave.fetishStrength > 60) {
+						r.push(`the other slaves fuck my butthole,`);
+					} else if (slave.fetish === "boobs" && slave.fetishStrength > 60) {
+						r.push(`the other slaves play with my boobs,`);
+					} else if (slave.fetish === "pregnancy" && slave.fetishStrength > 60) {
+						if (slave.bellyPreg >= 5000) {
+							r.push(`the other slaves fuck me, being pregnant and getting fucked is amazing,`);
+						} else if (slave.dick > 1 && slave.balls > 0) {
+							r.push(`me fuck other slaves, I cum so hard whenever I imagine filling them with babies,`);
+						} else {
+							r.push(`the other slaves fuck me, I love imagining how I'd look with a tummy swollen with babies,`);
+						}
+					} else if (slave.fetish === "cumslut" && slave.fetishStrength > 60) {
+						r.push(`other slaves use my mouth to cum.`);
+						if (slave.dick > 0 && slave.balls > 0) {
+							r.push(`Being able to drink my own cum is really fun too,`);
+						} else if (slave.dietCum === 1 || slave.dietCum === 2 ) {
+							r.push(`I love having cum in my food, and sometimes I get an extra load on top from a friend,`);
+						}
+					} else if (slave.attrKnown === 1 && slave.attrXX > 80) {
+						r.push(`me bone the ladies,`);
+					} else {
+						r.push(`me get off with the other girls,`);
+					}
+				} else {
+					r.push(`me get off with the other girls,`);
+				}
+				r.push(`${Master}.`);
+			} else if (App.Utils.hasFamilySex(slave)) {
+				r.push(`Thank you for letting`);
+				if (slave.fetishKnown === 1) {
+					if (slave.energy > 95) {
+						r.push(`me fuck my family,`);
+					} else if (slave.fetish === "humiliation" && slave.fetishStrength > 60) {
+						r.push(`my family fuck me, I love doing it in the dormitory where everyone can see us.`);
+					} else if (slave.fetish === "sadist" && slave.fetishStrength > 60) {
+						r.push(`me abuse my family,`);
+					} else if (slave.fetish === "buttslut" && slave.fetishStrength > 60) {
+						r.push(`my family fuck my butthole,`);
+					} else if (slave.fetish === "boobs" && slave.fetishStrength > 60) {
+						r.push(`my family play with my boobs,`);
+					} else if (slave.fetish === "pregnancy" && slave.fetishStrength > 60) {
+						if (slave.bellyPreg >= 5000) {
+							r.push(`my family fuck me, being pregnant and getting fucked is amazing,`);
+						} else if (slave.dick > 1 && slave.balls > 0) {
+							r.push(`me fuck my family, I cum so hard whenever I imagine filling them with babies,`);
+						} else {
+							r.push(`my family fuck me, I love imagining how I'd look with a tummy swollen with babies,`);
+						}
+					} else if (slave.fetish === "cumslut" && slave.fetishStrength > 60) {
+						r.push(`my family use my mouth to cum.`);
+						if (slave.dick > 0 && slave.balls > 0) {
+							r.push(`Being able to drink my own cum is really fun too,`);
+						} else if (slave.dietCum === 1 || slave.dietCum === 2 ) {
+							r.push(`I love having cum in my food, and sometimes I get an extra load on top from a relative,`);
+						}
+					} else if (slave.attrKnown === 1 && slave.attrXX > 80) {
+						r.push(`me bone the ladies in my family,`);
+					} else {
+						r.push(`me get off with the other girls in my family,`);
+					}
+				} else {
+					r.push(`me get off with the other girls in my family,`);
+				}
+				r.push(`${Master}.`);
+			} else {
+				if (slave.fetishKnown === 1) {
+					if (slave.energy > 95) {
+						r.push(`I feel like I'm going crazy, ${Master}, I'm so horny.`);
+					} else if (slave.fetishStrength > 60) {
+						switch (slave.fetish) {
+							case "submissive":
+								r.push(`I'm so horny, ${Master}. I can't stop thinking about you holding me down and fucking me.`);
+								break;
+							case "masochist":
+								r.push(`I'm so horny, ${Master}. I can't stop thinking about you spanking my worthless bottom.`);
+								break;
+							case "humiliation":
+								r.push(`I'm so horny, ${Master}. I can't stop thinking about everyone staring at my lewd body.`);
+								break;
+							case "dom":
+								r.push(`I'm so horny, ${Master}. I can't stop thinking about the other slaves, how it would feel to fuck them.`);
+								break;
+							case "sadist":
+								r.push(`I'm so horny, ${Master}. I can't stop thinking about the other slaves, how it would feel to hurt them.`);
+								break;
+							case "cumslut":
+								r.push(`I'm so horny, ${Master}. I can't stop staring at`);
+								if (V.PC.dick !== 0) {
+									r.push(`cocks and imagining them down my throat, cumming and cumming.`);
+								} else {
+									r.push(`pussies and imagining how their juices`);
+									if (canTaste(slave)) {
+										r.push(`taste.`);
+									} else {
+										r.push(`feel on my skin.`);
+									}
+								}
+								break;
+							case "buttslut":
+								r.push(`I'm so horny, ${Master}.`);
+								if (plugWidth(slave) === 1 && slave.anus > 2)  {
+									r.push(`I wear the buttplug you gave me, but it is so small... It reminds me of being fucked in the ass, but I can barely feel it. It drives me crazy.`);
+								} else if (((plugWidth(slave) === 1 && slave.anus < 3) || (plugWidth(slave) === 2 && slave.anus === 3) || plugWidth(slave) === 3 && slave.anus >= 4) ) {
+									r.push(`Thank you for the buttplug. It is really fun to have my ass filled all day long.`);
+								} else if ((plugWidth(slave) === 2 && slave.anus < 3) || (plugWidth(slave) > 2 && slave.anus < 4) ) {
+									r.push(`I like it up the ass, but the plug you make me wear is too big. It really hurts. Not in the good way.`);
+								} else {
+									r.push(`My anus is killing me, all I want to do is touch it and massage it and fill it.`);
+								}
+								break;
+							case "boobs":
+								r.push(`I'm so horny, ${Master}. I want to rub my nipples against everything.`);
+								break;
+							case "pregnancy":
+								r.push(`I wish I could${touch} ${Master}. I can't get these thoughts of`);
+								if (slave.preg < 30) {
+									r.push(`pregnancy`);
+								} else {
+									r.push(`birth`);
+								}
+								r.push(`out of my head.`);
+								break;
+						}
+					} else if (slave.attrKnown === 1 && slave.attrXX > 80) {
+						r.push(`I'm so horny, ${Master}. I can't stop thinking about the other slaves' beautiful pussies and boobs and, and I want to fuck them so bad.`);
+					} else {
+						r.push(`I haven't been touching myself, ${Master}, just like you said, but I'm really horny.`);
+					}
+				} else {
+					r.push(`I haven't been touching myself, ${Master}, just like you said, but I'm really horny.`);
+				}
+			}
+		}// Closes release check
+		r = r.map(t => Spoken(slave, t));
+		r.push (` `);
+		App.Events.addNode(el, r, "span");
+		r = [];
+
+		if (slave.fetishKnown === 1) {
+			if (slave.energy > 95) {
+				r.push(Spoken(slave, `I love your`));
+				if (V.PC.dick !== 0) {
+					if (canDoAnal(slave) && canDoVaginal(slave)) {
+						if (slave.vagina === 0) {
+							if (V.PC.vagina !== -1) {
+								r.push(Spoken(slave, `body, ${Master},"`));
+								r.push(`${he} ${say}s eagerly.`);
+								r.push(Spoken(slave, `"I can't wait to have you in me, and your pussy is so delicious.`));
+							} else {
+								r.push(Spoken(slave, `cock, ${Master},"`));
+								r.push(`${he} ${say}s eagerly.`);
+								r.push(Spoken(slave, `"I can't wait to have you in me.`));
+							}
+						} else {
+							if (V.PC.vagina !== -1) {
+								r.push(Spoken(slave, `body, ${Master},"`));
+								r.push(`${he} ${say}s eagerly.`);
+								r.push(Spoken(slave, `"I love your cock in my holes, and your pussy is so delicious.`));
+							} else {
+								r.push(Spoken(slave, `cock, ${Master},"`));
+								r.push(`${he} ${say}s eagerly.`);
+								r.push(Spoken(slave, `"I love it inside my holes.`));
+							}
+						}
+					} else {
+						if (V.PC.vagina !== -1) {
+							r.push(Spoken(slave, `body, ${Master},"`));
+							r.push(`${he} ${say}s eagerly.`);
+							r.push(Spoken(slave, `"I just need you inside me, and your pussy is so delicious.`));
+						} else {
+							r.push(Spoken(slave, `cock, ${Master},"`));
+							r.push(`${he} ${say}s eagerly.`);
+							r.push(Spoken(slave, `"I just need you inside me.`));
+						}
+					}
+				} else {
+					r.push(Spoken(slave, `pussy, ${Master},"`));
+					r.push(`${he} ${say}s eagerly.`);
+					r.push(Spoken(slave, `"I can just imagine your clit against my tongue.`));
+				}
+			} else if (slave.fetish === "submissive" && slave.fetishStrength > 60) {
+				if (V.PC.boobs < 300) {
+					r.push(`Your strong arms feels so good when you hold me down.`);
+				} else {
+					if (V.PC.boobs >= 1000) {
+						r.push(Spoken(slave, `The weight of your boobs on my back feels so good when you pin me down.`));
+					} else {
+						r.push(Spoken(slave, `Your tits feel so good on my back when you pin me down.`));
+					}
+				}
+			} else if (slave.fetish === "cumslut" && slave.fetishStrength > 60) {
+				if (V.PC.balls !== 0) {
+					r.push(Spoken(slave, `Your cum is incredible, ${Master}. I would drink every drop of it, if I could.`));
+					if (V.PC.scrotum > 0) {
+						r.push(Spoken(slave, `Your`));
+						if (V.PC.balls >= 14) {
+							r.push(Spoken(slave, `massive`));
+						} else if (V.PC.balls >= 9) {
+							r.push(Spoken(slave, `huge`));
+						} else {
+							r.push(Spoken(slave, `big`));
+						}
+						r.push(Spoken(slave, `balls are amazing; I want to be under your cock kissing and kneading whenever`));
+						if (canSee(slave)) {
+							r.push(Spoken(slave, `I see you.`));
+						} else {
+							r.push(Spoken(slave, `I'm near you.`));
+						}
+					}
+					if (V.PC.vagina === 1) {
+						r.push(Spoken(slave, `Oh, I love your femcum, too!`));
+					}
+				}
+			} else if (slave.fetish === "humiliation" && slave.fetishStrength > 60) {
+				if (V.PC.dick !== 0) {
+					r.push(Spoken(slave, `I love, uh."`));
+					r.push(`${He} looks down, hesitating.`);
+					r.push(Spoken(slave, `"I love your cock, ${Master}.`));
+					if (V.PC.vagina !== -1) {
+						r.push(Spoken(slave, `Um, and your vagina, too.`));
+					}
+				}
+			} else if (slave.fetish === "buttslut" && slave.fetishStrength > 60) {
+				if (V.PC.dick !== 0) {
+					r.push(Spoken(slave, `I love your cock, ${Master},"`));
+					r.push(`${he} ${say}s eagerly.`);
+					r.push(Spoken(slave, `"I${(slave.anus === 0 || !canDoAnal(slave)) ? `'d` : ``} love it in my backdoor.`));
+				}
+			} else if (slave.fetish === "pregnancy" && slave.fetishStrength > 60) {
+				if (V.PC.belly >= 10000) {
+					r.push(Spoken(slave, `You, uh."`));
+					r.push(`${He} looks down, hesitating. `);
+					r.push(Spoken(slave, `"Your belly is so big and wonderful, I just want to feel it,`));
+				} else if (V.PC.belly >= 5000) {
+					r.push(Spoken(slave, `You, uh."`));
+					r.push(`${He} looks down, hesitating. `);
+					r.push(Spoken(slave, `"You have a really lovely belly,`));
+				} else if (V.PC.boobs >= 300) {
+					r.push(Spoken(slave, `You, uh."`));
+					r.push(`${He} looks down, hesitating. `);
+					r.push(Spoken(slave, `"You have really nice breasts,`));
+				} else if (V.PC.dick !== 0 && V.PC.scrotum > 0) {
+					r.push(Spoken(slave, `You, uh."`));
+					r.push(`${He} looks down, hesitating. `);
+					r.push(Spoken(slave, `"You have really nice balls,`));
+				} else if (V.PC.dick !== 0) {
+					r.push(Spoken(slave, `You, uh."`));
+					r.push(`${He} looks down, hesitating. `);
+					r.push(Spoken(slave, `"You have a lovely cock,`));
+				} else {
+					r.push(Spoken(slave, `You, um."`));
+					r.push(`${He} looks down, hesitating. `);
+					r.push(Spoken(slave, `"You would make a lovely mother,`));
+				}
+				r.push(Spoken(slave, `${Master}.`));
+			} else if (slave.fetish === "boobs" && slave.fetishStrength > 60) {
+				if (V.PC.boobs >= 1400) {
+					r.push(Spoken(slave, `Your breasts are giant, ${Master},"`));
+					r.push(`${he} ${say}s eagerly.`);
+					r.push(Spoken(slave, `"I just want to bury my face in them.`));
+				} else if (V.PC.boobs >= 1200) {
+					r.push(Spoken(slave, `Your breasts are huge, ${Master},"`));
+					r.push(`${he} ${say}s eagerly.`);
+					r.push(Spoken(slave, `"I love them.`));
+				} else if (V.PC.boobs >= 1000) {
+					r.push(Spoken(slave, `Your breasts are so big and lovely, ${Master},"`));
+					r.push(`${he} ${say}s eagerly.`);
+					r.push(Spoken(slave, `"I love them.`));
+				} else if (V.PC.boobs >= 800) {
+					r.push(Spoken(slave, `Your breasts are incredible, ${Master},"`));
+					r.push(`${he} ${say}s eagerly.`);
+					r.push(Spoken(slave, `"I love them.`));
+				} else if (V.PC.boobs >= 300) {
+					r.push(Spoken(slave, `Your breasts are so cute, ${Master},"`));
+					r.push(`${he} ${say}s eagerly.`);
+					r.push(Spoken(slave, `"I just want to squeeze them.`));
+				}
+			} else if (slave.attrKnown === 1 && slave.attrXX > 80) {
+				if (V.PC.boobs >= 300) {
+					r.push(Spoken(slave, `You're, uh."`));
+					r.push(`${He} looks down, hesitating.`);
+					r.push(Spoken(slave, `"You're really hot, ${Master}.`));
+				}
+			} else if (slave.attrKnown === 1 && slave.attrXY > 80) {
+				if (V.PC.dick !== 0) {
+					r.push(Spoken(slave, `Your, uh."`));
+					r.push(`${He} looks down, hesitating.`);
+					r.push(Spoken(slave, `"Your cock is really hot, ${Master}.`));
+				}
+			} else {
+				r.push(Spoken(slave, `You're, uh."`));
+				r.push(`${He} looks down, hesitating.`);
+				r.push(Spoken(slave, `"You're really`));
+				if (V.PC.title === 1) {
+					r.push(Spoken(slave, `handsome,`));
+				} else {
+					r.push(Spoken(slave, `pretty,`));
+				}
+				r.push(Spoken(slave, `${Master}.`));
+			}
+		}
+
+		if (slave.dick > 0) {
+			if (slave.balls === 0) {
+				if (slave.fetishKnown === 1) {
+					if (slave.energy > 95) {
+						r.push(Spoken(slave, `I like being gelded."`));
+						r.push(`${He} giggles.`);
+						r.push(Spoken(slave, `"I don't have to be hard to get fucked!`));
+					} else if (slave.fetishStrength > 60) {
+						switch (slave.fetish) {
+							case "submissive":
+								r.push(Spoken(slave, `I don't mind being clipped. I like belong on the bottom.`));
+								break;
+							case "masochist":
+								r.push(Spoken(slave, `Being gelded," ${he} shivers, "hurts sometimes. Makes people want to hurt you. I like it.`));
+								break;
+							case "humiliation":
+								r.push(Spoken(slave, `I don't mind being clipped." ${He} shivers. "Everyone knows! It's so embarrassing.`));
+								break;
+							case "dom":
+								r.push(Spoken(slave, `I sometimes miss my balls. It's harder to be dominant without them.`));
+								break;
+							case "sadist":
+								r.push(Spoken(slave, `I sometimes miss my balls. I still fantasize about raping the other girls.`));
+								break;
+							case "pregnancy":
+								r.push(Spoken(slave, `I sometimes miss my balls. I still fantasize about getting the other girls pregnant.`));
+								break;
+							case "cumslut":
+								r.push(Spoken(slave, `I barely cum without my balls. I miss, you know, cleaning up after myself. With my mouth.`));
+								break;
+							case "buttslut":
+								r.push(Spoken(slave, `I really like being clipped. I think it's less distracting, you know, from my butthole.`));
+								if (slave.prostate > 0) {
+									r.push(Spoken(slave, `And I still have my prostate which is what matters.`));
+								}
+								break;
+							case "boobs":
+								r.push(Spoken(slave, `I don't mind being clipped. Between that and my boobs I feel like a nice little slave ${girl}.`));
+								break;
+						}
+					} else if (slave.attrKnown === 1 && slave.attrXX > 80) {
+						r.push(Spoken(slave, `I sometimes miss my balls. I still fantasize about boning the other girls.`));
+					} else {
+						if (slave.devotion > 75) {
+							r.push(Spoken(slave, `I love being your gelded slave ${girl}, ${Master}.`));
+						} else {
+							r.push(Spoken(slave, `To be honest, ${Master}, I do miss having balls, sometimes.`));
+						}
+					}
+				} else {
+					if (slave.devotion > 75) {
+						r.push(Spoken(slave, `I love being your gelded slave ${girl}, ${Master}.`));
+					} else {
+						r.push(Spoken(slave, `To be honest, ${Master}, I do miss having balls, sometimes.`));
+					}
+				}
+			} else if (slave.hormoneBalance >= 200) {
+				if (slave.fetishKnown === 1) {
+					if (slave.energy > 95) {
+						r.push(Spoken(slave, `I sometimes wish I could still get hard."`));
+						r.push(`${He} looks pensive.`);
+						r.push(Spoken(slave, `"Actually, I don't really care, getting fucked is nice too.`));
+					} else if (slave.fetishStrength > 60) {
+						switch (slave.fetish) {
+							case "submissive":
+								r.push(Spoken(slave, `I don't mind the hormones keeping me soft. I like getting fucked, anyway.`));
+								break;
+							case "masochist":
+								r.push(Spoken(slave, `I don't mind the hormones keeping me soft. I think it encourages people to treat me like I deserve.`));
+								break;
+							case "humiliation":
+								r.push(Spoken(slave, `I don't mind being impotent." ${He} shivers. "Everyone knows! It's so embarrassing.`));
+								break;
+							case "dom":
+								r.push(Spoken(slave, `I wish the hormones didn't stop me from getting hard. It's tough to be dominant when I'm all soft.`));
+								break;
+							case "sadist":
+								r.push(Spoken(slave, `I wish the hormones didn't stop me from getting hard. I still fantasize about raping the other girls.`));
+								break;
+							case "cumslut":
+								r.push(Spoken(slave, `I cum a lot less on these hormones. I miss, you know, cleaning up after myself. With my mouth.`));
+								break;
+							case "buttslut":
+								r.push(Spoken(slave, `I don't mind the hormones keeping me soft. I prefer taking it, anyway." ${He} turns and sticks ${his} ass out. "Up the butt.`));
+								break;
+							case "boobs":
+								r.push(Spoken(slave, `I don't mind the hormones keeping me soft. Between that and my boobs I feel like a cute slave girl.`));
+								break;
+							case "pregnancy":
+								r.push(Spoken(slave, `I wish the hormones didn't stop me from getting hard. I still fantasize about getting the other girls pregnant.`));
+								break;
+						}
+					} else if (slave.attrKnown === 1 && slave.attrXX > 80) {
+						r.push(Spoken(slave, `I wish the hormones didn't stop me from getting hard. I still fantasize about boning the other girls.`));
+					} else {
+						if (slave.devotion > 75) {
+							r.push(Spoken(slave, `I love you, ${Master}, so I don't mind how the hormones I'm on keep me soft, if that's how you want me.`));
+						} else {
+							r.push(Spoken(slave, `I sometimes wish the hormones I'm on would let me get hard.`));
+						}
+					}
+				} else {
+					if (slave.devotion > 75) {
+						r.push(Spoken(slave, `I love you, ${Master}, so I don't mind how the hormones I'm on keep me soft, if that's how you want me.`));
+					} else {
+						r.push(Spoken(slave, `I sometimes wish the hormones I'm on would let me get hard.`));
+					}
+				}
+			}// closes balls check
+		} else if (slave.pubertyXX === 0 && (slave.ovaries === 1 || slave.mpreg === 1)) {
+			if (slave.fetishKnown === 1) {
+				if (slave.fetish === "pregnancy" && slave.fetishStrength > 60) {
+					r.push(Spoken(slave, `I fantasize about my belly getting heavy with pregnancy and my only wish is that you never let one of my eggs go to waste.`));
+				}
+			}
+		} else if (slave.mpreg === 1) {
+			if (slave.fetishKnown === 1) {
+				if (slave.fetish === "pregnancy" && slave.fetishStrength > 0) {
+					r.push(Spoken(slave, `I fantasize about my belly getting heavy with pregnancy, and I'm so glad you made me able to get pregnant!`));
+					if (slave.preg === -1) {
+						r.push(Spoken(slave, `Now if only someone were to forget to give me my contraceptives before we got to doing it...`));
+					}
+				}
+			}
+		} else if (slave.preg === -1) {
+			if (slave.fetishKnown === 1) {
+				if (slave.fetish === "pregnancy" && slave.fetishStrength > 60) {
+					r.push(Spoken(slave, `I fantasize about my belly getting heavy with pregnancy, but I know it won't happen while I'm on contraceptives.`));
+				}
+			}
+		}// closes dick check
+
+		if (Math.abs(slave.hormoneBalance) >= 200) {
+			if (slave.physicalAge > 35) {
+				if (slave.devotion > 50) {
+					if (slave.energy > 40) {
+						r.push(Spoken(slave, `On all these hormones I'm almost going through puberty all over again. Kind of a surprise at my age." ${He} grins suggestively. "I'll do my best to fuck like a teenager, ${Master}.`));
+					}
+				}
+			}
+		}
+
+		if (slave.curatives > 1 || slave.inflationType === "curative") {
+			if (slave.inflationType === "curative") {
+				if (slave.health.condition < 0) {
+					r.push(Spoken(slave, `I don't feel good, but I can almost feel the curatives fixing me, even if the belly is a little uncomfortable. Thank you, ${Master}.`));
+				} else if (slave.physicalAge > 35) {
+					r.push(Spoken(slave, `I can almost feel the curatives working. They make me feel like a young, pregnant ${girl}! Thank you, ${Master}.`));
+				} else {
+					r.push(Spoken(slave, `I can almost feel the curatives working. They're pretty incredible, even if the belly is a little uncomfortable. Thank you, ${Master}.`));
+				}
+			} else {
+				if (slave.health.condition < 0) {
+					r.push(Spoken(slave, `I don't feel good, but I can almost feel the curatives fixing me. Thank you, ${Master}.`));
+				} else if (slave.physicalAge > 35) {
+					r.push(Spoken(slave, `I can almost feel the curatives working. They make me feel so young! Thank you, ${Master}.`));
+				} else {
+					r.push(Spoken(slave, `I can almost feel the curatives working. They're pretty incredible. Thank you, ${Master}.`));
+				}
+			}
+		}
+
+		if (slave.inflationType === "aphrodisiac") {
+			r.push(Spoken(slave, `This belly is so hot! I feel so hot... You just have to fuck me ${Master}! I need a dick in me, please!`));
+		}
+
+		if (slave.inflationType === "tightener") {
+			r.push(Spoken(slave, `I can practically feel my butt getting tighter. This is great, I'll be like new soon. Thank you, ${Master}.`));
+		}
+
+		if (slave.inflation > 0) {
+			let _fluid;
+			if (SlaveStatsChecker.checkForLisp(slave)) {
+				_fluid = lispReplace(slave.inflationType);
+			} else {
+				_fluid = slave.inflationType;
+			}
+			if (slave.behavioralFlaw === "gluttonous" && ["food", "milk"].includes(_fluid) && [1, 3].includes(slave.inflationMethod) && slave.fetish === "humiliation" && slave.fetishStrength > 60) {
+				if (slave.bellyFluid >= 10000) {
+					r.push(Spoken(slave, `My belly hurts a bit, but it's worth it to let everybody know what a disgraceful, gluttonous <span class="note">pig</span> I am.`));
+				} else if (slave.bellyFluid >= 5000) {
+					r.push(Spoken(slave, `I can't believe I get to gorge myself silly on${_fluid} and show it off! Thank you, ${Master}.`));
+				} else if (slave.bellyFluid >= 2000) {
+					r.push(Spoken(slave, `This${_fluid} is delicious, but wouldn't it be hot if your little piggy had an even <span class="note">bigger</span> belly for people to stare at?`));
+				}
+			} else if (slave.behavioralFlaw === "gluttonous" && ["food", "milk"].includes(_fluid) && [1, 3].includes(slave.inflationMethod)) {
+				if (slave.bellyFluid >= 10000 && slave.fetish === "masochist" && slave.fetishStrength > 60) {
+					r.push(Spoken(slave, `This${_fluid} is so tasty, and my belly hurts so <span class="note">good</span>... I wish I really could stuff myself to bursting.`));
+				} else if (slave.bellyFluid >= 10000) {
+					r.push(Spoken(slave, `My belly hurts a little, but it feels so good to gorge myself...`));
+				} else if (slave.bellyFluid >= 5000) {
+					r.push(Spoken(slave, `I can't believe I get to stuff myself like this! Thank you, ${Master}.`));
+				} else if (slave.bellyFluid >= 2000) {
+					r.push(Spoken(slave, `Thank you for letting me have so much delicious${_fluid}, ${Master}.`));
+				}
+			} else if (slave.sexualFlaw === "cum addict" && _fluid === "cum" && [1, 3].includes(slave.inflationMethod)) {
+				if (slave.bellyFluid >= 10000 && slave.fetish === "masochist" && slave.fetishStrength > 60) {
+					r.push(Spoken(slave, `I'm so full of tasty cum it <span class="note">hurts,</span> ${Master}. I think this is what heaven feels like...`));
+				} else if (slave.bellyFluid >= 10000) {
+					r.push(Spoken(slave, `It hurts a little, but I feel so <span class="note">complete</span> being so full of hot, delicious cum.`));
+				} else if (slave.bellyFluid >= 5000) {
+					r.push(Spoken(slave, `Being able to drink all this wonderful hot cum all the time is like a dream come true, ${Master}.`));
+				} else if (slave.bellyFluid >= 2000) {
+					r.push(Spoken(slave, `Thank you for letting me have so much delicious cum, ${Master}.`));
+				}
+			} else if (slave.sexualFlaw === "cum addict" && _fluid === "cum" && slave.inflationMethod === 2) {
+				if (slave.bellyFluid >= 10000 && slave.fetish === "masochist" && slave.fetishStrength > 60) {
+					r.push(Spoken(slave, `It feels like I'm <span class="note">bursting</span> with cum, ${Master}. It's wonderful, even if I can't taste it.`));
+				} else if (slave.bellyFluid >= 10000) {
+					r.push(Spoken(slave, `It hurts a little, but I feel so <span class="note">complete</span> being so full of cum. I just wish I could taste it...`));
+				} else if (slave.bellyFluid >= 5000) {
+					r.push(Spoken(slave, `I love being so full of hot cum, ${Master}. I'd be even happier if I could taste it.`));
+				} else if (slave.bellyFluid >= 2000) {
+					r.push(Spoken(slave, `This cum is nice and warm inside me, ${Master}, I'd love to have some more. Maybe I could drink it next time...`));
+				}
+			} else if (slave.fetish === "humiliation" && slave.fetishStrength > 60) {
+				if (slave.bellyFluid >= 2000) {
+					r.push(Spoken(slave, `This bloated gut is so <span class="note">disgraceful</span>...`));
+					if (slave.bellyFluid >= 10000) {
+						r.push(Spoken(slave, `It hurts a little, but`));
+					}
+					r.push(Spoken(slave, `I love the way people <span class="note">stare</span> at it.`));
+				}
+			} else {
+				if (slave.bellyFluid >= 10000 && slave.fetish === "masochist" && slave.fetishStrength > 60) {
+					r.push(Spoken(slave, `My guts are so full, ${Master}, it hurts so <span class="note">good</span>...`));
+				} else if (slave.bellyFluid >= 10000) {
+					r.push(Spoken(slave, `I feel really full, can I let the${_fluid} out now?`));
+				} else if (slave.bellyFluid >= 5000) {
+					r.push(Spoken(slave, `I feel so full, can I let the${_fluid} out now?`));
+				} else if (slave.bellyFluid >= 2000) {
+					r.push(Spoken(slave, `I feel so uncomfortable, can I let the${_fluid} out now?`));
+				}
+			}
+		}
+
+		switch (slave.diet) {
+			case "fertility":
+				r.push(Spoken(slave, `My stomach feels tingly, especially when I think of dicks, but that's normal, right?`));
+				if (V.PC.dick > 0) {
+					r.push(Spoken(slave, `Oh! It's happening now! I bet we both know why...`));
+				}
+				break;
+			case "cum production":
+				r.push(Spoken(slave, `My loads have been bigger lately. That diet must be having an effect on me.`));
+				break;
+			case "cleansing":
+				r.push(Spoken(slave, `I'm feeling really good, ${Master}, the diet must be working.`));
+				if (canTaste(slave)) {
+					r.push(Spoken(slave, `It really tastes horrible, though...`));
+				}
+				break;
+		}
+
+		switch (slave.drugs) {
+			case "intensive penis enhancement":
+				if (slave.dick > 0) {
+					if (slave.balls === 0) {
+						r.push(Spoken(slave, `I can feel my dick growing, ${Master}, but it's still so soft. I guess it'll just flop around more when I get buttfucked.`));
+					} else if (slave.fetishKnown === 1) {
+						if (slave.fetish === "sadist" && slave.fetishStrength > 60) {
+							r.push(Spoken(slave, `I can feel my dick growing, ${Master}. I can just imagine pushing it into some poor struggling girl's asshole.`));
+						} else if (slave.fetish === "dom" && slave.fetishStrength > 60) {
+							r.push(Spoken(slave, `I can feel my dick growing, ${Master}. I can just imagine pushing it into some little slut's face.`));
+						} else if (slave.attrKnown === 1 && slave.attrXX > 80) {
+							r.push(Spoken(slave, `I can feel my dick growing, ${Master}. I can just imagine pushing it into a warm, wet pussy.`));
+						} else {
+							r.push(Spoken(slave, `I can almost feel my dick growing, ${Master}. It's kind of uncomfortable.`));
+						}
+					} else {
+						r.push(Spoken(slave, `I can almost feel my dick growing, ${Master}. It's kind of uncomfortable.`));
+					}
+				} else {
+					if (slave.fetishKnown === 1) {
+						if (slave.fetish === "sadist" && slave.fetishStrength > 60) {
+							r.push(Spoken(slave, `I can feel my clit growing, ${Master}. I can just imagine pushing it into some poor struggling girl's asshole.`));
+						} else if (slave.fetish === "dom" && slave.fetishStrength > 60) {
+							r.push(Spoken(slave, `I can feel my clit growing, ${Master}. I can just imagine pushing it into some little slut's face.`));
+						} else if (slave.attrKnown === 1 && slave.attrXX > 80) {
+							r.push(Spoken(slave, `I can feel my clit growing, ${Master}. I can just imagine pushing it into a warm, wet pussy.`));
+						} else {
+							r.push(Spoken(slave, `I can almost feel my clit growing, ${Master}. It's kind of uncomfortable.`));
+						}
+					} else {
+						r.push(Spoken(slave, `I can almost feel my clit growing, ${Master}. It's kind of uncomfortable.`));
+					}
+				}
+				break;
+			case "hyper penis enhancement":
+				if (slave.dick > 0) {
+					if (slave.balls === 0) {
+						r.push(Spoken(slave, `I can feel my dick growing, ${Master}, but it's still so soft. I guess it'll just flop around more when you buttfuck me, until it touches the floor, that is.`));
+					} else if (slave.fetishKnown === 1) {
+						if (slave.fetish === "sadist" && slave.fetishStrength > 60) {
+							r.push(Spoken(slave, `I can feel my dick growing, ${Master}. I can just imagine pushing it into some poor struggling girl's asshole and having it swell more and more in them.`));
+						} else if (slave.fetish === "dom" && slave.fetishStrength > 60) {
+							r.push(Spoken(slave, `I can feel my dick growing, ${Master}. I can just imagine pinning some poor little slut to the floor with it.`));
+						} else if (slave.attrKnown === 1 && slave.attrXX > 80) {
+							r.push(Spoken(slave, `I can feel my dick growing, ${Master}. I can just imagine shoving it into a warm, wet pussy.`));
+						} else {
+							r.push(Spoken(slave, `I can feel my dick growing, ${Master}. It's kind of painful.`));
+						}
+					} else {
+						r.push(Spoken(slave, `I can feel my dick growing, ${Master}. It's kind of painful.`));
+					}
+				} else {
+					if (slave.fetishKnown === 1) {
+						if (slave.fetish === "sadist" && slave.fetishStrength > 60) {
+							r.push(Spoken(slave, `I can feel my clit growing, ${Master}. I can just imagine pushing it into some poor struggling girl's asshole and having it swell more and more in them.`));
+						} else if (slave.fetish === "dom" && slave.fetishStrength > 60) {
+							r.push(Spoken(slave, `I can feel my clit growing, ${Master}. I can just imagine plugging some slut's face with it.`));
+						} else if (slave.attrKnown === 1 && slave.attrXX > 80) {
+							r.push(Spoken(slave, `I can feel my clit growing, ${Master}. I can just imagine shoving it into a warm, wet pussy.`));
+						} else {
+							r.push(Spoken(slave, `I can almost feel my clit growing, ${Master}. It's kind of painful.`));
+						}
+					} else {
+						r.push(Spoken(slave, `I can almost feel my clit growing, ${Master}. It's kind of painful.`));
+					}
+				}
+				break;
+			case "intensive testicle enhancement":
+				r.push(Spoken(slave, `My balls feel incredibly full, ${Master}. They're really uncomfortable.`));
+				if (slave.fetishKnown === 1 && (slave.fetish === "dom") || (slave.fetish === "sadist") && slave.fetishStrength > 60) {
+					r.push(Spoken(slave, `But I can't wait to force a bitch to take the whole load.`));
+				} else if (slave.fetishKnown === 1 && slave.fetish === "pregnancy" && slave.fetishStrength > 60) {
+					r.push(Spoken(slave, `I feel like I could fill a girl's womb with cum with one orgasm.`));
+				} else {
+					r.push(Spoken(slave, `I really need to cum. After we finish talking, would you please, please fuck me so I can cum? I can barely stand it.`));
+				}
+				break;
+			case "hyper testicle enhancement":
+				r.push(Spoken(slave, `My balls feel so incredibly full, ${Master}. They're really painful.`));
+				if (slave.fetishKnown === 1 && (slave.fetish === "dom") || (slave.fetish === "sadist") && slave.fetishStrength > 60) {
+					r.push(Spoken(slave, `But I can't wait to fill a bitch with my load. Bet they'll look pregnant when I'm done.`));
+				} else if (slave.fetishKnown === 1 && slave.fetish === "pregnancy" && slave.fetishStrength > 60) {
+					r.push(Spoken(slave, `I feel like I could fertilize all of a girl's eggs with my cum.`));
+				} else {
+					r.push(Spoken(slave, `I really need to cum. After I finish, would you please, please fuck me? I can barely stand it.`));
+				}
+				break;
+			case "intensive breast injections":
+				if (slave.fetishKnown === 1 && (slave.fetish === "boobs") || (slave.energy > 95)) {
+					r.push(Spoken(slave, `I can almost feel my boobs swelling, ${Master}. Thank you for injecting them with hormones, and please, never stop.`));
+				} else {
+					r.push(Spoken(slave, `I can almost feel my boobs swelling, ${Master}. It's kind of uncomfortable.`));
+				}
+				break;
+			case "hyper breast injections":
+				if (slave.fetishKnown === 1) {
+					if (slave.fetish === "boobs" || slave.energy > 95) {
+						r.push(Spoken(slave, `I can feel my boobs swelling, ${Master}. Thank you for injecting them with hormones, and please, never stop.`));
+					} else {
+						r.push(Spoken(slave, `I can feel my boobs swelling, ${Master}. It's kind of painful.`));
+					}
+				} else {
+					r.push(Spoken(slave, `I can feel my boobs swelling, ${Master}. It's kind of painful.`));
+				}
+				break;
+			case "intensive butt injections":
+				if (slave.fetishKnown === 1 && (slave.fetish === "buttslut") || (slave.energy > 95)) {
+					r.push(Spoken(slave, `I can almost feel my butt growing, ${Master}. I can't wait to feel a dick sliding up in between my buttocks.`));
+				} else {
+					r.push(Spoken(slave, `I can almost feel my butt growing, ${Master}. It's kind of uncomfortable.`));
+				}
+				break;
+			case "hyper butt injections":
+				if (slave.fetishKnown === 1) {
+					if (slave.fetish === "buttslut" || slave.energy > 95) {
+						r.push(Spoken(slave, `I can feel my butt growing, ${Master}. I can't wait for a dick to get lost in between my buttocks.`));
+					} else {
+						r.push(Spoken(slave, `I can feel my butt growing, ${Master}. It's kind of painful.`));
+					}
+				} else {
+					r.push(Spoken(slave, `I can feel my butt growing, ${Master}. It's kind of painful.`));
+				}
+				break;
+			case "lip injections":
+				if (slave.fetishKnown === 1 && (slave.fetish === "cumslut") || (slave.energy > 95)) {
+					r.push(Spoken(slave, `I can almost feel my lips swelling, ${Master}. I can't wait to wrap them around a cock.`));
+				} else {
+					r.push(Spoken(slave, `I can almost feel my lips swelling, ${Master}. It's kind of uncomfortable.`));
+				}
+				break;
+			case "fertility drugs":
+				if (isFertile(slave)) {
+					r.push(Spoken(slave, `I feel like I need to have a baby, ${Master}, like right now.`));
+					if (slave.fetishKnown === 1 && slave.fetish === "submissive" && slave.fetishStrength > 60) {
+						r.push(Spoken(slave, `I can't wait for someone to pin me down and fuck me pregnant.`));
+					} else if (slave.fetishKnown === 1 && slave.fetish === "dom" && slave.fetishStrength > 60) {
+						r.push(Spoken(slave, `Makes me want to pin down a cute little`));
+						if (V.seeDicks !== 0) {
+							r.push(Spoken(slave, `dickslave`));
+						} else {
+							r.push(Spoken(slave, `citizen`));
+						}
+						r.push(Spoken(slave, `and claim their sperm.`));
+					} else if (slave.fetishKnown === 1 && slave.fetish === "pregnancy" && slave.fetishStrength > 60) {
+						r.push(Spoken(slave, `I can't wait till my belly gets big enough to hold me down.`));
+					} else {
+						r.push(Spoken(slave, `These will get me pregnant, right?`));
+					}
+				}
+				break;
+			case "super fertility drugs":
+				if (isFertile(slave)) {
+					r.push(Spoken(slave, `My womb feels so full, ${Master}, I need to be fertilized!`));
+					if (slave.fetishKnown === 1 && slave.fetish === "submissive" && slave.fetishStrength > 60) {
+						r.push(Spoken(slave, `I can't wait to be pinned to the floor by my life swollen belly.`));
+					} else if (slave.fetishKnown === 1 && slave.fetish === "dom" && slave.fetishStrength > 60) {
+						r.push(Spoken(slave, `I can't wait till my belly is huge enough to really demand worship.`));
+					} else if (slave.fetishKnown === 1 && slave.fetish === "pregnancy" && slave.fetishStrength > 60) {
+						r.push(Spoken(slave, `I can't wait till my belly swells as big as me.`));
+					} else {
+						r.push(Spoken(slave, `These will get me pregnant, right? Like, so pregnant I won't be able to stand in the end?`));
+					}
+				}
+				break;
+			case "psychostimulants":
+				r.push(Spoken(slave, `My thoughts are so sharp ${Master}, I feel like I'm actually getting smarter.`));
+				break;
+			case "anti-aging cream":
+				if (slave.visualAge+20 < slave.actualAge) {
+					r.push(Spoken(slave, `I look so young, ${Master}, I can barely recognize myself anymore.`));
+				} else {
+					r.push(Spoken(slave, `I can practically feel the years peeling off me, ${Master}.`));
+				}
+				break;
+			case "sag-B-gone":
+				if (slave.fetishKnown === 1) {
+					if (slave.fetish === "boobs" || slave.energy > 95) {
+						r.push(Spoken(slave, `I love all the breast massages, but I don't think the cream is doing anything. They look the same as always, not that that means I want you to stop, ${Master}!`));
+					} else {
+						r.push(Spoken(slave, `I think you might have been ripped off on this sag cream, ${Master}; my breasts don't feel any different.`));
+					}
+				} else {
+					r.push(Spoken(slave, `I think you might have been ripped off on this sag cream, ${Master}; my breasts don't feel any different.`));
+				}
+		}
+
+		switch (slave.assignment) {
+			case "whore":
+			case "work in the brothel":
+				if (slave.fetishKnown === 1) {
+					if (slave.energy > 95) {
+						r.push(Spoken(slave, `It's great being a whore. I can't imagine being satisfied doing anything else.`));
+					} else if (slave.fetishStrength > 60) {
+						switch (slave.fetish) {
+							case "submissive":
+								r.push(Spoken(slave, `It's nice being a whore, I get treated like I deserve.`));
+								break;
+							case "dom":
+								r.push(Spoken(slave, `Being a whore is okay, sometimes somebody wants to be dommed.`));
+								break;
+							case "sadist":
+								r.push(Spoken(slave, `Being a whore is okay, sometimes somebody wants me to hurt one of their slaves for them.`));
+								break;
+							case "masochist":
+								r.push(Spoken(slave, `It's nice being a whore, I get hurt like I deserve.`));
+								break;
+							case "cumslut":
+								r.push(Spoken(slave, `It's great being a whore. If I was still free, I would fantasize about getting to suck this many dicks.`));
+								break;
+							case "humiliation":
+								r.push(Spoken(slave, `It's great being a whore, the shame keeps me really horny.`));
+								break;
+							case "buttslut":
+								r.push(Spoken(slave, `It's great being a whore. If I was still free, I would fantasize about taking this much anal.`));
+								break;
+							case "boobs":
+								r.push(Spoken(slave, `It's nice being a whore, sometimes customers just play with my boobs for hours.`));
+								break;
+							case "pregnancy":
+								if (slave.belly >= 5000) {
+									r.push(Spoken(slave, `It's nice being a whore, sometimes customers just play with my belly for hours.`));
+								} else if (isFertile(slave)) {
+									r.push(Spoken(slave, `It's great being a whore, I'm going to get pregnant and there's nothing I can do to stop it.`));
+								} else if (slave.preg > slave.pregData.normalBirth/4) {
+									r.push(Spoken(slave, `It's great being a pregnant whore, I get to watch my belly swell as I get fucked. Every week it gets a little bigger.`));
+								} else if (slave.pregKnown === 1) {
+									r.push(Spoken(slave, `Being a whore is okay, but it will be great once my belly gets bigger.`));
+								} else if (slave.preg > 0) {
+									r.push(Spoken(slave, `Being a whore is okay, I just wish I'd get knocked up already.`));
+								} else {
+									r.push(Spoken(slave, `Being a whore is okay, sometimes I can pretend I can get pregnant.`));
+								}
+						}
+					} else if (slave.attrKnown === 1 && slave.attrXY > 60) {
+						r.push(Spoken(slave, `It's nice being a whore, I get fucked by a lot of hot guys.`));
+					} else if (slave.attrKnown === 1 && slave.attrXX > 60) {
+						r.push(Spoken(slave, `It's okay being a whore, I get female customers sometimes.`));
+					}
+				}
+				break;
+			case "serve the public":
+			case "serve in the club":
+				if (slave.fetishKnown === 1) {
+					if (slave.energy > 95) {
+						r.push(Spoken(slave, `It's great being a public slut. I can't imagine being satisfied doing anything else.`));
+					} else if (slave.fetishStrength > 60) {
+						switch (slave.fetish) {
+							case "submissive":
+								r.push(Spoken(slave, `It's nice being a public slut, I get treated like I deserve.`));
+								break;
+							case "dom":
+								r.push(Spoken(slave, `Being a public slut is okay, sometimes somebody wants to be dommed.`));
+								break;
+							case "sadist":
+								r.push(Spoken(slave, `Being a public slut is okay, sometimes somebody wants me to hurt one of their slaves for them.`));
+								break;
+							case "masochist":
+								r.push(Spoken(slave, `It's nice being a public slut, I get hurt like I deserve.`));
+								break;
+							case "cumslut":
+								r.push(Spoken(slave, `It's great being a public slut. If I was still free, I would fantasize about getting to suck this many dicks.`));
+								break;
+							case "humiliation":
+								r.push(Spoken(slave, `It's great being a public slut, the shame keeps me really horny.`));
+								break;
+							case "buttslut":
+								r.push(Spoken(slave, `It's great being a public slut. If I was still free, I would fantasize about taking this much anal.`));
+								break;
+							case "boobs":
+								r.push(Spoken(slave, `It's nice being a public slut, sometimes citizens just play with my boobs for hours.`));
+								break;
+							case "pregnancy":
+								if (slave.belly >= 5000) {
+									r.push(Spoken(slave, `It's nice being a public slut, sometimes citizens just play with my belly for hours.`));
+								} else if (isFertile(slave)) {
+									r.push(Spoken(slave, `It's great being a public slut, I'm going to get pregnant and there's nothing I can do to stop it.`));
+								} else if (slave.preg > slave.pregData.normalBirth/4) {
+									r.push(Spoken(slave, `It's great being a pregnant public slut, I get to show off my belly all the time.`));
+								} else if (slave.pregKnown === 1) {
+									r.push(Spoken(slave, `Being a public slut is okay, but it will be great once my belly gets bigger.`));
+								} else if (slave.preg > 0) {
+									r.push(Spoken(slave, `Being a public slut is okay, I just wish I'd get knocked up already.`));
+								} else {
+									r.push(Spoken(slave, `Being a public slut is okay, sometimes I can pretend I can get pregnant.`));
+								}
+						}
+					} else if (slave.attrKnown === 1 && slave.attrXY > 60) {
+						r.push(Spoken(slave, `It's nice being a public slut, I get fucked by a lot of hot guys.`));
+					} else if (slave.attrKnown === 1 && slave.attrXX > 60) {
+						r.push(Spoken(slave, `It's okay being a public slut; I get female citizens sometimes.`));
+					}
+				}
+				break;
+			case "get milked":
+			case "work in the dairy":
+				if (slave.balls === 0) {
+					if (slave.fetishKnown === 1) {
+						if (slave.energy > 95) {
+							r.push(Spoken(slave, `It's pretty nice, being milked.`));
+						} else if (slave.fetish === "submissive" && slave.fetishStrength > 60) {
+							r.push(Spoken(slave, `It's nice being milked, I get treated like I deserve.`));
+						} else if (slave.fetish === "boobs" && slave.fetishStrength > 60) {
+							r.push(Spoken(slave, `It's so, so wonderful being milked.`));
+						} else if (slave.attrKnown === 1 && slave.attrXX > 80) {
+							r.push(Spoken(slave, `It's okay being milked, with all the girls and boobs around.`));
+						} else {
+							r.push(Spoken(slave, `Being milked is hard work.`));
+						}
+					}
+				} else {
+					if (slave.fetishKnown === 1) {
+						if (slave.fetish === "buttslut" || slave.energy > 95) {
+							r.push(Spoken(slave, `Getting buttfucked to orgasm whenever I can get hard is a dream come true. Actually, getting buttfucked until I cum`));
+							if (slave.prostate > 0) {
+								r.push(Spoken(slave, `even when I'm soft`));
+							}
+							r.push(Spoken(slave, `is pretty nice too.`));
+						} else if (slave.attrKnown === 1 && slave.attrXY > 80) {
+							r.push(Spoken(slave, `It's okay getting cockmilked, I like all the dicks around.`));
+						} else {
+							r.push(Spoken(slave, `It's surprisingly hard work, coming all day.`));
+						}
+					}
+				}
+				break;
+			case "work as a farmhand":
+				// TODO: add a description for this
+			case "please you":
+			case "serve in the master suite":
+			case "be your Concubine":
+				if (slave.fetishKnown === 1) {
+					if (slave.toyHole === "mouth" && (slave.fetish === "cumslut" && slave.fetishStrength > 60 && V.PC.dick !== 0)) {
+						r.push(Spoken(slave, `I love sucking your cock every`));
+						if (V.PC.balls >= 14) {
+							r.push(Spoken(slave, `day, and I love every opportunity I get to worship your balls, they're so huge and make so much cum and I just want to spend my life kissing your balls and sucking your cock, and live off your cum...`));
+						} else if (V.PC.balls >= 9) {
+							r.push(Spoken(slave, `day, and I love worshipping your massive balls.`));
+							if (hasAnyArms(slave)) {
+								r.push(Spoken(slave, `Your balls are so big that one testicle fills my hand; I even cum without touching myself so I can properly serve you.`));
+							} else {
+								r.push(Spoken(slave, `Feeling you rest your balls on my face in between facefucks is heaven for me.`));
+							}
+						} else if (V.PC.balls >= 5) {
+							r.push(Spoken(slave, `day, and I love pleasuring your big balls too. They're the perfect size to fill my mouth as I suck on them, and I love feeling them tense against my chin when you shoot cum down my throat.`));
+						} else if (V.PC.scrotum > 0) {
+							r.push(Spoken(slave, `day, and I love playing with your balls too.`));
+						} else {
+							r.push(Spoken(slave, `day.`));
+						}
+					} else if (slave.toyHole !== "dick") {
+						if (slave.energy > 95 && V.PC.dick !== 0) {
+							r.push(Spoken(slave, `I love how taking your cock is my only job, and I love having your other toys to have sex too.`));
+						} else {
+							r.push(Spoken(slave, `It's nice being your ${girl}.`));
+						}
+					} else {
+						if (slave.energy > 95 && V.PC.vagina !== -1) {
+							r.push(Spoken(slave, `I love how fucking your`));
+							if (V.PC.vagina !== -1) {
+								r.push(Spoken(slave, `pussy`));
+							} else {
+								r.push(Spoken(slave, `ass`));
+							}
+							r.push(Spoken(slave, `is my only job, and I'm so happy you trust me enough to cum inside you.`));
+						} else {
+							r.push(Spoken(slave, `I like letting you use my cock as your toy, and I'm happy you trust me enough to cum with you.`));
+						}
+					}
+				}
+				break;
+			case "rest":
+			case "rest in the spa":
+				r.push(Spoken(slave, `Thank you for letting me rest.`));
+				break;
+			case "work as a nanny":
+				r.push(Spoken(slave, `I love taking care of the babies. I hope I get to`));
+				if (canSee(slave)) {
+					r.push(Spoken(slave, `see`));
+				} else {
+					r.push(Spoken(slave, `have`));
+				}
+				r.push(Spoken(slave, `them grow up to into good slaves for you.`));
+				break;
+			default:
+				r.push(Spoken(slave, `Being a sex slave is hard work.`));
+		}
+
+		if ((slave.skill.oral + slave.skill.anal) >= 120 && slave.vagina === -1) {
+			r.push(Spoken(slave, `I'm really proud of my sex skills, it's nice to be good at what you do. Without a cunt my poor`));
+			if (slave.anus > 2) {
+				r.push(Spoken(slave, `asspussy`));
+			} else if (slave.anus === 2) {
+				r.push(Spoken(slave, `butthole`));
+			} else {
+				r.push(Spoken(slave, `little anus`));
+			}
+			r.push(Spoken(slave, `does double duty, but I can take it.`));
+		} else if ((slave.skill.oral + slave.skill.vaginal + slave.skill.anal) >= 180) {
+			r.push(Spoken(slave, `I'm really proud of my sex skills, it's nice to be good at what you do.`));
+		} else if (slave.skill.whoring >= 100) {
+			r.push(Spoken(slave, `I'm really proud of my whoring skills, prostitution is just a job like any other to me.`));
+		} else if (slave.skill.entertainment >= 100) {
+			r.push(Spoken(slave, `I'm really proud of my skills, I feel like I can make anyone want me.`));
+		} else if (slave.skill.anal >= 100) {
+			if (slave.vagina === -1) {
+				r.push(Spoken(slave, `I'm really proud of my anal skills, I can take a dick as well as anyone.`));
+			} else {
+				r.push(Spoken(slave, `I'm really proud of my anal skills, it's fun having three fuckholes.`));
+			}
+		} else if (slave.skill.anal <= 30 && slave.anus > 0) {
+			r.push(Spoken(slave, `I wish I were better at anal, if I could learn to relax getting buttfucked wouldn't hurt so much.`));
+		} else if (slave.skill.vaginal <= 30 && slave.vagina > 0) {
+			r.push(Spoken(slave, `I wish I were better at sex, sometimes all I can think to do is just lie there.`));
+		} else if (slave.skill.oral <= 30) {
+			r.push(Spoken(slave, `I wish I were better at blowjobs; it would be nice not to gag so much.`));
+		}
+
+		if (slave.relationship > 0) {
+			const _partner = getSlave(slave.relationshipTarget);
+			const {
+				He2, His2,
+				he2, his2, him2, daughter2, sister2,
+			} = getPronouns(_partner).appendSuffix("2");
+			let _partnerName;
+			if (_partner) {
+				if (_lisping === 1) {
+					_partnerName = lispReplace(_partner.slaveName);
+				} else {
+					_partnerName = _partner.slaveName;
+				}
+			} else {
+				r.push(Spoken(slave, `<span class="red">Error, relationshipTarget not found.</span>`));
+			}
+			if (slave.relationship <= 2) {
+				r.push(Spoken(slave, `I really like`));
+				if (canSee(slave)) {
+					r.push(Spoken(slave, `seeing`));
+				} else {
+					r.push(Spoken(slave, `hanging out with`));
+				}
+				r.push(Spoken(slave, `${_partnerName} every day, ${he2}'s a good friend." ${He} blushes. "${He2}'s kind of hot, too.`));
+			} else if (slave.relationship <= 3) {
+				r.push(Spoken(slave, `I really like`));
+				if (canSee(slave)) {
+					r.push(Spoken(slave, `seeing`));
+				} else {
+					r.push(Spoken(slave, `hanging out with`));
+				}
+				r.push(Spoken(slave, `${_partnerName} every day, ${he2}'s a good friend —" ${He} blushes. "— even when we're not fucking.`));
+			} else if (slave.relationship <= 4) {
+				r.push(Spoken(slave, `I really love ${_partnerName}." ${He} blushes. "Thank you for letting us be together, ${Master}.`));
+			} else {
+				r.push(Spoken(slave, `I'm so happy with${_partnerName}." ${He} blushes. "Thank you for ${him2}, ${Master}.`));
+			}
+			if (slave.relationship >= 3) {
+				if (slave.mother === _partner.ID) {
+					r.push(Spoken(slave, `"I — I'm fucking my mother,"`));
+					r.push(`${he} bursts out, blushing even harder.`);
+					r.push(Spoken(slave, `"It's so fucking wrong, but ${he2}'s such a hot MILF, I can't stop.`));
+				} else if (slave.father === _partner.ID) {
+					r.push(Spoken(slave, `I — I'm fucking my father,"`));
+					r.push(`${he} bursts out, blushing even harder.`);
+					r.push(Spoken(slave, `"It's so fucking wrong, but ${he2} knows so much about penetration, I can't stop.`));
+				} else if (_partner.mother === V.AS) {
+					r.push(Spoken(slave, `I — I'm fucking my ${daughter2},"`));
+					r.push(`${he} bursts out, blushing even harder.`);
+					r.push(Spoken(slave, `"It's so fucking wrong, but ${he2} has such a hot little body, I can't stop.`));
+				} else if (_partner.father === V.AS) {
+					r.push(Spoken(slave, `I — I'm fucking my ${daughter2},"`));
+					r.push(`${he} bursts out, blushing even harder.`);
+					r.push(Spoken(slave, `"It's so fucking wrong, but ${he2} has such a hot little body. ${He2} looks so much like ${his2} mother, I can't stop.`));
+				} else if (areSisters(slave, _partner) === 1) {
+					r.push(Spoken(slave, `I — I'm fucking my twin ${sister2},"`));
+					r.push(`${he} bursts out, blushing even harder.`);
+					r.push(Spoken(slave, `"It's so fucking wrong, but ${he2}'s so hot, I can't stop.`));
+				} else if (areSisters(slave, _partner) === 2) {
+					r.push(Spoken(slave, `I — I'm fucking my ${sister2},"`));
+					r.push(`${he} bursts out, blushing even harder.`);
+					r.push(Spoken(slave, `"It's so fucking wrong, but ${he2}'s so hot, I can't stop.`));
+				} else if (areSisters(slave, _partner) === 3) {
+					r.push(Spoken(slave, `I — I'm fucking my half-${sister2},"`));
+					r.push(`${he} bursts out, blushing even harder.`);
+					r.push(Spoken(slave, `"It's so fucking wrong, but ${he2}'s so hot, I can't stop.`));
+				} else if ((slave.actualAge + 14) < _partner.actualAge) {
+					r.push(Spoken(slave, `${He2}'s old enough to be my mother."`));
+					r.push(`${He} looks down, blushing a little harder.`);
+					r.push(Spoken(slave, `"But I'm lucky, ${he2}'s such a hot MILF.`));
+				} else if ((slave.actualAge - 14) > _partner.actualAge) {
+					r.push(Spoken(slave, `${He2}'s young enough to be my ${daughter2}."`));
+					r.push(` ${He} looks down, blushing a little harder.`);
+					r.push(Spoken(slave, `"But I love ${his2} hot young body.`));
+				}
+				if ((slave.actualAge - 5) > _partner.actualAge && _partner.actualAge < 20) {
+					r.push(Spoken(slave, `${He2}'s a little immature at times, but having sex with a teenager is so awesome, it's worth it.`));
+				}
+				if (hasAnyProstheticLimbs(_partner)) {
+					const _sex = getLimbCount(_partner, 103);
+					const _beauty = getLimbCount(_partner, 104);
+					const _combat = getLimbCount(_partner, 105);
+					if (_sex > 0 && _beauty > 0 && _combat > 0) {
+						r.push(Spoken(slave, `${His2} P-Limbs do look cool and I like how strong they can make ${him2} but they scare me a little, sometimes. Though of course ${he2} disables the weapons when we're together."`));
+						r.push(`${He} giggles.`);
+						r.push(Spoken(slave, `"${He2} has vibe fingers, so that's awesome.`));
+					} else if (_sex > 0 && _beauty > 0) {
+						r.push(Spoken(slave, `I really like ${his2} P-Limbs. They're very pretty, but kind of cold. That's just how ${he2} is."`));
+						r.push(`${He} giggles.`);
+						r.push(Spoken(slave, `" ${He2} has vibe fingers. so that's awesome.`));
+					} else if (_beauty > 0 && _combat > 0) {
+						r.push(Spoken(slave, `${His2} P-Limbs do look cool and I like how strong they can make ${him2} but they scare me a little, sometimes. Though of course ${he2} disables the weapons when we're together.`));
+					} else if (_sex > 0 && _combat > 0) {
+						r.push(`${His2} P-Limbs do scare me a little, sometimes. Though of course ${he2} disables the weapons when we're together."`);
+						r.push(`${He} giggles.`);
+						r.push(Spoken(slave, `"${He2} has vibe fingers. so that's awesome.`));
+					} else if (_sex > 0) {
+						r.push(Spoken(slave, `And, um."`));
+						r.push(`${He} giggles.`);
+						r.push(Spoken(slave, `"${He2} has vibe fingers. so that's awesome.`));
+					} else if (_beauty > 0) {
+						r.push(Spoken(slave, `I really like ${his2} P-Limbs. They're very pretty, but kind of cold. That's just how ${he2} is.`));
+					} else if (_combat > 0) {
+						r.push(Spoken(slave, `${His2} P-Limbs do scare me a little, sometimes. Though of course ${he2} disables the weapons when we're together."`));
+						r.push(`${He} giggles.`);
+						r.push(Spoken(slave, `"Though I did get ${him2} to extend ${his2} blades once, so I could kiss them for luck.`));
+					} else {
+						r.push(Spoken(slave, `I really do like ${his2} P-Limbs. They're a little awkward, and kind of cold, but that's just how ${he2} is.`));
+					}
+				} else if (getLimbCount(_partner, 0) > 0) {
+					r.push(Spoken(slave, `${He2}'s an amputee, of course, so that's a little sad.`));
+				}
+			}
+		} else if (slave.relationship === -3) {
+			if (slave.devotion+slave.trust >= 175) {
+				r.push(Spoken(slave, `Of course, I'm your ${wife}, ${Master}."`));
+				r.push(`${He} laughs. `);
+				r.push(Spoken(slave, `"Not exactly traditional married life, but I'll do my best to help redefine it.`));
+			} else if (slave.devotion < -20 && slave.trust > 20) {
+				r.push(Spoken(slave, `Of course, I'm your ${wife}, ${Master}." `));
+				r.push(`${He} sighs. `);
+				r.push(Spoken(slave, `"Any other questions?`));
+			} else if (slave.devotion < -20) {
+				r.push(Spoken(slave, `I'm your ${wife},`));
+				if (slave.rudeTitle === 1) {
+					r.push(Spoken(slave, `${PoliteRudeTitle(slave)},"`));
+				} else {
+					r.push(Spoken(slave, `${Master},"`));
+				}
+				r.push(`${he} ${say}s, ${his} voice wavering.`);
+				r.push(Spoken(slave, `"Please let me go...`));
+			} else {
+				r.push(Spoken(slave, `Of course, I'm your ${wife}, ${Master},"`));
+				r.push(`${he} ${say}s. `);
+				r.push(Spoken(slave, `"It isn't so bad, I'm starting to like it.`));
+			}
+		} else if (slave.relationship === -2) {
+			r.push(Spoken(slave, `I'm good friends with some of the other slaves,"`));
+			r.push(`${he}`);
+			if (!canTalk(slave)) {
+				r.push(`gestures`);
+			} else {
+				r.push(`mutters`);
+			}
+			r.push(`hesitantly, looking suddenly embarrassed.`);
+			r.push(Spoken(slave, `"I really like you, though, ${Master}. Like, <span class="note">like</span> you, like you."`));
+			r.push(`${He} clears ${his} throat`);
+			if (!canTalk(slave)) {
+				r.push(`silently and pointlessly`);
+			} else {
+				r.push(`nervously`);
+			}
+			r.push(`before hurrying on to safer subjects.`);
+			r.push(Spoken(slave, `"Yeah.`));
+		} else if (slave.relationship === -1) {
+			r.push(Spoken(slave, `As far as relationships go, ${Master},"`));
+			r.push(`${he} laughs,`);
+			r.push(Spoken(slave, `"I'm such a fucking slut. It's so liberating, not having to worry about any of that crap anymore.`));
+		}
+
+		if (FutureSocieties.HighestDecoration() >= 60) {
+			if (slave.devotion > 75) {
+				r.push(Spoken(slave, `I'll do everything I can to support your vision for the future.`));
+			} else if (slave.devotion > 50) {
+				r.push(Spoken(slave, `I do my best to support your vision for the future.`));
+			} else {
+				r.push(Spoken(slave, `I try to conform to your vision for the future.`));
+			}
+
+			if (V.arcologies[0].FSRomanRevivalist >= 10) {
+				if (slave.intelligence+slave.intelligenceImplant > 50) {
+					r.push(Spoken(slave, `The new Rome is fascinating, ${Master}. I'm glad to be a part of it.`));
+				} else if (slave.devotion > 20) {
+					r.push(Spoken(slave, `I'm proud to be a slave in the new Rome.`));
+				} else {
+					r.push(Spoken(slave, `Being a slave in the new Rome is a little scary, ${Master}. I hear slaves fighting sometimes.`));
+				}
+			}
+			if (V.arcologies[0].FSNeoImperialist >= 10) {
+				if (slave.intelligence+slave.intelligenceImplant > 50) {
+					r.push(Spoken(slave, `This new Empire is strange, but fascinating, ${Master}. It feels like I'm part of history in the making.`));
+				} else if (slave.devotion > 20) {
+					r.push(Spoken(slave, `I am proud to serve your Empire, ${Master}.`));
+				} else {
+					r.push(Spoken(slave, `I don't know about this new Empire, ${Master}... being property is one thing, but being a serf is something else entirely.`));
+				}
+			}
+			if (V.arcologies[0].FSAztecRevivalist >= 10) {
+				if (slave.intelligence+slave.intelligenceImplant > 50) {
+					r.push(Spoken(slave, `The new Aztec Empire is enthralling, ${Master}. I'm amazed at how easily people jump to sacrifice and debauchery when they're offered.`));
+				} else if (slave.devotion > 20) {
+					r.push(Spoken(slave, `I'm proud to serve the will of the gods, and you.`));
+				} else {
+					r.push(Spoken(slave, `Please, don't sacrifice me ${Master}, I'll do anything.`));
+				}
+			}
+			if (V.arcologies[0].FSEgyptianRevivalist >= 10) {
+				if (slave.intelligence+slave.intelligenceImplant > 50) {
+					r.push(Spoken(slave, `This new Egypt is fascinating, ${Master}. I'm glad to be a part of it.`));
+				} else if (slave.devotion > 20) {
+					r.push(Spoken(slave, `I'm proud to be a slave of the new Pharaoh.`));
+				} else {
+					r.push(Spoken(slave, `Being a slave in this new Egypt is a little reassuring. some of the other slavs say they used to use slaves for great things, anyway.`));
+				}
+			}
+			if (V.arcologies[0].FSChattelReligionist >= 10) {
+				if (slave.intelligence+slave.intelligenceImplant > 50) {
+					r.push(Spoken(slave, `It's interesting, seeing how fast a new faith can take hold.`));
+				} else if (slave.fetishKnown === 1 && slave.fetish === "masochist" && slave.fetishStrength > 60) {
+					r.push(Spoken(slave, `I — I always thought pain was good for me. It's so nice to be told that it's true at last.`));
+				} else if (slave.devotion > 20) {
+					r.push(Spoken(slave, `I'm proud to be a slave, since that's what's right for me.`));
+				} else {
+					r.push(Spoken(slave, `sometimes I have doubts about the new faith, but I do my best to ignore them.`));
+				}
+			}
+			if (V.arcologies[0].FSIntellectualDependency >= 10) {
+				if (slave.intelligence+slave.intelligenceImplant > 10) {
+					r.push(Spoken(slave, `I just wish I could share in simplicity of things.`));
+				} else if (slave.intelligence+slave.intelligenceImplant <= -50) {
+					r.push(Spoken(slave, `It's so nice not having to think for myself anymore.`));
+				} else if (slave.energy > 50) {
+					r.push(Spoken(slave, `I'm so glad that this culture encourages being a horny little slut.`));
+				} else {
+					r.push(Spoken(slave, `I feel out of place here, but I'll try to relax and not overthink things so much.`));
+				}
+			}
+			if (V.arcologies[0].FSDegradationist >= 10) {
+				if (slave.fetishKnown === 1 && slave.fetish === "submissive" && slave.fetishStrength > 60) {
+					r.push(Spoken(slave, `I — I always knew I was a useless bitch, so it's easy to accept being degraded.`));
+				} else if (slave.devotion > 20) {
+					r.push(Spoken(slave, `I'm your worthless little degraded fuckpuppet, ${Master}.`));
+				} else {
+					r.push(Spoken(slave, `I'm trying to accept the degradation, ${Master}.`));
+				}
+			}
+			if (V.arcologies[0].FSSlaveProfessionalism >= 10) {
+				if (slave.intelligence+slave.intelligenceImplant > 100) {
+					r.push(Spoken(slave, `I'm so glad that I can be of such service to you. I never thought slavery could be so intellectually stimulating, I expected so much less.`));
+				} else if (slave.intelligence+slave.intelligenceImplant > 10) {
+					r.push(Spoken(slave, `sometimes it's tough here, but at least it keeps my wits sharp.`));
+				} else {
+					r.push(Spoken(slave, `I kind of hate it here, ${Master}. Everything's so complicated and people always laugh at me when I need help. You don't think I'm stupid too, do you?`));
+				}
+			}
+			if (V.arcologies[0].FSAssetExpansionist >= 10) {
+				if (slave.intelligence+slave.intelligenceImplant > 50) {
+					r.push(Spoken(slave, `I've been watching all the body dysphoria on display lately; it's certainly novel.`));
+				} else if (slave.energy > 95) {
+					r.push(Spoken(slave, `Thank you so much for supporting this new T&A expansion culture, ${Master}. It's like you made it just for me. so much eye candy!`));
+				} else if (slave.boobs > 1000) {
+					r.push(Spoken(slave, `It's almost strange, being in a place where these tits don't make me stand out.`));
+				} else {
+					r.push(Spoken(slave, `I'm a little worried I don't have the tits for this new expansion culture though.`));
+				}
+			}
+			if (V.arcologies[0].FSTransformationFetishist >= 10) {
+				if (slave.intelligence+slave.intelligenceImplant > 50) {
+					r.push(Spoken(slave, `I'm learning a lot about men, just watching how what's beautiful is changing.`));
+				} else if (slave.energy > 95) {
+					r.push(Spoken(slave, `The arcology is like, a bimbo land now, ${Master}. It's so hot`));
+				} else {
+					r.push(Spoken(slave, `I like getting hotter, ${Master}, but all the surgery is still a little scary.`));
+				}
+			}
+			if (V.arcologies[0].FSGenderRadicalist >= 10) {
+				if (slave.intelligence+slave.intelligenceImplant > 50) {
+					r.push(Spoken(slave, `I suppose it was inevitable that a place where anyone can be a slave would start treating anyone who's a slave as a girl.`));
+				} else if (slave.attrKnown === 1 && slave.attrXY > 80) {
+					r.push(Spoken(slave, `I really like how you're encouraging slavery to focus on cocks."`));
+					r.push(`${He} giggles.`);
+					r.push(Spoken(slave, `"I like cocks!`));
+				} else if (slave.dick > 0) {
+					r.push(Spoken(slave, `It isn't always easy being a slave ${girl}, but it's nice being in a place where that's normal.`));
+				} else {
+					r.push(Spoken(slave, `It's kind of nice, being a slave in a place where, you know, anyone can be a slave.`));
+				}
+			}
+			if (V.arcologies[0].FSGenderFundamentalist >= 10) {
+				if (slave.intelligence+slave.intelligenceImplant > 50) {
+					r.push(Spoken(slave, `I shouldn't be surprised at how easy it is to reinforce traditional values in a new, slavery focused culture.`));
+				} else if (slave.attrKnown === 1 && slave.attrXX > 80) {
+					r.push(Spoken(slave, `I really like how you're encouraging slavery to focus on girls."`));
+					r.push(`${He} giggles.`);
+					r.push(Spoken(slave, `"I like girls!`));
+				} else if (slave.dick > 0) {
+					r.push(Spoken(slave, `I know I'm not a perfect fit for your vision of the future, but I'll do my best to be a good girl.`));
+				} else {
+					r.push(Spoken(slave, `I'm relieved I fit into your vision of the future of slavery.`));
+				}
+			}
+			if (V.arcologies[0].FSRepopulationFocus >= 10) {
+				if (slave.intelligence+slave.intelligenceImplant > 50) {
+					r.push(Spoken(slave, `I really hope we can save humanity like this.`));
+				} else if (slave.fetishKnown === 1 && slave.fetish === "pregnancy") {
+					r.push(Spoken(slave, `I really like how you are encouraging girls to get pregnant."`));
+					r.push(`${He} giggles.`);
+					r.push(Spoken(slave, `"I really like big, pregnant bellies!`));
+				} else if (slave.preg > slave.pregData.normalBirth/4) {
+					r.push(Spoken(slave, `I'm relieved I fit into your vision of the future. I hope I can give you lots of healthy children.`));
+				} else {
+					r.push(Spoken(slave, `I know I'm not a perfect fit for your vision of the future, but I'll do my best to be a good ${girl}.`));
+				}
+			}
+			if (V.arcologies[0].FSRestart >= 10) {
+				if (slave.intelligence+slave.intelligenceImplant > 50) {
+					r.push(Spoken(slave, `I really hope we can save humanity like this.`));
+				} else if (slave.preg < 0 || slave.ovaries === 0) {
+					r.push(Spoken(slave, `I'm relieved I fit into your vision of the future.`));
+				} else {
+					r.push(Spoken(slave, `I know I'm not a perfect fit for your vision of the future, but I'll do my best to be a good ${girl}.`));
+				}
+			}
+			if (V.arcologies[0].FSPhysicalIdealist >= 10) {
+				if (slave.muscles <= 5) {
+					r.push(Spoken(slave, `I know I'm not a perfect fit for your vision of the future, but I'll do my best to serve everyone who's built.`));
+				} else {
+					r.push(Spoken(slave, `I'm relieved I fit into your vision of the future of the human body.`));
+				}
+			}
+			if (V.arcologies[0].FSHedonisticDecadence >= 10) {
+				if (slave.weight < 10 && slave.behavioralFlaw === "anorexic") {
+					r.push(Spoken(slave, `I want to keep food down for you, but I can't. I'm sorry, I just can't get fat for anyone.`));
+				} else if (slave.weight < 10) {
+					r.push(Spoken(slave, `I know I'm not a perfect fit for your vision of the future, but I'll do my best to eat more and get fatter for you.`));
+				} else {
+					r.push(Spoken(slave, `I'm relieved I fit into your vision of the future of the human body. Can I have some more food now? I'm hungry.`));
+				}
+			}
+			if (V.arcologies[0].FSPetiteAdmiration >= 10) {
+				if (!heightPass(slave)) {
+					if (V.arcologies[0].FSPetiteAdmirationLaw === 0) {
+						r.push(Spoken(slave, `I know I stand out in a bad way from all the other slaves thanks to my height, but I'll do my best to put it to good use for my betters.`));
+					} else {
+						r.push(Spoken(slave, `I know I'm too tall to be considered hot here, but I swear I'll try even harder to keep up.`));
+					}
+				} else {
+					r.push(Spoken(slave, `I'm glad I fit in with all the other slaves. It's a relief to not be singled out for my height.`));
+				}
+			}
+			if (V.arcologies[0].FSStatuesqueGlorification >= 10) {
+				if (!heightPass(slave)) {
+					if (V.arcologies[0].FSStatuesqueGlorificationLaw === 0) {
+						r.push(Spoken(slave, `I know I'm too short to be paid any attention to, but I'll still try my hardest to keep up with my betters.`));
+					} else {
+						r.push(Spoken(slave, `I know I'm too short to be considered attractive here, but I swear I'll do my best to measure up.`));
+					}
+				} else {
+					r.push(Spoken(slave, `I'm glad I fit in with everyone. It's a relief to not be mocked for being short.`));
+				}
+			}
+			if (V.arcologies[0].FSSubjugationist >= 10) {
+				if (slave.race === V.arcologies[0].FSSubjugationistRace) {
+					r.push(Spoken(slave, `I know that as a ${V.arcologies[0].FSSubjugationistRace} slave, it's my proper place to serve.`));
+				} else {
+					r.push(Spoken(slave, `since I'm not a ${V.arcologies[0].FSSubjugationistRace} slave, I'm a little afraid I don't fit into your vision of the future.`));
+				}
+			}
+			if (V.arcologies[0].FSSupremacist >= 10) {
+				if (slave.race !== V.arcologies[0].FSSupremacistRace) {
+					r.push(Spoken(slave, `I know that it's my proper place to serve my ${V.arcologies[0].FSSupremacistRace} betters.`));
+				} else {
+					r.push(Spoken(slave, `I know that ${V.arcologies[0].FSSupremacistRace} slaves are rare now, so I'll do my best to bring credit to the ${V.arcologies[0].FSSupremacistRace} race.`));
+				}
+			}
+			if (V.arcologies[0].FSPaternalist >= 10) {
+				r.push(Spoken(slave, `I'm so lucky to be a slave here. The future looks better all the time.`));
+			}
+			if (V.arcologies[0].FSBodyPurist >= 10) {
+				if (slave.boobsImplant > 0) {
+					r.push(Spoken(slave, `I know I'm not a perfect fit for your vision of the future, since my tits are ugly and fake.`));
+				} else {
+					r.push(Spoken(slave, `I'm relieved my boobs won't need implants here.`));
+				}
+			}
+			if (V.arcologies[0].FSSlimnessEnthusiast >= 10) {
+				if (slave.weight > 30) {
+					r.push(Spoken(slave, `I know I'm an ugly fat slut. I wish I were slim.`));
+				} else if (slave.belly >= 1500 && V.arcologies[0].FSRepopulationFocus !== "unset" && V.propOutcome === 0 && slave.breedingMark === 0) {
+					r.push(Spoken(slave, `I know I'm an ugly fat slut. I wish my belly wasn't so big.`));
+				} else if (slave.butt > 3) {
+					r.push(Spoken(slave, `I know I'm an ugly, fat assed slut. I wish it was smaller.`));
+				} else if (slave.boobs > 500) {
+					r.push(Spoken(slave, `I know I'm an ugly, big boobed slut. I wish my chest was smaller.`));
+				} else {
+					r.push(Spoken(slave, `It's nice, living in a place where I don't need big boobs to be pretty.`));
+				}
+			}
+			if (V.arcologies[0].FSMaturityPreferentialist >= 10) {
+				if (slave.actualAge < 30) {
+					r.push(Spoken(slave, `I know I'm just a young bitch. I try to be good to my elders.`));
+				} else {
+					r.push(Spoken(slave, `It's nice, living in a place that appreciates an older lady.`));
+				}
+			}
+			if (V.arcologies[0].FSYouthPreferentialist >= 10) {
+				if (slave.actualAge < 30) {
+					r.push(Spoken(slave, `It's nice, being young here.`));
+				} else {
+					r.push(Spoken(slave, `I know I'm just an old bitch. I try to serve younger and better slaves well.`));
+				}
+			}
+			if (V.arcologies[0].FSPastoralist >= 10) {
+				if (slave.lactation > 0 && slave.balls > 0) {
+					r.push(Spoken(slave, `I'll do my best to make as much milk and cum for the arcology as I can.`));
+				} else if (slave.lactation > 0) {
+					r.push(Spoken(slave, `I'll do my best to make as much milk for the arcology as I can.`));
+				} else if (slave.dick > 0 && slave.balls > 0) {
+					r.push(Spoken(slave, `I'll do my best to make as much cum for the arcology as I can.`));
+				} else {
+					r.push(Spoken(slave, `I wish I could make milk for the arcology.`));
+				}
+			}
+		} // closes FS
+
+		if (slave.devotion > 75) {
+			if (slave.tankBaby > 0|| slave.mother === -1 || (areSisters(slave, V.PC) && slave.actualAge <= V.PC.actualAge)) {
+				r.push(Spoken(slave, `I've known you my whole life, ${Master}, I can't really think of any times you weren't there for me.`));
+			} else if ((areSisters(slave, V.PC) && slave.actualAge > V.PC.actualAge) || V.PC.mother === V.AS || V.PC.father === V.AS) {
+				r.push(Spoken(slave, `You're my dear ${Master}. I've known you since you were born, and I will always be watching out for you, no matter what.`));
+			} else if (slave.weekAcquired === 0 && V.week > 104) {
+				r.push(Spoken(slave, `I feel like I've known you my whole life, ${Master}, and I would follow you to the end of the earth.`));
+			} else if ((V.week - slave.weekAcquired) > 104) {
+				r.push(Spoken(slave, `I feel like I know you pretty well, ${Master}.`));
+			}
+		}
+
+		r.push(Spoken(slave, `So, ${Master},"`));
+		r.push(`${he} concludes,`);
+		if (slave.fetishKnown === 1) {
+			if (slave.fetishStrength > 60) {
+				switch (slave.fetish) {
+					case "submissive":
+						r.push(Spoken(slave, `"Can I serve you somehow?"`));
+						break;
+					case "dom":
+						r.push(Spoken(slave, `"Can I hold a bitch down for you?"`));
+						break;
+					case "sadist":
+						r.push(Spoken(slave, `"Can I spank a bitch for you?"`));
+						break;
+					case "masochist":
+						r.push(Spoken(slave, `"Can I be your pain slave now?"`));
+						break;
+					case "cumslut":
+						r.push(Spoken(slave, `"Can I blow you now?"`));
+						break;
+					case "humiliation":
+						r.push(Spoken(slave, `"Can I be humiliated now?"`));
+						break;
+					case "boobs":
+						r.push(Spoken(slave, `"Can I give you a titjob now?"`));
+						break;
+					case "buttslut":
+						r.push(Spoken(slave, `"Can I be your anal cocksleeve now?"`));
+						break;
+					case "pregnancy":
+						if (slave.dick > 0 && slave.balls > 0) {
+							r.push(Spoken(slave, `"Are there any slaves you want knocked up?"`));
+						} else if (slave.preg > -2 && slave.ovaries > 0) {
+							if (slave.pregKnown === 1) {
+								r.push(Spoken(slave, `"Can I have some more cum in my pregnant pussy?"`));
+							} else {
+								if (V.PC.dick) {
+									r.push(Spoken(slave, `"Can you breed me now?"`));
+								} else {
+									r.push(Spoken(slave, `"Can I be bred?"`));
+								}
+							}
+						} else {
+							r.push(Spoken(slave, `"Are there any pregnant slaves I could, you know, spend time with?"`));
+						}
+						break;
+					default:
+						r.push(Spoken(slave, `"Can I serve you somehow?"`));
+				}
+			} else if (slave.energy > 95) {
+				r.push(Spoken(slave, `"Please fuck me. Please."`));
+			} else if (slave.attrKnown === 1 && slave.attrXX > 80) {
+				r.push(Spoken(slave, `"Can I hang around and get oral from the next slave in here?"`));
+			} else if (slave.attrKnown === 1 && slave.attrXY > 80) {
+				r.push(Spoken(slave, `"Can I hang around and suck the next dick in here?"`));
+			} else {
+				r.push(Spoken(slave, `"Can I serve you somehow?"`));
+			}
+		} else {
+			r.push(Spoken(slave, `"Can I serve you somehow?"`));
+		}
+	} // Closes fearful and below exempt
+	App.Events.addNode(el, r, "span");
+	return el;
+};
diff --git a/src/npc/interaction/fFeelings.tw b/src/npc/interaction/fFeelings.tw
deleted file mode 100644
index 7352a479c9291fd4572ba8d0f7e172677edeced7..0000000000000000000000000000000000000000
--- a/src/npc/interaction/fFeelings.tw
+++ /dev/null
@@ -1,1683 +0,0 @@
-:: FFeelings [nobr no-history]
-
-/* Slaves are expected to be either able to talk or to sign when entering this passage. */
-<<if !canTalk(getSlave($AS)) && !hasAnyArms(getSlave($AS))>>
-	<<= getSlave($AS).slaveName>> is unable to communicate and thus this place should have been unreachable. Please report this.
-<</if>>
-
-<<run Enunciate(getSlave($AS))>>
-<<run App.Utils.setLocalPronouns(getSlave($AS))>>
-<<set _lisping = 0>>
-<<if canTalk(getSlave($AS)) && SlaveStatsChecker.checkForLisp(getSlave($AS))>>
-	<<set _lisping = 1>>
-<</if>>
-
-/* TODO: clean up this passage - lots of repeating blocks */
-
-<<if (getSlave($AS).devotion < -50)>>
-	$He
-	<<if (getSlave($AS).trust >= -20)>>
-		<<if !canTalk(getSlave($AS))>>gestures<<elseif (_lisping == 1)>>lisps<<else>>declares<</if>> angrily that it's wrong to keep $him a slave, and that you should free $him.
-	<<elseif (getSlave($AS).trust >= -50)>>
-		<<if !canTalk(getSlave($AS))>>gestures<<elseif (_lisping == 1)>>lisps<<else>>mutters<</if>> hesitantly that it's wrong to keep $him a slave, and that you should free $him.
-	<<else>>
-		<<if !canTalk(getSlave($AS))>>gestures a perfunctory plea not to hurt $him.<<else>>mutters a perfunctory "Plea<<s>>e don't hurt me, <<if getSlave($AS).rudeTitle == 1>><<= PoliteRudeTitle(getSlave($AS))>><<else>><<Master>><</if>>."<</if>>
-	<</if>>
-
-<<elseif (getSlave($AS).devotion < -20)>>
-	$He
-	<<if !canTalk(getSlave($AS))>>gestures<<elseif (_lisping == 1)>>lisps<<else>>mutters<</if>>
-	<<if (getSlave($AS).trust >= -20)>>
-		hesitantly that $he does not like being a slave, and then <<if !canTalk(getSlave($AS))>>lets $his hand<<if hasBothArms(getSlave($AS))>>s<</if>> fall to $his sides<<else>>falls silent<</if>>.
-	<<elseif (getSlave($AS).trust >= -50)>>
-		fearfully that $he does not like being a slave, and then <<if !canTalk(getSlave($AS))>>lets $his hand<<if hasBothArms(getSlave($AS))>>s<</if>> fall to $his sides, shaking a little<<else>>falls silent, shaking a little<</if>>.
-	<<else>>
-		a perfunctory <<if !canTalk(getSlave($AS))>>plea not to hurt $him<<else>>"Plea<<s>>e don't hurt me, <<Master>>."<</if>>
-	<</if>>
-
-<<elseif (getSlave($AS).devotion <= 20)>>
-	$He
-	<<if !canTalk(getSlave($AS))>>gestures<<else>><<say>>s<</if>> <<if (getSlave($AS).trust >= -20)>>earnestly<<elseif (getSlave($AS).trust >= -50)>>fearfully<<else>>shakily<</if>>
-	that $he will do whatever you order $him to, since $he does not want to be
-	<<switch getSlave($AS).rules.punishment>>
-	<<case "confinement">>shut up in the dark, which is of course $his standard punishment.
-	<<case "whipping">>whipped, which is of course $his standard punishment.
-	<<case "chastity">>put in restrictive chastity, which is of course $his standard punishment.
-	<<default>>punished, not knowing what to expect when $he's bad.
-	<</switch>>
-	Once $he learns to accept slavery, $he will be better able to open up.
-
-<<else>>
-
-<<if (getSlave($AS).devotion <= 50)>>
-	<<if !canTalk(getSlave($AS))>>
-		$He gestures that you're $his <<= getWrittenTitle(getSlave($AS))>>, and $he will do $his best to obey you. $He continues to sign<<if getSlave($AS).accent == 3 && getSlave($AS).voice != 0>>, using gestures to supplant $his poor $language<</if>>:
-	<<else>>
-		"You're my <<Master>>, and I'll do my be<<s>>t to obey you," $he <<say>>s
-	<</if>>
-<<elseif (getSlave($AS).devotion <= 95)>>
-	<<set _slave = getSlave($AS)>>
-	<<setSpokenLocalPronouns _slave _slave>>
-	<<if !canTalk(getSlave($AS))>>
-		$He gestures that you're $his beloved <<Master>>. $He continues to sign<<if getSlave($AS).accent == 3>>, using gestures to supplant $his poor $language<</if>>:
-	<<else>>
-		"<<if (getSlave($AS).relationship == -3)>>I'm content with being your <<wife>>,<<else>>You're<</if>> my beloved <<Master>>, and you know what'<<s>> be<<s>>t for me," $he <<say>>s.
-	<</if>>
-<<else>>
-	<<if !canTalk(getSlave($AS))>>
-		$He makes a simple gesture, meaning "I love you." $He continues to sign<<if getSlave($AS).accent == 3>>, using gestures to supplant $his poor $language<</if>>:
-	<<else>>
-		"I love you," $he <<say>>s in $his <<if (getSlave($AS).voice == 1)>><<if (getSlave($AS).voiceImplant < 0)>>guttural<<else>>deep<</if>><<elseif (getSlave($AS).voice == 2)>>pretty<<else>><<if (getSlave($AS).voiceImplant > 0)>>high bimbo<<else>>girly<</if>><</if>> voice.
-	<</if>>
-<</if>>
-
-<<if getSlave($AS).trust < -50>>
-	"I'm terrified of you.
-<<elseif getSlave($AS).trust < -20>>
-	"You frighten me, <<s>>ometime<<s>>.
-<<elseif getSlave($AS).trust < 20>>
-	"I know you have total power over me.
-<<elseif getSlave($AS).trust < 50>>
-	"You know what'<<s>> be<<s>>t for me.
-<<elseif getSlave($AS).trust < 95>>
-	"I tru<<s>>t you to know what'<<s>> be<<s>>t for me.
-<<else>>
-	"I tru<<s>>t you completely.
-<</if>>
-
-<<if (getSlave($AS).rules.speech == "restrictive")>>
-	<<if (getSlave($AS).devotion > 20)>>
-		Thank you <<s>>o much for a chan<<c>>e to talk a little, <<Master>>. I under<<s>>tand why I must be <<s>>ilent, but it'<<s>> ni<<c>>e to get the chan<<c>>e.
-	<<else>>
-		Thank you <<s>>o much for a chan<<c>>e to talk a little, <<Master>>. It'<<s>> hard, never <<s>>peaking.
-	<</if>>
-<</if>>
-
-<<if getSlave($AS).devotion > 50 && getSlave($AS).health.condition < -20>>
-	I feel <<if getSlave($AS).health.condition < -50>>really <</if>><<s>>ick, <<Master>>.
-	<<if getSlave($AS).trust > 20>>
-		I wi<<sh>> you could give me <<s>>omething to ea<<s>>e the pain.
-	<</if>>
-<</if>>
-<<if getSlave($AS).devotion > 20 && getSlave($AS).devotion <= 90 && getSlave($AS).trust >= -20 && getSlave($AS).fetish != "pregnancy" && getSlave($AS).bellyPreg > (getSlave($AS).pregAdaptation * 2000)>>
-	<<if getSlave($AS).belly > (getSlave($AS).pregAdaptation * 4500)>>
-		<<Master>>, my body i<<s>> full...
-		<<if getSlave($AS).geneticQuirks.uterineHypersensitivity == 2>>
-			I can't fit anymore... <<S>>o than why doe<<s>> every near rupture feel <<s>>o fucking good?
-		<<elseif getSlave($AS).sexualFlaw == "self hating">>
-			I <<s>>urely couldn't even
-			<<if $PC.dick > 2>>
-				find room to fit your dick in me right now.
-			<<elseif $PC.dick == 0>>
-				find room to <<s>>tick that hulking <<s>>trap-on in me right now.
-			<<else>>
-				fit the <<s>>lighte<<s>>t amount more in<<s>>ide me right now; even you'll feel po<<s>>itively enormou<<s>> in me.
-			<</if>>
-			Maybe you <<sh>>ould ju<<s>>t <<sh>>ove me down and for<<c>>e it in? <<S>>end me right over the edge? Plea<<s>>e?
-		<<else>>
-			I'm ju<<s>>t going to e<<x>>plode at <<s>>ome point, aren't I?
-		<</if>>
-	<<elseif getSlave($AS).belly > (getSlave($AS).pregAdaptation * 3200)>>
-		My body feel<<s>> full, 
-		<<if getSlave($AS).geneticQuirks.uterineHypersensitivity == 2>>
-			like a balloon ready to e<<x>>plode into the bigge<<s>>t orga<<s>>m <<he>>'<<s>> ever had. Am I lo<<s>>ing my mind?
-		<<else>>
-			almost like I'm going to pop if I get any bigger. <<Master>>, am... am I going to be alright?
-		<</if>>
-	<<else>>
-		My body feel<<s>> tight, like really tight.
-		<<if getSlave($AS).geneticQuirks.uterineHypersensitivity == 2>>
-			And kind of good, like I'm could come at any moment.
-		<<else>>
-			I get that I'm <<s>>uper pregnant, but <<sh>>ould it hurt like thi<<s>>?
-		<</if>>
-	<</if>>
-<</if>>
-
-<<if (getSlave($AS).fetishKnown == 1)>>
-	<<if (getSlave($AS).energy > 95)>>
-		I love being your nympho <<s>>lut.
-	<<elseif (getSlave($AS).fetishStrength > 60)>>
-		<<switch getSlave($AS).fetish>>
-		<<case "submissive">>
-			I love it when you u<<s>>e me.
-		<<case "dom">>
-			I love fucking the other <<s>>lave<<s>>.
-		<<case "sadist">>
-			I love hurting the other <<s>>lave<<s>>.
-		<<case "masochist">>
-			I love it when you hurt me.
-		<<case "cumslut">>
-			I love <<if $PC.dick != 0>><<s>>ucking on your cock<<if $PC.vagina != -1>> and eating you out<</if>>.<<else>>eating you out.<</if>>
-		<<case "humiliation">>
-			I love it when you u<<s>>e me in public.
-		<<case "buttslut">>
-			I love it when you u<<s>>e my a<<ss>>.
-		<<case "pregnancy">>
-			<<if getSlave($AS).counter.births > 0>>
-				I love being your breeder.
-			<<elseif getSlave($AS).counter.birthsTotal > 0>>
-				I love being bred.
-			<<else>>
-				I can't wait to be bred.
-			<</if>>
-		<<case "boobs">>
-			I love it when you pinch my nipple<<s>>.
-		<<default>>
-			It'<<s>> boring of me, <<Master>>, but I really do love normal <<s>>e<<x>>.
-		<</switch>>
-	<</if>>
-<</if>>
-<<if (getSlave($AS).attrKnown == 1)>>
-	<<if (getSlave($AS).attrXX > 80)>>
-		I love fucking the other girl<<s>>.
-	<<elseif (getSlave($AS).attrXX > 60)>>
-		It'<<s>> ni<<c>>e, fucking the other girl<<s>>.
-	<</if>>
-	<<if (getSlave($AS).attrXY > 80 && $seeDicks > 0)>>
-		I love <<s>>pending time with <<s>>lave<<s>> with dick<<s>>, <<Master>>.
-	<<elseif (getSlave($AS).attrXY > 60 && $seeDicks > 0)>>
-		It'<<s>> ni<<c>>e, <<s>>pending time with <<s>>lave<<s>> with dick<<s>>, <<Master>>.
-	<</if>>
-<<else>>
-	I wi<<sh>> I under<<s>>tood my own <<s>>e<<x>>uality better.
-<</if>>
-
-My favorite part of my body i<<s>>
-<<if (getSlave($AS).fetishKnown == 1)>>
-	<<if (getSlave($AS).sexualFlaw == "neglectful") && (getSlave($AS).fetishStrength > 95)>>
-		unimportant, <<Master>>. What part of me do //you// like? N-not that I'm telling you that you need to like me! I'm ju<<s>>t <<s>>o happy when you're happy.
-	<<elseif (getSlave($AS).sexualFlaw == "malicious") && (getSlave($AS).fetishStrength > 95) && (getSlave($AS).muscles > 30)>>
-		my mu<<sc>>le<<s>>, I like how I can u<<s>>e them to for<<c>>e the <<s>>lutty bitche<<s>> around here to do what I want. The way they <<s>>queal when I fle<<x>> what I've got get<<s>> me hot every time.
-	<<elseif (getSlave($AS).sexualFlaw == "abusive") && (getSlave($AS).fetishStrength > 95) && (getSlave($AS).muscles > 30)>>
-		my mu<<sc>>le<<s>>. I like how I can u<<s>>e them to hurt the other <<s>>lave<<s>>, <<Master>>. The way they cry, their tear<<s>>, their blood. How long ha<<s>> it been <<s>>in<<c>>e I beat a bitch <<s>>en<<s>>le<<ss>>? I can't wait to work out <<s>>ome <<s>>tre<<ss>> on my ne<<x>>t toy.
-	<<elseif (getSlave($AS).sexualFlaw == "self hating") && (getSlave($AS).fetishStrength > 95)>>
-		my blood. It'<<s>> <<s>>o pretty and red, and there'<<s>> <<s>>o much of it when you and the other <<s>>lave<<s>> //really// lay into me. I'm <<s>>o fucking hot right now, thinking about the thing<<s>> you can do to my <<s>>lutty body.
-	<<elseif (getSlave($AS).sexualFlaw == "cum addict") && (getSlave($AS).fetishStrength > 95)>>
-		<<if getSlave($AS).lips > 40>>
-			my <<if getSlave($AS).lips > 70>>huge <</if>>lip<<s>>, I like how everyone e<<x>>pect<<s>> to fa<<c>>efuck me, and how my lip<<s>> wrap around their dick<<s>> to keep all that <<if canTaste(getSlave($AS))>>yummy<<else>>warm<</if>> cum in my belly. Oh! I like my belly, too, and that warm, <<s>>lo<<sh>>y feeling a<<s>> it'<<s>> packed full of baby jui<<c>>e. It'<<s>> <<s>>o — I'm <<s>>orry, <<Master>>. I think my mouth i<<s>> watering. Plea<<s>>e give me a moment to collect my<<s>>elf.
-		<<elseif $PC.dick != 0>>
-			my tummy<<if (getSlave($AS).vagina > -1)>> — and my womb<</if>>! The <<s>>lo<<sh>>y feeling when I'm all packed full of cum in both end<<s>> get<<s>> me <<s>>o incredibly horny. <<S>>ometime<<s>> I wonder what it would be like if I were ju<<s>>t a puffed up cum-balloon of a $woman, helple<<ss>> and filled with cum, over, and over, and — I'm <<s>>orry, <<Master>>. I'm being weird again, aren't I?
-		<<else>>
-			my mouth, I love how it feel<<s>> to — to eat pu<<ss>>y, <<Master>>. I love eating out your pu<<ss>>y. E<<s>>pe<<c>>ially when it'<<s>> been filled up with <<s>>ome <<if canTaste(getSlave($AS))>>yummy<<else>>warm<</if>> cum. Maybe you could let me eat cum out of your pu<<ss>>y <<s>>oon?
-		<</if>>
-	<<elseif (getSlave($AS).sexualFlaw == "attention whore") && (getSlave($AS).fetishStrength > 95)>>
-		my whole <<= getSlave($AS).skin>> body, and whatever part of me i<<s>> be<<s>>t u<<s>>ed to make me look like a total <<s>>lut.
-	<<elseif (getSlave($AS).sexualFlaw == "anal addict") && (getSlave($AS).fetishStrength > 95)>>
-		<<if (getSlave($AS).anus > 3)>>
-			my gaping butthole. It'<<s>> //<<s>>o// fucked out and beautiful. I can barely remember what anal pain feel<<s>> like, but thinking about the <<s>>ort<<s>> of thing<<s>> we can put in me, now, get<<s>> me <<s>>o hot.
-		<<elseif (getSlave($AS).anus > 2)>>
-			my a<<ss>>pu<<ss>>y — I can take anything! It'<<s>> //<<s>>o// much better than my <<if getSlave($AS).dick > 0>>cock<<else>>pu<<ss>>y<</if>>. It bring<<s>> me <<s>>o much plea<<s>>ure... and pain... and... I'm <<s>>orry, <<Master>> what were we talking about again? Oh! Right.
-		<<elseif (getSlave($AS).anus > 1)>>
-			my a<<ss>>hole, I like how I can take anyone'<<s>> cock. It'<<s>> //<<s>>o// much better than my <<if getSlave($AS).dick > 0>>cock<<else>>pu<<ss>>y<</if>>. It bring<<s>> me <<s>>o much plea<<s>>ure... and pain... and... I'm <<s>>orry, <<Master>> what were we talking about again? Oh! Right.
-		<<elseif (getSlave($AS).anus == 1)>>
-			my tight little anu<<s>>, I like feeling it <<s>>tretch to take a fuck. It'<<s>> //<<s>>o// much better than my <<if getSlave($AS).dick > 0>>cock<<else>>pu<<ss>>y<</if>>. It bring<<s>> me <<s>>o much plea<<s>>ure... and pain... and... I'm <<s>>orry, <<Master>> what were we talking about again? Oh! Right.
-		<<elseif (getSlave($AS).anus == 0)>>
-			my little virgin butthole. I can't wait for the fir<<s>>t time you fuck me in the a<<ss>> — I wonder if it'll hurt.
-		<</if>>
-	<<elseif (getSlave($AS).sexualFlaw == "breeder") && (getSlave($AS).fetishStrength > 95)>>
-		<<if (getSlave($AS).bellyPreg >= 600000)>>
-			... Um... our impo<<ss>>ibly pregnant belly, of cour<<s>>e. We love being <<s>>o packed full with life that we're more baby than $woman, now. And the way our belly keep<<s>> our <<s>>lutty preggo bodie<<s>> <<s>>tuck to the floor! We're <<s>>o hot ju<<s>>t thinking about it.
-			<<if getSlave($AS).pregSource == -1>>
-				Thank you for breeding u<<s>>, <<Master>>! Our womb i<<s>> your<<s>> to impregnate.
-			<</if>>
-			What? Oh, I'm thinking of my<<s>>elf and my <<if (getSlave($AS).fetus_count >= 2) || (getSlave($AS).broodmother >= 1)>>babie<<s>><<else>>baby<</if>> a<<s>> one per<<s>>on again, aren't I? I'm <<s>>orry, <<Master>>. It'<<s>> ju<<s>>t <<s>>o hard to remember when my womb i<<s>> <<s>>o much more than I am in every way.
-		<<elseif (getSlave($AS).bellyPreg >= 300000)>>
-			... Um... our ma<<ss>>ive pregnant belly, of cour<<s>>e. We love feeling our womb <<s>>well with life. It'<<s>> <<s>>o hard to move now! We're <<s>>o hot ju<<s>>t thinking about it.
-			<<if getSlave($AS).pregSource == -1>>
-				Thank you for breeding u<<s>>, <<Master>>! Our womb i<<s>> your<<s>> to impregnate.
-			<</if>>
-			What? Oh, I'm thinking of my<<s>>elf and my <<if (getSlave($AS).fetus_count >= 2) || (getSlave($AS).broodmother >= 1)>>babie<<s>><<else>>baby<</if>> a<<s>> one per<<s>>on again, aren't I? I'm <<s>>orry, <<Master>>. It'<<s>> ju<<s>>t <<s>>o hard to remember when my womb i<<s>> <<s>>o much more than I am in every way.
-		<<elseif (getSlave($AS).bellyPreg >= 15000)>>
-			... Um... our bulging pregnant belly, of cour<<s>>e. We love feeling our womb <<s>>well with life.
-			<<if getSlave($AS).pregSource == -1>>
-				Thank you for breeding u<<s>>, <<Master>>! Our womb i<<s>> your<<s>> to impregnate.
-			<</if>>
-			What? Oh, I'm thinking of my<<s>>elf and my <<if (getSlave($AS).fetus_count >= 2) || (getSlave($AS).broodmother >= 1)>>babie<<s>><<else>>baby<</if>> a<<s>> one per<<s>>on again, aren't I? I'm <<s>>orry, <<Master>>. It'<<s>> ju<<s>>t <<s>>o hard to remember when my womb i<<s>> <<s>>o much more than I am in every way.
-		<<elseif (getSlave($AS).bellyPreg >= 100)>>
-			... Um... our pregnant belly, of cour<<s>>e.
-			<<if getSlave($AS).pregSource == -1>>
-				Thank you for breeding u<<s>>, <<Master>>! Our womb i<<s>> your<<s>> to impregnate.
-			<</if>>
-			What? Oh, I'm thinking of my<<s>>elf and my <<if (getSlave($AS).fetus_count >= 2)>>babie<<s>><<else>>baby<</if>> a<<s>> one per<<s>>on again, aren't I? I'm <<s>>orry, <<Master>>. It'<<s>> ju<<s>>t <<s>>o hard to remember when my womb i<<s>> <<s>>o much more than I am in every way.
-		<<elseif (getSlave($AS).pregKnown == 1)>>
-			my belly, now that it ha<<s>> <<if (getSlave($AS).fetus_count >= 2)>>the babie<<s>><<else>>a baby<</if>> growing in it. Ju<<s>>t thinking about <<s>>welling up bigger and bigger ha<<s>> me quivering. I wi<<sh>> we could keep filling me with babie<<s>> forever.
-			<<if getSlave($AS).pregSource == -1>>
-				Thank you for impregnating me, <<Master>>!
-			<</if>>
-		<<elseif (getSlave($AS).dick > 0) && (getSlave($AS).balls > 4)>>
-			my big breeder ball<<s>>. I ju<<s>>t want to fill other <<s>>lave<<s>> with babie<<s>> forever.
-		<<elseif (getSlave($AS).dick > 0) && (getSlave($AS).balls > 0)>>
-			my cock. I ju<<s>>t want to fill other <<s>>lave<<s>> with babie<<s>> forever.
-		<<elseif (getSlave($AS).weight > 95)>>
-			my big tummy. Think of how many babie<<s>> we could <<s>>tretch it over! No, really. Plea<<s>>e, <<Master>>. Think about it.
-		<<elseif (getSlave($AS).weight > 10)>>
-			my plu<<sh>> tummy. Think of how many babie<<s>> we could <<s>>tretch it over! No, really. Plea<<s>>e, <<Master>>. Think about it.
-		<<elseif (getSlave($AS).counter.birthsTotal > 10) && isFertile(getSlave($AS))>>
-			my womb. It'<<s>> made <<s>>o many babie<<s>>. It feel<<s>> <<s>>o <<s>>ad and empty right now. I really wi<<sh>> we could ju<<s>>t keep it <<s>>tuffed full of babie<<s>> forever.
-		<<elseif isFertile(getSlave($AS))>>
-			my womb. It'<<s>> ready, <<Master>>. It feel<<s>> <<s>>o <<s>>ad and empty right now. I really wi<<sh>> we could ju<<s>>t keep it <<s>>tuffed full of babie<<s>> forever.
-		<<else>>
-			my tight tummy, I like to imagine how it would <<s>>well if I got pregnant. I... I really wi<<sh>> we could put a baby in me, <<Master>>.
-		<</if>>
-		<<if getSlave($AS).geneticQuirks.superfetation == 2 && getSlave($AS).womb.length > 0 && getSlave($AS).pregKnown == 1>>
-			<<if (getSlave($AS).intelligence + getSlave($AS).intelligenceImplant > 15)>>
-				<<if (getSlave($AS).belly < (getSlave($AS).pregAdaptation * 1750))>>
-					<<if $PC.dick != 0>>
-						You know, <<Master>>, I think I could fit another baby or two in here if you wanted to take advantage of my condition...
-					<<else>>
-						You know, I think I could fit a few more babie<<s>> in here if you wanted me to...
-					<</if>>
-				<<else>>
-					Oh <<Master>>, I feel it'<<s>> that awful time when I have to let an egg go to wa<<s>>te for the <<s>>ake of the re<<s>>t of u<<s>>. I wi<<sh>> it didn't have to be thi<<s>> way and I could ju<<s>>t keep <<s>>welling larger and larger with children.
-				<</if>>
-			<<else>>
-				<<if $PC.dick != 0>>
-					You know, <<Master>>, I think I can feel that tingle deep in<<s>>ide me... You know, the one that get<<s>> me even more pregnant... Don't you think I need another baby in<<s>>ide me?
-				<<else>>
-					I think it'<<s>> time, actually... Oh ye<<s>>, it'<<s>> <<s>>urely time to u<<s>>e my gift and make even more babie<<s>> in me.
-				<</if>>
-			<</if>>
-		<</if>>
-	<<elseif (getSlave($AS).sexualFlaw == "breast growth") && (getSlave($AS).fetishStrength > 95)>>
-		<<if (getSlave($AS).boobs > 10000)>>
-			my colo<<ss>>al boobie<<s>>, <<Master>>. <<S>>ometime<<s>>, I think I //am// my boobie<<s>>. I mean, they're <<s>>o much more me than the re<<s>>t of 'me,' right? Literally. They're bigger than the re<<s>>t of my body and the only thing that would make me happier i<<s>> if they were even //bigger.//
-		<<elseif (getSlave($AS).boobs > 2000)>>
-			my huge boobie<<s>>, <<Master>>. <<S>>ometime<<s>>, I think I //am// my boobie<<s>>. I mean, they're <<s>>o much more me than the re<<s>>t of 'me,' right? <<S>>o big, and <<s>>o beautiful, and <<s>>o heavy... I'm <<s>>orry, <<Master>>, what were we talking about? Oh, ye<<s>>!
-		<<elseif (getSlave($AS).nipples == "fuckable")>>
-			my nipple pu<<ss>>ie<<s>> of cour<<s>>e. It'<<s>> <<s>>o hot when they get abu<<s>>ed and I'm alway<<s>> trying to think of new way<<s>> to u<<s>>e them to plea<<s>>ure you.
-		<<elseif (getSlave($AS).lactation > 0)>>
-			my milky nipple<<s>> of cour<<s>>e. E<<s>>pe<<c>>ially when you don't touch them for awhile and my brea<<s>>t<<s>> bloat up ni<<c>>e and big.
-		<<elseif (getSlave($AS).nipples == "huge" || getSlave($AS).nipples == "puffy")>>
-			my big nipple<<s>>, it'<<s>> like having clit<<s>> on my che<<s>>t. My only wi<<sh>> i<<s>> that they were even bigger.
-		<<elseif (getSlave($AS).boobs > 700)>>
-			my big boob<<s>>. I like how they feel wrapped around a dick, and they are the <<c>>enter of my world. <<S>>ometime<<s>>, I think I //am// my boobie<<s>>. I mean, they're <<s>>o much more me than the re<<s>>t of 'me,' right?
-		<<else>>
-			my boob<<s>>, of cour<<s>>e. They're <<s>>o beautiful, and the <<c>>enter of my world.
-		<</if>>
-	<<elseif (getSlave($AS).energy > 95)>>
-		- i<<s>> — I can't de<<c>>ide!
-		<<if getSlave($AS).vagina > -1>>
-			I love my pu<<ss>>y of cour<<s>>e.
-			<<if getSlave($AS).clit > 0>>Having another <<s>>lave <<s>>uck my big clit i<<s>> incredible.<</if>>
-			But
-		<<else>>
-			Of cour<<s>>e
-		<</if>>
-		<<if getSlave($AS).anus > 1>>
-			taking big dick<<s>> up my a<<ss>> i<<s>> lot<<s>> of fun.
-		<<elseif getSlave($AS).anus > 0>>
-			taking cock in my tight a<<ss>> i<<s>> lot<<s>> of fun.
-		<<else>>
-			I love my little virgin butthole, but I can't wait to get a<<ss>>raped for the fir<<s>>t time.
-		<</if>>
-		<<if getSlave($AS).dick > 3>>
-			My big cock <<s>>wing<<s>> around when I get <<s>>odomi<<z>>ed from behind, it'<<s>> great.
-		<<elseif getSlave($AS).dick > 1>>
-			My dick flop<<s>> around when I get <<s>>odomi<<z>>ed from behind, it'<<s>> great.
-		<<elseif getSlave($AS).dick > 0>>
-			My tiny little bitch dick i<<s>> good for encouraging people to mole<<s>>t my butthole.
-		<</if>>
-		<<if getSlave($AS).nipples == "fuckable">>
-			I love my fuckable nipple<<s>>, it really feel<<s>> like I've got a pair of pu<<ss>>ie<<s>> on my che<<s>>t.
-		<<elseif (getSlave($AS).nipples == "huge" || getSlave($AS).nipples == "puffy")>>
-			I love my big nipple<<s>>, it'<<s>> like having clit<<s>> on my che<<s>>t.
-		<</if>>
-		<<if (getSlave($AS).lactation > 0)>>Being able to nur<<s>>e i<<s>> really <<s>>e<<x>>y, I alway<<s>> want to fuck right after. Or during.<</if>>
-		<<if (getSlave($AS).boobs > 2000)>>
-			My huge boob<<s>> are great, they're like an adverti<<s>>ement I want to fuck.
-		<<elseif (getSlave($AS).boobs > 700)>>
-			I like <<sh>>owing off my big boob<<s>>.
-		<</if>>
-		<<if (getSlave($AS).lips > 40)>>
-			Can't forget my dick <<s>>ucking lip<<s>>, I don't know what I'd do without them.
-		<<else>>
-			Can't forget my lip<<s>> and tongue, getting people off with them i<<s>> fun too.
-		<</if>>
-	<<elseif (getSlave($AS).fetish == "submissive") && (getSlave($AS).fetishStrength > 60)>>
-		my bare <<= getSlave($AS).skin>> <<s>>kin, I like how it feel<<s>> when you look me all over before you take me.
-	<<elseif (getSlave($AS).fetish == "dom") && (getSlave($AS).fetishStrength > 60) && (getSlave($AS).muscles > 30)>>
-		my mu<<sc>>le<<s>>, I like how it feel<<s>> to be <<s>>trong, for<<c>>ing another <<s>>lave.
-	<<elseif (getSlave($AS).fetish == "sadist") && (getSlave($AS).fetishStrength > 60) && (getSlave($AS).muscles > 30)>>
-		my mu<<sc>>le<<s>>, I like how it feel<<s>> to be <<s>>trong, for<<c>>ing another <<s>>lave.
-	<<elseif (getSlave($AS).fetish == "masochist") && (getSlave($AS).fetishStrength > 60)>>
-		my <<= getSlave($AS).skin>> <<s>>kin, I like how it looks when it brui<<s>>e<<s>>.
-	<<elseif (getSlave($AS).fetish == "cumslut") && (getSlave($AS).fetishStrength > 60)>>
-		<<if getSlave($AS).lips > 40>>
-			my <<if getSlave($AS).lips > 70>>huge <</if>>lip<<s>>, I like how everyone e<<x>>pect<<s>> to fa<<c>>efuck me.
-		<<elseif $PC.dick != 0>>
-			my mouth, I love how it feel<<s>> to <<s>>uck dicks and drink all the cum.
-		<<else>>
-			my mouth, I love how it feel<<s>> to eat pu<<ss>>y.
-		<</if>>
-	<<elseif (getSlave($AS).fetish == "humiliation") && (getSlave($AS).fetishStrength > 60)>>
-		my whole <<= getSlave($AS).skin>> body, I like how it feel<<s>> when everyone <<s>>tare<<s>> at me getting fucked.
-	<<elseif (getSlave($AS).fetish == "buttslut") && (getSlave($AS).fetishStrength > 60)>>
-		<<if (getSlave($AS).anus > 3)>>
-			my gaping butthole, though I'm <<s>>ad it'<<s>> <<s>>o fucked out. I can barely remember what anal pain feel<<s>> like.
-		<<elseif (getSlave($AS).anus > 2)>>
-			my a<<ss>>pu<<ss>>y — I can take anything! It'<<s>> ba<<s>>ically repla<<c>>ed my <<if getSlave($AS).dick > 0>>cock<<else>>pu<<ss>>y<</if>> a<<s>> my main <<s>>e<<x>> organ.
-		<<elseif (getSlave($AS).anus > 1)>>
-			my a<<ss>>hole, I like how I can take anyone'<<s>> cock. It'<<s>> ba<<s>>ically repla<<c>>ed my <<if getSlave($AS).dick > 0>>cock<<else>>pu<<ss>>y<</if>> a<<s>> my main <<s>>e<<x>> organ.
-		<<else>>
-			my tight little anu<<s>>, I like feeling it <<s>>tretch to take a fuck. It'<<s>> ba<<s>>ically repla<<c>>ed my <<if getSlave($AS).dick > 0>>cock<<else>>pu<<ss>>y<</if>> a<<s>> my main <<s>>e<<x>> organ.
-		<</if>>
-	<<elseif (getSlave($AS).fetish == "pregnancy") && (getSlave($AS).fetishStrength > 60)>>
-		<<if (getSlave($AS).bellyPreg >= 600000)>>
-			my hyperma<<ss>>ive pregnant belly, of cour<<s>>e. I love being debilitatingly filled with life.
-			<<if getSlave($AS).pregSource == -1>>
-				Thank you for breeding me, <<Master>>! My womb i<<s>> your<<s>> to impregnate. I can't think of anything better than getting bred by you forever.
-			<</if>>
-		<<elseif (getSlave($AS).bellyPreg >= 300000)>>
-			my ma<<ss>>ive pregnant belly, of cour<<s>>e. I love being <<s>>o packed full of life.
-			<<if getSlave($AS).pregSource == -1>>
-				Thank you for breeding me, <<Master>>! My womb i<<s>> your<<s>> to impregnate. I can't think of anything better than getting bred by you forever.
-			<</if>>
-		<<elseif (getSlave($AS).bellyPreg >= 15000)>>
-			my bulging pregnant belly, of cour<<s>>e. I love feeling my womb <<s>>well with life.
-			<<if getSlave($AS).pregSource == -1>>
-				Thank you for breeding me, <<Master>>! My womb i<<s>> your<<s>> to impregnate. I can't think of anything better than getting bred by you forever.
-			<</if>>
-		<<elseif (getSlave($AS).bellyPreg >= 100)>>
-			my pregnant belly, of cour<<s>>e.
-			<<if getSlave($AS).pregSource == -1>>
-				Thank you for breeding me, <<Master>>! Plea<<s>>e u<<s>>e me to make babie<<s>> whenever you want.
-			<</if>>
-		<<elseif (getSlave($AS).pregKnown == 1)>>
-			my belly, now that it ha<<s>> a baby growing in it. I can't wait for it to <<s>>tart <<sh>>owing.
-			<<if getSlave($AS).pregSource == -1>>
-				Thank you for impregnating me, <<Master>>!
-			<</if>>
-		<<elseif (getSlave($AS).dick > 0) && (getSlave($AS).balls > 4)>>
-			my big breeder ball<<s>>, I imagine knocking another <<s>>lave up all the time.
-		<<elseif (getSlave($AS).dick > 0) && (getSlave($AS).balls > 0)>>
-			my cock, I imagine knocking another <<s>>lave up all the time.
-		<<elseif (getSlave($AS).weight > 95)>>
-			my big tummy, I can imagine my<<s>>elf pregnant.
-		<<elseif (getSlave($AS).weight > 10)>>
-			my plu<<sh>> tummy, I can imagine my<<s>>elf pregnant.
-		<<elseif (getSlave($AS).counter.birthsTotal > 10) && isFertile(getSlave($AS))>>
-			my womb, it'<<s>> made <<s>>o many babie<<s>> and I can't wait to make more.
-		<<elseif isFertile(getSlave($AS))>>
-			my fertile pu<<ss>>y, I want to get filled with cum <<s>>o badly.
-		<<else>>
-			my tight tummy, I like to imagine how it would <<s>>well if I got pregnant.
-		<</if>>
-	<<elseif (getSlave($AS).fetish == "boobs") && (getSlave($AS).fetishStrength > 60)>>
-		<<if (getSlave($AS).boobs > 2000)>>
-			my huge tit<<s>>, I like how they're <<s>>o big they're the <<c>>enter of attention.
-		<<elseif (getSlave($AS).nipples == "fuckable")>>
-			my nipple pu<<ss>>ie<<s>> of cour<<s>>e.
-		<<elseif (getSlave($AS).lactation > 0)>>
-			my milky nipple<<s>> of cour<<s>>e.
-		<<elseif (getSlave($AS).nipples == "huge" || getSlave($AS).nipples == "puffy")>>
-			my big nipple<<s>>, it'<<s>> like having clit<<s>> on my che<<s>>t.
-		<<elseif (getSlave($AS).boobs > 700)>>
-			my big boob<<s>>, I like how they feel wrapped around a dick.
-		<<else>>
-			my boob<<s>>, of cour<<s>>e.
-		<</if>>
-	<<elseif (getSlave($AS).attrKnown == 1) && (getSlave($AS).attrXX > 80)>>
-		<<if (getSlave($AS).lips > 70)>>
-			my huge lip<<s>>, I like how the other girl<<s>> will do anything for oral from me.
-		<<elseif (getSlave($AS).dick > 1) && (getSlave($AS).balls > 0)>>
-			my cock; I <<s>>till do like <<s>>laying pu<<ss>>y.
-		<<elseif (getSlave($AS).lips > 40)>>
-			my ki<<ss>>y lip<<s>>, I like how it feel<<s>> to make out with the other girl<<s>>.
-		<<else>>
-			my lip<<s>>, I gue<<ss>>. They're the be<<s>>t way I have of getting girl<<s>> to like me.
-		<</if>>
-	<<elseif (getSlave($AS).attrKnown == 1) && (getSlave($AS).attrXY > 80)>>
-		<<if (getSlave($AS).lips > 70)>>
-			my huge lip<<s>>, I like how anyone with a dick want<<s>> oral from me.
-		<<elseif (getSlave($AS).dick > 1) && (getSlave($AS).balls > 0)>>
-			my cock. It'<<s>> fun having <<s>>e<<x>> with two dick<<s>> involved!
-		<<elseif (getSlave($AS).lips > 40)>>
-			my ki<<ss>>y lip<<s>>, I like how anyone with a dick <<s>>ee<<s>> them and want<<s>> to fuck them.
-		<<elseif getSlave($AS).vagina > -1>>
-			my pu<<ss>>y, I love getting fucked by <<s>>trong cock<<s>>.
-		<<else>>
-			my butt, I gue<<ss>>. It'<<s>> the be<<s>>t way I have of getting boy<<s>> to like me.
-		<</if>>
-	<<else>>
-		my fa<<c>>e, <<if (getSlave($AS).face > 10)>>it'<<s>> ni<<c>>e to be pretty<<else>>I gue<<ss>><</if>>.
-	<</if>>
-<<else>>
-	my fa<<c>>e, <<if (getSlave($AS).face > 10)>>it'<<s>> ni<<c>>e to be pretty<<else>>I gue<<ss>><</if>>.
-<</if>>
-
-<<if getSlave($AS).pregSource == -9 && getSlave($AS).bellyPreg >= 5000 && getSlave($AS).devotion > 0>>
-	My little <<S>>i<<s>>ter i<<s>> getting big; do you think <<sh>>e'll be a good little futa like me <<s>>omeday?
-<</if>>
-
-<<if getSlave($AS).need>>
-	<<if hasAnyArms(getSlave($AS))>>
-		<<if _lisping == 0>>
-			<<set _Amp = "touch myself,">>
-		<<else>>
-			<<set _Amp = "touch mythelf,">>
-		<</if>>
-	<<else>>
-		<<if _lisping == 0>>
-			<<set _Amp = "rub myself against stuff,">>
-		<<else>>
-			<<set _Amp = "rub mythelf againtht thtuff,">>
-		<</if>>
-	<</if>>
-	<<if (getSlave($AS).rules.release.masturbation == 1)>>
-		Thank you for letting me
-		<<if (getSlave($AS).fetishKnown == 1)>>
-			<<if (getSlave($AS).energy > 95) && (!canSee(getSlave($AS)))>>
-				_Amp <<Master>>. It'<<s>> a good thing I can't get any more blind from it.
-			<<elseif (getSlave($AS).energy > 95)>>
-				_Amp <<Master>>. It'<<s>> a good thing I can't actually go blind from it.
-			<<elseif (getSlave($AS).fetish == "humiliation") && (getSlave($AS).fetishStrength > 60)>>
-				_Amp <<Master>>. I love doing it where people can <<s>>ee me.
-			<<elseif (getSlave($AS).fetish == "sadist") && (getSlave($AS).fetishStrength > 60)>>
-				_Amp <<Master>>. I try to be nearby when a bitch get<<s>> puni<<sh>>ed <<s>>o I can ma<<s>>turbate to it.
-			<<elseif (getSlave($AS).fetish == "buttslut") && (getSlave($AS).fetishStrength > 60)>>
-				fuck my own a<<ss>>hole, <<Master>>.
-			<<elseif (getSlave($AS).fetish == "boobs") && (getSlave($AS).fetishStrength > 60)>>
-				pamper my own brea<<s>>t<<s>>, <<Master>>.
-			<<elseif (getSlave($AS).fetish == "pregnancy") && (getSlave($AS).fetishStrength > 60)>>
-				_Amp <<Master>>.
-				<<if (getSlave($AS).bellyPreg >= 5000)>>
-					I love feeling my big pregnant belly a<<s>> I ma<<s>>turbate to it.
-				<<elseif (getSlave($AS).dick > 1) && (getSlave($AS).balls > 0)>>
-					I love picturing my cock getting all the hot girl<<s>> pregnant.
-				<<else>>
-					I love imagining how I'd look with a tummy <<s>>wollen with babie<<s>>.
-				<</if>>
-			<<elseif (getSlave($AS).fetish == "cumslut") && (getSlave($AS).fetishStrength > 60)>>
-				_Amp <<Master>>.
-				<<if (getSlave($AS).dick > 0) && (getSlave($AS).balls > 0)>>
-					Being able to drink my own cum i<<s>> really fun too.
-				<<elseif getSlave($AS).dietCum == 1 || getSlave($AS).dietCum == 2 >>
-					I love having cum in my food, being able to ma<<s>>turbate right after eating cum i<<s>> <<s>>o <<s>>ati<<s>>fying.
-				<</if>>
-			<<elseif (getSlave($AS).attrKnown == 1) && (getSlave($AS).attrXX > 80) && (!canSee(getSlave($AS)))>>
-				_Amp <<Master>>. With all the<<s>>e hot girl<<s>> around, it'<<s>> a good thing I can't get any more blind from it.
-			<<elseif (getSlave($AS).attrKnown == 1) && (getSlave($AS).attrXY > 80) && (!canSee(getSlave($AS)))>>
-				_Amp <<Master>>. With all the<<s>>e hot cock<<s>> around, it'<<s>> a good thing I can't get any more blind from it.
-			<<elseif (getSlave($AS).attrKnown == 1) && (getSlave($AS).attrXX > 80)>>
-				_Amp <<Master>>. With all the<<s>>e hot girl<<s>> around, it'<<s>> a good thing I can't actually go blind from it.
-			<<elseif (getSlave($AS).attrKnown == 1) && (getSlave($AS).attrXY > 80)>>
-				_Amp <<Master>>. With all the<<s>>e hot cock<<s>> around, it'<<s>> a good thing I can't actually go blind from it.
-			<<else>>
-				_Amp <<Master>>.
-			<</if>>
-		<<else>>
-			_Amp <<Master>>.
-		<</if>>
-	<<elseif (getSlave($AS).rules.release.slaves == 1)>>
-		Thank you for letting
-		<<if (getSlave($AS).fetishKnown == 1)>>
-			<<if (getSlave($AS).energy > 95)>>
-				me fuck everyone,
-			<<elseif (getSlave($AS).fetish == "humiliation") && (getSlave($AS).fetishStrength > 60)>>
-				the other <<s>>lave<<s>> fuck me, I love doing it in the dormitory where they can all <<s>>ee me.
-			<<elseif (getSlave($AS).fetish == "sadist") && (getSlave($AS).fetishStrength > 60)>>
-				me abu<<s>>e the other <<s>>lave<<s>>,
-			<<elseif (getSlave($AS).fetish == "buttslut") && (getSlave($AS).fetishStrength > 60)>>
-				the other <<s>>lave<<s>> fuck my butthole,
-			<<elseif (getSlave($AS).fetish == "boobs") && (getSlave($AS).fetishStrength > 60)>>
-				the other <<s>>lave<<s>> play with my boob<<s>>,
-			<<elseif (getSlave($AS).fetish == "pregnancy") && (getSlave($AS).fetishStrength > 60)>>
-				<<if (getSlave($AS).bellyPreg >= 5000)>>
-					the other <<s>>lave<<s>> fuck me, being pregnant and getting fucked i<<s>> amazing,
-				<<elseif (getSlave($AS).dick > 1) && (getSlave($AS).balls > 0)>>
-					me fuck other <<s>>lave<<s>>, I cum <<s>>o hard whenever I imagine filling them with babie<<s>>,
-				<<else>>
-					the other <<s>>lave<<s>> fuck me, I love imagining how I'd look with a tummy <<s>>wollen with babie<<s>>,
-				<</if>>
-			<<elseif (getSlave($AS).fetish == "cumslut") && (getSlave($AS).fetishStrength > 60)>>
-				other <<s>>lave<<s>> u<<s>>e my mouth to cum.
-				<<if (getSlave($AS).dick > 0) && (getSlave($AS).balls > 0)>>
-					Being able to drink my own cum i<<s>> really fun too,
-				<<elseif getSlave($AS).dietCum == 1 || getSlave($AS).dietCum == 2 >>
-					I love having cum in my food, and <<s>>ometime<<s>> I get an e<<x>>tra load on top from a friend,
-				<</if>>
-			<<elseif (getSlave($AS).attrKnown == 1) && (getSlave($AS).attrXX > 80)>>
-				me bone the ladie<<s>>,
-			<<else>>
-				me get off with the other girl<<s>>,
-			<</if>>
-		<<else>>
-			me get off with the other girl<<s>>,
-		<</if>>
-		<<Master>>.
-	<<elseif (App.Utils.hasFamilySex(getSlave($AS)))>>
-		Thank you for letting
-		<<if (getSlave($AS).fetishKnown == 1)>>
-			<<if (getSlave($AS).energy > 95)>>
-				me fuck my family,
-			<<elseif (getSlave($AS).fetish == "humiliation") && (getSlave($AS).fetishStrength > 60)>>
-				my family fuck me, I love doing it in the dormitory where everyone can <<s>>ee us.
-			<<elseif (getSlave($AS).fetish == "sadist") && (getSlave($AS).fetishStrength > 60)>>
-				me abu<<s>>e my family,
-			<<elseif (getSlave($AS).fetish == "buttslut") && (getSlave($AS).fetishStrength > 60)>>
-				my family fuck my butthole,
-			<<elseif (getSlave($AS).fetish == "boobs") && (getSlave($AS).fetishStrength > 60)>>
-				my family play with my boob<<s>>,
-			<<elseif (getSlave($AS).fetish == "pregnancy") && (getSlave($AS).fetishStrength > 60)>>
-				<<if (getSlave($AS).bellyPreg >= 5000)>>
-					my family fuck me, being pregnant and getting fucked i<<s>> amazing,
-				<<elseif (getSlave($AS).dick > 1) && (getSlave($AS).balls > 0)>>
-					me fuck my family, I cum <<s>>o hard whenever I imagine filling them with babie<<s>>,
-				<<else>>
-					my family fuck me, I love imagining how I'd look with a tummy <<s>>wollen with babie<<s>>,
-				<</if>>
-			<<elseif (getSlave($AS).fetish == "cumslut") && (getSlave($AS).fetishStrength > 60)>>
-				my family u<<s>>e my mouth to cum.
-				<<if (getSlave($AS).dick > 0) && (getSlave($AS).balls > 0)>>
-					Being able to drink my own cum i<<s>> really fun too,
-				<<elseif getSlave($AS).dietCum == 1 || getSlave($AS).dietCum == 2 >>
-					I love having cum in my food, and <<s>>ometime<<s>> I get an e<<x>>tra load on top from a relative,
-				<</if>>
-			<<elseif (getSlave($AS).attrKnown == 1) && (getSlave($AS).attrXX > 80)>>
-				me bone the ladie<<s>> in my family,
-			<<else>>
-				me get off with the other girl<<s>> in my family,
-			<</if>>
-		<<else>>
-			me get off with the other girl<<s>> in my family,
-		<</if>>
-		<<Master>>.
-	<<else>>
-		<<if (getSlave($AS).fetishKnown == 1)>>
-			<<if (getSlave($AS).energy > 95)>>
-				I feel like I'm going crazy, <<Master>>, I'm <<s>>o horny.
-			<<elseif (getSlave($AS).fetishStrength > 60)>>
-				<<switch getSlave($AS).fetish>>
-				<<case "submissive">>
-					I'm <<s>>o horny, <<Master>>. I can't <<s>>top thinking about you holding me down and fucking me.
-				<<case "masochist">>
-					I'm <<s>>o horny, <<Master>>. I can't <<s>>top thinking about you <<s>>panking my worthle<<ss>> bottom.
-				<<case "humiliation">>
-					I'm <<s>>o horny, <<Master>>. I can't <<s>>top thinking about everyone <<s>>taring at my lewd body.
-				<<case "dom">>
-					I'm <<s>>o horny, <<Master>>. I can't <<s>>top thinking about the other <<s>>lave<<s>>, how it would feel to fuck them.
-				<<case "sadist">>
-					I'm <<s>>o horny, <<Master>>. I can't <<s>>top thinking about the other <<s>>lave<<s>>, how it would feel to hurt them.
-				<<case "cumslut">>
-					I'm <<s>>o horny, <<Master>>. I can't <<s>>top <<s>>taring at <<if $PC.dick != 0>>cock<<s>> and imagining them down my throat, cumming and cumming<<else>>pu<<ss>>ie<<s>> and imagining how their jui<<c>>e<<s>> <<if canTaste(getSlave($AS))>>ta<<s>>te<<else>>feel on my <<s>>kin<</if>><</if>>.
-				<<case "buttslut">>
-					I'm <<s>>o horny, <<Master>>.
-					<<if (plugWidth(getSlave($AS)) == 1 && getSlave($AS).anus > 2) >>
-						I wear the buttplug you gave me, but it i<<s>> <<s>>o <<s>>mall... It remind<<s>> me of being fucked in the a<<ss>>, but I can barely feel it. It drive<<s>> me crazy.
-					<<elseif ((plugWidth(getSlave($AS)) == 1 && getSlave($AS).anus < 3) || (plugWidth(getSlave($AS)) == 2 && getSlave($AS).anus == 3) || plugWidth(getSlave($AS)) == 3 && getSlave($AS).anus >= 4) >>
-						Thank you for the buttplug. It i<<s>> really fun to have my a<<ss>> filled all day long.
-					<<elseif (plugWidth(getSlave($AS)) == 2 && getSlave($AS).anus < 3) || (plugWidth(getSlave($AS)) > 2 && getSlave($AS).anus < 4) >>
-						I like it up the a<<ss>>, but the plug you make me wear i<<s>> too big. It really hurt<<s>>. Not in the good way.
-					<<else>>
-						My anu<<s>> i<<s>> killing me, all I want to do i<<s>> touch it and ma<<ss>>age it and fill it.
-					<</if>>
-				<<case "boobs">>
-					I'm <<s>>o horny, <<Master>>. I want to rub my nipple<<s>> against everything.
-				<<case "pregnancy">>
-					I wi<<sh>> I could _Amp <<Master>>. I can't get the<<s>>e thought<<s>> of <<if (getSlave($AS).preg < 30)>>pregnan<<c>>y<<else>>birth<</if>> out of my head.
-				<</switch>>
-			<<elseif (getSlave($AS).attrKnown == 1) && (getSlave($AS).attrXX > 80)>>
-				I'm <<s>>o horny, <<Master>>. I can't <<s>>top thinking about the other <<s>>laves' beautiful pu<<ss>>ie<<s>> and boob<<s>> and, and I want to fuck them <<s>>o bad.
-			<<else>>
-				I haven't been touching my<<s>>elf, <<Master>>, ju<<s>>t like you <<s>>aid, but I'm really horny.
-			<</if>>
-		<<else>>
-			I haven't been touching my<<s>>elf, <<Master>>, ju<<s>>t like you <<s>>aid, but I'm really horny.
-		<</if>>
-	<</if>>
-<</if>> /* Closes release check */
-
-<<if (getSlave($AS).fetishKnown == 1)>>
-	<<if (getSlave($AS).energy > 95)>>
-		I love your
-		<<if $PC.dick != 0>>
-			<<if canDoAnal(getSlave($AS)) && canDoVaginal(getSlave($AS))>>
-				<<if getSlave($AS).vagina == 0>>
-					<<if $PC.vagina != -1>>
-						body, <<Master>>," $he <<say>>s eagerly. "I can't wait to have you in me, and your pu<<ss>>y i<<s>> <<s>>o deli<<c>>iou<<s>>.
-					<<else>>
-						cock, <<Master>>," $he <<say>>s eagerly. "I can't wait to have you in me.
-					<</if>>
-				<<else>>
-					<<if $PC.vagina != -1>>
-						body, <<Master>>," $he <<say>>s eagerly. "I love your cock in my hole<<s>>, and your pu<<ss>>y i<<s>> <<s>>o deli<<c>>iou<<s>>.
-					<<else>>
-						cock, <<Master>>," $he <<say>>s eagerly. "I love it in<<s>>ide my hole<<s>>.
-					<</if>>
-				<</if>>
-			<<else>>
-				<<if $PC.vagina != -1>>
-					body, <<Master>>," $he <<say>>s eagerly. "I ju<<s>>t need you in<<s>>ide me, and your pu<<ss>>y i<<s>> <<s>>o deli<<c>>iou<<s>>.
-				<<else>>
-					cock, <<Master>>," $he <<say>>s eagerly. "I ju<<s>>t need you in<<s>>ide me.
-				<</if>>
-			<</if>>
-		<<else>>
-			pu<<ss>>y, <<Master>>," $he <<say>>s eagerly. "I can ju<<s>>t imagine your clit again<<s>>t my tongue.
-		<</if>>
-	<<elseif (getSlave($AS).fetish == "submissive") && (getSlave($AS).fetishStrength > 60)>>
-		<<if $PC.boobs < 300>>
-			Your <<s>>trong arm<<s>> feel<<s>> <<s>>o good when you hold me down.
-		<<else>>
-			<<if $PC.boobs >= 1000>>
-				The weight of your boob<<s>> on my back feel<<s>> <<s>>o good when you pin me down.
-			<<else>>
-				Your tit<<s>> feel <<s>>o good on my back when you pin me down.
-			<</if>>
-		<</if>>
-	<<elseif (getSlave($AS).fetish == "cumslut") && (getSlave($AS).fetishStrength > 60)>>
-		<<if $PC.balls != 0>>
-			Your cum i<<s>> incredible, <<Master>>. I would drink every drop of it, if I could.
-			<<if $PC.scrotum > 0>>
-				Your <<if $PC.balls >= 14>>ma<<ss>>ive<<elseif $PC.balls >= 9>>huge<<else>>big<</if>> ball<<s>> are amazing; I want to be under your cock ki<<ss>>ing and kneading whenever <<if canSee(getSlave($AS))>>I <<s>>ee you<<else>>I'm near you<</if>>.
-			<</if>>
-			<<if $PC.vagina == 1>>Oh, I love your femcum, too!<</if>>
-		<</if>>
-	<<elseif (getSlave($AS).fetish == "humiliation") && (getSlave($AS).fetishStrength > 60)>>
-		<<if $PC.dick != 0>>
-			I love, uh." $He looks down, hesitating. "I love your cock, <<Master>>.
-			<<if $PC.vagina != -1>>Um, and your vagina, too.<</if>>
-		<</if>>
-	<<elseif (getSlave($AS).fetish == "buttslut") && (getSlave($AS).fetishStrength > 60)>>
-		<<if $PC.dick != 0>>I love your cock, <<Master>>," $he <<say>>s eagerly. "I<<if getSlave($AS).anus == 0 || !canDoAnal(getSlave($AS))>>'d<</if>> love it in my backdoor.<</if>>
-	<<elseif (getSlave($AS).fetish == "pregnancy") && (getSlave($AS).fetishStrength > 60)>>
-		<<if $PC.belly >= 10000>>
-			You, uh." $He looks down, hesitating. "Your belly i<<s>> <<s>>o big and wonderful, I ju<<s>>t want to feel it,
-		<<elseif $PC.belly >= 5000>>
-			You, uh." $He looks down, hesitating. "You have a really lovely belly,
-		<<elseif $PC.boobs >= 300>>
-			You, uh." $He looks down, hesitating. "You have really ni<<c>>e brea<<s>>t<<s>>,
-		<<elseif $PC.dick != 0 && $PC.scrotum > 0>>
-			You, uh." $He looks down, hesitating. "You have really ni<<c>>e ball<<s>>,
-		<<elseif $PC.dick != 0>>
-			You, uh." $He looks down, hesitating. "You have a lovely cock,
-		<<else>>
-			You, um." $He looks down, hesitating. "You would make a lovely mother,
-		<</if>>
-		<<Master>>.
-	<<elseif (getSlave($AS).fetish == "boobs") && (getSlave($AS).fetishStrength > 60)>>
-		<<if $PC.boobs >= 1400>>
-			Your brea<<s>>t<<s>> are giant, <<Master>>," $he <<say>>s eagerly. "I ju<<s>>t want to bury my fa<<c>>e in them.
-		<<elseif $PC.boobs >= 1200>>
-			Your brea<<s>>t<<s>> are huge, <<Master>>," $he <<say>>s eagerly. "I love them.
-		<<elseif $PC.boobs >= 1000>>
-			Your brea<<s>>t<<s>> are <<s>>o big and lovely, <<Master>>," $he <<say>>s eagerly. "I love them.
-		<<elseif $PC.boobs >= 800>>
-			Your brea<<s>>t<<s>> are incredible, <<Master>>," $he <<say>>s eagerly. "I love them.
-		<<elseif $PC.boobs >= 300>>
-			Your brea<<s>>t<<s>> are <<s>>o cute, <<Master>>," $he <<say>>s eagerly. "I ju<<s>>t want to <<s>>queeze them.
-		<</if>>
-	<<elseif (getSlave($AS).attrKnown == 1) && (getSlave($AS).attrXX > 80)>>
-		<<if $PC.boobs >= 300>>You're, uh." $He looks down, hesitating. "You're really hot, <<Master>>.<</if>>
-	<<elseif (getSlave($AS).attrKnown == 1) && (getSlave($AS).attrXY > 80)>>
-		<<if $PC.dick != 0>>Your, uh." $He looks down, hesitating. "Your cock i<<s>> really hot, <<Master>>.<</if>>
-	<<else>>
-		You're, uh." $He looks down, hesitating. "You're really <<if $PC.title == 1>>hand<<s>>ome<<else>>pretty<</if>>, <<Master>>.
-	<</if>>
-<</if>>
-
-<<if (getSlave($AS).dick > 0)>>
-	<<if (getSlave($AS).balls == 0)>>
-		<<if (getSlave($AS).fetishKnown == 1)>>
-			<<if (getSlave($AS).energy > 95)>>
-				I like being gelded." $He giggles. "I don't have to be hard to get fucked!
-			<<elseif (getSlave($AS).fetishStrength > 60)>>
-				<<switch getSlave($AS).fetish>>
-				<<case "submissive">>
-					I don't mind being clipped. I like belong on the bottom.
-				<<case "masochist">>
-					Being gelded," $he shivers, "hurt<<s>> <<s>>ometime<<s>>. Make<<s>> people want to hurt you. I like it.
-				<<case "humiliation">>
-					I don't mind being clipped." $He shivers. "Everyone know<<s>>! It'<<s>> <<s>>o embarra<<ss>>ing.
-				<<case "dom">>
-					I <<s>>ometime<<s>> mi<<ss>> my ball<<s>>. It'<<s>> harder to be dominant without them.
-				<<case "sadist">>
-					I <<s>>ometime<<s>> mi<<ss>> my ball<<s>>. I <<s>>till fanta<<s>>i<<z>>e about raping the other girl<<s>>.
-				<<case "pregnancy">>
-					I <<s>>ometime<<s>> mi<<ss>> my ball<<s>>. I <<s>>till fanta<<s>>i<<z>>e about getting the other girl<<s>> pregnant.
-				<<case "cumslut">>
-					I barely cum without my ball<<s>>. I mi<<ss>>, you know, cleaning up after my<<s>>elf. With my mouth.
-				<<case "buttslut">>
-					I really like being clipped. I think it'<<s>> le<<ss>> di<<s>>tracting, you know, from my butthole. <<if getSlave($AS).prostate > 0>>And I <<s>>till have my pro<<s>>tate which i<<s>> what matter<<s>>.<</if>>
-				<<case "boobs">>
-					I don't mind being clipped. Between that and my boob<<s>> I feel like a ni<<c>>e little <<s>>lave $girl.
-				<</switch>>
-			<<elseif (getSlave($AS).attrKnown == 1) && (getSlave($AS).attrXX > 80)>>
-				I <<s>>ometime<<s>> mi<<ss>> my ball<<s>>. I <<s>>till fanta<<s>>i<<z>>e about boning the other girl<<s>>.
-			<<else>>
-				<<if getSlave($AS).devotion > 75>>
-					I love being your gelded <<s>>lave $girl, <<Master>>.
-				<<else>>
-					To be hone<<s>>t, <<Master>>, I do mi<<ss>> having ball<<s>>, <<s>>ometime<<s>>.
-				<</if>>
-			<</if>>
-		<<else>>
-			<<if getSlave($AS).devotion > 75>>
-				I love being your gelded <<s>>lave $girl, <<Master>>.
-			<<else>>
-				To be hone<<s>>t, <<Master>>, I do mi<<ss>> having ball<<s>>, <<s>>ometime<<s>>.
-			<</if>>
-		<</if>>
-	<<elseif (getSlave($AS).hormoneBalance >= 200)>>
-		<<if (getSlave($AS).fetishKnown == 1)>>
-			<<if (getSlave($AS).energy > 95)>>
-				I <<s>>ometime<<s>> wi<<sh>> I could <<s>>till get hard." $He looks pensive. "Actually, I don't really care, getting fucked i<<s>> ni<<c>>e too.
-			<<elseif (getSlave($AS).fetishStrength > 60)>>
-				<<switch getSlave($AS).fetish>>
-				<<case "submissive">>
-					I don't mind the hormone<<s>> keeping me <<s>>oft. I like getting fucked, anyway.
-				<<case "masochist">>
-					I don't mind the hormone<<s>> keeping me <<s>>oft. I think it encourage<<s>> people to treat me like I de<<s>>erve.
-				<<case "humiliation">>
-					I don't mind being impotent." $He shivers. "Everyone know<<s>>! It'<<s>> <<s>>o embarra<<ss>>ing.
-				<<case "dom">>
-					I wi<<sh>> the hormone<<s>> didn't <<s>>top me from getting hard. It'<<s>> tough to be dominant when I'm all <<s>>oft.
-				<<case "sadist">>
-					I wi<<sh>> the hormone<<s>> didn't <<s>>top me from getting hard. I <<s>>till fanta<<s>>i<<z>>e about raping the other girl<<s>>.
-				<<case "cumslut">>
-					I cum a lot le<<ss>> on the<<s>>e hormone<<s>>. I mi<<ss>>, you know, cleaning up after my<<s>>elf. With my mouth.
-				<<case "buttslut">>
-					I don't mind the hormone<<s>> keeping me <<s>>oft. I prefer taking it, anyway." $He turns and sticks $his ass out. "Up the butt.
-				<<case "boobs">>
-					I don't mind the hormone<<s>> keeping me <<s>>oft. Between that and my boob<<s>> I feel like a cute <<s>>lave girl.
-				<<case "pregnancy">>
-					I wi<<sh>> the hormone<<s>> didn't <<s>>top me from getting hard. I <<s>>till fanta<<s>>i<<z>>e about getting the other girl<<s>> pregnant.
-				<</switch>>
-			<<elseif (getSlave($AS).attrKnown == 1) && (getSlave($AS).attrXX > 80)>>
-				I wi<<sh>> the hormone<<s>> didn't <<s>>top me from getting hard. I <<s>>till fanta<<s>>i<<z>>e about boning the other girl<<s>>.
-			<<else>>
-				<<if getSlave($AS).devotion > 75>>
-					I love you, <<Master>>, <<s>>o I don't mind how the hormone<<s>> I'm on keep me <<s>>oft, if that'<<s>> how you want me.
-				<<else>>
-					I <<s>>ometime<<s>> wi<<sh>> the hormone<<s>> I'm on would let me get hard.
-				<</if>>
-			<</if>>
-		<<else>>
-			<<if getSlave($AS).devotion > 75>>
-				I love you, <<Master>>, <<s>>o I don't mind how the hormone<<s>> I'm on keep me <<s>>oft, if that'<<s>> how you want me.
-			<<else>>
-				I <<s>>ometime<<s>> wi<<sh>> the hormone<<s>> I'm on would let me get hard.
-			<</if>>
-		<</if>>
-	<</if>> /* closes balls check */
-<<elseif getSlave($AS).pubertyXX == 0 && (getSlave($AS).ovaries == 1 || getSlave($AS).mpreg == 1)>>
-	<<if (getSlave($AS).fetishKnown == 1)>>
-		<<if (getSlave($AS).fetish == "pregnancy") && (getSlave($AS).fetishStrength > 60)>>
-			I fanta<<s>>i<<z>>e about my belly getting heavy with pregnan<<c>>y and my only wi<<sh>> is that you never let one of my egg<<s>> go to wa<<s>>te.
-		<</if>>
-	<</if>>
-<<elseif getSlave($AS).mpreg == 1>>
-	<<if (getSlave($AS).fetishKnown == 1)>>
-		<<if (getSlave($AS).fetish == "pregnancy") && (getSlave($AS).fetishStrength > 0)>>
-			I fanta<<s>>i<<z>>e about my belly getting heavy with pregnan<<c>>y, and I'm <<s>>o glad you made me able to get pregnant!
-			<<if getSlave($AS).preg == -1>>
-				Now if only <<s>>omeone were to forget to give me my contra<<c>>eptive<<s>> before we got to doing it...
-			<</if>>
-		<</if>>
-	<</if>>
-<<elseif getSlave($AS).preg == -1>>
-	<<if (getSlave($AS).fetishKnown == 1)>>
-		<<if (getSlave($AS).fetish == "pregnancy") && (getSlave($AS).fetishStrength > 60)>>
-			I fanta<<s>>i<<z>>e about my belly getting heavy with pregnan<<c>>y, but I know it won't happen while I'm on contra<<c>>eptive<<s>>.
-		<</if>>
-	<</if>>
-<</if>> /* closes dick check */
-
-<<if Math.abs(getSlave($AS).hormoneBalance) >= 200>>
-	<<if getSlave($AS).physicalAge > 35>>
-		<<if getSlave($AS).devotion > 50>>
-			<<if getSlave($AS).energy > 40>>
-				On all the<<s>>e hormone<<s>> I'm almo<<s>>t going through puberty all over again. Kind of a <<s>>urpri<<s>>e at my age." $He grins suggestively. "I'll do my be<<s>>t to fuck like a teenager, <<Master>>.
-			<</if>>
-		<</if>>
-	<</if>>
-<</if>>
-
-<<if (getSlave($AS).curatives > 1) || getSlave($AS).inflationType == "curative">>
-	<<if getSlave($AS).inflationType == "curative">>
-		<<if (getSlave($AS).health.condition < 0)>>
-			I don't feel good, but I can almo<<s>>t feel the curative<<s>> fi<<x>>ing me, even if the belly i<<s>> a little uncomfortable. Thank you, <<Master>>.
-		<<elseif (getSlave($AS).physicalAge > 35)>>
-			I can almo<<s>>t feel the curative<<s>> working. They make me feel like a young, pregnant $girl! Thank you, <<Master>>.
-		<<else>>
-			I can almo<<s>>t feel the curative<<s>> working. They're pretty incredible, even if the belly i<<s>> a little uncomfortable. Thank you, <<Master>>.
-		<</if>>
-	<<else>>
-	<<if (getSlave($AS).health.condition < 0)>>
-		I don't feel good, but I can almo<<s>>t feel the curative<<s>> fi<<x>>ing me. Thank you, <<Master>>.
-	<<elseif (getSlave($AS).physicalAge > 35)>>
-		I can almo<<s>>t feel the curative<<s>> working. They make me feel <<s>>o young! Thank you, <<Master>>.
-	<<else>>
-		I can almo<<s>>t feel the curative<<s>> working. They're pretty incredible. Thank you, <<Master>>.
-	<</if>>
-	<</if>>
-<</if>>
-
-<<if getSlave($AS).inflationType == "aphrodisiac">>
-	Thi<<s>> belly i<<s>> <<s>>o hot! I feel <<s>>o hot... You ju<<s>>t have to fuck me <<Master>>! I need a dick in me, plea<<s>>e!
-<</if>>
-
-<<if getSlave($AS).inflationType == "tightener">>
-	I can practically feel my butt getting tighter. Thi<<s>> i<<s>> great, I'll be like new <<s>>oon. Thank you, <<Master>>.
-<</if>>
-
-<<if getSlave($AS).inflation > 0>>
-	<<if SlaveStatsChecker.checkForLisp(getSlave($AS))>>
-		<<set _fluid = lispReplace(getSlave($AS).inflationType)>>
-	<<else>>
-		<<set _fluid = getSlave($AS).inflationType>>
-	<</if>>
-	<<if getSlave($AS).behavioralFlaw === "gluttonous" && ["food", "milk"].includes(_fluid) && [1,3].includes(getSlave($AS).inflationMethod) && getSlave($AS).fetish === "humiliation" && getSlave($AS).fetishStrength > 60>>
-		<<if getSlave($AS).bellyFluid >= 10000>>
-			My belly hurt<<s>> a bit, but it'<<s>> worth it to let everybody know what a di<<s>>gra<<c>>eful, gluttonou<<s>> //pig// I am.
-		<<elseif getSlave($AS).bellyFluid >= 5000>>
-			I can't believe I get to gorge my<<s>>elf <<s>>illy on _fluid and <<sh>>ow it off! Thank you, <<Master>>.
-		<<elseif getSlave($AS).bellyFluid >= 2000>>
-			This _fluid is deli<<c>>iou<<s>>, but wouldn't it be hot if your little piggy had an even //bigger// belly for people to <<s>>tare at?
-		<</if>>
-	<<elseif getSlave($AS).behavioralFlaw === "gluttonous" && ["food", "milk"].includes(_fluid) && [1,3].includes(getSlave($AS).inflationMethod)>>
-		<<if getSlave($AS).bellyFluid >= 10000 && getSlave($AS).fetish === "masochist" && getSlave($AS).fetishStrength > 60>>
-			Thi<<s>> _fluid i<<s>> <<s>>o ta<<s>>ty, and my belly hurt<<s>> <<s>>o //good//... I wi<<sh>> I really could <<s>>tuff my<<s>>elf to bur<<s>>ting.
-		<<elseif getSlave($AS).bellyFluid >= 10000>>
-			My belly hurt<<s>> a little, but it feel<<s>> <<s>>o good to gorge my<<s>>elf...
-		<<elseif getSlave($AS).bellyFluid >= 5000>>
-			I can't believe I get to <<s>>tuff my<<s>>elf like this! Thank you, <<Master>>.
-		<<elseif getSlave($AS).bellyFluid >= 2000>>
-			Thank you for letting me have <<s>>o much deli<<c>>iou<<s>> _fluid, <<Master>>.
-		<</if>>
-	<<elseif getSlave($AS).sexualFlaw === "cum addict" && _fluid === "cum" && [1,3].includes(getSlave($AS).inflationMethod)>>
-		<<if getSlave($AS).bellyFluid >= 10000 && getSlave($AS).fetish === "masochist" && getSlave($AS).fetishStrength > 60>>
-			I'm <<s>>o full of ta<<s>>ty cum it //hurt<<s>>//, <<Master>>. I think thi<<s>> i<<s>> what heaven feel<<s>> like...
-		<<elseif getSlave($AS).bellyFluid >= 10000>>
-			It hurt<<s>> a little, but I feel <<s>>o //complete// being <<s>>o full of hot, deli<<c>>iou<<s>> cum.
-		<<elseif getSlave($AS).bellyFluid >= 5000>>
-			Being able to drink all thi<<s>> wonderful hot cum all the time i<<s>> like a dream come true, <<Master>>.
-		<<elseif getSlave($AS).bellyFluid >= 2000>>
-			Thank you for letting me have <<s>>o much deli<<c>>iou<<s>> cum, <<Master>>.
-		<</if>>
-	<<elseif getSlave($AS).sexualFlaw === "cum addict" && _fluid === "cum" && getSlave($AS).inflationMethod === 2>>
-		<<if getSlave($AS).bellyFluid >= 10000 && getSlave($AS).fetish === "masochist" && getSlave($AS).fetishStrength > 60>>
-			It feel<<s>> like I'm //bur<<s>>ting// with cum, <<Master>>. It'<<s>> wonderful, even if I can't ta<<s>>te it.
-		<<elseif getSlave($AS).bellyFluid >= 10000>>
-			It hurt<<s>> a little, but I feel <<s>>o //complete// being <<s>>o full of cum. I ju<<s>>t wi<<sh>> I could ta<<s>>te it...
-		<<elseif getSlave($AS).bellyFluid >= 5000>>
-			I love being <<s>>o full of hot cum, <<Master>>. I'd be even happier if I could ta<<s>>te it.
-		<<elseif getSlave($AS).bellyFluid >= 2000>>
-			Thi<<s>> cum i<<s>> nice and warm in<<s>>ide me, <<Master>>, I'd love to have <<s>>ome more. Maybe I could drink it ne<<x>>t time...
-		<</if>>
-	<<elseif getSlave($AS).fetish === "humiliation" && getSlave($AS).fetishStrength > 60>>
-		<<if getSlave($AS).bellyFluid >= 2000>>
-			This bloated gut is so //disgraceful//...
-			<<if getSlave($AS).bellyFluid >= 10000>> It hurts a little, but <</if>>
-			 I love the way people //stare// at it.
-		<</if>>
-	<<else>>
-		<<if getSlave($AS).bellyFluid >= 10000 && getSlave($AS).fetish === "masochist" && getSlave($AS).fetishStrength > 60>>
-			My gut<<s>> are <<s>>o full, <<Master>>, it hurt<<s>> <<s>>o //good//...
-		<<elseif getSlave($AS).bellyFluid >= 10000>>
-			I feel really full, can I let the _fluid out now?
-		<<elseif getSlave($AS).bellyFluid >= 5000>>
-			I feel <<s>>o full, can I let the _fluid out now?
-		<<elseif getSlave($AS).bellyFluid >= 2000>>
-			I feel <<s>>o uncomfortable, can I let the _fluid out now?
-		<</if>>
-	<</if>>
-<</if>>
-
-<<switch getSlave($AS).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.<<if canTaste(getSlave($AS))>> It really ta<<s>>te<<s>> horrible, though...<</if>>
-<</switch>>
-
-<<switch getSlave($AS).drugs>>
-<<case "intensive penis enhancement">>
-	<<if (getSlave($AS).dick > 0)>>
-		<<if (getSlave($AS).balls == 0)>>
-			I can feel my dick growing, <<Master>>, but it'<<s>> <<s>>till <<s>>o <<s>>oft. I gue<<ss>> it'll ju<<s>>t flop around more when I get buttfucked.
-		<<elseif (getSlave($AS).fetishKnown == 1)>>
-			<<if (getSlave($AS).fetish == "sadist") && (getSlave($AS).fetishStrength > 60)>>
-				I can feel my dick growing, <<Master>>. I can ju<<s>>t imagine pu<<sh>>ing it into <<s>>ome poor <<s>>truggling girl'<<s>> a<<ss>>hole.
-			<<elseif (getSlave($AS).fetish == "dom") && (getSlave($AS).fetishStrength > 60)>>
-				I can feel my dick growing, <<Master>>. I can ju<<s>>t imagine pu<<sh>>ing it into <<s>>ome little <<s>>lut'<<s>> fa<<c>>e.
-			<<elseif (getSlave($AS).attrKnown == 1) && (getSlave($AS).attrXX > 80)>>
-				I can feel my dick growing, <<Master>>. I can ju<<s>>t imagine pu<<sh>>ing it into a warm, wet pu<<ss>>y.
-			<<else>>
-				I can almo<<s>>t feel my dick growing, <<Master>>. It'<<s>> kind of uncomfortable.
-			<</if>>
-		<<else>>
-			I can almo<<s>>t feel my dick growing, <<Master>>. It'<<s>> kind of uncomfortable.
-		<</if>>
-	<<else>>
-		<<if (getSlave($AS).fetishKnown == 1)>>
-			<<if (getSlave($AS).fetish == "sadist") && (getSlave($AS).fetishStrength > 60)>>
-				I can feel my clit growing, <<Master>>. I can ju<<s>>t imagine pu<<sh>>ing it into <<s>>ome poor <<s>>truggling girl'<<s>> a<<ss>>hole.
-			<<elseif (getSlave($AS).fetish == "dom") && (getSlave($AS).fetishStrength > 60)>>
-				I can feel my clit growing, <<Master>>. I can ju<<s>>t imagine pu<<sh>>ing it into <<s>>ome little <<s>>lut'<<s>> fa<<c>>e.
-			<<elseif (getSlave($AS).attrKnown == 1) && (getSlave($AS).attrXX > 80)>>
-				I can feel my clit growing, <<Master>>. I can ju<<s>>t imagine pu<<sh>>ing it into a warm, wet pu<<ss>>y.
-			<<else>>
-				I can almo<<s>>t feel my clit growing, <<Master>>. It'<<s>> kind of uncomfortable.
-			<</if>>
-		<<else>>
-			I can almo<<s>>t feel my clit growing, <<Master>>. It'<<s>> kind of uncomfortable.
-		<</if>>
-	<</if>>
-<<case "hyper penis enhancement">>
-	<<if (getSlave($AS).dick > 0)>>
-		<<if (getSlave($AS).balls == 0)>>
-			I can feel my dick growing, <<Master>>, but it'<<s>> <<s>>till <<s>>o <<s>>oft. I gue<<ss>> it'll ju<<s>>t flop around more when you buttfuck me, until it touche<<s>> the floor, that i<<s>>.
-		<<elseif (getSlave($AS).fetishKnown == 1)>>
-			<<if (getSlave($AS).fetish == "sadist") && (getSlave($AS).fetishStrength > 60)>>
-				I can feel my dick growing, <<Master>>. I can ju<<s>>t imagine pu<<sh>>ing it into <<s>>ome poor <<s>>truggling girl'<<s>> a<<ss>>hole and having it <<s>>well more and more in them.
-			<<elseif (getSlave($AS).fetish == "dom") && (getSlave($AS).fetishStrength > 60)>>
-				I can feel my dick growing, <<Master>>. I can ju<<s>>t imagine pinning <<s>>ome poor little <<s>>lut to the floor with it.
-			<<elseif (getSlave($AS).attrKnown == 1) && (getSlave($AS).attrXX > 80)>>
-				I can feel my dick growing, <<Master>>. I can ju<<s>>t imagine <<sh>>oving it into a warm, wet pu<<ss>>y.
-			<<else>>
-				I can feel my dick growing, <<Master>>. It'<<s>> kind of painful.
-			<</if>>
-		<<else>>
-			I can feel my dick growing, <<Master>>. It'<<s>> kind of painful.
-		<</if>>
-	<<else>>
-		<<if (getSlave($AS).fetishKnown == 1)>>
-			<<if (getSlave($AS).fetish == "sadist") && (getSlave($AS).fetishStrength > 60)>>
-				I can feel my clit growing, <<Master>>. I can ju<<s>>t imagine pu<<sh>>ing it into <<s>>ome poor <<s>>truggling girl'<<s>> a<<ss>>hole and having it <<s>>well more and more in them.
-			<<elseif (getSlave($AS).fetish == "dom") && (getSlave($AS).fetishStrength > 60)>>
-				I can feel my clit growing, <<Master>>. I can ju<<s>>t imagine plugging <<s>>ome <<s>>lut'<<s>> fa<<c>>e with it.
-			<<elseif (getSlave($AS).attrKnown == 1) && (getSlave($AS).attrXX > 80)>>
-				I can feel my clit growing, <<Master>>. I can ju<<s>>t imagine <<sh>>oving it into a warm, wet pu<<ss>>y.
-			<<else>>
-				I can almo<<s>>t feel my clit growing, <<Master>>. It'<<s>> kind of painful.
-			<</if>>
-		<<else>>
-			I can almo<<s>>t feel my clit growing, <<Master>>. It'<<s>> kind of painful.
-		<</if>>
-	<</if>>
-<<case "intensive testicle enhancement">>
-	My ball<<s>> feel incredibly full, <<Master>>. They're really uncomfortable.
-	<<if (getSlave($AS).fetishKnown == 1) && ((getSlave($AS).fetish == "dom") || (getSlave($AS).fetish == "sadist")) && (getSlave($AS).fetishStrength > 60)>>
-		But I can't wait to for<<c>>e a bitch to take the whole load.
-	<<elseif (getSlave($AS).fetishKnown == 1) && (getSlave($AS).fetish == "pregnancy") && (getSlave($AS).fetishStrength > 60)>>
-		I feel like I could fill a girl'<<s>> womb with cum with one orga<<s>>m.
-	<<else>>
-		I really need to cum. After we fini<<sh>> talking, would you plea<<s>>e, plea<<s>>e fuck me <<s>>o I can cum? I can barely <<s>>tand it.
-	<</if>>
-<<case "hyper testicle enhancement">>
-	My ball<<s>> feel <<s>>o incredibly full, <<Master>>. They're really painful.
-	<<if (getSlave($AS).fetishKnown == 1) && ((getSlave($AS).fetish == "dom") || (getSlave($AS).fetish == "sadist")) && (getSlave($AS).fetishStrength > 60)>>
-		But I can't wait to fill a bitch with my load. Bet they'll look pregnant when I'm done.
-	<<elseif (getSlave($AS).fetishKnown == 1) && (getSlave($AS).fetish == "pregnancy") && (getSlave($AS).fetishStrength > 60)>>
-		I feel like I could fertili<<z>>e all of a girl'<<s>> egg<<s>> with my cum.
-	<<else>>
-		I really need to cum. After I fini<<sh>>, would you plea<<s>>e, plea<<s>>e fuck me? I can barely <<s>>tand it.
-	<</if>>
-<<case "intensive breast injections">>
-	<<if (getSlave($AS).fetishKnown == 1) && ((getSlave($AS).fetish == "boobs") || (getSlave($AS).energy > 95))>>
-		I can almo<<s>>t feel my boob<<s>> <<s>>welling, <<Master>>. Thank you for injecting them with hormone<<s>>, and plea<<s>>e, never <<s>>top.
-	<<else>>
-		I can almo<<s>>t feel my boob<<s>> <<s>>welling, <<Master>>. It'<<s>> kind of uncomfortable.
-	<</if>>
-<<case "hyper breast injections">>
-	<<if (getSlave($AS).fetishKnown == 1)>>
-	<<if (getSlave($AS).fetish == "boobs") || (getSlave($AS).energy > 95)>>
-		I can feel my boob<<s>> <<s>>welling, <<Master>>. Thank you for injecting them with hormone<<s>>, and plea<<s>>e, never <<s>>top.
-	<<else>>
-		I can feel my boob<<s>> <<s>>welling, <<Master>>. It'<<s>> kind of painful.
-	<</if>>
-	<<else>>
-		I can feel my boob<<s>> <<s>>welling, <<Master>>. It'<<s>> kind of painful.
-	<</if>>
-<<case "intensive butt injections">>
-	<<if (getSlave($AS).fetishKnown == 1) && ((getSlave($AS).fetish == "buttslut") || (getSlave($AS).energy > 95))>>
-		I can almo<<s>>t feel my butt growing, <<Master>>. I can't wait to feel a dick <<s>>liding up in between my buttock<<s>>.
-	<<else>>
-		I can almo<<s>>t feel my butt growing, <<Master>>. It'<<s>> kind of uncomfortable.
-	<</if>>
-<<case "hyper butt injections">>
-	<<if (getSlave($AS).fetishKnown == 1)>>
-	<<if (getSlave($AS).fetish == "buttslut") || (getSlave($AS).energy > 95)>>
-		I can feel my butt growing, <<Master>>. I can't wait for a dick to get lo<<s>>t in between my buttock<<s>>.
-	<<else>>
-		I can feel my butt growing, <<Master>>. It'<<s>> kind of painful.
-	<</if>>
-	<<else>>
-		I can feel my butt growing, <<Master>>. It'<<s>> kind of painful.
-	<</if>>
-<<case "lip injections">>
-	<<if (getSlave($AS).fetishKnown == 1) && ((getSlave($AS).fetish == "cumslut") || (getSlave($AS).energy > 95))>>
-		I can almost feel my lip<<s>> <<s>>welling, <<Master>>. I can't wait to wrap them around a cock.
-	<<else>>
-		I can almost feel my lip<<s>> <<s>>welling, <<Master>>. It'<<s>> kind of uncomfortable.
-	<</if>>
-<<case "fertility drugs">>
-<<if isFertile(getSlave($AS))>>
-	I feel like I need to have a baby, <<Master>>, like right now.
-	<<if (getSlave($AS).fetishKnown == 1) && (getSlave($AS).fetish == "submissive") && (getSlave($AS).fetishStrength > 60)>>
-		I can't wait for <<s>>omeone to pin me down and fuck me pregnant.
-	<<elseif (getSlave($AS).fetishKnown == 1) && (getSlave($AS).fetish == "dom") && (getSlave($AS).fetishStrength > 60)>>
-		Make<<s>> me want to pin down a cute little <<if $seeDicks != 0>>dick<<s>>lave<<else>><<c>>iti<<z>>en<</if>> and claim their <<s>>perm.
-	<<elseif (getSlave($AS).fetishKnown == 1) && (getSlave($AS).fetish == "pregnancy") && (getSlave($AS).fetishStrength > 60)>>
-		I can't wait till my belly get<<s>> big enough to hold me down.
-	<<else>>
-		The<<s>>e will get me pregnant, right?
-	<</if>>
-<</if>>
-<<case "super fertility drugs">>
-<<if isFertile(getSlave($AS))>>
-	My womb feel<<s>> <<s>>o full, <<Master>>, I need to be fertili<<z>>ed!
-	<<if (getSlave($AS).fetishKnown == 1) && (getSlave($AS).fetish == "submissive") && (getSlave($AS).fetishStrength > 60)>>
-		I can't wait to be pinned to the floor by my life <<s>>wollen belly.
-	<<elseif (getSlave($AS).fetishKnown == 1) && (getSlave($AS).fetish == "dom") && (getSlave($AS).fetishStrength > 60)>>
-		I can't wait till my belly i<<s>> huge enough to really demand wor<<sh>>ip.
-	<<elseif (getSlave($AS).fetishKnown == 1) && (getSlave($AS).fetish == "pregnancy") && (getSlave($AS).fetishStrength > 60)>>
-		I can't wait till my belly <<s>>well<<s>> a<<s>> big a<<s>> me.
-	<<else>>
-		The<<s>>e will get me pregnant, right? Like, <<s>>o pregnant I won't be able to <<s>>tand in the end?
-	<</if>>
-<</if>>
-<<case "psychostimulants">>
-	My thought<<s>> are <<s>>o <<sh>>arp <<Master>>, I feel like I'm actually getting <<s>>marter.
-<<case "anti-aging cream">>
-	<<if getSlave($AS).visualAge+20 < getSlave($AS).actualAge>>
-		I look <<s>>o young, <<Master>>, I can barely recogni<<z>>e my<<s>>elf anymore.
-	<<else>>
-		I can practically feel the year<<s>> peeling off me, <<Master>>.
-	<</if>>
-<<case "sag-B-gone">>
-	<<if (getSlave($AS).fetishKnown == 1)>>
-		<<if (getSlave($AS).fetish == "boobs") || (getSlave($AS).energy > 95)>>
-			I love all the brea<<s>>t ma<<ss>>age<<s>>, but I don't think the cream i<<s>> doing anything. They look the <<s>>ame a<<s>> alway<<s>>, not that that mean<<s>> I want you to <<s>>top, <<Master>>!
-		<<else>>
-			I think you might have been ripped off on thi<<s>> <<s>>ag cream, <<Master>>; my brea<<s>>t<<s>> don't feel any different.
-		<</if>>
-	<<else>>
-		I think you might have been ripped off on thi<<s>> <<s>>ag cream, <<Master>>; my brea<<s>>t<<s>> don't feel any different.
-	<</if>>
-<</switch>>
-
-<<switch getSlave($AS).assignment>>
-<<case "whore" "work in the brothel">>
-	<<if (getSlave($AS).fetishKnown == 1)>>
-	<<if (getSlave($AS).energy > 95)>>
-		It'<<s>> great being a whore. I can't imagine being <<s>>ati<<s>>fied doing anything el<<s>>e.
-	<<elseif (getSlave($AS).fetishStrength > 60)>>
-	<<switch getSlave($AS).fetish>>
-	<<case "submissive">>
-		It'<<s>> ni<<c>>e being a whore, I get treated like I de<<s>>erve.
-	<<case "dom">>
-		Being a whore i<<s>> okay, <<s>>ometime<<s>> <<s>>omebody want<<s>> to be dommed.
-	<<case "sadist">>
-		Being a whore i<<s>> okay, <<s>>ometime<<s>> <<s>>omebody want<<s>> me to hurt one of their <<s>>lave<<s>> for them.
-	<<case "masochist">>
-		It'<<s>> ni<<c>>e being a whore, I get hurt like I de<<s>>erve.
-	<<case "cumslut">>
-		It'<<s>> great being a whore. If I wa<<s>> <<s>>till free, I would fanta<<s>>i<<z>>e about getting to <<s>>uck thi<<s>> many dick<<s>>.
-	<<case "humiliation">>
-		It'<<s>> great being a whore, the <<sh>>ame keep<<s>> me really horny.
-	<<case "buttslut">>
-		It'<<s>> great being a whore. If I wa<<s>> <<s>>till free, I would fanta<<s>>i<<z>>e about taking thi<<s>> much anal.
-	<<case "boobs">>
-		It'<<s>> ni<<c>>e being a whore, <<s>>ometime<<s>> customer<<s>> ju<<s>>t play with my boob<<s>> for hour<<s>>.
-	<<case "pregnancy">>
-		<<if getSlave($AS).belly >= 5000>>
-			It'<<s>> ni<<c>>e being a whore, <<s>>ometime<<s>> customer<<s>> ju<<s>>t play with my belly for hour<<s>>.
-		<<elseif isFertile(getSlave($AS))>>
-			It'<<s>> great being a whore, I'm going to get pregnant and there'<<s>> nothing I can do to <<s>>top it.
-		<<elseif getSlave($AS).preg > getSlave($AS).pregData.normalBirth/4>>
-			It'<<s>> great being a pregnant whore, I get to watch my belly <<s>>well a<<s>> I get fucked. Every week it get<<s>> a little bigger.
-		<<elseif getSlave($AS).pregKnown == 1>>
-			Being a whore i<<s>> okay, but it will be great on<<c>>e my belly get<<s>> bigger.
-		<<elseif getSlave($AS).preg > 0>>
-			Being a whore i<<s>> okay, I ju<<s>>t wi<<sh>> I'd get knocked up already.
-		<<else>>
-			Being a whore i<<s>> okay, <<s>>ometime<<s>> I can pretend I can get pregnant.
-		<</if>>
-	<</switch>>
-	<<elseif (getSlave($AS).attrKnown == 1) && (getSlave($AS).attrXY > 60)>>
-		It'<<s>> ni<<c>>e being a whore, I get fucked by a lot of hot guy<<s>>.
-	<<elseif (getSlave($AS).attrKnown == 1) && (getSlave($AS).attrXX > 60)>>
-		It'<<s>> okay being a whore, I get female customer<<s>> <<s>>ometime<<s>>.
-	<</if>>
-	<</if>>
-<<case "public service" "serve in the club">>
-	<<if (getSlave($AS).fetishKnown == 1)>>
-	<<if (getSlave($AS).energy > 95)>>
-		It'<<s>> great being a public <<s>>lut. I can't imagine being <<s>>ati<<s>>fied doing anything el<<s>>e.
-	<<elseif (getSlave($AS).fetishStrength > 60)>>
-	<<switch getSlave($AS).fetish>>
-	<<case "submissive">>
-		It'<<s>> ni<<c>>e being a public <<s>>lut, I get treated like I de<<s>>erve.
-	<<case "dom">>
-		Being a public <<s>>lut i<<s>> okay, <<s>>ometime<<s>> <<s>>omebody want<<s>> to be dommed.
-	<<case "sadist">>
-		Being a public <<s>>lut i<<s>> okay, <<s>>ometime<<s>> <<s>>omebody want<<s>> me to hurt one of their <<s>>lave<<s>> for them.
-	<<case "masochist">>
-		It'<<s>> ni<<c>>e being a public <<s>>lut, I get hurt like I de<<s>>erve.
-	<<case "cumslut">>
-		It'<<s>> great being a public <<s>>lut. If I wa<<s>> <<s>>till free, I would fanta<<s>>i<<z>>e about getting to <<s>>uck thi<<s>> many dick<<s>>.
-	<<case "humiliation">>
-		It'<<s>> great being a public <<s>>lut, the <<sh>>ame keep<<s>> me really horny.
-	<<case "buttslut">>
-		It'<<s>> great being a public <<s>>lut. If I wa<<s>> <<s>>till free, I would fanta<<s>>i<<z>>e about taking thi<<s>> much anal.
-	<<case "boobs">>
-		It'<<s>> ni<<c>>e being a public <<s>>lut, <<s>>ometime<<s>> <<c>>iti<<z>>en<<s>> ju<<s>>t play with my boob<<s>> for hour<<s>>.
-	<<case "pregnancy">>
-		<<if getSlave($AS).belly >= 5000>>
-			It'<<s>> ni<<c>>e being a public <<s>>lut, <<s>>ometime<<s>> <<c>>iti<<z>>en<<s>> ju<<s>>t play with my belly for hour<<s>>.
-		<<elseif isFertile(getSlave($AS))>>
-			It'<<s>> great being a public <<s>>lut, I'm going to get pregnant and there'<<s>> nothing I can do to <<s>>top it.
-		<<elseif getSlave($AS).preg > getSlave($AS).pregData.normalBirth/4>>
-			It'<<s>> great being a pregnant public <<s>>lut, I get to <<sh>>ow off my belly all the time.
-		<<elseif getSlave($AS).pregKnown == 1>>
-			Being a public <<s>>lut i<<s>> okay, but it will be great on<<c>>e my belly get<<s>> bigger.
-		<<elseif getSlave($AS).preg > 0>>
-			Being a public <<s>>lut i<<s>> okay, I ju<<s>>t wi<<sh>> I'd get knocked up already.
-		<<else>>
-			Being a public <<s>>lut i<<s>> okay, <<s>>ometime<<s>> I can pretend I can get pregnant.
-		<</if>>
-	<</switch>>
-	<<elseif (getSlave($AS).attrKnown == 1) && (getSlave($AS).attrXY > 60)>>
-		It'<<s>> ni<<c>>e being a public <<s>>lut, I get fucked by a lot of hot guy<<s>>.
-	<<elseif (getSlave($AS).attrKnown == 1) && (getSlave($AS).attrXX > 60)>>
-		It'<<s>> okay being a public <<s>>lut; I get female <<c>>iti<<z>>en<<s>> <<s>>ometime<<s>>.
-	<</if>>
-	<</if>>
-<<case "get milked" "work in the dairy">>
-	<<if getSlave($AS).balls == 0>>
-		<<if (getSlave($AS).fetishKnown == 1)>>
-			<<if (getSlave($AS).energy > 95)>>
-				It'<<s>> pretty ni<<c>>e, being milked.
-			<<elseif (getSlave($AS).fetish == "submissive") && (getSlave($AS).fetishStrength > 60)>>
-				It'<<s>> ni<<c>>e being milked, I get treated like I de<<s>>erve.
-			<<elseif (getSlave($AS).fetish == "boobs") && (getSlave($AS).fetishStrength > 60)>>
-				It'<<s>> <<s>>o, <<s>>o wonderful being milked.
-			<<elseif (getSlave($AS).attrKnown == 1) && (getSlave($AS).attrXX > 80)>>
-				It'<<s>> okay being milked, with all the girl<<s>> and boob<<s>> around.
-			<<else>>
-				Being milked i<<s>> hard work.
-			<</if>>
-		<</if>>
-	<<else>>
-		<<if (getSlave($AS).fetishKnown == 1)>>
-			<<if (getSlave($AS).fetish == "buttslut") || (getSlave($AS).energy > 95)>>
-				Getting buttfucked to orga<<s>>m whenever I can get hard i<<s>> a dream come true. Actually, getting buttfucked until I cum <<if getSlave($AS).prostate > 0>>even when I'm <<s>>oft <</if>>i<<s>> pretty ni<<c>>e too.
-			<<elseif (getSlave($AS).attrKnown == 1) && (getSlave($AS).attrXY > 80)>>
-				It'<<s>> okay getting cockmilked, I like all the dick<<s>> around.
-			<<else>>
-				It'<<s>> <<s>>urpri<<s>>ingly hard work, coming all day.
-			<</if>>
-		<</if>>
-	<</if>>
-<<case "work as a farmhand">>
-	/* TODO: add a description for this */
-<<case "please you" "serve in the master suite" "be your Concubine">>
-	<<if (getSlave($AS).fetishKnown == 1)>>
-		<<if getSlave($AS).toyHole == "mouth" && (getSlave($AS).fetish == "cumslut") && (getSlave($AS).fetishStrength > 60) && ($PC.dick != 0)>>
-			I love <<s>>ucking your cock every
-			<<if $PC.balls >= 14>>
-				day, and I love every opportunity I get to wor<<sh>>ip your ball<<s>>, they're <<s>>o huge and make <<s>>o much cum and I ju<<s>>t want to <<s>>pend my life ki<<ss>>ing your ball<<s>> and <<s>>ucking your cock, and live off your cum...
-			<<elseif $PC.balls >= 9>>
-				day, and I love wor<<sh>>ipping your ma<<ss>>ive ball<<s>>. <<if hasAnyArms(getSlave($AS))>>Your ball<<s>> are <<s>>o big that one te<<s>>ticle fill<<s>> my hand; I even cum without touching my<<s>>elf <<s>>o I can properly <<s>>erve you.<<else>>Feeling you re<<s>>t your ball<<s>> on my fa<<c>>e in between fa<<c>>efuck<<s>> i<<s>> heaven for me.<</if>>
-			<<elseif $PC.balls >= 5>>
-				day, and I love plea<<s>>uring your big ball<<s>> too. They're the perfect <<s>>i<<z>>e to fill my mouth a<<s>> I <<s>>uck on them, and I love feeling them ten<<s>>e again<<s>>t my chin when you <<sh>>oot cum down my throat.
-			<<elseif $PC.scrotum > 0>>
-				day, and I love playing with your ball<<s>> too.
-			<<else>>
-				day.
-			<</if>>
-		<<elseif getSlave($AS).toyHole != "dick">>
-			<<if (getSlave($AS).energy > 95) && ($PC.dick != 0)>>
-				I love how taking your cock i<<s>> my only job, and I love having your other toy<<s>> to have <<s>>e<<x>> too.
-			<<else>>
-				It'<<s>> ni<<c>>e being your $girl.
-			<</if>>
-		<<else>>
-			<<if (getSlave($AS).energy > 95) && ($PC.vagina != -1)>>
-				I love how fucking your <<if ($PC.vagina != -1)>>pu<<ss>>y<<else>>a<<ss>><</if>> i<<s>> my only job, and I'm <<s>>o happy you tru<<s>>t me enough to cum in<<s>>ide you.
-			<<else>>
-				I like letting you u<<s>>e my cock a<<s>> your toy, and I'm happy you tru<<s>>t me enough to cum with you.
-			<</if>>
-		<</if>>
-	<</if>>
-<<case "rest" "rest in the spa">>
-	Thank you for letting me re<<s>>t.
-<<case "work as a nanny">>
-	I love taking care of the babi<<s>>. I hope I get to <<if canSee(getSlave($AS))>><<s>>ee<<else>>have<</if>> them grow up to into good <<s>>lave<<s>> for you.
-<<default>>
-	Being a <<s>>e<<x>> <<s>>lave i<<s>> hard work.
-<</switch>>
-
-<<if ((getSlave($AS).skill.oral + getSlave($AS).skill.anal) >= 120) && (getSlave($AS).vagina == -1)>>
-	I'm really proud of my <<s>>e<<x>> <<s>>kill<<s>>, it'<<s>> ni<<c>>e to be good at what you do. Without a cunt my poor <<if getSlave($AS).anus > 2>>a<<ss>>pu<<ss>>y<<elseif getSlave($AS).anus == 2>>butthole<<else>>little anu<<s>><</if>> doe<<s>> double duty, but I can take it.
-<<elseif (getSlave($AS).skill.oral + getSlave($AS).skill.vaginal + getSlave($AS).skill.anal) >= 180>>
-	I'm really proud of my <<s>>e<<x>> <<s>>kill<<s>>, it'<<s>> ni<<c>>e to be good at what you do.
-<<elseif (getSlave($AS).skill.whoring >= 100)>>
-	I'm really proud of my whoring <<s>>kill<<s>>, pro<<s>>titution i<<s>> ju<<s>>t a job like any other to me.
-<<elseif (getSlave($AS).skill.entertainment >= 100)>>
-	I'm really proud of my <<s>>kill<<s>>, I feel like I can make anyone want me.
-<<elseif (getSlave($AS).skill.anal >= 100)>>
-	<<if (getSlave($AS).vagina == -1)>>
-	I'm really proud of my anal <<s>>kill<<s>>, I can take a dick a<<s>> well a<<s>> anyone.
-	<<else>>
-	I'm really proud of my anal <<s>>kill<<s>>, it'<<s>> fun having three fuckhole<<s>>.
-	<</if>>
-<<elseif (getSlave($AS).skill.anal <= 30) && (getSlave($AS).anus > 0)>>
-	I wi<<sh>> I were better at anal, if I could learn to rela<<x>> getting buttfucked wouldn't hurt <<s>>o much.
-<<elseif (getSlave($AS).skill.vaginal <= 30) && (getSlave($AS).vagina > 0)>>
-	I wi<<sh>> I were better at <<s>>e<<x>>, <<s>>ometime<<s>> all I can think to do i<<s>> ju<<s>>t lie there.
-<<elseif (getSlave($AS).skill.oral <= 30)>>
-	I wi<<sh>> I were better at blowjob<<s>>; it would be ni<<c>>e not to gag <<s>>o much.
-<</if>>
-
-<<if (getSlave($AS).relationship > 0)>>
-	<<set _partner = $slaveIndices[getSlave($AS).relationshipTarget]>>
-	<<if def _partner>>
-		<<if _lisping == 1>>
-			<<set _partnerName = lispReplace($slaves[_partner].slaveName)>>
-		<<else>>
-			<<set _partnerName = $slaves[_partner].slaveName>>
-		<</if>>
-		<<setLocalPronouns $slaves[_partner] 2>>
-		<<set _slave = getSlave($AS)>>
-		<<setSpokenLocalPronouns _slave $slaves[_partner]>>
-	<<else>>
-		@@.red;Error, relationshipTarget not found.@@
-	<</if>>
-	<<if getSlave($AS).relationship <= 2>>
-		I really like <<if canSee(getSlave($AS))>><<s>>eeing<<else>>hanging out with<</if>> _partnerName every day, <<he 2>>'<<s>> a good friend." $He blushes. "<<He 2>>'<<s>> kind of hot, too.
-	<<elseif getSlave($AS).relationship <= 3>>
-		I really like <<if canSee(getSlave($AS))>><<s>>eeing<<else>>hanging out with<</if>> _partnerName every day, <<he 2>>'<<s>> a good friend —" $He blushes. "— even when we're not fucking.
-	<<elseif getSlave($AS).relationship <= 4>>
-		I really love _partnerName." $He blushes. "Thank you for letting u<<s>> be together, <<Master>>.
-	<<else>>
-		I'm <<s>>o happy with _partnerName." $He blushes. "Thank you for _him2, <<Master>>.
-	<</if>>
-	<<if getSlave($AS).relationship >= 3>>
-		<<if getSlave($AS).mother == $slaves[_partner].ID>>
-			"I — I'm fucking my mother," $he bursts out, blushing even harder. "It'<<s>> <<s>>o fucking wrong, but <<he 2>>'<<s>> <<s>>uch a hot MILF, I can't <<s>>top.
-		<<elseif getSlave($AS).father == $slaves[_partner].ID>>
-			I — I'm fucking my father," $he bursts out, blushing even harder. "It'<<s>> <<s>>o fucking wrong, but <<he 2>> know<<s>> <<s>>o much about penetration, I can't <<s>>top.
-		<<elseif $slaves[_partner].mother == $AS>>
-			I — I'm fucking my <<daughter 2>>," $he bursts out, blushing even harder. "It'<<s>> <<s>>o fucking wrong, but <<he 2>> ha<<s>> <<s>>uch a hot little body, I can't <<s>>top.
-		<<elseif $slaves[_partner].father == $AS>>
-			I — I'm fucking my <<daughter 2>>," $he bursts out, blushing even harder. "It'<<s>> <<s>>o fucking wrong, but <<he 2>> ha<<s>> <<s>>uch a hot little body. <<He 2>> look<<s>> <<s>>o much like <<his 2>> mother, I can't <<s>>top.
-		<<elseif areSisters(getSlave($AS), $slaves[_partner]) == 1>>
-			I — I'm fucking my twin <<sister 2>>," $he bursts out, blushing even harder. "It'<<s>> <<s>>o fucking wrong, but <<he 2>>'<<s>> <<s>>o hot, I can't <<s>>top.
-		<<elseif areSisters(getSlave($AS), $slaves[_partner]) == 2>>
-			I — I'm fucking my <<sister 2>>," $he bursts out, blushing even harder. "It'<<s>> <<s>>o fucking wrong, but <<he 2>>'<<s>> <<s>>o hot, I can't <<s>>top.
-		<<elseif areSisters(getSlave($AS), $slaves[_partner]) == 3>>
-			I — I'm fucking my half-<<sister 2>>," $he bursts out, blushing even harder. "It'<<s>> <<s>>o fucking wrong, but <<he 2>>'<<s>> <<s>>o hot, I can't <<s>>top.
-		<<elseif (getSlave($AS).actualAge + 14) < $slaves[_partner].actualAge>>
-			<<He 2>>'<<s>> old enough to be my mother." $He looks down, blushing a little harder. "But I'm lucky, <<he 2>>'<<s>> <<s>>uch a hot MILF.
-		<<elseif (getSlave($AS).actualAge - 14) > $slaves[_partner].actualAge>>
-			<<He 2>>'<<s>> young enough to be my <<daughter 2>>." $He looks down, blushing a little harder. "But I love <<his 2>> hot young body.
-		<</if>>
-		<<if ((getSlave($AS).actualAge - 5) > $slaves[_partner].actualAge) && (20 > $slaves[_partner].actualAge)>>
-			<<He 2>>'<<s>> a little immature at time<<s>>, but having <<s>>e<<x>> with a teenager i<<s>> <<s>>o awe<<s>>ome, it'<<s>> worth it.
-		<</if>>
-		<<if hasAnyProstheticLimbs($slaves[_partner])>>
-			<<set _sex = getLimbCount($slaves[_partner], 103)>>
-			<<set _beauty = getLimbCount($slaves[_partner], 104)>>
-			<<set _combat = getLimbCount($slaves[_partner], 105)>>
-			<<if _sex > 0 && _beauty > 0 && _combat > 0>>
-				<<His 2>> P-Limb<<s>> do look cool and I like how <<s>>trong they can make _him2 but they <<s>>care me a little, <<s>>ometime<<s>>. Though of cour<<s>>e <<he 2>> di<<s>>able<<s>> the weapon<<s>> when we're together." $He giggles. "<<He 2>> ha<<s>> vibe finger<<s>>, <<s>>o that'<<s>> awe<<s>>ome.
-			<<elseif _sex > 0 && _beauty > 0>>
-				I really like <<his 2>> P-Limb<<s>>. They're very pretty, but kind of cold. That'<<s>> ju<<s>>t how <<he 2>> i<<s>>." $He giggles. "<<He 2>> ha<<s>> vibe finger<<s>>. <<S>>o that'<<s>> awe<<s>>ome.
-			<<elseif _beauty > 0 && _combat > 0>>
-				<<His 2>> P-Limb<<s>> do look cool and I like how <<s>>trong they can make _him2 but they <<s>>care me a little, <<s>>ometime<<s>>. Though of cour<<s>>e <<he 2>> di<<s>>able<<s>> the weapon<<s>> when we're together.
-			<<elseif _sex > 0 && _combat > 0>>
-				<<His 2>> P-Limb<<s>> do <<s>>care me a little, <<s>>ometime<<s>>. Though of course <<he 2>> di<<s>>able<<s>> the weapon<<s>> when we're together." $He giggles. "<<He 2>> ha<<s>> vibe finger<<s>>. <<S>>o that'<<s>> awe<<s>>ome.
-			<<elseif _sex > 0>>
-				And, um." $He giggles. "<<He 2>> ha<<s>> vibe finger<<s>>. <<S>>o that'<<s>> awe<<s>>ome.
-			<<elseif _beauty > 0>>
-				I really like <<his 2>> P-Limb<<s>>. They're very pretty, but kind of cold. That'<<s>> ju<<s>>t how <<he 2>> i<<s>>.
-			<<elseif _combat > 0>>
-				<<His 2>> P-Limb<<s>> do <<s>>care me a little, <<s>>ometime<<s>>. Though of course <<he 2>> di<<s>>able<<s>> the weapon<<s>> when we're together." $He giggles. "Though I did get _him2 to e<<x>>tend <<his 2>> blade<<s>> on<<c>>e, <<s>>o I could ki<<ss>> them for luck.
-			<<else>>
-				I really do like <<his 2>> P-Limb<<s>>. They're a little awkward, and kind of cold, but that'<<s>> ju<<s>>t how <<he 2>> i<<s>>.
-			<</if>>
-		<<elseif getLimbCount($slaves[_partner], 0) > 0>>
-			<<He 2>>'<<s>> an amputee, of cour<<s>>e, <<s>>o that'<<s>> a little <<s>>ad.
-		<</if>>
-	<</if>>
-<<elseif (getSlave($AS).relationship == -3)>>
-	<<set _slave = getSlave($AS)>>
-	<<setSpokenLocalPronouns _slave _slave>>
-	<<if getSlave($AS).devotion+getSlave($AS).trust >= 175>>
-		Of cour<<s>>e, I'm your <<wife>>, <<Master>>." $He laughs. "Not e<<x>>actly traditional married life, but I'll do my be<<s>>t to help redefine it.
-	<<elseif getSlave($AS).devotion < -20 && getSlave($AS).trust > 20>>
-		Of cour<<s>>e, I'm your <<wife>>, <<Master>>." $He sighs. "Any other que<<s>>tion<<s>>?
-	<<elseif getSlave($AS).devotion < -20>>
-		I'm your <<wife>>, <<if getSlave($AS).rudeTitle == 1>><<= PoliteRudeTitle(getSlave($AS))>><<else>><<Master>><</if>>," $he <<say>>s, $his voice wavering. "Plea<<s>>e let me go...
-	<<else>>
-		Of cour<<s>>e, I'm your <<wife>>, <<Master>>," $he <<say>>s. "It i<<s>>n't <<s>>o bad, I'm <<s>>tarting to like it.
-	<</if>>
-
-<<elseif (getSlave($AS).relationship == -2)>>
-	I'm good friend<<s>> with <<s>>ome of the other <<s>>lave<<s>>," $he <<if !canTalk(getSlave($AS))>>gestures<<else>>mutters<</if>> hesitantly, looking suddenly embarrassed. "I really like you, though, <<Master>>. Like, //like// you, like you." $He clears $his throat <<if !canTalk(getSlave($AS))>>silently and pointlessly<<else>>nervously<</if>> before hurrying on to safer subjects. "Yeah.
-<<elseif (getSlave($AS).relationship == -1)>>
-	A<<s>> far a<<s>> relation<<sh>>ip<<s>> go, <<Master>>," $he laughs, "I'm <<s>>uch a fucking <<s>>lut. It'<<s>> <<s>>o liberating, not having to worry about any of that crap anymore.
-<</if>>
-
-<<if FutureSocieties.HighestDecoration() >= 60>>
-
-<<if (getSlave($AS).devotion > 75)>>
-	I'll do everything I can to <<s>>upport your vi<<s>>ion for the future.
-<<elseif (getSlave($AS).devotion > 50)>>
-	I do my be<<s>>t to <<s>>upport your vi<<s>>ion for the future.
-<<else>>
-	I try to conform to your vi<<s>>ion for the future.
-<</if>>
-
-<<if $arcologies[0].FSRomanRevivalist >= 10>>
-	<<if (getSlave($AS).intelligence+getSlave($AS).intelligenceImplant > 50)>>
-		The new Rome i<<s>> fa<<sc>>inating, <<Master>>. I'm glad to be a part of it.
-	<<elseif (getSlave($AS).devotion > 20)>>
-		I'm proud to be a <<s>>lave in the new Rome.
-	<<else>>
-		Being a <<s>>lave in the new Rome i<<s>> a little <<s>>cary, <<Master>>. I hear <<s>>lave<<s>> fighting <<s>>ometime<<s>>.
-	<</if>>
-<</if>>
-<<if $arcologies[0].FSNeoImperialist >= 10>>
-	<<if (getSlave($AS).intelligence+getSlave($AS).intelligenceImplant > 50)>>
-		Thi<<s>> new Empire i<<s>> <<s>>trange, but fascinating, <<Master>>. It feel<<s>> like I'm part of hi<<s>>tory in the making.
-	<<elseif (getSlave($AS).devotion > 20)>>
-		I am proud to <<s>>erve your Empire, <<Master>>.
-	<<else>>
-		I don't know about thi<<s>> new Empire, <<Master>>... being property i<<s>> one thing, but being a <<s>>erf i<<s>> <<s>>omething else entirely.
-	<</if>>
-<</if>>
-<<if $arcologies[0].FSAztecRevivalist >= 10>>
-	<<if (getSlave($AS).intelligence+getSlave($AS).intelligenceImplant > 50)>>
-		The new A<<z>>tec Empire i<<s>> enthralling, <<Master>>. I'm ama<<z>>ed at how ea<<s>>ily people jump to <<s>>acrifi<<c>>e and debauchery when they're offered.
-	<<elseif (getSlave($AS).devotion > 20)>>
-		I'm proud to <<s>>erve the will of the god<<s>>, and you.
-	<<else>>
-		Plea<<s>>e, don't <<s>>acrifi<<c>>e me <<Master>>, I'll do anything.
-	<</if>>
-<</if>>
-<<if $arcologies[0].FSEgyptianRevivalist >= 10>>
-	<<if (getSlave($AS).intelligence+getSlave($AS).intelligenceImplant > 50)>>
-		Thi<<s>> new Egypt i<<s>> fa<<sc>>inating, <<Master>>. I'm glad to be a part of it.
-	<<elseif (getSlave($AS).devotion > 20)>>
-		I'm proud to be a <<s>>lave of the new Pharaoh.
-	<<else>>
-		Being a <<s>>lave in thi<<s>> new Egypt i<<s>> a little rea<<ss>>uring. <<S>>ome of the other <<s>>lav<<s>> <<s>>ay they u<<s>>ed to u<<s>>e <<s>>lave<<s>> for great thing<<s>>, anyway.
-	<</if>>
-<</if>>
-<<if $arcologies[0].FSChattelReligionist >= 10>>
-	<<if (getSlave($AS).intelligence+getSlave($AS).intelligenceImplant > 50)>>
-		It'<<s>> intere<<s>>ting, <<s>>eeing how fa<<s>>t a new faith can take hold.
-	<<elseif (getSlave($AS).fetishKnown == 1) && (getSlave($AS).fetish == "masochist") && (getSlave($AS).fetishStrength > 60)>>
-		I — I alway<<s>> thought pain wa<<s>> good for me. It'<<s>> <<s>>o ni<<c>>e to be told that it'<<s>> true at la<<s>>t.
-	<<elseif (getSlave($AS).devotion > 20)>>
-		I'm proud to be a <<s>>lave, <<s>>in<<c>>e that'<<s>> what'<<s>> right for me.
-	<<else>>
-		<<S>>ometime<<s>> I have doubt<<s>> about the new faith, but I do my be<<s>>t to ignore them.
-	<</if>>
-<</if>>
-<<if $arcologies[0].FSIntellectualDependency >= 10>>
-	<<if (getSlave($AS).intelligence+getSlave($AS).intelligenceImplant > 10)>>
-		I ju<<s>>t wish I could <<sh>>are in <<s>>impli<<c>>ity of thing<<s>>.
-	<<elseif (getSlave($AS).intelligence+getSlave($AS).intelligenceImplant <= -50)>>
-		It'<<s>> <<s>>o nice not having to think for my<<s>>elf anymore.
-	<<elseif (getSlave($AS).energy > 50)>>
-		I'm <<s>>o glad that thi<<s>> culture encourage<<s>> being a horny little <<s>>lut.
-	<<else>>
-		I feel out of pla<<c>>e here, but I'll try to rela<<x>> and not overthink thing<<s>> <<s>>o much.
-	<</if>>
-<</if>>
-<<if $arcologies[0].FSDegradationist >= 10>>
-	<<if (getSlave($AS).fetishKnown == 1) && (getSlave($AS).fetish == "submissive") && (getSlave($AS).fetishStrength > 60)>>
-		I — I alway<<s>> knew I wa<<s>> a u<<s>>ele<<ss>> bitch, <<s>>o it'<<s>> ea<<s>>y to a<<cc>>ept being degraded.
-	<<elseif (getSlave($AS).devotion > 20)>>
-		I'm your worthle<<ss>> little degraded fuckpuppet, <<Master>>.
-	<<else>>
-		I'm trying to a<<cc>>ept the degradation, <<Master>>.
-	<</if>>
-<</if>>
-<<if $arcologies[0].FSSlaveProfessionalism >= 10>>
-	<<if (getSlave($AS).intelligence+getSlave($AS).intelligenceImplant > 100)>>
-		I'm <<s>>o glad that I can be of <<s>>uch <<s>>ervi<<c>>e to you. I never thought <<s>>lavery could be <<s>>o intellectually <<s>>timulating, I e<<x>>pected <<s>>o much le<<ss>>.
-	<<elseif (getSlave($AS).intelligence+getSlave($AS).intelligenceImplant > 10)>>
-		<<S>>ometime<<s>> it'<<s>> tough here, but at lea<<s>>t it keep<<s>> my wit<<s>> <<sh>>arp.
-	<<else>>
-		I kind of hate it here, <<Master>>. Everything'<<s>> <<s>>o complicated and people alway<<s>> laugh at me when I need help. You don't think I'm <<s>>tupid too, do you?
-	<</if>>
-<</if>>
-<<if $arcologies[0].FSAssetExpansionist >= 10>>
-	<<if (getSlave($AS).intelligence+getSlave($AS).intelligenceImplant > 50)>>
-		I've been watching all the body dy<<s>>phoria on di<<s>>play lately; it'<<s>> <<c>>ertainly novel.
-	<<elseif (getSlave($AS).energy > 95)>>
-		Thank you <<s>>o much for <<s>>upporting thi<<s>> new T&A e<<x>>pan<<s>>ion culture, <<Master>>. It'<<s>> like you made it ju<<s>>t for me. <<S>>o much eye candy!
-	<<elseif (getSlave($AS).boobs > 1000)>>
-		It'<<s>> almost <<s>>trange, being in a pla<<c>>e where the<<s>>e tit<<s>> don't make me <<s>>tand out.
-	<<else>>
-		I'm a little worried I don't have the tit<<s>> for thi<<s>> new e<<x>>pan<<s>>ion culture though.
-	<</if>>
-<</if>>
-<<if $arcologies[0].FSTransformationFetishist >= 10>>
-	<<if (getSlave($AS).intelligence+getSlave($AS).intelligenceImplant > 50)>>
-		I'm learning a lot about men, ju<<s>>t watching how what'<<s>> beautiful i<<s>> changing.
-	<<elseif (getSlave($AS).energy > 95)>>
-		The arcology i<<s>> like, a bimbo land now, <<Master>>. It'<<s>> <<s>>o hot
-	<<else>>
-		I like getting hotter, <<Master>>, but all the <<s>>urgery i<<s>> <<s>>till a little <<s>>cary.
-	<</if>>
-<</if>>
-<<if $arcologies[0].FSGenderRadicalist >= 10>>
-	<<if (getSlave($AS).intelligence+getSlave($AS).intelligenceImplant > 50)>>
-		I <<s>>uppo<<s>>e it wa<<s>> inevitable that a pla<<c>>e where anyone can be a <<s>>lave would <<s>>tart treating anyone who'<<s>> a <<s>>lave a<<s>> a girl.
-	<<elseif (getSlave($AS).attrKnown == 1) && (getSlave($AS).attrXY > 80)>>
-		I really like how you're encouraging <<s>>lavery to focu<<s>> on cock<<s>>." $He giggles. "I like cock<<s>>!
-	<<elseif (getSlave($AS).dick > 0)>>
-		It i<<s>>n't always ea<<s>>y being a <<s>>lave $girl, but it'<<s>> ni<<c>>e being in a pla<<c>>e where that'<<s>> normal.
-	<<else>>
-		It'<<s>> kind of ni<<c>>e, being a <<s>>lave in a pla<<c>>e where, you know, anyone can be a <<s>>lave.
-	<</if>>
-<</if>>
-<<if $arcologies[0].FSGenderFundamentalist >= 10>>
-	<<if (getSlave($AS).intelligence+getSlave($AS).intelligenceImplant > 50)>>
-		I <<sh>>ouldn't be <<s>>urpri<<s>>ed at how ea<<s>>y it i<<s>> to reinfor<<c>>e traditional value<<s>> in a new, <<s>>lavery focu<<s>>ed culture.
-	<<elseif (getSlave($AS).attrKnown == 1) && (getSlave($AS).attrXX > 80)>>
-		I really like how you're encouraging <<s>>lavery to focu<<s>> on girl<<s>>." $He giggles. "I like girl<<s>>!
-	<<elseif (getSlave($AS).dick > 0)>>
-		I know I'm not a perfect fit for your vi<<s>>ion of the future, but I'll do my be<<s>>t to be a good girl.
-	<<else>>
-		I'm relieved I fit into your vi<<s>>ion of the future of <<s>>lavery.
-	<</if>>
-<</if>>
-<<if $arcologies[0].FSRepopulationFocus >= 10>>
-	<<if (getSlave($AS).intelligence+getSlave($AS).intelligenceImplant > 50)>>
-		I really hope we can <<s>>ave humanity like thi<<s>>.
-	<<elseif (getSlave($AS).fetishKnown == 1) && (getSlave($AS).fetish == "pregnancy")>>
-		I really like how you are encouraging girl<<s>> to get pregnant." $He giggles. "I really like big, pregnant bellie<<s>>!
-	<<elseif (getSlave($AS).preg > getSlave($AS).pregData.normalBirth/4)>>
-		I'm relieved I fit into your vi<<s>>ion of the future. I hope I can give you lot<<s>> of healthy children.
-	<<else>>
-		I know I'm not a perfect fit for your vi<<s>>ion of the future, but I'll do my be<<s>>t to be a good $girl.
-	<</if>>
-<</if>>
-<<if $arcologies[0].FSRestart >= 10>>
-	<<if (getSlave($AS).intelligence+getSlave($AS).intelligenceImplant > 50)>>
-		I really hope we can <<s>>ave humanity like thi<<s>>.
-	<<elseif (getSlave($AS).preg < 0 || getSlave($AS).ovaries == 0)>>
-		I'm relieved I fit into your vi<<s>>ion of the future.
-	<<else>>
-		I know I'm not a perfect fit for your vi<<s>>ion of the future, but I'll do my be<<s>>t to be a good $girl.
-	<</if>>
-<</if>>
-<<if $arcologies[0].FSPhysicalIdealist >= 10>>
-	<<if (getSlave($AS).muscles <= 5)>>
-		I know I'm not a perfect fit for your vi<<s>>ion of the future, but I'll do my be<<s>>t to <<s>>erve everyone who'<<s>> built.
-	<<else>>
-		I'm relieved I fit into your vi<<s>>ion of the future of the human body.
-	<</if>>
-<</if>>
-<<if $arcologies[0].FSHedonisticDecadence >= 10>>
-	<<if (getSlave($AS).weight < 10) && (getSlave($AS).behavioralFlaw == "anorexic")>>
-		I want to keep food down for you, but I can't. I'm <<s>>orry, I ju<<s>>t can't get fat for anyone.
-	<<elseif (getSlave($AS).weight < 10)>>
-		I know I'm not a perfect fit for your vi<<s>>ion of the future, but I'll do my be<<s>>t to eat more and get fatter for you.
-	<<else>>
-		I'm relieved I fit into your vi<<s>>ion of the future of the human body. Can I have <<s>>ome more food now? I'm hungry.
-	<</if>>
-<</if>>
-<<if $arcologies[0].FSPetiteAdmiration >= 10>>
-	<<if !heightPass(getSlave($AS))>>
-		<<if $arcologies[0].FSPetiteAdmirationLaw == 0>>
-			I know I <<s>>tand out in a bad way from all the other <<s>>lave<<s>> thank<<s>> to my height, but I'll do my be<<s>>t to put it to good u<<s>>e for my better<<s>>.
-		<<else>>
-			I know I'm too tall to be con<<s>>idered hot here, but I <<s>>wear I'll try even harder to keep up.
-		<</if>>
-	<<else>>
-		I'm glad I fit in with all the other <<s>>lave<<s>>. It'<<s>> a relief to not be <<s>>ingled out for my height.
-	<</if>>
-<</if>>
-<<if $arcologies[0].FSStatuesqueGlorification >= 10>>
-	<<if !heightPass(getSlave($AS))>>
-		<<if $arcologies[0].FSStatuesqueGlorificationLaw == 0>>
-			I know I'm too <<sh>>ort to be paid any attention to, but I'll still try my harde<<s>>t to keep up with my better<<s>>.
-		<<else>>
-			I know I'm too <<sh>>ort to be con<<s>>idered attractive here, but I <<s>>wear I'll do my be<<s>>t to mea<<s>>ure up.
-		<</if>>
-	<<else>>
-		I'm glad I fit in with everyone. It'<<s>> a relief to not be mocked for being <<sh>>ort.
-	<</if>>
-<</if>>
-<<if $arcologies[0].FSSubjugationist >= 10>>
-	<<if (getSlave($AS).race == $arcologies[0].FSSubjugationistRace)>>
-		I know that a<<s>> a $arcologies[0].FSSubjugationistRace <<s>>lave, it'<<s>> my proper pla<<c>>e to <<s>>erve.
-	<<else>>
-		<<S>>in<<c>>e I'm not a $arcologies[0].FSSubjugationistRace <<s>>lave, I'm a little afraid I don't fit into your vi<<s>>ion of the future.
-	<</if>>
-<</if>>
-<<if $arcologies[0].FSSupremacist >= 10>>
-	<<if (getSlave($AS).race != $arcologies[0].FSSupremacistRace)>>
-		I know that it'<<s>> my proper pla<<c>>e to <<s>>erve my $arcologies[0].FSSupremacistRace better<<s>>.
-	<<else>>
-		I know that $arcologies[0].FSSupremacistRace <<s>>lave<<s>> are rare now, <<s>>o I'll do my be<<s>>t to bring credit to the $arcologies[0].FSSupremacistRace ra<<c>>e.
-	<</if>>
-<</if>>
-<<if $arcologies[0].FSPaternalist >= 10>>
-	I'm <<s>>o lucky to be a <<s>>lave here. The future look<<s>> better all the time.
-<</if>>
-<<if $arcologies[0].FSBodyPurist >= 10>>
-	<<if (getSlave($AS).boobsImplant > 0)>>
-		I know I'm not a perfect fit for your vi<<s>>ion of the future, <<s>>in<<c>>e my tit<<s>> are ugly and fake.
-	<<else>>
-		I'm relieved my boob<<s>> won't need implant<<s>> here.
-	<</if>>
-<</if>>
-<<if $arcologies[0].FSSlimnessEnthusiast >= 10>>
-	<<if (getSlave($AS).weight > 30)>>
-		I know I'm an ugly fat <<s>>lut. I wi<<sh>> I were <<s>>lim.
-	<<elseif getSlave($AS).belly >= 1500 && $arcologies[0].FSRepopulationFocus != "unset" && $propOutcome == 0 && getSlave($AS).breedingMark == 0>>
-		I know I'm an ugly fat <<s>>lut. I wi<<sh>> my belly wa<<s>>n't <<s>>o big.
-	<<elseif getSlave($AS).butt > 3>>
-		I know I'm an ugly, fat a<<ss>>ed <<s>>lut. I wi<<sh>> it wa<<s>> <<s>>maller.
-	<<elseif (getSlave($AS).boobs > 500)>>
-		I know I'm an ugly, big boobed <<s>>lut. I wi<<sh>> my che<<s>>t wa<<s>> <<s>>maller.
-	<<else>>
-		It'<<s>> ni<<c>>e, living in a pla<<c>>e where I don't need big boob<<s>> to be pretty.
-	<</if>>
-<</if>>
-<<if $arcologies[0].FSMaturityPreferentialist >= 10>>
-	<<if (getSlave($AS).actualAge < 30)>>
-		I know I'm ju<<s>>t a young bitch. I try to be good to my elder<<s>>.
-	<<else>>
-		It'<<s>> ni<<c>>e, living in a pla<<c>>e that appre<<c>>iate<<s>> an older lady.
-	<</if>>
-<</if>>
-<<if $arcologies[0].FSYouthPreferentialist >= 10>>
-	<<if (getSlave($AS).actualAge < 30)>>
-		It'<<s>> ni<<c>>e, being young here.
-	<<else>>
-		I know I'm ju<<s>>t an old bitch. I try to <<s>>erve younger and better <<s>>lave<<s>> well.
-	<</if>>
-<</if>>
-<<if $arcologies[0].FSPastoralist >= 10>>
-	<<if (getSlave($AS).lactation > 0) && (getSlave($AS).balls > 0)>>
-		I'll do my be<<s>>t to make a<<s>> much milk and cum for the arcology a<<s>> I can.
-	<<elseif (getSlave($AS).lactation > 0)>>
-		I'll do my be<<s>>t to make a<<s>> much milk for the arcology a<<s>> I can.
-	<<elseif (getSlave($AS).dick > 0) && (getSlave($AS).balls > 0)>>
-		I'll do my be<<s>>t to make a<<s>> much cum for the arcology a<<s>> I can.
-	<<else>>
-		I wi<<sh>> I could make milk for the arcology.
-	<</if>>
-<</if>>
-<</if>> /* closes FS */
-
-<<if (getSlave($AS).devotion > 75)>>
-	<<if getSlave($AS).tankBaby > 0|| getSlave($AS).mother == -1 || (areSisters(getSlave($AS), $PC) && getSlave($AS).actualAge <= $PC.actualAge)>>
-		I've known you my whole life, <<Master>>, I can't really think of any time<<s>> you weren't there for me.
-	<<elseif (areSisters(getSlave($AS), $PC) && getSlave($AS).actualAge > $PC.actualAge) || $PC.mother == $AS || $PC.father == $AS>>
-		You're my dear <<Master>>. I've known you <<s>>in<<c>>e you were born, and I will alway<<s>> be watching out for you, no matter what.
-	<<elseif (getSlave($AS).weekAcquired == 0) && ($week > 104)>>
-		I feel like I've known you my whole life, <<Master>>, and I would follow you to the end of the earth.
-	<<elseif ($week - getSlave($AS).weekAcquired) > 104>>
-		I feel like I know you pretty well, <<Master>>.
-	<</if>>
-<</if>>
-
-<<S>>o,
-<<Master>>," $he concludes,
-<<if (getSlave($AS).fetishKnown == 1)>>
-	<<if (getSlave($AS).fetishStrength > 60)>>
-	<<switch getSlave($AS).fetish>>
-	<<case "submissive">>
-		"Can I <<s>>erve you <<s>>omehow?"
-	<<case "dom">>
-		"Can I hold a bitch down for you?"
-	<<case "sadist">>
-		"Can I <<s>>pank a bitch for you?"
-	<<case "masochist">>
-		"Can I be your pain <<s>>lave now?"
-	<<case "cumslut">>
-		"Can I blow you now?"
-	<<case "humiliation">>
-		"Can I be humiliated now?"
-	<<case "boobs">>
-		"Can I give you a titjob now?"
-	<<case "buttslut">>
-		"Can I be your anal cock<<s>>leeve now?"
-	<<case "pregnancy">>
-		<<if (getSlave($AS).dick > 0) && (getSlave($AS).balls > 0)>>
-			"Are there any <<s>>lave<<s>> you want knocked up?"
-		<<elseif (getSlave($AS).preg > -2) && (getSlave($AS).ovaries > 0)>>
-			<<if getSlave($AS).pregKnown == 1>>
-				"Can I have <<s>>ome more cum in my pregnant pu<<ss>>y?"
-			<<else>>
-				<<if $PC.dick>>
-					"Can you breed me now?"
-				<<else>>
-					"Can I be bred?"
-				<</if>>
-			<</if>>
-		<<else>>
-			"Are there any pregnant <<s>>lave<<s>> I could, you know, <<s>>pend time with?"
-		<</if>>
-	<<default>>
-		"Can I <<s>>erve you <<s>>omehow?"
-	<</switch>>
-	<<elseif (getSlave($AS).energy > 95)>>
-		"Plea<<s>>e fuck me. Plea<<s>>e."
-	<<elseif (getSlave($AS).attrKnown == 1) && (getSlave($AS).attrXX > 80)>>
-		"Can I hang around and get oral from the ne<<x>>t <<s>>lave in here?"
-	<<elseif (getSlave($AS).attrKnown == 1) && (getSlave($AS).attrXY > 80)>>
-		"Can I hang around and <<s>>uck the ne<<x>>t dick in here?"
-	<<else>>
-		"Can I <<s>>erve you <<s>>omehow?"
-	<</if>>
-<<else>>
-	"Can I <<s>>erve you <<s>>omehow?"
-<</if>>
-<</if>> /*Closes fearful and below exempt*/
diff --git a/src/npc/interaction/fPCImpreg.js b/src/npc/interaction/fPCImpreg.js
new file mode 100644
index 0000000000000000000000000000000000000000..2d326bdfe4a115e34e6192567af5be5f2a5cc6ea
--- /dev/null
+++ b/src/npc/interaction/fPCImpreg.js
@@ -0,0 +1,304 @@
+/**
+ * @param {App.Entity.SlaveState} slave
+ * @returns {DocumentFragment}
+ */
+App.Interact.fPCImpreg = function(slave) {
+	const frag = new DocumentFragment();
+
+	const text = [];
+
+	const {He, His, he, his, him, himself} = getPronouns(slave);
+
+	const pregnancyFetish = slave.fetish === 'pregnancy' && slave.fetishStrength > 60 && slave.fetishKnown;
+	const submissive = slave.fetish === 'submissive' && slave.fetishStrength > 60 && slave.fetishKnown;
+	const superfetation = slave.geneticQuirks.superfetation === 2 && slave.pregKnown;
+	const virgin = slave.vagina === 0 || (slave.mpreg && slave.anus === 0);
+	const hole = slave.mpreg ? `asshole` : `pussy`;
+
+	const accepting = slave.devotion > 20;
+	const hesitant = slave.devotion >= -20 && slave.devotion <= 20;
+	const resistant = slave.devotion < -20;
+
+	const loseVirginity = () => {
+		if (slave.mpreg) {
+			slave.anus = 1;
+		} else {
+			slave.vagina = 1;
+		}
+	};
+
+	let fillHim = '';
+	let firstTime = '';
+
+	if (V.PC.prostate > 1) {
+		fillHim = ` filling ${him} until ${his} belly is distended and wobbling with your cum`;
+	} else if (V.PC.prostate > 0) {
+		fillHim = ` pouring into ${him} until ${he} is stuffed with your cum`;
+	} else if (V.PC.balls > 8) {
+		fillHim = ` pouring into ${him}`;
+	}
+
+	text.push(`You call ${him} over so you can`);
+
+	if (slave.mpreg) {
+		const asshole = slave.geneticQuirks.superfetation === 2 && slave.pregKnown
+			? `asshole and put another baby in ${him}`
+			: `asshole`;
+
+		if (slave.anus > 2) {
+			text.push(`fuck ${his} gaping, fertile ${asshole}.`);
+		} else if (slave.anus === 2) {
+			text.push(`use ${his} whorish, fertile ${asshole}.`);
+		} else if (slave.anus === 1) {
+			text.push(`use ${his} tight, fertile ${asshole}.`);
+		} else if (slave.anus === 0) {
+			text.push(`take ${his} fertile, virgin ${asshole}.`);
+		} else {
+			throw new Error(`Unexpected anus value '${slave.anus}' in fPCImpreg()`);
+		}
+
+		text.push(`The crest on ${his} abdomen eagerly awaits a womb stuffed with cum, and who are you to deny its request?`);
+	} else {
+		if (slave.vagina > 2) {
+			text.push(`fuck ${his} gaping, fertile cunt.`);
+		} else if (slave.vagina === 2) {
+			text.push(`use ${his} whorish, fertile cunt.`);
+		} else if (slave.vagina === 1) {
+			text.push(`use ${his} tight, fertile cunt.`);
+		} else if (slave.vagina === 0) {
+			text.push(`take ${his} fertile, virgin pussy.`);
+		} else {
+			throw new Error(`Unexpected vagina value '${slave.vagina}' in fPCImpreg()`);
+		}
+
+		if (superfetation) {
+			text.push(`You plan on putting another baby in ${him}.`);
+		}
+
+		if (slave.vaginaTat) {
+			if (slave.vaginaTat === "tribal patterns") {
+				text.push(`The tattoos on ${his} abdomen certainly draw attention there.`);
+			} else if (slave.vaginaTat === "scenes") {
+				text.push(`The tattoos on ${his} abdomen nicely illustrate what you mean to do to ${him}.`);
+			} else if (slave.vaginaTat === "degradation") {
+				text.push(`The tattoos on ${his} abdomen ask you to, after all.`);
+			} else if (slave.vaginaTat === "lewd crest") {
+				text.push(`The crest on ${his} abdomen eagerly awaits a womb stuffed with cum.`);
+			}
+		}
+
+		if (slave.clit > 0) {
+			if (slave.clit === 1) {
+				text.push(`${His} big clit ${slave.foreskin ? `peeks out from under its hood` : `can't be missed`}.`);
+			} else if (slave.clit > 1) {
+				text.push(`${His} huge clit is impossible to miss.`);
+			}
+		}
+
+		if (slave.vaginaPiercing > 0) {
+			if (slave.vaginaPiercing > 1) {
+				text.push(`${His} pierced lips and clit have ${him} nice and wet.`);
+			} else if (slave.vaginaPiercing === 1) {
+				text.push(`${His} pierced clit has ${him} nice and moist.`);
+			}
+		}
+	}
+
+	if (virgin) {
+		if (pregnancyFetish) {
+			if (isSexuallyPure(slave)) {
+				firstTime = `, knowing that ${his} first time will always be special to ${him}`;
+			}
+
+			text.push(`${He} cries with joy and presents ${his} virgin`);
+
+			if (slave.mpreg) {
+				text.push(`asshole for fertilization.`);
+			} else if (['bushy', 'very bushy', 'bushy in the front and neat in the rear'].includes(slave.pubicHStyle)) {
+				text.push(`treasure, barely visible within her tangle of pubic hair, but ready for fertilization.`);
+			} else if (slave.pubicHStyle === 'in a strip') {
+				text.push(`pussy, accented by ${his} strip of pubic hair, ready for fertilization.`);
+			} else if (slave.pubicHStyle === 'neat') {
+				text.push(`neatly trimmed pussy, ready for fertilization.`);
+			} else if (slave.pubicHStyle === 'waxed') {
+				text.push(`pussy, smooth and bare, ready for fertilization.`);
+			} else {
+				text.push(`pussy, ready for fertilization.`);
+			}
+
+			text.push(`You waste no time with foreplay as you mount ${him} and get to work. As you claim ${his} pearl, ${his} breath hitches in ${his} throat, but pleasure quickly overcomes the pain. ${He} groans as your pelvis repeatedly slaps against ${him} over and over, anticipating what's to come. Just before you reach your peak, you hilt yourself within ${him}, signaling that it's time. ${He} sobs with happiness when ${he} finally feels your hot seed${fillHim}${firstTime}. ${He} spends the rest of the day cherishing ${his} ${bellyAdjective(slave)} stomach. This new connection with ${his} ${getWrittenTitle(slave)} <span class="devotion inc">increases ${his} devotion to you.</span> <span class="virginity loss">${His} ${hole} has been broken in, and there's a good chance 's ${superfetation ? `got another bun in the oven` : `pregnant`}.</span>
+			`);
+
+			slave.devotion += 15;
+
+			loseVirginity();
+		} else if (accepting) {
+			text.push(`${He} accepts your orders without comment and presents ${his} virgin ${hole} for fertilization. ${He} gasps in shock when ${he} feels your hot seed${fillHim}. ${He} spends the rest of the day struggling with roiling emotions. Since ${he} is already well broken${superfetation ? ` and pregnant` : ``}, this new connection with ${his} ${getWrittenTitle(slave)} <span class="devotion inc">increases ${his} devotion to you.</span> <span class="virginity loss">${His} ${hole} has been broken in, and there's a good chance ${he}'s ${superfetation ? `got another bun in the oven` : `pregnant`}.</span>`);
+
+			slave.devotion += 10;
+
+			loseVirginity();
+		} else if (hesitant) {
+			text.push(`${He} is clearly unhappy at losing ${his} pearl of great price to you; this probably isn't what ${he} imagined ${his} first real sex would be like. Worse, ${he} knows ${he}'s fertile and realizes ${superfetation ? `${his} existing pregnancy is not going to stop you from adding another baby to ${his} womb.` : `${he}'ll likely get pregnant.`} Nevertheless, this new connection with ${his} ${getWrittenTitle(slave)} <span class="devotion inc">increases ${his} devotion to you.</span> <span class="virginity loss">${His} ${hole} has been broken in.</span>`);
+
+			slave.devotion += 4;
+
+			loseVirginity();
+		} else if (resistant) {
+			text.push(`As you anticipated, ${he} refuses to give you ${his} virginity. And as you expected, ${he} is unable to resist you. ${He} cries as you force yourself on ${him}, your cock piercing ${his} fresh, tight hole. Afterwards, ${he} ${hasAnyArms(slave) ? `clutches ${his} ${bellyAdjective(slave)} stomach` : `lies there`} and sobs, horrified by the knowledge that ${superfetation ? `${his} unborn ${slave.pregType === 1 ? `child is` : `children are`} now sharing quarters with ${his} rapist's child.` : `${he}'s probably carrying ${his} rapist's child.`} Being raped pregnant <span class="devotion dec">decreases ${his} devotion to you</span> and <span class="trust dec">fills ${him} with fear.</span> <span class="virginity loss">${His} ${hole} has been broken in.</span>`);
+
+			slave.devotion -= 5;
+			slave.trust -= 5;
+
+			loseVirginity();
+		}
+	} else {
+		if (pregnancyFetish) {
+			text.push(`${He} cries with joy and presents ${his} fertile`);
+
+			if (slave.mpreg) {
+				text.push(`asshole for breeding.`);
+			} else if (['bushy', 'very bushy', 'bushy in the front and neat in the rear'].includes(slave.pubicHStyle)) {
+				text.push(`pussy, barely visible within her tangle of pubic hair but ripe for breeding.`);
+			} else if (slave.pubicHStyle === 'in a strip') {
+				text.push(`pussy, accented by ${his} strip of pubic hair and ripe for breeding.`);
+			} else if (slave.pubicHStyle === 'neat') {
+				text.push(`neatly trimmed pussy, ripe for breeding.`);
+			} else if (slave.pubicHStyle === 'waxed') {
+				text.push(`pussy, smooth, bare, and ripe for breeding.`);
+			} else {
+				text.push(`pussy, ripe for breeding.`);
+			}
+
+			text.push(`You waste no time with foreplay as you mount ${him} and get to work. ${He} groans as your pelvis repeatedly slaps against ${him} over and over, anticipating what's to come. Just before you reach your peak, you hilt yourself within ${him}, signaling that it's time. ${He} sobs with happiness when ${he} finally feels your hot seed${fillHim}. ${He} spends the rest of the day cherishing ${his} ${bellyAdjective(slave)} stomach. This new connection with ${his} ${getWrittenTitle(slave)} <span class="devotion inc">increases ${his} devotion to you.</span>`);
+
+			slave.devotion += 10;
+		} else if (isAmputee(slave)) {
+			text.push(`You have ${his} limbless torso set on the end of the couch, face-${superfetation ? `up` : `down`}, with ${his} hips up in the air. This way, you get the greatest degree of penetration into ${his} fertile ${hole} you can manage. ${He} moans ${superfetation ? `openly` : `into the cushions`}, knowing that when ${he} feels the hot flow of semen${fillHim}, ${he} has probably ${superfetation ? `got another bun in the oven` : `gotten pregnant`}.`);
+		} else if (tooBigBelly(slave)) {
+			if (V.PC.prostate > 1) {
+				fillHim = ` filling ${him} until ${his} the pressure forces it to spray around your shaft`;
+			} else if (V.PC.prostate > 0) {
+				fillHim = ` pouring into ${him} until ${he} is stuffed with your cum`;
+			} else if (V.PC.balls > 8) {
+				fillHim = ` pouring into ${him}`;
+			}
+
+			text.push(`Since ${he} already has trouble moving with ${his} ${bellyAdjective(slave)} belly, you just tip ${him} onto it; this leaves ${his} fertile ${hole} exposed and vulnerable. ${He} moans${hasAnyArms(slave) ? ` as ${he} clutches the sides of ${his} stomach` : ``}, knowing that when ${he} feels the hot flow of semen${fillHim}, ${he} has probably gotten ${superfetation ? `another bun added to the oven` : `pregnant`}.`);
+		} else if (tooFatSlave(slave)) {
+			text.push(`You set ${him} down on the couch, face-down, with ${his} hips up in the air. This way, ${he}'s pinned in place by the weight of ${his} own body, and you get the greatest degree of penetration into ${his} fertile ${hole}; after you push into ${his} soft folds enough to reach it, of course. ${He} moans into the cushions, knowing that when ${he} feels the hot flow of semen${fillHim}, ${he} has probably ${superfetation ? `got another bun in the oven` : `gotten pregnant`}.`);
+		} else if (tooBigBreasts(slave)) {
+			text.push(`You set ${him} down on the couch, face-down, with ${his} hips up in the air. This way, ${he}'s pinned in place by the weight of ${his} ridiculous tits, and you get the greatest degree of penetration into ${his} fertile ${hole}. ${He} moans into the cushions, knowing that when ${he} feels the hot flow of semen${fillHim}, ${he} has probably ${superfetation ? `got another bun in the oven` : `gotten pregnant`}.`);
+		} else if (tooBigButt(slave)) {
+			text.push(`You set ${him} down on the couch, face-down, with ${his} hips up in the air. This way, ${he}'s stuck under ${his} ridiculous ass, you get an amazingly soft rear to pound, and you get the greatest degree of penetration into ${his} fertile ${hole}. ${He} moans into the cushions, knowing that when ${he} feels the hot flow of semen${fillHim}, ${he} has probably ${superfetation ? `got another bun in the oven` : `gotten pregnant`}.`);
+		} else if (tooBigDick(slave)) {
+			text.push(`You set ${him} down on the couch, face-down, with ${his} hips up in the air. This way, ${he}'s anchored in place by the weight of ${his} ridiculous cock, and you get the greatest degree of penetration into ${his} fertile ${hole}. ${He} moans into the cushions, knowing that when ${he} feels the hot flow of semen${fillHim}, ${he} has probably ${superfetation ? `got another bun in the oven` : `gotten pregnant`}.`);
+		} else if (tooBigBalls(slave)) {
+			text.push(`You set ${him} down on the couch, face-down, with ${his} hips up in the air. This way, ${he}'s anchored in place by the weight of ${his} ridiculous balls, and you get the greatest degree of penetration into ${his} fertile ${hole}. ${He} moans into the cushions, knowing that when ${he} feels the hot flow of semen${fillHim}, ${he} has probably ${superfetation ? `got another bun in the oven` : `gotten pregnant`}.`);
+		} else if (submissive) {
+			let fillsHim = '';
+
+			if (V.PC.prostate > 1) {
+				fillsHim = `fills ${him} until ${his} belly is distended and wobbling with your cum`;
+			} else if (V.PC.prostate > 0) {
+				fillsHim = `pours into ${him} until ${he} is stuffed with your cum`;
+			} else if (V.PC.balls > 8) {
+				fillsHim = `pours into ${him}`;
+			} else {
+				fillsHim = `jets into ${his} welcoming depths`;
+			}
+
+			text.push(`${He} ${slave.belly >= 10000 ? `waddles` : `comes`} submissively over, smiling a little submissive smile, and spreads ${himself} for you. ${slave.belly < 5000
+				? `You take ${him} on the couch next to your desk in the missionary position. ${He} hugs ${his} torso to you and ${his} breasts press against your chest; you can feel ${his} heart beating hard.`
+				: `You take ${him} from behind against your desk. ${He} steadies ${himself} as ${he} feels your hands roaming across ${his} ${bellyAdjective(slave)} belly. As the sex reaches its climax, ${his} breaths grow short and ${his} moans passionate.`}
+			As the sex reaches its climax your semen ${fillsHim} as ${he} begs you to use ${his} unworthy body to make a new slave.`);
+		} else if (accepting) {
+			let fillingHim = '';
+
+			if (V.PC.prostate > 1) {
+				fillingHim = `flowing into ${him} until ${his} stomach is distended and wobbling with your cum`;
+			} else if (V.PC.prostate > 0) {
+				fillingHim = `pouring into ${him} until ${he} is stuffed with your cum`;
+			} else if (V.PC.balls > 8) {
+				fillingHim = `pouring into ${him}`;
+			} else {
+				fillingHim = `jetting into ${him}`;
+			}
+
+			text.push(`${slave.belly < 5000
+				? `${He} skips over smiling and gives you a quick kiss. You take ${him} on the couch next to your desk in the missionary position. ${He} hugs ${his} torso to you and ${his} breasts press against your ${V.PC.boobs > 300 ? `own;` : `chest; `} you can feel ${his} heart beating hard. As the sex reaches its climax, ${his} kisses grow urgent and passionate. ${He} clings to you,`
+				: `${He} waddles over smiling and leans in to give you a quick kiss. You decide to take ${him} from behind against your desk. ${He} steadies ${himself} against the furniture as ${he} feels your hands roaming across ${his} ${bellyAdjective(slave)} belly. You begin to pound into ${him} and as the sex reaches its climax, ${his} breaths grow short and ${his} moans passionate. As you reach your respective peaks, ${he} pushes ${himself} back against you, feeling`}
+			your semen ${fillingHim} as ${he} rides the downslope of ${his} orgasm. ${He} kisses you and promises to do ${his} best to use ${his} womb to make ${superfetation ? `another` : `a`} good slave for you.`);
+		} else if (hesitant) {
+			let full = '';
+
+			if (V.PC.prostate > 1) {
+				full = ` far beyond capacity`;
+			} else if (V.PC.prostate > 0) {
+				full = ` beyond capacity`;
+			} else if (V.PC.balls > 8) {
+				full = ` to capacity`;
+			}
+
+			text.push(`${He} obeys, lying on the couch next to your desk${hasAnyLegs(slave) ? ` with ${his} leg${hasBothLegs(slave) ? `s spread` : ` moved aside`}` : ``}. You kneel on the ground and enter ${him}${hasAnyLegs(slave) ? `, a hand on ${hasBothLegs(slave) ? `each of ${his} legs` : `${his} leg`} to give you purchase` : ``}. The pounding is hard and fast, and ${he} gasps and whines. ${slave.belly > 100000 ? `You reach a hand up to tease ${his} already taut dome of a pregnancy.` : `You reach a hand down to maul ${his} breasts.`} ${He} begs you not to cum inside ${him}, knowing ${he}'s fertile, but soon loses track of ${his} fears as ${he} enjoys ${himself}. ${He} bites ${his} lip and moans as ${he} climaxes. You follow ${him} over the edge as you give one final, deep thrust before filling ${his} squeezing fuckhole${full} with your cum; ${he} realizes what you've done with a gasp and a worried look.`);
+		} else if (resistant) {
+			if (V.PC.prostate > 1) {
+				fillHim = `filling ${him} until ${his} belly is distended and wobbling with your cum`;
+			} else if (V.PC.prostate > 0) {
+				fillHim = `pouring into ${him} until ${he} is stuffed with your cum`;
+			} else if (V.PC.balls > 8) {
+				fillHim = `pouring into ${him}`;
+			} else {
+				fillHim = `blow your load`;
+			}
+
+			text.push(`${He} tries to refuse, so you bend the disobedient slave over your desk and take ${him} hard from behind. ${His} breasts slide back and forth across the desk. You give ${his} buttocks some nice hard swats as you pound ${him}. ${He} grunts and moans but knows better than to try to get away. ${He} begs you not to cum inside ${him}, knowing ${he}'s fertile, and sobs when ${he} feels you ${fillHim} despite ${his} pleas.`);
+		}
+	}
+
+	text.push(`You repeat this ritual throughout the week, ensuring that ${slave.slaveName}`);
+
+	if (superfetation) {
+		text.push(`has <span class="pregnant">added your child</span> to ${his} pregnancy.`);
+	} else {
+		text.push(`is <span class="pregnant">carrying your child.</span>`);
+	}
+
+	if (V.arcologies[0].FSRestart !== 'unset' && (!slave.breedingMark || !V.propOutcome) && V.eugenicsFullControl) {
+		text.push(`Rumors spread about you fucking your slaves pregnant; the Societal Elite are <span class="reputation dec">very displeased</span> by these rumors.`);
+
+		V.failedElite += 5;
+	}
+
+	if (V.arcologies[0].FSGenderRadicalist !== 'unset' && slave.mpreg) {
+		text.push(`Society <span class="reputation inc">approves</span> of your fucking your slaves' asses pregnant; this advances the ideal all a slave needs is ${his} rear.`);
+
+		// FIXME: The left-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type.
+		repX(V.FSSingleSlaveRep * (V.arcologies[0].FSGenderRadicalist / V.FSLockinLevel), 'futureSocieties', slave);
+		// FIXME: Operator '+=' cannot be applied to types 'string | number' and 'number'.
+		V.arcologies[0].FSGenderRadicalist += 0.05 * V.FSSingleSlaveRep;
+	} else if (V.arcologies[0].FSGenderFundamentalist !== 'unset') {
+		if (slave.mpreg) {
+			text.push(`Society <span class="reputation inc">approves</span> of your putting a new slave in ${him}; this advances the idea that all slaves should bear their masters' babies.`);
+
+			// FIXME: The left-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type.
+			repX(forceNeg(V.FSSingleSlaveRep * (V.arcologies[0].FSGenderFundamentalist / V.FSLockinLevel)), 'futureSocieties', slave);
+			// FIXME: Operator '+=' cannot be applied to types 'string | number' and 'number'.
+			V.arcologies[0].FSGenderFundamentalist -= 0.05 * V.FSSingleSlaveRep;
+		} else {
+			text.push(`Society <span class="reputation dec">is disgusted</span> by this degenerate form of reproduction.`);
+
+			// FIXME: The left-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type.
+			repX(V.FSSingleSlaveRep * (V.arcologies[0].FSGenderFundamentalist / V.FSLockinLevel), 'futureSocieties', slave);
+			// FIXME: Operator '+=' cannot be applied to types 'string | number' and 'number'.
+			V.arcologies[0].FSGenderFundamentalist += 0.05 * V.FSSingleSlaveRep;
+		}
+	}
+
+	addPartner(slave, -1);
+	knockMeUp(slave, 100, 2, -1, true);
+
+	App.Events.addNode(frag, text);
+
+	return frag;
+};
diff --git a/src/npc/interaction/fPCImpreg.tw b/src/npc/interaction/fPCImpreg.tw
deleted file mode 100644
index 96a8826dc25857db955f39f02ce1d4335c9cd223..0000000000000000000000000000000000000000
--- a/src/npc/interaction/fPCImpreg.tw
+++ /dev/null
@@ -1,219 +0,0 @@
-:: FPCImpreg [nobr no-history]
-
-/* TODO: add reactions for incest */
-
-<<run App.Utils.setLocalPronouns(getSlave($AS))>>
-<<run addPartner(getSlave($AS), -1)>>
-<<set _bonus = random(6,20)>>
-<<set _belly = bellyAdjective(getSlave($AS))>>
-<<set _superfetation = (getSlave($AS).geneticQuirks.superfetation == 2 && getSlave($AS).pregKnown == 1) ? 1 : 0>>
-
-<<if getSlave($AS).mpreg == 1>>
-	<<set getSlave($AS).counter.anal += _bonus+1, $analTotal += _bonus+1>>
-<<else>>
-	<<set getSlave($AS).counter.vaginal += _bonus+1, $vaginalTotal += _bonus+1>>
-<</if>>
-
-You call $him over so you can
-<<if getSlave($AS).mpreg == 1>>
-	<<if (getSlave($AS).anus > 2)>>
-		fuck $his gaping, fertile
-	<<elseif (getSlave($AS).anus == 2)>>
-		use $his whorish, fertile
-	<<elseif (getSlave($AS).anus == 1)>>
-		use $his tight, fertile
-	<<elseif (getSlave($AS).anus == 0)>>
-		take $his fertile, virgin
-	<</if>>
-	<<if _superfetation == 1>>
-		asshole and put another baby in $him.
-	<<else>>
-		asshole.
-	<</if>>
-	<<if (getSlave($AS).vaginaTat == "lewd crest")>>
-		The crest on $his abdomen eagerly awaits a womb stuffed with cum, and who are you to deny its request?
-	<</if>>
-<<else>>
-	<<if (getSlave($AS).vagina > 2)>>
-		fuck $his gaping, fertile cunt.
-	<<elseif (getSlave($AS).vagina == 2)>>
-		use $his whorish, fertile cunt.
-	<<elseif (getSlave($AS).vagina == 1)>>
-		use $his tight, fertile cunt.
-	<<elseif (getSlave($AS).vagina == 0)>>
-		take $his fertile, virgin pussy.
-	<</if>>
-	<<if _superfetation == 1>>
-		You plan on putting another baby in $him.
-	<</if>>
-
-	<<if (getSlave($AS).vaginaTat == "tribal patterns")>>
-		The tattoos on $his abdomen certainly draw attention there.
-	<<elseif (getSlave($AS).vaginaTat == "scenes")>>
-		The tattoos on $his abdomen nicely illustrate what you mean to do to $him.
-	<<elseif (getSlave($AS).vaginaTat == "degradation")>>
-		The tattoos on $his abdomen ask you to, after all.
-	<<elseif (getSlave($AS).vaginaTat == "lewd crest")>>
-		The crest on $his abdomen eagerly awaits a womb stuffed with cum.
-	<</if>>
-
-	<<if getSlave($AS).clit == 1>>
-		$His big clit <<if getSlave($AS).foreskin > 0>>peeks out from under its hood<<else>>can't be missed<</if>>.
-	<<elseif getSlave($AS).clit > 2>>
-		$His huge clit is impossible to miss.
-	<</if>>
-
-	<<if (getSlave($AS).vaginaPiercing > 1) && (getSlave($AS).vagina != -1)>>
-		$His pierced lips and clit have $him nice and wet.
-	<<elseif (getSlave($AS).vaginaPiercing == 1) && (getSlave($AS).vagina != -1)>>
-		$His pierced clit has $him nice and moist.
-	<</if>>
-<</if>>
-
-<<if (getSlave($AS).fetish == "pregnancy") && (getSlave($AS).fetishStrength > 60) && (getSlave($AS).fetishKnown == 1) && (getSlave($AS).vagina == 0 || (getSlave($AS).anus == 0 && getSlave($AS).mpreg == 1))>>
-	$He cries with joy and presents $his virgin
-	<<if getSlave($AS).mpreg == 1>>
-		asshole for fertilization.
-	<<elseif getSlave($AS).pubicHStyle == "bushy" || getSlave($AS).pubicHStyle == "very bushy" || getSlave($AS).pubicHStyle == "bushy in the front and neat in the rear">>
-		treasure, barely visible within her tangle of pubic hair, but ready for fertilization.
-	<<elseif getSlave($AS).pubicHStyle == "in a strip">>
-		pussy, accented by $his strip of pubic hair, ready for fertilization.
-	<<elseif getSlave($AS).pubicHStyle == "neat">>
-		neatly trimmed pussy, ready for fertilization.
-	<<elseif getSlave($AS).pubicHStyle == "waxed" || getSlave($AS).pubicHStyle == "bald" || getSlave($AS).pubicHStyle == "hairless">>
-		pussy, smooth and bare, ready for fertilization.
-	<</if>>
-	You waste no time with foreplay as you mount $him and get to work. As you claim $his pearl, $his breath hitches in $his throat, but pleasure quickly overcomes the pain. $He groans as your pelvis repeatedly slaps against $him over and over, anticipating what's to come. Just before you reach your peak, you hilt yourself within $him, signaling that it's time. $He sobs with happiness when $he finally feels your hot seed<<if $PC.prostate >= 2>> filling $him until $his belly is distended and wobbling with your cum<<elseif $PC.prostate >= 1>> pouring into $him until $he is stuffed with your cum<<elseif $PC.balls >= 9>> pouring into $him<</if>>, knowing that $his first time will always be special to $him. $He spends the rest of the day cherishing $his _belly stomach. This new connection with $his <<= getWrittenTitle(getSlave($AS))>> @@.hotpink;increases $his devotion to you.@@ @@.lime;$His <<if getSlave($AS).mpreg == 1>>asshole<<else>>pussy<</if>> has been broken in, and there's a good chance $he's <<if _superfetation == 1>>got another bun in the oven<<else>>pregnant<</if>>.@@
-	<<if getSlave($AS).mpreg == 1>>
-		<<set getSlave($AS).anus = 1>>
-	<<else>>
-		<<set getSlave($AS).vagina = 1>>
-	<</if>>
-	<<set getSlave($AS).devotion += 15>>
-<<elseif (getSlave($AS).fetish == "pregnancy") && (getSlave($AS).fetishStrength > 60) && (getSlave($AS).fetishKnown == 1)>>
-	$He cries with joy and presents $his fertile
-	<<if getSlave($AS).mpreg == 1>>
-		asshole for breeding.
-	<<elseif getSlave($AS).pubicHStyle == "bushy" || getSlave($AS).pubicHStyle == "very bushy" || getSlave($AS).pubicHStyle == "bushy in the front and neat in the rear">>
-		pussy, barely visible within her tangle of pubic hair but ripe for breeding.
-	<<elseif getSlave($AS).pubicHStyle == "in a strip">>
-		pussy, accented by $his strip of pubic hair and ripe for breeding.
-	<<elseif getSlave($AS).pubicHStyle == "neat">>
-		neatly trimmed pussy, ripe for breeding.
-	<<elseif getSlave($AS).pubicHStyle == "waxed" || getSlave($AS).pubicHStyle == "bald" || getSlave($AS).pubicHStyle == "hairless">>
-		pussy, smooth, bare and ripe for breeding.
-	<</if>>
-	You waste no time with foreplay as you mount $him and get to work. $He groans with pleasure as your pelvis slaps against $him over and over, anticipating what's to come. Just before you reach your peak, you hilt yourself within $him, signaling that it's time. $He sobs with happiness when $he finally feels your hot seed<<if $PC.prostate >= 2>> filling $him until $his belly is distended and wobbling with your cum<<elseif $PC.prostate >= 1>> pouring into $him until $he is stuffed with your cum<<elseif $PC.balls >= 9>> pouring into $him<</if>>. $He spends the rest of the day considering $his own _belly stomach with pride. This new connection with $his <<= getWrittenTitle(getSlave($AS))>> @@.hotpink;increases $his devotion to you.@@
-	<<set getSlave($AS).devotion += 10>>
-<<elseif (getSlave($AS).devotion > 20) && (getSlave($AS).vagina == 0 || (getSlave($AS).anus == 0 && getSlave($AS).mpreg == 1))>>
-	$He accepts your orders without comment and presents $his virgin <<if getSlave($AS).mpreg == 1>>asshole<<else>>pussy<</if>> for fertilization. $He gasps in shock when $he feels your hot seed<<if $PC.prostate >= 2>> filling $him until $his belly is distended and wobbling with your cum<<elseif $PC.prostate >= 1>> pouring into $him until $he is stuffed with your cum<<elseif $PC.balls >= 9>> pouring into $him<</if>>. $He spends the rest of the day struggling with roiling emotions. Since $he is already well broken<<if _superfetation == 1>> and pregnant<</if>>, this new connection with $his <<= getWrittenTitle(getSlave($AS))>> @@.hotpink;increases $his devotion to you.@@ @@.lime;$His <<if getSlave($AS).mpreg == 1>>asshole<<else>>pussy<</if>> has been broken in, and there's a good chance $he's <<if _superfetation == 1>>got another bun in the oven<<else>>pregnant<</if>>.@@
-	<<if getSlave($AS).mpreg == 1>>
-		<<set getSlave($AS).anus = 1>>
-	<<else>>
-		<<set getSlave($AS).vagina = 1>>
-	<</if>>
-	<<set getSlave($AS).devotion += 10>>
-<<elseif (getSlave($AS).devotion >= -20) && (getSlave($AS).vagina == 0 || (getSlave($AS).anus == 0 && getSlave($AS).mpreg == 1))>>
-	$He is clearly unhappy at losing $his pearl of great price to you; this probably isn't what $he imagined $his first real sex would be like. Worse, $he knows $he's fertile and realizes
-	<<if _superfetation == 1>>
-		$his existing pregnancy is not going to stop you from adding another baby to $his womb.
-	<<else>>
-		$he'll likely get pregnant.
-	<</if>>
-	Nevertheless, this new connection with $his <<= getWrittenTitle(getSlave($AS))>> @@.hotpink;increases $his devotion to you.@@ @@.lime;$His <<if getSlave($AS).mpreg == 1>>asshole<<else>>pussy<</if>> has been broken in.@@
-	<<if getSlave($AS).mpreg == 1>>
-		<<set getSlave($AS).anus = 1>>
-	<<else>>
-		<<set getSlave($AS).vagina = 1>>
-	<</if>>
-	<<set getSlave($AS).devotion += 4>>
-<<elseif (getSlave($AS).vagina == 0 || (getSlave($AS).anus == 0 && getSlave($AS).mpreg == 1))>>
-	As you anticipated, $he refuses to give you $his virginity. And as you expected, $he is unable to resist you. $He cries as you force yourself on $him, your cock piercing $his fresh, tight hole. Afterwards, $he <<if hasAnyArms(getSlave($AS))>>clutches $his _belly stomach<<else>>lies there<</if>> and sobs, horrified by the knowledge that
-	<<if _superfetation == 1>>
-		$his unborn <<if getSlave($AS).pregType == 1>>child is<<else>>children are<</if>> now sharing quarters with $his rapist's child.
-	<<else>>
-		$he's probably carrying $his rapist's child.
-	<</if>>
-	The rape @@.mediumorchid;decreases $his devotion to you@@ and @@.gold;fills $him with fear.@@ @@.lime;$His <<if getSlave($AS).mpreg == 1>>asshole<<else>>pussy<</if>> has been broken in.@@
-	<<set getSlave($AS).devotion -= 5, getSlave($AS).trust -= 5>>
-	<<if getSlave($AS).mpreg == 1>>
-		<<set getSlave($AS).anus = 1>>
-	<<else>>
-		<<set getSlave($AS).vagina = 1>>
-	<</if>>
-<<elseif isAmputee(getSlave($AS))>>
-	You have $his limbless torso set on the end of the couch, face-<<if _superfetation == 1>>up<<else>>down<</if>>, with $his hips up in the air. This way, you get the greatest degree of penetration into $his fertile <<if getSlave($AS).mpreg == 1>>ass<<else>>pussy<</if>> you can manage. $He moans <<if _superfetation == 1>>openly<<else>>into the cushions<</if>>, knowing that when $he feels the hot flow of semen<<if $PC.prostate >= 2>> filling $him until $his belly is distended and wobbling with your cum<<elseif $PC.prostate >= 1>> pouring into $him until $he is stuffed with your cum<<elseif $PC.balls >= 9>> pouring into $him<</if>>, $he has probably <<if _superfetation == 1>>got another bun in the oven<<else>>gotten pregnant<</if>>.
-<<elseif tooBigBelly(getSlave($AS))>>
-	Since $he already has trouble moving with $his _belly belly, you just tip $him onto it; this leaves $his fertile <<if getSlave($AS).mpreg == 1>>ass<<else>>pussy<</if>> exposed and vulnerable. $He moans<<if hasAnyArms(getSlave($AS))>> as $he clutches the sides of $his stomach<</if>>, knowing that when $he feels the hot flow of semen<<if $PC.prostate >= 2>> filling $him until $his the pressure forces it to spray around your shaft<<elseif $PC.prostate >= 1>> pouring into $him until $he is stuffed with your cum<<elseif $PC.balls >= 9>> pouring into $him<</if>>, $he has probably gotten <<if _superfetation == 1>> another bun added to the oven<<else>>pregnant<</if>>.
-<<elseif tooFatSlave(getSlave($AS))>>
-	You set $him down on the couch, face-down, with $his hips up in the air. This way, $he's pinned in place by the weight of $his own body, and you get the greatest degree of penetration into $his fertile <<if getSlave($AS).mpreg == 1>>ass<<else>>pussy<</if>>; after you push into $his soft folds enough to reach it, of course. $He moans into the cushions, knowing that when $he feels the hot flow of semen<<if $PC.prostate >= 2>> filling $him until $his belly is distended and wobbling with your cum<<elseif $PC.prostate >= 1>> pouring into $him until $he is stuffed with your cum<<elseif $PC.balls >= 9>> pouring into $him<</if>>, $he has probably <<if _superfetation == 1>>got another bun in the oven<<else>>gotten pregnant<</if>>.
-<<elseif tooBigBreasts(getSlave($AS))>>
-	You set $him down on the couch, face-down, with $his hips up in the air. This way, $he's pinned in place by the weight of $his ridiculous tits, and you get the greatest degree of penetration into $his fertile <<if getSlave($AS).mpreg == 1>>ass<<else>>pussy<</if>>. $He moans into the cushions, knowing that when $he feels the hot flow of semen<<if $PC.prostate >= 2>> filling $him until $his belly is distended and wobbling with your cum<<elseif $PC.prostate >= 1>> pouring into $him until $he is stuffed with your cum<<elseif $PC.balls >= 9>> pouring into $him<</if>>, $he has probably <<if _superfetation == 1>>got another bun in the oven<<else>>gotten pregnant<</if>>.
-<<elseif tooBigButt(getSlave($AS))>>
-	You set $him down on the couch, face-down, with $his hips up in the air. This way, $he's stuck under $his ridiculous ass, you get an amazingly soft rear to pound, and you get the greatest degree of penetration into $his fertile <<if getSlave($AS).mpreg == 1>>ass<<else>>pussy<</if>>. $He moans into the cushions, knowing that when $he feels the hot flow of semen<<if $PC.prostate >= 2>> filling $him until $his belly is distended and wobbling with your cum<<elseif $PC.prostate >= 1>> pouring into $him until $he is stuffed with your cum<<elseif $PC.balls >= 9>> pouring into $him<</if>>, $he has probably <<if _superfetation == 1>>got another bun in the oven<<else>>gotten pregnant<</if>>.
-<<elseif tooBigDick(getSlave($AS))>>
-	You set $him down on the couch, face-down, with $his hips up in the air. This way, $he's anchored in place by the weight of $his ridiculous cock, and you get the greatest degree of penetration into $his fertile <<if getSlave($AS).mpreg == 1>>ass<<else>>pussy<</if>>. $He moans into the cushions, knowing that when $he feels the hot flow of semen<<if $PC.prostate >= 2>> filling $him until $his belly is distended and wobbling with your cum<<elseif $PC.prostate >= 1>> pouring into $him until $he is stuffed with your cum<<elseif $PC.balls >= 9>> pouring into $him<</if>>, $he has probably <<if _superfetation == 1>>got another bun in the oven<<else>>gotten pregnant<</if>>.
-<<elseif tooBigBalls(getSlave($AS))>>
-	You set $him down on the couch, face-down, with $his hips up in the air. This way, $he's anchored in place by the weight of $his ridiculous balls, and you get the greatest degree of penetration into $his fertile <<if getSlave($AS).mpreg == 1>>ass<<else>>pussy<</if>>. $He moans into the cushions, knowing that when $he feels the hot flow of semen<<if $PC.prostate >= 2>> filling $him until $his belly is distended and wobbling with your cum<<elseif $PC.prostate >= 1>> pouring into $him until $he is stuffed with your cum<<elseif $PC.balls >= 9>> pouring into $him<</if>>, $he has probably <<if _superfetation == 1>>got another bun in the oven<<else>>gotten pregnant<</if>>.
-<<elseif (getSlave($AS).fetish == "submissive") && (getSlave($AS).fetishStrength > 60) && (getSlave($AS).fetishKnown == 1)>>
-	$He <<if getSlave($AS).belly >= 10000>>waddles<<else>>comes<</if>> submissively over, smiling a little submissive smile, and spreads $himself for you.
-	<<if getSlave($AS).belly < 5000>>
-		You take $him on the couch next to your desk in the missionary position. $He hugs $his torso to you and $his breasts press against your chest; you can feel $his heart beating hard.
-	<<else>>
-		You take $him from behind against your desk. $He steadies $himself as $he feels your hands roaming across $his _belly belly. As the sex reaches its climax, $his breaths grow short and $his moans passionate. $He pushed against you,
-	<</if>>
-	As the sex reaches its climax your semen<<if $PC.prostate >= 2>> fills $him until $his stomach is distended and wobbling with your cum<<elseif $PC.prostate >= 1>> pours into $him until $he is stuffed with your cum<<elseif $PC.balls >= 9>> pours into $him<<else>> jets into $his welcoming depths<</if>> as $he begs you to use $his unworthy body to make a new slave.
-<<elseif getSlave($AS).devotion < -20>>
-	$He tries to refuse, so you bend the disobedient slave over your desk and take $him hard from behind. $His breasts slide back and forth across the desk. You give $his buttocks some nice hard swats as you pound $him. $He grunts and moans but knows better than to try to get away. $He begs you not to cum inside $him, knowing $he's fertile, and sobs when $he feels you<<if $PC.prostate >= 2>> filling $him until $his belly is distended and wobbling with your cum<<elseif $PC.prostate >= 1>> pouring into $him until $he is stuffed with your cum<<elseif $PC.balls >= 9>> pouring into $him<<else>> blow your load<</if>> despite $his pleas.
-<<elseif getSlave($AS).devotion <= 20>>
-	$He obeys, lying on the couch next to your desk<<if hasAnyLegs(getSlave($AS))>> with $his leg<<if hasBothLegs(getSlave($AS))>>s spread<<else>> moved aside<</if>><</if>>. You kneel on the ground and enter $him<<if hasAnyLegs(getSlave($AS))>>, a hand on <<if hasBothLegs(getSlave($AS))>>each of $his legs<<else>>$his leg<</if>> to give you purchase<</if>>. The pounding is hard and fast, and $he gasps and whines.
-	<<if getSlave($AS).belly >= 100000>>
-		You reach a hand up to tease $his already taut dome of a pregnancy.
-	<<else>>
-		You reach a hand down to maul $his breasts.
-	<</if>>
-	$He begs you not to cum inside $him, knowing $he's fertile, but soon loses track of $his fears as $he enjoys $himself. $He bites $his lip and moans as $he climaxes. You follow $him over the edge as you give one final, deep thrust before filling $his squeezing fuckhole<<if $PC.prostate >= 2>> far beyond capacity<<elseif $PC.prostate >= 1>> beyond capacity<<elseif $PC.balls >= 9>> to capacity<</if>> with your cum; $he realizes what you've done with a gasp and a worried look.
-<<else>>
-	<<if getSlave($AS).belly < 5000>>
-		$He skips over smiling and gives you a quick kiss. You take $him on the couch next to your desk in the missionary position. $He hugs $his torso to you and $his breasts press against your
-		<<if $PC.boobs >= 300>>
-			own;
-		<<else>>
-			chest;
-		<</if>>
-		you can feel $his heart beating hard. As the sex reaches its climax, $his kisses grow urgent and passionate. $He clings to you,
-	<<else>>
-		$He waddles over smiling and leans in to give you a quick kiss. You decide to take $him from behind against your desk. $He steadies $himself against the furniture as $he feels your hands roaming across $his _belly belly. You begin to pound into $him and as the sex reaches its climax, $his breaths grow short and $his moans passionate. As you reach your respective peaks, $he pushes $himself back against you, feeling
-	<</if>>
-	your semen<<if $PC.prostate >= 2>> flowing into $him until $his stomach is distended and wobbling with your cum<<elseif $PC.prostate >= 1>> pouring into $him until $he is stuffed with your cum<<elseif $PC.balls >= 9>> pouring into $him<<else>> jetting into $him<</if>> as $he rides the downslope of $his orgasm. $He kisses you and promises to do $his best to use $his womb to make <<if _superfetation == 1>>another<<else>>a<</if>> good slave for you.
-<</if>>
-
-You repeat this ritual throughout the week, ensuring that <<= getSlave($AS).slaveName>>
-<<if _superfetation == 1>>
-	has @@.lime;added your child@@ to $his pregnancy.
-<<else>>
-	is @@.lime;carrying your child.@@
-<</if>>
-
-
-<<= knockMeUp(getSlave($AS), 100, 2, -1, 1)>>
-
-<<if $arcologies[0].FSRestart != "unset">>
-	<<if (getSlave($AS).breedingMark != 1 || $propOutcome == 0) && $eugenicsFullControl != 1>>
-		Rumors spread about you fucking your slaves pregnant; the Societal Elite are @@.red; very displeased@@ by these rumors.
-		<<set $failedElite += 5>>
-	<</if>>
-<</if>>
-<<if $arcologies[0].FSGenderRadicalist != "unset" && getSlave($AS).mpreg == 1>>
-	Society @@.green;approves@@ of your fucking your slaves' asses pregnant; this advances the ideal all a slave needs is $his rear.
-	<<run repX($FSSingleSlaveRep*($arcologies[0].FSGenderRadicalist/$FSLockinLevel), "futureSocieties", getSlave($AS))>>
-	<<set $arcologies[0].FSGenderRadicalist += 0.05*$FSSingleSlaveRep>>
-<<elseif $arcologies[0].FSGenderFundamentalist != "unset" && getSlave($AS).mpreg == 1>>
-	Society @@.red;is disgusted@@ by this degenerate form of reproduction.
-	<<run repX(forceNeg($FSSingleSlaveRep*($arcologies[0].FSGenderFundamentalist/$FSLockinLevel)), "futureSocieties", getSlave($AS))>>
-	<<set $arcologies[0].FSGenderFundamentalist -= 0.05*$FSSingleSlaveRep>>
-<<elseif $arcologies[0].FSGenderFundamentalist != "unset">>
-	Society @@.green;approves@@ of your putting a new slave in $him; this advances the idea that all slaves should bear their masters' babies.
-	<<run repX($FSSingleSlaveRep*($arcologies[0].FSGenderFundamentalist/$FSLockinLevel), "futureSocieties", getSlave($AS))>>
-	<<set $arcologies[0].FSGenderFundamentalist += 0.05*$FSSingleSlaveRep>>
-<</if>>
diff --git a/src/npc/interaction/passage/fMarry.js b/src/npc/interaction/passage/fMarry.js
new file mode 100644
index 0000000000000000000000000000000000000000..5116ed69223e4839c601d721307865ffa4c15bf2
--- /dev/null
+++ b/src/npc/interaction/passage/fMarry.js
@@ -0,0 +1,1053 @@
+new App.DomPassage("FMarry",
+	() => {
+		V.nextButton = "Back";
+		V.nextLink = "Slave Interact";
+		const slave = getSlave(V.AS);
+		const {
+			His, He,
+			his, he, him, himself, wife, girl, women
+		} = getPronouns(slave);
+		const {title: Master, say: say} = getEnunciation(slave);
+		const el = new DocumentFragment();
+		let r = [];
+		const belly = bellyAdjective(slave);
+		const relSlave = getSlave(slave.relationshipTarget);
+		const {
+			he2, him2, his2
+		} = getPronouns(relSlave ? relSlave : {pronoun: App.Data.Pronouns.Kind.plural}).appendSuffix("2");
+		const {
+			hisP
+		} = getPronouns(V.PC).appendSuffix("P");
+		const groom = V.PC.title === 1 ? `groom` : `bride`;
+		const {
+			HeA, HisA,
+			heA, hisA, himA, girlA, himselfA, womanA, loliA
+		} = getPronouns(assistant.pronouns().main).appendSuffix("A");
+		const myName = (SlaveStatsChecker.checkForLisp(slave)) ? lispReplace(slave.slaveName) : slave.slaveName;
+		const playerSurname = (SlaveStatsChecker.checkForLisp(slave)) ? lispReplace(V.PC.slaveSurname) : V.PC.slaveSurname;
+		let reactionType;
+		r.push(`You tell ${slave.slaveName} that you're going to marry ${him}. (A proposal, of course, would be inappropriate, even in so enlightened a place as your arcology.)`);
+		if (slave.fetish === "mindbroken") {
+			r.push(`${He} doesn't react.`);
+			reactionType = 0;
+		} else if (slave.devotion+slave.trust >= 175) {
+			r.push(`You're not exactly lacking in ways to make`);
+			if (slave.physicalAge > 30) {
+				r.push(`${women}`);
+			} else {
+				r.push(`${girl}s`);
+			}
+			r.push(`burst into tears, but this one is unusually effective. When ${he}'s gotten ${himself} under control again,`);
+			if (!hasAnyArms(slave)) {
+				r.push(`looking somewhat embarrassed that ${he} can't wipe ${his} own tears`);
+			} else {
+				r.push(`distractedly cuffing away ${his} tears`);
+			}
+			r.push(`and consciously breathing deeply,`);
+			if (canTalk(slave)) {
+				r.push(`${he} ${say}s,`);
+				if (slave.relationship !== 0) {
+					if (slave.relationship === -1) {
+						r.push(`"I promise I'll try to stop sleeping around so much."`);
+					} else if (slave.relationship === 4) {
+						r.push(`"I'll have to break up with ${relSlave.slaveName}... I'll try to let ${him2} down gently, ${he2}'ll understand."`);
+					} else if (slave.relationship === 3) {
+						r.push(`"${relSlave.slaveName} will miss having sex with me, but ${he2}'ll understand."`);
+					} else if (slave.relationship > 0) {
+						r.push(`"I'll have to stop hanging out with ${relSlave.slaveName}; I'm sure ${he2}'ll understand."`);
+					} else {
+						r.push(`"I've been waiting for this day! I'm so happy!"`);
+					}
+					r.push(`${He} continues,`);
+				}
+				r.push(`"Thank you, ${Master}. I am going to do my best to be a`);
+				if (slave.fetishKnown === 1 && slave.fetishStrength > 60) {
+					if (slave.fetish === "submissive") {
+						r.push(`perfect submissive ${wife} to you,`);
+					} else if (slave.fetish === "cumslut") {
+						r.push(`perfect oral ${wife},`);
+					} else if (slave.fetish === "humiliation") {
+						r.push(`hot ${wife} for you,`);
+					} else if (slave.fetish === "buttslut") {
+						r.push(`perfect little anal ${wife},`);
+					} else if (slave.fetish === "boobs") {
+						if (slave.boobs > 800) {
+							r.push(`perfect big-boobed`);
+						} else {
+							r.push(`perfect-boobed`);
+						}
+						r.push(`${wife}`);
+					} else if (slave.fetish === "pregnancy") {
+						r.push(`perfect barefoot breeding ${wife},`);
+					} else if (slave.fetish === "dom") {
+						r.push(`perfect, you know, sharing ${wife} with other slaves,`);
+					} else if (slave.fetish === "sadist") {
+						r.push(`perfect ${wife} to use on other slaves,`);
+					} else if (slave.fetish === "masochist") {
+						r.push(`good, beaten ${wife},`);
+					} else {
+						r.push(`good ${wife},`);
+					}
+				} else {
+					r.push(`good ${wife},`);
+				}
+				r.push(`${Master}. Oh, thank you, ${Master}," ${he} blubbers, and starts crying again.`);
+			} else if (!hasAnyArms(slave)) {
+				r.push(`${he} painstakingly mouths ${his} thanks, since ${he} cannot speak or use hands to sign.`);
+				if (slave.relationship !== 0) {
+					r.push(`${He} struggles to tell you`);
+					if (slave.relationship === -1) {
+						r.push(`that ${he}'ll try to be less of a slut.`);
+					} else if (slave.relationship === 4) {
+						r.push(`that ${he}'ll try to let ${his} lover ${relSlave.slaveName} down gently.`);
+					} else if (slave.relationship === 3) {
+						r.push(`that ${he}'ll try to let ${his} FWB ${relSlave.slaveName} down gently.`);
+					} else if (slave.relationship > 0) {
+						r.push(`that ${he}'ll have to stop hanging around ${relSlave.slaveName}.`);
+					} else {
+						r.push(`that ${he} has never been happier.`);
+					}
+				}
+			} else {
+				r.push(`${he} shakily signs ${his} thanks twice in a row before breaking down again.`);
+				if (slave.relationship !== 0) {
+					r.push(`${He} regains composure enough to continue signing out`);
+					if (slave.relationship === -1) {
+						r.push(`that ${he}'ll try to be less of a slut.`);
+					} else if (slave.relationship === 4) {
+						r.push(`that ${he}'ll try to let ${his} lover ${relSlave.slaveName} down gently.`);
+					} else if (slave.relationship === 3) {
+						r.push(`that ${he}'ll try to let ${his} FWB ${relSlave.slaveName} down gently.`);
+					} else if (slave.relationship > 0) {
+						r.push(`that ${he}'ll have to stop hanging around ${relSlave.slaveName}.`);
+					} else {
+						r.push(`that ${he} has never been happier.`);
+					}
+				}
+			}
+			r.push(`Despite ${his} devotion and trust, ${he} is still a slave, and probably knows that ${his} position could always change. This brings ${him} one step closer to true permanence, and ${he} knows it.`);
+			reactionType = 1;
+		} else if (slave.devotion < -20 && slave.trust > 20) {
+			r.push(`You're not exactly lacking in ways to make`);
+			if (slave.physicalAge > 30) {
+				r.push(`${women}`);
+			} else {
+				r.push(`${girl}s`);
+			}
+			r.push(`burst into tears, but this one is surprisingly effective. It seems ${slave.slaveName} does not want to marry you, if ${his} prolonged, anguished sobbing is anything to go by. However, ${he} would have to be a fool to think there's any way out of it.`);
+			if (canTalk(slave)) {
+				r.push(`${He} ${say}s, "Please ${Master}, I don't want to`);
+				if (slave.fetishKnown === 1 && slave.fetishStrength > 60) {
+					if (slave.fetish === "submissive") {
+						r.push(`be your little submissive fucktoy,`);
+					} else if (slave.fetish === "cumslut") {
+						r.push(`be your cum sucker,`);
+					} else if (slave.fetish === "humiliation") {
+						r.push(`be stripped bare and shown off,`);
+					} else if (slave.fetish === "buttslut") {
+						r.push(`have things shoved up my butt,`);
+					} else if (slave.fetish === "boobs") {
+						r.push(`have my tits teased every night,`);
+					} else if (slave.fetish === "pregnancy") {
+						if (canGetPregnant(slave)) {
+							r.push(`get knocked up by you,`);
+						} else {
+							r.push(`be your pregnant toy,`);
+						}
+					} else if (slave.fetish === "dom") {
+						r.push(`have to rule your sissy dick,`);
+					} else if (slave.fetish === "sadist") {
+						r.push(`spank your ass,`);
+					} else if (slave.fetish === "masochist") {
+						r.push(`get beaten by you,`);
+					} else {
+						r.push(`stay in your nice room,`);
+					}
+				} else {
+					r.push(`stay in your nice room,`);
+				}
+
+				r.push(`${Master}. You're a terrible person, ${Master}," ${he} blubbers, and starts crying again.`);
+				if (slave.relationship !== 0) {
+					if (slave.relationship === -1) {
+						r.push(`"I'll never be satisfied by just you!"`);
+					} else if (slave.relationship === 4) {
+						r.push(`"I love ${relSlave.slaveName}, not you ${Master}! You'll never be as good as ${him2}!"`);
+					} else if (slave.relationship === 3) {
+						r.push(`"But I like having sex with ${relSlave.slaveName}, not you ${Master}! You'll never be ss good as ${him2}!"`);
+					} else if (slave.relationship > 0) {
+						r.push(`"But I like spending time with ${relSlave.slaveName}, ${he2}'s so much nicer to be around than you, ${Master}.`);
+					} else {
+						r.push(`"I need you in my life, ${Master}, so why don't you bend down like the bitch you are and`);
+						if (slave.dick > 0) {
+							r.push(`suck my dick,`);
+						} else if (slave.vagina > -1) {
+							r.push(`eat me out,`);
+						} else {
+							r.push(`lick my ass,`);
+						}
+						r.push(`${Master}?"`);
+					}
+				}
+			} else if (!hasAnyArms(slave)) {
+				r.push(`${he} painstakingly mouths ${his} displeasure, since ${he} cannot speak or use hands to sign.`);
+				if (slave.relationship !== 0) {
+					if (slave.relationship === -1) {
+						r.push(`${He} desperately tries to explain that you'll never satisfy ${him}.`);
+					} else if (slave.relationship === 4) {
+						r.push(`${He} desperately tries to explain that ${his} love, ${relSlave.slaveName}, is better than you'll ever be.`);
+					} else if (slave.relationship === 3) {
+						r.push(`${He} desperately tries to explain that ${his} lover, ${relSlave.slaveName}, satisfies ${his} far better than you can.`);
+					} else if (slave.relationship > 0) {
+						r.push(`${He} desperately tries to explain ${his} friend, ${relSlave.slaveName}, is so much more enjoyable to be around than you.`);
+					} else {
+						r.push(`${He} wiggles ${his} nethers at you, as if trying to tell you to do something.`);
+					}
+				}
+			} else {
+				r.push(`${he} shakily makes a rather rude hand gesture before crying more.`);
+				if (slave.relationship !== 0) {
+					if (slave.relationship === -1) {
+						r.push(`${He} also makes it clear that you'll never satisfy ${him}.`);
+					} else if (slave.relationship === 4) {
+						r.push(`${He} also makes it clear that ${his} love, ${relSlave.slaveName}, is better than you'll ever be.`);
+					} else if (slave.relationship === 3) {
+						r.push(`${He} also makes it clear that ${his} lover, ${relSlave.slaveName}, satisfies ${him} far better than you can.`);
+					} else if (slave.relationship > 0) {
+						r.push(`${He} also makes it clear ${his} friend, ${relSlave.slaveName}, is so much more enjoyable to be around than you.`);
+					} else {
+						r.push(`On top of the prior gesturing, ${he} adds another, lewder one involving you and ${his} crotch.`);
+					}
+				}
+			}
+			r.push(`Despite ${his} "fortune", ${he} is still a slave, and undoubtedly knows that ${his} position could easily change should you tire of ${him}. ${His} tears may not all be genuine either, you have a feeling ${he} may be trying to take advantage of you.`);
+			reactionType = 2;
+		} else if (slave.devotion < -20) {
+			r.push(`You're not exactly lacking in ways to make`);
+			if (slave.physicalAge > 30) {
+				r.push(`${women}`);
+			} else {
+				r.push(`${girl}s`);
+			}
+			r.push(`burst into tears, but this one is unusually effective. It seems ${slave.slaveName} does not want to marry you, if ${his} prolonged, anguished sobbing is anything to go by. However, ${he} would have to be a fool to think there's any way out of it. You lean in and whisper that`);
+			if (slave.fetishKnown === 1 && slave.fetishStrength > 60) {
+				if (slave.fetish === "submissive") {
+					r.push(`${he}'ll make the perfect submissive ${wife} for you dominate.`);
+				} else if (slave.fetish === "cumslut") {
+					r.push(`${he}'ll make the perfect oral ${wife} for your`);
+					if (V.PC.dick > 0 && V.PC.vagina >= 0) {
+						r.push(`dick and pussy`);
+					} else if (V.PC.dick > 0) {
+						r.push(`cock`);
+					} else {
+						r.push(`pussy`);
+					}
+					r.push(`to enjoy.`);
+				} else if (slave.fetish === "humiliation") {
+					r.push(`${he}'ll make a hot ${wife} for you to parade around naked.`);
+				} else if (slave.fetish === "buttslut") {
+					r.push(`${he}'ll make the perfect little anal ${wife}`);
+					if (V.PC.dick > 0) {
+						r.push(`to keep your dick warm.`);
+					} else {
+						r.push(`stick things in.`);
+					}
+				} else if (slave.fetish === "boobs") {
+					r.push(`${he}'ll make the`);
+					if (slave.boobs > 800) {
+						r.push(`perfect big-boobed`);
+					} else {
+						r.push(`perfect-boobed`);
+					}
+					r.push(`${wife} for you to bury your head into.`);
+				} else if (slave.fetish === "pregnancy") {
+					r.push(`${he}'ll make the perfect barefoot breeding ${wife}.`);
+					if (V.PC.dick > 0 && canGetPregnant(slave)) {
+						r.push(`You poke ${him} with your erection, letting ${him} know what ${he}'s in for.`);
+					}
+				} else if (slave.fetish === "dom") {
+					r.push(`${he}'ll make the perfect dominant ${wife} to force upon ${his} closest friends.`);
+				} else if (slave.fetish === "sadist") {
+					r.push(`${he}'ll make the perfect cruel ${wife} to force upon ${his} closest friends.`);
+				} else if (slave.fetish === "masochist") {
+					r.push(`${he}'ll make a good, beaten ${wife}.`);
+				} else {
+					r.push(`${he}'ll make a good ${wife}.`);
+				}
+			} else {
+				r.push(`${he}'ll make a good ${wife}.`);
+			}
+			if (canTalk(slave)) {
+				r.push(`"${Master}. Please, ${Master}, don't make me do this. I don't want this!" ${he} blubbers, and starts crying again.`);
+				if (slave.relationship !== 0) {
+					if (slave.relationship === -1) {
+						r.push(`"I need a new dick in me every night! How can I be satisfied like this?!"`);
+					} else if (slave.relationship === 4) {
+						r.push(`"I love ${name}! Please don't split us up ${Master}! I'll be a good ${girl}, ${Master}, please!"`);
+					} else if (slave.relationship === 3) {
+						r.push(`"I love playing around with ${relSlave.slaveName}! Please don't split us up ${Master}! I'll be a good ${girl}, ${Master}, please!"`);
+					} else if (slave.relationship > 0) {
+						r.push(`"But I like spending time with ${relSlave.slaveName}! Please don't split us up ${Master}! I'll be a good ${girl}, ${Master}, please!"`);
+					} else {
+						r.push(`"I need you in my life, ${Master}, but not like this, please?"`);
+					}
+				}
+			} else if (!hasAnyArms(slave)) {
+				r.push(`${He} painstakingly pleads with you, since ${he} cannot speak or use hands to sign.`);
+				if (slave.relationship !== 0) {
+					if (slave.relationship === -1) {
+						r.push(`${He} desperately tries to explain that ${he} needs multiple partners.`);
+					} else if (slave.relationship === 4) {
+						r.push(`${He} desperately begs you to not separate ${him} from ${his} love, ${relSlave.slaveName}.`);
+					} else if (slave.relationship === 3) {
+						r.push(`${He} desperately begs you to not separate ${him} from ${his} lover, ${relSlave.slaveName}.`);
+					} else if (slave.relationship > 0) {
+						r.push(`${He} desperately begs you to not separate ${him} from ${his} friend, ${relSlave.slaveName}.`);
+					} else {
+						r.push(`${He} desperately begs you to not marry ${him}, despite ${his} emotional connection with you.`);
+					}
+				}
+			} else {
+				r.push(`${He} desperately struggles to plead with you before breaking down again.`);
+				if (slave.relationship !== 0) {
+					if (slave.relationship === -1) {
+						r.push(`${He} tries to explain that ${he} needs multiple partners.`);
+					} else if (slave.relationship === 4) {
+						r.push(`${He} begs you to not separate ${him} from ${his} love, ${relSlave.slaveName}.`);
+					} else if (slave.relationship === 3) {
+						r.push(`${He} begs you to not separate ${him} from ${his} lover, ${relSlave.slaveName}.`);
+					} else if (slave.relationship > 0) {
+						r.push(`${He} begs you to not separate ${him} from ${his} friend, ${relSlave.slaveName}.`);
+					} else {
+						r.push(`${He} begs you to not marry ${him}, despite ${his} emotional connection with you.`);
+					}
+				}
+			}
+			r.push(`You leave ${him} to weep and consider ${his} fate. Despite ${his} "fortune", ${he} is still a slave, and undoubtedly knows that ${his} position could easily change should you tire of ${him}.`);
+			reactionType = 2;
+		} else {
+			r.push(`${He} doesn't really react to this. By no means does ${he} want to be your ${wife}, but ${he}'s obedient enough to know that you are in charge. You leave ${him} to ${his} business, and go back to yours.`);
+			if (slave.relationship !== 0) {
+				if (slave.relationship === -1) {
+					r.push(`${He} sighs at the realization that ${he} won't be allowed to be so promiscuous and will have to learn to focus ${his} attention on you.`);
+				} else if (slave.relationship === 4) {
+					r.push(`${He} sighs at the realization that ${he}'ll have to stop seeing ${his} love, ${relSlave.slaveName}.`);
+				} else if (slave.relationship === 3) {
+					r.push(`${He} sighs at the realization that ${he}'ll have to stop spending so much time with ${his} lover, ${relSlave.slaveName}.`);
+				} else if (slave.relationship > 0) {
+					r.push(`${He} sighs at the realization that ${he}'ll have to stop spending so much time with ${his} friend, ${relSlave.slaveName}.`);
+				} else {
+					r.push(`Deep down, ${he} dreamed of this. But now that it's happening ${he} can't shake the feeling of regret.`);
+				}
+			}
+			reactionType = 3;
+		}
+		App.Events.addParagraph(el, r);
+		r = [];
+
+		r.push(`${capFirstChar(V.assistant.name)} prompts you for wedding`);
+		if (V.assistant.personality <= 0) {
+			r.push(`instructions.`);
+		} else {
+			r.push(`instructions, ${hisA}`);
+			if (V.assistant.appearance === "monstergirl") {
+				r.push(`monster${girlA} avatar appearing in a surprisingly conventional surplice that covers ${himA} up decently. All except for hisA horns, which protrude from under the headpiece.`);
+			} else if (V.assistant.appearance === "shemale") {
+				r.push(`shemale avatar appears in a collar patterned to look like a minister's, and absolutely nothing else, stroking ${himselfA} with anticipation.`);
+			} else if (V.assistant.appearance === "amazon") {
+				r.push(`amazon avatar wearing a tribal shaman's cape and carrying a medicine stick adorned with all sorts of little charms and baubles.`);
+			} else if (V.assistant.appearance === "businesswoman") {
+				r.push(`business${womanA} avatar looking rather severe in a minister's collar.`);
+			} else if (V.assistant.appearance === "fairy") {
+				r.push(`fairy avatar looking incredibly silly, dressed in an oversized, disheveled priest's robes and looking rather smug about it.`);
+			} else if (V.assistant.appearance === "pregnant fairy") {
+				r.push(`fairy avatar looking incredibly silly, dressed in an oversized, disheveled priest's robes stretched tight by ${hisA} pregnant belly and looking rather smug about it.`);
+			} else if (V.assistant.appearance === "goddess") {
+				r.push(`goddess avatar completely unchanged, since ${heA} considers hisA usual form perfectly appropriate for a marriage.`);
+			} else if (V.assistant.appearance === "hypergoddess") {
+				r.push(`goddess avatar completely unchanged, since ${heA} considers hisA usual form perfectly appropriate for a marriage.`);
+			} else if (V.assistant.appearance === "loli") {
+				r.push(`${loliA} avatar looking surprisingly mature in a minister's collar. Though, ${heA} would rather be the flower ${girlA} in this wedding.`);
+			} else if (V.assistant.appearance === "preggololi") {
+				r.push(`${loliA} avatar looking surprisingly mature in a minister's collar. Though, heA would rather be the flower ${girlA} in this wedding.`);
+			} else if (V.assistant.appearance === "schoolgirl") {
+				r.push(`school${girlA} avatar looking willfully absurd in a minister's collar and ${hisA} usual short plaid skirt.`);
+			} else if (V.assistant.appearance === "angel") {
+				r.push(`angelic avatar looking, well, angelic in ${hisA} usual garb with an added minister's collar.`);
+			} else if (V.assistant.appearance === "cherub") {
+				r.push(`angelic avatar looking absurd in ${hisA} oversized robe, complete with wing-holes, and minister's collar.`);
+			} else if (V.assistant.appearance === "incubus") {
+				r.push(`demonic avatar completely unchanged, since ${heA} considers hisA usual form perfectly appropriate for a marriage, though heA has made sure to be fully erect for the wedding.`);
+			} else if (V.assistant.appearance === "succubus") {
+				r.push(`demonic avatar wearing nothing but a minister's collar. ${HeA} has brought several marital aids along with himA to tease the bride and groom with.`);
+			} else if (V.assistant.appearance === "imp") {
+				r.push(`demonic avatar looking absurd in ${hisA} oversized robe, complete with wing-holes, and minister's collar.`);
+			} else if (V.assistant.appearance === "witch") {
+				r.push(`witchy avatar looking rather formal in a fine robe and minister's collar.`);
+			} else if (V.assistant.appearance === "ERROR_1606_APPEARANCE_FILE_CORRUPT") {
+				r.push(`twitching avatar completely unchanged, sans a bulbous ring of flesh around ${hisA} neck that sort of resembles a minister's collar.`);
+			} else {
+				r.push(`symbol appearing in white.`);
+			}
+		}
+		App.Events.addParagraph(el, r);
+		const planned = () => {
+			if (V.weddingPlanned === 1) {
+				return `a straightforward ceremony`;
+			} else if (V.weddingPlanned === 2) {
+				return `an orgiastic ceremony`;
+			} else if (V.weddingPlanned === 3) {
+				return `an impregnation ceremony`;
+			}
+		};
+
+		const events = [
+			new App.Events.Result(`Just redesignate ${him} as your slave wife`, designate),
+			new App.Events.Result(`Have your assistant marry ${him} to you`, marryNow),
+		];
+		events.push(new App.Events.Result(null, null, `Invite prominent citizens to a wedding: `));
+		if (V.cash > 10000) {
+			if (V.weddingPlanned === 0 || V.weddingPlanned === 1) {
+				events.push(new App.Events.Result(`Straightforward ceremony`, straightforward, `This will cost ${cashFormat(10000)}`));
+			} else {
+				events.push(new App.Events.Result(null, null, `You are already hosting ${planned()} and cannot host a straightforward ceremony`));
+			}
+			if (slave.vagina !== 0 && slave.anus !== 0) {
+				if (V.weddingPlanned === 0 || V.weddingPlanned === 2) {
+					events.push(new App.Events.Result(`Orgiastic ceremony`, orgiastic, `This will involve the slave having sex with a very large number of citizens, and will cost ${cashFormat(10000)}`));
+				} else {
+					events.push(new App.Events.Result(null, null, `You are already hosting ${planned()} and cannot host an orgiastic ceremony`));
+				}
+			}
+			if (isFertile(slave) && V.PC.dick !== 0) {
+				if (V.weddingPlanned === 0 || V.weddingPlanned === 3) {
+					events.push(new App.Events.Result(`Impregnation ceremony`, impregnation, `This will involve you impregnating the slave, and will cost ${cashFormat(10000)}`));
+				} else {
+					events.push(new App.Events.Result(null, null, `You are already hosting ${planned()} and cannot host an impregnation ceremony`));
+				}
+			}
+		} else {
+			events.push(new App.Events.Result(null, null, `You cannot afford an elaborate ceremony`));
+		}
+		App.Events.addResponses(el, events);
+		return el;
+
+		function designate() {
+			let r = [];
+			const el = new DocumentFragment();
+			r.push(`You order ${V.assistant.name} to simply redesignate ${slave.slaveName} as your slave ${wife}.`);
+			if (V.assistant.personality <= 0) {
+				r.push(`"Slave redesignated," it responds immediately. The thing is done.`);
+			} else {
+				if (V.assistant.appearance === "monstergirl") {
+					r.push(`${HisA} avatar snaps ${hisA} fingers and shrugs off ${hisA} surplice, revealing ${hisA} tentacle hair, pale skin, and cocks once more.`);
+				} else if (V.assistant.appearance === "shemale") {
+					r.push(`${HisA} avatar snaps ${hisA} fingers and starts to masturbate more energetically.`);
+				} else if (V.assistant.appearance === "amazon") {
+					r.push(`${HisA} avatar gives ${hisA} medicine stick a shake.`);
+				} else if (V.assistant.appearance === "businesswoman") {
+					r.push(`${HisA} avatar snaps ${hisA} fingers.`);
+				} else if (V.assistant.appearance.includes("fairy")) {
+					r.push(`${HisA} avatar claps ${hisA} hands twice, looking a bit disappointed at the lack of celebration.`);
+				} else if (V.assistant.appearance.includes("goddess")) {
+					r.push(`${HisA} avatar makes a complex hand gesture, looking beatific.`);
+				} else if (V.assistant.appearance.includes("loli")) {
+					r.push(`${HisA} avatar claps ${hisA} hands together.`);
+				} else if (V.assistant.appearance === "schoolgirl") {
+					r.push(`${HisA} avatar snaps ${hisA} fingers and gives a little twirl.`);
+				} else if (V.assistant.appearance === "angel") {
+					r.push(`${HisA} avatar spreads ${hisA} wings and arms and emits a flash of light.`);
+				} else if (V.assistant.appearance === "cherub") {
+					r.push(`${HisA} avatar claps ${hisA} hands together, emitting a burst of light.`);
+				} else if (V.assistant.appearance === "incubus") {
+					r.push(`${HisA} avatar flicks the tip of ${hisA} penis and blows ${hisA} load towards the both of you.`);
+				} else if (V.assistant.appearance === "succubus") {
+					r.push(`${HisA} avatar starts to masturbate furiously and orgasms lewdly.`);
+				} else if (V.assistant.appearance === "imp") {
+					r.push(`${HisA} avatar claps ${hisA} hands together, emitting a burst of darkness.`);
+				} else if (V.assistant.appearance === "witch") {
+					r.push(`${HisA} avatar pulls out ${hisA} spell book and attempts a spell to bind you two; heA manages to conjure a large ring around himselfA, pinning ${hisA} arms to ${hisA} sides.`);
+				} else if (V.assistant.appearance === "ERROR_1606_APPEARANCE_FILE_CORRUPT") {
+					r.push(`${HisA} avatar splits open to reveal a number of tentacles and wraps them around each other.`);
+				} else {
+					r.push(`${HisA} symbol flashes.`);
+				}
+				r.push(`"Done," heA says.`);
+			}
+			if (slave.relationship > 0) {
+				slave.relationshipTarget = 0;
+				relSlave.relationship = 0;
+				relSlave.relationshipTarget = 0;
+			}
+			if (slave.devotion+slave.trust >= 175) {
+				if (slave.relationship > 0) {
+					r.push(`Both ${him} and ${his} ex are <span class="mediumorchid">disappointed</span> that their relationship had to end and <span class="gold">worry</span> for each other's future.`);
+					if (slave.relationship === 4) {
+						relSlave.devotion -= 5;
+						relSlave.trust -= 5;
+					} else if (slave.relationship === 3) {
+						relSlave.devotion -= 3;
+						relSlave.trust -= 3;
+					} else {
+						relSlave.devotion -= 1;
+						relSlave.trust -= 1;
+					}
+				}
+			} else if (slave.devotion < -20) {
+				if (slave.relationship === -1) {
+					r.push(`${He} <span class="mediumorchid">hates</span> that ${he} has to be yours only and <span class="gold">fears</span> what will happen if ${he} strays.`);
+					slave.devotion -= 40;
+					slave.trust -= 40;
+				} else if (slave.relationship === 4) {
+					r.push(`Both ${him} and ${his} ex are <span class="mediumorchid">resent</span> that their relationship had to end and <span class="gold">fear</span> for each other's future.`);
+					relSlave.devotion -= 40;
+					relSlave.trust -= 40;
+					slave.devotion -= 40;
+					slave.trust -= 40;
+				} else if (slave.relationship === 3) {
+					r.push(`Both ${him} and ${his} ex are <span class="mediumorchid">resent</span> that their relationship had to end and <span class="gold">fear</span> for each other's future.`);
+					relSlave.devotion -= 30;
+					relSlave.trust -= 30;
+					slave.devotion -= 30;
+					slave.trust -= 30;
+				} else if (slave.relationship > 0) {
+					r.push(`Both ${him} and ${his} ex are <span class="mediumorchid">resent</span> that their relationship had to end and <span class="gold">fear</span> for each other's future.`);
+					relSlave.devotion -= 20;
+					relSlave.trust -= 20;
+					slave.devotion -= 20;
+					slave.trust -= 20;
+				}
+			} else {
+				if (slave.relationship === -1) {
+					r.push(`${He} <span class="mediumorchid">dislikes</span> that ${he} has to be yours only and <span class="gold">worries</span> what will happen if ${he} strays.`);
+					slave.devotion -= 10;
+					slave.trust -= 10;
+				} else if (slave.relationship === 4) {
+					r.push(`Both ${him} and ${his} ex are <span class="mediumorchid">resent</span> that their relationship had to end and <span class="gold">worry</span> for each other.`);
+					relSlave.devotion -= 20;
+					relSlave.trust -= 20;
+					slave.devotion -= 20;
+					slave.trust -= 20;
+				} else if (slave.relationship === 3) {
+					r.push(`Both ${him} and ${his} ex are <span class="mediumorchid">are saddened</span> that their relationship had to end and <span class="gold">worry</span> for each other.`);
+					relSlave.devotion -= 10;
+					relSlave.trust -= 10;
+					slave.devotion -= 10;
+					slave.trust -= 10;
+				} else if (slave.relationship > 0) {
+					r.push(`Both ${him} and ${his} ex are <span class="mediumorchid">are disappointed</span> that their relationship had to end and <span class="gold">worry</span> for each other.`);
+					relSlave.devotion -= 5;
+					relSlave.trust -= 5;
+					slave.devotion -= 5;
+					slave.trust -= 5;
+				}
+			}
+			slave.relationship = -3;
+			App.Events.addParagraph(el, r);
+			if (V.PC.slaveSurname && slave.slaveSurname !== V.PC.slaveSurname) {
+				App.Events.addResponses(el, [new App.Events.Result(`Give ${him} your surname`, () => {
+					const el = new DocumentFragment();
+					const r = [];
+					slave.slaveSurname = V.PC.slaveSurname;
+					r.push(`You also command ${V.assistant.name} to rename your new slave wife ${slave.slaveName} ${slave.slaveSurname}.`);
+					if (slave.fetish === "mindbroken") {
+						r.push(`The new Mrs. ${slave.slaveSurname}`);
+						if (canHear(slave)) {
+							r.push(`hears`);
+						} else {
+							r.push(`understands`);
+						}
+						r.push(`this, of course, and shows no reaction. Like many things, names mean nothing to ${him} now.`);
+					} else if (slave.devotion+slave.trust >= 175) {
+						r.push(`The new Mrs. ${slave.slaveSurname}`);
+						if (canHear(slave)) {
+							r.push(`hears`);
+						} else {
+							r.push(`understands`);
+						}
+						r.push(`this, of course, and breaks down again. Being brusquely redesignated as your slave ${wife} was such a sterile experience that ${he} wasn't sure it was real, and hearing that ${he}'s to take your surname <span class="mediumaquamarine">reassures ${him}</span> that it is. Not to mention, ${he} might be a ${SlaveTitle(slave)}, but ${he}'s still a ${girl}, and hearing that ${he} wouldn't get a decent wedding did disappoint ${him}, but this makes up for it. You might not be all that expressive, but <span class="hotpink">${he}'s your wife,</span> and that's what matters to ${him}.`);
+						slave.devotion += 5;
+						slave.trust += 5;
+					} else if (slave.devotion < -20 && slave.trust > 20) {
+						r.push(`The new Mrs. ${slave.slaveSurname}`);
+						if (canHear(slave)) {
+							r.push(`hears`);
+						} else {
+							r.push(`understands`);
+						}
+						r.push(`this, of course, and scoffs audibly. <span class="mediumorchid">${He}'ll remember ${his} name, even if you try to take it away.</span> ${He} can't hide <span class="mediumorchid">${his} annoyance</span> that you couldn't even spring for a fancy wedding.`);
+						slave.devotion -= 10;
+					} else if (slave.devotion < -20) {
+						r.push(`The new Mrs. ${slave.slaveSurname}`);
+						if (canHear(slave)) {
+							r.push(`hears`);
+						} else {
+							r.push(`understands`);
+						}
+						r.push(`this, of course, and breaks down again. Not only have you taken ${his} hand, but now also ${his} name; <span class="hotpink">${he}'s yours now,</span> nothing ${he} thinks can change that.`);
+						slave.devotion += 5;
+					} else {
+						r.push(`The new Mrs. ${slave.slaveSurname}`);
+						if (canHear(slave)) {
+							r.push(`hears`);
+						} else {
+							r.push(`understands`);
+						}
+						r.push(`this, of course, and nods acceptingly. Being trusted with your surname <span class="mediumaquamarine">reassures ${him}</span> that ${he} must mean something to you, though ${he} is a <span class="mediumorchid">little disappointed</span> by the lack of a wedding, however.`);
+						slave.devotion--;
+						slave.trust += 5;
+					}
+					App.Events.addParagraph(el, r);
+					return el;
+				})]);
+			}
+
+			return el;
+		}
+
+		function marryNow() {
+			let r = [];
+			const el = new DocumentFragment();
+			r.push(`You order ${slave.slaveName} to go change into bridal lingerie.`);
+			if (reactionType === 0) {
+				if (canWalk(slave) || (canMove(slave) && slave.rules.mobility === "permissive")) {
+					r.push(`${He} hurries off, still crying. When ${he} returns, ${he}'s wearing`);
+				} else {
+					r.push(`${He} is helped out, still crying. When ${he} is returned, ${he}'s wearing`);
+				}
+			} else if (reactionType === 1) {
+				r.push(`${He} is helped out, completely unaware of ${his} pending marriage. When ${he} is returned, ${he}'s wearing`);
+			} else if (reactionType === 2) {
+				if (canWalk(slave) || (canMove(slave) && slave.rules.mobility === "permissive")) {
+					r.push(`${He} shuffles off, still sobbing. When ${he} returns, ${he}'s wearing`);
+				} else {
+					r.push(`${He} is helped out, still sobbing. When ${he} is returned, ${he}'s wearing`);
+				}
+			} else {
+				if (canWalk(slave) || (canMove(slave) && slave.rules.mobility === "permissive")) {
+					r.push(`${He} hurries off to fulfill your orders. When ${he} returns, ${he}'s wearing`);
+				} else {
+					r.push(`${He} is helped out to get dressed. When ${he} is returned, ${he}'s wearing`);
+				}
+			}
+			if (slave.vagina === 0) {
+				r.push(`white, since ${he}'s a virgin.`);
+			} else if (slave.pregKnown === 1) {
+				r.push(`light pink, since ${he} is pregnant.`);
+			} else if (slave.vagina < 0 && slave.anus === 0) {
+				r.push(`white, since ${he}'s an anal virgin.`);
+			} else if (slave.vagina < 0 && slave.boobs > 500) {
+				r.push(`electric blue, since ${he}'s a shemale.`);
+			} else if (slave.vagina < 0) {
+				r.push(`pale blue, since ${he}'s a sissy slave.`);
+			} else if (slave.dick > 0) {
+				r.push(`hot pink, since ${he}'s a futa slave.`);
+			} else {
+				r.push(`light pink, since ${he}'s an experienced sex slave.`);
+			}
+			r.push(`A flimsy veil covers ${his} head and shoulders.`);
+			if (slave.boobs > 4000) {
+				r.push(`On such short notice, no bridal bra for boobs of ${his} size was available, so ${he}'s topless. Not a tragedy.`);
+			} else if (slave.boobs > 1200) {
+				r.push(`${His} lacy bridal bra just barely restrains ${his} huge boobs, leaving the tops of ${his} areolae visible.`);
+			} else if (slave.boobs > 400) {
+				r.push(`${His} lacy bridal bra flatters ${his} pretty breasts.`);
+			} else {
+				r.push(`${His} lacy bridal bra flatters ${his} pretty chest.`);
+			}
+			if (slave.bellyPreg >= 600000) {
+				r.push(`${His} expansive, squirming pregnant belly makes ${his} bridal wear particularly obscene.`);
+			} else if (slave.bellyPreg >= 1500) {
+				r.push(`${His} ${belly} pregnant belly protrudes out the front of ${his} bridal wear.`);
+			} else if (slave.bellyImplant >= 1500) {
+				r.push(`${His} ${belly} ${slave.bellyImplant}cc belly implant protrudes ${his} middle out the front of ${his} bridal wear.`);
+			} else if (slave.bellyFluid >= 10000) {
+				r.push(`${His} hugely bloated, ${slave.inflationType}-filled belly protrudes out the front of ${his} bridal wear.`);
+			} else if (slave.bellyFluid >= 5000) {
+				r.push(`${His} bloated, ${slave.inflationType}-stuffed belly protrudes out the front of ${his} bridal wear.`);
+			} else if (slave.bellyFluid >= 1500) {
+				r.push(`${His} distended, ${slave.inflationType}-belly protrudes out the front of ${his} bridal wear.`);
+			}
+			if (slave.chastityPenis === 1) {
+				r.push(`${His} slave dick is hidden by its chastity cage.`);
+			} else if (canAchieveErection(slave)) {
+				if (slave.dick > 4 && slave.belly >= 5000) {
+					r.push(`${He}'s hugely erect, with ${his} lacy g-string only serving to hold ${his} dick agonizingly pressed against the bottom of ${his} ${belly}`);
+					if (slave.bellyPreg >= 3000) {
+						r.push(`pregnant`);
+					}
+					r.push(`belly.`);
+				} else if (slave.dick > 4) {
+					r.push(`${He}'s hugely erect, with ${his} lacy g-string only serving to hold ${his} dick upright along ${his} belly.`);
+				} else {
+					r.push(`${His} erection tents the front of ${his} lacy g-string.`);
+				}
+			} else if (slave.dick > 0) {
+				if (slave.dick > 10) {
+					r.push(`${His} huge soft cock is allowed to dangle freely as no g-string could hope to contain it.`);
+				} else if (slave.dick > 4) {
+					r.push(`${His} big soft cock forms a lewd mass, stuffed into ${his} lacy g-string.`);
+				} else {
+					r.push(`${His} lacy g-string perfectly conceals ${his} soft dick.`);
+				}
+			} else {
+				if (slave.clit > 1) {
+					r.push(`${His} huge clit is quite hard, making ${him} shift uncomfortably as ${his} lacy g-string stimulates it.`);
+				} else {
+					r.push(`${His} lacy g-string is starting to look a bit moist in front.`);
+				}
+			}
+			r.push(`${capFirstChar(V.assistant.name)} marries ${him} to you in a brief ceremony adapted for slaves and their owners. You place a`);
+			if (hasAnyArms(slave)) {
+				r.push(`simple steel ring on ${his} finger;`);
+			} else {
+				r.push(`chain with a simple steel ring around ${his} neck;`);
+			}
+			r.push(`${he} does not reciprocate, since this marriage does not bind you.`);
+			if (V.assistant.personality <= 0) {
+				r.push(`"The marriage protocol now requires you to`);
+				if (V.PC.dick !== 0) {
+					r.push(`fellate`);
+					if (V.PC.vagina !== -1) {
+						r.push(`and`);
+					}
+				}
+				if (V.PC.vagina !== -1) {
+					r.push(`perform cunnilingus on`);
+				}
+				r.push(`the ${groom}, ${V.assistant.name} orders ${him}, and ${he}`);
+				if (reactionType === 0) {
+					r.push(`only starts when you push ${his} head to your crotch.`);
+				} else if (reactionType === 1) {
+					r.push(`eagerly complies.`);
+				} else if (reactionType === 2) {
+					r.push(`reluctantly obeys.`);
+				} else {
+					r.push(`hurries to obey.`);
+				}
+			} else {
+				const suckMy = () => {
+					if (V.PC.dick !== 0) {
+						r.push(`suck the ${groom}'s dick${(V.PC.vagina !== -1) ? ` and eat ${hisP} pussy` : ``}."`);
+					} else {
+						r.push(`eat the ${groom}'s pussy."`);
+					}
+				};
+				const genericCompliance = () => {
+					r.push(`The slave`);
+					if (reactionType === 0) {
+						r.push(`only starts when you push ${his} head to your crotch.`);
+					} else if (reactionType === 1) {
+						r.push(`eagerly complies.`);
+					} else if (reactionType === 2) {
+						r.push(`reluctantly obeys.`);
+					} else {
+						r.push(`hurries to obey.`);
+					}
+				};
+
+				if (V.assistant.appearance === "monstergirl") {
+					r.push(`"To consecrate the ceremony," ${V.assistant.name} concludes, "${slave.slaveName}, you will now`);
+					suckMy();
+					genericCompliance();
+					r.push(`Pleased by the sight, ${V.assistant.name}'s avatar begins to play with ${hisA} dicks.`);
+				} else if (V.assistant.appearance === "shemale") {
+					r.push(`"To get this marriage started," ${V.assistant.name} concludes, "${slave.slaveName}, you will now`);
+					suckMy();
+					genericCompliance();
+					r.push(`Pleased by the sight, ${V.assistant.name}'s avatar starts to jill off.`);
+				} else if (V.assistant.appearance === "amazon") {
+					r.push(`"To complete this ritual," ${V.assistant.name} concludes, "${slave.slaveName}, you will now`);
+					suckMy();
+					genericCompliance();
+					r.push(`Pleased by the sight, ${V.assistant.name}'s avatar starts to jill off.`);
+				} else if (V.assistant.appearance === "businesswoman") {
+					r.push(`"To consecrate the marriage," ${V.assistant.name} concludes, "${slave.slaveName}, you will now`);
+					if (V.PC.dick !== 0) {
+						r.push(`fellate`);
+					} else {
+						r.push(`perform cunnilingus on`);
+					}
+					r.push(`the ${groom}." The slave`);
+					if (reactionType === 0) {
+						r.push(`only starts when you push ${his} head to your crotch.`);
+					} else if (reactionType === 1) {
+						r.push(`eagerly complies.`);
+					} else if (reactionType === 2) {
+						r.push(`reluctantly obeys.`);
+					} else {
+						r.push(`hurries to obey.`);
+					}
+					r.push(`Pleased by the sight, ${V.assistant.name}'s avatar sneaks a hand down ${hisA} suit skirt, blushing furiously.`);
+				} else if (V.assistant.appearance === "fairy") {
+					r.push(`"To seal the deal," ${V.assistant.name} concludes, "${slave.slaveName}, you gotta drink the ${groom}'s`);
+					if (V.PC.dick !== 0) {
+						r.push(`semen${(V.PC.vagina !== -1) ? `and pussy juices` : ``}.`);
+					} else {
+						r.push(`pussy juices.`);
+					}
+					genericCompliance();
+					r.push(`Pleased by the sight, ${V.assistant.name}'s avatar spreads ${hisA} legs while still hovering in the air and masturbates eagerly through hisA half-worn robes.`);
+				} else if (V.assistant.appearance === "pregnant fairy") {
+					r.push(`"To seal the deal," ${V.assistant.name} concludes, "${slave.slaveName}, you gotta drink the ${groom}'s`);
+					if (V.PC.dick !== 0) {
+						r.push(`semen`);
+						if (V.PC.vagina !== -1) {
+							r.push(`and pussy juices`);
+						}
+					} else {
+						r.push(`pussy juices`);
+					}
+					genericCompliance();
+					r.push(`Pleased by the sight, ${V.assistant.name}'s pregnant avatar curls while still hovering in the air and masturbates eagerly around ${hisA} large belly.`);
+				} else if (V.assistant.appearance === "goddess") {
+					r.push(`"To consummate the marriage," ${V.assistant.name} concludes, "${slave.slaveName}, you must now`);
+					if (V.PC.dick !== 0) {
+						r.push(`drink the ${groom}'s seed`);
+					} else {
+						r.push(`drink the ${groom}'s female juices`);
+					}
+					genericCompliance();
+					r.push(`${V.assistant.name}'s avatar looks on approvingly, cradling ${hisA} perpetual pregnancy.`);
+				} else if (V.assistant.appearance === "hypergoddess") {
+					r.push(`"To consummate the marriage," ${V.assistant.name} concludes, "${slave.slaveName}, you must now`);
+					if (V.PC.dick !== 0) {
+						r.push(`drink the ${groom}'s seed`);
+					} else {
+						r.push(`drink the ${groom}'s female juices`);
+					}
+					genericCompliance();
+					r.push(`${V.assistant.name}'s avatar looks on approvingly, cradling ${hisA} massive perpetual pregnancy.`);
+				} else if (V.assistant.appearance === "loli") {
+					r.push(`"To consummate the marriage," ${V.assistant.name} concludes, "${slave.slaveName}, you should now`);
+					if (V.PC.dick !== 0) {
+						r.push(`suck the ${groom}'s cock${(V.PC.vagina !== -1) ? `and lick ${hisP} cunny.` : ``}`);
+					} else {
+						r.push(`lick the ${groom}'s cunny.`);
+					}
+					genericCompliance();
+					r.push(`${V.assistant.name}'s avatar sneaks a hand down ${hisA} dress, blushing furiously.`);
+				} else if (V.assistant.appearance === "preggololi") {
+					r.push(`"To consummate the marriage," ${V.assistant.name} concludes, "${slave.slaveName}, you should now`);
+					if (V.PC.dick !== 0) {
+						r.push(`suck the ${groom}'s lovely cock${(V.PC.vagina !== -1) ? `and eat out ${hisP} cunt` : ``}.`);
+					} else {
+						r.push(`lick the ${groom}'s cunt.`);
+					}
+					genericCompliance();
+					r.push(`${V.assistant.name}'s avatar attempts to sneak a hand down ${hisA} dress, but is thwarted by hisA belly. ${HeA} instead openly rubs hisA crotch through the front of hisA dress, blushing furiously.`);
+				} else if (V.assistant.appearance === "schoolgirl") {
+					r.push(`"To get this marriage started," ${V.assistant.name} concludes, "${slave.slaveName}, the rules say you should now`);
+					suckMy();
+					genericCompliance();
+					r.push(`Pleased by the sight, ${V.assistant.name}'s avatar starts to jill off.`);
+				} else if (V.assistant.appearance === "angel") {
+					r.push(`"To consummate the marriage," ${V.assistant.name} concludes, "${slave.slaveName}, you must now join ${PlayerName()} in their bedroom and consummate this marriage." The slave`);
+					if (reactionType === 0) {
+						r.push(`stares blankly.`);
+					} else {
+						r.push(`looks confused.`);
+					}
+					r.push(`"After the wedding ends, would be the time." ${V.assistant.name} says, covering ${hisA} face in embarrassment at the thought.`);
+				} else if (V.assistant.appearance === "cherub") {
+					r.push(`"To consummate the marriage," ${V.assistant.name} concludes, "${slave.slaveName}, you should`);
+					if (V.PC.dick !== 0) {
+						r.push(`suck the ${groom}'s cock${(V.PC.vagina !== -1) ? `and lick ${hisP} pussy` : ``},`);
+					} else {
+						r.push(`lick the ${groom}'s pussy,`);
+					}
+					r.push(`in the privacy of ${PlayerName()}'s bedroom, of course." ${V.assistant.name} hides hisA face in hisA hands at the thought.`);
+				} else if (V.assistant.appearance === "incubus") {
+					r.push(`"To get this marriage started," ${V.assistant.name} concludes, "${slave.slaveName}, you will now`);
+					suckMy();
+					genericCompliance();
+					r.push(`Enjoying the sight, ${V.assistant.name}'s avatar begins to furiously stroke its shaft.`);
+				} else if (V.assistant.appearance === "succubus") {
+					r.push(`"To get this marriage started," ${V.assistant.name} concludes, "${slave.slaveName}, you will now`);
+					suckMy();
+					genericCompliance();
+					r.push(`Pleased by the sight, ${V.assistant.name}'s avatar pulls out a large dildo and begins ramming it into ${hisA} own pussy.`);
+				} else if (V.assistant.appearance === "imp") {
+					r.push(`"To get this marriage started," ${V.assistant.name} concludes, "${slave.slaveName}, you will now`);
+					suckMy();
+					genericCompliance();
+					r.push(`Pleased by the sight, ${V.assistant.name}'s avatar hikes ${hisA} robe and vigorously rubs hisA pussy.`);
+				} else if (V.assistant.appearance === "witch") {
+					r.push(`"To get this marriage started," ${V.assistant.name} concludes, "${slave.slaveName}, you will now`);
+					suckMy();
+					genericCompliance();
+					r.push(`${V.assistant.name}'s avatar begins to fidget at the sight, having summoned a vibrator beforehand and accidentally linked it to your pleasure.`);
+				} else if (V.assistant.appearance === "ERROR_1606_APPEARANCE_FILE_CORRUPT") {
+					r.push(`"To get this marriage started," ${V.assistant.name} concludes, "${slave.slaveName}, you will now`);
+					suckMy();
+					genericCompliance();
+					r.push(`${V.assistant.name}'s avatar begins to swell, drawing all its gained mass to its midsection. Its gravid middles splits vertically, allowing a new mass of flesh to fall to the floor, which quickly grows and reshapes itself into a spitting image of yourself. Meanwhile, the original twists into an image of ${slave.slaveName}. ${V.assistant.name}'s two avatars begin copying you and ${slave.slaveName}'s actions perfectly.`);
+				} else {
+					r.push(`"To get this marriage started," ${V.assistant.name} concludes, "${slave.slaveName}, the rules say you should now`);
+					suckMy();
+					genericCompliance();
+					r.push(`With only a symbol to express ${hisA} approval, ${V.assistant.name} is forced to content himselfA with spinning the symbol and making it glow in time with your new slave wife's efforts.`);
+				}
+				r.push(`"Done," ${heA} says when you climax. "Enjoy your`);
+				if (slave.fetishKnown === 1 && slave.fetishStrength > 60) {
+					if (slave.fetish === "submissive") {
+						r.push(`submissive slave ${wife}!"`);
+					} else if (slave.fetish === "cumslut") {
+						r.push(`slave ${wife}'s mouth!"`);
+					} else if (slave.fetish === "humiliation") {
+						r.push(`exhibitionist slave ${wife}!"`);
+					} else if (slave.fetish === "buttslut") {
+						r.push(`slave ${wife}'s butthole!"`);
+					} else if (slave.fetish === "boobs") {
+						r.push(`slave ${wife}'s boobs!"`);
+					} else if (slave.fetish === "pregnancy") {
+						r.push(`breeder ${wife}!"`);
+					} else if (slave.fetish === "dom") {
+						r.push(`slave ${wife}'s aggression!"`);
+					} else if (slave.fetish === "sadist") {
+						r.push(`slave ${wife}'s sadistic tendencies!"`);
+					} else if (slave.fetish === "masochist") {
+						r.push(`slave ${wife}'s pain!"`);
+					} else {
+						r.push(`slave ${wife}!"`);
+					}
+				} else {
+					r.push(`slave ${wife}!"`);
+				}
+			}
+			if (slave.relationship > 0) {
+				slave.relationshipTarget = 0;
+				relSlave.relationship = 0;
+				relSlave.relationshipTarget = 0;
+			}
+			if (slave.devotion+slave.trust >= 175) {
+				if (slave.relationship > 0) {
+					r.push(`${His} ex is <span class="mediumorchid">disappointed</span> that their relationship had to end and <span class="gold">worries</span> for ${his2} love's future.`);
+					if (slave.relationship === 4) {
+						relSlave.devotion -= 5;
+						relSlave.trust -= 5;
+					} else if (slave.relationship === 3) {
+						relSlave.devotion -= 3;
+						relSlave.trust -= 3;
+					} else {
+						relSlave.devotion -= 1;
+						relSlave.trust -= 1;
+					}
+				}
+			} else if (slave.devotion < -20) {
+				if (slave.relationship === -1) {
+					r.push(`${He} <span class="mediumorchid">hates</span> that ${he} has to be yours only and <span class="gold">fears</span> what will happen if ${he} strays.`);
+					slave.devotion -= 40;
+					slave.trust -= 40;
+				} else if (slave.relationship === 4) {
+					r.push(`Both ${him} and ${his} ex are <span class="mediumorchid">resent</span> that their relationship had to end and <span class="gold">fear</span> for each other's future.`);
+					relSlave.devotion -= 40;
+					relSlave.trust -= 40;
+					slave.devotion -= 40;
+					slave.trust -= 40;
+				} else if (slave.relationship === 3) {
+					r.push(`Both ${him} and ${his} ex are <span class="mediumorchid">resent</span> that their relationship had to end and <span class="gold">fear</span> for each other's future.`);
+					relSlave.devotion -= 30;
+					relSlave.trust -= 30;
+					slave.devotion -= 30;
+					slave.trust -= 30;
+				} else if (slave.relationship > 0) {
+					r.push(`Both ${him} and ${his} ex are <span class="mediumorchid">resent</span> that their relationship had to end and <span class="gold">fear</span> for each other's future.`);
+					relSlave.devotion -= 20;
+					relSlave.trust -= 20;
+					slave.devotion -= 20;
+					slave.trust -= 20;
+				}
+			} else {
+				if (slave.relationship === -1) {
+					r.push(`${He} <span class="mediumorchid">dislikes</span> that ${he} has to be yours only and <span class="gold">worries</span> what will happen if ${he} strays.`);
+					slave.devotion -= 10;
+					slave.trust -= 10;
+				} else if (slave.relationship === 4) {
+					r.push(`Both ${him} and ${his} ex are <span class="mediumorchid">resent</span> that their relationship had to end and <span class="gold">worry</span> for each other.`);
+					relSlave.devotion -= 20;
+					relSlave.trust -= 20;
+					slave.devotion -= 20;
+					slave.trust -= 20;
+				} else if (slave.relationship === 3) {
+					r.push(`Both ${him} and ${his} ex are <span class="mediumorchid">are saddened</span> that their relationship had to end and <span class="gold">worry</span> for each other.`);
+					relSlave.devotion -= 10;
+					relSlave.trust -= 10;
+					slave.devotion -= 10;
+					slave.trust -= 10;
+				} else if (slave.relationship > 0) {
+					r.push(`Both ${him} and ${his} ex are <span class="mediumorchid">are disappointed</span> that their relationship had to end and <span class="gold">worry</span> for each other.`);
+					relSlave.devotion -= 5;
+					relSlave.trust -= 5;
+					slave.devotion -= 5;
+					slave.trust -= 5;
+				}
+			}
+			slave.relationship = -3;
+			App.Events.addParagraph(el, r);
+			if (V.PC.slaveSurname && slave.slaveSurname !== V.PC.slaveSurname) {
+				App.Events.addResponses(el, [new App.Events.Result(`Give ${him} your surname`, () => {
+					const el = new DocumentFragment();
+					const r = [];
+					slave.slaveSurname = V.PC.slaveSurname;
+					r.push(`You also command ${V.assistant.name} to rename your new slave wife ${slave.slaveName} ${slave.slaveSurname}.`);
+					if (slave.fetish === "mindbroken") {
+						r.push(`Before you get too distracted, you tell your lovely new ${wife} that ${he}'s now to be known as ${slave.slaveName} ${slave.slaveSurname}. You are uncertain if it sunk in or not.`);
+					} else if (slave.devotion+slave.trust >= 175) {
+						r.push(`Before you get too distracted, you tell your lovely new ${wife} that ${he}'s now to be known as ${slave.slaveName} ${slave.slaveSurname}. It would be an understatement to say ${he}'s delighted. ${He}'s a good ${SlaveTitle(slave)}, but even ${he} has to retain a kernel of doubt about whether a marriage between an owner and a piece of property is really worth much. This <span class="mediumaquamarine">reassures ${him}</span> that it is. ${His} special day probably wasn't exactly like ${he} might once have imagined it, but ${he} obviously thinks it's been <span class="hotpink">very nice,</span> all things considered.`);
+						if (canTalk(slave)) {
+							r.push(`"${myName} ${playerSurname},"`);
+							r.push(`${he} murmurs to ${himself} occasionally, smiling.`);
+						}
+						slave.devotion += 5;
+						slave.trust += 5;
+					} else if (slave.devotion < -20 && slave.trust > 20) {
+						r.push(`Before you get too distracted, you tell your lovely new ${wife} that ${he}'s now to be known as ${slave.slaveName} ${slave.slaveSurname}. <span class="mediumorchid">${He}'ll remember ${his} name, even if you try to take it away.</span>`);
+						if (canTalk(slave)) {
+							r.push(`"${myName} ${playerSurname},"`);
+							r.push(`${he} mutters to ${himself} occasionally; their is a distinct distaste to the way ${he} says it.`);
+						}
+						slave.devotion -= 10;
+					} else if (slave.devotion < -20) {
+						r.push(`Before you get too distracted, you tell your quivering new ${wife} that ${he}'s now to be known as ${slave.slaveName} ${slave.slaveSurname}. ${He} nods in terror. Not only have you taken ${his} hand, but now also ${his} name; <span class="hotpink">${he}'s yours now,</span> nothing ${he} thinks can change that.`);
+						if (canTalk(slave)) {
+							r.push(`"${myName} ${playerSurname}," ${he} mutters to ${himself} occasionally, ${his} voice wavering as ${he} struggles to hold back the tears.`);
+						}
+						slave.devotion += 5;
+					} else {
+						r.push(`Before you get too distracted, you tell your lovely new ${wife} that ${he}'s now to be known as ${slave.slaveName} ${slave.slaveSurname}. ${He} nods acceptingly. ${He}'s a good ${SlaveTitle(slave)}, but ${he} has doubts about whether a marriage between an owner and a piece of property is really worth much. That doesn't matter, <span class="mediumaquamarine">it's worth something to ${him}.</span>`);
+						if (canTalk(slave)) {
+							r.push(`"${myName} ${playerSurname},"`);
+							r.push(`${he} murmurs to ${himself} occasionally${(canHear(slave)) ? `, listening to how it sounds` : ``}.`);
+						}
+						slave.trust += 5;
+					}
+					App.Events.addParagraph(el, r);
+					return el;
+				})]);
+			}
+			return el;
+		}
+
+		function straightforward() {
+			V.weddingPlanned = 1;
+			V.marrying.push(V.AS);
+			cashX(-10000, "event", slave);
+			return `You order ${V.assistant.name} to invite deserving citizens to a straightforward ceremony for a slave being married to a slaveowner, and to make the arrangement. The wedding will take place during the upcoming week.`;
+		}
+
+		function orgiastic() {
+			V.weddingPlanned = 2;
+			V.marrying.push(V.AS);
+			cashX(-10000, "event", slave);
+			return `You order ${V.assistant.name} to invite deserving citizens to an orgiastic ceremony for a slave being married to a slaveowner, and to make the arrangements. The wedding orgy will take place during the upcoming week.`;
+		}
+
+		function impregnation() {
+			V.weddingPlanned = 3;
+			V.marrying.push(V.AS);
+			cashX(-10000, "event", slave);
+			return `You order ${V.assistant.name} to invite deserving citizens to a ceremony for a fertile slave being married to a slaveowner, and to make the arrangements. The wedding will take place during the upcoming week.`;
+		}
+	}
+);
diff --git a/src/npc/interaction/passage/fMarry.tw b/src/npc/interaction/passage/fMarry.tw
deleted file mode 100644
index 03e067162a597f54ecbd839135b963ac497f4a89..0000000000000000000000000000000000000000
--- a/src/npc/interaction/passage/fMarry.tw
+++ /dev/null
@@ -1,815 +0,0 @@
-:: FMarry [nobr]
-
-<<set $nextButton = "Back", $nextLink = "Slave Interact">>
-<<run App.Utils.setLocalPronouns(getSlave($AS))>>
-<<run Enunciate(getSlave($AS))>>
-<<set _belly = bellyAdjective(getSlave($AS))>>
-
-<<setAssistantPronouns>>
-<<setPlayerPronouns>>
-
-<<if getSlave($AS).relationship > 0>>
-	<<set _m = $slaveIndices[getSlave($AS).relationshipTarget]>>
-	<<if def _m>>
-		<<setLocalPronouns $slaves[_m] 2>>
-		<<set _slave = getSlave($AS)>>
-		<<setSpokenLocalPronouns _slave $slaves[_m]>>
-		<<if SlaveStatsChecker.checkForLisp(getSlave($AS))>>
-			<<set _name = lispReplace($slaves[_m].slaveName)>>
-		<<else>>
-			<<set _name = $slaves[_m].slaveName>>
-			/* Use the modified "L"isp variables when they are speaking, just in case. */
-		<</if>>
-	<<else>>
-		@@.red;Error, relationshipTarget not found.@@
-	<</if>>
-<</if>>
-<<if SlaveStatsChecker.checkForLisp(getSlave($AS))>>
-	<<set _myName = lispReplace(getSlave($AS).slaveName)>>
-	<<set _playerSurname = lispReplace($PC.slaveSurname)>>
-<<else>>
-	<<set _myName = getSlave($AS).slaveName>>
-	<<set _playerSurname = $PC.slaveSurname>>
-<</if>>
-
-You tell <<= getSlave($AS).slaveName>> that you're going to marry $him. (A proposal, of course, would be inappropriate, even in so enlightened a place as your arcology.)
-<<if getSlave($AS).fetish == "mindbroken">>
-	$He doesn't react.
-	<<set _reactionType = 0>>
-<<elseif getSlave($AS).devotion+getSlave($AS).trust >= 175>>
-	You're not exactly lacking in ways to make <<if getSlave($AS).physicalAge > 30>>$women<<else>><<= $girl>>s<</if>> burst into tears, but this one is unusually effective. When $he's gotten $himself under control again, <<if !hasAnyArms(getSlave($AS))>>looking somewhat embarrassed that $he can't wipe $his own tears<<else>>distractedly cuffing away $his tears<</if>> and consciously breathing deeply,
-	<<if canTalk(getSlave($AS))>>
-		$he <<say>>s,
-		<<if getSlave($AS).relationship != 0>>
-			<<if getSlave($AS).relationship == -1>>
-				"I promi<<s>>e I'll try to <<s>>top <<s>>leeping around <<s>>o much."
-			<<elseif getSlave($AS).relationship == 4>>
-				"I'll have to break up with _name... I'll try to let _him2 down gently, <<he 2>>'ll under<<s>>tand."
-			<<elseif getSlave($AS).relationship == 3>>
-				"_name will mi<<ss>> having <<s>>e<<x>> with me, but <<he 2>>'ll under<<s>>tand."
-			<<elseif getSlave($AS).relationship > 0>>
-				"I'll have to <<s>>top hanging out with _name; I'm <<s>>ure <<he 2>>'ll under<<s>>tand."
-			<<else>>
-				"I've been waiting for thi<<s>> day! I'm <<s>>o happy!"
-			<</if>>
-			$He continues,
-		<</if>>
-		"Thank you, <<Master>>. I am going to do my be<<s>>t to be a
-		<<set _slave = getSlave($AS)>>
-		<<setSpokenLocalPronouns _slave _slave>>
-		<<if (getSlave($AS).fetishKnown == 1) && (getSlave($AS).fetishStrength > 60)>>
-			<<if (getSlave($AS).fetish == "submissive")>>
-				perfect <<s>>ubmi<<ss>>ive <<wife>> to you,
-			<<elseif (getSlave($AS).fetish == "cumslut")>>
-				perfect oral <<wife>>,
-			<<elseif (getSlave($AS).fetish == "humiliation")>>
-				hot <<wife>> for you,
-			<<elseif (getSlave($AS).fetish == "buttslut")>>
-				perfect little anal <<wife>>,
-			<<elseif (getSlave($AS).fetish == "boobs")>>
-				<<if getSlave($AS).boobs > 800>>perfect big-boobed<<else>>perfect-boobed<</if>> <<wife>>
-			<<elseif (getSlave($AS).fetish == "pregnancy")>>
-				perfect barefoot breeding <<wife>>,
-			<<elseif (getSlave($AS).fetish == "dom")>>
-				perfect, you know, <<sh>>aring <<wife>> with other <<s>>lave<<s>>,
-			<<elseif (getSlave($AS).fetish == "sadist")>>
-				perfect <<wife>> to u<<s>>e on other <<s>>lave<<s>>,
-			<<elseif (getSlave($AS).fetish == "masochist")>>
-				good, beaten <<wife>>,
-			<<else>>
-				good <<wife>>,
-			<</if>>
-		<<else>>
-			good <<wife>>,
-		<</if>>
-		<<Master>>. Oh, thank you, <<Master>>," $he blubbers, and starts crying again.
-	<<elseif !hasAnyArms(getSlave($AS))>>
-		$he painstakingly mouths $his thanks, since $he cannot speak or use hands to sign.
-		<<if getSlave($AS).relationship != 0>>
-			$He struggles to tell you
-			<<if getSlave($AS).relationship == -1>>
-				that $he'll try to be less of a slut.
-			<<elseif getSlave($AS).relationship == 4>>
-				that $he'll try to let $his lover $slaves[_m].slaveName down gently.
-			<<elseif getSlave($AS).relationship == 3>>
-				that $he'll try to let $his FWB $slaves[_m].slaveName down gently.
-			<<elseif getSlave($AS).relationship > 0>>
-				that $he'll have to stop hanging around $slaves[_m].slaveName.
-			<<else>>
-				that $he has never been happier.
-			<</if>>
-		<</if>>
-	<<else>>
-		$he shakily signs $his thanks twice in a row before breaking down again.
-		<<if getSlave($AS).relationship != 0>>
-			$He regains composure enough to continue signing out
-			<<if getSlave($AS).relationship == -1>>
-				that $he'll try to be less of a slut.
-			<<elseif getSlave($AS).relationship == 4>>
-				that $he'll try to let $his lover $slaves[_m].slaveName down gently.
-			<<elseif getSlave($AS).relationship == 3>>
-				that $he'll try to let $his FWB $slaves[_m].slaveName down gently.
-			<<elseif getSlave($AS).relationship > 0>>
-				that $he'll have to stop hanging around $slaves[_m].slaveName.
-			<<else>>
-				that $he has never been happier.
-			<</if>>
-		<</if>>
-	<</if>>
-	Despite $his devotion and trust, $he is still a slave, and probably knows that $his position could always change. This brings $him one step closer to true permanence, and $he knows it.
-	<<set _reactionType = 1>>
-<<elseif getSlave($AS).devotion < -20 && getSlave($AS).trust > 20>>
-	You're not exactly lacking in ways to make <<if getSlave($AS).physicalAge > 30>>$women<<else>><<= $girl>>s<</if>> burst into tears, but this one is surprisingly effective. It seems <<= getSlave($AS).slaveName>> does not want to marry you, if $his prolonged, anguished sobbing is anything to go by. However, $he would have to be a fool to think there's any way out of it.
-	<<if canTalk(getSlave($AS))>>
-		$He <<say>>s, "Plea<<s>>e <<Master>>, I don't want to
-		<<if (getSlave($AS).fetishKnown == 1) && (getSlave($AS).fetishStrength > 60)>>
-			<<if (getSlave($AS).fetish == "submissive")>>
-				be your little <<s>>ubmi<<ss>>ive fucktoy,
-			<<elseif (getSlave($AS).fetish == "cumslut")>>
-				be your cum <<s>>ucker,
-			<<elseif (getSlave($AS).fetish == "humiliation")>>
-				be <<s>>tripped bare and <<sh>>own off,
-			<<elseif (getSlave($AS).fetish == "buttslut")>>
-				have thing<<s>> <<sh>>oved up my butt,
-			<<elseif (getSlave($AS).fetish == "boobs")>>
-				have my tit<<s>> tea<<s>>ed every night,
-			<<elseif (getSlave($AS).fetish == "pregnancy")>>
-				<<if canGetPregnant(getSlave($AS))>>
-					get knocked up by you,
-				<<else>>
-					be your pregnant toy,
-				<</if>>
-			<<elseif (getSlave($AS).fetish == "dom")>>
-				have to rule your <<s>>i<<ss>>y dick,
-			<<elseif (getSlave($AS).fetish == "sadist")>>
-				<<s>>pank your a<<ss>>,
-			<<elseif (getSlave($AS).fetish == "masochist")>>
-				get beaten by you,
-			<<else>>
-				<<s>>tay in your ni<<c>>e room,
-			<</if>>
-		<<else>>
-			<<s>>tay in your ni<<c>>e room,
-		<</if>>
-		<<Master>>. You're a terrible per<<s>>on, <<Master>>," $he blubbers, and starts crying again.
-		<<if getSlave($AS).relationship != 0>>
-			<<if getSlave($AS).relationship == -1>>
-				"I'll never be <<s>>ati<<s>>fied by ju<<s>>t you!"
-			<<elseif getSlave($AS).relationship == 4>>
-				"I love _name, not you <<Master>>! You'll never be a<<s>> good a<<s>> _him2!"
-			<<elseif getSlave($AS).relationship == 3>>
-				"But I like having <<s>>e<<x>> with _name, not you <<Master>>! You'll never be a<<s>> good as _him2!"
-			<<elseif getSlave($AS).relationship > 0>>
-				"But I like <<s>>pending time with _name, <<he 2>>'<<s>> <<s>>o much ni<<c>>er to be around than you, <<Master>>.
-			<<else>>
-				"I need you in my life, <<Master>>, <<s>>o why don't you bend down like the bitch you are and <<if getSlave($AS).dick > 0>><<s>>uck my dick<<elseif getSlave($AS).vagina > -1>>eat me out<<else>>lick my a<<ss>><</if>>, <<Master>>?"
-			<</if>>
-		<</if>>
-	<<elseif !hasAnyArms(getSlave($AS))>>
-		$he painstakingly mouths $his displeasure, since $he cannot speak or use hands to sign.
-		<<if getSlave($AS).relationship != 0>>
-			<<if getSlave($AS).relationship == -1>>
-				$He desperately tries to explain that you'll never satisfy $him.
-			<<elseif getSlave($AS).relationship == 4>>
-				$He desperately tries to explain that $his love, $slaves[_m].slaveName, is better than you'll ever be.
-			<<elseif getSlave($AS).relationship == 3>>
-				$He desperately tries to explain that $his lover, $slaves[_m].slaveName, satisfies $his far better than you can.
-			<<elseif getSlave($AS).relationship > 0>>
-				$He desperately tries to explain $his friend, $slaves[_m].slaveName, is so much more enjoyable to be around than you.
-			<<else>>
-				$He wiggles $his nethers at you, as if trying to tell you to do something.
-			<</if>>
-		<</if>>
-	<<else>>
-		$he shakily makes a rather rude hand gesture before crying more.
-		<<if getSlave($AS).relationship != 0>>
-			<<if getSlave($AS).relationship == -1>>
-				$He also makes it clear that you'll never satisfy $him.
-			<<elseif getSlave($AS).relationship == 4>>
-				$He also makes it clear that $his love, $slaves[_m].slaveName, is better than you'll ever be.
-			<<elseif getSlave($AS).relationship == 3>>
-				$He also makes it clear that $his lover, $slaves[_m].slaveName, satisfies $him far better than you can.
-			<<elseif getSlave($AS).relationship > 0>>
-				$He also makes it clear $his friend, $slaves[_m].slaveName, is so much more enjoyable to be around than you.
-			<<else>>
-				On top of the prior gesturing, $he adds another, lewder one involving you and $his crotch.
-			<</if>>
-		<</if>>
-	<</if>>
-	Despite $his "fortune", $he is still a slave, and undoubtedly knows that $his position could easily change should you tire of $him. $His tears may not all be genuine either, you have a feeling $he may be trying to take advantage of you.
-	<<set _reactionType = 2>>
-<<elseif getSlave($AS).devotion < -20>>
-	You're not exactly lacking in ways to make <<if getSlave($AS).physicalAge > 30>>$women<<else>><<= $girl>>s<</if>> burst into tears, but this one is unusually effective. It seems <<= getSlave($AS).slaveName>> does not want to marry you, if $his prolonged, anguished sobbing is anything to go by. However, $he would have to be a fool to think there's any way out of it. You lean in and whisper that
-	<<if (getSlave($AS).fetishKnown == 1) && (getSlave($AS).fetishStrength > 60)>>
-		<<if (getSlave($AS).fetish == "submissive")>>
-			$he'll make the perfect submissive $wife for you dominate.
-		<<elseif (getSlave($AS).fetish == "cumslut")>>
-			$he'll make the perfect oral $wife for your <<if $PC.dick > 0 && $PC.vagina >= 0>>dick and pussy<<elseif $PC.dick > 0>>cock<<else>>pussy<</if>> to enjoy.
-		<<elseif (getSlave($AS).fetish == "humiliation")>>
-			$he'll make a hot $wife for you to parade around naked.
-		<<elseif (getSlave($AS).fetish == "buttslut")>>
-			$he'll make the perfect little anal $wife <<if $PC.dick > 0>>to keep your dick warm<<else>>stick things in<</if>>.
-		<<elseif (getSlave($AS).fetish == "boobs")>>
-			$he'll make the <<if getSlave($AS).boobs > 800>>perfect big-boobed<<else>>perfect-boobed<</if>> $wife for you to bury your head into.
-		<<elseif (getSlave($AS).fetish == "pregnancy")>>
-			$he'll make the perfect barefoot breeding $wife.<<if $PC.dick > 0 && canGetPregnant(getSlave($AS))>> You poke $him with your erection, letting $him know what $he's in for.<</if>>
-		<<elseif (getSlave($AS).fetish == "dom")>>
-			$he'll make the perfect dominant $wife to force upon $his closest friends.
-		<<elseif (getSlave($AS).fetish == "sadist")>>
-			$he'll make the perfect cruel $wife to force upon $his closest friends.
-		<<elseif (getSlave($AS).fetish == "masochist")>>
-			$he'll make a good, beaten $wife.
-		<<else>>
-			$he'll make a good $wife.
-		<</if>>
-	<<else>>
-		$he'll make a good $wife.
-	<</if>>
-	<<if canTalk(getSlave($AS))>>
-		"<<Master>>. Plea<<s>>e, <<Master>>, don't make me do thi<<s>>. I don't want thi<<s>>!" $he blubbers, and starts crying again.
-		<<if getSlave($AS).relationship != 0>>
-			<<if getSlave($AS).relationship == -1>>
-				"I need a new dick in me every night! How can I be <<s>>ati<<s>>fied like thi<<s>>?!"
-			<<elseif getSlave($AS).relationship == 4>>
-				"I love _name! Plea<<s>>e don't <<s>>plit u<<s>> up <<Master>>! I'll be a good $girl, <<Master>>, plea<<s>>e!"
-			<<elseif getSlave($AS).relationship == 3>>
-				"I love playing around with _name! Plea<<s>>e don't <<s>>plit u<<s>> up <<Master>>! I'll be a good $girl, <<Master>>, plea<<s>>e!"
-			<<elseif getSlave($AS).relationship > 0>>
-				"But I like <<s>>pending time with _name! Plea<<s>>e don't <<s>>plit u<<s>> up <<Master>>! I'll be a good $girl, <<Master>>, plea<<s>>e!"
-			<<else>>
-				"I need you in my life, <<Master>>, but not like thi<<s>>, plea<<s>>e?"
-			<</if>>
-		<</if>>
-	<<elseif !hasAnyArms(getSlave($AS))>>
-		$He painstakingly pleads with you, since $he cannot speak or use hands to sign.
-		<<if getSlave($AS).relationship != 0>>
-			<<if getSlave($AS).relationship == -1>>
-				$He desperately tries to explain that $he needs multiple partners.
-			<<elseif getSlave($AS).relationship == 4>>
-				$He desperately begs you to not separate $him from $his love, $slaves[_m].slaveName.
-			<<elseif getSlave($AS).relationship == 3>>
-				$He desperately begs you to not separate $him from $his lover, $slaves[_m].slaveName.
-			<<elseif getSlave($AS).relationship > 0>>
-				$He desperately begs you to not separate $him from $his friend, $slaves[_m].slaveName.
-			<<else>>
-				$He desperately begs you to not marry $him, despite $his emotional connection with you.
-			<</if>>
-		<</if>>
-	<<else>>
-		$He desperately struggles to plead with you before breaking down again.
-		<<if getSlave($AS).relationship != 0>>
-			<<if getSlave($AS).relationship == -1>>
-				$He tries to explain that $he needs multiple partners.
-			<<elseif getSlave($AS).relationship == 4>>
-				$He begs you to not separate $him from $his love, $slaves[_m].slaveName.
-			<<elseif getSlave($AS).relationship == 3>>
-				$He begs you to not separate $him from $his lover, $slaves[_m].slaveName.
-			<<elseif getSlave($AS).relationship > 0>>
-				$He begs you to not separate $him from $his friend, $slaves[_m].slaveName.
-			<<else>>
-				$He begs you to not marry $him, despite $his emotional connection with you.
-			<</if>>
-		<</if>>
-	<</if>>
-	You leave $him to weep and consider $his fate. Despite $his "fortune", $he is still a slave, and undoubtedly knows that $his position could easily change should you tire of $him.
-	<<set _reactionType = 2>>
-<<else>>
-	$He doesn't really react to this. By no means does $he want to be your $wife, but $he's obedient enough to know that you are in charge. You leave $him to $his business, and go back to yours.
-	<<if getSlave($AS).relationship != 0>>
-		<<if getSlave($AS).relationship == -1>>
-			$He sighs at the realization that $he won't be allowed to be so promiscuous and will have to learn to focus $his attention on you.
-		<<elseif getSlave($AS).relationship == 4>>
-			$He sighs at the realization that $he'll have to stop seeing $his love, $slaves[_m].slaveName.
-		<<elseif getSlave($AS).relationship == 3>>
-			$He sighs at the realization that $he'll have to stop spending so much time with $his lover, $slaves[_m].slaveName.
-		<<elseif getSlave($AS).relationship > 0>>
-			$He sighs at the realization that $he'll have to stop spending so much time with $his friend, $slaves[_m].slaveName.
-		<<else>>
-			Deep down, $he dreamed of this. But now that it's happening $he can't shake the feeling of regret.
-		<</if>>
-	<</if>>
-	<<set _reactionType = 3>>
-<</if>>
-<br><br>
-<<= capFirstChar($assistant.name)>> prompts you for wedding
-<<if $assistant.personality <= 0>>
-	instructions.
-<<else>>
-	instructions, _hisA
-	<<if $assistant.appearance == "monstergirl">>
-		monster<<= _girlA>> avatar appearing in a surprisingly conventional surplice that covers _himA up decently. All except for _hisA horns, which protrude from under the headpiece.
-	<<elseif $assistant.appearance == "shemale">>
-		shemale avatar appears in a collar patterned to look like a minister's, and absolutely nothing else, stroking _himselfA with anticipation.
-	<<elseif $assistant.appearance == "amazon">>
-		amazon avatar wearing a tribal shaman's cape and carrying a medicine stick adorned with all sorts of little charms and baubles.
-	<<elseif $assistant.appearance == "businesswoman">>
-		business<<= _womanA>> avatar looking rather severe in a minister's collar.
-	<<elseif $assistant.appearance == "fairy">>
-		fairy avatar looking incredibly silly, dressed in an oversized, disheveled priest's robes and looking rather smug about it.
-	<<elseif $assistant.appearance == "pregnant fairy">>
-		fairy avatar looking incredibly silly, dressed in an oversized, disheveled priest's robes stretched tight by _hisA pregnant belly and looking rather smug about it.
-	<<elseif $assistant.appearance == "goddess">>
-		goddess avatar completely unchanged, since _heA considers _hisA usual form perfectly appropriate for a marriage.
-	<<elseif $assistant.appearance == "hypergoddess">>
-		goddess avatar completely unchanged, since _heA considers _hisA usual form perfectly appropriate for a marriage.
-	<<elseif $assistant.appearance == "loli">>
-		_loliA avatar looking surprisingly mature in a minister's collar. Though, _heA would rather be the flower _girlA in this wedding.
-	<<elseif $assistant.appearance == "preggololi">>
-		_loliA avatar looking surprisingly mature in a minister's collar. Though, _heA would rather be the flower _girlA in this wedding.
-	<<elseif $assistant.appearance == "schoolgirl">>
-		school<<= _girlA>> avatar looking willfully absurd in a minister's collar and _hisA usual short plaid skirt.
-	<<elseif $assistant.appearance == "angel">>
-		angelic avatar looking, well, angelic in _hisA usual garb with an added minister's collar.
-	<<elseif $assistant.appearance == "cherub">>
-		angelic avatar looking absurd in _hisA oversized robe, complete with wing-holes, and minister's collar.
-	<<elseif $assistant.appearance == "incubus">>
-		demonic avatar completely unchanged, since _heA considers _hisA usual form perfectly appropriate for a marriage, though _heA has made sure to be fully erect for the wedding.
-	<<elseif $assistant.appearance == "succubus">>
-		demonic avatar wearing nothing but a minister's collar. _HeA has brought several marital aids along with _himA to tease the bride and groom with.
-	<<elseif $assistant.appearance == "imp">>
-		demonic avatar looking absurd in _hisA oversized robe, complete with wing-holes, and minister's collar.
-	<<elseif $assistant.appearance == "witch">>
-		witchy avatar looking rather formal in a fine robe and minister's collar.
-	<<elseif $assistant.appearance == "ERROR_1606_APPEARANCE_FILE_CORRUPT">>
-		twitching avatar completely unchanged, sans a bulbous ring of flesh around _hisA neck that sort of resembles a minister's collar.
-	<<else>>
-		symbol appearing in white.
-	<</if>>
-<</if>>
-
-<br>
-<span id="result">
-<br><<link "Just redesignate $him as your slave $wife">>
-	<<replace "#result">>
-	You order $assistant.name to simply redesignate <<= getSlave($AS).slaveName>> as your slave $wife.
-	<<if $assistant.personality <= 0>>
-		"Slave redesignated," it responds immediately. The thing is done.
-	<<else>>
-		<<if $assistant.appearance == "monstergirl">>
-			_HisA avatar snaps _hisA fingers and shrugs off _hisA surplice, revealing _hisA tentacle hair, pale skin, and cocks once more.
-		<<elseif $assistant.appearance == "shemale">>
-			_HisA avatar snaps _hisA fingers and starts to masturbate more energetically.
-		<<elseif $assistant.appearance == "amazon">>
-			_HisA avatar gives _hisA medicine stick a shake.
-		<<elseif $assistant.appearance == "businesswoman">>
-			_HisA avatar snaps _hisA fingers.
-		<<elseif $assistant.appearance.includes("fairy")>>
-			_HisA avatar claps _hisA hands twice, looking a bit disappointed at the lack of celebration.
-		<<elseif $assistant.appearance.includes("goddess")>>
-			_HisA avatar makes a complex hand gesture, looking beatific.
-		<<elseif $assistant.appearance.includes("loli")>>
-			_HisA avatar claps _hisA hands together.
-		<<elseif $assistant.appearance == "schoolgirl">>
-			_HisA avatar snaps _hisA fingers and gives a little twirl.
-		<<elseif $assistant.appearance == "angel">>
-			_HisA avatar spreads _hisA wings and arms and emits a flash of light.
-		<<elseif $assistant.appearance == "cherub">>
-			_HisA avatar claps _hisA hands together, emitting a burst of light.
-		<<elseif $assistant.appearance == "incubus">>
-			_HisA avatar flicks the tip of _hisA penis and blows _hisA load towards the both of you.
-		<<elseif $assistant.appearance == "succubus">>
-			_HisA avatar starts to masturbate furiously and orgasms lewdly.
-		<<elseif $assistant.appearance == "imp">>
-			_HisA avatar claps _hisA hands together, emitting a burst of darkness.
-		<<elseif $assistant.appearance == "witch">>
-			_HisA avatar pulls out _hisA spell book and attempts a spell to bind you two; _heA manages to conjure a large ring around _himselfA, pinning _hisA arms to _hisA sides.
-		<<elseif $assistant.appearance == "ERROR_1606_APPEARANCE_FILE_CORRUPT">>
-			_HisA avatar splits open to reveal a number of tentacles and wraps them around each other.
-		<<else>>
-			_HisA symbol flashes.
-		<</if>>
-		"Done," _heA says.
-	<</if>>
-	<<if getSlave($AS).relationship > 0>>
-		<<set getSlave($AS).relationshipTarget = 0>>
-		<<set $slaves[_m].relationship = 0, $slaves[_m].relationshipTarget = 0>>
-	<</if>>
-	<<if getSlave($AS).devotion+getSlave($AS).trust >= 175>>
-		<<if getSlave($AS).relationship > 0>>
-			Both $him and $his ex are @@.mediumorchid;disappointed@@ that their relationship had to end and @@.gold;worry@@ for each other's future.
-			<<if getSlave($AS).relationship == 4>>
-				<<set $slaves[_m].devotion -= 5, $slaves[_m].trust -= 5>>
-			<<elseif getSlave($AS).relationship == 3>>
-				<<set $slaves[_m].devotion -= 3, $slaves[_m].trust -= 3>>
-			<<else>>
-				<<set $slaves[_m].devotion -= 1, $slaves[_m].trust -= 1>>
-			<</if>>
-		<</if>>
-	<<elseif getSlave($AS).devotion < -20>>
-		<<if getSlave($AS).relationship == -1>>
-			$He @@.mediumorchid;hates@@ that $he has to be yours only and @@.gold;fears@@ what will happen if $he strays.
-			<<set getSlave($AS).devotion -= 40, getSlave($AS).trust -= 40>>
-		<<elseif getSlave($AS).relationship == 4>>
-			Both $him and $his ex are @@.mediumorchid;resent@@ that their relationship had to end and @@.gold;fear@@ for each other's future.
-			<<set $slaves[_m].devotion -= 40, $slaves[_m].trust -= 40>>
-			<<set getSlave($AS).devotion -= 40, getSlave($AS).trust -= 40>>
-		<<elseif getSlave($AS).relationship == 3>>
-			Both $him and $his ex are @@.mediumorchid;resent@@ that their relationship had to end and @@.gold;fear@@ for each other's future.
-			<<set $slaves[_m].devotion -= 30, $slaves[_m].trust -= 30>>
-			<<set getSlave($AS).devotion -= 30, getSlave($AS).trust -= 30>>
-		<<elseif getSlave($AS).relationship > 0>>
-			Both $him and $his ex are @@.mediumorchid;resent@@ that their relationship had to end and @@.gold;fear@@ for each other's future.
-			<<set $slaves[_m].devotion -= 20, $slaves[_m].trust -= 20>>
-			<<set getSlave($AS).devotion -= 20, getSlave($AS).trust -= 20>>
-		<</if>>
-	<<else>>
-		<<if getSlave($AS).relationship == -1>>
-			$He @@.mediumorchid;dislikes@@ that $he has to be yours only and @@.gold;worries@@ what will happen if $he strays.
-			<<set getSlave($AS).devotion -= 10, getSlave($AS).trust -= 10>>
-		<<elseif getSlave($AS).relationship == 4>>
-			Both $him and $his ex are @@.mediumorchid;resent@@ that their relationship had to end and @@.gold;worry@@ for each other.
-			<<set $slaves[_m].devotion -= 20, $slaves[_m].trust -= 20>>
-			<<set getSlave($AS).devotion -= 20, getSlave($AS).trust -= 20>>
-		<<elseif getSlave($AS).relationship == 3>>
-			Both $him and $his ex are @@.mediumorchid;are saddened@@ that their relationship had to end and @@.gold;worry@@ for each other.
-			<<set $slaves[_m].devotion -= 10, $slaves[_m].trust -= 10>>
-			<<set getSlave($AS).devotion -= 10, getSlave($AS).trust -= 10>>
-		<<elseif getSlave($AS).relationship > 0>>
-			Both $him and $his ex are @@.mediumorchid;are disappointed@@ that their relationship had to end and @@.gold;worry@@ for each other.
-			<<set $slaves[_m].devotion -= 5, $slaves[_m].trust -= 5>>
-			<<set getSlave($AS).devotion -= 5, getSlave($AS).trust -= 5>>
-		<</if>>
-	<</if>>
-	<<set getSlave($AS).relationship = -3>>
-	<<if $PC.slaveSurname && getSlave($AS).slaveSurname != $PC.slaveSurname>>
-		<br><br><span id="surnaming">
-		<<link "Give $him your surname">>
-			<<replace "#surnaming">>
-				<<set getSlave($AS).slaveSurname = $PC.slaveSurname>>
-				You also command $assistant.name to rename your new slave $wife <<= getSlave($AS).slaveName>> <<= getSlave($AS).slaveSurname>>.
-				<<if getSlave($AS).fetish == "mindbroken">>
-					The new Mrs. <<= getSlave($AS).slaveSurname>><<if canHear(getSlave($AS))>>hears<<else>>understands<</if>> this, of course, and shows no reaction. Like many things, names mean nothing to $him now.
-				<<elseif getSlave($AS).devotion+getSlave($AS).trust >= 175>>
-					The new Mrs. <<= getSlave($AS).slaveSurname>><<if canHear(getSlave($AS))>>hears<<else>>understands<</if>> this, of course, and breaks down again. Being brusquely redesignated as your slave $wife was such a sterile experience that $he wasn't sure it was real, and hearing that $he's to take your surname @@.mediumaquamarine;reassures $him@@ that it is. Not to mention, $he might be a $desc, but $he's still a $girl, and hearing that $he wouldn't get a decent wedding did disappoint $him, but this makes up for it. You might not be all that expressive, but @@.hotpink;$he's your $wife,@@ and that's what matters to $him.
-					<<set getSlave($AS).devotion += 5, getSlave($AS).trust += 5>>
-				<<elseif getSlave($AS).devotion < -20 && getSlave($AS).trust > 20>>
-					The new Mrs. <<= getSlave($AS).slaveSurname>><<if canHear(getSlave($AS))>>hears<<else>>understands<</if>> this, of course, and scoffs audibly. @@.mediumorchid;$He'll remember $his name, even if you try to take it away.@@ $He can't hide @@.mediumorchid;$his annoyance@@ that you couldn't even spring for a fancy wedding.
-					<<set getSlave($AS).devotion -= 10>>
-				<<elseif getSlave($AS).devotion < -20>>
-					The new Mrs. <<= getSlave($AS).slaveSurname>><<if canHear(getSlave($AS))>>hears<<else>>understands<</if>> this, of course, and breaks down again. Not only have you taken $his hand, but now also $his name; @@.hotpink;$he's yours now,@@ nothing $he thinks can change that.
-					<<set getSlave($AS).devotion += 5>>
-				<<else>>
-					The new Mrs. <<= getSlave($AS).slaveSurname>><<if canHear(getSlave($AS))>>hears<<else>>understands<</if>> this, of course, and nods acceptingly. Being trusted with your surname @@.mediumaquamarine;reassures $him@@ that $he must mean something to you, though $he is a @@.mediumorchid;little disappointed@@ by the lack of a wedding, however.
-					<<set getSlave($AS).devotion--, getSlave($AS).trust += 5>>
-				<</if>>
-			<</replace>>
-		<</link>>
-		</span>
-	<</if>>
-	<</replace>>
-<</link>>
-<br><<link "Have your assistant marry $him to you">>
-	<<replace "#result">>
-	You order <<= getSlave($AS).slaveName>> to go change into bridal lingerie.
-	<<if _reactionType == 0>>
-		<<if canWalk(getSlave($AS)) || (canMove(getSlave($AS)) && getSlave($AS).rules.mobility == "permissive")>>
-			$He hurries off, still crying. When $he returns, $he's wearing
-		<<else>>
-			$He is helped out, still crying. When $he is returned, $he's wearing
-		<</if>>
-	<<elseif _reactionType == 1>>
-		$He is helped out, completely unaware of $his pending marriage. When $he is returned, $he's wearing
-	<<elseif _reactionType == 2>>
-		<<if canWalk(getSlave($AS)) || (canMove(getSlave($AS)) && getSlave($AS).rules.mobility == "permissive")>>
-			$He shuffles off, still sobbing. When $he returns, $he's wearing
-		<<else>>
-			$He is helped out, still sobbing. When $he is returned, $he's wearing
-		<</if>>
-	<<else>>
-		<<if canWalk(getSlave($AS)) || (canMove(getSlave($AS)) && getSlave($AS).rules.mobility == "permissive")>>
-			$He hurries off to fulfill your orders. When $he returns, $he's wearing
-		<<else>>
-			$He is helped out to get dressed. When $he is returned, $he's wearing
-		<</if>>
-	<</if>>
-	<<if (getSlave($AS).vagina == 0)>>
-		white, since $he's a virgin.
-	<<elseif (getSlave($AS).pregKnown == 1)>>
-		light pink, since $he is pregnant.
-	<<elseif (getSlave($AS).vagina < 0) && (getSlave($AS).anus == 0)>>
-		white, since $he's an anal virgin.
-	<<elseif (getSlave($AS).vagina < 0) && (getSlave($AS).boobs > 500)>>
-		electric blue, since $he's a shemale.
-	<<elseif (getSlave($AS).vagina < 0)>>
-		pale blue, since $he's a sissy slave.
-	<<elseif (getSlave($AS).dick > 0)>>
-		hot pink, since $he's a futa slave.
-	<<else>>
-		light pink, since $he's an experienced sex slave.
-	<</if>>
-	A flimsy veil covers $his head and shoulders.
-	<<if (getSlave($AS).boobs > 4000)>>
-		On such short notice, no bridal bra for boobs of $his size was available, so $he's topless. Not a tragedy.
-	<<elseif (getSlave($AS).boobs > 1200)>>
-		$His lacy bridal bra just barely restrains $his huge boobs, leaving the tops of $his areolae visible.
-	<<elseif (getSlave($AS).boobs > 400)>>
-		$His lacy bridal bra flatters $his pretty breasts.
-	<<else>>
-		$His lacy bridal bra flatters $his pretty chest.
-	<</if>>
-	<<if getSlave($AS).bellyPreg >= 600000>>
-		$His expansive, squirming pregnant belly makes $his bridal wear particularly obscene.
-	<<elseif (getSlave($AS).bellyPreg >= 1500)>>
-		$His _belly pregnant belly protrudes out the front of $his bridal wear.
-	<<elseif (getSlave($AS).bellyImplant >= 1500)>>
-		$His _belly <<print getSlave($AS).bellyImplant>>cc belly implant protrudes $his middle out the front of $his bridal wear.
-	<<elseif (getSlave($AS).bellyFluid >= 10000)>>
-		$His hugely bloated, <<print getSlave($AS).inflationType>>-filled belly protrudes out the front of $his bridal wear.
-	<<elseif (getSlave($AS).bellyFluid >= 5000)>>
-		$His bloated, <<print getSlave($AS).inflationType>>-stuffed belly protrudes out the front of $his bridal wear.
-	<<elseif (getSlave($AS).bellyFluid >= 1500)>>
-		$His distended, <<print getSlave($AS).inflationType>>-belly protrudes out the front of $his bridal wear.
-	<</if>>
-	<<if getSlave($AS).chastityPenis == 1>>
-		$His slave dick is hidden by its chastity cage.
-	<<elseif canAchieveErection(getSlave($AS))>>
-		<<if (getSlave($AS).dick > 4) && (getSlave($AS).belly >= 5000)>>
-			$He's hugely erect, with $his lacy g-string only serving to hold $his dick agonizingly pressed against the bottom of $his _belly <<if getSlave($AS).bellyPreg >= 3000>>pregnant <</if>>belly.
-		<<elseif getSlave($AS).dick > 4>>
-			$He's hugely erect, with $his lacy g-string only serving to hold $his dick upright along $his belly.
-		<<else>>
-			$His erection tents the front of $his lacy g-string.
-		<</if>>
-	<<elseif (getSlave($AS).dick > 0)>>
-		<<if getSlave($AS).dick > 10>>
-			$His huge soft cock is allowed to dangle freely as no g-string could hope to contain it.
-		<<elseif getSlave($AS).dick > 4>>
-			$His big soft cock forms a lewd mass, stuffed into $his lacy g-string.
-		<<else>>
-			$His lacy g-string perfectly conceals $his soft dick.
-		<</if>>
-	<<else>>
-		<<if getSlave($AS).clit > 1>>
-			$His huge clit is quite hard, making $him shift uncomfortably as $his lacy g-string stimulates it.
-		<<else>>
-			$His lacy g-string is starting to look a bit moist in front.
-		<</if>>
-	<</if>>
-	<<= capFirstChar($assistant.name)>> marries $him to you in a brief ceremony adapted for slaves and their owners. You place a
-	<<if hasAnyArms(getSlave($AS))>>
-		simple steel ring on $his finger;
-	<<else>>
-		chain with a simple steel ring around $his neck;
-	<</if>>
-	$he does not reciprocate, since this marriage does not bind you.
-	<<if $assistant.personality <= 0>>
-		"The marriage protocol now requires you to <<if $PC.dick != 0>>fellate<<if $PC.vagina != -1>> and <</if>><</if>><<if $PC.vagina != -1>>perform cunnilingus on<</if>> the <<if $PC.title == 1>>groom<<else>>the bride<</if>>," $assistant.name orders $him, and $he <<if _reactionType == 0>>only starts when you push $his head to your crotch<<elseif _reactionType == 1>>eagerly complies<<elseif _reactionType == 2>>reluctantly obeys<<else>>hurries to obey<</if>>.
-	<<else>>
-		<<if $assistant.appearance == "monstergirl">>
-			"To consecrate the ceremony," $assistant.name concludes, "<<= getSlave($AS).slaveName>>, you will now <<if $PC.dick != 0>>suck the <<if $PC.title == 1>>groom<<else>>bride<</if>>'s dick<<if $PC.vagina != -1>> and eat _hisP pussy<</if>><<else>>eat the <<if $PC.title == 1>>groom<<else>>bride<</if>>'s pussy<</if>>." The slave <<if _reactionType == 0>>only starts when you push $his head to your crotch<<elseif _reactionType == 1>>eagerly complies<<elseif _reactionType == 2>>reluctantly obeys<<else>>hurries to obey<</if>>. Pleased by the sight, $assistant.name's avatar begins to play with _hisA dicks.
-		<<elseif $assistant.appearance == "shemale">>
-			"To get this marriage started," $assistant.name concludes, "<<= getSlave($AS).slaveName>>, you will now <<if $PC.dick != 0>>suck the <<if $PC.title == 1>>groom<<else>>bride<</if>>'s dick<<if $PC.vagina != -1>> and eat _hisP pussy<</if>><<else>>eat the <<if $PC.title == 1>>groom<<else>>bride<</if>>'s pussy<</if>>." The slave <<if _reactionType == 0>>only starts when you push $his head to your crotch<<elseif _reactionType == 1>>eagerly complies<<elseif _reactionType == 2>>reluctantly obeys<<else>>hurries to obey<</if>>. Pleased by the sight, $assistant.name's avatar starts to jill off.
-		<<elseif $assistant.appearance == "amazon">>
-			"To complete this ritual," $assistant.name concludes, "<<= getSlave($AS).slaveName>>, you will now <<if $PC.dick != 0>>suck the <<if $PC.title == 1>>groom<<else>>bride<</if>>'s dick<<if $PC.vagina != -1>> and eat _hisP pussy<</if>><<else>>eat the <<if $PC.title == 1>>groom<<else>>bride<</if>>'s pussy<</if>>." The slave <<if _reactionType == 0>>only starts when you push $his head to your crotch<<elseif _reactionType == 1>>eagerly complies<<elseif _reactionType == 2>>reluctantly obeys<<else>>hurries to obey<</if>>. Pleased by the sight, $assistant.name's avatar starts to jill off.
-		<<elseif $assistant.appearance == "businesswoman">>
-			"To consecrate the marriage," $assistant.name concludes, "<<= getSlave($AS).slaveName>>, you will now <<if $PC.dick != 0>>fellate<<else>>perform cunnilingus on<</if>> the <<if $PC.title == 1>>groom<<else>>the bride<</if>>." The slave <<if _reactionType == 0>>only starts when you push $his head to your crotch<<elseif _reactionType == 1>>eagerly complies<<elseif _reactionType == 2>>reluctantly obeys<<else>>hurries to obey<</if>>. Pleased by the sight, $assistant.name's avatar sneaks a hand down _hisA suit skirt, blushing furiously.
-		<<elseif $assistant.appearance == "fairy">>
-			"To seal the deal," $assistant.name concludes, "<<= getSlave($AS).slaveName>>, you gotta drink the <<if $PC.title == 1>>groom's <<else>>bride's <</if>><<if $PC.dick != 0>>semen<<if $PC.vagina != -1>> and pussy juices<</if>><<else>>pussy juices<</if>>." The slave <<if _reactionType == 0>>only starts when you push $his head to your crotch<<elseif _reactionType == 1>>eagerly complies<<elseif _reactionType == 2>>reluctantly obeys<<else>>hurries to obey<</if>>. Pleased by the sight, $assistant.name's avatar spreads _hisA legs while still hovering in the air and masturbates eagerly through _hisA half-worn robes.
-		<<elseif $assistant.appearance == "pregnant fairy">>
-			"To seal the deal," $assistant.name concludes, "<<= getSlave($AS).slaveName>>, you gotta drink the <<if $PC.title == 1>>groom's <<else>>bride's <</if>><<if $PC.dick != 0>>semen<<if $PC.vagina != -1>> and pussy juices<</if>><<else>>pussy juices<</if>>." The slave <<if _reactionType == 0>>only starts when you push $his head to your crotch<<elseif _reactionType == 1>>eagerly complies<<elseif _reactionType == 2>>reluctantly obeys<<else>>hurries to obey<</if>>. Pleased by the sight, $assistant.name's pregnant avatar curls while still hovering in the air and masturbates eagerly around _hisA large belly.
-		<<elseif $assistant.appearance == "goddess">>
-			"To consummate the marriage," $assistant.name concludes, "<<= getSlave($AS).slaveName>>, you must now <<if $PC.dick != 0>>drink the <<if $PC.title == 1>>groom<<else>>the bride<</if>>'s seed<<else>>drink the <<if $PC.title == 1>>groom<<else>>the bride<</if>>'s female juices<</if>>." The slave <<if _reactionType == 0>>only starts when you push $his head to your crotch<<elseif _reactionType == 1>>eagerly complies<<elseif _reactionType == 2>>reluctantly obeys<<else>>hurries to obey<</if>>. $assistant.name's avatar looks on approvingly, cradling _hisA perpetual pregnancy.
-		<<elseif $assistant.appearance == "hypergoddess">>
-			"To consummate the marriage," $assistant.name concludes, "<<= getSlave($AS).slaveName>>, you must now <<if $PC.dick != 0>>drink the <<if $PC.title == 1>>groom<<else>>bride<</if>>'s seed<<else>>drink the <<if $PC.title == 1>>groom<<else>>bride<</if>>'s female juices<</if>>." The slave <<if _reactionType == 0>>only starts when you push $his head to your crotch<<elseif _reactionType == 1>>eagerly complies<<elseif _reactionType == 2>>reluctantly obeys<<else>>hurries to obey<</if>>. $assistant.name's avatar looks on approvingly, cradling _hisA massive perpetual pregnancy.
-		<<elseif $assistant.appearance == "loli">>
-			"To consummate the marriage," $assistant.name concludes, "<<= getSlave($AS).slaveName>>, you should now <<if $PC.dick != 0>>suck the <<if $PC.title == 1>>groom<<else>>the bride<</if>>'s cock<<if $PC.vagina != -1>>and lick _hisP cunny.<</if>><<else>>lick the <<if $PC.title == 1>>groom<<else>>the bride<</if>>'s cunny<</if>>." The slave <<if _reactionType == 0>>only starts when you push $his head to your crotch<<elseif _reactionType == 1>>eagerly complies<<elseif _reactionType == 2>>reluctantly obeys<<else>>hurries to obey<</if>>. $assistant.name's avatar sneaks a hand down _hisA dress, blushing furiously.
-		<<elseif $assistant.appearance == "preggololi">>
-			"To consummate the marriage," $assistant.name concludes, "<<= getSlave($AS).slaveName>>, you should now <<if $PC.dick != 0>>suck the <<if $PC.title == 1>>groom<<else>>the bride<</if>>'s lovely cock<<if $PC.vagina != -1>>and eat out _hisP cunt.<</if>><<else>>lick the <<if $PC.title == 1>>groom<<else>>the bride<</if>>'s cunt<</if>>." The slave <<if _reactionType == 0>>only starts when you push $his head to your crotch<<elseif _reactionType == 1>>eagerly complies<<elseif _reactionType == 2>>reluctantly obeys<<else>>hurries to obey<</if>>. $assistant.name's avatar attempts to sneak a hand down _hisA dress, but is thwarted by _hisA belly. _HeA instead openly rubs _hisA crotch through the front of _hisA dress, blushing furiously.
-		<<elseif $assistant.appearance == "schoolgirl">>
-			"To get this marriage started," $assistant.name concludes, "<<= getSlave($AS).slaveName>>, the rules say you should now <<if $PC.dick != 0>>suck the <<if $PC.title == 1>>groom<<else>>bride<</if>>'s dick<<if $PC.vagina != -1>> and eat _hisP pussy<</if>><<else>>eat the <<if $PC.title == 1>>groom<<else>>bride<</if>>'s pussy<</if>>." The slave <<if _reactionType == 0>>only starts when you push $his head to your crotch<<elseif _reactionType == 1>>eagerly complies<<elseif _reactionType == 2>>reluctantly obeys<<else>>hurries to obey<</if>>. Pleased by the sight, $assistant.name's avatar starts to jill off.
-		<<elseif $assistant.appearance == "angel">>
-			"To consummate the marriage," $assistant.name concludes, "<<= getSlave($AS).slaveName>>, you must now join <<= PlayerName()>> in their bedroom and consummate this marriage." The slave <<if _reactionType == 0>>stares blankly<<else>>looks confused<</if>>. "After the wedding ends, would be the time." $assistant.name says, covering _hisA face in embarrassment at the thought.
-		<<elseif $assistant.appearance == "cherub">>
-			"To consummate the marriage," $assistant.name concludes, "<<= getSlave($AS).slaveName>>, you should <<if $PC.dick != 0>>suck the <<if $PC.title == 1>>groom<<else>>the bride<</if>>'s cock<<if $PC.vagina != -1>>and lick _hisP pussy,<</if>><<else>>lick the <<if $PC.title == 1>>groom<<else>>the bride<</if>>'s pussy<</if>>, in the privacy of <<= PlayerName()>>'s bedroom, of course." $assistant.name hides _hisA face in _hisA hands at the thought.
-		<<elseif $assistant.appearance == "incubus">>
-			"To get this marriage started," $assistant.name concludes, "<<= getSlave($AS).slaveName>>, you will now <<if $PC.dick != 0>>suck the <<if $PC.title == 1>>groom<<else>>bride<</if>>'s dick<<if $PC.vagina != -1>> and eat _hisP pussy<</if>><<else>>eat the <<if $PC.title == 1>>groom<<else>>bride<</if>>'s pussy<</if>>." The slave <<if _reactionType == 0>>only starts when you push $his head to your crotch<<elseif _reactionType == 1>>eagerly complies<<elseif _reactionType == 2>>reluctantly obeys<<else>>hurries to obey<</if>>. Enjoying the sight, $assistant.name's avatar begins to furiously stroke its shaft.
-		<<elseif $assistant.appearance == "succubus">>
-			"To get this marriage started," $assistant.name concludes, "<<= getSlave($AS).slaveName>>, you will now <<if $PC.dick != 0>>suck the <<if $PC.title == 1>>groom<<else>>bride<</if>>'s dick<<if $PC.vagina != -1>> and eat _hisP pussy<</if>><<else>>eat the <<if $PC.title == 1>>groom<<else>>bride<</if>>'s pussy<</if>>." The slave <<if _reactionType == 0>>only starts when you push $his head to your crotch<<elseif _reactionType == 1>>eagerly complies<<elseif _reactionType == 2>>reluctantly obeys<<else>>hurries to obey<</if>>. Pleased by the sight, $assistant.name's avatar pulls out a large dildo and begins ramming it into _hisA own pussy.
-		<<elseif $assistant.appearance == "imp">>
-			"To get this marriage started," $assistant.name concludes, "<<= getSlave($AS).slaveName>>, you will now <<if $PC.dick != 0>>suck the <<if $PC.title == 1>>groom<<else>>bride<</if>>'s dick<<if $PC.vagina != -1>> and eat _hisP pussy<</if>><<else>>eat the <<if $PC.title == 1>>groom<<else>>bride<</if>>'s pussy<</if>>." The slave <<if _reactionType == 0>>only starts when you push $his head to your crotch<<elseif _reactionType == 1>>eagerly complies<<elseif _reactionType == 2>>reluctantly obeys<<else>>hurries to obey<</if>>. Pleased by the sight, $assistant.name's avatar hikes _hisA robe and vigorously rubs _hisA pussy.
-		<<elseif $assistant.appearance == "witch">>
-			"To get this marriage started," $assistant.name concludes, "<<= getSlave($AS).slaveName>>, you will now <<if $PC.dick != 0>>suck the <<if $PC.title == 1>>groom<<else>>bride<</if>>'s dick<<if $PC.vagina != -1>> and eat _hisP pussy<</if>><<else>>eat the <<if $PC.title == 1>>groom<<else>>bride<</if>>'s pussy<</if>>." The slave <<if _reactionType == 0>>only starts when you push $his head to your crotch<<elseif _reactionType == 1>>eagerly complies<<elseif _reactionType == 2>>reluctantly obeys<<else>>hurries to obey<</if>>. $assistant.name's avatar begins to fidget at the sight, having summoned a vibrator beforehand and accidentally linked it to your pleasure.
-		<<elseif $assistant.appearance == "ERROR_1606_APPEARANCE_FILE_CORRUPT">>
-			"To get this marriage started," $assistant.name concludes, "<<= getSlave($AS).slaveName>>, you will now <<if $PC.dick != 0>>suck the <<if $PC.title == 1>>groom<<else>>bride<</if>>'s dick<<if $PC.vagina != -1>> and eat _hisP pussy<</if>><<else>>eat the <<if $PC.title == 1>>groom<<else>>bride<</if>>'s pussy<</if>>." The slave <<if _reactionType == 0>>only starts when you push $his head to your crotch<<elseif _reactionType == 1>>eagerly complies<<elseif _reactionType == 2>>reluctantly obeys<<else>>hurries to obey<</if>>. $assistant.name's avatar begins to swell, drawing all its gained mass to its midsection. Its gravid middles splits vertically, allowing a new mass of flesh to fall to the floor, which quickly grows and reshapes itself into a spitting image of yourself. Meanwhile, the original twists into an image of <<= getSlave($AS).slaveName>>. $assistant.name's two avatars begin copying you and <<= getSlave($AS).slaveName>>'s actions perfectly.
-		<<else>>
-			"To get this marriage started," $assistant.name concludes, "<<= getSlave($AS).slaveName>>, the rules say you should now <<if $PC.dick != 0>>suck the <<if $PC.title == 1>>groom<<else>>bride<</if>>'s dick<<if $PC.vagina != -1>> and eat _hisP pussy<</if>><<else>>eat the <<if $PC.title == 1>>groom<<else>>bride<</if>>'s pussy<</if>>." The slave <<if _reactionType == 0>>only starts when you push $his head to your crotch<<elseif _reactionType == 1>>eagerly complies<<elseif _reactionType == 2>>reluctantly obeys<<else>>hurries to obey<</if>>. With only a symbol to express _hisA approval, $assistant.name is forced to content _himselfA with spinning the symbol and making it glow in time with your new slave $wife's efforts.
-		<</if>>
-		"Done," _heA says when you climax. "Enjoy your
-		<<if (getSlave($AS).fetishKnown == 1) && (getSlave($AS).fetishStrength > 60)>>
-			<<if (getSlave($AS).fetish == "submissive")>>
-				submissive slave $wife!"
-			<<elseif (getSlave($AS).fetish == "cumslut")>>
-				slave $wife's mouth!"
-			<<elseif (getSlave($AS).fetish == "humiliation")>>
-				exhibitionist slave $wife!"
-			<<elseif (getSlave($AS).fetish == "buttslut")>>
-				slave $wife's butthole!"
-			<<elseif (getSlave($AS).fetish == "boobs")>>
-				slave $wife's boobs!"
-			<<elseif (getSlave($AS).fetish == "pregnancy")>>
-				breeder $wife!"
-			<<elseif (getSlave($AS).fetish == "dom")>>
-				slave $wife's aggression!"
-			<<elseif (getSlave($AS).fetish == "sadist")>>
-				slave $wife's sadistic tendencies!"
-			<<elseif (getSlave($AS).fetish == "masochist")>>
-				slave $wife's pain!"
-			<<else>>
-				slave $wife!"
-			<</if>>
-		<<else>>
-			slave $wife!"
-		<</if>>
-	<</if>>
-	<<if getSlave($AS).relationship > 0>>
-		<<set getSlave($AS).relationshipTarget = 0>>
-		<<set $slaves[_m].relationship = 0, $slaves[_m].relationshipTarget = 0>>
-		<<setLocalPronouns $slaves[_m] 2>>
-	<</if>>
-	<<if getSlave($AS).devotion+getSlave($AS).trust >= 175>>
-		<<if getSlave($AS).relationship > 0>>
-			$His ex is @@.mediumorchid;disappointed@@ that their relationship had to end and @@.gold;worries@@ for _his2 love's future.
-			<<if getSlave($AS).relationship == 4>>
-				<<set $slaves[_m].devotion -= 5, $slaves[_m].trust -= 5>>
-			<<elseif getSlave($AS).relationship == 3>>
-				<<set $slaves[_m].devotion -= 3, $slaves[_m].trust -= 3>>
-			<<else>>
-				<<set $slaves[_m].devotion -= 1, $slaves[_m].trust -= 1>>
-			<</if>>
-		<</if>>
-	<<elseif getSlave($AS).devotion < -20>>
-		<<if getSlave($AS).relationship == -1>>
-			$He @@.mediumorchid;hates@@ that $he has to be yours only and @@.gold;fears@@ what will happen if $he strays.
-			<<set getSlave($AS).devotion -= 40, getSlave($AS).trust -= 40>>
-		<<elseif getSlave($AS).relationship == 4>>
-			Both $him and $his ex are @@.mediumorchid;resent@@ that their relationship had to end and @@.gold;fear@@ for each other's future.
-			<<set $slaves[_m].devotion -= 40, $slaves[_m].trust -= 40>>
-			<<set getSlave($AS).devotion -= 40, getSlave($AS).trust -= 40>>
-		<<elseif getSlave($AS).relationship == 3>>
-			Both $him and $his ex are @@.mediumorchid;resent@@ that their relationship had to end and @@.gold;fear@@ for each other's future.
-			<<set $slaves[_m].devotion -= 30, $slaves[_m].trust -= 30>>
-			<<set getSlave($AS).devotion -= 30, getSlave($AS).trust -= 30>>
-		<<elseif getSlave($AS).relationship > 0>>
-			Both $him and $his ex are @@.mediumorchid;resent@@ that their relationship had to end and @@.gold;fear@@ for each other's future.
-			<<set $slaves[_m].devotion -= 20, $slaves[_m].trust -= 20>>
-			<<set getSlave($AS).devotion -= 20, getSlave($AS).trust -= 20>>
-		<</if>>
-	<<else>>
-		<<if getSlave($AS).relationship == -1>>
-			$He @@.mediumorchid;dislikes@@ that $he has to be yours only and @@.gold;worries@@ what will happen if $he strays.
-			<<set getSlave($AS).devotion -= 10, getSlave($AS).trust -= 10>>
-		<<elseif getSlave($AS).relationship == 4>>
-			Both $him and $his ex are @@.mediumorchid;resent@@ that their relationship had to end and @@.gold;worry@@ for each other.
-			<<set $slaves[_m].devotion -= 20, $slaves[_m].trust -= 20>>
-			<<set getSlave($AS).devotion -= 20, getSlave($AS).trust -= 20>>
-		<<elseif getSlave($AS).relationship == 3>>
-			Both $him and $his ex are @@.mediumorchid;are saddened@@ that their relationship had to end and @@.gold;worry@@ for each other.
-			<<set $slaves[_m].devotion -= 10, $slaves[_m].trust -= 10>>
-			<<set getSlave($AS).devotion -= 10, getSlave($AS).trust -= 10>>
-		<<elseif getSlave($AS).relationship > 0>>
-			Both $him and $his ex are @@.mediumorchid;are disappointed@@ that their relationship had to end and @@.gold;worry@@ for each other.
-			<<set $slaves[_m].devotion -= 5, $slaves[_m].trust -= 5>>
-			<<set getSlave($AS).devotion -= 5, getSlave($AS).trust -= 5>>
-		<</if>>
-	<</if>>
-	<<set getSlave($AS).relationship = -3>>
-	<<if $PC.slaveSurname && getSlave($AS).slaveSurname != $PC.slaveSurname>>
-		<br><br><span id="surnaming">
-		<<link "Give $him your surname">>
-			<<replace "#surnaming">>
-				<<set getSlave($AS).slaveSurname = $PC.slaveSurname>>
-				You also command $assistant.name to rename your new slave $wife <<= getSlave($AS).slaveName>> <<= getSlave($AS).slaveSurname>>.
-				<<if getSlave($AS).fetish == "mindbroken">>
-					Before you get too distracted, you tell your lovely new $wife that $he's now to be known as <<= getSlave($AS).slaveName>> <<= getSlave($AS).slaveSurname>>. You are uncertain if it sunk in or not.
-				<<elseif getSlave($AS).devotion+getSlave($AS).trust >= 175>>
-					Before you get too distracted, you tell your lovely new $wife that $he's now to be known as <<= getSlave($AS).slaveName>> <<= getSlave($AS).slaveSurname>>. It would be an understatement to say $he's delighted. $He's a good $desc, but even $he has to retain a kernel of doubt about whether a marriage between an owner and a piece of property is really worth much. This @@.mediumaquamarine;reassures $him@@ that it is. $His special day probably wasn't exactly like $he might once have imagined it, but $he obviously thinks it's been @@.hotpink;very nice,@@ all things considered.
-					<<if canTalk(getSlave($AS))>>"_myName _playerSurname," $he murmurs to $himself occasionally, smiling.<</if>>
-					<<set getSlave($AS).devotion += 5, getSlave($AS).trust += 5>>
-				<<elseif getSlave($AS).devotion < -20 && getSlave($AS).trust > 20>>
-					Before you get too distracted, you tell your lovely new $wife that $he's now to be known as <<= getSlave($AS).slaveName>> <<= getSlave($AS).slaveSurname>>. @@.mediumorchid;$He'll remember $his name, even if you try to take it away.@@
-					<<if canTalk(getSlave($AS))>>"_myName _playerSurname," $he mutters to $himself occasionally; their is a distinct distaste to the way $he says it.<</if>>
-					<<set getSlave($AS).devotion -= 10>>
-				<<elseif getSlave($AS).devotion < -20>>
-					Before you get too distracted, you tell your quivering new $wife that $he's now to be known as <<= getSlave($AS).slaveName>> <<= getSlave($AS).slaveSurname>>. $He nods in terror. Not only have you taken $his hand, but now also $his name; @@.hotpink;$he's yours now,@@ nothing $he thinks can change that.
-					<<if canTalk(getSlave($AS))>>"_myName _playerSurname," $he mutters to $himself occasionally, $his voice wavering as $he struggles to hold back the tears.<</if>>
-					<<set getSlave($AS).devotion += 5>>
-				<<else>>
-					Before you get too distracted, you tell your lovely new $wife that $he's now to be known as <<= getSlave($AS).slaveName>> <<= getSlave($AS).slaveSurname>>. $He nods acceptingly. $He's a good $desc, but $he has doubts about whether a marriage between an owner and a piece of property is really worth much. That doesn't matter, @@.mediumaquamarine;it's worth something to $him.@@
-					<<if canTalk(getSlave($AS))>>"_myName _playerSurname," $he murmurs to $himself occasionally<<if canHear(getSlave($AS))>>, listening to how it sounds<</if>>.<</if>>
-					<<set getSlave($AS).trust += 5>>
-				<</if>>
-			<</replace>>
-		<</link>>
-		</span>
-	<</if>>
-	<</replace>>
-<</link>>
-<<if $cash > 10000>>
-	<<if $weddingPlanned > 0>>
-		<<if $weddingPlanned == 1>>
-			<br>Invite prominent citizens to a wedding:
-			<br>&nbsp;&nbsp;&nbsp;&nbsp;
-			<<link "Straightforward ceremony">>
-				<<replace "#result">>
-				You order $assistant.name to invite deserving citizens to a straightforward ceremony for a slave being married to a slaveowner, and to make the arrangement. The wedding will take place during the upcoming week.
-				<<set $weddingPlanned = 1>>
-				<<set $marrying.push($AS)>>
-				<<run cashX(-10000, "event", getSlave($AS))>>
-				<</replace>>
-			<</link>> //This will cost <<print cashFormat(10000)>>//
-		<<else>>
-			<br>
-			&nbsp;&nbsp;&nbsp;&nbsp;
-			//You are already hosting//
-			<<if $weddingPlanned == 2>>
-				//an orgiastic ceremony//
-			<<elseif $weddingPlanned == 3>>
-				//an impregnation ceremony//
-			<</if>>
-			//and cannot host a straightforward ceremony//
-		<</if>>
-		<<if (getSlave($AS).vagina != 0) && (getSlave($AS).anus != 0)>>
-			<<if $weddingPlanned == 2>>
-				<br>&nbsp;&nbsp;&nbsp;&nbsp;
-				<<link "Orgiastic ceremony">>
-					<<replace "#result">>
-					You order $assistant.name to invite deserving citizens to an orgiastic ceremony for a slave being married to a slaveowner, and to make the arrangements. The wedding orgy will take place during the upcoming week.
-					<<set $weddingPlanned = 2>>
-					<<set $marrying.push($AS)>>
-					<<run cashX(-10000, "event", getSlave($AS))>>
-					<</replace>>
-				<</link>> //This will involve the slave having sex with a very large number of citizens, and will cost <<print cashFormat(10000)>>//
-			<<else>>
-				<br>
-				&nbsp;&nbsp;&nbsp;&nbsp;
-				//You are already hosting//
-				<<if $weddingPlanned == 1>>
-					//a straightforward ceremony//
-				<<elseif $weddingPlanned == 3>>
-					//an impregnation ceremony//
-				<</if>>
-				//and cannot host an orgiastic ceremony//
-			<</if>>
-		<</if>>
-		<<if isFertile(getSlave($AS)) && ($PC.dick != 0)>>
-			<<if $weddingPlanned == 3>>
-				<br>&nbsp;&nbsp;&nbsp;&nbsp;
-				<<link "Impregnation ceremony">>
-					<<replace "#result">>
-					You order $assistant.name to invite deserving citizens to a ceremony for a fertile slave being married to a slaveowner, and to make the arrangements. The wedding will take place during the upcoming week.
-					<<set $weddingPlanned = 3>>
-					<<set $marrying.push($AS)>>
-					<<run cashX(-10000, "event", getSlave($AS))>>
-					<</replace>>
-				<</link>> //This will involve you impregnating the slave, and will cost <<print cashFormat(10000)>>//
-				<br>
-			<<else>>
-				<br>
-				&nbsp;&nbsp;&nbsp;&nbsp;
-				//You are already hosting//
-				<<if $weddingPlanned == 1>>
-					//a straightforward ceremony//
-				<<elseif $weddingPlanned == 2>>
-					//an orgiastic ceremony//
-				<</if>>
-				//and cannot host an impregnation ceremony//
-			<</if>>
-		<</if>>
-	<<else>>
-		<br>Invite prominent citizens to a wedding:
-		<br>&nbsp;&nbsp;&nbsp;&nbsp;
-		<<link "Straightforward ceremony">>
-			<<replace "#result">>
-			You order $assistant.name to invite deserving citizens to a straightforward ceremony for a slave being married to a slaveowner, and to make the arrangement. The wedding will take place during the upcoming week.
-			<<set $weddingPlanned = 1>>
-			<<set $marrying.push($AS)>>
-			<<run cashX(-10000, "event", getSlave($AS))>>
-			<</replace>>
-		<</link>> //This will cost <<print cashFormat(10000)>>//
-		<<if (getSlave($AS).vagina != 0) && (getSlave($AS).anus != 0)>>
-			<br>&nbsp;&nbsp;&nbsp;&nbsp;
-			<<link "Orgiastic ceremony">>
-				<<replace "#result">>
-				You order $assistant.name to invite deserving citizens to an orgiastic ceremony for a slave being married to a slaveowner, and to make the arrangements. The wedding orgy will take place during the upcoming week.
-				<<set $weddingPlanned = 2>>
-				<<set $marrying.push($AS)>>
-				<<run cashX(-10000, "event", getSlave($AS))>>
-				<</replace>>
-			<</link>> //This will involve the slave having sex with a very large number of citizens, and will cost <<print cashFormat(10000)>>//
-		<</if>>
-		<<if isFertile(getSlave($AS)) && ($PC.dick != 0)>>
-			<br>&nbsp;&nbsp;&nbsp;&nbsp;
-			<<link "Impregnation ceremony">>
-				<<replace "#result">>
-				You order $assistant.name to invite deserving citizens to a ceremony for a fertile slave being married to a slaveowner, and to make the arrangements. The wedding will take place during the upcoming week.
-				<<set $weddingPlanned = 3>>
-				<<set $marrying.push($AS)>>
-				<<run cashX(-10000, "event", getSlave($AS))>>
-				<</replace>>
-			<</link>> //This will involve you impregnating the slave, and will cost <<print cashFormat(10000)>>//
-		<</if>>
-	<</if>>
-<<else>>
-	//You cannot afford an elaborate ceremony//
-<</if>>
-</span>
diff --git a/src/npc/startingGirls/startingGirls.js b/src/npc/startingGirls/startingGirls.js
index 9d522bbebbdb9a71a666edc9ba5bac33a661eda9..15365d52a9491ebd7ca0c9f5fe418eb623b70515 100644
--- a/src/npc/startingGirls/startingGirls.js
+++ b/src/npc/startingGirls/startingGirls.js
@@ -60,13 +60,7 @@ App.StartingGirls.cleanup = function(slave) {
 	slave.physicalAge = slave.actualAge;
 	slave.visualAge = slave.actualAge;
 	slave.ovaryAge = slave.actualAge;
-	if (slave.birthWeek > 51) {
-		slave.birthWeek = slave.birthWeek % 52;
-	}
-	slave.birthWeek = Math.clamp(slave.birthWeek, 0, 51) || 0;
 
-	slave.devotion = Math.clamp(slave.devotion, -100, 100) || 0;
-	slave.trust = Math.clamp(slave.trust, -100, 100) || 0;
 	slave.oldDevotion = slave.devotion;
 	slave.oldTrust = slave.trust;
 	if (slave.indenture >= 0) {
@@ -102,21 +96,12 @@ App.StartingGirls.cleanup = function(slave) {
 		slave.analArea = slave.anus;
 	}
 
-	slave.father = Number(slave.father) || 0;
-	slave.mother = Number(slave.mother) || 0;
-
 	if (slave.counter.birthsTotal > 0) {
 		if (slave.pubertyXX < 1) {
 			slave.counter.birthsTotal = 0;
 		}
 		slave.counter.birthsTotal = Math.clamp(slave.counter.birthsTotal, 0, ((slave.actualAge - slave.pubertyAgeXX) * 50));
 	}
-	if (slave.slaveName === "") {
-		slave.slaveName = "Nameless";
-	}
-	if (slave.slaveSurname === "") {
-		slave.slaveSurname = 0;
-	}
 
 	if ((slave.anus > 2 && slave.skill.anal <= 10) || (slave.anus === 0 && slave.skill.anal > 30)) {
 		slave.skill.anal = 15;
@@ -126,14 +111,6 @@ App.StartingGirls.cleanup = function(slave) {
 	} else if ((slave.vagina > 2 && slave.skill.vaginal <= 10) || (slave.vagina === 0 && slave.skill.vaginal > 30)) {
 		slave.skill.vaginal = 15;
 	}
-
-	slave.prestige = Math.clamp(slave.prestige, 0, 3) || 0;
-	if (slave.prestige === 0) {
-		slave.prestigeDesc = 0;
-	} else if (slave.prestigeDesc === 0) {
-		slave.prestigeDesc = "";
-	}
-	SlaveDatatypeCleanup(slave);
 };
 
 /** Apply starting girl PC career bonus
@@ -692,6 +669,9 @@ App.StartingGirls.addSet = function(option, set) {
 			}
 		}
 	});
+	if (V.cheatMode) {
+		option.showTextBox();
+	}
 };
 
 /**
@@ -752,7 +732,7 @@ App.StartingGirls.physical = function(slave, cheat = false) {
 			() => resyncSlaveHight(slave),
 			""
 		);
-	if (V.cheatMode === 1) {
+	if (cheat) {
 		option.addButton(
 			"Make dwarf",
 			() => slave.height = Height.random(slave, {limitMult: [-4, -1], spread: 0.15}),
@@ -763,9 +743,7 @@ App.StartingGirls.physical = function(slave, cheat = false) {
 				() => slave.height = Height.random(slave, {limitMult: [3, 10], spread: 0.15}),
 				""
 			);
-	}
 
-	if (cheat) {
 		options.addOption("Height implant", "heightImplant", slave)
 			.addValueList([
 				["-10 cm", -1],
@@ -776,21 +754,12 @@ App.StartingGirls.physical = function(slave, cheat = false) {
 
 	option = options.addOption("Weight", "weight", slave);
 	App.StartingGirls.addSet(option, App.Data.StartingGirls.weight);
-	if (cheat) {
-		option.showTextBox();
-	}
 
 	option = options.addOption("Muscles", "muscles", slave);
 	App.StartingGirls.addSet(option, App.Data.StartingGirls.muscles);
-	if (cheat) {
-		option.showTextBox();
-	}
 
 	option = options.addOption("Waist", "waist", slave);
 	App.StartingGirls.addSet(option, App.Data.StartingGirls.waist);
-	if (cheat) {
-		option.showTextBox();
-	}
 
 	if (V.seeExtreme === 1) {
 		if (cheat) {
@@ -892,11 +861,8 @@ App.StartingGirls.upper = function(slave, cheat = false) {
 	}
 
 	App.StartingGirls.addSet(
-		option = options.addOption("Facial attractiveness", "face", slave),
+		options.addOption("Facial attractiveness", "face", slave),
 		App.Data.StartingGirls.face);
-	if (cheat) {
-		option.showTextBox();
-	}
 
 	if (cheat) {
 		options.addOption("Facial implant", "faceImplant", slave)
@@ -909,31 +875,35 @@ App.StartingGirls.upper = function(slave, cheat = false) {
 			])
 			.showTextBox();
 	}
-
-	const optionLeft = options.addOption("Left eye", "vision", slave.eye.left);
-	const optionRight = options.addOption("Right eye", "vision", slave.eye.right);
-	optionLeft.addValueList([["Normal", 2], ["Nearsighted", 1]]);
-	optionRight.addValueList([["Normal", 2], ["Nearsighted", 1]]);
-	if (V.seeExtreme === 1) {
-		optionLeft.addValue("Blind", 0);
-		optionRight.addValue("Blind", 0);
-	} else {
-		if (slave.eye.left.vision === 0) {
-			slave.eye.left.vision = 2;
-		}
-		if (slave.eye.right.vision === 0) {
-			slave.eye.right.vision = 2;
-		}
-	}
 	option = options.addOption("Natural eye color", "origColor", slave.eye)
 		.showTextBox();
 	for (const color of App.Medicine.Modification.eyeColor.map(color => color.value)) {
 		option.addValue(capFirstChar(color), color);
 	}
-	option.pulldown();
 
-	if (cheat) {
-		for (const side of ["left", "right"]) {
+	option.pulldown();
+	for (/** @type {"left"|"right"}*/ const side of ["left", "right"]) {
+		if (!!slave.eye[side]) { // has eye
+			let option = options.addOption(`${capFirstChar(side)} eye vision`, "vision", slave.eye[side]);
+			option.addValueList([["Normal", 2], ["Nearsighted", 1]]);
+			if (V.seeExtreme === 1) {
+				option.addValue("Blind", 0);
+			} else {
+				if (slave.eye[side].vision === 0) {
+					slave.eye[side].vision = 2;
+				}
+			}
+			if (cheat) {
+				option = options.addOption(`${capFirstChar(side)} eye type`, "type", slave.eye[side])
+					.addValueList([
+						["Normal", 1, () => eyeSurgery(slave, side, "normal")],
+						["Glass", 2, () => eyeSurgery(slave, side, "glass")],
+					]);
+				option.addValue("Cybernetic", 3, () => eyeSurgery(slave, side, "cybernetic"));
+				if (V.seeExtreme === 1) {
+					option.customButton("Remove eye", () => eyeSurgery(slave, side, "remove"), passage());
+				}
+			}
 			option = options.addOption(`${capFirstChar(side)} pupil shape`, "pupil", slave.eye[side])
 				.showTextBox();
 			for (const color of App.Medicine.Modification.eyeShape.map(color => color.value)) {
@@ -947,9 +917,39 @@ App.StartingGirls.upper = function(slave, cheat = false) {
 				option.addValue(capFirstChar(color), color);
 			}
 			option.pulldown();
+		} else {
+			option = options.addCustomOption(`Missing ${side} eye`)
+				.addButton("Restore natural", () => eyeSurgery(slave, side, "normal"));
+			if (cheat) {
+				option.addButton("Cybernetic", () => eyeSurgery(slave, side, "cybernetic"));
+			}
 		}
 	}
+	if (cheat) {
+		options.addOption("Ear shape", "earShape", slave)
+			.addValueList([
+				["Normal", "normal"],
+				["None", "none"],
+				["Damaged", "damaged"],
+				["Pointy", "pointy"],
+				["Elven", "elven"],
+				["Ushi", "ushi"],
+			]);
 
+		options.addOption("Top ears", "earT", slave)
+			.addValueList([
+				["None", "none"],
+				["Neko", "neko"],
+				["Inu", "inu"],
+				["Kit", "kit"],
+				["Tanuki", "tanuki"],
+				["Usagi", "usagi"],
+			]);
+		options.addOption("Top ear color", "earTColor", slave)
+			.addValue (`Matches main hair color (${slave.hColor})`, slave.hColor)
+			.addValue("Hairless", "hairless").off()
+			.addComment(`More extensive coloring options are available in the Salon tab, as long as hairless is not selected here`);
+	}
 
 	option = options.addOption("Hearing", "hears", slave);
 	option.addValueList([["Normal", 0], ["Hard of hearing", -1]]);
@@ -958,12 +958,14 @@ App.StartingGirls.upper = function(slave, cheat = false) {
 	} else if (slave.hears === -2) {
 		slave.hears = -1;
 	}
+	if (cheat) {
+		options.addOption("Ear implant", "earImplant", slave)
+			.addValue("Implanted", 1).on()
+			.addValue("None", 0).off();
+	}
 
 	option = options.addOption("Lips", "lips", slave);
 	App.StartingGirls.addSet(option, App.Data.StartingGirls.lips);
-	if (cheat) {
-		option.showTextBox();
-	}
 
 	if (cheat) {
 		options.addOption("Lips implant", "lipsImplant", slave)
@@ -1033,7 +1035,7 @@ App.StartingGirls.upper = function(slave, cheat = false) {
 		.addRange(6000, 6000, "<=", "Monstrous")
 		.addRange(8000, 6000, ">", "Science Experiment");
 
-	options.addOption("Breast implant type", "boobsImplant", slave)
+	options.addOption("Breast implant type", "boobsImplantType", slave)
 		.addValueList([
 			["None", "none"],
 			["Normal", "normal"],
@@ -1043,15 +1045,34 @@ App.StartingGirls.upper = function(slave, cheat = false) {
 			["Hyper Fillable", "hyper fillable"],
 		]);
 
-	options.addOption("Natural shape", "boobShape", slave)
+	if (slave.boobsImplantType !== "none") {
+		options.addOption("Breast implant volume", "boobsImplant", slave).showTextBox({unit: "CCs"})
+			.addValue("None", 0)
+			.addRange(200, 200, "<=", "Flat (AA-cup)")
+			.addRange(300, 300, "<=", "Small (A-cup)")
+			.addRange(400, 400, "<=", "Medium (B-cup)")
+			.addRange(500, 500, "<=", "Healthy (C-cup)")
+			.addRange(800, 800, "<=", "Large (DD-cup)")
+			.addRange(1200, 1200, "<=", "Very Large (G-cup)")
+			.addRange(2050, 2050, "<=", "Huge (K-cup)")
+			.addRange(3950, 3950, "<=", "Massive (Q-cup)")
+			.addRange(6000, 6000, "<=", "Monstrous")
+			.addRange(8000, 6000, ">", "Science Experiment")
+			.addComment(`value is added to breast volume to produce final breast size`);
+	}
+
+	option = options.addOption("Natural shape", "boobShape", slave)
 		.addValueList([
 			["Normal", "normal"],
 			["Perky", "perky"],
+			["Saggy", "saggy"],
 			["Torpedo-shaped", "torpedo-shaped"],
-			["Wide-set", "wide-set"],
 			["Downward-facing", "downward-facing"],
-			["Saggy", "saggy"]
+			["Wide-set", "wide-set"],
 		]);
+	if (slave.boobsImplant / slave.boobs >= 0.90) {
+		option.addValue("Spherical", "spherical");
+	}
 
 	options.addOption("Lactation", "lactation", slave)
 		.addValue("Artificial", 2, () => slave.lactationDuration = 2)
@@ -1061,7 +1082,18 @@ App.StartingGirls.upper = function(slave, cheat = false) {
 	options.addOption("Lactation adaptation", "lactationAdaptation", slave).showTextBox();
 
 	option = options.addOption("Nipples", "nipples", slave)
-		.addValueList([["Tiny", "tiny"], ["Cute", "cute"], ["Puffy", "puffy"], ["Partially Inverted", "partially inverted"], ["Inverted", "inverted"], ["Huge", "huge"]]);
+		.addValueList([
+			["Huge", "huge"],
+			["Puffy", "puffy"],
+			["Inverted", "inverted"],
+			["Partially Inverted", "partially inverted"],
+			["Tiny", "tiny"],
+			["Cute", "cute"],
+			["fuckable", "fuckable"],
+		]);
+	if (slave.boobsImplant / slave.boobs >= 0.90) {
+		option.addValue("Flat", "Cute");
+	}
 	if (cheat) {
 		option.addValue("Penetrable", "fuckable");
 	}
@@ -1103,6 +1135,13 @@ App.StartingGirls.lower = function(slave, cheat = false) {
 				["Hyperpregnant", 300000],
 			]).showTextBox();
 
+		options.addOption("Belly fluid", "bellyFluid", slave).showTextBox({unit: "MLs"})
+			.addValue("Empty", 0)
+			.addRange(100, 100, "<=", "Bloated")
+			.addRange(2000, 2000, "<=", "Clearly bloated")
+			.addRange(5000, 5000, "<=", "Very full")
+			.addRange(10000, 10000, "<=", "Full to bursting");
+
 		options.addOption("Belly sag", "bellySag", slave).showTextBox();
 
 		options.addOption("Ruptured Internals", "burst", slave)
@@ -1118,8 +1157,11 @@ App.StartingGirls.lower = function(slave, cheat = false) {
 	options.addOption("Hips implant", "hipsImplant", slave)
 		.addValueList([["Heavily narrowed", -2], ["Narrowed", -1], ["Unmodified", 0], ["Widened", 1], ["Heavily widened", 2]]);
 
-	options.addOption("Butt", "butt", slave)
+	option = options.addOption("Butt", "butt", slave)
 		.addValueList([["Flat", 0], ["Small", 1], ["Plump", 2], ["Big", 3], ["Huge", 4], ["Enormous", 5], ["Gigantic", 6], ["Massive", 7]]);
+	if (cheat) {
+		option.showTextBox();
+	}
 
 	if (cheat) {
 		options.addOption("Butt implant type", "buttImplantType", slave)
@@ -1131,6 +1173,14 @@ App.StartingGirls.lower = function(slave, cheat = false) {
 				["Advanced Fillable", "advanced fillable"],
 				["Hyper Fillable", "hyper fillable"],
 			]);
+
+		options.addOption("Butt implant size", "buttImplant", slave).showTextBox()
+			.addValue("None", 0)
+			.addValue("Implant", 1)
+			.addValue("Big implant", 2)
+			.addValue("Fillable implant", 3)
+			.addRange(8, 8, "<=", "Advanced fillable implants")
+			.addRange(9, 9, ">=", "Hyper fillable implants");
 	}
 
 	const oldAnus = slave.anus;
@@ -1180,24 +1230,28 @@ App.StartingGirls.lower = function(slave, cheat = false) {
 			slave.belly = 0;
 			slave.bellyPreg = 0;
 			slave.ovaries = 1;
+			slave.mpreg = 0;
 		})
 		.addValue("Normal", 1, () => {
 			slave.preg = -1;
 			slave.belly = 0;
 			slave.bellyPreg = 0;
 			slave.ovaries = 1;
+			slave.mpreg = 0;
 		})
 		.addValue("Veteran", 2, () => {
 			slave.preg = -1;
 			slave.belly = 0;
 			slave.bellyPreg = 0;
 			slave.ovaries = 1;
+			slave.mpreg = 0;
 		})
 		.addValue("Gaping", 3, () => {
 			slave.preg = -1;
 			slave.belly = 0;
 			slave.bellyPreg = 0;
 			slave.ovaries = 1;
+			slave.mpreg = 0;
 		});
 
 	if (slave.vagina > -1) {
@@ -1205,7 +1259,7 @@ App.StartingGirls.lower = function(slave, cheat = false) {
 			option = options.addOption("Clit", "clit", slave)
 				.addValueList([["Normal", 0], ["Large", 1], ["Huge", 2]]);
 			if (cheat) {
-				option.addValueList([["Enormous", 3], ["Gigantic", 4], ["That's no dick!", 5]]);
+				option.addValueList([["Enormous", 3], ["Gigantic", 4], ["That's no dick!", 5]]).showTextBox();
 			}
 		}
 
@@ -1235,7 +1289,7 @@ App.StartingGirls.lower = function(slave, cheat = false) {
 
 			if (slave.pubertyXX === 1) {
 				option = options.addOption("Pregnancy", "preg", slave);
-				if (V.seeHyperPreg === 1 && V.cheatMode === 1) {
+				if (V.seeHyperPreg === 1 && cheat) {
 					option.addValue("Bursting at the seams", 43, () => {
 						slave.pregType = 150;
 						slave.pregWeek = 43;
@@ -1308,6 +1362,18 @@ App.StartingGirls.lower = function(slave, cheat = false) {
 					slave.pregKnown = 0;
 					WombFlush(slave);
 				});
+				if (cheat) {
+					option.addValue("Sterilized", -3, () => {
+						slave.pregType = 0;
+						slave.belly = 0;
+						slave.bellyPreg = 0;
+						slave.pregSource = 0;
+						slave.pregWeek = 0;
+						slave.pregKnown = 0;
+						WombFlush(slave);
+					});
+				}
+				
 				options.addOption("Births", "birthsTotal", slave.counter).showTextBox().addComment(`How many times ${he} has already given birth, not necessarily while owned by you.`);
 				if (cheat) {
 					options.addOption("Number of babies", "pregType", slave).showTextBox();
@@ -1315,6 +1381,16 @@ App.StartingGirls.lower = function(slave, cheat = false) {
 				}
 			}
 
+			if (cheat && slave.ovaries) {
+				options.addOption("Ova implant", "ovaImplant", slave)
+					.addValueList([
+						["None", 0],
+						["Fertility", "fertility"],
+						["Sympathy", "sympathy"],
+						["Asexual", "asexual"],
+					]);
+			}
+
 			option = options.addOption("Father of child", "pregSource", slave);
 			if (V.PC.dick > 0 && slave.preg > 0) {
 				option.addValueList([["Your child", -1], ["Not yours", 0]]);
@@ -1325,6 +1401,12 @@ App.StartingGirls.lower = function(slave, cheat = false) {
 		}
 	}
 
+	if (cheat && slave.vagina < 0) {
+		options.addOption("Anal pregnancy", "mpreg", slave)
+			.addValue("Installed", 1).on()
+			.addValue("No", 0).off();
+	}
+
 	if (V.seeDicks !== 0 || V.makeDicks === 1) {
 		option = options.addOption("Penis", "dick", slave)
 			.addValue("None", 0, () => {
@@ -1344,7 +1426,7 @@ App.StartingGirls.lower = function(slave, cheat = false) {
 				.addValue("Enormous", 8, () => slave.clit = 0)
 				.addValue("Monstrous", 9, () => slave.clit = 0)
 				.addValue("Big McLargeHuge", 10, () => slave.clit = 0)
-				.pulldown();
+				.pulldown().showTextBox();
 		}
 
 		if (slave.dick > 0) {
@@ -1355,6 +1437,9 @@ App.StartingGirls.lower = function(slave, cheat = false) {
 				slave.foreskin = 3;
 			}
 			option.addValueList([["Tiny", 1], ["Small", 2], ["Normal", 3], ["Large", 4], ["Massive", 5]]);
+			if (cheat) {
+				option.showTextBox();
+			}
 		}
 
 		option = options.addOption("Testicles", "balls", slave)
@@ -1370,7 +1455,7 @@ App.StartingGirls.lower = function(slave, cheat = false) {
 				["Enormous", 8],
 				["Monstrous", 9],
 				["Big McLargeHuge", 10],
-			]).pulldown();
+			]).pulldown().showTextBox();
 		}
 
 		options.addOption("Age of Male Puberty", "pubertyAgeXY", slave).showTextBox();
@@ -1385,12 +1470,18 @@ App.StartingGirls.lower = function(slave, cheat = false) {
 					["Enormous", 8],
 					["Monstrous", 9],
 					["Big McLargeHuge", 10],
-				]).pulldown();
+				]).pulldown().showTextBox();
 			}
 
 			options.addOption("Male Puberty", "pubertyXY", slave)
 				.addValue("Prepubescent", 0, () => slave.pubertyAgeXY = V.potencyAge)
 				.addValue("Postpubescent", 1);
+			options.addOption("Chemical castration", "ballType", slave)
+				.addValue("Yes", "sterile").on()
+				.addValue("No", "human").off();
+			options.addOption("Vasectomy", "vasectomy", slave)
+				.addValue("Yes", 1).on()
+				.addValue("No", 0).off();
 		}
 	}
 
@@ -1794,7 +1885,7 @@ App.StartingGirls.finalize = function(slave) {
 
 	let r = [];
 	r.push(`If applied, your <span class="springgreen">career bonus</span> will give this slave`);
-	if (V.PC.career === "capitalist" || V.PC.career === "entrepreneur" || V.PC.career === "business kid") {
+	if (isPCCareerInCategory("capitalist")) {
 		r.push(`one free level of <span class="cyan">prostitution skill.</span>`);
 	} else if (V.PC.career === "mercenary" || V.PC.career === "recruit" || V.PC.career === "child soldier") {
 		if (slave.devotion > 20) {
@@ -1802,23 +1893,23 @@ App.StartingGirls.finalize = function(slave) {
 		} else {
 			r.push(`<span class="gold">+10 fear.</span>`);
 		}
-	} else if (V.PC.career === "slaver" || V.PC.career === "slave overseer" || V.PC.career === "slave tender") {
+	} else if (isPCCareerInCategory("slaver")) {
 		r.push(`<span class="hotpink">+10 devotion.</span>`);
-	} else if (V.PC.career === "medicine" || V.PC.career === "medical assistant" || V.PC.career === "nurse") {
+	} else if (isPCCareerInCategory("medicine")) {
 		r.push(`free <span class="lime">basic implants.</span>`);
-	} else if (V.PC.career === "celebrity" || V.PC.career === "rising star" || V.PC.career === "child star") {
+	} else if (isPCCareerInCategory("celebrity")) {
 		r.push(`one free level of <span class="cyan">entertainment skill.</span>`);
-	} else if (V.PC.career === "escort" || V.PC.career === "prostitute" || V.PC.career === "child prostitute") {
+	} else if (isPCCareerInCategory("escort")) {
 		r.push(`two free levels of <span class="cyan">sex skills,</span> one free level of <span class="cyan">prostitution skill,</span> and one free level of <span class="cyan">entertainment skill.</span>`);
-	} else if (V.PC.career === "servant" || V.PC.career === "handmaiden" || V.PC.career === "child servant") {
+	} else if (isPCCareerInCategory("servant")) {
 		r.push(`<span class="mediumaquamarine">+10 trust</span> and <span class="hotpink">+10 devotion.</span>`);
-	} else if (V.PC.career === "gang" || V.PC.career === "hoodlum" || V.PC.career === "street urchin") {
+	} else if (isPCCareerInCategory("gang")) {
 		r.push(`<span class="green">+5 health</span> and one free level of <span class="cyan">combat skill.</span>`);
-	} else if (V.PC.career === "wealth" || V.PC.career === "trust fund" || V.PC.career === "rich kid") {
+	} else if (isPCCareerInCategory("wealth")) {
 		r.push(`two free levels of <span class="cyan">sex skills.</span>`);
-	} else if (V.PC.career === "BlackHat" || V.PC.career === "hacker" || V.PC.career === "script kiddy") {
+	} else if (isPCCareerInCategory("BlackHat")) {
 		r.push(`one free level of <span class="cyan">intelligence.</span>`);
-	} else if (V.PC.career !== "engineer" && V.PC.career !== "construction" && V.PC.career !== "worksite helper") {
+	} else if (isPCCareerInCategory("engineer")) {
 		r.push(`<span class="hotpink">+10 devotion,</span> one free level of <span class="cyan">prostitution skill</span> and <span class="cyan">entertainment skill,</span> and two free levels of <span class="cyan">sex skills.</span>`);
 	}
 	App.Events.addNode(el, r, "div");
@@ -1840,6 +1931,7 @@ App.StartingGirls.finalize = function(slave) {
 				}
 			}
 			App.StartingGirls.cleanup(slave);
+			SlaveDatatypeCleanup(slave);
 			if (slave.pregSource === -1) {
 				V.PC.counter.slavesKnockedUp++;
 			}
@@ -1894,7 +1986,7 @@ App.StartingGirls.finalize = function(slave) {
 App.StartingGirls.stats = function(slave) {
 	const el = new DocumentFragment();
 	const options = new App.UI.OptionsGroup();
-	const counters = new App.Entity.SlaveActionsCountersState();
+	const counters = Object.keys(new App.Entity.SlaveActionsCountersState()).sort((a, b) => a.toLowerCase() > b.toLowerCase());
 	const titles = new Map([
 		["birthsTotal", "Total births"],
 		["laborCount", "Labor count"],
@@ -1905,10 +1997,11 @@ App.StartingGirls.stats = function(slave) {
 		["slavesFathered", "Slaves fathered"],
 		["PCChildrenFathered", "PC's children fathered"],
 		["slavesKnockedUp", "Slaves knocked up"],
-		["PCKnockedUp", "Times knocked up PC"]
+		["PCKnockedUp", "Times knocked up PC"],
+		["bestiality", "Bestiality"]
 	]);
 	options.addOption("Set all counters to 0", "counter", slave).customButton("Reset", () => slave.counter = new App.Entity.SlaveActionsCountersState(), passage());
-	for (const key of Object.keys(counters)) {
+	for (const key of counters) {
 		const title = titles.get(key) || capFirstChar(key);
 		options.addOption(title, key, slave.counter)
 			.addValue("None", 0).off().showTextBox();
diff --git a/src/npc/startingGirls/startingGirlsPassage.js b/src/npc/startingGirls/startingGirlsPassage.js
index d5aafb48ad37d4ae099a28c89f2d1427ec674740..096f33b63a9bf070cd9725614c18201b0aa35998 100644
--- a/src/npc/startingGirls/startingGirlsPassage.js
+++ b/src/npc/startingGirls/startingGirlsPassage.js
@@ -371,6 +371,7 @@ App.StartingGirls.passage = function() {
 	App.UI.DOM.appendNewElement("hr", el);
 
 	App.StartingGirls.cleanup(V.activeSlave);
+	SlaveDatatypeCleanup(V.activeSlave);
 
 	if (V.activeSlave.father === -1) {
 		if (V.PC.dick === 0) {
diff --git a/src/npc/surgery/surgeryDegradation.js b/src/npc/surgery/surgeryDegradation.js
index c052d20b632ea0134d392f23cb77a31cb4e0942d..9128cc8d74353f7a0fbd7053cf2324104434e449 100644
--- a/src/npc/surgery/surgeryDegradation.js
+++ b/src/npc/surgery/surgeryDegradation.js
@@ -967,7 +967,7 @@ App.UI.SlaveInteract.surgeryDegradation = function(slave) {
 					App.Events.addNode(el, r, "p");
 					r = [];
 					const seed = App.UI.DOM.appendNewElement("div", el, `The implant is highly receptive to fresh sperm right now; it would be trivial to seed it with yours and force ${him} to bear hundreds of your children.`);
-					App.UI.DOM.appendNewElement("div", el, App.UI.DOM.link(
+					App.UI.DOM.appendNewElement("div", seed, App.UI.DOM.link(
 						`Seed ${his} pregnancy implant with your genetic material`,
 						() => {
 							const div = document.createElement("div");
diff --git a/src/player/js/PlayerState.js b/src/player/js/PlayerState.js
index 5b854cd1a4f66aed2414c92cc067fa2cbe0a9031..7a7c6f335ae88b43cdf2d109efb7f5146811cd93 100644
--- a/src/player/js/PlayerState.js
+++ b/src/player/js/PlayerState.js
@@ -1914,7 +1914,7 @@ App.Entity.PlayerState = class PlayerState {
 		 * * "pig"
 		 * * "horse"
 		 * * "cow"
-		 * @type {FC.AnimalKind}
+		 * @type {FC.AnimalType}
 		 */
 		this.eggType = "human";
 		/** */
diff --git a/src/uncategorized/REFI.tw b/src/uncategorized/REFI.tw
deleted file mode 100644
index c374c9b671c4b6fc25c7c8f6e8efd50e70c3d124..0000000000000000000000000000000000000000
--- a/src/uncategorized/REFI.tw
+++ /dev/null
@@ -1,587 +0,0 @@
-:: REFI [nobr]
-
-/* This is one of several files that contains and organizes many different events.	*/
-/*	genericPlotEvents.tw															*/
-/*	PESS.tw: Player Event, Single Slave												*/
-/*	PETS.tw: Player Event, Two Slaves												*/
-/*	RECI.tw: Random Event, Check In													*/
-/*	REFI.tw: Random Event, Fetish Interest											*/
-/*	REFS.tw: Random Event, Future Societies											*/
-/*	RESS.tw: Random Event, Single Slave												*/
-/*	RESSTR.tw: Random Event, Single Slave (Test Realm, for debugging events)		*/
-/*	RETS.tw: Random Event, Two Slaves												*/
-/*																					*/
-/* Events can also be in a dedicated *.tw file, formatted as follows:				*/
-/*	jeXXXXX.tw: Justice Event														*/
-/*	pXXXXXX.tw: Player event														*/
-/*	peXXXXX.tw: Player Event focused on a slave										*/
-/*	reXXXXX.tw: Random Event														*/
-/*	resXXXX.tw: Random Event, School												*/
-/*	seXXXXX.tw: Slave Event, focuses on slaves coming or going						*/
-/*	securityForceXXXXX.tw: Special (Security) Force event							*/
-/*																					*/
-/* Some scenes are also stored in useGuard.tw, walkPast.tw, and toychest.tw			*/
-
-<<switch $REFIevent>>
-	<<case "boobs">>
-		<<set $activeSlave = getSlave($boobsInterestTargetID)>>
-		<<set _refi = $slaveIndices[$boobsID]>>
-		<<if $slaves[_refi].lactation > 0>>
-			<<set $slaves[_refi].lactationDuration = 2>>
-			<<set $slaves[_refi].boobs -= $slaves[_refi].boobsMilk, $slaves[_refi].boobsMilk = 0>>
-		<<else>>
-			<<run induceLactation($slaves[_refi], 4)>>
-		<</if>>
-	<<case "buttslut">>
-		<<set $activeSlave = getSlave($buttslutInterestTargetID)>>
-		<<set _refi = $slaveIndices[$buttslutID]>>
-		<<if canImpreg($slaves[_refi], $PC)>>
-			<<= knockMeUp($slaves[_refi], 5, 1, -1, 1)>>
-		<</if>>
-		<<run seX($slaves[_refi], "anal", $PC, "penetrative")>>
-	<<case "cumslut">>
-		<<set $activeSlave = getSlave($cumslutInterestTargetID)>>
-		<<set _refi = $slaveIndices[$cumslutID]>>
-		<<run seX($slaves[_refi], "oral", $PC, "penetrative")>>
-	<<case "humiliation">>
-		<<set $activeSlave = getSlave($humiliationInterestTargetID)>>
-		<<set _refi = $slaveIndices[$humiliationID]>>
-		<<if canDoVaginal($slaves[_refi])>>
-			<<run seX($slaves[_refi], "vaginal", $PC, "penetrative")>>
-		<<elseif canDoAnal($slaves[_refi])>>
-			<<run seX($slaves[_refi], "oral", $PC, "penetrative")>>
-		<</if>>
-<</switch>>
-
-<<if Array.isArray($REFIevent)>>
-	<<set $activeSlave = $eventSlave>>
-	<<if $cheatMode == 1>>
-		<<set $nextButton = "Back", $nextLink = "Nonrandom Event", $returnTo = "Nonrandom Event">> /* if user just clicks spacebar */
-		''A random fetish interest event would have been selected from the following:''
-		<br>
-		<<for _i = 0; _i < $REFIevent.length; _i++>>
-			<<print "[[$REFIevent[_i]|REFI][$REFIevent = $REFIevent[" + _i + "]]]">>
-			<br>
-		<</for>>
-		<br><br>[[Go Back to Random Nonindividual Event|Random Nonindividual Event][$eventSlave = 0]]
-	<<else>>
-		<<set $REFIevent = $REFIevent.random()>>
-		<<goto "REFI">>
-	<</if>>
-<<else>>
-
-<<set $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "RIE Eligibility Check">>
-
-<<set $desc = SlaveTitle($activeSlave)>>
-<<run Enunciate($activeSlave)>>
-<<set _belly = bellyAdjective($activeSlave)>>
-<<set $subSlave = $slaves[_refi]>>
-<<set _subBelly = bellyAdjective($subSlave)>>
-<<run App.Utils.setLocalPronouns($activeSlave)>>
-<<setLocalPronouns $subSlave 2>>
-<<setNonlocalPronouns $seeDicks>>
-
-<<set _clothesTemp = $subSlave.clothes>>
-<<switch $REFIevent>>
-
-
-<<case "boobs">>
-
-<<set _clothesTemp = $subSlave.clothes, $subSlave.clothes = "no clothing">>
-/* 000-250-006 */
-<<if $seeImages == 1>>
-	<div class="imageColumn">
-		<div class="imageRef medImg">
-			<<SlaveArt $activeSlave 2 0>>
-		</div>
-		<div class="imageRef medImg">
-			<<SlaveArt $subSlave 2 0>>
-		</div>
-	</div>
-<</if>>
-/* 000-250-006 */
-<<set $subSlave.clothes = _clothesTemp>> /*restore clothing to original values */
-
-$subSlave.slaveName is on lunch duty today. That means that as you eat your working lunch, _he2 sits on the edge of your desk right next to you, so that <<if $subSlave.belly >= 100000>>a nipple is<<else>>_his2 nipples are<</if>> conveniently at mouth height. Whenever you feel thirsty, you lean over<<if $subSlave.nipples == "partially inverted" || $subSlave.nipples == "inverted">>, pop one out,<<elseif $subSlave.nipples == "fuckable">>, slip your tongue deep inside,<</if>> and take some of _his2 creamy, slightly vanilla-toned milk straight from the source. Every time you do, _he2 shudders convulsively,
-<<if canTalk($subSlave)>>
-	giving little mewling whimpers.
-<<else>>
-	<<if $subSlave.accent >= 3>>
-		giving little mewling whimpers.
-	<<elseif $subSlave.voice == 0>>
-		making the harsh gasping noises that are all _he2 can manage, as a mute.
-	<<else>>
-		giving small moans through _his2 obstructed mouth.
-	<</if>>
-<</if>>
-Though you never touch anything but _his2 nipples, _he2 climaxes twice. After you finish and _he2 leaves, you notice <<= App.UI.slaveDescriptionDialog($activeSlave)>> at the door to your office. You call $him in.
-<br><br>
-$activeSlave.slaveName hesitates before explaining $himself, and the $desc is obviously aroused:
-<<if ($activeSlave.chastityPenis == 1)>>
-	$he's got a string of precum leaking out of $his chastity cage.
-<<elseif ($activeSlave.dick > 0) && ($activeSlave.hormoneBalance >= 100)>>
-	though $his hormone-filled body can't get $his dick hard any more, $he's got a string of precum coming off $his member.
-<<elseif $activeSlave.dick > 0 && $activeSlave.balls > 0 && $activeSlave.ballType == "sterile">>
-	though $his useless balls can't muster the effort to get $his dick hard any more, $he's got a string of precum coming off $his limp member.
-<<elseif ($activeSlave.dick > 0) && ($activeSlave.balls == 0)>>
-	though $his gelded body can't get $his dick hard any more, $he's got a string of precum coming off $his limp member.
-<<elseif canAchieveErection($activeSlave)>>
-	<<if $activeSlave.dick > 4>>
-		$his gigantic cock is standing out like a mast.
-	<<elseif $activeSlave.dick > 2>>
-		$he's sporting an impressive erection.
-	<<elseif $activeSlave.dick > 0>>
-		$his little penis is rock hard.
-	<</if>>
-<<elseif $activeSlave.dick > 7>>
-	$he's got a string of precum coming off $his engorged member.
-<<elseif $activeSlave.dick > 0>>
-	$he's got a string of precum coming off $his limp member.
-<<elseif $activeSlave.clit > 0>>
-	$his large clit is visibly engorged.
-<<elseif $activeSlave.vagina > -1>>
-	<<if $activeSlave.nipples != "fuckable">>$his nipples are hard and <</if>>there's a sheen on $his pussylips.
-<<elseif $activeSlave.balls > 0>>
-	<<if $activeSlave.nipples != "fuckable">>$his nipples are hard and <</if>>there is a distinct dribble of precum running from $his featureless crotch.
-<<else>>
-	<<if $activeSlave.nipples != "fuckable">>$his nipples are hard and <</if>>there is a clear scent of lust around $him.
-<</if>>
-It seems $he passed by while you were drinking from <<= contextualIntro($activeSlave, $subSlave)>> and found the <<if canSee($activeSlave)>>sight<<elseif canHear($activeSlave)>>sounds<<else>>sensations<</if>> rather compelling. It should be possible to either encourage this fascination or steer $him away from it for now.
-
-<<case "buttslut">>
-
-/* 000-250-006 */
-<<if $seeImages == 1>>
-	<div class="imageColumn">
-		<div class="imageRef medImg">
-			<<SlaveArt $subSlave 2 0>>
-		</div>
-		<div class="imageRef medImg">
-			<<SlaveArt $activeSlave 2 0>>
-		</div>
-	</div>
-<</if>>
-/* 000-250-006 */
-
-In the middle of the afternoon, you take a break from work to fuck $subSlave.slaveName in your office. $subSlave.slaveName is such a complete buttslut that _he2's enjoying _himself2 to an almost indecent degree: moaning, begging, or just smiling idiotically with _his2 mouth open and _his2 tongue lolling. After you finish and _he2 leaves, you notice <<= App.UI.slaveDescriptionDialog($activeSlave)>> at the door to your office. You call $him in.
-<br><br>
-$activeSlave.slaveName hesitates before explaining $himself, and the $desc is obviously aroused:
-<<if ($activeSlave.chastityPenis == 1)>>
-	$he's got a string of precum leaking out of $his chastity cage.
-<<elseif ($activeSlave.dick > 0) && ($activeSlave.hormoneBalance >= 100)>>
-	though $his hormone-filled body can't get $his dick hard any more, $he's got a string of precum coming off $his member.
-<<elseif $activeSlave.dick > 0 && $activeSlave.balls > 0 && $activeSlave.ballType == "sterile">>
-	though $his useless balls can't muster the effort to get $his dick hard any more, $he's got a string of precum coming off $his limp member.
-<<elseif ($activeSlave.dick > 0) && ($activeSlave.balls == 0)>>
-	though $his gelded body can't get $his dick hard any more, $he's got a string of precum coming off $his limp member.
-<<elseif canAchieveErection($activeSlave)>>
-	<<if $activeSlave.dick > 4>>
-		$his gigantic cock is standing out like a mast.
-	<<elseif $activeSlave.dick > 2>>
-		$he's sporting an impressive erection.
-	<<elseif $activeSlave.dick > 0>>
-		$his little penis is rock hard.
-	<</if>>
-<<elseif $activeSlave.dick > 7>>
-	$he's got a string of precum coming off $his engorged member.
-<<elseif $activeSlave.dick > 0>>
-	$he's got a string of precum coming off $his limp member.
-<<elseif $activeSlave.clit > 0>>
-	$his large clit is visibly engorged.
-<<elseif $activeSlave.vagina > -1>>
-	<<if $activeSlave.nipples != "fuckable">>$his nipples are hard and <</if>>there's a sheen on $his pussylips.
-<<elseif $activeSlave.balls > 0>>
-	<<if $activeSlave.nipples != "fuckable">>$his nipples are hard and <</if>>there is a distinct dribble of precum running from $his featureless crotch.
-<<else>>
-	<<if $activeSlave.nipples != "fuckable">>$his nipples are hard and <</if>>there is a clear scent of lust around $him.
-<</if>>
-It seems $he passed by while you were buttfucking <<= contextualIntro($activeSlave, $subSlave)>> and found the <<if canSee($activeSlave)>>sight<<elseif canHear($activeSlave)>>sounds<<else>>sensations<</if>> rather compelling. It should be possible to either encourage this fascination or steer $him away from it for now.
-
-<<case "cumslut">>
-
-<<set _clothesTemp = $subSlave.clothes, $subSlave.clothes = "no clothing">>
-/* 000-250-006 */
-<<if $seeImages == 1>>
-	<div class="imageColumn">
-		<div class="imageRef medImg">
-			<<SlaveArt $subSlave 2 0>>
-		</div>
-		<div class="imageRef medImg">
-			<<SlaveArt $activeSlave 2 0>>
-		</div>
-	</div>
-<</if>>
-/* 000-250-006 */
-<<set $subSlave.clothes = _clothesTemp>>
-
-<<if $PC.dick > 0>>
-	You wake up to the sensation of $subSlave.slaveName eagerly sucking your dick. _He2's industriously pumping _his2 mouth up and down on your member. In truth, $subSlave.slaveName doesn't give the perfect blowjob: _he2 loves cum so much that _he2 mostly enjoys oral sex in an anticipatory way, and usually works to make the recipient cum as soon as possible so as to get _his2 favorite treat into _his2 mouth quicker. Still, _his2 enthusiasm is nice and _he2 does have permission to wake you at your usual time in this way. As you get up after finishing, you notice <<= App.UI.slaveDescriptionDialog($activeSlave)>> at the door to your bedroom. You call $him in.
-<<else>>
-	You come across $subSlave.slaveName in the middle of what appears to be an impromptu blowbang, one that seems to be drawing to a close. One by one, the citizens pull out of _his2 wide-open mouth and splash cum into it. The bliss on _his2 face is obvious even from where you are standing, and as you watch the scene unfolding before you, you notice <<= App.UI.slaveDescriptionDialog($activeSlave)>> is also looking on. You call $him over.
-<</if>>
-<<run actX($subSlave, "oral")>>
-
-<br><br>
-$activeSlave.slaveName hesitates before explaining $himself, and the $desc is obviously aroused:
-<<if ($activeSlave.chastityPenis == 1)>>
-	$he's got a string of precum leaking out of $his chastity cage.
-<<elseif ($activeSlave.dick > 0) && ($activeSlave.hormoneBalance >= 100)>>
-	though $his hormone-filled body can't get $his dick hard any more, $he's got a string of precum coming off $his member.
-<<elseif $activeSlave.dick > 0 && $activeSlave.balls > 0 && $activeSlave.ballType == "sterile">>
-	though $his useless balls can't muster the effort to get $his dick hard any more, $he's got a string of precum coming off $his limp member.
-<<elseif ($activeSlave.dick > 0) && ($activeSlave.balls == 0)>>
-	though $his gelded body can't get $his dick hard any more, $he's got a string of precum coming off $his limp member.
-<<elseif canAchieveErection($activeSlave)>>
-	<<if $activeSlave.dick > 4>>
-		$his gigantic cock is standing out like a mast.
-	<<elseif $activeSlave.dick > 2>>
-		$he's sporting an impressive erection.
-	<<elseif $activeSlave.dick > 0>>
-		$his little penis is rock hard.
-	<</if>>
-<<elseif $activeSlave.dick > 7>>
-	$he's got a string of precum coming off $his engorged member.
-<<elseif $activeSlave.dick > 0>>
-	$he's got a string of precum coming off $his limp member.
-<<elseif $activeSlave.clit > 0>>
-	$his large clit is visibly engorged.
-<<elseif $activeSlave.vagina > -1>>
-	<<if $activeSlave.nipples != "fuckable">>$his nipples are hard and <</if>>there's a sheen on $his pussylips.
-<<elseif $activeSlave.balls > 0>>
-	<<if $activeSlave.nipples != "fuckable">>$his nipples are hard and <</if>>there is a distinct dribble of precum running from $his featureless crotch.
-<<else>>
-	<<if $activeSlave.nipples != "fuckable">>$his nipples are hard and <</if>>there is a clear scent of lust around $him.
-<</if>>
-It seems $he passed by while <<= contextualIntro($activeSlave, $subSlave)>> was <<if $PC.dick == 0>>in the midst of _his2 little oral party<<else>>blowing you<</if>>. $He swallows painfully at the <<if canSee($activeSlave)>>sight of the satisfied cumslut swirling the ejaculate around _his2 mouth<<elseif canHear($activeSlave)>>sound of the satisfied cumslut savoring the fresh load<<else>>reminder of the <<if canTaste($activeSlave)>>taste<<else>>warmth<</if>> and texture of the cum<</if>>. It should be possible to either encourage this fascination or steer $him away from it for now.
-
-<<case "humiliation">>
-
-/* 000-250-006 */
-<<if $seeImages == 1>>
-	<div class="imageColumn">
-		<div class="imageRef medImg">
-			<<SlaveArt $subSlave 2 0>>
-		</div>
-		<div class="imageRef medImg">
-			<<SlaveArt $activeSlave 2 0>>
-		</div>
-	</div>
-<</if>>
-/* 000-250-006 */
-
-You have $subSlave.slaveName pinned up against a railing on a balcony that overlooks a public atrium. Passersby below cannot see you, but they can certainly see $subSlave.slaveName's upper body as _he2 takes your dick. _He2's blushing furiously with the sex and with _his2 trademark mixed arousal and embarrassment at having an audience. _He2 makes a show of trying to disguise the fact that _he2's getting railed, but it's obvious. When you finish, you pull _him2 off the railing so _he2 can clean up. <<= App.UI.slaveDescriptionDialog($activeSlave)>> <<if canSee($activeSlave)>>saw<<elseif canHear($activeSlave)>>heard<<else>>felt the heat from<</if>> the denouement of this exhibitionist fun, and seems intrigued.
-<br><br>
-$activeSlave.slaveName hesitates before explaining $himself, and the $desc is obviously aroused:
-<<if ($activeSlave.chastityPenis == 1)>>
-	$he's got a string of precum leaking out of $his chastity cage.
-<<elseif ($activeSlave.dick > 0) && ($activeSlave.hormoneBalance >= 100)>>
-	though $his hormone-filled body can't get $his dick hard any more, $he's got a string of precum coming off $his member.
-<<elseif $activeSlave.dick > 0 && $activeSlave.balls > 0 && $activeSlave.ballType == "sterile">>
-	though $his useless balls can't muster the effort to get $his dick hard any more, $he's got a string of precum coming off $his limp member.
-<<elseif ($activeSlave.dick > 0) && ($activeSlave.balls == 0)>>
-	though $his gelded body can't get $his dick hard any more, $he's got a string of precum coming off $his limp member.
-<<elseif canAchieveErection($activeSlave)>>
-	<<if $activeSlave.dick > 4>>
-		$his gigantic cock is standing out like a mast.
-	<<elseif $activeSlave.dick > 2>>
-		$he's sporting an impressive erection.
-	<<elseif $activeSlave.dick > 0>>
-		$his little penis is rock hard.
-	<</if>>
-<<elseif $activeSlave.dick > 7>>
-	$he's got a string of precum coming off $his engorged member.
-<<elseif $activeSlave.dick > 0>>
-	$he's got a string of precum coming off $his limp member.
-<<elseif $activeSlave.clit > 0>>
-	$his large clit is visibly engorged.
-<<elseif $activeSlave.vagina > -1>>
-	<<if $activeSlave.nipples != "fuckable">>$his nipples are hard and <</if>>there's a sheen on $his pussylips.
-<<elseif $activeSlave.balls > 0>>
-	<<if $activeSlave.nipples != "fuckable">>$his nipples are hard and <</if>>there is a distinct dribble of precum running from $his featureless crotch.
-<<else>>
-	<<if $activeSlave.nipples != "fuckable">>$his nipples are hard and <</if>>there is a clear scent of lust around $him.
-<</if>>
-There was a glint of envy <<if canSee($activeSlave)>>in $his eyes when $he saw<<elseif canHear($activeSlave)>>across $his face as $he listened to<<else>>in $his expression as $he basked in the heat of<</if>> <<= contextualIntro($activeSlave, $subSlave)>>'s satisfaction at being publicly used. It should be possible to either encourage this fascination with humiliation or steer $him away from it for now.
-
-<<default>>
-	<br>ERROR: bad REFI event $REFIevent
-<</switch>>
-
-<br><br>
-<span id="result">
-<<switch $REFIevent>>
-
-<<case "boobs">>
-<<link "Turn $him into another breast fetishist">>
-	<<replace "#result">>
-	<<if !canTalk($activeSlave)>>
-		<<if $activeSlave.accent >= 3>>
-			<<if !hasAnyArms($activeSlave)>>
-				Since $he isn't conversant in $language and lacks the hands to gesture, $he's forced to push out $his chest and wiggle to try to communicate that $he would like to experience a nipple orgasm, too.
-			<<else>>
-				Since $he isn't conversant in $language, $he's forced to use some delightfully lewd gestures at $his own boobs to communicate that $he would like to experience a nipple orgasm, too.
-			<</if>>
-		<<elseif $activeSlave.voice == 0>>
-			<<if !hasAnyArms($activeSlave)>>
-				$He's mute and has no hands, so it takes a long, frustrating time for $him to communicate that $he would like to experience a nipple orgasm, too.
-			<<else>>
-				$He's mute, so $he uses gestures to ask you for a nipple orgasm, too.
-			<</if>>
-		<<else>>
-			$He can't form
-			<<if !hasAnyArms($activeSlave)>>
-				words and has no hands, so it takes a long, frustrating time for $him to communicate that $he would like to experience a nipple orgasm, too.
-			<<else>>
-				words, so $he uses gestures to ask you for a nipple orgasm, too.
-			<</if>>
-		<</if>>
-	<<else>>
-		<<if $activeSlave.lips > 70>>
-			$He <<say>>s through $his massive dick-sucking lips,
-		<<elseif ($activeSlave.lipsPiercing+$activeSlave.tonguePiercing > 2)>>
-			$He <<say>>s through $his big oral piercings,
-		<<else>>
-			$He <<say>>s,
-		<</if>>
-		"<<Master>>, may I have a nipple orga<<s>>m, too?"
-	<</if>>
-	You make $him state it more explicitly, so $he tries again:
-	<<if !hasAnyArms($activeSlave) && !canTalk($activeSlave)>>
-		$he sticks $his chest out as far as it will go, and wiggles it back and forth demonstratively.
-	<<elseif !canTalk($activeSlave)>>
-		$he tries to depict suckling and orgasm with $his hand<<if hasBothArms($activeSlave)>>s<</if>>, but gives up and just sticks $his tits out at you<<if $activeSlave.nipples == "fuckable">> while fingering $his nipplecunts<<else>>, pinching $his nipples hard<</if>>.
-	<<else>>
-		"Plea<<s>>e u<<s>>e my boob<<s>>, <<Master>>!"
-	<</if>>
-	$He gasps as you seize $him and carry $him
-	<<if $PC.belly >= 30000>>
-		to the couch, but $he's clearly pleased. While you would rather sit $him on your lap, you are far too pregnant to fit $him; instead you settle $him beside you and torment
-	<<else>>
-		back to your desk chair, but $he's clearly pleased. You sit in the chair with $him in your lap facing away from you<<if $PC.boobs >= 300>>, $his back against your breasts<</if>>, and torment
-	<</if>>
-	$his nipples until $he's close to climax. Then you get $him on <<if hasBothLegs($activeSlave)>>$his knees<<else>>the floor<</if>> and push $him over the edge with
-	<<if $PC.dick != 0>>
-		<<if $activeSlave.nipples == "fuckable">>
-			your cock and fingers deep inside $his
-		<<else>>
-			your cock between $his
-		<</if>>
-	<<else>>
-		<<if $activeSlave.nipples == "fuckable">>
-			your fingers deep inside $his
-		<<else>>
-			your pussy rubbing against the stiff nipples atop $his
-		<</if>>
-	<</if>>
-	<<if $activeSlave.boobs > 40000>>gargantuan<<elseif $activeSlave.boobs > 25000>>immense<<elseif $activeSlave.boobs > 10000>>ridiculous<<elseif $activeSlave.boobs > 5000>>enormous<<elseif $activeSlave.boobs > 3200>>giant<<elseif $activeSlave.boobs > 1600>>huge<<elseif $activeSlave.boobs > 800>>big<<else>>modest<</if>> tits. @@.hotpink;$He has become more devoted to you,@@ and @@.lightcoral;$his sexuality now focuses on $his breasts.@@
-	<<set $activeSlave.devotion += 4>>
-	<<run seX($activeSlave, "mammary", $PC, "penetrative")>>
-	<<set $activeSlave.fetish = "boobs", $activeSlave.fetishKnown = 1, $activeSlave.fetishStrength = 65>>
-	<<if $activeSlave.lactation > 0>>
-		<<set $activeSlave.lactationDuration = 2>>
-		<<set $activeSlave.boobs -= $activeSlave.boobsMilk, $activeSlave.boobsMilk = 0>>
-	<<else>>
-		<<= induceLactation($activeSlave, 5)>>
-	<</if>>
-	<</replace>>
-<</link>>
-<br><<link "Steer $him away from breast obsession for the moment">>
-	<<replace "#result">>
-	Good slaves get aroused according to their masters' whim, not their own silly tendencies. You call $activeSlave.slaveName over before $he can give voice to $his interest in nipple play,
-	<<if canDoVaginal($activeSlave) || ($activeSlave.dick > 0 && !($activeSlave.chastityPenis))>>
-		and let $him masturbate while <<if ($PC.dick == 0)>>eating you out<<else>>sucking you off<</if>>, to associate non-mammary intercourse with pleasure.
-		<<run seX($activeSlave, "oral", $PC, "penetrative")>>
-	<<else>>
-		and play with $him until $he orgasms while carefully keeping $his boobs and nipples untouched and unstimulated.
-	<</if>>
-	You'll keep an eye on $him, and with this correction @@.hotpink;$he'll become more submissive to you.@@
-	<<set $activeSlave.devotion += 4>>
-	<</replace>>
-<</link>>
-
-<<case "buttslut">>
-
-<<link "Turn $him into another anal slut">>
-	<<replace "#result">>
-	<<if !canTalk($activeSlave)>>
-		<<if $activeSlave.accent >= 3>>
-			<<if !hasAnyArms($activeSlave)>>
-				Since $he isn't conversant in $language and lacks the hands to gesture, so it takes a long, frustrating time for $him to communicate that $he would like you to do to $him what you did to $subSlave.slaveName.
-			<<else>>
-				Since $he isn't conversant in $language, so $he uses gestures to ask you to do to $him what you did to $subSlave.slaveName.
-			<</if>>
-		<<elseif $activeSlave.voice == 0>>
-			<<if !hasAnyArms($activeSlave)>>
-				$He's mute and has no hands, so it takes a long, frustrating time for $him to communicate that $he would like you to do to $him what you did to $subSlave.slaveName.
-			<<else>>
-				$He's mute, so $he uses gestures to ask you to do to $him what you did to $subSlave.slaveName.
-			<</if>>
-		<<else>>
-			$He can't form
-			<<if !hasAnyArms($activeSlave)>>
-				words and has no hands, so it takes a long, frustrating time for $him to communicate that $he would like you to do to $him what you did to $subSlave.slaveName.
-			<<else>>
-				words, so $he uses gestures to ask you to do to $him what you did to $subSlave.slaveName.
-			<</if>>
-		<</if>>
-	<<else>>
-		<<if $activeSlave.lips > 70>>
-			$He <<say>>s through $his massive dick-sucking lips,
-		<<elseif ($activeSlave.lipsPiercing+$activeSlave.tonguePiercing > 2)>>
-			$He <<say>>s through $his big oral piercings,
-		<<else>>
-			$He <<say>>s,
-		<</if>>
-		"<<Master>>, would you plea<<s>>e do me like that?"
-	<</if>>
-	You make $him state it more explicitly, so $he tries again:
-	<<if !hasAnyArms($activeSlave) && !canTalk($activeSlave)>>
-		$he wriggles around until $his ass is pointed straight at you, <<if canDoAnal($activeSlave)>>lets out a deep breath, and relaxes $his sphincter visibly<<else>>and bounces $his rear enticingly<</if>>.
-	<<elseif !canTalk($activeSlave)>>
-		$he tries to depict anal sex with hand gestures, then gives up and turns around and points to $his ass.
-	<<else>>
-		"Plea<<s>>e fuck my butt, <<Master>>!"
-	<</if>>
-	<<if canDoAnal($activeSlave)>>
-		$He squeaks with surprise as you throw $him on the couch, but $his eagerness is obvious. $He does everything right, relaxing as you <<if ($PC.dick == 0)>>push a strap-on into<<else>>enter<</if>> $his ass and enjoying $himself all the way through. $He climaxes hard to <<if ($PC.dick == 0)>>the phallus<<else>>the cock<</if>> in $his asshole. @@.hotpink;$He has become more devoted to you,@@ and @@.lightcoral;$his sexuality now focuses on $his anus.@@
-		<<= VCheck.Anal($activeSlave, 1)>>
-	<<elseif $PC.dick != 0>>
-		$He squeaks with surprise as you push $him
-		<<if $activeSlave.belly >= 300000>>
-			onto $his _belly <<if $activeSlave.bellyPreg >= 1500>>pregnancy<<else>>belly<</if>>
-		<<elseif $activeSlave.belly >= 5000>>
-			against the couch
-		<<else>>
-			onto the couch
-		<</if>>
-		and
-		<<if $activeSlave.butt >= 6>>
-			hug $his
-			<<if $activeSlave.butt <= 6>>
-				gigantic
-			<<elseif $activeSlave.butt <= 7>>
-				ridiculous
-			<<elseif $activeSlave.butt <= 10>>
-				immense
-			<<elseif $activeSlave.butt <= 14>>
-				inhuman
-			<<elseif $activeSlave.butt <= 20>>
-				absurdly massive
-			<</if>>
-			ass around your cock. Deep within its quivering <<if $activeSlave.buttImplant/$activeSlave.butt > .60>>firmness<<else>>softness<</if>>, you can clearly feel how excited $he is over $his rear getting the attention it deserves. While $he may have expected anal, you've decided otherwise, so you go to work savoring the depths of $his butt cheeks. $He is <<if !canTalk($activeSlave)>>practically <</if>> mewling with lust by the time you cum in $him, joining you in orgasm as $he feels your seed trickle down $his lower back and down to $his chastity belt.
-			@@.hotpink;$He has become more devoted to you,@@ and @@.lightcoral;$his sexuality now focuses on $his rear end.@@
-		<<elseif $activeSlave.butt >= 2>>
-			slip your cock between $his
-			<<if $activeSlave.butt <= 3>>
-				big
-			<<elseif $activeSlave.butt <= 4>>
-				huge
-			<<elseif $activeSlave.butt <= 5>>
-				enormous
-			<</if>>
-			<<if $activeSlave.buttImplant/$activeSlave.butt > .60>>firm<<else>>soft<</if>> buttocks, atop $his anal chastity. You let $him quiver with anticipation for a little before reminding $him that the belt's removal is a reward for good slaves, and you might give release $him from it one day — but that $he doesn't deserve it yet. With that, you begin thrusting against $his rear, enjoying the twin pairs off flesh against your palms. $He is <<if !canTalk($activeSlave)>>practically <</if>> mewling with lust by the time you cum on $him, joining you in orgasm as $he feels your seed trickle down $his lower back and down to $his chastity belt.
-		<<else>>
-			rest your cock between $his
-			<<if $activeSlave.butt <= 0>>
-				flat
-			<<else>>
-				small
-			<</if>>
-			buttocks, atop $his anal chastity. You let $him quiver with anticipation for a little before reminding $him that the belt's removal is a reward for good slaves, and you might give release $him from it one day — but that $he doesn't deserve it yet. With that, you begin thrusting between what can barely be called an ass. $He is <<if !canTalk($activeSlave)>>practically <</if>> mewling with lust by the time you cum on $him, joining you in orgasm as $he feels your seed trickle down $his lower back and down to $his chastity belt.
-		<</if>>
-	<<else>>
-		You trace a dildo around $his anal chastity before reminding $him that the belt's removal is a reward for good slaves, and you might give release $him from it one day — but that $he doesn't deserve it yet. With that, you run your hand across the quivering slave's rump, sending $him over the edge.
-		@@.hotpink;$He has become more devoted to you,@@ and @@.lightcoral;$his sexuality now focuses on $his rear end.@@
-	<</if>>
-	<<set $activeSlave.devotion += 4>>
-	<<set $activeSlave.fetish = "buttslut", $activeSlave.fetishKnown = 1, $activeSlave.fetishStrength = 65>>
-	<</replace>>
-<</link>>
-<br><<link "Steer $him away from anal obsession for the moment">>
-	<<replace "#result">>
-	Good slaves get aroused according to their masters' whim, not their own silly tendencies. You call $activeSlave.slaveName over before $he can give voice to $his interest in anal sex,
-	<<if canDoVaginal($activeSlave) || ($activeSlave.dick > 0 && !($activeSlave.chastityPenis))>>
-		and let $him masturbate while <<if ($PC.dick == 0)>>eating you out<<else>>sucking you off<</if>>, to associate non-anal intercourse with pleasure.
-		<<run seX($activeSlave, "oral", $PC, "penetrative")>>
-	<<else>>
-		and play with $him until $he orgasms while carefully keeping $his ass untouched and unstimulated.
-	<</if>>
-	You'll keep an eye on $him, and with this correction @@.hotpink;$he'll become more submissive to you.@@
-	<<set $activeSlave.devotion += 4>>
-	<<run seX($activeSlave, "oral", $PC, "penetrative")>>
-	<</replace>>
-<</link>>
-
-<<case "cumslut">>
-
-<<link "Turn $him into a cumslut too">>
-	<<replace "#result">>
-	Focusing a slave's sexuality on cum isn't as easy as some other manipulations, for the simple reason that even you have a limited supply of the stuff and it would be a shame to waste it all on $him. So, you take another approach; you instruct $activeSlave.slaveName to accompany $subSlave.slaveName, and vice versa, whenever their duties permit. They're to act as sexual partners, and share cum whenever there's any forthcoming. They spend the week giving blowjobs whenever they can, and making out to swap the cum back and forth afterward. If someone insists on penetrating them instead, that just means that the other has to suck it out of them before they can share it. Most importantly, $activeSlave.slaveName is punished if $he ever orgasms without cum in $his mouth. Soon, $he gets aroused by the mere <<if canSmell($activeSlave)>>scent<<else>>thought<</if>> of the stuff. @@.hotpink;$He has become more submissive to you,@@ and @@.lightcoral;$his sexuality now focuses on cum.@@
-	<<set $activeSlave.devotion += 4>>
-	<<run seX($activeSlave, "oral", "public", "penetrative", 50)>>
-	<<set $activeSlave.fetish = "cumslut", $activeSlave.fetishKnown = 1, $activeSlave.fetishStrength = 65>>
-	<</replace>>
-<</link>>
-<br><<link "Steer $him away from cum obsession for the moment">>
-	<<replace "#result">>
-	Good slaves get aroused according to their masters' whim, not their own silly tendencies. You call $activeSlave.slaveName over before $he can give voice to $his interest in cum, and
-	<<if (canDoVaginal($activeSlave) && $activeSlave.vagina > 0) || (canDoAnal($activeSlave) && $activeSlave.anus > 0)>>
-		fuck $him until $he orgasms, but you are careful to keep your cum well away from $him.
-	<<else>>
-		enjoy $him until $he orgasms, making sure to not involve cum at all.
-	<</if>>
-	You'll keep an eye on $him, and with this correction @@.hotpink;$he'll become more submissive to you.@@
-	<<if canDoVaginal($activeSlave) && $activeSlave.vagina > 0>>
-		<<run seX($activeSlave, "vaginal", $PC, "penetrative")>>
-	<<elseif canDoAnal($activeSlave) && $activeSlave.anus > 0>>
-		<<run seX($activeSlave, "anal", $PC, "penetrative")>>
-	<</if>>
-	<<set $activeSlave.devotion += 4>>
-	<</replace>>
-<</link>>
-
-<<case "humiliation">>
-
-<<link "Turn $him into a humiliation fetishist too">>
-	<<replace "#result">>
-	You bring $activeSlave.slaveName to the railing $subSlave.slaveName just left. For a long while, you just play with $his naked breasts, <<if canSee($activeSlave)>>requiring $him to look any member of the public below that stares at $him right in the eyes<<else>>making sure to keep $him well informed of how many passersby are ogling $him<</if>>. $He sobs and shakes with abject embarrassment <<if canSee($activeSlave)>>as $he locks eyes with person after person<<elseif canHear($activeSlave)>>as $he hears each whistle and catcall from onlookers<<else>>as $he imagines the amount of people ogling $him<</if>>. After enough of this, $he's so sexually primed that $he orgasms convulsively almost immediately
-	<<if (canDoVaginal($activeSlave) && $activeSlave.vagina > 0) || (canDoAnal($activeSlave) && $activeSlave.anus > 0)>>
-		after you enter $him from behind.
-	<<else>>
-		once run your hand across $his crotch.
-	<</if>>
-	@@.hotpink;$He has become more obedient,@@ and @@.lightcoral;$his sexuality now focuses on public humiliation.@@
-	<<if canDoVaginal($activeSlave) && $activeSlave.vagina > 0>>
-		<<= VCheck.Vaginal($activeSlave, 1)>>
-	<<elseif canDoAnal($activeSlave) && $activeSlave.anus > 0>>
-		<<= VCheck.Anal($activeSlave, 1)>>
-	<</if>>
-	<<set $activeSlave.devotion += 4>>
-	<<set $activeSlave.fetish = "humiliation", $activeSlave.fetishKnown = 1, $activeSlave.fetishStrength = 65>>
-	<</replace>>
-<</link>><<if ($activeSlave.anus == 0) || ($activeSlave.vagina == 0)>> //This option will take virginity//<</if>>
-<br><<link "Steer $him away from humiliation fetishism for the moment">>
-	<<replace "#result">>
-	Good slaves get aroused according to their masters' whim, not their own silly tendencies. You call $activeSlave.slaveName over before $he can give voice to $his interest in humiliation and fuck $him privately in your office. You'll keep an eye on $him, and with this correction @@.hotpink;$he'll become more obedient.@@
-	<<if canDoVaginal($activeSlave) && $activeSlave.vagina > 0>>
-		<<= VCheck.Vaginal($activeSlave, 1)>>
-	<<elseif canDoAnal($activeSlave) && $activeSlave.anus > 0>>
-		<<= VCheck.Anal($activeSlave, 1)>>
-	<<else>>
-		<<= SimpleSexAct.Player($activeSlave)>>
-	<</if>>
-	<<set $activeSlave.devotion += 4>>
-	<</replace>>
-<</link>><<if ($activeSlave.anus == 0) || ($activeSlave.vagina == 0)>> //This option will take virginity//<</if>>
-
-<<default>>
-	<br>ERROR: bad REFI event $REFIevent
-<</switch>>
-
-<<if $cheatMode == 1>>
-	<br><br>DEBUG: &nbsp;&nbsp;&nbsp;&nbsp;[[Go back to Nonrandom Event|Nonrandom Event][$activeSlave = 0, $eventSlave = 0]]
-<</if>>
-
-</span>
-
-<</if>> /* CLOSES EVENT SELECTION */
diff --git a/src/uncategorized/budget.js b/src/uncategorized/budget.js
new file mode 100644
index 0000000000000000000000000000000000000000..4e5bfcfc018094ecbe2d38532810e20e763cfcaa
--- /dev/null
+++ b/src/uncategorized/budget.js
@@ -0,0 +1,558 @@
+/**
+ *
+ * @param {"cash"|"rep"} budgetType
+ * @returns {HTMLTableElement}
+ */
+App.UI.budget = function(budgetType) {
+	let coloredRow = true;
+
+	// Set up object to track calculated displays
+	const income = (budgetType === "cash") ? "lastWeeksCashIncome" : "lastWeeksRepIncome";
+	const expenses = (budgetType === "cash") ? "lastWeeksCashExpenses" : "lastWeeksRepExpenses";
+
+	const table = document.createElement("table");
+	table.classList.add("budget");
+
+	// HEADER
+	generateHeader();
+
+	// BODY
+	table.createTBody();
+
+	// HEADER: FACILITIES
+	createSectionHeader("Facilities");
+
+	const f = App.Entity.facilities; // shortcut
+
+	if (budgetType === "cash") {
+		// PENTHOUSE
+		addToggle(generateRowGroup("Penthouse", "PENTHOUSE"), [
+			generateRowCategory("Rest", "slaveAssignmentRest"),
+			generateRowCategory("RestVign", "slaveAssignmentRestVign"),
+			generateRowCategory("Fucktoy", "slaveAssignmentFucktoy"),
+			generateRowCategory("Classes", "slaveAssignmentClasses"),
+			generateRowCategory("House", "slaveAssignmentHouse"),
+			generateRowCategory("HouseVign", "slaveAssignmentHouseVign"),
+			generateRowCategory("Whore", "slaveAssignmentWhore"),
+			generateRowCategory("WhoreVign", "slaveAssignmentWhoreVign"),
+			generateRowCategory("Public", "slaveAssignmentPublic"),
+			generateRowCategory("PublicVign", "slaveAssignmentPublicVign"),
+			generateRowCategory("Subordinate", "slaveAssignmentSubordinate"),
+			generateRowCategory("Milked", "slaveAssignmentMilked"),
+			generateRowCategory("MilkedVign", "slaveAssignmentMilkedVign"),
+			generateRowCategory("ExtraMilk", "slaveAssignmentExtraMilk"),
+			generateRowCategory("ExtraMilkVign", "slaveAssignmentExtraMilkVign"),
+			generateRowCategory("Gloryhole", "slaveAssignmentGloryhole"),
+			generateRowCategory("Confinement", "slaveAssignmentConfinement")
+		]);
+		// Other
+		generateRowCategory("Choosing Own Assignment", "slaveAssignmentChoice");
+
+		// LEADERSHIP ROLES
+
+		// HEAD GIRL
+		// find passage name for HGSuite
+		addToggle(generateRowGroup(f.headGirlSuite.nameCaps, "HEADGIRLSUITE"), [
+			generateRowCategory("Head Girl", "slaveAssignmentHeadgirl"),
+			generateRowCategory("Head Girl Fucktoys", "slaveAssignmentHeadgirlsuite")
+		]);
+
+		// RECRUITER
+		addToggle(generateRowGroup("Recruiter", "RECRUITER"), [
+			generateRowCategory("Recruiter", "slaveAssignmentRecruiter")
+		]);
+
+		// BODYGUARD
+		// find passage name for Armory
+		addToggle(generateRowGroup(f.armory.nameCaps, "DOJO"), [
+			generateRowCategory("Bodyguard", "slaveAssignmentBodyguard")
+		]);
+
+		// CONCUBINE
+		addToggle(generateRowGroup(f.masterSuite.nameCaps, "MASTERSUITE"), [
+			generateRowCategory("Master Suite Operation", "masterSuite"),
+			generateRowCategory("Master Suite Concubine", "slaveAssignmentConcubine"),
+			generateRowCategory("Master Suite Fucktoys", "slaveAssignmentMastersuite")
+		]);
+
+		// AGENT
+		addToggle(generateRowGroup("Agent", "AGENT"), [
+			generateRowCategory("Agent", "slaveAssignmentAgent"),
+			generateRowCategory("Agent's Partner", "slaveAssignmentAgentPartner")
+		]);
+
+		// ARCADE
+		addToggle(generateRowGroup(f.arcade.nameCaps, "ARCADE"), [
+			generateRowCategory("Arcade Operation", "arcade"),
+			generateRowCategory("Arcade Fuckdolls", "slaveAssignmentArcade")
+		]);
+
+		// BROTHEL
+		addToggle(generateRowGroup(f.brothel.nameCaps, "BROTHEL"), [
+			generateRowCategory("Brothel Operation", "brothel"),
+			generateRowCategory("Brothel Madam", "slaveAssignmentMadam"),
+			generateRowCategory("Brothel MadamVign", "slaveAssignmentMadamVign"),
+			generateRowCategory("Brothel Whore", "slaveAssignmentBrothel"),
+			generateRowCategory("Brothel WhoreVign", "slaveAssignmentBrothelVign"),
+			generateRowCategory("Brothel Ads", "brothelAds")
+		]);
+
+		// CELLBLOCK
+		addToggle(generateRowGroup(f.cellblock.nameCaps, "CELLBLOCK"), [
+			generateRowCategory("Cellblock Operation", "cellblock"),
+			generateRowCategory("Cellblock Warden", "slaveAssignmentWarden"),
+			generateRowCategory("Cellblock Slaves", "slaveAssignmentCellblock")
+		]);
+
+		// CLUB
+		addToggle(generateRowGroup(f.club.nameCaps, "CLUB"), [
+			generateRowCategory("Club Operation", "club"),
+			generateRowCategory("Club DJ", "slaveAssignmentDj"),
+			generateRowCategory("Club DJVign", "slaveAssignmentDjVign"),
+			generateRowCategory("Club Public", "slaveAssignmentClub"),
+			generateRowCategory("Club PublicVign", "slaveAssignmentClubVign"),
+			generateRowCategory("Club Ads", "clubAds")
+		]);
+
+		// CLINIC
+		addToggle(generateRowGroup(f.clinic.nameCaps, "CLINIC"), [
+			generateRowCategory("Clinic Operation", "clinic"),
+			generateRowCategory("Clinic Nurse", "slaveAssignmentNurse"),
+			generateRowCategory("Clinic Slaves", "slaveAssignmentClinic")
+		]);
+
+		// DAIRY
+		addToggle(generateRowGroup(f.dairy.nameCaps, "DAIRY"), [
+			generateRowCategory("Dairy Operation", "dairy"),
+			generateRowCategory("Dairy Milkmaid", "slaveAssignmentMilkmaid"),
+			generateRowCategory("Dairy Cows", "slaveAssignmentDairy"),
+			generateRowCategory("Dairy Cows", "slaveAssignmentDairyVign")
+		]);
+
+		// FARMYARD
+		addToggle(generateRowGroup(f.farmyard.nameCaps, "FARMYARD"), [
+			generateRowCategory("Farmyard Operation", "farmyard"),
+			generateRowCategory("Farmyard Farmer", "slaveAssignmentFarmer"),
+			generateRowCategory("Farmyard Farmhands", "slaveAssignmentFarmyard"),
+			generateRowCategory("Farmyard FarmhandsVign", "slaveAssignmentFarmyardVign")
+		]);
+
+		// INCUBATOR
+		addToggle(generateRowGroup(f.incubator.nameCaps, "INCUBATOR"), [
+			generateRowCategory("Incubator Operation", "incubator"),
+			generateRowCategory("Incubator Babies", "incubatorSlaves")
+		]);
+
+		// NURSERY
+		addToggle(generateRowGroup(f.nursery.nameCaps, "NURSERY"), [
+			generateRowCategory("Nursery Operation", "nursery"),
+			generateRowCategory("Nursery Matron", "slaveAssignmentMatron"),
+			generateRowCategory("Nursery Nannies", "slaveAssignmentNursery"),
+			generateRowCategory("Nursery NanniesVign", "slaveAssignmentNurseryVign")
+		]);
+
+		// PIT
+		addToggle(generateRowGroup(f.pit.nameCaps, "PIT"), [
+			generateRowCategory("Pit Operation", "pit")
+		]);
+
+		// PROSTHETIC LAB
+		addToggle(generateRowGroup("Prosthetic Lab", "PROSTHETICLAB"), [
+			generateRowCategory("Prosthetic Lab Operation", "lab"),
+			generateRowCategory("Prosthetic Lab Research", "labResearch"),
+			generateRowCategory("Prosthetic Lab Scientists", "labScientists"),
+			generateRowCategory("Prosthetic Lab Menials", "labMenials")
+		]);
+
+		// SCHOOLROOM
+		addToggle(generateRowGroup(f.schoolroom.nameCaps, "SCHOOLROOM"), [
+			generateRowCategory("Schoolroom Operation", "school"),
+			generateRowCategory("Schoolroom Teacher", "slaveAssignmentTeacher"),
+			generateRowCategory("Schoolroom Students", "slaveAssignmentSchool")
+		]);
+
+		// SERVANTS' QUARTERS
+		addToggle(generateRowGroup(f.servantsQuarters.nameCaps, "SERVANTSQUARTERS"), [
+			generateRowCategory("Servants' Quarters Operation", "servantsQuarters"),
+			generateRowCategory("Servants' Quarters Steward", "slaveAssignmentSteward"),
+			generateRowCategory("Servants' Quarters Servants", "slaveAssignmentQuarter"),
+			generateRowCategory("Servants' Quarters ServantsVign", "slaveAssignmentQuarterVign")
+		]);
+
+		// SPA
+		addToggle(generateRowGroup(f.spa.nameCaps, "SPA"), [
+			generateRowCategory("Spa Operation", "spa"),
+			generateRowCategory("Spa Attendant", "slaveAssignmentAttendant"),
+			generateRowCategory("Spa Slaves", "slaveAssignmentSpa")
+		]);
+
+		// HEADER: ARCOLOGY
+		createSectionHeader("Arcology");
+
+		// SLAVES
+		addToggle(generateRowGroup("Miscellaneous Slave Income and Expenses", "SLAVES"), [
+			generateRowCategory("Slave Porn", "porn"),
+			generateRowCategory("Slave Modifications", "slaveMod"),
+			generateRowCategory("Slave Surgery", "slaveSurgery"),
+			generateRowCategory("Slave Birthing", "birth")
+		]);
+
+		// MENIAL LABOR
+		addToggle(generateRowGroup("Menial Labor", "LABOR"), [
+			generateRowCategory("Menials: Slaves", "menialTrades"),
+			generateRowCategory("Menials: Fuckdolls", "fuckdolls"),
+			generateRowCategory("Menials: Bioreactors", "menialBioreactors")
+		]);
+
+		// FLIPPING
+		addToggle(generateRowGroup("Flipping", "FLIPPING"), [
+			generateRowCategory("Slave Transfer", "slaveTransfer"),
+			generateRowCategory("Menials", "menialTransfer"),
+			generateRowCategory("Fuckdolls", "fuckdollsTransfer"),
+			generateRowCategory("Bioreactors", "menialBioreactorsTransfer"),
+			generateRowCategory("Assistant: Menials", "menialTransferA"),
+			generateRowCategory("Assistant: Fuckdolls", "fuckdollsTransferA"),
+			generateRowCategory("Assistant: Bioreactors", "menialBioreactorsTransferA"),
+			generateRowCategory("Menial Retirement", "menialRetirement"),
+			generateRowCategory("Scientist Transfer", "labScientistsTransfer"),
+			generateRowCategory("Slave Babies", "babyTransfer")
+		]);
+
+		// FINANCIALS
+		addToggle(generateRowGroup("Financials", "FINANCIALS"), [
+			generateRowCategory("Weather", "weather"),
+			generateRowCategory("Rents", "rents"),
+			generateRowCategory("Fines", "fines"),
+			generateRowCategory("Events", "event"),
+			generateRowCategory("Capital Expenses", "capEx"),
+			generateRowCategory("Future Society Shaping", "futureSocieties"),
+			generateRowCategory("School Subsidy", "schoolBacking"),
+			generateRowCategory("Arcology conflict", "war"),
+			generateRowCategory("Cheating", "cheating")
+		]);
+
+		// POLICIES
+		addToggle(generateRowGroup("Policies", "POLICIES"), [
+			generateRowCategory("Policies", "policies"),
+			generateRowCategory("Subsidies and Barriers", "subsidiesAndBarriers")
+		]);
+
+		// EDICTS
+		addToggle(generateRowGroup("Edicts", "EDICTS"), [
+			generateRowCategory("Edicts", "edicts")
+		]);
+
+		// PERSONAL FINANCE
+		addToggle(generateRowGroup("Personal Finance", "PERSONALFINANCE"), [
+			generateRowCategory("Personal Business", "personalBusiness"),
+			generateRowCategory("Personal Living Expenses", "personalLivingExpenses"),
+			generateRowCategory("Your skills", "PCSkills"),
+			generateRowCategory("Your training expenses", "PCtraining"),
+			generateRowCategory("Your medical expenses", "PCmedical"),
+			generateRowCategory("Citizen Orphanage", "citizenOrphanage"),
+			generateRowCategory("Private Orphanage", "privateOrphanage"),
+			generateRowCategory("Stock dividends", "stocks"),
+			generateRowCategory("Stock trading", "stocksTraded")
+		]);
+
+		// SECURITY
+		addToggle(generateRowGroup("Security", "SECURITY"), [
+			generateRowCategory("Mercenaries", "mercenaries"),
+			generateRowCategory("Security Expansion", "securityExpansion"),
+			generateRowCategory("Special Forces", "specialForces"),
+			generateRowCategory("Special Forces Capital Expenses", "specialForcesCap"),
+			generateRowCategory("Peacekeepers", "peacekeepers")
+		]);
+	} else if (budgetType === "rep") {
+		// PENTHOUSE
+		addToggle(generateRowGroup("Penthouse", "PENTHOUSE"), [
+			generateRowCategory("Fucktoys", "fucktoy"),
+			generateRowCategory("Public servants", "publicServant"),
+			generateRowCategory("Free glory holes", "gloryhole"),
+			generateRowCategory("Concubine", "concubine"),
+			generateRowCategory("Head girl", "headGirl"),
+			generateRowCategory("Bodyguard", "bodyguard"),
+			generateRowCategory("Recruiter", "recruiter"),
+		]);
+
+		// ARCADE
+		addToggle(generateRowGroup(f.arcade.nameCaps, "ARCADE"), [
+			generateRowCategory("Arcade Operation", "arcade"),
+			generateRowCategory("Free arcade", "gloryholeArcade")
+		]);
+
+		// BROTHEL
+		addToggle(generateRowGroup(f.brothel.nameCaps, "BROTHEL"), [
+			generateRowCategory("Brothel Operation", "brothel"),
+		]);
+
+		// CLUB
+		addToggle(generateRowGroup(f.club.nameCaps, "CLUB"), [
+			generateRowCategory("Club Operation", "club"),
+			generateRowCategory("Club servants", "publicServantClub"),
+			generateRowCategory("Club ads", "clubAds"),
+		]);
+
+		// PIT
+		addToggle(generateRowGroup(f.pit.nameCaps, "PIT"), [
+			generateRowCategory("Pit Operation", "pit")
+		]);
+
+		// SERVANTS' QUARTERS
+		addToggle(generateRowGroup(f.servantsQuarters.nameCaps, "SERVANTSQUARTERS"), [
+			generateRowCategory("Servants' Quarters Operation", "servantsQuarters"),
+		]);
+
+		// SPA
+		addToggle(generateRowGroup(f.spa.nameCaps, "SPA"), [
+			generateRowCategory("Spa Operation", "spa"),
+		]);
+
+		// FARMYARD
+		addToggle(generateRowGroup(f.farmyard.nameCaps, "FARMYARD"), [
+			generateRowCategory("Shows", "shows"),
+		]);
+
+		// HEADER: ARCOLOGY
+		createSectionHeader("Arcology");
+
+		// SLAVES
+		addToggle(generateRowGroup("Miscellaneous Slave Income and Expenses", "SLAVES"), [
+			generateRowCategory("Slave trust and devotion", "slavesViewOfPC"),
+			generateRowCategory("Prestigious slaves", "prestigiousSlave"),
+			generateRowCategory("Porn", "porn"),
+			generateRowCategory("Selling/buying major slaves", "slaveTransfer"),
+			generateRowCategory("Slave surgery", "babyTransfer"),
+			generateRowCategory("Birth", "birth"),
+			generateRowCategory("Slave retirement", "retirement"),
+			generateRowCategory("Vignettes", "vignette"),
+			generateRowCategory("Free Fuckdolls", "fuckdolls"),
+		]);
+
+		// POLICIES
+		addToggle(generateRowGroup("Policies", "POLICIES"), [
+			generateRowCategory("Capital expenses", "capEx"),
+			generateRowCategory("Subsidies and Barriers", "subsidiesAndBarriers"),
+			generateRowCategory("Society shaping", "futureSocieties"),
+			generateRowCategory("Food", "food"),
+		]);
+
+		// EDICTS
+		addToggle(generateRowGroup("Edicts", "EDICTS"), [
+			generateRowCategory("Edicts", "edicts")
+		]);
+
+		// PERSONAL FINANCE
+		addToggle(generateRowGroup("Personal Finance", "PERSONALFINANCE"), [
+			generateRowCategory("Personal Business", "personalBusiness"),
+			generateRowCategory("Your appearance", "PCappearance"),
+			generateRowCategory("Your actions", "PCactions"),
+			generateRowCategory("Your skills", "PCRelationships"),
+			generateRowCategory("Slave relationships", "SlaveRelationships"),
+			generateRowCategory("Events", "event"),
+		]);
+
+		// SECURITY
+		addToggle(generateRowGroup("Security", "SECURITY"), [
+			generateRowCategory("Security Expansion", "securityExpansion"),
+			generateRowCategory("Special Forces", "specialForces"),
+			generateRowCategory("Conflict", "war"),
+			generateRowCategory("Peacekeepers", "peacekeepers")
+		]);
+
+		addToggle(generateRowGroup("Waste", "WASTE"), [
+			generateRowCategory("Reputation decay (your reputation cannot be higher than 20k)", "multiplier"),
+		]);
+	}
+
+
+	// BUDGET REPORT
+	generateSummary();
+
+	return table;
+
+	function generateHeader() {
+		const header = table.createTHead();
+		const row = header.insertRow();
+		const cell = row.insertCell();
+		let pent = document.createElement("h1");
+		pent.textContent = "Budget Overview";
+		cell.appendChild(pent);
+
+		for (let column of ["Income", "Expense", "Totals"]) {
+			let cell = document.createElement("th");
+			cell.textContent = column;
+			row.appendChild(cell);
+		}
+	}
+
+	function generateSummary() {
+		let row; let cell;
+		createSectionHeader("Budget Report");
+
+		row = table.insertRow();
+		cell = row.insertCell();
+		cell.append("Tracked totals");
+
+		cell = row.insertCell();
+		V[income].Total = hashSum(V[income]);
+		cell.append(formatColorDOM(Math.trunc(V[income].Total)));
+
+		cell = row.insertCell();
+		V[expenses].Total = hashSum(V[expenses]);
+		cell.append(formatColorDOM(Math.trunc(V[expenses].Total)));
+
+		cell = row.insertCell();
+		cell.append(formatColorDOM(Math.trunc(V[income].Total + V[expenses].Total)));
+		flipColors(row);
+
+		if (budgetType === "cash") {
+			row = table.insertRow();
+			cell = row.insertCell();
+			cell.append(`Expenses budget for week ${V.week + 1}`);
+			row.insertCell();
+			cell = row.insertCell();
+			cell.append(formatColorDOM(-V.costs));
+			flipColors(row);
+		}
+
+		row = table.insertRow();
+		cell = row.insertCell();
+		cell.append(`Last week actuals`);
+		row.insertCell();
+		row.insertCell();
+		cell = row.insertCell();
+		if (budgetType === "cash") {
+			cell.append(formatColorDOM(V.cash - V.cashLastWeek));
+		} else {
+			cell.append(formatColorDOM(V.rep - V.repLastWeek));
+		}
+		flipColors(row);
+
+		row = table.insertRow();
+		if (
+			(budgetType === "cash" && (V.cash - V.cashLastWeek) === (V.lastWeeksCashIncome.Total + V.lastWeeksCashExpenses.Total)) ||
+			(budgetType === "rep" && (V.rep - V.repLastWeek) === (V.lastWeeksRepIncome.Total + V.lastWeeksRepExpenses.Total))
+		) {
+			cell = row.insertCell();
+			const span = document.createElement('span');
+			span.className = "green";
+			span.textContent = `The books are balanced, ${properTitle()}!`;
+			cell.append(span);
+		} else {
+			cell = row.insertCell();
+			cell.append("Transaction tracking off by:");
+			row.insertCell();
+			row.insertCell();
+			cell = row.insertCell();
+			if (budgetType === "cash") {
+				cell.append(formatColorDOM((V.cash - V.cashLastWeek) - (V.lastWeeksCashIncome.Total + V.lastWeeksCashExpenses.Total)));
+			} else {
+				cell.append(formatColorDOM((V.rep - V.repLastWeek) - (V.lastWeeksRepIncome.Total + V.lastWeeksRepExpenses.Total)));
+			}
+		}
+		flipColors(row);
+	}
+
+	function createSectionHeader(text) {
+		coloredRow = true; // make sure the following section begins with color.
+		const row = table.insertRow();
+		const cell = row.insertCell();
+		const headline = document.createElement('h2');
+		headline.textContent = text;
+		cell.append(headline);
+	}
+
+	function generateRowCategory(node, category) {
+		if (category === "") {
+			const row = table.insertRow();
+			row.append(document.createElement('br'));
+			row.insertCell();
+			row.insertCell();
+			row.insertCell();
+			flipColors(row);
+			return row;
+		}
+
+		if (V[income][category] || V[expenses][category] || V.showAllEntries.costsBudget) {
+			const row = table.insertRow();
+			let cell = row.insertCell();
+			cell.append(node);
+			cell = row.insertCell();
+			cell.append(formatColorDOM(V[income][category]));
+			cell = row.insertCell();
+			cell.append(formatColorDOM(-Math.abs(V[expenses][category])));
+			flipColors(row);
+			cell = row.insertCell();
+			cell.append(formatColorDOM(V[income][category] + V[expenses][category]));
+			return row;
+		}
+	}
+
+	function generateRowGroup(title, name) {
+		/** @type {string[]} */
+		const members = CategoryAssociatedGroup[name];
+		const groupIn = members.map((k) => V[income][k]).reduce((acc, cur) => acc + cur);
+		const groupEx = members.map((k) => V[expenses][k]).reduce((acc, cur) => acc + cur);
+
+		if (groupIn || groupEx || V.showAllEntries.costsBudget) {
+			const row = table.insertRow();
+			let cell = row.insertCell();
+			const headline = document.createElement('h3');
+			headline.textContent = title;
+			cell.append(headline);
+			cell = row.insertCell();
+			cell.append(formatColorDOM(groupIn));
+			cell = row.insertCell();
+			cell.append(formatColorDOM(groupEx));
+			cell = row.insertCell();
+			cell.append(formatColorDOM(groupIn + groupEx));
+			return row;
+		}
+	}
+
+	/**
+	 * @param {HTMLTableRowElement} head
+	 * @param {Array<HTMLTableRowElement>} content
+	 */
+	function addToggle(head, content) {
+		if (!head) {
+			return;
+		}
+		content = content.filter(e => !!e);
+		if (content.length === 0) {
+			return;
+		}
+		App.UI.DOM.elementToggle(head, content);
+	}
+
+	function formatColorDOM(num, invert = false) {
+		if (invert) {
+			num = -1 * num;
+		}
+		let span = document.createElement('span');
+		span.textContent = (budgetType === "cash") ? cashFormat(num) : num;
+		if (num === 0) {
+			// num overwrites gray, so we don't use it here.
+			span.classList.add("gray");
+		} else {
+			span.classList.add((budgetType === "cash") ? "cash" : "reputation");
+			// Display red if the value is negative, unless invert is true
+			if (num < 0) {
+				span.classList.add("dec");
+				// Yellow for positive
+			} else if (num > 0) {
+				span.classList.add("inc");
+				// Gray for exactly zero
+			}
+		}
+		return span;
+	}
+
+	function flipColors(row) {
+		if (coloredRow) {
+			row.classList.add("colored");
+		}
+		coloredRow = !coloredRow;
+	}
+};
diff --git a/src/uncategorized/costsBudget.js b/src/uncategorized/costsBudget.js
deleted file mode 100644
index ee5e3ae4dd59de01e669a2ac347af568a75c8607..0000000000000000000000000000000000000000
--- a/src/uncategorized/costsBudget.js
+++ /dev/null
@@ -1,437 +0,0 @@
-App.UI.Budget.Cost = function() {
-	let coloredRow = true;
-
-	// Set up object to track calculated displays
-	const income = "lastWeeksCashIncome";
-	const expenses = "lastWeeksCashExpenses";
-
-	const table = document.createElement("table");
-	table.classList.add("budget");
-
-	// HEADER
-	generateHeader();
-
-	// BODY
-	table.createTBody();
-
-	// HEADER: FACILITIES
-	createSectionHeader("Facilities");
-
-	const f = App.Entity.facilities; // shortcut
-
-	// PENTHOUSE
-	addToggle(generateRowGroup("Penthouse", "PENTHOUSE"), [
-		generateRowCategory("Rest", "slaveAssignmentRest"),
-		generateRowCategory("RestVign", "slaveAssignmentRestVign"),
-		generateRowCategory("Fucktoy", "slaveAssignmentFucktoy"),
-		generateRowCategory("Classes", "slaveAssignmentClasses"),
-		generateRowCategory("House", "slaveAssignmentHouse"),
-		generateRowCategory("HouseVign", "slaveAssignmentHouseVign"),
-		generateRowCategory("Whore", "slaveAssignmentWhore"),
-		generateRowCategory("WhoreVign", "slaveAssignmentWhoreVign"),
-		generateRowCategory("Public", "slaveAssignmentPublic"),
-		generateRowCategory("PublicVign", "slaveAssignmentPublicVign"),
-		generateRowCategory("Subordinate", "slaveAssignmentSubordinate"),
-		generateRowCategory("Milked", "slaveAssignmentMilked"),
-		generateRowCategory("MilkedVign", "slaveAssignmentMilkedVign"),
-		generateRowCategory("ExtraMilk", "slaveAssignmentExtraMilk"),
-		generateRowCategory("ExtraMilkVign", "slaveAssignmentExtraMilkVign"),
-		generateRowCategory("Gloryhole", "slaveAssignmentGloryhole"),
-		generateRowCategory("Confinement", "slaveAssignmentConfinement")
-	]);
-	// Other
-	generateRowCategory("Choosing Own Assignment", "slaveAssignmentChoice");
-
-	// LEADERSHIP ROLES
-
-	// HEAD GIRL
-	// find passage name for HGSuite
-	addToggle(generateRowGroup(f.headGirlSuite.nameCaps, "HEADGIRLSUITE"), [
-		generateRowCategory("Head Girl", "slaveAssignmentHeadgirl"),
-		generateRowCategory("Head Girl Fucktoys", "slaveAssignmentHeadgirlsuite")
-	]);
-
-	// RECRUITER
-	addToggle(generateRowGroup("Recruiter", "RECRUITER"), [
-		generateRowCategory("Recruiter", "slaveAssignmentRecruiter")
-	]);
-
-	// BODYGUARD
-	// find passage name for Armory
-	addToggle(generateRowGroup(f.armory.nameCaps, "DOJO"), [
-		generateRowCategory("Bodyguard", "slaveAssignmentBodyguard")
-	]);
-
-	// CONCUBINE
-	addToggle(generateRowGroup(f.masterSuite.nameCaps, "MASTERSUITE"), [
-		generateRowCategory("Master Suite Operation", "masterSuite"),
-		generateRowCategory("Master Suite Concubine", "slaveAssignmentConcubine"),
-		generateRowCategory("Master Suite Fucktoys", "slaveAssignmentMastersuite")
-	]);
-
-	// AGENT
-	addToggle(generateRowGroup("Agent", "AGENT"), [
-		generateRowCategory("Agent", "slaveAssignmentAgent"),
-		generateRowCategory("Agent's Partner", "slaveAssignmentAgentPartner")
-	]);
-
-	// ARCADE
-	addToggle(generateRowGroup(f.arcade.nameCaps, "ARCADE"), [
-		generateRowCategory("Arcade Operation", "arcade"),
-		generateRowCategory("Arcade Fuckdolls", "slaveAssignmentArcade")
-	]);
-
-	// BROTHEL
-	addToggle(generateRowGroup(f.brothel.nameCaps, "BROTHEL"), [
-		generateRowCategory("Brothel Operation", "brothel"),
-		generateRowCategory("Brothel Madam", "slaveAssignmentMadam"),
-		generateRowCategory("Brothel MadamVign", "slaveAssignmentMadamVign"),
-		generateRowCategory("Brothel Whore", "slaveAssignmentBrothel"),
-		generateRowCategory("Brothel WhoreVign", "slaveAssignmentBrothelVign"),
-		generateRowCategory("Brothel Ads", "brothelAds")
-	]);
-
-	// CELLBLOCK
-	addToggle(generateRowGroup(f.cellblock.nameCaps, "CELLBLOCK"), [
-		generateRowCategory("Cellblock Operation", "cellblock"),
-		generateRowCategory("Cellblock Warden", "slaveAssignmentWarden"),
-		generateRowCategory("Cellblock Slaves", "slaveAssignmentCellblock")
-	]);
-
-	// CLUB
-	addToggle(generateRowGroup(f.club.nameCaps, "CLUB"), [
-		generateRowCategory("Club Operation", "club"),
-		generateRowCategory("Club DJ", "slaveAssignmentDj"),
-		generateRowCategory("Club DJVign", "slaveAssignmentDjVign"),
-		generateRowCategory("Club Public", "slaveAssignmentClub"),
-		generateRowCategory("Club PublicVign", "slaveAssignmentClubVign"),
-		generateRowCategory("Club Ads", "clubAds")
-	]);
-
-	// CLINIC
-	addToggle(generateRowGroup(f.clinic.nameCaps, "CLINIC"), [
-		generateRowCategory("Clinic Operation", "clinic"),
-		generateRowCategory("Clinic Nurse", "slaveAssignmentNurse"),
-		generateRowCategory("Clinic Slaves", "slaveAssignmentClinic")
-	]);
-
-	// DAIRY
-	addToggle(generateRowGroup(f.dairy.nameCaps, "DAIRY"), [
-		generateRowCategory("Dairy Operation", "dairy"),
-		generateRowCategory("Dairy Milkmaid", "slaveAssignmentMilkmaid"),
-		generateRowCategory("Dairy Cows", "slaveAssignmentDairy"),
-		generateRowCategory("Dairy Cows", "slaveAssignmentDairyVign")
-	]);
-
-	// FARMYARD
-	addToggle(generateRowGroup(f.farmyard.nameCaps, "FARMYARD"), [
-		generateRowCategory("Farmyard Operation", "farmyard"),
-		generateRowCategory("Farmyard Farmer", "slaveAssignmentFarmer"),
-		generateRowCategory("Farmyard Farmhands", "slaveAssignmentFarmyard"),
-		generateRowCategory("Farmyard FarmhandsVign", "slaveAssignmentFarmyardVign")
-	]);
-
-	// INCUBATOR
-	addToggle(generateRowGroup(f.incubator.nameCaps, "INCUBATOR"), [
-		generateRowCategory("Incubator Operation", "incubator"),
-		generateRowCategory("Incubator Babies", "incubatorSlaves")
-	]);
-
-	// NURSERY
-	addToggle(generateRowGroup(f.nursery.nameCaps, "NURSERY"), [
-		generateRowCategory("Nursery Operation", "nursery"),
-		generateRowCategory("Nursery Matron", "slaveAssignmentMatron"),
-		generateRowCategory("Nursery Nannies", "slaveAssignmentNursery"),
-		generateRowCategory("Nursery NanniesVign", "slaveAssignmentNurseryVign")
-	]);
-
-	// PIT
-	addToggle(generateRowGroup(f.pit.nameCaps, "PIT"), [
-		generateRowCategory("Pit Operation", "pit")
-	]);
-
-	// PROSTHETIC LAB
-	addToggle(generateRowGroup("Prosthetic Lab", "PROSTHETICLAB"), [
-		generateRowCategory("Prosthetic Lab Operation", "lab"),
-		generateRowCategory("Prosthetic Lab Research", "labResearch"),
-		generateRowCategory("Prosthetic Lab Scientists", "labScientists"),
-		generateRowCategory("Prosthetic Lab Menials", "labMenials")
-	]);
-
-	// SCHOOLROOM
-	addToggle(generateRowGroup(f.schoolroom.nameCaps, "SCHOOLROOM"), [
-		generateRowCategory("Schoolroom Operation", "school"),
-		generateRowCategory("Schoolroom Teacher", "slaveAssignmentTeacher"),
-		generateRowCategory("Schoolroom Students", "slaveAssignmentSchool")
-	]);
-
-	// SERVANTS' QUARTERS
-	addToggle(generateRowGroup(f.servantsQuarters.nameCaps, "SERVANTSQUARTERS"), [
-		generateRowCategory("Servants' Quarters Operation", "servantsQuarters"),
-		generateRowCategory("Servants' Quarters Steward", "slaveAssignmentSteward"),
-		generateRowCategory("Servants' Quarters Servants", "slaveAssignmentQuarter"),
-		generateRowCategory("Servants' Quarters ServantsVign", "slaveAssignmentQuarterVign")
-	]);
-
-	// SPA
-	addToggle(generateRowGroup(f.spa.nameCaps, "SPA"), [
-		generateRowCategory("Spa Operation", "spa"),
-		generateRowCategory("Spa Attendant", "slaveAssignmentAttendant"),
-		generateRowCategory("Spa Slaves", "slaveAssignmentSpa")
-	]);
-
-	// HEADER: ARCOLOGY
-	createSectionHeader("Arcology");
-
-	// SLAVES
-	addToggle(generateRowGroup("Miscellaneous Slave Income and Expenses", "SLAVES"), [
-		generateRowCategory("Slave Porn", "porn"),
-		generateRowCategory("Slave Modifications", "slaveMod"),
-		generateRowCategory("Slave Surgery", "slaveSurgery"),
-		generateRowCategory("Slave Birthing", "birth")
-	]);
-
-	// MENIAL LABOR
-	addToggle(generateRowGroup("Menial Labor", "LABOR"), [
-		generateRowCategory("Menials: Slaves", "menialTrades"),
-		generateRowCategory("Menials: Fuckdolls", "fuckdolls"),
-		generateRowCategory("Menials: Bioreactors", "menialBioreactors")
-	]);
-
-	// FLIPPING
-	addToggle(generateRowGroup("Flipping", "FLIPPING"), [
-		generateRowCategory("Slave Transfer", "slaveTransfer"),
-		generateRowCategory("Menials", "menialTransfer"),
-		generateRowCategory("Fuckdolls", "fuckdollsTransfer"),
-		generateRowCategory("Bioreactors", "menialBioreactorsTransfer"),
-		generateRowCategory("Assistant: Menials", "menialTransferA"),
-		generateRowCategory("Assistant: Fuckdolls", "fuckdollsTransferA"),
-		generateRowCategory("Assistant: Bioreactors", "menialBioreactorsTransferA"),
-		generateRowCategory("Menial Retirement", "menialRetirement"),
-		generateRowCategory("Scientist Transfer", "labScientistsTransfer"),
-		generateRowCategory("Slave Babies", "babyTransfer")
-	]);
-
-	// FINANCIALS
-	addToggle(generateRowGroup("Financials", "FINANCIALS"), [
-		generateRowCategory("Weather", "weather"),
-		generateRowCategory("Rents", "rents"),
-		generateRowCategory("Fines", "fines"),
-		generateRowCategory("Events", "event"),
-		generateRowCategory("Capital Expenses", "capEx"),
-		generateRowCategory("Future Society Shaping", "futureSocieties"),
-		generateRowCategory("School Subsidy", "schoolBacking"),
-		generateRowCategory("Arcology conflict", "war"),
-		generateRowCategory("Cheating", "cheating")
-	]);
-
-	// POLICIES
-	addToggle(generateRowGroup("Policies", "POLICIES"), [
-		generateRowCategory("Policies", "policies"),
-		generateRowCategory("Subsidies and Barriers", "subsidiesAndBarriers")
-	]);
-
-	// EDICTS
-	addToggle(generateRowGroup("Edicts", "EDICTS"), [
-		generateRowCategory("Edicts", "edicts")
-	]);
-
-	// PERSONAL FINANCE
-	addToggle(generateRowGroup("Personal Finance", "PERSONALFINANCE"), [
-		generateRowCategory("Personal Business", "personalBusiness"),
-		generateRowCategory("Personal Living Expenses", "personalLivingExpenses"),
-		generateRowCategory("Your skills", "PCSkills"),
-		generateRowCategory("Your training expenses", "PCtraining"),
-		generateRowCategory("Your medical expenses", "PCmedical"),
-		generateRowCategory("Citizen Orphanage", "citizenOrphanage"),
-		generateRowCategory("Private Orphanage", "privateOrphanage"),
-		generateRowCategory("Stock dividends", "stocks"),
-		generateRowCategory("Stock trading", "stocksTraded")
-	]);
-
-	// SECURITY
-	addToggle(generateRowGroup("Security", "SECURITY"), [
-		generateRowCategory("Mercenaries", "mercenaries"),
-		generateRowCategory("Security Expansion", "securityExpansion"),
-		generateRowCategory("Special Forces", "specialForces"),
-		generateRowCategory("Special Forces Capital Expenses", "specialForcesCap"),
-		generateRowCategory("Peacekeepers", "peacekeepers")
-	]);
-
-	// BUDGET REPORT
-	generateSummary();
-
-	return table;
-
-	function generateHeader() {
-		const header = table.createTHead();
-		const row = header.insertRow();
-		const cell = row.insertCell();
-		let pent = document.createElement("h1");
-		pent.textContent = "Budget Overview";
-		cell.appendChild(pent);
-
-		for (let column of ["Income", "Expense", "Totals"]) {
-			let cell = document.createElement("th");
-			cell.textContent = column;
-			row.appendChild(cell);
-		}
-	}
-
-	function generateSummary() {
-		let row, cell;
-		createSectionHeader("Budget Report");
-
-		row = table.insertRow();
-		cell = row.insertCell();
-		cell.append("Tracked totals");
-
-		cell = row.insertCell();
-		V.lastWeeksCashIncome.Total = hashSum(V.lastWeeksCashIncome);
-		cell.append(cashFormatColorDOM(Math.trunc(V.lastWeeksCashIncome.Total)));
-
-		cell = row.insertCell();
-		V.lastWeeksCashExpenses.Total = hashSum(V.lastWeeksCashExpenses);
-		cell.append(cashFormatColorDOM(Math.trunc(V.lastWeeksCashExpenses.Total)));
-
-		cell = row.insertCell();
-		cell.append(cashFormatColorDOM(Math.trunc(V.lastWeeksCashIncome.Total + V.lastWeeksCashExpenses.Total)));
-		flipColors(row);
-
-		row = table.insertRow();
-		cell = row.insertCell();
-		cell.append(`Expenses budget for week ${V.week + 1}`);
-		cell = row.insertCell();
-		cell = row.insertCell();
-		cell.append(cashFormatColorDOM(-V.costs));
-		flipColors(row);
-
-		row = table.insertRow();
-		cell = row.insertCell();
-		cell.append(`Last week actuals`);
-		cell = row.insertCell();
-		cell = row.insertCell();
-		cell = row.insertCell();
-		cell.append(cashFormatColorDOM(V.cash - V.cashLastWeek));
-		flipColors(row);
-
-		row = table.insertRow();
-		if ((V.cash - V.cashLastWeek) === (V.lastWeeksCashIncome.Total + V.lastWeeksCashExpenses.Total)) {
-			cell = row.insertCell();
-			const span = document.createElement('span');
-			span.className = "green";
-			span.textContent = `The books are balanced, ${properTitle()}!`;
-			cell.append(span);
-		} else {
-			cell = row.insertCell();
-			cell.append("Transaction tracking off by:");
-			cell = row.insertCell();
-			cell = row.insertCell();
-			cell = row.insertCell();
-			cell.append(cashFormatColorDOM((V.cash - V.cashLastWeek) - (V.lastWeeksCashIncome.Total + V.lastWeeksCashExpenses.Total)));
-		}
-		flipColors(row);
-	}
-
-	function createSectionHeader(text) {
-		coloredRow = true; // make sure the following section begins with color.
-		const row = table.insertRow();
-		const cell = row.insertCell();
-		const headline = document.createElement('h2');
-		headline.textContent = text;
-		cell.append(headline);
-	}
-
-	function generateRowCategory(node, category) {
-		if (category === "") {
-			const row = table.insertRow();
-			row.append(document.createElement('br'));
-			row.insertCell();
-			row.insertCell();
-			row.insertCell();
-			flipColors(row);
-			return row;
-		}
-
-		if (V[income][category] || V[expenses][category] || V.showAllEntries.costsBudget) {
-			const row = table.insertRow();
-			let cell = row.insertCell();
-			cell.append(node);
-			cell = row.insertCell();
-			cell.append(cashFormatColorDOM(V[income][category]));
-			cell = row.insertCell();
-			cell.append(cashFormatColorDOM(-Math.abs(V[expenses][category])));
-			flipColors(row);
-			cell = row.insertCell();
-			cell.append(cashFormatColorDOM(V[income][category] + V[expenses][category]));
-			return row;
-		}
-	}
-
-	function generateRowGroup(title, name) {
-		/** @type {string[]} */
-		const members = CategoryAssociatedGroup[name];
-		const groupIn = members.map((k) => V[income][k]).reduce((acc, cur) => acc + cur);
-		const groupEx = members.map((k) => V[expenses][k]).reduce((acc, cur) => acc + cur);
-
-		if (groupIn || groupEx || V.showAllEntries.costsBudget) {
-			const row = table.insertRow();
-			let cell = row.insertCell();
-			const headline = document.createElement('h3');
-			headline.textContent = title;
-			cell.append(headline);
-			cell = row.insertCell();
-			cell.append(cashFormatColorDOM(groupIn));
-			cell = row.insertCell();
-			cell.append(cashFormatColorDOM(groupEx));
-			cell = row.insertCell();
-			cell.append(cashFormatColorDOM(groupIn + groupEx));
-			return row;
-		}
-	}
-
-	/**
-	 * @param {HTMLTableRowElement} head
-	 * @param {Array<HTMLTableRowElement>} content
-	 */
-	function addToggle(head, content) {
-		if (!head) {
-			return;
-		}
-		content = content.filter(e => !!e);
-		if (content.length === 0) {
-			return;
-		}
-		App.UI.DOM.elementToggle(head, content);
-	}
-
-	function cashFormatColorDOM(cash, invert = false) {
-		if (invert) {
-			cash = -1 * cash;
-		}
-		let span = document.createElement('span');
-		span.textContent = cashFormat(cash);
-		if (cash === 0) {
-			// cash overwrites gray, so we don't use it here.
-			span.classList.add("gray");
-		} else {
-			span.classList.add("cash");
-			// Display red if the value is negative, unless invert is true
-			if (cash < 0) {
-				span.classList.add("dec");
-				// Yellow for positive
-			} else if (cash > 0) {
-				span.classList.add("inc");
-				// Gray for exactly zero
-			}
-		}
-		return span;
-	}
-
-	function flipColors(row) {
-		if (coloredRow) {
-			row.classList.add("colored");
-		}
-		coloredRow = !coloredRow;
-	}
-};
diff --git a/src/uncategorized/costsBudget.tw b/src/uncategorized/costsBudget.tw
index 44e3f27614f7b9d73c396fa2784e239c69e0b96c..79ea4f02fc5858fe45fc3817f43cfd74dbfc7c12 100644
--- a/src/uncategorized/costsBudget.tw
+++ b/src/uncategorized/costsBudget.tw
@@ -86,7 +86,7 @@
 	<<if ndef $lastWeeksCashIncome>>
 		Financial data currently unavailable.
 	<<else>>
-		<<includeDOM App.UI.Budget.Cost()>>
+		<<includeDOM App.UI.budget("cash")>>
 	<</if>>
 </p>
 
diff --git a/src/uncategorized/dairy.tw b/src/uncategorized/dairy.tw
index c0edcf4eee31dd01e1b41bee00134d39e5d89a69..77190bc5bff0d9e28354ae5f480b7efb417ab2d9 100644
--- a/src/uncategorized/dairy.tw
+++ b/src/uncategorized/dairy.tw
@@ -483,14 +483,14 @@
 			The cows are restrained
 			<<if $dairyRestraintsSetting == 2>>
 				''permanently,'' allowing use of industrial techniques even devoted cows would flinch at.
-				[[Only during milking|Dairy][$dairyRestraintsSetting = 1, $dairyFeedersSettingChanged = -1]]
+				[[Only during milking|Dairy][$dairyRestraintsSetting = 1, $dairyRestraintsSettingChanged = -1]]
 			<<elseif $dairyRestraintsSetting == 1>>
 				''when being milked,'' giving the machines full play.
-				[[Free range|Dairy][$dairyRestraintsSetting = 0, $dairyFeedersSettingChanged = -1]] |
-				[[Permanent machine milking|Dairy][$dairyRestraintsSetting = 2, $dairyFeedersSettingChanged = 1]]
+				[[Free range|Dairy][$dairyRestraintsSetting = 0, $dairyRestraintsSettingChanged = -1]] |
+				[[Permanent machine milking|Dairy][$dairyRestraintsSetting = 2, $dairyRestraintsSettingChanged = 1]]
 			<<else>>
 				''only when necessary,'' allowing obedient cows freedom to range around.
-				[[Restrain the cows|Dairy][$dairyRestraintsSetting = 1, $dairyFeedersSettingChanged = 1]]
+				[[Restrain the cows|Dairy][$dairyRestraintsSetting = 1, $dairyRestraintsSettingChanged = 1]]
 			<</if>>
 		</div>
 	<<else>>
diff --git a/src/uncategorized/hgSelect.tw b/src/uncategorized/hgSelect.tw
index f5e42a51b8d47bbfa077a031562f017e08eced72..8ef653742e91d627531e1c47b57b915b2310411e 100644
--- a/src/uncategorized/hgSelect.tw
+++ b/src/uncategorized/hgSelect.tw
@@ -23,13 +23,15 @@ __Slave training__
 <<if $headGirlTrainsHealth>><<checkbox "$headGirlTrainsHealth" 0 1 checked>><<else>><<checkbox "$headGirlTrainsHealth" 0 1>><</if>>
 Health
 <br>&nbsp;&nbsp;&nbsp;&nbsp;
+<<if $headGirlTrainsParaphilias>><<checkbox "$headGirlTrainsParaphilias" 0 1 checked>><<else>><<checkbox "$headGirlTrainsParaphilias" 0 1>><</if>>
+Paraphilias
+<br>&nbsp;&nbsp;&nbsp;&nbsp;
 <<if $headGirlTrainsFlaws>><<checkbox "$headGirlTrainsFlaws" 0 1 checked>><<else>><<checkbox "$headGirlTrainsFlaws" 0 1>><</if>>
 Flaws
 <<if $headGirlSoftensFlaws>><<checkbox "$headGirlSoftensFlaws" 0 1 checked>><<else>><<checkbox "$headGirlSoftensFlaws" 0 1>><</if>>
 Soften
-<br>&nbsp;&nbsp;&nbsp;&nbsp;
-<<if $headGirlTrainsParaphilias>><<checkbox "$headGirlTrainsParaphilias" 0 1 checked>><<else>><<checkbox "$headGirlTrainsParaphilias" 0 1>><</if>>
-Paraphilias
+<<if $headGirlOverridesQuirks>><<checkbox "$headGirlOverridesQuirks" 0 1 checked>><<else>><<checkbox "$headGirlOverridesQuirks" 0 1>><</if>>
+Soften and Replace
 <br>&nbsp;&nbsp;&nbsp;&nbsp;
 <<if $headGirlTrainsObedience>><<checkbox "$headGirlTrainsObedience" 0 1 checked>><<else>><<checkbox "$headGirlTrainsObedience" 0 1>><</if>>
 Obedience
diff --git a/src/uncategorized/randomNonindividualEvent.tw b/src/uncategorized/randomNonindividualEvent.tw
index 3ac8b1b8c785321d3fb1a63484e9eb2c67a60c0c..dc7ae13b84ab1b5ea909f20ce4757215dae5f6f5 100644
--- a/src/uncategorized/randomNonindividualEvent.tw
+++ b/src/uncategorized/randomNonindividualEvent.tw
@@ -137,69 +137,6 @@
 
 	<</if>>
 
-	/* Fetish Interest Events */
-
-	<<set $buttslutID = 0, $cumslutID = 0, $humiliationID = 0, $boobsID = 0>>
-
-	<<for $i = 0; $i < $slaves.length; $i++>>
-		<<if ($slaves[$i].fetishKnown == 1) && ($slaves[$i].fetishStrength > 95) && isSlaveAvailable($slaves[$i])>>
-			<<if ($slaves[$i].fetish == "buttslut")>>
-				<<if $buttslutID == 0>>
-					<<if $slaves[$i].anus > 0 && canDoAnal($slaves[$i])>>
-						<<set $buttslutID = $slaves[$i].ID>>
-					<</if>>
-				<</if>>
-			<<elseif ($slaves[$i].fetish == "cumslut")>>
-				<<if ($cumslutID == 0)>>
-					<<if ["none", "ring gag"].includes($slaves[$i].mouthAccessory)>>
-						<<set $cumslutID = $slaves[$i].ID>>
-					<</if>>
-				<</if>>
-			<<elseif ($slaves[$i].fetish == "humiliation")>>
-				<<if (($slaves[$i].anus > 0 && canDoAnal($slaves[$i])) || ($slaves[$i].vagina > 0 && canDoVaginal($slaves[$i])) && $slaves[$i].belly < 30000)>>
-					<<if ($humiliationID == 0)>>
-						<<set $humiliationID = $slaves[$i].ID>>
-					<</if>>
-				<</if>>
-			<<elseif ($slaves[$i].fetish == "boobs")>>
-				<<if ($slaves[$i].lactation > 0)>>
-					<<if ($boobsID == 0)>>
-						<<set $boobsID = $slaves[$i].ID>>
-					<</if>>
-				<</if>>
-			<</if>>
-		<</if>>
-	<</for>>
-
-	<<set $buttslutInterestTargetID = 0, $cumslutInterestTargetID = 0, $humiliationInterestTargetID = 0, $boobsInterestTargetID = 0>>
-
-	<<for $i = 0; $i < $slaves.length; $i++>>
-		<<if ($slaves[$i].rules.speech != "restrictive")>>
-			<<if isSlaveAvailable($slaves[$i])>>
-				<<if ($slaves[$i].fetish == "none") || ($slaves[$i].fetishStrength <= 60)>>
-					<<if ($buttslutID != 0) && ($buttslutInterestTargetID == 0)>>
-						<<set $REFIevent.push("buttslut")>>
-						<<set $buttslutInterestTargetID = $slaves[$i].ID>>
-					<</if>>
-					<<if ($cumslutID != 0) && ($cumslutInterestTargetID == 0)>>
-						<<if $PC.dick != 0>>
-							<<set $REFIevent.push("cumslut")>>
-						<</if>>
-						<<set $cumslutInterestTargetID = $slaves[$i].ID>>
-					<</if>>
-					<<if ($humiliationID != 0) && ($humiliationInterestTargetID == 0)>>
-						<<set $REFIevent.push("humiliation")>>
-						<<set $humiliationInterestTargetID = $slaves[$i].ID>>
-					<</if>>
-					<<if ($boobsID != 0) && ($boobsInterestTargetID == 0)>>
-						<<set $REFIevent.push("boobs")>>
-						<<set $boobsInterestTargetID = $slaves[$i].ID>>
-					<</if>>
-				<</if>>
-			<</if>>
-		<</if>>
-	<</for>>
-
 	/* Multislave Events */
 	<<set _L = App.Utils.countFacilityWorkers(["brothel", "clinic", "club", "dairy", "cellblock", "spa", "schoolroom", "servantsQuarters"])>>
 
diff --git a/src/uncategorized/repBudget.js b/src/uncategorized/repBudget.js
deleted file mode 100644
index dbdc715633d06773cb7ba87f766e9fd105f1c354..0000000000000000000000000000000000000000
--- a/src/uncategorized/repBudget.js
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * @param {string} category
- * @param {string} title
- * @returns {string}
- */
-globalThis.budgetLine = function(category, title) {
-	let income;
-	let expenses;
-
-	if (passage() === "Rep Budget") {
-		income = "lastWeeksRepIncome";
-		expenses = "lastWeeksRepExpenses";
-
-		if (V[income][category] || V[expenses][category] || V.showAllEntries.repBudget) {
-			return `<tr>\
-				<td>${title}</td>\
-				<td>${repFormat(V[income][category])}</td>\
-				<td>${repFormat(V[expenses][category])}</td>\
-				<td>${repFormat(V[income][category] + V[expenses][category])}</td>\
-				</tr>`;
-		}
-	} else if (passage() === "Costs Budget") {
-		income = "lastWeeksCashIncome";
-		expenses = "lastWeeksCashExpenses";
-
-		if (V[income][category] || V[expenses][category] || V.showAllEntries.costsBudget) {
-			return `<tr>\
-				<td>${title}</td>\
-				<td>${cashFormatColor(V[income][category])}</td>\
-				<td>${cashFormatColor(-Math.abs(V[expenses][category]))}</td>\
-				<td>${cashFormatColor(V[income][category] + V[expenses][category])}</td>\
-				</tr>`;
-		}
-	}
-	return ``;
-};
diff --git a/src/uncategorized/repBudget.tw b/src/uncategorized/repBudget.tw
index 6d6a831f74a45914326724b031d4d67277a9fd62..263a7b79e988d331c5e24fbe2bd02df4463851db 100644
--- a/src/uncategorized/repBudget.tw
+++ b/src/uncategorized/repBudget.tw
@@ -26,192 +26,7 @@
 <<if ndef $lastWeeksRepIncome>>
 	Financial data currently unavailable.
 <<else>>
-
-<style>
-	table.finances {
-		/*table-layout: fixed;*/
-		text-align: right;
-		border-collapse: separate;
-		border-spacing: 5px;
-		border-style: hidden;
-		empty-cells: hide;
-		width: 75%;
-	}
-</style>
-
-
-<table class="finances" border="1">
-	<tr>
-		<th><h2>Penthouse</h2></th>
-		<th>Income</th>
-		<th>Expense</th>
-		<th>Totals</th>
-	</tr>
-	<<print budgetLine("fucktoy", "Fucktoys")>>
-
-	<<print budgetLine("publicServant", "Public servants")>>
-
-	<<print budgetLine("gloryhole", "Free glory holes")>>
-
-	<<print budgetLine("concubine", "Concubine")>>
-
-	<<print budgetLine("headGirl", "Head girl")>>
-
-	<<print budgetLine("bodyguard", "Bodyguard")>>
-
-	<<print budgetLine("recruiter", "Recruiter")>>
-
-	<tr>
-		<h2>Structures</h2>		/* TODO: using h2s doesn't fit in with the rest of the game */
-	</tr>
-
-	<<set _L = App.Utils.countFacilityWorkers(["arcade", "brothel", "club", "servantsQuarters", "spa", "farmyard"])>>
-	<<print budgetLine("arcade", "<<if $arcade>>[[capFirstChar($arcadeName)|Arcade][$nextButton = \"Back to Budget\", $nextLink = \"Rep Budget\"]]<<else>><<= capFirstChar($arcadeName)>><</if>> (_L.arcade slaves)")>>
-
-	<<print budgetLine("gloryholeArcade", "Free arcade")>>
-
-	<<print budgetLine("brothel", "<<if $brothel>>[[capFirstChar($brothelName)|Brothel][$nextButton = \"Back to Budget\", $nextLink = \"Rep Budget\"]]<<else>><<= capFirstChar($brothelName)>><</if>> (_L.brothel slaves)")>>
-
-	<<print budgetLine("club", "<<if $club>>[[capFirstChar($clubName)|Club][$nextButton = \"Back to Budget\", $nextLink = \"Rep Budget\"]]<<else>><<= capFirstChar($clubName)>><</if>> (_L.club slaves)")>>
-
-	<<print budgetLine("publicServantClub", "Club servants")>>
-
-	<<print budgetLine("clubAds", "<<if $club>>[[Club ads|Club Advertisement][$nextButton = \"Back to Budget\", $nextLink = \"Rep Budget\"]]<<else>><<= capFirstChar($clubName)>><</if>>")>>
-
-	<<if $club > 0>>
-		<br>
-	<</if>>
-
-	<<print budgetLine("pit", "<<if $pit>>[[capFirstChar($pit.name)|Pit][$nextButton = \"Back to Budget\", $nextLink = \"Rep Budget\"]] ($pit.fighterIDs.length slaves)<<else>>The Pit<</if>>")>>
-
-	<<print budgetLine("servantsQuarters", "<<if $servantsQuarters>>[[Servants' Quarters][$nextButton = \"Back to Budget\", $nextLink = \"Rep Budget\"]]<<else>>Servants' Quarters<</if>> (_L.servantsQuarters slaves)")>>
-
-	<<print budgetLine("spa", "<<if $spa>>[[capFirstChar($spaName)|Spa][$nextButton = \"Back to Budget\", $nextLink = \"Rep Budget\"]]<<else>><<= capFirstChar($spaName)>><</if>> (_L.spa slaves)")>>
-
-	<<print budgetLine("shows", "<<if $farmyard>>[[capFirstChar($farmyardName)|Farmyard][$nextButton = \"Back to Budget\", $nextLink = \"Rep Budget\"]]<<else>>The Farmyard<</if>> (_L.farmyard slaves)")>>
-
-	<<print budgetLine("architecture", "[[Architecture|Manage Arcology][$nextButton = \"Back to Budget\", $nextLink = \"Rep Budget\"]]")>>
-
-
-	<tr>
-		<h2>Slaves</h2>
-	</tr>
-
-	<<print budgetLine("slavesViewOfPC", "Slave trust and devotion")>>
-
-	<<print budgetLine("prestigiousSlave", "Prestigious slaves")>>
-
-	<<print budgetLine("porn", "Porn")>>
-
-	<<print budgetLine("slaveTransfer", "Selling/buying major slaves")>>
-
-	<<print budgetLine("babyTransfer", "Slave surgery")>>
-
-	<<print budgetLine("birth", "Birth")>>
-
-	<<print budgetLine("retirement", "Slave retirement")>>
-
-	<<print budgetLine("vignette", "Vignettes")>>
-
-	<<print budgetLine("fuckdolls", "Free Fuckdolls")>>
-
-	<tr>
-		<h2>Policies</h2>
-	</tr>
-
-	<<print budgetLine("capEx", "Capital expenses")>>
-	<<print budgetLine("edicts", "<<if $secExpEnabled > 0>>[[Edicts|edicts]]<<else>>Edicts<</if>>")>>
-
-	<<print budgetLine("policies", "[[Policies|Policies][$nextButton = \"Back to Budget\", $nextLink = \"Rep Budget\"]]")>>
-
-	<<print budgetLine("subsidiesAndBarriers", "Subsidies and Barriers")>>
-
-	<<print budgetLine("futureSocieties", "[[Society shaping|Future Society][$nextButton = \"Back to Budget\", $nextLink = \"Rep Budget\"]]")>>
-
-	<<print budgetLine("food", "Food")>>
-
-
-	<tr>
-		<h2>Forces</h2>
-	</tr>
-
-	<<print budgetLine("specialForces", "Special forces")>>
-
-	<<print budgetLine("securityExpansion", "securityExpansion")>>
-
-	<<print budgetLine("peacekeepers", "Peacekeepers")>>
-
-	<<print budgetLine("war", "Conflict")>>
-
-
-	<tr>
-		<h2>Finance</h2>
-	</tr>
-
-	<<print budgetLine("personalBusiness", "Personal business")>>
-
-	<<print budgetLine("PCappearance", "Your appearance")>>
-
-	<<print budgetLine("PCactions", "Your actions")>>
-
-	<<print budgetLine("PCRelationships", "Your skills")>>
-
-	<<print budgetLine("SlaveRelationships", "Slave relationships")>>
-
-	<<print budgetLine("event", "Events")>>
-
-	<br>
-
-	<<print budgetLine("multiplier", "Reputation decay")>>
-
-	<<print budgetLine("overflow", "Some of your reputation gains are no doubt \"wasted,\" since it's impossible to be more well known.")>>
-
-	<<print budgetLine("cheating", "You cheated")>>
-
-	<tr><td></td></tr>
-	<tr>
-		<td>Tracked totals</td>
-		<td>
-			<<print repFormat(Math.trunc($lastWeeksRepIncome.Total))>>
-		</td>
-		<td>
-			<<print repFormat(Math.trunc($lastWeeksRepExpenses.Total))>>
-		</td>
-		<td>
-			<<print repFormat(Math.trunc($lastWeeksRepIncome.Total + $lastWeeksRepExpenses.Total))>>
-		</td>
-	</tr>
-
-	<tr><td></td></tr>
-	<tr>
-		<td>Last week actuals</td>
-		<td></td>
-		<td></td>
-		<td><<if ($rep-$repLastWeek) > 0>>
-				<<print repFormat($rep-$repLastWeek)>>
-			<<else>>
-				@@.red;<<print repFormat($rep-$repLastWeek)>>@@
-			<</if>></td>
-	</tr>
-
-	<<if ($rep-$repLastWeek) == $lastWeeksRepIncome.Total + $lastWeeksRepExpenses.Total>>
-		<tr>
-			@@.green;The books are balanced, <<= properTitle()>>!@@
-		</tr>
-	<<else>>
-		<tr>
-			<td>Transaction tracking off by:</td>
-			<td></td>
-			<td></td>
-			<td>
-				<<print repFormat(Math.trunc(($rep-$repLastWeek) - ($lastWeeksRepIncome.Total + $lastWeeksRepExpenses.Total)))>>
-			</td>
-		</tr>
-	<</if>>
-</table>
-
-<br>
-
+	<<includeDOM App.UI.budget("rep")>>
 <</if>>
 
 <<if ndef $lastWeeksRepErrors>>
diff --git a/src/uncategorized/rulesAssistantSummary.tw b/src/uncategorized/rulesAssistantSummary.tw
deleted file mode 100644
index 5e9b219c01deea91d33f44b8c2ef095ceea2b0f2..0000000000000000000000000000000000000000
--- a/src/uncategorized/rulesAssistantSummary.tw
+++ /dev/null
@@ -1,21 +0,0 @@
-:: Rules Assistant Summary [nobr]
-
-<<set $nextButton = "Back", $nextLink = "Rules Assistant", $returnTo = "Rules Assistant">>
-<div class="scroll" style="height:90vh">
-<i>Here you can see an overview of all of your rules at the same time.
-<br>Rules further to the right will always take priority, but some rules may not apply to all slaves.</i>
-
-<style>
-	table.finances {
-		text-align: left;
-		border-collapse: separate;
-		border-spacing: 5px;
-		border-style: hidden;
-		empty-cells: hide;
-	}
-</style>
-
-<table class= "finances" border= "1">
-<<print RASummaryCell()>>
-</table>
-</div>
\ No newline at end of file
diff --git a/src/uncategorized/seRecruiterSuccess.tw b/src/uncategorized/seRecruiterSuccess.tw
index a8c0f76a9a1e4acd6592a8f4fc7fcdeefdacc37f..93ab5f5a424180dd24fd6e509c115bde77bd0837 100644
--- a/src/uncategorized/seRecruiterSuccess.tw
+++ b/src/uncategorized/seRecruiterSuccess.tw
@@ -131,7 +131,7 @@
 		<<set _slave.intelligence = Intelligence.random({limitIntelligence: [40,100]})>>
 	<</if>>
 	<<if $policies.SMR.eugenics.heightSMR == 1>>
-		<<set _slave.height = random(185,190)>>
+		<<set _slave.height = Height.mean(_slave) + random(15, 30)>>
 	<</if>>
 	<<if $policies.SMR.eugenics.faceSMR == 1>>
 		<<set _slave.face = random(40,100)>>