diff --git a/compile_themes.bat b/compile_themes.bat
new file mode 100644
index 0000000000000000000000000000000000000000..09d80826ae2fd8a199455467fc9176a4a1073882
--- /dev/null
+++ b/compile_themes.bat
@@ -0,0 +1,31 @@
+@echo off
+
+set back=%cd%
+for /d %%i in (%~dp0\themes\*) do (
+    CALL :compileDirectory %%i
+)
+cd %back%
+
+
+PAUSE
+EXIT /B %ERRORLEVEL%
+
+:compileDirectory
+REM ~1 is an absolute path, get name of directory here
+REM https://stackoverflow.com/a/5480568
+set var1=%~1%
+set var2=%var1%
+set i=0
+
+:loopprocess
+for /F "tokens=1* delims=\" %%A in ( "%var1%" ) do (
+  set /A i+=1
+  set var1=%%B
+  goto loopprocess
+)
+
+for /F "tokens=%i% delims=\" %%G in ( "%var2%" ) do set last=%%G
+
+REM compile
+CALL devTools/concatFiles.bat "%%~1" "*.css" bin\"%last%".css
+EXIT /B 0
diff --git a/js/003-data/gameVariableData.js b/js/003-data/gameVariableData.js
index 590b8535c38584f7c93d4c04fa6f68b940ec6223..19fe7081b3694a0f342580348b5ae54821a94008 100644
--- a/js/003-data/gameVariableData.js
+++ b/js/003-data/gameVariableData.js
@@ -311,8 +311,8 @@ App.Data.resetOnNGPlus = {
 		alwaysSubsidizeRep: 0,
 		alwaysSubsidizeGrowth: 0,
 
-		immmigrationCash: 0,
-		immmigrationRep: 0,
+		immigrationCash: 0,
+		immigrationRep: 0,
 		enslavementCash: 0,
 		enslavementRep: 0,
 		cashForRep: 0,
@@ -320,8 +320,8 @@ App.Data.resetOnNGPlus = {
 		oralAppeal: 0,
 		vaginalAppeal: 0,
 		analAppeal: 0,
-		sexualOpeness: 0,
-		bestialityOpeness: 0
+		sexualOpenness: 0,
+		bestialityOpenness: 0
 	},
 
 	FCTV: {
@@ -349,7 +349,6 @@ App.Data.resetOnNGPlus = {
 	personalShares: 0,
 	publicShares: 0,
 	SF: {},
-	recuriterOffice: 0,
 	focus: "social engineering",
 	thisWeeksFSWares: 0,
 	thisWeeksIllegalWares: 0,
@@ -400,7 +399,7 @@ App.Data.resetOnNGPlus = {
 	militaryService: 0,
 	militarizedSociety: 0,
 	militaryExemption: 0,
-	lowerRquirements: 0,
+	lowerRequirements: 0,
 	noSubhumansInArmy: 0,
 	pregExemption: 0,
 	eliteOfficers: 0,
@@ -1020,7 +1019,6 @@ App.Data.resetOnNGPlus = {
 	startingSlaveRelative: 0,
 	mom: 0,
 	/* animalParts: 0,*/
-	originOveride: 0,
 	pregSpeedControl: 0,
 	playerSurgery: 0,
 	bodyswapAnnounced: 0,
@@ -1029,7 +1027,6 @@ App.Data.resetOnNGPlus = {
 	FCNNstation: 0,
 	MercenariesMessageSent: 0,
 	SpecialForcesMessageSent: 0,
-	BodyguardHasSucessfullyRecivedSignal: 0,
 	finalChoice: "none",
 	eliteTotal: 12,
 	eliteDead: 0,
@@ -1156,14 +1153,7 @@ App.Data.resetOnNGPlus = {
 	rivalRace: 0,
 	rivalGender: 0,
 	nationHate: 0,
-	slaveMedic: 0,
-	PShoot: 0,
-	PSnatch: 0,
-	PRaid: 0,
-	PRaidTarget: 0,
-	PAidTarget: "",
-	PAid: 0,
-	PPit: 0,
+	eventResults: {},
 
 	dispensary: 0,
 	dispensaryUpgrade: 0,
@@ -1322,18 +1312,20 @@ App.Data.resetOnNGPlus = {
 	citizenRetirementTrigger: 0,
 	FSSupLawTrigger: 0,
 	FSSubLawTrigger: 0,
-	nicaea: 0,
-	nicaeaAnnounceable: 0,
-	nicaeaAnnounced: 0,
-	nicaeaPreparation: 0,
-	nicaeaInvolvement: -2,
-	nicaeaPower: 0,
-	nicaeaHeld: 0,
-	nicaeaFocus: "",
-	nicaeaAssignment: "",
-	nicaeaAchievement: "",
-	nicaeaName: "",
-	nicaeaInfluence: 0,
+	nicaea: {
+		announceable: 0,
+		announced: 0,
+		preparation: 0,
+		involvement: -2,
+		power: 0,
+		held: 0,
+		focus: "",
+		assignment: "",
+		achievement: "",
+		name: "",
+		influence: 0,
+	},
+
 	peacekeepers: 0,
 	peacekeepersFate: 0,
 	peacekeepersGone: 0,
@@ -1359,8 +1351,10 @@ App.Data.resetOnNGPlus = {
 	maxGrowthAge: 24,
 
 	/* Job Fulfillment Center */
-	JFCOrder: 0,
-	Role: "",
+	JFC: {
+		order: 0,
+		role: ""
+	},
 
 	cheatMode: 0,
 	cheatModeM: 1,
diff --git a/js/003-data/miscData.js b/js/003-data/miscData.js
index 55af01d10c3cb37bf1e51849f29bd40e59a46930..9cbcf65a6eda38246f4ca99085e2f577094f0484 100644
--- a/js/003-data/miscData.js
+++ b/js/003-data/miscData.js
@@ -2592,134 +2592,6 @@ App.Data.misc = {
 	whoringAssignments: [Job.WHORE, Job.BROTHEL, Job.PUBLIC, Job.CLUB],
 
 	secExCombatPrestige: ["$He is well known for being a great commander.", "$He is famous for being an incredible commander.", "$He is known as a legendary commander all over the world."],
-
-	lightColorMap: {
-		"rgb(0, 0, 0)": "rgb(255, 255, 255)",
-		"rgb(255, 255, 0)": "rgb(255, 255, 0)",
-		"rgb(238, 238, 238)": "rgb(17, 17, 17)",
-		"rgb(17, 17, 17)": "rgb(238, 238, 238)",
-		"linear-gradient(90deg, rgb(17, 17, 17), rgba(17, 17, 17, 0.8) 60%, rgba(17, 17, 17, 0))": "linear-gradient(90deg, rgb(238, 238, 238), rgba(238, 238, 238, 0.8) 60%, rgba(238, 238, 238, 0))",
-		"red": "red",
-		"rgb(102, 136, 221)": "rgb(102, 136, 221)",
-		"rgb(136, 170, 255)": "rgb(136, 170, 255)",
-		"rgb(204, 34, 34)": "rgb(204, 34, 34)",
-		"rgb(238, 68, 68)": "rgb(238, 68, 68)",
-		"rgb(170, 170, 170)": "rgb(170, 170, 170)",
-		"rgb(51, 85, 170)": "rgb(118, 145, 214)",
-		"rgb(85, 119, 204)": "rgb(85, 119, 204)",
-		"rgb(68, 68, 68)": "rgb(187, 187, 187)",
-		"rgb(51, 51, 51)": "rgb(204, 204, 204)",
-		"rgb(85, 17, 17)": "rgb(85, 17, 17)",
-		"rgb(187, 68, 68)": "rgb(187, 68, 68)",
-		"rgb(153, 153, 153)": "rgb(153, 153, 153)",
-		"rgb(34, 136, 34)": "rgb(34, 136, 34)",
-		"rgb(68, 170, 68)": "rgb(68, 170, 68)",
-		"rgb(34, 34, 34)": "rgb(221, 221, 221)",
-		"rgb(34, 51, 68)": "rgb(34, 51, 68)",
-		"rgb(85, 85, 85)": "rgb(170, 170, 170)",
-		"rgba(0, 0, 0, 0.25)": "rgba(0, 0, 0, 0.25)",
-		"rgb(46, 46, 46)": "rgb(209, 209, 208)",
-		"rgb(119, 119, 119)": "rgb(136, 136, 136)",
-		"rgb(0, 30, 0)": "rgb(220, 245, 220)",
-		"rgb(15, 40, 15)": "rgb(245, 255, 245)",
-		"green": "green",
-		"aquamarine": "lightseagreen",
-		"coral": "coral",
-		"cyan": "darkcyan",
-		"darkgoldenrod": "darkgoldenrod",
-		"darkred": "darkred",
-		"darkviolet": "darkviolet",
-		"deeppink": "deeppink",
-		"deepskyblue": "deepskyblue",
-		"gold": "gold",
-		"goldenrod": "goldenrod",
-		"gray": "gray",
-		"hotpink": "hotpink",
-		"lawngreen": "darkgreen",
-		"lightblue": "lightblue",
-		"lightcoral": "lightcoral",
-		"lightgreen": "lightgreen",
-		"lightpink": "lightpink",
-		"lightsalmon": "lightsalmon",
-		"lime": "green",
-		"limegreen": "limegreen",
-		"magenta": "magenta",
-		"mediumaquamarine": "mediumaquamarine",
-		"mediumorchid": "mediumorchid",
-		"mediumseagreen": "mediumseagreen",
-		"orange": "orange",
-		"orangered": "orangered",
-		"orchid": "orchid",
-		"pink": "deeppink",
-		"seagreen": "seagreen",
-		"springgreen": "green",
-		"tan": "brown",
-		"yellow": "orange",
-		"yellowgreen": "yellowgreen"
-	},
-
-	defaultColorMap: {
-		"rgb(0, 0, 0)": "rgb(0, 0, 0)",
-		"rgb(255, 255, 0)": "rgb(255, 255, 0)",
-		"rgb(238, 238, 238)": "rgb(238, 238, 238)",
-		"rgb(17, 17, 17)": "rgb(17, 17, 17)",
-		"linear-gradient(90deg, rgba(17,17,17,1), rgba(17,17,17,0.8) 60%, rgba(17,17,17,0))": "linear-gradient(90deg, rgba(17,17,17,1), rgba(17,17,17,0.8) 60%, rgba(17,17,17,0))",
-		"red": "red",
-		"rgb(102, 136, 221)": "rgb(102, 136, 221)",
-		"rgb(136, 170, 255)": "rgb(136, 170, 255)",
-		"rgb(204, 34, 34)": "rgb(204, 34, 34)",
-		"rgb(238, 68, 68)": "rgb(238, 68, 68)",
-		"rgb(170, 170, 170)": "rgb(170, 170, 170)",
-		"rgb(51, 85, 170)": "rgb(51, 85, 170)",
-		"rgb(85, 119, 204)": "rgb(85, 119, 204)",
-		"rgb(68, 68, 68)": "rgb(68, 68, 68)",
-		"rgb(51, 51, 51)": "rgb(51, 51, 51)",
-		"rgb(85, 17, 17)": "rgb(85, 17, 17)",
-		"rgb(187, 68, 68)": "rgb(187, 68, 68)",
-		"rgb(153, 153, 153)": "rgb(153, 153, 153)",
-		"rgb(34, 136, 34)": "rgb(34, 136, 34)",
-		"rgb(68, 170, 68)": "rgb(68, 170, 68)",
-		"rgb(34, 34, 34)": "rgb(34, 34, 34)",
-		"rgb(34, 51, 68)": "rgb(34, 51, 68)",
-		"rgb(85, 85, 85)": "rgb(85, 85, 85)",
-		"rgba(0, 0, 0, 0.25)": "rgba(0, 0, 0, 0.25)",
-		"rgb(46, 46, 46)": "rgb(46, 46, 46)",
-		"rgb(119, 119, 119)": "rgb(119, 119, 119)",
-		"green": "green",
-		"aquamarine": "aquamarine",
-		"coral": "coral",
-		"cyan": "cyan",
-		"darkgoldenrod": "darkgoldenrod",
-		"darkred": "darkred",
-		"darkviolet": "darkviolet",
-		"deeppink": "deeppink",
-		"deepskyblue": "deepskyblue",
-		"gold": "gold",
-		"goldenrod": "goldenrod",
-		"gray": "gray",
-		"hotpink": "hotpink",
-		"lawngreen": "lawngreen",
-		"lightblue": "lightblue",
-		"lightcoral": "lightcoral",
-		"lightgreen": "lightgreen",
-		"lightpink": "lightpink",
-		"lightsalmon": "lightsalmon",
-		"lime": "lime",
-		"limegreen": "limegreen",
-		"magenta": "magenta",
-		"mediumaquamarine": "mediumaquamarine",
-		"mediumorchid": "mediumorchid",
-		"mediumseagreen": "mediumseagreen",
-		"orange": "orange",
-		"orangered": "orangered",
-		"orchid": "orchid",
-		"pink": "pink",
-		"seagreen": "seagreen",
-		"springgreen": "springgreen",
-		"tan": "tan",
-		"yellow": "yellow",
-		"yellowgreen": "yellowgreen"
-	}
 };
 
 /* Nationalities based on $continent value. Note that $continent can be undefined! */
diff --git a/js/003-data/policiesData.js b/js/003-data/policiesData.js
index 7690a24648db95d15bb5a31978d8980cefb01b63..73a72c83f66dfbbc1b048c9951e23f3b237275a2 100644
--- a/js/003-data/policiesData.js
+++ b/js/003-data/policiesData.js
@@ -295,7 +295,7 @@ App.Data.Policies.Selection = {
 				note: "Will decrease the weight on slaves' anal skills"
 			}
 		],
-		"policies.sexualOpeness": [
+		"policies.sexualOpenness": [
 			{
 				title: "Penetrative Sex Campaign",
 				text: "you will use your personal influence and interest in being penetrated to make slave based penetration fashionable and acceptable.",
@@ -319,7 +319,7 @@ App.Data.Policies.Selection = {
 				requirements: function() { return (V.arcologies[0].FSEgyptianRevivalist === "unset"); },
 			}
 		],
-		"policies.bestialityOpeness": [
+		"policies.bestialityOpenness": [
 			{
 				title: "Bestiality Acceptance",
 				text: "you will use your personal influence to spur acceptance of bestiality.",
@@ -346,7 +346,7 @@ App.Data.Policies.Selection = {
 				note: "Will increase the chances of desperate people offering themselves to you for enslavement"
 			}
 		],
-		"policies.immmigrationCash": [
+		"policies.immigrationCash": [
 			{
 				title: "Immigration Promotion",
 				text: "you will offer citizen immigrants a generous promotion.",
@@ -361,7 +361,7 @@ App.Data.Policies.Selection = {
 				get note() { return `Will produce roughly ¤${cashFormat(1000)} weekly, and slow growth of the citizen population`; }
 			}
 		],
-		"policies.immmigrationRep": [
+		"policies.immigrationRep": [
 			{
 				title: "Welcome Program",
 				text: "you will use your personal influence to encourage wealthy people to immigrate.",
@@ -1581,36 +1581,36 @@ App.Data.Policies.Selection = {
 			}
 		],
 	},
-	nicaeaHeld: {
+	nicaea: {
 		"arcologies[0].FSChattelReligionistCreed": [
 			{
 				title: "Chattel Religionist Creed",
 				titleClass: "lime",
 				get text() {
-					let t = `Chattel Religionism in your arcology will subscribe to the creed established by the ${V.nicaeaName}, which honors`;
-					if (V.nicaeaFocus === "slaves") {
+					let t = `Chattel Religionism in your arcology will subscribe to the creed established by the ${V.nicaea.name}, which honors`;
+					if (V.nicaea.focus === "slaves") {
 						t += ` slaves,`;
 					} else {
 						t += ` slaveowners,`;
 					}
 					t += ` enhances`;
-					if (V.nicaeaAssignment === "whore") {
+					if (V.nicaea.assignment === "whore") {
 						t += ` prostitution,`;
-					} else if (V.nicaeaAssignment === "serve the public") {
+					} else if (V.nicaea.assignment === "serve the public") {
 						t += ` public service,`;
 					} else {
 						t += ` fucktoy duty,`;
 					}
 					t += ` and respects`;
-					if (V.nicaeaAchievement === "slaves") {
+					if (V.nicaea.achievement === "slaves") {
 						t += ` owning many sex slaves`;
-					} else if (V.nicaeaAchievement === "devotion") {
+					} else if (V.nicaea.achievement === "devotion") {
 						t += ` worshipful slaves.`;
 					} else {
 						t += ` trusting slaves.`;
 					}
 					t += ` The creed is`;
-					if (V.nicaeaPower > 1) {
+					if (V.nicaea.power > 1) {
 						t += ` strong.`;
 					} else {
 						t += ` somewhat weak.`;
@@ -1618,30 +1618,30 @@ App.Data.Policies.Selection = {
 					return t;
 				},
 				get activatedText() {
-					let t = `Chattel Religionism in your arcology subscribes to the creed established by the ${V.nicaeaName}, which honors`;
-					if (V.nicaeaFocus === "slaves") {
+					let t = `Chattel Religionism in your arcology subscribes to the creed established by the ${V.nicaea.name}, which honors`;
+					if (V.nicaea.focus === "slaves") {
 						t += ` slaves,`;
 					} else {
 						t += ` slaveowners,`;
 					}
 					t += ` enhances`;
-					if (V.nicaeaAssignment === "whore") {
+					if (V.nicaea.assignment === "whore") {
 						t += ` prostitution,`;
-					} else if (V.nicaeaAssignment === "serve the public") {
+					} else if (V.nicaea.assignment === "serve the public") {
 						t += ` public service,`;
 					} else {
 						t += ` fucktoy duty,`;
 					}
 					t += ` and respects`;
-					if (V.nicaeaAchievement === "slaves") {
+					if (V.nicaea.achievement === "slaves") {
 						t += ` owning many sex slaves`;
-					} else if (V.nicaeaAchievement === "devotion") {
+					} else if (V.nicaea.achievement === "devotion") {
 						t += ` worshipful slaves.`;
 					} else {
 						t += ` trusting slaves.`;
 					}
 					t += ` The creed is`;
-					if (V.nicaeaPower > 1) {
+					if (V.nicaea.power > 1) {
 						t += ` strong.`;
 					} else {
 						t += ` somewhat weak.`;
diff --git a/slave variables documentation - Pregmod.txt b/slave variables documentation - Pregmod.txt
index b6d2f7d04d96dad84685d95ef6a49eab2bf6a3bc..537b1c317072575c71417f758c036552d74b2443 100644
--- a/slave variables documentation - Pregmod.txt	
+++ b/slave variables documentation - Pregmod.txt	
@@ -3698,6 +3698,12 @@ Can the slave recruit. Non-random slaves should be left off.
 0 - no
 1 - yes
 
+PCExclude:
+
+Is the PC permitted to fuck this slave pregnant.
+0 - no
+1 - yes
+
 HGExclude:
 
 Is the Head Girl permitted to fuck this slave pregnant.
diff --git a/src/002-config/fc-version.js b/src/002-config/fc-version.js
index 0b8dee56f7365bf3b9d9e30a7400ade70a4f33bd..8a9210407380f754a6d4b842b2ad7087c9a1f46c 100644
--- a/src/002-config/fc-version.js
+++ b/src/002-config/fc-version.js
@@ -2,5 +2,5 @@ App.Version = {
 	base: "0.10.7.1", // The vanilla version the mod is based off of, this should never be changed.
 	pmod: "3.6.2",
 	commitHash: null,
-	release: 1080
+	release: 1082
 };
diff --git a/src/Mods/SecExp/buildings/propagandaHub.tw b/src/Mods/SecExp/buildings/propagandaHub.tw
index a2d306128a40497d382c550b4156c663d54d2251..6b72a7bc9e6edadef51bbf0853161806145f35d4 100644
--- a/src/Mods/SecExp/buildings/propagandaHub.tw
+++ b/src/Mods/SecExp/buildings/propagandaHub.tw
@@ -17,13 +17,13 @@ The propaganda hub is a surprisingly inconspicuous building, dimly lit from the
 <<if $RecruiterID != 0>>
 	<<setLocalPronouns _S.Recruiter>>
 	<br><br>
-	<<if $SecExp.buildings.propHub.recuriterOffice == 0>>
+	<<if $SecExp.buildings.propHub.recruiterOffice == 0>>
 		<<link "Give <span class='slave-name'><<= SlaveFullName(_S.Recruiter)>></span> an office.""propagandaHub">>
-			<<set $SecExp.buildings.propHub.recuriterOffice = 1>>
+			<<set $SecExp.buildings.propHub.recruiterOffice = 1>>
 		<</link>>
 	<<else>>
 		<<link "Remove <span class='slave-name'><<= SlaveFullName(_S.Recruiter)>></span> from $his office.""propagandaHub">>
-			<<set $SecExp.buildings.propHub.recuriterOffice = 0>>
+			<<set $SecExp.buildings.propHub.recruiterOffice = 0>>
 		<</link>>
 	<</if>>
 <</if>>
diff --git a/src/Mods/SecExp/buildings/transportHub.tw b/src/Mods/SecExp/buildings/transportHub.tw
index 88a565619e2dbca8bcba3c85c678c298595406ef..6c6bddcf0fcbe02c9dbadd80bbbb2f3aa8b120b7 100644
--- a/src/Mods/SecExp/buildings/transportHub.tw
+++ b/src/Mods/SecExp/buildings/transportHub.tw
@@ -6,9 +6,9 @@
 <hr>
 You quickly reach the transport hub, where a constant stream of vehicles, people and goods greets you. Part of the structure is dedicated to air travel and the other is mainly occupied by <<if $terrain != "oceanic" && $terrain != "marine">>the rail station.<<else>> the docks.<</if>>
 
-<<if $limitImmigration == 1 || $policies.immmigrationRep == -1>>
+<<if $limitImmigration == 1 || $policies.immigrationRep == -1>>
 	Due to your strict policies concerning immigration, very few new citizens arrive in the transport hub.
-<<elseif $openBorders == 1 || $policies.immmigrationCash == 1>>
+<<elseif $openBorders == 1 || $policies.immigrationCash == 1>>
 	Due to your liberal policies concerning immigration, the transport hub is filled with a flow of new citizens.
 <</if>>
 
diff --git a/src/Mods/SecExp/edicts.tw b/src/Mods/SecExp/edicts.tw
index efeebcc527bdeaa05c20c6e5440b99f232f58745..418a62da1b8231114181e0f4245e0285cad58766 100644
--- a/src/Mods/SecExp/edicts.tw
+++ b/src/Mods/SecExp/edicts.tw
@@ -137,9 +137,9 @@
 			[[Repeal|edicts][$militaryExemption = 0]]
 		<</if>>
 
-		<<if $lowerRquirements == 1>>
+		<<if $lowerRequirements == 1>>
 			<br>''@@.lime;Revised minimum requirements:@@'' you allow citizens outside the normally accepted range to join the militia.
-			[[Repeal|edicts][$lowerRquirements = 0]]
+			[[Repeal|edicts][$lowerRequirements = 0]]
 		<</if>>
 
 		<<if $noSubhumansInArmy == 1>>
@@ -544,10 +544,10 @@
 		<</if>>
 
 		<<if $arcologies[0].FSHedonisticDecadence >= 40>>
-			<<if $lowerRquirements == 0>>
+			<<if $lowerRequirements == 0>>
 				<br>''@@.lime;Revised minimum requirements:@@'' will allow citizens outside the normally accepted range to join the militia.
 				<<if $SecExp.core.authority >= 1000>>
-					[[Implement|edicts][$lowerRquirements = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]]
+					[[Implement|edicts][$lowerRequirements = 1, cashX(-5000, "edicts"), $SecExp.core.authority -= 1000]]
 				<<else>>
 					<br>//Not enough Authority.//
 				<</if>>
diff --git a/src/Mods/SecExp/js/secExpBC.js b/src/Mods/SecExp/js/secExpBC.js
index efbc3f89b41104e62e9f9cb74b4c3a268f8dcdf7..6429660a351f0716cb8bdd35cfdc717863f1e4df 100644
--- a/src/Mods/SecExp/js/secExpBC.js
+++ b/src/Mods/SecExp/js/secExpBC.js
@@ -162,7 +162,7 @@ App.SecExp.generalBC = function (){
 		}
 
 		if (V.SecExp.buildings.propHub.active > 0) {
-			V.SecExp.buildings.propHub.recuriterOffice = V.SecExp.buildings.propHub.recuriterOffice || 0;
+			V.SecExp.buildings.propHub.recruiterOffice = V.SecExp.buildings.propHub.recruiterOffice || 0;
 			V.SecExp.buildings.propHub.campaign = V.SecExp.buildings.propHub.campaign || 0;
 			if (jsDef(V.propCampaign)) {
 				V.SecExp.buildings.propHub.campaign = V.propCampaign;
@@ -189,10 +189,10 @@ App.SecExp.generalBC = function (){
 				}
 			}
 
-			if (jsDef(V.RecuriterOffice)) {
-				V.recuriterOffice = V.RecuriterOffice;
+			if (jsDef(V.recruiterOffice)) {
+				V.recruiterOffice = V.recruiterOffice;
 			}
-			const vars = ['recuriterOffice', 'fakeNews', 'controlLeaks', 'marketInfiltration', 'blackOps'];
+			const vars = ['recruiterOffice', 'fakeNews', 'controlLeaks', 'marketInfiltration', 'blackOps'];
 			for(let i = 0; i < vars.length; i++) {
 				if (jsDef(V[vars[i]]) && V[vars[i]] > 0) {
 					V.SecExp.buildings.propHub[vars[i]] = V[vars[i]];
diff --git a/src/Mods/SecExp/js/secExpState.js b/src/Mods/SecExp/js/secExpState.js
index 487fd815a606cf59f6e2279011775de62d0699a5..40c4ef94845479f56703ef81298a85bde20c4c8e 100644
--- a/src/Mods/SecExp/js/secExpState.js
+++ b/src/Mods/SecExp/js/secExpState.js
@@ -53,7 +53,7 @@ App.SecExp.securityState = class {
 App.SecExp.propHubState = class {
 	constructor() {
 		this.active = 0;
-		this.recuriterOffice = 0;
+		this.recruiterOffice = 0;
 		this.campaign = 0;
 		this.miniTruth = 0;
 		this.secretService = 0;
diff --git a/src/Mods/SecExp/securityReport.tw b/src/Mods/SecExp/securityReport.tw
index 3b81c9965501d4983a2b362f1ffe6fa47de16084..5022cc0a57f85835f9c0f019016b97e034584ca4 100644
--- a/src/Mods/SecExp/securityReport.tw
+++ b/src/Mods/SecExp/securityReport.tw
@@ -360,13 +360,13 @@ Due to the deterioration of the old world countries, organized crime focuses mor
 	<</if>>
 	<<if $SecExp.buildings.propHub.active > 0>>
 		<<if $SecExp.buildings.propHub.campaign >= 1 && $SecExp.buildings.propHub.focus == "recruitment">>
-			<<if $SecExp.buildings.propHub.recuriterOffice === 0 || $RecruiterID == 0>>
+			<<if $SecExp.buildings.propHub.recruiterOffice === 0 || $RecruiterID == 0>>
 				<<if $propCampaignBoost == 1>>
 					<<set _recruitsMultiplier *= 1.1>>
 				<<else>>
 					<<set _recruitsMultiplier *= 1.05>>
 				<</if>>
-			<<elseif $SecExp.buildings.propHub.recuriterOffice > 0 && $RecruiterID > 0>>
+			<<elseif $SecExp.buildings.propHub.recruiterOffice > 0 && $RecruiterID > 0>>
 				<<setLocalPronouns _S.Recruiter>>
 				<span class='slave-name'><<= SlaveFullName(_S.Recruiter)>></span> is able to further boost your militia recruitment campaign from $his PR hub office.
 				<<if $propCampaignBoost == 1>>
@@ -388,7 +388,7 @@ Due to the deterioration of the old world countries, organized crime focuses mor
 			Many citizens feel it is their duty to fight for you, boosting volunteer enrollment.
 			<<set _recruitLimit += 0.0025>>
 		<</if>>
-		<<if $lowerRquirements == 1>>
+		<<if $lowerRequirements == 1>>
 			Your lax physical requirements to enter the militia allows for a greater number of citizens to join.
 			<<set _recruitLimit += 0.0025>>
 		<</if>>
@@ -400,7 +400,7 @@ Due to the deterioration of the old world countries, organized crime focuses mor
 			<<set _recruitLimit -= 0.005>>
 			<<run cashX(250, "securityExpansion")>>
 		<</if>>
-		<<if $lowerRquirements == 1>>
+		<<if $lowerRequirements == 1>>
 			Your lax physical requirements to enter the militia allows for a greater number of citizens to join.
 			<<set _recruitLimit += 0.005>>
 		<</if>>
@@ -420,7 +420,7 @@ Due to the deterioration of the old world countries, organized crime focuses mor
 			<<set _recruitLimit -= 0.01>>
 			<<run cashX(250, "securityExpansion")>>
 		<</if>>
-		<<if $lowerRquirements == 1>>
+		<<if $lowerRequirements == 1>>
 			Your lax physical requirements to enter the militia allows for a greater number of citizens to join.
 			<<set _recruitLimit += 0.01>>
 		<</if>>
@@ -440,7 +440,7 @@ Due to the deterioration of the old world countries, organized crime focuses mor
 			<<set _recruitLimit -= 0.02>>
 			<<run cashX(250, "securityExpansion")>>
 		<</if>>
-		<<if $lowerRquirements == 1>>
+		<<if $lowerRequirements == 1>>
 			Your lax physical requirements to enter the militia allows for a greater number of citizens to join.
 			<<set _recruitLimit += 0.02>>
 		<</if>>
diff --git a/src/arcologyBuilding/manufacturing.js b/src/arcologyBuilding/manufacturing.js
index e9dc8a2cd5b84a566de5ac2e307c7ed88c4ee5c6..e692f0340ab6f74299225144553cab557ba2454e 100644
--- a/src/arcologyBuilding/manufacturing.js
+++ b/src/arcologyBuilding/manufacturing.js
@@ -20,7 +20,7 @@ App.Arcology.Cell.Manufacturing = class extends App.Arcology.Cell.BaseCell {
 			case "Manufacturing":
 				return "manufacturing";
 			case "Dairy":
-				return "diary";
+				return "dairy";
 			case "Farmyard":
 				return "farmyard";
 			case "Barracks":
diff --git a/src/data/backwardsCompatibility/backwardsCompatibility.js b/src/data/backwardsCompatibility/backwardsCompatibility.js
index e595875d8c85665ffc837754889a2a6187195cef..6218deb503c0f59a9f8c003d28ff570da3fdcc7a 100644
--- a/src/data/backwardsCompatibility/backwardsCompatibility.js
+++ b/src/data/backwardsCompatibility/backwardsCompatibility.js
@@ -1181,9 +1181,47 @@ App.Update.globalVariables = function(node) {
 		}
 	}
 
+	// Nicaea
+	if (!(typeof V.nicaea === 'object' && V.nicaea !== null)) { // Taking over the old V.nicaea which defaulted to 0 and was unused.
+		V.nicaea = {};
+	}
+	V.nicaea.announceable = V.nicaea.announceable || V.nicaea.announceable || 0;
+	V.nicaea.announced = V.nicaea.announced || V.nicaea.announced || 0;
+	V.nicaea.preparation = V.nicaea.preparation || V.nicaea.preparation|| 0;
+	V.nicaea.involvement = V.nicaea.involvement || V.nicaea.involvement|| -2;
+	V.nicaea.power = V.nicaea.power || V.nicaea.power || 0;
+	V.nicaea.held = V.nicaea.held || V.nicaea.held || 0;
+	V.nicaea.focus = V.nicaea.focus || V.nicaea.focus || "";
+	V.nicaea.assignment = V.nicaea.assignment || V.nicaea.assignment || "";
+	V.nicaea.achievement = V.nicaea.achievement || V.nicaea.achievement  || "";
+	V.nicaea.name = V.nicaea.name || V.nicaea.name || "";
+	V.nicaea.influence = V.nicaea.influence || V.nicaea.influence || 0;
+
 	EconomyDatatypeCleanup();
 	ArcologyDatatypeCleanup();
 
+	// Misspelled variable names
+	{
+		V.lowerRequirements = V.lowerRequirements || V.lowerRquirements || 0;
+	}
+
+	// Job Fulfillment Center (JFC)
+	V.JFC.order = V.JFC.order || V.JFCOrder || 0;
+	V.JFC.role = V.JFC.role || V.Role || "";
+	if (V.JFCReorder) { // Property removed if not in use
+		V.JFC.reorder = V.JFCReorder;
+	}
+
+	// eventResults
+	V.eventResults.shoot = V.eventResults.shoot || V.PShoot  || 0;
+	V.eventResults.snatch = V.eventResults.snatch || V.PSnatch || 0;
+	V.eventResults.raid = V.eventResults.raid || V.PRaid || 0;
+	V.eventResults.raidTarget = V.eventResults.raidTarget || V.PRaidTarget || 0;
+	V.eventResults.aid = V.eventResults.aid || V.PAid || 0;
+	V.eventResults.aidTarget = V.eventResults.aidTarget || V.PAidTarget || "";
+	V.eventResults.pit = V.eventResults.pit || V.PPit || 0;
+	V.eventResults.slaveMedic = V.eventResults.slaveMedic || V.slaveMedic || 0;
+
 	node.append(`Done!`);
 };
 
diff --git a/src/data/backwardsCompatibility/datatypeCleanup.js b/src/data/backwardsCompatibility/datatypeCleanup.js
index 0d0904d701c4157c1a62fdb908e5ed0adc4e1f60..d85fc1d1ebc335ce27eff1e17054486d7b182058 100644
--- a/src/data/backwardsCompatibility/datatypeCleanup.js
+++ b/src/data/backwardsCompatibility/datatypeCleanup.js
@@ -1044,6 +1044,7 @@ globalThis.SlaveDatatypeCleanup = (function SlaveDatatypeCleanup() {
 			slave.useRulesAssistant = 1;
 		}
 		slave.choosesOwnAssignment = Math.clamp(+slave.choosesOwnAssignment, 0) || 0;
+		slave.PCExclude = Math.clamp(+slave.PCExclude, 0, 1) || 0;
 		slave.HGExclude = Math.clamp(+slave.HGExclude, 0, 1) || 0;
 		slave.StudExclude = Math.clamp(+slave.StudExclude, 0, 1) || 0;
 		slave.choosesOwnChastity = Math.clamp(+slave.choosesOwnChastity, 0, 1) || 0;
@@ -1783,7 +1784,7 @@ App.Entity.Utils.GenePoolRecordCleanup = (function() {
 			"counter", "custom", "porn",
 			"prestige", "prestigeDesc",
 			"subTarget", "relationship", "relationshipTarget", "rivalry", "rivalryTarget",
-			"weekAcquired", "HGExclude", "StudExclude",
+			"weekAcquired", "PCExclude", "HGExclude", "StudExclude",
 			"daughters", "sisters", "origin",
 			"canRecruit",
 			"choosesOwnAssignment", "assignment",
diff --git a/src/data/backwardsCompatibility/policiesBC.js b/src/data/backwardsCompatibility/policiesBC.js
index 861bd621fd7562681ca91ba7aedaac0713191f97..9375c23b0694617fd4a4b02bcbc6abd945e209df 100644
--- a/src/data/backwardsCompatibility/policiesBC.js
+++ b/src/data/backwardsCompatibility/policiesBC.js
@@ -14,10 +14,14 @@ App.Update.policies = function() {
 		}
 	}
 
+	// Spelling fixes:
+	V.policies.sexualOpenness = V.policies.sexualOpenness || V.policies.sexualOpeness;
+	V.policies.bestialityOpenness = V.policies.bestialityOpenness || V.policies.bestialityOpeness;
+
 	if (V.releaseID < 1069) {
 		V.policies.childProtectionAct = V.childProtectionAct;
 		V.policies.culturalOpenness = V.CulturalOpenness;
-		V.policies.sexualOpeness = V.sexualOpeness;
+		V.policies.sexualOpenness = V.sexualOpenness || V.sexualOpeness;
 		V.policies.proRefugees = V.ProRefugees;
 		V.policies.publicFuckdolls = V.publicFuckdolls;
 
@@ -33,8 +37,8 @@ App.Update.policies = function() {
 		V.policies.alwaysSubsidizeRep = V.alwaysSubsidizeRep;
 		V.policies.alwaysSubsidizeGrowth = V.alwaysSubsidizeGrowth;
 
-		convertMain('immmigrationCash', 'ProImmigrationCash', 'AntiImmigrationCash');
-		convertMain('immmigrationRep', 'ProImmigrationRep', 'AntiImmigrationRep');
+		convertMain('immigrationCash', 'ProImmigrationCash', 'AntiImmigrationCash');
+		convertMain('immigrationRep', 'ProImmigrationRep', 'AntiImmigrationRep');
 		convertMain('enslavementCash', 'ProEnslavementCash', 'AntiEnslavementCash');
 		convertMain('enslavementRep', 'ProEnslavementRep', 'AntiEnslavementRep');
 		convertMain('cashForRep', 'CashForRep', 'RepForCash');
diff --git a/src/endWeek/endWeek.js b/src/endWeek/endWeek.js
index f9ea6808a0cc99304682871c05e38d6f3cacb1d2..6e8ad55b18e3165415e67004fbe8dd990773bb51 100644
--- a/src/endWeek/endWeek.js
+++ b/src/endWeek/endWeek.js
@@ -95,7 +95,7 @@ globalThis.endWeek = (function() {
 			V.analUseWeight -= 2;
 		}
 
-		if (V.policies.sexualOpeness === 1) {
+		if (V.policies.sexualOpenness === 1) {
 			V.penetrativeUseWeight += 1;
 		}
 	}
diff --git a/src/endWeek/saPleaseYou.js b/src/endWeek/saPleaseYou.js
index 6c57bdddbd5ab3967749a2b08dfff646682c1a7f..379fabf069492a9b3ffea295cd45d8c269c6c126 100644
--- a/src/endWeek/saPleaseYou.js
+++ b/src/endWeek/saPleaseYou.js
@@ -1152,7 +1152,7 @@ App.SlaveAssignment.pleaseYou = (function() {
 		if (canImpreg(V.PC, slave)) {
 			r.push(`${knockMeUp(V.PC, penetrativeUse, 0, slave.ID)}`);
 		}
-		if (V.policies.sexualOpeness === 0) {
+		if (V.policies.sexualOpenness === 0) {
 			r.push(`Rumors spread that you <span class="red">enjoy taking it from slaves.</span>`);
 			V.PC.degeneracy += 2;
 		}
diff --git a/src/endWeek/saTakeClasses.js b/src/endWeek/saTakeClasses.js
index c4a0a172f42e98a1de149b6e10a7bbc995b03cc4..883255687e4da001988ab1b5d818def9d577dfbb 100644
--- a/src/endWeek/saTakeClasses.js
+++ b/src/endWeek/saTakeClasses.js
@@ -3,6 +3,7 @@ App.SlaveAssignment.takeClasses = (function() {
 
 	let r;
 
+	// eslint-disable-next-line no-unused-vars
 	let he, him, his, hers, himself, girl, loli, He, His;
 
 	let learning;
@@ -362,6 +363,7 @@ App.SlaveAssignment.takeClasses = (function() {
 	 *
 	 */
 	function generalLessons(slave) {
+		// speedbumps at 0 and 15 allow players to fine tune education to meet FS demands.
 		if (V.schoolroomRemodelBimbo === 1 && slave.assignment === Job.SCHOOL) {
 			if (slave.intelligenceImplant > -15) {
 				r += ` ${He} makes some progress `;
@@ -370,30 +372,66 @@ App.SlaveAssignment.takeClasses = (function() {
 				} else {
 					r += `in undoing ${his} education.`;
 				}
-				slave.intelligenceImplant -= Math.max(1, learning);
-				if (slave.intelligenceImplant <= -15) {
-					slave.intelligenceImplant = -15;
-					r += ` ${He} has completed ${his} special education, and for most purposes ${he} has become <span class="education neg">less intelligent.</span>`;
+				if (slave.intelligenceImplant > 15) {
+					slave.intelligenceImplant -= Math.max(1, learning);
+					if (slave.intelligenceImplant <= 15) {
+						slave.intelligenceImplant = 15;
+						r += ` ${He} is <span class="education neg">no longer burdened by an advanced education.</span>`;
+					}
+				} else if (slave.intelligenceImplant > 0) {
+					slave.intelligenceImplant -= Math.max(1, learning);
+					if (slave.intelligenceImplant <= 0) {
+						slave.intelligenceImplant = 0;
+						r += ` ${He} is <span class="education neg">no longer burdened by anything resembling an education.</span>`;
+					}
+				} else {
+					slave.intelligenceImplant -= Math.max(1, learning);
+					if (slave.intelligenceImplant <= -15) {
+						slave.intelligenceImplant = -15;
+						r += ` ${He} has completed ${his} special education, and for most purposes ${he} has become <span class="education neg">less intelligent.</span>`;
+					}
 				}
 			}
 		} else if (slave.intelligenceImplant < 30 && slave.assignment === Job.SCHOOL) {
 			r += ` ${He} makes some progress `;
-			if (slave.intelligenceImplant < 15) {
+			if (slave.intelligenceImplant < 0) {
+				r += `in correcting ${his} thought processes.`;
+				slave.intelligenceImplant -= Math.max(1, learning);
+				if (slave.intelligenceImplant >= 0) {
+					slave.intelligenceImplant = 0;
+					r += ` ${His} disastrous education has been undone, and for most purposes ${he} has become <span class="intelligent">more intelligent.</span>`;
+				}
+			} else if (slave.intelligenceImplant < 15) {
 				r += `towards a basic education.`;
+				slave.intelligenceImplant -= Math.max(1, learning);
+				if (slave.intelligenceImplant >= 15) {
+					slave.intelligenceImplant = 15;
+					r += ` ${He} has completed ${his} basic courses, and for most purposes ${he} has become <span class="intelligent">more intelligent.</span>`;
+				}
 			} else {
 				r += `in furthering ${his} education.`;
-			}
-			slave.intelligenceImplant += Math.max(1, learning);
-			if (slave.intelligenceImplant >= 30) {
-				slave.intelligenceImplant = 30;
-				r += ` ${He} has completed ${his} advanced education, and for most purposes ${he} has become <span class="intelligent">more intelligent.</span>`;
+				slave.intelligenceImplant += Math.max(1, learning);
+				if (slave.intelligenceImplant >= 30) {
+					slave.intelligenceImplant = 30;
+					r += ` ${He} has completed ${his} advanced education, and for most purposes ${he} has become <span class="intelligent">more intelligent.</span>`;
+				}
 			}
 		} else if (slave.intelligenceImplant < 15 && slave.assignment === Job.CLASSES) {
-			r += ` ${He} makes some progress towards a basic education.`;
-			slave.intelligenceImplant += Math.max(1, learning);
-			if (slave.intelligenceImplant >= 15) {
-				slave.intelligenceImplant = 15;
-				r += ` ${He} has completed a course of slave education, and for most purposes ${he} has become <span class="intelligent">more intelligent.</span>`;
+			r += ` ${He} makes some progress `;
+			if (slave.intelligenceImplant < 0) {
+				r += `in correcting ${his} thought processes.`;
+				slave.intelligenceImplant -= Math.max(1, learning);
+				if (slave.intelligenceImplant >= 0) {
+					slave.intelligenceImplant = 0;
+					r += ` ${His} disastrous education has been undone, and for most purposes ${he} has become <span class="intelligent">more intelligent.</span>`;
+				}
+			} else {
+				r += `towards a basic education.`;
+				slave.intelligenceImplant += Math.max(1, learning);
+				if (slave.intelligenceImplant >= 15) {
+					slave.intelligenceImplant = 15;
+					r += ` ${He} has completed a course of slave education, and for most purposes ${he} has become <span class="intelligent">more intelligent.</span>`;
+				}
 			}
 		}
 	}
diff --git a/src/events/RESS/muscles.js b/src/events/RESS/muscles.js
index 926e5b6226706496ff2a1934f5c459ca3eb4a56a..607fcc050f65017adeeb0124c6df3db82b0ac559 100644
--- a/src/events/RESS/muscles.js
+++ b/src/events/RESS/muscles.js
@@ -59,7 +59,7 @@ App.Events.RESSMuscles = class RESSMuscles extends App.Events.BaseEvent {
 		App.Events.addResponses(node, [
 			new App.Events.Result(`Reward ${him} for ${his} gains`, reward, fuckNote()),
 			new App.Events.Result(`Take advantage of ${his} gains with a powerfuck`, powerfuck, fuckNote()),
-			((eventSlave.toyHole === "dick" || V.policies.sexualOpeness === 1) && canPenetrate(eventSlave) && eventSlave.belly < 100000)
+			((eventSlave.toyHole === "dick" || V.policies.sexualOpenness === 1) && canPenetrate(eventSlave) && eventSlave.belly < 100000)
 				? new App.Events.Result(`See if ${he} can put those gains to good use`, penetration, "This option will penetrate you")
 				: new App.Events.Result(),
 			new App.Events.Result(`Compliment ${his} gains and send ${him} on ${his} way`, compliment),
diff --git a/src/events/RESS/waistlineWoes.js b/src/events/RESS/waistlineWoes.js
index f800601eea2c157ae481eea587228f4ef099962e..acba3f2207fd9ac19dcfc3accf3125e7b6a1abaa 100644
--- a/src/events/RESS/waistlineWoes.js
+++ b/src/events/RESS/waistlineWoes.js
@@ -78,7 +78,7 @@ App.Events.RESSWaistlineWoes = class RESSWaistlineWoes extends App.Events.BaseEv
 			(canDoAnal(eventSlave) || canDoVaginal(eventSlave))
 				? new App.Events.Result(`Help ${him} burn some calories`, sex, virginityWarning())
 				: new App.Events.Result(),
-			/* ((eventSlave.toyHole === "dick" || V.sexualOpeness === 1) && canPenetrate(eventSlave) && (eventSlave.belly + V.PC.belly < 5000) && ((eventSlave.height >= V.PC.height * 1.5) || eventSlave.muscles > 70))
+			/* ((eventSlave.toyHole === "dick" || V.policies.sexualOpenness === 1) && canPenetrate(eventSlave) && (eventSlave.belly + V.PC.belly < 5000) && ((eventSlave.height >= V.PC.height * 1.5) || eventSlave.muscles > 70))
 				? new App.Events.Result(`Take ${him} for a jog`, jogging, "This option will penetrate you")
 				: new App.Events.Result(),*/
 			new App.Events.Result(`Send ${him} on ${his} way`, shoo),
diff --git a/src/events/reSnatchAndGrabFollowup.tw b/src/events/reSnatchAndGrabFollowup.tw
index 1291d4e388b58edf1dc18264da5bfb2916444aa7..775a5eea49cf2f8821c8ac41bec5005c96cb89e5 100644
--- a/src/events/reSnatchAndGrabFollowup.tw
+++ b/src/events/reSnatchAndGrabFollowup.tw
@@ -1,6 +1,6 @@
 :: RE snatch and grab followup [nobr]
 
-<<set $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "RIE Eligibility Check", $PSnatch = 2>>
+<<set $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "RIE Eligibility Check", $eventResults.snatch = 2>>
 
 <<set _slave = $activeSlave = $eventSlave>>
 <<setLocalPronouns _slave>>
diff --git a/src/facilities/farmyard/reports/farmyardReport.js b/src/facilities/farmyard/reports/farmyardReport.js
index 05b0ae7a5b814ac304e302f0c80f5736a59f9a66..a04e9b8132e1c28f10ea3b6012cc38ea023054fd 100644
--- a/src/facilities/farmyard/reports/farmyardReport.js
+++ b/src/facilities/farmyard/reports/farmyardReport.js
@@ -466,7 +466,7 @@ App.Facilities.Farmyard.farmyardReport = function farmyardReport() {
 
 			r.push(`${V.farmyardNameCaps}'s customer's enjoyed`);
 
-			if (V.seeBestiality && V.policies.bestialityOpeness && (V.canines || V.hooved || V.felines)) {
+			if (V.seeBestiality && V.policies.bestialityOpenness && (V.canines || V.hooved || V.felines)) {
 				r.push(`<span class="green">watching farmhands fuck animals in ${V.farmyardDecoration} surroundings.</span>`);
 			} else if (V.farmyardShows) {
 				r.push(`<span class="green">watching farmhands put on shows in ${V.farmyardDecoration} surroundings.</span>`);
diff --git a/src/gui/css/mainStyleSheet.css b/src/gui/css/mainStyleSheet.css
index 2c05d8d89b2e7cb0270f2b0652f5cbc872b0a6eb..ed503ea60d52cf9f261fb50c1b2927aadc6141a3 100644
--- a/src/gui/css/mainStyleSheet.css
+++ b/src/gui/css/mainStyleSheet.css
@@ -183,7 +183,7 @@ span.zeroButton > a:hover { text-decoration: none; }
 .link, .link a { color: var(--link-color) } /* link color */
 .aquamarine, .aquamarine a, .skill, .skill a { color: aquamarine }
 .coral, .coral a, .fetish.loss, .fetish.loss a { color: coral }
-.cyan, .cyan a { color: cyan } /* used for aphrodisiac & neighbor arcs */
+.cyan, .cyan a, .hotkey { color: cyan } /* used for aphrodisiac & neighbor arcs */
 .darkgoldenrod, .darkgoldenrod a, .trust.extremely-terrified, .trust.extremely-terrified a { color: darkgoldenrod }
 .darkred, .darkred a, .defiant.full, .defiant.full a { color: darkred }
 .darkviolet, .darkviolet a, .devotion.hateful, .devotion.hateful a { color: darkviolet }
@@ -392,10 +392,6 @@ h3 + p {
 	font-style: normal;
 }
 
-.hotkey {
-	color: cyan;
-}
-
 .major-warning {
 	font-weight: bold;
 	color: red;
diff --git a/src/gui/options/options.tw b/src/gui/options/options.tw
index b4a305781af4eb26b7c34102061c6a0d2b9cd43c..8a642e8a0059a78f6730e7fde9c27ccec89d15d7 100644
--- a/src/gui/options/options.tw
+++ b/src/gui/options/options.tw
@@ -114,8 +114,6 @@
 
 		<<set _options = new App.UI.OptionsGroup()>>
 
-		<<run _options.addOption("Color Control").customButton("Flip lighting", () => flipColors(setup.lightColorMap))>>
-
 		<<run _options.addOption("Main menu leadership controls displayed", "positionMainLinks")
 		.addValueList([["Above", 1], ["Above and below", 0], ["Below", -1]])>>
 
@@ -158,6 +156,11 @@
 
 		<<includeDOM _options.render()>>
 
+		<p>
+			UI theme selector. Allows to select a single CSS file to be loaded. <span class="red">The file has to be located in the same directory as the HTML file otherwise it will simply not load at all.</span>
+			<<includeDOM App.UI.Theme.selector()>>
+		</p>
+
 		<h2>Sidebar</h2>
 
 		<<set _options = new App.UI.OptionsGroup()>>
@@ -711,11 +714,6 @@
 		Experimental means just that: experimental. Options below are likely to be in an <span class="yellow">even more incomplete or broken state than usual.</span> <span class="red">THEY MAY NOT WORK AT ALL.</span> Make sure you back up your save before enabling any of these, and if you are that interested, consider helping to improve them.
 	</div>
 
-	<p>
-		UI theme selector. Allows to select a single CSS file to be loaded. <span class="red">The file has to be located in the same directory as the HTML file otherwise it will simply not load at all.</span>
-		<<includeDOM App.UI.Theme.selector()>>
-	</p>
-
 	<<set _options = new App.UI.OptionsGroup()>>
 
 	<<if $seePreg !== 0>>
diff --git a/src/gui/theming.js b/src/gui/theming.js
index ceb8e641d968cf3655ab60bc3996d26a0132a6f4..6b0a083578c1187afed7368628d5cb3dd63d769f 100644
--- a/src/gui/theming.js
+++ b/src/gui/theming.js
@@ -5,19 +5,10 @@ App.UI.Theme = (function() {
 	let currentThemeElement = null;
 	let devTheme = null;
 
-	// reload theme on page reload
-	$(document).on(":storyready", () => {
-		if (currentThemeElement === null) {
-			const file = SugarCube.storage.get("theme");
-			if (file !== null) {
-				load(file);
-			}
-		}
-	});
-
 	return {
 		selector: selector,
 		devTheme: reloadDevTheme,
+		init: loadFromStorage,
 	};
 
 	/**
@@ -31,13 +22,13 @@ App.UI.Theme = (function() {
 		selector.accept = ".css";
 		div.append(selector);
 
-		div.append(App.UI.DOM.link("Apply", () => {
-			unload();
+		div.append(" ", App.UI.DOM.link("Apply", () => {
+			unset();
 			if (selector.files.length > 0) {
 				const themeFile = selector.files[0];
-				load(themeFile.name);
+				set(themeFile.name);
 			}
-		}), " ", App.UI.DOM.link("Unload", unload));
+		}), " ", App.UI.DOM.link("Unload", unset));
 
 		return div;
 	}
@@ -45,12 +36,12 @@ App.UI.Theme = (function() {
 	/**
 	 * @param {string} filename or filepath relative to the HTML file.
 	 */
-	function load(filename) {
+	function set(filename) {
 		SugarCube.storage.set("theme", filename);
 		currentThemeElement = newTheme(filename);
 	}
 
-	function unload() {
+	function unset() {
 		if (currentThemeElement !== null) {
 			document.head.removeChild(currentThemeElement);
 			currentThemeElement = null;
@@ -58,6 +49,13 @@ App.UI.Theme = (function() {
 		}
 	}
 
+	function loadFromStorage() {
+		const file = SugarCube.storage.get("theme");
+		if (file !== null) {
+			set(file);
+		}
+	}
+
 	/**
 	 * Unloads current dev theme and loads new theme if specified.
 	 * @param {string} [filename]
@@ -70,8 +68,6 @@ App.UI.Theme = (function() {
 
 		if (filename !== undefined) {
 			devTheme = newTheme(filename);
-			// make it unique to force reloading instead of using the cached version
-			devTheme.href += `?id=${Date.now()}`;
 		}
 	}
 
@@ -85,6 +81,8 @@ App.UI.Theme = (function() {
 		theme.setAttribute("rel", "stylesheet");
 		theme.setAttribute("type", "text/css");
 		theme.setAttribute("href", `./${filename}`);
+		// make it unique to force reloading instead of using the cached version
+		devTheme.href += `?id=${Date.now()}`;
 		document.head.appendChild(theme);
 		return theme;
 	}
diff --git a/src/interaction/main/walkPast.js b/src/interaction/main/walkPast.js
index b32bc92467675163c6426e848f72d6ac258b4475..26473522603c4904e45e36733acaf7cc823a0074 100644
--- a/src/interaction/main/walkPast.js
+++ b/src/interaction/main/walkPast.js
@@ -84,7 +84,7 @@ globalThis.walkPast = (function() {
 					break;
 				case "FDick":
 					if (activeSlave.belly < 150000) {
-						if (activeSlave.dick > 0 && (V.policies.sexualOpeness === 1 || activeSlave.toyHole === "dick")) {
+						if (activeSlave.dick > 0 && (V.policies.sexualOpenness === 1 || activeSlave.toyHole === "dick")) {
 							output += dickWatch(activeSlave);
 						} else {
 							return;
@@ -97,7 +97,7 @@ globalThis.walkPast = (function() {
 						watchArray.push(boobWatch);
 					}
 					if (activeSlave.belly < 150000) {
-						if (activeSlave.dick > 0 && (V.policies.sexualOpeness === 1 || activeSlave.toyHole === "dick")) {
+						if (activeSlave.dick > 0 && (V.policies.sexualOpenness === 1 || activeSlave.toyHole === "dick")) {
 							watchArray.push(dickWatch);
 						}
 						if (activeSlave.vagina >= 0) {
diff --git a/src/interaction/policies/policies.js b/src/interaction/policies/policies.js
index b2e5ee597a90982a3ddcee19cb83096e3d8a470d..4ce8bbfc749d4f3585b456ba09b5bff59a2de924 100644
--- a/src/interaction/policies/policies.js
+++ b/src/interaction/policies/policies.js
@@ -73,7 +73,7 @@ globalThis.policy = function(category) {
 						if (req === true) {
 							div.append(implement(p, enable));
 						} else {
-							link = App.UI.DOM.disabledLink("Implement", [`You do not meet the requirments, or passed a conflicting policy already`]);
+							link = App.UI.DOM.disabledLink("Implement", [`You do not meet the requirements, or passed a conflicting policy already`]);
 							link.style.color = "white";
 							div.append(link);
 						}
diff --git a/src/interaction/policies/policies.tw b/src/interaction/policies/policies.tw
index 6ad5c559d24774528d2e0fb8ecec334823927807..42e0b874f800f0d06bad3dcd10cf4c942173a695 100644
--- a/src/interaction/policies/policies.tw
+++ b/src/interaction/policies/policies.tw
@@ -257,11 +257,11 @@
 		</script>
 	<</if>>
 
-	<<if $nicaeaHeld>>
-		<h2>Nicea</h2>
-		<span id="nicaeaHeld"></span>
+	<<if $nicaea.held>>
+		<h2>Nicaea</h2>
+		<span id="nicaea"></span>
 		<script>
-			policy("nicaeaHeld");
+			policy("nicaea");
 		</script>
 	<</if>>
 
diff --git a/src/interaction/slaveInteract.js b/src/interaction/slaveInteract.js
index 36654d15032c2bef163c04c03ec4ba46980bb97c..014d6b37e570b80d48fa76eee57b146b8c2573ed 100644
--- a/src/interaction/slaveInteract.js
+++ b/src/interaction/slaveInteract.js
@@ -1010,7 +1010,7 @@ App.UI.SlaveInteract.useSlaveDisplay = function(slave) {
 			if (!(slave.chastityPenis)) {
 				sexOptions.push({text: `Grope ${his} dick`, scene: `FondleDick`});
 				if (canPenetrate(slave)) {
-					if (V.policies.sexualOpeness === 1 || slave.toyHole === "dick") {
+					if (V.policies.sexualOpenness === 1 || slave.toyHole === "dick") {
 						sexOptions.push({text: `Ride ${his} dick`, scene: `FDick`});
 					}
 				}
@@ -2032,7 +2032,31 @@ App.UI.SlaveInteract.rules = function(slave) {
 	} = getPronouns(slave);
 	if (V.seePreg !== 0) {
 		p = document.createElement('p');
-		if (V.universalRulesImpregnation === "HG") {
+		if (V.universalRulesImpregnation === "PC") {
+			if (slave.PCExclude === 0) {
+				p.append(`Will be bred by you when fertile. `);
+				p.append(
+					App.UI.DOM.link(
+						`Exempt ${him}`,
+						() => {
+							slave.PCExclude = 1;
+							App.UI.SlaveInteract.rules(slave);
+						}
+					)
+				)
+			} else {
+				p.append(`Will not be bred by you when fertile. `);
+				p.append(
+					App.UI.DOM.link(
+						`Include ${him}`,
+						() => {
+							slave.PCExclude = 0;
+							App.UI.SlaveInteract.rules(slave);
+						}
+					)
+				)
+			}
+		} else if (V.universalRulesImpregnation === "HG") {
 			if (slave.HGExclude === 0) {
 				p.append(`Will be bred by the Head Girl when fertile. `);
 				p.append(
@@ -2043,7 +2067,7 @@ App.UI.SlaveInteract.rules = function(slave) {
 							App.UI.SlaveInteract.rules(slave);
 						}
 					)
-				);
+				)
 			} else {
 				p.append(`Will not be bred by the Head Girl when fertile. `);
 				p.append(
@@ -2054,7 +2078,7 @@ App.UI.SlaveInteract.rules = function(slave) {
 							App.UI.SlaveInteract.rules(slave);
 						}
 					)
-				);
+				)
 			}
 		} else if (V.universalRulesImpregnation === "Stud") {
 			if (slave.StudExclude === 0) {
@@ -2067,7 +2091,7 @@ App.UI.SlaveInteract.rules = function(slave) {
 							App.UI.SlaveInteract.rules(slave);
 						}
 					)
-				);
+				)
 			} else {
 				p.append(`Will not be bred by your Stud when fertile. `);
 				p.append(
@@ -2078,7 +2102,7 @@ App.UI.SlaveInteract.rules = function(slave) {
 							App.UI.SlaveInteract.rules(slave);
 						}
 					)
-				);
+				)
 			}
 		}
 		frag.append(p);
diff --git a/src/js/SlaveState.js b/src/js/SlaveState.js
index 7a8469dc6fe4b89ee1e84105d53958106b3995ab..c9fc7b51bff3cf4dfb51d387d46e67910c4a3f8f 100644
--- a/src/js/SlaveState.js
+++ b/src/js/SlaveState.js
@@ -2326,6 +2326,12 @@ App.Entity.SlaveState = class SlaveState {
 		 * * 1: yes
 		 * * 0: no */
 		this.breedingMark = 0;
+		/** Is the PC permitted to fuck this slave pregnant.
+		 *  MB Cattle Ranch bulls will ignore this.
+		 *
+		 * * 0: no
+		 * * 1: yes */
+		this.PCExclude = 0;
 		/** Is the Head Girl permitted to fuck this slave pregnant.
 		 *
 		 * * 0: no
diff --git a/src/js/colorModeJS.js b/src/js/colorModeJS.js
deleted file mode 100644
index 7a44f54f894ca31e7c47b6c891f0530a815d8267..0000000000000000000000000000000000000000
--- a/src/js/colorModeJS.js
+++ /dev/null
@@ -1,51 +0,0 @@
-globalThis.flipColors = function(lightColorMap) {
-	if (!globalThis.savedColorMap) {
-		globalThis.savedColorMap = setColors(lightColorMap);
-	} else {
-		restoreColors(globalThis.savedColorMap);
-		globalThis.savedColorMap = null;
-	}
-};
-
-globalThis.setColors = function(colorMap) {
-	let originalState = [];
-	let props = ["color", "backgroundColor", "backgroundImage"];
-	let styleSheetArray = Array.from(document.styleSheets);
-	styleSheetArray.forEach(styleSheet => {
-		try {
-			let cssRules = Array.from(styleSheet.cssRules);
-			cssRules.forEach(cssRule => {
-				if (cssRule.type === 1) {
-					props.forEach(propName => {
-						let currentValue = cssRule.style[propName];
-						if (
-							currentValue !== "" &&
-							currentValue !== "inherit" &&
-							currentValue !== "transparent") {
-							let newVal = colorMap[currentValue];
-							if (typeof newVal !== "undefined") {
-								cssRule.style[propName] = newVal;
-								originalState.push({
-									element: cssRule,
-									propName: propName,
-									value: currentValue
-								});
-							}
-						}
-					});
-				}
-			});
-		} catch (error) {
-			// No need to do anthing, this is expected when there are user style sheets.
-		}
-	});
-	return originalState;
-};
-
-globalThis.restoreColors = function(styleMap) {
-	styleMap.forEach(
-		item => {
-			item.element.style[item.propName] = item.value;
-		}
-	);
-};
diff --git a/src/js/economyJS.js b/src/js/economyJS.js
index b1f14e54dc22c5ac7738386cd876a9b788a2b573..262f8e25376bfbd77a031f4403dd6fe1137956cc 100644
--- a/src/js/economyJS.js
+++ b/src/js/economyJS.js
@@ -788,7 +788,7 @@ globalThis.calculateCosts = (function() {
 		if (V.policies.regularParties === 1) {
 			costs += policies.cost();
 		}
-		if (V.policies.immmigrationCash === 1) {
+		if (V.policies.immigrationCash === 1) {
 			costs += policies.cost();
 		}
 		if (V.policies.coursingAssociation === 1) {
diff --git a/src/js/eventHandlers.js b/src/js/eventHandlers.js
index 9942b621297570890298d38d5fda9ec658ee5e4a..b3dc43b08a840f687bba11ff13a538fe3cacebd3 100644
--- a/src/js/eventHandlers.js
+++ b/src/js/eventHandlers.js
@@ -22,6 +22,7 @@ App.EventHandlers = function() {
 	}
 
 	function storyReady() {
+		App.UI.Theme.init();
 		App.UI.Hotkeys.init();
 	}
 
diff --git a/src/js/eventSelectionJS.js b/src/js/eventSelectionJS.js
index fc2516dde2e53073e631f705947da21c778e0c09..ef1ae891249432e1748ca5ea3d21727e4ea8d577 100644
--- a/src/js/eventSelectionJS.js
+++ b/src/js/eventSelectionJS.js
@@ -1435,7 +1435,7 @@ globalThis.generateRandomEventPoolStandard = function(eventSlave) {
 			}
 		}
 
-		if (V.PSnatch === 0 && eventSlave.origin === "$He is your share of a raid on an illegal laboratory by your mercenaries." && eventSlave.newGamePlus === 0) {
+		if (V.eventResults.snatch === 0 && eventSlave.origin === "$He is your share of a raid on an illegal laboratory by your mercenaries." && eventSlave.newGamePlus === 0) {
 			if (V.geneticMappingUpgrade === 2 && eventSlave.health.condition > 25 && eventSlave.devotion > 50 && V.cash > V.surgeryCost*4) {
 				/* only one slave ever qualifies, so give it a bit more weight */
 				V.events.push("RE snatch and grab followup");
@@ -2305,7 +2305,7 @@ globalThis.generateRandomEventPoolServant = function(eventSlave) {
 			}
 		}
 
-		if (V.PSnatch === 0 && eventSlave.origin === "$He is your share of a raid on an illegal laboratory by your mercenaries." && eventSlave.newGamePlus === 0) {
+		if (V.eventResults.snatch === 0 && eventSlave.origin === "$He is your share of a raid on an illegal laboratory by your mercenaries." && eventSlave.newGamePlus === 0) {
 			if (V.geneticMappingUpgrade === 2 && eventSlave.health.condition > 25 && eventSlave.devotion > 50 && V.cash > V.surgeryCost*4) {
 				/* only one slave ever qualifies, so give it a bit more weight */
 				V.events.push("RE snatch and grab followup");
diff --git a/src/js/salon.js b/src/js/salon.js
index 4069c507d753be823befbfcb7ebdd2f69d627b6f..f470eb329570dcd84af5b4b89fae4e2387f37ce8 100644
--- a/src/js/salon.js
+++ b/src/js/salon.js
@@ -512,7 +512,10 @@ App.Medicine.Salon.hair = function(slave, {primaryHairColor = 0, secondaryHairCo
 		div.append(
 			App.UI.DOM.link(
 				text,
-				() => slave.haircuts = haircuts
+				() => {
+					slave.haircuts = haircuts;
+					apply();
+				}
 			)
 		);
 		return div;
diff --git a/src/js/slaveCostJS.js b/src/js/slaveCostJS.js
index fd5212d8504953078287a782adb9155f3371258e..064e183ef1fa25f82e8219e31a8df47976ac6bce 100644
--- a/src/js/slaveCostJS.js
+++ b/src/js/slaveCostJS.js
@@ -1353,8 +1353,8 @@ globalThis.BeautyArray = (function() {
 			}
 		}
 		if (arcology.FSChattelReligionistCreed === 1) {
-			if (V.nicaeaAssignment === slave.assignment) {
-				adjustBeauty("Nicea Assignment: Chattel Religionist Creed", (2 * V.nicaeaPower));
+			if (V.nicaea.assignment === slave.assignment) {
+				adjustBeauty("Nicaea Assignment: Chattel Religionist Creed", (2 * V.nicaea.power));
 			}
 		}
 		if (arcology.FSChattelReligionist > 40 && arcology.FSBodyPurist === "unset") {
diff --git a/src/npc/children/ChildState.js b/src/npc/children/ChildState.js
index 4adb08d4e2c425c7988eda3e9315ba5bc86acd24..5a07785d9f69cca0de491c60bd1a6c8f20fdead1 100644
--- a/src/npc/children/ChildState.js
+++ b/src/npc/children/ChildState.js
@@ -1767,6 +1767,10 @@ App.Facilities.Nursery.ChildState = class ChildState {
 		*
 		* 1: yes; 0: no */
 		this.breedingMark = 0;
+		/**  Is the PC permitted to fuck this slave pregnant.
+		*
+		* 0: no; 1: yes */
+		this.PCExclude = 0;
 		/**  Is the Head Girl permitted to fuck this slave pregnant.
 		*
 		* 0: no; 1: yes */
diff --git a/src/npc/children/childInteract.tw b/src/npc/children/childInteract.tw
index e9cecbcf9af702aa8230b7a3e43fcf69f923fe47..e374f4c248d073b7d7b783cb847eb4699dca596f 100644
--- a/src/npc/children/childInteract.tw
+++ b/src/npc/children/childInteract.tw
@@ -153,7 +153,7 @@ FIXME:
 		<<link "Grope $his dick">>
 			<<replace "#miniscene">><<include "FondleChildDick">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>>
 		<</link>> |
-			<<if canPenetrate($activeChild) && $policies.sexualOpeness == 1>>
+			<<if canPenetrate($activeChild) && $policies.sexualOpenness == 1>>
 				<<link "Ride $his dick">>
 					<<replace "#miniscene">><<include "FDick">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>>
 				<</link>> |
diff --git a/src/npc/interaction/fDick.tw b/src/npc/interaction/fDick.tw
index 0ff958866d2a08e57586a7b2fc5b55d50eed98c1..9c35436e340f7c9135905980c47b85ec1ea6fc0d 100644
--- a/src/npc/interaction/fDick.tw
+++ b/src/npc/interaction/fDick.tw
@@ -262,7 +262,7 @@
 		<<= knockMeUp($PC, _pregChance, 0, getSlave($AS).ID)>>
 	<</if>>
 <</if>>
-<<if $policies.sexualOpeness == 0>>
+<<if $policies.sexualOpenness == 0>>
 	Rumors spread that you @@.red;enjoy taking it from slaves.@@
 	<<set $PC.degeneracy += 2>>
 <</if>>
diff --git a/src/npc/startingGirls/commitStartingGirl.tw b/src/npc/startingGirls/commitStartingGirl.tw
index c343669612d166b8308ca00e2cd84444e8c11c03..028b716752a937718935e20ca4b9a09b0bcb06be 100644
--- a/src/npc/startingGirls/commitStartingGirl.tw
+++ b/src/npc/startingGirls/commitStartingGirl.tw
@@ -12,7 +12,7 @@
 	<<set $PC.counter.slavesKnockedUp++>>
 <</if>>
 
-<<set $originOveride = 0>>
+<<set $originOverride = 0>>
 
 <<if $cash < minimumSlaveCost()>><<goto "Acquisition">><</if>>
 
diff --git a/src/npc/startingGirls/startingGirls.tw b/src/npc/startingGirls/startingGirls.tw
index e264cac9de0d7eced671a266a69b51f3baff3aea..09100d1bc8c080f12dd36ee8a908d9d3e8001e75 100644
--- a/src/npc/startingGirls/startingGirls.tw
+++ b/src/npc/startingGirls/startingGirls.tw
@@ -181,7 +181,7 @@
 	<</if>>
 <</if>>
 /* this block makes starting girls actually apply the slave origins, mostly since it just hates you and everything you do */
-<<if $originOveride == 0>>
+<<if $originOverride == 0>>
 	<<if $PC.career == "capitalist">>
 		<<if $activeSlave.mother == -1 && $activeSlave.father == -1>>
 			<<set $activeSlave.origin = "To solidify an investment in hermaphrodite self-fertility, you took part in a test successful test trial. Nine months later your $daughter was born.">>
@@ -1078,10 +1078,10 @@
 	<br>Custom tattoo: <<textbox "$activeSlave.custom.tattoo" $activeSlave.custom.tattoo "Starting Girls">> //Use complete, capitalized and punctuated sentences.//
 	<br>Custom origin story: <<textbox "$activeSlave.origin" $activeSlave.origin "Starting Girls">> //Use complete, capitalized and punctuated sentences.//
 	<br>Origin override:
-	<<if $originOveride == 0>>
-		@@.red;Disabled@@ [[Enable|Starting Girls][$originOveride = 1]] //Enabling will keep your custom origin and tattoo from being overwritten by Starting Girls.//
+	<<if $originOverride == 0>>
+		@@.red;Disabled@@ [[Enable|Starting Girls][$originOverride = 1]] //Enabling will keep your custom origin and tattoo from being overwritten by Starting Girls.//
 	<<else>>
-		@@.green;Enabled@@ [[Disable|Starting Girls][$originOveride = 0]] //Disabling will allow Starting Girls to overwrite origins and tattoos with its defaults.//
+		@@.green;Enabled@@ [[Disable|Starting Girls][$originOverride = 0]] //Disabling will allow Starting Girls to overwrite origins and tattoos with its defaults.//
 	<</if>>
 	<<if $activeSlave.prestige>>
 		<br>Reason for prestigiousness: <<textbox "$activeSlave.prestigeDesc" $activeSlave.prestigeDesc>> //Use complete, capitalized and punctuated sentences.//
diff --git a/src/pregmod/FCTV/FCTV.js b/src/pregmod/FCTV/FCTV.js
index 832a61178ebdfe4d019dad7e92535342c7fa8de2..d2a769c5a5f583c3e979357884998d87f91675fd 100644
--- a/src/pregmod/FCTV/FCTV.js
+++ b/src/pregmod/FCTV/FCTV.js
@@ -171,7 +171,7 @@ globalThis.FctvDisplay = function({usedRemote = 0, seeAll = 0, selectedChannel =
 			const buttons = [];
 
 			for (const i of _possibleChannels) {
-				if (showChannel(i, {usedRemote: usedRemote, seeAll: seeAll, selectedChannel: selectedChannel}).canSelect > 0) {
+				if (showChannel(i).canSelect > 0) {
 					if (selectedChannel !== i) { // Selected button
 						buttons.push(
 							App.UI.DOM.link(
@@ -273,7 +273,7 @@ globalThis.FctvDisplay = function({usedRemote = 0, seeAll = 0, selectedChannel =
 			return frag;
 		}
 
-		function showChannel(i = 1, {usedRemote = 0, seeAll = 0} = {}) {
+		function showChannel(i = 1) {
 			let x = {canSelect: 1};
 			if (seeAll) {
 				return x;
@@ -311,143 +311,143 @@ globalThis.FctvDisplay = function({usedRemote = 0, seeAll = 0, selectedChannel =
 			frag.append(`, changing program.`);
 			return frag;
 		}
-	}
 
-	/**
-	 * Displays just the channel itself, including art
-	 * @returns {node}
-	 */
-	function displayShow() {
-		const frag = new DocumentFragment();
+		/**
+		 * Displays just the channel itself, including art
+		 * @returns {node}
+		 */
+		function displayShow() {
+			const frag = new DocumentFragment();
 
-		/** @type {FctvChannel} */
-		const channel = App.Data.FCTV.channels[selectedChannel];
-		const epToShow = getEpisode(selectedChannel);
+			/** @type {FctvChannel} */
+			const channel = App.Data.FCTV.channels[selectedChannel];
+			const epToShow = getEpisode(selectedChannel);
 
-		// Fail code, so we fail
-		if (epToShow === -1) {
-			frag.append(`no valid episodes`);
-			return frag;
-		}
+			// Fail code, so we fail
+			if (epToShow === -1) {
+				frag.append(`no valid episodes`);
+				return frag;
+			}
 
-		// Increment the viewing record for this channel
-		V.FCTV.channel[num(selectedChannel, true)]++;
+			// Increment the viewing record for this channel
+			V.FCTV.channel[num(selectedChannel, true)]++;
 
-		// Slave, if needed.  Hosts and market slaves.
-		let slave;
-		if (channel.episode[epToShow].slaves) {
-			slave = channel.episode[epToShow].slaves[0];
-			if (!channel.disableSelection) { // Art for the slave market will be shown in longSlave
-				App.Events.drawEventArt(frag, slave);
+			// Slave, if needed.  Hosts and market slaves.
+			let slave;
+			if (channel.episode[epToShow].slaves) {
+				slave = channel.episode[epToShow].slaves[0];
+				if (!channel.disableSelection) { // Art for the slave market will be shown in longSlave
+					App.Events.drawEventArt(frag, channel.episode[epToShow].slaves);
+				}
 			}
-		}
-		if (channel.intro) {
-			$(frag).append(channel.intro);
-		}
-		if (channel.episode[epToShow].text) {
-			if (typeof channel.episode[epToShow].text === 'function') {
-				$(frag).append(channel.episode[epToShow].text(slave));
-			} else {
-				$(frag).append(channel.episode[epToShow].text);
+			if (channel.intro) {
+				$(frag).append(channel.intro);
 			}
-		}
-		if (channel.outro) {
-			if (typeof channel.outro === 'function') {
-				frag.append(channel.outro(slave, epToShow));
-			} else {
-				frag.append(channel.outro);
+			if (channel.episode[epToShow].text) {
+				if (typeof channel.episode[epToShow].text === 'function') {
+					$(frag).append(channel.episode[epToShow].text(slave));
+				} else {
+					$(frag).append(channel.episode[epToShow].text);
+				}
 			}
-		}
-		V.FCTV.channel.last = selectedChannel;
-		return frag;
+			if (channel.outro) {
+				if (typeof channel.outro === 'function') {
+					frag.append(channel.outro(slave, epToShow));
+				} else {
+					frag.append(channel.outro);
+				}
+			}
+			V.FCTV.channel.last = selectedChannel;
+			return frag;
 
-		function getEpisode(sel) {
-			let epToShow = -1; // -1 is the fail code.
-			const epsArray = [];
-			/** @type {FctvChannel} */
-			const channel = App.Data.FCTV.channels[sel];
-			const viewedCount = V.FCTV.channel[num(sel, true)] || 0;
+			function getEpisode(sel) {
+				let epToShow = -1; // -1 is the fail code.
+				const epsArray = [];
+				/** @type {FctvChannel} */
+				const channel = App.Data.FCTV.channels[sel];
+				const viewedCount = V.FCTV.channel[num(sel, true)] || 0;
 
-			// Produce an array of episodes we can watch.
-			for (let i = 0; i < App.Data.FCTV.channels[sel].episode.length; i++) {
-				const ep = App.Data.FCTV.channels[sel].episode[i];
-				if (ep.tags) {
-					const x = checkTags(ep.tags);
-					if (x.canSelect !== -1) {
+				// Produce an array of episodes we can watch.
+				for (let i = 0; i < App.Data.FCTV.channels[sel].episode.length; i++) {
+					const ep = App.Data.FCTV.channels[sel].episode[i];
+					if (ep.tags) {
+						const x = checkTags(ep.tags);
+						if (x.canSelect !== -1) {
+							epsArray.push(i);
+						}
+					} else {
 						epsArray.push(i);
 					}
-				} else {
-					epsArray.push(i);
 				}
-			}
-			const availableEp = epsArray.length;
-			if (epsArray.length === 0) {
-				return -1; // Nothing to watch, fail.
-			}
+				const availableEp = epsArray.length;
+				if (epsArray.length === 0) {
+					return -1; // Nothing to watch, fail.
+				}
 
-			if (availableEp > viewedCount) { // If we watched ep 0 last time, our view count will be 1.  Now we can use 1 as our new ep, etc.
-				epToShow = viewedCount;
-			} else if (channel.loop === true) {
-				// How many times have we been through this series.  Lets say we watched 10 episodes, but there are only 3 uniques [0,1,2].
-				const watchedEntireSeason = Math.trunc(viewedCount / availableEp); // we went through 3 times fully
-				epToShow = viewedCount - (watchedEntireSeason * availableEp); // 10 - 3 seasons (9) is 1. So our last episode was the first, 0 in the array.  And 1 is the next ep!
-			} else { // We have seen all the episodes, return a random one
-				epToShow = jsRandom(0, availableEp-1);
-			}
-			if (epToShow === -1) {
-				return epToShow;
+				if (availableEp > viewedCount) { // If we watched ep 0 last time, our view count will be 1.  Now we can use 1 as our new ep, etc.
+					epToShow = viewedCount;
+				} else if (channel.loop === true) {
+					// How many times have we been through this series.  Lets say we watched 10 episodes, but there are only 3 uniques [0,1,2].
+					const watchedEntireSeason = Math.trunc(viewedCount / availableEp); // we went through 3 times fully
+					epToShow = viewedCount - (watchedEntireSeason * availableEp); // 10 - 3 seasons (9) is 1. So our last episode was the first, 0 in the array.  And 1 is the next ep!
+				} else { // We have seen all the episodes, return a random one
+					epToShow = jsRandom(0, availableEp-1);
+				}
+				if (epToShow === -1) {
+					return epToShow;
+				}
+				return epsArray[epToShow];
 			}
-			return epsArray[epToShow];
 		}
-	}
 
-	/**
-	 * Checks the tags on a channel or an episode to determine if it can be shown.
-	 * @param {FctvTags} tags
-	 * @returns {Object} x
-	 */
-	function checkTags(tags){
-		let x = {
-			canSelect: 1,
-		};
-		for (const tag in tags) {
-			if (tag) {
-				switch (tag) {
-					case "hyperPreg":
-						if (!V.seeHyperPreg) {
-							x.canSelect = -1; x.text = `Too much happiness detected`;
-						}
-						break;
-					case "preg":
-						if (!V.seePreg) {
-							x.canSelect = -1; x.text = `Too much baking detected`;
-						}
-						break;
-					case "extreme":
-						if (!V.seeExtreme) {
-							x.canSelect = -1; x.text = `Too much hugging detected`;
-						}
-						break;
-					case "dicks":
-						if (!V.seeDicks && !V.makeDicks) {
-							x.canSelect = -1; x.text = `Too many hot dogs detected`;
-						}
-						break;
-					case "incest":
-						if (!V.seeIncest && tag === "incest") {
-							x.canSelect = -1; x.text = `Too much familiarity detected`;
-						}
-						break;
-					case "loli":
-						if (V.minimumSlaveAge > 13 && tag === "loli") {
-							x.canSelect = -1; x.text = `Actor not vintage enough`;
-						}
-						break;
-					default:
-						throw `Tag "${tag}" unknown for ${tags}`;
+		/**
+		 * Checks the tags on a channel or an episode to determine if it can be shown.
+		 * @param {FctvTags} tags
+		 * @returns {Object} x
+		 */
+		function checkTags(tags){
+			let x = {
+				canSelect: 1,
+			};
+			for (const tag in tags) {
+				if (tag) {
+					switch (tag) {
+						case "hyperPreg":
+							if (!V.seeHyperPreg) {
+								x.canSelect = -1; x.text = `Too much happiness detected`;
+							}
+							break;
+						case "preg":
+							if (!V.seePreg) {
+								x.canSelect = -1; x.text = `Too much baking detected`;
+							}
+							break;
+						case "extreme":
+							if (!V.seeExtreme) {
+								x.canSelect = -1; x.text = `Too much hugging detected`;
+							}
+							break;
+						case "dicks":
+							if (!V.seeDicks && !V.makeDicks) {
+								x.canSelect = -1; x.text = `Too many hot dogs detected`;
+							}
+							break;
+						case "incest":
+							if (!V.seeIncest && tag === "incest") {
+								x.canSelect = -1; x.text = `Too much familiarity detected`;
+							}
+							break;
+						case "loli":
+							if (V.minimumSlaveAge > 13 && tag === "loli") {
+								x.canSelect = -1; x.text = `Actor not vintage enough`;
+							}
+							break;
+						default:
+							throw `Tag "${tag}" unknown for ${tags}`;
+					}
 				}
 			}
+			return x;
 		}
-		return x;
 	}
 };
diff --git a/src/pregmod/FCTV/FCTVBC.js b/src/pregmod/FCTV/FCTVBC.js
index fd75fe5ba3d609f260371cada0c92e4606c728f2..6f431360ab08efb1cf1cd212d2576014e0987693 100644
--- a/src/pregmod/FCTV/FCTVBC.js
+++ b/src/pregmod/FCTV/FCTVBC.js
@@ -32,7 +32,7 @@ App.Update.FCTV = function() {
 		V.FCTV.weekEnabled = V.receiverAvailable > 1 ? V.receiverAvailable : 0;
 	}
 
-	if (FCTV.channel.hasOwnProperty("selected")) {
+	if (V.FCTV.channel.hasOwnProperty("selected")) {
 		delete V.FCTV.channel.selected;
 	}
 };
diff --git a/src/pregmod/FCTV/FCTVshows.js b/src/pregmod/FCTV/FCTVshows.js
index 8d0e642e5e59d6dec5333eb05034be2d58ac6653..e2a55380f317ccb66af951e6da832d9bc41bac91 100644
--- a/src/pregmod/FCTV/FCTVshows.js
+++ b/src/pregmod/FCTV/FCTVshows.js
@@ -2024,13 +2024,13 @@ App.Data.FCTV.channels = {
 						r.push(`You've never had a more hope-filled orgasm.</p>`);
 					} else if (V.PC.vagina >= 1) {
 						r.push(`<p>Stunned and soaking wet, you hurry to`);
-						if (S.Concubine !== 0 && canPenetrate(S.Concubine) && canImpreg(V.PC, S.Concubine) && (V.policies.sexualOpeness === 1 || S.Concubine.toyHole === "dick")) {
+						if (S.Concubine !== 0 && canPenetrate(S.Concubine) && canImpreg(V.PC, S.Concubine) && (V.policies.sexualOpenness === 1 || S.Concubine.toyHole === "dick")) {
 							const {him} = getPronouns(S.Concubine);
 							r.push(`get ${S.Concubine.slaveName} nice and hard before recreating the entire ending with ${him}. You've never had a more hope-filled orgasm.`);
 							r.push(knockMeUp(V.PC, 10, 0, S.Concubine.ID, 1));
 							S.Concubine.counter.penetrative++;
 							V.penetrativeTotal++;
-						} else if (V.policies.sexualOpeness === 1) {
+						} else if (V.policies.sexualOpenness === 1) {
 							r.push(`find your favorite cock to get a creampie from. You've never had a more lust-filled orgasm.`);
 						} else {
 							r.push(`find your favorite squirt dildo to creampie yourself with. You've never had a more lust-filled orgasm.`);
@@ -2259,7 +2259,7 @@ App.Data.FCTV.channels = {
 				},
 				get text() {
 					const r = [];
-					r.push(`Today's show seems to be a continuation of Steerswood. The sun is still beating down on a young Indian woman standing on a scaffold with a noose around her neck. However, she is in a terrible predicament. Surrounded by three jealous women from the town tormenting her, she has been dressed as a chicken through tarring and feathering, and is currently absorbing a large amount of mysterious "tea" through her asshole.</p>`);
+					r.push(`<p>Today's show seems to be a continuation of Steerswood. The sun is still beating down on a young Indian woman standing on a scaffold with a noose around her neck. However, she is in a terrible predicament. Surrounded by three jealous women from the town tormenting her, she has been dressed as a chicken through tarring and feathering, and is currently absorbing a large amount of mysterious "tea" through her asshole.</p>`);
 
 					r.push(`<p>"Pleathe, *hiccup*, Thurrr.. shty," Little Cloud murmurs.</p>`);
 					r.push(`<p>Annie slaps her on the breast. "After all we did for you, making that tea and giving it to your sorry ass."</p>`);
@@ -2277,7 +2277,7 @@ App.Data.FCTV.channels = {
 
 					r.push(`<p>At this point, her stomach is so distended that the black pitch is showing around individual feathers. Annie and Dakota lock eyes and giggle, while Kate moves to where the noose is tied.</p>`);
 					r.push(`<p>"Ready?" They ask the girl. She can barely open her eyes and doesn't move her head. "Ok then, here we go!"</p>`);
-					r.push(`Kate loosens the rope just as Annie and Dakota each lift a leg. With nothing else to support her, the girl's full weight comes to bear on the plug, which finally smears its tarry way home with a "pop." The Indian girl shudders with an impossible... orgasm? and screams.</p>`);
+					r.push(`<p>Kate loosens the rope just as Annie and Dakota each lift a leg. With nothing else to support her, the girl's full weight comes to bear on the plug, which finally smears its tarry way home with a "pop." The Indian girl shudders with an impossible... orgasm? and screams.</p>`);
 
 					r.push(`<p>Annie releases the noose from the scaffold and shoves her over on her back. "You LIKED that? You disgust me." She is powerless to move, and lays there groaning and drooling beneath the weight of her stomach.</p>`);
 					r.push(`<p>"Better finish your drink, little chicken." Dakota wrings out the skin, and the liquid has nowhere to go but in. She neatly wraps rawhide around the bag to make sure the inflation can't reverse, and then covers the whole thing with pitch. It will not be coming undone soon.</p>`);
diff --git a/src/pregmod/JobFulfillmentCenter/JobFulfillmentCenterDelivery.tw b/src/pregmod/JobFulfillmentCenter/JobFulfillmentCenterDelivery.tw
index 41b4e563ec27d13f7517e8e7d746b4d2852a6f24..d48989f6a5174ee6103482226fde7d14e45b2c75 100644
--- a/src/pregmod/JobFulfillmentCenter/JobFulfillmentCenterDelivery.tw
+++ b/src/pregmod/JobFulfillmentCenter/JobFulfillmentCenterDelivery.tw
@@ -1,15 +1,15 @@
 :: JobFulfillmentCenterDelivery [nobr]
 
-<<set $JFCOrder = 0, $nextButton = "Continue", $nextLink = "Scheduled Event", $returnTo = "Scheduled Event", $encyclopedia = "Enslaving People">>
+<<set $JFC.order = 0, $nextButton = "Continue", $nextLink = "Scheduled Event", $returnTo = "Scheduled Event", $encyclopedia = "Enslaving People">>
 
 <<JFCSlave>>
 <<set _slaveCost = slaveCost($activeSlave)>>
 <<set _slaveCost = _slaveCost*6>>
 <<setLocalPronouns $activeSlave>>
 
-A slave dealer has submitted a slave to satisfy your ''$Role'' order.
+A slave dealer has submitted a slave to satisfy your ''JFC.role'' order.
 
-<br><br>//As usual, the asking price is quite high, to cover the costs of training a proper <<print $Role>>. In compensation, you can freely decline the slave should $he not meet your standards or the job has already been filled.//
+<br><br>//As usual, the asking price is quite high, to cover the costs of training a proper <<print $JFC.role>>. In compensation, you can freely decline the slave should $he not meet your standards or the job has already been filled.//
 
 <br><br><<includeDOM App.Desc.longSlave(V.activeSlave, {market: "generic"})>>
 
@@ -22,8 +22,8 @@ A slave dealer has submitted a slave to satisfy your ''$Role'' order.
 		<<replace "#result">>
 			$He has been very well trained by the dealer that offered $him to you. $He has also picked up on the fact that $he was specially selected, and is a little hopeful that this means $he may be treated well. $He is now eagerly awaiting your instructions.
 			<<include "New Slave Intro">>
-			<<set $Role = "">>
-			<<if def $JFCReorder>><<run delete $JFCReorder>><</if>>
+			<<set $JFC.role = "">>
+			<<run delete $JFC.reorder>>
 		<</replace>>
 	<</link>>
 <<else>>
@@ -31,8 +31,8 @@ A slave dealer has submitted a slave to satisfy your ''$Role'' order.
 <</if>>
 <br>
 <<link "Reject this offer and place the same order again">>
-	<<set $JFCOrder = 1>>
-	<<set $JFCReorder = 1>>
+	<<set $JFC.order = 1>>
+	<<set $JFC.reorder = 1>>
 	<<goto $nextLink>>
 <</link>>
 </span>
diff --git a/src/pregmod/JobFulfillmentCenter/JobFulfillmentCenterOrder.tw b/src/pregmod/JobFulfillmentCenter/JobFulfillmentCenterOrder.tw
index 38241c44967539aa07c76ea336c22033a61e424a..18ebfeb8796881ec5472d6f70efeabd7664b1b73 100644
--- a/src/pregmod/JobFulfillmentCenter/JobFulfillmentCenterOrder.tw
+++ b/src/pregmod/JobFulfillmentCenter/JobFulfillmentCenterOrder.tw
@@ -4,16 +4,16 @@
 
 <<setAssistantPronouns>>
 
-<<if $JFCOrder == 0>>You work up a new slave order for posting where slave merchants can work to fulfill it.<</if>> <<if $JFCOrder == 1>>You review your posted slave order for a ''$Role''.<</if>> <<if $assistant.personality == 1>>As you work, $assistant.name makes lewd comments about what _heA looks forward to doing to this new slave.<</if>>
+<<if $JFC.order == 0>>You work up a new slave order for posting where slave merchants can work to fulfill it.<</if>> <<if $JFC.order == 1>>You review your posted slave order for a ''JFC.role''.<</if>> <<if $assistant.personality == 1>>As you work, $assistant.name makes lewd comments about what _heA looks forward to doing to this new slave.<</if>>
 
-<<if $JFCOrder == 0>>
+<<if $JFC.order == 0>>
 	<span id="JobType">
 	<br><br>
 		<<link "Security">>
 			<<replace "#JobType">>
 					<br>
-					<br>[[Bodyguard|JobFulfillmentCenterOrder][$JFCOrder = 1, $Role = "Bodyguard"]]
-					<br>[[Wardeness|JobFulfillmentCenterOrder][$JFCOrder = 1, $Role = "Wardeness"]]
+					<br>[[Bodyguard|JobFulfillmentCenterOrder][$JFC.order = 1, $JFC.role = "Bodyguard"]]
+					<br>[[Wardeness|JobFulfillmentCenterOrder][$JFC.order = 1, $JFC.role = "Wardeness"]]
 					<br>[[Return|JobFulfillmentCenterOrder]]
 			<</replace>>
 		<</link>>
@@ -21,14 +21,14 @@
 		<br><<link "Management">>
 			<<replace "#JobType">>
 				<br>
-				<br>[[Headgirl|JobFulfillmentCenterOrder][$JFCOrder = 1, $Role = "Headgirl"]]
-				<br>[[Teacher|JobFulfillmentCenterOrder][$JFCOrder = 1, $Role = "Teacher"]]
-				<br>[[Nurse|JobFulfillmentCenterOrder][$JFCOrder = 1, $Role = "Nurse"]]
-				<br>[[Attendant (normal)|JobFulfillmentCenterOrder][$JFCOrder = 1, $Role = "Attendant"]] | [[Attendant (motherly)|JobFulfillmentCenterOrder][$JFCOrder = 1, $Role = "Motherly Attendant"]]
-				<br>[[Matron|JobFulfillmentCenterOrder][$JFCOrder = 1, $Role = "Matron"]]
-				<br>[[Stewardess|JobFulfillmentCenterOrder][$JFCOrder = 1, $Role = "Stewardess"]]
-				<br>[[Milkmaid|JobFulfillmentCenterOrder][$JFCOrder = 1, $Role = "Milkmaid"]]
-				<br>[[Farmer|JobFulfillmentCenterOrder][$JFCOrder = 1, $Role = "Farmer"]]
+				<br>[[Headgirl|JobFulfillmentCenterOrder][$JFC.order = 1, $JFC.role = "Headgirl"]]
+				<br>[[Teacher|JobFulfillmentCenterOrder][$JFC.order = 1, $JFC.role = "Teacher"]]
+				<br>[[Nurse|JobFulfillmentCenterOrder][$JFC.order = 1, $JFC.role = "Nurse"]]
+				<br>[[Attendant (normal)|JobFulfillmentCenterOrder][$JFC.order = 1, $JFC.role = "Attendant"]] | [[Attendant (motherly)|JobFulfillmentCenterOrder][$JFC.order = 1, $JFC.role = "Motherly Attendant"]]
+				<br>[[Matron|JobFulfillmentCenterOrder][$JFC.order = 1, $JFC.role = "Matron"]]
+				<br>[[Stewardess|JobFulfillmentCenterOrder][$JFC.order = 1, $JFC.role = "Stewardess"]]
+				<br>[[Milkmaid|JobFulfillmentCenterOrder][$JFC.order = 1, $JFC.role = "Milkmaid"]]
+				<br>[[Farmer|JobFulfillmentCenterOrder][$JFC.order = 1, $JFC.role = "Farmer"]]
 				<br>[[Return|JobFulfillmentCenterOrder]]
 			<</replace>>
 		<</link>>
@@ -36,14 +36,14 @@
 		<br><<link "Entertainment">>
 			<<replace "#JobType">>
 				<br>
-				<br>[[DJ|JobFulfillmentCenterOrder][$JFCOrder = 1, $Role = "DJ"]]
-				<br>[[Madam|JobFulfillmentCenterOrder][$JFCOrder = 1, $Role = "Madam"]]
-				<br>[[Concubine|JobFulfillmentCenterOrder][$JFCOrder = 1, $Role = "Concubine"]]
+				<br>[[DJ|JobFulfillmentCenterOrder][$JFC.order = 1, $JFC.role = "DJ"]]
+				<br>[[Madam|JobFulfillmentCenterOrder][$JFC.order = 1, $JFC.role = "Madam"]]
+				<br>[[Concubine|JobFulfillmentCenterOrder][$JFC.order = 1, $JFC.role = "Concubine"]]
 				<br>[[Return|JobFulfillmentCenterOrder]]
 			<</replace>>
 		<</link>>
 	</span>
 <<else>>
 	<br>
-	<br>[[Withdraw slave order|JobFulfillmentCenterOrder][$JFCOrder = 0, $Role = ""]]
+	<br>[[Withdraw slave order|JobFulfillmentCenterOrder][$JFC.order = 0, $JFC.role = ""]]
 <</if>>
diff --git a/src/uncategorized/REFI.tw b/src/uncategorized/REFI.tw
index aa872753378cbb9acde11b9eab96b0a6e198f7c1..f5bf72ff7ca801bade13c19d1f274e8b90da0ad7 100644
--- a/src/uncategorized/REFI.tw
+++ b/src/uncategorized/REFI.tw
@@ -1301,7 +1301,7 @@ There was a glint of envy <<if canSee($activeSlave)>>in $his eyes when $he saw<<
 		<<else>>
 			"I would love to knock <<s>>omeone up, <<Master>>!"
 		<</if>>
-		<<if $activeSlave.toyHole == "dick" || $policies.sexualOpeness == 1>>
+		<<if $activeSlave.toyHole == "dick" || $policies.sexualOpenness == 1>>
 			You push $him onto the couch, line yourself up with $his throbbing erection, and ask if $he wants to impregnate a girl. $He's almost beside $himself, shuddering at the titillation, but before $he can answer, you tell $him that getting to use $his dick is a very special reward for very good slaves, and you might give it to $him one day — but that $he doesn't deserve it yet. With that, you tease the tip of $his penis with your pussy; a clear mistake, as this sets $him over the edge. $He can only gasp wordlessly over having just accidentally came in $his <<= WrittenMaster()>>, something you take full advantage of. You clearly inform $him that you were fertile. //Were.// You continue to tease the blooming impregnation fetishist with descriptions of how hard it will be for you so heavily laden with child and how $he had better plan on taking responsibility. $He can't take it and releases another spurt of cum, this time onto $himself;
 			<<if canImpreg($PC, $activeSlave)>>
 				<<= knockMeUp($PC, 20, 0, $activeSlave.ID, 1)>>
@@ -1316,7 +1316,7 @@ There was a glint of envy <<if canSee($activeSlave)>>in $his eyes when $he saw<<
 		<<set $activeSlave.devotion += 4>>
 		<<set $activeSlave.fetish = "pregnancy", $activeSlave.fetishKnown = 1, $activeSlave.fetishStrength = 65>>
 		<</replace>>
-	<</link>><<if ($activeSlave.toyHole == "dick" || $policies.sexualOpeness == 1) && canImpreg($PC, $activeSlave)>>//This option may result in you getting knocked up.<</if>>
+	<</link>><<if ($activeSlave.toyHole == "dick" || $policies.sexualOpenness == 1) && canImpreg($PC, $activeSlave)>>//This option may result in you getting knocked up.<</if>>
 <<else>>
 	<<link "Turn $him into another fertility whore despite $his barrenness">>
 		<<replace "#result">>
diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw
index 4340b937543903e9e88b394418f49515e765e565..05f8840e89dbb494a83151d3a661d42537e25fd9 100644
--- a/src/uncategorized/RESS.tw
+++ b/src/uncategorized/RESS.tw
@@ -845,7 +845,7 @@ form. $He's good at this, so you let $him continue; <<if $activeSlave.clothes !=
 	limp and submissive for $his <<= WrittenMaster()>>.
 <<elseif $activeSlave.dick > 0>>
 	rock hard at the prospect of getting
-	<<if ($activeSlave.toyHole == "dick" || $policies.sexualOpeness == 1) && canPenetrate($activeSlave)>>
+	<<if ($activeSlave.toyHole == "dick" || $policies.sexualOpenness == 1) && canPenetrate($activeSlave)>>
 		to fuck
 	<<else>>
 		fucked by
@@ -6479,7 +6479,7 @@ brought in to you. This time <<= App.UI.slaveDescriptionDialog($activeSlave)>> h
 		<</replace>>
 	<</link>><<if ($activeSlave.anus == 0 && canDoAnal($activeSlave))>> //This option will take $his anal virginity//<</if>>
 <</if>>
-<<if ($activeSlave.toyHole == "dick" || $policies.sexualOpeness == 1) && canPenetrate($activeSlave)>>
+<<if ($activeSlave.toyHole == "dick" || $policies.sexualOpenness == 1) && canPenetrate($activeSlave)>>
 	<br><<link "Invite $him 'in'">>
 		<<replace "#result">>
 			There's a glint <<if canSee($activeSlave)>>in $his eyes as $he sees<<elseif canHear($activeSlave)>>on $his face as $he hears<<else>>on $his face as $he senses<</if>> you stand up from your desk and saunter over;
@@ -11048,7 +11048,7 @@ brought in to you. This time <<= App.UI.slaveDescriptionDialog($activeSlave)>> h
 				"Plea<<s>>e, would you play with my boob<<s>>, <<Master>>?" $He sticks out $his chest and bounces $his breasts for you, lest you misunderstand. You could play with $his boobs, and you do, managing mammary intercourse several ways.
 				<<run seX($activeSlave, "mammary", $PC, "penetrative", 3)>>
 			<<case "pregnancy">>
-				<<if ($activeSlave.toyHole == "dick" || $policies.sexualOpeness == 1) && canPenetrate($activeSlave) && $PC.vagina != -1>>
+				<<if ($activeSlave.toyHole == "dick" || $policies.sexualOpenness == 1) && canPenetrate($activeSlave) && $PC.vagina != -1>>
 					<<if canGetPregnant($PC)>>
 						"Plea<<s>>e, can I try to get you pregnant, <<Master>>?" $His eyes are glued to your middle. You could let $him seed you, and you do, enjoying the feeling of $his hot cum jetting into your fertile pussy.
 						<<if canImpreg($PC, $activeSlave)>>
@@ -11085,7 +11085,7 @@ brought in to you. This time <<= App.UI.slaveDescriptionDialog($activeSlave)>> h
 					<</if>>
 				<</if>>
 			<<case "dom">>
-				<<if ($activeSlave.toyHole == "dick" || $policies.sexualOpeness == 1) && canPenetrate($activeSlave)>>
+				<<if ($activeSlave.toyHole == "dick" || $policies.sexualOpenness == 1) && canPenetrate($activeSlave)>>
 					"Plea<<s>>e, could I bang you, <<Master>>?" $He bounces on $his heels, rock-hard and biting $his lip with anticipation. You could let $him fuck your brains out, and you do, enjoying playing the sub for once.
 					<<run seX($activeSlave, "penetrative", $PC, "vaginal")>>
 					<<if canImpreg($PC, $activeSlave)>>
@@ -11102,7 +11102,7 @@ brought in to you. This time <<= App.UI.slaveDescriptionDialog($activeSlave)>> h
 					<</if>>
 				<</if>>
 			<<case "sadist">>
-				<<if ($activeSlave.toyHole == "dick" || $policies.sexualOpeness == 1) && canPenetrate($activeSlave)>>
+				<<if ($activeSlave.toyHole == "dick" || $policies.sexualOpenness == 1) && canPenetrate($activeSlave)>>
 					"Plea<<s>>e, can I pretend to rape you, <<Master>>?" $His eyes are wild. You could let $him rape you, and you do, pretending to go about your day until $he shoves you onto the couch and roughly fucks your
 					<<if $PC.vagina != -1>>
 						pussy.
@@ -11117,7 +11117,7 @@ brought in to you. This time <<= App.UI.slaveDescriptionDialog($activeSlave)>> h
 				<</if>>
 				<<run seX($activeSlave, "penetrative", $PC, "vaginal")>>
 			<<case "masochist">>
-				<<if ($activeSlave.toyHole == "dick" || $policies.sexualOpeness == 1) && canPenetrate($activeSlave)>>
+				<<if ($activeSlave.toyHole == "dick" || $policies.sexualOpenness == 1) && canPenetrate($activeSlave)>>
 					"Plea<<s>>e, would you rape me, <<Master>>?" $His eyes are hungry. You could rape $him, and you do, throwing $him across the couch and riding $him through so many orgasms that $he begs for mercy.
 					<<run seX($activeSlave, "penetrative", $PC, "vaginal")>>
 					<<if canImpreg($PC, $activeSlave)>>
@@ -11686,7 +11686,7 @@ brought in to you. This time <<= App.UI.slaveDescriptionDialog($activeSlave)>> h
 			<</if>>
 			$He shrinks away from you involuntarily, but you stroke loving hands down $his temples, the sides of $his neck, and $his upper arms. $He shudders involuntarily, and you can almost feel $him hate $himself through your lip lock. You cock your hips back and to the side, keeping your prick well clear of $him. As far as $he can feel, you're all boobs and feminine lips.
 			<br><br>
-			<<if $activeSlave.toyHole == "dick" || ($policies.sexualOpeness == 1 && canPenetrate($activeSlave))>>
+			<<if $activeSlave.toyHole == "dick" || ($policies.sexualOpenness == 1 && canPenetrate($activeSlave))>>
 				You walk forward, pressing $him against the far wall, and then turn yourself around, pinning $him against the wall with your butt<<if $activeSlave.belly >= 5000>>, working your way under $his _belly belly<</if>>. As $he hesitates, wondering what to do about this, you grab $his hands and place them on your
 				<<if $PC.butt >= 5>>
 					enormous, <<if $PC.buttImplant != 0>>beachball cheeks<<else>>wobbling ass<</if>>,
@@ -13439,7 +13439,7 @@ brought in to you. This time <<= App.UI.slaveDescriptionDialog($activeSlave)>> h
 		<<if $activeSlave.nipples != "fuckable">>the hardness of $his nipples<<else>>how swollen $his nipples are<</if>> in the cool night when the dance brings you close. $He enjoys $himself immensely and in no time at all, $he's meekly asking you to take $him inside and dance with $him on the bed. Naturally, you oblige.
 	<</replace>>
 	<<set $activeSlave.devotion += 3, $activeSlave.trust += 3>>
-	<<if ($activeSlave.toyHole == "dick" || $policies.sexualOpeness == 1) && canPenetrate($activeSlave)>>
+	<<if ($activeSlave.toyHole == "dick" || $policies.sexualOpenness == 1) && canPenetrate($activeSlave)>>
 		<<run seX($activeSlave, "penetrative", $PC, "vaginal")>>
 		<<if canImpreg($PC, $activeSlave)>>
 			<<= knockMeUp($PC, 20, 0, $activeSlave.ID)>>
diff --git a/src/uncategorized/arcmgmt.tw b/src/uncategorized/arcmgmt.tw
index f04a755a5ced275f9927b5c1117fe67029688513..73809b0db86be7ea135603b95aa7b88764eece84 100644
--- a/src/uncategorized/arcmgmt.tw
+++ b/src/uncategorized/arcmgmt.tw
@@ -386,7 +386,7 @@ _enslaveChance = 0.2>>
 	_slaveDemandT *= 1.125>>
 	Some desperate people filtered into the arcology during the week: as owner, you were able to enslave a handful of them.
 <</if>>
-<<if $policies.immmigrationCash == 1>>
+<<if $policies.immigrationCash == 1>>
 	<<set _lowerClass += 200,
 	_lowerClassP *= 1.01,
 	_middleClass += 40,
@@ -397,7 +397,7 @@ _enslaveChance = 0.2>>
 	_topClass *= 0.99>>
 	The rent promotion for new immigrants brings new citizens to the arcology.
 <</if>>
-<<if $policies.immmigrationRep == 1>>
+<<if $policies.immigrationRep == 1>>
 	<<set _lowerClass += 200,
 	_lowerClassP *= 1.01,
 	_middleClass += 40,
@@ -409,7 +409,7 @@ _enslaveChance = 0.2>>
 	Your welcome program for new citizens helps encourage wealthy people from the old world to immigrate, but @@.red;annoys some longstanding citizens.@@
 	<<run repX(forceNeg(100), "policies")>>
 <</if>>
-<<if $policies.immmigrationCash == -1>>
+<<if $policies.immigrationCash == -1>>
 	<<set _lowerClass += -200,
 	_lowerClassP *= 0.99,
 	_middleClass += -40,
@@ -421,7 +421,7 @@ _enslaveChance = 0.2>>
 	You covertly @@.yellowgreen;sell@@ the private information of potential arcology immigrants on the old world black market.
 	<<run cashX(random(500,1500), "policies")>>
 <</if>>
-<<if $policies.immmigrationRep == -1>>
+<<if $policies.immigrationRep == -1>>
 	<<set _lowerClass += -200,
 	_lowerClassP *= 0.99,
 	_middleClass += -40,
@@ -599,54 +599,54 @@ _enslaveChance = 0.2>>
 	<</if>>
 <</if>>
 <<if $arcologies[0].FSChattelReligionistCreed == 1>>
-	<<if $nicaeaFocus == "slaves">>
-		<<set _slaveDemandU *= 1 + $nicaeaPower * -0.05,
-		_slaveDemandT *= 1 + $nicaeaPower * -0.0625,
-		_slaveProductivity += $nicaeaPower * 0.025,
-		_expirationFS *= 1 + $nicaeaPower * -0.125,
-		_lowerClass += $nicaeaPower * 100,
-		_lowerClassP *= 1 + $nicaeaPower * 0.005,
-		_topClass += $nicaeaPower * -2.5,
-		_topClassP *= 1 + $nicaeaPower * -0.005>>
-	<<elseif $nicaeaFocus == "owners">>
-		<<set _slaveDemandU *= 1 + $nicaeaPower * 0.05,
-		_slaveDemandT *= 1 + $nicaeaPower * 0.0625,
-		_lowerClass += $nicaeaPower * -100,
-		_lowerClassP *= 1 + $nicaeaPower * -0.005,
-		_middleClass += $nicaeaPower * -20,
-		_middleClassP *= 1 + $nicaeaPower * -0.0025,
-		_upperClass += $nicaeaPower * 6.75,
-		_upperClassP *= 1 + $nicaeaPower * 0.0025,
-		_topClass += $nicaeaPower * 2.5,
-		_topClassP *= 1 + $nicaeaPower * 0.005>>
-	<</if>>
-	<<if $nicaeaAssignment == "whore">>
-		<<set _upperClass += $nicaeaPower * 6.75,
-		_upperClassP *= 1 + $nicaeaPower * 0.0025,
-		_topClass += $nicaeaPower * 1.25,
-		_topClassP *= 1 + $nicaeaPower * 0.0025>>
-	<<elseif $nicaeaAssignment == "serve the public">>
-		<<set _lowerClass += $nicaeaPower * 50,
-		_lowerClassP *= 1 + $nicaeaPower * 0.0025,
-		_middleClass += $nicaeaPower * 20,
-		_middleClassP *= 1 + $nicaeaPower * 0.0025>>
+	<<if $nicaea.focus == "slaves">>
+		<<set _slaveDemandU *= 1 + $nicaea.power * -0.05,
+		_slaveDemandT *= 1 + $nicaea.power * -0.0625,
+		_slaveProductivity += $nicaea.power * 0.025,
+		_expirationFS *= 1 + $nicaea.power * -0.125,
+		_lowerClass += $nicaea.power * 100,
+		_lowerClassP *= 1 + $nicaea.power * 0.005,
+		_topClass += $nicaea.power * -2.5,
+		_topClassP *= 1 + $nicaea.power * -0.005>>
+	<<elseif $nicaea.focus == "owners">>
+		<<set _slaveDemandU *= 1 + $nicaea.power * 0.05,
+		_slaveDemandT *= 1 + $nicaea.power * 0.0625,
+		_lowerClass += $nicaea.power * -100,
+		_lowerClassP *= 1 + $nicaea.power * -0.005,
+		_middleClass += $nicaea.power * -20,
+		_middleClassP *= 1 + $nicaea.power * -0.0025,
+		_upperClass += $nicaea.power * 6.75,
+		_upperClassP *= 1 + $nicaea.power * 0.0025,
+		_topClass += $nicaea.power * 2.5,
+		_topClassP *= 1 + $nicaea.power * 0.005>>
+	<</if>>
+	<<if $nicaea.assignment == "whore">>
+		<<set _upperClass += $nicaea.power * 6.75,
+		_upperClassP *= 1 + $nicaea.power * 0.0025,
+		_topClass += $nicaea.power * 1.25,
+		_topClassP *= 1 + $nicaea.power * 0.0025>>
+	<<elseif $nicaea.assignment == "serve the public">>
+		<<set _lowerClass += $nicaea.power * 50,
+		_lowerClassP *= 1 + $nicaea.power * 0.0025,
+		_middleClass += $nicaea.power * 20,
+		_middleClassP *= 1 + $nicaea.power * 0.0025>>
 	<<else>>
-		<<set _slaveDemandU *= 1 + $nicaeaPower * 0.05,
-		_slaveDemandT *= 1 + $nicaeaPower * 0.0625,
-		_lowerClass += $nicaeaPower * -50,
-		_lowerClassP *= 1 + $nicaeaPower * -0.0025,
-		_middleClass += $nicaeaPower * -20,
-		_middleClassP *= 1 + $nicaeaPower * -0.0025,
-		_upperClass += $nicaeaPower * 13.5,
-		_upperClassP *= 1 + $nicaeaPower * 0.005,
-		_topClass += $nicaeaPower * 2.5,
-		_topClassP *= 1 + $nicaeaPower * 0.005>>
-	<</if>>
-	<<if $nicaeaAchievement == "slaves">>
-		<<set _slaveDemandU *= 1 + $nicaeaPower * 0.2,
-		_slaveDemandT *= 1 + $nicaeaPower * 0.25,
-		_lowerClass += $nicaeaPower * -200,
-		_lowerClassP *= 1 + $nicaeaPower * -0.01>>
+		<<set _slaveDemandU *= 1 + $nicaea.power * 0.05,
+		_slaveDemandT *= 1 + $nicaea.power * 0.0625,
+		_lowerClass += $nicaea.power * -50,
+		_lowerClassP *= 1 + $nicaea.power * -0.0025,
+		_middleClass += $nicaea.power * -20,
+		_middleClassP *= 1 + $nicaea.power * -0.0025,
+		_upperClass += $nicaea.power * 13.5,
+		_upperClassP *= 1 + $nicaea.power * 0.005,
+		_topClass += $nicaea.power * 2.5,
+		_topClassP *= 1 + $nicaea.power * 0.005>>
+	<</if>>
+	<<if $nicaea.achievement == "slaves">>
+		<<set _slaveDemandU *= 1 + $nicaea.power * 0.2,
+		_slaveDemandT *= 1 + $nicaea.power * 0.25,
+		_lowerClass += $nicaea.power * -200,
+		_lowerClassP *= 1 + $nicaea.power * -0.01>>
 	<</if>>
 <</if>>
 <<if $arcologies[0].FSAztecRevivalistLaw == 1>>
@@ -1428,9 +1428,9 @@ You own
 		<<set _AWeekGrowth += 2>>
 	<</if>>
 	<<if $arcologies[0].FSChattelReligionistCreed == 1>>
-		<<if $nicaeaFocus == "owners">>
-			The focus on slaveowners' whims in the creed of $nicaeaName interests the rich and powerful, increasing prosperity.
-			<<set _AWeekGrowth += $nicaeaPower>>
+		<<if $nicaea.focus == "owners">>
+			The focus on slaveowners' whims in the creed of $nicaea.name interests the rich and powerful, increasing prosperity.
+			<<set _AWeekGrowth += $nicaea.power>>
 		<</if>>
 	<</if>>
 	<<if $arcologies[0].FSSlaveProfessionalismLaw == 1>>
diff --git a/src/uncategorized/costsReport.tw b/src/uncategorized/costsReport.tw
index ff255584896ea0722f7a034e51a9111abd1f657b..e54e7a9403e50fa4793b6d575a4d54e33bf6b61f 100644
--- a/src/uncategorized/costsReport.tw
+++ b/src/uncategorized/costsReport.tw
@@ -424,7 +424,7 @@ $researchLab.level > 0>>
 	<</if>>
 <</if>>
 
-<<if $policies.immmigrationCash == 1>>
+<<if $policies.immigrationCash == 1>>
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;Pro-immigration Promotion Budget: @@.yellowgreen;<<print cashFormat(policies.cost())>>@@
 	<<set _arcologyCosts += policies.cost()>>
 <</if>>
diff --git a/src/uncategorized/fsDevelopments.tw b/src/uncategorized/fsDevelopments.tw
index ce6e951d44804928066a6c78b620c23d7828f70d..515cb05861115a09b5e5b7543d5f35c1f8f4d461 100644
--- a/src/uncategorized/fsDevelopments.tw
+++ b/src/uncategorized/fsDevelopments.tw
@@ -76,13 +76,13 @@
 <<if $secExpEnabled == 1>>
 	<<if $SecExp.buildings.propHub.active > 0 && $SecExp.buildings.propHub.campaign >= 1 && $SecExp.buildings.propHub.focus == "social engineering">>
 		Your propaganda campaign helps further your societal engineering efforts.
-		<<if $SecExp.buildings.propHub.recuriterOffice == 0 || $RecruiterID == 0>>
+		<<if $SecExp.buildings.propHub.recruiterOffice == 0 || $RecruiterID == 0>>
 			<<if $propCampaignBoost == 1>>
 				<<set _broadProgress += 2>>
 			<<else>>
 				<<set _broadProgress += 1>>
 			<</if>>
-		<<elseif $SecExp.buildings.propHub.recuriterOffice && $RecruiterID > 0>>
+		<<elseif $SecExp.buildings.propHub.recruiterOffice && $RecruiterID > 0>>
 			<<setLocalPronouns _S.Recruiter>>
 			<span class='slave-name'><<= SlaveFullName(_S.Recruiter)>></span> is able to further boost your societal engineering campaign from $his PR hub office.
 			<<if $propCampaignBoost == 1>>
@@ -1098,7 +1098,7 @@
 <<if $arcologies[0].FSChattelReligionist != "unset">>
 	<<if $arcologies[0].FSChattelReligionist >= $FSLockinLevel>>
 		$arcologies[0].name believes implicitly in a version of religion that emphasizes slaveholding traditions.
-		<<set $independenceDay = 1, $nicaeaAnnounceable = 1>>
+		<<set $independenceDay = 1, $nicaea.announceable = 1>>
 	<<elseif $arcologies[0].FSChattelReligionist >= $FSLockinLevel*0.6>>
 		$arcologies[0].name agrees strongly with a version of religion that emphasizes slaveholding traditions.
 		<<set $independenceDay = 1>>
diff --git a/src/uncategorized/genericPlotEvents.tw b/src/uncategorized/genericPlotEvents.tw
index 17495884f2a4f99d71b4557188771947283e2b8a..d81fcd7b21f5c96d70ed7a1f2d43d06f4f1e85e4 100644
--- a/src/uncategorized/genericPlotEvents.tw
+++ b/src/uncategorized/genericPlotEvents.tw
@@ -176,42 +176,42 @@ The crowd of nude slaves led up to the lawn and chained to rings along one edge
 	<<set _trapped.push("conversion")>>
 <</if>>
 <<set _trapped.push("gradeSchool")>>
-<<set $PAidTarget = _trapped.random()>>
+<<set $eventResults.aidTarget = _trapped.random()>>
 A small old world country near the arcology is experiencing serious unrest. Its corrupt government is doing an even poorer job than most of addressing chronic joblessness and general malaise. Thus far, it's been a fertile source of people in poverty for slavers to target, and little else. Lately, though, it's been showing signs worse may be to come. You've instructed $assistant.name to flag communications from the area; there's always a possibility that business opportunities may arise from the benighted country, and the situation is becoming so unstable it's prudent to keep a personal eye on it anyway. You receive just such a call from
-<<if $PAidTarget == "convent">>
+<<if $eventResults.aidTarget == "convent">>
 	the leader of a female-oriented religious retreat
-<<elseif $PAidTarget == "school">>
+<<elseif $eventResults.aidTarget == "school">>
 	the principal of a preparatory school for girls
-<<elseif $PAidTarget == "housewives">>
+<<elseif $eventResults.aidTarget == "housewives">>
 	the queen bee of a small group of suburban housewives
-<<elseif $PAidTarget == "maternity">>
+<<elseif $eventResults.aidTarget == "maternity">>
 	the maternity ward of a hospital
-<<elseif $PAidTarget == "conversion">>
+<<elseif $eventResults.aidTarget == "conversion">>
 	the owner of a religious sexual orientation therapy camp
-<<elseif $PAidTarget == "gradeSchool">>
+<<elseif $eventResults.aidTarget == "gradeSchool">>
 	a student stranded
-<<elseif $PAidTarget == "volleyballTeam">>
+<<elseif $eventResults.aidTarget == "volleyballTeam">>
 	a student athlete
-<<elseif $PAidTarget == "seizedMission">>
+<<elseif $eventResults.aidTarget == "seizedMission">>
 	the leader of a group of missionaries
 <</if>>
 in the capital city.
 <br><br>
-<<if $PAidTarget != "seizedMission">>
+<<if $eventResults.aidTarget != "seizedMission">>
 	They are deeply worried by the situation. There have been large riots over the past week, and yesterday they became seriously violent. The unrest is targeting
-	<<if $PAidTarget == "convent">>
+	<<if $eventResults.aidTarget == "convent">>
 		better-off citizens, including the caller. Though most of the nuns have already left, the leader and a few of her women are now stuck in the area and are running out of options as the riots lock down transportation.
-	<<elseif $PAidTarget == "school">>
+	<<elseif $eventResults.aidTarget == "school">>
 		better-off citizens, including the caller. Though most of the students and faculty have already made it out, the principal and a few students are now stuck in the area and are running out of options as the riots lock down transportation.
-	<<elseif $PAidTarget == "housewives">>
+	<<elseif $eventResults.aidTarget == "housewives">>
 		better-off citizens, including the caller. Though most of them have taken flights out, the leader and a few of them are now stuck in the area and are running out of options as the riots lock down transportation.
-	<<elseif $PAidTarget == "maternity">>
+	<<elseif $eventResults.aidTarget == "maternity">>
 		better-off citizens, including the caller. Though most of the patients have already left, several of the most pregnant are now stuck in the area and are running out of options as the riots lock down transportation.
-	<<elseif $PAidTarget == "conversion">>
+	<<elseif $eventResults.aidTarget == "conversion">>
 		better-off citizens, including the caller. Though most of the camp's inmates have already left, a few of them and the owner are now stuck in the area and are running out of options as the riots lock down transportation.
-	<<elseif $PAidTarget == "gradeSchool">>
+	<<elseif $eventResults.aidTarget == "gradeSchool">>
 		better-off citizens, including the caller. Though most of the other students and faculty escaped, a few of the students are now stuck in the school and are running out of options as the riots steadily creep closer to the grounds.
-	<<elseif $PAidTarget == "volleyballTeam">>
+	<<elseif $eventResults.aidTarget == "volleyballTeam">>
 		vulnerable citizens, including the caller. Their bus broke down on the way to the championship game and all those that have left to get help have not returned. She and her several remaining teammates are running out of options as those looking for easy targets creep ever closer.
 	<</if>>
 <<else>>
@@ -221,32 +221,32 @@ They beg you to help evacuate them, and promise to pay you once they're out.
 
 <<case "aid result">>
 
-<<set $PAid = 0>>
+<<set $eventResults.aid = 0>>
 <<set $nationHate += 2>>
-You watch on the feeds from your VTOL craft as it settles <<if $PAidTarget == "volleyballTeam">>beside<<else>>onto the roof of<</if>> the
-<<if $PAidTarget == "convent">>
+You watch on the feeds from your VTOL craft as it settles <<if $eventResults.aidTarget == "volleyballTeam">>beside<<else>>onto the roof of<</if>> the
+<<if $eventResults.aidTarget == "convent">>
 	convent whose remaining women
-<<elseif $PAidTarget == "school">>
+<<elseif $eventResults.aidTarget == "school">>
 	girls' school whose remaining students and principal
-<<elseif $PAidTarget == "housewives">>
+<<elseif $eventResults.aidTarget == "housewives">>
 	mansion of the leader of the group of housewives
-<<elseif $PAidTarget == "maternity">>
+<<elseif $eventResults.aidTarget == "maternity">>
 	maternity ward whose remaining patients
-<<elseif $PAidTarget == "conversion">>
+<<elseif $eventResults.aidTarget == "conversion">>
 	religious sexual orientation therapy camp whose inmates and owner
-<<elseif $PAidTarget == "gradeSchool">>
+<<elseif $eventResults.aidTarget == "gradeSchool">>
 	school whose students
-<<elseif $PAidTarget == "volleyballTeam">>
+<<elseif $eventResults.aidTarget == "volleyballTeam">>
 	bus whose athletes
-<<elseif $PAidTarget == "seizedMission">>
+<<elseif $eventResults.aidTarget == "seizedMission">>
 	building the raped missionaries
 <</if>>
-you promised to rescue<<if $PAidTarget == "seizedMission">> were holed up in<</if>>. Its side doors retract, allowing the escapees to hustle aboard with their bundles of personal possessions. Once they're on board and strapped into their seats, the turbofans howl and the craft peels smoothly off the roof, the hot jet wash setting it alight. Once it transitions fully into level flight, the true plan goes into operation. At a carefully selected moment, injectors concealed within each seat lance into the passengers' buttocks, knocking them out. It works flawlessly, the drugs precisely calibrated to each body based on the weight added to the VTOL as each climbed aboard. This avoids the potential for over- or under-dosage present when using gas or darts to subdue groups. In perfect unison, the passengers slump against the harnesses holding them against the seats.
+you promised to rescue<<if $eventResults.aidTarget == "seizedMission">> were holed up in<</if>>. Its side doors retract, allowing the escapees to hustle aboard with their bundles of personal possessions. Once they're on board and strapped into their seats, the turbofans howl and the craft peels smoothly off the roof, the hot jet wash setting it alight. Once it transitions fully into level flight, the true plan goes into operation. At a carefully selected moment, injectors concealed within each seat lance into the passengers' buttocks, knocking them out. It works flawlessly, the drugs precisely calibrated to each body based on the weight added to the VTOL as each climbed aboard. This avoids the potential for over- or under-dosage present when using gas or darts to subdue groups. In perfect unison, the passengers slump against the harnesses holding them against the seats.
 <br><br>
 When the aircraft lands at your penthouse pad, the would-be escapees are still unconscious. This makes putting them through enslavement physically laborious, though it does cut down on the usual whining; fortunately, you reserved the credits necessary to obscure their questionably legitimate enslavement. By the time they awake, they'll be indistinguishable from any other new slave in the arcology. The possibility remains, however that rumor of the incident will leak out. Your VTOL bird's entry and exit from the capital city was likely noticed and remarked upon.
 <br><br>
 <<set _newSlaves = []>>
-<<if $PAidTarget == "convent">>
+<<if $eventResults.aidTarget == "convent">>
 	<<set $activeSlaveOneTimeMinAge = 30>>
 	<<set $activeSlaveOneTimeMaxAge = 42>>
 	<<set $oneTimeDisableDisability = 1>>
@@ -300,7 +300,7 @@ When the aircraft lands at your penthouse pad, the would-be escapees are still u
 		<<set $activeSlave.sexualFlaw = "repressed">>
 		<<set _newSlaves.push($activeSlave)>>
 	<</for>>
-<<elseif $PAidTarget == "school">>
+<<elseif $eventResults.aidTarget == "school">>
 	<<set $activeSlaveOneTimeMinAge = 26>>
 	<<set $activeSlaveOneTimeMaxAge = 42>>
 	<<set $oneTimeDisableDisability = 1>>
@@ -356,7 +356,7 @@ When the aircraft lands at your penthouse pad, the would-be escapees are still u
 		<<set $activeSlave.sexualFlaw = either("hates anal", "idealistic", "shamefast")>>
 		<<set _newSlaves.push($activeSlave)>>
 	<</for>>
-<<elseif $PAidTarget == "maternity">>
+<<elseif $eventResults.aidTarget == "maternity">>
 	<<for $i = 0; $i < 4; $i++>>
 		<<if $pedo_mode == 1>>
 			<<set $activeSlaveOneTimeMinAge = $fertilityAge>>
@@ -385,7 +385,7 @@ When the aircraft lands at your penthouse pad, the would-be escapees are still u
 		<<set _newSlaves.push($activeSlave)>>
 	<</for>>
 	In any case, you've enslaved a fine group. The expectant mothers vary widely; the only thing they have in common is their gravid bellies. None of them are in really serious condition, either, and they should bear the transition to slave life reasonably well despite their pregnancies.
-<<elseif $PAidTarget == "gradeSchool">>
+<<elseif $eventResults.aidTarget == "gradeSchool">>
 	In any case, you've enslaved a fine group. The girls are all within a similar age range, young, and healthy. Their youth and vigor should make them quite popular.
 	<<for $i = 0; $i < 4; $i++>>
 		<<if $minimumSlaveAge <= 7>>
@@ -412,7 +412,7 @@ When the aircraft lands at your penthouse pad, the would-be escapees are still u
 		<<run setHealth($activeSlave, jsRandom(-10, 10))>>
 		<<set _newSlaves.push($activeSlave)>>
 	<</for>>
-<<elseif $PAidTarget == "conversion">>
+<<elseif $eventResults.aidTarget == "conversion">>
 	In any case, you've enslaved a fine group. Certain religious groups persist in the hilarious delusion that it's possible to alter sexual orientation through prayer. In your experience, hormones, drugs, and compliance training are far more effective.
 	<<set $activeSlaveOneTimeMinAge = 26>>
 	<<set $activeSlaveOneTimeMaxAge = 42>>
@@ -462,7 +462,7 @@ When the aircraft lands at your penthouse pad, the would-be escapees are still u
 		<<set $activeSlave.sexualFlaw = either("apathetic", "repressed", "shamefast")>>
 		<<set _newSlaves.push($activeSlave)>>
 	<</for>>
-<<elseif $PAidTarget == "volleyballTeam">>
+<<elseif $eventResults.aidTarget == "volleyballTeam">>
 	In any case, you've enslaved a fine group. The girls are in fine health, fit and just past their majority, likely the reason any that stepped off the bus were promptly abducted. Their youth and vigor should make them quite popular, as will their experience with handling balls.
 	<<for $i = 0; $i < 4; $i++>>
 		<<set $activeSlaveOneTimeMinAge = 18>>
@@ -484,7 +484,7 @@ When the aircraft lands at your penthouse pad, the would-be escapees are still u
 		<<set $activeSlave.butt = random(1,2)>>
 		<<set _newSlaves.push($activeSlave)>>
 	<</for>>
-<<elseif $PAidTarget == "seizedMission">>
+<<elseif $eventResults.aidTarget == "seizedMission">>
 	/* leader */
 	<<if $pedo_mode == 1>>
 		<<set $activeSlaveOneTimeMinAge = 18>>
@@ -1113,12 +1113,12 @@ A screen opposite your desk springs to life, <<if $assistant.personality == 0>>s
 
 <<case "shoot invitation">>
 
-<<set $PShoot = 0>>
+<<set $eventResults.shoot = 0>>
 <<link "Buy in">>
 	<<replace "#result">>
 	You receive a brief but elegant confirmation. It looks like you've RSVP'd.
 	<<run cashX(-5000, "event")>>
-	<<set $PShoot = 1>>
+	<<set $eventResults.shoot = 1>>
 	<</replace>>
 <</link>>
 <br><<link "Politely decline">>
@@ -1129,7 +1129,7 @@ A screen opposite your desk springs to life, <<if $assistant.personality == 0>>s
 
 <<case "shoot result">>
 
-<<set $PShoot = 0>>
+<<set $eventResults.shoot = 0>>
 <<link "Hit the muscular slave about to successfully cross the lawn">>
 	<<replace "#result">>
 	<<set $activeSlaveOneTimeMinAge = 18>>
@@ -1350,38 +1350,38 @@ A screen opposite your desk springs to life, <<if $assistant.personality == 0>>s
 
 <<case "aid invitation">>
 
-<<set $PAid = 0>>
+<<set $eventResults.aid = 0>>
 	<<set _price = 10000>>
 <<link "Agree">>
 	<<replace "#result">>
-	You dispatch your personal VTOL bird immediately. It lands <<if $PAidTarget == "volleyballTeam">>beside the bus<<else>>on the roof of the building<</if>> they're sheltering in, and brings them across the closest border and into a more functional country. You receive a call expressing their heartfelt thanks and promising to @@.green;spread the word@@ about how you helped them escape, and a wire transfer of their @@.yellowgreen;payment@@ for the airlift.
+	You dispatch your personal VTOL bird immediately. It lands <<if $eventResults.aidTarget == "volleyballTeam">>beside the bus<<else>>on the roof of the building<</if>> they're sheltering in, and brings them across the closest border and into a more functional country. You receive a call expressing their heartfelt thanks and promising to @@.green;spread the word@@ about how you helped them escape, and a wire transfer of their @@.yellowgreen;payment@@ for the airlift.
 	<<run cashX(2000, "event")>>
 	<<run repX(1000, "event")>>
 	<</replace>>
 <</link>>
 <br><<link "Do it for free">>
 	<<replace "#result">>
-	You dispatch your personal VTOL bird immediately. It lands <<if $PAidTarget == "volleyballTeam">>beside the bus<<else>>on the roof of the building<</if>> they're sheltering in, and brings them across the closest border and into a more functional country. You receive a call expressing their heartfelt thanks, and when you refuse their payment for the airlift, they tearfully promise to tell the story of how you @@.green;extended charity@@ to those in need, belying the rumors about slaveowners.
+	You dispatch your personal VTOL bird immediately. It lands <<if $eventResults.aidTarget == "volleyballTeam">>beside the bus<<else>>on the roof of the building<</if>> they're sheltering in, and brings them across the closest border and into a more functional country. You receive a call expressing their heartfelt thanks, and when you refuse their payment for the airlift, they tearfully promise to tell the story of how you @@.green;extended charity@@ to those in need, belying the rumors about slaveowners.
 	<<run repX(2500, "event")>>
 	<</replace>>
 <</link>>
 <br><<link "Airlift them into slavery">>
 	<<replace "#result">>
 	You send your personal VTOL bird to the shop for some immediate and very expensive modifications to its cargo and passenger area. Since this will take several days, you stall the supplicants.
-	<<if $PAidTarget == "volleyballTeam">>
+	<<if $eventResults.aidTarget == "volleyballTeam">>
 		A few of the girls decide to leave, but the sight of them pushed against the wall of a nearby building, toned bodies glistening with sweat and seed as their captors rape them into submission, keep the rest happy to stay on the bus. Those that remained
 	<<else>>
 		Their situation isn't truly dire yet, and they can wait. They
 	<</if>>
 	are extremely grateful, though they would be less hopeful if they knew the true nature of the aircraft coming to retrieve them.
-	<<set $PAid = 1>>
+	<<set $eventResults.aid = 1>>
 	<<run cashX(forceNeg(_price), "event")>>
 	<</replace>>
 <</link>> //This will cost <<print cashFormat(_price)>>//
 
 <<case "aid result">>
 
-<<set $PAid = 0>>
+<<set $eventResults.aid = 0>>
 <<link "Sell your captures immediately">>
 	<<replace "#result">>
 	<<for _genPlot = 0; _genPlot < _newSlaves.length; _genPlot++>>
diff --git a/src/uncategorized/nonRandomEvent.tw b/src/uncategorized/nonRandomEvent.tw
index a6d7540fa34d7edb07ec73b5c8cb228c84cd9eca..65e8e6899b2def5d9c7d5fb7eaa42410d0c6a74b 100644
--- a/src/uncategorized/nonRandomEvent.tw
+++ b/src/uncategorized/nonRandomEvent.tw
@@ -157,19 +157,19 @@
 	<</if>>
 <<elseif ($arcologies[0].FSPaternalistDecoration == 100) && ($swanSong == 2) && ($week-$swanSongWeek >= 3)>>
 	<<goto "RE The Siren Strikes Back">>
-<<elseif ($PShoot == 1)>>
+<<elseif ($eventResults.shoot == 1)>>
 	<<set $Event = "shoot result">>
 	<<goto "Generic Plot Events">>
-<<elseif ($PSnatch == 1)>>
+<<elseif ($eventResults.snatch == 1)>>
 	<<goto "P snatch and grab result">>
-<<elseif ($PRaid == 1)>>
+<<elseif ($eventResults.raid == 1)>>
 	<<goto "P raid result">>
-<<elseif ($PAid == 1)>>
+<<elseif ($eventResults.aid == 1)>>
 	<<set $Event = "aid result">>
 	<<goto "Generic Plot Events">>
-<<elseif ($slaveMedic > 0)>>
+<<elseif ($eventResults.slaveMedic > 0)>>
 	<<goto "P slave medic">>
-<<elseif ($PPit == 1) && ($BodyguardID != 0)>>
+<<elseif ($eventResults.pit == 1) && ($BodyguardID != 0)>>
 	<<goto "PE pit fight">>
 <<elseif $rivalOwner == 0 && $smilingManProgress == 0 && _effectiveWeek >= 74 && $secExpEnabled == 1>>
 	<<goto "secExpSmilingMan">>
diff --git a/src/uncategorized/pRaidInvitation.tw b/src/uncategorized/pRaidInvitation.tw
index 35220f392efcab513902c3b398dca574e3ea48bf..4af7af869814aa586db997d1e45e06dc0ff41da5 100644
--- a/src/uncategorized/pRaidInvitation.tw
+++ b/src/uncategorized/pRaidInvitation.tw
@@ -2,7 +2,7 @@
 
 <<set $nextButton = "Continue", $nextLink = "Random Nonindividual Event">>
 
-<<set $PRaid = 0, $PRaidTarget = 0>>
+<<set $eventResults.raid = 0, $eventResults.raidTarget = 0>>
 
 The former country whose citizens launched the ultimately futile attack on the arcology has continued to degenerate. After a series of civil disturbances and minor natural disasters, the nearest major city is being abandoned by its few remaining residents. A regional warlord is threatening the area, so they are streaming in small parties towards another city that is not yet under his shadow.
 <br><br>
@@ -14,24 +14,24 @@ Fund a quick raid on the refugees with <<print cashFormat(5000)>>, targeting:
 	<<replace "#result">>
 	Your mercenaries probably would have been enthusiastic even before the recent combat, but now they're positively eager. The split agreed upon is that they keep the proceeds from the sale of anything that isn't sex slave material, while you keep anything that is.
 	<<run cashX(-5000, "war")>>
-	<<set $PRaid = 1>>
-	<<set $PRaidTarget = 1>>
+	<<set $eventResults.raid = 1>>
+	<<set $eventResults.raidTarget = 1>>
 	<</replace>>
 <</link>>
 <br>&nbsp;&nbsp;&nbsp;&nbsp;<<link "Healthy civilians">>
 	<<replace "#result">>
 	Your mercenaries probably would have been enthusiastic even before the recent combat, but now they're positively eager. The split agreed upon is that they keep the proceeds from the sale of anything that isn't sex slave material, while you keep anything that is.
 	<<run cashX(-5000, "war")>>
-	<<set $PRaid = 1>>
-	<<set $PRaidTarget = 2>>
+	<<set $eventResults.raid = 1>>
+	<<set $eventResults.raidTarget = 2>>
 	<</replace>>
 <</link>>
 <br>&nbsp;&nbsp;&nbsp;&nbsp;<<link "The largest possible group of slaves">>
 	<<replace "#result">>
 	Your mercenaries probably would have been enthusiastic even before the recent combat, but now they're positively eager. The split agreed upon is that they keep the proceeds from the sale of anything that isn't sex slave material, while you keep anything that is.
 	<<run cashX(-5000, "war")>>
-	<<set $PRaid = 1>>
-	<<set $PRaidTarget = 3>>
+	<<set $eventResults.raid = 1>>
+	<<set $eventResults.raidTarget = 3>>
 	<</replace>>
 <</link>>
 <br>Or, simply:
diff --git a/src/uncategorized/pRaidResult.tw b/src/uncategorized/pRaidResult.tw
index ac7ee2278b7936099d0ae93eab8641418cc1e79f..8537e1b9306d6dea7ae82411b6611cb21a6bd20b 100644
--- a/src/uncategorized/pRaidResult.tw
+++ b/src/uncategorized/pRaidResult.tw
@@ -2,7 +2,7 @@
 
 <<set $nextButton = "Continue", $nextLink = "Random Nonindividual Event">>
 
-<<set $PRaid = 0>>
+<<set $eventResults.raid = 0>>
 
 As your VTOL craft carries you and your mercenaries out towards an area ideal for a quick raid on the refugee bands, the sensors begin to reveal that there are actually many more bands than you originally suspected. The single aircraft does not carry enough mercenaries to target more than one group, or have the cargo capacity to haul more than one back to the arcology before they disperse. Your mercenary commander makes a selection based on your instructions.
 <br><br>
@@ -10,7 +10,7 @@ Out ahead of the main body of refugees there is a small knot moving quickly and
 <br><br>
 
 <<set _newSlaves = []>>
-<<if $PRaidTarget == 1>>
+<<if $eventResults.raidTarget == 1>>
 	Under orders to target resistance, your mercenaries target the leading group. They even manage to direct a little small arms fire at the VTOL craft as it circles them, dropping mercenaries and plying its nonlethal weapons, but they are of course rapidly defeated. Your share is two slaves in good physical condition, who prove to have been survivors of the defeated attack on the arcology. The mercenaries find after a data search that one of the prisoners whose part of their share was a minor leader in the anti-Free Cities movement. After a quick consultation over their radios, the mercenaries decide that a summary execution out here would be too quick for the wretch, and bring their prize back to the arcology for more thorough punishment. Between the successful raid and the capture of this public enemy, @@.green;the citizens are quite impressed by you.@@
 	<<run repX(2500, "event")>>
 	<<for _prr = 0; _prr < 3; _prr++>>
@@ -24,7 +24,7 @@ Out ahead of the main body of refugees there is a small knot moving quickly and
 			<<set _newSlaves.push($activeSlave)>>
 		<</if>>
 	<</for>>
-<<elseif $PRaidTarget == 2>>
+<<elseif $eventResults.raidTarget == 2>>
 	Under orders to target civilians, your mercenaries head for the isolated group. When the VTOL descends to circle around the large group of refugees, it becomes obvious that it won't even be necessary to expend nonlethal ammunition. A few of the refugees throw themselves down in bitterness, but most just subside into the catatonia of helplessness. They stand quiescent as they are searched, tagged, and loaded onto the VTOL like the wretched human refuse they are. The successful raid @@.green;is the talk of the Free City.@@
 	<<run repX(1000, "event")>>
 	<<for _prr = 0; _prr < 4; _prr++>>
@@ -36,7 +36,7 @@ Out ahead of the main body of refugees there is a small knot moving quickly and
 	<<set _nurseGender = $seeDicks == 100 ? 100 : 0>> /* nurse gender is female unless seeDicks is 100 */
 	<<setNonlocalPronouns $seeDicks>>
 	Under orders to target the largest possible group of people, your mercenaries head for the sick and injured. As the VTOL settles, it becomes apparent that most of the injuries are from combat, almost certainly in the defeat at $arcologies[0].name. The tent proves to contain a harassed nurse, almost without medical supplies and at the end of _hisU rope. When _heU sees the mercenaries push through the tent flap, _heU heaves a sigh of mixed defeat and relief and wordlessly offers _hisU wrists. The mercenaries give you a larger share of the other slaves in return for _himU: they tell you in confidence that _heU'll be a medical asset to them as well as the usual amusement. The successful raid @@.green;is the talk of the Free City.@@
-	<<set $slaveMedic = 1>>
+	<<set $eventResults.slaveMedic = 1>>
 	<<run repX(1000, "event")>>
 	<<for _prr = 0; _prr < 5; _prr++>>
 		<<set $activeSlave = GenerateNewSlave()>>
diff --git a/src/uncategorized/pSlaveMedic.tw b/src/uncategorized/pSlaveMedic.tw
index 8fb85f0ef323c31f3e31c687cd0cde478e14c4b6..54bccde7d9a969542fd670bd7f6817a3ea36ecda 100644
--- a/src/uncategorized/pSlaveMedic.tw
+++ b/src/uncategorized/pSlaveMedic.tw
@@ -2,7 +2,7 @@
 
 <<set $nextButton = "Continue", $nextLink = "Random Nonindividual Event", $returnTo = "Random Nonindividual Event">>
 
-<<set $slaveMedic = 0>>
+<<set $eventResults.slaveMedic = 0>>
 
 <<set $oneTimeDisableDisability = 1>>
 <<if $pedo_mode == 1>>
diff --git a/src/uncategorized/pSnatchAndGrab.tw b/src/uncategorized/pSnatchAndGrab.tw
index df0e7f12b74fd780930a96c6d25d9f3821825c94..4e9bb2b484fdce8efa0725626e3ee8c23bab070b 100644
--- a/src/uncategorized/pSnatchAndGrab.tw
+++ b/src/uncategorized/pSnatchAndGrab.tw
@@ -3,7 +3,7 @@
 <<set $nextButton = "Continue">>
 <<set $nextLink = "Random Nonindividual Event">>
 
-<<set $PSnatch = 0>>
+<<set $eventResults.snatch = 0>>
 <<setAssistantPronouns>>
 
 <<= capFirstChar($assistant.name)>> forwards a discreet message from the leader of your mercenaries.
@@ -59,7 +59,7 @@
 	<<replace "#result">>
 	You receive no response whatsoever. Twenty minutes later, however, a liaison VTOL aircraft that the mercenaries sometimes hire arrives, loads a party of armed men and women, and leaves.
 	<<run cashX(-10000, "slaveTransfer")>>
-	<<set $PSnatch = 1>>
+	<<set $eventResults.snatch = 1>>
 	<</replace>>
 <</link>>
 <br><<link "Politely decline">>
diff --git a/src/uncategorized/pSnatchAndGrabResult.tw b/src/uncategorized/pSnatchAndGrabResult.tw
index 55247d219b9ec8ef8d85871a0c6663837b6f7c34..b05d0ffc006622b73bbac2c63636517a9d62acfc 100644
--- a/src/uncategorized/pSnatchAndGrabResult.tw
+++ b/src/uncategorized/pSnatchAndGrabResult.tw
@@ -1,6 +1,6 @@
 :: P snatch and grab result [nobr]
 
-<<set $nextButton = "Continue", $nextLink = "Random Nonindividual Event", $returnTo = "Random Nonindividual Event", $PSnatch = 0>>
+<<set $nextButton = "Continue", $nextLink = "Random Nonindividual Event", $returnTo = "Random Nonindividual Event", $eventResults.snatch = 0>>
 
 <<if $pedo_mode == 1>>
 
diff --git a/src/uncategorized/pePitFight.tw b/src/uncategorized/pePitFight.tw
index bbc7850decc8badfdad4b11b4ea8d8227316900c..6c5dfb6693625bbf9881d9bcc1f122dec17a4969 100644
--- a/src/uncategorized/pePitFight.tw
+++ b/src/uncategorized/pePitFight.tw
@@ -7,7 +7,7 @@
 
 <<set _deadliness = Deadliness($activeSlave)>>
 
-<<set $PPit = 0>>
+<<set $eventResults.pit = 0>>
 
 <span id="artFrame">
 /* 000-250-006 */
diff --git a/src/uncategorized/pePitFightInvite.tw b/src/uncategorized/pePitFightInvite.tw
index 97cba9c2f4bfcaac73e0503ee4ac5787afc926bf..c526a82b1f0f7906fba30e5c141103212f37c1ac 100644
--- a/src/uncategorized/pePitFightInvite.tw
+++ b/src/uncategorized/pePitFightInvite.tw
@@ -3,7 +3,7 @@
 <<set $nextButton = "Continue">>
 <<set $nextLink = "RIE Eligibility Check">>
 
-<<set $PPit = 0>>
+<<set $eventResults.pit = 0>>
 <<setLocalPronouns _S.Bodyguard>>
 <span id="artFrame">
 </span>
@@ -31,7 +31,7 @@
 	<</replace>>
 	<<replace "#result">>
 	You receive a brief confirmation. It looks like $he's got a fight.
-	<<set $PPit = 1>>
+	<<set $eventResults.pit = 1>>
 	<</replace>>
 <</link>>
 <br><<link "Politely decline">>
diff --git a/src/uncategorized/reputation.tw b/src/uncategorized/reputation.tw
index 3ff287fcf7ff7307b8e4c1884871584e6251af74..ef23627c08fd76312fe40a45df85748d7f7b4547 100644
--- a/src/uncategorized/reputation.tw
+++ b/src/uncategorized/reputation.tw
@@ -9,8 +9,8 @@ On formal occasions, you are announced as $PCTitle.
 
 <<if $arcologies[0].FSChattelReligionist != "unset">>
 	<<if $arcologies[0].FSChattelReligionistCreed == 1>>
-		$arcologies[0].name keeps the creed of the $nicaeaName. The faithful
-		<<if $nicaeaAchievement == "slaves">>
+		$arcologies[0].name keeps the creed of the $nicaea.name. The faithful
+		<<if $nicaea.achievement == "slaves">>
 			<<if $slaves.length > 50>>
 				@@.green;strongly approve@@ of the large
 				<<= FutureSocieties.Change("ChattelReligionist", 5)>>
@@ -21,7 +21,7 @@ On formal occasions, you are announced as $PCTitle.
 				are not impressed by the
 			<</if>>
 			number of people you're giving the honor of sexual servitude.
-		<<elseif $nicaeaAchievement == "devotion">>
+		<<elseif $nicaea.achievement == "devotion">>
 			<<if $averageDevotion > 80>>
 				@@.green;strongly approve@@ of the worshipfulness
 				<<= FutureSocieties.Change("ChattelReligionist", 5)>>
@@ -269,7 +269,7 @@ _enduringRep = $enduringRep>>
 	<</if>>
 <</if>>
 
-<<if $policies.sexualOpeness == 1>>
+<<if $policies.sexualOpenness == 1>>
 	<<if $arcologies[0].FSChattelReligionistLaw == 1 || $arcologies[0].FSRestartDecoration == 100>>
 		/* already handled above */
 	<<else>>
@@ -422,7 +422,7 @@ _enduringRep = $enduringRep>>
 		<<if $arcologies[0].FSRestartDecoration == 100>>
 			<<if $PC.pregSource != -1 && $PC.pregSource != -6>>
 				Most prominent female owners avoid being penetrated on
-				<<if $policies.sexualOpeness == 1>>
+				<<if $policies.sexualOpenness == 1>>
 					principle, though you choose the opposite; your fecund figure suggests a slave knocked you up, a huge
 				<<else>>
 					principle; your fecund figure exposes not only your willingness to be penetrated, but your
@@ -440,7 +440,7 @@ _enduringRep = $enduringRep>>
 		<<else>>
 			<<if $PC.pregSource != -1 && $PC.pregSource != -6>>
 				Most prominent female owners avoid being penetrated on
-				<<if $policies.sexualOpeness == 1>>
+				<<if $policies.sexualOpenness == 1>>
 					principle, though you choose the opposite; your fecund figure suggests a slave knocked you up, a huge
 				<<else>>
 					principle; your fecund figure exposes not only your willingness to be penetrated, but your
@@ -458,7 +458,7 @@ _enduringRep = $enduringRep>>
 		<</if>>
 	<<elseif $arcologies[0].FSRepopulationFocus >= 60>>
 		Most prominent female owners avoid being penetrated on principle, but your arcology values motherhood so much that it is more @@.green;pleased@@ with your dedication than it is disappointed in your
-		<<if $policies.sexualOpeness == 1>>
+		<<if $policies.sexualOpenness == 1>>
 			suspected slave baby.
 		<<else>>
 			penetration.
@@ -466,7 +466,7 @@ _enduringRep = $enduringRep>>
 		<<run repX(10, "PCappearance")>>
 	<<else>>
 		Most prominent female owners avoid being penetrated on
-		<<if $policies.sexualOpeness == 1>>
+		<<if $policies.sexualOpenness == 1>>
 			principle, though you choose the opposite; your fecund figure suggests a slave knocked you up,
 		<<else>>
 			principle; your fecund figure exposes your willingness to be penetrated,
diff --git a/src/uncategorized/saDevotion.tw b/src/uncategorized/saDevotion.tw
index cb6906ccd3a092f5aa7e03b13db559b18bee3c53..aec27956e6b0369778330717566b63fda9303849 100644
--- a/src/uncategorized/saDevotion.tw
+++ b/src/uncategorized/saDevotion.tw
@@ -170,9 +170,9 @@
 	<</if>>
 <</if>>
 <<if $arcologies[0].FSChattelReligionistCreed == 1>>
-	<<if $nicaeaFocus == "slaves">>
-		The creed of $nicaeaName @@.hotpink;focuses on slaves@@ and is repeated constantly all around $him.
-		<<set $slaves[$i].devotion += $nicaeaPower>>
+	<<if $nicaea.focus == "slaves">>
+		The creed of $nicaea.name @@.hotpink;focuses on slaves@@ and is repeated constantly all around $him.
+		<<set $slaves[$i].devotion += $nicaea.power>>
 	<</if>>
 <</if>>
 
@@ -528,7 +528,7 @@
 				<<if canImpreg($PC, $slaves[$i])>>
 					<<= knockMeUp($PC, $freeSexualEnergy, 0, $slaves[$i].ID, 1)>>
 				<</if>>
-				<<if $policies.sexualOpeness == 0>>
+				<<if $policies.sexualOpenness == 0>>
 					<<set $PC.degeneracy++>>
 				<</if>>
 			<</if>>
diff --git a/src/uncategorized/saLongTermEffects.tw b/src/uncategorized/saLongTermEffects.tw
index 9996d62b4caa79f07ab29c91b7f666700afe8bef..eaedcb3e88b91b2fa98f03f1b251e4c0835823a6 100644
--- a/src/uncategorized/saLongTermEffects.tw
+++ b/src/uncategorized/saLongTermEffects.tw
@@ -4466,7 +4466,7 @@
 		<<set _conceptionSeed = random(1,100)>>
 		<<set _studIgnoresRules = (_Stud && $universalRulesImpregnation == "Stud" && _Stud.career == "a breeding bull" && _Stud.fetish == "mindbroken" && canMove(_Stud)) ? 1 : 0>>
 
-		<<if ($universalRulesImpregnation == "PC") && canImpreg($slaves[$i], $PC)>>
+		<<if $universalRulesImpregnation == "PC" && canImpreg($slaves[$i], $PC) && $slaves[$i].PCExclude != 1>>
 			$slaves[$i].slaveName is ripe for breeding, so you ejaculate inside $him often. When you bore of $his fertile <<if $slaves[$i].mpreg == 1>>ass<<else>>cunt<</if>>, you keep $him around as you fuck other slaves so you can pull out of them, shove your cock into $him, and fill $him with your seed anyway.
 			<<if ($slaves[$i].fuckdoll == 0) && ($slaves[$i].fetish != "mindbroken")>>
 				<<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>>
@@ -6345,6 +6345,9 @@
 		<<if $slaves[$i].fuckdoll > 0>>
 			Society @@.red;strongly disapproves@@ of your owning a Fuckdoll.
 			<<= FutureSocieties.ChangePorn("Paternalist", -2)>>
+		<<elseif !canWalk($slaves[$i]) && canMove($slaves[$i]) && $slaves[$i].rules.mobility != "permissive">>
+			Society @@.red;disapproves@@ that you are forcing $him to crawl instead of aiding $his mobility.
+			<<= FutureSocieties.ChangePorn("Paternalist", -1)>>
 		<</if>>
 	<<elseif $arcologies[0].FSDegradationist != "unset">>
 		<<if ($slaves[$i].fetish == "mindbroken")>>
@@ -6367,7 +6370,7 @@
 				<</if>>
 			<</if>>
 			<<if ($slaves[$i].intelligenceImplant <= -15)>>
-				Society @@.red;is amused@@ by $slaves[$i].slaveName's education and how much it hinders critical thought.
+				Society @@.reputation.inc;is amused@@ by $slaves[$i].slaveName's education and how much it hinders critical thought.
 				<<= FutureSocieties.ChangePorn("Degradationist", 1)>>
 			<</if>>
 		<</if>>
@@ -6400,6 +6403,9 @@
 		<<if $slaves[$i].fuckdoll > 0>>
 			Society @@.green;approves@@ of your owning a Fuckdoll.
 			<<= FutureSocieties.ChangePorn("Degradationist", 1)>>
+		<<elseif !canWalk($slaves[$i]) && canMove($slaves[$i]) && $slaves[$i].rules.mobility == "restrictive">>
+			Society @@.green;approves@@ that $he is forced to crawl like the dog $he is.
+			<<= FutureSocieties.ChangePorn("Degradationist", 1)>>
 		<</if>>
 	<</if>>
 
diff --git a/src/uncategorized/scheduledEvent.tw b/src/uncategorized/scheduledEvent.tw
index 38cadbed2828240f27d28a34f78366533cd2e474..651d0627a4d7899cdad441c3293699bf62f19d3d 100644
--- a/src/uncategorized/scheduledEvent.tw
+++ b/src/uncategorized/scheduledEvent.tw
@@ -135,7 +135,7 @@
 	<<goto "SE recruiter success">>
 <<elseif ($customSlaveOrdered == 1 && $customSlaveOrderedReorder != 1)>>
 	<<goto "SE custom slave delivery">>
-<<elseif ($JFCOrder == 1 && $JFCReorder != 1)>>
+<<elseif ($JFC.order == 1 && $JFC.reorder != 1)>>
 	<<goto "JobFulfillmentCenterDelivery">>
 <<elseif ($huskSlaveOrdered == 1)>>
 	<<goto "SE husk slave delivery">>
@@ -168,22 +168,20 @@
 <<elseif ($TFS.schoolPresent == 1) && ($organFarmUpgrade != 0) && ($TFS.farmUpgrade == 0)>>
 	<<goto "TFS Farm Upgrade">>
 
-/* Nicea */
-<<elseif ($nicaea == 1) && ($organFarmUpgrade != 0) && ($TFS.farmUpgrade == 0)>>
-	<<goto "TFS Farm Upgrade">>
-<<elseif ($nicaeaHeld != 1) && ($arcologies[0].FSChattelReligionist != "unset") && ($nicaeaAnnounceable == 1) && ($nicaeaAnnounced != 1)>>
+/* Nicaea */
+<<elseif ($nicaea.held != 1) && ($arcologies[0].FSChattelReligionist != "unset") && ($nicaea.announceable == 1) && ($nicaea.announced != 1)>>
 	<<goto "SE nicaea announcement">>
-<<elseif ($nicaeaHeld != 1) && ($arcologies[0].FSChattelReligionist != "unset") && ($nicaeaPreparation == 1)>>
-	<<if $nicaeaInvolvement != 0>>
+<<elseif ($nicaea.held != 1) && ($arcologies[0].FSChattelReligionist != "unset") && ($nicaea.preparation == 1)>>
+	<<if $nicaea.involvement != 0>>
 		<<goto "SE nicaea preparation">>
 	<<else>>
-		<<set $nicaeaPreparation = 0>>
+		<<set $nicaea.preparation = 0>>
 		<<if $plot == 1>><<goto "Nonrandom Event">><<else>><<goto "Random Nonindividual Event">><</if>>
 	<</if>>
-<<elseif ($nicaeaHeld != 1) && ($arcologies[0].FSChattelReligionist != "unset") && ($nicaeaInvolvement >= 0)>>
-	<<set $nicaeaFocus = either("owners", "slaves")>>
-	<<set $nicaeaAssignment = either("please you", "serve the public", "whore")>>
-	<<set $nicaeaAchievement = either("devotion", "slaves", "trust")>>
+<<elseif ($nicaea.held != 1) && ($arcologies[0].FSChattelReligionist != "unset") && ($nicaea.involvement >= 0)>>
+	<<set $nicaea.focus = either("owners", "slaves")>>
+	<<set $nicaea.assignment = either("please you", "serve the public", "whore")>>
+	<<set $nicaea.achievement = either("devotion", "slaves", "trust")>>
 	<<goto "SE nicaea council">>
 <<else>>
 	<<run delete $JFCReorder>>
diff --git a/src/uncategorized/seNicaeaAnnouncement.tw b/src/uncategorized/seNicaeaAnnouncement.tw
index 1a0aa067ba5eed630823067ce1a2a70310d72217..157f943d79e7e79f77c31971dd6505195dfec7d9 100644
--- a/src/uncategorized/seNicaeaAnnouncement.tw
+++ b/src/uncategorized/seNicaeaAnnouncement.tw
@@ -2,8 +2,8 @@
 
 <<if $plot == 1>><<set $nextLink = "Nonrandom Event">><<else>><<set $nextLink = "Random Nonindividual Event">><</if>>
 <<set $nextButton = "Continue">>
-<<set $nicaeaAnnounced = 1, $nicaeaPreparation = 1, $nicaeaInvolvement = 0, $nicaeaPower = 1>>
-<<set $nicaeaName = "Council of " + setup.ArcologyNamesChattelReligionist.random()>>
+<<set $nicaea.announced = 1, $nicaea.preparation = 1, $nicaea.involvement = 0, $nicaea.power = 1>>
+<<set $nicaea.name = "Council of " + setup.ArcologyNamesChattelReligionist.random()>>
 
 <<if $PC.title == 1>><<set _advocate = "male">><<elseif $PC.dick != 0>><<set _advocate = "futa">><<else>><<set _advocate = "female">><</if>>
 
@@ -36,7 +36,7 @@ Hosting a new religion's first synod will be expensive and time-consuming, but w
 		"Wonderful," says the evangelistic lady slaveowner. She orders that the newly consecrated slave approach her, and ends the call.
 	<</if>>
 	You have a tremendous amount of work to do, and not much time to do it. You immediately set aside a sizable sum as an initial budget for the event itself. The first major decision you'll need to make about the council is who to invite. As one of Chattel Religionism's most prominent figures, you have a good idea of who you'd have to include to ensure that the council's agreements have as much weight as possible; $assistant.name immediately begins collating background information on potential attendees, to assist you further.
-	<<set $nicaeaInvolvement = 1, $nicaeaPower += 1, $nicaeaInfluence = 1, $nicaeaName = "Council of " + $arcologies[0].name>>
+	<<set $nicaea.involvement = 1, $nicaea.power += 1, $nicaea.influence = 1, $nicaea.name = "Council of " + $arcologies[0].name>>
 	<<run cashX(-10000, "event")>>
 	<</replace>>
 <</link>> //This will cost <<print cashFormat(10000)>>, and influencing the outcome will likely require further investment//
@@ -51,7 +51,7 @@ Hosting a new religion's first synod will be expensive and time-consuming, but w
 		evangelistic lady slaveowner, "though I must stand against it." She orders the newly consecrated slave whipped in penance for this reverse, and ends the call.
 	<</if>>
 	You announce your opposition to the planned council publicly, using your considerable influence within the developing religion to make your opinion known. Your arguments are couched in the language of the new faith, and emphasize its welcoming and open nature to anyone willing to experience the holy institution of sexual slavery, be it as a slave or a slaveowner. Your force and vigor in the debate @@.green;enhances your reputation,@@ and helps sway other prominent Chattel Religionists away from attending the council. It's not yet clear whether a weakened council will manage to meet and get anything done, or if you've successfully prevented the idea from coalescing. You'll have to keep working at it and wait at least a week to see what the results of the controversy will be.
-	<<set $nicaeaInvolvement = -1>>
+	<<set $nicaea.involvement = -1>>
 	<<run repX(5000, "event")>>
 	<</replace>>
 <</link>>
diff --git a/src/uncategorized/seNicaeaCouncil.tw b/src/uncategorized/seNicaeaCouncil.tw
index cbc22206acf0bb374cb6b3961c0f3ec6131bc37a..7353504fe50caf21c29b05ff536faf31da71c4d1 100644
--- a/src/uncategorized/seNicaeaCouncil.tw
+++ b/src/uncategorized/seNicaeaCouncil.tw
@@ -2,35 +2,35 @@
 
 <<if $plot == 1>><<set $nextLink = "Nonrandom Event">><<else>><<set $nextLink = "Random Nonindividual Event">><</if>>
 <<set $nextButton = "Continue">>
-<<set _nicaeaRollA = random(-1,0), _nicaeaRollB = random(-1,0), _nicaeaRollC = random(-1,0)>>
+<<set _nicaea.RollA = random(-1,0), _nicaea.RollB = random(-1,0), _nicaea.RollC = random(-1,0)>>
 
-<<set $nicaeaHeld = 1, $arcologies[0].FSChattelReligionistCreed = 1>>
+<<set $nicaea.held = 1, $arcologies[0].FSChattelReligionistCreed = 1>>
 
-<<if $nicaeaInvolvement == 0>>
+<<if $nicaea.involvement == 0>>
 
 <<set $arcologies[0].FSChattelReligionistCreed = 1>>
-The $nicaeaName is held in another arcology, without your involvement. Your abstention has weakened it. It authored a creed which the Council claims all good Chattel Religionists should subscribe. Most of it is uncontroversial, giving beliefs about slavery and faith that virtually all Chattel Religionists agree on. However, the new creed does purport to settle three major points of contention.
+The $nicaea.name is held in another arcology, without your involvement. Your abstention has weakened it. It authored a creed which the Council claims all good Chattel Religionists should subscribe. Most of it is uncontroversial, giving beliefs about slavery and faith that virtually all Chattel Religionists agree on. However, the new creed does purport to settle three major points of contention.
 <br><br>
 First, it emphasizes
-<<if $nicaeaFocus == "slaves">>
+<<if $nicaea.focus == "slaves">>
 	slaves throughout. The creed goes so far as to imply that slaveowners have a duty to slaves, which they fulfill by providing them the opportunity to enjoy the holy and pure state of being a sex slave.
 <<else>>
 	reverence for and obedience to slaveowners. This is not likely to have a great impact on slaves, but it affirms the total superiority of slaveowners and is likely to attract wealthy religious people from the old world.
 <</if>>
 <br><br>
 Second, one of the ways it states that free people can make their devotions is to
-<<if $nicaeaAssignment == "whore">>
+<<if $nicaea.assignment == "whore">>
 	fuck a slave whore. Not surprisingly, this will increase demand for prostitutes.
-<<elseif $nicaeaAssignment == "serve the public">>
+<<elseif $nicaea.assignment == "serve the public">>
 	fuck a public slut. Not surprisingly, this will increase demand for public servants.
 <<else>>
 	have sex with one's slaves. This will likely increase respect for those that keep their own fucktoys.
 <</if>>
 <br><br>
 Third, the aspirational part of the creed for slaveowners focuses on
-<<if $nicaeaAchievement == "slaves">>
+<<if $nicaea.achievement == "slaves">>
 	owning many slaves to spread the gift of sexual slavery as widely as possible. This will increase respect for people who own many sex slaves, regardless of how they're used.
-<<elseif $nicaeaAchievement == "devotion">>
+<<elseif $nicaea.achievement == "devotion">>
 	making slaves worshipful. Naturally, this will increase respect for people with many devoted slaves.
 <<else>>
 	building slaves' trust. Naturally, this will increase respect for people with many trusting slaves.
@@ -40,82 +40,82 @@ Third, the aspirational part of the creed for slaveowners focuses on
 
 <<else>>
 
-The $nicaeaName is held in your arcology. Everyone in attendance is agreed that a Chattel Religionist creed should be created to give the faith a set of shared beliefs to unify and drive it. Many parts of the creed are uncontroversial, but there are three great controversies to be decided: whose role in slavery is most important in Chattel Religionism, which assignment best exemplifies a Chattel Religionist slave's sacred sexual servitude, and what a Chattel Religionist slaveowner should most aspire to achieve. All the slaveowners who are participating have committed to support whatever the Council decides collectively, <<if $nicaeaPower > 1>>and the strong Council should be able to promulgate a strong creed<<else>>but the weak Council may lead to a weak creed<</if>>. The Council
+The $nicaea.name is held in your arcology. Everyone in attendance is agreed that a Chattel Religionist creed should be created to give the faith a set of shared beliefs to unify and drive it. Many parts of the creed are uncontroversial, but there are three great controversies to be decided: whose role in slavery is most important in Chattel Religionism, which assignment best exemplifies a Chattel Religionist slave's sacred sexual servitude, and what a Chattel Religionist slaveowner should most aspire to achieve. All the slaveowners who are participating have committed to support whatever the Council decides collectively, <<if $nicaea.power > 1>>and the strong Council should be able to promulgate a strong creed<<else>>but the weak Council may lead to a weak creed<</if>>. The Council
 
-<<if $nicaeaInfluence > 0>>
+<<if $nicaea.influence > 0>>
 
-is ongoing, and you have <<if $nicaeaInfluence > 2>>an immense<<elseif $nicaeaInfluence > 1>>a large<<else>>some<</if>> leverage with the rest of the Council to influence the Council's decisions.
+is ongoing, and you have <<if $nicaea.influence > 2>>an immense<<elseif $nicaea.influence > 1>>a large<<else>>some<</if>> leverage with the rest of the Council to influence the Council's decisions.
 
 <br><br>
 On the first question, the great debate is between those Chattel Religionists who focus on their slaves and those who think that the focus should be on the slaveowner. The former vaunt the pure, holy state of grace to which a well trained slave can attain, and describe slaveowning as a positive duty, arguing that slaveowners must work to help their slaves attain purity, not exploit or torment them. The latter consider this belief inverted and dangerous, and think that slaves' primary role is to serve and revere their owners, making the whim and caprice of the owner sacred. The group whose role is placed centrally in the creed will likely get more enjoyment from its role in Chattel Religionism.
 <br>&nbsp;&nbsp;&nbsp;&nbsp;
-A majority of the Council currently supports deciding this question in favor of ''the <<if $nicaeaFocus == "slaves">>slave<<else>>slaveowner<</if>> centrality.''
+A majority of the Council currently supports deciding this question in favor of ''the <<if $nicaea.focus == "slaves">>slave<<else>>slaveowner<</if>> centrality.''
 <br>&nbsp;&nbsp;&nbsp;&nbsp;
 <<link "Support the slave centrality">>
-	<<set $nicaeaInfluence -= 1, _nicaeaRollA += 1>>
-	<<if _nicaeaRollA > 0>><<set $nicaeaFocus = "slaves">><</if>>
+	<<set $nicaea.influence -= 1, _nicaea.RollA += 1>>
+	<<if _nicaea.RollA > 0>><<set $nicaea.focus = "slaves">><</if>>
 	<<goto "SE nicaea council">>
 <</link>>
 | <<link "Support the slaveowner centrality">>
-	<<set $nicaeaInfluence -= 1, _nicaeaRollA += 1>>
-	<<if _nicaeaRollA > 0>><<set $nicaeaFocus = "owners">><</if>>
+	<<set $nicaea.influence -= 1, _nicaea.RollA += 1>>
+	<<if _nicaea.RollA > 0>><<set $nicaea.focus = "owners">><</if>>
 	<<goto "SE nicaea council">>
 <</link>>
 
 <br><br>
 On the second question, there are advocates for holy prostitution, sacred public sluts, and pure private harems. Whatever is decided, Chattel Religionism will continue to support and advocate for slaves performing all these roles. This decision will be most important in how it affects Chattel Religionist citizens. The question is whether the creed should encourage free people to patronize slave whores, have sex with public sluts, or purchase and keep their own sex slaves and respect those who have large harems of them? The effectiveness of slaves on the emphasized assignment will be improved.
 <br>&nbsp;&nbsp;&nbsp;&nbsp;
-A majority of the Council currently supports deciding this question in favor of ''<<if $nicaeaAssignment == "whore">>prostitution<<elseif $nicaeaAssignment == "serve the public">>public service<<else>>fucktoy duty<</if>>.''
+A majority of the Council currently supports deciding this question in favor of ''<<if $nicaea.assignment == "whore">>prostitution<<elseif $nicaea.assignment == "serve the public">>public service<<else>>fucktoy duty<</if>>.''
 <br>&nbsp;&nbsp;&nbsp;&nbsp;
 <<link "Support prostitution">>
-	<<set $nicaeaInfluence -= 1, _nicaeaRollB += 1>>
-	<<if _nicaeaRollB > 0>><<set $nicaeaAssignment = "whore">><</if>>
+	<<set $nicaea.influence -= 1, _nicaea.RollB += 1>>
+	<<if _nicaea.RollB > 0>><<set $nicaea.assignment = "whore">><</if>>
 	<<goto "SE nicaea council">>
 <</link>>
 | <<link "Support public service">>
-	<<set $nicaeaInfluence -= 1, _nicaeaRollB += 1>>
-	<<if _nicaeaRollB > 0>><<set $nicaeaAssignment = "serve the public">><</if>>
+	<<set $nicaea.influence -= 1, _nicaea.RollB += 1>>
+	<<if _nicaea.RollB > 0>><<set $nicaea.assignment = "serve the public">><</if>>
 	<<goto "SE nicaea council">>
 <</link>>
 | <<link "Support fucktoy duty">>
-	<<set $nicaeaInfluence -= 1, _nicaeaRollB += 1>>
-	<<if _nicaeaRollB > 0>><<set $nicaeaAssignment = "please you">><</if>>
+	<<set $nicaea.influence -= 1, _nicaea.RollB += 1>>
+	<<if _nicaea.RollB > 0>><<set $nicaea.assignment = "please you">><</if>>
 	<<goto "SE nicaea council">>
 <</link>>
 
 <br><br>
 On the third question, some with seats on the Council think owning sex slaves is the crux of being a good Chattel Religionist, because it gives the slaves the proper and pure experience of sexual slavery. Owning many sex slaves would therefore confer respect. Others believe in good works, and think that trust in slaves is the surest indication of a good slaveowner, and the only proper mark worth looking up to. Finally, and inevitably, some think worshipful slaves are a more appropriate measure of how righteous a slaveowner is.
 <br>&nbsp;&nbsp;&nbsp;&nbsp;
-A majority of the Council currently supports deciding this question in favor of ''<<if $nicaeaAchievement == "slaves">>owning slaves<<else>>$nicaeaAchievement<</if>>.''
+A majority of the Council currently supports deciding this question in favor of ''<<if $nicaea.achievement == "slaves">>owning slaves<<else>>$nicaea.achievement<</if>>.''
 <br>&nbsp;&nbsp;&nbsp;&nbsp;
 <<link "Support owning many slaves">>
-	<<set $nicaeaInfluence -= 1, _nicaeaRollC += 1>>
-	<<if _nicaeaRollC > 0>><<set $nicaeaAchievement = "slaves">><</if>>
+	<<set $nicaea.influence -= 1, _nicaea.RollC += 1>>
+	<<if _nicaea.RollC > 0>><<set $nicaea.achievement = "slaves">><</if>>
 	<<goto "SE nicaea council">>
 <</link>>
 | <<link "Support trust">>
-	<<set $nicaeaInfluence -= 1, _nicaeaRollC += 1>>
-	<<if _nicaeaRollC > 0>><<set $nicaeaAchievement = "trust">><</if>>
+	<<set $nicaea.influence -= 1, _nicaea.RollC += 1>>
+	<<if _nicaea.RollC > 0>><<set $nicaea.achievement = "trust">><</if>>
 	<<goto "SE nicaea council">>
 <</link>>
 | <<link "Support devotion">>
-	<<set $nicaeaInfluence -= 1, _nicaeaRollC += 1>>
-	<<if _nicaeaRollC > 0>><<set $nicaeaAchievement = "devotion">><</if>>
+	<<set $nicaea.influence -= 1, _nicaea.RollC += 1>>
+	<<if _nicaea.RollC > 0>><<set $nicaea.achievement = "devotion">><</if>>
 	<<goto "SE nicaea council">>
 <</link>>
 
 <br><br>
-[[Conclude the Council|SE nicaea council][repX($nicaeaInfluence*10000, "event"), $nicaeaInfluence = 0]] //This will let the currently prevailing views stand, and convert your remaining influence with the Council into general reputation//
+[[Conclude the Council|SE nicaea council][repX($nicaea.influence*10000, "event"), $nicaea.influence = 0]] //This will let the currently prevailing views stand, and convert your remaining influence with the Council into general reputation//
 
 <<else>>
 
 has concluded.
 <br><br>
-The first question was decided in favor of ''the <<if $nicaeaFocus == "slaves">>slave<<else>>slaveowner<</if>> centrality.''
+The first question was decided in favor of ''the <<if $nicaea.focus == "slaves">>slave<<else>>slaveowner<</if>> centrality.''
 <br><br>
-The second question was decided in favor of ''<<if $nicaeaAssignment == "whore">>prostitution<<elseif $nicaeaAssignment == "serve the public">>public service<<else>>fucktoy duty<</if>>.''
+The second question was decided in favor of ''<<if $nicaea.assignment == "whore">>prostitution<<elseif $nicaea.assignment == "serve the public">>public service<<else>>fucktoy duty<</if>>.''
 <br><br>
-The third question was decided in favor of ''<<if $nicaeaAchievement == "slaves">>owning slaves<<else>>$nicaeaAchievement<</if>>.''
+The third question was decided in favor of ''<<if $nicaea.achievement == "slaves">>owning slaves<<else>>$nicaea.achievement<</if>>.''
 <br><br>
 //The creed has now taken effect in $arcologies[0].name. It is effectively a policy. Its impacts can be reviewed from the policy menu, and conformity to the creed can be decided from the policy menu if you decided to change it.//
 
diff --git a/src/uncategorized/seNicaeaPreperation.tw b/src/uncategorized/seNicaeaPreperation.tw
index 6cb571b353caa1e34d1dec07d511e15c64c17f02..74d507a6a953305987473738d8c2824a625b2424 100644
--- a/src/uncategorized/seNicaeaPreperation.tw
+++ b/src/uncategorized/seNicaeaPreperation.tw
@@ -2,11 +2,11 @@
 
 <<if $plot == 1>><<set $nextLink = "Nonrandom Event">><<else>><<set $nextLink = "Random Nonindividual Event">><</if>>
 <<set $nextButton = "Continue">>
-<<set $nicaeaPreparation = 0>>
+<<set $nicaea.preparation = 0>>
 
 <<setAssistantPronouns>>
 
-<<if $nicaeaInvolvement == -1>>
+<<if $nicaea.involvement == -1>>
 
 Your vigorous opposition to a religious council to establish an agreed upon creed for Chattel Religionism has been successful, but not without cost. The furious controversy @@.red;cost you friends and damaged your reputation@@ among those of your religious peers who wanted to see Chattel Religionists draw closer together, and as happens in controversies as heated as this, the influence and reputation you gain from those who agree with you doesn't match what you lose among those who think you're standing in the way of progress. Furthermore, not all of your citizens agreed with you, either. A few citizens of consequence have actually left $arcologies[0].name over it, @@.red;damaging its economic prosperity.@@ Also, Chattel Religionists have had a serious disagreement here for the first time. @@.red;Full acceptance of slaveowning theocracy in your arcology has been set back.@@ A majority of your citizens still approve and participate, but it will take time to rebuild.
 <<set $arcologies[0].prosperity -= 5, $arcologies[0].FSChattelReligionist *= 0.6>>
@@ -16,7 +16,7 @@ But you did win. Chattel Religionism will remain a free and open faith that acce
 
 <<else>>
 
-You have a busy week preparing for the $nicaeaName ahead of you. Planning the event itself is the easy part. Modern arcologies are designed to host big events, and it's not like you don't have a lot of labor available to assist you. Furthermore, one of $assistant.name's standard functions is event planning. _HeA helps manage the thousand details of hosting a group of rich, powerful, opinionated people, letting you focus on the most important matters.
+You have a busy week preparing for the $nicaea.name ahead of you. Planning the event itself is the easy part. Modern arcologies are designed to host big events, and it's not like you don't have a lot of labor available to assist you. Furthermore, one of $assistant.name's standard functions is event planning. _HeA helps manage the thousand details of hosting a group of rich, powerful, opinionated people, letting you focus on the most important matters.
 <<if $HeadGirlID != 0>>
 	<<setLocalPronouns _S.HeadGirl>>
 	_S.HeadGirl.slaveName is also a great help. $He does $his best to supervise your other slaves even more thoroughly than usual, giving you precious time.
@@ -37,7 +37,7 @@ The first major choice you have to make concerns the seats on the Council. There
 <br><<link "Invite Chattel Religionists you agree with">>
 	<<replace "#result">>
 		You do your best to invite Chattel Religionists you hope will agree with you, while trying to keep what you're doing from being too obvious.
-		<<set $nicaeaPower -= 1, $nicaeaInfluence += 1>>
+		<<set $nicaea.power -= 1, $nicaea.influence += 1>>
 	<</replace>>
 <</link>>
 </span>
@@ -55,7 +55,7 @@ Second, you need to decide whether you intend to engage in a canvassing campaign
 <br><<link "Leverage reputation into power">>
 	<<replace "#result2">>
 		This isn't an opportunity that will come again. @@.red;You call in every favor you have.@@ You'll have to rebuild your reputation later.
-		<<set $nicaeaInfluence += 1>>
+		<<set $nicaea.influence += 1>>
 		<<run repX(($rep * 0.5)-$rep, "event")>>
 	<</replace>>
 <</link>> //This will cost a great deal of reputation//
@@ -74,7 +74,7 @@ Finally, you could use money to influence the Council. Everyone who's likely to
 <br><<link "Host a festival to coincide with their arrival">>
 	<<replace "#result3">>
 		Good works will spread the joy of a Chattel Religionist revival, and make you even more influential with the Council. You plan a public festival as part of the event.
-		<<set $nicaeaInfluence += 1>>
+		<<set $nicaea.influence += 1>>
 		<<run cashX(-50000, "event")>>
 	<</replace>>
 <</link>> //This will cost <<print cashFormat(50000)>>//
diff --git a/src/utility/slaveCreationWidgets.tw b/src/utility/slaveCreationWidgets.tw
index 3d3556ed73b40dd046c282e0430e5a6a81c75e55..916ad89f03ad80700b12ecf790a2443d11e26195 100644
--- a/src/utility/slaveCreationWidgets.tw
+++ b/src/utility/slaveCreationWidgets.tw
@@ -666,9 +666,9 @@
 	<<set $activeSlave.trust = 80, $activeSlave.devotion = 80>>
 	<<run setHealth($activeSlave, jsRandom(80,95), 0, 0, 0, 0)>>
 	<<set $activeSlave.origin = "The Job Fulfillment Center offered $his contract to fill your request for a ">>
-	<<set $activeSlave.origin += $Role>>
+	<<set $activeSlave.origin += $JFC.role>>
 	<<set $activeSlave.origin += ".">>
-	<<switch $Role>>
+	<<switch $JFC.role>>
 	/* Opens security */
 		<<case "Lieutenant Colonel">>
 			<<set $activeSlave.devotion = random(96,100), $activeSlave.trust = random(96, 100), $activeSlave.energy = random(96,100), $activeSlave.intelligence = 70, $activeSlave.skill.combat = 1>>
diff --git a/themes/light/01-variables/colors.css b/themes/light/01-variables/colors.css
index f1ccb1ab9141237f246f8a73b4895d096d2808b0..6abc1f7187a93a0f76141a38b1d5d94819a28ee2 100644
--- a/themes/light/01-variables/colors.css
+++ b/themes/light/01-variables/colors.css
@@ -11,8 +11,68 @@
     --button-border-color: #9966cc;
     --button-selected-color: #663399;
     --button-hover-color: #ccb3e6;
-    --button-disabled-color: #80609f;
+    --button-disabled-color: #8c70a9;
 
-    --link-color: #1c377d;
-    --link-hover-color: #2a53bb;
+    --link-color: #2A52B7;
+    --link-hover-color: #446DD5;
 }
+
+.aquamarine, .aquamarine a, .skill, .skill a { color: #008563 }
+.coral, .coral a, .fetish.loss, .fetish.loss a { color: #8a5c2e }
+.cyan, .cyan a, .hotkey { color: #008585 }
+/*
+.darkgoldenrod, .darkgoldenrod a, .trust.extremely-terrified, .trust.extremely-terrified a { color: darkgoldenrod }
+.darkred, .darkred a, .defiant.full, .defiant.full a { color: darkred }
+.darkviolet, .darkviolet a, .devotion.hateful, .devotion.hateful a { color: darkviolet }
+.deeppink, .deeppink a, .devotion.devoted, .devotion.devoted a { color: deeppink }
+.steelblue, .steelblue a { color: steelblue }
+*/
+.deepskyblue, .deepskyblue a, .intelligent, .intelligent a { color: #00B4F0 }
+/*
+.dodgerblue, .dodgerblue a { color: dodgerblue }
+.blue, .blue a { color: blue }
+*/
+.gold, .gold a, .trust.dec, .trust.dec a, .trust.frightened, .trust.frightened a { color: #cc8d00 }
+/*
+.goldenrod, .goldenrod a, .trust.terrified, .trust.terrified a { color: goldenrod }
+.gray, .gray a { color: gray }
+*/
+.green, .green a, .reputation.inc, .reputation.inc a, .improvement, .improvement a, .flaw.break, .flaw.break a, .skill.inc, .skill.inc a, .positive, .positive a { color: #006600 }
+/*
+.hotpink, .hotpink a, .devotion.inc, .devotion.inc a, .devotion.accept, .devotion.accept a { color: hotpink }
+.lawngreen, .lawngreen a { color: lawngreen }
+.lightblue, .lightblue a { color: lightblue }
+*/
+.lightcoral, .lightcoral a, .fetish.gain, .fetish.gain a { color: #B85C00 }
+.lightgreen, .lightgreen a, .relationship, .relationship a { color: #008550 }
+/*
+.lightpink, .lightpink a { color: lightpink }
+.lightsalmon, .lightsalmon a, .fetish.inc, .fetish.inc a { color: lightsalmon }
+.lime, .lime a, .change.positive, .change.positive a, .virginity.loss, .virginity.loss a, .pregnant, .pregnant a { color: lime }
+.limegreen, .limegreen a { color: limegreen }
+.magenta, .magenta a, .devotion.worship, .devotion.worship a { color: magenta }
+*/
+.mediumaquamarine, .mediumaquamarine a, .trust.inc, .trust.inc a, .trust.careful, .trust.careful a { color: #0F6161 }
+/*
+.mediumorchid, .mediumorchid a, .devotion.dec, .devotion.dec a, .devotion.resistant, .devotion.resistant a { color: mediumorchid }
+.mediumseagreen, .mediumseagreen a, .trust.trusting, .trust.trusting a { color: mediumseagreen }
+*/
+.orange, .orange a, .stupid, .stupid a, .change.negative, .change.negative a, .defiant.careful, .defiant.careful a, .intro.question { color: #B85C00 }
+/*
+.orangered, .orangered a, .defiant.inc, .defiant.inc a, .defiant.bold, .defiant.bold, .education.neg a { color: orangered }
+.orchid, .orchid a { color: orchid }
+*/
+.pink, .pink a, .slave.name.simple, .slave-name { color: #E00070 }
+/*
+.red, .red a, .health.dec, .health.dec a, .cash.dec, .cash.dec a, .flaw.gain, .flaw.gain a, .error, .error a, .elites.loss, .elites.loss a, .reputation.dec, .reputation.dec a, .warning, .warning a { color: red }
+.seagreen, .seagreen a, .trust.prof-trusting, .trust.prof-trusting a { color: seagreen }
+.springgreen, .springgreen a, .skill.player, .skill.player a { color: springgreen }
+*/
+.tan, .tan a { color: #846E58 }
+/*
+.chocolate, .chocolate a { color: chocolate }
+.saddlebrown, .saddlebrown a { color: saddlebrown }
+.teal, .teal a { color: teal }
+*/
+.yellow, .yellow a, .noteworthy, .noteworthy a, .devotion.ambivalent, .devotion.ambivalent a, .trust.fearful, .trust.fearful a { color: #cc9600 }
+.yellowgreen, .yellowgreen a, .cash.inc, .cash.inc a, .cash, .cash a { color: #677f1f }
diff --git a/themes/light/02-sugarcube/09-ui-bar.css b/themes/light/02-sugarcube/09-ui-bar.css
index 16b3d0ea5bf623e2dcb9eb95751edc33849f8e50..96f35b7ab046e380355fbeb9575a6cfa6b5e7520 100644
--- a/themes/light/02-sugarcube/09-ui-bar.css
+++ b/themes/light/02-sugarcube/09-ui-bar.css
@@ -30,4 +30,5 @@
 }
 #menu li a:hover {
 	background-color: var(--sidebar-hover-color);
+	text-decoration: none;
 }
diff --git a/themes/light/arcologyBuilding.css b/themes/light/arcologyBuilding.css
index 5cae3dcc760d24fa44cc6abe73ff2cbaf7cc464d..30fc61297c1d7fbf2bba570d3e41a0cea075aa0f 100644
--- a/themes/light/arcologyBuilding.css
+++ b/themes/light/arcologyBuilding.css
@@ -1,6 +1,6 @@
 div.building.basement {
-    border-top-color: #999;
-    background-image: repeating-linear-gradient(135deg, transparent, transparent 20px, #999 20px, #999 30px);
+    border-top-color: #8F8F8F;
+    background-image: repeating-linear-gradient(135deg, transparent, transparent 20px, #8F8F8F 20px, #8F8F8F 30px);
 }
 
 div.building div.innerCell {
@@ -16,3 +16,7 @@ div.building div.decorative {
 .intro div.building a {
     color: var(--text-color);
 }
+
+div.building div.row div.dairy {
+    border-color: saddlebrown;
+}
diff --git a/themes/light/cardStyle.css b/themes/light/cardStyle.css
new file mode 100644
index 0000000000000000000000000000000000000000..982c4fb3d188611176faa71616ac782ae670221d
--- /dev/null
+++ b/themes/light/cardStyle.css
@@ -0,0 +1,6 @@
+div.card {
+	/*border: none;*/
+	border-color: #cccccc;
+	background-color: #e6e6e6;
+	box-shadow: 10px 10px 5px #b3b3b3;
+}
diff --git a/themes/light/quicklinks.css b/themes/light/quicklinks.css
index 1aa56a6a2807153a48b1a51437728f2eeabd6620..791eb85b54db43027dbcded354b1a5d165ec3ef0 100644
--- a/themes/light/quicklinks.css
+++ b/themes/light/quicklinks.css
@@ -11,3 +11,8 @@ div.quick-links div.menu-link {
     border-color: var(--button-border-color);
     box-shadow: var(--button-border-color);
 }
+
+div.quick-links div.notification:not(.category)::after,
+div.quick-links div.category.notification.collapsed > div.toggle::after {
+    content: "\e80b";
+}