diff --git a/devTools/types/FC/facilities.d.ts b/devTools/types/FC/facilities.d.ts
index c74e4d7810e7f6e42c4ee1101151a62b3e760b01..a530277fb63a9128b896b10c528d91b7fbde606d 100644
--- a/devTools/types/FC/facilities.d.ts
+++ b/devTools/types/FC/facilities.d.ts
@@ -28,7 +28,7 @@ declare namespace FC {
 		/** Any handler to run upon purchase. */
 		handler?: () => void;
 		/** Any additional information to display upon hover on the link. */
-		note?: string;
+		notes?: string[];
 		/**
 		 * Any prerequisites that must be met before the upgrade is available.
 		 *
diff --git a/src/004-base/arcologyBuilding.js b/src/004-base/arcologyBuilding.js
index ab6d149e1eb57783c2591611b8d8819fe10fd6b8..c8dd4bb816267ff885a0ddb35dfca47ba44c09ce 100644
--- a/src/004-base/arcologyBuilding.js
+++ b/src/004-base/arcologyBuilding.js
@@ -241,13 +241,13 @@ App.Arcology.Cell.BaseCell = class extends App.Entity.Serializable {
 	 * @param {function(): void} action
 	 * @param {number} cost
 	 * @param {App.Arcology.Building} containingBuilding
-	 * @param {string} [note]
+	 * @param {string[]} [notes]
 	 * @returns {HTMLDivElement}
 	 * @protected
 	 */
-	_makeInternalUpgrade(name, action, cost, containingBuilding, note) {
+	_makeInternalUpgrade(name, action, cost, containingBuilding, notes) {
 		return makePurchase(name, cost, "capEx", {
-			note,
+			notes,
 			handler: () => {
 				if (Dialog.isOpen()) {
 					Dialog.close();
@@ -268,15 +268,15 @@ App.Arcology.Cell.BaseCell = class extends App.Entity.Serializable {
 	 * @param {function(): void} action
 	 * @param {number} cost
 	 * @param {string} passage
-	 * @param {string} [note]
+	 * @param {string[]} [notes]
 	 * @returns {HTMLDivElement}
 	 * @protected
 	 */
-	_makeExternalUpgrade(name, action, cost, passage, note) {
+	_makeExternalUpgrade(name, action, cost, passage, notes) {
 		const div = document.createElement("div");
 
 		div.append(makePurchase(name, cost, "capEx", {
-			note,
+			notes,
 			handler: () => {
 				action();
 				Dialog.close();
diff --git a/src/004-base/facilityFramework.js b/src/004-base/facilityFramework.js
index af9a62a439e5bd67551d57de767af4d97334f1c8..4b8f1031c5d813dd158880fdf4df290b9c8821d8 100644
--- a/src/004-base/facilityFramework.js
+++ b/src/004-base/facilityFramework.js
@@ -149,7 +149,9 @@ App.Facilities.Facility = class Facility {
 
 		if (!this.expand.unexpandable) {
 			App.UI.DOM.appendNewElement("div", div, makePurchase(`Expand ${this.facility.name}`, cost, "capEx", {
-				note: ` and increases the capacity of ${this.facility.name} by ${num(amount)}.`,
+				notes: [
+					`increases the capacity of ${this.facility.name} by ${num(amount)}`
+				],
 				handler: () => {
 					if (typeof V[this.facility.desc.baseName] === 'object') {		// TODO: change this once all facilities are objects
 						V[this.facility.desc.baseName].capacity += amount;
diff --git a/src/Mods/SecExp/buildings/weaponsManufacturing.js b/src/Mods/SecExp/buildings/weaponsManufacturing.js
index 23bfbd5be00b52cd344376e359a0e7418ed21a37..6eba10ff2a83dcbfc24e178efb2aab5f41010f33 100644
--- a/src/Mods/SecExp/buildings/weaponsManufacturing.js
+++ b/src/Mods/SecExp/buildings/weaponsManufacturing.js
@@ -251,7 +251,7 @@ App.Mods.SecExp.weapManu = (function() {
 							link: `Invest in automating the complex`,
 							cost: 10000 * V.SecExp.buildings.weapManu.productivity,
 							handler: () => V.PC.skill.engineering += 0.1,
-							note: ` and will increase income in addition to speeding up upgrade production`,
+							notes: [`will increase income in addition to speeding up upgrade production`],
 						},
 						{
 							value: 2,
@@ -260,7 +260,7 @@ App.Mods.SecExp.weapManu = (function() {
 							link: `Invest in automating the complex`,
 							cost: 10000 * V.SecExp.buildings.weapManu.productivity,
 							handler: () => V.PC.skill.engineering += 0.1,
-							note: ` and will increase income in addition to speeding up upgrade production`,
+							notes: [`will increase income in addition to speeding up upgrade production`],
 						},
 						{
 							value: 3,
@@ -269,7 +269,7 @@ App.Mods.SecExp.weapManu = (function() {
 							link: `Invest in automating the complex`,
 							cost: 10000 * V.SecExp.buildings.weapManu.productivity,
 							handler: () => V.PC.skill.engineering += 0.1,
-							note: ` and will increase income in addition to speeding up upgrade production`,
+							notes: [`will increase income in addition to speeding up upgrade production`],
 						},
 						{
 							value: 4,
@@ -278,7 +278,7 @@ App.Mods.SecExp.weapManu = (function() {
 							link: `Invest in automating the complex`,
 							cost: 10000 * V.SecExp.buildings.weapManu.productivity,
 							handler: () => V.PC.skill.engineering += 0.1,
-							note: ` and will increase income in addition to speeding up upgrade production`,
+							notes: [`will increase income in addition to speeding up upgrade production`],
 						},
 						{
 							value: 5,
@@ -297,7 +297,7 @@ App.Mods.SecExp.weapManu = (function() {
 							link: `Invest in research and development`,
 							cost: 10000 * V.SecExp.buildings.weapManu.lab,
 							handler: () => V.PC.skill.engineering += 0.1,
-							note: ` and will increase income in addition to unlocking more advanced upgrades`,
+							notes: [`will increase income in addition to unlocking more advanced upgrades`],
 						},
 						{
 							value: 2,
@@ -306,7 +306,7 @@ App.Mods.SecExp.weapManu = (function() {
 							link: `Invest in research and development`,
 							cost: 10000 * V.SecExp.buildings.weapManu.lab,
 							handler: () => V.PC.skill.engineering += 0.1,
-							note: ` and will increase income in addition to unlocking more advanced upgrades`,
+							notes: [`will increase income in addition to unlocking more advanced upgrades`],
 						},
 						{
 							value: 3,
diff --git a/src/arcologyBuilding/ManageArcology.js b/src/arcologyBuilding/ManageArcology.js
index 40c912776a732ac13a75f1bdb6ee18e691f328ac..2f9b55eb32d96a75969c9934f7af9c3f9d52e709 100644
--- a/src/arcologyBuilding/ManageArcology.js
+++ b/src/arcologyBuilding/ManageArcology.js
@@ -101,7 +101,7 @@ App.UI.manageArcology = function() {
 		if (V.arcologyUpgrade.drones !== 1) {
 			App.UI.DOM.appendNewElement("div", div, `The first major upgrade needed is the installation of a drone security system so higher-class citizens will feel safe and protected should they choose to immigrate.`);
 			div.append(makePurchase(`Install drone security system`, 5000 * V.upgradeMultiplierArcology, "capEx", {
-				note: ` and increases upkeep.`,
+				notes: [`increases upkeep`],
 				handler: () => {
 					V.arcologyUpgrade.drones = 1;
 					V.PC.skill.engineering++;
@@ -113,7 +113,7 @@ App.UI.manageArcology = function() {
 			if (V.arcologyUpgrade.hydro !== 1) {
 				App.UI.DOM.appendNewElement("div", div, `The next major upgrade needed is the installation of a better water reclamation system so your residents will have access to cheaper water and hydroponically grown food.`);
 				div.append(makePurchase(`Upgrade water reclamation system`, 10000 * V.upgradeMultiplierArcology, "capEx", {
-					note: ` and increases upkeep.`,
+					notes: [`increases upkeep`],
 					handler: () => {
 						V.arcologyUpgrade.hydro = 1;
 						V.PC.skill.engineering++;
@@ -125,7 +125,7 @@ App.UI.manageArcology = function() {
 				if (V.arcologyUpgrade.apron !== 1) {
 					App.UI.DOM.appendNewElement("div", div, `The next major upgrade needed is the installation of a broader apron at the bottom of the arcology to increase its surface area and gather more solar energy. Right now, tenants that use a lot of power have to import it from outside.`);
 					div.append(makePurchase(`Install solar apron`, 20000 * V.upgradeMultiplierArcology, "capEx", {
-						note: ` and increases upkeep.`,
+						notes: [`increases upkeep`],
 						handler: () => {
 							V.arcologyUpgrade.apron = 1;
 							V.PC.skill.engineering++;
@@ -137,7 +137,7 @@ App.UI.manageArcology = function() {
 					if (V.arcologyUpgrade.grid !== 1) {
 						App.UI.DOM.appendNewElement("div", div, `The next major upgrade needed is an improvement of the arcology's electrical transmission lines to make efficient use of the additional power from the solar apron.`);
 						div.append(makePurchase(`Upgrade transmission lines`, 50000 * V.upgradeMultiplierArcology, "capEx", {
-							note: ` and increases upkeep.`,
+							notes: [`increases upkeep`],
 							handler: () => {
 								V.arcologyUpgrade.grid = 1;
 								V.PC.skill.engineering++;
@@ -215,7 +215,7 @@ App.UI.manageArcology = function() {
 				}),
 				`You could also choose to have your citizens cover most of the cost.`,
 				makePurchase(`Major subsidy`, 15000 * V.upgradeMultiplierArcology, "capEx", {
-					note: ` and will upset your citizens.`,
+					notes: [`will upset your citizens`],
 					handler: () => {
 						V.FCTV.receiver = 1;
 						V.FCTV.weekEnabled = V.week;
@@ -266,7 +266,7 @@ App.UI.manageArcology = function() {
 					div.append(
 						` Locals will do their best to repair the damage on their own, but setting up a disaster response unit will improve the recovery of infrastructure critical for keeping goods, people and information flowing smoothly in and out of your arcology.`,
 						makePurchase(`Create a disaster response unit`, 50000 * V.upgradeMultiplierArcology, "capEx", {
-							note: ` and increases upkeep.`,
+							notes: [`increases upkeep`],
 							handler: () => {
 								V.disasterResponse++;
 								V.PC.skill.engineering++;
@@ -277,7 +277,7 @@ App.UI.manageArcology = function() {
 					div.append(
 						` You are sending your disaster response unit to repair critical infrastructure. They are doing what they can.`,
 						makePurchase(`Purchase specialized all-weather equipment for the response unit`, 100_000 * V.upgradeMultiplierArcology, "capEx", {
-							note: ` and increases upkeep.`,
+							notes: [`increases upkeep`],
 							handler: () => {
 								V.disasterResponse++;
 								V.PC.skill.engineering++;
@@ -297,7 +297,7 @@ App.UI.manageArcology = function() {
 				div.append(
 					`The extreme weather hurts your arcology's ability to function. Reinforcing your passenger terminals increase the weather range at which they can operate.`,
 					makePurchase(`Reinforce the passenger terminals`, 50000 * V.upgradeMultiplierArcology, "capEx", {
-						note: ` and increases upkeep.`,
+						notes: [`increases upkeep`],
 						handler: () => {
 							V.antiWeatherFreeze++;
 							V.PC.skill.engineering++;
@@ -308,7 +308,7 @@ App.UI.manageArcology = function() {
 				div.append("You have reinforced your passenger terminals to function even during bad weather. You can invest in an all-weather transportation system that will remain operational, no matter the weather.");
 				div.append(
 					makePurchase(`Invest in a heavily-armored transportation system`, 100_000 * V.upgradeMultiplierArcology, "capEx", {
-						note: ` and increases upkeep.`,
+						notes: [`increases upkeep`],
 						handler: () => {
 							V.antiWeatherFreeze++;
 							V.PC.skill.engineering++;
@@ -649,7 +649,7 @@ App.UI.manageArcology = function() {
 		} else {
 			App.UI.DOM.appendNewElement("div", div, `Building specialized in the management of authority.`, ["detail"]);
 			div.append(makePurchase(`Set up the propaganda hub`, cost, "capEx", {
-				note: ` and increases upkeep.`,
+				notes: [`increases upkeep`],
 				handler: App.Mods.SecExp.propHub.init,
 			}));
 		}
@@ -663,7 +663,7 @@ App.UI.manageArcology = function() {
 		} else {
 			App.UI.DOM.appendNewElement("div", div, `Building specialized in the management of security and crime.`, ["detail"]);
 			div.append(makePurchase(`Set up the security headquarters`, cost, "capEx", {
-				note: ` and increases upkeep.`,
+				notes: [`increases upkeep`],
 				handler: App.Mods.SecExp.secHub.init,
 			}));
 		}
@@ -677,7 +677,7 @@ App.UI.manageArcology = function() {
 		} else {
 			App.UI.DOM.appendNewElement("div", div, `Building specialized in the management of armed forces.`, ["detail"]);
 			div.append(makePurchase(`Set up the barracks`, cost, "capEx", {
-				note: ` and increases upkeep.`,
+				notes: [`increases upkeep`],
 				handler: App.Mods.SecExp.barracks.init,
 			}));
 		}
@@ -691,7 +691,7 @@ App.UI.manageArcology = function() {
 		} else if (V.SecExp.settings.rebellion.enabled === 1) {
 			App.UI.DOM.appendNewElement("div", div, `Building specialized in the management and suppression of rebellions.`, ["detail"]);
 			div.append(makePurchase(`Set up the control center`, cost, "capEx", {
-				note: ` and increases upkeep.`,
+				notes: [`increases upkeep`],
 				handler: App.Mods.SecExp.riotCenter.init,
 			}));
 		}
diff --git a/src/arcologyBuilding/manufacturing.js b/src/arcologyBuilding/manufacturing.js
index 2fc84260c9760e928ca43ad47490f63638092c9f..bbff45144b68e4d0babd28d92b6cf1111cd6a121 100644
--- a/src/arcologyBuilding/manufacturing.js
+++ b/src/arcologyBuilding/manufacturing.js
@@ -198,7 +198,7 @@ App.Arcology.Cell.Manufacturing = class extends App.Arcology.Cell.BaseCell {
 					() => {
 						V.dairy = 5;
 						thisCell.type = "Dairy";
-					}, cost, "Dairy", ` and will incur upkeep costs`
+					}, cost, "Dairy", [`will incur upkeep costs`]
 				));
 			}
 
@@ -208,7 +208,7 @@ App.Arcology.Cell.Manufacturing = class extends App.Arcology.Cell.BaseCell {
 					() => {
 						V.farmyard = 5;
 						thisCell.type = "Farmyard";
-					}, cost, "Farmyard", ` and will incur upkeep costs`
+					}, cost, "Farmyard", [`will incur upkeep costs`]
 				));
 			}
 
@@ -219,7 +219,7 @@ App.Arcology.Cell.Manufacturing = class extends App.Arcology.Cell.BaseCell {
 						() => {
 							V.barracks = 1;
 							thisCell.type = "Barracks";
-						}, cost, "Barracks", ` and will reduce mercenary upkeep`
+						}, cost, "Barracks", [`will reduce mercenary upkeep`]
 					));
 				}
 			}
@@ -230,7 +230,7 @@ App.Arcology.Cell.Manufacturing = class extends App.Arcology.Cell.BaseCell {
 					() => {
 						App.Mods.SecExp.weapManu.Init();
 						thisCell.type = "Weapon Manufacturing";
-					}, cost, "Weapons Manufacturing", ` and will provide a weekly income`
+					}, cost, "Weapons Manufacturing", [`will provide a weekly income`]
 				));
 			}
 
diff --git a/src/facilities/arcade/arcade.js b/src/facilities/arcade/arcade.js
index 7d55e6b22f9c58813cbd87948b578bd4ed9445f0..e72d7d839536ddd87664f2dac557f6456bee2666 100644
--- a/src/facilities/arcade/arcade.js
+++ b/src/facilities/arcade/arcade.js
@@ -110,7 +110,7 @@ App.Facilities.Arcade.arcade = class Arcade extends App.Facilities.Facility {
 
 							App.UI.reload();
 						},
-						note: `, increases upkeep costs, and is mutually exclusive with the collectors`,
+						notes: [`increases upkeep costs, and is mutually exclusive with the collectors`],
 						prereqs: [
 							() => V.arcadeUpgradeCollectors < 1,
 						],
@@ -145,7 +145,7 @@ App.Facilities.Arcade.arcade = class Arcade extends App.Facilities.Facility {
 
 							App.UI.reload();
 						},
-						note: `, increases upkeep costs, and is mutually exclusive with the injectors`,
+						notes: [`increases upkeep costs, and is mutually exclusive with the injectors`],
 						prereqs: [
 							() => V.arcadeUpgradeInjectors < 1,
 						],
@@ -170,7 +170,7 @@ App.Facilities.Arcade.arcade = class Arcade extends App.Facilities.Facility {
 
 							App.UI.reload();
 						},
-						note: ` and will increase upkeep costs`,
+						notes: [`will increase upkeep costs`],
 					},
 				],
 			},
@@ -188,7 +188,7 @@ App.Facilities.Arcade.arcade = class Arcade extends App.Facilities.Facility {
 
 							App.UI.reload();
 						},
-						note: ` and will increase upkeep costs`,
+						notes: [`will increase upkeep costs`],
 					},
 				],
 			},
diff --git a/src/facilities/brothel/brothel.js b/src/facilities/brothel/brothel.js
index edd77423508ef2a2af287bb9d80186e663c5d481..f1807bb98c678ade01573a225701205239d9d6e4 100644
--- a/src/facilities/brothel/brothel.js
+++ b/src/facilities/brothel/brothel.js
@@ -194,7 +194,7 @@ App.Facilities.Brothel.brothel = class Brothel extends App.Facilities.Facility {
 						link: `Upgrade the brothel with aphrodisiac injection systems`,
 						cost: 10000 * V.upgradeMultiplierArcology * V.HackingSkillMultiplier,
 						handler: () => V.PC.skill.engineering += .1,
-						note: ` and will increase upkeep costs`,
+						notes: [`will increase upkeep costs`],
 					},
 					{
 						value: 0.1,
diff --git a/src/facilities/clinic/clinic.js b/src/facilities/clinic/clinic.js
index d349de507c0822a275374b2a37b5fd94b21b8559..ffa099a63148740ca1504f37953e1681fbaf9f5c 100644
--- a/src/facilities/clinic/clinic.js
+++ b/src/facilities/clinic/clinic.js
@@ -106,7 +106,7 @@ App.Facilities.Clinic.clinic = class Clinic extends App.Facilities.Facility {
 						link: `Upgrade the scanners to help detect genomic damage`,
 						cost: 10000 * V.upgradeMultiplierArcology * Math.min(V.upgradeMultiplierMedicine, V.HackingSkillMultiplier),
 						handler: () => V.PC.skill.hacking += 0.1,
-						note: ` and increases the effectiveness of ${V.clinicName}.`,
+						notes: [`increases the effectiveness of ${V.clinicName}`],
 					},
 					{
 						value: 1,
@@ -128,7 +128,7 @@ App.Facilities.Clinic.clinic = class Clinic extends App.Facilities.Facility {
 
 							App.UI.reload();
 						},
-						note: ` and increases the effectiveness of ${V.clinicName}.`,
+						notes: [`increases the effectiveness of ${V.clinicName}`],
 					},
 					{
 						value: 1,
@@ -145,7 +145,7 @@ App.Facilities.Clinic.clinic = class Clinic extends App.Facilities.Facility {
 						text: `It includes standard diagnostics equipment for common pathogens.`,
 						link: `Install an automated sequencer connected to the Gene Lab to help identify disease-causing pathogens`,
 						cost: 30000 * V.upgradeMultiplierArcology * Math.min(V.upgradeMultiplierMedicine, V.HackingSkillMultiplier),
-						note: ` and helps prevent and fight illness in large slave populations.`,
+						notes: [`helps prevent and fight illness in large slave populations`],
 						prereqs: [
 							() => V.geneticMappingUpgrade > 0
 						]
@@ -169,7 +169,7 @@ App.Facilities.Clinic.clinic = class Clinic extends App.Facilities.Facility {
 						link: `Increase the effectiveness of the impurity purging`,
 						cost: 150000 * V.upgradeMultiplierArcology * Math.min(V.upgradeMultiplierMedicine, V.HackingSkillMultiplier),
 						handler: () => V.PC.skill.hacking += 0.1,
-						note: ` and may cause health problems in slaves.`,
+						notes: [`may cause health problems in slaves`],
 						prereqs: [
 							() => V.clinicUpgradeFilters > 0,
 						],
@@ -181,7 +181,7 @@ App.Facilities.Clinic.clinic = class Clinic extends App.Facilities.Facility {
 						link: `Further increase the effectiveness of the impurity purging by utilizing nano magnets`,
 						cost: 300000 * V.upgradeMultiplierArcology * Math.min(V.upgradeMultiplierMedicine, V.HackingSkillMultiplier),
 						handler: () => V.PC.skill.hacking += 0.1,
-						note: ` and increases the effectiveness of ${V.clinicName}.`,
+						notes: [`increases the effectiveness of ${V.clinicName}`],
 					},
 					{
 						value: 2,
diff --git a/src/facilities/club/club.js b/src/facilities/club/club.js
index 70e31a416e45818b39342f4c409e10fdcbfc0380..bccf3b33b65a38649dfa25da4342803251215ecf 100644
--- a/src/facilities/club/club.js
+++ b/src/facilities/club/club.js
@@ -274,7 +274,7 @@ App.Facilities.Club.club = class Club extends App.Facilities.Facility {
 						link: `Upgrade them with PDAs to help your recruiter`,
 						cost: 10000 * V.upgradeMultiplierArcology * V.HackingSkillMultiplier,
 						handler: () => V.PC.skill.engineering += 0.1,
-						note: ` and will increase upkeep costs`,
+						notes: [`will increase upkeep costs`],
 					},
 					{
 						value: 1,
diff --git a/src/facilities/dairy/dairy.js b/src/facilities/dairy/dairy.js
index 33684e3483153fce09f43bf94881d9765c597747..ffbeccf79a5dd7d5a8111625fbb773d87b1c4b59 100644
--- a/src/facilities/dairy/dairy.js
+++ b/src/facilities/dairy/dairy.js
@@ -213,7 +213,7 @@ App.Facilities.Dairy.dairy = class Dairy extends App.Facilities.Facility {
 						link: `Upgrade the milking machines with intubators`,
 						cost: 10000 * V.upgradeMultiplierArcology,
 						handler: () => V.PC.skill.engineering += 0.1,
-						note: ` and will increase upkeep costs`,
+						notes: [`will increase upkeep costs`],
 					},
 					{
 						value: 1,
@@ -232,7 +232,7 @@ App.Facilities.Dairy.dairy = class Dairy extends App.Facilities.Facility {
 						link: `Upgrade the dairy to support pregnancies`,
 						cost: 2500 * V.upgradeMultiplierArcology,
 						handler: () => V.PC.skill.engineering += 0.1,
-						note: ` and will increase upkeep costs`,
+						notes: [`will increase upkeep costs`],
 					},
 					{
 						value: 1,
@@ -250,7 +250,7 @@ App.Facilities.Dairy.dairy = class Dairy extends App.Facilities.Facility {
 						link: `Upgrade the cockmilking machines with sodomizers`,
 						cost: 10000 * V.upgradeMultiplierArcology,
 						handler: () => V.PC.skill.engineering += 0.1,
-						note: ` and will increase upkeep costs`,
+						notes: [`will increase upkeep costs`],
 					},
 					{
 						value: 1,
diff --git a/src/facilities/farmyard/animals/animals.js b/src/facilities/farmyard/animals/animals.js
index 2f3722dd1cfba36b5ceffe83a3acc1815ea87ae8..09ee4edd805744e34c32d3d9fb7523a24b9117a7 100644
--- a/src/facilities/farmyard/animals/animals.js
+++ b/src/facilities/farmyard/animals/animals.js
@@ -294,7 +294,7 @@ App.Facilities.Farmyard.animals = function() {
 
 			return div;
 		} else {
-			return makePurchase(`Purchase ${animal.articleAn} ${animal.name}`, price, "farmyard", {note: ` and will incur upkeep costs.`, handler: purchaseHandler});
+			return makePurchase(`Purchase ${animal.articleAn} ${animal.name}`, price, "farmyard", {notes: [`will incur upkeep costs`], handler: purchaseHandler});
 		}
 	}
 
diff --git a/src/facilities/farmyard/farmyard.js b/src/facilities/farmyard/farmyard.js
index 6f87d550e79b29c23ed1ee6db9e3283fa8f44f63..51d1714fbf7e9c8e48c13999b78d4508b1b754fd 100644
--- a/src/facilities/farmyard/farmyard.js
+++ b/src/facilities/farmyard/farmyard.js
@@ -155,7 +155,9 @@ App.Facilities.Farmyard.farmyard = class Farmyard extends App.Facilities.Facilit
 
 							App.UI.reload();
 						},
-						note: ` and slightly decreases upkeep costs`,
+						notes: [
+							`slightly decreases upkeep cost.`
+						],
 					},
 					{
 						value: 1,
@@ -178,7 +180,10 @@ App.Facilities.Farmyard.farmyard = class Farmyard extends App.Facilities.Facilit
 
 							App.UI.reload();
 						},
-						note: `, moderately increases crop yield, and slightly increases upkeep costs`,
+						notes: [
+							`moderately increases crop yield`,
+							`slightly increases upkeep costs`,
+						],
 						prereqs: [
 							() => V.farmyardUpgrades.pump > 0,
 						],
@@ -204,7 +209,9 @@ App.Facilities.Farmyard.farmyard = class Farmyard extends App.Facilities.Facilit
 
 							App.UI.reload();
 						},
-						note: ` and moderately decreases upkeep costs`,
+						notes: [
+							`moderately decreases upkeep costs`,
+						],
 						prereqs: [
 							() => V.farmyardUpgrades.fertilizer > 0,
 						],
@@ -230,7 +237,10 @@ App.Facilities.Farmyard.farmyard = class Farmyard extends App.Facilities.Facilit
 
 							App.UI.reload();
 						},
-						note: `, moderately increases crop yield, and slightly increases upkeep costs`,
+						notes: [
+							`moderately increases crop yield`,
+							`slightly increases upkeep costs`,
+						],
 						prereqs: [
 							() => V.farmyardUpgrades.hydroponics > 0,
 						],
@@ -256,7 +266,10 @@ App.Facilities.Farmyard.farmyard = class Farmyard extends App.Facilities.Facilit
 
 							App.UI.reload();
 						},
-						note: `, moderately increases crop yield, and slightly increases upkeep costs`,
+						notes: [
+							`moderately increases crop yield`,
+							`slightly increases upkeep costs`,
+						],
 						prereqs: [
 							() => V.farmyardUpgrades.seeds > 0
 						],
@@ -481,7 +494,7 @@ App.Facilities.Farmyard.farmyard = class Farmyard extends App.Facilities.Facilit
 				handler: () => {
 					V.farmMenialsSpace += 100;
 				},
-				note: ` and increases housing by ${num(100)}.`,
+				notes: [`Increases housing by ${num(100)}`],
 			}));
 		}
 
@@ -524,7 +537,10 @@ App.Facilities.Farmyard.farmyard = class Farmyard extends App.Facilities.Facilit
 			div.append(
 				`There is enough room in ${V.farmyardName} to build kennels to house canines.`,
 				makePurchase(`Add kennels`, cost, "capEx", {
-					note: `will incur upkeep costs and unlocks domestic canines.`,
+					notes: [
+						`will incur upkeep costs`,
+						`unlocks domestic canines`,
+					],
 					handler: () => {
 						V.farmyardKennels = 1;
 						V.PC.skill.engineering += .1;
@@ -535,7 +551,10 @@ App.Facilities.Farmyard.farmyard = class Farmyard extends App.Facilities.Facilit
 			div.append(
 				App.UI.DOM.passageLink(`Kennels`, "Farmyard Animals"), ` have been built in one corner of ${V.farmyardName}, and are currently ${CL < 1 ? `empty` : `occupied by ${dogs}`}.`,
 				makePurchase(`Upgrade kennels`, cost * 2, "capEx", {
-					note: `will incur additional upkeep costs and unlocks exotic canines.`,
+					notes: [
+						`will incur additional upkeep costs`,
+						`unlocks exotic canines`,
+					],
 					handler: () => {
 						V.farmyardKennels = 2;
 						V.PC.skill.engineering += .1;
@@ -570,7 +589,10 @@ App.Facilities.Farmyard.farmyard = class Farmyard extends App.Facilities.Facilit
 			div.append(
 				`There is enough room in ${V.farmyardName} to build a stables to house hooved animals.`,
 				makePurchase(`Add stables`, cost, "capEx", {
-					note: `will incur upkeep costs and unlocks domestic hooved animals.`,
+					notes: [
+						`will incur upkeep costs`,
+						`unlocks domestic hooved animals`,
+					],
 					handler: () => {
 						V.farmyardStables = 1;
 						V.PC.skill.engineering += .1;
@@ -582,7 +604,10 @@ App.Facilities.Farmyard.farmyard = class Farmyard extends App.Facilities.Facilit
 				App.UI.DOM.passageLink(`Stables`, "Farmyard Animals"),
 				` have been built in one corner of ${V.farmyardName}, and are currently ${HL < 1 ? `empty` : `occupied by ${hooved}`}.`,
 				makePurchase(`Upgrade stables`, cost * 2, "capEx", {
-					note: `will incur additional upkeep costs and unlocks exotic hooved animals.`,
+					notes: [
+						`will incur additional upkeep cost`,
+						`unlocks exotic hooved animal.`
+					],
 					handler: () => {
 						V.farmyardStables = 2;
 						V.PC.skill.engineering += .1;
@@ -635,7 +660,10 @@ App.Facilities.Farmyard.farmyard = class Farmyard extends App.Facilities.Facilit
 			div.append(
 				`There is enough room in ${V.farmyardName} to build cages to house felines.`,
 				makePurchase(`Add cages`, cost, "capEx", {
-					note: `will incur upkeep costs and unlocks domestic felines.`,
+					notes: [
+						`will incur upkeep costs`,
+						`unlocks domestic felines`,
+					],
 					handler: () => {
 						V.farmyardCages = 1;
 						V.PC.skill.engineering += .1;
@@ -647,7 +675,10 @@ App.Facilities.Farmyard.farmyard = class Farmyard extends App.Facilities.Facilit
 				App.UI.DOM.passageLink(`Cages`, "Farmyard Animals"),
 				` have been built in one corner of ${V.farmyardName}, and are currently ${FL < 1 ? `empty` : `occupied by ${cats}`}. `,
 				makePurchase(`Upgrade cages`, cost * 2, "capEx", {
-					note: `will increase upkeep costs and unlocks exotic felines.`,
+					notes: [
+						`will increase upkeep cost`,
+						`unlocks exotic feline.`
+					],
 					handler: () => {
 						V.farmyardCages = 2;
 						V.PC.skill.engineering += .1;
diff --git a/src/facilities/manage/dispensary.js b/src/facilities/manage/dispensary.js
index bf62f297db18bd73d0d950aae8f6ab36cd60315a..bd3aceaefe70adc4f3e53403cf84a2c5b1c5d48c 100644
--- a/src/facilities/manage/dispensary.js
+++ b/src/facilities/manage/dispensary.js
@@ -34,13 +34,13 @@ App.UI.dispensary = function() {
 
 	/**
 	 * @param {string} name
-	 * @param {string} note
+	 * @param {string[]} notes
 	 * @param {function(): void} callback
 	 * @param {number} cost
 	 * @param {string} [existingDesc=""]
 	 * @returns {DocumentFragment}
 	 */
-	function upgrade(name, note, callback, cost, existingDesc = "") {
+	function upgrade(name, notes, callback, cost, existingDesc = "") {
 		const f = new DocumentFragment();
 		r = [];
 		if (existingDesc !== "") {
@@ -48,8 +48,8 @@ App.UI.dispensary = function() {
 		}
 		r.push(makePurchase(name, cost, "capEx", {
 			handler: callback,
-			note,
-			refresh: refresh,
+			notes,
+			refresh,
 		}));
 
 		App.Events.addNode(f, r, "div");
@@ -77,7 +77,7 @@ App.UI.dispensary = function() {
 
 		if (V.dispensaryUpgrade === 0) {
 			if (V.rep > 5000) {
-				p.append(upgrade("Upgrade the pharmaceutical fabricator", "Will improve production efficiency further decreasing costs.", () => {
+				p.append(upgrade("Upgrade the pharmaceutical fabricator", ["Will improve production efficiency, further decreasing costs."], () => {
 					V.dispensaryUpgrade = 1;
 					V.drugsCost = (V.drugsCost * 2) / 3;
 				}, 30000 * V.upgradeMultiplierArcology));
@@ -103,7 +103,7 @@ App.UI.dispensary = function() {
 			text += " standard growth hormones.";
 			if (V.rep > 6000) {
 				p.append(upgrade("Purchase data on prototype growth hormone tests",
-					"Should improve the reliability of growth injections of all kinds.",
+					["Should improve the reliability of growth injections of all kinds."],
 					() => { V.injectionUpgrade = 1; }, 25000 * pcSkillCheck, text));
 			} else {
 				r = [text];
@@ -114,7 +114,7 @@ App.UI.dispensary = function() {
 			text += " prototype growth hormones.";
 			if (V.rep > 10000) {
 				p.append(upgrade("Upgrade the fabricator to customize each slave's growth hormones",
-					"Should improve the reliability of growth injections of all kinds.",
+					["Should improve the reliability of growth injections of all kinds."],
 					() => { V.injectionUpgrade = 2; }, 50000 * pcSkillCheck, text));
 			} else {
 				r = [text];
@@ -125,7 +125,7 @@ App.UI.dispensary = function() {
 			text += " customized growth hormones.";
 			if (V.rep > 14000) {
 				p.append(upgrade("Upgrade the fabricator with prototype biomechanical microfactories",
-					"Should improve the reliability of growth injections of all kinds.",
+					["Should improve the reliability of growth injections of all kinds."],
 					() => { V.injectionUpgrade = 3; }, 100000 * pcSkillCheck, text));
 			} else {
 				r = [text];
@@ -141,7 +141,7 @@ App.UI.dispensary = function() {
 		if (V.hormoneUpgradeMood === 0) {
 			text += " standardized hormone replacement therapies.";
 			if (V.rep > 2000) {
-				p.append(upgrade("Upgrade for individualized therapy", "Should eliminate the occasional moodiness and sexual disinterest caused by generalized therapy.", () => { V.hormoneUpgradeMood = 1; }, 10000 * pcSkillCheck, text));
+				p.append(upgrade("Upgrade for individualized therapy", ["Should eliminate the occasional moodiness and sexual disinterest caused by generalized therapy."], () => { V.hormoneUpgradeMood = 1; }, 10000 * pcSkillCheck, text));
 			} else {
 				r = [text];
 				r.push(`<span class="note">You lack the reputation to obtain advanced drug manufacturing components.</span>`);
@@ -155,7 +155,7 @@ App.UI.dispensary = function() {
 		if (V.hormoneUpgradePower === 0) {
 			text += " are traditional: they're formulated to mimic natural hormones.";
 			if (V.rep > 4000) {
-				p.append(upgrade("Purchase data on advanced HRT", "Should increase the power of hormone therapies.", () => { V.hormoneUpgradePower = 1; }, 25000 * pcSkillCheck, text));
+				p.append(upgrade("Purchase data on advanced HRT", ["Should increase the power of hormone therapies."], () => { V.hormoneUpgradePower = 1; }, 25000 * pcSkillCheck, text));
 			} else {
 				r = [text];
 				r.push(`<span class="note">You lack the reputation to obtain prototype medicines.</span>`);
@@ -169,7 +169,7 @@ App.UI.dispensary = function() {
 		if (V.hormoneUpgradeShrinkage === 0) {
 			text += " are broad-spectrum.";
 			if (V.rep > 4000) {
-				p.append(upgrade("Purchase data on targeted HRT", "Should reduce atrophy of organs corresponding to original sex.", () => { V.hormoneUpgradeShrinkage = 1; }, 25000 * pcSkillCheck, text));
+				p.append(upgrade("Purchase data on targeted HRT", ["Should reduce atrophy of organs corresponding to original sex."], () => { V.hormoneUpgradeShrinkage = 1; }, 25000 * pcSkillCheck, text));
 			} else {
 				r = [text];
 				r.push(`<span class="note">You lack the reputation to obtain prototype medicines.</span>`);
@@ -182,7 +182,7 @@ App.UI.dispensary = function() {
 		if (V.precociousPuberty === 1) {
 			if (V.pubertyHormones === 0) {
 				if (V.rep > 4500 * pcSkillCheck) {
-					p.append(upgrade("Fund research into powerful hormonal injections to jumpstart puberty", "Will allow the production of powerful hormonal drugs designed to force a slave through puberty without regard for side effects.", () => { V.pubertyHormones = 1; }, 30000 * pcSkillCheck));
+					p.append(upgrade("Fund research into powerful hormonal injections to jumpstart puberty", ["Will allow the production of powerful hormonal drugs designed to force a slave through puberty without regard for side effects."], () => { V.pubertyHormones = 1; }, 30000 * pcSkillCheck));
 				} else {
 					App.Events.addNode(p, ["You lack the reputation to fund forced puberty drugs"], "div", ["note"]);
 				}
@@ -207,7 +207,7 @@ App.UI.dispensary = function() {
 		if (V.feeder === 1) {
 			if (V.dietXXY === 0) {
 				if (V.rep > 3500 * pcSkillCheck) {
-					p.append(upgrade("Fund research into developing hermaphrodite hormone therapies", "Will allow for specially balanced meals to be served in the cafeteria designed to promote both halves of a herm's sexuality.", () => { V.dietXXY = 1; }, 10000 * pcSkillCheck));
+					p.append(upgrade("Fund research into developing hermaphrodite hormone therapies", ["Will allow for specially balanced meals to be served in the cafeteria designed to promote both halves of a herm's sexuality."], () => { V.dietXXY = 1; }, 10000 * pcSkillCheck));
 				} else {
 					App.Events.addNode(p, ["You lack the reputation to fund research into hermaphrodite hormones."], "div", ["note"]);
 				}
@@ -222,7 +222,7 @@ App.UI.dispensary = function() {
 			if (V.feeder === 1) {
 				if (V.reproductionFormula === 0) {
 					if (V.rep > 10000 * pcSkillCheck) {
-						p.append(upgrade("Purchase reputable breeders' dietary blends", "Will allow for specially refined meals to be served in the cafeteria designed to promote energetic sperm and robust pregnancies. Side effects may include an increased number of twins being conceived.", () => { V.reproductionFormula = 1; }, 25000 * pcSkillCheck));
+						p.append(upgrade("Purchase reputable breeders' dietary blends", ["Will allow for specially refined meals to be served in the cafeteria designed to promote energetic sperm and robust pregnancies. Side effects may include an increased number of twins being conceived."], () => { V.reproductionFormula = 1; }, 25000 * pcSkillCheck));
 					} else {
 						App.Events.addNode(p, ["You lack the reputation to access breeders' dietary blends."], "div", ["note"]);
 					}
@@ -235,21 +235,21 @@ App.UI.dispensary = function() {
 		}
 
 		if (V.cumProDiet === 0) {
-			p.append(upgrade("Purchase recipes to encourage cum production", "Will allow for specially designed meals to be served in the cafeteria to promote cum production.", () => { V.cumProDiet = 1; }, 5000 * pcSkillCheck));
+			p.append(upgrade("Purchase recipes to encourage cum production", ["Will allow for specially designed meals to be served in the cafeteria to promote cum production."], () => { V.cumProDiet = 1; }, 5000 * pcSkillCheck));
 		} else {
 			App.Events.addNode(p, ["The fabricator is producing meals to be served in the cafeteria designed to promote cum production."], "div");
 		}
 
 		if (V.seePreg === 1) {
 			if (V.dietFertility === 0) {
-				p.append(upgrade("Purchase recipes to encourage ovulation", "Will allow for specially designed meals to be served in the cafeteria to promote slave fertility.", () => { V.dietFertility = 1; }, 5000 * pcSkillCheck));
+				p.append(upgrade("Purchase recipes to encourage ovulation", ["Will allow for specially designed meals to be served in the cafeteria to promote slave fertility."], () => { V.dietFertility = 1; }, 5000 * pcSkillCheck));
 			} else if (V.dietFertility === 1) {
 				App.Events.addNode(p, ["The fabricator is producing meals to be served in the cafeteria designed to promote slave fertility."], "div");
 			}
 		}
 
 		if (V.dietCleanse === 0) {
-			p.append(upgrade("Purchase cleansing recipes to lessen carcinogen buildup", "Will allow for specially designed meals to be served in the cafeteria to counteract excessive drug use.", () => { V.dietCleanse = 1; }, 10000 * pcSkillCheck));
+			p.append(upgrade("Purchase cleansing recipes to lessen carcinogen buildup", ["Will allow for specially designed meals to be served in the cafeteria to counteract excessive drug use."], () => { V.dietCleanse = 1; }, 10000 * pcSkillCheck));
 		} else if (V.dietCleanse === 1) {
 			App.Events.addNode(p, ["The fabricator is producing meals to be served in the cafeteria designed to counteract excessive drug use and good health. They smell awful and taste worse than they look, but they're healthy."], "div");
 		}
@@ -267,26 +267,26 @@ App.UI.dispensary = function() {
 		let p = document.createElement("p");
 
 		if (V.curativeUpgrade === 0 && V.rep > 6000 * pcSkillCheck) {
-			p.append(upgrade("Purchase data on advanced curatives", "Should improve the effectiveness of curative treatment.", () => { V.curativeUpgrade = 1; }, 25000 * pcSkillCheck));
+			p.append(upgrade("Purchase data on advanced curatives", ["Should improve the effectiveness of curative treatment."], () => { V.curativeUpgrade = 1; }, 25000 * pcSkillCheck));
 		} else if (V.curativeUpgrade === 1) {
 			App.Events.addNode(p, ["The fabricator is producing highly effective curative cocktails."], "div");
 		}
 
 
 		if (V.growthStim === 0 && V.rep > 6000 * pcSkillCheck) {
-			p.append(upgrade("Purchase data on growth stimulants", "Will allow the manufacturing of drugs to encourage growth in slave height.", () => { V.growthStim = 1; }, 20000 * pcSkillCheck));
+			p.append(upgrade("Purchase data on growth stimulants", ["Will allow the manufacturing of drugs to encourage growth in slave height."], () => { V.growthStim = 1; }, 20000 * pcSkillCheck));
 		} else if (V.growthStim === 1) {
 			App.Events.addNode(p, ["The fabricator is able to produce growth stimulants."], "div");
 		}
 
 		if (V.aphrodisiacUpgradeRefine === 0 && V.rep > 6000 * pcSkillCheck) {
-			p.append(upgrade("Purchase data on refined aphrodisiacs", "Will prevent most physical side effects of aphrodisiacs. Once the formulas are changed they cannot be changed back.", () => { V.aphrodisiacUpgradeRefine = 1; }, 20000 * pcSkillCheck));
+			p.append(upgrade("Purchase data on refined aphrodisiacs", ["Will prevent most physical side effects of aphrodisiacs. Once the formulas are changed they cannot be changed back."], () => { V.aphrodisiacUpgradeRefine = 1; }, 20000 * pcSkillCheck));
 		} else if (V.aphrodisiacUpgradeRefine === 1) {
 			App.Events.addNode(p, ["The fabricator is producing refined aphrodisiacs with limited hormonal effects."], "div");
 		}
 
 		if (V.aphrodisiacUpgrade === 0 && V.rep > 6000 * pcSkillCheck) {
-			p.append(upgrade("Purchase data on aphrodisiac withdrawal treatment", "Should prevent most negative effects of withdrawal.", () => { V.aphrodisiacUpgrade = 1; }, 10000 * pcSkillCheck));
+			p.append(upgrade("Purchase data on aphrodisiac withdrawal treatment", ["Should prevent most negative effects of withdrawal."], () => { V.aphrodisiacUpgrade = 1; }, 10000 * pcSkillCheck));
 		} else if (V.aphrodisiacUpgrade === 1) {
 			App.Events.addNode(p, ["The fabricator is producing a substitute that will protect slaves from aphrodisiac withdrawal."], "div");
 		}
@@ -294,7 +294,7 @@ App.UI.dispensary = function() {
 		if (V.healthyDrugsUpgrade === 0) {
 			if (V.injectionUpgrade !== 0 && V.curativeUpgrade === 1 && V.aphrodisiacUpgrade === 1) {
 				if (V.rep >= 15000 * pcSkillCheck) {
-					p.append(upgrade("Fund research into drug formulations without negative physical side effects", "Will prevent the negative side effects of excessive drug usage on your slaves.", () => { V.healthyDrugsUpgrade = 1; }, 500000 * pcSkillCheck));
+					p.append(upgrade("Fund research into drug formulations without negative physical side effects", ["Will prevent the negative side effects of excessive drug usage on your slaves."], () => { V.healthyDrugsUpgrade = 1; }, 500000 * pcSkillCheck));
 				} else {
 					App.Events.addNode(p, ["You lack the reputation to access the technology necessary to develop advanced drug formulations."], "div", ["note"]);
 				}
@@ -327,7 +327,7 @@ App.UI.dispensary = function() {
 			if (V.pregSpeedControl === 1) {
 				App.Events.addNode(p, ["The fabricator is producing extremely complex gestation control agents. They can be used to control gestation speed, and even suppress labor for some time."], "div");
 			} else if (V.superFertilityDrugs === 1 && V.rep > 10000 * pcSkillCheck) {
-				p.append(upgrade("Fund research pregnancy speed control methods", "Fund underground research labs to develop methods for controlling pregnancy progress.", () => {
+				p.append(upgrade("Fund research pregnancy speed control methods", ["Fund underground research labs to develop methods for controlling pregnancy progress."], () => {
 					V.pregSpeedControl = 1;
 					V.clinicSpeedGestation = 0;
 				}, 200000 * pcSkillCheck));
@@ -338,7 +338,7 @@ App.UI.dispensary = function() {
 			if (V.pregSpeedControl === 1) {
 				App.Events.addNode(p, ["The fabricator is producing extremely complex gestation control agents. They can be used to control gestation speed, and even suppress labor for some time."], "div");
 			} else if (V.rep > 10000 * pcSkillCheck) {
-				p.append(upgrade("Fund research pregnancy speed control methods", "Fund underground research labs to develop methods for controlling pregnancy progress.", () => {
+				p.append(upgrade("Fund research pregnancy speed control methods", ["Fund underground research labs to develop methods for controlling pregnancy progress."], () => {
 					V.pregSpeedControl = 1;
 					V.clinicSpeedGestation = 0;
 				}, 200000 * pcSkillCheck));
@@ -350,7 +350,7 @@ App.UI.dispensary = function() {
 		}
 
 		if (V.superFertilityDrugs === 0 && V.rep > 2500 * pcSkillCheck && V.seeHyperPreg === 1) {
-			p.append(upgrade("Purchase data on powerful fertility drugs", "Should improve the likelihood of conception and multiples.", () => { V.superFertilityDrugs = 1; }, 20000 * pcSkillCheck));
+			p.append(upgrade("Purchase data on powerful fertility drugs", ["Should improve the likelihood of conception and multiples."], () => { V.superFertilityDrugs = 1; }, 20000 * pcSkillCheck));
 		} else if (V.superFertilityDrugs === 1) {
 			App.Events.addNode(p, ["The fabricator is producing highly effective fertility agents. There is a warning present involving overdosing and instances of ten or more children."], "div");
 		}
@@ -369,7 +369,7 @@ App.UI.dispensary = function() {
 			if (V.arcologies[0].FSTransformationFetishistResearch === 0 && V.rep <= 5000 * pcSkillCheck) {
 				App.Events.addNode(p, ["You lack the reputation to access experimental gigantic implants and elasticizing filler."], "div", ["note"]);
 			} else if (V.arcologies[0].FSTransformationFetishistResearch === 0) {
-				p.append(upgrade("Purchase data on gigantic implants and elasticizing filler", "Will allow the fabrication of gigantic implants using the autosurgery and filler capable of overfilling existing fillable implants.", () => { V.arcologies[0].FSTransformationFetishistResearch = 1; }, 20000 * pcSkillCheck));
+				p.append(upgrade("Purchase data on gigantic implants and elasticizing filler", ["Will allow the fabrication of gigantic implants using the autosurgery and filler capable of overfilling existing fillable implants."], () => { V.arcologies[0].FSTransformationFetishistResearch = 1; }, 20000 * pcSkillCheck));
 			} else if (V.arcologies[0].FSTransformationFetishistResearch > 0) {
 				App.Events.addNode(p, ["The fabricator is capable of crafting gigantic implants and elasticizing filler designed to overfill existing implants."], "div");
 			}
@@ -383,7 +383,7 @@ App.UI.dispensary = function() {
 			App.Events.addNode(p, ["The fabricator has been upgraded to manufacture extremely powerful growth drugs."], "div");
 		} else if (V.arcologies[0].FSAssetExpansionistDecoration === 100) {
 			if (V.rep >= 5000 * pcSkillCheck) {
-				p.append(upgrade("Fund research into drug formulations for growth without limit", "Will allow creation of drugs to push assets to unthinkable sizes.", () => { V.arcologies[0].FSAssetExpansionistResearch = 1; }, 30000 * pcSkillCheck));
+				p.append(upgrade("Fund research into drug formulations for growth without limit", ["Will allow creation of drugs to push assets to unthinkable sizes."], () => { V.arcologies[0].FSAssetExpansionistResearch = 1; }, 30000 * pcSkillCheck));
 			} else {
 				App.Events.addNode(p, ["You lack the reputation to access the research necessary to develop advanced growth drug formulations."], "div", ["note"]);
 			}
@@ -395,7 +395,7 @@ App.UI.dispensary = function() {
 			App.Events.addNode(p, ["The fabricator has been upgraded to manufacture a compound that steadily improves intelligence."], "div");
 		} else if (V.arcologies[0].FSSlaveProfessionalismDecoration === 100) {
 			if (V.rep >= 5000 * pcSkillCheck) {
-				p.append(upgrade("Fund research into producing an intelligence boosting compound", "Will allow the creation of a drug that improves mental faculties.", () => { V.arcologies[0].FSSlaveProfessionalismResearch = 1; }, 60000 * pcSkillCheck));
+				p.append(upgrade("Fund research into producing an intelligence boosting compound", ["Will allow the creation of a drug that improves mental faculties."], () => { V.arcologies[0].FSSlaveProfessionalismResearch = 1; }, 60000 * pcSkillCheck));
 			} else {
 				App.Events.addNode(p, ["You lack the reputation to access the research necessary to produce an intelligence boosting compound."], "div", ["note"]);
 			}
@@ -407,7 +407,7 @@ App.UI.dispensary = function() {
 			App.Events.addNode(p, ["The fabricator has been upgraded to manufacture growth reversing drugs."], "div");
 		} else if (V.arcologies[0].FSSlimnessEnthusiastDecoration === 100) {
 			if (V.rep >= 5000 * pcSkillCheck) {
-				p.append(upgrade("Fund research into drug formulations for slimming slaves", "Will allow creation of drugs to shrink assets.", () => { V.arcologies[0].FSSlimnessEnthusiastResearch = 1; }, 30000 * pcSkillCheck));
+				p.append(upgrade("Fund research into drug formulations for slimming slaves", ["Will allow creation of drugs to shrink assets."], () => { V.arcologies[0].FSSlimnessEnthusiastResearch = 1; }, 30000 * pcSkillCheck));
 			} else {
 				App.Events.addNode(p, ["You lack the reputation to access the research necessary to develop asset reducing drug formulations."], "div", ["note"]);
 			}
@@ -419,7 +419,7 @@ App.UI.dispensary = function() {
 			App.Events.addNode(p, ["The fabricator has been upgraded to manufacture extremely effective beauty creams designed to combat aging."], "div");
 		} else if (V.arcologies[0].FSYouthPreferentialistDecoration === 100) {
 			if (V.rep >= 5000 * pcSkillCheck) {
-				p.append(upgrade("Fund research into skin care designed to reverse the effects of aging", "Will allow creation of beauty creams designed to make slaves look young again.", () => { V.arcologies[0].FSYouthPreferentialistResearch = 1; }, 30000 * pcSkillCheck));
+				p.append(upgrade("Fund research into skin care designed to reverse the effects of aging", ["Will allow creation of beauty creams designed to make slaves look young again."], () => { V.arcologies[0].FSYouthPreferentialistResearch = 1; }, 30000 * pcSkillCheck));
 			} else {
 				App.Events.addNode(p, ["You lack the reputation to access the research necessary to develop beauty creams designed to make slaves look young again."], "div", ["note"]);
 			}
@@ -430,14 +430,14 @@ App.UI.dispensary = function() {
 		if (V.arcologies[0].FSHedonisticDecadenceDecoration === 100) {
 			if (V.arcologies[0].FSHedonisticDecadenceResearch === 0) {
 				if (V.rep >= 5000 * pcSkillCheck) {
-					p.append(upgrade("Purchase recipes for concentrated, shaped slave food", `Will allow production of solid slave food in various familiar shapes and flavors. Addictive and a little fatty.${(V.arcologies[0].FSDegradationist === "unset" ? "" : " Since your slaves don't deserve luxuries, a modified recipe formulated to cause severe stomach cramps minutes after ingestion will be developed.")}`, () => { V.arcologies[0].FSHedonisticDecadenceResearch = 1; }, 50000 * pcSkillCheck));
+					p.append(upgrade("Purchase recipes for concentrated, shaped slave food", [`Will allow production of solid slave food in various familiar shapes and flavors. Addictive and a little fatty.${(V.arcologies[0].FSDegradationist === "unset" ? "" : " Since your slaves don't deserve luxuries, a modified recipe formulated to cause severe stomach cramps minutes after ingestion will be developed.")}`], () => { V.arcologies[0].FSHedonisticDecadenceResearch = 1; }, 50000 * pcSkillCheck));
 				} else {
 					App.Events.addNode(p, ["You lack the reputation to access the research necessary to purchase concentrated, shaped slave food recipes."], "div", ["note"]);
 				}
 			} else {
 				let text = `The fabricator has been upgraded to manufacture tasty, extremely addictive, solid slave food in various familiar shapes and flavors. While they look and taste like real food, their consistency is all wrong. Slaves gorging on them are likely to experience steady weight gain.${(V.arcologies[0].FSDegradationist === "unset" ? "" : " Since your slaves don't deserve luxuries, all food crafted will cause severe stomach cramps minutes after ingestion. Coupled with their addictive nature, it ought to be quite torturous.")}`;
 				if (V.arcologies[0].FSSlimnessEnthusiast > 50 && V.arcologies[0].FSHedonisticDecadenceDietResearch === 0) {
-					p.append(upgrade("Purchase diet recipes", "Will prevent rampant weight gain from ruining your slim slaves.", () => { V.arcologies[0].FSHedonisticDecadenceDietResearch = 1; }, 10000 * pcSkillCheck, text));
+					p.append(upgrade("Purchase diet recipes", ["Will prevent rampant weight gain from ruining your slim slaves."], () => { V.arcologies[0].FSHedonisticDecadenceDietResearch = 1; }, 10000 * pcSkillCheck, text));
 				} else if (V.arcologies[0].FSHedonisticDecadenceDietResearch === 1) {
 					App.Events.addNode(p, [text, "A diet recipe is being utilized to prevent unwanted weight gain."], "div");
 				}
@@ -445,7 +445,7 @@ App.UI.dispensary = function() {
 		} else if (V.arcologies[0].FSHedonisticDecadenceResearch === 1) {
 			let text = `The fabricator has been upgraded to manufacture tasty, extremely addictive, solid slave food in various familiar shapes and flavors. While they look and taste like real food, their consistency is all wrong. Slaves gorging on them are likely to experience steady weight gain.${V.arcologies[0].FSDegradationist === "unset" ? "" : "Since your slaves don't deserve luxuries, all food crafted will cause severe stomach cramps minutes after ingestion. Coupled with their addictive nature, it ought to be quite torturous."}`;
 			if (V.arcologies[0].FSHedonisticDecadenceDietResearch === 0) {
-				p.append(upgrade("Purchase diet recipes", `Will prevent rampant unwanted weight gain from ruining your ${V.arcologies[0].FSSlimnessEnthusiast > 20 ? "slim " : ""}slaves.`, () => { V.arcologies[0].FSHedonisticDecadenceDietResearch = 1; }, 10000 * pcSkillCheck));
+				p.append(upgrade("Purchase diet recipes", [`Will prevent rampant unwanted weight gain from ruining your ${V.arcologies[0].FSSlimnessEnthusiast > 20 ? "slim " : ""}slaves.`], () => { V.arcologies[0].FSHedonisticDecadenceDietResearch = 1; }, 10000 * pcSkillCheck));
 			} else if (V.arcologies[0].FSHedonisticDecadenceDietResearch === 1) {
 				App.Events.addNode(p, [text, "A diet recipe is being utilized to prevent unwanted weight gain."], "div");
 			}
diff --git a/src/facilities/masterSuite/masterSuite.js b/src/facilities/masterSuite/masterSuite.js
index 7a5e43b4981c27a48845f060991f2c0ae93b2f32..d9b7c76cb11c4ece1d2812bc5c67c4bb3421c95b 100644
--- a/src/facilities/masterSuite/masterSuite.js
+++ b/src/facilities/masterSuite/masterSuite.js
@@ -281,7 +281,7 @@ App.Facilities.MasterSuite.masterSuite = class MasterSuite extends App.Facilitie
 						link: `Refit the suite to the height of traditional opulence`,
 						cost: 25000 * V.upgradeMultiplierArcology,
 						handler: () => V.PC.skill.engineering += .1,
-						note: ` and will focus the suite on you`,
+						notes: [`will focus the suite on you`],
 					},
 					{
 						value: 0,
@@ -290,7 +290,7 @@ App.Facilities.MasterSuite.masterSuite = class MasterSuite extends App.Facilitie
 						link: `Remodel the suite around a luxurious pit for group sex`,
 						cost: 25000 * V.upgradeMultiplierArcology,
 						handler: () => V.PC.skill.engineering += .1,
-						note: ` and will encourage fucktoys to fuck each other`,
+						notes: [`will encourage fucktoys to fuck each other`],
 					},
 					{
 						value: 1,
@@ -298,7 +298,7 @@ App.Facilities.MasterSuite.masterSuite = class MasterSuite extends App.Facilitie
 						upgraded: 2,
 						link: `Remodel the suite around a luxurious pit for group sex`,
 						cost: 10000 * V.upgradeMultiplierArcology,
-						note: ` and will encourage fucktoys to fuck each other`,
+						notes: [`will encourage fucktoys to fuck each other`],
 					},
 					{
 						value: 2,
@@ -306,7 +306,7 @@ App.Facilities.MasterSuite.masterSuite = class MasterSuite extends App.Facilitie
 						upgraded: 1,
 						link: `Refit the suite to the height of traditional opulence`,
 						cost: 10000 * V.upgradeMultiplierArcology,
-						note: ` and will focus the suite on you`,
+						notes: [`will focus the suite on you`],
 					},
 				],
 			},
diff --git a/src/facilities/nursery/nursery.js b/src/facilities/nursery/nursery.js
index 686e96b245bfbd1ca61a4d55bf160438676f6f65..81eebf3378eb7dac4af4ec2b3663f3bae0449817 100644
--- a/src/facilities/nursery/nursery.js
+++ b/src/facilities/nursery/nursery.js
@@ -109,7 +109,7 @@ App.Facilities.Nursery.nursery = class Nursery extends App.Facilities.Facility {
 						link: `Upgrade the monitoring system`,
 						cost: 1000 * V.upgradeMultiplierArcology,
 						handler: () => V.PC.skill.engineering += 0.1,
-						note: ` and will increase upkeep costs`,
+						notes: [`will increase upkeep costs`],
 					},
 					{
 						value: 1,
@@ -127,7 +127,7 @@ App.Facilities.Nursery.nursery = class Nursery extends App.Facilities.Facility {
 						link: `Install a playground`,
 						cost: 1000 * V.upgradeMultiplierArcology,
 						handler: () => V.PC.skill.engineering += 0.1,
-						note: ` and will increase upkeep costs`,
+						notes: [`will increase upkeep costs`],
 					},
 					{
 						value: 1,
@@ -145,7 +145,7 @@ App.Facilities.Nursery.nursery = class Nursery extends App.Facilities.Facility {
 						link: `Invest in purpose-built hormones`,
 						cost: 1000 * V.upgradeMultiplierArcology,
 						handler: () => V.PC.skill.engineering += 0.1,
-						note: ` and will increase upkeep costs`,
+						notes: [`will increase upkeep costs`],
 					},
 					{
 						value: 1,
diff --git a/src/facilities/schoolroom/schoolroom.js b/src/facilities/schoolroom/schoolroom.js
index c45e8183787eee36a68f60bd79d69ed80c37d2e5..02f9d3117cb705fc0cfba60e21c9c7f9aef82293 100644
--- a/src/facilities/schoolroom/schoolroom.js
+++ b/src/facilities/schoolroom/schoolroom.js
@@ -104,7 +104,7 @@ App.Facilities.Schoolroom.schoolroom = class Schoolroom extends App.Facilities.F
 						text: `${this.facility.nameCaps} inculcates the basic skills necessary to a sex slave.`,
 						link: `Upgrade the curriculum to cover some intermediate skills`,
 						cost: 10000 * V.upgradeMultiplierArcology,
-						note: ` and increases the effectiveness of ${V.schoolroomName}`,
+						notes: [`increases the effectiveness of ${V.schoolroomName}`],
 					},
 					{
 						value: 1,
@@ -121,7 +121,7 @@ App.Facilities.Schoolroom.schoolroom = class Schoolroom extends App.Facilities.F
 						text: `${this.facility.nameCaps} includes only basic language classes in its curriculum.`,
 						link: `Install advanced linguistic interfaces to efficiently teach the arcology's lingua franca`,
 						cost: 5000 * V.upgradeMultiplierArcology * V.HackingSkillMultiplier,
-						note: ` and increases the effectiveness of ${V.schoolroomName}`,
+						notes: [`increases the effectiveness of ${V.schoolroomName}`],
 					},
 					{
 						value: 1,
@@ -170,7 +170,7 @@ App.Facilities.Schoolroom.schoolroom = class Schoolroom extends App.Facilities.F
 						text: `${this.facility.nameCaps} teaches woefully smart slaves using its modified methods.`,
 						link: `Purchase specialized materials to help smart slaves get on the right track`,
 						cost: 5000 * V.upgradeMultiplierArcology * V.HackingSkillMultiplier,
-						note: ` and increases the effectiveness of ${V.schoolroomName}`,
+						notes: [`increases the effectiveness of ${V.schoolroomName}`],
 						prereqs: [
 							() => V.schoolroomRemodelBimbo > 0,
 						],
@@ -189,7 +189,7 @@ App.Facilities.Schoolroom.schoolroom = class Schoolroom extends App.Facilities.F
 						link: `Purchase specialized materials to help stupid slaves learn good`,
 						cost: 5000 * V.upgradeMultiplierArcology * V.HackingSkillMultiplier,
 						handler: () => V.schoolroomRemodelBimbo = 0,
-						note: ` and increases the effectiveness of ${V.schoolroomName}`,
+						notes: [`increases the effectiveness of ${V.schoolroomName}`],
 						prereqs: [
 							() => V.schoolroomRemodelBimbo === 0,
 						],
diff --git a/src/facilities/servantsQuarters/servantsQuarters.js b/src/facilities/servantsQuarters/servantsQuarters.js
index 406ab74403f4967046fab24eeee8b23758520418..2179d22eb5075ccc85de405d26df16291a12a08b 100644
--- a/src/facilities/servantsQuarters/servantsQuarters.js
+++ b/src/facilities/servantsQuarters/servantsQuarters.js
@@ -102,7 +102,7 @@ App.Facilities.ServantsQuarters.servantsQuarters = class ServantsQuarters extend
 						link: `Upgrade the monitoring systems to force harder work`,
 						cost: 10000 * V.upgradeMultiplierArcology * V.HackingSkillMultiplier,
 						handler: () => V.PC.skill.hacking += 0.1,
-						note: ` and will increase upkeep costs`,
+						notes: [`will increase upkeep costs`],
 					},
 					{
 						value: 1,
diff --git a/src/facilities/spa/spa.js b/src/facilities/spa/spa.js
index 26e483764fb209950c2ef02be2799e221a76f031..e44076a07eec71cb1edab06d85b18d05edbe5fa8 100644
--- a/src/facilities/spa/spa.js
+++ b/src/facilities/spa/spa.js
@@ -106,7 +106,7 @@ App.Facilities.Spa.spa = class Spa extends App.Facilities.Facility {
 						text: `${this.facility.nameCaps} is a standard spa.`,
 						link: `Upgrade ${V.spaName} with saunas, steam rooms, and mineral water baths`,
 						cost: 1000 * V.upgradeMultiplierArcology,
-						note: ` and increases the effectiveness of ${V.spaName}`,
+						notes: [`increases the effectiveness of ${V.spaName}`],
 					},
 					{
 						value: 1,
diff --git a/src/js/Purchase.js b/src/js/Purchase.js
index 966cddca3b09308c818f1a09e816b862724ac0a3..c4d8bbe8a39db78351a636397d791f447c808112 100644
--- a/src/js/Purchase.js
+++ b/src/js/Purchase.js
@@ -4,12 +4,12 @@
  * @param {number} cost The amount of ¤ the purchase costs.
  * @param {keyof App.Data.Records.LastWeeksCash} what What the purchase is for.
  * @param {Object} [args] Any additional arguments to pass.
- * @param {string} [args.note] Any additional information to display.
+ * @param {string[]} [args.notes] Any additional information to display. Must be lowercase and end in no punctuation.
  * @param {function():void} args.handler Any custom handler to run upon purchase.
  * @param {[boolean, string][]} [args.prereqs] Any prerequisites that must be met for the purchase to be available, with a note for when the prerequisites are not met.
  * @param {function():void} [args.refresh] Any function to run that updates the screen, if not the default `App.UI.reload()`.
  */
-globalThis.makePurchase = function(text, cost, what, {note, handler, prereqs, refresh}) {
+globalThis.makePurchase = function(text, cost, what, {notes, handler, prereqs, refresh}) {
 	return App.UI.DOM.makeElement("div", V.purchaseStyle === 'button' ? renderButton() : renderLink());
 
 	function execute() {
@@ -35,10 +35,26 @@ globalThis.makePurchase = function(text, cost, what, {note, handler, prereqs, re
 			(!prereqs || prereqs.every(prereq => prereq[0] === true))) {
 			button.onclick = execute;
 
-			if (note) {
-				const text = note.substring(0, 5) === ' and ' ? note.slice(5) : note;
+			if (notes.length > 0) {
+				const span = document.createElement("span");
+				const ul = document.createElement("ul");
+
+				if (notes.length > 1) {
+					for (const li of notes.map(note => {
+						const li = document.createElement("li");
+						li.append(capFirstChar(note));
+						return li;
+					})) {
+						ul.append(li);
+					}
+
+					span.append(ul);
+				} else {
+					span.append(notes[0]);
+				}
+
 				tippy(button, {
-					content: capFirstChar(text),
+					content: span,
 				});
 			}
 		} else {
@@ -89,7 +105,7 @@ globalThis.makePurchase = function(text, cost, what, {note, handler, prereqs, re
 
 	function renderLink() {
 		const span = App.UI.DOM.makeElement("span", null, ['indent']);
-		const price = `${cost !== 0 ? `Costs ${cashFormat(Math.trunc(cost))}` : `Free`}${note || ''}`;
+		const price = [`${cost !== 0 ? `Costs ${cashFormat(Math.trunc(cost))}` : `Free`}`, ...notes];
 
 		if (V.cash >= cost &&
 			(!prereqs || prereqs.every(prereq => prereq[0] === true))) {
@@ -112,7 +128,7 @@ globalThis.makePurchase = function(text, cost, what, {note, handler, prereqs, re
 			span.append(App.UI.DOM.disabledLink(`${text} `, reasons));
 		}
 
-		App.UI.DOM.appendNewElement("span", span, price, ['note']);
+		App.UI.DOM.appendNewElement("span", span, toSentence(price), ['note']);
 
 		return span;
 	}
diff --git a/src/js/upgrade.js b/src/js/upgrade.js
index b68eab584ebd7106a5d53e778cd5cae822f58360..6c7300124909cc8fe83672bb5be740f09550d4e5 100644
--- a/src/js/upgrade.js
+++ b/src/js/upgrade.js
@@ -28,7 +28,7 @@ App.Upgrade = class Upgrade {
 
 		this.tiers.forEach(tier => {
 			const {
-				value, link, text, upgraded, handler, note, prereqs, nodes,
+				value, link, text, upgraded, handler, notes, prereqs, nodes,
 			} = tier;
 
 			const cost = Math.trunc(tier.cost) || 0;
@@ -39,7 +39,7 @@ App.Upgrade = class Upgrade {
 
 				if (link) {
 					App.UI.DOM.appendNewElement("div", frag, makePurchase(link, cost, "capEx", {
-						note,
+						notes,
 						handler: () => {
 							this._object[this._property] = upgraded;
 
diff --git a/src/personalAssistant/assistantOptions.js b/src/personalAssistant/assistantOptions.js
index 9fadb82adf5569bed2d40cf3582a631ca45aa58b..1d5a50918b1c162b465bdf2a49e90bdf102ad061 100644
--- a/src/personalAssistant/assistantOptions.js
+++ b/src/personalAssistant/assistantOptions.js
@@ -73,7 +73,7 @@ App.UI.personalAssistantOptions = function() {
 			App.Events.addParagraph(frag, [
 				`The next upgrade needed is a liquid nitrogen cooling system to allow for extensive overclocking.`,
 				makePurchase(`Install upgraded cooling system`, coolingCost, "capEx", {
-					note: ` and will allow you to upgrade the smart piercings in ${V.arcologies[0].name}.`,
+					notes: [`will allow you to upgrade the smart piercings in ${V.arcologies[0].name}`],
 					handler: () => {
 						V.assistant.power++;
 						V.PC.skill.engineering += 1;