diff --git a/Changelog.txt b/Changelog.txt
index 603e37d6fcd6febd3ae0a90bcaf599853ae999a6..95aa0077e1dc0dce2dedbfbcade50c709b077a5b 100644
--- a/Changelog.txt
+++ b/Changelog.txt
@@ -2,7 +2,10 @@ Pregmod
 
 0.10.7.1-3.5.x
 
+	7/06/2020
+
 	4
+	-added hair to the organ farm
 	-more code cleanup
 	-breast size immobilization floor raised for adult/teen slaves
 	-fixes
diff --git a/js/003-data/policiesData.js b/js/003-data/policiesData.js
index 48afb0e264384a799258f7c6d6c407f9aa80cf84..a16a4b8da04042cc65a5405cbf4fb16e10de7451 100644
--- a/js/003-data/policiesData.js
+++ b/js/003-data/policiesData.js
@@ -480,24 +480,20 @@ App.Data.Policies.Selection = {
 				title: "Coursing Association",
 				text: "you will sponsor a Coursing Association that will hold monthly races.",
 				get activatedText() {
-					const el = new DocumentFragment;
+					const el = new DocumentFragment();
 					el.append(`you are sponsoring a `);
-					el.append(App.UI.DOM.link(
-						"Coursing Association",
-						() => { },
-						[],
-						"Coursing Association"
-					));
+					el.append(App.UI.DOM.passageLink("Coursing Association", "Coursing Association"));
 					el.append(` that will hold monthly races.`);
 					return el;
 				},
 				get note() { return `Will cost ${cashFormat(1000)} weekly to maintain`; },
 				get activatedNote() {
+					const el = new DocumentFragment();
 					if (V.LurcherID !== 0) {
-						return `Your current lurcher is ${App.UI.slaveDescriptionDialog(getSlave(V.LurcherID))}`;
-					} else {
-						return ``;
+						el.append(`Your current lurcher is `);
+						el.append(App.UI.DOM.slaveDescriptionDialog(getSlave(V.LurcherID)));
 					}
+					return el;
 				}
 			}
 		],
diff --git a/src/002-config/fc-version.js b/src/002-config/fc-version.js
index a9fb197bc1f674f40e0a7cde80b7302313689a3d..fabf0257a38bcba7ae16e1a5a852d1071a6c9952 100644
--- a/src/002-config/fc-version.js
+++ b/src/002-config/fc-version.js
@@ -1,6 +1,6 @@
 App.Version = {
 	base: "0.10.7.1", // The vanilla version the mod is based off of, this should never be changed.
-	pmod: "3.5.3",
+	pmod: "3.5.4",
 	commitHash: null,
 	release: 1074
 };
diff --git a/src/004-base/organFarmBase.js b/src/004-base/organFarmBase.js
index 11fd5eb80313f09d911d47f8f4eb7d04f1d9c0f2..b6e2c6a7e2627f9f63c7158e6ca6686452bc2ccf 100644
--- a/src/004-base/organFarmBase.js
+++ b/src/004-base/organFarmBase.js
@@ -8,8 +8,10 @@ App.Medicine.OrganFarm.Organ = class {
 	 * @param {function(App.Entity.SlaveState):boolean} canGrow
 	 * @param {string[]} dependencies - organs that are implanted first if possible, use type of other organs as values
 	 * @param {App.Medicine.OrganFarm.OrganImplantAction[]} actions
+	 * @param {boolean} [displayMultipleActions=false] allow multiple implant links to be displayed
 	 */
-	constructor({type: type, name, tooltip= "", cost, time, canGrow = () => true, dependencies = [], actions= []} = {}) {
+	constructor({type, name, tooltip = "", cost, time, canGrow = () => true, dependencies = [],
+		displayMultipleActions = false, actions = []} = {}) {
 		this.type = type;
 		this.name = name;
 		this.tooltip = tooltip;
@@ -19,6 +21,7 @@ App.Medicine.OrganFarm.Organ = class {
 		this.canGrow = canGrow;
 		/** @type {string[]} */
 		this.dependencies = dependencies;
+		this.displayMultipleActions = displayMultipleActions;
 		/** @type {App.Medicine.OrganFarm.OrganImplantAction[]} */
 		this.implantActions = actions;
 
diff --git a/src/Mods/SecExp/buildings/transportHub.tw b/src/Mods/SecExp/buildings/transportHub.tw
index c567ba844afa9b2f4b6a6c83500ec0200a4e656e..8c109c753ff13109e080d3362bd89f297968712e 100644
--- a/src/Mods/SecExp/buildings/transportHub.tw
+++ b/src/Mods/SecExp/buildings/transportHub.tw
@@ -76,28 +76,28 @@ You quickly reach the transport hub, where a constant stream of vehicles, people
 /* airport */
 <<if $airport == 1>>
 	<<link "Modernize the airport">>
-		<<run cashX(forceNeg(5000*$upgradeMultiplierArcology), "capEx")>>
+		<<run cashX(forceNeg(Math.trunc(5000*$upgradeMultiplierArcology)), "capEx")>>
 		<<set $airport++>>
 		<<goto "transportHub">>
-	<</link>> //Will cost <<print cashFormat(5000*$upgradeMultiplierArcology)>> and will increase trade, but will affect security//
+	<</link>> //Will cost <<print cashFormat(Math.trunc(5000*$upgradeMultiplierArcology))>> and will increase trade, but will affect security//
 <<elseif $airport == 2>>
 	<<link "Enlarge the airport">>
-		<<run cashX(forceNeg(15000*$upgradeMultiplierArcology), "capEx")>>
+		<<run cashX(forceNeg(Math.trunc(15000*$upgradeMultiplierArcology)), "capEx")>>
 		<<set $airport++>>
 		<<goto "transportHub">>
-	<</link>> //Will cost <<print cashFormat(15000*$upgradeMultiplierArcology)>> and will increase trade, but will affect security//
+	<</link>> //Will cost <<print cashFormat(Math.trunc(15000*$upgradeMultiplierArcology))>> and will increase trade, but will affect security//
 <<elseif $airport == 3>>
 	<<link "Further modernize the airport">>
-		<<run cashX(forceNeg(45000*$upgradeMultiplierArcology), "capEx")>>
+		<<run cashX(forceNeg(Math.trunc(45000*$upgradeMultiplierArcology)), "capEx")>>
 		<<set $airport++>>
 		<<goto "transportHub">>
-	<</link>> //Will cost <<print cashFormat(45000*$upgradeMultiplierArcology)>> and will increase trade, but will affect security//
+	<</link>> //Will cost <<print cashFormat(Math.trunc(45000*$upgradeMultiplierArcology))>> and will increase trade, but will affect security//
 <<elseif $airport == 4>>
 	<<link "Further enlarge the airport">>
-		<<run cashX(forceNeg(85000*$upgradeMultiplierArcology), "capEx")>>
+		<<run cashX(forceNeg(Math.truc(85000*$upgradeMultiplierArcology)), "capEx")>>
 		<<set $airport++>>
 		<<goto "transportHub">>
-	<</link>> //Will cost <<print cashFormat(85000*$upgradeMultiplierArcology)>> and will increase trade, but will affect security//
+	<</link>> //Will cost <<print cashFormat(Math.trunc(85000*$upgradeMultiplierArcology))>> and will increase trade, but will affect security//
 <<else>>
 	The airport is fully upgraded.
 <</if>>
@@ -106,44 +106,44 @@ You quickly reach the transport hub, where a constant stream of vehicles, people
 <<if $terrain != "oceanic" && $terrain != "marine">>
 	<<if $railway == 1>>
 		<<link "Modernize the railway">>
-			<<run cashX(forceNeg(10000*$upgradeMultiplierArcology), "capEx")>>
+			<<run cashX(forceNeg(Math.trunc(10000*$upgradeMultiplierArcology)), "capEx")>>
 			<<set $railway++>>
 			<<goto "transportHub">>
-		<</link>> //Will cost <<print cashFormat(10000*$upgradeMultiplierArcology)>>, will increase trade and slightly lower arcology's upkeep, but will affect security//
+		<</link>> //Will cost <<print cashFormat(Math.trunc(10000*$upgradeMultiplierArcology))>>, will increase trade and slightly lower arcology's upkeep, but will affect security//
 	<<elseif $railway == 2>>
 		<<link "Enlarge the railway">>
-			<<run cashX(forceNeg(25000*$upgradeMultiplierArcology), "capEx")>>
+			<<run cashX(forceNeg(Math.trunc(25000*$upgradeMultiplierArcology)), "capEx")>>
 			<<set $railway++>>
 			<<goto "transportHub">>
-		<</link>> //Will cost <<print cashFormat(25000*$upgradeMultiplierArcology)>>, will increase trade and slightly lower arcology's upkeep, but will affect security//
+		<</link>> //Will cost <<print cashFormat(Math.trunc(25000*$upgradeMultiplierArcology))>>, will increase trade and slightly lower arcology's upkeep, but will affect security//
 	<<elseif $railway == 3>>
 		<<link "Further modernize and enlarge the railway">>
-			<<run cashX(forceNeg(65000*$upgradeMultiplierArcology), "capEx")>>
+			<<run cashX(forceNeg(Math.trunc(65000*$upgradeMultiplierArcology)), "capEx")>>
 			<<set $railway++>>
 			<<goto "transportHub">>
-		<</link>> //Will cost <<print cashFormat(65000*$upgradeMultiplierArcology)>>, will increase trade and slightly lower arcology's upkeep, but will affect security//
+		<</link>> //Will cost <<print cashFormat(Math.trunc(65000*$upgradeMultiplierArcology))>>, will increase trade and slightly lower arcology's upkeep, but will affect security//
 	<<else>>
 		The railway is fully upgraded.
 	<</if>>
 <<else>>
 	<<if $docks == 1>>
 		<<link "Modernize the docks">>
-			<<run cashX(forceNeg(10000*$upgradeMultiplierArcology), "capEx")>>
+			<<run cashX(forceNeg(Math.trunc(10000*$upgradeMultiplierArcology)), "capEx")>>
 			<<set $docks++>>
 			<<goto "transportHub">>
-		<</link>> //Will cost <<print cashFormat(10000*$upgradeMultiplierArcology)>>, will increase trade and slightly lower arcology's upkeep, but will affect security//
+		<</link>> //Will cost <<print cashFormat(Math.trunc(10000*$upgradeMultiplierArcology))>>, will increase trade and slightly lower arcology's upkeep, but will affect security//
 	<<elseif $docks == 2>>
 		<<link "Enlarge the docks">>
-			<<run cashX(forceNeg(25000*$upgradeMultiplierArcology), "capEx")>>
+			<<run cashX(forceNeg(Math.trunc(25000*$upgradeMultiplierArcology)), "capEx")>>
 			<<set $docks++>>
 			<<goto "transportHub">>
-		<</link>> //Will cost <<print cashFormat(25000*$upgradeMultiplierArcology)>>, will increase trade and slightly lower arcology's upkeep, but will affect security//
+		<</link>> //Will cost <<print cashFormat(Math.trunc(25000*$upgradeMultiplierArcology))>>, will increase trade and slightly lower arcology's upkeep, but will affect security//
 	<<elseif $docks == 3>>
 		<<link "Further modernize and enlarge the docks">>
-			<<run cashX(forceNeg(65000*$upgradeMultiplierArcology), "capEx")>>
+			<<run cashX(forceNeg(Math.trunc(65000*$upgradeMultiplierArcology)), "capEx")>>
 			<<set $docks++>>
 			<<goto "transportHub">>
-		<</link>> //Will cost <<print cashFormat(65000*$upgradeMultiplierArcology)>>, will increase trade and slightly lower arcology's upkeep, but will affect security//
+		<</link>> //Will cost <<print cashFormat(Math.trunc(65000*$upgradeMultiplierArcology))>>, will increase trade and slightly lower arcology's upkeep, but will affect security//
 	<<else>>
 		The docks are fully upgraded.
 	<</if>>
@@ -152,22 +152,22 @@ You quickly reach the transport hub, where a constant stream of vehicles, people
 /* security */
 <<if $hubSecurity == 1>>
 	<<link "Expand and modernize the surveillance system">>
-		<<run cashX(forceNeg(15000*$upgradeMultiplierArcology), "capEx")>>
+		<<run cashX(forceNeg(Mat.trunc(15000*$upgradeMultiplierArcology)), "capEx")>>
 		<<set $hubSecurity++>>
 		<<goto "transportHub">>
-	<</link>> //Will cost <<print cashFormat(15000*$upgradeMultiplierArcology)>> and lower the transport hub security modifiers//
+	<</link>> //Will cost <<print cashFormat(Math.trunc(15000*$upgradeMultiplierArcology))>> and lower the transport hub security modifiers//
 <<elseif $hubSecurity == 2>>
 	<<link "Establish a rapid response team">>
-		<<run cashX(forceNeg(35000*$upgradeMultiplierArcology), "capEx")>>
+		<<run cashX(forceNeg(Math.trunc(35000*$upgradeMultiplierArcology)), "capEx")>>
 		<<set $hubSecurity++>>
 		<<goto "transportHub">>
-	<</link>> //Will cost <<print cashFormat(35000*$upgradeMultiplierArcology)>> and further lower the transport hub security modifiers//
+	<</link>> //Will cost <<print cashFormat(Math.trunc(35000*$upgradeMultiplierArcology))>> and further lower the transport hub security modifiers//
 <<elseif $hubSecurity == 3>>
 	<<link "Add additional security drones to the structure">>
-		<<run cashX(forceNeg(55000*$upgradeMultiplierArcology), "capEx")>>
+		<<run cashX(forceNeg(Math.trunc(55000*$upgradeMultiplierArcology)), "capEx")>>
 		<<set $hubSecurity++>>
 		<<goto "transportHub">>
-	<</link>> //Will cost <<print cashFormat(55000*$upgradeMultiplierArcology)>> and further lower the transport hub security modifiers//
+	<</link>> //Will cost <<print cashFormat(Math.trunc(55000*$upgradeMultiplierArcology))>> and further lower the transport hub security modifiers//
 <<else>>
 	The hub security is fully upgraded
 <</if>>
diff --git a/src/Mods/SpecialForce/SpecialForce.js b/src/Mods/SpecialForce/SpecialForce.js
index 6e9631705647a088540b809c864746b29475c89f..ba69c9cc2cde609b346a4fcd84cd0b3132d175e1 100644
--- a/src/Mods/SpecialForce/SpecialForce.js
+++ b/src/Mods/SpecialForce/SpecialForce.js
@@ -91,7 +91,10 @@ App.SF.upgrades = (function() {
 	};
 
 	function total() {
-		return Object.values(V.SF.Squad).reduce((a,b) => a+b);
+		if (V.SF.Toggle === 0 || V.SF.Active < 1) {
+			return 0;
+		}
+ 		return Object.values(V.SF.Squad).reduce((a,b) => a+b);
 	}
 
 	function list(completeView = '') {
diff --git a/src/gui/css/mainStyleSheet.css b/src/gui/css/mainStyleSheet.css
index 47af08439aa425221b30d19aad0d3ea1023f235f..99a23af72c15df74833beeb920c99ff775bd56d1 100644
--- a/src/gui/css/mainStyleSheet.css
+++ b/src/gui/css/mainStyleSheet.css
@@ -409,3 +409,8 @@ div.center {
 div.flex-container {
 	display: flex;
 }
+
+/* TODO unify tooltip systems */
+.hasTooltip {
+	text-decoration: underline;
+}
\ No newline at end of file
diff --git a/src/js/utilsDOM.js b/src/js/utilsDOM.js
index bb016cc5a2faab9105a6aac1e6ef01c69f56766e..27531125aa81bb12b0711a878886f59807ec5109 100644
--- a/src/js/utilsDOM.js
+++ b/src/js/utilsDOM.js
@@ -188,7 +188,7 @@ App.Utils.passageElement = function(passage) {
 };
 
 /**
- * @param {Node|string} content
+ * @param {(Node|string)[]} content
  * @returns {DocumentFragment}
  */
 App.UI.DOM.combineNodes = function(...content) {
diff --git a/src/npc/surgery/organFarm.js b/src/npc/surgery/organFarm.js
index a1aafe6b95602ff4b32fc893d9000de38c122f55..20454e84b151f3e948285185548649209d3ebbe9 100644
--- a/src/npc/surgery/organFarm.js
+++ b/src/npc/surgery/organFarm.js
@@ -85,49 +85,57 @@ App.Medicine.OrganFarm.growIncubatorOrgan = function(slave, organType) {
 
 /**
  * @param {App.Entity.SlaveState} slave
- * @returns {string}
+ * @returns {DocumentFragment}
  */
 App.Medicine.OrganFarm.implantActions = function(slave) {
 	let slaveOrgans = V.completedOrgans.filter(o => o.ID === slave.ID);
-	if (slaveOrgans.length === 0) { return ""; }
+	if (slaveOrgans.length === 0) { return null; }
 
 	const F = App.Medicine.OrganFarm;
-	let r = "";
+	const grid = document.createElement("div");
+	grid.classList.add("grid-2columns-auto");
 
 	for (const organ of slaveOrgans) {
-		r += `<div>${F.Organs[organ.type].name}:</div><div>`;
+		App.UI.DOM.appendNewElement("div", grid, F.Organs[organ.type].name);
 
-		let anyAction = false;
-		let lines = [];
+		let links = [];
 		for (let i = 0; i < F.Organs[organ.type].implantActions.length; i++) {
 			const action = F.Organs[organ.type].implantActions[i];
 			if (action.canImplant(slave)) {
-				const implantLink = App.UI.link(action.name, App.Medicine.OrganFarm.implant, [slave, organ.type, i], "Surgery Degradation");
-				lines.push(`<span class="detail">${action.tooltip === "" ? "" : `${capFirstChar(action.tooltip)}: `}</span>${implantLink}`);
-				anyAction = true;
-				break; // there can only be one implant action
+				const link = App.UI.DOM.link(action.name, App.Medicine.OrganFarm.implant, [slave, organ.type, i], "Surgery Degradation");
+				const tooltip = action.tooltip === "" ? "" : `${capFirstChar(action.tooltip)}.`;
+				if (tooltip !== "") {
+					link.title = tooltip;
+					link.classList.add("hasTooltip");
+				}
+				links.push(link);
+				if (!F.Organs[organ.type].displayMultipleActions) {
+					break; // there can only be one implant action
+				}
 			} else {
 				const error = action.implantError(slave);
 				if (error !== "") {
-					lines.push(`ERROR: ${error} `);
+					const disabledLink = document.createElement("span");
+					disabledLink.append(action.name);
+					disabledLink.title = (error);
+					disabledLink.classList.add("hasTooltip");
+					links.push(disabledLink);
 				}
 			}
 		}
 
-		// each error on a new line
-		for (let i = 0; i < lines.length - 1; i++) {
-			r += `<div>${lines[i]}</div>`;
+		// all links in a row
+		const div = document.createElement("div");
+		for (let i = 0; i < links.length; i++) {
+			div.append(links[i], " | ");
 		}
 
 		// last error or implant action has "Discard" after them.
-		r += `<div>${lines[lines.length - 1]}`;
-		if (anyAction) {
-			r += " | ";
-		}
-		r += `${App.UI.link("Discard", App.Medicine.OrganFarm.removeOrgan, [slave, organ.type], "Remote Surgery")}</div></div>`;
+		div.append(App.UI.DOM.link("Discard", App.Medicine.OrganFarm.removeOrgan, [slave, organ.type], "Remote Surgery"));
+		grid.append(div);
 	}
 
-	return `The fabricator has completed ${slaveOrgans.length} organ(s):<div class="grid-2columns-auto">${r}</div>`;
+	return App.UI.DOM.combineNodes(`The fabricator has completed ${slaveOrgans.length} organ(s):`, grid);
 };
 
 /**
@@ -164,7 +172,7 @@ App.Medicine.OrganFarm.removeOrgan = function(slave, type) {
  * Organs the that can be implanted on the slave, sorted by dependencies first
  *
  * @param {App.Entity.SlaveState} slave
- * @returns {[string]}
+ * @returns {string[]}
  */
 App.Medicine.OrganFarm.getSortedOrgans = function(slave) {
 	const F = App.Medicine.OrganFarm;
@@ -194,30 +202,34 @@ App.Medicine.OrganFarm.getSortedOrgans = function(slave) {
  * Returns the full organ farm menu, hiding empty parts
  *
  * @param {App.Entity.SlaveState} slave
- * @returns {string}
+ * @returns {DocumentFragment}
  */
 App.Medicine.OrganFarm.fullMenu = function(slave) {
-	if (V.organFarmUpgrade >= 1 && slave.indentureRestrictions < 2) {
-		let r = "";
-
-		let actions = App.Medicine.OrganFarm.growActions(slave);
-		if (actions !== "") {
-			r += `<h3>Grow new organs</h3><div class="indent">${actions}</div>`;
-		}
+	const fragment = document.createDocumentFragment();
+	if (!(V.organFarmUpgrade >= 1 && slave.indentureRestrictions < 2)) {
+		return fragment;
+	}
 
-		actions = App.Medicine.OrganFarm.implantActions(slave);
-		if (actions !== "") {
-			r += `<h3>Implant organs</h3><div class="indent">${actions}</div>`;
-		}
+	let actions = App.Medicine.OrganFarm.growActions(slave);
+	let anyAction = false;
+	if (actions !== "") {
+		$(fragment).append(Wikifier.wikifyEval(`<h3>Grow new organs</h3><div class="indent">${actions}</div>`));
+		anyAction = true;
+	}
 
-		if (r === "") {
-			return "";
-		}
+	actions = App.Medicine.OrganFarm.implantActions(slave);
+	if (actions !== null) {
+		App.UI.DOM.appendNewElement("h3", fragment, "Implant Organs");
+		App.UI.DOM.appendNewElement("div", fragment, actions, "indent");
+		anyAction = true;
+	}
 
-		return `<h2>Organ Farm</h2>${r}`;
-	} else {
-		return "";
+	if (!anyAction) {
+		return fragment;
 	}
+
+	fragment.prepend(App.UI.DOM.makeElement("h2", "Organ Farm"));
+	return fragment;
 };
 
 App.Medicine.OrganFarm.currentlyGrowing = function() {
diff --git a/src/npc/surgery/organs.js b/src/npc/surgery/organs.js
index 4861d11cc80f5dc7ed0214eb84de400eecf4acb7..e87a34799a5e322b61a4ad73b2ca6cbfca8cf585 100644
--- a/src/npc/surgery/organs.js
+++ b/src/npc/surgery/organs.js
@@ -387,7 +387,7 @@ App.Medicine.OrganFarm.init = function() {
 	});
 
 	new App.Medicine.OrganFarm.Organ({
-		type: "hair", name: "Hair Follicles", cost: 500, time: 2,
+		type: "hair", name: "Hair Follicles", cost: 500, time: 2, displayMultipleActions: true,
 		actions: [
 			new App.Medicine.OrganFarm.OrganImplantAction({
 				name: "Scalp", healthImpact: 10, surgeryType: "restoreHairHead",
@@ -400,23 +400,14 @@ App.Medicine.OrganFarm.init = function() {
 					s.hColor = s.origHColor;
 				}
 			}),
-			/*
+			/* So apparently hair is tracked via the .earTColor variable with no differential between possible hair origin. Not worth the variable, currently.
 			new App.Medicine.OrganFarm.OrganImplantAction({
 				name: "Ears", healthImpact: 5,
 				surgeryType: "addHairEarsH", autoImplant: false,
-				canImplant: s => (s.earShape !== "normal"),
-				implantError: s => getRightEyeVision(s) !== 0 ? "Slave has a working right eye." : "",
-				implant: s => {
-					s.earShape = "normal";
-				}
-			}),
-			new App.Medicine.OrganFarm.OrganImplantAction({
-				name: "Ears", healthImpact: 5,
-				surgeryType: "addHairEarsS", autoImplant: false,
-				canImplant: s => (s.earShape !== "normal"),
-				implantError: s => getRightEyeVision(s) !== 0 ? "Slave has a working right eye." : "",
+				canImplant: s => (s.earTShape !== "normal"),
+				implantError: "",
 				implant: s => {
-					s.earShape = "normal";
+					s.earTColor = "normal";
 				}
 			}),
 			*/
@@ -424,7 +415,7 @@ App.Medicine.OrganFarm.init = function() {
 				name: "Brow", healthImpact: 5,
 				surgeryType: "restoreHairBrow", autoImplant: false,
 				canImplant: s => (s.eyebrowHStyle === "bald"),
-				implantError: () => "This slave already has eyebrows.",
+				implantError: () => "",
 				implant: s => {
 					s.eyebrowHStyle = "natural";
 					s.eyebrowFullness = "natural";
@@ -435,7 +426,7 @@ App.Medicine.OrganFarm.init = function() {
 				name: "Axillary", healthImpact: 5,
 				surgeryType: "restoreHairPits", autoImplant: false,
 				canImplant: s => (s.underArmHStyle === "bald" || s.underArmHStyle === "hairless"),
-				implantError: () => "This slave already has underarm hair.",
+				implantError: () => "",
 				implant: s => {
 					s.underArmHStyle = "bushy";
 					s.underArmHColor = s.origHColor;
@@ -445,7 +436,7 @@ App.Medicine.OrganFarm.init = function() {
 				name: "Pubic", healthImpact: 5,
 				surgeryType: "restoreHairPubes", autoImplant: false,
 				canImplant: s => (s.pubicHStyle === "bald" || s.pubicHStyle === "hairless"),
-				implantError: () => "This slave already has pubic hair.",
+				implantError: () => "",
 				implant: s => {
 					s.pubicHStyle = "very bushy";
 					s.pubicHColor = s.origHColor;
diff --git a/src/npc/surgery/reproductiveOrgans.js b/src/npc/surgery/reproductiveOrgans.js
index d0b4ae72f263adeceb761699ea38481cc2bdc035..bdf1598930b4e38f4aec53ed754ee5b179e9f2f3 100644
--- a/src/npc/surgery/reproductiveOrgans.js
+++ b/src/npc/surgery/reproductiveOrgans.js
@@ -70,7 +70,7 @@ App.Medicine.OrganFarm.Testicles = class extends App.Medicine.OrganFarm.Organ {
 				}),
 				new App.Medicine.OrganFarm.TesticlesImplantAction({
 					name: "Implant",
-					tooltip: "you can forgo standard procedure and implant testicles directly into $his abdomen",
+					tooltip: "you can forgo standard procedure and implant testicles directly into their abdomen",
 					ballType: ballType, animal: animal, surgeryType: "addTesticles", autoImplant: false,
 					canImplant: slave => (slave.dick === 0 && slave.balls <= 0),
 					implantError: slave => ((slave.balls > 0) ? "This slave already has testicles." : ""),
diff --git a/src/personalAssistant/assistantOptions.tw b/src/personalAssistant/assistantOptions.tw
index 67e449706bff4e424dc388923328b1fef942be35..d7a2fa55d62b81f8af9f49f6710b39e46968a640 100644
--- a/src/personalAssistant/assistantOptions.tw
+++ b/src/personalAssistant/assistantOptions.tw
@@ -363,7 +363,7 @@ Seated at your desk, you glance at the visual representation of
 				<<if $arcologies[0].FSPaternalist != "unset">> <<set _seed.push("paternalism")>> <</if>>
 				<<if $arcologies[0].FSBodyPurist != "unset">> <<set _seed.push("body purism")>> <</if>>
 				<<if $arcologies[0].FSMaturityPreferentialist != "unset">> <<set _seed.push("maturity preferentialism")>> <</if>>
-				<<if $arcologies[0].FSPastoralist != "unset">> <<set _seed.push("pastoralism")>> <</if>>
+			<<if $arcologies[0].FSPastoralist != "unset">> <<set _seed.push("pastoralism")>> <</if>>
 				<<if $arcologies[0].FSChattelReligionist != "unset">> <<set _seed.push("chattel religionism")>> <</if>>
 				<<if $arcologies[0].FSEgyptianRevivalist != "unset">> <<set _seed.push("Egyptian revivalism")>> <</if>>
 				<<if $arcologies[0].FSRepopulationFocus != "unset">> <<set _seed.push("repopulationism")>> <</if>>
@@ -938,7 +938,7 @@ Seated at your desk, you glance at the visual representation of
 		<<link _text "Personal assistant options">>
 			<<set $assistant.Extra2 = 1>>
 			<<if $PC.skill.hacking < 75>>
-				<<run cashX(Math.trunc(-price), "capEx")>>
+				<<run cashX(Math.trunc(-_price), "capEx")>>
 			<</if>>
 			<<goto "Assistant Appearance Pack Two">>
 		<</link>> //<<if $PC.skill.hacking < 75>> Costs <<= num(_price)>> <<else>> Unencrypted files, ripe for the taking<</if>>//
diff --git a/src/uncategorized/remoteSurgery.tw b/src/uncategorized/remoteSurgery.tw
index 44958ba77558e1cfdc28bc4f8c025719682cda91..66cece0c3f6c9af68874cd534ce07a8a6b3dcf2c 100644
--- a/src/uncategorized/remoteSurgery.tw
+++ b/src/uncategorized/remoteSurgery.tw
@@ -2084,7 +2084,7 @@
 			<</if>>
 		</div>
 
-		<<print App.Medicine.OrganFarm.fullMenu(getSlave($AS))>>
+		<<includeDOM App.Medicine.OrganFarm.fullMenu(getSlave($AS))>>
 
 		<<if $geneticMappingUpgrade >= 1>>
 			<h3>Retro-virus treatments:</h3>