diff --git a/src/endWeek/saWorkTheFarm.js b/src/endWeek/saWorkTheFarm.js
new file mode 100644
index 0000000000000000000000000000000000000000..b15c0d4c3b41f275b698800e01fb9c07ecd4163e
--- /dev/null
+++ b/src/endWeek/saWorkTheFarm.js
@@ -0,0 +1,595 @@
+/* eslint-disable no-unused-vars */
+/* eslint-disable no-undef */
+window.saWorkTheFarm = /** @param {App.Entity.SlaveState} slave */ function saWorkTheFarm(slave) {
+	"use strict";
+	const V = State.variables;
+	const arcology = V.arcologies[0];
+	var pronouns = getPronouns(slave);
+	var he = pronouns.pronoun, him = pronouns.object, his = pronouns.possessive, hers = pronouns.possessivePronoun, himself = pronouns.objectReflexive, boy = pronouns.noun;
+	var He = capFirstChar(he), His = capFirstChar(his);
+	var incomeStats = getSlaveStatisticData(slave, V.facility.farmyard);
+
+	var t = `works as a farmhand this week. `;
+
+	if (V.Farmer !== 0) {
+		t += `While there, ${he} benefits from ${Farmer.slaveName}'s `;
+		if (V.Farmer.physicalAge < 21) {
+			t += `youthful energy`;
+		} else {
+			t += `care`;
+		}
+		if (V.Farmer.oralSkill) {			// TODO: keep this? replace with something else?
+			t += ` and talented tongue`;
+		}
+		t += `. `;
+		if (slave.devotion < V.FarmerDevotionThreshold) {
+			slave.devotion += V.FarmerDevotionBonus;
+		}
+		if (slave.devotion < V.FarmerTrustThreshold) {
+			slave.trust += V.FarmerTrustBonus;
+		}
+		if (slave.health < 100) {
+			slave.health += V.FarmerHealthBonus;
+		}
+	}
+
+	// Open Food Production
+
+	let food = Math.trunc(foodAmount(slave));
+	if (food < 1) {
+		food = 1;
+	}
+	V.food += food
+	V.foodTotal += food;
+	incomeStats.food += food;
+
+	if (V.Farmer) {
+		t += `${Farmer.slaveName} watches over ${him}, making sure that ${he} doesn't slack off and works as hard as ${he} should. `;
+	}
+	if (slave.devotion > 50) {
+		t += `${He}'s so devoted to you that ${he} works harder and produces more food. `;
+	} else if (slave.devotion < -50) {
+		t += `${He}'s so resistant that ${he} doesn't work as hard, and thus produces less food.`;
+	}
+	if (slave.health > 50) {
+		t += `${His} shining health helps ${him} really work hard. `;
+	} else if (slave.health < -50) {
+		t += `${His} poor health impedes ${his} ability to work efficiently. `;
+	}
+	if (slave.muscles > 50) {
+		t += `${His} muscular form helps $him work better, increasing ${his} productivity. `;
+	} else if (slave.muscles < -50) {
+		t += `$He is so weak that $he is not able to work effectively. `;
+	}
+	if (slave.weight > 95) {
+		t += `${He} is so overweight that ${he} has to stop every few minutes to catch ${his} breath, and so ${his} productivity suffers. `;
+	}
+	if (slave.eyes === -1) {
+		t += `${His} nearsightedness makes it harder for $him to work as hard as ${he} otherwise would. `;
+	} else if (slave.eyes < -1) {
+		t += `${His} blindness makes it extremely difficult for $him to work, severely limiting ${his} production. `;
+	}
+	if (slave.hears === -1) {
+		t += `${He} is hard-of-hearing, which gets in the way of ${his} work whenever ${he} misses directions`;
+		if (V.Farmer) {
+			t += ` from ${Farmer.slaveName}`;
+		}
+		t += `. `;
+	} else if (slave.hears < -1) {
+		t += `${He} is deaf, which gets in the way of ${his} work whenever ${he} misses directions`;
+		if (V.Farmer) {
+			t += ` from ${Farmer.slaveName}`;
+		}
+		t += `. `;
+	}
+	if (slave.tired === 1) {
+		t += `${He} is so tired that ${he} doesn't have the energy to work efficiently, impacting ${his} production. `;
+	}
+	t += `As a result, ${he} produces @@.chocolate;` + massFormat(food) + `@@ of food over the week. `
+
+	// Close Food Production
+
+	// Open Shows
+
+	incomeStats.income += farmShowsIncome(slave);
+
+	if (V.farmyardShows) {
+		t += `${He} also puts on shows with animals this week. `;
+
+		//Open FS Subsection
+
+		if (arcology.FSSupremacist != "unset") {
+			if (slave.race === arcology.FFSupremacistRace) {
+				t += `Society @@.red;disapproves@@ of your allowing a member of the elite race to be degraded in such a fashion, and thus ${he} didn't earn as much. `;
+			}
+		}
+		if (arcology.FSSubjugationist != "unset") {
+			if (slave.race === arcology.FSSubjugationistRace) {
+				t += `Society @@.green;approves@@ of the degradation you submit your ` + arcology.FSSubjugationistRace + ` slaves to, and so ${he} earns you a bit more. `;
+			} else {
+				t += `Society doesn't disapprove of ${him} not being ` + arcology.FSSubjugationistRace + `, but ${he} doesn't earn as much as ${he} would if ${he} was ` + arcology.FSSubjugationistRace + `. `;
+			}
+		}
+		if (arcology.FSRepopulationFocus != "unset") {
+			if (slave.pregWeek > 16) {
+				if (slave.eggType !== "human") {
+					t += `Society is @@.red;disgusted@@ by ${his} pregnancy when they realize that what it is in ${his} womb is not human. `;
+				} else {
+					t += `Society @@.green;greatly approves@@ of your having pregnant slaves `;
+					if (V.seeBestiality === 1) {
+						t += `have sex`;
+					} else {
+						t += `put on shows`;
+					}
+					t += ` with animals. `;
+				}
+			}
+		}
+		if (arcology.FSRestart != "unset") {
+			if (slave.pregWeek > 16) {
+				if (slave.eggType !== "human") {
+					t += `Society is disgusted by ${his} pregnancy until they learn that what is in ${his} womb is not human. `;
+				} else {
+					t += `Society is @@.red;extremely disgusted@@ by ${his} pregnancy and the fact that you would have ${him} `;
+					if (V.seeBestiality === 1) {
+						t += `have sex`;
+					} else if (V.farmyardShows) {
+						t += `put on shows`;
+					}
+					t += ` with animals while sporting a baby bump. `;
+				}
+			}
+		}
+		if (arcology.FSGenderRadicalist !== "unset") {
+			if (slave.dick > 0) {
+				t += `${His} patrons @@.green;approve@@ of the fact that ${he} has a dick. `
+			} else {
+				// TODO: not sure what to do for this
+			}
+		}
+		if (arcology.FSGenderFundamentalist !== "unset") {
+			if (slave.pregWeek > 16) {
+				t += `${His} patrons @@.green;approve@@ of the fact that ${he} is sporting a baby bump.`
+			} else {
+				// TODO: also this
+			}
+			if (slave.dick > 0) {
+				// TODO: something here?
+			}
+		}
+		if (arcology.FSPaternalist !== "unset") {
+			if (V.seeBestiality === 1 && V.farmyardBreeding) {
+				t += `Your citizens are @@.red;very disapproving@@ of the fact that you would allow something as degrading as having your slaves to be knocked up by filthy beasts. `;
+			} else {
+				t += `Your citizens @@.red;disapprove@@ of the fact that you would allow your slaves to be degraded in such a manner. `;
+			}
+		}
+		if (arcology.FSDegradationist != "unset") {
+			if (V.seeBestiality === 1 && V.farmyardBreeding) {
+				t += `Your citizens are @@.green;very approving@@ of the fact that you would allow something as degrading as having your slaves to be knocked up by filthy beasts. `;
+			} else {
+				t += `Your citizens @@.green;approve@@ of the fact that you would allow your slaves to be degraded in such a manner. `;
+			}
+		}
+		if (arcology.FSBodyPurist !== "unset") {
+			/* TODO: requirements for these might change */
+			if (slave.boobsImplant > 0) {
+				// TODO: add stuff here
+			}
+			if (slave.buttImplant > 0) {
+				// TODO: add stuff here
+			}
+			if (slave.faceImplant > 0) {
+				// TODO: add stuff here
+			}
+			if (slave.lipsImplant > 0) {
+				// TODO: add stuff here
+			}
+		}
+		if (arcology.FSTransformationFetishist !== "unset") {
+			/* TODO: requirements for these might change */
+			if (slave.boobsImplant > 0) {
+				// TODO: add stuff here
+			}
+			if (slave.buttImplant > 0) {
+				// TODO: add stuff here
+			}
+			if (slave.faceImplant > 0) {
+				// TODO: add stuff here
+			}
+			if (slave.lipsImplant > 0) {
+				// TODO: add stuff here
+			}
+		}
+		if (arcology.FSYouthPreferentialist !== "unset") {
+			if (slave.visualAge > 25) {		// TODO: not sure about this age
+				t += arcology.name + `'s citizens @@.red;disapprove@@ of your using such old slaves to put on shows. `;
+			} else {
+				t += arcology.name + `'s citizens @@.green;approve@@ of your using young slaves to put on shows. `;
+			}
+		}
+		if (arcology.FSMaturityPreferentialist !== "unset") {
+			if (slave.visualAge > 25) {		// TODO: not sure about this age
+				t += arcology.name + `'s citizens @@.green;approve@@ of your using mature slaves to put on shows. `;
+			} else {
+				t += arcology.name + `'s citizens @@.red;disapprove@@ of your using such young slaves to put on shows. `;
+			}
+		}
+		if (arcology.FSSlimnessEnthusiast !== "unset") {
+			if (slave.weight > 10) {
+				t += `Society finds a slave with such a flabby body @@.red;absolutely disgusting.@@ `
+			}
+			if (slave.boobs > 799) {
+				t += `Your citizens `;
+				if (slave.weight > 10) {
+					t += `also `;
+				}
+				t += `don't approve of you using a slave with such large tits as a showgirl. `;
+			}
+			if (slave.butt > 3) {
+				// TODO: write this
+			}
+		}
+		if (arcology.FSAssetExpansionist !== "unset") {
+			if (slave.weight > 10) {
+				// TODO: should weight be in here?
+			}
+			if (slave.boobs > 799) {
+				// TODO: write this
+			}
+			if (slave.butt > 3) {
+				// TODO: write this
+			}
+		}
+		if (arcology.FSPastoralist !== "unset") {
+			if (slave.boobs > 799) {
+				// TODO: does this make sense?
+			}
+			if (slave.lactation > 0) {
+				// TODO: write this
+			}
+		}
+		if (arcology.FSPhysicalIdealist !== "unset") {
+			if (slave.height > 169) {
+				// TODO: write this
+			} else {
+				// TODO: write this
+			}
+		}
+		if (arcology.FSHedonisticDecadence !== "unset") {
+			if (slave.weight > 10) {
+				// TODO: write this
+			} else {
+				// TODO: write this
+			}
+		}
+		if (arcology.FSChattelReligionist !== "unset") {
+			if (slave.devotion <= 20) {
+				// TODO: write this
+			} else {
+				// TODO: write this
+			}
+		}
+
+		// Close FS Subsection
+
+		if (setup.entertainmentCareers.includes(slave.career)) {
+			t += ` ${He} has experience with putting on shows from ${his} life before ${he} was a slave, making ${him} more effective at putting on shows.`;
+		}
+		if (setup.farmerCareers.includes(slave.career)) {		// TODO: does this even make sense to include?
+			// TODO: write this
+		}
+		if (slave.prestige === 1) {
+			t += `Because some of your citizens already know of ${him}, ${he} earns more. `;
+		} else if (slave.prestige === 2) {
+			t += `Because a lot of your citizens already know of ${him}, ${he} earns quite a bit more. `;
+		} else if (slave.prestige === 3) {
+			t += `Because ${he} is so famous, ${he} earns a lot more then ${he} would otherwise.`
+		}
+		if (slave.pornPrestige === 1) {		// TODO: are prestige and pornPrestige mutually exclusive?
+			t += `${He} earns a bit more because some of your citizens already know $him from porn. `;
+		} else if (slave.pornPrestige === 2) {
+			t += `${He} earns quite a bit more because a lot of your citizens already know $him from porn. `;
+		} else if (slave.pornPrestige === 3) {
+			t += `${He} earns a lot more because ${he} is so famous from porn. `;
+		}
+		if (slave.health > 20) {
+			t += `${He} is in such excellent health that ${he} is able to put on longer and more energetic shows, earning you more. `;
+		} else if (slave.health < -20) {
+			t += `${His} poor health negatively affects ${his} ablility to put on good shows, cutting into your profits. `;
+		}
+		if (slave.face > 40) {
+			t += `${He} is so `;
+			if (slave.genes === "XY") {
+				t += `handsome`;
+			} else {
+				t += `beautiful`;
+			}
+			t += ` that ${his} audience is willing to pay more to watch ${him} put on shows. `;
+		} else if (slave.face > 10) {
+			t += `${He} is so `;
+			if (slave.genes === "XY") {
+				t += `good-looking`;
+			} else {
+				t += `pretty`;
+			}
+			t += ` that ${his} audience is willing to pay more to watch ${him} put on shows. `;
+		} else if (slave.face < -10) {
+			t += `${His} audience isn't willing to pay as much because of how unattractive ${his} face is. `;
+		} else if (slave.face < -40) {
+			t += `${His} audience isn't willing to pay as much because of how hard ${his} face is to look at. `;
+		}
+		// TODO: write this block with different combinations of trust / devotion 
+		if (slave.devotion > 50) {
+			// TODO: write this
+		} else if (slave.devotion < -50) {
+			// TODO: write this
+		}
+		if (slave.trust > 50) {
+			// TODO: write this
+		} else if (slave.trust < -50) {
+			// TODO: write this
+		}
+		if (slave.weight > 30 && arcology.FSHedonisticDecadence === "unset") {
+			t += `Your citizens are not willing to pay as much to see such a fat slave put on shows, so ${he} loses some income. `;
+		} else if (slave.weight < -30) {
+			t += `Your citizens don't like watching such a sickly-looking slaves put on shows, so ${he} loses some income. `;
+		}
+		if (slave.muscles > 30) {
+			// TODO: write this - do we want something for muscles?
+		} else if (slave.muscles < -30) {
+			// TODO: write this - maybe something about the slave's ability to handle the animal?
+		}
+		if (slave.eyes < 1) {
+			t += `${His} `;
+			if (slave.eyes < 0) {
+				t += `blindness makes it impossible`;
+			} else {
+				t += `nearsightedness makes it harder`;
+			}
+			t += ` for ${him} to see what ${he}'s doing, affecting ${his} ability to put on a good show. `;
+		}
+		if (slave.hears < 0) {
+			t += `${His} `;
+			if (slave.hears < -1) {
+				t += `lack of`;
+			} else {
+				t += `poor`;
+			}
+			t += `hearing makes it difficult for ${him} to do a good job of putting on a show. `;
+		}
+		if (slave.boobs > 800) {
+			// TODO: write this
+		}
+		if (slave.butt > 4) {
+			// TODO: write this
+		}
+		if (slave.preg > 10) {
+			// TODO: write this
+		}
+		if (slave.tired === 1) {
+			t += `${He} is so tired that the energy in ${his} shows is basically nonexistent, affecting ${his} profits. `;
+		}
+		if (slave.chem > 10) {
+			// TODO: write this - would this make sense to include?
+		}
+		if (slave.intelligence > 50) {
+			// TODO: write this - include something about .intelligenceImplant?
+		} else if (slave.intelligence < -50) {
+			// TODO: write this
+		}
+		if (slave.energy <= 20 ) {
+			// TODO: write this
+		} else if (slave.energy <= 40) {
+			// TODO: write this
+		} else if (slave.energy <= 60) {
+			// TODO: write this
+		} else if (slave.energy <= 80) {
+			// TODO: write this
+		} else if (slave.energy <= 95) {
+			// TODO: write this
+		} else {
+			// TODO: write this
+		}
+		if (slave.fetish === "submissive") {
+			// TODO: write this
+		} else if (slave.fetish === "humiliation") {
+			// TODO: write this
+		} else if (slave.fetish === "masochist") {
+			// TODO: write this
+		}	// TODO: incoroporate quirks
+	}
+
+	// Close Shows
+
+	// Open Long-Term Effects
+
+	if (slave.fetishKnown && (slave.fetish === "submissive" || slave.fetish === "humiliation" || slave.fetish === "masochist") || slave.energy > 95) {
+		if (V.farmyardShows) {
+			if (V.seeBestiality === 1) {
+				t += `Getting fucked by animals is the perfect job for ${him}, as far as ${he} can tell. @@.hotpink;${He} is happy@@ to spend ${his} days being utterly degraded. `;
+			} else {
+				t += `${He} loves putting on shows with animals, and as far as ${he} can tell, it's the perfect job for ${him}. @@.hotpink;${He} is happy@@ to spend ${his} days doing something so degrading. `;		// TODO: not sure how degrading putting on shows is
+			}
+		}
+		slave.devotion += 1;
+		if (slave.need) {
+			slave.need = 0;
+		}
+	}
+	if (slave.behavioralQuirk === "fitness") {
+		t += slave.slaveName + ` @@.hotpink;privately enjoys@@ the exercise ${he} receives while working in ${farmyardName}. `;
+		slave.devotion += 1;
+	}
+
+	// Close Long-Term Effects
+
+	// Open Vignettes
+
+	if (V.showVignettes) {
+		let vignette = GetVignette(slave);
+		t += `__This week__ ` + vignette.text;
+		if (vignette.type === "cash") {
+			FResult(slave);
+			if (vignette.effect > 0) {
+				t += ` @@.yellowgreen;making you an extra ` + cashFormat(Math.trunc(V.FResult*vignette.effect)) + `.@@ `;
+			} else if (vignette.effect < 0) {
+				t += ` @@.red;losing you ` + cashFormat(Math.abs(Math.trunc(V.FResult*vignette.effect))) + `.@@ `;
+			} else {
+				t += ` an incident without lasting effect. `;
+			}
+			cashX(Math.trunc(V.FResult*vignette.effect), "farmyard");
+			incomeStats.income += (Math.trunc(V.FResult*vignette.effect));
+		} else if (vignette.type === "devotion") {
+			if (vignette.effect > 0) {
+				if (slave.devotion > 50) {
+					t += ` @@.hotpink;increasing ${his} devotion to you.@@ `;
+				} else if (slave.devotion >= -20) {
+					t += ` @@.hotpink;increasing ${his} acceptance of you.@@ `;
+				} else if (slave.devotion >= -20) {
+					t += ` @@.hotpink;reducing ${his} dislike of you.@@ `;
+				} else {
+					t += ` @@.hotpink;reducing ${his} hatred of you.@@ `;
+				}
+			} else if (vignette.effect < 0) {
+				if (slave.devotion > 50) {
+					t += ` @@.mediumorchid;reducing ${his} devotion to you.@@ `;
+				} else if (slave.devotion >= 20) {
+					t += ` @@.mediumorchid;reducing ${his} acceptance of you.@@ `;
+				} else if (slave.devotion >= -20) {
+					t += ` @@.mediumorchid;increasing ${his} dislike of you.@@ `;
+				} else {
+					t += ` @@.mediumorchid;increasing ${his} hatred of you.@@ `;
+				}
+			} else {
+				t += ` an incident without lasting effect. `;
+			}
+			slave.devotion += 1*vignette.effect;
+		} else if (vignette.type === "trust") {
+			if (vignette.effect > 0) {
+				if (slave.trust > 20) {
+					t += ` @@.mediumaquamarine;increasing ${his} trust in you.@@ `;
+				} else if (slave.trust >= -20) {
+					t += ` @@.mediumaquamarine;reducing ${his} fear of you.@@ `;
+				} else {
+					t += ` @@.mediumaquamarine;reducing ${his} terror of you.@@ `;
+				}
+			} else if (vignette.effect < 0) {
+				if (slave.trust > 20) {
+					t += ` @@.gold;reducing ${his} trust in you.@@ `;
+				} else if (slave.trust >= -20) {
+					t += ` @@.gold;increasing ${his} fear of you.@@ `;
+				} else {
+					t += ` @@.gold;increasing ${his} terror of you.@@ `;
+				}
+			} else {
+				t += ` an incident without lasting effect. `;
+			}
+			slave.trust += 1*vignette.effect;
+		} else if (vignette.type === "health") {
+			if (vignette.effect > 0) {
+				t += ` @@.green;improving ${his} health.@@ `;
+			} else if (vignette.effect < 0) {
+				t += ` @@.red;affecting ${his} health.@@ `;
+			} else {
+				t += ` an incident without lasting effect. `;
+			}
+			slave.health += 2*vignette.effect;
+		} else {
+			FResult(slave);
+			if (vignette.effect > 0) {
+				t += ` @@.green;gaining you a bit of reputation.@@ `;
+			} else if (vignette.effect < 0) {
+				t += ` @@.red;losing you a bit of reputation.@@ `;
+			} else {
+				t += ` an incident without lasting effect. `;
+			}
+			repX(Math.trunc(V.FResult*vignette.effect*0.1), "vignette", slave);
+			incomeStats.rep += Math.trunc(V.FResult*vignette.effect*0.1);
+		}
+	}
+
+	// Close Vignettes
+
+	// Open Facility Decorations
+
+	if (V.farmyardDecoration !== "standard") {
+		let 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;
+		}
+	}
+
+	return t;
+}
\ No newline at end of file
diff --git a/src/facilities/farmyard/farmyard.tw b/src/facilities/farmyard/farmyard.tw
index 94f736840d23bdb99d178205487e589408e8343f..fa2afef1a024459a14cc7365483fe86142e2c563 100644
--- a/src/facilities/farmyard/farmyard.tw
+++ b/src/facilities/farmyard/farmyard.tw
@@ -212,6 +212,7 @@ $farmyardNameCaps is an oasis of growth in the midst of the jungle of steel and
 			<<else>>
 				Slaves ''are not'' being bred with animals.
 				[[Begin breeding|Farmyard][$farmyardBreeding = 1]]
+				<br>
 			<</if>>
 		<</if>>
 	<<else>>
diff --git a/src/facilities/farmyard/farmyardReport.tw b/src/facilities/farmyard/farmyardReport.tw
index a95c2f80bf0fcd47787f39a00a54c31bdc9245b5..38e287e669d0849344520c1f59d36dca82f6cc65 100644
--- a/src/facilities/farmyard/farmyardReport.tw
+++ b/src/facilities/farmyard/farmyardReport.tw
@@ -102,9 +102,10 @@
 
 	<<for _dI = 0; _dI < _DL; _dI++>>
 		<<set $i = $slaveIndices[$FarmyardiIDs[_dI]]>>
-		<<setLocalPronouns $slaves[$i] 2>>
+		<<setLocalPronouns $slaves[$i]>>
+		<<setLocalPronouns $Farmer 2>>
 		<<if $Farmer.rivalryTarget == $slaves[$i].ID>>
-			$He forces $his <<print rivalryTerm($Farmer)>> to service all the slaves in the farmyard.
+			_He2 forces _his2 <<print rivalryTerm($Farmer)>> to service all the slaves in $farmyardName.	/* TODO: not sure about this */
 			<<set $slaves[$i].devotion -= 2, $slaves[$i].trust -= 2>>
 			<<if canDoVaginal($slaves[$i])>>
 				<<set $slaves[$i].vaginalCount += 10, $vaginalTotal += 10>>
@@ -120,13 +121,13 @@
 				<<set $slaves[_FLs].rivalry++, $Farmer.rivalry++, $slaves[$i].rivalry++>>
 			<</if>>
 		<<elseif $Farmer.relationshipTarget == $slaves[$i].ID>>
-			$He dotes over $his <<print relationshipTerm($Farmer)>>, $slaves[$i].slaveName, making sure _he2 isn't worked too hard, but unfortunately manages to get in the way of _his2 work.
+			_He2 dotes over _his2 <<print relationshipTerm($Farmer)>>, $slaves[$i].slaveName, making sure $he isn't worked too hard, but unfortunately manages to get in the way of $his work.
 			<<set $slaves[$i].devotion++, $FarmerCashBonus -= 0.05>>
 		<<elseif $familyTesting == 1 && areRelated($Farmer, $slaves[$i]) > 0>>
-			$He pays special attention to $his <<print relativeTerm($Farmer.ID,$slaves[$i].ID)>>, $slaves[$i].slaveName, making sure _he2 is treated well and showing off _his2 skills. /* TODO: does this need rewriting? */
+			_He2 pays special attention to _his2 <<print relativeTerm($Farmer.ID,$slaves[$i].ID)>>, $slaves[$i].slaveName, making sure $he is treated well and showing off $his skills. /* TODO: does this need rewriting? */
 			<<set $slaves[$i].trust++, $FarmerCashBonus += 0.05>>
 		<<elseif $Farmer.relationTarget == $slaves[$i].ID && $familyTesting == 0>>
-			$He pays special attention to $his $slaves[$i].relation, $slaves[$i].slaveName, making sure _he2 is treated well and showing off _his2 skills. /* TODO: does this need rewriting? */
+			_He2 pays special attention to _his2 $slaves[$i].relation, $slaves[$i].slaveName, making sure $he is treated well and showing off $his skills. /* TODO: does this need rewriting? */
 			<<set $slaves[$i].trust++, $FarmerCashBonus += 0.05>>
 		<</if>>
 	<</for>>
@@ -250,7 +251,7 @@
 			<<else>>
 				is working out of $farmyardName.
 			<</if>>
-			<br>&nbsp;&nbsp;&nbsp;&nbsp;$He <<include "SA work the farm">>
+			<br>&nbsp;&nbsp;&nbsp;&nbsp;$He <<= saWorkTheFarm($slaves[$i])>>
 			<br>&nbsp;&nbsp;&nbsp;
 			<<= saChoosesOwnClothes($slaves[$i])>>
 			<<include "SA rules">>
@@ -263,6 +264,7 @@
 		<<else>>
 			<<silently>>
 			<<include "SA chooses own job">>
+			<<_dump = saWorkTheFarm($slaves[$i])>>
 			<<include "SA work the farm">>
 			<<set _chosenClothes = saChoosesOwnClothes($slaves[$i])>>
 			<<include "SA rules">>
@@ -313,7 +315,7 @@
 	<</script>>
 
 	<br><br>
-	$farmyardNameCaps <<if _profits > 0>>makes you @@.yellowgreen;<<print cashFormat(_profits)>>@@ and <</if>>produced @@.chocolate;<<print massFormat(_foodWeek)>>@@ of food this week.
+	$farmyardNameCaps <<if _profits > 0>>makes you @@.yellowgreen;<<print cashFormat(Math.trunc(_profits))>>@@ and <</if>>produced @@.chocolate;<<print massFormat(_foodWeek)>>@@ of food this week.
 
 	<<set $food += _foodWeek>>
 
diff --git a/src/facilities/farmyard/saWorkTheFarm.tw b/src/facilities/farmyard/saWorkTheFarm.tw
deleted file mode 100644
index e9182e01ce544891fb58a4116d8aa418afc835d6..0000000000000000000000000000000000000000
--- a/src/facilities/farmyard/saWorkTheFarm.tw
+++ /dev/null
@@ -1,494 +0,0 @@
-:: SA work the farm [nobr]
-
-<!-- Statistics gathering -->
-<<set _slave = $slaves[$i]>>
-<<set _incomeStats = getSlaveStatisticData(_slave, _slave.assignment === Job.FARMYARD ? $facility.farmyard : undefined)>>
-<<set _incomeStats.food = 0>>
-<<set _arcology = $arcologies[0]>>
-
-<<if ndef _slave.lactationAdaptation>>
-	<<set _slave.lactationAdaptation = 0>>
-<</if>>
-
-<<set _food = 0>>
-
-works as a farmhand this week.
-<<if $farmyard > 0>>
-<<if $farmyardBreeding < 2>>
-	<<if ($Farmer != 0)>>
-		While there, $he gets the benefit of $Farmer.slaveName's <<if ($Farmer.physicalAge < 21)>>youthful energy<<else>>care<</if>><<if ($Farmer.oralSkill >= 100)>> and talented tongue<</if>>.
-		<<if (_slave.devotion < $FarmerDevotionThreshold)>>
-			<<set _slave.devotion += $FarmerDevotionBonus>>
-		<</if>>
-		<<if (_slave.trust < $FarmerTrustThreshold)>>
-			<<set _slave.trust += $FarmerTrustBonus>>
-		<</if>>
-		<<if (_slave.health < 100)>>
-			<<set _slave.health += $FarmerHealthBonus>>
-		<</if>>
-	<</if>>
-<</if>>
-<</if>>
-
-/* OPEN FOOD PRODUCTION */
-
-<<set _food = foodAmount(_slave)>>
-
-/* TODO: rewrite these so they string together */
-<<if ($Farmer != 0)>>
-	<<print $Farmer.slaveName>> watches over $him, making sure that $he doesn't slack off and works as hard as $he needs to.
-<</if>>
-<<if (_slave.devotion > 50)>>
-	$He's so devoted to you that $he works harder and produces more food.
-<<elseif (_slave.devotion < -50)>>
-	$He's so resistant that $he doesn't work as hard, and thus produces less food.
-<</if>>
-
-<<if (_slave.health > 50)>>
-	$His shining health helps $him really work hard.
-<<elseif (_slave.health < -50)>>
-	$His poor health impedes $his ability to work efficiently.
-<</if>>
-
-<<if (_slave.muscles > 50)>>
-	$His muscular form helps $him work better, increasing $his productivity.
-<<elseif (_slave).muscles < -50>>
-	$He is so weak that $he is not able to work effectively.
-<</if>>
-
-<<if (_slave.weight > 95)>>
-	$He is so overweight that $he has to stop every few minutes to catch $his breath, and so $his productivity suffers.
-<</if>>
-
-<<if (_slave.eyes == -1)>>
-	$His nearsightedness makes it harder for $him to work as hard as $he otherwise would.
-<<elseif (_slave.eyes < -1)>>
-	$His blindness makes it extremely difficult for $him to work, severely limiting $his production.
-<</if>>
-
-<<if (_slave.hears == -1)>>
-	$He is hard-of-hearing, which gets in the way of $his work whenever $he misses directions<<if $Farmer != 0>> from $Farmer.name<</if>>.
-<<elseif (_slave.hears < -1)>>
-	$He is deaf, which gets in the way of $his work whenever $he misses directions<<if $Farmer != 0>> from $Farmer.name<</if>>.
-<</if>>
-
-<<if (_slave.tired == 1)>>
-	$He is so tired that $he doesn't have the energy to work efficiently, impacting $his production.
-<</if>>
-
-<<set _food = Math.trunc(_food)>>
-<<if _food < 1>>
-	<<set _food = 1>>
-<</if>>
-<<set $foodTotal += _food, $food += _food>>
-
-As a result, $he produces @@.chocolate;<<print massFormat(_food)>>@@ of food over the week.
-<<set _incomeStats.food += _food>>
-
-/* CLOSE FOOD PRODUCTION */
-
-/* OPEN SHOWS */
-
-<<set _incomeStats.income += farmShowsIncome(_slave)>>
-<<if $farmyardShows == 1>>
-
-$He also puts on shows with animals this week.
-
-	/* OPEN FS SUBSECTION */
-
-/* TODO: rewrite some of these to sound more natural */
-	<<if _arcology.FSSupremacist != "unset">>
-		<<if _slave.race == _arcology.FSSupremacistRace>>
-			Society @@.red;disapproves@@ of your allowing a member of the elite race to be degraded in such a fashion, and thus $he didn't earn as much.
-		<</if>>
-	<</if>>
-	<<if _arcology.FSSubjugationist != "unset">>
-		<<if _slave.race == _arcology.FSSubjugationistRace>>
-			Society @@.green;approves@@ of the degradation you submit your _arcology.FSSubjugationistRace slaves to, and so $he earns you a bit more.
-		<<else>>
-			Society doesn't disapprove of $him not being _arcology.FSSubjugationistRace, but $he doesn't earn as much as $he would if he was _arcology.FSSubjugationistRace.
-		<</if>>
-	<</if>>
-	<<if _arcology.FSRepopulationFocus != "unset">>
-		<<if _slave.pregWeek > 16>>
-			<<if _slave.eggType != "human">>
-				Society @@.green;approves@@ of you putting another child in $him, even if it isn't a human child.	/* TODO: does this make sense? */
-			<</if>>
-			Society @@.green;greatly approves@@ of your having pregnant slaves <<if $seeBestiality == 1>>put on shows<<else>>have sex<</if>> with animals.
-		<<else>>
-			Society @@.red;disapproves@@ of your having slaves <<if $seeBestiality == 1>>put on shows<<else>>have sex<</if>> with animals while not sporting baby bumps.
-		<</if>>
-	<</if>>
-	<<if _arcology.FSRestart != "unset">>
-		<<if _slave.pregWeek > 16>>
-			<<if _slave.eggType != "human">>
-				Society is @@.red;disgusted@@ by $his pregnancy, especially when they realize that what it is in $his womb is not human.	/* TODO: does this make sense? */
-			<</if>>
-		<<else>>
-			Society is @@.red;extremely disgusted@@ by $his pregnancy and the fact that you would have $him <<if $seeBestiality == 1>>put on shows<<else>>have sex<</if>> with animals while sporting a baby bump.
-		<</if>>
-	<</if>>
-	<<if _arcology.FSGenderRadicalist != "unset">>
-		<<if _slave.genes == "XY">>
-			/* TODO: not sure what to do for this */
-		<<else>>
-		<</if>>
-	<</if>>
-	<<if _arcology.FSGenderFundamentalist != "unset">>
-		<<if _slave.genes == "XX">>
-			/* TODO: not sure what to do for this */
-		<<else>>
-		<</if>>
-	<</if>>
-	<<if _arcology.FSPaternalist != "unset">>
-		<<if $seeBestiality == 1>>
-			<<if $farmyardBreeding == 1>>
-				Your citizens are @@.red;very disapproving@@ of the fact that you would go so far as to allow your slaves to be knocked up by filthy beasts.
-			<<else>>
-				Your citizens @@.red;disapprove@@ of the fact that you would allow your slaves to be degraded in such a manner.
-			<</if>>
-		<</if>>
-	<</if>>
-	<<if _arcology.FSDegradationist != "unset">>
-		<<if $seeBestiality == 1>>
-			<<if $farmyardBreeding == 1>>
-				Your citizens are @@.green;very approving@@ of the fact that you would go so far as to allow your slaves to be knocked up by filthy beasts. /* TODO: write something more original for these */
-			<<else>>
-				Your citizens @@.green;approve@@ of the fact that you would allow your slaves to be degraded in such a manner.
-			<</if>>
-		<</if>>
-	<</if>>
-	<<if _arcology.FSBodyPurist != "unset">>
-		/* TODO: requirements for these might change */
-		<<if _slave.boobsImplant > 0>>
-		<</if>>
-		<<if _slave.buttImplant > 0>>
-		<</if>>
-		<<if _slave.faceImplant > 0>>
-		<</if>>
-		<<if _slave.lipsImplant > 0>>
-		<</if>>
-	<</if>>
-	<<if _arcology.FSTransformationFetishist != "unset">>
-		<<if _slave.boobsImplant > 0>>
-		<</if>>
-		<<if _slave.buttImplant > 0>>
-		<</if>>
-		<<if _slave.faceImplant > 0>>
-		<</if>>
-		<<if _slave.lipsImplant > 0>>
-		<</if>>
-	<</if>>
-	<<if _arcology.FSYouthPreferentialist != "unset">>
-		<<if _slave.visualAge > 25>>
-			_arcology.name's citizens @@.red;disapprove@@ of your using such old slaves to put on shows.
-		<<else>>
-			_arcology.name's citizens @@.green;approve@@ of your using young slaves to put on shows.
-		<</if>>
-	<</if>>
-	<<if _arcology.FSMaturityPreferentialist != "unset">>
-		<<if _slave.visualAge > 25>>
-			_arcology.name's citizens @@.green;approve@@ of your using mature slaves to put on shows.
-		<<else>>
-			_arcology.name's citizens @@.red;disapprove@@ of your using young slaves to put on shows.
-		<</if>>
-	<</if>>
-	<<if _arcology.FSSlimnessEnthusiast != "unset">>
-		<<if _slave.weight > 10>>
-			Society finds such a flabby slave @@.red;absolutely disgusting.@@	/* TODO: this needs work */
-		<</if>>
-		<<if _slave.boobs > 799>>
-		<</if>>
-		<<if _slave.butt > 3>>
-		<</if>>
-	<</if>>
-	<<if _arcology.FSAssetExpansionist != "unset">>
-		<<if _slave.weight > 10>>		/* TODO: not sure if weight should be in here */
-		<</if>>
-		<<if _slave.boobs > 799>>
-		<</if>>
-		<<if _slave.butt > 3>>
-		<</if>>
-	<</if>>
-	<<if _arcology.FSPastoralist != "unset">>
-		<<if _slave.boobs > 799>>		/* TODO: this will probably change */
-		<</if>>
-		<<if _slave.lactation > 0>>
-		<</if>>
-	<</if>>
-	<<if _arcology.FSPhysicalIdealist != "unset">>
-		<<if _slave.height > 169>>
-		<<else>>
-		<</if>>
-	<</if>>
-	<<if _arcology.FSHedonisticDecadence != "unset">>
-		<<if _slave.weight > 10>>
-		<<else>>
-		<</if>>
-	<</if>>
-	<<if _arcology.FSChattelReligionist != "unset">>
-		<<if _slave.devotion < 21>>
-		<</if>>
-	<</if>>
-
-	/* CLOSE FS SUBSECTION */
-
-	<<if setup.entertainmentCareers.includes(_slave.career)>>
-	<</if>>
-
-	<<if setup.farmerCareers.includes(_slave.career)>>
-	<</if>>
-
-	<<if _slave.prestige == 1>>
-		Because some of your citizens already know of $him, $he earns more.
-	<<elseif _slave.prestige == 2>>
-		Because a lot of your citizens already know of $him, he earns quite a bit more.
-	<<elseif _slave.prestige == 3>>
-		Because $he is so famous, $he earns a lot more then $he would otherwise.
-	<</if>>
-
-	<<if _slave.pornPrestige == 1>>		/* TODO: are pornPrestige and prestige mutually exclusive? */
-		$He earns a bit more because some of your citizens already know $him from porn.
-	<<elseif _slave.pornPrestige == 2>>
-		$He earns quite a bit more because a lot of your citizens already know $him from porn.
-	<<elseif _slave.pornPrestige == 3>>
-		$He earns a lot more because $he is so famous from porn.
-	<</if>>
-
-	<<if _slave.health > 20>>
-		$He is in such excellent health that $he is able to put on longer shows, earning you more.
-	<<elseif _slave.health < -20>>
-		$He is in such poor health that $he isn't able to put on shows for very long, cutting into your profits.
-	<</if>>
-
-	<<if _slave.face > 10>>
-		$He is so <<if _slave.genes == "XX">>pretty<<else>>good-looking<</if>> that $his audience pays more to watch $him put on shows.
-	<<elseif _slave.face < -10>>
-		$His audience isn't willing to pay as much because of how unattractive $his face is.	/* TODO: not real happy with this sentence */
-	<</if>>
-
-	/* TODO: rewrite this block to work with different combinations of trust / devotion */
-	<<if _slave.devotion > 50>>
-		$He is so devoted to you
-	<<elseif _slave.devotion < -50>>
-		$He is so resistant
-	<</if>>
-
-	<<if _slave.trust > 50>>
-		and so trusting that $he tries hard to
-	<<elseif _slave.trust < -50>>
-		and so fearful that $he does
-	<</if>>
-
-	<<if _slave.weight > 30>>
-		Your citizens are not willing to pay as much to see such a fat slave put on shows, so $he loses some income.
-	<<elseif _slave.weight < -30>>	/* TODO: not happy with this */
-		Your citizens are not willing to pay as much to see such a skinny slave put on shows, so $he loses some income.
-	<</if>>
-
-	<<if _slave.muscles > 30>>
-	<<elseif _slave.muscles < -30>>
-	<</if>>
-
-	<<if _slave.eyes < 1>>
-		$His <<if _slave.eyes < 0>>blindness<<else>>nearsightedness makes it harder for $him to see what $he's doing, affecting $his ability to put on a good show.
-	<</if>>
-
-	<<if _slave.hears < 0>>
-		$His <<if _slave.hears < -1>>lack of <<else>>poor <</if>>hearing makes it difficult for $him to do a good job of putting on a show.
-	<</if>>
-
-	<<if _slave.boobs > 800>>
-	<</if>>
-
-	<<if _slave.butt > 4>>
-	<</if>>
-
-	<<if _slave.preg < 0>>
-	<</if>>
-
-	<<if _slave.tired == 1>>
-		$He is so tired that the energy in $his shows is basically nonexistent, affecting $his profits.
-	<</if>>
-
-	<<if _slave.chem > 10>>
-	<</if>>
-
-	<<if _slave.intelligence > 50>>
-	<<elseif _slave.intelligence < -50>>
-	<</if>>
-
-	<<if _slave.energy < 20>>
-	<</if>>
-
-	<<if _slave.fetish == "submissive">>
-	<<elseif _slave.fetish == "humiliation">>
-	<<elseif _slave.fetish == "masochist">>
-	<</if>>
-
-<</if>>
-
-/* CLOSE SHOWS*/
-
-	<<if _slave.fetishKnown && ((_slave.fetish == ("submissive") || ("humiliation") || ("masochist")) || (_slave.energy > 95))>>
-		<<if $farmyardShows == 1>>
-			<<if $seeBestiality == 1>>
-				Getting fucked by animals is the perfect job for $him, as far as $he can tell. @@.hotpink;$He is happy@@ to spend $his days being utterly degraded.
-			<<else>>
-				$He loves putting on shows with animals, and as far as $he can tell, it's the perfect job for $him. @@.hotpink;$He is happy@@ to spend $his days doing something so degrading. /* TODO: should this use a different set of fetishes? also not sure how degrading putting on shows is */
-			<</if>>
-		<<else>>
-			/* TODO: add something here for slaves that are not putting on shows */
-		<</if>>
-		<<set _slave.devotion += 1>>
-		<<if _slave.need>><<set _slave.need = 0>><</if>>
-	<</if>>
-	<</if>>
-
-<<if (_slave.behavioralQuirk == "fitness")>>
-	_slave.slaveName @@.hotpink;privately enjoys@@ the exercise $he receives while working in $farmyardName.
-	<<set _slave.devotion += 1>>
-<</if>>
-
-/* TODO: add more vignettes */
-<<if ($showVignettes == 1 && (_slave.assignment == "work as a farmhand"))>>
-	<<set _vignette = GetVignette(_slave)>>
-	__This week__ _vignette.text
-	<<if (_vignette.type == "cash")>>
-		<<set FResult(_slave)>>
-		<<if (_vignette.effect > 0)>>
-			@@.yellowgreen;making you an extra <<print cashFormat(Math.trunc($FResult*_vignette.effect))>>.@@
-		<<elseif (_vignette.effect < 0)>>
-			@@.red;losing you <<print cashFormat(Math.abs(Math.trunc($FResult*_vignette.effect)))>>.@@
-		<<else>>
-			an incident without lasting effect.
-		<</if>>
-		<<set cashX(Math.trunc($FResult*_vignette.effect), "farmyard")>>
-		<<set _incomeStats.income += Math.trunc($FResult*_vignette.effect)>>
-	<<elseif (_vignette.type == "devotion")>>
-		<<if (_vignette.effect > 0)>>
-			<<if _slave.devotion > 50>>
-		@@.hotpink;increasing $his devotion to you.@@
-			<<elseif _slave.devotion >= -20>>
-		@@.hotpink;increasing $his acceptance of you.@@
-		<<elseif _slave.devotion > -10>>
-		@@.hotpink;reducing $his dislike of you.@@
-			<<else>>
-		@@.hotpink;reducing $his hatred of you.@@
-			<</if>>
-		<<elseif (_vignette.effect < 0)>>
-			<<if _slave.devotion > 50>>
-		@@.mediumorchid;reducing $his devotion to you.@@
-			<<elseif _slave.devotion >= -20>>
-		@@.mediumorchid;reducing $his acceptance of you.@@
-		<<elseif _slave.devotion > -10>>
-		@@.mediumorchid;increasing $his dislike of you.@@
-			<<else>>
-		@@.mediumorchid;increasing $his hatred of you.@@
-			<</if>>
-		<<else>>
-			an incident without lasting effect.
-		<</if>>
-		<<set _slave.devotion += 1*_vignette.effect>>
-	<<elseif (_vignette.type == "trust")>>
-		<<if (_vignette.effect > 0)>>
-			<<if _slave.trust > 20>>
-		@@.mediumaquamarine;increasing $his trust in you.@@
-		<<elseif _slave.trust > -10>>
-		@@.mediumaquamarine;reducing $his fear of you.@@
-			<<else>>
-		@@.mediumaquamarine;reducing $his terror of you.@@
-			<</if>>
-		<<elseif (_vignette.effect < 0)>>
-			<<if _slave.trust > 20>>
-		@@.gold;reducing $his trust in you.@@
-			<<elseif _slave.trust >= -20>>
-		@@.gold;increasing $his fear of you.@@
-			<<else>>
-		@@.gold;increasing $his terror of you.@@
-			<</if>>
-		<<else>>
-			an incident without lasting effect.
-		<</if>>
-		<<set _slave.trust += 1*_vignette.effect>>
-	<<elseif (_vignette.type == "health")>>
-		<<if (_vignette.effect > 0)>>
-		@@.green;improving $his health.@@
-		<<elseif (_vignette.effect < 0)>>
-		@@.red;affecting $his health.@@
-		<<else>>
-			an incident without lasting effect.
-		<</if>>
-		<<set _slave.health += 2*_vignette.effect>>
-	<<else>>
-		<<set FResult(_slave)>>
-		<<if (_vignette.effect > 0)>>
-			@@.green;gaining you a bit of reputation.@@
-		<<elseif (_vignette.effect < 0)>>
-			@@.red;losing you a bit of reputation.@@
-		<<else>>
-			an incident without lasting effect.
-		<</if>>
-		<<run repX( Math.trunc($FResult*_vignette.effect*0.1), "vignette", _slave)>>
-		<<set _incomeStats.rep += Math.trunc($FResult*_vignette.effect*0.1)>>
-	<</if>>
-
-<</if>>
-
-/* FACILITY DECORATION IMPACTS */
-
-<<if _slave.assignment == "work as a farmhand">>
-<<if $farmyardDecoration != "standard">>
-<<set _fsGain = Math.min(0.0001*$FSSingleSlaveRep*(_food), 1)>>
-<<switch $farmyardDecoration>>
-<<case "Roman Revivalist">>
-	<<set $arcologies[0].FSRomanRevivalist = Math.clamp($arcologies[0].FSRomanRevivalist += _fsGain,0,100)>>
-<<case "Aztec Revivalist">>
-	<<set $arcologies[0].FSAztecRevivalist = Math.clamp($arcologies[0].FSAztecRevivalist += _fsGain,0,100)>>
-<<case "Egyptian Revivalist">>
-	<<set $arcologies[0].FSEgyptianRevivalist = Math.clamp($arcologies[0].FSEgyptianRevivalist += _fsGain,0,100)>>
-<<case "Edo Revivalist">>
-	<<set $arcologies[0].FSEdoRevivalist = Math.clamp($arcologies[0].FSEdoRevivalist += _fsGain,0,100)>>
-<<case "Arabian Revivalist">>
-	<<set $arcologies[0].FSArabianRevivalist = Math.clamp($arcologies[0].FSArabianRevivalist += _fsGain,0,100)>>
-<<case "Chinese Revivalist">>
-	<<set $arcologies[0].FSChineseRevivalist = Math.clamp($arcologies[0].FSChineseRevivalist += _fsGain,0,100)>>
-<<case "Chattel Religionist">>
-	<<set $arcologies[0].FSChattelReligionist = Math.clamp($arcologies[0].FSChattelReligionist += _fsGain,0,100)>>
-<<case "Degradationist">>
-	<<set $arcologies[0].FSDegradationist = Math.clamp($arcologies[0].FSDegradationist += _fsGain,0,100)>>
-<<case "Repopulation Focus">>
-	<<set $arcologies[0].FSRepopulationFocus = Math.clamp($arcologies[0].FSRepopulationFocus += _fsGain,0,100)>>
-<<case "Eugenics">>
-	<<set $arcologies[0].FSRestart = Math.clamp($arcologies[0].FSRestart += _fsGain,0,100)>>
-<<case "Asset Expansionist">>
-	<<set $arcologies[0].FSAssetExpansionist = Math.clamp($arcologies[0].FSAssetExpansionist += _fsGain,0,100)>>
-<<case "Transformation Fetishist">>
-	<<set $arcologies[0].FSTransformationFetishist = Math.clamp($arcologies[0].FSTransformationFetishist += _fsGain,0,100)>>
-<<case "Gender Radicalist">>
-	<<set $arcologies[0].FSGenderRadicalist = Math.clamp($arcologies[0].FSGenderRadicalist += _fsGain,0,100)>>
-<<case "Gender Fundamentalist">>
-	<<set $arcologies[0].FSGenderFundamentalist = Math.clamp($arcologies[0].FSGenderFundamentalist += _fsGain,0,100)>>
-<<case "Physical Idealist">>
-	<<set $arcologies[0].FSPhysicalIdealist = Math.clamp($arcologies[0].FSPhysicalIdealist += _fsGain,0,100)>>
-<<case "Hedonistic">>
-	<<set $arcologies[0].FSHedonisticDecadence = Math.clamp($arcologies[0].FSHedonisticDecadence += _fsGain,0,100)>>
-<<case "Supremacist">>
-	<<set $arcologies[0].FSSupremacist = Math.clamp($arcologies[0].FSSupremacist += _fsGain,0,100)>>
-<<case "Subjugationist">>
-	<<set $arcologies[0].FSSubjugationist = Math.clamp($arcologies[0].FSSubjugationist += _fsGain,0,100)>>
-<<case "Paternalist">>
-	<<set $arcologies[0].FSPaternalist = Math.clamp($arcologies[0].FSPaternalist += _fsGain,0,100)>>
-<<case "Pastoralist">>
-	<<set $arcologies[0].FSPastoralist = Math.clamp($arcologies[0].FSPastoralist += _fsGain,0,100)>>
-<<case "Maturity Preferentialist">>
-	<<set $arcologies[0].FSMaturityPreferentialist = Math.clamp($arcologies[0].FSMaturityPreferentialist += _fsGain,0,100)>>
-<<case "Youth Preferentialist">>
-	<<set $arcologies[0].FSYouthPreferentialist = Math.clamp($arcologies[0].FSYouthPreferentialist += _fsGain,0,100)>>
-<<case "Body Purist">>
-	<<set $arcologies[0].FSBodyPurist = Math.clamp($arcologies[0].FSBodyPurist += _fsGain,0,100)>>
-<<case "Slimness Enthusiast">>
-	<<set $arcologies[0].FSSlimnessEnthusiast = Math.clamp($arcologies[0].FSSlimnessEnthusiast += _fsGain,0,100)>>
-<</switch>>
-<</if>>
-<</if>>
diff --git a/src/js/datatypeCleanupJS.js b/src/js/datatypeCleanupJS.js
index 93ea2152a3abad1a9882792981e239475116e3b5..502086521a4b20e603f73a0d36efcf497978bab0 100644
--- a/src/js/datatypeCleanupJS.js
+++ b/src/js/datatypeCleanupJS.js
@@ -1440,6 +1440,7 @@ window.FacilityDatatypeCleanup = (function() {
 		/* facility specific variables */
 		BrothelDatatypeCleanup();
 		DairyDatatypeCleanup();
+		FarmyardDatatypeCleanup();
 		ClubDatatypeCleanup();
 		ServantsQuartersDatatypeCleanup();
 		SchoolroomDatatypeCleanup();
@@ -1561,6 +1562,16 @@ window.FacilityDatatypeCleanup = (function() {
 		V.milkmaidImpregnates = Math.clamp(+V.milkmaidImpregnates, 0, 1) || 0;
 	}
 
+	function FarmyardDatatypeCleanup() {
+		V.farmyard = Math.max(+V.farmyard, 0) || 0;
+		V.farmyardBreeding = Math.clamp(+V.farmyardBreeding, 0, 1) || 0;
+		V.farmyardShows = Math.clamp(+V.farmyardShows, 0, 1) || 0;
+		/* farmer */
+		V.Farmer = V.slaves.find(function(s) {
+			return s.assignment === "be the Farmer";
+		}) || 0;
+	}
+
 	function ClubDatatypeCleanup() {
 		/* ads */
 		V.clubAdsSpending = Math.clamp(+V.clubAdsSpending, 0, 5000) || 0;
diff --git a/src/js/economyJS.js b/src/js/economyJS.js
index b87818bda4d696b4cb20314274ae09f7e4076512..33f09c86e304632e6d87c18c2d0fcb640bfe110c 100644
--- a/src/js/economyJS.js
+++ b/src/js/economyJS.js
@@ -610,6 +610,8 @@ window.getSlaveCost = function(s) {
 		case Job.FARMYARD:
 			if(s.livingRules === LivingRule.NORMAL) {
 				cost += rulesCost * 1.5;
+			} else if (State.variables.farmyardDecoration === 'Roman Revivalist') {
+				cost += rulesCost * 1.5;
 			} else {
 				cost += rulesCost;
 			}
@@ -660,9 +662,7 @@ window.getSlaveCost = function(s) {
 				cost += rulesCost * 0.90;
 			}
 			break;
-		case Job.MADAM: case Job.DJ: case Job.NURSE: case Job.WARDEN:
-		case Job.ATTEND: case Job.STEWARD: case Job.MILKMAID: case Job.TEACHER:
-		case Job.MATRON:
+		case Job.MADAM: case Job.DJ: case Job.NURSE: case Job.WARDEN: case Job.ATTEND: case Job.STEWARD: case Job.MILKMAID: case Job.FARMER: case Job.TEACHER: case Job.MATRON:
 			cost += rulesCost * 2;
 			break;
 		default:
@@ -1049,7 +1049,7 @@ window.getSlaveStatisticData = function(s, facility) {
 		// Base data, even without facility
 		return {
 			ID: s.ID, slaveName: s.slaveName, customLabel: s.customLabel,
-			income: 0, adsIncome: 0, rep: 0, cost: getSlaveCost(s),
+			income: 0, adsIncome: 0, rep: 0, food: 0, cost: getSlaveCost(s),
 			customers: 0 /* brothel, club, ... */
 		};
 	}
@@ -1063,7 +1063,7 @@ window.getSlaveStatisticData = function(s, facility) {
 	} else {
 		const data = {
 			ID: s.ID, slaveName: s.slaveName, customLabel: s.customLabel,
-			income: 0, adsIncome: 0, rep: 0, cost: getSlaveCost(s),
+			income: 0, adsIncome: 0, rep: 0, food: 0, cost: getSlaveCost(s),
 			customers: 0 /* brothel, club, ... */
 		};
 		facility.income.set(s.ID, data);
diff --git a/src/js/food.js b/src/js/food.js
index e1382fb4cc571af5d83d3396660073837d029e82..97d39a998e59eb46780f9221def75beb37f4bad8 100644
--- a/src/js/food.js
+++ b/src/js/food.js
@@ -2,13 +2,13 @@
 /** @param {App.Entity.SlaveState} slave */
 window.foodAmount = function (slave) {
 	const V = State.variables;
-	var food = 400;									 //kg / food produced by base slave / week
+	var food = 400;													// kg / food produced by base slave / week
 	if (!slave) {
 		return null;
 	} else {
-		if (V.Farmer !== 0) {						   //if a farmer is assigned
-			food *= 1.1;								//TODO: expand this to account for farmer XP and skill
-			if (V.Farmer.skillFA >= V.masteredXP) {	 //if farmer is master
+		if (V.Farmer !== 0) {										// if a farmer is assigned
+			food *= 1.1;											// TODO: expand this to account for farmer XP and skill
+			if (V.Farmer.skillFA >= V.masteredXP) {					// if farmer is master
 				food *= 1.1;
 			}
 		}
@@ -17,36 +17,36 @@ window.foodAmount = function (slave) {
 		} else if (slave.devotion < -50) {
 			food *= 0.8;
 		}
-		if (slave.health > 50) {						//slave is extremely healthy or more
+		if (slave.health > 50) {									// slave is extremely healthy or more
 			food *= 1.1;
-		} else if (slave.health < -50) {				//slave is unhealthy or less
+		} else if (slave.health < -50) {							// slave is unhealthy or less
 			food *= 0.8;
 		}
-		if (slave.muscles > 30) {					   //slave is muscular or more
+		if (slave.muscles > 30) {									// slave is muscular or more
 			food *= 1.1;
-		} else if (slave.muscles <= -6) {			   //slave is weak or less
+		} else if (slave.muscles <= -6) {							// slave is weak or less
 			food *= 0.8;
 		}
-		if (slave.weight > 95) {						//slave is overweight or more
+		if (slave.weight > 95) {									// slave is overweight or more
 			food *= 0.9;
-		} else if (slave.weight > 130) {				//slave is fat or more
+		} else if (slave.weight > 130) {							// slave is fat or more
 			food *= 0.8;
-		} else if (slave.weight > 160) {				//slave is obese or more
+		} else if (slave.weight > 160) {							// slave is obese or more
 			food *= 0.7;
-		} else if (slave.weight > 190) {				//slave is very obese or more
+		} else if (slave.weight > 190) {							// slave is very obese or more
 			food *= 0.6;
 		}
-		if (slave.eyes === -1) {						//slave is nearsighted
+		if (slave.eyes === -1) {									// slave is nearsighted
 			food *= 0.8;
-		} else if (slave.eyes < -1) {				   //slave is blind
+		} else if (slave.eyes < -1) {								// slave is blind
 			food *= 0.6;
 		}
-		if (slave.hears === -1) {						//slave is hard of hearing
+		if (slave.hears === -1) {									// slave is hard of hearing
 			food *= 0.8;
-		} else if (slave.hears < -1) {				  //slave is deaf
+		} else if (slave.hears < -1) {								// slave is deaf
 			food *= 0.6;
 		}
-		if (slave.tired === 1) {						 //slave is tired
+		if (slave.tired === 1) {									// slave is tired
 			food *= 0.8;
 		}
 		food = Math.trunc(food);
@@ -57,47 +57,47 @@ window.foodAmount = function (slave) {
 
 /** @param {App.Entity.SlaveState} slave */
 window.farmShowsIncome = function (slave) {
-	//TODO: incorporate farmyardRestraints
+																	// TODO: incorporate farmyardRestraints
 	const V = State.variables;
 	let arcology = V.arcologies[0];
-	let cash = 999; //TODO: this is just a placeholder
+	let cash = 100;													// TODO: this is just a placeholder
 	if (!slave) {
 		return null;
 	} else {
-		if (V.Farmer !== 0) { //farmer is assigned
+		if (V.Farmer !== 0) {										// farmer is assigned
 			cash *= 1.1;
-			if (V.Farmer.skillFA >= V.masteredXP) { //farmer is master
+			if (V.Farmer.skillFA >= V.masteredXP) {					// farmer is master
 				cash *= 1.1;
 			}
 		}
 		/* OPEN FS EFFECTS */
 		if (arcology.FSSupremacist !== "unset") {
-			if (slave.race === arcology.FSSupremacistRace) { //slave is of supreme race
-				cash *= 0.9; //TODO: should supreme race slaves receive a penalty?
-				repX(-10, "food"); //TODO: should this cause a rep loss
+			if (slave.race === arcology.FSSupremacistRace) {		// slave is of supreme race
+				cash *= 0.9;										// TODO: should supreme race slaves receive a penalty?
+				repX(-10, "food");									// TODO: should this cause a rep loss
 			}
 		}
 		if (arcology.FSSubjugationist !== "unset") {
-			if (slave.race === arcology.FSSubjugationistRace) { //slave is of subjugated race
+			if (slave.race === arcology.FSSubjugationistRace) { 	// slave is of subjugated race
 				cash *= 1.1;
-				repX(10, "food"); //TODO: should this cause a rep gain?
+				repX(10, "food");									// TODO: should this cause a rep gain?
 			} else {
-				cash *= 0.9; //TODO: should unsubjugated race slaves receive a penalty?
+				cash *= 0.9;										// TODO: should unsubjugated race slaves receive a penalty?
 			}
 		}
 		if (arcology.FSRepopulationFocus !== "unset") {
-			if (slave.pregWeek > 16) { //slave is visibly pregnant
-				if (slave.eggType !== "human") { //with a non-human
+			if (slave.pregWeek > 16) {								// slave is visibly pregnant
+				if (slave.eggType !== "human") {					// with a non-human
 					cash *= 1.1;
 				}
 				cash *= 1.2;
-			} else { //slave is not visibly pregnant
-				cash *= 0.8; //TODO: should non-pregnant slaves receive a penalty?
+			} else {												// slave is not visibly pregnant
+				cash *= 0.8;										// TODO: should non-pregnant slaves receive a penalty?
 			}
 		}
 		if (arcology.FSRestart !== "unset") {
-			if (slave.pregWeek > 16) { //slave is visibly pregnant
-				if (slave.eggType !== "human") { //with a non-human
+			if (slave.pregWeek > 16) {								// slave is visibly pregnant
+				if (slave.eggType !== "human") {					// with a non-human
 					cash *= 0.9;
 					repX(-15, "food");
 				}
@@ -106,207 +106,222 @@ window.farmShowsIncome = function (slave) {
 			}
 		}
 		if (arcology.FSGenderRadicalist !== "unset") {
-			if (slave.genes === "XY") { //TODO: does this make sense?
+			if (slave.dick > 0) {									// TODO: does this make sense?
 				cash *= 1.1;
 			} else {
 				cash *= 0.8;
 			}
 		}
 		if (arcology.FSGenderFundamentalist !== "unset") {
-			if (slave.genes === "XX") {
-				cash *= 1.1; //TODO: does this make sense?
+			if (slave.dick > 0) {
+				cash *= 1.1;										// TODO: does this make sense?
 			} else {
 				cash *= 0.8;
 			}
 		}
 		if (arcology.FSPaternalist !== "unset") {
 			if (V.seeBestiality === 1) {
-				if (V.farmyardBreeding === 1) { //slaves are being bred
+				if (V.farmyardBreeding === 1) {						// slaves are being bred
 					cash *= 0.8;
-				} else { //slaves are putting on shows
+				} else {											// slaves are putting on shows
 					cash *= 0.9;
 				}
 			}
 		}
 		if (arcology.FSDegradationist !== "unset") {
 			if (V.seeBestiality === 1) {
-				if (V.farmyardBreeding === 1) { //slaves are being bred
+				if (V.farmyardBreeding === 1) {						// slaves are being bred
 					cash *= 1.2;
-				} else { //slaves are putting on shows
+				} else {											// slaves are putting on shows
 					cash *= 1.1;
 				}
 			}
 		}
 		if (arcology.FSBodyPurist !== "unset") {
-			if (slave.boobsImplant > 0) { //slave has breast implants
+			if (slave.boobsImplant > 0) {							// slave has breast implants
 				cash *= 0.9;
 			}
-			if (slave.buttImplant > 0) { //slave has butt implants
+			if (slave.buttImplant > 0) {							// slave has butt implants
 				cash *= 0.9;
 			}
-			if (slave.faceImplant > 0) { //slave has had facial surgery
+			if (slave.faceImplant > 0) {							// slave has had facial surgery
 				cash *= 0.9;
 			}
-			if (slave.lipsImplant > 0) { //slave has lip implants
+			if (slave.lipsImplant > 0) {							// slave has lip implants
 				cash *= 0.9;
 			}
 		}
 		if (arcology.FSTransformationFetishist !== "unset") {
-			if (slave.boobsImplant > 0) { //slave has breast implants
+			if (slave.boobsImplant > 0) {							// slave has breast implants
 				cash *= 1.1;
 			}
-			if (slave.buttImplant > 0) { //slave has butt implants
+			if (slave.buttImplant > 0) {							// slave has butt implants
 				cash *= 1.1;
 			}
-			if (slave.faceImplant > 0) { //slave has had facial surgery
+			if (slave.faceImplant > 0) {							// slave has had facial surgery
 				cash *= 1.1;
 			}
-			if (slave.lipsImplant > 0) { //slave has lip implants
+			if (slave.lipsImplant > 0) {							// slave has lip implants
 				cash *= 1.1;
 			}
 		}
 		if (arcology.FSYouthPreferentialist !== "unset") {
-			if (slave.visualAge > 25) { //slave looks older than 25
-				cash *= 0.8; //TODO: not sure what age this should be
+			if (slave.visualAge > 25) {								// slave looks older than 25
+				cash *= 0.8;										// TODO: not sure what age this should be
 			} else {
 				cash *= 1.2;
 			}
 		}
 		if (arcology.FSMaturityPreferentialist !== "unset") {
-			if (slave.visualAge > 25) { //slave looks older than 25
-				cash *= 1.2; //TODO: not sure what age this should be
+			if (slave.visualAge > 25) {								// slave looks older than 25
+				cash *= 1.2;										// TODO: not sure what age this should be
 			} else {
 				cash *= 0.8;
 			}
 		}
 		if (arcology.FSSlimnessEnthusiast !== "unset") {
-			if (slave.weight > 10) { //slave is curvy or more
-				cash *= 0.9; //TODO: not sure what weight this should be
-			} //TODO: should implants affect income?
-			if (slave.boobs > 799) { //slave has larger than a D cup
-				cash *= 0.9; //TODO: should this be smaller?
+			if (slave.weight > 10) {								// slave is curvy or more
+				cash *= 0.9;										// TODO: not sure what weight this should be
+			}														// TODO: should implants affect income?
+			if (slave.boobs > 799) {								// slave has larger than a D cup
+				cash *= 0.9;										// TODO: should this be smaller?
 			}
-			if (slave.butt > 3) { //slave has bigger than a bubble butt
+			if (slave.butt > 3) {									// slave has bigger than a bubble butt
 				cash *= 0.9;
 			}
 		}
 		if (arcology.FSAssetExpanionist !== "unset") {
-			if (slave.weight > 10) { //slave is curvy or more
-				cash *= 1.1; //TODO: not sure what weight this should be
-			} //TODO: should implants affect income?
-			if (slave.boobs > 799) { //slave has larger than a D cup
-				cash *= 1.1; //TODO: should this be smaller?
+			if (slave.weight > 10) {								// slave is curvy or more
+				cash *= 1.1;										// TODO: not sure what weight this should be
+			}														// TODO: should implants affect income?
+			if (slave.boobs > 799) {								// slave has larger than a D cup
+				cash *= 1.1;										// TODO: should this be smaller?
 			}
-			if (slave.butt > 3) { //slave has bigger than a bubble butt
+			if (slave.butt > 3) {									// slave has bigger than a bubble butt
 				cash *= 1.1;
 			}
 		}
 		if (arcology.FSPastoralist !== "unset") {
-			if (slave.boobs > 799) { //slave has larger than a D cup
+			if (slave.boobs > 799) {								// slave has larger than a D cup
 				cash *= 1.2;
 			}
-			if (slave.lactation > 0) { //slave is lactating
+			if (slave.lactation > 0) {								// slave is lactating
 				cash *= 1.1;
 			}
 		}
 		if (arcology.FSPhysicalIdealist !== "unset") {
-			if (slave.height > 169) { //slave is tall or taller
+			if (slave.height > 169) {								// slave is tall or taller
 				cash *= 1.1;
-			} else if (slave.height < 160) { //slave is short or shorter
+			} else if (slave.height < 160) {						// slave is short or shorter
 				cash *= 0.9;
 			}
 		}
 		if (arcology.FSHedonisticDecadence !== "unset") {
-			if (slave.weight > 10) { //slave is curvy or fatter
+			if (slave.weight > 10) { 								// slave is curvy or fatter
 				cash *= 1.1;
-			} else if (slave.weight < -10) { //slave is thin or thinner
+			} else if (slave.weight < -10) { 						// slave is thin or thinner
 				cash *= 0.9;
 			}
 		}
-		if (arcology.FSChattelReligionist !== "unset") { //TODO: I don't know what to put for this one
-			if (slave.devotion < 21) { //if slave is careful or less
+		if (arcology.FSChattelReligionist !== "unset") { 			// TODO: I don't know what to put for this one
+			if (slave.devotion < 21) { 								// if slave is careful or less
 				cash *= 0.9;
 			}
 		}
-		//TODO: should I add the ancient cultures FS?
+																	// TODO: should I add the ancient cultures FS?
 		/* CLOSE FS EFFECTS */
+
 		if (setup.entertainmentCareers.includes(slave.career)) {
 			cash *= 1.1;
 		} else if (setup.farmerCareers.includes(slave.career)) {
 			cash *= 1.1;
 		}
-		if (slave.prestige === 1) { //slave is prestigious
+		if (slave.prestige === 1) { 								// slave is prestigious
 			cash *= 1.1;
-		} else if (slave.prestige === 2) { //slave is very prestigious
+		} else if (slave.prestige === 2) { 							// slave is very prestigious
 			cash *= 1.2;
-		} else if (slave.prestige === 3) { //slave is extremely prestigious
+		} else if (slave.prestige === 3) { 							// slave is extremely prestigious
 			cash *= 1.3;
 		}
-		if (slave.pornPrestige === 1) { //slave is prestigious from porn
+		if (slave.pornPrestige === 1) { 							// slave is prestigious from porn
 			cash *= 1.1;
-		} else if (slave.pornPrestige === 2) { //slave is very prestigious from porn
+		} else if (slave.pornPrestige === 2) { 						// slave is very prestigious from porn
 			cash *= 1.2;
-		} else if (slave.pornPrestige === 3) { //slave is extremely prestigious from porn
+		} else if (slave.pornPrestige === 3) { 						// slave is extremely prestigious from porn
 			cash *= 1.3;
-		} //TODO: add relationship checks
-		if (slave.health > 20) { //slave is very healthy or more
+		} 															// TODO: add relationship checks
+		if (slave.health > 20) { 									// slave is very healthy or more
 			cash *= 1.1;
-		} else if (slave.health < -20) { //slave is less than unhealthy
+		} else if (slave.health < -20) { 							// slave is less than unhealthy
 			cash *= 0.8;
 		}
-		if (slave.face > 10) { //slave is very pretty or more
+		if (slave.face > 40) {										// slave is beautiful or more
+			cash *= 1.3;
+		} else if (slave.face > 10) {								// slave is very pretty or more
 			cash *= 1.1;
-		} else if (slave.face < -10) { //slave is less than unattractive
-			cash *= 0.8;
+		} else if (slave.face < -10) {								// slave is less than unattractive
+			cash *= 0.9;
+		} else if (slave.face < -40) {								// slave is less than ugly
+			cash *= 0.7
 		}
-		if (slave.devotion > 50) { //slave is devoted or more
+		if (slave.devotion > 50) { 									// slave is devoted or more
 			cash *= 1.1;
-		} else if (slave.devotion < -50) { //slave is reluctant or less
+		} else if (slave.devotion < -50) { 							// slave is reluctant or less
 			cash *= 0.8;
 		}
-		if (slave.trust > 50) { //slave is trusting or more
+		if (slave.trust > 50) { 									// slave is trusting or more
 			cash *= 1.1;
-		} else if (slave.trust < -50) { //slave is less than frightened
-			cash *= 0.8; //TODO: should trust be a factor?
+		} else if (slave.trust < -50) { 							// slave is less than frightened
+			cash *= 0.8;											// TODO: should trust be a factor?
 		}
-		if (slave.weight > 30) { //slave is curvy or more
-			cash *= 0.8; //TODO: tie in Hedonistic FS
-		} else if (slave.weight < -30) { //slave is very thin or less
-			cash *= 0.8; //TODO: put this on a scale
+		if (slave.weight > 30) { 									// slave is curvy or more
+			cash *= 0.8;											// TODO: tie in Hedonistic FS
+		} else if (slave.weight < -30) { 							// slave is very thin or less
+			cash *= 0.8;											// TODO: put this on a scale
 		}
-		if (slave.muscles > 30) { //slave is muscular or more
-			cash *= 0.9; //TODO: tie in height eugenics policy
-		} else if (slave.muscles < -30) { //slave is very weak or less
-			cash *= 0.9; //TODO: should this be on a scale?
+		if (slave.muscles > 30) { 									// slave is muscular or more
+			cash *= 0.9;											// TODO: tie in height eugenics policy
+		} else if (slave.muscles < -30) {							// slave is very weak or less
+			cash *= 0.9;											// TODO: should this be on a scale?
 		}
-		if (slave.eyes < 1) { //slaves eyesight is nearsighted or worse
-			cash *= 0.9; //TODO: should nearsighted and blind slaves receive a penalty?
+		if (slave.eyes < 1) {										// slaves eyesight is nearsighted or worse
+			cash *= 0.9;											// TODO: should nearsighted and blind slaves receive a penalty?
 		}
-		if (slave.hears < 0) { //slave is hard of hearing or less
-			cash *= 0.9; //TODO: should hard of hearing slaves receive a penalty?
+		if (slave.hears < 0) {										// slave is hard of hearing or less
+			cash *= 0.9;											// TODO: should hard of hearing slaves receive a penalty?
 		}
-		if (slave.boobs > 800) { //slave has a DD cup or bigger
-			cash *= 0.9; //TODO: would this make sense?
+		if (slave.boobs > 800) {									// slave has a DD cup or bigger
+			cash *= 0.9;											// TODO: would this make sense?
 		}
-		if (slave.butt > 4) { //slave has an enormous butt or bigger
-			cash *= 0.9; //TODO: would this make sense?
+		if (slave.butt > 4) {										// slave has an enormous butt or bigger
+			cash *= 0.9;											// TODO: would this make sense?
 		}
-		if (slave.preg < 0) { //slave is not fertile
-			cash *= 0.8; //TODO: not sure how to incorporate pregnancy
-		} //TODO: incorporate skills
-		if (slave.tired === 1) { //slave is tired
+		if (slave.preg > 10) {										// slave is pregnant and showing
+			cash *= 0.8;											// TODO: not sure how to incorporate pregnancy
+		}															// TODO: incorporate skills
+		if (slave.tired === 1) {									// slave is tired
 			cash *= 0.9;
 		}
-		if (slave.chem > 10) { //slave has high genetic damage
+		if (slave.chem > 10) {										// slave has high genetic damage
 			cash *= 0.9;
 		}
-		if (slave.intelligence > 50) { //slave is very smart or better
+		if (slave.intelligence > 50) {								// slave is very smart or better
 			cash *= 1.1;
-		} else if (slave.intelligence < -50) { //slave is very slow or less
+		} else if (slave.intelligence < -50) {						// slave is very slow or less
 			cash *= 0.8;
 		}
-		if (slave.energy < 20) { //slave has poor sex drive or less
+		if (slave.energy <= 20) {									// slave has no sex drive
+			cash *= 0.7;
+		} else if (slave.energy <= 40) {							// slave has poor sex drive
+			cash *= 0.8;
+		} else if (slave.energy <= 60) {							// slave has average sex drive
 			cash *= 0.9;
+		} else if (slave.energy <= 80) {							// slave has good sex drive
+			cash *= 1.1;
+		} else if (slave.energy <= 95) {							// slave has powerful sex drive
+			cash *= 1.2;
+		} else {													// slave is a nymphomaniac
+			cash *= 1.3;
 		}
 		if (slave.fetish === "submissive") {
 			cash *= 1.1;
@@ -314,7 +329,7 @@ window.farmShowsIncome = function (slave) {
 			cash *= 1.1;
 		} else if (slave.fetish === "masochist") {
 			cash *= 1.1;
-		} //TODO: tie in quirks and flaws
+		}															// TODO: tie in quirks and flaws
 		return cash;
 	}
 };
diff --git a/src/js/utilJS.js b/src/js/utilJS.js
index 0e4e61a472e921aab621dd69367d90fb928a3720..969a8e6e349c421f0413fe6451d09a0fba869a0d 100644
--- a/src/js/utilJS.js
+++ b/src/js/utilJS.js
@@ -603,7 +603,7 @@ window.cashFormat = function(s) {
 	if (s > 0) {
 		return `¤${ num(s)}`;
 	} else {
-		return `¤${s}`;
+		return `¤${ s.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',')}`;
 	}
 };
 
diff --git a/src/js/vignettes.js b/src/js/vignettes.js
index bc39f1dc80b58204232b5430cec176f8530eafbd..ed98dc5241a81161dc6220b766d219ed9eb43249 100644
--- a/src/js/vignettes.js
+++ b/src/js/vignettes.js
@@ -3559,7 +3559,7 @@ window.GetVignette = /** @param {App.Entity.SlaveState} slave */ function GetVig
 			});
 		}
 		//TODO: add more vignettes
-		if ((V.farmyardShows === 1) && (V.seeBestiality === 1)) {
+		if ((V.farmyardBreeding) && (V.seeBestiality === 1)) {
 			vignettes.push({
 				text: `a citizen didn't realize how disgusting he found bestiality until he attended one of ${V.farmyardName}'s shows,`,
 				type: "rep",
diff --git a/src/npc/fPCImpreg.tw b/src/npc/fPCImpreg.tw
index a6e6b23a125979a496151b5954d4b6d13e7d1275..29d611f7bbdb6fbcb67b3c594ed78419997dde75 100644
--- a/src/npc/fPCImpreg.tw
+++ b/src/npc/fPCImpreg.tw
@@ -123,7 +123,7 @@ You repeat this ritual throughout the week, ensuring that $activeSlave.slaveName
 	<</if>>
 <</if>>
 <<if $arcologies[0].FSGenderRadicalist != "unset" && $activeSlave.mpreg == 1>>
-	Society @@.green;approves@@ of your fucking your slaves ass pregnant; this advances the ideal all a slave needs is $his rear.
+	Society @@.green;approves@@ of your fucking your slaves' asses pregnant; this advances the ideal all a slave needs is $his rear.
 	<<run repX($FSSingleSlaveRep*($arcologies[0].FSGenderRadicalist/$FSLockinLevel), "futureSocieties", $activeSlave)>>
 	<<set $arcologies[0].FSGenderRadicalist += 0.05*$FSSingleSlaveRep>>
 <<elseif $arcologies[0].FSGenderFundamentalist != "unset" && $activeSlave.mpreg == 1>>
diff --git a/src/npc/fSlaveImpregConsummate.tw b/src/npc/fSlaveImpregConsummate.tw
index c7b0adde93ed825146422a3ad9b4dd8f317d12c5..c70527ee76b56a969eb0513eb0134ee9436cb016 100644
--- a/src/npc/fSlaveImpregConsummate.tw
+++ b/src/npc/fSlaveImpregConsummate.tw
@@ -278,7 +278,7 @@ Throughout the week, you keep $activeSlave.slaveName's <<if $activeSlave.mpreg =
 	<<set $failedElite += 1>>
 <</if>>
 <<if $arcologies[0].FSGenderRadicalist != "unset" && $activeSlave.mpreg == 1>>
-	Society @@.green;approves@@ of your breeding your slaves ass; this advances the ideal all a slave needs is their rear.
+	Society @@.green;approves@@ of your breeding your slave's ass; this advances the ideal all a slave needs is their rear.
 	<<run repX($FSSingleSlaveRep*($arcologies[0].FSGenderRadicalist/$FSLockinLevel), "futureSocieties", $activeSlave)>>
 	<<set $arcologies[0].FSGenderRadicalist += 0.05*$FSSingleSlaveRep>>
 <<elseif $arcologies[0].FSGenderFundamentalist != "unset" && $activeSlave.mpreg == 1>>
diff --git a/src/uncategorized/remoteSurgery.tw b/src/uncategorized/remoteSurgery.tw
index 197321305feb9a8f363cf0f9e0ae4757de53e389..10c396c0a0eeb1aefc6a8653fd13578290cd9484 100644
--- a/src/uncategorized/remoteSurgery.tw
+++ b/src/uncategorized/remoteSurgery.tw
@@ -632,7 +632,7 @@ $He has
 		//$His supportive mesh implant prevents reconstruction//
 	<<else>>
 		<<if ($activeSlave.boobShape == "saggy") || ($activeSlave.boobShape == "downward-facing")>>
-			[[Breast lift|Surgery Degradation][$activeSlave.boobShape = "normal", $activeSlave.health -= 20,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $surgeryType = "breastLift"]]<<if $activeSlave.preg > $activeSlave.pregData.normalBirth/1.42 || ($activeSlave.boobs >= 5000 && $activeSlave.boobs < 8000)>>//$His current state may result in $his breasts becoming saggy again//<</if>>
+			[[Breast lift|Surgery Degradation][$activeSlave.boobShape = "normal", $activeSlave.health -= 20,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $surgeryType = "breastLift"]]<<if $activeSlave.preg > $activeSlave.pregData.normalBirth/1.42 || ($activeSlave.boobs >= 5000 && $activeSlave.boobs < 8000)>> //$His current state may result in $his breasts becoming saggy again//<</if>>
 		<<else>>
 			<<if ($activeSlave.boobShape == "normal")>>
 				[[Reshape them to be perkier|Surgery Degradation][$activeSlave.boobShape = "perky",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$activeSlave.health -= 10,$surgeryType = "breastReconstruction"]]
diff --git a/src/uncategorized/slaveInteract.tw b/src/uncategorized/slaveInteract.tw
index 0e5d8a4045907af200018ef2777affa7abc6ef28..3f1f8cf9edf5b622d6bc1a1c2d24fda64b3e45ab 100644
--- a/src/uncategorized/slaveInteract.tw
+++ b/src/uncategorized/slaveInteract.tw
@@ -1670,9 +1670,9 @@ Hormones: <strong><span id="hormones">
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
 	<<if $activeSlave.clitPiercing == 3>>
 		<<if $activeSlave.dick < 1>>
-			$His smart clit piercing is set to
+			$His smart clit piercing <<if $activeSlave.vaginalAccessory == "smart bullet vibrator">>and smart bullet vibrator are<<else>>is<</if>> set to
 		<<else>>
-			$His smart frenulum piercing is set to
+			$His smart frenulum piercing <<if $activeSlave.vaginalAccessory == "smart bullet vibrator">>and smart bullet vibrator are<<else>>is<</if>> set to
 		<</if>>
 	<<else>>
 		$His smart bullet vibe is set to