diff --git a/.eslintrc.json b/.eslintrc.json
new file mode 100644
index 0000000000000000000000000000000000000000..5f86a7c2be91b11c7cafbb5307be5d28a4e3116e
--- /dev/null
+++ b/.eslintrc.json
@@ -0,0 +1,61 @@
+{
+    "root": true,
+    "env": {
+        "browser": true,
+        "es6": true,
+        "jquery": true
+    },
+    "extends": "eslint:recommended",
+    "globals": {
+        "SugarCube": false,
+        "Config": false,
+        "State": false,
+        "Story": false,
+        "settings": false,
+        "setup": false,
+        "App": false,
+        "prehistory": true,
+        "predisplay": true,
+        "prerender": true,
+        "postrender": true,
+        "postdisplay": true
+    },
+    "parserOptions": {
+        "ecmaVersion": 2018,
+        "sourceType": "module",
+        "ecmaFeatures": {
+            "impliedStrict": true
+        }
+    },
+    "rules": {
+        "semi-spacing": "warn",
+        "semi-style": "warn",
+        "eqeqeq": "error",
+        "no-fallthrough": "error",
+        "camelcase": "warn",
+        "comma-spacing": "error",
+        "comma-style": "error",
+        "object-curly-newline": "off",
+        "object-curly-spacing": "error",
+        "no-var": "error",
+        "spaced-comment": "warn",
+        "no-undef": "off",
+        "no-unused-vars": "error",
+        "block-scoped-var": "warn",
+        "dot-notation": "off",
+        "linebreak-style": ["error", "unix"],
+        "eol-last": "warn",
+        "unicode-bom": [
+            "error",
+            "never"
+        ],
+        "valid-jsdoc": [
+        "warn",
+        {
+            "requireParamDescription": false,
+            "requireReturnDescription": false,
+            "requireReturn": false
+        }
+        ]
+    }
+}
diff --git a/.gitignore b/.gitignore
index 8dc0920da275e8878b73a375aa7c35587d5a9065..cd29456af544f0c68a943e66c8eb98c24bb890c7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -95,8 +95,6 @@ ENV/
 src/config/start.tw
 
 # eslint
-.eslintrc.js
-.eslintrc.json
 node_modules
 package-lock.json
 package.json
diff --git a/compile-git+java-sanityCheck.bat b/compile-git+java-sanityCheck.bat
index ba6c6aaa81939404bcaed4f085fc0358512fb083..b1e531e72ded2721cc44054c77a64b04e5916d3f 100644
--- a/compile-git+java-sanityCheck.bat
+++ b/compile-git+java-sanityCheck.bat
@@ -21,7 +21,7 @@ for %%k in (HKCU HKLM) do (
 :FOUND
 if %GITFOUND% == yes (
 	set "PATH=%GIT%bin;%PATH%"
-	bash --login -c "./java+gitGrep-sanityCheck.sh java"
+	bash --login -c "./sanityCheck.sh java"
 )
 
 :: Compile the game
diff --git a/devNotes/VersionChangeLog-Premod+LoliMod.txt b/devNotes/VersionChangeLog-Premod+LoliMod.txt
index ba06a379dac9720b02834c975a21948ecead2919..c875e4b541b79541b98fe7e6417ced2cccb88851 100644
--- a/devNotes/VersionChangeLog-Premod+LoliMod.txt
+++ b/devNotes/VersionChangeLog-Premod+LoliMod.txt
@@ -2,6 +2,53 @@ Pregmod
 
 0.10.7.1-2.3.x
 
+	9
+	-slave assignment links improved
+	-breast implants now impact milk production based on % implant
+	-fixes
+
+04/17/2019
+
+	8
+	-fixes
+
+04/15/2019
+
+	7
+	-converted saWhore to js
+	-added rules summary to the RA
+	-fixes
+
+04/14/2019
+
+	6
+	-fixes
+
+04/13/2019
+
+	5
+	-fixes
+
+04/12/2019
+
+	4
+	-fixed issues with salon skin treatments
+	-fixed inflation errors
+
+	3
+	-fixes
+
+04/11/2019
+
+	2
+	-fixes
+	-tweaked need
+
+	1
+	-major fixes to slave skills (BC required)
+
+04/09/2019
+
 	0
 	-Arcade overhualed
 	-population now affects demand
@@ -2634,7 +2681,7 @@ Pregmod
 
 	318
 	-fixed errant ".lightyellow;"
-	-fixed non lethal pit bug
+	-fixed nonlethal pit bug
 
 	317
 	-fixed virginity ignoring in saRules
@@ -5303,7 +5350,7 @@ Pregmod
 
 	17
 	-extended weight range from -100-100 to -100-200
-	-added some more mental effects on slaves to the non-lethal pit, thanks to anon
+	-added some more mental effects on slaves to the nonlethal pit, thanks to anon
 	-added a new title set up for slaves to use when being rude to you but aren't being adamant.
 	-fixed bugs
 
diff --git a/devNotes/twine CSS b/devNotes/twine CSS
index c4958e7d1280c5ea63369c3f73d8675b425fb6a1..db0c78a1783464c2fd64dfcb2f6bc7d789563599 100644
--- a/devNotes/twine CSS	
+++ b/devNotes/twine CSS	
@@ -18,6 +18,7 @@ hr {
 	opacity: 1 !important;
 }
 
+
 /* default is 54em */
 #passages {
 	max-width: 100%;
@@ -301,6 +302,10 @@ white-space: normal;
 }
 .rajs-section h1:hover { text-decoration: underline; }
 
+.scroll {
+	overflow: auto;
+}
+
 /* Accordion 000-250-006 */
 
 button.accordion {
diff --git a/devTools/makeTwineCSSPassage.bat b/devTools/makeTwineCSSPassage.bat
new file mode 100644
index 0000000000000000000000000000000000000000..9ac31514777781a95093238c4ec817460a6a6707
--- /dev/null
+++ b/devTools/makeTwineCSSPassage.bat
@@ -0,0 +1,23 @@
+@echo off
+:: Generates devNotes/twineCSS.txt from all .css files in src/ subdir
+
+:: See if we can find a git installation
+setlocal enabledelayedexpansion
+
+for %%k in (HKCU HKLM) do (
+	for %%w in (\ \Wow6432Node\) do (
+		for /f "skip=2 delims=: tokens=1*" %%a in ('reg query "%%k\SOFTWARE%%wMicrosoft\Windows\CurrentVersion\Uninstall\Git_is1" /v InstallLocation 2^> nul') do (
+			for /f "tokens=3" %%z in ("%%a") do (
+				set GIT=%%z:%%b
+				set GITFOUND=yes
+				goto FOUND
+			)
+		)
+	)
+)
+
+:FOUND
+if %GITFOUND% == yes (
+	set "PATH=%GIT%bin;%PATH%"
+	bash --login -c ./makeTwineCSSPassage.sh
+)
diff --git a/devTools/makeTwineCSSPassage.sh b/devTools/makeTwineCSSPassage.sh
new file mode 100755
index 0000000000000000000000000000000000000000..d8ccc4726b949c1ba132b15a26a1cf094f2428c4
--- /dev/null
+++ b/devTools/makeTwineCSSPassage.sh
@@ -0,0 +1,20 @@
+#!/bin/sh
+# Generates devNotes/twine CSS.txt from all .css files in src/ subdir
+
+# Joins all .css files from the current dir (recursive) into a Twee [script] passage
+# arguments:
+# $1: root repo dir
+# $2: output file name
+collectCSSForTwine() {
+	local files=$(find . -iname '*.css' -print)
+	files=$(echo "$files" | sort)
+	echo "" > "$2"
+	for f in $files; do
+		echo -e "\n/* ${f} */\n" >> "$2"
+		cat "$f" >> "$2"
+	done
+}
+
+ROOT_REPO_DIR="$(git rev-parse --show-toplevel)"
+cd "${ROOT_REPO_DIR}"/src
+collectCSSForTwine "${ROOT_REPO_DIR}" "${ROOT_REPO_DIR}/devNotes/twine CSS.txt"
diff --git a/sanityCheck.sh b/sanityCheck.sh
index a9b919314930efd96725e8ec6b1c08de17f5abc8..04bae92e8395fcf8ec52499bbd188ab09f7613a6 100755
--- a/sanityCheck.sh
+++ b/sanityCheck.sh
@@ -121,6 +121,8 @@ $GREP -E "@@(\.|,|;|:)\s" -- src/*.tw | myprint "WrongSelectorPunctuation"
 $GREP "@@[a-z]\+;" -- 'src/*' | myprint "SelectorMissingDot"
 # Check for </span>.  instead of .</span>
 $GREP -E "</span>(\.|,|;|:)\s" -- src/*.js | myprint "WrongSelectorPunctuation"
+#Check for non lethal or non-lethal instead of nonlethal
+$GREP "[Nn]on.lethal" -- 'src/*' | myprint "ShouldBeNonlethal"
 
 # Check that we do not have any variables that we use only once.   e.g.	 $onlyUsedOnce
 # Ignore  *Nationalities
diff --git a/slave variables documentation - Pregmod.txt b/slave variables documentation - Pregmod.txt
index 283b3494b251fb51e57a3692aa6162c6bead42d0..fb7ec632d812145ed6ab7c6a0053518c70bf711e 100644
--- a/slave variables documentation - Pregmod.txt	
+++ b/slave variables documentation - Pregmod.txt	
@@ -2315,7 +2315,7 @@ skill.anal:
 61-99 - expert
 100+  - master
 
-skillwhore:
+skill.whoring:
 
 0-10  - unskilled
 11-30 -	basic
@@ -2360,7 +2360,7 @@ Her skill as a brothel madam
 accepts int
 default cap is 200
 
-skillDJ:
+skill.DJ:
 
 Her skill as a DJ
 accepts int
@@ -2559,9 +2559,10 @@ drugs:
 
 aphrodisiacs:
 
-0 - none
-1 - standard
-2 - powerful
+-1 - anaphrodisiacs
+ 0 - none
+ 1 - standard
+ 2 - powerful
 
 curatives:
 
@@ -2969,10 +2970,11 @@ geneticQuirks:
 0 - does not have
 1 - carrier
 2 - active
+3 - inactive (used for triggering macromastia and kin to start growin)
 
 {
 
-macromastia - Oversized breasts. Increased growth rate, reduced shrink rate. Breasts try to return to oversized state if reduced.
+macromastia - Oversized breasts. Breasts try to return to oversized state if reduced.
 gigantomastia - Greatly oversized breasts. Increased growth rate, reduced shrink rate. Breasts try to return to oversized state if reduced.
 macromastia + gigantomastia - Breasts never stop growing. Increased growth rate, no shrink rate.
 
diff --git a/src/002-config/fc-js-init.js b/src/002-config/fc-js-init.js
index d3bc023f91a27ba47814c46832a023b77b0140db..f2d1087953d8beef9b67e9ab917148946fcd23fe 100644
--- a/src/002-config/fc-js-init.js
+++ b/src/002-config/fc-js-init.js
@@ -4,9 +4,10 @@
 * does not work.
 */
 window.App = { };
-// the same declaration for code parsers that don't line the line above
+// the same declaration for code parsers that don't like the line above
 var App = window.App || {};
 
+App.Data = {};
 App.Debug = {};
 App.Entity = {};
 App.Entity.Utils = {};
diff --git a/src/003-assets/CSS/links.css b/src/003-assets/CSS/links.css
new file mode 100644
index 0000000000000000000000000000000000000000..518cab09b24927b774fe273e756208761ba50902
--- /dev/null
+++ b/src/003-assets/CSS/links.css
@@ -0,0 +1,48 @@
+.textWithTooltip {
+	position: relative;
+	display: inline-block;
+	text-decoration: underline;
+	text-decoration-color: lightblue;
+}
+
+.textWithTooltip .tooltip {
+	visibility: hidden;
+	display: block;
+	font-size: smaller;
+	width: 20em;
+	margin-left: -10em;
+	background-color: slategray;
+	color: black;
+  	text-align: center;
+  	border-radius: 3px;
+  	padding: 3px;
+	position: absolute;
+  	z-index: 1;
+  	bottom: 100%;
+  	left: 50%;
+}
+
+.textWithTooltip .tooltip ul {
+	margin-left: 5px;
+	margin-right: 0px;
+	padding-left: 10px;
+	padding-right: 0px;
+	text-align: left;
+}
+
+.textWithTooltip .tooltip::after {
+	content: "";
+	position: absolute;
+	top: 100%;
+	left: 50%;
+	margin-left: -5px;
+	border-width: 5px;
+	border-style: solid;
+	border-color: #555 transparent transparent transparent;
+}
+
+.textWithTooltip:hover .tooltip {
+	visibility: visible;
+	opacity: 1;
+	transition-delay: 0.3s;
+}
diff --git a/src/004-base/facility.js b/src/004-base/facility.js
new file mode 100644
index 0000000000000000000000000000000000000000..08b59e59f07a10b49aef7c6a46559af081014c95
--- /dev/null
+++ b/src/004-base/facility.js
@@ -0,0 +1,410 @@
+
+App.Data.JobDesc = class {
+	constructor() {
+		this.position = "";
+		this.assignment = "";
+		this.publicSexUse = false;
+		this.fuckdollAccepted = false;
+		this.broodmotherAccepted = false;
+	}
+}
+
+App.Data.ManagerJobDesc = class extends App.Data.JobDesc {
+	constructor() {
+		super();
+		this.shouldWalk = true;
+		this.shouldSee = true;
+		this.shouldHear = true;
+		this.shouldTalk = true;
+		this.shouldThink = true;
+		this.requiredDevotion = 50;
+		/**
+		 * Applicable careers
+		 * @type {string[]} */
+		this.careers = [];
+		/**
+		 * Applicable skill name
+		 * @type {string} */
+		this.skill = null;
+	}
+}
+
+App.Data.FacilityDesc = class {
+	constructor() {
+		/** Base name for state variables */
+		this.baseName = "";
+		/** Generic name for UI (Brothel, Club, etc.)
+		 * If null, baseName is used instead
+		*/
+		this.genericName = "";
+		/** @type {Object.<string, App.Data.JobDesc>} */
+		this.jobs = {};
+		this.defaultJob = "";
+		/** @type {App.Data.ManagerJobDesc} */
+		this.manager = null;
+	}
+}
+
+App.Data.Facilities = {};
+App.Entity.Facilities = {};
+
+App.Entity.Facilities.Job = class {
+	constructor() {
+		/** @type {App.Data.JobDesc} */
+		this.desc = null;
+		/** @type {App.Entity.Facilities.Facility} */
+		this.facility = null;
+	}
+
+	/**
+	 * Can slave be employed at this position
+	 * @param {App.Entity.SlaveState} slave
+	 * @returns {string[]}
+	 */
+	canEmploy(slave) {
+		let r = [];
+		if (this.isEmployed(slave)) {
+			r.push(`${slave.slaveName} is already assigned to ${this.desc.assignment} at ${this.facility.name}.`);
+			return r;
+		}
+		if (!this._facilityHasFreeSpace) {
+			r.push(`Capacity of ${this.facility.name} exceeded.`);
+		}
+		if (slave.assignment === this.desc.assignment) {
+			r.push(`${slave.slaveName} is already assigned to ${this.desc.assignment}.`);
+		}
+		if (this.desc.publicSexUse &&
+			(slave.breedingMark === 1 && State.variables.propOutcome === 1)) {
+			r.push(`${slave.slaveName} is for private use only.`);
+		}
+		if (!this.desc.fuckdollAccepted && slave.fuckdoll > 0) {
+			r.push(`Fuckdolls can't ${this.desc.assignment} at ${this.facility.name}.`);
+		}
+		if (!this.desc.broodmotherAccepted && slave.preg > 37 && slave.broodmother === 2) {
+			r.push(`Birthing broodmothers can't ${this.desc.assignment}.`);
+		}
+		return r;
+	}
+
+	/**
+	 * Is slave already assigned to this job
+	 * @param {App.Entity.SlaveState} slave
+	 * @returns {boolean}
+	 */
+	isEmployed(slave) {
+		return slave.assignment === this.desc.assignment;
+	}
+
+	/**
+	 *
+	 * @callback linkCallback
+	 * @param {string} assignment new assignment
+	 * @returns {string} code to include into the <<link>><</link>
+	 */
+
+	/**
+	 * Returns link text for the penthhouse assignment
+	 * @param {number} i slave index
+	 * @param {string} [passage] passage to go to
+	 * @param {linkCallback} [callback]
+	 * @param {string} [linkText]
+	 * @returns {string}
+	 */
+	assingmentLink(i, passage, callback, linkText) {
+		linkText = linkText || this.desc.position;
+		const linkAction = callback !== undefined ? callback(this.desc.assignment) : '';
+		return `<<link "${linkText}"${passage !== undefined ? ' "' + passage + '"' : ''}>><<= assignJob(${App.Utils.slaveRefString(i)}, "${this.desc.assignment}")>>${linkAction}<</link>>`;
+	}
+
+	/**
+	 * Tests is slave broken enought
+	 * @protected
+	 * @param {App.Entity.SlaveState} slave
+	 * @param {number} [pureDevotion=50] Minimal devotion level to pass test with any trust
+	 * @param {number} [devotion=-50] Minimal devotion for slaves with enough fear
+	 * @param {number} [trust=-21] Maximal trust (i.e. minimal fear) for the less devotional (see above)
+	 * @param {number} [pureFear=-51] Maximal low trust to pass test with any devotion (because of the fear)
+	 * @param {number} [pureTrust=101] Minimal high trust level to pass test without devotion
+	 * @returns {boolean}
+	 */
+	static _isBrokenEnough(slave, pureDevotion, devotion, trust, pureFear, pureTrust) {
+		if ((slave.devotion < (pureDevotion || 50)) &&
+			(slave.trust < (pureTrust || 101)) && (slave.trust > (pureFear || -51)) &&
+			((slave.devotion <= (devotion || -51)) || (slave.trust >= (trust || -21)))) {
+			return false;
+		}
+		return true;
+	}
+
+	/**
+	 * @protected
+	 * Standard message that slave is not broken enough
+	 * @param {App.Entity.SlaveState} slave
+	 * @returns {string}
+	 */
+	static _stdBreakageMessage(slave) {
+		return `${slave.slaveName} must be either more fearful of you or devoted to you.`;
+	}
+
+	/**
+	 * @private
+	 */
+	get _facilityHasFreeSpace() {
+		return this.facility.hasFreeSpace;
+	}
+}
+
+App.Entity.Facilities.ManagingJob = class extends App.Entity.Facilities.Job {
+	constructor() {
+		super();
+		/** @type {App.Data.ManagerJobDesc} */
+		this.desc = null;
+	}
+
+	/**
+	 * Can slave be employed at this position
+	 * @param {App.Entity.SlaveState} slave
+	 * @returns {string[]}
+	 */
+	canEmploy(slave) {
+		let r = super.canEmploy(slave);
+		if (slave.devotion < this.desc.requiredDevotion) {
+			r.push(`${slave.slaveName} must be more devoted to you.`);
+		}
+		if (this.desc.shouldWalk && !canWalk(slave)) {
+			r.push(`${slave.slaveName} must be able to walk.`);
+		}
+		if (this.desc.shouldSee && !canSee(slave)) {
+			r.push(`${slave.slaveName} must have working eyes.`);
+		}
+		if (this.desc.shouldHear && !canHear(slave)) {
+			r.push(`${slave.slaveName} must be able to hear.`);
+		}
+		if (this.desc.shouldTalk && !canTalk(slave)) {
+			r.push(`${slave.slaveName} must be able to talk.`);
+		}
+		if (this.desc.shouldThink && slave.fetish === "mindbroken") {
+			r.push(`${slave.slaveName} must possess cognition.`);
+		}
+		return r;
+	}
+	/**
+	 * Returns true if slave has enough applicable skill or career
+	 * @param {App.Entity.SlaveState} slave
+	 * @returns {boolean}
+	 */
+	slaveHasExperience(slave) {
+		return (this.desc.skill !== null && slave.skill[this.desc.skill] >= State.variables.masteredXP) ||
+			(typeof slave.career === 'string' && this.desc.careers.includes(slave.career));
+	}
+
+	/**
+	 * @private
+	 */
+	get _facilityHasFreeSpace() {
+		return true;
+	}
+}
+
+App.Entity.Facilities.Facility = class {
+	/**
+	 * @param {App.Data.FacilityDesc} desc defines state variable for this facility
+	 * @param {Object.<string, App.Entity.Facilities.Job>} [jobs] job object that are not default
+	 * @param {App.Entity.Facilities.ManagingJob} [manager]
+	 */
+	constructor(desc, jobs, manager) {
+		this.desc = desc;
+		jobs = jobs || {};
+		/** @private @type {Object.<string, App.Entity.Facilities.Job>} */
+		this._jobs = {};
+
+		// if this facility provides only a single job
+		const singleJobFacility = Object.keys(this.desc.jobs).length === 1;
+		for (const jn in this.desc.jobs) {
+			if (jobs[jn] !== undefined) {
+				this._jobs[jn] = jobs[jn];
+			} else {
+				this._jobs[jn] = singleJobFacility ? new App.Entity.Facilities.FacilitySingleJob() : new App.Entity.Facilities.Job();
+			}
+			this._jobs[jn].facility = this;
+			this._jobs[jn].desc = desc.jobs[jn];
+		}
+
+		if (manager === undefined) {
+			// default manager job implementation
+			manager = (this.desc.manager !== null) ? new App.Entity.Facilities.ManagingJob() : null;
+		}
+		/** @private */
+		this._manager = manager;
+		if (this._manager !== null) {
+			this._manager.facility = this;
+			this._manager.desc = this.desc.manager;
+		}
+	}
+
+	/** Facility display name
+	 * @returns {string} */
+	get name() {
+		const res = State.variables[this.desc.baseName + "Name"];
+		return res !== undefined ? res : 'the ' + this.genericName;
+	}
+
+	/** Facility generic name ("Brothel", "Schoolroom", etc.)
+	 * @returns {string} */
+	get genericName() {
+		return this.desc.genericName !== null ? this.desc.genericName : capFirstChar(this.desc.baseName);
+	}
+
+	/** All jobs at this facility
+	 * @returns {string[]}
+	 */
+	get jobsNames() {
+		return Object.keys(this.desc.jobs);
+	}
+
+	/**
+	 * Returns job description
+	 * @param {string} name
+	 * @returns {App.Entity.Facilities.Job}
+	 */
+	job(name) {
+		return this._jobs[name];
+	}
+
+	get manager() {
+		return this._manager;
+	}
+
+	/** Facility slave capacity
+	* @returns {number} */
+	get capacity() {
+		return State.variables[this.desc.baseName];
+	}
+
+	get established() {
+		return this.capacity > 0;
+	}
+
+	/** Number of already hosted slaves
+	 * @returns {number} */
+	get hostedSlaves() {
+		return State.variables[this.desc.baseName + "Slaves"];
+	}
+
+	get hasFreeSpace() {
+		return this.capacity > this.hostedSlaves;
+	}
+
+	/**
+	 *
+	 * @param {string} name
+	 * @returns {number}
+	 */
+	option(name) {
+		return State.variables[this.desc.baseName + name];
+	}
+
+	/**
+	 *
+	 * @param {string} name
+	 * @returns {number}
+	 */
+	upgrade(name) {
+		return this.option("Upgrade" + name);
+	}
+
+	/**
+	 * Can this facility host the given slave
+	 * @param {App.Entity.SlaveState} slave
+	 * @param {string} [job]
+	 * @returns {string[]} array with rejection reasons. Slave can be hosted if this is empty.
+	 */
+	canHostSlave(slave, job) {
+		job = job || this.desc.defaultJob;
+		const j = this.job(job);
+		if (j === undefined) {
+			console.log(`Can't find job ${job} at ${this.name}.`); // eslint-disable-line no-console
+		}
+		// if there are more than one jobs at this facility, test them too
+		if (Object.keys(this.desc.jobs).length > 1 && this.isHosted(slave)) {
+			return [`${slave.slaveName} is already assigned to ${slave.assignment} at ${this.name}.`];
+		}
+		let r = j.canEmploy(slave);
+		return r;
+	}
+
+	/**
+	 * Does the given slave work at this facility
+	 * @param {App.Entity.SlaveState} slave
+	 * @returns {boolean}
+	 */
+	isHosted(slave) {
+		for (const j in this._jobs) {
+			if (this._jobs[j].isEmployed(slave)) return true;
+		}
+
+		return false;
+	}
+
+	/**
+	 * Returns link text for the job assignments
+	 * @param {number} i slave index
+	 * @param {string} [job] generate link only for this job
+	 * @param {string} [passage]
+	 * @param {linkCallback} callback
+	 * @returns {string[]}
+	 */
+	assignmentLinks(i, job, passage, callback) {
+		/** @type {App.Entity.SlaveState} */
+		const slave = App.Utils.slaveByIndex(i);
+		const jobs = job === undefined ? this._jobs : {job: this._jobs[job]};
+
+		let res = []
+		for (const jn in jobs) {
+			const j = jobs[jn];
+			let rejects = j.canEmploy(slave);
+			if (rejects.length === 0) {
+				res.push(j.assingmentLink(i, passage, callback));
+			} else {
+				res.push(App.UI.disabledLink(j.desc.position, rejects));
+			}
+		}
+		return res
+	}
+
+	/**
+	 * Returns link text for the facility transfer
+	 * @param {number} i slave index
+	 * @param {string} [job] transfer to this job (uses default job if this is undefined)
+	 * @param {string} [passage]
+	 * @param {linkCallback} [callback]
+	 * @returns {string}
+	 */
+	transferLink(i, job, passage, callback) {
+		job = job || this.desc.defaultJob;
+		return this._jobs[job].assingmentLink(i, passage, callback, this.genericName);
+	}
+}
+
+/**
+ * Job for a facility with a single job option
+ */
+App.Entity.Facilities.FacilitySingleJob = class extends App.Entity.Facilities.Job {
+	/**
+	 * Returns link text for the penthhouse assignment
+	 * @param {number} i slave index
+	 * @param {string} [passage] passage to go to
+	 * @param {linkCallback} [callback]
+	 * @param {string} [linkText]
+	 * @returns {string}
+	 */
+	assingmentLink(i, passage, callback, linkText) {
+		linkText = linkText || this.facility.genericName;
+		const linkAction = callback !== undefined ? callback(this.desc.assignment) : '';
+		const psg = passage === undefined ? '' : `, $returnTo = "${passage}"`;
+		return `<<link "${linkText}" "Assign">><<set $assignTo = "${this.facility.genericName}", $i = ${i}${psg}>>${linkAction}<</link>>`;
+	}
+}
+
+/** Instances of all facility objects */
+App.Entity.facilities = {};
diff --git a/src/SecExp/rebellionOptions.tw b/src/SecExp/rebellionOptions.tw
index 68818878f8c82f423c0d1cc6adea78d016fa7337..b4ddcc7b62902b3cc598c05f20e0df91653723a1 100644
--- a/src/SecExp/rebellionOptions.tw
+++ b/src/SecExp/rebellionOptions.tw
@@ -205,10 +205,10 @@
 <br>
 The confined spaces of the arcology and the number of vital yet delicate systems within its walls do not allow a lot of tactical flexibility. This will be a long and strenuous fight, street after street, barricade after barricade.
 In order to preserve the structural integrity of the building and the lives of our civilians, we will have to limit our firepower.
-<br><<link "Only light firearms and non lethal weapons">>
+<br><<link "Only light firearms and nonlethal weapons">>
 	<<set $engageRule = 0>>
 	<<replace "#engage">>
-		<br>Your troops will use only non lethal weapons or light firearms to limit to the maximum the collateral damage. This will however weaken our troops considerably.
+		<br>Your troops will use only nonlethal weapons or light firearms to limit to the maximum the collateral damage. This will however weaken our troops considerably.
 	<</replace>>
 <</link>>
 <br><<link "No heavy ordnance">>
@@ -234,7 +234,7 @@ In order to preserve the structural integrity of the building and the lives of o
 <</if>>
 
 <span id="engage">
-	<br>Your troops will use only non lethal weapons or light firearms to limit to the maximum the collateral damage. This will however weaken our troops considerably.
+	<br>Your troops will use only nonlethal weapons or light firearms to limit to the maximum the collateral damage. This will however weaken our troops considerably.
 </span>
 
 <br>
diff --git a/src/SecExp/rebellionReport.tw b/src/SecExp/rebellionReport.tw
index a06b66940ac18918f9811c6c628a644ef867bbda..de82a59cda086e76adce24fd7102adbd55debe29 100644
--- a/src/SecExp/rebellionReport.tw
+++ b/src/SecExp/rebellionReport.tw
@@ -345,7 +345,7 @@
 /* engage rules */
 <<if $battleResult != -1>>
 	<<if $engageRule == 0>>
-		Since you ordered your troops to limit their weaponry to low caliber or non lethal, the arcology reported only @@.red;minor damage.@@ Most citizens and non involved slaves remained unharmed, though some casualties between the civilians were inevitable.
+		Since you ordered your troops to limit their weaponry to low caliber or nonlethal, the arcology reported only @@.red;minor damage.@@ Most citizens and non involved slaves remained unharmed, though some casualties between the civilians were inevitable.
 		A few businesses were looted and burned, but the damage was pretty limited.
 		<<set $arcRepairTime += 3, IncreasePCSkills('engineering',  0.1)>>
 		<<if $week <= 30>>
diff --git a/src/SecExp/secExpSmilingMan.tw b/src/SecExp/secExpSmilingMan.tw
index 0a3aff3d0c1d89e552566b11bca3b29fbbd7e43d..597770b741f354f355e827c9272242b6ea89d551 100644
--- a/src/SecExp/secExpSmilingMan.tw
+++ b/src/SecExp/secExpSmilingMan.tw
@@ -281,7 +281,7 @@
 	<<set $activeSlave.skill.vaginal = 0>>
 	<<set $activeSlave.skill.oral = 0>>
 	<<set $activeSlave.skill.anal = 0>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.entertainment = 0>>
 	<<set $activeSlave.birthWeek = random(0,50)>>
 	<<set $activeSlave.voice = 2>>
diff --git a/src/SecExp/widgets/unitsWidgets.tw b/src/SecExp/widgets/unitsWidgets.tw
index 82de323530900a1a432dd7cb745b117784a97ce1..bbe7a6a9d0717a7832aead23aec9d8389412aa1b 100644
--- a/src/SecExp/widgets/unitsWidgets.tw
+++ b/src/SecExp/widgets/unitsWidgets.tw
@@ -143,7 +143,7 @@
 		<strong>The <<print $secBots.troops>> security drones</strong> are assembled in an ordered line in front of you, absolutely silent and ready to receive their orders.
 		<<if $secBots.troops < $secBots.maxTroops>> The unit is not at its full strength of $secBots.maxTroops drones.<</if>>
 		<<if $secBots.equip == 0>>
-			They are equipped with light weaponry, mainly anti-riot non lethal weapons. Not particularly effective in battle.
+			They are equipped with light weaponry, mainly anti-riot nonlethal weapons. Not particularly effective in battle.
 		<<elseif $secBots.equip == 1>>
 			They are equipped with light firearms, not an overwhelming amount of firepower, but with their mobility good enough to be effective.
 		<<elseif $secBots.equip == 2>>
diff --git a/src/SpecialForce/TrickShotNight.tw b/src/SpecialForce/TrickShotNight.tw
index 8d6a4eeb6444b1c6ea3bddcdbac0592f5cc0bdca..2463e042dabf46996eaa6c88f4b8fdf658e5056d 100644
--- a/src/SpecialForce/TrickShotNight.tw
+++ b/src/SpecialForce/TrickShotNight.tw
@@ -94,7 +94,7 @@ Despite your direct elevator, interaction with the majority of your security for
 			<</if>>
 			<<set $activeSlave.anus = 0>>
 			<<set $activeSlave.skill.anal = 0>>
-			<<set $activeSlave.skill.whore = 0>>
+			<<set $activeSlave.skill.whoring = 0>>
 			<<set $activeSlave.skill.combat = 1>>
 			<<set $activeSlave.accent = random(0,1)>>
 			<<set $activeSlave.behavioralFlaw = "arrogant">>
diff --git a/src/cheats/mod_EditChildCheatDatatypeCleanupNew.tw b/src/cheats/mod_EditChildCheatDatatypeCleanupNew.tw
index c3b46e51183a385078ee190b16359cb7f52f568b..dc30d71ae634eb35eef65b2922addeca1d262f20 100644
--- a/src/cheats/mod_EditChildCheatDatatypeCleanupNew.tw
+++ b/src/cheats/mod_EditChildCheatDatatypeCleanupNew.tw
@@ -238,12 +238,12 @@
 	<<print "Anal Skill Value set too high, reset to 100">><br>
 	<<set $tempSlave.skill.anal = 100>>
 <</if>>
-<<if $tempSlave.skill.whore < 0>>
+<<if $tempSlave.skill.whoring < 0>>
 	<<print "Whoring Skill Value set too low, reset to 0">><br>
-	<<set $tempSlave.skill.whore = 0>>
-<<elseif $tempSlave.skill.whore > 100>>
+	<<set $tempSlave.skill.whoring = 0>>
+<<elseif $tempSlave.skill.whoring > 100>>
 	<<print "Whoring Skill Value set too high, reset to 100">><br>
-	<<set $tempSlave.skill.whore = 100>>
+	<<set $tempSlave.skill.whoring = 100>>
 <</if>>
 <<if $tempSlave.skill.entertainment < 0>>
 	<<print "Entertainment Skill Value set too low, reset to 0">><br>
diff --git a/src/cheats/mod_EditChildCheatNew.tw b/src/cheats/mod_EditChildCheatNew.tw
index 590e1edc57828ca34529d500456fc52bec62bc02..e9ecbd8466d81e66c336fbe24382a78013718c36 100644
--- a/src/cheats/mod_EditChildCheatNew.tw
+++ b/src/cheats/mod_EditChildCheatNew.tw
@@ -2111,24 +2111,24 @@
 	<<radiobutton "$tempSlave.skill.anal" 100>> Masterful
 	<br>
 	''Prostitution (0 to 100):''
-	<<if $tempSlave.skill.whore <= 10>>
+	<<if $tempSlave.skill.whoring <= 10>>
 		@@.yellow;Unskilled@@.
-	<<elseif $tempSlave.skill.whore <= 30>>
+	<<elseif $tempSlave.skill.whoring <= 30>>
 		@@.cyan;Basic.@@
-	<<elseif $tempSlave.skill.whore <= 60>>
+	<<elseif $tempSlave.skill.whoring <= 60>>
 		@@.cyan;Skilled.@@
-	<<elseif $tempSlave.skill.whore < 100>>
+	<<elseif $tempSlave.skill.whoring < 100>>
 		@@.cyan;Expert.@@
 	<<else>>
 		@@.cyan;Masterful.@@
 	<</if>>
-	<<textbox "$tempSlave.skill.whore" $tempSlave.skill.whore>>
+	<<textbox "$tempSlave.skill.whoring" $tempSlave.skill.whoring>>
 	<br>
-	<<radiobutton "$tempSlave.skill.whore" 0>> Unskilled
-	<<radiobutton "$tempSlave.skill.whore" 15>> Basic
-	<<radiobutton "$tempSlave.skill.whore" 35>> Skilled
-	<<radiobutton "$tempSlave.skill.whore" 65>> Expert
-	<<radiobutton "$tempSlave.skill.whore" 100>> Masterful
+	<<radiobutton "$tempSlave.skill.whoring" 0>> Unskilled
+	<<radiobutton "$tempSlave.skill.whoring" 15>> Basic
+	<<radiobutton "$tempSlave.skill.whoring" 35>> Skilled
+	<<radiobutton "$tempSlave.skill.whoring" 65>> Expert
+	<<radiobutton "$tempSlave.skill.whoring" 100>> Masterful
 
 	<br>
 
diff --git a/src/cheats/mod_EditSlaveCheat.tw b/src/cheats/mod_EditSlaveCheat.tw
index 6e9ea80974bd64e98055212f081b094f648d989e..e425afbe7bd7b5b01daf009460291899d29b407f 100644
--- a/src/cheats/mod_EditSlaveCheat.tw
+++ b/src/cheats/mod_EditSlaveCheat.tw
@@ -1066,24 +1066,24 @@ Monstrous.
 <br><br>
 
 ''Prostitution (0 to 100):''
-<<if $tempSlave.skill.whore <= 10>>
+<<if $tempSlave.skill.whoring <= 10>>
 Unskilled.
-<<elseif $tempSlave.skill.whore <= 30>>
+<<elseif $tempSlave.skill.whoring <= 30>>
 @@.cyan;Basic.@@
-<<elseif $tempSlave.skill.whore <= 60>>
+<<elseif $tempSlave.skill.whoring <= 60>>
 @@.cyan;Skilled.@@
-<<elseif $tempSlave.skill.whore < 100>>
+<<elseif $tempSlave.skill.whoring < 100>>
 @@.cyan;Expert.@@
 <<else>>
 @@.cyan;Masterful.@@
 <</if>>
-<<textbox "$tempSlave.skill.whore" $tempSlave.skill.whore>>
+<<textbox "$tempSlave.skill.whoring" $tempSlave.skill.whoring>>
 <br>
-<<radiobutton "$tempSlave.skill.whore" 0>> Unskilled
-<<radiobutton "$tempSlave.skill.whore" 15>> Basic
-<<radiobutton "$tempSlave.skill.whore" 35>> Skilled
-<<radiobutton "$tempSlave.skill.whore" 65>> Expert
-<<radiobutton "$tempSlave.skill.whore" 100>> Masterful
+<<radiobutton "$tempSlave.skill.whoring" 0>> Unskilled
+<<radiobutton "$tempSlave.skill.whoring" 15>> Basic
+<<radiobutton "$tempSlave.skill.whoring" 35>> Skilled
+<<radiobutton "$tempSlave.skill.whoring" 65>> Expert
+<<radiobutton "$tempSlave.skill.whoring" 100>> Masterful
 
 <br>
 
diff --git a/src/cheats/mod_editSlaveCheatNew.tw b/src/cheats/mod_editSlaveCheatNew.tw
index 96c9fdb3d36412e57cf4d81e05471fcbef26f431..3158bdcdcd3a182fb203dfcf42246d82ca30b7b4 100644
--- a/src/cheats/mod_editSlaveCheatNew.tw
+++ b/src/cheats/mod_editSlaveCheatNew.tw
@@ -1963,10 +1963,10 @@
 	<<radiobutton "$tempSlave.eyes" -2>> Blind
 	<br>
 	''$He has ''
-	<<if $tempSlave.eyesImplant == 0>>normal<<else>>artificial<</if>>eyes.
+	<<if $tempSlave.eyesImplant == 0>>normal<<else>>artificial<</if>> eyes.
 	<br>
-	<<radiobutton "tempSlave.eyesImplant" 0>> Normal
-	<<radiobutton "tempSlave.eyesImplant" 1>> Artificial
+	<<radiobutton "$tempSlave.eyesImplant" 0>> Normal
+	<<radiobutton "$tempSlave.eyesImplant" 1>> Artificial
 	<br>
 <</widget>>
 
@@ -2915,24 +2915,24 @@
 	<<radiobutton "$tempSlave.skill.anal" 100>> Masterful
 	<br>
 	''Prostitution (0 to 100):''
-	<<if $tempSlave.skill.whore <= 10>>
+	<<if $tempSlave.skill.whoring <= 10>>
 		@@.yellow;Unskilled@@.
-	<<elseif $tempSlave.skill.whore <= 30>>
+	<<elseif $tempSlave.skill.whoring <= 30>>
 		@@.cyan;Basic.@@
-	<<elseif $tempSlave.skill.whore <= 60>>
+	<<elseif $tempSlave.skill.whoring <= 60>>
 		@@.cyan;Skilled.@@
-	<<elseif $tempSlave.skill.whore < 100>>
+	<<elseif $tempSlave.skill.whoring < 100>>
 		@@.cyan;Expert.@@
 	<<else>>
 		@@.cyan;Masterful.@@
 	<</if>>
-	<<textbox "$tempSlave.skill.whore" $tempSlave.skill.whore>>
+	<<textbox "$tempSlave.skill.whoring" $tempSlave.skill.whoring>>
 	<br>
-	<<radiobutton "$tempSlave.skill.whore" 0>> Unskilled
-	<<radiobutton "$tempSlave.skill.whore" 15>> Basic
-	<<radiobutton "$tempSlave.skill.whore" 35>> Skilled
-	<<radiobutton "$tempSlave.skill.whore" 65>> Expert
-	<<radiobutton "$tempSlave.skill.whore" 100>> Masterful
+	<<radiobutton "$tempSlave.skill.whoring" 0>> Unskilled
+	<<radiobutton "$tempSlave.skill.whoring" 15>> Basic
+	<<radiobutton "$tempSlave.skill.whoring" 35>> Skilled
+	<<radiobutton "$tempSlave.skill.whoring" 65>> Expert
+	<<radiobutton "$tempSlave.skill.whoring" 100>> Masterful
 
 	<br>
 
diff --git a/src/endWeek/minorInjuryResponse.js b/src/endWeek/minorInjuryResponse.js
index 23072e1dd9549d5103b6b049aca63e313814e04b..8781ec6293afa63c2dc282585523c754f58bf6ba 100644
--- a/src/endWeek/minorInjuryResponse.js
+++ b/src/endWeek/minorInjuryResponse.js
@@ -18,7 +18,7 @@ window.minorInjuryResponse = /** @param {App.Entity.SlaveState} slave */ functio
 		} else if (arcologyUpgrade.grid === 1 && jsRandom(1, 100) > 50) {
 			r += ` The computer systems successfully detain him and require him to pay significant <span class="yellowgreen">compensation,</span> since abusing slaves is discouraged here.`;
 			cashX(50, "slaveUpkeep", slave);
-		} else if (slave.skill.whore > jsRandom(1, 100)) {
+		} else if (slave.skill.whoring > jsRandom(1, 100)) {
 			r += ` ${slave.slaveName} is used to this sort of thing, and convinces him to pay significant <span class="yellowgreen">compensation,</span> since abusing slaves is discouraged here.`;
 			cashX(50, "slaveUpkeep", slave);
 		} else if (slave.skill.combat > 0) {
@@ -32,7 +32,7 @@ window.minorInjuryResponse = /** @param {App.Entity.SlaveState} slave */ functio
 		} else if (arcologyUpgrade.grid === 1 && jsRandom(1, 100) > 50) {
 			r += ` The computer systems successfully detain him and require him to pay minor <span class="yellowgreen">compensation.</span>`;
 			cashX(10, "slaveUpkeep", slave);
-		} else if (slave.skill.whore > jsRandom(1, 100)) {
+		} else if (slave.skill.whoring > jsRandom(1, 100)) {
 			r += ` ${slave.slaveName} is used to this sort of thing, and convinces him to pay minor <span class="yellowgreen">compensation.</span>`;
 			cashX(10, "slaveUpkeep", slave);
 		} else if (slave.skill.combat > 0) {
diff --git a/src/endWeek/saServeThePublic.js b/src/endWeek/saServeThePublic.js
index 669263d8e1671265fd69114807badc9bda13f560..366c7736815a4cb4e84a7f433c07f9df4d7e3c36 100644
--- a/src/endWeek/saServeThePublic.js
+++ b/src/endWeek/saServeThePublic.js
@@ -38,7 +38,7 @@ window.saServeThePublic = (function saServeThePublic() {
 		sexCounts(slave);
 		jobPreface(slave);
 		bonusMultiplierText(slave);
-		usageCountDescripions(slave);
+		usageCountDescriptions(slave);
 		if (V.seeAge === 1) {
 			comingOfAge(slave);
 		}
@@ -199,7 +199,7 @@ window.saServeThePublic = (function saServeThePublic() {
 	}
 
 	/** @param {App.Entity.SlaveState} slave */
-	function usageCountDescripions(slave) {
+	function usageCountDescriptions(slave) {
 		r += ` ${His} appearance attracted ${slave.sexAmount} members of the public (${Math.trunc(slave.sexAmount / 7)} a day)`;
 		if (slave.sexAmount > 160) {
 			r += `, so many that `;
@@ -534,7 +534,7 @@ window.saServeThePublic = (function saServeThePublic() {
 	function publicReactions(slave) {
 		let sstp;
 
-		if (slave.releaseRules === "restrictive" && slave.standardReward !== "orgasm") {
+		if ((slave.releaseRules === "restrictive" || slave.releaseRules === "chastity") && slave.standardReward !== "orgasm") {
 			r += ` ${He}'s a better slut because public service is ${his} main sexual outlet.`;
 		}
 
@@ -1192,7 +1192,7 @@ window.saServeThePublic = (function saServeThePublic() {
 	/** @param {App.Entity.SlaveState} slave */
 	function addRep(slave) {
 		if (slave.assignment !== "recruit girls") {
-			if (slave.assignment === "serve in the club") {
+			if (slave.assignment === "serve in the club" || slave.assignment ===  "be the DJ") {
 				repX(Math.trunc((slave.sexAmount * slave.sexQuality) * (1 + (0.003 * slave.skill.entertainment)) * 0.15), "publicServantClub", slave);
 			} else if (slave.assignment === "serve the public") {
 				repX(Math.trunc((slave.sexAmount * slave.sexQuality) * (1 + (0.003 * slave.skill.entertainment)) * 0.15), "publicServant", slave);
diff --git a/src/endWeek/saWhore.js b/src/endWeek/saWhore.js
new file mode 100644
index 0000000000000000000000000000000000000000..91a818e2e3f9bc326669d62bcf3a37661345c3ec
--- /dev/null
+++ b/src/endWeek/saWhore.js
@@ -0,0 +1,1707 @@
+window.saWhore = (function saWhore() {
+	"use strict";
+	let V;
+	let T;
+	let r;
+	let arcology;
+
+	// if the following are set outside this file, they must be set in it too!
+	let beauty;
+	let FuckResult;
+	let cash;
+
+	let beautyMultiplier;
+	let beautyCorrection;
+	let cervixPump;
+	let pronouns;
+	let he, him, his, hers, himself, girl, loli, He, His;
+
+	// if the following are set outside this file, they must be set in it too!
+	let oralUse;
+	let analUse;
+	let vaginalUse;
+	let mammaryUse;
+	let penetrativeUse;
+
+	return saWhore;
+
+	/** @param {App.Entity.SlaveState} slave */
+	function saWhore(slave) {
+		V = State.variables;
+		T = State.temporary;
+		arcology = V.arcologies[0];
+		r = ` `;
+		pronouns = getPronouns(slave);
+		he = pronouns.pronoun, him = pronouns.object, his = pronouns.possessive, hers = pronouns.possessivePronoun, himself = pronouns.objectReflexive, girl = pronouns.noun;
+		He = capFirstChar(he), His = capFirstChar(his);
+		girl === "girl" ? loli = "loli" : loli = "shota";
+
+		gatherStatistics(slave);
+		updateNonSlaveVariables(slave); // must be run before applyFSDecoration() or you will face NaNs
+		if (slave.assignment === "work in the brothel") {
+			// By being at the end, every slave after the first will get a bonus. By moving it up, the first can enjoy it too. slaveJobValues() checks Edo Rivalist, so here we are.
+			applyFSDecoration(slave);
+		}
+		addCash(slave);
+		sexCounts(slave);
+		jobPreface(slave);
+		bonusMultiplierText(slave);
+		usageCountDescriptions(slave);
+		if (V.seeAge === 1) {
+			comingOfAge(slave);
+		}
+		mentalEffects(slave);
+		physicalEffects(slave);
+		slaveSkills(slave);
+		if (V.showEWM === 1) {
+			publicReactions(slave);
+		}
+		if (slave.sexualFlaw === "none") {
+			addFlaw(slave);
+		}
+		addCashText(slave);
+		sexualSatiation(slave);
+		if (V.showVignettes === 1) {
+			assignmentVignette(slave);
+		}
+
+		return r;
+	}
+
+	/** @param {App.Entity.SlaveState} slave */
+	function gatherStatistics(slave) {
+		/* Statistics gathering */
+		const facility = slave.assignment === Job.BROTHEL ? V.facility.brothel : undefined;
+		T.incomeStats = getSlaveStatisticData(slave, facility);
+	}
+
+	// I suspect this one will mostly be cut out in the overhauling
+	/** @param {App.Entity.SlaveState} slave */
+	function updateNonSlaveVariables(slave) {
+		// FResult setting
+		FuckResult = FResult(slave);
+		//slave needs release
+		if ((slave.releaseRules === "restrictive" || slave.releaseRules === "chastity") && slave.standardReward !== "orgasm" && slave.energy >= 20) {
+			FuckResult += 2;
+		}
+		if (V.ACitizens > (V.ASlaves * 4)) {
+			FuckResult = Math.trunc(FuckResult * 1.1);
+		} else if (V.ACitizens > (V.ASlaves * 2)) {
+			FuckResult = Math.trunc(FuckResult * 1);
+		} else if (V.ACitizens > V.ASlaves) {
+			FuckResult = Math.trunc(FuckResult * 0.95);
+		} else if (V.ACitizens > (V.ASlaves * 0.5)) {
+			FuckResult = Math.trunc(FuckResult * 0.9);
+		} else {
+			FuckResult = Math.trunc(FuckResult * 0.85);
+		}
+		if (canDoVaginal(slave) && slave.vagina === 0) {
+			FuckResult += 5;
+		}
+		if (canDoAnal(slave) && slave.anus === 0) {
+			FuckResult += 10;
+		}
+
+		// Beauty setting
+		beauty = Beauty(slave);
+		if (V.ACitizens > (V.ASlaves * 4)) {
+			beauty = Math.trunc(beauty * 1.1);
+		} else if (V.ACitizens > (V.ASlaves * 2)) {
+			beauty = Math.trunc(beauty * 1);
+		} else if (V.ACitizens > V.ASlaves) {
+			beauty = Math.trunc(beauty * 0.95);
+		} else if (V.ACitizens > (V.ASlaves * 0.5)) {
+			beauty = Math.trunc(beauty * 0.9);
+		} else {
+			beauty = Math.trunc(beauty * 0.85);
+		}
+		if (slave.sexualFlaw === "neglectful") {
+			beauty = Math.trunc(beauty * 1.1);
+		}
+		if (slave.assignment === "be the Madam") {
+			if (V.brothelSlaves + V.slavesGettingHelp > 0) {
+				beauty = Math.trunc(beauty * ((10 - V.brothelSlaves - V.slavesGettingHelp) / 10));
+			}
+		}
+		if (slave.minorInjury !== 0) {
+			beauty -= 1;
+		}
+
+		// Beauty multipliers
+		beautyMultiplier = 1;
+		if (V.brothel > 0) {
+			if ((V.universalRulesFacilityWork === 1 && slave.assignment === "whore" && V.brothelSpots > 0) || (slave.assignment === "work in the brothel")) {
+				if (slave.assignment === "whore") {
+					V.brothelSpots -= 1;
+				}
+				// ads
+				if (V.brothelAdsSpending !== 0) {
+					if (V.brothelAdsStacked === 1) {
+						if (isStacked(slave)) {
+							beautyMultiplier += 0.05;
+						}
+					} else if (V.brothelAdsStacked === -1) {
+						if (isSlim(slave)) {
+							beautyMultiplier += 0.05;
+						}
+					}
+					if (V.brothelAdsPreg === 1) {
+						if (slave.bellyPreg >= 5000 || slave.bellyImplant >= 5000) {
+							beautyMultiplier += 0.05;
+						}
+					} else if (V.brothelAdsPreg === -1) {
+						if (slave.belly < 100 && slave.weight < 30 && !setup.fakeBellies.includes(slave.bellyAccessory) && slave.bellyImplant <= 0) {
+							beautyMultiplier += 0.05;
+						}
+					}
+					if (V.brothelAdsModded === 1) {
+						if ((V.modScore > 15) || (V.piercingScore > 8 && V.tatScore > 5)) {
+							beautyMultiplier += 0.05;
+						}
+					} else if (V.brothelAdsModded === -1) {
+						if (slave.corsetPiercing === 0 && V.piercingScore < 3 && V.tatScore < 2) {
+							beautyMultiplier += 0.05;
+						}
+					}
+					if (V.brothelAdsImplanted === 1) {
+						if (slave.boobsImplant > 0 && slave.buttImplant > 0 && slave.waist < -10 && slave.lipsImplant > 0) {
+							beautyMultiplier += 0.05;
+						}
+					} else if (V.brothelAdsImplanted === -1) {
+						if (slave.boobsImplant === 0 && slave.buttImplant === 0 && slave.waist >= -95 && slave.lipsImplant === 0 && slave.bellyImplant === -1 && slave.faceImplant < 30) {
+							beautyMultiplier += 0.05;
+						}
+					}
+					if (V.brothelAdsOld === 1) {
+						if (slave.physicalAge >= 30) {
+							beautyMultiplier += 0.05;
+						}
+					} else if (V.brothelAdsOld === -1) {
+						if (slave.physical < 30 && slave.physical >= 18) {
+							beautyMultiplier += 0.05;
+						}
+					} else if (V.brothelAdsOld === -2) {
+						if (slave.physical <= 18 && slave.physical >= 13) {
+							beautyMultiplier += 0.05;
+						}
+					} else if (V.brothelAdsOld === -3) {
+						if (slave.physical < 13) {
+							beautyMultiplier += 0.05;
+						}
+					}
+					if (V.brothelAdsXX === 1) {
+						if (slave.dick === 0 && slave.scrotum === 0) {
+							beautyMultiplier += 0.05;
+						}
+					} else if (V.brothelAdsXX === -1) {
+						if (slave.dick > 0) {
+							beautyMultiplier += 0.05;
+						}
+					}
+				}
+				if (V.Madam !== 0) {
+					if (V.madamCashBonus > 0) {
+						if (!canHear(slave)) {
+							beautyMultiplier += V.madamCashBonus * 0.5;
+						} else {
+							beautyMultiplier += V.madamCashBonus;
+						}
+					}
+				}
+			}
+		}
+
+		// setting and adjustments
+		beauty = Math.trunc(beauty * beautyMultiplier);
+		if ((slave.hears === -1 && slave.earwear !== "hearing aids") || (slave.hears === 0 && slave.earwear === "muffling ear plugs") ||(slave.hears === -2)) {
+			if (!canHear(slave)) {
+				beauty *= .75;
+			} else {
+				beauty *= .90;
+			}
+		}
+		if (beauty > 210) {
+			beautyCorrection = beauty / 210;
+			beauty = 210;
+			FuckResult = Math.trunc(beautyCorrection * FuckResult);
+		}
+		T.incomeStats.customers = beauty;
+	}
+
+	/** @param {App.Entity.SlaveState} slave */
+	function jobPreface(slave) {
+		if (slave.devotion > 95 || slave.energy > 95) {
+			r += `enthusiastically sells`;
+		} else if (slave.devotion > 50) {
+			r += `willingly sells`;
+		} else if (slave.devotion > 20) {
+			r += `obediently sells`;
+		} else if (slave.trust < -20) {
+			r += `reluctantly sells`;
+		} else {
+			r += `is forced to sell`;
+		}
+		r += ` ${his} body.`;
+	}
+
+	/** @param {App.Entity.SlaveState} slave */
+	function bonusMultiplierText(slave) {
+		if (V.brothel > 0) {
+			if ((V.universalRulesFacilityWork === 1 && slave.assignment === "whore" && V.brothelSpots > 0) || (slave.assignment === "work in the brothel")) {
+				if (slave.assignment === "whore") {
+					r += ` Since there's extra space in ${V.brothelName}, ${he} sells ${himself} there.`;
+				}
+				// ads
+				if (V.brothelAdsSpending !== 0) {
+					if (V.brothelAdsStacked === 1) {
+						if (isStacked(slave)) {
+							r += ` ${His} stacked body fits ${V.brothelName}'s ad campaign, getting ${him} more business.`;
+						}
+					} else if (V.clubAdsStacked === -1) {
+						if (isSlim(slave)) {
+							r += ` ${His} slim body fits ${V.brothelName}'s ad campaign, getting ${him} more business.`;
+						}
+					}
+					if (V.brothelAdsPreg === 1) {
+						if (slave.bellyPreg >= 5000 || slave.bellyImplant >= 5000) {
+							r += ` ${His} gravid body fits ${V.brothelName}'s ad campaign, getting ${him} more attention.`;
+						}
+					} else if (V.brothelAdsPreg === -1) {
+						if (slave.belly < 100 && slave.weight < 30 && !setup.fakeBellies.includes(slave.bellyAccessory) && slave.bellyImplant <= 0) {
+							r += ` ${His} flat belly fits ${V.brothelName}'s ad campaign, getting ${him} more attention.`;
+						}
+					}
+					if (V.brothelAdsModded === 1) {
+						if ((V.modScore > 15) || (V.piercingScore > 8 && V.tatScore > 5)) {
+							r += ` Body art like ${hers} is a major draw.`;
+						}
+					} else if (V.brothelAdsModded === -1) {
+						if (slave.corsetPiercing === 0 && V.piercingScore < 3 && V.tatScore < 2) {
+							r += ` Very clean bodies like ${hers} are a major draw.`;
+						}
+					}
+					if (V.brothelAdsImplanted === 1) {
+						if (slave.boobsImplant > 0 && slave.buttImplant > 0 && slave.waist < -10 && slave.lipsImplant > 0) {
+							r += ` Many citizens come to ${V.brothelName} looking to rent a plastic slut like ${him}.`;
+						}
+					} else if (V.brothelAdsImplanted === -1) {
+						if (slave.boobsImplant === 0 && slave.buttImplant === 0 && slave.waist >= -95 && slave.lipsImplant === 0 && slave.bellyImplant === -1 && slave.faceImplant < 30) {
+							r += ` Many citizens come to ${V.brothelName} looking to play with a natural ${girl} like ${him}.`;
+						}
+					}
+					if (V.brothelAdsOld === 1) {
+						if (slave.physicalAge >= 30) {
+							r += ` ${He}'s perfect for ${V.brothelName}, whose brand is mature slaves.`;
+						}
+					} else if (V.brothelAdsOld === -1) {
+						if (slave.physical < 30 && slave.physical >= 18) {
+							r += ` ${He}'s perfect for ${V.brothelName}, whose brand is young slaves.`;
+						}
+					} else if (V.brothelAdsOld === -2) {
+						if (slave.physical <= 18 && slave.physical >= 13) {
+							r += ` ${He}'s perfect for ${V.brothelName}, whose brand is teenage slaves.`;
+						}
+					} else if (V.brothelAdsOld === -3) {
+						if (slave.physical < 13) {
+							r += ` ${He}'s perfect for ${V.brothelName}, whose brand is ${loli} slaves.`;
+						}
+					}
+					if (V.brothelAdsXX === 1) {
+						if (slave.dick === 0) {
+							r += ` Almost everyone who comes to ${V.brothelName} is looking to fuck a ${girl} like ${him}.`;
+						}
+					} else if (V.brothelAdsXX === -1) {
+						if (slave.dick > 0) {
+							r += ` Almost everyone who comes to ${V.brothelName} is looking to pound a ${girl} who cums when buttfucked.`;
+						}
+					}
+				}
+				if (V.Madam !== 0) {
+					const madamPronouns = getPronouns(V.Madam);
+					if (V.madamCashBonus > 0) {
+						if (slave.assignment === "whore") {
+							r += ` Working`;
+						} else {
+							r += ` Living and working`;
+						}
+						r += ` out of the brothel, ${he} comes under ${SlaveFullName(V.Madam)}'s `;
+						if (V.madamCashBonus < 0.1) {
+							r += `completely inept`;
+						} else if (V.madamCashBonus < 0.2) {
+							r += `unskilled`;
+						} else if (V.madamCashBonus < 0.3) {
+							r += `skillful`;
+						} else {
+							r += `masterful`;
+						}
+						r += ` leadership.`;
+						if (V.Madam.dick > 2 && canAchieveErection(V.Madam)) {
+							if (slave.devotion <= 20) {
+								r += ` The Madam rapes ${him} when ${he} fails to meet standards.`;
+							} else {
+								r += ` The Madam uses ${madamPronouns.possessive} dick to reward ${him} when ${he} does well and needs some loving.`;
+							}
+						}
+						if (!canHear(slave)) {
+							r += ` Unfortunately, ${his} inability to hear wastes most of ${V.Madam.slaveName}'s advice.`;
+						}
+						if (V.MadamIgnoresFlaws !== 1) {
+							if (!["abusive", "anal addict", "attention whore", "breast growth", "breeder", "cum addict", "malicious", "neglectful", "none", "self hating"].includes(slave.sexualFlaw) && jsRandom(1, 100) > 90) {
+								r += ` ${SlaveFullName(V.Madam)} manages to <span class="green">break</span> ${slave.slaveName} of ${his} sexual flaws.`;
+								slave.sexualFlaw = "none";
+							} else if (slave.behavioralFlaw !== "none" && jsRandom(1, 100) > 90) {
+								r += ` ${SlaveFullName(V.Madam)} manages to <span class="green">break</span> ${slave.slaveName} of ${his} flaws.`;
+								slave.behavioralFlaw = "none";
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+
+	/** @param {App.Entity.SlaveState} slave */
+	function usageCountDescriptions(slave) {
+		r += ` ${His} appearance attracted ${beauty} members of the public (${Math.trunc(beauty / 7)} a day)`;
+		if (beauty > 160) {
+			r += `, so many that `;
+			if (canDoVaginal(slave) && canDoAnal(slave)) {
+				r += `each of ${his} holes was`;
+			} else if (canDoVaginal(slave) || canDoAnal(slave)) {
+				r += `each of ${his} available holes was`;
+			} else {
+				r += `${his} mouth and anywhere else a dick could fit was`;
+			}
+			r += ` often filled by more than one cock`;
+		} else if (beauty > 140) {
+			r += `, so many that ${he} spent much of ${his} time getting gangbanged`;
+		} else if (beauty > 120) {
+			r += `, so many that customers often `;
+			if (canDoAnal(slave) || canDoVaginal(slave)) {
+				r += `spitroasted`;
+			} else {
+				r += `double-teamed`;
+			}
+			r += ` the slut`;
+		} else if (beauty > 100) {
+			r += `, so many that ${he} frequently had sex with multiple customers at once`;
+		} else if (beauty > 70) {
+			r += `, so many that ${he} occasionally had sex with multiple customers at once`;
+		}
+		r += `. They paid ${cashFormat(FuckResult)} on average`;
+		if (beautyCorrection > 1) {
+			r += `, including a premium for being in extremely high demand`;
+		}
+		r += `.`;
+	}
+
+	/** @param {App.Entity.SlaveState} slave */
+	function comingOfAge(slave) {
+		if (slave.physicalAge === V.minimumSlaveAge && slave.physicalAge === V.fertilityAge && canGetPregnant(slave) && (arcology.FSRepopulationFocus !== "unset" || arcology.FSGenderFundamentalist !== "unset") && arcology.FSRestart === "unset") {
+			if (slave.birthWeek === 0) {
+				r += ` ${He} just turned ${V.minimumSlaveAge} this week, giving ${him} an immense boost to both popularity and price. ${He} is also expected to become fertile soon, giving ${him} an additional boost as customers clamor to claim ${his} fresh womb.`;
+			} else if (slave.birthWeek < 4) {
+				r += ` This is still the first month in which it's legal to pay to fuck ${him}, giving ${him} a boost to both popularity and price. ${He} was also anticipated to become fertile this month, and ${his} womb is still unoccupied, giving ${him} an additional boost.`;
+			}
+		} else if (slave.physicalAge === V.minimumSlaveAge) {
+			if (slave.birthWeek === 0) {
+				r += ` ${He} just turned ${V.minimumSlaveAge} this week, giving ${him} an immense boost to both popularity and price.`;
+			} else if (slave.birthWeek < 4) {
+				r += ` This is still the first month in which it's legal to pay to fuck ${him}, giving ${him} a boost to both popularity and price.`;
+			}
+		} else if (slave.physicalAge === V.fertilityAge && canGetPregnant(slave) && (arcology.FSRepopulationFocus !== "unset" || arcology.FSGenderFundamentalist !== "unset")) {
+			if (slave.birthWeek === 0) {
+				r += ` ${He} is expected to become fertile soon, giving ${him} an immense boost to both popularity and price as citizens clamor to claim ${his} fresh womb.`;
+			} else if (slave.birthWeek < 4) {
+				r += ` This is still the first month in which ${he} was anticipated to become fertile, and ${his} womb is still unoccupied, giving ${him} a boost to both popularity and price.`;
+			}
+		}
+	}
+
+	/** @param {App.Entity.SlaveState} slave */
+	function mentalEffects(slave) {
+		if (slave.behavioralQuirk === "sinful") {
+			r += ` ${slave.slaveName} <span class="hotpink">secretly enjoys</span> how utterly sinful and depraved it is for ${him} to sell ${his} body.`;
+			slave.devotion += 1;
+		} else if (slave.behavioralQuirk === "cutting") {
+			r += ` ${slave.slaveName} <span class="hotpink">openly enjoys</span> the direct, frank language of prostitution, and delights customers with cutting remarks even as they fuck ${him}.`;
+			slave.devotion += 1;
+		}
+		if (slave.sexualQuirk === "caring") {
+			r += ` ${slave.slaveName} sees ${his} role as helping people with their sexual needs, and ${he} <span class="mediumaquamarine">trusts that ${his} place</span> in society is an important one.`;
+			slave.trust += 1;
+		}
+		if (slave.assignment === "work in the brothel" && slave.devotion > 50) {
+			r += ` Being so far from your presence <span class="mediumorchid">weakens ${his} intense devotion to you.</span>`;
+		}
+	}
+
+	/** @param {App.Entity.SlaveState} slave */
+	function physicalEffects(slave) {
+		let injury = 0;
+		if (slave.assignment !== "work in the brothel") {
+			if (slave.curatives > 0 || slave.inflationType === "curative") {
+				r += ` The drugs `;
+				if (slave.inflationType === "curative") {
+					r += `${he} holds inside ${his} belly`;
+				} else {
+					r += `${he}'s on`;
+				}
+				r += ` protect ${him} from the wear of whoring.`;
+			} else if (slave.health < -50) {
+				r += ` The stress of whoring while ill is <span class="red">very hard on ${him}.</span>`;
+				slave.health -= 10;
+				injury = 1;
+			} else if (slave.health < -20 && jsRandom(1, 100) > 50) {
+				r += ` The stress of whoring while ill is <span class="red">hard on ${him}.</span>`;
+				slave.health -= 7;
+				injury = 1;
+			} else if (slave.vagina < 0) {
+				if ((slave.skill.anal + slave.skill.oral) >= 200) {
+					r += ` $He's such an expert whore that $he copes with the stress of being a ${SlaveTitle(slave)} slut.`;
+				} else if (jsRandom(1, 100) > (40 + (10 * (slave.skill.anal + slave.skill.oral)))) {
+					r += ` The stress of being a ${SlaveTitle(slave)} prostitute is <span class="red">hard on ${him}.</span>`;
+					slave.health -= 7;
+					injury = 1;
+				}
+			} else if (slave.vagina > 0 && !canDoVaginal(slave)) {
+				if (canDoAnal(slave)) {
+					if ((slave.skill.anal + slave.skill.oral) >= 200) {
+						r += ` ${He}'s such an expert whore that ${he} copes with the stress of being limited to buttsex and oral.`;
+					} else if (jsRandom(1, 100) > (40 + (10 * (slave.skill.anal + slave.skill.oral)))) {
+						r += ` The stress of being limited to buttsex and oral is <span class="red">hard on ${him}.</span>`;
+						slave.health -= 7;
+						injury = 1;
+					}
+				} else {
+					if (slave.skill.oral >= 100) {
+						r += ` ${He}'s such an expert whore that ${he} copes with the stress of being limited to oral.`;
+					} else if (jsRandom(1, 100) > (40 + (10 * slave.skill.oral))) {
+						r += ` The stress of being limited to oral sex is <span class="red">hard on ${him}.</span>`;
+						slave.health -= 7;
+						injury = 1;
+					}
+				}
+			} else if ((slave.skill.anal + slave.skill.oral + slave.skill.vaginal) < 300) {
+				if (jsRandom(1, 100) > (10 + ((slave.skill.anal + slave.skill.oral + slave.skill.vaginal) / 10))) {
+					injury = 1;
+				}
+			}
+		}
+		if (injury === 1) {
+			slave.health -= 3;
+			let injuryChance;
+			if (canDoAnal(slave)) {
+				injuryChance = jsRandom(1, 100);
+			} else {
+				injuryChance = jsRandom(1, 80);
+			}
+			if (injuryChance > 80) {
+				slave.minorInjury = "sore ass";
+				r += ` Rough anal with a careless customer left ${him} with a <span class="red">${slave.minorInjury}.</span>`;
+				r += minorInjuryResponse(slave);
+			} else if (injuryChance > 60) {
+				slave.minorInjury = "black eye";
+				r += ` A violent customer left ${him} with a <span class="red">${slave.minorInjury}.</span>`;
+				r += minorInjuryResponse(slave);
+			} else if (injuryChance > 40) {
+				slave.minorInjury = "split lip";
+				r += ` An abusive customer left ${him} with a <span class="red">${slave.minorInjury}.</span>`;
+				r += minorInjuryResponse(slave);
+			} else if (injuryChance > 20) {
+				slave.minorInjury = "bad bruise";
+				r += ` A rough customer left ${him} with a <span class="red">${slave.minorInjury}.</span>`;
+				r += minorInjuryResponse(slave);
+			} else {
+				slave.minorInjury = "sore muscle";
+				r += ` The hard labor of constant sex left ${him} with a <span class="red">${slave.minorInjury}.</span>`;
+			}
+		}
+
+		if (canDoVaginal(slave)) {
+			if (slave.vagina === 0) {
+				if (slave.aphrodisiacs > 1 || slave.inflationType === "aphrodisiac") {
+					r += ` ${His} virginity goes to the highest bidder, earning ${cashFormat(beauty * 10)}. ${He}'s so full of aphrodisiacs that ${he} <span class="hotpink">enjoys the experience.</span> <span class="lime">${His} pussy is now broken in.</span>`;
+					slave.devotion += 4;
+					slave.vagina = 1;
+				} else if (slave.devotion > 20) {
+					r += ` ${His} virginity goes to the highest bidder, earning ${cashFormat(beauty * 10)}. Losing ${his} virginity in this way <span class="hotpink">confirms ${his} submission to you.</span> <span class="lime">${His} pussy is now broken in.</span>`;
+					slave.devotion += 4;
+					slave.vagina = 1;
+				} else {
+					r += ` ${His} virginity goes to the highest bidder, earning ${cashFormat(beauty * 10)}. ${He} tries to resist, and losing ${his} virginity to a rape makes ${him} <span class="mediumorchid">hate</span> and <span class="gold">fear</span> you a great deal. <span class="lime">${His} pussy is now broken in.</span>`;
+					slave.devotion -= 10;
+					slave.trust -= 10;
+					slave.vagina = 1;
+				}
+			} else if (slave.vagina < 3) {
+				if (jsRandom(1, 100) > ((170 - slave.sexAmount) + (slave.vagina * 10) + (slave.skill.vaginal / 3))) {
+					r += ` <span class="lime">${His} pussy gets loosened by the intense use.</span>`;
+					slave.vagina += 1;
+				}
+			}
+		}
+
+		if (canDoAnal(slave)) {
+			if (slave.anus === 0) {
+				if (slave.aphrodisiacs > 1 || slave.inflationType === "aphrodisiac") {
+					r += ` ${His} tight little anus goes to the highest bidder, earning ${cashFormat(beauty * 5)}. ${He}'s so full of aphrodisiacs that ${he} <span class="hotpink">enjoys the experience.</span> ${His} fresh asshole is fucked all week, and by the end of it <span class="lime">${he} won't sit down.</span>`;
+					slave.devotion += 4;
+					slave.anus = 2;
+				} else if (slave.devotion > 20) {
+					r += ` ${His} tight little anus goes to the highest bidder, earning ${cashFormat(beauty * 5)}. The pain and humiliation <span class="hotpink">confirm ${his} submission to you.</span> ${His} fresh asshole is fucked all week, and by the end of it <span class="lime">${he} won't sit down.</span>`;
+					slave.devotion += 4;
+					slave.anus = 2;
+				} else {
+					r += ` ${His} tight little anus goes to the highest bidder, earning ${cashFormat(beauty * 5)}. The pain and humiliation increases ${his} <span class="mediumorchid">hatred</span> and <span class="gold">fear</span> for you. ${His} fresh asshole is fucked all week, and by the end of it <span class="lime">${he} won't sit down.</span>`;
+					slave.devotion -= 5;
+					slave.trust -= 5;
+					slave.anus = 2;
+				}
+			} else if (slave.anus < 3) {
+				if (slave.vagina < 0) {
+					if (jsRandom(1, 100) > ((150 - slave.sexAmount) + (slave.anus * 10) + (slave.skill.anal / 6))) {
+						r += ` <span class="lime">${His} asshole sees constant use in place of a pussy and loosens.</span>`;
+						slave.anus += 1;
+					}
+				} else if (!canDoVaginal(slave)) {
+					if (jsRandom(1, 100) > ((150 - slave.sexAmount) + (slave.anus * 10) + (slave.skill.anal / 6))) {
+						r += ` <span class="lime">${His} asshole sees constant use in place of ${his} protected pussy and loosens.</span>`;
+						slave.anus += 1;
+					}
+				} else {
+					if (jsRandom(1, 100) > ((160 - slave.sexAmount) + (slave.anus * 10) + (slave.skill.anal / 6))) {
+						r += ` <span class="lime">${His} asshole loosens with constant use.</span>`;
+						slave.anus += 1;
+					}
+				}
+			}
+		}
+	}
+
+	/** @param {App.Entity.SlaveState} slave */
+	function slaveSkills(slave) {
+		let skillIncrease;
+		if (!setup.whoreCareers.includes(slave.career) && slave.skill.whore < V.masteredXP) {
+			slave.skill.whore += jsRandom(1, Math.ceil((slave.intelligence + slave.intelligenceImplant) / 15) + 8);
+		}
+		if (setup.whoreCareers.includes(slave.career)) {
+			r += ` ${He} has sex work experience from ${his} life before ${he} was a slave, making ${him} more effective.`;
+		} else if (slave.skill.entertainer >= V.masteredXP) {
+			r += ` ${He} has experience as a prostitute from working for you, making ${him} more effective.`;
+		}
+
+		if (!canWalk(slave)) {
+			if ((V.universalRulesFacilityWork === 1 && slave.assignment === "whore" && V.brothelSpots > 0) || (slave.assignment === "work in the brothel")) {
+				r += ` Since ${he} can't walk, ${he} spends all of $his time in $his own room in ${V.brothelName}. Customers come in, fuck ${him}, and leave.`;
+			} else {
+				r += ` Since ${he} can't walk, ${he}'s set up so customers can use ${him}, pay and carry on their way.`;
+			}
+		}
+
+		if (slave.skill.whoring > 10 && slave.skill.whoring <= 30) {
+			r += ` As a skilled prostitute, ${he} gets a little more money out of customers.`;
+		} else if (slave.skill.whoring <= 60) {
+			r += ` As an expert prostitute, $he gets more money out of customers.`;
+		} else if (slave.skill.whoring >= 100) {
+			r += ` As a masterful prostitute, $he makes more money.`;
+		}
+		if (slave.amp !== 1) {
+			if (slave.skill.whoring < 100) {
+				slave.skill.whoring += 10 + Math.floor((slave.intelligence + slave.intelligenceImplant) / 32);
+				r += ` ${He} <span class="green">gains experience as a prostitute,</span> and gets better at `;
+				if (slave.skill.whoring <= 30) {
+					r += `basic street smarts.`;
+				} else if (slave.skill.whoring <= 60) {
+					r += `steering clients to more lucrative sex acts.`;
+				} else {
+					r += `squeezing johns for every penny.`;
+				}
+			}
+		}
+
+		if (slave.aphrodisiacs > 1 || slave.inflationType === "aphrodisiac") {
+			r += ` The aphrodisiac cocktail has ${him} so desperately horny that regardless of ${his} personal feelings, ${he} <span class="hotpink">gets off with customers all week.</span> In ${his} drug-addled state ${he} doesn't remember enough to learn sexual skills.`;
+			slave.devotion += 4;
+		} else if (slave.devotion <= 20 && slave.energy <= 95) {
+			if (slave.trust >= -20) {
+				r += ` ${He} tries to refuse being sold as a whore, so ${he} is restrained for sale. ${He} loses a bit of ${himself} to a week of rape, but remembers enough to know <span class="mediumorchid">you're responsible,</span> and <span class="gold">can force ${him} if necessary.</span>`;
+				slave.devotion -= 5;
+				slave.trust -= 5;
+			} else {
+				r += ` ${He} doesn't show much enthusiasm, but the habit of sexual prostitution <span class="hotpink">wears away at ${his} will.</span>`;
+				slave.devotion += 4;
+			}
+		} else {
+			if ((slave.skill.oral + slave.skill.anal >= 200) && ((slave.skill.vaginal >= 100) || !canDoVaginal(slave))) {
+				r += ` ${He}'s a <span class="aquamarine">sexual master</span> `;
+				if (canDoVaginal(slave)) {
+					r += `whose`;
+				} else {
+					r += `and despite `;
+					if (slave.vagina < 0) {
+						r += `${his} lack of a`;
+					} else {
+						r += `the inaccessibility of ${his}`;
+					}
+					r += ` front hole, ${his}`;
+				}
+				r += ` body commands <span class="yellowgreen">a high price.</span> When ${he}'s not `;
+				if (canDoVaginal(slave) && jsRandom(1, 4) === 1) {
+					r += `pleasing the rich with ${his} `;
+					if (slave.prestige > 1 || slave.pornPrestige > 2) {
+						r += `prestigious`;
+					} else {
+						r += `popular`;
+					}
+					r += ` pussy,`;
+				} else if (beauty > 70 && jsRandom(1, 3) === 1) {
+					r += `getting gangbanged,`;
+				} else if (jsRandom(1, 2) === 1) {
+					r += `performing one of ${his} `;
+					if (slave.prestige > 1 || slave.pornPrestige > 2) {
+						r += `famous`;
+					} else {
+						r += `top-tier`;
+					}
+					r += ` blowjobs,`;
+				} else if (canDoAnal(slave)) {
+					r += ` selling access to ${his} `;
+					if (slave.prestige > 1 || slave.pornPrestige > 2) {
+						r += `legendary`;
+					} else {
+						r += `notorious`;
+					}
+					r += ` anus,`;
+				} else {
+					r += ` pleasing the masses with ${his} chest,`;
+				}
+				r += ` ${he} works social gatherings and high society.`;
+			} else {
+				r += ` ${He} shows diligence, and ${his} <span class="green">sexual skills improve,</span> according to what the customers demand`;
+				if (!canDoVaginal(slave)) {
+					r += ` and what's possible for ${him}`;
+				}
+				r += `.`;
+				skillIncrease = (5 + Math.floor((slave.intelligence + slave.intelligenceImplant) / 32) + V.oralUseWeight);
+				r += `${SkillIncrease.Oral(slave, skillIncrease)}`;
+				if (canDoVaginal(slave)) {
+					skillIncrease = (5 + Math.floor((slave.intelligence + slave.intelligenceImplant) / 32) + V.vaginalUseWeight);
+					r += `${SkillIncrease.Vaginal(slave, skillIncrease)}`;
+				}
+				if (canDoAnal(slave)) {
+					skillIncrease = (5 + Math.floor((slave.intelligence + slave.intelligenceImplant) / 32) + V.analUseWeight);
+					r += `${SkillIncrease.Anal(slave, skillIncrease)}`;
+				}
+			}
+		}
+	}
+
+	/** @param {App.Entity.SlaveState} slave */
+	function publicReactions(slave) {
+		let SWi;
+
+		if ((slave.releaseRules === "restrictive" || slave.releaseRules === "chastity") && slave.standardReward !== "orgasm") {
+			r += ` ${He}'s a better whore because prostitution is ${his} main sexual outlet.`;
+		}
+
+		//Someone double check this block
+		if (V.familyTesting === 1) {
+			if (totalRelatives(slave) > 0) {
+				let children = [];
+				children = V.slaves.filter(
+					function(s) {
+						return ((slave.ID === s.father || slave.ID === s.mother || s.ID === slave.father || s.ID === slave.mother || areSisters(slave, s) > 0) && (s.assignment === slave.assignment));
+					}
+				);
+				if (children.length > 2) {
+					r += ` Since ${his} relatives,`;
+					SWi = 0;
+					for (; SWi < children.length; SWi++) {
+						if (SWi < children.length - 1) {
+							r += ` ${children[SWi].slaveName},`;
+						} else {
+							r += ` and ${children[SWi].slaveName},`;
+						}
+					}
+					r += ` are selling themselves too, ${he} earns extra ¤ by working with them.`;
+					if (arcology.FSEgyptianRevivalist > 20) {
+						r += ` Customers are very enthusiastic about being able to participate in incestuous sex like the ancient Egyptians.`;
+					} else if (arcology.FSEgyptianRevivalistIncestPolicy === 1) {
+						r += ` Customers are very enthusiastic about being able to participate in incestuous sex.`;
+					}
+				} else if (children.length > 1) {
+					r += ` Since ${his} relatives, ${children[0].slaveName} and ${children[1].slaveName}, are selling themselves too, ${he} earns extra ¤ by working with them.`;
+					if (arcology.FSEgyptianRevivalist > 20) {
+						r += ` Customers are very enthusiastic about being able to participate in incestuous sex like the ancient Egyptians.`;
+					} else if (arcology.FSEgyptianRevivalistIncestPolicy === 1) {
+						r += ` Customers are very enthusiastic about being able to participate in incestuous sex.`;
+					}
+				} else if (children.length > 0) {
+					const relativePronouns = getPronouns(children[0]);
+					r += ` Since ${his} relative, ${children[0].slaveName}, is selling ${relativePronouns.objectReflexive} too, ${he} earns extra ¤ by working with ${relativePronouns.object}.`;
+					if (arcology.FSEgyptianRevivalist > 20) {
+						r += ` Customers are very enthusiastic about being able to participate in incestuous sex like the ancient Egyptians.`;
+					} else if (arcology.FSEgyptianRevivalistIncestPolicy === 1) {
+						r += ` Customers are very enthusiastic about being able to participate in incestuous sex.`;
+					}
+				}
+			}
+		} else {
+			if (slave.relation !== 0) {
+				SWi = V.slaveIndices[slave.relationTarget];
+				if (SWi !== undefined && slave.assignment === V.slaves[SWi].assignment) {
+					const relativePronouns = getPronouns(V.slaves[SWi]);
+					r += ` Since ${his} ${V.slaves[SWi].relation} ${V.slaves[SWi].slaveName} is selling ${relativePronouns.objectReflexive} too, ${he} earns extra ¤ by working with ${relativePronouns.object}.`;
+					if (arcology.FSEgyptianRevivalist > 20) {
+						r += ` Customers are very enthusiastic about being able to participate in incestuous sex like the ancient Egyptians.`;
+					} else if (arcology.FSEgyptianRevivalistIncestPolicy === 1) {
+						r += ` Customers are very enthusiastic about being able to participate in incestuous sex.`;
+					}
+				}
+			}
+		}
+		if (slave.relationship > 0) {
+			SWi = V.slaveIndices[slave.relationshipTarget];
+			if (SWi !== undefined && slave.assignment === V.slaves[SWi].assignment) {
+				r += ` ${His} ${relationshipTerm(slave)} ${V.slaves[SWi].slaveName} is also whoring, so ${he} earns a bit more.`;
+			}
+		} else if (slave.relationship === -1) {
+			r += ` ${He} relies on citizens' desire to fuck ${him} for emotional support, making ${him} an excellent, if occasionally disturbing, whore.`;
+		}
+		if (slave.rivalry !== 0) {
+			SWi = V.slaveIndices[slave.rivalryTarget];
+			if (SWi !== undefined && slave.assignment === V.slaves[SWi].assignment) {
+				r += ` ${He} earns a little less ¤ due to bickering with ${V.slaves[SWi].slaveName}.`;
+			}
+		}
+
+		if (slave.minorInjury !== 0) {
+			r += ` ${He} attracts fewer people due to ${his} minor injury.`;
+		}
+
+		if ((slave.hears === -1 && slave.earwear !== "hearing aids") || (slave.hears === 0 && slave.earwear === "muffling ear plugs") ||(slave.hears === -2)) {
+			r += ` ${His} trouble hearing causes ${him} to often not recognize ${he}'s being picked up, missing out on partners.`;
+		}
+
+		if (canTalk(slave)) {
+			if (slave.voice > 2) {
+				if (slave.voiceImplant > 0) {
+					r += ` ${His} high-pitched bimbo voice makes it easier for ${him} to entice potential customers.`;
+				} else {
+					r += ` ${His} high, girly voice makes it easier for ${him} to entice potential customers.`;
+				}
+			} else if (slave.voice === 1) {
+				r += ` Most potential customers find ${his} deep voice unattractive, making it harder for ${him} to entice them.`;
+			}
+		}
+
+		if (arcology.FSTransformationFetishist > 20 || arcology.FSDegradationist > 20) {
+			if ((V.modScore > 15) || (V.piercingScore > 8 && V.tatScore > 5)) {
+				r += ` Many customers fetishizes body mods and considers ${hers} fascinating.`;
+			} else if (V.modScore > 7) {
+				r += ` Many customers fetishizes body mods and considers ${hers} interesting.`;
+			}
+		} else if (arcology.FSBodyPurist > 20 || arcology.FSPaternalist > 20) {
+			if (V.modScore > 7) {
+				r += ` Many customers disapproves of body mods and is pleased that ${he}'s unspoiled in that regard.`;
+			} else {
+				r += ` Many customers disapproves of body mods and considers ${hers} unappealing.`;
+			}
+		} else {
+			if ((V.modScore > 15) || (V.piercingScore > 8 && V.tatScore > 5)) {
+				r += ` ${He} has so much body art that most customers don't think ${he} needs any more.`;
+			} else if (slave.corsetPiercing !== 0 || V.piercingScore >= 3 || V.tatScore >= 2) {
+				r += ` ${His} body art helps attract customers.`;
+			}
+		}
+
+		if (slave.aphrodisiacs > 1 || (slave.inflationType === "aphrodisiac" && slave.inflation > 1)) {
+			r += ` On such a heavy aphrodisiac dose, ${he} can't wait for each customer to fuck ${him}.`;
+			if (slave.inflationType === "aphrodisiac" && canDoAnal(slave)) {
+				r += ` Which is practically nonstop, as anyone that fucks ${his} ass gets a hit of the aphrodisiacs within ${his} belly.`;
+			}
+		} else if (slave.aphrodisiacs > 0 || (slave.inflationType === "aphrodisiac")) {
+			r += ` On aphrodisiacs, ${he} climaxes with every customer.`;
+			if (slave.inflationType === "aphrodisiac" && canDoAnal(slave)) {
+				r += ` Which happens often, as anyone that fucks ${his} ass gets a tiny hit of the aphrodisiacs within ${his} belly.`;
+			}
+		} else if (slave.devotion > 95) {
+			r += ` ${He}'s so devoted that ${he} does ${his} best and pleases every customer.`;
+		} else if (slave.devotion > 50) {
+			r += ` ${He}'s so devoted that ${he} works hard to please customers.`;
+		} else if (slave.trust < -20) {
+			r += ` ${He}'s afraid of you, so ${he} works hard to please customers.`;
+		} else {
+			r += ` ${He} neither loves nor fears you enough to work hard, and makes a poor whore.`;
+		}
+
+		if (slave.butt > 4 && slave.boobs > 800) {
+			if (arcology.FSAssetExpansionist !== "unset") {
+				r += ` ${He} makes a river of ¤ with ${his} huge, fashionable assets.`;
+				if (canTalk(slave)) {
+					if (slave.voice > 2) {
+						r += ` ${His} high voice contributes to ${his} bimbo image, so ${he} does even better.`;
+					}
+				}
+			} else if (arcology.FSSlimnessEnthusiast >= 20) {
+				r += ` ${He} makes no extra ¤ with ${his} large assets since many citizens consider them disgusting.`;
+			} else {
+				r += ` ${He} receives extra ¤ for having huge assets.`;
+			}
+			if (arcology.FSGenderRadicalist !== "unset") {
+				if (slave.dick > 0) {
+					r += ` Society's appetite for stacked whores with dicks makes ${him} especially profitable.`;
+				}
+			}
+		}
+
+		if (slave.visualAge >= 30) {
+			if (arcology.FSMaturityPreferentialist !== "unset") {
+				r += ` ${His} mature body is very fashionable.`;
+			} else if (arcology.FSYouthPreferentialist !== "unset") {
+				r += ` ${His} old body is badly out of fashion.`;
+			}
+		} else {
+			if (arcology.FSYouthPreferentialist !== "unset") {
+				r += ` ${His} youthful body is very fashionable.`;
+			} else if (arcology.FSMaturityPreferentialist !== "unset") {
+				r += ` ${His} young body is out of fashion.`;
+			}
+		}
+
+		if (arcology.FSGenderFundamentalistLawBeauty + arcology.FSGenderRadicalistLawBeauty > 0) {
+			if (V.genderLawPass === 1) {
+				if (arcology.FSAssetExpansionist !== "unset") {
+					r += ` ${He} makes extra ¤ due to ${his} fashionably feminine body.`;
+				} else {
+					r += ` ${He} receives extra ¤ for having a sleek, girlish figure.`;
+				}
+				if (canTalk(slave) && slave.voice > 2) {
+					r += ` ${His} high voice contributes to ${his} girlish image, so ${he} does even better.`;
+				}
+			}
+		} else if (arcology.FSSlimnessEnthusiastLaw === 1) {
+			if (slimPass(slave) === 1) {
+				r += ` ${He} makes extra ¤ due to ${his} fashionably sleek little body.`;
+				if (canTalk(slave) && slave.voice > 2) {
+					r += ` ${His} high voice contributes to ${his} girlish image, so ${he} does even better.`;
+				}
+			}
+		} else if (arcology.FSHedonisticDecadenceLaw2 === 1) {
+			if (slave.boobs >= 2000 && slave.butt >= 5 && slave.weight > 95) {
+				r += ` ${He} makes extra ¤ due to ${his} fashionably plump body.`;
+				if (canTalk(slave) && slave.voice > 2) {
+					r += ` ${His} high voice contributes to ${his} feminine image, so ${he} does even better.`;
+				}
+			}
+		} else {
+			if (slave.boobs < 500 && slave.butt < 3) {
+				if (slave.muscles <= 30 && arcology.FSPhysicalIdealist === "unset" && slave.weight <= 10 && arcology.FSHedonisticDecadence === "unset") {
+					if (arcology.FSSlimnessEnthusiast > 20) {
+						r += ` ${He} makes extra ¤ due to ${his} fashionably sleek little body.`;
+					} else {
+						r += ` ${He} receives extra ¤ for having a sleek, girlish figure.`;
+					}
+					if (canTalk(slave) && slave.voice > 2) {
+						r += ` ${His} high voice contributes to ${his} girlish image, so ${he} does even better.`;
+					}
+				} else if (arcology.FSPhysicalIdealist !== "unset") { // no muscle malus for muscle loving societies
+					if (arcology.FSPhysicalIdealistStrongFat === 1 && slave.weight <= 30) { // reduced weight malus for fat loving societies
+						if (arcology.FSSlimnessEnthusiast > 20) {
+							r += ` ${He} makes extra ¤ due to ${his} fashionably sleek little body.`;
+						} else {
+							r += ` ${He} receives extra ¤ for having a sleek, girlish figure.`;
+						}
+						if (canTalk(slave) && slave.voice > 2) {
+							r += ` ${His} high voice contributes to ${his} girlish image, so ${he} does even better.`;
+						}
+					} else if (slave.weight <= 10) {
+						if (arcology.FSSlimnessEnthusiast > 20) {
+							r += ` ${He} makes extra ¤ due to ${his} fashionably sleek little body.`;
+						} else {
+							r += ` ${He} receives extra ¤ for having a sleek, girlish figure.`;
+						}
+						if (canTalk(slave) && slave.voice > 2) {
+							r += ` ${His} high voice contributes to ${his} girlish image, so ${he} does even better.`;
+						}
+					}
+				} else if (arcology.FSHedonisticDecadence !== "unset" && slave.weight <= 30) { // reduced weight malus for fat loving societies
+					if (arcology.FSHedonisticDecadenceStrongFat === 1) { // no muscle malus for muscle loving societies
+						if (arcology.FSSlimnessEnthusiast > 20) {
+							r += ` ${He} makes extra ¤ due to ${his} fashionably sleek little body.`;
+						} else {
+							r += ` ${He} receives extra ¤ for having a sleek, girlish figure.`;
+						}
+						if (canTalk(slave) && slave.voice > 2) {
+							r += ` ${His} high voice contributes to ${his} girlish image, so ${he} does even better.`;
+						}
+					} else if (slave.muscles <= 30) {
+						if (arcology.FSSlimnessEnthusiast > 20) {
+							r += ` ${He} makes extra ¤ due to ${his} fashionably sleek little body.`;
+						} else {
+							r += ` ${He} receives extra ¤ for having a sleek, girlish figure.`;
+						}
+						if (canTalk(slave) && slave.voice > 2) {
+							r += ` ${His} high voice contributes to ${his} girlish image, so ${he} does even better.`;
+						}
+					}
+				}
+			}
+		}
+
+		if (slave.boobsImplant === 0 && slave.buttImplant === 0 && slave.waist >= -95 && slave.bellyImplant === -1 && slave.lipsImplant === 0 && slave.faceImplant < 30) {
+			if (arcology.FSBodyPurist !== "unset") {
+				r += ` With ${his} all-natural, implant free appearance, ${he}'s very profitable.`;
+			} else if (arcology.FSTransformationFetishist >= 20) {
+				r += ` Customers are disappointed by ${his} all-natural, implant free appearance.`;
+			} else {
+				r += ` Some discerning customers appreciate ${his} all-natural, implant free appearance.`;
+			}
+		} else {
+			if (arcology.FSTransformationFetishist !== "unset") {
+				r += ` The public is willing to pay more for ${his} augmented body.`;
+			}
+		}
+
+		if (slave.nipples === "fuckable") {
+			if (arcology.FSTransformationFetishist !== "unset") {
+				r += ` ${His} fuckable nipples give ${him} a profitable edge over those without such body modifications.`;
+			} else {
+				r += ` ${His} fuckable nipples entice some of the more adventurous customers.`;
+			}
+		}
+
+		if (slave.teeth === "removable") {
+			r += ` The extra attention ${he} receives from ${his} ability to give toothless sucks is about balanced out by the customers who are disgusted by it.`;
+		} else if (slave.teeth === "pointy") {
+			r += ` The extra attention ${he} receives from ${his} terrifying mouth of sharp teeth is balanced by the customers who are scared off by them.`;
+		}
+
+		if (slave.dick !== 0) {
+			if (arcology.FSGenderRadicalist === "unset") {
+				r += ` ${He} sees fewer customers because many prefer whores without cocks.`;
+			} else if (arcology.FSGenderRadicalist < 50) {
+				r += ` ${His} cock entices some customers and disappoints others; it has little effect on ${his} popularity.`;
+			} else {
+				r += ` The overwhelming majority of potential customers consider ${his} cock an attraction.`;
+			}
+		}
+
+		if (slave.muscles > 95) {
+			if (arcology.FSPhysicalIdealist !== "unset") {
+				r += ` In the new culture of ${arcology.name} ${his} muscles make ${him} a very profitable whore.`;
+			} else {
+				r += ` ${His} muscles scare off some customers, but some pay well to enjoy a muscular whore.`;
+			}
+		}
+
+		if (slave.amp === 1) {
+			r += ` Many prefer to fuck a whore with limbs, but some greatly enjoy buying the use of a helpless amputee.`;
+		}
+
+		if (slave.lactation > 0) {
+			r += ` ${He} appeals to customers who like lactation play, or just want a whore they can drink milk from.`;
+			slave.lactationDuration = 2;
+			slave.boobs -= slave.boobsMilk;
+			slave.boobsMilk = 0;
+		}
+
+		if (slave.bellyPreg >= 1500 || setup.fakeBellies.includes(slave.bellyAccessory) || slave.bellyImplant >= 1500) {
+			if (arcology.FSRepopulationFocus !== "unset") {
+				r =+ ` In the new culture of ${arcology.name}, ${his} pregnancy makes ${him} a profitable whore`;
+				if (setup.fakeBellies.includes(slave.bellyAccessory) || slave.bellyImplant >= 1500) {
+					r += `, even if it's not real`;
+				}
+				r += `.`;
+			} else if (slave.bellyAccessory.FSRepopulationFocusPregPolicy === 1 && slave.bellyPreg >= 1500) {
+				r += ` It's currently trendy to plow a whore laden with child, a role ${he} fits perfectly.`;
+			} else if (arcology.FSRestart !== "unset") {
+				r += ` In the new culture of ${arcology.name}, ${his}`;
+				if (setup.fakeBellies.includes(slave.bellyAccessory) || slave.bellyImplant >= 1500) {
+					r += ` apparent`;
+				}
+				r += ` pregnancy is a massive turn off to potential customers.`;
+			} else if (arcology.FSGenderFundamentalist !== "unset") {
+				r += ` The new respect for traditional gender roles has given many citizens a taste for pregnant whores`;
+				if (setup.fakeBellies.includes(slave.bellyAccessory) || slave.bellyImplant >= 1500) {
+					r += `, even if they only look pregnant`;
+				}
+				r += `.`;
+			} else {
+				r += ` Many customers avoid visibly pregnant whores.`;
+			}
+		}
+
+		if (arcology.FSRepopulationFocusMilfPolicy === 1 && slave.birthsTotal > 0) {
+			r += ` Slaves that have had children are hot right now making ${him} quite the appealing MILF.`;
+		}
+
+		if (V.seeRace === 1) {
+			if (slave.race === "white") {
+				r += ` Many customers prefer white ${girl}s like ${slave.slaveName}.`;
+			}
+		}
+		if (arcology.FSSupremacist !== "unset") {
+			if (slave.race !== arcology.FSSupremacistRace) {
+				r += ` Some citizens fetishize whores of the servile races.`;
+			}
+		}
+		if (arcology.FSSubjugationist !== "unset") {
+			if (slave.race === arcology.FSSubjugationistRace) {
+				r += ` Many prefer to use and abuse whores of the proper slave race.`;
+			}
+		}
+		if (arcology.FSEdoRevivalist !== "unset") {
+			if (slave.nationality === "Japanese" || slave.nationality === "Edo Revivalist") {
+				r =+ ` As a proper Japanese ${girl}, ${he} is considered extremely desirable.`;
+			}
+		} else if (arcology.FSChineseRevivalist !== "unset") {
+			if (slave.nationality === "Chinese" || slave.nationality === "Chinese Revivalist") {
+				r += ` As a proper Chinese ${girl}, ${he} is considered extremely desirable.`;
+			}
+		}
+
+		if (slave.intelligence + slave.intelligenceImplant > 15) {
+			r += ` ${His} intelligence gives ${him} an advantage at the business of selling ${his} body.`;
+		} else if (slave.intelligence + slave.intelligenceImplant < -15) {
+			r += ` ${His} stupidity gives ${him} a handicap at the business of selling ${his} body.`;
+		}
+
+		if (slave.prestige > 0) {
+			r += ` ${He} attracts more attention because it's prestigious to fuck ${him}.`;
+		}
+
+		if (slave.pornPrestige > 2) {
+			r += ` Customers line up for the chance to buy time with the face of ${slave.porn.fameType} porn.`;
+		} else if (slave.pornPrestige > 1) {
+			r += ` ${He} has a sizable fanbase, one that is eager to buy time with ${him}.`;
+		} else if (slave.pornPrestige > 0) {
+			r += ` A few of ${his} fans recognize ${him} and eagerly patronize ${him}.`;
+		}
+
+		if (slave.clitPiercing === 3 && slave.devotion >= -20) {
+			r += ` Almost everyone loves ${his} enthusiasm for sex encouraged by ${his} smart piercing.`;
+		} else if (slave.clitPiercing === 3) {
+			r += ` Almost everyone appreciates ${his} reduced reluctance towards sex encouraged by ${his} smart piercing.`;
+		}
+
+		if (slave.fetishKnown === 1 && slave.fetishStrength > 60) {
+			switch (slave.fetish) {
+				case "submissive":
+					r += ` ${He} gets more ¤ for ${his} eagerness to submit.`;
+					break;
+				case "cumslut":
+					r += ` ${He} gets more ¤ for ${his} enjoyment of cum.`;
+					break;
+				case "humiliation":
+					r += ` ${He} gets more ¤ for ${his} eagerness to be humiliated by citizens.`;
+					break;
+				case "buttslut":
+					if (canDoAnal(slave)) {
+						r += ` ${He} gets more ¤ for ${his} obvious enjoyment of buttsex.`;
+					}
+					break;
+				case "dom":
+					r += ` ${He} gets more ¤ for ${his} enthusiasm dominating other slaves in group sex.`;
+					break;
+				case "masochist":
+					r += ` ${He} gets more ¤ for ${his} obvious enjoyment of pain.`;
+					break;
+				case "boobs":
+					r += ` ${He} receives more ¤ for ${his} eagerness to get some hands on ${his} chest.`;
+					break;
+				case "sadist":
+					r += ` ${He} gets some more ¤ for $his willingness to abuse other slaves.`;
+					break;
+				case "pregnancy":
+					if (slave.mpreg === 0) {
+						if (slave.vagina > 0 && canDoVaginal(slave)) {
+							r += ` As an impregnation fetishist ${he}'s very enthusiastic about vaginal sex.`;
+						}
+					} else {
+						if (slave.anus > 0 && canDoAnal(slave)) {
+							r += ` As an impregnation fetishist ${he}'s very enthusiastic about anal sex.`;
+						}
+					}
+					break;
+				case "mindbroken":
+					r += ` ${He} gets less ¤ because ${he} just lies there, totally unresponsive.`;
+					break;
+			}
+		}
+
+		if (slave.attrKnown === 1) {
+			if (slave.energy > 95) {
+				r += ` As a nymphomaniac ${he} gets sexual release from every transaction and is wildly successful.`;
+				slave.need -= beauty;
+			} else if (slave.energy > 80) {
+				r += ` With ${his} powerful sex drive ${he} rarely has to fake an orgasm.`;
+				slave.need -= (beauty * .9);
+			} else if (slave.aphrodisiacs > 0 || slave.inflationType === "aphrodisiac") {
+				r += ` With ${his} aphrodisiac boosted libido, it's barely possible to discern ${him} from a natural nymphomaniac.`;
+				slave.need -= (beauty * .9);
+			} else if (slave.energy > 60) {
+				r += ` With ${his} good sex drive ${he} often orgasms with customers.`;
+				slave.need -= (beauty * .8);
+			} else if (slave.energy > 40) {
+				r += ` With ${his} average sex drive ${he} occasionally orgasms with customers.`;
+				slave.need -= (beauty * .5);
+			} else if (slave.energy > 20) {
+				r += ` With ${his} poor sex drive ${he} almost never orgasms with customers.`;
+				slave.need -= (beauty * .1);
+			} else {
+				r += ` Since ${he}'s frigid, ${he} rarely experiences authentic arousal at work.`;
+			}
+			if (slave.attrXY <= 15) {
+				if (slave.attrXX <= 15) {
+					r += ` ${His} general disgust with sex makes ${him} a very poor whore.`;
+				} else if (slave.attrXX <= 85) {
+					r += ` ${His} sexual disgust with men makes ${him} a poor whore.`;
+				} else if (slave.attrXX <= 95) {
+					r += ` ${His} sexual disgust with men hinders ${him}, though ${he} is more enthusiastic with female customers.`;
+				} else {
+					r += ` ${His} sexual disgust with men hinders ${him}, though ${he} makes up for it with female customers.`;
+				}
+			} else if (slave.attrXY <= 85) {
+				if (slave.attrXX <= 15) {
+					r += ` ${His} sexual disgust with men makes ${him} a poor whore.`;
+				} else if (slave.attrXX <= 85) {
+					r += ` ${His} indifference to men and women makes ${him} a poor whore.`;
+				} else if (slave.attrXX <= 95) {
+					r += ` ${His} sexual indifference to men hinders ${him}, though ${he} is more enthusiastic with female customers.`;
+				} else {
+					r += ` ${His} sexual indifference to men hinders ${him}, though $he makes up for it with female customers.`;
+				}
+			} else if (slave.attrXY <= 95) {
+				if (slave.attrXX <= 15) {
+					r += ` ${His} sexual disgust with women hinders ${him}, though ${he} makes up for it with male customers.`;
+				} else if (slave.attrXX <= 85) {
+					r += ` ${His} sexual indifference to women hinders ${him}, though $he makes up for it with male customers.`;
+				} else if (slave.attrXX <= 95) {
+					r += ` ${He} has the advantage of sexual sincerity with both men and women.`;
+				} else {
+					r += ` ${He}'s a good slut with male customers, and truly enthusiastic with women.`;
+				}
+			} else {
+				if (slave.attrXX <= 15) {
+					r += ` ${His} sexual disgust with women hinders ${him}, though ${he} is enthusiastic with male customers.`;
+				} else if (slave.attrXX <= 85) {
+					r += ` ${His} sexual indifference to women hinders ${him}, though ${he} is enthusiastic with male customers.`;
+				} else if (slave.attrXX <= 95) {
+					r += ` ${He}'s a good slut with female customers, and truly enthusiastic with men.`;
+				} else {
+					r += ` ${He}'s openly lustful towards all customers, men and women.`;
+				}
+			}
+		}
+
+		switch (slave.behavioralQuirk) {
+			case "confident":
+				r += ` ${He}'s better at ${his} job because ${he}'s  such a confident whore.`;
+				break;
+			case "cutting":
+				r += ` ${He} gets a lot of attention for ${his} ability to joke at a customer's expense.`;
+				break;
+			case "funny":
+				r += ` ${He} brings unintentional comic relief to the hard work of prostitution.`;
+				break;
+			case "adores women":
+				r += ` ${He}'s a favorite among female customers, whom ${he} greets with real enthusiasm.`;
+				break;
+			case "adores men":
+				r += ` ${He}'s a favorite among male customers, whom ${he} greets with frank and open lust.`;
+				break;
+			case "fitness":
+				r += ` ${He}'s eager to please customers because ${he} finds validation in their willingness to pay for sex with ${him}.`;
+				break;
+			case "insecure":
+				r += ` ${He} thinks of ${himself} as really beautiful, despite the occasional harshness of sex work.`;
+				break;
+			case "sinful":
+				r += ` ${He} identifies with prostitutes from the holy books, and scandalizes customers with ${his} explicit scriptural references.`;
+				break;
+			case "advocate":
+				r += ` ${He} reassures uncomfortable customers that prostitution isn't bad for ${him} at all.`;
+				break;
+		}
+		switch (slave.sexualQuirk) {
+			case "gagfuck queen":
+				r += ` ${He}'s a favorite among customers who like to throatfuck a retching whore.`;
+				break;
+			case "painal queen":
+				if (canDoAnal(slave)) {
+					r += ` {He}'s a favorite among customers who like to assrape a struggling whore.`;
+				}
+				break;
+			case "strugglefuck queen":
+				r += ` ${He}'s a favorite among customers who like to wrestle with a struggling whore.`;
+				break;
+			case "tease":
+				r += ` Despite being a whore, ${he} somehow retains the ability to blush enticingly at nudity.`;
+				break;
+			case "romantic":
+				r += ` Despite being a whore, ${he} somehow retains the ability to make ${his} customers feel special.`;
+				break;
+			case "perverted":
+				r += ` ${He} enjoys unexpected, perverted requests from customers.`;
+				break;
+			case "unflinching":
+				r += ` ${He}'s impossible to disgust or surprise, pleasing customers with odd tastes.`;
+				break;
+			case "size queen":
+				r += ` ${He}'s very eager to spend quality time with big cocks, making ${him} a favorite among the well-endowed.`;
+				break;
+			case "caring":
+				r += ` ${He}'s a relaxing whore to patronize, doing everything ${he} can to make ${his} customers comfortable.`;
+				break;
+		}
+
+		switch (slave.behavioralFlaw) {
+			case "arrogant":
+				r += ` ${He} receives less ¤ because ${he} treats clients like they are beneath ${his} dignity.`;
+				break;
+			case "bitchy":
+				r += ` ${He} receives less ¤ because ${he} makes cutting remarks to clients.`;
+				break;
+			case "odd":
+				r += ` ${He} receives less ¤ because clients are annoyed by ${his} odd behavior.`;
+				break;
+			case "hates men":
+				r += ` ${He} receives less ¤ because ${he} can't conceal ${his} distaste for the company of men.`;
+				break;
+			case "hates women":
+				r += ` ${He} receives less ¤ because ${he} can't conceal ${his} distaste for the company of women.`;
+				break;
+			case "devout":
+				r += ` ${He} receives less ¤ because people are annoyed by ${his} habit of praying for forgiveness during sex.`;
+				break;
+			case "liberated":
+				r += ` ${He} receives less ¤ because people are annoyed by ${his} obvious belief that being forced to serve them is wrong.`;
+				break;
+		}
+		switch (slave.sexualFlaw) {
+			case "hates oral":
+				r += ` ${He} receives less ¤ because ${he} tries to avoid sucking cock.`;
+				break;
+			case "hates anal":
+				if (canDoAnal(slave)) {
+					r += ` ${He} receives less ¤ because ${he} tries to avoid taking it up the ass.`;
+				}
+				break;
+			case "hates penetration":
+				r += ` ${He} receives less ¤ because ${he} tries to avoid getting fucked.`;
+				break;
+			case "repressed":
+				r += ` ${He} receives less ¤ because customers who don't feel like forcing ${him} sometimes have to cajole ${him} past ${his} repressed sexuality.`;
+				break;
+			case "idealistic":
+				r += ` ${He} receives less ¤ because customers who don't feel like forcing ${him} sometimes have to convince ${him} to have sex with them.`;
+				break;
+			case "apathetic":
+				r += ` ${He} receives less ¤ because ${he} often just lies there taking dick.`;
+				break;
+			case "crude":
+				r += ` ${He} receives less ¤ because ${he} isn't exactly the most elegant sexual partner.`;
+				break;
+			case "judgemental":
+				r += ` ${He} receives less ¤ because ${he} openly disdains unattractive citizens.`;
+				break;
+			case "shamefast":
+				r += ` ${He} receives less ¤ because ${he} sometimes hesitates to take ${his} clothes off and get to work.`;
+				break;
+			case "cum addict":
+				r += ` ${His} abject begging for cum annoys customers who aren't looking for oral, but this is more than outweighed by how much it delights those who are.`;
+				break;
+			case "anal addict":
+				r += ` ${His} abject begging for buttsex annoys customers who aren't interested in fucking ${his} ass, but this is more than outweighed by how much it delights those who are.`;
+				break;
+			case "attention whore":
+				r += ` ${He} loses customers by ${his} constant attention seeking.`;
+				break;
+			case "breast growth":
+				r += ` ${His} excessive obsession with ${his} own breasts, to the detriment of most sexual intercourse, loses customers.`;
+				break;
+			case "abusive":
+				r += ` ${He} loses customers whenever ${his} sexual abusiveness becomes apparent.`;
+				break;
+			case "malicious":
+				r += ` ${He} loses customers whenever ${his} sexual maliciousness becomes apparent.`;
+				break;
+			case "self hating":
+				r += ` ${He} loses customers during the crying jags brought on by ${his} self hatred.`;
+				break;
+			case "neglectful":
+				r += ` The occasional customer who likes a whore to climax authentically and can tell the difference is disappointed by ${his} neglect of ${his} own pleasure, but they're rare. Most are thrilled by ${him}.`;
+				break;
+			case "breeder":
+				r += ` ${His} obsession with pregnancy loses customers who aren't interested in that.`;
+				break;
+		}
+	}
+
+	/** @param {App.Entity.SlaveState} slave */
+	function addFlaw(slave) {
+		if (slave.devotion < 10) {
+			if (jsRandom(1, 100) > 70) {
+				if (slave.skill.vaginal <= 30 && canDoVaginal(slave)) {
+					r += ` After being fucked too hard too often, ${he} now <span class="red">dislikes being penetrated.</span>`;
+					slave.sexualFlaw = "hates penetration";
+				} else if (slave.skill.anal <= 30 && canDoAnal(slave)) {
+					r += ` After so much anal pain, ${he} now <span class="red">dislikes being buttfucked.</span>`;
+					slave.sexualFlaw = "hates anal";
+				} else if (slave.skill.oral <= 30) {
+					r += ` After one too many facials, ${he} now <span class="red">dislikes sucking cock.</span>`;
+					slave.sexualFlaw = "hates oral";
+				}
+			}
+		}
+	}
+
+	/** @param {App.Entity.SlaveState} slave */
+	function addCash(slave) {
+		cash = Math.trunc((beauty * FuckResult) * (1 + (0.002 * slave.skill.whoring)));
+		T.incomeStats.income += cash;
+		if (slave.assignment === "work in the brothel" || slave.assignment === "be the Madam") {
+			cashX(cash, "whoreBrothel", slave);
+		} else if (slave.assignment === "whore") {
+			cashX(cash, "whore", slave);
+		} else {
+			cashX(cash, "whoring in an unregistered building", slave);
+		}
+	}
+
+	/** @param {App.Entity.SlaveState} slave */
+	function addCashText(slave) {
+		r += ` In total, you were paid <span class="yellowgreen">${cashFormat(cash)}</span> for the use of ${slave.slaveName}'s body this week.`;
+	}
+
+	/** @param {App.Entity.SlaveState} slave */
+	function applyFSDecoration(slave) {
+		/* FACILITY DECORATION IMPACTS */
+		const fsBeauty = (0.0005 * V.FSSingleSlaveRep * beauty);
+		switch (V.brothelDecoration) {
+			case "Roman Revivalist":
+				arcology.FSRomanRevivalist += fsBeauty;
+				break;
+			case "Aztec Revivalist":
+				arcology.FSAztecRevivalist += fsBeauty;
+				break;
+			case "Egyptian Revivalist":
+				arcology.FSEgyptianRevivalist += fsBeauty;
+				break;
+			case "Edo Revivalist":
+				arcology.FSEdoRevivalist += fsBeauty;
+				break;
+			case "Arabian Revivalist":
+				arcology.FSArabianRevivalist += fsBeauty;
+				break;
+			case "Chinese Revivalist":
+				arcology.FSChineseRevivalist += fsBeauty;
+				break;
+			case "Chattel Religionist":
+				arcology.FSChattelReligionist += fsBeauty;
+				break;
+			case "Degradationist":
+				arcology.FSDegradationist += fsBeauty;
+				break;
+			case "Asset Expansionist":
+				arcology.FSAssetExpansionist += fsBeauty;
+				break;
+			case "Transformation Fetishist":
+				arcology.FSTransformationFetishist += fsBeauty;
+				break;
+			case "Gender Radicalist":
+				arcology.FSGenderRadicalist += fsBeauty;
+				break;
+			case "Repopulation Focus":
+				arcology.FSRepopulationFocus += fsBeauty;
+				break;
+			case "Eugenics":
+				arcology.FSRestart += fsBeauty;
+				break;
+			case "Gender Fundamentalist":
+				arcology.FSGenderFundamentalist += fsBeauty;
+				break;
+			case "Physical Idealist":
+				arcology.FSPhysicalIdealist += fsBeauty;
+				break;
+			case "Hedonistic":
+				arcology.FSHedonisticDecadence += fsBeauty;
+				break;
+			case "Supremacist":
+				arcology.FSSupremacist += fsBeauty;
+				break;
+			case "Subjugationist":
+				arcology.FSSubjugationist += fsBeauty;
+				break;
+			case "Paternalist":
+				arcology.FSPaternalist += fsBeauty;
+				break;
+			case "Pastoralist":
+				arcology.FSPastoralist += fsBeauty;
+				break;
+			case "Maturity Preferentialist":
+				arcology.FSMaturityPreferentialist += fsBeauty;
+				break;
+			case "Youth Preferentialist":
+				arcology.FSYouthPreferentialist += fsBeauty;
+				break;
+			case "Body Purist":
+				arcology.FSBodyPurist += fsBeauty;
+				break;
+			case "Slimness Enthusiast":
+				arcology.FSSlimnessEnthusiast += fsBeauty;
+				break;
+		}
+	}
+
+	/** @param {App.Entity.SlaveState} slave */
+	function sexCounts(slave) {
+		/* SEX ACT COUNTS AND SEXUAL SATISFACTION */
+
+		oralUse = (V.oralUseWeight + (slave.skill.oral / 30) + (slave.lips / 20));
+		analUse = 0;
+		if (canDoAnal(slave)) {
+			analUse = (V.analUseWeight + (slave.skill.anal / 30) - slave.anus);
+			if (analUse < 0) {
+				analUse = 0;
+			}
+		}
+		vaginalUse = 0;
+		if (canDoVaginal(slave)) {
+			vaginalUse = (V.vaginalUseWeight + (slave.skill.vaginal / 30) - slave.vagina);
+			if (vaginalUse < 0) {
+				vaginalUse = 0;
+			}
+		}
+		mammaryUse = 0;
+		//perhaps boost this for truly massive breasts
+		if (slave.boobs > 10000) {
+			mammaryUse = (5 + V.mammaryUseWeight);
+		} else if (slave.boobs > 2000) {
+			mammaryUse = (V.mammaryUseWeight + (slave.boobs / 2000));
+		}
+		if (slave.nipples === "fuckable") {
+			mammaryUse *= 2;
+		}
+		let penetrativeUse = 0;
+		if (canDoVaginal(slave) && slave.clit > 1) {
+			penetrativeUse += (V.penetrativeUseWeight + (slave.skill.vaginal / 30) + slave.clit);
+		}
+		if (slave.dick && slave.chastityPenis !== 1) {
+			if (canPenetrate(slave)) {
+				penetrativeUse += (V.penetrativeUseWeight + slave.dick + Math.min(slave.balls, 10) / 4);
+				if (slave.drugs === "hyper testicle enhancement") {
+					penetrativeUse += Math.min(slave.balls, 5);
+				}
+			} else {
+				penetrativeUse += (V.penetrativeUseWeight + Math.min(slave.balls, 15) + Math.min(slave.balls, 10) / 8);
+				if (slave.drugs === "hyper testicle enhancement") {
+					penetrativeUse += Math.min(slave.balls, 5);
+				}
+			}
+		}
+
+		const demand = (oralUse + analUse + vaginalUse + mammaryUse + penetrativeUse);
+		oralUse = Math.trunc((oralUse / demand) * beauty);
+		analUse = Math.trunc((analUse / demand) * beauty);
+		vaginalUse = Math.trunc((vaginalUse / demand) * beauty);
+		mammaryUse = Math.trunc((mammaryUse / demand) * beauty);
+		penetrativeUse = Math.trunc((penetrativeUse / demand) * beauty);
+
+		slave.counter.oral += oralUse;
+		slave.counter.publicUse += oralUse;
+		V.oralTotal += oralUse;
+		slave.counter.anal += analUse;
+		slave.counter.publicUse += analUse;
+		V.analTotal += analUse;
+		slave.counter.vaginal += vaginalUse;
+		slave.counter.publicUse += vaginalUse;
+		V.vaginalTotal += vaginalUse;
+		slave.counter.mammary += mammaryUse;
+		slave.counter.publicUse += mammaryUse;
+		V.mammaryTotal += mammaryUse;
+		slave.counter.penetrative += penetrativeUse;
+		slave.counter.publicUse += penetrativeUse;
+		V.penetrativeTotal += penetrativeUse;
+
+		cervixPump = 0;
+		if (slave.cervixImplant === 1 || slave.cervixImplant === 3) {
+			cervixPump += (20 * vaginalUse);
+		}
+		if (slave.cervixImplant === 2 || slave.cervixImplant === 3) {
+			cervixPump += (20 * analUse);
+		}
+	}
+
+	/** @param {App.Entity.SlaveState} slave */
+	function sexualSatiation(slave) {
+		if (slave.need) {
+			if (slave.fetishKnown) {
+				switch (slave.fetish) {
+					case "submissive":
+					case "masochist":
+						if (analUse + vaginalUse > 0) {
+							r += ` ${He} enjoys being fucked, and got sexual satisfaction from the ${num(analUse + vaginalUse)} dicks stuck inside ${him} this week.`;
+							slave.need -= (analUse + vaginalUse);
+						}
+						break;
+					case "dom":
+					case "sadist":
+						if (penetrativeUse > 0) {
+							r += ` ${He} enjoys being on top, and got special sexual satisfaction from the ${num(penetrativeUse)} times ${he} got to fuck someone this week.`;
+							slave.need -= 2 * penetrativeUse;
+						}
+						break;
+					case "cumslut":
+						if (oralUse > 0) {
+							r += ` ${He} enjoys sucking, and got sexual satisfaction from the ${num(oralUse)} blowjobs ${he} gave this week.`;
+							slave.need -= oralUse;
+						}
+						break;
+					case "buttslut":
+						if (analUse > 0) {
+							r += ` ${He} enjoys getting buttfucked, and got sexual satisfaction from the ${num(analUse)} times ${he} was sodomized this week.`;
+							slave.need -= analUse;
+						}
+						break;
+					case "boobs":
+						if (mammaryUse > 0) {
+							r += ` ${He} enjoys `;
+							if (slave.nipples === "fuckable") {
+								r += `having ${his} tits fucked,`;
+							} else {
+								r += `giving a good titfuck,`;
+							}
+							r += ` and got sexual satisfaction from the ${num(mammaryUse)} times they were used this week.`;
+							slave.need -= mammaryUse;
+						}
+						break;
+					case "pregnancy":
+						if (slave.mpreg === 0) {
+							if (vaginalUse > 0) {
+								r += ` ${He} enjoys having ${his} pussy fucked, and got sexual satisfaction from the ${num(vaginalUse)} times ${he} got dick this week.`;
+								slave.need -= vaginalUse;
+							}
+						} else {
+							if (analUse > 0) {
+								r += ` ${He} enjoys having ${his} ass fucked, and got sexual satisfaction from the ${num(analUse)} times ${he} got dick this week.`;
+								slave.need -= analUse;
+							}
+						}
+						break;
+					case "humiliation":
+						r += ` ${He} enjoys the humiliation of being a whore, and got a bit of sexual satisfaction from every sex act ${he} performed this week.`;
+						slave.need -= slave.sexAmount;
+				}
+			}
+		}
+
+		if (slave.energy > 40 && slave.energy < 95) {
+			r += ` Being used sexually all week <span class="lime">increases ${his} sex drive.</span>`;
+			slave.energy += 1;
+		}
+
+		if (cervixPump > 0) {
+			r += ` ${He} notices ${his} <span class="lime">belly has swollen</span> from all the `;
+			if (slave.cervixImplant === 1) {
+				r += `vaginal`;
+			} else if (slave.cervixImplant === 2) {
+				r += `anal`;
+			}
+			r += ` sex ${he} had throughout the week.`;
+			slave.bellyImplant += cervixPump;
+		}
+	}
+
+	/** @param {App.Entity.SlaveState} slave */
+	function assignmentVignette(slave) {
+		const vignette = GetVignette(slave);
+		// I forgot what to do with __X__
+		r += ` __This week__ ${vignette.text} `;
+		if (vignette.type === "cash") {
+			const cashVign = Math.trunc(FuckResult * vignette.effect);
+			if (vignette.effect > 0) {
+				r += `<span class="yellowgreen">making you an extra ${cashFormat(cashVign)}.</span>`;
+			} else if (vignette.effect < 0) {
+				r += `<span class="red">losing you ${cashFormat(Math.abs(cashVign))}.</span>`;
+			} else {
+				r += `an incident without lasting effect.`;
+			}
+			if (slave.assignment === "work in the brothel") {
+				cashX(cashVign, "whoreBrothel", slave);
+			} else if (slave.assignment === "whore") {
+				cashX(cashVign, "whore", slave);
+			} else {
+				cashX(cashVign, "whoring in an unregistered building", slave);
+			}
+			T.incomeStats.income += cashVign;
+		} else if (vignette.type === "devotion") {
+			if (vignette.effect > 0) {
+				if (slave.devotion > 50) {
+					r += `<span class="hotpink">increasing ${his} devotion to you.</span>`;
+				} else if (slave.devotion >= -20) {
+					r += `<span class="hotpink">increasing ${his} acceptance of you.</span>`;
+				} else if (slave.devotion >= -50) {
+					r += `<span class="hotpink">reducing ${his} dislike of you.</span>`;
+				} else {
+					r += `<span class="hotpink">reducing ${his} hatred of you.</span>`;
+				}
+			} else if (vignette.effect < 0) {
+				if (slave.devotion > 50) {
+					r += `<span class="mediumorchid">reducing ${his} devotion to you.</span>`;
+				} else if (slave.devotion >= -20) {
+					r += `<span class="mediumorchid">reducing ${his} acceptance of you.</span>`;
+				} else if (slave.devotion >= -50) {
+					r += `<span class="mediumorchid">increasing ${his} dislike of you.</span>`;
+				} else {
+					r += `<span class="mediumorchid">increasing ${his} hatred of you.</span>`;
+				}
+			} else {
+				r += `an incident without lasting effect.`;
+			}
+			slave.devotion += (1 * vignette.effect);
+		} else if (vignette.type === "trust") {
+			if (vignette.effect > 0) {
+				if (slave.trust > 20) {
+					r += `<span class="mediumaquamarine">increasing ${his} trust in you.</span>`;
+				} else if (slave.trust >= -50) {
+					r += `<span class="mediumaquamarine">reducing ${his} fear of you.</span>`;
+				} else {
+					r += `<span class="mediumaquamarine">reducing ${his} terror of you.</span>`;
+				}
+			} else if (vignette.effect < 0) {
+				if (slave.trust > 20) {
+					r += `<span class="gold">reducing ${his} trust in you.</span>`;
+				} else if (slave.trust >= -20) {
+					r += `<span class="gold">increasing ${his} fear of you.</span>`;
+				} else {
+					r += `<span class="gold">increasing ${his} terror of you.</span>`;
+				}
+			} else {
+				r += `an incident without lasting effect.`;
+			}
+			slave.trust += (1 * vignette.effect);
+		} else if (vignette.type === "health") {
+			if (vignette.effect > 0) {
+				r += `<span class="green">improving ${his} health.</span>`;
+			} else if (vignette.effect < 0) {
+				r += `<span class="red">affecting ${his} health.</span>`;
+			} else {
+				r += `an incident without lasting effect.`;
+			}
+			slave.health += (2 * vignette.effect);
+		} else {
+			if (vignette.effect > 0) {
+				r += `<span class="green">gaining you a bit of reputation.</span>`;
+			} else if (vignette.effect < 0) {
+				r += `<span class="red">losing you a bit of reputation.</span>`;
+			} else {
+				r += `an incident without lasting effect.`;
+			}
+			repX(Math.trunc(FuckResult * vignette.effect * 0.1), "vignette", slave);
+			T.incomeStats.rep += Math.trunc(FuckResult * vignette.effect * 0.1);
+		}
+	}
+})();
diff --git a/src/endWeek/saWorkTheFarm.js b/src/endWeek/saWorkTheFarm.js
index 2570b995320b2b16ac95933dc5e767a6df061b20..8a1c5bb3c3a2a75b6f0a159d3da766b3ff0e525e 100644
--- a/src/endWeek/saWorkTheFarm.js
+++ b/src/endWeek/saWorkTheFarm.js
@@ -294,7 +294,7 @@ window.saWorkTheFarm = /** @param {App.Entity.SlaveState} slave */ function saWo
 		if (slave.health > 20) {
 			t += `${He} is in such excellent health that ${he} is able to put on longer and more energetic shows, earning you more. `;
 		} else if (slave.health < -20) {
-			t += `${His} poor health negatively affects ${his} ablility to put on good shows, cutting into your profits. `;
+			t += `${His} poor health negatively affects ${his} ability to put on good shows, cutting into your profits. `;
 		}
 		if (slave.face > 40) {
 			t += `${He} is so `;
diff --git a/src/events/gameover.tw b/src/events/gameover.tw
index 4b62c2d887f008e134dd8146fe534550cca6e6a6..be715635b6f3e0be4be27313cdadf5ebf784e867 100644
--- a/src/events/gameover.tw
+++ b/src/events/gameover.tw
@@ -1,94 +1,93 @@
 :: Gameover [nobr]
 
-<<if $gameover == "bombing">>
-	<<set $ui = "start">>
-	One fine day, you're strolling down the main promenade, making your usual combined inspection and public rounds. These walks are triply useful, since they allow you to keep a finger on the pulse of your demesne, identify any problems, and display yourself to the population.
-	<br><br>
-	<<if $assistantName == "your personal assistant">>Your personal assistant<<else>>$assistantName<</if>> suddenly relays a silent alarm, highlighting a scruffy individual twenty <<if $showInches == 2>>yards<<else>>meters<</if>> ahead. This person is hooded and acting oddly. You catch a glance from beneath the hood in your direction: and the figure obviously decides that it can get no closer to you. Your assistant's scanning detects the presence of an implanted bomb moments before the suicide bomber detonates themselves.
-	<br><br>
-	The implanted bomb is small, and went off too far ahead to do anything more than stun. Three other assailants run at you from where they were waiting in the confusion, wielding improvised weapons that apparently did not set off the security scanners. Without a bodyguard, decent security systems, or any other means of personal defense, you meet your ignominious death at the end of a bludgeon fashioned from a maintenance tool.
+<<switch $gameover>>
+	<<case "bombing">>
+		<<set $ui = "start">>
+		One fine day, you're strolling down the main promenade, making your usual combined inspection and public rounds. These walks are triply useful, since they allow you to keep a finger on the pulse of your demesne, identify any problems, and display yourself to the population.
+		<br><br>
+		<<if $assistantName == "your personal assistant">>Your personal assistant<<else>>$assistantName<</if>> suddenly relays a silent alarm, highlighting a scruffy individual twenty <<if $showInches == 2>>yards<<else>>meters<</if>> ahead. This person is hooded and acting oddly. You catch a glance from beneath the hood in your direction: and the figure obviously decides that it can get no closer to you. Your assistant's scanning detects the presence of an implanted bomb moments before the suicide bomber detonates themselves.
+		<br><br>
+		The implanted bomb is small, and went off too far ahead to do anything more than stun. Three other assailants run at you from where they were waiting in the confusion, wielding improvised weapons that apparently did not set off the security scanners. Without a bodyguard, decent security systems, or any other means of personal defense, you meet your ignominious death at the end of a bludgeon fashioned from a maintenance tool.
 
-	<br><br>
-	''GAME OVER''
-<<elseif $gameover == "idiot ball">>
-	<<set $ui = "start">>
-	<<setLocalPronouns $Bodyguard>>
-	You quickly move to deal $Bodyguard.slaveName a slap across the face. You have an instant to realize the depth of your folly as $his combat training kicks into gear: before $he realizes what $he's doing, $he has drawn $his sword, blocked your slap (and incidentally, removed your hand in doing so), and buried the sword in your chest on the riposte. $His devotion returns to $him as $his combat instincts subside. As you fade, you see $his eyes cloud with terrible, unhealable guilt; in one sure movement, $he draws $his weapon, sets it to semi-automatic, places it under $his chin, and fires a single round.
+		<br><br>
+		''GAME OVER''
+	<<case "idiot ball">>
+		<<set $ui = "start">>
+		<<setLocalPronouns $Bodyguard>>
+		You quickly move to deal $Bodyguard.slaveName a slap across the face. You have an instant to realize the depth of your folly as $his combat training kicks into gear: before $he realizes what $he's doing, $he has drawn $his sword, blocked your slap (and incidentally, removed your hand in doing so), and buried the sword in your chest on the riposte. $His devotion returns to $him as $his combat instincts subside. As you fade, you see $his eyes cloud with terrible, unhealable guilt; in one sure movement, $he draws $his weapon, sets it to semi-automatic, places it under $his chin, and fires a single round.
 
-	<br><br>
-	''GAME OVER''
-<<elseif $gameover == "debt">>
-	<<set $ui = "start">>
-	You have fallen so far into debt that it is mere child's play for another slaveowner to purchase your debt, call it in, and enslave you. The story of your remaining years may be worth telling, but it must be told elsewhere.
+		<br><br>
+		''GAME OVER''
+	<<case "debt">>
+		<<set $ui = "start">>
+		You have fallen so far into debt that it is mere child's play for another slaveowner to purchase your debt, call it in, and enslave you. The story of your remaining years may be worth telling, but it must be told elsewhere.
 
-	<br><br>
-	''GAME OVER''
-<<elseif $gameover == "birth complications">>
-	<<set $ui = "start">>
-	Again and again, you keep bearing down. As you grow more exhausted and are no closer to giving birth, you let out a feeble cry for help.
-	<br>
-	<br>
-	Some of your slaves rush to your aid, but they don't know what to do; they helplessly watch as you slowly fade away. If only you had someone you could rely on at your side, perhaps this could have been avoided. At last, the medics arrive at $assistantName's order, but it is too late to save you or your child<<if $PC.pregType > 1>>ren<</if>>.
+		<br><br>
+		''GAME OVER''
+	<<case "birth complications">>
+		<<set $ui = "start">>
+		Again and again, you keep bearing down. As you grow more exhausted and are no closer to giving birth, you let out a feeble cry for help.
+		<br>
+		<br>
+		Some of your slaves rush to your aid, but they don't know what to do; they helplessly watch as you slowly fade away. If only you had someone you could rely on at your side, perhaps this could have been avoided. At last, the medics arrive at $assistantName's order, but it is too late to save you or your child<<if $PC.pregType > 1>>ren<</if>>.
 
-	<br><br>
-	''GAME OVER''
-<<elseif $gameover == "ownership">>
-	<<set $ui = "start">>
-	Since you no longer possess a controlling interest in an arcology, your time of influence and power in the Free Cities is over. You remain wealthy, and your life after the part of it worth telling is not something worth regretting. A retirement full of decadence awaits you.
+		<br><br>
+		''GAME OVER''
+	<<case "ownership">>
+		<<set $ui = "start">>
+		Since you no longer possess a controlling interest in an arcology, your time of influence and power in the Free Cities is over. You remain wealthy, and your life after the part of it worth telling is not something worth regretting. A retirement full of decadence awaits you.
 
-	<br><br>
-	''GAME OVER''
-<<elseif $gameover == "sisters">>
-	<<set $ui = "start">>
-	For the first time in a long time, you feel the need to verbalize a response, telling the matron that yes, you will join them. She seems to understand, and takes you by the hand in a surprisingly familial gesture, leading you towards the orgy. She tells you she loves you, and all her Sisters echo her. After a moments' surprise, you tell them you love them too, and feminine hands reach out to draw you into their communion. A young futa sucks your cock and then feeds you your own cum from her mouth. An older futa with an enormous penis displaces her and makes out with you while she fucks your pussy. After she finishes inside you she slides your erection inside her own womanhood and rides you while a younger futa fucks your cleavage. You have a free hand which someone fills by pressing an enormous soft breast against it and you oblige her by massaging it eagerly. The futa matron's pussy grows suddenly tighter as another futa starts to buttfuck her and then looser as the cock is removed and inserted into your asshole instead. When she cums inside you she pulls out and her cock is replaced by a greedy mouth and tongue whose owner you cannot see. The older futa presses her cockhead into a younger Sister's mouth and orgasms before sliding herself under you so you can be on top instead. A futa whispers that she wants to be closer to you and slides her cock inside the matron's pussy alongside yours as she nestles her face between your breasts.
-	<br><br>
-	Your appointed successor arrives in your old office to find $assistantName ready to help them take control of the arcology. Most of your assets have been liquidated to create a huge endowment for $arcologies[0].name's Sisters. They'll never have to sell one of their own again, and will be able to afford all the advanced drugs and surgeries they desire. From the most matronly futa down to their newest Sister, none of them need concern themselves with anything other than sex.
+		<br><br>
+		''GAME OVER''
+	<<case "sisters">>
+		<<set $ui = "start">>
+		For the first time in a long time, you feel the need to verbalize a response, telling the matron that yes, you will join them. She seems to understand, and takes you by the hand in a surprisingly familial gesture, leading you towards the orgy. She tells you she loves you, and all her Sisters echo her. After a moments' surprise, you tell them you love them too, and feminine hands reach out to draw you into their communion. A young futa sucks your cock and then feeds you your own cum from her mouth. An older futa with an enormous penis displaces her and makes out with you while she fucks your pussy. After she finishes inside you she slides your erection inside her own womanhood and rides you while a younger futa fucks your cleavage. You have a free hand which someone fills by pressing an enormous soft breast against it and you oblige her by massaging it eagerly. The futa matron's pussy grows suddenly tighter as another futa starts to buttfuck her and then looser as the cock is removed and inserted into your asshole instead. When she cums inside you she pulls out and her cock is replaced by a greedy mouth and tongue whose owner you cannot see. The older futa presses her cockhead into a younger Sister's mouth and orgasms before sliding herself under you so you can be on top instead. A futa whispers that she wants to be closer to you and slides her cock inside the matron's pussy alongside yours as she nestles her face between your breasts.
+		<br><br>
+		Your appointed successor arrives in your old office to find $assistantName ready to help them take control of the arcology. Most of your assets have been liquidated to create a huge endowment for $arcologies[0].name's Sisters. They'll never have to sell one of their own again, and will be able to afford all the advanced drugs and surgeries they desire. From the most matronly futa down to their newest Sister, none of them need concern themselves with anything other than sex.
 
-	<br><br>
-	''GAME OVER''
+		<br><br>
+		''GAME OVER''
+	<<case "major battle defeat">>
+		<<set $ui = "start">>
+		<<if $attackType == "raiders">>
+			As the horde of raiders breaks the battle lines and enters the arcology, all hell breaks loose. You citizens are raped, your slaves captured and abused, your penthouse burned.
+			As for you, you are quickly captured and brought in front of the warlord himself. With a satisfied smile he aims his pistol to your forehead and squeezes the trigger.
+		<<elseif $attackType == "old world">>
+			As the interminable column of old world puppets breaks the battle lines and enters the arcology, all hell breaks loose. Properties are seized and wealth stolen and distributed between the victorious soldiers.
+			You are stripped of everything you possessed and left to rot in a corner of your once glorious arcology.
+		<<elseif $attackType == "freedom fighters">>
+			As the army of freedom fighters invades the arcology, all hell breaks loose. Their righteous fury torches everything you held dear, while the streets of the arcology run red with the blood of the masters.
+			You are reserved a special death: crucified in front of the arcology's entrance, your corpse a grim reminder of your legacy.
+		<<elseif $attackType == "free city">>
+			As the mercenaries break the battle lines and enter the arcology all hell breaks loose. The sectors are pillaged one by one, systematically and thoroughly. When they break in the penthouse they quickly capture and send you to their employers as proof of their success.
+			Your personal story may continue, but that part of it worthy of retelling has now ended.
+		<</if>>
 
-<<elseif $gameover == "major battle defeat">>
-	<<set $ui = "start">>
-	<<if $attackType == "raiders">>
-		As the horde of raiders breaks the battle lines and enters the arcology, all hell breaks loose. You citizens are raped, your slaves captured and abused, your penthouse burned.
-		As for you, you are quickly captured and brought in front of the warlord himself. With a satisfied smile he aims his pistol to your forehead and squeezes the trigger.
-	<<elseif $attackType == "old world">>
-		As the interminable column of old world puppets breaks the battle lines and enters the arcology, all hell breaks loose. Properties are seized and wealth stolen and distributed between the victorious soldiers.
-		You are stripped of everything you possessed and left to rot in a corner of your once glorious arcology.
-	<<elseif $attackType == "freedom fighters">>
-		As the army of freedom fighters invades the arcology, all hell breaks loose. Their righteous fury torches everything you held dear, while the streets of the arcology run red with the blood of the masters.
-		You are reserved a special death: crucified in front of the arcology's entrance, your corpse a grim reminder of your legacy.
-	<<elseif $attackType == "free city">>
-		As the mercenaries break the battle lines and enter the arcology all hell breaks loose. The sectors are pillaged one by one, systematically and thoroughly. When they break in the penthouse they quickly capture and send you to their employers as proof of their success.
-		Your personal story may continue, but that part of it worthy of retelling has now ended.
-	<</if>>
+		<br><br>
+		''GAME OVER''
+	<<case "Rebellion defeat">>
+		<<set $ui = "start">>
+		<<if $slaveRebellion == 1>>
+			As the furious horde of slaves invades your penthouse you are left a few precious seconds to decide your fate. You embrace for the last time your faithful revolver and just as the rebels break through your doors you squeeze the trigger.
+			The end of your story has come and your arcology is now in the hands of whoever will take control of the vermin that dared rise up this day.
+		<<else>>
+			As the furious horde of citizens invades your penthouse you are left a few precious seconds to decide your fate. You embrace for the last time your faithful revolver and just as the rebels break through your doors you squeeze the trigger.
+			The end of your story has come and your arcology is now in the hands of whoever will take control of the vermin that dared rise up this day.
+		<</if>>
 
-	<br><br>
-	''GAME OVER''
-<<elseif $gameover == "Rebellion defeat">>
-	<<set $ui = "start">>
-	<<if $slaveRebellion == 1>>
-		As the furious horde of slaves invades your penthouse you are left a few precious seconds to decide your fate. You embrace for the last time your faithful revolver and just as the rebels break through your doors you squeeze the trigger.
-		The end of your story has come and your arcology is now in the hands of whoever will take control of the vermin that dared rise up this day.
-	<<else>>
-		As the furious horde of citizens invades your penthouse you are left a few precious seconds to decide your fate. You embrace for the last time your faithful revolver and just as the rebels break through your doors you squeeze the trigger.
-		The end of your story has come and your arcology is now in the hands of whoever will take control of the vermin that dared rise up this day.
-	<</if>>
+		<br><br>
+		''GAME OVER''
+	<<case "Idiot Ball 2 The Dumbassening">>
+	<<case "Idiot Ball 3 Totally Not Idiot Ball 2 Again">>
+		<<set $ui = "start">>
+		As you leave your penthouse to conduct your daily rounds, you promptly get <<if $arcologyUpgrade.drones == 1>>tased by the nearest drone<<else>>tackled hard against the wall<</if>>. When you awake, it hits you like a truck; you idiotically enslaved your $PC.race ass by decreeing all <<if $gameover == "Idiot Ball 2 The Dumbassening">>non-<<print $arcologies[0].FSSupremacistRace>><<else>><<print $arcologies[0].FSSubjugationistRace>><</if>><<if $PC.race != "mixed race">>s<<else>> individuals<</if>> slaves, and since you are now a slave, lack the authority to revert the policy. The story of your remaining years may be worth telling, as is your legendary blunder, but it must be told elsewhere.
 
-	<br><br>
-	''GAME OVER''
+		<br><br>
+		''GAME OVER''
+	<<default>>
+		<<set $ui = "start">>
+		Since you are without slaves, Free Cities society no longer considers you a citizen of the first rank. Your personal story may continue, but that part of it worthy of retelling has now ended.
 
-<<elseif $gameover == "Idiot Ball 2 The Dumbassening" || $gameover == "Idiot Ball 3 Totally Not Idiot Ball 2 Again">>
-	<<set $ui = "start">>
-	As you leave your penthouse to conduct your daily rounds, you promptly get <<if $arcologyUpgrade.drones == 1>>tased by the nearest drone<<else>>tackled hard against the wall<</if>>. When you awake, it hits you like a truck; you idiotically enslaved your $PC.race ass by decreeing all <<if $gameover == "Idiot Ball 2 The Dumbassening">>non-<<print $arcologies[0].FSSupremacistRace>><<else>><<print $arcologies[0].FSSubjugationistRace>><</if>><<if $PC.race != "mixed race">>s<<else>> individuals<</if>> slaves, and since you are now a slave, lack the authority to revert the policy. The story of your remaining years may be worth telling, as is your legendary blunder, but it must be told elsewhere.
-
-	<br><br>
-	''GAME OVER''
-
-<<else>>
-	<<set $ui = "start">>
-	Since you are without slaves, Free Cities society no longer considers you a citizen of the first rank. Your personal story may continue, but that part of it worthy of retelling has now ended.
-
-	<br><br>
-	''GAME OVER''
-<</if>>
\ No newline at end of file
+		<br><br>
+		''GAME OVER''
+<</switch>>
\ No newline at end of file
diff --git a/src/events/intro/introSummary.tw b/src/events/intro/introSummary.tw
index 128a3b61130b0c825909cf529276e88dff998635..91623ebf7e6091670f8fe31c62333e4902e733d8 100644
--- a/src/events/intro/introSummary.tw
+++ b/src/events/intro/introSummary.tw
@@ -260,9 +260,9 @@ __''General slave settings''__
 /% Begin mod section: toggle whether slaves lisp. %/
 
 <<options $disableLisping>>
-<<option 0 "Disable Lisping">>
+<<option 1 "Disable Lisping">>
 	Lisping: ''slaves will not lisp''.
-<<option 1 "Enable Lisping">>
+<<option 0 "Enable Lisping">>
 	Lisping: ''slaves with fat lips or heavy oral piercings will lisp''.
 <</options>>
 
diff --git a/src/facilities/arcade/arcadeFramework.js b/src/facilities/arcade/arcadeFramework.js
new file mode 100644
index 0000000000000000000000000000000000000000..97e9412caf367641a4b446fbdf23924bc3c5c6c1
--- /dev/null
+++ b/src/facilities/arcade/arcadeFramework.js
@@ -0,0 +1,36 @@
+App.Data.Facilities.arcade = {
+	baseName: "arcade",
+	genericName: null,
+	jobs: {
+		assignee: {
+			position: "whore",
+			assignment: "be confined in the arcade",
+			publicSexUse: true,
+			fuckdollAccepted: true
+		},
+	},
+	defaultJob: "assignee",
+	manager: null
+}
+
+App.Entity.Facilities.ArcadeJob = class extends App.Entity.Facilities.FacilitySingleJob {
+	/**
+	 * Can slave be employed at this position
+	 * @param {App.Entity.SlaveState} slave
+	 * @returns {string[]}
+	 */
+	canEmploy(slave) {
+		let r = super.canEmploy(slave);
+		if (slave.indentureRestrictions > 0) {
+			r.push(`${slave.slaveName}'s indenture forbids arcade service.`)
+		}
+		return r;
+	}
+}
+
+App.Entity.facilities.arcade = new App.Entity.Facilities.Facility(
+	App.Data.Facilities.arcade,
+	{
+		assignee: new App.Entity.Facilities.ArcadeJob()
+	}
+);
diff --git a/src/facilities/armory/armoryFramework.js b/src/facilities/armory/armoryFramework.js
new file mode 100644
index 0000000000000000000000000000000000000000..01d50b48357cecc4786a0e2019714f009c4e5da6
--- /dev/null
+++ b/src/facilities/armory/armoryFramework.js
@@ -0,0 +1,25 @@
+App.Data.Facilities.armory = {
+	baseName: "dojo",
+	genericName: "armory",
+	jobs: {	},
+	defaultJob: null,
+	manager: {
+		position: "bodyguard",
+		assignment: "guard you",
+		careers: ["a bodyguard", "a boxer", "a bully hunter", "a child soldier", "a hitman", "a kunoichi", "a law enforcement officer", "a military brat", "a prince", "a revolutionary", "a sniper", "a soldier", "a transporter", "an assassin", "an MS pilot", "captain of the kendo club", "in a militia", "spec ops"],
+		skill: "bodyguard",
+		publicSexUse: true,
+		fuckdollAccepted: false,
+		broodmotherAccepted: false,
+		shouldWalk: true,
+		shouldSee: true,
+		shouldHear: true,
+		shouldTalk: false,
+		shouldThink: true,
+		requiredDevotion: 51
+	}
+}
+
+App.Entity.facilities.armory = new App.Entity.Facilities.Facility(
+	App.Data.Facilities.armory
+);
diff --git a/src/facilities/brothel/brothelFramework.js b/src/facilities/brothel/brothelFramework.js
new file mode 100644
index 0000000000000000000000000000000000000000..a816578a5f17e0895b81fdad4dbf596a87822ef7
--- /dev/null
+++ b/src/facilities/brothel/brothelFramework.js
@@ -0,0 +1,66 @@
+App.Data.Facilities.brothel = {
+	baseName: "brothel",
+	genericName: null,
+	jobs: {
+		assignee: {
+			position: "whore",
+			assignment: "work in the brothel",
+			publicSexUse: true,
+			fuckdollAccepted: false
+		},
+	},
+	defaultJob: "assignee",
+	manager: {
+		position: "madam",
+		assignment: "be the Madam",
+		careers: ["a banker", "a business owner", "a businessman", "a camp counselor", "a club manager", "a hotel manager", "a landlady", "a madam", "a manager", "a park ranger", "a pimp", "a procuress", "a stockbroker", "an innkeeper"],
+		skill: null,
+		publicSexUse: true,
+		fuckdollAccepted: false,
+		broodmotherAccepted: false,
+		shouldWalk: true,
+		shouldSee: true,
+		shouldHear: true,
+		shouldTalk: true,
+		shouldThink: true,
+		requiredDevotion: 50
+	}
+}
+
+App.Entity.Facilities.BrothelJob = class extends App.Entity.Facilities.FacilitySingleJob {
+	/**
+	 * @param {App.Entity.SlaveState} slave
+	 * @returns {string[]}
+	 */
+	canEmploy(slave) {
+		let r = super.canEmploy(slave);
+
+		// condition is the same as for the club
+		if (!App.Entity.Facilities.Job._isBrokenEnough(slave, 51, -50, -20, -50, 50)) {
+			r.push(App.Entity.Facilities.Job._stdBreakageMessage(slave));
+		}
+		return r;
+	}
+}
+
+App.Entity.Facilities.MadamJob = class extends App.Entity.Facilities.ManagingJob {
+	/**
+	 * @param {App.Entity.SlaveState} slave
+	 * @returns {string[]}
+	 */
+	canEmploy(slave) {
+		let r = super.canEmploy(slave);
+		if (slave.intelligence + slave.intelligenceImplant < -50) {
+			r.push(`${slave.slaveName} is not intelligent enough to be the Madam.`);
+		}
+		return r;
+	}
+}
+
+App.Entity.facilities.brothel = new App.Entity.Facilities.Facility(
+	App.Data.Facilities.brothel,
+	{
+		assignee: new App.Entity.Facilities.BrothelJob()
+	},
+	new App.Entity.Facilities.MadamJob()
+);
diff --git a/src/facilities/cellblock/cellblockFramework.js b/src/facilities/cellblock/cellblockFramework.js
new file mode 100644
index 0000000000000000000000000000000000000000..c07c3473efeb9dae4826f6425358df59f21b8d02
--- /dev/null
+++ b/src/facilities/cellblock/cellblockFramework.js
@@ -0,0 +1,52 @@
+App.Data.Facilities.cellblock = {
+	baseName: "cellblock",
+	genericName: null,
+	jobs: {
+		assignee: {
+			position: "confinee",
+			assignment: "be confined in the cellblock",
+			publicSexUse: false,
+			fuckdollAccepted: false
+		},
+	},
+	defaultJob: "assignee",
+	manager: {
+		position: "wardness",
+		assignment: "be the Wardeness",
+		careers: ["a bouncer", "a bounty hunter", "a bully", "a chief of police", "a gang member", "a hall monitor", "a mercenary", "a police detective", "a police officer", "a prison guard", "a prison warden", "a private detective", "a security guard", "a street thug", "an enforcer", "an orderly"],
+		skill: "wardeness",
+		publicSexUse: false,
+		fuckdollAccepted: false,
+		broodmotherAccepted: false,
+		shouldWalk: true,
+		shouldSee: true,
+		shouldHear: true,
+		shouldTalk: false,
+		shouldThink: false,
+		requiredDevotion: 51
+
+	}
+}
+
+App.Entity.Facilities.CellblockJob = class extends App.Entity.Facilities.FacilitySingleJob {
+	/**
+	 * @param {App.Entity.SlaveState} slave
+	 * @returns {string[]}
+	 */
+	canEmploy(slave) {
+		let r = super.canEmploy(slave);
+
+		if ((slave.devotion > -20 || slave.trust < -20) && (slave.devotion >= -50 || slave.trust < -50)) {
+			r.push(`${slave.slaveName} is not defiant enough for ${this.facility.name} to have an effect.`);
+		}
+
+		return r;
+	}
+}
+
+App.Entity.facilities.cellblock = new App.Entity.Facilities.Facility(
+	App.Data.Facilities.cellblock,
+	{
+		assignee: new App.Entity.Facilities.CellblockJob()
+	}
+);
diff --git a/src/facilities/clinic/clinicFramework.js b/src/facilities/clinic/clinicFramework.js
new file mode 100644
index 0000000000000000000000000000000000000000..d2192203b0e8b87cfd2398499d619d2466af491a
--- /dev/null
+++ b/src/facilities/clinic/clinicFramework.js
@@ -0,0 +1,55 @@
+App.Data.Facilities.clinic = {
+	baseName: "clinic",
+	genericName: null,
+	jobs: {
+		patient: {
+			position: "patient",
+			assignment: "get treatment in the clinic",
+			publicSexUse: false,
+			fuckdollAccepted: false
+		}
+	},
+	defaultJob: "patient",
+	manager: {
+		position: "nurse",
+		assignment: "be the Nurse",
+		careers: ["a chemist", "a chiropractor", "a coroner", "a dentist", "a doctor", "a hospital volunteer", "a medic", "a medical student", "a midwife", "a mortician", "a nurse", "a paramedic", "a pharmacist", "a physician", "a school nurse's assistant", "a school nurse", "a surgeon"],
+		skill: "nurse",
+		publicSexUse: false,
+		fuckdollAccepted: false,
+		broodmotherAccepted: false,
+		shouldWalk: true,
+		shouldSee: true,
+		shouldHear: true,
+		shouldTalk: false,
+		shouldThink: true,
+		requiredDevotion: 51
+	}
+}
+
+App.Entity.Facilities.ClinicPatientJob = class extends App.Entity.Facilities.FacilitySingleJob {
+	/**
+	 * @param {App.Entity.SlaveState} slave
+	 * @returns {string[]}
+	 */
+	canEmploy(slave) {
+		let r = super.canEmploy(slave);
+		const V = State.variables;
+
+		if ((slave.health >= 20) &&
+			(V.Nurse === 0 || ((slave.chem <= 15 || this.facility.upgrade("Filters") !== 1) &&
+				(V.bellyImplants !== 1 || slave.bellyImplant <= -1) &&
+				(slave.pregKnown !== 1 || (this.facility.option("SpeedGestation") <= 0 && slave.pregControl !== "speed up")) && (slave.pregAdaptation * 1000 >= slave.bellyPreg && slave.preg <= slave.pregData.normalBirth / 1.33)))) {
+			r.push(`${slave.slaveName} cannot benefit from ${this.facility.name}.`);
+		}
+
+		return r;
+	}
+}
+
+App.Entity.facilities.clinic = new App.Entity.Facilities.Facility(
+	App.Data.Facilities.clinic,
+	{
+		patient: new App.Entity.Facilities.ClinicPatientJob()
+	}
+);
diff --git a/src/facilities/club/clubFramework.js b/src/facilities/club/clubFramework.js
new file mode 100644
index 0000000000000000000000000000000000000000..131d99d7e2cdcd1ce51f4d7410cd1741918ed161
--- /dev/null
+++ b/src/facilities/club/clubFramework.js
@@ -0,0 +1,64 @@
+App.Data.Facilities.club = {
+	baseName: "club",
+	genericName: null,
+	jobs: {
+		slut: {
+			position: "Slut",
+			assignment: "serve in the club",
+			publicSexUse: true,
+			fuckdollAccepted: false
+		},
+	},
+	defaultJob: "slut",
+	manager: {
+		position: "DJ",
+		assignment: "be the DJ",
+		careers: ["a classical dancer", "a classical musician", "a dancer", "a house DJ", "a marching band leader", "a musician", "a radio show host", "an aspiring pop star", "an idol", "an orchestra conductor"],
+		skill: "DJ",
+		publicSexUse: false,
+		fuckdollAccepted: false,
+		broodmotherAccepted: false,
+		shouldWalk: true,
+		shouldSee: false,
+		shouldHear: true,
+		shouldTalk: true,
+		shouldThink: true,
+		requiredDevotion: 51
+	}
+}
+
+App.Entity.Facilities.ClubSlutJob = class extends App.Entity.Facilities.FacilitySingleJob {
+	/**
+	 * @param {App.Entity.SlaveState} slave
+	 * @returns {string[]}
+	 */
+	canEmploy(slave) {
+		let r = super.canEmploy(slave);
+
+		// condition is the same as for the brothel
+		// TODO: consider moving this to App.Entity.Facilities.SexJob
+		if (!App.Entity.Facilities.Job._isBrokenEnough(slave, 51, -50, -20, -50, 50)) {
+			r.push(App.Entity.Facilities.Job._stdBreakageMessage(slave));
+		}
+
+		return r;
+	}
+}
+
+App.Entity.Facilities.ClubDJJob = class extends App.Entity.Facilities.ManagingJob {
+	canEmploy(slave) {
+		let r = super.canEmploy(slave);
+		if (slave.intelligence + slave.intelligenceImplant < -50) {
+			r.push(`${slave.slaveName} is not intelligent enough to DJ.`);
+		}
+		return r;
+	}
+}
+
+App.Entity.facilities.club = new App.Entity.Facilities.Facility(
+	App.Data.Facilities.club,
+	{
+		slut: new App.Entity.Facilities.ClubSlutJob()
+	},
+	new App.Entity.Facilities.ClubDJJob()
+);
diff --git a/src/facilities/dairy/dairyFramework.js b/src/facilities/dairy/dairyFramework.js
new file mode 100644
index 0000000000000000000000000000000000000000..9f960df229e9786e8a883c177c354c392d75817e
--- /dev/null
+++ b/src/facilities/dairy/dairyFramework.js
@@ -0,0 +1,89 @@
+App.Data.Facilities.dairy = {
+	baseName: "dairy",
+	genericName: null,
+	jobs: {
+		cow: {
+			position: "cow",
+			assignment: "work in the dairy",
+			publicSexUse: false,
+			fuckdollAccepted: false
+		}
+	},
+	defaultJob: "cow",
+	manager: {
+		position: "milkmaid",
+		assignment: "be the Milkmaid",
+		careers: ["a cowgirl", "a dairy worker", "a farmer's daughter", "a milkmaid", "a shepherd", "a veterinarian"],
+		skill: "milkmaid",
+		publicSexUse: false,
+		fuckdollAccepted: false,
+		broodmotherAccepted: false,
+		shouldWalk: true,
+		shouldSee: true,
+		shouldHear: true,
+		shouldTalk: false,
+		shouldThink: true,
+		requiredDevotion: 21
+	}
+}
+
+App.Entity.Facilities.DairyCowJob = class extends App.Entity.Facilities.FacilitySingleJob {
+	/**
+	 * @param {App.Entity.SlaveState} slave
+	 * @returns {string[]}
+	 */
+	canEmploy(slave) {
+		let r = super.canEmploy(slave);
+
+		const V = State.variables;
+
+		if ((slave.indentureRestrictions > 0) && (V.dairyRestraintsSetting > 1)) {
+			r.push(`${slave.slaveName}'s indenture forbids extractive Dairy service.`);
+		}
+		if ((slave.indentureRestrictions > 1) && (V.dairyRestraintsSetting > 0)) {
+			r.push(`${slave.slaveName}'s indenture allows only free range milking.`);
+		}
+		if (slave.breedingMark === 1 && V.propOutcome === 1 && V.dairyRestraintsSetting > 0) {
+			r.push(`${slave.slaveName} may only be a free range cow.`);
+		}
+		if ((V.dairyPregSetting > 0) && ((slave.bellyImplant !== -1) || (slave.broodmother !== 0))) {
+			r.push(`${slave.slaveName}'s womb cannot accommodate current machine settings.`);
+		}
+
+		if ((slave.amp !== 1) && (this.facility.option("RestraintsUpgrade") !== 1) &&
+			!App.Entity.Facilities.Job._isBrokenEnough(slave, 20, -50, -20, -50)) {
+			r.push(`${slave.slaveName} must be obedient in order to be milked at ${this.facility.name}.`);
+		}
+
+		if ((slave.lactation === 0) && (slave.balls === 0) && ((V.dairySlimMaintainUpgrade !== 1 && V.dairySlimMaintain <= 0) || (slave.boobs <= 300 && slave.balls !== 0 && V.dairyImplantsSetting !== 1) || V.dairyImplantsSetting === 2)) {
+			if ((V.dairySlimMaintainUpgrade === 1 && V.dairySlimMaintain === 1) || (V.dairyImplantsSetting === 2) || (slave.boobs <= 300 && slave.balls > 0 && (V.dairyImplantsSetting === 0 || V.dairyImplantsSetting === 3))) {
+				r.push(`${slave.slaveName} is not lactating ` + ((V.seeDicks > 0) ? 'or producing semen ' : '') + `and ${this.facility.name}'s current settings forbid the automatic implantation of lactation inducing drugs or manual stimulation to induce it, and thus cannot be a cow.`);
+			} else {
+				r.push(`${slave.slaveName} is not lactating ` + ((V.seeDicks > 0) ? 'or producing semen ' : '') + 'and cannot be a cow.');
+			}
+		} else if ((V.dairyStimulatorsSetting >= 2) && (slave.anus <= 2) && (V.dairyPrepUpgrade !== 1)) {
+			r.push(`${slave.slaveName}'s anus cannot accommodate current machine settings.`);
+		} else if ((V.dairyPregSetting >= 2) && (slave.vagina <= 2) && (slave.ovaries !== 0) && (V.dairyPrepUpgrade !== 1)) {
+			r.push(`${slave.slaveName}'s vagina cannot accommodate current machine settings.`);
+		}
+
+		return r;
+	}
+}
+
+App.Entity.Facilities.Dairy = class extends App.Entity.Facilities.Facility {
+	constructor() {
+		super(App.Data.Facilities.dairy,
+			{
+			cow: new App.Entity.Facilities.DairyCowJob()
+		});
+	}
+
+	get hasFreeSpace() {
+		const V = State.variables;
+		const dairySeed = V.bioreactorsXY + V.bioreactorsXX + V.bioreactorsHerm + V.bioreactorsBarren;
+		return this.capacity > this.hostedSlaves + dairySeed;
+	}
+}
+
+App.Entity.facilities.dairy = new App.Entity.Facilities.Dairy();
diff --git a/src/facilities/farmyard/farmyardFramework.js b/src/facilities/farmyard/farmyardFramework.js
new file mode 100644
index 0000000000000000000000000000000000000000..79ba34d55359e25ea8bc7ac881b132b47e19b762
--- /dev/null
+++ b/src/facilities/farmyard/farmyardFramework.js
@@ -0,0 +1,32 @@
+App.Data.Facilities.farmyard = {
+	baseName: "farmyard",
+	genericName: null,
+	jobs: {
+		farmhand: {
+			position: "farmhand",
+			assignment: "work as a farmhand",
+			publicSexUse: false,
+			fuckdollAccepted: false
+		}
+	},
+	defaultJob: "farmhand",
+	manager: {
+		position: "farmer",
+		assignment: "be the Farmer",
+		careers: ["a beekeeper", "a bullfighter", "a farmer", "a farmhand", "a rancher", "a rodeo star", "a zookeeper"],
+		skill: "farmer",
+		publicSexUse: false,
+		fuckdollAccepted: false,
+		broodmotherAccepted: false,
+		shouldWalk: true,
+		shouldSee: true,
+		shouldHear: true,
+		shouldTalk: false,
+		shouldThink: true,
+		requiredDevotion: 51
+	}
+}
+
+App.Entity.facilities.farmyard = new App.Entity.Facilities.Facility(
+	App.Data.Facilities.farmyard
+);
diff --git a/src/facilities/farmyard/farmyardReport.tw b/src/facilities/farmyard/farmyardReport.tw
index 67d291c1b3e9124c424210e8d423581fd0000b0c..6f9e1ec35c5bc29378cf24e4da56e2ff1089f3bc 100644
--- a/src/facilities/farmyard/farmyardReport.tw
+++ b/src/facilities/farmyard/farmyardReport.tw
@@ -265,7 +265,7 @@
 			<<silently>>
 			<<include "SA chooses own job">>
 			<<_dump = saWorkTheFarm($slaves[$i])>>
-			<<include "SA work the farm">>
+			$He <<= saWorkTheFarm($slaves[$i])>>
 			<<set _chosenClothes = saChoosesOwnClothes($slaves[$i])>>
 			<<include "SA rules">>
 			<<include "SA diet">>
@@ -301,7 +301,7 @@
 		b.customers = 0;
 		b.farmhandCosts = 0;
 		b.rep = 0;
-		for(var si of b.income.values()) {
+		for (var si of b.income.values()) {
 			b.farmhandIncome += si.income + si.adsIncome;
 			b.customers += si.customers;
 			b.farmhandCosts += si.cost;
diff --git a/src/facilities/headGirlSuite/headGirlSuiteFramework.js b/src/facilities/headGirlSuite/headGirlSuiteFramework.js
new file mode 100644
index 0000000000000000000000000000000000000000..a40d3cf0a8452f9fe2facf3315d01f44cd2c3108
--- /dev/null
+++ b/src/facilities/headGirlSuite/headGirlSuiteFramework.js
@@ -0,0 +1,32 @@
+App.Data.Facilities.headGirlSuite = {
+	baseName: "HGSuite",
+	genericName: null,
+	jobs: {
+		HGToy: {
+			position: "Head Girl's toy",
+			assignment: "live with your Head Girl",
+			publicSexUse: true,
+			fuckdollAccepted: false
+		}
+	},
+	defaultJob: "HGToy",
+	manager: {
+		position: "Head Girl",
+		assignment: "be your Head Girl",
+		careers: ["a captain", "a corporate executive", "a director", "a dominatrix", "a gang leader", "a judge", "a lawyer", "a leading arcology citizen", "a military officer", "a model-UN star", "a noblewoman", "a politician", "a Queen", "a slaver", "a student council president"],
+		skill: "headGirl",
+		publicSexUse: false,
+		fuckdollAccepted: false,
+		broodmotherAccepted: false,
+		shouldWalk: true,
+		shouldSee: true,
+		shouldHear: true,
+		shouldTalk: true,
+		shouldThink: true,
+		requiredDevotion: 51
+	}
+}
+
+App.Entity.facilities.headGirlSuite = new App.Entity.Facilities.Facility(
+	App.Data.Facilities.headGirlSuite
+);
diff --git a/src/facilities/masterSuite/masterSuiteFramework.js b/src/facilities/masterSuite/masterSuiteFramework.js
new file mode 100644
index 0000000000000000000000000000000000000000..ad1b86a9eeb3f339b59af9928f1c894e8430c395
--- /dev/null
+++ b/src/facilities/masterSuite/masterSuiteFramework.js
@@ -0,0 +1,61 @@
+App.Data.Facilities.masterSuite = {
+	baseName: "masterSuite",
+	genericName: "Master Suite",
+	jobs: {
+		fucktoy: {
+			position: "fucktoy",
+			assignment: "serve in the master suite",
+			publicSexUse: false,
+			fuckdollAccepted: false
+		}
+	},
+	defaultJob: "fucktoy",
+	manager: {
+		position: "concubine",
+		assignment: "be your Concubine",
+		careers: [],
+		skill: null,
+		publicSexUse: false,
+		fuckdollAccepted: false,
+		broodmotherAccepted: true,
+		shouldWalk: false,
+		shouldSee: false,
+		shouldHear: false,
+		shouldTalk: false,
+		shouldThink: false,
+		requiredDevotion: 51
+	}
+}
+
+App.Entity.Facilities.MasterSuiteFuckToyJob = class extends App.Entity.Facilities.FacilitySingleJob {
+	/**
+	 * @param {App.Entity.SlaveState} slave
+	 * @returns {string[]}
+	 */
+	canEmploy(slave) {
+		let r = super.canEmploy(slave);
+		if (!App.Entity.Facilities.Job._isBrokenEnough(slave, 20, -51, -21, -50)) {
+			r.push(`${slave.slaveName} is not sufficiently broken for ${this.facility.name}.`);
+		}
+
+		return r;
+	}
+}
+
+App.Entity.Facilities.ConcubineJob = class extends App.Entity.Facilities.ManagingJob {
+	canEmploy(slave) {
+		let r = super.canEmploy(slave);
+		if (slave.amp === 1) {
+			r.push(`${slave.slaveName} can't serve as your Concubine without limbs.`)
+		}
+		return r;
+	}
+}
+
+App.Entity.facilities.masterSuite = new App.Entity.Facilities.Facility(
+	App.Data.Facilities.masterSuite,
+	{
+		fucktoy: new App.Entity.Facilities.MasterSuiteFuckToyJob()
+	},
+	new App.Entity.Facilities.ConcubineJob()
+);
diff --git a/src/facilities/nursery/longChildDescription.tw b/src/facilities/nursery/longChildDescription.tw
index a8a7c2c39e570c8adfcf83afd9bc2076d2d9138b..46b07d4b00f824bf92ae3c86acf26c1a5bb36900 100644
--- a/src/facilities/nursery/longChildDescription.tw
+++ b/src/facilities/nursery/longChildDescription.tw
@@ -821,7 +821,7 @@ is
 	<</if>>
 	Entertainment and prostitution skills are irrelevant for a Fuckdoll.
 <<else>>
-	<<if $activeChild.skill.whore <= 10>>
+	<<if $activeChild.skill.whoring <= 10>>
 		<<if $activeChild.skill.entertainment <= 10>>
 		<<elseif $activeChild.skill.entertainment <= 30>>
 			$He is @@.aquamarine;reasonably entertaining.@@
@@ -844,12 +844,12 @@ is
 			$He is a @@.aquamarine;master of entertainment@@ and
 		<</if>>
 	<</if>>
-	<<if $activeChild.skill.whore <= 10>>
-	<<elseif $activeChild.skill.whore <= 30>>
+	<<if $activeChild.skill.whoring <= 10>>
+	<<elseif $activeChild.skill.whoring <= 30>>
 		<<if $activeChild.skill.entertainment <= 10>>$He <</if>>has @@.aquamarine;basic experience as a prostitute.@@
-	<<elseif $activeChild.skill.whore <= 60>>
+	<<elseif $activeChild.skill.whoring <= 60>>
 		<<if $activeChild.skill.entertainment <= 10>>$He is <</if>>a @@.aquamarine;skilled streetwalker.@@
-	<<elseif $activeChild.skill.whore < 100>>
+	<<elseif $activeChild.skill.whoring < 100>>
 		<<if $activeChild.skill.entertainment <= 10>>$He is <</if>>an @@.aquamarine;expert working $girl.@@
 	<<else>>
 		<<if $activeChild.skill.entertainment <= 10>>$He is <</if>>a @@.aquamarine;masterful whore.@@
diff --git a/src/facilities/nursery/nursery.tw b/src/facilities/nursery/nursery.tw
index 2566ba7dcf7f81689654e4b620c8e1eb88ac86fe..b8b2810635dd579145a571ce2cc9c571e0ecac85 100644
--- a/src/facilities/nursery/nursery.tw
+++ b/src/facilities/nursery/nursery.tw
@@ -95,7 +95,7 @@ $nurseryNameCaps
 
 /*TODO: add a malus for having children without nannies*/
 <<set _Tmult0 = Math.trunc($nurseryNannies*1000*$upgradeMultiplierArcology)>>
-<br>It can support $nurseryNannies nannies. Currently there <<if $nurserySlaves == 1>>is<<else>>are<</if>> $nurserySlaves nann<<if $nurserySlaves != 1>>ies<<else>>y<</if>> at $nurseryName.
+<br>It can support $nurseryNannies nann<<if $nurseryNannies != 1>>ies<<else>>y<</if>>. There <<if $nurserySlaves == 1>>is<<else>>are<</if>> $nurserySlaves nann<<if $nurserySlaves != 1>>ies<<else>>y<</if>> in $nurseryName.
 <<if $nurseryBabies > 0 && ($nurserySlaves < 1 && $Matron < 1)>>
 	//You must have at least one nanny or Matron to be able to influence the children's upbringing//
 	<br>
@@ -164,7 +164,7 @@ $nurseryNameCaps
 	<script>document.getElementById("tab remove").click();</script>
 <</if>>
 
-<br><br>It can support $nursery child<<if $nursery != 1>>ren<</if>>. Currently $nurseryBabies rooms are in use.
+<br><br>It can support $nursery child<<if $nursery != 1>>ren<</if>>. There <<if $nurseryBabies == 1>>is<<else>>are<</if>> currently $nurseryBabies room<<if $nurseryBabies != 1>>s<</if>> in use in $nurseryName.
 <<if $nursery < 50>>
 	[[Add another room|Nursery][cashX(forceNeg(Math.trunc(5000*$upgradeMultiplierArcology)), "farmyard"), $nursery += 5]] //Costs <<print cashFormat(Math.trunc(5000*$upgradeMultiplierArcology))>> and will increase upkeep costs//
 	<<if $freeCribs == 0>>
diff --git a/src/facilities/nursery/nurseryFramework.js b/src/facilities/nursery/nurseryFramework.js
new file mode 100644
index 0000000000000000000000000000000000000000..83fd33bfba52c947ba0fe3827624164cea302972
--- /dev/null
+++ b/src/facilities/nursery/nurseryFramework.js
@@ -0,0 +1,51 @@
+App.Data.Facilities.nursery = {
+	baseName: "nursery",
+	genericName: null,
+	jobs: {
+		nanny: {
+			position: "nanny",
+			assignment: "work as a nanny",
+			publicSexUse: false,
+			fuckdollAccepted: false
+		}
+	},
+	defaultJob: "nanny",
+	manager: {
+		position: "matron",
+		assignment: "be the Matron",
+		careers: ["a babysitter", "a nanny", "a practitioner", "a wet nurse", "an au pair"],
+		skill: "matron",
+		publicSexUse: false,
+		fuckdollAccepted: false,
+		broodmotherAccepted: false,
+		shouldWalk: true,
+		shouldSee: true,
+		shouldHear: true,
+		shouldTalk: true,
+		shouldThink: true,
+		requiredDevotion: 51
+	}
+}
+
+App.Entity.Facilities.NurseryNannyJob = class extends App.Entity.Facilities.FacilitySingleJob {
+	/**
+	 * @param {App.Entity.SlaveState} slave
+	 * @returns {string[]}
+	 */
+	canEmploy(slave) {
+		let r = super.canEmploy(slave);
+
+		if (!App.Entity.Facilities.Job._isBrokenEnough(slave, -20, -50, 20, -21)) {
+			r.push(App.Entity.Facilities.Job._stdBreakageMessage(slave));
+		}
+
+		return r;
+	}
+}
+
+App.Entity.facilities.nursery = new App.Entity.Facilities.Facility(
+	App.Data.Facilities.nursery,
+	{
+		nanny: new App.Entity.Facilities.NurseryNannyJob()
+	}
+);
diff --git a/src/facilities/penthouse/penthouseFramework.js b/src/facilities/penthouse/penthouseFramework.js
new file mode 100644
index 0000000000000000000000000000000000000000..c757b11a7e3c657c7050092461f351551deac014
--- /dev/null
+++ b/src/facilities/penthouse/penthouseFramework.js
@@ -0,0 +1,171 @@
+
+App.Data.Facilities.penthouse = {
+	baseName: "",
+	genericName: "Penthouse",
+	jobs: {
+		rest: {
+			position: "Rest",
+			assignment: "rest",
+			publicSexUse: false,
+			fuckdollAccepted: false
+		},
+		fucktoy: {
+			position: "Fucktoy",
+			assignment: "please you",
+			publicSexUse: false,
+			fuckdollAccepted: true
+		},
+		classes: {
+			position: "Classes",
+			assignment: "take classes",
+			publicSexUse: false,
+			fuckdollAccepted: false
+		},
+		houseServant: {
+			position: "House Servant",
+			assignment: "be a servant",
+			publicSexUse: false,
+			fuckdollAccepted: false
+		},
+		whore: {
+			position: "Whore",
+			assignment: "whore",
+			publicSexUse: true,
+			fuckdollAccepted: false
+		},
+		publicServant: {
+			position: "Public Servant",
+			assignment: "serve the public",
+			publicSexUse: true,
+			fuckdollAccepted: false
+		},
+		subordinateSlave: {
+			position: "Subordinate slave",
+			assignment: "be a subordinate slave",
+			publicSexUse: false,
+			fuckdollAccepted: false
+		},
+		cow: {
+			position: "Milked",
+			assignment: "get milked",
+			publicSexUse: false,
+			fuckdollAccepted: false
+		},
+		gloryhole: {
+			position: "Gloryhole",
+			assignment: "work a glory hole",
+			publicSexUse: false,
+			fuckdollAccepted: true
+		},
+		confinement: {
+			position: "Confinement",
+			assignment: "stay confined",
+			publicSexUse: false,
+			fuckdollAccepted: true
+		}
+	},
+	defaultJob: "rest",
+	manager: {
+		position: "Recruiter",
+		assignment: "recruit girls",
+		careers: ["a club recruiter", "a college scout", "a con artist", "a cult leader", "a girl scout", "a hunter", "a lobbyist", "a military recruiter", "a missionary", "a political activist", "a princess", "a spy", "a talent scout", "retired"],
+		skill: "recruiter",
+		publicSexUse: false,
+		fuckdollAccepted: false,
+		broodmotherAccepted: false,
+		shouldWalk: true,
+		shouldSee: true,
+		shouldHear: true,
+		shouldTalk: true,
+		shouldThink: true,
+		requiredDevotion: 51
+	}
+}
+
+App.Entity.Facilities.PenthouseJob = class extends App.Entity.Facilities.Job {
+
+}
+
+App.Entity.Facilities.PenthouseJobs = {
+	Classes: class extends App.Entity.Facilities.PenthouseJob {
+		canEmploy(slave) {
+			let r = super.canEmploy(slave);
+			if (slave.intelligenceImplant >= 15) {
+				r.push(`${slave.slaveName} already has a basic education.`);
+			}
+			if (!App.Entity.Facilities.Job._isBrokenEnough(slave, -20, -50, -20, -51)) {
+				r.push(`${slave.slaveName} is too resistant to learn.`);
+			}
+
+			if (slave.fetish === "mindbroken") {
+				r.push(`${capFirstChar(slave.possessive)} mind is fundamentally broken and can't learn.`);
+			}
+			return r;
+		}
+	},
+	HouseServant: class extends App.Entity.Facilities.PenthouseJob {
+		canEmploy(slave) {
+			let r = super.canEmploy(slave);
+
+			if (!App.Entity.Facilities.Job._isBrokenEnough(slave, -20, -50, -19, -51)) {
+				r.push(App.Entity.Facilities.Job._stdBreakageMessage(slave));
+			}
+
+			if (!canWalk(slave)) {
+				r.push(`${slave.slaveName} can't walk and would be unable to properly clean.`);
+			}
+			if (!canSee(slave)) {
+				r.push(`${slave.slaveName} is blind and would be unable to properly clean.`);
+			}
+
+			return r;
+		}
+
+	},
+
+	SubordinateSlave: class extends App.Entity.Facilities.PenthouseJob {
+		canEmploy(slave) {
+			let r = super.canEmploy(slave);
+			if (!App.Entity.Facilities.Job._isBrokenEnough(slave, -20, -50, -19, -51)) {
+				r.push(App.Entity.Facilities.Job._stdBreakageMessage(slave));
+			}
+			return r;
+		}
+	},
+	Cow: class extends App.Entity.Facilities.PenthouseJob {
+		canEmploy(slave) {
+			let r = super.canEmploy(slave);
+
+			if ((slave.lactation <= 0) && (slave.balls <= 0)) {
+				r.push(`${slave.slaveName} is not lactating` + ((State.variables.seeDicks > 0) ? ' or producing semen.' : '.'));
+			}
+			return r;
+		}
+	},
+}
+
+App.Entity.Facilities.Penthouse = class extends App.Entity.Facilities.Facility {
+	constructor() {
+
+		super(App.Data.Facilities.penthouse, {
+			classes: new App.Entity.Facilities.PenthouseJobs.Classes(),
+			houseServant: new App.Entity.Facilities.PenthouseJobs.HouseServant(),
+			subordinateSlave: new App.Entity.Facilities.PenthouseJobs.SubordinateSlave(),
+			cow: new App.Entity.Facilities.PenthouseJobs.Cow()
+		});
+	}
+
+	/** Facility slave capacity
+	* @returns {number} */
+	get capacity() {
+		return State.variables.dormitory;
+	}
+
+	/** Number of already hosted slaves
+	 * @returns {number} */
+	get hostedSlaves() {
+		return State.variables.dormitoryPopulation;
+	}
+}
+
+App.Entity.facilities.penthouse = new App.Entity.Facilities.Penthouse();
diff --git a/src/facilities/pit/pitFramework.js b/src/facilities/pit/pitFramework.js
new file mode 100644
index 0000000000000000000000000000000000000000..b77697e3862d278da448f3ba490a64d01903db33
--- /dev/null
+++ b/src/facilities/pit/pitFramework.js
@@ -0,0 +1,53 @@
+App.Data.Facilities.pit = {
+	baseName: "pit",
+	genericName: null,
+	jobs: {
+		fighter: {
+			position: "fighter",
+			assignment: "",
+			publicSexUse: false,
+			fuckdollAccepted: false
+		}
+	},
+	defaultJob: "fighter",
+	manager: null
+}
+
+App.Entity.Facilities.PitFighterJob = class extends App.Entity.Facilities.FacilitySingleJob {
+	/**
+	 * @param {App.Entity.SlaveState} slave
+	 * @returns {string[]}
+	 */
+	canEmploy(slave) {
+		let r = super.canEmploy(slave);
+		if (slave.breedingMark === 1 && State.variables.propOutcome === 1) {
+			r.push(`${slave.slaveName} may not participate in combat.`);
+		}
+		if (slave.indentureRestrictions > 1) {
+			r.push(`${slave.slaveName}'s indenture forbids fighting.`);
+		}
+		if ((slave.indentureRestrictions > 0) && (this.facility.option("Lethal") === 1)) {
+			r.push(`${slave.slaveName}'s indenture forbids lethal fights.`);
+		}
+		return r;
+	}
+
+	isEmployed(slave) {
+		return State.variables.fighterIDs.includes(slave.ID);
+	}
+}
+
+App.Entity.Facilities.Pit = class extends App.Entity.Facilities.Facility {
+	constructor() {
+		super(App.Data.Facilities.pit,
+			{
+				fighter: new App.Entity.Facilities.PitFighterJob()
+			});
+	}
+
+	get hostedSlaves() {
+		return 0; // does not host anyone
+	}
+}
+
+App.Entity.facilities.pit = new App.Entity.Facilities.Pit();
diff --git a/src/facilities/schoolroom/schoolroomFramework.js b/src/facilities/schoolroom/schoolroomFramework.js
new file mode 100644
index 0000000000000000000000000000000000000000..b3bd82c9fd73cc9bdb4526726015e7e7f8d3e7de
--- /dev/null
+++ b/src/facilities/schoolroom/schoolroomFramework.js
@@ -0,0 +1,58 @@
+App.Data.Facilities.schoolroom = {
+	baseName: "schoolroom",
+	genericName: null,
+	jobs: {
+		student: {
+			position: "",
+			assignment: "learn in the schoolroom",
+			publicSexUse: false,
+			fuckdollAccepted: false
+		}
+	},
+	defaultJob: "student",
+	manager: {
+		position: "teacher",
+		assignment: "be the Schoolteacher",
+		careers: ["a child prodigy", "a coach", "a dean", "a historian", "a librarian", "a principal", "a private instructor", "a professor", "a scholar", "a scientist", "a teacher's pet", "a teacher", "a teaching assistant", "an archaeologist", "an astronaut", "an economist"],
+		skill: "teacher",
+		publicSexUse: false,
+		fuckdollAccepted: false,
+		broodmotherAccepted: false,
+		shouldWalk: false,
+		shouldSee: true,
+		shouldHear: true,
+		shouldTalk: true,
+		shouldThink: true,
+		requiredDevotion: 51
+	}
+}
+
+App.Entity.Facilities.SchoolroomStudentJob = class extends App.Entity.Facilities.FacilitySingleJob {
+	/**
+	 * @param {App.Entity.SlaveState} slave
+	 * @returns {string[]}
+	 */
+	canEmploy(slave) {
+		let r = super.canEmploy(slave);
+
+		if (!App.Entity.Facilities.Job._isBrokenEnough(slave, -20, -50, -20, -51)) {
+			r.push(`${slave.slaveName} is too resistant to learn.`);
+		}
+
+		const maxSkill = 10 + this.facility.upgrade("Skills") * 20; // maximal skill value the scholl can teach
+		if ((slave.intelligenceImplant >= 30) && (slave.voice === 0 || slave.accent + this.facility.upgrade("Language") <= 2) &&
+			(slave.skill.oral > maxSkill) && (slave.skill.whoring > maxSkill) && (slave.skill.entertainment > maxSkill) &&
+			(slave.skill.anal > maxSkill) && ((slave.vagina < 0) || (slave.skill.vaginal > maxSkill))) {
+			r.push(`${slave.slaveName} has nothing left to learn.`);
+		}
+
+		return r;
+	}
+}
+
+App.Entity.facilities.schoolroom = new App.Entity.Facilities.Facility(
+	App.Data.Facilities.schoolroom,
+	{
+		student: new App.Entity.Facilities.SchoolroomStudentJob()
+	}
+);
diff --git a/src/facilities/servantsQuarters/servantsQuartersFramework.js b/src/facilities/servantsQuarters/servantsQuartersFramework.js
new file mode 100644
index 0000000000000000000000000000000000000000..8056e30154127b509bcbb1425d1b568fb998be8d
--- /dev/null
+++ b/src/facilities/servantsQuarters/servantsQuartersFramework.js
@@ -0,0 +1,71 @@
+App.Data.Facilities.servantsQuaters = {
+	baseName: "servantsQuarters",
+	genericName: "Servants' Quarters",
+	jobs: {
+		servant: {
+			position: "servant",
+			assignment: "work as a servant",
+			publicSexUse: false,
+			fuckdollAccepted: false
+		}
+	},
+	defaultJob: "servant",
+	manager: {
+		position: "stewardess",
+		assignment: "be the Stewardess",
+		careers: ["a barista", "a bartender", "a brewer", "a bureaucrat", "a caregiver", "a charity worker", "a club treasurer", "a concierge", "a critic", "a housekeeper", "a housesitter", "a lemonade stand operator", "a personal assistant", "a professional bartender", "a secretary", "a wedding planner", "an air hostess", "an architect", "an editor", "an estate agent", "an investor", "an office worker"],
+		skill: "stewardess",
+		publicSexUse: false,
+		fuckdollAccepted: false,
+		broodmotherAccepted: false,
+		shouldWalk: true,
+		shouldSee: true,
+		shouldHear: true,
+		shouldTalk: true,
+		shouldThink: true,
+		requiredDevotion: 51
+	}
+}
+
+App.Entity.Facilities.ServantsQuartersServantJob = class extends App.Entity.Facilities.FacilitySingleJob {
+	/**
+	 * @param {App.Entity.SlaveState} slave
+	 * @returns {string[]}
+	 */
+	canEmploy(slave) {
+		let r = super.canEmploy(slave);
+
+		if (!App.Entity.Facilities.Job._isBrokenEnough(slave, -20, -50, 20, -21)) {
+			r.push(App.Entity.Facilities.Job._stdBreakageMessage(slave));
+		}
+		if (!window.canWalk(slave)) {
+			r.push(`${slave.slaveName} can't walk and would be unable to properly clean.`);
+		}
+		if (!canSee(slave)) {
+			r.push(`${slave.slaveName} is blind and would be unable to properly clean.`);
+		}
+		return r;
+	}
+}
+
+App.Entity.Facilities.ServantsQuartersStewardessJob = class extends App.Entity.Facilities.ManagingJob {
+	/**
+	 * @param {App.Entity.SlaveState} slave
+	 * @returns {string[]}
+	 */
+	canEmploy(slave) {
+		let r = super.canEmploy(slave);
+		if (slave.intelligence + slave.intelligenceImplant < -50) {
+			r.push(`${slave.slaveName} is not intellegent enough.`);
+		}
+		return r;
+	}
+}
+
+App.Entity.facilities.servantsQuarters = new App.Entity.Facilities.Facility(
+	App.Data.Facilities.servantsQuaters,
+	{
+		servant: new App.Entity.Facilities.ServantsQuartersServantJob()
+	},
+	new App.Entity.Facilities.ServantsQuartersStewardessJob()
+);
diff --git a/src/facilities/spa/spaFramework.js b/src/facilities/spa/spaFramework.js
new file mode 100644
index 0000000000000000000000000000000000000000..5bfe6ed053ac0cc2872e79b770e382909f65d99c
--- /dev/null
+++ b/src/facilities/spa/spaFramework.js
@@ -0,0 +1,51 @@
+App.Data.Facilities.spa = {
+	baseName: "spa",
+	genericName: null,
+	jobs: {
+		assignee: {
+			position: "",
+			assignment: "rest in the spa",
+			publicSexUse: false,
+			fuckdollAccepted: false,
+		}
+	},
+	defaultJob: "assignee",
+	manager: {
+		position: "attendant",
+		assignment: "be the Attendant",
+		careers: ["a barber", "a cosmetologist", "a counselor", "a dispatch officer", "a fortune teller", "a groomer", "a latchkey kid", "a lifeguard", "a masseuse", "a mediator", "a personal trainer", "a police negotiator", "a psychologist", "a therapist", "a yoga instructor"],
+		skill: "attendant",
+		publicSexUse: false,
+		fuckdollAccepted: false,
+		broodmotherAccepted: false,
+		shouldWalk: true,
+		shouldSee: false,
+		shouldHear: true,
+		shouldTalk: false,
+		shouldThink: true,
+		requiredDevotion: 51
+	}
+}
+
+App.Entity.Facilities.SpaAssigneeJob = class extends App.Entity.Facilities.FacilitySingleJob {
+	/**
+	 * @param {App.Entity.SlaveState} slave
+	 * @returns {string[]}
+	 */
+	canEmploy(slave) {
+		let r = super.canEmploy(slave);
+
+		if (((slave.devotion < -20 && slave.fetish !== "mindbroken") || (slave.health >= 20 && slave.trust > 60 && slave.devotion > 60 && slave.fetish !== "mindbroken" && slave.sexualFlaw === "none" && slave.behavioralFlaw === "none"))) {
+			r.push(`${slave.slaveName} will not benefit from time at ${this.facility.name}.`);
+		}
+
+		return r;
+	}
+}
+
+App.Entity.facilities.spa = new App.Entity.Facilities.Facility(
+	App.Data.Facilities.spa,
+	{
+		assignee: new App.Entity.Facilities.SpaAssigneeJob()
+	}
+);
diff --git a/src/gui/css/mainStyleSheet.css b/src/gui/css/mainStyleSheet.css
index 89a5673931661b68b6fad4c6e67558e3d81abcf8..f65deefb2632efd3a8a750892fe51c4d54e49e4a 100644
--- a/src/gui/css/mainStyleSheet.css
+++ b/src/gui/css/mainStyleSheet.css
@@ -301,3 +301,7 @@ white-space: normal;
 	cursor: pointer;
 }
 .rajs-section h1:hover { text-decoration: underline; }
+
+.scroll {
+	overflow: auto;
+}
diff --git a/src/init/dummy.tw b/src/init/dummy.tw
index 058795cb14a411a2f7e51c6486c6f4daaf8a4d80..5f1d6258ca5476bf97be27cedfdf84f19aa2f3ae 100644
--- a/src/init/dummy.tw
+++ b/src/init/dummy.tw
@@ -21,6 +21,7 @@ $activeSlave.bodySwap, $activeSlave.custom.image.format, $activeSlave.custom.hai
 $activeSlave.noun, $activeSlave.pronoun, $activeSlave.possessive, $activeSlave.possessivePronoun, $activeSlave.object, $activeSlave.objectReflexive
 $activeSlave.sexAmount, $activeSlave.sexQuality
 $activeSlave.fertKnown
+$activeSlave.cum
 $drugs, $harshCollars, $shoes, $bellyAccessories, $vaginalAccessories, $dickAccessories, $buttplugs
 $PC.origRace, $PC.origSkin
 $servantsQuartersSpots
diff --git a/src/init/setupVars.tw b/src/init/setupVars.tw
index 75d4c342fd320d0b2f2c6d1dcca6b419da51d271..81f24b66143ded6d513431462f3c29e4d15308cc 100644
--- a/src/init/setupVars.tw
+++ b/src/init/setupVars.tw
@@ -317,31 +317,31 @@ equine: {type: "equine", normalOvaMin:1, normalOvaMax: 1, normalBirth: 48, minLi
 
 <<set setup.whoreCareers = ["a child prostitute", "a criminal", "a cum dump", "a Futanari Sister", "a juvenile delinquent", "a mail-order bride", "a meat toilet", "a mistress", "a model", "a pageant star", "a pirate", "a porn star", "a prostitute", "a reality show star", "a saleswoman", "a serial divorcee", "a stripper", "a trophy wife", "an escort", "an exotic dancer"]>>
 
-<<set setup.HGCareers = ["a captain", "a corporate executive", "a director", "a dominatrix", "a gang leader", "a judge", "a lawyer", "a leading arcology citizen", "a military officer", "a model-UN star", "a noblewoman", "a politician", "a Queen", "a slaver", "a student council president"]>>
+<<set setup.HGCareers = App.Data.Facilities.headGirlSuite.manager.careers>>
 
-<<set setup.madamCareers = ["a banker", "a business owner", "a businessman", "a camp counselor", "a club manager", "a hotel manager", "a landlady", "a madam", "a manager", "a park ranger", "a pimp", "a procuress", "a stockbroker", "an innkeeper"]>>
+<<set setup.madamCareers = App.Data.Facilities.brothel.manager.careers>>
 
-<<set setup.DJCareers = ["a classical dancer", "a classical musician", "a dancer", "a house DJ", "a marching band leader", "a musician", "a radio show host", "an aspiring pop star", "an idol", "an orchestra conductor"]>>
+<<set setup.DJCareers = App.Data.Facilities.club.manager.careers>>
 
-<<set setup.bodyguardCareers = ["a bodyguard", "a boxer", "a bully hunter", "a child soldier", "a hitman", "a kunoichi", "a law enforcement officer", "a military brat", "a prince", "a revolutionary", "a sniper", "a soldier", "a transporter", "an assassin", "an MS pilot", "captain of the kendo club", "in a militia", "spec ops"]>>
+<<set setup.bodyguardCareers = App.Data.Facilities.armory.manager.careers>>
 
-<<set setup.wardenessCareers = ["a bouncer", "a bounty hunter", "a bully", "a chief of police", "a gang member", "a hall monitor", "a mercenary", "a police detective", "a police officer", "a prison guard", "a prison warden", "a private detective", "a security guard", "a street thug", "an enforcer", "an orderly"]>>
+<<set setup.wardenessCareers = App.Data.Facilities.cellblock.manager.careers>>
 
-<<set setup.nurseCareers = ["a chemist", "a chiropractor", "a coroner", "a dentist", "a doctor", "a hospital volunteer", "a medic", "a medical student", "a midwife", "a mortician", "a nurse", "a paramedic", "a pharmacist", "a physician", "a school nurse's assistant", "a school nurse", "a surgeon"]>>
+<<set setup.nurseCareers = App.Data.Facilities.clinic.manager.careers>>
 
-<<set setup.attendantCareers = ["a barber", "a cosmetologist", "a counselor", "a dispatch officer", "a fortune teller", "a groomer", "a latchkey kid", "a lifeguard", "a masseuse", "a mediator", "a personal trainer", "a police negotiator", "a psychologist", "a therapist", "a yoga instructor"]>>
+<<set setup.attendantCareers = App.Data.Facilities.spa.manager.careers>>
 
-<<set setup.matronCareers = ["a babysitter", "a nanny", "a practitioner", "a wet nurse", "an au pair"]>>
+<<set setup.matronCareers = App.Data.Facilities.nursery.manager.careers>>
 
-<<set setup.milkmaidCareers = ["a cowgirl", "a dairy worker", "a farmer's daughter", "a milkmaid", "a shepherd", "a veterinarian"]>>
+<<set setup.milkmaidCareers = App.Data.Facilities.dairy.manager.careers>>
 
-<<set setup.farmerCareers = ["a beekeeper", "a bullfighter", "a farmer", "a farmhand", "a rancher", "a rodeo star", "a zookeeper"]>>
+<<set setup.farmerCareers = App.Data.Facilities.farmyard.manager.careers>>
 
-<<set setup.stewardessCareers = ["a barista", "a bartender", "a brewer", "a bureaucrat", "a caregiver", "a charity worker", "a club treasurer", "a concierge", "a critic", "a housekeeper", "a housesitter", "a lemonade stand operator", "a personal assistant", "a professional bartender", "a secretary", "a wedding planner", "an air hostess", "an architect", "an editor", "an estate agent", "an investor", "an office worker"]>>
+<<set setup.stewardessCareers = App.Data.Facilities.servantsQuaters.manager.careers>>
 
-<<set setup.schoolteacherCareers = ["a child prodigy", "a coach", "a dean", "a historian", "a librarian", "a principal", "a private instructor", "a professor", "a scholar", "a scientist", "a teacher's pet", "a teacher", "a teaching assistant", "an archaeologist", "an astronaut", "an economist"]>>
+<<set setup.schoolteacherCareers = App.Data.Facilities.schoolroom.manager.careers>>
 
-<<set setup.recruiterCareers = ["a club recruiter", "a college scout", "a con artist", "a cult leader", "a girl scout", "a hunter", "a lobbyist", "a military recruiter", "a missionary", "a political activist", "a princess", "a spy", "a talent scout", "retired"]>> /* pregmod */
+<<set setup.recruiterCareers = App.Data.Facilities.penthouse.manager.careers>> /* pregmod */
 
 <<set setup.servantCareers = ["a butler", "a cook", "a handmaiden", "a housewife", "a maid", "a shrine maiden"]>>
 
diff --git a/src/init/storyInit.tw b/src/init/storyInit.tw
index 2677f2738139d7a4aa96c1e8913845dae1aa3142..93eb67cc5afc74d5865b58033a7bf2b831f448ec 100644
--- a/src/init/storyInit.tw
+++ b/src/init/storyInit.tw
@@ -15,8 +15,8 @@ You should have received a copy of the GNU General Public License along with thi
 <<set $returnTo = "init", $nextButton = "Continue", $nextLink = "Alpha disclaimer">>
 
 <<unset $releaseID>>
-<<set $ver = "0.10.7", $pmodVer = "2.2.X", $releaseID = 1043>>
-<<if ndef $pmodVer>><<set $pmodVer = "2.2.X">><</if>>
+<<set $ver = "0.10.7", $pmodVer = "2.3.X", $releaseID = 1044>>
+<<if ndef $pmodVer>><<set $pmodVer = "2.3.X">><</if>>
 
 /* This needs to be broken down into individual files that can be added to StoryInit instead. */
 
diff --git a/src/js/DefaultRules.js b/src/js/DefaultRules.js
index a90eedaa2ea5b01ad43881171f93f3cdab5a6e82..33cd82f851a4e5f1b7a7f00162d4cee2159232d8 100644
--- a/src/js/DefaultRules.js
+++ b/src/js/DefaultRules.js
@@ -1,5 +1,3 @@
-/* eslint-disable no-empty */
-/* eslint-disable no-undef */
 // this code applies RA rules onto slaves
 
 window.DefaultRules = (function() {
@@ -225,7 +223,7 @@ window.DefaultRules = (function() {
 
 			case "learn in the schoolroom":
 				if ((V.schoolroomSlaves < V.schoolroom && slave.fetish !== "mindbroken" && (slave.devotion >= -20 || slave.trust < -50 || (slave.devotion >= -50 && slave.trust < -20)))) {
-					if ((slave.intelligenceImplant < 30) || (slave.voice !== 0 && slave.accent+V.schoolroomUpgradeLanguage > 2) || (slave.skill.oral <= 10+V.schoolroomUpgradeSkills*20) || (slave.skill.whore <= 10+V.schoolroomUpgradeSkills*20) || (slave.skill.entertainment <= 10+V.schoolroomUpgradeSkills*20) || (slave.skill.anal < 10+V.schoolroomUpgradeSkills*20) || ((slave.vagina >= 0) && (slave.skill.vaginal < 10+V.schoolroomUpgradeSkills*20))) {
+					if ((slave.intelligenceImplant < 30) || (slave.voice !== 0 && slave.accent+V.schoolroomUpgradeLanguage > 2) || (slave.skill.oral <= 10+V.schoolroomUpgradeSkills*20) || (slave.skill.whoring <= 10+V.schoolroomUpgradeSkills*20) || (slave.skill.entertainment <= 10+V.schoolroomUpgradeSkills*20) || (slave.skill.anal < 10+V.schoolroomUpgradeSkills*20) || ((slave.vagina >= 0) && (slave.skill.vaginal < 10+V.schoolroomUpgradeSkills*20))) {
 						break;
 					} else {
 						RAFacilityRemove(slave, rule); // before deleting rule.setAssignment
@@ -566,7 +564,7 @@ window.DefaultRules = (function() {
 			ProcessAVirginDildos(slave, rule);
 		} else if (slave.vagina > 0) {
 			ProcessNonVirginDildos(slave, rule);
-		ProcessVaginalAttachments(slave, rule);
+			ProcessVaginalAttachments(slave, rule);
 		}
 	}
 
@@ -753,7 +751,6 @@ window.DefaultRules = (function() {
 				slave.vaginalAttachment = rule.vaginalAttachment;
 				if (slave.vaginalAccessory !== "none") {
 					switch (slave.vaginalAttachment) {
-
 						case "none":
 							r += `<br>${slave.slaveName} has been instructed not to use an attachment for ${his} dildo.`;
 							break;
@@ -768,7 +765,6 @@ window.DefaultRules = (function() {
 					}
 				} else {
 					switch (slave.vaginalAttachment) {
-
 						case "none":
 							r += `<br>${slave.slaveName} has been instructed not to use any vaginal accessories.`;
 							break;
@@ -1290,8 +1286,9 @@ window.DefaultRules = (function() {
 						return -1;
 					}
 					if (a.weight < b.weight) {
-						return 1; return 0;
+						return 1;
 					}
+					return 0;
 				});
 				if (slave.drugs !== _priorities[0].drug) {
 					slave.drugs = _priorities[0].drug;
@@ -1313,7 +1310,6 @@ window.DefaultRules = (function() {
 					}
 					r += "the targeted size.";
 				}
-				return;
 			} else if (_priorities.length > 0) {
 				if (slave.drugs !== _priorities[0].drug) {
 					slave.drugs = _priorities[0].drug;
@@ -1326,11 +1322,9 @@ window.DefaultRules = (function() {
 					}
 					r += `that is the only part of ${his} body that does not meet the targeted size.`;
 				}
-				return;
 			} else if (growthDrugs.has(slave.drugs)) {
 				slave.drugs = "no drugs";
 				r += `<br>${slave.slaveName}'s body has met all relevant growth targets, so ${his} pharmaceutical regime has been ended.`;
-				return;
 			}
 		} else {
 			if (rule.growth_boobs !== "no default setting") {
@@ -1428,7 +1422,6 @@ window.DefaultRules = (function() {
 			if (growthDrugs.has(slave.drugs)) {
 				slave.drugs = "no drugs";
 				r += `<br>${slave.slaveName} has met all relevant growth targets, so ${his} pharmaceutical regime has been ended.`;
-				return;
 			}
 		}
 	}
diff --git a/src/js/SlaveState.js b/src/js/SlaveState.js
index 22cb7e4bfb728d19ff3df6960c366a06504eed15..17f928eb2aed368f386559caf3ecca06bc75284a 100644
--- a/src/js/SlaveState.js
+++ b/src/js/SlaveState.js
@@ -132,7 +132,7 @@ App.Entity.SlaveSkillsState = class {
 		 * * 61-99: expert
 		 * * 100+: master
 		 */
-		this.whore = 0;
+		this.whoring = 0;
 		/**
 		 * entertaining skill
 		 * * 0-10: unskilled
@@ -1822,6 +1822,14 @@ App.Entity.SlaveState = class SlaveState {
 		 * * 96+: nymphomaniac
 		 */
 		this.energy = 50;
+		/**
+		 * The amount of sex the slave had with customers for certain jobs during a week
+		 */
+		this.sexAmount = 0;
+		/**
+		 * The 'quality' of the sex a slave had with customers. High quality means they fetch a higher price for their services
+		 */
+		this.sexQuality = 0;
 		/**
 		 * how badly she needs sex.
 		 *
diff --git a/src/js/assayJS.js b/src/js/assayJS.js
index 7e8c76825fb4a3a130fe8348cfe3b05540fff004..64e903c05d796f3cdd2f363e25994ced98c4efea 100644
--- a/src/js/assayJS.js
+++ b/src/js/assayJS.js
@@ -1621,7 +1621,7 @@ window.DegradingName = /** @param {App.Entity.SlaveState} slave */ function Degr
 			names.push("Stumpy", "Tiny");
 			suffixes.push("Shortstack", "Stumpy");
 		}
-		if (slave.skill.whore > 95) {
+		if (slave.skill.whoring > 95) {
 			names.push("Money", "Street");
 			suffixes.push("Whore");
 		}
diff --git a/src/js/assignJS.js b/src/js/assignJS.js
index 03285aff851b1fa43c30e93da9a2afb57152a2b6..f3e7b9462b266e9f0ad7572f45ae0d052acc01ed 100644
--- a/src/js/assignJS.js
+++ b/src/js/assignJS.js
@@ -171,7 +171,7 @@ window.assignJob = function assignJob(slave, job) {
 			slave.assignmentVisible = 0;
 			V.masterSuiteSlaves++;
 			V.MastSiIDs.push(slave.ID);
-			if(V.masterSuiteUpgradeLuxury > 0)
+			if (V.masterSuiteUpgradeLuxury > 0)
 				slave.livingRules = "luxurious";
 			else
 				slave.livingRules = "spare";
@@ -259,7 +259,7 @@ window.assignJob = function assignJob(slave, job) {
 		case "be your concubine":
 			slave.assignment = job;
 			slave.assignmentVisible = 0; /* non-visible leadership roles */
-			if(V.masterSuiteUpgradeLuxury > 0)
+			if (V.masterSuiteUpgradeLuxury > 0)
 				slave.livingRules = "luxurious";
 			else
 				slave.livingRules = "normal";
@@ -544,3 +544,120 @@ window.resetJobIDArray = function resetJobIDArray() { /* todo: expand to all ass
 
 	return JobIDArray;
 };
+
+/**
+ * Generates string with links for changing slave assignment
+ */
+App.UI.jobLinks = function () {
+	"use strict";
+	const facilitiesOrder = [
+		/* sorted by improvement before work, within improvement in order of progress, within work alphabetical for facilities*/
+		App.Entity.facilities.penthouse,
+		App.Entity.facilities.cellblock,
+		App.Entity.facilities.nursery,
+		App.Entity.facilities.schoolroom,
+		App.Entity.facilities.clinic,
+		App.Entity.facilities.spa,
+		App.Entity.facilities.arcade,
+		App.Entity.facilities.brothel,
+		App.Entity.facilities.club,
+		App.Entity.facilities.dairy,
+		App.Entity.facilities.farmyard,
+		App.Entity.facilities.masterSuite,
+		App.Entity.facilities.servantsQuarters
+	];
+
+	return {
+		assignments: assignmentLinks,
+		transfers: transferLinks
+	};
+
+	/**
+	 * Generates assignment links
+	 * @param {number} index index in the slaves array or -1 for the activeSlave
+	 * @param {string} [passage] optional next passage to go to
+	 * @param {linkCallback} [callback]
+	 * @returns {string}
+	 */
+	function assignmentLinks(index, passage, callback) {
+		let penthouseJobs = App.Entity.facilities.penthouse.assignmentLinks(index, undefined, passage, callback);
+		const slave = App.Utils.slaveByIndex(index);
+
+		if (slave.fuckdoll === 0) {
+			const assignment = "choose her own job";
+			if (slave.assignment !== assignment) {
+				const linkAction = callback !== undefined ? callback(assignment) : '';
+				penthouseJobs.push(`<<link "Let ${slave.object} choose" ${passage !== undefined ? '"' + passage + '"' : ''}>><<= assignJob(${App.Utils.slaveRefString(index)}, "${assignment}")>>${linkAction}<</link>>`);
+			}
+		} else {
+			penthouseJobs.push(App.UI.disabledLink(`Let ${slave.object} choose`, ["Fuckdolls can't choose their job"]));
+		}
+
+		return penthouseJobs.join("&thinsp;|&thinsp;");
+	}
+
+	function transferLinks(index) {
+		/** @type {string[]} */
+		const transfers = [];
+		const slave = App.Utils.slaveByIndex(index);
+
+		for (const f of facilitiesOrder) {
+			if (!f.established) continue;
+			const rejects = f.canHostSlave(slave);
+			if (rejects.length === 0) {
+				transfers.push(f.transferLink(index, undefined, passage()));
+			} else {
+				transfers.push(App.UI.disabledLink(f.genericName, rejects));
+			}
+		}
+
+		return transfers.join('&thinsp;|&thinsp;');
+	}
+}();
+
+App.UI.SlaveInteract = {
+	fucktoyPref: function () {
+		let elem = jQuery('#fucktoypref');
+		elem.empty();
+		let res = "";
+		/** @type {App.Entity.SlaveState} */
+		const slave = State.variables.activeSlave;
+		if ((slave.assignment === "please you") || (slave.assignment === "serve in the master suite") || (slave.assignment === "be your Concubine")) {
+			res += '__Fucktoy use preference__: <strong><span id = "hole">' + slave.toyHole + '</span></strong>.';
+			/** @type {string[]} */
+			let links = [];
+			links.push('<<link "Mouth">><<set $activeSlave.toyHole = "mouth">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>>');
+			links.push('<<link "Tits">><<set $activeSlave.toyHole = "boobs">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>>');
+			if ((slave.vagina > 0) && canDoVaginal(slave)) {
+				links.push('<<link "Pussy">><<set $activeSlave.toyHole = "pussy">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>>');
+			} else if (slave.vagina === 0) {
+				links.push(App.UI.disabledLink("Pussy",
+					[`Take ${slave.possessive} virginity before giving ${slave.possessive} pussy special attention`]));
+			}
+			if ((slave.anus > 0) && canDoAnal(slave)) {
+				links.push('<<link "Ass">><<set $activeSlave.toyHole = "ass">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>>');
+			} else {
+				links.push(App.UI.disabledLink("Ass",
+					[`Take ${slave.possessive} anal virginity before giving ${slave.possessive} ass special attention`]));
+			}
+			if ((slave.dick > 0) && canPenetrate(slave)) {
+				links.push('<<link "Dick">><<set $activeSlave.toyHole = "dick">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>>');
+			}
+			links.push(`<<link "No Preference">><<set $activeSlave.toyHole = "all ${slave.possessive} holes">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>>`);
+			res += links.join('&thinsp;|&thinsp;') + '<br>';
+		}
+		let ins = jQuery(document.createDocumentFragment());
+		ins.wiki(res);
+		elem.append(ins);
+	},
+
+	assignmentBlock: function (blockId) {
+		let res = App.UI.jobLinks.assignments(-1, undefined, () => {
+			return `<<replace "#assign">>$activeSlave.assignment<</replace>><<replace "#${blockId}">><<= App.UI.SlaveInteract.assignmentBlock("${blockId}")>><<= App.UI.SlaveInteract.fucktoyPref()>><</replace>>`;
+		});
+		if (State.variables.activeSlave.assignment !== "choose her own job") {
+			res += '&thinsp;|&thinsp; <<link "Stay on this assignment for another month">><<set $activeSlave.sentence += 4>><<replace "#assign">>$activeSlave.assignment($activeSlave.sentence weeks)<</replace>><</link>>';
+		}
+		return res;
+	}
+};
diff --git a/src/js/datatypeCleanupJS.js b/src/js/datatypeCleanupJS.js
index 807033b0b0ca792621f6801f8802234cea41f8d6..1edb9708fd8882990bb8000f099b3981b251ee0d 100644
--- a/src/js/datatypeCleanupJS.js
+++ b/src/js/datatypeCleanupJS.js
@@ -54,7 +54,7 @@ App.Entity.Utils.SlaveDataSchemeCleanup = (function () {
 			slave.skill.entertainment = slave["entertainSkill"];
 			slave.skill.oral = slave["oralSkill"];
 			slave.skill.vaginal = slave["vaginalSkill"];
-			slave.skill.whore = slave["whoreSkill"];
+			slave.skill.whoring = slave["whoreSkill"];
 			delete slave["analSkill"];
 			delete slave["combatSkill"];
 			delete slave["entertainSkill"];
@@ -146,7 +146,7 @@ App.Entity.Utils.SlaveDataSchemeCleanup = (function () {
 				customTitle: "title",
 				customTitleLisp: "titleLisp",
 				customHairVector: "hairVector"
-			}
+			};
 
 			for (let prop in slave) {
 				if (nameMap.hasOwnProperty(prop)) {
@@ -684,7 +684,7 @@ window.SlaveDatatypeCleanup = (function SlaveDatatypeCleanup() {
 		slave.skill.oral = Math.clamp(+slave.skill.oral, 0, 100) || 0;
 		slave.skill.vaginal = Math.clamp(+slave.skill.vaginal, 0, 100) || 0;
 		slave.skill.anal = Math.clamp(+slave.skill.anal, 0, 100) || 0;
-		slave.skill.whore = Math.clamp(+slave.skill.whore, 0, 100) || 0;
+		slave.skill.whoring = Math.clamp(+slave.skill.whoring, 0, 100) || 0;
 		slave.skill.entertainment = Math.clamp(+slave.skill.entertainment, 0, 100) || 0;
 		slave.skill.combat = Math.clamp(+slave.skill.combat, 0, 1) || 0;
 		slave.skill.headGirl = Math.clamp(+slave.skill.headGirl, 0, 200) || 0;
@@ -771,7 +771,7 @@ window.SlaveDatatypeCleanup = (function SlaveDatatypeCleanup() {
 		}
 		if (slave.custom.image !== null) {
 			if (typeof slave.custom.image.filename !== "string") {
-				slave.custom.image = null
+				slave.custom.image = null;
 			}
 		}
 	}
@@ -1262,7 +1262,7 @@ window.childSkillsDatatypeCleanup = function childSkillsDatatypeCleanup(child) {
 	child.skill.oral = Math.clamp(+child.skill.oral, 0, 100) || 0;
 	child.skill.vaginal = Math.clamp(+child.skill.vaginal, 0, 100) || 0;
 	child.skill.anal = Math.clamp(+child.skill.anal, 0, 100) || 0;
-	child.skill.whore = Math.clamp(+child.skill.whore, 0, 100) || 0;
+	child.skill.whoring = Math.clamp(+child.skill.whoring, 0, 100) || 0;
 	child.skill.entertainment = Math.clamp(+child.skill.entertainment, 0, 100) || 0;
 	child.skill.combat = Math.clamp(+child.skill.combat, 0, 1) || 0;
 	child.skill.headGirl = Math.clamp(+child.skill.headGirl, 0, 200) || 0;
@@ -1592,7 +1592,7 @@ window.FacilityDatatypeCleanup = (function() {
 		V = State.variables;
 		/* common variables */
 		FacilityIDArrayCleanup();
-		FacilityDecorationCleanup();
+		FutureSocieties.DecorationCleanup();
 		FacilityNameCleanup();
 		/* facility specific variables */
 		BrothelDatatypeCleanup();
diff --git a/src/js/descriptionWidgets.js b/src/js/descriptionWidgets.js
index 1ae14e8fb719a292358285307ec68be0bf2ffa3f..350876cb0288e52902abac342be681c05b481686 100644
--- a/src/js/descriptionWidgets.js
+++ b/src/js/descriptionWidgets.js
@@ -34,8 +34,8 @@ App.Desc.eyes = function (slave) {
 				}
 				r += ` and unfocused`;
 			}
-		} else if (slave.eyes === -3){
-			r += `${He} has ${slave.eyeColor} colored glass eyes`
+		} else if (slave.eyes === -3) {
+			r += `${He} has ${slave.eyeColor} colored glass eyes`;
 		} else {
 			r += `${His} gaze is empty`;
 		}
@@ -241,7 +241,7 @@ App.Desc.eyes = function (slave) {
 		}
 	}
 	return r;
-}
+};
 
 /**
  * @param {App.Entity.SlaveState} slave
@@ -251,15 +251,15 @@ App.Desc.eyeColor = function (slave) {
 	"use strict";
 	let r;
 
-	if (slave.eyes === -4){
-		r = 'empty'
+	if (slave.eyes === -4) {
+		r = "empty";
 	} else if (hasVisibleHeterochromia(slave)) {
-		r = `heterochromatic ${slave.eyeColor} and ${slave.geneticQuirks.heterochromatia}`;
+		r = `heterochromatic ${slave.eyeColor} and ${slave.geneticQuirks.heterochromia}`;
 	} else {
 		r = `${slave.eyeColor}`;
 	}
 	return r;
-}
+};
 
 /**
  * @param {App.Entity.SlaveState} slave
@@ -282,7 +282,7 @@ App.Desc.ageAndHealth = function (slave) {
 	let His = capFirstChar(his);
 	/* eslint-enable */
 	let age;
-	let birthday;
+	let birthday = "";
 	if (V.seeAge !== 0) {
 		if (slave.birthWeek === 51) {
 			birthday = `; ${his} birthday is next week`;
@@ -315,7 +315,7 @@ App.Desc.ageAndHealth = function (slave) {
 			r += `an infant, only `;
 			if (V.showAgeDetail) {
 				if (!slave.actualAge) {
-					r += `${0+$week-slave.weekAcquired} weeks old${birthday}.`;
+					r += `${0 + V.week-slave.weekAcquired} weeks old${birthday}.`;
 				} else if (slave.actualAge) {
 					r += `${num(slave.actualAge)} year old${birthday}.`;
 				} else {
@@ -323,7 +323,7 @@ App.Desc.ageAndHealth = function (slave) {
 				}
 			} else {
 				if (!slave.actualAge) {
-					r += `${0+$week-slave.weekAcquired} weeks old.`;
+					r += `${0 + V.week-slave.weekAcquired} weeks old.`;
 				} else if (slave.actualAge) {
 					r += `${num(slave.actualAge)} year old.`;
 				} else {
@@ -442,6 +442,7 @@ App.Desc.ageAndHealth = function (slave) {
 			 ** This section replaces the age/therapy texts, giving more details for the NCS condition.
 			 */
 			if (slave.geneMods.NCS) {
+				let bodyNCS;
 				if (slave.vagina < 0 && slave.dick <= 0) {
 					bodyNCS = "childlike";
 				} else if (slave.vagina < 0 && slave.dick > 0) {
@@ -565,7 +566,7 @@ App.Desc.ageAndHealth = function (slave) {
 		r += ` and ${slave.physicalAge} years old.`;
 	}
 	return r;
-}
+};
 
 App.Desc.brand =
 	/**
@@ -597,7 +598,7 @@ App.Desc.brand =
 			}
 		}
 		return r;
-	}
+	};
 
 App.Desc.amputee =
 	/**
@@ -637,7 +638,7 @@ App.Desc.amputee =
 			}
 		}
 		return r;
-	}
+	};
 
 App.Desc.waist =
 	/**
@@ -676,7 +677,6 @@ App.Desc.waist =
 				r += ` despite how thin ${he} is. `;
 			} else {
 				r += `. `;
-
 			}
 			if (slave.belly >= 1500) {
 				if (slave.belly >= 750000) {
@@ -713,11 +713,11 @@ App.Desc.waist =
 				}
 			}
 		} else if (slave.waist > 40) {
-			r += `a broad, <span class=red>ugly waist</span> that makes ${him} look mannish`
+			r += `a broad, <span class=red>ugly waist</span> that makes ${him} look mannish`;
 			if (slave.weight > 30) {
-				r += ` and exaggerates how fat ${he} is. `
+				r += ` and exaggerates how fat ${he} is. `;
 			} else if (slave.weight < -30) {
-				r += ` despite how thin ${he} is. `
+				r += ` despite how thin ${he} is. `;
 			} else {
 				r += `. `;
 			}
@@ -756,7 +756,7 @@ App.Desc.waist =
 				}
 			}
 		} else if (slave.waist > 10) {
-			r += `an <span class=red>unattractive waist</span> that conceals ${his} `
+			r += `an <span class=red>unattractive waist</span> that conceals ${his} `;
 			if (slave.visualAge > 25) {
 				r += `girlish`;
 			} else {
@@ -809,16 +809,16 @@ App.Desc.waist =
 				}
 			}
 		} else if (slave.waist > -10) {
-			r += `an average waist for a `
+			r += `an average waist for a `;
 			if (slave.visualAge > 25) {
 				r += `${boy}`;
 			} else {
 				r += `${woman}`;
 			}
 			if (slave.weight > 30) {
-				r += `, though it looks broader since ${he}'s fat. `
+				r += `, though it looks broader since ${he}'s fat. `;
 			} else if (slave.weight < -30) {
-				r += `, though it looks narrower since ${he}'s thin. `
+				r += `, though it looks narrower since ${he}'s thin. `;
 			} else {
 				r += `. `;
 			}
@@ -861,7 +861,7 @@ App.Desc.waist =
 				}
 			}
 		} else if (slave.waist > -40) {
-			r += `a nice <span class=pink>feminine waist</span> that gives ${him} a `
+			r += `a nice <span class=pink>feminine waist</span> that gives ${him} a `;
 			if (slave.visualAge > 25) {
 				r += `girlish`;
 			} else {
@@ -961,7 +961,7 @@ App.Desc.waist =
 						}
 					}
 				} else if (slave.belly < 750000) {
-					r += `${His} ${belly} belly lewdly bulges to either side of ${his} narrow waist and continues for nearly half a `
+					r += `${His} ${belly} belly lewdly bulges to either side of ${his} narrow waist and continues for nearly half a `;
 					if (V.showInches === 2) {
 						r += `yard`;
 					} else {
@@ -978,17 +978,17 @@ App.Desc.waist =
 				}
 			}
 		} else {
-			r += `an <span class=pink>absurdly narrow waist</span> that gives ${him} a cartoonishly hourglass figure`
+			r += `an <span class=pink>absurdly narrow waist</span> that gives ${him} a cartoonishly hourglass figure`;
 			if (slave.weight > 30) {
-				r += `made even more ludicrous by ${his} extra weight. `;
+				r += ` made even more ludicrous by ${his} extra weight. `;
 			} else if (slave.weight < -30) {
-				r += `made even more ludicrous by how thin ${he} is. `;
+				r += ` made even more ludicrous by how thin ${he} is. `;
 			} else {
 				r += `. `;
 			}
 			if (slave.belly >= 1500) {
 				if (slave.belly >= 750000) {
-					r += `${His} ${belly} belly grotesquely bulges around ${his} narrow waist and continues `
+					r += `${His} ${belly} belly grotesquely bulges around ${his} narrow waist and continues `;
 					if (slave.belly >= 1000000) {
 						r += `quite the distance`;
 					} else {
@@ -1027,7 +1027,7 @@ App.Desc.waist =
 						}
 					}
 				} else if (slave.belly < 750000) {
-					r += `${His} ${belly} belly lewdly bulges to either side of ${his} narrow waist and continues for nearly half a `
+					r += `${His} ${belly} belly lewdly bulges to either side of ${his} narrow waist and continues for nearly half a `;
 					if (V.showInches === 2) {
 						r += `yard`;
 					} else {
@@ -1045,4 +1045,4 @@ App.Desc.waist =
 			}
 		}
 		return r;
-	}
+	};
diff --git a/src/js/economyJS.js b/src/js/economyJS.js
index 51e884fb284f868f76bfaf02fc26b187494325d2..33aa4a624cfaac310cf04f04179ed2a6109c07c1 100644
--- a/src/js/economyJS.js
+++ b/src/js/economyJS.js
@@ -1,4 +1,3 @@
-/* eslint-disable no-undef */
 window.LivingRule = Object.freeze({LUXURIOUS: 'luxurious', NORMAL: 'normal', SPARE: 'spare'});
 window.Job = Object.freeze({
 	DAIRY: 'work in the dairy', MILKMAID: 'be the Milkmaid', MASTER_SUITE: 'serve in the master suite', CONCUBINE: 'be your Concubine',
@@ -13,7 +12,7 @@ window.PersonalAttention = Object.freeze({TRADE: 'trading', WAR: 'warfare', SLAV
 window.predictCost = function(array) {
 	const array2 = array;
 	let totalCosts = (
-	getBrothelCosts() +
+		getBrothelCosts() +
 	getBrothelAdsCosts() +
 	getArcadeCosts() +
 	getClubCosts() +
@@ -591,7 +590,7 @@ window.getSlaveCost = function(s) {
 	const drugsCost = State.variables.drugsCost;
 
 	// Living expenses
-	switch(s.assignment) {
+	switch (s.assignment) {
 		case Job.ARCADE:
 			cost += rulesCost * 0.75;
 			break;
@@ -607,7 +606,7 @@ window.getSlaveCost = function(s) {
 			}
 			break;
 		case Job.FARMYARD:
-			if(s.livingRules === LivingRule.NORMAL) {
+			if (s.livingRules === LivingRule.NORMAL) {
 				cost += rulesCost * 1.5;
 			} else if (State.variables.farmyardDecoration === 'Roman Revivalist') {
 				cost += rulesCost * 1.5;
@@ -677,7 +676,7 @@ window.getSlaveCost = function(s) {
 
 	// Food
 	cost += foodCost * 4;
-	switch(s.diet) {
+	switch (s.diet) {
 		case 'fattening': case 'muscle building':
 			cost += foodCost;
 			break;
@@ -801,7 +800,7 @@ window.getSlaveCost = function(s) {
 
 	// Enemas
 	if (s.inflation === 3) {
-		switch(s.inflationType) {
+		switch (s.inflationType) {
 			case 'water':
 				cost += 100;
 				break;
@@ -813,7 +812,7 @@ window.getSlaveCost = function(s) {
 				break;
 		}
 	} else if (s.inflation === 2) {
-		switch(s.inflationType) {
+		switch (s.inflationType) {
 			case 'water':
 				cost += 50;
 				break;
@@ -825,7 +824,7 @@ window.getSlaveCost = function(s) {
 				break;
 		}
 	} else if (s.inflation === 1) {
-		switch(s.inflationType) {
+		switch (s.inflationType) {
 			case 'water':
 				cost += 25;
 				break;
@@ -839,7 +838,7 @@ window.getSlaveCost = function(s) {
 	}
 
 	// Drugs
-	switch(s.drugs) {
+	switch (s.drugs) {
 		case 'anti-aging cream':
 			cost += drugsCost * 10;
 			break;
@@ -908,10 +907,10 @@ window.NPCSexSupply = function(LC) {
 
 	// Lower class calculations
 	LC += V.sexSubsidiesLC / 10 - V.sexSupplyBarriersLC / 20;
-	if(LC >= 0.5) {
+	if (LC >= 0.5) {
 		NPCSexSupply.lowerClass += Math.max(Math.trunc(NPCSexSupply.lowerClass * ((LC - 0.5) * (0.2 - V.sexSupplyBarriersLC / 25))), (50 * (1 - V.sexSupplyBarriersLC / 5))); // Max growth of 10% per week, unless it is really low, than a flat 50
-	} else if(LC < 0.5) {
-		if(NPCSexSupply.lowerClass > V.lowerClass * (3 - V.sexSupplyBarriersLC / 2)) { // Natural market share of competitors is at least 30%
+	} else if (LC < 0.5) {
+		if (NPCSexSupply.lowerClass > V.lowerClass * (3 - V.sexSupplyBarriersLC / 2)) { // Natural market share of competitors is at least 30%
 			NPCSexSupply.lowerClass -= Math.trunc(NPCSexSupply.lowerClass * ((0.5 - LC) / 5)); // Max reduction of 10% per week
 		}
 	}
@@ -927,76 +926,76 @@ window.slaveJobValues = function() {
 
 	// This section is for specific slaves or non-unique slaves adding their values to the whole
 	// Accounting for fuckdolls
-	if(V.fuckdolls > 0) {
+	if (V.fuckdolls > 0) {
 		slaveJobValues.arcade += (V.fuckdolls - (V.arcade - V.arcadeSlaves)) * 140 + (V.arcade - V.arcadeSlaves) * (175 + 35 * V.arcadeUpgradeInjectors);
 	}
 
 	// Accounting for the DJ.
 	V.DJ = V.slaves.find(s => {
-		return s.assignment == "be the DJ";
+		return s.assignment === "be the DJ";
 	});
-	if(V.DJ !== 0) {
-		if(!canTalk(V.DJ)) {
+	if (V.DJ !== 0) {
+		if (!canTalk(V.DJ)) {
 			//''__@@.pink;$DJ.slaveName@@__'' can't speak @@.yellow;and cannot serve as your DJ any more.@@<br>
 			V.DJ = 0;
 			V.unDJ = 1;
-		} else if(V.DJ.preg > 37 && V.DJ.broodmother === 2) {
+		} else if (V.DJ.preg > 37 && V.DJ.broodmother === 2) {
 			//''__@@.pink;$DJ.slaveName@@__'' spends so much time giving birth and laboring that @@.yellow;$he cannot effectively serve as your DJ any longer.@@
 			V.DJ = 0;
 			V.unDJ = 2;
-		} else if(V.DJ.fetish == "mindbroken") {
+		} else if (V.DJ.fetish === "mindbroken") {
 			//''__@@.pink;$DJ.slaveName@@__'' is mindbroken @@.yellow;and cannot serve as your DJ any more.@@<br>
 			V.DJ = 0;
 			V.unDJ = 3;
-		} else if(!canWalk(V.DJ)) {
+		} else if (!canWalk(V.DJ)) {
 			//''__@@.pink;$DJ.slaveName@@__'' is no longer independently mobile @@.yellow;and cannot serve as your DJ any more.@@<br>
 			V.DJ = 0;
 			V.unDJ = 4;
-		} else if(!canHear(V.DJ)) {
+		} else if (!canHear(V.DJ)) {
 			//''__@@.pink;$DJ.slaveName@@__'' can no longer hear @@.yellow;and cannot serve as your DJ any more.@@<br>
 			V.DJ = 0;
 			V.unDJ = 5;
 		}
 	}
-	if(V.DJ !== 0) {
-		if(V.DJ.relationship === -3 && V.DJ.devotion > 50) {
+	if (V.DJ !== 0) {
+		if (V.DJ.relationship === -3 && V.DJ.devotion > 50) {
 			DJRepBonus += 0.1;
 			//$He tries $his best to be your energetic, cheerful wife.
 		}
-		if(V.DJ.eyes === -2) {
+		if (V.DJ.eyes === -2) {
 			DJRepBonus += 0.15;
 		}
-		if(V.DJ.skill.entertainment <= 10) {
+		if (V.DJ.skill.entertainment <= 10) {
 			//Though $DJ.slaveName does $his best to lead on the club, with $his lack of skill $he can do little.
-		} else if(V.DJ.skill.entertainment <= 30) {
+		} else if (V.DJ.skill.entertainment <= 30) {
 			DJRepBonus += 0.05;
 			//$DJ.slaveName's basic skills marginally @@.green;improve@@ the atmosphere on $clubName.
-		} else if(V.DJ.skill.entertainment <= 60) {
+		} else if (V.DJ.skill.entertainment <= 60) {
 			DJRepBonus += 0.1;
 			//$DJ.slaveName's skills @@.green;improve@@ the atmosphere on $clubName.
-		} else if(V.DJ.skill.entertainment < 100) {
+		} else if (V.DJ.skill.entertainment < 100) {
 			DJRepBonus += 0.15;
 			//$DJ.slaveName's skills greatly @@.green;improve@@ the atmosphere on $clubName.
-		} else if(V.DJ.skill.entertainment >= 100) {
+		} else if (V.DJ.skill.entertainment >= 100) {
 			DJRepBonus += 0.20;
 			//$DJ.slaveName's mastery immensely @@.green;improves@@ the atmosphere on $clubName.
 		}
-		if(V.DJ.muscles > 5 && V.DJ.muscles <= 95) {
+		if (V.DJ.muscles > 5 && V.DJ.muscles <= 95) {
 			V.DJRepBonus += 0.05;
 			//$His toned body helps $him lead $his fellow club girls by letting $him dance all night.
 		}
-		if(V.DJ.intelligence + V.DJ.intelligenceImplant > 15) {
+		if (V.DJ.intelligence + V.DJ.intelligenceImplant > 15) {
 			DJRepBonus += 0.05 * Math.floor((V.DJ.intelligence + V.DJ.intelligenceImplant)/32);
 			//$He's smart enough to make an actual contribution to the music, greatly enhancing the entire experience.
 		}
-		if(V.DJ.face > 95) {
+		if (V.DJ.face > 95) {
 			DJRepBonus += 0.05;
 			//$His great beauty is a further draw, even when $he's in $his DJ booth, but especially when $he comes out to dance.
 		}
-		if(setup.DJCareers.includes(V.DJ.career)) {
+		if (setup.DJCareers.includes(V.DJ.career)) {
 			DJRepBonus += 0.05;
 			//$He has musical experience from $his life before $he was a slave, a grounding that gives $his tracks actual depth.
-		} else if(V.DJ.skill.DJ >= V.masteredXP) {
+		} else if (V.DJ.skill.DJ >= V.masteredXP) {
 			DJRepBonus += 0.05;
 			//$He has musical experience from working for you, giving $his tracks actual depth.
 		}
@@ -1006,14 +1005,14 @@ window.slaveJobValues = function() {
 	}
 
 	// Checking for space in the club
-	if(V.club > 0 && V.ClubiIDs.length < V.club) {
+	if (V.club > 0 && V.ClubiIDs.length < V.club) {
 		clubSpots = V.club - V.ClubiIDs.length;
 	}
 
 	// Glory hole slaves adding to 'arcade'
 	V.JobIDArray["work a glory hole"].forEach(ID => {
 		let s = V.slaves[V.slaveIndices[ID]];
-		s.sexAmount = Math.trunc((jsRandom(160,200) + (20 * (4 - s.anus)) + (10 * (4 - s.vagina)) + Math.trunc(s.health / 5)) * 0.8);
+		s.sexAmount = Math.trunc((jsRandom(160, 200) + (20 * (4 - s.anus)) + (10 * (4 - s.vagina)) + Math.trunc(s.health / 5)) * 0.8);
 		slaveJobValues.arcade += s.sexAmount;
 	});
 
@@ -1026,15 +1025,14 @@ window.slaveJobValues = function() {
 	// The slave value sees use during individual end of the week evaluation
 	// The aggregate is used for determining macro variables like 'prices' for slave goods and services to then be used in end week calculations
 	V.slaves.forEach(s => {
-
 		// Arcade slaves adding to 'arcade'
-		if(s.assignment === "be confined in the arcade") {
-			s.sexAmount = (jsRandom(200,240) + (20 * (4 - (s.anus - 2 * V.arcadeUpgradeInjectors))) + (10 * (4 - (s.vagina - 2 * V.arcadeUpgradeInjectors))) + Math.trunc(s.health / 5));
+		if (s.assignment === "be confined in the arcade") {
+			s.sexAmount = (jsRandom(200, 240) + (20 * (4 - (s.anus - 2 * V.arcadeUpgradeInjectors))) + (10 * (4 - (s.vagina - 2 * V.arcadeUpgradeInjectors))) + Math.trunc(s.health / 5));
 			slaveJobValues.arcade += s.sexAmount;
 		}
 
 		// Club and public sluts adding to 'club'. Also recruiters assigned as sexual ambassador to another arcology.
-		if(s.assignment === "serve in the club" || (s.assignment === "recruit girls" && V.recruiterTarget === "other arcologies")) {
+		if (s.assignment === "serve in the club" || (s.assignment === "recruit girls" && V.recruiterTarget === "other arcologies")) {
 			SJVClub(s);
 		}
 	});
@@ -1044,142 +1042,142 @@ window.slaveJobValues = function() {
 		s.minorInjury = 0;
 
 		// The beauty multiplier
-		if(s.sexualFlaw === "attention whore") {
+		if (s.sexualFlaw === "attention whore") {
 			beautyMultiplier += 0.1;
 		}
-		if(V.arcologies[0].FSEdoRevivalist !== "unset") {
+		if (V.arcologies[0].FSEdoRevivalist !== "unset") {
 			beautyMultiplier += V.arcologies[0].FSEdoRevivalist / (V.FSLockinLevel * 3);
 		}
-		if(((V.universalRulesFacilityWork === 1) && (s.assignment === "serve the public") && (clubSpots > 0)) || (s.assignment === "serve in the club")) {
-			if(s.assignment == "serve the public") {
+		if (((V.universalRulesFacilityWork === 1) && (s.assignment === "serve the public") && (clubSpots > 0)) || (s.assignment === "serve in the club")) {
+			if (s.assignment === "serve the public") {
 				toTheClub = 1;
 				V.slavesGettingHelp += 1;
 			}
-			if(V.clubAdsSpending !== 0) {
-				if(V.clubAdsStacked === 1) {
-					if(isStacked(s) === true) {
+			if (V.clubAdsSpending !== 0) {
+				if (V.clubAdsStacked === 1) {
+					if (isStacked(s) === true) {
 						beautyMultiplier += 0.05;
 						//$His stacked body fits $clubName's ad campaign, getting $him more attention.
 					}
-				} else if(V.clubAdsStacked === -1) {
-					if(isSlim(s) === true) {
+				} else if (V.clubAdsStacked === -1) {
+					if (isSlim(s) === true) {
 						beautyMultiplier += 0.05;
 						//$His slim body fits $clubName's ad campaign, getting $him more attention.
 					}
 				}
-				if(V.clubAdsPreg === 1) {
-					if(isPreg(s) === true) {
+				if (V.clubAdsPreg === 1) {
+					if (isPreg(s) === true) {
 						beautyMultiplier += 0.05;
 						//$His gravid body fits $clubName's ad campaign, getting $him more attention.
 					}
-				} else if(V.clubAdsPreg === -1) {
-					if(isNotPreg(s) === true) {
+				} else if (V.clubAdsPreg === -1) {
+					if (isNotPreg(s) === true) {
 						beautyMultiplier += 0.05;
 						//$His flat belly fits $clubName's ad campaign, getting $him more attention.
 					}
 				}
-				if(V.clubAdsModded === 1) {
-					if(isModded(s) === true) {
+				if (V.clubAdsModded === 1) {
+					if (SlaveStatsChecker.isModded(s) === true) {
 						beautyMultiplier += 0.05;
 						//Body art like $hers is a major draw.
 					}
-				} else if(V.clubAdsModded === -1) {
-					if(isUnmodded(s) === true) {
+				} else if (V.clubAdsModded === -1) {
+					if (SlaveStatsChecker.isUnmodded(s) === true) {
 						beautyMultiplier += 0.05;
 						//Very clean bodies like $hers are a major draw.
 					}
 				}
-				if(V.clubAdsImplanted === 1) {
-					if(isSurgicallyImproved(s) === true) {
+				if (V.clubAdsImplanted === 1) {
+					if (isSurgicallyImproved(s) === true) {
 						beautyMultiplier += 0.05;
 						//Many citizens come to $clubName looking to fuck a plastic slut like $him.
 					}
-				} else if(V.clubAdsImplanted === -1) {
-					if(isPure(s) === true) {
+				} else if (V.clubAdsImplanted === -1) {
+					if (isPure(s) === true) {
 						beautyMultiplier += 0.05;
 						//Many citizens come to $clubName looking to get with a natural $girl like $him.
 					}
 				}
-				if(V.clubAdsOld === 1) {
-					if(isYoung(s) === false) {
+				if (V.clubAdsOld === 1) {
+					if (isYoung(s) === false) {
 						beautyMultiplier += 0.05;
 						//$He's perfect for $clubName, which practically exists to match citizens up with mature slaves.
 					}
-				} else if(V.clubAdsOld === -1) {
-					if(isYoung(s) === true && s.physical >= 18) {
+				} else if (V.clubAdsOld === -1) {
+					if (isYoung(s) === true && s.physical >= 18) {
 						beautyMultiplier += 0.05;
 						//$He's perfect for $clubName, which practically exists to match citizens up with young slaves.
 					}
-				} else if(V.clubAdsOld === -2) {
-					if(s.physical <= 18 && s.physical >= 13) {
+				} else if (V.clubAdsOld === -2) {
+					if (s.physical <= 18 && s.physical >= 13) {
 						beautyMultiplier += 0.05;
 						//$He's perfect for $clubName, which practically exists to match citizens up with teenage slaves.
 					}
-				} else if(V.clubAdsOld === -3) {
-					if(s.physical < 13) {
+				} else if (V.clubAdsOld === -3) {
+					if (s.physical < 13) {
 						beautyMultiplier += 0.05;
 						//$He's perfect for $clubName, which practically exists to match citizens up with $loli slaves.
 					}
 				}
-				if(V.clubAdsXX === 1) {
-					if(s.dick === 0) {
+				if (V.clubAdsXX === 1) {
+					if (s.dick === 0) {
 						beautyMultiplier += 0.05;
 						//Almost everyone who comes to $clubName is looking to fuck a $girl like $him.
 					}
-				} else if(V.clubAdsXX == -1) {
-					if(s.dick > 0) {
+				} else if (V.clubAdsXX === -1) {
+					if (s.dick > 0) {
 						beautyMultiplier += 0.05;
 						//Almost everyone who comes to $clubName is looking to poke a $girl who cums when buttfucked.
 					}
 				}
 			}
 		}
-		if(s.assignment === "serve in the club" || toTheClub === 1) {
+		if (s.assignment === "serve in the club" || toTheClub === 1) {
 			beautyMultiplier += DJRepBonus;
 		}
-		if(canHear(s) === false) {
+		if (canHear(s) === false) {
 			beautyMultiplier -= 0.15;
 			//$His inability to move to the rhythm of the music is very off putting to those looking to party.
 		}
 
 		//Injuries
-		if(s.curatives < 1 || s.inflationType !== "curative") {
-			if(s.health < -50) {
+		if (s.curatives < 1 || s.inflationType !== "curative") {
+			if (s.health < -50) {
 				s.health -= 8;
 				s.minorInjury = 1;
-			} else if(s.health < -20 && jsRandom(1,100) > 50) {
+			} else if (s.health < -20 && jsRandom(1, 100) > 50) {
 				s.health -= 5;
 				s.minorInjury = 1;
-			} else if(!canDoVaginal(s)) {
-				if(canDoAnal(s)) {
-					if(jsRandom(1,100) > 40+(10*(s.skill.anal + s.skill.oral))) {
-					s.health -= 5;
-					s.minorInjury = 1;
+			} else if (!canDoVaginal(s)) {
+				if (canDoAnal(s)) {
+					if (jsRandom(1, 100) > 40+(10*(s.skill.anal + s.skill.oral))) {
+						s.health -= 5;
+						s.minorInjury = 1;
 					}
-				} else if(jsRandom(1,100) > 40 + (10 * s.skill.oral)) {
+				} else if (jsRandom(1, 100) > 40 + (10 * s.skill.oral)) {
 					s.health -= 5;
 					s.minorInjury = 1;
 				}
-			} else if(s.skill.anal + s.skill.oral + s.skill.vaginal < 300) {
-				if(jsRandom(1,100) > 10+((s.skill.anal + s.skill.oral + s.skill.vaginal)/10)) {
+			} else if (s.skill.anal + s.skill.oral + s.skill.vaginal < 300) {
+				if (jsRandom(1, 100) > 10+((s.skill.anal + s.skill.oral + s.skill.vaginal)/10)) {
 					s.minorInjury = 1;
 				}
 			}
 		}
-		if(s.minorInjury === 1 && s.assignment === "serve the public") {
+		if (s.minorInjury === 1 && s.assignment === "serve the public") {
 			let injuryChance;
 			s.health -= 5;
 			beautyMultiplier -= 0.05;
-			if(canDoAnal(s)) {
-				injuryChance = jsRandom(1,100);
+			if (canDoAnal(s)) {
+				injuryChance = jsRandom(1, 100);
 			} else {
-				injuryChance = jsRandom(1,80);
+				injuryChance = jsRandom(1, 80);
 			}
-			if(injuryChance > 80) {
+			if (injuryChance > 80) {
 				s.minorInjury = "sore ass";
-			} else if(injuryChance > 60) {
+			} else if (injuryChance > 60) {
 				s.minorInjury = "black eye";
-			} else if(injuryChance > 40) {
+			} else if (injuryChance > 40) {
 				s.minorInjury = "split lip";
 			} else if (injuryChance > 20) {
 				s.minorInjury = "bad bruise";
@@ -1187,8 +1185,8 @@ window.slaveJobValues = function() {
 				s.minorInjury = "sore muscle";
 			}
 		}
-		if((s.hears === -1 && s.earwear !== "hearing aids") || (s.hears === 0 && s.earwear === "muffling ear plugs") || (s.hears === -2)) {
-			if(!canHear(s)) {
+		if ((s.hears === -1 && s.earwear !== "hearing aids") || (s.hears === 0 && s.earwear === "muffling ear plugs") || (s.hears === -2)) {
+			if (!canHear(s)) {
 				beautyMultiplier -= 0.5;
 			} else {
 				beautyMultiplier -= 0.75;
@@ -1198,8 +1196,8 @@ window.slaveJobValues = function() {
 		// The amount of sexual acts
 		s.sexAmount = Beauty(s) / 2 + 100;
 
-		if(s.assignment === "be the DJ") {
-			if((V.clubSlaves + toTheClubTotal > 0) && (V.clubSlaves + toTheClubTotal < 10)) {
+		if (s.assignment === "be the DJ") {
+			if ((V.clubSlaves + toTheClubTotal > 0) && (V.clubSlaves + toTheClubTotal < 10)) {
 				s.sexAmount *= (10 - V.clubSlaves - toTheClubTotal) / 10;
 			}
 		}
@@ -1207,40 +1205,39 @@ window.slaveJobValues = function() {
 
 		// The quality/value of each sexual act
 		s.sexQuality = FResult(s);
-		if((s.releaseRules === "restrictive" || s.releaseRules === "chastity") && s.standardReward !== "orgasm" && s.energy >= 20) {
+		if ((s.releaseRules === "restrictive" || s.releaseRules === "chastity") && s.standardReward !== "orgasm" && s.energy >= 20) {
 			s.sexQuality += 2;
 		}
-		if(canDoAnal(s) && s.anus === 0) {
+		if (canDoAnal(s) && s.anus === 0) {
 			s.sexQuality += 5; // This was at 10, not sure what the reasoning behind that was
 		}
-		if(canDoVaginal(s) && s.vagina === 0) {
+		if (canDoVaginal(s) && s.vagina === 0) {
 			s.sexQuality += 5;
 		}
-		if(s.devotion > 95 || s.energy > 95) {
+		if (s.devotion > 95 || s.energy > 95) {
 			s.sexQuality += 2;
-		} else if(s.devotion > 50) {
+		} else if (s.devotion > 50) {
 			s.sexQuality += 1;
-		} else if(s.devotion > 20) {
+		} else if (s.devotion > 20) {
 			// Nothing happens
-		} else if(s.trust < -20) {
+		} else if (s.trust < -20) {
 			s.sexQuality -= 1;
 		} else {
 			s.sexQuality -= 2;
 		}
-		if(s.assignment === "serve in the club") {
+		if (s.assignment === "serve in the club") {
 			s.sexQuality += 2;
-		} else if(toTheClub === 1) {
+		} else if (toTheClub === 1) {
 			s.sexQuality += 2;
 			clubSpots -= 1;
 		}
-		if(s.assignment !== "recruit girls") {
+		if (s.assignment !== "recruit girls") {
 			slaveJobValues.club += s.sexAmount * s.sexQuality;
 		}
-		return;
 	}
 
 	// Saturation penalty for public servants. Even the most beautiful slaves lose some of their shine if they have too much competition.
-	if(slaveJobValues.club > 0) {
+	if (slaveJobValues.club > 0) {
 		slaveJobValues.clubSP = (Math.pow(slaveJobValues.club / 1000, 0.95) * 1000) / slaveJobValues.club;
 	}
 	return slaveJobValues;
@@ -1252,49 +1249,48 @@ window.corpValue = function() {
 	const V = State.variables;
 	if (V.corpIncorporated === 0) {
 		return 0;
-	} else {
-		let corpAssets = 0;
-		if (V.corpDivExtra > 0) {
-			corpAssets += V.corpDivExtraDev * 16000 + V.corpDivExtraSlaves * 10000;
-		}
-		if (V.corpDivLegal > 0) {
-			corpAssets += V.corpDivLegalDev * 20000 + V.corpDivLegalSlaves * 15000;
-		}
-		if (V.corpDivBreak > 0) {
-			corpAssets += V.corpDivBreakDev * 7200 + V.corpDivBreakSlaves * 10000 + V.corpDivBreakSlaves2 * 15000;
-		}
-		if (V.corpDivSurgery > 0) {
-			corpAssets += V.corpDivSurgeryDev * 16000 + V.corpDivSurgerySlaves * 15000 + V.corpDivSurgerySlaves2 * 23000;
-		}
-		if (V.corpDivTrain > 0) {
-			if (V.corpDivSurgery + V.corpDivTrain < 2 && V.corpDivTrainSurgerySwitch === 0) {
-				corpAssets += V.corpDivTrainDev * 20000 + V.corpDivTrainSlaves * 15000 + V.corpDivTrainSlaves2 * 26000;
-			} else if (V.corpDivTrainSurgerySwitch === 1 && V.corpDivTrainSurgeryTimer < 5) {
-				corpAssets += V.corpDivTrainDev * 20000 + V.corpDivTrainSlaves * (15000 + 1600 * V.corpDivTrainSurgeryTimer) + V.corpDivTrainSlaves2 * (26000 + 1600 * V.corpDivTrainSurgeryTimer);
-			} else {
-				corpAssets += V.corpDivTrainDev * 20000 + V.corpDivTrainSlaves * 23000 + V.corpDivTrainSlaves2 * 34000;
-			}
-		}
-		if (V.corpDivArcade > 0) {
-			corpAssets += V.corpDivArcadeDev * 4000 + V.corpDivArcadeSlaves * 10000;
-		}
-		if (V.corpDivMenial > 0) {
-			corpAssets += V.corpDivMenialDev * 5200 + V.corpDivMenialSlaves * 15000;
-		}
-		if (V.corpDivDairy > 0) {
-			corpAssets += V.corpDivDairyDev * 12000 + V.corpDivDairySlaves * 23000;
+	}
+	let corpAssets = 0;
+	if (V.corpDivExtra > 0) {
+		corpAssets += V.corpDivExtraDev * 16000 + V.corpDivExtraSlaves * 10000;
+	}
+	if (V.corpDivLegal > 0) {
+		corpAssets += V.corpDivLegalDev * 20000 + V.corpDivLegalSlaves * 15000;
+	}
+	if (V.corpDivBreak > 0) {
+		corpAssets += V.corpDivBreakDev * 7200 + V.corpDivBreakSlaves * 10000 + V.corpDivBreakSlaves2 * 15000;
+	}
+	if (V.corpDivSurgery > 0) {
+		corpAssets += V.corpDivSurgeryDev * 16000 + V.corpDivSurgerySlaves * 15000 + V.corpDivSurgerySlaves2 * 23000;
+	}
+	if (V.corpDivTrain > 0) {
+		if (V.corpDivSurgery + V.corpDivTrain < 2 && V.corpDivTrainSurgerySwitch === 0) {
+			corpAssets += V.corpDivTrainDev * 20000 + V.corpDivTrainSlaves * 15000 + V.corpDivTrainSlaves2 * 26000;
+		} else if (V.corpDivTrainSurgerySwitch === 1 && V.corpDivTrainSurgeryTimer < 5) {
+			corpAssets += V.corpDivTrainDev * 20000 + V.corpDivTrainSlaves * (15000 + 1600 * V.corpDivTrainSurgeryTimer) + V.corpDivTrainSlaves2 * (26000 + 1600 * V.corpDivTrainSurgeryTimer);
+		} else {
+			corpAssets += V.corpDivTrainDev * 20000 + V.corpDivTrainSlaves * 23000 + V.corpDivTrainSlaves2 * 34000;
 		}
-		if (V.corpDivWhore > 0) {
-			if (V.corpDivSurgery + V.corpDivTrain < 2 && V.corpDivTrainSurgerySwitch === 0) {
-				corpAssets += V.corpDivWhoreDev * 16000 + V.corpDivWhoreSlaves * 26000;
-			} else if (V.corpDivTrainSurgerySwitch === 1 && V.corpDivTrainSurgeryTimer < 20) {
-				corpAssets += V.corpDivWhoreDev * 16000 + V.corpDivWhoreSlaves * (26000 + 400 * V.corpDivTrainSurgeryTimer);
-			} else {
-				corpAssets += V.corpDivWhoreDev * 16000 + V.corpDivWhoreSlaves * 34000;
-			}
+	}
+	if (V.corpDivArcade > 0) {
+		corpAssets += V.corpDivArcadeDev * 4000 + V.corpDivArcadeSlaves * 10000;
+	}
+	if (V.corpDivMenial > 0) {
+		corpAssets += V.corpDivMenialDev * 5200 + V.corpDivMenialSlaves * 15000;
+	}
+	if (V.corpDivDairy > 0) {
+		corpAssets += V.corpDivDairyDev * 12000 + V.corpDivDairySlaves * 23000;
+	}
+	if (V.corpDivWhore > 0) {
+		if (V.corpDivSurgery + V.corpDivTrain < 2 && V.corpDivTrainSurgerySwitch === 0) {
+			corpAssets += V.corpDivWhoreDev * 16000 + V.corpDivWhoreSlaves * 26000;
+		} else if (V.corpDivTrainSurgerySwitch === 1 && V.corpDivTrainSurgeryTimer < 20) {
+			corpAssets += V.corpDivWhoreDev * 16000 + V.corpDivWhoreSlaves * (26000 + 400 * V.corpDivTrainSurgeryTimer);
+		} else {
+			corpAssets += V.corpDivWhoreDev * 16000 + V.corpDivWhoreSlaves * 34000;
 		}
-		return corpAssets + V.corpDividend + V.corpCash;
 	}
+	return corpAssets + V.corpDividend + V.corpCash;
 };
 
 // Corporation Share Price
@@ -1304,9 +1300,8 @@ window.corpSharePrice = function(q = 0) {
 	const V = State.variables;
 	if (V.corpIncorporated === 0) {
 		return 0;
-	} else {
-		return Math.trunc(1000 * (corpValue() / (V.personalShares + V.publicShares + q)));
 	}
+	return Math.trunc(1000 * (corpValue() / (V.personalShares + V.publicShares + q)));
 };
 
 // Corporation Division Slave room
@@ -1317,63 +1312,56 @@ window.corpDivBreakSlavesRoom = function() {
 	const V = State.variables;
 	if (V.corpDivBreak === 1 && V.corpDivBreakDev > V.corpDivBreakSlaves) {
 		return V.corpDivBreakDev - V.corpDivBreakSlaves;
-	} else {
-		return 0;
 	}
+	return 0;
 };
 
 window.corpDivSurgerySlavesRoom = function() {
 	const V = State.variables;
 	if (V.corpDivSurgery === 1 && V.corpDivSurgeryDev > V.corpDivSurgerySlaves) {
 		return V.corpDivSurgeryDev - V.corpDivSurgerySlaves;
-	} else {
-		return 0;
 	}
+	return 0;
 };
 
 window.corpDivTrainSlavesRoom = function() {
 	const V = State.variables;
 	if (V.corpDivTrain === 1 && V.corpDivTrainDev > V.corpDivTrainSlaves) {
 		return V.corpDivTrainDev - V.corpDivTrainSlaves;
-	} else {
-		return 0;
 	}
+	return 0;
 };
 
 window.corpDivArcadeSlavesRoom = function() {
 	const V = State.variables;
 	if (V.corpDivArcade === 1 && V.corpDivArcadeDev > V.corpDivArcadeSlaves) {
 		return V.corpDivArcadeDev - V.corpDivArcadeSlaves;
-	} else {
-		return 0;
 	}
+	return 0;
 };
 
 window.corpDivMenialSlavesRoom = function() {
 	const V = State.variables;
 	if (V.corpDivMenial === 1 && V.corpDivMenialDev > V.corpDivMenialSlaves) {
 		return V.corpDivMenialDev - V.corpDivMenialSlaves;
-	} else {
-		return 0;
 	}
+	return 0;
 };
 
 window.corpDivDairySlavesRoom = function() {
 	const V = State.variables;
 	if (V.corpDivDairy === 1 && V.corpDivDairyDev > V.corpDivDairySlaves) {
 		return V.corpDivDairyDev - V.corpDivDairySlaves;
-	} else {
-		return 0;
 	}
+	return 0;
 };
 
 window.corpDivWhoreSlavesRoom = function() {
 	const V = State.variables;
 	if (V.corpDivWhore === 1 && V.corpDivWhoreDev > V.corpDivWhoreSlaves) {
 		return V.corpDivWhoreDev - V.corpDivWhoreSlaves;
-	} else {
-		return 0;
 	}
+	return 0;
 };
 
 //Corporation race blacklisting/whitelisting
@@ -1406,15 +1394,15 @@ window.getSlaveStatisticData = function(s, facility) {
 
 	if (facility.income.has(s.ID)) {
 		return facility.income.get(s.ID);
-	} else {
-		const data = {
-			ID: s.ID, slaveName: s.slaveName, customLabel: s.custom.label,
-			income: 0, adsIncome: 0, rep: 0, food: 0, cost: getSlaveCost(s),
-			customers: 0 /* brothel, club, ... */
-		};
-		facility.income.set(s.ID, data);
-		return data;
 	}
+
+	const data = {
+		ID: s.ID, slaveName: s.slaveName, customLabel: s.custom.label,
+		income: 0, adsIncome: 0, rep: 0, food: 0, cost: getSlaveCost(s),
+		customers: 0 /* brothel, club, ... */
+	};
+	facility.income.set(s.ID, data);
+	return data;
 };
 
 window.initFacilityStatistics = function(facility) {
@@ -1470,7 +1458,6 @@ window.cashX = function(cost, what, who) {
 
 	//INCOME
 	if (cost > 0) {
-
 		//record the action
 		if (typeof V.lastWeeksCashIncome[what] !== 'undefined') {
 			V.lastWeeksCashIncome[what] += cost;
@@ -1487,7 +1474,6 @@ window.cashX = function(cost, what, who) {
 
 	//EXPENSES
 	else if (cost < 0) {
-
 		//record the action
 		if (typeof V.lastWeeksCashExpenses[what] !== 'undefined') {
 			V.lastWeeksCashExpenses[what] += cost;
@@ -1521,7 +1507,6 @@ window.repX = function(rep, what, who) {
 	//INCOME
 	//These are all scaled relative to current rep except when recording the who, to keep comparisons between slaves possible across times. This quite drastically reduces rep income at high levels of rep and only slightly at low levels.
 	if (rep > 0) {
-
 		//record the slave, if available
 		if (typeof who !== 'undefined') {
 			who.lastWeeksRepIncome += rep;
@@ -1542,7 +1527,6 @@ window.repX = function(rep, what, who) {
 
 	//EXPENSES
 	else if (rep < 0) {
-
 		//record the action
 		if (typeof V.lastWeeksRepExpenses[what] !== 'undefined') {
 			V.lastWeeksRepExpenses[what] += rep;
diff --git a/src/js/eventSelectionJS.js b/src/js/eventSelectionJS.js
index dabb5f771cf0ae07935673696d840390d0f14f99..6b33b8d77be4e46282a7b0ea5666a71396d0011b 100644
--- a/src/js/eventSelectionJS.js
+++ b/src/js/eventSelectionJS.js
@@ -1242,7 +1242,7 @@ window.generateRandomEventPoolStandard = function(eventSlave) {
 				}
 			}
 
-			if (eventSlave.skill.whore >= 100) {
+			if (eventSlave.skill.whoring >= 100) {
 				if (eventSlave.trust > 50) {
 					if (["whore", "work in the brothel"].includes(eventSlave.assignment)) {
 						State.variables.RESSevent.push("masterful whore");
@@ -1784,7 +1784,7 @@ window.generateRandomEventPoolStandard = function(eventSlave) {
 						}
 					}
 
-					if (eventSlave.skill.whore >= 100) {
+					if (eventSlave.skill.whoring >= 100) {
 						if (eventSlave.assignment === "whore") {
 							State.variables.events.push("RE legendary whore");
 						}
diff --git a/src/js/extendedFamilyModeJS.js b/src/js/extendedFamilyModeJS.js
index de9c109f11b68c44985aa4eb36c1357a5a19b92c..a44dd4c8ea5efeac41560bec0a4f105fb37de352 100644
--- a/src/js/extendedFamilyModeJS.js
+++ b/src/js/extendedFamilyModeJS.js
@@ -16,17 +16,15 @@ window.isParentP = function isParentP(daughter, parent) {
 window.sameDad = function (slave1, slave2) {
 	if ((slave1.father === slave2.father) && (slave1.father !== 0 && slave1.father !== -2)) {
 		return true;
-	} else {
-		return false;
 	}
+	return false;
 };
 
 window.sameMom = function (slave1, slave2) {
 	if ((slave1.mother === slave2.mother) && (slave1.mother !== 0 && slave1.mother !== -2)) {
 		return true;
-	} else {
-		return false;
 	}
+	return false;
 };
 
 window.isAunt = /** @param {App.Entity.SlaveState} niece, @param {App.Entity.SlaveState} aunt */ function (niece, aunt) {
@@ -58,9 +56,8 @@ window.sameTParent = function (slave1, slave2) {
 		return 2;
 	} else if ((slave1.mother === slave2.father || slave1.father === slave2.mother) && slave1.mother !== 0 && slave1.mother !== -2 && slave2.mother !== 0 && slave2.mother !== -2 && slave1.mother !== slave1.father) {
 		return 3;
-	} else {
-		return 0;
 	}
+	return 0;
 };
 
 /*
@@ -80,9 +77,8 @@ window.areTwins = function (slave1, slave2) {
 		return false;
 	} else if (slave1.actualAge === slave2.actualAge && slave1.birthWeek === slave2.birthWeek) {
 		return true;
-	} else {
-		return false;
 	}
+	return false;
 };
 
 window.areSisters = function (slave1, slave2) {
@@ -205,9 +201,8 @@ window.isSlaveAvailable = /** @param {App.Entity.SlaveState} slave */ function (
 		return false;
 	} else if (slave.assignment === "work in the dairy" && State.variables.dairyRestraintsSetting >= 2) {
 		return false;
-	} else {
-		return true;
 	}
+	return true;
 };
 
 /* OLD
@@ -312,7 +307,7 @@ window.totalPlayerRelatives = function (pc) {
 window.relativeTerm = /** @param {App.Entity.SlaveState} slave1 @param {App.Entity.SlaveState} slave2 */
 	function (slave1, slave2) {
 		if (slave2.mother === slave1.ID || slave2.father === slave1.ID) {
-			if (slave2.genes === "XY" && State.variables.diversePronouns == 1) {
+			if (slave2.genes === "XY" && State.variables.diversePronouns === 1) {
 				return "son";
 			} else {
 				return "daughter";
@@ -322,31 +317,31 @@ window.relativeTerm = /** @param {App.Entity.SlaveState} slave1 @param {App.Enti
 		} else if (slave1.father === slave2.ID) {
 			return "father";
 		} else if (areSisters(slave2, slave1) === 1) {
-			if (slave2.genes === "XY" && State.variables.diversePronouns == 1) {
+			if (slave2.genes === "XY" && State.variables.diversePronouns === 1) {
 				return "twin brother";
 			} else {
 				return "twin sister";
 			}
 		} else if (areSisters(slave2, slave1) === 2) {
-			if (slave2.genes === "XY" && State.variables.diversePronouns == 1) {
+			if (slave2.genes === "XY" && State.variables.diversePronouns === 1) {
 				return "brother";
 			} else {
 				return "sister";
 			}
 		} else if (areSisters(slave2, slave1) === 3) {
-			if (slave2.genes === "XY" && State.variables.diversePronouns == 1) {
+			if (slave2.genes === "XY" && State.variables.diversePronouns === 1) {
 				return "half-brother";
 			} else {
 				return "half-sister";
 			}
 		} else if (isAunt(slave1, slave2)) {
-			if (slave2.genes === "XY" && State.variables.diversePronouns == 1) {
+			if (slave2.genes === "XY" && State.variables.diversePronouns === 1) {
 				return "nephew";
 			} else {
 				return "niece";
 			}
 		} else if (isAunt(slave2, slave1)) {
-			if (slave2.genes === "XY" && State.variables.diversePronouns == 1) {
+			if (slave2.genes === "XY" && State.variables.diversePronouns === 1) {
 				return "uncle";
 			} else {
 				return "aunt";
diff --git a/src/js/familyTreeJS.js b/src/js/familyTreeJS.js
index 4819a4019cad81bb1a854391173009beb8d321c6..491dfcd9d01c0e7699e1e4cb50dbfaaf260b21bf 100644
--- a/src/js/familyTreeJS.js
+++ b/src/js/familyTreeJS.js
@@ -37,14 +37,14 @@ window.renderFamilyTree = function(slaves, filterID) {
 	function initFtreeSVG(data) {
 		ftreeWidth = data.nodes.length * 45;
 		ftreeHeight = data.nodes.length * 35;
-		if(ftreeWidth < 600) {
+		if (ftreeWidth < 600) {
 			ftreeWidth = 600;
-		} else if(ftreeWidth > 1920) {
+		} else if (ftreeWidth > 1920) {
 			ftreeWidth = 1920;
 		}
-		if(ftreeHeight < 480) {
+		if (ftreeHeight < 480) {
 			ftreeHeight = 480;
-		} else if(ftreeHeight > 1200) {
+		} else if (ftreeHeight > 1200) {
 			ftreeHeight = 1200;
 		}
 
@@ -95,9 +95,9 @@ window.renderFamilyTree = function(slaves, filterID) {
 			.append('line')
 			.attr('marker-end', 'url(#arrowhead)')
 			.attr('stroke', function(d) {
-				if(d.type === 'homologous') {
+				if (d.type === 'homologous') {
 					return '#862d59';
-				} else if(d.type === 'paternal') {
+				} else if (d.type === 'paternal') {
 					return '#24478f';
 				} else {
 					return '#aa909b';
@@ -118,7 +118,7 @@ window.renderFamilyTree = function(slaves, filterID) {
 		node.append('circle')
 			.attr('r', function (d) { return d.r; })
 			.attr('stroke', function(d) {
-				if(d.ID === filterID) {
+				if (d.ID === filterID) {
 					return '#ffff20';
 				} else {
 					return '#5a5a5a';
@@ -130,8 +130,8 @@ window.renderFamilyTree = function(slaves, filterID) {
 		node.append('text')
 			.text(function(d) {
 				var ssym;
-				if(d.ID === -1) {
-					if(d.dick === 1 && d.vagina === 1) {
+				if (d.ID === -1) {
+					if (d.dick === 1 && d.vagina === 1) {
 						ssym = '☿';
 					} else if (d.dick === 1) {
 						ssym = '♂';
@@ -153,13 +153,13 @@ window.renderFamilyTree = function(slaves, filterID) {
 			.attr('dx', function(d) { return -(8*d.name.length)/2; })
 			.attr('class', 'node-text')
 			.style('fill', function(d) {
-				if(d.is_mother && d.is_father) {
+				if (d.is_mother && d.is_father) {
 					return '#b84dff';
-				} else if(d.is_father) {
+				} else if (d.is_father) {
 					return '#00ffff';
-				} else if(d.is_mother) {
+				} else if (d.is_mother) {
 					return '#ff3399';
-				} else if(d.unborn) {
+				} else if (d.unborn) {
 					return '#a3a3c2';
 				} else {
 					return '#66cc66';
@@ -202,7 +202,6 @@ window.renderFamilyTree = function(slaves, filterID) {
 			d.fx = null;
 			d.fy = null;
 		}
-
 	}
 };
 
@@ -237,78 +236,78 @@ window.buildFamilyTree = function(slaves = State.variables.slaves, filterID) {
 	charList.push.apply(charList, State.variables.tanks);
 
 	var unborn = {};
-	for(let i = 0; i < State.variables.tanks.length; i++) {
+	for (let i = 0; i < State.variables.tanks.length; i++) {
 		unborn[State.variables.tanks[i].ID] = true;
 	}
 	for (let i = 0; i < State.variables.cribs.length; i++) {
 		unborn[State.variables.cribs[i].ID] = true;
 	}
 
-	for(let i = 0; i < charList.length; i++) {
+	for (let i = 0; i < charList.length; i++) {
 		var mom = charList[i].mother;
 		var dad = charList[i].father;
 
-		if(mom) {
-			if(!kids[mom]) {
+		if (mom) {
+			if (!kids[mom]) {
 				kids[mom] = {};
 			}
 			kids[mom].mother = true;
 		}
-		if(dad) {
-			if(!kids[dad]) {
+		if (dad) {
+			if (!kids[dad]) {
 				kids[dad] = {};
 			}
 			kids[dad].father = true;
 		}
 	}
 
-	for(let i = 0; i < charList.length; i++) {
+	for (let i = 0; i < charList.length; i++) {
 		var character = charList[i];
-		if(character.mother === 0 && character.father === 0 && !kids[character.ID]) {
+		if (character.mother === 0 && character.father === 0 && !kids[character.ID]) {
 			continue;
 		}
 		let mom = character.mother;
-		if(mom < -6) {
+		if (mom < -6) {
 			if (mom in State.variables.missingTable && State.variables.showMissingSlaves) {
 				node_lookup[mom] = family_graph.nodes.length;
 				var missing = State.variables.missingTable[mom];
 				charList.push({ID: mom, mother: 0, father: 0, is_mother: true, dick: missing.dick, vagina: missing.vagina, slaveName: missing.slaveName});
 			} else {
-				if(typeof outmoms[mom] === 'undefined') {
+				if (typeof outmoms[mom] === 'undefined') {
 					outmoms[mom] = [];
 				}
 				outmoms[mom].push(character.slaveName);
 			}
-		} else if(mom < 0 && typeof node_lookup[mom] === 'undefined' && typeof preset_lookup[mom] !== 'undefined') {
+		} else if (mom < 0 && typeof node_lookup[mom] === 'undefined' && typeof preset_lookup[mom] !== 'undefined') {
 			node_lookup[mom] = family_graph.nodes.length;
 			charList.push({ID: mom, mother: 0, father: 0, is_father: true, dick: 0, vagina: 1, slaveName: preset_lookup[mom]});
 		}
 
 		let dad = character.father;
-		if(dad < -6) {
+		if (dad < -6) {
 			if (dad in State.variables.missingTable && State.variables.showMissingSlaves) {
 				node_lookup[dad] = family_graph.nodes.length;
 				let missing = State.variables.missingTable[dad];
 				charList.push({ID: dad, mother: 0, father: 0, is_father: true, dick: missing.dick, vagina: missing.vagina, slaveName: missing.slaveName});
 			} else {
-				if(typeof outdads[dad] === 'undefined') {
+				if (typeof outdads[dad] === 'undefined') {
 					outdads[dad] = [];
 				}
 				outdads[dad].push(character.slaveName);
 			}
-		} else if(dad < 0 && typeof node_lookup[dad] === 'undefined' && typeof preset_lookup[dad] !== 'undefined') {
+		} else if (dad < 0 && typeof node_lookup[dad] === 'undefined' && typeof preset_lookup[dad] !== 'undefined') {
 			node_lookup[dad] = family_graph.nodes.length;
 			charList.push({ID: dad, mother: 0, father: 0, is_father: true, dick: 1, vagina: -1, slaveName: preset_lookup[dad]});
 		}
 	}
 	var mkeys = Object.keys(outmoms);
-	for(let i = 0; i < mkeys.length; i++) {
+	for (let i = 0; i < mkeys.length; i++) {
 		var name;
 		var key = mkeys[i];
 		var names = outmoms[key];
-		if(names.length === 1) {
+		if (names.length === 1) {
 			name = names[0];
-		} else if(names.length === 2) {
+		} else if (names.length === 2) {
 			name = names.join(' and ');
 		} else {
 			names[-1] = `and ${names[-1]}`;
@@ -320,13 +319,13 @@ window.buildFamilyTree = function(slaves = State.variables.slaves, filterID) {
 	}
 
 	var dkeys = Object.keys(outdads);
-	for(let i = 0; i < dkeys.length; i++) {
+	for (let i = 0; i < dkeys.length; i++) {
 		let name;
 		let key = dkeys[i];
 		let names = outdads[key];
-		if(names.length === 1) {
+		if (names.length === 1) {
 			name = names[0];
-		} else if(names.length === 2) {
+		} else if (names.length === 2) {
 			name = names.join(' and ');
 		} else {
 			names[-1] = `and ${names[-1]}`;
@@ -338,7 +337,7 @@ window.buildFamilyTree = function(slaves = State.variables.slaves, filterID) {
 	}
 
 	var charHash = {};
-	for(let i = 0; i < charList.length; i++) {
+	for (let i = 0; i < charList.length; i++) {
 		charHash[charList[i].ID] = charList[i];
 	}
 
@@ -347,43 +346,43 @@ window.buildFamilyTree = function(slaves = State.variables.slaves, filterID) {
 	var saveTree = {};
 	function relatedTo(character, targetID, relIDs = {tree: {}, related: false}) {
 		relIDs.tree[character.ID] = true;
-		if(related[character.ID]) {
+		if (related[character.ID]) {
 			relIDs.related = true;
 			return relIDs;
 		}
-		if(character.ID === targetID) {
+		if (character.ID === targetID) {
 			relIDs.related = true;
 		}
-		if(seen[character.ID]) {
+		if (seen[character.ID]) {
 			return relIDs;
 		}
 		seen[character.ID] = true;
-		if(character.mother !== 0) {
-			if(charHash[character.mother]) {
+		if (character.mother !== 0) {
+			if (charHash[character.mother]) {
 				relatedTo(charHash[character.mother], targetID, relIDs);
 			}
 		}
-		if(character.father !== 0) {
-			if(charHash[character.father]) {
+		if (character.father !== 0) {
+			if (charHash[character.father]) {
 				relatedTo(charHash[character.father], targetID, relIDs);
 			}
 		}
 		return relIDs;
 	}
-	if(filterID) {
-		if(charHash[filterID]) {
+	if (filterID) {
+		if (charHash[filterID]) {
 			var relIDs = relatedTo(charHash[filterID], filterID);
-			for(let k in relIDs.tree) {
+			for (let k in relIDs.tree) {
 				related[k] = true;
 			}
-			for(let i = 0; i < charList.length; i++) {
-				if(charHash[charList[i].ID]) {
+			for (let i = 0; i < charList.length; i++) {
+				if (charHash[charList[i].ID]) {
 					var pRelIDs = relatedTo(charHash[charList[i].ID], filterID);
-					if(pRelIDs.related) {
-						for(let k in pRelIDs.tree) {
+					if (pRelIDs.related) {
+						for (let k in pRelIDs.tree) {
 							related[k] = true;
-							if(saveTree[k]) {
-								for(let k2 in saveTree[k].tree) {
+							if (saveTree[k]) {
+								for (let k2 in saveTree[k].tree) {
 									related[k2] = true;
 								}
 							}
@@ -395,13 +394,13 @@ window.buildFamilyTree = function(slaves = State.variables.slaves, filterID) {
 		}
 	}
 
-	for(let i = 0; i < charList.length; i++) {
+	for (let i = 0; i < charList.length; i++) {
 		let character = charList[i];
 		let char_id = character.ID;
-		if(character.mother === 0 && character.father === 0 && !kids[char_id]) {
+		if (character.mother === 0 && character.father === 0 && !kids[char_id]) {
 			continue;
 		}
-		if(filterID && !related[char_id]) {
+		if (filterID && !related[char_id]) {
 			continue;
 		}
 		node_lookup[char_id] = family_graph.nodes.length;
@@ -412,7 +411,7 @@ window.buildFamilyTree = function(slaves = State.variables.slaves, filterID) {
 			unborn: !!unborn[char_id],
 			vagina: character.vagina
 		};
-		if(kids[char_id]) {
+		if (kids[char_id]) {
 			char_obj.is_mother = !!kids[char_id].mother;
 			char_obj.is_father = !!kids[char_id].father;
 		} else {
@@ -422,24 +421,24 @@ window.buildFamilyTree = function(slaves = State.variables.slaves, filterID) {
 		family_graph.nodes.push(char_obj);
 	}
 
-	for(let i = 0; i < charList.length; i++) {
+	for (let i = 0; i < charList.length; i++) {
 		let character = charList[i];
 		let char_id = character.ID;
-		if(character.mother === 0 && character.father === 0 && !kids[char_id]) {
+		if (character.mother === 0 && character.father === 0 && !kids[char_id]) {
 			continue;
 		}
-		if(filterID && !related[char_id]) {
-			if(related[character.mother]) {
+		if (filterID && !related[char_id]) {
+			if (related[character.mother]) {
 				console.log('wtf, mom');
 			}
-			if(related[character.father]) {
+			if (related[character.father]) {
 				console.log('wtf, dad');
 			}
 			continue;
 		}
-		if(typeof node_lookup[character.mother] !== 'undefined') {
+		if (typeof node_lookup[character.mother] !== 'undefined') {
 			var ltype;
-			if(character.mother === character.father) {
+			if (character.mother === character.father) {
 				ltype = 'homologous';
 			} else {
 				ltype = 'maternal';
@@ -450,10 +449,10 @@ window.buildFamilyTree = function(slaves = State.variables.slaves, filterID) {
 				source: node_lookup[character.mother]*1
 			});
 		}
-		if(character.mother === character.father) {
+		if (character.mother === character.father) {
 			continue;
 		}
-		if(typeof node_lookup[character.father] !== 'undefined') {
+		if (typeof node_lookup[character.father] !== 'undefined') {
 			family_graph.links.push({
 				type: 'paternal',
 				target: node_lookup[char_id]*1,
@@ -487,7 +486,7 @@ window.updateFamilyTree = function(activeSlave = lastActiveSlave, slaves = lastS
 	var numTreeNodes = 0;
 
 	var graphElement = document.getElementById("graph");
-	if(!graphElement)
+	if (!graphElement)
 		return;
 	graphElement.innerHTML = "";
 
@@ -497,17 +496,17 @@ window.updateFamilyTree = function(activeSlave = lastActiveSlave, slaves = lastS
 	*/
 
 	function getSlave(id, expectedGenes) {
-		if(id === -1) {
+		if (id === -1) {
 			return {"slaveName": "YOU", "ID": id, "physicalAge": PC.physicalAge, "genes": PC.genes, "father": PC.father, "mother": PC.mother};
 		}
-		if(id === 0) {
+		if (id === 0) {
 			return {"slaveName": "-", "ID": id, "genes": expectedGenes};
 		}
-		if(id === activeSlave.ID) {
+		if (id === activeSlave.ID) {
 			return activeSlave;
 		}
-		for(let i = 0; i < slaves.length; ++i) {
-			if(slaves[i].ID === id)
+		for (let i = 0; i < slaves.length; ++i) {
+			if (slaves[i].ID === id)
 				return slaves[i];
 		}
 		return {"slaveName": "-", "ID": id, "genes": expectedGenes};
@@ -516,23 +515,23 @@ window.updateFamilyTree = function(activeSlave = lastActiveSlave, slaves = lastS
 	function slaveInfo(slave, activeSlaveId, recursionProtectSlaveId = {}) {
 		numTreeNodes = 0;
 		treeDepth = 0;
-		if(recursionProtectSlaveId[slave.ID]) {
+		if (recursionProtectSlaveId[slave.ID]) {
 			console.log("Recursion protection");
 			return slaveInfo_(slave, activeSlaveId);
 		}
 		recursionProtectSlaveId[slave.ID] = true;
 
-		if(typeof slave.father === "undefined" || typeof slave.mother === "undefined")
+		if (typeof slave.father === "undefined" || typeof slave.mother === "undefined")
 			return slaveInfo_(slave, activeSlaveId);
 
-		if(slave.father === -1 || slave.mother === -1) {
+		if (slave.father === -1 || slave.mother === -1) {
 			return slaveInfo(getSlave(-1), activeSlaveId, recursionProtectSlaveId);
 		}
-		if(slave.father !== 0) {
+		if (slave.father !== 0) {
 			return slaveInfo(getSlave(slave.father, "unknownXY"), activeSlaveId, recursionProtectSlaveId);
 		}
 
-		if(slave.mother !== 0) {
+		if (slave.mother !== 0) {
 			return slaveInfo(getSlave(slave.mother, "unknownXX"), activeSlaveId, recursionProtectSlaveId);
 		}
 		return slaveInfo_(slave, activeSlaveId);
@@ -541,7 +540,7 @@ window.updateFamilyTree = function(activeSlave = lastActiveSlave, slaves = lastS
 		numTreeNodes += 1;
 		treeDepth = Math.max(treeDepth, depth);
 		var shouldAddChildren = false;
-		if(!slavesAdded[slave.ID]) {
+		if (!slavesAdded[slave.ID]) {
 			shouldAddChildren = true;
 			slavesAdded[slave.ID] = true;
 		}
@@ -555,33 +554,33 @@ window.updateFamilyTree = function(activeSlave = lastActiveSlave, slaves = lastS
 		var spouseToChild = {};
 
 		function maybeAddSpouseToChild(child) {
-			if(child.ID === slave.ID)
+			if (child.ID === slave.ID)
 				return;
 			if (child.father === slave.ID) {
-				if(!spouseToChild[child.mother]) {
+				if (!spouseToChild[child.mother]) {
 					spouseToChild[child.mother] = [];
 				}
 				spouseToChild[child.mother].push(child);
 			} else if (child.mother === slave.ID) {
-				if(!spouseToChild[child.father]) {
+				if (!spouseToChild[child.father]) {
 					spouseToChild[child.father] = [];
 				}
 				spouseToChild[child.father].push(child);
 			}
 		}
 
-		if(activeSlave.ID !== PC.ID)
+		if (activeSlave.ID !== PC.ID)
 			maybeAddSpouseToChild(activeSlave);
 		maybeAddSpouseToChild(getSlave(-1));
 
-		for(let i = 0; i < slaves.length; ++i) {
+		for (let i = 0; i < slaves.length; ++i) {
 			var child = slaves[i];
-			if(child.ID !== activeSlave.ID)
+			if (child.ID !== activeSlave.ID)
 				maybeAddSpouseToChild(child);
 		}
 
-		for(let key in spouseToChild) {
-			if(spouseToChild.hasOwnProperty(key)) {
+		for (let key in spouseToChild) {
+			if (spouseToChild.hasOwnProperty(key)) {
 				var children = shouldAddChildren?spouseToChild[key]:[];
 				var spouse = getSlave(key, (slaves.genes === "XX")?"unknownXY":(slaves.genes === "XY")?"unknownXX":"unknown");
 				var spouseName;
@@ -608,7 +607,7 @@ window.updateFamilyTree = function(activeSlave = lastActiveSlave, slaves = lastS
 	var parentWidth = document.getElementById('editFamily').offsetWidth;
 
 	console.log(parentWidth, document.getElementById('passages').offsetWidth);
-	if(!parentWidth)
+	if (!parentWidth)
 		parentWidth = document.body.offsetWidth - 483;
 
 	console.log(parentWidth, Math.min(200 + 40*numTreeNodes, parentWidth-200) + 200);
@@ -624,5 +623,4 @@ window.updateFamilyTree = function(activeSlave = lastActiveSlave, slaves = lastS
 			}
 		}
 	});
-
 };
diff --git a/src/js/futureSocietyJS.js b/src/js/futureSocietyJS.js
index 15bcafe98c251ac6384d25c33ceaeb1b6cba24fb..2cbdac435bd4877aeb91e6a7cd00bb4e0806bc22 100644
--- a/src/js/futureSocietyJS.js
+++ b/src/js/futureSocietyJS.js
@@ -3,7 +3,7 @@
 window.FutureSocieties = (function() {
 	return {
 		remove: removeFS,
-		resetCredits: resetFSCredits
+		DecorationCleanup: DecorationCleanup
 	};
 
 	// call as FutureSocieties.remove(FS)
@@ -86,10 +86,11 @@ window.FutureSocieties = (function() {
 				break;
 		}
 
-		FacilityDecorationCleanup();
+		DecorationCleanup();
 		resetFSCredits();
 	}
 
+	/* helper function, not callable */
 	function resetFSCredits() {
 		const V = State.variables;
 		let activeFS = 0;
@@ -111,149 +112,69 @@ window.FutureSocieties = (function() {
 		}
 		V.FSCredits = Math.max(Math.trunc(V.FSGotRepCredits - activeFS), 0);
 	}
-})();
 
-window.FacilityDecorationCleanup = function FacilityDecorationCleanup() {
-	ValidateFacilityDecoration("brothelDecoration");
-	ValidateFacilityDecoration("dairyDecoration");
-	ValidateFacilityDecoration("clubDecoration");
-	ValidateFacilityDecoration("servantsQuartersDecoration");
-	ValidateFacilityDecoration("schoolroomDecoration");
-	ValidateFacilityDecoration("spaDecoration");
-	ValidateFacilityDecoration("clinicDecoration");
-	ValidateFacilityDecoration("arcadeDecoration");
-	ValidateFacilityDecoration("cellblockDecoration");
-	ValidateFacilityDecoration("masterSuiteDecoration");
-	ValidateFacilityDecoration("nurseryDecoration");
-	ValidateFacilityDecoration("farmyardDecoration");
-};
+	/* call as FutureSocieties.DecorationCleanup() */
+	function DecorationCleanup() {
+		ValidateFacilityDecoration("brothelDecoration");
+		ValidateFacilityDecoration("dairyDecoration");
+		ValidateFacilityDecoration("clubDecoration");
+		ValidateFacilityDecoration("servantsQuartersDecoration");
+		ValidateFacilityDecoration("schoolroomDecoration");
+		ValidateFacilityDecoration("spaDecoration");
+		ValidateFacilityDecoration("clinicDecoration");
+		ValidateFacilityDecoration("arcadeDecoration");
+		ValidateFacilityDecoration("cellblockDecoration");
+		ValidateFacilityDecoration("masterSuiteDecoration");
+		ValidateFacilityDecoration("nurseryDecoration");
+		ValidateFacilityDecoration("farmyardDecoration");
+	}
 
-/* decoration should be passed as "facilityDecoration" in quotes. For example, ValidateFacilityDecoration("brothelDecoration"). The quotes are important, do not pass it as a story variable. */
-window.ValidateFacilityDecoration = function ValidateFacilityDecoration(decoration) {
-	const V = State.variables;
-	switch (V[decoration]) {
-		case 'standard':
-			/* nothing to do */
-			break;
-		case 'Supremacist':
-			if (!Number.isFinite(V.arcologies[0].FSSupremacist)) {
-				V[decoration] = 'standard';
-			}
-			break;
-		case 'Subjugationist':
-			if (!Number.isFinite(V.arcologies[0].FSSubjugationist)) {
-				V[decoration] = 'standard';
-			}
-			break;
-		case 'Gender Radicalist':
-			if (!Number.isFinite(V.arcologies[0].FSGenderRadicalist)) {
-				V[decoration] = 'standard';
-			}
-			break;
-		case 'Gender Fundamentalist':
-			if (!Number.isFinite(V.arcologies[0].FSGenderFundamentalist)) {
-				V[decoration] = 'standard';
-			}
-			break;
-		case 'Paternalist':
-			if (!Number.isFinite(V.arcologies[0].FSPaternalist)) {
-				V[decoration] = 'standard';
-			}
-			break;
-		case 'Body Purist':
-			if (!Number.isFinite(V.arcologies[0].FSBodyPurist)) {
-				V[decoration] = 'standard';
-			}
-			break;
-		case 'Transformation Fetishist':
-			if (!Number.isFinite(V.arcologies[0].FSTransformationFetishist)) {
-				V[decoration] = 'standard';
-			}
-			break;
-		case 'Youth Preferentialist':
-			if (!Number.isFinite(V.arcologies[0].FSYouthPreferentialist)) {
-				V[decoration] = 'standard';
-			}
-			break;
-		case 'Maturity Preferentialist':
-			if (!Number.isFinite(V.arcologies[0].FSMaturityPreferentialist)) {
-				V[decoration] = 'standard';
-			}
-			break;
-		case 'Slimness Enthusiast':
-			if (!Number.isFinite(V.arcologies[0].FSSlimnessEnthusiast)) {
-				V[decoration] = 'standard';
-			}
-			break;
-		case 'Asset Expansionist':
-			if (!Number.isFinite(V.arcologies[0].FSAssetExpansionist)) {
-				V[decoration] = 'standard';
-			}
-			break;
-		case 'Pastoralist':
-			if (!Number.isFinite(V.arcologies[0].FSPastoralist)) {
-				V[decoration] = 'standard';
-			}
-			break;
-		case 'Physical Idealist':
-			if (!Number.isFinite(V.arcologies[0].FSPhysicalIdealist)) {
-				V[decoration] = 'standard';
-			}
-			break;
-		case 'Chattel Religionist':
-			if (!Number.isFinite(V.arcologies[0].FSChattelReligionist)) {
-				V[decoration] = 'standard';
-			}
-			break;
-		case 'Degradationist':
-			if (!Number.isFinite(V.arcologies[0].FSDegradationist)) {
-				V[decoration] = 'standard';
-			}
-			break;
-		case 'Roman Revivalist':
-			if (!Number.isFinite(V.arcologies[0].FSRomanRevivalist)) {
-				V[decoration] = 'standard';
-			}
-			break;
-		case 'Egyptian Revivalist':
-			if (!Number.isFinite(V.arcologies[0].FSEgyptianRevivalist)) {
-				V[decoration] = 'standard';
-			}
-			break;
-		case 'Edo Revivalist':
-			if (!Number.isFinite(V.arcologies[0].FSEdoRevivalist)) {
-				V[decoration] = 'standard';
-			}
-			break;
-		case 'Arabian Revivalist':
-			if (!Number.isFinite(V.arcologies[0].FSArabianRevivalist)) {
-				V[decoration] = 'standard';
-			}
-			break;
-		case 'Chinese Revivalist':
-			if (!Number.isFinite(V.arcologies[0].FSChineseRevivalist)) {
-				V[decoration] = 'standard';
-			}
-			break;
-		case 'Repopulation Focus':
-			if (!Number.isFinite(V.arcologies[0].FSRepopulationFocus)) {
-				V[decoration] = 'standard';
-			}
-			break;
-		case 'Eugenics':
-			if (!Number.isFinite(V.arcologies[0].FSRestart)) {
-				V[decoration] = 'standard';
-			}
-			break;
-		case 'Hedonistic':
-			if (!Number.isFinite(V.arcologies[0].FSHedonisticDecadence)) {
-				V[decoration] = 'standard';
-			}
-			break;
-		default:
-			V[decoration] = 'standard';
+	/* helper function, not callable */
+	/* decoration should be passed as "facilityDecoration" in quotes. For example, ValidateFacilityDecoration("brothelDecoration"). The quotes are important, do not pass it as a story variable. */
+	function ValidateFacilityDecoration(decoration) {
+		const V = State.variables;
+		const decorationToFSName = {
+			standard: "standard",
+			Supremacist: "FSSupremacist",
+			Subjugationist: "FSSubjugationist",
+			'Gender Radicalist': "FSGenderRadicalist",
+			'Gender Fundamentalist': "FSGenderFundamentalist",
+			Degradationist: "FSDegradationist",
+			Paternalist: "FSPaternalist",
+			'Body Purist': "FSBodyPurist",
+			'Transformation Fetishist': "FSTransformationFetishist",
+			'Youth Preferentialist': "FSYouthPreferentialist",
+			'Maturity Preferentialist': "FSMaturityPreferentialist",
+			'Slimness Enthusiast': "FSSlimnessEnthusiast",
+			'Asset Expansionist': "FSAssetExpansionist",
+			Pastoralist: "FSPastoralist",
+			'Physical Idealist': "FSPhysicalIdealist",
+			Hedonistic: "FSHedonisticDecadence",
+			'Chattel Religionist': "FSChattelReligionist",
+			'Roman Revivalist': "FSRomanRevivalist",
+			'Egyptian Revivalist': "FSEgyptianRevivalist",
+			'Edo Revivalist': "FSEdoRevivalist",
+			'Arabian Revivalist': "FSArabianRevivalist",
+			'Chinese Revivalist': "FSChineseRevivalist",
+			'Aztec Revivalist': "FSAztecRevivalist",
+			'Repopulation Focus': "FSRepopulationFocus",
+			Eugenics: "FSRestart"
+		};
+		const activeFS = decorationToFSName[V[decoration]];
+
+		if (activeFS === "standard") {
+			// nothing to do
+		} else if (activeFS === undefined) {
+			console.log(`Error: $${decoration} is ${V[decoration]}`);
+			V[decoration] = "standard";
+		} else if (!Number.isFinite(V.arcologies[0][activeFS])) {
+			if (V.arcologies[0][activeFS] !== "unset") {
+				console.log(`Error: $arcologies[0].${activeFS} is ${V.arcologies[0][activeFS]}`);
+			}
+			V[decoration] = "standard";
+		}
 	}
-};
+})();
 
 window.FSChange = function FSChange(FS, magnitude, bonusMultiplier = 1) {
 	const V = State.variables;
diff --git a/src/js/generateGenetics.js b/src/js/generateGenetics.js
index da4e3cf76803f6a6c1c3cf590a27162640d3121d..d74792c418d306a5dfa4178c1f74ccd30e597b65 100644
--- a/src/js/generateGenetics.js
+++ b/src/js/generateGenetics.js
@@ -878,7 +878,7 @@ window.generateGenetics = (function() {
 				}
 			}
 		}
-		
+
 		//rear lipedema
 		if (father !== 0) {
 			if (mother.geneticQuirks.rearLipedema === 2 && father.geneticQuirks.rearLipedema === 2) {
@@ -911,6 +911,68 @@ window.generateGenetics = (function() {
 				}
 			}
 		}
+		
+		//gigantomastia
+		if (father !== 0) {
+			if (mother.geneticQuirks.gigantomastia >= 2 && father.geneticQuirks.gigantomastia >= 2) {
+				if (jsRandom(1, 4) === 1) {
+					quirks.gigantomastia = 3;
+				} else {
+					quirks.gigantomastia = 1;
+				}
+			} else if ((mother.geneticQuirks.gigantomastia >= 2 && father.geneticQuirks.gigantomastia === 1) || (mother.geneticQuirks.gigantomastia === 1 && father.geneticQuirks.gigantomastia >= 2)) {
+				chance = jsRandom(1, 4);
+				if (chance === 1) {
+					quirks.gigantomastia = 3;
+				} else if (chance !== 4) {
+					quirks.gigantomastia = 1;
+				}
+			} else if (mother.geneticQuirks.gigantomastia === 1 && father.geneticQuirks.gigantomastia === 1) {
+				if (jsRandom(1, 4) === 1) {
+					quirks.gigantomastia = 3;
+				}
+			}
+		} else if (mother.geneticQuirks.gigantomastia >= 1) {
+			if (jsRandom(0, 40000) >= 39500) {
+				chance = jsRandom(1, 4);
+				if (chance === 1) {
+					quirks.gigantomastia = 3;
+				} else if (chance !== 4) {
+					quirks.gigantomastia = 1;
+				}
+			}
+		}
+		
+		//macromastia
+		if (father !== 0) {
+			if (mother.geneticQuirks.macromastia >= 2 && father.geneticQuirks.macromastia >= 2) {
+				if (jsRandom(1, 4) === 1) {
+					quirks.macromastia = 3;
+				} else {
+					quirks.macromastia = 1;
+				}
+			} else if ((mother.geneticQuirks.macromastia >= 2 && father.geneticQuirks.macromastia === 1) || (mother.geneticQuirks.macromastia === 1 && father.geneticQuirks.macromastia >= 2)) {
+				chance = jsRandom(1, 4);
+				if (chance === 1) {
+					quirks.macromastia = 3;
+				} else if (chance !== 4) {
+					quirks.macromastia = 1;
+				}
+			} else if (mother.geneticQuirks.macromastia === 1 && father.geneticQuirks.macromastia === 1) {
+				if (jsRandom(1, 4) === 1) {
+					quirks.macromastia = 3;
+				}
+			}
+		} else if (mother.geneticQuirks.macromastia >= 1) {
+			if (jsRandom(0, 40000) >= 39500) {
+				chance = jsRandom(1, 4);
+				if (chance === 1) {
+					quirks.macromastia = 3;
+				} else if (chance !== 4) {
+					quirks.macromastia = 1;
+				}
+			}
+		}
 
 		return clone(quirks);
 	}
@@ -1488,7 +1550,7 @@ window.generateChild = function (mother, ova, destination) {
 		child.legsTat = 0;
 		child.backTat = 0;
 		child.skill.combat = 0;
-		child.skill.whore = 0;
+		child.skill.whoring = 0;
 		child.skill.entertainment = 0;
 		child.skill.oral = 0;
 		child.skill.anal = 0;
diff --git a/src/js/generateNewSlaveJS.js b/src/js/generateNewSlaveJS.js
index 356ce26c896cbf40de914b8f592a8e33afe6df13..eea1a3df11d06081641e53ac5819d669beeec78a 100644
--- a/src/js/generateNewSlaveJS.js
+++ b/src/js/generateNewSlaveJS.js
@@ -1124,6 +1124,18 @@ window.GenerateNewSlave = (function() {
 		} else if (chance < 100) {
 			slave.geneticQuirks.rearLipedema = 1;
 		}
+		chance = jsRandom(1, 20000);
+		if (chance >= 19975) {
+			slave.geneticQuirks.gigantomastia = 2;
+		} else if (chance >= 19800) {
+			slave.geneticQuirks.gigantomastia = 1;
+		}
+		chance = jsRandom(1, 20000);
+		if (chance >= 19900) {
+			slave.geneticQuirks.macromastia = 2;
+		} else if (chance >= 19500) {
+			slave.geneticQuirks.macromastia = 1;
+		}
 	}
 
 	function generateXYGeneticQuirks() {
@@ -1158,6 +1170,14 @@ window.GenerateNewSlave = (function() {
 		} else if (chance < 10) {
 			slave.geneticQuirks.rearLipedema = 1;
 		}
+		chance = jsRandom(1, 20000);
+		if (chance >= 19975) {
+			slave.geneticQuirks.gigantomastia = 1;
+		}
+		chance = jsRandom(1, 20000);
+		if (chance > 19900) {
+			slave.geneticQuirks.macromastia = 1;
+		}
 	}
 
 	function generateAge() {
@@ -1439,7 +1459,7 @@ window.GenerateNewSlave = (function() {
 		slave.skill.anal = (slave.anus === 0 ? 0 : jsRandom(0, 15));
 		slave.skill.oral = jsRandom(0, 15);
 		slave.skill.entertainment = jsRandom(0, 15);
-		slave.skill.whore = jsRandom(0, 15);
+		slave.skill.whoring = jsRandom(0, 15);
 	}
 
 	function generateDisabilities() {
@@ -1534,6 +1554,33 @@ window.GenerateNewSlave = (function() {
 			slave.butt += jsRandom(.2 * slave.physicalAge, .5 * slave.physicalAge);
 			slave.butt = Math.clamp(slave.butt, 0, 24);
 		}
+		if (slave.geneticQuirks.macromastia === 3) {
+			if (slave.pubertyXX > 0) {
+				if (jsRandom(1, 10) > 3) {
+					slave.geneticQuirks.macromastia = 2;
+				}
+			}
+		}
+		if (slave.geneticQuirks.macromastia === 2) {
+			slave.boobs += jsRandom(1 * slave.physicalAge, 3 * slave.physicalAge) * 100;
+			slave.boobs = Math.clamp(slave.boobs, 300, 5000);
+		}
+		if (slave.geneticQuirks.gigantomastia === 3) {
+			if (slave.pubertyXX > 0) {
+				if (jsRandom(1, 10) > 3) {
+					slave.geneticQuirks.gigantomastia = 2;
+				}
+			}
+		}
+		if (slave.geneticQuirks.gigantomastia === 2) {
+			slave.boobs += jsRandom(1 * slave.physicalAge, 20 * slave.physicalAge) * 100;
+			if (slave.geneticQuirks.macromastia === 2) {
+				slave.boobs = Math.clamp(slave.boobs, 300, 100000);
+			} else {
+				slave.boobs = Math.clamp(slave.boobs, 300, 25000);
+			}
+		}
+
 	}
 
 	return GenerateNewSlave;
diff --git a/src/js/removeActiveSlave.js b/src/js/removeActiveSlave.js
index dc63e0ae2747168cae69d31c9ac4cdc077e21df8..ac53c3d5b3285b9899c115f468f5e596572bd65a 100644
--- a/src/js/removeActiveSlave.js
+++ b/src/js/removeActiveSlave.js
@@ -241,6 +241,7 @@ window.removeActiveSlave = function removeActiveSlave() {
 		removeSlave(INDEX);
 		LENGTH--;
 		V.activeSlave = 0;
+		V.JobIDArray = resetJobIDArray(); /* need to call this once more to update count of resting slaves*/
 	}
 };
 
diff --git a/src/js/rulesAssistant.js b/src/js/rulesAssistant.js
index c3e618a6415a948c97e191c73527c321a2a679a3..fe9d0269670564f96ad6ab746d878e851a2c1274 100644
--- a/src/js/rulesAssistant.js
+++ b/src/js/rulesAssistant.js
@@ -394,3 +394,58 @@ window.RulesDeconfliction = function RulesDeconfliction(slave) {
 	State.variables.slaveAfterRA = clone(slave);
 	slave = before;
 };
+
+/**
+ * Creates a table to summarize RA
+ * @returns {string}
+*/
+window.RASummaryCell = function RASummaryCell() {
+	const V = State.variables;
+	let r = "";
+	let i;
+	let j;
+	let rules = Object.keys(V.defaultRules); /* needed to determine number of rule sets (chart width)*/
+	let keys = Object.keys(V.defaultRules[0].set); /* needed to determine length of rules (chart height)*/
+	let values;
+	let display = 0;
+
+	/* start row title */
+	r += `<tr><td></td>`;
+
+	/* make rest of row title */
+	for (i = 0; i < rules.length; i++) {
+		r += `<td>${V.defaultRules[i].name}</td>`;
+	}
+	r += `</tr>`;
+
+	/* A row for every condition the RA can set. */
+	/* start loop for row*/
+	for (i = 0; i < keys.length; i++) { /* i is for rows/"what they are fed" */
+		
+		/* Check if this row will have anything interesting*/
+		for (j = 0; j < rules.length; j++) { /* j is the rule set it comes from/"obediant slaves" */
+			values = V.defaultRules[j].set[keys[i]];
+			if (values && values !== "no default setting") {
+				display++;
+			}
+		}
+
+		/* Show the interesting row */
+		if (display > 0) {
+			/* make row title */
+			r += `<tr><td>${keys[i]}</td>`;
+			/* make rest of cells */
+			for (j = 0; j < rules.length; j++) {
+				values = V.defaultRules[j].set[keys[i]];
+				if (values === "no default setting" || !values) {
+					r += `<td></td>`;
+				} else {
+					r += `<td>${V.defaultRules[j].set[keys[i]]}</td>`;
+				}
+			}
+			display = 0;
+			r += `</tr>`;
+		}
+	}
+	return r;
+};
diff --git a/src/js/slaveCostJS.js b/src/js/slaveCostJS.js
index 823ea65bf52d01fe421c4a7c91225e50ce8f61d6..fab2f5565cb5e40e66f094377ab9af6f2f1b61f3 100644
--- a/src/js/slaveCostJS.js
+++ b/src/js/slaveCostJS.js
@@ -306,7 +306,7 @@ window.Beauty = (function() {
 		beauty += slave.voice;
 		beauty += (slave.intelligence + slave.intelligenceImplant)/10;
 		beauty += slave.skill.entertainment/10;
-		beauty += slave.skill.whore/10;
+		beauty += slave.skill.whoring/10;
 		beauty -= 3*slave.visualAge;
 		if (setup.entertainmentCareers.includes(slave.career)) {
 			beauty += 20;
@@ -2104,7 +2104,7 @@ window.slaveCost = (function() {
 		if (slave.devotion > 20) {
 			startingSlaveMultiplier += (0.000117*(slave.devotion-20)*(slave.devotion-20))+(0.003167*(slave.devotion-20));
 		}
-		if (slave.skill.whore) {
+		if (slave.skill.whoring) {
 			startingSlaveMultiplier += 0.00001*slave.skill.whore*slave.skill.whore;
 		}
 		if (slave.skill.entertainment) {
diff --git a/src/js/slaveStatsChecker.js b/src/js/slaveStatsChecker.js
index 764ddfa58f82e80d3130af4d53f3fbe3b57a00ae..2a922c08bb091db204e770f93efffa475f01ab1a 100644
--- a/src/js/slaveStatsChecker.js
+++ b/src/js/slaveStatsChecker.js
@@ -2,9 +2,9 @@
 window.SlaveStatsChecker = (function() {
 	return {
 		checkForLisp: hasLisp,
-		modScore: modScore,
-		piercingScore: piercingScore,
-		tatScore: tatScore
+		isModded: isModded,
+		isUnmodded: isUnmodded,
+		modScore: modScore
 	};
 
 	/* call as SlaveStatsChecker.checkForLisp() */
@@ -24,7 +24,7 @@ window.SlaveStatsChecker = (function() {
 		return V.tatScore + V.piercingScore;
 	}
 
-	/* call as SlaveStatsChecker.piercingScore() */
+	/* helper function, not callable */
 	/** @param {App.Entity.SlaveState} slave */
 	function piercingScore(slave) {
 		let score = 0;
@@ -75,7 +75,7 @@ window.SlaveStatsChecker = (function() {
 		return score;
 	}
 
-	/* call as SlaveStatsChecker.tatScore() */
+	/* helper function, not callable */
 	/** @param {App.Entity.SlaveState} slave */
 	function tatScore(slave) {
 		let score = 0;
@@ -135,6 +135,26 @@ window.SlaveStatsChecker = (function() {
 		}
 		return score;
 	}
+
+	/* call as SlaveStatsChecker.isModded() */
+	/** @param {App.Entity.SlaveState} slave */
+	function isModded(slave) {
+		const tattoos = tatScore(slave);
+		const piercings = piercingScore(slave);
+		const mods = piercings+tattoos;
+
+		return (mods > 15 || (piercings > 8 && tattoos > 5));
+	}
+
+	/* call as SlaveStatsChecker.isUnmodded() */
+	/** @param {App.Entity.SlaveState} slave */
+	function isUnmodded(slave) {
+		const tattoos = tatScore(slave);
+		const piercings = piercingScore(slave);
+
+		return (!isModded(slave) && slave.corsetPiercing === 0 && piercings < 3 && tattoos < 2);
+	}
+
 }());
 
 window.isSlim = /** @param {App.Entity.SlaveState} slave */ function (slave) {
@@ -194,18 +214,6 @@ window.isStacked = /** @param {App.Entity.SlaveState} slave */ function(slave) {
 	return (slave.butt > 4) && (slave.boobs > 800);
 };
 
-window.isModded = /** @param {App.Entity.SlaveState} slave */ function(slave) {
-	const tatScore = SlaveStatsChecker.tatScore(slave);
-	const piercingScore = SlaveStatsChecker.piercingScore(slave);
-	const modScore = piercingScore+tatScore;
-
-	return ((modScore > 15) || (piercingScore > 8 && tatScore > 5));
-};
-
-window.isUnmodded = /** @param {App.Entity.SlaveState} slave */ function(slave) {
-	return (!isModded(slave) && (slave.corsetPiercing === 0) && (SlaveStatsChecker.piercingScore(slave) < 3) && (SlaveStatsChecker.tatScore(slave) < 2));
-};
-
 window.isXY = /** @param {App.Entity.SlaveState} slave */ function(slave) {
 	return (slave.dick > 0);
 };
diff --git a/src/js/slaveSummaryWidgets.js b/src/js/slaveSummaryWidgets.js
index 86778fd97850c827e20e8edc7efa84224a108742..b7b14df26beee0491ee5bbee6dc61573bec1df6f 100644
--- a/src/js/slaveSummaryWidgets.js
+++ b/src/js/slaveSummaryWidgets.js
@@ -726,15 +726,15 @@ window.SlaveSummaryUncached = (function () {
 		}
 		r += `</span> `;
 		if (slave.dietCum === 2) {
-			r += `Diet Base: <span class="cyan">Cum Based.</span>`;
+			r += `Diet base: <span class="cyan">Cum Based.</span>`;
 		} else if (((slave.dietCum === 1) && (slave.dietMilk === 0))) {
-			r += `Diet Base: <span class="cyan">Cum Added.</span>`;
+			r += `Diet base: <span class="cyan">Cum Added.</span>`;
 		} else if (((slave.dietCum === 1) && (slave.dietMilk === 1))) {
-			r += `Diet Base: <span class="cyan">Milk & Cum Added.</span>`;
+			r += `Diet base: <span class="cyan">Milk & Cum Added.</span>`;
 		} else if (((slave.dietCum === 0) && (slave.dietMilk === 1))) {
-			r += `Diet Base: <span class="cyan">Milk Added.</span>`;
+			r += `Diet base: <span class="cyan">Milk Added.</span>`;
 		} else if ((slave.dietMilk === 2)) {
-			r += `Diet Base: <span class="cyan">Milk Based.</span>`;
+			r += `Diet base: <span class="cyan">Milk Based.</span>`;
 		}
 		r += " ";
 	}
@@ -2597,11 +2597,11 @@ window.SlaveSummaryUncached = (function () {
 	function long_hips(slave) {
 		r += `<span class="red">`;
 		if (slave.hips < -1) {
-			if (slave.butt > 2 && (V.arcologies[0].FSTransformationFetishist < 20 || V.arcologies[0].FSTransformationFetishist === "unset") && (V.arcologies[0].FSHedonisticDecadence < 20 || V.arcologies[0].FSHedonisticDecadence === "unset")) {
+			if (slave.butt > 2 && (V.arcologies[0].FSTransformationFetishist < 20 || V.arcologies[0].FSTransformationFetishist === "unset") && (V.arcologies[0].FSHedonisticDecadence < 20 || V.arcologies[0].FSHedonisticDecadence === "unset") && (V.arcologies[0].FSAssetExpansionist < 20 || V.arcologies[0].FSAssetExpansionist === "unset")) {
 				r += `Disproportionately big butt.`;
 			}
 		} else if (slave.hips < 0) {
-			if (slave.butt > 4 && (V.arcologies[0].FSTransformationFetishist < 20 || V.arcologies[0].FSTransformationFetishist === "unset") && (V.arcologies[0].FSHedonisticDecadence < 20 || V.arcologies[0].FSHedonisticDecadence === "unset")) {
+			if (slave.butt > 4 && (V.arcologies[0].FSTransformationFetishist < 20 || V.arcologies[0].FSTransformationFetishist === "unset") && (V.arcologies[0].FSHedonisticDecadence < 20 || V.arcologies[0].FSHedonisticDecadence === "unset") && (V.arcologies[0].FSAssetExpansionist < 20 || V.arcologies[0].FSAssetExpansionist === "unset")) {
 				r += `Disproportionately big butt.`;
 			}
 		} else if (slave.hips > 2) {
@@ -2614,7 +2614,7 @@ window.SlaveSummaryUncached = (function () {
 			}
 		} else if (slave.hips > 0) {
 			if (slave.butt > 8) {
-				if ((V.arcologies[0].FSTransformationFetishist < 20 || V.arcologies[0].FSTransformationFetishist === "unset") && (V.arcologies[0].FSHedonisticDecadence < 20 || V.arcologies[0].FSHedonisticDecadence === "unset")) {
+				if ((V.arcologies[0].FSTransformationFetishist < 20 || V.arcologies[0].FSTransformationFetishist === "unset") && (V.arcologies[0].FSHedonisticDecadence < 20 || V.arcologies[0].FSHedonisticDecadence === "unset") && (V.arcologies[0].FSAssetExpansionist < 20 || V.arcologies[0].FSAssetExpansionist === "unset")) {
 					r += `Disproportionately big butt.`;
 				}
 			} else if (slave.butt <= 2 && ((V.arcologies[0].FSSlimnessEnthusiast === "unset") || (slave.boobs >= 500))) {
@@ -2622,7 +2622,7 @@ window.SlaveSummaryUncached = (function () {
 			}
 		} else {
 			if (slave.butt > 6) {
-				if ((V.arcologies[0].FSTransformationFetishist < 20 || V.arcologies[0].FSTransformationFetishist === "unset") && (V.arcologies[0].FSHedonisticDecadence < 20 || V.arcologies[0].FSHedonisticDecadence === "unset")) {
+				if ((V.arcologies[0].FSTransformationFetishist < 20 || V.arcologies[0].FSTransformationFetishist === "unset") && (V.arcologies[0].FSHedonisticDecadence < 20 || V.arcologies[0].FSHedonisticDecadence === "unset") && (V.arcologies[0].FSAssetExpansionist < 20 || V.arcologies[0].FSAssetExpansionist === "unset")) {
 					r += `Disproportionately big butt.`;
 				}
 			} else if (slave.butt <= 1 && ((V.arcologies[0].FSSlimnessEnthusiast === "unset") || (slave.boobs >= 500))) {
@@ -2753,7 +2753,7 @@ window.SlaveSummaryUncached = (function () {
 	function short_sex_skills(slave) {
 		let _SSkills = slave.skill.anal + slave.skill.oral;
 		r += `<span class="aquamarine">`;
-		if (((_SSkills + slave.skill.whore + slave.skill.entertainment) >= 400) && ((slave.vagina < 0) || (slave.skill.vaginal >= 100))) {
+		if (((_SSkills + slave.skill.whoring + slave.skill.entertainment) >= 400) && ((slave.vagina < 0) || (slave.skill.vaginal >= 100))) {
 			r += `MSS`;
 		} else {
 			_SSkills += slave.skill.vaginal;
@@ -2773,18 +2773,18 @@ window.SlaveSummaryUncached = (function () {
 				r += `[${_SSkills}] `;
 			}
 			r += " ";
-			if (slave.skill.whore >= 100) {
+			if (slave.skill.whoring >= 100) {
 				r += `W+++`;
-			} else if (slave.skill.whore > 60) {
+			} else if (slave.skill.whoring > 60) {
 				r += `W++`;
-			} else if (slave.skill.whore > 30) {
+			} else if (slave.skill.whoring > 30) {
 				r += `W+`;
-			} else if (slave.skill.whore > 10) {
+			} else if (slave.skill.whoring > 10) {
 				r += `W`;
 			}
-			if (slave.skill.whore > 10) {
+			if (slave.skill.whoring > 10) {
 				if (V.summaryStats) {
-					r += `[${slave.skill.whore}] `;
+					r += `[${slave.skill.whoring}] `;
 				}
 			}
 			r += " ";
@@ -2899,7 +2899,7 @@ window.SlaveSummaryUncached = (function () {
 	function long_sex_skills(slave) {
 		let _SSkills = (slave.skill.anal + slave.skill.oral);
 		r += `<span class="aquamarine">`;
-		if (((_SSkills + slave.skill.whore + slave.skill.entertainment) >= 400) && ((slave.vagina < 0) || (slave.skill.vaginal >= 100))) {
+		if (((_SSkills + slave.skill.whoring + slave.skill.entertainment) >= 400) && ((slave.vagina < 0) || (slave.skill.vaginal >= 100))) {
 			r += `Masterful Sex Slave. `;
 		} else {
 			_SSkills += slave.skill.vaginal;
@@ -2915,14 +2915,14 @@ window.SlaveSummaryUncached = (function () {
 				r += `Sexually unskilled${V.summaryStats? `[${Math.trunc(_SSkills)}]` : ''}.`;
 			}
 			r += " ";
-			if (slave.skill.whore >= 100) {
-				r += `Masterful whore${V.summaryStats? `[${slave.skill.whore}]`: ''}.`;
-			} else if (slave.skill.whore >= 60) {
-				r += `Expert whore${V.summaryStats? `[${slave.skill.whore}]`: ''}.`;
-			} else if (slave.skill.whore >= 30) {
-				r += `Skilled whore${V.summaryStats? `[${slave.skill.whore}]`: ''}.`;
-			} else if (slave.skill.whore >= 10) {
-				r += `Basic whore${V.summaryStats? `[${slave.skill.whore}]`: ''}.`;
+			if (slave.skill.whoring >= 100) {
+				r += `Masterful whore${V.summaryStats? `[${slave.skill.whoring}]`: ''}.`;
+			} else if (slave.skill.whoring >= 60) {
+				r += `Expert whore${V.summaryStats? `[${slave.skill.whoring}]`: ''}.`;
+			} else if (slave.skill.whoring >= 30) {
+				r += `Skilled whore${V.summaryStats? `[${slave.skill.whoring}]`: ''}.`;
+			} else if (slave.skill.whoring >= 10) {
+				r += `Basic whore${V.summaryStats? `[${slave.skill.whoring}]`: ''}.`;
 			}
 			r += " ";
 			if (slave.skill.entertainment >= 100) {
@@ -5060,14 +5060,61 @@ App.UI.slaveSummaryList = function (passageName) {
 		}
 	}
 
+	const passageToFacilityMap = {
+		"Arcade": App.Entity.facilities.arcade,
+		"Brothel": App.Entity.facilities.brothel,
+		"Cellblock": App.Entity.facilities.cellblock,
+		"Clinic": App.Entity.facilities.clinic,
+		"Club": App.Entity.facilities.club,
+		"Dairy": App.Entity.facilities.dairy,
+		"Farmyard": App.Entity.facilities.farmyard,
+		"Head Girl Suite": App.Entity.facilities.headGirlSuite,
+		"Master Suite": App.Entity.facilities.masterSuite,
+		"Nursery": App.Entity.facilities.nursery,
+		"Pit": App.Entity.facilities.pit,
+		"Schoolroom": App.Entity.facilities.schoolroom,
+		"Servants' Quarters": App.Entity.facilities.servantsQuarters,
+		"Spa": App.Entity.facilities.spa
+	};
+
+	function makeSelectionPassageInfo(f, wp) {
+		return {
+			facility: f,
+			passage: wp
+		};
+	}
+
+	const selectionPassageToFacilityMap = {
+		"HG Select": makeSelectionPassageInfo(App.Entity.facilities.headGirlSuite, "HG Workaround"),
+		"BG Select": makeSelectionPassageInfo(App.Entity.facilities.armory, "Bodyguard Workaround"),
+		"Attendant Select": makeSelectionPassageInfo(App.Entity.facilities.spa, "Attendant Workaround"),
+		"Concubine Select":  makeSelectionPassageInfo(App.Entity.facilities.masterSuite, "Concubine Workaround"),
+		"Matron Select": makeSelectionPassageInfo(App.Entity.facilities.nursery, "Matron Workaround"),
+		"Madam Select": makeSelectionPassageInfo(App.Entity.facilities.brothel, "Madam Workaround"),
+		"Milkmaid Select": makeSelectionPassageInfo(App.Entity.facilities.dairy,  "Milkmaid Workaround"),
+		"Nurse Select": makeSelectionPassageInfo(App.Entity.facilities.clinic, "Nurse Workaround"),
+		"DJ Select": makeSelectionPassageInfo(App.Entity.facilities.club, "DJ Workaround"),
+		"Farmer Select": makeSelectionPassageInfo(App.Entity.facilities.farmyard, "Farmer Workaround"),
+		"Stewardess Select": makeSelectionPassageInfo(App.Entity.facilities.servantsQuarters, "Stewardess Workaround"),
+		"Schoolteacher Select": makeSelectionPassageInfo(App.Entity.facilities.schoolroom, "Schoolteacher Workaround"),
+		"Wardeness Select": makeSelectionPassageInfo(App.Entity.facilities.cellblock, "Wardeness Workaround"),
+		"Agent Select": makeSelectionPassageInfo(App.Entity.facilities.arcologyAgent, "Agent Workaround"),
+		"Recruiter Select": makeSelectionPassageInfo(App.Entity.facilities.penthouse, "Recruiter Workaround")
+	};
+
+	/** @type {App.Entity.Facilities.Facility} */
+	const passageFacility = passageToFacilityMap[passageName];
+	/** @type {{facility: App.Entity.Facilities.Facility, passage: string}} */
+	const slaveSelect = passageFacility === undefined ? selectionPassageToFacilityMap[passageName] : undefined;
+
 	for (const _ssi of _filteredSlaveIdxs) {
 		let _Slave = slaves[_ssi];
 
 		if (passageName === "Main" && V.useSlaveSummaryTabs === 1) {
 			if (tabName === "overview") {
-				if (V.showOneSlave === "Head Girl" && _Slave.assignment !== "be your Head Girl") continue;
-				if (V.showOneSlave === "recruit girls" && _Slave.assignment !== "recruit girls") continue;
-				if (V.showOneSlave === "guard you" && _Slave.assignment !== "guard you") continue;
+				if (V.showOneSlave === "Head Girl" && _Slave.assignment !== App.Data.Facilities.headGirlSuite.manager.assignment) continue;
+				if (V.showOneSlave === "recruit girls" && _Slave.assignment !== App.Entity.facilities.penthouse.manager.assignment) continue;
+				if (V.showOneSlave === "guard you" && _Slave.assignment !== App.Data.Facilities.armory.manager.assignment) continue;
 			} else {
 				if (tabName === "resting") {
 					if (_Slave.assignment !== "rest") continue;
@@ -5084,6 +5131,34 @@ App.UI.slaveSummaryList = function (passageName) {
 
 		res.push(`<div id="slave_${ _Slave.ID }" style="clear:both">`);
 
+		if (passageFacility !== undefined) {
+			if (V.Flag === 0) {
+				if (!passageFacility.hasFreeSpace) {
+					res.pop();
+					continue;
+				}
+				const rejects = passageFacility.canHostSlave(_Slave);
+				if (rejects.length > 0) {
+					let rejectString = rejects.length === 1 ?
+						rejects[0]:
+						`${_slaveName}: <ul>${rejects.map(e => `<li>${e}</li>`).join('')}</ul>`;
+					res.push(rejectString + '</div>');
+					continue;
+				} else {
+					res.push(dividerAndImage(_Slave));
+					res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`);
+				}
+			} else if (V.Flag === 1) {
+				res.push(dividerAndImage(_Slave));
+				res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`);
+			} else {
+				if ((V.seeImages === 1) && (V.seeSummaryImages === 1)) res.push(slaveImage(_Slave));
+				res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`);
+			}
+		} else if (slaveSelect !== undefined && slaveSelect.passage !== "") {
+			res.push(dividerAndImage(_Slave));
+			res.push(`[[${_slaveName}|${slaveSelect.passage}][$i = ${_ssi}]]`);
+		}
 		switch (passageName) {
 			case "Main":
 				if ((_Slave.choosesOwnClothes === 1) && (_Slave.clothes === "choosing her own clothes")) {
@@ -5093,9 +5168,9 @@ App.UI.slaveSummaryList = function (passageName) {
 					_Slave = slaves[_ssi]; /* restore devotion value so repeatedly changing clothes isn't an exploit */
 				}
 				res.push(dividerAndImage(_Slave));
-				if ("be your Head Girl" === _Slave.assignment) res.push('<strong>@@.lightcoral;HG@@</strong> ');
-				else if ("recruit girls" === _Slave.assignment) res.push('<strong>@@.lightcoral;RC@@</strong> ');
-				else if ("guard you" === _Slave.assignment) res.push('<strong>@@.lightcoral;BG@@</strong> ');
+				if (App.Data.Facilities.headGirlSuite.manager.assignment === _Slave.assignment) res.push('<strong>@@.lightcoral;HG@@</strong> ');
+				else if (App.Data.Facilities.penthouse.manager.assignment === _Slave.assignment) res.push('<strong>@@.lightcoral;RC@@</strong> ');
+				else if (App.Data.Facilities.armory.manager.assignment === _Slave.assignment) res.push('<strong>@@.lightcoral;BG@@</strong> ');
 
 				if (Array.isArray(V.personalAttention) && V.personalAttention.findIndex(s => s.ID === _Slave.ID) !== -1) {
 					res.push('<strong>@@.lightcoral; PA@@</strong> ');
@@ -5107,421 +5182,10 @@ App.UI.slaveSummaryList = function (passageName) {
 				res.push(dividerAndImage(_Slave));
 				res.push(`<<link "${_slaveName}">> <<run App.UI.selectSlaveForPersonalAttention(${_Slave.ID})>><</link>>`);
 				break;
-			case "Agent Select":
-				res.push(dividerAndImage(_Slave));
-				res.push(`[[${_slaveName}|Agent Workaround][$i = ${_ssi}]]`);
-				break;
-			case "BG Select":
-				res.push(dividerAndImage(_Slave));
-				res.push(`[[${_slaveName}|Bodyguard Workaround][$i = ${_ssi}]]`);
-				break;
-			case "Recruiter Select":
-				res.push(dividerAndImage(_Slave));
-				res.push(`[[${_slaveName}|Recruiter Workaround][$i = ${_ssi}]]`);
-				break;
-			case "HG Select":
-				res.push(dividerAndImage(_Slave));
-				res.push(`[[${_slaveName}|HG Workaround][$i = ${_ssi}]]`);
-				break;
-			case "Head Girl Suite":
-				if (V.Flag === 0) {
-					res.push(dividerAndImage(_Slave));
-					res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`);
-				} else {
-					res.push(dividerAndImage(_Slave));
-					res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`);
-				}
-				break;
 			case "Subordinate Targeting":
 				res.push(dividerAndImage(_Slave));
 				res.push(`[[${_slaveName}|Subordinate Targeting][$activeSlave.subTarget = $slaves[${_ssi}].ID]]`);
 				break;
-			case "Spa":
-				if (V.Flag === 0) {
-					if (V.spa <= V.spaSlaves) {
-						res.pop();
-						continue;
-					}
-					if ((_Slave.health < 20) || (_Slave.trust < 60) || (_Slave.devotion <= 60) || (_Slave.fetish === "mindbroken") || _Slave.sexualFlaw !== "none" || _Slave.behavioralFlaw !== "none") {
-						if (_Slave.devotion >= -20 || _Slave.fetish === "mindbroken") {
-							res.push(dividerAndImage(_Slave));
-							res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`);
-						} else {
-							res.push(`<i>${_Slave.slaveName} cannot be trusted in the spa</i></div>`);
-							continue;
-						}
-					} else {
-						res.push(`<i>${_Slave.slaveName} cannot benefit from the spa</i></div>`);
-						continue;
-					}
-				} else if (V.Flag === 1) {
-					res.push(dividerAndImage(_Slave));
-					res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`);
-				} else {
-					if ((V.seeImages === 1) && (V.seeSummaryImages === 1)) res.push(slaveImage(_Slave));
-					res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`);
-				}
-				break;
-			case "Attendant Select":
-				res.push(dividerAndImage(_Slave));
-				res.push(`[[${_slaveName}|Attendant Workaround][$i = ${_ssi}]]`);
-				break;
-			case "Nursery":
-				if (V.Flag === 0) {
-					if (V.nurseryNannies <= V.nurserySlaves) {
-						res.pop();
-						continue;
-					}
-					if ((_Slave.devotion >= -20) || ((_Slave.devotion >= -50) && (_Slave.trust <= 20)) || (_Slave.trust < -20)) {
-						res.push(dividerAndImage(_Slave));
-						res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`);
-					} else {
-						res.push(`<i>${_Slave.slaveName} must be either more fearful of you or devoted to you</i></div>`);
-						continue;
-					}
-				} else if (V.Flag === 1) {
-					res.push(dividerAndImage(_Slave));
-					res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`);
-				} else {
-					if ((V.seeImages === 1) && (V.seeSummaryImages === 1)) {
-						res.push(slaveImage(_Slave));
-					}
-					res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`);
-				}
-				break;
-			case "Matron Select":
-				res.push(dividerAndImage(_Slave));
-				res.push(`[[${_slaveName}|Matron Workaround][$i = ${_ssi}]]`);
-				break;
-			case "Brothel":
-				if (V.Flag === 0) {
-					if (V.brothel <= V.brothelSlaves) {
-						res.pop();
-						continue;
-					}
-					if (_Slave.breedingMark !== 1 || V.propOutcome === 0) {
-						if ((_Slave.devotion > 50) || ((_Slave.devotion >= -50) && (_Slave.trust < -20)) || (_Slave.trust < -50) || (_Slave.trust > 50)) {
-							res.push(dividerAndImage(_Slave));
-							res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`);
-						} else {
-							res.push(`<i>${_Slave.slaveName} must be either more fearful of you or devoted to you</i></div>`);
-							continue;
-						}
-					} else {
-						res.push(`<i>${_Slave.slaveName} is for private use only</i></div>`);
-						continue;
-					}
-				} else if (V.Flag === 1) {
-					res.push(dividerAndImage(_Slave));
-					res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`);
-				} else {
-					if ((V.seeImages === 1) && (V.seeSummaryImages === 1)) {
-						res.push(slaveImage(_Slave));
-					}
-					res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`);
-				}
-				break;
-			case "Madam Select":
-				res.push(dividerAndImage(_Slave));
-				res.push(`[[${_slaveName}|Madam Workaround][$i = ${_ssi}]]`);
-				break;
-			case "Club":
-				if (V.Flag === 0) {
-					if (V.club <= V.clubSlaves) {
-						res.pop();
-						continue;
-					}
-					if (_Slave.breedingMark !== 1 || V.propOutcome === 0) {
-						if ((_Slave.devotion > 50) || ((_Slave.devotion >= -50) && (_Slave.trust < -20)) || (_Slave.trust < -50) || (_Slave.trust > 50)) {
-							res.push(dividerAndImage(_Slave));
-							res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`);
-						} else {
-							res.push(`//${_Slave.slaveName} must be either more fearful of you or devoted to you//</div>`);
-							continue;
-						}
-					} else {
-						res.push(`//${_Slave.slaveName} is for private use only//</div>`);
-						continue;
-					}
-				} else if (V.Flag === 1) {
-					res.push(dividerAndImage(_Slave));
-					res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`);
-				} else {
-					res.push(dividerAndImage(_Slave));
-					res.push(`[[${_slaveName} | Slave Interact][$activeSlave = $slaves[${_ssi}]]]`);
-				}
-				break;
-			case "DJ Select":
-				res.push(dividerAndImage(_Slave));
-				res.push(`[[${_slaveName}|DJ Workaround][$i = ${_ssi}]]`);
-				break;
-			case "Clinic":
-				if (V.Flag === 0) {
-					if (V.clinic <= V.clinicSlaves) {
-						res.pop();
-						continue;
-					}
-					if ((_Slave.health < 20) || (V.Nurse !== 0 && ((_Slave.chem > 15 && V.clinicUpgradeFilters === 1) || (V.bellyImplants === 1 && _Slave.bellyImplant > -1) || (_Slave.pregKnown === 1 && (V.clinicSpeedGestation >= 0 || _Slave.pregControl === "speed up")) || (_Slave.pregAdaptation * 1000 < _Slave.bellyPreg || _Slave.preg > _Slave.pregData.normalBirth / 1.33)))) {
-						res.push(dividerAndImage(_Slave));
-						res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`);
-					} else {
-						res.push(`//${_Slave.slaveName} cannot benefit from the clinic//</div>`);
-						continue;
-					}
-				} else if (V.Flag === 1) {
-					res.push(dividerAndImage(_Slave));
-					res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`);
-				} else {
-					res.push(dividerAndImage(_Slave));
-					res.push(`[[${_slaveName} | Slave Interact][$activeSlave = $slaves[${_ssi}]]]`);
-				}
-				break;
-			case "Nurse Select":
-				res.push(dividerAndImage(_Slave));
-				res.push(`[[${_slaveName}|Nurse Workaround][$i = ${_ssi}]]`);
-				break;
-			case "Schoolroom":
-				if (V.Flag === 0) {
-					if (V.schoolroom <= V.schoolroomSlaves) {
-						res.pop();
-						continue;
-					}
-					if ((_Slave.devotion >= -20) || ((_Slave.devotion >= -50) && (_Slave.trust < -20)) || (_Slave.trust < -50)) {
-						if ((_Slave.intelligenceImplant < 30) || (_Slave.voice !== 0 && _Slave.accent + V.schoolroomUpgradeLanguage > 2) || (_Slave.skill.oral <= 10 + V.schoolroomUpgradeSkills * 20) || (_Slave.skill.whore <= 10 + V.schoolroomUpgradeSkills * 20) || (_Slave.skill.entertainment <= 10 + V.schoolroomUpgradeSkills * 20) || (_Slave.skill.anal < 10 + V.schoolroomUpgradeSkills * 20) || ((_Slave.vagina >= 0) && (_Slave.skill.vaginal < 10 + V.schoolroomUpgradeSkills * 20))) {
-							res.push(dividerAndImage(_Slave));
-							res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`);
-						} else {
-							res.push(`//${_Slave.slaveName} already has a basic education//</div>`);
-							continue;
-						}
-					} else {
-						res.push(`//${_Slave.slaveName} is too resistant to learn//</div>`);
-						continue;
-					}
-				} else if (V.Flag === 1) {
-					res.push(dividerAndImage(_Slave));
-					res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`);
-				} else {
-					res.push(dividerAndImage(_Slave));
-					res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`);
-				}
-				break;
-			case "Schoolteacher Select":
-				res.push(dividerAndImage(_Slave));
-				res.push(`[[${_slaveName}|Schoolteacher Workaround][$i = ${_ssi}]]`);
-				break;
-			case "Dairy":
-				if (V.Flag === 0) {
-					const _dairySeed = V.bioreactorsXY + V.bioreactorsXX + V.bioreactorsHerm + V.bioreactorsBarren;
-					if (_Slave.assignment === "work in the dairy") {
-						res.pop();
-						continue;
-					}
-					if (V.dairy <= V.dairySlaves + _dairySeed) {
-						res.pop();
-						continue;
-					}
-					if ((_Slave.indentureRestrictions > 0) && (V.dairyRestraintsSetting > 1)) {
-						res.push(`//${_Slave.slaveName}'s indenture forbids extractive Dairy service.//</div>`);
-						continue;
-					} else if ((_Slave.indentureRestrictions > 1) && (V.dairyRestraintsSetting > 0)) {
-						res.push(`//${_Slave.slaveName}'s indenture allows only free range milking.//</div>`);
-						continue;
-					} else if (_Slave.breedingMark === 1 && V.propOutcome === 1 && V.dairyRestraintsSetting > 0) {
-						res.push(`//${_Slave.slaveName} may only be a free range cow//</div>`);
-						continue;
-					} else if ((V.dairyPregSetting > 0) && ((_Slave.bellyImplant !== -1) || (_Slave.broodmother !== 0))) {
-						res.push(`//${_Slave.slaveName}'s womb cannot accommodate current machine settings//</div>`);
-						continue;
-					} else {
-						if ((_Slave.lactation > 0) || (_Slave.balls > 0) || ((V.dairySlimMaintainUpgrade === 0 || V.dairySlimMaintain === 0) && (_Slave.boobs > 300 || _Slave.balls === 0 || V.dairyImplantsSetting === 1) && V.dairyImplantsSetting !== 2)) {
-							if ((_Slave.devotion > 20) || ((_Slave.devotion >= -50) && (_Slave.trust < -20)) || (_Slave.trust < -50) || (_Slave.amp === 1) || (V.dairyRestraintsUpgrade === 1)) {
-								if ((V.dairyStimulatorsSetting < 2) || (_Slave.anus > 2) || (V.dairyPrepUpgrade === 1)) {
-									if ((V.dairyPregSetting < 2) || (_Slave.vagina > 2) || (_Slave.ovaries === 0) || (V.dairyPrepUpgrade === 1)) {
-										res.push(dividerAndImage(_Slave));
-										res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`);
-									} else {
-										res.push(`//${_Slave.slaveName}'s vagina cannot accommodate current machine settings//</div>`);
-										continue;
-									}
-								} else {
-									res.push(`//${_Slave.slaveName}'s anus cannot accommodate current machine settings//</div>`);
-									continue;
-								}
-							} else {
-								res.push(`//${_Slave.slaveName} must be obedient in order to be milked here//</div>`);
-								continue;
-							}
-						} else if ((V.dairySlimMaintainUpgrade === 1 && V.dairySlimMaintain === 1) || (V.dairyImplantsSetting === 2) || (_Slave.boobs <= 300 && _Slave.balls > 0 && (V.dairyImplantsSetting === 0 || V.dairyImplantsSetting === 3))) {
-							res.push(`//${_Slave.slaveName} is not lactating ${(V.seeDicks > 0) ? 'or producing semen' : ''} and ${V.dairyName}'s current settings forbid the automatic implantation of lactation inducing drugs or manual stimulation to induce it, so she cannot be a cow//</div>`);
-							continue;
-						} else {
-							res.push(`//${_Slave.slaveName} is not lactating ${(V.seeDicks > 0) ? 'or producing semen' : ''} and cannot be a cow//</div>`);
-							continue;
-						}
-					}
-				} else if (V.Flag === 1) {
-					res.push(dividerAndImage(_Slave));
-					res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`);
-				} else {
-					res.push(dividerAndImage(_Slave));
-					res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`);
-				}
-				break;
-			case "Milkmaid Select":
-				res.push(dividerAndImage(_Slave));
-				res.push(`[[${_slaveName}|Milkmaid Workaround][$i = ${_ssi}]]`);
-				break;
-			case "Farmyard":
-				if (V.Flag === 0) {
-					if (_Slave.assignment === "work as a farmhand") {
-						res.pop();
-						continue;
-					}
-					if (V.farmyard <= V.farmyardSlaves) {
-						res.pop();
-						continue;
-					}
-					res.push(dividerAndImage(_Slave));
-					res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`);
-				} else if (V.Flag === 1) {
-					res.push(dividerAndImage(_Slave));
-					res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`);
-				} else {
-					res.push(dividerAndImage(_Slave));
-					res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`);
-				}
-				break;
-			case "Farmer Select":
-				res.push(dividerAndImage(_Slave));
-				res.push(`[[${_slaveName}|Farmer Workaround][$i = ${_ssi}]]`);
-				break;
-			case "Servants' Quarters":
-				if (V.Flag === 0) {
-					if (V.servantsQuarters <= V.servantsQuartersSlaves) {
-						res.pop();
-						continue;
-					}
-					if ((_Slave.devotion >= -20) || ((_Slave.devotion >= -50) && (_Slave.trust <= 20)) || (_Slave.trust < -20)) {
-						res.push(dividerAndImage(_Slave));
-						res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`);
-					} else {
-						res.push(`//${_Slave.slaveName} must be either more fearful of you or devoted to you//</div>`);
-						continue;
-					}
-				} else if (V.Flag === 1) {
-					res.push(dividerAndImage(_Slave));
-					res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`);
-				} else {
-					res.push(dividerAndImage(_Slave));
-					res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`);
-				}
-				break;
-			case "Stewardess Select":
-				res.push(dividerAndImage(_Slave));
-				res.push(`[[${_slaveName}|Stewardess Workaround][$i = ${_ssi}]]`);
-				break;
-			case "Master Suite":
-				if (V.Flag === 0) {
-					if (V.masterSuite <= V.masterSuiteSlaves) {
-						res.pop();
-						continue;
-					}
-					if ((_Slave.devotion > 20) || ((_Slave.devotion >= -50) && (_Slave.trust < -20)) || (_Slave.trust < -50)) {
-						res.push(dividerAndImage(_Slave));
-						res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`);
-					} else {
-						res.push(`//${_Slave.slaveName} is not sufficiently broken for the master suite//</div>`);
-						continue;
-					}
-				} else if (V.Flag === 1) {
-					res.push(dividerAndImage(_Slave));
-					res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`);
-				} else {
-					res.push(dividerAndImage(_Slave));
-					res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`);
-				}
-				break;
-			case "Concubine Select":
-				res.push(dividerAndImage(_Slave));
-				res.push(`[[${_slaveName}|Concubine Workaround][$i = ${_ssi}]]`);
-				break;
-			case "Cellblock":
-				if (_Slave.assignmentVisible !== 1) {
-					res.pop();
-					continue;
-				}
-				if (V.Flag === 0) {
-					if (V.cellblock <= V.cellblockSlaves) {
-						res.pop();
-						continue;
-					}
-					if ((_Slave.devotion < -20 && _Slave.trust >= -20) || (_Slave.devotion < -50 && _Slave.trust >= -50)) {
-						res.push(dividerAndImage(_Slave));
-						res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`);
-					} else {
-						res.push(`//${_Slave.slaveName} is sufficiently broken in so that the cellblock would have no effect//</div>`);
-						continue;
-					}
-				} else if (V.Flag === 1) {
-					res.push(dividerAndImage(_Slave));
-					res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`);
-				} else {
-					res.push(dividerAndImage(_Slave));
-					res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`);
-				}
-				break;
-			case "Wardeness Select":
-				res.push(dividerAndImage(_Slave));
-				res.push(`[[${_slaveName}|Wardeness Workaround][$i = ${_ssi}]]`);
-				break;
-			case "Arcade":
-				if (V.Flag === 0) {
-					if (_Slave.assignment === "be confined in the arcade") {
-						res.pop();
-						continue;
-					}
-					if (V.arcade <= V.arcadeSlaves && V.arcadeUpgradeFuckdolls !== 1) {
-						res.pop();
-						continue;
-					}
-					if ((_Slave.breedingMark !== 1 || V.propOutcome === 0)) {
-						if (_Slave.indentureRestrictions <= 0) {
-							res.push(dividerAndImage(_Slave));
-							res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`);
-						} else {
-							res.push(`//${_Slave.slaveName}'s indenture forbids arcade service.//</div>`);
-							continue;
-						}
-					} else {
-						res.push(`//${_Slave.slaveName} is for private use only//</div>`);
-						continue;
-					}
-				} else {
-					res.push(dividerAndImage(_Slave));
-					res.push(`[[${_slaveName}|Slave Interact][$activeSlave = $slaves[${_ssi}]]]`);
-				}
-				break;
-			case "Pit":
-				if (V.Flag === 0) {
-					if ((_Slave.indentureRestrictions > 0) && (V.pitLethal === 1)) {
-						res.push(`//${_Slave.slaveName}'s indenture forbids lethal fights.//</div>`);
-						continue;
-					} else if (_Slave.indentureRestrictions > 1) {
-						res.push(`//${_Slave.slaveName}'s indenture forbids fighting.//</div>`);
-						continue;
-					} else if (_Slave.breedingMark === 1 && V.propOutcome === 1) {
-						res.push(`//${_Slave.slaveName} may not participate in combat//</div>`);
-						continue;
-					} else {
-						res.push(dividerAndImage(_Slave));
-						res.push(`[[${_slaveName}|Assign][$i = ${_ssi}]]`);
-					}
-				} else {
-					res.push(dividerAndImage(_Slave));
-					res.push(`[[${_slaveName}|Retrieve][$i = ${_ssi}]]`);
-				}
-				break;
 			case "Coursing Association":
 				if (V.Flag === 0) {
 					res.push(dividerAndImage(_Slave));
@@ -5575,90 +5239,22 @@ App.UI.slaveSummaryList = function (passageName) {
 
 		res.push(' will ');
 		if ((_Slave.assignment === "rest") && (_Slave.health >= -20)) {
-			res.push("''__@@.lawngreen;rest@@__''");
+			res.push("<strong><u><span class=lawngreen>rest</span></u></strong>");
 		} else if ((_Slave.assignment === "stay confined") && ((_Slave.devotion > 20) || ((_Slave.trust < -20) && (_Slave.devotion >= -20)) || ((_Slave.trust < -50) && (_Slave.devotion >= -50)))) {
-			res.push("''__@@.lawngreen;stay confined.@@__''");
+			res.push("<strong><u><span class=lawngreen>stay confined.</span></u></strong>");
 			if (_Slave.sentence > 0) {
-				res.push(`(${_Slave.sentence} weeks)`);
+				res.push(` (${_Slave.sentence} weeks)`);
 			}
 		} else if (_Slave.choosesOwnAssignment === 1) {
 			res.push('choose her own job');
 		} else {
 			res.push(_Slave.assignment);
-			if (_Slave.sentence > 0) res.push(`${_Slave.sentence} weeks`);
+			if (_Slave.sentence > 0) res.push(` ${_Slave.sentence} weeks`);
 		}
 		res.push('. ');
 
-		/** @type {string[]} */
-		const assignments = [];
 		if ((V.displayAssignments === 1) && (passageName === "Main") && (_Slave.ID !== V.HeadGirl.ID) && (_Slave.ID !== V.Recruiter.ID) && (_Slave.ID !== V.Bodyguard.ID)) {
-			if (_Slave.assignment !== "rest") {
-				assignments.push(`<<link "Rest" "Main">><<= removeJob($slaves[${_ssi}], $slaves[${_ssi}].assignment)>><</link>>`);
-			} else {
-				assignments.push('Rest');
-			}
-			if (_Slave.assignment !== "please you") {
-				assignments.push(`<<link "Fucktoy" "Main">><<= assignJob($slaves[${_ssi}], "please you")>><</link>>`);
-			} else {
-				assignments.push('Fucktoy');
-			}
-			if (_Slave.indentureRestrictions <= 0 && (_Slave.breedingMark !== 1 || V.propOutcome === 0)) {
-				if (_Slave.assignment !== "work a glory hole") {
-					assignments.push(`<<link "Gloryhole" "Main">><<= assignJob($slaves[${_ssi}], "work a glory hole")>><</link>>`);
-				} else {
-					assignments.push('Hole');
-				}
-			}
-			if (_Slave.fuckdoll === 0) {
-				/* NON-FUCKDOLL ASSIGNMENTS */
-				if (_Slave.assignment !== "take classes") {
-					if ((_Slave.intelligenceImplant < 15) && ((_Slave.devotion >= -20) || ((_Slave.trust < -20) && (_Slave.devotion >= -50)) || (_Slave.trust < -50)) && (_Slave.fetish !== "mindbroken")) {
-						assignments.push(`<<link "Classes" "Main">><<= assignJob($slaves[${_ssi}], "take classes")>><</link>>`);
-					} else {
-						assignments.push('Classes');
-					}
-				} else {
-					assignments.push('Classes');
-				}
-				if (_Slave.assignment !== "be a servant") {
-					if (((_Slave.devotion >= -20) || ((_Slave.trust < -20) && (_Slave.devotion >= -50)) || (_Slave.trust < -50)) && canWalk(_Slave) && canSee(_Slave)) {
-						assignments.push(`<<link "House Servant" "Main">><<= assignJob($slaves[${_ssi}], "be a servant")>><</link>>`);
-					} else {
-						assignments.push('House Servant');
-					}
-				} else {
-					assignments.push('House Servant');
-				}
-				if ((_Slave.assignment !== "whore") && (_Slave.breedingMark !== 1 || V.propOutcome === 0)) {
-					assignments.push(`<<link "Whore" "Main">><<= assignJob($slaves[${_ssi}], "whore")>><</link>>`);
-				} else {
-					assignments.push('Whore');
-				}
-				if ((_Slave.assignment !== "serve the public") && (_Slave.breedingMark !== 1 || V.propOutcome === 0)) {
-					assignments.push(`<<link "Public Servant" "Main">><<= assignJob($slaves[${_ssi}], "serve the public")>><</link>>`);
-				} else {
-					assignments.push('Public Servant');
-				}
-				if ((_Slave.lactation > 0) || (_Slave.balls > 0)) {
-					if (_Slave.assignment !== "get milked") {
-						assignments.push(`<<link "Milked" "Main">><<= assignJob($slaves[${_ssi}], "get milked")>><</link>>`);
-					} else {
-						assignments.push('Milked');
-					}
-				}
-				if (_Slave.assignment !== "stay confined") {
-					assignments.push(`<<link "Confinement" "Main">><<= assignJob($slaves[${_ssi}], "stay confined")>><</link>>`);
-				} else {
-					assignments.push('Confinement');
-				}
-				if (_Slave.assignment !== "choose her own job") {
-					assignments.push(`<<link "Let ${_Slave.object} choose" "Main">><<= assignJob($slaves[${_ssi}], "choose her own job")>><</link>>`);
-				} else {
-					assignments.push(`Let ${_Slave.object} choose`);
-				}
-			} /* CLOSES FUCKDOLL CHECK */
-
-			res.push(assignments.join("&thinsp;|&thinsp;"));
+			res.push(App.UI.jobLinks.assignments(_ssi, "Main"));
 		}
 
 		const _numFacilities = V.brothel + V.club + V.dairy + V.farmyard + V.servantsQuarters + V.masterSuite + V.spa + V.clinic + V.schoolroom + V.cellblock + V.arcade + V.HGSuite;
@@ -5668,119 +5264,7 @@ App.UI.slaveSummaryList = function (passageName) {
 				V.returnTo = passageName;
 
 				res.push('<br>Transfer to: ');
-				/** @type {string[]} */
-				const transfers = [];
-				if (_Slave.assignment !== "rest" && _Slave.assignment !== "please you" && _Slave.assignment !== "take classes" && _Slave.assignment !== "be a servant" && _Slave.assignment !== "whore" && _Slave.assignment !== "serve the public" && _Slave.assignment !== "get milked" && _Slave.assignment !== "stay confined") {
-					transfers.push(`<<link "Penthouse" "Main">><<= removeJob($slaves[${_ssi}], $slaves[${_ssi}].assignment)>><</link>>`);
-				} else {
-					transfers.push('Penthouse');
-				}
-
-				if (V.arcade !== 0) {
-					if (V.arcade > V.arcadeSlaves && (_Slave.indentureRestrictions <= 0) && (_Slave.breedingMark !== 1 || V.propOutcome === 0)) {
-						transfers.push(`[[Arcade|Assign][$assignTo = "Arcade", $i = ${_ssi}]]`); /* $i = -1 tells Assign to use _Slave as-is */
-					} else {
-						transfers.push('Arcade');
-					}
-				}
-
-				if (_Slave.fuckdoll === 0) {
-					/* NON-FUCKDOLL FACILITIES */
-					if (V.clinic !== 0) {
-						if (V.clinic > V.clinicSlaves && (_Slave.health < 20 || (V.Nurse !== 0 && ((_Slave.chem > 15 && V.clinicUpgradeFilters === 1) || (V.bellyImplants === 1 && _Slave.bellyImplant > -1) || (_Slave.pregKnown === 1 && (V.clinicSpeedGestation >= 0 || _Slave.pregControl === "speed up")) || (_Slave.pregAdaptation * 1000 < _Slave.bellyPreg || _Slave.preg > _Slave.pregData.normalBirth / 1.33))))) {
-							transfers.push(`[[Clinic|Assign][$assignTo = "Clinic", $i =${_ssi}]]`); /* $i = -1 tells Assign to use _Slave as-is */
-						} else {
-							transfers.push('Clinic');
-						}
-					}
-
-					if (V.masterSuite !== 0) {
-						if (V.masterSuite > V.masterSuiteSlaves && ((_Slave.devotion > 20) || ((_Slave.devotion >= -50) && (_Slave.trust < -20)) || (_Slave.trust < -50))) {
-							transfers.push(`[[Master Suite|Assign][$assignTo = "Master Suite", $i = ${_ssi}]]`); /* $i = -1 tells Assign to use _Slave as-is */
-						} else {
-							transfers.push('Master Suite');
-						}
-					}
-
-					if (V.cellblock !== 0) {
-						if (V.cellblock > V.cellblockSlaves && ((_Slave.devotion < -20 && _Slave.trust >= -20) || (_Slave.devotion < -50 && _Slave.trust >= -50))) {
-							transfers.push(`[[Cellblock|Assign][$assignTo = "Cellblock", $i = ${_ssi}]]`); /* $i = -1 tells Assign to use _Slave as-is */
-						} else {
-							transfers.push('Cellblock');
-						}
-					}
-
-					if (V.schoolroom !== 0) {
-						if (V.schoolroom > V.schoolroomSlaves && (_Slave.fetish !== "mindbroken" && (_Slave.devotion >= -20 || (_Slave.devotion >= -50 && _Slave.trust < -20) || _Slave.trust < -50) && ((_Slave.intelligenceImplant < 30) || (_Slave.voice !== 0 && _Slave.accent + V.schoolroomUpgradeLanguage > 2) || (_Slave.skill.oral <= 10 + V.schoolroomUpgradeSkills * 20) || (_Slave.skill.whore <= 10 + V.schoolroomUpgradeSkills * 20) || (_Slave.skill.entertainment <= 10 + V.schoolroomUpgradeSkills * 20) || (_Slave.skill.anal < 10 + V.schoolroomUpgradeSkills * 20) || (_Slave.vagina >= 0 && _Slave.skill.vaginal < 10 + V.schoolroomUpgradeSkills * 20)))) {
-							transfers.push(`[[Schoolroom|Assign][$assignTo = "Schoolroom", $i = ${_ssi}]]`); /* $i = -1 tells Assign to use _Slave as-is */
-						} else {
-							transfers.push('Schoolroom');
-						}
-					}
-
-					if (V.servantsQuarters !== 0) {
-						if (V.servantsQuarters > V.servantsQuartersSlaves && (canWalk(_Slave) && canSee(_Slave) && (_Slave.devotion >= -20 || (_Slave.devotion >= -50 && _Slave.trust <= 20) || _Slave.trust < -20))) {
-							transfers.push(`[[Servants' Quarters|Assign][$assignTo = "Servants' Quarters", $i = ${_ssi}]]`); /* $i = -1 tells Assign to use _Slave as-is */
-						} else {
-							transfers.push('Servants\' Quarters');
-						}
-					}
-
-					if (V.brothel !== 0) {
-						if (V.brothel > V.brothelSlaves && (((_Slave.devotion > 50) || ((_Slave.devotion >= -50) && (_Slave.trust < -20)) || (_Slave.trust < -50) || (_Slave.trust > 50)) && (_Slave.breedingMark !== 1 || V.propOutcome === 0))) {
-							transfers.push(`[[Brothel|Assign][$assignTo = "Brothel", $i = ${_ssi}]]`); /* $i = -1 tells Assign to use _Slave as-is */
-						} else {
-							transfers.push('Brothel');
-						}
-					}
-
-					if (V.club !== 0) {
-						if (V.club > V.clubSlaves && (((_Slave.devotion > 50) || ((_Slave.devotion >= -50) && (_Slave.trust < -20)) || (_Slave.trust < -50) || (_Slave.trust > 50)) && (_Slave.breedingMark !== 1 || V.propOutcome === 0))) {
-							transfers.push(`[[Club|Assign][$assignTo = "Club", $i = ${_ssi}]]`); /* $i = -1 tells Assign to use _Slave as-is */
-						} else {
-							transfers.push('Club');
-						}
-					}
-
-					if (V.dairy !== 0) {
-						const _dairySeed = V.bioreactorsXY + V.bioreactorsXX + V.bioreactorsHerm + V.bioreactorsBarren;
-						if (V.dairy <= V.dairySlaves + _dairySeed) {
-							transfers.push('Dairy');
-						} else if (((_Slave.indentureRestrictions > 0) && (V.dairyRestraintsSetting > 1)) || ((_Slave.indentureRestrictions > 1) && (V.dairyRestraintsSetting > 0)) || (_Slave.breedingMark === 1 && V.propOutcome === 1 && V.dairyRestraintsSetting > 0) || ((V.dairyPregSetting > 0) && ((_Slave.bellyImplant !== -1) || (_Slave.broodmother > 0)))) {
-							transfers.push('Dairy');
-						} else if (((_Slave.lactation > 0) || (_Slave.balls > 0)) || ((V.dairyFeedersUpgrade === 1) && (V.dairyFeedersSetting > 0) && (V.dairySlimMaintainUpgrade === 0))) {
-							transfers.push(`[[Dairy|Assign][$assignTo = "Dairy", $i = ${_ssi}]]`); /* $i = -1 tells Assign to use _Slave as-is */
-						} else {
-							transfers.push('Dairy');
-						}
-					}
-
-					if (V.farmyard !== 0) {
-						if (V.farmyard > V.farmyardSlaves) {
-							transfers.push(`[[Farmyard|Assign][$assignTo = "Farmyard", $i = ${_ssi}]]`); /* $i = -1 tells Assign to use _Slave as-is */
-						} else {
-							transfers.push('Farmyard');
-						}
-					}
-
-					if (V.spa !== 0) {
-						if (V.spa > V.spaSlaves && ((_Slave.devotion >= -20 || _Slave.fetish === "mindbroken") && (_Slave.health < 20 || _Slave.trust <= 60 || _Slave.devotion <= 60 || _Slave.fetish === "mindbroken" || _Slave.sexualFlaw !== "none" || _Slave.behavioralFlaw !== "none"))) {
-							transfers.push(`[[Spa|Assign][$assignTo = "Spa", $i = ${_ssi}]]`); /* $i = -1 tells Assign to use _Slave as-is */
-						} else {
-							transfers.push('Spa');
-						}
-					}
-
-					if (V.nursery !== 0) {
-						if (V.nurseryNannies > V.nurserySlaves && (_Slave.devotion > 20 || _Slave.trust > 20 || _Slave.fetish === "mindbroken")) {
-							transfers.push(`[[Nursery|Assign][$assignTo = "Nursery", $i = ${_ssi}]]`); /* $i = -1 tells Assign to use _Slave as-is */
-						} else {
-							transfers.push('Nursery');
-						}
-					} /* Closes transfer options check */
-
-					res.push(transfers.join('&thinsp;|&thinsp;'));
-				} /* CLOSES FUCKDOLL CHECK */
+				res.push(App.UI.jobLinks.transfers(_ssi));
 			}
 		} /* closes _numFacilities */
 
@@ -5799,216 +5283,31 @@ App.UI.slaveSummaryList = function (passageName) {
 		V.slaves[_ssi] = _Slave;
 		res.push('</div>');
 
+		if (passageFacility !== undefined) {
+			res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? '&nbsp;&nbsp;&nbsp;&nbsp;' : '');
+			if (V.Flag === 0) {
+				res.push(`<<link "Send ${_Slave.object} to ${passageFacility.name}" "Assign">><<set $i = ${_ssi}>><</link>>`);
+			} else if (V.Flag === 1) {
+				res.push(`<<link "Remove ${_Slave.object} from ${passageFacility.name}" "Retrieve">><<set $i = ${_ssi}>><</link>>`);
+			} else if (passageFacility.desc.manager !== null){
+				const managerCapName = capFirstChar(passageFacility.desc.manager.position);
+				res.push(`[[Change or remove ${managerCapName}|${managerCapName} Select]]`);
+			}
+		} else if (slaveSelect !== undefined) {
+			if (slaveSelect.facility.manager.slaveHasExperience(_Slave)) {
+				res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? '&nbsp;&nbsp;&nbsp;&nbsp;' : '');
+				res.push('@@.lime;Has applicable career experience.@@');
+			}
+		}
 		switch (passageName) {
 			case "Main":
 				continue;
-			case "HG Select":
-				if (setup.HGCareers.includes(_Slave.career) || (_Slave.skill.headGirl >= V.masteredXP)) {
-					res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? '&nbsp;&nbsp;&nbsp;&nbsp;' : '');
-					res.push('@@.lime;Has applicable career experience.@@');
-				}
-				break;
-			case "Head Girl Suite":
-				res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? '&nbsp;&nbsp;&nbsp;&nbsp;' : '');
-				if (V.Flag === 0) {
-					res.push(`[[Send her to live with your Head Girl|Assign][$i = ${_ssi}]]`);
-				} else {
-					res.push(`[[Bring her out of the Head Girl's suite|Retrieve][$i = ${_ssi}]]`);
-				}
-				break;
 			case "Recruiter Select":
 				if (setup.recruiterCareers.includes(_Slave.career) || (_Slave.skill.recruiter >= V.masteredXP)) {
 					res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? '&nbsp;&nbsp;&nbsp;&nbsp;' : '');
 					res.push('@@.lime;Has applicable career experience.@@');
 				}
 				break;
-			case "BG Select":
-				if (setup.bodyguardCareers.includes(_Slave.career) || (_Slave.skill.bodyguard >= V.masteredXP)) {
-					res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? '&nbsp;&nbsp;&nbsp;&nbsp;' : '');
-					res.push('@@.lime;Has applicable career experience.@@');
-				}
-				break;
-			case "Spa":
-				res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? '&nbsp;&nbsp;&nbsp;&nbsp;' : '');
-				if (V.Flag === 0) {
-					res.push(`<<link "Send ${_Slave.object} to $spaName" "Assign">><<set $i = ${_ssi}>><</link>>`);
-				} else if (V.Flag === 1) {
-					res.push(`<<link "Remove ${_Slave.object} from ${V.spaName}" "Retrieve">><<set $i = ${_ssi}>><</link>>`);
-				} else {
-					res.push('[[Change or remove Attendant|Attendant Select]]');
-				}
-				break;
-			case "Attendant Select":
-				if (setup.attendantCareers.includes(_Slave.career) || (_Slave.skill.attendant >= V.masteredXP)) {
-					res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? '&nbsp;&nbsp;&nbsp;&nbsp;' : '');
-					res.push('@@.lime;Has applicable career experience.@@');
-				}
-				break;
-			case "Nursery":
-				res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? '&nbsp;&nbsp;&nbsp;&nbsp;' : '');
-				if (V.Flag === 0) {
-					res.push(`<<link "Send ${_Slave.object} to $nurseryName" "Assign">><<set $i = ${_ssi}>><</link>>`);
-				} else if (V.Flag === 1) {
-					res.push(`<<link "Remove ${_Slave.object} from $nurseryName" "Retrieve">><<set $i = ${_ssi}>><</link>>`);
-				} else {
-					res.push('[[Change or remove Matron|Matron Select]]');
-				}
-				break;
-			case "Matron Select":
-				if (setup.matronCareers.includes(_Slave.career) || (_Slave.skill.matron >= V.masteredXP)) {
-					res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? '&nbsp;&nbsp;&nbsp;&nbsp;' : '');
-					res.push('@@.lime;Has applicable career experience.@@');
-				}
-				break;
-			case "Brothel":
-				res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? '&nbsp;&nbsp;&nbsp;&nbsp;' : '');
-				if (V.Flag === 0) {
-					res.push(`<<link "Send ${_Slave.object} to $brothelName" "Assign">><<set $i = ${_ssi}>><</link>>`);
-				} else if (V.Flag === 1) {
-					res.push(`<<link "Release ${_Slave.object} from $brothelName" "Retrieve">><<set $i = ${_ssi}>><</link>>`);
-				} else {
-					res.push('[[Change or remove Madam|Madam Select]]');
-				}
-				break;
-			case "Madam Select":
-				if (setup.madamCareers.includes(_Slave.career) || (_Slave.skill.madam >= V.masteredXP)) {
-					res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? '&nbsp;&nbsp;&nbsp;&nbsp;' : '');
-					res.push('@@.lime;Has applicable career experience.@@');
-				}
-				break;
-			case "Club":
-				res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? '&nbsp;&nbsp;&nbsp;&nbsp;' : '');
-				if (V.Flag === 0) {
-					res.push(`<<link "Send ${_Slave.object} to $clubName" "Assign">><<set $i = ${_ssi}>><</link>>`);
-				} else if (V.Flag === 1) {
-					res.push(`<<link "Remove ${_Slave.object} from $clubName" "Retrieve">><<set $i = ${_ssi}>><</link>>`);
-				} else {
-					res.push('[[Change or remove DJ|DJ Select]]');
-				}
-				break;
-			case "Arcade":
-				res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? '&nbsp;&nbsp;&nbsp;&nbsp;' : '');
-				if (V.Flag === 0) {
-					res.push(`<<link "Confine ${_Slave.object} in $arcadeName" "Assign">><<set $i = ${_ssi}>><</link>>`);
-				} else {
-					res.push(`<<link "Release ${_Slave.object} from $arcadeName" "Retrieve">><<set $i = ${_ssi}>><</link>>`);
-				}
-				break;
-			case "DJ Select":
-				if (setup.DJCareers.includes(_Slave.career) || (_Slave.skill.DJ >= V.masteredXP)) {
-					res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? '&nbsp;&nbsp;&nbsp;&nbsp;' : '');
-					res.push('@@.lime;Has applicable career experience.@@');
-				}
-				break;
-			case "Clinic":
-				res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? '&nbsp;&nbsp;&nbsp;&nbsp;' : '');
-				if (V.clinicUpgradeScanner === 1) {
-					res.push(`@@.cyan;Estimated DNA error value: ${Math.ceil(_Slave.chem / 10)}@@`);
-				}
-				if (V.Flag === 0) {
-					res.push(`<<link "Send ${_Slave.object} to $clinicName" "Assign">><<set $i = ${_ssi}>><</link>>`);
-				} else if (V.Flag === 1) {
-					res.push(`<<link "Take ${_Slave.object} out of $clinicName" "Retrieve">><<set $i = ${_ssi}>><</link>>`);
-				} else {
-					res.push('[[Change or remove Nurse|Nurse Select]]');
-				}
-				break;
-			case "Nurse Select":
-				if (setup.nurseCareers.includes(_Slave.career) || (_Slave.skill.nurse >= V.masteredXP)) {
-					res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? '&nbsp;&nbsp;&nbsp;&nbsp;' : '');
-					res.push('@@.lime;Has applicable career experience.@@');
-				}
-				break;
-			case "Schoolroom":
-				res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? '&nbsp;&nbsp;&nbsp;&nbsp;' : '');
-				if (V.Flag === 0) {
-					res.push(`<<link "Assign ${_Slave.object} to $schoolroomName" "Assign">><<set $i = ${_ssi}>><</link>>`);
-				} else if (V.Flag === 1) {
-					res.push(`<<link "Release ${_Slave.object} from $schoolroomName" "Retrieve">><<set $i = ${_ssi}>><</link>>`);
-				} else {
-					res.push('[[Change or remove Schoolteacher|Schoolteacher Select]]');
-				}
-				break;
-			case "Schoolteacher Select":
-				if (setup.schoolteacherCareers.includes(_Slave.career) || (_Slave.skill.teacher >= V.masteredXP)) {
-					res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? '&nbsp;&nbsp;&nbsp;&nbsp;' : '');
-					res.push('@@.lime;Has applicable career experience.@@');
-				}
-				break;
-			case "Dairy":
-				res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? '&nbsp;&nbsp;&nbsp;&nbsp;' : '');
-				if (V.Flag === 0) {
-					res.push(`<<link "Send ${_Slave.object} to $dairyName" "Assign">><<set $i = ${_ssi}>><</link>>`);
-				} else if (V.Flag === 1) {
-					res.push(`<<link "Release ${_Slave.object} from $dairyName" "Retrieve">><<set $i = ${_ssi}>><</link>>`);
-				} else {
-					res.push('[[Change or remove Milkmaid|Milkmaid Select]]');
-				}
-				break;
-			case "Milkmaid Select":
-				if (setup.milkmaidCareers.includes(_Slave.career) || (_Slave.skill.milkmaid >= V.masteredXP)) {
-					res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? '&nbsp;&nbsp;&nbsp;&nbsp;' : '');
-					res.push('@@.lime;Has applicable career experience.@@');
-				}
-				break;
-			case "Farmyard":
-				res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? '&nbsp;&nbsp;&nbsp;&nbsp;' : '');
-				if (V.Flag === 0) {
-					res.push(`<<link "Send ${_Slave.object} to $farmyardName" "Assign">><<set $i = ${_ssi}>><</link>>`);
-				} else if (V.Flag === 1) {
-					res.push(`<<link "Release ${_Slave.object} from $farmyardName" "Retrieve">><<set $i = ${_ssi}>><</link>>`);
-				} else {
-					res.push('[[Change or remove Farmer|Farmer Select]]');
-				}
-				break;
-			case "Farmer Select":
-				if (setup.farmerCareers.includes(_Slave.career) || (_Slave.skill.farmer >= V.masteredXP)) {
-					res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? '&nbsp;&nbsp;&nbsp;&nbsp;' : '');
-					res.push('@@.lime;Has applicable career experience.@@');
-				}
-				break;
-			case "Servants' Quarters":
-				res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? '&nbsp;&nbsp;&nbsp;&nbsp;' : '');
-				if (V.Flag === 0) {
-					res.push(`<<link "Assign ${_Slave.object} to $servantsQuartersName" "Assign">><<set $i = ${_ssi}>><</link>>`);
-				} else if (V.Flag === 1) {
-					res.push(`<<link "Release ${_Slave.object} from $servantsQuartersName" "Retrieve">><<set $i = ${_ssi}>><</link>>`);
-				} else {
-					res.push('[[Change or remove Stewardess|Stewardess Select]]');
-				}
-				break;
-			case "Stewardess Select":
-				if (setup.stewardessCareers.includes(_Slave.career) || (_Slave.skill.stewardess >= V.masteredXP)) {
-					res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? '&nbsp;&nbsp;&nbsp;&nbsp;' : '');
-					res.push('@@.lime;Has applicable career experience.@@');
-				}
-				break;
-			case "Master Suite":
-				res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? '&nbsp;&nbsp;&nbsp;&nbsp;' : '');
-				if (V.Flag === 0) {
-					res.push(`<<link "Add ${_Slave.object} to $masterSuiteName" "Assign">><<set $i = ${_ssi}>><</link>>`);
-				} else if (V.Flag === 1) {
-					res.push(`<<link "Send ${_Slave.object} out of $masterSuiteName" "Retrieve">><<set $i = ${_ssi}>><</link>>`);
-				} else {
-					res.push('[[Change or remove Concubine|Concubine Select]]');
-				}
-				break;
-			case "Cellblock":
-				res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? '&nbsp;&nbsp;&nbsp;&nbsp;' : '');
-				if (V.Flag === 0) {
-					res.push(`<<link "Confine ${_Slave.object} in $cellblockName" "Assign">><<set $i = ${_ssi}>><</link>>`);
-				} else if (V.Flag === 1) {
-					res.push(`<<link "Release ${_Slave.object} from $cellblockName" "Retrieve">><<set $i = ${_ssi}>><</link>>`);
-				} else {
-					res.push('[[Change or remove Wardeness|Wardeness Select]]');
-				}
-				break;
-			case "Wardeness Select":
-				if (setup.wardenessCareers.includes(_Slave.career) || (_Slave.skill.wardeness >= V.masteredXP)) {
-					res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? '&nbsp;&nbsp;&nbsp;&nbsp;' : '');
-					res.push('@@.lime;Has applicable career experience.@@');
-				}
-				break;
 			case "New Game Plus":
 				res.push(`<br>${ V.seeImages !== 1 || V.seeSummaryImages !== 1 || V.imageChoice === 1}` ? '&nbsp;&nbsp;&nbsp;&nbsp;' : '');
 				if (V.Flag === 0) {
diff --git a/src/js/storyJS.js b/src/js/storyJS.js
index 1548c981bf12685af4389e82e275ff8e0ef0acaa..8ece004e7cc16fd8ffee8c90c85b13c94448ba4c 100644
--- a/src/js/storyJS.js
+++ b/src/js/storyJS.js
@@ -159,13 +159,13 @@ window.milkAmount = /** @param {App.Entity.SlaveState} slave */ function (slave)
 	} else {
 		milk = (8 + ((calcs - 400) / 50));
 	}
+	if (slave.boobsImplant > 0) {
+		milk *= Math.max(.25, (1 - (slave.boobsImplant / slave.boobs)));
+	}
 	if (slave.lactation === 2) {
 		milk *= 1.2;
 	}
 	milk += (milk * ((slave.devotion - 50) / 200));
-	if (slave.boobsImplant > 200) {
-		milk *= 0.9;
-	}
 	calcs = (slave.hormoneBalance / 50);
 	if (slave.balls !== 0 && calcs > -2) {
 		calcs -= 1;
diff --git a/src/js/utilJS.js b/src/js/utilJS.js
index 882eb2dc6b901908ab2a61af56168227dd3defa7..31adf6b85424cfa1eedf2952f2521802718262f4 100644
--- a/src/js/utilJS.js
+++ b/src/js/utilJS.js
@@ -935,7 +935,12 @@ window.dickToInchString = function(s) {
 
 // takes a dick value e.g. $activeSlave.dick, returns an int of the dick length in cm
 window.dickToCM = function(s) {
-	return (s<9?s*5:(s===9?50:s*6));
+	if (s < 9) {
+		return s*5;
+	} else if (s === 9) {
+		return 50;
+	}
+	return s*6;
 };
 
 // takes a ball value e.g. $activeSlave.balls, returns a string in the format 3 inches
@@ -1300,24 +1305,24 @@ window.SkillIncrease = (function() {
 		let r ="";
 		skillIncrease = skillIncrease || State.variables.skillIncrease || 1;
 
-		if (slave.skill.whore <= 10) {
-			if (slave.skill.whore + skillIncrease > 10) {
+		if (slave.skill.whoring <= 10) {
+			if (slave.skill.whoring + skillIncrease > 10) {
 				r = `<span class="green">${He} now has basic knowledge about how to whore,</span> and can avoid some potentially dangerous situations.`;
 			}
-		} else if (slave.skill.whore <= 30) {
-			if (slave.skill.whore + skillIncrease > 30) {
+		} else if (slave.skill.whoring <= 30) {
+			if (slave.skill.whoring + skillIncrease > 30) {
 				r = `<span class="green">${He} now has some skill as a whore,</span> and knows how to sell ${his} body at a good price.`;
 			}
-		} else if (slave.skill.whore <= 60) {
-			if (slave.skill.whore + skillIncrease > 60) {
+		} else if (slave.skill.whoring <= 60) {
+			if (slave.skill.whoring + skillIncrease > 60) {
 				r = `<span class="green">${He} is now an expert whore,</span> and can often make clients forget that $he's a prostitute they're paying for.`;
 			}
-		} else if (slave.skill.whore < 100) {
-			if (slave.skill.whore + skillIncrease >= 100) {
+		} else if (slave.skill.whoring < 100) {
+			if (slave.skill.whoring + skillIncrease >= 100) {
 				r = `<span class="green">${He} is now a masterful whore,</span> and can learn nothing more about prostitution.`;
 			}
 		}
-		slave.skill.whore += skillIncrease;
+		slave.skill.whoring += skillIncrease;
 		return r;
 	}
 
@@ -1479,7 +1484,7 @@ window.resyncSlaveToAge = function(slave) {
 		slave.anus = 0;
 		slave.skill.anal = 0;
 		slave.skill.oral = 0;
-		slave.skill.whore = 0;
+		slave.skill.whoring = 0;
 		slave.skill.entertainment = 0;
 		slave.skill.combat = 0;
 		slave.skill.vaginal = 0;
@@ -1620,82 +1625,110 @@ window.randomRaceHair = function(raceName) {
 window.skinToneLevel = function(skinTone) {
 	if (!setup.naturalSkins.includes(skinTone)) {
 		return undefined;
-	} else {
-		let skinNumber;
-		let skinToMelanin = {
-			"pure black": 25,
-			"ebony": 24,
-			"black": 23,
-			"dark brown": 22,
-			"brown": 21,
-			"light brown": 20,
-			"dark beige": 19,
-			"beige": 18,
-			"light beige": 17,
-			"dark": 16,
-			"dark olive": 15,
-			"bronze": 14,
-			"olive": 13,
-			"tan": 12,
-			"light olive": 11,
-			"light": 10,
-			"fair": 9,
-			"very fair": 8,
-			"extremely fair": 7,
-			"pale": 6,
-			"very pale": 5,
-			"extremely pale": 4,
-			"white": 3,
-			"ivory": 2,
-			"pure white": 1
-		};
-		skinNumber = skinToMelanin[skinTone];
-		return skinNumber;
 	}
+	const skinToMelanin = {
+		"pure black": 25,
+		"ebony": 24,
+		"black": 23,
+		"dark brown": 22,
+		"brown": 21,
+		"light brown": 20,
+		"dark beige": 19,
+		"beige": 18,
+		"light beige": 17,
+		"dark": 16,
+		"dark olive": 15,
+		"bronze": 14,
+		"olive": 13,
+		"tan": 12,
+		"light olive": 11,
+		"light": 10,
+		"fair": 9,
+		"very fair": 8,
+		"extremely fair": 7,
+		"pale": 6,
+		"very pale": 5,
+		"extremely pale": 4,
+		"white": 3,
+		"ivory": 2,
+		"pure white": 1
+	};
+	return skinToMelanin[skinTone];
 };
 
 window.changeSkinTone = function(skin, value) {
 	if (!setup.naturalSkins.includes(skin)) {
 		return skin;
-	} else {
-		let skinToMelanin = {
-			"pure black": 25,
-			"ebony": 24,
-			"black": 23,
-			"dark brown": 22,
-			"brown": 21,
-			"light brown": 20,
-			"dark beige": 19,
-			"beige": 18,
-			"light beige": 17,
-			"dark": 16,
-			"dark olive": 15,
-			"bronze": 14,
-			"olive": 13,
-			"tan": 12,
-			"light olive": 11,
-			"light": 10,
-			"fair": 9,
-			"very fair": 8,
-			"extremely fair": 7,
-			"pale": 6,
-			"very pale": 5,
-			"extremely pale": 4,
-			"white": 3,
-			"ivory": 2,
-			"pure white": 1
-		};
-		let newSkin = (skinToMelanin[skin] + value);
-		if (newSkin > 25) {
-			newSkin = 25;
-		} else if (newSkin < 1) {
-			newSkin = 1;
-		}
-		let prop = "";
-		for (prop in skinToMelanin) {
-			if (!skinToMelanin.hasOwnProperty(prop)) continue;
-			if (newSkin >= skinToMelanin[prop]) return prop;
-		}
-		return prop;
 	}
-};
\ No newline at end of file
+	const skinToMelanin = {
+		"pure black": 25,
+		"ebony": 24,
+		"black": 23,
+		"dark brown": 22,
+		"brown": 21,
+		"light brown": 20,
+		"dark beige": 19,
+		"beige": 18,
+		"light beige": 17,
+		"dark": 16,
+		"dark olive": 15,
+		"bronze": 14,
+		"olive": 13,
+		"tan": 12,
+		"light olive": 11,
+		"light": 10,
+		"fair": 9,
+		"very fair": 8,
+		"extremely fair": 7,
+		"pale": 6,
+		"very pale": 5,
+		"extremely pale": 4,
+		"white": 3,
+		"ivory": 2,
+		"pure white": 1
+	};
+	let newSkin = (skinToMelanin[skin] + value);
+	if (newSkin > 25) {
+		newSkin = 25;
+	} else if (newSkin < 1) {
+		newSkin = 1;
+	}
+	let prop;
+	for (prop in skinToMelanin) {
+		if (!skinToMelanin.hasOwnProperty(prop)) continue;
+		if (newSkin >= skinToMelanin[prop]) return prop;
+	}
+	return prop;
+};
+
+
+/**
+ * Creates a span for an link with tooltip containing the reasons why it is disabled
+ * @param {string} link
+ * @param {string[]} reasons
+ * @returns {string}
+ */
+App.UI.disabledLink = function(link, reasons) {
+	const tooltips = reasons.length === 1 ?
+		`<span class="tooltip">${reasons}</span>`:
+		`<div class="tooltip"><ul>${reasons.map(e => `<li>${e}</li>`).join('')}</ul></div>`;
+	return '<span class="textWithTooltip">' + link + tooltips + '</span>';
+}
+
+/**
+ * Expresion for SugarCube for referencing a slave by index
+ * @param {number} i slave array index or -1 for activeSlave
+ * @returns {string}
+ */
+App.Utils.slaveRefString = function(i) {
+	return i >= 0 ? `$slaves[${i}]` : '$activeSlave';
+}
+
+/**
+ * Returns slave by index in the slave array, Accepts -1 for the activeSlave
+ * @param {number} i slave array index or -1 for activeSlave
+ * @returns {App.Entity.SlaveState}
+ */
+App.Utils.slaveByIndex = function(i) {
+	return i === -1 ? State.variables.activeSlave : State.variables.slaves[i];
+}
diff --git a/src/js/wombJS.js b/src/js/wombJS.js
index 4c4969e7602ff829f16536a2abedf8359a67be51..ac32ad21ba568c9da152e466ffacf357c0882ab2 100644
--- a/src/js/wombJS.js
+++ b/src/js/wombJS.js
@@ -196,7 +196,7 @@ window.WombProgress = function (actor, ageToAdd, realAgeToAdd = ageToAdd) {
 	try {
 		actor.womb.forEach(ft => {
 			ft.age += ageToAdd;
-			ft.realAge += realAgeToAdd
+			ft.realAge += realAgeToAdd;
 		});
 	} catch (err) {
 		WombInit(actor);
@@ -511,6 +511,7 @@ window.fetalSplit = function (actor, chance) {
 		if ((jsRandom(1, chance) >= chance) && s.splitted !== 1) {
 			nft = {};
 			nft.age = s.age;
+			nft.realAge = s.realAge;
 			nft.fatherID = s.fatherID;
 			nft.motherID = s.motherID;
 			nft.volume = s.volume;
@@ -750,7 +751,7 @@ data.countLitter[x] = count of fetuses in "x" litter.
 
 data.litterData[x] = contain array with actual fetuses that belong to a litter "x". Can be used to check anyithing related to fetus. (This is not copy, but reference to actual fetuses, so be careful with changes of this array).
 
-Sample of usage in SugarScript: 
+Sample of usage in SugarScript:
 ---
 <<set _wd = WombGetLittersData($activeSlave)>>
 She is _wd.litters[0] weeks pregnant with her first set of _wd.countLitter[0] children<<if _wd.litters > 1>>, _wd.litters[1] weeks along with her second set<</if>><<if _wd.litters > 2>>, _wd.litters[2] and _wd.litters[2] weeks along with her third<</if>>.
@@ -783,7 +784,7 @@ window.WombGetLittersData = function (actor) {
 	data.litterData = litterData;
 
 	return data;
-}
+};
 
 window.BCReserveInit = function () {
 	var SV = State.variables;
diff --git a/src/npc/acquisition.tw b/src/npc/acquisition.tw
index 8981fe80a8763fbe8cf0c96edfd23d5ce5b008bf..92704132135bde52cc3c1bb167701c7fa1a5fb8a 100644
--- a/src/npc/acquisition.tw
+++ b/src/npc/acquisition.tw
@@ -281,7 +281,7 @@ The previous owner seems to have left in something of a hurry.
 			<<if $activeSlave.vagina == 0>><<set $activeSlave.vagina++>><</if>>
 			<<set $activeSlave.skill.vaginal = random(15,35)>>
 		<</if>>
-		<<set $activeSlave.skill.whore = random(15,35)>>
+		<<set $activeSlave.skill.whoring = random(15,35)>>
 		<<set $activeSlave.clothes = "uncomfortable straps", $activeSlave.collar = "uncomfortable leather", $activeSlave.shoes = "flats">>
 		<<set $activeSlave.assignment = "whore">>
 	<<case "GenderRadicalist">>
@@ -293,7 +293,7 @@ The previous owner seems to have left in something of a hurry.
 		<<set $activeSlave.boobs += 100*random(2,4)>>
 		<<set $activeSlave.butt += random(1,2)>>
 		<<set $activeSlave.attrXY = random(70,90), $activeSlave.attrXX = 0>>
-		<<set $activeSlave.skill.oral = random(35,65), $activeSlave.skill.anal = random(35,65), $activeSlave.skill.whore = random(35,65)>>
+		<<set $activeSlave.skill.oral = random(35,65), $activeSlave.skill.anal = random(35,65), $activeSlave.skill.whoring = random(35,65)>>
 		<<run SoftenSexualFlaw($activeSlave)>>
 		<<set $activeSlave.clothes = "uncomfortable straps", $activeSlave.collar = "stylish leather", $activeSlave.shoes = "heels">>
 		<<set $activeSlave.assignment = "whore">>
@@ -331,7 +331,7 @@ The previous owner seems to have left in something of a hurry.
 		<<set $activeSlave.butt += random(2,3)>>
 		<<set $activeSlave.lips = random(2,4)>>
 		<<set $activeSlave.weight = random(-15,15)>>
-		<<set $activeSlave.skill.oral = 0, $activeSlave.skill.anal = 0, $activeSlave.skill.vaginal = 0, $activeSlave.skill.entertainment = 0, $activeSlave.skill.whore = 0>>
+		<<set $activeSlave.skill.oral = 0, $activeSlave.skill.anal = 0, $activeSlave.skill.vaginal = 0, $activeSlave.skill.entertainment = 0, $activeSlave.skill.whoring = 0>>
 		<<set $activeSlave.behavioralFlaw = "none", $activeSlave.sexualFlaw = "none">>
 		<<set $activeSlave.clothes = "a Fuckdoll suit">>
 		<<set $activeSlave.assignment = "please you">>
@@ -457,7 +457,7 @@ The previous owner seems to have left in something of a hurry.
 			<<if $activeSlave.vagina == 0>><<set $activeSlave.vagina++>><</if>>
 			<<set $activeSlave.skill.vaginal = random(15,35)>>
 		<</if>>
-		<<set $activeSlave.skill.whore = random(15,35)>>
+		<<set $activeSlave.skill.whoring = random(15,35)>>
 		<<set $activeSlave.clothes = "body oil", $activeSlave.collar = "none", $activeSlave.shoes = "none">>
 		<<set $activeSlave.assignment = "whore">>
 	<<case "ChattelReligionist">>
@@ -465,7 +465,7 @@ The previous owner seems to have left in something of a hurry.
 		<<include "Generate New Slave">>
 		<<set $activeSlave.devotion = random(55,65), $activeSlave.trust = random(55,65), $activeSlave.health = random(0,15)>>
 		<<if $activeSlave.vagina == 0>><<set $activeSlave.vagina++>><</if>>
-		<<set $activeSlave.skill.whore = random(10,20)>>
+		<<set $activeSlave.skill.whoring = random(10,20)>>
 		<<set $activeSlave.behavioralFlaw = "none", $activeSlave.behavioralQuirk = "sinful">>
 		<<set $activeSlave.clothes = "a chattel habit", $activeSlave.collar = "heavy gold", $activeSlave.shoes = "flats">>
 		<<set $activeSlave.assignment = "whore">>
@@ -544,7 +544,7 @@ The previous owner seems to have left in something of a hurry.
 			<<if $activeSlave.vagina == 0>><<set $activeSlave.vagina++>><</if>>
 			<<set $activeSlave.skill.vaginal = 100>>
 		<</if>>
-		<<set $activeSlave.skill.entertainment = 100, $activeSlave.skill.whore = 100>>
+		<<set $activeSlave.skill.entertainment = 100, $activeSlave.skill.whoring = 100>>
 		<<run SoftenBehavioralFlaw($activeSlave)>>
 		<<run SoftenSexualFlaw($activeSlave)>>
 		<<set $activeSlave.clothes = "a slutty qipao", $activeSlave.collar = "pretty jewelry", $activeSlave.shoes = "heels">>
@@ -563,7 +563,7 @@ The previous owner seems to have left in something of a hurry.
 			<<set $activeSlave.skill.vaginal = random(35,75)>>
 		<</if>>
 		<<set $activeSlave.skill.entertainment = random(15,35)>>
-		<<set $activeSlave.skill.whore = 0>>
+		<<set $activeSlave.skill.whoring = 0>>
 		<<run SoftenSexualFlaw($activeSlave)>>
 		<<set $activeSlave.clothes = "a ball gown", $activeSlave.shoes = "flats">>
 		<<set $activeSlave.assignment = "rest">>
diff --git a/src/npc/agent/agentFramework.js b/src/npc/agent/agentFramework.js
new file mode 100644
index 0000000000000000000000000000000000000000..5dab0b51e759c32e1378b583780f4a963250b14e
--- /dev/null
+++ b/src/npc/agent/agentFramework.js
@@ -0,0 +1,47 @@
+App.Data.Facilities.arcologyAgent = {
+	baseName: "arcololgy",
+	genericName: null,
+	jobs: {
+		agentsSlave: {
+			position: "agents's toy",
+			assignment: "live with your agent",
+			publicSexUse: true,
+			fuckdollAccepted: false
+		}
+	},
+	defaultJob: "agentsSlave",
+	manager: {
+		position: "agent",
+		assignment: "be your agent",
+		careers: null,
+		skill: null,
+		publicSexUse: true,
+		fuckdollAccepted: false,
+		broodmotherAccepted: false,
+		shouldWalk: true,
+		shouldSee: true,
+		shouldHear: true,
+		shouldTalk: true,
+		shouldThink: true,
+		requiredDevotion: 21
+	}
+}
+
+App.Entity.Facilities.AgentJob = class extends App.Entity.Facilities.ManagingJob {
+	/**
+	 * @param {App.Entity.SlaveState} slave
+	 * @returns {string[]}
+	 */
+	canEmploy(slave) {
+		let r = super.canEmploy(slave);
+		if (slave.intelligence + slave.intelligenceImplant <= 15) {
+			r.push(`${slave.slaveName} is not intelligent enough to be your agent.`);
+		}
+		return r;
+	}
+}
+
+App.Entity.facilities.arcologyAgent = new App.Entity.Facilities.Facility(
+	App.Data.Facilities.arcologyAgent,
+	new App.Entity.Facilities.AgentJob()
+);
diff --git a/src/npc/databases/cheatmodeDatabase.tw b/src/npc/databases/cheatmodeDatabase.tw
index 7461b41a61d1ba3c594c00a3a20bd6dd0139a5f3..a11c1407171f1c19b7ec6ef00109dbc6a0ab830f 100644
--- a/src/npc/databases/cheatmodeDatabase.tw
+++ b/src/npc/databases/cheatmodeDatabase.tw
@@ -2,7 +2,7 @@
 
 <<set $activeSlave = BaseSlave()>>
 <<set _HS = clone($activeSlave)>>
-<<set _HS.slaveName = "Miss Anne", _HS.birthName = "Lindy Anne", _HS.ID = 990000, _HS.relation = "mother", _HS.relationTarget = 990004, _HS.relationship = 4, _HS.relationshipTarget = 990001, _HS.rivalry = 1, _HS.rivalryTarget = 990002, _HS.assignment = "be your Head Girl", _HS.birthWeek = random(0,51), _HS.actualAge = 42, _HS.physicalAge = 42, _HS.visualAge = 42, _HS.ovaryAge = 42, _HS.ageImplant = 1, _HS.health = 50, _HS.devotion = 100, _HS.height = 175, _HS.eyeColor = "green", _HS.hColor = "honey blonde", _HS.skin = "pale", _HS.hStyle = "long", _HS.waist = -55, _HS.boobs = 1000, _HS.boobsImplant = 600, _HS.areolae = 1, _HS.butt = 4, _HS.buttImplant = 2, _HS.face = 55, _HS.lips = 35, _HS.anus = 1, _HS.makeup = 1, _HS.nails = 1, _HS.earPiercing = 1, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whore = 100, _HS.skill.entertainment = 100, _HS.clothes = "a slave gown", _HS.intelligence = 100, _HS.energy = 65, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "'Miss Anne' is tattooed in lovely flowing script over her collarbone.", _HS.custom.desc = "She speaks with the rich accent of the Old South.">>
+<<set _HS.slaveName = "Miss Anne", _HS.birthName = "Lindy Anne", _HS.ID = 990000, _HS.relation = "mother", _HS.relationTarget = 990004, _HS.relationship = 4, _HS.relationshipTarget = 990001, _HS.rivalry = 1, _HS.rivalryTarget = 990002, _HS.assignment = "be your Head Girl", _HS.birthWeek = random(0,51), _HS.actualAge = 42, _HS.physicalAge = 42, _HS.visualAge = 42, _HS.ovaryAge = 42, _HS.ageImplant = 1, _HS.health = 50, _HS.devotion = 100, _HS.height = 175, _HS.eyeColor = "green", _HS.hColor = "honey blonde", _HS.skin = "pale", _HS.hStyle = "long", _HS.waist = -55, _HS.boobs = 1000, _HS.boobsImplant = 600, _HS.areolae = 1, _HS.butt = 4, _HS.buttImplant = 2, _HS.face = 55, _HS.lips = 35, _HS.anus = 1, _HS.makeup = 1, _HS.nails = 1, _HS.earPiercing = 1, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring = 100, _HS.skill.entertainment = 100, _HS.clothes = "a slave gown", _HS.intelligence = 100, _HS.energy = 65, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "'Miss Anne' is tattooed in lovely flowing script over her collarbone.", _HS.custom.desc = "She speaks with the rich accent of the Old South.">>
 <<if $seeDicks != 100>>
 	<<set _HS.genes = "XX", _HS.vagina = 2, _HS.ovaries = 1, _HS.skill.vaginal = 100, _HS.pubertyXX = 1>>
 <<else>>
@@ -13,7 +13,7 @@
 //There are quite a few left; their names are _HS.slaveName,//
 
 <<set _HS = clone($activeSlave)>>
-<<set _HS.slaveName = "Cornelia", _HS.birthName = "Cora", _HS.ID = 990001, _HS.relation = "mother", _HS.relationTarget = 990002, _HS.relationship = 4, _HS.relationshipTarget = 990000, _HS.assignment = "whore", _HS.birthWeek = random(0,51), _HS.actualAge = 36, _HS.physicalAge = 36, _HS.visualAge = 36, _HS.ovaryAge = 36, _HS.ageImplant = 1, _HS.health = 10, _HS.devotion = 100, _HS.muscles = 20, _HS.height = 190, _HS.race = "black", _HS.hColor = "black", _HS.pubicHColor = "black", _HS.skin = "dark", _HS.hStyle = "long", _HS.pubicHStyle = "waxed", _HS.waist = -55, _HS.boobs = 1200, _HS.boobsImplant = 1000, _HS.areolae = 2, _HS.butt = 5, _HS.buttImplant = 3, _HS.preg = -2, _HS.face = 15, _HS.faceImplant = 65, _HS.lips = 35, _HS.lipsImplant = 10, _HS.anus = 2, _HS.makeup = 1, _HS.nails = 1, _HS.earPiercing = 1, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whore = 100, _HS.skill.entertainment = 100, _HS.clothes = "a slave gown", _HS.energy = 65, _HS.attrXX = 80, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "A large letter S is branded into the back of her left hand.", _HS.custom.desc = "She speaks with the demeaning accent of slaves from the Old South.">>
+<<set _HS.slaveName = "Cornelia", _HS.birthName = "Cora", _HS.ID = 990001, _HS.relation = "mother", _HS.relationTarget = 990002, _HS.relationship = 4, _HS.relationshipTarget = 990000, _HS.assignment = "whore", _HS.birthWeek = random(0,51), _HS.actualAge = 36, _HS.physicalAge = 36, _HS.visualAge = 36, _HS.ovaryAge = 36, _HS.ageImplant = 1, _HS.health = 10, _HS.devotion = 100, _HS.muscles = 20, _HS.height = 190, _HS.race = "black", _HS.hColor = "black", _HS.pubicHColor = "black", _HS.skin = "dark", _HS.hStyle = "long", _HS.pubicHStyle = "waxed", _HS.waist = -55, _HS.boobs = 1200, _HS.boobsImplant = 1000, _HS.areolae = 2, _HS.butt = 5, _HS.buttImplant = 3, _HS.preg = -2, _HS.face = 15, _HS.faceImplant = 65, _HS.lips = 35, _HS.lipsImplant = 10, _HS.anus = 2, _HS.makeup = 1, _HS.nails = 1, _HS.earPiercing = 1, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring = 100, _HS.skill.entertainment = 100, _HS.clothes = "a slave gown", _HS.energy = 65, _HS.attrXX = 80, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "A large letter S is branded into the back of her left hand.", _HS.custom.desc = "She speaks with the demeaning accent of slaves from the Old South.">>
 <<if $seeDicks != 0>>
 	<<set _HS.genes = "XY", _HS.vagina = -1, _HS.dick = 3, _HS.balls = 3, _HS.scrotum = 3, _HS.foreskin = 3, _HS.prostate = 1, _HS.pubertyXY = 1>>
 <<else>>
@@ -23,7 +23,7 @@
 //_HS.slaveName,//
 
 <<set _HS = clone($activeSlave)>>
-<<set _HS.slaveName = "Sheba", _HS.birthName = "Shaneequa", _HS.ID = 990002, _HS.relation = "daughter", _HS.relationTarget = 990001, _HS.rivalry = 1, _HS.rivalryTarget = 990000, _HS.assignment = "whore", _HS.birthWeek = random(0,51), _HS.actualAge = 19, _HS.physicalAge = 19, _HS.visualAge = 19, _HS.ovaryAge = 19, _HS.health = 10, _HS.devotion = 12, _HS.height = 175, _HS.race = "black", _HS.pubicHColor = "black", _HS.skin = "brown", _HS.hStyle = "long", _HS.pubicHStyle = "waxed", _HS.waist = -55, _HS.boobs = 1600, _HS.boobsImplant = 600, _HS.nipplesPiercing = 1, _HS.areolae = 1, _HS.butt = 6, _HS.buttImplant = 2, _HS.face = 55, _HS.faceImplant = 15, _HS.lips = 55, _HS.lipsImplant = 10, _HS.anus = 1, _HS.makeup = 1, _HS.nails = 1, _HS.earPiercing = 1, _HS.skill.oral = 35, _HS.skill.anal = 35, _HS.skill.whore = 35, _HS.skill.entertainment = 35, _HS.clothes = "a slave gown", _HS.energy = 100, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "A large letter S is branded into the back of her left hand.", _HS.custom.desc = "She speaks with the demeaning accent of slaves from the Old South.", _HS.mother = 990001>>
+<<set _HS.slaveName = "Sheba", _HS.birthName = "Shaneequa", _HS.ID = 990002, _HS.relation = "daughter", _HS.relationTarget = 990001, _HS.rivalry = 1, _HS.rivalryTarget = 990000, _HS.assignment = "whore", _HS.birthWeek = random(0,51), _HS.actualAge = 19, _HS.physicalAge = 19, _HS.visualAge = 19, _HS.ovaryAge = 19, _HS.health = 10, _HS.devotion = 12, _HS.height = 175, _HS.race = "black", _HS.pubicHColor = "black", _HS.skin = "brown", _HS.hStyle = "long", _HS.pubicHStyle = "waxed", _HS.waist = -55, _HS.boobs = 1600, _HS.boobsImplant = 600, _HS.nipplesPiercing = 1, _HS.areolae = 1, _HS.butt = 6, _HS.buttImplant = 2, _HS.face = 55, _HS.faceImplant = 15, _HS.lips = 55, _HS.lipsImplant = 10, _HS.anus = 1, _HS.makeup = 1, _HS.nails = 1, _HS.earPiercing = 1, _HS.skill.oral = 35, _HS.skill.anal = 35, _HS.skill.whoring = 35, _HS.skill.entertainment = 35, _HS.clothes = "a slave gown", _HS.energy = 100, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "A large letter S is branded into the back of her left hand.", _HS.custom.desc = "She speaks with the demeaning accent of slaves from the Old South.", _HS.mother = 990001>>
 <<if $seeDicks != 100>>
 	<<set _HS.genes = "XX", _HS.vagina = 1, _HS.ovaries = 1, _HS.skill.vaginal = 35, _HS.pubertyXX = 1>>
 <<else>>
diff --git a/src/npc/databases/dSlavesDatabase.tw b/src/npc/databases/dSlavesDatabase.tw
index c7ec92e07d4f343a91c22a28b49820bd53e0ab0c..2814330568645165531afafd52933c71d1a5bc19 100644
--- a/src/npc/databases/dSlavesDatabase.tw
+++ b/src/npc/databases/dSlavesDatabase.tw
@@ -88,7 +88,7 @@
 /*Corrected tattoo syntax, added nympho and arrogant -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Kiki", _HS.birthName = "Kiki", _HS.origin = "She is a shinobi, and fanatically loyal to her master.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 20, _HS.devotion = 100, _HS.weight = -20, _HS.height = 175, _HS.nationality = "Japanese", _HS.race = "asian", _HS.origHColor = "black", _HS.override_H_Color = 1, _HS.hColor = "light purple", _HS.pubicHColor = "light purple", _HS.hLength = 10, _HS.hStyle = "short", _HS.boobs = 500, _HS.butt = 3, _HS.buttTat = "tribal patterns", _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.skill.vaginal = 35, _HS.skill.oral = 35, _HS.skill.anal = 35, _HS.skill.whore = 35, _HS.skill.entertainment = 35, _HS.skill.combat = 1, _HS.intelligence = 30, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.behavioralFlaw = "odd", _HS.custom.tattoo = "She has Yakuza-style tattoos across her back.">>
+<<set _HS.slaveName = "Kiki", _HS.birthName = "Kiki", _HS.origin = "She is a shinobi, and fanatically loyal to her master.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 20, _HS.devotion = 100, _HS.weight = -20, _HS.height = 175, _HS.nationality = "Japanese", _HS.race = "asian", _HS.origHColor = "black", _HS.override_H_Color = 1, _HS.hColor = "light purple", _HS.pubicHColor = "light purple", _HS.hLength = 10, _HS.hStyle = "short", _HS.boobs = 500, _HS.butt = 3, _HS.buttTat = "tribal patterns", _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.skill.vaginal = 35, _HS.skill.oral = 35, _HS.skill.anal = 35, _HS.skill.whoring = 35, _HS.skill.entertainment = 35, _HS.skill.combat = 1, _HS.intelligence = 30, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.behavioralFlaw = "odd", _HS.custom.tattoo = "She has Yakuza-style tattoos across her back.">>
 <<set $heroSlaves.push(_HS)>>
 /*shinobi*/
 /*Tweaked devotion upwards, added origin, corrected tattoo syntax, added odd quirk, added whoring and entertaining skill -BoneyM*/
@@ -191,7 +191,7 @@
 /*Changed her to Arabic, corrected tattoo syntax, added entertain skill -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Riya", _HS.birthName = "Riya", _HS.origin = "She grew up in a well-to-do family and discovered her fetish for servitude in college, and she decided to become the world's best slave and slave trainer in one.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 20, _HS.devotion = 40, _HS.weight = -20, _HS.height = 155, _HS.race = "indo-aryan", _HS.eyeColor = "grey", _HS.hColor = "black", _HS.pubicHColor = "black", _HS.skin = "brown", _HS.hStyle = "long", _HS.boobs = 500, _HS.butt = 3, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.clitPiercing = 3, _HS.ovaries = 1, _HS.earPiercing = 1, _HS.skill.oral = 15, _HS.skill.whore = 15, _HS.skill.entertainment = 15, _HS.intelligence = 30, _HS.intelligenceImplant = 30, _HS.attrXX = 80, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "She has a barcode of her identifying information tattooed on her left shoulder.", _HS.career = "a slaver">>
+<<set _HS.slaveName = "Riya", _HS.birthName = "Riya", _HS.origin = "She grew up in a well-to-do family and discovered her fetish for servitude in college, and she decided to become the world's best slave and slave trainer in one.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 20, _HS.devotion = 40, _HS.weight = -20, _HS.height = 155, _HS.race = "indo-aryan", _HS.eyeColor = "grey", _HS.hColor = "black", _HS.pubicHColor = "black", _HS.skin = "brown", _HS.hStyle = "long", _HS.boobs = 500, _HS.butt = 3, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.clitPiercing = 3, _HS.ovaries = 1, _HS.earPiercing = 1, _HS.skill.oral = 15, _HS.skill.whoring = 15, _HS.skill.entertainment = 15, _HS.intelligence = 30, _HS.intelligenceImplant = 30, _HS.attrXX = 80, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "She has a barcode of her identifying information tattooed on her left shoulder.", _HS.career = "a slaver">>
 <<set $heroSlaves.push(_HS)>>
 /*Changed eyes to grey, reduced height and weight, added origin, smart piercing, entertain and whore skill (representing theoretical knowledge from being a trainer), added ear piercings -BoneyM*/
 
@@ -262,7 +262,7 @@
 /*Added barcode tattoo and origin -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Emm", _HS.birthName = "Emm", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 24, _HS.physicalAge = 24, _HS.visualAge = 24, _HS.ovaryAge = 24, _HS.health = 20, _HS.devotion = 40, _HS.weight = 20, _HS.race = "white", _HS.eyeColor = "green", _HS.hColor = "strawberry blonde", _HS.pubicHColor = "strawberry blonde", _HS.skin = "white", _HS.hStyle = "long", _HS.boobs = 650, _HS.butt = 5, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.earPiercing = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 35, _HS.skill.whore = 15, _HS.skill.entertainment = 15, _HS.attrXY = 40, _HS.fetish = "cumslut", _HS.fetishKnown = 1, _HS.custom.desc = "She is friendly, clever, and quick.">>
+<<set _HS.slaveName = "Emm", _HS.birthName = "Emm", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 24, _HS.physicalAge = 24, _HS.visualAge = 24, _HS.ovaryAge = 24, _HS.health = 20, _HS.devotion = 40, _HS.weight = 20, _HS.race = "white", _HS.eyeColor = "green", _HS.hColor = "strawberry blonde", _HS.pubicHColor = "strawberry blonde", _HS.skin = "white", _HS.hStyle = "long", _HS.boobs = 650, _HS.butt = 5, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.earPiercing = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 35, _HS.skill.whoring = 15, _HS.skill.entertainment = 15, _HS.attrXY = 40, _HS.fetish = "cumslut", _HS.fetishKnown = 1, _HS.custom.desc = "She is friendly, clever, and quick.">>
 <<set $heroSlaves.push(_HS)>>
 /*fluctuating weight*/
 /*Increased weight, added entertain and whore skill, added ear piercing, changed eyes -BoneyM*/
@@ -289,7 +289,7 @@
 /*Added origin, increased weight, pierced ears, added customdesc -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Klara", _HS.birthName = "Klara", _HS.origin = "She was forced into slavery and rather brutally broken in.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 20, _HS.devotion = -75, _HS.height = 175, _HS.race = "white", _HS.eyeColor = "blue", _HS.skin = "fair", _HS.hStyle = "long and braided", _HS.boobs = 800, _HS.butt = 4, _HS.vagina = 2, _HS.vaginaLube = 1, _HS.anus = 2, _HS.ovaries = 1, _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whore = 35, _HS.skill.entertainment = 35, _HS.intelligence = -30, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.desc = "'Cum slut' is branded on her right ass cheek, and 'bitch whore' is tattooed on her inner left thigh.">>
+<<set _HS.slaveName = "Klara", _HS.birthName = "Klara", _HS.origin = "She was forced into slavery and rather brutally broken in.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 20, _HS.devotion = -75, _HS.height = 175, _HS.race = "white", _HS.eyeColor = "blue", _HS.skin = "fair", _HS.hStyle = "long and braided", _HS.boobs = 800, _HS.butt = 4, _HS.vagina = 2, _HS.vaginaLube = 1, _HS.anus = 2, _HS.ovaries = 1, _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring = 35, _HS.skill.entertainment = 35, _HS.intelligence = -30, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.desc = "'Cum slut' is branded on her right ass cheek, and 'bitch whore' is tattooed on her inner left thigh.">>
 <<set $heroSlaves.push(_HS)>>
 /*Fixed typo in customdesc, increased whore and entertainskill, changed eye color -BoneyM*/
 
@@ -399,7 +399,7 @@
 /*Corrected birthname (was 'Jasmine'), changed eye color, added customdesc -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Beatrice (No. 525)", _HS.birthName = "Beatrice", _HS.origin = "She comes from old money and sold herself into slavery to satisfy her obsession with the practice, believing her family would buy her back out of slavery later.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 23, _HS.physicalAge = 23, _HS.visualAge = 23, _HS.ovaryAge = 23, _HS.health = 20, _HS.devotion = 30, _HS.height = 155, _HS.race = "white", _HS.eyeColor = "blue-green", _HS.override_H_Color = 1, _HS.override_Brow_H_Color = 1, _HS.override_Arm_H_Color = 1, _HS.override_Pubic_H_Color = 1, _HS.origHColor = "red", _HS.hColor = "bright red", _HS.eyebrowHColor = "red", _HS.pubicHColor = "red", _HS.underArmHColor = "red", _HS.skin = "pure white", _HS.hLength = 80, _HS.hStyle = "long and wavy, and down past her ass", _HS.waist = -55, _HS.boobs = 800, _HS.butt = 4, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.earPiercing = 1, _HS.skill.vaginal = 35, _HS.skill.oral = 35, _HS.skill.anal = 35, _HS.skill.whore = 15, _HS.skill.entertainment = 15, _HS.clothes = "a slave gown", _HS.intelligence = 30, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.behavioralFlaw = "arrogant", _HS.custom.tattoo = "She has a fine, intricate vine-like tattoo around her right ankle.">>
+<<set _HS.slaveName = "Beatrice (No. 525)", _HS.birthName = "Beatrice", _HS.origin = "She comes from old money and sold herself into slavery to satisfy her obsession with the practice, believing her family would buy her back out of slavery later.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 23, _HS.physicalAge = 23, _HS.visualAge = 23, _HS.ovaryAge = 23, _HS.health = 20, _HS.devotion = 30, _HS.height = 155, _HS.race = "white", _HS.eyeColor = "blue-green", _HS.override_H_Color = 1, _HS.override_Brow_H_Color = 1, _HS.override_Arm_H_Color = 1, _HS.override_Pubic_H_Color = 1, _HS.origHColor = "red", _HS.hColor = "bright red", _HS.eyebrowHColor = "red", _HS.pubicHColor = "red", _HS.underArmHColor = "red", _HS.skin = "pure white", _HS.hLength = 80, _HS.hStyle = "long and wavy, and down past her ass", _HS.waist = -55, _HS.boobs = 800, _HS.butt = 4, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.earPiercing = 1, _HS.skill.vaginal = 35, _HS.skill.oral = 35, _HS.skill.anal = 35, _HS.skill.whoring = 15, _HS.skill.entertainment = 15, _HS.clothes = "a slave gown", _HS.intelligence = 30, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.behavioralFlaw = "arrogant", _HS.custom.tattoo = "She has a fine, intricate vine-like tattoo around her right ankle.">>
 <<set $heroSlaves.push(_HS)>>
 /*contraception but breeder naturally, well trained*/
 /*Fetish was 'arrogant', changed it to flaw. Added origin, whore and entertainskill. Changed eye color, corrected tattoo syntax, pierced ears, reduced weight -BoneyM*/
@@ -421,11 +421,11 @@
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "'Terminatrix' Heaven", _HS.birthName = "Gabrielle", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 80, _HS.devotion = 100, _HS.muscles = 50, _HS.height = 190, _HS.race = "black", _HS.hColor = "black", _HS.pubicHColor = "brown", _HS.skin = "black", _HS.hLength = 5, _HS.hStyle = "very short and a poor emulation of a military cut", _HS.boobs = 250, _HS.nipplesPiercing = 1, _HS.butt = 5, _HS.buttTat = "tribal patterns", _HS.lipsPiercing = 1, _HS.lipsTat = "tribal patterns", _HS.vagina = 1, _HS.vaginaLube = 1, _HS.vaginaTat = "tribal patterns", _HS.clit = 2, _HS.anus = 1, _HS.ovaries = 1, _HS.anusTat = "tribal patterns", _HS.earPiercing = 1, _HS.nosePiercing = 1, _HS.eyebrowPiercing = 1, _HS.navelPiercing = 1, _HS.shouldersTat = "tribal patterns", _HS.armsTat = "tribal patterns", _HS.legsTat = "tribal patterns", _HS.stampTat = "tribal patterns", _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whore = 35, _HS.skill.entertainment = 15, _HS.skill.combat = 1, _HS.clothes = "a comfortable bodysuit", _HS.collar = "heavy gold", _HS.shoes = "flats", _HS.intelligence = 20, _HS.intelligenceImplant = 30, _HS.attrXX = 80, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.desc = "Amongst the scars that decorate her body, one in the shape of a heart can be made out on the top of her right hand.">>
+<<set _HS.slaveName = "'Terminatrix' Heaven", _HS.birthName = "Gabrielle", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, _HS.health = 80, _HS.devotion = 100, _HS.muscles = 50, _HS.height = 190, _HS.race = "black", _HS.hColor = "black", _HS.pubicHColor = "brown", _HS.skin = "black", _HS.hLength = 5, _HS.hStyle = "very short and a poor emulation of a military cut", _HS.boobs = 250, _HS.nipplesPiercing = 1, _HS.butt = 5, _HS.buttTat = "tribal patterns", _HS.lipsPiercing = 1, _HS.lipsTat = "tribal patterns", _HS.vagina = 1, _HS.vaginaLube = 1, _HS.vaginaTat = "tribal patterns", _HS.clit = 2, _HS.anus = 1, _HS.ovaries = 1, _HS.anusTat = "tribal patterns", _HS.earPiercing = 1, _HS.nosePiercing = 1, _HS.eyebrowPiercing = 1, _HS.navelPiercing = 1, _HS.shouldersTat = "tribal patterns", _HS.armsTat = "tribal patterns", _HS.legsTat = "tribal patterns", _HS.stampTat = "tribal patterns", _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring = 35, _HS.skill.entertainment = 15, _HS.skill.combat = 1, _HS.clothes = "a comfortable bodysuit", _HS.collar = "heavy gold", _HS.shoes = "flats", _HS.intelligence = 20, _HS.intelligenceImplant = 30, _HS.attrXX = 80, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.desc = "Amongst the scars that decorate her body, one in the shape of a heart can be made out on the top of her right hand.">>
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Lilliana", _HS.birthName = "Zuzanna", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 25, _HS.physicalAge = 25, _HS.visualAge = 25, _HS.ovaryAge = 25, _HS.health = 13, _HS.devotion = 100, _HS.muscles = 100, _HS.height = 190, _HS.eyeColor = "white", _HS.eyes = -2, _HS.override_H_Color = 1, _HS.override_Brow_H_Color = 1, _HS.override_Arm_H_Color = 1, _HS.override_Pubic_H_Color = 1, _HS.hColor = "white with red stripes", _HS.eyebrowHColor = "white", _HS.pubicHColor = "white", _HS.underArmHColor = "white", _HS.override_Skin = 1, _HS.skin = "sun tanned", _HS.hLength = 100, _HS.hStyle = "back in a large ass length braid", _HS.pubicHStyle = "bushy", _HS.waist = -55, _HS.boobs = 400, _HS.nipplesPiercing = 1, _HS.butt = 4, _HS.face = 15, _HS.faceImplant = 65, _HS.lipsPiercing = 1, _HS.tonguePiercing = 1, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.anusTat = "bleached", _HS.makeup = 2, _HS.nails = 1, _HS.earPiercing = 1, _HS.nosePiercing = 1, _HS.eyebrowPiercing = 1, _HS.skill.whore = 15, _HS.skill.entertainment = 15, _HS.skill.combat = 1, _HS.clothes = "nice business attire", _HS.collar = "leather with cowbell", _HS.shoes = "heels", _HS.intelligence = -30, _HS.attrXY = 40, _HS.fetish = "boobs", _HS.fetishKnown = 1>>
+<<set _HS.slaveName = "Lilliana", _HS.birthName = "Zuzanna", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 25, _HS.physicalAge = 25, _HS.visualAge = 25, _HS.ovaryAge = 25, _HS.health = 13, _HS.devotion = 100, _HS.muscles = 100, _HS.height = 190, _HS.eyeColor = "white", _HS.eyes = -2, _HS.override_H_Color = 1, _HS.override_Brow_H_Color = 1, _HS.override_Arm_H_Color = 1, _HS.override_Pubic_H_Color = 1, _HS.hColor = "white with red stripes", _HS.eyebrowHColor = "white", _HS.pubicHColor = "white", _HS.underArmHColor = "white", _HS.override_Skin = 1, _HS.skin = "sun tanned", _HS.hLength = 100, _HS.hStyle = "back in a large ass length braid", _HS.pubicHStyle = "bushy", _HS.waist = -55, _HS.boobs = 400, _HS.nipplesPiercing = 1, _HS.butt = 4, _HS.face = 15, _HS.faceImplant = 65, _HS.lipsPiercing = 1, _HS.tonguePiercing = 1, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.anusTat = "bleached", _HS.makeup = 2, _HS.nails = 1, _HS.earPiercing = 1, _HS.nosePiercing = 1, _HS.eyebrowPiercing = 1, _HS.skill.whoring = 15, _HS.skill.entertainment = 15, _HS.skill.combat = 1, _HS.clothes = "nice business attire", _HS.collar = "leather with cowbell", _HS.shoes = "heels", _HS.intelligence = -30, _HS.attrXY = 40, _HS.fetish = "boobs", _HS.fetishKnown = 1>>
 <<set $heroSlaves.push(_HS)>>
 /*Blind*/
 
@@ -443,15 +443,15 @@
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "'Top' Lillium", _HS.birthName = "Sarah", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 42, _HS.physicalAge = 42, _HS.visualAge = 42, _HS.ovaryAge = 42, _HS.health = 90, _HS.devotion = 100, _HS.muscles = 20, _HS.height = 190, _HS.eyeColor = "green", _HS.origHColor = "red", _HS.override_H_Color = 1, _HS.override_Brow_H_Color = 1, _HS.override_Arm_H_Color = 1, _HS.override_Pubic_H_Color = 1, _HS.hColor = "deep red", _HS.eyebrowHColor = "red", _HS.pubicHColor = "red", _HS.underArmHColor = "red", _HS.skin = "fair", _HS.hLength = 20, _HS.hStyle = "short and pleasantly frames her face", _HS.waist = -55, _HS.boobs = 900, _HS.butt = 4, _HS.vagina = 2, _HS.vaginaLube = 1, _HS.clitPiercing = 3, _HS.clitSetting = "all", _HS.anus = 2, _HS.ovaries = 1, _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whore = 100, _HS.skill.entertainment = 100, _HS.skill.combat = 1, _HS.clothes = "nice business attire", _HS.collar = "heavy gold", _HS.shoes = "flats", _HS.energy = 100, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "She has a small, grinning harlequin tattoo on her inner thigh.", _HS.custom.desc = "In place of her left hand's pinkie finger is a large pink scar that crosses the entire back of her hand.">>
+<<set _HS.slaveName = "'Top' Lillium", _HS.birthName = "Sarah", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 42, _HS.physicalAge = 42, _HS.visualAge = 42, _HS.ovaryAge = 42, _HS.health = 90, _HS.devotion = 100, _HS.muscles = 20, _HS.height = 190, _HS.eyeColor = "green", _HS.origHColor = "red", _HS.override_H_Color = 1, _HS.override_Brow_H_Color = 1, _HS.override_Arm_H_Color = 1, _HS.override_Pubic_H_Color = 1, _HS.hColor = "deep red", _HS.eyebrowHColor = "red", _HS.pubicHColor = "red", _HS.underArmHColor = "red", _HS.skin = "fair", _HS.hLength = 20, _HS.hStyle = "short and pleasantly frames her face", _HS.waist = -55, _HS.boobs = 900, _HS.butt = 4, _HS.vagina = 2, _HS.vaginaLube = 1, _HS.clitPiercing = 3, _HS.clitSetting = "all", _HS.anus = 2, _HS.ovaries = 1, _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring = 100, _HS.skill.entertainment = 100, _HS.skill.combat = 1, _HS.clothes = "nice business attire", _HS.collar = "heavy gold", _HS.shoes = "flats", _HS.energy = 100, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "She has a small, grinning harlequin tattoo on her inner thigh.", _HS.custom.desc = "In place of her left hand's pinkie finger is a large pink scar that crosses the entire back of her hand.">>
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Cammy", _HS.birthName = "Viktoriya", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 27, _HS.physicalAge = 27, _HS.visualAge = 27, _HS.ovaryAge = 27, _HS.health = 80, _HS.devotion = 70, _HS.muscles = 75, _HS.height = 145, _HS.race = "white", _HS.eyeColor = "blue", _HS.hColor = "blonde", _HS.pubicHColor = "blonde", _HS.skin = "pale", _HS.hStyle = "tied back into two long braids", _HS.boobs = 800, _HS.butt = 2.5, _HS.face = 15, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.skill.vaginal = 35, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whore = 15, _HS.skill.entertainment = 15, _HS.clothes = "a comfortable bodysuit", _HS.collar = "pretty jewelry", _HS.shoes = "heels", _HS.attrXY = 40, _HS.fetish = "cumslut", _HS.custom.desc = "She has a long horizontal scar on her left cheek.">>
+<<set _HS.slaveName = "Cammy", _HS.birthName = "Viktoriya", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 27, _HS.physicalAge = 27, _HS.visualAge = 27, _HS.ovaryAge = 27, _HS.health = 80, _HS.devotion = 70, _HS.muscles = 75, _HS.height = 145, _HS.race = "white", _HS.eyeColor = "blue", _HS.hColor = "blonde", _HS.pubicHColor = "blonde", _HS.skin = "pale", _HS.hStyle = "tied back into two long braids", _HS.boobs = 800, _HS.butt = 2.5, _HS.face = 15, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.skill.vaginal = 35, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring = 15, _HS.skill.entertainment = 15, _HS.clothes = "a comfortable bodysuit", _HS.collar = "pretty jewelry", _HS.shoes = "heels", _HS.attrXY = 40, _HS.fetish = "cumslut", _HS.custom.desc = "She has a long horizontal scar on her left cheek.">>
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Sheena", _HS.birthName = "Penelope", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 23, _HS.physicalAge = 23, _HS.visualAge = 23, _HS.ovaryAge = 23, _HS.health = 80, _HS.devotion = 90, _HS.height = 155, _HS.override_H_Color = 1, _HS.override_Brow_H_Color = 1, _HS.override_Arm_H_Color = 1, _HS.override_Pubic_H_Color = 1, _HS.hColor = "black with deep red highlights", _HS.eyebrowHColor = "red", _HS.pubicHColor = "red", _HS.underArmHColor = "red", _HS.skin = "pale", _HS.hStyle = "long and disheveled", _HS.waist = -55, _HS.boobs = 500, _HS.nipplesPiercing = 1, _HS.butt = 3, _HS.lipsPiercing = 1, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.clitPiercing = 1, _HS.clitSetting = "anal", _HS.anus = 1, _HS.ovaries = 1, _HS.anusTat = "bleached", _HS.makeup = 2, _HS.nails = 2, _HS.earPiercing = 2, _HS.nosePiercing = 1, _HS.navelPiercing = 1, _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 35, _HS.skill.whore = 15, _HS.skill.entertainment = 15, _HS.clothes = "a slutty outfit", _HS.intelligence = -30, _HS.attrXY = 40, _HS.fetish = "buttslut", _HS.fetishKnown = 1, _HS.custom.tattoo = "She has been heavily tattooed, with her chest, thighs and both arms covered in various punk-style pieces. The biggest and most impressive piece is the large logo of a legendary late 20th century punk band.">>
+<<set _HS.slaveName = "Sheena", _HS.birthName = "Penelope", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 23, _HS.physicalAge = 23, _HS.visualAge = 23, _HS.ovaryAge = 23, _HS.health = 80, _HS.devotion = 90, _HS.height = 155, _HS.override_H_Color = 1, _HS.override_Brow_H_Color = 1, _HS.override_Arm_H_Color = 1, _HS.override_Pubic_H_Color = 1, _HS.hColor = "black with deep red highlights", _HS.eyebrowHColor = "red", _HS.pubicHColor = "red", _HS.underArmHColor = "red", _HS.skin = "pale", _HS.hStyle = "long and disheveled", _HS.waist = -55, _HS.boobs = 500, _HS.nipplesPiercing = 1, _HS.butt = 3, _HS.lipsPiercing = 1, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.clitPiercing = 1, _HS.clitSetting = "anal", _HS.anus = 1, _HS.ovaries = 1, _HS.anusTat = "bleached", _HS.makeup = 2, _HS.nails = 2, _HS.earPiercing = 2, _HS.nosePiercing = 1, _HS.navelPiercing = 1, _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 35, _HS.skill.whoring = 15, _HS.skill.entertainment = 15, _HS.clothes = "a slutty outfit", _HS.intelligence = -30, _HS.attrXY = 40, _HS.fetish = "buttslut", _HS.fetishKnown = 1, _HS.custom.tattoo = "She has been heavily tattooed, with her chest, thighs and both arms covered in various punk-style pieces. The biggest and most impressive piece is the large logo of a legendary late 20th century punk band.">>
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
@@ -459,7 +459,7 @@
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Sakura", _HS.birthName = "Sakura", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.health = 100, _HS.devotion = 100, _HS.muscles = 20, _HS.race = "asian", _HS.skin = "dark", _HS.hLength = 25, _HS.hStyle = "short and held back by a white bandana", _HS.boobs = 600, _HS.butt = 4, _HS.faceImplant = 15, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.clit = 1, _HS.clitPiercing = 3, _HS.clitSetting = "humiliation", _HS.anus = 1, _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.whore = 100, _HS.skill.entertainment = 100, _HS.skill.combat = 1, _HS.clothes = "a slutty outfit", _HS.collar = "pretty jewelry", _HS.shoes = "heels", _HS.attrXY = 40, _HS.fetish = "humiliation", _HS.fetishKnown = 1, _HS.custom.desc = "She is an enthusiastic high school graduate, eager to make her teacher proud by becoming the greatest slave known to any owner.", _HS.career = "a student">>
+<<set _HS.slaveName = "Sakura", _HS.birthName = "Sakura", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.health = 100, _HS.devotion = 100, _HS.muscles = 20, _HS.race = "asian", _HS.skin = "dark", _HS.hLength = 25, _HS.hStyle = "short and held back by a white bandana", _HS.boobs = 600, _HS.butt = 4, _HS.faceImplant = 15, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.clit = 1, _HS.clitPiercing = 3, _HS.clitSetting = "humiliation", _HS.anus = 1, _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.whoring = 100, _HS.skill.entertainment = 100, _HS.skill.combat = 1, _HS.clothes = "a slutty outfit", _HS.collar = "pretty jewelry", _HS.shoes = "heels", _HS.attrXY = 40, _HS.fetish = "humiliation", _HS.fetishKnown = 1, _HS.custom.desc = "She is an enthusiastic high school graduate, eager to make her teacher proud by becoming the greatest slave known to any owner.", _HS.career = "a student">>
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
@@ -467,17 +467,17 @@
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Caroline", _HS.birthName = "Carl", _HS.ID = _i++, _HS.prestige = 1, _HS.prestigeDesc = "She was once a rising free cities politician who argued for compulsory female enslavement, but she became an addict, fell into debt, and was subsequently enslaved.", _HS.birthWeek = random(0,51), _HS.genes = "XY", _HS.actualAge = 44, _HS.physicalAge = 44, _HS.visualAge = 44, _HS.ovaryAge = 44, _HS.health = 60, _HS.devotion = 90, _HS.height = 145, _HS.heightImplant = -1, _HS.race = "white", _HS.nationality = "French", _HS.eyeColor = "blue", _HS.hColor = "blonde", _HS.pubicHColor = "blonde", _HS.override_Skin = 1, _HS.skin = "spray tanned", _HS.hLength = 70, _HS.hStyle = "ass-length", _HS.waist = -55, _HS.heels = 1, _HS.boobs = 1100, _HS.boobsImplant = 400, _HS.nipplesPiercing = 1, _HS.areolae = 1, _HS.butt = 4, _HS.buttImplant = 2, _HS.face = 55, _HS.faceImplant = 65, _HS.lips = 55, _HS.lipsImplant = 2, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.preg = -2, _HS.anus = 2, _HS.anusTat = "bleached", _HS.makeup = 3, _HS.nails = 1, _HS.earPiercing = 1, _HS.navelPiercing = 1, _HS.legsTat = "degradation", _HS.stampTat = "degradation", _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whore = 15, _HS.skill.entertainment = 35, _HS.drugs = "breast injections", _HS.addict = 1, _HS.clothes = "slutty jewelry", _HS.collar = "tight steel", _HS.intelligence = -90, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetish = "humiliation", _HS.behavioralFlaw = "arrogant", _HS.custom.tattoo = "She has a tattoo down her left arm, which reads 'Once a tall, muscular, handsome man with a big dick and big balls.'", _HS.custom.desc = "Since becoming a slave she has been turned into a little bimbo.">>
+<<set _HS.slaveName = "Caroline", _HS.birthName = "Carl", _HS.ID = _i++, _HS.prestige = 1, _HS.prestigeDesc = "She was once a rising free cities politician who argued for compulsory female enslavement, but she became an addict, fell into debt, and was subsequently enslaved.", _HS.birthWeek = random(0,51), _HS.genes = "XY", _HS.actualAge = 44, _HS.physicalAge = 44, _HS.visualAge = 44, _HS.ovaryAge = 44, _HS.health = 60, _HS.devotion = 90, _HS.height = 145, _HS.heightImplant = -1, _HS.race = "white", _HS.nationality = "French", _HS.eyeColor = "blue", _HS.hColor = "blonde", _HS.pubicHColor = "blonde", _HS.override_Skin = 1, _HS.skin = "spray tanned", _HS.hLength = 70, _HS.hStyle = "ass-length", _HS.waist = -55, _HS.heels = 1, _HS.boobs = 1100, _HS.boobsImplant = 400, _HS.nipplesPiercing = 1, _HS.areolae = 1, _HS.butt = 4, _HS.buttImplant = 2, _HS.face = 55, _HS.faceImplant = 65, _HS.lips = 55, _HS.lipsImplant = 2, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.preg = -2, _HS.anus = 2, _HS.anusTat = "bleached", _HS.makeup = 3, _HS.nails = 1, _HS.earPiercing = 1, _HS.navelPiercing = 1, _HS.legsTat = "degradation", _HS.stampTat = "degradation", _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring = 15, _HS.skill.entertainment = 35, _HS.drugs = "breast injections", _HS.addict = 1, _HS.clothes = "slutty jewelry", _HS.collar = "tight steel", _HS.intelligence = -90, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetish = "humiliation", _HS.behavioralFlaw = "arrogant", _HS.custom.tattoo = "She has a tattoo down her left arm, which reads 'Once a tall, muscular, handsome man with a big dick and big balls.'", _HS.custom.desc = "Since becoming a slave she has been turned into a little bimbo.">>
 <<set $heroSlaves.push(_HS)>>
 
 <<if $seePreg != 0>>
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "'Milkmaid' Megan", _HS.birthName = "Megan", _HS.origin = "She was sold to you from the public slave market, and was probably kidnapped or otherwise forced into slavery.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 34, _HS.physicalAge = 34, _HS.visualAge = 34, _HS.ovaryAge = 34, _HS.health = 100, _HS.devotion = 100, _HS.nationality = "American", _HS.skin = "light", _HS.hStyle = "long", _HS.pubicHStyle = "bushy", _HS.waist = -55, _HS.boobs = 1350, _HS.lactation = 1, _HS.lactationDuration = 4, _HS.butt = 3, _HS.vagina = 2, _HS.vaginaLube = 1, _HS.vaginaPiercing = 1, _HS.preg = 27, _HS.pregType = 1, _HS.pregWeek = 27, _HS.pregKnown = 1, _HS.belly = 5000, _HS.bellyPreg = 5000, _HS.counter.births = 1, _HS.counter.birthsTotal = 1, _HS.anus = 3, _HS.ovaries = 1, _HS.brand = "SLAVE", _HS.brandLocation = "buttocks", _HS.earPiercing = 1, _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whore = 100, _HS.skill.entertainment = 35, _HS.skill.combat = 0, _HS.collar = "heavy gold", _HS.shoes = "flats", _HS.energy = 100, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.face = 0, _HS.intelligence = 0>>
+<<set _HS.slaveName = "'Milkmaid' Megan", _HS.birthName = "Megan", _HS.origin = "She was sold to you from the public slave market, and was probably kidnapped or otherwise forced into slavery.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 34, _HS.physicalAge = 34, _HS.visualAge = 34, _HS.ovaryAge = 34, _HS.health = 100, _HS.devotion = 100, _HS.nationality = "American", _HS.skin = "light", _HS.hStyle = "long", _HS.pubicHStyle = "bushy", _HS.waist = -55, _HS.boobs = 1350, _HS.lactation = 1, _HS.lactationDuration = 4, _HS.butt = 3, _HS.vagina = 2, _HS.vaginaLube = 1, _HS.vaginaPiercing = 1, _HS.preg = 27, _HS.pregType = 1, _HS.pregWeek = 27, _HS.pregKnown = 1, _HS.belly = 5000, _HS.bellyPreg = 5000, _HS.counter.births = 1, _HS.counter.birthsTotal = 1, _HS.anus = 3, _HS.ovaries = 1, _HS.brand = "SLAVE", _HS.brandLocation = "buttocks", _HS.earPiercing = 1, _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring =100, _HS.skill.entertainment = 35, _HS.skill.combat = 0, _HS.collar = "heavy gold", _HS.shoes = "flats", _HS.energy = 100, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.face = 0, _HS.intelligence = 0>>
 <<set $heroSlaves.push(_HS)>>
 <</if>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Horsepussy", _HS.birthName = "Amber", _HS.origin = "She was sold to you from the public slave market, and was probably kidnapped or otherwise forced into slavery.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 35, _HS.physicalAge = 35, _HS.visualAge = 35, _HS.ovaryAge = 35, _HS.health = 80, _HS.devotion = 55.7, _HS.height = 170, _HS.race = "white", _HS.nationality = "American", _HS.eyeColor = "blue", _HS.skin = "pale", _HS.hLength = 10, _HS.boobs = 500, _HS.butt = 5, _HS.vagina = 3, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.clitPiercing = 3, _HS.clitSetting = "vanilla", _HS.anus = 3, _HS.ovaries = 1, _HS.anusPiercing = 1, _HS.makeup = 1, _HS.brand = "SLAVE", _HS.brandLocation = "buttocks", _HS.earPiercing = 1, _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whore = 100, _HS.skill.entertainment = 35, _HS.collar = "heavy gold", _HS.shoes = "heels", _HS.intelligence = 96, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "Her nickname, 'Horsepussy,' is tattooed on her forehead.", _HS.custom.desc = "Her pussy has been extensively surgically altered. Her labia are large and puffy, sticking out nearly an inch from her crotch. Her cunt is exquisitely pink at the center, but her large labia are dark at the edges, almost black.", _HS.labia = 3>>
+<<set _HS.slaveName = "Horsepussy", _HS.birthName = "Amber", _HS.origin = "She was sold to you from the public slave market, and was probably kidnapped or otherwise forced into slavery.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 35, _HS.physicalAge = 35, _HS.visualAge = 35, _HS.ovaryAge = 35, _HS.health = 80, _HS.devotion = 55.7, _HS.height = 170, _HS.race = "white", _HS.nationality = "American", _HS.eyeColor = "blue", _HS.skin = "pale", _HS.hLength = 10, _HS.boobs = 500, _HS.butt = 5, _HS.vagina = 3, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.clitPiercing = 3, _HS.clitSetting = "vanilla", _HS.anus = 3, _HS.ovaries = 1, _HS.anusPiercing = 1, _HS.makeup = 1, _HS.brand = "SLAVE", _HS.brandLocation = "buttocks", _HS.earPiercing = 1, _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring =100, _HS.skill.entertainment = 35, _HS.collar = "heavy gold", _HS.shoes = "heels", _HS.intelligence = 96, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "Her nickname, 'Horsepussy,' is tattooed on her forehead.", _HS.custom.desc = "Her pussy has been extensively surgically altered. Her labia are large and puffy, sticking out nearly an inch from her crotch. Her cunt is exquisitely pink at the center, but her large labia are dark at the edges, almost black.", _HS.labia = 3>>
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
@@ -489,15 +489,15 @@
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "'Virago' Kissa", _HS.birthName = "", _HS.birthSurname = "", _HS.origin = "In spite of the great demand for her kind, she has apparently eluded enslavement until recently.", _HS.career = "a wanderer", _HS.ID = _i++, _HS.prestige = 1, _HS.prestigeDesc = "She is a natural albino.", _HS.birthWeek = random(0,51), _HS.health = 100, _HS.devotion = 100, _HS.muscles = 50, _HS.height = 190, _HS.nationality = "Ugandan", _HS.race = "black", _HS.eyeColor = "pale grey", _HS.hColor = "white", _HS.pubicHColor = "white", _HS.skin = "extremely pale", _HS.hLength = 100, _HS.hStyle = "extremely long and bushy", _HS.pubicHStyle = "bushy", _HS.waist = -55, _HS.boobs = 600, _HS.face = 55, _HS.lips = 35, _HS.vaginaLube = 1, _HS.clitPiercing = 3, _HS.clitSetting = "oral", _HS.ovaries = 1, _HS.anusTat = "bleached", _HS.skill.oral = 100, _HS.skill.whore = 100, _HS.skill.entertainment = 100, _HS.skill.combat = 3, _HS.livingRules = "luxurious", _HS.speechRules = "permissive", _HS.releaseRules = "permissive", _HS.collar = "pretty jewelry", _HS.shoes = "flats", _HS.intelligence = 100, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetish = "cumslut", _HS.fetishKnown = 1, _HS.behavioralFlaw = "odd", _HS.geneticQuirks = {albinism: 2}, _HS.custom.tattoo = "Her entire body is tattooed with a detailed map of her arteries which, combined with her albinism, gives her a quasi-translucent quality.", _HS.custom.desc = "Her eyes are unsettling; though her irises are a pale grey color, in some lights the whole eye takes on a red cast.">>
+<<set _HS.slaveName = "'Virago' Kissa", _HS.birthName = "", _HS.birthSurname = "", _HS.origin = "In spite of the great demand for her kind, she has apparently eluded enslavement until recently.", _HS.career = "a wanderer", _HS.ID = _i++, _HS.prestige = 1, _HS.prestigeDesc = "She is a natural albino.", _HS.birthWeek = random(0,51), _HS.health = 100, _HS.devotion = 100, _HS.muscles = 50, _HS.height = 190, _HS.nationality = "Ugandan", _HS.race = "black", _HS.eyeColor = "pale grey", _HS.hColor = "white", _HS.pubicHColor = "white", _HS.skin = "extremely pale", _HS.hLength = 100, _HS.hStyle = "extremely long and bushy", _HS.pubicHStyle = "bushy", _HS.waist = -55, _HS.boobs = 600, _HS.face = 55, _HS.lips = 35, _HS.vaginaLube = 1, _HS.clitPiercing = 3, _HS.clitSetting = "oral", _HS.ovaries = 1, _HS.anusTat = "bleached", _HS.skill.oral = 100, _HS.skill.whoring =100, _HS.skill.entertainment = 100, _HS.skill.combat = 3, _HS.livingRules = "luxurious", _HS.speechRules = "permissive", _HS.releaseRules = "permissive", _HS.collar = "pretty jewelry", _HS.shoes = "flats", _HS.intelligence = 100, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetish = "cumslut", _HS.fetishKnown = 1, _HS.behavioralFlaw = "odd", _HS.geneticQuirks = {albinism: 2}, _HS.custom.tattoo = "Her entire body is tattooed with a detailed map of her arteries which, combined with her albinism, gives her a quasi-translucent quality.", _HS.custom.desc = "Her eyes are unsettling; though her irises are a pale grey color, in some lights the whole eye takes on a red cast.">>
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Annabelle", _HS.birthName = "Annabelle", _HS.origin = "She came to be a slave not long after fleeing farm life for the Free Cities.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.health = 20, _HS.devotion = -65, _HS.height = 155, _HS.nationality = "American", _HS.race = "white", _HS.eyeColor = "blue", _HS.hColor = "blonde", _HS.pubicHColor = "blonde", _HS.override_Skin = 1, _HS.skin = "sun tanned", _HS.hStyle = "braided into pigtails", _HS.pubicHStyle = "bushy", _HS.waist = -55, _HS.boobs = 500, _HS.butt = 4, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.skill.oral = 15, _HS.skill.anal = 15, _HS.skill.whore = 15, _HS.attrXY = 40, _HS.behavioralFlaw = "hates women", _HS.custom.desc = "The pale skin within her tan lines is lightly freckled.", _HS.markings = "freckles">>
+<<set _HS.slaveName = "Annabelle", _HS.birthName = "Annabelle", _HS.origin = "She came to be a slave not long after fleeing farm life for the Free Cities.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.health = 20, _HS.devotion = -65, _HS.height = 155, _HS.nationality = "American", _HS.race = "white", _HS.eyeColor = "blue", _HS.hColor = "blonde", _HS.pubicHColor = "blonde", _HS.override_Skin = 1, _HS.skin = "sun tanned", _HS.hStyle = "braided into pigtails", _HS.pubicHStyle = "bushy", _HS.waist = -55, _HS.boobs = 500, _HS.butt = 4, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.skill.oral = 15, _HS.skill.anal = 15, _HS.skill.whoring = 15, _HS.attrXY = 40, _HS.behavioralFlaw = "hates women", _HS.custom.desc = "The pale skin within her tan lines is lightly freckled.", _HS.markings = "freckles">>
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "'Vampire' Elvira", _HS.birthName = "Elvira", _HS.career = "a service worker", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 20, _HS.physicalAge = 20, _HS.visualAge = 20, _HS.ovaryAge = 20, _HS.health = 90, _HS.devotion = 100, _HS.height = 145, _HS.nationality = "Swedish", _HS.race = "white", _HS.eyeColor = "blue", _HS.hColor = "red", _HS.pubicHColor = "red", _HS.override_Skin = 1, _HS.skin = "sun tanned", _HS.hLength = 85, _HS.hStyle = "ass-length", _HS.waist = -55, _HS.boobs = 650, _HS.boobsImplant = 200, _HS.nipplesPiercing = 2, _HS.butt = 3, _HS.buttImplant = 1, _HS.face = 55, _HS.faceImplant = 15, _HS.lips = 35, _HS.tonguePiercing = 1, _HS.vagina = 3, _HS.vaginaLube = 1, _HS.clitPiercing = 1, _HS.anus = 3, _HS.ovaries = 1, _HS.brand = "your initials", _HS.brandLocation = "buttocks", _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whore = 100, _HS.skill.entertainment = 15, _HS.livingRules = "luxurious", _HS.clothes = "choosing her own clothes", _HS.collar = "heavy gold", _HS.intelligenceImplant = 30, _HS.energy = 100, _HS.attrXY = 40, _HS.fetishKnown = 1>>
+<<set _HS.slaveName = "'Vampire' Elvira", _HS.birthName = "Elvira", _HS.career = "a service worker", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 20, _HS.physicalAge = 20, _HS.visualAge = 20, _HS.ovaryAge = 20, _HS.health = 90, _HS.devotion = 100, _HS.height = 145, _HS.nationality = "Swedish", _HS.race = "white", _HS.eyeColor = "blue", _HS.hColor = "red", _HS.pubicHColor = "red", _HS.override_Skin = 1, _HS.skin = "sun tanned", _HS.hLength = 85, _HS.hStyle = "ass-length", _HS.waist = -55, _HS.boobs = 650, _HS.boobsImplant = 200, _HS.nipplesPiercing = 2, _HS.butt = 3, _HS.buttImplant = 1, _HS.face = 55, _HS.faceImplant = 15, _HS.lips = 35, _HS.tonguePiercing = 1, _HS.vagina = 3, _HS.vaginaLube = 1, _HS.clitPiercing = 1, _HS.anus = 3, _HS.ovaries = 1, _HS.brand = "your initials", _HS.brandLocation = "buttocks", _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring =100, _HS.skill.entertainment = 15, _HS.livingRules = "luxurious", _HS.clothes = "choosing her own clothes", _HS.collar = "heavy gold", _HS.intelligenceImplant = 30, _HS.energy = 100, _HS.attrXY = 40, _HS.fetishKnown = 1>>
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
@@ -532,16 +532,16 @@
 
 <<if $seePreg != 0>>
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "'Fucknugget' Pillow", _HS.birthName = "Anika", _HS.origin = "She sold herself into slavery to escape life on the streets.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 37, _HS.physicalAge = 37, _HS.visualAge = 37, _HS.ovaryAge = 37, _HS.health = 80, _HS.devotion = 100, _HS.weight = 40, _HS.origRace = "white", _HS.override_Race = 1, _HS.race = "latina", _HS.eyeColor = "blue", _HS.hColor = "red", _HS.pubicHColor = "red", _HS.hStyle = "long", _HS.waist = -100, _HS.amp = 1, _HS.boobs = 6260, _HS.boobsImplant = 4200, _HS.nipplesPiercing = 2, _HS.areolae = 3, _HS.boobsTat = "flowers", _HS.lactation = 2, _HS.lactationDuration = 2, _HS.butt = 12, _HS.buttImplant = 1, _HS.buttTat = "flowers", _HS.face = 55, _HS.faceImplant = 15, _HS.lips = 55, _HS.lipsImplant = 10, _HS.lipsPiercing = 2, _HS.lipsTat = "flowers", _HS.tonguePiercing = 2, _HS.vagina = 3, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.vaginaTat = "flowers", _HS.preg = 37, _HS.pregType = 1, _HS.pregWeek = 37, _HS.pregKnown = 1, _HS.belly = 13000, _HS.bellyPreg = 13000, _HS.counter.births = 2, _HS.counter.birthsTotal = 2, _HS.clitPiercing = 3, _HS.clitSetting = "boobs", _HS.anus = 2, _HS.ovaries = 1, _HS.anusPiercing = 2, _HS.anusTat = "flowers", _HS.makeup = 3, _HS.earPiercing = 2, _HS.nosePiercing = 2, _HS.eyebrowPiercing = 2, _HS.navelPiercing = 2, _HS.shouldersTat = "advertisements", _HS.stampTat = "flowers", _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whore = 15, _HS.aphrodisiacs = 1, _HS.addict = 99, _HS.clothes = "restrictive latex", _HS.collar = "leather with cowbell", _HS.intelligence = -70, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetish = "boobs", _HS.fetishKnown = 1>>
+<<set _HS.slaveName = "'Fucknugget' Pillow", _HS.birthName = "Anika", _HS.origin = "She sold herself into slavery to escape life on the streets.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 37, _HS.physicalAge = 37, _HS.visualAge = 37, _HS.ovaryAge = 37, _HS.health = 80, _HS.devotion = 100, _HS.weight = 40, _HS.origRace = "white", _HS.override_Race = 1, _HS.race = "latina", _HS.eyeColor = "blue", _HS.hColor = "red", _HS.pubicHColor = "red", _HS.hStyle = "long", _HS.waist = -100, _HS.amp = 1, _HS.boobs = 6260, _HS.boobsImplant = 4200, _HS.nipplesPiercing = 2, _HS.areolae = 3, _HS.boobsTat = "flowers", _HS.lactation = 2, _HS.lactationDuration = 2, _HS.butt = 12, _HS.buttImplant = 1, _HS.buttTat = "flowers", _HS.face = 55, _HS.faceImplant = 15, _HS.lips = 55, _HS.lipsImplant = 10, _HS.lipsPiercing = 2, _HS.lipsTat = "flowers", _HS.tonguePiercing = 2, _HS.vagina = 3, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.vaginaTat = "flowers", _HS.preg = 37, _HS.pregType = 1, _HS.pregWeek = 37, _HS.pregKnown = 1, _HS.belly = 13000, _HS.bellyPreg = 13000, _HS.counter.births = 2, _HS.counter.birthsTotal = 2, _HS.clitPiercing = 3, _HS.clitSetting = "boobs", _HS.anus = 2, _HS.ovaries = 1, _HS.anusPiercing = 2, _HS.anusTat = "flowers", _HS.makeup = 3, _HS.earPiercing = 2, _HS.nosePiercing = 2, _HS.eyebrowPiercing = 2, _HS.navelPiercing = 2, _HS.shouldersTat = "advertisements", _HS.stampTat = "flowers", _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring = 15, _HS.aphrodisiacs = 1, _HS.addict = 99, _HS.clothes = "restrictive latex", _HS.collar = "leather with cowbell", _HS.intelligence = -70, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetish = "boobs", _HS.fetishKnown = 1>>
 <<set $heroSlaves.push(_HS)>>
 <</if>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "'DoL Toy' Allie", _HS.birthName = "Aliana", _HS.origin = "She is an enslaved member of an anti-slavery extremist group.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 33, _HS.physicalAge = 33, _HS.visualAge = 33, _HS.ovaryAge = 33, _HS.health = 80, _HS.devotion = 65, _HS.height = 155, _HS.nationality = "Mexican", _HS.race = "latina", _HS.override_H_Color = 1, _HS.hColor = "raven black with red highlights", _HS.skin = "brown", _HS.hLength = 10, _HS.waist = -55, _HS.boobs = 700, _HS.butt = 3, _HS.face = 15, _HS.lips = 35, _HS.lipsTat = "permanent makeup", _HS.vagina = 2, _HS.vaginaLube = 1, _HS.bellyAccessory = "an extreme corset", _HS.clitPiercing = 3, _HS.clitSetting = "submissive", _HS.anus = 2, _HS.ovaries = 1, _HS.stampTat = "degradation", _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whore = 35, _HS.skill.entertainment = 15, _HS.collar = "heavy gold", _HS.shoes = "heels", _HS.intelligence = 25, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetish = "submissive", _HS.fetishKnown = 1, _HS.custom.tattoo = "Her left butt cheek is tattooed with a small shield bearing the words 'Daughter of Liberty' with a large red 'not' symbol added over it.">>
+<<set _HS.slaveName = "'DoL Toy' Allie", _HS.birthName = "Aliana", _HS.origin = "She is an enslaved member of an anti-slavery extremist group.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 33, _HS.physicalAge = 33, _HS.visualAge = 33, _HS.ovaryAge = 33, _HS.health = 80, _HS.devotion = 65, _HS.height = 155, _HS.nationality = "Mexican", _HS.race = "latina", _HS.override_H_Color = 1, _HS.hColor = "raven black with red highlights", _HS.skin = "brown", _HS.hLength = 10, _HS.waist = -55, _HS.boobs = 700, _HS.butt = 3, _HS.face = 15, _HS.lips = 35, _HS.lipsTat = "permanent makeup", _HS.vagina = 2, _HS.vaginaLube = 1, _HS.bellyAccessory = "an extreme corset", _HS.clitPiercing = 3, _HS.clitSetting = "submissive", _HS.anus = 2, _HS.ovaries = 1, _HS.stampTat = "degradation", _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring =35, _HS.skill.entertainment = 15, _HS.collar = "heavy gold", _HS.shoes = "heels", _HS.intelligence = 25, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetish = "submissive", _HS.fetishKnown = 1, _HS.custom.tattoo = "Her left butt cheek is tattooed with a small shield bearing the words 'Daughter of Liberty' with a large red 'not' symbol added over it.">>
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "'Onahole' Lian the Liberty Whore", _HS.birthName = "Lian", _HS.origin = "She is an enslaved member of an anti-slavery extremist group.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 27, _HS.physicalAge = 27, _HS.visualAge = 27, _HS.ovaryAge = 27, _HS.health = -70, _HS.devotion = 100, _HS.muscles = 20, _HS.nationality = "Chinese", _HS.race = "asian", _HS.hColor = "black", _HS.pubicHColor = "black", _HS.skin = "pale", _HS.hLength = 0, _HS.hStyle = "shaved bald", _HS.waist = -100, _HS.amp = 1, _HS.boobs = 2000, _HS.boobsImplant = 600, _HS.areolae = 2, _HS.butt = 8, _HS.face = 55, _HS.faceImplant = 65, _HS.vagina = 3, _HS.vaginaLube = 1, _HS.clit = 2, _HS.anus = 2, _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whore = 100, _HS.collar = "shock punishment", _HS.shoes = "flats", _HS.intelligence = 25, _HS.intelligenceImplant = 30, _HS.energy = 100, _HS.attrXY = 40, _HS.fetishKnown = 1>>
+<<set _HS.slaveName = "'Onahole' Lian the Liberty Whore", _HS.birthName = "Lian", _HS.origin = "She is an enslaved member of an anti-slavery extremist group.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 27, _HS.physicalAge = 27, _HS.visualAge = 27, _HS.ovaryAge = 27, _HS.health = -70, _HS.devotion = 100, _HS.muscles = 20, _HS.nationality = "Chinese", _HS.race = "asian", _HS.hColor = "black", _HS.pubicHColor = "black", _HS.skin = "pale", _HS.hLength = 0, _HS.hStyle = "shaved bald", _HS.waist = -100, _HS.amp = 1, _HS.boobs = 2000, _HS.boobsImplant = 600, _HS.areolae = 2, _HS.butt = 8, _HS.face = 55, _HS.faceImplant = 65, _HS.vagina = 3, _HS.vaginaLube = 1, _HS.clit = 2, _HS.anus = 2, _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring =100, _HS.collar = "shock punishment", _HS.shoes = "flats", _HS.intelligence = 25, _HS.intelligenceImplant = 30, _HS.energy = 100, _HS.attrXY = 40, _HS.fetishKnown = 1>>
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
diff --git a/src/npc/databases/ddSlavesDatabase.tw b/src/npc/databases/ddSlavesDatabase.tw
index 77f2668539680da7d32cdeaa83a7dc607c512dd0..591b2c40ef706f41a3d2f225526640d80a8c31de 100644
--- a/src/npc/databases/ddSlavesDatabase.tw
+++ b/src/npc/databases/ddSlavesDatabase.tw
@@ -116,7 +116,7 @@
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Mistress Izzy", _HS.birthName = "Isabella", _HS.genes = "XY", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.health = 70, _HS.devotion = 100, _HS.eyeColor = "black", _HS.hColor = "sparkling and shiny golden red", _HS.pubicHColor = "blonde", _HS.override_Skin = 1, _HS.skin = "sun tanned", _HS.hLength = 60, _HS.hStyle = "in thick long heavy braids", _HS.waist = -100, _HS.boobs = 9200, _HS.boobsImplant = 6000, _HS.nipplesPiercing = 2, _HS.boobsTat = "bovine patterns", _HS.lactation = 2, _HS.lactationDuration = 2, _HS.counter.milk = 3010, _HS.butt = 8, _HS.buttImplant = 1, _HS.buttTat = "bovine patterns", _HS.face = 55, _HS.faceImplant = 65, _HS.lips = 55, _HS.lipsImplant = 2, _HS.lipsPiercing = 2, _HS.lipsTat = "bovine patterns", _HS.tonguePiercing = 2, _HS.vagina = 2, _HS.vaginaPiercing = 2, _HS.vaginaTat = "bovine patterns", _HS.preg = -2, _HS.clitPiercing = 3, _HS.anus = 2, _HS.dick = 5, _HS.prostate = 1, _HS.balls = 3, _HS.scrotum = 2, _HS.anusPiercing = 2, _HS.anusTat = "bovine patterns", _HS.makeup = 2, _HS.nails = 2, _HS.brand = "SLUT", _HS.brandLocation = "buttocks", _HS.earPiercing = 2, _HS.nosePiercing = 2, _HS.eyebrowPiercing = 2, _HS.navelPiercing = 2, _HS.shouldersTat = "bovine patterns", _HS.armsTat = "bovine patterns", _HS.legsTat = "bovine patterns", _HS.stampTat = "bovine patterns", _HS.skill.vaginal = 35, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whore = 100, _HS.skill.entertainment = 35, _HS.collar = "leather with cowbell", _HS.shoes = "heels", _HS.intelligence = 20, _HS.energy = 100, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "She has tattoos of teasing, enticing messages begging others to come taste her addictive milk.", _HS.custom.desc = "Her musky milky aura drives men and women around her giggly and dumb with lust.">>
+<<set _HS.slaveName = "Mistress Izzy", _HS.birthName = "Isabella", _HS.genes = "XY", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.health = 70, _HS.devotion = 100, _HS.eyeColor = "black", _HS.hColor = "sparkling and shiny golden red", _HS.pubicHColor = "blonde", _HS.override_Skin = 1, _HS.skin = "sun tanned", _HS.hLength = 60, _HS.hStyle = "in thick long heavy braids", _HS.waist = -100, _HS.boobs = 9200, _HS.boobsImplant = 6000, _HS.nipplesPiercing = 2, _HS.boobsTat = "bovine patterns", _HS.lactation = 2, _HS.lactationDuration = 2, _HS.counter.milk = 3010, _HS.butt = 8, _HS.buttImplant = 1, _HS.buttTat = "bovine patterns", _HS.face = 55, _HS.faceImplant = 65, _HS.lips = 55, _HS.lipsImplant = 2, _HS.lipsPiercing = 2, _HS.lipsTat = "bovine patterns", _HS.tonguePiercing = 2, _HS.vagina = 2, _HS.vaginaPiercing = 2, _HS.vaginaTat = "bovine patterns", _HS.preg = -2, _HS.clitPiercing = 3, _HS.anus = 2, _HS.dick = 5, _HS.prostate = 1, _HS.balls = 3, _HS.scrotum = 2, _HS.anusPiercing = 2, _HS.anusTat = "bovine patterns", _HS.makeup = 2, _HS.nails = 2, _HS.brand = "SLUT", _HS.brandLocation = "buttocks", _HS.earPiercing = 2, _HS.nosePiercing = 2, _HS.eyebrowPiercing = 2, _HS.navelPiercing = 2, _HS.shouldersTat = "bovine patterns", _HS.armsTat = "bovine patterns", _HS.legsTat = "bovine patterns", _HS.stampTat = "bovine patterns", _HS.skill.vaginal = 35, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring = 100, _HS.skill.entertainment = 35, _HS.collar = "leather with cowbell", _HS.shoes = "heels", _HS.intelligence = 20, _HS.energy = 100, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "She has tattoos of teasing, enticing messages begging others to come taste her addictive milk.", _HS.custom.desc = "Her musky milky aura drives men and women around her giggly and dumb with lust.">>
 <<set $heroSlaves.push(_HS)>>
 /*Dropped desc = She has two cute horns protruding from her forehead. A few addicted milkslaves of her own tag along behind her. */
 
@@ -133,7 +133,7 @@
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "'Dragon Goddess' Chae-won", _HS.genes = "XY", _HS.birthName = "Chae-won", _HS.origin = "She is a former Kkangpae gang member who was sold into slavery by her former boss as a punishment.", _HS.ID = _i++, _HS.prestige = 1, _HS.prestigeDesc = "She is a famed Free Cities whore, and commands top prices.", _HS.birthWeek = random(0,51), _HS.actualAge = 26, _HS.physicalAge = 26, _HS.visualAge = 26, _HS.ovaryAge = 26, _HS.health = 50, _HS.devotion = 31, _HS.muscles = 50, _HS.height = 155, _HS.nationality = "Korean", _HS.race = "asian", _HS.override_H_Color = 1, _HS.override_Brow_H_Color = 1, _HS.override_Arm_H_Color = 1, _HS.override_Pubic_H_Color = 1, _HS.origHColor = "black", _HS.hColor = "onyx black and rainbow-streaked", _HS.eyebrowHColor = "black", _HS.pubicHColor = "black", _HS.underArmHColor = "black", _HS.override_Skin = 1, _HS.skin = "sun tanned", _HS.hLength = 60, _HS.hStyle = "styled in high chignon resembling a traditional Japanese geisha's Shimada hairstyle, with plenty of decorated hairpins", _HS.waist = -55, _HS.boobs = 6000, _HS.boobsImplant = 3000, _HS.nipples = "huge", _HS.butt = 4.5, _HS.face = 55, _HS.faceImplant = 15, _HS.lips = 35, _HS.lipsTat = "permanent makeup", _HS.tonguePiercing = 1, _HS.vagina = -1, _HS.preg = -2, _HS.anus = 1, _HS.dick = 5, _HS.prostate = 1, _HS.balls = 4, _HS.scrotum = 4, _HS.anusTat = "bleached", _HS.nails = 3, _HS.earPiercing = 1, _HS.legsTat = "flowers", _HS.stampTat = "flowers", _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whore = 100, _HS.clothes = "a slave gown", _HS.collar = "pretty jewelry", _HS.shoes = "heels", _HS.intelligence = -3, _HS.intelligenceImplant = 30, _HS.energy = 100, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.behavioralFlaw = "arrogant", _HS.custom.tattoo = "She has two neon-blue butterflies tattooed on her right temple and one more right above right eyebrow; a bright blue, luminescent tattoo of an oriental dragon is intertwining with floral tattoos on her right leg.", _HS.custom.desc = "She is almost never seen without her long, thin, lavishly decorated smoking pipe, either holding it in hand, or carrying it tucked in her chignon.", _HS.career = "a gang member">>
+<<set _HS.slaveName = "'Dragon Goddess' Chae-won", _HS.genes = "XY", _HS.birthName = "Chae-won", _HS.origin = "She is a former Kkangpae gang member who was sold into slavery by her former boss as a punishment.", _HS.ID = _i++, _HS.prestige = 1, _HS.prestigeDesc = "She is a famed Free Cities whore, and commands top prices.", _HS.birthWeek = random(0,51), _HS.actualAge = 26, _HS.physicalAge = 26, _HS.visualAge = 26, _HS.ovaryAge = 26, _HS.health = 50, _HS.devotion = 31, _HS.muscles = 50, _HS.height = 155, _HS.nationality = "Korean", _HS.race = "asian", _HS.override_H_Color = 1, _HS.override_Brow_H_Color = 1, _HS.override_Arm_H_Color = 1, _HS.override_Pubic_H_Color = 1, _HS.origHColor = "black", _HS.hColor = "onyx black and rainbow-streaked", _HS.eyebrowHColor = "black", _HS.pubicHColor = "black", _HS.underArmHColor = "black", _HS.override_Skin = 1, _HS.skin = "sun tanned", _HS.hLength = 60, _HS.hStyle = "styled in high chignon resembling a traditional Japanese geisha's Shimada hairstyle, with plenty of decorated hairpins", _HS.waist = -55, _HS.boobs = 6000, _HS.boobsImplant = 3000, _HS.nipples = "huge", _HS.butt = 4.5, _HS.face = 55, _HS.faceImplant = 15, _HS.lips = 35, _HS.lipsTat = "permanent makeup", _HS.tonguePiercing = 1, _HS.vagina = -1, _HS.preg = -2, _HS.anus = 1, _HS.dick = 5, _HS.prostate = 1, _HS.balls = 4, _HS.scrotum = 4, _HS.anusTat = "bleached", _HS.nails = 3, _HS.earPiercing = 1, _HS.legsTat = "flowers", _HS.stampTat = "flowers", _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring = 100, _HS.clothes = "a slave gown", _HS.collar = "pretty jewelry", _HS.shoes = "heels", _HS.intelligence = -3, _HS.intelligenceImplant = 30, _HS.energy = 100, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.behavioralFlaw = "arrogant", _HS.custom.tattoo = "She has two neon-blue butterflies tattooed on her right temple and one more right above right eyebrow; a bright blue, luminescent tattoo of an oriental dragon is intertwining with floral tattoos on her right leg.", _HS.custom.desc = "She is almost never seen without her long, thin, lavishly decorated smoking pipe, either holding it in hand, or carrying it tucked in her chignon.", _HS.career = "a gang member">>
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
@@ -141,15 +141,15 @@
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "'Mistress' Ingrid", _HS.birthName = "Ingrid", _HS.genes = "XY", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 42, _HS.physicalAge = 42, _HS.visualAge = 42, _HS.ovaryAge = 42, _HS.health = 100, _HS.devotion = 100, _HS.muscles = 20, _HS.height = 190, _HS.race = "white", _HS.nationality = "Norwegian", _HS.eyeColor = "blue", _HS.override_H_Color = 1, _HS.override_Brow_H_Color = 1, _HS.override_Arm_H_Color = 1, _HS.override_Pubic_H_Color = 1, _HS.origHColor = "black", _HS.hColor = "onyx black", _HS.eyebrowHColor = "black", _HS.pubicHColor = "black", _HS.underArmHColor = "black", _HS.skin = "pale", _HS.hLength = 90, _HS.hStyle = "ass-length with Nordic braids throughout", _HS.waist = -55, _HS.boobs = 800, _HS.butt = 5, _HS.face = 55, _HS.lips = 35, _HS.preg = -2, _HS.clitPiercing = 3, _HS.dick = 4, _HS.prostate = 1, _HS.balls = 4, _HS.scrotum = 4, _HS.ovaries = 1, _HS.makeup = 2, _HS.nails = 2, _HS.skill.vaginal = 35, _HS.skill.oral = 35, _HS.skill.anal = 15, _HS.skill.whore = 35, _HS.skill.entertainment = 35, _HS.skill.combat = 1, _HS.clothes = "a slave gown", _HS.collar = "pretty jewelry", _HS.shoes = "boots", _HS.intelligence = 25, _HS.intelligenceImplant = 30, _HS.energy = 100, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.desc = "She has the style of Gothic royalty, and the demeanor to match.">>
+<<set _HS.slaveName = "'Mistress' Ingrid", _HS.birthName = "Ingrid", _HS.genes = "XY", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 42, _HS.physicalAge = 42, _HS.visualAge = 42, _HS.ovaryAge = 42, _HS.health = 100, _HS.devotion = 100, _HS.muscles = 20, _HS.height = 190, _HS.race = "white", _HS.nationality = "Norwegian", _HS.eyeColor = "blue", _HS.override_H_Color = 1, _HS.override_Brow_H_Color = 1, _HS.override_Arm_H_Color = 1, _HS.override_Pubic_H_Color = 1, _HS.origHColor = "black", _HS.hColor = "onyx black", _HS.eyebrowHColor = "black", _HS.pubicHColor = "black", _HS.underArmHColor = "black", _HS.skin = "pale", _HS.hLength = 90, _HS.hStyle = "ass-length with Nordic braids throughout", _HS.waist = -55, _HS.boobs = 800, _HS.butt = 5, _HS.face = 55, _HS.lips = 35, _HS.preg = -2, _HS.clitPiercing = 3, _HS.dick = 4, _HS.prostate = 1, _HS.balls = 4, _HS.scrotum = 4, _HS.ovaries = 1, _HS.makeup = 2, _HS.nails = 2, _HS.skill.vaginal = 35, _HS.skill.oral = 35, _HS.skill.anal = 15, _HS.skill.whoring = 35, _HS.skill.entertainment = 35, _HS.skill.combat = 1, _HS.clothes = "a slave gown", _HS.collar = "pretty jewelry", _HS.shoes = "boots", _HS.intelligence = 25, _HS.intelligenceImplant = 30, _HS.energy = 100, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.desc = "She has the style of Gothic royalty, and the demeanor to match.">>
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "'Demon Whore' Yuzuki", _HS.birthName = "Yuri", _HS.genes = "XY", _HS.origin = "Her origins are unknown, but rumor has it that she is a literal demon.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 19, _HS.physicalAge = 19, _HS.visualAge = 19, _HS.ovaryAge = 19, _HS.health = 60, _HS.devotion = 90.4, _HS.muscles = 20, _HS.height = 190, _HS.nationality = "Japanese", _HS.race = "asian", _HS.eyeColor = "green", _HS.hColor = "black", _HS.pubicHColor = "black", _HS.skin = "pale", _HS.hStyle = "long", _HS.pubicHStyle = "in a strip", _HS.waist = -100, _HS.boobs = 10000, _HS.boobsImplant = 4800, _HS.areolae = 2, _HS.lactation = 2, _HS.lactationDuration = 2, _HS.butt = 9, _HS.face = 55, _HS.faceImplant = 65, _HS.lips = 35, _HS.vagina = 1, _HS.clitPiercing = 3, _HS.clitSetting = "humiliation", _HS.anus = 1, _HS.dick = 5, _HS.prostate = 1, _HS.balls = 5, _HS.scrotum = 4, _HS.ovaries = 1, _HS.makeup = 2, _HS.nails = 2, _HS.skill.vaginal = 15, _HS.skill.oral = 100, _HS.skill.anal = 15, _HS.skill.whore = 15, _HS.skill.entertainment = 15, _HS.skill.combat = 1, _HS.clothes = "a string bikini", _HS.collar = "pretty jewelry", _HS.shoes = "boots", _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetish = "humiliation", _HS.fetishKnown = 1, _HS.pupil = "demonic">>
+<<set _HS.slaveName = "'Demon Whore' Yuzuki", _HS.birthName = "Yuri", _HS.genes = "XY", _HS.origin = "Her origins are unknown, but rumor has it that she is a literal demon.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 19, _HS.physicalAge = 19, _HS.visualAge = 19, _HS.ovaryAge = 19, _HS.health = 60, _HS.devotion = 90.4, _HS.muscles = 20, _HS.height = 190, _HS.nationality = "Japanese", _HS.race = "asian", _HS.eyeColor = "green", _HS.hColor = "black", _HS.pubicHColor = "black", _HS.skin = "pale", _HS.hStyle = "long", _HS.pubicHStyle = "in a strip", _HS.waist = -100, _HS.boobs = 10000, _HS.boobsImplant = 4800, _HS.areolae = 2, _HS.lactation = 2, _HS.lactationDuration = 2, _HS.butt = 9, _HS.face = 55, _HS.faceImplant = 65, _HS.lips = 35, _HS.vagina = 1, _HS.clitPiercing = 3, _HS.clitSetting = "humiliation", _HS.anus = 1, _HS.dick = 5, _HS.prostate = 1, _HS.balls = 5, _HS.scrotum = 4, _HS.ovaries = 1, _HS.makeup = 2, _HS.nails = 2, _HS.skill.vaginal = 15, _HS.skill.oral = 100, _HS.skill.anal = 15, _HS.skill.whoring = 15, _HS.skill.entertainment = 15, _HS.skill.combat = 1, _HS.clothes = "a string bikini", _HS.collar = "pretty jewelry", _HS.shoes = "boots", _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetish = "humiliation", _HS.fetishKnown = 1, _HS.pupil = "demonic">>
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Fuckmeat", _HS.birthName = "Alva", _HS.genes = "XY", _HS.ID = _i++, _HS.prestige = 1, _HS.prestigeDesc = "She is a famed Free Cities slut, and can please anyone.", _HS.birthWeek = random(0,51), _HS.actualAge = 19, _HS.physicalAge = 19, _HS.visualAge = 19, _HS.ovaryAge = 19, _HS.health = 100, _HS.devotion = 100, _HS.muscles = 20, _HS.height = 145, _HS.race = "white", _HS.nationality = "Swedish", _HS.eyeColor = "blue", _HS.hColor = "blonde", _HS.pubicHColor = "blonde", _HS.skin = "pale", _HS.hLength = 0, _HS.hStyle = "shaved bald", _HS.pubicHStyle = "bushy", _HS.boobs = 1700, _HS.boobsTat = "rude words", _HS.butt = 8, _HS.buttTat = "rude words", _HS.face = 55, _HS.lips = 35, _HS.vagina = -1, _HS.vaginaTat = "rude words", _HS.preg = -2, _HS.anus = 3, _HS.dick = 2, _HS.dickTat = "rude words", _HS.prostate = 1, _HS.balls = 1, _HS.scrotum = 2, _HS.anusTat = "rude words", _HS.makeup = 3, _HS.nails = 3, _HS.brand = "a penis symbol", _HS.brandLocation = "cheek", _HS.shouldersTat = "rude words", _HS.armsTat = "rude words", _HS.legsTat = "rude words", _HS.stampTat = "rude words", _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whore = 100, _HS.skill.entertainment = 100, _HS.skill.combat = 1, _HS.diet = "muscle building", _HS.clothes = "harem gauze", _HS.collar = "heavy gold", _HS.shoes = "boots", _HS.energy = 100, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetishStrength = 0, _HS.fetishKnown = 1, _HS.custom.tattoo = "She has a swastika tattooed on her ballsack.">>
+<<set _HS.slaveName = "Fuckmeat", _HS.birthName = "Alva", _HS.genes = "XY", _HS.ID = _i++, _HS.prestige = 1, _HS.prestigeDesc = "She is a famed Free Cities slut, and can please anyone.", _HS.birthWeek = random(0,51), _HS.actualAge = 19, _HS.physicalAge = 19, _HS.visualAge = 19, _HS.ovaryAge = 19, _HS.health = 100, _HS.devotion = 100, _HS.muscles = 20, _HS.height = 145, _HS.race = "white", _HS.nationality = "Swedish", _HS.eyeColor = "blue", _HS.hColor = "blonde", _HS.pubicHColor = "blonde", _HS.skin = "pale", _HS.hLength = 0, _HS.hStyle = "shaved bald", _HS.pubicHStyle = "bushy", _HS.boobs = 1700, _HS.boobsTat = "rude words", _HS.butt = 8, _HS.buttTat = "rude words", _HS.face = 55, _HS.lips = 35, _HS.vagina = -1, _HS.vaginaTat = "rude words", _HS.preg = -2, _HS.anus = 3, _HS.dick = 2, _HS.dickTat = "rude words", _HS.prostate = 1, _HS.balls = 1, _HS.scrotum = 2, _HS.anusTat = "rude words", _HS.makeup = 3, _HS.nails = 3, _HS.brand = "a penis symbol", _HS.brandLocation = "cheek", _HS.shouldersTat = "rude words", _HS.armsTat = "rude words", _HS.legsTat = "rude words", _HS.stampTat = "rude words", _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring = 100, _HS.skill.entertainment = 100, _HS.skill.combat = 1, _HS.diet = "muscle building", _HS.clothes = "harem gauze", _HS.collar = "heavy gold", _HS.shoes = "boots", _HS.energy = 100, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetishStrength = 0, _HS.fetishKnown = 1, _HS.custom.tattoo = "She has a swastika tattooed on her ballsack.">>
 <<set $heroSlaves.push(_HS)>>
 
 <<if $seeExtreme == 1>>
diff --git a/src/npc/fFeelings.tw b/src/npc/fFeelings.tw
index 3d1449214c4ac2a7328f992efc133311d49f9a3f..f253578503c356702214eef85615399478562ac3 100644
--- a/src/npc/fFeelings.tw
+++ b/src/npc/fFeelings.tw
@@ -1093,7 +1093,7 @@ My favorite part of my body i<<s>>
 	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 $activeSlave.anus > 2>>a<<ss>>pu<<ss>>y<<elseif $activeSlave.anus == 2>>butthole<<else>>little anu<<s>><</if>> doe<<s>> double duty, but I can take it.
 <<elseif ($activeSlave.skill.oral + $activeSlave.skill.vaginal + $activeSlave.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 ($activeSlave.skill.whore >= 100)>>
+<<elseif ($activeSlave.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 ($activeSlave.skill.entertainment >= 100)>>
 	I'm really proud of my <<s>>kill<<s>>, I feel like I can make anyone want me.
diff --git a/src/npc/rgASDump.tw b/src/npc/rgASDump.tw
index 4e3baf27c16a47fb6b348e3f6480029f14a3310c..34235efc79e346283f776b6a55c6471b538a7d47 100644
--- a/src/npc/rgASDump.tw
+++ b/src/npc/rgASDump.tw
@@ -41,7 +41,7 @@
 <<if $applyCareerBonus == 1>>
 	<<set _seed = 2>>
 	<<if $PC.career == "capitalist">>
-		<<if $activeSlave.skill.whore < 60>><<set $activeSlave.skill.whore += 20>><</if>>
+		<<if $activeSlave.skill.whoring < 60>><<set $activeSlave.skill.whoring += 20>><</if>>
 	<<elseif $PC.career == "mercenary">>
 		<<set $activeSlave.trust += 10>>
 	<<elseif $PC.career == "slaver">>
@@ -67,8 +67,8 @@
 		<<if $activeSlave.skill.entertainment < 60>>
 			<<set $activeSlave.skill.entertainment += 20>>
 		<</if>>
-		<<if $activeSlave.skill.whore < 60>>
-			<<set $activeSlave.skill.whore += 20>>
+		<<if $activeSlave.skill.whoring < 60>>
+			<<set $activeSlave.skill.whoring += 20>>
 		<</if>>
 		<<if ($activeSlave.skill.oral < 60)>>
 			<<set $activeSlave.skill.oral += 20, _seed-->>
@@ -91,7 +91,7 @@
 		<</if>>
 	<<else>>
 		<<set $activeSlave.devotion += 10>>
-		<<if $activeSlave.skill.whore < 60>><<set $activeSlave.skill.whore += 20>><</if>>
+		<<if $activeSlave.skill.whoring < 60>><<set $activeSlave.skill.whoring += 20>><</if>>
 		<<if $activeSlave.skill.entertainment < 60>><<set $activeSlave.skill.entertainment += 20>><</if>>
 		<<if ($activeSlave.skill.oral < 60)>>
 			<<set $activeSlave.skill.oral += 20, _seed-->>
diff --git a/src/npc/startingGirls/startingGirls.tw b/src/npc/startingGirls/startingGirls.tw
index cfa05eba285bfeda19d37384cbb5b12c28978875..915c613cf52bdde1a2245b058bb6e983ea5749bb 100644
--- a/src/npc/startingGirls/startingGirls.tw
+++ b/src/npc/startingGirls/startingGirls.tw
@@ -1208,7 +1208,7 @@ __You are customizing this slave:__
 <</if>>
 
 <br>
-<<options $activeSlave.skill.whore>>
+<<options $activeSlave.skill.whoring>>
 	''Prostitution:''
 	<<optionlte 10 0 "Unskilled">>  Unskilled.
 	<<optionlte 30 15 "Basic">>  @@.cyan;Basic.@@
@@ -1231,11 +1231,11 @@ __You are customizing this slave:__
 	<<option 1 "Skilled">>@@.cyan;Skilled.@@
 <</options>>
 <br>
-<<if $activeSlave.skill.whore+$activeSlave.skill.entertainment+$activeSlave.skill.vaginal+$activeSlave.skill.anal+$activeSlave.skill.oral+($activeSlave.skill.combat*100) > 200>>
+<<if $activeSlave.skill.whoring+$activeSlave.skill.entertainment+$activeSlave.skill.vaginal+$activeSlave.skill.anal+$activeSlave.skill.oral+($activeSlave.skill.combat*100) > 200>>
 	<<options>>
 		<<option>>
 			//@@.red;Starting slaves incur
-			<<if $activeSlave.skill.whore+$activeSlave.skill.entertainment+$activeSlave.skill.vaginal+$activeSlave.skill.anal+$activeSlave.skill.oral+($activeSlave.skill.combat*100) > 400>>
+			<<if $activeSlave.skill.whoring+$activeSlave.skill.entertainment+$activeSlave.skill.vaginal+$activeSlave.skill.anal+$activeSlave.skill.oral+($activeSlave.skill.combat*100) > 400>>
 					a severe cost penalty at for being highly
 			<<else>>
 					an additional cost penalty for being
@@ -1606,7 +1606,7 @@ __You are customizing this slave:__
 <br>&nbsp;&nbsp;&nbsp;&nbsp;
 <<link "Novice">>
 	<<StartingGirlsWorkaround>>
-	<<set $activeSlave.skill.anal = 0, $activeSlave.skill.oral = 0, $activeSlave.skill.vaginal = 0, $activeSlave.skill.whore = 0, $activeSlave.skill.entertainment = 0, $activeSlave.skill.combat = 0, $activeSlave.actualAge = 18, $activeSlave.visualAge = 18, $activeSlave.physicalAge = 18, $activeSlave.fetishKnown = 0, $activeSlave.attrKnown = 0>>
+	<<set $activeSlave.skill.anal = 0, $activeSlave.skill.oral = 0, $activeSlave.skill.vaginal = 0, $activeSlave.skill.whoring = 0, $activeSlave.skill.entertainment = 0, $activeSlave.skill.combat = 0, $activeSlave.actualAge = 18, $activeSlave.visualAge = 18, $activeSlave.physicalAge = 18, $activeSlave.fetishKnown = 0, $activeSlave.attrKnown = 0>>
 	<<goto "Starting Girls">>
 <</link>>
 //Train your own and save//
@@ -1621,14 +1621,14 @@ __You are customizing this slave:__
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
 	<<link "Wellspring">>
 		<<StartingGirlsWorkaround>>
-		<<set $activeSlave.skill.anal = 0, $activeSlave.skill.oral = 0, $activeSlave.skill.vaginal = 0, $activeSlave.skill.whore = 0, $activeSlave.skill.entertainment = 0, $activeSlave.skill.combat = 0, $activeSlave.actualAge = 18, $activeSlave.visualAge = 18, $activeSlave.physicalAge = 18, $activeSlave.fetishKnown = 0, $activeSlave.attrKnown = 0, $activeSlave.health = 10, $activeSlave.intelligence = -100, $activeSlave.intelligenceImplant = 0, $activeSlave.vagina = 3, $activeSlave.anus = 3, $activeSlave.ovaries = 1, $activeSlave.dick = 5, $activeSlave.balls = 5, $activeSlave.prostate = 1, $activeSlave.lactation = 2, $activeSlave.lactationDuration = 2, $activeSlave.nipples = "huge", $activeSlave.boobs = 10000>>
+		<<set $activeSlave.skill.anal = 0, $activeSlave.skill.oral = 0, $activeSlave.skill.vaginal = 0, $activeSlave.skill.whoring = 0, $activeSlave.skill.entertainment = 0, $activeSlave.skill.combat = 0, $activeSlave.actualAge = 18, $activeSlave.visualAge = 18, $activeSlave.physicalAge = 18, $activeSlave.fetishKnown = 0, $activeSlave.attrKnown = 0, $activeSlave.health = 10, $activeSlave.intelligence = -100, $activeSlave.intelligenceImplant = 0, $activeSlave.vagina = 3, $activeSlave.anus = 3, $activeSlave.ovaries = 1, $activeSlave.dick = 5, $activeSlave.balls = 5, $activeSlave.prostate = 1, $activeSlave.lactation = 2, $activeSlave.lactationDuration = 2, $activeSlave.nipples = "huge", $activeSlave.boobs = 10000>>
 		<<goto "Starting Girls">>
 	<</link>>
 	//Capable of producing all kinds of useful fluids//
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
 	<<link "Onahole">>
 		<<StartingGirlsWorkaround>>
-		<<set $activeSlave.skill.anal = 0, $activeSlave.skill.oral = 0, $activeSlave.skill.vaginal = 0, $activeSlave.skill.whore = 0, $activeSlave.skill.entertainment = 0, $activeSlave.skill.combat = 0, $activeSlave.fetish = "mindbroken", $activeSlave.amp = 1, $activeSlave.voice = 0, $activeSlave.eyes = 1, $activeSlave.hears = 0>>
+		<<set $activeSlave.skill.anal = 0, $activeSlave.skill.oral = 0, $activeSlave.skill.vaginal = 0, $activeSlave.skill.whoring = 0, $activeSlave.skill.entertainment = 0, $activeSlave.skill.combat = 0, $activeSlave.fetish = "mindbroken", $activeSlave.amp = 1, $activeSlave.voice = 0, $activeSlave.eyes = 1, $activeSlave.hears = 0>>
 		<<goto "Starting Girls">>
 	<</link>>
 	//A living cocksleeve//
diff --git a/src/npc/uploadSlave.tw b/src/npc/uploadSlave.tw
index 340d6a4d764358578b6c4f16f764dd242b7ab331..b5f53d89ff269f368893f3ece823ee775aa4f8bc 100644
--- a/src/npc/uploadSlave.tw
+++ b/src/npc/uploadSlave.tw
@@ -149,7 +149,7 @@ stampTat: "$activeSlave.stampTat",
 skill.vaginal: $activeSlave.skill.vaginal,
 skill.oral: $activeSlave.skill.oral,
 skill.anal: $activeSlave.skill.anal,
-skill.whore: $activeSlave.skill.whore,
+skill.whoring: $activeSlave.skill.whoring,
 skill.entertainment: $activeSlave.skill.entertainment,
 skill.combat: $activeSlave.skill.combat,
 livingRules: "$activeSlave.livingRules",
diff --git a/src/pregmod/analyzePlayerPregnancy.tw b/src/pregmod/analyzePlayerPregnancy.tw
index fe588df8d51b5c9a72810a6af67a35cb3f055c88..70961bb38aaf2a48324614e9c16a55d13017378f 100644
--- a/src/pregmod/analyzePlayerPregnancy.tw
+++ b/src/pregmod/analyzePlayerPregnancy.tw
@@ -69,7 +69,7 @@
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		Ova: $PC.womb[_ap].genetics.name
 
-		<<if $geneticMappingUpgrade == 1>>
+		<<if $geneticMappingUpgrade >= 1>>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
 			Gender: $PC.womb[_ap].genetics.gender
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
diff --git a/src/pregmod/analyzePregnancy.tw b/src/pregmod/analyzePregnancy.tw
index 364e7b2b8d41e8cb45157169cd2728fb1038a0cb..23f05afee63992c204e4112550557f56f4312bcf 100644
--- a/src/pregmod/analyzePregnancy.tw
+++ b/src/pregmod/analyzePregnancy.tw
@@ -75,7 +75,7 @@
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		Age: $activeSlave.womb[_ap].age
 
-		<<if $geneticMappingUpgrade == 1>>
+		<<if $geneticMappingUpgrade >= 1>>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
 			Gender: $activeSlave.womb[_ap].genetics.gender
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
diff --git a/src/pregmod/electiveSurgery.tw b/src/pregmod/electiveSurgery.tw
index c568873edd534a9d29b2b2b209140007ba6fe55a..81461c5f6d362c9372507b580f9220cd61ab455a 100644
--- a/src/pregmod/electiveSurgery.tw
+++ b/src/pregmod/electiveSurgery.tw
@@ -168,7 +168,7 @@ You have @@.orange;$PC.skin skin.@@<<if $PC.skin != $PC.origSkin>> Your original
 	<br>[[Add additional fatty tissue|PC Surgery Degradation][$PC.boobsBonus = 0, cashX(-15000, "PCmedical"), $surgeryType = "breastEnlargement"]] | [[Have fatty tissue removed|PC Surgery Degradation][$PC.boobsBonus = -2, cashX(-5000, "PCmedical"), $surgeryType = "breastShrinkage"]] | [[Have them removed|PC Surgery Degradation][$PC.boobs = 0, $PC.boobsBonus = 0, cashX(-5000, "PCmedical"), $surgeryType = "flatChest"]]
 <<elseif $PC.boobsBonus == -2>>
 	You have a @@.orange;average pair of C-cup breasts.@@
-	<br>[[Add additional fatty tissue|PC Surgery Degradation][$PC.boobsBonus = -1, cashX(-15000, "PCmedical"), $surgeryType = "breastEnlargement"]] | [[Have fatty tissue removed|PC Surgery Degradation][$PC.boobsBonus = -3, cashX(-5000, "PCmedical"), $surgeryType = "breastShrinkage"]] | [[Have them removed|PC Surgery Degradation][$PC.boobs = 0, $PC.boobsBonus = 0, cashX(-5000, "PCmedical"), $surgeryType = "breastShrinkage"]] | //You lack sufficient fatty tissue to permit additional size reduction short of total breast removal.//
+	<br>[[Add additional fatty tissue|PC Surgery Degradation][$PC.boobsBonus = -1, cashX(-15000, "PCmedical"), $surgeryType = "breastEnlargement"]] | [[Have fatty tissue removed|PC Surgery Degradation][$PC.boobsBonus = -3, cashX(-5000, "PCmedical"), $surgeryType = "breastShrinkage"]] | [[Have them removed|PC Surgery Degradation][$PC.boobs = 0, $PC.boobsBonus = 0, cashX(-5000, "PCmedical"), $surgeryType = "flatChest"]]
 <<elseif $PC.boobsBonus == -3>>
 	You have a @@.orange;small pair of B-cup breasts.@@
 	<br>[[Add additional fatty tissue|PC Surgery Degradation][$PC.boobsBonus = -2, cashX(-15000, "PCmedical"), $surgeryType = "breastEnlargement"]] | [[Have them removed|PC Surgery Degradation][$PC.boobs = 0, $PC.boobsBonus = 0, cashX(-5000, "PCmedical"), $surgeryType = "flatChest"]] | //You lack sufficient fatty tissue to permit additional size reduction short of total breast removal.//
diff --git a/src/pregmod/eliteTakeOverFight.tw b/src/pregmod/eliteTakeOverFight.tw
index 3eb88608075b9ace69981900325b8d46465f61ac..cb4e8ee434dfe07ec53935d39b632401fbfe3a93 100644
--- a/src/pregmod/eliteTakeOverFight.tw
+++ b/src/pregmod/eliteTakeOverFight.tw
@@ -298,7 +298,7 @@
 		<<set $eliteFate = 2>>
 		<<goto "eliteTakeOverResult">>
 	<</link>>
-<<else>>
+<<elseif $finalChoice != "give in">>
 	With nothing else left, you remain powerless to stop the <<if $eliteLeft < $eliteTotal>>remaining<</if>> elite, who quickly capture and enslave you. Your personal story may continue, but the part of it worthy of retelling has now ended.
 	<<set $ui = "start">>
 	<br><br>
diff --git a/src/pregmod/eliteTakeOverResult.tw b/src/pregmod/eliteTakeOverResult.tw
index 2e410e966d6969565fe3ff24990064189996c198..13fd792c24261ed16402ba5c9ff0d2b40e864a31 100644
--- a/src/pregmod/eliteTakeOverResult.tw
+++ b/src/pregmod/eliteTakeOverResult.tw
@@ -154,7 +154,7 @@
 		<<set $activeSlave.intelligence = random(70,100)>>
 		<<set $activeSlave.intelligenceImplant = 30>>
 		<<set $activeSlave.skill.entertainment = 0>>
-		<<set $activeSlave.skill.whore = 0>>
+		<<set $activeSlave.skill.whoring = 0>>
 		<<set $activeSlave.health = random(60,75)>>
 		<<set $activeSlave.canRecruit = 0>>
 		<<run newSlave($activeSlave)>> /* skip New Slave Intro */
@@ -200,7 +200,7 @@
 		<<set $activeSlave.intelligence = random(0,60)>>
 		<<set $activeSlave.intelligenceImplant = 30>>
 		<<set $activeSlave.skill.entertainment = 0>>
-		<<set $activeSlave.skill.whore = 0>>
+		<<set $activeSlave.skill.whoring = 0>>
 		<<set $activeSlave.health = random(60,75)>>
 		<<set $activeSlave.canRecruit = 0>>
 		<<set $activeSlave.behavioralFlaw = either("arrogant", "bitchy")>>
diff --git a/src/pregmod/incubator.tw b/src/pregmod/incubator.tw
index 4ff23b3d2a8ef60c5252d038dbd8942d77aaf03f..25ee6a8a7bfd3f11200b8ad48cb13edc238cf1cf 100644
--- a/src/pregmod/incubator.tw
+++ b/src/pregmod/incubator.tw
@@ -21,7 +21,7 @@ $incubatorNameCaps is a clean, cold hall designed to be lined with tanks and the
 	It's empty and quiet. [[Decommission the incubator|Main][$incubator = 0, $incubatorUpgradeSpeed = 5, $incubatorUpgradeWeight = 0, $incubatorUpgradeMuscles = 0, $incubatorUpgradeReproduction = 0, $incubatorUpgradeGrowthStims = 0, $incubatorWeightSetting = 0, $incubatorMusclesSetting = 0, $incubatorReproductionSetting = 0, $incubatorGrowthStimsSetting = 0, $tanks = []]]
 <</if>>
 
-<br>It can support $incubator <<if $incubator == 1>>child<<else>>children<</if>>. Currently $incubatorSlaves tanks are in use.
+<br>It can support $incubator child<<if $incubator != 1>>ren<</if>>. There <<if $incubatorSlaves == 1>>is<<else>>are<</if>> currently $incubatorSlaves tank<<if $incubatorSlaves != 1>>s<</if>> in use in $incubatorName.
 [[Add another incubation tank|Incubator][cashX(forceNeg(Math.trunc(60000*$upgradeMultiplierArcology)), "capEx"), $incubator += 1]] //Costs <<print cashFormat(Math.trunc(60000*$upgradeMultiplierArcology))>> and will increase upkeep costs//
 <<if $freeTanks == 0>>
 	All of the tanks are currently occupied by growing children.
@@ -320,7 +320,7 @@ Target age for release: <<textbox "$targetAge" $targetAge "Incubator">> [[Minimu
 	<<capture $i>>
 		<<setLocalPronouns $tanks[$i]>>
 		<br><br>@@.pink;$tanks[$i].slaveName@@ occupies this tank.
-		<<if $geneticMappingUpgrade == 1>>
+		<<if $geneticMappingUpgrade >= 1>>
 			$He is a <<if $tanks[$i].genes == "XX">>female<<else>>male<</if>> of $tanks[$i].race descent with $tanks[$i].eyeColor eyes, $tanks[$i].hColor hair and $tanks[$i].skin skin. Given $his parentage, $he is considered $tanks[$i].nationality.
 		<<else>>
 			$He appears to be <<if $tanks[$i].genes == "XX">>a natural girl<<else>>a natural boy<</if>>, with $tanks[$i].hColor hair<<if $tanks[$i].eyes != -2>> and $tanks[$i].eyeColor eyes.<<else>>. $He most likely will be blind.<</if>>
diff --git a/src/pregmod/physicalDevelopment.tw b/src/pregmod/physicalDevelopment.tw
index c88999ace627e7cb18155d897e193badd533ca29..2f4771bdbaae6c53de60abde0083dbcc389782e8 100644
--- a/src/pregmod/physicalDevelopment.tw
+++ b/src/pregmod/physicalDevelopment.tw
@@ -4,6 +4,19 @@
 
 <<set _rearQuirk = $args[0].geneticQuirks.rearLipedema == 2 ? 2 : 0>>
 <<set _rearQuirkDivider = _rearQuirk == 0 ? 1 : _rearQuirk>>
+<<if $args[0].geneticQuirks.gigantomastia == 2 && $args[0].geneticQuirks.macromastia == 2>>
+	<<set _gigantomastiaMod = 3>>
+<<elseif $args[0].geneticQuirks.gigantomastia == 2>>
+	<<set _gigantomastiaMod = 2>>
+<<elseif $args[0].geneticQuirks.macromastia == 2>>
+	<<set _gigantomastiaMod = 1.5>>
+<<elseif $args[0].geneticQuirks.gigantomastia == 3>>
+	<<set _gigantomastiaMod = 1.2>>
+<<elseif $args[0].geneticQuirks.macromastia == 3>>
+	<<set _gigantomastiaMod = 1.1>>
+<<else>>
+	<<set _gigantomastiaMod = 1>>
+<</if>>
 
 <<if ($args[0].geneMods.NCS == 1)>>
 /* NCS completely blocks all natural physical growth: no height increases. It also blocks all hormonal secondary sexual * characteristics. So, on the female side: no boobs, no butt, no hips, and no labia. And on the male side: no dick, no clit, no balls, no scrotum, no shoulders. */
@@ -436,8 +449,8 @@
 				<<set $args[0].butt += 1>>
 			<</if>>
 		<</if>>
-		<<if $args[0].boobs < 600>>
-			<<if random(1,100) > 40>>
+		<<if $args[0].boobs < 600*_gigantomastiaMod>>
+			<<if random(1,100) > 40/_gigantomastiaMod>>
 				<<set $args[0].boobs += 100>>
 			<</if>>
 		<</if>>
@@ -458,8 +471,8 @@
 				<<set $args[0].butt += 1>>
 			<</if>>
 		<</if>>
-		<<if $args[0].boobs < 500>>
-			<<if random(1,100) > 40>>
+		<<if $args[0].boobs < 500*_gigantomastiaMod>>
+			<<if random(1,100) > 40/_gigantomastiaMod>>
 				<<set $args[0].boobs += 100>>
 			<</if>>
 		<</if>>
@@ -480,7 +493,7 @@
 				<<set $args[0].butt += 1>>
 			<</if>>
 		<</if>>
-		<<if $args[0].boobs > 200>>
+		<<if $args[0].boobs > 200 && _gigantomastiaMod != 3>>
 			<<set $args[0].boobs -= 100>>
 		<</if>>
 		<<if $args[0].clit > 0 && $args[0].clit < 4>>
@@ -504,7 +517,7 @@
 				<<set $args[0].butt += 1>>
 			<</if>>
 		<</if>>
-		<<if $args[0].boobs > 200>>
+		<<if $args[0].boobs > 200 && _gigantomastiaMod != 3>>
 			<<set $args[0].boobs -= 50>>
 		<</if>>
 		<<if $args[0].clit > 0 && $args[0].clit < 4>>
@@ -528,8 +541,8 @@
 				<<set $args[0].butt += 1>>
 			<</if>>
 		<</if>>
-		<<if $args[0].boobs < 300>>
-			<<if random(1,100) > 40>>
+		<<if $args[0].boobs < 300*_gigantomastiaMod>>
+			<<if random(1,100) > 40/_gigantomastiaMod>>
 				<<set $args[0].boobs += 100>>
 			<</if>>
 		<</if>>
@@ -557,8 +570,8 @@
 				<<set $args[0].butt += 1>>
 			<</if>>
 		<</if>>
-		<<if $args[0].boobs < 700>>
-			<<if random(1,100) > 40>>
+		<<if $args[0].boobs < 700*_gigantomastiaMod>>
+			<<if random(1,100) > 40/_gigantomastiaMod>>
 				<<set $args[0].boobs += 100>>
 			<</if>>
 		<</if>>
@@ -584,8 +597,8 @@
 				<<set $args[0].butt += 1>>
 			<</if>>
 		<</if>>
-		<<if $args[0].boobs < 600>>
-			<<if random(1,100) > 40>>
+		<<if $args[0].boobs < 600*_gigantomastiaMod>>
+			<<if random(1,100) > 40/_gigantomastiaMod>>
 				<<set $args[0].boobs += 100>>
 			<</if>>
 		<</if>>
@@ -611,7 +624,7 @@
 				<<set $args[0].butt += 1>>
 			<</if>>
 		<</if>>
-		<<if $args[0].boobs > 200>>
+		<<if $args[0].boobs > 200 && _gigantomastiaMod != 3>>
 			<<set $args[0].boobs -= 100>>
 		<</if>>
 		<<if $args[0].clit > 0 && $args[0].clit < 4>>
@@ -640,7 +653,7 @@
 				<<set $args[0].butt += 1>>
 			<</if>>
 		<</if>>
-		<<if $args[0].boobs > 200>>
+		<<if $args[0].boobs > 200 && _gigantomastiaMod != 3>>
 			<<set $args[0].boobs -= 50>>
 		<</if>>
 		<<if $args[0].clit > 0 && $args[0].clit < 4>>
@@ -669,8 +682,8 @@
 				<<set $args[0].butt += 1>>
 			<</if>>
 		<</if>>
-		<<if $args[0].boobs < 300>>
-			<<if random(1,100) > 40>>
+		<<if $args[0].boobs < 300*_gigantomastiaMod>>
+			<<if random(1,100) > 40/_gigantomastiaMod>>
 				<<set $args[0].boobs += 100>>
 			<</if>>
 		<</if>>
@@ -717,8 +730,8 @@
 				<<set $args[0].butt += 1>>
 			<</if>>
 		<</if>>
-		<<if $args[0].boobs < 1000>>
-			<<if random(1,100) > 40>>
+		<<if $args[0].boobs < 1000*_gigantomastiaMod>>
+			<<if random(1,100) > 40/_gigantomastiaMod>>
 				<<set $args[0].boobs += 100>>
 			<</if>>
 		<</if>>
@@ -758,8 +771,8 @@
 				<<set $args[0].butt += 1>>
 			<</if>>
 		<</if>>
-		<<if $args[0].boobs < 900>>
-			<<if random(1,100) > 40>>
+		<<if $args[0].boobs < 900*_gigantomastiaMod>>
+			<<if random(1,100) > 40/_gigantomastiaMod>>
 				<<set $args[0].boobs += 100>>
 			<</if>>
 		<</if>>
@@ -795,7 +808,7 @@
 				<<set $args[0].butt += 1>>
 			<</if>>
 		<</if>>
-		<<if $args[0].boobs > 200>>
+		<<if $args[0].boobs > 200 && _gigantomastiaMod != 3>>
 			<<set $args[0].boobs -= 100>>
 		<</if>>
 		<<if $args[0].clit > 0 && $args[0].clit < 4>>
@@ -834,7 +847,7 @@
 				<<set $args[0].butt += 1>>
 			<</if>>
 		<</if>>
-		<<if $args[0].boobs > 200>>
+		<<if $args[0].boobs > 200 && _gigantomastiaMod != 3>>
 			<<set $args[0].boobs -= 50>>
 		<</if>>
 		<<if $args[0].clit > 0 && $args[0].clit < 4>>
@@ -877,8 +890,8 @@
 				<<set $args[0].voice -= 1>>
 			<</if>>
 		<</if>>
-		<<if $args[0].boobs < 400>>
-			<<if random(1,100) > 40>>
+		<<if $args[0].boobs < 400*_gigantomastiaMod>>
+			<<if random(1,100) > 40/_gigantomastiaMod>>
 				<<set $args[0].boobs += 100>>
 			<</if>>
 		<</if>>
@@ -906,8 +919,8 @@
 				<<set $args[0].hips += 1>>
 			<</if>>
 		<</if>>
-		<<if $args[0].boobs < 800>>
-			<<if random(1,100) > 40>>
+		<<if $args[0].boobs < 800*_gigantomastiaMod>>
+			<<if random(1,100) > 40/_gigantomastiaMod>>
 				<<set $args[0].boobs += 100>>
 			<</if>>
 		<</if>>
@@ -928,8 +941,8 @@
 				<<set $args[0].hips += 1>>
 			<</if>>
 		<</if>>
-		<<if $args[0].boobs < 700>>
-			<<if random(1,100) > 40>>
+		<<if $args[0].boobs < 700*_gigantomastiaMod>>
+			<<if random(1,100) > 40/_gigantomastiaMod>>
 				<<set $args[0].boobs += 100>>
 			<</if>>
 		<</if>>
@@ -945,7 +958,7 @@
 		<<elseif $args[0].height <= 173>>
 			<<set $args[0].height += 3>>
 		<</if>>
-		<<if $args[0].boobs > 200>>
+		<<if $args[0].boobs > 200 && _gigantomastiaMod != 3>>
 			<<set $args[0].boobs -= 100>>
 		<</if>>
 		<<if $args[0].clit > 0 && $args[0].clit < 4>>
@@ -964,7 +977,7 @@
 		<<elseif $args[0].height <= 173>>
 			<<set $args[0].height += 3>>
 		<</if>>
-		<<if $args[0].boobs > 200>>
+		<<if $args[0].boobs > 200 && _gigantomastiaMod != 3>>
 			<<set $args[0].boobs -= 50>>
 		<</if>>
 		<<if $args[0].clit > 0 && $args[0].clit < 4>>
@@ -988,8 +1001,8 @@
 				<<set $args[0].hips += 1>>
 			<</if>>
 		<</if>>
-		<<if $args[0].boobs < 500>>
-			<<if random(1,100) > 40>>
+		<<if $args[0].boobs < 500*_gigantomastiaMod>>
+			<<if random(1,100) > 40/_gigantomastiaMod>>
 				<<set $args[0].boobs += 100>>
 			<</if>>
 		<</if>>
@@ -1015,8 +1028,8 @@
 				<<set $args[0].hips += 1>>
 			<</if>>
 		<</if>>
-		<<if $args[0].boobs < 900>>
-			<<if random(1,100) > 40>>
+		<<if $args[0].boobs < 900*_gigantomastiaMod>>
+			<<if random(1,100) > 40/_gigantomastiaMod>>
 				<<set $args[0].boobs += 100>>
 			<</if>>
 		<</if>>
@@ -1035,8 +1048,8 @@
 				<<set $args[0].hips += 1>>
 			<</if>>
 		<</if>>
-		<<if $args[0].boobs < 800>>
-			<<if random(1,100) > 40>>
+		<<if $args[0].boobs < 800*_gigantomastiaMod>>
+			<<if random(1,100) > 40/_gigantomastiaMod>>
 				<<set $args[0].boobs += 100>>
 			<</if>>
 		<</if>>
@@ -1050,7 +1063,7 @@
 		<<if $args[0].height <= 174>>
 			<<set $args[0].height += either(1,1,1,2,2)>>
 		<</if>>
-		<<if $args[0].boobs > 200>>
+		<<if $args[0].boobs > 200 && _gigantomastiaMod != 3>>
 			<<set $args[0].boobs -= 100>>
 		<</if>>
 		<<if $args[0].clit > 0 && $args[0].clit < 4>>
@@ -1067,7 +1080,7 @@
 		<<if $args[0].height <= 174>>
 			<<set $args[0].height += either(0,1,1,1,2)>>
 		<</if>>
-		<<if $args[0].boobs > 200>>
+		<<if $args[0].boobs > 200 && _gigantomastiaMod != 3>>
 			<<set $args[0].boobs -= 50>>
 		<</if>>
 		<<if $args[0].clit > 0 && $args[0].clit < 4>>
@@ -1084,8 +1097,8 @@
 		<<if $args[0].height <= 174>>
 			<<set $args[0].height += either(0,0,1,1,1,2)>>
 		<</if>>
-		<<if $args[0].boobs < 500>>
-			<<if random(1,100) > 40>>
+		<<if $args[0].boobs < 500*_gigantomastiaMod>>
+			<<if random(1,100) > 40/_gigantomastiaMod>>
 				<<set $args[0].boobs += 100>>
 			<</if>>
 		<</if>>
@@ -1111,8 +1124,8 @@
 				<<set $args[0].hips += 1>>
 			<</if>>
 		<</if>>
-		<<if $args[0].boobs < 1200>>
-			<<if random(1,100) > 40>>
+		<<if $args[0].boobs < 1200*_gigantomastiaMod>>
+			<<if random(1,100) > 40/_gigantomastiaMod>>
 				<<set $args[0].boobs += 100>>
 			<</if>>
 		<</if>>
@@ -1131,8 +1144,8 @@
 				<<set $args[0].hips += 1>>
 			<</if>>
 		<</if>>
-		<<if $args[0].boobs < 1000>>
-			<<if random(1,100) > 40>>
+		<<if $args[0].boobs < 1000*_gigantomastiaMod>>
+			<<if random(1,100) > 40/_gigantomastiaMod>>
 				<<set $args[0].boobs += 100>>
 			<</if>>
 		<</if>>
@@ -1146,7 +1159,7 @@
 		<<if $args[0].height <= 174>>
 			<<set $args[0].height += either(1,1,1,2,2)>>
 		<</if>>
-		<<if $args[0].boobs > 200>>
+		<<if $args[0].boobs > 200 && _gigantomastiaMod != 3>>
 			<<set $args[0].boobs -= 100>>
 		<</if>>
 		<<if $args[0].clit > 0 && $args[0].clit < 4>>
@@ -1163,7 +1176,7 @@
 		<<if $args[0].height <= 174>>
 			<<set $args[0].height += either(0,1,1,1,2)>>
 		<</if>>
-		<<if $args[0].boobs > 200>>
+		<<if $args[0].boobs > 200 && _gigantomastiaMod != 3>>
 			<<set $args[0].boobs -= 50>>
 		<</if>>
 		<<if $args[0].clit > 0 && $args[0].clit < 4>>
@@ -1180,8 +1193,8 @@
 		<<if $args[0].height <= 174>>
 			<<set $args[0].height += either(0,0,1,1,1,2)>>
 		<</if>>
-		<<if $args[0].boobs < 800>>
-			<<if random(1,100) > 50>>
+		<<if $args[0].boobs < 800*_gigantomastiaMod>>
+			<<if random(1,100) > 50/_gigantomastiaMod>>
 				<<set $args[0].boobs += 100>>
 			<</if>>
 		<</if>>
@@ -1207,8 +1220,8 @@
 				<<set $args[0].hips += 1>>
 			<</if>>
 		<</if>>
-		<<if $args[0].boobs < 1600>>
-			<<if random(1,100) > 40>>
+		<<if $args[0].boobs < 1600*_gigantomastiaMod>>
+			<<if random(1,100) > 40/_gigantomastiaMod>>
 				<<set $args[0].boobs += 100>>
 			<</if>>
 		<</if>>
@@ -1227,8 +1240,8 @@
 				<<set $args[0].hips += 1>>
 			<</if>>
 		<</if>>
-		<<if $args[0].boobs < 1200>>
-			<<if random(1,100) > 40>>
+		<<if $args[0].boobs < 1200*_gigantomastiaMod>>
+			<<if random(1,100) > 40/_gigantomastiaMod>>
 				<<set $args[0].boobs += 100>>
 			<</if>>
 		<</if>>
@@ -1242,7 +1255,7 @@
 		<<if $args[0].height <= 174>>
 			<<set $args[0].height += either(1,1,1,2,2)>>
 		<</if>>
-		<<if $args[0].boobs > 200>>
+		<<if $args[0].boobs > 200 && _gigantomastiaMod != 3>>
 			<<set $args[0].boobs -= 100>>
 		<</if>>
 		<<if $args[0].clit > 0 && $args[0].clit < 4>>
@@ -1259,7 +1272,7 @@
 		<<if $args[0].height <= 174>>
 			<<set $args[0].height += either(0,1,1,1,2)>>
 		<</if>>
-		<<if $args[0].boobs > 200>>
+		<<if $args[0].boobs > 200 && _gigantomastiaMod != 3>>
 			<<set $args[0].boobs -= 50>>
 		<</if>>
 		<<if $args[0].clit > 0 && $args[0].clit < 4>>
@@ -1276,8 +1289,8 @@
 		<<if $args[0].height <= 174>>
 			<<set $args[0].height += either(0,0,1,1,1,2)>>
 		<</if>>
-		<<if $args[0].boobs < 800>>
-			<<if random(1,100) > 60>>
+		<<if $args[0].boobs < 800*_gigantomastiaMod>>
+			<<if random(1,100) > 60/_gigantomastiaMod>>
 				<<set $args[0].boobs += 100>>
 			<</if>>
 		<</if>>
@@ -1303,8 +1316,8 @@
 				<<set $args[0].hips += 1>>
 			<</if>>
 		<</if>>
-		<<if $args[0].boobs < 2000>>
-			<<if random(1,100) > 40>>
+		<<if $args[0].boobs < 2000*_gigantomastiaMod>>
+			<<if random(1,100) > 40/_gigantomastiaMod>>
 				<<set $args[0].boobs += 100>>
 			<</if>>
 		<</if>>
@@ -1323,8 +1336,8 @@
 				<<set $args[0].hips += 1>>
 			<</if>>
 		<</if>>
-		<<if $args[0].boobs < 1600>>
-			<<if random(1,100) > 40>>
+		<<if $args[0].boobs < 1600*_gigantomastiaMod>>
+			<<if random(1,100) > 40/_gigantomastiaMod>>
 				<<set $args[0].boobs += 100>>
 			<</if>>
 		<</if>>
@@ -1338,7 +1351,7 @@
 		<<if $args[0].height <= 174>>
 			<<set $args[0].height += either(1,1,1,2,2)>>
 		<</if>>
-		<<if $args[0].boobs > 200>>
+		<<if $args[0].boobs > 200 && _gigantomastiaMod != 3>>
 			<<set $args[0].boobs -= 100>>
 		<</if>>
 		<<if $args[0].clit > 0 && $args[0].clit < 4>>
@@ -1355,7 +1368,7 @@
 		<<if $args[0].height <= 174>>
 			<<set $args[0].height += either(0,1,1,1,2)>>
 		<</if>>
-		<<if $args[0].boobs > 200>>
+		<<if $args[0].boobs > 200 && _gigantomastiaMod != 3>>
 			<<set $args[0].boobs -= 50>>
 		<</if>>
 		<<if $args[0].clit > 0 && $args[0].clit < 4>>
@@ -1372,8 +1385,8 @@
 		<<if $args[0].height <= 174>>
 			<<set $args[0].height += either(0,0,1,1,1,2)>>
 		<</if>>
-		<<if $args[0].boobs < 800>>
-			<<if random(1,100) > 70>>
+		<<if $args[0].boobs < 800*_gigantomastiaMod>>
+			<<if random(1,100) > 70/_gigantomastiaMod>>
 				<<set $args[0].boobs += 100>>
 			<</if>>
 		<</if>>
@@ -1911,7 +1924,7 @@
 		<<elseif $args[0].height <= 163>>
 			<<set $args[0].height += 3>>
 		<</if>>
-		<<if $args[0].boobs > 200>>
+		<<if $args[0].boobs > 200 && _gigantomastiaMod != 3>>
 			<<set $args[0].boobs -= 100>>
 		<</if>>
 		<<if $args[0].dick > 0 && $args[0].dick < 6>>
@@ -1936,7 +1949,7 @@
 		<<elseif $args[0].height <= 163>>
 			<<set $args[0].height += 3>>
 		<</if>>
-		<<if $args[0].boobs > 200>>
+		<<if $args[0].boobs > 200 && _gigantomastiaMod != 3>>
 			<<set $args[0].boobs -= 50>>
 		<</if>>
 		<<if $args[0].dick > 0 && $args[0].dick < 6>>
@@ -2024,7 +2037,7 @@
 		<<elseif $args[0].height <= 171>>
 			<<set $args[0].height += 3>>
 		<</if>>
-		<<if $args[0].boobs > 200>>
+		<<if $args[0].boobs > 200 && _gigantomastiaMod != 3>>
 			<<set $args[0].boobs -= 100>>
 		<</if>>
 		<<if $args[0].dick > 0 && $args[0].dick < 6>>
@@ -2054,7 +2067,7 @@
 		<<elseif $args[0].height <= 168>>
 			<<set $args[0].height += 3>>
 		<</if>>
-		<<if $args[0].boobs > 200>>
+		<<if $args[0].boobs > 200 && _gigantomastiaMod != 3>>
 			<<set $args[0].boobs -= 50>>
 		<</if>>
 		<<if $args[0].dick > 0 && $args[0].dick < 6>>
@@ -2132,8 +2145,8 @@
 				<<set $args[0].butt += 1>>
 			<</if>>
 		<</if>>
-		<<if $args[0].boobs < 1000>>
-			<<if random(1,100) > 40>>
+		<<if $args[0].boobs < 1000*_gigantomastiaMod>>
+			<<if random(1,100) > 40/_gigantomastiaMod>>
 				<<set $args[0].boobs += 100>>
 			<</if>>
 		<</if>>
@@ -2169,8 +2182,8 @@
 				<<set $args[0].butt += 1>>
 			<</if>>
 		<</if>>
-		<<if $args[0].boobs < 900>>
-			<<if random(1,100) > 40>>
+		<<if $args[0].boobs < 900*_gigantomastiaMod>>
+			<<if random(1,100) > 40/_gigantomastiaMod>>
 				<<set $args[0].boobs += 100>>
 			<</if>>
 		<</if>>
@@ -2191,7 +2204,7 @@
 				<<set $args[0].voice -= 1>>
 			<</if>>
 		<</if>>
-		<<if $args[0].boobs > 200>>
+		<<if $args[0].boobs > 200 && _gigantomastiaMod != 3>>
 			<<set $args[0].boobs -= 50>>
 		<</if>>
 		<<if $args[0].dick > 0 && $args[0].dick < 6>>
@@ -2226,7 +2239,7 @@
 				<<set $args[0].voice -= 1>>
 			<</if>>
 		<</if>>
-		<<if $args[0].boobs > 200>>
+		<<if $args[0].boobs > 200 && _gigantomastiaMod != 3>>
 			<<set $args[0].boobs -= 50>>
 		<</if>>
 		<<if $args[0].dick > 0 && $args[0].dick < 6>>
@@ -2298,8 +2311,8 @@
 				<<set $args[0].hips += 1>>
 			<</if>>
 		<</if>>
-		<<if $args[0].boobs < 800>>
-			<<if random(1,100) > 40>>
+		<<if $args[0].boobs < 800*_gigantomastiaMod>>
+			<<if random(1,100) > 40/_gigantomastiaMod>>
 				<<set $args[0].boobs += 100>>
 			<</if>>
 		<</if>>
@@ -2320,8 +2333,8 @@
 				<<set $args[0].hips += 1>>
 			<</if>>
 		<</if>>
-		<<if $args[0].boobs < 700>>
-			<<if random(1,100) > 40>>
+		<<if $args[0].boobs < 700*_gigantomastiaMod>>
+			<<if random(1,100) > 40/_gigantomastiaMod>>
 				<<set $args[0].boobs += 100>>
 			<</if>>
 		<</if>>
@@ -2337,7 +2350,7 @@
 		<<elseif $args[0].height <= 173>>
 			<<set $args[0].height += 3>>
 		<</if>>
-		<<if $args[0].boobs > 200>>
+		<<if $args[0].boobs > 200 && _gigantomastiaMod != 3>>
 			<<set $args[0].boobs -= 100>>
 		<</if>>
 		<<if $args[0].dick > 0 && $args[0].dick < 6>>
@@ -2367,7 +2380,7 @@
 		<<elseif $args[0].height <= 173>>
 			<<set $args[0].height += 3>>
 		<</if>>
-		<<if $args[0].boobs > 200>>
+		<<if $args[0].boobs > 200 && _gigantomastiaMod != 3>>
 			<<set $args[0].boobs -= 50>>
 		<</if>>
 		<<if $args[0].dick > 0 && $args[0].dick < 6>>
@@ -2437,8 +2450,8 @@
 				<<set $args[0].hips += 1>>
 			<</if>>
 		<</if>>
-		<<if $args[0].boobs < 900>>
-			<<if random(1,100) > 40>>
+		<<if $args[0].boobs < 900*_gigantomastiaMod>>
+			<<if random(1,100) > 40/_gigantomastiaMod>>
 				<<set $args[0].boobs += 100>>
 			<</if>>
 		<</if>>
@@ -2457,8 +2470,8 @@
 				<<set $args[0].hips += 1>>
 			<</if>>
 		<</if>>
-		<<if $args[0].boobs < 800>>
-			<<if random(1,100) > 40>>
+		<<if $args[0].boobs < 800*_gigantomastiaMod>>
+			<<if random(1,100) > 40/_gigantomastiaMod>>
 				<<set $args[0].boobs += 100>>
 			<</if>>
 		<</if>>
@@ -2472,7 +2485,7 @@
 		<<if $args[0].height <= 174>>
 			<<set $args[0].height += either(1,1,1,2,2)>>
 		<</if>>
-		<<if $args[0].boobs > 200>>
+		<<if $args[0].boobs > 200 && _gigantomastiaMod != 3>>
 			<<set $args[0].boobs -= 100>>
 		<</if>>
 		<<if $args[0].dick > 0 && $args[0].dick < 6>>
@@ -2500,7 +2513,7 @@
 		<<if $args[0].height <= 174>>
 			<<set $args[0].height += either(0,1,1,1,2)>>
 		<</if>>
-		<<if $args[0].boobs > 200>>
+		<<if $args[0].boobs > 200 && _gigantomastiaMod != 3>>
 			<<set $args[0].boobs -= 50>>
 		<</if>>
 		<<if $args[0].dick > 0 && $args[0].dick < 6>>
@@ -2560,8 +2573,8 @@
 				<<set $args[0].hips += 1>>
 			<</if>>
 		<</if>>
-		<<if $args[0].boobs < 1200>>
-			<<if random(1,100) > 40>>
+		<<if $args[0].boobs < 1200*_gigantomastiaMod>>
+			<<if random(1,100) > 40/_gigantomastiaMod>>
 				<<set $args[0].boobs += 100>>
 			<</if>>
 		<</if>>
@@ -2580,8 +2593,8 @@
 				<<set $args[0].hips += 1>>
 			<</if>>
 		<</if>>
-		<<if $args[0].boobs < 1000>>
-			<<if random(1,100) > 40>>
+		<<if $args[0].boobs < 1000*_gigantomastiaMod>>
+			<<if random(1,100) > 40/_gigantomastiaMod>>
 				<<set $args[0].boobs += 100>>
 			<</if>>
 		<</if>>
@@ -2595,7 +2608,7 @@
 		<<if $args[0].height <= 174>>
 			<<set $args[0].height += either(1,1,1,2,2)>>
 		<</if>>
-		<<if $args[0].boobs > 200>>
+		<<if $args[0].boobs > 200 && _gigantomastiaMod != 3>>
 			<<set $args[0].boobs -= 100>>
 		<</if>>
 		<<if $args[0].dick > 0 && $args[0].dick < 6>>
@@ -2623,7 +2636,7 @@
 		<<if $args[0].height <= 174>>
 			<<set $args[0].height += either(0,1,1,1,2)>>
 		<</if>>
-		<<if $args[0].boobs > 200>>
+		<<if $args[0].boobs > 200 && _gigantomastiaMod != 3>>
 			<<set $args[0].boobs -= 50>>
 		<</if>>
 		<<if $args[0].dick > 0 && $args[0].dick < 6>>
@@ -2670,8 +2683,8 @@
 				<<set $args[0].hips += 1>>
 			<</if>>
 		<</if>>
-		<<if $args[0].boobs < 1600>>
-			<<if random(1,100) > 40>>
+		<<if $args[0].boobs < 1600*_gigantomastiaMod>>
+			<<if random(1,100) > 40/_gigantomastiaMod>>
 				<<set $args[0].boobs += 100>>
 			<</if>>
 		<</if>>
@@ -2690,8 +2703,8 @@
 				<<set $args[0].hips += 1>>
 			<</if>>
 		<</if>>
-		<<if $args[0].boobs < 1200>>
-			<<if random(1,100) > 40>>
+		<<if $args[0].boobs < 1200*_gigantomastiaMod>>
+			<<if random(1,100) > 40/_gigantomastiaMod>>
 				<<set $args[0].boobs += 100>>
 			<</if>>
 		<</if>>
@@ -2705,7 +2718,7 @@
 		<<if $args[0].height <= 174>>
 			<<set $args[0].height += either(1,1,1,2,2)>>
 		<</if>>
-		<<if $args[0].boobs > 200>>
+		<<if $args[0].boobs > 200 && _gigantomastiaMod != 3>>
 			<<set $args[0].boobs -= 100>>
 		<</if>>
 		<<if $args[0].dick > 0 && $args[0].dick < 6>>
@@ -2733,7 +2746,7 @@
 		<<if $args[0].height <= 174>>
 			<<set $args[0].height += either(0,1,1,1,2)>>
 		<</if>>
-		<<if $args[0].boobs > 200>>
+		<<if $args[0].boobs > 200 && _gigantomastiaMod != 3>>
 			<<set $args[0].boobs -= 50>>
 		<</if>>
 		<<if $args[0].dick > 0 && $args[0].dick < 6>>
@@ -2780,8 +2793,8 @@
 				<<set $args[0].hips += 1>>
 			<</if>>
 		<</if>>
-		<<if $args[0].boobs < 2000>>
-			<<if random(1,100) > 40>>
+		<<if $args[0].boobs < 2000*_gigantomastiaMod>>
+			<<if random(1,100) > 40/_gigantomastiaMod>>
 				<<set $args[0].boobs += 100>>
 			<</if>>
 		<</if>>
@@ -2800,8 +2813,8 @@
 				<<set $args[0].hips += 1>>
 			<</if>>
 		<</if>>
-		<<if $args[0].boobs < 1600>>
-			<<if random(1,100) > 40>>
+		<<if $args[0].boobs < 1600*_gigantomastiaMod>>
+			<<if random(1,100) > 40/_gigantomastiaMod>>
 				<<set $args[0].boobs += 100>>
 			<</if>>
 		<</if>>
@@ -2815,7 +2828,7 @@
 		<<if $args[0].height <= 174>>
 			<<set $args[0].height += either(1,1,1,2,2)>>
 		<</if>>
-		<<if $args[0].boobs > 200>>
+		<<if $args[0].boobs > 200 && _gigantomastiaMod != 3>>
 			<<set $args[0].boobs -= 100>>
 		<</if>>
 		<<if $args[0].dick > 0 && $args[0].dick < 6>>
@@ -2843,7 +2856,7 @@
 		<<if $args[0].height <= 174>>
 			<<set $args[0].height += either(0,1,1,1,2)>>
 		<</if>>
-		<<if $args[0].boobs > 200>>
+		<<if $args[0].boobs > 200 && _gigantomastiaMod != 3>>
 			<<set $args[0].boobs -= 50>>
 		<</if>>
 		<<if $args[0].dick > 0 && $args[0].dick < 6>>
diff --git a/src/pregmod/rePregInventor.tw b/src/pregmod/rePregInventor.tw
index 85149afe6cb48118fba7f19b3cb338337cfb21e6..8d1549144dea6c8d881f622226b44cc1cb423b7d 100644
--- a/src/pregmod/rePregInventor.tw
+++ b/src/pregmod/rePregInventor.tw
@@ -27,7 +27,7 @@
 	<<else>>
 		<<if $activeSlave.boobs >= 20000>>
 			grin and rubs the sides of $his debilitatingly large breasts with anticipation.
-		<<elseif Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
+		<<elseif ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
 			grin and pushes $his augmented tits together to give you a view of $his impressive cleavage.
 		<<elseif $activeSlave.boobs >= 3000>>
 			grin and hefts one of $his massive breasts with both hands, sucking on $his nipple to give you a show while you wait.
@@ -239,7 +239,7 @@
 			sink face first into $his warm, room filling ass cleavage
 		<<elseif $activeSlave.butt > 5>>
 			grab generous handfuls of $his humongous ass
-		<<elseif Math.floor($activeSlave.buttImplant/$activeSlave.butt) > .60>>
+		<<elseif ($activeSlave.buttImplant/$activeSlave.butt) > .60>>
 			rest the weight of your upper body on $his implant inflated ass cheeks
 		<<elseif $activeSlave.butt > 2>>
 			slap $his generous ass
@@ -369,7 +369,7 @@
 			debilitating, insanely enormous ass
 		<<elseif $activeSlave.butt > 5>>
 			huge ass
-		<<elseif Math.floor($activeSlave.buttImplant/$activeSlave.butt) > .60>>
+		<<elseif ($activeSlave.buttImplant/$activeSlave.butt) > .60>>
 			implant swollen ass cheeks
 		<<elseif $activeSlave.butt > 2>>
 			plump ass
@@ -455,7 +455,7 @@
 			eye wateringly massive tits
 		<<elseif ($activeSlave.boobs >= 3000)>>
 			huge tits
-		<<elseif Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
+		<<elseif ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
 			luscious, augmented tits
 		<<else>>
 			petite breasts
@@ -465,7 +465,7 @@
 			couch smothering ass cheeks.
 		<<elseif $activeSlave.butt > 5>>
 			enormous ass.
-		<<elseif Math.floor($activeSlave.buttImplant/$activeSlave.butt) > .60>>
+		<<elseif ($activeSlave.buttImplant/$activeSlave.butt) > .60>>
 			implant-filled ass.
 		<<elseif $activeSlave.butt > 2>>
 			delicious looking ass.
@@ -612,7 +612,7 @@
 			causing $his insanely enormous tits to flop onto the tile at the pool's edge with a loud "thwack."
 		<<elseif ($activeSlave.boobs >= 3000)>>
 			resting $his enormous breasts on the pool's edge, causing them to push up into $his chin as $he looks up at you.
-		<<elseif Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
+		<<elseif ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
 			resting $his huge, implant-distended tits on the pool's edge, causing them to push up into $his chin as $he looks up at you.
 		<<else>>
 			giving you a nice view of $his cute tits.
@@ -648,7 +648,7 @@
 			colossal breasts spread out around you, completely surrounding your head. With some effort, you part $his heavy cleavage enough to be able to continue listening to $him without being smothered.
 		<<elseif ($activeSlave.boobs >= 3000)>>
 			massive chest fills the space between you, blocking your view of $his face. You spread $his cleavage enough to be able to continue listening to $him.
-		<<elseif Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
+		<<elseif ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
 			fat, implanted tits fill the space between you, blocking your view of $his face. With some effort, you spread $his tightly packed, spherical cleavage enough to be able to continue listening to $him.
 		<<else>>
 			spherical belly pushes into your crotch.
@@ -713,7 +713,7 @@
 			enormous, gel-slicked ass,
 		<<elseif $activeSlave.butt > 4>>
 			plush, gel-slicked ass,
-		<<elseif Math.floor($activeSlave.buttImplant/$activeSlave.butt) > .60>>
+		<<elseif ($activeSlave.buttImplant/$activeSlave.butt) > .60>>
 			implant-filled, gel-slicked ass,
 		<<elseif $activeSlave.butt > 2>>
 			perfect, gel-slicked ass,
diff --git a/src/pregmod/rePregInventorText.tw b/src/pregmod/rePregInventorText.tw
index 90edf6bf416627c76b838ef1a31fddd1069373e6..30421c5e3d66fab2b3a4e60fbccceda91a55fa17 100644
--- a/src/pregmod/rePregInventorText.tw
+++ b/src/pregmod/rePregInventorText.tw
@@ -10,7 +10,7 @@
 			debilitatingly enormous, mind boggling breasts
 		<<elseif ($activeSlave.boobs >= 3000)>>
 			enormous breasts
-		<<elseif Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
+		<<elseif ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
 			implant inflated tits
 		<<else>>
 			upper body
@@ -70,7 +70,7 @@
 				rubs the bases of $his gargantuan breasts in hungry anticipation.
 			<<elseif ($activeSlave.boobs >= 3000)>>
 				rubs the sides of $his enormous breasts in hungry anticipation.
-			<<elseif Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
+			<<elseif ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
 				rubs the sides of $his fat, implanted tits in hungry anticipation.
 			<<else>>
 				<<if $activeSlave.nipples != "fuckable">>tweaks<<else>>fingers<</if>> $his nipples through the sheer fabric of $his pretty slave gown while regarding the host with a look of hungry anticipation.
@@ -80,7 +80,7 @@
 				pushes $his arm stubs into what little of the sides of $his gargantuan breasts $he can reach, a look of hungry anticipation on $his face.
 			<<elseif ($activeSlave.boobs >= 3000)>>
 				pushes $his arm stubs into the sides of $his enormous breasts, a look of hungry anticipation on $his face.
-			<<elseif Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
+			<<elseif ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
 				pushes $his arm stubs into the sides of $his fat, implanted tits, a look of hungry anticipation on $his face.
 			<<else>>
 				rubs $his arm stubs against $his nipples through $his pretty slave gown, a look of hungry anticipation on $his face.
@@ -152,7 +152,7 @@
 			your slave's astoundingly enormous, slimed up cleavage, pumping it up and down to get their unfathomable mass jiggling while she nibbles at and whispers into the squirming baby machine's ear, just loud enough for the mic to pick it up.
 		<<elseif ($activeSlave.boobs >= 3000)>>
 			your slave's massive, slimed up tits, lewdly abusing one breast while she nibbles at and whispers into the squirming baby machine's ear, just loud enough for the mic to pick it up.
-		<<elseif Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
+		<<elseif ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
 			your slave's fat, implanted tits, pumping it up and down to get their tightly packed mass bobbing while she nibbles and whispers into the baby machine's ear, just loud enough for the mic to pick it up.
 		<<else>>
 			your slave's breasts, rubbing it up and down one of $his pert nipples while she simultaneously toys with the ridge of one of the baby machine's ears and both nibbles on and whispers into the other, just loud enough for the mic to pick it up.
diff --git a/src/pregmod/saAgent.tw b/src/pregmod/saAgent.tw
index 9016bdae8ac7b9cf3dc807bb21a3b52acd44ec18..3b2226747cb1b00c149ad0fd1b8bc5b34a88325d 100644
--- a/src/pregmod/saAgent.tw
+++ b/src/pregmod/saAgent.tw
@@ -1,5 +1,7 @@
 :: SA agent [nobr]
 
+<<set _gigantomastiaMod = $slaves[$i].geneticQuirks.gigantomastia == 2 ? ($slaves[$i].geneticQuirks.macromastia == 2 ? 3 : 2) : 1>>
+
 <<if $slaves[$i].boobsImplantType == 1>>
 	<<set $slaves[$i].boobsImplant += 50, $slaves[$i].boobs += 50>>
 	<<if ($slaves[$i].boobs > 50000)>>
@@ -9,19 +11,32 @@
 		<</if>>
 	<</if>>
 <</if>>
-<<if $slaves[$i].geneMods.NCS == 1>>
-		/* NCS is blocking boob expansion. */
-<<elseif ($slaves[$i].boobsImplant > 1000)>>
-	<<if ($slaves[$i].boobs-$slaves[$i].boobsImplant < 1000) && (random(1,100) > 60)>>
-		<<set $slaves[$i].boobs += 50>>
+<<if $slaves[$i].geneMods.NCS == 1>> /* NCS is blocking boob expansion. */
+	<<if ($slaves[$i].boobsImplant > 1000)>>
+		<<if ($slaves[$i].boobs-$slaves[$i].boobsImplant < 1000) && (random(1,100) > 60)>>
+			<<set $slaves[$i].boobs += 50>>
+		<</if>>
+	<<elseif ($slaves[$i].boobsImplant > 600)>>
+		<<if ($slaves[$i].boobs-$slaves[$i].boobsImplant < 500) && (random(1,100) > 60)>>
+			<<set $slaves[$i].boobs += 50>>
+		<</if>>
+	<<elseif ($slaves[$i].boobsImplant > 0)>>
+		<<if ($slaves[$i].boobs-$slaves[$i].boobsImplant < 300) && (random(1,100) > 60)>>
+			<<set $slaves[$i].boobs += 50>>
+		<</if>>
 	<</if>>
-<<elseif ($slaves[$i].boobsImplant > 600)>>
-	<<if ($slaves[$i].boobs-$slaves[$i].boobsImplant < 500) && (random(1,100) > 60)>>
-		<<set $slaves[$i].boobs += 50>>
+<</if>>
+<<if $slaves[$i].geneticQuirks.macromastia == 2 && $slaves[$i].geneticQuirks.gigantomastia == 2>>
+	<<if $slaves[$i].boobs < 100000 && $slaves[$i].weight >= -95>>
+		<<set $slaves[$i].boobs += 30>>
+	<</if>>
+<<elseif $slaves[$i].geneticQuirks.gigantomastia == 2>>
+	<<if $slaves[$i].boobs < 25000 && $slaves[$i].weight >= -95>>
+		<<set $slaves[$i].boobs += 20>>
 	<</if>>
-<<elseif ($slaves[$i].boobsImplant > 0)>>
-	<<if ($slaves[$i].boobs-$slaves[$i].boobsImplant < 300) && (random(1,100) > 60)>>
-		<<set $slaves[$i].boobs += 50>>
+<<elseif $slaves[$i].geneticQuirks.macromastia == 2>>
+	<<if $slaves[$i].boobs < 5000 && $slaves[$i].weight >= -95>>
+		<<set $slaves[$i].boobs += 10>>
 	<</if>>
 <</if>>
 <<if $slaves[$i].buttImplantType == 1>>
@@ -104,6 +119,12 @@
 	<<if $slaves[$i].pubertyXX == 0>>
 		<<if $slaves[$i].physicalAge >= $slaves[$i].pubertyAgeXX>>
 			<<set $slaves[$i].pubertyXX = 1>>
+			<<if $slaves[$i].geneticQuirks.gigantomastia == 3 && random(1,100) < $slaves[$i].hormoneBalance>>
+				<<set $slaves[$i].geneticQuirks.gigantomastia = 2>>
+			<</if>>
+			<<if $slaves[$i].geneticQuirks.macromastia == 3 && random(1,100) < $slaves[$i].hormoneBalance>>
+				<<set $slaves[$i].geneticQuirks.macromastia = 2>>
+			<</if>>
 		<</if>>
 	<</if>>
 <</if>>
@@ -132,6 +153,12 @@
 		<</if>>
 	<</if>>
 	<<if ($slaves[$i].preg >= $slaves[$i].pregData.normalBirth/4)>>
+		<<if $slaves[$i].geneticQuirks.gigantomastia == 3 && random(1,200) < $slaves[$i].hormoneBalance>>
+			<<set $slaves[$i].geneticQuirks.gigantomastia = 2>>
+		<</if>>
+		<<if $slaves[$i].geneticQuirks.macromastia == 3 && random(1,200) < $slaves[$i].hormoneBalance>>
+			<<set $slaves[$i].geneticQuirks.macromastia = 2>>
+		<</if>>
 		<<if $slaves[$i].geneMods.NCS == 1>>
 			/* Sort-of No-op, NCS prevents boob growth */
 			<<set _boobTarget = 0>>
@@ -176,6 +203,7 @@
 				<<set _boobTarget = 400>>
 			<</if>>
 		<</if>>
+		<<set _boobTarget *= _gigantomastiaMod>>
 		<<if ($slaves[$i].pregType >= 30)>>
 			<<if ($slaves[$i].weight <= 65)>>
 				<<set $slaves[$i].weight += 1>>
@@ -478,6 +506,13 @@
 	<<set $slaves[$i].induceLactation-->>
 <</if>>
 
+<<if $slaves[$i].geneticQuirks.gigantomastia == 3 && random(70-$slaves[$i].physicalAge,300) < $slaves[$i].hormoneBalance>>
+	<<set $slaves[$i].geneticQuirks.gigantomastia = 2>>
+<</if>>
+<<if $slaves[$i].geneticQuirks.macromastia == 3 && random(70-$slaves[$i].physicalAge,300) < $slaves[$i].hormoneBalance>>
+	<<set $slaves[$i].geneticQuirks.macromastia = 2>>
+<</if>>
+
 <<if ($slaves[$i].hStyle != "shaved" && $slaves[$i].bald != 1 && $slaves[$i].haircuts == 0) && ($slaves[$i].hLength < 150)>>
 	<<set $slaves[$i].hLength += 1>>
 <</if>>
diff --git a/src/pregmod/saInflation.tw b/src/pregmod/saInflation.tw
index 6678fa03ce4bcc3ac7feae58949616ab5664133a..1b2f8e11e83462a1f516b8851f8c7f943cce2cea 100644
--- a/src/pregmod/saInflation.tw
+++ b/src/pregmod/saInflation.tw
@@ -530,26 +530,28 @@
 <<if $slaves[$i].inflationType == "milk" && $slaves[$i].bellyFluid >= 1500>>
 	<<set _rearQuirk = $slaves[$i].geneticQuirks.rearLipedema == 2 ? 2 : 0>>
 	<<set _rearQuirkDivider = _rearQuirk == 0 ? 1 : _rearQuirk>>
+	<<set _gigantomastiaMod = $slaves[$i].geneticQuirks.gigantomastia == 2 ? ($slaves[$i].geneticQuirks.macromastia == 2 ? 3 : 2) : 1>>
 	<<if $slaves[$i].weight < 200>>
 		$His body @@.lime;grows a little more padded@@ as it absorbs the milk contained in $his digestive track.
 		<<set $slaves[$i].weight += 2>>
 	<</if>>
-	<<if random(1,100) > 50 && if $slaves[$i].boobs < 3000>>
-			$His breasts @@.lime;swell@@ with added fat as $he digests the milk contained in $his digestive track.
-			<<set $slaves[$i].boobs += 200>>
-		<</if>>
+	<<if random(1,100) > 50/_gigantomastiaMod && if $slaves[$i].boobs < 3000*_gigantomastiaMod>>
+		$His breasts @@.lime;swell@@ with added fat as $he digests the milk contained in $his digestive track.
+		<<set $slaves[$i].boobs += 200>>
 	<</if>>
 	<<if random(1,100) > (50/_rearQuirkDivider) && $slaves[$i].butt < 7*_rearQuirk>>
-			$His butt @@.lime;swells@@ with added fat as $he digests the milk contained in $his digestive track.
-			<<set $slaves[$i].butt += 1>>
-		<</if>>
+		$His butt @@.lime;swells@@ with added fat as $he digests the milk contained in $his digestive track.
+		<<set $slaves[$i].butt += 1>>
 	<</if>>
 <<elseif $slaves[$i].inflationType == "food" && $slaves[$i].bellyFluid >= 1500>>
+	<<set _rearQuirk = $slaves[$i].geneticQuirks.rearLipedema == 2 ? 2 : 0>>
+	<<set _rearQuirkDivider = _rearQuirk == 0 ? 1 : _rearQuirk>>
+	<<set _gigantomastiaMod = $slaves[$i].geneticQuirks.gigantomastia == 2 ? ($slaves[$i].geneticQuirks.macromastia == 2 ? 3 : 2) : 1>>
 	<<if $slaves[$i].weight < 200>>
 		$His body @@.lime;rapidly gains weight@@ as it digests the food contained in $his digestive track.
 		<<set $slaves[$i].weight += 4>>
 	<</if>>
-	<<if random(1,100) > 50 && $slaves[$i].boobs < 3000>>
+	<<if random(1,100) > 50/_gigantomastiaMod && $slaves[$i].boobs < 3000*_gigantomastiaMod>>
 		$His breasts @@.lime;swell@@ with added fat as $he digests the food contained in $his digestive track.
 		<<set $slaves[$i].boobs += 200>>
 	<</if>>
diff --git a/src/pregmod/seFCTVshows.tw b/src/pregmod/seFCTVshows.tw
index 581a76abbf5fbe68aec96818b57077d9aac8b68f..3f666a68220e8cd30f5706a28b607417779f32b3 100644
--- a/src/pregmod/seFCTVshows.tw
+++ b/src/pregmod/seFCTVshows.tw
@@ -31,19 +31,107 @@
 	<</if>>
 <</if>>
 
+/* Setup Millie art, since she is on multiple channels */
+<<if $seeImages == 1>>
+	<<set _millie = BaseSlave()>>
+	<<set _millie.devotion = 100>>
+	<<set _millie.trust = 100>>
+	<<set _millie.weight = 120>>
+	<<set _millie.boobs = 5000>>
+	<<set _millie.hips = 2>>
+	<<set _millie.butt = 5>>
+	<<set _millie.hLength = 50>>
+	<<set _millie.skin = "dark olive">>
+	<<set _millie.hStyle = "luxurious">>
+	<<set _millie.hColor = "strawberry blonde">>
+	<<set _millie.clothes = "a leotard">>/*no cow suit yet, sadly*/
+<</if>>
+
 <br><br>
 <<switch $randShow>>
 <<case 0>>
+	<<if $seeImages == 1>>
+		<<set _kirk = BaseSlave()>>
+		<<set _kirk.actualAge = 44>>
+		<<set _kirk.devotion = 0>>
+		<<set _kirk.trust = 0>>
+		<<set _kirk.health = random(60,80)>>
+		<<set _kirk.muscles = 60>>
+		<<set _kirk.weight = 30>>
+		<<set _kirk.waist = 90>>
+		<<set _kirk.boobs = 0>>
+		<<set _kirk.shoulders = 3>>
+		<<set _kirk.butt = 0>>
+		<<set _kirk.hips = -1>>
+		<<set _kirk.hLength = 10>>
+		<<set _kirk.hColor = "dark brown">>
+		<<set _kirk.faceShape = "masculine">>
+		<<set _kirk.hStyle = "messy">>
+		<<set _kirk.eyewear = "glasses">>
+		<<set _kirk.clothes = "conservative clothing">>
+		<<set _kirk.shoes = "flats">>
+
+		<<set _jules = BaseSlave()>>
+		<<set _jules.devotion = 0>>
+		<<set _jules.trust = 0>>
+		<<set _jules.health = random(60,80)>>
+		<<set _jules.weight = 30>>
+		<<set _jules.waist = 30>>
+		<<set _jules.boobs = 700>>
+		<<set _jules.butt = 3>>
+		<<set _jules.hLength = 50>>
+		<<set _jules.hStyle = "luxurious">>
+		<<set _jules.hColor = "auburn">>
+		<<set _jules.boobshape = "perky">>
+		<<set _jules.clothes = "panties and pasties">>/*pasties alone don't have art at this time, apaprently */
+		<<set _jules.collar = "styligh leather">>
+	<</if>>
 	<<set $showOne += 1, $lastShow = 0>>
 	It looks like the random function chose the FCNN stream channel, and you've started watching in the middle of a news segment.
 	<<set $randShow = random(0,2)+1>>
 	<<if $randShow == 1 && $showOne > 3 || $showOne == 1>>
+		<<if $seeImages == 1>>
+			<div class="imageColumn">
+				<div class="imageRef medImg">
+					<<SlaveArt _kirk 2 0>>
+				</div>
+				<div class="imageRef medImg">
+					<<SlaveArt _jules 2 0>>
+				</div>
+			</div>
+		<</if>>
 		The segment is being anchored by the middle aged Kirk McMahon, and he's joined by the ever-popular "Anchor Slave", Jules. She's got a nice figure, and the only thing she's wearing to cover her perky breasts is a pair of FCNN pasties. She has on a fine leather collar; the large gold charm hanging from the front seems to be a stylized emblem of a ship's anchor merged with a microphone. The pair seems to be discussing the recent actions and punishment of the reality show slave Slooty.
 		<br><br>Jules seems to be quite passionate about the subject, the animated way she talks is causing her sizable tits to bounce all over the place. "It doesn't matter how famous or valuable that slut thinks she is, her behavior was just wrong on SO many levels. It makes all of us good slaves look bad. If you ask me, her master's choice of punishment fits the attention whore perfectly!"
 		<br><br>Kirk's face looks more than a little surprised, but you can't quite tell if it's an act or not. "You won't get any argument from me that she deserves to be punished... but getting chained up with an obedience collar and feeder system in the middle of Times Square, free for public use? A slum like Manhattan, she'll never <<if $seeExtreme == 0>><i>enjoy</i><<else>>survive<</if>> the 10 day sentence!"
 		<br><br>Jules smiles. "That's exactly right Master McMahon, she's going to be <<if $seeExtreme == 0>><i>hugged until she smiles</i><<else>>fucked to death<</if>>. Her precious popularity in the old world will have the locals lined up all the way to New New Jersey waiting for their turn. I'd never question her master's decision, but if it were me, I'd pump her full of curatives and stimulants during the sentence. That way, she doesn't <<if $seeExtreme == 0>><i>smile</i><<else>>die or pass out<</if>> too soon. I think her master is being lenient after the way she badmouthed him in a live broadcast."
 		<br><br>...
 	<<elseif $randShow == 2 && $showOne > 3 || $showOne == 2>>
+		<<if $seeImages == 1>>
+			<<set _model = BaseSlave()>>
+			<<set _model.devotion = -90>>
+			<<set _model.trust = 0>>
+			<<set _model.health = random(60,80)>>
+			<<set _model.face = -20>>
+			<<set _model.hLength = 50>>
+			<<set _model.hStyle = "messy">>
+			<<set _model.hColor = "blazing red">>
+			<<set _model.underArmHStyle = "bushy">>
+			<<set _model.underArmHColor = "blazing red">>
+			<<set _model.height = 150>>
+			<<set _model.boobs = 700>>
+			<<set _model.boobshape = "perky">>
+			<<set _model.shoulders = 0>>
+			<<set _model.waist = 180>>
+			<<set _model.butt = 3>>
+			<<set _model.hips = 3>>
+			<<set _model.clothes = "spats and a tank top">>
+			<<set _model.shoes = "flats">>
+			<div class="imageColumn">
+				<div class="imageRef medImg">
+					<<SlaveArt _model 2 0>>
+				</div>
+			</div>
+		<</if>>
 		The program is showing some poorly-shot video showing a woman with flaming-red short hair angrily shouting at a large but uncomfortable-looking man. The title text at the bottom says: <b>"EmancipationGate: Emancipation Movement Exposed"</b> The video continues, revealing more of the angry woman. She's short, wearing a sweaty tank top that makes her bushy underarm hair stand out. Based on the audio thus far, it seems she's trying to tell the large man to keep <<if $seeExtreme == 0>><i>hugging their captives until they smile</i><<else>>torturing their captives until they die<</if>>, that it has to be convincing for the camera. The man says he isn't comfortable doing that to kids, but the woman shouts him down by saying they're only migrant man brats before beginning some nonsensical babble about patriarchy and slavery. The video seems to be being shot on a small handheld device, and pans over to reveal a bunch of severely <<if $seeExtreme == 0>><i>hugged</i><<else>>beaten<</if>> children in slave chains that look like obvious S&M props to your well-trained eye. The angry woman's rant is still continuing from the background, but suddenly stops to be replaced with a yell: <i>"Get the fuck away from the subjects, you better not be fucking filming any..."</i> and the video cuts out.
 		<br><br>
 		The segment cuts back to two news anchors, a dark-haired man with a mustache and an aging bottle blonde.
@@ -51,6 +139,17 @@
 		<br><br>The mustached man looks knowingly at the camera. "Anyone remotely familiar with Free City slavery knew the documentary was complete bullshit, but what we didn't know was just how far those radicalists were willing to go to make us all look bad."
 		<br><br>...
 	<<elseif $randShow == 3 && $showOne > 3 || $showOne == 3>>
+		<<if $seeImages == 1>>
+			<<set _jules.vaginalAccessory = "large dildo">>
+			<div class="imageColumn">
+				<div class="imageRef medImg">
+					<<SlaveArt _kirk 2 0>>
+				</div>
+				<div class="imageRef medImg">
+					<<SlaveArt _jules 2 0>>
+				</div>
+			</div>
+		<</if>>
 		The segment seems to be more of a conversational piece. The two hosts are sitting next to each other on one couch. Samuel Klein, a handsome man with dark blonde hair and a winning smile, can't help but be overshadowed by his cohost. The popular SlaveAnchor Jules might be mistaken for just another gorgeous face and body, but it's her brilliant wit and sure-footed advocacy that made her famous. She's wearing her usual slave anchor collar, and her large natural breasts are only covered by the standard FCNN pasties, leaving the perky flesh free to jiggle enticingly. On this show her lower half is revealed; it's usually hidden behind a desk. The dark red material of her narrow panties matches her auburn hair, and reveals her broad hips and long slender legs.
 		<br><br>The camera cuts back to two distinguished looking gentlemen, one is labeled by the screen as medical researchers. <<if $PC.medicine == 100>>You vaguely recognize both of them from your time studying medicine. <</if>>One of them continues the conversation, apparently answering a question. <i>"That's right, the results of our research tell us what everyone already suspected, but now with an indisputable weight of evidence behind it."</i> The other nods and continues, <i>"our meta analysis examines over two decades of data, and nearly 6000 independent studies. We can safely say that free city slaves are healthier than the average person living anywhere in the old world. While a few of the wealthiest countries of the old world may surpass one or two areas, our slaves have better nutrition, standard of living, are more psychologically stable, have longer lives, and are happier on average as well."</i> The first gentleman interjects, <i>"We even found strong evidence that the higher sexual tempo and libido-stimulating training given to sex slaves greatly contributes to their life span; they live even longer than the average slave, and even look younger than their age."</i>
 		<br><br>The camera switches back to the two anchors, showing an excited Jules hefting and bouncing her tits. "They've barely sagged at all since they stopped growing, now I know why!"
@@ -77,6 +176,28 @@
 		You don't spend very much time actually watching the show; the randy opening, perverted competitions, and constant talk of creampies quickly has the pleasure slave in your bed eager for some attention from her own arcology owner. You spend the rest of the evening doing something a lot more fun than watching reality TV.
 	<</if>>
 <<case 2>>
+	<<if $seeImages == 1>>
+		<<set _model = BaseSlave()>>
+		<<set _model.devotion = 0>>
+		<<set _model.trust = 0>>
+		<<set _model.health = random(60,80)>>
+		<<set _model.muscles = 60>>
+		<<set _model.boobs = 700>>
+		<<set _model.butt = 3>>
+		<<set _model.hLength = 50>>
+		<<set _model.skin = "tan">>
+		<<set _model.hStyle = "messy">>
+		<<set _model.hColor = "blonde">>
+		<<set _model.boobshape = "perky">>
+		<div class="imageColumn">
+			<div class="imageRef medImg">
+				<<SlaveArt _model 2 0>>
+			</div>
+			<div class="imageRef medImg">
+				<<SlaveArt _model 2 0>>
+			</div>
+		</div>
+	<</if>>
 	<<set $showThree += 1, $lastShow = 2>>
 	<<set $randShow = random(0,2)+1>>
 	It looks like the random function chose to play the 'Home and Slave' stream channel. The current show features a set of female twins wearing nothing but tool belts. Their assets aren't particularly noteworthy, but they have a great hourglass figure, toned muscles, and gorgeous girl-next-door faces. The girls are hosting a DIY show, and seem to be performing a lot of the work themselves. The occasional bead of sweat makes their smooth tan skin really stand out. It seems like this time they are
@@ -151,7 +272,7 @@
 		<<set $activeSlave.skill.entertainment = random(50,80)>>
 		<<set $activeSlave.skill.oral = random(20,60)>>
 		<<set $activeSlave.skill.anal = 0>>
-		<<set $activeSlave.skill.whore = 0>>
+		<<set $activeSlave.skill.whoring = 0>>
 		<<set $activeSlave.intelligence = random(51,70)>>
 		<<set $activeSlave.intelligenceImplant = 30>>
 		<<set $activeSlave.devotion = random(60,90)>>
@@ -198,7 +319,7 @@
 		<<set $activeSlave.skill.vaginal = random(50,80)>>
 		<<set $activeSlave.skill.oral = random(40,80)>>
 		<<set $activeSlave.skill.anal = random(20,50)>>
-		<<set $activeSlave.skill.whore = random(0,50)>>
+		<<set $activeSlave.skill.whoring = random(0,50)>>
 		<<set $activeSlave.devotion = random(40,70)>>
 		<<set $activeSlave.trust = random(40,70)>>
 		<<set $activeSlave.fetish = "pregnancy">>
@@ -292,7 +413,7 @@
 		<<set $activeSlave.skill.oral = random(50,100)>>
 		<<set $activeSlave.skill.vaginal = random(50,100)>>
 		<<set $activeSlave.skill.anal = random(20,80)>>
-		<<set $activeSlave.skill.whore = random(20,80)>>
+		<<set $activeSlave.skill.whoring = random(20,80)>>
 		<<set $activeSlave.intelligence = random(-15,80)>>
 		<<set $activeSlave.intelligenceImplant = 15>>
 		<<set $activeSlave.devotion = random(60,90)>>
@@ -326,7 +447,7 @@
 		<<set $activeSlave.skill.vaginal = 15>>
 		<<set $activeSlave.skill.oral = 15>>
 		<<set $activeSlave.skill.anal = 15>>
-		<<set $activeSlave.skill.whore = 15>>
+		<<set $activeSlave.skill.whoring = 15>>
 		<<set $activeSlave.sexualFlaw = either("hates anal", "hates oral", "hates penetration", "idealistic")>>
 		<<set $activeSlave.behavioralFlaw = either("arrogant", "bitchy", "hates men")>>
 		<<set $activeSlave.energy = 10>>
@@ -347,7 +468,7 @@
 		<<set $activeSlave.prostate = 2>>
 		<<set $activeSlave.skill.oral = random(30,60)>>
 		<<set $activeSlave.skill.anal = random(20,50)>>
-		<<set $activeSlave.skill.whore = random(0,25)>>
+		<<set $activeSlave.skill.whorng = random(0,25)>>
 		<<set $activeSlave.devotion = random(50,80)>>
 		<<set $activeSlave.trust = random(50,80)>>
 		<<set $activeSlave.origin = "You purchased her from FCTV's Home Slave Shopping stream channel.">>
@@ -365,7 +486,7 @@
 		<<set $activeSlave.balls = random(3,6)>>
 		<<set $activeSlave.skill.oral = random(40,80)>>
 		<<set $activeSlave.skill.anal = random(40,80)>>
-		<<set $activeSlave.skill.whore = random(40,70)>>
+		<<set $activeSlave.skill.whoring = random(40,70)>>
 		<<set $activeSlave.muscles = either(20, 50)>>
 		<<set $activeSlave.energy = random(70,100)>>
 		<<set $activeSlave.attrXY = random(70,100)>>
@@ -395,7 +516,7 @@
 	<<elseif $randShow == 3>> /* hyperpregnant */
 		<<if $activeSlave.race == "amerindian" || $activeSlave.race == "asian" || $activeSlave.race == "indo-aryan">>an<<else>>a<</if>> $activeSlave.race breeder, young and healthy with an advanced <<if $seeHyperPreg == 0>><i>@@.pink;super pregnancy.@@</i><<else>>@@.pink;hyper pregnancy.@@<</if>> $activeSlave.slaveName is really into making babies, and has even had $his hips surgically widened to help $him carry a large brood. Our tests here at HSS show that $he's pregnant with $activeSlave.pregType babies!"
 	<<elseif $randShow == 4>> /* superfetation */
-		a special slave named $activeSlave.slaveName who has quite the gift, @@.pink;superfetation!@@. $He can become pregnant while pregnant! Isn't that amazing? $He may have a few miles on $him, having just completed a double pregnancy, but with a trait like that, $he's more than worth $his price if you like your <<= $girl>>s to constantly have a bun in the oven."
+		a special slave named $activeSlave.slaveName who has quite the gift, @@.pink;superfetation!@@ $He can become pregnant while pregnant! Isn't that amazing? $He may have a few miles on $him, having just completed a double pregnancy, but with a trait like that, $he's more than worth $his price if you like your <<= $girl>>s to constantly have a bun in the oven."
 	<<elseif $randShow == 5>> /* MILF */
 		<<if $activeSlave.race == "amerindian" || $activeSlave.race == "asian" || $activeSlave.race == "indo-aryan">>an<<else>>a<</if>> $activeSlave.race @@.pink;MILF.@@ $He's no longer young, but still quite attractive. $He has been a slave for many years now, and has been trained well. $He also has a good array of skills that you can put to use. $He has huge tits and a huge ass to play with, but $he'd also make <<if $seePreg == 0>><i>sandwiches</i><<else>>good stock for a breeding program<</if>>."
 	<<elseif $randShow == 6>> /* discount young hottie */
@@ -406,33 +527,53 @@
 	<<elseif $randShow == 9>> /* mpreg dickgirl */
 		a strong young $activeSlave.race $girl that retains $his cock and balls. $activeSlave.slaveName has something that makes $him special: thanks to medical science $he's got a @@.pink;functional ass womb.@@ That's right folks, this slave is fertile and can get knocked up if you inseminate $his asshole. That's pretty amazing, to be honest, and exceptionally rare. Don't let this opportunity slip by!"
 	<</if>>
-<<slaveCost $activeSlave>>
-<<if $randShow < 3>>
-	<<set $slaveCost *= 1.3>>
-<<elseif $randShow == 4>>
-	<<set $slaveCost *= 2>>
-<<elseif $randShow == 6>>
-	<<set $slaveCost *= 0.7>>
-<<elseif $randShow > 6>>
-	<<set $slaveCost *= 1.3>>
-<</if>>
-<<set $slaveCost = 500*Math.trunc($slaveCost/500)>>
-The offered price is <<print cashFormat($slaveCost)>>.
+	<<slaveCost $activeSlave>>
+	<<if $randShow < 3>>
+		<<set $slaveCost *= 1.3>>
+	<<elseif $randShow == 4>>
+		<<set $slaveCost *= 2>>
+	<<elseif $randShow == 6>>
+		<<set $slaveCost *= 0.7>>
+	<<elseif $randShow > 6>>
+		<<set $slaveCost *= 1.3>>
+	<</if>>
+	<<set $slaveCost = 500*Math.trunc($slaveCost/500)>>
+	The offered price is <<print cashFormat($slaveCost)>>.
 
-<<if $cash >= $slaveCost>>
-	<br>
-	<<link "Buy $his slave contract">>
-		<<run cashX(forceNeg($slaveCost), "slaveTransfer", $activeSlave)>>
-		<<set $nextLink = "Scheduled Event", $returnTo = "Scheduled Event">>
-		<<goto "New Slave Intro">>
-	<</link>>
-<<else>>
-	//@@.red;You lack the necessary funds to buy this slave.@@//
-<</if>>
-<br><br>
-<<set $saleDescription = 1>><<include "Long Slave Description">><<set $saleDescription = 0>>
+	<<if $cash >= $slaveCost>>
+		<br>
+		<<link "Buy $his slave contract">>
+			<<run cashX(forceNeg($slaveCost), "slaveTransfer", $activeSlave)>>
+			<<set $nextLink = "Scheduled Event", $returnTo = "Scheduled Event">>
+			<<goto "New Slave Intro">>
+		<</link>>
+	<<else>>
+		//@@.red;You lack the necessary funds to buy this slave.@@//
+	<</if>>
+	<br><br>
+	<<set $saleDescription = 1>><<include "Long Slave Description">><<set $saleDescription = 0>>
 
 <<case 5>>
+	<<if $seeImages == 1>>
+		<<set _model = BaseSlave()>>
+		<<set _model.devotion = 0>>
+		<<set _model.trust = 0>>
+		<<set _model.boobs = 700>>
+		<<set _model.hips = 2>>
+		<<set _model.butt = 5>>
+		<<set _model.hLength = 50>>
+		<<set _model.hStyle = "luxurious">>
+		<<set _model.hColor = "blonde">>
+		<<set _model.boobshape = "perky">>
+		<<set _model.belly = 10000>>
+		<<set _model.preg = 35>>
+		<<set _model.clothes = "a maternity dress">>
+		<div class="imageColumn">
+			<div class="imageRef medImg">
+				<<SlaveArt _model 2 0>>
+			</div>
+		</div>
+	<</if>>
 	<<set $showFive += 1, $lastShow = 5>>
 	It looks like the random function chose to play an episode of the slave-breeding for beginners series: 'Husbandry with Millie'. The show is hosted by the famous and charismatic Millie, a slave breeder from Arcturus who appears to be in her mid thirties. She's wearing something resembling a maternity dress over her large pregnant belly, but the loose fabric doesn't hide her enormous hips and complementary ass. The dress only comes part of the way up her chest, leaving her large milk-engorged breasts exposed as they rest atop the fabric. Millie begins the show the same way as always, by giving her viewers some encouragement. "Anyone can become a breeder, even you! Just be willing to learn, and as I always say..." she pats her full belly meaningfully "be ready to get your hands dirty!"
 	<br><br>
@@ -451,7 +592,7 @@ The offered price is <<print cashFormat($slaveCost)>>.
 		<br><br>
 		Sitting down in her comfortable-looking chair, Millie begins her lecture. "So, thanks to the miracles of the modern dairy and industrial <<if $seeDicks == 0>><i>banana</i><<else>>cock<</if>> milkers, a reliable supply of <<if $seeDicks == 0>><i>banana juice</i><<else>>cum<</if>> is available for most citizens. This is definitely the least expensive option for those starting out, and combined with easy access, seems to be a popular choice for new breeders. It's also a common pitfall, so thank goodness you're watching now! Industrial dairies simply aren't focused on reproduction in most arcologies. Owners are focused on production, quantity over quality, and most of the material is used for slave nutrition and industrial purposes. Even if your arcology has a reproduction-focused <<if $seeDicks == 0>><i>banana cream</i><<else>>jizz<</if>> farm, they're usually focused on breeding menials. You still have no way of knowing what you're getting. It makes any attempt at proper husbandry nearly impossible. You don't want to sink all your resources into buying and caring for breeding sluts, only to end up with a litter only fit to be menials!"
 		<br><br>
-		Your best bet if you're low on resources is looking to prominent citizens with high quality slaves. Often times, for a modest stud fee, you can get your bitches pregnant with a known stud of high quality. Particularly when it comes to older bulls, you can often get your bitches bred for nearly the same cost as dairy <<if $seeDicks == 0>><i>cream</i><<else>>jizz<</if>>! You do have to do the leg work, but think of it as picking the best bull for your breeding plan. As you get more established, purchase an older bull for yourself. Older bulls are better-behaved, and still perfectly capable of helping to take care of your pregnant sluts, when they aren't knocking up the empty ones, that is. A slave may be old, but the DNA in that <<if $seeDicks == 0>><i>banana juice</i><<else>>cum<</if>> is the same as it was 20 years ago!"
+		"Your best bet if you're low on resources is looking to prominent citizens with high quality slaves. Often times, for a modest stud fee, you can get your bitches pregnant with a known stud of high quality. Particularly when it comes to older bulls, you can often get your bitches bred for nearly the same cost as dairy <<if $seeDicks == 0>><i>cream</i><<else>>jizz<</if>>! You do have to do the leg work, but think of it as picking the best bull for your breeding plan. As you get more established, purchase an older bull for yourself. Older bulls are better-behaved, and still perfectly capable of helping to take care of your pregnant sluts, when they aren't knocking up the empty ones, that is. A slave may be old, but the DNA in that <<if $seeDicks == 0>><i>banana juice</i><<else>>cum<</if>> is the same as it was 20 years ago!"
 		<br><br>
 		Millie gives the viewers a big smile. "If you take anything away from this episode, just remember that industrial <<if $seeDicks == 0>><i>juice</i><<else>>cum<</if>> is used to make industrial slaves!"
 		<br><br>.....
@@ -469,6 +610,13 @@ The offered price is <<print cashFormat($slaveCost)>>.
 	<</if>>
 
 <<case 6>>
+	<<if $seeImages == 1>>
+		<div class="imageColumn">
+			<div class="imageRef medImg">
+				<<SlaveArt _millie 2 0>>
+			</div>
+		</div>
+	<</if>>
 	<<set $showSix += 1, $lastShow = 6>>
 	It looks like the random function chose to play an episode of the 'Modern Dairy' edutainment series, which opens with a montage of milk-related food and cooking shots. After the last of the opening credits disappears, the show sticks to a single shot from the montage, a delicious looking bowl of cereal. The camera zooms out to reveal the show's host wearing her trademark cow print leotard, and getting just a little too much enjoyment out of her cereal. She slowly puts the spoon down while savoring her cereal, reluctantly swallowing and starting the show. "Hi there y'all, welcome to another episode of Modern Dairy!" She gives the camera a wave — setting her gargantuan melons wobbling inside the spandex-like leotard — and the camera fades to black.
 	<br><br>
@@ -549,14 +697,48 @@ The offered price is <<print cashFormat($slaveCost)>>.
 	<</if>>
 
 <<case 8>>
+	<<if $seeImages == 1>>
+		<div class="imageColumn">
+			<div class="imageRef medImg">
+				<<SlaveArt _millie 2 0>>
+			</div>
+		</div>
+	<</if>>
 	<<set $showEight += 1, $lastShow = 8>>
 	It looks like the random function chose to play a preview of the how-to series "Extreme Gestation for Fun and Profit", hosted by Millie. It seems like the show's going to cover topics ranging from hyper-pregnancy to broodmother implants, and even hints and some sort of medical technique to allow anal pregnancy in males.
 	<br><br>.....
 
 <<case 9>>
+	<<if $seeImages == 1>>
+		<<set _model = BaseSlave()>>
+		<<set _model.devotion = 0>>
+		<<set _model.trust = 0>>
+		<<set _model.health = 70>>
+		<<set _model.hLength = 50>>
+		<<set _model.hStyle = "neat">>
+		<<set _model.hColor = "brown">>
+		<<set _model.boobs = 700>>
+		<<set _model.boobshape = "perky">>
+		<<set _model.waist = 180>>
+		<<set _model.butt = 3>>
+		<<set _model.hips = 3>>
+		<<set _model.clothes = "conservative clothing">>
+		<<set _model.shoes = "flats">>
+	<</if>>
 	<<set $showNine += 1, $lastShow = 9, $randShow = random(0,3)+1>>
 	It looks like the random function chose to play
 	<<if $randShow == 1>>
+		<<if $seeImages == 1>>
+			<<set _model.belly = 10000>>
+			<<set _model.preg = 35>>
+			<<set _model.makeup = 2>>
+			<<set _model.shoes = "none">>
+			<div class="imageColumn">
+				<div class="imageRef medImg">
+					<<SlaveArt _model 2 0>>
+				</div>
+			</div>
+		<</if>>
 		a documentary on the surging Repopulation movement: "Continuing the Dream". After the opening credits, the documentary introduces a young and extremely pregnant woman as the commentator. The program makes an impassioned argument about the need for a new generation of citizens and slaves that were born into the dream of the free cities. The woman is wearing semi-conservative business attire, and has on elegant makeup. She looks somewhat plain when compared to the hyper-sexualized style of other FCTV programming, though she does make it plain over the course of the program that she loves sex more than ever. She tends to use herself as an example to show that pregnancy no longer means limitations or sacrifice, instead emphasizing that she's on her fifth pregnancy and would rather be with child than without.
 		<br><br>The woman makes two main points during the course of the documentary. The first is that the combined population of the free cities needs to grow explosively for 'Free City Society' to become stable. She points out several economic reasons, including the drive to invest in research and infrastructure. She has interviews with experts explaining the need for independence; that the Free Cities are still dependent on the old world industrially and financially, and that the population must expand dramatically to avoid going down with the metaphorical ship. The more Free Cities there are, the more they become free and independent of the old world.
 		<br><br>The second point concerns the source of the new citizens and slaves that the Free Cities need. Her arguments concerning citizens focus on the unique culture of the Free Cities, and the direction that the future society will take. She points out that immigrants from the old world are rooted in its decaying culture. She asks her viewers how long it took them to adapt to their new lives, and how often they find themselves doubting their new home subconsciously. She admits that even she sometimes finds something wrong or repulsive, until she realizes that it's the ghost of her past life clinging to her. A noted psychologist talks about the strong hold people's earlier lives has on them, and how developing the promise of the Free Cities will need a generation untainted by the old world. The documentary's argument for slaves largely comes down to the fact that second-generation slaves are happier, better adjusted, and simply better slaves.
@@ -566,35 +748,152 @@ The offered price is <<print cashFormat($slaveCost)>>.
 		<br><br>Overall, it's a convincing documentary, if a little too emotional for your tastes.
 
 	<<elseif $arcologies[0].FSGenderFundamentalist == "unset" && $randShow == 2>>
+		<<if $seeImages == 1>>
+			<<set _model.dick = 6>>
+			<<set _model.boobs = 750>>
+			<div class="imageColumn">
+				<div class="imageRef medImg">
+					<<SlaveArt _model 2 0>>
+				</div>
+			</div>
+		<</if>>
 		a documentary on the increasingly-popular Gender Radicalist movement titled: "Power, not Biology". After the opening credits, the documentary introduces an androgynous documentarian in a nicely-cut suit. The finely tailored suit doesn't try to hide the person's breasts, which seem to be a pretty average D-cup. Similarly, another bulge is visible stretching down one of the pants legs. The futanari opens with a pretty simple question: "Am I a man, or am I a woman?" The documentary is focused on answering that question in the context of a modern era where medical science means that genitalia are irrelevant. It argues that a person's body no longer has any relation to their sexuality or ambition, that being free means choosing the body that pleases you most, and that society needs new criteria from which to determine gender.
 		<br><br>The criteria suggested by the documentary is power. The idea is simple; the powerful are male, the weak are female. It argues that the biology and sexual proclivities of a person simply can't represent them any longer. The powerful are often free to choose the body and activities they wish to pursue, while the weak have those decisions made for them. It's a practical argument, and the documentary gives a long list of evidence supporting it, from expert interviews to ancient civilizations that followed a similar idea. The concept is somewhat appealing to you; after all, you wield extraordinary power, and a large part of that power includes altering the bodies of others. Whatever you choose to do, you can't see any reason to let your slaves and citizens criticize you for it.
 		<br><br>.....
 
 	<<elseif $arcologies[0].FSGenderRadicalist == "unset" && $randShow == 2>>
+		<<if $seeImages == 1>>
+			<<set _model.faceShape = "masculine">>
+			<<set _model.waist = 180>>
+			<<set _model.weight = 180>>
+			<<set _model.boobs = 0>>
+			<<set _model.butt = 0>>
+			<<set _model.hips = -1>>
+			<<set _model.shoulders = 1>>
+			<<set _model.dick = 2>>
+			<div class="imageColumn">
+				<div class="imageRef medImg">
+					<<SlaveArt _model 2 0>>
+				</div>
+			</div>
+		<</if>>
 		a documentary on conservative Gender Fundamentalism movement titled: "It's Eve, NOT Steve". After the outdated graphics finish displaying the garish opening credits, a portly man in late middle age introduces himself as Reverend Brad, the apparent commentator of the program. You don't pay much attention, but learn that apparently the Futanari Sisters are whore agents of Satan. You also learn that you're apparently destined for hell because of the medical technology in your penthouse that could be used to alter someone's naughty bits. You did get a good laugh when the reverend started yelling that choir boys are boys, and if he wanted a girl he would've found a nun.
 		<br><br>You have to admit that most of the show is complete bullshit, but you can't deny that it's useful for controlling your citizens. As long as they're filling their heads with this bullshit, they won't be getting any dangerous ideas from somewhere else. In a more practical sense, it's a lot easier to manage an arcology and a house full of slaves when you don't have to worry about crazy gender issues or people disliking pregnant slaves.
 		<br><br>.....
 
 	<<elseif $arcologies[0].FSSlimnessEnthusiast == "unset" && $randShow == 3>>
+		<<if $seeImages == 1>>
+			<<set _model.dick = 4>>
+			<<set _model.boobs = 0>>
+			<<set _model.hLength = 10>>
+			<<set _model.hColor = "black">>
+			
+			<<set _model2 = BaseSlave()>>
+			<<set _model2.devotion = 0>>
+			<<set _model2.trust = 0>>
+			<<set _model2.health = 70>>
+			<<set _model2.hLength = 50>>
+			<<set _model2.hStyle = "luxurious">>
+			<<set _model2.hColor = "blonde">>
+			<<set _model2.boobs = 700>>
+			<<set _model2.boobshape = "perky">>
+			<<set _model2.waist = 180>>
+			<<set _model2.butt = 3>>
+			<<set _model2.hips = 3>>
+			<<set _model2.clothes = "a ball gown">>
+			<<set _model2.shoes = "heels">>
+			<div class="imageColumn">
+				<div class="imageRef medImg">
+					<<SlaveArt _model 2 0>>
+				</div>
+				<div class="imageRef medImg">
+					<<SlaveArt _model2 2 0>>
+				</div>
+			</div>
+		<</if>>
 		a documentary on the growing Asset Expansionist movement titled: "More of a Good Thing". After a brief set of opening credits the documentary dives immediately into short clips of numerous interviews with stacked women stating that they love having big tits and a big ass. Eventually, a man and woman are introduced as the hosts of the program. Both are finely dressed in the recent fashions, and despite the subject of the documentary, they don't have humongous assets. The woman does have huge breasts, wide hips, and a large derrière; the man has a noticeable bulge in his pants, but nothing extreme. The hosts explain that seeing Asset Expansionism as a call for ridiculous size is something of a misconception. They emphasize that it's about the freedom to enjoy more of a good thing.
 		<br><br>The documentary makes several arguments in favor of the movement, and is clear about explaining the natural biological attraction humans have to large assets. By interviewing stacked members of the movement and psychological experts alike, they try to demonstrate how larger assets lead to happier and more pleasurable lives, both in and out of the bedroom. The documentary neatly tops off its argument by demonstrating how assets have been expanding naturally since the start of the twentieth century, and claiming that it's silly to idolize the way humans looked before modern nutrition and medicine. Western countries in the old world already had average bust sizes of D-cup or larger by the turn of the century, the hosts claim that trying to go back to smaller sizes is synonymous with reducing the prosperity of free citizens.
 		<br><br>.....
 
 	<<elseif $arcologies[0].FSAssetExpansionist == "unset" && $randShow == 3>>
+		<<if $seeImages == 1>>
+			<<set _model.weight = -30>>
+			<<set _model.butt = 0>>
+			<<set _model.boobs = 450>>
+			<<set _model2.clothes = "a slave gown">>
+			<div class="imageColumn">
+				<div class="imageRef medImg">
+					<<SlaveArt _model 2 0>>
+				</div>
+			</div>
+		<</if>>
 		a documentary on the Slimness Enthusiast counter movement titled: "Slim Is In". Artistic opening credits play across the screen before a slim woman walks up and begins talking to the camera conversationally. She seems to be in her mid to late thirties, and is wearing conservative makeup to accent her natural beauty. Her narrow waist combines with her slim hips and full shoulders to create a balanced but muted hourglass profile. It's a look that was popular for decades on fashion models in the old world, and it improves the attractiveness of her B- or C-cup breasts and taut butt. It's obvious that the woman aspires to be a role model in addition to being the documentary's commentator.
 		<br><br>Much of the documentary's arguments center around the concept of fashion and the privileged. They point out how in the past societal changes have altered what people find attractive, giving skin tans as an example. When most worked outside and only the privileged stayed indoors pale skin was considered attractive. When the world changed and most people worked indoors, suddenly the tan skin of those with leisure time to spend outside came into vogue. She argues that modern hormones can easily expand the assets of the masses, but that only the privileged can afford to sculpt themselves into an ideal form like hers. She points out that even though the masses may imitate with surgery, they'll never be able to copy the naturally good bone structure and vibrancy of the well-bred elite.
 		<br><br>.....
 
 	<<elseif $arcologies[0].FSTransformationFetishist == "unset" && $randShow == 4>>
+		<<if $seeImages == 1>>
+			<<set _model.devotion = 100>>
+			<<set _model.trust = 100>>
+			<<set _model.health = 70>>
+			<<set _model.hLength = 50>>
+			<<set _model.hStyle = "luxurious">>
+			<<set _model.hColor = "blonde">>
+			<<set _model.boobs = 700>>
+			<<set _model.boobshape = "perky">>
+			<<set _model.waist = 180>>
+			<<set _model.butt = 3>>
+			<<set _model.hips = 3>>
+			<<set _model.clothes = "a ball gown">>
+			<<set _model.shoes = "heels">>
+			
+			<<set _model2 = BaseSlave()>>
+			<<set _model2.dick = 4>>
+			<<set _model2.boobs = 0>>
+			<<set _model2.hLength = 10>>
+			<<set _model2.hColor = "grey">>
+			<<set _model2.clothes = "conservative clothing">>
+			<<set _model2.shoes = "flats">>
+			<div class="imageColumn">
+				<div class="imageRef medImg">
+					<<SlaveArt _model 2 0>>
+				</div>
+				<div class="imageRef medImg">
+					<<SlaveArt _model2 2 0>>
+				</div>
+			</div>
+		<</if>>
 		a documentary on the spreading Body Purist movement titled: "Don't Settle for Imitations". The opening credits are displayed over a series of comparison images showing beautiful breasts and asses next to obviously artificial imitations of the same. The screen splits and shows the two hosts in their own environments side by side. One is an extremely attractive doctor, her body is exquisitely curvy underneath her lab coat and her face is an impossible combination of beautiful and cute. The other host is an artist with graying hair; he's working in his studio to create a life-size sculpture of the first host. He starts off the documentary by asking why people are so eager to destroy the natural beauty of the human form. The doctor continues by asking why people are so impatient that they get implants instead of using a superior process of targeted hormonal growth.
 		<br><br>The documentary keeps up the two-viewpoint style and approaches the issue from two directions. The first is the stark aesthetic differences between natural and artificial bodies. It demonstrates why implants always fall short of the beauty they seek to imitate, and how those with implants are doomed to a vicious cycle of surgery to try and recapture the beauty they lost in the initial surgery. The other angle, presented by the doctor, is a lot more practical. It points out the numerous shortcomings of implants when compared to natural growth, such as the frequent need for maintenance surgeries, the significant extra health risks, the reduced pleasure and sensitivity felt by implant patients, and the extreme difficulty of a patient to get what they want. Taken together the argument is pretty simple: why get implants when other medical options are cheaper, safer, more effective, healthier, and more attractive?
 		<br><br>.....
 
 	<<elseif $arcologies[0].FSBodyPurist == "unset" && $randShow == 4>>
+		<<if $seeImages == 1>>
+			<<set _model2.dick = 4>>
+			<<set _model2.boobs = 0>>
+			<<set _model2.hLength = 10>>
+			<<set _model2.hColor = "grey">>
+			<div class="imageColumn">
+				<div class="imageRef medImg">
+					<<SlaveArt _model 2 0>>
+				</div>
+			</div>
+		<</if>>
 		a documentary on the rise of the Transformation Fetish titled: "The Mass Insanity of Adding Mass". The opening credits are styled to look like a psychological case study from a mental institution. When the credits finish, the video cuts to a scene of a man sitting behind a desk, the whole shot is high contrast due to the harsh lighting from a lone desk lamp. The middle-aged man screams 'hard-boiled' and looks like he walked straight out of a noir film to host this documentary. His opening monologue makes it pretty clear that this documentary has a lot of parallels with a crime documentary. Worse, is that the evidence and expert witnesses available to the producers were apparently overwhelming, because the program seems rushed trying to fit as much as it can into a narrow time slot.
 		<br><br>Evidence and whatever else be damned, this isn't the kind of documentary that should be on the FCTV stream in your arcology. You tell $assistantName to remind you to send a complaint in the morning.
 
 	<<else>>
+		<<if $seeImages == 1>>
+			<<set _model.belly = 10000>>
+			<<set _model.preg = 35>>
+			<<set _model.makeup = 2>>
+			<<set _model.shoes = "none">>
+			<div class="imageColumn">
+				<div class="imageRef medImg">
+					<<SlaveArt _model 2 0>>
+				</div>
+			</div>
+		<</if>>
 		a documentary on the surging Repopulation movement: "Continuing the Dream". After the opening credits, the documentary introduces a young and extremely pregnant woman as the commentator. The program makes an impassioned argument about the need for a new generation of citizens and slaves that were born into the dream of the free cities. The woman is wearing semi-conservative business attire, and has on elegant makeup. She looks somewhat plain when compared to the hyper-sexualized style of other FCTV programming, though she does make it plain over the course of the program that she loves sex more than ever. She tends to use herself as an example to show that pregnancy no longer means limitations or sacrifice, instead emphasizing that she's on her fifth pregnancy and would rather be with child than without.
 		<br><br>The woman makes two main points during the course of the documentary. The first is that the combined population of the free cities needs to grow explosively for 'Free City Society' to become stable. She points out several economic reasons, including the drive to invest in research and infrastructure. She has interviews with experts explaining the need for independence; that the Free Cities are still dependent on the old world industrially and financially, and that the population must expand dramatically to avoid going down with the metaphorical ship. The more Free Cities there are, the more they become free and independent of the old world.
 		<br><br>The second point concerns the source of the new citizens and slaves that the Free Cities need. Her arguments concerning citizens focus on the unique culture of the Free Cities, and the direction that the future society will take. She points out that immigrants from the old world are rooted in its decaying culture. She asks her viewers how long it took them to adapt to their new lives, and how often they find themselves doubting their new home subconsciously. She admits that even she sometimes finds something wrong or repulsive, until she realizes that it's the ghost of her past life clinging to her. A noted psychologist talks about the strong hold people's earlier lives has on them, and how developing the promise of the Free Cities will need a generation untainted by the old world. The documentary's argument for slaves largely comes down to the fact that second-generation slaves are happier, better adjusted, and simply better slaves.
@@ -605,6 +904,39 @@ The offered price is <<print cashFormat($slaveCost)>>.
 	<</if>>
 
 <<case 10>>
+	<<if $seeImages == 1>>
+		<<set _mindy = BaseSlave()>>
+		<<set _mindy.devotion = 100>>
+		<<set _mindy.trust = 100>>
+		<<set _mindy.health = 70>>
+		<<set _mindy.hLength = 50>>
+		<<set _mindy.hStyle = "luxurious">>
+		<<set _mindy.hColor = "strawberry blonde">>
+		<<set _mindy.boobs = 1400>>
+		<<set _mindy.nipples = "huge">>
+		<<set _mindy.boobshape = "perky">>
+		<<set _mindy.areolae = 4>>
+		<<set _mindy.waist = 180>>
+		<<set _mindy.butt = 3>>
+		<<set _mindy.hips = 3>>
+		<<set _mindy.clothes = "a string bikini">>
+		
+		<<set _mike = BaseSlave()>>
+		<<set _mike.dick = 7>>
+		<<set _mike.faceShape = "masculine">>
+		<<set _mike.boobs = 0>>
+		<<set _mike.hLength = 10>>
+		<<set _mike.hColor = "dark brown">>
+		<<set _mike.clothes = "sport shorts">>
+		<div class="imageColumn">
+			<div class="imageRef medImg">
+				<<SlaveArt _mindy 2 0>>
+			</div>
+			<div class="imageRef medImg">
+				<<SlaveArt _mike 2 0>>
+			</div>
+		</div>
+	<</if>>
 	<<set $showTen += 1, $lastShow = 10>>
 	It looks like the random function chose to play a competitive game show 'Cum and Cream Challenge' The program has a short opening sequence showing a variety of male and female contestants competing in a variety of lewd and messy body fluid competitions. The program flashes to a title screen where the letters are being spelled out in white fluids: "CUM and CREAM CHALLENGE". The writing is messy enough to <<if $showTen == 1>>make you wonder<<else>>keep you wondering<</if>> if slaves were actually trained to spell out the text each week, or if it's just some clever camera work. The camera pans up past a large dripping <<if $seeDicks == 0>><i>frankfurter</i><<else>>cock<</if>> and two massive nipples, eventually revealing the two hosts that look to be in their early twenties. <<if $showTen < 2>>A muscular man wearing athletic clothes, and a buxom young woman in a bikini that looks more like a microkini on her large breasts and hips. The pair is helpfully labeled on screen as Mike and Mindy, and as the camera gets closer it reveals that both have rather sizable endowments. Mike's crotch is soaked, and Mindy's bikini top allows small rivulets of milk to stream down from the sodden fabric. <<else>>The fluid enthusiast Mike and Mindy pair are wearing their usual style in new colors, the clothes appearing to be as soddenly wet as any other episode.<</if>>
 	<br><br>
@@ -701,15 +1033,15 @@ The offered price is <<print cashFormat($slaveCost)>>.
 		<br><br>"Hey Scott, do you have anything a bit more conservative?" The woman asked. "We've been over this." Scott said. "Not showing off your breasts is seen as very rude here." Scott frowned, "Well, that's not entirely correct, but it is seen as distinctly unfriendly; the only girls who don't show some cleavage are frigid cunts and old-worlders fresh off the boat."
 		<br><br>The woman kept glaring in the mirror. "I understand that, but what is the point of this?" she said, pulling at the slits in the fabric at her sides. "Oh, those are for girls who want get milked on-the-go and not disrupt the view of their cleavage. Also, for this." The man said as he reached through the slits to give her breasts a polite squeeze.
 		<br><br>The woman wriggled out of the man's grasp and turned to face him. She attempted to cross her arms across her chest in a protective fashion, but all she managed to do was make her breasts bulge enticingly. Scott sighed and pinched the bridge of his nose, "You really need to work on that." he said. She just glared at him "I'll never be able to take you out in public, much less find you a job, if you keep acting like that when people try to greet you."
-		<br><br>The woman huffed and turned back to continue glaring at the mirror. "Don't you huff at me young lady." Scott said, his face a stern mask. "If someone doesn't give you a squeeze or press breasts with you the first time you meet, it doesn't mean that they hold your beloved old-world values, it means they're snubbing you." The woman wilted at his words and turned around, opening her mouth to speak
+		<br><br>The woman huffed and turned back to continue glaring at the mirror. "Don't you huff at me young lady." Scott said, his face a stern mask. "If someone doesn't give you a squeeze or press breasts with you the first time you meet, it doesn't mean that they hold your beloved old-world values, it means they're snubbing you." The woman wilted at his words and turned around, opening her mouth to speak.
 		<br><br>Any response died on her lips as a little golden haired girl bounced into the room. She wore a thong printed with cartoon cows and nothing else. An old-worlder would say the girl looked 'absurd' or 'cartoonishly proportioned', an arcology citizen would say the old-worlder looked like they needed some cheap tooth removal. In the girl's arms she carried a bundle of clothing. "Daddy, I got more clothes for Cathy." The little girl said, presenting the bundle.
 		<br><br>Scott's face softened and gave the little girl's breasts a gentle squeeze before taking the bundle. "Thank you, sweetheart." He said before presenting the bundle to Cathy. His daughter beamed and then jiggled over to sit on the love seat across from the mirror. He followed her to the love seat, sat down, and lifted her on to his lap. She squealed and giggled before wiggling her bottom on his crotch. The girl grabbed her father's hands and guided them to her breasts. Scott obligingly started groping her. Cathy just stared at the bundle with such intensity one might think she was trying to force the clothes to change into jeans and a hoodie with force of will alone. "Go try it on." Scott said. Cathy sighed, walked into the adjacent bathroom and closed the door.
-		<br><br>"Daddy, why does Cathy have to leave when she changes clothes?" the little girl questioned. Scott continued groping his daughter and thought for a moment before replying. "Sarah, Cathy comes from a very different place and they do things differently there. From her perspective, she is a stranger in an even stranger land" He gave Sarah's breasts a firm squeeze before continuing. "She'll do things that will confuse and irritate you, but I want you keep being patient with her, ok?"
-		<br><br>After a moment, she nodded her head and begrudgingly said, "Ok". Scott smiled at his daughter and kissed the crown of her head before giving her another firm squeeze. "Thank you, sweetheart." Scott grinned and his voice took on a tone that only a parent can manage. "Hey, who's my cuddly moo cow?" Sarah blushed, but said nothing. "Who's my cuddly moo cow?" he asked again, his tone reaching diabetes inducing levels. "I am" she said softly "You are!" he declared before giving her breasts a jiggle and another kiss on her crown.
+		<br><br>"Daddy, why does Cathy have to leave when she changes clothes?" the little girl questioned. Scott continued groping his daughter and thought for a moment before replying. "Sarah, Cathy comes from a very different place and they do things differently there. From her perspective, she is a stranger in an even stranger land." He gave Sarah's breasts a firm squeeze before continuing. "She'll do things that will confuse and irritate you, but I want you keep being patient with her, ok?"
+		<br><br>After a moment, she nodded her head and begrudgingly said, "Ok". Scott smiled at his daughter and kissed the crown of her head before giving her another firm squeeze. "Thank you, sweetheart." Scott grinned and his voice took on a tone that only a parent can manage. "Hey, who's my cuddly moo cow?" Sarah blushed, but said nothing. "Who's my cuddly moo cow?" he asked again, his tone reaching diabetes inducing levels. "I am," she said softly "You are!" he declared before giving her breasts a jiggle and another kiss on her crown.
 		<br><br>A moment past in companionable silence before Scott remembered something. "Hey sweetheart, why didn't Sadie come back with you?" Sarah made a sound of surprise and said, "Oh, mommy got a bit drippy getting into her exo and needed Sadie for licky. Mommy also wants you to pound her boobies after you're done with Cathy."
-		<br><br>"Alright, June will help you take care of your morning milkies while Sadie and I tend to your mother." he said. "But I wanna watch" she pleaded. He shook his head and said, "You need to have your milkies and mommy's going to use the bedroom milker, so you're going to use the one in the kitchen." "I can use my backpack milker" she said quickly. He gave her a look and his voice took on a wry tone. "Weren't you just telling me that your milker is old and we need to get you a new one? I guess you'll have to wait until then." Sarah looked up at her father, unshed tears in her eyes. "Please?" she pleaded. Scott sighed deeply and said, "Alright, go get your milker after we're done here." Sarah gave her father a sunny smile and cheered.
+		<br><br>"Alright, June will help you take care of your morning milkies while Sadie and I tend to your mother," he said. "But I wanna watch!" she pleaded. He shook his head and said, "You need to have your milkies and mommy's going to use the bedroom milker, so you're going to use the one in the kitchen." "I can use my backpack milker" she said quickly. He gave her a look and his voice took on a wry tone. "Weren't you just telling me that your milker is old and we need to get you a new one? I guess you'll have to wait until then." Sarah looked up at her father, unshed tears in her eyes. "Please?" she pleaded. Scott sighed deeply and said, "Alright, go get your milker after we're done here." Sarah gave her father a sunny smile and cheered.
 		<br><br>Scott called out to Cathy, "Come on out and give us a look!" The door to the bathroom opened and Cathy stepped out, tugging at her skirt. The clothing was a simple blouse and skirt affair with a Holstein pattern. In truth, it didn't look like something that would offend old world sensibilities, except for the fact the skirt was so short that her frilly panties were in plain view.
-		<br><br>"Do you have a skirt that's a little longer?" Cathy said and tugged at her skirt again. "It's supposed to look like that." Scott explained. Cathy looked skeptical. "Really?" she asked. Sarah gave Cathy a look that asked if she really was that stupid. "Why would you wear pretty panties and never show anyone?" She asked rhetorically. Cathy started on a hot retort, but was interrupted by Scott. "We'll stop for now and pick this later. You can put your new clothes away." Cathy sighed, picked up her cloths, and walked out the door.
+		<br><br>"Do you have a skirt that's a little longer?" Cathy said and tugged at her skirt again. "It's supposed to look like that." Scott explained. Cathy looked skeptical. "Really?" she asked. Sarah gave Cathy a look that asked if she really was that stupid. "Why would you wear pretty panties and never show anyone?" She asked rhetorically. Cathy started on a hot retort, but was interrupted by Scott. "We'll stop for now and pick this later. You can put your new clothes away." Cathy sighed, picked up her clothes, and walked out the door.
 		<br><br>Scott stood up and set his daughter on her feet. She turned her back to her father, bent over slightly, and wiggled her bottom meaningfully. Scott smacked her right butt cheek and said, "Off you go." Sarah didn't move. "Daddy" she said pleadingly and wiggled her bottom again. He smacked her left butt cheek. She giggled happily and jiggled out the door. Scott smiled at his daughter's antics, shook his head, and made his way to his bedroom.
 	<<elseif $showTwelve == 2>>
 		The random function has brought up another episode of that drama series for you.
@@ -1173,23 +1505,19 @@ The offered price is <<print cashFormat($slaveCost)>>.
 		<<set _nun.hStyle = "buzzcut">>
 		<<set _nun.clothes = "a penitent nuns habit">>
 
-		<span id="artFrame">
-		/* 000-250-006 */
 		<<if $seeImages == 1>>
-		<div class="imageColumn">
-			<div class="imageRef medImg">
-				<<SlaveArt _hostess 2 0>>
-			</div>
-			<div class="imageRef medImg">
-				<<SlaveArt _scientist 2 0>>
-			</div>
-			<div class="imageRef medImg">
-				<<SlaveArt _nun 2 0>>
+			<div class="imageColumn">
+				<div class="imageRef medImg">
+					<<SlaveArt _hostess 2 0>>
+				</div>
+				<div class="imageRef medImg">
+					<<SlaveArt _scientist 2 0>>
+				</div>
+				<div class="imageRef medImg">
+					<<SlaveArt _nun 2 0>>
+				</div>
 			</div>
-		</div>
 		<</if>>
-		/* 000-250-006 */
-		</span>
 		The random function begins playing a Free Cities documentary on the benefits of aphrodisiacs, which is almost halfway over. A montage of out-of-context shots of injectors, suppositories, and bottles of liquid interspersed with very horny, sweaty slaves needily grinding on each other plays before cutting back to the presenter, a gorgeous young woman with long, brown hair in a tight one-piece red dress and matching heels. Her dress, practically a second skin, proudly reveals that she definitely isn't wearing a bra or panties of any kind but still leaves plenty up to the imagination increasing her enticing presence. She's with a handsome man in a lab coat, and they're sitting on a couch in an office with a microphone on a coffee table between them.
 		<br>
 		"I met with one of the leading scientists working on cleaner, higher-purity aphrodisiacs." the woman presenting narrates.
diff --git a/src/pregmod/seHuskSlaveDelivery.tw b/src/pregmod/seHuskSlaveDelivery.tw
index b86b11c70310bd3c11c45906561d31fc1349f620..3e8a54e1455a0ef6b7ee05eb2d80639c7ea49924 100644
--- a/src/pregmod/seHuskSlaveDelivery.tw
+++ b/src/pregmod/seHuskSlaveDelivery.tw
@@ -36,7 +36,7 @@
 <<set $activeSlave.skill.vaginal = 0>>
 <<set $activeSlave.skill.oral = 0>>
 <<set $activeSlave.skill.anal = 0>>
-<<set $activeSlave.skill.whore = 0>>
+<<set $activeSlave.skill.whoring = 0>>
 <<set $activeSlave.skill.entertainment = 0>>
 <<set $activeSlave.skill.combat = 0>>
 
diff --git a/src/pregmod/sePlayerBirth.tw b/src/pregmod/sePlayerBirth.tw
index d12af5397e4a43a8225371f936854623d32ac659..6a503c9dd42d5a39fafb063802a4676424e590a6 100644
--- a/src/pregmod/sePlayerBirth.tw
+++ b/src/pregmod/sePlayerBirth.tw
@@ -70,7 +70,7 @@ PC.pregSource documentation
 		<<set _babies.push("designer")>>
 	<<elseif $PC.curBabies[_spb].fatherID == -9>>
 		<<set _futaS++>>
-		<<set _fathers.push("a Futanari Sister's")>>
+		<<set _babies.push("a Futanari Sister's")>>
 	<<else>>
 		<<set _babyDaddy = $slaveIndices[$PC.curBabies[_spb].fatherID]>>
 		<<if def _babyDaddy>>
@@ -657,3 +657,4 @@ You arrange yourself to give birth, relaxing until your body urges you to begin
 <<set $PC.belly = getPregBellySize($PC)>>
 <<set $reservedChildren = FetusGlobalReserveCount("incubator")>>
 <<set $reservedChildrenNursery = FetusGlobalReserveCount("nursery")>>
+<<run delete $PC.curBabies>>
diff --git a/src/pregmod/widgets/bodySwapReaction.tw b/src/pregmod/widgets/bodySwapReaction.tw
index 083d8b78c3503521fe4e303514c9aa35273cf7e7..3fcd48d56d2b9a88b2b26c0777b1d71c9e84a453 100644
--- a/src/pregmod/widgets/bodySwapReaction.tw
+++ b/src/pregmod/widgets/bodySwapReaction.tw
@@ -1031,7 +1031,7 @@ Now you only have to wait for $him to wake up.
 				<<if $args[0].fetish == "mindbroken">>/*mindbroken*/
 					$He doesn't show much reaction to $his lost weight.
 				<<elseif $args[0].devotion > 50>>/*devoted*/
-					$He is pleased that you have given $him a more slender and svelte body
+					$He is pleased that you have given $him a more slender and svelte
 					<<if $arcologies[0].FSSlimnessEnthusiast != "unset">>
 						body and is even happier that $his body is more in line with your society.
 					<<else>>
@@ -2502,7 +2502,7 @@ Now you only have to wait for $him to wake up.
 				<<if $args[0].fetish == "mindbroken">>/*mindbroken*/
 					$He doesn't show much reaction to $his lost weight.
 				<<elseif $args[0].devotion > 50>>/*devoted*/
-					$He is pleased that you have given $him a more slender and svelte body
+					$He is pleased that you have given $him a more slender and svelte
 					<<if $arcologies[0].FSSlimnessEnthusiast != "unset">>
 						body and is even happier that $his body is more in line with your society.
 					<<else>>
diff --git a/src/uncategorized/BackwardsCompatibility.tw b/src/uncategorized/BackwardsCompatibility.tw
index 509a1e68651715c6aa7028d7b88ec79b982989f6..5c2e77ec34b145be3e835aa82ebe55282f6d93a8 100644
--- a/src/uncategorized/BackwardsCompatibility.tw
+++ b/src/uncategorized/BackwardsCompatibility.tw
@@ -3441,6 +3441,19 @@ Done<br>
 	Done<br>
 <</if>>
 
+<<if $releaseID === 1043>>
+	<<run $slaves.forEach(s => { s.skill.whoring = s.skill.whore/2; })>>
+	<<run $tanks.forEach(s => { s.skill.whoring = s.skill.whore/2; })>>
+	<<run $cribs.forEach(s => { s.skill.whoring = s.skill.whore/2; })>>
+	<<run $heroSlaves.forEach(hs => {
+			if (hs.hasOwnProperty("skill") && hs.skill.hasOwnProperty("whore")) {
+				hs.skill.whoring = hs.skill.whore;
+				delete hs.skill.whore;
+			}
+		});>>
+<</if>>
+
+
 <<set $slavesOriginal = []>> /* not used by pregmod */
 
 Updating gene pool records:
@@ -3526,6 +3539,10 @@ Updating gene pool records:
 		<<set _Slave.eyeColor = _Slave.origEye>>
 		<<set _Slave.eyes = -4>>
 	<</if>>
+	
+	<<if ndef _Slave.custom>>
+	    <<set _Slave.custom = {tattoo: _Slave.customTat}>> /* should be the only thing needed */
+	<</if>>
 
 	<<run App.Entity.Utils.GenePoolRecordCleanup(_Slave)>>
 	<<set $genePool[_bci] = _Slave>>
@@ -3685,8 +3702,8 @@ Done!
 	<</for>>
 <</if>>
 
-<<if $releaseID < 1043>>
-	<<set $releaseID = 1043>>
+<<if $releaseID < 1044>>
+	<<set $releaseID = 1044>>
 <</if>>
 
 <<set $HackingSkillMultiplier = HackingSkillMultiplier()>>
diff --git a/src/uncategorized/PESS.tw b/src/uncategorized/PESS.tw
index 43993f9163e190ac221f29ca91007c739f7d1990..d5679bb41bc7db040b824dafba7b9c166703d51b 100644
--- a/src/uncategorized/PESS.tw
+++ b/src/uncategorized/PESS.tw
@@ -388,9 +388,9 @@ $He sees you examining at $him, and looks back at you submissively, too tired to
 		<</if>>
 	<<else>>
 		<<if ($activeSlave.vagina > 0)>>
-			$His pussy is warm and very wet, making penetration easy; $he gasps and arches $his back, clasping you between $his legs<<if canSee(activeSlave)>> as $his <<= App.Desc.eyeColor($activeSlave)>> eyes look deep into yours<</if>>.
+			$His pussy is warm and very wet, making penetration easy; $he gasps and arches $his back, clasping you between $his legs<<if canSee($activeSlave)>> as $his <<= App.Desc.eyeColor($activeSlave)>> eyes look deep into yours<</if>>.
 		<<elseif ($activeSlave.anus > 0)>>
-			$His butt is relaxed and welcoming, and $he holds $his legs back to take missionary anal loving<<if canSee(activeSlave)>> as $his <<= App.Desc.eyeColor($activeSlave)>> eyes look deep into yours<</if>>.
+			$His butt is relaxed and welcoming, and $he holds $his legs back to take missionary anal loving<<if canSee($activeSlave)>> as $his <<= App.Desc.eyeColor($activeSlave)>> eyes look deep into yours<</if>>.
 		<<else>>
 			$He holds $his thighs together for frottage so $he can love you without losing $his virginity.
 		<</if>>
diff --git a/src/uncategorized/REFI.tw b/src/uncategorized/REFI.tw
index cd566193a98c685569200daab36a788fe3ff7e18..e3ddfac49b678cca682df725cfaabbdffecbf839 100644
--- a/src/uncategorized/REFI.tw
+++ b/src/uncategorized/REFI.tw
@@ -1695,7 +1695,7 @@ There was a glint of envy <<if canSee($activeSlave)>>in $his eyes when $he saw<<
 			<<elseif $activeSlave.butt <= 20>>
 				absurdly massive
 			<</if>>
-			ass around your cock. Deep within its quivering <<if Math.floor($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.
+			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
@@ -1706,7 +1706,7 @@ There was a glint of envy <<if canSee($activeSlave)>>in $his eyes when $he saw<<
 			<<elseif $activeSlave.butt <= 5>>
 				enormous
 			<</if>>
-			<<if Math.floor($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.
+			<<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>>
diff --git a/src/uncategorized/REFS.tw b/src/uncategorized/REFS.tw
index 2436dececdace86b6c4889fa79c64ef1299c918a..b8847e3b3051ca4f1684837a56358b450557992f 100644
--- a/src/uncategorized/REFS.tw
+++ b/src/uncategorized/REFS.tw
@@ -70,6 +70,46 @@
 	<<set $activeSlave.health = random(70,80)>>
 	<<set $activeSlave.clothes = "conservative clothing">>
 
+<<case "physical idealist encounter">>
+	<<set $activeSlaveOneTimeMaxAge = 22>>
+	<<set $oneTimeDisableDisability = 1>>
+	<<if $arcologies[0].FSSupremacistLawME == 1>>
+		<<set $fixedRace = $arcologies[0].FSSupremacistRace>>
+	<<elseif $arcologies[0].FSSubjugationistLawME == 1>>
+		<<set _races = setup.filterRacesLowercase.filter(race => race !== $arcologies[0].FSSubjugationistRace)>>
+		<<set $fixedRace = _races.random()>>
+	<</if>>
+	<<set $activeSlave = GenerateNewSlave("XX")>>
+	<<set $activeSlave.devotion = 100>>
+	<<set $activeSlave.trust = 100>>
+	<<set $activeSlave.health = 100>>
+	<<set $activeSlave.muscles = 99>>
+	<<if $activeSlave.dick > 0 && $activeSlave.vagina == -1>>
+		<<set $activeSlave.clothes = "sport shorts">>
+	<<else>>
+		<<set $activeSlave.clothes = "sport shorts and a sports bra">>
+	<</if>>
+
+<<case "pastoralist encounter">>
+	<<set $activeSlaveOneTimeMinAge = 65>>
+	<<set $oneTimeDisableDisability = 1>>
+	<<if $arcologies[0].FSSupremacistLawME == 1>>
+		<<set $fixedRace = $arcologies[0].FSSupremacistRace>>
+	<<elseif $arcologies[0].FSSubjugationistLawME == 1>>
+		<<set _races = setup.filterRacesLowercase.filter(race => race !== $arcologies[0].FSSubjugationistRace)>>
+		<<set $fixedRace = _races.random()>>
+	<</if>>
+	<<set $activeSlave = GenerateNewSlave("XX")>>
+	<<if $activeSlave.weight < 50>>
+		<<set $activeSlave.weight += 50>>
+	<</if>>
+	<<set $activeSlave.devotion = 100>>
+	<<set $activeSlave.trust = 100>>
+	<<set $activeSlave.health = 100>>
+	<<set $activeSlave.hColor = "grey">>
+	<<set $activeSlave.hStyle = "bun">>
+	<<set $activeSlave.clothes = "conservative clothing">>
+
 <<case "transformation fetishism encounter">>
 	<<set $activeSlaveOneTimeMaxAge = 22>>
 	<<set $oneTimeDisableDisability = 1>>
@@ -190,51 +230,51 @@
 
 <<case "paternalist encounter">>
 
-As a result of $arcologies[0].name's adoption of paternalism there has been a remarkable effect on relationships between slaves and owners, with the flourishing of mutual respect between the two forming the basis for social life in the arcology. However, not all citizens are so keen as to internalize the tenants of paternalism, whether out of prejudice, old habits or adherence to a more brutal style of slaveholding.
-<br><br>
-On one particular outing, you come across an elderly male citizen giving his young slave quite a thrashing in the street outside of a prominent apartment complex. From the skinned state of the poor $girl's knees and the cruel spiked collar about $his neck, it is clear that $his owner has been dragging $him about the arcology as if $he were a dog. To say nothing of this degrading treatment, beating of a slave in public is a fineable offense.
+	As a result of $arcologies[0].name's adoption of paternalism there has been a remarkable effect on relationships between slaves and owners, with the flourishing of mutual respect between the two forming the basis for social life in the arcology. However, not all citizens are so keen as to internalize the tenants of paternalism, whether out of prejudice, old habits or adherence to a more brutal style of slaveholding.
+	<br><br>
+	On one particular outing, you come across an elderly male citizen giving his young slave quite a thrashing in the street outside of a prominent apartment complex. From the skinned state of the poor $girl's knees and the cruel spiked collar about $his neck, it is clear that $his owner has been dragging $him about the arcology as if $he were a dog. To say nothing of this degrading treatment, beating of a slave in public is a fineable offense.
 
 <<case "degradationist encounter">>
 
-As a result of $arcologies[0].name's adoption of degradationism there has been a remarkable effect on the social status of slaves, with the continued reduction of slave rights taking center stage. However, not all citizens are so keen as to internalize the tenants of degradationism, whether out of misplaced compassion, old habits or adherence to the old world style of relationships.
-<br><br>
-On one particular outing, you come across an elderly male citizen holding the hand of his young slave, seemingly on a date at one of the arcology's prominent promenades. From the ring on the $girl's finger and the modest neckline on $his clothing, it is clear that $his owner is treating $him as if $he is his wife. His obscene treatment of his slave has already drawn a large crowd of shocked onlookers.
+	As a result of $arcologies[0].name's adoption of degradationism there has been a remarkable effect on the social status of slaves, with the continued reduction of slave rights taking center stage. However, not all citizens are so keen as to internalize the tenants of degradationism, whether out of misplaced compassion, old habits or adherence to the old world style of relationships.
+	<br><br>
+	On one particular outing, you come across an elderly male citizen holding the hand of his young slave, seemingly on a date at one of the arcology's prominent promenades. From the ring on the $girl's finger and the modest neckline on $his clothing, it is clear that $his owner is treating $him as if $he is his wife. His obscene treatment of his slave has already drawn a large crowd of shocked onlookers.
 
 <<case "physical idealist encounter">>
 
-The notion of the physical ideal has taken $arcologies[0].name by storm and a number of enterprising citizens have been quick to respond by providing new services and businesses in response. One such innovation is the open air gym, a now common sight along $arcologies[0].name's many streets. Many citizens utilize such facilities to squeeze in an extra work-out on their daily commute, or in lieu of personal fitness facilities in their own homes.
-<br><br>
-While navigating your arcology on an outing, you find yourself coming across one of the arcology's finest open-air gyms, clearly marketed towards the wealthy citizen on the move. As impressive as the gold plated fitness equipment is, in amongst the power racks, dip bars and bench press stations is perhaps one of the most spectacular athletic specimens in the entire arcology. This female citizen has clearly embraced everything that $arcologies[0].name's physical idealism represents, molding herself into a rippling blend of broad shoulders, powerful muscles and a ripped stomach that would shame even the most well-built old world athlete.
+	The notion of the physical ideal has taken $arcologies[0].name by storm and a number of enterprising citizens have been quick to respond by providing new services and businesses in response. One such innovation is the open air gym, a now common sight along $arcologies[0].name's many streets. Many citizens utilize such facilities to squeeze in an extra work-out on their daily commute, or in lieu of personal fitness facilities in their own homes.
+	<br><br>
+	While navigating your arcology on an outing, you find yourself coming across one of the arcology's finest open-air gyms, clearly marketed towards the wealthy citizen on the move. As impressive as the gold plated fitness equipment is, in amongst the power racks, dip bars and bench press stations is perhaps one of the most spectacular athletic specimens in the entire arcology. This female citizen has clearly embraced everything that $arcologies[0].name's physical idealism represents, molding herself into a rippling blend of broad shoulders, powerful muscles and a ripped stomach that would shame even the most well-built old world athlete.
 
 <<case "pastoralist encounter">>
 
-Pastoralism has taken $arcologies[0].name by storm and a number of enterprising citizens have been quick to respond by providing new services and businesses in response. One such innovation is a number of experimental new restaurants that incorporate human milk into their recipes, much to the delight of the citizenry. Such establishments have become a fashionable part of $arcologies[0].name's taste palate and new takes on the simple premise are common.
-<br><br>
-While navigating your arcology on an outing, you find yourself coming across one of the arcology's newest restaurants, a milkshake parlor that prides itself on deriving all of its dairy from human sources.
+	Pastoralism has taken $arcologies[0].name by storm and a number of enterprising citizens have been quick to respond by providing new services and businesses in response. One such innovation is a number of experimental new restaurants that incorporate human milk into their recipes, much to the delight of the citizenry. Such establishments have become a fashionable part of $arcologies[0].name's taste palate and new takes on the simple premise are common.
+	<br><br>
+	While navigating your arcology on an outing, you find yourself coming across one of the arcology's newest restaurants, a milkshake parlor that prides itself on deriving all of its dairy from human sources.
 
 <<case "transformation fetishism encounter">>
 
-As a result of $arcologies[0].name's adoption of transformation fetishism, a number of plastic surgery clinics, cosmetic surgeries and other transformative businesses have begun to crop up around the arcology's various promenades and shopping districts. The citizens of $arcologies[0].name have taken to the idea of altering their bodies with a gusto — though not all are so quick to adopt the trend just because it's in vogue.
-<br><br>
-On one particular outing, you come across a female citizen outside a surgery clinic staring pensively up at a poster advertising the variety of cosmetic procedures on offer in the institution. The citizen's expression is wistful, if somewhat grave, and at odds with the display above $him lit up with silicone breasts, plump bee-stung lips and fake asses. From $his unaltered appearance and simple garments, it is likely that she is not one of the arcology's wealthier denizens and thus is unable to shape $his body to $his heart's desire.
+	As a result of $arcologies[0].name's adoption of transformation fetishism, a number of plastic surgery clinics, cosmetic surgeries and other transformative businesses have begun to crop up around the arcology's various promenades and shopping districts. The citizens of $arcologies[0].name have taken to the idea of altering their bodies with a gusto — though not all are so quick to adopt the trend just because it's in vogue.
+	<br><br>
+	On one particular outing, you come across a citizen outside a surgery clinic staring pensively up at a poster advertising the variety of cosmetic procedures on offer in the institution. The citizen's expression is wistful, if somewhat grave, and at odds with the display above $him lit up with silicone breasts, plump bee-stung lips and fake asses. From $his unaltered appearance and simple garments, it is likely that $he is not one of the arcology's wealthier denizens and thus is unable to shape $his body to $his heart's desire.
 
 <<case "body purism encounter">>
 
-As a result of $arcologies[0].name's adoption of body purism, a number of restorative spas, implant removal clinics and other cleansing businesses have begun to crop up around the arcology's various promenades and shopping districts. The citizens of $arcologies[0].name have taken to the idea of treating their bodies with sanctity — though not all are so quick to adopt the trend just because it's in vogue.
-<br><br>
-On one particular outing, you come across a female citizen outside a famous health spa staring pensively up at a poster advertising the variety of purification procedures on offer in the institution. The citizen's expression is wistful, if somewhat grave, and at odds with the display above $him lit up with pure unadulterated bodies, expensive health treatments and a plethora of natural cosmetic procedures. The citizen's clothes are ragged and sheer, revealing a number of implant scars around her bust and rear, likely from a costly attempt to render herself fashionable by having her prior implants removed. With such visible scarring, it is unlikely that she is one of the arcology's wealthier denizens, having paid the price to return her body to its natural, unimplanted state.
+	As a result of $arcologies[0].name's adoption of body purism, a number of restorative spas, implant removal clinics and other cleansing businesses have begun to crop up around the arcology's various promenades and shopping districts. The citizens of $arcologies[0].name have taken to the idea of treating their bodies with sanctity — though not all are so quick to adopt the trend just because it's in vogue.
+	<br><br>
+	On one particular outing, you come across a citizen outside a famous health spa staring pensively up at a poster advertising the variety of purification procedures on offer in the institution. The citizen's expression is wistful, if somewhat grave, and at odds with the display above $him lit up with pure unadulterated bodies, expensive health treatments and a plethora of natural cosmetic procedures. The citizen's clothes are ragged and sheer, revealing a number of implant scars around $his bust and rear, likely from a costly attempt to render $himself fashionable by having $his prior implants removed. With such visible scarring, it is unlikely that $he is one of the arcology's wealthier denizens, having paid the price to return $his body to its natural, unimplanted state.
 
 <<case "youth preferentialist encounter">>
 
-Your excursions out of your penthouse and into the arcology as a whole often put you in close proximity with citizens from all levels of the social strata. After all, they themselves have their own lives to live within the walls of $arcologies[0].name.
-<br><br>
-On this particular outing you happen to cross paths with a nubile young $woman, accompanied by $his father. From $his plain clothes and rudimentary makeup, it is readily apparent that $he is not one of the arcology's well-to-do inhabitants. $He recognizes you quickly and dips $his head in deference to your high status, <<if ($PC.visualAge >= 50)>>$his cheeks flushed in embarrassment and delight at an aged arcology owner's interest in a young $girl like $him.<<else>>$his expression awestruck by the presence of an arcology owner before $him.<</if>>
+	Your excursions out of your penthouse and into the arcology as a whole often put you in close proximity with citizens from all levels of the social strata. After all, they themselves have their own lives to live within the walls of $arcologies[0].name.
+	<br><br>
+	On this particular outing you happen to cross paths with a nubile young $woman, accompanied by $his father. From $his plain clothes and rudimentary makeup, it is readily apparent that $he is not one of the arcology's well-to-do inhabitants. $He recognizes you quickly and dips $his head in deference to your high status, <<if ($PC.visualAge >= 50)>>$his cheeks flushed in embarrassment and delight at an aged arcology owner's interest in a young $girl like $him.<<else>>$his expression awestruck by the presence of an arcology owner before $him.<</if>>
 
 <<case "maturity preferentialist encounter">>
 
-Your excursions out of your penthouse and into the arcology as a whole often put you in close proximity with citizens from all levels of the social strata. After all, they themselves have their own lives to live within the walls of $arcologies[0].name.
-<br><br>
-On this particular outing you happen to cross paths with a comely female citizen and $his two adult sons. From $his plain clothes and conspicuous lack of makeup, it is readily apparent that $he is not one of the arcology's well-to-do inhabitants. $He recognizes you quickly and dips $his head in deference to your high status, <<if ($PC.visualAge < 35)>>$his cheeks flushed in embarrassment and confusion at a young arcology owner's interest in an old lady like $him.<<else>>$his expression awestruck by the presence of an arcology owner before $him.<</if>>
+	Your excursions out of your penthouse and into the arcology as a whole often put you in close proximity with citizens from all levels of the social strata. After all, they themselves have their own lives to live within the walls of $arcologies[0].name.
+	<br><br>
+	On this particular outing you happen to cross paths with a comely citizen and $his two adult sons. From $his plain clothes and conspicuous lack of makeup, it is readily apparent that $he is not one of the arcology's well-to-do inhabitants. $He recognizes you quickly and dips $his head in deference to your high status, <<if ($PC.visualAge < 35)>>$his cheeks flushed in embarrassment and confusion at a young arcology owner's interest in an old citizen like $him.<<else>>$his expression awestruck by the presence of an arcology owner before $him.<</if>>
 
 <<default>>
 	<br>ERROR: bad REFS event $REFSevent
@@ -248,226 +288,277 @@ On this particular outing you happen to cross paths with a comely female citizen
 
 <<case "paternalist encounter">>
 
-<span id="result">
-<<link "Alert your drones and keep walking">>
-	<<replace "#result">>
-	You inform $assistantName that you have a slave beater in need of detainment by your security drones, then continue on your way confident in your knowledge that the citizen will soon be in custody.
-	<</replace>>
-<</link>>
-<<if $cash >= 2000>>
-<br><<link "Take the poor slave $girl into your custody">>
-	<<set $activeSlave.clothes = "no clothing">>
-	<<replace "#artFrame">>
-		/* 000-250-006 */
-		<<if $seeImages == 1>>
-			<<if $imageChoice == 1>>
-				<div class="imageRef lrgVector"><div class="mask">&nbsp;</div><<SlaveArt $activeSlave 2 0>></div>
-			<<else>>
-				<div class="imageRef lrgRender"><div class="mask">&nbsp;</div><<SlaveArt $activeSlave 2 0>></div>
+	<span id="result">
+	<<link "Alert your drones and keep walking">>
+		<<replace "#result">>
+		You inform $assistantName that you have a slave beater in need of detainment by your security drones, then continue on your way confident in your knowledge that the citizen will soon be in custody.
+		<</replace>>
+	<</link>>
+	<<if $cash >= 2000>>
+	<br><<link "Take the poor slave $girl into your custody">>
+		<<set $activeSlave.clothes = "no clothing">>
+		<<replace "#artFrame">>
+			/* 000-250-006 */
+			<<if $seeImages == 1>>
+				<<if $imageChoice == 1>>
+					<div class="imageRef lrgVector"><div class="mask">&nbsp;</div><<SlaveArt $activeSlave 2 0>></div>
+				<<else>>
+					<div class="imageRef lrgRender"><div class="mask">&nbsp;</div><<SlaveArt $activeSlave 2 0>></div>
+				<</if>>
 			<</if>>
-		<</if>>
-		/* 000-250-006 */
-	<</replace>>
-	<<replace "#result">>
-	Confronting the citizen is simplicity in itself; he would not dare defy you under threat of arrest by your security drones and is unlikely to garner any sympathy from the public for his degradationist behaviors. As such, you are able to take civil ownership over the poor slave $girl and take $him into your care with only minimal compensation to the citizen. As you stride away from $his former owner with the $girl in your arms, $he leans over to plant a chaste kiss of thanks on your cheek.
-	<<run cashX(-2000, "slaveTransfer", $activeSlave)>>
-	<<include "New Slave Intro">>
-	<</replace>>
-<</link>> // Taking custody of the $girl will cost <<print cashFormat(2000)>>. //
-<</if>>
-<br><<link "Publicly confront the citizen">>
-	<<replace "#result">>
-	Your walk up to the citizen is not accompanied by shaking ground or tumultuous fanfare, yet the citizen looks as if death itself has come before him. You don't hurt him physically, instead chastising him publicly in front of his fellow peers who begin to cheer their agreement. You end your tirade of verbal abuse with a reminder that although the man is a citizen of your arcology, that does not give him the impunity to shirk the law. To make it clear his next offense will be his last, a brace of your security drones hover behind you threateningly. The crowd that gathered @@.green;approve of your rebuke of the citizen.@@
-	<<run repX(2500, "event")>>
-	<</replace>>
-<</link>>
-</span>
+			/* 000-250-006 */
+		<</replace>>
+		<<replace "#result">>
+		Confronting the citizen is simplicity in itself; he would not dare defy you under threat of arrest by your security drones and is unlikely to garner any sympathy from the public for his degradationist behaviors. As such, you are able to take civil ownership over the poor slave $girl and take $him into your care with only minimal compensation to the citizen. As you stride away from $his former owner with the $girl in your arms, $he leans over to plant a chaste kiss of thanks on your cheek.
+		<<run cashX(-2000, "slaveTransfer", $activeSlave)>>
+		<<include "New Slave Intro">>
+		<</replace>>
+	<</link>> // Taking custody of the $girl will cost <<print cashFormat(2000)>>. //
+	<</if>>
+	<br><<link "Publicly confront the citizen">>
+		<<replace "#result">>
+		Your walk up to the citizen is not accompanied by shaking ground or tumultuous fanfare, yet the citizen looks as if death itself has come before him. You don't hurt him physically, instead chastising him publicly in front of his fellow peers who begin to cheer their agreement. You end your tirade of verbal abuse with a reminder that although the man is a citizen of your arcology, that does not give him the impunity to shirk the law. To make it clear his next offense will be his last, a brace of your security drones hover behind you threateningly. The crowd that gathered @@.green;approve of your rebuke of the citizen.@@
+		<<run repX(2500, "event")>>
+		<</replace>>
+	<</link>>
+	</span>
 
 <<case "degradationist encounter">>
 
-<span id="result">
-<<link "Alert your drones and keep walking">>
-	<<replace "#result">>
-	You inform $assistantName that you have a slave lover in need of harassment by your security drones, then continue on your way. You did not instruct your drones to attack the obscene pair, as the scrutiny and public shame of a drone escort around the arcology are a more fitting punishment for a citizen and will perhaps encourage him to think twice before treating his slave as an equal.
-	<</replace>>
-<</link>>
-<<if $cash >= 2000>>
-<br><<link "Take the pampered slave $girl into your custody">>
-	<<set $activeSlave.clothes = "no clothing">>
-	<<replace "#artFrame">>
-		/* 000-250-006 */
-		<<if $seeImages == 1>>
-			<<if $imageChoice == 1>>
-				<div class="imageRef lrgVector"><div class="mask">&nbsp;</div><<SlaveArt $activeSlave 2 0>></div>
-			<<else>>
-				<div class="imageRef lrgRender"><div class="mask">&nbsp;</div><<SlaveArt $activeSlave 2 0>></div>
+	<span id="result">
+	<<link "Alert your drones and keep walking">>
+		<<replace "#result">>
+		You inform $assistantName that you have a slave lover in need of harassment by your security drones, then continue on your way. You did not instruct your drones to attack the obscene pair, as the scrutiny and public shame of a drone escort around the arcology are a more fitting punishment for a citizen and will perhaps encourage him to think twice before treating his slave as an equal.
+		<</replace>>
+	<</link>>
+	<<if $cash >= 2000>>
+	<br><<link "Take the pampered slave $girl into your custody">>
+		<<set $activeSlave.clothes = "no clothing">>
+		<<replace "#artFrame">>
+			/* 000-250-006 */
+			<<if $seeImages == 1>>
+				<<if $imageChoice == 1>>
+					<div class="imageRef lrgVector"><div class="mask">&nbsp;</div><<SlaveArt $activeSlave 2 0>></div>
+				<<else>>
+					<div class="imageRef lrgRender"><div class="mask">&nbsp;</div><<SlaveArt $activeSlave 2 0>></div>
+				<</if>>
 			<</if>>
-		<</if>>
-		/* 000-250-006 */
-	<</replace>>
-	<<replace "#result">>
-	Confronting the citizen is simplicity in itself; he would not dare defy you directly under threat of arrest by your security drones and is unlikely to garner any sympathy from the public for his disturbing actions. As such, you are able to take civil ownership over the slave $girl and claim $him for yourself with only token compensation to the citizen. As you stride away from $his former owner with the $girl in your arms, $he clings to you with obvious naïveté for how you will treat $him. It's time $he learnt how slaves are treated in $arcologies[0].name.
-	<<run cashX(-2000, "slaveTransfer", $activeSlave)>>
-	<<include "New Slave Intro">>
-	<</replace>>
-<</link>> // Taking custody of the $girl will cost <<print cashFormat(2000)>>. //
-<</if>>
-<br><<link "Publicly confront the citizen">>
-	<<replace "#result">>
-	Your walk up to the citizen is not accompanied by shaking ground or tumultuous fanfare, yet the citizen looks as if death itself has come before him. You don't hurt him physically, instead chastising him publicly in front of his fellow peers who begin to cheer their agreement. You end your tirade of verbal abuse with a reminder that although the man is a citizen of your arcology, that does not give him the impunity to parade a slave around the arcology as if $he were his wife. To make it clear that you will not be so forgiving of his next transgression, a brace of your security drones hover behind you threateningly. The crowd that gathered @@.green;approve of your rebuke of the citizen.@@
-	<<run repX(2500, "event")>>
-	<</replace>>
-<</link>>
-</span>
+			/* 000-250-006 */
+		<</replace>>
+		<<replace "#result">>
+		Confronting the citizen is simplicity in itself; he would not dare defy you directly under threat of arrest by your security drones and is unlikely to garner any sympathy from the public for his disturbing actions. As such, you are able to take civil ownership over the slave $girl and claim $him for yourself with only token compensation to the citizen. As you stride away from $his former owner with the $girl in your arms, $he clings to you with obvious naïveté for how you will treat $him. It's time $he learnt how slaves are treated in $arcologies[0].name.
+		<<run cashX(-2000, "slaveTransfer", $activeSlave)>>
+		<<include "New Slave Intro">>
+		<</replace>>
+	<</link>> // Taking custody of the $girl will cost <<print cashFormat(2000)>>. //
+	<</if>>
+	<br><<link "Publicly confront the citizen">>
+		<<replace "#result">>
+		Your walk up to the citizen is not accompanied by shaking ground or tumultuous fanfare, yet the citizen looks as if death itself has come before him. You don't hurt him physically, instead chastising him publicly in front of his fellow peers who begin to cheer their agreement. You end your tirade of verbal abuse with a reminder that although the man is a citizen of your arcology, that does not give him the impunity to parade a slave around the arcology as if $he were his wife. To make it clear that you will not be so forgiving of his next transgression, a brace of your security drones hover behind you threateningly. The crowd that gathered @@.green;approve of your rebuke of the citizen.@@
+		<<run repX(2500, "event")>>
+		<</replace>>
+	<</link>>
+	</span>
 
 <<case "physical idealist encounter">>
 
-<span id="result">
-<<link "Keep walking">>
-	<<replace "#result">>
-	The citizen is undoubtedly a uniquely athletic specimen, so you linger for a moment to appreciate the strength and vigor of her punishing physical routine. When you've had your fill, you move on towards your next appointment.
-	<</replace>>
-<</link>>
-<<if $cash >= 1000>>
-<br><<link "Offer to sponsor her for a promotional video">>
-	<<replace "#result">>
-	Despite her hulking, muscular exterior, the citizen proves to be a shrewd and capable advertisement executive as well. The two of you sit beside a hefty dumbbell rack for some time and together craft a simple promotional ad campaign featuring the herculean physical form of the citizen. Shooting the video is simple, footage of the citizen going about her various fitness routines is inspiring enough, and soon her every muscle and sinew is being broadcast across the world to laud the physical achievements of $arcologies[0].name. Your citizens are @@.green;filled with pride,@@ knowing the rest of the world was just awed by their pursuit of bodily perfection.
-	<<run repX(5000, "event")>>
-	<<run cashX(-1000, "event")>>
-	<</replace>>
-<</link>> // This will cost <<print cashFormat(1000)>>. //
-<</if>>
-<br><<link "Spend some time working out with her">>
-	<<replace "#result">>
-	The attendant of the gym is almost too stunned to charge you for entry, and indeed many citizens inside and outside the gym stop to watch you begin a work-out routine. The muscular citizen does not halt her own regime, of course, so you soon find yourself pumping iron and straining your muscles to the limit beside her.
-	<br><br>
-	Your eyes lock somewhere in the midst of a particularly strenuous exercise, and what follows may be remembered in the annals of $arcologies[0].name history as the most erotic display of physical might ever recorded. Matching each other rep for rep, the gym is soon echoing with the grunts of both your exertions while your bodies grow slick with glistening sweat. When the last dumbbell is racked, the citizen merely nods her respect at you for matching her pursuit of the physical ideal, to the @@.green;delight of the watching citizenry.@@
-	<<run repX(1500, "event")>>
-	<</replace>>
-<</link>>
-</span>
+	<span id="result">
+	<<link "Keep walking">>
+		<<replace "#result">>
+		The citizen is undoubtedly a uniquely athletic specimen, so you linger for a moment to appreciate the strength and vigor of her punishing physical routine. When you've had your fill, you move on towards your next appointment.
+		<</replace>>
+	<</link>>
+	<<if $cash >= 1000>>
+	<br><<link "Offer to sponsor her for a promotional video">>
+		<<replace "#result">>
+		Despite her hulking, muscular exterior, the citizen proves to be a shrewd and capable advertisement executive as well. The two of you sit beside a hefty dumbbell rack for some time and together craft a simple promotional ad campaign featuring the herculean physical form of the citizen. Shooting the video is simple, footage of the citizen going about her various fitness routines is inspiring enough, and soon her every muscle and sinew is being broadcast across the world to laud the physical achievements of $arcologies[0].name. Your citizens are @@.green;filled with pride,@@ knowing the rest of the world was just awed by their pursuit of bodily perfection.
+		<<run repX(5000, "event")>>
+		<<run cashX(-1000, "event")>>
+		<</replace>>
+	<</link>> // This will cost <<print cashFormat(1000)>>. //
+	<</if>>
+	<br><<link "Spend some time working out with her">>
+		<<replace "#result">>
+		The attendant of the gym is almost too stunned to charge you for entry, and indeed many citizens inside and outside the gym stop to watch you begin a work-out routine. The muscular citizen does not halt her own regime, of course, so you soon find yourself pumping iron and straining your muscles to the limit beside her.
+		<br><br>
+		Your eyes lock somewhere in the midst of a particularly strenuous exercise, and what follows may be remembered in the annals of $arcologies[0].name history as the most erotic display of physical might ever recorded. Matching each other rep for rep, the gym is soon echoing with the grunts of both your exertions while your bodies grow slick with glistening sweat. When the last dumbbell is racked, the citizen merely nods her respect at you for matching her pursuit of the physical ideal, to the @@.green;delight of the watching citizenry.@@
+		<<run repX(1500, "event")>>
+		<</replace>>
+	<</link>>
+	</span>
 
 <<case "pastoralist encounter">>
 
-<span id="result">
-<<link "Keep walking">>
-	<<replace "#result">>
-	The establishment is not the first of its kind in the arcology, but the idea seems to be popular enough with the citizenry to accommodate competition. When you've sated your curiosity perusing the courtesy menu by the door, you move on towards your next appointment.
-	<</replace>>
-<</link>>
-<<if $cash >= 1000>>
-<br><<link "Offer to sponsor the restaurant with an advertisement">>
-	<<replace "#result">>
-	You soon discover that the owner of the establishment is a matronly woman who sources her dairy from other mothers in the arcology, having found that new or expectant mothers are often in need of a revenue stream. The two of you sit at the counter for some time, though the owner often excuses herself for a milking in the back room, and together craft a simple promotional ad campaign featuring a simple slogan. Posters bearing the words "Got MILF?" soon grace the walls of $arcologies[0].name, and your citizens take to the idea of motherly milkshakes and admire your @@.green;marketing acumen.@@
-	<<run repX(5000, "event")>>
-	<<run cashX(-1000, "event")>>
-	<</replace>>
-<</link>> // This will cost <<print cashFormat(1000)>>. //
-<</if>>
-<br><<link "Have a shake">>
-	<<replace "#result">>
-	The owner of the parlor is so flattered by your patronage of her humble store that she not only provides your drink free of charge but even milks herself at the counter to personally provide the dairy for your shake. The shake's taste is rich, even creamy, with an overall sweet palate mixed with a slight nuttiness.
-	<br><br>
-	Though you depart without officially sponsoring the milkshake parlor, your presence is endorsement enough to many citizens while others simply @@.green;appreciate you drinking amongst them.@@
-	<<run repX(1500, "event")>>
-	<</replace>>
-<</link>>
-</span>
+	<span id="result">
+	<<link "Keep walking">>
+		<<replace "#result">>
+		The establishment is not the first of its kind in the arcology, but the idea seems to be popular enough with the citizenry to accommodate competition. When you've sated your curiosity perusing the courtesy menu by the door, you move on towards your next appointment.
+		<</replace>>
+	<</link>>
+	<<if $cash >= 1000>>
+	<br><<link "Offer to sponsor the restaurant with an advertisement">>
+		<<replace "#result">>
+		You soon discover that the owner of the establishment is a matronly woman who sources her dairy from other mothers in the arcology, having found that new or expectant mothers are often in need of a revenue stream. The two of you sit at the counter for some time, though the owner often excuses herself for a milking in the back room, and together craft a simple promotional ad campaign featuring a simple slogan. Posters bearing the words "Got MILF?" soon grace the walls of $arcologies[0].name, and your citizens take to the idea of motherly milkshakes and admire your @@.green;marketing acumen.@@
+		<<run repX(5000, "event")>>
+		<<run cashX(-1000, "event")>>
+		<</replace>>
+	<</link>> // This will cost <<print cashFormat(1000)>>. //
+	<</if>>
+	<br><<link "Have a shake">>
+		<<replace "#result">>
+		The owner of the parlor is so flattered by your patronage of her humble store that she not only provides your drink free of charge but even milks herself at the counter to personally provide the dairy for your shake. The shake's taste is rich, even creamy, with an overall sweet palate mixed with a slight nuttiness.
+		<br><br>
+		Though you depart without officially sponsoring the milkshake parlor, your presence is endorsement enough to many citizens while others simply @@.green;appreciate you drinking amongst them.@@
+		<<run repX(1500, "event")>>
+		<</replace>>
+	<</link>>
+	</span>
 
 <<case "transformation fetishism encounter">>
 
-<span id="result">
-<<link "Keep walking">>
-	<<replace "#result">>
-	It's unfortunate that this citizen is unable to realize $his dreams, but that's the way of the Free Cities. There are winners, and there are losers.
-	<</replace>>
-<</link>>
-<<if $cash >= 1000>>
-<br><<link "Pay for $his treatment">>
-	<<replace "#result">>
-	It takes a moment for you to convince the $woman that you aren't playing some cruel joke on $him, but once you do $he practically squeals with joy as you take $him through the doors of the clinic and announce your intent to pay to give your loyal citizen the absolute transformative works. When you next see $him it's on a gurney as $he's wheeled out of the surgery, $his patient's gown jutting out from $his chest due to the size of $his new rack. Through swollen lips $he gushes to you about how great $he feels to finally be a veritable bimbo, and how $he's going to tell every citizen $he fucks in $arcologies[0].name @@.green;that they have you to thank for $his new body.@@
-	<<run repX(5000, "event")>>
-	<<run cashX(-1000, "event")>>
-	<</replace>>
-<</link>> // The treatment will cost <<print cashFormat(1000)>>. //
-<</if>>
-<br><<link "Offer to enhance $him in your remote surgery in exchange for a fuck">>
-	<<replace "#result">>
-	You make your presence known to citizen, and once the usual shock and disbelief have worn off the citizen rapidly agrees to your proposal. $He follows you back to the penthouse where you inform $assistantName that the citizen is to be given the works in the remote surgery. As the citizen passes through the doors to the surgery, $he turns and blows you a kiss of gratitude.
-	<br><br>
-	When the citizen is later delivered to your private suite to uphold $his end of the bargain, $he does so as the veritable image of a perfect bimbo slut. In $his rush to come thank you for transforming $him from $his plain and plebian appearance $he has evidently neglected to clothe $himself, so you can admire $his new firm tits, plump ass and bee-stung lips from the moment $he enters the room. Despite being fresh from surgery, $he's an exquisite fuck and an enthusiastic partner — citizens like $him often are, given that penetration from a slave would be a social suicide.
-	<<if $cash >= 10000>>
-		<br><br>
-		<span id="result2">
-		<<link "Enslave $him afterwards">>
-			<<replace "#result2">>
-			As your new playmate lies slumbering in bed, you consult with $assistantName as to the cost of the surgery conducted today. With some creative accounting, you settle the citizen's other outstanding debts and then arrange for $him to be charged a sum in excess of $his financial means for the surgery conducted on $him today. Of course, that was not what you agreed, but it was $his mistake for undergoing an expensive procedure without a formal contract. When $he awakens, though $he will retain $his new bimbo body, $he will be just another slave in your penthouse.
-			<<run newSlave($activeSlave)>> /* skip New Slave Intro */
-			<<run cashX(-10000, "event", $activeSlave)>>
-			<</replace>>
-		<</link>> // Purchasing $his outstanding debts will cost <<print cashFormat(10000)>>. //
-		</span>
+	<span id="result">
+	<<link "Keep walking">>
+		<<replace "#result">>
+		It's unfortunate that this citizen is unable to realize $his dreams, but that's the way of the Free Cities. There are winners, and there are losers.
+		<</replace>>
+	<</link>>
+	<<if $cash >= 1000>>
+	<br><<link "Pay for $his treatment">>
+		<<replace "#result">>
+		It takes a moment for you to convince the $woman that you aren't playing some cruel joke on $him, but once you do $he practically squeals with joy as you take $him through the doors of the clinic and announce your intent to pay to give your loyal citizen the absolute transformative works. When you next see $him it's on a gurney as $he's wheeled out of the surgery, $his patient's gown jutting out from $his chest due to the size of $his new rack. Through swollen lips $he gushes to you about how great $he feels to finally be a veritable bimbo, and how $he's going to tell every citizen $he fucks in $arcologies[0].name @@.green;that they have you to thank for $his new body.@@
+		<<run repX(5000, "event")>>
+		<<run cashX(-1000, "event")>>
+		<</replace>>
+	<</link>> // The treatment will cost <<print cashFormat(1000)>>. //
 	<</if>>
-	<</replace>>
-<</link>>
-</span>
+	<br><<link "Offer to enhance $him in your remote surgery in exchange for a fuck">>
+		<<replace "#result">>
+		You make your presence known to citizen, and once the usual shock and disbelief have worn off the citizen rapidly agrees to your proposal. $He follows you back to the penthouse where you inform $assistantName that the citizen is to be given the works in the remote surgery. As the citizen passes through the doors to the surgery, $he turns and blows you a kiss of gratitude.
+		<br><br>
+		When the citizen is later delivered to your private suite to uphold $his end of the bargain, $he does so as the veritable image of a perfect bimbo slut. In $his rush to come thank you for transforming $him from $his plain and plebian appearance $he has evidently neglected to clothe $himself, so you can admire $his new firm tits, plump ass and bee-stung lips from the moment $he enters the room. Despite being fresh from surgery, $he's an exquisite fuck and an enthusiastic partner — citizens like $him often are, given that penetration from a slave would be a social suicide.
+		<<if $cash >= 10000>>
+			<br><br>
+			<span id="result2">
+			<<link "Enslave $him afterwards">>
+				<<replace "#result2">>
+				As your new playmate lies slumbering in bed, you consult with $assistantName as to the cost of the surgery conducted today. With some creative accounting, you settle the citizen's other outstanding debts and then arrange for $him to be charged a sum in excess of $his financial means for the surgery conducted on $him today. Of course, that was not what you agreed, but it was $his mistake for undergoing an expensive procedure without a formal contract. When $he awakens, though $he will retain $his new bimbo body, $he will be just another slave in your penthouse.
+				<<run newSlave($activeSlave)>> /* skip New Slave Intro */
+				<<run cashX(-10000, "event", $activeSlave)>>
+				<</replace>>
+			<</link>> // Purchasing $his outstanding debts will cost <<print cashFormat(10000)>>. //
+			</span>
+		<</if>>
+		<</replace>>
+	<</link>>
+	</span>
 
 <<case "body purism encounter">>
 
-<span id="result">
-<<link "Keep walking">>
-	<<replace "#result">>
-	It's unfortunate that this citizen is unable to realize her dreams, but that's the way of the Free Cities. There are winners, and there are losers.
-	<</replace>>
-<</link>>
-<<if $cash >= 1000>>
-<br><<link "Pay for a day of treatment for her">>
-	<<replace "#result">>
-	It takes a moment for you to convince the woman that you aren't playing some cruel joke on her, but once you do she practically squeals with joy as you take her through the doors of the spa and announce your intent to pay for a day of cleansing, pampering and luxury. When you next see her it's on a wallscreen television at your penthouse praising you profusely. The rejuvenated young woman has clearly spread word of your generosity @@.green;across $arcologies[0].name.@@
-	<<run repX(5000, "event")>>
-	<<run cashX(-1000, "event")>>
-	<</replace>>
-<</link>> // The treatment will cost <<print cashFormat(1000)>>. //
-<</if>>
-<<if ($Attendant != 0)>>
-<br><<link "Give her a day of pampering with your attendant at your spa">>
-	<<replace "#result">>
-	You make your presence known to the citizen, and once the usual shock and disbelief have worn off it takes a moment to convince her that your offer of a cleansing experience in your spa is neither a cruel joke nor an underhanded attempt to enslave her. She follows you back to the penthouse where you inform your attendant that the citizen is to be sequestered in the spa for a day of pampering, cleansing and rejuvenation. As the citizen passes through the doors to the spa, she turns and blows you a kiss of gratitude.
-	<br><br>
-	When you stop by the spa later in the day, you spot the citizen luxuriating in a hot bath with a number of colorful health products spread across every visible surface of her nude skin. From where you stand it is clear her eyes are closed in immense contentment, while her body floats relaxed and carefree in the bubbling water. When the citizen finally departs at the end of the a long day of purification in the spa, she thanks you profusely and promises to tell everyone she can of your @@.green;generosity.@@
-	<<run repX(1500, "event")>>
-	<</replace>>
-<</link>>
-<</if>>
-</span>
+	<span id="result">
+	<<link "Keep walking">>
+		<<replace "#result">>
+		It's unfortunate that this citizen is unable to realize her dreams, but that's the way of the Free Cities. There are winners, and there are losers.
+		<</replace>>
+	<</link>>
+	<<if $cash >= 1000>>
+	<br><<link "Pay for a day of treatment for her">>
+		<<replace "#result">>
+		It takes a moment for you to convince the woman that you aren't playing some cruel joke on her, but once you do she practically squeals with joy as you take her through the doors of the spa and announce your intent to pay for a day of cleansing, pampering and luxury. When you next see her it's on a wallscreen television at your penthouse praising you profusely. The rejuvenated young woman has clearly spread word of your generosity @@.green;across $arcologies[0].name.@@
+		<<run repX(5000, "event")>>
+		<<run cashX(-1000, "event")>>
+		<</replace>>
+	<</link>> // The treatment will cost <<print cashFormat(1000)>>. //
+	<</if>>
+	<<if ($Attendant != 0)>>
+	<br><<link "Give her a day of pampering with your attendant at your spa">>
+		<<replace "#result">>
+		You make your presence known to the citizen, and once the usual shock and disbelief have worn off it takes a moment to convince her that your offer of a cleansing experience in your spa is neither a cruel joke nor an underhanded attempt to enslave her. She follows you back to the penthouse where you inform your attendant that the citizen is to be sequestered in the spa for a day of pampering, cleansing and rejuvenation. As the citizen passes through the doors to the spa, she turns and blows you a kiss of gratitude.
+		<br><br>
+		When you stop by the spa later in the day, you spot the citizen luxuriating in a hot bath with a number of colorful health products spread across every visible surface of her nude skin. From where you stand it is clear her eyes are closed in immense contentment, while her body floats relaxed and carefree in the bubbling water. When the citizen finally departs at the end of the a long day of purification in the spa, she thanks you profusely and promises to tell everyone she can of your @@.green;generosity.@@
+		<<run repX(1500, "event")>>
+		<</replace>>
+	<</link>>
+	<</if>>
+	</span>
 
 <<case "youth preferentialist encounter">>
 
-<span id="result">
-<<link "Let them pass">>
-	<<replace "#result">>
-	You step aside gracefully and bow your head, while signifying to the $girl that you intend to allow $him to pass you. $He seems taken aback by your geniality, especially given the gulf in social standing between the two of you, and has to be chaperoned from your presence by $his father. Nonetheless, $he is struck by $his chance encounter with you and cannot stop recounting the story to all $his friends, soon @@.green;the anecdote has seized the imaginations of $arcologies[0].name's youthful, female citizens.@@
-	<<run repX(500, "event")>>
-	<</replace>>
-<</link>>
-<<if $cash >= 500>>
-<br><<link "Fuck $him over dinner">>
-	<<replace "#result">>
-	It takes a moment for you to convince the young $girl and $his father that you aren't playing some cruel joke on them, but once you do $he enthusiastically agrees to be your companion for the evening. With a pretty young thing on your arm for the rest of the night, and $his father trailing behind the two of you at a respectful distance, you take $arcologies[0].name by storm amidst a flurry of speculative whispers and contemplative rumors. Later that night, you conclude your date with a pleasant meal at one of $arcologies[0].name's choicest restaurants with fine dining and even finer conversation. To the credit of $his father, he politely continues eating his dinner without batting an eye when you <<if $PC.dick == 0>>don a strap-on and <</if>>take his daughter over the dinner table. When you part ways, the young $girl is clearly smitten with you — so it's no wonder that by the next day the story of your encounter has @@.green;spread across $arcologies[0].name like wildfire.@@
-	<<run repX(2500, "event")>>
-	<<run cashX(-500, "event")>>
-	<</replace>>
-<</link>> // This will cost <<print cashFormat(500)>>. //
-<</if>>
-<br><<link "Manipulate $him into having sex with you">>
-	<<replace "#result">>
-	It only takes a moment for $assistantName to uncover the father's financial records and the copious debt therein, and only another moment for you to browbeat the terrified father into allowing his daughter to sleep with you under threat of purchasing all their debt and summarily enslaving $him.
-	<br><br>
-	Once you both retire to your private suite, you peel the $girl's clothes off as easily as one might shed a gift of its wrapping. In the nude $his body is tastefully youthful, with narrow hips, firm breasts, and a delicate blush across $his shamefaced, rosy cheeks. Despite the circumstances of your sexual conquest of $him, $he seems to enjoy the fuck well enough by the sounds of $his frenzied moans — citizens like $him often do since sexual submission to a slave would be a crippling scandal to a prominent citizen, let alone one of $his diminished social stature.
-	<<if $cash >= 10000>>
+	<span id="result">
+	<<link "Let them pass">>
+		<<replace "#result">>
+		You step aside gracefully and bow your head, while signifying to the $girl that you intend to allow $him to pass you. $He seems taken aback by your geniality, especially given the gulf in social standing between the two of you, and has to be chaperoned from your presence by $his father. Nonetheless, $he is struck by $his chance encounter with you and cannot stop recounting the story to all $his friends, soon @@.green;the anecdote has seized the imaginations of $arcologies[0].name's youthful, female citizens.@@
+		<<run repX(500, "event")>>
+		<</replace>>
+	<</link>>
+	<<if $cash >= 500>>
+	<br><<link "Fuck $him over dinner">>
+		<<replace "#result">>
+		It takes a moment for you to convince the young $girl and $his father that you aren't playing some cruel joke on them, but once you do $he enthusiastically agrees to be your companion for the evening. With a pretty young thing on your arm for the rest of the night, and $his father trailing behind the two of you at a respectful distance, you take $arcologies[0].name by storm amidst a flurry of speculative whispers and contemplative rumors. Later that night, you conclude your date with a pleasant meal at one of $arcologies[0].name's choicest restaurants with fine dining and even finer conversation. To the credit of $his father, he politely continues eating his dinner without batting an eye when you <<if $PC.dick == 0>>don a strap-on and <</if>>take his daughter over the dinner table. When you part ways, the young $girl is clearly smitten with you — so it's no wonder that by the next day the story of your encounter has @@.green;spread across $arcologies[0].name like wildfire.@@
+		<<run repX(2500, "event")>>
+		<<run cashX(-500, "event")>>
+		<</replace>>
+	<</link>> // This will cost <<print cashFormat(500)>>. //
+	<</if>>
+	<br><<link "Manipulate $him into having sex with you">>
+		<<replace "#result">>
+		It only takes a moment for $assistantName to uncover the father's financial records and the copious debt therein, and only another moment for you to browbeat the terrified father into allowing his daughter to sleep with you under threat of purchasing all their debt and summarily enslaving $him.
 		<br><br>
-		<span id="result2">
-		<<link "Enslave $him afterwards">>
+		Once you both retire to your private suite, you peel the $girl's clothes off as easily as one might shed a gift of its wrapping. In the nude $his body is tastefully youthful, with narrow hips, firm breasts, and a delicate blush across $his shamefaced, rosy cheeks. Despite the circumstances of your sexual conquest of $him, $he seems to enjoy the fuck well enough by the sounds of $his frenzied moans — citizens like $him often do since sexual submission to a slave would be a crippling scandal to a prominent citizen, let alone one of $his diminished social stature.
+		<<if $cash >= 10000>>
+			<br><br>
+			<span id="result2">
+			<<link "Enslave $him afterwards">>
+				<<set $activeSlave.clothes = "no clothing">>
+				<<replace "#artFrame">>
+					/* 000-250-006 */
+					<<if $seeImages == 1>>
+						<<if $imageChoice == 1>>
+							<div class="imageRef lrgVector"><div class="mask">&nbsp;</div><<SlaveArt $activeSlave 2 0>></div>
+						<<else>>
+							<div class="imageRef lrgRender"><div class="mask">&nbsp;</div><<SlaveArt $activeSlave 2 0>></div>
+						<</if>>
+					<</if>>
+					/* 000-250-006 */
+				<</replace>>
+				<<replace "#result2">>
+				After $he regains $his bearings from your sexual encounter, the $girl slips on $his simple clothes and attempts to slink away from your private suite unobtrusively. $He makes it out the door before being confronted by a glowing array of wallscreen monitors, each displaying a visual representation of your purchase of $his father's considerable debt and subsequent enslavement of $him on the basis of that debt. Tears begin to stream down $his cheeks as $he sinks to $his knees, $his hopes of a long life without enslavement now dashed.
+				<br><br>
+				<<run cashX(-10000, "event", $activeSlave)>>
+				<<include "New Slave Intro">>
+				<</replace>>
+			<</link>> // Purchasing $his outstanding debts will cost <<print cashFormat(10000)>>. //
+			</span>
+		<</if>>
+		<</replace>>
+	<</link>>
+	</span>
+
+<<case "maturity preferentialist encounter">>
+
+	<span id="result">
+	<<link "Let them pass">>
+		<<replace "#result">>
+		You step aside gracefully and bow your head, while signifying to the older woman that you intend to allow $him to pass you. $He seems taken aback by your geniality, especially given the gulf in social standing between the two of you, and seems disproportionately flustered by your small show of civility. Nonetheless, $he is struck by $his chance encounter with you and cannot stop recounting the story to all $his friends, and soon @@.green;the anecdote has seized the imaginations of $arcologies[0].name's mature, female citizens.@@
+		<<run repX(500, "event")>>
+		<</replace>>
+	<</link>>
+	<<if $cash >= 500>>
+	<br><<link "Fuck $him over dinner">>
+		<<replace "#result">>
+		It takes a moment for you to convince the older $woman and $his sons that you aren't playing some cruel joke on them, but once you do $he enthusiastically agrees to be your companion for the evening. With a mature lady on your arm for the rest of the night, and $his sons trailing behind the two of you at a respectful distance, you take $arcologies[0].name by storm amidst a flurry of speculative whispers and contemplative rumors. Later that night, you conclude your date with a pleasant meal at one of $arcologies[0].name's choicest restaurants with fine dining and even finer conversation. To the credit of $his sons, they politely continue eating their dinner without batting an eye when you <<if $PC.dick == 0>>don a strap-on and <</if>>take their mother over the dinner table. When you part ways, the older $woman is clearly smitten with you — so it's no wonder that by the next day the story of your encounter has @@.green;spread across $arcologies[0].name like wildfire.@@
+		<<run repX(2500, "event")>>
+		<<run cashX(-500, "event")>>
+		<</replace>>
+	<</link>> // This will cost <<print cashFormat(500)>>. //
+	<</if>>
+	<br><<link "Manipulate $him into having sex with you">>
+		<<replace "#result">>
+		It only takes a moment for $assistantName to uncover the citizen's financial records and the copious debt therein, and only another moment for you to browbeat the terrified older women into sleeping with you under threat of purchasing all $his debt and summarily enslaving $him. $His sons, frightened into obedience by the possibility of losing their dear mother, take their cue to make themselves scarce during the encounter.
+		<br><br>
+		Once you both retire to your private suite, you peel the mature citizen's clothes off as easily as one might shed a gift of its wrapping. In the nude $his body is tastefully plush, with wide hips, firm motherly breasts, and a delicate blush across $his shamefaced, plump cheeks. Despite the circumstances of your sexual conquest of $him, $he seems to enjoy the fuck well enough by the sounds of $his frenzied moans — citizens like $him often do since sexual submission to a slave would be a crippling scandal to a prominent citizen, let alone one of $his diminished social stature.
+		<<if $cash >= 10000>>
+			<br><br>
+			<span id="result2">
 			<<set $activeSlave.clothes = "no clothing">>
 			<<replace "#artFrame">>
 				/* 000-250-006 */
@@ -480,70 +571,19 @@ On this particular outing you happen to cross paths with a comely female citizen
 				<</if>>
 				/* 000-250-006 */
 			<</replace>>
-			<<replace "#result2">>
-			After $he regains $his bearings from your sexual encounter, the $girl slips on $his simple clothes and attempts to slink away from your private suite unobtrusively. $He makes it out the door before being confronted by a glowing array of wallscreen monitors, each displaying a visual representation of your purchase of $his father's considerable debt and subsequent enslavement of $him on the basis of that debt. Tears begin to stream down $his cheeks as $he sinks to $his knees, $his hopes of a long life without enslavement now dashed.
-			<br><br>
-			<<run cashX(-10000, "event", $activeSlave)>>
-			<<include "New Slave Intro">>
-			<</replace>>
-		<</link>> // Purchasing $his outstanding debts will cost <<print cashFormat(10000)>>. //
-		</span>
-	<</if>>
-	<</replace>>
-<</link>>
-</span>
-
-<<case "maturity preferentialist encounter">>
-
-<span id="result">
-<<link "Let them pass">>
-	<<replace "#result">>
-	You step aside gracefully and bow your head, while signifying to the older woman that you intend to allow $him to pass you. $He seems taken aback by your geniality, especially given the gulf in social standing between the two of you, and seems disproportionately flustered by your small show of civility. Nonetheless, $he is struck by $his chance encounter with you and cannot stop recounting the story to all $his friends, and soon @@.green;the anecdote has seized the imaginations of $arcologies[0].name's mature, female citizens.@@
-	<<run repX(500, "event")>>
-	<</replace>>
-<</link>>
-<<if $cash >= 500>>
-<br><<link "Fuck $him over dinner">>
-	<<replace "#result">>
-	It takes a moment for you to convince the older $woman and $his sons that you aren't playing some cruel joke on them, but once you do $he enthusiastically agrees to be your companion for the evening. With a mature lady on your arm for the rest of the night, and $his sons trailing behind the two of you at a respectful distance, you take $arcologies[0].name by storm amidst a flurry of speculative whispers and contemplative rumors. Later that night, you conclude your date with a pleasant meal at one of $arcologies[0].name's choicest restaurants with fine dining and even finer conversation. To the credit of $his sons, they politely continue eating their dinner without batting an eye when you <<if $PC.dick == 0>>don a strap-on and <</if>>take their mother over the dinner table. When you part ways, the older $woman is clearly smitten with you — so it's no wonder that by the next day the story of your encounter has @@.green;spread across $arcologies[0].name like wildfire.@@
-	<<run repX(2500, "event")>>
-	<<run cashX(-500, "event")>>
-	<</replace>>
-<</link>> // This will cost <<print cashFormat(500)>>. //
-<</if>>
-<br><<link "Manipulate $him into having sex with you">>
-	<<replace "#result">>
-	It only takes a moment for $assistantName to uncover the citizen's financial records and the copious debt therein, and only another moment for you to browbeat the terrified older women into sleeping with you under threat of purchasing all $his debt and summarily enslaving $him. $His sons, frightened into obedience by the possibility of losing their dear mother, take their cue to make themselves scarce during the encounter.
-	<br><br>
-	Once you both retire to your private suite, you peel the mature citizen's clothes off as easily as one might shed a gift of its wrapping. In the nude $his body is tastefully plush, with wide hips, firm motherly breasts, and a delicate blush across $his shamefaced, plump cheeks. Despite the circumstances of your sexual conquest of $him, $he seems to enjoy the fuck well enough by the sounds of $his frenzied moans — citizens like $him often do since sexual submission to a slave would be a crippling scandal to a prominent citizen, let alone one of $his diminished social stature.
-	<<if $cash >= 10000>>
-		<br><br>
-		<span id="result2">
-		<<set $activeSlave.clothes = "no clothing">>
-		<<replace "#artFrame">>
-			/* 000-250-006 */
-			<<if $seeImages == 1>>
-				<<if $imageChoice == 1>>
-					<div class="imageRef lrgVector"><div class="mask">&nbsp;</div><<SlaveArt $activeSlave 2 0>></div>
-				<<else>>
-					<div class="imageRef lrgRender"><div class="mask">&nbsp;</div><<SlaveArt $activeSlave 2 0>></div>
-				<</if>>
-			<</if>>
-			/* 000-250-006 */
+			<<link "Enslave $him afterwards">>
+				<<replace "#result2">>
+				After $he regains $his bearings from your sexual encounter, the older $woman slips on $his simple clothes and attempts to slink away from your private suite unobtrusively. $He makes it out the door before being confronted by a glowing array of wallscreen monitors, each displaying a visual representation of your purchase of $his considerable debt and subsequent enslavement of $him on the basis of that debt. Tears begin to stream down $his weathered cheeks as $he sinks to $his knees, $his hopes of making it through the breadth of $his long life without enslavement now dashed.
+				<br><br>
+				<<run cashX(-10000, "event", $activeSlave)>>
+				<<include "New Slave Intro">>
+				<</replace>>
+			<</link>> // Purchasing $his outstanding debts will cost <<print cashFormat(10000)>>. //
+			</span>
+		<</if>>
 		<</replace>>
-		<<link "Enslave $him afterwards">>
-			<<replace "#result2">>
-			After $he regains $his bearings from your sexual encounter, the older $woman slips on $his simple clothes and attempts to slink away from your private suite unobtrusively. $He makes it out the door before being confronted by a glowing array of wallscreen monitors, each displaying a visual representation of your purchase of $his considerable debt and subsequent enslavement of $him on the basis of that debt. Tears begin to stream down $his weathered cheeks as $he sinks to $his knees, $his hopes of making it through the breadth of $his long life without enslavement now dashed.
-			<br><br>
-			<<run cashX(-10000, "event", $activeSlave)>>
-			<<include "New Slave Intro">>
-			<</replace>>
-		<</link>> // Purchasing $his outstanding debts will cost <<print cashFormat(10000)>>. //
-		</span>
-	<</if>>
-	<</replace>>
-<</link>>
-</span>
+	<</link>>
+	</span>
 
 <<default>>
 	<br>ERROR: bad REFS event $REFSevent
diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw
index e0e1cc4d70db9d1c4babc5029cc03befd9b718d5..28f7b7b922b003fa4d15932a9ce49d5f10e2e7d2 100644
--- a/src/uncategorized/RESS.tw
+++ b/src/uncategorized/RESS.tw
@@ -709,7 +709,7 @@ The sight is comical. <<if $activeSlave.belly >= 5000>>Four<<else>>Three<</if>>
 <</if>>
 <<if ($activeSlave.nipples == "huge")>>Each is capped by a gigantic nipple, soft with relaxation and the heat of the spa, but hugely prominent.<</if>>
 <<if ($activeSlave.areolae > 1)>>$His areolae spread widely around each nipple.<</if>>
-<<if Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
+<<if $activeSlave.boobsImplant/$activeSlave.boobs >= .60>>
 	$His implants keep $his tits shaped in exactly the same way regardless of currents in the water, betraying their fake nature.
 <<elseif ($activeSlave.boobsImplant == 0)>>
 	$His all-natural boobs move gently with currents in the water.
@@ -1512,7 +1512,7 @@ into your bedroom. Since $he is not allowed to ask questions, $he says nothing,
 <<case "shaped areolae">>
 
 <<EventNameLink>>'s breasts are real works of art. $His
-<<if Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
+<<if ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
 	massive fake
 <<elseif $activeSlave.boobsImplant > 0>>
 	massive, partially unnatural
@@ -2976,7 +2976,7 @@ neck, $activeSlave.skin, <<if $activeSlave.muscles > 95>>hugely muscled<<elseif
 Working in your office early in the morning, you can hear the low, human hum of your slaves who work during the daytime busily getting ready for their days. Suddenly, there's motion at your doorway, and <<EventNameLink>> hurries in. $He's nude, $his $activeSlave.skin skin glowing with the fresh cleanliness of having just gotten out of the shower. $He <<if canSee($activeSlave)>>glances at you<<elseif canHear($activeSlave)>>listens<<else>>waits<</if>> to see if $he's unwelcome, and seeing no sign that $he is, the devoted $desc comes over to your desk.
 <<if $activeSlave.boobs < 400>>
 	$His little $activeSlave.boobShape tits barely move at all as $he walks, though $his $activeSlave.nipples nipples certainly catch your eye.
-<<elseif Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .75>> /* tiny little 200cc implants in 20000cc tits are laughable. Now we make sure those tits are fake. */
+<<elseif ($activeSlave.boobsImplant/$activeSlave.boobs) >= .75>> /* tiny little 200cc implants in 20000cc tits are laughable. Now we make sure those tits are fake. */
 	$His fake tits barely move at all as $he walks, their shape maintained by $his implants.
 <<elseif $activeSlave.boobs < 1000>>
 	$His lovely $activeSlave.boobShape boobs move delightfully as $he walks, and $his $activeSlave.nipples nipples bounce prettily.
@@ -3200,7 +3200,7 @@ hips
 	<</if>>
 <</if>>
 in time with $his humming, $he runs $his hands sensually over them, along $his flanks, and over $his chest, <<if $activeSlave.boobs > 3000>>letting the vast mass of $his tits rest atop them<<elseif $activeSlave.boobs > 1000>>groping $his own heavy breasts<<else>>$his fingertips circling $his nipples<</if>> for an alluring moment. As $his hips maintain their sexual rhythm, $his hands continue, tracing up $his throat, over $his moist lips, and over $his head. As $he stretches up, $his torso begins to sway with the barely perceptible beat, $his
-<<if Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .75>>
+<<if ($activeSlave.boobsImplant/$activeSlave.boobs) >= .75>>
 	fake tits staying perfectly in place.
 <<elseif $activeSlave.boobs > 2000>>
 	$activeSlave.boobShape boobs swaying along.
@@ -3669,7 +3669,7 @@ Passing by the kitchen in the morning, you take a moment to listen to the low hu
 	"It's your belly," the other slave explains. "They love how big and round it is. If you look pregnant, they'll be all over you. Even if it's fake, they won't care."
 <<elseif $arcologies[0].FSRepopulationFocusPregPolicy == 1 && $activeSlave.bellyPreg >= 5000>>
 	"It's your belly," the other slave explains. "Preggos are in these days and you aren't exactly lacking in the 'with child' department."
-<<elseif ($arcologies[0].FSTransformationFetishist != "unset") && Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .50>>
+<<elseif ($arcologies[0].FSTransformationFetishist != "unset") && ($activeSlave.boobsImplant/$activeSlave.boobs) >= .50>>
 	"It's your fake tits," the other slave explains. "They love how fake they look, here. If you look like a bimbo, they don't care if you're a little mature."
 <<elseif ($arcologies[0].FSHedonisticDecadence != "unset") && ($activeSlave.weight > 95)>>
 	"You're so fat," the other slave explains. "Everyone here loves thick girls. They don't care that you're a little mature; that just means you understand life's pleasures more."
@@ -3775,7 +3775,7 @@ Your slaves get dressed in a large wardrobe area adjacent to the dormitory, room
 	apparently bigger today than it was yesterday. Intensive female hormone regimens like $hers sometimes cause minor ass expansion.
 <<elseif $activeSlave.buttImplantType == 1>>
 	apparently a little bigger today than it was yesterday. String implants like $hers steadily grow if not regularly drained.
-<<elseif $geneticMappingUpgrade == 1 && $activeSlave.geneticQuirks.rearLipedema == 2>>
+<<elseif $geneticMappingUpgrade >= 1 && $activeSlave.geneticQuirks.rearLipedema == 2>>
 	apparently a little bigger today than it was yesterday. $His body is constantly laying fat on $his ass and thighs, so this isn't really unexpected.
 <<elseif $activeSlave.buttImplant/$activeSlave.butt >= .5>>
 	apparently a little bigger today than it was yesterday. Large implants like $hers normally cause some slight size fluctuations.
@@ -4310,7 +4310,7 @@ You pass through your slaves' living area as some of them are starting their day
 	<<setLocalPronouns $slaves[_ress] 2>>
 	$slaves[_ress].slaveName is still asleep in it, and the shape of _his2
 	<<if $slaves[_ress].belly >= 120000>>_belly belly is
-	<<elseif $slaves[_ress].boobs > 25000>>immense <<if Math.floor($slaves[_ress].boobsImplant/$slaves[_ress].boobs) >= .60>>fake <</if>> breasts are
+	<<elseif $slaves[_ress].boobs > 25000>>immense <<if ($slaves[_ress].boobsImplant/$slaves[_ress].boobs) >= .60>>fake <</if>> breasts are
 	<<elseif $slaves[_ress].dick > 10>>monster dick is
 	<<elseif $slaves[_ress].balls > 8>>immense testicles are
 	<<elseif $slaves[_ress].weight > 130>>gigantic body is
@@ -4321,8 +4321,8 @@ You pass through your slaves' living area as some of them are starting their day
 	<<elseif canAchieveErection($slaves[_ress])>>half-erect dick is
 	<<elseif $slaves[_ress].belly >= 5000>>big <<if $slaves[_ress].bellyPreg >= 3000>>pregnant <</if>>belly is
 	<<elseif $slaves[_ress].nipples == "huge">>huge nipples are
-	<<elseif $slaves[_ress].boobs > 5000>>monstrous <<if Math.floor($slaves[_ress].boobsImplant/$slaves[_ress].boobs) >= .60>>fake <</if>> breasts are
-	<<elseif $slaves[_ress].boobs > 2000>>huge <<if Math.floor($slaves[_ress].boobsImplant/$slaves[_ress].boobs) >= .60>>fake <</if>> tits are
+	<<elseif $slaves[_ress].boobs > 5000>>monstrous <<if ($slaves[_ress].boobsImplant/$slaves[_ress].boobs) >= .60>>fake <</if>> breasts are
+	<<elseif $slaves[_ress].boobs > 2000>>huge <<if ($slaves[_ress].boobsImplant/$slaves[_ress].boobs) >= .60>>fake <</if>> tits are
 	<<elseif $slaves[_ress].butt > 5>>monstrous ass is
 	<<elseif $slaves[_ress].balls > 8>>giant balls are
 	<<elseif $slaves[_ress].weight > 95>>chubby body is
@@ -4347,7 +4347,7 @@ It's time for $him to start another strenuous day of carrying the weight of $his
 <<else>>
 	heavy
 <</if>>
-<<if Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
+<<if ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
 	implants.
 <<elseif $activeSlave.lactation>>
 	milk-bearing udders.
@@ -4385,7 +4385,7 @@ $He kneels with $his legs together, and then sits back, $his
 	cute butt resting lightly on $his heels.
 <</if>>
 Then $he reaches $his arms back, and leans back, as far as $he can go. $He arches $his spine, closing $his eyes voluptuously as $he enjoys the stretch in $his lower back. The pose thrusts $his chest up and out,
-<<if Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
+<<if ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
 	but $his implants stretch $his skin so tight that they stay tacked to $his chest, right where they are. $He looks like a stereotypical silicone queen, arching $his back and sticking $his fake cans out.
 <<elseif $activeSlave.boobShape == "perky">>
 	making $his spectacularly perky breasts point their $activeSlave.nipples nipples straight up at the ceiling. It's incredible, that they've managed to maintain their youthful shape despite their great weight.
@@ -7502,7 +7502,7 @@ brought in to you. This time <<EventNameLink>> has been sent to deliver it. $He
 	<<elseif ($activeSlave.dick > 1)>>
 		$his soft cock flop around as one of the air jets strikes it.)
 	<<elseif ($activeSlave.boobs > 800)>>
-		<<if Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
+		<<if ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
 			how $his fake tits refuse to jiggle under the air jets.)
 		<<else>>
 			how the air jets produce a lot of delectable jiggling when they strike $his boobs.)
@@ -8723,7 +8723,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 		After so much of this that $he's clearly ready to orgasm at the slightest further touch, you grab $his
 		<<if $activeSlave.boobs > 8000>>
 			massive tits
-		<<elseif Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
+		<<elseif ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
 			fake tits
 		<<elseif $activeSlave.boobs > 2000>>
 			huge boobs
@@ -10523,7 +10523,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 		<</if>>
 	<<else>>
 		$He groans with lust as pull $him onto your lap to make out. "Ohh," $he moans as you run your hands across $his
-		<<if $activeSlave.boobsImplant >= 1000 && (Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60)>>
+		<<if $activeSlave.boobsImplant >= 1000 && (($activeSlave.boobsImplant/$activeSlave.boobs) >= .60)>>
 			bimbo
 		<<elseif $activeSlave.boobs >= 1000 && $activeSlave.butt > 5 && $activeSlave.hips > 0>>
 			fecund
@@ -11497,7 +11497,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 <br>&nbsp;&nbsp;&nbsp;&nbsp;<<link "while in pain">>
 	<<EventNameDelink $activeSlave>>
 	<<replace "#result">>
-	You tell $him that $he deserves a way to get off for coming to tell you rather than breaking the rules. For the rest of the week, $he can come to you and masturbate: but you will abuse $him while $he does. $He starts to cry in fear, but <<if $activeSlave.belly >= 10000>>struggles to get<<else>>hurriedly gets<</if>> up on your desk anyway. You swat $his thighs apart so $he can get a hand down there. $He hesitates desperately before touching $himself, knowing that as soon as $he does the pain will start, but $his horniness wins out. You aim a vicious flick at $his <<if ($activeSlave.nipples == "huge")>>absurd nipples<<elseif ($activeSlave.nipples != "tiny")>>big nipples<<else>>nipples<</if>> and then take a crop out of your desk, flogging $his <<if Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>fake<<elseif ($activeSlave.boobs > 1000)>>jiggling<<else>>firm<</if>> breasts without mercy. $He finally orgasms and flees, falling over $his own feet in $his desperation; $his acceptance of sexual slavery @@.hotpink;has increased.@@
+	You tell $him that $he deserves a way to get off for coming to tell you rather than breaking the rules. For the rest of the week, $he can come to you and masturbate: but you will abuse $him while $he does. $He starts to cry in fear, but <<if $activeSlave.belly >= 10000>>struggles to get<<else>>hurriedly gets<</if>> up on your desk anyway. You swat $his thighs apart so $he can get a hand down there. $He hesitates desperately before touching $himself, knowing that as soon as $he does the pain will start, but $his horniness wins out. You aim a vicious flick at $his <<if ($activeSlave.nipples == "huge")>>absurd nipples<<elseif ($activeSlave.nipples != "tiny")>>big nipples<<else>>nipples<</if>> and then take a crop out of your desk, flogging $his <<if ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>fake<<elseif ($activeSlave.boobs > 1000)>>jiggling<<else>>firm<</if>> breasts without mercy. $He finally orgasms and flees, falling over $his own feet in $his desperation; $his acceptance of sexual slavery @@.hotpink;has increased.@@
 	<<set $activeSlave.devotion += 4>>
 	<<if ($activeSlave.fetish == "masochist") && ($activeSlave.fetishKnown == 1)>>
 		<<set $activeSlave.fetishStrength += 4>>
@@ -15536,10 +15536,10 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 	<<EventNameDelink $activeSlave>>
 	<<replace "#result">>
 	$His eyes fly open as $he feels someone groping $him.
-	<<if Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
+	<<if ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
 		You're mauling $his fake boob, squeezing it and making the skin of $his breast, which is already stretched rather taut by the implant, stretch a bit farther.
 	<<elseif $activeSlave.boobs > 3000>>
-		You're hefting and massaging $his mass of breastflesh, playing with $his <<if Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) < .60>>mostly <</if>>natural boob, making $his huge soft udder bounce and jiggle.
+		You're hefting and massaging $his mass of breastflesh, playing with $his <<if ($activeSlave.boobsImplant/$activeSlave.boobs) < .60>>mostly <</if>>natural boob, making $his huge soft udder bounce and jiggle.
 	<<elseif $activeSlave.lactation > 0>>
 		You're kneading and massaging $his udder, and the milk begins to <<if $activeSlave.nipples != "fuckable">>bead at<<else>>leak from<</if>> the cow's nipple.
 	<<elseif $activeSlave.boobs > 300>>
@@ -18259,7 +18259,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 			<<else>>
 				breasts.
 			<</if>>
-		<<elseif Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
+		<<elseif ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
 			fake tits.
 		<<elseif $activeSlave.weight > 160>>
 			fat folds.
@@ -18949,7 +18949,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 			$He gestures $his thanks,
 		<</if>>
 		and then makes a show of deciding. $He <<if $activeSlave.intelligence+$activeSlave.intelligenceImplant < -15>>doesn't have to pretend<<else>>cheekily pretends<</if>> to be an airheaded bimbo puzzling over how $he wants to approach a fuck, bouncing
-		<<if Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
+		<<if ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
 			$his fake tits a little,
 		<<elseif $activeSlave.boobs > 4000>>
 			$his monstrous udders heavily,
@@ -20015,7 +20015,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 	<<EventNameDelink $activeSlave>>
 	<<replace "#result">>
 	Deciding to take pity, you stand up<<if $PC.dick == 0>>, pull on a strap-on,<</if>> and approach $his crumpled, weeping form. You reach down and take $his clasped hands in yours, pulling $him gently to $his feet and giving $him a quick cuddle. You make it just long enough to reassure $him that you care for $him, but not long enough to frustrate $him even further; $his extreme horniness is only sharpened by the hug and the way it traps $his arms between $his
-	<<if Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
+	<<if ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
 		fake boobs
 	<<elseif $activeSlave.boobs > 4000>>
 		monstrous udders
@@ -20444,7 +20444,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 			straddling $his ribcage just below $his breasts.
 		<</if>>
 		$His huge breasts rest atop your inner thighs,
-		<<if Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
+		<<if ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
 			$his skin taut against yours, from the implants.
 		<<else>>
 			heavy and soft and female.
@@ -20557,7 +20557,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 		big belly jiggling.
 	<<elseif $activeSlave.belly >= 5000>>
 		as fast as $his swollen belly will allow.
-	<<elseif Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
+	<<elseif ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
 		fake tits bouncing.
 	<<elseif $activeSlave.butt > 4>>
 		$his big booty jiggling.
@@ -20954,7 +20954,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 		massage the soft butter into $his monstrous tits, enjoying the struggle it takes to heft each butter-slick, glistening melon with both hands. You note with satisfaction $his nipples harden with arousal.
 	<<elseif ($activeSlave.boobs >= 3000)>>
 		massage the soft butter into each of $his huge tits. Your slave cranes $his head back a bit to avoid being smothered by $his own breasts as you work the butter into them, but you can tell $he's aroused by what you're doing — $his nipples have turned hard as rocks.
-	<<elseif Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
+	<<elseif ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60>>
 		massage the soft butter into $his fat, fake titties, noting with satisfaction $his nipples harden with arousal.
 	<<elseif ($activeSlave.boobs >= 650)>>
 		massage the soft butter into $his big tits, noting with satisfaction $his nipples harden with arousal.
diff --git a/src/uncategorized/REroyalblood.tw b/src/uncategorized/REroyalblood.tw
index 7e24501d06ee5f62fe289bd2861ba6f49bdfedfc..36c3e1ae6f7380728a6ba911be00278ad7a832de 100644
--- a/src/uncategorized/REroyalblood.tw
+++ b/src/uncategorized/REroyalblood.tw
@@ -31,7 +31,7 @@
 <<set $activeSlave.skill.entertainment = 45>>
 <<set $activeSlave.skill.anal = 0>>
 <<set $activeSlave.skill.oral = 0>>
-<<set $activeSlave.skill.whore = 0>>
+<<set $activeSlave.skill.whoring = 0>>
 <<set $activeSlave.canRecruit = 0>>
 <<set $activeSlave.health = random(30,60)>>
 <<set $activeSlave.behavioralFlaw = either("arrogant", "bitchy")>>
@@ -82,7 +82,7 @@
 <<set $activeSlave.faceImplant = 15>>
 <<set $activeSlave.skill.anal = 0>>
 <<set $activeSlave.skill.oral = 0>>
-<<set $activeSlave.skill.whore = 0>>
+<<set $activeSlave.skill.whoring = 0>>
 <<set $activeSlave.skill.combat = 1>>
 <<set $activeSlave.canRecruit = 0>>
 <<set $activeSlave.health = random(30,60)>>
@@ -134,7 +134,7 @@
 <<set $activeSlave.intelligence = random(15,100)>>
 <<set $activeSlave.intelligenceImplant = 30>>
 <<set $activeSlave.skill.entertainment = 45>>
-<<set $activeSlave.skill.whore = 0>>
+<<set $activeSlave.skill.whoring = 0>>
 <<set $activeSlave.counter.birthsTotal = 2>>
 <<set $activeSlave.pubertyXX = 1>>
 <<set $activeSlave.pubertyXY = 0>>
@@ -356,7 +356,7 @@ Time is short, but you are well placed to acquire some choice slaves. With an ad
 			<<set $activeSlave.intelligence = random(-50,70)>>
 			<<set $activeSlave.intelligenceImplant = 15>>
 			<<set $activeSlave.skill.entertainment = 25>>
-			<<set $activeSlave.skill.whore = 0>>
+			<<set $activeSlave.skill.whoring = 0>>
 			<<set $activeSlave.health = random(30,60)>>
 			<<set $activeSlave.canRecruit = 0>>
 			<<set $activeSlave.behavioralFlaw = either("arrogant", "bitchy")>>
@@ -407,7 +407,7 @@ Time is short, but you are well placed to acquire some choice slaves. With an ad
 			<<set $activeSlave.intelligence = random(-50,70)>>
 			<<set $activeSlave.intelligenceImplant = 15>>
 			<<set $activeSlave.skill.entertainment = 25>>
-			<<set $activeSlave.skill.whore = 0>>
+			<<set $activeSlave.skill.whoring = 0>>
 			<<set $activeSlave.health = random(30,60)>>
 			<<set $activeSlave.canRecruit = 0>>
 			<<set $activeSlave.behavioralFlaw = either("arrogant", "bitchy")>>
@@ -583,7 +583,7 @@ Time is short, but you are well placed to acquire some choice slaves. With an ad
 			<<set $activeSlave.intelligence = random(-50,70)>>
 			<<set $activeSlave.intelligenceImplant = 15>>
 			<<set $activeSlave.skill.entertainment = 25>>
-			<<set $activeSlave.skill.whore = 0>>
+			<<set $activeSlave.skill.whoring = 0>>
 			<<set $activeSlave.health = random(30,60)>>
 			<<set $activeSlave.canRecruit = 0>>
 			<<set $activeSlave.behavioralFlaw = either("arrogant", "bitchy")>>
@@ -642,7 +642,7 @@ Time is short, but you are well placed to acquire some choice slaves. With an ad
 			<<set $activeSlave.intelligence = random(-50,70)>>
 			<<set $activeSlave.intelligenceImplant = 15>>
 			<<set $activeSlave.skill.entertainment = 25>>
-			<<set $activeSlave.skill.whore = 0>>
+			<<set $activeSlave.skill.whoring = 0>>
 			<<set $activeSlave.health = random(30,60)>>
 			<<set $activeSlave.canRecruit = 0>>
 			<<set $activeSlave.behavioralFlaw = either("arrogant", "bitchy")>>
@@ -699,7 +699,7 @@ Time is short, but you are well placed to acquire some choice slaves. With an ad
 			<<set $activeSlave.intelligence = random(-50,70)>>
 			<<set $activeSlave.intelligenceImplant = 15>>
 			<<set $activeSlave.skill.entertainment = 25>>
-			<<set $activeSlave.skill.whore = 0>>
+			<<set $activeSlave.skill.whoring = 0>>
 			<<set $activeSlave.health = random(30,60)>>
 			<<set $activeSlave.canRecruit = 0>>
 			<<set $activeSlave.behavioralFlaw = either("arrogant", "bitchy")>>
@@ -777,7 +777,7 @@ Time is short, but you are well placed to acquire some choice slaves. With an ad
 			<<set $activeSlave.intelligence = random(-50,70)>>
 			<<set $activeSlave.intelligenceImplant = 15>>
 			<<set $activeSlave.skill.entertainment = 25>>
-			<<set $activeSlave.skill.whore = 0>>
+			<<set $activeSlave.skill.whoring = 0>>
 			<<set $activeSlave.health = random(30,60)>>
 			<<set $activeSlave.canRecruit = 0>>
 			<<set $activeSlave.behavioralFlaw = either("arrogant", "bitchy")>>
diff --git a/src/uncategorized/arcade.tw b/src/uncategorized/arcade.tw
index 8b7f8a04404a3f6921008a199a86e694d7bd8b52..f0b0ff337eafdf0f475e01a01180a98cee16ec59 100644
--- a/src/uncategorized/arcade.tw
+++ b/src/uncategorized/arcade.tw
@@ -87,7 +87,7 @@ $arcadeNameCaps
 	<</if>>
 <</if>>
 
-<br>It can support $arcade inmates. Currently $arcadeSlaves <<if $arcadeSlaves == 1>>slave is<<else>>slaves are<</if>> incarcerated.
+<br>It can support $arcade inmates. There <<if $arcadeSlaves == 1>>is<<else>>are<</if>> currently $arcadeSlaves slaves<<if $arcadeSlaves != 1>>s<</if>> incarcerated in $arcadeName.
 <<if $arcadeUpgradeFuckdolls == 1 && $arcadeSlaves > 1>>
 	<br>The arcade has automatic fuckdolification functions and you can decide to convert your least popular slave at the end of the week. [[Activate|Arcade][$arcadeUpgradeFuckdolls == 2]]
 <<elseif $arcadeUpgradeFuckdolls == 2>>
@@ -114,7 +114,7 @@ $arcadeNameCaps
 <</if>>
 
 <<if $arcadeUpgradeHealth == 2>>
-	<br>It has been upgraded with curative injectors and set to maximum power. Inmates will be kept decently healthy so they can be held locked in place for as long as necessary while remaining productive througout. [[Decrease power|Arcade][$arcadeUpgradeHealth = 1]]
+	<br>It has been upgraded with curative injectors and set to maximum power. Inmates will be kept decently healthy so they can be held locked in place for as long as necessary while remaining productive throughout. [[Decrease power|Arcade][$arcadeUpgradeHealth = 1]]
 <<elseif $arcadeUpgradeHealth == 1>>
 	<br>It has been upgraded with curative injectors. inmates will be kept alive and productive, so they may be held locked in place for as long as necessary and available for use. [[Increase power|Arcade][$arcadeUpgradeHealth = 2]] | [[Turn off|Arcade][$arcadeUpgradeHealth = 0]]
 <<elseif $arcadeUpgradeHealth == 0>>
diff --git a/src/uncategorized/arcadeReport.tw b/src/uncategorized/arcadeReport.tw
index f95fd0e9b898f1bc1fdddd9844fd336f21c69ded..190244fc68dd9cdf318d437bf65e37fdc184afa8 100644
--- a/src/uncategorized/arcadeReport.tw
+++ b/src/uncategorized/arcadeReport.tw
@@ -102,11 +102,12 @@
 			<</if>>
 			<<set _milkprofits += $cash-_oldCash>>
 			<<set _growth = 0>>
+			<<set _gigantomastiaMod = $slaves[$i].geneticQuirks.gigantomastia == 2 ? ($slaves[$i].geneticQuirks.macromastia == 2 ? 3 : 2) : 1>>
 			<<if ($slaves[$i].boobs < 2000)>>
 				<<set _growth = 100>>
-			<<elseif ($slaves[$i].boobs < 5000)>>
+			<<elseif ($slaves[$i].boobs < 5000*_gigantomastiaMod)>>
 				<<set _growth = 50>>
-			<<elseif ($slaves[$i].boobs < 10000)>>
+			<<elseif ($slaves[$i].boobs < 10000*_gigantomastiaMod)>>
 				<<set _growth = 25>>
 			<</if>>
 			<<if ($slaves[$i].geneMods.NCS == 1)>>
@@ -272,7 +273,7 @@
 		b.customers = 0;
 		b.whoreCosts = 0;
 		b.rep = 0;
-		for(var si of b.income.values()) {
+		for (var si of b.income.values()) {
 			b.whoreIncome += si.income;
 			b.customers += si.customers;
 			b.whoreCosts += si.cost;
diff --git a/src/uncategorized/arcmgmt.tw b/src/uncategorized/arcmgmt.tw
index 54d72d7f7c811524977acc08206fd6861a8bb93d..37f67e3fb921f16a638309550a048d1c6d9c770d 100644
--- a/src/uncategorized/arcmgmt.tw
+++ b/src/uncategorized/arcmgmt.tw
@@ -9,7 +9,7 @@
 	<<if $arcadeDemandDegResult == 1>>
 		Your endeavors to see slaves as less than human are hampered as citizens find that there are too few slaves ready to be treated as sexual objects around. @@.red;Development towards a degradationist society is damaged@@ as a result.<br>
 	<<elseif $arcadeDemandDegResult == 2>>
-		Your endeavors to see slaves as less than human are slightly hampered as citizens find that thare are not quite enough slaves ready to be treated as sexual objects around. @@.red;Development towards a degradationist society is lightly damaged@@ as a result.<br>
+		Your endeavors to see slaves as less than human are slightly hampered as citizens find that there are not quite enough slaves ready to be treated as sexual objects around. @@.red;Development towards a degradationist society is lightly damaged@@ as a result.<br>
 	<<elseif $arcadeDemandDegResult == 3>>
 		Your citizens were expecting to see more slaves available as sexual objects, but there aren't enough complaints to damage your societal development at this time.<br>
 	<<elseif $arcadeDemandDegResult == 4>>
@@ -44,7 +44,7 @@
 <<elseif $lowerClassSexDemandResult == 4>>
 	Your lower class citizens are @@.green;happy with the availability of sexual services@@ inside your arcology.<br>
 <<elseif $lowerClassSexDemandResult == 5>>
-	Your lower class citizens are @@.green;delighted with the abundence of sexual services@@ inside your arcology.<br>
+	Your lower class citizens are @@.green;delighted with the abundance of sexual services@@ inside your arcology.<br>
 <</if>>
 <<print $NPCMarketShareLC/10>>% of the lower class market is serviced by other suppliers operating inside your arcology.<br>
 
@@ -183,7 +183,7 @@ _enslaveChance = 0.2>>
 	_upperClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSTransformationFetishist, 100) / 20) * 0.001,
 	_topClass += Math.trunc(Math.min($arcologies[0].FSTransformationFetishist, 100) / 20) * 0.5,
 	_topClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSTransformationFetishist, 100) / 20) * 0.001>>
-	The lower class fear the kind of transformations could be forced on them if they ever end up enslaved, whereas the rich enjoy weilding such power.
+	The lower class fear the kind of transformations could be forced on them if they ever end up enslaved, whereas the rich enjoy wielding such power.
 <</if>>
 <<if $arcologies[0].FSYouthPreferentialist != "unset">>
 	<<set _FSScore += Math.min($arcologies[0].FSYouthPreferentialist, 100),
@@ -1116,7 +1116,7 @@ _percTopClass = Math.trunc(($topClass / ($ACitizens + $ASlaves)) * 1000) / 10>>
 	<<set _rentMultiplier *= 0.95>>
 	Younger citizens are offered subsidized rent to encourage young people to join the free population of your arcology.
 <<elseif $arcologies[0].FSMaturityPreferentialistLaw == 1>>
-	<<set _rentlMultiplier *= 0.95>>
+	<<set _rentMultiplier *= 0.95>>
 	Older citizens are offered subsidized rent to encourage mature people to join the free population of your arcology.
 <</if>>
 <<if $arcologies[0].FSRepopulationFocusLaw == 1>>
@@ -1229,7 +1229,7 @@ You own
 <<if _menialEarnings + _bioreactorEarnings + _fuckdollsEarnings > 0>>
 earning you @@.yellowgreen;<<print cashFormat(_menialEarnings + _bioreactorEarnings + _fuckdollsEarnings)>>.@@
 <<else>>
-costing you @@.red;<<print cashFormat(_menialEarnings + _bioreactorEarnings + _fuckdollsEarnings)>>@@ on account of your free fuckdoll policiy.
+costing you @@.red;<<print cashFormat(_menialEarnings + _bioreactorEarnings + _fuckdollsEarnings)>>@@ on account of your free fuckdoll policy.
 <</if>>
 <</if>>
 
diff --git a/src/uncategorized/bodyModificationReaction.tw b/src/uncategorized/bodyModificationReaction.tw
index 59c445d20d558dc1eed196eade96718c96353434..a6756ce8d7c38aa1c8d4097aaadf1da8b1d28815 100644
--- a/src/uncategorized/bodyModificationReaction.tw
+++ b/src/uncategorized/bodyModificationReaction.tw
@@ -12,7 +12,7 @@ As you cast off $his bindings<<if canSee($activeSlave)>> and <<if ($activeSlave.
 <<if $activeSlave.fetish != "mindbroken" && $activeSlave.fuckdoll == 0>>
 	<<if $degradation > 10>>
 		<<if $activeSlave.devotion < -20 && $activeSlave.trust > 20>>
-			$He is appalled by the whorish spectacle you have made of $him. $He @@.mediumorchid;lothes@@ you all the more for this, but $his resolve is @@.gold;whittled down@@ by your power over $him.
+			$He is appalled by the whorish spectacle you have made of $him. $He @@.mediumorchid;loves@@ you all the more for this, but $his resolve is @@.gold;whittled down@@ by your power over $him.
 			<<set $activeSlave.devotion -= 10, $activeSlave.trust -= 10>>
 		<<elseif $activeSlave.devotion <= 50 && $activeSlave.trust < -50>>
 			$He is appalled by the whorish spectacle you have made of $him. $He @@.gold;fears@@ you all the more for this but is so terrified of you it does not affect $his submission.
diff --git a/src/uncategorized/brothel.tw b/src/uncategorized/brothel.tw
index f1c2752c26338cc51572335f310b9bdba27faa1b..d5fbc18b57f1a0a0974dcc38e6ddcffe857b8b05 100644
--- a/src/uncategorized/brothel.tw
+++ b/src/uncategorized/brothel.tw
@@ -162,7 +162,7 @@ $brothelNameCaps
 <</if>>
 
 <<set _Tmult0 = Math.trunc($brothel*1000*$upgradeMultiplierArcology)>>
-<br>It can support $brothel whores. Currently there <<if $brothelSlaves == 1>>is<<else>>are<</if>> $brothelSlaves whore<<if $brothelSlaves != 1>>s<</if>> at $brothelNameCaps.
+<br>It can support $brothel whores. Currently there <<if $brothelSlaves == 1>>is<<else>>are<</if>> $brothelSlaves whore<<if $brothelSlaves != 1>>s<</if>> at $brothelName.
 [[Expand the brothel|Brothel][cashX(forceNeg(_Tmult0), "capEx"), $brothel += 5, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>> and will increase upkeep costs//
 
 <<if $Madam != 0>>
diff --git a/src/uncategorized/brothelReport.tw b/src/uncategorized/brothelReport.tw
index 4e4310bb99d59253ed0294da40bda5246d05d976..8e11b8eab0c49b81628b85defb9bd602a8f48291 100644
--- a/src/uncategorized/brothelReport.tw
+++ b/src/uncategorized/brothelReport.tw
@@ -57,15 +57,15 @@
 	<<elseif (_FLsFetish == 2)>>
 		$He's careful that all of the whores under $his supervision are all warmed up and ready to get fucked every morning, and $he @@.lightsalmon;becomes more dominant.@@
 	<</if>>
-	<<if ($Madam.skill.whore <= 10)>>
+	<<if ($Madam.skill.whoring <= 10)>>
 		Though $Madam.slaveName does $his best to manage the brothel, with $his lack of skill $he can do little.
-	<<elseif ($Madam.skill.whore <= 30)>>
+	<<elseif ($Madam.skill.whoring <= 30)>>
 		$Madam.slaveName's basic skills marginally @@.yellowgreen;improve@@ business at $brothelName.
 		<<set $madamCashBonus += 0.05>>
-	<<elseif ($Madam.skill.whore <= 60)>>
+	<<elseif ($Madam.skill.whoring <= 60)>>
 		$Madam.slaveName's skills @@.yellowgreen;improve@@ business at $brothelName.
 		<<set $madamCashBonus += 0.1>>
-	<<elseif ($Madam.skill.whore < 100)>>
+	<<elseif ($Madam.skill.whoring < 100)>>
 		$Madam.slaveName's skills greatly @@.yellowgreen;improve@@ business at $brothelName.
 		<<set $madamCashBonus += 0.15>>
 	<<else>>
@@ -195,9 +195,9 @@
 		<<if (_DL+$slavesGettingHelp < 5)>>
 			<<set $i = _FLs>> /* apply following SA passages to facility leader */
 			<<if $showEWD != 0>>
-				<br>&nbsp;&nbsp;&nbsp;&nbsp;$He <<include "SA whore">>
+				<br>&nbsp;&nbsp;&nbsp;&nbsp;$He <<= saWhore($slaves[$i])>>
 			<<else>>
-				<<silently>><<include "SA whore">><</silently>>
+				<<set _dump = saWhore($slaves[$i])>>
 			<</if>>
 			<<set _seed = $cash-_oldCash, _cashX += Math.trunc(0.5*_seed), _seed = Math.trunc(1.5*_seed), _profits += _seed>>
 			<<run cashX(_cashX, "whore", $Madam)>>
@@ -256,9 +256,9 @@
 	<<else>>
 		<<set _old += 1>>
 	<</if>>
-	<<if isModded($slaves[_FLs])>>
+	<<if SlaveStatsChecker.isModded($slaves[_FLs])>>
 		<<set _modded += 1>>
-	<<elseif isUnmodded($slaves[_FLs])>>
+	<<elseif SlaveStatsChecker.isUnmodded($slaves[_FLs])>>
 		<<set _unmodded += 1>>
 	<</if>>
 	<<if isXY($slaves[_FLs])>>
@@ -292,7 +292,7 @@
 		<<if ($legendaryWombID == 0) && ($slaves[$i].amp != 1) && ($slaves[$i].preg > $slaves[$i].pregData.normalBirth/1.33) && ($slaves[$i].broodmother == 0) && ($slaves[$i].eggType == "human") && ($slaves[$i].counter.births > 10) && ($slaves[$i].devotion > 50) && ($slaves[$i].prestige == 0)>>
 			<<set $legendaryWombID = $slaves[$i].ID>>
 		<</if>>
-		<<if ($legendaryWhoreID == 0) && ($slaves[$i].skill.whore >= 100) && ($slaves[$i].devotion > 50) && ($slaves[$i].prestige == 0)>>
+		<<if ($legendaryWhoreID == 0) && ($slaves[$i].skill.whoring >= 100) && ($slaves[$i].devotion > 50) && ($slaves[$i].prestige == 0)>>
 			<<set $legendaryWhoreID = $slaves[$i].ID>>
 		<</if>>
 
@@ -342,7 +342,7 @@
 			<<else>>
 				is working out of $brothelName.
 			<</if>>
-			<br>&nbsp;&nbsp;&nbsp;&nbsp;$He <<include "SA whore">>
+			<br>&nbsp;&nbsp;&nbsp;&nbsp;$He <<= saWhore($slaves[$i])>>
 			<br>&nbsp;&nbsp;&nbsp;
 			<<= saChoosesOwnClothes($slaves[$i])>>
 			<<include "SA rules">>
@@ -355,7 +355,7 @@
 		<<else>>
 			<<silently>>
 			<<include "SA chooses own job">>
-			<<include "SA whore">>
+			<<set _dump = saWhore($slaves[$i])>>
 			<<set _chosenClothes = saChoosesOwnClothes($slaves[$i])>>
 			<<include "SA rules">>
 			<<include "SA diet">>
@@ -377,9 +377,9 @@
 		<<else>>
 			<<set _old += 1>>
 		<</if>>
-		<<if isModded($slaves[$i])>>
+		<<if SlaveStatsChecker.isModded($slaves[$i])>>
 			<<set _modded += 1>>
-		<<elseif isUnmodded($slaves[$i])>>
+		<<elseif SlaveStatsChecker.isUnmodded($slaves[$i])>>
 			<<set _unmodded += 1>>
 		<</if>>
 		<<if isXY($slaves[$i])>>
@@ -923,7 +923,7 @@
 		b.customers = 0;
 		b.whoreCosts = 0;
 		b.rep = 0;
-		for(var si of b.income.values()) {
+		for (var si of b.income.values()) {
 			b.whoreIncome += si.income + si.adsIncome;
 			b.customers += si.customers;
 			b.whoreCosts += si.cost;
diff --git a/src/uncategorized/cellblock.tw b/src/uncategorized/cellblock.tw
index c3bfd3068786fc14a325d40046d9ee10e29244bb..1e396b40a2e4b8db39fd545c3d037474f8f357f5 100644
--- a/src/uncategorized/cellblock.tw
+++ b/src/uncategorized/cellblock.tw
@@ -87,7 +87,7 @@ $cellblockNameCaps
 <</if>>
 
 <<set _Tmult0 = Math.trunc($cellblock*1000*$upgradeMultiplierArcology)>>
-<br>$cellblockNameCaps has room for $cellblock slaves to be kept in close confinement. Currently $cellblockSlaves <<if $cellblockSlaves == 1>>is<<else>>are<</if>> kept in close confinement.
+<br>$cellblockNameCaps has room for $cellblock slaves to be kept in close confinement. There <<if $cellblockSlaves == 1>>is<<else>>are<</if>> currently $cellblockSlaves slaves<<if $cellblockSlaves != 1>>s<</if>> kept in close confinement in $cellblockName.
 [[Expand the cellblock|Cellblock][cashX(forceNeg(_Tmult0), "capEx"), $cellblock += 5, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>>//
 
 <br>
diff --git a/src/uncategorized/clinic.tw b/src/uncategorized/clinic.tw
index 1180023b4e6897bc0d69d74128ca3d118632c0dc..ddb516b27b94453e8042a5827f8eec94b36a9c9f 100644
--- a/src/uncategorized/clinic.tw
+++ b/src/uncategorized/clinic.tw
@@ -87,7 +87,7 @@ $clinicNameCaps
 <</if>>
 
 <<set _Tmult0 = Math.trunc($clinic*1000*$upgradeMultiplierArcology)>>
-<br>$clinicNameCaps has room to support $clinic slaves while they receive treatment. Currently $clinicSlaves slave<<if $clinicSlaves == 1>> is<<else>>s are<</if>> receiving treatment.
+<br>$clinicNameCaps has room to support $clinic slaves while they receive treatment. There <<if $clinicSlaves == 1>>is<<else>>are<</if>> currently $clinicSlaves slave<<if $clinicSlaves != 1>>s<</if>> receiving treatment in $clinicName.
 [[Expand the clinic|Clinic][cashX(forceNeg(_Tmult0), "capEx"), $clinic += 5, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>>//
 
 <br>
diff --git a/src/uncategorized/club.tw b/src/uncategorized/club.tw
index 1231f6018d1c489d4edbcfbb79ba71cdc84ffbf0..2350808bbda0370a844f69b7e114a1070d7a434d 100644
--- a/src/uncategorized/club.tw
+++ b/src/uncategorized/club.tw
@@ -218,7 +218,7 @@ $clubNameCaps
 <</if>>
 
 <<set _Tmult0 = Math.trunc($club*1000*$upgradeMultiplierArcology)>>
-<br>There are rooms off $clubName to support slaves as they work as club sluts. They can support $club slaves. Currently $clubSlaves <<if $clubSlaves == 1>>is<<else>>are<</if>> serving in $clubName.
+<br>There are rooms off $clubName to support slaves as they work as club sluts. They can support $club slaves. There <<if $clubSlaves == 1>>is<<else>>are<</if>> currently $clubSlaves slave<<if $clubSlaves != 1>>s<</if>> serving in $clubName.
 [[Expand the club|Club][cashX(forceNeg(_Tmult0), "capEx"), $club += 5, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>> and will increase upkeep costs//
 
 <br>
diff --git a/src/uncategorized/clubReport.tw b/src/uncategorized/clubReport.tw
index e5c9da2a2b4c742cbfcc980527ff2daa64f42757..b601dbea3161905611f877b1fa9a594f1ca77c6c 100644
--- a/src/uncategorized/clubReport.tw
+++ b/src/uncategorized/clubReport.tw
@@ -88,7 +88,7 @@
 	<</if>>
 	<<if (_DL + $slavesGettingHelp < 10)>>
 		<<set $i = _FLs>> /* apply following SA passages to facility leader */
-		<<if ($legendaryEntertainerID == 0) && ($slaves[_FLs].prestige == 0) && ($slaves[_FLs].entertainSkill >= 100) && ($slaves[_FLs].devotion > 50)>>
+		<<if ($legendaryEntertainerID == 0) && ($slaves[_FLs].prestige == 0) && ($slaves[_FLs].skill.entertainment >= 100) && ($slaves[_FLs].devotion > 50)>>
 			<<set $legendaryEntertainerID = $slaves[_FLs].ID>>
 		<</if>>
 		<<if (_DL+$slavesGettingHelp < 10)>>
@@ -104,7 +104,7 @@
 			<</if>>
 			<<run repX(Math.trunc(($beauty*$FResult)*(1+(0.003*$slaves[_FLs].skill.entertainment))*0.1*0.5), "club", $slaves[_FLs])>>
 		<</if>>
-		<<run repX(Math.trunc(($slaves[_FLs].sexAmount*$slaves[_FLs].sexQuality)*(1+(0.003*$slaves[_FLs].entertainSkill))*0.1*0.5), "club", $slaves[_FLs])>>
+		<<run repX(Math.trunc(($slaves[_FLs].sexAmount*$slaves[_FLs].sexQuality)*(1+(0.003*$slaves[_FLs].skill.entertainment))*0.1*0.5), "club", $slaves[_FLs])>>
 	<</if>>
 	<<if (_DL > 0)>><br><br><</if>>
 <</if>>
@@ -159,9 +159,9 @@
 	<<else>>
 		<<set _old += 1>>
 	<</if>>
-	<<if isModded($slaves[_FLs])>>
+	<<if SlaveStatsChecker.isModded($slaves[_FLs])>>
 		<<set _modded += 1>>
-	<<elseif isUnmodded($slaves[_FLs])>>
+	<<elseif SlaveStatsChecker.isUnmodded($slaves[_FLs])>>
 		<<set _unmodded += 1>>
 	<</if>>
 	<<if isXY($slaves[_FLs])>>
@@ -267,9 +267,9 @@
 		<<else>>
 			<<set _old += 1>>
 		<</if>>
-		<<if isModded($slaves[$i])>>
+		<<if SlaveStatsChecker.isModded($slaves[$i])>>
 			<<set _modded += 1>>
-		<<elseif isUnmodded($slaves[$i])>>
+		<<elseif SlaveStatsChecker.isUnmodded($slaves[$i])>>
 			<<set _unmodded += 1>>
 		<</if>>
 		<<if isXY($slaves[$i])>>
@@ -734,7 +734,7 @@
 		b.customers = 0;
 		b.whoreCosts = 0;
 		b.rep = 0;
-		for(var si of b.income.values()) {
+		for (var si of b.income.values()) {
 			b.whoreIncome += si.income;
 			b.customers += si.customers;
 			b.whoreCosts += si.cost;
diff --git a/src/uncategorized/costsBudget.tw b/src/uncategorized/costsBudget.tw
index 974c3b35ce6bd5840108c3d4078b4441f17b78e9..8d3bd616b3405180f6624643cf3f0b118ce6eeda 100644
--- a/src/uncategorized/costsBudget.tw
+++ b/src/uncategorized/costsBudget.tw
@@ -1,6 +1,6 @@
 :: Costs Budget [nobr]
 
-<<set $nextButton = "Back to Main", $nextLink = "Main", _archologyCosts = 0>>
+<<set $nextButton = "Back to Main", $nextLink = "Main", _arcologyCosts = 0>>
 
 <<if def $lastWeeksCashIncome>>
 	<<set $lastWeeksCashIncome.Total = 0>>
@@ -70,7 +70,7 @@
 <<else>>
 
 <<script>>
-for(var i = 0; i < State.variables.lastWeeksCashIncome.length; i++){
+for (var i = 0; i < State.variables.lastWeeksCashIncome.length; i++){
 	State.variables.lastWeeksCashProfits[i] = (State.variables.lastWeeksCashIncome[i] + State.variables.lastWeeksCashExpenses[i]);
 }
 <</script>>
diff --git a/src/uncategorized/costsReport.tw b/src/uncategorized/costsReport.tw
index 26e2e796e4ed79da19c7e30461bea640640a2488..0b0bcf35d947bb169a10557cafe173418c0e29a4 100644
--- a/src/uncategorized/costsReport.tw
+++ b/src/uncategorized/costsReport.tw
@@ -524,7 +524,7 @@ $nursery > 0 || $masterSuiteUpgradePregnancy > 0 || $incubator > 0 ||
 	<</if>>
 	<<if ($slaves[$i].geneticQuirks.fertility == 2 && $slaves[$i].geneticQuirks.hyperFertility == 2 && $slaves[$i].preg == 0 && ($slaves[$i].ovaries == 1 || $slaves[$i].mpreg == 1))>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
-		<<if $geneticMappingUpgrade == 1>>
+		<<if $geneticMappingUpgrade >= 1>>
 			<i>Additional dietary supplements due to genetic hyper-fertility:</i> @@.yellowgreen;<<print cashFormat($foodCost/2)>>@@
 		<<else>>
 			<i>Adjustment for unusual deitary deficiencies:</i> @@.yellowgreen;<<print cashFormat($foodCost/2)>>@@
@@ -533,7 +533,7 @@ $nursery > 0 || $masterSuiteUpgradePregnancy > 0 || $incubator > 0 ||
 	<</if>>
 	<<if ($slaves[$i].geneticQuirks.rearLipedema == 2)>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
-		<<if $geneticMappingUpgrade == 1>>
+		<<if $geneticMappingUpgrade >= 1>>
 			<i>Additional dietary supplements due to lipedema:</i> @@.yellowgreen;<<print cashFormat($foodCost/5)>>@@
 		<<else>>
 			<i>Adjustment for unusual deitary deficiencies:</i> @@.yellowgreen;<<print cashFormat($foodCost/5)>>@@
diff --git a/src/uncategorized/costsWidgets.tw b/src/uncategorized/costsWidgets.tw
index f410b561f366c8929364158121ac4ea35f125eca..fd33a509e5336b256d4b3687cc6e3df3bbca6398 100644
--- a/src/uncategorized/costsWidgets.tw
+++ b/src/uncategorized/costsWidgets.tw
@@ -107,13 +107,22 @@
 	<</if>>
 	<<if ($args[0].geneticQuirks.fertility == 2 && $args[0].geneticQuirks.hyperFertility == 2 && $args[0].preg == 0 && ($args[0].ovaries == 1 || $args[0].mpreg == 1))>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
-		<<if $geneticMappingUpgrade == 1>>
+		<<if $geneticMappingUpgrade >= 1>>
 			<i>Additional dietary supplements due to genetic hyper-fertility:</i> @@.yellowgreen;<<print cashFormat($foodCost/2)>>@@
 		<<else>>
-			<i>Adjustment for unusual deitary deficiencies:</i> @@.yellowgreen;<<print cashFormat($foodCost/2)>>@@
+			<i>Adjustment for unusual dietary deficiencies:</i> @@.yellowgreen;<<print cashFormat($foodCost/2)>>@@
 		<</if>>
 		<<set _individualCosts += $foodCost/2>>
 	<</if>>
+	<<if ($args[0].geneticQuirks.rearLipedema == 2)>>
+		<br>&nbsp;&nbsp;&nbsp;&nbsp;
+		<<if $geneticMappingUpgrade >= 1>>
+			<i>Additional dietary supplements due to lipedema:</i> @@.yellowgreen;<<print cashFormat($foodCost/5)>>@@
+		<<else>>
+			<i>Adjustment for unusual dietary deficiencies:</i> @@.yellowgreen;<<print cashFormat($foodCost/5)>>@@
+		<</if>>
+		<<set _individualCosts += $foodCost/5>>
+	<</if>>
 	<<if $args[0].drugs == "appetite suppressors">>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Food saved via suppressed appetite:</i> //reduced by// @@.yellowgreen;<<print cashFormat($foodCost)>>@@
 		<<set _individualCosts -= $foodCost>>
diff --git a/src/uncategorized/customSlave.tw b/src/uncategorized/customSlave.tw
index 282907037a1444bdb79104034ac5d262e823ee09..9bcbf9959f7680dc464d29f9f18572325571d9b4 100644
--- a/src/uncategorized/customSlave.tw
+++ b/src/uncategorized/customSlave.tw
@@ -1031,40 +1031,40 @@ Skin tone: <span id = "skin">
 <br>
 
 <span id = "whoreskills">
-<<if $customSlave.skill.whores <= 10>>Unskilled at prostitution and entertainment.
-<<elseif $customSlave.skill.whores <= 15>>Basic skills at prostitution and entertainment.
+<<if $customSlave.skill.whore <= 10>>Unskilled at prostitution and entertainment.
+<<elseif $customSlave.skill.whore <= 15>>Basic skills at prostitution and entertainment.
 <<else>>Skilled at prostitution and entertainment.
 <</if>>
 </span>
 <<link "Unskilled">>
-	<<set $customSlave.skill.whores = 0>>
+	<<set $customSlave.skill.whore = 0>>
 	<<CustomSlaveWhoreSkills>>
 <</link>>
 |
 <<link "Skilled">>
-	<<set $customSlave.skill.whores = 15>>
+	<<set $customSlave.skill.whore = 15>>
 	<<CustomSlaveWhoreSkills>>
 <</link>>
 |
 <<link "Expert">>
-	<<set $customSlave.skill.whores = 35>>
+	<<set $customSlave.skill.whore = 35>>
 	<<CustomSlaveWhoreSkills>>
 <</link>>
 
 <br>
 
 <span id = "combatskills">
-<<if $customSlave.skill.combats == 0>>Unskilled at combat.
+<<if $customSlave.skill.combat == 0>>Unskilled at combat.
 <<else>>Skilled at combat.
 <</if>>
 </span>
 <<link "Unskilled">>
-	<<set $customSlave.skill.combats = 0>>
+	<<set $customSlave.skill.combat = 0>>
 	<<CustomSlaveCombatSkills>>
 <</link>>
 |
 <<link "Skilled">>
-	<<set $customSlave.skill.combats = 1>>
+	<<set $customSlave.skill.combat = 1>>
 	<<CustomSlaveCombatSkills>>
 <</link>>
 
diff --git a/src/uncategorized/dairy.tw b/src/uncategorized/dairy.tw
index 7941c7f5aeffa5e919214b67e49692a4cda1dd77..e5e43cfcc6167a78a10bdb2935455195f9ed6cb1 100644
--- a/src/uncategorized/dairy.tw
+++ b/src/uncategorized/dairy.tw
@@ -449,16 +449,16 @@ $dairyNameCaps
 <<if $dairySlimMaintain == 0>>
 	<<if $dairyImplantsSetting == 1>>
 		All cows will undergo lactation implant surgery to increase their milk output.
-		[[Restrict lactation surgery on cum-cows|Dairy][$dairyImplantsSetting = 0]] | [[Restrict maximization surgery on cattle|Dairy][$dairyImplantsSetting = 2]] | [[Encourage natural lacation in cattle|Dairy][$dairyImplantsSetting = 3]]
+		[[Restrict lactation surgery on cum-cows|Dairy][$dairyImplantsSetting = 0]] | [[Restrict maximization surgery on cattle|Dairy][$dairyImplantsSetting = 2]] | [[Encourage natural lactation in cattle|Dairy][$dairyImplantsSetting = 3]]
 	<<elseif $dairyImplantsSetting == 2>>
 		Cows will not undergo surgical procedures to maximize production.
-		[[Maximize production in all cattle|Dairy][$dairyImplantsSetting = 1]] | [[Maximize production in only milkable cows|Dairy][$dairyImplantsSetting = 0]] | [[Encourage natural lacation in cattle|Dairy][$dairyImplantsSetting = 3]]
+		[[Maximize production in all cattle|Dairy][$dairyImplantsSetting = 1]] | [[Maximize production in only milkable cows|Dairy][$dairyImplantsSetting = 0]] | [[Encourage natural lactation in cattle|Dairy][$dairyImplantsSetting = 3]]
 	<<elseif $dairyImplantsSetting == 3>>
 		Non-lactating cows incapable of producing cum will undergo manual stimulation to promote natural production.
 		[[Maximize production in all cattle|Dairy][$dairyImplantsSetting = 1]] | [[Maximize production in only milkable cows|Dairy][$dairyImplantsSetting = 0]] | [[Restrict maximization surgery on cattle|Dairy][$dairyImplantsSetting = 2]]
 	<<else>>
 		Naturally lactating cows, cows with non-lactating breasts, and cows incapable of producing cum will undergo lactation implant surgery to increase their milk output.
-		[[Maximize lactation in all cattle|Dairy][$dairyImplantsSetting = 1]] | [[Restrict maximization surgery on cattle|Dairy][$dairyImplantsSetting = 2]] | [[Encourage natural lacation in cattle|Dairy][$dairyImplantsSetting = 3]]
+		[[Maximize lactation in all cattle|Dairy][$dairyImplantsSetting = 1]] | [[Restrict maximization surgery on cattle|Dairy][$dairyImplantsSetting = 2]] | [[Encourage natural lactation in cattle|Dairy][$dairyImplantsSetting = 3]]
 	<</if>>
 <<else>>
 	Current settings do not implant lactation implants into cows.
diff --git a/src/uncategorized/dairyReport.tw b/src/uncategorized/dairyReport.tw
index a36a60d4dd8ff449a2e1f778f12e5f8e37d0b031..8dc3f1ead0e9fb0439fcd18d1facd59273e344b1 100644
--- a/src/uncategorized/dairyReport.tw
+++ b/src/uncategorized/dairyReport.tw
@@ -438,12 +438,13 @@
 		<<set $slaves[$i].inflation = 0, $slaves[$i].inflationType = "none", $slaves[$i].inflationMethod = 0, $slaves[$i].milkSource = 0>>
 		<<run SetBellySize($slaves[$i])>>
 	<</if>>
+	<<set _gigantomastiaMod = $slaves[$i].geneticQuirks.gigantomastia == 2 ? ($slaves[$i].geneticQuirks.macromastia == 2 ? 3 : 2) : 1>>
 	<<if ($slaves[$i].lactation > 0) && (($dairySlimMaintain == 0) || ($slaves[$i].boobs > 700))>>
 		<<if ($slaves[$i].boobs < 2000)>>
 			<<set _growth = 100>>
-		<<elseif ($slaves[$i].boobs < 5000)>>
+		<<elseif ($slaves[$i].boobs < 5000*_gigantomastiaMod)>>
 			<<set _growth = 50>>
-		<<elseif ($slaves[$i].boobs < 10000)>>
+		<<elseif ($slaves[$i].boobs < 10000*_gigantomastiaMod)>>
 			<<set _growth = 25>>
 		<<else>>
 			<<set _growth = 0>>
@@ -491,7 +492,7 @@
 						<<if $arcologies[0].FSAssetExpansionistResearch == 1>>
 							<<if ($slaves[$i].boobs < 2000)>>
 								<<set _growth = 75*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>>
-							<<elseif ($slaves[$i].boobs < 5000)>>
+							<<elseif ($slaves[$i].boobs < 5000*_gigantomastiaMod)>>
 								<<set _growth = 50*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>>
 							<<else>>
 								<<set _growth = 25*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>>
@@ -507,14 +508,14 @@
 						<</if>>
 						<<set $slaves[$i].boobs += _growth>>
 					<<else>>
-						<<set $slaves[$i].boobs = 50000>>
+						/*<<set $slaves[$i].boobs = 50000>>*/
 					<</if>>
 				<<elseif $dairyFeedersSetting > 0 && $dairyStimulatorsSetting > 0>>
 					<<if $slaves[$i].boobs < 25000>>
 						<<if $arcologies[0].FSAssetExpansionistResearch == 1>>
 							<<if ($slaves[$i].boobs < 2000)>>
 								<<set _growth = 75*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>>
-							<<elseif ($slaves[$i].boobs < 5000)>>
+							<<elseif ($slaves[$i].boobs < 5000*_gigantomastiaMod)>>
 								<<set _growth = 50*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>>
 							<<else>>
 								<<set _growth = 25*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>>
@@ -535,7 +536,7 @@
 						<<if $arcologies[0].FSAssetExpansionistResearch == 1>>
 							<<if ($slaves[$i].boobs < 2000)>>
 								<<set _growth = 75*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>>
-							<<elseif ($slaves[$i].boobs < 5000)>>
+							<<elseif ($slaves[$i].boobs < 5000*_gigantomastiaMod)>>
 								<<set _growth = 50*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>>
 							<<else>>
 								<<set _growth = 25*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>>
@@ -556,7 +557,7 @@
 						<<if $arcologies[0].FSAssetExpansionistResearch == 1>>
 							<<if ($slaves[$i].boobs < 2000)>>
 								<<set _growth = 75*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>>
-							<<elseif ($slaves[$i].boobs < 5000)>>
+							<<elseif ($slaves[$i].boobs < 5000*_gigantomastiaMod)>>
 								<<set _growth = 50*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>>
 							<<else>>
 								<<set _growth = 25*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>>
@@ -623,7 +624,7 @@
 					<<if $arcologies[0].FSAssetExpansionistResearch == 1>>
 						<<if ($slaves[$i].boobs < 2000)>>
 							<<set _growth = 75*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>>
-						<<elseif ($slaves[$i].boobs < 5000)>>
+						<<elseif ($slaves[$i].boobs < 5000*_gigantomastiaMod)>>
 							<<set _growth = 50*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>>
 						<<else>>
 							<<set _growth = 25*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>>
@@ -644,7 +645,7 @@
 					<<if $arcologies[0].FSAssetExpansionistResearch == 1>>
 						<<if ($slaves[$i].boobs < 2000)>>
 							<<set _growth = 75*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>>
-						<<elseif ($slaves[$i].boobs < 5000)>>
+						<<elseif ($slaves[$i].boobs < 5000*_gigantomastiaMod)>>
 							<<set _growth = 50*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>>
 						<<else>>
 							<<set _growth = 25*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>>
@@ -665,7 +666,7 @@
 					<<if $arcologies[0].FSAssetExpansionistResearch == 1>>
 						<<if ($slaves[$i].boobs < 2000)>>
 							<<set _growth = 75*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>>
-						<<elseif ($slaves[$i].boobs < 5000)>>
+						<<elseif ($slaves[$i].boobs < 5000*_gigantomastiaMod)>>
 							<<set _growth = 50*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>>
 						<<else>>
 							<<set _growth = 25*Math.trunc(($injectionUpgrade*2)+$dairyFeedersSetting+$dairyRestraintsSetting+((50)/4))>>
@@ -755,8 +756,8 @@
 					<<set $slaves[$i].devotion -= 10>>
 				<<elseif ($slaves[$i].trust >= -20)>>
 					<<set $slaves[$i].trust -= 10>>
-				<<elseif ($slaves[$i].skill.whore > 0)>>
-					<<set $slaves[$i].skill.whore -= 10, _skillsLost++>>
+				<<elseif ($slaves[$i].skill.whoring > 0)>>
+					<<set $slaves[$i].skill.whoring -= 10, _skillsLost++>>
 				<<elseif ($slaves[$i].skill.entertainment > 0)>>
 					<<set $slaves[$i].skill.entertainment -= 10, _skillsLost++>>
 				<<elseif ($slaves[$i].intelligence >= -50)>>
@@ -805,8 +806,8 @@
 				<<set $slaves[$i].devotion -= 8>>
 			<<elseif ($slaves[$i].trust >= -20)>>
 				<<set $slaves[$i].trust -= 8>>
-			<<elseif ($slaves[$i].skill.whore >= 20)>>
-				<<set $slaves[$i].skill.whore -= 10, _skillsLost++>>
+			<<elseif ($slaves[$i].skill.whoring >= 20)>>
+				<<set $slaves[$i].skill.whoring -= 10, _skillsLost++>>
 			<<elseif ($slaves[$i].skill.entertainment >= 20)>>
 				<<set $slaves[$i].skill.entertainment -= 10, _skillsLost++>>
 			<<elseif ($slaves[$i].intelligence >= -50)>>
@@ -1051,7 +1052,7 @@ $dairyNameCaps produced <<print _milkWeek+_outputMilk>> liters of milk<<if _cumW
 	b.whoreIncome = 0;
 	b.whoreCosts = 0;
 	b.rep = 0;
-	for(var si of b.income.values()) {
+	for (var si of b.income.values()) {
 		b.whoreIncome += si.income;
 		b.whoreCosts += si.cost;
 		b.rep += si.rep;
diff --git a/src/uncategorized/fullReport.tw b/src/uncategorized/fullReport.tw
index b821f4e2ffe616168d37eb83fb99dea7528e4d6c..60b6e3fe2edbe8e62ebaefded3f38e0b4efff46d 100644
--- a/src/uncategorized/fullReport.tw
+++ b/src/uncategorized/fullReport.tw
@@ -14,7 +14,7 @@
 <<case "rest">>
 	<<= saRest($slaves[$i])>>
 <<case "whore">>
-	<<include "SA whore">>
+	<<= saWhore($slaves[$i])>>
 <<case "serve the public">>
 	<<= saServeThePublic($slaves[$i])>>
 <<case "work a glory hole">>
diff --git a/src/uncategorized/futureSociety.tw b/src/uncategorized/futureSociety.tw
index f24441902c34e9beb9b4e00299e31e53c88e0f20..ee2c5d1bd8ad69fb9525dca7f2652f26942c7ac6 100644
--- a/src/uncategorized/futureSociety.tw
+++ b/src/uncategorized/futureSociety.tw
@@ -649,7 +649,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc
 		<<if $arcologies[0].FSSupremacist != "unset" && $arcologies[0].FSSupremacistRace == "amerindian">>//It is established that amerindians are superior//<<elseif $arcologies[0].FSSubjugationistRace != "amerindian">>[[Amerindian|Future Society][$arcologies[0].FSSubjugationistRace = "amerindian"]]<<else>>Amerindian<</if>> |
 		<<if $arcologies[0].FSSupremacist != "unset" && $arcologies[0].FSSupremacistRace == "pacific islander">>//It is established that pacific islanders are superior//<<elseif $arcologies[0].FSSubjugationistRace != "pacific islander">>[[Pacific Islander|Future Society][$arcologies[0].FSSubjugationistRace = "pacific islander"]]<<else>>Pacific Islander<</if>> |
 		<<if $arcologies[0].FSSupremacist != "unset" && $arcologies[0].FSSupremacistRace == "malay">>//It is established that malay are superior//<<elseif $arcologies[0].FSSubjugationistRace != "malay">>[[Malay|Future Society][$arcologies[0].FSSubjugationistRace = "malay"]]<<else>>Malay<</if>> |
-		<<if $arcologies[0].FSSupremacist != "unset" && $arcologies[0].FSSupremacistRace == "southern european">>//It is established that southern europeaners are superior//<<elseif $arcologies[0].FSSubjugationistRace != "southern european">>[[Southern European|Future Society][$arcologies[0].FSSubjugationistRace = "southern european"]]<<else>>Southern European<</if>> |
+		<<if $arcologies[0].FSSupremacist != "unset" && $arcologies[0].FSSupremacistRace == "southern european">>//It is established that southern europeans are superior//<<elseif $arcologies[0].FSSubjugationistRace != "southern european">>[[Southern European|Future Society][$arcologies[0].FSSubjugationistRace = "southern european"]]<<else>>Southern European<</if>> |
 		<<if $arcologies[0].FSSupremacist != "unset" && $arcologies[0].FSSupremacistRace == "semitic">>//It is established that semites are superior//<<elseif $arcologies[0].FSSubjugationistRace != "semitic">>[[Semitic|Future Society][$arcologies[0].FSSubjugationistRace = "semitic"]]<<else>>Semitic<</if>> |
 		<<if $arcologies[0].FSSupremacist != "unset" && $arcologies[0].FSSupremacistRace == "mixed race">>//It is established that those with mixed blood are superior//<<elseif $arcologies[0].FSSubjugationistRace != "mixed race">>[[Mixed Race|Future Society][$arcologies[0].FSSubjugationistRace = "mixed race"]]<<else>>Mixed Race<</if>>
 		<br>
@@ -767,7 +767,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc
 		<br>
 	<<else>>
 		<<if $FSCredits > 0>>
-			<br>''''[[Paternalism|Future Society][$arcologies[0].FSPaternalist = 4, $FSCredits -= 1]]: a vision of slave improvement, including slaves' health, mental well-being, and education.<br>
+			<br>''''[[Paternalism|Future Society][$arcologies[0].FSPaternalist = 4, $FSCredits -= 1]]: a vision of slave improvement, including slaves' health, mental well-being, and education.
 		<<else>>
 			/*//''Paternalism'': a vision of slave improvement, including slaves' health, mental well-being, and education.//*/
 		<</if>>
@@ -1194,74 +1194,64 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc
 
 __Facility Redecoration__
 
+<<run FutureSocieties.DecorationCleanup()>>
+
 <<if $brothel > 0>>
-	<<run ValidateFacilityDecoration("brothelDecoration")>>
 	<br>$brothelNameCaps is decorated in $brothelDecoration style.
 	<<SetFacilityDecoration "brothelDecoration">>
 <</if>>
 
 <<if $club > 0>>
-	<<run ValidateFacilityDecoration("clubDecoration")>>
 	<br>$clubNameCaps is decorated in $clubDecoration style.
 	<<SetFacilityDecoration "clubDecoration">>
 <</if>>
 
 <<if $dairy > 0>>
-	<<run ValidateFacilityDecoration("dairyDecoration")>>
 	<br>$dairyNameCaps is decorated in $dairyDecoration style.
 	<<SetFacilityDecoration "dairyDecoration">>
 <</if>>
 
 <<if $farmyard > 0>>
-	<<run ValidateFacilityDecoration("farmyardDecoration")>>
 	<br>$farmyardNameCaps is decorated in $farmyardDecoration style.
 	<<SetFacilityDecoration "farmyardDecoration">>
 <</if>>
 
 <<if $spa > 0>>
-	<<run ValidateFacilityDecoration("spaDecoration")>>
 	<br>$spaNameCaps is decorated in $spaDecoration style.
 	<<SetFacilityDecoration "spaDecoration">>
 <</if>>
 
 <<if $nursery > 0>>
-	<<run ValidateFacilityDecoration("nurseryDecoration")>>
 	<br>$nurseryNameCaps is decorated in $nurseryDecoration style.
 	<<SetFacilityDecoration "nurseryDecoration">>
 <</if>>
 
 <<if $clinic > 0>>
-	<<run ValidateFacilityDecoration("clinicDecoration")>>
 	<br>$clinicNameCaps is decorated in $clinicDecoration style.
 	<<SetFacilityDecoration "clinicDecoration">>
 <</if>>
 
 <<if $schoolroom > 0>>
-	<<run ValidateFacilityDecoration("schoolroomDecoration")>>
 	<br>$schoolroomNameCaps is decorated in $schoolroomDecoration style.
 	<<SetFacilityDecoration "schoolroomDecoration">>
 <</if>>
 
 <<if $cellblock > 0>>
-	<<run ValidateFacilityDecoration("cellblockDecoration")>>
 	<br>$cellblockNameCaps is decorated in $cellblockDecoration style.
 	<<SetFacilityDecoration "cellblockDecoration">>
 <</if>>
 
 <<if $servantsQuarters > 0>>
-	<<run ValidateFacilityDecoration("servantsQuartersDecoration")>>
 	<br>$servantsQuartersNameCaps is decorated in $servantsQuartersDecoration style.
 	<<SetFacilityDecoration "servantsQuartersDecoration">>
 <</if>>
 
 <<if $arcade > 0>>
-	<<run ValidateFacilityDecoration("arcadeDecoration")>>
 	<br>$arcadeNameCaps is decorated in $arcadeDecoration style.
 	<<SetFacilityDecoration "arcadeDecoration">>
 <</if>>
 
 <<if $masterSuite > 0>>
-	<<run ValidateFacilityDecoration("masterSuiteDecoration")>>
 	<br>$masterSuiteNameCaps is decorated in $masterSuiteDecoration style.
 	<<SetFacilityDecoration "masterSuiteDecoration">>
 <</if>>
diff --git a/src/uncategorized/genericPlotEvents.tw b/src/uncategorized/genericPlotEvents.tw
index 5885ec51d1226e344e63531def6e22bcffc68541..263273abbf21f7ff4a31d75ad694a46ead585b7b 100644
--- a/src/uncategorized/genericPlotEvents.tw
+++ b/src/uncategorized/genericPlotEvents.tw
@@ -80,7 +80,7 @@ As you step off the elevator, you hear several <<if $seeDicks != 100>>female <</
 	<</if>>
 	<<set $activeSlave.skill.oral = 15>>
 	<<set $activeSlave.skill.anal = 15>>
-	<<set $activeSlave.skill.whore = 15>>
+	<<set $activeSlave.skill.whoring = 15>>
 	<<set $activeSlave.addict = 2>>
 	<<slaveCost $activeSlave>>
 <<elseif $PStrip == 2>>
@@ -96,7 +96,7 @@ As you step off the elevator, you hear several <<if $seeDicks != 100>>female <</
 	<</if>>
 	<<set $activeSlave.skill.oral = 35>>
 	<<set $activeSlave.skill.anal = 35>>
-	<<set $activeSlave.skill.whore = 35>>
+	<<set $activeSlave.skill.whoring = 35>>
 	<<set $activeSlave.boobs += 600>>
 	<<set $activeSlave.boobsImplant = 600>>
 	<<set $activeSlave.boobsImplantType = 1>>
@@ -268,7 +268,7 @@ When the aircraft lands at your penthouse pad, the would-be escapees are still u
 	<<set $activeSlave.skill.vaginal = 0>>
 	<<set $activeSlave.skill.oral = 35>>
 	<<set $activeSlave.skill.anal = 0>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.entertainment = 0>>
 	<<set $activeSlave.pubicHStyle = "bushy">>
 	<<set $activeSlave.fetish = "dom">>
@@ -295,7 +295,7 @@ When the aircraft lands at your penthouse pad, the would-be escapees are still u
 		<<set $activeSlave.skill.vaginal = 0>>
 		<<set $activeSlave.skill.oral = 15>>
 		<<set $activeSlave.skill.anal = 0>>
-		<<set $activeSlave.skill.whore = 0>>
+		<<set $activeSlave.skill.whoring = 0>>
 		<<set $activeSlave.skill.entertainment = 0>>
 		<<set $activeSlave.pubicHStyle = "bushy">>
 		<<set $activeSlave.behavioralFlaw = "devout">>
@@ -324,7 +324,7 @@ When the aircraft lands at your penthouse pad, the would-be escapees are still u
 	<<set $activeSlave.skill.vaginal = 15>>
 	<<set $activeSlave.skill.oral = 15>>
 	<<set $activeSlave.skill.anal = 15>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.entertainment = 15>>
 	<<set $activeSlave.pubicHStyle = "waxed">>
 	<<set $activeSlave.fetish = "dom">>
@@ -350,7 +350,7 @@ When the aircraft lands at your penthouse pad, the would-be escapees are still u
 		<<set $activeSlave.skill.vaginal = 0>>
 		<<set $activeSlave.skill.oral = 0>>
 		<<set $activeSlave.skill.anal = 15>>
-		<<set $activeSlave.skill.whore = 0>>
+		<<set $activeSlave.skill.whoring = 0>>
 		<<set $activeSlave.skill.entertainment = 0>>
 		<<set $activeSlave.fetish = "buttslut">>
 		<<set $activeSlave.behavioralFlaw = either("anorexic", "arrogant", "bitchy")>>
@@ -430,7 +430,7 @@ When the aircraft lands at your penthouse pad, the would-be escapees are still u
 	<<set $activeSlave.energy = random(30,80)>>
 	<<set $activeSlave.skill.oral = random(50,100)>>
 	<<set $activeSlave.skill.anal = random(50,100)>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.entertainment = random(15,40)>>
 	<<set $activeSlave.pubicHStyle = "waxed">>
 	<<set $activeSlave.fetish = either("submissive", "cumslut", "buttslut")>>
@@ -455,7 +455,7 @@ When the aircraft lands at your penthouse pad, the would-be escapees are still u
 		<<set $activeSlave.energy = random(30,70)>>
 		<<set $activeSlave.skill.oral = random(15,40)>>
 		<<set $activeSlave.skill.anal = random(15,40)>>
-		<<set $activeSlave.skill.whore = 0>>
+		<<set $activeSlave.skill.whoring = 0>>
 		<<set $activeSlave.skill.entertainment = 0>>
 		<<set $activeSlave.fetish = "buttslut">>
 		<<set $activeSlave.behavioralFlaw = either("anorexic", "bitchy", "devout", "odd")>>
@@ -709,7 +709,7 @@ When the aircraft lands at your penthouse pad, the would-be escapees are still u
 		<<set $activeSlave.skill.vaginal = 15>>
 		<<set $activeSlave.skill.oral = 15>>
 		<<set $activeSlave.skill.anal = 0>>
-		<<set $activeSlave.skill.whore = 0>>
+		<<set $activeSlave.skill.whoring = 0>>
 		<<set $activeSlave.skill.entertainment = 15>>
 		<<set $activeSlave.behavioralFlaw = either("anorexic", "arrogant", "bitchy", "liberated")>>
 		<<set $activeSlave.sexualFlaw = either("apathetic", "hates anal", "hates oral", "idealistic", "shamefast")>>
@@ -846,6 +846,12 @@ A screen opposite your desk springs to life, <<if $assistant == 0>>showing your
 				s.boobs += Math.floor(Math.random() * 10 + 1) * 300 * s.inflation;
 			}
 		}
+		if (s.geneticQuirks.macromastia == 3) {
+			s.geneticQuirks.macromastia = 2;
+		}
+		if (s.geneticQuirks.gigantomastia == 3) {
+			s.geneticQuirks.gigantomastia = 2;
+		}
 	})>>
 	<</replace>>
 <</link>>
@@ -1136,7 +1142,7 @@ A screen opposite your desk springs to life, <<if $assistant == 0>>showing your
 	<<set $activeSlave.skill.vaginal = 15>>
 	<<set $activeSlave.skill.oral = 15>>
 	<<set $activeSlave.skill.anal = 15>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.entertainment = 0>>
 	<<set $activeSlave.counter.vaginal += 1>>
 	<<set $vaginalTotal += 1>>
@@ -1182,7 +1188,7 @@ A screen opposite your desk springs to life, <<if $assistant == 0>>showing your
 	<<set $activeSlave.origin = "You won her at a shotgun match against other arcology owners.">>
 	<<set $activeSlave.lips = random(5,25)>>
 	<<set $activeSlave.anus = 0>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.entertainment = 0>>
 	<<set $activeSlave.counter.vaginal += 1>>
 	<<set $vaginalTotal += 1>>
@@ -1242,7 +1248,7 @@ A screen opposite your desk springs to life, <<if $assistant == 0>>showing your
 	<<set $activeSlave.vagina = 1>>
 	<<set $activeSlave.skill.vaginal = 15>>
 	<<set $activeSlave.skill.oral = 15>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.entertainment = 0>>
 	<<set $activeSlave.counter.vaginal += 1>>
 	<<set $vaginalTotal += 1>>
@@ -1291,7 +1297,7 @@ A screen opposite your desk springs to life, <<if $assistant == 0>>showing your
 	<<set $activeSlave.origin = "You won her at a shotgun match against other arcology owners.">>
 	<<set $activeSlave.skill.vaginal = 15>>
 	<<set $activeSlave.skill.oral = 15>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.entertainment = 0>>
 	<<set $activeSlave.counter.anal += 1>>
 	<<set $analTotal += 1>>
diff --git a/src/uncategorized/jeSlaveDispute.tw b/src/uncategorized/jeSlaveDispute.tw
index 9710c23bf7c68a2b81af9a9ac197ade57e46095e..72d1338afebc0c794652613e0aa3d741b7de535d 100644
--- a/src/uncategorized/jeSlaveDispute.tw
+++ b/src/uncategorized/jeSlaveDispute.tw
@@ -37,7 +37,7 @@
 	<<set $activeSlave.vagina = 3>>
 	<<set $activeSlave.skill.anal = 0>>
 	<<set $activeSlave.skill.oral = 0>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.vaginal = 0>>
 	<<set $activeSlave.skill.entertainment = 0>>
 	<<set $activeSlave.bellySag = 10>>
@@ -61,7 +61,7 @@
 	<<set $activeSlave.anus = 2>>
 	<<set $activeSlave.skill.anal = 35>>
 	<<set $activeSlave.skill.oral = 35>>
-	<<set $activeSlave.skill.whore = 35>>
+	<<set $activeSlave.skill.whoring = 35>>
 	<<set $activeSlave.skill.entertainment = 35>>
 	<<set $activeSlave.nipplesPiercing = 1>>
 	<<set $activeSlave.clitPiercing = 1>>
@@ -104,7 +104,7 @@
 	<<set $activeSlave.anus = 0>>
 	<<set $activeSlave.skill.anal = 0>>
 	<<set $activeSlave.skill.oral = 0>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.vaginal = 0>>
 	<<set $activeSlave.skill.entertainment = 0>>
 <<case "indenture deal">>
@@ -121,7 +121,7 @@
 	<<set $activeSlave.skill.vaginal = 15>>
 	<<set $activeSlave.skill.oral = 15>>
 	<<set $activeSlave.skill.anal = 15>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.entertainment = 15>>
 	<<set $activeSlave.boobs += 600>>
 	<<set $activeSlave.boobsImplant = 600>>
@@ -153,7 +153,7 @@
 	<<if $activeSlave.dick == 0>>
 		<<set $activeSlave.vagina = 2>>
 		<<set $activeSlave.ovaries = 1>>
-		<<if isFertile($activeSlave)>>
+		<<if isFertile($activeSlave) && $seePreg == 1>>
 			<<= knockMeUp($activeSlave, 100, 2, -2, 1)>>
 		<</if>>
 	<</if>>
diff --git a/src/uncategorized/longSlaveDescription.tw b/src/uncategorized/longSlaveDescription.tw
index cf20b6163bdc13e7f55f9d5c2630fb0446b051cf..b5b3711602f30708a69baf4c8bf22487b4842b92 100644
--- a/src/uncategorized/longSlaveDescription.tw
+++ b/src/uncategorized/longSlaveDescription.tw
@@ -1624,7 +1624,7 @@ is
 	<</if>>
 	Entertainment and prostitution skills are irrelevant for a Fuckdoll.
 <<else>>
-	<<if $activeSlave.skill.whore <= 10>>
+	<<if $activeSlave.skill.whoring <= 10>>
 		<<if $activeSlave.skill.entertainment <= 10>>
 		<<elseif $activeSlave.skill.entertainment <= 30>>
 			$He is @@.aquamarine;reasonably entertaining.@@
@@ -1647,12 +1647,12 @@ is
 			$He is a @@.aquamarine;master of entertainment@@ and
 		<</if>>
 	<</if>>
-	<<if $activeSlave.skill.whore <= 10>>
-	<<elseif $activeSlave.skill.whore <= 30>>
+	<<if $activeSlave.skill.whoring <= 10>>
+	<<elseif $activeSlave.skill.whoring <= 30>>
 		<<if $activeSlave.skill.entertainment <= 10>>$He <</if>>has @@.aquamarine;basic experience as a prostitute.@@
-	<<elseif $activeSlave.skill.whore <= 60>>
+	<<elseif $activeSlave.skill.whoring <= 60>>
 		<<if $activeSlave.skill.entertainment <= 10>>$He is <</if>>a @@.aquamarine;skilled streetwalker.@@
-	<<elseif $activeSlave.skill.whore < 100>>
+	<<elseif $activeSlave.skill.whoring < 100>>
 		<<if $activeSlave.skill.entertainment <= 10>>$He is <</if>>an @@.aquamarine;expert working $girl.@@
 	<<else>>
 		<<if $activeSlave.skill.entertainment <= 10>>$He is <</if>>a @@.aquamarine;masterful whore.@@
diff --git a/src/uncategorized/manageArcology.tw b/src/uncategorized/manageArcology.tw
index 2e3f889976f169dc7be810906e656cad58ab079b..7d29124cc361317b43b0da8130fc2b8ebf9145b2 100644
--- a/src/uncategorized/manageArcology.tw
+++ b/src/uncategorized/manageArcology.tw
@@ -142,7 +142,7 @@ __Construction__
 
 <<if $difficultySwitch == 1>>
 	<br><br>
-	__Disaster Repsonse__<br>
+	__Disaster Response__<br>
 	<<if $econWeatherDamage > 0>>
 		The recent terrible weather has damaged the local infrastructure. It is @@.red;reducing the local economy score by <<print $econWeatherDamage>>.@@
 		<<if $disasterResponse == 0>>
@@ -180,15 +180,15 @@ Currently outside parties are providing <<print $NPCMarketShareLC/10>>% of the s
 	You are providing a gratuitous subsidy for those selling sexual services to the lower class. //Upkeep is relative to the amount of sex provided by other parties// [[Substantial Subsidy|Manage Arcology][$NPCSexSubsidiesLC = 3]]<br>
 <</if>>
 <<if $sexSupplyBarriersLC == 0>>
-	You can make things more difficult for those supplying sexual services in the lower class segment if you are willing to spend 1000 reputation and pay a flat upkeep of @@.yellowgreen;<<print cashFormat(1000)>>.@@ <<if $rep > 1000>>[[Create Beauraucracy|Manage Arcology][$sexSupplyBarriersLC = 1, repX(-1000, "policies")]] <<else>>//You are not reputable enough//<</if>>
+	You can make things more difficult for those supplying sexual services in the lower class segment if you are willing to spend 1000 reputation and pay a flat upkeep of @@.yellowgreen;<<print cashFormat(1000)>>.@@ <<if $rep > 1000>>[[Create Bureaucracy|Manage Arcology][$sexSupplyBarriersLC = 1, repX(-1000, "policies")]] <<else>>//You are not reputable enough//<</if>>
 <<elseif $sexSupplyBarriersLC == 1>>
-	You have forced some unneeded beauraucracy on those selling sexual services to the lower class making things a little more difficult. If you are willing to spend 1000 reputation you can change this policy. Increasing the beauraucracy further will cost a flat upkeep of @@.yellowgreen;<<print cashFormat(5000)>>.@@ <<if $rep > 1000>>[[Abolish Beauraucracy|Manage Arcology][$sexSupplyBarriersLC = 0, repX(-1000, "policies")]] | [[Increase Beauraucracy|Manage Arcology][$sexSupplyBarriersLC = 2, repX(-1000, "policies")]]<<else>>//You are not reputable enough//<</if>>
+	You have forced some unneeded bureaucracy on those selling sexual services to the lower class making things a little more difficult. If you are willing to spend 1000 reputation you can change this policy. Increasing the bureaucracy further will cost a flat upkeep of @@.yellowgreen;<<print cashFormat(5000)>>.@@ <<if $rep > 1000>>[[Abolish Bureaucracy|Manage Arcology][$sexSupplyBarriersLC = 0, repX(-1000, "policies")]] | [[Increase Bureaucracy|Manage Arcology][$sexSupplyBarriersLC = 2, repX(-1000, "policies")]]<<else>>//You are not reputable enough//<</if>>
 <<elseif $sexSupplyBarriersLC == 2>>
-	You have forced considerable beauraucracy on those selling sexual services to the lower class making things a little more difficult. If you are willing to spend 1000 reputation you can change this policy. Increasing the beauraucracy further will cost a flat upkeep of @@.yellowgreen;<<print cashFormat(20000)>>.@@ <<if $rep > 1000>>[[Reduce Beauraucracy|Manage Arcology][$sexSupplyBarriersLC = 1, repX(-1000, "policies")]] | [[Increase Beauraucracy|Manage Arcology][$sexSupplyBarriersLC = 3, repX(-1000, "policies")]]<<else>>//You are not reputable enough//<</if>>
+	You have forced considerable bureaucracy on those selling sexual services to the lower class making things a little more difficult. If you are willing to spend 1000 reputation you can change this policy. Increasing the bureaucracy further will cost a flat upkeep of @@.yellowgreen;<<print cashFormat(20000)>>.@@ <<if $rep > 1000>>[[Reduce Bureaucracy|Manage Arcology][$sexSupplyBarriersLC = 1, repX(-1000, "policies")]] | [[Increase Bureaucracy|Manage Arcology][$sexSupplyBarriersLC = 3, repX(-1000, "policies")]]<<else>>//You are not reputable enough//<</if>>
 <<elseif $sexSupplyBarriersLC == 3>>
-	You have forced stiffling beauraucracy on those selling sexual services to the lower class making things a little more difficult. If you are willing to spend 1000 reputation you can change this policy. Increasing the beauraucracy further will cost a flat upkeep of @@.yellowgreen;<<print cashFormat(60000)>>.@@ <<if $rep > 1000>>[[Reduce Beauraucracy|Manage Arcology][$sexSupplyBarriersLC = 2, repX(-1000, "policies")]] | [[Increase Beauraucracy|Manage Arcology][$sexSupplyBarriersLC = 4, repX(-1000, "policies")]]<<else>>//You are not reputable enough//<</if>>
+	You have forced stifling bureaucracy on those selling sexual services to the lower class making things a little more difficult. If you are willing to spend 1000 reputation you can change this policy. Increasing the bureaucracy further will cost a flat upkeep of @@.yellowgreen;<<print cashFormat(60000)>>.@@ <<if $rep > 1000>>[[Reduce Bureaucracy|Manage Arcology][$sexSupplyBarriersLC = 2, repX(-1000, "policies")]] | [[Increase Bureaucracy|Manage Arcology][$sexSupplyBarriersLC = 4, repX(-1000, "policies")]]<<else>>//You are not reputable enough//<</if>>
 <<else>>
-	You have forced suffocating beauraucracy on those selling sexual services to the lower class making things a little more difficult. If you are willing to spend 1000 reputation you can change this policy. <<if $rep > 1000>>[[Reduce Beauraucracy|Manage Arcology][$sexSupplyBarriersLC = 3, repX(-1000, "policies")]]<<else>>//You are not reputable enough//<</if>>
+	You have forced suffocating bureaucracy on those selling sexual services to the lower class making things a little more difficult. If you are willing to spend 1000 reputation you can change this policy. <<if $rep > 1000>>[[Reduce Bureaucracy|Manage Arcology][$sexSupplyBarriersLC = 3, repX(-1000, "policies")]]<<else>>//You are not reputable enough//<</if>>
 <</if>>
 
 <br><br>
diff --git a/src/uncategorized/masterSuite.tw b/src/uncategorized/masterSuite.tw
index b8289dc54a207f3bb043191d621744580ad40702..12689c1814ba63bf8b9aa180fea42ad4fda791db 100644
--- a/src/uncategorized/masterSuite.tw
+++ b/src/uncategorized/masterSuite.tw
@@ -294,7 +294,7 @@ $masterSuiteNameCaps is furnished
 
 <</if>>
 
-<br>$masterSuiteNameCaps has room for $masterSuite slaves to live comfortably<<if $masterSuiteUpgradeLuxury == 2>> in the moments when they're not in the fuckpit<<elseif $masterSuiteUpgradeLuxury == 1>> on its huge bed<</if>>. There <<if $masterSuiteSlaves == 1>>is<<else>>are<</if>> currently $masterSuiteSlaves slave<<if $masterSuiteSlaves != 1>>s<</if>> in $masterSuiteNameCaps.
+<br>$masterSuiteNameCaps has room for $masterSuite slaves to live comfortably<<if $masterSuiteUpgradeLuxury == 2>> in the moments when they're not in the fuckpit<<elseif $masterSuiteUpgradeLuxury == 1>> on its huge bed<</if>>. There <<if $masterSuiteSlaves == 1>>is<<else>>are<</if>> currently $masterSuiteSlaves slave<<if $masterSuiteSlaves != 1>>s<</if>> in $masterSuiteName.
 <<set _Tmult0 = Math.trunc($masterSuite*1000*$upgradeMultiplierArcology)>>
 [[Expand the Master Suite|Master Suite][cashX(forceNeg(_Tmult0), "capEx"), $masterSuite += 2, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>>//
 <<if $Concubine == 0 && $masterSuiteSlaves == 0>>
diff --git a/src/uncategorized/masterSuiteReport.tw b/src/uncategorized/masterSuiteReport.tw
index f8c38728ca088f148b358f9ce8b8cc18234979db..e4a0522e79578636d9b36f5c8dffc3ab044aa513 100644
--- a/src/uncategorized/masterSuiteReport.tw
+++ b/src/uncategorized/masterSuiteReport.tw
@@ -172,7 +172,7 @@
 				<<set $slaves[$i].devotion++>>
 			<</if>>
 			<<set $beauty = Beauty($Concubine)>>
-			<<run repX($beauty * 5 + ($Concubine.skill.vaginal || 0) + $Concubine.skill.anal + $Concubine.skill.oral + $Concubine.skill.whore + $Concubine.skill.entertainment, "concubine", $Concubine)>>
+			<<run repX($beauty * 5 + ($Concubine.skill.vaginal || 0) + $Concubine.skill.anal + $Concubine.skill.oral + $Concubine.skill.whoring + $Concubine.skill.entertainment, "concubine", $Concubine)>>
 		<<else>> /* not Concubine */
 			''__@@.pink;<<= SlaveFullName($slaves[$i])>>@@__''
 			<<if $slaves[$i].choosesOwnAssignment == 2>>
diff --git a/src/uncategorized/newSlaveIntro.tw b/src/uncategorized/newSlaveIntro.tw
index 165f9b6a7759de2bee6397997efd1c8e555df909..48b09ffb105bc480f6739dbdb7ecdb9a76b1bc14 100644
--- a/src/uncategorized/newSlaveIntro.tw
+++ b/src/uncategorized/newSlaveIntro.tw
@@ -889,7 +889,7 @@ The legalities completed, ''__@@.pink;<<= SlaveFullName($activeSlave)>>@@__'' <<
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
 	<<link "Use $his big sister as an example">>
 		<<replace "#introResult">>
-			Your new slave appears <<if $activeSlave.devotion < -10>>reluctant to assume $his new duties.<<else>>unsure what $his new duties are.<</if>> You gesture towards $eventSlave.slaveName. $He is <<if $eventSlave.intelligence+$eventSlave.intelligenceImplant > 15>>bright enough<<elseif (($eventSlave.skill.vaginal + $eventSlave.skill.anal + $eventSlave.skill.oral) > 100)>>skilled enough<<else>>obedient enough<</if>> to understand you mean a demonstration is in order. $eventSlave.slaveName starts things off with a <<if $eventSlave.skill.entertainment >= 100>>masterful<<elseif $eventSlave.skill.entertainment > 10>>skillful<<else>>passable<</if>> striptease, culminating in $him <<if ($eventSlave.anus > 0) && ($eventSlave.fetish != "cumslut")>>bending over<<else>>kneeling<</if>> in front of you. $He eagerly moans as you enter $him, begging for your seed<<if $eventSlave.energy > 95>> like the slut $he is<<elseif $eventSlave.skill.whore > 30>> like the whore $he is<<elseif ($eventSlave.assignment == "serve in the master suite") || ($eventSlave.assignment == "please you")>> like the fucktoy $he is<</if>>. As you finish, $he <<if $eventSlave.fetish == "cumslut">>opens $his mouth and savors your gift, thanking you once $he's swallowed enough to be able to talk again.<<elseif ($eventSlave.fetish == "buttslut") || ($eventSlave.fetish == "submissive")>>collapses on the floor with $his ass high in the air, thanking you for painting $his hole white.<<else>>thanks you.<</if>> Witnessing this display of servitude from $his big sister @@.hotpink;eases $activeSlave.slaveName into $his new life,@@ and @@.mediumaquamarine;gives $him hope@@ $he can find a place here.
+			Your new slave appears <<if $activeSlave.devotion < -10>>reluctant to assume $his new duties.<<else>>unsure what $his new duties are.<</if>> You gesture towards $eventSlave.slaveName. $He is <<if $eventSlave.intelligence+$eventSlave.intelligenceImplant > 15>>bright enough<<elseif (($eventSlave.skill.vaginal + $eventSlave.skill.anal + $eventSlave.skill.oral) > 100)>>skilled enough<<else>>obedient enough<</if>> to understand you mean a demonstration is in order. $eventSlave.slaveName starts things off with a <<if $eventSlave.skill.entertainment >= 100>>masterful<<elseif $eventSlave.skill.entertainment > 10>>skillful<<else>>passable<</if>> striptease, culminating in $him <<if ($eventSlave.anus > 0) && ($eventSlave.fetish != "cumslut")>>bending over<<else>>kneeling<</if>> in front of you. $He eagerly moans as you enter $him, begging for your seed<<if $eventSlave.energy > 95>> like the slut $he is<<elseif $eventSlave.skill.whoring > 30>> like the whore $he is<<elseif ($eventSlave.assignment == "serve in the master suite") || ($eventSlave.assignment == "please you")>> like the fucktoy $he is<</if>>. As you finish, $he <<if $eventSlave.fetish == "cumslut">>opens $his mouth and savors your gift, thanking you once $he's swallowed enough to be able to talk again.<<elseif ($eventSlave.fetish == "buttslut") || ($eventSlave.fetish == "submissive")>>collapses on the floor with $his ass high in the air, thanking you for painting $his hole white.<<else>>thanks you.<</if>> Witnessing this display of servitude from $his big sister @@.hotpink;eases $activeSlave.slaveName into $his new life,@@ and @@.mediumaquamarine;gives $him hope@@ $he can find a place here.
 		<</replace>>
 		<<set $activeSlave.devotion += 4>>
 		<<set $activeSlave.trust += 4>>
@@ -901,7 +901,7 @@ The legalities completed, ''__@@.pink;<<= SlaveFullName($activeSlave)>>@@__'' <<
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
 	<<link "Use $his little sister as an example">>
 		<<replace "#introResult">>
-			Your new slave appears <<if $activeSlave.devotion < -10>>reluctant to assume $his new duties.<<else>>unsure what $his new duties are.<</if>> You gesture towards $eventSlave.slaveName. $He is <<if $eventSlave.intelligence+$eventSlave.intelligenceImplant > 15>>bright enough<<elseif (($eventSlave.skill.vaginal + $eventSlave.skill.anal + $eventSlave.skill.oral) > 100)>>skilled enough<<else>>obedient enough<</if>> to understand you mean a demonstration is in order. $eventSlave.slaveName starts things off with a <<if $eventSlave.skill.entertainment >= 100>>masterful<<elseif $eventSlave.skill.entertainment > 10>>skillful<<else>>passable<</if>> striptease, culminating in $him <<if ($eventSlave.anus > 0) && ($eventSlave.fetish != "cumslut")>>bending over<<else>>kneeling<</if>> in front of you. $He eagerly moans as you enter $him, begging for your seed<<if $eventSlave.energy > 95>> like the slut $he is<<elseif $eventSlave.skill.whore > 30>> like the whore $he is<<elseif ($eventSlave.assignment == "serve in the master suite") || ($eventSlave.assignment == "please you")>> like the fucktoy $he is<</if>>. As you finish, $he <<if $eventSlave.fetish == "cumslut">>opens $his mouth and savors your gift, thanking you once $he's swallowed enough to be able to talk again.<<elseif ($eventSlave.fetish == "buttslut") || ($eventSlave.fetish == "submissive")>>collapses on the floor with $his ass high in the air, thanking you for painting $his hole white.<<else>>thanks you.<</if>> Witnessing this display of servitude from $his little sister @@.hotpink;eases $activeSlave.slaveName into $his new life,@@ and @@.mediumaquamarine;gives $him hope@@ $he can find a place here.
+			Your new slave appears <<if $activeSlave.devotion < -10>>reluctant to assume $his new duties.<<else>>unsure what $his new duties are.<</if>> You gesture towards $eventSlave.slaveName. $He is <<if $eventSlave.intelligence+$eventSlave.intelligenceImplant > 15>>bright enough<<elseif (($eventSlave.skill.vaginal + $eventSlave.skill.anal + $eventSlave.skill.oral) > 100)>>skilled enough<<else>>obedient enough<</if>> to understand you mean a demonstration is in order. $eventSlave.slaveName starts things off with a <<if $eventSlave.skill.entertainment >= 100>>masterful<<elseif $eventSlave.skill.entertainment > 10>>skillful<<else>>passable<</if>> striptease, culminating in $him <<if ($eventSlave.anus > 0) && ($eventSlave.fetish != "cumslut")>>bending over<<else>>kneeling<</if>> in front of you. $He eagerly moans as you enter $him, begging for your seed<<if $eventSlave.energy > 95>> like the slut $he is<<elseif $eventSlave.skill.whoring > 30>> like the whore $he is<<elseif ($eventSlave.assignment == "serve in the master suite") || ($eventSlave.assignment == "please you")>> like the fucktoy $he is<</if>>. As you finish, $he <<if $eventSlave.fetish == "cumslut">>opens $his mouth and savors your gift, thanking you once $he's swallowed enough to be able to talk again.<<elseif ($eventSlave.fetish == "buttslut") || ($eventSlave.fetish == "submissive")>>collapses on the floor with $his ass high in the air, thanking you for painting $his hole white.<<else>>thanks you.<</if>> Witnessing this display of servitude from $his little sister @@.hotpink;eases $activeSlave.slaveName into $his new life,@@ and @@.mediumaquamarine;gives $him hope@@ $he can find a place here.
 		<</replace>>
 		<<set $activeSlave.devotion += 4>>
 		<<set $activeSlave.trust += 4>>
@@ -913,7 +913,7 @@ The legalities completed, ''__@@.pink;<<= SlaveFullName($activeSlave)>>@@__'' <<
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
 	<<link "Use $his sister as an example">>
 		<<replace "#introResult">>
-			Your new slave appears <<if $activeSlave.devotion < -10>>reluctant to assume $his new duties.<<else>>unsure what $his new duties are.<</if>> You gesture towards $eventSlave.slaveName. $He is <<if $eventSlave.intelligence+$eventSlave.intelligenceImplant > 15>>bright enough<<elseif (($eventSlave.skill.vaginal + $eventSlave.skill.anal + $eventSlave.skill.oral) > 100)>>skilled enough<<else>>obedient enough<</if>> to understand you mean a demonstration is in order. $eventSlave.slaveName starts things off with a <<if $eventSlave.skill.entertainment >= 100>>masterful<<elseif $eventSlave.skill.entertainment > 10>>skillful<<else>>passable<</if>> striptease, culminating in $him <<if ($eventSlave.anus > 0) && ($eventSlave.fetish != "cumslut")>>bending over<<else>>kneeling<</if>> in front of you. $He eagerly moans as you enter $him, begging for your seed<<if $eventSlave.energy > 95>> like the slut $he is<<elseif $eventSlave.skill.whore > 30>> like the whore $he is<<elseif ($eventSlave.assignment == "serve in the master suite") || ($eventSlave.assignment == "please you")>> like the fucktoy $he is<</if>>. As you finish, $he <<if $eventSlave.fetish == "cumslut">>opens $his mouth and savors your gift, thanking you once $he's swallowed enough to be able to talk again.<<elseif ($eventSlave.fetish == "buttslut") || ($eventSlave.fetish == "submissive")>>collapses on the floor with $his ass high in the air, thanking you for painting $his hole white.<<else>>thanks you.<</if>> Witnessing this display of servitude from $his twin sister @@.hotpink;eases $activeSlave.slaveName into $his new life,@@ and @@.mediumaquamarine;gives $him hope@@ $he can find a place here.
+			Your new slave appears <<if $activeSlave.devotion < -10>>reluctant to assume $his new duties.<<else>>unsure what $his new duties are.<</if>> You gesture towards $eventSlave.slaveName. $He is <<if $eventSlave.intelligence+$eventSlave.intelligenceImplant > 15>>bright enough<<elseif (($eventSlave.skill.vaginal + $eventSlave.skill.anal + $eventSlave.skill.oral) > 100)>>skilled enough<<else>>obedient enough<</if>> to understand you mean a demonstration is in order. $eventSlave.slaveName starts things off with a <<if $eventSlave.skill.entertainment >= 100>>masterful<<elseif $eventSlave.skill.entertainment > 10>>skillful<<else>>passable<</if>> striptease, culminating in $him <<if ($eventSlave.anus > 0) && ($eventSlave.fetish != "cumslut")>>bending over<<else>>kneeling<</if>> in front of you. $He eagerly moans as you enter $him, begging for your seed<<if $eventSlave.energy > 95>> like the slut $he is<<elseif $eventSlave.skill.whoring > 30>> like the whore $he is<<elseif ($eventSlave.assignment == "serve in the master suite") || ($eventSlave.assignment == "please you")>> like the fucktoy $he is<</if>>. As you finish, $he <<if $eventSlave.fetish == "cumslut">>opens $his mouth and savors your gift, thanking you once $he's swallowed enough to be able to talk again.<<elseif ($eventSlave.fetish == "buttslut") || ($eventSlave.fetish == "submissive")>>collapses on the floor with $his ass high in the air, thanking you for painting $his hole white.<<else>>thanks you.<</if>> Witnessing this display of servitude from $his twin sister @@.hotpink;eases $activeSlave.slaveName into $his new life,@@ and @@.mediumaquamarine;gives $him hope@@ $he can find a place here.
 		<</replace>>
 		<<set $activeSlave.devotion += 4>>
 		<<set $activeSlave.trust += 4>>
@@ -925,7 +925,7 @@ The legalities completed, ''__@@.pink;<<= SlaveFullName($activeSlave)>>@@__'' <<
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
 	<<link "Use $his mother as an example">>
 		<<replace "#introResult">>
-			You gesture towards $eventSlave.slaveName. $He is <<if $eventSlave.intelligence+$eventSlave.intelligenceImplant > 15>>bright enough<<elseif (($eventSlave.skill.vaginal + $eventSlave.skill.anal + $eventSlave.skill.oral) > 100)>>skilled enough<<else>>obedient enough<</if>> to understand you mean a demonstration is in order. $eventSlave.slaveName starts things off with a <<if $eventSlave.skill.entertainment >= 100>>masterful<<elseif $eventSlave.skill.entertainment > 10>>skillful<<else>>passable<</if>> striptease, culminating in $him <<if ($eventSlave.anus > 0) && ($eventSlave.fetish != "cumslut")>>bending over<<else>>kneeling<</if>> in front of you. $He eagerly moans as you enter $him, begging for your seed<<if $eventSlave.energy > 95>> like the slut $he is<<elseif $eventSlave.skill.whore > 30>> like the whore $he is<<elseif ($eventSlave.assignment == "serve in the master suite") || ($eventSlave.assignment == "please you")>> like the fucktoy $he is<</if>>. As you finish, $he <<if $eventSlave.fetish == "cumslut">>opens $his mouth and savors your gift, thanking you once $he's swallowed enough to be able to talk again.<<elseif ($eventSlave.fetish == "buttslut") || ($eventSlave.fetish == "submissive")>>collapses on the floor with $his ass high in the air, thanking you for painting $his hole white.<<else>>thanks you.<</if>> Witnessing this display of servitude from $his mother @@.hotpink;eases $activeSlave.slaveName into $his new life,@@ and @@.mediumaquamarine;gives $him hope@@ $he can find a place here.
+			You gesture towards $eventSlave.slaveName. $He is <<if $eventSlave.intelligence+$eventSlave.intelligenceImplant > 15>>bright enough<<elseif (($eventSlave.skill.vaginal + $eventSlave.skill.anal + $eventSlave.skill.oral) > 100)>>skilled enough<<else>>obedient enough<</if>> to understand you mean a demonstration is in order. $eventSlave.slaveName starts things off with a <<if $eventSlave.skill.entertainment >= 100>>masterful<<elseif $eventSlave.skill.entertainment > 10>>skillful<<else>>passable<</if>> striptease, culminating in $him <<if ($eventSlave.anus > 0) && ($eventSlave.fetish != "cumslut")>>bending over<<else>>kneeling<</if>> in front of you. $He eagerly moans as you enter $him, begging for your seed<<if $eventSlave.energy > 95>> like the slut $he is<<elseif $eventSlave.skill.whoring > 30>> like the whore $he is<<elseif ($eventSlave.assignment == "serve in the master suite") || ($eventSlave.assignment == "please you")>> like the fucktoy $he is<</if>>. As you finish, $he <<if $eventSlave.fetish == "cumslut">>opens $his mouth and savors your gift, thanking you once $he's swallowed enough to be able to talk again.<<elseif ($eventSlave.fetish == "buttslut") || ($eventSlave.fetish == "submissive")>>collapses on the floor with $his ass high in the air, thanking you for painting $his hole white.<<else>>thanks you.<</if>> Witnessing this display of servitude from $his mother @@.hotpink;eases $activeSlave.slaveName into $his new life,@@ and @@.mediumaquamarine;gives $him hope@@ $he can find a place here.
 		<</replace>>
 		<<set $activeSlave.devotion += 4>>
 		<<set $activeSlave.trust += 4>>
@@ -937,7 +937,7 @@ The legalities completed, ''__@@.pink;<<= SlaveFullName($activeSlave)>>@@__'' <<
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
 	<<link "Use $his parent as an example">>
 		<<replace "#introResult">>
-			You gesture towards $eventSlave.slaveName. $He is <<if $eventSlave.intelligence+$eventSlave.intelligenceImplant > 15>>bright enough<<elseif (($eventSlave.skill.vaginal + $eventSlave.skill.anal + $eventSlave.skill.oral) > 100)>>skilled enough<<else>>obedient enough<</if>> to understand you mean a demonstration is in order. $eventSlave.slaveName starts things off with a <<if $eventSlave.skill.entertainment >= 100>>masterful<<elseif $eventSlave.skill.entertainment > 10>>skillful<<else>>passable<</if>> striptease, culminating in $him <<if ($eventSlave.anus > 0) && ($eventSlave.fetish != "cumslut")>>bending over<<else>>kneeling<</if>> in front of you. $He eagerly moans as you enter $him, begging for your seed<<if $eventSlave.energy > 95>> like the slut $he is<<elseif $eventSlave.skill.whore > 30>> like the whore $he is<<elseif ($eventSlave.assignment == "serve in the master suite") || ($eventSlave.assignment == "please you")>> like the fucktoy $he is<</if>>. As you finish, $he <<if $eventSlave.fetish == "cumslut">>opens $his mouth and savors your gift, thanking you once $he's swallowed enough to be able to talk again.<<elseif ($eventSlave.fetish == "buttslut") || ($eventSlave.fetish == "submissive")>>collapses on the floor with $his ass high in the air, thanking you for painting $his hole white.<<else>>thanks you.<</if>> Witnessing this display of servitude from $his <<if $activeSlave.mother == $eventSlave.ID>>mother<<else>>father<</if>> @@.hotpink;eases $activeSlave.slaveName into $his new life,@@ and @@.mediumaquamarine;gives $him hope@@ $he can find a place here.
+			You gesture towards $eventSlave.slaveName. $He is <<if $eventSlave.intelligence+$eventSlave.intelligenceImplant > 15>>bright enough<<elseif (($eventSlave.skill.vaginal + $eventSlave.skill.anal + $eventSlave.skill.oral) > 100)>>skilled enough<<else>>obedient enough<</if>> to understand you mean a demonstration is in order. $eventSlave.slaveName starts things off with a <<if $eventSlave.skill.entertainment >= 100>>masterful<<elseif $eventSlave.skill.entertainment > 10>>skillful<<else>>passable<</if>> striptease, culminating in $him <<if ($eventSlave.anus > 0) && ($eventSlave.fetish != "cumslut")>>bending over<<else>>kneeling<</if>> in front of you. $He eagerly moans as you enter $him, begging for your seed<<if $eventSlave.energy > 95>> like the slut $he is<<elseif $eventSlave.skill.whoring > 30>> like the whore $he is<<elseif ($eventSlave.assignment == "serve in the master suite") || ($eventSlave.assignment == "please you")>> like the fucktoy $he is<</if>>. As you finish, $he <<if $eventSlave.fetish == "cumslut">>opens $his mouth and savors your gift, thanking you once $he's swallowed enough to be able to talk again.<<elseif ($eventSlave.fetish == "buttslut") || ($eventSlave.fetish == "submissive")>>collapses on the floor with $his ass high in the air, thanking you for painting $his hole white.<<else>>thanks you.<</if>> Witnessing this display of servitude from $his <<if $activeSlave.mother == $eventSlave.ID>>mother<<else>>father<</if>> @@.hotpink;eases $activeSlave.slaveName into $his new life,@@ and @@.mediumaquamarine;gives $him hope@@ $he can find a place here.
 		<</replace>>
 		<<set $activeSlave.devotion += 4>>
 		<<set $activeSlave.trust += 4>>
@@ -949,7 +949,7 @@ The legalities completed, ''__@@.pink;<<= SlaveFullName($activeSlave)>>@@__'' <<
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
 	<<link "Use $his daughter as an example">>
 		<<replace "#introResult">>
-			You gesture towards $eventSlave.slaveName. $He is <<if $eventSlave.intelligence+$eventSlave.intelligenceImplant > 15>>bright enough<<elseif (($eventSlave.skill.vaginal + $eventSlave.skill.anal + $eventSlave.skill.oral) > 100)>>skilled enough<<else>>obedient enough<</if>> to understand you mean a demonstration is in order. $eventSlave.slaveName starts things off with a <<if $eventSlave.skill.entertainment >= 100>>masterful<<elseif $eventSlave.skill.entertainment > 10>>skillful<<else>>passable<</if>> striptease, culminating in $him <<if ($eventSlave.anus > 0) && ($eventSlave.fetish != "cumslut")>>bending over<<else>>kneeling<</if>> in front of you. $He eagerly moans as you enter $him, begging for your seed<<if $eventSlave.energy > 95>> like the slut $he is<<elseif $eventSlave.skill.whore > 30>> like the whore $he is<<elseif ($eventSlave.assignment == "serve in the master suite") || ($eventSlave.assignment == "please you")>> like the fucktoy $he is<</if>>. As you finish, $he <<if $eventSlave.fetish == "cumslut">>opens $his mouth and savors your gift, thanking you once $he's swallowed enough to be able to talk again.<<elseif ($eventSlave.fetish == "buttslut") || ($eventSlave.fetish == "submissive")>>collapses on the floor with $his ass high in the air, thanking you for painting $his hole white.<<else>>thanks you.<</if>> Witnessing this display of servitude from $his <<if $eventSlave.genes == "XX">>daughter<<else>>son<</if>> @@.hotpink;eases $activeSlave.slaveName into $his new life,@@ and @@.mediumaquamarine;gives $him hope@@ $he can find a place here.
+			You gesture towards $eventSlave.slaveName. $He is <<if $eventSlave.intelligence+$eventSlave.intelligenceImplant > 15>>bright enough<<elseif (($eventSlave.skill.vaginal + $eventSlave.skill.anal + $eventSlave.skill.oral) > 100)>>skilled enough<<else>>obedient enough<</if>> to understand you mean a demonstration is in order. $eventSlave.slaveName starts things off with a <<if $eventSlave.skill.entertainment >= 100>>masterful<<elseif $eventSlave.skill.entertainment > 10>>skillful<<else>>passable<</if>> striptease, culminating in $him <<if ($eventSlave.anus > 0) && ($eventSlave.fetish != "cumslut")>>bending over<<else>>kneeling<</if>> in front of you. $He eagerly moans as you enter $him, begging for your seed<<if $eventSlave.energy > 95>> like the slut $he is<<elseif $eventSlave.skill.whoring > 30>> like the whore $he is<<elseif ($eventSlave.assignment == "serve in the master suite") || ($eventSlave.assignment == "please you")>> like the fucktoy $he is<</if>>. As you finish, $he <<if $eventSlave.fetish == "cumslut">>opens $his mouth and savors your gift, thanking you once $he's swallowed enough to be able to talk again.<<elseif ($eventSlave.fetish == "buttslut") || ($eventSlave.fetish == "submissive")>>collapses on the floor with $his ass high in the air, thanking you for painting $his hole white.<<else>>thanks you.<</if>> Witnessing this display of servitude from $his <<if $eventSlave.genes == "XX">>daughter<<else>>son<</if>> @@.hotpink;eases $activeSlave.slaveName into $his new life,@@ and @@.mediumaquamarine;gives $him hope@@ $he can find a place here.
 		<</replace>>
 		<<set $activeSlave.devotion += 4>>
 		<<set $activeSlave.trust += 4>>
diff --git a/src/uncategorized/nextWeek.tw b/src/uncategorized/nextWeek.tw
index 9a8ce2a9c3ba77ea11eb952e27b37903c58baac8..7de3d2e89ad0bb082f22638c26357f4efd3f2a7a 100644
--- a/src/uncategorized/nextWeek.tw
+++ b/src/uncategorized/nextWeek.tw
@@ -105,6 +105,9 @@
 	$pornStarSadists = 0, $pornStarMasochists = 0, $pornStarPregnancySluts = 0>>
 <</if>>
 <<for _i = 0; _i < _SL; _i++>>
+	<<if def $slaves[_i].curBabies>>
+		<<run delete $slaves[_i].curBabies>>
+	<</if>>
 	<<if $seeAge != 0>>
 	<<set $slaves[_i].birthWeek++>>
 		<<if $slaves[_i].birthWeek >= 52>>
@@ -192,7 +195,7 @@
 	<<set $slaves[_i].skill.oral = Math.clamp($slaves[_i].skill.oral.toFixed(1), 0, 100)>>
 	<<set $slaves[_i].skill.vaginal = Math.clamp($slaves[_i].skill.vaginal.toFixed(1), 0, 100)>>
 	<<set $slaves[_i].skill.anal = Math.clamp($slaves[_i].skill.anal.toFixed(1), 0, 100)>>
-	<<set $slaves[_i].skill.whore = Math.clamp($slaves[_i].skill.whore.toFixed(1), 0, 100)>>
+	<<set $slaves[_i].skill.whoring = Math.clamp($slaves[_i].skill.whoring.toFixed(1), 0, 100)>>
 	<<set $slaves[_i].skill.entertainment = Math.clamp($slaves[_i].skill.entertainment.toFixed(1), 0, 100)>>
 	<<set $slaves[_i].lactationAdaptation = Math.clamp($slaves[_i].lactationAdaptation.toFixed(1), 0, 100)>>
 	<<set $slaves[_i].intelligenceImplant = Number($slaves[_i].intelligenceImplant.toFixed(1), 0, 30)>>
diff --git a/src/uncategorized/pHostageAcquisition.tw b/src/uncategorized/pHostageAcquisition.tw
index 88ca201536efcae08c7e4cfd5b2bf1e10f9b0d05..2d6ffc078f55b9193a2d97b4cc36b71410ad97ca 100644
--- a/src/uncategorized/pHostageAcquisition.tw
+++ b/src/uncategorized/pHostageAcquisition.tw
@@ -436,15 +436,32 @@ Your hired mercenaries are en route now with your precious cargo.
 	<<if $rivalryDuration <= 5>>
 		Upon seeing you, $activeSlave.slaveName dives into your <<if $PC.boobs == 1>>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, $activeSlave.slaveName gingerly approaches, uncertain if $he should. You pull $him into your <<if $PC.boobs == 1>>ample bust<<else>>chest<</if>> as $he breaks down in tears. "You aren't trying to make <<s>>ome cra<<z>>y old-timey <<s>>o<<c>>iety, are you?" While $he looks the same as you remember, $he certainly doesn't think the same anymore.
+		Upon seeing you, $activeSlave.slaveName gingerly approaches, uncertain if $he should. You pull $him into your <<if $PC.boobs == 1>>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, $activeSlave.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 "Plea<<s>>e don't make me play along..." While $he looks the same as you remember, $he certainly doesn't think the same anymore.
+		Upon seeing you, $activeSlave.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, $activeSlave.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 $activeSlave.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, $activeSlave.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! Remaking a fallen empire, madne<<ss>>! You think your<<s>>elf a king —"
+		Upon seeing you, $activeSlave.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 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 —"
+		<</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 $activeSlave.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>>
diff --git a/src/uncategorized/pRivalryCapture.tw b/src/uncategorized/pRivalryCapture.tw
index 77d16ad4a5efc5dd04e119afa5a13d1c2b51be10..2ad6402d52c62c876b13bc1dbb030b8b14a2bb0d 100644
--- a/src/uncategorized/pRivalryCapture.tw
+++ b/src/uncategorized/pRivalryCapture.tw
@@ -46,7 +46,7 @@
 	<<set $activeSlave.weight = 20>>
 	<<set $activeSlave.skill.oral = 100>>
 	<<set $activeSlave.skill.anal = 100>>
-	<<set $activeSlave.skill.whore = 15>>
+	<<set $activeSlave.skill.whoring = 15>>
 	<<set $activeSlave.skill.entertainment = 100>>
 	<<set $activeSlave.skill.combat = 0>>
 	<<set $activeSlave.clitPiercing = 2>>
@@ -83,7 +83,7 @@
 	<<set $activeSlave.weight = -35>>
 	<<set $activeSlave.skill.oral = 0>>
 	<<set $activeSlave.skill.anal = 100>>
-	<<set $activeSlave.skill.whore = 15>>
+	<<set $activeSlave.skill.whoring = 15>>
 	<<set $activeSlave.skill.entertainment = 100>>
 	<<set $activeSlave.skill.combat = 0>>
 	<<set $activeSlave.dickPiercing = 2>>
@@ -116,7 +116,7 @@
 	<<set $activeSlave.weight = -35>>
 	<<set $activeSlave.skill.oral = 0>>
 	<<set $activeSlave.skill.anal = 0>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.entertainment = 100>>
 	<<set $activeSlave.skill.combat = 0>>
 	<<set $activeSlave.dickPiercing = 2>>
@@ -150,7 +150,7 @@
 	<<set $activeSlave.skill.vaginal = 0>>
 	<<set $activeSlave.skill.oral = 15>>
 	<<set $activeSlave.skill.anal = 0>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.entertainment = 15>>
 	<<set $activeSlave.skill.combat = 1>>
 	<<set $activeSlave.behavioralFlaw = "hates men">>
@@ -181,7 +181,7 @@
 	<<set $activeSlave.skill.vaginal = 0>>
 	<<set $activeSlave.skill.oral = 15>>
 	<<set $activeSlave.skill.anal = 15>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.entertainment = 15>>
 	<<set $activeSlave.skill.combat = 0>>
 	<<set $activeSlave.behavioralFlaw = "hates men">>
@@ -215,7 +215,7 @@
 	<<set $activeSlave.skill.vaginal = 15>>
 	<<set $activeSlave.skill.oral = 0>>
 	<<set $activeSlave.skill.anal = 15>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.entertainment = 0>>
 	<<set $activeSlave.skill.combat = 1>>
 	<<set $activeSlave.clitPiercing = 1>>
@@ -269,7 +269,7 @@
 	<<set $activeSlave.skill.vaginal = 100>>
 	<<set $activeSlave.skill.oral = 15>>
 	<<set $activeSlave.skill.anal = 15>>
-	<<set $activeSlave.skill.whore = 35>>
+	<<set $activeSlave.skill.whoring = 35>>
 	<<set $activeSlave.skill.entertainment = 15>>
 	<<set $activeSlave.skill.combat = 0>>
 	<<set $activeSlave.fetish = "pregnancy">>
@@ -303,7 +303,7 @@
 	<<set $activeSlave.skill.vaginal = 0>>
 	<<set $activeSlave.skill.oral = 0>>
 	<<set $activeSlave.skill.anal = 0>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.entertainment = 15>>
 	<<set $activeSlave.skill.combat = 0>>
 	<<set $activeSlave.behavioralFlaw = "odd">>
@@ -336,7 +336,7 @@
 	<<set $activeSlave.skill.vaginal = 15>>
 	<<set $activeSlave.skill.oral = 15>>
 	<<set $activeSlave.skill.anal = 0>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.entertainment = 15>>
 	<<set $activeSlave.skill.combat = 0>>
 	<<set $activeSlave.behavioralFlaw = "odd">>
@@ -368,7 +368,7 @@
 	<<set $activeSlave.skill.vaginal = 100>>
 	<<set $activeSlave.skill.oral = 100>>
 	<<set $activeSlave.skill.anal = 35>>
-	<<set $activeSlave.skill.whore = 35>>
+	<<set $activeSlave.skill.whoring = 35>>
 	<<set $activeSlave.skill.entertainment = 35>>
 	<<set $activeSlave.skill.combat = 0>>
 	<<set $activeSlave.clitPiercing = 1>>
@@ -401,7 +401,7 @@
 	<<set $activeSlave.skill.vaginal = 100>>
 	<<set $activeSlave.skill.oral = 100>>
 	<<set $activeSlave.skill.anal = 100>>
-	<<set $activeSlave.skill.whore = 100>>
+	<<set $activeSlave.skill.whoring = 100>>
 	<<set $activeSlave.skill.entertainment = 0>>
 	<<set $activeSlave.skill.combat = 0>>
 	<<set $activeSlave.clitPiercing = 1>>
diff --git a/src/uncategorized/pRivalryHostage.tw b/src/uncategorized/pRivalryHostage.tw
index c25cd57e3d222105f39a715af3460c9536a6d099..ad6e835abd4b555d6b2c01b99fe7d6f4cfebe6ca 100644
--- a/src/uncategorized/pRivalryHostage.tw
+++ b/src/uncategorized/pRivalryHostage.tw
@@ -70,7 +70,7 @@
 	<<set $activeSlave.skill.entertainment = 100>>
 	<<set $activeSlave.skill.anal = 100>>
 	<<set $activeSlave.skill.vaginal = 100>>
-	<<set $activeSlave.skill.whore = 100>>
+	<<set $activeSlave.skill.whoring = 100>>
 	<<set $activeSlave.counter.oral = 453>>
 	<<set $activeSlave.counter.vaginal = 158>>
 	<<set $activeSlave.counter.anal = 76>>
@@ -90,7 +90,7 @@
 	<<set $activeSlave.skill.entertainment = 0>>
 	<<set $activeSlave.skill.anal = 15>>
 	<<set $activeSlave.skill.vaginal = 15>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.counter.oral = 57>>
 	<<set $activeSlave.counter.vaginal = 65>>
 	<<set $activeSlave.counter.anal = 12>>
@@ -192,7 +192,7 @@
 	<</if>>
 	<<set $activeSlave.face = 100, $activeSlave.faceImplant = 15>>
 	<<set $activeSlave.intelligence = 100, $activeSlave.intelligenceImplant = 30>>
-	<<set $activeSlave.skill.whore = 100, $activeSlave.skill.entertainment = 100>>
+	<<set $activeSlave.skill.whoring = 100, $activeSlave.skill.entertainment = 100>>
 <</switch>>
 
 <<set $activeSlave.trust = 0>>
@@ -374,7 +374,7 @@ but look what I have here! I just acquired $him recently. Lovely, isn't $he? I k
 <<case "Multiculturalism">>
 	$He's going to be the ideal holy whore. Thousands of citizens are going to find rapture inside $him. Isn't that right, <<= SlaveFullName($activeSlave)>>?" The slave nods uncertainly.
 <<default>>
-	$He's shaping up to be a good slave. I'm keeping $him informed of your revisionist nonsense, and what your slaves suffer because of it. Isn't that right, <<= SlaveFullName($activeSlave)>>?" The slave nods uncertainly.
+	$He's shaping up to be a good slave. I'm keeping $him informed of your <<if $rivalryFS != 0>>revisionist <</if>>nonsense, and what your slaves suffer because of it. Isn't that right, <<= SlaveFullName($activeSlave)>>?" The slave nods uncertainly.
 <</switch>>
 
 Your rival smiles icily. "I'll keep you informed of $his progress. I wouldn't want you to miss a moment of it."
diff --git a/src/uncategorized/pSlaveMedic.tw b/src/uncategorized/pSlaveMedic.tw
index 575d8f21986552ba362926d2844409fe7b28a79a..897cda1264f642b4842b29dc8b9f4f518ebd071c 100644
--- a/src/uncategorized/pSlaveMedic.tw
+++ b/src/uncategorized/pSlaveMedic.tw
@@ -26,7 +26,7 @@
 <<set $activeSlave.skill.vaginal = 35>>
 <<set $activeSlave.skill.oral = 35>>
 <<set $activeSlave.skill.anal = 15>>
-<<set $activeSlave.skill.whore = 0>>
+<<set $activeSlave.skill.whoring = 0>>
 <<set $activeSlave.skill.entertainment = 15>>
 <<set $activeSlave.intelligence = random(51,95)>>
 <<set $activeSlave.intelligenceImplant = 15>>
@@ -37,6 +37,7 @@
 <<set $activeSlave.hips = 1>>
 <<set $activeSlave.boobs = 2000>>
 <<set $activeSlave.boobShape = "perky">>
+<<set $activeSlave.geneticQuirks.macromastia = 2>>
 <<set $activeSlave.butt = 4>>
 <<set $activeSlave.voice = 3>>
 <<set $activeSlave.hStyle = "neat">>
@@ -70,7 +71,7 @@
 <<set $activeSlave.skill.vaginal = 35>>
 <<set $activeSlave.skill.oral = 35>>
 <<set $activeSlave.skill.anal = 15>>
-<<set $activeSlave.skill.whore = 0>>
+<<set $activeSlave.skill.whoring = 0>>
 <<set $activeSlave.skill.entertainment = 15>>
 <<set $activeSlave.intelligence = random(51,95)>>
 <<set $activeSlave.intelligenceImplant = 30>>
diff --git a/src/uncategorized/pSnatchAndGrabResult.tw b/src/uncategorized/pSnatchAndGrabResult.tw
index 442729f22bc4ebcf38f0df69c9aede57d1ada83d..e39a7201b34e99475d3b934aa932990e37b6aca0 100644
--- a/src/uncategorized/pSnatchAndGrabResult.tw
+++ b/src/uncategorized/pSnatchAndGrabResult.tw
@@ -43,7 +43,7 @@
 <<set $activeSlave.skill.vaginal = 0>>
 <<set $activeSlave.skill.oral = 0>>
 <<set $activeSlave.skill.anal = 0>>
-<<set $activeSlave.skill.whore = 0>>
+<<set $activeSlave.skill.whoring = 0>>
 <<set $activeSlave.skill.entertainment = 0>>
 <<set $activeSlave.birthWeek = 0>>
 <<set $activeSlave.voice = 2>>
@@ -106,7 +106,7 @@
 <<set $activeSlave.skill.vaginal = 0>>
 <<set $activeSlave.skill.oral = 0>>
 <<set $activeSlave.skill.anal = 0>>
-<<set $activeSlave.skill.whore = 0>>
+<<set $activeSlave.skill.whoring = 0>>
 <<set $activeSlave.skill.entertainment = 0>>
 <<set $activeSlave.birthWeek = 0>>
 <<set $activeSlave.height = Math.round(Height.random($activeSlave, {skew: 1, limitMult: [0, 2]}))>>
diff --git a/src/uncategorized/personalAttentionSelect.tw b/src/uncategorized/personalAttentionSelect.tw
index ad0e7f82d37e55d80dddce157be1f6e9fbd695cd..2f0d636e14039d596a368aa7a7f6b790e7ec3367 100644
--- a/src/uncategorized/personalAttentionSelect.tw
+++ b/src/uncategorized/personalAttentionSelect.tw
@@ -240,13 +240,13 @@
 		<</if>>
 
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
-		<<if ($activeSlave.skill.anal >= 100) && ($activeSlave.skill.oral >= 100) && ($activeSlave.skill.vaginal >= 100) && ($activeSlave.skill.whore > 0) && ($activeSlave.skill.entertainment > 0)>>
+		<<if ($activeSlave.skill.anal >= 100) && ($activeSlave.skill.oral >= 100) && ($activeSlave.skill.vaginal >= 100) && ($activeSlave.skill.whoring > 0) && ($activeSlave.skill.entertainment > 0)>>
 			//$He knows all the skills you can teach//
-		<<elseif ($activeSlave.skill.anal >= 100) && ($activeSlave.skill.oral >= 100) && ($activeSlave.skill.whore > 0) && ($activeSlave.skill.entertainment > 0) && ($activeSlave.vagina == -1) && ($activeSlave.balls == 0)>>
+		<<elseif ($activeSlave.skill.anal >= 100) && ($activeSlave.skill.oral >= 100) && ($activeSlave.skill.whoring > 0) && ($activeSlave.skill.entertainment > 0) && ($activeSlave.vagina == -1) && ($activeSlave.balls == 0)>>
 			//$He knows all the skills you can teach a gelded slave//
-		<<elseif ($activeSlave.skill.anal >= 100) && ($activeSlave.skill.oral >= 100) && ($activeSlave.skill.whore > 0) && ($activeSlave.skill.entertainment > 0) && ($activeSlave.vagina == -1)>>
+		<<elseif ($activeSlave.skill.anal >= 100) && ($activeSlave.skill.oral >= 100) && ($activeSlave.skill.whoring > 0) && ($activeSlave.skill.entertainment > 0) && ($activeSlave.vagina == -1)>>
 			//$He knows all the skills you can teach a shemale slave//
-		<<elseif ($activeSlave.skill.anal >= 100) && ($activeSlave.skill.oral >= 100) && ($activeSlave.skill.whore > 0) && ($activeSlave.skill.entertainment > 0) && ($activeSlave.chastityVagina)>>
+		<<elseif ($activeSlave.skill.anal >= 100) && ($activeSlave.skill.oral >= 100) && ($activeSlave.skill.whoring > 0) && ($activeSlave.skill.entertainment > 0) && ($activeSlave.chastityVagina)>>
 			//$He knows all the skills you can teach while $he's wearing a chastity belt//
 		<<elseif ($activeSlave.devotion <= 20) && ($activeSlave.trust >= -20)>>
 			//$He's too disobedient to learn sex skills//
diff --git a/src/uncategorized/prestigiousSlave.tw b/src/uncategorized/prestigiousSlave.tw
index 6adac7fdae05390be83ab26953163ee223233411..be36aea136143c1889f8ed0c82c4b4a76ed5eea4 100644
--- a/src/uncategorized/prestigiousSlave.tw
+++ b/src/uncategorized/prestigiousSlave.tw
@@ -75,7 +75,7 @@ You check to see if any especially prestigious slaves are on auction. <<if $pres
 	<<set $activeSlave.skill.vaginal = 100>>
 	<<set $activeSlave.skill.oral = 100>>
 	<<set $activeSlave.skill.anal = 100>>
-	<<set $activeSlave.skill.whore = 15>>
+	<<set $activeSlave.skill.whoring = 15>>
 	<<set $activeSlave.skill.entertainment = 100>>
 	<<set $activeSlave.pubicHStyle = "waxed">>
 	<<set $activeSlave.underArmHStyle = "waxed">>
@@ -114,7 +114,7 @@ You check to see if any especially prestigious slaves are on auction. <<if $pres
 	<<set $activeSlave.skill.vaginal = 35>>
 	<<set $activeSlave.skill.oral = 35>>
 	<<set $activeSlave.skill.anal = 15>>
-	<<set $activeSlave.skill.whore = 35>>
+	<<set $activeSlave.skill.whoring = 35>>
 	<<set $activeSlave.skill.entertainment = 15>>
 	<<set $activeSlave.pubicHStyle = "waxed">>
 	<<set $activeSlave.underArmHStyle = "waxed">>
@@ -149,7 +149,7 @@ You check to see if any especially prestigious slaves are on auction. <<if $pres
 	<<set $activeSlave.skill.vaginal = 15>>
 	<<set $activeSlave.skill.oral = 15>>
 	<<set $activeSlave.skill.anal = 0>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.entertainment = 0>>
 	<<set $activeSlave.skill.combat = 1>>
 	<<set $activeSlave.pubicHStyle = "waxed">>
@@ -180,7 +180,7 @@ You check to see if any especially prestigious slaves are on auction. <<if $pres
 	<<set $activeSlave.skill.vaginal = 15>>
 	<<set $activeSlave.skill.oral = 15>>
 	<<set $activeSlave.skill.anal = 0>>
-	<<set $activeSlave.skill.whore = 15>>
+	<<set $activeSlave.skill.whoring = 15>>
 	<<set $activeSlave.skill.entertainment = 35>>
 	<<set $activeSlave.pubicHStyle = "waxed">>
 	<<set $activeSlave.underArmHStyle = "waxed">>
@@ -249,7 +249,7 @@ You check to see if any especially prestigious slaves are on auction. <<if $pres
 	<<set $activeSlave.skill.vaginal = 100>>
 	<<set $activeSlave.skill.oral = 100>>
 	<<set $activeSlave.skill.anal = 100>>
-	<<set $activeSlave.skill.whore = 100>>
+	<<set $activeSlave.skill.whoring = 100>>
 	<<set $activeSlave.skill.entertainment = 0>>
 	<<set $activeSlave.pubicHStyle = "waxed">>
 	<<set $activeSlave.underArmHStyle = "waxed">>
@@ -290,7 +290,7 @@ You check to see if any especially prestigious slaves are on auction. <<if $pres
 	<<set $activeSlave.skill.vaginal = 15>>
 	<<set $activeSlave.skill.oral = 15>>
 	<<set $activeSlave.skill.anal = 15>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.entertainment = 100>>
 	<<set $activeSlave.pubicHStyle = "waxed">>
 	<<set $activeSlave.underArmHStyle = "waxed">>
@@ -323,7 +323,7 @@ You check to see if any especially prestigious slaves are on auction. <<if $pres
 	<<set $activeSlave.skill.vaginal = 15>>
 	<<set $activeSlave.skill.oral = 0>>
 	<<set $activeSlave.skill.anal = 0>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.entertainment = 35>>
 	<<set $activeSlave.pubicHStyle = "waxed">>
 	<<set $activeSlave.underArmHStyle = "waxed">>
@@ -353,7 +353,7 @@ You check to see if any especially prestigious slaves are on auction. <<if $pres
 	<<set $activeSlave.skill.vaginal = 0>>
 	<<set $activeSlave.skill.oral = 100>>
 	<<set $activeSlave.skill.anal = 0>>
-	<<set $activeSlave.skill.whore = 15>>
+	<<set $activeSlave.skill.whoring = 15>>
 	<<set $activeSlave.skill.entertainment = 35>>
 	<<set $activeSlave.pubicHStyle = "waxed">>
 	<<set $activeSlave.underArmHStyle = "waxed">>
@@ -412,7 +412,7 @@ You check to see if any especially prestigious slaves are on auction. <<if $pres
 	<<set $activeSlave.skill.vaginal = 15>>
 	<<set $activeSlave.skill.oral = 15>>
 	<<set $activeSlave.skill.anal = 15>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.entertainment = 0>>
 	<<set $activeSlave.pubicHStyle = "waxed">>
 	<<set $activeSlave.underArmHStyle = "waxed">>
@@ -444,7 +444,7 @@ You check to see if any especially prestigious slaves are on auction. <<if $pres
 	<<set $activeSlave.skill.vaginal = 15>>
 	<<set $activeSlave.skill.oral = 15>>
 	<<set $activeSlave.skill.anal = 1>>
-	<<set $activeSlave.skill.whore = 5>>
+	<<set $activeSlave.skill.whoring = 5>>
 	<<set $activeSlave.skill.entertainment = 70>>
 	<<set $activeSlave.pubicHStyle = "waxed">>
 	<<set $activeSlave.underArmHStyle = "waxed">>
@@ -480,7 +480,7 @@ You check to see if any especially prestigious slaves are on auction. <<if $pres
 	<<set $activeSlave.skill.vaginal = 0>>
 	<<set $activeSlave.skill.oral = 15>>
 	<<set $activeSlave.skill.anal = 15>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.entertainment = 0>>
 	<<set $activeSlave.pubicHStyle = "waxed">>
 	<<set $activeSlave.underArmHStyle = "waxed">>
@@ -513,7 +513,7 @@ You check to see if any especially prestigious slaves are on auction. <<if $pres
 	<<set $activeSlave.skill.vaginal = 0>>
 	<<set $activeSlave.skill.oral = 0>>
 	<<set $activeSlave.skill.anal = 0>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.entertainment = 15>>
 	<<set $activeSlave.pubicHStyle = "waxed">>
 	<<set $activeSlave.underArmHStyle = "waxed">>
@@ -559,7 +559,7 @@ You check to see if any especially prestigious slaves are on auction. <<if $pres
 	<<set $activeSlave.earPiercing = 1>>
 	<<set $activeSlave.skill.oral = 100>>
 	<<set $activeSlave.skill.anal = 100>>
-	<<set $activeSlave.skill.whore = 15>>
+	<<set $activeSlave.skill.whoring = 15>>
 	<<set $activeSlave.skill.entertainment = 100>>
 	<<set $activeSlave.pubicHStyle = "waxed">>
 	<<set $activeSlave.underArmHStyle = "waxed">>
@@ -588,7 +588,7 @@ You check to see if any especially prestigious slaves are on auction. <<if $pres
 	<<set $activeSlave.clitPiercing = 1>>
 	<<set $activeSlave.skill.oral = 15>>
 	<<set $activeSlave.skill.anal = 0>>
-	<<set $activeSlave.skill.whore = 15>>
+	<<set $activeSlave.skill.whoring = 15>>
 	<<set $activeSlave.skill.entertainment = 15>>
 	<<set $activeSlave.pubicHStyle = "waxed">>
 	<<set $activeSlave.underArmHStyle = "waxed">>
@@ -621,7 +621,7 @@ You check to see if any especially prestigious slaves are on auction. <<if $pres
 	<<set $activeSlave.weight = 0>>
 	<<set $activeSlave.skill.oral = 15>>
 	<<set $activeSlave.skill.anal = 0>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.entertainment = 0>>
 	<<set $activeSlave.skill.combat = 1>>
 	<<set $activeSlave.pubicHStyle = "waxed">>
@@ -653,7 +653,7 @@ You check to see if any especially prestigious slaves are on auction. <<if $pres
 	<<set $activeSlave.earPiercing = 1>>
 	<<set $activeSlave.skill.oral = 100>>
 	<<set $activeSlave.skill.anal = 0>>
-	<<set $activeSlave.skill.whore = 15>>
+	<<set $activeSlave.skill.whoring = 15>>
 	<<set $activeSlave.skill.entertainment = 35>>
 	<<set $activeSlave.pubicHStyle = "waxed">>
 	<<set $activeSlave.underArmHStyle = "waxed">>
@@ -723,7 +723,7 @@ You check to see if any especially prestigious slaves are on auction. <<if $pres
 	<<set $activeSlave.earPiercing = 2>>
 	<<set $activeSlave.skill.oral = 100>>
 	<<set $activeSlave.skill.anal = 100>>
-	<<set $activeSlave.skill.whore = 100>>
+	<<set $activeSlave.skill.whoring = 100>>
 	<<set $activeSlave.skill.entertainment = 0>>
 	<<set $activeSlave.pubicHStyle = "waxed">>
 	<<set $activeSlave.underArmHStyle = "waxed">>
@@ -762,7 +762,7 @@ You check to see if any especially prestigious slaves are on auction. <<if $pres
 	<<set $activeSlave.earPiercing = 1>>
 	<<set $activeSlave.skill.oral = 15>>
 	<<set $activeSlave.skill.anal = 15>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.entertainment = 100>>
 	<<set $activeSlave.pubicHStyle = "waxed">>
 	<<set $activeSlave.underArmHStyle = "waxed">>
@@ -792,7 +792,7 @@ You check to see if any especially prestigious slaves are on auction. <<if $pres
 	<<set $activeSlave.weight = 0>>
 	<<set $activeSlave.skill.oral = 0>>
 	<<set $activeSlave.skill.anal = 0>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.entertainment = 35>>
 	<<set $activeSlave.behavioralFlaw = either("arrogant", "bitchy")>>
 	<<set $activeSlave.custom.tattoo = "A small tattoo of the crest of an old world fraternity is visible on $his left shoulder blade.">>
@@ -824,7 +824,7 @@ You check to see if any especially prestigious slaves are on auction. <<if $pres
 	<<set $activeSlave.skill.vaginal = 0>>
 	<<set $activeSlave.skill.oral = 100>>
 	<<set $activeSlave.skill.anal = 0>>
-	<<set $activeSlave.skill.whore = 15>>
+	<<set $activeSlave.skill.whoring = 15>>
 	<<set $activeSlave.skill.entertainment = 35>>
 	<<set $activeSlave.pubicHStyle = "waxed">>
 	<<set $activeSlave.underArmHStyle = "waxed">>
@@ -873,7 +873,7 @@ You check to see if any especially prestigious slaves are on auction. <<if $pres
 	<<set $activeSlave.stampTat = "rude words">>
 	<<set $activeSlave.skill.oral = 15>>
 	<<set $activeSlave.skill.anal = 15>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.entertainment = 0>>
 	<<set $activeSlave.pubicHStyle = "waxed">>
 	<<set $activeSlave.underArmHStyle = "waxed">>
@@ -905,7 +905,7 @@ You check to see if any especially prestigious slaves are on auction. <<if $pres
 	<<set $activeSlave.earPiercing = 1>>
 	<<set $activeSlave.skill.oral = 30>>
 	<<set $activeSlave.skill.anal = 1>>
-	<<set $activeSlave.skill.whore = 5>>
+	<<set $activeSlave.skill.whoring = 5>>
 	<<set $activeSlave.skill.entertainment = 70>>
 	<<set $activeSlave.pubicHStyle = "waxed">>
 	<<set $activeSlave.underArmHStyle = "waxed">>
diff --git a/src/uncategorized/ptWorkaround.tw b/src/uncategorized/ptWorkaround.tw
index 6829463cb1577e453b21f134235bf1ebabfaf6ee..45395352ecd534382ba5b5df93d8019a235dc3ba 100644
--- a/src/uncategorized/ptWorkaround.tw
+++ b/src/uncategorized/ptWorkaround.tw
@@ -369,13 +369,13 @@
 	<<elseif ($activeSlave.skill.anal < 100) && ($activeSlave.anus > 0) && canDoAnal($activeSlave)>>
 		$He is already a skilled anal bitch, but $his skills can be polished further. You train $him in the basics of <<if $seePee == 1>>urine play, <</if>>massage, pet play, needle play, and many other niche skills. You also expand $his knowledge of sexual positions. $He learns to balance $himself on tiptoe for the challenge of standing anal sex without support. @@.lime;$His sexual skills have improved.@@
 		<<AnalSkillIncrease $activeSlave>>
-	<<elseif $activeSlave.skill.whore <= 10>>
+	<<elseif $activeSlave.skill.whoring <= 10>>
 		Since $he's dangerously naïve about selling sex, you teach $him the basics of self protection and business. @@.lime;$His prostitution skills have improved.@@
 		<<WhoreSkillIncrease $activeSlave>>
 	<<elseif $activeSlave.skill.entertainment <= 10>>
 		Since $he's rough and unskilled at entertainment, you teach $him the basics of polite conversation, music, and dance. @@.lime;$His entertainment skills have improved.@@
 		<<EntertainSkillIncrease $activeSlave>>
-	<<elseif $activeSlave.skill.whore <= 30>>
+	<<elseif $activeSlave.skill.whoring <= 30>>
 		Since $he has only basic entertainment skills, you teach $him to steer clients to more lucrative sex acts. @@.lime;$His prostitution skills have improved.@@
 		<<WhoreSkillIncrease $activeSlave>>
 	<<elseif $activeSlave.skill.entertainment <= 30>>
diff --git a/src/uncategorized/randomNonindividualEvent.tw b/src/uncategorized/randomNonindividualEvent.tw
index 437f123d77fe0d815634cdabf01bb5858cab84e8..1efa81b1b0721135ea77293682c4cdc45b3085d2 100644
--- a/src/uncategorized/randomNonindividualEvent.tw
+++ b/src/uncategorized/randomNonindividualEvent.tw
@@ -480,7 +480,7 @@
 		<<set $PETSevent.push("stewardess beating")>>
 	<</if>>
 
-	<<if ($Madam != 0) && ($brothelSlaves >= 5) && ($Madam.actualAge >= 35 || $AgePenalty == 0) && ($Madam.skill.whore >= 100)>>
+	<<if ($Madam != 0) && ($brothelSlaves >= 5) && ($Madam.actualAge >= 35 || $AgePenalty == 0) && ($Madam.skill.whoring >= 100)>>
 		<<set $PESSevent.push("madam strategy")>>
 	<</if>>
 
@@ -604,7 +604,7 @@
 		<<if ($HeadGirl.devotion > 50) && ($HeadGirl.skill.entertainment >= 100)>>
 			<<set $recruit.push("female recruit")>>
 		<</if>>
-		<<if ($HeadGirl.devotion > 50) && ($HeadGirl.skill.whore >= 100)>>
+		<<if ($HeadGirl.devotion > 50) && ($HeadGirl.skill.whoring >= 100)>>
 			<<set $recruit.push("whore recruit")>>
 		<</if>>
 		<<if $PC.hacking >= 50 && random(0,100) < $PC.hacking>>
diff --git a/src/uncategorized/reAWOL.tw b/src/uncategorized/reAWOL.tw
index 48b988358db2d5fbc760ee65e255e7f8d101d35a..19c3425334a9619799d462d8c6e4c4e69eaa0241 100644
--- a/src/uncategorized/reAWOL.tw
+++ b/src/uncategorized/reAWOL.tw
@@ -32,7 +32,7 @@
 <<set $activeSlave.hears = 0>>
 <<set $activeSlave.anus = 0>>
 <<set $activeSlave.skill.anal = 0>>
-<<set $activeSlave.skill.whore = 0>>
+<<set $activeSlave.skill.whoring = 0>>
 <<set $activeSlave.skill.combat = 1>>
 <<set $activeSlave.behavioralFlaw = "arrogant">>
 <<set $activeSlave.sexualFlaw = "hates men">>
diff --git a/src/uncategorized/reBrothelFunction.tw b/src/uncategorized/reBrothelFunction.tw
index 54eb7983dfa523066a766fb0a9a9b0c87149d991..3a460d55efedcf6b21c2257b93b251d9ce2da0ea 100644
--- a/src/uncategorized/reBrothelFunction.tw
+++ b/src/uncategorized/reBrothelFunction.tw
@@ -7,7 +7,7 @@ $brothelNameCaps is a reputable establishment in $arcologies[0].name, a veritabl
 <br><br>
 One request comes to you written on a letterhead featuring the logo of a fellow arcology owner. She describes her husband's preference for your hard working brothel whores, whom he patronizes on his regular business trips to your arcology. Such indulgences have been a distraction to her husband of late, and she has dispatched him to undertake a task in your arcology that simply cannot go poorly. With this in mind, she beseeches you to close down your brothel for a single day out of solidarity for a fellow arcology owner — and for the significant sum of <<print cashFormat(10000)>>.
 <br><br>
-Another of these bids for your brothel comes in the form of a curious video call. The video comes from an infamous lothario in your arcology, a seducer of powerful and prominent women citizens. Indeed, the recording was surreptitiously recorded in the bedroom of one such influential woman, with the Casanova describing his request in hushed tones while his wealthy host minces about unknowingly in the background. He explains that he is finally ready to hang up his coat and end his days of debauchery and copious casual sex, but that he would like to do so by engaging in a full day of indulgence at $brothelNameCaps.
+Another of these bids for your brothel comes in the form of a curious video call. The video comes from an infamous lothario in your arcology, a seducer of powerful and prominent women citizens. Indeed, the recording was surreptitiously recorded in the bedroom of one such influential woman, with the Casanova describing his request in hushed tones while his wealthy host minces about unknowingly in the background. He explains that he is finally ready to hang up his coat and end his days of debauchery and copious casual sex, but that he would like to do so by engaging in a full day of indulgence at $brothelName.
 <br><br>
 The last of these requests comes in the form of a letter, stamped with the herald of a prominent arcology family. It seems the eldest son of the family, known to you largely as a spoiled child riding on the coattails of his parents, is about to reach the age of majority. At his behest, his parents have contacted you to reserve your brothel for a day so that their son may become a man in true Free Cities fashion — amongst a roil of writhing flesh and wanton debauchery.
 
@@ -31,8 +31,8 @@ The last of these requests comes in the form of a letter, stamped with the heral
 	Though a citizen he may be, this serial seducer may have more notches on his proverbial bedpost than even your oldest slaves. Though you are not present to view his mastery of the sexual craft first-hand, the dreamy fucked-out looks of exhaustion and gratified satisfaction painting every single one of your girls' faces at the end of the day speak volumes. Indeed, all of your brothel slaves with any room for improvement in their whoring skills @@.green;learn from his skillful coupling,@@ while even those with nothing to learn from him @@.hotpink;gain confidence@@ from the intensity of their sexual congress.
 	<<for $i = 0; $i < $slaves.length; $i++>>
 		<<if $slaves[$i].assignment == "work in the brothel">>
-			<<if $slaves[$i].skill.whore < 100>>
-				<<set $slaves[$i].skill.whore += 10>>
+			<<if $slaves[$i].skill.whoring < 100>>
+				<<set $slaves[$i].skill.whoring += 10>>
 			<<else>>
 				<<set $slaves[$i].devotion += 4>>
 			<</if>>
diff --git a/src/uncategorized/reBusyBrothel.tw b/src/uncategorized/reBusyBrothel.tw
index c29c284ac8db2aff805b776bd61dd88974da2372..13653ccc002d342e3ecea26f3dce2e59c337fb62 100644
--- a/src/uncategorized/reBusyBrothel.tw
+++ b/src/uncategorized/reBusyBrothel.tw
@@ -29,8 +29,8 @@ Of course, $brothelName is the best establishment of its kind in the arcology. C
 	<<for $i = 0; $i < $BrothiIDs.length; $i++>>
 		<<set $slaves[$slaveIndices[$BrothiIDs[$i]]].lastWeeksCashIncome += 250>>
 		<<set $slaves[$slaveIndices[$BrothiIDs[$i]]].lifetimeCashIncome += 250>>
-		<<if $slaves[$slaveIndices[$BrothiIDs[$i]]].skill.whore < 100>>
-			<<set $slaves[$i].skill.whore += 10>>
+		<<if $slaves[$slaveIndices[$BrothiIDs[$i]]].skill.whoring < 100>>
+			<<set $slaves[$i].skill.whoring += 10>>
 		<<else>>
 			<<set $slaves[$slaveIndices[$BrothiIDs[$i]]].devotion += 4>>
 		<</if>>
diff --git a/src/uncategorized/reFSAcquisition.tw b/src/uncategorized/reFSAcquisition.tw
index d4bc8f64209fc5779c8fe79d124c13431d167568..1d47e4812e2fe4f0499046fb9ec734f48ed19e7e 100644
--- a/src/uncategorized/reFSAcquisition.tw
+++ b/src/uncategorized/reFSAcquisition.tw
@@ -274,7 +274,7 @@
 <<set $activeSlave.skill.vaginal = random(50,100)>>
 <<set $activeSlave.skill.oral = random(50,100)>>
 <<set $activeSlave.skill.anal = random(50,100)>>
-<<set $activeSlave.skill.whore = random(50,100)>>
+<<set $activeSlave.skill.whoring = random(50,100)>>
 <<set $activeSlave.skill.entertainment = random(50,100)>>
 <<set $activeSlave.pubicHStyle = "waxed">>
 <<set $activeSlave.underArmHStyle = "waxed">>
@@ -872,7 +872,7 @@
 <<set $activeSlave.skill.vaginal = 0>>
 <<set $activeSlave.skill.anal = 0>>
 <<set $activeSlave.skill.oral = 0>>
-<<set $activeSlave.skill.whore = 0>>
+<<set $activeSlave.skill.whoring = 0>>
 <<set $activeSlave.skill.entertainment = 0>>
 <<set $activeSlave.intelligence = random(16,95)>>
 <<set $activeSlave.intelligenceImplant = 15>>
@@ -898,7 +898,7 @@
 <<set $activeSlave.skill.vaginal = 1>>
 <<set $activeSlave.skill.anal = 1>>
 <<set $activeSlave.skill.oral = 1>>
-<<set $activeSlave.skill.whore = 0>>
+<<set $activeSlave.skill.whoring = 0>>
 <<set $activeSlave.skill.entertainment = 0>>
 <<set $activeSlave.intelligence = random(16,95)>>
 <<set $activeSlave.intelligenceImplant = 15>>
@@ -931,7 +931,7 @@
 <<set $activeSlave.vagina = 0>>
 <<set $activeSlave.trueVirgin = 1>>
 <<set $activeSlave.skill.vaginal = 0>>
-<<set $activeSlave.skill.whore = 0>>
+<<set $activeSlave.skill.whoring = 0>>
 <<set $activeSlave.skill.entertainment = 0>>
 <<set $activeSlave.intelligence = random(-50,50)>>
 <<set $activeSlave.intelligenceImplant = 15>>
@@ -959,7 +959,7 @@
 <<set $activeSlave.face = random(15,100)>>
 <<set $activeSlave.skill.oral = 35>>
 <<set $activeSlave.skill.anal = 15>>
-<<set $activeSlave.skill.whore = 0>>
+<<set $activeSlave.skill.whoring = 0>>
 <<set $activeSlave.skill.entertainment = 100>>
 <<set $activeSlave.intelligence = random(51,95)>>
 <<set $activeSlave.intelligenceImplant = 15>>
@@ -984,7 +984,7 @@
 <<set $activeSlave.face = 15>>
 <<set $activeSlave.skill.oral = random(15,40)>>
 <<set $activeSlave.skill.anal = random(15,40)>>
-<<set $activeSlave.skill.whore = random(15,40)>>
+<<set $activeSlave.skill.whoring = random(15,40)>>
 <<set $activeSlave.skill.entertainment = random(15,40)>>
 <<set $activeSlave.intelligence = random(51,95)>>
 <<set $activeSlave.intelligenceImplant = 15>>
diff --git a/src/uncategorized/reMalefactor.tw b/src/uncategorized/reMalefactor.tw
index 7febece333fb8419ed526c2e89d43630ee2c239f..2c6ba6712033fccfe0639c7724010d6652a29da6 100644
--- a/src/uncategorized/reMalefactor.tw
+++ b/src/uncategorized/reMalefactor.tw
@@ -26,7 +26,7 @@
 <</if>>
 <<set $activeSlave.skill.oral = 15>>
 <<set $activeSlave.skill.anal = 35>>
-<<set $activeSlave.skill.whore = 15>>
+<<set $activeSlave.skill.whoring = 15>>
 <<set $activeSlave.earPiercing = 1>>
 <<set $activeSlave.nosePiercing = 1>>
 <<set $activeSlave.nipplesPiercing = 1>>
@@ -59,7 +59,7 @@
 <</if>>
 <<set $activeSlave.skill.oral = 0>>
 <<set $activeSlave.skill.anal = 0>>
-<<set $activeSlave.skill.whore = 0>>
+<<set $activeSlave.skill.whoring = 0>>
 <<set $activeSlave.sexualFlaw = "hates penetration">>
 <<set $activeSlave.behavioralFlaw = "odd">>
 
@@ -124,7 +124,7 @@
 <</if>>
 <<set $activeSlave.skill.oral = 0>>
 <<set $activeSlave.skill.anal = 0>>
-<<set $activeSlave.skill.whore = 0>>
+<<set $activeSlave.skill.whoring = 0>>
 <<set $activeSlave.sexualFlaw = "apathetic">>
 <<set $activeSlave.behavioralFlaw = "gluttonous">>
 
@@ -183,7 +183,7 @@
 <</if>>
 <<set $activeSlave.skill.oral = 35>>
 <<set $activeSlave.skill.anal = 35>>
-<<set $activeSlave.skill.whore = 35>>
+<<set $activeSlave.skill.whoring = 35>>
 <<set $activeSlave.boobs += 400>>
 <<set $activeSlave.boobsImplant = 400>>
 <<set $activeSlave.butt += 1>>
@@ -278,7 +278,7 @@
 <<set $activeSlave.skill.vaginal = 0>>
 <<set $activeSlave.skill.oral = 0>>
 <<set $activeSlave.skill.anal = 0>>
-<<set $activeSlave.skill.whore = 0>>
+<<set $activeSlave.skill.whoring = 0>>
 <<set $activeSlave.skill.combat = 1>>
 <<set $activeSlave.anus = 0>>
 <<set $activeSlave.health = random(60,80)>>
diff --git a/src/uncategorized/reNickname.tw b/src/uncategorized/reNickname.tw
index 075fb33b4a9fb23746def8b8393ac8925f99c62c..ec7d10fc2c9c94ca695d0f15f834a6994a62eecb 100644
--- a/src/uncategorized/reNickname.tw
+++ b/src/uncategorized/reNickname.tw
@@ -182,10 +182,10 @@
 <<if ($activeSlave.amp == 1)>>
 	<<set $qualifiedNicknames.push("amp")>>
 <</if>>
-<<if Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60 || Math.floor($activeSlave.buttImplant/$activeSlave.butt) > .60>>
+<<if ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60 || ($activeSlave.buttImplant/$activeSlave.butt) > .60>>
 	<<set $qualifiedNicknames.push("implants")>>
 <</if>>
-<<if ($activeSlave.boobsImplant >= 750) && Math.floor($activeSlave.boobsImplant/$activeSlave.boobs) >= .60 && ($activeSlave.buttImplant >= 2) && Math.floor($activeSlave.buttImplant/$activeSlave.butt) > .60 && ($activeSlave.lipsImplant >= 10) && Math.floor($activeSlave.lipsImplant/$activeSlave.lips) > .30 && ($activeSlave.intelligence+$activeSlave.intelligenceImplant < -15)>>
+<<if ($activeSlave.boobsImplant >= 750) && ($activeSlave.boobsImplant/$activeSlave.boobs) >= .60 && ($activeSlave.buttImplant >= 2) && ($activeSlave.buttImplant/$activeSlave.butt) > .60 && ($activeSlave.lipsImplant >= 10) && ($activeSlave.lipsImplant/$activeSlave.lips) > .30 && ($activeSlave.intelligence+$activeSlave.intelligenceImplant < -15)>>
 	<<set $qualifiedNicknames.push("bimbo")>>
 <</if>>
 <<if ($activeSlave.intelligence+$activeSlave.intelligenceImplant < -50)>>
@@ -1027,7 +1027,7 @@
 	<<set $notApplyDesc = "accepts that $his broad areolae are just another part of $him, just like $his big tits.">>
 
 <<case "lips">>
-	<<set $nickname = either("'Beestung'", "'Cakehole'", "'Chops'", "'DSLs'", "'Ducklips'", "'Facepussy'", "'Fat Lips'"  "'Lip Gloss'", "'Kisser'", "'Kissing Booth'", "'Kissy'", "'Lippy'", "'Lips'", "'Lipstick'", "'Mwah'", "'Pillows'", "'Rims'", "'Smackers'", "'Smooches'", "'Soup Coolers'", "'Sucker'", "'Suckles'", "'Sucky-Sucky'")>>
+	<<set $nickname = either("'Beestung'", "'Cakehole'", "'Chops'", "'DSLs'", "'Ducklips'", "'Facepussy'", "'Fat Lips'",  "'Lip Gloss'", "'Kisser'", "'Kissing Booth'", "'Kissy'", "'Lippy'", "'Lips'", "'Lipstick'", "'Mwah'", "'Pillows'", "'Rims'", "'Smackers'", "'Smooches'", "'Soup Coolers'", "'Sucker'", "'Suckles'", "'Sucky-Sucky'")>>
 	<<set $situationDesc = "has lovely lips. They're so big $he can hardly talk straight, and they even hinder $his ability to communicate any facial expression other than a desire to be facefucked. This is appropriate, as $he spends a lot of time getting facefucked.">>
 	<<set $applyDesc = "accepts that $his big lips define $him. Even more than before, $he presents $his mouth for oral sex whenever $he flirts, and $he views $his throat as $his primary sexual organ.">>
 	<<set $notApplyDesc = "accepts that $his mouth is only one of $his holes, and that as a sex slave $he'll be taking cock in all of them, even if $his lips are huge.">>
diff --git a/src/uncategorized/rePokerNight.tw b/src/uncategorized/rePokerNight.tw
index 8e1b5cf985fefb96209e29ff35d70794639eb3b9..a8676a3ccc5482412465aff820355a3380373d67 100644
--- a/src/uncategorized/rePokerNight.tw
+++ b/src/uncategorized/rePokerNight.tw
@@ -88,7 +88,7 @@ On a particularly lackadaisical evening, you find yourself alerted to a message
 					<</if>>
 					<<set $activeSlave.anus = 0>>
 					<<set $activeSlave.skill.anal = 0>>
-					<<set $activeSlave.skill.whore = 0>>
+					<<set $activeSlave.skill.whoring = 0>>
 					<<set $activeSlave.skill.combat = 1>>
 					<<set $activeSlave.accent = random(0,1)>>
 					<<set $activeSlave.behavioralFlaw = "arrogant">>
diff --git a/src/uncategorized/reRecruit.tw b/src/uncategorized/reRecruit.tw
index 95cdc40676b0e0f56372b2a27fe39d8722ab3848..4ecfdb4597d57b1ea2f33841abec9a9c0351d624 100644
--- a/src/uncategorized/reRecruit.tw
+++ b/src/uncategorized/reRecruit.tw
@@ -111,7 +111,7 @@
 <<set $activeSlave.skill.vaginal = 35>>
 <<set $activeSlave.skill.oral = 35>>
 <<set $activeSlave.skill.anal = 35>>
-<<set $activeSlave.skill.whore = 35>>
+<<set $activeSlave.skill.whoring = 35>>
 <<set $activeSlave.boobs += 600>>
 <<set $activeSlave.boobsImplant = 600>>
 <<set $activeSlave.butt += 1>>
@@ -162,7 +162,7 @@
 <<set $activeSlave.anus = 0>>
 <<set $activeSlave.skill.anal = 0>>
 <<set $activeSlave.skill.oral = 0>>
-<<set $activeSlave.skill.whore = 0>>
+<<set $activeSlave.skill.whoring = 0>>
 <<set $activeSlave.hStyle = either("short", "very short")>>
 
 <<case "desperate preg">>
@@ -507,7 +507,7 @@
 <<set $activeSlave.skill.vaginal = random(0,15)>>
 <<set $activeSlave.skill.anal = 0>>
 <<set $activeSlave.skill.oral = random(0,15)>>
-<<set $activeSlave.skill.whore = 0>>
+<<set $activeSlave.skill.whoring = 0>>
 <<set $activeSlave.boobs = random(2,6)*100>>
 <<set $activeSlave.vagina = 1>>
 <<set $activeSlave.labia = 0>>
@@ -544,7 +544,7 @@
 <<set $activeSlave.skill.vaginal = 0>>
 <<set $activeSlave.skill.anal = random(0,40)>>
 <<set $activeSlave.skill.oral = random(0,40)>>
-<<set $activeSlave.skill.whore = 0>>
+<<set $activeSlave.skill.whoring = 0>>
 <<set $activeSlave.boobs = 150>>
 <<set $activeSlave.vagina = -1>>
 <<set $activeSlave.labia = 0>>
@@ -583,7 +583,7 @@
 <<set $activeSlave.skill.vaginal = 0>>
 <<set $activeSlave.skill.anal = 0>>
 <<set $activeSlave.skill.oral = random(0,30)>>
-<<set $activeSlave.skill.whore = 0>>
+<<set $activeSlave.skill.whoring = 0>>
 <<set $activeSlave.boobs = random(2,4)*100>>
 <<set $activeSlave.vagina = 0>>
 <<set $activeSlave.labia = 0>>
@@ -637,7 +637,7 @@
 <<set $activeSlave.skill.vaginal = 0>>
 <<set $activeSlave.skill.anal = 0>>
 <<set $activeSlave.skill.oral = random(15,40)>>
-<<set $activeSlave.skill.whore = 0>>
+<<set $activeSlave.skill.whoring = 0>>
 <<set $activeSlave.boobs = random(2,6)*100>>
 <<set $activeSlave.vagina = 0>>
 <<set $activeSlave.skill.vaginal = 0>>
@@ -677,7 +677,7 @@
 <<set $activeSlave.skill.vaginal = 0>>
 <<set $activeSlave.skill.anal = 0>>
 <<set $activeSlave.skill.oral = random(15,40)>>
-<<set $activeSlave.skill.whore = 0>>
+<<set $activeSlave.skill.whoring = 0>>
 <<set $activeSlave.boobsImplant = random(3,6)*100>>
 <<set $activeSlave.boobs = $activeSlave.boobsImplant+150>>
 <<set $activeSlave.vagina = 0>>
@@ -718,7 +718,7 @@
 <<set $activeSlave.skill.vaginal = 0>>
 <<set $activeSlave.skill.anal = 0>>
 <<set $activeSlave.skill.oral = 35>>
-<<set $activeSlave.skill.whore = 0>>
+<<set $activeSlave.skill.whoring = 0>>
 <<set $activeSlave.boobs = 150>>
 <<set $activeSlave.boobsImplant = random(2,6)*100>>
 <<set $activeSlave.vagina = -1>>
@@ -753,7 +753,7 @@
 <<set $activeSlave.faceImplant = 15>>
 <<set $activeSlave.skill.anal = 0>>
 <<set $activeSlave.skill.oral = 0>>
-<<set $activeSlave.skill.whore = 0>>
+<<set $activeSlave.skill.whoring = 0>>
 <<set $activeSlave.skill.combat = 1>>
 <<set $activeSlave.hStyle = either("short", "very short")>>
 <<set $activeSlave.boobs = 150>>
@@ -786,7 +786,7 @@
 <<set $activeSlave.skill.vaginal = 0>>
 <<set $activeSlave.skill.anal = 15>>
 <<set $activeSlave.skill.oral = 15>>
-<<set $activeSlave.skill.whore = 0>>
+<<set $activeSlave.skill.whoring = 0>>
 <<set $activeSlave.boobs = random(2,6)*100>>
 <<set $activeSlave.vagina = -1>>
 <<set $activeSlave.labia = 1>>
@@ -826,7 +826,7 @@
 <<set $activeSlave.skill.vaginal = 15>>
 <<set $activeSlave.skill.anal = 15>>
 <<set $activeSlave.skill.oral = 15>>
-<<set $activeSlave.skill.whore = 0>>
+<<set $activeSlave.skill.whoring = 0>>
 <<set $activeSlave.boobs = random(3,7)*100>>
 <<set $activeSlave.vagina = 3>>
 <<set $activeSlave.labia = 1>>
@@ -872,7 +872,7 @@
 <<set $activeSlave.skill.vaginal = 15>>
 <<set $activeSlave.skill.anal = 15>>
 <<set $activeSlave.skill.oral = 15>>
-<<set $activeSlave.skill.whore = 0>>
+<<set $activeSlave.skill.whoring = 0>>
 <<set $activeSlave.boobs = random(3,7)*100>>
 <<set $activeSlave.vagina = 3>>
 <<set $activeSlave.labia = 1>>
@@ -918,7 +918,7 @@
 <<set $activeSlave.skill.vaginal = 0>>
 <<set $activeSlave.skill.anal = 0>>
 <<set $activeSlave.skill.oral = 35>>
-<<set $activeSlave.skill.whore = 0>>
+<<set $activeSlave.skill.whoring = 0>>
 <<set $activeSlave.skill.entertainment = 35>>
 <<set $activeSlave.boobs = random(2,7)*100>>
 <<set $activeSlave.vagina = 0>>
@@ -964,7 +964,7 @@
 <<set $activeSlave.skill.vaginal = random(50,100)>>
 <<set $activeSlave.skill.anal = random(50,100)>>
 <<set $activeSlave.skill.oral = random(50,100)>>
-<<set $activeSlave.skill.whore = random(50,100)>>
+<<set $activeSlave.skill.whoring = random(50,100)>>
 <<set $activeSlave.skill.entertainment = 35>>
 <<set $activeSlave.boobs = random(2,7)*100>>
 <<set $activeSlave.vagina = 2>>
@@ -1012,7 +1012,7 @@
 <<set $activeSlave.skill.vaginal = 0>>
 <<set $activeSlave.skill.anal = random(0,15)>>
 <<set $activeSlave.skill.oral = random(0,15)>>
-<<set $activeSlave.skill.whore = 0>>
+<<set $activeSlave.skill.whoring = 0>>
 <<set $activeSlave.boobs = random(1,4)*100>>
 <<set $activeSlave.vagina = -1>>
 <<set $activeSlave.ovaries = 0>>
@@ -1056,7 +1056,7 @@
 <<set $activeSlave.skill.vaginal = 0>>
 <<set $activeSlave.skill.anal = random(0,15)>>
 <<set $activeSlave.skill.oral = random(0,15)>>
-<<set $activeSlave.skill.whore = 0>>
+<<set $activeSlave.skill.whoring = 0>>
 <<set $activeSlave.boobs = random(1,4)*100>>
 <<set $activeSlave.vagina = 1>>
 <<set $activeSlave.labia = 1>>
@@ -1104,7 +1104,7 @@
 <<set $activeSlave.skill.vaginal = 0>>
 <<set $activeSlave.skill.anal = random(0,15)>>
 <<set $activeSlave.skill.oral = random(0,15)>>
-<<set $activeSlave.skill.whore = 0>>
+<<set $activeSlave.skill.whoring = 0>>
 <<set $activeSlave.boobs = either(100, 200, 300)>>
 <<set $activeSlave.vagina = 0>>
 <<set $activeSlave.trueVirgin = 1>>
@@ -1142,7 +1142,7 @@
 <<set $activeSlave.skill.anal = 15>>
 <<set $activeSlave.skill.oral = 15>>
 <<set $activeSlave.skill.entertainment = 15>>
-<<set $activeSlave.skill.whore = 15>>
+<<set $activeSlave.skill.whoring = 15>>
 <<set $activeSlave.boobs = random(3,8)*100>>
 <<set $activeSlave.vagina = random(1,2)>>
 <<set $activeSlave.vaginaLube = 1>>
@@ -1178,7 +1178,7 @@
 <<set $activeSlave.skill.anal = 0>>
 <<set $activeSlave.skill.oral = 0>>
 <<set $activeSlave.skill.entertainment = random(15,40)>>
-<<set $activeSlave.skill.whore = 0>>
+<<set $activeSlave.skill.whoring = 0>>
 <<set $activeSlave.boobs = random(3,8)*100>>
 <<set $activeSlave.vagina = 0>>
 <<set $activeSlave.vaginaLube = 1>>
@@ -1219,7 +1219,7 @@
 <<set $activeSlave.skill.anal = 15>>
 <<set $activeSlave.skill.oral = 15>>
 <<set $activeSlave.skill.entertainment = 0>>
-<<set $activeSlave.skill.whore = 0>>
+<<set $activeSlave.skill.whoring = 0>>
 <<set $activeSlave.boobs = random(8,20)*100>>
 <<set $activeSlave.vagina = 2>>
 <<set $activeSlave.vaginaLube = 1>>
@@ -1268,7 +1268,7 @@
 <<set $activeSlave.skill.anal = 35>>
 <<set $activeSlave.skill.oral = 15>>
 <<set $activeSlave.skill.entertainment = 0>>
-<<set $activeSlave.skill.whore = 0>>
+<<set $activeSlave.skill.whoring = 0>>
 <<set $activeSlave.boobs = 0>>
 <<set $activeSlave.vagina = -1>>
 <<set $activeSlave.vaginaLube = 1>>
@@ -1306,7 +1306,7 @@
 <<set $activeSlave.skill.anal = 15>>
 <<set $activeSlave.skill.oral = 15>>
 <<set $activeSlave.skill.entertainment = 0>>
-<<set $activeSlave.skill.whore = 0>>
+<<set $activeSlave.skill.whoring = 0>>
 <<set $activeSlave.boobs = random(6,12)*100>>
 <<set $activeSlave.vagina = 0>>
 <<set $activeSlave.trueVirgin = 1>>
@@ -1344,7 +1344,7 @@
 <<set $activeSlave.skill.anal = 15>>
 <<set $activeSlave.skill.oral = 15>>
 <<set $activeSlave.skill.entertainment = 0>>
-<<set $activeSlave.skill.whore = 15>>
+<<set $activeSlave.skill.whoring = 15>>
 <<set $activeSlave.boobs = random(4,8)*100>>
 <<set $activeSlave.vagina = 1>>
 <<set $activeSlave.vaginaLube = 1>>
@@ -1383,7 +1383,7 @@
 <<set $activeSlave.skill.anal = 15>>
 <<set $activeSlave.skill.oral = 35>>
 <<set $activeSlave.skill.entertainment = 0>>
-<<set $activeSlave.skill.whore = 15>>
+<<set $activeSlave.skill.whoring = 15>>
 <<set $activeSlave.boobs = 0>>
 <<set $activeSlave.vagina = -1>>
 <<set $activeSlave.vaginaLube = 1>>
@@ -1424,7 +1424,7 @@
 <<set $activeSlave.skill.anal = 0>>
 <<set $activeSlave.skill.oral = 0>>
 <<set $activeSlave.skill.entertainment = 0>>
-<<set $activeSlave.skill.whore = 0>>
+<<set $activeSlave.skill.whoring = 0>>
 <<set $activeSlave.boobs = random(3,10)*100>>
 <<set $activeSlave.vagina = 1>>
 <<set $activeSlave.vaginaLube = random(1,2)>>
@@ -1488,7 +1488,7 @@
 <<set $activeSlave.skill.anal = 0>>
 <<set $activeSlave.skill.oral = 0>>
 <<set $activeSlave.skill.entertainment = 0>>
-<<set $activeSlave.skill.whore = 0>>
+<<set $activeSlave.skill.whoring = 0>>
 <<set $activeSlave.boobs = random(3,10)*100>>
 <<set $activeSlave.vagina = 1>>
 <<set $activeSlave.vaginaLube = random(1,2)>>
@@ -1557,7 +1557,7 @@
 <<set $activeSlave.skill.anal = 25>>
 <<set $activeSlave.skill.oral = 25>>
 <<set $activeSlave.skill.entertainment = 25>>
-<<set $activeSlave.skill.whore = 25>>
+<<set $activeSlave.skill.whoring = 25>>
 <<set $activeSlave.boobs = random(3,8)*100>>
 <<set $activeSlave.vagina = random(1,2)>>
 <<set $activeSlave.vaginaLube = 1>>
@@ -1836,7 +1836,7 @@
 <<set $activeSlave.skill.vaginal = 0>>
 <<set $activeSlave.skill.anal = 0>>
 <<set $activeSlave.skill.oral = 0>>
-<<set $activeSlave.skill.whore = 0>>
+<<set $activeSlave.skill.whoring = 0>>
 <<set $activeSlave.skill.entertainment = 20>>
 <<set $activeSlave.boobs = random(4,7)*100>>
 <<set $activeSlave.vagina = 0>>
@@ -1950,7 +1950,7 @@
 <<set $activeSlave.skill.anal = 0>>
 <<set $activeSlave.skill.oral = 50>>
 <<set $activeSlave.skill.entertainment = 0>>
-<<set $activeSlave.skill.whore = 50>>
+<<set $activeSlave.skill.whoring = 50>>
 <<set $activeSlave.vagina = 1>>
 <<set $activeSlave.vaginaLube = random(1,2)>>
 <<set $activeSlave.pubicHStyle = "waxed">>
@@ -1981,7 +1981,7 @@
 <<set $activeSlave.skill.anal = 15>>
 <<set $activeSlave.skill.oral = 50>>
 <<set $activeSlave.skill.entertainment = 0>>
-<<set $activeSlave.skill.whore = 0>>
+<<set $activeSlave.skill.whoring = 0>>
 <<set $activeSlave.vagina = 1>>
 <<set $activeSlave.anus = 1>>
 <<set $activeSlave.pubicHStyle = "waxed">>
diff --git a/src/uncategorized/reRelativeRecruiter.tw b/src/uncategorized/reRelativeRecruiter.tw
index 8e0cfdaf41b374f8741eb4ccecda0a8caf52b66f..c6036bb6d5863795d3fa9d3ce4e8474a154ed76f 100644
--- a/src/uncategorized/reRelativeRecruiter.tw
+++ b/src/uncategorized/reRelativeRecruiter.tw
@@ -168,7 +168,7 @@
 	<<set $activeSlave.skill.vaginal = 30>>
 	<<set $activeSlave.skill.anal = 15>>
 	<<set $activeSlave.skill.entertainment = 10>>
-	<<set $activeSlave.skill.whore = 10>>
+	<<set $activeSlave.skill.whoring = 10>>
 	<<set $activeSlave.boobs = (random(12,20)*100)>>
 	<<set $activeSlave.butt = random(4,6)>>
 	<<set $activeSlave.boobShape = "saggy">>
@@ -221,7 +221,7 @@
 	<<set $activeSlave.skill.vaginal += random(0,20)>>
 	<<set $activeSlave.skill.anal += random(0,20)>>
 	<<set $activeSlave.skill.entertainment += random(0,20)>>
-	<<set $activeSlave.skill.whore += random(0,20)>>
+	<<set $activeSlave.skill.whoring += random(0,20)>>
 	<<set $activeSlave.nipplesPiercing = 1>>
 	<<set $activeSlave.lipsPiercing = 1>>
 	<<set $activeSlave.tonguePiercing = 1>>
@@ -247,7 +247,7 @@
 	<<set $activeSlave.skill.oral += random(0,20)>>
 	<<set $activeSlave.skill.anal += random(0,20)>>
 	<<set $activeSlave.skill.entertainment += random(0,20)>>
-	<<set $activeSlave.skill.whore += random(0,20)>>
+	<<set $activeSlave.skill.whoring += random(0,20)>>
 	<<set $activeSlave.lips = random(60,90)>>
 	<<set $activeSlave.lipsImplant = 40>>
 	<<set $activeSlave.lipsPiercing = 1>>
@@ -277,7 +277,7 @@
 	<<set $activeSlave.skill.vaginal += random(0,20)>>
 	<<set $activeSlave.skill.anal += random(0,20)>>
 	<<set $activeSlave.skill.entertainment += random(0,20)>>
-	<<set $activeSlave.skill.whore += random(0,20)>>
+	<<set $activeSlave.skill.whoring += random(0,20)>>
 
 <<case "younger sister">>
 	<<set $activeSlave.origin = "She was recruited into your service by her older sister.">>
@@ -304,7 +304,7 @@
 	<<set $activeSlave.prostate = 1>>
 	<<set $activeSlave.actualAge = $eventSlave.actualAge+2>>
 	<<set $activeSlave.skill.entertainment += random(0,20)>>
-	<<set $activeSlave.skill.whore += random(0,20)>>
+	<<set $activeSlave.skill.whoring += random(0,20)>>
 	<<set $activeSlave.anus = 0>>
 	<<set $activeSlave.vagina = -1>>
 	<<set $activeSlave.energy = 70>>
@@ -336,7 +336,7 @@
 	<<set $activeSlave.nails = 5>>
 	<<set $activeSlave.skill.anal = 70>>
 	<<set $activeSlave.skill.oral = 70>>
-	<<set $activeSlave.skill.whore = 100>>
+	<<set $activeSlave.skill.whoring = 100>>
 	<<set $activeSlave.energy = 100>>
 	<<set $activeSlave.actualAge = $eventSlave.actualAge-2>>
 	<<set $activeSlave.skill.entertainment += random(0,20)>>
@@ -919,7 +919,7 @@ You look up the _relationType. _He2 costs <<print cashFormat($slaveCost)>>, a ba
 	<<set $activeSlave.skill.vaginal = 0>>
 	<<set $activeSlave.skill.anal = 0>>
 	<<set $activeSlave.skill.entertainment = 0>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.lactation = 0>>
 	<<set $activeSlave.lactationDuration = 0>>
 	<<set $activeSlave.boobsMilk = 0>>
@@ -939,7 +939,7 @@ You look up the _relationType. _He2 costs <<print cashFormat($slaveCost)>>, a ba
 	<<set $activeSlave.skill.vaginal += random(0,20)>>
 	<<set $activeSlave.skill.anal += random(0,20)>>
 	<<set $activeSlave.skill.entertainment += random(0,20)>>
-	<<set $activeSlave.skill.whore += random(0,20)>>
+	<<set $activeSlave.skill.whoring += random(0,20)>>
 	<<set $activeSlave.lactation = 0>>
 	<<set $activeSlave.lactationDuration = 0>>
 	<<set $activeSlave.boobsMilk = 0>>
diff --git a/src/uncategorized/reShelterInspection.tw b/src/uncategorized/reShelterInspection.tw
index 62f4f6d7f9d5b7381d51e5696713836b61a89fdc..bebc851112629a3ef4d367cd5232f571b6383931 100644
--- a/src/uncategorized/reShelterInspection.tw
+++ b/src/uncategorized/reShelterInspection.tw
@@ -23,7 +23,7 @@
 <<set $activeSlave.health = random(30,50)>>
 <<set $activeSlave.skill.anal = 0>>
 <<set $activeSlave.skill.oral = 0>>
-<<set $activeSlave.skill.whore = 0>>
+<<set $activeSlave.skill.whoring = 0>>
 <<set $activeSlave.skill.vaginal = 0>>
 <<set $activeSlave.skill.entertainment = 0>>
 <<set $activeSlave.butt = random(4,6)>>
diff --git a/src/uncategorized/recETS.tw b/src/uncategorized/recETS.tw
index aa972562e009cfecad2ec17ee2cf817cc52005df..0f66b4535cf05264d56d68ff85ad3525c142489b 100644
--- a/src/uncategorized/recETS.tw
+++ b/src/uncategorized/recETS.tw
@@ -706,7 +706,7 @@
 <<set $activeSlave.face = 15>>
 <<set $activeSlave.vagina = 4>>
 <<set $activeSlave.skill.vaginal = 45>>
-<<set $activeSlave.skill.whore = 20>>
+<<set $activeSlave.skill.whoring = 20>>
 <<set $activeSlave.skill.anal = 10>>
 <<set $activeSlave.anus = 1>>
 <<set $activeSlave.weight = random(-80,-50)>>
@@ -1269,7 +1269,7 @@
 	<<set $activeSlave.counter.birthsTotal = 0>>
 	<<set $activeSlave.anus = 0>>
 	<<set $activeSlave.skill.vaginal = 0>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.anal = 0>>
 	<<set $activeSlave.weight = random(-80,-50)>>
 	<<set $activeSlave.muscles = 0>>
@@ -1328,7 +1328,7 @@
 	<<set $activeSlave.counter.birthsTotal = 0>>
 	<<set $activeSlave.anus = 0>>
 	<<set $activeSlave.skill.vaginal = 0>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.anal = 0>>
 	<<set $activeSlave.weight = random(-80,-50)>>
 	<<set $activeSlave.muscles = 0>>
diff --git a/src/uncategorized/remoteSurgery.tw b/src/uncategorized/remoteSurgery.tw
index 26b28ca8842e626b377ddc1e1c86fc7ab0f6b42e..c646e97cd25ce0c59930e7b36625d435118adbe5 100644
--- a/src/uncategorized/remoteSurgery.tw
+++ b/src/uncategorized/remoteSurgery.tw
@@ -1381,7 +1381,7 @@ $He has
 
 <br><br>
 
-<<if $geneticMappingUpgrade == 1>>
+<<if $geneticMappingUpgrade >= 1>>
 	Apply a retro-virus treatment:
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
 	<<if ($activeSlave.indentureRestrictions >= 1)>>
@@ -1408,7 +1408,7 @@ $He has
 		<</if>>
 		<<if $activeSlave.geneticQuirks.albinism == 2>>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
-			[[Albinism prevention treamtment|Surgery Degradation][$activeSlave.geneticQuirks.albinism = 0,cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 100,$surgeryType = "gene treatment"]]
+			[[Albinism prevention treatment|Surgery Degradation][$activeSlave.geneticQuirks.albinism = 0,cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 100,$surgeryType = "gene treatment"]]
 		<</if>>
 		<<if $activeSlave.geneticQuirks.pFace == 2>>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
@@ -1430,6 +1430,18 @@ $He has
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
 			[[Correct ova release during pregnancy|Surgery Degradation][$activeSlave.geneticQuirks.superfetation = 0,cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 100,$surgeryType = "gene treatment"]]
 		<</if>>
+		<<if $activeSlave.geneticQuirks.gigantomastia >= 2>>
+			<br>&nbsp;&nbsp;&nbsp;&nbsp;
+			[[Corret gigantomastia|Surgery Degradation][$activeSlave.geneticQuirks.gigantomastia = 0,cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 100,$surgeryType = "gene treatment"]]
+		<</if>>
+		<<if $activeSlave.geneticQuirks.macromastia >= 2>>
+			<br>&nbsp;&nbsp;&nbsp;&nbsp;
+			[[Corret macromastia|Surgery Degradation][$activeSlave.geneticQuirks.macromastia = 0,cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 100,$surgeryType = "gene treatment"]]
+		<</if>>
+		<<if $activeSlave.geneticQuirks.rearLipedema == 2>>
+			<br>&nbsp;&nbsp;&nbsp;&nbsp;
+			[[Corret lipedema|Surgery Degradation][$activeSlave.geneticQuirks.rearLipedema = 0,cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 100,$surgeryType = "gene treatment"]]
+		<</if>>
 		<<if $activeSlave.geneticQuirks.wellHung == 2>>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
 			[[Corret genetic predisposition for large genitals|Surgery Degradation][$activeSlave.geneticQuirks.wellHung = 0,cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 100,$surgeryType = "gene treatment"]]
diff --git a/src/uncategorized/repBudget.tw b/src/uncategorized/repBudget.tw
index 45c0be4bd92c5811daa004a9639a51c0f365c500..368a0bf11ce8a6a1aa2087ec039d25ed380b3a6f 100644
--- a/src/uncategorized/repBudget.tw
+++ b/src/uncategorized/repBudget.tw
@@ -1,6 +1,6 @@
 :: Rep Budget [nobr]
 
-<<set $nextButton = "Back to Main", $nextLink = "Main", _archologyCosts = 0>>
+<<set $nextButton = "Back to Main", $nextLink = "Main", _arcologyCosts = 0>>
 
 <<set $lastWeeksRepIncome.Total = 0>>
 <<set $lastWeeksRepExpenses.Total = 0>>
@@ -24,7 +24,7 @@
 <<else>>
 
 <<script>>
-for(var i = 0; i < State.variables.lastWeeksRepIncome.length; i++){
+for (var i = 0; i < State.variables.lastWeeksRepIncome.length; i++){
 	State.variables.lastWeeksRepProfits[i] = (State.variables.lastWeeksRepIncome[i] + State.variables.lastWeeksRepExpenses[i]);
 }
 <</script>>
diff --git a/src/uncategorized/resFailure.tw b/src/uncategorized/resFailure.tw
index 5c9bf35d4b69c934ec793554ac9e66a41059435c..9502f2d28aee4301c121fe222894e9c854e00cc5 100644
--- a/src/uncategorized/resFailure.tw
+++ b/src/uncategorized/resFailure.tw
@@ -66,13 +66,13 @@
 			<<set $activeSlave.skill.vaginal = 0>>
 			<<set $activeSlave.skill.oral = 0>>
 			<<set $activeSlave.skill.anal = 0>>
-			<<set $activeSlave.skill.whore = 0>>
+			<<set $activeSlave.skill.whoring = 0>>
 			<<set $activeSlave.skill.entertainment = 15>>
 		<<else>>
 			<<set $activeSlave.skill.vaginal = 15>>
 			<<set $activeSlave.skill.oral = 15>>
 			<<set $activeSlave.skill.anal = 15>>
-			<<set $activeSlave.skill.whore = 15>>
+			<<set $activeSlave.skill.whoring = 15>>
 			<<set $activeSlave.skill.entertainment = 15>>
 		<</if>>
 		<<set $activeSlave.skill.combat = 0>>
@@ -127,7 +127,7 @@
 		<<set $activeSlave.skill.vaginal = 0>>
 		<<set $activeSlave.skill.oral = 0>>
 		<<set $activeSlave.skill.anal = 0>>
-		<<set $activeSlave.skill.whore = 0>>
+		<<set $activeSlave.skill.whoring = 0>>
 		<<set $activeSlave.skill.entertainment = 0>>
 		<<set $activeSlave.skill.combat = 0>>
 		<<set $activeSlave.pubicHStyle = "waxed">>
@@ -194,7 +194,7 @@
 		<<set $activeSlave.skill.vaginal = 0>>
 		<<set $activeSlave.skill.oral = 0>>
 		<<set $activeSlave.skill.anal = 0>>
-		<<set $activeSlave.skill.whore = 0>>
+		<<set $activeSlave.skill.whoring = 0>>
 		<<set $activeSlave.skill.entertainment = 0>>
 		<<set $activeSlave.skill.combat = 0>>
 		<<set $activeSlave.pubicHStyle = "waxed">>
@@ -254,13 +254,13 @@
 			<<set $activeSlave.skill.vaginal = 15>>
 			<<set $activeSlave.skill.oral = 15>>
 			<<set $activeSlave.skill.anal = 15>>
-			<<set $activeSlave.skill.whore = 15>>
+			<<set $activeSlave.skill.whoring = 15>>
 			<<set $activeSlave.skill.entertainment = 15>>
 		<<else>>
 			<<set $activeSlave.skill.vaginal = 0>>
 			<<set $activeSlave.skill.oral = 0>>
 			<<set $activeSlave.skill.anal = 0>>
-			<<set $activeSlave.skill.whore = 0>>
+			<<set $activeSlave.skill.whoring = 0>>
 			<<set $activeSlave.skill.entertainment = 0>>
 		<</if>>
 		<<set $activeSlave.skill.combat = 0>>
@@ -336,7 +336,7 @@
 		<<set $activeSlave.skill.vaginal = 0>>
 		<<set $activeSlave.skill.oral = 15>>
 		<<set $activeSlave.skill.anal = 100>>
-		<<set $activeSlave.skill.whore = 15>>
+		<<set $activeSlave.skill.whoring = 15>>
 		<<set $activeSlave.skill.entertainment = 15>>
 		<<set $activeSlave.skill.combat = 0>>
 		<<set $activeSlave.pubicHStyle = "waxed">>
@@ -391,7 +391,7 @@
 		<<set $activeSlave.skill.vaginal = 0>>
 		<<set $activeSlave.skill.oral = 0>>
 		<<set $activeSlave.skill.anal = 0>>
-		<<set $activeSlave.skill.whore = 0>>
+		<<set $activeSlave.skill.whoring = 0>>
 		<<set $activeSlave.skill.entertainment = 0>>
 		<<if $TGA.schoolUpgrade == 2>>
 			<<set $activeSlave.skill.combat = 1>>
@@ -457,7 +457,7 @@
 		<<set $activeSlave.skill.vaginal = 10>>
 		<<set $activeSlave.skill.oral = 10>>
 		<<set $activeSlave.skill.anal = 10>>
-		<<set $activeSlave.skill.whore = 10>>
+		<<set $activeSlave.skill.whoring = 10>>
 		<<set $activeSlave.skill.entertainment = either(10,10,30)>>
 		<<set $activeSlave.skill.combat = 1>>
 		<<set $activeSlave.sexualFlaw = either("apathetic", "judgemental", "none", "none")>>
@@ -657,7 +657,7 @@
 		<<set $activeSlave.skill.vaginal = 100>>
 		<<set $activeSlave.skill.oral = 100>>
 		<<set $activeSlave.skill.anal = 100>>
-		<<set $activeSlave.skill.whore = 15>>
+		<<set $activeSlave.skill.whoring = 15>>
 		<<set $activeSlave.skill.entertainment = 100>>
 		<<set $activeSlave.skill.combat = 0>>
 		<<set $activeSlave.pubicHStyle = "waxed">>
@@ -741,7 +741,7 @@
 	<<set $activeSlave.skill.vaginal = 100>>
 	<<set $activeSlave.skill.oral = 100>>
 	<<set $activeSlave.skill.anal = 100>>
-	<<set $activeSlave.skill.whore = 15>>
+	<<set $activeSlave.skill.whoring = 15>>
 	<<set $activeSlave.skill.entertainment = 100>>
 	<<set $activeSlave.skill.combat = 0>>
 	<<set $activeSlave.pubicHStyle = "waxed">>
diff --git a/src/uncategorized/rulesAssistantSummary.tw b/src/uncategorized/rulesAssistantSummary.tw
new file mode 100644
index 0000000000000000000000000000000000000000..f37fb8f72aa20ff682297ec5f16be8b0c7f27faf
--- /dev/null
+++ b/src/uncategorized/rulesAssistantSummary.tw
@@ -0,0 +1,21 @@
+:: Rules Assistant Summary [nobr]
+
+<<set $nextButton = "Back", $nextLink = "Rules Assistant", $returnTo = "Rules Assistant">>
+<div class="scroll">
+<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/saChoosesOwnJob.tw b/src/uncategorized/saChoosesOwnJob.tw
index a403c8aff639f7e7aadff057e7035dce92c8b9b4..0e95126bc68e48a2e7b804044dfba7643c3d40e3 100644
--- a/src/uncategorized/saChoosesOwnJob.tw
+++ b/src/uncategorized/saChoosesOwnJob.tw
@@ -445,7 +445,7 @@
 				<<= assignJob($slaves[$i], "rest")>>
 			<</if>>
 		<<else>>
-			<<if ($slaves[$i].skill.whore > $slaves[$i].skill.entertainment)>>
+			<<if ($slaves[$i].skill.whoring > $slaves[$i].skill.entertainment)>>
 				<<if ($universalRulesAssignsSelfFacility == 1) && ($brothel > $brothelSlaves)>>
 					<<set $slaves[$i].choosesOwnAssignmentText += " decides to work in $brothelName, since $he thinks $himself a better whore than a public slut.">>
 					<<= assignJob($slaves[$i], "work in the brothel")>>
@@ -453,7 +453,7 @@
 					<<set $slaves[$i].choosesOwnAssignmentText += " decides to whore, since $he thinks $himself a better whore than a public slut.">>
 					<<= assignJob($slaves[$i], "whore")>>
 				<</if>>
-			<<elseif ($slaves[$i].skill.entertainment > $slaves[$i].skill.whore)>>
+			<<elseif ($slaves[$i].skill.entertainment > $slaves[$i].skill.whoring)>>
 				<<if ($universalRulesAssignsSelfFacility == 1) && ($club > $clubSlaves)>>
 					<<set $slaves[$i].choosesOwnAssignmentText += " decides to be a club $girl, since $he thinks $himself a better public slut than a whore.">>
 					<<= assignJob($slaves[$i], "serve in the club")>>
diff --git a/src/uncategorized/saDiet.tw b/src/uncategorized/saDiet.tw
index 17089ecaf641b4b5418aca10d06f04f8e983bc1e..72d356d150c507fcce21f7b8ddf188f98b9a836c 100644
--- a/src/uncategorized/saDiet.tw
+++ b/src/uncategorized/saDiet.tw
@@ -2,6 +2,7 @@
 
 /* quirk modifiers */
 <<set _rearQuirk = $slaves[$i].geneticQuirks.rearLipedema == 2 ? 2 : 0>>
+<<set _gigantomastiaMod = $slaves[$i].geneticQuirks.gigantomastia == 2 ? ($slaves[$i].geneticQuirks.macromastia == 2 ? 3 : 2) : 1>>
 
 <<if $slaves[$i].fuckdoll == 0>>
 
@@ -117,8 +118,8 @@
 		$He @@.lime;loses weight.@@
 	<</if>>
 	<<set $slaves[$i].weight -= _weightLoss+($feeder*2)>>
-	<<if $slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk >= 200>>
-		<<if (($slaves[$i].geneMods.NCS == 0) && (random(1,_assetLoss) <= 1+$feeder))>>
+	<<if $slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk >= 200 && _gigantomastiaMod != 3>>
+		<<if (($slaves[$i].geneMods.NCS == 0) && (random(1,_assetLoss*_gigantomastiaMod) <= 1+$feeder))>>
 			@@.orange;$His breasts get a little smaller.@@
 			<<set $slaves[$i].boobs -= 50>>
 		<<elseif (($slaves[$i].geneMods.NCS == 1) && (random(-_assetLoss, _assetLoss - 2) <= 1+$feeder))>>
@@ -426,7 +427,7 @@
 			<<set $slaves[$i].muscles -= 2>>
 		<</if>>
 		<<if ((($slaves[$i].geneMods.NCS == 0) && (random(1,100) > 90)) || (($slaves[$i].geneMods.NCS == 1) && (random(1,100) > 45)))>>
-			<<if ((($slaves[$i].geneMods.NCS == 0) && ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk >= 200)) || (($slaves[$i].geneMods.NCS == 1) && ($slaves[$i].boobs > 100)))>>
+			<<if ((($slaves[$i].geneMods.NCS == 0) && ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk >= 200)) || (($slaves[$i].geneMods.NCS == 1) && ($slaves[$i].boobs > 100)) && _gigantomastiaMod != 3)>>
 				<<if ($slaves[$i].geneMods.NCS == 0)>>
 					@@.orange;$His breasts get a little smaller.@@
 					<<set $slaves[$i].boobs -= 50>>
@@ -462,7 +463,7 @@
 			Since $he is rather weak, $his routine slowly tones $his soft muscles.
 			<<set $slaves[$i].muscles++>>
 		<</if>>
-		<<if ((($slaves[$i].geneMods.NCS == 0) && ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk >= 200)) || (($slaves[$i].geneMods.NCS == 1) && ($slaves[$i].boobs > 100)))>>
+		<<if ((($slaves[$i].geneMods.NCS == 0) && ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk >= 200)) || (($slaves[$i].geneMods.NCS == 1) && ($slaves[$i].boobs > 100)) && _gigantomastiaMod != 3)>>
 			<<if ($slaves[$i].geneMods.NCS == 0)>>
 				@@.orange;$His breasts get a little smaller.@@
 				<<set $slaves[$i].boobs -= 50>>
@@ -527,7 +528,7 @@
 			Hormonal changes encourage $his body to @@.lime;grow softer.@@
 			<<set $slaves[$i].weight += 1>>
 		<</if>>
-		<<if (($slaves[$i].geneMods.NCS == 0) && ($slaves[$i].boobs < 500))>>
+		<<if (($slaves[$i].geneMods.NCS == 0) && ($slaves[$i].boobs < 500*_gigantomastiaMod))>>
 			$His breasts @@.lime;grow slightly@@ from the estrogen.
 			<<set $slaves[$i].boobs += 10>>
 		<</if>>
@@ -566,7 +567,7 @@
 			Hormonal changes encourage $his body to @@.lime;grow softer.@@
 			<<set $slaves[$i].weight += 1>>
 		<</if>>
-		<<if (($slaves[$i].geneMods.NCS == 0) && ($slaves[$i].boobs < 600))>>
+		<<if (($slaves[$i].geneMods.NCS == 0) && ($slaves[$i].boobs < 600*_gigantomastiaMod))>>
 			$His breasts @@.lime;grow slightly@@ from the estrogen.
 			<<set $slaves[$i].boobs += 10>>
 		<</if>>
@@ -587,7 +588,7 @@
 			Hormonal changes encourage $his body to @@.lime;grow softer.@@
 			<<set $slaves[$i].weight += 1>>
 		<</if>>
-		<<if (($slaves[$i].geneMods.NCS == 0) && ($slaves[$i].boobs < 400))>>
+		<<if (($slaves[$i].geneMods.NCS == 0) && ($slaves[$i].boobs < 400*_gigantomastiaMod))>>
 			$His breasts @@.lime;grow slightly@@ from the estrogen.
 			<<set $slaves[$i].boobs += 10>>
 		<</if>>
@@ -646,7 +647,7 @@
 			$His balls @@.lime;swell@@ due to the male hormones in $his diet.
 			<<set $slaves[$i].balls += 1>>
 		<</if>>
-		<<if ((($slaves[$i].geneMods.NCS == 0) && ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk > 400)) || (($slaves[$i].geneMods.NCS == 1) && ($slaves[$i].boobs > 20)))>>
+		<<if ((($slaves[$i].geneMods.NCS == 0) && ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk > 400)) || (($slaves[$i].geneMods.NCS == 1) && ($slaves[$i].boobs > 20)) && _gigantomastiaMod != 3)>>
 			$His breasts @@.orange;lose some mass@@ from the lack of estrogen in $his diet.
 			<<set $slaves[$i].boobs -= 10>>
 			<<if ($slaves[$i].geneMods.NCS == 1)>>
@@ -666,7 +667,7 @@
 			Hormonal changes encourage $his body to @@.lime;gain muscle.@@
 			<<set $slaves[$i].muscles += 1>>
 		<</if>>
-		<<if ((($slaves[$i].geneMods.NCS == 0) && ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk > 500)) || (($slaves[$i].geneMods.NCS == 1) && ($slaves[$i].boobs > 20)))>>
+		<<if ((($slaves[$i].geneMods.NCS == 0) && ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk > 500)) || (($slaves[$i].geneMods.NCS == 1) && ($slaves[$i].boobs > 20)) && _gigantomastiaMod != 3)>>
 			$His breasts @@.orange;lose some mass@@ from the lack of estrogen in $his diet.
 			<<set $slaves[$i].boobs -= 10>>
 			<<if ($slaves[$i].geneMods.NCS == 1)>>
@@ -697,7 +698,7 @@
 			$His balls @@.lime;swell@@ due to the male hormones in $his diet.
 			<<set $slaves[$i].balls += 1>>
 		<</if>>
-		<<if (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 300)>>
+		<<if (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 300 && _gigantomastiaMod != 3)>>
 			$His breasts @@.orange;lose some mass@@ to better suit $his body chemistry.
 			<<set $slaves[$i].boobs -= 10>>
 		<</if>>
@@ -725,7 +726,7 @@
 		Hormonal changes encourage $his body to @@.lime;grow softer.@@
 		<<set $slaves[$i].weight += 1>>
 	<</if>>
-		<<if (($slaves[$i].geneMods.NCS == 0) && ($slaves[$i].boobs < 800))>>
+		<<if (($slaves[$i].geneMods.NCS == 0) && ($slaves[$i].boobs < 800*_gigantomastiaMod))>>
 		$His breasts @@.lime;grow slightly@@ to fit $his developing femininity.
 		<<set $slaves[$i].boobs += 10>>
 	<</if>>
@@ -868,7 +869,7 @@
 										<<elseif $slaves[$i].dietCum == 1>>
 											<<if random(1,3) == 3>>
 												$He has trouble keeping $his disgusting food down; $he loses weight.
-												<<if ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk >= 200)>>
+												<<if ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk >= 200*_gigantomastiaMod) && _gigantomastiaMod != 3>>
 													@@.orange;$His breasts get a little smaller.@@
 													<<set $slaves[$i].boobs -= 50>>
 												<<elseif ($slaves[$i].butt > 1) && ($slaves[$i].geneticQuirks.rearLipedema != 2 || ($slaves[$i].butt > 10 && random(1,100) > 80))>>
@@ -973,7 +974,7 @@
 	The ports in Fuckdoll suits allow total dietary control, and $he's barely aware $he's being @@.lime;slimmed down.@@
 	<<set $slaves[$i].weight -= 9>>
 	<<if random(1,2) <= 1>>
-		<<if random(1,2) <= 1>>
+		<<if random(1,2) <= 1 && _gigantomastiaMod  != 3>>
 			@@.orange;$His breasts get a little smaller.@@
 			<<set $slaves[$i].boobs -= 50>>
 			<<if ($slaves[$i].geneMods.NCS == 1)>>
@@ -1020,7 +1021,7 @@
 		<<set $slaves[$i].muscles += 9>>
 	<</if>>
 	<<if random(1,100) > 90>>
-	<<if ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk >= 200)>>
+	<<if ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk >= 200*_gigantomastiaMod && _gigantomastiaMod != 3)>>
 		@@.orange;$His breasts get a little smaller.@@
 		<<set $slaves[$i].boobs -= 50>>
 	<<elseif ($slaves[$i].butt > 1) && ($slaves[$i].geneticQuirks.rearLipedema != 2 || ($slaves[$i].butt > 10 && random(1,100) > 80))>>
@@ -1044,7 +1045,7 @@
 		<<set $slaves[$i].muscles -= 9>>
 	<</if>>
 	<<if random(1,100) > 90>>
-	<<if ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk >= 200)>>
+	<<if ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk >= 200*_gigantomastiaMod && _gigantomastiaMod != 3)>>
 		@@.orange;$His breasts get a little smaller.@@
 		<<set $slaves[$i].boobs -= 50>>
 	<<elseif ($slaves[$i].butt > 1) && ($slaves[$i].geneticQuirks.rearLipedema != 2 || ($slaves[$i].butt > 10 && random(1,100) > 80))>>
@@ -1075,7 +1076,7 @@
 			Hormonal changes encourage $his body to @@.lime;grow softer.@@
 			<<set $slaves[$i].weight += 1>>
 		<</if>>
-		<<if (($slaves[$i].geneMods.NCS == 0) && (($slaves[$i].boobs-$slaves[$i].boobsImplant) < 500))>>
+		<<if (($slaves[$i].geneMods.NCS == 0) && (($slaves[$i].boobs-$slaves[$i].boobsImplant) < 500*_gigantomastiaMod))>>
 			$His breasts @@.lime;grow slightly@@ from the estrogen.
 			<<set $slaves[$i].boobs += 10>>
 		<</if>>
@@ -1100,7 +1101,7 @@
 			Hormonal changes encourage $his body to @@.lime;grow softer.@@
 			<<set $slaves[$i].weight += 1>>
 		<</if>>
-		<<if (($slaves[$i].geneMods.NCS == 0) && (($slaves[$i].boobs-$slaves[$i].boobsImplant) < 600))>>
+		<<if (($slaves[$i].geneMods.NCS == 0) && (($slaves[$i].boobs-$slaves[$i].boobsImplant) < 600*_gigantomastiaMod))>>
 			$His breasts @@.lime;grow slightly@@ from the estrogen.
 			<<set $slaves[$i].boobs += 10>>
 		<</if>>
@@ -1117,7 +1118,7 @@
 			Hormonal changes encourage $his body to @@.lime;grow softer.@@
 			<<set $slaves[$i].weight += 1>>
 		<</if>>
-		<<if (($slaves[$i].geneMods.NCS == 0) && (($slaves[$i].boobs-$slaves[$i].boobsImplant) < 600))>>
+		<<if (($slaves[$i].geneMods.NCS == 0) && (($slaves[$i].boobs-$slaves[$i].boobsImplant) < 600*_gigantomastiaMod))>>
 			$His breasts @@.lime;grow slightly@@ from the estrogen.
 			<<set $slaves[$i].boobs += 10>>
 		<</if>>
@@ -1157,7 +1158,7 @@
 			$His balls @@.lime;swell@@ due to the male hormones in $his diet.
 			<<set $slaves[$i].balls += 1>>
 		<</if>>
-		<<if (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 400)>>
+		<<if (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 400*_gigantomastiaMod && _gigantomastiaMod != 3)>>
 			$His breasts @@.orange;lose some mass@@ from the lack of estrogen in $his diet.
 			<<set $slaves[$i].boobs -= 10>>
 		<</if>>
@@ -1166,7 +1167,7 @@
 			Hormonal changes encourage $his body to @@.lime;gain muscle.@@
 			<<set $slaves[$i].muscles += 1>>
 		<</if>>
-		<<if (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 500)>>
+		<<if (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 500*_gigantomastiaMod && _gigantomastiaMod != 3)>>
 			$His breasts @@.orange;lose some mass@@ from the lack of estrogen in $his diet.
 			<<set $slaves[$i].boobs -= 10>>
 		<</if>>
@@ -1190,7 +1191,7 @@
 			$His balls @@.lime;swell@@ due to the male hormones in $his diet.
 			<<set $slaves[$i].balls += 1>>
 		<</if>>
-		<<if (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 300)>>
+		<<if (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 300*_gigantomastiaMod && _gigantomastiaMod != 3)>>
 			$His breasts @@.orange;lose some mass@@ to better suit $his body chemistry.
 			<<set $slaves[$i].boobs -= 10>>
 		<</if>>
@@ -1212,7 +1213,7 @@
 		Hormonal changes @@.lime;thin $his waist.@@
 		<<set $slaves[$i].waist-->>
 	<</if>>
-	<<if (($slaves[$i].geneMods.NCS == 0) && (($slaves[$i].boobs-$slaves[$i].boobsImplant) < 800))>>
+	<<if (($slaves[$i].geneMods.NCS == 0) && (($slaves[$i].boobs-$slaves[$i].boobsImplant) < 800*_gigantomastiaMod))>>
 		$His breasts @@.lime;grow slightly@@ to fit $his developing femininity.
 		<<set $slaves[$i].boobs += 10>>
 	<</if>>
diff --git a/src/uncategorized/saDrugs.tw b/src/uncategorized/saDrugs.tw
index 4192f96d9cdf21bd53e2c11713c0d1ab1eb57d33..7d6b2e115744aa189c2d258752b19615f5f03ad3 100644
--- a/src/uncategorized/saDrugs.tw
+++ b/src/uncategorized/saDrugs.tw
@@ -31,8 +31,9 @@
 	<</if>>
 
 <<case "hyper breast injections">>
+	<<set _gigantomastiaMod = $slaves[$i].geneticQuirks.gigantomastia == 2 ? ($slaves[$i].geneticQuirks.macromastia == 2 ? 3 : 2) : 1>>
 	<<set $slaves[$i].chem += 2>>
-	<<set _growth = (1+$injectionUpgrade)*3>>
+	<<set _growth = (1+$injectionUpgrade)*3*_gigantomastiaMod>>
 	$He receives @@.lime;direct injections of <<if ($injectionUpgrade != 0)>> advanced<</if>> hyper growth hormones, right into $his breasts;@@
 	<<if ($slaves[$i].diet == "fattening")>>
 		all the food $he's required to consume fuels growth, <<if $slaves[$i].health > -20>>and<<else>>but<</if>>
@@ -126,9 +127,16 @@
 			<<set $slaves[$i].nipples = "inverted">>
 		<</if>>
 	<</if>>
+	<<if $slaves[$i].geneticQuirks.gigantomastia == 3 && random(1,200) < $slaves[$i].hormoneBalance>>
+		<<set $slaves[$i].geneticQuirks.gigantomastia = 2>>
+	<</if>>
+	<<if $slaves[$i].geneticQuirks.macromastia == 3 && random(1,200) < $slaves[$i].hormoneBalance>>
+		<<set $slaves[$i].geneticQuirks.macromastia = 2>>
+	<</if>>
 
 <<case "breast injections" "intensive breast injections">>
-	<<set _growth = 1+$injectionUpgrade>>
+	<<set _gigantomastiaMod = $slaves[$i].geneticQuirks.gigantomastia == 2 ? ($slaves[$i].geneticQuirks.macromastia == 2 ? 3 : 2) : 1>>
+	<<set _growth = 1+$injectionUpgrade*_gigantomastiaMod>>
 	$He receives @@.lime;
 	<<if _intensive>>
 		massive
@@ -245,6 +253,12 @@
 			<</if>>
 		<</if>>
 	<</if>>
+	<<if $slaves[$i].geneticQuirks.gigantomastia == 3 && random(1,300) < $slaves[$i].hormoneBalance>>
+		<<set $slaves[$i].geneticQuirks.gigantomastia = 2>>
+	<</if>>
+	<<if $slaves[$i].geneticQuirks.macromastia == 3 && random(1,300) < $slaves[$i].hormoneBalance>>
+		<<set $slaves[$i].geneticQuirks.macromastia = 2>>
+	<</if>>
 
 <<case "butt injections" "intensive butt injections">>
 	<<set _growth = 1+$injectionUpgrade>>
@@ -294,7 +308,7 @@
 	<</if>>
 	<<if _rearQuirk != 0>>
 		<<set _growth += 3>>
-		<<if $geneticMappingUpgrade == 1>>
+		<<if $geneticMappingUpgrade >= 1>>
 			$His rear lipedema amplifies the drug's effects on $his bottom.
 		<<else>>
 			The drugs seem to have an added effect on $him.
@@ -367,7 +381,7 @@
 	<</if>>
 	<<if _rearQuirk != 0>>
 		<<set _growth += 1>>
-		<<if $geneticMappingUpgrade == 1>>
+		<<if $geneticMappingUpgrade >= 1>>
 			$His rear lipedema massively amplifies the drug's effects.
 		<<else>>
 			The drugs seem to have an added effect on $him.
@@ -1015,35 +1029,51 @@
 	<<set $slaves[$i].lips -= _shrinkage>>
 
 <<case "breast redistributors">>
-	$He receives @@.lime;direct injections of fat redistributors right into $his breasts,@@ causing $his body to begin moving fatty tissue from them to $his core<<if $slaves[$i].geneMods.NCS == 1>>, $his @@.orange;NCS@@ amplifies the effectiveness<</if>>.
-	<<set _factor = 0>>
-	<<if ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) <= 100>>
-		$His natural breast tissue is now so thin that further drug use will fail to shrink it further; @@.yellow;$his drug regimen has been ended.@@
-		<<set $slaves[$i].drugs = "no drugs">>
-	<<elseif ($slaves[$i].weight >= 200)>>
-		$He is now so immensely obese $his health is greatly at risk; @@.yellow;$his drug regimen has been ended.@@
-		<<set $slaves[$i].drugs = "no drugs">>
-	<<elseif ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) >= 20000>>
-		@@.lime;$His breasts shrink painfully,@@ becoming massively smaller while $his @@.orange;waistline swells tremendously.@@
-		<<set _factor = 20>>
-	<<elseif ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) >= 10000>>
-		@@.lime;$His breasts shrink painfully,@@ becoming greatly smaller while $his @@.orange;waistline swells.@@
-		<<set _factor = 10>>
-	<<elseif ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) >= 5000>>
-		@@.lime;$His breasts shrink painfully,@@ becoming smaller while $his @@.orange;waistline swells.@@
-		<<set _factor = 5>>
-	<<elseif ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) >= 1000>>
-		@@.lime;$His breasts shrink painfully,@@ becoming smaller while $his @@.orange;waistline grows.@@
-		<<set _factor = 3>>
-	<<elseif ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 100>>
-		@@.lime;$His breasts shrink painfully,@@ becoming smaller while $his @@.orange;waistline grows slightly.@@
-		<<set _factor = 1>>
-	<</if>>
-	<<set $slaves[$i].weight += _factor>>
-	<<if ($slaves[$i].geneMods.NCS == 1) && (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 200)>>
-		<<set _factor *= 2>>
-	<</if>>
-	<<set $slaves[$i].boobs -= 100*_factor>>
+	<<set _gigantomastiaMod = $slaves[$i].geneticQuirks.gigantomastia == 2 ? ($slaves[$i].geneticQuirks.macromastia == 2 ? 3 : 2) : 1>>
+	$He receives @@.lime;direct injections of fat redistributors right into $his 
+	<<if _gigantomastiaMod != 3>>
+		breasts, causing $his body to begin moving fatty tissue from them to $his core<<if $slaves[$i].geneMods.NCS == 1>>, $his @@.orange;NCS@@ amplifies the effectiveness@@<</if>>.
+		<<set _factor = 0>>
+		<<if ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) <= 100>>
+			$His natural breast tissue is now so thin that further drug use will fail to shrink it further; @@.yellow;$his drug regimen has been ended.@@
+			<<set $slaves[$i].drugs = "no drugs">>
+		<<elseif ($slaves[$i].weight >= 200)>>
+			$He is now so immensely obese $his health is greatly at risk; @@.yellow;$his drug regimen has been ended.@@
+			<<set $slaves[$i].drugs = "no drugs">>
+		<<elseif ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) >= 20000>>
+			@@.lime;$His breasts shrink painfully,@@ becoming massively smaller while $his @@.orange;waistline swells tremendously.@@
+			<<set _factor = 20>>
+		<<elseif ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) >= 10000>>
+			@@.lime;$His breasts shrink painfully,@@ becoming greatly smaller while $his @@.orange;waistline swells.@@
+			<<set _factor = 10>>
+		<<elseif ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) >= 5000>>
+			@@.lime;$His breasts shrink painfully,@@ becoming smaller while $his @@.orange;waistline swells.@@
+			<<set _factor = 5>>
+		<<elseif ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) >= 1000>>
+			@@.lime;$His breasts shrink painfully,@@ becoming smaller while $his @@.orange;waistline grows.@@
+			<<set _factor = 3>>
+		<<elseif ($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 100>>
+			@@.lime;$His breasts shrink painfully,@@ becoming smaller while $his @@.orange;waistline grows slightly.@@
+			<<set _factor = 1>>
+		<</if>>
+		<<set $slaves[$i].weight += _factor>>
+		<<if ($slaves[$i].geneMods.NCS == 1) && (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 200)>>
+			<<set _factor *= 2>>
+		<</if>>
+		<<if _gigantomastiaMod == 2>>
+			<<set _factor = 1>>
+			<<if $geneticMappingUpgrade >= 1>>
+				However, @@.orange;$his gigantomastia inhibits $his breast loss.@@
+			<<else>>
+				However, @@.orange;$his breasts do not shrink proportionately to $his stomach's growth.@@
+			<</if>>
+		<</if>>
+		<<set $slaves[$i].boobs -= 100*_factor>>
+	<<elseif $geneticMappingUpgrade >= 1>>
+		breasts to no avail; $his body refuses to allow $his breasts to shrink, and as such, @@.yellow;$his drug regimen has been ended.@@
+	<<else>>
+		breasts to no avail; @@.yellow;$his drug regimen has been ended.@@
+	<</if>>
 
 <<case "butt redistributors">>
 	<<set _rearQuirk = $slaves[$i].geneticQuirks.rearLipedema == 2 ? 1 : 0>>
@@ -1056,7 +1086,7 @@
 		<<set $slaves[$i].drugs = "no drugs">>
 	<<elseif _rearQuirk == 2>>
 		$His @@.orange;waistline swells slightly,@@ but @@.lime;$his butt barely loses any mass@@
-		<<if $geneticMappingUpgrade == 1>>
+		<<if $geneticMappingUpgrade >= 1>>
 			due to $his rear lipedema putting it right back.
 		<<else>>
 			for an unknown reason.
diff --git a/src/uncategorized/saGetMilked.tw b/src/uncategorized/saGetMilked.tw
index 17ae4ed153662fba6a7e377d795870e6205f826d..d320dd96011c392dfc73f4d997df2596a5b8ff3e 100644
--- a/src/uncategorized/saGetMilked.tw
+++ b/src/uncategorized/saGetMilked.tw
@@ -37,10 +37,27 @@ gets milked this week.
 	<<set $milk = milkAmount($slaves[$i])>>
 
 	$He produces from $his <<print either("boobs", "breasts", "mammaries", "tits", "udders")>>, which have a combined volume of <<print $slaves[$i].boobs*2>> CCs;
+	<<if ($slaves[$i].boobsImplant > 0)>>
+		<<set _implantEffect = $slaves[$i].boobsImplant/$slaves[$i].boobs>>
+	<</if>>
 	<<if ($slaves[$i].lactation == 1)>>
-		$he is lactating naturally and produces a healthy stream of milk.
+		$he is lactating naturally and produces
+		<<if _implantEffect >= .90>>
+			a weak trickle of milk.
+		<<elseif _implantEffect >= .75>>
+			a weak stream of milk.
+		<<else>>
+			a healthy stream of milk.
+		<</if>>
 	<<elseif ($slaves[$i].lactation == 2)>>
-		$he is on lactation drugs and produces a river of milk.
+		$he is on lactation drugs and produces
+		<<if _implantEffect >= .90>>
+			a steady flow of milk.
+		<<elseif _implantEffect >= .75>>
+			strong bursts of milk.
+		<<else>>
+			a river of milk.
+		<</if>>
 		<<if $slaves[$i].lactationAdaptation < 100>>
 			$His udders are forced to adapt to this unnatural productivity.
 			<<set $slaves[$i].lactationAdaptation += 1>>
@@ -61,8 +78,24 @@ gets milked this week.
 		$He's such an unhappy cow that $his mental state has a negative impact on $his production.
 	<</if>>
 
-	<<if ($slaves[$i].boobsImplant > 200)>>
-		However, $his breast implants impede milk production.
+	<<if ($slaves[$i].boobsImplant > 0)>>
+		However, $his 
+		<<if _implantEffect >= .90>>
+			breast implants are ill-suited for
+		<<elseif _implantEffect >= .75>>
+			breasts are almost entirely implant, greatly restricting $his
+		<<elseif _implantEffect >= .60>>
+			breasts are mostly implant, restricting $his
+		<<elseif _implantEffect >= .45>>
+			implants make up a considerable amount of $his breasts and greatly impede
+		<<elseif _implantEffect >= .30>>
+			breast implants take up enough space to impede
+		<<elseif _implantEffect >= .10>>
+			breast implants slightly impede
+		<<else>>
+			breast implants cause a minor decrease in
+		<</if>>
+		milk production<<if _implantEffect >= .90>>, given the lack of actual breast flesh<</if>>.
 	<</if>>
 
 	<<set $hormones = $slaves[$i].hormoneBalance/100>>
diff --git a/src/uncategorized/saHormoneEffects.tw b/src/uncategorized/saHormoneEffects.tw
index b5acc52a0ebf251abe13ea008a38bb185ea9687c..006125be50d54c25df70ea70184f4572794f8439 100644
--- a/src/uncategorized/saHormoneEffects.tw
+++ b/src/uncategorized/saHormoneEffects.tw
@@ -73,6 +73,7 @@
 
 /* quirk modifiers */
 <<set _rearQuirk = $slaves[$i].geneticQuirks.rearLipedema == 2 ? 2 : 0>>
+<<set _gigantomastiaMod = $slaves[$i].geneticQuirks.gigantomastia == 2 ? ($slaves[$i].geneticQuirks.macromastia == 2 ? 3 : 2) : 1>>
 
 <<if $slaves[$i].physicalAge >= 18 || $loliGrow == 1 || $slaves[$i].geneMods.NCS == 1>>
 <<if Math.abs($slaves[$i].hormoneBalance) >= 50>>
@@ -132,7 +133,7 @@
 	<</if>>
 
 	<<if $slaves[$i].geneMods.NCS == 0>>
-		<<if ($slaves[$i].boobs-$slaves[$i].boobsImplant) < 1400>>
+		<<if ($slaves[$i].boobs-$slaves[$i].boobsImplant) < 1400*_gigantomastiaMod>>
 			Hormonal effects cause @@.lime;a small amount of natural breast growth.@@
 			<<set $slaves[$i].boobs += 10+(15*$hormoneUpgradePower)>>
 		<</if>>
@@ -233,7 +234,7 @@
 	<</if>>
 
 	<<if $slaves[$i].geneMods.NCS == 0>>
-		<<if ($slaves[$i].boobs-$slaves[$i].boobsImplant) < 1000>>
+		<<if ($slaves[$i].boobs-$slaves[$i].boobsImplant) < 1000*_gigantomastiaMod>>
 			Hormonal effects cause @@.lime;a small amount of natural breast growth.@@
 			<<set $slaves[$i].boobs += 10+(15*$hormoneUpgradePower)>>
 		<</if>>
@@ -333,7 +334,7 @@
 	<</if>>
 
 	<<if $slaves[$i].geneMods.NCS == 0>>
-		<<if ($slaves[$i].boobs-$slaves[$i].boobsImplant) < 800>>
+		<<if ($slaves[$i].boobs-$slaves[$i].boobsImplant) < 800*_gigantomastiaMod>>
 			Hormonal effects cause @@.lime;a small amount of natural breast growth.@@
 			<<set $slaves[$i].boobs += 10+(15*$hormoneUpgradePower)>>
 		<</if>>
@@ -430,7 +431,7 @@
 	<</if>>
 
 	<<if $slaves[$i].geneMods.NCS == 0>>
-		<<if ($slaves[$i].boobs-$slaves[$i].boobsImplant) < 650>>
+		<<if ($slaves[$i].boobs-$slaves[$i].boobsImplant) < 650*_gigantomastiaMod>>
 			Hormonal effects cause @@.lime;a small amount of natural breast growth.@@
 			<<set $slaves[$i].boobs += 10+(15*$hormoneUpgradePower)>>
 		<</if>>
@@ -499,7 +500,7 @@
 	<</if>>
 
 	<<if $slaves[$i].geneMods.NCS == 0>>
-		<<if ($slaves[$i].boobs-$slaves[$i].boobsImplant) < 500>>
+		<<if ($slaves[$i].boobs-$slaves[$i].boobsImplant) < 500*_gigantomastiaMod && _gigantomastiaMod != 3>>
 			Hormonal effects cause @@.lime;a small amount of natural breast growth.@@
 			<<set $slaves[$i].boobs += 10+(15*$hormoneUpgradePower)>>
 		<</if>>
@@ -570,7 +571,7 @@
 			<</if>>
 			<<set $slaves[$i].butt-->>
 		<</if>>
-		<<if (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 100)>>
+		<<if (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 100*_gigantomastiaMod && _gigantomastiaMod != 3)>>
 			<<if (($slaves[$i].geneMods.NCS == 1) && (random(1,100) > 50) && ($slaves[$i].boobsImplant > 200))>>
 				Hormonal effects work with $his @@.orange;NCS@@ and cause @@.orange;$his tits to shrink a lot.@@
 				<<set $slaves[$i].boobs -= 10+(15*$hormoneUpgradePower)>>
@@ -657,7 +658,7 @@
 			<</if>>
 			<<set $slaves[$i].butt-->>
 		<</if>>
-		<<if (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 300)>>
+		<<if (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 300*_gigantomastiaMod && _gigantomastiaMod != 3)>>
 			<<if (($slaves[$i].geneMods.NCS == 1) && (random(1,100) > 50))>>
 				Hormonal effects work with $his @@.orange;NCS@@ and cause @@.orange;$his tits to shrink a lot.@@
 				<<set $slaves[$i].boobs -= 10+(15*$hormoneUpgradePower)>>
@@ -741,7 +742,7 @@
 			<</if>>
 			<<set $slaves[$i].butt-->>
 		<</if>>
-		<<if (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 400)>>
+		<<if (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 400*_gigantomastiaMod && _gigantomastiaMod != 3)>>
 			<<if (($slaves[$i].geneMods.NCS == 1) && (random(1,100) > 50))>>
 				Hormonal effects work with $his @@.orange;NCS@@ and cause @@.orange;$his tits to shrink a lot.@@
 				<<set $slaves[$i].boobs -= 10+(15*$hormoneUpgradePower)>>
@@ -825,7 +826,7 @@
 			<</if>>
 			<<set $slaves[$i].butt-->>
 		<</if>>
-		<<if (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 600)>>
+		<<if (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 600*_gigantomastiaMod && _gigantomastiaMod != 3)>>
 			<<if (($slaves[$i].geneMods.NCS == 1) && (random(1,100) > 50))>>
 				Hormonal effects work with $his @@.orange;NCS@@ and cause @@.orange;$his tits to shrink a lot.@@
 				<<set $slaves[$i].boobs -= 10+(15*$hormoneUpgradePower)>>
@@ -903,7 +904,7 @@
 			<</if>>
 			<<set $slaves[$i].butt-->>
 		<</if>>
-		<<if (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 800)>>
+		<<if (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk) > 800*_gigantomastiaMod && _gigantomastiaMod != 3)>>
 			<<if (($slaves[$i].geneMods.NCS == 1) && (random(1,100) > 50))>>
 				Hormonal effects work with $his @@.orange;NCS@@ and cause @@.orange;$his tits to shrink a lot.@@
 				<<set $slaves[$i].boobs -= 10+(15*$hormoneUpgradePower)>>
@@ -998,3 +999,4 @@
 <<if Math.abs($slaves[$i].hormones) > 1>>
 	<<set $slaves[$i].chem += 0.5>>
 <</if>>
+
diff --git a/src/uncategorized/saLongTermEffects.tw b/src/uncategorized/saLongTermEffects.tw
index d6ff92ba42cfa873c5c89208d54b31936a8e7a94..104cf5ae12f84e517cda6a954c315ba2c624cce2 100644
--- a/src/uncategorized/saLongTermEffects.tw
+++ b/src/uncategorized/saLongTermEffects.tw
@@ -10,6 +10,7 @@
 <<set _para = 0>>
 <<if $slaves[$i].aphrodisiacs === -1>><<set _oldEnergy = $slaves[$i].energy, _maxEnergyGain = Math.round((75 - _oldEnergy)/9.3)>><</if>>
 <<set _rearQuirk = $slaves[$i].geneticQuirks.rearLipedema == 2 ? 2 : 0>>
+<<set _gigantomastiaMod = $slaves[$i].geneticQuirks.gigantomastia == 2 ? ($slaves[$i].geneticQuirks.macromastia == 2 ? 3 : 2) : 1>>
 
 <<if $slaves[$i].fuckdoll > 0>>
 	<<if $slaves[$i].fuckdoll >= 100>>
@@ -24,9 +25,9 @@
 			<</if>>
 		<<elseif $slaves[$i].fuckdoll <= 15>>
 			This is $his second week as a living sex toy. $His suit continues $his training as a living sex toy, @@.green;forcing $him to accept any treatment@@ $he is subjected to. Though the suit is capable of resisting unacceptable movement to a degree, and it includes integral shackles to secure the toy in any position desired, the Fuckdoll is now severely punished if $he attempts any resistance at all.
-			<<if $slaves[$i].skill.whore > 50>>
+			<<if $slaves[$i].skill.whoring > 50>>
 				$He @@.red;loses $his refined courtesanship,@@ since all $he has to remember now is how to be used.
-				<<set $slaves[$i].skill.whore = 50>>
+				<<set $slaves[$i].skill.whoring = 50>>
 			<</if>>
 		<<elseif $slaves[$i].fuckdoll <= 25>>
 			This week $he @@.green;learns the most basic commands@@ $his suit can pass, those for simple postures. <<if $slaves[$i].amp == 1>>These are very simple, since $he lacks limbs.<<else>>One command directs $him to remain standing, but cock $his hips to offer $his rear hole. Another requires $him to get instantly down on all fours and arch $his back, offering both $his face hole and <<if $slaves[$i].vagina > -1>>lower holes<<else>>rear hole<</if>>.<</if>>
@@ -90,9 +91,9 @@
 				There is @@.red;no entertainment and no elegance@@ for $him anymore. $He cannot even hear the lewd noises $his holes make.
 				<<set $slaves[$i].skill.entertainment = 15>>
 			<</if>>
-			<<if $slaves[$i].skill.whore > 15>>
+			<<if $slaves[$i].skill.whoring > 15>>
 				$He @@.red;cannot remember prostitution@@ at all. $He can barely remember anything but being fucked.
-				<<set $slaves[$i].skill.whore = 15>>
+				<<set $slaves[$i].skill.whoring = 15>>
 			<</if>>
 			<<if $slaves[$i].intelligence+$slaves[$i].intelligenceImplant > 15>>
 				$His @@.red;mind steadily degrades@@ under the stress of this treatment.
@@ -123,7 +124,7 @@
 <<include "SA clothes">>
 
 <<if $slaves[$i].fetish == "mindbroken">>
-	<<set $slaves[$i].fetishStrength = 10, $slaves[$i].attrXY = 50, $slaves[$i].attrXX = 50, $slaves[$i].attrKnown = 1, $slaves[$i].devotion = 40, $slaves[$i].trust = -40, $slaves[$i].skill.vaginal = Math.clamp($slaves[$i].skill.vaginal,0,15), $slaves[$i].skill.oral = Math.clamp($slaves[$i].skill.oral,0,15), $slaves[$i].skill.anal = Math.clamp($slaves[$i].skill.anal,0,15), $slaves[$i].skill.combat = 0, $slaves[$i].skill.whore = 0, $slaves[$i].skill.entertainment = 0, $slaves[$i].intelligence = -75, $slaves[$i].intelligenceImplant = 0, $slaves[$i].sexualFlaw = "none", $slaves[$i].sexualQuirk = "none", $slaves[$i].behavioralFlaw = "none", $slaves[$i].behavioralQuirk = "none">>
+	<<set $slaves[$i].fetishStrength = 10, $slaves[$i].attrXY = 50, $slaves[$i].attrXX = 50, $slaves[$i].attrKnown = 1, $slaves[$i].devotion = 40, $slaves[$i].trust = -40, $slaves[$i].skill.vaginal = Math.clamp($slaves[$i].skill.vaginal,0,15), $slaves[$i].skill.oral = Math.clamp($slaves[$i].skill.oral,0,15), $slaves[$i].skill.anal = Math.clamp($slaves[$i].skill.anal,0,15), $slaves[$i].skill.combat = 0, $slaves[$i].skill.whoring = 0, $slaves[$i].skill.entertainment = 0, $slaves[$i].intelligence = -75, $slaves[$i].intelligenceImplant = 0, $slaves[$i].sexualFlaw = "none", $slaves[$i].sexualQuirk = "none", $slaves[$i].behavioralFlaw = "none", $slaves[$i].behavioralQuirk = "none">>
 <<else>>
 	<<if $slaves[$i].fuckdoll == 0>>
 
@@ -1179,6 +1180,10 @@
 				<<if ["get milked", "work in the dairy"].includes($slaves[$i].assignment) && $slaves[$i].lactation > 0>>
 					$His paraphilia is satisfied by $his work as a cow; $he can feel $his udders swelling with milk.
 					<<set _para = 1>>
+				<<elseif $slaves[$i].geneticQuirks.gigantomastia == 2 && $slaves[$i].geneticQuirks.macromastia == 2 && $geneticMappingUpgrade >= 1>>
+					$His paraphilia is satisfied by the knowledge that $his genetic abnormality will keep $his breasts growing for the rest of $his life.
+				<<elseif $slaves[$i].geneticQuirks.gigantomastia == 2 || $slaves[$i].geneticQuirks.macromastia == 2>>
+					$His paraphilia is satisfied by the knowledge that $his genetic abnormality will keep $his breasts bigger than $his head.
 				<<elseif $slaves[$i].health < 0>>
 					$His paraphilia is ameliorated by $his poor health; $he knows $he can't take expansion right now.
 				<<elseif $slaves[$i].drugs == "intensive breast injections">>
@@ -2838,6 +2843,14 @@
 									Allowing $him to indulge in $his fetish to the point of obsession advances hedonism and @@.green;bolsters your reputation.@@
 									<<= FSChange("Hedonism", 2)>>
 								<</if>>
+							<<elseif $slaves[$i].geneticQuirks.gigantomastia == 2 && $slaves[$i].boobs-$slaves[$i].boobsImplant >= 25000>>
+								$He loves $his tits, and measuring their weekly growth from gigantomastia starts to hold more fascination for $him than mere sex. @@.yellow;$His sexual identity is now dominated by $his swelling boobs.@@
+								<<set $slaves[$i].sexualFlaw = "breast growth">>
+								<<set $slaves[$i].fetishStrength = 100>>
+								<<if $arcologies[0].FSHedonisticDecadence != "unset">>
+									Allowing $him to indulge in $his fetish to the point of obsession advances hedonism and @@.green;bolsters your reputation.@@
+									<<= FSChange("Hedonism", 2)>>
+								<</if>>
 							<<elseif ($slaves[$i].hormoneBalance >= 100) && ($slaves[$i].boobs < 1000)>>
 								$He loves $his tits, and feeling them grow under female hormone treatments starts to hold more fascination for $him than mere sex. @@.yellow;$His sexual identity is now dominated by $his swelling boobs.@@
 								<<set $slaves[$i].sexualFlaw = "breast growth">>
@@ -3303,7 +3316,7 @@
 		<<if (($slaves[$i].butt-$slaves[$i].buttImplant) < 2*_rearQuirk) && (($slaves[$i].geneMods.NCS == 0) || (random(1,100) > 75/_rearQuirkDivider))>>
 			<<set _Effects.push("ButtBigger")>>
 		<</if>>
-		<<if (($slaves[$i].boobs-$slaves[$i].boobsImplant) < 500) && (($slaves[$i].geneMods.NCS == 0) || (random(1,100) > 75))>>
+		<<if (($slaves[$i].boobs-$slaves[$i].boobsImplant) < 500*_gigantomastiaMod) && (($slaves[$i].geneMods.NCS == 0) || (random(1,100) > 75/_gigantomastiaMod))>>
 			<<set _Effects.push("BoobsBigger")>>
 		<</if>>
 		<<if $slaves[$i].face-$slaves[$i].faceImplant <= 10>>
@@ -3592,15 +3605,15 @@
 			<<set _precocious += 0.1>>
 		<<elseif ($slaves[$i].drugs == "steroids")>>
 			<<set _precocious += 0.2>>
-			<<if ($slaves[$i].boobs > 100) && (random(1,100) < 30)>>
-				<<if (($slaves[$i].geneMods.NCS == 1) && ($slaves[$i].boobs > 300) && (random(1,100) > 25))>>
+			<<if ($slaves[$i].boobs > 100) && (random(1,100) < 30/_gigantomastiaMod) && _gigantomastiaMod != 3>>
+				<<if (($slaves[$i].geneMods.NCS == 1) && ($slaves[$i].boobs > 300) && (random(1,100) > 25*_gigantomastiaMod))>>
 					Hormonal effects work with $his @@.orange;NCS@@ and cause @@.orange;$his tits to shrink down.@@
-					<<set $slaves[$i].boobs -= 50>>
+					<<set $slaves[$i].boobs -= 50/_gigantomastiaMod>>
 					<<set $slaves[$i].energy += 1>>
 				<<else>>
 					$He feels an @@.orange;unusual calmness@@ in $his belly and breasts.
 				<</if>>
-				<<set $slaves[$i].boobs -= 50>>
+				<<set $slaves[$i].boobs -= 50/_gigantomastiaMod>>
 			<</if>>
 			<<if ($slaves[$i].geneMods.NCS == 0)>>
 				<<if ($slaves[$i].clit < 2) && (random(1,100) < 10)>>
@@ -3612,7 +3625,7 @@
 			<<set _precocious -= 0.5>>
 			<<if ($slaves[$i].geneMods.NCS == 0)>>
 				$He feels an @@.lime;unusual warm feeling@@ in $his belly and breasts.
-				<<if ($slaves[$i].boobs < 400) && (random(1,100) < 30)>>
+				<<if ($slaves[$i].boobs < 400*_gigantomastiaMod) && (random(1,100) < 30)>>
 					$His breasts feel @@.lime;heavy, hot and sensitive.@@
 					<<set $slaves[$i].boobs += 50>>
 					<<if random(1,100) < 10 && ($slaves[$i].breastMesh != 1)>>
@@ -3709,7 +3722,7 @@
 			<<set _precocious -= 1>>
 			<<if ($slaves[$i].geneMods.NCS == 0)>>
 				$He feels @@.lime;unusual warm feeling@@ in $his breasts.
-				<<if ($slaves[$i].boobs < 400) && (random(1,100) < 30)>>
+				<<if ($slaves[$i].boobs < 400*_gigantomastiaMod) && (random(1,100) < 30) && _gigantomastiaMod != 3>>
 					$His chest feels @@.lime;hot and sensitive.@@
 					<<set $slaves[$i].boobs += 50>>
 					<<if random(1,100) < 10 && ($slaves[$i].breastMesh != 1)>>
@@ -3788,6 +3801,12 @@
 	<<if $slaves[$i].pubertyXX == 0>>
 		<<if $slaves[$i].physicalAge >= $slaves[$i].pubertyAgeXX>>
 			<<set $slaves[$i].pubertyXX = 1>>
+			<<if $slaves[$i].geneticQuirks.gigantomastia == 3 && random(1,100) < $slaves[$i].hormoneBalance>>
+				<<set $slaves[$i].geneticQuirks.gigantomastia = 2>>
+			<</if>>
+			<<if $slaves[$i].geneticQuirks.macromastia == 3 && random(1,100) < $slaves[$i].hormoneBalance>>
+				<<set $slaves[$i].geneticQuirks.macromastia = 2>>
+			<</if>>
 		<</if>>
 	<</if>>
 <</if>>
@@ -3946,6 +3965,12 @@
 	<</if>>
 
 	<<if ($slaves[$i].preg >= $slaves[$i].pregData.normalBirth/4)>>
+		<<if $slaves[$i].geneticQuirks.gigantomastia == 3 && random(1,200) < $slaves[$i].hormoneBalance>>
+			<<set $slaves[$i].geneticQuirks.gigantomastia = 2>>
+		<</if>>
+		<<if $slaves[$i].geneticQuirks.macromastia == 3 && random(1,200) < $slaves[$i].hormoneBalance>>
+			<<set $slaves[$i].geneticQuirks.macromastia = 2>>
+		<</if>>
 		<<if ($slaves[$i].fuckdoll == 0) && ($slaves[$i].fetish != "mindbroken")>>
 			<<if $slaves[$i].career == "a dairy cow" && ($slaves[$i].devotion <= 50)>>
 				$He @@.mediumaquamarine;feels right@@ to be growing heavy with child. To $him, a growing baby means better milk.
@@ -4136,6 +4161,7 @@
 				<<set _boobTarget = 400>>
 			<</if>>
 		<</if>>
+		<<set _boobTarget *= _gigantomastiaMod>>
 		<<if ($slaves[$i].geneMods.NCS == 0)>>
 			<<if ($slaves[$i].pregType >= 30) && ((($slaves[$i].assignment == "be your Concubine" || $slaves[$i].assignment == "serve in the master suite") && $masterSuitePregnancySlaveLuxuries == 1) || ($slaves[$i].diet == "high caloric"))>>
 				<<if ($slaves[$i].weight <= 65)>>
@@ -6130,13 +6156,13 @@
 	<<if $slaves[$i].weight <= 10>>
 		<<if $slaves[$i].diet != "fattening">>
 			<<if $slaves[$i].weight < -95>>
-				<<if $slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk > 750>>
+				<<if $slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk > 750 && _gigantomastiaMod != 3>>
 					$His desperately underweight body @@.orange;burns fat off $his plush boobs.@@
-					<<set $slaves[$i].boobs -= 50>>
+					<<set $slaves[$i].boobs -= 50/_gigantomastiaMod>>
 				<<elseif $slaves[$i].butt-$slaves[$i].buttImplant > 3 && _rearQuirk != 2>>
 					$His desperately underweight body @@.orange;burns fat off $his plush butt.@@
 					<<set $slaves[$i].butt -= 0.4>>
-				<<elseif $slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk > 500>>
+				<<elseif $slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk > 500 && _gigantomastiaMod != 3>>
 					$His desperately underweight body @@.orange;burns some fat off $his healthy boobs.@@
 					<<set $slaves[$i].boobs -= 25>>
 				<<elseif $slaves[$i].butt-$slaves[$i].buttImplant > 2 && _rearQuirk != 2>>
@@ -6144,13 +6170,13 @@
 					<<set $slaves[$i].butt -= 0.2>>
 				<</if>>
 			<<elseif $slaves[$i].weight <= -30>>
-				<<if $slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk > 1000>>
+				<<if $slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk > 1000 && _gigantomastiaMod != 3>>
 					$His underweight body @@.orange;burns fat off $his big boobs.@@
-					<<set $slaves[$i].boobs -= 50>>
+					<<set $slaves[$i].boobs -= 50/_gigantomastiaMod>>
 				<<elseif $slaves[$i].butt-$slaves[$i].buttImplant > 4 && _rearQuirk != 2>>
 					$His underweight body @@.orange;burns fat off $his big butt.@@
 					<<set $slaves[$i].butt -= 0.4>>
-				<<elseif $slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk > 750>>
+				<<elseif $slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk > 750 && _gigantomastiaMod != 3>>
 					$His underweight body @@.orange;burns some fat off $his plush boobs.@@
 					<<set $slaves[$i].boobs -= 25>>
 				<<elseif $slaves[$i].butt-$slaves[$i].buttImplant > 3 && _rearQuirk != 2>>
@@ -6158,13 +6184,13 @@
 					<<set $slaves[$i].butt -= 0.2>>
 				<</if>>
 			<<elseif $slaves[$i].weight < -10>>
-				<<if $slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk > 2000>>
+				<<if $slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk > 2000 && _gigantomastiaMod != 3>>
 					$His skinny body @@.orange;burns fat off $his huge boobs.@@
-					<<set $slaves[$i].boobs -= 50>>
+					<<set $slaves[$i].boobs -= 50/_gigantomastiaMod>>
 				<<elseif $slaves[$i].butt-$slaves[$i].buttImplant > 6 && _rearQuirk != 2>>
 					$His skinny body @@.orange;burns fat off $his huge butt.@@
 					<<set $slaves[$i].butt -= 0.4>>
-				<<elseif $slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk > 1000>>
+				<<elseif $slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk > 1000 && _gigantomastiaMod != 3>>
 					$His skinny body @@.orange;burns some fat off $his big boobs.@@
 					<<set $slaves[$i].boobs -= 25>>
 				<<elseif $slaves[$i].butt-$slaves[$i].buttImplant > 4 && _rearQuirk != 2>>
@@ -6172,13 +6198,13 @@
 					<<set $slaves[$i].butt -= 0.2>>
 				<</if>>
 			<<else>>
-				<<if $slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk > 5000>>
+				<<if $slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk > 5000 && _gigantomastiaMod != 3>>
 					$His thin body @@.orange;burns fat off $his monstrous boobs.@@
-					<<set $slaves[$i].boobs -= 50>>
+					<<set $slaves[$i].boobs -= 50/_gigantomastiaMod>>
 				<<elseif $slaves[$i].butt-$slaves[$i].buttImplant > 8 && _rearQuirk != 2>>
 					$His thin body @@.orange;burns fat off $his monstrous butt.@@
 					<<set $slaves[$i].butt -= 0.4>>
-				<<elseif $slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk > 2000>>
+				<<elseif $slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk > 2000 && _gigantomastiaMod != 3>>
 					$His thin body @@.orange;burns some fat off $his huge boobs.@@
 					<<set $slaves[$i].boobs -= 25>>
 				<<elseif $slaves[$i].butt-$slaves[$i].buttImplant > 6 && _rearQuirk != 2>>
@@ -6589,7 +6615,7 @@
 	**	the slave's accumulated youthening is 6 or higher,
 	**	or by a 50% chance.
 	*/
-	<<if (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk >= 5000) && (random(1,100) < 90))>>
+	<<if (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk >= 5000) && (random(1,100) < 90) && _gigantomastiaMod != 3)>>
 		$His @@.orange;NCS@@ has @@.orange;reduced the size of $his bouncing breasts.@@
 		<<set $slaves[$i].boobs -= Math.round($slaves[$i].boobs * .11), _countNCS++>>
 	<<elseif (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk <= 5000) && (!["cute", "fuckable", "tiny"].includes($slaves[$i].nipples)) && (random(1,100) < 30))>>
@@ -6603,7 +6629,7 @@
 			$His areolae also shrink down to a more normal size<<if ($slaves[$i].areolaeShape != "circle")>>, including the unique $slaves[$i].areolaeShape shapes<</if>>.
 			<<set $slaves[$i].areolae = 1, _countNCS++>>
 		<</if>>
-	<<elseif (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk >= 300) && (($slaves[$i].NCSyouthening >= 6) || (random(1,100) < 50)))>>
+	<<elseif (($slaves[$i].boobs-$slaves[$i].boobsImplant-$slaves[$i].boobsMilk >= 300) && (($slaves[$i].NCSyouthening >= 6) || (random(1,100) < 50)) && _gigantomastiaMod != 3)>>
 		$His @@.orange;NCS@@ has @@.orange;reduced the size of $his tits.@@
 		<<set $slaves[$i].boobs -= Math.round($slaves[$i].boobs * .09), _countNCS++>>
 	<</if>>
@@ -6721,8 +6747,38 @@
 	<</if>>
 <</if>>
 
+/* macromastia random trigger + growth */
+<<if $slaves[$i].geneticQuirks.gigantomastia == 3 && random(70-$slaves[$i].physicalAge,300) < $slaves[$i].hormoneBalance>>
+	<<set $slaves[$i].geneticQuirks.gigantomastia = 2>>
+<</if>>
+<<if $slaves[$i].geneticQuirks.macromastia == 3 && random(70-$slaves[$i].physicalAge,300) < $slaves[$i].hormoneBalance>>
+	<<set $slaves[$i].geneticQuirks.macromastia = 2>>
+<</if>>
+<<if $slaves[$i].geneticQuirks.macromastia == 2 && $slaves[$i].geneticQuirks.gigantomastia == 2>>
+	<<if $slaves[$i].boobs < 100000 && $slaves[$i].weight >= -95>>
+		<<if $geneticMappingUpgrade >= 1>>
+			$His @@.lime;breasts expand @@ due to $his abnormal strain of gigantomastia.
+		<</if>>
+		<<set $slaves[$i].boobs += 30>>
+	<</if>>
+<<elseif $slaves[$i].geneticQuirks.gigantomastia == 2>>
+	<<if $slaves[$i].boobs < 25000 && $slaves[$i].weight >= -95>>
+		<<if $geneticMappingUpgrade >= 1>>
+			$His @@.lime;breasts expand @@ due to $his gigantomastia.
+		<</if>>
+		<<set $slaves[$i].boobs += 20>>
+	<</if>>
+<<elseif $slaves[$i].geneticQuirks.macromastia == 2>>
+	<<if $slaves[$i].boobs < 5000 && $slaves[$i].weight >= -95>>
+		<<if $geneticMappingUpgrade >= 1>>
+			$His @@.lime;breasts expand @@ due to $his macromastia.
+		<</if>>
+		<<set $slaves[$i].boobs += 10>>
+	<</if>>
+<</if>>
+
 <<if $slaves[$i].geneticQuirks.rearLipedema == 2 && $slaves[$i].butt < 20 && $slaves[$i].weight >= -95>>
-	<<if $geneticMappingUpgrade == 1>>
+	<<if $geneticMappingUpgrade >= 1>>
 		$His body @@.lime;continues to lay fat on $his rear@@ due to $his lipedema.
 	<</if>>
 	<<set $slaves[$i].butt += .1>>
@@ -6845,15 +6901,15 @@
 		<<if ($slaves[$i].boobs > 30000+($slaves[$i].muscles*100))>>
 			<<if ($slaves[$i].assignment != "work in the dairy") || ($dairyRestraintsSetting < 2) || $arcologies[0].FSAssetExpansionistResearch == 0>>
 				<<if (($slaves[$i].drugs != "breast injections") && ($slaves[$i].drugs != "intensive breast injections") && ($arcologies[0].FSAssetExpansionistResearch == 0))>>
-					<<if (($slaves[$i].bellyPreg < 300000) && ($slaves[$i].hormoneBalance < 300))>>
-						<<if ($slaves[$i].boobs > 30000+($slaves[$i].muscles*100))>>
+					<<if (($slaves[$i].bellyPreg < 300000) && ($slaves[$i].hormoneBalance < 300) && _gigantomastiaMod != 3)>>
+						<<if ($slaves[$i].boobs < 30000+($slaves[$i].muscles*100))*2>>
 							$His breasts are larger than $his body can possibly sustain without industrial intervention, and they @@.orange;naturally lose mass.@@
 							<<set $slaves[$i].boobs -= 25>>
 						<<else>>
 							$His breasts are far, far beyond what $his body can sustain without industrial intervention, and they @@.orange;naturally lose mass.@@
-							<<set $slaves[$i].boobs -= 50>>
+							<<set $slaves[$i].boobs -= 50/_gigantomastiaMod>>
 						<</if>>
-						<<if (($slaves[$i].geneMods.NCS == 1) && (random(1,100) > 50))>>
+						<<if (($slaves[$i].geneMods.NCS == 1) && (random(1,100) > 50*_gigantomastiaMod))>>
 							This effect is massively compounded by $his @@.orange;NCS.@@
 							<<set $slaves[$i].boobs -= Math.round($slaves[$i].boobs * .1)>>
 						<</if>>
@@ -6861,7 +6917,7 @@
 				<</if>>
 			<</if>>
 		<</if>>
-		<<if ($slaves[$i].boobs > 40000)>>
+		<<if ($slaves[$i].boobs > 40000)>> /* raise me later */
 			$His immense breasts are so big they pin $him to the floor, taking the weight off $his body.
 			<<if $slaves[$i].sexualFlaw == "breast growth">>
 				$He's perfectly fine with dragging them along as a testament to how much $he's managed to grow.
@@ -6912,16 +6968,16 @@
 			<</if>>
 		<</if>>
 	<<elseif $slaves[$i].physicalAge <= 3>>
-		<<if ($slaves[$i].boobs > 5000+($slaves[$i].muscles*10))>>
+		<<if ($slaves[$i].boobs > (_gigantomastiaMod == 2 ? 25000 : 5000)+($slaves[$i].muscles*10))>>
 			<<if ($slaves[$i].assignment != "work in the dairy") || ($dairyRestraintsSetting < 2) || $arcologies[0].FSAssetExpansionistResearch == 0>>
 				<<if ($slaves[$i].drugs != "breast injections" && $slaves[$i].drugs != "intensive breast injections" && $arcologies[0].FSAssetExpansionistResearch == 0)>>
-					<<if $slaves[$i].bellyPreg < 300000 && $slaves[$i].hormoneBalance < 300>>
-						<<if ($slaves[$i].boobs > 5000+($slaves[$i].muscles*10))>>
+					<<if $slaves[$i].bellyPreg < 300000 && $slaves[$i].hormoneBalance < 300 && _gigantomastiaMod != 3>>
+						<<if ($slaves[$i].boobs < (_gigantomastiaMod == 2 ? 25000 : 5000)+($slaves[$i].muscles*10))*2>>
 							$His breasts are larger than $his body can possibly sustain without industrial intervention, and they @@.orange;naturally lose mass.@@
 							<<set $slaves[$i].boobs -= 25>>
 						<<else>>
 							$His breasts are far, far beyond what $his body can sustain without industrial intervention, and they @@.orange;naturally lose mass.@@
-							<<set $slaves[$i].boobs -= 50>>
+							<<set $slaves[$i].boobs -= 50/_gigantomastiaMod>>
 						<</if>>
 						<<if (($slaves[$i].geneMods.NCS == 1) && (random(1,100) > 50))>>
 							This effect is compounded by $his @@.orange;NCS.@@
@@ -6993,16 +7049,16 @@
 			<</if>>
 		<</if>>
 	<<elseif $slaves[$i].physicalAge <= 12>>
-		<<if ($slaves[$i].boobs > 10000+($slaves[$i].muscles*20))>>
+		<<if ($slaves[$i].boobs > (_gigantomastiaMod == 2 ? 25000 : 10000)+($slaves[$i].muscles*20))>>
 			<<if ($slaves[$i].assignment != "work in the dairy") || ($dairyRestraintsSetting < 2) || $arcologies[0].FSAssetExpansionistResearch == 0>>
 				<<if ($slaves[$i].drugs != "breast injections" && $slaves[$i].drugs != "intensive breast injections" && $arcologies[0].FSAssetExpansionistResearch == 0)>>
-					<<if $slaves[$i].bellyPreg < 300000 && $slaves[$i].hormoneBalance < 300>>
-						<<if ($slaves[$i].boobs > 10000+($slaves[$i].muscles*20))>>
+					<<if $slaves[$i].bellyPreg < 300000 && $slaves[$i].hormoneBalance < 300 && _gigantomastiaMod != 3>>
+						<<if ($slaves[$i].boobs > (_gigantomastiaMod == 2 ? 25000 : 10000)+($slaves[$i].muscles*20))>>
 							$His breasts are larger than $his body can possibly sustain without industrial intervention, and they @@.orange;naturally lose mass.@@
 							<<set $slaves[$i].boobs -= 25>>
 						<<else>>
 							$His breasts are far, far beyond what $his body can sustain without industrial intervention, and they @@.orange;naturally lose mass.@@
-							<<set $slaves[$i].boobs -= 50>>
+							<<set $slaves[$i].boobs -= 50/_gigantomastiaMod>>
 						<</if>>
 						<<if (($slaves[$i].geneMods.NCS == 1) && (random(1,100) > 50))>>
 							This effect is compounded by $his @@.orange;NCS.@@
@@ -7074,16 +7130,16 @@
 			<</if>>
 		<</if>>
 	<<else>>
-		<<if ($slaves[$i].boobs > 20000+($slaves[$i].muscles*50))>>
+		<<if ($slaves[$i].boobs > (_gigantomastiaMod == 2 ? 40000 : 20000)+($slaves[$i].muscles*50))>>
 			<<if ($slaves[$i].assignment != "work in the dairy") || ($dairyRestraintsSetting < 2) || $arcologies[0].FSAssetExpansionistResearch == 0>>
 				<<if ($slaves[$i].drugs != "breast injections" && $slaves[$i].drugs != "intensive breast injections" && $arcologies[0].FSAssetExpansionistResearch == 0)>>
-					<<if $slaves[$i].bellyPreg < 300000 && $slaves[$i].hormoneBalance < 300>>
-						<<if ($slaves[$i].boobs > 20000+($slaves[$i].muscles*50))>>
+					<<if $slaves[$i].bellyPreg < 300000 && $slaves[$i].hormoneBalance < 300 && _gigantomastiaMod != 3>>
+						<<if ($slaves[$i].boobs > (_gigantomastiaMod == 2 ? 40000 : 20000)+($slaves[$i].muscles*50))>>
 							$His breasts are larger than $his body can possibly sustain without industrial intervention, and they @@.orange;naturally lose mass.@@
 							<<set $slaves[$i].boobs -= 25>>
 						<<else>>
 							$His breasts are far, far beyond what $his body can sustain without industrial intervention, and they @@.orange;naturally lose mass.@@
-							<<set $slaves[$i].boobs -= 50>>
+							<<set $slaves[$i].boobs -= 50/_gigantomastiaMod>>
 						<</if>>
 						<<if (($slaves[$i].geneMods.NCS == 1) && (random(1,100) > 50))>>
 							This effect is compounded by $his @@.orange;NCS.@@
@@ -7543,7 +7599,7 @@
 	<<elseif ($slaves[$i].boobs < 1600)>>
 		The powerful lactation drugs $he's implanted with @@.lime;slowly swell $his big breasts.@@
 		<<set $slaves[$i].boobs += 50>>
-	<<elseif ($slaves[$i].boobs < 3000)>>
+	<<elseif ($slaves[$i].boobs < 3000*_gigantomastiaMod)>>
 		The powerful lactation drugs $he's implanted with @@.lime;gradually swell $his enormous breasts.@@
 		<<set $slaves[$i].boobs += 25>>
 	<</if>>
diff --git a/src/uncategorized/saRules.tw b/src/uncategorized/saRules.tw
index 6c5798e4d4866feef5fcac4b908e3a133405f188..7474ea9e101fe5e87e2b8127b3249cd4cb2063b8 100644
--- a/src/uncategorized/saRules.tw
+++ b/src/uncategorized/saRules.tw
@@ -17,7 +17,7 @@
 			<<elseif $slaves[$i].energy <= 20>>
 				is frigid and has little interest in getting off, not that $he gets a choice.
 				<<set $slaves[$i].need = 0>>
-			<<elseif $slaves[$i].need < $slaves[$i].energy*0.5>>
+			<<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>>
 				<<if ($slaves[$i].devotion <= 20)>>
 					gets off at work despite $his reluctance, @@.hotpink;habituating $him to being a fuckhole.@@
 					<<set $slaves[$i].devotion += 1>>
@@ -49,7 +49,7 @@
 			<<if $slaves[$i].energy <= 20>>
 				is frigid and has little interest in getting off<<if (_release != "permissive")>>, making the rule restricting $his sexual outlets superfluous<</if>>.
 				<<set $slaves[$i].need = 0>>
-			<<elseif $slaves[$i].need < $slaves[$i].energy*0.5>>
+			<<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>>
 				<<if (_release != "permissive") && (_release != "masturbation") && (_release != "chastity")>>
 					gets off at work, so being forbidden from masturbation doesn't really bother $him.
 					<<set $slaves[$i].need -= 20>>
@@ -203,7 +203,7 @@
 			<<elseif $slaves[$i].energy <= 20>>
 				is frigid and has little interest in getting off, not that $his clients care.
 				<<set $slaves[$i].need = 0>>
-			<<elseif $slaves[$i].need < $slaves[$i].energy*0.5>>
+			<<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>>
 				<<if ($slaves[$i].devotion <= 20)>>
 					gets off at work despite $his reluctance, @@.hotpink;habituating $him to sexual slavery.@@
 					<<set $slaves[$i].devotion += 1>>
@@ -534,7 +534,7 @@
 			<<if $slaves[$i].energy <= 20>>
 				is frigid and has little interest in getting off<<if (_release != "permissive")>>, making the rule restricting $his sexual outlets superfluous<</if>>.
 				<<set $slaves[$i].need = 0>>
-			<<elseif $slaves[$i].need < $slaves[$i].energy*0.5>>
+			<<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>>
 				<<if (_release != "permissive") && (_release != "masturbation") && (_release != "chastity")>>
 					gets off at work, so being forbidden from masturbation doesn't really bother $him.
 					<<set $slaves[$i].need -= 20>>
@@ -696,7 +696,7 @@
 			<<elseif $slaves[$i].energy <= 20>>
 				is frigid and has little interest in getting off, not that $his spectators care.
 				<<set $slaves[$i].need = 0>>
-			<<elseif $slaves[$i].need < $slaves[$i].energy*0.5>>
+			<<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>>
 				<<if ($slaves[$i].devotion <= 20)>>
 					gets off at work despite $his reluctance, @@.hotpink;habituating $him to sexual slavery.@@
 					<<set $slaves[$i].devotion += 1>>
@@ -1000,7 +1000,7 @@
 			<<if $slaves[$i].energy <= 20>>
 				is frigid and has little interest in getting off<<if (_release != "permissive")>>, making the rule restricting $his sexual outlets superfluous<</if>>.
 				<<set $slaves[$i].need = 0>>
-			<<elseif $slaves[$i].need < $slaves[$i].energy*0.5>>
+			<<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>>
 				<<if (_release != "permissive") && (_release != "masturbation") && (_release != "chastity")>>
 					gets off at work, so being forbidden from masturbation doesn't really bother $him.
 					<<set $slaves[$i].need -= 20>>
@@ -1412,7 +1412,7 @@
 			<<if $slaves[$i].energy <= 20>>
 				is frigid and has little interest in getting off<<if (_release != "permissive")>>, making the rule restricting $his sexual outlets superfluous<</if>>.
 				<<set $slaves[$i].need = 0>>
-			<<elseif $slaves[$i].need < $slaves[$i].energy*0.5>>
+			<<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>>
 				gets off at work, so $he doesn't feel the need for release that often.
 				<<set $slaves[$i].need -= 20>>
 			<<else>>
@@ -1539,7 +1539,7 @@
 				<<elseif canDoAnal($slaves[$i]) && $slaves[$i].anus > 0>>
 					<<set $slaves[$i].counter.anal += 7, $analTotal += 7>>
 				<</if>>
-			<<elseif $slaves[$i].need < $slaves[$i].energy*0.5>>
+			<<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>>
 				<<if $Wardeness != 0 && canPenetrate($Wardeness)>>
 					<<run SimpleSlaveFucking($slaves[$i], _wardenFunTimes)>>
 					<<set $slaves[_FLs].counter.penetrative += _wardenFunTimes, $penetrativeTotal += _wardenFunTimes>>
@@ -1665,7 +1665,7 @@
 			<<if $slaves[$i].energy <= 20>>
 				is frigid and has little interest in getting off<<if (_release != "permissive")>>, making the rule restricting $his sexual outlets superfluous<</if>>.
 				<<set $slaves[$i].need = 0>>
-			<<elseif $slaves[$i].need < $slaves[$i].energy*0.5>>
+			<<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>>
 				<<if (_release != "permissive") && (_release != "masturbation") && (_release != "chastity")>>
 					gets off while relieving $his charges, so being forbidden from masturbation doesn't really bother $him.
 					<<set $slaves[$i].need -= 20>>
@@ -2162,7 +2162,7 @@
 			<<if $slaves[$i].energy <= 20>>
 				is frigid and has little interest in getting off<<if (_release != "permissive")>>, making the rule restricting $his sexual outlets superfluous<</if>>.
 				<<set $slaves[$i].need = 0>>
-			<<elseif $slaves[$i].need < $slaves[$i].energy*0.5>>
+			<<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>>
 				<<if (_release != "permissive") && (_release != "masturbation") && (_release != "chastity")>>
 					gets off while relieving $his charges, so being forbidden from masturbation doesn't really bother $him.
 					<<set $slaves[$i].need -= 20>>
@@ -2675,7 +2675,7 @@
 			<<if $slaves[$i].energy <= 20>>
 				is frigid and has little interest in getting off<<if (_release != "permissive")>>, making the rule restricting $his sexual outlets superfluous<</if>>.
 				<<set $slaves[$i].need = 0>>
-			<<elseif $slaves[$i].need < $slaves[$i].energy*0.5>>
+			<<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>>
 				<<if (_release != "permissive") && (_release != "masturbation") && (_release != "chastity")>>
 					gets off with $his students, so being forbidden from masturbation doesn't really bother $him.
 					<<set $slaves[$i].need -= 20>>
@@ -2862,7 +2862,7 @@
 			<<elseif $slaves[$i].energy <= 20>>
 				is frigid and has little interest in getting off, making the rule restricting $his sexual outlets superfluous.
 				<<set $slaves[$i].need = 0>>
-			<<elseif $slaves[$i].need < $slaves[$i].energy*0.5>>
+			<<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>>
 				<<if ($slaves[$i].devotion <= 20)>>
 					gets off during class despite $his reluctance, @@.hotpink;habituating $him to sexual slavery.@@
 					<<set $slaves[$i].devotion += 1>>
@@ -3164,7 +3164,7 @@
 			<<if $slaves[$i].energy <= 20>>
 				is frigid and has little interest in getting off<<if (_release != "permissive")>>, making the rule restricting $his sexual outlets superfluous<</if>>.
 				<<set $slaves[$i].need = 0>>
-			<<elseif $slaves[$i].need < $slaves[$i].energy*0.5>>
+			<<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>>
 				<<if (_release != "permissive") && (_release != "masturbation") && (_release != "chastity")>>
 					gets off while performing $his duties, so being forbidden from masturbation doesn't really bother $him.
 					<<set $slaves[$i].need -= 20>>
@@ -3319,7 +3319,7 @@
 			<<elseif $slaves[$i].energy <= 20>>
 				is frigid and has little interest in getting off.
 				<<set $slaves[$i].need = 0>>
-			<<elseif $slaves[$i].need < $slaves[$i].energy*0.5>>
+			<<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>>
 				<<if ($slaves[$i].devotion <= 20)>>
 					gets off at work despite $his reluctance, @@.hotpink;habituating $him to sexual slavery.@@
 					<<set $slaves[$i].devotion += 1>>
@@ -3655,7 +3655,7 @@
 			<<if $slaves[$i].energy <= 20>>
 				is frigid and has little interest in getting off<<if (_release != "permissive")>>, making the rule restricting $his sexual outlets superfluous<</if>>.
 				<<set $slaves[$i].need = 0>>
-			<<elseif $slaves[$i].need < $slaves[$i].energy*0.5>>
+			<<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>>
 				<<if (_release != "permissive") && (_release != "masturbation") && (_release != "chastity")>>
 					gets off while performing $his duties, so being forbidden from masturbation doesn't really bother $him.
 					<<set $slaves[$i].need -= 20>>
@@ -3821,7 +3821,7 @@
 				<<elseif $slaves[$i].energy <= 20>>
 					is frigid and has little interest in getting off<<if (_release != "permissive")>>, making the rule restricting $his sexual outlets superfluous<</if>>.
 					<<set $slaves[$i].need = 0>>
-				<<elseif $slaves[$i].need < $slaves[$i].energy*0.5>>
+				<<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>>
 					<<if ($slaves[$i].devotion <= 20)>>
 						gets off from being milked despite $his reluctance, @@.hotpink;habituating $him to sexual slavery.@@
 						<<set $slaves[$i].devotion += 1>>
@@ -4200,7 +4200,7 @@
 			<<if $slaves[$i].energy <= 20>>
 				is frigid and has little interest in getting off<<if (_release != "permissive")>>, making the rule restricting $his sexual outlets superfluous<</if>>.
 				<<set $slaves[$i].need = 0>>
-			<<elseif $slaves[$i].need < $slaves[$i].energy*0.5>>
+			<<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>>
 				<<if (_release != "permissive") && (_release != "masturbation") && (_release != "chastity")>>
 					gets off while performing $his duties, so being forbidden from masturbation doesn't really bother $him.
 					<<set $slaves[$i].need -= 20>>
@@ -4354,7 +4354,7 @@
 			<<elseif $slaves[$i].energy <= 20>>
 				is frigid and has little interest in getting off<<if (_release != "permissive")>>, making the rule restricting $his sexual outlets superfluous<</if>>.
 				<<set $slaves[$i].need = 0>>
-			<<elseif $slaves[$i].need < $slaves[$i].energy*0.5>>
+			<<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>>
 				<<if ($slaves[$i].devotion <= 20)>>
 					gets off from working as a farmhand despite $his reluctance, @@.hotpink;habituating $him to sexual slavery.@@
 					<<set $slaves[$i].devotion += 1>>
@@ -4804,7 +4804,7 @@
 			<<elseif $masterSuiteUpgradeLuxury == 2 && $MastSiIDs.length > 3>>
 				never goes unsatisfied with all the action in the fuckpit.
 				<<set $slaves[$i].need -= 80>>
-			<<elseif $slaves[$i].need < $slaves[$i].energy*0.5>>
+			<<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>>
 				<<if ($slaves[$i].devotion <= 20)>>
 					gets off regularly despite $his reluctance, @@.hotpink;habituating $him to sexual slavery.@@
 					<<set $slaves[$i].devotion += 1>>
@@ -4956,7 +4956,7 @@
 			<<elseif $slaves[$i].energy <= 20>>
 				is frigid and has little interest in getting off, though it doesn't stop $HeadGirl.slaveName.
 				<<set $slaves[$i].need = 0>>
-			<<elseif $slaves[$i].need < $slaves[$i].energy*0.5>>
+			<<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>>
 				<<if ($slaves[$i].devotion <= 20)>>
 					gets off with $HeadGirl.slaveName despite $his reluctance, @@.hotpink;habituating $him to sexual slavery.@@
 					<<set $slaves[$i].devotion += 1>>
@@ -5105,7 +5105,7 @@
 			<<elseif $slaves[$i].energy <= 20>>
 				is frigid and has little interest in getting off<<if (_release != "permissive")>>, making the rule restricting $his sexual outlets superfluous<</if>>.
 				<<set $slaves[$i].need = 0>>
-			<<elseif $slaves[$i].need < $slaves[$i].energy*0.5>>
+			<<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>>
 				<<if ($slaves[$i].devotion <= 20)>>
 					gets off at work despite $his reluctance, @@.hotpink;habituating $him to sexual slavery.@@
 					<<set $slaves[$i].devotion += 1>>
diff --git a/src/uncategorized/saTakeClasses.tw b/src/uncategorized/saTakeClasses.tw
index 585271086e37d52712c003e5ee61a240892d57b4..60ff204f23d84994c61c3dee13c592b480b97d4a 100644
--- a/src/uncategorized/saTakeClasses.tw
+++ b/src/uncategorized/saTakeClasses.tw
@@ -163,7 +163,7 @@
 		<<elseif ($slaves[$i].skill.anal <= 10) && ($slaves[$i].anus >= 0)>>
 			Since $he is a novice at taking it up $his butt and not permitted to learn through practice, $he is taught relaxation exercises and other simple anal basics.
 			<<AnalSkillIncrease $slaves[$i]>>
-		<<elseif ($slaves[$i].skill.whore <= 10)>>
+		<<elseif ($slaves[$i].skill.whoring <= 10)>>
 			Since $he has little idea what's involved in selling $his body, $he is taught basic safety practices and other simple prostitution skills.
 			<<WhoreSkillIncrease $slaves[$i]>>
 		<<elseif ($slaves[$i].skill.entertainment <= 10)>>
@@ -173,7 +173,7 @@
 			<<if ($slaves[$i].skill.oral <= 30)>>
 				Having completed the basic sex slave curriculum, $he studies more advanced ways to use $his lips and tongue to please cocks, cunts, and asses.
 				<<OralSkillIncrease $slaves[$i]>>
-			<<elseif ($slaves[$i].skill.whore <= 30)>>
+			<<elseif ($slaves[$i].skill.whoring <= 30)>>
 				Having completed the basic sex slave curriculum, $he studies intermediate prostitution, including how to stay as safe as possible and maximize $his efficiency.
 				<<WhoreSkillIncrease $slaves[$i]>>
 			<<elseif ($slaves[$i].skill.entertainment <= 30)>>
@@ -245,7 +245,7 @@
 	<<if ($slaves[$i].intelligenceImplant >= 15) && ($slaves[$i].assignment == "take classes")>>
 		<<if ($slaves[$i].voice == 0) || ($slaves[$i].accent <= 1) || (($schoolroomUpgradeLanguage == 0) && ($slaves[$i].accent <= 2))>>
 			<<if ($slaves[$i].skill.oral > 30) || (($schoolroomUpgradeSkills == 0) && ($slaves[$i].skill.oral > 10))>>
-				<<if ($slaves[$i].skill.whore > 30) || (($schoolroomUpgradeSkills == 0) && ($slaves[$i].skill.whore > 10))>>
+				<<if ($slaves[$i].skill.whoring > 30) || (($schoolroomUpgradeSkills == 0) && ($slaves[$i].skill.whoring > 10))>>
 					<<if ($slaves[$i].skill.entertainment > 30) || (($schoolroomUpgradeSkills == 0) && ($slaves[$i].skill.entertainment > 10))>>
 						<<if ($slaves[$i].skill.anal > 30) || (($schoolroomUpgradeSkills == 0) && ($slaves[$i].skill.anal > 10))>>
 							<<if ($slaves[$i].skill.vaginal > 30) || (($schoolroomUpgradeSkills == 0) && ($slaves[$i].skill.vaginal > 10)) || ($slaves[$i].vagina < 0)>>
diff --git a/src/uncategorized/saWhore.tw b/src/uncategorized/saWhore.tw
index 901b3cd513b394b7a9dddf0e2ae98b21f92d97cb..f3be3cad23d52913428b9485fd41c086ee93279d 100644
--- a/src/uncategorized/saWhore.tw
+++ b/src/uncategorized/saWhore.tw
@@ -397,22 +397,22 @@ $His appearance attracted $beauty customers (<<print Math.trunc($beauty/7)>> a d
 <<if ($slaves[$i].devotion > 20)>>
 <<elseif !canWalk($slaves[$i])>>
 	Since $he can't walk, $he spends all of $his time in $his own room in the brothel. Customers come in, fuck $him, and leave.
-	<<if ($slaves[$i].skill.whore <= 10)>>
-	<<elseif ($slaves[$i].skill.whore <= 30)>>
+	<<if ($slaves[$i].skill.whoring <= 10)>>
+	<<elseif ($slaves[$i].skill.whoring <= 30)>>
 		As a skilled prostitute, $he gets a little more money out of customers.
-	<<elseif ($slaves[$i].skill.whore <= 60)>>
+	<<elseif ($slaves[$i].skill.whoring <= 60)>>
 		As an expert prostitute, $he gets more money out of customers.
-	<<elseif ($slaves[$i].skill.whore >= 100)>>
+	<<elseif ($slaves[$i].skill.whoring >= 100)>>
 		As a masterful prostitute, $he makes more money.
 	<</if>>
 <</if>>
 <<if ($slaves[$i].amp != 1)>>
-	<<if ($slaves[$i].skill.whore < 100)>>
-		<<set $slaves[$i].skill.whore += 10+Math.floor(($slaves[$i].intelligence+$slaves[$i].intelligenceImplant)/32)>>
+	<<if ($slaves[$i].skill.whoring < 100)>>
+		<<set $slaves[$i].skill.whoring += 10+Math.floor(($slaves[$i].intelligence+$slaves[$i].intelligenceImplant)/32)>>
 		$He @@.green;gains experience as a public slut,@@ and gets better at
-		<<if ($slaves[$i].skill.whore <= 30)>>
+		<<if ($slaves[$i].skill.whoring <= 30)>>
 			basic street smarts.
-		<<elseif ($slaves[$i].skill.whore <= 60)>>
+		<<elseif ($slaves[$i].skill.whoring <= 60)>>
 			steering clients to more lucrative sex acts.
 		<<else>>
 			squeezing johns for every penny.
@@ -467,7 +467,7 @@ $His appearance attracted $beauty customers (<<print Math.trunc($beauty/7)>> a d
 		<</if>>
 	<</if>>
 	<<if ($slaves[$i].amp != 1)>>
-	<<if ($slaves[$i].skill.whore < 100)>>
+	<<if ($slaves[$i].skill.whoring < 100)>>
 		$He gains experience as a prostitute.
 		<<set $skillIncrease = 10+Math.floor(($slaves[$i].intelligence+$slaves[$i].intelligenceImplant)/32)>>
 		<<WhoreSkillIncrease $slaves[$i]>>
@@ -1062,8 +1062,8 @@ $His appearance attracted $beauty customers (<<print Math.trunc($beauty/7)>> a d
 <</if>>
 
 In total, you were paid @@.yellowgreen;<<print cashFormat(Math.trunc($beauty*$FResult))>>@@ for the use of $slaves[$i].slaveName's body this week.
-<<set _cashX = Math.trunc(($beauty*$FResult)*(1+(0.002*$slaves[$i].skill.whore)))>>
-<<set _incomeStats.income += Math.trunc(($beauty*$FResult)*(1+(0.002*$slaves[$i].skill.whore)))>>
+<<set _cashX = Math.trunc(($beauty*$FResult)*(1+(0.002*$slaves[$i].skill.whoring)))>>
+<<set _incomeStats.income += Math.trunc(($beauty*$FResult)*(1+(0.002*$slaves[$i].skill.whoring)))>>
 
 <<if $slaves[$i].assignment == "work in the brothel">>
 	<<run cashX(_cashX, "whoreBrothel", $slaves[$i])>>
diff --git a/src/uncategorized/salon.tw b/src/uncategorized/salon.tw
index be562bf78006634c3c2175e7b8c87c64a44e0998..99641825de8b6877b490f20c1347e220ffdf10d7 100644
--- a/src/uncategorized/salon.tw
+++ b/src/uncategorized/salon.tw
@@ -643,22 +643,22 @@ $His skin is $activeSlave.skin.
 		<<set _needsSpacers = 0>>
 		<<if (skinToneLevel($activeSlave.skin) > 1)>>
 			<<if _needsSpacers == 1>> | <</if>>
-			[[Bleach|Salon][$activeSlave.skin = changeSkinTone($activeSlave.skin, -2),cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+			[[Bleach|Salon][$activeSlave.skin = changeSkinTone($activeSlave.skin, -2), cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 			<<set _needsSpacers = 1>>
 		<</if>>
 		<<if (skinToneLevel($activeSlave.skin) > 8)>>
 			<<if _needsSpacers == 1>> | <</if>>
-			[[Lighten|Salon][$activeSlave.skin = changeSkinTone($activeSlave.skin, -1),cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+			[[Lighten|Salon][$activeSlave.skin = changeSkinTone($activeSlave.skin, -1), cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 			<<set _needsSpacers = 1>>
 		<</if>>
 		<<if (skinToneLevel($activeSlave.skin) < 18)>>
 			<<if _needsSpacers == 1>> | <</if>>
-			[[Darken|Salon][$activeSlave.skin = changeSkinTone($activeSlave.skin, 1),cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+			[[Darken|Salon][$activeSlave.skin = changeSkinTone($activeSlave.skin, 1), cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 			<<set _needsSpacers = 1>>
 		<</if>>
 		<<if (skinToneLevel($activeSlave.skin) < 25)>>
 			<<if _needsSpacers == 1>> | <</if>>
-			[[Blacken|Salon][$activeSlave.skin = changeSkinTone($activeSlave.skin, 2),cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+			[[Blacken|Salon][$activeSlave.skin = changeSkinTone($activeSlave.skin, 2), cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 			<<set _needsSpacers = 1>>
 		<</if>>
 	<</if>>
@@ -670,13 +670,13 @@ $His skin is $activeSlave.skin.
 		<<elseif (skinToneLevel($activeSlave.skin) > 20)>>
 			$His skin is so dark in color that any attempt at natural tanning is not likely to appear on $his skin.
 		<<else>>
-			[["Sun tan " + $his + " skin"|Salon][$activeSlave.skin = "sun tanned",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+			[["Sun tan " + $his + " skin"|Salon][$activeSlave.skin = "sun tanned", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 			<<set _needsSpacers = 1>>
 		<</if>>
 	<</if>>
 	<<if ($activeSlave.skin != "spray tanned")>>
 		<<if _needsSpacers == 1>> | <</if>>
-		[["Spray tan " + $his + " skin"|Salon][$activeSlave.skin = "spray tanned",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		[["Spray tan " + $his + " skin"|Salon][$activeSlave.skin = "spray tanned", cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 	<</if>>
 <</if>>
 
diff --git a/src/uncategorized/schoolroom.tw b/src/uncategorized/schoolroom.tw
index aaf4a616a133d544b938fd9b930176e9637a76c7..0e5804136ef95699c49b6252bc64248b04d3a29f 100644
--- a/src/uncategorized/schoolroom.tw
+++ b/src/uncategorized/schoolroom.tw
@@ -89,7 +89,7 @@ $schoolroomNameCaps is well-equipped, with wallscreens to display lessons. These
 <</if>>
 
 <<set _Tmult0 = Math.trunc($schoolroom*1000*$upgradeMultiplierArcology)>>
-<br>$schoolroomNameCaps has room to house $schoolroom slaves while they learn. Currently $schoolroomSlaves <<if $schoolroomSlaves == 1>>is<<else>>are<</if>> learning.
+<br>$schoolroomNameCaps has room to house $schoolroom slaves while they learn. There <<if $schoolroomSlaves == 1>>is<<else>>are<</if>> currently $schoolroomSlaves slave<<if $schoolroomSlaves != 1>>s<</if>> learning in $schoolroomName.
 [[Expand the schoolroom|Schoolroom][cashX(forceNeg(_Tmult0), "capEx"), $schoolroom += 5, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>>//
 
 <br>
diff --git a/src/uncategorized/schoolroomReport.tw b/src/uncategorized/schoolroomReport.tw
index 39912e08d1cd98e873a902efef106d8321cd085a..88a8b99f07d76bee09f62a30e726a3d63c272e48 100644
--- a/src/uncategorized/schoolroomReport.tw
+++ b/src/uncategorized/schoolroomReport.tw
@@ -169,7 +169,7 @@
 		<<if ($slaves[$i].intelligenceImplant >= 30)>>
 		<<if ($slaves[$i].voice == 0) || ($slaves[$i].accent <= 1) || (($schoolroomUpgradeLanguage == 0) && ($slaves[$i].accent <= 2))>>
 		<<if ($slaves[$i].skill.oral > 30) || (($schoolroomUpgradeSkills == 0) && ($slaves[$i].skill.oral > 10))>>
-		<<if ($slaves[$i].skill.whore > 30) || (($schoolroomUpgradeSkills == 0) && ($slaves[$i].skill.whore > 10))>>
+		<<if ($slaves[$i].skill.whoring > 30) || (($schoolroomUpgradeSkills == 0) && ($slaves[$i].skill.whoring > 10))>>
 		<<if ($slaves[$i].skill.entertainment > 30) || (($schoolroomUpgradeSkills == 0) && ($slaves[$i].skill.entertainment > 10))>>
 		<<if ($slaves[$i].skill.anal > 30) || (($schoolroomUpgradeSkills == 0) && ($slaves[$i].skill.anal > 10))>>
 		<<if ($slaves[$i].skill.vaginal > 30) || (($schoolroomUpgradeSkills == 0) && ($slaves[$i].skill.vaginal > 10)) || ($slaves[$i].vagina < 0)>>
diff --git a/src/uncategorized/seCoursing.tw b/src/uncategorized/seCoursing.tw
index e616fb971b9e8b76fb897aca199b5ff359914ad1..8fbf50998c2cf91d1b2d4883d4fe6d771feba819 100644
--- a/src/uncategorized/seCoursing.tw
+++ b/src/uncategorized/seCoursing.tw
@@ -111,7 +111,7 @@ You lead your lurcher $Lurcher.slaveName out on a leash, naked just like the har
 	<<set $activeSlave.skill.vaginal = 0>>
 	<<set $activeSlave.skill.oral = 0>>
 	<<set $activeSlave.skill.anal = 0>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.weight = random(-50,50)>>
 <<elseif $origin == "heavily pregnant">>
 	<<set $activeSlaveOneTimeMinAge = $fertilityAge>>
@@ -129,7 +129,7 @@ You lead your lurcher $Lurcher.slaveName out on a leash, naked just like the har
 	<<set $activeSlave.skill.vaginal = 0>>
 	<<set $activeSlave.skill.oral = 0>>
 	<<set $activeSlave.skill.anal = 0>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.weight = random(-20,100)>>
 	<<set $activeSlave.career = setup.youngCareers.random()>>
 <<elseif $origin == "housewife">>
@@ -151,7 +151,7 @@ You lead your lurcher $Lurcher.slaveName out on a leash, naked just like the har
 	<<set $activeSlave.skill.vaginal = 35>>
 	<<set $activeSlave.skill.oral = 100>>
 	<<set $activeSlave.skill.anal = 15>>
-	<<set $activeSlave.skill.whore = 35>>
+	<<set $activeSlave.skill.whoring = 35>>
 	<<set $activeSlave.career = either("a housewife", "a trophy wife")>>
 	<<set $activeSlave.weight = random(-50,100)>>
 <<elseif $origin == "disobedient young">>
@@ -166,7 +166,7 @@ You lead your lurcher $Lurcher.slaveName out on a leash, naked just like the har
 	<<set $activeSlave.skill.vaginal = 15>>
 	<<set $activeSlave.skill.oral = 15>>
 	<<set $activeSlave.skill.anal = 15>>
-	<<set $activeSlave.skill.whore = 15>>
+	<<set $activeSlave.skill.whoring = 15>>
 	<<set $activeSlave.sexualFlaw = either("hates anal", "hates oral", "hates penetration", "idealistic")>>
 	<<set $activeSlave.behavioralFlaw = either("arrogant", "bitchy", "hates men")>>
 	<<set $activeSlave.energy = 10>>
@@ -183,7 +183,7 @@ You lead your lurcher $Lurcher.slaveName out on a leash, naked just like the har
 	<<set $activeSlave.balls = random(2,4)>>
 	<<set $activeSlave.skill.oral = 0>>
 	<<set $activeSlave.skill.anal = 0>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.sexualFlaw = either("hates oral", "hates anal", "hates penetration")>>
 	<<set $activeSlave.behavioralFlaw = either("arrogant", "bitchy", "hates men")>>
 	<<set $activeSlave.attrXY = 0>>
@@ -202,7 +202,7 @@ You lead your lurcher $Lurcher.slaveName out on a leash, naked just like the har
 	<<set $activeSlave.dick = random(3,5)>>
 	<<set $activeSlave.skill.oral = 0>>
 	<<set $activeSlave.skill.anal = 0>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.weight = random(-50,100)>>
 <<elseif $origin == "feminized">>
 	<<set $activeSlaveOneTimeMaxAge = 25>>
@@ -220,7 +220,7 @@ You lead your lurcher $Lurcher.slaveName out on a leash, naked just like the har
 	<<set $activeSlave.dick = random(1,2)>>
 	<<set $activeSlave.skill.oral = 15>>
 	<<set $activeSlave.skill.anal = 35>>
-	<<set $activeSlave.skill.whore = 15>>
+	<<set $activeSlave.skill.whoring = 15>>
 	<<set $activeSlave.attrXY = 100>>
 	<<set $activeSlave.attrXX = 0>>
 	<<set $activeSlave.weight = random(-100,200)>>
diff --git a/src/uncategorized/seCustomSlaveDelivery.tw b/src/uncategorized/seCustomSlaveDelivery.tw
index e5f233517eab1e5f55493da0355365e3b4fa835c..f28dc65bc23e5e4756d95d6d02bd08ba140cc708 100644
--- a/src/uncategorized/seCustomSlaveDelivery.tw
+++ b/src/uncategorized/seCustomSlaveDelivery.tw
@@ -188,9 +188,9 @@
 <<set $activeSlave.butt = $customSlave.butt>>
 <<set $activeSlave.skill.anal = $customSlave.skills>>
 <<set $activeSlave.skill.oral = $customSlave.skills>>
-<<set $activeSlave.skill.entertainment = $customSlave.skill.whores>>
-<<set $activeSlave.skill.whore = $customSlave.skill.whores>>
-<<set $activeSlave.skill.combat = $customSlave.skill.combats>>
+<<set $activeSlave.skill.entertainment = $customSlave.skills>>
+<<set $activeSlave.skill.whoring = $customSlave.skill.whore>>
+<<set $activeSlave.skill.combat = $customSlave.skill.combat>>
 <<set $activeSlave.eyes = $customSlave.eyes>>
 <<set $activeSlave.hears = $customSlave.hears>>
 <<set $activeSlave.smells = $customSlave.smells>>
diff --git a/src/uncategorized/seRaiding.tw b/src/uncategorized/seRaiding.tw
index 7a4f15f0986b05aaa510365d77e38931403268be..45bb7c7254158216676a1a1006388fc420d8055e 100644
--- a/src/uncategorized/seRaiding.tw
+++ b/src/uncategorized/seRaiding.tw
@@ -101,7 +101,7 @@ target
 	<<set $activeSlave.skill.vaginal = 35>>
 	<<set $activeSlave.skill.oral = 35>>
 	<<set $activeSlave.skill.anal = 15>>
-	<<set $activeSlave.skill.whore = 35>>
+	<<set $activeSlave.skill.whoring = 35>>
 	<<set $activeSlave.teeth = "normal">>
 	<<set $activeSlave.weight = random(-50,130)>>
 	<<set $activeSlave.career = either("a housewife", "a trophy wife")>>
@@ -116,7 +116,7 @@ target
 	<<set $activeSlave.vagina = 1>>
 	<<set $activeSlave.skill.oral = 35>>
 	<<set $activeSlave.skill.anal = 15>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.entertainment = 10>>
 	<<set $activeSlave.intelligence = random(70,90)>>
 	<<set $activeSlave.intelligenceImplant = 30>>
@@ -147,7 +147,7 @@ target
 	<<set $activeSlave.skill.vaginal = 0>>
 	<<set $activeSlave.skill.anal = 0>>
 	<<set $activeSlave.skill.oral = 0>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.entertainment = 0>>
 	<<set $activeSlave.intelligence = random(0,60)>>
 	<<set $activeSlave.intelligenceImplant = 15>>
@@ -176,7 +176,7 @@ target
 	<<set $activeSlave.vagina = 1>>
 	<<set $activeSlave.skill.oral = 35>>
 	<<set $activeSlave.skill.anal = 15>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.combat = 1>>
 	<<set $activeSlave.skill.entertainment = 10>>
 	<<set $activeSlave.intelligence = random(20,60)>>
@@ -195,7 +195,7 @@ target
 	<<set $activeSlave.faceImplant += 20>>
 	<<set $activeSlave.skill.anal = 0>>
 	<<set $activeSlave.skill.oral = 0>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.combat = 1>>
 	<<set $activeSlave.hStyle = either("very short", "short")>>
 	<<set $activeSlave.boobs = 150>>
@@ -224,7 +224,7 @@ target
 	<<set $activeSlave.vagina = 1>>
 	<<set $activeSlave.skill.oral = 35>>
 	<<set $activeSlave.skill.anal = 15>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.combat = 1>>
 	<<set $activeSlave.skill.entertainment = 10>>
 	<<set $activeSlave.intelligenceImplant = 15>>
@@ -254,7 +254,7 @@ target
 	<<set $activeSlave.vagina = 1>>
 	<<set $activeSlave.skill.oral = 35>>
 	<<set $activeSlave.skill.anal = 15>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.entertainment = 10>>
 	<<set $activeSlave.intelligence = random(60,90)>>
 	<<set $activeSlave.intelligenceImplant = 30>>
@@ -286,7 +286,7 @@ target
 	<<set $activeSlave.skill.vaginal = 0>>
 	<<set $activeSlave.skill.oral = 15>>
 	<<set $activeSlave.skill.anal = 0>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.entertainment = 0>>
 	<<set $activeSlave.behavioralFlaw = "devout">>
 	<<set $activeSlave.sexualFlaw = "repressed">>
@@ -303,7 +303,7 @@ target
 	<<set $activeSlave.skill.vaginal = 0>>
 	<<set $activeSlave.skill.anal = 0>>
 	<<set $activeSlave.skill.oral = 0>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.entertainment = 35>>
 	<<set $activeSlave.behavioralFlaw = "liberated">>
 	<<set $activeSlave.sexualFlaw = "idealistic">>
@@ -339,7 +339,7 @@ target
 	<<set $activeSlave.skill.vaginal = 35>>
 	<<set $activeSlave.skill.oral = 35>>
 	<<set $activeSlave.skill.anal = 15>>
-	<<set $activeSlave.skill.whore = 35>>
+	<<set $activeSlave.skill.whoring = 35>>
 	<<set $activeSlave.skill.entertainment = 35>>
 	<<set $activeSlave.career = "a local news anchor">>
 	<<set $activeSlave.weight = random(-40,40)>>
@@ -356,7 +356,7 @@ target
 	<<set $activeSlave.skill.vaginal = 0>>
 	<<set $activeSlave.skill.anal = 0>>
 	<<set $activeSlave.skill.oral = 0>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.entertainment = 50>>
 	<<if $activeSlave.physicalAge >= 12>>
 		<<set $activeSlave.teeth = "normal">>
@@ -377,7 +377,7 @@ target
 	<<set $activeSlave.vagina = 1>>
 	<<set $activeSlave.skill.oral = 35>>
 	<<set $activeSlave.skill.anal = 15>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.combat = 1>>
 	<<set $activeSlave.skill.entertainment = 10>>
 	<<set $activeSlave.intelligenceImplant = 15>>
@@ -408,7 +408,7 @@ target
 	<<set $activeSlave.skill.vaginal = 0>>
 	<<set $activeSlave.skill.anal = 0>>
 	<<set $activeSlave.skill.oral = 0>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.entertainment = 50>>
 	<<if $activeSlave.physicalAge >= 12>>
 		<<set $activeSlave.teeth = "normal">>
@@ -442,7 +442,7 @@ target
 	<<set $activeSlave.vagina = 1>>
 	<<set $activeSlave.skill.oral = 35>>
 	<<set $activeSlave.skill.anal = 15>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.entertainment = 10>>
 	<<set $activeSlave.intelligence = random(60,90)>>
 	<<set $activeSlave.intelligenceImplant = 30>>
@@ -470,7 +470,7 @@ target
 	<<set $activeSlave.vagina = 0>>
 	<<set $activeSlave.skill.oral = 35>>
 	<<set $activeSlave.skill.anal = 15>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.entertainment = 10>>
 	<<set $activeSlave.weight = random(-100,60)>>
 <<case "procuress">>
@@ -484,7 +484,7 @@ target
 	<<set $activeSlave.vagina = 1>>
 	<<set $activeSlave.skill.oral = 35>>
 	<<set $activeSlave.skill.anal = 15>>
-	<<set $activeSlave.skill.whore = 25>>
+	<<set $activeSlave.skill.whoring = 25>>
 	<<set $activeSlave.skill.entertainment = 25>>
 	<<set $activeSlave.intelligence = random(51,80)>>
 	<<set $activeSlave.weight = random(-10,120)>>
@@ -501,7 +501,7 @@ target
 	<<set $activeSlave.vagina = 1>>
 	<<set $activeSlave.skill.oral = 35>>
 	<<set $activeSlave.skill.anal = 15>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.entertainment = 10>>
 	<<set $activeSlave.intelligence = random(51,80)>>
 	<<set $activeSlave.intelligenceImplant = 15>>
@@ -529,7 +529,7 @@ target
 	<<set $activeSlave.vagina = 1>>
 	<<set $activeSlave.skill.oral = 35>>
 	<<set $activeSlave.skill.anal = 15>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.entertainment = 10>>
 	<<set $activeSlave.intelligence = random(70,90)>>
 	<<set $activeSlave.intelligenceImplant = 30>>
@@ -546,7 +546,7 @@ target
 	<<set $activeSlave.vagina = 1>>
 	<<set $activeSlave.skill.oral = 35>>
 	<<set $activeSlave.skill.anal = 15>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.entertainment = 20>>
 	<<set $activeSlave.intelligence = random(20,50)>>
 	<<set $activeSlave.intelligenceImplant = 15>>
@@ -567,7 +567,7 @@ target
 <<setLocalPronouns $activeSlave>>
 <<switch $origin>>
 <<case "housewife">>
-	is an idyllic mansion in the countryside of an old world nation. It's owner is a businessman of some notoriety, but is often away from his expansive estate. A number of servants and maids are in residence, but the primary resident of the mansion is his wife. From the sound of things, $he is not a young $woman but attractive enough in a fake sort of way.
+	is an idyllic mansion in the countryside of an old world nation. Its owner is a businessman of some notoriety, but is often away from his expansive estate. A number of servants and maids are in residence, but the primary resident of the mansion is his wife. From the sound of things, $he is not a young $woman but attractive enough in a fake sort of way.
 <<case "university student">>
 	is the department offices of a still operational old world university. The University prides itself on a diverse and capable faculty, often touting its wealth of female professors as a symbol of its progressive agenda. Though they are unlikely to be young, these professors will be educated and quite intelligent. The head of the department is no exception, a $woman of considerable academic credentials.
 <<case "university student">>
diff --git a/src/uncategorized/seRecruiterSuccess.tw b/src/uncategorized/seRecruiterSuccess.tw
index 34eaa4daa258cea23de5a0cf189e3f5c00b790de..e3c909ecd22b970dfd708f2aa73e82029ba3b23b 100644
--- a/src/uncategorized/seRecruiterSuccess.tw
+++ b/src/uncategorized/seRecruiterSuccess.tw
@@ -181,7 +181,7 @@
 <</if>>
 <<set $activeSlave.skill.oral = random(15,40)>>
 <<set $activeSlave.skill.anal = random(15,40)>>
-<<set $activeSlave.skill.whore = random(15,40)>>
+<<set $activeSlave.skill.whoring = random(15,40)>>
 <<set $activeSlave.boobsImplant = random(0,3)*200>>
 <<set $activeSlave.boobs += $activeSlave.boobsImplant>>
 <<set $activeSlave.buttImplant = random(0,2)>>
diff --git a/src/uncategorized/sellSlave.tw b/src/uncategorized/sellSlave.tw
index c852255003c4c5b95c2a13ce11bc028793afbb15..597b13e68270c6ff65a5102be57f0b77e0937ecc 100644
--- a/src/uncategorized/sellSlave.tw
+++ b/src/uncategorized/sellSlave.tw
@@ -1258,7 +1258,7 @@ __Bids Received__
 <<if $activeSlave.skill.vaginal <= 10>>
 	<<if $activeSlave.skill.anal <= 10>>
 		<<if $activeSlave.skill.oral <= 10>>
-			<<if $activeSlave.skill.whore <= 10>>
+			<<if $activeSlave.skill.whoring <= 10>>
 				<<if $activeSlave.skill.entertainment <= 10>>
 					<<if random(1,100) > 80>>
 						<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.15)/500))>>'' from a prominent citizen who's a notoriously inexperienced lover; it's painfully obvious that he prefers inexperienced slaves as they make him feel less insecure.
diff --git a/src/uncategorized/servantsQuarters.tw b/src/uncategorized/servantsQuarters.tw
index b4a778b748ab58b7088399eaee5279b240480cd2..879198bd2f3271393da4ca480ed601f30e6406c8 100644
--- a/src/uncategorized/servantsQuarters.tw
+++ b/src/uncategorized/servantsQuarters.tw
@@ -87,7 +87,7 @@ $servantsQuartersNameCaps
 <</if>>
 
 <<set _Tmult0 = Math.trunc($servantsQuarters*1000*$upgradeMultiplierArcology)>>
-<br>$servantsQuartersNameCaps has room to keep $servantsQuarters slaves while they serve. Currently $servantsQuartersSlaves <<if $servantsQuartersSlaves == 1>>is<<else>>are<</if>> serving.
+<br>$servantsQuartersNameCaps has room to keep $servantsQuarters slaves while they serve. There <<if $servantsQuartersSlaves == 1>>is<<else>>are<</if>> currently $servantsQuartersSlaves slaves<<if $servantsQuartersSlaves != 1>>s<</if>> serving in $servantsQuartersName.
 [[Expand the Servants' Quarters|Servants' Quarters][cashX(forceNeg(_Tmult0), "capEx"), $servantsQuarters += 5, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>>//
 
 <br>
diff --git a/src/uncategorized/slaveAssignmentsReport.tw b/src/uncategorized/slaveAssignmentsReport.tw
index 8fc88f3beb3aca507e09792471e1803fc433cd77..37d26f4d3fdd06d76ba46737325bd30a806162d3 100644
--- a/src/uncategorized/slaveAssignmentsReport.tw
+++ b/src/uncategorized/slaveAssignmentsReport.tw
@@ -163,9 +163,9 @@ $NPCMarketShareLC = Math.trunc(($NPCSexSupply.lowerClass * 1000) / ($NPCSexSuppl
 
 <<for $i = 0; $i < _SL; $i++>>
 
-<<if ndef $slaves[$i].skill.whore>>
+<<if ndef $slaves[$i].skill.whoring>>
 	@@.yellow;Reset bad whore skill for $slaves[$i].slaveName.@@ Report this as a bug if it reoccurs.<br>
-	<<set $slaves[$i].skill.whore = 0>>
+	<<set $slaves[$i].skill.whoring = 0>>
 <</if>>
 <<if ndef $slaves[$i].skill.entertainment>>
 	@@.yellow;Reset bad entertain skill for $slaves[$i].slaveName.@@ Report this as a bug if it reoccurs.<br>
@@ -571,6 +571,7 @@ $NPCMarketShareLC = Math.trunc(($NPCSexSupply.lowerClass * 1000) / ($NPCSexSuppl
 
 /* end of preg speed and advance*/
 
+/* set up sexual need */
 <<if $slaves[$i].devotion >= -50>>
 	<<if $slaves[$i].energy > 20>>
 		<<if $slaves[$i].physicalAge < $slaves[$i].pubertyAgeXY && $slaves[$i].genes == "XY" && $slaves[$i].energy <= 80>>
@@ -591,6 +592,15 @@ $NPCMarketShareLC = Math.trunc(($NPCSexSupply.lowerClass * 1000) / ($NPCSexSuppl
 		<<if $slaves[$i].diet == "fertility">>
 			<<set $slaves[$i].need += 10>>
 		<</if>>
+		<<if $slaves[$i].aphrodisiacs == -1>>
+			<<set $slaves[$i].need = ($slaves[$i].need*0.5)>>
+		<<elseif $slaves[$i].aphrodisiacs == 1>>
+			<<set $slaves[$i].need = ($slaves[$i].need*1.5)>>
+		<<elseif $slaves[$i].aphrodisiacs == 2>>
+			<<set $slaves[$i].need = ($slaves[$i].need*2)>>
+		<</if>>
+		<<set $slaves[$i].need = Math.round($slaves[$i].need)>>
+		<<set $slaves[$i].needCap = $slaves[$i].need>>
 	<</if>>
 <</if>>
 
@@ -683,7 +693,7 @@ $NPCMarketShareLC = Math.trunc(($NPCSexSupply.lowerClass * 1000) / ($NPCSexSuppl
 				<<set _HGPossibleSlaves[5].push({ID: _Slave.ID, training: "fuck skill"})>>
 			<<elseif (_Slave.skill.anal < $HeadGirl.skill.anal) && (_Slave.anus > 0) && (canDoAnal(_Slave))>>
 				<<set _HGPossibleSlaves[5].push({ID: _Slave.ID, training: "anal skill"})>>
-			<<elseif (_Slave.skill.whore < $HeadGirl.skill.whore)>>
+			<<elseif (_Slave.skill.whoring < $HeadGirl.skill.whoring)>>
 				<<set _HGPossibleSlaves[5].push({ID: _Slave.ID, training: "whore skill"})>>
 			<<elseif (_Slave.skill.entertainment < $HeadGirl.skill.entertainment) && (_Slave.amp != 1)>>
 				<<set _HGPossibleSlaves[5].push({ID: _Slave.ID, training: "entertain skill"})>>
diff --git a/src/uncategorized/slaveInteract.tw b/src/uncategorized/slaveInteract.tw
index 5acbd606a9c197a31e9ad99287573dd8f6603652..c0aa029f59dd53df7cd270dff250f157bec445ad 100644
--- a/src/uncategorized/slaveInteract.tw
+++ b/src/uncategorized/slaveInteract.tw
@@ -349,11 +349,9 @@
 	<<set _ML = $marrying.length>>
 	<<if (($MixedMarriage == 1 || $cheatMode == 1) && $activeSlave.relationship != 5 && $activeSlave.relationship != -3)>>
 		<<set _eligible = 1>>
-		<<for _m = 0; _m < _ML; _m++>>
-			<<if $marrying[_m] == $activeSlave.ID>>
-				<<set _eligible = 0>>
-			<</if>>
-		<</for>>
+		<<if $marrying.includes($activeSlave.ID)>>
+			<<set _eligible = 0>>
+		<</if>>
 		<<if _eligible != 0>>
 			<<if (_ML < 2)>>
 				<<if ($cheatMode == 1) || (_ML == 0)>>
@@ -365,7 +363,6 @@
 				| //You can only marry up to two slaves per week//
 			<</if>>
 		<<else>>
-			/* FIXME: this message only displays for the last slave being married */
 			| //You are already marrying $him this weekend//
 		<</if>>
 	<</if>>
@@ -514,154 +511,12 @@
 	/* CAN BE REASSIGNED */
 
 	Assignment: <strong><span id="assign">$activeSlave.assignment<<if $activeSlave.sentence>> ($activeSlave.sentence weeks)<</if>></span>.</strong>
-	<<link "Rest">>				   <<= assignJob($activeSlave, "rest")>><<replace "#assign">>$activeSlave.assignment<</replace>><<SlaveInteractFucktoy>><</link>>
-	<<if ["be confined in the arcade", "serve in the club", "serve in the master suite", "work as a farmhand", "work as a nanny", "work as a servant", "work in the brothel", "work in the dairy"].includes($activeSlave.assignment)>>
-	| <<link "Remove From Facility">>	<<= removeJob($activeSlave, $activeSlave.assignment)>><<replace "#assign">>$activeSlave.assignment<</replace>><<SlaveInteractFucktoy>><</link>>
-	<</if>>
-	| <<link "Fucktoy">>				<<= assignJob($activeSlave, "please you")>><<replace "#assign">>$activeSlave.assignment<</replace>><<SlaveInteractFucktoy>><</link>>
-
-	<<if ($activeSlave.indentureRestrictions <= 0) && ($activeSlave.breedingMark != 1 || $propOutcome == 0)>>
-	| <<link "Gloryhole">>			  <<= assignJob($activeSlave, "work a glory hole")>><<replace "#assign">>$activeSlave.assignment<</replace>><<SlaveInteractFucktoy>><</link>>
-	<</if>>
-
-	<<if $activeSlave.fuckdoll == 0>> /* NON-FUCKDOLL ASSIGNMENTS */
-
-	<<if ($activeSlave.devotion >= -20) || (($activeSlave.devotion >= -50) && ($activeSlave.trust < -20)) || ($activeSlave.trust < -50)>>
-	<<if $activeSlave.intelligenceImplant < 15 && $activeSlave.fetish != "mindbroken">>
-	| <<link "Classes">>				<<= assignJob($activeSlave, "take classes")>><<replace "#assign">>$activeSlave.assignment<</replace>><<SlaveInteractFucktoy>><</link>>
-	<<else>>
-	| Classes
-	<</if>>
-	<<else>>
-	/*| //Too resistant to take classes// */
-	<</if>>
-
-	<<if (($activeSlave.devotion >= -20) || (($activeSlave.trust < -20) && ($activeSlave.devotion >= -50)) || ($activeSlave.trust < -50))>>
-	| <<link "Subordinate Slave" "Subordinate Targeting">>	  <<= assignJob($activeSlave, "be a subordinate slave")>><</link>>
-	<<if canSee($activeSlave) && canWalk($activeSlave)>>
-	| <<link "House Servant">>		  <<= assignJob($activeSlave, "be a servant")>><<replace "#assign">>$activeSlave.assignment<</replace>><<SlaveInteractFucktoy>><</link>>
-	<<else>>
-	/*| //Blind or immobile slaves cannot be servants// */
-	<</if>>
-	<<else>>
-	/*| //Too resistant to be a servant// */
-	<</if>>
-
-	<<if ($activeSlave.breedingMark != 1 || $propOutcome == 0)>>
-	| <<link "Whore">>				  <<= assignJob($activeSlave, "whore")>><<replace "#assign">>$activeSlave.assignment<</replace>><<SlaveInteractFucktoy>><</link>>
-	| <<link "Public Servant">>		 <<= assignJob($activeSlave, "serve the public")>><<replace "#assign">>$activeSlave.assignment<</replace>><<SlaveInteractFucktoy>><</link>>
-	<</if>>
-
-	<<if ($activeSlave.lactation > 0) || ($activeSlave.balls > 0 && $activeSlave.ballType == "human")>>
-	| <<link "Milked">>				 <<= assignJob($activeSlave, "get milked")>><<replace "#assign">>$activeSlave.assignment<</replace>><<SlaveInteractFucktoy>><</link>>
-	<<else>>
-	/*| //Not lactating// */
-	<</if>>
-
-	| <<link "Confinement">>		 	<<= assignJob($activeSlave, "stay confined")>><<replace "#assign">>$activeSlave.assignment<</replace>><<SlaveInteractFucktoy>><</link>>
-	| <<link "Let $him choose">>		<<= assignJob($activeSlave, "choose her own job")>><<replace "#assign">>$activeSlave.assignment<</replace>><<SlaveInteractFucktoy>><</link>>
-	| <<link "Stay on this assignment for another month">><<if $activeSlave.assignment != "choose her own job">><<set $activeSlave.sentence += 4>><<replace "#assign">>$activeSlave.assignment ($activeSlave.sentence weeks)<</replace>><</if>><</link>>
-
-	<</if>>/* CLOSES FUCKDOLL CHECK */
+	<span id="assignmentLinks"><<= App.UI.SlaveInteract.assignmentBlock("assignmentLinks")>></span>
 
 	<<set _numFacilities = $brothel+$club+$dairy+$farmyard+$servantsQuarters+$masterSuite+$spa+$nursery+$clinic+$schoolroom+$cellblock+$arcade+$HGSuite>>
 
 	<<if _numFacilities > 0>>
-
-	<br>Transfer to:
-
-	<<if $arcade != 0>>
-		<<if $arcade > $arcadeSlaves && ($activeSlave.indentureRestrictions <= 0) && ($activeSlave.breedingMark != 1 || $propOutcome == 0)>>
-			[[Arcade|Assign][$assignTo = "Arcade", $i = -1]] /* $i = -1 tells Assign to use $activeSlave as-is */
-		<<else>>Arcade<</if>>
-		<<if _numFacilities-- > 1>>|<</if>>
-	<</if>>
-
-	<<if $activeSlave.fuckdoll == 0>> /* NON-FUCKDOLL FACILITIES */
-
-	<<if $clinic != 0>>
-		<<if $clinic > $clinicSlaves && ($activeSlave.health < 20 || ($Nurse != 0 && (($activeSlave.chem > 15 && $clinicUpgradeFilters == 1) || ($bellyImplants == 1 && $activeSlave.bellyImplant > -1) || ($activeSlave.pregKnown == 1 && ($clinicSpeedGestation >= 0 || $activeSlave.pregControl == "speed up")) || ($activeSlave.pregAdaptation*1000 < $activeSlave.bellyPreg || $activeSlave.preg > $activeSlave.pregData.normalBirth/1.33))))>>
-			[[Clinic|Assign][$assignTo = "Clinic", $i = -1]] /* $i = -1 tells Assign to use $activeSlave as-is */
-		<<else>>Clinic<</if>>
-		<<if _numFacilities-- > 1>>|<</if>>
-	<</if>>
-
-	<<if $masterSuite != 0>>
-		<<if $masterSuite > $masterSuiteSlaves && (($activeSlave.devotion > 20) || (($activeSlave.devotion >= -50) && ($activeSlave.trust < -20)) || ($activeSlave.trust < -50))>>
-			[[Master Suite|Assign][$assignTo = "Master Suite", $i = -1]] /* $i = -1 tells Assign to use $activeSlave as-is */
-		<<else>>Master Suite<</if>>
-		<<if _numFacilities-- > 1>>|<</if>>
-	<</if>>
-
-	<<if $cellblock != 0>>
-		<<if $cellblock > $cellblockSlaves && (($activeSlave.devotion < -20 && $activeSlave.trust >= -20) || ($activeSlave.devotion < -50 && $activeSlave.trust >= -50))>>
-			[[Cellblock|Assign][$assignTo = "Cellblock", $i = -1]] /* $i = -1 tells Assign to use $activeSlave as-is */
-		<<else>>Cellblock<</if>>
-		<<if _numFacilities-- > 1>>|<</if>>
-	<</if>>
-
-	<<if $schoolroom != 0>>
-		<<if $schoolroom > $schoolroomSlaves && ($activeSlave.fetish != "mindbroken" && ($activeSlave.devotion >= -20 || ($activeSlave.devotion >= -50 && $activeSlave.trust < -20) || $activeSlave.trust < -50) && (($activeSlave.intelligenceImplant < 30) || ($activeSlave.voice != 0 && $activeSlave.accent+$schoolroomUpgradeLanguage > 2) || ($activeSlave.skill.oral <= 10+$schoolroomUpgradeSkills*20) || ($activeSlave.skill.whore <= 10+$schoolroomUpgradeSkills*20) || ($activeSlave.skill.entertainment <= 10+$schoolroomUpgradeSkills*20) || ($activeSlave.skill.anal < 10+$schoolroomUpgradeSkills*20) || ($activeSlave.vagina >= 0 && $activeSlave.skill.vaginal < 10+$schoolroomUpgradeSkills*20)))>>
-			[[Schoolroom|Assign][$assignTo = "Schoolroom", $i = -1]] /* $i = -1 tells Assign to use $activeSlave as-is */
-		<<else>>Schoolroom<</if>>
-		<<if _numFacilities-- > 1>>|<</if>>
-	<</if>>
-
-	<<if $servantsQuarters != 0>>
-		<<if $servantsQuarters > $servantsQuartersSlaves && (canWalk($activeSlave) && canSee($activeSlave) && ($activeSlave.devotion >= -20 || ($activeSlave.devotion >= -50 && $activeSlave.trust <= 20) || $activeSlave.trust < -20))>>
-			[[Servants' Quarters|Assign][$assignTo = "Servants' Quarters", $i = -1]] /* $i = -1 tells Assign to use $activeSlave as-is */
-		<<else>>Servants' Quarters<</if>>
-		<<if _numFacilities-- > 1>>|<</if>>
-	<</if>>
-
-	<<if $brothel != 0>>
-		<<if $brothel > $brothelSlaves && ((($activeSlave.devotion > 50) || (($activeSlave.devotion >= -50) && ($activeSlave.trust < -20)) || ($activeSlave.trust < -50) || ($activeSlave.trust > 50)) && ($activeSlave.breedingMark != 1 || $propOutcome == 0))>>
-			[[Brothel|Assign][$assignTo = "Brothel", $i = -1]] /* $i = -1 tells Assign to use $activeSlave as-is */
-		<<else>>Brothel<</if>>
-		<<if _numFacilities-- > 1>>|<</if>>
-	<</if>>
-
-	<<if $club != 0>>
-		<<if $club > $clubSlaves && ((($activeSlave.devotion > 50) || (($activeSlave.devotion >= -50) && ($activeSlave.trust < -20)) || ($activeSlave.trust < -50) || ($activeSlave.trust > 50)) && ($activeSlave.breedingMark != 1 || $propOutcome == 0))>>
-			[[Club|Assign][$assignTo = "Club", $i = -1]] /* $i = -1 tells Assign to use $activeSlave as-is */
-		<<else>>Club<</if>>
-		<<if _numFacilities-- > 1>>|<</if>>
-	<</if>>
-
-	<<if $dairy != 0>>
-		<<set _dairySeed = $bioreactorsXY+$bioreactorsXX+$bioreactorsHerm+$bioreactorsBarren>>
-		<<if $dairy <= $dairySlaves+_dairySeed>>
-			Dairy
-		<<elseif((($activeSlave.indentureRestrictions > 0) && ($dairyRestraintsSetting > 1)) || (($activeSlave.indentureRestrictions > 1) && ($dairyRestraintsSetting > 0)) || ($activeSlave.breedingMark == 1 && $propOutcome == 1 && $dairyRestraintsSetting > 0) || (($dairyPregSetting > 0) && (($activeSlave.bellyImplant != -1) || ($activeSlave.broodmother > 0))))>>
-			Dairy
-		<<elseif (($activeSlave.lactation > 0) || ($activeSlave.balls > 0)) || (($dairyFeedersUpgrade == 1) && ($dairyFeedersSetting > 0) && ($dairySlimMaintainUpgrade == 0))>>
-			[[Dairy|Assign][$assignTo = "Dairy", $i = -1]] /* $i = -1 tells Assign to use $activeSlave as-is */
-		<<else>>Dairy<</if>>
-		<<if _numFacilities-- > 1>>|<</if>>
-	<</if>>
-
-	<<if $farmyard != 0>>
-		<<if $farmyard > $farmyardSlaves>>
-			[[Farmyard|Assign][$assignTo = "Farmyard", $i = -1]] /* $i = -1 tells Assign to use $activeSlave as-is */
-		<<else>>Farmyard<</if>>
-		<<if _numFacilities-- > 1>>|<</if>>
-	<</if>>
-
-	<<if $spa != 0>>
-		<<if $spa > $spaSlaves && (($activeSlave.devotion >= -20 || $activeSlave.fetish == "mindbroken") && ($activeSlave.health < 20 || $activeSlave.trust <= 60 || $activeSlave.devotion <= 60 || $activeSlave.fetish == "mindbroken" || $activeSlave.sexualFlaw !== "none" || $activeSlave.behavioralFlaw !== "none"))>>
-			[[Spa|Assign][$assignTo = "Spa", $i = -1]] /* $i = -1 tells Assign to use $activeSlave as-is */
-		<<else>>Spa<</if>>
-		<<if _numFacilities-- > 1>>|<</if>>
-	<</if>>
-
-	<<if $nursery != 0>>
-		<<if $nurseryNannies > $nurserySlaves && ($activeSlave.devotion > 20 || $activeSlave.trust > 20 || $activeSlave.fetish == "mindbroken")>>
-			[[Nursery|Assign][$assignTo = "Nursery", $i = -1]]
-		<<else>>Nursery<</if>>
-	<</if>>
-
-	<</if>> /* CLOSES FUCKDOLL CHECK */
-
+		<br>Transfer to: <<= App.UI.jobLinks.transfers(-1)>>
 	<</if>> /* closes _numFacilities */
 
 <</switch>> /* END CAN BE REASSIGNED */
@@ -1002,8 +857,8 @@
 
 		<br>Leg accessory: ''<span id="legAccessory">$activeSlave.legAccessory</span>.''
 		<<link "None">><<set $activeSlave.legAccessory = "none">><<replace "#legAccessory">>$activeSlave.legAccessory<</replace>><</link>>
-		| <<link "Short Stockings">><<set $activeSlave.legAccessory = "short stockings">><<replace "#legAccessory">>$activeSlave.legAccessory<</replace>><</link>>
-		| <<link "Long Stockings">><<set $activeSlave.legAccessory = "long stockings">><<replace "#legAccessory">>$activeSlave.legAccessory<</replace>><</link>>
+		| <<link "Short stockings">><<set $activeSlave.legAccessory = "short stockings">><<replace "#legAccessory">>$activeSlave.legAccessory<</replace>><</link>>
+		| <<link "Long stockings">><<set $activeSlave.legAccessory = "long stockings">><<replace "#legAccessory">>$activeSlave.legAccessory<</replace>><</link>>
 	<</if>>
 
 	<br>Torso accessory: ''<span id="bellyAccessory">$activeSlave.bellyAccessory</span>.''
@@ -1098,19 +953,19 @@
 		<</if>>
 	<</if>>
 
-	<br>Chastity device: ''<span id="chastity"><<if $activeSlave.chastityAnus == 1 && $activeSlave.chastityPenis == 1 && $activeSlave.chastityVagina == 1>>Full Chastity<<elseif $activeSlave.chastityPenis == 1 && $activeSlave.chastityVagina == 1>>Genital Chastity<<elseif $activeSlave.chastityAnus == 1 && $activeSlave.chastityPenis == 1>>Combined Chastity Cage<<elseif $activeSlave.chastityAnus == 1 && $activeSlave.chastityVagina == 1>>Combined Chastity Belt<<elseif $activeSlave.chastityVagina == 1>>Chastity Belt<<elseif $activeSlave.chastityPenis == 1>>Chastity Cage<<elseif $activeSlave.chastityAnus == 1>>Anal Chastity<<elseif $activeSlave.chastityAnus == 0 && $activeSlave.chastityPenis == 0 && $activeSlave.chastityVagina == 0>>None<<else>>THERE HAS BEEN AN ERROR<</if>></span>.''
+	<br>Chastity device: ''<span id="chastity"><<if $activeSlave.chastityAnus == 1 && $activeSlave.chastityPenis == 1 && $activeSlave.chastityVagina == 1>>full chastity<<elseif $activeSlave.chastityPenis == 1 && $activeSlave.chastityVagina == 1>>genital chastity<<elseif $activeSlave.chastityAnus == 1 && $activeSlave.chastityPenis == 1>>combined chastity cage<<elseif $activeSlave.chastityAnus == 1 && $activeSlave.chastityVagina == 1>>combined chastity belt<<elseif $activeSlave.chastityVagina == 1>>chastity belt<<elseif $activeSlave.chastityPenis == 1>>chastity cage<<elseif $activeSlave.chastityAnus == 1>>anal bhastity<<elseif $activeSlave.chastityAnus == 0 && $activeSlave.chastityPenis == 0 && $activeSlave.chastityVagina == 0>>none<<else>>THERE HAS BEEN AN ERROR<</if>></span>.''
 	<<link "None">><<set $activeSlave.chastityAnus = 0>><<set $activeSlave.chastityPenis = 0>><<set $activeSlave.chastityVagina = 0>><<replace "#chastity">>None<</replace>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</link>>
-	| <<link "Anal Chastity">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 1>><<set $activeSlave.chastityPenis = 0>><<set $activeSlave.chastityVagina = 0>><<replace "#chastity">>Anal Chastity<</replace>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</link>>
+	| <<link "Anal chastity">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 1>><<set $activeSlave.chastityPenis = 0>><<set $activeSlave.chastityVagina = 0>><<replace "#chastity">>Anal chastity<</replace>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</link>>
 	<<if $activeSlave.vagina > -1>>
-		| <<link "Chastity Belt">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 0>><<set $activeSlave.chastityPenis = 0>><<set $activeSlave.chastityVagina = 1>><<replace "#chastity">>Vaginal Chastity<</replace>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</link>>
-		| <<link "Combined Chastity Belt">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 1>><<set $activeSlave.chastityPenis = 0>><<set $activeSlave.chastityVagina = 1>><<replace "#chastity">>Combined Chastity Belt<</replace>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</link>>
+		| <<link "Chastity belt">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 0>><<set $activeSlave.chastityPenis = 0>><<set $activeSlave.chastityVagina = 1>><<replace "#chastity">>Chastity belt<</replace>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</link>>
+		| <<link "Combined chastity belt">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 1>><<set $activeSlave.chastityPenis = 0>><<set $activeSlave.chastityVagina = 1>><<replace "#chastity">>Combined chastity belt<</replace>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</link>>
 	<</if>>
 	<<if $activeSlave.dick > 0>>
-		| <<link "Chastity Cage">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 0>><<set $activeSlave.chastityPenis = 1>><<set $activeSlave.chastityVagina = 0>><<replace "#chastity">>Chastity Cage<</replace>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</link>>
-		| <<link "Combined Chastity Cage">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 1>><<set $activeSlave.chastityPenis = 1>><<set $activeSlave.chastityVagina = 0>><<replace "#chastity">>Combined Chastity Cage<</replace>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</link>>
+		| <<link "Chastity cage">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 0>><<set $activeSlave.chastityPenis = 1>><<set $activeSlave.chastityVagina = 0>><<replace "#chastity">>Chastity cage<</replace>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</link>>
+		| <<link "Combined chastity cage">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 1>><<set $activeSlave.chastityPenis = 1>><<set $activeSlave.chastityVagina = 0>><<replace "#chastity">>Combined Chastity cage<</replace>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</link>>
 		<<if $activeSlave.vagina > -1>>
-			| <<link "Genital Chastity">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 0>><<set $activeSlave.chastityPenis = 1>><<set $activeSlave.chastityVagina = 1>><<replace "#chastity">>Genital Chastity<</replace>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</link>>
-			| <<link "Full Chastity">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 1>><<set $activeSlave.chastityPenis = 1>><<set $activeSlave.chastityVagina = 1>><<replace "#chastity">>Full Chastity<</replace>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</link>>
+			| <<link "Genital chastity">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 0>><<set $activeSlave.chastityPenis = 1>><<set $activeSlave.chastityVagina = 1>><<replace "#chastity">>Genital chastity<</replace>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</link>>
+			| <<link "Full chastity">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 1>><<set $activeSlave.chastityPenis = 1>><<set $activeSlave.chastityVagina = 1>><<replace "#chastity">>Full chastity<</replace>><<SlaveInteractAnalGropeOption>><<SlaveInteractAnalSexOption>><<SlaveInteractDickGropeOption>><<SlaveInteractFertility>><<SlaveInteractGropeOption>><<SlaveInteractImpreg>><<SlaveInteractSexOption>><</link>>
 		<</if>>
 	<</if>>
 
@@ -1216,9 +1071,9 @@
 		<</if>>
 		<<if $growthStim == 1>>
 			<<if $activeSlave.height < 274 && $activeSlave.height < Math.clamp((Height.mean($activeSlave) * 1.25),0,274)>>
-				| <<link "Growth Stimulants">><<set $activeSlave.drugs = "growth stimulants">><<SlaveInteractDrugs>><</link>>
+				| <<link "Growth stimulants">><<set $activeSlave.drugs = "growth stimulants">><<SlaveInteractDrugs>><</link>>
 			<<else>>
-				| Growth Stimulants
+				| Growth stimulants
 			<</if>>
 		<</if>>
 		| <<link "Fertility">><<set $activeSlave.drugs = "fertility drugs">><<SlaveInteractDrugs>><</link>>
diff --git a/src/uncategorized/slaveShelter.tw b/src/uncategorized/slaveShelter.tw
index fe211d6bec6204cce7db09f45251e4668de104ee..b1f633103de19562b9e1e72b63a13cc6db05c943 100644
--- a/src/uncategorized/slaveShelter.tw
+++ b/src/uncategorized/slaveShelter.tw
@@ -49,7 +49,7 @@ You contact the Slave Shelter to review the profile of the slave the Shelter is
 	<<set $shelterSlave.anus = 3>>
 	<<set $shelterSlave.skill.oral = 0>>
 	<<set $shelterSlave.skill.anal = 0>>
-	<<set $shelterSlave.skill.whore = 0>>
+	<<set $shelterSlave.skill.whoring = 0>>
 	<<set $shelterSlave.skill.entertainment = 0>>
 	<<set $shelterSlave.skill.combat = 0>>
 	<<set $shelterSlave.intelligence = -70>>
@@ -118,7 +118,7 @@ You contact the Slave Shelter to review the profile of the slave the Shelter is
 	<<set $shelterSlave.bellySag = 20>>
 	<<set $shelterSlave.skill.oral = 0>>
 	<<set $shelterSlave.skill.anal = 0>>
-	<<set $shelterSlave.skill.whore = 0>>
+	<<set $shelterSlave.skill.whoring = 0>>
 	<<set $shelterSlave.skill.entertainment = 0>>
 	<<set $shelterSlave.skill.combat = 0>>
 	<<set $shelterSlave.intelligence = -70>>
@@ -236,7 +236,7 @@ You contact the Slave Shelter to review the profile of the slave the Shelter is
 	<<set $shelterSlave.anus = 4>>
 	<<set $shelterSlave.skill.oral = 0>>
 	<<set $shelterSlave.skill.anal = 15>>
-	<<set $shelterSlave.skill.whore = 0>>
+	<<set $shelterSlave.skill.whoring = 0>>
 	<<set $shelterSlave.skill.entertainment = 0>>
 	<<set $shelterSlave.skill.combat = 0>>
 	<<set $shelterSlave.attrXY = random(40,60)>>
@@ -259,7 +259,7 @@ You contact the Slave Shelter to review the profile of the slave the Shelter is
 	<<set $shelterSlave.anus = 0>>
 	<<set $shelterSlave.skill.oral = 0>>
 	<<set $shelterSlave.skill.anal = 0>>
-	<<set $shelterSlave.skill.whore = 0>>
+	<<set $shelterSlave.skill.whoring = 0>>
 	<<set $shelterSlave.skill.entertainment = 0>>
 	<<set $shelterSlave.skill.combat = 0>>
 	<<set $shelterSlave.energy = random(5,10)>>
@@ -282,7 +282,7 @@ You contact the Slave Shelter to review the profile of the slave the Shelter is
 	<<set $shelterSlave.skill.oral = 15>>
 	<<set $shelterSlave.skill.anal = 15>>
 	<<set $shelterSlave.skill.vaginal = 15>>
-	<<set $shelterSlave.skill.whore = 0>>
+	<<set $shelterSlave.skill.whoring = 0>>
 	<<set $shelterSlave.skill.entertainment = 0>>
 	<<set $shelterSlave.skill.combat = 0>>
 	<<set $shelterSlave.behavioralFlaw = either("anorexic", "gluttonous", "odd")>>
@@ -311,7 +311,7 @@ You contact the Slave Shelter to review the profile of the slave the Shelter is
 	<<set $shelterSlave.skill.oral = 0>>
 	<<set $shelterSlave.skill.anal = 0>>
 	<<set $shelterSlave.skill.vaginal = 0>>
-	<<set $shelterSlave.skill.whore = 0>>
+	<<set $shelterSlave.skill.whoring = 0>>
 	<<set $shelterSlave.skill.entertainment = 0>>
 	<<set $shelterSlave.skill.combat = 0>>
 	<<set $shelterSlave.behavioralFlaw = either("gluttonous", "hates men", "odd")>>
@@ -335,7 +335,7 @@ You contact the Slave Shelter to review the profile of the slave the Shelter is
 	<<set $shelterSlave.skill.oral = 35>>
 	<<set $shelterSlave.skill.anal = 35>>
 	<<set $shelterSlave.skill.vaginal = 35>>
-	<<set $shelterSlave.skill.whore = 35>>
+	<<set $shelterSlave.skill.whoring = 35>>
 	<<set $shelterSlave.skill.entertainment = 15>>
 	<<set $shelterSlave.skill.combat = 0>>
 	<<set $shelterSlave.behavioralFlaw = either("anorexic", "gluttonous", "hates men", "odd")>>
diff --git a/src/uncategorized/slaveStats.tw b/src/uncategorized/slaveStats.tw
index dff094ffe9b4eaa10d1f9dbf13324c4c153bc18b..07e275ab91ef569889938e1278c0151c334a020f 100644
--- a/src/uncategorized/slaveStats.tw
+++ b/src/uncategorized/slaveStats.tw
@@ -298,7 +298,6 @@ slaveName: $activeSlave.slaveName	   /* TODO: figure out why this is being inden
 <br>custom.ddesc: $activeSlave.custom.desc
 <br>custom.title: $activeSlave.custom.title
 <br>custom.titleLisp: $activeSlave.custom.titleLisp
-<br>custom.image.filename: $activeSlave.custom.image.filename
 <br>rudeTitle: $activeSlave.rudeTitle
 <br>currentRules: $activeSlave.currentRules
 <br>bellyTat: $activeSlave.bellyTat
diff --git a/src/uncategorized/spa.tw b/src/uncategorized/spa.tw
index d6bafceeda1d727d47e3089f0eec93f2ee58e33b..365de16c72667fb97e74655092b5a2370d7226bb 100644
--- a/src/uncategorized/spa.tw
+++ b/src/uncategorized/spa.tw
@@ -88,7 +88,7 @@ $spaNameCaps
 <</if>>
 
 <<set _Tmult0 = Math.trunc($spa*1000*$upgradeMultiplierArcology)>>
-<br>$spaNameCaps can house $spa slaves while they recuperate here. Currently $spaSlaves <<if $spaSlaves == 1>>is<<else>>are<</if>> recuperating.
+<br>$spaNameCaps can house $spa slaves while they recuperate here. There <<if $spaSlaves == 1>>is<<else>>are<</if>> currently $spaSlaves slaves<<if $spaSlaves != 1>>s<</if>> recuperating in $spaName.
 [[Expand the spa|Spa][cashX(forceNeg(_Tmult0), "capEx"), $spa += 5]] //Costs <<print cashFormat(_Tmult0)>>//
 
 <br>
diff --git a/src/uncategorized/storyCaption.tw b/src/uncategorized/storyCaption.tw
index 1c071768a4c2f4ef646e4bb6bd7b845beb53cd04..5368b096152b4320bc0f3684b007a6acc89d002e 100644
--- a/src/uncategorized/storyCaption.tw
+++ b/src/uncategorized/storyCaption.tw
@@ -743,6 +743,10 @@
 	<br>
 	<br><<link [[Wardrobe (shopping)|Wardrobe]]>><</link>>
 	<br><br><br><br><br>
+<<elseif _Pass == "Rules Assistant">>
+	<br>
+	<br><<link [[Rules Assistant Summary]]>><</link>>
+	<br><br><br><br><br>
 <<elseif _Pass == "Options">>
 	<br>
 	<br>[[Summary Options]]
diff --git a/src/uncategorized/wardrobe.tw b/src/uncategorized/wardrobe.tw
index 341b701cbed3df81d15573543781dd45320f3dd1..aa26b714b8f39be153190a51469693160c6f3d17 100644
--- a/src/uncategorized/wardrobe.tw
+++ b/src/uncategorized/wardrobe.tw
@@ -471,7 +471,7 @@ The room containing all the clothes and accessories you have available to dress
 </td>
 
 <td>
-<<set _model.clothes = either("a schutzstaffel uniform", "a klan robe", "a slutty klan robe", "a schutzstaffel uniform", "a slutty schutzstaffel uniform")>>
+<<set _model.clothes = either("a klan robe", "a slutty klan robe", "a schutzstaffel uniform", "a slutty schutzstaffel uniform")>>
 <<if $seeImages == 1>>
 	<div class= "imageRef smlImg">
 		<<SlaveArt _model 1 0>>
diff --git a/src/uncategorized/wardrobeUse.tw b/src/uncategorized/wardrobeUse.tw
index 5ef36b31c635ef62413df91f542aa74528950e77..076f3e7ab5d1d69a5e4d2a3c3431d999f85b2bfd 100644
--- a/src/uncategorized/wardrobeUse.tw
+++ b/src/uncategorized/wardrobeUse.tw
@@ -474,8 +474,10 @@ Torso accessory: ''$activeSlave.bellyAccessory.''
 	<</options>>
 
 	<<if isItemAccessible("vibrator") && $activeSlave.vaginalAccessory != "none" && ($activeSlave.vaginalAccessory != "bullet vibrator" && $activeSlave.vaginalAccessory != "smart bullet vibrator") && $toysBoughtVaginalAttachments == 1>>
+		Vaginal accessory attachment: ''$activeSlave.vaginalAttachment.''
+		<br>
+		//<<vaginalAttachmentDescription>>//
 		<<options $activeSlave.vaginalAttachment>>
-			Vaginal accessory attachment: ''$activeSlave.vaginalAttachment.'' //<<vaginalAttachmentDescription>>//
 			<<option "none" "None">>
 			<<option "vibrator" "Vibrating dildo">>
 		<</options>>
diff --git a/src/utility/descriptionWidgets.tw b/src/utility/descriptionWidgets.tw
index 2edeb5a310cb93ceeb07c0d86d6ce29d732ea698..0c5851398a49547d17c87d6d05fb816e6ecce465 100644
--- a/src/utility/descriptionWidgets.tw
+++ b/src/utility/descriptionWidgets.tw
@@ -84,7 +84,7 @@
 
 <<widget "geneticQuirkAssessment">>
 
-<<if $geneticMappingUpgrade == 1>>
+<<if $geneticMappingUpgrade >= 1>>
 	<<if $activeSlave.geneticQuirks.albinism == 2>>
 		$He is an albino.
 	<</if>>
@@ -94,7 +94,7 @@
 	<<if $activeSlave.geneticQuirks.pFace == 2>>
 		$He has an exceedingly rare trait associated with perfect facial beauty.
 		<<if $activeSlave.geneticQuirks.uFace == 2>>
-			Oddly enough, $he also possesses a conflicting trait for raw uglyness; the two average each other out.
+			Oddly enough, $he also possesses a conflicting trait for raw ugliness; the two average each other out.
 		<</if>>
 	<<elseif $activeSlave.geneticQuirks.uFace == 2>>
 		$He has an exceedingly rare trait associated with some of the ugliest mugs in history.
@@ -128,6 +128,23 @@
 			$He posses a rare genetic flaw that causes pregnancy to not block ovulation; not that it matters when $he can't get pregnant.
 		<</if>>
 	<</if>>
+	<<if $activeSlave.geneticQuirks.macromastia == 2 && $activeSlave.geneticQuirks.gigantomastia == 2>>
+		$He has an abnormal strain of gigantomastia and will experience constant excessive breast growth.
+	<<elseif $activeSlave.geneticQuirks.gigantomastia >= 2>>
+		$He has 
+		<<if $activeSlave.geneticQuirks.gigantomastia == 3>>
+			dormant gigantomastia. Hormonal effects may cause it to become active.
+		<<else>>
+			gigantomastia and will experience excessive breast growth.
+		<</if>>
+	<<elseif $activeSlave.geneticQuirks.macromastia >= 2>>
+		$He has
+		<<if $activeSlave.geneticQuirks.macromastia == 3>>
+			dormant macromastia. Hormonal effects may cause it to become active.
+		<<else>>
+			macromastia and will experience excess development of breast tissue.
+		<</if>>
+	<</if>>
 	<<if $activeSlave.geneticQuirks.wellHung == 2>>
 		<<if $activeSlave.physicalAge <= 16 && $activeSlave.hormoneBalance < 100 && $activeSlave.dick > 0>>
 			$He is likely to experience an inordinate amount of penile growth during $his physical development.
diff --git a/src/utility/descriptionWidgetsStyle.tw b/src/utility/descriptionWidgetsStyle.tw
index 308c2c274b59c1884a9e2fe6e7cc61486b44c1db..1b2819d556b0d308bcf4bf16906d53c8233bcc7e 100644
--- a/src/utility/descriptionWidgetsStyle.tw
+++ b/src/utility/descriptionWidgetsStyle.tw
@@ -147,7 +147,7 @@ $activeSlave.slaveName is
 			$His lingerie is white, since $he has a virgin asspussy,
 		<<elseif ($activeSlave.fetish == "dom") || ($activeSlave.fetish == "sadist")>>
 			$He's gone with black lingerie to look a bit more intimidating,
-		<<elseif ($activeSlave.hormoneBlance < 0)>>
+		<<elseif ($activeSlave.hormoneBalance < 0)>>
 			$He's gone with blue lingerie for some reason,
 		<<elseif ($activeSlave.dick > 0) && ($activeSlave.balls == 0)>>
 			The lingerie is girly pink,
@@ -167,7 +167,7 @@ $activeSlave.slaveName is
 			$His lingerie is white, since $he has a virgin asspussy,
 		<<elseif ($activeSlave.fetish == "dom") || ($activeSlave.fetish == "sadist")>>
 			$He's gone with black lingerie to look a bit more intimidating,
-		<<elseif ($activeSlave.hormoneBlance < 0)>>
+		<<elseif ($activeSlave.hormoneBalance < 0)>>
 			$He's gone with blue lingerie for some reason,
 		<<elseif ($activeSlave.dick > 0) && ($activeSlave.balls == 0)>>
 			The lingerie is girly pink,
@@ -1074,7 +1074,7 @@ $His
 			cascades down $his back, ornamented with little silver talismans here and there.
 		<<case "a huipil">>
 			flows down $his back, rustling freely in the wind.
-		<<case "restrictive latex" "a latex catsuit">>
+		<<case "restrictive latex">>
 			is allowed a gap at the back of $his head so it can escape to cascade down $his back.
 		<<case "harem gauze">>
 			cascades down $his back, covered by a flimsy hairnet.
@@ -1136,7 +1136,7 @@ $His
 			is brushed back over $his shoulders, ornamented with little silver talismans here and there.
 		<<case "a huipil">>
 			flows down $his shoulders, giving $him a very innocent look.
-		<<case "restrictive latex" "a latex catsuit">>
+		<<case "restrictive latex">>
 			is allowed a gap at the back of $his head so it can escape down $his back.
 		<<case "harem gauze">>
 			flows down $his back, covered by a flimsy hairnet.
@@ -1256,7 +1256,7 @@ $His
 		<<switch $activeSlave.clothes>>
 		<<case "body oil">>
 			is in a classic 80's perm.
-		<<case "restrictive latex" "a latex catsuit">>
+		<<case "restrictive latex">>
 			fits under $his latex hood.
 		<<case "harem gauze">>
 			is covered by a flimsy hairnet.
@@ -1322,7 +1322,7 @@ $His
 			is twisted into two horns that rest on top of $his head, the rest is bulked on the back of $his neck.
 		<<case "a kimono" "a long qipao">>
 			is in a perfect bun, secured with an ivory comb; $his bun is so large it forms an artful arrangement down to the nape of $his neck.
-		<<case "restrictive latex" "a latex catsuit">>
+		<<case "restrictive latex">>
 			sticks out of the latex hood in a huge bun.
 		<<case "harem gauze">>
 			is piled up on $his head in a huge beehive, itself veiled.
@@ -1383,7 +1383,7 @@ $His
 			is twisted into two horns that rest on top of $his head, the rest sits tightly on the back of $his neck.
 		<<case "a kimono" "a long qipao">>
 			is in a perfect bun, secured with an ivory comb.
-		<<case "restrictive latex" "a latex catsuit">>
+		<<case "restrictive latex">>
 			sticks out of the latex hood in a big bun.
 		<<case "harem gauze">>
 			is piled up on $his head in a beehive, pulling $his veil up a little.
@@ -1444,7 +1444,7 @@ $His
 			is twisted into two horns that rest on top of $his head.
 		<<case "a kimono" "a long qipao">>
 			is in a tight little bun, secured with an ivory comb.
-		<<case "restrictive latex" "a latex catsuit">>
+		<<case "restrictive latex">>
 			fits back under $his latex hood.
 		<<case "harem gauze">>
 			is piled on $his head, pulling $his veil up a little.
@@ -1493,7 +1493,7 @@ $His
 		<</switch>>
 	<<else>>
 		<<switch $activeSlave.clothes>>
-		<<case "restrictive latex" "a latex catsuit">>
+		<<case "restrictive latex">>
 			fits back under $his latex hood.
 		<<case "a burkini" "a burqa" "a hijab and abaya" "a hijab and blouse" "a niqab and abaya" "a penitent nuns habit" "a fallen nuns habit" "a chattel habit" "a klan robe" "a slutty klan robe">>
 			is not visible under $his modest head covering.
@@ -1529,7 +1529,7 @@ $His
 	<<if $activeSlave.hLength > 100>>
 		<<switch $activeSlave.clothes>>
 		<<case "conservative clothing">>
-			is pulled back with a pair of simple hairties into tails.
+			is pulled back with a pair of simple hair ties into tails.
 		<<case "chains">>
 			is back in tails secured by steel rings.
 		<<case "a latex catsuit">>
@@ -1554,7 +1554,7 @@ $His
 			is back in huge tails secured by leather ties.
 		<<case "shibari rope">>
 			is back in huge tails tied back with rope.
-		<<case "restrictive latex" "a latex catsuit">>
+		<<case "restrictive latex">>
 			sticks out of two holes in $his latex hood.
 		<<case "a string bikini" "cutoffs and a t-shirt" "a schoolgirl outfit" "a slutty maid outfit">>
 			is back in huge tails secured by hair ties with plastic buttons, bearing the garish inscription
@@ -1607,7 +1607,7 @@ $His
 	<<elseif $activeSlave.hLength > 30>>
 		<<switch $activeSlave.clothes>>
 		<<case "conservative clothing">>
-			is pulled back with a pair of simple hairties into tails.
+			is pulled back with a pair of simple hair ties into tails.
 		<<case "chains">>
 			is back in tails secured by steel rings.
 		<<case "a latex catsuit">>
@@ -1632,7 +1632,7 @@ $His
 			is back in big tails secured by leather ties.
 		<<case "shibari rope">>
 			is back in big tails tied back with rope.
-		<<case "restrictive latex" "a latex catsuit">>
+		<<case "restrictive latex">>
 			sticks out of two holes in $his latex hood.
 		<<case "a string bikini" "cutoffs and a t-shirt" "a schoolgirl outfit" "a slutty maid outfit">>
 			is back in big tails secured by hair ties with plastic buttons, bearing the garish inscription
@@ -1685,7 +1685,7 @@ $His
 	<<elseif $activeSlave.hLength > 10>>
 		<<switch $activeSlave.clothes>>
 		<<case "conservative clothing">>
-			is pulled back with a pair of simple hairties into short tails.
+			is pulled back with a pair of simple hair ties into short tails.
 		<<case "chains">>
 			is back in short tails secured by steel rings.
 		<<case "a latex catsuit">>
@@ -1710,7 +1710,7 @@ $His
 			is back in short tails secured by leather ties.
 		<<case "shibari rope">>
 			is back in short tails secured with rope.
-		<<case "restrictive latex" "a latex catsuit">>
+		<<case "restrictive latex">>
 			sticks out of two holes in $his latex hood.
 		<<case "a string bikini" "cutoffs and a t-shirt" "a schoolgirl outfit" "a slutty maid outfit">>
 			is back in short tails secured by hair ties with plastic buttons, bearing the garish inscription
@@ -1794,7 +1794,7 @@ $His
 	<<if $activeSlave.hLength > 100>>
 		<<switch $activeSlave.clothes>>
 		<<case "conservative clothing">>
-			is tied back with a simple hairtie into a long ponytail.
+			is tied back with a simple hair tie into a long ponytail.
 		<<case "chains">>
 			is tied back into a ponytail secured by steel rings.
 		<<case "a latex catsuit">>
@@ -1819,7 +1819,7 @@ $His
 			is back in a huge ponytail secured by leather ties.
 		<<case "shibari rope">>
 			is back in a huge ponytail tied back with rope.
-		<<case "restrictive latex" "a latex catsuit">>
+		<<case "restrictive latex">>
 			sticks out of a hole in the back of in $his latex hood.
 		<<case "a string bikini" "cutoffs and a t-shirt" "a schoolgirl outfit" "a slutty maid outfit" "striped panties">>
 			is back in a huge ponytail secured by hair ties with plastic buttons, bearing the garish inscription
@@ -1872,7 +1872,7 @@ $His
 	<<elseif $activeSlave.hLength > 30>>
 		<<switch $activeSlave.clothes>>
 		<<case "conservative clothing">>
-			is pulled back with a simple hairtie into a ponytail.
+			is pulled back with a simple hair tie into a ponytail.
 		<<case "chains">>
 			is tied back in a ponytail secured by steel rings.
 		<<case "a latex catsuit">>
@@ -1897,7 +1897,7 @@ $His
 			is back in a big ponytail secured by leather ties.
 		<<case "shibari rope">>
 			is back in a big ponytail tied back with rope.
-		<<case "restrictive latex" "a latex catsuit">>
+		<<case "restrictive latex">>
 			sticks out of a hole in the back of $his latex hood.
 		<<case "a string bikini" "cutoffs and a t-shirt" "a schoolgirl outfit" "a slutty maid outfit" "striped panties">>
 			is back in a big ponytail secured by hair ties with plastic buttons, bearing the garish inscription
@@ -1950,7 +1950,7 @@ $His
 	<<elseif $activeSlave.hLength > 10>>
 		<<switch $activeSlave.clothes>>
 		<<case "conservative clothing">>
-			is pulled back with a simple hairtie into short ponytail.
+			is pulled back with a simple hair tie into short ponytail.
 		<<case "chains">>
 			is back in a short ponytail secured by steel rings.
 		<<case "a latex catsuit">>
@@ -1975,7 +1975,7 @@ $His
 			is back in short ponytail secured by leather ties.
 		<<case "shibari rope">>
 			is back in short ponytail secured with rope.
-		<<case "restrictive latex" "a latex catsuit">>
+		<<case "restrictive latex">>
 			sticks out of a hole in the back of $his latex hood.
 		<<case "a string bikini" "cutoffs and a t-shirt" "a schoolgirl outfit" "a slutty maid outfit" "striped panties">>
 			is back in a short ponytail secured by a hair tie with plastic buttons, bearing the garish inscription
@@ -2041,7 +2041,7 @@ $His
 	<<if $activeSlave.hLength > 100>>
 		<<switch $activeSlave.clothes>>
 		<<case "conservative clothing">>
-			is pulled back with a pair of simple hairties into braids.
+			is pulled back with a pair of simple hair ties into braids.
 		<<case "chains">>
 			is back in braids secured by steel rings.
 		<<case "Western clothing">>
@@ -2062,7 +2062,7 @@ $His
 			is back in huge braids secured by leather ties.
 		<<case "shibari rope">>
 			is back in huge braids tied back with rope.
-		<<case "restrictive latex" "a latex catsuit">>
+		<<case "restrictive latex">>
 			sticks out of two holes in $his latex hood.
 		<<case "a string bikini" "cutoffs and a t-shirt" "a schoolgirl outfit" "a slutty maid outfit" "striped panties">>
 			is back in huge braids secured by hair ties with plastic buttons, bearing the garish inscription
@@ -2115,7 +2115,7 @@ $His
 	<<elseif $activeSlave.hLength > 30>>
 		<<switch $activeSlave.clothes>>
 		<<case "conservative clothing">>
-			is pulled back with simple hairties into braids.
+			is pulled back with simple hair ties into braids.
 		<<case "chains">>
 			is back in braids secured by steel rings.
 		<<case "Western clothing">>
@@ -2189,7 +2189,7 @@ $His
 	<<elseif $activeSlave.hLength > 10>>
 		<<switch $activeSlave.clothes>>
 		<<case "conservative clothing">>
-			is pulled back with a pair of simple hairties into short braids.
+			is pulled back with a pair of simple hair ties into short braids.
 		<<case "chains">>
 			is back in short braids secured by steel rings.
 		<<case "Western clothing">>
@@ -2210,7 +2210,7 @@ $His
 			is back in short braids secured by leather ties.
 		<<case "shibari rope">>
 			is back in short braids secured with rope.
-		<<case "restrictive latex" "a latex catsuit">>
+		<<case "restrictive latex">>
 			is braided and sticks out of holes in $his latex hood.
 		<<case "a string bikini" "cutoffs and a t-shirt" "a schoolgirl outfit" "a slutty maid outfit" "striped panties">>
 			is back in short braids secured by hair ties with plastic buttons, bearing the garish inscription
@@ -2297,7 +2297,7 @@ $His
 			is in long dreadlocks some in simple leather ties.
 		<<case "shibari rope">>
 			is in long dreadlocks, some simply tied with string.
-		<<case "restrictive latex" "a latex catsuit">>
+		<<case "restrictive latex">>
 			is in dreadlocks, poking out of a hole in $his latex hood.
 		<<case "a string bikini" "cutoffs and a t-shirt" "a schoolgirl outfit" "a slutty maid outfit" "striped panties">>
 			is in dreadlocks, some in ties with plastic buttons, bearing the garish inscription
@@ -2371,7 +2371,7 @@ $His
 			is in dreadlocks, some tied with simple leather ties.
 		<<case "shibari rope">>
 			is in dreadlocks, some simply tied with string.
-		<<case "restrictive latex" "a latex catsuit">>
+		<<case "restrictive latex">>
 			is in dreadlocks, sticking out of a hole in $his latex hood.
 		<<case "a string bikini" "cutoffs and a t-shirt" "a schoolgirl outfit" "a slutty maid outfit" "striped panties">>
 			is in dreadlocks, some in hair ties with plastic buttons, bearing the garish inscription
@@ -2428,7 +2428,7 @@ $His
 	<<elseif $activeSlave.hLength > 10>>
 		<<switch $activeSlave.clothes>>
 		<<case "conservative clothing">>
-			is in short dreadlocks, some in simple hairties.
+			is in short dreadlocks, some in simple hair ties.
 		<<case "chains">>
 			is in short dreadlocks, some with steel rings.
 		<<case "Western clothing">>
@@ -2449,7 +2449,7 @@ $His
 			is in short dreadlocks, some with simple leather ties.
 		<<case "shibari rope">>
 			is in dreadlocks, some simply tied with string.
-		<<case "restrictive latex" "a latex catsuit">>
+		<<case "restrictive latex">>
 			is in short dreadlocks, sticking out of a hole in $his latex hood.
 		<<case "a string bikini" "cutoffs and a t-shirt" "a schoolgirl outfit" "a slutty maid outfit" "striped panties">>
 			is in short dreadlocks, some in hair ties with plastic buttons, bearing the garish inscription
@@ -2536,7 +2536,7 @@ $His
 			is curled into long flowing locks secured by leather ties.
 		<<case "shibari rope">>
 			is in long dreadlocks, some simply tied with string.
-		<<case "restrictive latex" "a latex catsuit">>
+		<<case "restrictive latex">>
 			is curled into long flowing locks poking out of a hole in $his latex hood.
 		<<case "a string bikini" "cutoffs and a t-shirt" "a schoolgirl outfit" "a slutty maid outfit" "striped panties">>
 			is curled into long flowing locks secured by hair ties with plastic buttons, bearing the garish inscription
@@ -2610,7 +2610,7 @@ $His
 			is curled into long locks, secured by leather ties.
 		<<case "shibari rope">>
 			is curled into long locks, tied back with rope.
-		<<case "restrictive latex" "a latex catsuit">>
+		<<case "restrictive latex">>
 			is curled into long locks, sticking out of a hole in $his latex hood.
 		<<case "a string bikini" "cutoffs and a t-shirt" "a schoolgirl outfit" "a slutty maid outfit" "striped panties">>
 			is curled into long locks secured by hair ties with plastic buttons, bearing the garish inscription
@@ -2663,7 +2663,7 @@ $His
 	<<elseif $activeSlave.hLength > 10>>
 		<<switch $activeSlave.clothes>>
 		<<case "conservative clothing">>
-			is curled into short locks secured by simple hairties.
+			is curled into short locks secured by simple hair ties.
 		<<case "chains">>
 			is curled into short locks secured by steel rings.
 		<<case "Western clothing">>
@@ -2684,7 +2684,7 @@ $His
 			is curled into short locks secured by leather ties.
 		<<case "shibari rope">>
 			is curled into short locks tied with rope.
-		<<case "restrictive latex" "a latex catsuit">>
+		<<case "restrictive latex">>
 			is curled into short locks, but they are covered by $his latex hood.
 		<<case "a string bikini" "cutoffs and a t-shirt" "a schoolgirl outfit" "a slutty maid outfit" "striped panties">>
 			is curled into short locks secured by hair ties with plastic buttons, bearing the garish inscription
@@ -2770,8 +2770,8 @@ $His
 		<<case "uncomfortable straps">>
 			is permed into long flowing curls secured by leather ties.
 		<<case "shibari rope">>
-			is in long dreadcurls, some simply tied with string.
-		<<case "restrictive latex" "a latex catsuit">>
+			is in long dreadlocks, some simply tied with string.
+		<<case "restrictive latex">>
 			is permed into long flowing curls poking out of a hole in $his latex hood.
 		<<case "a string bikini" "cutoffs and a t-shirt" "a schoolgirl outfit" "a slutty maid outfit" "striped panties">>
 			is permed into long flowing curls secured by hair ties with plastic buttons, bearing the garish inscription
@@ -2845,7 +2845,7 @@ $His
 			is permed and secured by leather ties.
 		<<case "shibari rope">>
 			is permed and tied back with rope.
-		<<case "restrictive latex" "a latex catsuit">>
+		<<case "restrictive latex">>
 			is permed, sticking out of a hole in $his latex hood.
 		<<case "a string bikini" "cutoffs and a t-shirt" "a schoolgirl outfit" "a slutty maid outfit" "striped panties">>
 			is permed and secured by hair ties with plastic buttons, bearing the garish inscription
@@ -2898,7 +2898,7 @@ $His
 	<<elseif $activeSlave.hLength > 10>>
 		<<switch $activeSlave.clothes>>
 		<<case "conservative clothing">>
-			is permed into short waves secured by simple hairties.
+			is permed into short waves secured by simple hair ties.
 		<<case "chains">>
 			is permed into short waves secured by steel rings.
 		<<case "Western clothing">>
@@ -2919,7 +2919,7 @@ $His
 			is permed into short waves secured by leather ties.
 		<<case "shibari rope">>
 			is permed into short waves tied with rope.
-		<<case "restrictive latex" "a latex catsuit">>
+		<<case "restrictive latex">>
 			is permed into short waves, but they are covered by $his latex hood.
 		<<case "a string bikini" "cutoffs and a t-shirt" "a schoolgirl outfit" "a slutty maid outfit" "striped panties">>
 			is permed into short waves secured by hair ties with plastic buttons, bearing the garish inscription
@@ -2990,7 +2990,7 @@ $His
 			is in luxurious layered locks flowing gorgeously down $his back.
 		<<case "a slutty qipao">>
 			is in luxurious layered locks flowing gorgeously down $his back, ornamented with little silver talismans here and there.
-		<<case "restrictive latex" "a latex catsuit">>
+		<<case "restrictive latex">>
 			is allowed a gap at the back of $his head so $his luxurious layered locks can escape to cascade down $his back.
 		<<case "harem gauze">>
 			is in luxurious layered locks flowing gorgeously down $his back, covered by a flimsy hairnet.
@@ -3050,7 +3050,7 @@ $His
 			is in luxurious layered locks.
 		<<case "a slutty qipao">>
 			is in luxurious layered locks flowing over $his shoulders, ornamented with little silver talismans here and there.
-		<<case "restrictive latex" "a latex catsuit">>
+		<<case "restrictive latex">>
 			is allowed a gap at the back of $his head so $his luxurious layered locks can escape down $his back.
 		<<case "harem gauze">>
 			is in luxurious layered locks flowing down $his back, covered by a flimsy hairnet.
@@ -3110,7 +3110,7 @@ $His
 			is in luxuriously styled short locks.
 		<<case "a slutty qipao">>
 			is in luxuriously styled short locks, brushed back and ornamented with a little jade talisman.
-		<<case "restrictive latex" "a latex catsuit">>
+		<<case "restrictive latex">>
 			is in luxuriously styled short locks, crammed under $his latex hood.
 		<<case "harem gauze">>
 			is in luxuriously styled short locks, covered by a flimsy hairnet.
@@ -3168,7 +3168,7 @@ $His
 		<<switch $activeSlave.clothes>>
 		<<case "body oil" "a huipil" "a military uniform" "a slave gown" "a halter top dress" "a ball gown" "conservative clothing" "nice business attire" "slutty business attire" "battledress" "battlearmor" "a klan robe" "a slutty klan robe" "a long qipao" "lederhosen" "a dirndl" "a mounty outfit" "a biyelgee costume" "a schutzstaffel uniform" "a slutty schutzstaffel uniform" "a red army uniform">>
 			is in luxuriously styled short locks.
-		<<case "restrictive latex" "a latex catsuit">>
+		<<case "restrictive latex">>
 			fits under $his latex hood.
 		<<case "harem gauze">>
 			is in luxuriously styled short locks covered by a flimsy hairnet.
@@ -5926,23 +5926,24 @@ $His
 
 <<widget "vaginalAccessoryDescription">>
 <<if $activeSlave.chastityVagina>>
-	$His pussy is protected by a chastity belt<<if $activeSlave.clothes != "no clothing">> worn under $his clothing<</if>>.
-	<<if $arcologies[0].FSRestart != "unset">>
-		This pleases the Societal Elite.
-	<</if>>
+	<<set _held = "held in place by a chastity belt">>
+<<elseif $activeSlave.vaginalAccessory == "bullet vibrator" || $activeSlave.vaginalAccessory == "smart bullet vibrator">>
+	<<set _held = "held in place by a strap">>
+<<else>>
+	<<set _held = "held in place by a strap, which $he can remove for vaginal intercourse">>
 <</if>>
 <<switch $activeSlave.vaginalAccessory>>
 <<case "bullet vibrator" "smart bullet vibrator">>	/* FIXME: two different descriptions? */
-	A bullet vibrator is attached on $his clit, held in place by a strap.	/* FIXME: not super happy with this */
+	A bullet vibrator is attached on $his clit, _held.	/* FIXME: not super happy with this */
 <<case "dildo">>
 	/* TODO: these may need to be updated for slaves with gaping+ vaginas */
-	$His pussy is filled by a dildo held in place by a strap, which $he can remove for vaginal intercourse.
+	$His pussy is filled by a dildo _held.
 <<case "long dildo">>
-	$His pussy is filled by a very long dildo held in place by a strap, which $he can remove for vaginal intercourse. It noticeably bulges $his stomach.
+	$His pussy is filled by a very long dildo _held. It noticeably bulges $his stomach.
 <<case "large dildo">>
-	$His pussy is <<if $activeSlave.vagina < 2>>painfully stretched<<elseif $activeSlave.vagina < 3>>uncomfortably filled<<else>>comfortably filled<</if>> by a large dildo held in place by a strap, which $he can remove for vaginal intercourse.
+	$His pussy is <<if $activeSlave.vagina < 2>>painfully stretched<<elseif $activeSlave.vagina < 3>>uncomfortably filled<<else>>comfortably filled<</if>> by a large dildo _held.
 <<case "long, large dildo">>
-	$His pussy is <<if $activeSlave.vagina < 2>>painfully stretched<<elseif $activeSlave.vagina < 3>>uncomfortably filled<<else>>comfortably filled<</if>> by a very long and large dildo held in place by a strap, which $he can remove for vaginal intercourse. It noticeably bulges $his stomach.
+	$His pussy is <<if $activeSlave.vagina < 2>>painfully stretched<<elseif $activeSlave.vagina < 3>>uncomfortably filled<<else>>comfortably filled<</if>> by a very long and large dildo _held. It noticeably bulges $his stomach.
 <<case "huge dildo">>
 	<<if $activeSlave.vagina < 4>>
 		$His pussy is filled to the breaking point by an enormous dildo.
@@ -5954,6 +5955,9 @@ $His
 	<<else>>
 		$His cavernous pussy is comfortably filled by a huge dildo.
 	<</if>>
+	<<if $activeSlave.chastityVagina>>
+		A chastity belt locks it securely in place.
+	<</if>>
 <<case "long, huge dildo">>
 	<<if $activeSlave.vagina < 4>>
 		$His pussy is filled to the breaking point by an enormously wide and long dildo. It noticeably bulges $his stomach.
@@ -5965,15 +5969,32 @@ $His
 	<<else>>
 		$His cavernous pussy is comfortably filled by an enormously wide and long dildo. It noticeably bulges $his stomach.
 	<</if>>
+	<<if $activeSlave.chastityVagina>>
+		A chastity belt locks it securely in place.
+	<</if>>
+<<default>>
+	<<if $activeSlave.chastityVagina>>
+		$His pussy is protected by a chastity belt<<if $activeSlave.clothes != "no clothing">> worn under $his clothing<</if>>.
+	<</if>>
 <</switch>>
+<<if $activeSlave.chastityVagina && $arcologies[0].FSRestart != "unset">>
+	This pleases the Societal Elite.
+<</if>>
 <</widget>>
 
 <<widget "vaginalAttachmentDescription">>
 <<switch $activeSlave.vaginalAttachment>>
+<<case "vibrator">>
 	/* TODO: not sure about this description */
-	$His pussy is filled with a vibrating dildo held in place by a strap, which $he can remove for vaginal intercourse. $He looks distinctly uncomfortable as it buzzes every so often.
+	$He looks distinctly uncomfortable as $his dildo buzzes every so often.
+	<<if $activeSlave.chastityVagina>>
+		The chastity belt locking it in place means there is no escape.
+	<</if>>
 	/* TODO: add descriptions for slaves with gaping+ vaginas */
-<<case "vibrator">>
+<<default>>
+	<<if $activeSlave.vaginalAccessory != "none">>
+		$His current accessory is silent.
+	<</if>>
 <</switch>>
 <</widget>>
 
diff --git a/src/utility/miscWidgets.tw b/src/utility/miscWidgets.tw
index f6cc307d52fc7a12636aabe21cf7acd57ff768f7..e5951ea84a16cc0c93ca7eca4765a7020dbb3c9e 100644
--- a/src/utility/miscWidgets.tw
+++ b/src/utility/miscWidgets.tw
@@ -770,37 +770,6 @@ This experience
 <</if>>
 <</widget>>
 
-/%
- Call as <<SlaveInteractFucktoy>>
-%/
-<<widget "SlaveInteractFucktoy">>
-
-<<replace #fucktoypref>>
-	<<if ($activeSlave.assignment == "please you") || ($activeSlave.assignment == "serve in the master suite") || ($activeSlave.assignment == "be your Concubine")>>
-		__Fucktoy use preference__: <strong><span id="hole">$activeSlave.toyHole</span></strong>.
-		<<link "Mouth">><<set $activeSlave.toyHole = "mouth">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>>
-		| <<link "Tits">><<set $activeSlave.toyHole = "boobs">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>>
-		<<if ($activeSlave.vagina > 0) && canDoVaginal($activeSlave)>>
-			| <<link "Pussy">><<set $activeSlave.toyHole = "pussy">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>>
-		<<elseif ($activeSlave.vagina == 0)>>
-			| //Take $his virginity before giving $his pussy special attention//
-		<</if>>
-		<<if ($activeSlave.anus > 0) && canDoAnal($activeSlave)>>
-			| <<link "Ass">><<set $activeSlave.toyHole = "ass">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>>
-		<<else>>
-			| //Take $his anal virginity before giving $his ass special attention//
-		<</if>>
-		/*check*/
-		<<if ($activeSlave.dick > 0) && canPenetrate($activeSlave)>>
-			| <<link "Dick">><<set $activeSlave.toyHole = "dick">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>>
-		<</if>>
-		| <<link "No Preference">><<set $activeSlave.toyHole = "all her holes">><<replace "#hole">>$activeSlave.toyHole<</replace>><</link>>
-		<br>
-	<</if>>
-<</replace>>
-
-<</widget>>
-
 /*
  OBSOLETE: Use setPregType()instead!
  Call as <<SetPregType>>
diff --git a/src/utility/saRulesWidgets.tw b/src/utility/saRulesWidgets.tw
index 197b900dbc1bd96b248556a7b32061bdd31973f3..65c209c7242e54397fe6f9d7ed8fa387c9b55b04 100644
--- a/src/utility/saRulesWidgets.tw
+++ b/src/utility/saRulesWidgets.tw
@@ -193,7 +193,7 @@ and
 									<<set $slaves[$i].trust += 1>>
 								<</if>>
 							<<else>>
-								$He refuses to come to you for help with $his terribly swollen balls, no matter how backed up $he becomes. The intense blueballing only @@.mediumorchid;makes $him dislike you more.@@
+								$He refuses to come to you for help with $his terribly swollen balls, no matter how backed up $he becomes. The intense blue-balling only @@.mediumorchid;makes $him dislike you more.@@
 								<<set $slaves[$i].devotion -= 1>>
 							<</if>>
 						<<elseif $slaves[$i].drugs == "hyper testicle enhancement">>
@@ -222,7 +222,7 @@ and
 									<<set $slaves[$i].trust += 1>>
 								<</if>>
 							<<else>>
-								$He refuses to come to you for help with $his grotesquely swollen balls, no matter how backed up and sore $he becomes. The intense blueballing only @@.mediumorchid;makes $him hate you more.@@
+								$He refuses to come to you for help with $his grotesquely swollen balls, no matter how backed up and sore $he becomes. The intense blue-balling only @@.mediumorchid;makes $him hate you more.@@
 								<<set $slaves[$i].devotion -= 3>>
 							<</if>>
 						<</if>>
diff --git a/src/utility/slaveCreationWidgets.tw b/src/utility/slaveCreationWidgets.tw
index 101e55033f596843f9a5addf9dfba5c73ba4a8ac..405626813fa8bed1f63235de2b9a6ef5fff58439 100644
--- a/src/utility/slaveCreationWidgets.tw
+++ b/src/utility/slaveCreationWidgets.tw
@@ -528,8 +528,8 @@
 %/
 <<widget "CustomSlaveWhoreSkills">>
 	<<replace #whoreskills>>
-		<<if $customSlave.skill.whores <= 10>>Unskilled at prostitution and entertainment.
-		<<elseif $customSlave.skill.whores <= 15>>Basic prostitution and entertainment skills.
+		<<if $customSlave.skill.whore <= 10>>Unskilled at prostitution and entertainment.
+		<<elseif $customSlave.skill.whore <= 15>>Basic prostitution and entertainment skills.
 		<<else>>Skilled at prostitution and entertainment.
 		<</if>>
 	<</replace>>
@@ -540,7 +540,7 @@
 %/
 <<widget "CustomSlaveCombatSkills">>
 	<<replace #combatskills>>
-		<<if $customSlave.skill.combats == 0>>Unskilled at combat.
+		<<if $customSlave.skill.combat == 0>>Unskilled at combat.
 		<<else>>Skilled at combat.
 		<</if>>
 	<</replace>>
@@ -818,7 +818,7 @@
 	<</if>>
 	<<if $corpSpecEducation > 0>>
 		<<set $activeSlave.intelligenceImplant = 15 * $corpSpecEducation,
-		$activeSlave.skill.whore = Math.clamp($activeSlave.skill.whore, 15 * $corpSpecEducation, 100),
+		$activeSlave.skill.whoring = Math.clamp($activeSlave.skill.whoring, 15 * $corpSpecEducation, 100),
 		$activeSlave.skill.entertainment = Math.clamp($activeSlave.skill.entertainment, 15 * $corpSpecEducation, 100)>>
 		<<if $corpSpecEducation == 1>>
 			Its slave students receive basic slave educations.
@@ -1612,7 +1612,7 @@
 	<<set $activeSlave.skill.vaginal = 0>>
 	<<set $activeSlave.skill.oral = 0>>
 	<<set $activeSlave.skill.anal = 0>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.entertainment = 0>>
 	<<set $activeSlave.skill.combat = 0>>
 	<<set $activeSlave.addict = either(0, 0, 0, 10, 10, 20, 30)>>
@@ -1664,7 +1664,7 @@
 	<<set $activeSlave.skill.vaginal = random(50,100)>>
 	<<set $activeSlave.skill.oral = random(50,100)>>
 	<<set $activeSlave.skill.anal = random(50,100)>>
-	<<set $activeSlave.skill.whore = random(50,100)>>
+	<<set $activeSlave.skill.whoring = random(50,100)>>
 	<<set $activeSlave.skill.entertainment = random(50,100)>>
 	<<switch $activeSlave.career>>
 		<<case "a lawyer">>
@@ -1690,7 +1690,7 @@
 		<<case "a teacher">>
 			<<set $activeSlave.slaveName = "WCPU-TE">>
 	<</switch>>
-	<<set $activeSlave.slaveSurname = "#"+$activeSlave.skill.vaginal+$activeSlave.skill.oral+$activeSlave.skill.anal+$activeSlave.skill.whore+$activeSlave.skill.entertainment+"-"+$activeSlave.intelligence>>
+	<<set $activeSlave.slaveSurname = "#"+$activeSlave.skill.vaginal+$activeSlave.skill.oral+$activeSlave.skill.anal+$activeSlave.skill.whoring+$activeSlave.skill.entertainment+"-"+$activeSlave.intelligence>>
 	<<set $activeSlave.birthName = "", $activeSlave.birthSurname = "">>
 	<<if $activeSlave.career == "a soldier">>
 		<<set $activeSlave.skill.combat = 1>>
@@ -1774,7 +1774,7 @@
 	<</if>>
 	<<set $activeSlave.skill.combat = either(0, 0, 0, 0, 0, 1)>>
 	<<set $activeSlave.skill.entertainment = random(15,100)>>
-	<<set $activeSlave.skill.whore = random(15,100)>>
+	<<set $activeSlave.skill.whoring = random(15,100)>>
 	<<set $activeSlave.skill.oral = random(15,100)>>
 	<<set $activeSlave.skill.anal = random(15,100)>>
 	<<set $activeSlave.anus = random(1,3)>>
@@ -1828,7 +1828,7 @@
 	<<set $activeSlave.skill.anal = 0>>
 	<<set $activeSlave.anus = 0>>
 	<<set $activeSlave.skill.oral = 0>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 
 
 <<case "raiders">>
@@ -1857,7 +1857,7 @@
 	<<if random(1,2) == 1>>
 		<<set $activeSlave.skill.oral = 0>>
 	<</if>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 
 
 <<case "trainers">>
@@ -1934,13 +1934,13 @@
 		<<set $activeSlave.skill.vaginal = 0>>
 		<<set $activeSlave.skill.oral = 0>>
 		<<set $activeSlave.skill.anal = 0>>
-		<<set $activeSlave.skill.whore = 0>>
+		<<set $activeSlave.skill.whoring = 0>>
 		<<set $activeSlave.skill.entertainment = 15>>
 	<<else>>
 		<<set $activeSlave.skill.vaginal = 15>>
 		<<set $activeSlave.skill.oral = 15>>
 		<<set $activeSlave.skill.anal = 15>>
-		<<set $activeSlave.skill.whore = 15>>
+		<<set $activeSlave.skill.whoring = 15>>
 		<<set $activeSlave.skill.entertainment = 15>>
 	<</if>>
 	<<set $activeSlave.skill.combat = 0>>
@@ -1989,7 +1989,7 @@
 	<<set $activeSlave.skill.vaginal = 0>>
 	<<set $activeSlave.skill.oral = 0>>
 	<<set $activeSlave.skill.anal = 0>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.entertainment = 0>>
 	<<set $activeSlave.skill.combat = 0>>
 	<<set $activeSlave.pubicHStyle = "waxed">>
@@ -2045,13 +2045,13 @@
 		<<set $activeSlave.skill.vaginal = 15>>
 		<<set $activeSlave.skill.oral = 15>>
 		<<set $activeSlave.skill.anal = 15>>
-		<<set $activeSlave.skill.whore = 15>>
+		<<set $activeSlave.skill.whoring = 15>>
 		<<set $activeSlave.skill.entertainment = 15>>
 	<<else>>
 		<<set $activeSlave.skill.vaginal = 0>>
 		<<set $activeSlave.skill.oral = 0>>
 		<<set $activeSlave.skill.anal = 0>>
-		<<set $activeSlave.skill.whore = 0>>
+		<<set $activeSlave.skill.whoring = 0>>
 		<<set $activeSlave.skill.entertainment = 0>>
 	<</if>>
 	<<set $activeSlave.skill.combat = 0>>
@@ -2120,7 +2120,7 @@
 	<<set $activeSlave.skill.vaginal = 0>>
 	<<set $activeSlave.skill.oral = 15>>
 	<<set $activeSlave.skill.anal = 100>>
-	<<set $activeSlave.skill.whore = 15>>
+	<<set $activeSlave.skill.whoring = 15>>
 	<<set $activeSlave.skill.entertainment = 15>>
 	<<set $activeSlave.skill.combat = 0>>
 	<<set $activeSlave.pubicHStyle = "waxed">>
@@ -2168,7 +2168,7 @@
 	<<set $activeSlave.skill.vaginal = 0>>
 	<<set $activeSlave.skill.oral = 0>>
 	<<set $activeSlave.skill.anal = 0>>
-	<<set $activeSlave.skill.whore = 0>>
+	<<set $activeSlave.skill.whoring = 0>>
 	<<set $activeSlave.skill.entertainment = 0>>
 	<<if $TGA.schoolUpgrade == 2>>
 		<<set $activeSlave.skill.combat = 1>>
@@ -2217,7 +2217,7 @@
 		<<set $activeSlave.skill.vaginal = 0>>
 		<<set $activeSlave.skill.oral = 0>>
 		<<set $activeSlave.skill.anal = 0>>
-		<<set $activeSlave.skill.whore = 0>>
+		<<set $activeSlave.skill.whoring = 0>>
 		<<set $activeSlave.skill.entertainment = 0>>
 		<<set $activeSlave.skill.combat = 0>>
 		<<set $activeSlave.pubicHStyle = "waxed">>
@@ -2256,7 +2256,7 @@
 		<<set $activeSlave.skill.vaginal = 0>>
 		<<set $activeSlave.skill.oral = 0>>
 		<<set $activeSlave.skill.anal = 0>>
-		<<set $activeSlave.skill.whore = 0>>
+		<<set $activeSlave.skill.whoring = 0>>
 		<<set $activeSlave.skill.entertainment = 0>>
 		<<set $activeSlave.skill.combat = 0>>
 		<<set $activeSlave.pubicHStyle = "waxed">>
@@ -2310,7 +2310,7 @@
 		<<set $activeSlave.skill.vaginal = 0>>
 		<<set $activeSlave.skill.oral = 0>>
 		<<set $activeSlave.skill.anal = 0>>
-		<<set $activeSlave.skill.whore = 0>>
+		<<set $activeSlave.skill.whoring = 0>>
 		<<set $activeSlave.skill.entertainment = 0>>
 		<<set $activeSlave.skill.combat = 0>>
 		<<set $activeSlave.pubicHStyle = "waxed">>
@@ -2544,7 +2544,7 @@
 	<<set $activeSlave.skill.vaginal = 100>>
 	<<set $activeSlave.skill.oral = 100>>
 	<<set $activeSlave.skill.anal = 100>>
-	<<set $activeSlave.skill.whore = 15>>
+	<<set $activeSlave.skill.whoring = 15>>
 	<<set $activeSlave.skill.entertainment = 100>>
 	<<set $activeSlave.skill.combat = 0>>
 	<<set $activeSlave.pubicHStyle = "waxed">>
@@ -2612,14 +2612,14 @@
 		<<set $activeSlave.skill.vaginal = either(20,20,40)>>
 		<<set $activeSlave.skill.oral = either(20,20,40)>>
 		<<set $activeSlave.skill.anal = either(20,20,40)>>
-		<<set $activeSlave.skill.whore = either(20,20,40)>>
+		<<set $activeSlave.skill.whoring = either(20,20,40)>>
 		<<set $activeSlave.skill.entertainment = either(60,80,80,100)>>
 	<<else>>
 		<<set $activeSlave.intelligence = random(0,20)>>
 		<<set $activeSlave.skill.vaginal = 10>>
 		<<set $activeSlave.skill.oral = 10>>
 		<<set $activeSlave.skill.anal = 10>>
-		<<set $activeSlave.skill.whore = 10>>
+		<<set $activeSlave.skill.whoring = 10>>
 		<<set $activeSlave.skill.entertainment = either(20,40,40,60)>>
 	<</if>>
 	<<set $activeSlave.skill.combat = 1>>
@@ -3581,7 +3581,7 @@
 	/* Closes Security */
 	/* Opens management */
 		<<case "Headgirl">>
-			<<set $activeSlave.devotion = 90, $activeSlave.trust = 100, $activeSlave.fetish = "dom", $activeSlave.fetishStrength = 100, $activeSlave.energy = random(70,90), $activeSlave.intelligence = random(60,100), $activeSlave.skill.entertainment = 100, $activeSlave.skill.whore = 100, $activeSlave.skill.anal = 100, $activeSlave.skill.oral = 100, $activeSlave.skill.vaginal = 100, $activeSlave.career = either("a lawyer", "a military officer", "a politician")>>
+			<<set $activeSlave.devotion = 90, $activeSlave.trust = 100, $activeSlave.fetish = "dom", $activeSlave.fetishStrength = 100, $activeSlave.energy = random(70,90), $activeSlave.intelligence = random(60,100), $activeSlave.skill.entertainment = 100, $activeSlave.skill.whoring = 100, $activeSlave.skill.anal = 100, $activeSlave.skill.oral = 100, $activeSlave.skill.vaginal = 100, $activeSlave.career = either("a lawyer", "a military officer", "a politician")>>
 			<<if $seeDicks > 0>>
 				<<set $activeSlave.dick = random(3,5), $activeSlave.balls = random(3,6), $activeSlave.scrotum = $activeSlave.balls, $activeSlave.prostate = either(1,1,2)>>
 			<</if>>
@@ -3593,7 +3593,7 @@
 			<</if>>
 			<<set $activeSlave.physicalAge = $activeSlave.actualAge, $activeSlave.visualAge = $activeSlave.actualAge, $activeSlave.ovaryAge = $activeSlave.actualAge>>
 		<<case "Teacher">>
-			<<set $activeSlave.fetish = "dom", $activeSlave.fetishStrength = 100, $activeSlave.energy = random(70,90), $activeSlave.intelligence = 100, $activeSlave.skill.entertainment = 100, $activeSlave.skill.whore = 100, $activeSlave.skill.anal = 100, $activeSlave.skill.oral = 100, $activeSlave.skill.vaginal = 100, $activeSlave.face = random(41,90), $activeSlave.career = either("a librarian", "a principal", "a private instructor", "a professor", "a scholar", "a scientist", "a teacher", "a teaching assistant")>>
+			<<set $activeSlave.fetish = "dom", $activeSlave.fetishStrength = 100, $activeSlave.energy = random(70,90), $activeSlave.intelligence = 100, $activeSlave.skill.entertainment = 100, $activeSlave.skill.whoring = 100, $activeSlave.skill.anal = 100, $activeSlave.skill.oral = 100, $activeSlave.skill.vaginal = 100, $activeSlave.face = random(41,90), $activeSlave.career = either("a librarian", "a principal", "a private instructor", "a professor", "a scholar", "a scientist", "a teacher", "a teaching assistant")>>
 			<<if $seeDicks > 0>>
 				<<set $activeSlave.dick = random(3,5), $activeSlave.balls = random(3,6), $activeSlave.scrotum = $activeSlave.balls, $activeSlave.prostate = either(1,1,1,2,2,3)>>
 			<</if>>
@@ -3646,7 +3646,7 @@
 		<<case "DJ">>
 			<<set $activeSlave.skill.entertainment = 100, $activeSlave.muscles = random(6,30), $activeSlave.face = random(80,100), $activeSlave.career = either("a classical dancer", "a classical musician", "a dancer", "a house DJ", "a musician", "an aspiring pop star")>>
 		<<case "Madam">>
-			<<set $activeSlave.skill.whore = 100, $activeSlave.career = either("a business owner", "a manager", "a pimp", "a procuress", "an innkeeper")>>
+			<<set $activeSlave.skill.whoring = 100, $activeSlave.career = either("a business owner", "a manager", "a pimp", "a procuress", "an innkeeper")>>
 			<<if $seeDicks > 0>>
 				<<set $activeSlave.dick = random(3,5), $activeSlave.balls = random(3,5), $activeSlave.scrotum = $activeSlave.balls, $activeSlave.prostate = either(1,1,1,2)>>
 			<</if>>
@@ -3657,7 +3657,7 @@
 			<</if>>
 			<<set $activeSlave.physicalAge = $activeSlave.actualAge, $activeSlave.visualAge = $activeSlave.actualAge, $activeSlave.ovaryAge = $activeSlave.actualAge>>
 		<<case "Concubine">>
-			<<set $activeSlave.prestige = 3, $activeSlave.energy = random(80,100), $activeSlave.skill.entertainment = 100, $activeSlave.skill.whore = 100, $activeSlave.skill.anal = 100, $activeSlave.skill.oral = 100, $activeSlave.skill.vaginal = 100, $activeSlave.face = 100, $activeSlave.devotion = random(90,95), $activeSlave.trust = random(90,100)>>
+			<<set $activeSlave.prestige = 3, $activeSlave.energy = random(80,100), $activeSlave.skill.entertainment = 100, $activeSlave.skill.whoring = 100, $activeSlave.skill.anal = 100, $activeSlave.skill.oral = 100, $activeSlave.skill.vaginal = 100, $activeSlave.face = 100, $activeSlave.devotion = random(90,95), $activeSlave.trust = random(90,100)>>
 		/* Closes Entertain */
 		<</switch>>
 <</widget>>