diff --git a/devNotes/twine JS.txt b/devNotes/twine JS.txt
index 263d687197f233718597c7d467bd34074cb30839..cfaa2e41b81a9bf0e5b858fc87043e858907a8db 100644
--- a/devNotes/twine JS.txt	
+++ b/devNotes/twine JS.txt	
@@ -3674,6 +3674,167 @@ window.ValidateFacilityDecoration = function ValidateFacilityDecoration(decorati
 	}
 };
 
+window.FSChange = function FSChange(FS, magnitude, bonus_multiplier) {
+	"use strict";
+	const V = State.variables;
+	let errorMessage = "";
+
+	switch (FS) {
+		case "Supremacist":
+			if (Number.isFinite(V.arcologies[0].FSSupremacist)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSSupremacist / V.FSLockinLevel);
+				V.arcologies[0].FSSupremacist += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "Subjugationist":
+			if (Number.isFinite(V.arcologies[0].FSSubjugationist)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSSubjugationist / V.FSLockinLevel);
+				V.arcologies[0].FSSubjugationist += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "GenderRadicalist":
+			if (Number.isFinite(V.arcologies[0].FSGenderRadicalist)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSGenderRadicalist / V.FSLockinLevel);
+				V.arcologies[0].FSGenderRadicalist += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "GenderFundamentalist":
+			if (Number.isFinite(V.arcologies[0].FSGenderFundamentalist)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSGenderFundamentalist / V.FSLockinLevel);
+				V.arcologies[0].FSGenderFundamentalist += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "Paternalist":
+			if (Number.isFinite(V.arcologies[0].FSPaternalist)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSPaternalist / V.FSLockinLevel);
+				V.arcologies[0].FSPaternalist += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "Degradationist":
+			if (Number.isFinite(V.arcologies[0].FSDegradationist)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSDegradationist / V.FSLockinLevel);
+				V.arcologies[0].FSDegradationist += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "AssetExpansionist":
+			if (Number.isFinite(V.arcologies[0].FSAssetExpansionist)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSAssetExpansionist / V.FSLockinLevel);
+				V.arcologies[0].FSAssetExpansionist += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "SlimnessEnthusiast":
+			if (Number.isFinite(V.arcologies[0].FSSlimnessEnthusiast)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSSlimnessEnthusiast / V.FSLockinLevel);
+				V.arcologies[0].FSSlimnessEnthusiast += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "TransformationFetishist":
+			if (Number.isFinite(V.arcologies[0].FSTransformationFetishist)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSTransformationFetishist / V.FSLockinLevel);
+				V.arcologies[0].FSTransformationFetishist += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "BodyPurist":
+			if (Number.isFinite(V.arcologies[0].FSBodyPurist)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSBodyPurist / V.FSLockinLevel);
+				V.arcologies[0].FSBodyPurist += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "MaturityPreferentialist":
+			if (Number.isFinite(V.arcologies[0].FSMaturityPreferentialist)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSMaturityPreferentialist / V.FSLockinLevel);
+				V.arcologies[0].FSMaturityPreferentialist += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "YouthPreferentialist":
+			if (Number.isFinite(V.arcologies[0].FSYouthPreferentialist)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSYouthPreferentialist / V.FSLockinLevel);
+				V.arcologies[0].FSYouthPreferentialist += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "Pastoralist":
+			if (Number.isFinite(V.arcologies[0].FSPastoralist)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSPastoralist / V.FSLockinLevel);
+				V.arcologies[0].FSPastoralist += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "PhysicalIdealist":
+			if (Number.isFinite(V.arcologies[0].FSPhysicalIdealist)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSPhysicalIdealist / V.FSLockinLevel);
+				V.arcologies[0].FSPhysicalIdealist += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "ChattelReligionist":
+			if (Number.isFinite(V.arcologies[0].FSChattelReligionist)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSChattelReligionist / V.FSLockinLevel);
+				V.arcologies[0].FSChattelReligionist += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "RomanRevivalist":
+			if (Number.isFinite(V.arcologies[0].FSRomanRevivalist)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSRomanRevivalist / V.FSLockinLevel);
+				V.arcologies[0].FSRomanRevivalist += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "AztecRevivalist":
+			if (Number.isFinite(V.activeArcology.FSAztecRevivalist)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSAztecRevivalist / V.FSLockinLevel);
+				V.arcologies[0].FSAztecRevivalist += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "EgyptianRevivalist":
+			if (Number.isFinite(V.arcologies[0].FSEgyptianRevivalist)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSEgyptianRevivalist / V.FSLockinLevel);
+				V.arcologies[0].FSEgyptianRevivalist += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "EdoRevivalist":
+			if (Number.isFinite(V.arcologies[0].FSEdoRevivalist)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSEdoRevivalist / V.FSLockinLevel);
+				V.arcologies[0].FSEdoRevivalist += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "ArabianRevivalist":
+			if (Number.isFinite(V.arcologies[0].FSArabianRevivalist)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSArabianRevivalist / V.FSLockinLevel);
+				V.arcologies[0].FSArabianRevivalist += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "ChineseRevivalist":
+			if (Number.isFinite(V.arcologies[0].FSChineseRevivalist)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSChineseRevivalist / V.FSLockinLevel);
+				V.arcologies[0].FSChineseRevivalist += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "Repopulationist":
+			if (Number.isFinite(V.arcologies[0].FSRepopulationFocus)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSRepopulationFocus / V.FSLockinLevel);
+				V.arcologies[0].FSRepopulationFocus += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "Eugenics":
+			if (Number.isFinite(V.arcologies[0].FSRestart)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSRestart / V.FSLockinLevel);
+				V.arcologies[0].FSRestart += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "Hedonism":
+			if (Number.isFinite(V.arcologies[0].FSHedonisticDecadence)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSHedonisticDecadence / V.FSLockinLevel);
+				V.arcologies[0].FSHedonisticDecadence += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		default:
+			errorMessage += "<span class='red'>ERROR: bad FS reference</span>";
+	}
+	return errorMessage;
+};
+
+/* Currently unused, widget version routes directly through FSChange() */
+window.FSChangePorn = function FSChangePorn(FS, magnitude) {
+	return FSChange(FS, magnitude, State.variables.pornFameBonus);
+};
+
 window.ordinalSuffix = function ordinalSuffix(i) {
 	var j = i % 10,
 		k = i % 100;
diff --git a/src/js/utilJS.tw b/src/js/utilJS.tw
index b52094281fa93b7cba001ec00d801b0d2f4fecd9..18549d4aa775c47dcff17da733c7cbd37892327b 100644
--- a/src/js/utilJS.tw
+++ b/src/js/utilJS.tw
@@ -780,6 +780,167 @@ window.ValidateFacilityDecoration = function ValidateFacilityDecoration(decorati
 	}
 };
 
+window.FSChange = function FSChange(FS, magnitude, bonus_multiplier) {
+	"use strict";
+	const V = State.variables;
+	let errorMessage = "";
+
+	switch (FS) {
+		case "Supremacist":
+			if (Number.isFinite(V.arcologies[0].FSSupremacist)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSSupremacist / V.FSLockinLevel);
+				V.arcologies[0].FSSupremacist += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "Subjugationist":
+			if (Number.isFinite(V.arcologies[0].FSSubjugationist)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSSubjugationist / V.FSLockinLevel);
+				V.arcologies[0].FSSubjugationist += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "GenderRadicalist":
+			if (Number.isFinite(V.arcologies[0].FSGenderRadicalist)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSGenderRadicalist / V.FSLockinLevel);
+				V.arcologies[0].FSGenderRadicalist += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "GenderFundamentalist":
+			if (Number.isFinite(V.arcologies[0].FSGenderFundamentalist)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSGenderFundamentalist / V.FSLockinLevel);
+				V.arcologies[0].FSGenderFundamentalist += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "Paternalist":
+			if (Number.isFinite(V.arcologies[0].FSPaternalist)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSPaternalist / V.FSLockinLevel);
+				V.arcologies[0].FSPaternalist += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "Degradationist":
+			if (Number.isFinite(V.arcologies[0].FSDegradationist)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSDegradationist / V.FSLockinLevel);
+				V.arcologies[0].FSDegradationist += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "AssetExpansionist":
+			if (Number.isFinite(V.arcologies[0].FSAssetExpansionist)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSAssetExpansionist / V.FSLockinLevel);
+				V.arcologies[0].FSAssetExpansionist += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "SlimnessEnthusiast":
+			if (Number.isFinite(V.arcologies[0].FSSlimnessEnthusiast)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSSlimnessEnthusiast / V.FSLockinLevel);
+				V.arcologies[0].FSSlimnessEnthusiast += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "TransformationFetishist":
+			if (Number.isFinite(V.arcologies[0].FSTransformationFetishist)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSTransformationFetishist / V.FSLockinLevel);
+				V.arcologies[0].FSTransformationFetishist += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "BodyPurist":
+			if (Number.isFinite(V.arcologies[0].FSBodyPurist)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSBodyPurist / V.FSLockinLevel);
+				V.arcologies[0].FSBodyPurist += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "MaturityPreferentialist":
+			if (Number.isFinite(V.arcologies[0].FSMaturityPreferentialist)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSMaturityPreferentialist / V.FSLockinLevel);
+				V.arcologies[0].FSMaturityPreferentialist += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "YouthPreferentialist":
+			if (Number.isFinite(V.arcologies[0].FSYouthPreferentialist)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSYouthPreferentialist / V.FSLockinLevel);
+				V.arcologies[0].FSYouthPreferentialist += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "Pastoralist":
+			if (Number.isFinite(V.arcologies[0].FSPastoralist)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSPastoralist / V.FSLockinLevel);
+				V.arcologies[0].FSPastoralist += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "PhysicalIdealist":
+			if (Number.isFinite(V.arcologies[0].FSPhysicalIdealist)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSPhysicalIdealist / V.FSLockinLevel);
+				V.arcologies[0].FSPhysicalIdealist += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "ChattelReligionist":
+			if (Number.isFinite(V.arcologies[0].FSChattelReligionist)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSChattelReligionist / V.FSLockinLevel);
+				V.arcologies[0].FSChattelReligionist += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "RomanRevivalist":
+			if (Number.isFinite(V.arcologies[0].FSRomanRevivalist)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSRomanRevivalist / V.FSLockinLevel);
+				V.arcologies[0].FSRomanRevivalist += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "AztecRevivalist":
+			if (Number.isFinite(V.activeArcology.FSAztecRevivalist)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSAztecRevivalist / V.FSLockinLevel);
+				V.arcologies[0].FSAztecRevivalist += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "EgyptianRevivalist":
+			if (Number.isFinite(V.arcologies[0].FSEgyptianRevivalist)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSEgyptianRevivalist / V.FSLockinLevel);
+				V.arcologies[0].FSEgyptianRevivalist += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "EdoRevivalist":
+			if (Number.isFinite(V.arcologies[0].FSEdoRevivalist)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSEdoRevivalist / V.FSLockinLevel);
+				V.arcologies[0].FSEdoRevivalist += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "ArabianRevivalist":
+			if (Number.isFinite(V.arcologies[0].FSArabianRevivalist)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSArabianRevivalist / V.FSLockinLevel);
+				V.arcologies[0].FSArabianRevivalist += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "ChineseRevivalist":
+			if (Number.isFinite(V.arcologies[0].FSChineseRevivalist)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSChineseRevivalist / V.FSLockinLevel);
+				V.arcologies[0].FSChineseRevivalist += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "Repopulationist":
+			if (Number.isFinite(V.arcologies[0].FSRepopulationFocus)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSRepopulationFocus / V.FSLockinLevel);
+				V.arcologies[0].FSRepopulationFocus += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "Eugenics":
+			if (Number.isFinite(V.arcologies[0].FSRestart)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSRestart / V.FSLockinLevel);
+				V.arcologies[0].FSRestart += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		case "Hedonism":
+			if (Number.isFinite(V.arcologies[0].FSHedonisticDecadence)) {
+				V.rep += magnitude * V.FSSingleSlaveRep * (V.arcologies[0].FSHedonisticDecadence / V.FSLockinLevel);
+				V.arcologies[0].FSHedonisticDecadence += 0.05 * magnitude * V.FSSingleSlaveRep * (bonus_multiplier || 1);
+			}
+			break;
+		default:
+			errorMessage += "<span class='red'>ERROR: bad FS reference</span>";
+	}
+	return errorMessage;
+};
+
+/* Currently unused, widget version routes directly through FSChange() */
+window.FSChangePorn = function FSChangePorn(FS, magnitude) {
+	return FSChange(FS, magnitude, State.variables.pornFameBonus);
+};
+
 window.ordinalSuffix = function ordinalSuffix(i) {
 	var j = i % 10,
 		k = i % 100;
diff --git a/src/utility/miscWidgets.tw b/src/utility/miscWidgets.tw
index c0ffc48d7b1690fee8e60974f4665a5d50214171..af9d7fe1eb1bdb73233537e9b5e7bd7614358347 100644
--- a/src/utility/miscWidgets.tw
+++ b/src/utility/miscWidgets.tw
@@ -757,131 +757,7 @@ This experience
  $args[2]: Bonus multiplier. (Optional)
  %/
 <<widget "FSChange">>
-<<switch $args[0]>>
-<<case "Supremacist">>
-	<<if Number.isFinite($arcologies[0].FSSupremacist)>>
-		<<set $rep += $args[1]*$FSSingleSlaveRep*($arcologies[0].FSSupremacist/$FSLockinLevel)>>
-		<<set $arcologies[0].FSSupremacist += 0.05*$args[1]*$FSSingleSlaveRep*($args[2] || 1)>>
-	<</if>>
-<<case "Subjugationist">>
-	<<if Number.isFinite($arcologies[0].FSSubjugationist)>>
-		<<set $rep += $args[1]*$FSSingleSlaveRep*($arcologies[0].FSSubjugationist/$FSLockinLevel)>>
-		<<set $arcologies[0].FSSubjugationist += 0.05*$args[1]*$FSSingleSlaveRep*($args[2] || 1)>>
-	<</if>>
-<<case "GenderRadicalist">>
-	<<if Number.isFinite($arcologies[0].FSGenderRadicalist)>>
-		<<set $rep += $args[1]*$FSSingleSlaveRep*($arcologies[0].FSGenderRadicalist/$FSLockinLevel)>>
-		<<set $arcologies[0].FSGenderRadicalist += 0.05*$args[1]*$FSSingleSlaveRep*($args[2] || 1)>>
-	<</if>>
-<<case "GenderFundamentalist">>
-	<<if Number.isFinite($arcologies[0].FSGenderFundamentalist)>>
-		<<set $rep += $args[1]*$FSSingleSlaveRep*($arcologies[0].FSGenderFundamentalist/$FSLockinLevel)>>
-		<<set $arcologies[0].FSGenderFundamentalist += 0.05*$args[1]*$FSSingleSlaveRep*($args[2] || 1)>>
-	<</if>>
-<<case "Paternalist">>
-	<<if Number.isFinite($arcologies[0].FSPaternalist)>>
-		<<set $rep += $args[1]*$FSSingleSlaveRep*($arcologies[0].FSPaternalist/$FSLockinLevel)>>
-		<<set $arcologies[0].FSPaternalist += 0.05*$args[1]*$FSSingleSlaveRep*($args[2] || 1)>>
-	<</if>>
-<<case "Degradationist">>
-	<<if Number.isFinite($arcologies[0].FSDegradationist)>>
-		<<set $rep += $args[1]*$FSSingleSlaveRep*($arcologies[0].FSDegradationist/$FSLockinLevel)>>
-		<<set $arcologies[0].FSDegradationist += 0.05*$args[1]*$FSSingleSlaveRep*($args[2] || 1)>>
-	<</if>>
-<<case "AssetExpansionist">>
-	<<if Number.isFinite($arcologies[0].FSAssetExpansionist)>>
-		<<set $rep += $args[1]*$FSSingleSlaveRep*($arcologies[0].FSAssetExpansionist/$FSLockinLevel)>>
-		<<set $arcologies[0].FSAssetExpansionist += 0.05*$args[1]*$FSSingleSlaveRep*($args[2] || 1)>>
-	<</if>>
-<<case "SlimnessEnthusiast">>
-	<<if Number.isFinite($arcologies[0].FSSlimnessEnthusiast)>>
-		<<set $rep += $args[1]*$FSSingleSlaveRep*($arcologies[0].FSSlimnessEnthusiast/$FSLockinLevel)>>
-		<<set $arcologies[0].FSSlimnessEnthusiast += 0.05*$args[1]*$FSSingleSlaveRep*($args[2] || 1)>>
-	<</if>>
-<<case "TransformationFetishist">>
-	<<if Number.isFinite($arcologies[0].FSTransformationFetishist)>>
-		<<set $rep += $args[1]*$FSSingleSlaveRep*($arcologies[0].FSTransformationFetishist/$FSLockinLevel)>>
-		<<set $arcologies[0].FSTransformationFetishist += 0.05*$args[1]*$FSSingleSlaveRep*($args[2] || 1)>>
-	<</if>>
-<<case "BodyPurist">>
-	<<if Number.isFinite($arcologies[0].FSBodyPurist)>>
-		<<set $rep += $args[1]*$FSSingleSlaveRep*($arcologies[0].FSBodyPurist/$FSLockinLevel)>>
-		<<set $arcologies[0].FSBodyPurist += 0.05*$args[1]*$FSSingleSlaveRep*($args[2] || 1)>>
-	<</if>>
-<<case "MaturityPreferentialist">>
-	<<if Number.isFinite($arcologies[0].FSMaturityPreferentialist)>>
-		<<set $rep += $args[1]*$FSSingleSlaveRep*($arcologies[0].FSMaturityPreferentialist/$FSLockinLevel)>>
-		<<set $arcologies[0].FSMaturityPreferentialist += 0.05*$args[1]*$FSSingleSlaveRep*($args[2] || 1)>>
-	<</if>>
-<<case "YouthPreferentialist">>
-	<<if Number.isFinite($arcologies[0].FSYouthPreferentialist)>>
-		<<set $rep += $args[1]*$FSSingleSlaveRep*($arcologies[0].FSYouthPreferentialist/$FSLockinLevel)>>
-		<<set $arcologies[0].FSYouthPreferentialist += 0.05*$args[1]*$FSSingleSlaveRep*($args[2] || 1)>>
-	<</if>>
-<<case "Pastoralist">>
-	<<if Number.isFinite($arcologies[0].FSPastoralist)>>
-		<<set $rep += $args[1]*$FSSingleSlaveRep*($arcologies[0].FSPastoralist/$FSLockinLevel)>>
-		<<set $arcologies[0].FSPastoralist += 0.05*$args[1]*$FSSingleSlaveRep*($args[2] || 1)>>
-	<</if>>
-<<case "PhysicalIdealist">>
-	<<if Number.isFinite($arcologies[0].FSPhysicalIdealist)>>
-		<<set $rep += $args[1]*$FSSingleSlaveRep*($arcologies[0].FSPhysicalIdealist/$FSLockinLevel)>>
-		<<set $arcologies[0].FSPhysicalIdealist += 0.05*$args[1]*$FSSingleSlaveRep*($args[2] || 1)>>
-	<</if>>
-<<case "ChattelReligionist">>
-	<<if Number.isFinite($arcologies[0].FSChattelReligionist)>>
-		<<set $rep += $args[1]*$FSSingleSlaveRep*($arcologies[0].FSChattelReligionist/$FSLockinLevel)>>
-		<<set $arcologies[0].FSChattelReligionist += 0.05*$args[1]*$FSSingleSlaveRep*($args[2] || 1)>>
-	<</if>>
-<<case "RomanRevivalist">>
-	<<if Number.isFinite($arcologies[0].FSRomanRevivalist)>>
-		<<set $rep += $args[1]*$FSSingleSlaveRep*($arcologies[0].FSRomanRevivalist/$FSLockinLevel)>>
-		<<set $arcologies[0].FSRomanRevivalist += 0.05*$args[1]*$FSSingleSlaveRep*($args[2] || 1)>>
-	<</if>>
-<<case "AztecRevivalist">>
-	<<if Number.isFinite($activeArcology.FSAztecRevivalist)>>
-		<<set $rep += $args[1]*$FSSingleSlaveRep*($arcologies[0].FSAztecRevivalist/$FSLockinLevel)>>
-		<<set $arcologies[0].FSAztecRevivalist += 0.05*$args[1]*$FSSingleSlaveRep*($args[2] || 1)>>
-	<</if>>
-<<case "EgyptianRevivalist">>
-	<<if Number.isFinite($arcologies[0].FSEgyptianRevivalist)>>
-		<<set $rep += $args[1]*$FSSingleSlaveRep*($arcologies[0].FSEgyptianRevivalist/$FSLockinLevel)>>
-		<<set $arcologies[0].FSEgyptianRevivalist += 0.05*$args[1]*$FSSingleSlaveRep*($args[2] || 1)>>
-	<</if>>
-<<case "EdoRevivalist">>
-	<<if Number.isFinite($arcologies[0].FSEdoRevivalist)>>
-		<<set $rep += $args[1]*$FSSingleSlaveRep*($arcologies[0].FSEdoRevivalist/$FSLockinLevel)>>
-		<<set $arcologies[0].FSEdoRevivalist += 0.05*$args[1]*$FSSingleSlaveRep*($args[2] || 1)>>
-	<</if>>
-<<case "ArabianRevivalist">>
-	<<if Number.isFinite($arcologies[0].FSArabianRevivalist)>>
-		<<set $rep += $args[1]*$FSSingleSlaveRep*($arcologies[0].FSArabianRevivalist/$FSLockinLevel)>>
-		<<set $arcologies[0].FSArabianRevivalist += 0.05*$args[1]*$FSSingleSlaveRep*($args[2] || 1)>>
-	<</if>>
-<<case "ChineseRevivalist">>
-	<<if Number.isFinite($arcologies[0].FSChineseRevivalist)>>
-		<<set $rep += $args[1]*$FSSingleSlaveRep*($arcologies[0].FSChineseRevivalist/$FSLockinLevel)>>
-		<<set $arcologies[0].FSChineseRevivalist += 0.05*$args[1]*$FSSingleSlaveRep*($args[2] || 1)>>
-	<</if>>
-<<case "Repopulationist">>
-	<<if Number.isFinite($arcologies[0].FSRepopulationFocus)>>
-		<<set $rep += $args[1]*$FSSingleSlaveRep*($arcologies[0].FSRepopulationFocus/$FSLockinLevel)>>
-		<<set $arcologies[0].FSRepopulationFocus += 0.05*$args[1]*$FSSingleSlaveRep*($args[2] || 1)>>
-	<</if>>
-<<case "Eugenics">>
-	<<if Number.isFinite($arcologies[0].FSRestart)>>
-		<<set $rep += $args[1]*$FSSingleSlaveRep*($arcologies[0].FSRestart/$FSLockinLevel)>>
-		<<set $arcologies[0].FSRestart += 0.05*$args[1]*$FSSingleSlaveRep*($args[2] || 1)>>
-	<</if>>
-<<case "Hedonism">>
-	<<if Number.isFinite($arcologies[0].FSHedonisticDecadence)>>
-		<<set $rep += $args[1]*$FSSingleSlaveRep*($arcologies[0].FSHedonisticDecadence/$FSLockinLevel)>>
-		<<set $arcologies[0].FSHedonisticDecadence += 0.05*$args[1]*$FSSingleSlaveRep*($args[2] || 1)>>
-	<</if>>
-<<default>>
-	@@.red;ERROR: bad FS reference $args[0]@@
-<</switch>>
-
+	<<= FSChange($args[0], $args[1], $args[2])>>
 <</widget>>
 
 /%
@@ -890,9 +766,7 @@ This experience
  $args[1]: Magnitude.
 %/
 <<widget "FSChangePorn">>
-
-<<FSChange $args[0] $args[1] $pornFameBonus>>
-
+	<<= FSChange($args[0], $args[1], $pornFameBonus)>>
 <</widget>>
 
 /* Called as <<FSChangeDecoration "FSName" "clothesBoughtFSClothes">>, will generate description of current decoration level and a link to increase it if applicable, quotes are needed to pass FSName as reference - DO NOT INCLUDE IT AS PROPERTY OF $arcologies[0]! */