diff --git a/src/facilities/farmyard/farmyard.js b/src/facilities/farmyard/farmyard.js
index 9c21c86f856902d793ed25a8deb6b9cc11074348..d0766c931235250c84769ce39e7a38c96451f383 100644
--- a/src/facilities/farmyard/farmyard.js
+++ b/src/facilities/farmyard/farmyard.js
@@ -1,3 +1,76 @@
+App.Facilities.Farmyard.menials = function() {
+	const
+		frag = new DocumentFragment(),
+
+		links = [],
+		linksDiv = document.createElement("div"),
+
+		menials = V.menials,
+		farmMenials = V.farmMenials,
+		farmMenialsSpace = V.farmMenialsSpace;
+
+	linksDiv.classList.add("indent");
+
+	if (farmMenials) {
+		frag.append(`Assigned to ${V.farmyardName} ${farmMenials === 1 ? `is` : `are`} ${farmMenials} menial ${farmMenials === 1 ? `slave` : `slaves`}, working to produce as much food for your arcology as they can. `);
+	}
+
+	if (farmMenialsSpace) {
+		frag.append(`You ${menials ? `own ${num(menials)}` : `don't own any`} free menial slaves. ${V.farmyardNameCaps} can house ${farmMenialsSpace} menial slaves total, with ${farmMenialsSpace - farmMenials} free spots. `);
+	}
+
+	if (farmMenialsSpace && farmMenials < farmMenialsSpace) {
+		if (menials) {
+			links.push(App.UI.DOM.passageLink("Transfer in a menial slave", "Farmyard", () => {
+				V.menials--;
+				V.farmMenials++;
+			}));
+		}
+
+		if (menials >= 10 && farmMenials <= farmMenialsSpace - 10) {
+			links.push(App.UI.DOM.passageLink("Transfer in 10 menial slaves", "Farmyard", () => {
+				V.menials -= 10;
+				V.farmMenials += 10;
+			}));
+		}
+
+		if (menials >= 100 && farmMenials <= farmMenialsSpace - 100) {
+			links.push(App.UI.DOM.passageLink("Transfer in 100 menial slaves", "Farmyard", () => {
+				V.menials -= 100;
+				V.farmMenials += 100;
+			}));
+		}
+
+		if (menials) {
+			links.push(App.UI.DOM.passageLink("Transfer in all free menial slaves", "Farmyard", () => {
+				if (menials > farmMenialsSpace - farmMenials) {
+					V.menials -= farmMenialsSpace - farmMenials;
+					V.farmMenials = farmMenialsSpace;
+				} else {
+					V.farmMenials += menials;
+					V.menials = 0;
+				}
+			}));
+		}
+
+		if (farmMenials) {
+			links.push(App.UI.DOM.passageLink("Transfer out all menial slaves", "Farmyard", () => {
+				V.menials += farmMenials;
+				V.farmMenials = 0;
+			}));
+		}
+	} else if (!farmMenialsSpace) {
+		frag.append(`${V.farmyardNameCaps} cannot currently house any menial slaves. `);
+	} else {
+		frag.append(`${V.farmyardNameCaps} has all the menial slaves it can currently house assigned to it. `);
+	}
+
+	linksDiv.append(App.UI.DOM.generateLinksStrip(links));
+	frag.append(linksDiv);
+
+	return frag;
+};
+
 App.Facilities.Farmyard.rules = function() {
 	const frag = new DocumentFragment();
 
diff --git a/src/facilities/farmyard/farmyard.tw b/src/facilities/farmyard/farmyard.tw
index f21ed2178530e0196c752a29f31227b47c5430a6..3710789ef788717d698ce8ab995f50cef10995be 100644
--- a/src/facilities/farmyard/farmyard.tw
+++ b/src/facilities/farmyard/farmyard.tw
@@ -104,60 +104,7 @@
 </div>
 <span id="menials">
 <br>
-<<if $farmMenials > 0>>
-	Assigned here are $farmMenials slaves working to produce as much food as possible.
-<</if>>
-	<<if $farmMenialsSpace > 0>>
-	You <<if $menials > 0>> own <<print num($menials)>><<else>>don't own any<</if>> free menial slaves. $farmyardNameCaps can house <<print $farmMenialsSpace>> menial slaves total, with <<print $farmMenialsSpace - $farmMenials>> free slots.
-	<</if>>
-
-<br>
-
-<<if ($farmMenials < $farmMenialsSpace) && ($farmMenialsSpace > 0)>>
-	<<if $menials >= 1>>
-		<<link "Transfer in a menial slave">>
-			<<set $menials-->>
-			<<set $farmMenials++>>
-			<<goto "Farmyard">>
-		<</link>>
-	<</if>>
-	<<if $menials >= 10 && $farmMenials <= ($farmMenialsSpace - 10)>>
-		| <<link "Transfer in 10 menial slaves">>
-			<<set $menials -= 10>>
-			<<set $farmMenials += 10>>
-			<<goto "Farmyard">>
-		<</link>>
-	<</if>>
-	<<if $menials > 0>>
-		| <<link "Transfer in all free menial slaves">>
-			<<if $menials > $farmMenialsSpace - $farmMenials>>
-				<<set $menials -= $farmMenialsSpace - $farmMenials>>
-				<<set $farmMenials = $farmMenialsSpace>>
-			<<else>>
-				<<set $farmMenials += $menials>>
-				<<set $menials = 0>>
-			<</if>>
-			<<goto "Farmyard">>
-		<</link>>
-	<</if>>
-	<<if $farmMenials > 0>>
-	<<if $menials > 0>>|<</if>>
-		<<link "Transfer out all menial slaves">>
-			<<set $menials += $farmMenials>>
-			<<set $farmMenials = 0>>
-			<<goto "Farmyard">>
-		<</link>>
-	<</if>>
-<<elseif $farmMenialsSpace <= 0>>
-	$farmyardNameCaps cannot currently house any menial slaves.
-<<else>>
-	$farmyardNameCaps has all the menial slaves it can currently house assigned to it.
-	<<link "Transfer out all menial slaves">>
-		<<set $menials += $farmMenials>>
-		<<set $farmMenials = 0>>
-		<<goto "Farmyard">>
-	<</link>>
-<</if>>
+<<includeDOM App.Facilities.Farmyard.menials()>>
 
 <<if $farmMenialsSpace > 0>>
 	<<run MenialPopCap()>>