diff --git a/src/markets/theMarket/market.js b/src/markets/theMarket/market.js
new file mode 100644
index 0000000000000000000000000000000000000000..a172b7fcbaa16c1ff7cfaf00c729881fff3473fc
--- /dev/null
+++ b/src/markets/theMarket/market.js
@@ -0,0 +1,41 @@
+App.UI.market = function() {
+	const span = document.createElement("span");
+	span.id = "slave-markets";
+
+	span.append(App.UI.buySlaves());
+	span.append(App.UI.sellSlaves());
+
+	const menialSpan = document.createElement("span");
+	menialSpan.id = "menial-span";
+	menialSpan.append(App.UI.tradeMenials());
+	span.append(menialSpan);
+
+	return span;
+};
+
+App.UI.specificMarket = function({market, slaveMarket, slaveMarketLimit, newSlaves = [], numArcology} = {}) {
+	const el = new DocumentFragment();
+
+	// Sidebar
+	V.nextButton = "Back";
+	V.nextLink = "Buy Slaves";
+	V.returnTo = "Buy Slaves";
+	V.encyclopedia = "Kidnapped Slaves";
+	// Multi-Purchase Support
+	if (V.newSlaves.length > 0) {
+		V.nextButton = "Continue";
+		V.nextLink = "Bulk Slave Intro";
+		V.returnTo = "Main";
+		V.newSlaveIndex = 0;
+	}
+
+	// fake a new passage so we can preserve some persistent data without globals
+	App.Utils.scheduleSidebarRefresh(); // TODO: not updating back button
+	window.scrollTo(0, 0);
+	el.append(
+		App.Markets[market](numArcology)
+	);
+
+
+	return jQuery("#slave-markets").empty().append(el);
+};
diff --git a/src/markets/theMarket/tradeMenials.js b/src/markets/theMarket/tradeMenials.js
index 5b2281662532c42fea26829148d311d6dd871773..dfd14db4901d621d3edd5a8c8f99fbb7d40f654c 100644
--- a/src/markets/theMarket/tradeMenials.js
+++ b/src/markets/theMarket/tradeMenials.js
@@ -146,14 +146,13 @@ App.UI.tradeMenials = function() {
 		const el = new DocumentFragment();
 		let div = document.createElement("div");
 		if (V.menials > 1) {
-			div.append(`You own ${num(Math.trunc(V.menials))} menial slaves. `);
+			el.append(`You own ${num(Math.trunc(V.menials))} menial slaves. `);
 		} else if (V.menials > 0) {
-			div.append(`You own one menial slave. `);
+			el.append(`You own one menial slave. `);
 		} else {
-			div.append(`You do not own any menial slaves. `);
+			el.append(`You do not own any menial slaves. `);
 		}
-		div.append(`The market price of menials is ${cashFormat(menialPrice)}. `);
-		el.append(div);
+		el.append(`The market price of menials is ${cashFormat(menialPrice)}. `);
 
 		if (bulkMax > 0 && V.cash > menialPrice) {
 			div = document.createElement("div");
@@ -167,9 +166,10 @@ App.UI.tradeMenials = function() {
 			linkArray.push(
 				App.UI.DOM.link(
 					"Buy",
-					() => buySomeMenials(1),
-					[],
-					"Buy Slaves"
+					() => {
+						buySomeMenials(1);
+						jQuery("#menial-span").empty().append(App.UI.tradeMenials());
+					}
 				)
 			);
 			if (V.cash > (menialSlaveCost(10)) * 10) {
@@ -187,9 +187,8 @@ App.UI.tradeMenials = function() {
 							buySomeMenials(
 								Math.trunc(Math.clamp(V.cash / (menialPrice + _menialBulkPremium), 0, bulkMax))
 							);
+							jQuery("#menial-span").empty().append(App.UI.tradeMenials());
 						},
-						[],
-						"Buy Slaves"
 					)
 				);
 			}
@@ -199,19 +198,19 @@ App.UI.tradeMenials = function() {
 		}
 
 		if (V.menials > 0) {
-			div = document.createElement("div");
 			linkArray = [];
 			const sellSomeMenials = function(number = 1) {
 				V.menials -= number;
 				V.menialDemandFactor -= number;
-				cashX(forceNeg(menialSlaveCost(-number) * number), "menialTransfer");
+				cashX(menialSlaveCost(number) * number, "menialTransfer");
 			};
 			linkArray.push(
 				App.UI.DOM.link(
 					"Sell",
-					() => sellSomeMenials(1),
-					[],
-					"Buy Slaves"
+					() => {
+						sellSomeMenials(1);
+						jQuery("#menial-span").empty().append(App.UI.tradeMenials());
+					}
 				)
 			);
 
@@ -227,9 +226,8 @@ App.UI.tradeMenials = function() {
 					() => {
 						sellSomeMenials(V.menials);
 						V.menials = 0; // Be quite sure.
+						jQuery("#menial-span").empty().append(App.UI.tradeMenials());
 					},
-					[],
-					"Buy Slaves"
 				)
 			);
 			App.UI.DOM.appendNewElement("div", el, App.UI.DOM.generateLinksStrip(linkArray));
@@ -253,9 +251,10 @@ App.UI.tradeMenials = function() {
 				linkArray.push(
 					App.UI.DOM.link(
 						"Convert to Fuckdoll",
-						() => convertSomeMenialsToFuckdolls(1),
-						[],
-						"Buy Slaves"
+						() => {
+							convertSomeMenialsToFuckdolls(1);
+							jQuery("#menial-span").empty().append(App.UI.tradeMenials());
+						}
 					)
 				);
 
@@ -271,9 +270,8 @@ App.UI.tradeMenials = function() {
 						() => {
 							convertSomeMenialsToFuckdolls(V.menials);
 							V.menials = 0; // Be really sure
+							jQuery("#menial-span").empty().append(App.UI.tradeMenials());
 						},
-						[],
-						"Buy Slaves"
 					)
 				);
 
@@ -292,9 +290,10 @@ App.UI.tradeMenials = function() {
 				linkArray.push(
 					App.UI.DOM.link(
 						"Convert to Bioreactor",
-						() => convertSomeMenialsToBioreactors(1),
-						[],
-						"Buy Slaves"
+						() => {
+							convertSomeMenialsToBioreactors(1);
+							jQuery("#menial-span").empty().append(App.UI.tradeMenials());
+						}
 					)
 				);
 
@@ -310,12 +309,11 @@ App.UI.tradeMenials = function() {
 						() => {
 							convertSomeMenialsToBioreactors(V.menials);
 							V.menials = 0; // Be really sure
+							jQuery("#menial-span").empty().append(App.UI.tradeMenials());
 						},
-						[],
-						"Buy Slaves"
 					)
 				);
-
+				div = document.createElement("div");
 				div.append(App.UI.DOM.generateLinksStrip(linkArray));
 				App.UI.DOM.appendNewElement("span", div, `Conversion costs ${cashFormat(convertCost)} each`, "note");
 				el.append(div);
@@ -328,14 +326,14 @@ App.UI.tradeMenials = function() {
 		const el = new DocumentFragment();
 		let div = document.createElement("div");
 		if (V.fuckdolls > 1) {
-			div.append(`You own ${num(Math.trunc(V.fuckdolls))} standard Fuckdolls. `);
+			el.append(`You own ${num(Math.trunc(V.fuckdolls))} standard Fuckdolls. `);
 		} else if (V.fuckdolls > 0) {
-			div.append(`You own one standard Fuckdoll. `);
+			el.append(`You own one standard Fuckdoll. `);
 		} else if (V.arcologies[0].FSPaternalist === "unset") {
-			div.append(`You do not own any standard Fuckdolls. `);
+			el.append(`You do not own any standard Fuckdolls. `);
 		}
 		if ((V.fuckdolls > 0) || (V.arcologies[0].FSPaternalist === "unset")) {
-			div.append(`The market price of standard Fuckdolls is ${cashFormat(menialPrice)}. `);
+			el.append(`The market price of standard Fuckdolls is ${cashFormat(menialPrice)}. `);
 			if (bulkMax > 0) {
 				if (V.arcologies[0].FSPaternalist === "unset" && V.cash > menialPrice) {
 					div = document.createElement("div");
@@ -349,9 +347,10 @@ App.UI.tradeMenials = function() {
 					linkArray.push(
 						App.UI.DOM.link(
 							"Buy",
-							() => buySomeFuckdolls(1),
-							[],
-							"Buy Slaves"
+							() => {
+								buySomeFuckdolls(1);
+								jQuery("#menial-span").empty().append(App.UI.tradeMenials());
+							}
 						)
 					);
 					if (V.cash > (menialSlaveCost(10)) * 10) {
@@ -369,9 +368,8 @@ App.UI.tradeMenials = function() {
 									buySomeFuckdolls(
 										Math.trunc(Math.clamp(V.cash / (menialPrice + _menialBulkPremium), 0, bulkMax))
 									);
+									jQuery("#menial-span").empty().append(App.UI.tradeMenials());
 								},
-								[],
-								"Buy Slaves"
 							)
 						);
 					}
@@ -385,20 +383,21 @@ App.UI.tradeMenials = function() {
 				const sellSomeFuckdolls = function(number = 1) {
 					V.menials -= number;
 					V.menialDemandFactor -= number;
-					cashX(forceNeg(menialSlaveCost(-number) * number), "fuckdollsTransfer");
+					cashX(menialSlaveCost(number) * number, "fuckdollsTransfer");
 				};
 				linkArray.push(
 					App.UI.DOM.link(
 						"Sell",
-						() => sellSomeFuckdolls(1),
-						[],
-						"Buy Slaves"
+						() => {
+							sellSomeFuckdolls(1);
+							jQuery("#menial-span").empty().append(App.UI.tradeMenials());
+						}
 					)
 				);
 
-				if (V.menials >= 10) {
+				if (V.fuckdolls >= 10) {
 					makeLink(10, sellSomeFuckdolls);
-					if (V.menials >= 100) {
+					if (V.fuckdolls >= 100) {
 						makeLink(100, sellSomeFuckdolls);
 					}
 				}
@@ -406,11 +405,10 @@ App.UI.tradeMenials = function() {
 					App.UI.DOM.link(
 						"all",
 						() => {
-							sellSomeFuckdolls(V.menials);
-							V.menials = 0; // Be quite sure.
+							sellSomeFuckdolls(V.fuckdolls);
+							V.fuckdolls = 0; // Be quite sure.
+							jQuery("#menial-span").empty().append(App.UI.tradeMenials());
 						},
-						[],
-						"Buy Slaves"
 					)
 				);
 				App.UI.DOM.appendNewElement("div", el, App.UI.DOM.generateLinksStrip(linkArray));
@@ -424,14 +422,14 @@ App.UI.tradeMenials = function() {
 		const el = new DocumentFragment();
 		let div = document.createElement("div");
 		if (V.menialBioreactors > 1) {
-			div.append(`You own ${num(Math.trunc(V.menialBioreactors))} standard bioreactors. `);
+			el.append(`You own ${num(Math.trunc(V.menialBioreactors))} standard bioreactors. `);
 		} else if (V.menialBioreactors > 0) {
-			div.append(`You own one standard bioreactor. `);
+			el.append(`You own one standard bioreactor. `);
 		} else if (V.arcologies[0].FSPaternalist === "unset") {
-			div.append(`You do not own any standard bioreactors. `);
+			el.append(`You do not own any standard bioreactors. `);
 		}
 		if ((V.menialBioreactors > 0) || (V.arcologies[0].FSPaternalist === "unset")) {
-			div.append(`The market price of standard bioreactors is ${cashFormat(menialPrice - 100)}. `);
+			el.append(`The market price of standard bioreactors is ${cashFormat(menialPrice - 100)}. `);
 			if (bulkMax > 0) {
 				if (V.arcologies[0].FSPaternalist === "unset" && V.cash > menialPrice) {
 					div = document.createElement("div");
@@ -445,9 +443,10 @@ App.UI.tradeMenials = function() {
 					linkArray.push(
 						App.UI.DOM.link(
 							"Buy",
-							() => buySomeBioreactors(1),
-							[],
-							"Buy Slaves"
+							() => {
+								buySomeBioreactors(1);
+								jQuery("#menial-span").empty().append(App.UI.tradeMenials());
+							}
 						)
 					);
 					if (V.cash > (menialSlaveCost(10)) * 10) {
@@ -465,9 +464,8 @@ App.UI.tradeMenials = function() {
 									buySomeBioreactors(
 										Math.trunc(Math.clamp(V.cash / (menialPrice - 99 + _bioreactorBulkPremium), 0, bulkMax))
 									);
+									jQuery("#menial-span").empty().append(App.UI.tradeMenials());
 								},
-								[],
-								"Buy Slaves"
 							)
 						);
 					}
@@ -477,25 +475,25 @@ App.UI.tradeMenials = function() {
 				}
 			}
 			if (V.menialBioreactors >= 1) {
-				div = document.createElement("div");
 				linkArray = [];
 				const sellSomeBioreactors = function(number = 1) {
 					V.menials -= number;
 					V.menialDemandFactor -= number;
-					cashX(forceNeg(menialSlaveCost(number - 100) * number), "bioreactorsTransfer");
+					cashX(menialSlaveCost(number - 100) * number, "bioreactorsTransfer");
 				};
 				linkArray.push(
 					App.UI.DOM.link(
 						"Sell",
-						() => sellSomeBioreactors(1),
-						[],
-						"Buy Slaves"
+						() => {
+							sellSomeBioreactors(1);
+							jQuery("#menial-span").empty().append(App.UI.tradeMenials());
+						}
 					)
 				);
 
-				if (V.menials >= 10) {
+				if (V.menialBioreactors >= 10) {
 					makeLink(10, sellSomeBioreactors);
-					if (V.menials >= 100) {
+					if (V.menialBioreactors >= 100) {
 						makeLink(100, sellSomeBioreactors);
 					}
 				}
@@ -503,18 +501,17 @@ App.UI.tradeMenials = function() {
 					App.UI.DOM.link(
 						"all",
 						() => {
-							sellSomeBioreactors(V.menials);
-							V.menials = 0; // Be quite sure.
+							sellSomeBioreactors(V.menialBioreactors);
+							V.menialBioreactors = 0; // Be quite sure.
+							jQuery("#menial-span").empty().append(App.UI.tradeMenials());
 						},
-						[],
-						"Buy Slaves"
 					)
 				);
+				div = document.createElement("div");
 				div.append(App.UI.DOM.generateLinksStrip(linkArray));
 				el.append(div);
 			}
 		}
-
 		return el;
 	}
 
@@ -527,9 +524,10 @@ App.UI.tradeMenials = function() {
 		linkArray.push(
 			App.UI.DOM.link(
 				`x${number}`,
-				() => runMe(number),
-				[],
-				"Buy Slaves"
+				() => {
+					runMe(number);
+					jQuery("#menial-span").empty().append(App.UI.tradeMenials());
+				}
 			)
 		);
 	}
diff --git a/src/uncategorized/buySlaves.tw b/src/uncategorized/buySlaves.tw
index eb4532559c26dc97358cf9c0a0f978d0ed594306..953bee616f245ad277686f635dc994041f80c57e 100644
--- a/src/uncategorized/buySlaves.tw
+++ b/src/uncategorized/buySlaves.tw
@@ -3,8 +3,4 @@
 <<set $nextButton = "Back">>
 <<set $nextLink = "Main">>
 
-<<includeDOM App.UI.buySlaves()>>
-
-<<includeDOM App.UI.sellSlaves()>>
-
-<<includeDOM App.UI.tradeMenials()>>
\ No newline at end of file
+<<includeDOM App.UI.market()>>