diff --git a/src/endWeek/saWhore.js b/src/endWeek/saWhore.js
index 4f7bd716bcf3652c91e37446dd01048777f93edb..4740fdb5de8a6dab1e4180083f8393df84c8a94a 100644
--- a/src/endWeek/saWhore.js
+++ b/src/endWeek/saWhore.js
@@ -7,6 +7,8 @@ window.saWhore = (function saWhore() {
 
 	// if the following are set outside this file, they must be set in it too!
 	let beauty;
+	let eligableClass;
+	let customers;
 	let FuckResult;
 	let cash;
 
@@ -87,6 +89,16 @@ window.saWhore = (function saWhore() {
 		FuckResult = slave.sexQuality;
 		beauty = slave.sexAmount;
 		T.incomeStats.customers = beauty;
+		eligableClass = eligableWhoreClass(slave);
+		if (eligableClass === 4) {
+			customers = "extremely wealthy";
+		} else if (eligableClass === 3) {
+			customers = "upper class";
+		} else if (eligableClass === 2) {
+			customers = "middle class";
+		} else {
+			customers = "lower class";
+		}
 	}
 
 	/**
@@ -229,7 +241,7 @@ window.saWhore = (function saWhore() {
 	 * @param {App.Entity.SlaveState} slave
 	 */
 	function usageCountDescriptions(slave) {
-		r += ` ${His} appearance attracted ${beauty} members of the public (${Math.trunc(beauty / 7)} a day)`;
+		r += ` ${His} appearance attracted ${beauty} ${customers} members of the public (${Math.trunc(beauty / 7)} a day)`;
 		if (beauty > 160) {
 			r += `, so many that `;
 			if (canDoVaginal(slave) && canDoAnal(slave)) {
diff --git a/src/init/storyInit.tw b/src/init/storyInit.tw
index 726ad15e0909b32cff6a08d90c5bdf30417d0001..32f41595e372258b8a259478a62698e046e24fd3 100644
--- a/src/init/storyInit.tw
+++ b/src/init/storyInit.tw
@@ -826,6 +826,7 @@ You should have received a copy of the GNU General Public License along with thi
 /* Slave sexual services and goods variables */
 <<set $publicFuckdolls = 0>>
 <<set $classSatisfied = {lowerClass: 0, middleClass: 0, upperClass: 0, topClass: 0}>>
+<<set $whoreBudget = {lowerClass: 10, middleClass: 50, upperClass: 250, topClass: 1500}>>
 <<set $arcadePrice = 2>>
 <<set $clubSlaveSexAmount = 0>>
 
diff --git a/src/js/datatypeCleanupJS.js b/src/js/datatypeCleanupJS.js
index b89cb9910b2d0e7f7f383351fdca2a802e945907..4d46c6728768fed7b5d0e798765ce3cf08d3b555 100644
--- a/src/js/datatypeCleanupJS.js
+++ b/src/js/datatypeCleanupJS.js
@@ -1656,6 +1656,58 @@ window.EconomyDatatypeCleanup = function EconomyDatatypeCleanup() {
 	V.NPCSexSupply.middleClass = Math.max(+V.NPCSexSupply.middleClass, 0) || 0;
 	V.NPCSexSupply.upperClass = Math.max(+V.NPCSexSupply.upperClass, 0) || 0;
 	V.NPCSexSupply.topClass = Math.max(+V.NPCSexSupply.topClass, 0) || 0;
+	if (V.whoreBudget.lowerClass) {
+		V.whoreBudget.lowerClass = Math.max(+V.whoreBudget.lowerClass, 8) || 10;
+	} else if (V.LCRent > 30) {
+		V.whoreBudget.lowerClass = 8;
+	} else if (V.LCRent > 20) {
+		V.whoreBudget.lowerClass = 9;
+	} else if (V.LCRent > 10) {
+		V.whoreBudget.lowerClass = 10;
+	} else if (V.LCRent > 0) {
+		V.whoreBudget.lowerClass = 11;
+	} else {
+		V.whoreBudget.lowerClass = 12;
+	}
+	if (V.whoreBudget.middleClass) {
+		V.whoreBudget.middleClass = Math.max(+V.whoreBudget.middleClass, 40) || 50;
+	} else if (V.MCRent > 75) {
+		V.whoreBudget.middleClass = 40;
+	} else if (V.MCRent > 50) {
+		V.whoreBudget.middleClass = 45;
+	} else if (V.MCRent > 25) {
+		V.whoreBudget.middleClass = 50;
+	} else if (V.MCRent > 0) {
+		V.whoreBudget.middleClass = 55;
+	} else {
+		V.whoreBudget.middleClass = 60;
+	}
+	if (V.whoreBudget.upperClass) {
+		V.whoreBudget.upperClass = Math.max(+V.whoreBudget.upperClass, 200) || 250;
+	} else if (V.UCRent > 270) {
+		V.whoreBudget.upperClass = 200;
+	} else if (V.UCRent > 180) {
+		V.whoreBudget.upperClass = 225;
+	} else if (V.UCRent > 90) {
+		V.whoreBudget.upperClass = 250;
+	} else if (V.UCRent > 0) {
+		V.whoreBudget.upperClass = 275;
+	} else {
+		V.whoreBudget.upperClass = 300;
+	}
+	if (V.whoreBudget.topClass) {
+		V.whoreBudget.topClass = Math.max(+V.whoreBudget.upperClass, 1200) || 1500;
+	} else if (V.TCRent > 975) {
+		V.whoreBudget.topClass = 1200;
+	} else if (V.TCRent > 650) {
+		V.whoreBudget.topClass = 1350;
+	} else if (V.TCRent > 325) {
+		V.whoreBudget.topClass = 1500;
+	} else if (V.TCRent > 0) {
+		V.whoreBudget.topClass = 1650;
+	} else {
+		V.whoreBudget.topClass = 1800;
+	}
 	V.NPCMarketShare.lowerClass = Math.clamp(+V.NPCMarketShare.lowerClass, 0, 1000) || 0;
 	V.NPCMarketShare.middleClass = Math.clamp(+V.NPCMarketShare.middleClass, 0, 1000) || 0;
 	V.NPCMarketShare.upperClass = Math.clamp(+V.NPCMarketShare.upperClass, 0, 1000) || 0;
diff --git a/src/js/economyJS.js b/src/js/economyJS.js
index 47f93edc3079184399f4dd683c4e3748608b474b..e23a1d0d87eef598ac38496883b4e8e8f9b8d628 100644
--- a/src/js/economyJS.js
+++ b/src/js/economyJS.js
@@ -1159,7 +1159,7 @@ window.slaveJobValues = function() {
 		const s = V.slaves[V.slaveIndices[ID]];
 		s.sexAmount = (jsRandom(200, 240) + (20 * (4 - (s.anus - 2 * V.arcadeUpgradeInjectors))) + (10 * (4 - (s.vagina - 2 * V.arcadeUpgradeInjectors))) + Math.trunc(s.health / 5));
 		slaveJobValues.arcade += s.sexAmount;
-	})
+	});
 
 	// Public sluts adding to 'club'
 	V.JobIDArray["serve the public"].forEach(ID => {
@@ -1374,7 +1374,6 @@ window.slaveJobValues = function() {
 	}
 
 	function SJVBrothel(s) {
-		let whoreScore;
 		let toTheBrothel = 0;
 		let beautyMultiplier = 1;
 		s.minorInjury = 0;
@@ -1548,37 +1547,53 @@ window.slaveJobValues = function() {
 		} else if (s.trust < -20) {
 			s.sexQuality -= 2;
 		}
-		if (s.assignment === "work in the brothel") {
+		if (s.assignment === "work in the brothel" || s.assignment === "be the Madam") {
 			s.sexQuality += 2;
 		} else if (toTheBrothel === 1) {
 			s.sexQuality += 2;
 			brothelSpots -= 1;
 		}
 
-		// Figuring out which type of customer the slave services (should probably be refined)
-		whoreScore = s.sexAmount * s.sexQuality; // The standard amount of money the whore is expected to make in a week
-		if (whoreScore > 8000 && s.skill.whore > 80) {
-			whoreScore = Math.trunc(whoreScore * 1.2); //  20% bonus to score for being of the heighest tier
-			s.sexAmount = jsRandom(30, 40); // Bringing sex amount into the desired range
-			s.sexQuality = Math.trunc(whoreScore / s.sexAmount); // Adjusting the price to the correct sex amount
-			slaveJobValues.brothel.topClass += whoreScore; // Registering the job value in the right slot
-		} else if (whoreScore > 5000 && s.skill.whore > 50) {
-			whoreScore = Math.trunc(whoreScore * 1.05);
-			s.sexAmount = jsRandom(40, 55);
-			s.sexQuality = Math.trunc(whoreScore / s.sexAmount);
-			slaveJobValues.brothel.upperClass += whoreScore;
-		} else if (whoreScore > 2000) {
-			whoreScore = Math.trunc(whoreScore * 0.9);
-			s.sexAmount = jsRandom(55, 75);
-			s.sexQuality = Math.trunc(whoreScore / s.sexAmount);
-			slaveJobValues.brothel.middleClass += whoreScore;
+		// The whoreScore function finds the appropriate customer class and then calculates the whore income stats associated with that class and adds to the class supply.
+		// whoreClass is the MAXIMUM player set class the whore is allowed to service, if the whore is not eligable it will service the highest it is capable of servicing properly. A whoreClass of 0 means it is on auto (always service the highest possible class).
+		function whoreScore(s, whoreClass) {
+			let score = s.sexAmount * s.sexQuality; // The standard amount of money the whore is expected to make in a week
+			let tempClass = eligableWhoreClass(whoreClass);
+
+			// Calculate the stats
+			if (tempClass === 4) {
+				score = Math.trunc(score * 1.2); //  20% bonus to score for being of the heighest tier
+				s.sexAmount = jsRandom(60, 80); // Bringing sex amount into the desired range
+				s.sexQuality = Math.trunc(score / s.sexAmount); // Adjusting the price to the correct sex amount
+				slaveJobValues.brothel.topClass += score; // Registering the job value in the right slot
+			} else if (tempClass === 3) {
+				score = Math.trunc(score * 1.05);
+				s.sexAmount = jsRandom(85, 105);
+				s.sexQuality = Math.min(Math.trunc(score / s.sexAmount), V.whoreBudget.upperClass * 0.6); // The upper class will pay a maximum of 0.6 times their weekly budget per service
+				slaveJobValues.brothel.upperClass += Math.min(score, s.sexAmount * V.whoreBudget.upperClass * 0.6);
+			} else if (tempClass === 2) {
+				score = Math.trunc(score * 0.9);
+				s.sexAmount = jsRandom(100, 120);
+				s.sexQuality = Math.min(Math.trunc(score / s.sexAmount), V.whoreBudget.middleClass); // The middle class will pay a maximum of their weekly budget per service
+				slaveJobValues.brothel.middleClass += Math.min(score, s.sexAmount * V.whoreBudget.middleClass);
+			} else {
+				score = Math.trunc(score * 0.75);
+				s.sexAmount = jsRandom(110, 140);
+				s.sexQuality = Math.min(Math.trunc(score / s.sexAmount), V.whoreBudget.lowerClass * 1.5); // The lower class will pay a maximum of 1.5 times their weekly budget per service
+				slaveJobValues.brothel.lowerClass += Math.min(score, s.sexAmount * V.whoreBudget.lowerClass * 1.5);
+			}
+		}
+
+		if (s.assignment === "work in the brothel") {
+			if (!s.whoreClass) {
+				s.whoreClass = 0;
+			}
+			whoreScore(s, s.whoreClass);
 		} else {
-			whoreScore = Math.trunc(whoreScore * 0.75);
-			s.sexAmount = jsRandom(75, 100);
-			s.sexQuality = Math.trunc(whoreScore / s.sexAmount);
-			slaveJobValues.brothel.lowerClass += whoreScore;
+			whoreScore(s, 0);
 		}
 	}
+
 	// Saturation penalty for public servants. Even the most beautiful slaves lose some of their shine if they have too much competition.
 	if (slaveJobValues.club > 0) {
 		slaveJobValues.clubSP = (Math.pow(slaveJobValues.club / 1000, 0.95) * 1000) / slaveJobValues.club;
@@ -1586,6 +1601,28 @@ window.slaveJobValues = function() {
 	return slaveJobValues;
 };
 
+window.eligableWhoreClass = function(s) {
+	let tempClass;
+	let score = s.sexAmount * s.sexQuality;
+	if (typeof s.whoreClass === 'undefined' || s.whoreClass === 0) {
+		tempClass = 4;
+	} else {
+		tempClass = s.whoreClass;
+	}
+	// Find maximum eligable class
+	// these could be refined further if needed.
+	if (tempClass === 4 && !(score > 7000 && s.skill.whore > 80 && s.skill.entertainment > 50)) {
+		tempClass -= 1;
+	}
+	if (tempClass === 3 && !(score > 3000 && s.skill.whore > 50)) {
+		tempClass -= 1;
+	}
+	if (tempClass === 2 && !(score > 1250)) {
+		tempClass -= 1;
+	}
+	return tempClass;
+};
+
 window.getSlaveStatisticData = function(s, facility) {
 	if (!facility) { // Base data, even without facility
 		return {
diff --git a/src/uncategorized/BackwardsCompatibility.tw b/src/uncategorized/BackwardsCompatibility.tw
index 5e8cdc951d2c3a3ed1a68596aff1a7edbe622ce4..45513dd26e9675a4fe99eb935bd8f2ca8add0754 100644
--- a/src/uncategorized/BackwardsCompatibility.tw
+++ b/src/uncategorized/BackwardsCompatibility.tw
@@ -2799,28 +2799,28 @@ Setting missing global variables:
 	<<set $publicFuckdolls = 0>>
 <</if>>
 <<if def $lowerClassSexDemand>>
-	<<set $lowerClassSexDemand = null>>
+	<<unset $lowerClassSexDemand>>
 <</if>>
 <<if def $lowerClassSatisfied>>
-	<<set $classSatisfied.lowerClass = $lowerClassSatisfied,
-	$lowerClassSatisfied = null>>
+	<<set $classSatisfied.lowerClass = $lowerClassSatisfied>>
+	<<unset $lowerClassSatisfied>>
 <</if>>
 <<if def $middleClassSexDemand>>
-	<<set $middleClassSexDemand = null>>
+	<<unset $middleClassSexDemand>>
 <</if>>
 <<if def $upperClassSexDemand>>
-	<<set $upperClassSexDemand = null>>
+	<<unset $upperClassSexDemand>>
 <</if>>
 <<if def $topClassSexDemand>>
-	<<set $topClassSexDemand = null>>
+	<<unset $topClassSexDemand>>
 <</if>>
 <<if def $sexSubsidiesLC>>
-	<<set $sexSubsidies.lowerClass = $sexSubsidiesLC,
-	$sexSubsidiesLC = null>>
+	<<set $sexSubsidies.lowerClass = $sexSubsidiesLC>>
+	<<unset $sexSubsidiesLC>>
 <</if>>
 <<if def $sexSupplyBarriersLC>>
-	<<set $sexSupplyBarriers.lowerClass = $sexSupplyBarriersLC,
-	$sexSupplyBarriersLC = null>>
+	<<set $sexSupplyBarriers.lowerClass = $sexSupplyBarriersLC>>
+	<<unset $sexSupplyBarriersLC>>
 <</if>>
 <<if ndef $arcadePrice>>
 	<<set $arcadePrice = 2>>
diff --git a/src/uncategorized/manageArcology.tw b/src/uncategorized/manageArcology.tw
index b34d8772898b5e6fe2ff9c008f080904a706e382..aea12b671dbd0e799de39cddbc69c1aed0dff41b 100644
--- a/src/uncategorized/manageArcology.tw
+++ b/src/uncategorized/manageArcology.tw
@@ -284,51 +284,51 @@ _percUpperClass = Math.trunc(($upperClass / ($ACitizens + $ASlaves)) * 1000) / 1
 _percTopClass = Math.trunc(($topClass / ($ACitizens + $ASlaves)) * 1000) / 10>>
 <br>Lower Class Citizens  | $lowerClass | <<print _percLowerClass>>% | Rent @@.yellowgreen;<<print cashFormat($LCRent / 25)>>@@
 <<if $LCRent > 30>>
-	//Very High// | [[Decrease|Manage Arcology][$LCRent = 30, $rentEffectL = 0.94]]
+	//Very High// | [[Decrease|Manage Arcology][$LCRent = 30, $rentEffectL = 0.94, $whoreBudget.lowerClass = 9]]
 <<elseif $LCRent > 20>>
-	//High// | [[Increase|Manage Arcology][$LCRent = 40, $rentEffectL = 0.85]] | [[Decrease|Manage Arcology][$LCRent = 20, $rentEffectL = 1]]
+	//High// | [[Increase|Manage Arcology][$LCRent = 40, $rentEffectL = 0.85, $whoreBudget.lowerClass = 8]] | [[Decrease|Manage Arcology][$LCRent = 20, $rentEffectL = 1, $whoreBudget.lowerClass = 10]]
 <<elseif $LCRent > 10>>
-	//Average// | [[Increase|Manage Arcology][$LCRent = 30, $rentEffectL = 0.94]] | [[Decrease|Manage Arcology][$LCRent = 10, $rentEffectL = 1.04]]
+	//Average// | [[Increase|Manage Arcology][$LCRent = 30, $rentEffectL = 0.94, $whoreBudget.lowerClass = 9]] | [[Decrease|Manage Arcology][$LCRent = 10, $rentEffectL = 1.04, $whoreBudget.lowerClass = 11]]
 <<elseif $LCRent > 0>>
-	//Low// | [[Increase|Manage Arcology][$LCRent = 20, $rentEffectL = 1]] | [[Free Rent|Manage Arcology][$LCRent = 0, $rentEffectL = 1.1]]
+	//Low// | [[Increase|Manage Arcology][$LCRent = 20, $rentEffectL = 1, $whoreBudget.lowerClass = 10]] | [[Free Rent|Manage Arcology][$LCRent = 0, $rentEffectL = 1.1, $whoreBudget.lowerClass = 12]]
 <<else>>
-	//Free// | [[Increase|Manage Arcology][$LCRent = 10, $rentEffectL = 1.04]]
+	//Free// | [[Increase|Manage Arcology][$LCRent = 10, $rentEffectL = 1.04, $whoreBudget.lowerClass = 11]]
 <</if>>
 <br>Middle Class Citizens | $middleClass | <<print _percMiddleClass>>% | Rent @@.yellowgreen;<<print cashFormat($MCRent / 25)>>@@
 <<if $MCRent > 75>>
-	//Very High// | [[Decrease|Manage Arcology][$MCRent = 75, $rentEffectM = 0.94]]
+	//Very High// | [[Decrease|Manage Arcology][$MCRent = 75, $rentEffectM = 0.94, $whoreBudget.middleClass = 45]]
 <<elseif $MCRent > 50>>
-	//High// | [[Increase|Manage Arcology][$MCRent = 100, $rentEffectM = 0.85]] | [[Decrease|Manage Arcology][$MCRent = 50, $rentEffectM = 1]]
+	//High// | [[Increase|Manage Arcology][$MCRent = 100, $rentEffectM = 0.85, $whoreBudget.middleClass = 40]] | [[Decrease|Manage Arcology][$MCRent = 50, $rentEffectM = 1, $whoreBudget.middleClass = 50]]
 <<elseif $MCRent > 25>>
-	//Average// | [[Increase|Manage Arcology][$MCRent = 75, $rentEffectM = 0.94]] | [[Decrease|Manage Arcology][$MCRent = 25, $rentEffectM = 1.04]]
+	//Average// | [[Increase|Manage Arcology][$MCRent = 75, $rentEffectM = 0.94, $whoreBudget.middleClass = 45]] | [[Decrease|Manage Arcology][$MCRent = 25, $rentEffectM = 1.04, $whoreBudget.middleClass = 55]]
 <<elseif $MCRent > 0>>
-	//Low// | [[Increase|Manage Arcology][$MCRent = 50, $rentEffectM = 1]] | [[Free Rent|Manage Arcology][$MCRent = 0, $rentEffectM = 1.1]]
+	//Low// | [[Increase|Manage Arcology][$MCRent = 50, $rentEffectM = 1, $whoreBudget.middleClass = 50]] | [[Free Rent|Manage Arcology][$MCRent = 0, $rentEffectM = 1.1, $whoreBudget.middleClass = 60]]
 <<else>>
-	//Free// | [[Increase|Manage Arcology][$MCRent = 25, $rentEffectM = 1.04]]
+	//Free// | [[Increase|Manage Arcology][$MCRent = 25, $rentEffectM = 1.04, $whoreBudget.middleClass = 55]]
 <</if>>
 <br>Upper Class Citizens  | $upperClass | <<print _percUpperClass>>% | Rent @@.yellowgreen;<<print cashFormat($UCRent / 25)>>@@
 <<if $UCRent > 270>>
-	//Very High// | [[Decrease|Manage Arcology][$UCRent = 270, $rentEffectU = 0.94]]
+	//Very High// | [[Decrease|Manage Arcology][$UCRent = 270, $rentEffectU = 0.94, $whoreBudget.upperClass = 225]]
 <<elseif $UCRent > 180>>
-	//High// | [[Increase|Manage Arcology][$UCRent = 360, $rentEffectU = 0.85]] | [[Decrease|Manage Arcology][$UCRent = 180, $rentEffectU = 1]]
+	//High// | [[Increase|Manage Arcology][$UCRent = 360, $rentEffectU = 0.85, $whoreBudget.upperClass = 200]] | [[Decrease|Manage Arcology][$UCRent = 180, $rentEffectU = 1, $whoreBudget.upperClass = 250]]
 <<elseif $UCRent > 90>>
-	//Average// | [[Increase|Manage Arcology][$UCRent = 270, $rentEffectU = 0.94]] | [[Decrease|Manage Arcology][$UCRent = 90, $rentEffectU = 1.04]]
+	//Average// | [[Increase|Manage Arcology][$UCRent = 270, $rentEffectU = 0.94, $whoreBudget.upperClass = 225]] | [[Decrease|Manage Arcology][$UCRent = 90, $rentEffectU = 1.04, $whoreBudget.upperClass = 275]]
 <<elseif $UCRent > 0>>
-	//Low// | [[Increase|Manage Arcology][$UCRent = 180, $rentEffectU = 1]] | [[Free Rent|Manage Arcology][$UCRent = 0, $rentEffectU = 1.1]]
+	//Low// | [[Increase|Manage Arcology][$UCRent = 180, $rentEffectU = 1, $whoreBudget.upperClass = 250]] | [[Free Rent|Manage Arcology][$UCRent = 0, $rentEffectU = 1.1, $whoreBudget.upperClass = 300]]
 <<else>>
-	//Free// | [[Increase|Manage Arcology][$UCRent = 90, $rentEffectU = 1.04]]
+	//Free// | [[Increase|Manage Arcology][$UCRent = 90, $rentEffectU = 1.04, $whoreBudget.upperClass = 275]]
 <</if>>
 <br>Millionaires		  | $topClass | <<print _percTopClass>>% | Rent @@.yellowgreen;<<print cashFormat($TCRent / 25)>>@@
 <<if $TCRent > 975>>
-	//Very High// | [[Decrease|Manage Arcology][$TCRent = 975, $rentEffectT = 0.94]]
+	//Very High// | [[Decrease|Manage Arcology][$TCRent = 975, $rentEffectT = 0.94, $whoreBudget.topClass = 1350]]
 <<elseif $TCRent > 650>>
-	//High// | [[Increase|Manage Arcology][$TCRent = 1300, $rentEffectT = 0.85]] | [[Decrease|Manage Arcology][$TCRent = 650, $rentEffectT = 1]]
+	//High// | [[Increase|Manage Arcology][$TCRent = 1300, $rentEffectT = 0.85, $whoreBudget.topClass = 1200]] | [[Decrease|Manage Arcology][$TCRent = 650, $rentEffectT = 1, $whoreBudget.topClass = 1500]]
 <<elseif $TCRent > 325>>
-	//Average// | [[Increase|Manage Arcology][$TCRent = 975, $rentEffectT = 0.94]] | [[Decrease|Manage Arcology][$TCRent = 325, $rentEffectT = 1.04]]
+	//Average// | [[Increase|Manage Arcology][$TCRent = 975, $rentEffectT = 0.94, $whoreBudget.topClass = 1350]] | [[Decrease|Manage Arcology][$TCRent = 325, $rentEffectT = 1.04, $whoreBudget.topClass = 1650]]
 <<elseif $TCRent > 0>>
-	//Low// | [[Increase|Manage Arcology][$TCRent = 650, $rentEffectT = 1]] | [[Free Rent|Manage Arcology][$TCRent = 0, $rentEffectT = 1.1]]
+	//Low// | [[Increase|Manage Arcology][$TCRent = 650, $rentEffectT = 1, $whoreBudget.topClass = 1500]] | [[Free Rent|Manage Arcology][$TCRent = 0, $rentEffectT = 1.1, $whoreBudget.topClass = 1800]]
 <<else>>
-	//Free// | [[Increase|Manage Arcology][$TCRent = 325, $rentEffectT = 1.04]]
+	//Free// | [[Increase|Manage Arcology][$TCRent = 325, $rentEffectT = 1.04, $whoreBudget.topClass = 1650]]
 <</if>>
 <br>Slaves				| $ASlaves | <<print _percASlaves>>%
 
diff --git a/src/uncategorized/slaveAssignmentsReport.tw b/src/uncategorized/slaveAssignmentsReport.tw
index fc3fcaec190c06817e21ff213dec89bea734044f..460b79061ffbf3ed3c6f6a0a7a0235f4b12bb248 100644
--- a/src/uncategorized/slaveAssignmentsReport.tw
+++ b/src/uncategorized/slaveAssignmentsReport.tw
@@ -19,17 +19,13 @@
 Depending on the conditions they may derive more or less 'utility' out of their credits spent
 i.e. a highly paternalist arcology with little choice for its lower class but Fuckdolls may still put money into them but not get the same satisfaction out of it*/
 /*Low rent increases demand/available money for sexual services, high rent decreases it*/
-<<set _LCRent = 1 + (20 - $LCRent) / 100,
-_lowerClassSexDemand = Math.trunc($lowerClass * _LCRent) * 10,
+<<set _lowerClassSexDemand = $lowerClass * $whoreBudget.lowerClass,
 _lowerClassSexDemandRef = Math.max(_lowerClassSexDemand, 1),
-_MCRent = 1 + (50 - $MCRent) / 250,
-_middleClassSexDemand = Math.trunc($middleClass * _MCRent) * 50,
+_middleClassSexDemand = $middleClass * $whoreBudget.middleClass,
 _middleClassSexDemandRef = Math.max(_lowerClassSexDemand, 1),
-_UCRent = 1 + (180 - $UCRent) / 900,
-_upperClassSexDemand = Math.trunc($upperClass * _UCRent) * 400,
+_upperClassSexDemand = $upperClass * $whoreBudget.upperClass,
 _upperClassSexDemandRef = Math.max(_upperClassSexDemand, 1),
-_TCRent = 1 + (650 - $TCRent) / 3250,
-_topClassSexDemand = Math.trunc($topClass * _TCRent) * 4000,
+_topClassSexDemand = $topClass * $whoreBudget.topClass,
 _topClassSexDemandRef = Math.max(_upperClassSexDemand, 1),
 _visitorsSexDemand = Math.trunc($visitors) * 40,
 $whorePriceAdjustment = {lowerClass: 0, middleClass: 0, upperClass: 0, topClass: 0},
@@ -217,14 +213,14 @@ $NPCMarketShare.topClass = Math.trunc(($NPCSexSupply.topClass * 1000) / ($NPCSex
 <</if>>
 
 /*Sexual satisfaction effects*/
-<<if _lowerClassSexDemand > $lowerClass * _LCRent * 6>> /*You are providing < 40% of their desired amount of sex*/
+<<if _lowerClassSexDemand > $lowerClass * $whoreBudget.lowerClass * 0.6>> /*You are providing < 40% of their desired amount of sex*/
 	<<set $sexDemandResult.lowerClass = 1>>
 	<<if $week <= 30>>
 		<<set $classSatisfied.lowerClass = 0>>
 	<<else>>
 		<<set $classSatisfied.lowerClass = -1>>
 	<</if>>
-<<elseif _lowerClassSexDemand > $lowerClass * _LCRent * 4>> /*You are providing between 40 and 60% of their desired amount of sex*/
+<<elseif _lowerClassSexDemand > $lowerClass * $whoreBudget.lowerClass * 0.4>> /*You are providing between 40 and 60% of their desired amount of sex*/
 	<<set $sexDemandResult.lowerClass = 2>>
 	<<if $week <= 40>>
 		<<set $classSatisfied.lowerClass = 1>>
@@ -233,7 +229,7 @@ $NPCMarketShare.topClass = Math.trunc(($NPCSexSupply.topClass * 1000) / ($NPCSex
 	<<else>>
 		<<set $classSatisfied.lowerClass = -1>>
 	<</if>>
-<<elseif _lowerClassSexDemand > $lowerClass * _LCRent * 2>> /*You are providing between 60 and 80% of their desired amount of sex*/
+<<elseif _lowerClassSexDemand > $lowerClass * $whoreBudget.lowerClass * 0.2>> /*You are providing between 60 and 80% of their desired amount of sex*/
 	<<set $sexDemandResult.lowerClass = 3>>
 	<<if $week <= 50>>
 		<<set $classSatisfied.lowerClass = 1>>
@@ -248,14 +244,14 @@ $NPCMarketShare.topClass = Math.trunc(($NPCSexSupply.topClass * 1000) / ($NPCSex
 	$classSatisfied.lowerClass = 1>>
 <</if>>
 
-<<if _middleClassSexDemand > $middleClass * _MCRent * 30>> /*You are providing < 40% of their desired amount of sex*/
+<<if _middleClassSexDemand > $middleClass * $whoreBudget.middleClass * 0.6>> /*You are providing < 40% of their desired amount of sex*/
 	<<set $sexDemandResult.middleClass = 1>>
 	<<if $week <= 30>>
 		<<set $classSatisfied.middleClass = 0>>
 	<<else>>
 		<<set $classSatisfied.middleClass = -1>>
 	<</if>>
-<<elseif _middleClassSexDemand > $middleClass * _MCRent * 20>> /*You are providing between 40 and 60% of their desired amount of sex*/
+<<elseif _middleClassSexDemand > $middleClass * $whoreBudget.middleClass * 0.4>> /*You are providing between 40 and 60% of their desired amount of sex*/
 	<<set $sexDemandResult.middleClass = 2>>
 	<<if $week <= 40>>
 		<<set $classSatisfied.middleClass = 1>>
@@ -264,7 +260,7 @@ $NPCMarketShare.topClass = Math.trunc(($NPCSexSupply.topClass * 1000) / ($NPCSex
 	<<else>>
 		<<set $classSatisfied.middleClass = -1>>
 	<</if>>
-<<elseif _middleClassSexDemand > $middleClass * _MCRent * 10>> /*You are providing between 60 and 80% of their desired amount of sex*/
+<<elseif _middleClassSexDemand > $middleClass * $whoreBudget.middleClass * 0.2>> /*You are providing between 60 and 80% of their desired amount of sex*/
 	<<set $sexDemandResult.middleClass = 3>>
 	<<if $week <= 50>>
 		<<set $classSatisfied.middleClass = 1>>
@@ -279,14 +275,14 @@ $NPCMarketShare.topClass = Math.trunc(($NPCSexSupply.topClass * 1000) / ($NPCSex
 	$classSatisfied.middleClass = 1>>
 <</if>>
 
-<<if _upperClassSexDemand > $upperClass * _UCRent * 240>> /*You are providing < 40% of their desired amount of sex*/
+<<if _upperClassSexDemand > $upperClass * $whoreBudget.upperClass * 0.6>> /*You are providing < 40% of their desired amount of sex*/
 	<<set $sexDemandResult.upperClass = 1>>
 	<<if $week <= 30>>
 		<<set $classSatisfied.upperClass = 0>>
 	<<else>>
 		<<set $classSatisfied.upperClass = -1>>
 	<</if>>
-<<elseif _upperClassSexDemand > $upperClass * _UCRent * 160>> /*You are providing between 40 and 60% of their desired amount of sex*/
+<<elseif _upperClassSexDemand > $upperClass * $whoreBudget.upperClass * 0.4>> /*You are providing between 40 and 60% of their desired amount of sex*/
 	<<set $sexDemandResult.upperClass = 2>>
 	<<if $week <= 40>>
 		<<set $classSatisfied.upperClass = 1>>
@@ -295,7 +291,7 @@ $NPCMarketShare.topClass = Math.trunc(($NPCSexSupply.topClass * 1000) / ($NPCSex
 	<<else>>
 		<<set $classSatisfied.upperClass = -1>>
 	<</if>>
-<<elseif _upperClassSexDemand > $upperClass * _UCRent * 80>> /*You are providing between 60 and 80% of their desired amount of sex*/
+<<elseif _upperClassSexDemand > $upperClass * $whoreBudget.upperClass * 0.2>> /*You are providing between 60 and 80% of their desired amount of sex*/
 	<<set $sexDemandResult.upperClass = 3>>
 	<<if $week <= 50>>
 		<<set $classSatisfied.upperClass = 1>>
@@ -310,14 +306,14 @@ $NPCMarketShare.topClass = Math.trunc(($NPCSexSupply.topClass * 1000) / ($NPCSex
 	$classSatisfied.upperClass = 1>>
 <</if>>
 
-<<if _topClassSexDemand > $topClass * _TCRent * 2400>> /*You are providing < 40% of their desired amount of sex*/
+<<if _topClassSexDemand > $topClass * $whoreBudget.topClass * 0.6>> /*You are providing < 40% of their desired amount of sex*/
 	<<set $topClassSexDemandResult = 1>>
 	<<if $week <= 30>>
 		<<set $topClassSatisfied = 0>>
 	<<else>>
 		<<set $topClassSatisfied = -1>>
 	<</if>>
-<<elseif _topClassSexDemand > $topClass * _TCRent * 1600>> /*You are providing between 40 and 60% of their desired amount of sex*/
+<<elseif _topClassSexDemand > $topClass * $whoreBudget.topClass * 0.4>> /*You are providing between 40 and 60% of their desired amount of sex*/
 	<<set $topClassSexDemandResult = 2>>
 	<<if $week <= 40>>
 		<<set $topClassSatisfied = 1>>
@@ -326,7 +322,7 @@ $NPCMarketShare.topClass = Math.trunc(($NPCSexSupply.topClass * 1000) / ($NPCSex
 	<<else>>
 		<<set $topClassSatisfied = -1>>
 	<</if>>
-<<elseif _topClassSexDemand > $topClass * _TCRent * 800>> /*You are providing between 60 and 80% of their desired amount of sex*/
+<<elseif _topClassSexDemand > $topClass * $whoreBudget.topClass * 0.2>> /*You are providing between 60 and 80% of their desired amount of sex*/
 	<<set $topClassSexDemandResult = 3>>
 	<<if $week <= 50>>
 		<<set $topClassSatisfied = 1>>
diff --git a/src/uncategorized/slaveInteract.tw b/src/uncategorized/slaveInteract.tw
index 559bb44c4b4e212fae005a6a73537c14d5f8646d..81fa348ef728edcbe72a25d19ae54665d4275d8c 100644
--- a/src/uncategorized/slaveInteract.tw
+++ b/src/uncategorized/slaveInteract.tw
@@ -1515,6 +1515,13 @@ Hormones: <strong><span id="hormones">
 <</if>>
 
 <br><br>__Behavior__:<br>
+Whoring Target: <strong><span id="whoreClass"><<if !$activeSlave.whoreClass>>auto<<elseif $activeSlave.whoreClass == 1>>the lower class<<elseif $activeSlave.whoreClass == 2>>the middle class<<elseif $activeSlave.whoreClass == 3>>the upper class<<elseif $activeSlave.whoreClass == 4>>millionaires<<else>>THERE HAS BEEN AN ERROR<</if>></span></strong>.
+<<link "Auto">><<set $activeSlave.whoreClass = 0>><<replace "#whoreClass">>auto<</replace>><</link>> |
+<<link "Lower Class">><<set $activeSlave.whoreClass = 1>><<replace "#whoreClass">>the lower class<</replace>><</link>> |
+<<link "Middle Class">><<set $activeSlave.whoreClass = 2>><<replace "#whoreClass">>the middle class<</replace>><</link>> |
+<<link "Upper Class">><<set $activeSlave.whoreClass = 3>><<replace "#whoreClass">>the upper class<</replace>><</link>> |
+<<link "Millionaires">><<set $activeSlave.whoreClass = 0>><<replace "#whoreClass">>millionaires<</replace>><</link>><br>
+
 <<if $activeSlave.fuckdoll > 0>>
 	//Rules have little meaning for living sex toys//
 <<else>>