diff --git a/src/facilities/farmyard/farmyard.js b/src/facilities/farmyard/farmyard.js
index 9e46fa5bad00be717fbe3c2a5be237763691fa47..a7a0538440cd86bb6b71155938e38d092a81a518 100644
--- a/src/facilities/farmyard/farmyard.js
+++ b/src/facilities/farmyard/farmyard.js
@@ -528,22 +528,15 @@ App.Facilities.Farmyard.farmyard = function() {
 		if (!farmyardUpgrades.pump) {
 			const
 				desc = document.createElement("div"),
-				upgrade = App.UI.DOM.makeElement("div", '', "indent"),
-				note = App.UI.DOM.makeElement("span", '', "note"),
-				cost = App.UI.DOM.makeElement("span", '', "yellowgreen");
-
-			cost.append(cashFormat(pumpCost));
-
-			upgrade.append(App.UI.DOM.passageLink("Upgrade the water pump", "Farmyard", () => {
-				cashX(forceNeg(pumpCost), "farmyard");
-				farmyardUpgrades.pump = 1;
-			}));
-
-			note.append(` Costs `, cost, ` and slightly decreases upkeep costs.`);
+				upgrade = createUpgrade(
+					"Upgrade the water pump",
+					pumpCost,
+					'slightly decreases upkeep costs',
+					"pump"
+				);
 
 			desc.append(`${V.farmyardNameCaps} is currently using the basic water pump that it came with.`);
 
-			upgrade.append(note);
 			frag.append(desc, upgrade);
 		} else {
 			const desc = document.createElement("div");
@@ -553,20 +546,13 @@ App.Facilities.Farmyard.farmyard = function() {
 			frag.append(desc);
 
 			if (!farmyardUpgrades.fertilizer) {
-				const
-					upgrade = App.UI.DOM.makeElement("div", '', "indent"),
-					note = App.UI.DOM.makeElement("span", '', "note"),
-					cost = App.UI.DOM.makeElement("span", '', "yellowgreen");
-
-				cost.append(cashFormat(fertilizerCost));
-
-				upgrade.append(App.UI.DOM.passageLink("Use a higher-quality fertilizer", "Farmyard", () => {
-					cashX(forceNeg(fertilizerCost), "farmyard");
-					farmyardUpgrades.fertilizer = 1;
-				}));
-				note.append(` Costs `, cost, ` and moderately increases crop yield and slightly increases upkeep costs.`);
+				const upgrade = createUpgrade(
+					"Use a higher-quality fertilizer",
+					fertilizerCost,
+					'moderately increases crop yield and slightly increases upkeep costs',
+					"fertilizer"
+				);
 
-				upgrade.append(note);
 				frag.append(upgrade);
 			} else {
 				const desc = document.createElement("div");
@@ -576,21 +562,13 @@ App.Facilities.Farmyard.farmyard = function() {
 				frag.append(desc);
 
 				if (!farmyardUpgrades.hydroponics) {
-					const
-						upgrade = App.UI.DOM.makeElement("div", '', "indent"),
-						note = App.UI.DOM.makeElement("span", '', "note"),
-						cost = App.UI.DOM.makeElement("span", '', "yellowgreen");
-
-					cost.append(cashFormat(hydroponicsCost));
-
-					upgrade.append(App.UI.DOM.passageLink("Purchase an advanced hydroponics system", "Farmyard", () => {
-						cashX(forceNeg(hydroponicsCost), "farmyard");
-						farmyardUpgrades.hydroponics = 1;
-					}));
-
-					note.append(` Costs `, cost, ` and moderately decreases upkeep costs.`);
+					const upgrade = createUpgrade(
+						"Purchase an advanced hydroponics system",
+						hydroponicsCost,
+						'moderately decreases upkeep costs',
+						"hydroponics"
+					);
 
-					upgrade.append(note);
 					frag.append(upgrade);
 				} else {
 					const desc = document.createElement("div");
@@ -600,21 +578,13 @@ App.Facilities.Farmyard.farmyard = function() {
 					frag.append(desc);
 
 					if (!farmyardUpgrades.seeds) {
-						const
-							upgrade = App.UI.DOM.makeElement("div", '', "indent"),
-							note = App.UI.DOM.makeElement("span", '', "note"),
-							cost = App.UI.DOM.makeElement("span", '', "yellowgreen");
-
-						cost.append(cashFormat(seedsCost));
-
-						upgrade.append(App.UI.DOM.passageLink("Purchase genetically modified seeds", "Farmyard", () => {
-							cashX(forceNeg(seedsCost), "farmyard");
-							farmyardUpgrades.seeds = 1;
-						}));
+						const upgrade = createUpgrade(
+							"Purchase genetically modified seeds",
+							seedsCost,
+							'moderately increases crop yield and slightly increases upkeep costs',
+							"seeds"
+						);
 
-						note.append(` Costs `, cost, ` and moderately increases crop yield and slightly increases upkeep costs.`);
-
-						upgrade.append(note);
 						frag.append(upgrade);
 					} else {
 						const desc = document.createElement("div");
@@ -624,21 +594,13 @@ App.Facilities.Farmyard.farmyard = function() {
 						frag.append(desc);
 
 						if (!farmyardUpgrades.machinery) {
-							const
-								upgrade = App.UI.DOM.makeElement("div", '', "indent"),
-								note = App.UI.DOM.makeElement("span", '', "note"),
-								cost = App.UI.DOM.makeElement("span", '', "yellowgreen");
-
-							cost.append(cashFormat(machineryCost));
-
-							upgrade.append(App.UI.DOM.passageLink("Upgrade the machinery", "Farmyard", () => {
-								cashX(forceNeg(machineryCost), "farmyard");
-								farmyardUpgrades.machinery = 1;
-							}));
+							const upgrade = createUpgrade(
+								"Upgrade the machinery",
+								machineryCost,
+								'moderately increases crop yield and slightly increases upkeep costs',
+								"machinery"
+							);
 
-							note.append(` Costs `, cost, ` and moderately increases crop yield and slightly increases upkeep costs.`);
-
-							upgrade.append(note);
 							frag.append(upgrade);
 						} else {
 							const desc = document.createElement("div");
@@ -652,6 +614,27 @@ App.Facilities.Farmyard.farmyard = function() {
 			}
 		}
 
+		function createUpgrade(linkText, price, effect, type) {
+			const
+				desc = document.createElement("div"),
+				link = App.UI.DOM.makeElement("div", '', "indent"),
+				note = App.UI.DOM.makeElement("span", '', "note"),
+				cost = App.UI.DOM.makeElement("span", '', "yellowgreen");
+
+			cost.append(cashFormat(price));
+
+			link.append(App.UI.DOM.passageLink(linkText, "Farmyard", () => {
+				cashX(forceNeg(price), "farmyard");
+				farmyardUpgrades[type] = 1;
+			}));
+
+			note.append(` Costs `, cost, ` and ${effect}.`);
+			link.append(note);
+			desc.append(link);
+
+			return desc;
+		}
+
 		return frag;
 	}