diff --git a/CHANGELOG.md b/CHANGELOG.md
index 27023a351e139c670e863c4c01a4aa705bc8d724..09ded861e562ac8a7fb1cae42fa6ac8c4cd129d2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,7 +6,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
 
 ## Unreleased
 
+* added new slimness enthusiast food policy
+* fixes
+
 ## 0.10.7.1-4.0.0-alpha.19 - 2022-08-27
+
 * fixes and code improvements
 
 ## 0.10.7.1-4.0.0-alpha.18 - 2022-08-26
diff --git a/devTools/types/FC/arcology.d.ts b/devTools/types/FC/arcology.d.ts
index 1ce42f9e1bcb2f12221724e0d757f8c403097b99..f116eae9487c80d83061d6bda0d6ed47a5c16c1a 100644
--- a/devTools/types/FC/arcology.d.ts
+++ b/devTools/types/FC/arcology.d.ts
@@ -50,7 +50,7 @@ declare namespace FC {
 		};
 		FSSlimnessEnthusiast: {
 			noun: "Slimness Enthusiasm", adj: "Slimness Enthusiast", deco: "Slimness Enthusiast",
-			research: true, SMR: true, policy: "Law", choice: undefined
+			research: true, SMR: true, policy: "Law" | "FoodLaw", choice: undefined
 		};
 		FSAssetExpansionist: {
 			noun: "Asset Expansionism", adj: "Asset Expansionist", deco: "Asset Expansionist",
diff --git a/js/003-data/policiesData.js b/js/003-data/policiesData.js
index e5ad057b92a9668ef6d673aae539d1d86617b485..88c7ab163c78a4472c8dbfd5f971518cefc4d168 100644
--- a/js/003-data/policiesData.js
+++ b/js/003-data/policiesData.js
@@ -1237,6 +1237,7 @@ App.Data.Policies.Selection = {
 						V.seeDicks !== 0 &&
 						V.arcologies[0].FSGenderRadicalist > 60 &&
 						V.arcologies[0].FSSlimnessEnthusiastLaw === 0 &&
+						V.arcologies[0].FSSlimnessEnthusiastFoodLaw === 0 &&
 						V.arcologies[0].FSGenderRadicalistLawFuta === 0
 					);
 				},
@@ -1582,6 +1583,25 @@ App.Data.Policies.Selection = {
 				note: `Flat slaves will enjoy increased attractiveness to citizens`
 			}
 		],
+		"arcologies[0].FSSlimnessEnthusiastFoodLaw": [
+			{
+				title: "Asset Slimming Food",
+				titleClass: "lime",
+				text: "slave food production will be required to follow a recipe that keeps chattel nice and trim, reducing the growth of disgusting flesh on their T&A.",
+				activatedText: "you have standardized a slave food recipe to keep your chattel nice and trim, reducing the amount of oversized T&A in the arcology.",
+				get requirements() {
+					return (
+						V.arcologies[0].FSGenderRadicalistLawBeauty === 0 &&
+						V.arcologies[0].FSGenderFundamentalistLawBeauty === 0 &&
+						V.arcologies[0].FSGenderRadicalistLawFuta !== 3 &&
+						V.arcologies[0].FSHedonisticDecadenceLaw2 === 0 &&
+						V.arcologies[0].FSPhysicalIdealistLaw === 0 &&
+						V.arcologies[0].FSSlimnessEnthusiast > 20
+					);
+				},
+				note: `Slaves will struggle to grow beyond the ideal amount of T&A. `
+			}
+		],
 	},
 	FSAssetExpansionist: {
 		"arcologies[0].FSAssetExpansionistSMR": [
@@ -1693,6 +1713,7 @@ App.Data.Policies.Selection = {
 				get requirements() {
 					return (
 						V.arcologies[0].FSSlimnessEnthusiastLaw === 0 &&
+						V.arcologies[0].FSSlimnessEnthusiastFoodLaw === 0 &&
 						V.arcologies[0].FSGenderRadicalistLawBeauty === 0 &&
 						V.arcologies[0].FSGenderFundamentalistLawBeauty === 0 &&
 						V.arcologies[0].FSPhysicalIdealistLaw === 0 &&
diff --git a/src/002-config/fc-version.js b/src/002-config/fc-version.js
index 365517ed20f620088261e42e5a94ea2b65484bf3..ce3af0a67c1708a5136ece54f2becf7ebbe1038e 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: "4.0.0-alpha.19",
 	commitHash: null,
-	release: 1178, // When getting close to 2000, please remove the check located within the onLoad() function defined at line five of src/js/eventHandlers.js.
+	release: 1179, // When getting close to 2000, please remove the check located within the onLoad() function defined at line five of src/js/eventHandlers.js.
 };
diff --git a/src/data/backwardsCompatibility/backwardsCompatibility.js b/src/data/backwardsCompatibility/backwardsCompatibility.js
index 2d86ff9fbff1504d74b24d3a442dcc5f2e504812..2c1e4588b902323667b642e75672d21c78b981cf 100644
--- a/src/data/backwardsCompatibility/backwardsCompatibility.js
+++ b/src/data/backwardsCompatibility/backwardsCompatibility.js
@@ -707,6 +707,9 @@ App.Update.globalVariables = function(node) {
 			} else if (typeof V.arcologies[0].FSSlimnessEnthusiastSMR === "undefined") {
 				V.arcologies[0].FSSlimnessEnthusiastSMR = 0;
 			}
+			if (typeof V.arcologies[0].FSSlimnessEnthusiastFoodLaw === "undefined") {
+				V.arcologies[0].FSSlimnessEnthusiastFoodLaw = 0;
+			}
 			if ((typeof V.FSMaturityPreferentialist !== "undefined") && V.FSMaturityPreferentialist !== "unset") {
 				V.arcologies[0].FSMaturityPreferentialist = V.FSMaturityPreferentialist;
 			} else if (typeof V.arcologies[0].FSMaturityPreferentialist === "undefined") {
diff --git a/src/endWeek/player/prDiet.js b/src/endWeek/player/prDiet.js
index 702d24336bae7b673c94c024582adb1b635c286b..4c35d1c88d9390b4bb15e2bf6fe440d490825464 100644
--- a/src/endWeek/player/prDiet.js
+++ b/src/endWeek/player/prDiet.js
@@ -827,7 +827,7 @@ App.EndWeek.Player.diet = function(PC = V.PC) {
 			roll = 75;
 			target = Math.trunc(Math.clamp(weightMod * 2 - (boobSize - growthGoal) / 20, 0, 68));
 		}
-		if (PC.geneMods.NCS === 1) {
+		if (PC.geneMods.NCS === 1 || (V.arcologies[0].FSSlimnessEnthusiastFoodLaw === 1 && !canEatFood(PC))) {
 			roll *= 2;
 		}
 		// PC food is not laced with hormones normally, so galactorrhea is not triggered here.
@@ -844,7 +844,7 @@ App.EndWeek.Player.diet = function(PC = V.PC) {
 			roll = 80000;
 			target = Math.trunc(Math.clamp(weightMod * 1000 - (buttSize * 1000 - growthGoal) * 4, 0, 72000));
 		}
-		if (PC.geneMods.NCS === 1) {
+		if (PC.geneMods.NCS === 1 || (V.arcologies[0].FSSlimnessEnthusiastFoodLaw === 1 && !canEatFood(PC))) {
 			roll *= 2;
 		}
 		if (random(1, roll) <= target) {
diff --git a/src/endWeek/player/prHormones.js b/src/endWeek/player/prHormones.js
index f229f5215932860520020f8f9576f0b1c1343b0b..3092dc196038a7b164524bfe6145bb27fad1375f 100644
--- a/src/endWeek/player/prHormones.js
+++ b/src/endWeek/player/prHormones.js
@@ -122,9 +122,11 @@ App.EndWeek.Player.hormones = function(PC, selfManufactured, hormonePower) {
 	function hormonesEffects() {
 		if (Math.abs(PC.hormoneBalance) >= 50) {
 			if (PC.hormoneBalance > 30 && PC.geneMods.NCS !== 1) {
+				const slimModBreasts = (V.arcologies[0].FSSlimnessEnthusiastFoodLaw === 1 && !canEatFood(PC)) ? 0.45 : 1; // 600 average breast target, 270 target, 475 @ 350 hormone
+				const slimModButts = (V.arcologies[0].FSSlimnessEnthusiastFoodLaw === 1 && !canEatFood(PC)) ? 0.6 : 1; // 2.5 average butt, 1.5 target
 				/* 'Expected' breast size based on weight for feminine-bodied player. Masculine-bodied takes a small hit. */
-				normBreasts = Math.trunc((100 + (PC.weight + 100) * 5 + 2 * PC.lactationAdaptation) * (0.85 + PC.hormoneBalance / 400) * gigantomastiaMod / Math.max(PC.title * 1.25,  1));
-				normButt = ((PC.weight + 100) * 0.025 * (0.9 + PC.hormoneBalance / 600) * (rearLipedemaMod / 2 + 1) / Math.max(PC.title * 1.10,  1));
+				normBreasts = Math.trunc((100 + (PC.weight + 100) * 5 + 2 * PC.lactationAdaptation) * (0.85 + PC.hormoneBalance / 400) * gigantomastiaMod * slimModBreasts / Math.max(PC.title * 1.25,  1));
+				normButt = ((PC.weight + 100) * 0.025 * (0.9 + PC.hormoneBalance / 600) * (rearLipedemaMod / 2 + 1) * slimModButts / Math.max(PC.title * 1.10,  1));
 			}
 
 			if (PC.hormoneBalance >= 350) {
diff --git a/src/endWeek/player/prPregnancy.js b/src/endWeek/player/prPregnancy.js
index 40e78c80fe0cda3a06239402296cc2c953a47b51..b6c9cc27be57962f28a5709177337ea9d4416f14 100644
--- a/src/endWeek/player/prPregnancy.js
+++ b/src/endWeek/player/prPregnancy.js
@@ -269,6 +269,7 @@ App.EndWeek.Player.pregnancy = function(PC = V.PC) {
 
 	function pregnancyPhysicalEffects() {
 		let boobTarget;
+		const slimnessFoodMod = (V.arcologies[0].FSSlimnessEnthusiastFoodLaw === 1 && !canEatFood(PC)) ? 0.5 : 1;
 		if (PC.geneMods.NCS === 1) {
 			// NCS: always working against secondary sexual characteristics even in pregnancies.
 			boobTarget = 0;
@@ -322,6 +323,7 @@ App.EndWeek.Player.pregnancy = function(PC = V.PC) {
 			}
 		}
 		boobTarget *= gigantomastiaMod;
+		boobTarget *= slimnessFoodMod;
 		if (PC.geneMods.NCS === 0) {
 			if (PC.pregType >= 30) {
 				if (PC.weight <= 65) {
diff --git a/src/endWeek/saDiet.js b/src/endWeek/saDiet.js
index 933a49ebb647c90ef2cb3b5b2835b0780d85e8e3..17d12f2f5f093fe165dd013b2a2145e9647d44ac 100644
--- a/src/endWeek/saDiet.js
+++ b/src/endWeek/saDiet.js
@@ -1443,7 +1443,7 @@ App.SlaveAssignment.diet = function saDiet(slave) {
 			roll = 75;
 			target = Math.trunc(Math.clamp(weightGain * 2 - (boobSize - growthGoal) / 20, 0, 68));
 		}
-		if (slave.geneMods.NCS === 1) {
+		if (slave.geneMods.NCS === 1 || V.arcologies[0].FSSlimnessEnthusiastFoodLaw === 1) {
 			roll *= 2;
 		}
 		if (random(1, roll) <= target) {
@@ -1464,7 +1464,7 @@ App.SlaveAssignment.diet = function saDiet(slave) {
 			roll = 80000;
 			target = Math.trunc(Math.clamp(weightGain * 1000 - (buttSize * 1000 - growthGoal) * 4, 0, 72000));
 		}
-		if (slave.geneMods.NCS === 1) {
+		if (slave.geneMods.NCS === 1 || V.arcologies[0].FSSlimnessEnthusiastFoodLaw === 1) {
 			roll *= 2;
 		}
 		if (random(1, roll) <= target) {
diff --git a/src/endWeek/saHormonesEffects.js b/src/endWeek/saHormonesEffects.js
index 053971b00123c4801acf7461a0be0046928b78c3..a054f79cb79f046ae1c2dc584d17b3912db1585d 100644
--- a/src/endWeek/saHormonesEffects.js
+++ b/src/endWeek/saHormonesEffects.js
@@ -318,9 +318,11 @@ App.SlaveAssignment.hormonesEffects = function saHormonesEffects(slave) {
 			let normBreasts = 0;
 			let normButt = 0;
 			if (slave.hormoneBalance > 30 && slave.geneMods.NCS !== 1) {
+				const slimModBreasts = (V.arcologies[0].FSSlimnessEnthusiastFoodLaw === 1) ? 0.45 : 1; // 600 average breast target, 270 target, 475 @ 350 hormone
+				const slimModButts = (V.arcologies[0].FSSlimnessEnthusiastFoodLaw === 1) ? 0.6 : 1; // 2.5 average butt, 1.5 target
 				/* 'Expected' breast size based on weight for feminine-bodied slaves */
-				normBreasts = Math.trunc((100 + (slave.weight + 100) * 5 + 2 * slave.lactationAdaptation) * (0.85 + slave.hormoneBalance / 400) * gigantomastiaMod);
-				normButt = ((slave.weight + 100) * 0.025 * (0.9 + slave.hormoneBalance / 600) * (rearLipedemaMod / 2 + 1));
+				normBreasts = Math.trunc((100 + (slave.weight + 100) * 5 + 2 * slave.lactationAdaptation) * (0.85 + slave.hormoneBalance / 400) * gigantomastiaMod * slimModBreasts);
+				normButt = ((slave.weight + 100) * 0.025 * (0.9 + slave.hormoneBalance / 600) * (rearLipedemaMod / 2 + 1) * slimModButts);
 			}
 
 			if (slave.hormoneBalance >= 350) {
diff --git a/src/endWeek/saPregnancy.js b/src/endWeek/saPregnancy.js
index 5be39258e4041050677301d2c7b4c8c3a5a01779..d1184aa9649a19c3e62ee93c928b51e711159fa8 100644
--- a/src/endWeek/saPregnancy.js
+++ b/src/endWeek/saPregnancy.js
@@ -615,6 +615,7 @@ App.SlaveAssignment.pregnancy = function saPregnancy(slave) {
 	 */
 	function pregnancyPhysicalEffects(slave) {
 		let boobTarget;
+		const slimnessFoodMod = V.arcologies[0].FSSlimnessEnthusiastFoodLaw === 1 ? 0.5 : 1;
 		if (slave.geneMods.NCS === 1) {
 			// NCS: always working against secondary sexual characteristics even in pregnancies.
 			boobTarget = 0;
@@ -668,6 +669,7 @@ App.SlaveAssignment.pregnancy = function saPregnancy(slave) {
 			}
 		}
 		boobTarget *= gigantomastiaMod;
+		boobTarget *= slimnessFoodMod;
 		if (slave.geneMods.NCS === 0) {
 			const boobSize = slave.boobs - slave.boobsImplant - slave.boobsMilk;
 			const buttSize = slave.butt - slave.buttImplant;
diff --git a/src/events/intro/initNationalities.js b/src/events/intro/initNationalities.js
index 213a1bdf0c6fa63dd90ca00c50b2ceb5a4b8c7ac..7aaeeec2563ad769bc131d65baa262d02b186e0c 100644
--- a/src/events/intro/initNationalities.js
+++ b/src/events/intro/initNationalities.js
@@ -334,6 +334,7 @@ App.Intro.initNationalities = function() {
 		V.arcologies[0].FSMaturityPreferentialistSMR = 0;
 		V.arcologies[0].FSSlimnessEnthusiastSMR = 0;
 		V.arcologies[0].FSSlimnessEnthusiastLaw = 0;
+		V.arcologies[0].FSSlimnessEnthusiastFoodLaw = 0;
 		V.arcologies[0].FSAssetExpansionistSMR = 0;
 		V.arcologies[0].FSPastoralistLaw = 0;
 		V.arcologies[0].FSPastoralistSMR = 0;
diff --git a/src/futureSocieties/futureSociety.js b/src/futureSocieties/futureSociety.js
index ac1d705d18aaa75f5a8329f844ec1c08593183d4..e9f299f9ac5afcda44ba2e1fb856cdcc1b2e7132 100644
--- a/src/futureSocieties/futureSociety.js
+++ b/src/futureSocieties/futureSociety.js
@@ -297,6 +297,11 @@ globalThis.FutureSocieties = (function() {
 			case "FSAssetExpansionist":
 				arcology[FSSMR] = 0;
 				break;
+			case "FSSlimnessEnthusiast":
+				arcology.FSSlimnessEnthusiastLaw = 0;
+				arcology.FSSlimnessEnthusiastFoodLaw = 0;
+				arcology.FSSlimnessEnthusiastSMR = 0;
+				break;
 			case "FSPhysicalIdealist":
 				arcology.FSPhysicalIdealistLaw = 0;
 				arcology.FSPhysicalIdealistSMR = 0;
diff --git a/src/js/economyJS.js b/src/js/economyJS.js
index 9911372e1d3310e7720356d22166c35dd3e3c2ff..0bb95adce6a724182f6bd2c4f7f41f145c2afa36 100644
--- a/src/js/economyJS.js
+++ b/src/js/economyJS.js
@@ -806,7 +806,8 @@ globalThis.calculateCosts = (function() {
 	}
 
 	function getPCFoodCosts() {
-		const foodCost = V.mods.food.cost;
+		const slimnessFoodMod = V.arcologies[0].FSSlimnessEnthusiastFoodLaw === 1 && !canEatFood(V.PC) ? 1.15 : 1;
+		const foodCost = V.mods.food.cost * slimnessFoodMod;
 		let costs = 0;
 		// Well this ought to be a mess.
 		// Basic food costs
@@ -1124,8 +1125,9 @@ globalThis.getSlaveCostArray = function(s) {
 	let cost = 0;
 	let retval = [];
 	let t = "";
+	const slimnessFoodMod = V.arcologies[0].FSSlimnessEnthusiastFoodLaw === 1 ? 1.15 : 1;
 	const rulesCost = V.rulesCost;
-	const foodCost = V.mods.food.cost;
+	const foodCost = V.mods.food.cost * slimnessFoodMod;
 	const drugsCost = V.drugsCost;
 
 	// Living expenses