diff --git a/src/endWeek/saGetMilked.js b/src/endWeek/saGetMilked.js
index 1bef5b03cfae8bf73f6760523dced021239e3421..85876b9935cfac41f0037d3c3169eec686a75eea 100644
--- a/src/endWeek/saGetMilked.js
+++ b/src/endWeek/saGetMilked.js
@@ -901,94 +901,7 @@ App.SlaveAssignment.getMilked = (function() {
 
 	// FACILITY DECORATION IMPACTS
 	function applyFSDecoration() {
-		if (V.dairyDecoration !== "standard") {
-			let fsGain = Math.min(0.0001 * V.FSSingleSlaveRep * (milk + (5 * cum)), 1);
-			switch (V.dairyDecoration) {
-				case "Roman Revivalist":
-					arcology.FSRomanRevivalist = Math.clamp(arcology.FSRomanRevivalist += fsGain, 0, 100);
-					break;
-				case "Aztec Revivalist":
-					arcology.FSAztecRevivalist = Math.clamp(arcology.FSAztecRevivalist += fsGain, 0, 100);
-					break;
-				case "Egyptian Revivalist":
-					arcology.FSEgyptianRevivalist = Math.clamp(arcology.FSEgyptianRevivalist += fsGain, 0, 100);
-					break;
-				case "Edo Revivalist":
-					arcology.FSEdoRevivalist = Math.clamp(arcology.FSEdoRevivalist += fsGain, 0, 100);
-					break;
-				case "Arabian Revivalist":
-					arcology.FSArabianRevivalist = Math.clamp(arcology.FSArabianRevivalist += fsGain, 0, 100);
-					break;
-				case "Chinese Revivalist":
-					arcology.FSChineseRevivalist = Math.clamp(arcology.FSChineseRevivalist += fsGain, 0, 100);
-					break;
-				case "Chattel Religionist":
-					arcology.FSChattelReligionist = Math.clamp(arcology.FSChattelReligionist += fsGain, 0, 100);
-					break;
-				case "Degradationist":
-					arcology.FSDegradationist = Math.clamp(arcology.FSDegradationist += fsGain, 0, 100);
-					break;
-				case "Repopulation Focus":
-					arcology.FSRepopulationFocus = Math.clamp(arcology.FSRepopulationFocus += fsGain, 0, 100);
-					break;
-				case "Eugenics":
-					arcology.FSRestart = Math.clamp(arcology.FSRestart += fsGain, 0, 100);
-					break;
-				case "Asset Expansionist":
-					arcology.FSAssetExpansionist = Math.clamp(arcology.FSAssetExpansionist += fsGain, 0, 100);
-					break;
-				case "Transformation Fetishist":
-					arcology.FSTransformationFetishist = Math.clamp(arcology.FSTransformationFetishist += fsGain, 0, 100);
-					break;
-				case "Gender Radicalist":
-					arcology.FSGenderRadicalist = Math.clamp(arcology.FSGenderRadicalist += fsGain, 0, 100);
-					break;
-				case "Gender Fundamentalist":
-					arcology.FSGenderFundamentalist = Math.clamp(arcology.FSGenderFundamentalist += fsGain, 0, 100);
-					break;
-				case "Physical Idealist":
-					arcology.FSPhysicalIdealist = Math.clamp(arcology.FSPhysicalIdealist += fsGain, 0, 100);
-					break;
-				case "Hedonistic":
-					arcology.FSHedonisticDecadence = Math.clamp(arcology.FSHedonisticDecadence += fsGain, 0, 100);
-					break;
-				case "Supremacist":
-					arcology.FSSupremacist = Math.clamp(arcology.FSSupremacist += fsGain, 0, 100);
-					break;
-				case "Subjugationist":
-					arcology.FSSubjugationist = Math.clamp(arcology.FSSubjugationist += fsGain, 0, 100);
-					break;
-				case "Paternalist":
-					arcology.FSPaternalist = Math.clamp(arcology.FSPaternalist += fsGain, 0, 100);
-					break;
-				case "Pastoralist":
-					arcology.FSPastoralist = Math.clamp(arcology.FSPastoralist += fsGain, 0, 100);
-					break;
-				case "Maturity Preferentialist":
-					arcology.FSMaturityPreferentialist = Math.clamp(arcology.FSMaturityPreferentialist += fsGain, 0, 100);
-					break;
-				case "Youth Preferentialist":
-					arcology.FSYouthPreferentialist = Math.clamp(arcology.FSYouthPreferentialist += fsGain, 0, 100);
-					break;
-				case "Body Purist":
-					arcology.FSBodyPurist = Math.clamp(arcology.FSBodyPurist += fsGain, 0, 100);
-					break;
-				case "Slimness Enthusiast":
-					arcology.FSSlimnessEnthusiast = Math.clamp(arcology.FSSlimnessEnthusiast += fsGain, 0, 100);
-					break;
-				case "Slave Professionalism":
-					arcology.FSSlaveProfessionalism = Math.clamp(arcology.FSSlaveProfessionalism += fsGain, 0, 100);
-					break;
-				case "Intellectual Dependency":
-					arcology.FSIntellectualDependency = Math.clamp(arcology.FSIntellectualDependency += fsGain, 0, 100);
-					break;
-				case "Petite Admiration":
-					arcology.FSPetiteAdmiration = Math.clamp(arcology.FSPetiteAdmiration += fsGain, 0, 100);
-					break;
-				case "Statuesque Glorification":
-					arcology.FSStatuesqueGlorification = Math.clamp(arcology.FSStatuesqueGlorification += fsGain, 0, 100);
-					break;
-			}
-		}
+		const fsGain = 0.0001 * (milk + (5 * cum));
+		FutureSocieties.DecorationBonus(V.dairyDecoration, fsGain);
 	}
 })();
diff --git a/src/endWeek/saServeThePublic.js b/src/endWeek/saServeThePublic.js
index b375f8295923506ae842a94095021e3aef21b82d..8c9154842949a567c4682d988f682d3d3ee6b23d 100644
--- a/src/endWeek/saServeThePublic.js
+++ b/src/endWeek/saServeThePublic.js
@@ -1260,94 +1260,8 @@ App.SlaveAssignment.serveThePublic = (function() {
 	 *
 	 */
 	function applyFSDecoration(slave) {
-		/* FACILITY DECORATION IMPACTS */
-		const fsBeauty = (0.0005 * V.FSSingleSlaveRep * slave.sexAmount);
-		switch (V.clubDecoration) {
-			case "Roman Revivalist":
-				arcology.FSRomanRevivalist += fsBeauty;
-				break;
-			case "Aztec Revivalist":
-				arcology.FSAztecRevivalist += fsBeauty;
-				break;
-			case "Egyptian Revivalist":
-				arcology.FSEgyptianRevivalist += fsBeauty;
-				break;
-			case "Edo Revivalist":
-				arcology.FSEdoRevivalist += fsBeauty;
-				break;
-			case "Arabian Revivalist":
-				arcology.FSArabianRevivalist += fsBeauty;
-				break;
-			case "Chinese Revivalist":
-				arcology.FSChineseRevivalist += fsBeauty;
-				break;
-			case "Chattel Religionist":
-				arcology.FSChattelReligionist += fsBeauty;
-				break;
-			case "Degradationist":
-				arcology.FSDegradationist += fsBeauty;
-				break;
-			case "Asset Expansionist":
-				arcology.FSAssetExpansionist += fsBeauty;
-				break;
-			case "Transformation Fetishist":
-				arcology.FSTransformationFetishist += fsBeauty;
-				break;
-			case "Gender Radicalist":
-				arcology.FSGenderRadicalist += fsBeauty;
-				break;
-			case "Repopulation Focus":
-				arcology.FSRepopulationFocus += fsBeauty;
-				break;
-			case "Eugenics":
-				arcology.FSRestart += fsBeauty;
-				break;
-			case "Gender Fundamentalist":
-				arcology.FSGenderFundamentalist += fsBeauty;
-				break;
-			case "Physical Idealist":
-				arcology.FSPhysicalIdealist += fsBeauty;
-				break;
-			case "Hedonistic":
-				arcology.FSHedonisticDecadence += fsBeauty;
-				break;
-			case "Supremacist":
-				arcology.FSSupremacist += fsBeauty;
-				break;
-			case "Subjugationist":
-				arcology.FSSubjugationist += fsBeauty;
-				break;
-			case "Paternalist":
-				arcology.FSPaternalist += fsBeauty;
-				break;
-			case "Pastoralist":
-				arcology.FSPastoralist += fsBeauty;
-				break;
-			case "Maturity Preferentialist":
-				arcology.FSMaturityPreferentialist += fsBeauty;
-				break;
-			case "Youth Preferentialist":
-				arcology.FSYouthPreferentialist += fsBeauty;
-				break;
-			case "Body Purist":
-				arcology.FSBodyPurist += fsBeauty;
-				break;
-			case "Slimness Enthusiast":
-				arcology.FSSlimnessEnthusiast += fsBeauty;
-				break;
-			case "Slave Professionalism":
-				arcology.FSSlaveProfessionalism += fsBeauty;
-				break;
-			case "Intellectual Dependency":
-				arcology.FSIntellectualDependency += fsBeauty;
-				break;
-			case "Petite Admiration":
-				arcology.FSPetiteAdmiration += fsBeauty;
-				break;
-			case "Statuesque Glorification":
-				arcology.FSStatuesqueGlorification += fsBeauty;
-				break;
-		}
+		const fsBeauty = 0.0005 * slave.sexAmount;
+		FutureSocieties.DecorationBonus(V.clubDecoration, fsBeauty);
 	}
 
 	/**
diff --git a/src/endWeek/saWhore.js b/src/endWeek/saWhore.js
index 36289d69324cf059c4859ce9c1d4c650d139d53a..8b278a575e52119b285bccb81cadf7626608882f 100644
--- a/src/endWeek/saWhore.js
+++ b/src/endWeek/saWhore.js
@@ -1334,93 +1334,8 @@ App.SlaveAssignment.whore = (function() {
 	 */
 	function applyFSDecoration() {
 		/* FACILITY DECORATION IMPACTS */
-		const fsBeauty = (0.0005 * V.FSSingleSlaveRep * beauty);
-		switch (V.brothelDecoration) {
-			case "Roman Revivalist":
-				arcology.FSRomanRevivalist += fsBeauty;
-				break;
-			case "Aztec Revivalist":
-				arcology.FSAztecRevivalist += fsBeauty;
-				break;
-			case "Egyptian Revivalist":
-				arcology.FSEgyptianRevivalist += fsBeauty;
-				break;
-			case "Edo Revivalist":
-				arcology.FSEdoRevivalist += fsBeauty;
-				break;
-			case "Arabian Revivalist":
-				arcology.FSArabianRevivalist += fsBeauty;
-				break;
-			case "Chinese Revivalist":
-				arcology.FSChineseRevivalist += fsBeauty;
-				break;
-			case "Chattel Religionist":
-				arcology.FSChattelReligionist += fsBeauty;
-				break;
-			case "Degradationist":
-				arcology.FSDegradationist += fsBeauty;
-				break;
-			case "Asset Expansionist":
-				arcology.FSAssetExpansionist += fsBeauty;
-				break;
-			case "Transformation Fetishist":
-				arcology.FSTransformationFetishist += fsBeauty;
-				break;
-			case "Gender Radicalist":
-				arcology.FSGenderRadicalist += fsBeauty;
-				break;
-			case "Repopulation Focus":
-				arcology.FSRepopulationFocus += fsBeauty;
-				break;
-			case "Eugenics":
-				arcology.FSRestart += fsBeauty;
-				break;
-			case "Gender Fundamentalist":
-				arcology.FSGenderFundamentalist += fsBeauty;
-				break;
-			case "Physical Idealist":
-				arcology.FSPhysicalIdealist += fsBeauty;
-				break;
-			case "Hedonistic":
-				arcology.FSHedonisticDecadence += fsBeauty;
-				break;
-			case "Supremacist":
-				arcology.FSSupremacist += fsBeauty;
-				break;
-			case "Subjugationist":
-				arcology.FSSubjugationist += fsBeauty;
-				break;
-			case "Paternalist":
-				arcology.FSPaternalist += fsBeauty;
-				break;
-			case "Pastoralist":
-				arcology.FSPastoralist += fsBeauty;
-				break;
-			case "Maturity Preferentialist":
-				arcology.FSMaturityPreferentialist += fsBeauty;
-				break;
-			case "Youth Preferentialist":
-				arcology.FSYouthPreferentialist += fsBeauty;
-				break;
-			case "Body Purist":
-				arcology.FSBodyPurist += fsBeauty;
-				break;
-			case "Slimness Enthusiast":
-				arcology.FSSlimnessEnthusiast += fsBeauty;
-				break;
-			case "Slave Professionalism":
-				arcology.FSSlaveProfessionalism += fsBeauty;
-				break;
-			case "Intellectual Dependency":
-				arcology.FSIntellectualDependency += fsBeauty;
-				break;
-			case "Petite Admiration":
-				arcology.FSPetiteAdmiration += fsBeauty;
-				break;
-			case "Statuesque Glorification":
-				arcology.FSStatuesqueGlorification += fsBeauty;
-				break;
-		}
+		const fsBeauty = 0.0005 * beauty;
+		FutureSocieties.DecorationBonus(V.brothelDecoration, fsBeauty);
 	}
 
 	/**
diff --git a/src/endWeek/saWorkAGloryHole.js b/src/endWeek/saWorkAGloryHole.js
index 4a5dacf8093322fff3e13b6ce70b854005141f3a..18eebdd88eec4f52b8a45c49dd04e9ec44b0824e 100644
--- a/src/endWeek/saWorkAGloryHole.js
+++ b/src/endWeek/saWorkAGloryHole.js
@@ -309,95 +309,9 @@ App.SlaveAssignment.workAGloryHole = (function() {
 	 *
 	 */
 	function applyFSDecoration(slave) {
-		/* FACILITY DECORATION IMPACTS */
-		if (slave.assignment === window.Job.ARCADE && V.arcadeDecoration !== "standard") {
-			const impact = (0.0001 * V.FSSingleSlaveRep * beauty);
-			switch (V.arcadeDecoration) {
-				case "Roman Revivalist":
-					V.arcologies[0].FSRomanRevivalist += impact;
-					break;
-				case "Aztec Revivalist":
-					V.arcologies[0].FSAztecRevivalist += impact;
-					break;
-				case "Egyptian Revivalist":
-					V.arcologies[0].FSEgyptianRevivalist += impact;
-					break;
-				case "Edo Revivalist":
-					V.arcologies[0].FSEdoRevivalist += impact;
-					break;
-				case "Arabian Revivalist":
-					V.arcologies[0].FSArabianRevivalist += impact;
-					break;
-				case "Chinese Revivalist":
-					V.arcologies[0].FSChineseRevivalist += impact;
-					break;
-				case "Repopulation Focus":
-					V.arcologies[0].FSRepopulationFocus += impact;
-					break;
-				case "Eugenics":
-					V.arcologies[0].FSRestart += impact;
-					break;
-				case "Chattel Religionist":
-					V.arcologies[0].FSChattelReligionist += impact;
-					break;
-				case "Degradationist":
-					V.arcologies[0].FSDegradationist += impact;
-					break;
-				case "Asset Expansionist":
-					V.arcologies[0].FSAssetExpansionist += impact;
-					break;
-				case "Transformation Fetishist":
-					V.arcologies[0].FSTransformationFetishist += impact;
-					break;
-				case "Gender Radicalist":
-					V.arcologies[0].FSGenderRadicalist += impact;
-					break;
-				case "Gender Fundamentalist":
-					V.arcologies[0].FSGenderFundamentalist += impact;
-					break;
-				case "Physical Idealist":
-					V.arcologies[0].FSPhysicalIdealist += impact;
-					break;
-				case "Hedonistic":
-					V.arcologies[0].FSHedonisticDecadence += impact;
-					break;
-				case "Supremacist":
-					V.arcologies[0].FSSupremacist += impact;
-					break;
-				case "Subjugationist":
-					V.arcologies[0].FSSubjugationist += impact;
-					break;
-				case "Paternalist":
-					V.arcologies[0].FSPaternalist += impact;
-					break;
-				case "Pastoralist":
-					V.arcologies[0].FSPastoralist += impact;
-					break;
-				case "Maturity Preferentialist":
-					V.arcologies[0].FSMaturityPreferentialist += impact;
-					break;
-				case "Youth Preferentialist":
-					V.arcologies[0].FSYouthPreferentialist += impact;
-					break;
-				case "Body Purist":
-					V.arcologies[0].FSBodyPurist += impact;
-					break;
-				case "Slimness Enthusiast":
-					V.arcologies[0].FSSlimnessEnthusiast += impact;
-					break;
-				case "Slave Professionalism":
-					V.arcologies[0].FSSlaveProfessionalism += impact;
-					break;
-				case "Intellectual Dependency":
-					V.arcologies[0].FSIntellectualDependency += impact;
-					break;
-				case "Petite Admiration":
-					V.arcologies[0].FSPetiteAdmiration += impact;
-					break;
-				case "Statuesque Glorification":
-					V.arcologies[0].FSStatuesqueGlorification += impact;
-					break;
-			}
+		if (slave.assignment === Job.ARCADE) {
+			const impact = (0.0001 * beauty);
+			FutureSocieties.DecorationBonus(V.arcadeDecoration, impact);
 		}
 	}
 
diff --git a/src/endWeek/saWorkTheFarm.js b/src/endWeek/saWorkTheFarm.js
index 14a9f87f1e26063fdc2d28cd50662a26851d458c..274cfd76de013a243bc21773a4a585672bae33dd 100644
--- a/src/endWeek/saWorkTheFarm.js
+++ b/src/endWeek/saWorkTheFarm.js
@@ -558,96 +558,9 @@ App.SlaveAssignment.workTheFarm = function(slave) {
 
 	// Close Vignettes
 
-	// Open Facility Decorations
-
-	if (V.farmyardDecoration !== "standard") {
-		const fsGain = Math.min(0.0001 * V.FSSingleSlaveRep * (food), 1);
-		switch (V.farmyardDecoration) {
-			case "Roman Revivalist":
-				arcology.FSRomanRevivalist = Math.clamp(arcology.FSRomanRevivalist += fsGain, 0, 100);
-				break;
-			case "Aztec Revivalist":
-				arcology.FSAztecRevivalist = Math.clamp(arcology.FSAztecRevivalist += fsGain, 0, 100);
-				break;
-			case "Egyptian Revivalist":
-				arcology.FSEgyptianRevivalist = Math.clamp(arcology.FSEgyptianRevivalist += fsGain, 0, 100);
-				break;
-			case "Edo Revivalist":
-				arcology.FSEdoRevivalist = Math.clamp(arcology.FSEdoRevivalist += fsGain, 0, 100);
-				break;
-			case "Arabian Revivalist":
-				arcology.FSArabianRevivalist = Math.clamp(arcology.FSArabianRevivalist += fsGain, 0, 100);
-				break;
-			case "Chinese Revivalist":
-				arcology.FSChineseRevivalist = Math.clamp(arcology.FSChineseRevivalist += fsGain, 0, 100);
-				break;
-			case "Chattel Religionist":
-				arcology.FSChattelReligionist = Math.clamp(arcology.FSChattelReligionist += fsGain, 0, 100);
-				break;
-			case "Degradationist":
-				arcology.FSDegradationist = Math.clamp(arcology.FSDegradationist += fsGain, 0, 100);
-				break;
-			case "Repopulation Focus":
-				arcology.FSRepopulationFocus = Math.clamp(arcology.FSRepopulationFocus += fsGain, 0, 100);
-				break;
-			case "Eugenics":
-				arcology.FSRestart = Math.clamp(arcology.FSRestart += fsGain, 0, 100);
-				break;
-			case "Asset Expansionist":
-				arcology.FSAssetExpansionist = Math.clamp(arcology.FSAssetExpansionist += fsGain, 0, 100);
-				break;
-			case "Transformation Fetishist":
-				arcology.FSTransformationFetishist = Math.clamp(arcology.FSTransformationFetishist += fsGain, 0, 100);
-				break;
-			case "Gender Radicalist":
-				arcology.FSGenderRadicalist = Math.clamp(arcology.FSGenderRadicalist += fsGain, 0, 100);
-				break;
-			case "Gender Fundamentalist":
-				arcology.FSGenderFundamentalist = Math.clamp(arcology.FSGenderFundamentalist += fsGain, 0, 100);
-				break;
-			case "Physical Idealist":
-				arcology.FSPhysicalIdealist = Math.clamp(arcology.FSPhysicalIdealist += fsGain, 0, 100);
-				break;
-			case "Hedonistic":
-				arcology.FSHedonisticDecadence = Math.clamp(arcology.FSHedonisticDecadence += fsGain, 0, 100);
-				break;
-			case "Supremacist":
-				arcology.FSSupremacist = Math.clamp(arcology.FSSupremacist += fsGain, 0, 100);
-				break;
-			case "Subjugationist":
-				arcology.FSSubjugationist = Math.clamp(arcology.FSSubjugationist += fsGain, 0, 100);
-				break;
-			case "Paternalist":
-				arcology.FSPaternalist = Math.clamp(arcology.FSPaternalist += fsGain, 0, 100);
-				break;
-			case "Pastoralist":
-				arcology.FSPastoralist = Math.clamp(arcology.FSPastoralist += fsGain, 0, 100);
-				break;
-			case "Maturity Preferentialist":
-				arcology.FSMaturityPreferentialist = Math.clamp(arcology.FSMaturityPreferentialist += fsGain, 0, 100);
-				break;
-			case "Youth Preferentialist":
-				arcology.FSYouthPreferentialist = Math.clamp(arcology.FSYouthPreferentialist += fsGain, 0, 100);
-				break;
-			case "Body Purist":
-				arcology.FSBodyPurist = Math.clamp(arcology.FSBodyPurist += fsGain, 0, 100);
-				break;
-			case "Slimness Enthusiast":
-				arcology.FSSlimnessEnthusiast = Math.clamp(arcology.FSSlimnessEnthusiast += fsGain, 0, 100);
-				break;
-			case "Slave Professionalism":
-				arcology.FSSlaveProfessionalism = Math.clamp(arcology.FSSlaveProfessionalism += fsGain, 0, 100);
-				break;
-			case "Intellectual Dependency":
-				arcology.FSIntellectualDependency = Math.clamp(arcology.FSIntellectualDependency += fsGain, 0, 100);
-				break;
-			case "Petite Admiration":
-				arcology.FSPetiteAdmiration = Math.clamp(arcology.FSPetiteAdmiration += fsGain, 0, 100);
-				break;
-			case "Statuesque Glorification":
-				arcology.FSStatuesqueGlorification = Math.clamp(arcology.FSStatuesqueGlorification += fsGain, 0, 100);
-				break;
-		}
-	}
+	// Facility Decorations
+	const fsGain = 0.0001 * food;
+	FutureSocieties.DecorationBonus(V.farmyardDecoration, fsGain);
+
 	return t;
 };
diff --git a/src/js/futureSocietyJS.js b/src/js/futureSocietyJS.js
index cfba77e9bdf49917629d0406c1d60cd714e0ce15..25ae6ddfa38a2932d80225df6830d3044219d7af 100644
--- a/src/js/futureSocietyJS.js
+++ b/src/js/futureSocietyJS.js
@@ -100,6 +100,7 @@ globalThis.FutureSocieties = (function() {
 		overflowToInfluence: overflowToInfluence,
 		remove: removeFS,
 		DecorationCleanup: DecorationCleanup,
+		DecorationBonus: FSDecorationBonus,
 		Change: FSChange,
 		ChangePorn: FSChangePorn,
 		HighestDecoration: FSHighestDecoration
@@ -438,6 +439,25 @@ globalThis.FutureSocieties = (function() {
 		}
 	}
 
+	/** Apply the decoration bonus for a slave working in a facility to the FS
+	 * call as FutureSocieties.DecorationBonus()
+	 * @param {string} decoration - not quoted, just pass it straight in
+	 * @param {number} magnitude - will be multiplied by V.FSSingleSlaveRep
+	 */
+	function FSDecorationBonus(decoration, magnitude) {
+		if (decoration === "standard") {
+			return; // no bonus
+		}
+
+		const FSString = decoration.replace(/ /g, ''); // removes spaces
+		const FSProp = FSString2Property[FSString]; // gets the property name
+		const arc = V.arcologies[0];
+
+		if (FSProp && Number.isFinite(arc[FSProp])) {
+			arc[FSProp] = Math.clamp(arc[FSProp] + magnitude * V.FSSingleSlaveRep, 0, 100);
+		}
+	}
+
 	/* call as FutureSocieties.Change() */
 	/* FSString should be in the FSString2Property object above */
 	function FSChange(FSString, magnitude, bonusMultiplier = 1) {