diff --git a/src/facilities/farmyard/futureAnimals.tw b/src/facilities/farmyard/futureAnimals.tw
index 1710a0ceb1d7a19a61e174620365705d3cb294e8..eda757aaee2bf7455bb3eafbf37d40d74b2229e2 100644
--- a/src/facilities/farmyard/futureAnimals.tw
+++ b/src/facilities/farmyard/futureAnimals.tw
@@ -1,6 +1,6 @@
 /* Putting them here because commenting them out was breaking for some reason */
 
-		<<if $animalsBought.germanShepherds == 0>>
+	<<if $animalsBought.germanShepherds == 0>>
 		<<link "Purchase German Shepherds" "FarmyardAnimals">><<set cashX(forceNeg(Math.trunc(20000*$upgradeMultiplierArcology)), "farmyard"), $animalsBought.germanShepherds = 1, $animalsBought.canines += 1, $canines.push("German Shepherds")>><</link>>
 		<br>
 	<<elseif $animalsBought.germanShepherds == 1>>
diff --git a/src/facilities/farmyard/farmyardWidgets.js b/src/facilities/farmyard/reports/farmyardReport.js
similarity index 89%
rename from src/facilities/farmyard/farmyardWidgets.js
rename to src/facilities/farmyard/reports/farmyardReport.js
index 40946fe274441511839eeb4231640906b68629aa..68c0886b49b9a37bc319a04fc86b99118023a443 100644
--- a/src/facilities/farmyard/farmyardWidgets.js
+++ b/src/facilities/farmyard/reports/farmyardReport.js
@@ -1,10 +1,8 @@
-// MAIN FUNCTIONS
+App.Facilities.Farmyard.farmyardReport = function farmyardReport {
 
-App.Facilities.Farmyard.farmyardReport = () => {
 	const
-		slaves = V.slaves,
 		Farmer = V.Farmer,
-		FL = V.FarmyardiIDs.length;
+		FL = App.Entity.facilities.farmyard.employeesIDs().size;
 
 	let
 		t = ``,
@@ -96,9 +94,7 @@ App.Facilities.Farmyard.farmyardReport = () => {
 
 		if (Farmer.relationshipTarget === slave.ID) {
 			FarmerCashBonus -= 0.05;
-		} else if (V.familyTesting && areRelated(Farmer, slave) > 0) {
-			FarmerCashBonus += 0.05;
-		} else if (Farmer.relationTarget === slave.ID && !V.familyTesting) {
+		} else if (areRelated(Farmer, slave)) {
 			FarmerCashBonus += 0.05;
 		}
 
@@ -124,18 +120,16 @@ App.Facilities.Farmyard.farmyardReport = () => {
 	};
 
 
-	const farmerRelationshipSlaves = (length, Farmer) => {
-		for (let i = length; i--;) {
-			const
-				s = V.slaveIndices[V.FarmyardiIDs[i]],
-				slave = V.slaves[s],
-				p = getPronouns(Farmer);
+	/** @param {App.Entity.SlaveState} Farmer */
+	function farmerRelationshipSlaves(Farmer) {
+		const p = getPronouns(Farmer);
+		for (const slave of App.Utils.sortedEmployees(App.Entity.facilities.farmyard)) {
 
 			let t = ``;
 
 			if (Farmer.rivalryTarget === slave.ID) {
 				t += `${p.He} forces ${p.his} ${rivalryTerm(Farmer)} to service all the slaves in ${V.farmyardName}. `;    // TODO: not sure about this
-				slave.devotion -= 2; slaves.trust -= 2;
+				slave.devotion -= 2; slave.trust -= 2;
 				if (canDoVaginal(slave)) {
 					seX(slave, 'vaginal', 'public', 'penetrative', 10);
 				}
@@ -149,17 +143,14 @@ App.Facilities.Farmyard.farmyardReport = () => {
 			} else if (Farmer.relationshipTarget === slave.ID) {
 				t += `${p.He} dotes over ${p.his} ${relationshipTerm(Farmer)}, ${slave.slaveName}, making sure ${he} isn't worked too hard, but unfortunately manages to get in the way of ${his} work. `;
 				slave.devotion++;
-			} else if (V.familyTesting && areRelated(Farmer, slave) > 0) {
-				t += `${p.He} pays special attention to ${p.his} ${relativeTerm(Farmer.ID, slave.ID)}, ${slave.slaveName}, making sure ${he} is treated well and showing off ${his} skills. `; // TODO: does this need rewriting?
-				slave.trust++;
-			} else if (Farmer.relationTarget === slave.ID && !V.familyTesting) {
-				t += `${p.He} pays special attention to ${p.his} ${slave.relation}, ${slave.slaveName}, making sure ${he} is treated well and showing off ${his} skills. `; // TODO: does this need rewriting?
+			} else if (areRelated(Farmer, slave)) {
+				t += `${p.He} pays special attention to ${p.his} ${relativeTerm(Farmer, slave)}, ${slave.slaveName}, making sure ${he} is treated well and showing off ${his} skills. `;
 				slave.trust++;
 			}
 
 			return t;
 		}
-	};
+	}
 
 	const farmerWorks = slave => {
 		let
@@ -169,9 +160,9 @@ App.Facilities.Farmyard.farmyardReport = () => {
 			beauty;
 
 		if (V.showEWD) {
-			t += `<br>&nbsp;&nbsp;&nbsp;&nbsp;${He} ${saWorkTheFarm(slave)}`;
+			t += `<br>&nbsp;&nbsp;&nbsp;&nbsp;${He} ${App.SlaveAssignment.workTheFarm(slave)}`;
 		} else {
-			saWorkTheFarm(slave);
+			App.SlaveAssignment.workTheFarm(slave);
 		}
 
 		seed = V.cash - oldCash;
@@ -199,7 +190,7 @@ App.Facilities.Farmyard.farmyardReport = () => {
 			/* 000-250-006 */
 			t += `<span class="slave-name">${SlaveFullName(slave)}</span> is serving as the Farmer. `;
 			t += `<br>&nbsp;&nbsp;&nbsp;&nbsp;`;
-			t += saChoosesOwnClothes(slave);
+			t += App.SlaveAssignment.choosesOwnClothes(slave);
 			t += `<<include "SA rules">>`;
 			t += `<<include "SA diet">>`;
 			t += `<<include "SA long term effects">>`;
@@ -208,7 +199,7 @@ App.Facilities.Farmyard.farmyardReport = () => {
 			t += `<<include "SA rivalries">>`;
 			t += `<br><<include "SA devotion">>`;
 		} else {
-			saChoosesOwnClothes(slave);
+			App.SlaveAssignment.choosesOwnClothes(slave);
 			t += `<<silently>><<include "SA rules">><</silently>>`;
 			t += `<<silently>><<include "SA diet">><</silently>>`;
 			t += `<<silently>><<include "SA long term effects">><</silently>>`;
@@ -293,10 +284,10 @@ App.Facilities.Farmyard.farmyardReport = () => {
 				  </div>`;
 			}
 			/* 000-250-006 */
-			t += `<span class="slave-name">${SlaveFullName(slave)}</span> ${slave.choosesOwnAssignment === 2 ? `<<include "SA chooses own job>>` : `is working out of ${V.farmyardName}`}. `;
-			t += `<br>&nbsp;&nbsp;&nbsp;&nbsp;${He} ${saWorkTheFarm(slave)}`;
+			t += `<span class="slave-name">${SlaveFullName(slave)}</span> ${slave.choosesOwnAssignment === 2 ? `<<include "SA chooses own job">>` : `is working out of ${V.farmyardName}`}. `;
+			t += `<br>&nbsp;&nbsp;&nbsp;&nbsp;${He} ${App.SlaveAssignment.workTheFarm(slave)}`;
 			t += `<br>&nbsp;&nbsp;&nbsp;&nbsp;`;
-			t += saChoosesOwnClothes(slave);
+			t += App.SlaveAssignment.choosesOwnClothes(slave);
 			t += `<<include "SA rules">>`;
 			t += `<<include "SA diet">>`;
 			t += `<<include "SA long term effects">>`;
@@ -306,7 +297,7 @@ App.Facilities.Farmyard.farmyardReport = () => {
 			t += `<br><<include "SA devotion">>`;
 		} else {
 			t += `<<silently>><<include "SA chooses own job">><</silently>>`;
-			t += saChoosesOwnClothes(slave);
+			t += App.SlaveAssignment.choosesOwnClothes(slave);
 			t += `<<silently>><<include "SA rules">><</silently>>`;
 			t += `<<silently>><<include "SA diet">><</silently>>`;
 			t += `<<silently>><<include "SA long term effects">><</silently>>`;
@@ -410,9 +401,6 @@ App.Facilities.Farmyard.farmyardReport = () => {
 	const farmyardStatsDisplay = () => `<<FarmyardStatistics 0>><<timed 50ms>><<replace #farmyardstats>><<FarmyardStatistics 1>><</replace>><</timed>>`;
 
 	t += `<span id="farmyardstats"></span>`;
-	SlaveSort.IDs(V.FarmyardiIDs);  // TODO: not sure if I called this correctly
-
-
 
 	// MAIN LOOP
 
@@ -434,7 +422,7 @@ App.Facilities.Farmyard.farmyardReport = () => {
 		t += farmerIntelligence(Farmer);
 		t += farmerDick(Farmer);
 		t += farmerSmell(Farmer);
-		t += farmerRelationshipSlaves(FL, Farmer);
+		t += farmerRelationshipSlaves(Farmer);
 		t += farmerWorks(Farmer);
 	}
 
@@ -448,9 +436,8 @@ App.Facilities.Farmyard.farmyardReport = () => {
 		let oldCash = V.cash,
 			oldFood = V.food;
 
-		for (let i = FL; i--;) {
-			V.i = V.slaveIndices[V.FarmyardiIDs[i]];
-			const slave = slaves[V.i];
+		for (const slave of App.Utils.sortedEmployees(App.Entity.facilities.farmyard)) {
+			V.i = V.slaveIndices[slave.ID];
 
 			({
 				he, him, his, hers, himself, girl, He, His, loli