diff --git a/.eslintrc.json b/.eslintrc.json
index 79f2fa4db6e21149322a7b6a69195e8eb13ef92d..23d7a4227ab861a9ef96cef7d8c613ba06caec2c 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -83,11 +83,6 @@
 			{
 				"allowSingleLine": true
 			}
-		],
-		"jsdoc/check-alignment": 1,
-		"jsdoc/check-indentation": 1,
-		"jsdoc/check-param-names": 1,
-		"jsdoc/check-syntax": 1,
-		"jsdoc/check-tag-names": 1
+		]
 	}
 }
diff --git a/Changelog.txt b/Changelog.txt
index d5241bc0bbfaa8f9a46e5dad119b6e62e30caa8f..4aab10f0d724d8dc2825311a94650cbbcb0006f8 100644
--- a/Changelog.txt
+++ b/Changelog.txt
@@ -1,5 +1,13 @@
 Pregmod
 
+0.10.7.1-2.5.x
+
+	0
+	-RA refactoring
+	-superfetation tweaks
+	-preg analysis can now identify genetic quirks in fetuses
+	-fixes
+
 0.10.7.1-2.4.x
 
 05/25/2019
diff --git a/src/js/DefaultRules.js b/src/js/DefaultRules.js
index 92139a61d17188db65f0568452ac0200b6933e52..e104db7834b168da9a08e819aca03f16b846f319 100644
--- a/src/js/DefaultRules.js
+++ b/src/js/DefaultRules.js
@@ -1316,7 +1316,7 @@ window.DefaultRules = (function() {
 		if ((slave.drugs === "super fertility drugs" || slave.drugs === "fertility drugs") && isFertile(slave)) {
 			r += `<br>${slave.slaveName} is on ${slave.drugs} and will not be considered for drug enhancement until that regime is complete.`;
 			return;
-		} else if ((rule.growth.boobs === null && rule.growth.butt === null && rule.growth.lips === null && rule.growth.dick === null && rule.growth.balls === null)) {
+		} else if (slave.indentureRestrictions > 1 || (rule.growth.boobs === null && rule.growth.butt === null && rule.growth.lips === null && rule.growth.dick === null && rule.growth.balls === null)) {
 			return;
 		}
 
diff --git a/src/js/SlaveState.js b/src/js/SlaveState.js
index 1c810000a9cd3181ec45c562efeb15cb01851b58..b920ae803e62e057b227247edc2d4eaa60fa8ecb 100644
--- a/src/js/SlaveState.js
+++ b/src/js/SlaveState.js
@@ -723,9 +723,13 @@ App.Entity.SlaveState = class SlaveState {
 		 * * 7000-7499 - X-cup
 		 * * 7500-7999 - Y-cup
 		 * * 8000-8499 - Z-cup
-		 * * 8500-19999 - obscenely massive
-		 * * 20000-29999 - beanbag sized
-		 * * 30000-48000 - room filling
+		 * * 8500-14999 - obscenely massive
+		 * * 15000-24999 - arm filling
+		 * * 25000-39999 - figure dominating
+		 * * 40000-54999 - beanbag sized
+		 * * 55000-69999 - door jamming
+		 * * 70000-89999 - hall clearing
+		 * * 90000-100000 - hall jamming
 		 */
 		this.boobs = 0;
 		/** breast engorgement from unmilked tits */
diff --git a/src/js/datatypeCleanupJS.js b/src/js/datatypeCleanupJS.js
index e4c82a737cccef1698efc17877c3179f3dafe5c2..2e4f99dd086bf02a88e772622314ceb7d69bf1ca 100644
--- a/src/js/datatypeCleanupJS.js
+++ b/src/js/datatypeCleanupJS.js
@@ -1958,8 +1958,11 @@ App.Entity.Utils.RARuleDatatypeCleanup = function() {
 
 	/** @param {App.RA.Rule} rule */
 	function ruleCleanup(rule) {
-		cleanupConditions(rule.condition);
-		cleanupSetters(rule.set);
+		// ensure rule has all required propertirs
+		let newRule = App.RA.ruleDeepAssign(emptyDefaultRule(), rule)
+		cleanupConditions(newRule.condition);
+		cleanupSetters(newRule.set);
+		return newRule;
 	}
 
 	/** @param {App.RA.RuleConditions} cond */
@@ -1976,12 +1979,11 @@ App.Entity.Utils.RARuleDatatypeCleanup = function() {
 
 	/** @param {Object} o */
 	function replaceDefaultValues(o) {
-		for (const k in o) {
-			const v = o[k];
-			if (typeof v === 'object') {
-				replaceDefaultValues(v);
-			} else if (v === "no default setting") {
+		for (const [k, v] of Object.entries(o)) {
+			if (v === "no default setting" || v === "no default change" || Number.isNaN(v) || v === undefined) {
 				o[k] = null;
+			} else if (v !== null && typeof v === 'object') {
+				replaceDefaultValues(v);
 			}
 		}
 	}
@@ -2016,14 +2018,6 @@ App.Entity.Utils.RARuleDatatypeCleanup = function() {
 		settersSchemeCleanup(set);
 		replaceDefaultValues(set);
 
-		function ensureProps(obj, props) {
-			props.forEach(prop => {
-				if (!obj.hasOwnProperty(prop) || obj[prop] === undefined) {
-					obj[prop] = null;
-				}
-			});
-		}
-
 		function transformValues(obj, props, cb) {
 			props.forEach(p => {
 				let v = obj[p];
@@ -2036,24 +2030,19 @@ App.Entity.Utils.RARuleDatatypeCleanup = function() {
 		function ensureNumTarget(val) {
 			switch (typeof val) {
 				case 'number':
-					return App.RA.makeTarget('==', val);
+					return Number.isNaN(val) ? null : App.RA.makeTarget('==', val);
 				case 'string':
 						return App.RA.makeTarget('==', parseInt(val));
+				case 'object':
+					if (val.hasOwnProperty('val') && (val.val === null || Number.isNaN(val.val))) {
+						return null;
+					}
+					return val;
 				default:
 					return val;
 			}
 		}
 
-		ensureProps(set, [
-			'haircuts', 'label', 'removeLabel', 'skinColor',
-			'earwear', 'toyHole', 'pornFeed', 'legAccessory', 'hyper_drugs'
-		]);
-
-		ensureProps(set.surgery, [
-			'hears', 'smells', 'tastes',
-			'tummy', 'vasectomy'
-		]);
-
 		if (!([true, false, null].includes(set.preg))) {
 			set.preg = (set.preg === -1);
 		}
diff --git a/src/js/pregJS.js b/src/js/pregJS.js
index c7e0f29bc83fbe67bea9783ec1709da3ec98e161..b9d43c50ef6369c74f6daafbe478ac6ad21ca867 100644
--- a/src/js/pregJS.js
+++ b/src/js/pregJS.js
@@ -122,7 +122,7 @@ window.setPregType = function(actor) {
 				}
 			}
 			ovum = Math.clamp(ovum, 0, 8);
-		} else if (actor.preg === 0 || (actor.geneticQuirks.superfetation > 1 && actor.preg >= 0)) {
+		} else {
 			if (actor.eggType === "horse" || actor.eggType === "cow") {
 				if (actor.geneticQuirks.fertility === 2 && actor.geneticQuirks.hyperFertility === 2) { // Do not mix with sperm
 					ovum += jsEither([0, 0, 0, 0, 0, 0, 1]);
diff --git a/src/js/rulesAssistant.js b/src/js/rulesAssistant.js
index a3ac052c10c6dfe4a350716aed8d3e63804f6e0b..51209fa434df629d7b2d53eaff559aa0c75a0339 100644
--- a/src/js/rulesAssistant.js
+++ b/src/js/rulesAssistant.js
@@ -58,23 +58,18 @@ window.lastPregRule = function(slave, rules) {
 };
 
 /**
- * @param {App.RA.Rule[]} rules
+ * @param {App.RA.RuleSetters[]} rules
  * @returns {App.RA.RuleSetters}
  */
 window.mergeRules = function(rules) {
-	const combinedRule = {};
+	if (rules.length === 0) {
+		return emptyDefaultRule().set;
+	}
+
+	const combinedRule = emptyDefaultRule().set;
+
 	rules.forEach(rule => {
-		// A rule overrides any preceding ones if,
-		// * there are no preceding ones,
-		// * or it sets autoBrand,
-		// * or it does not set autoBrand and is not null
-		Object.keys(rule).forEach(key => {
-			const applies = (combinedRule[key] === undefined ||
-				(key === "autoBrand" && rule[key]) ||
-				(key !== "autoBrand" && rule[key] !== null));
-			if (!applies) { return; }
-			combinedRule[key] = rule[key];
-		});
+		App.RA.ruleDeepAssign(combinedRule, rule);
 	});
 	return combinedRule;
 };
@@ -407,52 +402,99 @@ window.RulesDeconfliction = function RulesDeconfliction(slave) {
  * Creates a table to summarize RA
  * @returns {string}
  */
-window.RASummaryCell = function RASummaryCell() {
+window.RASummaryCell = function() {
+	/**
+	 * @param {object[]} objects
+	 * @param {string[]} member
+	 */
+	function collectMemberFromObjects(objects, member) {
+		let r = [];
+		for (const o of objects) {
+			let to = o;
+			for (const m of member) {
+				to = to[m];
+			}
+			r.push(to);
+		}
+		return r;
+	}
+
+	/**
+	 * @callback ObjectWalker
+	 * @param {object} obj
+	 * @param {string[]} memberPath
+	 */
+
+	/**
+	 * @param {object} obj
+	 * @param {ObjectWalker} walker
+	 * @param {string[]} path
+	 */
+	function walkObject(obj, walker, path) {
+		for (const prop in obj) {
+			const v = obj[prop];
+			const vp = path.concat([prop]);
+			if (v !== null && typeof v === 'object') {
+				walkObject(v, walker, vp);
+			} else {
+				walker(obj, vp);
+			}
+		}
+	}
+
+	/**
+	 * @param {string[]} path
+	 * @param {Array} cells
+	 * @param {string[]} table
+	 */
+	function addRow(path, cells, table) {
+		if (!cells.some(v => v !== null)) { // skip empty rows
+			return;
+		}
+
+		function ruleSetValueToString(v) {
+			if (typeof v === 'object' && v.hasOwnProperty('cond') && v.hasOwnProperty('val')) {
+				return `<nowiki>${v.cond}</nowiki>&nbsp;${v.val}`;
+			}
+			return `${v}`;
+		}
+
+		let r = `<td>${path.join('.')}</td>`;
+		for (const cell of cells) {
+			r += cell !== null ? `<td>${ruleSetValueToString(cell)}</td>` : '<td/>';
+		}
+		table.push(r);
+	}
+
 	const V = State.variables;
+	/** @type {App.RA.Rule[]} */
+	const rules = V.defaultRules;
 	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;
+
+	if (rules.length === 0) {
+		return '';
+	}
 
 	/* 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>`;
+	for (const rule of rules) {
+		r += `<td>${rule.name}</td>`;
 	}
 	r += `</tr>`;
 
+	const setters = rules.map(r => r.set);
 	/* 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/"obedient 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>`;
-		}
+	let tableRows = [];
+	walkObject(emptyDefaultRule().set, (obj, path) => {
+		addRow(path, collectMemberFromObjects(setters, path), tableRows);
+	}, []);
+
+	for (const row of tableRows) {
+		r += `<tr>${row}</tr>`;
 	}
 	return r;
 };
@@ -495,3 +537,34 @@ App.RA.shallShrink = function(current, target, step = 1) {
 		((current > target.val) && (target.cond === '<=' || target.cond === '<')) ||
 		(current === target.val && target.cond === '<'));
 };
+
+App.RA.ruleDeepAssign = function deepAssign(target, source) {
+	function isObject(o) {
+		return (o !== undefined && o !== null && typeof o === 'object' && !Array.isArray(o));
+	}
+
+	for (const key in source) {
+		if (!source.hasOwnProperty(key)) {
+			continue;
+		}
+		if (isObject(source[key])) {
+			if (!target.hasOwnProperty(key) || target[key] === null) {
+				target[key] = {};
+			}
+			deepAssign(target[key], source[key]);
+		} else {
+			// A rule overrides any preceding ones if,
+			// * there are no preceding ones,
+			// * or it sets autoBrand,
+			// * or it does not set autoBrand and is not null
+			const overrides = (
+				target[key] === undefined || target[key] === null ||
+				(key === "autoBrand" && source[key]) ||
+				(key !== "autoBrand" && source[key] !== null));
+			if (overrides) {
+				target[key] = source[key];
+			}
+		}
+	}
+	return target;
+};
diff --git a/src/js/rulesAssistantOptions.js b/src/js/rulesAssistantOptions.js
index 12c3640048c76ae4bb8e05883211ed9bc8eb92c9..90f2061c0d27466da5c1cbdb949fe748e2ce1918 100644
--- a/src/js/rulesAssistantOptions.js
+++ b/src/js/rulesAssistantOptions.js
@@ -294,6 +294,9 @@ window.rulesAssistantOptions = (function() {
 		constructor(prefix, data = [], allowNullValue = true, textinput = false) {
 			super(prefix, data, allowNullValue, textinput);
 			this.values = new Map();
+			if (allowNullValue) {
+				this.values.set(null, "no default setting");
+			}
 			data.forEach(d => {
 				if (Array.isArray(d) && d.length > 1) {
 					this.values.set(d[1], d[0]);
@@ -301,6 +304,7 @@ window.rulesAssistantOptions = (function() {
 					this.values.set(d, d);
 				}
 			});
+			this.selectedValue = null;
 		}
 
 		createEditor() {
@@ -317,7 +321,12 @@ window.rulesAssistantOptions = (function() {
 			return res;
 		}
 
+		getData(what) {
+			return this.selectedValue;
+		}
+
 		setValue(what) {
+			this.selectedValue = what;
 			if (this.values.has(what)) {
 				super.setValue(this.values.get(what));
 			} else {
@@ -541,12 +550,10 @@ window.rulesAssistantOptions = (function() {
 				const rule = JSON.parse(text);
 				if (Array.isArray(rule)) {
 					rule.forEach(r => {
-						App.Entity.Utils.RARuleDatatypeCleanup(r);
-						V.defaultRules.push(r);
+						V.defaultRules.push(App.Entity.Utils.RARuleDatatypeCleanup(r));
 					});
 				} else {
-					App.Entity.Utils.RARuleDatatypeCleanup(rule);
-					V.defaultRules.push(rule);
+					V.defaultRules.push(App.Entity.Utils.RARuleDatatypeCleanup(rule));
 				}
 				reload(this.root);
 			} catch (error) {
diff --git a/src/js/slaveSummaryWidgets.js b/src/js/slaveSummaryWidgets.js
index 44975ded1dc2dfc0a4a8e3ee033ea48c7cabaac8..a2f01f7d01731168a227445c6f50d10a7f9f5c1a 100644
--- a/src/js/slaveSummaryWidgets.js
+++ b/src/js/slaveSummaryWidgets.js
@@ -32,17 +32,6 @@ window.SlaveSummaryUncached = (function() {
 	"use strict";
 	let V;
 	let r;
-	/*
-	let pronouns;
-	let he;
-	let him;
-	let his;
-	let hers;
-	let himself;
-	let boy;
-	let He;
-	let His;
-	*/
 
 	/**
 	 * @param {App.Entity.SlaveState} slave
@@ -50,17 +39,6 @@ window.SlaveSummaryUncached = (function() {
 	function SlaveSummaryUncached(slave) {
 		V = State.variables;
 		r = "";
-		/*
-		pronouns = getPronouns(slave);
-		he = pronouns.pronoun;
-		him = pronouns.object;
-		his = pronouns.possessive;
-		hers = pronouns.possessivePronoun;
-		himself = pronouns.objectReflexive;
-		boy = pronouns.noun;
-		He = capFirstChar(he);
-		His = capFirstChar(his);
-		*/
 
 		if (V.abbreviateDevotion === 1) {
 			short_devotion(slave);
diff --git a/src/js/utilJS.js b/src/js/utilJS.js
index f32e33eb1608b0d97ea2f6d289a7a5c2087a0176..5f0ad823a11fddfcb591ab6fa4bb775ddc0ca51c 100644
--- a/src/js/utilJS.js
+++ b/src/js/utilJS.js
@@ -958,7 +958,7 @@ window.Categorizer.prototype.cat = function(val, def) {
 };
 
 /**
- * Returns numbers as text, e.g. 10 as "ten".
+ * Returns numbers as text, e.g. 10 as "ten", according to the player's settings
  * @param {number} x
  * @returns {string}
  */
@@ -1102,6 +1102,42 @@ window.num = function(x) {
 	}
 };
 
+/**
+ * Returns the number of weeks in a years / months / weeks format
+ * @param {number} weeks
+ * @returns {string}
+ */
+window.time = function(weeks) {
+	let	r = ``;
+
+	if (weeks >= 52) {								// at least one year
+		r += `${num(Math.trunc(weeks / 52))} year${Math.trunc(weeks / 52) != 1 ? `s` : ``}`;
+
+		if ((weeks - 52) % 4 !== 0) {				// not exactly x years, y months
+				r += `, `;
+		} else {
+			if (weeks % 52 !== 0) {					// not exactly x years
+				r += ` and `;
+			}
+		}
+		weeks -= Math.trunc(weeks / 52) * 52;		// rounds down to and drops number of years
+	}
+
+	if (weeks >= 4) {								// at least one month
+		r += `${num(Math.trunc(weeks / 4))} month${Math.trunc(weeks / 4) != 1 ? `s` : ``}`;
+		weeks -= Math.trunc(weeks / 4) * 4;			// rounds down to and drops number of months
+		if (weeks > 0) {
+			r += ` and `;
+		}
+	}
+
+	if (weeks > 0) {
+		r += `${num(weeks)} week${weeks != 1 ? `s` : ``}`;
+	}
+
+	return r;
+}
+
 /**
  * @param {number} s
  * @returns {string}
diff --git a/src/js/descriptionWidgets/boobs.js b/src/npc/descriptions/boobs/boobs.js
similarity index 98%
rename from src/js/descriptionWidgets/boobs.js
rename to src/npc/descriptions/boobs/boobs.js
index 25d3823b81447a80acf0bc7a77cb7fb67ea35191..6bc84d8ecddea532a747eb1620eed3d06b541cba 100644
--- a/src/js/descriptionWidgets/boobs.js
+++ b/src/npc/descriptions/boobs/boobs.js
@@ -2,97 +2,117 @@ App.Desc.boobBits = function() {
 	'use strict';
 
 	const data = {
-		300: {
+		299: {
 			cup: "flat", anCup: false, adjective: ["androgynous", "flat"], noun: ["chest"]
 		},
-		400: {
+		399: {
 			cup: "A-cup", anCup: true, adjective: ["pointy", "tiny"], noun: ["chest"]
 		},
-		500: {
+		499: {
 			cup: "B-cup", anCup: false, adjective: ["perky", "small"], noun: ["boobs", "bosom", "breasts", "tits"]
 		},
-		650: {
+		649: {
 			cup: "C-cup", anCup: false, adjective: ["curved", "healthy"], noun: ["boobs", "bosom", "breasts", "bust", "tits"]
 		},
-		800: {
+		799: {
 			cup: "D-cup", anCup: false, adjective: ["big", "sizable"], noun: ["boobs", "bosom", "breasts", "bust", "tits"]
 		},
-		1000: {
+		999: {
 			cup: "DD-cup", anCup: false, adjective: ["big", "large"], noun: ["boobs", "bosom", "breasts", "bust", "tits"]
 		},
-		1200: {
+		1199: {
 			cup: "F-cup", anCup: true, adjective: ["hefty", "proud"], noun: ["boobs", "breasts", "mammaries", "tits", "udders"]
 		},
-		1400: {
+		1399: {
 			cup: "G-cup", anCup: false, adjective: ["hefty", "huge"], noun: ["breasts", "mammaries", "tits", "udders"]
 		},
-		1600: {
+		1599: {
 			cup: "H-cup", anCup: true, adjective: ["huge", "massive"], noun: ["breasts", "mammaries", "tits", "udders"]
 		},
-		1800: {
+		1799: {
 			cup: "I-cup", anCup: true, adjective: ["enormous", "massive"], noun: ["breasts", "mammaries", "tits", "udders"]
 		},
-		2050: {
+		2049: {
 			cup: "J-cup", anCup: false, adjective: ["enormous", "titanic"], noun: ["breasts", "mammaries", "tits", "udders"]
 		},
-		2300: {
+		2299: {
 			cup: "K-cup", anCup: false, adjective: ["stupendous", "titanic"], noun: ["breasts", "mammaries", "tits", "udders"]
 		},
-		2600: {
+		2599: {
 			cup: "L-cup", anCup: true, adjective: ["magnificent", "stupendous"], noun: ["breasts", "mammaries", "tits", "udders"]
 		},
-		2900: {
+		2899: {
 			cup: "M-cup", anCup: true, adjective: ["magnificent", "tremendous"], noun: ["breasts", "mammaries", "tits", "udders"]
 		},
-		3250: {
+		3249: {
 			cup: "N-cup", anCup: true, adjective: ["awe-inspiring", "tremendous"], noun: ["breasts", "mammaries", "tits", "udders"]
 		},
-		3600: {
+		3599: {
 			cup: "O-cup", anCup: true, adjective: ["absurd", "awe-inspiring"], noun: ["breasts", "mammaries", "tits", "udders"]
 		},
-		3950: {
+		3949: {
 			cup: "P-cup", anCup: false, adjective: ["attention-grabbing", "disproportionate"], noun: ["breasts", "mammaries", "tits", "udders"]
 		},
-		4300: {
+		4299: {
 			cup: "Q-cup", anCup: false, adjective: ["massive", "shocking"], noun: ["breasts", "mammaries", "tits", "udders"]
 		},
-		4700: {
+		4699: {
 			cup: "R-cup", anCup: true, adjective: ["jaw-dropping", "unreal"], noun: ["breasts", "mammaries", "tits", "udders"]
 		},
-		5100: {
+		5099: {
 			cup: "S-cup", anCup: true, adjective: ["astounding", "tremendous"], noun: ["breasts", "mammaries", "tits", "udders"]
 		},
-		5500: {
+		5499: {
 			cup: "T-cup", anCup: false, adjective: ["astounding", "tremendous"], noun: ["breasts", "mammaries", "tits", "udders"]
 		},
-		6500: {
+		6499: {
 			cup: "U-cup", anCup: false, adjective: ["astounding", "tremendous"], noun: ["breasts", "mammaries", "tits", "udders"]
 		},
-		7000: {
+		6999: {
 			cup: "V-cup", anCup: false, adjective: ["astounding", "tremendous"], noun: ["breasts", "mammaries", "tits", "udders"]
 		},
-		7500: {
+		7499: {
 			cup: "X-cup", anCup: true, adjective: ["astounding", "tremendous"], noun: ["breasts", "mammaries", "tits", "udders"]
 		},
-		8000: {
+		7999: {
 			cup: "Y-cup", anCup: true, adjective: ["astounding", "tremendous"], noun: ["breasts", "mammaries", "tits", "udders"]
 		},
-		8500: {
+		8499: {
 			cup: "Z-cup", anCup: false, adjective: ["astounding", "tremendous"], noun: ["boobs", "breasts", "mammaries", "udders"]
 		},
-		20000: {
+		14999: {
 			cup: "", anCup: false,
 			adjective: ["obscenely massive", "enormous"],
 			noun: ["boobs", "breasts", "mammaries", "udders", "masses of breastflesh"]
 		},
-		30000: {
+		24999: {
 			cup: "", anCup: false,
-			adjective: ["beanbag sized"],
+			adjective: ["arm filling"],
 			noun: ["boobs", "breasts", "mammaries", "udders", "masses of breastflesh"]
 		},
-		50000: {
+		39999: {
 			cup: "", anCup: false,
-			adjective: ["room filling"],
+			adjective: ["figure dominating"],
+			noun: ["boobs", "breasts", "mammaries", "udders", "masses of breastflesh"]
+		},
+		54999: {
+			cup: "", anCup: false,
+			adjective: ["beanbag-sized"],
+			noun: ["boobs", "breasts", "mammaries", "udders", "masses of breastflesh"]
+		},
+		69999: {
+			cup: "", anCup: false,
+			adjective: ["door-jamming"],
+			noun: ["boobs", "breasts", "mammaries", "udders", "masses of breastflesh"]
+		},
+		89999: {
+			cup: "", anCup: false,
+			adjective: ["hall-clearing"],
+			noun: ["boobs", "breasts", "mammaries", "udders", "masses of breastflesh"]
+		},
+		100000: {
+			cup: "", anCup: false,
+			adjective: ["hall-jamming"],
 			noun: ["boobs", "breasts", "mammaries", "udders", "masses of breastflesh"]
 		},
 	};
@@ -1325,9 +1345,9 @@ App.Desc.boobs = function() {
 				r += `, ${num(slave.boobs)} CCs each,`;
 			}
 			if (slave.amp === 1) {
-				r += `are so immense it is safer to leave ${him} resting atop them. ${His} udders each weigh more than twice the rest of ${his} body, since ${his} body consists of nothing but ${his} head, torso, and breasts.`;
+				r += ` are so immense it is safer to leave ${him} resting atop them. ${His} udders each weigh more than twice the rest of ${his} body, since ${his} body consists of nothing but ${his} head, torso, and breasts.`;
 			} else {
-				r += `are so gargantuan that they effectively immobilize ${him}. ${He}'s most comfortable lying down.`;
+				r += ` are so gargantuan that they effectively immobilize ${him}. ${He}'s most comfortable lying down.`;
 			}
 		}
 		return r;
diff --git a/src/js/descriptionWidgets/piercing.js b/src/npc/descriptions/boobs/piercing.js
similarity index 100%
rename from src/js/descriptionWidgets/piercing.js
rename to src/npc/descriptions/boobs/piercing.js
diff --git a/src/pregmod/analyzePlayerPregnancy.tw b/src/pregmod/analyzePlayerPregnancy.tw
index 7aa01d5dd7bb4b7db468f42d4bed396df3132039..2effd81e33368374fde55b9796a5773379f8ac60 100644
--- a/src/pregmod/analyzePlayerPregnancy.tw
+++ b/src/pregmod/analyzePlayerPregnancy.tw
@@ -161,12 +161,12 @@
 				<<elseif $PC.womb[_ap].genetics.geneticQuirks.superfetation == 1 && $geneticMappingUpgrade >= 2>>
 					@@.yellow;supfet@@
 				<</if>>
-				<<if $PC.womb[_ap].genetics.geneticQuirks.macromastia == 2>>
+				<<if $PC.womb[_ap].genetics.geneticQuirks.macromastia >= 2>>
 					@@.red;mmast@@
 				<<elseif $PC.womb[_ap].genetics.geneticQuirks.macromastia == 1 && $geneticMappingUpgrade >= 2>>
 					@@.yellow;mast@@
 				<</if>>
-				<<if $PC.womb[_ap].genetics.geneticQuirks.gigantomastia == 2>>
+				<<if $PC.womb[_ap].genetics.geneticQuirks.gigantomastia >= 2>>
 					@@.red;gmast@@
 				<<elseif $PC.womb[_ap].genetics.geneticQuirks.gigantomastia == 1 && $geneticMappingUpgrade >= 2>>
 					@@.yellow;gmast@@
diff --git a/src/pregmod/analyzePregnancy.tw b/src/pregmod/analyzePregnancy.tw
index 1ca847d73e9c5fcd88e2ccbe39421a00d0878493..42ea3adf4ffafdf7f6f9fbd8c307b0ebcca85a7f 100644
--- a/src/pregmod/analyzePregnancy.tw
+++ b/src/pregmod/analyzePregnancy.tw
@@ -172,12 +172,12 @@
 				<<elseif $activeSlave.womb[_ap].genetics.geneticQuirks.superfetation == 1 && $geneticMappingUpgrade >= 2>>
 					@@.yellow;supfet@@
 				<</if>>
-				<<if $activeSlave.womb[_ap].genetics.geneticQuirks.macromastia == 2>>
+				<<if $activeSlave.womb[_ap].genetics.geneticQuirks.macromastia >= 2>>
 					@@.red;mmast@@
 				<<elseif $activeSlave.womb[_ap].genetics.geneticQuirks.macromastia == 1 && $geneticMappingUpgrade >= 2>>
 					@@.yellow;mast@@
 				<</if>>
-				<<if $activeSlave.womb[_ap].genetics.geneticQuirks.gigantomastia == 2>>
+				<<if $activeSlave.womb[_ap].genetics.geneticQuirks.gigantomastia >= 2>>
 					@@.red;gmast@@
 				<<elseif $activeSlave.womb[_ap].genetics.geneticQuirks.gigantomastia == 1 && $geneticMappingUpgrade >= 2>>
 					@@.yellow;gmast@@
diff --git a/src/pregmod/incubator.tw b/src/pregmod/incubator.tw
index a81ea6ab44c99e3cedec3859a05c3a78b4ec8607..4edeaa68476a757be63724707df37fa443911e17 100644
--- a/src/pregmod/incubator.tw
+++ b/src/pregmod/incubator.tw
@@ -8,7 +8,7 @@
 	<<set $incubatorNameCaps = $incubatorName.replace("the ", "The ")>>
 <</if>>
 
-<<set _readySlaves = 0, $readySlave = 0, $incubatorSlaves = $tanks.length, $freeTanks = $incubator - $incubatorSlaves, _SL = $slaves.length, _eligibility = 0, $reservedChildren = FetusGlobalReserveCount("incubator"), $reservedChildrenNursery = FetusGlobalReserveCount("nursery")>>
+<<set $readySlaves = 0, $readySlave = 0, $incubatorSlaves = $tanks.length, $freeTanks = $incubator - $incubatorSlaves, _SL = $slaves.length, _eligibility = 0, $reservedChildren = FetusGlobalReserveCount("incubator"), $reservedChildrenNursery = FetusGlobalReserveCount("nursery")>>
 
 <br><br>
 $incubatorNameCaps is a clean, cold hall designed to be lined with tanks and their connected monitoring systems.
@@ -407,7 +407,7 @@ Target age for release: <<textbox "$targetAge" $targetAge "Incubator">> [[Minimu
 				<</if>>
 			<</if>>
 		<<if $tanks[$i].growTime <= 0>>
-			<<set _readySlaves = 1>>
+			<<set $readySlaves = 1>>
 			<br>$He is ready to be released from $his tank.
 		<<else>>
 			<<set _weekDisplay = Math.round($tanks[$i].growTime/$incubatorUpgradeSpeed)>>
@@ -600,7 +600,7 @@ Target age for release: <<textbox "$targetAge" $targetAge "Incubator">> [[Minimu
 	<</if>>
 <</if>>
 
-<<if _readySlaves == 1>>
+<<if $readySlaves == 1>>
 	<<if $incubatorBulkRelease == 1>>
 		<<set $newSlavePool = []>>
 		<<for _inc = 0; _inc < $tanks.length; _inc++>>
diff --git a/src/pregmod/incubatorReport.tw b/src/pregmod/incubatorReport.tw
index 0899a17ff49fe704886bb85c38073407b387011f..d536d42385496c2c12f588a6a975d18c026da744 100644
--- a/src/pregmod/incubatorReport.tw
+++ b/src/pregmod/incubatorReport.tw
@@ -1,6 +1,6 @@
 :: Incubator Report [nobr]
 
-<<set $incubatorSlaves = 0>>
+<<set $incubatorSlaves = 0, $readySlaves = 0>>
 
 <<for _inc = 0; _inc < $tanks.length; _inc++>>
 	<<setLocalPronouns $tanks[_inc]>>
@@ -17,6 +17,7 @@
 		<br>@@.pink;<<print $tanks[_inc].slaveName>>'s@@ growth is currently being accelerated. $He <<if Math.round($tanks[_inc].growTime/$incubatorUpgradeSpeed) <= 0>>is @@.lime;ready for release.@@ $He will be ejected from $his tank upon your approach<<else>>will be ready for release in about <<print Math.round($tanks[_inc].growTime/$incubatorUpgradeSpeed)>> weeks<</if>>.
 	<<else>>
 		@@.pink;$tanks[_inc].slaveName@@ is @@.lime;ready for release.@@ $He will be ejected from $his tank upon your approach.
+		<<set $readySlaves = 1>>
 	<</if>>
 
 	<<if $incubatorUpgradeWeight == 1>>
diff --git a/src/uncategorized/BackwardsCompatibility.tw b/src/uncategorized/BackwardsCompatibility.tw
index 3dbdc9305c550e98db9868f29ceb0f6f72d6e620..7f720e0d7e3fd485cac3003d2b858d8de72524cf 100644
--- a/src/uncategorized/BackwardsCompatibility.tw
+++ b/src/uncategorized/BackwardsCompatibility.tw
@@ -3600,9 +3600,7 @@ Updating gene pool records:
 Done<br>
 
 Updating Rules Assistant data...
-<<for _rule range $defaultRules>>
-	<<run App.Entity.Utils.RARuleDatatypeCleanup(_rule)>>
-<</for>>
+<<set $defaultRules = $defaultRules.map(rule => App.Entity.Utils.RARuleDatatypeCleanup(rule))>>
 Done<br>
 
 /* Sec Exp */
@@ -3844,6 +3842,16 @@ Done<br>
 <</if>>
 /* unify cybermod & vanilla finished*/
 
+<<if def $buyArcologyDirection>>
+	<<run delete $buyArcologyDirection>>
+<</if>>
+<<if def $sellArcologyDirection>>
+	<<run delete $sellArcologyDirection>>
+<</if>>
+<<if def $transaction>>
+	<<run delete $transaction>>
+<</if>>
+
 <<unset $SlaveSummaryFiler>>
 <</if>> /* release 1044 */
 
diff --git a/src/uncategorized/arcologyDescription.tw b/src/uncategorized/arcologyDescription.tw
index 7f661244bb77d2d77a664e73a3826ebcb270c17e..cda1e254b90241cadfe37e8ad67f458d9c22f218 100644
--- a/src/uncategorized/arcologyDescription.tw
+++ b/src/uncategorized/arcologyDescription.tw
@@ -657,11 +657,8 @@ Its lingua franca is $language.
 	<</for>>
 	<<set $averageProsperity = $averageProsperity/_neighboringArcologyCount>>
 
-	<<for $i = 0; $i < $arcologies.length; $i++>>
-		<<if $arcologies[$i].direction != 0>>
+	<<for $i = 1; $i < $arcologies.length; $i++>>
 			<<include "Neighbor Description">>
-			<<print "[[Diplomacy|Neighbor Interact][$activeArcology = $arcologies[" + $i + "]]]">>
-		<</if>>
 	<</for>>
 
 	<<if $cheatMode == 1>>
diff --git a/src/uncategorized/buildingWidgets.tw b/src/uncategorized/buildingWidgets.tw
index 207dc5f6a51229cb383078cc96494a73c1e3d377..09543a8204e625b5109290c0c550ade729ae01c3 100644
--- a/src/uncategorized/buildingWidgets.tw
+++ b/src/uncategorized/buildingWidgets.tw
@@ -148,7 +148,7 @@ if(!Macro.has('sectorblock')) {
 				<<if $clinic>> <<print ClinicUIName()>> ($clinicSlaves/$clinic<<if $Nurse>>, L<</if>>)<</if>>
 				<<if $schoolroom>> <<print SchoolRoomUIName()>> ($schoolroomSlaves/$schoolroom<<if $Schoolteacher>>, L<</if>>)<</if>>
 				<<if $cellblock>> <<print CellblockUIName()>> ($cellblockSlaves/$cellblock<<if $Wardeness>>, L<</if>>)<</if>>
-				<<if $incubator>> <<print IncubatorUIName()>> (<<if $incubator-$incubatorSlaves == 0>>No empty tanks<<elseif $incubator-$incubatorSlaves == 1>>1 empty tank<<else>><<print $incubator-$incubatorSlaves>> empty tanks<</if>>)<</if>>
+				<<if $incubator>> <<print IncubatorUIName()>> (<<if $incubator-$incubatorSlaves == 0>>No empty tanks<<elseif $incubator-$incubatorSlaves == 1>>1 empty tank<<else>><<print $incubator-$incubatorSlaves>> empty tanks<</if>>) <<if $readySlaves > 0>>@@.yellow;[!]@@<</if>> <</if>>
 				<<if $researchLab.level > 0>>[[Prosthetic Lab]]<</if>>
 			<</if>>
 		</td>
diff --git a/src/uncategorized/longSlaveDescription.tw b/src/uncategorized/longSlaveDescription.tw
index ce7d69a1e1e5f9c08bd9b09df8932ddf3df477e5..e7d99ce6121dae1d9709c62cff98ca0ae5b048d9 100644
--- a/src/uncategorized/longSlaveDescription.tw
+++ b/src/uncategorized/longSlaveDescription.tw
@@ -383,7 +383,7 @@ is
 		<<elseif $activeSlave.weekAcquired == 1>>
 			since you first took control of the arcology,
 		<<elseif _weeksOwned > 1>>
-			<<print $week-$activeSlave.weekAcquired>> weeks,
+			<<print num($week-$activeSlave.weekAcquired)>> weeks,
 		<<else>>
 			one week,
 		<</if>>
diff --git a/src/uncategorized/main.tw b/src/uncategorized/main.tw
index f8229bf372e2c46f2ffeb96bd74dabb992b842f6..2a77be60d671d8fe1f36755cfa8c5b0b2c6f8456 100644
--- a/src/uncategorized/main.tw
+++ b/src/uncategorized/main.tw
@@ -1,7 +1,9 @@
 :: Main [nobr]
 
 <<if $releaseID >= 1000 || $ver.includes("0.9") || $ver.includes("0.8") || $ver.includes("0.7") || $ver.includes("0.6")>>
-	<<if $releaseID >= 1031>>
+	<<if $releaseID >= 1046>>
+	<<elseif $releaseID < 1046>>
+		''@@.red;INCOMPATIBILITY WARNING:@@'' your saved game was created using version $ver build $releaseID. Due to a major changes to the Rules Assistant data scheme, you must run [[backwards compatibility|Backwards Compatibility]].
 	<<elseif $releaseID < 1031>>
 		''@@.red;INCOMPATIBILITY WARNING:@@'' your saved game was created using version $ver build $releaseID. Due to a major overhaul to intelligence and education, it is advisable to run backwards compatibility.
 	<<elseif $releaseID >= 1022 && ndef $SF>>
diff --git a/src/uncategorized/managePenthouse.tw b/src/uncategorized/managePenthouse.tw
index 6474694e04707479d7bc0fc143b90212835bb028..88fa1b49a763d085435d14aee96f1545b3bee577 100644
--- a/src/uncategorized/managePenthouse.tw
+++ b/src/uncategorized/managePenthouse.tw
@@ -114,7 +114,7 @@ __Penthouse Facilities__
 <<if $familyTesting == 1 && $seePreg != 0>>
 	<<if $arcologyUpgrade.grid == 1>>
 		<<if $incubator == 0>>
-			[[Install an incubation chamber to rapidly age children|Manage Penthouse][cashX(forceNeg(Math.trunc(100000*$upgradeMultiplierArcology)), "capEx"), $incubator = 1, $PC.engineering += 1]]
+			[[Install an incubation chamber to rapidly age children|Manage Penthouse][cashX(forceNeg(Math.trunc(100000*$upgradeMultiplierArcology)), "capEx"), $incubator = 1, $PC.engineering += 1, $readySlaves = 0]]
 			//Costs <<print cashFormat(Math.trunc(100000*$upgradeMultiplierArcology))>>//
 		<<else>>
 			The penthouse has a specialized facility dedicated to rapidly aging children.
diff --git a/src/uncategorized/neighborInteract.tw b/src/uncategorized/neighborInteract.tw
index b4d2799c29f9cee3e60b4288350327acc4465c70..fde9c6363dd2bc921a649b47cd671ccf4cc4da46 100644
--- a/src/uncategorized/neighborInteract.tw
+++ b/src/uncategorized/neighborInteract.tw
@@ -1,37 +1,17 @@
 :: Neighbor Interact [nobr]
 
-<<set $nextLink = "Manage Arcology", $nextButton = "Back">>
-
-<<set _nei = $arcologies.findIndex(function(s) { return s.direction == $activeArcology.direction; })>>
-<<if _nei != -1>>
-	<<set $arcologies[_nei] = $activeArcology>>
-<<else>>
-	//Neighbor not found, something has gone wrong!//
+<<if def $buyArcologyDirection>>
+	<<run delete $buyArcologyDirection>>
 <</if>>
-
-<<set $arcologies[_nei].prosperity = Math.clamp($arcologies[_nei].prosperity, 1, 300)>>
-
-<<if $buyArcologyDirection != 0 && def $buyArcologyDirection>>
-	<<set _nei = $arcologies.findIndex(function(s) { return s.direction == $buyArcologyDirection; })>>
-	<<run cashX(forceNeg($transaction*(500*Math.trunc($arcologies[_nei].prosperity*(1+($arcologies[_nei].demandFactor/100))))), "war")>>
-	<<run cashX(-10000, "war")>>
-	<<set $arcologies[_nei].PCminority += $transaction>>
-	<<set $arcologies[_nei].demandFactor += $transaction*5>>
-<</if>>
-<<set $buyArcologyDirection = 0>>
-<<if $sellArcologyDirection != 0 && def $sellArcologyDirection>>
-	<<set _nei = $arcologies.findIndex(function(s) { return s.direction == $sellArcologyDirection; })>>
-	<<run cashX(($transaction*(500*Math.trunc($arcologies[_nei].prosperity*(1+($arcologies[_nei].demandFactor/100))))), "war")>>
-	<<set $arcologies[_nei].PCminority -= $transaction>>
-	<<set $arcologies[_nei].demandFactor -= $transaction*2>>
-	<<if $arcologies[_nei].government != "your agent" && $arcologies[_nei].government != "your trustees" && $arcologies[_nei].rival != 1>>
-		<<if $arcologies[_nei].ownership + $arcologies[_nei].PCminority + $arcologies[_nei].minority < 10>>
-			<<set $arcologies[_nei].ownership += 10>>
-		<</if>>
-	<</if>>
+<<if def $sellArcologyDirection>>
+	<<run delete $sellArcologyDirection>>
 <</if>>
-<<set $sellArcologyDirection = 0>>
-<<set $transaction = 0>>
+<<if def $transaction>>
+	<<run delete $transaction>>
+<</if>>
+
+<<set $nextLink = "Manage Arcology", $nextButton = "Back">>
+You have <<print $arcologies.length-1>> neighbors. <br><br>
 
 <<if $arcologies[0].embargoTarget == -1>>
 	You are not engaged in economic warfare against a neighboring arcology.
@@ -46,15 +26,16 @@
 	<<else>>
 		''nominal.'' [[Intensify|Neighbor Interact][$arcologies[0].embargo += 1]]
 	<</if>>
+	| [[Cancel|Neighbor Interact][$arcologies[0].embargoTarget = -1]]
 <</if>>
 
 <br>
-
-<<if $arcologies[0].influenceTarget == -1>>
+<<if $arcologies[0].influenceTarget == -1>> 
 	You are not using your arcology's culture to attempt to influence neighboring arcologies' development.
 <<else>>
 	<<set _nei = $arcologies.findIndex(function(s) { return s.direction == $arcologies[0].influenceTarget; })>>
 	You have targeted '' $arcologies[_nei].name'' for cultural influence.
+	[[Stop|Neighbor Interact][$arcologies[0].influenceTarget = -1]]
 <</if>>
 
 <<if $PC.hacking > 0>>
@@ -72,6 +53,7 @@
 		<<else>>
 			''nominal.'' [[Intensify|Neighbor Interact][$arcologies[0].CyberEconomic += 1]]
 		<</if>>
+		| [[Revert|Neighbor Interact][$arcologies[0].CyberEconomicTarget = -1]]
 	<</if>>
 
 	<br>
@@ -88,11 +70,10 @@
 		<<else>>
 			''nominal.'' [[Intensify|Neighbor Interact][$arcologies[0].CyberReputation += 1]]
 		<</if>>
+		| [[Abort|Neighbor Interact][$arcologies[0].CyberReputationTarget = -1]]
 	<</if>>
 <</if>>
 
-<br>
-
 <<set $desc = []>>
 <<if $arcologies[0].FSSubjugationist > 60>>
 	<<set $desc.push("Racial Subjugation")>>
@@ -173,6 +154,7 @@
 	<<set $desc.push("Chinese Revivalism")>>
 <</if>>
 
+<br><br>
 <<if $desc.length == 0>>
 	Your arcology's culture has not developed to the point where it can meaningfully influence other arcologies.
 <<elseif $desc.length > 2>>
@@ -189,513 +171,546 @@
 <<else>>
 	Your arcology's culture is capable of starting to exert cultural sway over other arcologies. It can project $desc[0].
 <</if>>
+<br>
 
-<<for $i = 0; $i < $arcologies.length; $i++>>
-	<<if $arcologies[$i].direction == $activeArcology.direction>>
-		<<include "Neighbor Description">>
-	<</if>>
-<</for>>
+<span id="Security">
+<<for _currentNeighbor = 1; _currentNeighbor < $arcologies.length; _currentNeighbor++>>
+<<capture _currentNeighbor>>
+	<<set $arcologies[_currentNeighbor].prosperity = Math.clamp($arcologies[_currentNeighbor].prosperity, 1, 300)>>
+	<br>You own $arcologies[_currentNeighbor].PCminority% of 
+	<<link "$arcologies[_currentNeighbor].name">>
+	<<replace "#Security">>
+	<br>[[Back to the main diplomacy page|Neighbor Interact]]
 
-<br>&nbsp;&nbsp;&nbsp;&nbsp;[[Target for economic warfare|Neighbor Interact][$arcologies[0].embargoTarget = $activeArcology.direction]]
-<<if $PC.hacking > 0>>
-	| [[Target for cyber economic warfare|Neighbor Interact][$arcologies[0].CyberEconomicTarget = $activeArcology.direction]]
-	| [[Target their leadership for character assassination|Neighbor Interact][$arcologies[0].CyberReputationTarget = $activeArcology.direction]]
-<</if>>
-<<if $desc.length > 0>>
-	| [[Set as influence target|Neighbor Interact][$arcologies[0].influenceTarget = $activeArcology.direction]]
-<</if>>
-<br>&nbsp;&nbsp;&nbsp;&nbsp;You own ''$activeArcology.PCminority%'' of $activeArcology.name.
-<<set _ownershipCost = 500*Math.trunc($activeArcology.prosperity*(1+($activeArcology.demandFactor/100)))>>
-A 1% interest in $activeArcology.name is worth <<print cashFormat(_ownershipCost)>> and will require a transaction cost of <<print cashFormat(10000)>> to acquire.
-<<if ($activeArcology.ownership + $activeArcology.PCminority + $activeArcology.minority < 100)>>
-	[[Buy|Neighbor Interact][$buyArcologyDirection = $activeArcology.direction, $transaction = 1]]
-	<<if ($activeArcology.ownership + $activeArcology.PCminority + $activeArcology.minority <= 90)>>
-		<<if $cash > 10*(_ownershipCost)>>
-			| [[10%|Neighbor Interact][$buyArcologyDirection = $activeArcology.direction, $transaction = 10]]
-			//Transaction costs will only be paid once//
-		<</if>>
-	<</if>>
-<</if>>
-<<if ($activeArcology.ownership + $activeArcology.PCminority + $activeArcology.minority < 100) && ($activeArcology.PCminority > 0)>>|<</if>>
-<<if $activeArcology.PCminority > 0>>
-	[[Sell|Neighbor Interact][$sellArcologyDirection = $activeArcology.direction, $transaction = 1]]
-	<<if $activeArcology.PCminority >= 10>>
-		| [[10%|Neighbor Interact][$sellArcologyDirection = $activeArcology.direction, $transaction = 10]]
-	<</if>>
-<</if>>
-<br>
-<<if ($activeArcology.government == "your trustees") || ($activeArcology.government == "your agent")>>
-	<<if $activeArcology.government == "your trustees">>
-		<br>
-		[[Appoint an agent|Agent Select]]
-		<span id="rename"> | <<link "Instruct them to rename the arcology">><<replace #rename>> | <<textbox "$activeArcology.name" $activeArcology.name>> [[Confirm name|Neighbor Interact]]<</replace>><</link>></span>
-	<<else>>
-		<br>
-		<<for $j = 0; $j < $leaders.length; $j++>>
-			<<if $activeArcology.leaderID == $leaders[$j].ID>>
-				<<setLocalPronouns $leaders[$j]>>
-				Your agent @@.deeppink;<<= SlaveFullName($leaders[$j])>>@@ is running this arcology. [["Recall and reenslave " + $him|Agent Retrieve]]
-				<span id="rename"> | <<link "Instruct $him to rename the arcology">><<replace #rename>> | <<textbox "$activeArcology.name" $activeArcology.name>> [[Confirm name|Neighbor Interact]]<</replace>><</link>></span>
-				<br>$His <<if $leaders[$j].intelligence > 95>>brilliance<<else>>intelligence<</if>> and education are the most important qualities for $him.
-				<<if $leaders[$j].actualAge > 35>>
-					As with the Head Girl position, $his age and experience lend $him leadership weight.
+		<br>You own ''$arcologies[_currentNeighbor].PCminority%'' of $arcologies[_currentNeighbor].name.
+		<<set _ownershipCost = 500*Math.trunc($arcologies[_currentNeighbor].prosperity*(1+($arcologies[_currentNeighbor].demandFactor/100)))>>
+		A 1% interest in $arcologies[_currentNeighbor].name is worth <<print cashFormat(_ownershipCost)>> and will require a transaction cost of <<print cashFormat(10000)>> to acquire.
+		<<if ($arcologies[_currentNeighbor].ownership + $arcologies[_currentNeighbor].PCminority + $arcologies[_currentNeighbor].minority < 100)>>
+			<br>&nbsp;
+			<<link "Buy" "Neighbor Interact">>
+				<<run cashX(forceNeg(1*(500*Math.trunc($arcologies[_currentNeighbor].prosperity*(1+($arcologies[_currentNeighbor].demandFactor/100))))), "war")>>
+				<<run cashX(-10000, "war")>>
+				<<set $arcologies[_currentNeighbor].PCminority += 1>>
+				<<set $arcologies[_currentNeighbor].demandFactor += 1*5>>
+		<</link>>
+			<<if ($arcologies[_currentNeighbor].ownership + $arcologies[_currentNeighbor].PCminority + $arcologies[_currentNeighbor].minority <= 90)>>
+				<<if $cash > 10*(_ownershipCost)>>
+					| <<link "10%" "Neighbor Interact">>
+						<<run cashX(forceNeg(1*(500*Math.trunc($arcologies[_currentNeighbor].prosperity*(1+($arcologies[_currentNeighbor].demandFactor/100))))), "war")>>
+						<<run cashX(-10000, "war")>>
+						<<set $arcologies[_currentNeighbor].PCminority += 10>>
+						<<set $arcologies[_currentNeighbor].demandFactor += 10*5>>
+					<</link>>
+					//Transaction costs will only be paid once.//
 				<</if>>
-				<<if $leaders[$j].career == "an arcology owner">>
-					$His career as an arcology owner $himself is, obviously, useful to $him.
-				<<elseif setup.HGCareers.includes($leaders[$j].career)>>
-					$His career in leadership helps $him.
-				<</if>>
-				<<if $leaders[$j].fetishStrength > 95>>
-					<<if ($leaders[$j].fetish == "dom") || ($leaders[$j].fetish == "sadist")>>
-						$His sexually dominant fetish helps $him fill a leadership role.
-					<<elseif ($leaders[$j].fetish == "submissive") || ($leaders[$j].fetish == "masochist")>>
-						Unfortunately, $he has an inappropriate fetish for a leader.
-					<<else>>
-						$His sexual fetishes will influence how $he leads the arcology.
+			<</if>>
+		<</if>>
+		
+		<<if $arcologies[_currentNeighbor].PCminority > 0>>
+			<br>&nbsp;
+			<<link "Sell" "Neighbor Interact">>
+				<<run cashX((1*(500*Math.trunc($arcologies[_currentNeighbor].prosperity*(1+($arcologies[_currentNeighbor].demandFactor/100))))), "war")>>
+				<<set $arcologies[_currentNeighbor].PCminority -= 1>>
+				<<set $arcologies[_currentNeighbor].demandFactor -= 1*2>>
+				<<if $arcologies[_currentNeighbor].government != "your agent" && $arcologies[_currentNeighbor].government != "your trustees" && $arcologies[_currentNeighbor].rival != 1>>
+					<<if $arcologies[_currentNeighbor].ownership + $arcologies[_currentNeighbor].PCminority + $arcologies[_currentNeighbor].minority < 10>>
+						<<set $arcologies[_currentNeighbor].ownership += 10>>
 					<</if>>
 				<</if>>
-				<<if $leaders[$j].energy > 95>>
-					Finally, $his sexual depravity lets $him fit into arcology society naturally.
-				<</if>>
-			<</if>>
-		<</for>>
-	<</if>>
-	<<if $activeArcology.FSSubjugationist != "unset">>
-		<br><<link "Force Abandonment of Racial Subjugation">><<set $activeArcology.FSSubjugationist = "unset">><<goto "Neighbor Interact">><</link>>
-	<</if>>
-	<<if $activeArcology.FSSupremacist != "unset">>
-		<br><<link "Force Abandonment of Racial Supremacy">><<set $activeArcology.FSSupremacist = "unset">><<goto "Neighbor Interact">><</link>>
-	<</if>>
-	<<if $activeArcology.FSRepopulationFocus != "unset">>
-		<br><<link "Force Abandonment of Repopulationism">><<set $activeArcology.FSRepopulationFocus = "unset">><<goto "Neighbor Interact">><</link>>
-	<</if>>
-	<<if $activeArcology.FSRestart != "unset">>
-		<br><<link "Force Abandonment of Eugenics">><<set $activeArcology.FSRestart = "unset">><<goto "Neighbor Interact">><</link>>
-	<</if>>
-	<<if $activeArcology.FSGenderRadicalist != "unset">>
-		<br><<link "Force Abandonment of Gender Radicalism">><<set $activeArcology.FSGenderRadicalist = "unset">><<goto "Neighbor Interact">><</link>>
-	<</if>>
-	<<if $activeArcology.FSGenderFundamentalist != "unset">>
-		<br><<link "Force Abandonment of Gender Fundamentalism">><<set $activeArcology.FSGenderFundamentalist = "unset">><<goto "Neighbor Interact">><</link>>
-	<</if>>
-	<<if $activeArcology.FSPaternalist != "unset">>
-		<br><<link "Force Abandonment of Paternalism">><<set $activeArcology.FSPaternalist = "unset">><<goto "Neighbor Interact">><</link>>
-	<</if>>
-	<<if $activeArcology.FSDegradationist != "unset">>
-		<br><<link "Force Abandonment of Degradationism">><<set $activeArcology.FSDegradationist = "unset">><<goto "Neighbor Interact">><</link>>
-	<</if>>
-	<<if $activeArcology.FSBodyPurist != "unset">>
-		<br><<link "Force Abandonment of Body Purism">><<set $activeArcology.FSBodyPurist = "unset">><<goto "Neighbor Interact">><</link>>
-	<</if>>
-	<<if $activeArcology.FSTransformationFetishist != "unset">>
-		<br><<link "Force Abandonment of Transformation Fetishism">><<set $activeArcology.FSTransformationFetishist = "unset">><<goto "Neighbor Interact">><</link>>
-	<</if>>
-	<<if $activeArcology.FSYouthPreferentialist != "unset">>
-		<br><<link "Force Abandonment of Youth Preferentialism">><<set $activeArcology.FSYouthPreferentialist = "unset">><<goto "Neighbor Interact">><</link>>
-	<</if>>
-	<<if $activeArcology.FSMaturityPreferentialist != "unset">>
-		<br><<link "Force Abandonment of Maturity Preferentialism">><<set $activeArcology.FSMaturityPreferentialist = "unset">><<goto "Neighbor Interact">><</link>>
-	<</if>>
-	<<if $activeArcology.FSSlimnessEnthusiast != "unset">>
-		<br><<link "Force Abandonment of Slimness Enthusiasm">><<set $activeArcology.FSSlimnessEnthusiast = "unset">><<goto "Neighbor Interact">><</link>>
-	<</if>>
-	<<if $activeArcology.FSAssetExpansionist != "unset">>
-		<br><<link "Force Abandonment of Asset Expansionism">><<set $activeArcology.FSAssetExpansionist = "unset">><<goto "Neighbor Interact">><</link>>
-	<</if>>
-	<<if $activeArcology.FSPastoralist != "unset">>
-		<br><<link "Force Abandonment of Pastoralism">><<set $activeArcology.FSPastoralist = "unset">><<goto "Neighbor Interact">><</link>>
-	<</if>>
-	<<if $activeArcology.FSCummunism != "unset">>
-		<br><<link "Force Abandonment of Cummunism">><<set $activeArcology.FSCummunism = "unset">><<goto "Neighbor Interact">><</link>>
-	<</if>>
-	<<if $activeArcology.FSPhysicalIdealist != "unset">>
-		<br><<link "Force Abandonment of Physical Idealism">><<set $activeArcology.FSPhysicalIdealist = "unset">><<goto "Neighbor Interact">><</link>>
-	<</if>>
-	<<if $activeArcology.FSHedonisticDecadence != "unset">>
-		<br><<link "Force Abandonment of Hedonistic Decadence">><<set $activeArcology.FSHedonisticDecadence = "unset">><<goto "Neighbor Interact">><</link>>
-	<</if>>
-	<<if $activeArcology.FSIncestFetishist != "unset">>
-		<br><<link "Force Abandonment of Incest Fetishism">><<set $activeArcology.FSIncestFetishist = "unset">><<goto "Neighbor Interact">><</link>>
-	<</if>>
-	<<if $activeArcology.FSChattelReligionist != "unset">>
-		<br><<link "Force Abandonment of Chattel Religionism">><<set $activeArcology.FSChattelReligionist = "unset">><<goto "Neighbor Interact">><</link>>
-	<</if>>
-	<<if $activeArcology.FSRomanRevivalist != "unset">>
-		<br><<link "Force Abandonment of Roman Revivalism">><<set $activeArcology.FSRomanRevivalist = "unset">><<goto "Neighbor Interact">><</link>>
-	<</if>>
-	<<if $activeArcology.FSAztecRevivalist !== "unset">>
-		<br><<link "Force Abandonment of Aztec Revivalism">><<set $activeArcology.FSAztecRevivalist = "unset">><<goto "Neighbor Interact">><</link>>
-	<</if>>
-	<<if $activeArcology.FSEgyptianRevivalist != "unset">>
-		<br><<link "Force Abandonment of Egyptian Revivalism">><<set $activeArcology.FSEgyptianRevivalist = "unset">><<goto "Neighbor Interact">><</link>>
-	<</if>>
-	<<if $activeArcology.FSEdoRevivalist != "unset">>
-		<br><<link "Force Abandonment of Edo Revivalism">><<set $activeArcology.FSEdoRevivalist = "unset">><<goto "Neighbor Interact">><</link>>
-	<</if>>
-	<<if $activeArcology.FSArabianRevivalist != "unset">>
-		<br><<link "Force Abandonment of Arabian Revivalism">><<set $activeArcology.FSArabianRevivalist = "unset">><<goto "Neighbor Interact">><</link>>
-	<</if>>
-	<<if $activeArcology.FSChineseRevivalist != "unset">>
-		<br><<link "Force Abandonment of Chinese Revivalism">><<set $activeArcology.FSChineseRevivalist = "unset">><<goto "Neighbor Interact">><</link>>
-	<</if>>
-<</if>>
-
-<br><br>
-If $activeArcology.name has developed enough to begin exporting worthwhile goods, it may be of interest to acquire some.
-<<if ($activeArcology.government == "your trustees") || ($activeArcology.government == "your agent")>>
-	Since it is under your control, it is no problem at all to request the transfer of goods to $arcologies[0].name.
-<<elseif $PC.hacking >= 50>>
-	It is within your skills to redirect an outgoing shipment to $arcologies[0].name for your retrieval.
-<<elseif $activeArcology.direction == $arcologies[0].embargoTarget>>
-	Due to your active embargo, trade with $activeArcology.name is not possible.
-<<else>>
-	<<set $targetArcology = $arcologies[0], _tempArc = $activeArcology>><<= arcologyOpinion()>><<set _prices = $opinion*10, $activeArcology = _tempArc>>
-<</if>>
-<<if $activeArcology.FSRomanRevivalist > 95>>
-	<<if !isItemAccessible("a toga")>>
-		<<if ($activeArcology.government == "your trustees") || ($activeArcology.government == "your agent")>>
-			<br><<link "Request a shipment of togas" "Neighbor Interact">>
-				<<set $clothesBoughtToga = 1>>
 			<</link>>
-		<<elseif $PC.hacking >= 50>>
-			<br><<link "Divert an outgoing shipment of togas" "Neighbor Interact">>
-				<<set $clothesBoughtToga = 1>>
+			<<if $arcologies[_currentNeighbor].PCminority >= 10>>
+				| <<link "10%" "Neighbor Interact">>
+					<<run cashX((1*(500*Math.trunc($arcologies[_currentNeighbor].prosperity*(1+($arcologies[_currentNeighbor].demandFactor/100))))), "war")>>
+					<<set $arcologies[_currentNeighbor].PCminority -= 10>>
+					<<set $arcologies[_currentNeighbor].demandFactor -= 10*2>>
+					<<if $arcologies[_currentNeighbor].government != "your agent" && $arcologies[_currentNeighbor].government != "your trustees" && $arcologies[_currentNeighbor].rival != 1>>
+						<<if $arcologies[_currentNeighbor].ownership + $arcologies[_currentNeighbor].PCminority + $arcologies[_currentNeighbor].minority < 10>>
+							<<set $arcologies[_currentNeighbor].ownership += 10>>
+						<</if>>
+					<</if>>
 			<</link>>
-		<<elseif $activeArcology.direction != $arcologies[0].embargoTarget>>
-			<br><<link "Purchase a shipment of togas" "Neighbor Interact">>
-				<<set $clothesBoughtToga = 1>>
-				<<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>>
-			<</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>//
+			<</if>>
 		<</if>>
-	<<else>>
-		<br>You already have enough togas.
-	<</if>>
-	<<set _exports = 1>>
-<<elseif $activeArcology.FSEdoRevivalist > 95>>
-	<<if !isItemAccessible("a kimono")>>
-		<<if ($activeArcology.government == "your trustees") || ($activeArcology.government == "your agent")>>
-			<br><<link "Request a shipment of kimonos" "Neighbor Interact">>
-				<<set $clothesBoughtKimono = 1>>
-			<</link>>
-		<<elseif $PC.hacking >= 50>>
-			<br><<link "Divert an outgoing shipment of kimonos" "Neighbor Interact">>
-				<<set $clothesBoughtKimono = 1>>
-			<</link>>
-		<<elseif $activeArcology.direction != $arcologies[0].embargoTarget>>
-			<br><<link "Purchase a shipment of kimonos" "Neighbor Interact">>
-				<<set $clothesBoughtKimono = 1>>
-				<<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>>
-			<</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>//
+
+		<<if $arcologies[_currentNeighbor].direction !== $arcologies[0].embargoTarget>>
+			<br>[[Target them for economic warfare|Neighbor Interact][$arcologies[0].embargoTarget = $arcologies[_currentNeighbor].direction]]
 		<</if>>
-	<<else>>
-		<br>You already have enough kimonos.
-	<</if>>
-	<<set _exports = 1>>
-<<elseif $activeArcology.FSArabianRevivalist > 95>>
-	<<if !isItemAccessible("harem gauze")>>
-		<<if ($activeArcology.government == "your trustees") || ($activeArcology.government == "your agent")>>
-			<br><<link "Request a shipment of silken harem garb" "Neighbor Interact">>
-				<<set $clothesBoughtHarem = 1>>
-			<</link>>
-		<<elseif $PC.hacking >= 50>>
-			<br><<link "Divert an outgoing shipment of silken harem garb" "Neighbor Interact">>
-				<<set $clothesBoughtHarem = 1>>
-			<</link>>
-		<<elseif $activeArcology.direction != $arcologies[0].embargoTarget>>
-			<br><<link "Purchase a shipment of silken harem garb" "Neighbor Interact">>
-				<<set $clothesBoughtHarem = 1>>
-				<<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>>
-			<</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>//
+		
+		<<if $PC.hacking > 0>>
+			<<if $arcologies[_currentNeighbor].direction !== $arcologies[0].CyberEconomicTarget>>
+				<br>[[Target them for cyber economic warfare|Neighbor Interact][$arcologies[0].CyberEconomicTarget = $arcologies[_currentNeighbor].direction]]
+			<</if>>
+			<<if $arcologies[_currentNeighbor].direction !== $arcologies[0].CyberReputationTarget>>
+				<br>[[Target their leadership for character assassination|Neighbor Interact][$arcologies[0].CyberReputationTarget = $arcologies[_currentNeighbor].direction]]
+			<</if>>
 		<</if>>
-	<<else>>
-		<br>You already have enough silk.
-	<</if>>
-	<<set _exports = 1>>
-<<elseif $activeArcology.FSAztecRevivalist > 95>>
-	<<if !isItemAccessible("a huipil")>>
-		<<if ($activeArcology.government == "your trustees") || ($activeArcology.government == "your agent")>>
-			<br><<link "Request a shipment of huipils" "Neighbor Interact">>
-				<<set $clothesBoughtHuipil = 1>>
-			<</link>>
-		<<elseif $PC.hacking >= 50>>
-			<br><<link "Divert an outgoing shipment of huipils" "Neighbor Interact">>
-				<<set $clothesBoughtHuipil = 1>>
-			<</link>>
-		<<elseif $activeArcology.direction != $arcologies[0].embargoTarget>>
-			<br><<link "Purchase a shipment of huipils" "Neighbor Interact">>
-				<<set $clothesBoughtHuipil = 1>>
-				<<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>>
-			<</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>//
+		<<if $desc.length > 0>>
+			<<if $arcologies[_currentNeighbor].direction !== $arcologies[0].influenceTarget>>
+				<br>[[Set as influence target|Neighbor Interact][$arcologies[0].influenceTarget = $arcologies[_currentNeighbor].direction]]
+			<</if>>
 		<</if>>
-	<<else>>
-		<br>You already have enough huipils.
-	<</if>>
-	<<set _exports = 1>>
-<<elseif $activeArcology.FSChineseRevivalist > 95>>
-	<<if !isItemAccessible("a slutty qipao")>>
-		<<if ($activeArcology.government == "your trustees") || ($activeArcology.government == "your agent")>>
-			<br><<link "Request a shipment of qipaos" "Neighbor Interact">>
-				<<set $clothesBoughtQipao = 1>>
-			<</link>>
-		<<elseif $PC.hacking >= 50>>
-			<br><<link "Divert an outgoing shipment of qipaos" "Neighbor Interact">>
-				<<set $clothesBoughtQipao = 1>>
-			<</link>>
-		<<elseif $activeArcology.direction != $arcologies[0].embargoTarget>>
-			<br><<link "Purchase a shipment of qipaos" "Neighbor Interact">>
-				<<set $clothesBoughtQipao = 1>>
-				<<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>>
-			<</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>//
+
+	<<if ($arcologies[_currentNeighbor].government == "your trustees") || ($arcologies[_currentNeighbor].government == "your agent")>> <br>
+		<<if $arcologies[_currentNeighbor].government == "your trustees">>
+			<br>
+			[[Appoint an agent|Agent Select]]
+			<span id="rename"> | <<link "Instruct them to rename the arcology">><<replace #rename>> | <<textbox "$arcologies[_currentNeighbor].name" $arcologies[_currentNeighbor].name>> [[Confirm name|Neighbor Interact]]<</replace>><</link>></span>
+		<<else>>
+			<br>
+			<<for _j = 0; _j < $leaders.length; _j++>>
+				<<if $arcologies[_currentNeighbor].leaderID == $leaders[_j].ID>>
+					<<setLocalPronouns $leaders[_j]>>
+					Your agent @@.deeppink;<<= SlaveFullName($leaders[_j])>>@@ is running this arcology. [["Recall and reenslave " + $him|Agent Retrieve]]
+					<span id="rename"> | <<link "Instruct $him to rename the arcology">><<replace #rename>> | <<textbox "$arcologies[_currentNeighbor].name" $arcologies[_currentNeighbor].name>> [[Confirm name|Neighbor Interact]]<</replace>><</link>></span>
+					<br>$His <<if $leaders[_j].intelligence > 95>>brilliance<<else>>intelligence<</if>> and education are the most important qualities for $him.
+					<<if $leaders[_j].actualAge > 35>>
+						As with the Head Girl position, $his age and experience lend $him leadership weight.
+					<</if>>
+					<<if $leaders[_j].career == "an arcology owner">>
+						$His career as an arcology owner $himself is, obviously, useful to $him.
+					<<elseif setup.HGCareers.includes($leaders[_j].career)>>
+						$His career in leadership helps $him.
+					<</if>>
+					<<if $leaders[_j].fetishStrength > 95>>
+						<<if ($leaders[_j].fetish == "dom") || ($leaders[_j].fetish == "sadist")>>
+							$His sexually dominant fetish helps $him fill a leadership role.
+						<<elseif ($leaders[_j].fetish == "submissive") || ($leaders[_j].fetish == "masochist")>>
+							Unfortunately, $he has an inappropriate fetish for a leader.
+						<<else>>
+							$His sexual fetishes will influence how $he leads the arcology.
+						<</if>>
+					<</if>>
+					<<if $leaders[_j].energy > 95>>
+						Finally, $his sexual depravity lets $him fit into arcology society naturally.
+					<</if>>
+				<</if>>
+			<</for>>
 		<</if>>
-	<<else>>
-		<br>You already have enough skimpy qipaos.
-	<</if>>
-	<<set _exports = 1>>
-<<elseif $activeArcology.FSEgyptianRevivalist > 95>>
-	<<if !isItemAccessible("ancient Egyptian")>>
-		<<if ($activeArcology.government == "your trustees") || ($activeArcology.government == "your agent")>>
-			<br><<link "Request a shipment of Egyptian necklace replicas" "Neighbor Interact">>
-				<<set $clothesBoughtEgypt = 1>>
-			<</link>>
-		<<elseif $PC.hacking >= 50>>
-			<br><<link "Divert an outgoing shipment of Egyptian necklace replicas" "Neighbor Interact">>
-				<<set $clothesBoughtEgypt = 1>>
-			<</link>>
-		<<elseif $activeArcology.direction != $arcologies[0].embargoTarget>>
-			<br><<link "Purchase a shipment of Egyptian necklace replicas" "Neighbor Interact">>
-				<<set $clothesBoughtEgypt = 1>>
-				<<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>>
-			<</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>//
+		<<if $arcologies[_currentNeighbor].FSSubjugationist != "unset">>
+			<br><<link "Force Abandonment of Racial Subjugation">><<set $arcologies[_currentNeighbor].FSSubjugationist = "unset">><<goto "Neighbor Interact">><</link>>
 		<</if>>
-	<<else>>
-		<br>You already have enough replicas of Egyptian necklaces.
-	<</if>>
-	<<set _exports = 1>>
-<</if>>
-<<if $activeArcology.FSPaternalist > 95>>
-	<<if !isItemAccessible("conservative clothing")>>
-		<<if ($activeArcology.government == "your trustees") || ($activeArcology.government == "your agent")>>
-			<br><<link "Request a shipment of conservative clothing" "Neighbor Interact">>
-				<<set $clothesBoughtConservative = 1>>
-			<</link>>
-		<<elseif $PC.hacking >= 50>>
-			<br><<link "Divert an outgoing shipment of conservative clothing" "Neighbor Interact">>
-				<<set $clothesBoughtConservative = 1>>
-			<</link>>
-		<<elseif $activeArcology.direction != $arcologies[0].embargoTarget>>
-			<br><<link "Purchase a shipment of conservative clothing" "Neighbor Interact">>
-				<<set $clothesBoughtConservative = 1>>
-				<<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>>
-			<</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>//
+		<<if $arcologies[_currentNeighbor].FSSupremacist != "unset">>
+			<br><<link "Force Abandonment of Racial Supremacy">><<set $arcologies[_currentNeighbor].FSSupremacist = "unset">><<goto "Neighbor Interact">><</link>>
 		<</if>>
-	<<else>>
-		<br>You already have enough modest clothing.
-	<</if>>
-	<<set _exports = 1>>
-<<elseif $activeArcology.FSDegradationist > 95>>
-	<<if !isItemAccessible("chains")>>
-		<<if ($activeArcology.government == "your trustees") || ($activeArcology.government == "your agent")>>
-			<br><<link "Request a shipment of binding chains" "Neighbor Interact">>
-				<<set $clothesBoughtChains = 1>>
-			<</link>>
-		<<elseif $PC.hacking >= 50>>
-			<br><<link "Divert an outgoing shipment of binding chains" "Neighbor Interact">>
-				<<set $clothesBoughtChains = 1>>
-			<</link>>
-		<<elseif $activeArcology.direction != $arcologies[0].embargoTarget>>
-			<br><<link "Purchase a shipment of binding chains" "Neighbor Interact">>
-				<<set $clothesBoughtChains = 1>>
-				<<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>>
-			<</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>//
+		<<if $arcologies[_currentNeighbor].FSRepopulationFocus != "unset">>
+			<br><<link "Force Abandonment of Repopulationism">><<set $arcologies[_currentNeighbor].FSRepopulationFocus = "unset">><<goto "Neighbor Interact">><</link>>
 		<</if>>
-	<<else>>
-		<br>You already have enough chains.
-	<</if>>
-	<<set _exports = 1>>
-<</if>>
-<<if $activeArcology.FSGenderFundamentalist > 95>>
-	<<if !isItemAccessible("a bunny outfit")>>
-		<<if ($activeArcology.government == "your trustees") || ($activeArcology.government == "your agent")>>
-			<br><<link "Request a shipment of bunny suits" "Neighbor Interact">>
-				<<set $clothesBoughtBunny = 1>>
-			<</link>>
-		<<elseif $PC.hacking >= 50>>
-			<br><<link "Divert an outgoing shipment of bunny suits" "Neighbor Interact">>
-				<<set $clothesBoughtBunny = 1>>
-			<</link>>
-		<<elseif $activeArcology.direction != $arcologies[0].embargoTarget>>
-			<br><<link "Purchase a shipment of bunny suits" "Neighbor Interact">>
-				<<set $clothesBoughtBunny = 1>>
-				<<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>>
-			<</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>//
+		<<if $arcologies[_currentNeighbor].FSRestart != "unset">>
+			<br><<link "Force Abandonment of Eugenics">><<set $arcologies[_currentNeighbor].FSRestart = "unset">><<goto "Neighbor Interact">><</link>>
 		<</if>>
-	<<else>>
-		<br>You already have enough bunny suits and bowties.
-	<</if>>
-	<<set _exports = 1>>
-<</if>>
-<<if $activeArcology.FSPhysicalIdealist > 95>>
-	<<if !isItemAccessible("body oil")>>
-		<<if ($activeArcology.government == "your trustees") || ($activeArcology.government == "your agent")>>
-			<br><<link "Request a shipment of body oil" "Neighbor Interact">>
-				<<set $clothesBoughtOil = 1>>
-			<</link>>
-		<<elseif $PC.hacking >= 50>>
-			<br><<link "Divert an outgoing shipment of body oil" "Neighbor Interact">>
-				<<set $clothesBoughtOil = 1>>
-			<</link>>
-		<<elseif $activeArcology.direction != $arcologies[0].embargoTarget>>
-			<br><<link "Purchase a shipment of body oil" "Neighbor Interact">>
-				<<set $clothesBoughtOil = 1>>
-				<<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>>
-			<</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>//
+		<<if $arcologies[_currentNeighbor].FSGenderRadicalist != "unset">>
+			<br><<link "Force Abandonment of Gender Radicalism">><<set $arcologies[_currentNeighbor].FSGenderRadicalist = "unset">><<goto "Neighbor Interact">><</link>>
 		<</if>>
-	<<else>>
-		<br>You already have enough body oil.
-	<</if>>
-	<<set _exports = 1>>
-<<elseif $activeArcology.FSHedonisticDecadence > 95>>
-	<<if !isItemAccessible("stretch pants and a crop-top")>>
-		<<if ($activeArcology.government == "your trustees") || ($activeArcology.government == "your agent")>>
-			<br><<link "Request a shipment of stretch pants and crop-tops" "Neighbor Interact">>
-				<<set $clothesBoughtLazyClothes = 1>>
-			<</link>>
-		<<elseif $PC.hacking >= 50>>
-			<br><<link "Divert an outgoing shipment of stretch pants and crop-tops" "Neighbor Interact">>
-				<<set $clothesBoughtLazyClothes = 1>>
-			<</link>>
-		<<elseif $activeArcology.direction != $arcologies[0].embargoTarget>>
-			<br><<link "Purchase a shipment of stretch pants and crop-tops" "Neighbor Interact">>
-				<<set $clothesBoughtLazyClothes = 1>>
-				<<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>>
-			<</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>//
+		<<if $arcologies[_currentNeighbor].FSGenderFundamentalist != "unset">>
+			<br><<link "Force Abandonment of Gender Fundamentalism">><<set $arcologies[_currentNeighbor].FSGenderFundamentalist = "unset">><<goto "Neighbor Interact">><</link>>
 		<</if>>
-	<<else>>
-		<br>You already have enough elastic waistbands and tight tops.
-	<</if>>
-	<<set _exports = 1>>
-<</if>>
-<<if $activeArcology.FSChattelReligionist > 95>>
-	<<if !isItemAccessible("a chattel habit")>>
-		<<if ($activeArcology.government == "your trustees") || ($activeArcology.government == "your agent")>>
-			<br><<link "Request a shipment of chattel religionist habits" "Neighbor Interact">>
-				<<set $clothesBoughtHabit = 1>>
-			<</link>>
-		<<elseif $PC.hacking >= 50>>
-			<br><<link "Divert an outgoing shipment of chattel religionist habits" "Neighbor Interact">>
-				<<set $clothesBoughtHabit = 1>>
-			<</link>>
-		<<elseif $activeArcology.direction != $arcologies[0].embargoTarget>>
-			<br><<link "Purchase a shipment of chattel religionist habits" "Neighbor Interact">>
-				<<set $clothesBoughtHabit = 1>>
-				<<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>>
-			<</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>//
+		<<if $arcologies[_currentNeighbor].FSPaternalist != "unset">>
+			<br><<link "Force Abandonment of Paternalism">><<set $arcologies[_currentNeighbor].FSPaternalist = "unset">><<goto "Neighbor Interact">><</link>>
 		<</if>>
-	<<else>>
-		<br>You already have enough chattel religionist habits.
-	<</if>>
-	<<set _exports = 1>>
-<</if>>
-<<if $activeArcology.FSPastoralist > 95>>
-	<<if !isItemAccessible("Western clothing")>>
-		<<if ($activeArcology.government == "your trustees") || ($activeArcology.government == "your agent")>>
-			<br><<link "Request a shipment of Western clothing" "Neighbor Interact">>
-				<<set $clothesBoughtWestern = 1>>
-			<</link>>
-		<<elseif $PC.hacking >= 50>>
-			<br><<link "Divert an outgoing shipment of Western clothing" "Neighbor Interact">>
-				<<set $clothesBoughtWestern = 1>>
-			<</link>>
-		<<elseif $activeArcology.direction != $arcologies[0].embargoTarget>>
-			<br><<link "Purchase a shipment of Western clothing" "Neighbor Interact">>
-				<<set $clothesBoughtWestern = 1>>
-				<<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>>
-			<</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>//
+		<<if $arcologies[_currentNeighbor].FSDegradationist != "unset">>
+			<br><<link "Force Abandonment of Degradationism">><<set $arcologies[_currentNeighbor].FSDegradationist = "unset">><<goto "Neighbor Interact">><</link>>
 		<</if>>
-	<<else>>
-		<br>You already have enough rancher outfits.
-	<</if>>
-	<<set _exports = 1>>
-<</if>>
-<<if $activeArcology.FSRepopulationFocus > 95>>
-	<<if !isItemAccessible("a maternity dress")>>
-		<<if ($activeArcology.government == "your trustees") || ($activeArcology.government == "your agent")>>
-			<br><<link "Request a shipment of maternity clothing" "Neighbor Interact">>
-				<<set $clothesBoughtMaternityDress = 1>>
-			<</link>>
-		<<elseif $PC.hacking >= 50>>
-			<br><<link "Divert an outgoing shipment of maternity clothing" "Neighbor Interact">>
-				<<set $clothesBoughtMaternityDress = 1>>
-			<</link>>
-		<<elseif $activeArcology.direction != $arcologies[0].embargoTarget>>
-			<br><<link "Purchase a shipment of maternity clothing" "Neighbor Interact">>
-				<<set $clothesBoughtMaternityDress = 1>>
-				<<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>>
-			<</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>//
+		<<if $arcologies[_currentNeighbor].FSBodyPurist != "unset">>
+			<br><<link "Force Abandonment of Body Purism">><<set $arcologies[_currentNeighbor].FSBodyPurist = "unset">><<goto "Neighbor Interact">><</link>>
 		<</if>>
-	<<else>>
-		<br>You already have enough maternity dresses.
-	<</if>>
-	<<if !isItemAccessible("attractive lingerie for a pregnant woman")>>
-		<<if ($activeArcology.government == "your trustees") || ($activeArcology.government == "your agent")>>
-			<br><<link "Request a shipment of maternity lingerie" "Neighbor Interact">>
-				<<set $clothesBoughtMaternityLingerie = 1>>
-			<</link>>
-		<<elseif $PC.hacking >= 50>>
-			<br><<link "Divert an outgoing shipment of maternity lingerie" "Neighbor Interact">>
-				<<set $clothesBoughtMaternityLingerie = 1>>
-			<</link>>
-		<<elseif $activeArcology.direction != $arcologies[0].embargoTarget>>
-			<br><<link "Purchase a shipment of maternity lingerie" "Neighbor Interact">>
-				<<set $clothesBoughtMaternityLingerie = 1>>
-				<<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>>
-			<</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>//
+		<<if $arcologies[_currentNeighbor].FSTransformationFetishist != "unset">>
+			<br><<link "Force Abandonment of Transformation Fetishism">><<set $arcologies[_currentNeighbor].FSTransformationFetishist = "unset">><<goto "Neighbor Interact">><</link>>
 		<</if>>
-	<<else>>
-		<br>You already have enough lingerie suited for pregnant women.
-	<</if>>
-	<<if !isItemAccessible("a small empathy belly")>>
-		<<if ($activeArcology.government == "your trustees") || ($activeArcology.government == "your agent")>>
-			<br><<link "Request a shipment of empathy bellies" "Neighbor Interact">>
-				<<set $clothesBoughtBelly = 1>>
-			<</link>>
-		<<elseif $PC.hacking >= 50>>
-			<br><<link "Divert an outgoing shipment of empathy bellies" "Neighbor Interact">>
-				<<set $clothesBoughtBelly = 1>>
-			<</link>>
-		<<elseif $activeArcology.direction != $arcologies[0].embargoTarget>>
-			<br><<link "Purchase a shipment of empathy bellies" "Neighbor Interact">>
-				<<set $clothesBoughtBelly = 1>>
-				<<run cashX(forceNeg(Math.trunc((15000-(_prices*2))*$upgradeMultiplierTrade)), "capEx")>>
-			<</link>> //Will cost <<print cashFormat(Math.trunc(15000-(_prices*2)))>>//
+		<<if $arcologies[_currentNeighbor].FSYouthPreferentialist != "unset">>
+			<br><<link "Force Abandonment of Youth Preferentialism">><<set $arcologies[_currentNeighbor].FSYouthPreferentialist = "unset">><<goto "Neighbor Interact">><</link>>
+		<</if>>
+		<<if $arcologies[_currentNeighbor].FSMaturityPreferentialist != "unset">>
+			<br><<link "Force Abandonment of Maturity Preferentialism">><<set $arcologies[_currentNeighbor].FSMaturityPreferentialist = "unset">><<goto "Neighbor Interact">><</link>>
+		<</if>>
+		<<if $arcologies[_currentNeighbor].FSSlimnessEnthusiast != "unset">>
+			<br><<link "Force Abandonment of Slimness Enthusiasm">><<set $arcologies[_currentNeighbor].FSSlimnessEnthusiast = "unset">><<goto "Neighbor Interact">><</link>>
+		<</if>>
+		<<if $arcologies[_currentNeighbor].FSAssetExpansionist != "unset">>
+			<br><<link "Force Abandonment of Asset Expansionism">><<set $arcologies[_currentNeighbor].FSAssetExpansionist = "unset">><<goto "Neighbor Interact">><</link>>
+		<</if>>
+		<<if $arcologies[_currentNeighbor].FSPastoralist != "unset">>
+			<br><<link "Force Abandonment of Pastoralism">><<set $arcologies[_currentNeighbor].FSPastoralist = "unset">><<goto "Neighbor Interact">><</link>>
+		<</if>>
+		<<if $arcologies[_currentNeighbor].FSCummunism != "unset">>
+			<br><<link "Force Abandonment of Cummunism">><<set $arcologies[_currentNeighbor].FSCummunism = "unset">><<goto "Neighbor Interact">><</link>>
+		<</if>>
+		<<if $arcologies[_currentNeighbor].FSPhysicalIdealist != "unset">>
+			<br><<link "Force Abandonment of Physical Idealism">><<set $arcologies[_currentNeighbor].FSPhysicalIdealist = "unset">><<goto "Neighbor Interact">><</link>>
+		<</if>>
+		<<if $arcologies[_currentNeighbor].FSHedonisticDecadence != "unset">>
+			<br><<link "Force Abandonment of Hedonistic Decadence">><<set $arcologies[_currentNeighbor].FSHedonisticDecadence = "unset">><<goto "Neighbor Interact">><</link>>
+		<</if>>
+		<<if $arcologies[_currentNeighbor].FSIncestFetishist != "unset">>
+			<br><<link "Force Abandonment of Incest Fetishism">><<set $arcologies[_currentNeighbor].FSIncestFetishist = "unset">><<goto "Neighbor Interact">><</link>>
+		<</if>>
+		<<if $arcologies[_currentNeighbor].FSChattelReligionist != "unset">>
+			<br><<link "Force Abandonment of Chattel Religionism">><<set $arcologies[_currentNeighbor].FSChattelReligionist = "unset">><<goto "Neighbor Interact">><</link>>
+		<</if>>
+		<<if $arcologies[_currentNeighbor].FSRomanRevivalist != "unset">>
+			<br><<link "Force Abandonment of Roman Revivalism">><<set $arcologies[_currentNeighbor].FSRomanRevivalist = "unset">><<goto "Neighbor Interact">><</link>>
+		<</if>>
+		<<if $arcologies[_currentNeighbor].FSAztecRevivalist !== "unset">>
+			<br><<link "Force Abandonment of Aztec Revivalism">><<set $arcologies[_currentNeighbor].FSAztecRevivalist = "unset">><<goto "Neighbor Interact">><</link>>
+		<</if>>
+		<<if $arcologies[_currentNeighbor].FSEgyptianRevivalist != "unset">>
+			<br><<link "Force Abandonment of Egyptian Revivalism">><<set $arcologies[_currentNeighbor].FSEgyptianRevivalist = "unset">><<goto "Neighbor Interact">><</link>>
+		<</if>>
+		<<if $arcologies[_currentNeighbor].FSEdoRevivalist != "unset">>
+			<br><<link "Force Abandonment of Edo Revivalism">><<set $arcologies[_currentNeighbor].FSEdoRevivalist = "unset">><<goto "Neighbor Interact">><</link>>
+		<</if>>
+		<<if $arcologies[_currentNeighbor].FSArabianRevivalist != "unset">>
+			<br><<link "Force Abandonment of Arabian Revivalism">><<set $arcologies[_currentNeighbor].FSArabianRevivalist = "unset">><<goto "Neighbor Interact">><</link>>
+		<</if>>
+		<<if $arcologies[_currentNeighbor].FSChineseRevivalist != "unset">>
+			<br><<link "Force Abandonment of Chinese Revivalism">><<set $arcologies[_currentNeighbor].FSChineseRevivalist = "unset">><<goto "Neighbor Interact">><</link>>
 		<</if>>
-	<<else>>
-		<br>You already have enough fake baby bumps.
 	<</if>>
-	<<set _exports = 1>>
-<</if>>
-<<if _exports != 1>>
-	<<if $activeArcology.direction == $arcologies[0].embargoTarget>>
-		Fortunately,
+
+	<br><br>
+	If $arcologies[_currentNeighbor].name has developed enough to begin exporting worthwhile goods, it may be of interest to acquire some.
+	<<if ($arcologies[_currentNeighbor].government == "your trustees") || ($arcologies[_currentNeighbor].government == "your agent")>>
+		Since it is under your control, it is no problem at all to request the transfer of goods to $arcologies[0].name.
+	<<elseif $PC.hacking >= 50>>
+		It is within your skills to redirect an outgoing shipment to $arcologies[0].name for your retrieval.
+	<<elseif $arcologies[_currentNeighbor].direction === $arcologies[0].embargoTarget>>
+		Due to your active embargo, trade with $arcologies[_currentNeighbor].name is not possible.
 	<<else>>
-		Unfortunately,
+		<<set $targetArcology = $arcologies[0], _tempArc = $arcologies[_currentNeighbor]>><<= arcologyOpinion()>><<set _prices = $opinion*10, $arcologies[_currentNeighbor] = _tempArc>>
+	<</if>>
+	<<if $arcologies[_currentNeighbor].FSRomanRevivalist > 95>>
+		<<if !isItemAccessible("a toga")>>
+			<<if ($arcologies[_currentNeighbor].government == "your trustees") || ($arcologies[_currentNeighbor].government == "your agent")>>
+				<br><<link "Request a shipment of togas" "Neighbor Interact">>
+					<<set $clothesBoughtToga = 1>>
+				<</link>>
+			<<elseif $PC.hacking >= 50>>
+				<br><<link "Divert an outgoing shipment of togas" "Neighbor Interact">>
+					<<set $clothesBoughtToga = 1>>
+				<</link>>
+			<<elseif $arcologies[_currentNeighbor].direction != $arcologies[0].embargoTarget>>
+				<br><<link "Purchase a shipment of togas" "Neighbor Interact">>
+					<<set $clothesBoughtToga = 1>>
+					<<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>>
+				<</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>//
+			<</if>>
+		<<else>>
+			<br>You already have enough togas.
+		<</if>>
+		<<set _exports = 1>>
+	<<elseif $arcologies[_currentNeighbor].FSEdoRevivalist > 95>>
+		<<if !isItemAccessible("a kimono")>>
+			<<if ($arcologies[_currentNeighbor].government == "your trustees") || ($arcologies[_currentNeighbor].government == "your agent")>>
+				<br><<link "Request a shipment of kimonos" "Neighbor Interact">>
+					<<set $clothesBoughtKimono = 1>>
+				<</link>>
+			<<elseif $PC.hacking >= 50>>
+				<br><<link "Divert an outgoing shipment of kimonos" "Neighbor Interact">>
+					<<set $clothesBoughtKimono = 1>>
+				<</link>>
+			<<elseif $arcologies[_currentNeighbor].direction != $arcologies[0].embargoTarget>>
+				<br><<link "Purchase a shipment of kimonos" "Neighbor Interact">>
+					<<set $clothesBoughtKimono = 1>>
+					<<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>>
+				<</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>//
+			<</if>>
+		<<else>>
+			<br>You already have enough kimonos.
+		<</if>>
+		<<set _exports = 1>>
+	<<elseif $arcologies[_currentNeighbor].FSArabianRevivalist > 95>>
+		<<if !isItemAccessible("harem gauze")>>
+			<<if ($arcologies[_currentNeighbor].government == "your trustees") || ($arcologies[_currentNeighbor].government == "your agent")>>
+				<br><<link "Request a shipment of silken harem garb" "Neighbor Interact">>
+					<<set $clothesBoughtHarem = 1>>
+				<</link>>
+			<<elseif $PC.hacking >= 50>>
+				<br><<link "Divert an outgoing shipment of silken harem garb" "Neighbor Interact">>
+					<<set $clothesBoughtHarem = 1>>
+				<</link>>
+			<<elseif $arcologies[_currentNeighbor].direction != $arcologies[0].embargoTarget>>
+				<br><<link "Purchase a shipment of silken harem garb" "Neighbor Interact">>
+					<<set $clothesBoughtHarem = 1>>
+					<<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>>
+				<</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>//
+			<</if>>
+		<<else>>
+			<br>You already have enough silk.
+		<</if>>
+		<<set _exports = 1>>
+	<<elseif $arcologies[_currentNeighbor].FSAztecRevivalist > 95>>
+		<<if !isItemAccessible("a huipil")>>
+			<<if ($arcologies[_currentNeighbor].government == "your trustees") || ($arcologies[_currentNeighbor].government == "your agent")>>
+				<br><<link "Request a shipment of huipils" "Neighbor Interact">>
+					<<set $clothesBoughtHuipil = 1>>
+				<</link>>
+			<<elseif $PC.hacking >= 50>>
+				<br><<link "Divert an outgoing shipment of huipils" "Neighbor Interact">>
+					<<set $clothesBoughtHuipil = 1>>
+				<</link>>
+			<<elseif $arcologies[_currentNeighbor].direction != $arcologies[0].embargoTarget>>
+				<br><<link "Purchase a shipment of huipils" "Neighbor Interact">>
+					<<set $clothesBoughtHuipil = 1>>
+					<<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>>
+				<</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>//
+			<</if>>
+		<<else>>
+			<br>You already have enough huipils.
+		<</if>>
+		<<set _exports = 1>>
+	<<elseif $arcologies[_currentNeighbor].FSChineseRevivalist > 95>>
+		<<if !isItemAccessible("a slutty qipao")>>
+			<<if ($arcologies[_currentNeighbor].government == "your trustees") || ($arcologies[_currentNeighbor].government == "your agent")>>
+				<br><<link "Request a shipment of qipaos" "Neighbor Interact">>
+					<<set $clothesBoughtQipao = 1>>
+				<</link>>
+			<<elseif $PC.hacking >= 50>>
+				<br><<link "Divert an outgoing shipment of qipaos" "Neighbor Interact">>
+					<<set $clothesBoughtQipao = 1>>
+				<</link>>
+			<<elseif $arcologies[_currentNeighbor].direction != $arcologies[0].embargoTarget>>
+				<br><<link "Purchase a shipment of qipaos" "Neighbor Interact">>
+					<<set $clothesBoughtQipao = 1>>
+					<<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>>
+				<</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>//
+			<</if>>
+		<<else>>
+			<br>You already have enough skimpy qipaos.
+		<</if>>
+		<<set _exports = 1>>
+	<<elseif $arcologies[_currentNeighbor].FSEgyptianRevivalist > 95>>
+		<<if !isItemAccessible("ancient Egyptian")>>
+			<<if ($arcologies[_currentNeighbor].government == "your trustees") || ($arcologies[_currentNeighbor].government == "your agent")>>
+				<br><<link "Request a shipment of Egyptian necklace replicas" "Neighbor Interact">>
+					<<set $clothesBoughtEgypt = 1>>
+				<</link>>
+			<<elseif $PC.hacking >= 50>>
+				<br><<link "Divert an outgoing shipment of Egyptian necklace replicas" "Neighbor Interact">>
+					<<set $clothesBoughtEgypt = 1>>
+				<</link>>
+			<<elseif $arcologies[_currentNeighbor].direction != $arcologies[0].embargoTarget>>
+				<br><<link "Purchase a shipment of Egyptian necklace replicas" "Neighbor Interact">>
+					<<set $clothesBoughtEgypt = 1>>
+					<<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>>
+				<</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>//
+			<</if>>
+		<<else>>
+			<br>You already have enough replicas of Egyptian necklaces.
+		<</if>>
+		<<set _exports = 1>>
+	<</if>>
+	<<if $arcologies[_currentNeighbor].FSPaternalist > 95>>
+		<<if !isItemAccessible("conservative clothing")>>
+			<<if ($arcologies[_currentNeighbor].government == "your trustees") || ($arcologies[_currentNeighbor].government == "your agent")>>
+				<br><<link "Request a shipment of conservative clothing" "Neighbor Interact">>
+					<<set $clothesBoughtConservative = 1>>
+				<</link>>
+			<<elseif $PC.hacking >= 50>>
+				<br><<link "Divert an outgoing shipment of conservative clothing" "Neighbor Interact">>
+					<<set $clothesBoughtConservative = 1>>
+				<</link>>
+			<<elseif $arcologies[_currentNeighbor].direction != $arcologies[0].embargoTarget>>
+				<br><<link "Purchase a shipment of conservative clothing" "Neighbor Interact">>
+					<<set $clothesBoughtConservative = 1>>
+					<<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>>
+				<</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>//
+			<</if>>
+		<<else>>
+			<br>You already have enough modest clothing.
+		<</if>>
+		<<set _exports = 1>>
+	<<elseif $arcologies[_currentNeighbor].FSDegradationist > 95>>
+		<<if !isItemAccessible("chains")>>
+			<<if ($arcologies[_currentNeighbor].government == "your trustees") || ($arcologies[_currentNeighbor].government == "your agent")>>
+				<br><<link "Request a shipment of binding chains" "Neighbor Interact">>
+					<<set $clothesBoughtChains = 1>>
+				<</link>>
+			<<elseif $PC.hacking >= 50>>
+				<br><<link "Divert an outgoing shipment of binding chains" "Neighbor Interact">>
+					<<set $clothesBoughtChains = 1>>
+				<</link>>
+			<<elseif $arcologies[_currentNeighbor].direction != $arcologies[0].embargoTarget>>
+				<br><<link "Purchase a shipment of binding chains" "Neighbor Interact">>
+					<<set $clothesBoughtChains = 1>>
+					<<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>>
+				<</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>//
+			<</if>>
+		<<else>>
+			<br>You already have enough chains.
+		<</if>>
+		<<set _exports = 1>>
+	<</if>>
+	<<if $arcologies[_currentNeighbor].FSGenderFundamentalist > 95>>
+		<<if !isItemAccessible("a bunny outfit")>>
+			<<if ($arcologies[_currentNeighbor].government == "your trustees") || ($arcologies[_currentNeighbor].government == "your agent")>>
+				<br><<link "Request a shipment of bunny suits" "Neighbor Interact">>
+					<<set $clothesBoughtBunny = 1>>
+				<</link>>
+			<<elseif $PC.hacking >= 50>>
+				<br><<link "Divert an outgoing shipment of bunny suits" "Neighbor Interact">>
+					<<set $clothesBoughtBunny = 1>>
+				<</link>>
+			<<elseif $arcologies[_currentNeighbor].direction != $arcologies[0].embargoTarget>>
+				<br><<link "Purchase a shipment of bunny suits" "Neighbor Interact">>
+					<<set $clothesBoughtBunny = 1>>
+					<<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>>
+				<</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>//
+			<</if>>
+		<<else>>
+			<br>You already have enough bunny suits and bowties.
+		<</if>>
+		<<set _exports = 1>>
+	<</if>>
+	<<if $arcologies[_currentNeighbor].FSPhysicalIdealist > 95>>
+		<<if !isItemAccessible("body oil")>>
+			<<if ($arcologies[_currentNeighbor].government == "your trustees") || ($arcologies[_currentNeighbor].government == "your agent")>>
+				<br><<link "Request a shipment of body oil" "Neighbor Interact">>
+					<<set $clothesBoughtOil = 1>>
+				<</link>>
+			<<elseif $PC.hacking >= 50>>
+				<br><<link "Divert an outgoing shipment of body oil" "Neighbor Interact">>
+					<<set $clothesBoughtOil = 1>>
+				<</link>>
+			<<elseif $arcologies[_currentNeighbor].direction != $arcologies[0].embargoTarget>>
+				<br><<link "Purchase a shipment of body oil" "Neighbor Interact">>
+					<<set $clothesBoughtOil = 1>>
+					<<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>>
+				<</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>//
+			<</if>>
+		<<else>>
+			<br>You already have enough body oil.
+		<</if>>
+		<<set _exports = 1>>
+	<<elseif $arcologies[_currentNeighbor].FSHedonisticDecadence > 95>>
+		<<if !isItemAccessible("stretch pants and a crop-top")>>
+			<<if ($arcologies[_currentNeighbor].government == "your trustees") || ($arcologies[_currentNeighbor].government == "your agent")>>
+				<br><<link "Request a shipment of stretch pants and crop-tops" "Neighbor Interact">>
+					<<set $clothesBoughtLazyClothes = 1>>
+				<</link>>
+			<<elseif $PC.hacking >= 50>>
+				<br><<link "Divert an outgoing shipment of stretch pants and crop-tops" "Neighbor Interact">>
+					<<set $clothesBoughtLazyClothes = 1>>
+				<</link>>
+			<<elseif $arcologies[_currentNeighbor].direction != $arcologies[0].embargoTarget>>
+				<br><<link "Purchase a shipment of stretch pants and crop-tops" "Neighbor Interact">>
+					<<set $clothesBoughtLazyClothes = 1>>
+					<<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>>
+				<</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>//
+			<</if>>
+		<<else>>
+			<br>You already have enough elastic waistbands and tight tops.
+		<</if>>
+		<<set _exports = 1>>
+	<</if>>
+	<<if $arcologies[_currentNeighbor].FSChattelReligionist > 95>>
+		<<if !isItemAccessible("a chattel habit")>>
+			<<if ($arcologies[_currentNeighbor].government == "your trustees") || ($arcologies[_currentNeighbor].government == "your agent")>>
+				<br><<link "Request a shipment of chattel religionist habits" "Neighbor Interact">>
+					<<set $clothesBoughtHabit = 1>>
+				<</link>>
+			<<elseif $PC.hacking >= 50>>
+				<br><<link "Divert an outgoing shipment of chattel religionist habits" "Neighbor Interact">>
+					<<set $clothesBoughtHabit = 1>>
+				<</link>>
+			<<elseif $arcologies[_currentNeighbor].direction != $arcologies[0].embargoTarget>>
+				<br><<link "Purchase a shipment of chattel religionist habits" "Neighbor Interact">>
+					<<set $clothesBoughtHabit = 1>>
+					<<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>>
+				<</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>//
+			<</if>>
+		<<else>>
+			<br>You already have enough chattel religionist habits.
+		<</if>>
+		<<set _exports = 1>>
+	<</if>>
+	<<if $arcologies[_currentNeighbor].FSPastoralist > 95>>
+		<<if !isItemAccessible("Western clothing")>>
+			<<if ($arcologies[_currentNeighbor].government == "your trustees") || ($arcologies[_currentNeighbor].government == "your agent")>>
+				<br><<link "Request a shipment of Western clothing" "Neighbor Interact">>
+					<<set $clothesBoughtWestern = 1>>
+				<</link>>
+			<<elseif $PC.hacking >= 50>>
+				<br><<link "Divert an outgoing shipment of Western clothing" "Neighbor Interact">>
+					<<set $clothesBoughtWestern = 1>>
+				<</link>>
+			<<elseif $arcologies[_currentNeighbor].direction != $arcologies[0].embargoTarget>>
+				<br><<link "Purchase a shipment of Western clothing" "Neighbor Interact">>
+					<<set $clothesBoughtWestern = 1>>
+					<<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>>
+				<</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>//
+			<</if>>
+		<<else>>
+			<br>You already have enough rancher outfits.
+		<</if>>
+		<<set _exports = 1>>
+	<</if>>
+	<<if $arcologies[_currentNeighbor].FSRepopulationFocus > 95>>
+		<<if !isItemAccessible("a maternity dress")>>
+			<<if ($arcologies[_currentNeighbor].government == "your trustees") || ($arcologies[_currentNeighbor].government == "your agent")>>
+				<br><<link "Request a shipment of maternity clothing" "Neighbor Interact">>
+					<<set $clothesBoughtMaternityDress = 1>>
+				<</link>>
+			<<elseif $PC.hacking >= 50>>
+				<br><<link "Divert an outgoing shipment of maternity clothing" "Neighbor Interact">>
+					<<set $clothesBoughtMaternityDress = 1>>
+				<</link>>
+			<<elseif $arcologies[_currentNeighbor].direction != $arcologies[0].embargoTarget>>
+				<br><<link "Purchase a shipment of maternity clothing" "Neighbor Interact">>
+					<<set $clothesBoughtMaternityDress = 1>>
+					<<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>>
+				<</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>//
+			<</if>>
+		<<else>>
+			<br>You already have enough maternity dresses.
+		<</if>>
+		<<if !isItemAccessible("attractive lingerie for a pregnant woman")>>
+			<<if ($arcologies[_currentNeighbor].government == "your trustees") || ($arcologies[_currentNeighbor].government == "your agent")>>
+				<br><<link "Request a shipment of maternity lingerie" "Neighbor Interact">>
+					<<set $clothesBoughtMaternityLingerie = 1>>
+				<</link>>
+			<<elseif $PC.hacking >= 50>>
+				<br><<link "Divert an outgoing shipment of maternity lingerie" "Neighbor Interact">>
+					<<set $clothesBoughtMaternityLingerie = 1>>
+				<</link>>
+			<<elseif $arcologies[_currentNeighbor].direction != $arcologies[0].embargoTarget>>
+				<br><<link "Purchase a shipment of maternity lingerie" "Neighbor Interact">>
+					<<set $clothesBoughtMaternityLingerie = 1>>
+					<<run cashX(forceNeg(Math.trunc((7500-_prices)*$upgradeMultiplierTrade)), "capEx")>>
+				<</link>> //Will cost <<print cashFormat(Math.trunc((7500-_prices)*$upgradeMultiplierTrade))>>//
+			<</if>>
+		<<else>>
+			<br>You already have enough lingerie suited for pregnant women.
+		<</if>>
+		<<if !isItemAccessible("a small empathy belly")>>
+			<<if ($arcologies[_currentNeighbor].government == "your trustees") || ($arcologies[_currentNeighbor].government == "your agent")>>
+				<br><<link "Request a shipment of empathy bellies" "Neighbor Interact">>
+					<<set $clothesBoughtBelly = 1>>
+				<</link>>
+			<<elseif $PC.hacking >= 50>>
+				<br><<link "Divert an outgoing shipment of empathy bellies" "Neighbor Interact">>
+					<<set $clothesBoughtBelly = 1>>
+				<</link>>
+			<<elseif $arcologies[_currentNeighbor].direction != $arcologies[0].embargoTarget>>
+				<br><<link "Purchase a shipment of empathy bellies" "Neighbor Interact">>
+					<<set $clothesBoughtBelly = 1>>
+					<<run cashX(forceNeg(Math.trunc((15000-(_prices*2))*$upgradeMultiplierTrade)), "capEx")>>
+				<</link>> //Will cost <<print cashFormat(Math.trunc(15000-(_prices*2)))>>//
+			<</if>>
+		<<else>>
+			<br>You already have enough fake baby bumps.
+		<</if>>
+		<<set _exports = 1>>
 	<</if>>
-	they have nothing of value.
-<</if>>
-<br>
-<<if $arcologies[0].embargoTarget != -1>>
-	<br>
-	[[Cancel economic warfare|Neighbor Interact][$arcologies[0].embargoTarget = -1]]
-<</if>>
-<<if $arcologies[0].influenceTarget != -1>>
-	<br>
-	[[Stop trying to influence neighboring arcologies|Neighbor Interact][$arcologies[0].influenceTarget = -1]]
-<</if>>
-<<if $arcologies[0].CyberEconomicTarget != -1>>
-	<br>
-	[[Cancel cyber economic warfare|Neighbor Interact][$arcologies[0].CyberEconomicTarget = -1]]
-<</if>>
-<<if $arcologies[0].CyberReputationTarget != -1>>
-	<br>
-	[[Cancel character assassination|Neighbor Interact][$arcologies[0].CyberReputationTarget = -1]]
-<</if>>
+	<<if _exports != 1>>
+		<<if $arcologies[_currentNeighbor].direction == $arcologies[0].embargoTarget>>
+			Fortunately,
+		<<else>>
+			Unfortunately,
+		<</if>>
+		they have nothing of value.
+	<</if>>
+
+	<</replace>>
+	<</link>> with an estimated GSP of @@.yellowgreen;<<print cashFormat(Math.trunc((0.1*$arcologies[_currentNeighbor].prosperity*random(100-$economicUncertainty,100+$economicUncertainty))/100))>>m@@ and is ran by $arcologies[_currentNeighbor].government who own $arcologies[_currentNeighbor].ownership%.
+<</capture>>
+<</for>>
+</span>
\ No newline at end of file
diff --git a/src/uncategorized/slaveInteract.tw b/src/uncategorized/slaveInteract.tw
index 112c3633040b63bca443bff509491cb70fbd3abf..68ede406c603d2fb455b3126335028f36b446da3 100644
--- a/src/uncategorized/slaveInteract.tw
+++ b/src/uncategorized/slaveInteract.tw
@@ -1360,7 +1360,8 @@ Aphrodisiacs: <span id="aphrodisiacs"><strong><<if $activeSlave.aphrodisiacs > 1
 					<</if>>
 				<<elseif $reservedChildrenNursery < $freeCribs>>
 					$He is pregnant and you have <<if $freeCribs == 1>>an<</if>> @@.lime;available room<<if $freeCribs > 1>>s<</if>>@@ in $nurseryName.
-					<<print "[[Keep _cCount child|Slave Interact][WombAddToGenericReserve($activeSlave, 'nursery', 1)]]">>
+					<<set _cCount = (_WL > 1 ? "a" : "the")>>
+					<<link "Keep _cCount child" "Slave Interact">><<set WombAddToGenericReserve($activeSlave, "nursery", 1)>><<set $slaves[$slaveIndices[$activeSlave.ID]] = $activeSlave>><<set $reservedChildren = FetusGlobalReserveCount("nursery")>><</link>>
 					<<if (_WL > 1) && ($reservedChildrenNursery + _WL) <= $freeCribs>>
 						| <<link "Keep all of $his children" "Slave Interact">><<set WombAddToGenericReserve($activeSlave, "nursery", 9999)>><<set $slaves[$slaveIndices[$activeSlave.ID]] = $activeSlave>><<set $reservedChildren = FetusGlobalReserveCount("nursery")>><</link>>
 					<</if>>
diff --git a/src/uncategorized/storyCaption.tw b/src/uncategorized/storyCaption.tw
index 9dac3116fe4b65b53d78af7a31d9d832dd1810f9..1273eff2ee89b167345ed71b852085dc9c026f2e 100644
--- a/src/uncategorized/storyCaption.tw
+++ b/src/uncategorized/storyCaption.tw
@@ -170,6 +170,7 @@
 				since last week)
 				<</link>>
 			<</if>>
+			<br>
 		<</if>>
 		[[Upkeep|Costs Budget]] |
 	<<else>>
@@ -186,7 +187,7 @@
 		<</if>>
 		Upkeep |
 	<</if>><<print cashFormat($costs)>>
-	<br><br>@@.pink;Total Sex Slaves@@ | <<print num(_SL)>>
+	<br><br>@@.pink;Total Sex Slaves@@ | <<print _SL>>
 	<br>@@.pink;Penthouse Beds@@ |
 	<<if $dormitoryPopulation+$roomsPopulation > ($dormitory+$rooms)>>@@.red;<<print $dormitoryPopulation+$roomsPopulation>>@@<<else>><<print $dormitoryPopulation+$roomsPopulation>><</if>>/<<print ($dormitory+$rooms)>>
 	<br>@@.pink;Dormitory Beds@@ | <<if $dormitoryPopulation > $dormitory>>@@.red;<<print $dormitoryPopulation>>@@<<else>><<print $dormitoryPopulation>><</if>>/<<print $dormitory>>
@@ -258,7 +259,7 @@
 	<<else>>
 		@@color:rgb(0,255,0);unknown@@
 	<</if>>
-	(<<print num($rep)>>)
+	(<<print $rep>>)
 	</span>
 	<<if (_Pass == "Main")>>
 		<<if ($cheatMode) && ($cheatModeM)>>
@@ -364,7 +365,7 @@
 		<<else>>
 			@@color:rgb(211,0,204);harmless@@
 		<</if>>
-		(<<print num($authority)>>)
+		(<<print $authority>>)
 		</span>
 		<<if (_Pass == "Main")>>
 			<<if ($cheatMode) && ($cheatModeM)>>
@@ -604,6 +605,9 @@
 			<<else>>
 				($incubatorSlaves/$incubator)
 			<</if>>
+			<<if $readySlaves > 0>>
+				@@.yellow;[!]@@
+			<</if>>
 		<</if>>
 		<<if ($pit)>>
 			<br> <<link "$pitNameCaps""Pit">><</link>>
@@ -620,8 +624,11 @@
 	<<elseif _Pass == "Options">>
 		<br><br> [[Summary Options]]
 		<br> [[Description Options]]
-	<<elseif _Pass == "Manage Arcology">>
-		<span id="Security"> <br>
+	<<elseif _Pass == "Manage Arcology">> <br>
+		<span id="Security">
+		<<if $arcologies.length > 1>>
+			<br>[[Diplomacy|Neighbor Interact]]
+		<</if>>
 		<<if $secExp == 1>>
 			<br><span id="edictButton"><<link [[Edicts|edicts]]>><<set $nextButton = "Back", $nextLink = "Main">><</link>></span> @@.cyan;[D]@@
 		<</if>>