diff --git a/devNotes/twine JS.txt b/devNotes/twine JS.txt
index 2208d3d650e1e9f6e179e7a7e4b5d698c3cb60bd..c30abd3b6bab306454f515c3b5d471ebffc77610 100644
--- a/devNotes/twine JS.txt	
+++ b/devNotes/twine JS.txt	
@@ -2234,66 +2234,184 @@ window.Job = Object.freeze({
 window.PersonalAttention = Object.freeze({TRADE: 'trading', WAR: 'warfare', SLAVING: 'slaving', ENGINEERING: 'engineering', MEDICINE: 'medicine', MAID: 'upkeep', HACKING: 'hacking'});
 
 window.getCost = function(array) {
-	var rulesCost = State.variables.rulesCost;
-	var foodCost = State.variables.foodCost;
-	var drugsCost = State.variables.drugsCost;
+	var array2 = array;
+	var oldCash = State.variables.cash;
+	var costSoFar = 0;
+	cashX(forceNeg(getBrothelCosts()), "brothel");
+	cashX(forceNeg(getBrothelAdsCosts()), "brothelAds");
+	cashX(forceNeg(getArcadeCosts()), "arcade");
+	cashX(forceNeg(getClubCosts()), "club");
+	cashX(forceNeg(getClubAdsCosts()), "brothelAds");
+	cashX(forceNeg(getDairyCosts()), "dairy");
+	cashX(forceNeg(getIncubatorCosts()), "incubator");
+	cashX(forceNeg(getServantsQuartersCosts()), "servantsQuarters");
+	cashX(forceNeg(getMasterSuiteCosts()), "masterSuite");
+	cashX(forceNeg(getNurseryCosts()), "nursery");
+	cashX(forceNeg(getFarmyardCosts()), "farmyard");
+	cashX(forceNeg(getSecurityExpansionCost()), "securityExpansion");
+	cashX(forceNeg(getLifestyleCosts()), "personalLivingExpenses");
+	cashX(forceNeg(getFSCosts()), "futureSocieties");
+	cashX(forceNeg(getCitizenOrphanageCosts()), "citizenOrphanage");
+	cashX(forceNeg(getPrivateOrphanageCosts()), "privateOrphanage");
+	cashX(forceNeg(getPeacekeeperCosts()), "peacekeepers");
+	cashX(forceNeg(getMercenariesCosts()), "mercenaries");
+	cashX(forceNeg(getMenialRetirementCosts()), "menialRetirement");
+	cashX(forceNeg(getRecruiterCosts()), "recruiter");
+	cashX(forceNeg(getSchoolCosts()), "schoolBacking");
+	cashX(forceNeg(getPolicyCosts()), "policies");
+	cashX(forceNeg(getCyberModCosts()), "cyberMod");
+	cashX(forceNeg(getPCTrainingCosts()), "PCtraining");
+	cashX(forceNeg(getPCCosts()), "PCmedical");
+	getTotalSlaveCosts(array2);
+	
+	
+	//these two apply a multiplicative effect to all costs so far.
+	// Calculate what the deduced expenses would be, then subtract 
+	costSoFar = (oldCash - State.variables.cash); //How much we have spent by this point; expected to be positive.
+	cashX(forceNeg(costSoFar - getEnvironmentCosts(costSoFar), "environment")); //getEnv takes total costs and makes it worse.  Figure out how much worse and record it
+
+	costSoFar = (oldCash - State.variables.cash);
+	cashX(forceNeg(costSoFar - getPCMultiplierCosts(costSoFar)), "PCskills");
+
+	//in the old order these were applied after multiplication.  Not sure if deliberate, but I'm leaving it for now.
+	cashX(forceNeg(getSFCosts()), "specialForces");
+	cashX(forceNeg(getWeatherCosts()), "weather");
+	return (oldCash - State.variables.cash);
+};
+
+//slave expenses
+window.predictTotalSlaveCosts = function(array3) {
+	var loopCosts = 0;	
+	//slave expenses
+	for (var slave of array3) {
+		loopCosts += getSlaveCost(slave);
+		loopCosts += getSlaveMinorCosts(slave);
+	}
+	return loopCosts;
+};
+
+window.getTotalSlaveCosts = function(array3) {
+	var slaveCost = 0;
+	var slaveCostMinor = 0;
+	for (var slave of array3) {
+		slaveCost = getSlaveCost(slave);
+		cashX(forceNeg(slaveCost), "slaveUpkeep", slave);
+		slaveCostMinor = getSlaveMinorCosts(slave);
+		cashX(forceNeg(slaveCostMinor), "slaveUpkeep", slave);
+	}
+	//nothing to return, cashX already billed.
+};
+
+//facility expenses
+window.getBrothelCosts = function() {
 	var facilityCost = State.variables.facilityCost;
-	var localEcon = State.variables.localEcon;
 	var brothel = State.variables.brothel;
+	var costs = (brothel * facilityCost);
+	costs += (0.1 * State.variables.brothelUpgradeDrugs * brothel * facilityCost);
+	return costs;
+};
+
+window.getBrothelAdsCosts = function() {
+	var brothel = State.variables.brothel;
+	var costs = 0
+	if(brothel > 0) {
+		costs += State.variables.brothelAdsSpending;
+	}
+	return costs;
+};
+
+window.getArcadeCosts = function() {
+	var facilityCost = State.variables.facilityCost;
 	var arcade = State.variables.arcade;
+	var costs = (arcade * facilityCost * 0.5);
+	costs += (0.2 * State.variables.arcadeUpgradeInjectors * arcade * facilityCost)
+	+ (0.2 * State.variables.arcadeUpgradeCollectors * arcade * facilityCost);
+	return costs;
+};
+
+window.getClubCosts = function() {
+	var facilityCost = State.variables.facilityCost;
 	var club = State.variables.club;
-	var dairy = State.variables.dairy;
-	var farmyard = State.variables.farmyard;
-	var servantsQuarters = State.variables.servantsQuarters;
-	var nursery = State.variables.nursery;
-	var incubator = State.variables.incubator;
-	var mercCosts = State.variables.mercenaries * 2000;
-	var policyCost = State.variables.policyCost;
-	var costs = (brothel * facilityCost)
-		+ (arcade * facilityCost * 0.5)
-		+ (club * facilityCost)
-		+ (dairy * facilityCost)
-		+ (nursery * facilityCost)
-		+ (farmyard * facilityCost)
-		+ (State.variables.incubator * facilityCost * 10);
-	var secExpCost = 0;
-	var soldierMod = 0;
+	var costs = (club * facilityCost);
+	costs += (0.2 * State.variables.clubUpgradePDAs * club * facilityCost);
+	if(club > 0) {
+		costs += State.variables.clubAdsSpending;
+	}
+	return costs;
+};
 
-	//facility expenses
-	costs += (0.1 * State.variables.brothelUpgradeDrugs * brothel * facilityCost)
-	+ (0.2 * State.variables.arcadeUpgradeInjectors * arcade * facilityCost)
-	+ (0.2 * State.variables.arcadeUpgradeCollectors * arcade * facilityCost)
-	+ (0.2 * State.variables.clubUpgradePDAs * club * facilityCost)
-	+ (0.2 * State.variables.dairyFeedersUpgrade * dairy * facilityCost)
+window.getClubAdsCosts = function() {
+	var club = State.variables.club;
+	var costs = 0;
+	if(club > 0) {
+		costs += State.variables.clubAdsSpending;
+	}
+	return costs;
+};
+
+window.getDairyCosts = function() {
+	var facilityCost = State.variables.facilityCost;
+	var dairy = State.variables.dairy;
+	var costs = (dairy * facilityCost) + (0.2 * State.variables.dairyFeedersUpgrade * dairy * facilityCost)
 	+ (0.1 * State.variables.dairyPregUpgrade * dairy * facilityCost)
-	+ (0.2 * State.variables.dairyStimulatorsUpgrade * facilityCost)
-	+ (0.2 * State.variables.servantsQuartersUpgradeMonitoring * servantsQuarters * facilityCost)
-	+ (0.2 * State.variables.incubatorUpgradeWeight * incubator * facilityCost)
+	+ (0.2 * State.variables.dairyStimulatorsUpgrade * facilityCost);
+	if(dairy > 0) {
+		costs += ((State.variables.bioreactorsXY + State.variables.bioreactorsXX + State.variables.bioreactorsHerm + State.variables.bioreactorsBarren) * 100);
+	}
+	return costs;
+};
+
+window.getIncubatorCosts = function() {
+	var facilityCost = State.variables.facilityCost;
+	var incubator = State.variables.incubator;
+	var costs = (State.variables.incubator * facilityCost * 10);
+	costs += (0.2 * State.variables.incubatorUpgradeWeight * incubator * facilityCost)
 	+ (0.2 * State.variables.incubatorUpgradeMuscles * incubator * facilityCost)
 	+ (0.2 * State.variables.incubatorUpgradeReproduction * incubator * facilityCost)
 	+ (0.2 * State.variables.incubatorUpgradeGrowthStims * incubator * facilityCost)
 	+ (0.5 * State.variables.incubatorUpgradeSpeed * incubator * facilityCost);
-
-	if(dairy > 0) {
-		costs += ((State.variables.bioreactorsXY + State.variables.bioreactorsXX + State.variables.bioreactorsHerm + State.variables.bioreactorsBarren) * 100);
-	}
-	if(brothel > 0) {
-		costs += State.variables.brothelAdsSpending;
-	}
-	if(club > 0) {
-		costs += State.variables.clubAdsSpending;
-	}
 	if(incubator > 0) {
 		costs += ((State.variables.incubatorWeightSetting + State.variables.incubatorMusclesSetting + State.variables.incubatorReproductionSetting + State.variables.incubatorGrowthStimsSetting) * 500);
 	}
+	return costs;
+};
+
+window.getServantsQuartersCosts = function() {
+	var facilityCost = State.variables.facilityCost;
+	var servantsQuarters = State.variables.servantsQuarters;
+	var costs = (0.2 * State.variables.servantsQuartersUpgradeMonitoring * servantsQuarters * facilityCost);
+	return costs;
+};
+
+window.getMasterSuiteCosts = function() {
+	var costs = 0;	
 	if(State.variables.masterSuitePregnancySlaveLuxuries === 1) {
 		costs += 500;
 	}
 	if(State.variables.masterSuitePregnancyFertilitySupplements === 1) {
 		costs += 1000;
 	}
+	return costs;
+};
+
+window.getNurseryCosts = function() {
+	var facilityCost = State.variables.facilityCost;
+	var nursery = State.variables.nursery;
+	var costs = (nursery * facilityCost);
+	return costs;
+};
 
+window.getFarmyardCosts = function() {
+	var facilityCost = State.variables.facilityCost;
+	var farmyard = State.variables.farmyard;
+	var costs = (farmyard * facilityCost);
+	return costs;
+};
+
+window.getSecurityExpansionCost = function() {
 	//security expansion
+	var secExpCost = 0;
+	var soldierMod = 0;
 	if(State.variables.secExp == 1) {
 		if(State.variables.edictsUpkeep > 0) {
 			secExpCost += State.variables.edictsUpkeep;
@@ -2343,26 +2461,54 @@ window.getCost = function(array) {
 				}
 			}
 		}
-		costs += secExpCost;
 	}
+	return secExpCost;
+};
 
 	//general arcology costs
+
+window.getLifestyleCosts = function() {
+	var costs = 0;
+	var localEcon = State.variables.localEcon;
 	costs += (State.variables.girls * (250 + (50000 / localEcon)));
+	return costs;
+};
 
+window.getFSCosts = function() {
+	var costs = 0;
+	costs += State.variables.FSSpending;
 	if(State.variables.arcologies[0].FSRepopulationFocusLaw === 1 && State.variables.PC.pregKnown == 1) {
 		costs -= 500;
 	}
+	return costs;
+};
 
+window.getCitizenOrphanageCosts = function() {
+	var costs = 0;	
 	costs += State.variables.citizenOrphanageTotal * 100;
+	return costs;
+};
+
+window.getPrivateOrphanageCosts = function() {
+	var costs = 0;	
 	costs += State.variables.privateOrphanageTotal * 500;
 	if(State.variables.breederOrphanageTotal > 0) {
 		costs += 50;
 	}
+	return costs;
+};
 
+window.getPeacekeeperCosts = function() {
+	var costs = 0;	
 	if(State.variables.peacekeepers !== 0 && State.variables.peacekeepers.undermining !== 0) {
 		costs += State.variables.peacekeepers.undermining;
 	}
+	return costs;
+};
 
+window.getMercenariesCosts = function() {
+	var costs = 0;
+	var mercCosts = State.variables.mercenaries * 2000;
 	if(State.variables.mercenaries > 0) {
 		if(State.variables.barracks) {
 			mercCosts *= 0.5;
@@ -2372,61 +2518,28 @@ window.getCost = function(array) {
 		}
 		costs += mercCosts;
 	}
+	return costs;
+};
 
+window.getMenialRetirementCosts = function() {
+	var costs = 0;	
 	if(State.variables.citizenRetirementMenials == 1) {
 		costs += State.variables.menials * 2;
 	}
+	return costs;
+};
 
-	costs += State.variables.FSSpending;
-
-	//slave expenses
-	for (var slave of array) {
-		costs += getSlaveCost(slave);
-		if(slave.assignment === Job.SERVANT || slave.assignment === Job.SERVER) {
-			if(slave.trust < -20) {
-				costs -= rulesCost * 4;
-			} else if(slave.devotion < -20) {
-				if (slave.trust >= 20) {
-					costs -= rulesCost / 2;
-				} else {
-					costs -= rulesCost * 2;
-				}
-			} else if(slave.devotion <= 20) {
-				costs -= rulesCost * 3;
-			} else if(slave.devotion <= 50) {
-				costs -= rulesCost * 4;
-			} else {
-				costs -= rulesCost * 5;
-			}
-			if(slave.fetish === 'submissive') {
-				costs -= rulesCost;
-			} else if(slave.fetish === 'dom') {
-				costs += rulesCost;
-			}
-			if(slave.relationship < -1) {
-				costs -= rulesCost;
-			}
-			if(slave.energy < 20) {
-				costs -= rulesCost;
-			} else if(slave.energy < 40) {
-				costs -= rulesCost / 2;
-			}
-			if(slave.lactation > 0) {
-				costs -= 25;
-			}
-			if(slave.assignment === Job.SERVANT) {
-				costs -= rulesCost;
-			}
-			if(setup.servantCareers.includes(slave.career) || slave.skillS >= State.variables.masteredXP) {
-				costs -= rulesCost;
-			}
-		}
-	}
-
-	// policy and other expenses
+// policy and other expenses
+window.getRecruiterCosts = function() {
+	var costs = 0;	
 	if(State.variables.Recruiter !== 0) {
 		costs += 250;
 	}
+	return costs;
+};
+
+window.getSchoolCosts = function() {
+	var costs = 0;	
 	if(State.variables.TSS.schoolPresent === 1) {
 		costs += 1000;
 	}
@@ -2475,7 +2588,12 @@ window.getCost = function(array) {
 	if(State.variables.TFS.subsidize !== 0) {
 		costs += 1000;
 	}
+	return costs;
+};
 
+window.getPolicyCosts = function() {
+	var costs = 0;
+	var policyCost = State.variables.policyCost;
 	if(State.variables.alwaysSubsidizeGrowth === 1) {
 		costs += policyCost;
 	}
@@ -2496,7 +2614,21 @@ window.getCost = function(array) {
 	if(State.variables.CoursingAssociation === 1) {
 		costs += 1000;
 	}
+	return costs;
+};
 
+window.getCyberModCosts = function() {
+	var costs = 0;	
+	if(State.variables.cyberMod !== 0 && State.variables.researchLab.built === 'true') {
+		costs += ((100 * State.variables.researchLab.maxSpace) + (300 * State.variables.researchLab.hired) + (100 * State.variables.researchLab.hired));
+	}
+	return costs;
+};
+
+
+//player expenses
+window.getPCTrainingCosts = function() {
+	var costs = 0;	
 	if(State.variables.PC.actualAge >= State.variables.IsInPrimePC && State.variables.PC.actualAge < State.variables.IsPastPrimePC) {
 	if(State.variables.personalAttention === PersonalAttention.TRADE) {
 		costs += 10000*State.variables.AgeEffectOnTrainerPricingPC;
@@ -2512,13 +2644,10 @@ window.getCost = function(array) {
 		costs += 10000*State.variables.AgeEffectOnTrainerPricingPC;
 	}
 	}
-
-	if(State.variables.cyberMod !== 0 && State.variables.researchLab.built === 'true') {
-		costs += ((100 * State.variables.researchLab.maxSpace) + (300 * State.variables.researchLab.hired) + (100 * State.variables.researchLab.hired));
-	}
-
-	//player expenses
-
+	return costs;
+};
+window.getPCCosts = function() {
+	var costs = 0;	
 	if(State.variables.PC.preg === -1) {
 		costs += 25;
 	} else if(State.variables.PC.fertDrugs === 1) {
@@ -2529,29 +2658,41 @@ window.getCost = function(array) {
 	if(State.variables.PC.staminaPills === 1) {
 		costs += 50;
 	}
+	return costs;
+};
+
 
+window.getPCMultiplierCosts = function(cost) {
 	if(State.variables.PC.career === 'servant') {
 		if(State.variables.personalAttention === PersonalAttention.MAID) {
 			if(State.variables.PC.belly >= 5000) {
-				costs *= 0.80;
+				cost *= 0.80;
 			} else {
-				costs *= 0.75;
+				cost *= 0.75;
 			}
 		} else {
-			costs *= 0.9;
+			cost *= 0.9;
 		}
 	}
 
+	return cost;
+};
+
+window.getEnvironmentCosts = function(cost) {
 	if(State.variables.secExp == 1) {
 		if(State.variables.terrain === 'oceanic' || State.variables.terrain === 'marine') {
 			if(State.variables.docks > 0) {
-				costs *= (1 - State.variables.docks * 0.05);
+				cost *= (1 - State.variables.docks * 0.05);
 			}
 		} else if(State.variables.railway > 0) {
-			costs *= (1 - State.variables.railway * 0.05);
+			cost *= (1 - State.variables.railway * 0.05);
 		}
 	}
+	return cost;
+};
 
+window.getSFCosts = function() {
+	var costs = 0;	
 	if(State.variables.SF.Toggle && State.variables.SF.Active >= 1) {
 		if(State.variables.SF.Subsidy) {
 			costs += Math.ceil( (10000*(State.variables.SF.Squad.Troops/10))+(1+(State.variables.arcologies[0].prosperity/100))+(1+(State.variables.SF.Size/100)) );
@@ -2562,21 +2703,64 @@ window.getCost = function(array) {
 			costs += Math.ceil(T.SFCashBonus);
 		}
 	}
+	return costs;
+};
+
+window.getWeatherCosts = function() {
+	var costs = 0;	
 	if(State.variables.econWeatherDamage && State.variables.disasterResponse > 0) {
 		costs += Math.trunc(State.variables.disasterResponse * 200000 / State.variables.localEcon);
 	}
 	if(State.variables.antiWeatherFreeze > 0) {
 		costs += Math.trunc(State.variables.antiWeatherFreeze * 200000 / State.variables.localEcon);
 	}
-	// clean up
-	if(costs < 0) {
-		costs = 0;
+	return costs;
+};
+
+window.getSlaveMinorCosts = function(slave) {
+	var costs = 0;
+	var rulesCost = State.variables.rulesCost;
+	if(slave.assignment === Job.SERVANT || slave.assignment === Job.SERVER) {
+	if(slave.trust < -20) {
+		costs -= rulesCost * 4;
+	} else if(slave.devotion < -20) {
+		if (slave.trust >= 20) {
+			costs -= rulesCost / 2;
+		} else {
+			costs -= rulesCost * 2;
+		}
+	} else if(slave.devotion <= 20) {
+		costs -= rulesCost * 3;
+	} else if(slave.devotion <= 50) {
+		costs -= rulesCost * 4;
 	} else {
-		costs = Math.ceil(costs);
+		costs -= rulesCost * 5;
+	}
+	if(slave.fetish === 'submissive') {
+		costs -= rulesCost;
+	} else if(slave.fetish === 'dom') {
+		costs += rulesCost;
+	}
+	if(slave.relationship < -1) {
+		costs -= rulesCost;
+	}
+	if(slave.energy < 20) {
+		costs -= rulesCost;
+	} else if(slave.energy < 40) {
+		costs -= rulesCost / 2;
+	}
+	if(slave.lactation > 0) {
+		costs -= 25;
+	}
+	if(slave.assignment === Job.SERVANT) {
+		costs -= rulesCost;
+	}
+	if(setup.servantCareers.includes(slave.career) || slave.skillS >= State.variables.masteredXP) {
+		costs -= rulesCost;
+	}
 	}
-
 	return costs;
-}
+};
 
 window.getSlaveCost = function(s) {
 	if(!s) { return 0; }
@@ -2589,15 +2773,15 @@ window.getSlaveCost = function(s) {
 	// Living expenses
 	switch(s.assignment) {
 	case Job.ARCADE:
-		cost += rulesCost * .75;
+		cost += rulesCost * 0.75;
 		break;
 	case Job.DAIRY:
 		if(State.variables.dairyRestraintsSetting >= 2) {
-			cost += rulesCost * .75;
+			cost += rulesCost * 0.75;
 		} else if(s.livingRules == LivingRule.NORMAL) {
 			cost += rulesCost * 1.5;
 		} else if(State.variables.dairyDecoration === 'Degradationist') {
-			cost += rulesCost * .90;
+			cost += rulesCost * 0.90;
 		} else {
 			cost += rulesCost;
 		}
@@ -2635,7 +2819,7 @@ window.getSlaveCost = function(s) {
 			cost += rulesCost * 1.5;
 		} else {
 			if(State.variables.servantsQuartersDecoration === 'Degradationist') {
-				cost += rulesCost * .90;
+				cost += rulesCost * 0.90;
 			} else {
 				cost += rulesCost;
 			}
@@ -2645,7 +2829,7 @@ window.getSlaveCost = function(s) {
 		if(s.livingRules == LivingRule.NORMAL) {
 			cost += rulesCost * 1.25;
 		} else {
-			cost += rulesCost * .90;
+			cost += rulesCost * 0.90;
 		}
 		break;
 	case Job.MADAM: case Job.DJ: case Job.NURSE: case Job.WARDEN:
@@ -2675,7 +2859,7 @@ window.getSlaveCost = function(s) {
 			break;
 	}
 	if(s.geneticQuirks.fertility == 2 && s.geneticQuirks.hyperFertility == 2 && s.preg == 0 && (s.ovaries == 1 || s.mpreg == 1)) {
-		cost += foodCost * .5;
+		cost += foodCost * 0.5;
 	}
 	if(s.weight > 130) {
 		cost += foodCost * 2;
@@ -2837,7 +3021,7 @@ window.getSlaveCost = function(s) {
 		cost += drugsCost * 5;
 		break;
 	case 'sag-B-gone':
-		cost += Math.trunc(drugsCost * .1);
+		cost += Math.trunc(drugsCost * 0.1);
 		break;
 	case 'no drugs': case 'none':
 		break;
@@ -2926,6 +3110,70 @@ window.initFacilityStatistics = function(facility) {
 	return facility;
 };
 
+window.cashX = function(cost, what, who) {
+	const V = State.variables;
+
+	if(isNaN(cost)){
+		V.lastWeeksErrors += `NaN: "${cost}" at ${what},
+		`;
+	} else {
+		
+		//INCOME
+		if(cost > 0) {
+				if (typeof V.lastWeeksCashIncome[what] !== 'undefined') {
+					
+					//record the action
+					V.lastWeeksCashIncome[what] += cost;
+
+					//record the slave, if available
+					if (typeof who !== 'undefined'){
+							who.lastWeeksCashIncome += cost;
+							who.lifetimeCashIncome += cost;
+					}
+
+					//Spend the money
+					V.cash += cost;
+				} else {
+					V.lastWeeksErrors += `Unknown place "${what}",`;
+				}
+		}
+		
+		//EXPENSES
+		else if(cost < 0) {
+			if (typeof V.lastWeeksCashExpenses[what] !== 'undefined') {
+				
+				//record the action
+				V.lastWeeksCashExpenses[what] += cost;
+				
+				//record the slave, if available
+				if (typeof who !== 'undefined'){
+					if (what === "slaveTransfer"){
+						who.slaveCost = cost;
+					} else {
+						who.lifetimeCashExpenses += cost;
+					}
+				}
+
+				//Spend the money
+				V.cash += cost;
+			} else {
+				V.lastWeeksErrors += `Unknown place "${what}",`;
+			}
+		}
+		else {
+			//somebody probably tried to pass a 0, ignore it.  New slaves will default to "slaveCost: 0", no need to call a costX for it.
+		}
+		return cost;
+	}
+};
+
+window.forceNeg = function(x) {
+	if (x > 0){
+		x = Math.abs(x) * -1;
+	}
+	return x;
+};
+
 Number.prototype.toFixedHTML = function() {
 	return commaNum(Number.prototype.toFixed.apply(this, arguments)).replace(/\.0+$/, '<span style="opacity: 0.3">$&</span>');
 };
@@ -9735,13 +9983,13 @@ window.MenialPopCap = function MenialPopCap () {
 		let price = menialSlaveCost(-overMenialCap);
 		if (V.menials > 0) {
 			if (V.menials > overMenialCap) {
-				V.cash += overMenialCap * price;
+				cashX((overMenialCap * price), "menialTrades");
 				V.menialDemandFactor -= overMenialCap;
 				V.menials -= overMenialCap;
 				overMenialCap = 0;
 				r += "You don't have enough room for all your menials and are obliged to sell some.";
 			} else {
-				V.cash += V.menials * price;
+				cashX((V.menials * price), "menialTrades");
 				V.menialDemandFactor -= V.menials;
 				overMenialCap -= V.menials;
 				V.menials = 0;
@@ -9750,13 +9998,13 @@ window.MenialPopCap = function MenialPopCap () {
 		}
 		if (overMenialCap > 0 && V.fuckdolls > 0) {
 			if (V.fuckdolls > overMenialCap) {
-				V.cash += overMenialCap * (price * 2);
+				cashX(overMenialCap * (price * 2), "menialTrades");
 				V.menialDemandFactor -= overMenialCap;
 				V.fuckdolls -= overMenialCap;
 				overMenialCap = 0;
 				r += "You don't have enough room for all your Fuckdolls and are obliged to sell some.";
 			} else {
-				V.cash += V.fuckdolls * (price * 2);
+				cashX(V.fuckdolls * (price * 2), "menialTrades");
 				V.menialDemandFactor -= V.fuckdolls;
 				overMenialCap -= V.fuckdolls;
 				V.fuckdolls = 0;
@@ -9764,7 +10012,7 @@ window.MenialPopCap = function MenialPopCap () {
 			}
 		}
 		if (overMenialCap > 0 && V.menialBioreactors > 0) {
-			V.cash += overMenialCap * (price - 100);
+			cashX(overMenialCap * (price - 100), "menialTrades");
 			V.menialDemandFactor -= overMenialCap;
 			V.menialBioreactors -= overMenialCap;
 			r += "You don't have enough room for all your menial bioreactors and are obliged to sell some.";
@@ -10618,7 +10866,7 @@ window.BirthDestinationText = function(choice,slave) {
 				r += `For a moment, ${he} saw a glimmer of good in you; <span class='mediumorchid'>${He} was clearly wrong.</span> ${His} mind struggles to comprehend <span class='gold'>why ${he} could ever even think of trusting such a person.</span>`;
 				slave.trust -= 30, slave.devotion -= 30;
 			}
-			V.cash += T.curBabies*(50+T.babyCost);
+			cashX(T.curBabies*(50+T.babyCost), "slaveTransfer", slave);
 			break;
 	}
 	return r;
@@ -13745,7 +13993,7 @@ window.saRest = function saRest(slave) {
 			} else {
 				t += `an incident without lasting effect.`;
 			}
-			V.cash += Math.trunc(V.FResult*_vignette.effect);
+			cashX(Math.trunc(V.FResult*_vignette.effect), "rest", slave);
 		} else if (_vignette.type == "devotion") {
 			if (_vignette.effect > 0) {
 				if (slave.devotion > 50) {
@@ -13848,12 +14096,12 @@ window.saServant = function saServant(slave) {
 				}
 				if (!(canHear(slave))) {
 					t += ` However, ${his} inability to hear often leaves ${him} oblivious to ${V.Stewardess.slaveName}'s orders, limiting their meaningful interactions.`;
-					V.cash += (V.stewardessBonus/4);
+					cashX(V.stewardessBonus/4, servantsQuarters, slave);
 				} else if ((slave.hears == -1 && slave.earwear != "hearing aids") || (slave.hears == 0 && slave.earwear == "muffling ear plugs")) {
 					t += ` However, ${he} often doesn't catch what ${V.Stewardess.slaveName} says, leading to frustration, confusion and less work done.`;
-					V.cash += (V.stewardessBonus/2);
+					cashX(V.stewardessBonus/2, servantsQuarters, slave);
 				} else {
-					V.cash += V.stewardessBonus;
+					cashX(V.stewardessBonus, servantsQuarters, slave);
 				}
 			}
 		}
@@ -13940,7 +14188,7 @@ window.saServant = function saServant(slave) {
 			} else {
 				t += `an incident without lasting effect.`;
 			}
-			V.cash += Math.trunc(V.FResult*_vignette.effect);
+			cashX(Math.trunc(V.FResult*_vignette.effect), servantsQuarters, slave);
 		} else if (_vignette.type == "devotion") {
 			if (_vignette.effect > 0) {
 				if (slave.devotion > 50) {
@@ -15554,7 +15802,7 @@ window.DefaultRules = (function() {
 					if (slave.eyes == -1) {
 						if (slave.eyewear != "corrective glasses") {
 							slave.eyewear = "corrective glasses";
-							V.cash -= V.modCost;
+							cashX(forceNeg(V.modCost), "slaveMod", slave);
 							r += `<br>${slave.slaveName} has been given corrective glasses.`;
 						}
 					} else {
@@ -15569,7 +15817,7 @@ window.DefaultRules = (function() {
 					if (slave.eyes == -1) {
 						if (slave.eyewear != "corrective contacts") {
 							slave.eyewear = "corrective contacts";
-							V.cash -= V.modCost;
+							cashX(forceNeg(V.modCost), "slaveMod", slave);
 							r += `<br>${slave.slaveName} has been given corrective contacts.`;
 						}
 					} else {
@@ -15584,7 +15832,7 @@ window.DefaultRules = (function() {
 					if (slave.eyes > -1) {
 						if (slave.eyewear != "blurring glasses") {
 							slave.eyewear = "blurring glasses";
-							V.cash -= V.modCost;
+							cashX(forceNeg(V.modCost), "slaveMod", slave);
 							r += `<br>${slave.slaveName} has been given blurring glasses.`;
 						}
 					} else {
@@ -15599,7 +15847,7 @@ window.DefaultRules = (function() {
 					if (slave.eyes > -1) {
 						if (slave.eyewear != "blurring contacts") {
 							slave.eyewear = "blurring contacts";
-							V.cash -= V.modCost;
+							cashX(forceNeg(V.modCost), "slaveMod", slave);
 							r += `<br>${slave.slaveName} has been given blurring contacts.`;
 						}
 					} else {
@@ -15614,13 +15862,13 @@ window.DefaultRules = (function() {
 					if (slave.eyes == -1) {
 						if (slave.eyewear != "corrective glasses") {
 							slave.eyewear = "corrective glasses";
-							V.cash -= V.modCost;
+							cashX(forceNeg(V.modCost), "slaveMod", slave);
 							r += `<br>${slave.slaveName} has been given corrective glasses.`;
 						}
 					} else {
 						if (slave.eyewear != "glasses") {
 							slave.eyewear = "glasses";
-							V.cash -= V.modCost;
+							cashX(forceNeg(V.modCost), "slaveMod", slave);
 							r += `<br>${slave.slaveName} has been given decorative glasses.`;
 						}
 					}
@@ -15644,7 +15892,7 @@ window.DefaultRules = (function() {
 					if (slave.hears == -1) {
 						if (slave.earwear != "hearing aids") {
 							slave.earwear = "hearing aids";
-							V.cash -= V.modCost;
+							cashX(forceNeg(V.modCost), "slaveMod", slave);
 							r += `<br>${slave.slaveName} has been given hearing aids.`;
 						}
 					} else {
@@ -15659,7 +15907,7 @@ window.DefaultRules = (function() {
 					if (slave.hears > -1) {
 						if (slave.earwear != "muffling ear plugs") {
 							slave.earwear = "muffling ear plugs";
-							V.cash -= V.modCost;
+							cashX(forceNeg(V.modCost), "slaveMod", slave);
 							r += `<br>${slave.slaveName} has been given muffling ear plugs.`;
 						}
 					} else {
@@ -15674,7 +15922,7 @@ window.DefaultRules = (function() {
 					if (slave.hears > -2) {
 						if (slave.earwear != "deafening ear plugs") {
 							slave.earwear = "deafening ear plugs";
-							V.cash -= V.modCost;
+							cashX(forceNeg(V.modCost), "slaveMod", slave);
 							r += `<br>${slave.slaveName} has been given deafening ear plugs.`;
 						}
 					} else {
@@ -17050,25 +17298,25 @@ window.DefaultRules = (function() {
 			if ((rule.teeth == "universal")) {
 				if ((slave.teeth == "crooked")) {
 					slave.teeth = "straightening braces";
-					V.cash -= V.surgeryCost;
+					cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 					r += `<br>${slave.slaveName} has been given braces for her crooked teeth.`;
 				} else if (slave.teeth == "gapped") {
 					slave.teeth = "straightening braces";
-					V.cash -= V.surgeryCost;
+					cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 					r += `<br>${slave.slaveName} has been given braces to close the gap in her teeth.`;
 				} else if ((slave.teeth == "normal")) {
 					slave.teeth = "cosmetic braces";
-					V.cash -= V.surgeryCost;
+					cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 					r += `<br>${slave.slaveName} has been given cosmetic braces.`;
 				}
 			} else if ((rule.teeth == "straighten")) {
 				if ((slave.teeth == "crooked")) {
 					slave.teeth = "straightening braces";
-					V.cash -= V.surgeryCost;
+					cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 					r += `<br>${slave.slaveName} has been given braces for her crooked teeth.`;
 				} else if (slave.teeth == "gapped") {
 					slave.teeth = "straightening braces";
-					V.cash -= V.surgeryCost;
+					cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 					r += `<br>${slave.slaveName} has been given braces to close the gap in her teeth.`;
 				} else if ((slave.teeth == "cosmetic braces")) {
 					slave.teeth = "normal";
@@ -17090,7 +17338,7 @@ window.DefaultRules = (function() {
 		if (rule.eyeColor !== undefined && (rule.eyeColor !== "no default setting")) {
 			if ((slave.eyeColor !== rule.eyeColor)) {
 				slave.eyeColor = rule.eyeColor;
-				V.cash -= V.modCost;
+				cashX(forceNeg(V.modCost), "slaveMod", slave);
 				r += `<br>${slave.slaveName} has been given ${slave.eyeColor} contact lenses.`;
 			}
 		}
@@ -17098,7 +17346,7 @@ window.DefaultRules = (function() {
 		if (rule.makeup !== undefined && (rule.makeup !== "no default setting")) {
 			if ((slave.makeup !== rule.makeup)) {
 				slave.makeup = rule.makeup;
-				V.cash -= V.modCost;
+				cashX(forceNeg(V.modCost), "slaveMod", slave);
 				r += `<br>${slave.slaveName} has been assigned the standard makeup.`;
 			}
 		}
@@ -17107,7 +17355,7 @@ window.DefaultRules = (function() {
 			if (rule.nails !== undefined && (rule.nails !== "no default setting")) {
 				if ((slave.nails !== rule.nails)) {
 					slave.nails = rule.nails;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName} has been assigned the standard nails.`;
 				}
 			}
@@ -17117,7 +17365,7 @@ window.DefaultRules = (function() {
 			if (slave.bald != 1) {
 				if ((slave.hColor !== rule.hColor)) {
 					slave.hColor = rule.hColor;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s hair has been dyed ${rule.hColor}.`;
 				}
 			}
@@ -17127,7 +17375,7 @@ window.DefaultRules = (function() {
 			if (slave.bald != 1) {
 				if ((slave.hStyle !== rule.hStyle)) {
 					slave.hStyle = rule.hStyle;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					if ((rule.hStyle == "shaved")) {
 						slave.hLength = 0;
 						r += `<br>${slave.slaveName}'s hair has been shaved.`;
@@ -17141,10 +17389,10 @@ window.DefaultRules = (function() {
 			if (slave.bald != 1) {
 				if ((slave.hLength !== rule.hLength)) {
 					if ((slave.hLength > rule.hLength)) {
-						V.cash -= V.modCost;
+						cashX(forceNeg(V.modCost), "slaveMod", slave);
 						r += `<br>${slave.slaveName}'s hair has been cut; it `;
 					} else {
-						V.cash -= V.modCost*Math.trunc((rule.hLength-slave.hLength)/10);
+						cashX(forceNeg(V.modCost*Math.trunc((rule.hLength-slave.hLength)/10)), "slaveMod");
 						r += `<br>${slave.slaveName} has been given extensions; her hair `;
 					}
 				r += `is now ${lengthToEitherUnit(rule.hLength)} long.`;
@@ -17169,7 +17417,7 @@ window.DefaultRules = (function() {
 			if (slave.eyebrowHStyle != "bald" && slave.eyebrowHStyle != "hairless") {
 				if ((slave.eyebrowHColor !== rule.eyebrowHColor)) {
 					slave.eyebrowHColor = rule.eyebrowHColor;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s eyebrow hair, if present, has been dyed ${rule.eyebrowHColor}.`;
 				}
 			}
@@ -17179,7 +17427,7 @@ window.DefaultRules = (function() {
 			if (slave.eyebrowHStyle != "bald" && slave.eyebrowHStyle != "hairless") {
 				if ((slave.eyebrowHStyle !== rule.eyebrowHStyle)) {
 					slave.eyebrowHStyle = rule.eyebrowHStyle;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s eyebrow hair has been restyled; they are now ${rule.eyebrowHStyle}.`;
 				}
 			}
@@ -17189,7 +17437,7 @@ window.DefaultRules = (function() {
 			if (slave.eyebrowHStyle != "bald" && slave.eyebrowHStyle != "hairless") {
 				if ((slave.eyebrowFullness !== rule.eyebrowFullness)) {
 					slave.eyebrowFullness = rule.eyebrowFullness;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s eyebrow hair thickness has been adjusted; they are now ${rule.eyebrowFullness}.`;
 				}
 			}
@@ -17199,7 +17447,7 @@ window.DefaultRules = (function() {
 			if (slave.pubicHStyle != "bald" && slave.pubicHStyle != "hairless") {
 				if ((slave.pubicHColor !== rule.pubicHColor)) {
 					slave.pubicHColor = rule.pubicHColor;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s pubic hair, if present, has been dyed ${rule.pubicHColor}.`;
 				}
 			}
@@ -17209,7 +17457,7 @@ window.DefaultRules = (function() {
 			if (slave.pubicHStyle != "bald" && slave.pubicHStyle != "hairless") {
 				if ((slave.pubicHStyle !== rule.pubicHStyle)) {
 					slave.pubicHStyle = rule.pubicHStyle;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s pubic hair has been restyled; it is now ${rule.pubicHStyle}.`;
 				}
 			}
@@ -17219,7 +17467,7 @@ window.DefaultRules = (function() {
 			if (slave.underArmHStyle != "bald" && slave.underArmHStyle != "hairless") {
 				if ((slave.underArmHColor !== rule.underArmHColor)) {
 					slave.underArmHColor = rule.underArmHColor;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s underarm hair, if present, has been dyed ${rule.underArmHColor}.`;
 				}
 			}
@@ -17229,7 +17477,7 @@ window.DefaultRules = (function() {
 			if (slave.underArmHStyle != "bald" && slave.underArmHStyle != "hairless") {
 				if ((slave.underArmHStyle !== rule.underArmHStyle)) {
 					slave.underArmHStyle = rule.underArmHStyle;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s underarm hair has been restyled; it is now ${rule.underArmHStyle}.`;
 				}
 			}
@@ -17239,7 +17487,7 @@ window.DefaultRules = (function() {
 			if (slave.eyebrowHStyle != "bald") {
 				if ((slave.eyebrowHColor !== rule.eyebrowHColor)) {
 					slave.eyebrowHColor = rule.eyebrowHColor;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s eyebrow hair, if present, has been dyed ${rule.eyebrowHColor}.`;
 				}
 			}
@@ -17249,7 +17497,7 @@ window.DefaultRules = (function() {
 			if (slave.eyebrowHStyle != "bald") {
 				if ((slave.eyebrowHStyle !== rule.eyebrowHStyle)) {
 					slave.eyebrowHStyle = rule.eyebrowHStyle;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s eyebrow hair has been restyled; it is now ${rule.eyebrowHStyle}.`;
 				}
 			}
@@ -17259,7 +17507,7 @@ window.DefaultRules = (function() {
 			if (slave.eyebrowHStyle != "bald") {
 				if ((slave.eyebrowFullness !== rule.eyebrowFullness)) {
 					slave.eyebrowFullness = rule.eyebrowFullness;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s eyebrow hair has been reshaped; it is now ${rule.eyebrowFullness}.`;
 				}
 			}
@@ -17279,7 +17527,7 @@ window.DefaultRules = (function() {
 					r += `<br>${slave.slaveName}'s nipple piercings have been removed.`;
 				} else if (slave.nipples !== "fuckable") {
 					slave.nipplesPiercing = rule.nipplesPiercing;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s nipples have been pierced.`;
 				} else {
 					r += `<br>${slave.slaveName}'s nipples are inverted and cannot be pierced.`;
@@ -17294,7 +17542,7 @@ window.DefaultRules = (function() {
 					r += `<br>${slave.slaveName}'s areolae piercings have been removed.`;
 				} else {
 					slave.areolaePiercing = rule.areolaePiercing;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s areolae have been given stud piercings.`;
 				}
 			}
@@ -17317,9 +17565,9 @@ window.DefaultRules = (function() {
 						r += `<br>${slave.slaveName}'s clit has been pierced.`;
 
 					if (rule.clitPiercing == 3)
-						V.cash -= 1000;
+						cashX(-1000, "slaveMod");
 					else
-						V.cash -= V.modCost;
+						cashX(forceNeg(V.modCost), "slaveMod", slave);
 				}
 			}
 		}
@@ -17332,7 +17580,7 @@ window.DefaultRules = (function() {
 						r += `<br>${slave.slaveName}'s labia piercings have been removed.`;
 					} else {
 						slave.vaginaPiercing = rule.vaginaPiercing;
-						V.cash -= V.modCost;
+						cashX(forceNeg(V.modCost), "slaveMod", slave);
 						r += `<br>${slave.slaveName}'s pussylips have been pierced.`;
 					}
 				}
@@ -17347,7 +17595,7 @@ window.DefaultRules = (function() {
 						r += `<br>${slave.slaveName}'s shaft piercings have been removed.`;
 					} else {
 						slave.dickPiercing = rule.dickPiercing;
-						V.cash -= V.modCost;
+						cashX(forceNeg(V.modCost), "slaveMod", slave);
 						r += `<br>${slave.slaveName}'s shaft has been pierced.`;
 					}
 				}
@@ -17361,7 +17609,7 @@ window.DefaultRules = (function() {
 					r += `<br>${slave.slaveName}'s asshole piercings have been removed.`;
 				} else {
 					slave.anusPiercing = rule.anusPiercing;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s asshole has been pierced.`;
 				}
 			}
@@ -17374,7 +17622,7 @@ window.DefaultRules = (function() {
 					r += `<br>${slave.slaveName}'s lip piercings have been removed.`;
 				} else {
 					slave.lipsPiercing = rule.lipsPiercing;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s lips have been pierced.`;
 				}
 			}
@@ -17387,7 +17635,7 @@ window.DefaultRules = (function() {
 					r += `<br>${slave.slaveName}'s tongue piercings have been removed.`;
 				} else {
 					slave.tonguePiercing = rule.tonguePiercing;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s tongue has been pierced.`;
 				}
 			}
@@ -17400,7 +17648,7 @@ window.DefaultRules = (function() {
 					r += `<br>${slave.slaveName}'s ear piercings have been removed.`;
 				} else {
 					slave.earPiercing = rule.earPiercing;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s ears have been pierced.`;
 				}
 			}
@@ -17413,7 +17661,7 @@ window.DefaultRules = (function() {
 					r += `<br>${slave.slaveName}'s nose piercing has been removed.`;
 				} else {
 					slave.nosePiercing = rule.nosePiercing;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s nose has been pierced.`;
 				}
 			}
@@ -17426,7 +17674,7 @@ window.DefaultRules = (function() {
 					r += `<br>${slave.slaveName}'s eyebrow piercings have been removed.`;
 				} else {
 					slave.eyebrowPiercing = rule.eyebrowPiercing;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s eyebrows have been pierced.`;
 				}
 			}
@@ -17439,7 +17687,7 @@ window.DefaultRules = (function() {
 					r += `<br>${slave.slaveName}'s navel piercing have been removed.`;
 				} else {
 					slave.navelPiercing = rule.navelPiercing;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s navel has been pierced.`;
 				}
 			}
@@ -17452,7 +17700,7 @@ window.DefaultRules = (function() {
 					r += `<br>${slave.slaveName}'s corset piercings have been removed.`;
 				} else {
 					slave.corsetPiercing = rule.corsetPiercing;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName} has been given a set of corset piercings.`;
 				}
 			}
@@ -17529,7 +17777,7 @@ window.DefaultRules = (function() {
 		if (rule.boobsTat !== undefined && (rule.boobsTat !== "no default setting")) {
 			if ((slave.boobsTat !== rule.boobsTat)) {
 				slave.boobsTat = rule.boobsTat;
-				V.cash -= V.modCost;
+				cashX(forceNeg(V.modCost), "slaveMod", slave);
 				r += `<br>${slave.slaveName}'s chest has been tattooed.`;
 			}
 		}
@@ -17537,7 +17785,7 @@ window.DefaultRules = (function() {
 		if (rule.buttTat !== undefined && (rule.buttTat !== "no default setting")) {
 			if ((slave.buttTat !== rule.buttTat)) {
 				slave.buttTat = rule.buttTat;
-				V.cash -= V.modCost;
+				cashX(forceNeg(V.modCost), "slaveMod", slave);
 				r += `<br>${slave.slaveName}'s butt has been tattooed.`;
 			}
 		}
@@ -17545,7 +17793,7 @@ window.DefaultRules = (function() {
 		if (rule.vaginaTat !== undefined && (rule.vaginaTat !== "no default setting")) {
 			if ((slave.vaginaTat !== rule.vaginaTat)) {
 				slave.vaginaTat = rule.vaginaTat;
-				V.cash -= V.modCost;
+				cashX(forceNeg(V.modCost), "slaveMod", slave);
 				r += `<br>${slave.slaveName}'s abdomen has been tattooed.`;
 			}
 		}
@@ -17554,7 +17802,7 @@ window.DefaultRules = (function() {
 			if (rule.dickTat !== undefined && (rule.dickTat !== "no default setting")) {
 				if ((slave.dickTat !== rule.dickTat)) {
 					slave.dickTat = rule.dickTat;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s dick has been tattooed.`;
 				}
 			}
@@ -17563,7 +17811,7 @@ window.DefaultRules = (function() {
 		if (rule.lipsTat !== undefined && (rule.lipsTat !== "no default setting")) {
 			if ((slave.lipsTat !== rule.lipsTat)) {
 				slave.lipsTat = rule.lipsTat;
-				V.cash -= V.modCost;
+				cashX(forceNeg(V.modCost), "slaveMod", slave);
 				r += `<br>${slave.slaveName}'s face has been tattooed.`;
 			}
 		}
@@ -17571,7 +17819,7 @@ window.DefaultRules = (function() {
 		if (rule.anusTat !== undefined && (rule.anusTat !== "no default setting")) {
 			if ((slave.anusTat !== rule.anusTat)) {
 				slave.anusTat = rule.anusTat;
-				V.cash -= V.modCost;
+				cashX(forceNeg(V.modCost), "slaveMod", slave);
 				r += `<br>${slave.slaveName}'s asshole has been modded.`;
 			}
 		}
@@ -17579,7 +17827,7 @@ window.DefaultRules = (function() {
 		if (rule.shouldersTat !== undefined && (rule.shouldersTat !== "no default setting")) {
 			if ((slave.shouldersTat !== rule.shouldersTat)) {
 				slave.shouldersTat = rule.shouldersTat;
-				V.cash -= V.modCost;
+				cashX(forceNeg(V.modCost), "slaveMod", slave);
 				r += `<br>${slave.slaveName}'s shoulders have been tattooed.`;
 			}
 		}
@@ -17587,7 +17835,7 @@ window.DefaultRules = (function() {
 		if (rule.armsTat !== undefined && (rule.armsTat !== "no default setting")) {
 			if ((slave.armsTat !== rule.armsTat)) {
 				slave.armsTat = rule.armsTat;
-				V.cash -= V.modCost;
+				cashX(forceNeg(V.modCost), "slaveMod", slave);
 				r += `<br>${slave.slaveName}'s arms have been tattooed.`;
 			}
 		}
@@ -17595,7 +17843,7 @@ window.DefaultRules = (function() {
 		if (rule.legsTat !== undefined && (rule.legsTat !== "no default setting")) {
 			if ((slave.legsTat !== rule.legsTat)) {
 				slave.legsTat = rule.legsTat;
-				V.cash -= V.modCost;
+				cashX(forceNeg(V.modCost), "slaveMod", slave);
 				r += `<br>${slave.slaveName}'s legs have been tattooed.`;
 			}
 		}
@@ -17603,7 +17851,7 @@ window.DefaultRules = (function() {
 		if (rule.stampTat !== undefined && (rule.stampTat !== "no default setting")) {
 			if ((slave.stampTat !== rule.stampTat)) {
 				slave.stampTat = rule.stampTat;
-				V.cash -= V.modCost;
+				cashX(forceNeg(V.modCost), "slaveMod", slave);
 				r += `<br>${slave.slaveName}'s lower back has been tattooed.`;
 			}
 		}
@@ -17661,6 +17909,7 @@ window.DefaultRules = (function() {
 	return DefaultRules;
 })();
 
+
 /*:: Rules Assistant Options [script]*/
 // rewrite of the rules assistant options page in javascript
 // uses an object-oriented widget pattern
@@ -21298,56 +21547,56 @@ window.rulesAutosurgery = (function() {
 		if ((slave.eyes == -1) && (thisSurgery.surgery_eyes == 1)) {
 			surgeries.push("surgery to correct her vision");
 			slave.eyes = 1;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
 		} else if ((slave.eyes == 1) && (thisSurgery.surgery_eyes == -1)) {
 			surgeries.push("surgery to blur her vision");
 			slave.eyes = -1;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
 		} else if ((slave.hears == -1) && (thisSurgery.surgery_hears == 1)) {
 			surgeries.push("surgery to correct her hearing");
 			slave.hears = 0;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
 		} else if ((slave.hears == 0) && (thisSurgery.surgery_hears == -1)) {
 			surgeries.push("surgery to muffle her hearing");
 			slave.hears = -1;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
 		} else if ((slave.lactation == 2) && (thisSurgery.surgery_lactation == 0)) {
 			surgeries.push("surgery to remove her lactation implants");
 			slave.lactation = 0;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
 		} else if (slave.lactation != 2 && (thisSurgery.surgery_lactation == 1)) {
 			surgeries.push("lactation inducing implanted drugs");
 			slave.lactation = 2;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
 		} else if ((slave.prostate == 2) && (thisSurgery.surgery_prostate == 0)) {
 			surgeries.push("surgery to remove her prostate implant");
 			slave.prostate = 0;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
 		} else if (slave.prostate == 1 && (thisSurgery.surgery_prostate == 1)) {
 			surgeries.push("a precum production enhancing drug implant");
 			slave.prostate = 2;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -21356,7 +21605,7 @@ window.rulesAutosurgery = (function() {
 			slave.anus = 3;
 			if (slave.analSkill > 10)
 				slave.analSkill -= 10;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -21365,7 +21614,7 @@ window.rulesAutosurgery = (function() {
 			slave.vagina = 3;
 			if (slave.vaginalSkill > 10)
 				slave.vaginalSkill -= 10;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -21374,7 +21623,7 @@ window.rulesAutosurgery = (function() {
 			if (slave.faceShape == "masculine") slave.faceShape = "androgynous";
 			slave.faceImplant += 25-5*Math.trunc(V.PC.medicine/50)-5*V.surgeryUpgrade;
 			slave.face = Math.clamp(slave.face+20,-100,100);
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -21387,7 +21636,7 @@ window.rulesAutosurgery = (function() {
 			else if (slave.visualAge > 50) slave.visualAge -= 20;
 			else if (slave.visualAge > 36) slave.visualAge -= 10;
 			else slave.visualAge -= 5;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -21395,19 +21644,19 @@ window.rulesAutosurgery = (function() {
 			surgeries.push("body hair removal");
 			if (slave.underArmHStyle != "hairless") slave.underArmHStyle = "bald";
 			if (slave.pubicHStyle != "hairless") slave.pubicHStyle = "bald";
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 
 		} else if ((slave.bald == 0 || slave.hStyle != "bald" || slave.eyebrowHStyle != "bald") && (thisSurgery.surgery_hair == 2)) {
 			surgeries.push("hair removal");
 			slave.eyebrowHStyle = "bald";
 			slave.hStyle = "bald";
 			slave.bald = 1;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 
 		} else if ((slave.weight >= 10) && (thisSurgery.surgery_cosmetic > 0)) {
 			surgeries.push("liposuction");
 			slave.weight -= 50;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -21415,21 +21664,21 @@ window.rulesAutosurgery = (function() {
 			surgeries.push("a feminine voice");
 			slave.voice += 1;
 			slave.voiceImplant += 1;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
 		} else if ((slave.waist >= -10) && (thisSurgery.surgery_cosmetic > 0)) {
 			surgeries.push("a narrower waist");
 			slave.waist -= 20;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
 		} else if (((slave.boobShape == "saggy") || (slave.boobShape == "downward-facing")) && (thisSurgery.surgery_cosmetic > 0) && (slave.breastMesh != 1)) {
 			surgeries.push("a breast lift");
 			slave.boobShape = "normal";
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -21439,7 +21688,7 @@ window.rulesAutosurgery = (function() {
 			else
 				slave.boobShape = "perky";
 			surgeries.push("more interestingly shaped breasts");
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -21449,7 +21698,7 @@ window.rulesAutosurgery = (function() {
 			slave.lipsImplant = 0;
 			if (slave.oralSkill > 10)
 				slave.oralSkill -= 10;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -21460,7 +21709,7 @@ window.rulesAutosurgery = (function() {
 				slave.lips += 10;
 				if (slave.oralSkill > 10)
 					slave.oralSkill -= 10;
-				V.cash -= V.surgeryCost;
+				cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 				if (V.PC.medicine >= 100) slave.health -= 5;
 				else slave.health -= 10;
 			}
@@ -21470,7 +21719,7 @@ window.rulesAutosurgery = (function() {
 			if (slave.faceShape == "masculine") slave.faceShape = "androgynous";
 			slave.faceImplant += 25-5*Math.trunc(V.PC.medicine/50)-5*V.surgeryUpgrade;
 			slave.face = Math.clamp(slave.face+20,-100,100);
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -21478,7 +21727,7 @@ window.rulesAutosurgery = (function() {
 			surgeries.push("wider hips");
 			slave.hips++;
 			slave.hipsImplant++;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -21497,14 +21746,14 @@ window.rulesAutosurgery = (function() {
 				slave.visualAge -= 5;
 			}
 			slave.faceImplant += 25-5*Math.trunc(V.PC.medicine/50)-5*V.surgeryUpgrade;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
 		} else if ((slave.waist >= -95) && (thisSurgery.surgery_cosmetic == 2) && (V.seeExtreme == 1)) {
 			surgeries.push("a narrower waist");
 			slave.waist = Math.clamp(slave.waist-20,-100,100);
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -21512,7 +21761,7 @@ window.rulesAutosurgery = (function() {
 			surgeries.push("a bimbo's voice");
 			slave.voice += 1;
 			slave.voiceImplant += 1;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -21521,7 +21770,7 @@ window.rulesAutosurgery = (function() {
 			slave.butt -= slave.buttImplant;
 			slave.buttImplant = 0;
 			slave.buttImplantType = 0;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -21530,7 +21779,7 @@ window.rulesAutosurgery = (function() {
 			slave.boobs -= slave.boobsImplant;
 			slave.boobsImplant = 0;
 			slave.boobsImplantType = 0;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 		} else if ((slave.butt <= 3) && (slave.butt < thisSurgery.surgery_butt)) {
@@ -21538,7 +21787,7 @@ window.rulesAutosurgery = (function() {
 				surgeries.push("a bigger butt");
 				slave.buttImplant = 1;
 				slave.butt += 1;
-				V.cash -= V.surgeryCost;
+				cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 				if (V.PC.medicine >= 100) slave.health -= 5;
 				else slave.health -= 10;
 			}
@@ -21547,7 +21796,7 @@ window.rulesAutosurgery = (function() {
 				surgeries.push("bigger boobs");
 				slave.boobsImplant += 400;
 				slave.boobs += 400;
-				V.cash -= V.surgeryCost;
+				cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 				if (V.PC.medicine >= 100) slave.health -= 5;
 				else slave.health -= 10;
 			}
@@ -21556,7 +21805,7 @@ window.rulesAutosurgery = (function() {
 				surgeries.push("modestly bigger boobs");
 				slave.boobsImplant += 200;
 				slave.boobs += 200;
-				V.cash -= V.surgeryCost;
+				cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 				if (V.PC.medicine >= 100) slave.health -= 5;
 				else slave.health -= 10;
 			}
@@ -21566,7 +21815,7 @@ window.rulesAutosurgery = (function() {
 				surgeries.push("a bigger butt");
 				slave.buttImplant = 1;
 				slave.butt += 1;
-				V.cash -= V.surgeryCost;
+				cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 				if (V.PC.medicine >= 100) slave.health -= 5;
 				else slave.health -= 10;
 			}
@@ -21576,7 +21825,7 @@ window.rulesAutosurgery = (function() {
 				surgeries.push("bigger boobs");
 				slave.boobsImplant += 400;
 				slave.boobs += 400;
-				V.cash -= V.surgeryCost;
+				cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 				if (V.PC.medicine >= 100) slave.health -= 5;
 				else slave.health -= 10;
 			}
@@ -21587,7 +21836,7 @@ window.rulesAutosurgery = (function() {
 			if (slave.analSkill > 10) {
 				slave.analSkill -= 10;
 			}
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -21596,7 +21845,7 @@ window.rulesAutosurgery = (function() {
 			slave.vagina = 0;
 			if (slave.vaginalSkill > 10)
 				slave.vaginalSkill -= 10;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -21604,7 +21853,7 @@ window.rulesAutosurgery = (function() {
 			surgeries.push("wider hips");
 			slave.hips++;
 			slave.hipsImplant++;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -21614,7 +21863,7 @@ window.rulesAutosurgery = (function() {
 			if (slave.analSkill > 10) {
 				slave.analSkill -= 10;
 			}
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -21624,7 +21873,7 @@ window.rulesAutosurgery = (function() {
 			if (slave.vaginalSkill > 10) {
 				slave.vaginalSkill -= 10;
 			}
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -21633,7 +21882,7 @@ window.rulesAutosurgery = (function() {
 				surgeries.push("a bigger butt");
 				slave.buttImplant = 1;
 				slave.butt += 1;
-				V.cash -= V.surgeryCost;
+				cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 				if (V.PC.medicine >= 100) slave.health -= 5;
 				else slave.health -= 10;
 			}
@@ -21643,7 +21892,7 @@ window.rulesAutosurgery = (function() {
 				surgeries.push("bigger boobs");
 				slave.boobsImplant += 200;
 				slave.boobs += 200;
-				V.cash -= V.surgeryCost;
+				cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 				if (V.PC.medicine >= 100) slave.health -= 5;
 				else slave.health -= 10;
 			}
@@ -21652,14 +21901,14 @@ window.rulesAutosurgery = (function() {
 			surgeries.push("wider hips");
 			slave.hips++;
 			slave.hipsImplant++;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
 		} else if (slave.bellyImplant < 0 && V.bellyImplants > 0 && thisSurgery.surgery_bellyImplant == "install" && slave.womb.length == 0 && slave.broodmother == 0) {
 			slave.bellyImplant = 100;
 			slave.preg = -2;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (slave.ovaries == 1 || slave.mpreg == 1) {
 				surgeries.push("belly implant");
 				V.surgeryType = "bellyIn";
@@ -21683,7 +21932,7 @@ window.rulesAutosurgery = (function() {
 			slave.preg = 0;
 			slave.bellyImplant = -1;
 			slave.cervixImplant = 0;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 		} else if (slave.balls > 0 && slave.vasectomy === 0 && thisSurgery.surgery_vasectomy === true) {
 			surgeries.push("vasectomy");
 			V.surgeryType = "vasectomy";
@@ -21692,7 +21941,7 @@ window.rulesAutosurgery = (function() {
 			else
 				slave.health -= 10;
 			slave.vasectomy = 1;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 		} else if (slave.balls > 0 && slave.vasectomy === 1 && thisSurgery.surgery_vasectomy === false) {
 			surgeries.push("undo vasectomy");
 			V.surgeryType = "vasectomy undo";
@@ -21701,7 +21950,7 @@ window.rulesAutosurgery = (function() {
 			else
 				slave.health -= 10;
 			slave.vasectomy = 0;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 		}
 	}
 
@@ -21729,6 +21978,7 @@ window.rulesAutosurgery = (function() {
 	}
 })();
 
+
 /*:: sexActJS[script]*/
 
 /*
@@ -34346,7 +34596,14 @@ window.BaseSlave = function BaseSlave() {
 		override_Brow_H_Color: 0,
 		missingEyes: 0,
 		missingArms: 0,
-		missingLegs: 0
+		missingLegs: 0,
+		slaveCost: 0,
+		lifetimeCashExpenses: 0,
+		lifetimeCashIncome: 0,
+		lastWeeksCashIncome: 0,
+		lifetimeRepExpenses: 0,
+		lifetimeRepIncome: 0,
+		lastWeeksRepIncome: 0
 	};
 };
 
@@ -36448,7 +36705,8 @@ window.BadOutcome = function() {
 			break;
 		case "Kind":
 			V.SF.BadOutcome = "Exodus",V.trinkets.push("${t} gift card"),
-			V.Cash += 55000,V.menials += 73;
+			V.menials += 73;
+			cashX(55000, "specialForces");
 			r += `Your Colonel has had enough of your meddling. In her eyes, you've broken faith with her. She asked one thing of you in return for her full support, and you could not even give her that.`;
 			r += `<br>At midnight, a great mechanized convoy, the biggest you've seen in a long while, streams out of your Arcology. Troop Carriers, Aircraft, Heavy Trucks, and other war machines of varying sizes pour out of the Firebase in tight formation. The Colonel is refusing your calls, and you know it would be ill advised to go out there yourself or to try to stop them with force. The many bandits and mercenary groups that the convoy will inevitably pass by will probably feel this way as well. You have no idea where they are going or how they will end up, but with their wealth and weaponry, you are not worried.`;
 			r += `<br>Upon your inspection of the abandoned firebase itself, most of the heavier installations have been dismantled and carried away, but about 55,000# of miscellaneous supplies and 73 menials have been left behind, presumably because the convoy had no space for them. On The Colonel's old pavilion, you see a white gift card standing upright.`;
@@ -37784,6 +38042,15 @@ window.slaveMiscellaneousDatatypeCleanup = function slaveMiscellaneousDatatypeCl
 	if (typeof slave.death !== "string") {
 		slave.death = "";
 	}
+	if (slave.slaveCost !== 0) {
+		slave.slaveCost = Math.min(+slave.slaveCost, 1) || 1;
+	}
+	slave.lifetimeCashExpenses = Math.max(+slave.lifetimeCashExpenses, 0) || 0;
+	slave.lifetimeCashIncome = Math.max(+slave.lifetimeCashIncome, 0) || 0;
+	slave.lastWeeksCashIncome = Math.max(+slave.lifetimeCashIncome, 0) || 0;
+	slave.lifetimeRepExpenses = Math.max(+slave.lifetimeCashExpenses, 0) || 0;
+	slave.lifetimeRepIncome = Math.max(+slave.lifetimeCashIncome, 0) || 0;
+	slave.lastWeeksRepIncome = Math.max(+slave.lifetimeCashIncome, 0) || 0;
 };
 
 /* a lot of this may need to be removed */
diff --git a/slave variables documentation - Pregmod.txt b/slave variables documentation - Pregmod.txt
index ccfca1cd6161e4ad2ac68d697162eca6424333ad..56b50dea52bc58941d09974f0efc0021e32cd88f 100644
--- a/slave variables documentation - Pregmod.txt	
+++ b/slave variables documentation - Pregmod.txt	
@@ -2432,6 +2432,7 @@ may accept strings, use at own risk
 "a niqab and abaya"
 "a one-piece swimsuit"
 "a penitent nuns habit"
+"a police uniform"
 "a red army uniform"
 "a scalemail bikini"
 "a schoolgirl outfit"
@@ -2452,16 +2453,16 @@ may accept strings, use at own risk
 "a sweater"
 "a sweater and cutoffs"
 "a sweater and panties"
+"a t-shirt"
+"a t-shirt and jeans"
+"a t-shirt and panties"
+"a t-shirt and thong"
 "a tank-top"
 "a tank-top and panties"
 "a thong"
 "a toga"
 "a tube top"
 "a tube top and thong"
-"a t-shirt"
-"a t-shirt and jeans"
-"a t-shirt and panties"
-"a t-shirt and thong"
 "an apron"
 "an oversized t-shirt"
 "an oversized t-shirt and boyshorts"
@@ -2472,6 +2473,7 @@ may accept strings, use at own risk
 "body oil"
 "boyshorts"
 "chains"
+"choosing her own clothes"
 "clubslut netting"
 "conservative clothing"
 "cutoffs"
diff --git a/src/Mods/DinnerParty/dinnerPartyExecution.tw b/src/Mods/DinnerParty/dinnerPartyExecution.tw
index 82258a88f01887e4e6f6446da41c4dbc493a03f8..b2f68f51368fdfdfa163c547916d50310a2b09a9 100644
--- a/src/Mods/DinnerParty/dinnerPartyExecution.tw
+++ b/src/Mods/DinnerParty/dinnerPartyExecution.tw
@@ -6,7 +6,7 @@
 	<<set $nextButton = "Back to Main", $nextLink = "Main", $returnTo = "Main", $showEncyclopedia = 1, $encyclopedia = "Personal Assistant">>
 
 	<<set _generateEnemies to 0>>
-	<<set $cash -= 1000>>
+	<<run cashX(-1000, "event")>>
 	<<set _dinnerRating = 0>>
 
 	/* 000-250-006 */
@@ -260,7 +260,7 @@
 			As you and your guests enjoy your tartare, suddenly you hear a loud crunch coming from the guest sitting right next to you. You see blood spewing from his mouth as he spits out his chipped tooth along with a lactation implant. You apologize profusely and pay the man ¤10000 as compensation. The rest of your guests are @@.red;not happy@@ that you serve them drugged meat.
 			<<set _dishRating = 0>>
 			<<set $rep -= 1000>>
-			<<set $cash -= 10000>>
+			<<run cashX(-10000, "event")>>
 		<<elseif $activeSlave.lactation > 0 >>
 			You detect a hint of creamy taste to your tartare. The clearly lactating breast earns the dish an extra star.
 			<<set _dishRating += 1>>
diff --git a/src/SecExp/attackReport.tw b/src/SecExp/attackReport.tw
index 3049493a906f4c24ab7fdd1c010ac1f712fbff0b..ab705ece147ffe147931b980d767b699dad92caa 100644
--- a/src/SecExp/attackReport.tw
+++ b/src/SecExp/attackReport.tw
@@ -433,7 +433,7 @@
 		<<set _captives = Math.trunc(_captives * 0.6)>>
 		<<set _loot = Math.trunc(_loot * 0.6)>>
 	<</if>>
-	<<set $cash += _loot>>
+	<<run cashX(_loot, "war")>>
 	<br>
 	Damage to the infrastructure was @@.yellow;virtually non-existent,@@ costing only pocket cash to bring the structure back to normal. The inhabitants as well reported little to no injuries, because of this the prosperity of the arcology did not suffer.
 	<<set $cash -= 1000 * _majorBattleMod, $PC.engineering += .1>>
@@ -540,7 +540,7 @@
 		Part of the loot is distributed to your mercenaries.
 		<<set _loot = Math.trunc(_loot * 0.6)>>
 	<</if>>
-	<<set $cash += _loot>>
+	<<run cashX(_loot, "war")>>
 	<br>
 	Damage to the city was @@.red;limited,@@ it won't take much to rebuild. Very few citizens or slaves were involved in the fight and even fewer met their end, safeguarding the prosperity of the arcology.
 	<<set $cash -= 2000 * _majorBattleMod, $PC.engineering += .1>>
@@ -742,7 +742,7 @@
 	<<elseif $attackType == "old world">>
 		<<set $rep += 150 * _majorBattleMod>>
 	<</if>>
-	<<set $cash -= $bribeCost>>
+	<<run cashX(forceNeg($bribeCost), "war")>>
 <</if>>
 <<if !isInt($lowerClass)>>
 	<<if isNaN($lowerClass)>>
@@ -1561,7 +1561,7 @@
 	<br>
 	<span id="captOptions">
 	<<link "sell them all immediately">>
-		<<set $cash += _menialPrice * _captives>>
+		<<run cashX((_menialPrice * _captives), "menialTradesTransfer")>>
 		<<replace "#captOptions">>Captives sold<</replace>>
 	<</link>>
 	|
diff --git a/src/SecExp/secExpSmilingMan.tw b/src/SecExp/secExpSmilingMan.tw
index c87fce96c6ebae22c162a5bb1bdb3b86c45525be..04fb56cea2c5dc935777c00182d52fa4e265318a 100644
--- a/src/SecExp/secExpSmilingMan.tw
+++ b/src/SecExp/secExpSmilingMan.tw
@@ -21,7 +21,7 @@
 	<br>
 	<<if $cash >= 10000>>
 		<<link "Devote funds to the search for this dangerous criminal">>
-			<<set $cash -= 10000>>
+			<<run cashX(-10000, "event")>>
 			<<set $investedFunds = 1>>
 			<<set $relationshipLM += 1>>
 			<<set $smilingManProgress += 1>>
@@ -31,7 +31,7 @@
 		<</link>>
 		<br>
 		<<link "Attempt to contact the mysterious figure">>
-			<<set $cash -= 10000>>
+			<<run cashX(-10000, "event")>>
 			<<set $investedFunds = 1>>
 			<<set $relationshipLM += 2>>
 			<<set $smilingManProgress += 1>>
@@ -41,7 +41,7 @@
 		<</link>>
 		<br>
 		<<link "Invest funds to increase the cyber-security of the arcology">>
-			<<set $cash -= 10000>>
+			<<run cashX(-10000, "event")>>
 			<<set $investedFunds = 1>>
 			<<set $relationshipLM += random(5,10)>>
 			<<set $smilingManProgress += 1>>
@@ -92,7 +92,7 @@
 		<<set _lostCash -= 20000>>
 		The funding you dedicated to the Smiling Man case saved some of the assets that would have been otherwise lost.
 	<</if>>
-	<<set $cash -= _lostCash>>
+	<<run cashX(_lostCash, "event")>>
 	<br>
 	<br>
 	<span id="result">
diff --git a/src/SecExp/securityReport.tw b/src/SecExp/securityReport.tw
index 0c1f5154dcc79424e200c000190b49ff598c028b..7b4c7e2c639d3151cf706ef434b53d1f23cc366f 100644
--- a/src/SecExp/securityReport.tw
+++ b/src/SecExp/securityReport.tw
@@ -332,7 +332,7 @@
 		<<if $militaryExemption == 1>>
 			Some citizens prefer to contribute to the arcology's defense through financial support rather than military service, making you @@.yellowgreen;a small sum@@.
 			<<set _recruits -= random(1,2)>>
-			<<set $cash += 250>>
+			<<run cashX(250, "securityExpansion")>>
 		<</if>>
 		<<if $lowerRquirements == 1>>
 			Your lax physical requirements to enter the militia allows for a greater number of citizens to join.
@@ -359,7 +359,7 @@
 		<<if $militaryExemption == 1>>
 			Some citizens prefer to contribute to the arcology's defense through financial support rather than military service, making you @@.yellowgreen;a small sum@@.
 			<<set _recruits -= random(1,2)>>
-			<<set $cash += 250>>
+			<<run cashX(250, "securityExpansion")>>
 		<</if>>
 		<<if $lowerRquirements == 1>>
 			Your lax physical requirements to enter the militia allows for a greater number of citizens to join.
@@ -386,7 +386,7 @@
 		<<if $militaryExemption == 1>>
 			Some citizens prefer to contribute to the arcology's defense through financial support rather than military service, making you @@.yellowgreen;a small sum@@.
 			<<set _recruits -= random(1,2)>>
-			<<set $cash += 250>>
+			<<run cashX(250, "securityExpansion")>>
 		<</if>>
 		<<if $lowerRquirements == 1>>
 			Your lax physical requirements to enter the militia allows for a greater number of citizens to join.
diff --git a/src/SecExp/seeUnit.tw b/src/SecExp/seeUnit.tw
index 87ad9e17b3123ee9a23dd85b3f6731aafb1584c7..53aa62a667727882e46985a7107d98558192f641 100644
--- a/src/SecExp/seeUnit.tw
+++ b/src/SecExp/seeUnit.tw
@@ -108,7 +108,7 @@
 		<br>
 		<<link "Attach commissars to the unit" "seeUnit">>
 			<<set $militiaUnits[$targetIndex].commissars = 1>>
-			<<set $cash -= $equipUpgradeCost * $militiaUnits[$targetIndex].maxTroops + 1000>>
+			<<run cashX(forceNeg($equipUpgradeCost * $militiaUnits[$targetIndex].maxTroops + 1000), "specialForces")>>
 		<</link>>
 		Attach a small squad of commissars to the unit.
 		<br>//Costs <<print cashFormat(($equipUpgradeCost * $militiaUnits[$targetIndex].maxTroops) + 1000)>> and will slowly increase the loyalty of the unit.//
@@ -116,7 +116,7 @@
 		<br>
 		<<link "Intensive loyalty training" "seeUnit">>
 			<<set $militiaUnits[$targetIndex].commissars += 1>>
-			<<set $cash -= $equipUpgradeCost * $militiaUnits[$targetIndex].maxTroops + 1000>>
+			<<run cashX(forceNeg($equipUpgradeCost * $militiaUnits[$targetIndex].maxTroops + 1000), "specialForces")>>
 		<</link>>
 		Provide special training for the officers and the commissars of the unit.
 		<br>//Costs <<print cashFormat(($equipUpgradeCost * $militiaUnits[$targetIndex].maxTroops) + 1000)>> and will increase the loyalty of the unit faster.//
@@ -130,7 +130,7 @@
 			<br>
 			<<link "Provide enhanced cybernetic enhancements" "seeUnit">>
 				<<set $militiaUnits[$targetIndex].cyber += 1>>
-				<<set $cash -= $equipUpgradeCost * $militiaUnits[$targetIndex].maxTroops + 2000>>
+				<<run cashX(forceNeg($equipUpgradeCost * $militiaUnits[$targetIndex].maxTroops + 2000), "specialForces")>>
 			<</link>>
 			Will augment all soldiers of the unit with high tech cyber enhancements.
 			<br>//Costs <<print cashFormat(($equipUpgradeCost * $militiaUnits[$targetIndex].maxTroops) + 2000)>> and will increase attack, defense and base hp values of the unit.//
@@ -142,7 +142,7 @@
 		<br>
 		<<link "Attach trained medics to the unit" "seeUnit">>
 			<<set $militiaUnits[$targetIndex].medics = 1>>
-			<<set $cash -= $equipUpgradeCost * $militiaUnits[$targetIndex].maxTroops + 1000>>
+			<<run cashX(forceNeg($equipUpgradeCost * $militiaUnits[$targetIndex].maxTroops + 1000), "specialForces")>>
 		<</link>>
 		Attach a small squad of trained medics to the unit.
 		<br>//Costs <<print cashFormat(($equipUpgradeCost * $militiaUnits[$targetIndex].maxTroops) + 1000)>> and will decrease the number of casualties suffered during battle.//
@@ -259,7 +259,7 @@
 		<br>
 		<<link "Attach commissars to the unit" "seeUnit">>
 			<<set $slaveUnits[$targetIndex].commissars = 1>>
-			<<set $cash -= $equipUpgradeCost * $slaveUnits[$targetIndex].maxTroops + 1000>>
+			<<run cashX(forceNeg($equipUpgradeCost * $slaveUnits[$targetIndex].maxTroops + 1000), "specialForces")>>
 		<</link>>
 		Attach a small squad of commissars to the unit.
 		<br>//Costs <<print cashFormat(($equipUpgradeCost * $slaveUnits[$targetIndex].maxTroops) + 1000)>> and will slowly increase the loyalty of the unit.//
@@ -267,7 +267,7 @@
 		<br>
 		<<link "Intensive loyalty training" "seeUnit">>
 			<<set $slaveUnits[$targetIndex].commissars += 1>>
-			<<set $cash -= $equipUpgradeCost * $slaveUnits[$targetIndex].maxTroops + 1000>>
+			<<run cashX(forceNeg($equipUpgradeCost * $slaveUnits[$targetIndex].maxTroops + 1000), "specialForces")>>
 		<</link>>
 		Provide special training for the officers and the commissars of the unit.
 		<br>//Costs <<print cashFormat(($equipUpgradeCost * $slaveUnits[$targetIndex].maxTroops) + 1000)>> and will increase the loyalty of the unit faster.//
@@ -281,7 +281,7 @@
 			<br>
 			<<link "Provide enhanced cybernetic enhancements" "seeUnit">>
 				<<set $slaveUnits[$targetIndex].cyber += 1>>
-				<<set $cash -= $equipUpgradeCost * $slaveUnits[$targetIndex].maxTroops + 2000>>
+				<<run cashX(forceNeg($equipUpgradeCost * $slaveUnits[$targetIndex].maxTroops + 2000), "specialForces")>>
 			<</link>>
 			Will augment all soldiers of the unit with high tech cyber enhancements.
 			<br>//Costs <<print cashFormat(($equipUpgradeCost * $slaveUnits[$targetIndex].maxTroops) + 2000)>> and will increase attack, defense and base hp values of the unit.//
@@ -293,7 +293,7 @@
 		<br>
 		<<link "Attach trained medics to the unit" "seeUnit">>
 			<<set $slaveUnits[$targetIndex].medics = 1>>
-			<<set $cash -= $equipUpgradeCost * $slaveUnits[$targetIndex].maxTroops + 1000>>
+			<<run cashX(forceNeg($equipUpgradeCost * $slaveUnits[$targetIndex].maxTroops + 1000), "specialForces")>>
 		<</link>>
 		Attach a small squad of trained medics to the unit.
 		<br>//Costs <<print cashFormat(($equipUpgradeCost * $slaveUnits[$targetIndex].maxTroops) + 1000)>> and will decrease the number of casualties suffered during battle.//
@@ -305,7 +305,7 @@
 			<br>
 			<<link "Attach Special Force advisors" "seeUnit">>
 				<<set $slaveUnits[$targetIndex].SF = 1>>
-				<<set $cash -= ($equipUpgradeCost * $slaveUnits[$targetIndex].maxTroops) + 5000>>
+				<<run cashX(forceNeg(($equipUpgradeCost * $slaveUnits[$targetIndex].maxTroops) + 5000), "specialForces")>>
 			<</link>>
 			Attach $SF.Lower advisors to the unit.
 			<br>//Costs <<print cashFormat(($equipUpgradeCost * $slaveUnits[$targetIndex].maxTroops) + 5000)>> and will slightly increase the base stats of the unit.//
@@ -408,7 +408,7 @@
 		<br>
 		<<link "Attach commissars to the unit" "seeUnit">>
 			<<set $mercUnits[$targetIndex].commissars = 1>>
-			<<set $cash -= $equipUpgradeCost * $mercUnits[$targetIndex].maxTroops + 1000>>
+			<<run cashX(forceNeg($equipUpgradeCost * $mercUnits[$targetIndex].maxTroops + 1000), "specialForces")>>
 		<</link>>
 		Attach a small squad of commissars to the unit.
 		<br>//Costs <<print cashFormat(($equipUpgradeCost * $mercUnits[$targetIndex].maxTroops) + 1000)>> and will slowly increase the loyalty of the unit.//
@@ -416,7 +416,7 @@
 		<br>
 		<<link "Intensive loyalty training" "seeUnit">>
 			<<set $mercUnits[$targetIndex].commissars += 1>>
-			<<set $cash -= $equipUpgradeCost * $mercUnits[$targetIndex].maxTroops + 1000>>
+			<<run cashX(forceNeg($equipUpgradeCost * $mercUnits[$targetIndex].maxTroops + 1000), "specialForces")>>
 		<</link>>
 		Provide special training for the officers and the commissars of the unit.
 		<br>//Costs <<print cashFormat(($equipUpgradeCost * $mercUnits[$targetIndex].maxTroops) + 1000)>> and will increase the loyalty of the unit faster.//
@@ -430,7 +430,7 @@
 			<br>
 			<<link "Provide enhanced cybernetic enhancements" "seeUnit">>
 				<<set $mercUnits[$targetIndex].cyber += 1>>
-				<<set $cash -= $equipUpgradeCost * $mercUnits[$targetIndex].maxTroops + 2000>>
+				<<run cashX(forceNeg($equipUpgradeCost * $mercUnits[$targetIndex].maxTroops + 2000), "specialForces")>>
 			<</link>>Will augment all soldiers of the unit with high tech cyber enhancements.
 			<br>//Costs <<print cashFormat(($equipUpgradeCost * $mercUnits[$targetIndex].maxTroops) + 2000)>> and will increase attack, defense and base hp values of the unit.//
 		<<else>>
diff --git a/src/SpecialForce/JS.js b/src/SpecialForce/JS.js
index 9244a85ee71a943527b3b52fedee4b531f6f985a..b9eb9e808099aa26687926267663516bc0fbc258 100644
--- a/src/SpecialForce/JS.js
+++ b/src/SpecialForce/JS.js
@@ -696,7 +696,8 @@ window.BadOutcome = function() {
 			break;
 		case "Kind":
 			V.SF.BadOutcome = "Exodus",V.trinkets.push("${t} gift card"),
-			V.Cash += 55000,V.menials += 73;
+			V.menials += 73;
+			cashX(55000, "specialForces");
 			r += `Your Colonel has had enough of your meddling. In her eyes, you've broken faith with her. She asked one thing of you in return for her full support, and you could not even give her that.`;
 			r += `<br>At midnight, a great mechanized convoy, the biggest you've seen in a long while, streams out of your Arcology. Troop Carriers, Aircraft, Heavy Trucks, and other war machines of varying sizes pour out of the Firebase in tight formation. The Colonel is refusing your calls, and you know it would be ill advised to go out there yourself or to try to stop them with force. The many bandits and mercenary groups that the convoy will inevitably pass by will probably feel this way as well. You have no idea where they are going or how they will end up, but with their wealth and weaponry, you are not worried.`;
 			r += `<br>Upon your inspection of the abandoned firebase itself, most of the heavier installations have been dismantled and carried away, but about 55,000# of miscellaneous supplies and 73 menials have been left behind, presumably because the convoy had no space for them. On The Colonel's old pavilion, you see a white gift card standing upright.`;
diff --git a/src/SpecialForce/Proposal.tw b/src/SpecialForce/Proposal.tw
index 307368db34bce27694e31fb164e239aea5c27109..35c38483455d42639730f63c98215b0866aba7db 100644
--- a/src/SpecialForce/Proposal.tw
+++ b/src/SpecialForce/Proposal.tw
@@ -14,7 +14,7 @@ The Free Cities were founded on the principles of unrestrained anarcho-capitalis
 <<elseif $PC.warfare >= 50||$PC.career === "arcology owner">>
 <<set _price = _price*.75>> <</if>>
 <br><<link "Prepare for an announcement.""Security Force Naming-Colonel">> <<replace "#result">>
-	<<= SFInit()>> <<set $cash -= _price,$SF.Active += 2>>
+	<<= SFInit()>> <<set $SF.Active += 2>><<run cashX(forceNeg(_price), "specialForces")>>
 <</replace>> <</link>><br>//Initial costs are @@.yellowgreen;<<print cashFormat(_price)>>@@ and upon establishment the force will have significant support costs until it is self-sufficient.//
 
 <br><<link "The current measures are enough.""RIE Eligibility Check">> <<replace "#result">> <<run Object.assign(, $SF, {Active:0})>> <</replace>> <</link>> </span>
\ No newline at end of file
diff --git a/src/SpecialForce/Report.tw b/src/SpecialForce/Report.tw
index 09269e573cb30f1422de24a95054b855d8978664..c19f2835d46df29bc4af0ebaa32e1fc012dbc39f 100644
--- a/src/SpecialForce/Report.tw
+++ b/src/SpecialForce/Report.tw
@@ -122,7 +122,8 @@
 	<<if $arcologies[0].prosperity > $AProsperityCap>>
 		<<set $arcologies[0].prosperity = $AProsperityCap>> <</if>>
 	<<if _SFIncome >= _target>>
-		<<set _Profitable = 1,$SF.Subsidy = 0,$cash += _SFIncome>>
+		<<set _Profitable = 1,$SF.Subsidy = 0>>
+		<<run cashX(_SFIncome, "specialForces")>>
 	<<else>> <<set _Profitable = 0>> <</if>>
 
 	<<if $SF.Squad.Drugs >= 8 || $SF.Squad.Drugs >= 10>> <<set _Deaths = 0,_SurvivalChance = 50>>
@@ -193,7 +194,8 @@ $SF.Caps managed to recruit <<print Math.round(_FNGs/2)>> new soldiers this week
 	During a break, The Colonel managed to sell some generic schematics to the _TradeShowAttendes attendees, some decided to also give her some menial slaves as a bonus.<br>
 	<<set $menials += _MenialSlaves>>
 	<<set $SF.MercCon.Menials += _MenialSlaves,$SF.MercCon.TotalMenials += _MenialSlaves>>
-	<<set $cash += _TSProfit,$SF.MercCon.Income += _TSProfit>>
+	<<set $SF.MercCon.Income += _TSProfit>>
+	<<run cashX(_TSProfit, "specialForces")>>
 	<<set $SF.MercCon.Revenue += _TSProfit>>
 	<<if $secExp > 0 && $mercenaries > 0>> <<set $SF.MercCon.Mercs = 0>>
 		<<set _NewMercs = random(1,(_TradeShowAttendes/10))>>
diff --git a/src/SpecialForce/TrickShotNight.tw b/src/SpecialForce/TrickShotNight.tw
index d790ed021210b366a7d91bc3fa2b8bacbeddfc6f..44f85264a25f2e52ff397005fae90eda0ca6c4ce 100644
--- a/src/SpecialForce/TrickShotNight.tw
+++ b/src/SpecialForce/TrickShotNight.tw
@@ -30,10 +30,12 @@ Despite your direct elevator, interaction with the majority of your security for
 		<<replace "#bountyresult">>
 			<<if random(1,100) > 50>>
 				Despite your attempts to mitigate risk and play the safest shots possible, it seems lady luck has conspired against you this evening. However, even when your last bullet is shot, your security force pitch you a few bullets to keep you in the game for the rest of the night. You may have lost most of your ¤, but it seems you've @@.green;made some friends.@@
-				<<set $rep += 1000, $cash -= 250000>>
+				<<set $rep += 1000>>
+				<<run cashX(-250000, "event")>>
 			<<else>>
 				While a careful eye for accuracy has buoyed you through the evening, ultimately lady luck is the decider in handing you the win in a number of close shots. Unfortunately your meticulous play limited your chance at a larger payout, and you only come away from the evening with @@.yellowgreen;<<print cashFormat(100000)>>@@ more than you arrived with and @@.green;the respect of your security force.@@
-				<<set $rep += 1000, $cash += 100000>>
+				<<set $rep += 1000>>
+				<<run cashX(100000, "event")>>
 			<</if>>
 		<</replace>>
 	<</link>>
@@ -92,10 +94,12 @@ Despite your direct elevator, interaction with the majority of your security for
 					<<replace "#aliveresult">>
 						<<if random(1,100) > 50>>
 							For all your skillful maneuvering to reach this position, ultimately the win comes down to chance. This time, however, luck was not on your side. As the victor sweeps up $his spoils, the other security force members clap you on the back and offer their condolences for your defeat. Though you may have lost your ¤, it seems you've @@.green;made some friends.@@
-							<<set $rep += 1000, $cash -= 500000>>
+							<<set $rep += 1000>>
+							<<run cashX(-500000, "event")>>
 						<<else>>
 							For all your skillful maneuvering to reach this position, ultimately the win comes down to chance. This time, however, luck has rendered you the victor. Your opponent accepts $his defeat with grace and jokes to $his comrades that $he'll be fighting in $his underwear for the next few months, and their uproar of laughter fills the room. Though you take the lion's share of the ¤, your security force also @@.green;had a good time fraternizing with you.@@
-							<<set $rep += 2000, $cash += 500000>>
+							<<set $rep += 2000>>
+							<<run cashX(500000, "event")>>
 						<</if>>
 					<</replace>>
 				<</link>>
diff --git a/src/SpecialForce/WeeklyChoices.tw b/src/SpecialForce/WeeklyChoices.tw
index fa36c3c61813b68ec99cff074362619820d78661..0ae30248eb5e0a1c98e7a5c08489c45aacc50b93 100644
--- a/src/SpecialForce/WeeklyChoices.tw
+++ b/src/SpecialForce/WeeklyChoices.tw
@@ -5,7 +5,8 @@
 	<br>We've had some good prizes turn up, that's made us some extra money we could turn over. | <<link "Request cash""Firebase">>
 	/*<<set $CashGift = ((Math.ceil((Math.abs($cash)*0.05)*(Math.max(0.99,$SF.Size))))*($arcologies[0].prosperity/100))*_Env>> OLD*/
 	<<set $CashGift = Math.ceil(25000*($SF.Size/10)*_Env),$SF.Gift = 1,$choice = 1>>
-	<<set $CashGift = ($CashGift > 5000 ? $CashGift : 5000),$cash += $CashGift>>
+	<<set $CashGift = ($CashGift > 5000 ? $CashGift : 5000)>>
+	<<run cashX($CashGift, "specialForces")>>
 	<</link>>
 	<<if $rep < 20000>>
 		<br>If you want we could throw a quick military parade, get the people feeling extra patriotic. | <<link "Request military parade""Firebase">>
@@ -25,7 +26,9 @@
 	<br>He looks down a list on his tablet. "<<= properTitle()>>, how can $SF.Lower help you this week?
 	<br>$SF.Caps can spare some profits from our recent operations. | <<link "Request cash""Firebase">>
 	<<set $CashGift = 25000*($SF.Size/10)*_Env,$SF.Gift = 1,$choice = 1>>
-	<<set $CashGift = ($CashGift > 5000 ? $CashGift : 5000),$cash += Math.ceil($CashGift * 0.8)>>
+	<<set $CashGift = ($CashGift > 5000 ? $CashGift : 5000)>>
+	<<run cashX(Math.ceil($CashGift * 0.8), "specialForces")>>
+
 	<</link>>
 	<<if $rep < 20000>>
 		<br>We can set some units aside for a ceremonial march through the arcology. | <<link "Request a parade""Firebase">>
@@ -51,10 +54,12 @@
 			<br><br>You ask the Colonel if she would like to stretch her legs up on the surface. It doesn't take much effort for her to agree.
 			<<if $PC.warfare >= 100 && $PC.career == "mercenary">>
 				Your mastery of wet work and prior experience in a PMC satisfies the Colonel that between you<<if $Bodyguard != 0>>, $Bodyguard.slaveName,<</if>> and her, there should be little threat to walking around the arcology. Being able to see and interact with the arcology owner directly maintains the false idea that you're just like one of them while also giving them an increased opportunity to try gaining your favor.
-				<<set $rep += 10, $cash += _EnvCash2>>
+				<<set $rep += 10>>
+				<<run cashX(_EnvCash2, "specialForces")>>
 			<<elseif $PC.warfare >= 100>>
 				Your mastery of wet work satisfies the Colonel that you only need two soldiers <<if $Bodyguard != 0>> plus $Bodyguard.slaveName<</if>> to walk safely around the arcology. Being able to see and interact with the arcology owner directly maintains the false idea that you're just like one of them while also giving them an increased opportunity to try gaining your favor.
-				<<set $rep += 5, $cash += _EnvCash3>>
+				<<set $rep += 5>>
+				<<run cashX(_EnvCash3, "specialForces")>>
 			<<elseif $PC.warfare >= 60>>
 				With some expertise in warfare, the Colonel believes <<if $Bodyguard != 0>>with $Bodyguard.slaveName <</if>>you only need a squad of armed soldiers for a walk through the arcology.
 			<<elseif $PC.warfare >= 30>>
@@ -90,7 +95,8 @@
 			<<if random(1,100) > 50>>Along the route you see a homeless citizen with a serious injury begging for help.
 				<<if $PC.medicine >= 100 && $PC.career == "medicine">>
 					Your expertise in surgery ensures that the citizen receives the best care they'll ever experience in their life. They are so grateful that they are more than happy to try and compensate your time. Word quickly spreads of the kindly medically trained arcology owner who took the time to heal a citizen, providing confidence to the rest of the citizens.
-					<<set $rep += 10, $cash += _EnvCash4>>
+					<<set $rep += 10>>
+					<<run cashX(_EnvCash4, "specialForces")>>
 				<<elseif $PC.medicine >= 100>>
 					Your expertise in surgery ensures that the citizen receives the best care they'll ever experience in their life. Word quickly spreads of the kindly arcology owner who took the time to heal a citizen.
 					<<set $rep += 5>>
diff --git a/src/art/artJS.tw b/src/art/artJS.tw
index b9471f1a25d250a15000b696a26bdd68b198e524..1eec13df17c07cc000d90e2b8e08ab8d45e60ada 100644
--- a/src/art/artJS.tw
+++ b/src/art/artJS.tw
@@ -1766,8 +1766,10 @@ window.ArtVectorArm = function(slave) {
 	if (slave.amp === 1) {
 		T.leftArmType = "None";
 		T.rightArmType = "None";
+		/* these files exist, but draw nothing. Commenting out for now to reduce on rendering time
 		r += jsInclude("Art_Vector_Arm_Right_None");
 		r += jsInclude("Art_Vector_Arm_Left_None");
+		*/
 	} else { /* is not amputee or has limbs equipped so running arm calculation block */
 		if (slave.devotion > 50) {
 			T.leftArmType = "High";
@@ -1826,7 +1828,6 @@ window.ArtVectorArm = function(slave) {
 			}
 		}
 	}
-
 	/* shiny clothing */
 	if (State.variables.seeVectorArtHighlights === 1) {
 		if (slave.fuckdoll !== 0 || slave.clothes === "restrictive latex" || slave.clothes === "a latex catsuit" || slave.clothes === "body oil") {
@@ -1839,74 +1840,77 @@ window.ArtVectorArm = function(slave) {
 				r += jsInclude("Art_Vector_Arm_Outfit_Shine_Left_Low");
 		}
 	}
-
-	/* TODO: simplify selection (select prefix, infix and suffix and combine instead of using switch statements) */
-	switch (slave.clothes) {
-		case "a biyelgee costume":
-		case "a burkini":
-		case "a button-up shirt":
-		case "a button-up shirt and panties":
-		case "a cheerleader outfit":
-		case "a dirndl":
-		case "a gothic lolita dress":
-		case "a hanbok":
-		case "a hijab and abaya":
-		case "a hijab and blouse":
-		case "a huipil":
-		case "a kimono":
-		case "a klan robe":
-		case "a long qipao":
-		case "a military uniform":
-		case "a mounty outfit":
-		case "a nice maid outfit":
-		case "a nice nurse outfit":
-		case "a police uniform":
-		case "a red army uniform":
-		case "a schoolgirl outfit":
-		case "a schutzstaffel uniform":
-		case "a slutty klan robe":
-		case "a slutty nurse outfit":
-		case "a slutty qipao":
-		case "a sweater":
-		case "a sweater and cutoffs":
-		case "a sweater and panties":
-		case "a t-shirt":
-		case "a t-shirt and jeans":
-		case "a t-shirt and panties":
-		case "a t-shirt and thong":
-		case "an oversized t-shirt":
-		case "an oversized t-shirt and boyshorts":
-		case "battlearmor":
-		case "battledress":
-		case "clubslut netting":
-		case "conservative clothing":
-		case "cutoffs and a t-shirt":
-		case "lederhosen":
-		case "nice business attire":
-		case "slutty business attire":
-		case "slutty jewelry":
-		case "sport shorts and a t-shirt":
-		case "Western clothing":
-			r += jsInclude(`Art_Vector_Arm_Outfit_${clothing2artSuffix(slave.clothes)}_Right_${T.rightArmType}`);
-			r += jsInclude(`Art_Vector_Arm_Outfit_${clothing2artSuffix(slave.clothes)}_Left_${T.leftArmType}`);
-			break;
-		case "a slutty schutzstaffel uniform":
-			r += jsInclude(`Art_Vector_Arm_Outfit_SchutzstaffelUniform_Right_${T.rightArmType}`);
-			r += jsInclude(`Art_Vector_Arm_Outfit_SchutzstaffelUniform_Left_${T.leftArmType}`);
-			break;
-		case "a niqab and abaya":
-		case "a burqa":
-			r += jsInclude(`Art_Vector_Arm_Outfit_HijabAndAbaya_Right_${T.rightArmType}`);
-			r += jsInclude(`Art_Vector_Arm_Outfit_HijabAndAbaya_Left_${T.leftArmType}`);
-			break;
-		case "a slave gown":
-			/* only some arm positions have art (feel free to add more) */
-			if (T.leftArmType === "High")
-				r += jsInclude("Art_Vector_Arm_Outfit_SlaveGown_Left_High");
-			else if (T.leftArmType === "Mid")
-				r += jsInclude("Art_Vector_Arm_Outfit_SlaveGown_Left_Mid");
-			else if (T.leftArmType === "Low")
-				r += jsInclude("Art_Vector_Arm_Outfit_SlaveGown_Left_Low");
+	/* Amputee clothing art files exist, but draw nothing. Exclude them for now to reduce on rendering time */
+	if (T.leftArmType !== "None" || T.rightArmType !== "None") {
+		/* TODO: simplify selection (select prefix, infix and suffix and combine instead of using switch statements) */
+		switch (slave.clothes) {
+			case "a biyelgee costume":
+			case "a burkini":
+			case "a button-up shirt":
+			case "a button-up shirt and panties":
+			case "a cheerleader outfit":
+			case "a dirndl":
+			case "a gothic lolita dress":
+			case "a hanbok":
+			case "a hijab and abaya":
+			case "a hijab and blouse":
+			case "a huipil":
+			case "a kimono":
+			case "a klan robe":
+			case "a long qipao":
+			case "a military uniform":
+			case "a mounty outfit":
+			case "a nice maid outfit":
+			case "a nice nurse outfit":
+			case "a police uniform":
+			case "a red army uniform":
+			case "a schoolgirl outfit":
+			case "a schutzstaffel uniform":
+			case "a slutty klan robe":
+			case "a slutty nurse outfit":
+			case "a slutty qipao":
+			case "a sweater":
+			case "a sweater and cutoffs":
+			case "a sweater and panties":
+			case "a t-shirt":
+			case "a t-shirt and jeans":
+			case "a t-shirt and panties":
+			case "a t-shirt and thong":
+			case "an oversized t-shirt":
+			case "an oversized t-shirt and boyshorts":
+			case "battlearmor":
+			case "battledress":
+			case "clubslut netting":
+			case "conservative clothing":
+			case "cutoffs and a t-shirt":
+			case "lederhosen":
+			case "nice business attire":
+			case "slutty business attire":
+			case "slutty jewelry":
+			case "sport shorts and a t-shirt":
+			case "Western clothing":
+				r += jsInclude(`Art_Vector_Arm_Outfit_${clothing2artSuffix(slave.clothes)}_Right_${T.rightArmType}`);
+				r += jsInclude(`Art_Vector_Arm_Outfit_${clothing2artSuffix(slave.clothes)}_Left_${T.leftArmType}`);
+				break;
+			/* manually handle special cases */
+			case "a slutty schutzstaffel uniform":
+				r += jsInclude(`Art_Vector_Arm_Outfit_SchutzstaffelUniform_Right_${T.rightArmType}`);
+				r += jsInclude(`Art_Vector_Arm_Outfit_SchutzstaffelUniform_Left_${T.leftArmType}`);
+				break;
+			case "a niqab and abaya":
+			case "a burqa":
+				r += jsInclude(`Art_Vector_Arm_Outfit_HijabAndAbaya_Right_${T.rightArmType}`);
+				r += jsInclude(`Art_Vector_Arm_Outfit_HijabAndAbaya_Left_${T.leftArmType}`);
+				break;
+			case "a slave gown":
+				/* only some arm positions have art (feel free to add more) */
+				if (T.leftArmType === "High")
+					r += jsInclude("Art_Vector_Arm_Outfit_SlaveGown_Left_High");
+				else if (T.leftArmType === "Mid")
+					r += jsInclude("Art_Vector_Arm_Outfit_SlaveGown_Left_Mid");
+				else if (T.leftArmType === "Low")
+					r += jsInclude("Art_Vector_Arm_Outfit_SlaveGown_Left_Low");
+		}
 	}
 	return r;
 };
@@ -2016,13 +2020,16 @@ window.ArtVectorBelly = function(slave) {
 			case "striped underwear":
 			case "uncomfortable straps":
 				break; /* do nothing for these choices */
+			/* manually handle special cases */
+			case "a slutty schutzstaffel uniform":
+				r += jsInclude("Art_Vector_Belly_Outfit_SchutzstaffelUniform");
+				break;
+			case "a niqab and abaya":
+			case "a burqa":
+				r += jsInclude("Art_Vector_Belly_Outfit_HijabAndAbaya");
+				break;
 			default:
-				let clothes = slave.clothes;
-				if (clothes === "a slutty schutzstaffel uniform") /* slutty schutzstaffel uniform uses schutzstaffel uniform art */
-					clothes = "a schutzstaffel uniform";
-				else if (clothes === "a niqab and abaya" || clothes === "a burqa")
-					clothes = "a hijab and abaya";
-				r += jsInclude(`Art_Vector_Belly_Outfit_${clothing2artSuffix(clothes)}`);
+				r += jsInclude(`Art_Vector_Belly_Outfit_${clothing2artSuffix(slave.clothes)}`);
 		}
 		/* shiny clothing */
 		if (State.variables.seeVectorArtHighlights === 1) {
@@ -2162,8 +2169,6 @@ window.ArtVectorBoobAddons = function(slave) {
 		/* boobs too small: do not show boob-related art */
 		/* BEWARE: this threshold should be kept in sync with the one in Art_Vector_Boob_ */
 	} else {
-		let clothes = slave.clothes;
-
 		switch (slave.clothes) {
 			case "a chattel habit":
 			case "a comfortable bodysuit":
@@ -2188,12 +2193,16 @@ window.ArtVectorBoobAddons = function(slave) {
 			case "sport shorts":
 			case "striped panties":
 				break; /* do nothing for these choices */
+			/* manually handle special cases */
+			case "a slutty schutzstaffel uniform":
+				r += jsInclude("Art_Vector_Boob_Outfit_SchutzstaffelUniform");
+				break;
+			case "a niqab and abaya":
+			case "a burqa":
+				r += jsInclude("Art_Vector_Boob_Outfit_HijabAndAbaya");
+				break;
 			default:
-				if (slave.clothes === "a slutty schutzstaffel uniform") /* slutty schutzstaffel uniform uses schutzstaffel uniform art */
-					clothes = "a schutzstaffel uniform";
-				else if (slave.clothes === "a niqab and abaya" || slave.clothes === "a burqa")
-					clothes = "a hijab and abaya";
-				r += jsInclude(`Art_Vector_Boob_Outfit_${clothing2artSuffix(clothes)}`);
+				r += jsInclude(`Art_Vector_Boob_Outfit_${clothing2artSuffix(slave.clothes)}`);
 		}
 	}
 	if (State.variables.showBodyMods === 1 && (slave.nipplesPiercing > 0 || slave.areolaePiercing > 0)) {
@@ -2642,7 +2651,7 @@ window.ArtVectorFeet = function(slave) {
 		default:
 			outfit = clothing2artSuffix(slave.clothes);
 	}
-	if (outfit) {
+	if (outfit !== undefined) {
 		if (slave.amp !== 1) {
 			if (slave.clothes !== "a slutty qipao" && slave.clothes !== "harem gauze" && slave.clothes !== "slutty jewelry" && slave.clothes !== "Western clothing") /* these clothes have a stump/leg outfit, but no butt outfit */
 				r += jsInclude(`Art_Vector_Butt_Outfit_${outfit}_${T.buttSize}`);
@@ -3305,3 +3314,411 @@ window.ArtVectorHead = function(slave) {
 	}	
 	return r;
 };
+
+window.ArtVectorPenis = function(slave) {
+	const T = State.temporary;
+	let penisSize;
+	let r = "";
+	/* BEWARE: _art_have_boobs and _art_scale_factor interfere with Art_Vector_Boob_ */
+	
+	if (slave.dick > 6 || (slave.dick > 0 && slave.belly <= 4000))
+		penisSize = Math.clamp(slave.dick, 1, 11) - 1;
+
+	if (penisSize !== undefined) { /* equivalent to (slave.dick > 6 || (slave.dick > 0 && slave.belly <= 4000)) */
+		switch (slave.clothes) {
+			/* BULGE OUTFITS LONG+MEDIUM OUTFITS */
+			case "a ball gown":
+			case "a biyelgee costume":
+			case "a burkini":
+			case "a burqa":
+			case "a dirndl":
+			case "a halter top dress":
+			case "a hijab and abaya":
+			case "a hijab and blouse":
+			case "a kimono":
+			case "a klan robe":
+			case "a long qipao":
+			case "a maternity dress":
+			case "a military uniform":
+			case "a mounty outfit":
+			case "a nice maid outfit":
+			case "a nice nurse outfit":
+			case "a niqab and abaya":
+			case "a police uniform":
+			case "a red army uniform":
+			case "a schutzstaffel uniform":
+			case "a skimpy loincloth":
+			case "a slave gown":
+			case "a slutty nurse outfit":
+			case "a slutty schutzstaffel uniform":
+			case "a t-shirt and jeans":
+			case "a toga":
+			case "an apron":
+			case "battlearmor":
+			case "battledress":
+			case "conservative clothing":
+			case "jeans":
+			case "leather pants":
+			case "leather pants and a tube top":
+			case "leather pants and pasties":
+			case "lederhosen":
+			case "nice business attire":
+			case "slutty business attire":
+			case "spats and a tank top":
+			case "sport shorts":
+			case "sport shorts and a sports bra":
+			case "sport shorts and a t-shirt":
+			case "stretch pants and a crop-top":
+				r += jsInclude(`Art_Vector_Bulge_Outfit_${penisSize}`);
+				break;
+			/* BULGE OUTFITS SHORT OUTFITS */
+			case "a bunny outfit":
+			case "a button-up shirt and panties":
+			case "a chattel habit":
+			case "a huipil":
+			case "a leotard":
+			case "a mini dress":
+			case "a monokini":
+			case "a one-piece swimsuit":
+			case "a penitent nuns habit":
+			case "a scalemail bikini":
+			case "a slutty klan robe":
+			case "a slutty maid outfit":
+			case "a slutty outfit":
+			case "a slutty qipao":
+			case "a succubus outfit":
+			case "a sweater and cutoffs":
+			case "a sweater and panties":
+			case "a t-shirt and panties":
+			case "a t-shirt and thong":
+			case "a tank-top and panties":
+			case "a thong":
+			case "a tube top and thong":
+			case "an oversized t-shirt and boyshorts":
+			case "attractive lingerie for a pregnant woman":
+			case "boyshorts":
+			case "cutoffs":
+			case "cutoffs and a t-shirt":
+			case "harem gauze":
+			case "kitty lingerie":
+			case "panties":
+			case "panties and pasties":
+			case "striped panties":
+			case "striped underwear":
+				if (slave.dick > 3)
+					r += jsInclude("Art_Vector_Bulge_Outfit_3");
+				else
+					r += jsInclude(`Art_Vector_Bulge_Outfit_${penisSize}`);
+				break;
+			/* hide everything */
+			case "a cheerleader outfit":
+			case "a gothic lolita dress":
+			case "a hanbok":
+			case "a schoolgirl outfit":
+				break;
+			/* full frontal */
+			default:
+				if (canAchieveErection(slave) && slave.dickAccessory !== "chastity" && slave.dickAccessory !== "combined chastity") {
+				/* draw erect penis over boobs if boobs do not hide the penis' base */
+					if (T.art_have_boobs === true && T.art_scale_factor < 3.7) {
+						if (slave.foreskin !== 0)
+							r += jsInclude(`Art_Vector_Penis_${penisSize}`);
+						else
+							r += jsInclude(`Art_Vector_PenisCirc_${penisSize}`);
+					}
+				/* flaccid penises are always drawn behind the boobs */
+				} else if (T.art_have_boobs !== true) {
+					if (slave.foreskin !== 0) 
+						r += jsInclude(`Art_Vector_Flaccid_${penisSize}`);
+					else
+						r += jsInclude(`Art_Vector_FlaccidCirc_${penisSize}`);
+					/* this draws chastity OVER latex catsuit. prndev finds this alright. */
+					if (slave.dickAccessory === "chastity" || slave.dickAccessory === "combined chastity") 
+						r += jsInclude(`Art_Vector_Chastity_Cage_${penisSize}`);
+				}
+		}
+	}
+	return r;
+};
+
+window.ArtVectorPubicHair = function(slave) {
+	const T = State.temporary;
+	const torsoSize = T.torsoSize;
+	let r = "";
+
+	if (slave.fuckdoll !== 0 || slave.clothes !== "a latex catsuit") {
+		if (State.variables.showBodyMods === 1 && slave.vaginaTat === "rude words") {
+			if (slave.dick !== 0)
+				T.art_pussy_tattoo_text = "Useless";
+			else
+				T.art_pussy_tattoo_text = "Fucktoy";
+			r += jsInclude("Art_Vector_Pussy_Tattoo");
+		}
+		if (slave.physicalAge < 11) {
+			/* these art files exist, but draw empty svg's. Commented out for now to save on rendering time
+			r += jsInclude("Art_Vector_Pubic_Hair_None");
+			r += jsInclude("Art_Vector_Pubic_Hair_Underarm_None");
+			*/
+		} else if (slave.physicalAge <= 13) {
+			if (slave.pubicHStyle !== "waxed")
+				r += jsInclude("Art_Vector_Pubic_Hair_Wispy");
+		} else if (slave.clothes !== "a comfortable bodysuit") {
+			switch (slave.pubicHStyle) {
+				case "bald":
+				case "hairless":
+				case "waxed":
+					/* commented out to save on rendering time
+					r += jsInclude("Art_Vector_Pubic_Hair_None");
+					*/
+					break;
+				case "strip":
+				case "in a strip":
+					if (torsoSize === "Obese" || torsoSize === "Fat")
+						r += jsInclude("Art_Vector_Pubic_Hair_StripFat");
+					else
+						r += jsInclude("Art_Vector_Pubic_Hair_Strip");
+					break;
+				case "neat":
+					if (torsoSize === "Obese" || torsoSize === "Fat")
+						r += jsInclude("Art_Vector_Pubic_Hair_NeatFat");
+					else
+						r += jsInclude("Art_Vector_Pubic_Hair_Neat");
+					break;
+				case "bushy in the front and neat in the rear":
+					if (torsoSize === "Obese" || torsoSize === "Fat")
+						r += jsInclude("Art_Vector_Pubic_Hair_BushFat");
+					else
+						r += jsInclude("Art_Vector_Pubic_Hair_Bush");
+					break;
+				case "bushy":
+					if (torsoSize === "Obese" || torsoSize === "Fat")
+						r += jsInclude("Art_Vector_Pubic_Hair_BushyFat");
+					else
+						r += jsInclude("Art_Vector_Pubic_Hair_Bushy");
+					break;
+				case "very bushy":
+					if (torsoSize === "Obese" || torsoSize === "Fat")
+						r += jsInclude("Art_Vector_Pubic_Hair_Very_BushyFat");
+					else
+						r += jsInclude("Art_Vector_Pubic_Hair_Very_Bushy");
+			}
+			switch (slave.underArmHStyle) {
+				case "hairless":
+				case "waxed":
+				case "bald":
+					/* commented out to save on rendering time
+					r += jsInclude("Art_Vector_Pubic_Hair_Underarm_None");
+					*/
+					break;
+				case "shaved":
+					r += jsInclude("Art_Vector_Pubic_Hair_Underarm_Shaved");
+					break;
+				case "neat":
+					r += jsInclude("Art_Vector_Pubic_Hair_Underarm_Neat");
+					break;
+				case "bushy":
+					r += jsInclude("Art_Vector_Pubic_Hair_Underarm_Bushy");
+			}
+		}
+	}
+	return r;
+};
+
+window.ArtVectorPussy = function(slave) {
+	if (slave.vagina >= 0 && slave.clothes !== "a latex catsuit" && slave.clothes !== "a comfortable bodysuit" && slave.clothes !== "a cybersuit")
+		return jsInclude("Art_Vector_Pussy");
+};
+
+window.ArtVectorPussyPiercings = function(slave) {
+	let r = "";
+
+	if (slave.vaginaPiercing !== 0 || slave.clitPiercing !== 0) {
+		switch (slave.clothes) {/* piercings display on these clothes */
+			case "a bra":
+			case "a button-up shirt":
+			case "a chattel habit":
+			case "a comfortable bodysuit":
+			case "a cybersuit":
+			case "a fallen nuns habit":
+			case "a Fuckdoll suit":
+			case "a latex catsuit":
+			case "a monokini":
+			case "a nice pony outfit":
+			case "a penitent nuns habit":
+			case "a skimpy loincloth":
+			case "a slutty pony outfit":
+			case "a sports bra":
+			case "a string bikini":
+			case "a striped bra":
+			case "a succubus outfit":
+			case "a sweater":
+			case "a t-shirt":
+			case "a t-shirt and panties":
+			case "a t-shirt and thong":
+			case "a tank-top":
+			case "a tube top":
+			case "an oversized t-shirt":
+			case "attractive lingerie":
+			case "body oil":
+			case "chains":
+			case "choosing her own clothes":
+			case "no clothing":
+			case "restrictive latex":
+			case "shibari ropes":
+			case "slutty jewelry":
+			case "sport shorts":
+			case "sport shorts and a sports bra":
+			case "sport shorts and a t-shirt":
+			case "uncomfortable straps":
+			case "Western clothing":
+				/* piercinglevel = 1, Light; piercinglevel = 2, Heavy; piercinglevel = 3, Smart; piercinglevel = 0, None */
+				if (slave.vaginaPiercing === 1)
+					r += jsInclude("Art_Vector_Pussy_Piercing");
+				else if (slave.vaginaPiercing === 2)
+					r += jsInclude("Art_Vector_Pussy_Piercing_Heavy");
+
+				if (slave.clitPiercing === 1)
+					r += jsInclude("Art_Vector_Clit_Piercing");
+				else if (slave.clitPiercing === 2)
+					r += jsInclude("Art_Vector_Clit_Piercing_Heavy");
+				else if (slave.clitPiercing === 3)
+					r += jsInclude("Art_Vector_Clit_Piercing_Smart");
+		}
+	}
+	return r;
+};
+
+window.ArtVectorTorso = function(slave) {
+	let torsoSize;
+	let r = "";
+	
+	/* Torso size switch courtesy of Nov-X */
+	/* BEWARE: _torsoSize might be used in torso outfit */
+
+	if (slave.waist >= 96) {
+		if (slave.weight >= 96)
+			torsoSize = "Obese";
+		else if (slave.weight >= 11)
+			torsoSize = "Fat";
+		else if (slave.weight > -31)
+			torsoSize = "Chubby";
+		else
+			torsoSize = "Normal";
+	} else if (slave.waist >= 41) {
+		if (slave.weight >= 131)
+			torsoSize = "Obese";
+		else if (slave.weight >= 31)
+			torsoSize = "Fat";
+		else if (slave.weight >= 0)
+			torsoSize = "Chubby";
+		else if (slave.weight > -96)
+			torsoSize = "Normal";
+		else
+			torsoSize = "Hourglass";
+	} else if (slave.waist >= 11) {
+		if (slave.weight >= 161)
+			torsoSize = "Obese";
+		else if (slave.weight >= 96)
+			torsoSize = "Fat";
+		else if (slave.weight >= 11)
+			torsoSize = "Chubby";
+		else if (slave.weight > -31)
+			torsoSize = "Normal";
+		else
+			torsoSize = "Hourglass";
+	} else if (slave.waist > -11) {
+		if (slave.weight >= 191)
+			torsoSize = "Obese";
+		else if (slave.weight >= 131)
+			torsoSize = "Fat";
+		else if (slave.weight >= 31)
+			torsoSize = "Chubby";
+		else if (slave.weight >= 0)
+			torsoSize = "Normal";
+		else if (slave.weight > -96)
+			torsoSize = "Hourglass";
+		else
+			torsoSize = "Unnatural";
+	} else if (slave.waist > -41) {
+		if (slave.weight >= 161)
+			torsoSize = "Fat";
+		else if (slave.weight >= 96)
+			torsoSize = "Chubby";
+		else if (slave.weight >= 11)
+			torsoSize = "Normal";
+		else if (slave.weight > -31)
+			torsoSize = "Hourglass";
+		else
+			torsoSize = "Unnatural";
+	} else if (slave.waist > -96) {
+		if (slave.weight >= 191)
+			torsoSize = "Fat";
+		else if (slave.weight >= 131)
+			torsoSize = "Chubby";
+		else if (slave.weight >= 31)
+			torsoSize = "Normal";
+		else if (slave.weight > -11)
+			torsoSize = "Hourglass";
+		else
+			torsoSize = "Unnatural";
+	} else {
+		if (slave.weight >= 161)
+			torsoSize = "Chubby";
+		else if (slave.weight >= 96)
+			torsoSize = "Normal";
+		else if (slave.weight > 0)
+			torsoSize = "Hourglass";
+		else
+			torsoSize = "Unnatural";
+	}
+
+	r += jsInclude(`Art_Vector_Torso_${torsoSize}`);
+	if (slave.muscles >= 97)
+		r += jsInclude(`Art_Vector_Torso_${torsoSize}_MHeavy`);
+	else if (slave.muscles >= 62)
+		r += jsInclude(`Art_Vector_Torso_${torsoSize}_MMedium`);
+	else if (slave.muscles >= 30)
+		r += jsInclude(`Art_Vector_Torso_${torsoSize}_MLight`);
+
+	State.temporary.torsoSize = torsoSize;
+	return r;
+};
+
+window.ArtVectorTorsoOutfit = function(slave) {
+	const torsoSize = State.temporary.torsoSize;
+	let r = "";
+
+	/* BEWARE: _torsoSize is set by Art_Vector_Torso_ */
+	/* TODO: latex catsuit should cover vagina and its piercings, too */
+	switch (slave.clothes) {
+		case "a Fuckdoll suit":
+		case "a latex catsuit":
+		case "a nice pony outfit":
+		case "a slutty pony outfit":
+		case "choosing her own clothes":
+		case "no clothing":
+			break; /* no torso outfit */
+		/* manually handle special cases */
+		case "a cybersuit":
+			r += jsInclude(`Art_Vector_Torso_Outfit_Latex_${torsoSize}`);
+			break;
+		case "a slutty schutzstaffel uniform":
+			r += jsInclude(`Art_Vector_Torso_Outfit_SchutzstaffelUniform_${torsoSize}`);
+			break;
+		case "a niqab and abaya":
+		case "a burqa":
+			r += jsInclude(`Art_Vector_Torso_Outfit_HijabAndAbaya_${torsoSize}`);
+			break;
+		default:
+			r += jsInclude(`Art_Vector_Torso_Outfit_${clothing2artSuffix(slave.clothes)}_${torsoSize}`);
+	}
+	if (State.variables.seeVectorArtHighlights === 1) {
+		if (slave.fuckdoll !== 0 || slave.clothes === "restrictive latex" || slave.clothes === "a latex catsuit") {
+			if (slave.amp !== 0)
+				r += jsInclude("Art_Vector_Torso_Outfit_Shine_Shoulder");
+			if (slave.preg <= 0)
+				r += jsInclude(`Art_Vector_Torso_Outfit_Shine_${torsoSize}`);
+		}
+	}
+	return r;
+};
diff --git a/src/art/vector/Penis.tw b/src/art/vector/Penis.tw
index e40d6193128600b87b458c9aa9312a5f019ca750..2f4ae402feac8e7297203545e28e8cb4490c177c 100644
--- a/src/art/vector/Penis.tw
+++ b/src/art/vector/Penis.tw
@@ -1,107 +1,6 @@
 :: Art_Vector_Penis_ [nobr]
 
-/* BEWARE: _art_have_boobs and _art_scale_factor interfere with Art_Vector_Boob_ */
-
-<<set _penisSize = -1>>
- /* BULGE OUTFITS LONG+MEDIUM OUTFITS */
-<<if _artSlave.clothes == "a slave gown" || _artSlave.clothes == "a hijab and abaya" || _artSlave.clothes == "a nice maid outfit" || _artSlave.clothes == "a military uniform" || _artSlave.clothes == "a nice nurse outfit" || _artSlave.clothes == "a ball gown" || _artSlave.clothes == "battledress" || _artSlave.clothes == "nice business attire" || _artSlave.clothes == "conservative clothing" || _artSlave.clothes == "a kimono" || _artSlave.clothes == "a maternity dress" || _artSlave.clothes == "stretch pants and a crop-top" || _artSlave.clothes == "a toga" || _artSlave.clothes == "a halter top dress" || _artSlave.clothes == "a slutty nurse outfit" || _artSlave.clothes == "slutty business attire" || _artSlave.clothes == "spats and a tank top" || _artSlave.clothes == "a schutzstaffel uniform" || _artSlave.clothes == "a slutty schutzstaffel uniform" || _artSlave.clothes == "a red army uniform" || _artSlave.clothes == "an apron" || _artSlave.clothes == "battlearmor" || _artSlave.clothes == "a dirndl" || _artSlave.clothes == "a biyelgee costume" || _artSlave.clothes == "lederhosen" || _artSlave.clothes == "a mounty outfit" || _artSlave.clothes == "a long qipao" || _artSlave.clothes == "a niqab and abaya" || _artSlave.clothes == "a burqa" || _artSlave.clothes == "a klan robe" || _artSlave.clothes == "a hijab and blouse" || _artSlave.clothes == "a burkini" || _artSlave.clothes == "sport shorts" || _artSlave.clothes == "sport shorts and a sports bra" || _artSlave.clothes == "sport shorts and t-shirt" || _artSlave.clothes == "jeans" || _artSlave.clothes == "leather pants" || _artSlave.clothes == "leather pants and pasties" || _artSlave.clothes == "leather pants and a tube top" || _artSlave.clothes == "a t-shirt and jeans" || _artSlave.clothes == "a skimpy loincloth" || _artSlave.clothes == "a police uniform">>
-	<<if _artSlave.dick >= 11>>
-		<<include Art_Vector_Bulge_Outfit_10>>
-	<<elseif _artSlave.dick >= 10>>
-		<<include Art_Vector_Bulge_Outfit_9>>
-	<<elseif _artSlave.dick >= 9>>
-		<<include Art_Vector_Bulge_Outfit_8>>
-	<<elseif _artSlave.dick >= 8>>
-		<<include Art_Vector_Bulge_Outfit_7>>
-	<<elseif _artSlave.dick >= 7>>
-		<<include Art_Vector_Bulge_Outfit_6>>
-	<<elseif _artSlave.dick >= 6 && _artSlave.belly <= 4000>>
-		<<include Art_Vector_Bulge_Outfit_5>>
-	<<elseif _artSlave.dick >= 5 && _artSlave.belly <= 4000>>
-		<<include Art_Vector_Bulge_Outfit_4>>
-	<<elseif _artSlave.dick >= 4 && _artSlave.belly <= 4000>>
-		<<include Art_Vector_Bulge_Outfit_3>>
-	<<elseif _artSlave.dick >= 3 && _artSlave.belly <= 4000>>
-		<<include Art_Vector_Bulge_Outfit_2>>
-	<<elseif _artSlave.dick >= 2 && _artSlave.belly <= 4000>>
-		<<include Art_Vector_Bulge_Outfit_1>>
-	<<elseif _artSlave.dick >= 1 && _artSlave.belly <= 4000>>
-		<<include Art_Vector_Bulge_Outfit_0>>
-	<</if>>
-<</if>>
-
-/* BULGE OUTFITS SHORT OUTFITS */
-<<if _artSlave.clothes == "cutoffs and a t-shirt" || _artSlave.clothes == "a leotard" || _artSlave.clothes == "a slutty maid outfit" || _artSlave.clothes == "a mini dress" || _artSlave.clothes == "a scalemail bikini" || _artSlave.clothes == "striped panties" || _artSlave.clothes == "a slutty outfit" || _artSlave.clothes == "a succubus outfit" || _artSlave.clothes == "attractive lingerie for a pregnant woman" || _artSlave.clothes == "a bunny outfit" || _artSlave.clothes == "a chattel habit" || _artSlave.clothes == "harem gauze" || _artSlave.clothes == "a huipil" || _artSlave.clothes == "a slutty qipao" || _artSlave.clothes == "a penitent nuns habit" || _artSlave.clothes == "a monokini" || _artSlave.clothes == "cutoffs" || _artSlave.clothes == "panties" || _artSlave.clothes == "panties and pasties" || _artSlave.clothes == "a thong" || _artSlave.clothes == "a slutty klan robe" || _artSlave.clothes == "striped underwear" || _artSlave.clothes == "a button-up shirt and panties" || _artSlave.clothes == "a t-shirt and panties" || _artSlave.clothes == "a t-shirt and thong" || _artSlave.clothes == "a tube top and thong" || _artSlave.clothes == "boyshorts" || _artSlave.clothes == "a tank-top and panties" || _artSlave.clothes == "an oversized t-shirt and boyshorts" || _artSlave.clothes == "a sweater and panties" || _artSlave.clothes == "a sweater and cutoffs" || _artSlave.clothes == "a one-piece swimsuit" || _artSlave.clothes == "kitty lingerie">>
-	<<if _artSlave.dick >= 4 && _artSlave.belly <= 4000>>
-		<<include Art_Vector_Bulge_Outfit_3>>
-	<<elseif _artSlave.dick >= 3 && _artSlave.belly <= 4000>>
-		<<include Art_Vector_Bulge_Outfit_2>>
-	<<elseif _artSlave.dick >= 2 && _artSlave.belly <= 4000>>
-		<<include Art_Vector_Bulge_Outfit_1>>
-	<<elseif _artSlave.dick >= 1 && _artSlave.belly <= 4000>>
-		<<include Art_Vector_Bulge_Outfit_0>>
-	<</if>>
-<</if>>
-
-/* HIDES DICK ON OUTFITS WHERE COVERED BY CLOTHING */
-<<if _artSlave.clothes != "a slave gown" && _artSlave.clothes != "a cheerleader outfit" && _artSlave.clothes != "cutoffs and a t-shirt" && _artSlave.clothes != "a halter top dress" && _artSlave.clothes != "a hijab and abaya" && _artSlave.clothes != "a leotard" && _artSlave.clothes != "a nice maid outfit" && _artSlave.clothes != "a slutty maid outfit" && _artSlave.clothes != "a military uniform" && _artSlave.clothes != "a mini dress" && _artSlave.clothes != "a nice nurse outfit" && _artSlave.clothes != "a slutty nurse outfit" && _artSlave.clothes != "striped panties" && _artSlave.clothes != "a scalemail bikini" && _artSlave.clothes != "a schoolgirl outfit" && _artSlave.clothes != "a ball gown" && _artSlave.clothes != "battledress" && _artSlave.clothes != "a slutty outfit" && _artSlave.clothes != "spats and a tank top" && _artSlave.clothes != "a succubus outfit" && _artSlave.clothes != "nice business attire" && _artSlave.clothes != "slutty business attire" && _artSlave.clothes != "attractive lingerie for a pregnant woman" && _artSlave.clothes != "a bunny outfit" && _artSlave.clothes != "a chattel habit" && _artSlave.clothes != "conservative clothing" && _artSlave.clothes != "harem gauze" && _artSlave.clothes != "a huipil" && _artSlave.clothes != "a kimono" && _artSlave.clothes != "a maternity dress" && _artSlave.clothes != "a slutty qipao" && _artSlave.clothes != "stretch pants and a crop-top" && _artSlave.clothes != "a toga" && _artSlave.clothes != "a penitent nuns habit" && _artSlave.clothes != "a monokini" && _artSlave.clothes != "a schutzstaffel uniform" && _artSlave.clothes != "a slutty schutzstaffel uniform" && _artSlave.clothes != "a red army uniform" && _artSlave.clothes != "an apron" && _artSlave.clothes != "battlearmor" && _artSlave.clothes != "a dirndl" && _artSlave.clothes != "a biyelgee costume" && _artSlave.clothes != "lederhosen" && _artSlave.clothes != "a mounty outfit" && _artSlave.clothes != "a long qipao" && _artSlave.clothes != "a klan robe" && _artSlave.clothes != "a niqab and abaya" && _artSlave.clothes != "a burqa" && _artSlave.clothes != "a hijab and blouse" && _artSlave.clothes != "a burkini" && _artSlave.clothes != "cutoffs" && _artSlave.clothes != "panties" && _artSlave.clothes != "panties and pasties" && _artSlave.clothes != "a thong" && _artSlave.clothes != "a slutty klan robe" && _artSlave.clothes != "striped underwear" && _artSlave.clothes != "a button-up shirt and panties" && _artSlave.clothes != "sport shorts" && _artSlave.clothes != "sport shorts and a sports bra" && _artSlave.clothes != "sport shorts and a t-shirt" && _artSlave.clothes != "a t-shirt and panties" && _artSlave.clothes != "a t-shirt and thong" && _artSlave.clothes != "jeans" && _artSlave.clothes != "leather pants" && _artSlave.clothes != "leather pants and pasties" && _artSlave.clothes != "leather pants and a tube top" && _artSlave.clothes != "a tube top and thong" && _artSlave.clothes != "boyshorts" && _artSlave.clothes != "a t-shirt and jeans" && _artSlave.clothes != "a tank-top and panties" && _artSlave.clothes != "a skimpy loincloth" && _artSlave.clothes != "an oversized t-shirt and boyshorts" && _artSlave.clothes != "a sweater and cutoffs" && _artSlave.clothes != "a sweater and panties" && _artSlave.clothes != "a police uniform" && _artSlave.clothes != "a one-piece swimsuit" && _artSlave.clothes != "a hanbok" && _artSlave.clothes != "a gothic lolita dress" && _artSlave.clothes != "kitty lingerie">>
-	<<if _artSlave.dick >= 11>>
-		<<set _penisSize = 10>>
-	<<elseif _artSlave.dick >= 10>>
-		<<set _penisSize = 9>>
-	<<elseif _artSlave.dick >= 9>>
-		<<set _penisSize = 8>>
-	<<elseif _artSlave.dick >= 8>>
-		<<set _penisSize = 7>>
-	<<elseif _artSlave.dick >= 7>>
-		<<set _penisSize = 6>>
-	<<elseif _artSlave.dick >= 6 && _artSlave.belly <= 4000>>
-		<<set _penisSize = 5>>
-	<<elseif _artSlave.dick >= 5 && _artSlave.belly <= 4000>>
-		<<set _penisSize = 4>>
-	<<elseif _artSlave.dick >= 4 && _artSlave.belly <= 4000>>
-		<<set _penisSize = 3>>
-	<<elseif _artSlave.dick >= 3 && _artSlave.belly <= 4000>>
-		<<set _penisSize = 2>>
-	<<elseif _artSlave.dick >= 2 && _artSlave.belly <= 4000>>
-		<<set _penisSize = 1>>
-	<<elseif _artSlave.dick >= 1 && _artSlave.belly <= 4000>>
-		<<set _penisSize = 0>>
-	<</if>>
-<</if>>
-
-<<if _penisSize >= 0>>
-	<<if canAchieveErection(_artSlave) && (_artSlave.dickAccessory != "chastity") && (_artSlave.dickAccessory != "combined chastity") >>
-		<<if (def _art_have_boobs) && (_art_scale_factor < 3.7) && _artSlave.foreskin >= 1>>
-			/* only draw erect penis over boobs if boobs do not hide the penis' base */
-			<<set _art = "Art_Vector_Penis_"+_penisSize>>
-			<<include _art>>
-		<<elseif (def _art_have_boobs) && (_art_scale_factor < 3.7) && _artSlave.foreskin == 0>>
-			<<set _art = "Art_Vector_PenisCirc_"+_penisSize>>
-			<<include _art>>
-		<</if>>
-	<<else>>
-		<<if ndef _art_have_boobs && _artSlave.foreskin >= 1>>
-			/* flaccid penises are always drawn behind the boobs */
-			<<set _art = "Art_Vector_Flaccid_"+_penisSize>>
-			<<include _art>>
-			<<if (_artSlave.dickAccessory == "chastity") || (_artSlave.dickAccessory == "combined chastity") >>
-				/* this draws chastity OVER latex catsuit. prndev finds this alright. */
-				<<set _art = "Art_Vector_Chastity_Cage_"+_penisSize>>
-				<<include _art>>
-			<</if>>
-		<<elseif ndef _art_have_boobs && _artSlave.foreskin == 0>>
-			/* flaccid penises are always drawn behind the boobs */
-			<<set _art = "Art_Vector_FlaccidCirc_"+_penisSize>>
-			<<include _art>>
-			<<if (_artSlave.dickAccessory == "chastity") || (_artSlave.dickAccessory == "combined chastity") >>
-				/* this draws chastity OVER latex catsuit. prndev finds this alright. */
-				<<set _art = "Art_Vector_Chastity_Cage_"+_penisSize>>
-				<<include _art>>
-			<</if>>
-		<</if>>
-	<</if>>
-<</if>>
+<<= ArtVectorPenis(_artSlave)>>
 
 /* unset the variable for the next display */
 <<unset _art_have_boobs >>
diff --git a/src/art/vector/Pubic_Hair.tw b/src/art/vector/Pubic_Hair.tw
index b51accee90f740e929794692b3d458174f2116bb..89fb0de6af563bb724e800d9eaaef9b8a03e6f15 100644
--- a/src/art/vector/Pubic_Hair.tw
+++ b/src/art/vector/Pubic_Hair.tw
@@ -1,73 +1,3 @@
 :: Art_Vector_Pubic_Hair_ [nobr]
 
-<<if _artSlave.fuckdoll != 0 || _artSlave.clothes != "a latex catsuit">>
-
-<<if $showBodyMods == 1>>
-	<<if _artSlave.vaginaTat == "rude words">>
-		<<if _artSlave.dick != 0>>
-			<<set _art_pussy_tattoo_text = "Useless" >>
-		<<else>>
-			<<set _art_pussy_tattoo_text = "Fucktoy" >>
-		<</if>>
-		<<include Art_Vector_Pussy_Tattoo>>
-	<</if>>
-<</if>>
-
-<<if _artSlave.physicalAge < 11>>
-	<<include Art_Vector_Pubic_Hair_None >>
-		<<include Art_Vector_Pubic_Hair_Underarm_None >>
-<<elseif _artSlave.physicalAge <= 13>>
-	<<if _artSlave.pubicHStyle != "waxed">>
-		<<include Art_Vector_Pubic_Hair_Wispy >>
-	<</if>>
-<</if>>
-
-<<if _artSlave.physicalAge > 13 && _artSlave.clothes != "a comfortable bodysuit">>
-	<<if _artSlave.pubicHStyle == "strip" || _artSlave.pubicHStyle == "in a strip">>
-		<<if _torsoSize == "Obese" || _torsoSize == "Fat">>
-			<<include Art_Vector_Pubic_Hair_StripFat >>
-		<<elseif _torsoSize == "Chubby" || _torsoSize == "Normal" || _torsoSize == "Unnatural" || _torsoSize == "Hourglass" >>
-			<<include Art_Vector_Pubic_Hair_Strip >>
-		<</if>>
-	<<elseif _artSlave.pubicHStyle == "bush" || _artSlave.pubicHStyle == "bushy in the front and neat in the rear">>
-		<<if _torsoSize == "Obese" || _torsoSize == "Fat">>
-			<<include Art_Vector_Pubic_Hair_BushFat >>
-		<<elseif _torsoSize == "Chubby" || _torsoSize == "Normal" || _torsoSize == "Unnatural" || _torsoSize == "Hourglass" >>
-			<<include Art_Vector_Pubic_Hair_Bush >>
-		<</if>>
-	<<elseif _artSlave.pubicHStyle == "neat">>
-		<<if _torsoSize == "Obese" || _torsoSize == "Fat">>
-			<<include Art_Vector_Pubic_Hair_NeatFat >>
-		<<elseif _torsoSize == "Chubby" || _torsoSize == "Normal" || _torsoSize == "Unnatural" || _torsoSize == "Hourglass" >>
-			<<include Art_Vector_Pubic_Hair_Neat >>
-		<</if>>
-	<<elseif _artSlave.pubicHStyle =="bushy">>
-		<<if _torsoSize == "Obese" || _torsoSize == "Fat">>
-			<<include Art_Vector_Pubic_Hair_BushyFat >>
-		<<elseif _torsoSize == "Chubby" || _torsoSize == "Normal" || _torsoSize == "Unnatural" || _torsoSize == "Hourglass" >>
-			<<include Art_Vector_Pubic_Hair_Bushy >>
-		<</if>>
-	<<elseif _artSlave.pubicHStyle =="very bushy">>
-		<<if _torsoSize == "Obese" || _torsoSize == "Fat">>
-			<<include Art_Vector_Pubic_Hair_Very_BushyFat >>
-		<<elseif _torsoSize == "Chubby" || _torsoSize == "Normal" || _torsoSize == "Unnatural" || _torsoSize == "Hourglass" >>
-			<<include Art_Vector_Pubic_Hair_Very_Bushy >>
-		<</if>>
-	<<elseif _artSlave.pubicHStyle =="waxed">>
-		<<include Art_Vector_Pubic_Hair_None >>
-	<</if>>
-<</if>>
-
-<<if _artSlave.physicalAge > 13 && _artSlave.clothes != "a comfortable bodysuit">>
-	<<if _artSlave.underArmHStyle == "hairless" || _artSlave.underArmHStyle == "waxed" || _artSlave.underArmHStyle == "bald">>
-		<<include Art_Vector_Pubic_Hair_Underarm_None >>
-	<<elseif _artSlave.underArmHStyle == "shaved">>
-		<<include Art_Vector_Pubic_Hair_Underarm_Shaved >>
-	<<elseif _artSlave.underArmHStyle == "neat">>
-		<<include Art_Vector_Pubic_Hair_Underarm_Neat >>
-	<<elseif _artSlave.underArmHStyle =="bushy">>
-		<<include Art_Vector_Pubic_Hair_Underarm_Bushy >>
-	<</if>>
-<</if>>
-
-<</if>> /* latex clothing */
+<<= ArtVectorPubicHair(_artSlave)>>
diff --git a/src/art/vector/Pussy.tw b/src/art/vector/Pussy.tw
index 7ba2a9af163530d46930ca752d920df41216b9cc..c021c883f0e597eeb4691b71407156e58ba87934 100644
--- a/src/art/vector/Pussy.tw
+++ b/src/art/vector/Pussy.tw
@@ -1,5 +1,3 @@
 :: Art_Vector_Pussy_ [nobr]
 
-<<if _artSlave.vagina >= 0 && _artSlave.clothes != "a latex catsuit" && _artSlave.clothes != "a comfortable bodysuit" && _artSlave.clothes != "a cybersuit">>
-	<<include Art_Vector_Pussy>>
-<</if>>
+<<= ArtVectorPussy(_artSlave)>>
diff --git a/src/art/vector/Pussy_Piercings.tw b/src/art/vector/Pussy_Piercings.tw
index 85c67dc6dc964a3ac6b69c96a6ba14aa964e1463..b085a056bbf6fe9bf0a8214ed4e376f9d571220c 100644
--- a/src/art/vector/Pussy_Piercings.tw
+++ b/src/art/vector/Pussy_Piercings.tw
@@ -1,25 +1,3 @@
 :: Art_Vector_Pussy_Piercings_ [nobr]
 
-<<if _artSlave.vaginaPiercing > 0>>
-	<<if _artSlave.clothes != "a cheerleader outfit" && _artSlave.clothes != "a hijab and abaya" && _artSlave.clothes != "cutoffs and a t-shirt" && _artSlave.clothes != "a halter top dress" && _artSlave.clothes != "a mini dress" && _artSlave.clothes != "a leotard" && _artSlave.clothes != "a nice maid outfit" && _artSlave.clothes != "a slutty maid outfit" && _artSlave.clothes != "a military uniform" && _artSlave.clothes != "a nice nurse outfit" && _artSlave.clothes != "a schoolgirl outfit" && _artSlave.clothes != "a scalemail bikini" && _artSlave.clothes != "a slutty nurse outfit" && _artSlave.clothes != "a ball gown" && _artSlave.clothes != "battledress" && _artSlave.clothes != "spats and a tank top" && _artSlave.clothes != "nice business attire" && _artSlave.clothes != "slutty business attire" && _artSlave.clothes != "a bunny outfit" && _artSlave.clothes != "conservative clothing" && _artSlave.clothes != "a huipil" && _artSlave.clothes != "a kimono" && _artSlave.clothes != "a slave gown" && _artSlave.clothes != "stretch pants and a crop-top" && _artSlave.clothes != "a maternity dress" && _artSlave.clothes != "a slutty qipao" && _artSlave.clothes != "a toga" && _artSlave.clothes != "clubslut netting" && _artSlave.clothes != "a slutty outfit" && _artSlave.clothes != "harem gauze" && _artSlave.clothes != "a penitent nuns outfit" && _artSlave.clothes != "attractive lingerie for a pregnant woman" && _artSlave.clothes != "battlearmor" && _artSlave.clothes != "a dirndl" && _artSlave.clothes != "a biyelgee costume" && _artSlave.clothes != "lederhosen" && _artSlave.clothes != "a mounty outfit" && _artSlave.clothes != "a long qipao" && _artSlave.clothes != "a schutzstaffel uniform" && _artSlave.clothes != "a slutty schutzstaffel uniform" && _artSlave.clothes != "a red army uniform" && _artSlave.clothes != "an apron" && _artSlave.clothes != "striped panties" && _artSlave.clothes != "a niqab and abaya" && _artSlave.clothes != "a burqa" && _artSlave.clothes != "a klan robe" && _artSlave.clothes != "a hijab and blouse" && _artSlave.clothes != "a burkini" && _artSlave.clothes != "cutoffs" && _artSlave.clothes != "panties" && _artSlave.clothes != "a thong" && _artSlave.clothes != "panties and pasties" && _artSlave.clothes != "a slutty klan robe" && _artSlave.clothes != "striped underwear" && _artSlave.clothes != "a button-up shirt and panties" && _artSlave.clothes != "jeans" && _artSlave.clothes != "leather pants" && _artSlave.clothes != "leather pants and pasties" && _artSlave.clothes != "leather pants and a tube top" && _artSlave.clothes != "a tube top and thong" && _artSlave.clothes != "a t-shirt and jeans" && _artSlave.clothes != "a tank-top and panties" && _artSlave.clothes != "an oversized t-shirt and boyshorts" && _artSlave.clothes != "boyshorts" && _artSlave.clothes != "a sweater and cutoffs" && _artSlave.clothes != "a sweater and panties" && _artSlave.clothes != "a police uniform" && _artSlave.clothes != "a one-piece swimsuit" && _artSlave.clothes != "a hanbok" && _artSlave.clothes != "a gothic lolita dress" && _artSlave.clothes != "kitty lingerie">>
-		<<if _artSlave.vaginaPiercing == 1>>
-			<<include Art_Vector_Pussy_Piercing>>
-		<<else>>
-			<<include Art_Vector_Pussy_Piercing_Heavy>>
-		<</if>>
-	<</if>>
-<</if>>
-
-<<if _artSlave.clitPiercing > 0>>
-	<<if _artSlave.clothes != "a cheerleader outfit" && _artSlave.clothes != "a hijab and abaya" && _artSlave.clothes != "cutoffs and a t-shirt" && _artSlave.clothes != "a halter top dress" && _artSlave.clothes != "a mini dress" && _artSlave.clothes != "a leotard" && _artSlave.clothes != "a nice maid outfit" && _artSlave.clothes != "a slutty maid outfit" && _artSlave.clothes != "a military uniform" && _artSlave.clothes != "a nice nurse outfit" && _artSlave.clothes != "a schoolgirl outfit" && _artSlave.clothes != "a scalemail bikini" && _artSlave.clothes != "a slutty nurse outfit" && _artSlave.clothes != "a ball gown" && _artSlave.clothes != "battledress" && _artSlave.clothes != "spats and a tank top" && _artSlave.clothes != "nice business attire" && _artSlave.clothes != "slutty business attire" && _artSlave.clothes != "a bunny outfit" && _artSlave.clothes != "conservative clothing" && _artSlave.clothes != "a huipil" && _artSlave.clothes != "a kimono" && _artSlave.clothes != "a slave gown" && _artSlave.clothes != "stretch pants and a crop-top" && _artSlave.clothes != "a maternity dress" && _artSlave.clothes != "a slutty qipao" && _artSlave.clothes != "a toga" && _artSlave.clothes != "clubslut netting" && _artSlave.clothes != "a slutty outfit" && _artSlave.clothes != "harem gauze" && _artSlave.clothes != "a penitent nuns outfit" && _artSlave.clothes != "attractive lingerie for a pregnant woman" && _artSlave.clothes != "battlearmor" && _artSlave.clothes != "a dirndl" && _artSlave.clothes != "a biyelgee costume" && _artSlave.clothes != "lederhosen" && _artSlave.clothes != "a mounty outfit" && _artSlave.clothes != "a long qipao" && _artSlave.clothes != "a schutzstaffel uniform" && _artSlave.clothes != "a slutty schutzstaffel uniform" && _artSlave.clothes != "a red army uniform" && _artSlave.clothes != "an apron" && _artSlave.clothes != "striped panties" && _artSlave.clothes != "a niqab and abaya" && _artSlave.clothes != "a burqa" && _artSlave.clothes != "a klan robe" && _artSlave.clothes != "a hijab and blouse" && _artSlave.clothes != "a burkini" && _artSlave.clothes != "cutoffs" && _artSlave.clothes != "panties" && _artSlave.clothes != "a thong" && _artSlave.clothes != "panties and pasties" && _artSlave.clothes != "a slutty klan robe" && _artSlave.clothes != "striped underwear" && _artSlave.clothes != "a button-up shirt and panties" && _artSlave.clothes != "jeans" && _artSlave.clothes != "leather pants" && _artSlave.clothes != "leather pants and pasties" && _artSlave.clothes != "leather pants and a tube top" && _artSlave.clothes != "a tube top and thong" && _artSlave.clothes != "a t-shirt and jeans" && _artSlave.clothes != "a tank-top and panties" && _artSlave.clothes != "an oversized t-shirt and boyshorts" && _artSlave.clothes != "boyshorts" && _artSlave.clothes != "a sweater and cutoffs" && _artSlave.clothes != "a sweater and panties" && _artSlave.clothes != "a police uniform" && _artSlave.clothes != "a one-piece swimsuit" && _artSlave.clothes != "a hanbok" && _artSlave.clothes != "a gothic lolita dress" && _artSlave.clothes != "kitty lingerie">>
-		<<if _artSlave.clitPiercing == 1>>
-			<<include Art_Vector_Clit_Piercing>>
-		<<elseif _artSlave.clitPiercing == 2>>
-			<<include Art_Vector_Clit_Piercing_Heavy>>
-		<<elseif _artSlave.clitPiercing == 3>>
-			<<include Art_Vector_Clit_Piercing_Smart>>
-		<</if>>
-	<</if>>
-<</if>>
-
-/* piercinglevel = 1; Light, piercinglevel = 2; Heavy, piercinglevel = 3; Smart, piercinglevel = 0; None */
+<<= ArtVectorPussyPiercings(_artSlave)>>
diff --git a/src/art/vector/Torso.tw b/src/art/vector/Torso.tw
index 0b8aee2974e986814fc899d97931ea424330fc1d..658c56f9593c9ad4fdb6cbd553206b6e7392e590 100644
--- a/src/art/vector/Torso.tw
+++ b/src/art/vector/Torso.tw
@@ -1,139 +1,3 @@
 :: Art_Vector_Torso_ [nobr]
 
-/* Torso size switch courtesy of Nov-X */
-
-/* BEWARE: _torsoSize might be used in torso outfit */
-
-<<if _artSlave.waist >= 96 && _artSlave.waist > -96>>
-	<<if _artSlave.weight >= 96>>
-		<<set _torsoSize = "Obese">>
-	<<elseif _artSlave.weight < 96 && _artSlave.weight >= 11>>
-		<<set _torsoSize = "Fat">>
-	<<elseif _artSlave.weight < 11 && _artSlave.weight > -31>>
-		<<set _torsoSize = "Chubby">>
-	<<elseif _artSlave.weight <= -31>>
-		<<set _torsoSize = "Normal">>
-	<</if>>
-<<elseif _artSlave.waist < 96 && _artSlave.waist >= 41>>
-	<<if _artSlave.weight >= 131>>
-		<<set _torsoSize = "Obese">>
-	<<elseif _artSlave.weight < 131 && _artSlave.weight >= 31>>
-		<<set _torsoSize = "Fat">>
-	<<elseif _artSlave.weight < 31 && _artSlave.weight >= 0>>
-		<<set _torsoSize = "Chubby">>
-	<<elseif _artSlave.weight < 0 && _artSlave.weight > -96>>
-		<<set _torsoSize = "Normal">>
-	<<elseif _artSlave.weight <= -96>>
-		<<set _torsoSize = "Hourglass">>
-	<</if>>
-<<elseif _artSlave.waist < 41 && _artSlave.waist >= 11>>
-	<<if _artSlave.weight >= 161>>
-		<<set _torsoSize = "Obese">>
-	<<elseif _artSlave.weight < 161 && _artSlave.weight >= 96>>
-		<<set _torsoSize = "Fat">>
-	<<elseif _artSlave.weight < 96 && _artSlave.weight >= 11>>
-		<<set _torsoSize = "Chubby">>
-	<<elseif _artSlave.weight < 11 && _artSlave.weight > -31>>
-		<<set _torsoSize = "Normal">>
-	<<elseif _artSlave.weight <= -31>>
-		<<set _torsoSize = "Hourglass">>
-	<</if>>
-<<elseif _artSlave.waist < 11 && _artSlave.waist > -11>>
-	<<if _artSlave.weight >= 191>>
-		<<set _torsoSize = "Obese">>
-	<<elseif _artSlave.weight < 191 && _artSlave.weight >= 131>>
-		<<set _torsoSize = "Fat">>
-	<<elseif _artSlave.weight < 131 && _artSlave.weight >= 31>>
-		<<set _torsoSize = "Chubby">>
-	<<elseif _artSlave.weight < 31 && _artSlave.weight >= 0>>
-		<<set _torsoSize = "Normal">>
-	<<elseif _artSlave.weight < 0 && _artSlave.weight > -96>>
-		<<set _torsoSize = "Hourglass">>
-	<<elseif _artSlave.weight <= -96>>
-		<<set _torsoSize = "Unnatural">>
-	<</if>>
-<<elseif _artSlave.waist <= -11 && _artSlave.waist > -41>>
-	<<if _artSlave.weight >= 161>>
-		<<set _torsoSize = "Fat">>
-	<<elseif _artSlave.weight < 161 && _artSlave.weight >= 96>>
-		<<set _torsoSize = "Chubby">>
-	<<elseif _artSlave.weight < 96 && _artSlave.weight >= 11>>
-		<<set _torsoSize = "Normal">>
-	<<elseif _artSlave.weight < 11 && _artSlave.weight > -31>>
-		<<set _torsoSize = "Hourglass">>
-	<<elseif _artSlave.weight <= -31>>
-		<<set _torsoSize = "Unnatural">>
-	<</if>>
-<<elseif _artSlave.waist <= -41 && _artSlave.waist > -96>>
-	<<if _artSlave.weight >= 191>>
-		<<set _torsoSize = "Fat">>
-	<<elseif _artSlave.weight < 191 && _artSlave.weight >= 131>>
-		<<set _torsoSize = "Chubby">>
-	<<elseif _artSlave.weight < 131 && _artSlave.weight >= 31>>
-		<<set _torsoSize = "Normal">>
-	<<elseif _artSlave.weight < 31 && _artSlave.weight > -11>>
-		<<set _torsoSize = "Hourglass">>
-	<<elseif _artSlave.weight <= -11>>
-		<<set _torsoSize = "Unnatural">>
-	<</if>>
-<<elseif _artSlave.waist <= -96>>
-	<<if _artSlave.weight >= 161>>
-		<<set _torsoSize = "Chubby">>
-	<<elseif _artSlave.weight < 161 && _artSlave.weight >= 96>>
-		<<set _torsoSize = "Normal">>
-	<<elseif _artSlave.weight < 96 && _artSlave.weight > 0>>
-		<<set _torsoSize = "Hourglass">>
-	<<elseif _artSlave.weight <= 0>>
-		<<set _torsoSize = "Unnatural">>
-	<</if>>
-<</if>>
-
-<<set _art = "Art_Vector_Torso_"+_torsoSize >>
-<<include _art >>
-
-
-<<if _artSlave.muscles >= 30>>
-	<<if _artSlave.muscles >= 97>>
-		<<if _torsoSize == "Obese">>
-			<<include Art_Vector_Torso_Obese_MHeavy>>
-		<<elseif _torsoSize == "Fat">>
-			<<include Art_Vector_Torso_Fat_MHeavy>>
-		<<elseif _torsoSize == "Chubby">>
-			<<include Art_Vector_Torso_Chubby_MHeavy>>
-		<<elseif _torsoSize == "Normal">>
-			<<include Art_Vector_Torso_Normal_MHeavy>>
-		<<elseif _torsoSize == "Hourglass">>
-			<<include Art_Vector_Torso_Hourglass_MHeavy>>
-		<<elseif _torsoSize == "Unnatural">>
-			<<include Art_Vector_Torso_Unnatural_MHeavy>>
-		<</if>>
-	<<elseif _artSlave.muscles >= 62 && _artSlave.muscles < 97>>
-		<<if _torsoSize == "Obese">>
-			<<include Art_Vector_Torso_Obese_MMedium>>
-		<<elseif _torsoSize == "Fat">>
-			<<include Art_Vector_Torso_Fat_MMedium>>
-		<<elseif _torsoSize == "Chubby">>
-			<<include Art_Vector_Torso_Chubby_MMedium>>
-		<<elseif _torsoSize == "Normal">>
-			<<include Art_Vector_Torso_Normal_MMedium>>
-		<<elseif _torsoSize == "Hourglass">>
-			<<include Art_Vector_Torso_Hourglass_MMedium>>
-		<<elseif _torsoSize == "Unnatural">>
-			<<include Art_Vector_Torso_Unnatural_MMedium>>
-		<</if>>
-	<<elseif _artSlave.muscles < 62>>
-		<<if _torsoSize == "Obese">>
-			<<include Art_Vector_Torso_Obese_MLight>>
-		<<elseif _torsoSize == "Fat">>
-			<<include Art_Vector_Torso_Fat_MLight>>
-		<<elseif _torsoSize == "Chubby">>
-			<<include Art_Vector_Torso_Chubby_MLight>>
-		<<elseif _torsoSize == "Normal">>
-			<<include Art_Vector_Torso_Normal_MLight>>
-		<<elseif _torsoSize == "Hourglass">>
-			<<include Art_Vector_Torso_Hourglass_MLight>>
-		<<elseif _torsoSize == "Unnatural">>
-			<<include Art_Vector_Torso_Unnatural_MLight>>
-		<</if>>
-	<</if>>
-<</if>>
+<<= ArtVectorTorso(_artSlave)>>
diff --git a/src/art/vector/Torso_Outfit.tw b/src/art/vector/Torso_Outfit.tw
index 5659b8f6422ad708bd1c79e214ca676bbf1d5c32..b8cbd0244f853a5970cea857ef86c6b8021e60d7 100644
--- a/src/art/vector/Torso_Outfit.tw
+++ b/src/art/vector/Torso_Outfit.tw
@@ -1,40 +1,3 @@
 :: Art_Vector_Torso_Outfit_ [nobr]
 
-/* BEWARE: _torsoSize is set by Art_Vector_Torso_ */
-
-/* TODO: latex catsuit should cover vagina and its piercings, too */
-
-<<unset _art>>
-
-<<set _clothes = _artSlave.clothes>>
-<<switch _artSlave.clothes >>
-/* handling special cases */
-<<case "a cybersuit" >>
-	<<set _clothes = "restrictive latex">> /* cybersuit uses restrictive latex art */
-<<case "a slutty schutzstaffel uniform" >>
-	<<set _clothes = "a schutzstaffel uniform">> /* slutty schutzstaffel uniform uses schutzstaffel uniform art */
-<<case "a niqab and abaya" "a burqa">>
-	<<set _clothes = "a hijab and abaya">>
-<<case "a hijab and blouse">>
-	<<set _clothes = "a hijab and blouse">>
-<</switch>>
-<<switch _clothes >> /* select available clothes */
-<<case "a ball gown" "a bunny outfit" "a chattel habit" "a cheerleader outfit" "a comfortable bodysuit" "a cybersuit" "a fallen nuns habit" "a halter top dress" "a hijab and abaya" "a huipil" "a kimono" "a leotard" "a maternity dress" "a military uniform" "a mini dress" "a monokini" "an apron" "a nice maid outfit" "a nice nurse outfit" "a penitent nuns habit" "a red army uniform" "a scalemail bikini" "a schoolgirl outfit" "a schutzstaffel uniform" "a slave gown" "a slutty maid outfit" "a slutty nurse outfit" "a slutty outfit" "a slutty qipao" "a slutty schutzstaffel uniform" "a string bikini" "a succubus outfit" "a toga" "attractive lingerie" "attractive lingerie for a pregnant woman" "battledress" "body oil" "chains" "clubslut netting" "conservative clothing" "cutoffs and a t-shirt" "harem gauze" "nice business attire" "restrictive latex" "shibari ropes" "slutty business attire" "slutty jewelry" "spats and a tank top" "stretch pants and a crop-top" "uncomfortable straps" "Western clothing" "a long qipao" "battlearmor" "a mounty outfit" "lederhosen" "a dirndl" "a biyelgee costume" "striped panties" "a klan robe" "a slutty klan robe" "a hijab and blouse" "a burkini" "panties" "panties and pasties" "a thong" "cutoffs" "a bra" "striped underwear" "a striped bra" "a button-up shirt" "a button-up shirt and panties" "sport shorts" "sport shorts and a sports bra" "sport shorts and a t-shirt" "a sports bra" "a t-shirt" "a t-shirt and thong" "a t-shirt and panties" "jeans" "leather pants" "leather pants and pasties" "leather pants and a tube top" "a tube top and thong" "a tube top" "boyshorts" "a skimpy loincloth" "a tank-top" "a tank-top and panties" "a t-shirt and jeans" "an oversized t-shirt" "an oversized t-shirt and boyshorts" "a sweater" "a sweater and cutoffs" "a sweater and panties" "a one-piece swimsuit" "a police uniform" "a hanbok" "a gothic lolita dress" "kitty lingerie">>
-	<<set _art = "Art_Vector_Torso_Outfit_"+clothing2artSuffix(_clothes)+"_"+_torsoSize >>
-	<<include _art >>
-<</switch>>
-
-/* shiny clothing */
-<<if $seeVectorArtHighlights == 1>>
-	<<if _artSlave.fuckdoll != 0 || _artSlave.clothes == "restrictive latex" || _artSlave.clothes == "a latex catsuit">>
-		<<if _artSlave.amp != 0>>
-			/* this shiny shoulder only looks sensible on amputees */
-			<<include Art_Vector_Torso_Outfit_Shine_Shoulder>>
-		<</if>>
-		<<if _artSlave.preg <= 0>>
-			/* the hip can be hidden by pregnant belly */
-			<<set _art = "Art_Vector_Torso_Outfit_Shine_"+_torsoSize >>
-			<<include _art >>
-		<</if>>
-	<</if>>
-<</if>>
+<<= ArtVectorTorsoOutfit(_artSlave)>>
diff --git a/src/endWeek/saRest.tw b/src/endWeek/saRest.tw
index 747068ea1f9e7530d86ca6ced4912102d143b9ac..7d989c883917eead9d333a409ad21571a4f3876a 100644
--- a/src/endWeek/saRest.tw
+++ b/src/endWeek/saRest.tw
@@ -64,7 +64,7 @@ window.saRest = function saRest(slave) {
 			} else {
 				t += `an incident without lasting effect.`;
 			}
-			V.cash += Math.trunc(V.FResult*_vignette.effect);
+			cashX(Math.trunc(V.FResult*_vignette.effect), "rest", slave);
 		} else if (_vignette.type == "devotion") {
 			if (_vignette.effect > 0) {
 				if (slave.devotion > 50) {
diff --git a/src/endWeek/saServant.tw b/src/endWeek/saServant.tw
index 8750536718ab71a028a528c25df09e61f5d1e9eb..ff52721fef36c173524570e89eaceaae7a7b067d 100644
--- a/src/endWeek/saServant.tw
+++ b/src/endWeek/saServant.tw
@@ -30,12 +30,12 @@ window.saServant = function saServant(slave) {
 				}
 				if (!(canHear(slave))) {
 					t += ` However, ${his} inability to hear often leaves ${him} oblivious to ${V.Stewardess.slaveName}'s orders, limiting their meaningful interactions.`;
-					V.cash += (V.stewardessBonus/4);
+					cashX(V.stewardessBonus/4, servantsQuarters, slave);
 				} else if ((slave.hears == -1 && slave.earwear != "hearing aids") || (slave.hears == 0 && slave.earwear == "muffling ear plugs")) {
 					t += ` However, ${he} often doesn't catch what ${V.Stewardess.slaveName} says, leading to frustration, confusion and less work done.`;
-					V.cash += (V.stewardessBonus/2);
+					cashX(V.stewardessBonus/2, servantsQuarters, slave);
 				} else {
-					V.cash += V.stewardessBonus;
+					cashX(V.stewardessBonus, servantsQuarters, slave);
 				}
 			}
 		}
@@ -122,7 +122,7 @@ window.saServant = function saServant(slave) {
 			} else {
 				t += `an incident without lasting effect.`;
 			}
-			V.cash += Math.trunc(V.FResult*_vignette.effect);
+			cashX(Math.trunc(V.FResult*_vignette.effect), servantsQuarters, slave);
 		} else if (_vignette.type == "devotion") {
 			if (_vignette.effect > 0) {
 				if (slave.devotion > 50) {
diff --git a/src/events/intro/initNationalities.tw b/src/events/intro/initNationalities.tw
index dc95f0183bf06e2aef673aadd3c027ebb08333ef..ca550074a7712e906291f629ccfba368d4d871a1 100644
--- a/src/events/intro/initNationalities.tw
+++ b/src/events/intro/initNationalities.tw
@@ -14,7 +14,7 @@
 
 <<if $PC.career == "wealth">>
 	<<set $trinkets.push("a collection of diplomas from expensive schools")>>
-	<<set $cash += 10000>>
+	<<run cashX(10000, "personalBusiness")>>
 <<elseif $PC.career == "capitalist">>
 	<<set $trinkets.push("a framed low denomination piece of paper money from your native country")>>
 <<elseif $PC.career == "mercenary">>
@@ -49,7 +49,7 @@
 <</if>>
 
 <<if $PC.rumor == "wealth">>
-	<<set $cash += 10000>>
+	<<run cashX(10000, "personalBusiness")>>
 <<elseif $PC.rumor == "social engineering">>
 	<<set $FSAnnounced = 1>>
 	<<set $FSCredits = 1>>
diff --git a/src/events/intro/introSummary.tw b/src/events/intro/introSummary.tw
index d25f7183d47f3e9c0d7c9257f84173f08816054c..f4f66391c462da1edc3a91fc9a4d33ebc275759c 100644
--- a/src/events/intro/introSummary.tw
+++ b/src/events/intro/introSummary.tw
@@ -1179,4 +1179,4 @@ __''Mods''__
 <</if>>
 
 <br><br>
-[[Cheat Start|init Nationalities][$cash += 1000000,$girls = 3,$rep = 20000,$dojo += 1,$cheatMode = 1,$seeDesk = 0, $seeFCNN = 0, $sortSlavesBy = "devotion",$sortSlavesOrder = "descending",$sortSlavesMain = 0,$rulesAssistantMain = 1,$abbreviateDevotion = 1,$abbreviateRules = 1,$abbreviateClothes = 2,$abbreviateHealth = 1,$abbreviateDiet = 1,$abbreviateDrugs = 1,$abbreviateRace = 1,$abbreviateNationality = 1,$abbreviateGenitalia = 1,$abbreviatePhysicals = 1,$abbreviateSkills = 1,$abbreviateMental = 2,$PC.trading = 100,$PC.warfare = 100,$PC.slaving = 100,$PC.engineering = 100,$PC.medicine = 100,$PC.hacking = 100]] | //Intended for debugging: may have unexpected effects//
+[[Cheat Start|init Nationalities][cashX(1000000, "cheating"),$girls = 3,$rep = 20000,$dojo += 1,$cheatMode = 1,$seeDesk = 0, $seeFCNN = 0, $sortSlavesBy = "devotion",$sortSlavesOrder = "descending",$sortSlavesMain = 0,$rulesAssistantMain = 1,$abbreviateDevotion = 1,$abbreviateRules = 1,$abbreviateClothes = 2,$abbreviateHealth = 1,$abbreviateDiet = 1,$abbreviateDrugs = 1,$abbreviateRace = 1,$abbreviateNationality = 1,$abbreviateGenitalia = 1,$abbreviatePhysicals = 1,$abbreviateSkills = 1,$abbreviateMental = 2,$PC.trading = 100,$PC.warfare = 100,$PC.slaving = 100,$PC.engineering = 100,$PC.medicine = 100,$PC.hacking = 100]] | //Intended for debugging: may have unexpected effects//
diff --git a/src/facilities/farmyard/farmyard.tw b/src/facilities/farmyard/farmyard.tw
index 1d1e6534839913df0a3fe63676d568094aaf40ea..5f3d2eb934c8f9f2149576c24225bcaff1ac3e88 100644
--- a/src/facilities/farmyard/farmyard.tw
+++ b/src/facilities/farmyard/farmyard.tw
@@ -98,7 +98,7 @@ $farmyardNameCaps is an oasis of growth in the midst of the jungle of steel and
 
 <<set _Tmult0 = Math.trunc($farmyard*1000*$upgradeMultiplierArcology)>>
 <br>It can support $farmyard farmhands. Currently there <<if $farmyardSlaves == 1>>is<<else>>are<</if>> $farmyardSlaves farmhand<<if $farmyardSlaves != 1>>s<</if>> at $farmyardName.
-[[Expand the farmyard|Farmyard][$cash -= _Tmult0, $farmyard += 5, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>> and will increase upkeep costs//
+[[Expand the farmyard|Farmyard][cashX(forceNeg(_Tmult0), "capEx"), $farmyard += 5, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>> and will increase upkeep costs//
 
 <br><br>
 <<if $Farmer != 0>>
diff --git a/src/facilities/farmyard/farmyardReport.tw b/src/facilities/farmyard/farmyardReport.tw
index b8ed59817a93429c33b7999764a0d8aec3108cb7..7904018c519c626d061ca1c8859fd8c21e2c980c 100644
--- a/src/facilities/farmyard/farmyardReport.tw
+++ b/src/facilities/farmyard/farmyardReport.tw
@@ -405,14 +405,17 @@
 		<<set $slaves[$i].boobs += _growth>>
 	<</if>>
 	<<if $slaves[$i].prostate == 1>>
-		<<set $slaves[$i].prostate = 2, $slaves[$i].health -= 10, $cash -= $surgeryCost>>
+		<<set $slaves[$i].prostate = 2, $slaves[$i].health -= 10>>
+		<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $slaves[$i])>>
 	<</if>>
 	<<if $slaves[$i].vasectomy == 1>>
-		<<set $slaves[$i].vasectomy = 0, $slaves[$i].health -= 10, $cash -= $surgeryCost>>
+		<<set $slaves[$i].vasectomy = 0, $slaves[$i].health -= 10>>
+		<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $slaves[$i])>>
 	<</if>>
 	<<if ($dairySlimMaintain == 0)>>
 		<<if ($slaves[$i].lactation < 2) && ($slaves[$i].boobs > 300 || $slaves[$i].dick == 0 || $slaves[$i].lactation == 1 || $dairyImplantsSetting == 1) && $dairyImplantsSetting != 2>>
-			<<set $slaves[$i].lactation = 2, $slaves[$i].health -= 10, $cash -= $surgeryCost>>
+			<<set $slaves[$i].lactation = 2, $slaves[$i].health -= 10>>
+			<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $slaves[$i])>>
 		<</if>>
 	<</if>>
 	<<if ($dairyFeedersUpgrade == 1) && ($dairyFeedersSetting > 0)>>
@@ -791,11 +794,11 @@
 				<</if>>
 			<<elseif ($slaves[$i].pregKnown == 1)>>
 				<<if ($dairyPregSetting > 2)>>
-					<<set $cash += 100>>
+					<<run cashX(100, "milked", $slaves[$i])>>
 				<<elseif ($dairyPregSetting > 1)>>
-					<<set $cash += 50>>
+					<<run cashX(50, "milked", $slaves[$i])>>
 				<<else>>
-					<<set $cash += 25>>
+					<<run cashX(25, "milked", $slaves[$i])>>
 				<</if>>
 				<<if ($dairyPregSetting > 1) && ($slaves[$i].vagina < 4)>>
 					<<set $slaves[$i].vagina++>>
@@ -824,36 +827,47 @@
 	<<set _tempCash = $cash>>
 	<<set _seed = (100*$bioreactorsXY) + (100*$bioreactorsHerm), _cumWeek += _seed>>
 	<<if ($arcologies[0].FSPastoralistLaw == 1)>>
-		<<set $cash += _seed*random(40,50)>>
+		<<set _cashX = _seed*random(40,50)>>
+		<<run cashX(_cashX, "menialBioreactors")>>
 	<<elseif ($arcologies[0].FSPastoralist != "unset")>>
-		<<set $cash += _seed*(random(25,35)+Math.trunc($arcologies[0].FSPastoralist/10))>>
+		<<set _cashX = _seed*(random(25,35)+Math.trunc($arcologies[0].FSPastoralist/10))>>
+		<<run cashX(_cashX, "menialBioreactors")>>
 	<<else>>
-		<<set $cash += _seed*random(25,35)>>
+		<<set _cashX = _seed*random(25,35)>>
+		<<run cashX(_cashX, "menialBioreactors")>>
 	<</if>>
 	<<set _seed = (2*$bioreactorsXX) + (2*$bioreactorsHerm), _femCumWeek += _seed>>
 	<<if ($arcologies[0].FSPastoralistLaw == 1)>>
-		<<set $cash += _seed*random(40,50)>>
+		<<set _cashX = _seed*random(40,50)>>
+		<<run cashX(_cashX, "menialBioreactors")>>
 	<<elseif ($arcologies[0].FSPastoralist != "unset")>>
-		<<set $cash += _seed*(random(25,35)+Math.trunc($arcologies[0].FSPastoralist/10))>>
+		<<set _cashX = _seed*(random(25,35)+Math.trunc($arcologies[0].FSPastoralist/10))>>
+		<<run cashX(_cashX, "menialBioreactors")>>
 	<<else>>
-		<<set $cash += _seed*random(25,35)>>
+		<<set _cashX = _seed*random(25,35)>>
+		<<run cashX(_cashX, "menialBioreactors")>>
 	<</if>>
 	<<set _seed = (800*$bioreactorsXX) + (700*$bioreactorsBarren) + (600*$bioreactorsXY) + (600*$bioreactorsHerm), _milkWeek += _seed>>
 	<<if ($arcologies[0].FSPastoralistLaw == 1)>>
-		<<set $cash += _seed*(13+Math.trunc($arcologies[0].FSPastoralist/30))>>
+		<<set _cashX = _seed*(13+Math.trunc($arcologies[0].FSPastoralist/30))>>
+		<<run cashX(_cashX, "menialBioreactors")>>
 	<<elseif ($arcologies[0].FSPastoralist != "unset")>>
-		<<set $cash += _seed*(8+Math.trunc($arcologies[0].FSPastoralist/30))>>
+		<<set _cashX = _seed*(8+Math.trunc($arcologies[0].FSPastoralist/30))>>
+		<<run cashX(_cashX, "menialBioreactors")>>
 	<<else>>
-		<<set $cash += _seed*9>>
+		<<set _cashX = _seed*9>>
+		<<run cashX(_cashX, "menialBioreactors")>>
 	<</if>>
 	<br><br>_Tadd permanently converted biological "machine<<if _Tadd > 1>>s<</if>>" produce<<if _Tadd == 1>>s<</if>> @@.yellowgreen;<<print cashFormat($cash-_tempCash)>>@@ income.
 <</if>>
 
 <<if $inflatedSlavesMilk > 0>>
-	<<set $cash -= Math.trunc(((600*($inflatedSlavesMilk)+8)+random(50,200)))>>
+	<<set _cashX -= Math.trunc(((600*($inflatedSlavesMilk)+8)+random(50,200)))>>
+	<<run cashX(_cashX, "milked")>>
 <</if>>
 <<if $inflatedSlavesCum > 0>>
-	<<set $cash -= Math.trunc(((300*($inflatedSlavesCum+8))+random(25,100)))>>
+	<<set _cashX -= Math.trunc(((300*($inflatedSlavesCum+8))+random(25,100)))>>
+	<<run cashX(_cashX, "milked")>>
 <</if>>
 
 <<set _profits = $cash-_oldCash>>
diff --git a/src/facilities/nursery/nursery.tw b/src/facilities/nursery/nursery.tw
index a3f6459150023a4c8bd22ea609f857e84d1bb210..bdbce35f4f2f307e19a7d322ebf4b749ac37e2ed 100644
--- a/src/facilities/nursery/nursery.tw
+++ b/src/facilities/nursery/nursery.tw
@@ -101,7 +101,7 @@ $nurseryNameCaps
 	<br>
 <</if>>
 <<if $nurseryNannies < 5>>
-	[[Expand the nursery|Nursery][$cash -= _Tmult0, $nurseryNannies += 1, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>> and will increase upkeep costs//
+	[[Expand the nursery|Nursery][cashX(forceNeg(_Tmult0), "capEx"), $nurseryNannies += 1, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>> and will increase upkeep costs//
 <<else>>
 	//$nurseryNameCaps can support a maximum of 5 slaves//
 <</if>>
diff --git a/src/facilities/nursery/nurseryReport.tw b/src/facilities/nursery/nurseryReport.tw
index c7c90d47992426e98e74d659ee1c57a477e6bdd3..0ceaa3bdc167da45ed6a7b87366d60df0d360d75 100644
--- a/src/facilities/nursery/nurseryReport.tw
+++ b/src/facilities/nursery/nurseryReport.tw
@@ -81,7 +81,7 @@
 	<</if>>
 	<<if (_NL < $nursery)>>
 		<<set _seed = random(1,10)+(($nursery-_NL)*(random(150,170)+(_idleBonus*10)))>>
-		<<set $cash += _seed>>
+		<<run cashX(_seed, "nursery", $Matron)>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;Since $he doesn't have enough children to occupy all $him time, the nursery takes in citizens' children on a contract basis and $he cares for them too, earning @@.yellowgreen;<<print cashFormat(_seed)>>.@@
 		<<if ($arcologies[0].FSRepopulationFocus > 0) && (_NL == 0)>>
 			Society @@.green;loves@@ the way you are raising more children for $arcologies[0].name.
diff --git a/src/init/storyInit.tw b/src/init/storyInit.tw
index d1c8b524f10319da46f672a1c45cfbc5a943beab..572b92132d72dc7c5d4ae07bc2b67569dcc65c87 100644
--- a/src/init/storyInit.tw
+++ b/src/init/storyInit.tw
@@ -185,6 +185,8 @@ You should have received a copy of the GNU General Public License along with thi
 <<set $organs = []>>
 <<set $ArcadeiIDs = [], $BrothiIDs = [], $CellBiIDs = [], $CliniciIDs = [], $ClubiIDs = [], $DairyiIDs = [], $FarmyardiIDs = [], $HGSuiteiIDs = [], $MastSiIDs = [], $SchlRiIDs = [], $ServQiIDs = [], $SpaiIDs = [], $NurseryiIDs = []>>
 
+<<setupLastWeeksCash>>
+
 <<if ndef $saveImported>>
 	<<set $saveImported = 0>>
 <</if>>
@@ -311,10 +313,7 @@ You should have received a copy of the GNU General Public License along with thi
 
 	/* Pregmod specific */
 	<<set $economy = 100>>
-	<<set $antiWeatherFreeze = 0>>
 	<<set $difficultySwitch = 0>>
-	<<set $econWeatherDamage = 0>>
-	<<set $disasterResponse = 0>>
 	<<set $neighboringArcologies = 3>>
 	<<set $newDescriptions = 0>>
 	<<set $familyTesting = 0>>
@@ -352,7 +351,7 @@ You should have received a copy of the GNU General Public License along with thi
 
 	<<if $freshPC == 0>>
 		<<if def $arcologies[0].prosperity>>
-			<<set $cash += 250*$arcologies[0].prosperity*$arcologies[0].ownership>>
+			<<run cashX((250*$arcologies[0].prosperity*$arcologies[0].ownership), "personalBusiness")>>
 		<</if>>
 		<<set $cash = Math.clamp(1000*Math.trunc($cash/100000), 5000, 1000000)>>
 		<<if $retainCareer == 0>>
@@ -1445,6 +1444,11 @@ erectileImplant: 0
 /* Career-skill gain */
 <<set $masteredXP = 200>>
 
+/* Weather effect on economy */
+<<set $antiWeatherFreeze = 0>>
+<<set $econWeatherDamage = 0>>
+<<set $disasterResponse = 0>>
+
 <<include "secInit">>
 
 <<set $postSexCleanUp = 1>>
diff --git a/src/interaction/cyberConfig.tw b/src/interaction/cyberConfig.tw
index b46c9cb30332988f239c52025fa854a0a5f2cd65..7493591e09e16514b43931b19c203ad01a42b3aa 100644
--- a/src/interaction/cyberConfig.tw
+++ b/src/interaction/cyberConfig.tw
@@ -32,52 +32,52 @@
 		Swap out $his lenses:
 		<br>
 		Iris Color:
-		[[Blue|cyberConfig][$activeSlave.eyeColor = "blue",$temp = 2,$cash -= $modCost]]
-		| [[Black|cyberConfig][$activeSlave.eyeColor = "black",$temp = 2,$cash -= $modCost]]
-		| [[Brown|cyberConfig][$activeSlave.eyeColor = "brown",$temp = 2,$cash -= $modCost]]
-		| [[Green|cyberConfig][$activeSlave.eyeColor = "green",$temp = 2,$cash -= $modCost]]
-		| [[Turquoise|cyberConfig][$activeSlave.eyeColor = "turquoise",$temp = 2,$cash -= $modCost]]
-		| [[Sky-Blue|cyberConfig][$activeSlave.eyeColor = "sky-blue",$temp = 2,$cash -= $modCost]]
-		| [[Hazel|cyberConfig][$activeSlave.eyeColor = "hazel",$temp = 2,$cash -= $modCost]]
-		| [[Pale-Grey|cyberConfig][$activeSlave.eyeColor = "pale-grey",$temp = 2,$cash -= $modCost]]
-		| [[White|cyberConfig][$activeSlave.eyeColor = "white",$temp = 2,$cash -= $modCost]]
-		| [[Pink|cyberConfig][$activeSlave.eyeColor = "pink",$temp = 2,$cash -= $modCost]]
-		| [[Amber|cyberConfig][$activeSlave.eyeColor = "amber",$temp = 2,$cash -= $modCost]]
-		| [[Red|cyberConfig][$activeSlave.eyeColor = "red",$temp = 2,$cash -= $modCost]]
-		| [[Yellow|cyberConfig][$activeSlave.eyeColor = "yellow",$temp = 2,$cash -= $modCost]]
-		| [[Orange|cyberConfig][$activeSlave.eyeColor = "orange",$temp = 2,$cash -= $modCost]]
+		[[Blue|cyberConfig][$activeSlave.eyeColor = "blue",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
+		| [[Black|cyberConfig][$activeSlave.eyeColor = "black",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
+		| [[Brown|cyberConfig][$activeSlave.eyeColor = "brown",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
+		| [[Green|cyberConfig][$activeSlave.eyeColor = "green",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
+		| [[Turquoise|cyberConfig][$activeSlave.eyeColor = "turquoise",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
+		| [[Sky-Blue|cyberConfig][$activeSlave.eyeColor = "sky-blue",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
+		| [[Hazel|cyberConfig][$activeSlave.eyeColor = "hazel",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
+		| [[Pale-Grey|cyberConfig][$activeSlave.eyeColor = "pale-grey",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
+		| [[White|cyberConfig][$activeSlave.eyeColor = "white",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
+		| [[Pink|cyberConfig][$activeSlave.eyeColor = "pink",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
+		| [[Amber|cyberConfig][$activeSlave.eyeColor = "amber",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
+		| [[Red|cyberConfig][$activeSlave.eyeColor = "red",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
+		| [[Yellow|cyberConfig][$activeSlave.eyeColor = "yellow",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
+		| [[Orange|cyberConfig][$activeSlave.eyeColor = "orange",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
 		<br>
 		Pupil Shape:
-		<br>[[Circular|cyberConfig][$activeSlave.pupil = "circular",$temp = 2,$cash -= $modCost]]
-		| [[Catlike|cyberConfig][$activeSlave.pupil = "catlike",$temp = 2,$cash -= $modCost]]
-		| [[Serpent-Like|cyberConfig][$activeSlave.pupil = "serpent-like",$temp = 2,$cash -= $modCost]]
-		| [[Devilish|cyberConfig][$activeSlave.pupil = "devilish",$temp = 2,$cash -= $modCost]]
-		| [[Demonic|cyberConfig][$activeSlave.pupil = "demonic",$temp = 2,$cash -= $modCost]]
-		| [[Hypnotic|cyberConfig][$activeSlave.pupil = "hypnotic",$temp = 2,$cash -= $modCost]]
-		| [[Heart-Shaped|cyberConfig][$activeSlave.pupil = "heart-shaped",$temp = 2,$cash -= $modCost]]
-		| [[Wide-Eyed|cyberConfig][$activeSlave.pupil = "wide-eyed",$temp = 2,$cash -= $modCost]]
-		| [[Almond-Shaped|cyberConfig][$activeSlave.pupil = "almond-shaped",$temp = 2,$cash -= $modCost]]
-		| [[Bright|cyberConfig][$activeSlave.pupil = "bright",$temp = 2,$cash -= $modCost]]
-		| [[Teary|cyberConfig][$activeSlave.pupil = "teary",$temp = 2,$cash -= $modCost]]
-		| [[Vacant|cyberConfig][$activeSlave.pupil = "vacant",$temp = 2,$cash -= $modCost]]
-		| [[Star-Shaped|cyberConfig][$activeSlave.pupil = "star-shaped",$temp = 2,$cash -= $modCost]]
-		| [[Goat-Like|cyberConfig][$activeSlave.pupil = "goat-like",$temp = 2,$cash -= $modCost]]
+		<br>[[Circular|cyberConfig][$activeSlave.pupil = "circular",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
+		| [[Catlike|cyberConfig][$activeSlave.pupil = "catlike",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
+		| [[Serpent-Like|cyberConfig][$activeSlave.pupil = "serpent-like",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
+		| [[Devilish|cyberConfig][$activeSlave.pupil = "devilish",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
+		| [[Demonic|cyberConfig][$activeSlave.pupil = "demonic",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
+		| [[Hypnotic|cyberConfig][$activeSlave.pupil = "hypnotic",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
+		| [[Heart-Shaped|cyberConfig][$activeSlave.pupil = "heart-shaped",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
+		| [[Wide-Eyed|cyberConfig][$activeSlave.pupil = "wide-eyed",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
+		| [[Almond-Shaped|cyberConfig][$activeSlave.pupil = "almond-shaped",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
+		| [[Bright|cyberConfig][$activeSlave.pupil = "bright",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
+		| [[Teary|cyberConfig][$activeSlave.pupil = "teary",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
+		| [[Vacant|cyberConfig][$activeSlave.pupil = "vacant",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
+		| [[Star-Shaped|cyberConfig][$activeSlave.pupil = "star-shaped",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
+		| [[Goat-Like|cyberConfig][$activeSlave.pupil = "goat-like",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
 		<br>
 		Sclera Colors:
-		[[White|cyberConfig][$activeSlave.sclerae = "white",$temp = 2,$cash -= $modCost]]
-		| [[Blue|cyberConfig][$activeSlave.sclerae = "blue",$temp = 2,$cash -= $modCost]]
-		| [[Black|cyberConfig][$activeSlave.sclerae = "black",$temp = 2,$cash -= $modCost]]
-		| [[Brown|cyberConfig][$activeSlave.sclerae = "brown",$temp = 2,$cash -= $modCost]]
-		| [[Green|cyberConfig][$activeSlave.sclerae = "green",$temp = 2,$cash -= $modCost]]
-		| [[Turquoise|cyberConfig][$activeSlave.sclerae = "turquoise",$temp = 2,$cash -= $modCost]]
-		| [[Sky-Blue|cyberConfig][$activeSlave.sclerae = "sky-blue",$temp = 2,$cash -= $modCost]]
-		| [[Hazel|cyberConfig][$activeSlave.sclerae = "hazel",$temp = 2,$cash -= $modCost]]
-		| [[Pale-Grey|cyberConfig][$activeSlave.sclerae = "pale-grey",$temp = 2,$cash -= $modCost]]
-		| [[Pink|cyberConfig][$activeSlave.sclerae = "pink",$temp = 2,$cash -= $modCost]]
-		| [[Amber|cyberConfig][$activeSlave.sclerae = "amber",$temp = 2,$cash -= $modCost]]
-		| [[Red|cyberConfig][$activeSlave.sclerae = "red",$temp = 2,$cash -= $modCost]]
-		| [[Yellow|cyberConfig][$activeSlave.sclerae = "yellow",$temp = 2,$cash -= $modCost]]
-		| [[Orange|cyberConfig][$activeSlave.sclerae = "orange",$temp = 2,$cash -= $modCost]]
+		[[White|cyberConfig][$activeSlave.sclerae = "white",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
+		| [[Blue|cyberConfig][$activeSlave.sclerae = "blue",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
+		| [[Black|cyberConfig][$activeSlave.sclerae = "black",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
+		| [[Brown|cyberConfig][$activeSlave.sclerae = "brown",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
+		| [[Green|cyberConfig][$activeSlave.sclerae = "green",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
+		| [[Turquoise|cyberConfig][$activeSlave.sclerae = "turquoise",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
+		| [[Sky-Blue|cyberConfig][$activeSlave.sclerae = "sky-blue",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
+		| [[Hazel|cyberConfig][$activeSlave.sclerae = "hazel",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
+		| [[Pale-Grey|cyberConfig][$activeSlave.sclerae = "pale-grey",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
+		| [[Pink|cyberConfig][$activeSlave.sclerae = "pink",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
+		| [[Amber|cyberConfig][$activeSlave.sclerae = "amber",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
+		| [[Red|cyberConfig][$activeSlave.sclerae = "red",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
+		| [[Yellow|cyberConfig][$activeSlave.sclerae = "yellow",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
+		| [[Orange|cyberConfig][$activeSlave.sclerae = "orange",$temp = 2,cashX(forceNeg($modCost), "slaveSurgery", $activeSlave)]]
 	<</if>>
 
 	<<if $activeSlave.earImplant == 1>><br><br>&nbsp;
diff --git a/src/js/DefaultRules.tw b/src/js/DefaultRules.tw
index 6e632eea575794b6c0f800489e40ba198f7a4a48..443ab177c628a58fa71331f22d3152fdca4472f7 100644
--- a/src/js/DefaultRules.tw
+++ b/src/js/DefaultRules.tw
@@ -386,7 +386,7 @@ window.DefaultRules = (function() {
 					if (slave.eyes == -1) {
 						if (slave.eyewear != "corrective glasses") {
 							slave.eyewear = "corrective glasses";
-							V.cash -= V.modCost;
+							cashX(forceNeg(V.modCost), "slaveMod", slave);
 							r += `<br>${slave.slaveName} has been given corrective glasses.`;
 						}
 					} else {
@@ -401,7 +401,7 @@ window.DefaultRules = (function() {
 					if (slave.eyes == -1) {
 						if (slave.eyewear != "corrective contacts") {
 							slave.eyewear = "corrective contacts";
-							V.cash -= V.modCost;
+							cashX(forceNeg(V.modCost), "slaveMod", slave);
 							r += `<br>${slave.slaveName} has been given corrective contacts.`;
 						}
 					} else {
@@ -416,7 +416,7 @@ window.DefaultRules = (function() {
 					if (slave.eyes > -1) {
 						if (slave.eyewear != "blurring glasses") {
 							slave.eyewear = "blurring glasses";
-							V.cash -= V.modCost;
+							cashX(forceNeg(V.modCost), "slaveMod", slave);
 							r += `<br>${slave.slaveName} has been given blurring glasses.`;
 						}
 					} else {
@@ -431,7 +431,7 @@ window.DefaultRules = (function() {
 					if (slave.eyes > -1) {
 						if (slave.eyewear != "blurring contacts") {
 							slave.eyewear = "blurring contacts";
-							V.cash -= V.modCost;
+							cashX(forceNeg(V.modCost), "slaveMod", slave);
 							r += `<br>${slave.slaveName} has been given blurring contacts.`;
 						}
 					} else {
@@ -446,13 +446,13 @@ window.DefaultRules = (function() {
 					if (slave.eyes == -1) {
 						if (slave.eyewear != "corrective glasses") {
 							slave.eyewear = "corrective glasses";
-							V.cash -= V.modCost;
+							cashX(forceNeg(V.modCost), "slaveMod", slave);
 							r += `<br>${slave.slaveName} has been given corrective glasses.`;
 						}
 					} else {
 						if (slave.eyewear != "glasses") {
 							slave.eyewear = "glasses";
-							V.cash -= V.modCost;
+							cashX(forceNeg(V.modCost), "slaveMod", slave);
 							r += `<br>${slave.slaveName} has been given decorative glasses.`;
 						}
 					}
@@ -476,7 +476,7 @@ window.DefaultRules = (function() {
 					if (slave.hears == -1) {
 						if (slave.earwear != "hearing aids") {
 							slave.earwear = "hearing aids";
-							V.cash -= V.modCost;
+							cashX(forceNeg(V.modCost), "slaveMod", slave);
 							r += `<br>${slave.slaveName} has been given hearing aids.`;
 						}
 					} else {
@@ -491,7 +491,7 @@ window.DefaultRules = (function() {
 					if (slave.hears > -1) {
 						if (slave.earwear != "muffling ear plugs") {
 							slave.earwear = "muffling ear plugs";
-							V.cash -= V.modCost;
+							cashX(forceNeg(V.modCost), "slaveMod", slave);
 							r += `<br>${slave.slaveName} has been given muffling ear plugs.`;
 						}
 					} else {
@@ -506,7 +506,7 @@ window.DefaultRules = (function() {
 					if (slave.hears > -2) {
 						if (slave.earwear != "deafening ear plugs") {
 							slave.earwear = "deafening ear plugs";
-							V.cash -= V.modCost;
+							cashX(forceNeg(V.modCost), "slaveMod", slave);
 							r += `<br>${slave.slaveName} has been given deafening ear plugs.`;
 						}
 					} else {
@@ -1882,25 +1882,25 @@ window.DefaultRules = (function() {
 			if ((rule.teeth == "universal")) {
 				if ((slave.teeth == "crooked")) {
 					slave.teeth = "straightening braces";
-					V.cash -= V.surgeryCost;
+					cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 					r += `<br>${slave.slaveName} has been given braces for her crooked teeth.`;
 				} else if (slave.teeth == "gapped") {
 					slave.teeth = "straightening braces";
-					V.cash -= V.surgeryCost;
+					cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 					r += `<br>${slave.slaveName} has been given braces to close the gap in her teeth.`;
 				} else if ((slave.teeth == "normal")) {
 					slave.teeth = "cosmetic braces";
-					V.cash -= V.surgeryCost;
+					cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 					r += `<br>${slave.slaveName} has been given cosmetic braces.`;
 				}
 			} else if ((rule.teeth == "straighten")) {
 				if ((slave.teeth == "crooked")) {
 					slave.teeth = "straightening braces";
-					V.cash -= V.surgeryCost;
+					cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 					r += `<br>${slave.slaveName} has been given braces for her crooked teeth.`;
 				} else if (slave.teeth == "gapped") {
 					slave.teeth = "straightening braces";
-					V.cash -= V.surgeryCost;
+					cashX(forceNeg(V.modCost), "slaveSurgery", slave);
 					r += `<br>${slave.slaveName} has been given braces to close the gap in her teeth.`;
 				} else if ((slave.teeth == "cosmetic braces")) {
 					slave.teeth = "normal";
@@ -1922,7 +1922,7 @@ window.DefaultRules = (function() {
 		if (rule.eyeColor !== undefined && (rule.eyeColor !== "no default setting")) {
 			if ((slave.eyeColor !== rule.eyeColor)) {
 				slave.eyeColor = rule.eyeColor;
-				V.cash -= V.modCost;
+				cashX(forceNeg(V.modCost), "slaveMod", slave);
 				r += `<br>${slave.slaveName} has been given ${slave.eyeColor} contact lenses.`;
 			}
 		}
@@ -1930,7 +1930,7 @@ window.DefaultRules = (function() {
 		if (rule.makeup !== undefined && (rule.makeup !== "no default setting")) {
 			if ((slave.makeup !== rule.makeup)) {
 				slave.makeup = rule.makeup;
-				V.cash -= V.modCost;
+				cashX(forceNeg(V.modCost), "slaveMod", slave);
 				r += `<br>${slave.slaveName} has been assigned the standard makeup.`;
 			}
 		}
@@ -1939,7 +1939,7 @@ window.DefaultRules = (function() {
 			if (rule.nails !== undefined && (rule.nails !== "no default setting")) {
 				if ((slave.nails !== rule.nails)) {
 					slave.nails = rule.nails;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName} has been assigned the standard nails.`;
 				}
 			}
@@ -1949,7 +1949,7 @@ window.DefaultRules = (function() {
 			if (slave.bald != 1) {
 				if ((slave.hColor !== rule.hColor)) {
 					slave.hColor = rule.hColor;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s hair has been dyed ${rule.hColor}.`;
 				}
 			}
@@ -1959,7 +1959,7 @@ window.DefaultRules = (function() {
 			if (slave.bald != 1) {
 				if ((slave.hStyle !== rule.hStyle)) {
 					slave.hStyle = rule.hStyle;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					if ((rule.hStyle == "shaved")) {
 						slave.hLength = 0;
 						r += `<br>${slave.slaveName}'s hair has been shaved.`;
@@ -1973,10 +1973,10 @@ window.DefaultRules = (function() {
 			if (slave.bald != 1) {
 				if ((slave.hLength !== rule.hLength)) {
 					if ((slave.hLength > rule.hLength)) {
-						V.cash -= V.modCost;
+						cashX(forceNeg(V.modCost), "slaveMod", slave);
 						r += `<br>${slave.slaveName}'s hair has been cut; it `;
 					} else {
-						V.cash -= V.modCost*Math.trunc((rule.hLength-slave.hLength)/10);
+						cashX(forceNeg(V.modCost*Math.trunc((rule.hLength-slave.hLength)/10)), "slaveMod");
 						r += `<br>${slave.slaveName} has been given extensions; her hair `;
 					}
 				r += `is now ${lengthToEitherUnit(rule.hLength)} long.`;
@@ -2001,7 +2001,7 @@ window.DefaultRules = (function() {
 			if (slave.eyebrowHStyle != "bald" && slave.eyebrowHStyle != "hairless") {
 				if ((slave.eyebrowHColor !== rule.eyebrowHColor)) {
 					slave.eyebrowHColor = rule.eyebrowHColor;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s eyebrow hair, if present, has been dyed ${rule.eyebrowHColor}.`;
 				}
 			}
@@ -2011,7 +2011,7 @@ window.DefaultRules = (function() {
 			if (slave.eyebrowHStyle != "bald" && slave.eyebrowHStyle != "hairless") {
 				if ((slave.eyebrowHStyle !== rule.eyebrowHStyle)) {
 					slave.eyebrowHStyle = rule.eyebrowHStyle;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s eyebrow hair has been restyled; they are now ${rule.eyebrowHStyle}.`;
 				}
 			}
@@ -2021,7 +2021,7 @@ window.DefaultRules = (function() {
 			if (slave.eyebrowHStyle != "bald" && slave.eyebrowHStyle != "hairless") {
 				if ((slave.eyebrowFullness !== rule.eyebrowFullness)) {
 					slave.eyebrowFullness = rule.eyebrowFullness;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s eyebrow hair thickness has been adjusted; they are now ${rule.eyebrowFullness}.`;
 				}
 			}
@@ -2031,7 +2031,7 @@ window.DefaultRules = (function() {
 			if (slave.pubicHStyle != "bald" && slave.pubicHStyle != "hairless") {
 				if ((slave.pubicHColor !== rule.pubicHColor)) {
 					slave.pubicHColor = rule.pubicHColor;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s pubic hair, if present, has been dyed ${rule.pubicHColor}.`;
 				}
 			}
@@ -2041,7 +2041,7 @@ window.DefaultRules = (function() {
 			if (slave.pubicHStyle != "bald" && slave.pubicHStyle != "hairless") {
 				if ((slave.pubicHStyle !== rule.pubicHStyle)) {
 					slave.pubicHStyle = rule.pubicHStyle;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s pubic hair has been restyled; it is now ${rule.pubicHStyle}.`;
 				}
 			}
@@ -2051,7 +2051,7 @@ window.DefaultRules = (function() {
 			if (slave.underArmHStyle != "bald" && slave.underArmHStyle != "hairless") {
 				if ((slave.underArmHColor !== rule.underArmHColor)) {
 					slave.underArmHColor = rule.underArmHColor;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s underarm hair, if present, has been dyed ${rule.underArmHColor}.`;
 				}
 			}
@@ -2061,7 +2061,7 @@ window.DefaultRules = (function() {
 			if (slave.underArmHStyle != "bald" && slave.underArmHStyle != "hairless") {
 				if ((slave.underArmHStyle !== rule.underArmHStyle)) {
 					slave.underArmHStyle = rule.underArmHStyle;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s underarm hair has been restyled; it is now ${rule.underArmHStyle}.`;
 				}
 			}
@@ -2071,7 +2071,7 @@ window.DefaultRules = (function() {
 			if (slave.eyebrowHStyle != "bald") {
 				if ((slave.eyebrowHColor !== rule.eyebrowHColor)) {
 					slave.eyebrowHColor = rule.eyebrowHColor;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s eyebrow hair, if present, has been dyed ${rule.eyebrowHColor}.`;
 				}
 			}
@@ -2081,7 +2081,7 @@ window.DefaultRules = (function() {
 			if (slave.eyebrowHStyle != "bald") {
 				if ((slave.eyebrowHStyle !== rule.eyebrowHStyle)) {
 					slave.eyebrowHStyle = rule.eyebrowHStyle;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s eyebrow hair has been restyled; it is now ${rule.eyebrowHStyle}.`;
 				}
 			}
@@ -2091,7 +2091,7 @@ window.DefaultRules = (function() {
 			if (slave.eyebrowHStyle != "bald") {
 				if ((slave.eyebrowFullness !== rule.eyebrowFullness)) {
 					slave.eyebrowFullness = rule.eyebrowFullness;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s eyebrow hair has been reshaped; it is now ${rule.eyebrowFullness}.`;
 				}
 			}
@@ -2111,7 +2111,7 @@ window.DefaultRules = (function() {
 					r += `<br>${slave.slaveName}'s nipple piercings have been removed.`;
 				} else if (slave.nipples !== "fuckable") {
 					slave.nipplesPiercing = rule.nipplesPiercing;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s nipples have been pierced.`;
 				} else {
 					r += `<br>${slave.slaveName}'s nipples are inverted and cannot be pierced.`;
@@ -2126,7 +2126,7 @@ window.DefaultRules = (function() {
 					r += `<br>${slave.slaveName}'s areolae piercings have been removed.`;
 				} else {
 					slave.areolaePiercing = rule.areolaePiercing;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s areolae have been given stud piercings.`;
 				}
 			}
@@ -2149,9 +2149,9 @@ window.DefaultRules = (function() {
 						r += `<br>${slave.slaveName}'s clit has been pierced.`;
 
 					if (rule.clitPiercing == 3)
-						V.cash -= 1000;
+						cashX(-1000, "slaveMod");
 					else
-						V.cash -= V.modCost;
+						cashX(forceNeg(V.modCost), "slaveMod", slave);
 				}
 			}
 		}
@@ -2164,7 +2164,7 @@ window.DefaultRules = (function() {
 						r += `<br>${slave.slaveName}'s labia piercings have been removed.`;
 					} else {
 						slave.vaginaPiercing = rule.vaginaPiercing;
-						V.cash -= V.modCost;
+						cashX(forceNeg(V.modCost), "slaveMod", slave);
 						r += `<br>${slave.slaveName}'s pussylips have been pierced.`;
 					}
 				}
@@ -2179,7 +2179,7 @@ window.DefaultRules = (function() {
 						r += `<br>${slave.slaveName}'s shaft piercings have been removed.`;
 					} else {
 						slave.dickPiercing = rule.dickPiercing;
-						V.cash -= V.modCost;
+						cashX(forceNeg(V.modCost), "slaveMod", slave);
 						r += `<br>${slave.slaveName}'s shaft has been pierced.`;
 					}
 				}
@@ -2193,7 +2193,7 @@ window.DefaultRules = (function() {
 					r += `<br>${slave.slaveName}'s asshole piercings have been removed.`;
 				} else {
 					slave.anusPiercing = rule.anusPiercing;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s asshole has been pierced.`;
 				}
 			}
@@ -2206,7 +2206,7 @@ window.DefaultRules = (function() {
 					r += `<br>${slave.slaveName}'s lip piercings have been removed.`;
 				} else {
 					slave.lipsPiercing = rule.lipsPiercing;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s lips have been pierced.`;
 				}
 			}
@@ -2219,7 +2219,7 @@ window.DefaultRules = (function() {
 					r += `<br>${slave.slaveName}'s tongue piercings have been removed.`;
 				} else {
 					slave.tonguePiercing = rule.tonguePiercing;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s tongue has been pierced.`;
 				}
 			}
@@ -2232,7 +2232,7 @@ window.DefaultRules = (function() {
 					r += `<br>${slave.slaveName}'s ear piercings have been removed.`;
 				} else {
 					slave.earPiercing = rule.earPiercing;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s ears have been pierced.`;
 				}
 			}
@@ -2245,7 +2245,7 @@ window.DefaultRules = (function() {
 					r += `<br>${slave.slaveName}'s nose piercing has been removed.`;
 				} else {
 					slave.nosePiercing = rule.nosePiercing;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s nose has been pierced.`;
 				}
 			}
@@ -2258,7 +2258,7 @@ window.DefaultRules = (function() {
 					r += `<br>${slave.slaveName}'s eyebrow piercings have been removed.`;
 				} else {
 					slave.eyebrowPiercing = rule.eyebrowPiercing;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s eyebrows have been pierced.`;
 				}
 			}
@@ -2271,7 +2271,7 @@ window.DefaultRules = (function() {
 					r += `<br>${slave.slaveName}'s navel piercing have been removed.`;
 				} else {
 					slave.navelPiercing = rule.navelPiercing;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s navel has been pierced.`;
 				}
 			}
@@ -2284,7 +2284,7 @@ window.DefaultRules = (function() {
 					r += `<br>${slave.slaveName}'s corset piercings have been removed.`;
 				} else {
 					slave.corsetPiercing = rule.corsetPiercing;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName} has been given a set of corset piercings.`;
 				}
 			}
@@ -2361,7 +2361,7 @@ window.DefaultRules = (function() {
 		if (rule.boobsTat !== undefined && (rule.boobsTat !== "no default setting")) {
 			if ((slave.boobsTat !== rule.boobsTat)) {
 				slave.boobsTat = rule.boobsTat;
-				V.cash -= V.modCost;
+				cashX(forceNeg(V.modCost), "slaveMod", slave);
 				r += `<br>${slave.slaveName}'s chest has been tattooed.`;
 			}
 		}
@@ -2369,7 +2369,7 @@ window.DefaultRules = (function() {
 		if (rule.buttTat !== undefined && (rule.buttTat !== "no default setting")) {
 			if ((slave.buttTat !== rule.buttTat)) {
 				slave.buttTat = rule.buttTat;
-				V.cash -= V.modCost;
+				cashX(forceNeg(V.modCost), "slaveMod", slave);
 				r += `<br>${slave.slaveName}'s butt has been tattooed.`;
 			}
 		}
@@ -2377,7 +2377,7 @@ window.DefaultRules = (function() {
 		if (rule.vaginaTat !== undefined && (rule.vaginaTat !== "no default setting")) {
 			if ((slave.vaginaTat !== rule.vaginaTat)) {
 				slave.vaginaTat = rule.vaginaTat;
-				V.cash -= V.modCost;
+				cashX(forceNeg(V.modCost), "slaveMod", slave);
 				r += `<br>${slave.slaveName}'s abdomen has been tattooed.`;
 			}
 		}
@@ -2386,7 +2386,7 @@ window.DefaultRules = (function() {
 			if (rule.dickTat !== undefined && (rule.dickTat !== "no default setting")) {
 				if ((slave.dickTat !== rule.dickTat)) {
 					slave.dickTat = rule.dickTat;
-					V.cash -= V.modCost;
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
 					r += `<br>${slave.slaveName}'s dick has been tattooed.`;
 				}
 			}
@@ -2395,7 +2395,7 @@ window.DefaultRules = (function() {
 		if (rule.lipsTat !== undefined && (rule.lipsTat !== "no default setting")) {
 			if ((slave.lipsTat !== rule.lipsTat)) {
 				slave.lipsTat = rule.lipsTat;
-				V.cash -= V.modCost;
+				cashX(forceNeg(V.modCost), "slaveMod", slave);
 				r += `<br>${slave.slaveName}'s face has been tattooed.`;
 			}
 		}
@@ -2403,7 +2403,7 @@ window.DefaultRules = (function() {
 		if (rule.anusTat !== undefined && (rule.anusTat !== "no default setting")) {
 			if ((slave.anusTat !== rule.anusTat)) {
 				slave.anusTat = rule.anusTat;
-				V.cash -= V.modCost;
+				cashX(forceNeg(V.modCost), "slaveMod", slave);
 				r += `<br>${slave.slaveName}'s asshole has been modded.`;
 			}
 		}
@@ -2411,7 +2411,7 @@ window.DefaultRules = (function() {
 		if (rule.shouldersTat !== undefined && (rule.shouldersTat !== "no default setting")) {
 			if ((slave.shouldersTat !== rule.shouldersTat)) {
 				slave.shouldersTat = rule.shouldersTat;
-				V.cash -= V.modCost;
+				cashX(forceNeg(V.modCost), "slaveMod", slave);
 				r += `<br>${slave.slaveName}'s shoulders have been tattooed.`;
 			}
 		}
@@ -2419,7 +2419,7 @@ window.DefaultRules = (function() {
 		if (rule.armsTat !== undefined && (rule.armsTat !== "no default setting")) {
 			if ((slave.armsTat !== rule.armsTat)) {
 				slave.armsTat = rule.armsTat;
-				V.cash -= V.modCost;
+				cashX(forceNeg(V.modCost), "slaveMod", slave);
 				r += `<br>${slave.slaveName}'s arms have been tattooed.`;
 			}
 		}
@@ -2427,7 +2427,7 @@ window.DefaultRules = (function() {
 		if (rule.legsTat !== undefined && (rule.legsTat !== "no default setting")) {
 			if ((slave.legsTat !== rule.legsTat)) {
 				slave.legsTat = rule.legsTat;
-				V.cash -= V.modCost;
+				cashX(forceNeg(V.modCost), "slaveMod", slave);
 				r += `<br>${slave.slaveName}'s legs have been tattooed.`;
 			}
 		}
@@ -2435,7 +2435,7 @@ window.DefaultRules = (function() {
 		if (rule.stampTat !== undefined && (rule.stampTat !== "no default setting")) {
 			if ((slave.stampTat !== rule.stampTat)) {
 				slave.stampTat = rule.stampTat;
-				V.cash -= V.modCost;
+				cashX(forceNeg(V.modCost), "slaveMod", slave);
 				r += `<br>${slave.slaveName}'s lower back has been tattooed.`;
 			}
 		}
diff --git a/src/js/assayJS.tw b/src/js/assayJS.tw
index ce69df0e179078817f927f81bcd5d6a90adc28ea..bbf29cb494f59e50b1900f638132d40fa1c17a15 100644
--- a/src/js/assayJS.tw
+++ b/src/js/assayJS.tw
@@ -2069,13 +2069,13 @@ window.MenialPopCap = function MenialPopCap () {
 		let price = menialSlaveCost(-overMenialCap);
 		if (V.menials > 0) {
 			if (V.menials > overMenialCap) {
-				V.cash += overMenialCap * price;
+				cashX((overMenialCap * price), "menialTrades");
 				V.menialDemandFactor -= overMenialCap;
 				V.menials -= overMenialCap;
 				overMenialCap = 0;
 				r += "You don't have enough room for all your menials and are obliged to sell some.";
 			} else {
-				V.cash += V.menials * price;
+				cashX((V.menials * price), "menialTrades");
 				V.menialDemandFactor -= V.menials;
 				overMenialCap -= V.menials;
 				V.menials = 0;
@@ -2084,13 +2084,13 @@ window.MenialPopCap = function MenialPopCap () {
 		}
 		if (overMenialCap > 0 && V.fuckdolls > 0) {
 			if (V.fuckdolls > overMenialCap) {
-				V.cash += overMenialCap * (price * 2);
+				cashX(overMenialCap * (price * 2), "menialTrades");
 				V.menialDemandFactor -= overMenialCap;
 				V.fuckdolls -= overMenialCap;
 				overMenialCap = 0;
 				r += "You don't have enough room for all your Fuckdolls and are obliged to sell some.";
 			} else {
-				V.cash += V.fuckdolls * (price * 2);
+				cashX(V.fuckdolls * (price * 2), "menialTrades");
 				V.menialDemandFactor -= V.fuckdolls;
 				overMenialCap -= V.fuckdolls;
 				V.fuckdolls = 0;
@@ -2098,7 +2098,7 @@ window.MenialPopCap = function MenialPopCap () {
 			}
 		}
 		if (overMenialCap > 0 && V.menialBioreactors > 0) {
-			V.cash += overMenialCap * (price - 100);
+			cashX(overMenialCap * (price - 100), "menialTrades");
 			V.menialDemandFactor -= overMenialCap;
 			V.menialBioreactors -= overMenialCap;
 			r += "You don't have enough room for all your menial bioreactors and are obliged to sell some.";
diff --git a/src/js/birthJS.tw b/src/js/birthJS.tw
index 7cfaf9a4fb17c3b313e8ca92c5abeb2fb13b1d55..ae9d942a9661515aec2f70d718d68e08bbbb3691 100644
--- a/src/js/birthJS.tw
+++ b/src/js/birthJS.tw
@@ -101,7 +101,7 @@ window.BirthDestinationText = function(choice,slave) {
 				r += `For a moment, ${he} saw a glimmer of good in you; <span class='mediumorchid'>${He} was clearly wrong.</span> ${His} mind struggles to comprehend <span class='gold'>why ${he} could ever even think of trusting such a person.</span>`;
 				slave.trust -= 30, slave.devotion -= 30;
 			}
-			V.cash += T.curBabies*(50+T.babyCost);
+			cashX(T.curBabies*(50+T.babyCost), "slaveTransfer", slave);
 			break;
 	}
 	return r;
diff --git a/src/js/datatypeCleanupJS.tw b/src/js/datatypeCleanupJS.tw
index ae100e2d21ec3299bdc4b91a9d4ca38341670030..63307a7559b62ddca122a495d94ce6786e1da8e6 100644
--- a/src/js/datatypeCleanupJS.tw
+++ b/src/js/datatypeCleanupJS.tw
@@ -597,6 +597,15 @@ window.slaveMiscellaneousDatatypeCleanup = function slaveMiscellaneousDatatypeCl
 	if (typeof slave.death !== "string") {
 		slave.death = "";
 	}
+	if (slave.slaveCost !== 0) {
+		slave.slaveCost = Math.min(+slave.slaveCost, 1) || 1;
+	}
+	slave.lifetimeCashExpenses = Math.max(+slave.lifetimeCashExpenses, 0) || 0;
+	slave.lifetimeCashIncome = Math.max(+slave.lifetimeCashIncome, 0) || 0;
+	slave.lastWeeksCashIncome = Math.max(+slave.lifetimeCashIncome, 0) || 0;
+	slave.lifetimeRepExpenses = Math.max(+slave.lifetimeCashExpenses, 0) || 0;
+	slave.lifetimeRepIncome = Math.max(+slave.lifetimeCashIncome, 0) || 0;
+	slave.lastWeeksRepIncome = Math.max(+slave.lifetimeCashIncome, 0) || 0;
 };
 
 /* a lot of this may need to be removed */
diff --git a/src/js/economyJS.tw b/src/js/economyJS.tw
index 05a00db7cafe7dd9d824568968ba79da86c03898..1a1d5e184ed858f8124cc6e68090068b6ae98885 100644
--- a/src/js/economyJS.tw
+++ b/src/js/economyJS.tw
@@ -11,67 +11,236 @@ window.Job = Object.freeze({
 	});
 window.PersonalAttention = Object.freeze({TRADE: 'trading', WAR: 'warfare', SLAVING: 'slaving', ENGINEERING: 'engineering', MEDICINE: 'medicine', MAID: 'upkeep', HACKING: 'hacking'});
 
+window.predictCost = function(array) {
+	var array2 = array;
+	var totalCosts = ( 
+	getBrothelCosts() +
+	getBrothelAdsCosts() +
+	getArcadeCosts()  +
+	getClubCosts() +
+	getClubAdsCosts() +
+	getDairyCosts() +
+	getIncubatorCosts() +
+	getServantsQuartersCosts() +
+	getMasterSuiteCosts() +
+	getNurseryCosts() +
+	getFarmyardCosts() +
+	getSecurityExpansionCost() +
+	getLifestyleCosts() +
+	getFSCosts() +
+	getCitizenOrphanageCosts() +
+	getPrivateOrphanageCosts() +
+	getPeacekeeperCosts() +
+	getMercenariesCosts() +
+	getMenialRetirementCosts() +
+	getRecruiterCosts() +
+	getSchoolCosts() +
+	getPolicyCosts() +
+	getCyberModCosts() +
+	getPCTrainingCosts() +
+	getPCCosts() +
+	predictTotalSlaveCosts(array2)
+	);
+
+	 //these two apply a multiplicative effect to all costs so far.
+	totalCosts = getEnvironmentCosts(totalCosts);
+	totalCosts = getPCMultiplierCosts(totalCosts);
+	
+	//in the old order these were applied after multiplication.  Not sure if deliberate, but I'm leaving it for now.
+	totalCosts += (
+	getSFCosts() + 
+	getWeatherCosts()
+	);
+/*
+	// clean up
+	if(totalCosts > 0) {
+		totalCosts = 0;
+	} else {
+		totalCosts = Math.ceil(totalCosts);
+	}
+*/
+	return totalCosts;
+};
+
 window.getCost = function(array) {
-	var rulesCost = State.variables.rulesCost;
-	var foodCost = State.variables.foodCost;
-	var drugsCost = State.variables.drugsCost;
+	var array2 = array;
+	var oldCash = State.variables.cash;
+	var costSoFar = 0;
+	cashX(forceNeg(getBrothelCosts()), "brothel");
+	cashX(forceNeg(getBrothelAdsCosts()), "brothelAds");
+	cashX(forceNeg(getArcadeCosts()), "arcade");
+	cashX(forceNeg(getClubCosts()), "club");
+	cashX(forceNeg(getClubAdsCosts()), "brothelAds");
+	cashX(forceNeg(getDairyCosts()), "dairy");
+	cashX(forceNeg(getIncubatorCosts()), "incubator");
+	cashX(forceNeg(getServantsQuartersCosts()), "servantsQuarters");
+	cashX(forceNeg(getMasterSuiteCosts()), "masterSuite");
+	cashX(forceNeg(getNurseryCosts()), "nursery");
+	cashX(forceNeg(getFarmyardCosts()), "farmyard");
+	cashX(forceNeg(getSecurityExpansionCost()), "securityExpansion");
+	cashX(forceNeg(getLifestyleCosts()), "personalLivingExpenses");
+	cashX(forceNeg(getFSCosts()), "futureSocieties");
+	cashX(forceNeg(getCitizenOrphanageCosts()), "citizenOrphanage");
+	cashX(forceNeg(getPrivateOrphanageCosts()), "privateOrphanage");
+	cashX(forceNeg(getPeacekeeperCosts()), "peacekeepers");
+	cashX(forceNeg(getMercenariesCosts()), "mercenaries");
+	cashX(forceNeg(getMenialRetirementCosts()), "menialRetirement");
+	cashX(forceNeg(getRecruiterCosts()), "recruiter");
+	cashX(forceNeg(getSchoolCosts()), "schoolBacking");
+	cashX(forceNeg(getPolicyCosts()), "policies");
+	cashX(forceNeg(getCyberModCosts()), "cyberMod");
+	cashX(forceNeg(getPCTrainingCosts()), "PCtraining");
+	cashX(forceNeg(getPCCosts()), "PCmedical");
+	getTotalSlaveCosts(array2);
+	
+	
+	//these two apply a multiplicative effect to all costs so far.
+	// Calculate what the deduced expenses would be, then subtract 
+	costSoFar = (oldCash - State.variables.cash); //How much we have spent by this point; expected to be positive.
+	cashX(forceNeg(costSoFar - getEnvironmentCosts(costSoFar), "environment")); //getEnv takes total costs and makes it worse.  Figure out how much worse and record it
+
+	costSoFar = (oldCash - State.variables.cash);
+	cashX(forceNeg(costSoFar - getPCMultiplierCosts(costSoFar)), "PCskills");
+
+	//in the old order these were applied after multiplication.  Not sure if deliberate, but I'm leaving it for now.
+	cashX(forceNeg(getSFCosts()), "specialForces");
+	cashX(forceNeg(getWeatherCosts()), "weather");
+	return (oldCash - State.variables.cash);
+};
+
+//slave expenses
+window.predictTotalSlaveCosts = function(array3) {
+	var loopCosts = 0;	
+	//slave expenses
+	for (var slave of array3) {
+		loopCosts += getSlaveCost(slave);
+		loopCosts += getSlaveMinorCosts(slave);
+	}
+	return loopCosts;
+};
+
+window.getTotalSlaveCosts = function(array3) {
+	var slaveCost = 0;
+	var slaveCostMinor = 0;
+	for (var slave of array3) {
+		slaveCost = getSlaveCost(slave);
+		cashX(forceNeg(slaveCost), "slaveUpkeep", slave);
+		slaveCostMinor = getSlaveMinorCosts(slave);
+		cashX(forceNeg(slaveCostMinor), "slaveUpkeep", slave);
+	}
+	//nothing to return, cashX already billed.
+};
+
+//facility expenses
+window.getBrothelCosts = function() {
 	var facilityCost = State.variables.facilityCost;
-	var localEcon = State.variables.localEcon;
 	var brothel = State.variables.brothel;
+	var costs = (brothel * facilityCost);
+	costs += (0.1 * State.variables.brothelUpgradeDrugs * brothel * facilityCost);
+	return costs;
+};
+
+window.getBrothelAdsCosts = function() {
+	var brothel = State.variables.brothel;
+	var costs = 0
+	if(brothel > 0) {
+		costs += State.variables.brothelAdsSpending;
+	}
+	return costs;
+};
+
+window.getArcadeCosts = function() {
+	var facilityCost = State.variables.facilityCost;
 	var arcade = State.variables.arcade;
+	var costs = (arcade * facilityCost * 0.5);
+	costs += (0.2 * State.variables.arcadeUpgradeInjectors * arcade * facilityCost)
+	+ (0.2 * State.variables.arcadeUpgradeCollectors * arcade * facilityCost);
+	return costs;
+};
+
+window.getClubCosts = function() {
+	var facilityCost = State.variables.facilityCost;
 	var club = State.variables.club;
-	var dairy = State.variables.dairy;
-	var farmyard = State.variables.farmyard;
-	var servantsQuarters = State.variables.servantsQuarters;
-	var nursery = State.variables.nursery;
-	var incubator = State.variables.incubator;
-	var mercCosts = State.variables.mercenaries * 2000;
-	var policyCost = State.variables.policyCost;
-	var costs = (brothel * facilityCost)
-		+ (arcade * facilityCost * 0.5)
-		+ (club * facilityCost)
-		+ (dairy * facilityCost)
-		+ (nursery * facilityCost)
-		+ (farmyard * facilityCost)
-		+ (State.variables.incubator * facilityCost * 10);
-	var secExpCost = 0;
-	var soldierMod = 0;
+	var costs = (club * facilityCost);
+	costs += (0.2 * State.variables.clubUpgradePDAs * club * facilityCost);
+	if(club > 0) {
+		costs += State.variables.clubAdsSpending;
+	}
+	return costs;
+};
+
+window.getClubAdsCosts = function() {
+	var club = State.variables.club;
+	var costs = 0;
+	if(club > 0) {
+		costs += State.variables.clubAdsSpending;
+	}
+	return costs;
+};
 
-	//facility expenses
-	costs += (0.1 * State.variables.brothelUpgradeDrugs * brothel * facilityCost)
-	+ (0.2 * State.variables.arcadeUpgradeInjectors * arcade * facilityCost)
-	+ (0.2 * State.variables.arcadeUpgradeCollectors * arcade * facilityCost)
-	+ (0.2 * State.variables.clubUpgradePDAs * club * facilityCost)
-	+ (0.2 * State.variables.dairyFeedersUpgrade * dairy * facilityCost)
+window.getDairyCosts = function() {
+	var facilityCost = State.variables.facilityCost;
+	var dairy = State.variables.dairy;
+	var costs = (dairy * facilityCost) + (0.2 * State.variables.dairyFeedersUpgrade * dairy * facilityCost)
 	+ (0.1 * State.variables.dairyPregUpgrade * dairy * facilityCost)
-	+ (0.2 * State.variables.dairyStimulatorsUpgrade * facilityCost)
-	+ (0.2 * State.variables.servantsQuartersUpgradeMonitoring * servantsQuarters * facilityCost)
-	+ (0.2 * State.variables.incubatorUpgradeWeight * incubator * facilityCost)
+	+ (0.2 * State.variables.dairyStimulatorsUpgrade * facilityCost);
+	if(dairy > 0) {
+		costs += ((State.variables.bioreactorsXY + State.variables.bioreactorsXX + State.variables.bioreactorsHerm + State.variables.bioreactorsBarren) * 100);
+	}
+	return costs;
+};
+
+window.getIncubatorCosts = function() {
+	var facilityCost = State.variables.facilityCost;
+	var incubator = State.variables.incubator;
+	var costs = (State.variables.incubator * facilityCost * 10);
+	costs += (0.2 * State.variables.incubatorUpgradeWeight * incubator * facilityCost)
 	+ (0.2 * State.variables.incubatorUpgradeMuscles * incubator * facilityCost)
 	+ (0.2 * State.variables.incubatorUpgradeReproduction * incubator * facilityCost)
 	+ (0.2 * State.variables.incubatorUpgradeGrowthStims * incubator * facilityCost)
 	+ (0.5 * State.variables.incubatorUpgradeSpeed * incubator * facilityCost);
-
-	if(dairy > 0) {
-		costs += ((State.variables.bioreactorsXY + State.variables.bioreactorsXX + State.variables.bioreactorsHerm + State.variables.bioreactorsBarren) * 100);
-	}
-	if(brothel > 0) {
-		costs += State.variables.brothelAdsSpending;
-	}
-	if(club > 0) {
-		costs += State.variables.clubAdsSpending;
-	}
 	if(incubator > 0) {
 		costs += ((State.variables.incubatorWeightSetting + State.variables.incubatorMusclesSetting + State.variables.incubatorReproductionSetting + State.variables.incubatorGrowthStimsSetting) * 500);
 	}
+	return costs;
+};
+
+window.getServantsQuartersCosts = function() {
+	var facilityCost = State.variables.facilityCost;
+	var servantsQuarters = State.variables.servantsQuarters;
+	var costs = (0.2 * State.variables.servantsQuartersUpgradeMonitoring * servantsQuarters * facilityCost);
+	return costs;
+};
+
+window.getMasterSuiteCosts = function() {
+	var costs = 0;	
 	if(State.variables.masterSuitePregnancySlaveLuxuries === 1) {
 		costs += 500;
 	}
 	if(State.variables.masterSuitePregnancyFertilitySupplements === 1) {
 		costs += 1000;
 	}
+	return costs;
+};
+
+window.getNurseryCosts = function() {
+	var facilityCost = State.variables.facilityCost;
+	var nursery = State.variables.nursery;
+	var costs = (nursery * facilityCost);
+	return costs;
+};
 
+window.getFarmyardCosts = function() {
+	var facilityCost = State.variables.facilityCost;
+	var farmyard = State.variables.farmyard;
+	var costs = (farmyard * facilityCost);
+	return costs;
+};
+
+window.getSecurityExpansionCost = function() {
 	//security expansion
+	var secExpCost = 0;
+	var soldierMod = 0;
 	if(State.variables.secExp == 1) {
 		if(State.variables.edictsUpkeep > 0) {
 			secExpCost += State.variables.edictsUpkeep;
@@ -121,26 +290,54 @@ window.getCost = function(array) {
 				}
 			}
 		}
-		costs += secExpCost;
 	}
+	return secExpCost;
+};
 
 	//general arcology costs
+
+window.getLifestyleCosts = function() {
+	var costs = 0;
+	var localEcon = State.variables.localEcon;
 	costs += (State.variables.girls * (250 + (50000 / localEcon)));
+	return costs;
+};
 
+window.getFSCosts = function() {
+	var costs = 0;
+	costs += State.variables.FSSpending;
 	if(State.variables.arcologies[0].FSRepopulationFocusLaw === 1 && State.variables.PC.pregKnown == 1) {
 		costs -= 500;
 	}
+	return costs;
+};
 
+window.getCitizenOrphanageCosts = function() {
+	var costs = 0;	
 	costs += State.variables.citizenOrphanageTotal * 100;
+	return costs;
+};
+
+window.getPrivateOrphanageCosts = function() {
+	var costs = 0;	
 	costs += State.variables.privateOrphanageTotal * 500;
 	if(State.variables.breederOrphanageTotal > 0) {
 		costs += 50;
 	}
+	return costs;
+};
 
+window.getPeacekeeperCosts = function() {
+	var costs = 0;	
 	if(State.variables.peacekeepers !== 0 && State.variables.peacekeepers.undermining !== 0) {
 		costs += State.variables.peacekeepers.undermining;
 	}
+	return costs;
+};
 
+window.getMercenariesCosts = function() {
+	var costs = 0;
+	var mercCosts = State.variables.mercenaries * 2000;
 	if(State.variables.mercenaries > 0) {
 		if(State.variables.barracks) {
 			mercCosts *= 0.5;
@@ -150,61 +347,28 @@ window.getCost = function(array) {
 		}
 		costs += mercCosts;
 	}
+	return costs;
+};
 
+window.getMenialRetirementCosts = function() {
+	var costs = 0;	
 	if(State.variables.citizenRetirementMenials == 1) {
 		costs += State.variables.menials * 2;
 	}
+	return costs;
+};
 
-	costs += State.variables.FSSpending;
-
-	//slave expenses
-	for (var slave of array) {
-		costs += getSlaveCost(slave);
-		if(slave.assignment === Job.SERVANT || slave.assignment === Job.SERVER) {
-			if(slave.trust < -20) {
-				costs -= rulesCost * 4;
-			} else if(slave.devotion < -20) {
-				if (slave.trust >= 20) {
-					costs -= rulesCost / 2;
-				} else {
-					costs -= rulesCost * 2;
-				}
-			} else if(slave.devotion <= 20) {
-				costs -= rulesCost * 3;
-			} else if(slave.devotion <= 50) {
-				costs -= rulesCost * 4;
-			} else {
-				costs -= rulesCost * 5;
-			}
-			if(slave.fetish === 'submissive') {
-				costs -= rulesCost;
-			} else if(slave.fetish === 'dom') {
-				costs += rulesCost;
-			}
-			if(slave.relationship < -1) {
-				costs -= rulesCost;
-			}
-			if(slave.energy < 20) {
-				costs -= rulesCost;
-			} else if(slave.energy < 40) {
-				costs -= rulesCost / 2;
-			}
-			if(slave.lactation > 0) {
-				costs -= 25;
-			}
-			if(slave.assignment === Job.SERVANT) {
-				costs -= rulesCost;
-			}
-			if(setup.servantCareers.includes(slave.career) || slave.skillS >= State.variables.masteredXP) {
-				costs -= rulesCost;
-			}
-		}
-	}
-
-	// policy and other expenses
+// policy and other expenses
+window.getRecruiterCosts = function() {
+	var costs = 0;	
 	if(State.variables.Recruiter !== 0) {
 		costs += 250;
 	}
+	return costs;
+};
+
+window.getSchoolCosts = function() {
+	var costs = 0;	
 	if(State.variables.TSS.schoolPresent === 1) {
 		costs += 1000;
 	}
@@ -253,7 +417,12 @@ window.getCost = function(array) {
 	if(State.variables.TFS.subsidize !== 0) {
 		costs += 1000;
 	}
+	return costs;
+};
 
+window.getPolicyCosts = function() {
+	var costs = 0;
+	var policyCost = State.variables.policyCost;
 	if(State.variables.alwaysSubsidizeGrowth === 1) {
 		costs += policyCost;
 	}
@@ -274,7 +443,21 @@ window.getCost = function(array) {
 	if(State.variables.CoursingAssociation === 1) {
 		costs += 1000;
 	}
+	return costs;
+};
+
+window.getCyberModCosts = function() {
+	var costs = 0;	
+	if(State.variables.cyberMod !== 0 && State.variables.researchLab.built === 'true') {
+		costs += ((100 * State.variables.researchLab.maxSpace) + (300 * State.variables.researchLab.hired) + (100 * State.variables.researchLab.hired));
+	}
+	return costs;
+};
+
 
+//player expenses
+window.getPCTrainingCosts = function() {
+	var costs = 0;	
 	if(State.variables.PC.actualAge >= State.variables.IsInPrimePC && State.variables.PC.actualAge < State.variables.IsPastPrimePC) {
 	if(State.variables.personalAttention === PersonalAttention.TRADE) {
 		costs += 10000*State.variables.AgeEffectOnTrainerPricingPC;
@@ -290,13 +473,10 @@ window.getCost = function(array) {
 		costs += 10000*State.variables.AgeEffectOnTrainerPricingPC;
 	}
 	}
-
-	if(State.variables.cyberMod !== 0 && State.variables.researchLab.built === 'true') {
-		costs += ((100 * State.variables.researchLab.maxSpace) + (300 * State.variables.researchLab.hired) + (100 * State.variables.researchLab.hired));
-	}
-
-	//player expenses
-
+	return costs;
+};
+window.getPCCosts = function() {
+	var costs = 0;	
 	if(State.variables.PC.preg === -1) {
 		costs += 25;
 	} else if(State.variables.PC.fertDrugs === 1) {
@@ -307,29 +487,41 @@ window.getCost = function(array) {
 	if(State.variables.PC.staminaPills === 1) {
 		costs += 50;
 	}
+	return costs;
+};
 
+
+window.getPCMultiplierCosts = function(cost) {
 	if(State.variables.PC.career === 'servant') {
 		if(State.variables.personalAttention === PersonalAttention.MAID) {
 			if(State.variables.PC.belly >= 5000) {
-				costs *= 0.80;
+				cost *= 0.80;
 			} else {
-				costs *= 0.75;
+				cost *= 0.75;
 			}
 		} else {
-			costs *= 0.9;
+			cost *= 0.9;
 		}
 	}
 
+	return cost;
+};
+
+window.getEnvironmentCosts = function(cost) {
 	if(State.variables.secExp == 1) {
 		if(State.variables.terrain === 'oceanic' || State.variables.terrain === 'marine') {
 			if(State.variables.docks > 0) {
-				costs *= (1 - State.variables.docks * 0.05);
+				cost *= (1 - State.variables.docks * 0.05);
 			}
 		} else if(State.variables.railway > 0) {
-			costs *= (1 - State.variables.railway * 0.05);
+			cost *= (1 - State.variables.railway * 0.05);
 		}
 	}
+	return cost;
+};
 
+window.getSFCosts = function() {
+	var costs = 0;	
 	if(State.variables.SF.Toggle && State.variables.SF.Active >= 1) {
 		if(State.variables.SF.Subsidy) {
 			costs += Math.ceil( (10000*(State.variables.SF.Squad.Troops/10))+(1+(State.variables.arcologies[0].prosperity/100))+(1+(State.variables.SF.Size/100)) );
@@ -340,21 +532,64 @@ window.getCost = function(array) {
 			costs += Math.ceil(T.SFCashBonus);
 		}
 	}
+	return costs;
+};
+
+window.getWeatherCosts = function() {
+	var costs = 0;	
 	if(State.variables.econWeatherDamage && State.variables.disasterResponse > 0) {
 		costs += Math.trunc(State.variables.disasterResponse * 200000 / State.variables.localEcon);
 	}
 	if(State.variables.antiWeatherFreeze > 0) {
 		costs += Math.trunc(State.variables.antiWeatherFreeze * 200000 / State.variables.localEcon);
 	}
-	// clean up
-	if(costs < 0) {
-		costs = 0;
+	return costs;
+};
+
+window.getSlaveMinorCosts = function(slave) {
+	var costs = 0;
+	var rulesCost = State.variables.rulesCost;
+	if(slave.assignment === Job.SERVANT || slave.assignment === Job.SERVER) {
+	if(slave.trust < -20) {
+		costs -= rulesCost * 4;
+	} else if(slave.devotion < -20) {
+		if (slave.trust >= 20) {
+			costs -= rulesCost / 2;
+		} else {
+			costs -= rulesCost * 2;
+		}
+	} else if(slave.devotion <= 20) {
+		costs -= rulesCost * 3;
+	} else if(slave.devotion <= 50) {
+		costs -= rulesCost * 4;
 	} else {
-		costs = Math.ceil(costs);
+		costs -= rulesCost * 5;
+	}
+	if(slave.fetish === 'submissive') {
+		costs -= rulesCost;
+	} else if(slave.fetish === 'dom') {
+		costs += rulesCost;
+	}
+	if(slave.relationship < -1) {
+		costs -= rulesCost;
+	}
+	if(slave.energy < 20) {
+		costs -= rulesCost;
+	} else if(slave.energy < 40) {
+		costs -= rulesCost / 2;
+	}
+	if(slave.lactation > 0) {
+		costs -= 25;
+	}
+	if(slave.assignment === Job.SERVANT) {
+		costs -= rulesCost;
+	}
+	if(setup.servantCareers.includes(slave.career) || slave.skillS >= State.variables.masteredXP) {
+		costs -= rulesCost;
+	}
 	}
-
 	return costs;
-}
+};
 
 window.getSlaveCost = function(s) {
 	if(!s) { return 0; }
@@ -367,15 +602,15 @@ window.getSlaveCost = function(s) {
 	// Living expenses
 	switch(s.assignment) {
 	case Job.ARCADE:
-		cost += rulesCost * .75;
+		cost += rulesCost * 0.75;
 		break;
 	case Job.DAIRY:
 		if(State.variables.dairyRestraintsSetting >= 2) {
-			cost += rulesCost * .75;
+			cost += rulesCost * 0.75;
 		} else if(s.livingRules == LivingRule.NORMAL) {
 			cost += rulesCost * 1.5;
 		} else if(State.variables.dairyDecoration === 'Degradationist') {
-			cost += rulesCost * .90;
+			cost += rulesCost * 0.90;
 		} else {
 			cost += rulesCost;
 		}
@@ -413,7 +648,7 @@ window.getSlaveCost = function(s) {
 			cost += rulesCost * 1.5;
 		} else {
 			if(State.variables.servantsQuartersDecoration === 'Degradationist') {
-				cost += rulesCost * .90;
+				cost += rulesCost * 0.90;
 			} else {
 				cost += rulesCost;
 			}
@@ -423,7 +658,7 @@ window.getSlaveCost = function(s) {
 		if(s.livingRules == LivingRule.NORMAL) {
 			cost += rulesCost * 1.25;
 		} else {
-			cost += rulesCost * .90;
+			cost += rulesCost * 0.90;
 		}
 		break;
 	case Job.MADAM: case Job.DJ: case Job.NURSE: case Job.WARDEN:
@@ -453,7 +688,7 @@ window.getSlaveCost = function(s) {
 			break;
 	}
 	if(s.geneticQuirks.fertility == 2 && s.geneticQuirks.hyperFertility == 2 && s.preg == 0 && (s.ovaries == 1 || s.mpreg == 1)) {
-		cost += foodCost * .5;
+		cost += foodCost * 0.5;
 	}
 	if(s.weight > 130) {
 		cost += foodCost * 2;
@@ -615,7 +850,7 @@ window.getSlaveCost = function(s) {
 		cost += drugsCost * 5;
 		break;
 	case 'sag-B-gone':
-		cost += Math.trunc(drugsCost * .1);
+		cost += Math.trunc(drugsCost * 0.1);
 		break;
 	case 'no drugs': case 'none':
 		break;
@@ -704,6 +939,95 @@ window.initFacilityStatistics = function(facility) {
 	return facility;
 };
 
+/* 
+
+Welcome to the new way to spend and make money, all while having it recorded: cashX!  In the past, costs were directly deducted from $cash, with something like <<set $cash -= 100>>.
+
+The new system will still happily spend your money, but it will also record it in the appropriate budget category and (optinally) the appropriate slave as well.
+
+Let's say you were going to spend 100 on your favorite $activeSlave with cashX.  You might try:
+  
+<<run cashX(-100, "slaveMod", $activeSlave)>>
+
+There we go!
+1. -100 taken from your account
+2. Recorded: -100 for the slaveMod category, to be displayed on the Budget screen
+3. Recorded: -100 noted in your activeSlave's permanent record.  She better get busy paying that off!
+
+cashX can be used in JS as well, and can be included in [[]] style links.
+
+Make sure that expenses arrive in the COST slot as a negative, they are often positive in code.  Use the new function forceNeg or pass it along on a temporary variable if needed.
+
+Costs don't have to be numbers either, you can use variables.  <<run cashX(forceNeg($contractCost), "slaveTransfer", $activeSlave)>>.  forceNeg makes sure that whatever value $contractCost has is negative, and will therefore be recorded as an expense.  You don't have to use it if you're sure the number you are passing along is negative.
+
+A full list of categories (slaveMod, slaveTransfer, event) are in the widget "setupLastWeeksCash", currently found in costsWidgets.tw.  It's important to match your cost to one of those categories (or add a new one there, and display it in costsBudget.tw.)
+
+The third category, the "slave slot" is completely optional.  Sometimes you just want to spend money by yourself.
+
+*/
+window.cashX = function(cost, what, who) {
+	const V = State.variables;
+
+	if(isNaN(cost)){
+		V.lastWeeksErrors += `NaN: "${cost}" at ${what},
+		`;
+	} else {
+		
+		//INCOME
+		if(cost > 0) {
+				if (typeof V.lastWeeksCashIncome[what] !== 'undefined') {
+					
+					//record the action
+					V.lastWeeksCashIncome[what] += cost;
+
+					//record the slave, if available
+					if (typeof who !== 'undefined'){
+							who.lastWeeksCashIncome += cost;
+							who.lifetimeCashIncome += cost;
+					}
+
+					//Spend the money
+					V.cash += cost;
+				} else {
+					V.lastWeeksErrors += `Unknown place "${what}",`;
+				}
+		}
+		
+		//EXPENSES
+		else if(cost < 0) {
+			if (typeof V.lastWeeksCashExpenses[what] !== 'undefined') {
+				
+				//record the action
+				V.lastWeeksCashExpenses[what] += cost;
+				
+				//record the slave, if available
+				if (typeof who !== 'undefined'){
+					if (what === "slaveTransfer"){
+						who.slaveCost = cost;
+					} else {
+						who.lifetimeCashExpenses += cost;
+					}
+				}
+
+				//Spend the money
+				V.cash += cost;
+			} else {
+				V.lastWeeksErrors += `Unknown place "${what}",`;
+			}
+		}
+		else {
+			//somebody probably tried to pass a 0, ignore it.  New slaves will default to "slaveCost: 0", no need to call a costX for it.
+		}
+		return cost;
+	}
+};
+
+window.forceNeg = function(x) {
+	return -Math.abs(x);
+};
+
+
 Number.prototype.toFixedHTML = function() {
 	return commaNum(Number.prototype.toFixed.apply(this, arguments)).replace(/\.0+$/, '<span style="opacity: 0.3">$&</span>');
 };
+
diff --git a/src/js/rulesAutosurgery.tw b/src/js/rulesAutosurgery.tw
index 7c67af634535dfe437714214bbefe6c0f99e6cf3..0152b2c95f8b141c8c142df5c3eec7a4a511a01c 100644
--- a/src/js/rulesAutosurgery.tw
+++ b/src/js/rulesAutosurgery.tw
@@ -129,56 +129,56 @@ window.rulesAutosurgery = (function() {
 		if ((slave.eyes == -1) && (thisSurgery.surgery_eyes == 1)) {
 			surgeries.push("surgery to correct her vision");
 			slave.eyes = 1;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
 		} else if ((slave.eyes == 1) && (thisSurgery.surgery_eyes == -1)) {
 			surgeries.push("surgery to blur her vision");
 			slave.eyes = -1;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
 		} else if ((slave.hears == -1) && (thisSurgery.surgery_hears == 1)) {
 			surgeries.push("surgery to correct her hearing");
 			slave.hears = 0;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
 		} else if ((slave.hears == 0) && (thisSurgery.surgery_hears == -1)) {
 			surgeries.push("surgery to muffle her hearing");
 			slave.hears = -1;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
 		} else if ((slave.lactation == 2) && (thisSurgery.surgery_lactation == 0)) {
 			surgeries.push("surgery to remove her lactation implants");
 			slave.lactation = 0;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
 		} else if (slave.lactation != 2 && (thisSurgery.surgery_lactation == 1)) {
 			surgeries.push("lactation inducing implanted drugs");
 			slave.lactation = 2;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
 		} else if ((slave.prostate == 2) && (thisSurgery.surgery_prostate == 0)) {
 			surgeries.push("surgery to remove her prostate implant");
 			slave.prostate = 0;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
 		} else if (slave.prostate == 1 && (thisSurgery.surgery_prostate == 1)) {
 			surgeries.push("a precum production enhancing drug implant");
 			slave.prostate = 2;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -187,7 +187,7 @@ window.rulesAutosurgery = (function() {
 			slave.anus = 3;
 			if (slave.analSkill > 10)
 				slave.analSkill -= 10;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -196,7 +196,7 @@ window.rulesAutosurgery = (function() {
 			slave.vagina = 3;
 			if (slave.vaginalSkill > 10)
 				slave.vaginalSkill -= 10;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -205,7 +205,7 @@ window.rulesAutosurgery = (function() {
 			if (slave.faceShape == "masculine") slave.faceShape = "androgynous";
 			slave.faceImplant += 25-5*Math.trunc(V.PC.medicine/50)-5*V.surgeryUpgrade;
 			slave.face = Math.clamp(slave.face+20,-100,100);
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -218,7 +218,7 @@ window.rulesAutosurgery = (function() {
 			else if (slave.visualAge > 50) slave.visualAge -= 20;
 			else if (slave.visualAge > 36) slave.visualAge -= 10;
 			else slave.visualAge -= 5;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -226,19 +226,19 @@ window.rulesAutosurgery = (function() {
 			surgeries.push("body hair removal");
 			if (slave.underArmHStyle != "hairless") slave.underArmHStyle = "bald";
 			if (slave.pubicHStyle != "hairless") slave.pubicHStyle = "bald";
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 
 		} else if ((slave.bald == 0 || slave.hStyle != "bald" || slave.eyebrowHStyle != "bald") && (thisSurgery.surgery_hair == 2)) {
 			surgeries.push("hair removal");
 			slave.eyebrowHStyle = "bald";
 			slave.hStyle = "bald";
 			slave.bald = 1;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 
 		} else if ((slave.weight >= 10) && (thisSurgery.surgery_cosmetic > 0)) {
 			surgeries.push("liposuction");
 			slave.weight -= 50;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -246,21 +246,21 @@ window.rulesAutosurgery = (function() {
 			surgeries.push("a feminine voice");
 			slave.voice += 1;
 			slave.voiceImplant += 1;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
 		} else if ((slave.waist >= -10) && (thisSurgery.surgery_cosmetic > 0)) {
 			surgeries.push("a narrower waist");
 			slave.waist -= 20;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
 		} else if (((slave.boobShape == "saggy") || (slave.boobShape == "downward-facing")) && (thisSurgery.surgery_cosmetic > 0) && (slave.breastMesh != 1)) {
 			surgeries.push("a breast lift");
 			slave.boobShape = "normal";
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -270,7 +270,7 @@ window.rulesAutosurgery = (function() {
 			else
 				slave.boobShape = "perky";
 			surgeries.push("more interestingly shaped breasts");
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -280,7 +280,7 @@ window.rulesAutosurgery = (function() {
 			slave.lipsImplant = 0;
 			if (slave.oralSkill > 10)
 				slave.oralSkill -= 10;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -291,7 +291,7 @@ window.rulesAutosurgery = (function() {
 				slave.lips += 10;
 				if (slave.oralSkill > 10)
 					slave.oralSkill -= 10;
-				V.cash -= V.surgeryCost;
+				cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 				if (V.PC.medicine >= 100) slave.health -= 5;
 				else slave.health -= 10;
 			}
@@ -301,7 +301,7 @@ window.rulesAutosurgery = (function() {
 			if (slave.faceShape == "masculine") slave.faceShape = "androgynous";
 			slave.faceImplant += 25-5*Math.trunc(V.PC.medicine/50)-5*V.surgeryUpgrade;
 			slave.face = Math.clamp(slave.face+20,-100,100);
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -309,7 +309,7 @@ window.rulesAutosurgery = (function() {
 			surgeries.push("wider hips");
 			slave.hips++;
 			slave.hipsImplant++;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -328,14 +328,14 @@ window.rulesAutosurgery = (function() {
 				slave.visualAge -= 5;
 			}
 			slave.faceImplant += 25-5*Math.trunc(V.PC.medicine/50)-5*V.surgeryUpgrade;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
 		} else if ((slave.waist >= -95) && (thisSurgery.surgery_cosmetic == 2) && (V.seeExtreme == 1)) {
 			surgeries.push("a narrower waist");
 			slave.waist = Math.clamp(slave.waist-20,-100,100);
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -343,7 +343,7 @@ window.rulesAutosurgery = (function() {
 			surgeries.push("a bimbo's voice");
 			slave.voice += 1;
 			slave.voiceImplant += 1;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -352,7 +352,7 @@ window.rulesAutosurgery = (function() {
 			slave.butt -= slave.buttImplant;
 			slave.buttImplant = 0;
 			slave.buttImplantType = 0;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -361,7 +361,7 @@ window.rulesAutosurgery = (function() {
 			slave.boobs -= slave.boobsImplant;
 			slave.boobsImplant = 0;
 			slave.boobsImplantType = 0;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 		} else if ((slave.butt <= 3) && (slave.butt < thisSurgery.surgery_butt)) {
@@ -369,7 +369,7 @@ window.rulesAutosurgery = (function() {
 				surgeries.push("a bigger butt");
 				slave.buttImplant = 1;
 				slave.butt += 1;
-				V.cash -= V.surgeryCost;
+				cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 				if (V.PC.medicine >= 100) slave.health -= 5;
 				else slave.health -= 10;
 			}
@@ -378,7 +378,7 @@ window.rulesAutosurgery = (function() {
 				surgeries.push("bigger boobs");
 				slave.boobsImplant += 400;
 				slave.boobs += 400;
-				V.cash -= V.surgeryCost;
+				cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 				if (V.PC.medicine >= 100) slave.health -= 5;
 				else slave.health -= 10;
 			}
@@ -387,7 +387,7 @@ window.rulesAutosurgery = (function() {
 				surgeries.push("modestly bigger boobs");
 				slave.boobsImplant += 200;
 				slave.boobs += 200;
-				V.cash -= V.surgeryCost;
+				cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 				if (V.PC.medicine >= 100) slave.health -= 5;
 				else slave.health -= 10;
 			}
@@ -397,7 +397,7 @@ window.rulesAutosurgery = (function() {
 				surgeries.push("a bigger butt");
 				slave.buttImplant = 1;
 				slave.butt += 1;
-				V.cash -= V.surgeryCost;
+				cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 				if (V.PC.medicine >= 100) slave.health -= 5;
 				else slave.health -= 10;
 			}
@@ -407,7 +407,7 @@ window.rulesAutosurgery = (function() {
 				surgeries.push("bigger boobs");
 				slave.boobsImplant += 400;
 				slave.boobs += 400;
-				V.cash -= V.surgeryCost;
+				cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 				if (V.PC.medicine >= 100) slave.health -= 5;
 				else slave.health -= 10;
 			}
@@ -418,7 +418,7 @@ window.rulesAutosurgery = (function() {
 			if (slave.analSkill > 10) {
 				slave.analSkill -= 10;
 			}
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -427,7 +427,7 @@ window.rulesAutosurgery = (function() {
 			slave.vagina = 0;
 			if (slave.vaginalSkill > 10)
 				slave.vaginalSkill -= 10;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -435,7 +435,7 @@ window.rulesAutosurgery = (function() {
 			surgeries.push("wider hips");
 			slave.hips++;
 			slave.hipsImplant++;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -445,7 +445,7 @@ window.rulesAutosurgery = (function() {
 			if (slave.analSkill > 10) {
 				slave.analSkill -= 10;
 			}
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -455,7 +455,7 @@ window.rulesAutosurgery = (function() {
 			if (slave.vaginalSkill > 10) {
 				slave.vaginalSkill -= 10;
 			}
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
@@ -464,7 +464,7 @@ window.rulesAutosurgery = (function() {
 				surgeries.push("a bigger butt");
 				slave.buttImplant = 1;
 				slave.butt += 1;
-				V.cash -= V.surgeryCost;
+				cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 				if (V.PC.medicine >= 100) slave.health -= 5;
 				else slave.health -= 10;
 			}
@@ -474,7 +474,7 @@ window.rulesAutosurgery = (function() {
 				surgeries.push("bigger boobs");
 				slave.boobsImplant += 200;
 				slave.boobs += 200;
-				V.cash -= V.surgeryCost;
+				cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 				if (V.PC.medicine >= 100) slave.health -= 5;
 				else slave.health -= 10;
 			}
@@ -483,14 +483,14 @@ window.rulesAutosurgery = (function() {
 			surgeries.push("wider hips");
 			slave.hips++;
 			slave.hipsImplant++;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (V.PC.medicine >= 100) slave.health -= 5;
 			else slave.health -= 10;
 
 		} else if (slave.bellyImplant < 0 && V.bellyImplants > 0 && thisSurgery.surgery_bellyImplant == "install" && slave.womb.length == 0 && slave.broodmother == 0) {
 			slave.bellyImplant = 100;
 			slave.preg = -2;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 			if (slave.ovaries == 1 || slave.mpreg == 1) {
 				surgeries.push("belly implant");
 				V.surgeryType = "bellyIn";
@@ -514,7 +514,7 @@ window.rulesAutosurgery = (function() {
 			slave.preg = 0;
 			slave.bellyImplant = -1;
 			slave.cervixImplant = 0;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 		} else if (slave.balls > 0 && slave.vasectomy === 0 && thisSurgery.surgery_vasectomy === true) {
 			surgeries.push("vasectomy");
 			V.surgeryType = "vasectomy";
@@ -523,7 +523,7 @@ window.rulesAutosurgery = (function() {
 			else
 				slave.health -= 10;
 			slave.vasectomy = 1;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 		} else if (slave.balls > 0 && slave.vasectomy === 1 && thisSurgery.surgery_vasectomy === false) {
 			surgeries.push("undo vasectomy");
 			V.surgeryType = "vasectomy undo";
@@ -532,7 +532,7 @@ window.rulesAutosurgery = (function() {
 			else
 				slave.health -= 10;
 			slave.vasectomy = 0;
-			V.cash -= V.surgeryCost;
+			cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
 		}
 	}
 
diff --git a/src/js/slaveGenerationJS.tw b/src/js/slaveGenerationJS.tw
index 62987b67111b8d6fad147b4ab43957be37249629..e9aa0247ffbbd76bb3d12adab22191692fc141ce 100644
--- a/src/js/slaveGenerationJS.tw
+++ b/src/js/slaveGenerationJS.tw
@@ -1747,7 +1747,14 @@ window.BaseSlave = function BaseSlave() {
 		override_Brow_H_Color: 0,
 		missingEyes: 0,
 		missingArms: 0,
-		missingLegs: 0
+		missingLegs: 0,
+		slaveCost: 0,
+		lifetimeCashExpenses: 0,
+		lifetimeCashIncome: 0,
+		lastWeeksCashIncome: 0,
+		lifetimeRepExpenses: 0,
+		lifetimeRepIncome: 0,
+		lastWeeksRepIncome: 0
 	};
 };
 
diff --git a/src/npc/acquisition.tw b/src/npc/acquisition.tw
index 33fcb0d1e8428f48728f372f6d70c9a6eaaef9af..82b7b70ec74c83147c3f762a7d6280d57e4122d9 100644
--- a/src/npc/acquisition.tw
+++ b/src/npc/acquisition.tw
@@ -661,7 +661,7 @@ The previous owner seems to have left in something of a hurry.
 <</if>>
 <<if _valueOwed-_valueGiven > 0>>
 	There are some valuables present, worth <<print cashFormat(_valueOwed-_valueGiven)>>.
-	<<set $cash += _valueOwed-_valueGiven>>
+	<<run cashX((_valueOwed-_valueGiven), "event", $activeSlave)>>
 <</if>>
 //
 
diff --git a/src/npc/startingGirls/startingGirls.tw b/src/npc/startingGirls/startingGirls.tw
index bd5d924d57554e61a39d36ef91735687acd5aebd..2a39a27a10f407aaa641c16599fb3072ec2f86db 100644
--- a/src/npc/startingGirls/startingGirls.tw
+++ b/src/npc/startingGirls/startingGirls.tw
@@ -1511,7 +1511,7 @@ Her nationality is $activeSlave.nationality.
 		<<link "Add this slave">>
 			<<set $returnTo = "Commit Starting Girl", $createRelatedSlave = 0, $applyCareerBonus = 1, $careerBonusApplied = 0>>
 			<<StartingSlaveCost $activeSlave>>
-			<<set $cash -= $slaveCost>>
+			<<run cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave)>>
 			<<goto "RG AS Dump">>
 		<</link>>
 		//This will apply your @@.springgreen;career bonus@@ to her:
@@ -1542,7 +1542,7 @@ Her nationality is $activeSlave.nationality.
 		<<link "Add slave without career bonus">>
 			<<set $returnTo = "Commit Starting Girl", $createRelatedSlave = 0, $applyCareerBonus = 0, $careerBonusApplied = 0>>
 			<<StartingSlaveCost $activeSlave>>
-			<<set $cash -= $slaveCost>>
+			<<run cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave)>>
 			<<goto "RG AS Dump">>
 		<</link>>
 	<<else>>
@@ -1550,7 +1550,7 @@ Her nationality is $activeSlave.nationality.
 		<<link "Add this slave">>
 			<<set $returnTo = "Commit Starting Girl", $createRelatedSlave = 0, $applyCareerBonus = 0, $careerBonusApplied = 0>>
 			<<StartingSlaveCost $activeSlave>>
-			<<set $cash -= $slaveCost>>
+			<<run cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave)>>
 			<<goto "RG AS Dump">>
 		<</link>>
 		<br>
diff --git a/src/pregmod/JobFulfillmentCenter/JobFulfillmentCenterDelivery.tw b/src/pregmod/JobFulfillmentCenter/JobFulfillmentCenterDelivery.tw
index 4377b98d7e6e5fd18e87302802dc45c1004f253e..cb7fd11d08802997025bdc79bd89fac2e6913ded 100644
--- a/src/pregmod/JobFulfillmentCenter/JobFulfillmentCenterDelivery.tw
+++ b/src/pregmod/JobFulfillmentCenter/JobFulfillmentCenterDelivery.tw
@@ -17,7 +17,7 @@ A slave dealer has submitted a slave to satisfy your ''$Role'' order.
 <br><br><span id="result">
 <<if $cash >= $slaveCost>>
 	<<link "Accept the offered slave">>
-		<<set $cash -= $slaveCost>>
+		<<run cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave)>>
 		<<replace "#result">>
 			She has been very well trained by the dealer that offered her to you. She has also picked up on the fact that she was specially selected, and is a little hopeful that this means she may be treated well. She is now eagerly awaiting your instructions.
 			<<include "New Slave Intro">>
diff --git a/src/pregmod/artificialInsemination.tw b/src/pregmod/artificialInsemination.tw
index 64021a377c8042d213cfa3ded6751504feade0b2..4e628dc1f63b73ef42ec0b6b6d7c26dc10d89ee8 100644
--- a/src/pregmod/artificialInsemination.tw
+++ b/src/pregmod/artificialInsemination.tw
@@ -13,7 +13,7 @@ __Select an eligible slave to serve as the semen donatrix:__
 <<for _ai = 0; _ai < $slaves.length; _ai++>>
 	<<if $slaves[_ai].balls > 0 && $slaves[_ai].pubertyXY == 1 && canBreed($activeSlave, $slaves[_ai])>>
 		<<set _name = SlaveFullName($slaves[_ai])>>
-		<br><<print "[[_name|Surgery Degradation][$impregnatrix = $slaves[" + _ai + "], $cash -= $surgeryCost, $surgeryType = 'insemination']]">>
+		<br><<print "[[_name|Surgery Degradation][$impregnatrix = $slaves[" + _ai + "], cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $surgeryType = 'insemination']]">>
 		<<set _eligibility = 1>>
 	<</if>>
 <</for>>
@@ -29,7 +29,7 @@ __Select an eligible slave to serve as the semen donatrix:__
 	<br>
 	<<for _ai = 0; _ai < $tanks.length; _ai++>>
 		<<if $tanks[_ai].balls > 0 && $tanks[_ai].dick > 0 && canBreed($activeSlave, $tanks[_ai])>>
-			<br><<print "[[$tanks[_ai].slaveName|Surgery Degradation][$impregnatrix = $tanks[" + _ai + "], $cash -= $surgeryCost, $surgeryType = 'insemination']]">>
+			<br><<print "[[$tanks[_ai].slaveName|Surgery Degradation][$impregnatrix = $tanks[" + _ai + "], cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $surgeryType = 'insemination']]">>
 			<<set _eligibilityI = 1>>
 		<</if>>
 	<</for>>
@@ -40,9 +40,9 @@ __Select an eligible slave to serve as the semen donatrix:__
 
 <<if $PC.dick == 1>>
 	<br>
-	[[Use your own|Surgery Degradation][$impregnatrix = $PC, $cash -= $surgeryCost, $surgeryType = "insemination"]]
+	[[Use your own|Surgery Degradation][$impregnatrix = $PC, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $surgeryType = "insemination"]]
 <<elseif $PC.storedCum > 0>>
 	<br>
-	[[Use a vial of your own|Surgery Degradation][$impregnatrix = $PC, $cash -= $surgeryCost, $surgeryType = "insemination", $PC.storedCum--]]
+	[[Use a vial of your own|Surgery Degradation][$impregnatrix = $PC, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $surgeryType = "insemination", $PC.storedCum--]]
 	//You have enough sperm stored away to inseminate $PC.storedCum more slave<<if $PC.storedCum > 1>>s<</if>>.//
 <</if>>
\ No newline at end of file
diff --git a/src/pregmod/birthStorm.tw b/src/pregmod/birthStorm.tw
index d9d1fec6175adcb3bc4d0ae3de463da5b76e2fec..3604d1bbf262c00396da1b3278bd748b865b082c 100644
--- a/src/pregmod/birthStorm.tw
+++ b/src/pregmod/birthStorm.tw
@@ -59,7 +59,7 @@ The remote surgery allows the removal of the pregnancy generator through convent
 <</if>>
 <<if $Cash4Babies == 1 && _curBabies > 0>>
 	$His surviving <<if _curBabies > 1>>children<<else>>child<</if>> sold for a total of @@.yellowgreen;<<print cashFormat(_curBabies*(50+_babyPrice))>>.@@
-	<<set $cash += _curBabies*(50+_babyPrice)>>
+	<<run cashX((_curBabies*(50+_babyPrice)), "slaveTransfer", $activeSlave)>>
 <</if>>
 <<set $activeSlave.births += _curBabies>>
 <<set $activeSlave.birthsTotal += _curBabies>>
diff --git a/src/pregmod/criminalMarkets.tw b/src/pregmod/criminalMarkets.tw
index ab81e868f44b7a288fb360c1813d65db05a1003d..9404a1c854a82977c83bef9adf21df8696e2ee6d 100644
--- a/src/pregmod/criminalMarkets.tw
+++ b/src/pregmod/criminalMarkets.tw
@@ -52,11 +52,11 @@ You board the transport to
 It will cost <<print cashFormat($slaveCost)>> to enslave $him.
 
 <<if $cash >= $slaveCost>>
-	<br>[["Enslave " + $him + " and check out other available prisoners"|Criminal Market][$cash -= $slaveCost, $newSlaves.push($activeSlave), $introType = "multi", $slavesSeen+=1]]
+	<br>[["Enslave " + $him + " and check out other available prisoners"|Criminal Market][$cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave), $newSlaves.push($activeSlave), $introType = "multi", $slavesSeen+=1]]
 	<<if $newSlaves.length == 0>>
-		<br>[["Enslave " + $him|New Slave Intro][$cash -= $slaveCost,$nextButton = "Continue",$nextLink = "AS Dump",$returnTo = "Main"]]
+		<br>[["Enslave " + $him|New Slave Intro][$cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave),$nextButton = "Continue",$nextLink = "AS Dump",$returnTo = "Main"]]
 	<<else>>
-		<br>[["Enslave " + $him + " and finish your inspection"|Bulk Slave Intro][$cash -= $slaveCost, $newSlaves.push($activeSlave)]]
+		<br>[["Enslave " + $him + " and finish your inspection"|Bulk Slave Intro][$cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave), $newSlaves.push($activeSlave)]]
 	<</if>>
 <<else>>
 	//You lack the necessary funds to enslave this criminal.//
diff --git a/src/pregmod/csec.tw b/src/pregmod/csec.tw
index 1bb2a94d7ec18ad063173dc28f43279c5bb0becc..e1558e5f689ad56d7773fb3bfecccf5892a10990 100644
--- a/src/pregmod/csec.tw
+++ b/src/pregmod/csec.tw
@@ -212,7 +212,7 @@ Performing a cesarean section is trivial for the remote surgery to carry out. $a
 	<<elseif $Cash4Babies == 1 && ($activeSlave.relationship != -3) && ($activeSlave.assignment != "serve in the master suite") && ($activeSlave.assignment != "be your Concubine")>>
 		<<set _lostBabies = 1, _babyCost = random(-12,12)>>
 		sold for a total of @@.yellowgreen;<<print cashFormat(_curBabies*(50+_babyCost))>>.@@
-		<<set $cash += _curBabies*(50+_babyCost)>>
+		<<run cashX((_curBabies*(50+_babyCost)), "slaveTransfer", $activeSlave)>>
 	<<elseif $universalRulesChildrenBecomeBreeders > 0 && $arcologies[0].FSRepopulationFocus > 40 && $DefaultBirthDestination === "individually decided fates">>
 		<<set _lostBabies = 1>>
 		<<= BirthDestinationText("Orphanage",$activeSlave)>>
diff --git a/src/pregmod/eliteSlave.tw b/src/pregmod/eliteSlave.tw
index 27349e77b44ac14972d3be1917718f533fa166dd..887bfac23c35054c8643421c3f68c2976053c086 100644
--- a/src/pregmod/eliteSlave.tw
+++ b/src/pregmod/eliteSlave.tw
@@ -210,7 +210,7 @@ It will take <<print cashFormat($slaveCost)>> to win the auction.
 
 <br><br>
 <<if $cash >= $slaveCost>>
-	[[Place that bid|New Slave Intro][$cash -= $slaveCost,$nextButton = "Continue",$nextLink = "AS Dump",$returnTo = "Main"]]
+	[[Place that bid|New Slave Intro][$cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave),$nextButton = "Continue",$nextLink = "AS Dump",$returnTo = "Main"]]
 <<else>>
 	//You lack the necessary funds to place a winning bid.//
 <</if>>
diff --git a/src/pregmod/fMarry.tw b/src/pregmod/fMarry.tw
index 4800df4c142e664acd3101f6e11d65f1f4cc949f..4e3b9a430d74bddb50355561447bb1ded69a6bdd 100644
--- a/src/pregmod/fMarry.tw
+++ b/src/pregmod/fMarry.tw
@@ -718,7 +718,7 @@ You tell $activeSlave.slaveName that you're going to marry $him. (A proposal, of
 	<<replace "#result">>
 	You order $assistantName to invite deserving citizens to a straightforward ceremony for a slave being married to a slaveowner, and to make the arrangement. The wedding will take place during the upcoming week.
 	<<set $weddingPlanned = 1>>
-	<<set $cash -= 10000>>
+	<<run cashX(-10000, "event", $activeSlave)>>
 	<</replace>>
 <</link>>
 <<if ($activeSlave.vagina != 0) && ($activeSlave.anus != 0)>>
@@ -726,7 +726,7 @@ You tell $activeSlave.slaveName that you're going to marry $him. (A proposal, of
 	<<replace "#result">>
 	You order $assistantName to invite deserving citizens to an orgiastic ceremony for a slave being married to a slaveowner, and to make the arrangements. The wedding orgy will take place during the upcoming week.
 	<<set $weddingPlanned = 2>>
-	<<set $cash -= 10000>>
+	<<run cashX(-10000, "event", $activeSlave)>>
 	<</replace>>
 <</link>> //This will involve the slave having sex with a very large number of citizens//
 <</if>>
@@ -735,7 +735,7 @@ You tell $activeSlave.slaveName that you're going to marry $him. (A proposal, of
 	<<replace "#result">>
 	You order $assistantName to invite deserving citizens to a ceremony for a fertile slave being married to a slaveowner, and to make the arrangements. The wedding will take place during the upcoming week.
 	<<set $weddingPlanned = 3>>
-	<<set $cash -= 10000>>
+	<<run cashX(-10000, "event", $activeSlave)>>
 	<</replace>>
 <</link>> //This will involve you impregnating the slave//
 <</if>>
diff --git a/src/pregmod/huskSlave.tw b/src/pregmod/huskSlave.tw
index 2e3d5be59a9d41c9d023b74f4723b4fec696c080..e40c9bd8d8d433d51f6bde0eb6a8a9d599adcb66 100644
--- a/src/pregmod/huskSlave.tw
+++ b/src/pregmod/huskSlave.tw
@@ -51,9 +51,9 @@ Virginity:
 <br><br><br>
 Reserving a body will cost <<print cashFormat(10000)>> up front. Canceling an order will refund your money, however if a delivered body is rejected; your money will not be refunded.
 <<if $huskSlaveOrdered == 1>>
-[[Withdraw body order|Main][$huskSlaveOrdered = 0, $cash += 10000]]
+[[Withdraw body order|Main][$huskSlaveOrdered = 0, cashX(10000, "slaveTransfer")]]
 <<elseif $cash < 10000>>
 	//You lack the credits to place a body reservation.//
 <<else>>
-[[Post body order|Main][$huskSlaveOrdered = 1, $cash -= 10000]]
+[[Post body order|Main][$huskSlaveOrdered = 1, cashX(-10000, "slaveTransfer")]]
 <</if>>
diff --git a/src/pregmod/huskSlaveSwap.tw b/src/pregmod/huskSlaveSwap.tw
index e703d5ab514cc62a8bf537c1304eed2aa7d84b77..a6e9a33cd46587f08bde9ed24aa6a6f57bb80a42 100644
--- a/src/pregmod/huskSlaveSwap.tw
+++ b/src/pregmod/huskSlaveSwap.tw
@@ -38,5 +38,5 @@ $slaves[_m].slaveName's old body was bought by the Flesh Heap for <<print cashFo
 	<</if>>
 <</if>>
 <<set $slaves[_m].bodySwap++>>
-<<set $cash += _payout>>
+<<run cashX(_payout, "slaveTransfer")>>
 <<set $activeSlave = 0, $swappingSlave = 0>>
diff --git a/src/pregmod/incubator.tw b/src/pregmod/incubator.tw
index 31ad363baf906b26ec030f9b183b8bb3c476f284..c73049ad8aaaf2cba6f5698385bf97acf9f0cf83 100644
--- a/src/pregmod/incubator.tw
+++ b/src/pregmod/incubator.tw
@@ -491,7 +491,7 @@ Target age for release: <<textbox "$targetAge" $targetAge "Incubator">> [[Minimu
 			<br>
 			<<if $tanks[$i].ovaries == 0 && $tankOrgans.ovaries != 1>>
 				<<link "Prepare ovaries">>
-					<<set $cash -= 10000>>
+					<<run cashX(-10000, "incubator", $tanks[$i])>>
 					<<set _newOrgan = {type: "ovaries", weeksToCompletion: "10", ID: 0}>>
 					<<set _newOrgan.ID = $tanks[$i].ID>>
 					<<set $incubatorOrgans.push(_newOrgan)>>
@@ -500,7 +500,7 @@ Target age for release: <<textbox "$targetAge" $targetAge "Incubator">> [[Minimu
 			<</if>>
 			<<if $tanks[$i].dick == 0 && $tankOrgans.penis != 1>>
 				<<link "Prepare penis">>
-					<<set $cash -= 5000>>
+					<<run cashX(-5000, "incubator", $tanks[$i])>>
 					<<set _newOrgan = {type: "penis", weeksToCompletion: "5", ID: 0}>>
 					<<set _newOrgan.ID = $tanks[$i].ID>>
 					<<set $incubatorOrgans.push(_newOrgan)>>
@@ -510,7 +510,7 @@ Target age for release: <<textbox "$targetAge" $targetAge "Incubator">> [[Minimu
 			<<if $tanks[$i].balls == 0 && $tankOrgans.testicles != 1>>
 				|
 				<<link "Prepare testicles">>
-					<<set $cash -= 5000>>
+					<<run cashX(-5000, "incubator", $tanks[$i])>>
 					<<set _newOrgan = {type: "testicles", weeksToCompletion: "10", ID: 0}>>
 					<<set _newOrgan.ID = $tanks[$i].ID>>
 					<<set $incubatorOrgans.push(_newOrgan)>>
@@ -520,7 +520,7 @@ Target age for release: <<textbox "$targetAge" $targetAge "Incubator">> [[Minimu
 			<<if $tanks[$i].eyes == -2 && $tankOrgans.eyes != 1>>
 				<br>$He appears to be blind:
 				<<link "Prepare eyes">>
-					<<set $cash -= 10000>>
+					<<run cashX(-10000, "incubator", $tanks[$i])>>
 					<<set _newOrgan = {type: "eyes", weeksToCompletion: "10", ID: 0}>>
 					<<set _newOrgan.ID = $tanks[$i].ID>>
 					<<set $incubatorOrgans.push(_newOrgan)>>
@@ -530,7 +530,7 @@ Target age for release: <<textbox "$targetAge" $targetAge "Incubator">> [[Minimu
 			<<if $tanks[$i].voice == 0 && $tankOrgans.voicebox != 1>>
 				<br>It appears $he was born a mute:
 				<<link "Prepare vocal cords">>
-					<<set $cash -= 5000>>
+					<<run cashX(-5000, "incubator", $tanks[$i])>>
 					<<set _newOrgan = {type: "voicebox", weeksToCompletion: "5", ID: 0}>>
 					<<set _newOrgan.ID = $tanks[$i].ID>>
 					<<set $incubatorOrgans.push(_newOrgan)>>
diff --git a/src/pregmod/newChildIntro.tw b/src/pregmod/newChildIntro.tw
index 923359f9e8781d237a78f9eaffd99eed6c0c2293..22a7db119815afcfa3b2468f37626137eca93863 100644
--- a/src/pregmod/newChildIntro.tw
+++ b/src/pregmod/newChildIntro.tw
@@ -1102,7 +1102,7 @@ You beckon the curious girl to your hefty breasts, having noticed how hungrily $
 <<if $activeSlave.dick == 0 && $activeSlave.vagina > -1>>
 <br><<link "Give $him a smart clitoral piercing">>
 <<set $activeSlave.clitPiercing = 3>>
-	<<set $cash -= $SPcost>>
+	<<run cashX(forceNeg($SPcost), "slaveMod", $activeSlave)>>
 <<replace "#result">>
 	You take $him to the body modification studio, strap $him down, pierce $his clit, and insert what appears to be a large stainless steel barbell piercing. It actually contains a device that can vibrate to give $him sexual stimulation or create subtle pain to suppress pleasure. It is connected wirelessly to the arcology, which can be given instructions to encourage or discourage sexual pleasure in specific situations. You run a quick test. On the oral setting, as soon as $he kneels in front of your crotch, $he gasps as the stimulation starts. On the anal setting, $he whimpers when you run a finger across $his asshole.
 <</replace>>
@@ -1111,7 +1111,7 @@ You beckon the curious girl to your hefty breasts, having noticed how hungrily $
 <<elseif $activeSlave.dick > 0>>
 <br><<link "Give $him a smart frenulum piercing">>
 <<set $activeSlave.clitPiercing = 3>>
-	<<set $cash -= $SPcost>>
+	<<run cashX(forceNeg($SPcost), "slaveMod", $activeSlave)>>
 <<replace "#result">>
 	You take $him to the body modification studio, strap $him down, pierce $his frenulum, and insert what appears to be a large stainless steel barbell piercing. It actually contains a device that can vibrate to give $him sexual stimulation or create subtle pain to suppress pleasure. It is connected wirelessly to the arcology, which can be given instructions to encourage or discourage sexual pleasure in specific situations. You run a quick test. On the oral setting, as soon as $he kneels in front of your crotch, $he gasps as the stimulation starts. On the anal setting, $he whimpers and gets rock hard when you run a finger across $his asshole.
 <</replace>>
@@ -1241,7 +1241,7 @@ You beckon the curious girl to your hefty breasts, having noticed how hungrily $
 		<<set $activeSlave.trust += 20>>
 		<<set $activeSlave.boobs += 4000>>
 		<<set $activeSlave.boobsImplant += 4000>>
-		<<set $cash -= $surgeryCost>>
+		<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 		<<set $activeSlave.health -= 10>>
 		<<set $activeSlave.boobShape = "normal">>
 		<<replace "#result">>
@@ -1254,7 +1254,7 @@ You beckon the curious girl to your hefty breasts, having noticed how hungrily $
 		<<set $activeSlave.boobs += 7500>>
 		<<set $activeSlave.boobsImplant += 7500>>
 		<<set $activeSlave.boobsImplantType = 1>>
-		<<set $cash -= $surgeryCost>>
+		<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 		<<set $activeSlave.health -= 10>>
 		<<set $activeSlave.boobShape = "normal">>
 		<<replace "#result">>
@@ -1267,7 +1267,7 @@ You beckon the curious girl to your hefty breasts, having noticed how hungrily $
 		<<set $activeSlave.trust += 10>>
 		<<set $activeSlave.boobs += 1000>>
 		<<set $activeSlave.boobsImplant += 1000>>
-		<<set $cash -= $surgeryCost>>
+		<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 		<<set $activeSlave.health -= 10>>
 		<<set $activeSlave.boobShape = "normal">>
 		<<replace "#result">>
@@ -1280,7 +1280,7 @@ You beckon the curious girl to your hefty breasts, having noticed how hungrily $
 		<<set $activeSlave.boobs += 1500>>
 		<<set $activeSlave.boobsImplant += 1500>>
 		<<set $activeSlave.boobsImplantType = 1>>
-		<<set $cash -= $surgeryCost>>
+		<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 		<<set $activeSlave.health -= 10>>
 		<<set $activeSlave.boobShape = "normal">>
 		<<replace "#result">>
@@ -1309,7 +1309,7 @@ You beckon the curious girl to your hefty breasts, having noticed how hungrily $
 			<<set $activeSlave.devotion += 25>>
 			<<set $activeSlave.trust += 25>>
 			<<set $activeSlave.bellyImplant = 200000>>
-			<<set $cash -= $surgeryCost>>
+			<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 			<<set $activeSlave.health -= 50>>
 			<<run SetBellySize($activeSlave)>>
 			<<replace "#result">>
@@ -1321,7 +1321,7 @@ You beckon the curious girl to your hefty breasts, having noticed how hungrily $
 		<<set $activeSlave.devotion += 15>>
 		<<set $activeSlave.trust += 15>>
 		<<set $activeSlave.bellyImplant = 2000>>
-		<<set $cash -= $surgeryCost>>
+		<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 		<<set $activeSlave.health -= 10>>
 		<<run SetBellySize($activeSlave)>>
 		<<replace "#result">>
@@ -1392,7 +1392,7 @@ You beckon the curious girl to your hefty breasts, having noticed how hungrily $
 			<<set $activeSlave.trust += 15>>
 			<<set $activeSlave.hips += 1>>
 			<<set $activeSlave.hipsImplant = 1>>
-			<<set $cash -= $surgeryCost>>
+			<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 			<<set $activeSlave.health -= 40>>
 			<<replace "#result">>
 				You escort $him to the remote surgery, strap $him in, and put $him under. When $he awakes, $he can't keep $his hands off $his wide hips, especially since $he can't figure out how to roll over with them. $He's @@.hotpink;deliriously happy@@ that $he is ridiculously wide and @@.mediumaquamarine;wiggles $his door-jammers cheerfully@@ at you whenever $he gets the chance. Since the surgery was invasive, @@.red;$his health has been greatly affected.@@
@@ -1404,7 +1404,7 @@ You beckon the curious girl to your hefty breasts, having noticed how hungrily $
 			<<set $activeSlave.trust += 15>>
 			<<set $activeSlave.hips += 1>>
 			<<set $activeSlave.hipsImplant = 1>>
-			<<set $cash -= $surgeryCost>>
+			<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 			<<set $activeSlave.health -= 40>>
 			<<replace "#result">>
 				You escort $him to the remote surgery, strap $him in, and put $him under. When $he awakes, $he can't keep $his hands off $his wide hips. $He's @@.hotpink;deliriously happy@@ that $he is wider than ever and @@.mediumaquamarine;wiggles $his hips cheerfully@@ at you whenever $he gets the chance. Since the surgery was invasive, @@.red;$his health has been greatly affected.@@
@@ -1448,7 +1448,7 @@ You beckon the curious girl to your hefty breasts, having noticed how hungrily $
 		<<set $activeSlave.trust += 20>>
 		<<set $activeSlave.butt += 8>>
 		<<set $activeSlave.buttImplant += 8>>
-		<<set $cash -= $surgeryCost>>
+		<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 		<<set $activeSlave.health -= 10>>
 		<<replace "#result">>
 			You escort $him to the remote surgery, strap $him in, and put $him under. When $he awakes, $he can't keep $his hands off $his new ridiculous fake ass, not that $he has much choice, since it has $him pinned to the bed. $He's @@.hotpink;deliriously happy@@ that $he has $his own pair of giant butt cheeks ballooning from $his bottom and @@.mediumaquamarine;hopes@@ you have plans to make them even bigger, even though $he is already struggling to escape from under them. As with all surgery @@.red;$his health has been slightly affected.@@
@@ -1460,7 +1460,7 @@ You beckon the curious girl to your hefty breasts, having noticed how hungrily $
 		<<set $activeSlave.trust += 10>>
 		<<set $activeSlave.butt += 2>>
 		<<set $activeSlave.buttImplant += 2>>
-		<<set $cash -= $surgeryCost>>
+		<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 		<<set $activeSlave.health -= 10>>
 		<<replace "#result">>
 			You escort $him to the remote surgery, strap $him in, and put $him under. When $he awakes, $he can't keep $his hands off $his new fake bottom. $He's @@.hotpink;deliriously happy@@ that $he has $his own pair of big butt cheeks hanging from $his rear and @@.mediumaquamarine;hopes@@ you have plans to make them even bigger. As with all surgery @@.red;$his health has been slightly affected.@@
@@ -1472,7 +1472,7 @@ You beckon the curious girl to your hefty breasts, having noticed how hungrily $
 		<<set $activeSlave.butt += 3>>
 		<<set $activeSlave.buttImplant += 3>>
 		<<set $activeSlave.buttImplantType = 1>>
-		<<set $cash -= $surgeryCost>>
+		<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 		<<set $activeSlave.health -= 10>>
 		<<replace "#result">>
 			You escort $him to the remote surgery, strap $him in, and put $him under. When $he awakes, $he can't keep $his hands off $his new fake bottom. $He's @@.hotpink;deliriously happy@@ that $he has $his own pair of big butt cheeks hanging from $his rear and @@.mediumaquamarine;bounces them cheerfully@@ when $he hears they'll keep growing. As with all surgery @@.red;$his health has been slightly affected.@@
diff --git a/src/pregmod/organFarm.tw b/src/pregmod/organFarm.tw
index c0c2fada1e05ddad0c5b79442909c85a235644ee..293c7d6aff32a9a0921f000fe2f5bcacaf4cce2a 100644
--- a/src/pregmod/organFarm.tw
+++ b/src/pregmod/organFarm.tw
@@ -34,12 +34,12 @@ The Organ Farm
 	//The organ farm cannot be upgraded while it is use//
 	<br>
 <<elseif ($organFarmUpgrade == 2) && ($rep > 10000*_PCSkillCheck)>>
-	[[Upgrade the organ farm to the cutting edge model|Organ Farm][$cash -= 150000*_PCSkillCheck, $organFarmUpgrade = 3]]
+	[[Upgrade the organ farm to the cutting edge model|Organ Farm][cashX(forceNeg(150000*_PCSkillCheck), "capEx"), $organFarmUpgrade = 3]]
 	//Costs <<print cashFormat(150000*_PCSkillCheck)>>//
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;//Will allow the organ farm to rapidly grow organs without risk to the implantee's health.//
 	<br>
 <<elseif ($organFarmUpgrade == 1) && ($rep > 10000*_PCSkillCheck)>>
-	[[Upgrade the organ farm with an experimental growth accelerator|Organ Farm][$cash -= 75000*_PCSkillCheck, $organFarmUpgrade = 2]]
+	[[Upgrade the organ farm with an experimental growth accelerator|Organ Farm][cashX(forceNeg(75000*_PCSkillCheck), "capEx"), $organFarmUpgrade = 2]]
 	//Costs <<print cashFormat(75000*_PCSkillCheck)>>//
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;//Will allow the organ farm to quickly grow organs. Implanted organs may cause health issues.//
 	<br>
@@ -136,7 +136,7 @@ Organ Production
 	//You lack the reputation to access designs for cloning fertile ovaries for menopausal slaves.//
 	<br>
 <<elseif ($youngerOvaries != 1) && ($rep > 10000*_PCSkillCheck)>>
-	[[Purchase designs for cloning fertile ovaries for menopausal slaves|Organ Farm][$cash -= 30000*_PCSkillCheck, $youngerOvaries = 1]]
+	[[Purchase designs for cloning fertile ovaries for menopausal slaves|Organ Farm][cashX(forceNeg(30000*_PCSkillCheck), "capEx"), $youngerOvaries = 1]]
 	//Costs <<print cashFormat(30000*_PCSkillCheck)>>//
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;//Will allow the growth of younger, fertile ovaries for menopausal slaves. Restored fertility will only last for a couple years at most.//
 	<br>
@@ -192,7 +192,7 @@ Future Societies Research
 <<if $arcologies[0].FSGenderRadicalistDecoration == 100>>
 	<<if ($arcologies[0].FSGenderRadicalistResearch == 0)>>
 		<<if ($rep >= 10000*_PCSkillCheck)>>
-			[[Fund research into developing male pregnancy methods|Organ Farm][$cash -= 50000*_PCSkillCheck,$arcologies[0].FSGenderRadicalistResearch = 1]] //Costs <<print cashFormat(50000*_PCSkillCheck)>>. Will allow cloning and production of anal uteri and ovaries.//
+			[[Fund research into developing male pregnancy methods|Organ Farm][cashX(forceNeg(50000*_PCSkillCheck), "capEx"),$arcologies[0].FSGenderRadicalistResearch = 1]] //Costs <<print cashFormat(50000*_PCSkillCheck)>>. Will allow cloning and production of anal uteri and ovaries.//
 			<br>
 		<<else>>
 			// You lack the reputation to access the research necessary to develop anal uteri and ovaries. //
diff --git a/src/pregmod/organFarmOptions.tw b/src/pregmod/organFarmOptions.tw
index a7528c9b3c332f260811771df33a37fa5f280fe6..cf92b569f0ca651df3718b33a47c9a9e4c77343d 100644
--- a/src/pregmod/organFarmOptions.tw
+++ b/src/pregmod/organFarmOptions.tw
@@ -85,7 +85,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 	<<if $slaveOrgans.penis != 1>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		<<link "Penis">>
-			<<set $cash -= 5000>>
+			<<run cashX(-5000, "slaveSurgery", $activeSlave)>>
 			<<set _newOrgan = {type: "penis", weeksToCompletion: "5", ID: 0}>>
 			<<set _newOrgan.ID = $activeSlave.ID>>
 			<<set $organs.push(_newOrgan)>>
@@ -95,7 +95,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 	<<if $slaveOrgans.testicles != 1>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		<<link "Testicles">>
-			<<set $cash -= 5000>>
+			<<run cashX(-5000, "slaveSurgery", $activeSlave)>>
 			<<set _newOrgan = {type: "testicles", weeksToCompletion: "10", ID: 0}>>
 			<<set _newOrgan.ID = $activeSlave.ID>>
 			<<set $organs.push(_newOrgan)>>
@@ -106,7 +106,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 		<<if $activeSlave.scrotum == 0>>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
 			<<link "Scrotum">>
-				<<set $cash -= 2500>>
+				<<run cashX(-2500, "slaveSurgery", $activeSlave)>>
 				<<set _newOrgan = {type: "scrotum", weeksToCompletion: "5", ID: 0}>>
 				<<set _newOrgan.ID = $activeSlave.ID>>
 				<<set $organs.push(_newOrgan)>>
@@ -118,7 +118,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 		<<if $slaveOrgans.pigTesticles != 1>>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
 			<<link "Pig testicles">>
-				<<set $cash -= 5000>>
+				<<run cashX(-5000, "slaveSurgery", $activeSlave)>>
 				<<set _newOrgan = {type: "pigTesticles", weeksToCompletion: "10", ID: 0}>>
 				<<set _newOrgan.ID = $activeSlave.ID>>
 				<<set $organs.push(_newOrgan)>>
@@ -128,7 +128,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 		<<if $slaveOrgans.dogTesticles != 1>>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
 			<<link "Dog testicles">>
-				<<set $cash -= 5000>>
+				<<run cashX(-5000, "slaveSurgery", $activeSlave)>>
 				<<set _newOrgan = {type: "dogTesticles", weeksToCompletion: "10", ID: 0}>>
 				<<set _newOrgan.ID = $activeSlave.ID>>
 				<<set $organs.push(_newOrgan)>>
@@ -138,7 +138,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 		<<if $slaveOrgans.horseTesticles != 1>>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
 			<<link "Horse testicles">>
-				<<set $cash -= 5000>>
+				<<run cashX(-5000, "slaveSurgery", $activeSlave)>>
 				<<set _newOrgan = {type: "horseTesticles", weeksToCompletion: "10", ID: 0}>>
 				<<set _newOrgan.ID = $activeSlave.ID>>
 				<<set $organs.push(_newOrgan)>>
@@ -148,7 +148,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 		<<if $slaveOrgans.cowTesticles != 1>>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
 			<<link "Cow testicles">>
-				<<set $cash -= 5000>>
+				<<run cashX(-5000, "slaveSurgery", $activeSlave)>>
 				<<set _newOrgan = {type: "cowTesticles", weeksToCompletion: "10", ID: 0}>>
 				<<set _newOrgan.ID = $activeSlave.ID>>
 				<<set $organs.push(_newOrgan)>>
@@ -160,7 +160,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 		<<if $activeSlave.foreskin <= 0>>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
 			<<link "Foreskin">>
-				<<set $cash -= 2500>>
+				<<run cashX(-2500, "slaveSurgery", $activeSlave)>>
 				<<set _newOrgan = {type: "foreskin", weeksToCompletion: "5", ID: 0}>>
 				<<set _newOrgan.ID = $activeSlave.ID>>
 				<<set $organs.push(_newOrgan)>>
@@ -172,7 +172,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 <<if $slaveOrgans.prostate != 1>>
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
 	<<link "Prostate">>
-		<<set $cash -= 5000>>
+		<<run cashX(-5000, "slaveSurgery", $activeSlave)>>
 		<<set _newOrgan = {type: "prostate", weeksToCompletion: "5", ID: 0}>>
 		<<set _newOrgan.ID = $activeSlave.ID>>
 		<<set $organs.push(_newOrgan)>>
@@ -182,7 +182,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 <<if $slaveOrgans.ovaries != 1>>
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
 	<<link "Ovaries">>
-		<<set $cash -= 10000>>
+		<<run cashX(-10000, "slaveSurgery", $activeSlave)>>
 		<<set _newOrgan = {type: "ovaries", weeksToCompletion: "10", ID: 0}>>
 		<<set _newOrgan.ID = $activeSlave.ID>>
 		<<set $organs.push(_newOrgan)>>
@@ -193,7 +193,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 	<<if $slaveOrgans.asexualReproOvaries != 1>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		<<link "Asexual reproduction modification">>
-			<<set $cash -= 10000>>
+			<<run cashX(-10000, "slaveSurgery", $activeSlave)>>
 			<<set _newOrgan = {type: "asexualReproOvaries", weeksToCompletion: "10", ID: 0}>>
 			<<set _newOrgan.ID = $activeSlave.ID>>
 			<<set $organs.push(_newOrgan)>>
@@ -205,7 +205,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 	<<if $slaveOrgans.pigOvaries != 1>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
 			<<link "Pig ovaries">>
-			<<set $cash -= 10000>>
+			<<run cashX(-10000, "slaveSurgery", $activeSlave)>>
 			<<set _newOrgan = {type: "pigOvaries", weeksToCompletion: "10", ID: 0}>>
 			<<set _newOrgan.ID = $activeSlave.ID>>
 			<<set $organs.push(_newOrgan)>>
@@ -215,7 +215,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 	<<if $slaveOrgans.dogOvaries != 1>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		<<link "Dog ovaries">>
-			<<set $cash -= 10000>>
+			<<run cashX(-10000, "slaveSurgery", $activeSlave)>>
 			<<set _newOrgan = {type: "dogOvaries", weeksToCompletion: "10", ID: 0}>>
 			<<set _newOrgan.ID = $activeSlave.ID>>
 			<<set $organs.push(_newOrgan)>>
@@ -225,7 +225,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 	<<if $slaveOrgans.horseOvaries != 1>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		<<link "Horse ovaries">>
-			<<set $cash -= 10000>>
+			<<run cashX(-10000, "slaveSurgery", $activeSlave)>>
 			<<set _newOrgan = {type: "horseOvaries", weeksToCompletion: "10", ID: 0}>>
 			<<set _newOrgan.ID = $activeSlave.ID>>
 			<<set $organs.push(_newOrgan)>>
@@ -235,7 +235,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 	<<if $slaveOrgans.cowOvaries != 1>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		<<link "Cow ovaries">>
-			<<set $cash -= 10000>>
+			<<run cashX(-10000, "slaveSurgery", $activeSlave)>>
 			<<set _newOrgan = {type: "cowOvaries", weeksToCompletion: "10", ID: 0}>>
 			<<set _newOrgan.ID = $activeSlave.ID>>
 			<<set $organs.push(_newOrgan)>>
@@ -247,7 +247,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 	<<if $slaveOrgans.freshOvaries != 1>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		<<link "Younger Ovaries">>
-			<<set $cash -= 10000>>
+			<<run cashX(-10000, "slaveSurgery", $activeSlave)>>
 			<<set _newOrgan = {type: "freshOvaries", weeksToCompletion: "10", ID: 0}>>
 			<<set _newOrgan.ID = $activeSlave.ID>>
 			<<set $organs.push(_newOrgan)>>
@@ -259,7 +259,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 	<<if $activeSlave.eyes <= -2 && $activeSlave.eyes != "implant">>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		<<link "Eyes">>
-			<<set $cash -= 10000>>
+			<<run cashX(-10000, "slaveSurgery", $activeSlave)>>
 			<<set _newOrgan = {type: "eyes", weeksToCompletion: "10", ID: 0}>>
 			<<set _newOrgan.ID = $activeSlave.ID>>
 			<<set $organs.push(_newOrgan)>>
@@ -271,7 +271,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 	<<if $activeSlave.hears <= -2 && $activeSlave.earImplant != 1>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		<<link "Cochleae">>
-			<<set $cash -= 10000>>
+			<<run cashX(-10000, "slaveSurgery", $activeSlave)>>
 			<<set _newOrgan = {type: "cochleae", weeksToCompletion: "6", ID: 0}>>
 			<<set _newOrgan.ID = $activeSlave.ID>>
 			<<set $organs.push(_newOrgan)>>
@@ -283,7 +283,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 	<<if ($activeSlave.voice == 0)>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		<<link "Vocal cords">>
-			<<set $cash -= 5000>>
+			<<run cashX(-5000, "slaveSurgery", $activeSlave)>>
 			<<set _newOrgan = {type: "voicebox", weeksToCompletion: "5", ID: 0}>>
 			<<set _newOrgan.ID = $activeSlave.ID>>
 			<<set $organs.push(_newOrgan)>>
@@ -295,7 +295,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 	<<if $slaveOrgans.mpreg != 1>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		<<link "Anal womb and ovaries">>
-			<<set $cash -= 20000>>
+			<<run cashX(-20000, "slaveSurgery", $activeSlave)>>
 			<<set _newOrgan = {type: "mpreg", weeksToCompletion: "10", ID: 0}>>
 			<<set _newOrgan.ID = $activeSlave.ID>>
 			<<set $organs.push(_newOrgan)>>
@@ -307,7 +307,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 		<<if $slaveOrgans.mpregPig != 1>>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
 			<<link "Anal pig womb and ovaries">>
-				<<set $cash -= 20000>>
+				<<run cashX(-20000, "slaveSurgery", $activeSlave)>>
 				<<set _newOrgan = {type: "mpregPig", weeksToCompletion: "10", ID: 0}>>
 				<<set _newOrgan.ID = $activeSlave.ID>>
 				<<set $organs.push(_newOrgan)>>
@@ -317,7 +317,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 		<<if $slaveOrgans.mpregDog != 1>>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
 			<<link "Anal dog womb and ovaries">>
-				<<set $cash -= 20000>>
+				<<run cashX(-20000, "slaveSurgery", $activeSlave)>>
 				<<set _newOrgan = {type: "mpregDog", weeksToCompletion: "10", ID: 0}>>
 				<<set _newOrgan.ID = $activeSlave.ID>>
 				<<set $organs.push(_newOrgan)>>
@@ -327,7 +327,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 		<<if $slaveOrgans.mpregHorse != 1>>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
 			<<link "Anal horse womb and ovaries">>
-				<<set $cash -= 20000>>
+				<<run cashX(-20000, "slaveSurgery", $activeSlave)>>
 				<<set _newOrgan = {type: "mpregHorse", weeksToCompletion: "10", ID: 0}>>
 				<<set _newOrgan.ID = $activeSlave.ID>>
 				<<set $organs.push(_newOrgan)>>
@@ -337,7 +337,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 		<<if $slaveOrgans.mpregCow != 1>>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
 			<<link "Anal cow womb and ovaries">>
-				<<set $cash -= 20000>>
+				<<run cashX(-20000, "slaveSurgery", $activeSlave)>>
 				<<set _newOrgan = {type: "mpregCow", weeksToCompletion: "10", ID: 0}>>
 				<<set _newOrgan.ID = $activeSlave.ID>>
 				<<set $organs.push(_newOrgan)>>
@@ -413,7 +413,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 				<<else>>
 					<br>&nbsp;&nbsp;&nbsp;&nbsp;
 					<<link "Implant" "Surgery Degradation">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "penis"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
@@ -467,7 +467,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 					<</link>>
 					<br>You can replace $his existing testicles with a new pair.
 					<<link "Implant" "Surgery Degradation">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "testicles"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
@@ -506,7 +506,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 					<</link>>
 					<br>You can forgo standard procedure and implant testicles directly into $his abdomen.
 					<<link "Implant" "Surgery Degradation">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "testicles"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
@@ -536,7 +536,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 				<<else>>
 					<br>&nbsp;&nbsp;&nbsp;&nbsp;
 					<<link "Implant" "Surgery Degradation">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "testicles"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
@@ -601,7 +601,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 					<</link>>
 					<br>You can replace $his existing testicles with a new pair.
 					<<link "Implant" "Surgery Degradation">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "pigTesticles"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
@@ -640,7 +640,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 					<</link>>
 					<br>You can forgo standard procedure and implant testicles directly into $his abdomen.
 					<<link "Implant" "Surgery Degradation">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "pigTesticles"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
@@ -670,7 +670,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 				<<else>>
 					<br>&nbsp;&nbsp;&nbsp;&nbsp;
 					<<link "Implant" "Surgery Degradation">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "pigTesticles"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
@@ -732,7 +732,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 					<</link>>
 					<br>You can replace $his existing testicles with a new pair.
 					<<link "Implant" "Surgery Degradation">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "dogTesticles"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
@@ -771,7 +771,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 					<</link>>
 					<br>You can forgo standard procedure and implant testicles directly into $his abdomen.
 					<<link "Implant" "Surgery Degradation">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "dogTesticles"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
@@ -801,7 +801,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 				<<else>>
 					<br>&nbsp;&nbsp;&nbsp;&nbsp;
 					<<link "Implant">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "dogTesticles"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
@@ -864,7 +864,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 					<</link>>
 					<br>You can replace $his existing testicles with a new pair.
 					<<link "Implant" "Surgery Degradation">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "horseTesticles"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
@@ -903,7 +903,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 					<</link>>
 					<br>You can forgo standard procedure and implant testicles directly into $his abdomen.
 					<<link "Implant" "Surgery Degradation">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "horseTesticles"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
@@ -933,7 +933,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 				<<else>>
 					<br>&nbsp;&nbsp;&nbsp;&nbsp;
 					<<link "Implant" "Surgery Degradation">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "horseTesticles"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
@@ -995,7 +995,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 					<</link>>
 					<br>You can replace $his existing testicles with a new pair.
 					<<link "Implant" "Surgery Degradation">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "cowTesticles"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
@@ -1034,7 +1034,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 					<</link>>
 					<br>You can forgo standard procedure and implant testicles directly into $his abdomen.
 					<<link "Implant" "Surgery Degradation">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "cowTesticles"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
@@ -1064,7 +1064,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 				<<else>>
 					<br>&nbsp;&nbsp;&nbsp;&nbsp;
 					<<link "Implant" "Surgery Degradation">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "cowTesticles"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
@@ -1127,7 +1127,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 				<<else>>
 					<br>&nbsp;&nbsp;&nbsp;&nbsp;
 					<<link "Graft on" "Surgery Degradation">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "scrotum"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
@@ -1166,7 +1166,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 				<<else>>
 					<br>&nbsp;&nbsp;&nbsp;&nbsp;
 					<<link "Graft on" "Surgery Degradation">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "foreskin"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
@@ -1219,7 +1219,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 					<</link>>
 					<br>You can replace $his existing ovaries with a new pair.
 					<<link "Implant" "Surgery Degradation">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "ovaries"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
@@ -1271,7 +1271,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 				<<else>>
 					<br>&nbsp;&nbsp;&nbsp;&nbsp;
 					<<link "Implant" "Surgery Degradation">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "ovaries"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
@@ -1334,7 +1334,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 					<</link>>
 					<br>You can replace $his existing ovaries with a new pair.
 					<<link "Implant" "Surgery Degradation">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "pigOvaries"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
@@ -1386,7 +1386,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 				<<else>>
 					<br>&nbsp;&nbsp;&nbsp;&nbsp;
 					<<link "Implant" "Surgery Degradation">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "pigOvaries"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
@@ -1449,7 +1449,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 					<</link>>
 					<br>You can replace $his existing ovaries with a new pair.
 					<<link "Implant" "Surgery Degradation">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "dogOvaries"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
@@ -1501,7 +1501,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 				<<else>>
 					<br>&nbsp;&nbsp;&nbsp;&nbsp;
 					<<link "Implant" "Surgery Degradation">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "dogOvaries"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
@@ -1564,7 +1564,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 					<</link>>
 					<br>You can replace $his existing ovaries with a new pair.
 					<<link "Implant" "Surgery Degradation">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "horseOvaries"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
@@ -1616,7 +1616,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 				<<else>>
 					<br>&nbsp;&nbsp;&nbsp;&nbsp;
 					<<link "Implant" "Surgery Degradation">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "horseOvaries"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
@@ -1679,7 +1679,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 					<</link>>
 					<br>You can replace $his existing ovaries with a new pair.
 					<<link "Implant" "Surgery Degradation">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "cowOvaries"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
@@ -1730,7 +1730,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 				<<else>>
 					<br>&nbsp;&nbsp;&nbsp;&nbsp;
 					<<link "Implant" "Surgery Degradation">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "cowOvaries"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
@@ -1792,7 +1792,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 				<<else>>
 					<br>&nbsp;&nbsp;&nbsp;&nbsp;
 					<<link "Implant" "Surgery Degradation">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "freshOvaries"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
@@ -1849,7 +1849,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 				<<else>>
 					<br>&nbsp;&nbsp;&nbsp;&nbsp;
 					<<link "Implant" "Surgery Degradation">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "asexualReproOvaries"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
@@ -1903,7 +1903,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 				<<else>>
 					<br>&nbsp;&nbsp;&nbsp;&nbsp;
 					<<link "Implant" "Surgery Degradation">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "prostate"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
@@ -1942,7 +1942,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 				<<elseif $activeSlave.origEye == "implant">>
 					<br>&nbsp;&nbsp;&nbsp;&nbsp;
 					<<link "Remove ocular implants and implant" "Surgery Degradation">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "eyes"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
@@ -1972,7 +1972,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 				<<else>>
 					<br>&nbsp;&nbsp;&nbsp;&nbsp;
 					<<link "Implant" "Surgery Degradation">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "eyes"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
@@ -2013,7 +2013,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 				<<elseif $activeSlave.earImplant == 1>>
 					<br>&nbsp;&nbsp;&nbsp;&nbsp;
 					<<link "Remove cochlear implants and implant" "Surgery Degradation">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "cochleae"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
@@ -2040,7 +2040,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 				<<else>>
 					<br>&nbsp;&nbsp;&nbsp;&nbsp;
 					<<link "Implant" "Surgery Degradation">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "cochleae"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
@@ -2079,7 +2079,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 				<<else>>
 					<br>&nbsp;&nbsp;&nbsp;&nbsp;
 					<<link "Implant" "Surgery Degradation">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "mpreg"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
@@ -2132,7 +2132,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 				<<else>>
 					<br>&nbsp;&nbsp;&nbsp;&nbsp;
 					<<link "Implant" "Surgery Degradation">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "mpregPig"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
@@ -2185,7 +2185,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 				<<else>>
 					<br>&nbsp;&nbsp;&nbsp;&nbsp;
 					<<link "Implant" "Surgery Degradation">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "mpregDog"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
@@ -2238,7 +2238,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 				<<else>>
 					<br>&nbsp;&nbsp;&nbsp;&nbsp;
 					<<link "Implant" "Surgery Degradation">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "mpregHorse"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
@@ -2291,7 +2291,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 				<<else>>
 					<br>&nbsp;&nbsp;&nbsp;&nbsp;
 					<<link "Implant" "Surgery Degradation">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "mpregCow"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
@@ -2343,7 +2343,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 				<<elseif $activeSlave.electrolarynx == 1>>
 					<br>&nbsp;&nbsp;&nbsp;&nbsp;
 					<<link "Remove electrolarynx and implant" "Surgery Degradation">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "voicebox"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
@@ -2376,7 +2376,7 @@ The fabricator is ready to grow an organ for $him. Extract tissue to begin growi
 				<<else>>
 					<br>&nbsp;&nbsp;&nbsp;&nbsp;
 					<<link "Implant" "Surgery Degradation">>
-						<<set $cash -= $surgeryCost>>
+						<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 						<<set _ofo = $completedOrgans.findIndex(function(s) { return $activeSlave.ID == s.ID && s.type == "voicebox"; })>>
 						<<if _ofo != -1>>
 							<<set $completedOrgans.deleteAt(_ofo)>>
diff --git a/src/pregmod/pAssociatesPublicSlut.tw b/src/pregmod/pAssociatesPublicSlut.tw
index 2b92c9e1c66e0b9c1f6c125deceab6bd0fedbb01..6879dcf85de815bed543fd1300e026d300fb0f90 100644
--- a/src/pregmod/pAssociatesPublicSlut.tw
+++ b/src/pregmod/pAssociatesPublicSlut.tw
@@ -48,7 +48,7 @@ You take a detour down one of the minor byways that feed into the Promenade prop
 			You decline his offer, but instead offer to buy him coffee at the nearby café. You enjoy some especially delicious coffee together while admiring the view of his slave's pussy being broken in by a trickle of curious parties, who also occasionally avail of her ass or walk around to the other side of the helpless slut to use her mouth.
 		<</if>>
 		You trade friendly chit-chat and end up discussing business after a while, eventually striking a minor bargain over some outstanding orders that were causing some grief to your holdings, earning you some @@.yellowgreen;extra cash.@@
-		<<set $cash += random(250,1000)>>
+		<<run cashX(random(250,1000), "event")>>
 	<</replace>>
 <</link>>
 </span>
\ No newline at end of file
diff --git a/src/pregmod/pRaped.tw b/src/pregmod/pRaped.tw
index c7f6b639c386f13d4add1868b3c6ff6b2ef10cda..8934289c8111b95b77f42e4ab0101f65939dbf28 100644
--- a/src/pregmod/pRaped.tw
+++ b/src/pregmod/pRaped.tw
@@ -150,7 +150,7 @@ Now the only question is what to do with the would-be rapist. You could toss the
 <span id="result">
 <<if $cash >= $contractCost>>
 	<br><<link "Enslave $him">>
-		<<set $cash -= $contractCost>>
+		<<run cashX(forceNeg($contractCost), "slaveTransfer", $activeSlave)>>
 		<<replace "#result">>
 			You complete the legalities and biometric scanning quickly and without fuss. The idiot will regret crossing you when $he wakes in the penthouse for basic slave induction.
 		<<include "New Slave Intro">>
@@ -169,7 +169,7 @@ Now the only question is what to do with the would-be rapist. You could toss the
 		<</if>>
 		<</if>>
 		<<if $activeSlave.publicCount>><<set $activeSlave.publicCount += 47>><<else>><<set $activeSlave.publicCount = 47>><</if>>
-		<<set $cash -= $contractCost>>
+		<<run cashX(forceNeg($contractCost), "slaveTransfer", $activeSlave)>>
 		<<replace "#result">>
 			You declare $his holes fair game for the entire arcology. $He spends a torturous day in the stocks before being hauled in for enslavement, somewhat @@.red;the worse for wear@@ and @@.red;acting oddly@@ due to $his ordeal, bruises all over $his body, cum leaking from $his @@.lime;loosened@@ anus<<if $activeSlave.vagina > -1>> and @@.lime;fucked-out@@ pussy<</if>>. The public @@.green;enjoys the fun.@@
 		<<set $rep += 100>>
@@ -181,7 +181,7 @@ Now the only question is what to do with the would-be rapist. You could toss the
 	<br><<link "Enslave $him and sentence $him to a month in the arcade">>
 		<<= assignJob($activeSlave, "be confined in the arcade")>>
 		<<set $activeSlave.sentence = 4>>
-		<<set $cash -= $contractCost>>
+		<<run cashX(forceNeg($contractCost), "slaveTransfer", $activeSlave)>>
 		<<replace "#result">>
 			You complete the legalities and biometric scanning quickly and cautiously. The idiot will be in for a surprise when $he awakes to find $he can't move and a dick is in $his ass.
 		<<run newSlave($activeSlave)>> /* skip New Slave Intro */
@@ -192,7 +192,7 @@ Now the only question is what to do with the would-be rapist. You could toss the
 	<<if $dairyRestraintsSetting > 1>>
 	<br><<link "Enslave $him and send $him straight to the industrial dairy">>
 		<<= assignJob($activeSlave, "work in the dairy")>>
-		<<set $cash -= $contractCost>>
+		<<run cashX(forceNeg($contractCost), "slaveTransfer", $activeSlave)>>
 		<<replace "#result">>
 			You complete the legalities and biometric scanning quickly and cautiously. The idiot will wake up <<if $dairyStimulatorsSetting > 1>>in agony as $his anus takes the rectal hydration dildo<<else>>to find $his chest has begun swelling with milk<</if>>.
 		<<set $activeSlave.boobs += 300>>
@@ -204,7 +204,7 @@ Now the only question is what to do with the would-be rapist. You could toss the
 	<<if $farmyard > 0>>
 	<br><<link "Enslave $him and send $him straight to the farmyard">>
 		<<= assignJob($activeSlave, "work as a farmhand")>>
-		<<set $cash -= $contractCost>>
+		<<run cashX(forceNeg($contractCost), "slaveTransfer", $activeSlave)>>
 		<<replace "#result">>
 			You complete the legalities and biometric scanning quickly and cautiously. /*TODO: finish writing this subsection */
 		<<run newSlave($activeSlave)>> /* skip New Slave Intro */
@@ -217,7 +217,7 @@ Now the only question is what to do with the would-be rapist. You could toss the
 		<<set $activeSlave.amp = 1>>
 		<<set $activeSlave.heels = 0>>
 		<<set $activeSlave.behavioralFlaw = "odd">>
-		<<set $cash -= $contractCost>>
+		<<run cashX(forceNeg($contractCost), "slaveTransfer", $activeSlave)>>
 		<<replace "#result">>
 			You want $him to suffer for what $he tried to pull on you. You make sure $he is fully awake as $he is strapped into the autosurgery. You take great pleasure in watching $him struggle as $his limbs are taken, one by one. Of course, @@.red;$his health is affected@@ and the horrible experience has left $him @@.red;acting oddly.@@ After $he has stabilized, it's off to the penthouse for basic slave induction. You'd like to see $him try and touch you again without arms and legs.
 		<</replace>>
@@ -228,7 +228,7 @@ Now the only question is what to do with the would-be rapist. You could toss the
 		<<set $activeSlave.devotion -= 25>>
 		<<set $activeSlave.trust -= 25>>
 		<<run newSlave($activeSlave)>>
-		<<set $cash -= $contractCost>>
+		<<run cashX(forceNeg($contractCost), "slaveTransfer", $activeSlave)>>
 		<<replace "#result">>
 		You want $him to suffer for what $he tried to pull on you. You make sure $he is fully awake as $he is strapped into the autosurgery, taking the time to roughly fondle $his balls. You take great pleasure in watching $him struggle as $his testicles are removed. Once $he can stand again, it's off to the penthouse for basic slave induction.
 		<<include "New Slave Intro">>
diff --git a/src/pregmod/personalNotes.tw b/src/pregmod/personalNotes.tw
index f0f2938a0122bbea0292624eec7dd38d010a9a43..33582c6ff73011bb57cae7d720487e0a71f846af 100644
--- a/src/pregmod/personalNotes.tw
+++ b/src/pregmod/personalNotes.tw
@@ -67,7 +67,8 @@
 				<<set _milkSale = _milk*8>>
 				Your milk is sold for @@.yellowgreen;<<print cashFormat(_milkSale)>>.@@
 			<</if>>
-			<<set $cash += _milkSale>>
+			<<run cashX(_milkSale, "personalBusiness")>>
+
 		<<else>>
 			You regularly see to your breasts to make sure your milk production doesn't dry up; be it by hand, milker or mouth, you keep yourself comfortably drained.
 		<</if>>
diff --git a/src/pregmod/reLegendaryWomb.tw b/src/pregmod/reLegendaryWomb.tw
index fbec834c156e5a0655c22c5011b65da21c8c8131..20112daa68e4b6731309f4cd8317ff8105fc8795 100644
--- a/src/pregmod/reLegendaryWomb.tw
+++ b/src/pregmod/reLegendaryWomb.tw
@@ -42,7 +42,7 @@ This is a rare opportunity. The idea of a pregnancy pageant isn't new but it is
 	<<if random(1,100) > 50>>
 		<<replace "#result">>
 		$activeSlave.slaveName is shown in public, closely inspected by the judging committee, and then asked to demonstrate how to pleasure a man while so heavily pregnant. Several of the judges cannot resist giving you a wink as they look $him over. $activeSlave.slaveName is unsurprisingly named best in show, and will be @@.green;remembered@@ as a breeder of the highest pedigree. As $his owner, your reputation has @@.green;also increased.@@
-		<<set $cash -= 5000>>
+		<<run cashX(-5000, "event", $activeSlave)>>
 		<<set $rep += 100>>
 		<<set $activeSlave.prestige = 1>>
 		<<set $activeSlave.prestigeDesc = "She is remembered for winning best in show as a breeder.">>
@@ -52,7 +52,7 @@ This is a rare opportunity. The idea of a pregnancy pageant isn't new but it is
 	<<else>>
 		<<replace "#result">>
 		$activeSlave.slaveName is shown in public, closely inspected by the judging committee, and then asked to demonstrate how to pleasure a man while so heavily pregnant. Several of the judges cannot resist giving you a wink as they look $him over, but others look disapprovingly at them; it seems some of your competitors also forwarded money to the committee. After furious wrangling, $activeSlave.slaveName loses to another mother. The public is impressed with $activeSlave.slaveName's reproductive capability anyway; as you are $his owner, your reputation has @@.green;increased@@ a little.
-		<<set $cash -= 5000>>
+		<<run cashX(-5000, "event", $activeSlave)>>
 		<<set $rep += 100>>
 		<</replace>>
 	<</if>>
@@ -62,7 +62,7 @@ This is a rare opportunity. The idea of a pregnancy pageant isn't new but it is
 	<<if random(1,100) > 10>>
 		<<replace "#result">>
 		$activeSlave.slaveName is shown in public, closely inspected by the judging committee, and then asked to demonstrate how to pleasure a man while so heavily pregnant. After $he's put through $his paces, the most unfortunate series of accidents somehow befalls $his fellow mothers. One is taken ill, another seems drugged, and another went into labor and gave birth, disqualifying her. $activeSlave.slaveName is unsurprisingly named best in show, and will be @@.green;remembered@@ as a breeder of the highest pedigree. As $his owner, your reputation has @@.green;also increased.@@
-		<<set $cash -= 10000>>
+		<<run cashX(-10000, "event", $activeSlave)>>
 		<<set $rep += 100>>
 		<<set $activeSlave.prestige = 1>>
 		<<set $activeSlave.prestigeDesc = "She is remembered for winning best in show as a breeder.">>
@@ -72,7 +72,7 @@ This is a rare opportunity. The idea of a pregnancy pageant isn't new but it is
 	<<else>>
 		<<replace "#result">>
 		$activeSlave.slaveName is shown in public, closely inspected by the judging committee, and then asked to demonstrate how to pleasure a man while so heavily pregnant. You are surprised to see that the judging committee has been changed at the last minute. They choose another breeder as best in show. There are persistent @@.red;rumors@@ after the show that there was an absolute massacre of firings at the dairy organization headquarters the night before the show after it was discovered that someone, widely thought to be you, had been corrupting the judges.
-		<<set $cash -= 10000>>
+		<<run cashX(-10000, "event", $activeSlave)>>
 		<<set $rep -= 100>>
 		<</replace>>
 	<</if>>
diff --git a/src/pregmod/rePregInventor.tw b/src/pregmod/rePregInventor.tw
index b8da0ea57a8d5ff2684d139295b24fe240f98b8c..f8451baa1d2171f0d2b23866ae8d816092ca1189 100644
--- a/src/pregmod/rePregInventor.tw
+++ b/src/pregmod/rePregInventor.tw
@@ -272,7 +272,7 @@
 			collapsing into orgasm on $his bloated body,
 		<</if>>
 		you call up your personal assistant, giving _himA orders to have your menials collect your exhausted breeder and to ensure $he has all the funds necessary to make $his perverted dreams a reality. $activeSlave.slaveName can only @@.hotpink;idolize you.@@
-		<<set $cash -= 10000>>
+		<<run cashX(-10000, "event", $activeSlave)>>
 		<<set $activeSlave.devotion += 15>>
 		<<set $pregInventor = 1>>
 		<</replace>>
@@ -351,7 +351,7 @@
 			<br><<link "Organize a televised demonstration of $his skills.">>
 				<<replace "#result2">>
 				You are so impressed by $his ideas that you arrange to have $him demonstrate $his discoveries on a prominent FCTV talk show. It will take some time, and you'll have to insure that $he's at least reasonably well known before the show's executives will agree to allow $him on-air, but you're certain that $activeSlave.slaveName's name will soon be on the lips of pregnancy-loving slaveowners and Free Cities citizens around the world. In the meantime, you implement $his ideas around the arcology. $He is @@.hotpink;thrilled@@ to have pleased you so much that you would @@.mediumaquamarine;put such faith in $his ideas.@@
-				<<set $cash -= 10000>>
+				<<run cashX(-10000, "event", $activeSlave)>>
 				<<set $pregInventor = 2>>
 				<<set $pregInventions = 1>>
 				<<set $activeSlave.trust += 4, $activeSlave.devotion += 10>>
@@ -540,7 +540,7 @@
 			<br><<link "Organize a televised demonstration of $his skills.">>
 				<<replace "#result2">>
 				You are so impressed by $his ideas that you arrange to have $him demonstrate $his discoveries on a prominent FCTV talk show. It will take some time, and you'll have to insure that $he's at least reasonably well known before the show's executives will agree to allow $him on-air, but you're certain that $activeSlave.slaveName's name will soon be on the lips of pregnancy-loving slaveowners and Free Cities citizens around the world. In the meantime, you implement $his ideas around the arcology. $He is @@.hotpink;thrilled@@ to have pleased you so much that you would @@.mediumaquamarine;put such faith in $his ideas.@@
-				<<set $cash -= 10000>>
+				<<run cashX(-10000, "event", $activeSlave)>>
 				<<set $pregInventor = 2>>
 				<<set $pregInventions = 1>>
 				<<set $activeSlave.trust += 4, $activeSlave.devotion += 10>>
@@ -759,7 +759,7 @@
 			<br><<link "Organize a televised demonstration of $his skills.">>
 				<<replace "#result2">>
 				You are so impressed by $his ideas that you arrange to have $him demonstrate $his discoveries on a prominent FCTV talk show. It will take some time, and you'll have to insure that $he's at least reasonably well known before the show's executives will agree to allow $him on-air, but you're certain that $activeSlave.slaveName's name will soon be on the lips of pregnancy-loving slaveowners and Free Cities citizens around the world. In the meantime, you implement $his ideas around the arcology. $He is @@.hotpink;thrilled@@ to have pleased you so much that you would @@.mediumaquamarine;put such faith in $his ideas.@@
-				<<set $cash -= 10000>>
+				<<run cashX(-10000, "event", $activeSlave)>>
 				<<set $pregInventor = 2>>
 				<<set $pregInventions = 1>>
 				<<set $activeSlave.trust += 4, $activeSlave.devotion += 10>>
diff --git a/src/pregmod/saPorn.tw b/src/pregmod/saPorn.tw
index 9b32d62a4aa687e5e6e789f6803cd8fb0753c2bb..1d575d1751523162ee4ba4a0097d44ccaa0e9e25 100644
--- a/src/pregmod/saPorn.tw
+++ b/src/pregmod/saPorn.tw
@@ -1049,7 +1049,7 @@
 		<<set _donations = Math.floor($slaves[$i].pornFame/(random(10,15+_viewerSoaking)))>>
 		<<if _donations > 0>>
 			Fans donated a total of @@.yellowgreen;<<print cashFormat(_donations)>>@@ to $his account this week.
-			<<set $cash += _donations>>
+			<<run cashX(_donations, "porn", $slaves[$i])>>
 		<</if>>
 	<</if>>
 
diff --git a/src/pregmod/seFCTVshows.tw b/src/pregmod/seFCTVshows.tw
index 3031a0f25f7ef74fb6d57c6739e92ac2effdf8d8..e76e1c4fb73f2807eec263fae883b1bceca73c72 100644
--- a/src/pregmod/seFCTVshows.tw
+++ b/src/pregmod/seFCTVshows.tw
@@ -370,7 +370,7 @@ Tired after a long day, you tell <<if $Concubine != 0>>@@.pink;$Concubine.slaveN
 The offered price is <<print cashFormat($slaveCost)>>.
 
 <<if $cash >= $slaveCost>>
-	<br>[[Buy her slave contract|New Slave Intro][$cash -= $slaveCost, $nextLink = "Scheduled Event", $returnTo = "Scheduled Event"]]
+	<br>[[Buy her slave contract|New Slave Intro][$cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave), $nextLink = "Scheduled Event", $returnTo = "Scheduled Event"]]
 <<else>>
 	//@@.red;You lack the necessary funds to buy this slave.@@//
 <</if>>
diff --git a/src/pregmod/sePlayerBirth.tw b/src/pregmod/sePlayerBirth.tw
index 339cb70686e97f228e016353cf194716696f6769..908278bb09599ed0c1ac9328185b663b7ade78d8 100644
--- a/src/pregmod/sePlayerBirth.tw
+++ b/src/pregmod/sePlayerBirth.tw
@@ -623,7 +623,7 @@ You arrange yourself to give birth, relaxing until your body urges you to begin
 		<<if $arcologies[0].FSRepopulationFocus > 40>>
 			| <<link "Breeding School">><<replace "#choice">><<print "You have decided to send them to be raised into a proper breeder. Perhaps you'll even see them again, though it's unlikely you'll recognize them with their reproduction focused body.">><</replace>><<set $breederOrphanageTotal += _curBabies>><</link>>
 		<</if>>
-		<<if $Cash4Babies == 1>> | <<link "Auction Them">><<replace "#choice">><<print "You send the child<<if _curBabies > 1>>ren<</if>> to be sold at auction amongst other prestigious slaves. The winning bid for your offspring came in at @@.yellowgreen;<<print cashFormat(1000*_seed*_curBabies)>>.@@">><</replace>><<set $cash += 1000*_seed*_curBabies>><</link>><</if>>
+		<<if $Cash4Babies == 1>> | <<link "Auction Them">><<replace "#choice">><<print "You send the child<<if _curBabies > 1>>ren<</if>> to be sold at auction amongst other prestigious slaves. The winning bid for your offspring came in at @@.yellowgreen;<<print cashFormat(1000*_seed*_curBabies)>>.@@">><</replace>><<run cashX((1000*_seed*_curBabies), "slaveTransfer")>><</link>><</if>>
 		</span>
 	<</if>>
 
diff --git a/src/pregmod/theCattleRanch.tw b/src/pregmod/theCattleRanch.tw
index c1dcfc794892af91cc32cfb8c961234eb9504748..df5d538c5b478c7c7b1785f6034658f9779c19ce 100644
--- a/src/pregmod/theCattleRanch.tw
+++ b/src/pregmod/theCattleRanch.tw
@@ -24,11 +24,11 @@
 
 <<setLocalPronouns $activeSlave>>
 <<if $cash >= $slaveCost>>
-	<br>[["Buy " + $him + " and check out other cows to order"|The Cattle Ranch][$cash -= $slaveCost, $TCR.schoolSale = 0, $TCR.studentsBought += 1, $newSlaves.push($activeSlave), $introType = "multi", $slavesSeen+=1]]
+	<br>[["Buy " + $him + " and check out other cows to order"|The Cattle Ranch][$cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave), $TCR.schoolSale = 0, $TCR.studentsBought += 1, $newSlaves.push($activeSlave), $introType = "multi", $slavesSeen+=1]]
 	<<if $newSlaves.length == 0>>
-		<br>[["Buy " + $his + " slave contract"|New Slave Intro][$cash -= $slaveCost, $TCR.schoolSale = 0, $TCR.studentsBought += 1, $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "Main"]]
+		<br>[["Buy " + $his + " slave contract"|New Slave Intro][$cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave), $TCR.schoolSale = 0, $TCR.studentsBought += 1, $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "Main"]]
 	<<else>>
-		<br>[["Buy " + $his + " and finish your order of cattle"|Bulk Slave Intro][$cash -= $slaveCost, $TCR.schoolSale = 0, $TCR.studentsBought += 1, $newSlaves.push($activeSlave)]]
+		<br>[["Buy " + $his + " and finish your order of cattle"|Bulk Slave Intro][$cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave), $TCR.schoolSale = 0, $TCR.studentsBought += 1, $newSlaves.push($activeSlave)]]
 	<</if>>
 <<else>>
 	//You lack the necessary funds to buy this slave.//
diff --git a/src/pregmod/theHippolytaAcademy.tw b/src/pregmod/theHippolytaAcademy.tw
index 1d32b662f8ff776d6a08d83c3bfeab0517d3e0f1..64e6a41fbdb10483706cc8f073d6de696678cebb 100644
--- a/src/pregmod/theHippolytaAcademy.tw
+++ b/src/pregmod/theHippolytaAcademy.tw
@@ -33,11 +33,11 @@ The Hippolyta Academy is one of the most famous slave bodyguarding schools in al
 
 <<setLocalPronouns $activeSlave>>
 <<if $cash >= $slaveCost>>
-	<br>[["Buy " + $him + " and check out other slaves to order"|The Hippolyta Academy][$cash -= $slaveCost, $HA.schoolSale = 0, $HA.studentsBought += 1, $newSlaves.push($activeSlave), $introType = "multi", $slavesSeen+=1]]
+	<br>[["Buy " + $him + " and check out other slaves to order"|The Hippolyta Academy][$cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave), $HA.schoolSale = 0, $HA.studentsBought += 1, $newSlaves.push($activeSlave), $introType = "multi", $slavesSeen+=1]]
 	<<if $newSlaves.length == 0>>
-		<br>[["Buy " + $his + " slave contract"|New Slave Intro][$cash -= $slaveCost, $HA.schoolSale = 0, $HA.studentsBought += 1, $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "Main"]]
+		<br>[["Buy " + $his + " slave contract"|New Slave Intro][$cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave), $HA.schoolSale = 0, $HA.studentsBought += 1, $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "Main"]]
 	<<else>>
-		<br>[["Buy " + $him + " and finish your order of slaves"|Bulk Slave Intro][$cash -= $slaveCost, $HA.schoolSale = 0, $HA.studentsBought += 1, $newSlaves.push($activeSlave)]]
+		<br>[["Buy " + $him + " and finish your order of slaves"|Bulk Slave Intro][$cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave), $HA.schoolSale = 0, $HA.studentsBought += 1, $newSlaves.push($activeSlave)]]
 	<</if>>
 <<else>>
 	//You lack the necessary funds to buy this slave.//
diff --git a/src/pregmod/wetwareCPUs.tw b/src/pregmod/wetwareCPUs.tw
index c07f9580516f7903fcc4b9b626947bd910bc6497..2ca8c4f05ed4384db6dcaa8f9b47356832285829 100644
--- a/src/pregmod/wetwareCPUs.tw
+++ b/src/pregmod/wetwareCPUs.tw
@@ -19,11 +19,11 @@
 
 <<setLocalPronouns $activeSlave>>
 <<if $cash >= $slaveCost>>
-	<br>[["Buy " + $him + " and check out other slaves to order"|Wetware CPUs][$cash -= $slaveCost, $newSlaves.push($activeSlave), $introType = "multi", $slavesSeen+=1]]
+	<br>[["Buy " + $him + " and check out other slaves to order"|Wetware CPUs][$cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave), $newSlaves.push($activeSlave), $introType = "multi", $slavesSeen+=1]]
 	<<if $newSlaves.length == 0>>
-		<br>[["Buy " + $his + " slave contract"|New Slave Intro][$cash -= $slaveCost, $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "Main"]]
+		<br>[["Buy " + $his + " slave contract"|New Slave Intro][$cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave), $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "Main"]]
 	<<else>>
-		<br>[["Buy " + $him + " and finish your order of slaves"|Bulk Slave Intro][$cash -= $slaveCost, $newSlaves.push($activeSlave)]]
+		<br>[["Buy " + $him + " and finish your order of slaves"|Bulk Slave Intro][$cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave), $newSlaves.push($activeSlave)]]
 	<</if>>
 <<else>>
 	//You lack the necessary funds to buy this slave.//
diff --git a/src/pregmod/widgets/pregmodBirthWidgets.tw b/src/pregmod/widgets/pregmodBirthWidgets.tw
index d888e045c7f022eb8932ead3849f518853a28b98..afc3ea969815850ed70ee3757405efac5a6be1b1 100644
--- a/src/pregmod/widgets/pregmodBirthWidgets.tw
+++ b/src/pregmod/widgets/pregmodBirthWidgets.tw
@@ -967,7 +967,7 @@
 		<<set $humiliation = 1>>
 		<<ClothingBirth>>
 		Upon completing $his show, $he reclines with <<if $slaves[$i].birthsTotal == 0>>$his first<<else>>this week's<</if>> child and begins counting the credits $he bought in. In total $he made <<print cashFormat(100*_birthScene)>> and feels that business will be up in the brothel as patrons line up hoping another showing.
-		<<set $cash += 100*_birthScene>>
+		<<run cashX((100*_birthScene), "birth")>>
 	<</if>>
 
 <<case "be the Stewardess">>
diff --git a/src/pregmod/widgets/seBirthWidgets.tw b/src/pregmod/widgets/seBirthWidgets.tw
index a09d15794932879ce5cba5d87720ad2876f579b1..01e81603718794ad94c1f60076082a366711a70c 100644
--- a/src/pregmod/widgets/seBirthWidgets.tw
+++ b/src/pregmod/widgets/seBirthWidgets.tw
@@ -913,7 +913,7 @@ All in all,
 			<<set _lostBabies = 0>>
 		<<else>>
 			$His <<if _curBabies > 1>>babies<<else>>baby<</if>> sold for <<if _curBabies > 1>>a total of <</if>>@@.yellowgreen;<<print cashFormat(_curBabies*(50+_babyCost))>>.@@<<if $slaves[$i].prematureBirth == 1>> A low price due to the added costs of caring for them.<</if>>
-			<<set $cash += _curBabies*(50+_babyCost)>>
+			<<run cashX((_curBabies*(50+_babyCost)), "slaveTransfer")>>
 		<</if>>
 	<</if>>
 	<<if _lostBabies != 1 && $universalRulesChildrenBecomeBreeders > 0 && $arcologies[0].FSRepopulationFocus > 40 && $DefaultBirthDestination === "individually decided fates">>
@@ -972,7 +972,7 @@ All in all,
 	<<set _babyCost = random(-12,12)>>
 	<<if $slaves[$i].prematureBirth == 1>><<set _babyCost = -45>><</if>>
 	$His <<if _curBabies > 1>>babies<<else>>baby<</if>> were sold for <<if _curBabies > 1>>a total of <</if>>@@.yellowgreen;<<print cashFormat(_curBabies*(50+_babyCost))>>.@@<<if $slaves[$i].prematureBirth == 1>> A low price due to the added costs of caring for them.<</if>>
-	<<set $cash += _curBabies*(50+_babyCost)>>
+	<<run cashX((_curBabies*(50+_babyCost)), "slaveTransfer")>>
 <</if>>
 
 <</widget>>
diff --git a/src/uncategorized/RECI.tw b/src/uncategorized/RECI.tw
index 98fc0803527291ded62bfe35902a8ee0dcb92082..cca8ca60794bdb11f0984ce538cfaafd3d0f1731 100644
--- a/src/uncategorized/RECI.tw
+++ b/src/uncategorized/RECI.tw
@@ -480,7 +480,7 @@ $He looks pensive, and goes through two false starts before $he clears $his thro
 	<<EventNameDelink $activeSlave>>
 	<<replace "#result">>
 	You tell $him that you've hired $him out for a party hosted by a prominent citizen's son, home from college, and that $he should be saving it for that. $He promises that $he will, bringing $his legs together again and clearly already imagining it. You check in on $him later, using the video feeds, and are treated to the sight of $him wearing a recently-acquired, too-tight t-shirt with an old world college's mascot on it as $he rides a dick young enough to be $his son's. There's some drunken yelling, which $he responds to by blowing kisses and licking $his <<if $activeSlave.lips > 0>>plump <</if>>lips until another cock finds its way into $his mouth. $His fee for the night is @@.yellowgreen;substantial,@@ and the student's father attaches a note to the payment. Apparently $he got him too, and he's interested in hiring $him for a business meeting next month.
-	<<set $cash += 500>>
+	<<run cashX(500, "event", $activeSlave)>>
 	<<set $activeSlave.analCount += 5>>
 	<<set $analTotal += 5>>
 	<<set $activeSlave.oralCount += 5>>
@@ -528,7 +528,7 @@ $He looks pensive, and goes through two false starts before $he clears $his thro
 	<<EventNameDelink $activeSlave>>
 	<<replace "#result">>
 	You tell $him that you've hired $him out for a party a prominent citizen is throwing, and that $he should be a good slave girl by saving $himself for that. $He trips all over $himself promising that $he will. You check in on $him later, using the video feeds, and are treated to the sight of $him wearing a slinky cocktail dress, although wearing is perhaps the wrong term. $He's bent over a barstool with the top of the dress pulled down <<if ($activeSlave.boobs > 1000)>>over $his huge tits<<elseif ($activeSlave.boobs > 300)>>to bare $his boobs<<else>>to reveal $his sissy chest<</if>> and the bottom of $his dress hiked up so a guest can fuck $his ass. $He's obviously enjoying $himself, happy to be getting some at last. $His fee for the night is @@.yellowgreen;substantial,@@ and the host attaches a note to the payment, complimenting $his eagerness to get assfucked and $his willingness to suck cock, and asking when $he'll be available next.
-	<<set $cash += 500>>
+	<<run cashX(500, "event", $activeSlave)>>
 	<<set $activeSlave.analCount += 5>>
 	<<set $analTotal += 5>>
 	<<set $activeSlave.oralCount += 5>>
diff --git a/src/uncategorized/REFS.tw b/src/uncategorized/REFS.tw
index afad1404d68b2288b88734481f61d4e8f37ef97b..366764464782418e88605fc8fa5846b3e2315aa4 100644
--- a/src/uncategorized/REFS.tw
+++ b/src/uncategorized/REFS.tw
@@ -216,7 +216,7 @@ On this particular outing you happen to cross paths with a comely female citizen
 <br><<link "Take the poor slave $girl into your custody">>
 	<<replace "#result">>
 	Confronting the citizen is simplicity in itself; he would not dare defy you under threat of arrest by your security drones and is unlikely to garner any sympathy from the public for his degradationist behaviors. As such, you are able to take civil ownership over the poor slave $girl and take $him into your care with only minimal compensation to the citizen. As you stride away from $his former owner with the $girl in your arms, $he leans over to plant a chaste kiss of thanks on your cheek.
-	<<set $cash -= 2000>>
+	<<run cashX(-2000, "event")>>
 	<<include "New Slave Intro">>
 	<</replace>>
 <</link>> // Taking custody of the $girl will cost <<print cashFormat(2000)>>. //
@@ -241,7 +241,7 @@ On this particular outing you happen to cross paths with a comely female citizen
 <br><<link "Take the pampered slave $girl into your custody">>
 	<<replace "#result">>
 	Confronting the citizen is simplicity in itself; he would not dare defy you directly under threat of arrest by your security drones and is unlikely to garner any sympathy from the public for his disturbing actions. As such, you are able to take civil ownership over the slave $girl and claim $him for yourself with only token compensation to the citizen. As you stride away from $his former owner with the girl in your arms, $he clings to you with obvious naiveté for how you will treat $him. It's time $he learnt how slaves are treated in $arcologies[0].name.
-	<<set $cash -= 2000>>
+	<<run cashX(-2000, "event")>>
 	<<include "New Slave Intro">>
 	<</replace>>
 <</link>> // Taking custody of the $girl will cost <<print cashFormat(2000)>>. //
@@ -334,7 +334,7 @@ On this particular outing you happen to cross paths with a comely female citizen
 			<<replace "#result2">>
 			As your new playmate lies slumbering in bed, you consult with $assistantName as to the cost of the surgery conducted today. With some creative accounting, you settle the citizen's other outstanding debts and then arrange for $him to be charged a sum in excess of $his financial means for the surgery conducted on $him today. Of course, that was not what you agreed, but it was $his mistake for undergoing an expensive procedure without a formal contract. When $he awakens, though $he will retain $his new bimbo body, $he will be just another slave in your penthouse.
 			<<run newSlave($activeSlave)>> /* skip New Slave Intro */
-			<<set $cash -= 10000>>
+			<<run cashX(-10000, "event", $activeSlave)>>
 			<</replace>>
 		<</link>> // Purchasing $his outstanding debts will cost <<print cashFormat(10000)>>. //
 		</span>
@@ -400,7 +400,7 @@ On this particular outing you happen to cross paths with a comely female citizen
 			<<replace "#result2">>
 			After $he regains $his bearings from your sexual encounter, the girl slips on $his simple clothes and attempts to slink away from your private suite unobtrusively. $He makes it out the door before being confronted by a glowing array of wallscreen monitors, each displaying a visual representation of your purchase of $his father's considerable debt and subsequent enslavement of $him on the basis of that debt. Tears begin to stream down $his cheeks as $he sinks to $his knees, $his hopes of a long life without enslavement now dashed.
 			<br><br>
-			<<set $cash -= 10000>>
+			<<run cashX(-10000, "event", $activeSlave)>>
 			<<include "New Slave Intro">>
 			<</replace>>
 		<</link>> // Purchasing $his outstanding debts will cost <<print cashFormat(10000)>>. //
@@ -439,7 +439,7 @@ On this particular outing you happen to cross paths with a comely female citizen
 			<<replace "#result2">>
 			After $he regains $his bearings from your sexual encounter, the older woman slips on $his simple clothes and attempts to slink away from your private suite unobtrusively. $He makes it out the door before being confronted by a glowing array of wallscreen monitors, each displaying a visual representation of your purchase of $his considerable debt and subsequent enslavement of $him on the basis of that debt. Tears begin to stream down $his weathered cheeks as $he sinks to $his knees, $his hopes of making it through the breadth of $his long life without enslavement now dashed.
 			<br><br>
-			<<set $cash -= 10000>>
+			<<run cashX(-10000, "event", $activeSlave)>>
 			<<include "New Slave Intro">>
 			<</replace>>
 		<</link>> // Purchasing $his outstanding debts will cost <<print cashFormat(10000)>>. //
diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw
index 48ee79d0649c411b2e15c2b0de4488b158fbe931..9ec6d122bed98835be724be15734d2c7b29286d4 100644
--- a/src/uncategorized/RESS.tw
+++ b/src/uncategorized/RESS.tw
@@ -4792,7 +4792,7 @@ brought in to you. This time <<EventNameLink $activeSlave>> has been sent to del
 				As you pull $his limp body to the remote surgery, you notice $he understands what $he has done and begs you to reconsider your decision; but your mind is set. $He tried to rape you, $he must be silenced. Restrained as $he is, the most $he can do is cry and beg. When $he awakens from surgery, $he realizes all you did was stop $him from talking; @@.mediumaquamarine;what stops $him from making another go at you?@@ Your other rebellious slaves see this a minor loss for a potentially huge gain and, if anything, @@.mediumaquamarine;become more defiant.@@
 				<<set $activeSlave.trust += 5, $activeSlave.devotion -= 15, $activeSlave.voice = 0>>
 				<<set $slaves.forEach(function(s) { if (s.devotion < -50) { s.trust += 10; } })>>
-				<<set $cash -= $surgeryCost>>
+				<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 				<</replace>>
 			<</link>> //Will cost <<print cashFormat($surgeryCost)>>//
 			<br><<link "Castrate $him">>
@@ -4800,7 +4800,7 @@ brought in to you. This time <<EventNameLink $activeSlave>> has been sent to del
 				As you pull $his limp body to the remote surgery, you notice $he understands what $he has done and begs you to reconsider your decision; but your mind is set. $He had the balls to try and rape you, and now $he won't. Restrained as $he is, the most $he can do is cry and beg. Once $he comes to after the surgery, $he faces $his new life; @@.mediumorchid;$he'll never get hard again@@ and $he's @@.gold;the only one to blame@@ for $his @@.red;suffering.@@ Every other rebellious slave is @@.gold;mortified by the example.@@
 				<<set $activeSlave.trust -= 20, $activeSlave.devotion -= 10, $activeSlave.health -= 10>>
 				<<set $slaves.forEach(function(s) { if (s.devotion < -50) { s.trust -= 5; } })>>
-				<<set $cash -= $surgeryCost>>
+				<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 				<</replace>> //Will cost <<print cashFormat($surgeryCost)>>//
 			<</link>>
 			<<if $activeSlave.vagina == -2>>
@@ -4810,7 +4810,7 @@ brought in to you. This time <<EventNameLink $activeSlave>> has been sent to del
 					<<set $activeSlave.trust -= 30, $activeSlave.devotion -= 25, $activeSlave.health -= 20, $activeSlave.dick = 0, $activeSlave.balls = 0, $activeSlave.scrotum = 0, $activeSlave.prostate = 0, $activeSlave.dickAccessory = "none", $activeSlave.vagina = 1>>
 					<<= VaginalVCheck()>>
 					<<set $slaves.forEach(function(s) { if (s.devotion < -50) { s.trust -= 15; } })>>
-					<<set $cash -= ($surgeryCost*2)>>
+					<<run cashX(forceNeg($surgeryCost*2), "slaveSurgery", $activeSlave)>>
 					<</replace>>
 				<</link>> //Will cost <<print cashFormat(($surgeryCost*2))>>//
 			<<else>>
@@ -4819,7 +4819,7 @@ brought in to you. This time <<EventNameLink $activeSlave>> has been sent to del
 					You ask $him if $he enjoyed the last time $he used $his dick and if it was worth crossing you, because it will not happen again. Restrained as $he is, the most $he can do is cry and beg. Once $he comes to after the surgery, $he faces $his new body; @@.mediumorchid;$he's now a surgical null@@ and $he's @@.gold;the only one to blame@@ for $his @@.red;suffering.@@ Every other rebellious slave is @@.gold;horrified by the example.@@
 					<<set $activeSlave.trust -= 30, $activeSlave.devotion -= 25, $activeSlave.health -= 20, $activeSlave.dick = 0, $activeSlave.foreskin = 0, $activeSlave.balls = 0, $activeSlave.scrotum = 0, $activeSlave.dickAccessory = "none">>
 					<<set $slaves.forEach(function(s) { if (s.devotion < -50) { s.trust -= 15; } })>>
-					<<set $cash -= ($surgeryCost*2)>>
+					<<run cashX(forceNeg($surgeryCost*2), "slaveSurgery", $activeSlave)>>
 					<</replace>>
 				<</link>> //Will cost <<print cashFormat(($surgeryCost*2))>>//
 			<</if>>
@@ -4829,7 +4829,7 @@ brought in to you. This time <<EventNameLink $activeSlave>> has been sent to del
 				<<set $activeSlave.trust -= 50, $activeSlave.devotion -= 30, $activeSlave.health -= 20, $activeSlave.dick = 0, $activeSlave.prostate = 0, $activeSlave.dickAccessory = "none", $activeSlave.vagina = 0, $activeSlave.ovaries = 0, $activeSlave.clit = 0, $activeSlave.labia = 0>>
 				<<= AnalVCheck()>>
 				<<set $slaves.forEach(function(s) { if (s.devotion < -50) { s.trust -= 15; } })>>
-				<<set $cash -= ($surgeryCost*4)>>
+				<<run cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave)>>
 				<</replace>>
 			<</link>> //Will cost <<print cashFormat(($surgeryCost*4))>>//
 		<</if>>
@@ -4892,7 +4892,7 @@ brought in to you. This time <<EventNameLink $activeSlave>> has been sent to del
 				As you pull $his limp body to the remote surgery, you notice $he understands what $he has done and begs you to reconsider your decision; but your mind is set. $He tried to rape you, $he must be silenced. Restrained as $he is, the most $he can do is cry and beg. When $he awakens from surgery, $he realizes all you did was stop $him from talking; @@.mediumaquamarine;what stops $him from making another go at you?@@ Your other rebellious slaves see this a minor loss for a potentially huge gain and, if anything, @@.mediumaquamarine;become more defiant.@@
 				<<set $activeSlave.trust += 5, $activeSlave.devotion -= 15, $activeSlave.voice = 0>>
 				<<set $slaves.forEach(function(s) { if (s.devotion < -50) { s.trust += 10; } })>>
-				<<set $cash -= $surgeryCost>>
+				<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 				<</replace>>
 			<</link>> //Will cost <<print cashFormat($surgeryCost)>>//
 			<br><<link "Castrate $him">>
@@ -4900,7 +4900,7 @@ brought in to you. This time <<EventNameLink $activeSlave>> has been sent to del
 				As you pull $his limp body to the remote surgery, you notice $he understands what $he has done and begs you to reconsider your decision; but your mind is set. $He had the balls to try and rape you, and now $he won't. Restrained as $he is, the most $he can do is cry and beg. Once $he comes to after the surgery, $he faces $his new life; @@.mediumorchid;$he'll never get hard again@@ and $he's @@.gold;the only one to blame@@ for $his @@.red;suffering.@@ Every other rebellious slave is @@.gold;mortified by the example.@@
 				<<set $activeSlave.trust -= 20, $activeSlave.devotion -= 10, $activeSlave.health -= 10>>
 				<<set $slaves.forEach(function(s) { if (s.devotion < -50) { s.trust -= 5; } })>>
-				<<set $cash -= $surgeryCost>>
+				<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 				<</replace>> //Will cost <<print cashFormat($surgeryCost)>>//
 			<</link>>
 			<<if $activeSlave.vagina == -2>>
@@ -4910,7 +4910,7 @@ brought in to you. This time <<EventNameLink $activeSlave>> has been sent to del
 					<<set $activeSlave.trust -= 30, $activeSlave.devotion -= 25, $activeSlave.health -= 20, $activeSlave.dick = 0, $activeSlave.balls = 0, $activeSlave.scrotum = 0, $activeSlave.prostate = 0, $activeSlave.dickAccessory = "none", $activeSlave.vagina = 1>>
 					<<= VaginalVCheck()>>
 					<<set $slaves.forEach(function(s) { if (s.devotion < -50) { s.trust -= 15; } })>>
-					<<set $cash -= ($surgeryCost*2)>>
+					<<run cashX(forceNeg($surgeryCost*2), "slaveSurgery", $activeSlave)>>
 					<</replace>>
 				<</link>> //Will cost <<print cashFormat(($surgeryCost*2))>>//
 			<<else>>
@@ -4919,7 +4919,7 @@ brought in to you. This time <<EventNameLink $activeSlave>> has been sent to del
 					You ask $him if $he enjoyed the last time $he used $his dick and if it was worth crossing you, because it will not happen again. Restrained as $he is, the most $he can do is cry and beg. Once $he comes to after the surgery, $he faces $his new body; @@.mediumorchid;$he's now a surgical null@@ and $he's @@.gold;the only one to blame@@ for $his @@.red;suffering.@@ Every other rebellious slave is @@.gold;horrified by the example.@@
 					<<set $activeSlave.trust -= 30, $activeSlave.devotion -= 25, $activeSlave.health -= 20, $activeSlave.dick = 0, $activeSlave.foreskin = 0, $activeSlave.balls = 0, $activeSlave.scrotum = 0, $activeSlave.dickAccessory = "none">>
 					<<set $slaves.forEach(function(s) { if (s.devotion < -50) { s.trust -= 15; } })>>
-					<<set $cash -= ($surgeryCost*2)>>
+					<<run cashX(forceNeg($surgeryCost*2), "slaveSurgery", $activeSlave)>>
 					<</replace>>
 				<</link>> //Will cost <<print cashFormat(($surgeryCost*2))>>//
 			<</if>>
@@ -4929,7 +4929,7 @@ brought in to you. This time <<EventNameLink $activeSlave>> has been sent to del
 				<<set $activeSlave.trust -= 50, $activeSlave.devotion -= 30, $activeSlave.health -= 20, $activeSlave.dick = 0, $activeSlave.prostate = 0, $activeSlave.dickAccessory = "none", $activeSlave.vagina = 0, $activeSlave.ovaries = 0, $activeSlave.clit = 0, $activeSlave.labia = 0>>
 				<<= AnalVCheck()>>
 				<<set $slaves.forEach(function(s) { if (s.devotion < -50) { s.trust -= 15; } })>>
-				<<set $cash -= ($surgeryCost*4)>>
+				<<run cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave)>>
 				<</replace>>
 			<</link>> //Will cost <<print cashFormat(($surgeryCost*4))>>//
 		<</if>>
@@ -4987,7 +4987,7 @@ brought in to you. This time <<EventNameLink $activeSlave>> has been sent to del
 				As you pull $his limp body to the remote surgery, you notice $he understands what $he has done and begs you to reconsider your decision; but your mind is set. $He tried to rape you, $he must be silenced. Restrained as $he is, the most $he can do is cry and beg. When $he awakens from surgery, $he realizes all you did was stop $him from talking; @@.mediumaquamarine;what stops $him from making another go at you?@@ Your other rebellious slaves see this a minor loss for a potentially huge gain and, if anything, @@.mediumaquamarine;become more defiant.@@
 				<<set $activeSlave.trust += 5, $activeSlave.devotion -= 15, $activeSlave.voice = 0>>
 				<<set $slaves.forEach(function(s) { if (s.devotion < -50) { s.trust += 10; } })>>
-				<<set $cash -= $surgeryCost>>
+				<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 				<</replace>>
 			<</link>> //Will cost <<print cashFormat($surgeryCost)>>//
 			<br><<link "Castrate $him">>
@@ -4995,7 +4995,7 @@ brought in to you. This time <<EventNameLink $activeSlave>> has been sent to del
 				As you pull $his limp body to the remote surgery, you notice $he understands what $he has done and begs you to reconsider your decision; but your mind is set. $He had the balls to try and rape you, and now $he won't. Restrained as $he is, the most $he can do is cry and beg. Once $he comes to after the surgery, $he faces $his new life; @@.mediumorchid;$he'll never get hard again@@ and $he's @@.gold;the only one to blame@@ for $his @@.red;suffering.@@ Every other rebellious slave is @@.gold;mortified by the example.@@
 				<<set $activeSlave.trust -= 20, $activeSlave.devotion -= 10, $activeSlave.health -= 10>>
 				<<set $slaves.forEach(function(s) { if (s.devotion < -50) { s.trust -= 5; } })>>
-				<<set $cash -= $surgeryCost>>
+				<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 				<</replace>> //Will cost <<print cashFormat($surgeryCost)>>//
 			<</link>>
 			<<if $activeSlave.vagina == -2>>
@@ -5005,7 +5005,7 @@ brought in to you. This time <<EventNameLink $activeSlave>> has been sent to del
 					<<set $activeSlave.trust -= 30, $activeSlave.devotion -= 25, $activeSlave.health -= 20, $activeSlave.dick = 0, $activeSlave.balls = 0, $activeSlave.scrotum = 0, $activeSlave.prostate = 0, $activeSlave.dickAccessory = "none", $activeSlave.vagina = 1>>
 					<<= VaginalVCheck()>>
 					<<set $slaves.forEach(function(s) { if (s.devotion < -50) { s.trust -= 15; } })>>
-					<<set $cash -= ($surgeryCost*2)>>
+					<<run cashX(forceNeg($surgeryCost*2), "slaveSurgery", $activeSlave)>>
 					<</replace>>
 				<</link>> //Will cost <<print cashFormat(($surgeryCost*2))>>//
 			<<else>>
@@ -5014,7 +5014,7 @@ brought in to you. This time <<EventNameLink $activeSlave>> has been sent to del
 					You ask $him if $he enjoyed the last time $he used $his dick and if it was worth crossing you, because it will not happen again. Restrained as $he is, the most $he can do is cry and beg. Once $he comes to after the surgery, $he faces $his new body; @@.mediumorchid;$he's now a surgical null@@ and $he's @@.gold;the only one to blame@@ for $his @@.red;suffering.@@ Every other rebellious slave is @@.gold;horrified by the example.@@
 					<<set $activeSlave.trust -= 30, $activeSlave.devotion -= 25, $activeSlave.health -= 20, $activeSlave.dick = 0, $activeSlave.foreskin = 0, $activeSlave.balls = 0, $activeSlave.scrotum = 0, $activeSlave.dickAccessory = "none">>
 					<<set $slaves.forEach(function(s) { if (s.devotion < -50) { s.trust -= 15; } })>>
-					<<set $cash -= ($surgeryCost*2)>>
+					<<run cashX(forceNeg($surgeryCost*2), "slaveSurgery", $activeSlave)>>
 					<</replace>>
 				<</link>> //Will cost <<print cashFormat(($surgeryCost*2))>>//
 			<</if>>
@@ -5024,7 +5024,7 @@ brought in to you. This time <<EventNameLink $activeSlave>> has been sent to del
 				<<set $activeSlave.trust -= 50, $activeSlave.devotion -= 30, $activeSlave.health -= 20, $activeSlave.dick = 0, $activeSlave.prostate = 0, $activeSlave.dickAccessory = "none", $activeSlave.vagina = 0, $activeSlave.ovaries = 0, $activeSlave.clit = 0, $activeSlave.labia = 0>>
 				<<= AnalVCheck()>>
 				<<set $slaves.forEach(function(s) { if (s.devotion < -50) { s.trust -= 15; } })>>
-				<<set $cash -= ($surgeryCost*4)>>
+				<<run cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave)>>
 				<</replace>>
 			<</link>> //Will cost <<print cashFormat(($surgeryCost*4))>>//
 		<</if>>
@@ -5057,7 +5057,7 @@ brought in to you. This time <<EventNameLink $activeSlave>> has been sent to del
 			As you pull $his limp body to the remote surgery, you notice $he understands what $he has done and begs you to reconsider your decision; but your mind is set. $He tried to rape you, $he must be silenced. Restrained as $he is, the most $he can do is cry and beg. When $he awakens from surgery, $he realizes all you did was stop $him from talking; @@.mediumaquamarine;what stops $him from making another go at you?@@ Your other rebellious slaves see this a minor loss for a potentially huge gain and, if anything, @@.mediumaquamarine;become more defiant.@@
 			<<set $activeSlave.trust += 5, $activeSlave.devotion -= 15, $activeSlave.voice = 0>>
 			<<set $slaves.forEach(function(s) { if (s.devotion < -50) { s.trust += 10; } })>>
-			<<set $cash -= $surgeryCost>>
+			<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 			<</replace>>
 		<</link>> //Will cost <<print cashFormat($surgeryCost)>>//
 		<br><<link "Castrate $him">>
@@ -5065,7 +5065,7 @@ brought in to you. This time <<EventNameLink $activeSlave>> has been sent to del
 			As you pull $his limp body to the remote surgery, you notice $he understands what $he has done and begs you to reconsider your decision; but your mind is set. $He had the balls to try and rape you, and now $he won't. Restrained as $he is, the most $he can do is cry and beg. Once $he comes to after the surgery, $he faces $his new life; @@.mediumorchid;$he'll never get hard again@@ and $he's @@.gold;the only one to blame@@ for $his @@.red;suffering.@@ Every other rebellious slave is @@.gold;mortified by the example.@@
 			<<set $activeSlave.trust -= 20, $activeSlave.devotion -= 10, $activeSlave.health -= 10>>
 			<<set $slaves.forEach(function(s) { if (s.devotion < -50) { s.trust -= 5; } })>>
-			<<set $cash -= $surgeryCost>>
+			<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 			<</replace>> //Will cost <<print cashFormat($surgeryCost)>>//
 		<</link>>
 		<<if $activeSlave.vagina == -2>>
@@ -5075,7 +5075,7 @@ brought in to you. This time <<EventNameLink $activeSlave>> has been sent to del
 				<<set $activeSlave.trust -= 30, $activeSlave.devotion -= 25, $activeSlave.health -= 20, $activeSlave.dick = 0, $activeSlave.balls = 0, $activeSlave.scrotum = 0, $activeSlave.prostate = 0, $activeSlave.dickAccessory = "none", $activeSlave.vagina = 1>>
 				<<= VaginalVCheck()>>
 				<<set $slaves.forEach(function(s) { if (s.devotion < -50) { s.trust -= 15; } })>>
-				<<set $cash -= ($surgeryCost*2)>>
+				<<run cashX(forceNeg($surgeryCost*2), "slaveSurgery", $activeSlave)>>
 				<</replace>>
 			<</link>> //Will cost <<print cashFormat(($surgeryCost*2))>>//
 		<<else>>
@@ -5084,7 +5084,7 @@ brought in to you. This time <<EventNameLink $activeSlave>> has been sent to del
 				You ask $him if $he enjoyed the last time $he used $his dick and if it was worth crossing you, because it will not happen again. Restrained as $he is, the most $he can do is cry and beg. Once $he comes to after the surgery, $he faces $his new body; @@.mediumorchid;$he's now a surgical null@@ and $he's @@.gold;the only one to blame@@ for $his @@.red;suffering.@@ Every other rebellious slave is @@.gold;horrified by the example.@@
 				<<set $activeSlave.trust -= 30, $activeSlave.devotion -= 25, $activeSlave.health -= 20, $activeSlave.dick = 0, $activeSlave.foreskin = 0, $activeSlave.balls = 0, $activeSlave.scrotum = 0, $activeSlave.dickAccessory = "none">>
 				<<set $slaves.forEach(function(s) { if (s.devotion < -50) { s.trust -= 15; } })>>
-				<<set $cash -= ($surgeryCost*2)>>
+				<<run cashX(forceNeg($surgeryCost*2), "slaveSurgery", $activeSlave)>>
 				<</replace>>
 			<</link>> //Will cost <<print cashFormat(($surgeryCost*2))>>//
 		<</if>>
@@ -5094,7 +5094,7 @@ brought in to you. This time <<EventNameLink $activeSlave>> has been sent to del
 			<<set $activeSlave.trust -= 50, $activeSlave.devotion -= 30, $activeSlave.health -= 20, $activeSlave.dick = 0, $activeSlave.prostate = 0, $activeSlave.dickAccessory = "none", $activeSlave.vagina = 0, $activeSlave.ovaries = 0, $activeSlave.clit = 0, $activeSlave.labia = 0>>
 			<<= AnalVCheck()>>
 			<<set $slaves.forEach(function(s) { if (s.devotion < -50) { s.trust -= 15; } })>>
-			<<set $cash -= ($surgeryCost*4)>>
+			<<run cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave)>>
 			<</replace>>
 		<</link>> //Will cost <<print cashFormat(($surgeryCost*4))>>//
 	<</if>>
@@ -5740,7 +5740,7 @@ brought in to you. This time <<EventNameLink $activeSlave>> has been sent to del
 		<<set _meetingBonus = 1000>>
 	<</if>>
 	You finish the motion and get on with your day. $He burrows into the warm place on the bed where your body lay, which is actually an excellent sign of $his mental state. It suggests that $his dreaming mind is quite comfortable with your presence and even smell. You make the meeting, consoling yourself with the thought that you're hardly lacking for opportunities to <<if $PC.dick == 1>>stick your dick in<<else>>have sex with<</if>> $activeSlave.slaveName. The business opportunity turns out to be @@.yellowgreen;quite profitable;@@ you're glad you didn't pass it up.
-	<<set $cash += _meetingBonus>>
+	<<run cashX(_meetingBonus, "event")>>
 	<</replace>>
 <</link>>
 <br><<link "Call in from where you are">>
@@ -5764,7 +5764,7 @@ brought in to you. This time <<EventNameLink $activeSlave>> has been sent to del
 	<</if>>
 	draped across you. The meeting is long enough that your interlocutors eventually realize that something unusual is going on, especially once $he wakes up and starts sleepily <<if $PC.dick == 1>>sucking your dick<<if $PC.vagina == 1>> and <</if>><</if>><<if $PC.vagina == 1>>eating you out<</if>>, out of frame. They're @@.red;slightly annoyed,@@ since having sex during meetings is still considered a minor faux pas, but you @@.yellowgreen;close the deal,@@ and $activeSlave.slaveName is @@.hotpink;very pleased@@ that you would rearrange your affairs to make time for <<if $PC.dick == 1>>one of $his blowjobs<<else>>oral sex with $him<</if>>.
 	<<set $activeSlave.oralCount++, $oralTotal++>>
-	<<set $cash += _meetingBonus>>
+	<<run cashX(_meetingBonus, "event")>>
 	<<set $rep -= 50>>
 	<<set $activeSlave.devotion += 4>>
 	<</replace>>
@@ -7451,7 +7451,8 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 			<</if>>
 		<</if>>
 	<</if>>
-	<<set $cash += 100>>
+	<<run cashX(100, "event")>>
+
 	<</replace>>
 <</link>><<if ($activeSlave.anus == 0 && canDoAnal($activeSlave)) || ($activeSlave.vagina == 0 && canDoVaginal($activeSlave))>> //This option will take virginity//<</if>>
 <</if>>
@@ -7771,7 +7772,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 		<</if>>
 	<</if>>
 	<<set $activeSlave.devotion += 4, $activeSlave.publicCount += 20>>
-	<<set $cash += 50>>
+	<<run cashX(50, "event")>>
 	<</replace>>
 <</link>><<if ($activeSlave.anus == 0 && canDoAnal($activeSlave)) || ($activeSlave.vagina == 0 && canDoVaginal($activeSlave))>> //This option will take virginity//<</if>>
 <</if>>
@@ -7821,7 +7822,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 	<</if>>
 	By the end of the night, $he's been fucked by almost everyone in the bar, and $his itch for humiliation has been well and truly scratched. As you collect $his earnings from the thoroughly pleased bartender, $he lies quiescent in a puddle of cum and exhaustion. @@.yellowgreen;You've collected a decent fee,@@ and @@.green;your reputation has increased.@@
 	<<set $rep += 100>>
-	<<set $cash += 100>>
+	<<run cashX(100, "event")>>
 	<<if canDoVaginal($activeSlave) && canDoAnal($activeSlave)>>
 		<<set $activeSlave.vaginalCount += 10, $vaginalTotal += 10, $activeSlave.analCount += 10, $analTotal += 10>>
 		<<if $activeSlave.eggType == "human" && canGetPregnant($activeSlave)>>
@@ -8007,7 +8008,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 	<<replace "#result">>
 		You let $him know you have a sexual accessory for $him to use. This isn't too unusual, so $he comes to your office without much anticipation. $He doesn't understand why you have an enormous sealed canister of fresh cum on your desk, but when you explain that it's $hers to play with on the job, $he starts to bounce with excitement. Not all of $his customers are interested in cum play, but quite a few are, and $he spends almost as much time cleaning up the gorgeous messes that get made as $he does making them. It's a valuable and @@.yellowgreen;profitable@@ whore who @@.hotpink;looks forward@@ to $his next customer.
 		<<set $activeSlave.devotion += 10>>
-		<<set $cash += random(500,1000)>>
+		<<run cashX(random(500,1000), "event")>>
 		<</replace>>
 <</link>>
 <</if>>
@@ -8600,7 +8601,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 		slapping $him until $he cries and then making out with the weeping whore. Much later, $activeSlave.slaveName limps tiredly into your office and gives you your @@.yellowgreen;<<print cashFormat(200)>>.@@ You ask $him how $he's feeling, and $he mumbles, "I'm OK, <<Master>>. My jaw kinda hurt<<s>> and my leg<<s>> are really <<s>>ore."
 	<</if>>
 	You tell $him that's of little concern, since $he has relatively few years of use left: you may as well extract what value you can from $him. $He's too exhausted to hide $his response, and collapses, @@.gold;sobbing.@@
-	<<set $cash += 200>>
+	<<run cashX(200, "event")>>
 	<<set $activeSlave.trust -= 5, $activeSlave.publicCount++>>
 	<<if _didAnal == 1>>
 		<<set $activeSlave.analCount++, $activeSlave.anus++, $analTotal++>>
@@ -9113,7 +9114,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 	<<replace "#result">>
 	$HeadGirl.slaveName understands the situation immediately. _He2 gets _himself2 and $activeSlave.slaveName dressed for a nice, non-sexual 'date' in $clubName, and leads $him out by the hand with a wink over _his2 shoulder to you. Your Head Girl understands just what kind of break from sexual servitude $activeSlave.slaveName really needs. They enjoy a nice meal, take a stroll and talk as friends, and get some inconsequential but relaxing beauty treatments together. They both @@.hotpink;enjoy the relaxation,@@ and $activeSlave.slaveName @@.green;feels much better@@ after the rest, too.
 	<<set $activeSlave.devotion += 4, $activeSlave.health += 10>>
-	<<set $cash -= 500>>
+	<<run cashX(-500, "event", $activeSlave)>>
 	<<set $slaves[$slaveIndices[$HeadGirl.ID]].devotion += 4>>
 	<</replace>>
 <</link>> //This option will cost <<print cashFormat(500)>>//
@@ -9673,7 +9674,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 	<<replace "#result">>
 	There's all sorts of business going on in $arcologies[0].name, from flesh rented or bought down to more pedestrian affairs. Advertisement never goes amiss. You place $activeSlave.slaveName naked on a slowly rotating pedestal surrounded by a clear plastiglass tube on a busy thoroughfare in the lower parts of $arcologies[0].name. These devices are often used to display slaves for sale or slave whores for rent; $activeSlave.slaveName is simply identified by your name as arcology owner, which is thus @@.yellowgreen;identified with business prosperity.@@ $He spends the day serving as eye candy for passersby, rotating gently on the pedestal as $he shows off $his body, giving pride of place to $his $activeSlave.areolaeShape-shaped areolae. $He loves all the attention, and @@.hotpink;$his devotion to you has increased.@@
 	<<set $activeSlave.devotion += 4>>
-	<<set $cash += 100>>
+	<<run cashX(100, "event")>>
 	<</replace>>
 <</link>>
 
@@ -9837,7 +9838,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 	<<EventNameDelink $activeSlave>>
 	<<replace "#result">>
 	As the sterile doors of the surgical equipment hiss closed over $him, you whisper in $his ear that $he's about to be cut up. $He looks at you with a mix of fear and wild excitement. After nearly a whole week of constant surgery and expensive drug-induced recovery, <<if canSee($activeSlave)>>$he finally gets to see $his new body in the mirror<<elseif $activeSlave.amp == 1>>you finally describe all the new implants in $his body and how they make $him look<<else>>you finally let $him feel $his new body, even helping $his hands to the less obvious changes<</if>>. $He has cartoonishly huge lips, boobs, and buttocks; $he looks like a caricature of a bimbo. $He cries with gratitude <<if canSee($activeSlave)>>to see $himself<<elseif $activeSlave.amp == 1>>to hear how $he looks<<else>>as $he feels $his new body<</if>>, and can scarcely wait to recover enough to get fucked. @@.hotpink;$He has become extremely devoted to you.@@
-	<<set $cash -= 125>>
+	<<run cashX(-125, "slaveSurgery", $activeSlave)>>
 	<<set $activeSlave.devotion += 10>>
 	<<set _surgeryAddict = Math.clamp(20000-$activeSlave.boobs, 0, 2000)>>
 	<<set $activeSlave.boobsImplant += _surgeryAddict, $activeSlave.boobs += _surgeryAddict>>
@@ -11242,7 +11243,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 	<</if>>
 	When $he comes, the milkers detect $his orgasm to your fucking and shunt the milk into different reservoirs. Though you've never been able to taste much difference, there's a belief out there that 'milk-cum,' the squirts of milk a slave milk girl produces when climaxing with $his <<= WrittenMaster()>>, have special aphrodisiac powers. @@.yellowgreen;It can be sold at a special premium.@@ Naturally, @@.hotpink;$his devotion to you has also increased.@@
 	<</replace>>
-	<<set $cash += 100>>
+	<<run cashX(100, "event")>>
 	<<set $activeSlave.devotion += 4>>
 <</link>><<if ($activeSlave.anus == 0 && canDoAnal($activeSlave)) || ($activeSlave.vagina == 0 && canDoVaginal($activeSlave))>> //This option will take virginity//<</if>>
 <br><<link "Delay $his milking and then fuck $him in public">>
@@ -11986,7 +11987,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 	<<EventNameDelink $activeSlave>>
 	<<replace "#result">>
 	You thank $him kindly, tell $him to put $his offering on your desk, and go back to your work. $He flees, and once $he's gone, you <<if $HeadGirl != 0>>have $assistantName pass a note to your Head Girl instructing $him<<else>>instruct $assistantName<</if>> to tighten up your slaves' schedules, since you feel that they have too much time on their hands. Then you direct another slave to return the napkin to its proper place. Your slaves find their spare moments occupied by household minutiae during the coming week, @@.yellowgreen;saving you some money@@ on penthouse and slave upkeep.
-	<<set $cash += 2000>>
+	<<run cashX(2000, "event")>>
 	<</replace>>
 <</link>>
 <<if $activeSlave.fetishKnown == 1 && $activeSlave.fetish != "none">>
@@ -15215,7 +15216,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 	<<EventNameDelink $activeSlave>>
 	<<replace "#result">>
 	Your tenant knows that abject surrender is his only hope once you make it clear to him that his scheme is known to you. He complies all too eagerly with your demand that he @@.yellowgreen;repay double what he owes.@@
-	<<set $cash += random(150,200)*10>>
+	<<run cashX(random(150,200)*10, "event")>>
 	<</replace>>
 <</link>>
 <br><<link "Require double repayment and spend it on $him">>
@@ -15230,7 +15231,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 	<<replace "#result">>
 	Archimedes might have his lever, but give you a place to set such information as this, and you can move a mountain of money. Before he knows what has beset him, your tenant is bustled out of $arcologies[0].name and replaced by a favored and hopefully more honest competitor, who @@.green;is well aware of the score here.@@ $activeSlave.slaveName, who made this possible, spends the day <<if $activeSlave.preg > $activeSlave.pregData.normalBirth/2>>having $his pregnant belly moisturized, $his tired feet rubbed, $his cravings fulfilled, being<<else>>being<</if>> massaged, beautified, and pampered. You then take $him out for a lovely meal, allowing $him to wear clothing that's almost conservative by Free Cities standards, and take a nice walk around $arcologies[0].name's club, talking on light subjects. $He's @@.hotpink;deeply touched@@ by an evening of affection without sex, and $he @@.mediumaquamarine;trusts you@@ with all sorts of amusing whorehouse rumors.
 	<<set $activeSlave.devotion += 3, $activeSlave.trust += 3>>
-	<<set $cash -= 2000>>
+	<<run cashX(-2000, "event", $activeSlave)>>
 	<<set $arcologies[0].prosperity += 1>>
 	<</replace>>
 <</link>> //This will cost <<print cashFormat(2000)>>//
@@ -17222,7 +17223,6 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 	You hold the tablet out to them wordlessly. It's displaying security footage of the three of them, boarding a public VTOL transport for another arcology nearby. The prominent timestamp is thirty minutes in the future. The scene changes, showing them partying in one of that arcology's nightclubs. You clear your throat, dragging their attention away from the counterfeited footage, and describe in detail the other evidence - tickets, identification checks, biometrics - that will prove they left your arcology and visited two others before regrettably disappearing. One of them tries, with utter predictability, to threaten you with her father, but you tell her bluntly that if he does make the effort, he'll be looking in the wrong place.
 	<br><br>
 	"We shouldn't have come here," one of them says dully. She's wrong in that they would have had no trouble at all if they hadn't offended you, but right in that here, they put themselves entirely under your power. Tourists would never visit if this were widely known, but fortunately, you've been successful at concealing this. They begin to cry, and then to beg, and then the drones bag them and take them away.
-	<<set $cash -= 25000>>
 	<<for _ress = 0; _ress < 3; _ress++>>
 		<<set $oneTimeDisableDisability = 1>>
 		<<if $arcologies[0].FSSupremacistLawME == 1>>
@@ -17257,6 +17257,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 		<<set $activeSlave.attrXX = random(10,20)>>
 		<<set $activeSlave.behavioralFlaw = either("arrogant", "bitchy")>>
 		<<run newSlave($activeSlave)>> /* skip New Slave Intro */
+		<<run cashX(-8333, "slaveTransfer", $activeSlave)>>
 	<</for>>
 	<br><br><span id="result2">
 	<<link "Let your public servant take revenge on them">>
@@ -17473,7 +17474,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 		<<set $activeSlave.vagina++, $activeSlave.vaginalCount += 20, $vaginalTotal += 20, $activeSlave.publicCount += 20>>
 	<</if>>
 	<<= knockMeUp($activeSlave, 100, 2, -2, 1)>>
-	<<set $cash -= $surgeryCost>>
+	<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 	<<set $activeSlave.health -= 20>>
 	<<if ($arcologies[0].FSSubjugationistRace == "white")>>
 		<<set $activeSlave.race = "white">>
@@ -18092,7 +18093,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 	<<replace "#result">>
 		You announce that you're resolved to continue growing $his breasts, and since $he feels like a cow, plan to help $him fulfill $his image of $himself. $He's experienced enough to know not to question what that means, just to @@.gold;fear the intent behind it.@@ $He's right to worry, as you drag $him to the remote surgery for an impromptu lactation implant installation. When $he comes to, $he immediately realizes $his breasts are larger than ever. As $he brings a hand to each of the full mounds, a moan laced with relief and disdain escapes $his lips; along with a strong gush of milk from $his engorged breasts. $He has been taught a harsh lesson about questioning your will, a lesson $he will be reminded of every time $he has to empty $his ever swelling breasts of their excessive milk. As with all surgery @@.red;$his health has been slightly affected.@@
 		<<set $activeSlave.trust -= 5, $activeSlave.lactation = 2, $activeSlave.health -= 10>>
-		<<set $cash -= $surgeryCost>>
+		<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 	<</replace>>
 <</link>>
 <</if>> //This option will cost <<print cashFormat($surgeryCost)>>//
@@ -18202,7 +18203,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 	<<EventNameDelink $activeSlave>>
 	<<replace "#result">>
 		You schedule $him for the surgery. Like all invasive procedures, it @@.red;affects $his health,@@ but @@.lime;$he's effectively an anal virgin again.@@ $He @@.mediumaquamarine;trusts you a bit more@@ for granting $his request, and is eager for buttsex that's more interesting than having a hotdog thrown down $his hallway.
-		<<set $activeSlave.trust += 3, $activeSlave.health -= 10, $activeSlave.anus = 0, $cash -= $surgeryCost>>
+		<<set $activeSlave.trust += 3, $activeSlave.health -= 10, $activeSlave.anus = 0, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 		<<if $activeSlave.analSkill > 10>><<set $activeSlave.analSkill -= 10>><</if>>
 		<br><br>
 		<span id="result2">
@@ -19461,7 +19462,8 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 	<<if $activeSlave.eggType == "human" && canGetPregnant($activeSlave)>>
 		<<= knockMeUp($activeSlave, 15, 2, 0, 1)>>
 	<</if>>
-	<<set $activeSlave.oralCount += 2, $oralTotal += 2, $cash += 2000>>
+	<<set $activeSlave.oralCount += 2, $oralTotal += 2>>
+	<<run cashX(2000, "event")>>
 	<<set $activeSlave.publicCount += 2>>
 	<</replace>>
 <</link>>
diff --git a/src/uncategorized/RETS.tw b/src/uncategorized/RETS.tw
index 6bad4afd4fd6b16a8456686115070a3e285427ad..cc9c489087f8beb5331690f9b1646c181a3d056e 100644
--- a/src/uncategorized/RETS.tw
+++ b/src/uncategorized/RETS.tw
@@ -1099,7 +1099,7 @@ $he adds impishly. Hearing this, $subSlave.slaveName lets the breast pop free of
 	<<EventNameDelink $activeSlave>>
 	<<replace "#result">>
 	Rather than answering $him directly, you tell $assistantName to clear $activeSlave.slaveName's and $subSlave.slaveName's schedules for the evening. $He <<if canSee($activeSlave)>>looks<<else>>smiles<</if>> at you with happy anticipation, but is puzzled when you don't give $him any further orders. "Um, thank you, <<Master>>," $he asks hesitantly. "But, I don't under<<s>>tand. What are we going to do?" Whatever you want, you tell $him. $He furrows $his brow, looking troubled, as though the concept is somehow alien to $him. After some thought, $he brightens and asks if $he can go tell $his <<if $activeSlave.relationship >= 5>>wife<<else>>girlfriend<</if>>. $He can, you respond, and the slave bounces over to give you a kiss before running out. It costs you a small sum in upkeep and other trifles to cover an unexpected unavailability of both slaves, but they deserve it. Their busy lives mean that their shifts rarely align exactly, and this is more time than they've had together in a long time. It isn't particularly exciting, but they enjoy themselves. They eat a meal in the kitchen together, watch the sunset from one of the penthouse balconies, make love out there, share a long shower, and then go to bed, spending the rest of the night cuddling and chatting quietly. The next morning, they come to see you hand in hand, and @@.hotpink;thank you in unison.@@ As they leave, $activeSlave.slaveName looks back over $his shoulder at you, and mouths 'that was perfect, <<= WrittenMaster($activeSlave)>>!'
-	<<set $cash -= 500>>
+	<<run cashX(-500, "event")>>
 	<<set $subSlave.devotion += 2>>
 	<<set $activeSlave.devotion += 2>>
 	<<set $slaves[$slaveIndices[$subSlave.ID]] = $subSlave>>
@@ -1115,7 +1115,7 @@ $he adds impishly. Hearing this, $subSlave.slaveName lets the breast pop free of
 		Rather than answering $him directly, you tell $assistantName to clear $activeSlave.slaveName's and $subSlave.slaveName's schedules for the evening, and then contact $Attendant.slaveName, the Attendant of your Spa, to instruct _himA to expect the two slaves for some quality time together. $Attendant.slaveName, of course, is all for it ("Leave it to me, <<Master $Attendant>>!"). _HeA greets the couple at the steamy entrance to the Spa an hour later, and takes charge of them with a matronly air, telling them to undress and relax.
 		<br><br>
 		It costs you a small sum in upkeep and other trifles to cover an unexpected unavailability of both slaves, but they deserve it, and your Attendant does not disappoint. After the slaves have soaked in the main pool for a while, _heA gives them a series of mud packs, hot rock massages, and skin treatments, always setting them up right next to each other. They chat a bit at first, but soon relax into companionable silence, holding hands and enjoying the pampering.<<if $Attendant.lactation > 0>> $Attendant.slaveName has their evening meal sent down, and supplements it with milk drunk fresh from _hisA own nipples.<</if>> This being your penthouse, _hisA services become quite sexual later in the night, as the Attendant applies all _hisA talents in choosing positions that emphasize $activeSlave.slaveName and $subSlave.slaveName being close to each other<<if $Attendant.bellyPreg >= 10000 && $activeSlave.bellyPreg >= 10000 && $subSlave.bellyPreg >= 10000>>, a difficult task given that they are all heavily pregnant,<<elseif $Attendant.belly >= 10000 && $activeSlave.belly >= 10000 && $subSlave.belly >= 10000>>, a difficult task given how big everyone's bellies are,<</if>> as they share $Attendant.slaveName's body. Much later, the Attendant sends you a brief message relaying their @@.hotpink;heartfelt thanks,@@ which _heA's passing to you because they're asleep together.
-		<<set $cash -= 500>>
+		<<run cashX(-500, "event")>>
 		<<set $subSlave.devotion += 3>>
 		<<set $activeSlave.devotion += 3>>
 		<<set $slaves[$slaveIndices[$subSlave.ID]] = $subSlave>>
@@ -1128,7 +1128,7 @@ $he adds impishly. Hearing this, $subSlave.slaveName lets the breast pop free of
 	Rather than answering $him directly, you tell $assistantName to clear $activeSlave.slaveName's and $subSlave.slaveName's schedules for the evening. $He looks at you with happy anticipation, but this is nothing to $his gratitude when you tell $him that you'll arrange a date night for them. Trusted slaves are often seen unchaperoned in your arcology, and there are several establishments that cater to slaveowners who wish to bring their girls out or even send them out alone. You tell $him you've made a reservation for $him and $his <<if $activeSlave.relationship >= 5>>wife<<else>>girlfriend<</if>> at one of the less formal places, an ethnic restaurant that manages to add spice to liquid slave nutrition without ruining its good qualities. They're to spend the night out, and can wear what they like. $He hurries off to collect $his _girl2 and get dressed, but also tries to keep thanking you on $his way out, and almost runs into the door frame as $he goes.
 	<br><br>
 	Since $he trusts you, they dress very daringly for slaves. That is, they dress about as conservatively as slaves can dress, in comfortable pants and soft sweaters whose high collars they roll down to keep their collars visible. Any hesitations citizens who see them might have are banished by their obvious love for each other, and their total lack of shame about having it seen. Indeed, as the night wears on they attract more than a few @@.green;admiring glances@@ from citizens who envy you the favors of the pair of <<if $girl == _girl2>>$girl<<else>>slave<</if>>s occupying one side of the corner booth. After all, they'd rather lean against each other than look at each other from across a table. The next day, they both come to you individually and @@.mediumaquamarine;thank you almost gravely,@@ quite aware of the trust you've placed in them.
-	<<set $cash -= 1000>>
+	<<run cashX(-1000, "event")>>
 	<<set $rep += 100>>
 	<<set $subSlave.trust += 2, $activeSlave.trust += 2>>
 	<<set $slaves[$slaveIndices[$subSlave.ID]] = $subSlave>>
@@ -1598,7 +1598,7 @@ $he adds impishly. Hearing this, $subSlave.slaveName lets the breast pop free of
 	<<EventNameDelink $activeSlave>>
 	<<replace "#result">>
 	You tell $him that $his butt is your property, just like $subSlave.slaveName's. $He looks @@.gold;terrified,@@ but this is nothing to $his reaction when another slave arrives to bring $him out for an auction of $his virgin anus. $He's dragged out, whining, "P-plea<<s>>e, <<Master>>, plea<<s>>e don't <<s>>ell my butthole! I'll do anything! Plea<<s>>e!" $His pleas are unavailing. <<if $assistantName == "your personal assistant">>Your personal assistant<<else>>$assistantName<</if>> conducts a brisk streetside auction of the weeping slave $girl, using compliance systems to force $him to spread $his quivering buttocks for the crowd. The @@.yellowgreen;winning bidder@@ uses a public stall to do the deed; its thin walls are nowhere near enough to disguise $his whining and sobbing as he @@.lime;takes $his anal virginity.@@ $He now @@.red;hates anal.@@
-	<<set $cash += 500>>
+	<<run cashX(500, "whore", $activeSlave)>>
 	<<set $activeSlave.sexualFlaw = "hates anal", $activeSlave.trust -= 5, $activeSlave.anus += 1, $activeSlave.analCount++, $activeSlave.publicCount++>>
 	<<set $analTotal++>>
 	<<if canGetPregnant($activeSlave) && $activeSlave.eggType == "human">>
diff --git a/src/uncategorized/REroyalblood.tw b/src/uncategorized/REroyalblood.tw
index aa2ece577eae1622463406fd6d0dc299c89e103d..e0343b3d91bffee248793c4079957da82f8a0e4d 100644
--- a/src/uncategorized/REroyalblood.tw
+++ b/src/uncategorized/REroyalblood.tw
@@ -179,10 +179,10 @@ Time is short, but you are well placed to acquire some choice slaves. With an ad
 		<br><br>
 		Eventually she arrives in your penthouse, the perfect image of a demure yet composed princess. Her clearly practiced façade of poise and grace fades under scrutiny, however. The slightest trembling of her balled up fists, the minute tremors that mar her immaculate posture, her inability to meet your eyes with her own — all signs that she is still a scared girl despite all her royal trappings. Nonetheless, though the princess's court training is unlikely to be very beneficial to her in her new life in the penthouse, it does stand in stark contrast to her more common slave peers.
 		<br><br>
-		<<set $cash -= 50000>>
 		<<set $rep -= 2000>>
 		<<set _princess.origin = "She was a princess of a royal kingdom, till her family was overthrown and she was sold to you in exchange for aid.">>
 		<<set $activeSlave = _princess>>
+		<<run cashX(-50000, "slaveTransfer", $activeSlave)>>
 		<<include "New Slave Intro">>
 		<<set $activeSlave.recruiter = 0>> /* override New Slave Intro */
 	<</replace>>
@@ -214,9 +214,9 @@ Time is short, but you are well placed to acquire some choice slaves. With an ad
 		<br><br>
 		When he arrives in your penthouse, the former prince is beside himself with rage. When he is brought to be modified in the remote surgery, he breaks free and attempts to fight his way out of your penthouse. His attempt at freedom is futile, however, and he is soon overwhelmed by your guards and dragged back to the remote surgery. It doesn't take long for the valiant prince to become a new dickgirl, though his submission to life as a slave is another question entirely.
 		<br><br>
-		<<set $cash -= 35000>>
 		<<set _prince.origin = "She was the crown prince of a royal kingdom, till her family was overthrown and she was sold to you in exchange for aid.">>
 		<<set $activeSlave = _prince>>
+		<<run cashX(-35000, "slaveTransfer", $activeSlave)>>
 		<<include "New Slave Intro">>
 		<<set $activeSlave.recruiter = 0>> /* override New Slave Intro */
 	<</replace>>
@@ -248,7 +248,7 @@ Time is short, but you are well placed to acquire some choice slaves. With an ad
 		<br><br>
 		Eventually they arrive in your penthouse, faces flushed with embarrassment of their compromising position. The former prince is beside himself with rage, but seems to be holding himself back for his little sister's sake, while she struggles to maintain a façade of poise and grace. The slightest trembling of her balled up fists, the minute tremors that mar her immaculate posture, her inability to meet your eyes with her own — all signs that she is still a scared girl despite all her royal trappings. Nonetheless, though the princess's court training is unlikely to be very beneficial to her in her new life in the penthouse, it does stand in stark contrast to her more common slave peers. However, the prince's submission to life as a slave is another question entirely.
 		<br><br>
-		<<set $cash -= 100000>>
+		<<run cashX(-100000, "slaveTransfer", _princess)>>
 		<<set $rep -= 10000>>
 		/* princess */
 		<<set _princess.origin = "She was a princess of a royal kingdom, till her family was overthrown and she was sold to you in exchange for aid.">>
@@ -323,7 +323,6 @@ Time is short, but you are well placed to acquire some choice slaves. With an ad
 		<br><br>
 		When the ladies arrive at your penthouse, they seem almost relieved at the opulence of their new surroundings. Though they still retain much of their aristocratic arrogance, they each submit to biometric scanning with relative obedience. It seems likely that their obedience is borne out of a delusional rationalization that enslavement by one wealthy master is better than enslavement by the unwashed masses they once lorded over.
 		<br><br>
-		<<set $cash -= 25000>>
 		<<for $i = 0; $i < 3; $i++>>
 			<<set $activeSlaveOneTimeMinAge = 21>>
 			<<set $activeSlaveOneTimeMaxAge = ($retirementAge-2)>>
@@ -359,6 +358,7 @@ Time is short, but you are well placed to acquire some choice slaves. With an ad
 			<<set $activeSlave.behavioralFlaw = either("arrogant", "bitchy")>>
 			<<run newSlave($activeSlave)>> /* skip New Slave Intro */
 			<<set $activeSlave.recruiter = 0>> /* override New Slave Intro */
+			<<run cashX(-8333, "slaveTransfer", $activeSlave)>>
 		<</for>>
 	<</replace>>
 <</link>> // It will cost about <<print cashFormat(25000)>> to enslave them.//
@@ -423,7 +423,7 @@ Time is short, but you are well placed to acquire some choice slaves. With an ad
 		<br><br>
 		When the Queen arrives at your penthouse, she seems almost relieved and almost basks in the opulence of her new surroundings. Yet, it seems likely that her relief has more to do with saving her from a lifetime of gang rape at the mercy of her former subjects, than it does the familiar luxury. She submits to biometric scanning obediently and without fuss<<if $seePreg != 0>>, during which you discover to her surprise that she is pregnant. Since she hasn't begun to show yet, it's unclear whether the child is the former King's or the new arcology owner's. You don't have the means to discern the father of the child, but you notice she cradles her ever so slightly rounded stomach protectively nonetheless<</if>>.
 		<br><br>
-		<<set $cash -= 15000>>
+		<<run cashX(-15000, "slaveTransfer", _queen)>>
 		<<set $activeSlaveOneTimeMinAge = ($fertilityAge+2)>>
 		<<if $pedo_mode == 1>>
 			<<set $activeSlaveOneTimeMaxAge = 24>>
@@ -473,7 +473,8 @@ Time is short, but you are well placed to acquire some choice slaves. With an ad
 <<if $cash >= 500000>>
 <br><<link "Send a large amount of credits and goods to retrieve both the princess and Queen.">>
 	<<replace "#result">>
-		<<set $cash -= 500000>>
+		<<run cashX(-400000, "slaveTransfer", _princess)>>
+		<<run cashX(-100000, "slaveTransfer", _queen)>>
 		You take a tablet and transmit a communication request to the new arcology owner with your intent. Once his shock wears off, he readily accepts with little need for negotiation. Soon, a flight of VTOLs land in the new arcology laden with goods. When they take off again they have the princess and the Queen, who is resigned to her fate, clad in chains then bound face to face in a forced embrace.
 		<br><br>
 		Eventually they both arrive in your penthouse. The princess is flushed with embarrassment in her compromising position, struggling to maintain a façade of poise and grace. The slightest trembling of her balled up fists, the minute tremors that mar her immaculate posture, her inability to meet your eyes with her own — all signs that she is still a scared girl despite all her royal trappings. Nonetheless, though the princess's court training is unlikely to be very beneficial to her in her new life in the penthouse, it does stand in stark contrast to her more common slave peers. The Queen, on the other hand, seems almost relieved and basks in the opulence of her new surroundings. Yet, it seems likely that her relief has more to do with saving her from a lifetime of gang rape at the mercy of her former subjects, than it does the familiar luxury. She submits to biometric scanning obediently and without fuss<<if $seePreg != 0>>, during which you discover to her surprise that she is pregnant. Since she hasn't begun to show yet, it's unclear whether the child is the former King's or the new arcology owner's. You don't have the means to discern the father of the child, but you notice she cradles her ever so slightly rounded stomach protectively nonetheless<</if>>.
@@ -544,7 +545,6 @@ Time is short, but you are well placed to acquire some choice slaves. With an ad
 <<if $cash >= 500000>>
 <br><<link "Offer a generous amount of cash in exchange for both the Queen and her court ladies.">>
 	<<replace "#result">>
-		<<set $cash -= 500000>>
 		You take a tablet and transmit a communication request to the new arcology owner with your intent. Once his shock wears off, he readily accepts with little need for negotiation. Soon, a flight of VTOLs land in the new arcology laden with goods. When they take off again they have the Queen, who is resigned to her fate, and a gaggle of terrified court ladies chained together.
 		<br><br>
 		Eventually they all arrive in your penthouse. The Queen seems almost relieved and basks in the opulence of her new surroundings. Yet, it seems likely that her relief has more to do with saving her from a lifetime of gang rape at the mercy of her former subjects, than it does the familiar luxury. She submits to biometric scanning obediently and without fuss<<if $seePreg != 0>>, during which you discover to her surprise that she is pregnant. Since she hasn't begun to show yet, it's unclear whether the child is the former King's or the new arcology owner's. You don't have the means to discern the father of the child, but you notice she cradles her ever so slightly rounded stomach protectively nonetheless<</if>>. Meanwhile, the ladies seem comforted by the opulence of their new surroundings. Though they still retain much of their aristocratic arrogance, they each submit to biometric scanning with relative obedience. It seems likely that their obedience is borne out of a delusional rationalization that enslavement by one wealthy master is better than enslavement by the unwashed masses they once lorded over.
@@ -584,6 +584,7 @@ Time is short, but you are well placed to acquire some choice slaves. With an ad
 			<<set $activeSlave.behavioralFlaw = either("arrogant", "bitchy")>>
 			<<run newSlave($activeSlave)>> /* skip New Slave Intro */
 			<<set $activeSlave.recruiter = 0>> /* override New Slave Intro */
+			<<run cashX(-100000, "slaveTransfer", $activeSlave)>>
 		<</for>>
 		/*Queen*/
 		<<set _queen.origin = "She was the Queen of a royal kingdom, till her husband was overthrown and she was sold for credits.">>
@@ -593,6 +594,7 @@ Time is short, but you are well placed to acquire some choice slaves. With an ad
 		<<set _queen.father = $missingParentID>>
 		<<set $missingParentID-->>
 		<<run newSlave(_queen)>> /* skip New Slave Intro */
+		<<run cashX(-200000, "slaveTransfer", _queen)>>
 	<</replace>>
 <</link>> // It will cost about <<print cashFormat(500000)>> to enslave the Queen and her court ladies.//
 <<else>>
@@ -658,7 +660,6 @@ Time is short, but you are well placed to acquire some choice slaves. With an ad
 <<if $cash >= 2500000 && $familyTesting == 1>>
 <br><<link "Send an unheard amount of credits and goods to retrieve the entire court.">>
 	<<replace "#result">>
-		<<set $cash -= 2500000>>
 		You take a tablet and transmit a communication request to the new arcology owner with your intent. Once his shock wears off, he readily accepts with little need for negotiation. Soon, a flight of VTOLs land in the new arcology laden with goods. When they take off again they have the prince and princess, clad in chains and bound face to face in a forced embrace, the Queen, who is resigned to her fate, and a gaggle of terrified court ladies.
 		<br><br>
 		Eventually they all arrive in your penthouse. The prince and princess are flushed with embarrassment in their compromising position. The former prince is beside himself with rage, but seems to be holding himself back for his little sister's sake, while she struggles to maintain a façade of poise and grace. The slightest trembling of her balled up fists, the minute tremors that mar her immaculate posture, her inability to meet your eyes with her own — all signs that she is still a scared girl despite all her royal trappings. Nonetheless, though the princess's court training is unlikely to be very beneficial to her in her new life in the penthouse, it does stand in stark contrast to her more common slave peers. However, the prince's submission to life as a slave is another question entirely. The Queen, on the other hand, seems almost relieved and basks in the opulence of her new surroundings. Yet, it seems likely that her relief has more to do with saving her from a lifetime of gang rape at the mercy of her former subjects, than it does the familiar luxury. She submits to biometric scanning obediently and without fuss<<if $seePreg != 0>>, during which you discover to her surprise that she is pregnant. Since she hasn't begun to show yet, it's unclear whether the child is the former King's or the new arcology owner's. You don't have the means to discern the father of the child, but you notice she cradles her ever so slightly rounded stomach protectively nonetheless<</if>>. Lastly, the ladies seem comforted by the opulence of their new surroundings. Though they still retain much of their aristocratic arrogance, they each submit to biometric scanning with relative obedience. It seems likely that their obedience is borne out of a delusional rationalization that enslavement by one wealthy master is better than enslavement by the unwashed masses they once lorded over.
@@ -698,6 +699,7 @@ Time is short, but you are well placed to acquire some choice slaves. With an ad
 			<<set $activeSlave.behavioralFlaw = either("arrogant", "bitchy")>>
 			<<run newSlave($activeSlave)>> /* skip New Slave Intro */
 			<<set $activeSlave.recruiter = 0>> /* override New Slave Intro */
+			<<run cashX(-250000, "slaveTransfer", $activeSlave)>>
 		<</for>>
 		/* princess */
 		<<set _princess.origin = "She was a princess of a royal kingdom, till her family was overthrown and she was sold for credits.">>
@@ -706,12 +708,14 @@ Time is short, but you are well placed to acquire some choice slaves. With an ad
 		<<set _princess.father = $missingParentID>>
 		<<set $missingParentID-->>
 		<<run newSlave(_princess)>> /* skip New Slave Intro */
+		<<run cashX(-1500000, "slaveTransfer", $activeSlave)>>
 		/* prince */
 		<<set _prince.origin = "She was the crown prince of a royal kingdom, till her family was overthrown and she was sold for credits.">>
 		<<set _prince.recruiter = 0>>
 		<<set _prince.mother = _princess.mother>>
 		<<set _prince.father = _princess.father>>
 		<<run newSlave(_prince)>> /* skip New Slave Intro */
+		<<run cashX(-150000, "slaveTransfer", $activeSlave)>>
 		/*Queen*/
 		<<set _queen.origin = "She was the Queen of a royal kingdom, till her husband was overthrown and she was sold for credits.">>
 		<<set _queen.recruiter = 0>>
@@ -720,6 +724,7 @@ Time is short, but you are well placed to acquire some choice slaves. With an ad
 		<<set _queen.father = $missingParentID>>
 		<<set $missingParentID-->>
 		<<run newSlave(_queen)>> /* skip New Slave Intro */
+		<<run cashX(-600000, "slaveTransfer", $activeSlave)>>
 	<</replace>>
 <</link>> // It will cost about <<print cashFormat(2500000)>> to enslave the entire court.//
 <<elseif $familyTesting == 1>>
diff --git a/src/uncategorized/arcade.tw b/src/uncategorized/arcade.tw
index e5813e041319df9c89601fef04e69c7e1182c13b..d9e8b8334493485f29d53c8f1fd053b07ae57df6 100644
--- a/src/uncategorized/arcade.tw
+++ b/src/uncategorized/arcade.tw
@@ -92,7 +92,7 @@ $arcadeNameCaps
 	@@.yellow;$arcadeNameCaps is overcrowded;@@ the least popular inmate will be converted to a standard Fuckdoll this week.
 <</if>>
 <<set _Tmult0 = Math.trunc($arcade*1000*$upgradeMultiplierArcology)>>
-[[Expand the arcade|Arcade][$cash -= _Tmult0, $arcade += 5]] //Costs <<print cashFormat(_Tmult0)>> and will increase upkeep costs//
+[[Expand the arcade|Arcade][cashX(forceNeg(_Tmult0), "capEx"), $arcade += 5]] //Costs <<print cashFormat(_Tmult0)>> and will increase upkeep costs//
 
 <br>
 <<set _Tmult1 = Math.trunc(10000*$upgradeMultiplierArcology)>>
@@ -102,7 +102,7 @@ $arcadeNameCaps
 	It has been retrofitted to milk lactating slaves<<if $seeDicks != 0>> and cockmilk slaves capable of ejaculating<</if>>, though less efficiently than a dedicated facility.
 <<else>>
 	<br>It is a standard arcade. It can be upgraded to either maximize the pleasure of those that visit it at the expense of the health of the inmates, or to keep them healthy (if not happy) and milk them of useful fluids.<br>
-	[[Upgrade the arcade with invasive performance-enhancing systems|Arcade][$cash -= _Tmult1, $arcadeUpgradeInjectors = 1]] | [[Retrofit the arcade to collect useful fluids|Arcade][$cash -= _Tmult1, $arcadeUpgradeCollectors = 1]]<br>
+	[[Upgrade the arcade with invasive performance-enhancing systems|Arcade][cashX(forceNeg(_Tmult1), "capEx"), $arcadeUpgradeInjectors = 1]] | [[Retrofit the arcade to collect useful fluids|Arcade][cashX(forceNeg(_Tmult1), "capEx"), $arcadeUpgradeCollectors = 1]]<br>
 	//Choosing either upgrade will cost <<print cashFormat(_Tmult1)>> and will increase upkeep costs. They are mutually exclusive; only one can be chosen.// <br>
 <</if>>
 
@@ -115,7 +115,7 @@ $arcadeNameCaps
 			In addition to the low walls that house inmates, there are also rows of simple shackles that allow menial Fuckdolls to be restrained here to add still more rapeable holes to $arcadeName's capacity. They're empty at present.
 		<</if>>
 	<<else>>
-		There is no provision for menial Fuckdolls. [[Add shackles to restrain more holes|Arcade][$cash -= _Tmult1, $arcadeUpgradeMenials = 1]] //Costs <<print cashFormat(_Tmult1)>>//
+		There is no provision for menial Fuckdolls. [[Add shackles to restrain more holes|Arcade][cashX(forceNeg(_Tmult1), "capEx"), $arcadeUpgradeMenials = 1]] //Costs <<print cashFormat(_Tmult1)>>//
 	<</if>>
 <</if>>
 
@@ -124,7 +124,7 @@ $arcadeNameCaps
 	equipped to convert surplus inmates into standard Fuckdolls.
 <<else>>
 	<<set _Tmult2 = Math.trunc(5000*$upgradeMultiplierArcology)>>
-	not equipped to convert surplus inmates into standard Fuckdolls. [[Upgrade the arcade to create Fuckdolls|Arcade][$cash -= _Tmult2, $arcadeUpgradeFuckdolls = 1]] //Costs <<print cashFormat(_Tmult2)>>//
+	not equipped to convert surplus inmates into standard Fuckdolls. [[Upgrade the arcade to create Fuckdolls|Arcade][cashX(forceNeg(_Tmult2), "capEx"), $arcadeUpgradeFuckdolls = 1]] //Costs <<print cashFormat(_Tmult2)>>//
 <</if>>
 
 <!-- Statistics output -->
diff --git a/src/uncategorized/arcadeReport.tw b/src/uncategorized/arcadeReport.tw
index 369786421d7127fe628547d17a43453f09e6dccf..3769c0d1e88f9e69e6064aca4117eb88034084ca 100644
--- a/src/uncategorized/arcadeReport.tw
+++ b/src/uncategorized/arcadeReport.tw
@@ -85,11 +85,14 @@
 	<</if>>
 	<<if ($arcadeUpgradeCollectors > 0)>>
 		<<if ($slaves[$i].vasectomy == 1)>>
-			<<set $slaves[$i].vasectomy = 0, $slaves[$i].health -= 10, $cash -= $surgeryCost, $vasectomiesUndone++>>
+			<<set $slaves[$i].vasectomy = 0, $slaves[$i].health -= 10, $vasectomiesUndone++>>
+			<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $slaves[$i])>>
 		<<elseif ($slaves[$i].lactation < 2)>>
-			<<set $slaves[$i].lactation = 2, $slaves[$i].health -= 10, $cash -= $surgeryCost, $boobsImplanted++>>
+			<<set $slaves[$i].lactation = 2, $slaves[$i].health -= 10, $boobsImplanted++>>
+			<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $slaves[$i])>>
 		<<elseif $slaves[$i].prostate == 1>>
-			<<set $slaves[$i].prostate = 2, $slaves[$i].health -= 10, $cash -= $surgeryCost, $prostatesImplanted++>>
+			<<set $slaves[$i].prostate = 2, $slaves[$i].health -= 10, $prostatesImplanted++>>
+			<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $slaves[$i])>>
 		<<elseif ($slaves[$i].lactation > 0) || ($slaves[$i].balls > 0)>>
 			<<set _oldCash = $cash>>
 			<<if $showEWD != 0>>
diff --git a/src/uncategorized/arcmgmt.tw b/src/uncategorized/arcmgmt.tw
index fd114695dc63929e184321c775eb0b2765bdc954..0b353a58e7a07b725e190fe7c3b18c425659dda4 100644
--- a/src/uncategorized/arcmgmt.tw
+++ b/src/uncategorized/arcmgmt.tw
@@ -1081,8 +1081,10 @@ _percTopClass = Math.trunc(($topClass / ($ACitizens + $ASlaves)) * 1000) / 10>>
 <<set _rents = Math.trunc(($lowerClass * $LCRent + $middleClass * $MCRent + $upperClass * $UCRent + $topClass * $TCRent) * _rentMultiplier / 25)>>
 <<if !isInt(_rents)>>
 	<br>@@.red;Error: rents is outside accepted range, please report this issue@@
+<<else>>
+	<<run cashX(_rents, "rents")>>
 <</if>>
-<<set $cash += _rents>>
+
 
 This week, rents from $arcologies[0].name came to @@.yellowgreen;<<print cashFormat(_rents)>>.@@
 <<if $difficultySwitch == 0>>
@@ -1092,44 +1094,50 @@ This week, rents from $arcologies[0].name came to @@.yellowgreen;<<print cashFor
 			<<set _bribes += Math.trunc($cash*0.02)>>
 		<</if>>
 		The @@.red;degenerating world economy@@ makes supplying and maintaining $arcologies[0].name extremely difficult. This week, bribes and other costs to keep it running came to @@.yellowgreen;<<print cashFormat(_bribes)>>.@@
-		<<set $cash -= _bribes>>
+		<<set _bribes = forceNeg(_bribes)>>
+		<<run cashX(_bribes, "rents")>>
 	<</if>>
 <</if>>
 
 <<if $menials+$menialBioreactors+$fuckdolls > 0>>
-<<set _earnings = 0>>
 You own
 <<if $menials > 0>>
 	<<if $menials > Math.trunc(_LSCD / _slaveProductivity - _SCD)>>
 		<<set _earnings += Math.trunc(_LSCD / _slaveProductivity - _SCD) * 10>>
 		<br>@@.red;more menial slaves than there was work,@@ consider selling some. You own
 	<<else>>
-		<<set _earnings += $menials*10>>
+		<<set _menialEarnings = $menials*10>>
 		<<if $Sweatshops > 0>>
 			<<if $Sweatshops*500 <= $menials>>
-				<<set _earnings += $Sweatshops*7000>>
-				<<set _earnings += ($menials-$Sweatshops*500)*10>>
+				<<set _menialEarnings += $Sweatshops*7000>>
+				<<set _menialEarnings += ($menials-$Sweatshops*500)*10>>
 			<<else>>
-				<<set _earnings += $menials*10>>
+				<<set _menialEarnings += $menials*10>>
 			<</if>>
 		<</if>>
 	<</if>>
 	<<if $menials > 1>> <<print commaNum($menials)>> menial slaves<<if ($menialBioreactors > 0) && ($fuckdolls == 0)>> and<<else>>,<</if>><<else>>one menial slave<<if ($menialBioreactors > 0) && ($fuckdolls == 0)>> and<<else>>,<</if>><</if>>
+	<<run cashX(_menialEarnings, "menialTrades")>>
 <</if>>
+
 <<if $menialBioreactors > 0>>
-	<<set _earnings += $menialBioreactors*(10+(10*$arcologies[0].FSPastoralistLaw))>>
-	<<if $dairy && $dairyUpgradeMenials>><<set _earnings += $menialBioreactors*5>><</if>>
+	<<set _bioreactorEarnings = $menialBioreactors*(10+(10*$arcologies[0].FSPastoralistLaw))>>
+	<<if $dairy && $dairyUpgradeMenials>><<set _bioreactorEarnings += $menialBioreactors*5>><</if>>
 	<<if $menialBioreactors > 1>> <<print commaNum($menialBioreactors)>> standard bioreactors,<<else>>one standard bioreactor,<</if>>
 	<<if $fuckdolls > 0>>and<</if>>
+	<<run cashX(_bioreactorEarnings, "menialBioreactors")>>
 <</if>>
+
+
 <<if $fuckdolls > 0>>
-	<<set _earnings += $fuckdolls*(15+(10*$arcologies[0].FSDegradationistLaw))>>
-	<<if $arcade && $arcadeUpgradeMenials>><<set _earnings += $fuckdolls*5>><</if>>
-	<<if $fuckdolls > 1>> <<print commaNum($fuckdolls)>> standard Fuckdolls,<<else>>one Fuckdoll,<</if>>
+	<<set _fuckdollsEarnings = $fuckdolls*(15+(10*$arcologies[0].FSDegradationistLaw))>>
+	<<if $arcade && $arcadeUpgradeMenials>><<set _fuckdollsEarnings += $fuckdolls*5>><</if>>
+	<<if $fuckdolls > 1>> <<print commaNum($fuckdolls)>> standard fuckdolls,<<else>>one fuckdoll,<</if>>
+	<<set _fuckdollsEarnings += random(1,10)>>
+	<<run cashX(_fuckdollsEarnings, "fuckdolls")>>
 <</if>>
 <<set _earnings += random(1,10)>>
 
-<<set $cash += _earnings>>
 earning you @@.yellowgreen;<<print cashFormat(_earnings)>>.@@
 <</if>>
 
@@ -1553,13 +1561,16 @@ Your ''business assistant'' manages the menial slave market.
 		_HeM liquidates your chattel holdings, since it's a sellers' market.
 	<</if>>
 	<<if $menials > 0>>
-		<<set $cash += $menials*(menialSlaveCost(-$menials)), $menialDemandFactor -= $menials, $menials = 0>>
+		<<set _cashX = $menials*(menialSlaveCost(-$menials)), $menialDemandFactor -= $menials, $menials = 0>>
+		<<run cashX(_cashX, "menialTradesTransfer")>>
 	<</if>>
 	<<if $fuckdolls > 0>>
-		<<set $cash += $fuckdolls*(menialSlaveCost(-$fuckdolls)*2), $menialDemandFactor -= $fuckdolls, $fuckdolls = 0>>
+		<<set _cashX = $fuckdolls*(menialSlaveCost(-$fuckdolls)*2), $menialDemandFactor -= $fuckdolls, $fuckdolls = 0>>
+		<<run cashX(_cashX, "fuckdollsTransfer")>>
 	<</if>>
 	<<if $menialBioreactors > 0>>
-		<<set $cash += $menialBioreactors*(menialSlaveCost(-$menialBioreactors)-100), $menialDemandFactor -= $menialBioreactors, $menialBioreactors = 0>>
+		<<set _cashX = $menialBioreactors*(menialSlaveCost(-$menialBioreactors)-100), $menialDemandFactor -= $menialBioreactors, $menialBioreactors = 0>>
+		<<run cashX(_cashX, "menialBioreactorsTransfer")>>
 	<</if>>
 <<else>>
 	Prices are average, so _heM does not make any significant moves.
diff --git a/src/uncategorized/bodyModification.tw b/src/uncategorized/bodyModification.tw
index c74ca3bf5a26fec90eafb21106d6bb2da3ca5796..b48c07a212696a4fb4cc768c380bd4ea4caff53e 100644
--- a/src/uncategorized/bodyModification.tw
+++ b/src/uncategorized/bodyModification.tw
@@ -389,55 +389,55 @@ Choose piercing style:
 //Lightly// pierce $his:
 
 <<link "Entire body">>
-	<<if $activeSlave.earPiercing != 1>><<set $activeSlave.earPiercing = 1>>				<<set $cash -= $modCost>><</if>>
-	<<if $activeSlave.nosePiercing != 1>><<set $activeSlave.nosePiercing = 1>>				<<set $cash -= $modCost>><</if>>
-	<<if $activeSlave.eyebrowPiercing != 1>><<set $activeSlave.eyebrowPiercing = 1>>		<<set $cash -= $modCost>><</if>>
-	<<if $activeSlave.lipsPiercing != 1>><<set $activeSlave.lipsPiercing = 1>>				<<set $cash -= $modCost>><</if>>
-	<<if $activeSlave.tonguePiercing != 1>><<set $activeSlave.tonguePiercing = 1>>			<<set $cash -= $modCost>><</if>>
+	<<if $activeSlave.earPiercing != 1>><<set $activeSlave.earPiercing = 1>>				<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>><</if>>
+	<<if $activeSlave.nosePiercing != 1>><<set $activeSlave.nosePiercing = 1>>				<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>><</if>>
+	<<if $activeSlave.eyebrowPiercing != 1>><<set $activeSlave.eyebrowPiercing = 1>>		<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>><</if>>
+	<<if $activeSlave.lipsPiercing != 1>><<set $activeSlave.lipsPiercing = 1>>				<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>><</if>>
+	<<if $activeSlave.tonguePiercing != 1>><<set $activeSlave.tonguePiercing = 1>>			<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>><</if>>
 	<<if $activeSlave.nipples != "fuckable">>
-		<<if $activeSlave.nipplesPiercing != 1 && >><<set $activeSlave.nipplesPiercing = 1>><<set $cash -= $modCost>><</if>>
+		<<if $activeSlave.nipplesPiercing != 1 && >><<set $activeSlave.nipplesPiercing = 1>><<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>><</if>>
 	<</if>>
-	<<if $activeSlave.areolaePiercing != 1>><<set $activeSlave.areolaePiercing = 1>>		<<set $cash -= $modCost>><</if>>
-	<<if $activeSlave.corsetPiercing != 1>><<set $activeSlave.corsetPiercing = 1>>			<<set $cash -= $modCost>><</if>>
-	<<if $activeSlave.navelPiercing != 1>><<set $activeSlave.navelPiercing = 1>>			<<set $cash -= $modCost>><</if>>
+	<<if $activeSlave.areolaePiercing != 1>><<set $activeSlave.areolaePiercing = 1>>		<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>><</if>>
+	<<if $activeSlave.corsetPiercing != 1>><<set $activeSlave.corsetPiercing = 1>>			<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>><</if>>
+	<<if $activeSlave.navelPiercing != 1>><<set $activeSlave.navelPiercing = 1>>			<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>><</if>>
 	<<if ($activeSlave.vagina != -1) || ($activeSlave.dick != 0)>>
-		<<if $activeSlave.clitPiercing != 1>><<set $activeSlave.clitPiercing = 1>>			<<set $cash -= $modCost>><</if>>
+		<<if $activeSlave.clitPiercing != 1>><<set $activeSlave.clitPiercing = 1>>			<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>><</if>>
 	<</if>>
 	<<if ($activeSlave.vagina != -1)>>
-		<<if $activeSlave.vaginaPiercing != 1>><<set $activeSlave.vaginaPiercing = 1>>		<<set $cash -= $modCost>><</if>>
+		<<if $activeSlave.vaginaPiercing != 1>><<set $activeSlave.vaginaPiercing = 1>>		<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>><</if>>
 	<</if>>
 	<<if ($activeSlave.dick > 0)>>
-		<<if $activeSlave.dickPiercing != 1>><<set $activeSlave.dickPiercing = 1>>			<<set $cash -= $modCost>><</if>>
+		<<if $activeSlave.dickPiercing != 1>><<set $activeSlave.dickPiercing = 1>>			<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>><</if>>
 	<</if>>
-	<<if $activeSlave.anusPiercing != 1>><<set $activeSlave.anusPiercing = 1>>				<<set $cash -= $modCost>><</if>>
+	<<if $activeSlave.anusPiercing != 1>><<set $activeSlave.anusPiercing = 1>>				<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>><</if>>
 	<<goto "Body Modification">>
 <</link>>
 
-<<if $activeSlave.earPiercing != 1>> 		| [[Ear|Body Modification][$activeSlave.earPiercing = 1, $cash -= $modCost]]<</if>>
-<<if $activeSlave.nosePiercing != 1>> 		| [[Nose|Body Modification][$activeSlave.nosePiercing = 1, $cash -= $modCost]]<</if>>
-<<if $activeSlave.eyebrowPiercing != 1>> 	| [[Eyebrow|Body Modification][$activeSlave.eyebrowPiercing = 1, $cash -= $modCost]]<</if>>
-<<if $activeSlave.lipsPiercing != 1>> 		| [[Lips|Body Modification][$activeSlave.lipsPiercing = 1, $cash -= $modCost]]<</if>>
-<<if $activeSlave.tonguePiercing != 1>> 	| [[Tongue|Body Modification][$activeSlave.tonguePiercing = 1, $cash -= $modCost]]<</if>>
+<<if $activeSlave.earPiercing != 1>> 		| [[Ear|Body Modification][$activeSlave.earPiercing = 1, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
+<<if $activeSlave.nosePiercing != 1>> 		| [[Nose|Body Modification][$activeSlave.nosePiercing = 1, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
+<<if $activeSlave.eyebrowPiercing != 1>> 	| [[Eyebrow|Body Modification][$activeSlave.eyebrowPiercing = 1, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
+<<if $activeSlave.lipsPiercing != 1>> 		| [[Lips|Body Modification][$activeSlave.lipsPiercing = 1, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
+<<if $activeSlave.tonguePiercing != 1>> 	| [[Tongue|Body Modification][$activeSlave.tonguePiercing = 1, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
 <<if $activeSlave.nipples != "fuckable">>
-<<if $activeSlave.nipplesPiercing != 1>> 	| [[Nipples|Body Modification][$activeSlave.nipplesPiercing = 1, $cash -= $modCost]]<</if>>
+<<if $activeSlave.nipplesPiercing != 1>> 	| [[Nipples|Body Modification][$activeSlave.nipplesPiercing = 1, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
 <</if>>
-<<if $activeSlave.areolaePiercing != 1>> 	| [[Areolae|Body Modification][$activeSlave.areolaePiercing = 1, $cash -= $modCost]]<</if>>
-<<if $activeSlave.corsetPiercing != 1>> 	| [[Corset|Body Modification][$activeSlave.corsetPiercing = 1, $cash -= $modCost]]<</if>>
-<<if $activeSlave.navelPiercing != 1>> 		| [[Navel|Body Modification][$activeSlave.navelPiercing = 1, $cash -= $modCost]]<</if>>
+<<if $activeSlave.areolaePiercing != 1>> 	| [[Areolae|Body Modification][$activeSlave.areolaePiercing = 1, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
+<<if $activeSlave.corsetPiercing != 1>> 	| [[Corset|Body Modification][$activeSlave.corsetPiercing = 1, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
+<<if $activeSlave.navelPiercing != 1>> 		| [[Navel|Body Modification][$activeSlave.navelPiercing = 1, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
 <<if ($activeSlave.vagina != -1) || ($activeSlave.dick != 0)>>
 	<<if $activeSlave.vagina != -1>>
-		<<if $activeSlave.clitPiercing != 1>> 	| [[Clit|Body Modification][$activeSlave.clitPiercing = 1, $cash -= $modCost]]<</if>>
+		<<if $activeSlave.clitPiercing != 1>> 	| [[Clit|Body Modification][$activeSlave.clitPiercing = 1, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
 	<<else>>
-		<<if $activeSlave.clitPiercing != 1>> 	| [[Dickhead|Body Modification][$activeSlave.clitPiercing = 1, $cash -= $modCost]]<</if>>
+		<<if $activeSlave.clitPiercing != 1>> 	| [[Dickhead|Body Modification][$activeSlave.clitPiercing = 1, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
 	<</if>>
 <</if>>
 <<if ($activeSlave.vagina != -1)>>
-	<<if $activeSlave.vaginaPiercing != 1>> | [[Vagina|Body Modification][$activeSlave.vaginaPiercing = 1, $cash -= $modCost]]<</if>>
+	<<if $activeSlave.vaginaPiercing != 1>> | [[Vagina|Body Modification][$activeSlave.vaginaPiercing = 1, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
 <</if>>
 <<if ($activeSlave.dick > 0)>>
-	<<if $activeSlave.dickPiercing != 1>> 	| [[Dick|Body Modification][$activeSlave.dickPiercing = 1, $cash -= $modCost]]<</if>>
+	<<if $activeSlave.dickPiercing != 1>> 	| [[Dick|Body Modification][$activeSlave.dickPiercing = 1, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
 <</if>>
-<<if $activeSlave.anusPiercing != 1>> 		| [[Anus|Body Modification][$activeSlave.anusPiercing = 1, $cash -= $modCost]]<</if>>
+<<if $activeSlave.anusPiercing != 1>> 		| [[Anus|Body Modification][$activeSlave.anusPiercing = 1, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
 <</if>>
 
 <<if $piercingLevel == 2>>
@@ -445,55 +445,55 @@ Choose piercing style:
 ''Heavily'' pierce $his:
 
 <<link "Entire body">>
-	<<if $activeSlave.earPiercing != 2>><<set $activeSlave.earPiercing = 2>>			<<set $cash -= $modCost, $degradation += 1>><</if>>
-	<<if $activeSlave.nosePiercing != 2>><<set $activeSlave.nosePiercing = 2>>			<<set $cash -= $modCost, $degradation += 1>><</if>>
-	<<if $activeSlave.eyebrowPiercing != 2>><<set $activeSlave.eyebrowPiercing = 2>>	<<set $cash -= $modCost, $degradation += 1>><</if>>
-	<<if $activeSlave.lipsPiercing != 2>><<set $activeSlave.lipsPiercing = 2>>			<<set $cash -= $modCost, $degradation += 1>><</if>>
-	<<if $activeSlave.tonguePiercing != 2>><<set $activeSlave.tonguePiercing = 2>>		<<set $cash -= $modCost, $degradation += 1>><</if>>
+	<<if $activeSlave.earPiercing != 2>><<set $activeSlave.earPiercing = 2>>			<<set cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $degradation += 1>><</if>>
+	<<if $activeSlave.nosePiercing != 2>><<set $activeSlave.nosePiercing = 2>>			<<set cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $degradation += 1>><</if>>
+	<<if $activeSlave.eyebrowPiercing != 2>><<set $activeSlave.eyebrowPiercing = 2>>	<<set cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $degradation += 1>><</if>>
+	<<if $activeSlave.lipsPiercing != 2>><<set $activeSlave.lipsPiercing = 2>>			<<set cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $degradation += 1>><</if>>
+	<<if $activeSlave.tonguePiercing != 2>><<set $activeSlave.tonguePiercing = 2>>		<<set cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $degradation += 1>><</if>>
 	<<if $activeSlave.nipples != "fuckable">>
-	<<if $activeSlave.nipplesPiercing != 2>><<set $activeSlave.nipplesPiercing = 2>>	<<set $cash -= $modCost, $degradation += 1>><</if>>
+	<<if $activeSlave.nipplesPiercing != 2>><<set $activeSlave.nipplesPiercing = 2>>	<<set cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $degradation += 1>><</if>>
 	<</if>>
-	<<if $activeSlave.areolaePiercing != 2>><<set $activeSlave.areolaePiercing = 2>>	<<set $cash -= $modCost, $degradation += 1>><</if>>
-	<<if $activeSlave.corsetPiercing != 2>><<set $activeSlave.corsetPiercing = 2>>		<<set $cash -= $modCost, $degradation += 1>><</if>>
-	<<if $activeSlave.navelPiercing != 2>><<set $activeSlave.navelPiercing = 2>>		<<set $cash -= $modCost, $degradation += 1>><</if>>
+	<<if $activeSlave.areolaePiercing != 2>><<set $activeSlave.areolaePiercing = 2>>	<<set cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $degradation += 1>><</if>>
+	<<if $activeSlave.corsetPiercing != 2>><<set $activeSlave.corsetPiercing = 2>>		<<set cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $degradation += 1>><</if>>
+	<<if $activeSlave.navelPiercing != 2>><<set $activeSlave.navelPiercing = 2>>		<<set cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $degradation += 1>><</if>>
 	<<if ($activeSlave.vagina != -1) || ($activeSlave.dick != 0)>>
-		<<if $activeSlave.clitPiercing != 2>><<set $activeSlave.clitPiercing = 2>>		<<set $cash -= $modCost, $degradation += 1>><</if>>
+		<<if $activeSlave.clitPiercing != 2>><<set $activeSlave.clitPiercing = 2>>		<<set cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $degradation += 1>><</if>>
 	<</if>>
 	<<if ($activeSlave.vagina != -1)>>
-		<<if $activeSlave.vaginaPiercing != 2>><<set $activeSlave.vaginaPiercing = 2>>	<<set $cash -= $modCost, $degradation += 1>><</if>>
+		<<if $activeSlave.vaginaPiercing != 2>><<set $activeSlave.vaginaPiercing = 2>>	<<set cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $degradation += 1>><</if>>
 	<</if>>
 	<<if ($activeSlave.dick > 0)>>
-		<<if $activeSlave.dickPiercing != 2>><<set $activeSlave.dickPiercing = 2>>		<<set $cash -= $modCost, $degradation += 1>><</if>>
+		<<if $activeSlave.dickPiercing != 2>><<set $activeSlave.dickPiercing = 2>>		<<set cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $degradation += 1>><</if>>
 	<</if>>
-	<<if $activeSlave.anusPiercing != 2>><<set $activeSlave.anusPiercing = 2>>			<<set $cash -= $modCost, $degradation += 1>><</if>>
+	<<if $activeSlave.anusPiercing != 2>><<set $activeSlave.anusPiercing = 2>>			<<set cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $degradation += 1>><</if>>
 	<<goto "Body Modification">>
 <</link>>
 
-<<if $activeSlave.earPiercing != 2>> 		| [[Ear|Body Modification][$activeSlave.earPiercing = 2, $cash -= $modCost,$degradation += 1]]<</if>>
-<<if $activeSlave.nosePiercing != 2>> 		| [[Nose|Body Modification][$activeSlave.nosePiercing = 2, $cash -= $modCost,$degradation += 1]]<</if>>
-<<if $activeSlave.eyebrowPiercing != 2>> 	| [[Eyebrow|Body Modification][$activeSlave.eyebrowPiercing = 2, $cash -= $modCost,$degradation += 1]]<</if>>
-<<if $activeSlave.lipsPiercing != 2>> 		| [[Lips|Body Modification][$activeSlave.lipsPiercing = 2, $cash -= $modCost,$degradation += 1]]<</if>>
-<<if $activeSlave.tonguePiercing != 2>> 	| [[Tongue|Body Modification][$activeSlave.tonguePiercing = 2, $cash -= $modCost,$degradation += 1]]<</if>>
+<<if $activeSlave.earPiercing != 2>> 		| [[Ear|Body Modification][$activeSlave.earPiercing = 2, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$degradation += 1]]<</if>>
+<<if $activeSlave.nosePiercing != 2>> 		| [[Nose|Body Modification][$activeSlave.nosePiercing = 2, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$degradation += 1]]<</if>>
+<<if $activeSlave.eyebrowPiercing != 2>> 	| [[Eyebrow|Body Modification][$activeSlave.eyebrowPiercing = 2, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$degradation += 1]]<</if>>
+<<if $activeSlave.lipsPiercing != 2>> 		| [[Lips|Body Modification][$activeSlave.lipsPiercing = 2, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$degradation += 1]]<</if>>
+<<if $activeSlave.tonguePiercing != 2>> 	| [[Tongue|Body Modification][$activeSlave.tonguePiercing = 2, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$degradation += 1]]<</if>>
 <<if $activeSlave.nipples != "fuckable">>
-<<if $activeSlave.nipplesPiercing != 2>> 	| [[Nipples|Body Modification][$activeSlave.nipplesPiercing = 2, $cash -= $modCost,$degradation += 1]]<</if>>
+<<if $activeSlave.nipplesPiercing != 2>> 	| [[Nipples|Body Modification][$activeSlave.nipplesPiercing = 2, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$degradation += 1]]<</if>>
 <</if>>
-<<if $activeSlave.areolaePiercing != 2>> 	| [[Areolae|Body Modification][$activeSlave.areolaePiercing = 2, $cash -= $modCost,$degradation += 1]]<</if>>
-<<if $activeSlave.corsetPiercing != 2>> 	| [[Corset|Body Modification][$activeSlave.corsetPiercing = 2, $cash -= $modCost,$degradation += 1]]<</if>>
-<<if $activeSlave.navelPiercing != 2>> 		| [[Navel|Body Modification][$activeSlave.navelPiercing = 2, $cash -= $modCost,$degradation += 1]]<</if>>
+<<if $activeSlave.areolaePiercing != 2>> 	| [[Areolae|Body Modification][$activeSlave.areolaePiercing = 2, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$degradation += 1]]<</if>>
+<<if $activeSlave.corsetPiercing != 2>> 	| [[Corset|Body Modification][$activeSlave.corsetPiercing = 2, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$degradation += 1]]<</if>>
+<<if $activeSlave.navelPiercing != 2>> 		| [[Navel|Body Modification][$activeSlave.navelPiercing = 2, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$degradation += 1]]<</if>>
 <<if ($activeSlave.vagina != -1) || ($activeSlave.dick != 0)>>
 	<<if $activeSlave.vagina != -1>>
-		<<if $activeSlave.clitPiercing != 2>> | [[Clit|Body Modification][$activeSlave.clitPiercing = 2, $cash -= $modCost,$degradation += 1]]<</if>>
+		<<if $activeSlave.clitPiercing != 2>> | [[Clit|Body Modification][$activeSlave.clitPiercing = 2, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$degradation += 1]]<</if>>
 	<<else>>
-		<<if $activeSlave.clitPiercing != 2>> | [[Dickhead|Body Modification][$activeSlave.clitPiercing = 2, $cash -= $modCost,$degradation += 1]]<</if>>
+		<<if $activeSlave.clitPiercing != 2>> | [[Dickhead|Body Modification][$activeSlave.clitPiercing = 2, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$degradation += 1]]<</if>>
 	<</if>>
 <</if>>
 <<if ($activeSlave.vagina != -1)>>
-	<<if $activeSlave.vaginaPiercing != 2>> | [[Vagina|Body Modification][$activeSlave.vaginaPiercing = 2, $cash -= $modCost,$degradation += 1]]<</if>>
+	<<if $activeSlave.vaginaPiercing != 2>> | [[Vagina|Body Modification][$activeSlave.vaginaPiercing = 2, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$degradation += 1]]<</if>>
 <</if>>
 <<if ($activeSlave.dick > 0)>>
-	<<if $activeSlave.dickPiercing != 2>> 	| [[Dick|Body Modification][$activeSlave.dickPiercing = 2, $cash -= $modCost,$degradation += 1]]<</if>>
+	<<if $activeSlave.dickPiercing != 2>> 	| [[Dick|Body Modification][$activeSlave.dickPiercing = 2, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$degradation += 1]]<</if>>
 <</if>>
-<<if $activeSlave.anusPiercing != 2>> 		| [[Anus|Body Modification][$activeSlave.anusPiercing = 2, $cash -= $modCost,$degradation += 1]]<</if>>
+<<if $activeSlave.anusPiercing != 2>> 		| [[Anus|Body Modification][$activeSlave.anusPiercing = 2, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$degradation += 1]]<</if>>
 <</if>>
 
 <<if $piercingLevel == 3>>
@@ -514,40 +514,40 @@ Remove piercings from:
 
 /* no dick/vagina checks in 'remove' so stealth piercings can be cleaned. Check only for piercings. */
 <<link "Everywhere">>
-	<<if $activeSlave.earPiercing > 0>><<set $activeSlave.earPiercing = 0>>			<<set $cash -= $modCost>><</if>>
-	<<if $activeSlave.nosePiercing > 0>><<set $activeSlave.nosePiercing = 0>>		<<set $cash -= $modCost>><</if>>
-	<<if $activeSlave.eyebrowPiercing > 0>><<set $activeSlave.eyebrowPiercing = 0>>	<<set $cash -= $modCost>><</if>>
-	<<if $activeSlave.lipsPiercing > 0>><<set $activeSlave.lipsPiercing = 0>>		<<set $cash -= $modCost>><</if>>
-	<<if $activeSlave.tonguePiercing > 0>><<set $activeSlave.tonguePiercing = 0>>	<<set $cash -= $modCost>><</if>>
-	<<if $activeSlave.nipplesPiercing > 0>><<set $activeSlave.nipplesPiercing = 0>>	<<set $cash -= $modCost>><</if>>
-	<<if $activeSlave.areolaePiercing > 0>><<set $activeSlave.areolaePiercing = 0>>	<<set $cash -= $modCost>><</if>>
-	<<if $activeSlave.corsetPiercing > 0>><<set $activeSlave.corsetPiercing = 0>>	<<set $cash -= $modCost>><</if>>
-	<<if $activeSlave.navelPiercing > 0>><<set $activeSlave.navelPiercing = 0>>		<<set $cash -= $modCost>><</if>>
-	<<if $activeSlave.clitPiercing > 0>><<set $activeSlave.clitPiercing = 0>>		<<set $cash -= $modCost>><</if>>
-	<<if $activeSlave.vaginaPiercing > 0>><<set $activeSlave.vaginaPiercing = 0>>	<<set $cash -= $modCost>><</if>>
-	<<if $activeSlave.dickPiercing > 0>><<set $activeSlave.dickPiercing = 0>>		<<set $cash -= $modCost>><</if>>
-	<<if $activeSlave.anusPiercing > 0>><<set $activeSlave.anusPiercing = 0>>		<<set $cash -= $modCost>><</if>>
+	<<if $activeSlave.earPiercing > 0>><<set $activeSlave.earPiercing = 0>>			<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>><</if>>
+	<<if $activeSlave.nosePiercing > 0>><<set $activeSlave.nosePiercing = 0>>		<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>><</if>>
+	<<if $activeSlave.eyebrowPiercing > 0>><<set $activeSlave.eyebrowPiercing = 0>>	<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>><</if>>
+	<<if $activeSlave.lipsPiercing > 0>><<set $activeSlave.lipsPiercing = 0>>		<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>><</if>>
+	<<if $activeSlave.tonguePiercing > 0>><<set $activeSlave.tonguePiercing = 0>>	<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>><</if>>
+	<<if $activeSlave.nipplesPiercing > 0>><<set $activeSlave.nipplesPiercing = 0>>	<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>><</if>>
+	<<if $activeSlave.areolaePiercing > 0>><<set $activeSlave.areolaePiercing = 0>>	<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>><</if>>
+	<<if $activeSlave.corsetPiercing > 0>><<set $activeSlave.corsetPiercing = 0>>	<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>><</if>>
+	<<if $activeSlave.navelPiercing > 0>><<set $activeSlave.navelPiercing = 0>>		<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>><</if>>
+	<<if $activeSlave.clitPiercing > 0>><<set $activeSlave.clitPiercing = 0>>		<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>><</if>>
+	<<if $activeSlave.vaginaPiercing > 0>><<set $activeSlave.vaginaPiercing = 0>>	<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>><</if>>
+	<<if $activeSlave.dickPiercing > 0>><<set $activeSlave.dickPiercing = 0>>		<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>><</if>>
+	<<if $activeSlave.anusPiercing > 0>><<set $activeSlave.anusPiercing = 0>>		<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>><</if>>
 	<<goto "Body Modification">>
 
 <</link>>
 
-<<if $activeSlave.earPiercing > 0>> 		| [[Ear|Body Modification][$activeSlave.earPiercing = 0, $cash -= $modCost]]<</if>>
-<<if $activeSlave.nosePiercing > 0>> 		| [[Nose|Body Modification][$activeSlave.nosePiercing = 0, $cash -= $modCost]]<</if>>
-<<if $activeSlave.eyebrowPiercing > 0>> 	| [[Eyebrow|Body Modification][$activeSlave.eyebrowPiercing = 0, $cash -= $modCost]]<</if>>
-<<if $activeSlave.lipsPiercing > 0>> 		| [[Lips|Body Modification][$activeSlave.lipsPiercing = 0, $cash -= $modCost]]<</if>>
-<<if $activeSlave.tonguePiercing > 0>> 		| [[Tongue|Body Modification][$activeSlave.tonguePiercing = 0, $cash -= $modCost]]<</if>>
-<<if $activeSlave.nipplesPiercing > 0>> 	| [[Nipples|Body Modification][$activeSlave.nipplesPiercing = 0, $cash -= $modCost]]<</if>>
-<<if $activeSlave.areolaePiercing > 0>> 	| [[Areolae|Body Modification][$activeSlave.areolaePiercing = 0, $cash -= $modCost]]<</if>>
-<<if $activeSlave.corsetPiercing > 0>> 		| [[Corset|Body Modification][$activeSlave.corsetPiercing = 0, $cash -= $modCost]]<</if>>
-<<if $activeSlave.navelPiercing > 0>> 		| [[Navel|Body Modification][$activeSlave.navelPiercing = 0, $cash -= $modCost]]<</if>>
+<<if $activeSlave.earPiercing > 0>> 		| [[Ear|Body Modification][$activeSlave.earPiercing = 0, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
+<<if $activeSlave.nosePiercing > 0>> 		| [[Nose|Body Modification][$activeSlave.nosePiercing = 0, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
+<<if $activeSlave.eyebrowPiercing > 0>> 	| [[Eyebrow|Body Modification][$activeSlave.eyebrowPiercing = 0, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
+<<if $activeSlave.lipsPiercing > 0>> 		| [[Lips|Body Modification][$activeSlave.lipsPiercing = 0, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
+<<if $activeSlave.tonguePiercing > 0>> 		| [[Tongue|Body Modification][$activeSlave.tonguePiercing = 0, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
+<<if $activeSlave.nipplesPiercing > 0>> 	| [[Nipples|Body Modification][$activeSlave.nipplesPiercing = 0, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
+<<if $activeSlave.areolaePiercing > 0>> 	| [[Areolae|Body Modification][$activeSlave.areolaePiercing = 0, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
+<<if $activeSlave.corsetPiercing > 0>> 		| [[Corset|Body Modification][$activeSlave.corsetPiercing = 0, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
+<<if $activeSlave.navelPiercing > 0>> 		| [[Navel|Body Modification][$activeSlave.navelPiercing = 0, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
 <<if $activeSlave.vagina != -1>>
-	<<if $activeSlave.clitPiercing > 0>> 	| [[Clit|Body Modification][$activeSlave.clitPiercing = 0, $cash -= $modCost]]<</if>>
+	<<if $activeSlave.clitPiercing > 0>> 	| [[Clit|Body Modification][$activeSlave.clitPiercing = 0, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
 <<else>>
-	<<if $activeSlave.clitPiercing > 0>> 	| [[Dickhead|Body Modification][$activeSlave.clitPiercing = 0, $cash -= $modCost]]<</if>>
+	<<if $activeSlave.clitPiercing > 0>> 	| [[Dickhead|Body Modification][$activeSlave.clitPiercing = 0, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
 <</if>>
-<<if $activeSlave.vaginaPiercing > 0>> 		| [[Vagina|Body Modification][$activeSlave.vaginaPiercing = 0, $cash -= $modCost]]<</if>>
-<<if $activeSlave.dickPiercing > 0>> 		| [[Dick|Body Modification][$activeSlave.dickPiercing = 0, $cash -= $modCost]]<</if>>
-<<if $activeSlave.anusPiercing > 0>> 		| [[Anus|Body Modification][$activeSlave.anusPiercing = 0, $cash -= $modCost]]<</if>>
+<<if $activeSlave.vaginaPiercing > 0>> 		| [[Vagina|Body Modification][$activeSlave.vaginaPiercing = 0, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
+<<if $activeSlave.dickPiercing > 0>> 		| [[Dick|Body Modification][$activeSlave.dickPiercing = 0, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
+<<if $activeSlave.anusPiercing > 0>> 		| [[Anus|Body Modification][$activeSlave.anusPiercing = 0, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
 <</if>>
 
 <br><br>
@@ -586,7 +586,7 @@ Choose a tattoo style:
 <<if $tattooChoice != "paternalist">> | [[Paternalist|Body Modification][$tattooChoice = "paternalist"]]<<else>>| Paternalist<</if>>
 
 <<if $activeSlave.anusTat == 0>>
-	<<if $tattooChoice != "bleached">>| [[Bleach|Body Modification][$tattooChoice = "bleached",$cash -= $modCost]]<<else>>| Bleach<</if>>
+	<<if $tattooChoice != "bleached">>| [[Bleach|Body Modification][$tattooChoice = "bleached",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<<else>>| Bleach<</if>>
 <</if>>
 
 <<if _hasTat == 1>>
@@ -610,26 +610,26 @@ Choose a tattoo style:
 		<<set _degradationTemp = 0>>
 		<<if $activeSlave.boobsTat != $tattooChoice>>
 			<<set $activeSlave.boobsTat = $tattooChoice>>
-			<<set $cash -= $modCost>>
+			<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>>
 			<<set _degradationTemp += 1>>
 		<</if>>
 
 		<<if $activeSlave.buttTat != $tattooChoice>>
 			<<set $activeSlave.buttTat = $tattooChoice>>
-			<<set $cash -= $modCost>>
+			<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>>
 			<<set _degradationTemp += 1>>
 		<</if>>
 
 		<<if $activeSlave.vaginaTat != $tattooChoice>>
 			<<set $activeSlave.vaginaTat = $tattooChoice>>
-			<<set $cash -= $modCost>>
+			<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>>
 			<<set _degradationTemp += 1>>
 		<</if>>
 
 		<<if $activeSlave.dick > 0>>
 		<<if $activeSlave.dickTat != $tattooChoice && $tattooChoice != "scenes">>
 			<<set $activeSlave.dickTat = $tattooChoice>>
-			<<set $cash -= $modCost>>
+			<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>>
 			<<set _degradationTemp += 1>>
 		<</if>>
 		<</if>>
@@ -640,48 +640,48 @@ Choose a tattoo style:
 			<<else>>
 				<<set $activeSlave.lipsTat = $tattooChoice>>
 			<</if>>
-			<<set $cash -= $modCost>>
+			<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>>
 			<<set _degradationTemp += 1>>
 		<</if>>
 
 		<<if ($tattooChoice == "Asian art" || $tattooChoice == "scenes") && $activeSlave.anusTat == "bleached">>
 			<<set $activeSlave.anusTat = "bleached">>
-			<<set $cash -= $modCost>>
+			<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>>
 			<<set _degradationTemp += 1>>
 		<<elseif $activeSlave.anusTat != $tattooChoice>>
 			<<set $activeSlave.anusTat = $tattooChoice>>
-			<<set $cash -= $modCost>>
+			<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>>
 			<<set _degradationTemp += 1>>
 		<</if>>
 
 		<<if $activeSlave.shouldersTat != $tattooChoice>>
 			<<set $activeSlave.shouldersTat = $tattooChoice>>
-			<<set $cash -= $modCost>>
+			<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>>
 			<<set _degradationTemp += 1>>
 		<</if>>
 
 		<<if $activeSlave.backTat != $tattooChoice>>
 			<<set $activeSlave.backTat = $tattooChoice>>
-			<<set $cash -= $modCost>>
+			<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>>
 			<<set _degradationTemp += 1>>
 		<</if>>
 
 		<<if $activeSlave.amp != 1>>
 		<<if $activeSlave.armsTat != $tattooChoice>>
 			<<set $activeSlave.armsTat = $tattooChoice>>
-			<<set $cash -= $modCost>>
+			<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>>
 			<<set _degradationTemp += 1>>
 		<</if>>
 		<<if $activeSlave.legsTat != $tattooChoice>>
 			<<set $activeSlave.legsTat = $tattooChoice>>
-			<<set $cash -= $modCost>>
+			<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>>
 			<<set _degradationTemp += 1>>
 		<</if>>
 		<</if>>
 
 		<<if $activeSlave.stampTat != $tattooChoice>>
 			<<set $activeSlave.stampTat = $tattooChoice>>
-			<<set $cash -= $modCost>>
+			<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>>
 			<<set _degradationTemp += 1>>
 		<</if>>
 
@@ -694,48 +694,48 @@ Choose a tattoo style:
 	<</if>>
 
 	<<if $tattooChoice == 0>>
-		<<if $activeSlave.shouldersTat != $tattooChoice>> | [[Shoulders|Body Modification][$activeSlave.shouldersTat = $tattooChoice,$cash -= $modCost]]<</if>>
-		<<if $activeSlave.lipsTat != $tattooChoice>> | [[Face|Body Modification][$activeSlave.lipsTat = $tattooChoice,$cash -= $modCost]]<</if>>
-		<<if $activeSlave.boobsTat != $tattooChoice>> | [[Boobs|Body Modification][$activeSlave.boobsTat = $tattooChoice,$cash -= $modCost]]<</if>>
+		<<if $activeSlave.shouldersTat != $tattooChoice>> | [[Shoulders|Body Modification][$activeSlave.shouldersTat = $tattooChoice,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
+		<<if $activeSlave.lipsTat != $tattooChoice>> | [[Face|Body Modification][$activeSlave.lipsTat = $tattooChoice,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
+		<<if $activeSlave.boobsTat != $tattooChoice>> | [[Boobs|Body Modification][$activeSlave.boobsTat = $tattooChoice,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
 		<<if $activeSlave.amp != 1>>
-			<<if $activeSlave.armsTat != $tattooChoice>> | [[Arms|Body Modification][$activeSlave.armsTat = $tattooChoice,$cash -= $modCost]]<</if>>
+			<<if $activeSlave.armsTat != $tattooChoice>> | [[Arms|Body Modification][$activeSlave.armsTat = $tattooChoice,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
 		<</if>>
-		<<if $activeSlave.backTat != $tattooChoice>> | [[Upper back|Body Modification][$activeSlave.backTat = $tattooChoice,$cash -= $modCost]]<</if>>
-		<<if $activeSlave.stampTat != $tattooChoice>> | [[Lower back|Body Modification][$activeSlave.stampTat = $tattooChoice,$cash -= $modCost]]<</if>>
-		<<if $activeSlave.buttTat != $tattooChoice>> | [[Buttock|Body Modification][$activeSlave.buttTat = $tattooChoice,$cash -= $modCost]]<</if>>
-		<<if $activeSlave.vaginaTat != $tattooChoice>> | [[Vagina|Body Modification][$activeSlave.vaginaTat = $tattooChoice,$cash -= $modCost]]<</if>>
+		<<if $activeSlave.backTat != $tattooChoice>> | [[Upper back|Body Modification][$activeSlave.backTat = $tattooChoice,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
+		<<if $activeSlave.stampTat != $tattooChoice>> | [[Lower back|Body Modification][$activeSlave.stampTat = $tattooChoice,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
+		<<if $activeSlave.buttTat != $tattooChoice>> | [[Buttock|Body Modification][$activeSlave.buttTat = $tattooChoice,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
+		<<if $activeSlave.vaginaTat != $tattooChoice>> | [[Vagina|Body Modification][$activeSlave.vaginaTat = $tattooChoice,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
 		<<if ($activeSlave.dick > 0)>>
-			<<if $activeSlave.dickTat != $tattooChoice>> | [[Dick|Body Modification][$activeSlave.dickTat = $tattooChoice,$cash -= $modCost]]<</if>>
+			<<if $activeSlave.dickTat != $tattooChoice>> | [[Dick|Body Modification][$activeSlave.dickTat = $tattooChoice,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
 		<</if>>
-		<<if $activeSlave.anusTat != $tattooChoice>> | [[Anus|Body Modification][$activeSlave.anusTat = $tattooChoice,$cash -= $modCost]]<</if>>
+		<<if $activeSlave.anusTat != $tattooChoice>> | [[Anus|Body Modification][$activeSlave.anusTat = $tattooChoice,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
 		<<if $activeSlave.amp != 1>>
-			<<if $activeSlave.legsTat != $tattooChoice>> | [[Legs|Body Modification][$activeSlave.legsTat = $tattooChoice,$cash -= $modCost]]<</if>>
+			<<if $activeSlave.legsTat != $tattooChoice>> | [[Legs|Body Modification][$activeSlave.legsTat = $tattooChoice,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
 		<</if>>
 	<<elseif $tattooChoice == "permanent makeup">>
-		[[Face|Body Modification][$activeSlave.lipsTat = $tattooChoice,$cash -= $modCost]]
+		[[Face|Body Modification][$activeSlave.lipsTat = $tattooChoice,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]
 	<<elseif $tattooChoice == "bleached">>
-		[[Asshole|Body Modification][$activeSlave.anusTat = $tattooChoice,$cash -= $modCost]]
+		[[Asshole|Body Modification][$activeSlave.anusTat = $tattooChoice,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]
 	<<else>>
-		<<if $activeSlave.shouldersTat != $tattooChoice>> | [[Shoulders|Body Modification][$activeSlave.shouldersTat = $tattooChoice,$cash -= $modCost]]<</if>>
+		<<if $activeSlave.shouldersTat != $tattooChoice>> | [[Shoulders|Body Modification][$activeSlave.shouldersTat = $tattooChoice,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
 		<<if $tattooChoice != "scenes">>
-			<<if $activeSlave.lipsTat != $tattooChoice>> | [[Face|Body Modification][$activeSlave.lipsTat = $tattooChoice,$cash -= $modCost]]<</if>>
+			<<if $activeSlave.lipsTat != $tattooChoice>> | [[Face|Body Modification][$activeSlave.lipsTat = $tattooChoice,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
 		<</if>>
-		<<if $activeSlave.boobsTat != $tattooChoice>> | [[Boobs|Body Modification][$activeSlave.boobsTat = $tattooChoice,$cash -= $modCost]]<</if>>
+		<<if $activeSlave.boobsTat != $tattooChoice>> | [[Boobs|Body Modification][$activeSlave.boobsTat = $tattooChoice,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
 		<<if $activeSlave.amp != 1>>
-			<<if $activeSlave.armsTat != $tattooChoice>> | [[Arms|Body Modification][$activeSlave.armsTat = $tattooChoice,$cash -= $modCost]]<</if>>
+			<<if $activeSlave.armsTat != $tattooChoice>> | [[Arms|Body Modification][$activeSlave.armsTat = $tattooChoice,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
 		<</if>>
-		<<if $activeSlave.backTat != $tattooChoice>> | [[Upper back|Body Modification][$activeSlave.backTat = $tattooChoice,$cash -= $modCost]]<</if>>
-		<<if $activeSlave.stampTat != $tattooChoice>> | [[Lower back|Body Modification][$activeSlave.stampTat = $tattooChoice,$cash -= $modCost]]<</if>>
-		<<if $activeSlave.buttTat != $tattooChoice>> | [[Buttock|Body Modification][$activeSlave.buttTat = $tattooChoice,$cash -= $modCost]]<</if>>
-		<<if $activeSlave.vaginaTat != $tattooChoice>> | [[Vagina|Body Modification][$activeSlave.vaginaTat = $tattooChoice,$cash -= $modCost]]<</if>>
+		<<if $activeSlave.backTat != $tattooChoice>> | [[Upper back|Body Modification][$activeSlave.backTat = $tattooChoice,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
+		<<if $activeSlave.stampTat != $tattooChoice>> | [[Lower back|Body Modification][$activeSlave.stampTat = $tattooChoice,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
+		<<if $activeSlave.buttTat != $tattooChoice>> | [[Buttock|Body Modification][$activeSlave.buttTat = $tattooChoice,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
+		<<if $activeSlave.vaginaTat != $tattooChoice>> | [[Vagina|Body Modification][$activeSlave.vaginaTat = $tattooChoice,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
 		<<if $activeSlave.dick > 0 && $tattooChoice != "scenes">>
-			<<if $activeSlave.dickTat != $tattooChoice>> | [[Dick|Body Modification][$activeSlave.dickTat = $tattooChoice,$cash -= $modCost]]<</if>>
+			<<if $activeSlave.dickTat != $tattooChoice>> | [[Dick|Body Modification][$activeSlave.dickTat = $tattooChoice,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
 		<</if>>
 		<<if ($tattooChoice != "Asian art") && ($tattooChoice != "scenes")>>
-			<<if $activeSlave.anusTat != $tattooChoice>> | [[Anus|Body Modification][$activeSlave.anusTat = $tattooChoice,$cash -= $modCost]]<</if>>
+			<<if $activeSlave.anusTat != $tattooChoice>> | [[Anus|Body Modification][$activeSlave.anusTat = $tattooChoice,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
 		<</if>>
 		<<if $activeSlave.amp != 1>>
-			<<if $activeSlave.legsTat != $tattooChoice>> | [[Legs|Body Modification][$activeSlave.legsTat = $tattooChoice,$cash -= $modCost]]<</if>>
+			<<if $activeSlave.legsTat != $tattooChoice>> | [[Legs|Body Modification][$activeSlave.legsTat = $tattooChoice,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]<</if>>
 		<</if>>
 	<</if>>
 <</if>>
@@ -749,12 +749,12 @@ Choose a tattoo style:
 	<</if>>
 	<<if $activeSlave.bellyTat == 0>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
-		[[Heart|Body Modification][$activeSlave.bellyTat = "a heart",$cash -= $modCost]]
-		| [[Star|Body Modification][$activeSlave.bellyTat = "a star",$cash -= $modCost]]
-		| [[Butterfly|Body Modification][$activeSlave.bellyTat = "a butterfly",$cash -= $modCost,$degradation += 1]]
+		[[Heart|Body Modification][$activeSlave.bellyTat = "a heart",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]
+		| [[Star|Body Modification][$activeSlave.bellyTat = "a star",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]
+		| [[Butterfly|Body Modification][$activeSlave.bellyTat = "a butterfly",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$degradation += 1]]
 	<</if>>
 	<<if $activeSlave.bellyTat != 0>>
-		//[[Remove tattoos|Body Modification][$activeSlave.bellyTat = 0,$cash -= $modCost]]//
+		//[[Remove tattoos|Body Modification][$activeSlave.bellyTat = 0,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]//
 	<</if>>
 <<elseif $activeSlave.bellyPreg >= 450000>>
 	$His middle is large and taut enough to be a suitable canvas for a navel focused tattoo, but $his brood is too active to permit the needle to do its work.
@@ -834,7 +834,7 @@ Custom Tats:
 	Change it here: <<textbox "$activeSlave.customTat" $activeSlave.customTat "Slave Interact">>
 <</if>>
 <<if $activeSlave.customTat != "">>
-	//[[Remove custom tattoo|Body Modification][$activeSlave.customTat = "",$cash -= $modCost]]//
+	//[[Remove custom tattoo|Body Modification][$activeSlave.customTat = "",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]//
 <</if>>
 
 
@@ -846,7 +846,7 @@ Custom Tats:
 Branding:
 <<if $activeSlave.brand != 0>>
 	<<brandDescription>>
-	[[Remove Brand|Body Modification][$brandApplied = 0, $activeSlave.brand = 0,$cash -= $modCost,$degradation -= 10]]
+	[[Remove Brand|Body Modification][$brandApplied = 0, $activeSlave.brand = 0,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$degradation -= 10]]
 <<else>>
 	$His skin is unmarked.
 <</if>>
@@ -955,14 +955,14 @@ Choose a site for branding:
 
 <br>&nbsp;&nbsp;&nbsp;&nbsp;
 <<if ($brandTarget == "neck" || $brandTarget == "chest" || $brandTarget == "belly" || $brandTarget == "pubic mound" || $brandTarget == "back" || $brandTarget == "lower back")>>
-	[[Brand|Body Modification][$brandApplied = 1,$activeSlave.brand = $brandDesign,$activeSlave.brandLocation = $brandTarget,$cash -= $modCost,$degradation += 10]] with $brandDesign on the $brandTarget.
+	[[Brand|Body Modification][$brandApplied = 1,$activeSlave.brand = $brandDesign,$activeSlave.brandLocation = $brandTarget,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$degradation += 10]] with $brandDesign on the $brandTarget.
 <<else>>
 	Brand $him now with ''$brandDesign'' on the
 	<<link "left">>
 		<<set $brandApplied = 1>>
 		<<set $activeSlave.brand = $brandDesign>>
 		<<set $activeSlave.brandLocation = ("left " + $brandTarget)>>
-		<<set $cash -= $modCost>>
+		<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>>
 		<<set $degradation += 10>>
 		<<goto "Body Modification">>
 	<</link>>
@@ -971,7 +971,7 @@ Choose a site for branding:
 		<<set $brandApplied = 1>>
 		<<set $activeSlave.brand = $brandDesign>>
 		<<set $activeSlave.brandLocation = ("right " + $brandTarget)>>
-		<<set $cash -= $modCost>>
+		<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>>
 		<<set $degradation += 10>>
 		<<goto "Body Modification">>
 	<</link>>
@@ -1006,7 +1006,7 @@ Choose a site for branding:
 		<<elseif $brandTarget == "foot">>
 			<<set $activeSlave.brandLocation = "feet">>
 		<</if>>
-		<<set $cash -= $modCost>>
+		<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>>
 		<<set $degradation += 10>>
 		<<goto "Body Modification">>
 	<</link>>?
diff --git a/src/uncategorized/brothel.tw b/src/uncategorized/brothel.tw
index 4203f1edbca40cc5a8bae708ff5e68ea451e2e77..e808b0c15da5e64ea8e5ff9320e9c71bf7314b35 100644
--- a/src/uncategorized/brothel.tw
+++ b/src/uncategorized/brothel.tw
@@ -161,7 +161,7 @@ $brothelNameCaps
 
 <<set _Tmult0 = Math.trunc($brothel*1000*$upgradeMultiplierArcology)>>
 <br>It can support $brothel whores. Currently there <<if $brothelSlaves == 1>>is<<else>>are<</if>> $brothelSlaves whore<<if $brothelSlaves != 1>>s<</if>> at $brothelNameCaps.
-[[Expand the brothel|Brothel][$cash -= _Tmult0, $brothel += 5, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>> and will increase upkeep costs//
+[[Expand the brothel|Brothel][cashX(forceNeg(_Tmult0), "capEx"), $brothel += 5, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>> and will increase upkeep costs//
 
 <<if $Madam != 0>>
 	<<setLocalPronouns $Madam>>
@@ -182,14 +182,21 @@ $brothelNameCaps
 	It has been upgraded with aphrodisiac injection systems that monitor the whores and adjust dosage to keep them healthy but desperately horny and hopelessly addicted. The systems are currently disabled. [[Enable them|Brothel][$brothelUpgradeDrugs = 1]] //Will increase upkeep costs//
 <<else>>
 	<<set _Tmult1 = Math.trunc(10000*$upgradeMultiplierArcology)>>
-	It is a standard brothel. [[Upgrade the brothel with aphrodisiac injection systems|Brothel][$cash -= _Tmult1, $brothelUpgradeDrugs = 0.1]] //Costs <<print cashFormat(_Tmult1)>> and will increase upkeep costs//
+	It is a standard brothel. [[Upgrade the brothel with aphrodisiac injection systems|Brothel][cashX(forceNeg(_Tmult1), "capEx"), $brothelUpgradeDrugs = 0.1]] //Costs <<print cashFormat(_Tmult1)>> and will increase upkeep costs//
 <</if>>
 
-<br>$brothelNameCaps is
+<br>$brothelNameCaps
 <<if $brothelAdsSpending > 0>>
-	the subject of an active ad campaign.
+	is the subject of an active ad campaign.
 <<else>>
-	not being advertised.
+	advertises by word of mouth.
+<</if>>
+Last week this
+<<set $lastWeeksCashProfits.brothelAds = $lastWeeksCashIncome.brothelAds + $lastWeeksCashExpenses.brothelAds>>
+<<if $lastWeeksCashProfits.brothelAds > 0>>
+	made you an extra @@.green;<<print cashFormat($lastWeeksCashProfits.brothelAds)>>@@,<<if $brothelSlaves > 1>> as well as increasing business for your whores.<</if>>
+<<elseif $lastWeeksCashProfits.brothelAds < 0>> 
+	cost you @@.red;<<print cashFormat($lastWeeksCashProfits.brothelAds)>>@@,<<if $brothelSlaves > 1>> but still increased business for your whores.<</if>>
 <</if>>
 <<link "Manage brothel advertisements" "Brothel Advertisement">><<set $nextLink = passage(), $nextButton = "Back">><</link>>
 
diff --git a/src/uncategorized/brothelAdvertisement.tw b/src/uncategorized/brothelAdvertisement.tw
index 4f5f77056b985c947a9156e62159fe5b0ab361fb..ede828219133cfcfb8c6f79bb657b3e85701b089 100644
--- a/src/uncategorized/brothelAdvertisement.tw
+++ b/src/uncategorized/brothelAdvertisement.tw
@@ -119,7 +119,10 @@
 
 <br><br>
 
-You are spending <<print cashFormat($brothelAdsSpending)>> each week to advertise the brothel.
+You are spending @@.red;<<print cashFormat($brothelAdsSpending)>>@@ each week to advertise the brothel.
+<<if $lastWeeksCashIncome.brothelAds > 0>>
+	Last week's ads increased profits by @@.green;<<print cashFormat($lastWeeksCashIncome.brothelAds)>>@@<<if $brothelSlaves > 1>> and also increased business for your whores<</if>>, and cost @@.red;<<print cashFormat($lastWeeksCashExpenses.brothelAds)>>@@.
+<</if>>
 
 <<if $brothelAdsSpending > 900>>
 	<<link "Decrease">><<set $brothelAdsSpending -= 1000>><<goto "Brothel Advertisement">><</link>> |
diff --git a/src/uncategorized/brothelReport.tw b/src/uncategorized/brothelReport.tw
index 63543cc4ec3e93ca64fd5b429a06c7f8b3c497b0..9fbdf33518bef1e9c418634e4e3c121fab3d7379 100644
--- a/src/uncategorized/brothelReport.tw
+++ b/src/uncategorized/brothelReport.tw
@@ -199,7 +199,8 @@
 			<<else>>
 				<<silently>><<include "SA whore">><</silently>>
 			<</if>>
-			<<set _seed = $cash-_oldCash, $cash += Math.trunc(0.5*_seed), _seed = Math.trunc(1.5*_seed), _profits += _seed>>
+			<<set _seed = $cash-_oldCash, _cashX += Math.trunc(0.5*_seed), _seed = Math.trunc(1.5*_seed), _profits += _seed>>
+			<<run cashX(_cashX, "whore", $Madam)>>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;Since $he doesn't have enough whores to manage to keep $him busy, $he sees $beauty customers $himself (<<print Math.trunc($beauty/7)>> a day), earning you @@.yellowgreen;<<print cashFormat(_seed)>>.@@ $He can charge more for $his time, since many citizens find it erotic to fuck the Madam.
 		<</if>>
 	<</if>>
@@ -467,10 +468,12 @@
 			<</if>>
 			<<if _seed > 0>>
 				<<set _adsIncome = _seed * random(50,60) * Math.trunc($brothelAdsSpending/1000)>>
-				<<set $cash += _adsIncome, getSlaveStatisticData($slaves[$i], $facility.brothel).adsIncome += _adsIncome>>
+				<<set _cashX = _adsIncome, getSlaveStatisticData($slaves[$i], $facility.brothel).adsIncome += _adsIncome>>
+				<<run cashX(_cashX, "brothelAds")>>
 			<<else>>
 				<<set _adsIncome = random(50,60) * Math.trunc($brothelAdsSpending/1000)>>
-				<<set $cash += _adsIncome, getSlaveStatisticData($slaves[$i], $facility.brothel).adsIncome += _adsIncome>>
+				<<set _cashX = _adsIncome, getSlaveStatisticData($slaves[$i], $facility.brothel).adsIncome += _adsIncome>>
+				<<run cashX(_cashX, "brothelAds")>>
 			<</if>>
 		<</if>>
 	<</for>>
@@ -506,7 +509,8 @@
 			<<if ($brothelAdsSpending == 0) || ($brothelAdsStacked == 0)>>
 				<<set _possibleBonuses++>>
 				<<if (_slim > 0) && (_stacked > 0) && (Math.abs(_slim-_stacked) <= (_DL/3))>>
-					<<set _adsIncome = _DL*random(20,30), $cash += _adsIncome, $facility.brothel.adsIncome += _adsIncome, _brothelBonuses++>>
+					<<set _adsIncome = _DL*random(20,30),$facility.brothel.adsIncome += _adsIncome, _brothelBonuses++>>
+					<<run cashX(_adsIncome, "brothelAds")>>
 					The brothel offers a @@.yellowgreen;wide@@ variety of slim and stacked slaves.
 				<</if>>
 			<</if>>
@@ -527,7 +531,8 @@
 	<<if (_pref == 0)>> /*customers don't care*/
 	<<elseif ($brothelAdsSpending > 0)>>
 		<<if (_ads == _pref) && (_girls == _ads)>>
-			<<set _adsIncome = _DL*random(20,30), $cash += _adsIncome, $facility.brothel.adsIncome += _adsIncome, _brothelBonuses++>>
+			<<set _adsIncome = _DL*random(20,30), $facility.brothel.adsIncome += _adsIncome, _brothelBonuses++>>
+			<<run cashX(_adsIncome, "brothelAds")>>
 			Its advertising for <<if _ads == 1>>stacked <<elseif _ads == -1>>trim <</if>>girls matched most customers' preferences and the girls in the brothel matched its advertisements. Your @@.green;reputation@@ increased slightly as a result.
 			<<set $rep += random(_minBonus,_maxBonus)>>
 		<<elseif (_ads == _pref) && (_girls != _ads)>>
@@ -573,7 +578,8 @@
 			<<if ($brothelAdsSpending == 0) || ($brothelAdsPreg == 0)>>
 				<<set _possibleBonuses++>>
 				<<if (_pregYes > 0) && (_pregNo > 0) && (Math.abs(_pregYes-_pregNo) <= (_DL/3))>>
-					<<set _adsIncome = _DL*random(20,30), $cash += _adsIncome, $facility.brothel.adsIncome += _adsIncome, _brothelBonuses++>>
+					<<set _adsIncome = _DL*random(20,30), $facility.brothel.adsIncome += _adsIncome, _brothelBonuses++>>
+					<<run cashX(_adsIncome, "brothelAds")>>
 					The brothel offers a @@.yellowgreen;wide@@ selection of slaves with a variety of middles.
 				<</if>>
 			<</if>>
@@ -594,7 +600,8 @@
 	<<if _pref == 0>> /*customers don't care*/
 	<<elseif ($brothelAdsSpending > 0)>>
 		<<if (_ads == _pref) && (_girls == _ads)>>
-			<<set _adsIncome = _DL*random(20,30), $cash += _adsIncome, $facility.brothel.adsIncome += _adsIncome, _brothelBonuses++>>
+			<<set _adsIncome = _DL*random(20,30), $facility.brothel.adsIncome += _adsIncome, _brothelBonuses++>>
+			<<run cashX(_adsIncome, "brothelAds")>>
 			Its advertising for <<if _ads == 1>>pregnant <<elseif _ads == -1>>flat-bellied <</if>>girls matched most customers' preferences and the girls in the brothel matched its advertisements. Your @@.green;reputation@@ increased slightly as a result.
 			<<set $rep += random(_minBonus,_maxBonus)>>
 		<<elseif (_ads == _pref) && (_girls != _ads)>>
@@ -640,7 +647,8 @@
 			<<if ($brothelAdsSpending == 0) || ($brothelAdsModded == 0)>>
 				<<set _possibleBonuses++>>
 				<<if (_modded > 0) && (_unmodded > 0) && (Math.abs(_modded-_unmodded) <= (_DL/3))>>
-					<<set _adsIncome = _DL*random(20,30), $cash += _adsIncome, $facility.brothel.adsIncome += _adsIncome, _brothelBonuses++>>
+					<<set _adsIncome = _DL*random(20,30), $facility.brothel.adsIncome += _adsIncome, _brothelBonuses++>>
+					<<run cashX(_adsIncome, "brothelAds")>>
 					The brothel offers a @@.yellowgreen;both@@ a selection of heavily altered slaves and those with more natural bodies.
 				<</if>>
 			<</if>>
@@ -661,7 +669,8 @@
 	<<if (_pref == 0)>> /*customers don't care*/
 	<<elseif ($brothelAdsSpending > 0) && (_pref != 0)>>
 		<<if (_ads == _pref) && (_girls == _ads)>>
-			<<set _adsIncome = _DL*random(20,30), $cash += _adsIncome, $facility.brothel.adsIncome += _adsIncome, _brothelBonuses++>>
+			<<set _adsIncome = _DL*random(20,30), $facility.brothel.adsIncome += _adsIncome, _brothelBonuses++>>
+			<<run cashX(_adsIncome, "brothelAds")>>
 			Its advertising for <<if _ads == 1>>heavily modified <<elseif _ads == -1>>natural bodied <</if>>girls matched most customers' preferences and the girls in the brothel matched its advertisements. Your @@.green;reputation@@ increased slightly as a result.
 			<<set $rep += random(_minBonus,_maxBonus)>>
 		<<elseif (_ads == _pref) && (_girls != _ads)>>
@@ -707,7 +716,8 @@
 			<<if ($brothelAdsSpending == 0) || ($brothelAdsImplanted == 0)>>
 				<<set _possibleBonuses++>>
 				<<if (_implanted > 0) && (_pure > 0) && (Math.abs(_implanted-_pure) <= (_DL/3))>>
-					<<set _adsIncome = _DL*random(20,30), $cash += _adsIncome, $facility.brothel.adsIncome += _adsIncome, _brothelBonuses++>>
+					<<set _adsIncome = _DL*random(20,30), $facility.brothel.adsIncome += _adsIncome, _brothelBonuses++>>
+					<<run cashX(_adsIncome, "brothelAds")>>
 					The brothel offers @@.yellowgreen;both@@ all-natural girls, and slaves whose beauty has been improved by surgical means.
 				<</if>>
 			<</if>>
@@ -728,7 +738,8 @@
 	<<if _pref == 0>> /*customers don't care*/
 	<<elseif ($brothelAdsSpending > 0)>>
 		<<if (_ads == _pref) && (_girls == _ads)>>
-			<<set _adsIncome = _DL*random(20,30), $cash += _adsIncome, $facility.brothel.adsIncome += _adsIncome, _brothelBonuses++>>
+			<<set _adsIncome = _DL*random(20,30), $facility.brothel.adsIncome += _adsIncome, _brothelBonuses++>>
+			<<run cashX(_adsIncome, "brothelAds")>>
 			Its advertising for <<if _ads == 1>>implanted or surgically improved <<elseif _ads == -1>>naturally pure <</if>>girls matched most customers' preferences and the girls in the brothel matched its advertisements. Your @@.green;reputation@@ increased slightly as a result.
 			<<set $rep += random(_minBonus,_maxBonus)>>
 		<<elseif (_ads == _pref) && (_girls != _ads)>>
@@ -774,7 +785,8 @@
 			<<if ($brothelAdsSpending == 0) || ($brothelAdsXX == 0)>>
 				<<set _possibleBonuses++>>
 				<<if (_XX > 0) && (_XY > 0) && (Math.abs(_XX-_XY) <= (_DL/3))>>
-					<<set _adsIncome = _DL*random(20,30), $cash += _adsIncome, $facility.brothel.adsIncome += _adsIncome, _brothelBonuses++>>
+					<<set _adsIncome = _DL*random(20,30), $facility.brothel.adsIncome += _adsIncome, _brothelBonuses++>>
+					<<run cashX(_adsIncome, "brothelAds")>>
 					The brothel offers a @@.yellowgreen;mix@@ of whores that can appeal to varied tastes in genitalia.
 				<</if>>
 			<</if>>
@@ -794,7 +806,8 @@
 		<<if _pref == 0>> /*customers don't care*/
 		<<elseif ($brothelAdsSpending > 0) >>
 			<<if (_ads == _pref) && (_girls == _ads)>>
-				<<set _adsIncome = _DL*random(20,30), $cash += _adsIncome, $facility.brothel.adsIncome += _adsIncome, _brothelBonuses++>>
+				<<set _adsIncome = _DL*random(20,30), $facility.brothel.adsIncome += _adsIncome, _brothelBonuses++>>
+				<<run cashX(_adsIncome, "brothelAds")>>
 				Its advertising for girls <<if _ads == 1>>with pussies <<elseif _ads == -1>>with dicks <</if>> matches most customers' preferences as advertised. Your @@.green;reputation@@ increased slightly as a result.
 				<<set $rep += random(_minBonus,_maxBonus)>>
 			<<elseif (_ads == _pref) && (_girls != _ads)>>
@@ -848,7 +861,8 @@
 			<<if ($brothelAdsSpending == 0) || ($brothelAdsOld == 0)>>
 				<<set _possibleBonuses++>>
 				<<if (_young > 0) && (_old > 0) && (Math.abs(_young-_old) <= (_DL/3))>>
-					<<set _adsIncome = _DL*random(20,30), $cash += _adsIncome, $facility.brothel.adsIncome += _adsIncome, _brothelBonuses++>>
+					<<set _adsIncome = _DL*random(20,30), $facility.brothel.adsIncome += _adsIncome, _brothelBonuses++>>
+					<<run cashX(_adsIncome, "brothelAds")>>
 					The brothel offers girls @@.yellowgreen;both@@ young and mature.
 				<</if>>
 			<</if>>
@@ -869,7 +883,8 @@
 	<<if _pref == 0>> /*customers don't care*/
 	<<elseif ($brothelAdsSpending > 0) >>
 		<<if (_ads == _pref) && (_girls == _ads)>>
-			<<set _adsIncome = _DL*random(20,30), $cash += _adsIncome, $facility.brothel.adsIncome += _adsIncome, _brothelBonuses++>>
+			<<set _adsIncome = _DL*random(20,30), $facility.brothel.adsIncome += _adsIncome, _brothelBonuses++>>
+			<<run cashX(_adsIncome, "brothelAds")>>
 			Its advertising matches most customers' age preferences and the girls in the brothel match the ages as advertised. Your @@.green;reputation@@ increased slightly as a result.
 			<<set $rep += random(_minBonus,_maxBonus)>>
 		<<elseif (_ads == _pref) && (_girls != _ads)>>
@@ -893,7 +908,8 @@
 
 	<<if (_possibleBonuses > 0) && (_brothelBonuses >= _possibleBonuses)>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
-		<<set _adsIncome = _DL*random(40,60), $cash += _adsIncome, $facility.brothel.adsIncome += _adsIncome>>
+		<<set _adsIncome = _DL*random(40,60), $facility.brothel.adsIncome += _adsIncome>>
+		<<run cashX(_adsIncome, "brothelAds")>>
 		There is a ''@@.yellowgreen;perfect variety@@'' of slave whores working in the brothel.
 	<</if>>
 
diff --git a/src/uncategorized/buildingWidgets.tw b/src/uncategorized/buildingWidgets.tw
index a40324fd0396d1a004108e7c6bf828417d4b4d55..ecb0befa454d505274d8be20c30e3b8fcc2dc41b 100644
--- a/src/uncategorized/buildingWidgets.tw
+++ b/src/uncategorized/buildingWidgets.tw
@@ -202,7 +202,7 @@ if(!Macro.has('sectorblock')) {
 <<set $price = 1000*Math.trunc($arcologies[0].prosperity*(1+($arcologies[0].demandFactor/100)))>>
 Selling this sector would relinquish a 4% interest in $arcologies[0].name. Such an interest is worth <<print cashFormat($price)>>.
 <<if $arcologies[0].ownership >= 4>>
-	[[Sell|Main][$cash += $price, $arcologies[0].ownership -= 4, $arcologies[0].demandFactor += 40, $sectors[$AS].ownership = 0]]
+	[[Sell|Main][cashX($price, "capEx"), $arcologies[0].ownership -= 4, $arcologies[0].demandFactor += 40, $sectors[$AS].ownership = 0]]
 <</if>>
 
 <</widget>>
diff --git a/src/uncategorized/bulkSlaveGenerate.tw b/src/uncategorized/bulkSlaveGenerate.tw
index d5d08caff83412756760656d4087c1bea32a109b..7189440cfea66fe92dc690807b1a628b7c597c1c 100644
--- a/src/uncategorized/bulkSlaveGenerate.tw
+++ b/src/uncategorized/bulkSlaveGenerate.tw
@@ -117,7 +117,7 @@
 		<<set _i = $numSlaves>>
 		<<break>>
 	<<else>>
-		<<set $cash -= $slaveCost>>
+		<<run cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave)>>
 		<<set $newSlaves.push($activeSlave)>>
 		<<set $spent += $slaveCost>>
 	<</if>>
diff --git a/src/uncategorized/cellblock.tw b/src/uncategorized/cellblock.tw
index f8eedd24c715d2c900b739c59a0c1b75a3de3137..4752184b61bf8ed5371ca5242b5e8e453dbc386e 100644
--- a/src/uncategorized/cellblock.tw
+++ b/src/uncategorized/cellblock.tw
@@ -88,14 +88,14 @@ $cellblockNameCaps
 
 <<set _Tmult0 = Math.trunc($cellblock*1000*$upgradeMultiplierArcology)>>
 <br>$cellblockNameCaps has room for $cellblock slaves to be kept in close confinement. Currently $cellblockSlaves <<if $cellblockSlaves == 1>>is<<else>>are<</if>> kept in close confinement.
-[[Expand the cellblock|Cellblock][$cash -= _Tmult0, $cellblock += 5, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>>//
+[[Expand the cellblock|Cellblock][cashX(forceNeg(_Tmult0), "capEx"), $cellblock += 5, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>>//
 
 <br>
 <<if $cellblockUpgrade == 1>>
 	Its compliance systems have been upgraded to allow slaves no mental respite, painstakingly correcting the tiniest misbehaviors to soften flaws into quirks at the cost of considerable anguish to inmates denied any rest from correction.
 <<else>>
 	<<set _Tmult1 = Math.trunc(20000*$upgradeMultiplierArcology)>>
-	Its compliance systems are standard. [[Upgrade them to soften slave flaws|Cellblock][$cash -= _Tmult1, $cellblockUpgrade = 1]] //Costs <<print cashFormat(_Tmult1)>>//
+	Its compliance systems are standard. [[Upgrade them to soften slave flaws|Cellblock][cashX(forceNeg(_Tmult1), "capEx"), $cellblockUpgrade = 1]] //Costs <<print cashFormat(_Tmult1)>>//
 <</if>>
 
 <<if $Wardeness != 0 && canPenetrate($Warden)>>
diff --git a/src/uncategorized/cellblockReport.tw b/src/uncategorized/cellblockReport.tw
index 95f9bc6e3dd3e85d7da6e9bdb08745df4b985ff0..715c2239ef8c69fbf222f33beadacacf0fa2678a 100644
--- a/src/uncategorized/cellblockReport.tw
+++ b/src/uncategorized/cellblockReport.tw
@@ -113,7 +113,8 @@
 		<</if>>
 	<</for>>
 	<<if (_DL < $cellblock)>>
-		<<set _seed = random(1,10)+(($cellblock-_DL)*(random(150,170)+(_idleBonus*10))), $cash += _seed>>
+		<<set _seed = random(1,10)+(($cellblock-_DL)*(random(150,170)+(_idleBonus*10)))>>
+		<<run cashX(_seed, "cellblock", $Wardeness)>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;Since $he doesn't have enough prisoners to manage to keep $him busy, $he works on citizens' slaves, earning @@.yellowgreen;<<print cashFormat(_seed)>>.@@
 	<</if>>
 	<<if (_DL > 0)>><br><br><</if>>
diff --git a/src/uncategorized/clinic.tw b/src/uncategorized/clinic.tw
index b3036492bf793d37852916ac29663688d2b1f5eb..f772a4ddeab0fe4caa634f93420b270bea538f7c 100644
--- a/src/uncategorized/clinic.tw
+++ b/src/uncategorized/clinic.tw
@@ -88,14 +88,14 @@ $clinicNameCaps
 
 <<set _Tmult0 = Math.trunc($clinic*1000*$upgradeMultiplierArcology)>>
 <br>$clinicNameCaps has room to support $clinic slaves while they receive treatment. Currently $clinicSlaves slave<<if $clinicSlaves == 1>> is<<else>>s are<</if>> receiving treatment.
-[[Expand the clinic|Clinic][$cash -= _Tmult0, $clinic += 5, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>>//
+[[Expand the clinic|Clinic][cashX(forceNeg(_Tmult0), "capEx"), $clinic += 5, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>>//
 
 <br>
 <<if $clinicUpgradeScanner == 1>>
 	$clinicNameCaps's scanners have been upgraded with a sampling system that can estimate carcinogenic damage to a slave's body.
 <<else>>
 	<<set _Tmult1 = Math.trunc(10000*$upgradeMultiplierArcology)>>
-	It mounts powerful medical scanning technology. [[Upgrade the scanners to help detect genomic damage|Clinic][$cash -= _Tmult1, $clinicUpgradeScanner = 1]] //Costs <<print cashFormat(_Tmult1)>>//
+	It mounts powerful medical scanning technology. [[Upgrade the scanners to help detect genomic damage|Clinic][cashX(forceNeg(_Tmult1), "capEx"), $clinicUpgradeScanner = 1]] //Costs <<print cashFormat(_Tmult1)>>//
 <</if>>
 
 <br>
@@ -104,14 +104,14 @@ $clinicNameCaps
 		The entire floor beneath $clinicName is occupied by a huge filtration plant that constantly cycles out the patients' blood to remove impurities. The blood is intensely cleaned to greatly decrease the presence of impurities at the cost of compatibility. Patients will likely be ill for the duration of the treatment.
 	<<else>>
 		<<set _Tmult3 = Math.trunc(150000*$upgradeMultiplierArcology)>>
-		The entire floor beneath $clinicName is occupied by a huge filtration plant that constantly cycles out the patients' blood to remove impurities. [[Increase the effectiveness of the impurity purging|Clinic][$cash -= _Tmult3, $clinicUpgradePurge to 1]] //Costs <<print cashFormat(_Tmult3)>> and may cause health problems in slaves//
+		The entire floor beneath $clinicName is occupied by a huge filtration plant that constantly cycles out the patients' blood to remove impurities. [[Increase the effectiveness of the impurity purging|Clinic][cashX(forceNeg(_Tmult3), "capEx"), $clinicUpgradePurge to 1]] //Costs <<print cashFormat(_Tmult3)>> and may cause health problems in slaves//
 	<</if>>
 	<<if $Nurse == 0>>
 		<br>However, without a nurse in attendance, the @@.yellow;blood treatment equipment remains idle.@@
 	<</if>>
 <<else>>
 	<<set _Tmult2 = Math.trunc(50000*$upgradeMultiplierArcology)>>
-	It includes standard dialysis equipment. [[Install advanced blood treatment equipment to help address drug side effects|Clinic][$cash -= _Tmult2, $clinicUpgradeFilters = 1]] //Costs <<print cashFormat(_Tmult2)>>//
+	It includes standard dialysis equipment. [[Install advanced blood treatment equipment to help address drug side effects|Clinic][cashX(forceNeg(_Tmult2), "capEx"), $clinicUpgradeFilters = 1]] //Costs <<print cashFormat(_Tmult2)>>//
 <</if>>
 
 <br>
diff --git a/src/uncategorized/clinicReport.tw b/src/uncategorized/clinicReport.tw
index 64133a24acacddee0a04199802782977fa3b8ed3..fbebaa1fb687c9ab2619836ec5ec81a2da0cb7ee 100644
--- a/src/uncategorized/clinicReport.tw
+++ b/src/uncategorized/clinicReport.tw
@@ -182,7 +182,8 @@
 		<</if>>
 	<</for>>
 	<<if (_DL < $clinic)>>
-		<<set _seed = random(1,10)+(($clinic-_DL)*(random(150,170)+(_idleBonus*10))), $cash += _seed>>
+		<<set _seed = random(1,10)+(($clinic-_DL)*(random(150,170)+(_idleBonus*10)))>>
+		<<run cashX(_seed, "clinic", $Nurse)>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;Since $he doesn't have enough girls to occupy all $his time, the clinic takes in citizens' slaves on a contract basis and $he helps them too, earning @@.yellowgreen;<<print cashFormat(_seed)>>.@@
 	<</if>>
 	<<if (_DL > 0)>><br><br><</if>>
diff --git a/src/uncategorized/club.tw b/src/uncategorized/club.tw
index 5eb74e491e40fdd09d46cde4dc0e5a37752f64ae..48f70b6004cb96389c63979af05d9f305c1fafaf 100644
--- a/src/uncategorized/club.tw
+++ b/src/uncategorized/club.tw
@@ -217,14 +217,14 @@ $clubNameCaps
 
 <<set _Tmult0 = Math.trunc($club*1000*$upgradeMultiplierArcology)>>
 <br>There are rooms off $clubName to support slaves as they work as club sluts. They can support $club slaves. Currently $clubSlaves <<if $clubSlaves == 1>>is<<else>>are<</if>> serving in $clubName.
-[[Expand the club|Club][$cash -= _Tmult0, $club += 5, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>> and will increase upkeep costs//
+[[Expand the club|Club][cashX(forceNeg(_Tmult0), "capEx"), $club += 5, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>> and will increase upkeep costs//
 
 <br>
 <<if $clubUpgradePDAs == 1>>
 	$clubNameCaps has been wired for unobtrusive personal data assistants to let your sluts pass tips about enslaveable people to your recruiter.
 <<else>>
 	<<set _Tmult1 = Math.trunc(10000*$upgradeMultiplierArcology)>>
-	The rooms are standard. [[Upgrade them with PDAs to help your recruiter|Club][$cash -= _Tmult1, $clubUpgradePDAs = 1]] //Costs <<print cashFormat(_Tmult1)>> and will increase upkeep costs//
+	The rooms are standard. [[Upgrade them with PDAs to help your recruiter|Club][cashX(forceNeg(_Tmult1), "capEx"), $clubUpgradePDAs = 1]] //Costs <<print cashFormat(_Tmult1)>> and will increase upkeep costs//
 <</if>>
 
 <<if $DJ != 0>>
diff --git a/src/uncategorized/clubReport.tw b/src/uncategorized/clubReport.tw
index 377cc76986694290faeafe1a6bd95ada0dc3b8c2..7346c103b80389d2e570365028d9bec4b6524a88 100644
--- a/src/uncategorized/clubReport.tw
+++ b/src/uncategorized/clubReport.tw
@@ -354,7 +354,8 @@
 	<<if _pref == 0>> /*customers don't care*/
 	<<elseif ($clubAdsSpending > 0)>>
 		<<if (_ads == _pref) && (_girls == _ads)>>
-			<<set _adsIncome = _DL*random(20,30), $cash += _adsIncome, $facility.club.adsIncome += _adsIncome, _clubBonuses++>>
+			<<set _adsIncome = _DL*random(20,30), $facility.club.adsIncome += _adsIncome, _clubBonuses++>>
+			<<run cashX(_adsIncome, "clubAds")>>
 			Its advertising for <<if _ads == 1>>stacked <<elseif _ads == -1>>slim <</if>>girls matched most customers' preferences and the girls in the club matched its advertisements. Your @@.green;reputation@@ increased slightly as a result.
 			<<set $rep += random(_minBonus,_maxBonus)>>
 		<<elseif (_ads == _pref) && (_girls != _ads)>>
@@ -421,7 +422,8 @@
 	<<if _pref == 0>> /*customers don't care*/
 	<<elseif ($clubAdsSpending > 0)>>
 		<<if (_ads == _pref) && (_girls == _ads)>>
-			<<set _adsIncome = _DL*random(20,30), $cash += _adsIncome, $facility.club.adsIncome += _adsIncome, _clubBonuses++>>
+			<<set _adsIncome = _DL*random(20,30), $facility.club.adsIncome += _adsIncome, _clubBonuses++>>
+			<<run cashX(_adsIncome, "clubAds")>>
 			Its advertising for <<if _ads == 1>>heavily modded <<elseif _ads == -1>>natural bodied <</if>>girls matched most customers' preferences and the girls in the club matched its advertisements. Your @@.green;reputation@@ increased slightly as a result.
 			<<set $rep += random(_minBonus,_maxBonus)>>
 		<<elseif (_ads == _pref) && (_girls != _ads)>>
@@ -488,7 +490,8 @@
 	<<if _pref == 0>> /*customers don't care*/
 	<<elseif ($clubAdsSpending > 0)>>
 		<<if (_ads == _pref) && (_girls == _ads)>>
-			<<set _adsIncome = _DL*random(20,30), $cash += _adsIncome, $facility.club.adsIncome += _adsIncome, _clubBonuses++>>
+			<<set _adsIncome = _DL*random(20,30), $facility.club.adsIncome += _adsIncome, _clubBonuses++>>
+			<<run cashX(_adsIncome, "clubAds")>>
 			Its advertising for <<if _ads == 1>>implanted or surgically improved <<elseif _ads == -1>>naturally pure <</if>>girls matched most customers' preferences and the girls in the club matched its advertisements. Your @@.green;reputation@@ increased slightly as a result.
 			<<set $rep += random(_minBonus,_maxBonus)>>
 		<<elseif (_ads == _pref) && (_girls != _ads)>>
@@ -554,7 +557,8 @@
 		<<if _pref == 0>> /*customers don't care*/
 		<<elseif ($clubAdsSpending > 0) >>
 			<<if (_ads == _pref) && (_girls == _ads)>>
-				<<set _adsIncome = _DL*random(20,30), $cash += _adsIncome, $facility.club.adsIncome += _adsIncome, _clubBonuses++>>
+				<<set _adsIncome = _DL*random(20,30), $facility.club.adsIncome += _adsIncome, _clubBonuses++>>
+				<<run cashX(_adsIncome, "clubAds")>>
 				Its advertising for girls <<if _ads == 1>>with pussies <<elseif _ads == -1>>with dicks <</if>> matches most customers' preferences as advertised. Your @@.green;reputation@@ increased slightly as a result.
 				<<set $rep += random(_minBonus,_maxBonus)>>
 			<<elseif (_ads == _pref) && (_girls != _ads)>>
@@ -629,7 +633,8 @@
 	<<if _pref == 0>> /*customers don't care*/
 	<<elseif ($clubAdsSpending > 0)>>
 		<<if (_ads == _pref) && (_girls == _ads)>>
-			<<set _adsIncome = _DL*random(20,30), $cash += _adsIncome, $facility.club.adsIncome += _adsIncome, _clubBonuses++>>
+			<<set _adsIncome = _DL*random(20,30), $facility.club.adsIncome += _adsIncome, _clubBonuses++>>
+			<<run cashX(_adsIncome, "clubAds")>>
 			Its advertising matches most customers' age preferences and the girls in the club match the ages as advertised. Your @@.green;reputation@@ increased slightly as a result.
 			<<set $rep += random(_minBonus,_maxBonus)>>
 		<<elseif (_ads == _pref) && (_girls != _ads)>>
@@ -697,7 +702,8 @@
 		<<if (_pref == 0)>> /*customers don't care*/
 		<<elseif ($clubAdsSpending > 0)>>
 			<<if (_ads == _pref) && (_girls == _ads)>>
-				<<set _adsIncome = _DL*random(20,30), $cash += _adsIncome, $facility.club.adsIncome += _adsIncome, _clubBonuses++>>
+				<<set _adsIncome = _DL*random(20,30), $facility.club.adsIncome += _adsIncome, _clubBonuses++>>
+				<<run cashX(_adsIncome, "clubAds")>>
 				Its advertising for <<if _ads == 1>>pregnant <<elseif _ads == -1>>flat-bellied <</if>>girls matched most customers' preferences and the girls in the club matched its advertisements. Your @@.green;reputation@@ increased slightly as a result.
 				<<set $rep += random(_minBonus,_maxBonus)>>
 			<<elseif (_ads == _pref) && (_girls != _ads)>>
diff --git a/src/uncategorized/completeCatalog.tw b/src/uncategorized/completeCatalog.tw
index 3cc9e3d33f2e4cf35c7af3981f5b19cc15fe73a2..01b4e6656c629280c51b92c70f4e2ae12062f855 100644
--- a/src/uncategorized/completeCatalog.tw
+++ b/src/uncategorized/completeCatalog.tw
@@ -100,4 +100,8 @@
 
 The offered price is <<print cashFormat($slaveCost)>>.
 
-<<link "Buy $his slave contract" "New Slave Intro">><<set $cash -= $slaveCost, $activeSlave.weekAcquired = $week, $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "Main", $specialSlave = 1>><</link>>
+<<link "Buy $his slave contract" "New Slave Intro">>
+	<<set $activeSlave.weekAcquired = $week, $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "Main", $specialSlave = 1>>
+	<<set _cashX = forceNeg($slaveCost)>>
+	<<run cashX(_cashX, "slaveTransfer", $activeSlave)>>
+<</link>>
diff --git a/src/uncategorized/corporateMarket.tw b/src/uncategorized/corporateMarket.tw
index 1f5d4f75015384fc5bd6a0849b14eb73e020c393..019fcb19cdb7e2a24a7712c74a6b48023d0e1f06 100644
--- a/src/uncategorized/corporateMarket.tw
+++ b/src/uncategorized/corporateMarket.tw
@@ -87,7 +87,7 @@ while you browse.
 The offered price is <<print cashFormat($slaveCost)>>.<<if $slavesSeen > $slaveMarketLimit>> You have cast such a wide net for slaves this week that it is becoming more expensive to find more for sale. Your reputation helps determine your reach within the slave market.<</if>>
 <br>
 <<if $cash >= $slaveCost>>
-	[["Buy " + $his + " slave contract"|New Slave Intro][$cash -= $slaveCost,$nextButton = "Continue",$nextLink = "AS Dump",$returnTo = "Main"]]
+	[["Buy " + $his + " slave contract"|New Slave Intro][cashX(forceNeg($slaveCost), "slaveTransfer", $activeSlave),$nextButton = "Continue",$nextLink = "AS Dump",$returnTo = "Main"]]
 <<else>>
 	//You lack the necessary funds to buy this slave.//
 <</if>>
diff --git a/src/uncategorized/corporationDevelopments.tw b/src/uncategorized/corporationDevelopments.tw
index c3e4f4356d630f6cb14696bf3159ea76784c9245..f41ea0798ddb130554253e388ec7809cbb689f4d 100644
--- a/src/uncategorized/corporationDevelopments.tw
+++ b/src/uncategorized/corporationDevelopments.tw
@@ -119,9 +119,11 @@ Since it is
 <</if>>
 <<if _dividendPerShare >= 0.1>>/share<</if>> was paid out to stockholders; you received @@.yellowgreen;<<if _dividendPerShare >= 0.1>> <<print cashFormat($personalShares*_multplier)>> <<else>> <<print cashFormat(_multplier)>> <</if>>@@.
 <<if _dividendPerShare >= 0.1>>
-	<<set $cash += Math.trunc($personalShares*_multplier), $corpCash -= Math.trunc($personalShares*_multplier)>>
+	<<set $corpCash -= Math.trunc($personalShares*_multplier)>>
+	<<run cashX(Math.trunc($personalShares*_multplier), "stocks")>>
 <<else>>
-	<<set $cash += _multplier, $corpCash -= Math.trunc($corpProfit*0.2)>>
+	<<set $corpCash -= Math.trunc($corpProfit*0.2)>>
+	<<run cashX(_multplier, "stocks")>>
 <</if>>
 
 <<set _roll = random(1,100)>>
@@ -176,7 +178,7 @@ You hold <<print commaNum($personalShares)>> shares valued at @@.yellowgreen;<<p
 		<<link "<<print commaNum(1000)>> valued at @@.yellowgreen;<<print cashFormat(Math.ceil($sharePrice*1000))>>@@">>
 			<<set $personalShares -= 1000>>
 			<<set $publicShares += 1000>>
-			<<set $cash += Math.ceil($sharePrice*1000)>>
+			<<run cashX(Math.ceil($sharePrice*1000), "stocks")>>
 			<<set $sharePrice = (Math.trunc($sharePrice*either(98,99,$PC.trading >= 100 ? 99 : 98)))/100>>
 			<<replace "#CorpAction">>
 				<br>You sold <<print commaNum(1000)>> shares valued at @@.yellowgreen;<<print cashFormat(Math.ceil($sharePrice*1000))>>,@@ driving the share price down slightly.
@@ -186,7 +188,7 @@ You hold <<print commaNum($personalShares)>> shares valued at @@.yellowgreen;<<p
 			| <<link "<<print commaNum(5000)>> valued at @@.yellowgreen;<<print cashFormat(Math.ceil(($sharePrice*5000)*.95))>>@@">>
 				<<set $personalShares -= 5000>>
 				<<set $publicShares += 5000>>
-				<<set $cash += Math.ceil(($sharePrice*5000)*.95)>>
+				<<run cashX(Math.ceil(($sharePrice*5000)*.95), "stocks")>>
 				<<set $sharePrice = (Math.trunc($sharePrice*either(98,99,$PC.trading >= 100 ? 99 : 98)))/100>>
 				<<replace "#CorpAction">>
 					<br>You sold <<print commaNum(5000)>> shares valued at @@.yellowgreen;<<print cashFormat(Math.ceil(($sharePrice*5000)*.95))>>,@@ driving the share price down slightly.
@@ -197,7 +199,7 @@ You hold <<print commaNum($personalShares)>> shares valued at @@.yellowgreen;<<p
 			| <<link "<<print commaNum(10000)>> valued at @@.yellowgreen;<<print cashFormat(Math.ceil(($sharePrice*10000)*.9))>>@@">>
 				<<set $personalShares -= 10000>>
 				<<set $publicShares += 10000>>
-				<<set $cash += Math.ceil(($sharePrice*10000)*.9)>>
+				<<run cashX(Math.ceil(($sharePrice*10000)*.9), "stocks")>>
 				<<set $sharePrice = (Math.trunc($sharePrice*either(98,99,$PC.trading >= 100 ? 99 : 98)))/100>>
 				<<replace "#CorpAction">>
 					<br>You sold <<print commaNum(10000)>> shares valued at @@.yellowgreen;<<print cashFormat(Math.ceil(($sharePrice*10000)*.9))>>,@@ driving the share price down slightly.
@@ -208,7 +210,7 @@ You hold <<print commaNum($personalShares)>> shares valued at @@.yellowgreen;<<p
 			| <<link "<<print commaNum(15000)>> valued at @@.yellowgreen;<<print cashFormat(Math.ceil(($sharePrice*15000)*.85))>>@@">>
 				<<set $personalShares -= 15000>>
 				<<set $publicShares += 15000>>
-				<<set $cash += Math.ceil(($sharePrice*15000)*.85)>>
+				<<run cashX(Math.ceil(($sharePrice*15000)*.85), "stocks")>>
 				<<set $sharePrice = (Math.trunc($sharePrice*either(98,99,$PC.trading >= 100 ? 99 : 98)))/100>>
 				<<replace "#CorpAction">>
 					<br>You sold <<print commaNum(15000)>> shares valued at @@.yellowgreen;<<print cashFormat(Math.ceil(($sharePrice*15000)*.85))>>,@@ driving the share price down somewhat.
@@ -219,7 +221,7 @@ You hold <<print commaNum($personalShares)>> shares valued at @@.yellowgreen;<<p
 			| <<link "<<print commaNum(20000)>> valued at @@.yellowgreen;<<print cashFormat(Math.ceil(($sharePrice*20000)*.8))>>@@">>
 				<<set $personalShares -= 20000>>
 				<<set $publicShares += 20000>>
-				<<set $cash += Math.ceil(($sharePrice*20000)*.8)>>
+				<<run cashX(Math.ceil(($sharePrice*20000)*.8), "stocks")>>
 				<<set $sharePrice = (Math.trunc($sharePrice*either(98,99,$PC.trading >= 100 ? 99 : 98)))/100>>
 				<<replace "#CorpAction">>
 					<br>You sold <<print commaNum(20000)>> shares valued at @@.yellowgreen;<<print cashFormat(Math.ceil(($sharePrice*20000)*.8))>>,@@ driving the share price down significantly.
diff --git a/src/uncategorized/costsBudget.tw b/src/uncategorized/costsBudget.tw
new file mode 100644
index 0000000000000000000000000000000000000000..f23751d90fd90a87fb6edd3bd598a66bc30e33ed
--- /dev/null
+++ b/src/uncategorized/costsBudget.tw
@@ -0,0 +1,1096 @@
+:: Costs Budget [nobr]
+
+<<set $nextButton = "Back to Main", $nextLink = "Main", _archologyCosts = 0>>
+
+<<if def $lastWeeksCashIncome>>
+	<<set $lastWeeksCashIncome.Total = 0>>
+	<<set $lastWeeksCashExpenses.Total = 0>>
+	<<set $lastWeeksCashProfits.Total = 0>>
+<</if>>
+
+
+<br>
+//Here you can view many of the financial details of your arcology, <<= properTitle()>>.  The detailed list of slaves and their costs (food, hormones) that you may remember can now be found in the "Slave maintenance" link.  Other links will allow you to directly control areas of your arcology to adjust spending to suit your tastes.
+
+<br style="clear:both" /><<if $lineSeparations == 0>><br><<else>><hr style="margin:0"><</if>>
+<br>
+Your weekly costs are as follows://
+
+/* Table of Totals */
+<<if ndef $lastWeeksCashIncome>>
+	Financial data currently unavailable.
+<<else>>
+
+<<script>>
+for(var i = 0; i < State.variables.lastWeeksCashIncome.length; i++){
+   State.variables.lastWeeksCashProfits[i] = (State.variables.lastWeeksCashIncome[i] + State.variables.lastWeeksCashExpenses[i]);
+}
+<</script>>
+
+<style>
+	table.finances {
+		/*table-layout: fixed;*/
+		text-align: right;
+		border-collapse: separate;
+		border-spacing: 5px;
+		border-style: hidden;
+		empty-cells: hide;
+		width: 75%;
+	}
+</style>
+
+	
+<table class="finances" border="1">
+	<tr>
+		<th><h2>Jobs</h2></th>
+		<th>Income</th>
+		<th>Expense</th>
+		<th>Totals</th>
+	</tr>
+	
+	<<if $lastWeeksCashIncome.whore || $lastWeeksCashExpenses.whore>> /* If it's not 0, it will return true. */
+		<tr>
+			<td>Whores</td>
+			<td>$lastWeeksCashIncome.whore</td>
+			<td>$lastWeeksCashExpenses.whore</td>
+			<td>
+				<<set $lastWeeksCashProfits.whore = ($lastWeeksCashIncome.whore + $lastWeeksCashExpenses.whore)>>
+				$lastWeeksCashProfits.whore
+			</td>
+		</tr>
+	<</if>>
+	
+	<<if $lastWeeksCashIncome.rest || $lastWeeksCashExpenses.rest>>
+		<tr>
+			<td>Resting</td>
+			<td>$lastWeeksCashIncome.rest</td>
+			<td>$lastWeeksCashExpenses.rest</td>
+			<td>
+				<<set $lastWeeksCashProfits.rest = ($lastWeeksCashIncome.rest + $lastWeeksCashExpenses.rest)>>
+				$lastWeeksCashProfits.rest
+			</td>
+		</tr>
+	<</if>>
+	
+	<<if $lastWeeksCashIncome.fucktoy || $lastWeeksCashExpenses.fucktoy>>
+		<tr>
+			<td>Fucktoys <<if $Concubine != 0>>including your concubine <</if>>($fuckSlaves slaves)</td>
+			<td>Rep: $lastWeeksCashIncome.fucktoy</td>
+			<td>$lastWeeksCashExpenses.fucktoy</td>
+			<td>
+				<<set $lastWeeksCashProfits.fucktoy = (+ $lastWeeksCashExpenses.fucktoy)>>
+				$lastWeeksCashProfits.fucktoy
+			</td>
+		</tr>
+	<</if>>
+	
+	<<if $lastWeeksCashIncome.subordinateSlave || $lastWeeksCashExpenses.subordinateSlave>>
+		<tr>
+			<td>subordinateSlaves</td>
+			<td>$lastWeeksCashIncome.subordinateSlave</td>
+			<td>$lastWeeksCashExpenses.subordinateSlave</td>
+			<td>
+				<<set $lastWeeksCashProfits.subordinateSlave = ($lastWeeksCashIncome.subordinateSlave + $lastWeeksCashExpenses.subordinateSlave)>>
+				$lastWeeksCashProfits.subordinateSlave
+			</td>
+		</tr>
+	<</if>>
+	
+	<<if $lastWeeksCashIncome.houseServant || $lastWeeksCashExpenses.houseServant>>
+		<tr>
+			<td>HouseServants</td>
+			<td>$lastWeeksCashIncome.houseServant</td>
+			<td>$lastWeeksCashExpenses.houseServant</td>
+			<td>
+				<<set $lastWeeksCashProfits.houseServant = ($lastWeeksCashIncome.houseServant + $lastWeeksCashExpenses.houseServant)>>
+				$lastWeeksCashProfits.houseServant
+			</td>
+		</tr>
+	<</if>>
+	
+	<<if $lastWeeksCashIncome.confined || $lastWeeksCashExpenses.confined>>
+		<tr>
+			<td>Confined</td>
+			<td>$lastWeeksCashIncome.confined</td>
+			<td>$lastWeeksCashExpenses.confined</td>
+			<td>
+				<<set $lastWeeksCashProfits.confined = ($lastWeeksCashIncome.confined + $lastWeeksCashExpenses.confined)>>
+				$lastWeeksCashProfits.confined
+			</td>
+		</tr>
+	<</if>>
+	
+	<<if $lastWeeksCashIncome.publicServant || $lastWeeksCashExpenses.publicServant>>
+		<tr>
+			<td>Public servants</td>
+			<td>Rep: $lastWeeksCashIncome.publicServant</td>
+			<td>$lastWeeksCashExpenses.publicServant</td>
+			<td>
+				<<set $lastWeeksCashProfits.publicServant = ($lastWeeksCashIncome.publicServant + $lastWeeksCashExpenses.publicServant)>>
+				$lastWeeksCashProfits.publicServant
+			</td>
+		</tr>
+	<</if>>	
+	
+	<<if $lastWeeksCashIncome.classes || $lastWeeksCashExpenses.classes>>
+		<tr>
+			<td>Classes</td>
+			<td>$lastWeeksCashIncome.classes</td>
+			<td>$lastWeeksCashExpenses.classes</td>
+			<td>
+				<<set $lastWeeksCashProfits.classes = ($lastWeeksCashIncome.classes + $lastWeeksCashExpenses.classes)>>
+				$lastWeeksCashProfits.classes
+			</td>
+		</tr>
+	<</if>>
+	
+	
+	<<if $lastWeeksCashIncome.milked || $lastWeeksCashExpenses.milked>>
+		<tr>
+			<td>Milked</td> 
+			<td>$lastWeeksCashIncome.milked</td>
+			<td>$lastWeeksCashExpenses.milked</td>
+			<td>
+				<<set $lastWeeksCashProfits.milked = ($lastWeeksCashIncome.milked + $lastWeeksCashExpenses.milked)>>
+				$lastWeeksCashProfits.milked
+			</td>
+		</tr>
+	<</if>>
+	
+	<<if $lastWeeksCashIncome.gloryhole || $lastWeeksCashExpenses.gloryhole>>
+		<tr>
+			<td>Gloryhole</td>
+			<td>$lastWeeksCashIncome.gloryhole</td>
+			<td>$lastWeeksCashExpenses.gloryhole</td>
+			<td>
+				<<set $lastWeeksCashProfits.gloryhole = ($lastWeeksCashIncome.gloryhole + $lastWeeksCashExpenses.gloryhole)>>
+				$lastWeeksCashProfits.gloryhole
+			</td>
+		</tr>
+	<</if>>
+	
+	<tr>
+		<h2>Structures</h2>
+	</tr>
+	<tr>
+	//Slaves working in these buildings have their profits reported in "jobs".//
+	</tr>
+
+	<<if $brothel > 0>>
+		<tr>
+			<td>[[$brothelName|Brothel][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]] ($brothelSlaves slaves)</td>
+			<td>$lastWeeksCashIncome.brothel</td>
+			<td>$lastWeeksCashExpenses.brothel</td>
+			<td>
+				<<set $lastWeeksCashProfits.brothel = ($lastWeeksCashIncome.brothel + $lastWeeksCashExpenses.brothel)>>
+				$lastWeeksCashProfits.brothel
+			</td>
+		</tr>
+	<</if>>
+
+	<<if $lastWeeksCashIncome.brothelAds || $lastWeeksCashExpenses.brothelAds>>
+		<tr>
+			<td>[[Brothel Ads|Brothel Advertisement][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]] also increase the income of whoring slaves in "jobs."</td>
+			<td>$lastWeeksCashIncome.brothelAds</td>
+			<td>$lastWeeksCashExpenses.brothelAds</td>
+			<td>
+				<<set $lastWeeksCashProfits.brothelAds = ($lastWeeksCashIncome.brothelAds + $lastWeeksCashExpenses.brothelAds)>>
+				$lastWeeksCashProfits.brothelAds
+			</td>
+		</tr>
+	<</if>>
+	
+	<<if $club > 0>>
+		<tr>
+			<td>[[$clubName|Club][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]] ($clubSlaves slaves)</td>
+			<td>Rep:$lastWeeksCashIncome.club</td>
+			<td>$lastWeeksCashExpenses.club</td>
+			<td>
+				<<set $lastWeeksCashProfits.club = ($lastWeeksCashIncome.club + $lastWeeksCashExpenses.club)>>
+				$lastWeeksCashProfits.club
+			</td>
+		</tr>
+	<</if>>
+
+	<<if $lastWeeksCashIncome.clubAds || $lastWeeksCashExpenses.clubAds>>
+		<tr>
+			<td>[[Club Ads|Club Advertisement][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]]</td>
+			<td>$lastWeeksCashIncome.clubAds</td>
+			<td>$lastWeeksCashExpenses.clubAds</td>
+			<td>
+				<<set $lastWeeksCashProfits.clubAds = ($lastWeeksCashIncome.clubAds + $lastWeeksCashExpenses.clubAds)>>
+				$lastWeeksCashProfits.clubAds
+			</td>
+		</tr>
+	<</if>>
+
+	<<if $arcade > 0>>
+	<tr>
+		<td>[[$arcadeName|Arcade][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]] ($arcadeSlaves slaves)</td>
+		<td>$lastWeeksCashIncome.arcade</td>
+		<td>$lastWeeksCashExpenses.arcade</td>
+		<td>
+			<<set $lastWeeksCashProfits.arcade = ($lastWeeksCashIncome.arcade + $lastWeeksCashExpenses.arcade)>>
+			$lastWeeksCashProfits.arcade
+		</td>
+	</tr>
+	<</if>>
+	
+	<<if $dairy > 0>>
+		<tr>
+			<td>[[$dairyName|Dairy][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]] ($dairySlaves slaves)</td>
+			<td>$lastWeeksCashIncome.dairy</td>
+			<td>$lastWeeksCashExpenses.dairy</td>
+			<td>
+				<<set $lastWeeksCashProfits.dairy = ($lastWeeksCashIncome.dairy + $lastWeeksCashExpenses.dairy)>>
+				$lastWeeksCashProfits.dairy
+			</td>
+		</tr>
+	<</if>>
+	
+	<<if ($servantsQuarters > 0) && ($servantsQuartersUpgradeMonitoring > 0)>>	
+		<tr>
+			<td>[[Servants' Quarters][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]] ($servantsQuartersSlaves slaves)</td>
+			<td>$lastWeeksCashIncome.servantsQuarters</td> /*Does not count servants who are serving, only what Stewardess makes.  If I can find savings, perhaps show as negative expense? */
+			<td>$lastWeeksCashExpenses.servantsQuarters</td>
+			<td>
+				<<set $lastWeeksCashProfits.servantsQuarters = ($lastWeeksCashIncome.servantsQuarters + $lastWeeksCashExpenses.servantsQuarters)>>
+				//$lastWeeksCashProfits.servantsQuarters//
+			</td>
+		</tr>
+	<</if>>
+	
+	<<if ($masterSuiteUpgradePregnancy == 1)>>
+		<tr>
+			<td>[[Master Suite][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]] ($masterSuiteSlaves slaves)</td>
+			<td>Rep: $lastWeeksCashIncome.masterSuite</td>
+			<td>$lastWeeksCashExpenses.masterSuite</td>
+			<td>
+				<<set $lastWeeksCashProfits.masterSuite = ($lastWeeksCashIncome.masterSuite + $lastWeeksCashExpenses.masterSuite)>>
+				$lastWeeksCashProfits.masterSuite
+			</td>
+		</tr>
+	<</if>>
+	
+	<<if $schoolroom>>
+		<tr>
+			<td>[[$schoolroomName|Schoolroom][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]] ($schoolroomSlaves slaves)</td>
+			<td>$lastWeeksCashIncome.school</td>
+			<td>$lastWeeksCashExpenses.school</td>
+			<td>
+				<<set $lastWeeksCashProfits.school = ($lastWeeksCashIncome.school + $lastWeeksCashExpenses.school)>>
+				$lastWeeksCashProfits.school
+			</td>
+		</tr>
+	<</if>>
+	
+	<<if $spa>>
+		<tr>
+			<td>[[$spaName|Spa][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]] ($spaSlaves slaves)</td>
+			<td>$lastWeeksCashIncome.spa</td>
+			<td>$lastWeeksCashExpenses.spa</td>
+			<td>
+				<<set $lastWeeksCashProfits.spa = ($lastWeeksCashIncome.spa + $lastWeeksCashExpenses.spa)>>
+				$lastWeeksCashProfits.spa
+			</td>
+		</tr>
+	<</if>>
+	
+	<<if $clinic>>
+		<tr>
+			<td>[[$clinicName|Clinic][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]] ($clinicSlaves slaves)</td>
+			<td>$lastWeeksCashIncome.clinic</td>
+			<td>$lastWeeksCashExpenses.clinic</td>
+			<td>
+				<<set $lastWeeksCashProfits.clinic = ($lastWeeksCashIncome.clinic + $lastWeeksCashExpenses.clinic)>>
+				$lastWeeksCashProfits.clinic
+			</td>
+		</tr>
+	<</if>>
+	
+	<<if $cellblock>>
+		<tr>
+			<td>[[$cellblockName|Cellblock][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]] ($cellblockSlaves slaves)</td>
+			<td>$lastWeeksCashIncome.cellblock</td>
+			<td>$lastWeeksCashExpenses.cellblock</td>
+			<td>
+				<<set $lastWeeksCashProfits.cellblock = ($lastWeeksCashIncome.cellblock + $lastWeeksCashExpenses.cellblock)>>
+				$lastWeeksCashProfits.cellblock
+			</td>
+		</tr>
+	<</if>>
+	
+	<<if $researchLab.built == "true">>
+		<tr>
+			<td>[[Research Lab][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]]: Maintenance</td>
+			<td>$lastWeeksCashIncome.lab</td>
+			<td>
+				<<set $lastWeeksCashExpenses.lab = (100*$researchLab.maxSpace)>>
+				$lastWeeksCashExpenses.lab
+			</td>
+			<td>
+				<<set $lastWeeksCashProfits.lab = ($lastWeeksCashIncome.lab + $lastWeeksCashExpenses.lab)>>
+				$lastWeeksCashProfits.lab
+			</td>
+		</tr>
+		<<if $researchLab.hired != 0>>
+			<tr>
+				<td>[[Research Lab][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]]: ($researchLab.hired scientists)</td>
+				<td></td>
+				<td>
+					<<set $lastWeeksCashExpenses.lab += (300*$researchLab.hired)>>
+					<<print (300*$researchLab.hired)>>
+				</td>
+				<td><<print (300*$researchLab.hired)>></td>
+			</tr>
+		<</if>>
+		<<if $researchLab.menials != 0>>
+			<tr>
+				<td>[[Research Lab][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]]: ($researchLab.menials menial Slaves)</td>
+				<td></td>
+				<td>
+					<<set $lastWeeksCashExpenses.lab += (100*$researchLab.menials)>>
+					<<print (100*$researchLab.menials)>>
+				</td>
+				<td><<print (100*$researchLab.menials)>></td>
+			</tr>
+		<</if>>
+	<</if>>
+
+	<<if $lastWeeksCashIncome.cyberMod || $lastWeeksCashExpenses.cyberMod>>
+		<tr>
+			<td>CyberMod</td>
+			<td>$lastWeeksCashIncome.cyberMod</td>
+			<td>$lastWeeksCashExpenses.cyberMod</td>
+			<td>
+				<<set $lastWeeksCashProfits.cyberMod = ($lastWeeksCashIncome.cyberMod + $lastWeeksCashExpenses.cyberMod)>>
+				$lastWeeksCashProfits.cyberMod
+			</td>
+		</tr>
+	<</if>>
+	
+	<<if $incubator>>
+		<tr>
+			<td>[[$incubatorName|Incubator][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]] ($incubatorSlaves slaves)</td>
+			<td>$lastWeeksCashIncome.incubator</td>
+			<td>$lastWeeksCashExpenses.incubator</td>
+			<td>
+				<<set $lastWeeksCashProfits.incubator = ($lastWeeksCashIncome.incubator + $lastWeeksCashExpenses.incubator)>>
+				$lastWeeksCashProfits.incubator
+			</td>
+		</tr>
+	<</if>>
+
+	<<if $nursery>>
+		<tr>
+			<td>[[$nurseryName|Nursery][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]] ($nurserySlaves slaves)</td>
+			<td>$lastWeeksCashIncome.nursery</td>
+			<td>$lastWeeksCashExpenses.nursery</td>
+			<td>
+				<<set $lastWeeksCashProfits.nursery = ($lastWeeksCashIncome.nursery + $lastWeeksCashExpenses.nursery)>>
+				$lastWeeksCashProfits.nursery
+			</td>
+		</tr>
+	<</if>>
+
+	<<if $farmyard>>
+		<tr>
+			<td>[[$farmyardName|Farmyard][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]] ($farmyardSlaves slaves)</td>
+			<td>$lastWeeksCashIncome.farmyard</td>
+			<td>$lastWeeksCashExpenses.farmyard</td>
+			<td>
+				<<set $lastWeeksCashProfits.farmyard = ($lastWeeksCashIncome.farmyard + $lastWeeksCashExpenses.farmyard)>>
+				$lastWeeksCashProfits.farmyard
+			</td>
+		</tr>
+	<</if>>
+
+	<<if $pit>>
+		<tr>
+			<td>[[$pitName|Pit][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]] ($pitSlaves slaves)</td>
+			<td>$lastWeeksCashIncome.pit</td>
+			<td>$lastWeeksCashExpenses.pit</td>
+			<td>
+				<<set $lastWeeksCashProfits.pit = ($lastWeeksCashIncome.pit + $lastWeeksCashExpenses.pit)>>
+				$lastWeeksCashProfits.pit
+			</td>
+		</tr>
+	<</if>>
+
+	<<if$lastWeeksCashIncome.arcologyImprovement|| $lastWeeksCashExpenses.arcologyImprovement>>
+		<tr>
+			<td>Arcology construction and repair</td>
+			<td>$lastWeeksCashIncome.arcologyImprovement</td>
+			<td>$lastWeeksCashExpenses.arcologyImprovement</td>
+			<td>
+				<<set $lastWeeksCashProfits.arcologyImprovement = ($lastWeeksCashIncome.arcologyImprovement + $lastWeeksCashExpenses.arcologyImprovement)>>
+				$lastWeeksCashProfits.arcologyImprovement
+			</td>
+		</tr>
+	<</if>>
+
+	<<if$lastWeeksCashIncome.environment || $lastWeeksCashExpenses.environment>>
+		<tr>
+			<td>Environment</td>
+			<td>$lastWeeksCashIncome.environment</td>
+			<td>$lastWeeksCashExpenses.environment</td>
+			<td>
+				<<set $lastWeeksCashProfits.environment = ($lastWeeksCashIncome.environment + $lastWeeksCashExpenses.environment)>>
+				$lastWeeksCashProfits.environment
+			</td>
+		</tr>
+	<</if>>
+
+	<<if $lastWeeksCashIncome.weather || $lastWeeksCashExpenses.weather>>
+		<tr>
+			<td>
+				<<if $lastWeeksCashExpenses.weather > 0>>
+					Weather is causing @@.red;expensive damage.@@  Consider a protective [[upgrade|Manage Arcology][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]].
+				<<else>>
+					Weather
+				<</if>>
+			</td>
+			<td>$lastWeeksCashIncome.weather</td>
+			<td>$lastWeeksCashExpenses.weather</td>
+			<td>
+				<<set $lastWeeksCashProfits.weather = ($lastWeeksCashIncome.weather + $lastWeeksCashExpenses.weather)>>
+				$lastWeeksCashProfits.weather
+			</td>
+		</tr>
+	<</if>>
+
+	
+	<tr>
+		<h2>Slaves</h2>
+	</tr>
+	
+	<tr>
+		<td>[[Slave maintenance|Costs Report][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]] (food, hormones) ($slaves.length slaves)</td>
+		<td>$lastWeeksCashIncome.slaveUpkeep</td>
+		<td>$lastWeeksCashExpenses.slaveUpkeep</td>
+		<td>
+			<<set $lastWeeksCashProfits.slaveUpkeep = ($lastWeeksCashIncome.slaveUpkeep + $lastWeeksCashExpenses.slaveUpkeep)>>
+			$lastWeeksCashProfits.slaveUpkeep
+		</td>
+	</tr>
+	
+	<<if $lastWeeksCashIncome.extraMilk || $lastWeeksCashExpenses.extraMilk>>
+		<tr>
+			<td>Extra Milk</td>
+			<td>$lastWeeksCashIncome.extraMilk</td>
+			<td>$lastWeeksCashExpenses.extraMilk</td>
+			<td>
+				<<set $lastWeeksCashProfits.extraMilk = ($lastWeeksCashIncome.extraMilk + $lastWeeksCashExpenses.extraMilk)>>
+				$lastWeeksCashProfits.extraMilk
+			</td>
+		</tr>
+	<</if>>
+
+	<<if $lastWeeksCashIncome.extraMilk || $lastWeeksCashExpenses.extraMilk>>
+		<tr>
+			<td>Extra Milk</td>
+			<td>$lastWeeksCashIncome.extraMilk</td>
+			<td>$lastWeeksCashExpenses.extraMilk</td>
+			<td>
+				<<set $lastWeeksCashProfits.extraMilk = ($lastWeeksCashIncome.extraMilk + $lastWeeksCashExpenses.extraMilk)>>
+				$lastWeeksCashProfits.extraMilk
+			</td>
+		</tr>
+	<</if>>
+	<<if $marketAssistantLimit>>
+		<tr>
+			<td>Menials: [[Assistant's|Personal assistant options][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]] flipping</td>
+			<td>$lastWeeksCashIncome.menialTradesTransfer</td>
+			<td>$lastWeeksCashExpenses.menialTradesTransfer</td>
+			<td>
+				<<set $lastWeeksCashProfits.menialTradesTransfer = ($lastWeeksCashIncome.menialTradesTransfer + $lastWeeksCashExpenses.menialTradesTransfer)>>
+				$lastWeeksCashProfits.menialTradesTransfer
+			</td>
+		</tr>
+	<</if>>
+
+	<<if ($lastWeeksCashIncome.menialTrades) || ($lastWeeksCashExpenses.menialTrades)>>
+		<tr>
+			<td>Menials: labor</td>
+			<td>$lastWeeksCashIncome.menialTrades</td>
+			<td>$lastWeeksCashExpenses.menialTrades</td>
+			<td>
+				<<set $lastWeeksCashProfits.menialTrades = ($lastWeeksCashIncome.menialTrades + $lastWeeksCashExpenses.menialTrades)>>
+				$lastWeeksCashProfits.menialTrades
+			</td>
+		</tr>
+	<</if>>
+
+	<<if $lastWeeksCashIncome.fuckdolls || $lastWeeksCashExpenses.fuckdolls>>
+		<tr>
+			<td>Fuckdolls</td>
+			<td>$lastWeeksCashIncome.fuckdolls</td>
+			<td>$lastWeeksCashExpenses.fuckdolls</td>
+			<td>
+				<<set $lastWeeksCashProfits.fuckdolls = ($lastWeeksCashIncome.fuckdolls + $lastWeeksCashExpenses.fuckdolls)>>
+				$lastWeeksCashProfits.fuckdolls
+			</td>
+		</tr>
+	<</if>>
+
+	<<if ($lastWeeksCashIncome.menialBioreactors) || ($lastWeeksCashExpenses.menialBioreactors)>>
+		<tr>
+			<td>Menials: bioreactors</td>
+			<td>$lastWeeksCashIncome.menialBioreactors</td>
+			<td>$lastWeeksCashExpenses.menialBioreactors</td>
+			<td>
+				<<set $lastWeeksCashProfits.menialBioreactors = ($lastWeeksCashIncome.menialBioreactors + $lastWeeksCashExpenses.menialBioreactors)>>
+				$lastWeeksCashProfits.menialBioreactors
+			</td>
+		</tr>
+	<</if>>
+
+	<<if ($lastWeeksCashIncome.fuckDollBioFactory) || ($lastWeeksCashExpenses.fuckDollBioFactory)>>
+		<tr>
+			<td>Menials: labor</td>
+			<td>$lastWeeksCashIncome.fuckDollBioFactory</td>
+			<td>$lastWeeksCashExpenses.fuckDollBioFactory</td>
+			<td>
+				<<set $lastWeeksCashProfits.fuckDollBioFactory = ($lastWeeksCashIncome.fuckDollBioFactory + $lastWeeksCashExpenses.fuckDollBioFactory)>>
+				$lastWeeksCashProfits.fuckDollBioFactory
+			</td>
+		</tr>
+	<</if>>
+	
+
+
+	<<if $lastWeeksCashIncome.porn || $lastWeeksCashExpenses.porn>>
+		<tr>
+			<td>Porn</td>
+			<td>$lastWeeksCashIncome.porn</td>
+			<td>$lastWeeksCashExpenses.porn</td>
+			<td>
+				<<set $lastWeeksCashProfits.porn = ($lastWeeksCashIncome.porn + $lastWeeksCashExpenses.porn)>>
+				$lastWeeksCashProfits.porn
+			</td>
+		</tr>
+	<</if>>
+
+	<<if $lastWeeksCashIncome.recruiter || $lastWeeksCashExpenses.recruiter>>
+		<tr>
+			<td>Recruiter</td>
+			<td>$lastWeeksCashIncome.recruiter</td>
+			<td>$lastWeeksCashExpenses.recruiter</td>
+			<td>
+				<<set $lastWeeksCashProfits.recruiter = ($lastWeeksCashIncome.recruiter + $lastWeeksCashExpenses.recruiter)>>
+				$lastWeeksCashProfits.recruiter
+			</td>
+		</tr>
+	<</if>>
+
+
+	
+	<<if $lastWeeksCashIncome.slaveTransfer || $lastWeeksCashExpenses.slaveTransfer>>
+		<tr>
+			<td>Buying/Selling Major Slaves</td>
+			<td>$lastWeeksCashIncome.slaveTransfer</td>
+			<td>$lastWeeksCashExpenses.slaveTransfer</td>
+			<td>
+				<<set $lastWeeksCashProfits.slaveTransfer = ($lastWeeksCashIncome.slaveTransfer + $lastWeeksCashExpenses.slaveTransfer)>>
+				$lastWeeksCashProfits.slaveTransfer
+			</td>
+		</tr>
+	<</if>>
+
+	<<if $lastWeeksCashIncome.fuckdollsTransfer || $lastWeeksCashExpenses.fuckdollsTransfer>>
+		<tr>
+			<td>Buying/Selling Fuckdolls</td>
+			<td>$lastWeeksCashIncome.fuckdollsTransfer</td>
+			<td>$lastWeeksCashExpenses.fuckdollsTransfer</td>
+			<td>
+				<<set $lastWeeksCashProfits.fuckdollsTransfer = ($lastWeeksCashIncome.fuckdollsTransfer + $lastWeeksCashExpenses.fuckdollsTransfer)>>
+				$lastWeeksCashProfits.fuckdollsTransfer
+			</td>
+		</tr>
+	<</if>>
+
+	<<if $lastWeeksCashIncome.babyTransfer || $lastWeeksCashExpenses.babyTransfer>>
+		<tr>
+			<td>Buying/Selling Babies</td>
+			<td>$lastWeeksCashIncome.babyTransfer</td>
+			<td>$lastWeeksCashExpenses.babyTransfer</td>
+			<td>
+				<<set $lastWeeksCashProfits.babyTransfer = ($lastWeeksCashIncome.babyTransfer + $lastWeeksCashExpenses.babyTransfer)>>
+				$lastWeeksCashProfits.babyTransfer
+			</td>
+		</tr>
+	<</if>>
+
+	<<if $lastWeeksCashIncome.menialRetirement || $lastWeeksCashExpenses.menialRetirement>>
+		<tr>
+			<td>Menials retiring</td>
+			<td>$lastWeeksCashIncome.menialRetirement</td>
+			<td>$lastWeeksCashExpenses.menialRetirement</td>
+			<td>
+				<<set $lastWeeksCashProfits.menialRetirement = ($lastWeeksCashIncome.menialRetirement + $lastWeeksCashExpenses.menialRetirement)>>
+				$lastWeeksCashProfits.menialRetirement
+			</td>
+		</tr>
+	<</if>>
+
+	<<if $lastWeeksCashIncome.slaveMod || $lastWeeksCashExpenses.slaveMod>>
+		<tr>
+			<td>Slave Modification</td>
+			<td>$lastWeeksCashIncome.slaveMod</td>
+			<td>$lastWeeksCashExpenses.slaveMod</td>
+			<td>
+				<<set $lastWeeksCashProfits.slaveMod = ($lastWeeksCashIncome.slaveMod + $lastWeeksCashExpenses.slaveMod)>>
+				$lastWeeksCashProfits.slaveMod
+			</td>
+		</tr>
+	<</if>>
+
+	<<if $lastWeeksCashIncome.slaveSurgery || $lastWeeksCashExpenses.slaveSurgery>>
+		<tr>
+			<td>Slave Surgery</td>
+			<td>$lastWeeksCashIncome.slaveSurgery</td>
+			<td>$lastWeeksCashExpenses.slaveSurgery</td>
+			<td>
+				<<set $lastWeeksCashProfits.slaveSurgery = ($lastWeeksCashIncome.slaveSurgery + $lastWeeksCashExpenses.slaveSurgery)>>
+				$lastWeeksCashProfits.slaveSurgery
+			</td>
+		</tr>
+	<</if>>
+
+	<<if $lastWeeksCashIncome.birth || $lastWeeksCashExpenses.birth>>
+		<tr>
+			<td>Slave Surgery</td>
+			<td>$lastWeeksCashIncome.birth</td>
+			<td>$lastWeeksCashExpenses.birth</td>
+			<td>
+				<<set $lastWeeksCashProfits.birth = ($lastWeeksCashIncome.birth + $lastWeeksCashExpenses.birth)>>
+				$lastWeeksCashProfits.birth
+			</td>
+		</tr>
+	<</if>>
+
+
+	<tr>
+		<h2>Finance</h2>
+	</tr>
+	
+	<<if $lastWeeksCashIncome.personalBusiness || $lastWeeksCashExpenses.personalBusiness>>
+		<tr>
+			<td>Personal Business</td>
+			<td>$lastWeeksCashIncome.personalBusiness</td>
+			<td>$lastWeeksCashExpenses.personalBusiness</td>
+			<td>
+				<<set $lastWeeksCashProfits.personalBusiness = ($lastWeeksCashIncome.personalBusiness + $lastWeeksCashExpenses.personalBusiness)>>
+				$lastWeeksCashProfits.personalBusiness
+			</td>
+		</tr>
+	<</if>>
+
+	<tr>
+		<<if $girls == 3>>
+			<td>Since you are accustomed to luxury, your personal living expenses are:</td>
+		<<elseif $girls == 2>>
+			<td>Since you are used to living well, your personal living expenses are:</td>
+		<<else>>
+			<td>Since you are used to a fairly normal life, your personal living expenses are:</td>
+		<</if>>
+			<td>$lastWeeksCashIncome.personalLivingExpenses</td>
+			<td>$lastWeeksCashExpenses.personalLivingExpenses</td>
+			<td>
+				<<set $lastWeeksCashProfits.personalLivingExpenses = ($lastWeeksCashIncome.personalLivingExpenses + $lastWeeksCashExpenses.personalLivingExpenses)>>
+				$lastWeeksCashProfits.personalLivingExpenses
+			</td>
+	</tr>
+
+	<<if $lastWeeksCashIncome.PCtraining || $lastWeeksCashExpenses.PCtraining>>
+		<tr>
+			<td>Your training</td>
+			<td>$lastWeeksCashIncome.PCtraining</td>
+			<td>$lastWeeksCashExpenses.PCtraining</td>
+			<td>
+				<<set $lastWeeksCashProfits.PCtraining = ($lastWeeksCashIncome.PCtraining + $lastWeeksCashExpenses.PCtraining)>>
+				$lastWeeksCashProfits.PCtraining
+			</td>
+		</tr>
+	<</if>>
+
+	<<if $lastWeeksCashIncome.PCmedical || $lastWeeksCashExpenses.PCmedical>>
+		<tr>
+			<td>Your medical expenses</td>
+			<td>$lastWeeksCashIncome.PCmedical</td>
+			<td>$lastWeeksCashExpenses.PCmedical</td>
+			<td>
+				<<set $lastWeeksCashProfits.PCmedical = ($lastWeeksCashIncome.PCmedical + $lastWeeksCashExpenses.PCmedical)>>
+				$lastWeeksCashProfits.PCmedical
+			</td>
+		</tr>
+	<</if>>
+
+	<<if $lastWeeksCashIncome.PCskills || $lastWeeksCashExpenses.PCskills>>
+		<tr>
+			<td>Your skills</td>
+			<td>$lastWeeksCashIncome.PCskills</td>
+			<td>$lastWeeksCashExpenses.PCskills</td>
+			<td>
+				<<set $lastWeeksCashProfits.PCskills = ($lastWeeksCashIncome.PCskills + $lastWeeksCashExpenses.PCskills)>>
+				$lastWeeksCashProfits.PCskills
+			</td>
+		</tr>
+	<</if>>
+
+	<tr>
+		<td>
+			Your rents
+			<<if $lastWeeksCashExpenses.rents > 0>>
+				(and bribes)
+			<</if>>
+		</td>
+		<td>$lastWeeksCashIncome.rents</td>
+		<td>$lastWeeksCashExpenses.rents</td>
+		<td>
+			<<set $lastWeeksCashProfits.rents = ($lastWeeksCashIncome.rents + $lastWeeksCashExpenses.rents)>>
+			$lastWeeksCashIncome.rents
+		</td>
+	</tr>
+
+	<<if $lastWeeksCashIncome.stocks || $personalShares > 0>>
+		<tr>
+			<td>Stock dividends on ($personalShares/<<print ($publicShares + $personalShares)>> shares), paying <<print ($lastWeeksCashIncome.stocks/$personalShares*100)>>% per share.</td>
+			<td>$lastWeeksCashIncome.stocks</td>
+			<td>$lastWeeksCashExpenses.stocks</td>
+			<td>
+				<<set $lastWeeksCashProfits.stocks = ($lastWeeksCashIncome.stocks + $lastWeeksCashExpenses.stocks)>>
+				$lastWeeksCashProfits.stocks
+			</td>
+		</tr>
+	<</if>>
+
+	<<if $lastWeeksCashIncome.stocksTraded|| $lastWeeksCashExpenses.stocksTraded>>
+		<tr>
+			<td>Stock trading</td>
+			<td>$lastWeeksCashIncome.stocksTraded</td>
+			<td>$lastWeeksCashExpenses.stocksTraded</td>
+			<td>
+				<<set $lastWeeksCashProfits.stocksTraded = ($lastWeeksCashIncome.stocksTraded + $lastWeeksCashExpenses.stocksTraded)>>
+				$lastWeeksCashProfits.stocksTraded
+			</td>
+		</tr>
+	<</if>>
+
+	<<if $lastWeeksCashIncome.fines || $lastWeeksCashExpenses.fines>>
+		<tr>
+			<td>Fines</td>
+			<td>$lastWeeksCashIncome.fines</td>
+			<td>$lastWeeksCashExpenses.fines</td>
+			<td>
+				<<set $lastWeeksCashProfits.fines = ($lastWeeksCashIncome.fines + $lastWeeksCashExpenses.fines)>>
+				$lastWeeksCashProfits.fines
+			</td>
+		</tr>
+	<</if>>
+
+	<<if $lastWeeksCashIncome.event || $lastWeeksCashExpenses.event>>
+		<tr>
+			<td>Events</td>
+			<td>$lastWeeksCashIncome.event</td>
+			<td>$lastWeeksCashExpenses.event</td>
+			<td>
+				<<set $lastWeeksCashProfits.event = ($lastWeeksCashIncome.event + $lastWeeksCashExpenses.event)>>
+				$lastWeeksCashProfits.event
+			</td>
+		</tr>
+	<</if>>
+
+	<<if $lastWeeksCashIncome.war || $lastWeeksCashExpenses.war>>
+		<tr>
+			<td>Archology conflict</td>
+			<td>$lastWeeksCashIncome.war</td>
+			<td>$lastWeeksCashExpenses.war</td>
+			<td>
+				<<set $lastWeeksCashProfits.war = ($lastWeeksCashIncome.war + $lastWeeksCashExpenses.war)>>
+				$lastWeeksCashProfits.war
+			</td>
+		</tr>
+	<</if>>
+
+	<<if $lastWeeksCashIncome.PCtraining || $lastWeeksCashExpenses.PCtraining>>
+		<tr>
+			<td>
+				<<if ($personalAttention == "trading")>>
+					[[Trading trainer|Personal Attention Select][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]] fees
+				<<elseif ($personalAttention == "warfare")>>
+					[[Warfare trainer|Personal Attention Select][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]] fees
+				<<elseif ($personalAttention == "slaving")>>
+					[[Slaving trainer|Personal Attention Select][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]] fees
+				<<elseif ($personalAttention == "engineering")>>
+					[[Engineering trainer|Personal Attention Select][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]] fees
+				<<elseif ($personalAttention == "medicine")>>
+					[[Medicine trainer|Personal Attention Select][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]] fees
+				<</if>>
+			</td>
+			<td>$lastWeeksCashIncome.PCtraining</td>
+			<td>$lastWeeksCashExpenses.PCtraining</td>
+			<td>
+				<<set $lastWeeksCashProfits.PCtraining = ($lastWeeksCashIncome.PCtraining + $lastWeeksCashExpenses.PCtraining)>>
+				$lastWeeksCashProfits.PCtraining
+			</td>
+		</tr>	
+	<</if>>
+
+	<<if $lastWeeksCashIncome.capEx || $lastWeeksCashExpenses.capEx>>
+		<tr>
+			<td>Capital Expenses</td>
+			<td>$lastWeeksCashIncome.capEx</td>
+			<td>$lastWeeksCashExpenses.capEx</td>
+			<td>
+				<<set $lastWeeksCashProfits.capEx = ($lastWeeksCashIncome.capEx + $lastWeeksCashExpenses.capEx)>>
+				$lastWeeksCashProfits.capEx
+			</td>
+		</tr>
+	<</if>>
+
+	<<if $lastWeeksCashIncome.cheating || $lastWeeksCashExpenses.cheating>>
+		<tr>
+			<td>CHEATING</td>
+			<td>$lastWeeksCashIncome.cheating</td>
+			<td>$lastWeeksCashExpenses.cheating</td>
+			<td>
+				<<set $lastWeeksCashProfits.cheating = ($lastWeeksCashIncome.cheating + $lastWeeksCashExpenses.cheating)>>
+				$lastWeeksCashProfits.cheating
+			</td>
+		</tr>
+	<</if>>
+	
+	<tr>
+		<h2>Policies</h2>
+	</tr>	
+	
+	<<if $lastWeeksCashIncome.policies || $lastWeeksCashExpenses.policies>>
+		<tr>
+			<td>[[Policies|Policies][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]]</td>
+			<td>$lastWeeksCashIncome.policies</td>
+			<td>$lastWeeksCashExpenses.policies</td>
+			<td>
+				<<set $lastWeeksCashProfits.policies = ($lastWeeksCashIncome.policies + $lastWeeksCashExpenses.policies)>>
+				$lastWeeksCashProfits.policies
+			</td>
+		</tr>	
+	<</if>>
+
+	<<if $FSSpending != 0>>
+		<tr>
+			<td>[[Society Shaping|Future Society][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]]</td>
+			<td>$lastWeeksCashIncome.futureSocieties</td>
+			<td>$lastWeeksCashExpenses.futureSocieties</td>
+			<td>
+				<<set $lastWeeksCashProfits.futureSocieties = ($lastWeeksCashIncome.futureSocieties + $lastWeeksCashExpenses.futureSocieties)>>
+				$lastWeeksCashProfits.futureSocieties
+			</td>
+		</tr>
+	<</if>>
+
+	<<if $lastWeeksCashIncome.schoolBacking || $lastWeeksCashExpenses.schoolBacking>>
+		<tr>
+			<td>
+				<<if $TSS.subsidize != 0>>[[The Slavegirl School|Policies][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]] branch campus influence
+				<<elseif $GRI.subsidize != 0>>[[Growth Research Institute|Policies][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]] subsidiary lab influence
+				<<elseif $SCP.subsidize != 0>>[[St. Claver Preparatory|Policies][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]] branch campus influence
+				<<elseif $LDE.subsidize != 0>>>[[L'Encole des Enculees|Policies][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]] branch campus influence
+				<<elseif $TGA.subsidize != 0>>>[[The Gymnasium-Academy|Policies][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]] branch campus influence
+				<<elseif $TCR.subsidize != 0>>>[[The Cattle Ranch|Policies][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]] branch campus influence
+				<<elseif $HA.subsidize != 0>>>[[Hippolyta Academy|Policies][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]] branch campus influence
+				<<elseif $TFS.subsidize != 0>>[[The Futanari Sisters|Policies][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]] community influence
+				<<elseif $TSS.schoolPresent == 1>>[[The Slavegirl School|Policies][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]] branch campus upkeep
+				<<elseif $GRI.schoolPresent == 1>>[[Growth Research Institute|Policies][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]] subsidiary lab upkeep
+				<<elseif $SCP.schoolPresent == 1>>[[St. Claver Preparatory|Policies][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]] branch campus upkeep
+				<<elseif $LDE.schoolPresent == 1>>[[L'Encole des Enculees|Policies][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]] branch campus upkeep
+				<<elseif $TGA.schoolPresent == 1>>[[The Gymnasium-Academy|Policies][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]] branch campus upkeep
+				<<elseif $TCR.schoolPresent == 1>>[[The Cattle Ranch|Policies][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]] branch campus upkeep
+				<<elseif $HA.schoolPresent == 1>>[[Hippolyta Academy|Policies][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]] branch campus upkeep
+				<<else>> Unknown school expense
+				<</if>>
+			</td>
+			<td>$lastWeeksCashIncome.schoolBacking</td>
+			<td>$lastWeeksCashExpenses.schoolBacking</td>
+			<td>
+				<<set $lastWeeksCashProfits.schoolBacking = ($lastWeeksCashIncome.schoolBacking + $lastWeeksCashExpenses.schoolBacking)>>
+				$lastWeeksCashProfits.schoolBacking
+			</td>
+		</tr>	
+	<</if>>
+	
+	<<if $citizenOrphanageTotal > 0>>
+		<tr>
+			<td>Education of $citizenOrphanageTotal of your slaves' children in citizen schools</td>
+			<td>$lastWeeksCashIncome.citizenOrphanage</td>
+			<td>$lastWeeksCashExpenses.citizenOrphanage</td>
+			<td>
+				<<set $lastWeeksCashProfits.citizenOrphanage = ($lastWeeksCashIncome.citizenOrphanage + $lastWeeksCashExpenses.citizenOrphanage)>>
+				$lastWeeksCashProfits.citizenOrphanage
+			</td>
+		</tr>
+	<</if>>
+
+	<<if $privateOrphanageTotal > 0>>
+		<tr>
+			<td>Private tutelage of $privateOrphanageTotal of your slaves' children</td>
+			<td>$lastWeeksCashIncome.privateOrphanage</td>
+			<td>$lastWeeksCashExpenses.privateOrphanage</td>
+			<td>
+				<<set $lastWeeksCashProfits.privateOrphanage = ($lastWeeksCashIncome.privateOrphanage + $lastWeeksCashExpenses.privateOrphanage)>>
+				$lastWeeksCashProfits.privateOrphanage
+			</td>
+		</tr>
+	<</if>>
+
+	<<if $mercenaries > 0>>
+		<tr>
+			<td>Security: [[$mercenariesTitle|Barracks][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]]
+			<<if $barracks>><<else>><br>//@@.red;Cost increased by the lack of a barracks.@@//<</if>>
+			<<if ($PC.warfare >= 100) || ($PC.career == "arcology owner")>><br>//Cost reduced by your @@.springgreen;mercenary contacts.@@//<</if>>
+			</td>
+			<td>$lastWeeksCashIncome.mercenaries</td>
+			<td>$lastWeeksCashExpenses.mercenaries</td>
+			<td>
+				<<set $lastWeeksCashProfits.mercenaries = ($lastWeeksCashIncome.mercenaries + $lastWeeksCashExpenses.mercenaries)>>
+				$lastWeeksCashProfits.mercenaries
+			</td>
+		</tr>
+	<</if>>
+	
+	<<if $lastWeeksCashIncome.securityExpansion || $lastWeeksCashExpenses.securityExpansion>>
+		<tr>
+			<td>Security Expansion</td>
+			<td>$lastWeeksCashIncome.securityExpansion</td>
+			<td>$lastWeeksCashExpenses.securityExpansion</td>
+			<td>
+				<<set $lastWeeksCashProfits.securityExpansion = ($lastWeeksCashIncome.securityExpansion + $lastWeeksCashExpenses.securityExpansion)>>
+				$lastWeeksCashProfits.securityExpansion
+			</td>
+		</tr>
+	<</if>>
+
+	<<if $lastWeeksCashIncome.specialForces || $lastWeeksCashExpenses.specialForces>>
+		<tr>
+			<td>Special Forces</td>
+			<td>$lastWeeksCashIncome.specialForces</td>
+			<td>$lastWeeksCashExpenses.specialForces</td>
+			<td>
+				<<set $lastWeeksCashProfits.specialForces = ($lastWeeksCashIncome.specialForces + $lastWeeksCashExpenses.specialForces)>>
+				$lastWeeksCashProfits.specialForces
+			</td>
+		</tr>
+	<</if>>
+	
+	<<if $securityForceActive > 0>>
+		<tr>
+			<td>Acquisitions: [[$securityForceName|SFM Barracks][$nextButton = "Back to Budget", $nextLink = "Costs Budget"]]</td>
+			<td>$lastWeeksCashIncome.mercenaries</td>
+			<td>$lastWeeksCashExpenses.mercenaries</td>
+			<td>
+				<<set $lastWeeksCashProfits.mercenaries = ($lastWeeksCashIncome.mercenaries + $lastWeeksCashExpenses.mercenaries)>>
+				$lastWeeksCashProfits.mercenaries
+			</td>
+		</tr>
+	<</if>>
+	
+	<<if (def $peacekeepers) and ($peacekeepers != 0) >>
+		<<if $peacekeepers.undermining != 0>>
+			<tr>
+				<td>Undermine political support for the nearby old world peacekeeping mission.</td>
+				<td>$lastWeeksCashIncome.peacekeepers</td>
+				<td>$lastWeeksCashExpenses.peacekeepers</td>
+				<td>
+					<<set $lastWeeksCashProfits.peacekeepers = ($lastWeeksCashIncome.peacekeepers + $lastWeeksCashExpenses.peacekeepers)>>
+					$lastWeeksCashProfits.peacekeepers
+				</td>
+			</tr>
+		<</if>>
+	<</if>>
+	
+	<<if $lastWeeksCashIncome.recruiter || $lastWeeksCashExpenses.recruiter>>
+		<tr>
+			<td>__Recruiting__</td>
+			<td>$lastWeeksCashIncome.recruiter</td>
+			<td>$lastWeeksCashExpenses.recruiter</td>
+			<td>
+				<<set $lastWeeksCashProfits.recruiter = ($lastWeeksCashIncome.recruiter + $lastWeeksCashExpenses.recruiter)>>
+				$lastWeeksCashProfits.recruiter
+			</td>
+		</tr>	
+	<</if>>
+
+	<tr><td></td></tr>
+	<tr>
+		<td>Tracked totals</td>	
+		<td>
+			<<set $lastWeeksCashIncome.Total = hashSum($lastWeeksCashIncome)>>
+			$lastWeeksCashIncome.Total
+		</td>
+		
+		<td>
+			<<set $lastWeeksCashExpenses.Total = hashSum($lastWeeksCashExpenses)>>
+			$lastWeeksCashExpenses.Total
+		</td>
+		<td>
+			<<set $lastWeeksCashProfits.Total  = ($lastWeeksCashIncome.Total + $lastWeeksCashExpenses.Total)>> 
+			/* each "profit" item is calculated on this sheet, and there's two ways to generate a profit total: the difference of the income and expense totals, and adding all the profit items.  If they aren't the same, I probably forgot to properly add an item's profit calculation to this sheet.*/
+			<<if $lastWeeksCashProfits.Total != hashSum($lastWeeksCashProfits) - $lastWeeksCashProfits.Total>>/* Profits includes the total number of profits, so we have to subtract it back out */
+				<<print (hashSum($lastWeeksCashProfits)-$lastWeeksCashProfits.Total)>><br>
+				@@.red;Fix profit calc<br>@@
+			<</if>>
+			$lastWeeksCashProfits.Total			
+		</td>
+	</tr>
+
+
+	<tr><td></td></tr>
+	<tr>
+		<td>Expenses budget for week <<print ($week +1)>></td>
+		<td></td>
+		<td>$costs</td>
+		<td></td>	
+	</tr>
+
+
+
+	<tr><td></td></tr>
+	<tr>
+		<td>Last week actuals</td>
+		<td></td>
+		<td></td>
+		<td><<print ($cash-$cashLastWeek)>></td>	
+	</tr>
+	
+	<<if ($cash-$cashLastWeek) == $lastWeeksCashProfits.Total>>
+		<tr>
+			@@.green;The books are balanced, <<= properTitle()>>!@@
+		</tr>
+	<<else>>
+		<tr>
+			<td>Transaction tracking off by:</td>
+			<td></td>
+			<td>/*<<print ($lastWeeksCashExpenses.Total + $costs)>>*/</td>
+			<td><<print (($cash-$cashLastWeek) - $lastWeeksCashProfits.Total)>></td>	
+		</tr>
+	<</if>>
+</table>
+
+<br>
+
+<table> /* long entries */
+
+
+</table>
+<</if>>
+
+<<if ndef $lastWeeksErrors>>
+	<<set $lastWeeksErrors = "Errors:">>
+<</if>>
+
+<<if $lastWeeksErrors !== "Errors:">>
+	<<link "Reset">> 
+		<<set $lastWeeksErrors = "Errors:">>
+	<</link>>
+	@@.red;<<print $lastWeeksErrors>>@@
+<</if>>
\ No newline at end of file
diff --git a/src/uncategorized/costsReport.tw b/src/uncategorized/costsReport.tw
index 595557f25fb4a74cded4afc0035a66c65eaa26d7..4f3de95e7ec7f6c19d02774604aa22f187a2cec7 100644
--- a/src/uncategorized/costsReport.tw
+++ b/src/uncategorized/costsReport.tw
@@ -2,7 +2,7 @@
 
 <<set $nextButton = "Back to Main", $nextLink = "Main",_arcologyCosts = 0>>
 <<if $PCSlutContacts == 0>><<set $PCSlutContacts = 1>><</if>>
-
+/*
 //Your weekly costs are as follows.//
 
 <br><br>
@@ -151,7 +151,7 @@ your personal living expenses are @@.yellowgreen;<<print cashFormat(Math.trunc($
 		<</if>>
 	<</if>>
 	<<if $farmyard > 0>> /*TODO: this will also need to be expanded*/
-		<br>&nbsp;&nbsp;&nbsp;&nbsp;
+		/*<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		Farmyard: @@.yellowgreen;<<print cashFormat($farmyard*$facilityCost)>>@@
 		<<set _arcologyCosts += $farmyard*$facilityCost>>
 	<</if>>
@@ -167,7 +167,7 @@ $nursery > 0 || $masterSuiteUpgradePregnancy > 0 || $incubator > 0 ||
 		<<set _arcologyCosts += 0.2*$servantsQuartersUpgradeMonitoring*$servantsQuarters*$facilityCost>>
 	<</if>>
 	<<if $nursery > 0>> /*TODO: this will definitely need to be expanded to take into account the number of children and other factors*/
-		<br>&nbsp;&nbsp;&nbsp;&nbsp;
+		/*<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		Nursery: @@.yellowgreen;<<print cashFormat($nursery*$facilityCost)>>@@
 		<<set _arcologyCosts += $nursery*$facilityCost>>
 	<</if>>
@@ -197,7 +197,7 @@ $nursery > 0 || $masterSuiteUpgradePregnancy > 0 || $incubator > 0 ||
 <</if>>
 
 /* security expansion */
-<<if $secExp > 0>>
+/*<<if $secExp > 0>>
 	<br><br>
 	<<if $edictsUpkeep + $SFSupportUpkeep > 0>>
 		__Edicts Upkeep__: @@.yellowgreen;<<print cashFormat($edictsUpkeep + $SFSupportUpkeep)>>@@
@@ -815,6 +815,17 @@ $nursery > 0 || $masterSuiteUpgradePregnancy > 0 || $incubator > 0 ||
 	@@.yellowgreen;<<print cashFormat(Math.trunc(_individualCosts))>>@@
 	<br>
 <</for>>
+*/
+<<set _total = 0>> <<set _SL = $slaves.length>>
+<<for $i = 0; $i < _SL; $i++>>
+	<<capture $i>>
+	<br style="clear:both" /><<if $lineSeparations == 0>><br><<else>><hr style="margin:0"><</if>>
+	[[$slaves[$i].slaveName|Slave Interact][$activeSlave = $slaves[$i]]] will $slaves[$i].assignment.
+	<<SlaveExpenses $slaves[$i]>>
+	<</capture>>
+<</for>>
+/*
+
 
 <br>Overall slave costs: @@.yellowgreen;<<print cashFormat(_total)>>@@
 
@@ -837,3 +848,4 @@ This brings the overall total to ''@@.yellowgreen;<<print cashFormat(_arcologyCo
 		<</if>>
 	<</if>>
 <</if>>
+*/
\ No newline at end of file
diff --git a/src/uncategorized/costsWidgets.tw b/src/uncategorized/costsWidgets.tw
new file mode 100644
index 0000000000000000000000000000000000000000..f77792e8657c6f475781d1e6411c6ddcc75a3255
--- /dev/null
+++ b/src/uncategorized/costsWidgets.tw
@@ -0,0 +1,552 @@
+:: Cost widgets [nobr widget]
+
+<<widget "SlaveExpenses">>
+	<<set _individualCosts = 0>>
+	<<switch $args[0].assignment>>
+		<<case "be confined in the arcade">>
+			<<set _livingExpense = ($rulesCost*.75)>>
+		<<case "work in the dairy">>
+			<<if $dairyRestraintsSetting >= 2>>
+				<<set _livingExpense = ($rulesCost*.75)>>
+			<<elseif $args[0].livingRules == "normal">>
+				<<set _livingExpense = ($rulesCost*1.5)>>
+			<<elseif $dairyDecoration == "Degradationist">>
+				<<set _livingExpense = ($rulesCost*.9)>>
+			<<else>>
+				<<set _livingExpense = $rulesCost>>
+			<</if>>
+		<<case "work as a farmhand">>
+			<<if $args[0].livingRules == "luxurious">>
+				<<set _livingExpense = ($rulesCost)>>
+			<<elseif $args[0].livingRules == "normal">>
+				<<set _livingExpense = ($rulesCost*2)>>
+			<<else>>
+				<<set _livingExpense = ($rulesCost*.9)>>
+			<</if>>
+		<<case "work in the brothel">>
+			<<if $args[0].livingRules == "normal">>
+				<<set _livingExpense = ($rulesCost*1.5)>>
+			<<else>>
+				<<set _livingExpense = $rulesCost>>
+			<</if>>
+		<<case "serve in the club" "learn in the schoolroom">>
+			<<set _livingExpense = ($rulesCost*1.5)>>
+		<<case "get treatment in the clinic">>
+			<<if $args[0].livingRules == "luxurious">>
+				<<set _livingExpense = ($rulesCost*2)>>
+			<<elseif $args[0].livingRules == "normal">>
+				<<set _livingExpense = ($rulesCost*1.5)>>
+			<<else>>
+				<<set _livingExpense = $rulesCost>>
+			<</if>>
+		<<case "rest in the spa" "work as a nanny">>
+			<<if $args[0].livingRules == "luxurious">>
+				<<set _livingExpense = ($rulesCost*1.75)>>
+			<<elseif $args[0].livingRules == "normal">>
+				<<set _livingExpense = ($rulesCost*1.5)>>
+			<<else>>
+				<<set _livingExpense = $rulesCost>>
+			<</if>>
+		<<case "be a servant">>
+			<<if $args[0].livingRules == "normal">>
+				<<set _livingExpense = ($rulesCost*1.5)>>
+			<<else>>
+				<<if $servantsQuartersDecoration == "Degradationist">>
+					<<set _livingExpense = ($rulesCost*.9)>>
+				<<else>>
+					<<set _livingExpense = $rulesCost>>
+				<</if>>
+			<</if>>
+		<<case "be confined in the cellblock">>
+			<<if $args[0].livingRules == "normal">>
+				<<set _livingExpense = ($rulesCost*1.25)>>
+			<<else>>
+				<<set _livingExpense = ($rulesCost*.9)>>
+			<</if>>
+		<<case "be the Madam" "be the DJ" "be the Nurse" "be the Wardeness" "be the Attendant" "be the Matron" "be the Schoolteacher" "be the Stewardess" "be the Milkmaid" "be the Farmer">>
+			<<set _livingExpense = ($rulesCost*2)>>
+		<<default>>
+			<<if $args[0].livingRules == "luxurious">>
+				<<if $args[0].relationship >= 4>>
+					<<set _livingExpense = ($rulesCost*3)>>
+				<<else>>
+					<<set _livingExpense = ($rulesCost*4)>>
+				<</if>>
+			<<elseif $args[0].livingRules == "normal">>
+				<<set _livingExpense = ($rulesCost*2)>>
+			<<else>>
+				<<set _livingExpense = $rulesCost>>
+			<</if>>
+	<</switch>>
+	<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Living expenses:</i> @@.yellowgreen;<<print cashFormat(_livingExpense)>>@@
+	<<set _individualCosts += _livingExpense>>
+
+	<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Basic slave food cost:</i> @@.yellowgreen;<<print cashFormat($foodCost*4)>>@@
+	<<set _individualCosts += $foodCost*4>>
+	<<switch $args[0].diet>>
+		<<case "fattening" "muscle building">>
+			<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Heavy diet:</i> @@.yellowgreen;<<print cashFormat($foodCost)>>@@
+			<<set _individualCosts += $foodCost>>
+		<<case "restricted" "slimming">>
+			<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Light diet: //reduced by//</i> @@.yellowgreen;<<print cashFormat($foodCost)>>@@
+			<<set _individualCosts -= $foodCost>>
+	<</switch>>
+	<<if $args[0].weight > 130 || $args[0].weight > 50 || $args[0].weight < -50>>
+		<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Caloric adjustment for</i>
+		<<if $args[0].weight > 130>>
+			<i>heavy weight:</i> @@.yellowgreen;<<print cashFormat($foodCost*2)>>@@
+			<<set _individualCosts += $foodCost*2>>
+		<<elseif $args[0].weight > 50>>
+			<i>high weight:</i> @@.yellowgreen;<<print cashFormat($foodCost)>>@@
+			<<set _individualCosts += $foodCost>>
+		<<elseif $args[0].weight < -50>>
+			<i>light weight:</i> //reduced by// @@.yellowgreen;<<print cashFormat($foodCost)>>@@
+			<<set _individualCosts -= $foodCost>>
+		<</if>>
+	<</if>>
+	<<if ($args[0].geneticQuirks.fertility == 2 && $args[0].geneticQuirks.hyperFertility == 2 && $args[0].preg == 0 && ($args[0].ovaries == 1 || $args[0].mpreg == 1))>>
+		<br>&nbsp;&nbsp;&nbsp;&nbsp;
+		<<if $geneticMappingUpgrade == 1>>
+			<i>Additional dietary supplements due to genetic hyper-fertility:</i> @@.yellowgreen;<<print cashFormat($foodCost/2)>>@@
+		<<else>>
+			<i>Adjustment for unusual deitary deficiencies:</i> @@.yellowgreen;<<print cashFormat($foodCost/2)>>@@
+		<</if>>
+		<<set _individualCosts += $foodCost/2>>
+	<</if>>
+	<<if $args[0].drugs == "appetite suppressors">>
+		<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Food saved via suppressed appetite:</i> //reduced by// @@.yellowgreen;<<print cashFormat($foodCost)>>@@
+		<<set _individualCosts -= $foodCost>>
+	<</if>>
+	<<if $args[0].lactation > 0>>
+		<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Food to support
+		<<if $args[0].lactation > 1>>heavy<<else>>natural<</if>> lactation from
+		<<if Math.trunc($args[0].boobs/10000) > 2>>absurd udders<<elseif Math.trunc($args[0].boobs/10000) > 1>>enormous boobs<<else>>reasonable breasts<</if>>:</i>
+		@@.yellowgreen;<<print cashFormat($foodCost*$args[0].lactation*(1+Math.trunc($args[0].boobs/10000)))>>@@
+		<<set _individualCosts += $foodCost*$args[0].lactation*(1+Math.trunc($args[0].boobs/10000))>>
+	<</if>>
+	<<if $args[0].preg > $args[0].pregData.normalBirth/8>>
+		<<if $args[0].assignment == "work in the dairy" && $dairyFeedersSetting > 0>>
+			<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Extra feeding costs to support pregnancy are covered by dairy feeders.</i>
+		<<elseif ($args[0].assignment == "serve in the master suite" || $args[0].assignment == "be your concubine") && $masterSuiteUpgradePregnancy == 1>>
+			<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Extra feeding costs to support pregnancy are covered by $masterSuiteName luxuries.</i>
+		<<else>>
+			<<set _pAccMult = 1>>
+			<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Extra feeding to support <<if $args[0].pregControl == "speed up">>accelerated <<set _pAccMult = 3>><</if>>pregnancy:</i>
+			@@.yellowgreen;<<print cashFormat($foodCost*$args[0].pregType*_pAccMult)>>@@
+			<<set _individualCosts += $foodCost*$args[0].pregType*_pAccMult>>
+			<<if $args[0].pregType >= 10>>
+				<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specialized food blend to support multiples:</i>
+				@@.yellowgreen;<<print cashFormat($foodCost*$args[0].pregType*2*_pAccMult)>>@@
+				<<set _individualCosts += $foodCost*$args[0].pregType*_pAccMult>>
+			<<elseif $args[0].pregType >= 30>>
+				<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Concentrated, quick to digest food blend to support extreme multiples:</i> @@.yellowgreen;<<print cashFormat($foodCost*$args[0].pregType*_pAccMult)>>@@
+				<<set _individualCosts += $foodCost*2*$args[0].pregType*_pAccMult>>
+			<<elseif $args[0].pregType >= 50>>
+				<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specialized dietary adjustments and concentrated, quick to digest food required to support absurd multiples:</i> <<print cashFormat($foodCost*$args[0].pregType*3*_pAccMult)>>
+				<<set _individualCosts += $foodCost*$args[0].pregType*3*_pAccMult>>
+			<<elseif $args[0].pregType >= 100>>
+				<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specialized dietary requirements and feeding methods to support absurd multiples:</i> 
+				@@.yellowgreen;<<print cashFormat($foodCost*$args[0].pregType*5*_pAccMult)>>@@
+				<<set _individualCosts += $foodCost*$args[0].pregType*5*_pAccMult>>
+			<</if>>
+		<</if>>
+	<</if>>
+	<<switch $args[0].diet>>
+		<<case "XX" "XY">>
+			<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Hormone enriched diet:</i>
+			@@.yellowgreen;<<print cashFormat(25)>>@@
+			<<set _individualCosts += 25>>
+		<<case "XXY">>
+			<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specialized hermaphrodite diet:</i>
+			@@.yellowgreen;<<print cashFormat(75)>>@@
+			<<set _individualCosts += 75>>
+		<<case "cleansing">>
+			<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Chemical cleansing diet:</i>
+			@@.yellowgreen;<<print cashFormat(50)>>@@
+			<<set _individualCosts += 50>>
+		<<case "fertility">>
+			<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Specialized fertility diet:</i>
+			@@.yellowgreen;<<print cashFormat(25)>>@@
+			<<set _individualCosts += 50>>
+	<</switch>>
+	<<if $boobAccessibility != 1>>
+		<<if ($args[0].boobs > 20000)>>
+			<<if ($args[0].assignment != "work in the dairy" || $dairyRestraintsSetting < 2) && ($args[0].assignment != "be confined in the arcade")>>
+				<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Increased living expenses due to inconveniently huge boobs:</i>
+				@@.yellowgreen;<<print cashFormat(50)>>@@
+				<<set _individualCosts += 50>>
+			<</if>>
+		<</if>>
+	<</if>>
+	<<if $pregAccessibility != 1>>
+		<<if ($args[0].belly >= 60000)>>
+			<<if ($args[0].assignment != "labor in the production line") && ($args[0].assignment != "work in the dairy" || $dairyRestraintsSetting < 2) && ($args[0].assignment != "be confined in the arcade")>>
+				<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Increased living expenses due to an inconveniently huge belly:</i>
+				@@.yellowgreen;<<print cashFormat(100)>>@@
+				<<set _individualCosts += 100>>
+			<</if>>
+		<</if>>
+	<</if>>
+	<<if $dickAccessibility != 1>>
+		<<if ($args[0].dick > 45)>>
+			<<if ($args[0].assignment != "work in the dairy" || $dairyRestraintsSetting < 2) && ($args[0].assignment != "be confined in the arcade")>>
+				<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Increased living expenses due to an inconveniently huge penis:</i>
+				@@.yellowgreen;<<print cashFormat(50)>>@@
+				<<set _individualCosts += 50>>
+			<</if>>
+		<</if>>
+	<</if>>
+	<<if $ballsAccessibility != 1>>
+		<<if ($args[0].balls > 90)>>
+			<<if ($args[0].assignment != "work in the dairy" || $dairyRestraintsSetting < 2) && ($args[0].assignment != "be confined in the arcade")>>
+				<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Increased living expenses due to inconveniently huge balls:</i>
+				@@.yellowgreen;<<print cashFormat(50)>>@@
+				<<set _individualCosts += 50>>
+			<</if>>
+		<</if>>
+	<</if>>
+	<<if $buttAccessibility != 1>>
+		<<if ($args[0].butt > 15)>>
+			<<if ($args[0].assignment != "work in the dairy" || $dairyRestraintsSetting < 2) && ($args[0].assignment != "be confined in the arcade")>>
+				<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Increased living expenses due to an inconveniently huge butt:</i>
+				@@.yellowgreen;<<print cashFormat(50)>>@@
+				<<set _individualCosts += 50>>
+			<</if>>
+		<</if>>
+	<</if>>
+	<<if !canSee($args[0]) && ($args[0].assignment != "work in the dairy" || $dairyRestraintsSetting < 2) && ($args[0].assignment != "be confined in the arcade")>>
+		<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Increased living expenses due to lack of sight:</i>
+		@@.yellowgreen;<<print cashFormat(50)>>@@
+		<<set _individualCosts += 50>>
+	<<elseif $args[0].eyes <= -1 && $args[0].eyewear != "corrective glasses" && $args[0].eyewear != "corrective contacts">>
+		<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Increased living expenses due to poor vision:</i>
+		@@.yellowgreen;<<print cashFormat(25)>>@@
+		<<set _individualCosts += 25>>
+	<<elseif ($args[0].eyewear == "blurring glasses") || ($args[0].eyewear == "blurring contacts")>>
+		<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Increased living expenses due to blurred vision:</i>
+		@@.yellowgreen;<<print cashFormat(25)>>@@
+		<<set _individualCosts += 25>>
+	<</if>>
+	<<if !canHear($args[0]) && ($args[0].assignment != "work in the dairy" || $dairyRestraintsSetting < 2) && ($args[0].assignment != "be confined in the arcade")>>
+		<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Increased living expenses due to lack of hearing:</i>
+		@@.yellowgreen;<<print cashFormat(20)>>@@
+		<<set _individualCosts += 20>>
+	<<elseif $args[0].hears <= -1 && $args[0].earwear != "hearing aids">>
+		<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Increased living expenses due to poor hearing:</i>
+		@@.yellowgreen;<<print cashFormat(5)>>@@
+		<<set _individualCosts += 5>>
+	<<elseif ($args[0].earwear == "muffling ear plugs")>>
+		<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Increased living expenses due to muffled hearing:</i>
+		@@.yellowgreen;<<print cashFormat(5)>>@@
+		<<set _individualCosts += 5>>
+	<</if>>
+	<<if ($args[0].assignment != "work in the dairy" || $dairyRestraintsSetting < 2) && ($args[0].assignment != "be confined in the arcade")>>
+		<<if ($args[0].amp != 0)>>
+			<<if ($args[0].amp == 1)>>
+				<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Increased living expenses due to limblessness:</i>
+				@@.yellowgreen;<<print cashFormat($rulesCost)>>@@
+				<<set _individualCosts += $rulesCost>>
+			<<else>>
+				<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Increased living expenses due to prosthetics:</i>
+				@@.yellowgreen;<<print cashFormat($rulesCost/2)>>@@
+				<<set _individualCosts += $rulesCost/2>>
+			<</if>>
+		<<elseif !canWalk($args[0])>>
+			<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Increased living expenses due to immobility:</i>
+			@@.yellowgreen;<<print cashFormat($rulesCost)>>@@
+			<<set _individualCosts += $rulesCost>>
+		<</if>>
+	<</if>>
+	<<if $args[0].boobs > 10000>>
+		<<if $args[0].boobsImplantType == 1>>
+			<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Maintenance cost for oversized string implants:</i>
+			@@.yellowgreen;<<print cashFormat(50)>>@@
+			<<set _individualCosts += 50>>
+		<</if>>
+	<</if>>
+	<<if $args[0].butt > 10>>
+		<<if $args[0].buttImplantType == 1>>
+			<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Maintenance cost for oversized string implants:</i>
+			@@.yellowgreen;<<print cashFormat(50)>>@@
+			<<set _individualCosts += 50>>
+		<</if>>
+	<</if>>
+	<<if $args[0].preg > $args[0].pregData.minLiveBirth>>
+		<<if $universalRulesBirthing == 1>>
+			<<if ($args[0].assignment != "work in the dairy" || $dairyRestraintsSetting < 2)>>
+				<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Coverage cost for daily pregnancy scanning:</i>
+				@@.yellowgreen;<<print cashFormat(50)>>@@
+				<<set _individualCosts += 50>>
+			<</if>>
+		<</if>>
+	<</if>>
+	<<if $CitizenRetirement == 1>>
+		<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Retirement account payments:</i>
+		@@.yellowgreen;<<print cashFormat(250)>>@@
+		<<set _individualCosts += 250>>
+	<</if>>
+	<<if ($args[0].inflation == 3)>>
+		<<switch $args[0].inflationType>>
+		<<case "water">>
+			<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Costs of specially formulated water for enemas; 2 gallons:</i>
+			@@.yellowgreen;<<print cashFormat(100)>>@@
+			<<set _individualCosts += 100>>
+		<<case "food">>
+			<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Costs of filler food for slave stuffing; 2 gallons:</i>
+			@@.yellowgreen;<<print cashFormat(($foodCost*4))>>@@
+			<<set _individualCosts += ($foodCost*4)>>
+		<<case "curative" "aphrodisiac" "tightener">>
+			<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Costs of specially formulated drug mixtures for enemas; 2 gallons:</i>
+			@@.yellowgreen;<<print cashFormat((100+($drugsCost*2)))>>@@
+			<<set _individualCosts += (100+($drugsCost*2))>>
+		<</switch>>
+	<<elseif ($args[0].inflation == 2)>>
+		<<switch $args[0].inflationType>>
+		<<case "water">>
+			<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Costs of specially formulated water for enemas; 1 gallon:</i>
+			@@.yellowgreen;<<print cashFormat(50)>>@@
+			<<set _individualCosts += 50>>
+		<<case "food">>
+			<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Costs of filler food for slave stuffing; 1 gallon:</i>
+			@@.yellowgreen;<<print cashFormat(($foodCost*2))>>@@
+			<<set _individualCosts += ($foodCost*4)>>
+		<<case "curative" "aphrodisiac" "tightener">>
+			<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Costs of specially formulated drug mixtures for enemas; 1 gallon:</i>
+			@@.yellowgreen;<<print cashFormat((50+($drugsCost*2)))>>@@
+			<<set _individualCosts += (50+($drugsCost*2))>>
+		<</switch>>
+	<<elseif ($args[0].inflation == 1)>>
+		<<switch $args[0].inflationType>>
+		<<case "water">>
+			<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Costs of specially formulated water for enemas; 2 liters:</i>
+			@@.yellowgreen;<<print cashFormat(25)>>@@
+			<<set _individualCosts += 25>>
+		<<case "food">>
+			<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Costs of filler food for slave stuffing; 2 liters:</i>
+			<<print cashFormat(($foodCost))>>
+			<<set _individualCosts += ($foodCost)>>
+		<<case "curative" "aphrodisiac" "tightener">>
+			<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Costs of specially formulated drug mixtures for enemas; 2 liters:</i>
+			@@.yellowgreen;<<print cashFormat((25+($drugsCost*2)))>>@@
+			<<set _individualCosts += (25+($drugsCost*2))>>
+		<</switch>>
+	<</if>>
+	<<switch $args[0].drugs>>
+	<<case "anti-aging cream">>
+		<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Anti-aging creams:</i>
+		<<print cashFormat(($drugsCost*10))>>
+		<<set _individualCosts += ($drugsCost*10)>>
+	<<case "female hormone injections" "male hormone injections">>
+		<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Hormonal injections:</i>
+		@@.yellowgreen;<<print cashFormat(($drugsCost*5))>>@@
+		<<set _individualCosts += ($drugsCost*5)>>
+	<<case "growth stimulants">>
+		<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Growth stimulants:</i>
+		@@.yellowgreen;<<print cashFormat(($drugsCost*5))>>@@
+		<<set _individualCosts += ($drugsCost*5)>>
+	<<case "intensive breast injections" "intensive butt injections" "intensive penis enhancement" "intensive testicle enhancement" "intensive lip injections" "hyper breast injections" "hyper butt injections" "hyper penis enhancement" "hyper testicle enhancement" "hyper lip injections">>
+		<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Intensive drugs:</i>
+		@@.yellowgreen;<<print cashFormat($drugsCost*5)>>@@
+		<<set _individualCosts += $drugsCost*5>>
+	<<case "sag-B-gone">>
+		<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Questionable infomercial creams:</i>
+		@@.yellowgreen;<<print cashFormat(Math.trunc($drugsCost/10))>>@@
+		<<set _individualCosts += ($drugsCost/10)>>
+	<<case "no drugs" "none">>
+	<<default>>
+		<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Standard drugs:</i>
+		@@.yellowgreen;<<print cashFormat(($drugsCost*2))>>@@
+		<<set _individualCosts += ($drugsCost*2)>>
+	<</switch>>
+	<<if $args[0].curatives == 1 && $args[0].assignmentVisible != 1>>
+	<<elseif $args[0].curatives > 0>>
+		<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Health drugs:</i>
+		@@.yellowgreen;<<print cashFormat($drugsCost+($args[0].curatives*$drugsCost))>>@@
+		<<set _individualCosts += $drugsCost+($args[0].curatives*$drugsCost)>>
+	<</if>>
+	<<if ($args[0].aphrodisiacs !== 0)>>
+		<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Aphrodisiacs/Anaphrodisiacs:</i>
+		@@.yellowgreen;<<print cashFormat(Math.trunc($drugsCost*Math.abs($args[0].aphrodisiacs)))>>@@
+		<<set _individualCosts += $drugsCost*Math.abs($args[0].aphrodisiacs)>>
+	<</if>>
+	<<if ($args[0].hormones != 0)>>
+		<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Hormones:</i>
+		@@.yellowgreen;<<print cashFormat((Math.trunc($drugsCost*Math.abs($args[0].hormones)*0.5)))>>@@
+		<<set _individualCosts += Math.trunc($drugsCost*Math.abs($args[0].hormones)*0.5)>>
+	<</if>>
+	<<if ($args[0].bodySwap > 0)>>
+		<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>JS-Suppressants:</i>
+		@@.yellowgreen;<<print cashFormat(($drugsCost*10*$args[0].bodySwap))>>@@
+		<<set _individualCosts += Math.trunc($drugsCost*10*$args[0].bodySwap)>>
+	<</if>>
+	<<if ($args[0].preg == -1) && isFertile($args[0])>>
+		<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Contraceptives:</i>
+		@@.yellowgreen;<<print cashFormat((Math.trunc($drugsCost*0.5)))>>@@
+		<<set _individualCosts += Math.trunc($drugsCost*0.5)>>
+	<</if>>
+	<<if ($studio == 1)>>
+		<<if ($args[0].pornFameSpending > 0)>>
+			<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Publicity:</i>
+			@@.yellowgreen;<<print cashFormat($args[0].pornFameSpending/$PCSlutContacts)>>@@
+			<<set _individualCosts += ($args[0].pornFameSpending/$PCSlutContacts)>>
+		<</if>>
+	<</if>> <<set _total += Math.trunc(_individualCosts)>>
+	<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__Predicted expense__: @@.red;<<print cashFormat(Math.trunc(_individualCosts))>>@@
+	<<if $assistantPower > 0>>
+		<<if $args[0].lastWeeksCashIncome > 0>>
+			<br>&nbsp;&nbsp;&nbsp;&nbsp;Income: @@.yellowgreen;¤<<print $args[0].lastWeeksCashIncome>>@@
+			<<set _total = (Math.trunc($args[0].lastWeeksCashIncome - _individualCosts))>>
+			<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__Total__:
+			<<if _total > 0>>
+				@@.yellowgreen;<<print cashFormat(Math.trunc(_total))>>@@
+			<<else>>
+				@@.red;<<print cashFormat(Math.trunc(_total))>>@@
+			<</if>>
+		<</if>>
+	<</if>>
+	
+	<br>&nbsp;&nbsp;&nbsp;&nbsp;
+	<<if $args[0].origin != 0>>
+		$args[0].origin<br>&nbsp;&nbsp;&nbsp;&nbsp;
+	<</if>>
+	<<if $args[0].slaveCost < 0>>
+		You bought her for: @@.red;¤$args[0].slaveCost@@.
+		<<set _Cost = $args[0].slaveCost>>
+	<<elseif $args[0].slaveCost == 0>>
+		You spent nothing to aquire her.
+		<<set _Cost = $args[0].slaveCost>>
+	<<else>>
+		You have no record of how much <<if $args[0].origin != 0>>this<<else>>she originally<</if>> cost.
+		<<set _Cost = 0>>
+	<</if>>
+
+	<<if $assistantPower > 0>>
+		<br>&nbsp;&nbsp;&nbsp;&nbsp;
+		<<if $args[0].lifetimeCashExpenses < 0>>
+			In her <<if $args[0].weekAcquired > 0>>$args[0].weekAcquired weeks<<else>>time<</if>> with you, she has cost @@.red;¤$args[0].lifetimeCashExpenses@@.
+			<<set _Expense = $args[0].lifetimeCashExpenses>>
+		<<else>>
+			You have no record of her costing you any ¤.
+			<<set _Expense = 0>>
+		<</if>>
+
+		<br>&nbsp;&nbsp;&nbsp;&nbsp;
+		<<if $args[0].lifetimeCashIncome > 0>>
+			In her <<if $args[0].weekAcquired > 0>>$args[0].weekAcquired weeks<<else>>time<</if>> with you, she has earned @@.yellowgreen;¤$args[0].lifetimeCashIncome@@.
+			<<set _Income = $args[0].lifetimeCashIncome>>
+		<<else>>
+			You have no record of her making you any ¤.
+			<<set _Income = 0>>
+		<</if>>
+		
+		<br>&nbsp;&nbsp;&nbsp;&nbsp;
+		Overall, 
+		<<if (_Income + _Cost + _Expense) > 0>>
+			you have made ¤@@.yellowgreen;<<print (_Income + _Cost + _Expense)>>@@ net from her labors.
+		<<elseif (_Income + _Cost + _Expense) == 0>>
+			she is even in cost and income.
+		<<else>>
+			she has cost you @@.red;¤<<print (_Income + _Cost + _Expense)>>@@.
+		<</if>>
+	<</if>>
+<</widget>>
+
+
+<<widget "setupLastWeeksCash">>
+/*Feel free to add categories.  Just make sure to display them in costsBudget.tw as well!*/
+<<set $lastWeeksCashIncome = {
+/*Slave Jobs*/
+whore: 0,
+rest: 0,
+fucktoy: 0,
+subordinateSlave: 0,
+houseServant: 0,
+confined: 0,
+publicServant: 0,
+classes: 0,
+milked: 0,
+extraMilk: 0, /*milk from slaves doing other things*/
+gloryhole: 0,
+porn: 0,
+
+recruiter: 0,
+
+
+/*Slaves in general*/
+fuckdolls:0,
+menialTrades:0,
+menialBioreactors: 0,
+
+slaveTransfer:0,
+fuckdollsTransfer:0,
+menialTradesTransfer:0,
+menialBioreactorsTransfer: 0,
+babyTransfer: 0,
+menialRetirement: 0,
+
+slaveMod:0,
+slaveSurgery:0,
+slaveUpkeep: 0,
+birth: 0,
+
+/*Buildings*/
+lab: 0,
+brothel: 0,
+brothelAds: 0,
+club: 0,
+clubAds: 0,
+arcade: 0,
+dairy: 0,
+servantsQuarters: 0,
+masterSuite: 0,
+school: 0,
+spa: 0,
+clinic: 0,
+cellblock: 0,
+incubator: 0,
+nursery: 0,
+farmyard: 0,
+pit: 0,
+
+arcologyImprovement:0,
+environment: 0,
+weather: 0,
+
+mercenaries:0,
+peacekeepers: 0,
+specialForces: 0,
+securityExpansion: 0,
+cyberMod: 0,
+
+
+citizenOrphanage:0,
+privateOrphanage:0,
+
+capEx:0,
+futureSocieties: 0,
+schoolBacking: 0,
+policies: 0,
+
+/*Personal Finance*/
+personalBusiness:0,
+personalLivingExpenses:0,
+PCtraining: 0,
+PCmedical: 0,
+PCskills: 0,
+stocksTraded:0, /*trading*/
+stocks:0, /*share growth*/
+fines:0,
+event:0, /*poker night etc.  Try to file things elsewhere if you can.*/
+war: 0,
+
+rents: 0,
+
+cheating: 0,
+total: 0
+
+}>>
+
+<<set $lastWeeksCashExpenses = clone($lastWeeksCashIncome)>>
+<<set $lastWeeksCashProfits = clone($lastWeeksCashIncome)>>
+
+<</widget>>
\ No newline at end of file
diff --git a/src/uncategorized/dairy.tw b/src/uncategorized/dairy.tw
index 0818843d867f30747cf17245d0c15f27575e32b6..7810c9fd99e55a132a4bcf56cc62e33cdbda7407 100644
--- a/src/uncategorized/dairy.tw
+++ b/src/uncategorized/dairy.tw
@@ -326,7 +326,7 @@ $dairyNameCaps
 <</if>>
 
 <<set _Tmult0 = Math.trunc($dairy*1000*$upgradeMultiplierArcology)>>
-<br>$dairyNameCaps can support $dairy milkers. There <<if $dairySlaves == 1>>is<<else>>are<</if>> currently $dairySlaves cow<<if $dairySlaves != 1>>s<</if>>. [[Expand the dairy|Dairy][$cash -= _Tmult0, $dairy += 5, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>> and will increase upkeep costs//
+<br>$dairyNameCaps can support $dairy milkers. There <<if $dairySlaves == 1>>is<<else>>are<</if>> currently $dairySlaves cow<<if $dairySlaves != 1>>s<</if>>. [[Expand the dairy|Dairy][cashX(forceNeg(_Tmult0), "capEx"), $dairy += 5, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>> and will increase upkeep costs//
 
 <<set _Tmult1 = Math.trunc(10000*$upgradeMultiplierArcology)>>
 <br>
@@ -341,7 +341,7 @@ $dairyNameCaps
 		''inactive.'' [[Active|Dairy][$dairyFeedersSetting = 1]]
 	<</if>>
 <<else>>
-	$dairyNameCaps is equipped to feed and clean slaves normally. [[Upgrade the milking machines with intubators|Dairy][$cash -= _Tmult1, $dairyFeedersUpgrade = 1]] //Costs <<print cashFormat(_Tmult1)>> and will increase upkeep costs//
+	$dairyNameCaps is equipped to feed and clean slaves normally. [[Upgrade the milking machines with intubators|Dairy][cashX(forceNeg(_Tmult1), "capEx"), $dairyFeedersUpgrade = 1]] //Costs <<print cashFormat(_Tmult1)>> and will increase upkeep costs//
 
 <</if>>
 
@@ -377,7 +377,7 @@ $dairyNameCaps
 		''inactive.'' [[Activate|Dairy][$dairyStimulatorsSetting = 1]]
 	<</if>>
 <<else>>
-	$dairyNameCaps does not automatically sodomize. [[Upgrade the cockmilking machines with sodomizers|Dairy][$cash -= _Tmult1, $dairyStimulatorsUpgrade = 1]] //Costs <<print cashFormat(_Tmult1)>> and will increase upkeep costs//
+	$dairyNameCaps does not automatically sodomize. [[Upgrade the cockmilking machines with sodomizers|Dairy][cashX(forceNeg(_Tmult1), "capEx"), $dairyStimulatorsUpgrade = 1]] //Costs <<print cashFormat(_Tmult1)>> and will increase upkeep costs//
 <</if>>
 
 <<set _Tmult2 = Math.trunc(5000*$upgradeMultiplierArcology)>>
@@ -386,7 +386,7 @@ $dairyNameCaps
 <<if $dairyPrepUpgrade == 1>>
 	$dairyNameCaps features a preparatory raper designed to gape slaves for integration.
 <<else>>
-	$dairyNameCaps's industrial machines can only accept slaves with loose holes. [[Install a preparatory raper|Dairy][$cash -= _Tmult2, $dairyPrepUpgrade = 1]] //Costs <<print cashFormat(_Tmult2)>>//
+	$dairyNameCaps's industrial machines can only accept slaves with loose holes. [[Install a preparatory raper|Dairy][cashX(forceNeg(_Tmult2), "capEx"), $dairyPrepUpgrade = 1]] //Costs <<print cashFormat(_Tmult2)>>//
 <</if>>
 <</if>>
 
@@ -402,7 +402,7 @@ $dairyNameCaps
 		''only when necessary,'' allowing obedient cows freedom to range around. [[Restrain the cows|Dairy][$dairyRestraintsSetting = 1, $dairyFeedersSettingChanged = 1]]
 	<</if>>
 <<else>>
-	$dairyNameCaps is not equipped to restrain recalcitrant cows. [[Equip the dairy with milking racks|Dairy][$cash -= _Tmult2, $dairyRestraintsUpgrade = 1]] //Costs <<print cashFormat(_Tmult2)>>//
+	$dairyNameCaps is not equipped to restrain recalcitrant cows. [[Equip the dairy with milking racks|Dairy][cashX(forceNeg(_Tmult2), "capEx"), $dairyRestraintsUpgrade = 1]] //Costs <<print cashFormat(_Tmult2)>>//
 <</if>>
 
 <<if ($seeHyperPreg == 1) && ($dairyRestraintsSetting == 2) && ($dairyStimulatorsSetting == 2) && ($dairyFeedersSetting == 2) && ($dairyPregSetting >= 1)>>
@@ -410,7 +410,7 @@ $dairyNameCaps
 	<<if $dairyHyperPregRemodel == 1>>
 		$dairyNameCaps's milking racks have been remodeled to allow cows' abnormal pregnancies room to grow.
 	<<else>>
-		$dairyNameCaps's milking racks can be remodeled to hold hyper-pregnant cattle. [[Expand the milking racks|Dairy][$cash -= _Tmult1, $dairyHyperPregRemodel = 1]] //Costs <<print cashFormat(_Tmult1)>>//
+		$dairyNameCaps's milking racks can be remodeled to hold hyper-pregnant cattle. [[Expand the milking racks|Dairy][cashX(forceNeg(_Tmult1), "capEx"), $dairyHyperPregRemodel = 1]] //Costs <<print cashFormat(_Tmult1)>>//
 	<</if>>
 <</if>>
 
@@ -433,7 +433,7 @@ $dairyNameCaps
 			$dairyNameCaps is currently set to normal operation, and will allow the breasts of slimmer slaves to expand due to milking. [[Set milkers to preserve small breast sizes|Dairy][$dairySlimMaintain = 1]] //NOTE: This will NOT remove existing lactation implants//
 		<</if>>
 	<<else>>
-		Dairy cows' breasts will expand normally as a result of the milking process. [[Optimize the milking process to preserve small breast sizes|Dairy][$cash -= _Tmult2, $dairySlimMaintainUpgrade = 1, $dairySlimMaintain = 1]] //Costs <<print cashFormat(_Tmult2)>>//
+		Dairy cows' breasts will expand normally as a result of the milking process. [[Optimize the milking process to preserve small breast sizes|Dairy][cashX(forceNeg(_Tmult2), "capEx"), $dairySlimMaintainUpgrade = 1, $dairySlimMaintain = 1]] //Costs <<print cashFormat(_Tmult2)>>//
 	<</if>>
 <<elseif $arcologies[0].FSSlimnessEnthusiast > 20>>
 	<br>
@@ -445,7 +445,7 @@ $dairyNameCaps
 			$dairyNameCaps is currently set to normal operation, and will allow the breasts of slimmer slaves to expand due to milking. [[Set milkers to preserve small breast sizes|Dairy][$dairySlimMaintain = 1]] //NOTE: This will NOT remove existing lactation implants//
 		<</if>>
 	<<else>>
-		Dairy cows' breasts will expand normally as a result of the milking process. [[Optimize the milking process to preserve small breast sizes|Dairy][$cash -= _Tmult2, $dairySlimMaintainUpgrade = 1, $dairySlimMaintain = 1]] //Costs <<print cashFormat(_Tmult2)>>//
+		Dairy cows' breasts will expand normally as a result of the milking process. [[Optimize the milking process to preserve small breast sizes|Dairy][cashX(forceNeg(_Tmult2), "capEx"), $dairySlimMaintainUpgrade = 1, $dairySlimMaintain = 1]] //Costs <<print cashFormat(_Tmult2)>>//
 	<</if>>
 <</if>>
 
@@ -492,7 +492,7 @@ $dairyNameCaps
 			In addition to the standard milking machines, $dairyName includes numerous hose hookups for menial Bioreactors. When there's space, any menial milkers you own can be placed in any empty space and connected.
 		<</if>>
 	<<else>>
-		There is no provision for milking menial Bioreactors. [[Add hose hookups|Dairy][$cash -= _Tmult1, $dairyUpgradeMenials = 1]] //Costs <<print cashFormat(_Tmult1)>>//
+		There is no provision for milking menial Bioreactors. [[Add hose hookups|Dairy][cashX(forceNeg(_Tmult1), "capEx"), $dairyUpgradeMenials = 1]] //Costs <<print cashFormat(_Tmult1)>>//
 	<</if>>
 <</if>>
 
diff --git a/src/uncategorized/dairyReport.tw b/src/uncategorized/dairyReport.tw
index 706c14cef6d17023f3de8c3ac251318eba317f7a..4f1f0cb2837ec6f08720f41289b44b16c7a6be72 100644
--- a/src/uncategorized/dairyReport.tw
+++ b/src/uncategorized/dairyReport.tw
@@ -453,15 +453,18 @@
 		<<set $slaves[$i].boobs += _growth>>
 	<</if>>
 	<<if $slaves[$i].prostate == 1>>
-		<<set $slaves[$i].prostate = 2, $slaves[$i].health -= 10, $cash -= $surgeryCost>>
+		<<set $slaves[$i].prostate = 2, $slaves[$i].health -= 10>>
+		<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $slaves[$i])>>
 	<</if>>
 	<<if $slaves[$i].vasectomy == 1>>
-		<<set $slaves[$i].vasectomy = 0, $slaves[$i].health -= 10, $cash -= $surgeryCost>>
+		<<set $slaves[$i].vasectomy = 0, $slaves[$i].health -= 10,>>
+		<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $slaves[$i])>>
 	<</if>>
 	<<if ($dairySlimMaintain == 0)>>
 		<<if $dairyImplantsSetting <= 1>>
 			<<if ($slaves[$i].lactation < 2) && ($slaves[$i].boobs > 300 || $slaves[$i].balls == 0 || $slaves[$i].lactation == 1 || $dairyImplantsSetting == 1)>>
-				<<set $slaves[$i].lactation = 2, $slaves[$i].lactationDuration = 2, $slaves[$i].health -= 10, $cash -= $surgeryCost>>
+				<<set $slaves[$i].lactation = 2, $slaves[$i].lactationDuration = 2, $slaves[$i].health -= 10>>
+				<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $slaves[$i])>>
 			<</if>>
 		<<elseif $dairyImplantsSetting == 3>>
 			<<if ($slaves[$i].lactation < 1) && ($slaves[$i].boobs > 300 || $slaves[$i].balls == 0)>>
@@ -846,11 +849,11 @@
 				<</if>>
 			<<elseif ($slaves[$i].pregKnown == 1)>>
 				<<if ($dairyPregSetting > 2)>>
-					<<set $cash += 100>>
+					<<run cashX(100, "milked", $slaves[$i])>>
 				<<elseif ($dairyPregSetting > 1)>>
-					<<set $cash += 50>>
+					<<run cashX(50, "milked", $slaves[$i])>>
 				<<else>>
-					<<set $cash += 25>>
+					<<run cashX(25, "milked", $slaves[$i])>>
 				<</if>>
 				<<if ($dairyPregSetting > 1) && ($slaves[$i].vagina < 4)>>
 					<<set $slaves[$i].vagina++>>
@@ -879,36 +882,47 @@
 	<<set _tempCash = $cash>>
 	<<set _seed = (100*$bioreactorsXY) + (100*$bioreactorsHerm), _cumWeek += _seed>>
 	<<if ($arcologies[0].FSPastoralistLaw == 1)>>
-		<<set $cash += _seed*random(40,50)>>
+		<<set _cashX = _seed*random(40,50)>>
+		<<run cashX(_cashX, "menialBioreactors")>>
 	<<elseif ($arcologies[0].FSPastoralist != "unset")>>
-		<<set $cash += _seed*(random(25,35)+Math.trunc($arcologies[0].FSPastoralist/10))>>
+		<<set _cashX = _seed*(random(25,35)+Math.trunc($arcologies[0].FSPastoralist/10))>>
+		<<run cashX(_cashX, "menialBioreactors")>>
 	<<else>>
-		<<set $cash += _seed*random(25,35)>>
+		<<set _cashX = _seed*random(25,35)>>
+		<<run cashX(_cashX, "menialBioreactors")>>
 	<</if>>
 	<<set _seed = (2*$bioreactorsXX) + (2*$bioreactorsHerm), _femCumWeek += _seed>>
 	<<if ($arcologies[0].FSPastoralistLaw == 1)>>
-		<<set $cash += _seed*random(40,50)>>
+		<<set _cashX = _seed*random(40,50)>>
+		<<run cashX(_cashX, "menialBioreactors")>>
 	<<elseif ($arcologies[0].FSPastoralist != "unset")>>
-		<<set $cash += _seed*(random(25,35)+Math.trunc($arcologies[0].FSPastoralist/10))>>
+		<<set _cashX = _seed*(random(25,35)+Math.trunc($arcologies[0].FSPastoralist/10))>>
+		<<run cashX(_cashX, "menialBioreactors")>>
 	<<else>>
-		<<set $cash += _seed*random(25,35)>>
+		<<set _cashX = _seed*random(25,35)>>
+		<<run cashX(_cashX, "menialBioreactors")>>
 	<</if>>
 	<<set _seed = (800*$bioreactorsXX) + (700*$bioreactorsBarren) + (600*$bioreactorsXY) + (600*$bioreactorsHerm), _milkWeek += _seed>>
 	<<if ($arcologies[0].FSPastoralistLaw == 1)>>
-		<<set $cash += _seed*(13+Math.trunc($arcologies[0].FSPastoralist/30))>>
+		<<set _cashX = _seed*(13+Math.trunc($arcologies[0].FSPastoralist/30))>>
+		<<run cashX(_cashX, "menialBioreactors")>>
 	<<elseif ($arcologies[0].FSPastoralist != "unset")>>
-		<<set $cash += _seed*(8+Math.trunc($arcologies[0].FSPastoralist/30))>>
+		<<set _cashX = _seed*(8+Math.trunc($arcologies[0].FSPastoralist/30))>>
+		<<run cashX(_cashX, "menialBioreactors")>>
 	<<else>>
-		<<set $cash += _seed*9>>
+		<<set _cashX = _seed*9>>
+		<<run cashX(_cashX, "menialBioreactors")>>
 	<</if>>
 	<br><br>_Tadd permanently converted biological "machine<<if _Tadd > 1>>s<</if>>" produce<<if _Tadd == 1>>s<</if>> @@.yellowgreen;<<print cashFormat($cash-_tempCash)>>@@ income.
 <</if>>
 
 <<if $inflatedSlavesMilk > 0>>
-	<<set $cash -= Math.trunc(((600*($inflatedSlavesMilk)+8)+random(50,200)))>>
+	<<set _cashX -= Math.trunc(((600*($inflatedSlavesMilk)+8)+random(50,200)))>>
+	<<run cashX(_cashX, "milked")>>
 <</if>>
 <<if $inflatedSlavesCum > 0>>
-	<<set $cash -= Math.trunc(((300*($inflatedSlavesCum+8))+random(25,100)))>>
+	<<set _cashX -= Math.trunc(((300*($inflatedSlavesCum+8))+random(25,100)))>>
+	<<run cashX(_cashX, "milked")>>
 <</if>>
 
 <<set _profits = $cash-_oldCash>>
diff --git a/src/uncategorized/economics.tw b/src/uncategorized/economics.tw
index fe14d337c86205aef6c95ea4cd28021be16efb60..7887fed69159395ab3469f5fae13733319270254 100644
--- a/src/uncategorized/economics.tw
+++ b/src/uncategorized/economics.tw
@@ -31,7 +31,7 @@
 	<br><br>
 	<<if $corpIncorporated == 0>>
 		<span id="incorporate">
-		You have not yet committed funds to create a publicly traded slave trading corporation. <<link "Lay the groundwork for incorporation">><<set $corpIncorporated = 1>><<set $sharePrice = 10>><<set $oldSharePrice = $sharePrice>><<set $personalShares = 2000>><<set $cash -= 30000>><<set $publicShares = 1000>><<set $corpCash = 20000>><<set $generalAssets = 500>><<set $slaveAssets = 1000>><<set $entrapmentAssets = 500>><<set $captureAssets = 500>><<set $trainingAssets = 500>><<set $surgicalAssets = 500>><<set $drugAssets = 500>><<replace "#incorporate">><<print "The groundwork has been laid for the incorporation of a publicly traded slave trading corporation. The IPO will involve 1000 shares at <<print cashFormat(10)>>/share.">><</replace>><</link>> //Costs <<print cashFormat(30000)>>//
+		You have not yet committed funds to create a publicly traded slave trading corporation. <<link "Lay the groundwork for incorporation">><<set $corpIncorporated = 1>><<set $sharePrice = 10>><<set $oldSharePrice = $sharePrice>><<set $personalShares = 2000>><<run cashX(-30000, "stocksTraded")>><<set $publicShares = 1000>><<set $corpCash = 20000>><<set $generalAssets = 500>><<set $slaveAssets = 1000>><<set $entrapmentAssets = 500>><<set $captureAssets = 500>><<set $trainingAssets = 500>><<set $surgicalAssets = 500>><<set $drugAssets = 500>><<replace "#incorporate">><<print "The groundwork has been laid for the incorporation of a publicly traded slave trading corporation. The IPO will involve 1000 shares at <<print cashFormat(10)>>/share.">><</replace>><</link>> //Costs <<print cashFormat(30000)>>//
 		</span>
 	<<else>>
 		<<include "Corporation Developments">>
@@ -107,7 +107,7 @@
 		<div class="content">
 			<<if $corpIncorporated == 0>>
 				<span id="incorporate">
-				You have not yet committed funds to create a publicly traded slave trading corporation. <<link "Lay the groundwork for incorporation">><<set $corpIncorporated = 1>><<set $sharePrice = 10>><<set $oldSharePrice = $sharePrice>><<set $personalShares = 2000>><<set $cash -= 30000>><<set $publicShares = 1000>><<set $corpCash = 20000>><<set $generalAssets = 500>><<set $slaveAssets = 1000>><<set $entrapmentAssets = 500>><<set $captureAssets = 500>><<set $trainingAssets = 500>><<set $surgicalAssets = 500>><<set $drugAssets = 500>><<replace "#incorporate">><<print "The groundwork has been laid for the incorporation of a publicly traded slave trading corporation. The IPO will involve 1000 shares at <<print cashFormat(10)>>/share.">><</replace>><</link>> //Costs <<print cashFormat(30000)>>//
+					You have not yet committed funds to create a publicly traded slave trading corporation. <<link "Lay the groundwork for incorporation">><<set $corpIncorporated = 1>><<set $sharePrice = 10>><<set $oldSharePrice = $sharePrice>><<set $personalShares = 2000>><<run cashX(-30000, "stocksTraded")>><<set $publicShares = 1000>><<set $corpCash = 20000>><<set $generalAssets = 500>><<set $slaveAssets = 1000>><<set $entrapmentAssets = 500>><<set $captureAssets = 500>><<set $trainingAssets = 500>><<set $surgicalAssets = 500>><<set $drugAssets = 500>><<replace "#incorporate">><<print "The groundwork has been laid for the incorporation of a publicly traded slave trading corporation. The IPO will involve 1000 shares at <<print cashFormat(10)>>/share.">><</replace>><</link>> //Costs <<print cashFormat(30000)>>//
 				</span>
 			<<else>>
 				<<include "Corporation Developments">>
diff --git a/src/uncategorized/endWeek.tw b/src/uncategorized/endWeek.tw
index ce47dc0a47b4a68bb897456b26da9403cec8564a..9b93558690477814bbd75495d90e2ea532f8bbe2 100644
--- a/src/uncategorized/endWeek.tw
+++ b/src/uncategorized/endWeek.tw
@@ -111,6 +111,9 @@
 
 <<set $TSS.schoolSale = 0, $GRI.schoolSale = 0, $SCP.schoolSale = 0, $LDE.schoolSale = 0, $TGA.schoolSale = 0, $HA.schoolSale = 0, $TFS.schoolSale = 0, $TCR.schoolSale = 0, $independenceDay = 0, $showEncyclopedia = 0, $racialVarieties = [], $shelterGirlsIDs = [], $oldWeek = $week, $cashLastWeek = $cash>>
 
+<<setupLastWeeksCash>>
+<<set $lastWeeksErrors = "Errors:">>
+
 <<set $retiree = 0>>
 <<set $expiree = 0>>
 
diff --git a/src/uncategorized/genericPlotEvents.tw b/src/uncategorized/genericPlotEvents.tw
index 96a748aeb64e878d113a52e8e42d2eb33a2fb7e5..c4e124a1eeb73763f13f33ba46a11df4d59ddc57 100644
--- a/src/uncategorized/genericPlotEvents.tw
+++ b/src/uncategorized/genericPlotEvents.tw
@@ -20,7 +20,7 @@
 <<else>>
 	<<goto "Random Nonindividual Event">>
 <</if>>
-<<set $cash += 500*$slaves.length>>
+<<run cashX(500*$slaves.length, "events")>>
 
 Early one morning, you hear convulsive dry heaving coming from one of the bathrooms. On investigation, it seems that $slaves[_genPlot].slaveName woke up feeling terribly nauseous. $He's in no danger, but you've hardly checked $him over before more slaves stagger in. Every one of your slaves on curatives has been struck by the mysterious malady and has @@.red;sickened.@@
 <br><br>
@@ -857,7 +857,7 @@ A screen opposite your desk springs to life, <<if $assistant == 0>>showing your
 <br><<link "Demand further compensation">>
 	<<replace "#result">>
 	You muster all the contractual remedies available to you and join the crowd of slaveowners laying into the hapless manufacturer. Of course, with so many attackers, there is as much infighting between them as conflict with the helpless enemy, since everyone knows the business will go bankrupt before everyone gets paid. Nevertheless you @@.yellowgreen;approximately double@@ the money you make out of the situation.
-	<<set $cash += 500*$slaves.length>>
+	<<run cashX(500*$slaves.length, "events")>>
 	<</replace>>
 <</link>>
 <br><<link "Force surgical repairs">>
@@ -978,7 +978,7 @@ A screen opposite your desk springs to life, <<if $assistant == 0>>showing your
 <br><<link "Demand further compensation">>
 	<<replace "#result">>
 	You muster all the contractual remedies available to you and join the crowd of slaveowners laying into the hapless manufacturer. Of course, with so many attackers, there is as much infighting between them as conflict with the helpless enemy, since everyone knows the business will go bankrupt before everyone gets paid. Nevertheless you @@.yellowgreen;approximately double@@ the money you make out of the situation, plenty to deal with the pregnancies.
-		<<set $cash += 2000*$slaves.length>>
+		<<run cashX(2000*$slaves.length, "events")>>
 	<</replace>>
 <</link>>
 <br><<link "Force surgical repairs and compensation">>
@@ -1047,7 +1047,7 @@ A screen opposite your desk springs to life, <<if $assistant == 0>>showing your
 <<if $PStrip != 3>>
 	<<if $cash >= $contractCost>>
 	<<link "Enslave $him">>
-		<<set $cash -= $contractCost>>
+		<<run cashX(forceNeg($contractCost), "slaveTransfer", $activeSlave)>>
 		<<replace "#result">>
 		<<if $PStrip == 1>>
 			$He sobs with gratitude as the biometric scanners scrupulously record $his every particular as belonging not to a person but to a piece of human property. The medical scan discloses that $his aphrodisiac addiction is very new: $he will probably be able to kick the habit in short order if you decide to withhold further doses.
@@ -1065,14 +1065,14 @@ A screen opposite your desk springs to life, <<if $assistant == 0>>showing your
 		<<replace "#result">>
 		The cubicle _heU takes you back into is small, but clean and well-kept. _HeU gives you a kiss on the cheek. "That's not part of the Arcology Tour. Sorry. Here's the start of the real tour." <<if $PC.dick == 1>>_HeU sucks you to full mast while shucking off _hisU skimpy clothing<<if $PC.vagina == 1>>, giggling appreciatively at your pussy and lavishing attention on it with _hisU hands<</if>>. Then _heU turns around and slides you into _hisU <<if _heU == "he">>ass<<else>>pussy<</if>> with the ease of long practice. After a good long standing fuck, _heU begs you to "finish the tour" in _hisU ass and then "pay the tour guide" by coming in _hisU mouth.<<else>>_HeU giggles. "Tour's a little different for a lady like you, Ma'am. Here," _heU says, and starts to make out with you, pressing you back down onto a bench. _HeU lavishes expert oral attention on your pussy in a series of clever positions that offer every part of _hisU body to you in turn for you to grope, squeeze, and penetrate with your fingers.<</if>> Afterward, as _heU's hurrying back into _hisU clothes, _heU says, "We've got the money you paid to set those rooms up, @@.yellowgreen;here it is.@@ And we're doing pretty good, so we could use a little more working space. We'd like the vacant space next door. We'll furnish it, if you'll let us have it?" @@.green;$arcologies[0].name's prosperity has increased.@@
 		<<set $arcologies[0].prosperity += 2>>
-		<<set $cash += 500>>
+		<<run cashX(500, "events")>>
 		<</replace>>
 	<</link>>
 	<br><<link "Politely decline">>
 		<<replace "#result">>
 		"Aw," _heU says, "you're no fun. Well anyway, we've got the money you paid to set those rooms up, @@.yellowgreen;here it is.@@ And we're doing pretty good, so we could use a little more working space. We'd like the vacant space next door. We'll furnish it, if you'll let us have it?" @@.green;$arcologies[0].name's prosperity has increased.@@
 		<<set $arcologies[0].prosperity += 2>>
-		<<set $cash += 500>>
+		<<run cashX(500, "events")>>
 		<</replace>>
 	<</link>>
 <</if>>
@@ -1302,7 +1302,7 @@ A screen opposite your desk springs to life, <<if $assistant == 0>>showing your
 <<link "Agree">>
 	<<replace "#result">>
 	You dispatch your personal VTOL bird immediately. It lands <<if $PAidTarget == "volleyballTeam">>beside the bus<<else>>on the roof of the building<</if>> they're sheltering in, and brings them across the closest border and into a more functional country. You receive a call expressing their heartfelt thanks and promising to @@.green;spread the word@@ about how you helped them escape, and a wire transfer of their @@.yellowgreen;payment@@ for the airlift.
-	<<set $cash += 2000>>
+	<<run cashX(2000, "events")>>
 	<<set $rep += 100>>
 	<</replace>>
 <</link>>
@@ -1333,7 +1333,7 @@ A screen opposite your desk springs to life, <<if $assistant == 0>>showing your
 	<<replace "#result">>
 	<<for _genPlot = 0; _genPlot < _newSlaves.length; _genPlot++>>
 		<<slaveCost _newSlaves[_genPlot]>>
-		<<set $cash += $slaveCost>>
+		<<run cashX(forceNeg($slaveCost), "slaveTransfer")>>
 	<</for>>
 	Prisoners @@.green;sold.@@
 	<</replace>>
diff --git a/src/uncategorized/growthResearchInstitute.tw b/src/uncategorized/growthResearchInstitute.tw
index cead9b5cfa20355ad8d5acd2449d1984a76d0c4f..0bad0a3bcf41db32f5bc5c2ef6e7ed1b5ef3962b 100644
--- a/src/uncategorized/growthResearchInstitute.tw
+++ b/src/uncategorized/growthResearchInstitute.tw
@@ -25,11 +25,11 @@
 
 <<setLocalPronouns $activeSlave>>
 <<if $cash >= $slaveCost>>
-	<br>[["Buy " + $him + " and check out other slaves to order"|Growth Research Institute][$cash -= $slaveCost, $GRI.schoolSale = 0, $GRI.studentsBought += 1, $newSlaves.push($activeSlave), $introType = "multi", $slavesSeen+=1]]
+	<br>[["Buy " + $him + " and check out other slaves to order"|Growth Research Institute][$cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave), $GRI.schoolSale = 0, $GRI.studentsBought += 1, $newSlaves.push($activeSlave), $introType = "multi", $slavesSeen+=1]]
 	<<if $newSlaves.length == 0>>
-		<br>[["Buy " + $his + " slave contract"|New Slave Intro][$cash -= $slaveCost, $GRI.schoolSale = 0, $GRI.studentsBought += 1, $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "Main"]]
+		<br>[["Buy " + $his + " slave contract"|New Slave Intro][$cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave), $GRI.schoolSale = 0, $GRI.studentsBought += 1, $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "Main"]]
 	<<else>>
-		<br>[[["Buy " + $him + " and finish your order of slaves"|Bulk Slave Intro][$cash -= $slaveCost, $GRI.schoolSale = 0, $GRI.studentsBought += 1, $newSlaves.push($activeSlave)]]
+		<br>[[["Buy " + $him + " and finish your order of slaves"|Bulk Slave Intro][$cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave), $GRI.schoolSale = 0, $GRI.studentsBought += 1, $newSlaves.push($activeSlave)]]
 	<</if>>
 <<else>>
 	//You lack the necessary funds to buy this slave.//
diff --git a/src/uncategorized/hgApplication.tw b/src/uncategorized/hgApplication.tw
index fc4ed01e7d1a553c27689c496126b564801da580..fbb77f19184cfff22d7366a06712d4698a9cf387 100644
--- a/src/uncategorized/hgApplication.tw
+++ b/src/uncategorized/hgApplication.tw
@@ -334,7 +334,7 @@ In spare moments $he teaches $activeSlave.slaveName how to prostitute _himself2.
 				<<set _piercingForbidden = 1, $activeSlave.earPiercing = 0>>
 			<<else>>
 				$HeadGirl.slaveName knows that $activeSlave.slaveName needs help adjusting to life as a slave _girl2, so $he has the slave's ears pierced. A little feminine touch can make a big difference.
-				<<set $cash -= $modCost>>
+				<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>>
 				<<break>>
 			<</if>>
 		<</if>>
@@ -345,7 +345,7 @@ In spare moments $he teaches $activeSlave.slaveName how to prostitute _himself2.
 				<<set _piercingForbidden = 1, $activeSlave.nosePiercing = 0>>
 			<<else>>
 				$HeadGirl.slaveName knows that $activeSlave.slaveName needs help adjusting to life as a slave _girl2, so $he gives the slave a cute little nose piercing. It should help $activeSlave.slaveName see _himself2 as a bit more feminine.
-				<<set $cash -= $modCost>>
+				<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>>
 				<<break>>
 			<</if>>
 		<</if>>
@@ -356,7 +356,7 @@ In spare moments $he teaches $activeSlave.slaveName how to prostitute _himself2.
 				<<set _piercingForbidden = 1, $activeSlave.eyebrowPiercing = 0>>
 			<<else>>
 				$HeadGirl.slaveName knows that $activeSlave.slaveName needs help adjusting to life as a slave _girl2, so $he gives the slave a cute little eyebrow piercing. A slutty touch for a teenage _girl2 should help _him2 feel a little hungrier for cock.
-				<<set $cash -= $modCost>>
+				<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>>
 				<<break>>
 			<</if>>
 		<</if>>
@@ -367,7 +367,7 @@ In spare moments $he teaches $activeSlave.slaveName how to prostitute _himself2.
 				<<set _piercingForbidden = 1, $activeSlave.lipsPiercing = 0>>
 			<<else>>
 				$HeadGirl.slaveName knows that $activeSlave.slaveName needs help adjusting to life as a slave _girl2, so $he has the slave's lower lip pierced. _His2 mouth is for pleasing penises now, so it'll help _him2 if it looks like it.
-				<<set $cash -= $modCost>>
+				<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>>
 				<<break>>
 			<</if>>
 		<</if>>
@@ -378,7 +378,7 @@ In spare moments $he teaches $activeSlave.slaveName how to prostitute _himself2.
 				<<set _piercingForbidden = 1, $activeSlave.navelPiercing = 0>>
 			<<else>>
 				$HeadGirl.slaveName knows that $activeSlave.slaveName needs help adjusting to life as a slave _girl2, so $he has the slave's navel pierced. The prettier _his2 lower half looks, the less reluctant _he2 should feel to take it up the butt.
-				<<set $cash -= $modCost>>
+				<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>>
 				<<break>>
 			<</if>>
 		<</if>>
diff --git a/src/uncategorized/householdLiquidator.tw b/src/uncategorized/householdLiquidator.tw
index 0c6f6a498c19bef99f23638511b9582d71a0285e..6719b40a81cc7c1f8e63cbd339392d7bbfeb583a 100644
--- a/src/uncategorized/householdLiquidator.tw
+++ b/src/uncategorized/householdLiquidator.tw
@@ -33,7 +33,7 @@ The price is <<print cashFormat($slaveCost*3)>>.
 <br><br>
 
 <<if $cash >= $slaveCost*3>>
-	[[Buy their slave contract|Siblings Workaround][$cash -= $slaveCost*3,$nextButton = "Continue",$nextLink = "Main"]]
+	[[Buy their slave contract|Siblings Workaround][$cashX(forceNeg($slaveCost*3), "slaveTransaction", $activeSlave),,$nextButton = "Continue",$nextLink = "Main"]]
 <<else>>
 	//You lack the necessary funds to buy these slaves.//
 <</if>>
@@ -79,7 +79,7 @@ The price is <<print cashFormat($slaveCost*3)>>.<<if $slavesSeen > $slaveMarketL
 <br><br>
 
 <<if $cash >= $slaveCost*3>>
-	[[Buy their slave contract|Mother Daughter Workaround][$cash -= $slaveCost*3,"Continue",$nextLink = "Main"]]
+	[[Buy their slave contract|Mother Daughter Workaround][$cashX(forceNeg($slaveCost*3), "slaveTransaction", $activeSlave),,"Continue",$nextLink = "Main"]]
 <<else>>
 	//You lack the necessary funds to buy these slaves.//
 <</if>>
@@ -121,7 +121,7 @@ The price is <<print cashFormat($slaveCost*4)>>.<<if $slavesSeen > $slaveMarketL
 <br><br>
 
 <<if $cash >= $slaveCost*4>>
-	[[Buy their slave contract|Twins Workaround][$cash -= $slaveCost*4,$nextButton = "Continue",$nextLink = "Main"]]
+	[[Buy their slave contract|Twins Workaround][$cashX(forceNeg($slaveCost*4), "slaveTransaction", $activeSlave),,$nextButton = "Continue",$nextLink = "Main"]]
 <<else>>
 	//You lack the necessary funds to buy these slaves.//
 <</if>>
diff --git a/src/uncategorized/incrementPiercings.tw b/src/uncategorized/incrementPiercings.tw
index 0fd7302b5df7325454e82ada52673e7b60e856b4..63cf9876d9d238c151af52fd480c162839ec530a 100644
--- a/src/uncategorized/incrementPiercings.tw
+++ b/src/uncategorized/incrementPiercings.tw
@@ -3,21 +3,21 @@
 <<if $activeSlave.nipples != "fuckable">>
 	<<if $activeSlave.nipplesPiercing < 2>>
 		<<set $activeSlave.nipplesPiercing += 1>>
-		<<set $cash -= $modCost>>
+		<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>>
 		<<set $degradation += 1>>
 	<</if>>
 <</if>>
 
 <<if $activeSlave.clitPiercing < 2>>
 	<<set $activeSlave.clitPiercing += 1>>
-	<<set $cash -= $modCost>>
+	<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>>
 	<<set $degradation += 1>>
 <</if>>
 
 <<if $activeSlave.vagina != -1>>
 	<<if $activeSlave.vaginaPiercing < 2>>
 		<<set $activeSlave.vaginaPiercing += 1>>
-		<<set $cash -= $modCost>>
+		<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>>
 		<<set $degradation += 1>>
 	<</if>>
 <</if>>
@@ -25,62 +25,62 @@
 <<if $activeSlave.dick > 0>>
 	<<if $activeSlave.dickPiercing < 2>>
 		<<set $activeSlave.dickPiercing += 1>>
-		<<set $cash -= $modCost>>
+		<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>>
 		<<set $degradation += 1>>
 	<</if>>
 <</if>>
 
 <<if $activeSlave.anusPiercing < 2>>
 	<<set $activeSlave.anusPiercing += 1>>
-	<<set $cash -= $modCost>>
+	<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>>
 	<<set $degradation += 1>>
 <</if>>
 
 <<if $activeSlave.lipsPiercing < 2>>
 	<<set $activeSlave.lipsPiercing += 1>>
-	<<set $cash -= $modCost>>
+	<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>>
 	<<set $degradation += 1>>
 <</if>>
 
 <<if $activeSlave.tonguePiercing < 2>>
 	<<set $activeSlave.tonguePiercing += 1>>
-	<<set $cash -= $modCost>>
+	<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>>
 	<<set $degradation += 1>>
 <</if>>
 
 <<if $activeSlave.earPiercing < 2>>
 	<<set $activeSlave.earPiercing += 1>>
-	<<set $cash -= $modCost>>
+	<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>>
 	<<set $degradation += 1>>
 <</if>>
 
 <<if $activeSlave.nosePiercing < 2>>
 	<<set $activeSlave.nosePiercing += 1>>
-	<<set $cash -= $modCost>>
+	<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>>
 	<<set $degradation += 1>>
 <</if>>
 
 <<if $activeSlave.eyebrowPiercing < 2>>
 	<<set $activeSlave.eyebrowPiercing += 1>>
-	<<set $cash -= $modCost>>
+	<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>>
 	<<set $degradation += 1>>
 <</if>>
 
 <<if $activeSlave.navelPiercing < 2>>
 	<<set $activeSlave.navelPiercing += 1>>
-	<<set $cash -= $modCost>>
+	<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>>
 	<<set $degradation += 1>>
 <</if>>
 
 <<if $activeSlave.areolaePiercing < 1>>
 	<<set $activeSlave.areolaePiercing += 1>>
-	<<set $cash -= $modCost>>
+	<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>>
 	<<set $degradation += 1>>
 <</if>>
 
 <<if $activeSlave.corsetPiercing < 1>>
 	<<set $activeSlave.corsetPiercing += 1>>
-	<<set $cash -= $modCost>>
+	<<run cashX(forceNeg($modCost), "slaveMod", $activeSlave)>>
 	<<set $degradation += 1>>
 <</if>>
 
diff --git a/src/uncategorized/jeSlaveDispute.tw b/src/uncategorized/jeSlaveDispute.tw
index bbf51f454344ab82edd093bcd96b53beee009446..30280a6436f75a921a0043eaea192695f4d4e999 100644
--- a/src/uncategorized/jeSlaveDispute.tw
+++ b/src/uncategorized/jeSlaveDispute.tw
@@ -221,7 +221,7 @@
 		<<replace "#result">>
 		You privately inform both parties you'll settle this in favor of the most generous. You instantly receive a single notice of escrow payment contingent on the case going the payer's way. You select the @@.yellowgreen;bigger of the two@@ and decide the matter before returning to bed in a good mood. However, the next day it becomes apparent that although she isn't stupid enough to make a public accusation of corruption, the older woman made use of her few remaining hours of freedom to @@.red;slander@@ your administration of justice.
 		<<set $rep -= 100>>
-		<<set $cash += random(150,200)*10>>
+		<<run cashX(random(150,200)*10, "events")>>
 		<</replace>>
 	<</link>>
 	<br><<link "Settle the dispute in favor of the older woman">>
@@ -239,7 +239,7 @@
 		<</replace>>
 	<</link>>
 	<br><<link "Offer to buy out the contract">>
-		<<set $cash -= $contractCost>>
+		<<run cashX(forceNeg($contractCost), "slaveTransaction")>>
 		<<replace "#result">>
 		You offer to simply buy out the contract, taking the slave for yourself, letting the slave trader out of her side of the deal, and providing for the daughter's medical care. The trader lets it be known amongst her peers that you will make things right no matter the cost to yourself, @@.green;increasing prosperity.@@ The story of the mother willing to be enslaved gets around quickly, @@.green;capturing the hearts@@ of more romantic citizens. The mother, meanwhile, presents herself for enslavement, @@.hotpink;very grateful@@ that you've saved her daughter's life.
 		<br><br>
@@ -253,7 +253,7 @@
 		<<replace "#result">>
 		You privately inform both parties you'll settle this in favor of the most generous. You instantly receive two notices of escrow payments contingent on the case going the payer's way. You select the @@.yellowgreen;bigger of the two,@@ a clear choice, and decide the matter before returning to bed in a good mood. However, the next day it becomes apparent that although he isn't stupid enough to make a public accusation of corruption, the loser is proclaiming that he is @@.red;not pleased@@ with your administration of justice.
 		<<set $rep -= 100>>
-		<<set $cash += random(150,200)*10>>
+		<<run cashX(random(150,200)*10, "events")>>
 		<</replace>>
 	<</link>>
 	<br><<link "Settle the dispute in favor of the accuser">>
@@ -275,7 +275,7 @@
 		<</replace>>
 	<</link>>
 	<br><<link "Compromise on the compensation and offer to buy out the deal">>
-		<<set $cash -= $contractCost>>
+		<<run cashX(forceNeg($contractCost), "slaveTransaction")>>
 		<<replace "#result">>
 		You offer to buy out the deal, paying the breeder and taking the slave yourself, and passing the child off to the buyer. The citizen gets what he wants and speaks @@.green;kindly@@ in public about how you helped smooth over a rather rough dispute. The breeder sends a @@.green;positive note@@ around the industry to the effect that slavers trading with your arcology can expect to be aided in times of need; though the loss of a star mother always stings.
 		<br><br>
@@ -289,7 +289,7 @@
 		<<replace "#result">>
 		You privately inform both parties you'll settle this in favor of the most generous. You instantly receive two notices of escrow payments contingent on the case going the payer's way. You select the @@.yellowgreen;bigger of the two@@ and decide the matter before returning to bed in a good mood. However, the next day it becomes apparent that although he isn't stupid enough to make a public accusation of corruption, the loser is proclaiming that he is @@.red;not pleased@@ with your administration of justice.
 		<<set $rep -= 100>>
-		<<set $cash += random(150,200)*10>>
+		<<run cashX(random(150,200)*10, "events")>>
 		<</replace>>
 	<</link>>
 	<br><<link "Settle the dispute in favor of the accuser">>
@@ -307,7 +307,7 @@
 		<</replace>>
 	<</link>>
 	<br><<link "Offer to buy out the deal">>
-		<<set $cash -= $contractCost>>
+		<<run cashX(forceNeg($contractCost), "slaveTransaction")>>
 		<<replace "#result">>
 		You offer to simply buy out the deal, paying the trainer and taking the slave yourself, and letting the buyer out of the payment. The trainer, on the other hand, lets it be known that you support businessmen, who can trust you to ensure they don't come out second best, @@.green;increasing prosperity.@@ The buyer lets you know privately that he recently had a business deal go bad, so he's in a tough cash situation right now; he's so grateful for your assistance in this embarrassing situation that he talks @@.green;effusively@@ for days to anyone who will listen about your discreet administration of the arcology. The slave, meanwhile, arrives at your penthouse, @@.hotpink;rather hopeful@@ that she's going to a good master.
 		<br><br>
@@ -321,7 +321,7 @@
 		<<replace "#result">>
 		You privately inform both parties you'll settle this in favor of the most generous. You instantly receive two notices of escrow payments contingent on the case going the payer's way. You select the @@.yellowgreen;bigger of the two@@ and decide the matter before returning to bed in a good mood. However, the next day it becomes apparent that although he isn't stupid enough to make a public accusation of corruption, the loser is proclaiming that he is @@.red;not pleased@@ with your administration of justice.
 		<<set $rep -= 100>>
-		<<set $cash += random(150,200)*10>>
+		<<run cashX(random(150,200)*10, "events")>>
 		<</replace>>
 	<</link>>
 	<br><<link "Settle the dispute in favor of the accuser">>
@@ -339,7 +339,7 @@
 		<</replace>>
 	<</link>>
 	<br><<link "Compromise on the compensation and offer to buy out the deal">>
-		<<set $cash -= $contractCost>>
+		<<run cashX(forceNeg($contractCost), "slaveTransaction")>>
 		<<replace "#result">>
 		You offer to buy out the deal, paying the school and taking the slave yourself, and compromising on the demanded compensation. The citizen was looking forward to using the slave in question for breeding stock; like many breeders he cares deeply about his stable and is mollified by the moderate payment, and speaks @@.green;kindly@@ in public about how you helped an innocent breeder protect his prize bloodlines. The school sends a @@.green;positive note@@ around the industry to the effect that schools trading with your arcology can expect to have excessive claims sensibly reduced.
 		<br><br>
@@ -353,7 +353,7 @@
 		<<replace "#result">>
 		You privately inform both parties you'll settle this in favor of the most generous. You instantly receive a single notice of escrow payment contingent on the case going the payer's way. You select the @@.yellowgreen;bigger of the two@@ and decide the matter before returning to bed in a good mood. However, the next day it becomes apparent that although she isn't stupid enough to make a public accusation, the whore has been @@.red;whispering@@ to her peers that you helped the trader cheat her into prostitution. Few citizens care, but there is a faint scent of corruption.
 		<<set $rep -= 50>>
-		<<set $cash += random(150,200)*10>>
+		<<run cashX(random(150,200)*10, "events")>>
 		<</replace>>
 	<</link>>
 	<br><<link "Settle the dispute in favor of the indentured whore">>
@@ -371,7 +371,7 @@
 		<</replace>>
 	<</link>>
 	<br><<link "Buy out the contract and enslave her">>
-		<<set $cash -= $contractCost>>
+		<<run cashX(forceNeg($contractCost), "slaveTransaction")>>
 		<<replace "#result">>
 		You quietly contact the trader and suggest an alternative method of settling the dispute. He is surprised, but agrees readily, chuckling at how the "recalcitrant bitch" is going to be dealt with. To her horror, she finds that your near-total power over deals made in your arcology has been employed to saddle her with additional debts that, under her indentured servitude, she cannot hope to repay. It is then the work of ten minutes to demand payment, and when she cannot pay, demand her body for enslavement. The story of your cunning @@.green;impresses@@ the slave traders, but is @@.red;booed@@ by fairer-minded citizens.
 		<br><br>
@@ -385,7 +385,7 @@
 		<<replace "#result">>
 		You privately inform both parties you'll settle this in favor of the most generous. You instantly receive two notices of escrow payment contingent on the case going the payer's way. You select the @@.yellowgreen;bigger of the two@@ and decide the matter before returning to bed in a good mood. However, the next day it becomes apparent that although he isn't stupid enough to make a public accusation of corruption, the buyer is furious at paying virgin prices for a defiled slave, and is privately @@.red;slandering@@ your administration of justice.
 		<<set $rep -= 100>>
-		<<set $cash += random(150,200)*10>>
+		<<run cashX(random(150,200)*10, "events")>>
 		<</replace>>
 	<</link>>
 	<br><<link "Settle the dispute in favor of the prospective buyer">>
@@ -403,7 +403,7 @@
 		<</replace>>
 	<</link>>
 	<br><<link "Offer to buy out the contract">>
-		<<set $cash -= $contractCost>>
+		<<run cashX(forceNeg($contractCost), "slaveTransaction")>>
 		<<replace "#result">>
 		You offer to simply buy out the contract, taking the slave for yourself. This lets the buyer out of buying her, and the slaveowner gets his money; but it soon becomes apparent that what both of them were really looking for is an opportunity to put one over on the other. Neither is pleased to be denied a petty victory, but they both have the sense to keep their mouths shut. The poor slave, meanwhile, appears in the penthouse entryway, @@.hotpink;hopeful@@ that she's been lucky enough to end up in a less abusive situation.
 		<br><br>
diff --git a/src/uncategorized/labReport.tw b/src/uncategorized/labReport.tw
index c5c1f6b5ce2daeb767c012c8bfc12964a667d613..83a49905524c91909052e4191ce016ba3423f1e8 100644
--- a/src/uncategorized/labReport.tw
+++ b/src/uncategorized/labReport.tw
@@ -5,7 +5,8 @@
 <<if ($researchLab.hired + $researchLab.menials) != 0>>
 	<<if $researchLab.research == "none" && $researchLab.manufacture == "none">>
 		Since the lab is currently not working on any projects it takes contract work and earns you @@.yellowgreen;<<print cashFormat((($researchLab.hired * 3 + $researchLab.menials) * $researchLab.aiModule * 20))>>.@@
-		<<set $cash += (($researchLab.hired * 3 + $researchLab.menials) * $researchLab.aiModule * 20)>>
+		<<set _cashX = (($researchLab.hired * 3 + $researchLab.menials) * $researchLab.aiModule * 20)>>
+		<<run cashX(_cashX, "lab")>>
 	<<elseif $researchLab.research != "none">>
 		<<set $researchLab.productionTime -= (($researchLab.hired * 3) + ($researchLab.menials) * ($researchLab.aiModule))>>
 		<<if $researchLab.productionTime <= 0>>
diff --git a/src/uncategorized/lecoleDesEnculees.tw b/src/uncategorized/lecoleDesEnculees.tw
index 88f7c33ab48363ba29a252a8dfc79b1af4866a92..c455ccaadab7b6451728db8283b8c74b628faa9c 100644
--- a/src/uncategorized/lecoleDesEnculees.tw
+++ b/src/uncategorized/lecoleDesEnculees.tw
@@ -24,11 +24,11 @@
 
 <<setLocalPronouns $activeSlave>>
 <<if $cash >= $slaveCost>>
-	<br>[["Buy " + $him + " and check out other slaves to order"|L'École des Enculées][$cash -= $slaveCost, $LDE.schoolSale = 0, $LDE.studentsBought += 1, $newSlaves.push($activeSlave), $introType = "multi", $slavesSeen+=1]]
+	<br>[["Buy " + $him + " and check out other slaves to order"|L'École des Enculées][cashX(forceNeg($slaveCost), "slaveTransaction"), $LDE.schoolSale = 0, $LDE.studentsBought += 1, $newSlaves.push($activeSlave), $introType = "multi", $slavesSeen+=1]]
 	<<if $newSlaves.length == 0>>
-		<br>[["Buy " + $his + " slave contract"|New Slave Intro][$cash -= $slaveCost, $LDE.schoolSale = 0, $LDE.studentsBought += 1, $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "Main"]]
+		<br>[["Buy " + $his + " slave contract"|New Slave Intro][cashX(forceNeg($slaveCost), "slaveTransaction"), $LDE.schoolSale = 0, $LDE.studentsBought += 1, $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "Main"]]
 	<<else>>
-		<br>[["Buy " + $him + " and finish your order of slaves"|Bulk Slave Intro][$cash -= $slaveCost, $LDE.schoolSale = 0, $LDE.studentsBought += 1, $newSlaves.push($activeSlave)]]
+		<br>[["Buy " + $him + " and finish your order of slaves"|Bulk Slave Intro][cashX(forceNeg($slaveCost), "slaveTransaction"), $LDE.schoolSale = 0, $LDE.studentsBought += 1, $newSlaves.push($activeSlave)]]
 	<</if>>
 <<else>>
 	//You lack the necessary funds to buy this slave.//
diff --git a/src/uncategorized/main.tw b/src/uncategorized/main.tw
index e5981aad54ce9f3850042ae2335dc56c274bb24a..dfa689eff8fca9a8bfe816d8f87080408e8c6a09 100644
--- a/src/uncategorized/main.tw
+++ b/src/uncategorized/main.tw
@@ -67,7 +67,7 @@
 <<if (def _BG && $dojo > 1)>><<set $slavesVisible++>><</if>>
 
 <<set $nextButton = "END WEEK", $nextLink = "End Week", $showEncyclopedia = 1, $encyclopedia = "How to Play">>
-<<set $costs = getCost($slaves)>>
+<<set $costs = predictCost($slaves)>>
 
 <<run FacilityNameCleanup()>>
 <<if ($PC.customTitle == "")>>
diff --git a/src/uncategorized/manageArcology.tw b/src/uncategorized/manageArcology.tw
index 418f1264da7b21869327094cf66e2bdf4ebed8de..ff8b4b04498be48d0c63ba482311ed5c24fbb841 100644
--- a/src/uncategorized/manageArcology.tw
+++ b/src/uncategorized/manageArcology.tw
@@ -258,10 +258,11 @@ __Special Arcology Upgrades__
 <</if>>
 
 <<if ($assistant > 0)>>
-<<if $assistantName == "your personal assistant">>Your personal assistant<<else>>$assistantName<</if>> is using an alternative personality setting, speaking in a sultry, sexual voice, and talking as though the penthouse's sex toys are _hisA body.
-<</if>>
-<<if ($assistant > 1)>>
-_HeA also has charge of all smart piercings in the arcology, and is using _hisA adaptations to sexual duties to improve their effectiveness.
+	<<setAssistantPronouns>>
+	<<if $assistantName == "your personal assistant">>Your personal assistant<<else>>$assistantName<</if>> is using an alternative personality setting, speaking in a sultry, sexual voice, and talking as though the penthouse's sex toys are _hisA body.
+	<<if ($assistant > 1)>>
+		_HeA also has charge of all smart piercings in the arcology, and is using _hisA adaptations to sexual duties to improve their effectiveness.
+	<</if>>
 <</if>>
 
 <br><br>
diff --git a/src/uncategorized/masterSuite.tw b/src/uncategorized/masterSuite.tw
index 814fe559bb4427a97e90742e8bf3af1302dab1b9..1928908a6377442736197dc9e74eb11e0a0d8b04 100644
--- a/src/uncategorized/masterSuite.tw
+++ b/src/uncategorized/masterSuite.tw
@@ -128,7 +128,7 @@ It is full of luxuries of all kinds. The slaves here live free of want or worry,
 	None of your slaves are serving here.
 <</if>>
 
-<br>&nbsp;&nbsp;&nbsp;&nbsp;[[Remodel the suite around a luxurious pit for group sex|Master Suite][$cash -= _Tmult1, $masterSuiteUpgradeLuxury = 2]] //Costs <<print cashFormat(_Tmult1)>>; will encourage fucktoys to fuck each other//
+<br>&nbsp;&nbsp;&nbsp;&nbsp;[[Remodel the suite around a luxurious pit for group sex|Master Suite][cashX(forceNeg(_Tmult1), "capEx"), $masterSuiteUpgradeLuxury = 2]] //Costs <<print cashFormat(_Tmult1)>>; will encourage fucktoys to fuck each other//
 
 <<elseif $masterSuiteUpgradeLuxury == 2>>
 
@@ -219,7 +219,7 @@ The true focus of the suite is, however, the fuckpit. This stepped depression in
 	is desolate and unpopulated.
 <</if>>
 
-<br>&nbsp;&nbsp;&nbsp;&nbsp;[[Refit the suite to the height of traditional opulence|Master Suite][$cash -= _Tmult1, $masterSuiteUpgradeLuxury = 1]] //Costs <<print cashFormat(_Tmult1)>>; will focus the suite on you//
+<br>&nbsp;&nbsp;&nbsp;&nbsp;[[Refit the suite to the height of traditional opulence|Master Suite][cashX(forceNeg(_Tmult1), "capEx"), $masterSuiteUpgradeLuxury = 1]] //Costs <<print cashFormat(_Tmult1)>>; will focus the suite on you//
 
 <<else>>
 
@@ -289,14 +289,14 @@ $masterSuiteNameCaps is furnished
 <<else>>
 	None of your slaves are serving here.
 <</if>>
-<br>&nbsp;&nbsp;&nbsp;&nbsp;[[Refit the suite to the height of traditional opulence|Master Suite][$cash -= _Tmult2, $masterSuiteUpgradeLuxury = 1]] //Costs <<print cashFormat(_Tmult2)>> and will focus the suite on you//
-<br>&nbsp;&nbsp;&nbsp;&nbsp;[[Remodel the suite around a luxurious pit for group sex|Master Suite][$cash -= _Tmult2, $masterSuiteUpgradeLuxury = 2]] //Costs <<print cashFormat(_Tmult2)>>; will encourage fucktoys to fuck each other//
+<br>&nbsp;&nbsp;&nbsp;&nbsp;[[Refit the suite to the height of traditional opulence|Master Suite][cashX(forceNeg(_Tmult2), "capEx"), $masterSuiteUpgradeLuxury = 1]] //Costs <<print cashFormat(_Tmult2)>> and will focus the suite on you//
+<br>&nbsp;&nbsp;&nbsp;&nbsp;[[Remodel the suite around a luxurious pit for group sex|Master Suite][cashX(forceNeg(_Tmult2), "capEx"), $masterSuiteUpgradeLuxury = 2]] //Costs <<print cashFormat(_Tmult2)>>; will encourage fucktoys to fuck each other//
 
 <</if>>
 
 <br>$masterSuiteNameCaps has room for $masterSuite slaves to live comfortably<<if $masterSuiteUpgradeLuxury == 2>> in the moments when they're not in the fuckpit<<elseif $masterSuiteUpgradeLuxury == 1>> on its huge bed<</if>>. There <<if $masterSuiteSlaves == 1>>is<<else>>are<</if>> currently $masterSuiteSlaves slave<<if $masterSuiteSlaves != 1>>s<</if>> in $masterSuiteNameCaps.
 <<set _Tmult0 = Math.trunc($masterSuite*1000*$upgradeMultiplierArcology)>>
-[[Expand the Master Suite|Master Suite][$cash -= _Tmult0, $masterSuite += 2, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>>//
+[[Expand the Master Suite|Master Suite][cashX(forceNeg(_Tmult0), "capEx"), $masterSuite += 2, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>>//
 <<if $Concubine == 0 && $masterSuiteSlaves == 0>>
 	| [[Decommission the Master Suite|Main][$masterSuite = 0, $masterSuiteUpgradeLuxury = 0, $masterSuitePregnancySlaveLuxuries = 0, $masterSuiteDecoration = "standard", $masterSuitePregnancyFertilityDrugs = 0, $masterSuitePregnancyFertilitySupplements = 0, $masterSuiteUpgradePregnancy = 0, $masterSuiteHyperPregnancy = 0]]
 <</if>>
@@ -340,7 +340,7 @@ $masterSuiteNameCaps is furnished
 		Fertile slaves ''are being given'' supplements to their fertility drugs, further enhancing the chances of multiple pregnancy. [[End the supplement regime|Master Suite][$masterSuitePregnancyFertilitySupplements = 0]]<br>
 	<</if>>
 <<else>>
-	The master suite does not currently have special customizations to support slave pregnancy. [[Refit the suite to support and encourage slave pregnancy|Master Suite][$cash -= _Tmult3, $masterSuiteUpgradePregnancy = 1]] //Costs <<print cashFormat(_Tmult3)>>//
+	The master suite does not currently have special customizations to support slave pregnancy. [[Refit the suite to support and encourage slave pregnancy|Master Suite][cashX(forceNeg(_Tmult3), "capEx"), $masterSuiteUpgradePregnancy = 1]] //Costs <<print cashFormat(_Tmult3)>>//
 <</if>>
 <</if>>
 
diff --git a/src/uncategorized/minorInjuryResponse.tw b/src/uncategorized/minorInjuryResponse.tw
index 468303ad918167833ca80fbf7b12b3ee91551f0b..3fa3911dc5b664be37a2f2421d5f6d1b1d8a6cbb 100644
--- a/src/uncategorized/minorInjuryResponse.tw
+++ b/src/uncategorized/minorInjuryResponse.tw
@@ -8,32 +8,32 @@ $He carries on, knowing that in your degradationist arcology, this is accepted b
 
 <<if ($arcologyUpgrade.drones == 1) && (random(1,100) > 50)>>
 	The security drones successfully detain him and oblige him to pay significant @@.yellowgreen;compensation,@@ since abusing slaves is discouraged here.
-	<<set $cash += 50>>
+	<<run cashX(50, "slaveUpkeep", $slaves[$i])>>
 <<elseif ($arcologyUpgrade.grid == 1) && (random(1,100) > 50)>>
 	The computer systems successfully detain him and require him to pay significant @@.yellowgreen;compensation,@@ since abusing slaves is discouraged here.
-	<<set $cash += 50>>
+	<<run cashX(50, "slaveUpkeep", $slaves[$i])>>
 <<elseif ($slaves[$i].whoreSkill > random(1,100))>>
 	$slaves[$i].slaveName is used to this sort of thing, and convinces him to pay significant @@.yellowgreen;compensation,@@ since abusing slaves is discouraged here.
-	<<set $cash += 50>>
+	<<run cashX(50, "slaveUpkeep", $slaves[$i])>>
 <<elseif ($slaves[$i].combatSkill > 0)>>
 	$slaves[$i].slaveName can take care of $himself, and $he successfully forces him to pay significant @@.yellowgreen;compensation,@@ since abusing slaves is discouraged here.
-	<<set $cash += 50>>
+	<<run cashX(50, "slaveUpkeep", $slaves[$i])>>
 <</if>>
 
 <<else>>
 
 <<if ($arcologyUpgrade.drones == 1) && (random(1,100) > 50)>>
 	The security drones successfully detain him and oblige him to pay minor @@.yellowgreen;compensation.@@
-	<<set $cash += 10>>
+	<<run cashX(10, "slaveUpkeep", $slaves[$i])>>
 <<elseif ($arcologyUpgrade.grid == 1) && (random(1,100) > 50)>>
 	The computer systems successfully detain him and require him to pay minor @@.yellowgreen;compensation.@@
-	<<set $cash += 10>>
+	<<run cashX(10, "slaveUpkeep", $slaves[$i])>>
 <<elseif ($slaves[$i].whoreSkill > random(1,100))>>
 	$slaves[$i].slaveName is used to this sort of thing, and convinces him to pay minor @@.yellowgreen;compensation.@@
-	<<set $cash += 10>>
+	<<run cashX(10, "slaveUpkeep", $slaves[$i])>>
 <<elseif ($slaves[$i].combatSkill > 0)>>
 	$slaves[$i].slaveName can take care of $himself, and $he successfully forces him to pay minor @@.yellowgreen;compensation.@@
-	<<set $cash += 10>>
+	<<run cashX(10, "slaveUpkeep", $slaves[$i])>>
 <</if>>
 
 <</if>>
diff --git a/src/uncategorized/multiImplant.tw b/src/uncategorized/multiImplant.tw
index b7c932da40e7e77bebf19172ad1afe05ba8976c8..05427420b0c4924f0b255cf91519e768c2c0f9c4 100644
--- a/src/uncategorized/multiImplant.tw
+++ b/src/uncategorized/multiImplant.tw
@@ -116,7 +116,7 @@ You head down to your <<if $surgeryUpgrade == 1>>heavily upgraded and customized
 	/* eyes */
 	<<if _slaveOrgans.eyes != 0>>
 		<<if ($activeSlave.eyes == -2) && $activeSlave.origEye != "implant">>
-			<<set $cash -= $surgeryCost>>
+			<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 			<<set $activeSlave.eyes = 1>>
 			<<set $activeSlave.eyeColor = $activeSlave.origEye>>
 			/* no way to salvage original eye color */
@@ -128,7 +128,7 @@ You head down to your <<if $surgeryUpgrade == 1>>heavily upgraded and customized
 			<br><hr>
 			<<include "Surgery Degradation">>
 		<<elseif $activeSlave.origEye == "implant">>
-			<<set $cash -= $surgeryCost>>
+			<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 			<<set $stockpile.ocularImplant++>>
 			<<set $activeSlave.eyes = 1>>
 			<<set _oldEyes = $genePool.find(function(s) { return s.ID = $activeSlave.ID; })>>
@@ -149,7 +149,7 @@ You head down to your <<if $surgeryUpgrade == 1>>heavily upgraded and customized
 	/* cochleae */
 	<<if _slaveOrgans.cochleae != 0>>
 		<<if ($activeSlave.hears == -2) && $activeSlave.earImplant != 1>>
-			<<set $cash -= $surgeryCost>>
+			<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 			<<set $activeSlave.hears = 0>>
 			<<set $activeSlave.health -= 20>>
 			<<if $organFarmUpgrade == 2>>
@@ -159,7 +159,7 @@ You head down to your <<if $surgeryUpgrade == 1>>heavily upgraded and customized
 			<br><hr>
 			<<include "Surgery Degradation">>
 		<<elseif $activeSlave.earImplant == 1>>
-			<<set $cash -= $surgeryCost>>
+			<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 			<<set $stockpile.cochlearImplant++>>
 			<<set $activeSlave.hears = 0>>
 			<<set $activeSlave.health -= 20>>
@@ -177,7 +177,7 @@ You head down to your <<if $surgeryUpgrade == 1>>heavily upgraded and customized
 	/* voice */
 	<<if _slaveOrgans.voicebox != 0>>
 		<<if ($activeSlave.voice == 0)>>
-			<<set $cash -= $surgeryCost>>
+			<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 			<<if $activeSlave.ovaries == 1 && $activeSlave.hormoneBalance >= 200>>
 				<<set $activeSlave.voice = 3>>
 			<<elseif ($activeSlave.balls > 0) || ($activeSlave.hormoneBalance < -20)>>
@@ -202,7 +202,7 @@ You head down to your <<if $surgeryUpgrade == 1>>heavily upgraded and customized
 	/* foreskin */
 	<<if _slaveOrgans.foreskin != 0>>
 		<<if ($activeSlave.foreskin == 0)>>
-			<<set $cash -= $surgeryCost>>
+			<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 			<<if $activeSlave.dick > 0>>
 				<<set $activeSlave.foreskin = $activeSlave.dick>>
 			<<else>>
@@ -224,7 +224,7 @@ You head down to your <<if $surgeryUpgrade == 1>>heavily upgraded and customized
 	/* prostate */
 	<<if _slaveOrgans.prostate != 0>>
 		<<if ($activeSlave.prostate == 0)>>
-			<<set $cash -= $surgeryCost>>
+			<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 			<<set $activeSlave.prostate = 1>>
 			<<set $activeSlave.health -= 20>>
 			<<if $organFarmUpgrade == 2>>
@@ -242,7 +242,7 @@ You head down to your <<if $surgeryUpgrade == 1>>heavily upgraded and customized
 	/* ovaries */
 	<<if _slaveOrgans.ovaries != 0>>
 		<<if ($activeSlave.ovaries == 0) && ($activeSlave.vagina >= 0) && ($activeSlave.mpreg == 0) && ($activeSlave.bellyImplant == -1)>>
-			<<set $cash -= $surgeryCost>>
+			<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 			<<set $activeSlave.ovaries = 1>>
 			<<set $activeSlave.eggType = "human">>
 			<<set $activeSlave.preg = 0>>
@@ -285,7 +285,7 @@ You head down to your <<if $surgeryUpgrade == 1>>heavily upgraded and customized
 	/* asexual reproduction modifiction */
 	<<if _slaveOrgans.asexualReproOvaries != 0>>
 		<<if ($activeSlave.mpreg == 1 || $activeSlave.ovaries == 1)>>
-			<<set $cash -= $surgeryCost>>
+			<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 			<<set $activeSlave.eggType = "human">>
 			<<set $activeSlave.preg = 0>>
 			<<set $activeSlave.health -= 20>>
@@ -315,7 +315,7 @@ You head down to your <<if $surgeryUpgrade == 1>>heavily upgraded and customized
 	/* pig ovaries */
 	<<if _slaveOrgans.pigOvaries != 0>>
 		<<if ($activeSlave.ovaries == 0) && ($activeSlave.vagina >= 0) && ($activeSlave.mpreg == 0) && ($activeSlave.bellyImplant == -1)>>
-			<<set $cash -= $surgeryCost>>
+			<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 			<<set $activeSlave.ovaries = 1>>
 			<<set $activeSlave.eggType = "pig">>
 			<<set $activeSlave.preg = 0>>
@@ -358,7 +358,7 @@ You head down to your <<if $surgeryUpgrade == 1>>heavily upgraded and customized
 	/* dog ovaries */
 	<<if _slaveOrgans.canineOvaries != 0>>
 		<<if ($activeSlave.ovaries == 0) && ($activeSlave.vagina >= 0) && ($activeSlave.mpreg == 0) && ($activeSlave.bellyImplant == -1)>>
-			<<set $cash -= $surgeryCost>>
+			<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 			<<set $activeSlave.ovaries = 1>>
 			<<set $activeSlave.eggType = "dog">>
 			<<set $activeSlave.preg = 0>>
@@ -401,7 +401,7 @@ You head down to your <<if $surgeryUpgrade == 1>>heavily upgraded and customized
 	/* horse ovaries */
 	<<if _slaveOrgans.horseOvaries != 0>>
 		<<if ($activeSlave.ovaries == 0) && ($activeSlave.vagina >= 0) && ($activeSlave.mpreg == 0) && ($activeSlave.bellyImplant == -1)>>
-			<<set $cash -= $surgeryCost>>
+			<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 			<<set $activeSlave.ovaries = 1>>
 			<<set $activeSlave.eggType = "horse">>
 			<<set $activeSlave.preg = 0>>
@@ -444,7 +444,7 @@ You head down to your <<if $surgeryUpgrade == 1>>heavily upgraded and customized
 	/* cow ovaries */
 	<<if _slaveOrgans.cowOvaries != 0>>
 		<<if ($activeSlave.ovaries == 0) && ($activeSlave.vagina >= 0) && ($activeSlave.mpreg == 0) && ($activeSlave.bellyImplant == -1)>>
-			<<set $cash -= $surgeryCost>>
+			<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 			<<set $activeSlave.ovaries = 1>>
 			<<set $activeSlave.eggType = "cow">>
 			<<set $activeSlave.preg = 0>>
@@ -487,7 +487,7 @@ You head down to your <<if $surgeryUpgrade == 1>>heavily upgraded and customized
 	/* male preg */
 	<<if _slaveOrgans.mpreg != 0>>
 		<<if ($activeSlave.ovaries == 0) && ($activeSlave.vagina < 0) && ($activeSlave.mpreg == 0) && ($activeSlave.bellyImplant == -1)>>
-			<<set $cash -= $surgeryCost>>
+			<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 			<<set $activeSlave.mpreg = 1>>
 			<<set $activeSlave.eggType = "human">>
 			<<set $activeSlave.preg = 0>>
@@ -530,7 +530,7 @@ You head down to your <<if $surgeryUpgrade == 1>>heavily upgraded and customized
 	/* male pig preg */
 	<<if _slaveOrgans.mpregPig != 0>>
 		<<if ($activeSlave.ovaries == 0) && ($activeSlave.vagina < 0) && ($activeSlave.mpreg == 0) && ($activeSlave.bellyImplant == -1)>>
-			<<set $cash -= $surgeryCost>>
+			<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 			<<set $activeSlave.mpreg = 1>>
 			<<set $activeSlave.eggType = "pig">>
 			<<set $activeSlave.preg = 0>>
@@ -573,7 +573,7 @@ You head down to your <<if $surgeryUpgrade == 1>>heavily upgraded and customized
 	/* male dog preg */
 	<<if _slaveOrgans.mpregCanine != 0>>
 		<<if ($activeSlave.ovaries == 0) && ($activeSlave.vagina < 0) && ($activeSlave.mpreg == 0) && ($activeSlave.bellyImplant == -1)>>
-			<<set $cash -= $surgeryCost>>
+			<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 			<<set $activeSlave.mpreg = 1>>
 			<<set $activeSlave.eggType = "dog">>
 			<<set $activeSlave.preg = 0>>
@@ -616,7 +616,7 @@ You head down to your <<if $surgeryUpgrade == 1>>heavily upgraded and customized
 	/* male horse preg */
 	<<if _slaveOrgans.mpregHorse != 0>>
 		<<if ($activeSlave.ovaries == 0) && ($activeSlave.vagina < 0) && ($activeSlave.mpreg == 0) && ($activeSlave.bellyImplant == -1)>>
-			<<set $cash -= $surgeryCost>>
+			<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 			<<set $activeSlave.mpreg = 1>>
 			<<set $activeSlave.eggType = "horse">>
 			<<set $activeSlave.preg = 0>>
@@ -659,7 +659,7 @@ You head down to your <<if $surgeryUpgrade == 1>>heavily upgraded and customized
 	/* male cow preg */
 	<<if _slaveOrgans.mpregCow != 0>>
 		<<if ($activeSlave.ovaries == 0) && ($activeSlave.vagina < 0) && ($activeSlave.mpreg == 0) && ($activeSlave.bellyImplant == -1)>>
-			<<set $cash -= $surgeryCost>>
+			<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 			<<set $activeSlave.mpreg = 1>>
 			<<set $activeSlave.eggType = "cow">>
 			<<set $activeSlave.preg = 0>>
@@ -702,7 +702,7 @@ You head down to your <<if $surgeryUpgrade == 1>>heavily upgraded and customized
 	/* ovary renewal */
 	<<if _slaveOrgans.freshOvaries != 0>>
 		<<if (($activeSlave.ovaries == 1) || ($activeSlave.mpreg == 1)) && ($activeSlave.bellyImplant == -1) && ($activeSlave.physicalAge < 60)>>
-			<<set $cash -= $surgeryCost>>
+			<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 			<<if $activeSlave.ovaryAge >= 47>>
 				<<set $activeSlave.ovaryAge = 45>>
 			<<else>>
@@ -741,7 +741,7 @@ You head down to your <<if $surgeryUpgrade == 1>>heavily upgraded and customized
 	/* penis */
 	<<if _slaveOrgans.penis != 0>>
 		<<if $activeSlave.dick == 0>>
-			<<set $cash -= $surgeryCost>>
+			<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 			<<if $activeSlave.prostate == 0>>
 				<<set $activeSlave.prostate = 1>>
 			<</if>>
@@ -760,7 +760,7 @@ You head down to your <<if $surgeryUpgrade == 1>>heavily upgraded and customized
 	/* testicles */
 	<<if _slaveOrgans.testicles != 0>>
 		<<if ($activeSlave.dick >= 1) && ($activeSlave.balls == 0)>>
-			<<set $cash -= $surgeryCost>>
+			<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 			<<if $activeSlave.prostate == 0>>
 				<<set $activeSlave.prostate = 1>>
 			<</if>>
@@ -798,7 +798,7 @@ You head down to your <<if $surgeryUpgrade == 1>>heavily upgraded and customized
 	/* pig testicles */
 	<<if _slaveOrgans.pigTesticles != 0>>
 		<<if ($activeSlave.dick >= 1) && ($activeSlave.balls == 0)>>
-			<<set $cash -= $surgeryCost>>
+			<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 			<<set $activeSlave.balls = 3>>
 			<<set $activeSlave.scrotum = 3>>
 			<<set $activeSlave.ballType = "pig">>
@@ -833,7 +833,7 @@ You head down to your <<if $surgeryUpgrade == 1>>heavily upgraded and customized
 	/* dog testicles */
 	<<if _slaveOrgans.canineTesticles != 0>>
 		<<if ($activeSlave.dick >= 0) && ($activeSlave.balls == 0)>>
-			<<set $cash -= $surgeryCost>>
+			<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 			<<set $activeSlave.balls = 2>>
 			<<set $activeSlave.ballType = "dog">>
 			<<set $activeSlave.scrotum = 2>>
@@ -869,7 +869,7 @@ You head down to your <<if $surgeryUpgrade == 1>>heavily upgraded and customized
 	/* horse testicles */
 	<<if _slaveOrgans.horseTesticles != 0>>
 		<<if ($activeSlave.dick >= 1) && ($activeSlave.balls == 0)>>
-			<<set $cash -= $surgeryCost>>
+			<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 			<<set $activeSlave.balls = 3>>
 			<<set $activeSlave.scrotum = 3>>
 			<<set $activeSlave.ballType = "horse">>
@@ -904,7 +904,7 @@ You head down to your <<if $surgeryUpgrade == 1>>heavily upgraded and customized
 	/* cow testicles */
 	<<if _slaveOrgans.cowTesticles != 0>>
 		<<if ($activeSlave.dick >= 1) && ($activeSlave.balls == 0)>>
-			<<set $cash -= $surgeryCost>>
+			<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 			<<set $activeSlave.balls = 3>>
 			<<set $activeSlave.scrotum = 3>>
 			<<set $activeSlave.ballType = "cow">>
@@ -939,7 +939,7 @@ You head down to your <<if $surgeryUpgrade == 1>>heavily upgraded and customized
 	/* scrotum */
 	<<if _slaveOrgans.scrotum != 0>>
 		<<if ($activeSlave.scrotum == 0) && ($activeSlave.balls >= 1)>>
-			<<set $cash -= $surgeryCost>>
+			<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 			<<set $activeSlave.scrotum = $activeSlave.balls>>
 			<<set $activeSlave.health -= 10>>
 			<<if $organFarmUpgrade == 2>>
diff --git a/src/uncategorized/neighborInteract.tw b/src/uncategorized/neighborInteract.tw
index 082cf4221d6fb593cc5591b96f7028d733c65876..1c7713f623a82e9c8dc3c4ac240d8dcadf51690c 100644
--- a/src/uncategorized/neighborInteract.tw
+++ b/src/uncategorized/neighborInteract.tw
@@ -13,7 +13,7 @@
 
 <<if $buyArcologyDirection != 0 && def $buyArcologyDirection>>
 	<<set _nei = $arcologies.findIndex(function(s) { return s.direction == $buyArcologyDirection; })>>
-	<<set $cash -= $transaction*(500*Math.trunc($arcologies[_nei].prosperity*(1+($arcologies[_nei].demandFactor/100))))>>
+	<<run cashX(forceNeg($transaction*(500*Math.trunc($arcologies[_nei].prosperity*(1+($arcologies[_nei].demandFactor/100))))), "war")>>
 	<<set $cash -= 10000>>
 	<<set $arcologies[_nei].PCminority += $transaction>>
 	<<set $arcologies[_nei].demandFactor += $transaction*5>>
@@ -21,7 +21,7 @@
 <<set $buyArcologyDirection = 0>>
 <<if $sellArcologyDirection != 0 && def $sellArcologyDirection>>
 	<<set _nei = $arcologies.findIndex(function(s) { return s.direction == $sellArcologyDirection; })>>
-	<<set $cash += $transaction*(500*Math.trunc($arcologies[_nei].prosperity*(1+($arcologies[_nei].demandFactor/100))))>>
+	<<run cashX(($transaction*(500*Math.trunc($arcologies[_nei].prosperity*(1+($arcologies[_nei].demandFactor/100))))), "war")>>
 	<<set $arcologies[_nei].PCminority -= $transaction>>
 	<<set $arcologies[_nei].demandFactor -= $transaction*2>>
 	<<if $arcologies[_nei].government != "your agent" && $arcologies[_nei].government != "your trustees" && $arcologies[_nei].rival != 1>>
diff --git a/src/uncategorized/neighborsDevelopment.tw b/src/uncategorized/neighborsDevelopment.tw
index 1b0b5f131a471a8a81f80190c6346a2b36060ed8..53010fd895333095408810a2d951ce8294769b9d 100644
--- a/src/uncategorized/neighborsDevelopment.tw
+++ b/src/uncategorized/neighborsDevelopment.tw
@@ -480,7 +480,7 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(Math.trunc((0.1*$arcol
 
 <<if $arcologies[$i].PCminority > 0>>
 	<<set _rents = ($arcologies[$i].prosperity*$arcologies[$i].PCminority*2)+random(1,100)>>
-	<<set $cash += _rents>>
+	<<run cashX(_rents, "rents")>>
 	This week, you made @@.yellowgreen;<<print cashFormat(_rents)>>@@ from your holdings in this arcology.
 <</if>>
 
@@ -516,7 +516,7 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(Math.trunc((0.1*$arcol
 		<<set $arcologies[0].prosperity = Math.clamp($arcologies[0].prosperity, 1, 300)>>
 	<</if>>
 	You target $arcologies[$i].name for @@.yellow;digital economic warfare,@@ successfully raiding its coffers for @@.yellowgreen;<<print cashFormat(_WarSpoils)>>@@ this week.
-	<<set $cash += _WarSpoils>>
+	<<run cashX(_WarSpoils, "war")>>
 	<<if _redHanded == 1>>
 		A successful trace back to your arcology has exposed your actions, @@.red;damaging your reputation@@ and @@.red;scaring away potential investors.@@
 		<<if $secExp == 1>>
diff --git a/src/uncategorized/newSlaveIntro.tw b/src/uncategorized/newSlaveIntro.tw
index 6dfa94365274aa7e913bbcf2695f3f51fe102d3f..572ed12db09d9f04d9c979f0e6105622e1b19716 100644
--- a/src/uncategorized/newSlaveIntro.tw
+++ b/src/uncategorized/newSlaveIntro.tw
@@ -1033,7 +1033,7 @@ The legalities completed, ''__@@.pink;<<= SlaveFullName($activeSlave)>>@@__'' <<
 
 <<if $activeSlave.dick == 0>>
 	| <<link "Give $him a smart clitoral piercing">>
-		<<set $cash -= $SPcost>>
+		<<run cashX(forceNeg($SPcost), "slaveMod", $activeSlave)>>
 		<<replace "#introResult">>
 			You take $him to the body modification studio, strap $him down, pierce $his clit, and insert what appears to be a large stainless steel barbell piercing. It actually contains a device that can vibrate to give $him sexual stimulation or create subtle pain to suppress pleasure. It is connected wirelessly to the arcology, which can be given instructions to encourage or discourage sexual pleasure in specific situations. You run a quick test. On the oral setting, as soon as $he kneels in front of your crotch, $he gasps as the stimulation starts. On the anal setting, $he whimpers when you run a finger across $his asshole.
 		<</replace>>
@@ -1042,7 +1042,7 @@ The legalities completed, ''__@@.pink;<<= SlaveFullName($activeSlave)>>@@__'' <<
 	//This option costs <<print cashFormat($SPcost)>>//
 <<else>>
 	| <<link "Give $him a smart frenulum piercing">>
-		<<set $cash -= $SPcost>>
+		<<run cashX(forceNeg($SPcost), "slaveMod", $activeSlave)>>
 		<<replace "#introResult">>
 			You take $him to the body modification studio, strap $him down, pierce $his frenulum, and insert what appears to be a large stainless steel barbell piercing. It actually contains a device that can vibrate to give $him sexual stimulation or create subtle pain to suppress pleasure. It is connected wirelessly to the arcology, which can be given instructions to encourage or discourage sexual pleasure in specific situations. You run a quick test. On the oral setting, as soon as $he kneels in front of your crotch, $he gasps as the stimulation starts. On the anal setting, $he whimpers and gets rock hard when you run a finger across $his asshole.
 		<</replace>>
diff --git a/src/uncategorized/options.tw b/src/uncategorized/options.tw
index 0c06b2877b45f2a37d51496a331adbf7fce117ec..db94ca6b950ecd2f9f2b6d913d2befa03806c28d 100644
--- a/src/uncategorized/options.tw
+++ b/src/uncategorized/options.tw
@@ -555,7 +555,7 @@ Assignment performance vignettes on the end week report are
 	//This will allow manual selection of events and unlock some options that would usually be restricted by progress//
 <</if>>
 <br>
-&nbsp;&nbsp;&nbsp;&nbsp;[[Add money|Options][$cheater = 1, $cash += 100000]] | [[Add rep|Options][$cheater = 1, $rep += 10000]] //Cheating will be flagged in your save//
+&nbsp;&nbsp;&nbsp;&nbsp;[[Add money|Options][$cheater = 1, cashX(100000, "cheating")]] | [[Add rep|Options][$cheater = 1, $rep += 10000]] //Cheating will be flagged in your save//
 <br>
 
 <<if ($debugMode == 1)>>
diff --git a/src/uncategorized/pBombing.tw b/src/uncategorized/pBombing.tw
index 7e0bbeebe26165143488f0bc870206935270416b..294fdd0af96aa22425227e15e153ac85bb363b2d 100644
--- a/src/uncategorized/pBombing.tw
+++ b/src/uncategorized/pBombing.tw
@@ -30,7 +30,7 @@ The implant is small, and went off too far ahead to do anything more than stun.
 	Your bodyguard's enhancements are not exactly secret, however, and the attackers are numerous, sent to overwhelm $him. $He drops $his weapon, ammunition expended, producing a scream of triumph from one of the few remaining assailants. Nothing daunted, $he swings $his dominant hand down to $his thigh on that side. It unfolds and places a pistol in $his grip, which $he brings up and uses to end the engagement.
 	<br><br>
 	After reloading $his pistol from the ammunition compartment in $his other thigh, $he strides mechanically from body to body, a few of which are still moving. Stopping by each one, $he places $his palm against the base of each head with obscene care before extending the blade in $his forearm through it. This done, $he scans for further threats. There are none, and due to $his terrifying display there is @@.green;an increase in confidence in the security of $arcologies[0].name@@ and @@.green;public applause for your skill in training $him.@@ There is some @@.red;minor damage@@ to repair, but no lasting harm.
-	<<set $cash -= 1000>>
+	<<run cashX(-1000, "event", $Bodyguard)>>
 	<<set $rep += 500>>
 	<<set $arcologies[0].prosperity += 1>>
 
@@ -46,18 +46,18 @@ The implant is small, and went off too far ahead to do anything more than stun.
 		drawing $his machine pistol. $He cradles the diminutive weapon in both hands and swivels from target to target, placing a disciplined burst of fire in each at its center of mass.
 	<</if>>
 	None of them gets within five <<if $showInches == 2>>yards<<else>>meters<</if>>. $Bodyguard.slaveName dispassionately places a round in the head of each body, reloads, and takes up a position from which $he can watch for further threats. There are none, and due to $his sterling conduct there is @@.green;an increase in confidence in the security of $arcologies[0].name@@ and @@.green;public applause for your skill in training $him.@@ There is some @@.red;minor damage@@ to repair, but no lasting harm.
-	<<set $cash -= 1000>>
+	<<run cashX(-1000, "event", $Bodyguard)>>
 	<<set $rep += 500>>
 	<<set $arcologies[0].prosperity += 1>>
 
 <<elseif $Bodyguard.muscles > 5>>
 	$Bodyguard.slaveName hurriedly <<if ($Bodyguard.muscles+$Bodyguard.height-100)/25 > 5>>gets $his light machine gun firing. The weapon's high rate of fire tears through the first enemy but rapidly pulls $his aim off target.<<elseif ($Bodyguard.muscles+$Bodyguard.height-100)/25 > 4>>brings up $his battle rifle. $He hits the nearest assailant with $his first round and then fires again, but the weapon's powerful recoil sends it over $his target.<<elseif ($Bodyguard.muscles+$Bodyguard.height-100)/25 > 3>>brings up $his submachine gun. $He points it at the nearest assailant and pulls the trigger; the weapon's high rate of fire tears through the enemy but rapidly pulls $his aim off target.<<else>>draws $his machine pistol. $He points it one-handed at the nearest assailant and pulls the trigger; the weapon's high rate of fire tears through the enemy but rapidly pulls $his aim off target.<</if>> By the time $he pulls the muzzle back down the others are on $him. Fortunately, $he is equal to the challenge, getting $his sword into gory action. $He is physically powerful but unskilled, so the result is simple, unlovely butcher's work. This spectacle produces @@.green;an increase in confidence in the security of $arcologies[0].name.@@ There is some @@.red;minor property damage@@ to repair, but no lasting harm.
-	<<set $cash -= 1000>>
+	<<run cashX(-1000, "event", $Bodyguard)>>
 	<<set $arcologies[0].prosperity += 1>>
 
 <<else>>
 	$Bodyguard.slaveName hurriedly <<if ($Bodyguard.muscles+$Bodyguard.height-100)/25 > 5>>gets $his light machine gun firing. The weapon's high rate of fire tears through the first enemy but rapidly pulls $his aim off target.<<elseif ($Bodyguard.muscles+$Bodyguard.height-100)/25 > 4>>brings up $his battle rifle. $He hits the nearest assailant with $his first round and then fires again, but the weapon's powerful recoil sends it over $his target.<<elseif ($Bodyguard.muscles+$Bodyguard.height-100)/25 > 3>>brings up $his submachine gun. $He points it at the nearest assailant and pulls the trigger; the weapon's high rate of fire tears through the enemy but rapidly pulls $his aim off target.<<else>>draws $his machine pistol. $He points it one-handed at the nearest assailant and pulls the trigger; the weapon's high rate of fire tears through the enemy but rapidly pulls $his aim off target.<</if>> By the time $he pulls the muzzle back down the others are on $him. $His sword is very sharp, but so are $his assailants' weapons, and everyone is unskilled. As often happens with bladed fights between unarmored novices, everyone dies, and so fast that you cannot intervene. $Bodyguard.slaveName expires gasping in agony over multiple deep wounds to $his abdomen, but still manages to lock eyes with you as $he does. There is some @@.red;minor property damage@@ to repair, but no lasting harm.
-	<<set $cash -= 1000>>
+	<<run cashX(-1000, "event", $Bodyguard)>>
 	<<set $Bodyguard.health -= 1000>>
 	<<set $activeSlave = $Bodyguard>>
 	<<include "Remove activeSlave">>
@@ -65,15 +65,15 @@ The implant is small, and went off too far ahead to do anything more than stun.
 
 <<elseif $personalArms > 0>>
 	You are prepared for this exigency. Your handsome clothing conceals a small but very powerful pistol. This fact comes slowly back to you as your ears and mind shake off the blast effects. There is something important about this fact, but you are having trouble thinking of it. Eventually, you remember, and groggily draw and level the weapon. Its rocket-assisted slugs detonate on contact, assisting your impaired marksmanship by causing fatal damage regardless of shot placement. You are alive, and not permanently damaged, which is more than can be said for your assailants, who have, with the assistance of your weapon, redecorated this area of the club in red tones. There is some @@.red;minor property damage@@ to repair, but no lasting harm.
-	<<set $cash -= 1000>>
+	<<run cashX(-1000, "event")>>
 
 <<elseif $mercenaries > 0>>
 	As you collect your senses, you are dimly aware of a massive form rushing to stand over you. In its hands is a chunky object that emits three long tongues of flame and makes three barking sounds that break through the ringing in your ears. You manage to get yourself together enough to understand the mercenary as he slings his shotgun and kneels to check you over. His experienced hands disclose no injury, and he says, "You'll be OK, <<= properTitle()>>. Come on, up and at 'em. Let's get you checked out." There is some @@.red;minor property damage@@ to repair, but no lasting harm.
-	<<set $cash -= 1000>>
+	<<run cashX(-1000, "event")>>
 
 <<elseif $arcologyUpgrade.drones == 1>>
 	Two security drones reach the scene at the very last second. They drop the assailants with taser rounds, the demonic little munitions' sharp heads burying themselves in muscle before applying voltage. There is some @@.red;minor property damage@@ to repair, but no lasting harm.
-	<<set $cash -= 1000>>
+	<<run cashX(-1000, "event")>>
 
 <<else>>
 	<<set $gameover = "bombing">><<goto "Gameover">>
diff --git a/src/uncategorized/pCoupAftermath.tw b/src/uncategorized/pCoupAftermath.tw
index d1de2f9b66300ed6f25567939a029d4d42b3c713..ec89484d5bd3ff1815904b820cf63222c7e24ce6 100644
--- a/src/uncategorized/pCoupAftermath.tw
+++ b/src/uncategorized/pCoupAftermath.tw
@@ -33,7 +33,7 @@ You inquire as to whether there's any identifiable cause for the evident dislike
 	<<set $nextButton = "Continue">><<UpdateNextButton>> /* unlock Continue button */
 	<<replace "#result">>
 	Your fellow arcology owner proves very receptive to your missive, as well they might. Your defeat of the Daughters has made a major impact on the willingness of slaveowners to discuss slave revolts in public, and any arcology owner who was proved to be funding anti-slaver violence, even under duress, would be shunned. With very little prompting, <<if _num < $seeDicks>>he<<else>>she<</if>> forwards a @@.yellowgreen;huge indemnity payment.@@ It's nowhere near enough to cause bankruptcy, but it's enough to give you a massive advantage should you find yourselves at odds again.
-	<<set $cash += 100000>>
+	<<run cashX(100000, "war")>>
 	<</replace>>
 <</link>>
 <br><<link "Reveal the evidence publicly">>
@@ -41,7 +41,7 @@ You inquire as to whether there's any identifiable cause for the evident dislike
 	<<replace "#result">>
 	Free Cities society is understandably reluctant to condemn, never mind depose, arcology owners. The precedent of removing one would be bad, even if the public brought enough strength together to accomplish it. Your evidence looks quite bad, but isn't so incontrovertible as to cause your fellow aristocrats to take such a drastic measure. Nonetheless, the public is aghast at the spectacle of an arcology owner funding an attack on another. Opinion @@.green;rallies@@ around you, and you even receive some discreet @@.yellowgreen;donations,@@ delivered with the intimation that they are to be used against your enemy. There is stony silence from the Daughters' backer; today, you began a real inter-arcology war.
 	<<set $rep += 1000>>
-	<<set $cash += 10000>>
+	<<run cashX(10000, "war")>>
 	<<set $rivalryPower = 1>>
 	<<if $rivalSet != 0>>
 		<<for $i = 0; $i < $arcologies.length; $i++>>
@@ -62,7 +62,7 @@ You inquire as to whether there's any identifiable cause for the evident dislike
 	<<set $nextButton = "Continue">><<UpdateNextButton>> /* unlock Continue button */
 	<<replace "#result">>
 	The money flows out, and the information flows in. You are rewarded with a reasonably complete picture of your rival's operations. The intelligence will be extremely useful going forward, since by gathering it, you sent an unmistakable signal that you do not consider the matter closed. There is stony silence from the Daughters' backer; today, you began a real inter-arcology war. But, with this information, you can maintain it from a position of advantage.
-	<<set $cash -= 20000>>
+	<<run cashX(-20000, "war")>>
 	<<set $rivalryPower = 5>>
 	<<if $rivalSet != 0>>
 		<<for $i = 0; $i < $arcologies.length; $i++>>
diff --git a/src/uncategorized/pCoupAttempt.tw b/src/uncategorized/pCoupAttempt.tw
index 14bb3c413c70330ad5f6af0313b71c469d085024..1891bd4f87267bff9188e1052f04d1777ba366cf 100644
--- a/src/uncategorized/pCoupAttempt.tw
+++ b/src/uncategorized/pCoupAttempt.tw
@@ -59,8 +59,8 @@ You are awakened in the middle of the night by a jolt that shakes the entire arc
 <<if $arcologies[0].FSRomanRevivalistLaw + $mercenaries + $personalArms + $hackerSupport > 8>>
 	@@.yellow;The Daughters of Liberty are utterly crushed.@@ $arcologies[0].name has been slightly damaged, but even as the last pockets of resistance are crushed, your citizens begin repairs themselves. The effect on your reputation is @@.green;immensely positive,@@ since your victory was insultingly easy and barely set the arcology's prosperity back at all. You also took a truly impressive bag of prisoners.
 	<<set $daughtersVictory = 3>>
-	<<set $cash -= 2000>>
-	<<set $cash -= Math.trunc($cash*0.2)>>
+	<<run cashX(-2000, "war")>>
+	<<run cashX(forceNeg(Math.trunc($cash*0.2)), "war")>>
 	<<set $arcologies[0].prosperity = Math.trunc($arcologies[0].prosperity*0.7)>>
 	<<set $rep += 2000>>
 	<<set $activeSlaveOneTimeMinAge = 16>>
@@ -92,8 +92,8 @@ You are awakened in the middle of the night by a jolt that shakes the entire arc
 <<elseif $arcologies[0].FSRomanRevivalistLaw == 1>>
 	@@.yellow;The Daughters of Liberty are annihilated.@@ @@.red;$arcologies[0].name has been damaged,@@ and the repairs will be quite costly. However, the effect on your reputation is @@.green;very positive,@@ since though your victory was hard-fought and set the arcology's prosperity back @@.red;considerably,@@ you did better than other arcology owners have done when faced with similar well-armed unrest. You also took a truly impressive bag of prisoners.
 	<<set $daughtersVictory = 3>>
-	<<set $cash -= 5000>>
-	<<set $cash -= Math.trunc($cash*0.2)>>
+	<<run cashX(-5000, "war")>>
+	<<run cashX(forceNeg(Math.trunc($cash*0.2)), "war")>>
 	<<set $arcologies[0].prosperity = Math.trunc($arcologies[0].prosperity*0.7)>>
 	<<set $rep += 1000>>
 	<<if $seeDicks > 50>>
@@ -141,8 +141,8 @@ You are awakened in the middle of the night by a jolt that shakes the entire arc
 		<<set $traitor = 0, $traitorStats = 0>>
 	<</if>>
 	<<set $daughtersVictory = 2>>
-	<<set $cash -= 10000>>
-	<<set $cash -= Math.trunc($cash*0.3)>>
+	<<run cashX(-10000, "war")>>
+	<<run cashX(forceNeg(Math.trunc($cash*0.3)), "war")>>
 	<<set $arcologies[0].prosperity = Math.trunc($arcologies[0].prosperity*0.5)>>
 	<<set $rep += 500>>
 	<<if $seeDicks > 50>>
@@ -262,7 +262,7 @@ You are awakened in the middle of the night by a jolt that shakes the entire arc
 	<<replace "#result">>
 	<<for _pca = 0; _pca < _newSlaves.length; _pca++>>
 		<<slaveCost _newSlaves[_pca]>>
-		<<set $cash += $slaveCost>>
+		<<run cashX(forceNeg($slaveCost), "slaveTransfer")>>
 	<</for>>
 	Prisoners sold.
 	<</replace>>
diff --git a/src/uncategorized/pDefenseFears.tw b/src/uncategorized/pDefenseFears.tw
index da1167a6eb18956b96c28695855ee2a6c76b1096..c333020c0662c8e8397748b2e1a28016d814cfcd 100644
--- a/src/uncategorized/pDefenseFears.tw
+++ b/src/uncategorized/pDefenseFears.tw
@@ -24,7 +24,7 @@ A deputation of slaveowning citizens comes to see you. Though they haven't exper
 	<<replace "#result">>
 	You hire a full platoon of reputable mercenaries and a veteran officer to command them, kit them in excellent gear, and quarter them in the arcology. Their pay is on an escrow basis; the huge lump sum you paid will serve to secure them, and its interest will constitute their pay. The sight of many armed men on patrol has reassured the worried slaveowners, and they are @@.green;grateful@@ to you for seeing to their defense.
 	<<set $rep += 500>>
-	<<set $cash -= 10000>>
+	<<run cashX(-10000, "mercenaries")>>
 	<<set $mercenaries = 3>>
 	<</replace>>
 <</link>> <<if ($PC.warfare >= 100) || ($PC.career == "arcology owner")>>//This will cost <<print cashFormat(10000)>> and some upkeep, @@.springgreen;reduced by your mercenary contacts@@//<<else>>//This will cost <<print cashFormat(10000)>> and incur significant upkeep costs//<</if>>
diff --git a/src/uncategorized/pHackerSupport.tw b/src/uncategorized/pHackerSupport.tw
index 599d0503448d11b79097394ac201ed2128824500..b368c4269d91bcacbefde9de5397a98ffbfcbb32 100644
--- a/src/uncategorized/pHackerSupport.tw
+++ b/src/uncategorized/pHackerSupport.tw
@@ -138,7 +138,7 @@ As she finishes speaking, another spasm distorts her expression, and then she su
 			She seems to have left a present for your poor personal assistant; _hisA little bugged avatar is visible in the bottom corner of a screen on the wall opposite you, and is writhing disturbingly. _HisA arms twist into a pair of extremely phallic tentacles, which it uses to forcefully fuck _hisA ass and pussy.
 		<</switch>>
 	<</if>>
-	<<set $cash -= 10000>>
+	<<run cashX(-10000, "event")>>
 	<<set $hackerSupport = 1>>
 	<</replace>>
 <</link>> //This will cost <<print cashFormat(10000)>>//
diff --git a/src/uncategorized/pInvasion.tw b/src/uncategorized/pInvasion.tw
index a2e0f4e86c86e9c64b952ad8bfd7433d325da58b..ab202522e993b82c9d5ff0d4124c47c2d79912bb 100644
--- a/src/uncategorized/pInvasion.tw
+++ b/src/uncategorized/pInvasion.tw
@@ -116,7 +116,7 @@ The loose militia lately organized by the arcology owners has been called out to
 	<<replace "#result">>
 	<<for _i = 0; _i < _newSlaves.length; _i++>>
 		<<slaveCost _newSlaves[_i]>>
-		<<set $cash += $slaveCost>>
+		<<run cashX(forceNeg($slaveCost), "slaveTransfer")>>
 	<</for>>
 	Prisoners sold.
 	<</replace>>
diff --git a/src/uncategorized/pMercenaryRomeo.tw b/src/uncategorized/pMercenaryRomeo.tw
index acdbf2d91ac38d9c5f899b88a4a319be995459bd..713bddbd343baab4938a380ecf5ef14fc2dc9207 100644
--- a/src/uncategorized/pMercenaryRomeo.tw
+++ b/src/uncategorized/pMercenaryRomeo.tw
@@ -103,7 +103,7 @@ proffered by an attentive slave girl, he seems almost bashful.
 					As he picks up her limbless form to give her a hug,
 				<</if>>
 				she gives the nearest camera a little nod and silently mouths the words "Thank you, <<= WrittenMaster($activeSlave)>>." Soon the romantic story of The Mercenary and the Slave Girl is being told in bars and brothels across the Free City, with you naturally playing @@.green;a supporting role.@@
-				<<set $rep += 500, $cash += $slaveCost>>
+				<<run cashX(forceNeg($slaveCost), "slaveTransfer")>>
 				<<include "Remove activeSlave">>
 			<</if>>
 			<<unset $romeoID>>
diff --git a/src/uncategorized/pRaidResult.tw b/src/uncategorized/pRaidResult.tw
index 2cdb76de521956353ebf11ec6c9bd12f4ff95323..efcd84e8e22335d01e821a5ddd2e88aba1a888c1 100644
--- a/src/uncategorized/pRaidResult.tw
+++ b/src/uncategorized/pRaidResult.tw
@@ -50,7 +50,7 @@ Out ahead of the main body of refugees there is a small knot moving quickly and
 	<<replace "#result">>
 	<<for _prr = 0; _prr < _newSlaves.length; _prr++>>
 		<<slaveCost _newSlaves[_prr]>>
-		<<set $cash += $slaveCost>>
+		<<run cashX(forceNeg($slaveCost), "slaveTransfer")>>
 	<</for>>
 	Prisoners sold.
 	<</replace>>
diff --git a/src/uncategorized/pRivalryVictory.tw b/src/uncategorized/pRivalryVictory.tw
index 06502fef1734426abb70f54205769f7876720ae0..7bdfe3d3cac27b00c1762e69389ec6b5d1d1765b 100644
--- a/src/uncategorized/pRivalryVictory.tw
+++ b/src/uncategorized/pRivalryVictory.tw
@@ -33,7 +33,7 @@ For the first time, you receive a direct call from your rival. You pictured the
 		<<if $hostageAnnounced == 1>><<set $hostageRescued = 1>><</if>>
 	<<else>>
 		<<if _num < $seeDicks>>His<<else>>Her<</if>> arcology will go to satisfy her great debts, but you will still profit @@.yellowgreen;immensely@@ from your victory<<if $hostageAnnounced == 1>>, and acquire $hostage.slaveName as a slave<</if>>.
-		<<set $cash += random(100000,250000)>>
+		<<run cashX(random(100000,250000), "war")>>
 	<</if>>
 	<</replace>>
 <</link>>
diff --git a/src/uncategorized/pSnatchAndGrab.tw b/src/uncategorized/pSnatchAndGrab.tw
index af051c927d19e674c41f6954c2d3af1eacf58ac8..ad3dba51fd38eb5b519f3563b13c08d069e623e7 100644
--- a/src/uncategorized/pSnatchAndGrab.tw
+++ b/src/uncategorized/pSnatchAndGrab.tw
@@ -58,7 +58,7 @@
 <<link "Bankroll the snatch and grab">>
 	<<replace "#result">>
 	You receive no response whatsoever. Twenty minutes later, however, a liaison VTOL aircraft the mercenaries sometimes hire arrives, loads a party of armed men and women, and leaves.
-	<<set $cash -= 10000>>
+	<<run cashX(-10000, "slaveTransfer")>>
 	<<set $PSnatch = 1>>
 	<</replace>>
 <</link>>
diff --git a/src/uncategorized/pSnatchAndGrabResult.tw b/src/uncategorized/pSnatchAndGrabResult.tw
index 7516c2dc9e4168ef28efd00227848c198445b851..fc415478f1656475cf9e5185019f12b15b16c174 100644
--- a/src/uncategorized/pSnatchAndGrabResult.tw
+++ b/src/uncategorized/pSnatchAndGrabResult.tw
@@ -128,6 +128,7 @@
 <<slaveCost $activeSlave>>
 <<set $slaveCost -= 1000>>
 <<setLocalPronouns $activeSlave>>
+<<set $activeSlave.slaveCost = "10000">>
 
 In the middle of the night, there is a polite knock on your penthouse door. You are alerted by $assistantName, who observes with some irritation that the mercenary who knocked has gone, has left a large case outside the door, and has satisfied the security systems that the case contains nothing hazardous.
 
diff --git a/src/uncategorized/peHeadgirlConcubine.tw b/src/uncategorized/peHeadgirlConcubine.tw
index cacee3dc82b4ff26aea3166c8e0135785a1c0261..4a23a8688e3df5e441ed412e661541568f1808dd 100644
--- a/src/uncategorized/peHeadgirlConcubine.tw
+++ b/src/uncategorized/peHeadgirlConcubine.tw
@@ -179,7 +179,7 @@ and it's also obvious that they've been filling the few minutes they've been wai
 		along your Concubine's <<if $Concubine.bald == 1>>bald<<else>>shaved<</if>> head.
 	<</if>>
 	Your Head Girl's confident assistance managing your chattel and your Concubine's devoted comfort as you work allows you to @@.yellowgreen;be unusually productive@@ all morning.
-	<<set $cash += 1000>>
+	<<run cashX(1000, "event", $HeadGirl)>>
 	<</replace>>
 <</link>>
 <br><<link "Tease them while they meet with you">>
diff --git a/src/uncategorized/pePitFight.tw b/src/uncategorized/pePitFight.tw
index 6e9418848e6bb4826cf5c2f3f04372906484b5a1..09af6791d59e34326d6b8f5ad2dca70dc005be17 100644
--- a/src/uncategorized/pePitFight.tw
+++ b/src/uncategorized/pePitFight.tw
@@ -172,13 +172,13 @@ The umpire announces gravely that the fight is to the death and rings a bell.
 <<if $deadliness > (_opponent + 1)>>
 	$activeSlave.slaveName senses that $he is greatly superior, and decides to make a quick end before $his opponent can try something foolish. $He feints high and stabs low; $his enemy just manages to parry the low stab, but is so much weaker that $activeSlave.slaveName simply overpowers _himU, so that _heU falls onto _hisU back with the force of the clash. $activeSlave.slaveName takes one step forward and runs $his sword through the prostrate slave's heart. This victory has @@.green;won you some renown@@ and @@.yellowgreen;a sum of money@@ from each of the spectators.
 	<<set $rep += 500>>
-	<<set $cash += 5000>>
+	<<run cashX(5000, "pit", $activeSlave)>>
 	<<set $activeSlave.pitKills += 1>>
 	<<set $pitKillsTotal += 1>>
 <<elseif $deadliness > (_opponent)>>
 	The combat is long and exhausting. $activeSlave.slaveName and $his opponent are closely matched in terms of skill, so neither takes foolish risks and a protracted, bloody fight results as both slaves take horrible but non-life-threatening cuts. Finally, $activeSlave.slaveName's superior physical condition wins out and $his opponent falls from exhaustion and blood loss. $activeSlave.slaveName stumbles over to open _hisU throat. This victory has @@.green;won you some renown@@ and @@.yellowgreen;a sum of money@@ from each of the spectators, though $activeSlave.slaveName is @@.red;badly hurt.@@
 	<<set $rep += 500>>
-	<<set $cash += 5000>>
+	<<run cashX(5000, "pit", $activeSlave)>>
 	<<set $activeSlave.health = -50>>
 	<<set $activeSlave.pitKills += 1>>
 	<<set $pitKillsTotal += 1>>
diff --git a/src/uncategorized/persBusiness.tw b/src/uncategorized/persBusiness.tw
index dc88791373b9b2fd33cf68b28acef803c658439f..b0ee2687ada175342b488d09a9b6881e03e0c76b 100644
--- a/src/uncategorized/persBusiness.tw
+++ b/src/uncategorized/persBusiness.tw
@@ -20,8 +20,8 @@
 <</if>>
 
 <<if $cash < 0>>
-	@@.red;You are in debt.@@ This week, interest came to <<print cashFormat((1+Math.trunc(Math.abs($cash)/100)))>>.
-	<<set $cash -= (1+Math.trunc(Math.abs($cash)/100))>>
+	<<set _cashX = cashX(forceNeg(1+Math.trunc(Math.abs($cash)/100)), "personalBusiness")>>
+	@@.red;You are in debt.@@ This week, interest came to <<print cashFormat(_cashX), "personalBusiness")>>.
 	<<if $arcologies[0].FSRomanRevivalist != "unset">>
 		Society @@.red;very strongly disapproves@@ of your being in debt; this damages the idea that you model yourself on what a Roman leader should be.
 		<<= FSChange("RomanRevivalist", -10)>>
@@ -50,39 +50,39 @@
 	<<if $PC.belly >= 1500>>
 		<<if $arcologies[0].FSRepopulationFocus != "unset">>
 			You focus on finding "dates" this week and earn @@.yellowgreen;<<print cashFormat(Math.trunc((_income*($rep/500))+($PC.belly)))>>@@ for your body, much more than usual; guess your pregnancy focused population wants your baby rounded body more than ever. However, doing such things @@.red;damages your reputation@@.
-			<<set $cash += Math.trunc((_income*($rep/500))+($PC.belly))>>
+			<<run cashX(Math.trunc((_income*($rep/500))+($PC.belly)), "personalBusiness")>>
 			<<set $rep = Math.trunc($rep*.90)>>
 		<<elseif $arcologies[0].FSRepopulationFocusPregPolicy == 1>>
 			You focus on finding "dates" this week and earn @@.yellowgreen;<<print cashFormat(Math.trunc((_income*($rep/500))+($PC.belly/2)))>>@@ for your body, more than usual; but that's to be expected, after all, pregnancy is trendy right now. Event still, doing such things @@.red;damages your reputation@@.
-			<<set $cash += Math.trunc((_income*($rep/500))+($PC.belly/2))>>
+			<<run cashX(Math.trunc((_income*($rep/500))+($PC.belly/2)), "personalBusiness")>>
 			<<set $rep = Math.trunc($rep*.90)>>
 		<<elseif $arcologies[0].FSRestart != "unset">>
 			<<if $PC.pregSource != -1 && $PC.pregSource != -6>>
 				You focus on finding "dates" this week and earn @@.yellowgreen;<<print cashFormat(25)>>,@@ barely enough to cover the abortion the john that gave it to you told you to get. Showing off your gravid body @@.red;infuriates your citizens and cripples your reputation@@.
-				<<set $cash += 25>>
+				<<run cashX(25, "personalBusiness")>>
 				<<set $rep = Math.trunc($rep*.25)>>
 				<<if $eugenicsFullControl != 1>>
 					<<set $failedElite += 25>>
 				<</if>>
 			<<else>>
 				You focus on finding "dates" this week and earn @@.yellowgreen;<<print cashFormat(Math.trunc(_income($rep/500)))>>@@ for your body. However, doing such things @@.red;damages your reputation@@.
-				<<set $cash += Math.trunc(_income*($rep/500))>>
+				<<run cashX(Math.trunc(_income*($rep/500)), "personalBusiness")>>
 				<<set $rep = Math.trunc($rep*.75)>>
 			<</if>>
 		<<else>>
 			<<set _income = random(5,2500)>>
 			You focus on finding "dates" this week and earn @@.yellowgreen;<<print cashFormat(Math.trunc(_income*($rep/800)))>>@@ for your body, much less than usual; your pregnancy must be turning off potential clients. However, doing such things @@.red;damages your reputation@@.
-			<<set $cash += Math.trunc(_income*($rep/800))>>
+			<<run cashX(Math.trunc(_income*($rep/800)), "personalBusiness")>>
 			<<set $rep = Math.trunc($rep*.75)>>
 		<</if>>
 	<<else>>
 		You focus on finding "dates" this week and earn @@.yellowgreen;<<print cashFormat(Math.trunc(_income*($rep/500)))>>@@ for your body. However, doing such things @@.red;damages your reputation@@.
-		<<set $cash += Math.trunc(_income*($rep/500))>>
+		<<run cashX(Math.trunc(_income*($rep/500)), "personalBusiness")>>
 		<<set $rep = Math.trunc($rep*.75)>>
 		<<if isPlayerFertile($PC)>>
 			<<if $arcologies[0].FSRepopulationFocus != "unset" && random(1,100) > 80>>
 				A horny client offered you an extra @@.yellowgreen;<<print cashFormat(1000)>>@@ for downing some fertility drugs. You're already forgoing birth control, so what harm could an extra baby do?
-				<<set $cash += 1000>>
+				<<run cashX(1000, "personalBusiness")>>
 				<<set $PC.forcedFertDrugs += 2>>
 			<<elseif random(1,100) > 90>>
 				Your client this week offered you some free pills to make sex more fun. He was right; it made bareback sex feel amazing.
@@ -333,7 +333,7 @@
 	<</if>>
 	<<set _income += Math.trunc(Math.min(3000 * Math.log($cash+1), $cash * 0.07))>>
 	This week, your illicit and legitimate business dealings earned you a combined total of @@.yellowgreen;<<print cashFormat(_income)>>@@.
-	<<set $cash += _income>>
+	<<run cashX(_income, "personalBusiness")>>
 <<elseif ($cash > 1000) && ($personalAttention == "business")>>
 	<<if $PC.belly >= 1500>>
 		<<set _income = random(500,1000)>>
@@ -351,7 +351,7 @@
 		<<set _income += Math.trunc(Math.min(3500 * Math.log($cash), $cash * 0.07))>>
 	<</if>>
 	@@.yellowgreen;<<print cashFormat(_income)>>.@@
-	<<set $cash += _income>>
+	<<run cashX(_income, "personalBusiness")>>
 	<<if $arcologies[0].FSRomanRevivalist != "unset">>
 		Society @@.green;approves@@ of your close attention to your own affairs; this advances your image as a <<if $PC.title == 1>>well-rounded Roman man<<else>>responsible Roman lady<</if>>.
 		<<= FSChange("RomanRevivalist", 2)>>
@@ -359,7 +359,7 @@
 <<elseif ($cash > 1000)>>
 	<<set _income = Math.trunc(Math.min(3000 * Math.log($cash), $cash * 0.07))>>
 	This week, your business endeavors made you @@.yellowgreen;<<print cashFormat(_income)>>.@@
-	<<set $cash += _income>>
+	<<run cashX(_income, "personalBusiness")>>
 <<else>>
 	You have enough cash to manage your affairs, but not enough to do much business.
 <</if>>
@@ -374,7 +374,7 @@
 		<<elseif $proclamationCurrency == "reputation">>
 			<<set $rep = Math.clamp($rep - 4000,0,20000)>>
 		<<else>>
-			<<set $cash -= 8000>>
+			<<run cashX(-8000, "personalBusiness")>>
 		<</if>>
 	<<elseif $proclamationType == "crime">>
 		force the arrest of many suspected citizens. Their personal power allowed them to avoid justice for a long time, but this day is their end. @@.green;Your crime greatly decreased@@.
@@ -384,7 +384,7 @@
 		<<elseif $proclamationCurrency == "reputation">>
 			<<set $rep = Math.clamp($rep - 4000,0,20000)>>
 		<<else>>
-			<<set $cash -= 8000>>
+			<<run cashX(-8000, "personalBusiness")>>
 		<</if>>
 	<</if>>
 	<<set $proclamationsCooldown = 4, $personalAttention = "business">>
@@ -644,7 +644,7 @@
 	<<if $PC.hacking < 100>>
 		<<set $PC.hacking += .5>>
 	<</if>>
-	<<set $cash += _windfall>>
+	<<run cashX(_windfall, "personalBusiness")>>
 
 <</switch>>
 <</if>>
@@ -652,7 +652,8 @@
 <<if $CashForRep == 1>>
 	<<if $cash > 1000>>
 		This week you gave up business opportunities worth <<print cashFormat($policyCost)>> to help deserving citizens, @@.green;burnishing your reputation.@@
-		<<set $rep += 100, $cash -= $policyCost>>
+		<<set $rep += 100>>
+		<<run cashX(foceNeg($policyCost), "policies")>>
 		<<if $PC.degeneracy > 1>>
 			This also helps @@.green;offset any rumors@@ about your private actions.
 			<<set $PC.degeneracy -= 1>>
@@ -664,7 +665,8 @@
 <<if $goodImageCampaign == 1>>
 	<<if $cash > 5000>>
 		This week you paid <<print cashFormat($policyCost)>> to have positive rumors spread about you, @@.green;making you look good<<if $PC.degeneracy > 1>> and weakening existing undesirable rumors<<set $PC.degeneracy -= 2>><</if>>.@@
-		<<set $rep += 50, $cash -= $policyCost>>
+		<<set $rep += 50>>
+		<<run cashX(foceNeg($policyCost), "policies")>>
 	<<else>>
 		You lacked enough extra ¤ to pay people to spread positive rumors about you this week.
 	<</if>>
@@ -672,7 +674,8 @@
 <<if $rep > 100>>
 	<<if $RepForCash == 1>>
 		This week you used your position to secure business opportunities worth <<print cashFormat($policyCost)>> at the expense of citizens, @@.red;damaging your reputation.@@
-		<<set $rep -= 100, $cash += $policyCost>>
+		<<set $rep -= 100>>
+		<<run cashX($policyCost, "personalBusiness")>>
 	<</if>>
 <</if>>
 <<if $rep <= 18000>>
@@ -689,7 +692,7 @@
 <<if $secExp == 1>>
 	<<if $smilingManFate == 0 && random(1,100) >= 85>>
 		This week one of the offside adventures of The Smiling Man produced a copious amount of money, of which @@.yellowgreen;you receive your share@@.
-		<<set $cash += random(10,20) * 1000>>
+		<<run cashX(random(10,20) * 1000, "personalBusiness")>>
 	<</if>>
 
 	<<if $sellData == 1>>
@@ -732,7 +735,7 @@
 			<br>@@.red;Error, dataGain is NaN@@
 		<<else>>
 			You are selling the data collected by your security department, which earns a discreet sum of @@.yellowgreen;<<print cashFormat(_dataGain)>>@@.
-			<<set $cash += _dataGain>>
+			<<run cashX(_dataGain, "personalBusiness")>>
 			Many of your citizens are not enthusiastic of this however, @@.red;damaging your authority@@.
 			<<set $authority -= 50>>
 		<</if>>
@@ -746,7 +749,7 @@
 
 	<<if $arcRepairTime > 0>>
 		The recent rebellion left the arcology wounded and it falls to its owner to fix it. It will still take <<if $arcRepairTime > 1>>$arcRepairTime weeks<<else>>a week<</if>> to finish repair works.
-		<<set $cash -= 5000>>
+		<<run cashX(-5000, "personalBusiness")>>
 		<<set $arcRepairTime--, $PC.engineering += .1>>
 	<</if>>
 <</if>>
@@ -770,7 +773,7 @@ Routine upkeep of your demesne costs @@.yellow;<<print cashFormat($costs)>>.@@
 				<<set $rep -= 100>>
 			<</if>>
 			<<if $cash > 0>>
-				<<set $cash -= _weatherRepairCost>>
+				<<run cashX(_weatherRepairCost, "weather")>>
 			<<elseif $arcologies[0].FSRestartDecoration == 100>>
 				Since you lack the resources to effect prompt repairs yourself, the Societal Elite cover for you. The arcology's prosperity is @@.red;is damaged,@@ but your public reputation is left intact.
 				<<if $eugenicsFullControl != 1>>
@@ -780,14 +783,15 @@ Routine upkeep of your demesne costs @@.yellow;<<print cashFormat($costs)>>.@@
 				<<if $arcologies[0].prosperity > 50>>
 					<<set $arcologies[0].prosperity -= random(5,10), $PC.engineering += .1>>
 				<</if>>
-				<<set $cash -= Math.trunc(_weatherRepairCost/4)>>
+				<<run cashX(forceNeg(Math.trunc(_weatherRepairCost/4)), "weather")>>
 			<<else>>
 				Since you lack the resources to effect prompt repairs yourself, prominent citizens step in to repair their own parts of the arcology. This is @@.red;terrible for your reputation,@@ and it also @@.red;severely reduces the arcology's prosperity.@@
 				<<if $arcologies[0].prosperity > 50>>
 					<<set $arcologies[0].prosperity -= random(5,10), $PC.engineering += .1>>
 				<</if>>
 				<<set $rep = Math.trunc($rep*0.8)>>
-				<<set $cash -= Math.trunc(_weatherRepairCost/4), $PC.engineering += .1>>
+				<<set $PC.engineering += .1>>
+				<<run cashX(forceNeg(Math.trunc(_weatherRepairCost/4)), "weather")>>
 			<</if>>
 		<<elseif $weatherToday.severity-$weatherCladding <= 2>>
 			<<if $weatherToday.severity > 2>>
@@ -801,7 +805,8 @@ Routine upkeep of your demesne costs @@.yellow;<<print cashFormat($costs)>>.@@
 <<if !isInt($costs)>>
 	<br>@@.red;Error, costs is NaN@@
 <</if>>
-<<set $cash -= $costs>>
+
+<<set $costs = (getCost($slaves)*-1)>> /*overwrite the prediction and actually pay the bill.  GetCost should return a negative.*/
 
 <<if $secExp == 1>>
 	<<if $weapManu == 1>>
@@ -848,13 +853,13 @@ Routine upkeep of your demesne costs @@.yellow;<<print cashFormat($costs)>>.@@
 		<<if !isInt(_income)>>
 			<br>@@.red;Error failed to calculate income@@
 		<<else>>
-			<<set $cash += _income>>
+			<<run cashX(_income, "personalBusiness")>>
 		<</if>>
 	<</if>>
 
 	<<if $taxTrade == 1>> <<set _tradeTax = Math.ceil($trade * random(80,120))>>
 		<br>Fees on transitioning goods this week made @@.yellowgreen;<<print cashFormat(_tradeTax)>>.@@
-		<<set $cash += Math.ceil(_tradeTax)>>
+		<<run cashX(Math.ceil(_tradeTax), "personalBusiness")>>
 	<</if>>
 	<br>
 <</if>>
diff --git a/src/uncategorized/personalAssistantOptions.tw b/src/uncategorized/personalAssistantOptions.tw
index da16d69a380a26a06a4b930ac4e5bdb662360db3..f651118d5b026b9ea70d164ba2b0d130ce48ea61 100644
--- a/src/uncategorized/personalAssistantOptions.tw
+++ b/src/uncategorized/personalAssistantOptions.tw
@@ -830,7 +830,8 @@ __Downloadable Appearances:__
 	<<if $assistantExtra2 == 0>>
 		<<if $PC.hacking < 75>>
 			<<link "Purchase a set of heaven and hell themed appearances">>
-				<<set $cash -= Math.trunc(10000*$upgradeMultiplierArcology), $assistantExtra2 = 1, $nextLink = "Personal assistant options">>
+				<<set $assistantExtra2 = 1, $nextLink = "Personal assistant options">>
+				<<run cashX(forceNeg(Math.trunc(10000*$upgradeMultiplierArcology)), "capEx")>>
 				<<goto "Assistant Appearance Pack Two">>
 			<</link>> //Costs <<print cashFormat(Math.trunc(10000*$upgradeMultiplierArcology))>>//
 		<<else>>
diff --git a/src/uncategorized/prestigiousSlave.tw b/src/uncategorized/prestigiousSlave.tw
index 75286ece4c6047532c4acd27693f54356fba16c3..0866b68344e2612917c83827427aa3d807486ed3 100644
--- a/src/uncategorized/prestigiousSlave.tw
+++ b/src/uncategorized/prestigiousSlave.tw
@@ -916,7 +916,7 @@ You check to see if any especially prestigious slaves are on auction. <<if $pres
 
 <br>
 <<if $cash >= $slaveCost>>
-	[[Place that bid|New Slave Intro][$cash -= $slaveCost,$nextButton = "Continue",$nextLink = "AS Dump",$returnTo = "Main"]]
+	[[Place that bid|New Slave Intro][$cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave),$nextButton = "Continue",$nextLink = "AS Dump",$returnTo = "Main"]]
 <<else>>
 	//You lack the necessary funds to place a winning bid.//
 <</if>>
diff --git a/src/uncategorized/reAWOL.tw b/src/uncategorized/reAWOL.tw
index 88f55d599aa92945f5feb77d02d738d9ac66c16b..93c50ae9d56ba4a7aaf1d91bc625bc30a0ae0096 100644
--- a/src/uncategorized/reAWOL.tw
+++ b/src/uncategorized/reAWOL.tw
@@ -167,7 +167,7 @@ Your window of opportunity to act is closing. If you have plans for punishing th
 									Despite the trouble $he has caused you, you manage to complete the legalities and biometric scanning quickly and without incident. Of course, this is in large part due to the fact that the would-be mutineer is of course restrained. Based on the accounts of $his captors and the numerous injuries evident amongst them, $he is likely to be violent when $he is finally released.
 									<br>
 									<<include "New Slave Intro">>
-									<<set $cash -= 5000>>
+									<<run cashX(-5000, "event", $activeSlave)>>
 								<</replace>>
 							<</link>>
 
@@ -176,7 +176,8 @@ Your window of opportunity to act is closing. If you have plans for punishing th
 							<<link "Flog $him in public then exile $him from the arcology">>
 								<<replace "#aliveresult">>
 									An example must be made. There is a binding contract between you and your $mercenariesTitle, and this $woman attempted to undermine it for $his own selfish profit. The protesting bitch is stripped and flogged on the promenade before being escorted bleeding from the arcology. The public @@.green;approves of this harshness.@@
-									<<set $rep += 1000, $cash -= 5000>>
+									<<set $rep += 1000>>
+									<<run cashX(-5000, "event", $activeSlave)>>
 								<</replace>>
 							<</link>>
 
diff --git a/src/uncategorized/reBoomerang.tw b/src/uncategorized/reBoomerang.tw
index d387056486d87c3b3b4acb061a50b7afd350992e..89405f94f27e2c3394b2c965ef60b78ef21f839a 100644
--- a/src/uncategorized/reBoomerang.tw
+++ b/src/uncategorized/reBoomerang.tw
@@ -369,7 +369,7 @@ It isn't obvious how $he managed to escape, though no doubt you could review the
 <</link>>
 <<if $cash >= $contractCost>>
 <br><<link "Obfuscate $his appearance and re-enslave $him">>
-	<<set $cash -= $contractCost>>
+	<<run cashX(forceNeg($contractCost), "slaveTransfer", $activeSlave)>>
 	<<if $familyTesting == 1>>
 		<<if $boomerangStats.PCpregSource > 0 && $PC.preg > 0 && $PC.pregSource == 0>>
 			<<set $PC.pregSource = $activeSlave.ID>>
@@ -468,7 +468,7 @@ It isn't obvious how $he managed to escape, though no doubt you could review the
 	<</replace>>
 <</link>> //This will cost in <<print cashFormat($contractCost)>>.//
 <br><<link "Sell $him immediately">>
-	<<set $cash += $slaveCost>>
+	<<run cashX(forceNeg($slaveCost), "slaveTransfer")>>
 	<<replace "#result">>
 		The penthouse opens, and $activeSlave.slaveName stumbles inside, sobbing $his thanks. $He's immediately conducted to the autosurgery for some quick cosmetic surgery, while you and $assistantName do the necessary work to falsify the arcology records and conceal $his origins. Before $he's even out from under anesthesia, $he's bundled off into one of the hundreds of slave shipments that move between arcologies every day. This time $he'll be sold far enough away that no matter how much of an escape artist $he is, you won't be seeing any more of $him. $He can whine elsewhere.
 		<<set $boomerangStats = 0>>
diff --git a/src/uncategorized/reBrothelFunction.tw b/src/uncategorized/reBrothelFunction.tw
index 50eba5edac9f8c87918c02c96919cd01dee946f6..58268aef3d0cb4f4271d7d6c0ae4739300c3f851 100644
--- a/src/uncategorized/reBrothelFunction.tw
+++ b/src/uncategorized/reBrothelFunction.tw
@@ -22,7 +22,8 @@ The last of these requests comes in the form of a letter, stamped with the heral
 			<<set $slaves[$i].devotion += 4>>
 		<</if>>
 	<</for>>
-	<<set $cash += 10000>>
+	<<run cashX(10000, "brothel")>>
+
 	<</replace>>
 <</link>> //This will earn you <<print cashFormat(10000)>>//
 <br><<link "Give this lady-killing rake a proper send off into retirement">>
@@ -49,7 +50,7 @@ The last of these requests comes in the form of a letter, stamped with the heral
 			<</if>>
 		<</if>>
 	<</for>>
-	<<set $cash += 2000>>
+	<<run cashX(2000, "brothel")>>
 	<</replace>>
 <</link>> //This will earn you <<print cashFormat(2000)>>//
 <br><<link "Welcome the boy into manhood in Free Cities fashion">>
@@ -72,7 +73,7 @@ The last of these requests comes in the form of a letter, stamped with the heral
 			<</if>>
 		<</if>>
 	<</for>>
-	<<set $cash += 1000>>
+	<<run cashX(1000, "brothel")>>
 	<<set $rep += 500>>
 	<</replace>>
 <</link>> //This will earn you <<print cashFormat(1000)>>//
diff --git a/src/uncategorized/reBusyBrothel.tw b/src/uncategorized/reBusyBrothel.tw
index fee3125824e4b87f4635b9c720a5454e7d781697..5bc834a38cddad441942ad3cb8d18afe46b16ee0 100644
--- a/src/uncategorized/reBusyBrothel.tw
+++ b/src/uncategorized/reBusyBrothel.tw
@@ -17,21 +17,25 @@ Of course, $brothelName is the best establishment of its kind in the arcology. C
 	The problem with assembly-line sex is that it has a tendency to destroy any sense of intimacy or fun. So, you make some simple preparations and close the brothel for a day, hiring some freelancers to cover. All your slave whores are allowed to sleep late, and then spend the day with you playing games and enjoying light amusements. The girls are surprised by your generosity, but they have fun. Many of the games are sexually themed. One day of giggling and squealing can't completely reverse the transactionalization of sex for them, but they @@.hotpink;appreciate the effort.@@
 	<<for $i = 0; $i < $BrothiIDs.length; $i++>>
 		<<set $slaves[$slaveIndices[$BrothiIDs[$i]]].devotion += 4>>
+		<<set $slaves[$slaveIndices[$BrothiIDs[$i]]].lastWeeksCashIncome += 250>>
+		<<set $slaves[$slaveIndices[$BrothiIDs[$i]]].lifetimeCashIncome += 250>>
 	<</for>>
-	<<set $cash -= 1000>>
+	<<run cashX(-1000, "event")>>
 	<</replace>>
 <</link>> //This will cost <<print cashFormat(1000)>>//
 <br><<link "Hire an expert hooker to give lessons">>
 	<<replace "#result">>
 	The citizen streetwalker has had her day. A few of the cleverest have avoided being driven into poverty, either by becoming madams or by finding a way to build a new career serving the slave brothel industry. One of these is touring the city, offering her long sexual experience in seminars for slave prostitutes. Her services are not cheap, but it rapidly becomes clear that they are worth it. She is a grey-haired but still elegant woman with deep crow's feet and a smoker's voice. She is not only a sexual master, but a hard-bitten and comprehensively experienced businesswoman. All of your brothel slaves with any room for improvement in their whoring skills @@.green;learn from her lessons,@@ while those who have nothing to learn @@.hotpink;gain confidence@@ from her praise.
 	<<for $i = 0; $i < $BrothiIDs.length; $i++>>
+		<<set $slaves[$slaveIndices[$BrothiIDs[$i]]].lastWeeksCashIncome += 250>>
+		<<set $slaves[$slaveIndices[$BrothiIDs[$i]]].lifetimeCashIncome += 250>>
 		<<if $slaves[$slaveIndices[$BrothiIDs[$i]]].whoreSkill < 100>>
 			<<set $slaves[$i].whoreSkill += 10>>
 		<<else>>
 			<<set $slaves[$slaveIndices[$BrothiIDs[$i]]].devotion += 4>>
 		<</if>>
 	<</for>>
-	<<set $cash -= 2000>>
+	<<run cashX(-2000, "event")>>
 	<</replace>>
 <</link>> //This will cost <<print cashFormat(2000)>>//
 <br><<link "Eliminate prices for one morning to promote the brothel">>
@@ -54,7 +58,7 @@ Of course, $brothelName is the best establishment of its kind in the arcology. C
 		<<set $slaves[_rebb].oralCount += 10>>
 		<<set $oralTotal += 10>>
 	<</for>>
-	<<set $cash -= 2000>>
+	<<run cashX(-2000, "event")>>
 	<<set $rep += 200>>
 	<</replace>>
 <</link>> //This will cost <<print cashFormat(2000)>>//
diff --git a/src/uncategorized/reBusyClub.tw b/src/uncategorized/reBusyClub.tw
index 283ae4f8fa1af618dbba55a656c725dd48901303..8c9c0a9b7ded11790dd7d364ac418e790c43dcb8 100644
--- a/src/uncategorized/reBusyClub.tw
+++ b/src/uncategorized/reBusyClub.tw
@@ -15,14 +15,14 @@ Offering slaves for free sex would become unmanageable if the club where your pu
 <<link "Sponsor a special event in the club">>
 	<<replace "#result">>
 	The Free Cities are new, and so is their culture. There are new traditions, new expectations, and now, new holidays. One morning, the upper classes of the arcology are surprised and gratified to find that the club has been specially decorated, and all the club sluts are nude. The floor of the club is typically meant for dirty dancing and some light sex, not public penetrative intercourse. Not today; today is special. The festivities @@.green;greatly improve your renown;@@ you have set a high bar for what a wealthy arcology owner should do.
-	<<set $cash -= 2000>>
+	<<run cashX(-2000, "event")>>
 	<<set $rep += 500>>
 	<</replace>>
 <</link>> //This will cost <<print cashFormat(2000)>>//
 <br><<link "Host a business exposition">>
 	<<replace "#result">>
 	With the world economy in a perilous state, the Free Cities are one of the few remaining areas where innovation and new business opportunities still appear. The novel markets associated with the slave trade only reinforce this trend, offering a cornucopia of opportunities for the clear-eyed investor with liquid assets. Every other week there is news of a new fortune being made from smart investments in leather, in human growth hormones, or in psychoactive drugs. You host an exposition for slave services centered on the club, with your slaves serving as greeters who are eager to ensure that all the little wants of visiting notables are thoroughly satisfied. The optimistic outlook projected by this event @@.green;improves $arcologies[0].name's business prospects@@ and even @@.green;reflects well on you personally.@@
-	<<set $cash -= 5000>>
+	<<run cashX(-5000, "event")>>
 	<<set $arcologies[0].prosperity += 2>>
 	<<set $rep += 500>>
 	<</replace>>
diff --git a/src/uncategorized/reBusyDairy.tw b/src/uncategorized/reBusyDairy.tw
index 56c362463d64ee07c5d1dd853ad88aae4a805c45..eb2dcd1be7a30d4140d73534275afe800090d8bf 100644
--- a/src/uncategorized/reBusyDairy.tw
+++ b/src/uncategorized/reBusyDairy.tw
@@ -28,14 +28,14 @@ Even with high doses of modern drugs, human cows simply do not produce a very hi
 		<<set $slaves[_rebd].oralCount += 1>>
 		<<set $oralTotal += 1>>
 	<</for>>
-	<<set $cash -= 1000>>
+	<<run cashX(-1000, "event")>>
 	<</replace>>
 <</link>> //This will cost <<print cashFormat(1000)>>//
 <<if $club != 0>>
 <br><<link "Add fresh milk to the club for a day to advertise">>
 	<<replace "#result">>
 	Sexual sights and sounds are all over the arcology. Nevertheless, passersby on the club are surprised to find one morning that a previously normal screen advertising your brand of milk has a luscious pair of breasts protruding through it at head height. The advertisement encourages anyone to try a free sample. The slaves constantly rotate, pressing fresh tits through the gap for public suckling. It is @@.green;generally agreed that your product is of the finest quality@@ and you even have enquiries about how it might be exported outside the arcology, should you manage to increase production.
-	<<set $cash -= 2000>>
+	<<run cashX(-2000, "event")>>
 	<<set $rep += 500>>
 	<</replace>>
 <</link>> //This will cost <<print cashFormat(2000)>>//
@@ -45,7 +45,7 @@ Even with high doses of modern drugs, human cows simply do not produce a very hi
 		<<replace "#result">>
 		As a promotional gimmick, you announce with considerable fanfare a special, experimental brand of milk, available at the normal price for a short time only. The milk will be unique in that it will be from cows fed mostly on slaves' cum; the cockmilked slaves will in turn be given as much milk as possible to produce a 'pure slave product,' recursively. The sad realities of nutrition stop it from being much more than a marketing ploy, but it's certainly a @@.green;successful@@ attempt to spark discussion.
 	<<set $rep += 1000>>
-	<<set $cash -= 1000>>
+	<<run cashX(-1000, "event")>>
 		<</replace>>
 	<</link>> //This will cost <<print cashFormat(1000)>>//
 <</if>>
diff --git a/src/uncategorized/reDevotees.tw b/src/uncategorized/reDevotees.tw
index 0e341fd9ee33599955b12911dc9f2b51c1195260..53aa88c37830576f0b06b38b1552b5117078aa84 100644
--- a/src/uncategorized/reDevotees.tw
+++ b/src/uncategorized/reDevotees.tw
@@ -37,11 +37,15 @@ You have a mature, well-trained household of slaves. $slaves[_red1].slaveName, $
 <br><<link "Visit a casino in good company">>
 	<<replace "#result">>
 	The croupiers, bouncers and regulars down at the nearest casino hardly know what to think when you appear with a chit full of cash and twice as many girls as you have arms. You live the night big, starting at the poker table with so many tits and asses on display behind you that, @@.yellowgreen;baby, you make a killing.@@ $slaves[_red1].slaveName, $slaves[_red2].slaveName, $slaves[_red3].slaveName, and $slaves[_red4].slaveName quickly catch the rhythm of the place: slaves can get away with a little more in the smoky, whiskey soaked, money tinted atmosphere, and they @@.hotpink;enjoy themselves immensely.@@ They flirt, flash, giggle, kiss each other, and generally destroy the concentration of everyone within twenty <<if $showInches == 2>>yards<<else>>meters<</if>> — except you. Ring-a-ding-ding.
+	<<set _cashX = random(30,100)*3>>
 	<<set $slaves[_red1].devotion += 4>>
+	<<run cashX(_cashX, "event", $slaves[_red1])>>
 	<<set $slaves[_red2].devotion += 4>>
+	<<run cashX(_cashX, "event", $slaves[_red2])>>
 	<<set $slaves[_red3].devotion += 4>>
+	<<run cashX(_cashX, "event", $slaves[_red3])>>
 	<<set $slaves[_red4].devotion += 4>>
-	<<set $cash += random(30,100)*10>>
+	<<run cashX(_cashX, "event", $slaves[_red4])>>
 	<</replace>>
 <</link>>
 </span>
diff --git a/src/uncategorized/reFSAcquisition.tw b/src/uncategorized/reFSAcquisition.tw
index a00008de67d46e11743456c5cd60f7e6f01e85b9..ce9b69ac8ac2b83a8d04198f38552279fcad1ef0 100644
--- a/src/uncategorized/reFSAcquisition.tw
+++ b/src/uncategorized/reFSAcquisition.tw
@@ -1328,7 +1328,7 @@ The call comes in from an office, and you suppress the urge to check whether $as
 <span id="result">
 <<if $cash >= $contractCost>>
 <<link "Enslave $him">>
-	<<set $cash -= $contractCost>>
+	<<run cashX(forceNeg($contractCost), "slaveTransfer", $activeSlave)>>
 	<<replace "#result">>
 	<<switch $FSAcquisitionEvents>>
 	<<case "Pastoralist">>
@@ -1421,7 +1421,7 @@ The call comes in from an office, and you suppress the urge to check whether $as
 	<</replace>>
 <</link>> //This will cost <<print cashFormat($contractCost)>>//
 <br><<link "Sell $him immediately">>
-	<<set $cash += $slaveCost>>
+	<<run cashX(forceNeg($slaveCost), "slaveTransfer")>>
 	<<replace "#result">>
 	<<switch $FSAcquisitionEvents>>
 	<<case "Pastoralist">>
diff --git a/src/uncategorized/reFSEgyptianRevivalistAcquisition.tw b/src/uncategorized/reFSEgyptianRevivalistAcquisition.tw
index 7afd0bf36b709e1930b51243b63fd8e5a88c2b8e..8c07ba8dc74d713ac8800de81564d42b20017092 100644
--- a/src/uncategorized/reFSEgyptianRevivalistAcquisition.tw
+++ b/src/uncategorized/reFSEgyptianRevivalistAcquisition.tw
@@ -46,7 +46,7 @@ This call is coming from a public kiosk, which is usually an indication that the
 <br><br>
 <span id="result">
 <<if $cash >= $contractCost>>
-[[Enslave the pair|RE FSEgyptianRevivalist acquisition workaround][$sibling = $activeSlave, $cash -= ($contractCost)]]
+[[Enslave the pair|RE FSEgyptianRevivalist acquisition workaround][$sibling = $activeSlave]]/*Billing will happen past the link based on $contractCost*/
 <<else>>
 	//You lack the necessary funds to enslave them.//
 <</if>>
diff --git a/src/uncategorized/reFSEgyptianRevivalistAcquisitionWorkaround.tw b/src/uncategorized/reFSEgyptianRevivalistAcquisitionWorkaround.tw
index b3ddc6de9f8e8f80c625353a63750d8829843223..57c2aaf511fb437d0d361f47b9e28e4e0a3d4958 100644
--- a/src/uncategorized/reFSEgyptianRevivalistAcquisitionWorkaround.tw
+++ b/src/uncategorized/reFSEgyptianRevivalistAcquisitionWorkaround.tw
@@ -4,6 +4,7 @@
 They arrive hand-in-hand and don't let go of each other until the end of the enslavement process, and even after they break their grip and undress at your instruction, their eyes never stray far from each other. With a closer look at them, their blood relation is as obvious as their infatuation with one another. No wonder they couldn't keep it a secret.
 
 <<run newSlave($sibling)>>
+<<run cashX(($contractCost/2), "slaveTransfer", $sibling)>>
 
 <<set _secondSlave = clone($activeSlave)>>
 
@@ -98,3 +99,4 @@ They arrive hand-in-hand and don't let go of each other until the end of the ens
 <</if>>
 
 <<run newSlave(_secondSlave)>>
+<<run cashX(($contractCost/2), "slaveTransfer", _secondSlave)>>
diff --git a/src/uncategorized/reFSNonconformist.tw b/src/uncategorized/reFSNonconformist.tw
index fb3e5625ca5d1855bdff02bd9ab6d5a977d7da0d..8c36dd1a60c98f979f565e47ad18523b409dbd28 100644
--- a/src/uncategorized/reFSNonconformist.tw
+++ b/src/uncategorized/reFSNonconformist.tw
@@ -214,7 +214,7 @@ The nonconformist is far too prominent and prosperous to make this an easy dilem
 <</link>>
 <<if $cash > 10000>>
 <br><<link "Quickly manage a nuanced response">>
-	<<set $cash -= 10000>>
+	<<run cashX(-10000, "event")>>
 	<<replace "#result">><<nobr>>
 <<if $arcologies[0].FSRestart != "unset">>
 	You promise to deal with the situation. The Societal Elite trust you to not fail, and they are not disappointed. The fallen elite
diff --git a/src/uncategorized/reFormerAbolitionist.tw b/src/uncategorized/reFormerAbolitionist.tw
index 4061207c9607626d099780e4182085c8e46d2131..9692f93bc0a29bac6243821e7f9a6d365dd9de5b 100644
--- a/src/uncategorized/reFormerAbolitionist.tw
+++ b/src/uncategorized/reFormerAbolitionist.tw
@@ -34,7 +34,7 @@ You spend the week parading $activeSlave.slaveName around in public, letting eve
 You fasten $activeSlave.slaveName in a kneeling position in the center of your club, secured by shackles around $his wrists and ankles - purely decorative, since $he's so devoted $he'd perform $his role in this if you just hinted it would please you if $he did. In front of $him, you place a sign: "Fuck the mouth that preached abolitionism, <<print cashFormat(5)>>." In a few moments, the morning crowd will begin to arrive, and you have no doubt that $activeSlave.slaveName will be very, very popular. And $he is. Even with an extra dose of curatives and a check-up every night, the strain of a week of dicks and a diet of cum @@.red;has taken a toll on $his health.@@ But even after you pay to have the area that $activeSlave.slaveName worked thoroughly cleaned, you have made @@.yellowgreen;a tidy profit@@.
 	<<set $activeSlave.health -= 10>>
 	<<set $activeSlave.oralCount += random(410,440)>>
-	<<set $cash += 2000>>
+	<<run cashX(2000, "event", $activeSlave)>>
 	<</replace>>
 <</link>>
 <br><<link "Invest <<print cashFormat(5000)>> in making $him locally famous">>
@@ -42,7 +42,7 @@ You fasten $activeSlave.slaveName in a kneeling position in the center of your c
 	<<if random(1,100) > 50>>
 		<<replace "#result">>
 You buy media coverage of $him, invest in an ad campaign, and even arrange for $him to give a speech denouncing the abolitionist movement and praising your efforts in fighting against them. Your efforts are a success. $His current extreme popularity will fade in time, but you have managed to arrange for $him a permanent place as an @@.green;example of your slave-breaking skills.@@
-		<<set $cash -= 5000>>
+		<<run cashX(-5000, "event", $activeSlave)>>
 		<<set $rep += 200>>
 		<<set $activeSlave.prestige = 1>>
 		<<set $activeSlave.prestigeDesc = "She is notorious as a former abolitionist turned devoted slave.">>
@@ -50,7 +50,7 @@ You buy media coverage of $him, invest in an ad campaign, and even arrange for $
 	<<else>>
 		<<replace "#result">>
 You buy media coverage of $him, invest in an ad campaign, and even arrange for $him to give a speech denouncing the abolitionist movement and praising your efforts in fighting against them. Unfortunately, popularity remains an art, not a science; though you do your best, the public mind's fancy eludes your grasp. As $his owner, your reputation has @@.green;increased,@@ but in a week $he'll be forgotten.
-		<<set $cash -= 5000>>
+		<<run cashX(-5000, "event", $activeSlave)>>
 		<<set $rep += 200>>
 		<</replace>>
 	<</if>>
@@ -60,7 +60,7 @@ You buy media coverage of $him, invest in an ad campaign, and even arrange for $
 	<<if random(1,100) > 10>>
 		<<replace "#result">>
 You buy prime media coverage of $him, invest in a lavish ad campaign, and even arrange for $him to give a speech denouncing the abolitionist movement and praising your efforts in fighting against them that is broadcast around the world. Your efforts are a success. $His current extreme popularity will fade in time, but you have managed to arrange for $him a permanent place as an @@.green;example of your slave-breaking skills.@@
-		<<set $cash -= 10000>>
+		<<run cashX(-10000, "event", $activeSlave)>>
 		<<set $rep += 400>>
 		<<set $activeSlave.prestige = 1>>
 		<<set $activeSlave.prestigeDesc = "She is notorious as a former abolitionist turned devoted slave.">>
@@ -68,7 +68,7 @@ You buy prime media coverage of $him, invest in a lavish ad campaign, and even a
 	<<else>>
 		<<replace "#result">>
 You buy prime media coverage of $him, invest in a lavish ad campaign, and even arrange for $him to give a speech denouncing the abolitionist movement and praising your efforts in fighting against them that is broadcast around the world. Unfortunately, popularity remains an art, not a science; though you do your best, the public mind's fancy eludes your grasp. As $his owner, your reputation has @@.green;increased,@@ but in a week $he'll be forgotten.
-		<<set $cash -= 10000>>
+		<<run cashX(-10000, "event", $activeSlave)>>
 		<<set $rep += 400>>
 		<</replace>>
 	<</if>>
@@ -79,7 +79,7 @@ You buy prime media coverage of $him, invest in a lavish ad campaign, and even a
 	<<if random(1,100) > 50>>
 		<<replace "#result">>
 The world is in love with $activeSlave.slaveName. $His face graces magazine covers the world over and $his passionate arguments (ghostwritten by the best spin doctors money can buy) spark debate everywhere they're heard. $He is mentioned by name in strident denunciations about the immorality of the present day from religious leaders. $He appears on the internet with all sorts of attempts at humor superimposed on $his image. $His loving and overblown descriptions of you spark a new trend in protagonists of badly-written romance novels. When a very popular talk show host attempts to call $his bluff and receives oral sex in front of a live studio audience, @@.yellowgreen;you know for sure that $his fame has stuck.@@
-		<<set $cash -= 25000>>
+		<<run cashX(-25000, "event", $activeSlave)>>
 		<<set $rep += 600>>
 		<<set $activeSlave.prestige = 2>>
 		<<set $activeSlave.prestigeDesc = "She is world famous as an anti-abolitionist, and has told the world at length of the joys of slavery in general and slavery to you in particular.">>
@@ -87,7 +87,7 @@ The world is in love with $activeSlave.slaveName. $His face graces magazine cove
 	<<else>>
 		<<replace "#result">>
 The world seems temporarily enamored with $activeSlave.slaveName as $he appears on talk shows and in political debates with millions of watchers, but before long $his fifteen minutes of fame peter out and the only offers coming in are from pornography magnates and local talk radio shows. Though $he achieved @@.yellowgreen;local fame@@ for appearing on the world stage, the rest of the world seems to have gotten bored with $activeSlave.slaveName.
-		<<set $cash -= 25000>>
+		<<run cashX(-25000, "event", $activeSlave)>>
 		<<set $activeSlave.prestige = 1>>
 		<<set $activeSlave.prestigeDesc = "She is notorious as a former abolitionist turned devoted slave.">>
 		<<set $rep += 400>>
diff --git a/src/uncategorized/reLegendaryBalls.tw b/src/uncategorized/reLegendaryBalls.tw
index 3dc3acc512cb15e9790347e6316ce603a479fd26..2fb0859bc12ca63c9b4d9342d13df3f49f0c0869 100644
--- a/src/uncategorized/reLegendaryBalls.tw
+++ b/src/uncategorized/reLegendaryBalls.tw
@@ -42,7 +42,7 @@ This is a rare opportunity. The idea of cockmilking is new and understandably fa
 	<<if random(1,100) > 50>>
 		<<replace "#result">>
 		$activeSlave.slaveName is shown in public, closely inspected by the judging committee, and then publicly cockmilked. Several of the judges cannot resist giving you a wink as they look $him over. $activeSlave.slaveName is unsurprisingly named best in show, and will be @@.green;remembered@@ as cock stock of the highest pedigree. As $his owner, your reputation has @@.green;also increased.@@
-		<<set $cash -= 5000>>
+		<<run cashX(-5000, "event", $activeSlave)>>
 		<<set $rep += 100>>
 		<<set $activeSlave.prestige = 1>>
 		<<set $activeSlave.prestigeDesc = "She is remembered for winning best in show as a cockmilker.">>
@@ -52,7 +52,7 @@ This is a rare opportunity. The idea of cockmilking is new and understandably fa
 	<<else>>
 		<<replace "#result">>
 		$activeSlave.slaveName is shown in public, closely inspected by the judging committee, and then publicly cockmilked. Several of the judges cannot resist giving you a wink as they look $him over, but others look disapprovingly at them; it seems some of your competitors also forwarded money to the committee. After furious wrangling, $activeSlave.slaveName loses to another milker. The public is impressed with $activeSlave.slaveName's balls anyway; as you are $his owner, your reputation has @@.green;increased@@ a little.
-		<<set $cash -= 5000>>
+		<<run cashX(-5000, "event", $activeSlave)>>
 		<<set $rep += 100>>
 		<</replace>>
 	<</if>>
@@ -62,7 +62,7 @@ This is a rare opportunity. The idea of cockmilking is new and understandably fa
 	<<if random(1,100) > 10>>
 		<<replace "#result">>
 		$activeSlave.slaveName is shown in public, closely inspected by the judging committee, and then publicly cockmilked. After $he's put through $his paces, the most unfortunate series of accidents somehow befalls $his fellow cows. One is taken ill, another seems drugged, and someone seems to have slipped a finger of raw ginger up another's urethra, making them whine and squeal when cockmilked. $activeSlave.slaveName is unsurprisingly named best in show, and will be @@.green;remembered@@ as cock stock of the highest pedigree. As $his owner, your reputation has @@.green;also increased.@@
-		<<set $cash -= 10000>>
+		<<run cashX(-10000, "event", $activeSlave)>>
 		<<set $rep += 100>>
 		<<set $activeSlave.prestige = 1>>
 		<<set $activeSlave.prestigeDesc = "She is remembered for winning best in show as a cockmilker.">>
@@ -72,7 +72,7 @@ This is a rare opportunity. The idea of cockmilking is new and understandably fa
 	<<else>>
 		<<replace "#result">>
 		$activeSlave.slaveName is shown in public, closely inspected by the judging committee, and then publicly cockmilked. You are surprised to see that the judging committee has been changed at the last minute. They choose another cow as best in show. There are persistent @@.red;rumors@@ after the show that there was an absolute massacre of firings at the stock organization headquarters the night before the show after it was discovered that someone, widely thought to be you, had been corrupting the judges.
-		<<set $cash -= 10000>>
+		<<run cashX(-10000, "event", $activeSlave)>>
 		<<set $rep -= 100>>
 		<</replace>>
 	<</if>>
diff --git a/src/uncategorized/reLegendaryCow.tw b/src/uncategorized/reLegendaryCow.tw
index 3bbb5cbb6141bf7cf2f11bb9b5b9b47fb695ce77..da92f02f430f7e31d67df72a19d2736e0467460c 100644
--- a/src/uncategorized/reLegendaryCow.tw
+++ b/src/uncategorized/reLegendaryCow.tw
@@ -42,7 +42,7 @@ This is a rare opportunity. The idea of human dairy is new and understandably fa
 	<<if random(1,100) > 50>>
 		<<replace "#result">>
 		$activeSlave.slaveName is shown in public, closely inspected by the judging committee, and then publicly milked. Several of the judges cannot resist giving you a wink as they look $him over. $activeSlave.slaveName is unsurprisingly named best in show, and will be @@.green;remembered@@ as dairy stock of the highest pedigree. As $his owner, your reputation has @@.green;also increased.@@
-		<<set $cash -= 5000>>
+		<<run cashX(-5000, "event", $activeSlave)>>
 		<<set $rep += 100>>
 		<<set $activeSlave.prestige = 1>>
 		<<set $activeSlave.prestigeDesc = "She is remembered for winning best in show as a dairy cow.">>
@@ -52,7 +52,7 @@ This is a rare opportunity. The idea of human dairy is new and understandably fa
 	<<else>>
 		<<replace "#result">>
 		$activeSlave.slaveName is shown in public, closely inspected by the judging committee, and then publicly milked. Several of the judges cannot resist giving you a wink as they look $him over, but others look disapprovingly at them; it seems some of your competitors also forwarded money to the committee. After furious wrangling, $activeSlave.slaveName loses to another cow. The public is impressed with $activeSlave.slaveName's tits anyway; as you are $his owner, your reputation has @@.green;increased@@ a little.
-		<<set $cash -= 5000>>
+		<<run cashX(-5000, "event", $activeSlave)>>
 		<<set $rep += 100>>
 		<</replace>>
 	<</if>>
@@ -62,7 +62,7 @@ This is a rare opportunity. The idea of human dairy is new and understandably fa
 	<<if random(1,100) > 10>>
 		<<replace "#result">>
 		$activeSlave.slaveName is shown in public, closely inspected by the judging committee, and then publicly milked. After $he's put through $his paces, the most unfortunate series of accidents somehow befalls $his fellow cows. One is taken ill, another seems drugged, and someone seems to have slipped a finger of raw ginger up another's ass, making them whine and squeal constantly. $activeSlave.slaveName is unsurprisingly named best in show, and will be @@.green;remembered@@ as dairy stock of the highest pedigree. As $his owner, your reputation has @@.green;also increased.@@
-		<<set $cash -= 10000>>
+		<<run cashX(-10000, "event", $activeSlave)>>
 		<<set $rep += 100>>
 		<<set $activeSlave.prestige = 1>>
 		<<set $activeSlave.prestigeDesc = "She is remembered for winning best in show as a dairy cow.">>
@@ -72,7 +72,7 @@ This is a rare opportunity. The idea of human dairy is new and understandably fa
 	<<else>>
 		<<replace "#result">>
 		$activeSlave.slaveName is shown in public, closely inspected by the judging committee, and then publicly milked. You are surprised to see that the judging committee has been changed at the last minute. They choose another cow as best in show. There are persistent @@.red;rumors@@ after the show that there was an absolute massacre of firings at the dairy organization headquarters the night before the show after it was discovered that someone, widely thought to be you, had been corrupting the judges.
-		<<set $cash -= 10000>>
+		<<run cashX(-10000, "event", $activeSlave)>>
 		<<set $rep -= 100>>
 		<</replace>>
 	<</if>>
diff --git a/src/uncategorized/reLegendaryEntertainer.tw b/src/uncategorized/reLegendaryEntertainer.tw
index fc52eb1642f82307a8060242e26eb6fc94882d7e..a9162bf16beaea263f974b131f40ce135cfe3ce4 100644
--- a/src/uncategorized/reLegendaryEntertainer.tw
+++ b/src/uncategorized/reLegendaryEntertainer.tw
@@ -31,7 +31,7 @@ This is a rare opportunity. Such popularity and fame is here today, and gone tom
 	<<if random(1,100) > 50>>
 		<<replace "#result">>
 		You buy media coverage of $him, invest in an ad campaign, and even arrange for persons of influence and taste to sample and review $his gentle caresses. Your efforts are a success. $His current extreme popularity will fade in time, but you have managed to arrange for $him a permanent place as a @@.green;respected and famous courtesan.@@ As $his owner, your reputation has @@.green;also increased.@@
-		<<set $cash -= 5000>>
+		<<run cashX(-5000, "event", $activeSlave)>>
 		<<set $rep += 200>>
 		<<if $activeSlave.prestige <= 1>>
 			<<set $activeSlave.prestige = 1>>
@@ -43,7 +43,7 @@ This is a rare opportunity. Such popularity and fame is here today, and gone tom
 	<<else>>
 		<<replace "#result">>
 		You buy media coverage of $him, invest in an ad campaign, and even arrange for persons of influence and taste to sample and review $his gentle caresses. Unfortunately, popularity remains an art, not a science; though you do your best, the public mind's fancy eludes your grasp. As $his owner, your reputation has @@.green;increased,@@ but in a week $he'll be forgotten.
-		<<set $cash -= 5000>>
+		<<run cashX(-5000, "event", $activeSlave)>>
 		<<set $rep += 200>>
 		<</replace>>
 	<</if>>
@@ -53,7 +53,7 @@ This is a rare opportunity. Such popularity and fame is here today, and gone tom
 	<<if random(1,100) > 10>>
 		<<replace "#result">>
 		You buy prime media coverage of $him, invest in a lavish ad campaign, and even arrange for persons of great influence and fine taste to sample and review $his gentle caresses. Your efforts are a success. $His current extreme popularity will fade in time, but you have managed to arrange for $him a permanent place as a @@.green;respected and famous courtesan.@@ As $his owner, your reputation has @@.green;also increased.@@
-		<<set $cash -= 10000>>
+		<<run cashX(-10000, "event", $activeSlave)>>
 		<<set $rep += 400>>
 		<<if $activeSlave.prestige <= 1>>
 			<<set $activeSlave.prestige = 1>>
@@ -65,7 +65,7 @@ This is a rare opportunity. Such popularity and fame is here today, and gone tom
 	<<else>>
 		<<replace "#result">>
 		You buy prime media coverage of $him, invest in a lavish ad campaign, and even arrange for persons of great influence and fine taste to sample and review $his gentle caresses. Unfortunately, popularity remains an art, not a science; though you do your best, the public mind's fancy eludes your grasp. As $his owner, your reputation has @@.green;increased,@@ but in a week $he'll be forgotten.
-		<<set $cash -= 10000>>
+		<<run cashX(-10000, "event", $activeSlave)>>
 		<<set $rep += 400>>
 		<</replace>>
 	<</if>>
diff --git a/src/uncategorized/reLegendaryWhore.tw b/src/uncategorized/reLegendaryWhore.tw
index eb794180b0fdd18664ad5a79125308dec1bbff02..b546dc972edbe814fda9fdcbfcbe0ce55268bf21 100644
--- a/src/uncategorized/reLegendaryWhore.tw
+++ b/src/uncategorized/reLegendaryWhore.tw
@@ -23,7 +23,7 @@ This is a rare opportunity. Such popularity and fame is here today, and gone tom
 	<<EventNameDelink $activeSlave>>
 	<<replace "#result">>
 	You decide to limit your advantage on $his temporary popularity to a little marketing and some minor price increases. You've made some unexpected @@.yellowgreen;profits,@@ and gained a little @@.green;notoriety.@@
-	<<set $cash += 1000>>
+	<<run cashX(1000, "event", $slaves[$i])>>
 	<<set $rep += 100>>
 	<</replace>>
 <</link>>
@@ -32,7 +32,7 @@ This is a rare opportunity. Such popularity and fame is here today, and gone tom
 	<<if random(1,100) > 50>>
 		<<replace "#result">>
 		You buy media coverage of $him, invest in an ad campaign, and even arrange for persons of influence and taste to sample and review $his many delights. Your efforts are a success. $His current extreme popularity will fade in time, but you have managed to arrange for $him a permanent place as a @@.green;notorious and very popular prostitute.@@ As $his owner, your reputation has @@.green;also increased.@@
-		<<set $cash -= 5000>>
+		<<run cashX(-5000, "event", $activeSlave)>>
 		<<set $rep += 100>>
 		<<set $activeSlave.prestige = 1>>
 		<<set $activeSlave.prestigeDesc = "She is a famed Free Cities whore, and commands top prices.">>
@@ -42,7 +42,7 @@ This is a rare opportunity. Such popularity and fame is here today, and gone tom
 	<<else>>
 		<<replace "#result">>
 		You buy media coverage of $him, invest in an ad campaign, and even arrange for persons of influence and taste to sample and review $his many delights. Unfortunately, popularity remains an art, not a science; though you do your best, the public mind's fancy eludes your grasp. As $his owner, your reputation has @@.green;increased,@@ but in a week she'll be forgotten.
-		<<set $cash -= 5000>>
+		<<run cashX(-5000, "event", $activeSlave)>>
 		<<set $rep += 100>>
 		<</replace>>
 	<</if>>
@@ -52,7 +52,7 @@ This is a rare opportunity. Such popularity and fame is here today, and gone tom
 	<<if random(1,100) > 10>>
 		<<replace "#result">>
 		You buy prime media coverage of $him, invest in a lavish ad campaign, and even arrange for persons of great influence and fine taste to sample and review $his many delights. Your efforts are a success. $His current extreme popularity will fade in time, but you have managed to arrange for $him a permanent place as a @@.green;notorious and very popular prostitute.@@ As $his owner, your reputation has @@.green;also increased.@@
-		<<set $cash -= 10000>>
+		<<run cashX(-10000, "event", $activeSlave)>>
 		<<set $rep += 200>>
 		<<set $activeSlave.prestige = 1>>
 		<<set $activeSlave.prestigeDesc = "She is a famed Free Cities whore, and commands top prices.">>
@@ -62,7 +62,7 @@ This is a rare opportunity. Such popularity and fame is here today, and gone tom
 	<<else>>
 		<<replace "#result">>
 		You buy prime media coverage of $him, invest in a lavish ad campaign, and even arrange for persons of great influence and fine taste to sample and review $his many delights. Unfortunately, popularity remains an art, not a science; though you do your best, the public mind's fancy eludes your grasp. As $his owner, your reputation has @@.green;increased,@@ but in a week she'll be forgotten.
-		<<set $cash -= 10000>>
+		<<run cashX(-10000, "event", $activeSlave)>>
 		<<set $rep += 200>>
 		<</replace>>
 	<</if>>
diff --git a/src/uncategorized/reMalefactor.tw b/src/uncategorized/reMalefactor.tw
index 9a6b527c58dd443386b35315faeb523f72403258..a2a54aac5e629fae7378b40f733ed562c77b0b82 100644
--- a/src/uncategorized/reMalefactor.tw
+++ b/src/uncategorized/reMalefactor.tw
@@ -333,7 +333,7 @@ $He is easily taken into custody and $his contraband confiscated once the jeerin
 <<case "liberator">>
 
 <<setNonlocalPronouns $seeDicks>>
-<<if $assistantName == "your personal assistant">>Your personal assistant<<else>>$assistantName<</if>> alerts you that a criminal has been detected by your security systems and detained by the drones. Crime is extremely uncommon in your arcology, but this is a special case. A well-muscled, well-armed $woman was caught attempting to smuggle a slave owned by one of your tenants out of the arcology. Though the slave surrendered immediately (and will be dealt with by _hisU owner), the would-be liberatrix was caught by your security drones. $He destroyed two of them and caused @@.red;other minor damage@@<<set $cash -= 1000>> that will require a small sum to repair, but was eventually subdued. The drones had to expend a great deal of nonlethal ordnance to bring $him down and keep $him down, but $he is now entirely at your mercy.
+<<if $assistantName == "your personal assistant">>Your personal assistant<<else>>$assistantName<</if>> alerts you that a criminal has been detected by your security systems and detained by the drones. Crime is extremely uncommon in your arcology, but this is a special case. A well-muscled, well-armed $woman was caught attempting to smuggle a slave owned by one of your tenants out of the arcology. Though the slave surrendered immediately (and will be dealt with by _hisU owner), the would-be liberatrix was caught by your security drones. $He destroyed two of them and caused @@.red;other minor damage@@<<run cashX(-1000, "event", $activeSlave)>> that will require a small sum to repair, but was eventually subdued. The drones had to expend a great deal of nonlethal ordnance to bring $him down and keep $him down, but $he is now entirely at your mercy.
 
 <</switch>>
 
@@ -354,7 +354,7 @@ $He is easily taken into custody and $his contraband confiscated once the jeerin
 <span id="result">
 <<if $cash >= $contractCost>>
 	<<link "Enslave $him">>
-		<<set $cash -= $contractCost>>
+		<<run cashX(forceNeg($contractCost), "slaveTransfer", $activeSlave)>>
 		<<replace "#result">>
 		<<switch $malefactor>>
 		<<case "addict">>
@@ -394,7 +394,7 @@ $He is easily taken into custody and $his contraband confiscated once the jeerin
 			<<set _fuckCount += _fuckCount/2>>
 		<</if>>
 		<<if $activeSlave.publicCount>><<set $activeSlave.publicCount += _fuckCount>><<else>><<set $activeSlave.publicCount = _fuckCount>><</if>>
-		<<set $cash -= $contractCost>>
+		<<run cashX(forceNeg($contractCost), "slaveTransfer", $activeSlave)>>
 		<<replace "#result">>
 		<<switch $malefactor>>
 		<<case "addict">>
@@ -427,7 +427,7 @@ $He is easily taken into custody and $his contraband confiscated once the jeerin
 		<<= assignJob($activeSlave, "be confined in the arcade")>>
 		<<set $activeSlave.choosesOwnAssignment = 0>>
 		<<set $activeSlave.sentence = 4>>
-		<<set $cash -= $contractCost>>
+		<<run cashX(forceNeg($contractCost), "slaveTransfer", $activeSlave)>>
 		<<replace "#result">>
 		<<switch $malefactor>>
 		<<case "addict">>
@@ -451,7 +451,7 @@ $He is easily taken into custody and $his contraband confiscated once the jeerin
 	<<if $dairyRestraintsSetting > 1>>
 	<br><<link "Enslave $him and send $him straight to the industrial dairy">>
 		<<= assignJob($activeSlave, "work in the dairy")>>
-		<<set $cash -= $contractCost>>
+		<<run cashX(forceNeg($contractCost), "slaveTransfer", $activeSlave)>>
 		<<replace "#result">>
 		<<switch $malefactor>>
 		<<case "addict">>
@@ -484,7 +484,7 @@ $He is easily taken into custody and $his contraband confiscated once the jeerin
 		<<set $activeSlave.amp = 1>>
 		<<set $activeSlave.heels = 0>>
 		<<set $activeSlave.behavioralFlaw = "odd">>
-		<<set $cash -= $contractCost>>
+		<<run cashX(forceNeg($contractCost), "slaveTransfer", $activeSlave)>>
 		<<replace "#result">>
 		<<switch $malefactor>>
 		<<case "addict">>
@@ -516,7 +516,7 @@ $He is easily taken into custody and $his contraband confiscated once the jeerin
 		<<set $activeSlave.balls = 0>>
 		<<set $activeSlave.devotion -= 25>>
 		<<set $activeSlave.trust -= 25>>
-		<<set $cash -= $contractCost>>
+		<<run cashX(forceNeg($contractCost), "slaveTransfer", $activeSlave)>>
 		<<replace "#result">>
 		Video feeds from your remote surgery are made public as the protesting criminal is strapped down and gelded. $He is so utterly broken by this turn of events that you complete the legalities and biometric scanning without fuss. The condemned sobs weakly throughout the process until you grow tired of the whining and apply punishment. Then it's off to the penthouse for basic slave induction. The public @@.green;approves of this harshness,@@ which increases your arcology's prosperity by @@.green;giving it a reputation for swift and terrible justice.@@
 		<<set $rep += 100>>
@@ -531,7 +531,7 @@ $He is easily taken into custody and $his contraband confiscated once the jeerin
 		<<set $activeSlave.devotion = 25>>
 		<<set $activeSlave.trust = 25>>
 		<<set $activeSlave.origin = "She was an orphan forced to live and steal on the streets until you adopted her.">>
-		<<set $cash -= $contractCost>>
+		<<run cashX(forceNeg($contractCost), "slaveTransfer", $activeSlave)>>
 		<<replace "#result">>
 			You sit down and talk to the exhausted $girl, handing $him a contract cleverly altered to resemble adoption papers. Once $he comprehends what $he is looking at, $he eagerly signs it. Only once $he has reached the penthouse and been introduced to the slave life does $he realize $he willingly signed away $his freedom. Though $he can't complain. A warm cot and plenty of food await, which to $him is a huge improvement over a slow death on the streets. The public
 			<<if $arcologies[0].FSPaternalist != "unset">>
@@ -590,9 +590,9 @@ $He is easily taken into custody and $his contraband confiscated once the jeerin
 <</link>>
 <</if>>
 <br><<link "Sell $him immediately">>
-	<<set $cash += $slaveCost>>
+	<<run cashX(forceNeg($slaveCost), "slaveTransfer")>>
 	<<if $cash4Babies == 1 && $malefactor == "anchorBaby">>
-		<<set $cash += random(20,30)>>
+		<<run cashX(random(20,30), "slaveTransfer")>>
 	<</if>>
 	<<replace "#result">>
 		<<switch $malefactor>>
diff --git a/src/uncategorized/reMilfTourist.tw b/src/uncategorized/reMilfTourist.tw
index 8a8718f6ca6d260e1b229672e28c059c8a75a0fe..492c08af78e82807ce6201703d85c9408b657c47 100644
--- a/src/uncategorized/reMilfTourist.tw
+++ b/src/uncategorized/reMilfTourist.tw
@@ -134,7 +134,7 @@
 	<<replace "#result">>
 	When your new slave comes to, _his2 weight is hanging from _his2 wrists, bound over _his2 head. _He2's not exactly thin, making the position uncomfortable for _his2 arms, so _he2 groggily stands, finding _himself2 in a pool of light in the middle of a cell. _He2's nursing a tremendous hangover, and though _he2 does not realize it, _he2's drugged. You're present, though not visible, witnessing _his2 first conscious moment of slavery from your desk. Realization is slow. _He2's no innocent, so _he2 recognizes the sensations of waking up the morning after a night of drinking interspersed with vigorous vaginal, oral and anal intercourse, but _he2 does not remember the specifics. After a few minutes, _he2 understands that no one is coming, and speaks up hesitantly: "Is anyone there?" Getting no immediate answer, _he2 slumps against _his2 wrist restraints again, and begins to cry to _himself2. "W-why would a-anyone do this."
 	<br>
-	<<set $cash -= 20000>>
+	<<run cashX(-20000, "event", $activeSlave)>>
 	<<include "New Slave Intro">>
 	<<set $activeSlave.recruiter = 0>>
 	<</replace>>
diff --git a/src/uncategorized/rePokerNight.tw b/src/uncategorized/rePokerNight.tw
index 6bdf42ba2bc869c7b0072a3ada7793ac9755ba3a..585549e2be43b89c2cdab2e035aa72de5cca46ba 100644
--- a/src/uncategorized/rePokerNight.tw
+++ b/src/uncategorized/rePokerNight.tw
@@ -42,10 +42,12 @@ On a particularly lackadaisical evening, you find yourself alerted to a message
 					<<replace "#bountyresult">>
 						<<if random(1,100) > 50>>
 						Despite your attempts to mitigate risk and play the safest hands possible, it seems lady luck has conspired against you this evening. However, even when your last chip is spent, your mercenaries pitch you a few chips to keep you in the game for the rest of the night. You may have lost most of your ¤, but it seems you've @@.green;made some friends.@@
-						<<set $rep += 1000, $cash -= 2500>>
+						<<set $rep += 1000>>
+						<<run cashX(-2500, "event")>>
 						<<else>>
 						While a careful eye for risk has buoyed you through the evening, ultimately lady luck is the decider in handing you the win in a number of close hands. Unfortunately your meticulous play limited your chance at a larger payout, and you only come away from the evening with <<print cashFormat(1000)>> more than you arrived with and @@.green;the respect of your mercenaries.@@
-						<<set $rep += 100, $cash += 1000>>
+						<<set $rep += 100>>
+						<<run cashX(1000, "event")>>
 						<</if>>
 					<</replace>>
 				<</link>>
@@ -102,7 +104,8 @@ On a particularly lackadaisical evening, you find yourself alerted to a message
 								<<replace "#aliveresult">>
 									<<if random(1,100) > 50>>
 										For all your skillful maneuvering to reach this position, ultimately the win comes down to chance. This time, however, luck was not on your side. As the victor sweeps up $his spoils, the other mercenaries clap you on the back and offer their condolences for your defeat. Though you may have lost your ¤, it seems you've @@.green;made some friends.@@
-										<<set $rep += 1000, $cash -= 5000>>
+										<<set $rep += 1000>>
+										<<run cashX(-5000, "event")>>
 									<<else>>
 										For all your skillful maneuvering to reach this position, ultimately the win comes down to chance. This time, however, luck has rendered you the victor. A silence falls over the room as the result is declared, but after some time your opponent breaks the hush by joking that life as your slave is probably easier than fighting for $arcologies[0].name. After some awkward laughter the night continues, and at the end your former mercenary joins you on your trip back to the penthouse to submit to processing and to begin $his new life as your sexual servant. $He's not young, but $he's tough and not distrusting of you due to $his service in the $mercenariesTitle.
 										<br>
@@ -117,10 +120,12 @@ On a particularly lackadaisical evening, you find yourself alerted to a message
 								<<replace "#aliveresult">>
 									<<if random(1,100) > 50>>
 										For all your skillful maneuvering to reach this position, ultimately the win comes down to chance. This time, however, luck was not on your side. As the victor sweeps up $his spoils, the other mercenaries clap you on the back and offer their condolences for your defeat. Though you may have lost your ¤, it seems you've @@.green;made some friends.@@
-										<<set $rep += 1000, $cash -= 5000>>
+										<<set $rep += 1000>>
+										<<run cashX(-5000, "event")>>
 									<<else>>
 										For all your skillful maneuvering to reach this position, ultimately the win comes down to chance. This time, however, luck has rendered you the victor. Your opponent accepts $his defeat with grace and jokes to $his comrades that $he'll be fighting in $his underwear for the next few months, and their uproar of laughter fills the room. Though you take the lion's share of the ¤, your mercenaries also @@.green;had a good time fraternizing with you.@@
-										<<set $rep += 200, $cash += 5000>>
+										<<set $rep += 200>>
+										<<run cashX(5000, "event")>>
 									<</if>>
 								<</replace>>
 							<</link>>
diff --git a/src/uncategorized/reRecruit.tw b/src/uncategorized/reRecruit.tw
index 98353732b24201873aaa9239e7300a8660e8e765..9fb73f5e57d0d8ae1a108438f8abb2a0b0795dc6 100644
--- a/src/uncategorized/reRecruit.tw
+++ b/src/uncategorized/reRecruit.tw
@@ -2526,7 +2526,7 @@ He explains that one of his servant <<= $girl>>s was impregnated by his fool of
 <<if $recruit != "cleaning house">>
 	<<if $cash >= $contractCost>>
 	<<link "Enslave $him">>
-		<<set $cash -= $contractCost>>
+		<<run cashX(forceNeg($contractCost), "slaveTransfer", $activeSlave)>>
 		<<replace "#result">>
 		<<switch $recruit>>
 		<<case "held POW">>
@@ -2674,14 +2674,14 @@ He explains that one of his servant <<= $girl>>s was impregnated by his fool of
 	<<case "forbidden love">>
 	<<default>>
 	<br><<link "Sell $him immediately">>
-		<<set $cash += $slaveCost>>
+		<<run cashX(forceNeg($slaveCost), "slaveTransfer")>>
 		<<replace "#result">>
 		<<switch $recruit>>
 		<<case "held POW">>
 			You complete the legalities and biometric scanning quickly and without fuss; $his will to fight long since broken. Though you do catch a faint glimmer of joy in $his eyes as you tell $him $he's been purchased by a notorious Pit Master and will likely spend the rest of $his life in combat.
 		<<case "embryo appropriation">>
 			<<set _profit = $slaveCost*$activeSlave.pregType>>
-			<<set $cash += _profit>>
+			<<run cashX(_profit, "slaveTransfer")>>
 			$He sobs as the biometric scanners scrupulously record $his every particular as belonging not to a person but to a piece of human property. $He tries to resist placing $his biometric signature in testament to the truth of $his debt, but when you observe that the alternative is the death of $him and $his unborn, $he complies. A purchasing agent appears to take $him away, but not after the slave breeder that bought $him paid a ludicrous amount of ¤ per child. An additional @@.yellowgreen;¤<<print _profit>>@@ overall.
 		<<case "rogue cyborg">>
 			With your order received the target quickly seeks you out. After a huge sum of credits changes hands to render it safe, the legalities and biometric scanning are complete and it is sold off to a very eager robophile.
@@ -2747,7 +2747,7 @@ He explains that one of his servant <<= $girl>>s was impregnated by his fool of
 	<</if>>
 <<else>>
 	<<link "Accept the offer">>
-		<<set $cash -= $contractCost>>
+		<<run cashX(forceNeg($contractCost), "slaveTransfer", $activeSlave)>>
 		<<replace "#result">>
 			You agree to purchase the servants and wire the money. The next day, a rather expensive-looking VTOL comes and drops off a group of confused and terrified slaves fitted with maid outfits and a pair of shackles on each set of limbs.
 			<<run newSlave($activeSlave)>>
@@ -2774,7 +2774,7 @@ He explains that one of his servant <<= $girl>>s was impregnated by his fool of
 <</if>>
 <<if $recruit == "wandering homeless">>
 	<br><<link "A quick fuck couldn't hurt">>
-	<<set $cash -= 1>>
+	<<run cashX(forceNeg(-1), "personalBusiness")>>
 	<<replace "#result">>
 		You take $him up on $his offer,
 		<<if $PC.dick == 1>>
diff --git a/src/uncategorized/reRelativeRecruiter.tw b/src/uncategorized/reRelativeRecruiter.tw
index a9c4c4cb36e779fdbcf91831579faae3b56b2ef7..284ac2ab540823a30644663a0cf153689032cb79 100644
--- a/src/uncategorized/reRelativeRecruiter.tw
+++ b/src/uncategorized/reRelativeRecruiter.tw
@@ -627,7 +627,7 @@ You look up the _relationType. _He2 costs <<print cashFormat($slaveCost)>>, a ba
 <br><br>
 <span id="result">
 <<link "Buy _him2">>
-	<<set $cash -= $slaveCost>>
+	<<run cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave)>>
 	<<switch _relationType>>
 	<<case "daughter">>
 		<<if _tempMF == "father">>
@@ -1156,7 +1156,7 @@ You look up the $activeSlave.relation. _He2 costs <<print cashFormat($slaveCost)
 	/* update $slaves[$i] (eventSlave) before calling any widgets */
 	<<set $slaves[$i].relation = relationTargetWord($activeSlave)>>
 	<<set $slaves[$i].relationTarget = $activeSlave.ID>>
-	<<set $cash -= $slaveCost>>
+	<<run cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave)>>
 	<<set $desc = SlaveTitle($eventSlave)>>
 	You complete the legalities and biometric scanning quickly and without fuss. $activeSlave.slaveName arrives shortly. The two slaves remember each other only dimly - they parted a long time ago - but they embrace. The devoted $desc explains the situation and encourages $his $activeSlave.relation to be a good slave to you. $activeSlave.slaveName looks a little fearful but clearly realizes that _he2's lucky to be here.
 	<<include "New Slave Intro">>
diff --git a/src/uncategorized/reShelterInspection.tw b/src/uncategorized/reShelterInspection.tw
index 6e760164e9eb4275971c80781c8c46116d57442d..e7190413813d25397584ac8efc278d821ee4abce 100644
--- a/src/uncategorized/reShelterInspection.tw
+++ b/src/uncategorized/reShelterInspection.tw
@@ -101,7 +101,7 @@ Not waiting to be greeted, the inspector looks up at the nearest camera and dema
 
 <span id="result">
 <<link "Amusing. Enslave _him2">>
-	<<set $cash -= $contractCost>>
+	<<run cashX(forceNeg($contractCost), "slaveTransfer", $activeSlave)>>
 	<<replace "#result">>
 	$assistantName ushers _him2 into your penthouse and keeps _him2 busy for the few minutes you need to circumvent the Shelter's various legal and contractual defenses to prevent slaveowners from doing exactly what you're doing. Fortunately, you're cleverer and richer than most, and you succeed. You have _him2 brought into your office, and you are pleased to see _him2. _He2's not young and _he2's not pretty, but _his2 suit cannot disguise _his2 big bottom, and _he2's using the tablet _he2 has clasped protectively against _his2 chest to conceal a huge pair of mature breasts. _He2 knows exactly what's happened, and fixes you with a gimlet stare. "In a couple of months," _he2 says with venom, "when you've filled me full of hormones and drugs and training, and I'm begging you to <<if $PC.dick == 1>>stick your tiny little dick up<<else>>fist<</if>> my asshole, remember this. It'll be conditioning and self-preservation and Stockholm Syndrome talking, not me. I think you're a <<if $PC.title == 1>>sad bastard<<else>>vile cunt<</if>>, and I always will."
 	<<set $shelterAbuse += 10>>
@@ -123,7 +123,7 @@ Not waiting to be greeted, the inspector looks up at the nearest camera and dema
 		<<= assignJob($activeSlave, "work in the dairy")>>
 		<<set $activeSlave.lactation = 1, $activeSlave.lactationDuration = 2>>
 		<<set $activeSlave.clothes = "no clothing">>
-		<<set $cash -= $contractCost/2>>
+		<<run cashX(forceNeg($contractCost/2), "slaveTransfer", $activeSlave)>>
 		<<replace "#result">>
 		_Inspectee.slaveName is attached to a milking machine, so it would be extremely unwise to let the inspector report on _Inspectee.slaveName's industrial fate in all its gorgeous productivity. So, you greet _him2 politely, and bring _him2 down to $dairyName to show _him2 _Inspectee.slaveName. The inspector has a single moment to stiffen in shock at the sight before _he2 stiffens involuntarily due to the security drone tasing _him2 unconscious. It takes a few credits here and there to circumvent the Shelter's various legal and contractual defenses to prevent slaveowners from doing exactly what you're doing, but you finish the day richer by one more big-boobed milk producer. You leave the inspector's drug dosage low to start, so _he2 can appreciate _his2 situation for a while. When the inspector awakes, _his2 visor is set to show an overhead view of _his2 bay in $dairyName. _He2 sees _his2 breasts, already larger than _he2 remembers, gently swaying with the pumping of the milkers.<<if $dairyFeedersSetting > 1>> _He2 sees the huge phallus occupying _his2 mouth, and feels nutrition sliding down _his2 throat.<</if>><<if $dairyPregSetting > 1>> _He2 sees _his2 vagina drooling as it's fucked in preparation for pregnancy.<</if>><<if $dairyPregSetting > 1>> _He2 sees a massive piston moving slowly back and forth beneath _his2 buttocks, and understands what the ache of impossible fullness in _his2 bottom is.<</if>> _His2 hands ball into fists.
 		<<set $shelterAbuse += 10>>
@@ -135,7 +135,7 @@ Not waiting to be greeted, the inspector looks up at the nearest camera and dema
 	<br><<link "The slave is little more than a hole in $arcadeName, and so will be the inspector">>
 		<<= assignJob($activeSlave, "be confined in the arcade")>>
 		<<set $activeSlave.clothes = "no clothing">>
-		<<set $cash -= $contractCost/2>>
+		<<run cashX(forceNeg($contractCost/2), "slaveTransfer", $activeSlave)>>
 		<<replace "#result">>
 		_Inspectee.slaveName is sealed in a box and currently in use, so it would be extremely unwise to let the inspector report on _Inspectee.slaveName's permanent position in the service industry. So, you greet _him2 politely, and bring _him2 down to $arcadeName to show _him2 _Inspectee.slaveName. The inspector has a single moment to stiffen in shock at the sight before _he2 stiffens involuntarily due to the security drone tasing _him2 unconscious. It takes a few credits here and there to circumvent the Shelter's various legal and contractual defenses to prevent slaveowners from doing exactly what you're doing, but you finish the day richer by three more fuckable holes. When the inspector awakes to a dick intruding _his2 body, the pitch blackness and sound proofing disorientates _him2.
 		<<if $arcadeUpgradeInjectors == 1>>
@@ -161,7 +161,7 @@ Not waiting to be greeted, the inspector looks up at the nearest camera and dema
 	<</link>>
 <<elseif _Inspectee.fuckdoll > 0>>
 	<br><<link "The slave is little more than a latex wrapped doll, and so will be the inspector">>
-		<<set $cash -= $contractCost/2>>
+		<<run cashX(forceNeg($contractCost/2), "slaveTransfer", $activeSlave)>>
 		<<replace "#result">>
 		You have _him2 ushered up to your office, and order _Inspectee.slaveName brought in. The inspector has a single moment to stiffen in shock at the sight before _he2 stiffens involuntarily due to the security drone tasing _him2 unconscious. It takes a few credits here and there to circumvent the Shelter's various legal and contractual defenses to prevent slaveowners from doing exactly what you're doing, but you finish the day richer by one more Fuckdoll. Odds are _he2 wants to be defiant, but the suit works perfectly and leaves _him2 no outlet to make _his2 thoughts known.
 		<<set $activeSlave.toyHole="all her holes", $activeSlave.pubicHStyle="waxed", $activeSlave.livingRules="spare", $activeSlave.speechRules="restrictive", $activeSlave.releaseRules="restrictive", $activeSlave.relationshipRules="restrictive", $activeSlave.fuckdoll=1, $activeSlave.choosesOwnClothes=0, $activeSlave.clothes="a Fuckdoll suit", $activeSlave.collar="none", $activeSlave.shoes="heels",$activeSlave.legAccessory="none", $activeSlave.vaginalAccessory="none", $activeSlave.dickAccessory="none", $activeSlave.buttplug="none", $activeSlave.attrKnown=1, $activeSlave.fetishKnown=1>>
diff --git a/src/uncategorized/reShippingContainer.tw b/src/uncategorized/reShippingContainer.tw
index 0b1011cb80473269d1ff58e685aa97134ebf7c7b..14bec54bfd04a895c6f2af3c9d5bd507f81872f8 100644
--- a/src/uncategorized/reShippingContainer.tw
+++ b/src/uncategorized/reShippingContainer.tw
@@ -41,11 +41,11 @@ For now, the crowd around you is looking at the helpless human cargo with
 	<<replace "#result">>
 	<<for _reShip = 0; _reShip < _newSlaves.length; _reShip++>>
 		<<slaveCost _newSlaves[_reShip]>>
-		<<set $cash += $slaveCost>>
+		<<run cashX($slaveCost, "slaveTransaction")>>
 	<</for>>
 	Allowing humor into your voice, you announce an auction, to be held immediately. The crowd appreciates the wit, and @@.green;appreciates it even more@@ when you conduct the auction yourself. It's always good to take an opportunity to show off your understanding of the slave market in public. You @@.yellowgreen;sell them all,@@ sex slaves and menials alike. Welcome to the Free Cities.
 	<<set $menials -= 25>>
-	<<set $cash += 25*_bonusCash>>
+	<<run cashX((25*_bonusCash), "slaveTransaction")>>
 	<<set $rep += 100>>
 	<</replace>>
 <</link>>
@@ -76,7 +76,7 @@ For now, the crowd around you is looking at the helpless human cargo with
 	<<replace "#result">>
 	<<for _reShip = 0; _reShip < _newSlaves.length; _reShip++>>
 		<<slaveCost _newSlaves[_reShip]>>
-		<<set $cash += $slaveCost>>
+		<<run cashX($slaveCost, "slaveTransaction")>>
 	<</for>>
 	You hurry forward, beckoning the crowd to accompany you. The wretched slaves cringe with fear, but soon they're being comforted, offered water, and examined for injury. Once the most pressing needs are attended to, you call for everyone's attention. You pride yourself on knowing your citizens well, and you can pick good Paternalists out of the crowd at will. Calling them by name, you ask whether they'd be willing to take on one of these poor slaves. One by one, you pair slave and Master or Mistress, rewarding your best people with public approbation, not to mention a free slave. The initial gasps of surprise quickly grow into @@.green;thunderous applause.@@ Your people love you. Several of the slaves begin to cry, mostly from confusion or sheer exhaustion; they don't yet know how lucky they are.
 	<<set $menials -= 25>>
diff --git a/src/uncategorized/recETS.tw b/src/uncategorized/recETS.tw
index d8338b1e4e21c3b7f6fa78805096e541c1a218ab..6912822258c7c8087165589f3e3331d1daec5533 100644
--- a/src/uncategorized/recETS.tw
+++ b/src/uncategorized/recETS.tw
@@ -1614,7 +1614,7 @@ This call is coming from a public kiosk, which is usually an indication that the
 		<<set $activeSlave.oralCount += 1>>
 		<<set $oralTotal += 1>>
 	<<run newSlave($activeSlave)>>
-	<<set $cash -= $contractCost>>
+	<<run cashX(forceNeg($contractCost), "slaveTransfer", $activeSlave)>>
 	<<replace "#result">>
 	Despite $himself, $he sobs with relief when you agree. $He offers to <<if $PC.dick == 1>>suck you off<<if $PC.vagina == 1>> and <</if>><</if>><<if $PC.vagina == 1>>eat you out<</if>> while you complete the necessary legalities, so you work away with a <<if $PC.dick == 1>>pair of motherly lips wrapped around your dick<<else>>motherly tongue pleasuring your clit<</if>> as $he pumps away eagerly under the desk. $He's definitely on aphrodisiacs. $He masturbates while $he sucks.
 	<</replace>>
@@ -1626,7 +1626,7 @@ This call is coming from a public kiosk, which is usually an indication that the
 	<<set $activeSlave.relation = 0>>
 	<<set $activeSlave.relationTarget = 0>>
 	<<run newSlave($activeSlave)>>
-	<<set $cash -= $contractCost>>
+	<<run cashX(forceNeg($contractCost), "slaveTransfer", $activeSlave)>>
 	<<replace "#result">>
 	You press your thumb down on your desk interface and then tell $him to read the display, strip, and show you $his body. $He knits $his brow in confusion and begins to curse at you but reads anyway. Comprehension dawns on $him and $he stares you in the eye for a long moment — and then drops $his gaze. $He knows the Free Cities well enough to understand. $He stands and sadly strips off $his blouse and slacks. Following orders, $he rotates slowly for you. Then, $he bends over facing away from you and spreads $his buttocks to display $his holes. Unsurprisingly, $he's got a well-used pussy but has clearly never taken it up the ass. That will change.
 	<</replace>>
@@ -1642,7 +1642,7 @@ This call is coming from a public kiosk, which is usually an indication that the
 	<<set $activeSlave.rivalry = 0>>
 	<<set $activeSlave.rivalryTarget = 0>>
 	<<run newSlave($activeSlave)>>
-	<<set $cash -= $contractCost>>
+	<<run cashX(forceNeg($contractCost), "slaveTransfer", $activeSlave)>>
 	<<replace "#result">>
 	The poor sissy isn't happy to become a slave, but $he's clearly relieved to be away from $his sister. The bitch isn't likely to have an easy time; the sale didn't clear _him2 from debt. $activeSlave.slaveName describes $his basic sexual experience, which includes a lot of sucking and anal whoring. Without further ado $he moves from practical sexual slavery at the hands of $his sister to actual sexual slavery.
 	<</replace>>
@@ -1654,7 +1654,7 @@ This call is coming from a public kiosk, which is usually an indication that the
 	<<set $activeSlave.relation = 0>>
 	<<set $activeSlave.relationTarget = 0>>
 	<<run newSlave($activeSlave)>>
-	<<set $cash -= $contractCost>>
+	<<run cashX(forceNeg($contractCost), "slaveTransfer", $activeSlave)>>
 	<<replace "#result">>
 	You have the needy $girl immediately bought to your penthouse where you help $his laboring body into an available bed for inspection. $He asks where $his children were taken, to which you reply somewhere they can be raised properly. They'll be taken care of and won't have to grow up on the streets, plus they were sucking the life out of $him. $He's a little depressed at the news, but understands your reasons. You take the opportunity to give $him a good look over; $he is really dilated! Apart from that, between all the births and dicks, $his vagina is rather worn out, though $he seems to understand how to use it. $His anus has also seen use, but not nearly as much.
 	<</replace>>
@@ -1676,7 +1676,6 @@ This call is coming from a public kiosk, which is usually an indication that the
 <<case "addict mother daughter" "posh mother daughter">>
 
 <<link "Manipulate $him to enslave both mother and daughter">>
-	<<set $cash -= ($contractCost*2)>>
 	<<replace "#result">>
 	<<switch $RecETSevent>>
 	<<case "addict mother daughter">>
@@ -1691,20 +1690,23 @@ This call is coming from a public kiosk, which is usually an indication that the
 		$His daughter walks in angrily demanding to know why you called _him2 here. _He2 sees _his2 mother kneeling naked next to you, hears the hiss-click of the door closing and locking behind _him2, and makes the connection far too late to run. _He2 begins to scream at both you and _his2 mother at the top of _his2 lungs, and manages to keep up an impressive volume until you get _him2 gagged. _His2 mother does not move to interfere as you strip and bind $his daughter's struggling body.
 	<</switch>>
 	<<run newSlave($relative)>>
+	<<run cashX($contractCost, "slaveTransfer", $relative)>>
 	<<run newSlave($relative2)>>
+	<<run cashX($contractCost, "slaveTransfer", $relative2)>>
 	<</replace>>
 <</link>>
 
 <<case "mismatched pair">>
 
 <<link "Enslave both">>
-	<<set $cash -= ($contractCost*2)>>
 	<<replace "#result">>
 	The poor sissy isn't happy to become a slave, but $he's clearly relieved to be away from $his sister. The bitch isn't likely to have an easy time; the sale didn't clear _him2 from debt. $activeSlave.slaveName describes $his basic sexual experience, which includes a lot of sucking and anal whoring. Without further ado $he moves from practical sexual slavery at the hands of $his sister to actual sexual slavery.
 	<br><br>
 	$His sister-pimp walks in angrily demanding to know why you called _him2 here. _He2 sees _his2 sissy sister kneeling naked next to you, hears the hiss-click of the door closing and locking behind _him2, and makes the connection far too late to run. _He2 begins to scream at both you and _his2 sister at the top of _his2 lungs, and manages to keep up an impressive volume until you get _him2 gagged. _His2 sister does not move to interfere as you strip and bind the struggling body. In fact, as you get the gag in place, $he begins to laugh an unstable, cracking laugh that degenerates into sobbing.
 	<<run newSlave($relative)>>
+	<<run cashX($contractCost, "slaveTransfer", $relative)>>
 	<<run newSlave($relative2)>>
+	<<run cashX($contractCost, "slaveTransfer", $relative2)>>
 	<</replace>>
 <</link>>
 
@@ -1712,7 +1714,6 @@ This call is coming from a public kiosk, which is usually an indication that the
 
 <<if $minimumSlaveAge <= 3>>
 	<<link "Accept $his offer">>
-		<<set $cash -= ($contractCost*2)>>
 		<<replace "#result">>
 		You have the needy girl immediately bought to your penthouse where you help $his laboring body into an available bed or inspection. $He asks where $his other babies were taken, to which you reply somewhere they can be raised properly. They'll be taken care of and won't have to grow up on the streets, plus they were sucking the life out of $him. $He's a little depressed at the news, but understands your reasons. You take the opportunity to give $him a good look over; $he is really dilated! Apart from that, between all the births and dicks, $his vagina is rather worn out, though $he seems to understand how to use it. $His anus has also seen use, but not nearly as much.
 		<br><br>
@@ -1721,14 +1722,16 @@ This call is coming from a public kiosk, which is usually an indication that the
 			You notice _his2 belly is slightly distended. It could be hunger, but upon closer inspection, you realize _his2 hymen has been torn. _He2's likely been servicing men alongside _his2 mother and has a bun in the oven too.
 		<</if>>
 		<<run newSlave($relative)>>
+		<<run cashX($contractCost, "slaveTransfer", $relative)>>
 		<<run newSlave($relative2)>>
+		<<run cashX($contractCost, "slaveTransfer", $relative2)>>
 		<</replace>>
 	<</link>>
 <</if>>
 
 <<case "identical herm pair" "identical pair" "matched pair">>
 <<link "Buy them both">>
-	<<set $cash -= $contractCost>>
+	<<run cashX(forceNeg($contractCost), "slaveTransfer", $activeSlave)>>
 	<<replace #result>>
 	<<switch $RecETSevent>>
 	<<case "identical herm pair">>
@@ -1747,7 +1750,7 @@ This call is coming from a public kiosk, which is usually an indication that the
 <<case "incest brother brother" "incest brother sister" "incest father daughter" "incest father son" "incest mother daughter" "incest mother son" "incest sister sister" "incest twin brother" "incest twin sister" "incest twins mixed">>
 
 <<link "Buy them both">>
-	<<set $cash -= $contractCost>>
+	<<run cashX(forceNeg($contractCost), "slaveTransfer", $activeSlave)>>
 	<<replace #mainbody>>
 	<<switch $RecETSevent>>
 	<<case "incest brother brother">>
diff --git a/src/uncategorized/remoteSurgery.tw b/src/uncategorized/remoteSurgery.tw
index 05e8e27c2f002bc6f4fd90a38289d66f8fad21f0..fa76c956d18ee9eee4739b65f1c45d5a785648f9 100644
--- a/src/uncategorized/remoteSurgery.tw
+++ b/src/uncategorized/remoteSurgery.tw
@@ -80,27 +80,27 @@ $His $activeSlave.faceShape face is
 	<</if>>//
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 	<<if $activeSlave.faceShape != "normal">>
-		[[Make conventionally feminine|Surgery Degradation][$activeSlave.faceShape = "normal",$activeSlave.faceImplant = Math.clamp($activeSlave.faceImplant+_artificiality,0,100),$cash -= $surgeryCost,$activeSlave.health -= 10,$surgeryType = "face"]] |
+		[[Make conventionally feminine|Surgery Degradation][$activeSlave.faceShape = "normal",$activeSlave.faceImplant = Math.clamp($activeSlave.faceImplant+_artificiality,0,100),cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$activeSlave.health -= 10,$surgeryType = "face"]] |
 	<</if>>
 	<<if $activeSlave.faceShape == "masculine">>
-		[[Soften to androgynous|Surgery Degradation][$activeSlave.faceShape = "androgynous",$activeSlave.faceImplant = Math.clamp($activeSlave.faceImplant+_artificiality,0,100),$cash -= $surgeryCost,$activeSlave.health -= 10,$surgeryType = "face"]] |
+		[[Soften to androgynous|Surgery Degradation][$activeSlave.faceShape = "androgynous",$activeSlave.faceImplant = Math.clamp($activeSlave.faceImplant+_artificiality,0,100),cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$activeSlave.health -= 10,$surgeryType = "face"]] |
 	<<else>>
 		<<if $activeSlave.faceShape != "cute">>
-			[[Cute|Surgery Degradation][$activeSlave.faceShape = "cute",$activeSlave.faceImplant = Math.clamp($activeSlave.faceImplant+_artificiality,0,100),$cash -= $surgeryCost,$activeSlave.health -= 10,$surgeryType = "face"]] |
+			[[Cute|Surgery Degradation][$activeSlave.faceShape = "cute",$activeSlave.faceImplant = Math.clamp($activeSlave.faceImplant+_artificiality,0,100),cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$activeSlave.health -= 10,$surgeryType = "face"]] |
 		<</if>>
 		<<if $activeSlave.faceShape != "exotic">>
-			[[Exotic|Surgery Degradation][$activeSlave.faceShape = "exotic",$activeSlave.faceImplant = Math.clamp($activeSlave.faceImplant+_artificiality,0,100),$cash -= $surgeryCost,$activeSlave.health -= 10,$surgeryType = "face"]] |
+			[[Exotic|Surgery Degradation][$activeSlave.faceShape = "exotic",$activeSlave.faceImplant = Math.clamp($activeSlave.faceImplant+_artificiality,0,100),cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$activeSlave.health -= 10,$surgeryType = "face"]] |
 		<</if>>
 		<<if $activeSlave.faceShape != "sensual">>
-			[[Sensual|Surgery Degradation][$activeSlave.faceShape = "sensual",$activeSlave.faceImplant = Math.clamp($activeSlave.faceImplant+_artificiality,0,100),$cash -= $surgeryCost,$activeSlave.health -= 10,$surgeryType = "face"]] |
+			[[Sensual|Surgery Degradation][$activeSlave.faceShape = "sensual",$activeSlave.faceImplant = Math.clamp($activeSlave.faceImplant+_artificiality,0,100),cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$activeSlave.health -= 10,$surgeryType = "face"]] |
 		<</if>>
 		<<if $activeSlave.faceShape != "androgynous">>
-			[[Androgynous|Surgery Degradation][$activeSlave.faceShape = "androgynous",$activeSlave.faceImplant = Math.clamp($activeSlave.faceImplant+_artificiality,0,100),$cash -= $surgeryCost,$activeSlave.health -= 10,$surgeryType = "face"]] |
+			[[Androgynous|Surgery Degradation][$activeSlave.faceShape = "androgynous",$activeSlave.faceImplant = Math.clamp($activeSlave.faceImplant+_artificiality,0,100),cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$activeSlave.health -= 10,$surgeryType = "face"]] |
 		<<else>>
-			[[Masculine|Surgery Degradation][$activeSlave.faceShape = "masculine",$activeSlave.faceImplant = Math.clamp($activeSlave.faceImplant+_artificiality,0,100),$cash -= $surgeryCost,$activeSlave.health -= 10,$surgeryType = "face"]] |
+			[[Masculine|Surgery Degradation][$activeSlave.faceShape = "masculine",$activeSlave.faceImplant = Math.clamp($activeSlave.faceImplant+_artificiality,0,100),cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$activeSlave.health -= 10,$surgeryType = "face"]] |
 		<</if>>
 	<</if>>
-	[[Just improve attractiveness|Surgery Degradation][$activeSlave.faceImplant = Math.clamp($activeSlave.faceImplant+_artificiality,0,100),$cash -= $surgeryCost,$activeSlave.health -= 10,$surgeryType = "face"]]
+	[[Just improve attractiveness|Surgery Degradation][$activeSlave.faceImplant = Math.clamp($activeSlave.faceImplant+_artificiality,0,100),cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$activeSlave.health -= 10,$surgeryType = "face"]]
 	<<if ($activeSlave.ageImplant > 1)>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		//$He's had a multiple facelifts and other cosmetic procedures in an effort to preserve $his youth.//
@@ -110,7 +110,7 @@ $His $activeSlave.faceShape face is
 	<<elseif ($activeSlave.physicalAge >= 25) && ($activeSlave.visualAge >= 25)>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		//$He's old enough that a face lift and other minor cosmetic procedures could make $him look younger.//
-		[[Age lift|Surgery Degradation][$activeSlave.ageImplant = 1,$activeSlave.faceImplant = Math.clamp($activeSlave.faceImplant+_artificiality,0,100),$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "age"]]
+		[[Age lift|Surgery Degradation][$activeSlave.ageImplant = 1,$activeSlave.faceImplant = Math.clamp($activeSlave.faceImplant+_artificiality,0,100),cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "age"]]
 	<</if>>
 <</if>>
 
@@ -126,12 +126,12 @@ $His $activeSlave.faceShape face is
 	<<if $activeSlave.eyes == -1>>
 		eyes, but is nearsighted.
 		<<if ($activeSlave.origEye != "implant")>>
-			[[Correct eyesight|Surgery Degradation][$activeSlave.eyes = 1, $cash -= $surgeryCost, $activeSlave.health -= 10, $surgeryType = "eyeFix"]]
+			[[Correct eyesight|Surgery Degradation][$activeSlave.eyes = 1, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10, $surgeryType = "eyeFix"]]
 		<</if>>
 	<<elseif $activeSlave.eyes == 1>>
 		eyes and good vision.
 		<<if ($seeExtreme == 1) && ($activeSlave.origEye != "implant") && $activeSlave.indentureRestrictions < 1>>
-			[[Blur vision|Surgery Degradation][$activeSlave.eyes = -1, $cash -= $surgeryCost, $activeSlave.health -= 10, $surgeryType = "eyeBlur"]]
+			[[Blur vision|Surgery Degradation][$activeSlave.eyes = -1, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10, $surgeryType = "eyeBlur"]]
 		<</if>>
 	<</if>>
 <</if>>
@@ -140,17 +140,17 @@ $His $activeSlave.faceShape face is
 	<<if $activeSlave.indentureRestrictions < 1>>
 		<<if $activeSlave.origEye != "implant">>
 			<<if ($activeSlave.eyes > -2)>>
-				| [[Blind|Surgery Degradation][$activeSlave.eyes = -2,$activeSlave.eyeColor = "dulled " + $activeSlave.origEye,$activeSlave.eyeColor = $activeSlave.origEye,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "blind"]]
+				| [[Blind|Surgery Degradation][$activeSlave.eyes = -2,$activeSlave.eyeColor = "dulled " + $activeSlave.origEye,$activeSlave.eyeColor = $activeSlave.origEye,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "blind"]]
 			<</if>>
 			/*<<if ($activeSlave.eyes != -3)>>
 				<<if ($activeSlave.eyes >= -2)>> | <</if>>
-				| [[Remove eyes|Surgery Degradation][$activeSlave.eyeColor = "empty",$activeSlave.origEye = "none",$cash -= $surgeryCost, $activeSlave.health -= 20,$surgeryType = "remove eyes"]]
+				| [[Remove eyes|Surgery Degradation][$activeSlave.eyeColor = "empty",$activeSlave.origEye = "none",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "remove eyes"]]
 				<<if ($activeSlave.eyes != -2)>>//This will greatly restrict $him//<</if>>
 			<</if>>*/
 		<</if>>
 		<<if ($cyberMod == 1) && ($stockpile.ocularImplant > 0) && ($activeSlave.origEye != "implant")>>
 			<<if ($activeSlave.eyes != -3)>> <</if>>
-			| [["Give " + $him + " ocular implants"|Surgery Degradation][$activeSlave.origEye = "implant", $stockpile.ocularImplant--,$cash -= $surgeryCost, $activeSlave.health -= 20,$surgeryType = "ocular implant"]]
+			| [["Give " + $him + " ocular implants"|Surgery Degradation][$activeSlave.origEye = "implant", $stockpile.ocularImplant--,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "ocular implant"]]
 		<</if>>
 	<</if>>
 <</if>>
@@ -167,12 +167,12 @@ $His $activeSlave.faceShape face is
 	<<if $activeSlave.hears == -1>>
 		ears, but is hearing impaired.
 		<<if ($activeSlave.earImplant != 1)>>
-			[[Correct hearing|Surgery Degradation][$activeSlave.hears = 0, $cash -= $surgeryCost, $activeSlave.health -= 10, $surgeryType = "earFix"]]
+			[[Correct hearing|Surgery Degradation][$activeSlave.hears = 0, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10, $surgeryType = "earFix"]]
 		<</if>>
 	<<elseif $activeSlave.hears == 0>>
 		ears and good hearing.
 		<<if ($seeExtreme == 1) && ($activeSlave.earImplant != 1) && $activeSlave.indentureRestrictions < 1>>
-			[[Muffle hearing|Surgery Degradation][$activeSlave.hears = -1, $cash -= $surgeryCost, $activeSlave.health -= 10, $surgeryType = "earMuffle"]]
+			[[Muffle hearing|Surgery Degradation][$activeSlave.hears = -1, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10, $surgeryType = "earMuffle"]]
 		<</if>>
 	<</if>>
 <</if>>
@@ -181,11 +181,11 @@ $His $activeSlave.faceShape face is
 	<<if $activeSlave.indentureRestrictions < 1>>
 		<<if $activeSlave.earImplant != 1>>
 			<<if ($activeSlave.hears > -2)>>
-				| [[Deafen|Surgery Degradation][$activeSlave.hears = -2,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "deafen"]]
+				| [[Deafen|Surgery Degradation][$activeSlave.hears = -2,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "deafen"]]
 			<</if>>
 		<</if>>
 		<<if ($cyberMod == 1) && ($stockpile.cochlearImplant > 0) && ($activeSlave.earImplant != 1)>>
-			| [["Give " + $him + " cochlear implants"|Surgery Degradation][$activeSlave.earImplant = 1, $stockpile.cochlearImplant--,$cash -= $surgeryCost, $activeSlave.health -= 20,$surgeryType = "cochlear implant"]]
+			| [["Give " + $him + " cochlear implants"|Surgery Degradation][$activeSlave.earImplant = 1, $stockpile.cochlearImplant--,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "cochlear implant"]]
 		<</if>>
 	<</if>>
 <</if>>
@@ -217,19 +217,19 @@ $He has
 	//$His indenture forbids elective surgery//
 <<elseif ($activeSlave.lips <= 75) || (($activeSlave.lips <= 95) && ($seeExtreme == 1))>>
 	<<if $activeSlave.lipsImplant > 0>>
-		[[Replace with the next size up|Surgery Degradation][$activeSlave.lipsImplant += 20,$activeSlave.lips += 20,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "lips"]] //This will reduce $his oral skills//
+		[[Replace with the next size up|Surgery Degradation][$activeSlave.lipsImplant += 20,$activeSlave.lips += 20,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "lips"]] //This will reduce $his oral skills//
 	<<else>>
-		[[Lip implants|Surgery Degradation][$activeSlave.lipsImplant = 20,$activeSlave.lips += 20,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "lips"]] //This will reduce $his oral skills//
+		[[Lip implants|Surgery Degradation][$activeSlave.lipsImplant = 20,$activeSlave.lips += 20,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "lips"]] //This will reduce $his oral skills//
 	<</if>>
 <</if>>
 <<if $activeSlave.lipsImplant != 0>>
 	<<if $activeSlave.indentureRestrictions < 2>>
-	| [[Remove lip implants|Surgery Degradation][$activeSlave.lips = ($activeSlave.lips-$activeSlave.lipsImplant),$activeSlave.lipsImplant = 0,$cash -= $surgeryCost, $surgeryType = "lips"]]
+	| [[Remove lip implants|Surgery Degradation][$activeSlave.lips = ($activeSlave.lips-$activeSlave.lipsImplant),$activeSlave.lipsImplant = 0,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $surgeryType = "lips"]]
 	<</if>>
 <</if>>
 <<if ($activeSlave.lips >= 10) && ($activeSlave.lipsImplant == 0)>>
 	<<if $activeSlave.indentureRestrictions < 2>>
-	| [[Reduce lips|Surgery Degradation][$activeSlave.lips -= 10,$cash -= $surgeryCost, $surgeryType = "lips"]]
+	| [[Reduce lips|Surgery Degradation][$activeSlave.lips -= 10,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $surgeryType = "lips"]]
 	<</if>>
 <</if>>
 
@@ -237,53 +237,53 @@ $He has
 <<switch $activeSlave.teeth>>
 <<case "crooked">>
 	$He has crooked teeth.
-	[[Apply braces|Surgery Degradation][$activeSlave.teeth = "straightening braces",$cash -= $surgeryCost,$surgeryType = "braces"]]
+	[[Apply braces|Surgery Degradation][$activeSlave.teeth = "straightening braces",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$surgeryType = "braces"]]
 	<<if ($seeExtreme == 1) && ($activeSlave.indentureRestrictions < 1)>>
-	| [[Replace them with removable prosthetics|Surgery Degradation][$activeSlave.teeth = "removable",$cash -= $surgeryCost, $activeSlave.health -= 20,$surgeryType = "teeth"]] | [[Replace them with sharp teeth|Surgery Degradation][$activeSlave.teeth = "pointy",$cash -= $surgeryCost, $activeSlave.health -= 20,$surgeryType = "sharp"]]
+	| [[Replace them with removable prosthetics|Surgery Degradation][$activeSlave.teeth = "removable",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "teeth"]] | [[Replace them with sharp teeth|Surgery Degradation][$activeSlave.teeth = "pointy",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "sharp"]]
 	<</if>>
 <<case "gapped">>
 	$He has a noticeable gap in $his front teeth.
-	[[Apply braces|Surgery Degradation][$activeSlave.teeth = "straightening braces",$cash -= $surgeryCost,$surgeryType = "braces"]]
+	[[Apply braces|Surgery Degradation][$activeSlave.teeth = "straightening braces",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$surgeryType = "braces"]]
 	<<if ($seeExtreme == 1) && ($activeSlave.indentureRestrictions < 1)>>
-	| [[Replace them with removable prosthetics|Surgery Degradation][$activeSlave.teeth = "removable",$cash -= $surgeryCost, $activeSlave.health -= 20,$surgeryType = "teeth"]] | [[Replace them with sharp teeth|Surgery Degradation][$activeSlave.teeth = "pointy",$cash -= $surgeryCost, $activeSlave.health -= 20,$surgeryType = "sharp"]]
+	| [[Replace them with removable prosthetics|Surgery Degradation][$activeSlave.teeth = "removable",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "teeth"]] | [[Replace them with sharp teeth|Surgery Degradation][$activeSlave.teeth = "pointy",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "sharp"]]
 	<</if>>
 <<case "straightening braces">>
 	$His crooked teeth are in braces.
 	[[Remove braces|Remote Surgery][$activeSlave.teeth = "crooked",$surgeryType = "removeBraces"]]
 	<<if ($seeExtreme == 1) && ($activeSlave.indentureRestrictions < 1)>>
-	| [[Replace them with removable prosthetics|Surgery Degradation][$activeSlave.teeth = "removable",$cash -= $surgeryCost, $activeSlave.health -= 20,$surgeryType = "teeth"]] | [[Replace them with sharp teeth|Surgery Degradation][$activeSlave.teeth = "pointy",$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "sharp"]]
+	| [[Replace them with removable prosthetics|Surgery Degradation][$activeSlave.teeth = "removable",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "teeth"]] | [[Replace them with sharp teeth|Surgery Degradation][$activeSlave.teeth = "pointy",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "sharp"]]
 	<</if>>
 <<case "cosmetic braces">>
 	$He has braces on $his straight teeth.
 	[[Remove braces|Remote Surgery][$activeSlave.teeth = "normal"]]
 	<<if ($seeExtreme == 1) && ($activeSlave.indentureRestrictions < 1)>>
-	| [[Replace them with removable prosthetics|Surgery Degradation][$activeSlave.teeth = "removable",$cash -= $surgeryCost, $activeSlave.health -= 20,$surgeryType = "teeth"]] | [[Replace them with sharp teeth|Surgery Degradation][$activeSlave.teeth = "pointy",$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "sharp"]]
+	| [[Replace them with removable prosthetics|Surgery Degradation][$activeSlave.teeth = "removable",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "teeth"]] | [[Replace them with sharp teeth|Surgery Degradation][$activeSlave.teeth = "pointy",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "sharp"]]
 	<</if>>
 <<case "removable">>
 	$He has prosthetic teeth that can be removed for extreme oral sex.
 	<<if ($seeExtreme == 1) && ($activeSlave.indentureRestrictions < 1)>>
-	[[Replace them with sharp teeth|Surgery Degradation][$activeSlave.teeth = "pointy",$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "sharp"]] | [[Normal dental implants|Surgery Degradation][$activeSlave.teeth = "normal",$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "oral"]]
+	[[Replace them with sharp teeth|Surgery Degradation][$activeSlave.teeth = "pointy",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "sharp"]] | [[Normal dental implants|Surgery Degradation][$activeSlave.teeth = "normal",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "oral"]]
 	<</if>>
 <<case "pointy">>
 	$His teeth have been replaced with sturdy, realistic implants that mimic the dentition of a predator.
 	<<if ($seeExtreme == 1) && ($activeSlave.indentureRestrictions < 1)>>
-	[[Replace them with removable prosthetics|Surgery Degradation][$activeSlave.teeth = "removable",$cash -= $surgeryCost, $activeSlave.health -= 20,$surgeryType = "teeth"]] | [[Normal dental implants|Surgery Degradation][$activeSlave.teeth = "normal",$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "oral"]]
+	[[Replace them with removable prosthetics|Surgery Degradation][$activeSlave.teeth = "removable",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "teeth"]] | [[Normal dental implants|Surgery Degradation][$activeSlave.teeth = "normal",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "oral"]]
 	<</if>>
 <<case "baby">>
 	$He has baby teeth.
 	<<if ($seeExtreme == 1) && ($activeSlave.indentureRestrictions < 1)>>
-	[[Replace them with removable prosthetics|Surgery Degradation][$activeSlave.teeth = "removable",$cash -= $surgeryCost, $activeSlave.health -= 20,$surgeryType = "teeth"]] | [[Replace them with sharp teeth|Surgery Degradation][$activeSlave.teeth = "pointy",$cash -= $surgeryCost, $activeSlave.health -= 20,$surgeryType = "sharp"]] | [[Normal dental implants|Surgery Degradation][$activeSlave.teeth = "normal",$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "oral"]]
+	[[Replace them with removable prosthetics|Surgery Degradation][$activeSlave.teeth = "removable",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "teeth"]] | [[Replace them with sharp teeth|Surgery Degradation][$activeSlave.teeth = "pointy",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "sharp"]] | [[Normal dental implants|Surgery Degradation][$activeSlave.teeth = "normal",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "oral"]]
 	<</if>>
 <<case "mixed">>
 	$He has a mix of baby and normal teeth.
 	<<if ($seeExtreme == 1) && ($activeSlave.indentureRestrictions < 1)>>
-	[[Replace them with removable prosthetics|Surgery Degradation][$activeSlave.teeth = "removable",$cash -= $surgeryCost, $activeSlave.health -= 20,$surgeryType = "teeth"]] | [[Replace them with sharp teeth|Surgery Degradation][$activeSlave.teeth = "pointy",$cash -= $surgeryCost, $activeSlave.health -= 20,$surgeryType = "sharp"]] | [[Normal dental implants|Surgery Degradation][$activeSlave.teeth = "normal",$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "oral"]]
+	[[Replace them with removable prosthetics|Surgery Degradation][$activeSlave.teeth = "removable",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "teeth"]] | [[Replace them with sharp teeth|Surgery Degradation][$activeSlave.teeth = "pointy",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "sharp"]] | [[Normal dental implants|Surgery Degradation][$activeSlave.teeth = "normal",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "oral"]]
 	<</if>>
 <<default>>
 	$He has normal, healthy teeth.
-	[[Unnecessary braces|Surgery Degradation][$activeSlave.teeth = "cosmetic braces",$cash -= $surgeryCost,$surgeryType = "braces"]]
+	[[Unnecessary braces|Surgery Degradation][$activeSlave.teeth = "cosmetic braces",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$surgeryType = "braces"]]
 	<<if ($seeExtreme == 1) && ($activeSlave.indentureRestrictions < 1)>>
-	| [[Replace them with removable prosthetics|Surgery Degradation][$activeSlave.teeth = "removable",$cash -= $surgeryCost, $activeSlave.health -= 20,$surgeryType = "teeth"]] | [[Replace them with sharp teeth|Surgery Degradation][$activeSlave.teeth = "pointy",$cash -= $surgeryCost, $activeSlave.health -= 20,$surgeryType = "sharp"]]
+	| [[Replace them with removable prosthetics|Surgery Degradation][$activeSlave.teeth = "removable",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "teeth"]] | [[Replace them with sharp teeth|Surgery Degradation][$activeSlave.teeth = "pointy",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "sharp"]]
 	<</if>>
 <</switch>>
 
@@ -309,30 +309,30 @@ $He has
 <<if ($activeSlave.indentureRestrictions < 1) && ($activeSlave.electrolarynx != 1)>>
 	<<if $activeSlave.voice != 0>>
 		<<if $activeSlave.voice < 3>>
-			[[Perform surgery to raise voice|Surgery Degradation][$activeSlave.voice += 1, $activeSlave.voiceImplant += 1, $cash -= $surgeryCost, $activeSlave.health -= 10, $surgeryType = "voice"]]
+			[[Perform surgery to raise voice|Surgery Degradation][$activeSlave.voice += 1, $activeSlave.voiceImplant += 1, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10, $surgeryType = "voice"]]
 		<</if>>
 		<<if $activeSlave.voice == 2>>
 			|
 		<</if>>
 		<<if $activeSlave.voice > 1>>
-			[[Perform surgery to lower voice|Surgery Degradation][$activeSlave.voice -= 1, $activeSlave.voiceImplant -= 1, $cash -= $surgeryCost, $activeSlave.health -= 10, $surgeryType = "voice2"]]
+			[[Perform surgery to lower voice|Surgery Degradation][$activeSlave.voice -= 1, $activeSlave.voiceImplant -= 1, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10, $surgeryType = "voice2"]]
 		<</if>>
 		<<if $seeExtreme == 1>>
-			| [[Remove vocal cords|Surgery Degradation][$activeSlave.voice = 0, $activeSlave.voiceImplant = 0, $cash -= $surgeryCost, $activeSlave.health -= 10, $surgeryType = "mute"]]
+			| [[Remove vocal cords|Surgery Degradation][$activeSlave.voice = 0, $activeSlave.voiceImplant = 0, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10, $surgeryType = "mute"]]
 		<</if>>
 	<<elseif $activeSlave.voice == 0 && $cyberMod == 1 && $stockpile.electrolarynx > 0>>
-		[["Give " + $him + " an electrolarynx"|Surgery Degradation][$activeSlave.electrolarynx = 1, $activeSlave.voice = 2, $stockpile.electrolarynx--, $cash -= $surgeryCost, $activeSlave.health -= 20, $surgeryType = "electrolarynx"]]
+		[["Give " + $him + " an electrolarynx"|Surgery Degradation][$activeSlave.electrolarynx = 1, $activeSlave.voice = 2, $stockpile.electrolarynx--, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20, $surgeryType = "electrolarynx"]]
 	<</if>>
 <</if>>
 
 <<if $activeSlave.scars > 0>>
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
 	$He has notable facial scarring.
-	[[Remove scars|Surgery Degradation][$activeSlave.scars = 0, $cash -= $surgeryCost, $activeSlave.health -= 5, $surgeryType = "scarRemov"]]
+	[[Remove scars|Surgery Degradation][$activeSlave.scars = 0, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 5, $surgeryType = "scarRemov"]]
 <<elseif $activeSlave.scars == 0>>
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
-	$His face is unscarred. [[Give a menacing scar|Surgery Degradation][$activeSlave.scars = 5, $cash -= $surgeryCost, $activeSlave.health -= 5, $surgeryType = "scarFear"]] |
-	[[Give an exotic scar|Surgery Degradation][$activeSlave.scars = 6, $cash -= $surgeryCost, $activeSlave.health -= 5, $surgeryType = "scarExo"]]
+	$His face is unscarred. [[Give a menacing scar|Surgery Degradation][$activeSlave.scars = 5, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 5, $surgeryType = "scarFear"]] |
+	[[Give an exotic scar|Surgery Degradation][$activeSlave.scars = 6, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 5, $surgeryType = "scarExo"]]
 <</if>>
 
 <br><br>
@@ -384,63 +384,63 @@ Work on $his chest:
 <<elseif $activeSlave.breastMesh == 1>>
 	//$His supportive mesh implant blocks implantation//
 <<elseif $activeSlave.boobsImplant == 0>>
-	[[String implants|Surgery Degradation][$activeSlave.boobsImplant = 400, $activeSlave.boobsImplantType = 1,$activeSlave.boobs += 400,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "boobs"]] |
-	<<if $surgeryUpgrade == 1>>[[Large implants|Surgery Degradation][$activeSlave.boobsImplant = 600,$activeSlave.boobs += 600,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "boobs"]] |<</if>>
-	[[Standard implants|Surgery Degradation][$activeSlave.boobsImplant = 400,$activeSlave.boobs += 400,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "boobs"]] |
-	[[Small implants|Surgery Degradation][$activeSlave.boobsImplant = 200,$activeSlave.boobs += 200,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "boobs"]]
+	[[String implants|Surgery Degradation][$activeSlave.boobsImplant = 400, $activeSlave.boobsImplantType = 1,$activeSlave.boobs += 400,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "boobs"]] |
+	<<if $surgeryUpgrade == 1>>[[Large implants|Surgery Degradation][$activeSlave.boobsImplant = 600,$activeSlave.boobs += 600,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "boobs"]] |<</if>>
+	[[Standard implants|Surgery Degradation][$activeSlave.boobsImplant = 400,$activeSlave.boobs += 400,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "boobs"]] |
+	[[Small implants|Surgery Degradation][$activeSlave.boobsImplant = 200,$activeSlave.boobs += 200,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "boobs"]]
 <<elseif $activeSlave.boobsImplant > 10000 && $activeSlave.boobsImplantType != 1 && $ImplantProductionUpgrade == 1>>
-	[[Add inert filler|Surgery Degradation][$activeSlave.boobsImplant += 1000,$activeSlave.boobs += 1000,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "boobs"]]
+	[[Add inert filler|Surgery Degradation][$activeSlave.boobsImplant += 1000,$activeSlave.boobs += 1000,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "boobs"]]
 <<elseif $activeSlave.boobsImplant > 9800 && $activeSlave.boobsImplantType != 1 && $ImplantProductionUpgrade == 1>>
-	[[Hyper fillable implants|Surgery Degradation][$activeSlave.boobsImplant = 11000,$activeSlave.boobs += 800,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "boobs"]]
+	[[Hyper fillable implants|Surgery Degradation][$activeSlave.boobsImplant = 11000,$activeSlave.boobs += 800,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "boobs"]]
 <<elseif $activeSlave.boobsImplant > 2000 && $activeSlave.boobsImplantType != 1>>
-	[[Add inert filler|Surgery Degradation][$activeSlave.boobsImplant += 400,$activeSlave.boobs += 400,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "boobs"]]
+	[[Add inert filler|Surgery Degradation][$activeSlave.boobsImplant += 400,$activeSlave.boobs += 400,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "boobs"]]
 <<elseif $activeSlave.boobsImplant > 1800 && $activeSlave.boobsImplantType != 1>>
 	$His implants are filled to capacity.
 	<<if $ImplantProductionUpgrade == 1>>
-		[[Advanced fillable implants|Surgery Degradation][$activeSlave.boobsImplant = 2200,$activeSlave.boobs += 200,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "boobs"]]
+		[[Advanced fillable implants|Surgery Degradation][$activeSlave.boobsImplant = 2200,$activeSlave.boobs += 200,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "boobs"]]
 	<<else>>
-		[[Special order advanced fillable implants|Surgery Degradation][$activeSlave.boobsImplant = 2200,$activeSlave.boobs += 200,$cash -= $surgeryCost+10000, $activeSlave.health -= 10,$surgeryType = "boobs"]] //Will cost an additional <<= cashFormat(10000)>>//
+		[[Special order advanced fillable implants|Surgery Degradation][$activeSlave.boobsImplant = 2200,$activeSlave.boobs += 200,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)+10000, $activeSlave.health -= 10,$surgeryType = "boobs"]] //Will cost an additional <<= cashFormat(10000)>>//
 	<</if>>
 <<elseif $activeSlave.boobsImplant > 600 && $activeSlave.boobsImplantType != 1>>
-	[[Add inert filler|Surgery Degradation][$activeSlave.boobsImplant += 200,$activeSlave.boobs += 200,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "boobs"]]
+	[[Add inert filler|Surgery Degradation][$activeSlave.boobsImplant += 200,$activeSlave.boobs += 200,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "boobs"]]
 <<elseif $activeSlave.boobsImplant > 400 && $activeSlave.boobsImplantType != 1>>
-	[[Fillable implants|Surgery Degradation][$activeSlave.boobsImplant = 800,$activeSlave.boobs += 200,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "boobs"]]
+	[[Fillable implants|Surgery Degradation][$activeSlave.boobsImplant = 800,$activeSlave.boobs += 200,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "boobs"]]
 <<elseif $activeSlave.boobsImplant > 200 && $activeSlave.boobsImplantType != 1>>
-	[[Large implants|Surgery Degradation][$activeSlave.boobsImplant = 600,$activeSlave.boobs += 200,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "boobs"]]
+	[[Large implants|Surgery Degradation][$activeSlave.boobsImplant = 600,$activeSlave.boobs += 200,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "boobs"]]
 <<elseif $activeSlave.boobsImplant > 0 && $activeSlave.boobsImplantType != 1>>
-	[[Standard implants|Surgery Degradation][$activeSlave.boobsImplant = 400,$activeSlave.boobs += 200,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "boobs"]] | [[Large implants|Surgery Degradation][$activeSlave.boobsImplant = 600,$activeSlave.boobs += 400,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "boobs"]]
+	[[Standard implants|Surgery Degradation][$activeSlave.boobsImplant = 400,$activeSlave.boobs += 200,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "boobs"]] | [[Large implants|Surgery Degradation][$activeSlave.boobsImplant = 600,$activeSlave.boobs += 400,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "boobs"]]
 <</if>>
 <<if $activeSlave.boobsImplant != 0>>
 	<<if $activeSlave.boobsImplantType == 1 && $activeSlave.boobsImplant > 400>>
 		<<if $activeSlave.boobsImplant > 8000>>
-			| [[Drain 1000cc|Surgery Degradation][$activeSlave.boobs = ($activeSlave.boobs-1000),$activeSlave.boobsImplant = ($activeSlave.boobsImplant-1000), $activeSlave.health -= 5,$cash -= $surgeryCost, $surgeryType = "boobsLoss"]]
+			| [[Drain 1000cc|Surgery Degradation][$activeSlave.boobs = ($activeSlave.boobs-1000),$activeSlave.boobsImplant = ($activeSlave.boobsImplant-1000), $activeSlave.health -= 5,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $surgeryType = "boobsLoss"]]
 		<<elseif $activeSlave.boobsImplant > 5000>>
-			| [[Drain 750cc|Surgery Degradation][$activeSlave.boobs = ($activeSlave.boobs-750),$activeSlave.boobsImplant = ($activeSlave.boobsImplant-750), $activeSlave.health -= 5,$cash -= $surgeryCost, $surgeryType = "boobsLoss"]]
+			| [[Drain 750cc|Surgery Degradation][$activeSlave.boobs = ($activeSlave.boobs-750),$activeSlave.boobsImplant = ($activeSlave.boobsImplant-750), $activeSlave.health -= 5,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $surgeryType = "boobsLoss"]]
 		<<elseif $activeSlave.boobsImplant > 2000>>
-			| [[Drain 500cc|Surgery Degradation][$activeSlave.boobs = ($activeSlave.boobs-500),$activeSlave.boobsImplant = ($activeSlave.boobsImplant-500), $activeSlave.health -= 5,$cash -= $surgeryCost, $surgeryType = "boobsLoss"]]
+			| [[Drain 500cc|Surgery Degradation][$activeSlave.boobs = ($activeSlave.boobs-500),$activeSlave.boobsImplant = ($activeSlave.boobsImplant-500), $activeSlave.health -= 5,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $surgeryType = "boobsLoss"]]
 		<<elseif $activeSlave.boobsImplant > 1000>>
-			| [[Drain 250cc|Surgery Degradation][$activeSlave.boobs = ($activeSlave.boobs-250),$activeSlave.boobsImplant = ($activeSlave.boobsImplant-250), $activeSlave.health -= 5,$cash -= $surgeryCost, $surgeryType = "boobsLoss"]]
+			| [[Drain 250cc|Surgery Degradation][$activeSlave.boobs = ($activeSlave.boobs-250),$activeSlave.boobsImplant = ($activeSlave.boobsImplant-250), $activeSlave.health -= 5,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $surgeryType = "boobsLoss"]]
 		<<elseif $activeSlave.boobsImplant > 500>>
-			| [[Drain 100cc|Surgery Degradation][$activeSlave.boobs = ($activeSlave.boobs-100),$activeSlave.boobsImplant = ($activeSlave.boobsImplant-100), $activeSlave.health -= 5,$cash -= $surgeryCost, $surgeryType = "boobsLoss"]]
+			| [[Drain 100cc|Surgery Degradation][$activeSlave.boobs = ($activeSlave.boobs-100),$activeSlave.boobsImplant = ($activeSlave.boobsImplant-100), $activeSlave.health -= 5,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $surgeryType = "boobsLoss"]]
 		<</if>>
 	<</if>>
-	| [[Remove breast implants|Surgery Degradation][$activeSlave.boobs = ($activeSlave.boobs-$activeSlave.boobsImplant),$activeSlave.boobsImplant = 0,$activeSlave.boobsImplantType = 0, $activeSlave.health -= 5,$cash -= $surgeryCost, $surgeryType = "boobsLoss"]]
+	| [[Remove breast implants|Surgery Degradation][$activeSlave.boobs = ($activeSlave.boobs-$activeSlave.boobsImplant),$activeSlave.boobsImplant = 0,$activeSlave.boobsImplantType = 0, $activeSlave.health -= 5,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $surgeryType = "boobsLoss"]]
 <</if>>
 <<if ($activeSlave.boobs > 300) && ($activeSlave.boobsImplant == 0)>>
 	<<if $activeSlave.indentureRestrictions >= 2>>
 	<<else>>
-	| [[Reduce breasts|Surgery Degradation][$activeSlave.boobs -= 200, $activeSlave.health -= 5,$cash -= $surgeryCost, $surgeryType = "boobsLoss"]]
+	| [[Reduce breasts|Surgery Degradation][$activeSlave.boobs -= 200, $activeSlave.health -= 5,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $surgeryType = "boobsLoss"]]
 	<</if>>
 <</if>>
 <<if ($activeSlave.boobs >= 7000) && ($activeSlave.boobsImplant == 0)>>
 	<<if $activeSlave.indentureRestrictions >= 2 || ($activeSlave.breedingMark == 1 && $propOutcome == 1)>>
 	<<else>>
-	| [[Mastectomy|Surgery Degradation][$activeSlave.boobs = 300, $activeSlave.breastMesh = 0, $activeSlave.health -= 30,$cash -= $surgeryCost, $surgeryType = "mastectomy+"]]
+	| [[Mastectomy|Surgery Degradation][$activeSlave.boobs = 300, $activeSlave.breastMesh = 0, $activeSlave.health -= 30,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $surgeryType = "mastectomy+"]]
 	<</if>>
 <<elseif ($activeSlave.boobs >= 2000) && ($activeSlave.boobsImplant == 0)>>
 	<<if $activeSlave.indentureRestrictions >= 2 || ($activeSlave.breedingMark == 1 && $propOutcome == 1)>>
 	<<else>>
-	| [[Mastectomy|Surgery Degradation][$activeSlave.boobs = 300, $activeSlave.breastMesh = 0, $activeSlave.health -= 30,$cash -= $surgeryCost, $surgeryType = "mastectomy"]]
+	| [[Mastectomy|Surgery Degradation][$activeSlave.boobs = 300, $activeSlave.breastMesh = 0, $activeSlave.health -= 30,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $surgeryType = "mastectomy"]]
 	<</if>>
 <</if>>
 
@@ -471,16 +471,16 @@ Work on $his chest:
 		//$His supportive mesh implant prevents reconstruction//
 	<<else>>
 		<<if ($activeSlave.boobShape == "saggy") || ($activeSlave.boobShape == "downward-facing")>>
-			[[Breast lift|Surgery Degradation][$activeSlave.boobShape = "normal", $activeSlave.health -= 20,$cash -= $surgeryCost, $surgeryType = "breastLift"]]<<if $activeSlave.preg > $activeSlave.pregData.normalBirth/1.42 || ($activeSlave.boobs >= 5000 && $activeSlave.boobs < 8000)>>//$His current state may result in $his breasts becoming saggy again//<</if>>
+			[[Breast lift|Surgery Degradation][$activeSlave.boobShape = "normal", $activeSlave.health -= 20,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $surgeryType = "breastLift"]]<<if $activeSlave.preg > $activeSlave.pregData.normalBirth/1.42 || ($activeSlave.boobs >= 5000 && $activeSlave.boobs < 8000)>>//$His current state may result in $his breasts becoming saggy again//<</if>>
 		<<else>>
 			<<if ($activeSlave.boobShape == "normal")>>
-				[[Reshape them to be perkier|Surgery Degradation][$activeSlave.boobShape = "perky",$cash -= $surgeryCost,$activeSlave.health -= 10,$surgeryType = "breastReconstruction"]]
-				| [[Make them torpedo-shaped|Surgery Degradation][$activeSlave.boobShape = "torpedo-shaped",$cash -= $surgeryCost,$activeSlave.health -= 10,$surgeryType = "breastReconstruction"]]
+				[[Reshape them to be perkier|Surgery Degradation][$activeSlave.boobShape = "perky",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$activeSlave.health -= 10,$surgeryType = "breastReconstruction"]]
+				| [[Make them torpedo-shaped|Surgery Degradation][$activeSlave.boobShape = "torpedo-shaped",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$activeSlave.health -= 10,$surgeryType = "breastReconstruction"]]
 			<<else>>
-				[[Reshape them to be more normal|Surgery Degradation][$activeSlave.boobShape = "normal",$cash -= $surgeryCost,$activeSlave.health -= 10,$surgeryType = "breastReconstruction"]]
+				[[Reshape them to be more normal|Surgery Degradation][$activeSlave.boobShape = "normal",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$activeSlave.health -= 10,$surgeryType = "breastReconstruction"]]
 			<</if>>
 			<<if ($activeSlave.boobShape != "saggy") && ($activeSlave.boobShape != "downward-facing") && ($activeSlave.boobs >= 2000) && ($activeSlave.boobsImplant == 0) && ($meshImplants == 1) && ($surgeryUpgrade == 1)>>
-				| [[Implant a supportive mesh to preserve their shape|Surgery Degradation][$activeSlave.breastMesh = 1,$cash -= ($surgeryCost*($activeSlave.boobs/100)),$activeSlave.health -= 10,$surgeryType = "breastShapePreservation"]]
+				| [[Implant a supportive mesh to preserve their shape|Surgery Degradation][$activeSlave.breastMesh = 1,cashX(forceNeg($surgeryCost*($activeSlave.boobs/100)), "slaveSurgery", $activeSlave),$activeSlave.health -= 10,$surgeryType = "breastShapePreservation"]]
 			<</if>>
 		<</if>>
 	<</if>>
@@ -496,7 +496,7 @@ Work on $his chest:
 		//$His indenture forbids extreme body modification//
 	<<else>> /* split for possible dicknips later on, should lcd wish to attempt it again. */
 		<<if $activeSlave.nipples == "fuckable">>
-			[[Restore their shape and function|Surgery Degradation][$activeSlave.nipples = "huge",$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "areolae"]]
+			[[Restore their shape and function|Surgery Degradation][$activeSlave.nipples = "huge",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "areolae"]]
 		<<else>>
 			<<if $activeSlave.boobs-$activeSlave.boobsMilk < 500>>
 				//$His breasts are too small to support reshaping $his nipples to be penetratable//
@@ -505,7 +505,7 @@ Work on $his chest:
 			<<elseif $activeSlave.nipples != "huge">>
 				//$His nipples are too small to be made fuckable//
 			<<else>>
-				[[Reshape them to support being penetrated|Surgery Degradation][$activeSlave.nipples = "fuckable",$activeSlave.nipplesPiercing = 0,$cash -= $surgeryCost, $activeSlave.health -= 20,$surgeryType = "nippleCunts"]]<<if $activeSlave.nipplesPiercing > 0>> //Will remove piercings.//<</if>>
+				[[Reshape them to support being penetrated|Surgery Degradation][$activeSlave.nipples = "fuckable",$activeSlave.nipplesPiercing = 0,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "nippleCunts"]]<<if $activeSlave.nipplesPiercing > 0>> //Will remove piercings.//<</if>>
 			<</if>>
 		<</if>>
 	<</if>>
@@ -520,11 +520,11 @@ Work on $his chest:
 	$He has <<if $activeSlave.areolae == 2>>huge<<elseif $activeSlave.areolae == 3>>massive<</if>> areolae<<if $activeSlave.areolaeShape != "circle">>, which have been surgically altered to be $activeSlave.areolaeShape-shaped<</if>>.
 	<<if ($activeSlave.indentureRestrictions < 2) && ($activeSlave.areolaeShape == "circle")>>
 	They are big enough that they could be reshaped into a pattern. Graft skin to make $his areolae:
-		[[Heart-shaped|Surgery Degradation][$activeSlave.areolaeShape = "heart",$activeSlave.areolae -= 1,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "areolae"]]
-		| [[Star-shaped|Surgery Degradation][$activeSlave.areolaeShape = "star",$activeSlave.areolae -= 1,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "areolae"]] |
+		[[Heart-shaped|Surgery Degradation][$activeSlave.areolaeShape = "heart",$activeSlave.areolae -= 1,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "areolae"]]
+		| [[Star-shaped|Surgery Degradation][$activeSlave.areolaeShape = "star",$activeSlave.areolae -= 1,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "areolae"]] |
 	<</if>>
 	<<if $activeSlave.indentureRestrictions < 2>>
-		[[Reduce areolae|Surgery Degradation][$activeSlave.areolae -= 1,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "areolae"]]
+		[[Reduce areolae|Surgery Degradation][$activeSlave.areolae -= 1,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "areolae"]]
 	<</if>>
 <</if>>
 
@@ -538,11 +538,11 @@ Work on $his chest:
 <</if>>
 <<if $activeSlave.lactation < 2>>
 	<<if $activeSlave.indentureRestrictions < 2>>
-	[[Implant slow-release pro-lactation drugs|Surgery Degradation][$activeSlave.lactation = 2, $activeSlave.lactationDuration = 2, $activeSlave.induceLactation = 0, $activeSlave.boobs -= $activeSlave.boobsMilk, $activeSlave.boobsMilk = 0,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "lactation"]] //This may increase $his natural breast size//
+	[[Implant slow-release pro-lactation drugs|Surgery Degradation][$activeSlave.lactation = 2, $activeSlave.lactationDuration = 2, $activeSlave.induceLactation = 0, $activeSlave.boobs -= $activeSlave.boobsMilk, $activeSlave.boobsMilk = 0,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "lactation"]] //This may increase $his natural breast size//
 	<</if>>
 <</if>>
 <<if $activeSlave.lactation > 1>>
-	| [[Remove lactation implant|Surgery Degradation][$activeSlave.lactation = 0, $activeSlave.lactationDuration = 0,$cash -= $surgeryCost, $surgeryType = "endlac"]]
+	| [[Remove lactation implant|Surgery Degradation][$activeSlave.lactation = 0, $activeSlave.lactationDuration = 0,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $surgeryType = "endlac"]]
 <</if>>
 
 <br><br>
@@ -555,14 +555,14 @@ Work on $his midriff:
 <<elseif $activeSlave.weight > 30>>
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
 	<<if $activeSlave.weight > 190>>
-		$He is extremely fat. [[Major liposuction|Surgery Degradation][$activeSlave.health -= 40, $cash -= $surgeryCost, $surgeryType = "liposuction"]]
+		$He is extremely fat. [[Major liposuction|Surgery Degradation][$activeSlave.health -= 40, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $surgeryType = "liposuction"]]
 	<<elseif $activeSlave.weight > 130>>
-		$He is fat. [[Heavy liposuction|Surgery Degradation][$activeSlave.health -= 20, $cash -= $surgeryCost, $surgeryType = "liposuction"]]
+		$He is fat. [[Heavy liposuction|Surgery Degradation][$activeSlave.health -= 20, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $surgeryType = "liposuction"]]
 	<<elseif $activeSlave.weight > 30>>
-		$He is overweight. [[Liposuction|Surgery Degradation][$activeSlave.health -= 10, $cash -= $surgeryCost, $surgeryType = "liposuction"]]
+		$He is overweight. [[Liposuction|Surgery Degradation][$activeSlave.health -= 10, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $surgeryType = "liposuction"]]
 	<</if>>
 	<<if $surgeryUpgrade == 1>>
-		| [[Fat grafting|fat grafting workaround][$activeSlave.health -= 40, $cash -= $surgeryCost*2, $availabeFat = Math.round($activeSlave.weight/10), $boobFat = 0, $buttFat = 0, $surgeryType = "fat graft"]]
+		| [[Fat grafting|fat grafting workaround][$activeSlave.health -= 40, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)*2, $availabeFat = Math.round($activeSlave.weight/10), $boobFat = 0, $buttFat = 0, $surgeryType = "fat graft"]]
 	<</if>>
 <</if>>
 
@@ -579,12 +579,12 @@ $He has
 waist.
 <<if $activeSlave.waist >= -75>>
 	<<if $activeSlave.indentureRestrictions < 2>>
-	[[Liposuction|Surgery Degradation][$activeSlave.waist -= 20,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "lipo"]]
+	[[Liposuction|Surgery Degradation][$activeSlave.waist -= 20,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "lipo"]]
 	<</if>>
 <</if>>
 <<if ($activeSlave.waist >= -95) && ($activeSlave.waist < -75) && ($seeExtreme == 1)>>
 	<<if $activeSlave.indentureRestrictions < 1 && ($activeSlave.breedingMark != 1 || $propOutcome == 0)>>
-	[["Remove ribs to severely narrow " + $his + " waist"|Surgery Degradation][$activeSlave.waist = -100,$cash -= $surgeryCost, $activeSlave.health -= 40,$surgeryType = "ribs"]]
+	[["Remove ribs to severely narrow " + $his + " waist"|Surgery Degradation][$activeSlave.waist = -100,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 40,$surgeryType = "ribs"]]
 	<</if>>
 <</if>>
 
@@ -645,33 +645,33 @@ $He's
 <<elseif $activeSlave.bellyImplant > 130000 && $arcologies[0].FSTransformationFetishistResearch != 1>>
 	//$His abdominal implant is at its capacity//
 <<elseif $activeSlave.bellyImplant == -1 && ($activeSlave.ovaries == 1 || $activeSlave.mpreg == 1) && $bellyImplants == 1>>
-	[[Implant fillable abdominal implant|Surgery Degradation][$activeSlave.bellyImplant = 0,$activeSlave.preg = -2, $activeSlave.bellyPain += 1,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "bellyIn"]]
+	[[Implant fillable abdominal implant|Surgery Degradation][$activeSlave.bellyImplant = 0,$activeSlave.preg = -2, $activeSlave.bellyPain += 1,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "bellyIn"]]
 <<elseif $activeSlave.bellyImplant == -1 && $bellyImplants == 1>>
-	[[Implant a fillable abdominal implant|Surgery Degradation][$activeSlave.bellyImplant = 0, $cash -= $surgeryCost, $activeSlave.bellyPain += 2, $activeSlave.health -= 50, $surgeryType = "bellyInMale"]]
+	[[Implant a fillable abdominal implant|Surgery Degradation][$activeSlave.bellyImplant = 0, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.bellyPain += 2, $activeSlave.health -= 50, $surgeryType = "bellyInMale"]]
 <<elseif $activeSlave.bellyPain == 2>>
 	//$His body cannot handle more filler this week//
 <<elseif $activeSlave.bellyImplant > -1 && $activeSlave.bellyPain == 0>>
-	[[Add inert filler|Surgery Degradation][$activeSlave.bellyImplant += 200, $activeSlave.bellyPain += 1,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "bellyUp"]]
-	| [[Add a considerable amount of inert filler|Surgery Degradation][$activeSlave.bellyImplant += 500, $activeSlave.bellyPain += 1,$cash -= $surgeryCost, $activeSlave.health -= 20,$surgeryType = "bellyUp"]]
+	[[Add inert filler|Surgery Degradation][$activeSlave.bellyImplant += 200, $activeSlave.bellyPain += 1,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "bellyUp"]]
+	| [[Add a considerable amount of inert filler|Surgery Degradation][$activeSlave.bellyImplant += 500, $activeSlave.bellyPain += 1,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "bellyUp"]]
 <<elseif $activeSlave.bellyImplant > -1 && $activeSlave.bellyPain == 1>>
-	[[Add more inert filler|Surgery Degradation][$activeSlave.bellyImplant += 200, $activeSlave.bellyPain += 1,$cash -= $surgeryCost, $activeSlave.health -= 30,$surgeryType = "bellyUp"]]
-	| [[Add a considerable amount of inert filler|Surgery Degradation][$activeSlave.bellyImplant += 500, $activeSlave.bellyPain += 1,$cash -= $surgeryCost, $activeSlave.health -= 40,$surgeryType = "bellyUp"]]<<if $activeSlave.health < 0>>//@@.red;This may cause severe health issues//<</if>>
+	[[Add more inert filler|Surgery Degradation][$activeSlave.bellyImplant += 200, $activeSlave.bellyPain += 1,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 30,$surgeryType = "bellyUp"]]
+	| [[Add a considerable amount of inert filler|Surgery Degradation][$activeSlave.bellyImplant += 500, $activeSlave.bellyPain += 1,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 40,$surgeryType = "bellyUp"]]<<if $activeSlave.health < 0>>//@@.red;This may cause severe health issues//<</if>>
 <</if>>
 <<if $activeSlave.bellyImplant > -1>>
-	| [[Drain implant|Surgery Degradation][$activeSlave.bellyImplant -= 200,$cash -= $surgeryCost, $activeSlave.health -= 5, $surgeryType = "bellyDown"]]
+	| [[Drain implant|Surgery Degradation][$activeSlave.bellyImplant -= 200,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 5, $surgeryType = "bellyDown"]]
 	<<if $activeSlave.bellyImplant >= 500>>
-		| [[Greatly drain implant|Surgery Degradation][$activeSlave.bellyImplant -= 500, $activeSlave.health -= 5,$cash -= $surgeryCost, $surgeryType = "bellyDown"]]
+		| [[Greatly drain implant|Surgery Degradation][$activeSlave.bellyImplant -= 500, $activeSlave.health -= 5,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $surgeryType = "bellyDown"]]
 	<</if>>
 	<<if $activeSlave.indentureRestrictions < 2>>
-		| [[Remove implant|Surgery Degradation][$activeSlave.bellyImplant = -1, $activeSlave.cervixImplant = 0, $cash -= $surgeryCost, $activeSlave.health -= 10, $surgeryType = "bellyOut"]]
+		| [[Remove implant|Surgery Degradation][$activeSlave.bellyImplant = -1, $activeSlave.cervixImplant = 0, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10, $surgeryType = "bellyOut"]]
 		<<if $activeSlave.cervixImplant != 1 && $activeSlave.cervixImplant != 3 && $cervixImplants >= 1 && $activeSlave.vagina > -1>> /* slave should have vagina */
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-			[[Install cervix micropump filter|Surgery Degradation][$activeSlave.cervixImplant = ($activeSlave.cervixImplant==0?1:3), $activeSlave.health -= 5, $cash -= $surgeryCost, $surgeryType = "cervixPump"]]<br>
+			[[Install cervix micropump filter|Surgery Degradation][$activeSlave.cervixImplant = ($activeSlave.cervixImplant==0?1:3), $activeSlave.health -= 5, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $surgeryType = "cervixPump"]]<br>
 			//Will allow $his belly implant to slowly swell as people cum in $his vagina//
 		<</if>>
 		<<if $activeSlave.cervixImplant != 2 && $activeSlave.cervixImplant != 3 && $cervixImplants == 2>>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-			[[Install rectal micropump filter|Surgery Degradation][$activeSlave.cervixImplant = ($activeSlave.cervixImplant==0?2:3), $activeSlave.health -= 20, $cash -= $surgeryCost, $surgeryType = "cervixPumpA"]]<br>
+			[[Install rectal micropump filter|Surgery Degradation][$activeSlave.cervixImplant = ($activeSlave.cervixImplant==0?2:3), $activeSlave.health -= 20, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $surgeryType = "cervixPumpA"]]<br>
 			//Will allow $his belly implant to slowly swell as people cum in $his anus//
 		<</if>>
 	<</if>>
@@ -688,7 +688,7 @@ $He's
 	<<else>>
 		<<if $surgeryUpgrade == 1>>
 			<<if $UterineRestraintMesh == 1>>
-				[[Install reinforcing organic mesh|Surgery Degradation][$activeSlave.wombImplant = "restraint", $activeSlave.health -= 25, $cash -= $surgeryCost, $surgeryType = "womb"]]
+				[[Install reinforcing organic mesh|Surgery Degradation][$activeSlave.wombImplant = "restraint", $activeSlave.health -= 25, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $surgeryType = "womb"]]
 			<</if>>
 		<</if>>
 	<</if>>
@@ -700,7 +700,7 @@ $He's
 	<<elseif $activeSlave.bellyImplant > 0 || $activeSlave.preg > 0>>
 		//$His womb is currently in use and unsafe to operate on//
 	<<else>>
-		[[Remove organic mesh|Surgery Degradation][$activeSlave.wombImplant = "none", $activeSlave.health -= 50, $cash -= $surgeryCost, $surgeryType = "womb"]]<<if $activeSlave.health < 0>>//@@.red;This may cause severe health issues//<</if>>
+		[[Remove organic mesh|Surgery Degradation][$activeSlave.wombImplant = "none", $activeSlave.health -= 50, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $surgeryType = "womb"]]<<if $activeSlave.health < 0>>//@@.red;This may cause severe health issues//<</if>>
 	<</if>>
 <</if>>
 
@@ -710,7 +710,7 @@ $He's
 		$He has a sagging midriff, ruined from excessive pregnancy. It is currently filled out by $his swollen belly and cannot safely be worked on.
 	<<else>>
 		$He has a sagging midriff, ruined from excessive pregnancy.
-		[[Tummy tuck|Surgery Degradation][$activeSlave.bellySag = 0,$activeSlave.bellySagPreg = 0,$cash -= $surgeryCost, $activeSlave.health -= 20,$surgeryType = "tummyTuck"]]
+		[[Tummy tuck|Surgery Degradation][$activeSlave.bellySag = 0,$activeSlave.bellySagPreg = 0,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "tummyTuck"]]
 	<</if>>
 <<elseif $activeSlave.bellySag > 0>>
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
@@ -718,14 +718,14 @@ $He's
 		$He has a sagging midriff, ruined from excessive distention. It is currently filled out by $his swollen belly and cannot safely be worked on.
 	<<else>>
 		$He has a sagging midriff, ruined from excessive distention.
-		[[Tummy tuck|Surgery Degradation][$activeSlave.bellySag = 0,$activeSlave.bellySagPreg = 0,$cash -= $surgeryCost, $activeSlave.health -= 20,$surgeryType = "tummyTuck"]]
+		[[Tummy tuck|Surgery Degradation][$activeSlave.bellySag = 0,$activeSlave.bellySagPreg = 0,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "tummyTuck"]]
 	<</if>>
 <</if>>
 
 <<if ($activeSlave.cSec == 1)>>
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
 	$He has an unsightly c-section scar.
-	[[Remove Caesarean scar|Surgery Degradation][$activeSlave.cSec = 0,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "bellyscar"]]
+	[[Remove Caesarean scar|Surgery Degradation][$activeSlave.cSec = 0,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "bellyscar"]]
 <</if>>
 
 <br><br>
@@ -764,35 +764,35 @@ $He's got a
 <<elseif $activeSlave.buttImplant > 7 && $arcologies[0].FSTransformationFetishistResearch != 1 && $activeSlave.buttImplantType != 1>>
 	//$His butt implants are filled to capacity//
 <<elseif $activeSlave.buttImplant == 0>>
-	[[Implants|Surgery Degradation][$activeSlave.buttImplant = 1,$activeSlave.butt += 1,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "butt"]]
-	| [[String implants|Surgery Degradation][$activeSlave.buttImplant = 1,$activeSlave.butt += 1,$activeSlave.buttImplantType = 1,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "butt"]]
+	[[Implants|Surgery Degradation][$activeSlave.buttImplant = 1,$activeSlave.butt += 1,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "butt"]]
+	| [[String implants|Surgery Degradation][$activeSlave.buttImplant = 1,$activeSlave.butt += 1,$activeSlave.buttImplantType = 1,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "butt"]]
 <<elseif $activeSlave.buttImplant == 1 && $activeSlave.buttImplantType != 1>>
-	[[Bigger implants|Surgery Degradation][$activeSlave.buttImplant = 2,$activeSlave.butt += 1,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "butt"]]
+	[[Bigger implants|Surgery Degradation][$activeSlave.buttImplant = 2,$activeSlave.butt += 1,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "butt"]]
 <<elseif $activeSlave.buttImplant == 2 && $activeSlave.buttImplantType != 1>>
-	[[Fillable implants|Surgery Degradation][$activeSlave.buttImplant = 3,$activeSlave.butt += 1,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "butt"]]
+	[[Fillable implants|Surgery Degradation][$activeSlave.buttImplant = 3,$activeSlave.butt += 1,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "butt"]]
 <<elseif $activeSlave.buttImplant == 4 && $activeSlave.buttImplantType != 1>>
 	$His implants are filled to capacity.
 	<<if $ImplantProductionUpgrade == 1>>
-		[[Advanced fillable implants|Surgery Degradation][$activeSlave.buttImplant = 5,$activeSlave.butt += 1,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "butt"]]
+		[[Advanced fillable implants|Surgery Degradation][$activeSlave.buttImplant = 5,$activeSlave.butt += 1,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "butt"]]
 	<<else>>
-		[[Special order advanced fillable implants|Surgery Degradation][$activeSlave.buttImplant = 5,$activeSlave.butt += 1,$cash -= $surgeryCost+10000, $activeSlave.health -= 10,$surgeryType = "butt"]] //Will cost an additional <<= cashFormat(10000)>>//
+		[[Special order advanced fillable implants|Surgery Degradation][$activeSlave.buttImplant = 5,$activeSlave.butt += 1,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)+10000, $activeSlave.health -= 10,$surgeryType = "butt"]] //Will cost an additional <<= cashFormat(10000)>>//
 	<</if>>
 <<elseif $activeSlave.buttImplant == 8 && $activeSlave.buttImplantType != 1 && $ImplantProductionUpgrade == 1>>
-	[[Hyper fillable implants|Surgery Degradation][$activeSlave.buttImplant = 9,$activeSlave.butt += 1,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "butt"]]
+	[[Hyper fillable implants|Surgery Degradation][$activeSlave.buttImplant = 9,$activeSlave.butt += 1,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "butt"]]
 <<elseif $activeSlave.buttImplant > 2 && $activeSlave.buttImplantType != 1>>
-	[[Add inert filler|Surgery Degradation][$activeSlave.buttImplant += 1,$activeSlave.butt += 1,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "butt"]]
+	[[Add inert filler|Surgery Degradation][$activeSlave.buttImplant += 1,$activeSlave.butt += 1,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "butt"]]
 <</if>>
 <<if $activeSlave.buttImplant != 0>>
 	<<if $activeSlave.indentureRestrictions < 2>>
 		<<if $activeSlave.buttImplantType == 1 && $activeSlave.buttImplant > 1>>
-			| [[Drain implants|Surgery Degradation][$activeSlave.butt = ($activeSlave.butt-1),$activeSlave.buttImplant = ($activeSlave.buttImplant-1), $activeSlave.health -= 5,$cash -= $surgeryCost, $surgeryType = "buttLoss"]]
+			| [[Drain implants|Surgery Degradation][$activeSlave.butt = ($activeSlave.butt-1),$activeSlave.buttImplant = ($activeSlave.buttImplant-1), $activeSlave.health -= 5,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $surgeryType = "buttLoss"]]
 		<</if>>
-		| [[Remove implants|Surgery Degradation][$activeSlave.butt = ($activeSlave.butt-$activeSlave.buttImplant),$activeSlave.buttImplant = 0, $activeSlave.health -= 10,$activeSlave.buttImplantType = 0,$cash -= $surgeryCost, $surgeryType = "buttLoss"]]
+		| [[Remove implants|Surgery Degradation][$activeSlave.butt = ($activeSlave.butt-$activeSlave.buttImplant),$activeSlave.buttImplant = 0, $activeSlave.health -= 10,$activeSlave.buttImplantType = 0,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $surgeryType = "buttLoss"]]
 	<</if>>
 <</if>>
 <<if ($activeSlave.butt > 1) && ($activeSlave.buttImplant == 0)>>
 	<<if $activeSlave.indentureRestrictions < 2>>
-		| [[Reduce ass|Surgery Degradation][$activeSlave.butt -= 1, $activeSlave.health -= 10,$cash -= $surgeryCost, $surgeryType = "buttLoss"]]
+		| [[Reduce ass|Surgery Degradation][$activeSlave.butt -= 1, $activeSlave.health -= 10,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $surgeryType = "buttLoss"]]
 	<</if>>
 <</if>>
 
@@ -812,13 +812,13 @@ Work on $his sex:
 <</if>>
 <<if $activeSlave.labia > 0>>
 	<<if $activeSlave.indentureRestrictions < 2>>
-	[[Apply labiaplasty|Surgery Degradation][$activeSlave.labia = 0,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "labiaplasty"]]
+	[[Apply labiaplasty|Surgery Degradation][$activeSlave.labia = 0,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "labiaplasty"]]
 	<</if>>
 <</if>>
 <<if ($activeSlave.labia < 3) && ($surgeryUpgrade == 1)>>
 	<<if $activeSlave.indentureRestrictions < 1>>
 	<<if $activeSlave.labia > 0>> | <</if>>
-		[[Increase labia|Surgery Degradation][$activeSlave.labia += 1,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "labiaplasty"]]
+		[[Increase labia|Surgery Degradation][$activeSlave.labia += 1,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "labiaplasty"]]
 	<</if>>
 <</if>>
 <<if $activeSlave.dick == 0>>
@@ -835,19 +835,19 @@ Work on $his sex:
 	<</if>>
 	<<if $activeSlave.clit > 0>>
 		<<if $activeSlave.indentureRestrictions < 2>>
-		[[Apply clitoral reduction|Surgery Degradation][$activeSlave.clit = 0,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "clitoral reduction"]]
+		[[Apply clitoral reduction|Surgery Degradation][$activeSlave.clit = 0,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "clitoral reduction"]]
 		<</if>>
 	<</if>>
 	<<if ($activeSlave.clit < 3) && ($surgeryUpgrade == 1)>>
 		<<if $activeSlave.indentureRestrictions < 1>>
 		<<if $activeSlave.clit > 0>> | <</if>>
-		[[Increase clit|Surgery Degradation][$activeSlave.clit += 1,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "clitoral enlargement"]]
+		[[Increase clit|Surgery Degradation][$activeSlave.clit += 1,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "clitoral enlargement"]]
 		<</if>>
 	<</if>>
 	<<if ($activeSlave.foreskin > 0) && $activeSlave.clit > 0>>
 		<<if $seeCircumcision == 1>>
 			<<if $activeSlave.indentureRestrictions < 2>>
-				| [[Remove clitoral hood|Surgery Degradation][$activeSlave.foreskin = 0,$cash -= $surgeryCost, $activeSlave.health -= 10, $surgeryType = "circumcision"]]
+				| [[Remove clitoral hood|Surgery Degradation][$activeSlave.foreskin = 0,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10, $surgeryType = "circumcision"]]
 			<</if>>
 		<</if>>
 	<</if>>
@@ -871,10 +871,10 @@ Work on $his sex:
 
 <<if ($activeSlave.preg > -2) && ($activeSlave.preg < 1) && ($activeSlave.ovaries != 0 || $activeSlave.mpreg != 0)>>
 	<<if $activeSlave.indentureRestrictions < 1 && ($activeSlave.breedingMark != 1 || $propOutcome == 0)>>
-	[[Sterilize|Surgery Degradation][$activeSlave.preg = -2,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "ster"]]
+	[[Sterilize|Surgery Degradation][$activeSlave.preg = -2,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "ster"]]
 	<</if>>
 <<elseif ($activeSlave.preg < 1) && ($activeSlave.ovaries != 0 || $activeSlave.mpreg != 0) && ($activeSlave.preg != -3)>>
-	[[Restore fertility|Surgery Degradation][$activeSlave.preg = 0,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "fert"]]
+	[[Restore fertility|Surgery Degradation][$activeSlave.preg = 0,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "fert"]]
 <</if>>
 
 <<if ($activeSlave.ovaries == 1 || $activeSlave.mpreg == 1)>>
@@ -889,21 +889,21 @@ Work on $his sex:
 		<<switch $activeSlave.ovaImplant>>
 		<<case "fertility">>
 			They have fertility implants attached to them.
-			[[Remove implants|Surgery Degradation][$activeSlave.ovaImplant = 0,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "ovaImplant removed"]]
+			[[Remove implants|Surgery Degradation][$activeSlave.ovaImplant = 0,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "ovaImplant removed"]]
 		<<case "sympathy">>
 			They are linked via implants and ovulate in concert.
-			[[Remove implants|Surgery Degradation][$activeSlave.ovaImplant = 0,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "ovaImplant removed"]]
+			[[Remove implants|Surgery Degradation][$activeSlave.ovaImplant = 0,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "ovaImplant removed"]]
 		<<case "asexual">>
 			One has been replaced with a sperm producing analog for self-fertilization.
 		<</switch>>
 	<<else>>
 		<<if $fertilityImplant == 1>>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
-			[[Install fertility implants|Surgery Degradation][$activeSlave.ovaImplant = "fertility",$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "ovaImplant added"]]
+			[[Install fertility implants|Surgery Degradation][$activeSlave.ovaImplant = "fertility",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "ovaImplant added"]]
 		<</if>>
 		<<if $sympatheticOvaries == 1>>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
-			[[Install sympathetic ovulation implants|Surgery Degradation][$activeSlave.ovaImplant = "sympathy",$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "ovaImplant added"]]
+			[[Install sympathetic ovulation implants|Surgery Degradation][$activeSlave.ovaImplant = "sympathy",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "ovaImplant added"]]
 		<</if>>
 	<</if>>
 
@@ -913,14 +913,14 @@ Work on $his sex:
 			<<if $activeSlave.preg > 0>>
 				$His ovaries and womb cannot be removed while $he is pregnant.
 			<<else>>
-				[[Oophorectomy|Surgery Degradation][$activeSlave.ovaries = 0,$activeSlave.ovaImplant = 0,$activeSlave.wombImplant = "none",$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "ster"]]
+				[[Oophorectomy|Surgery Degradation][$activeSlave.ovaries = 0,$activeSlave.ovaImplant = 0,$activeSlave.wombImplant = "none",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "ster"]]
 			<</if>>
 		<</if>>
 		<<if $activeSlave.mpreg == 1>>
 			<<if $activeSlave.preg > 0>>
 				$His anal womb cannot be removed while $he is pregnant.
 			<<else>>
-				[[Remove anal reproductive organs|Surgery Degradation][$activeSlave.mpreg = 0,$activeSlave.ovaImplant = 0, $activeSlave.wombImplant = "none",$cash -= $surgeryCost, $activeSlave.health -= 30,$surgeryType = "mpreg removed"]]
+				[[Remove anal reproductive organs|Surgery Degradation][$activeSlave.mpreg = 0,$activeSlave.ovaImplant = 0, $activeSlave.wombImplant = "none",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 30,$surgeryType = "mpreg removed"]]
 			<</if>>
 		<</if>>
 	<</if>>
@@ -932,12 +932,12 @@ Work on $his sex:
 		<<elseif $activeSlave.broodmother > 0>>
 			$He has been made into a <<if $activeSlave.broodmother > 1>>hyper-<</if>>broodmother.
 			<<if $activeSlave.womb.length == 0 >>
-				[[Remove the pregnancy generator|Surgery Degradation][$activeSlave.preg = 0,$activeSlave.pregWeek = -2,$activeSlave.pregSource = 0,$activeSlave.pregWeek = 0,$activeSlave.pregKnown = 0,$activeSlave.pregType = 0,$activeSlave.broodmother = 0,$activeSlave.broodmotherFetuses = 0,$activeSlave.broodmotherOnHold = 0,$cash -= $surgeryCost,$activeSlave.pregControl = "none",$activeSlave.health -= 10,$surgeryType = "pregRemove"]]
+				[[Remove the pregnancy generator|Surgery Degradation][$activeSlave.preg = 0,$activeSlave.pregWeek = -2,$activeSlave.pregSource = 0,$activeSlave.pregWeek = 0,$activeSlave.pregKnown = 0,$activeSlave.pregType = 0,$activeSlave.broodmother = 0,$activeSlave.broodmotherFetuses = 0,$activeSlave.broodmotherOnHold = 0,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$activeSlave.pregControl = "none",$activeSlave.health -= 10,$surgeryType = "pregRemove"]]
 			<<else>>
 				$He is pregnant right now, so $his broodmother implant can't be safely extracted.
 				<<if $activeSlave.broodmother == 1 && $activeSlave.broodmotherFetuses == 1>> /*hack can be applied only one time, for type 1 broodmothers, and only if implant already present*/
 					<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-					[[Hack the pregnancy generator|Surgery Degradation][$cash -= $surgeryCost,$activeSlave.pregControl = "none",$activeSlave.health -= 1,$surgeryType = "preg1hack"]] //This will trick the generator ova release logic, forcing it to release more than one ova each week. This is an untested override and can cause severe health problems.//
+					[[Hack the pregnancy generator|Surgery Degradation][cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$activeSlave.pregControl = "none",$activeSlave.health -= 1,$surgeryType = "preg1hack"]] //This will trick the generator ova release logic, forcing it to release more than one ova each week. This is an untested override and can cause severe health problems.//
 				<<elseif $activeSlave.broodmother == 1 && $activeSlave.broodmotherFetuses > 1>>
 					<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 					The implant firmware has already been adjusted.
@@ -947,7 +947,7 @@ Work on $his sex:
 			//$He is protected from extreme surgery//
 		<<elseif isFertile($activeSlave) && $activeSlave.ovaryAge <= 46>>
 			$He could be made into a broodmother.
-			[[Implant a pregnancy generator|Surgery Degradation][$activeSlave.preg = 1,$activeSlave.pregWeek = 1,$activeSlave.pregKnown = 1,$activeSlave.pregType = 1,$activeSlave.broodmother = 1,$activeSlave.broodmotherFetuses = 1,$cash -= $surgeryCost,$activeSlave.pregControl = "none",$activeSlave.health -= 10,$surgeryType = "preg"]] //This will have severe effects on $his health and mind//
+			[[Implant a pregnancy generator|Surgery Degradation][$activeSlave.preg = 1,$activeSlave.pregWeek = 1,$activeSlave.pregKnown = 1,$activeSlave.pregType = 1,$activeSlave.broodmother = 1,$activeSlave.broodmotherFetuses = 1,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$activeSlave.pregControl = "none",$activeSlave.health -= 10,$surgeryType = "preg"]] //This will have severe effects on $his health and mind//
 		<<else>>
 			$His body cannot support being a broodmother.
 		<</if>>
@@ -974,16 +974,16 @@ Work on $his sex:
 <<if ($activeSlave.vagina > 3)>>
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
 	$His vagina could benefit from surgical repair.
-	[[Repair pussy|Surgery Degradation][$activeSlave.vagina = 3,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "vagina"]] //This will reduce $his vaginal skills//
+	[[Repair pussy|Surgery Degradation][$activeSlave.vagina = 3,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "vagina"]] //This will reduce $his vaginal skills//
 <<elseif ($surgeryUpgrade == 1) && ($activeSlave.indentureRestrictions < 2)>>
 	<<if ($activeSlave.vagina > 1)>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		$His vaginal muscles could benefit from microsurgical rejuvenation.
-		[[Tighten pussy|Surgery Degradation][$activeSlave.vagina = 1,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "vagina"]] //This will reduce $his vaginal skills//
+		[[Tighten pussy|Surgery Degradation][$activeSlave.vagina = 1,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "vagina"]] //This will reduce $his vaginal skills//
 	<<elseif ($activeSlave.vagina > 0)>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		$His pussy is as tight as a virgin's, and $his hymen could be restored.
-		[[Restore virginity|Surgery Degradation][$activeSlave.vagina = 0,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "vagina"]] //This will reduce $his vaginal skills//
+		[[Restore virginity|Surgery Degradation][$activeSlave.vagina = 0,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "vagina"]] //This will reduce $his vaginal skills//
 	<</if>>
 <</if>>
 
@@ -991,13 +991,13 @@ Work on $his sex:
 	<<if $activeSlave.indentureRestrictions < 1 && ($activeSlave.breedingMark != 1 || $propOutcome == 0)>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		Since $he has both a penis and a vagina, it's possible to remove $his pussy and leave $his sexually functional.
-		[[Remove pussy|Surgery Degradation][$activeSlave.vagina = -1,$activeSlave.ovaries = 0,$activeSlave.preg = -2,$activeSlave.pregSource = 0,$activeSlave.vaginalSkill = 0,$activeSlave.vaginalAccessory = "none",$cash -= $surgeryCost,$activeSlave.health -= 20,$surgeryType = "vaginaRemoval"]] <<if $activeSlave.ovaries == 1>>//This will remove $his ovaries as well//<</if>>
+		[[Remove pussy|Surgery Degradation][$activeSlave.vagina = -1,$activeSlave.ovaries = 0,$activeSlave.preg = -2,$activeSlave.pregSource = 0,$activeSlave.vaginalSkill = 0,$activeSlave.vaginalAccessory = "none",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$activeSlave.health -= 20,$surgeryType = "vaginaRemoval"]] <<if $activeSlave.ovaries == 1>>//This will remove $his ovaries as well//<</if>>
 	<</if>>
 <<elseif $activeSlave.vagina > -1>>
 	<<if $activeSlave.indentureRestrictions < 1 && ($activeSlave.breedingMark != 1 || $propOutcome == 0)>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		$His pussy can be removed at the cost of $his sexual functionality, leaving $him a null.
-		[[Remove pussy|Surgery Degradation][$activeSlave.vagina = -1,$activeSlave.ovaries = 0,$activeSlave.preg = -2,$activeSlave.pregSource = 0,$activeSlave.vaginalSkill = 0,$activeSlave.vaginalAccessory = "none",$cash -= $surgeryCost,$activeSlave.health -= 20,$surgeryType = "vaginaRemoval"]] <<if $activeSlave.ovaries == 1>>//This will remove $his ovaries as well//<</if>>
+		[[Remove pussy|Surgery Degradation][$activeSlave.vagina = -1,$activeSlave.ovaries = 0,$activeSlave.preg = -2,$activeSlave.pregSource = 0,$activeSlave.vaginalSkill = 0,$activeSlave.vaginalAccessory = "none",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$activeSlave.health -= 20,$surgeryType = "vaginaRemoval"]] <<if $activeSlave.ovaries == 1>>//This will remove $his ovaries as well//<</if>>
 	<</if>>
 <</if>>
 
@@ -1039,21 +1039,21 @@ Work on $his sex:
 
 <<if $activeSlave.indentureRestrictions < 1 && ($activeSlave.breedingMark != 1 || $propOutcome == 0)>>
 	<<if ($activeSlave.vagina == -1) && ($activeSlave.dick != 0)>>
-		[[Convert genitalia to female|Surgery Degradation][$activeSlave.dick = 0,$activeSlave.dickAccessory = "none",$activeSlave.dickTat = 0,$activeSlave.foreskin = 0,$activeSlave.scrotum = 0,$activeSlave.balls = 0,$activeSlave.ballType = "human",$activeSlave.vasectomy = 0,$activeSlave.vagina = 0,$activeSlave.preg = -2,$activeSlave.vaginalSkill = 0,$cash -= $surgeryCost, $activeSlave.health -= 40, $surgeryType = "mtf"]]
+		[[Convert genitalia to female|Surgery Degradation][$activeSlave.dick = 0,$activeSlave.dickAccessory = "none",$activeSlave.dickTat = 0,$activeSlave.foreskin = 0,$activeSlave.scrotum = 0,$activeSlave.balls = 0,$activeSlave.ballType = "human",$activeSlave.vasectomy = 0,$activeSlave.vagina = 0,$activeSlave.preg = -2,$activeSlave.vaginalSkill = 0,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $surgeryType = "mtf"]]
 	<</if>>
 	<<if ($activeSlave.vagina == -1) && ($activeSlave.dick == 0) && ($surgeryUpgrade == 1)>>
-		| [[Create a vagina|Surgery Degradation][$activeSlave.vagina = 0,$activeSlave.vaginalSkill = 0,$cash -= $surgeryCost, $activeSlave.health -= 40, $surgeryType = "mtf"]]
+		| [[Create a vagina|Surgery Degradation][$activeSlave.vagina = 0,$activeSlave.vaginalSkill = 0,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $surgeryType = "mtf"]]
 	<</if>>
 	<<if ($activeSlave.dick > 0) && ($seeExtreme == 1)>>
-		| [[Remove penis|Surgery Degradation][$activeSlave.dick = 0,$activeSlave.dickAccessory = "none",$activeSlave.dickTat = 0,$activeSlave.foreskin = 0,$activeSlave.vaginalSkill = 0,$cash -= $surgeryCost, $activeSlave.health -= 20, $surgeryType = "chop"]]
+		| [[Remove penis|Surgery Degradation][$activeSlave.dick = 0,$activeSlave.dickAccessory = "none",$activeSlave.dickTat = 0,$activeSlave.foreskin = 0,$activeSlave.vaginalSkill = 0,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20, $surgeryType = "chop"]]
 	<</if>>
 	<<if ($activeSlave.foreskin > 0) && $activeSlave.dick > 0>>
 		<<if $activeSlave.indentureRestrictions < 2>>
 			<<if $seeCircumcision == 1>>
-				| [[Remove foreskin|Surgery Degradation][$activeSlave.foreskin = 0,$cash -= $surgeryCost, $activeSlave.health -= 10, $surgeryType = "circumcision"]]
+				| [[Remove foreskin|Surgery Degradation][$activeSlave.foreskin = 0,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10, $surgeryType = "circumcision"]]
 			<</if>>
 			<<if $activeSlave.foreskin - $activeSlave.dick > 0>>
-				| [[Remove excess foreskin|Surgery Degradation][$activeSlave.foreskin = $activeSlave.dick,$cash -= $surgeryCost, $activeSlave.health -= 5, $surgeryType = "foreskinTuck"]]
+				| [[Remove excess foreskin|Surgery Degradation][$activeSlave.foreskin = $activeSlave.dick,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 5, $surgeryType = "foreskinTuck"]]
 			<</if>>
 		<</if>>
 	<</if>>
@@ -1061,7 +1061,7 @@ Work on $his sex:
 
 <<if ($activeSlave.dick != 0) && ($activeSlave.vagina == -1) && ($surgeryUpgrade == 1)>>
 	<<if $activeSlave.indentureRestrictions < 1>>
-		| [[Create surgical hermaphrodite|Surgery Degradation][$activeSlave.vagina = 0,$activeSlave.vaginalSkill = 0,$cash -= $surgeryCost, $activeSlave.health -= 40, $surgeryType = "herm"]]
+		| [[Create surgical hermaphrodite|Surgery Degradation][$activeSlave.vagina = 0,$activeSlave.vaginalSkill = 0,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $surgeryType = "herm"]]
 	<</if>>
 <</if>>
 
@@ -1078,12 +1078,12 @@ Work on $his sex:
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		<<if $activeSlave.indentureRestrictions < 2>>
 			<<if $activeSlave.scrotum - $activeSlave.balls > 0>>
-				[[Remove excess scrotal skin|Surgery Degradation][$activeSlave.scrotum = $activeSlave.balls,$cash -= $surgeryCost, $activeSlave.health -= 5, $surgeryType = "scrotalTuck"]]
+				[[Remove excess scrotal skin|Surgery Degradation][$activeSlave.scrotum = $activeSlave.balls,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 5, $surgeryType = "scrotalTuck"]]
 				<<if $activeSlave.indentureRestrictions < 1>> | <</if>>
 			<</if>>
 		<</if>>
 		<<if $activeSlave.indentureRestrictions < 1>>
-			[[Move them inside abdomen and remove scrotum|Surgery Degradation][$activeSlave.scrotum = 0,$cash -= $surgeryCost, $activeSlave.health -= 20, $surgeryType = "relocate"]]
+			[[Move them inside abdomen and remove scrotum|Surgery Degradation][$activeSlave.scrotum = 0,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20, $surgeryType = "relocate"]]
 			//This will have a negative impact on cum production//
 		<</if>>
 	<<else>>
@@ -1097,29 +1097,29 @@ Work on $his sex:
 		<<if ($activeSlave.scrotum > 0)>>
 			|
 		<</if>>
-		[[Geld|Surgery Degradation][$activeSlave.balls = 0,$activeSlave.ballType = "human",$activeSlave.scrotum = 0,$activeSlave.vasectomy = 0,$cash -= $surgeryCost, $activeSlave.health -= 40, $surgeryType = "geld"]]
+		[[Geld|Surgery Degradation][$activeSlave.balls = 0,$activeSlave.ballType = "human",$activeSlave.scrotum = 0,$activeSlave.vasectomy = 0,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $surgeryType = "geld"]]
 	<</if>>
 	<<if $activeSlave.ballType != "sterile">>
 		<<if ($activeSlave.scrotum > 0)>>
 			|
 		<</if>>
-		[[Chemically castrate|Surgery Degradation][$activeSlave.ballType = "sterile",$cash -= $surgeryCost, $surgeryType = "chem castrate"]]
+		[[Chemically castrate|Surgery Degradation][$activeSlave.ballType = "sterile",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $surgeryType = "chem castrate"]]
 	<</if>>
 	<<if ($activeSlave.vasectomy == 1)>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		$He has had a vasectomy and shoots blanks when $he cums<<if $activeSlave.pubertyXY == 0 || $activeSlave.ballType == "sterile">>, or would, if $he were potent<</if>>.
-		[[Reverse vasectomy|Surgery Degradation][$activeSlave.vasectomy = 0,$cash -= $surgeryCost, $activeSlave.health -= 10, $surgeryType = "vasectomy undo"]]
+		[[Reverse vasectomy|Surgery Degradation][$activeSlave.vasectomy = 0,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10, $surgeryType = "vasectomy undo"]]
 	<<else>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		<<if $activeSlave.ballType == "sterile">>
 			$He has non-functional testicles.
 			<<if $activeSlave.indentureRestrictions < 1>>
-				[[Clamp vas deferens|Surgery Degradation][$activeSlave.vasectomy = 1,$cash -= $surgeryCost, $activeSlave.health -= 10, $surgeryType = "vasectomy"]]
+				[[Clamp vas deferens|Surgery Degradation][$activeSlave.vasectomy = 1,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10, $surgeryType = "vasectomy"]]
 			<</if>>
 		<<else>>
 			$He has working testicles<<if $activeSlave.pubertyXY == 0>>, though $he isn't potent<</if>>.
 			<<if $activeSlave.indentureRestrictions < 1>>
-				[[Clamp vas deferens to cull potency|Surgery Degradation][$activeSlave.vasectomy = 1,$cash -= $surgeryCost, $activeSlave.health -= 10, $surgeryType = "vasectomy"]]
+				[[Clamp vas deferens to cull potency|Surgery Degradation][$activeSlave.vasectomy = 1,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10, $surgeryType = "vasectomy"]]
 			<</if>>
 		<</if>>
 	<</if>>
@@ -1131,11 +1131,11 @@ Work on $his sex:
 	<<if $activeSlave.prostate >= 2 && $prostateImplants == 1>>
 		<<if $activeSlave.prostate < 3>>
 			<<if $activeSlave.indentureRestrictions < 2>>
-			[[Implant prostate with an ejaculation boosting implant|Surgery Degradation][$activeSlave.prostate = 3,$cash -= $surgeryCost, $activeSlave.health -= 20,$surgeryType = "ejaculation"]] //This will thin $his ejaculate but greatly increase its quantity//
+			[[Implant prostate with an ejaculation boosting implant|Surgery Degradation][$activeSlave.prostate = 3,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "ejaculation"]] //This will thin $his ejaculate but greatly increase its quantity//
 			<</if>>
 		<</if>>
 		<<if $activeSlave.prostate == 3>>
-			| [[Remove ejaculation implant|Surgery Degradation][$activeSlave.prostate = 2,$cash -= $surgeryCost, $activeSlave.health -= 10, $surgeryType = "endejac"]]
+			| [[Remove ejaculation implant|Surgery Degradation][$activeSlave.prostate = 2,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10, $surgeryType = "endejac"]]
 		<<elseif $activeSlave.prostate == 2>>
 			| [[Remove drug implant|Surgery Degradation][$activeSlave.prostate=1,$cash-=$surgeryCost,$surgeryType="endprecum"]]
 		<</if>>
@@ -1151,7 +1151,7 @@ Work on $his sex:
 	<</if>>
 	<<if ($seeExtreme == 1)>>
 		<<if $activeSlave.indentureRestrictions < 1>>
-			| [[Remove prostate|Surgery Degradation][$activeSlave.prostate = 0,$cash -= $surgeryCost, $activeSlave.health -= 40, $surgeryType = "prostate"]]
+			| [[Remove prostate|Surgery Degradation][$activeSlave.prostate = 0,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $surgeryType = "prostate"]]
 		<</if>>
 	<</if>>
 <</if>>
@@ -1175,16 +1175,16 @@ $He has
 <<if ($activeSlave.anus > 3)>>
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
 	$His anal sphincter could benefit from surgical repair.
-	[[Repair asshole|Surgery Degradation][$activeSlave.anus = 3,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "anus"]] //This will reduce $his anal skills//
+	[[Repair asshole|Surgery Degradation][$activeSlave.anus = 3,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "anus"]] //This will reduce $his anal skills//
 <<elseif ($surgeryUpgrade == 1) && ($activeSlave.indentureRestrictions < 2)>>
 	<<if ($activeSlave.anus > 1)>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		$His anal sphincter could benefit from microsurgical rejuvenation.
-		[[Tighten asshole|Surgery Degradation][$activeSlave.anus = 1,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "anus"]] //This will reduce $his anal skills//
+		[[Tighten asshole|Surgery Degradation][$activeSlave.anus = 1,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "anus"]] //This will reduce $his anal skills//
 	<<elseif ($activeSlave.anus > 0)>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		$His butthole is fairly narrow, but could be tightened to virgin status.
-		[[Restore anal virginity|Surgery Degradation][$activeSlave.anus = 0,$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "anus"]] //This will reduce $his anal skills//
+		[[Restore anal virginity|Surgery Degradation][$activeSlave.anus = 0,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "anus"]] //This will reduce $his anal skills//
 	<</if>>
 <</if>>
 
@@ -1202,7 +1202,7 @@ $He has
 		<<if $arcologies[0].childhoodFertilityInducedNCSResearch == 1>>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
 			<<if $activeSlave.geneMods.NCS == 0>>
-				[[Induced NCS Treatment|Surgery Degradation][$activeSlave.geneMods.NCS = 1,$cash -= $surgeryCost * 4, $activeSlave.health -= 80, $activeSlave.chem += 40,$surgeryType = "retrograde virus injection NCS"]] //This will induce @@.orange;NCS@@ in $his genetic code//
+				[[Induced NCS Treatment|Surgery Degradation][$activeSlave.geneMods.NCS = 1,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave) * 4, $activeSlave.health -= 80, $activeSlave.chem += 40,$surgeryType = "retrograde virus injection NCS"]] //This will induce @@.orange;NCS@@ in $his genetic code//
 			<<else>>
 				//$He already has Induced @@.orange;NCS@@//
 			<</if>>
@@ -1210,18 +1210,18 @@ $He has
 		<<if $RapidCellGrowthFormula == 1>>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
 			<<if $activeSlave.geneMods.rapidCellGrowth == 0>>
-				[[Increased Elasticity Treatment|Surgery Degradation][$activeSlave.geneMods.rapidCellGrowth = 1,$cash -= $surgeryCost * 4, $activeSlave.health -= 40, $activeSlave.chem += 100,$surgeryType = "elasticity treatment"]] //This will alter $his genetic code to encourage $his body to stretch//
+				[[Increased Elasticity Treatment|Surgery Degradation][$activeSlave.geneMods.rapidCellGrowth = 1,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave) * 4, $activeSlave.health -= 40, $activeSlave.chem += 100,$surgeryType = "elasticity treatment"]] //This will alter $his genetic code to encourage $his body to stretch//
 			<<else>>
 				//$He already has received the plasticity increasing elasticity treatment//
 			<</if>>
 		<</if>>
 		<<if $activeSlave.geneticQuirks.hyperFertility == 2>>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
-			[[Correct genetic hyper fertility|Surgery Degradation][$activeSlave.geneticQuirks.hyperFertility = 0,$cash -= $surgeryCost * 4, $activeSlave.health -= 40, $activeSlave.chem += 100,$surgeryType = "gene treatment"]]
+			[[Correct genetic hyper fertility|Surgery Degradation][$activeSlave.geneticQuirks.hyperFertility = 0,cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 100,$surgeryType = "gene treatment"]]
 		<</if>>
 		<<if $activeSlave.geneticQuirks.fertility == 2>>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
-			[[Correct heightened fertility|Surgery Degradation][$activeSlave.geneticQuirks.fertility = 0,$cash -= $surgeryCost * 4, $activeSlave.health -= 40, $activeSlave.chem += 100,$surgeryType = "gene treatment"]]
+			[[Correct heightened fertility|Surgery Degradation][$activeSlave.geneticQuirks.fertility = 0,cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 100,$surgeryType = "gene treatment"]]
 		<</if>>
 	<</if>>
 	<br><br>
@@ -1232,21 +1232,21 @@ Deal with $his hair:
 <br>&nbsp;&nbsp;&nbsp;&nbsp;
 <<if $activeSlave.bald == 0 && $activeSlave.hStyle != "bald">>
 	$He naturally grows $activeSlave.origHColor hair from $his head.
-	[["Surgically remove " + $his + " ability to grow hair"|Surgery Degradation][$cash -= $surgeryCost,$activeSlave.bald = 1,$surgeryType = "hair removal"]]
+	[["Surgically remove " + $his + " ability to grow hair"|Surgery Degradation][cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$activeSlave.bald = 1,$surgeryType = "hair removal"]]
 <<else>>
 	$He is no longer capable of growing hair on $his head.
 <</if>>
 <br>&nbsp;&nbsp;&nbsp;&nbsp;
 <<if ($activeSlave.eyebrowStyle != "bald" && $activeSlave.eyebrowStyle != "hairless")>>
 	$He has $activeSlave.origHColor eyebrows.
-	[["Surgically remove " + $his + " ability to grow eyebrows"|Surgery Degradation][$cash -= $surgeryCost,$surgeryType = "eyebrow removal"]]
+	[["Surgically remove " + $his + " ability to grow eyebrows"|Surgery Degradation][cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$surgeryType = "eyebrow removal"]]
 <<else>>
 	$He is no longer capable of growing eyebrow hair.
 <</if>>
 <br>&nbsp;&nbsp;&nbsp;&nbsp;
 <<if ($activeSlave.underArmHStyle != "bald" && $activeSlave.underArmHStyle != "hairless") || ($activeSlave.pubicHStyle != "bald" && $activeSlave.pubicHStyle != "hairless")>>
 	$He <<if $activeSlave.physicalAge >= 12>>naturally grows<<else>>will someday grow<</if>> $activeSlave.origHColor body hair.
-	[["Surgically remove " + $his + " ability to grow body hair"|Surgery Degradation][$cash -= $surgeryCost,$surgeryType = "body hair removal"]]
+	[["Surgically remove " + $his + " ability to grow body hair"|Surgery Degradation][cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$surgeryType = "body hair removal"]]
 <<else>>
 	$His $activeSlave.skin skin is silky smooth and hair free from $his neck to $his <<if $activeSlave.amp == 1>>hips<<else>>toes<</if>>.
 <</if>>
@@ -1258,40 +1258,40 @@ Alter $his race:
 <<if $activeSlave.indentureRestrictions < 1>>
 	$He is $activeSlave.race<<if $activeSlave.race != $activeSlave.origRace>>, but was originally $activeSlave.origRace<</if>>. Surgically alter $him to look more:
 	<<if $activeSlave.race != "white">>
-		[[White|Surgery Degradation][$activeSlave.race = "white",$activeSlave.skin = either("pale", "light", "fair"),$activeSlave.eyeColor = either("blue", "brown", "green"),$activeSlave.hColor = either("black", "blonde", "red", "brown"),$cash -= $surgeryCost, $activeSlave.health -= 20,$surgeryType = "race"]] |
+		[[White|Surgery Degradation][$activeSlave.race = "white",$activeSlave.skin = either("pale", "light", "fair"),$activeSlave.eyeColor = either("blue", "brown", "green"),$activeSlave.hColor = either("black", "blonde", "red", "brown"),cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "race"]] |
 	<</if>>
 	<<if $activeSlave.race != "latina">>
-		[[Latina|Surgery Degradation][$activeSlave.race = "latina",$activeSlave.skin = either("light olive", "brown", "dark brown", "tanned", "dark olive"),$activeSlave.hColor = either("black", "black", "brown", "brown"),$cash -= $surgeryCost, $activeSlave.health -= 20,$surgeryType = "race"]] |
+		[[Latina|Surgery Degradation][$activeSlave.race = "latina",$activeSlave.skin = either("light olive", "brown", "dark brown", "tanned", "dark olive"),$activeSlave.hColor = either("black", "black", "brown", "brown"),cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "race"]] |
 	<</if>>
 	<<if $activeSlave.race != "black">>
-		[[Black|Surgery Degradation][$activeSlave.race = "black",$activeSlave.skin = either("black", "dark brown", "brown"),$activeSlave.hColor = either("black", "black", "black", "brown"),$cash -= $surgeryCost, $activeSlave.health -= 20,$surgeryType = "race"]] |
+		[[Black|Surgery Degradation][$activeSlave.race = "black",$activeSlave.skin = either("black", "dark brown", "brown"),$activeSlave.hColor = either("black", "black", "black", "brown"),cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "race"]] |
 	<</if>>
 	<<if $activeSlave.race != "asian">>
-		[[Asian|Surgery Degradation][$activeSlave.race = "asian",$activeSlave.skin = either("light olive", "dark olive", "light"),$activeSlave.hColor = either("black"),$cash -= $surgeryCost, $activeSlave.health -= 20,$surgeryType = "race"]] |
+		[[Asian|Surgery Degradation][$activeSlave.race = "asian",$activeSlave.skin = either("light olive", "dark olive", "light"),$activeSlave.hColor = either("black"),cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "race"]] |
 	<</if>>
 	<<if $activeSlave.race != "middle eastern">>
-		[[Middle Eastern|Surgery Degradation][$activeSlave.race = "middle eastern",$activeSlave.skin = either("fair", "light olive", "tanned", "light"),$activeSlave.hColor = either("black"),$cash -= $surgeryCost, $activeSlave.health -= 20,$surgeryType = "race"]] |
+		[[Middle Eastern|Surgery Degradation][$activeSlave.race = "middle eastern",$activeSlave.skin = either("fair", "light olive", "tanned", "light"),$activeSlave.hColor = either("black"),cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "race"]] |
 	<</if>>
 	<<if $activeSlave.race != "indo-aryan">>
-		[[Indo-Aryan|Surgery Degradation][$activeSlave.race = "indo-aryan",$activeSlave.skin = either("dark", "light"),$activeSlave.hColor = either("black"),$cash -= $surgeryCost, $activeSlave.health -= 20,$surgeryType = "race"]] |
+		[[Indo-Aryan|Surgery Degradation][$activeSlave.race = "indo-aryan",$activeSlave.skin = either("dark", "light"),$activeSlave.hColor = either("black"),cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "race"]] |
 	<</if>>
 	<<if $activeSlave.race != "pacific islander">>
-		[[Pacific Islander|Surgery Degradation][$activeSlave.race = "pacific islander",$activeSlave.skin = either("dark", "light"),$activeSlave.hColor = either("black"),$cash -= $surgeryCost, $activeSlave.health -= 20,$surgeryType = "race"]] |
+		[[Pacific Islander|Surgery Degradation][$activeSlave.race = "pacific islander",$activeSlave.skin = either("dark", "light"),$activeSlave.hColor = either("black"),cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "race"]] |
 	<</if>>
 	<<if $activeSlave.race != "malay">>
-		[[Malay|Surgery Degradation][$activeSlave.race = "malay",$activeSlave.skin = either("dark", "light"),$activeSlave.hColor = either("black"),$cash -= $surgeryCost, $activeSlave.health -= 20,$surgeryType = "race"]] |
+		[[Malay|Surgery Degradation][$activeSlave.race = "malay",$activeSlave.skin = either("dark", "light"),$activeSlave.hColor = either("black"),cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "race"]] |
 	<</if>>
 	<<if $activeSlave.race != "amerindian">>
-		[[Amerindian|Surgery Degradation][$activeSlave.race = "amerindian",$activeSlave.skin = either("dark", "light"),$activeSlave.hColor = either("black"),$cash -= $surgeryCost, $activeSlave.health -= 20,$surgeryType = "race"]] |
+		[[Amerindian|Surgery Degradation][$activeSlave.race = "amerindian",$activeSlave.skin = either("dark", "light"),$activeSlave.hColor = either("black"),cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "race"]] |
 	<</if>>
 	<<if $activeSlave.race != "southern european">>
-		[[Southern European|Surgery Degradation][$activeSlave.race = "southern european",$activeSlave.skin = either("fair", "light olive", "tanned", "light"),$activeSlave.hColor = either("black"),$cash -= $surgeryCost, $activeSlave.health -= 20,$surgeryType = "race"]] |
+		[[Southern European|Surgery Degradation][$activeSlave.race = "southern european",$activeSlave.skin = either("fair", "light olive", "tanned", "light"),$activeSlave.hColor = either("black"),cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "race"]] |
 	<</if>>
 	<<if $activeSlave.race != "semitic">>
-		[[Semitic|Surgery Degradation][$activeSlave.race = "semitic",$activeSlave.skin = either("fair", "light olive", "tanned", "light"),$activeSlave.hColor = either("black"),$cash -= $surgeryCost, $activeSlave.health -= 20,$surgeryType = "race"]] |
+		[[Semitic|Surgery Degradation][$activeSlave.race = "semitic",$activeSlave.skin = either("fair", "light olive", "tanned", "light"),$activeSlave.hColor = either("black"),cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "race"]] |
 	<</if>>
 	<<if $activeSlave.race != "mixed race">>
-		[[Mixed Race|Surgery Degradation][$activeSlave.race = "mixed race",$activeSlave.skin = either("pale", "dark", "light"),$activeSlave.hColor = either("black", "black", "black", "black", "brown", "brown", "blonde", "red"),$cash -= $surgeryCost, $activeSlave.health -= 20,$surgeryType = "race"]]
+		[[Mixed Race|Surgery Degradation][$activeSlave.race = "mixed race",$activeSlave.skin = either("pale", "dark", "light"),$activeSlave.hColor = either("black", "black", "black", "black", "brown", "brown", "blonde", "red"),cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "race"]]
 	<</if>>
 <<else>>
 	//$His indenture forbids elective surgery//
@@ -1333,19 +1333,19 @@ Work on $him structurally:
 	<</if>>
 	<<if ($activeSlave.shouldersImplant == 0)>>
 		<<if $activeSlave.shoulders > -2 && $activeSlave.shoulders < 2>>
-			[[Restructure shoulders more broadly|Surgery Degradation][$activeSlave.shouldersImplant++,$activeSlave.shoulders++,$cash -= $surgeryCost, $activeSlave.health -= 40,$surgeryType = "shoulders"]] | [[Restructure shoulders more narrowly|Surgery Degradation][$activeSlave.shouldersImplant--,$activeSlave.shoulders--,$cash -= $surgeryCost, $activeSlave.health -= 40,$surgeryType = "shoulders"]]
+			[[Restructure shoulders more broadly|Surgery Degradation][$activeSlave.shouldersImplant++,$activeSlave.shoulders++,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 40,$surgeryType = "shoulders"]] | [[Restructure shoulders more narrowly|Surgery Degradation][$activeSlave.shouldersImplant--,$activeSlave.shoulders--,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 40,$surgeryType = "shoulders"]]
 		<<elseif $activeSlave.shoulders <= -1>>
-			[[Restructure shoulders more broadly|Surgery Degradation][$activeSlave.shouldersImplant++,$activeSlave.shoulders++,$cash -= $surgeryCost, $activeSlave.health -= 40,$surgeryType = "shoulders"]]
+			[[Restructure shoulders more broadly|Surgery Degradation][$activeSlave.shouldersImplant++,$activeSlave.shoulders++,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 40,$surgeryType = "shoulders"]]
 		<<elseif $activeSlave.shoulders >= 2>>
-			[[Restructure shoulders more narrowly|Surgery Degradation][$activeSlave.shouldersImplant--,$activeSlave.shoulders--,$cash -= $surgeryCost, $activeSlave.health -= 40,$surgeryType = "shoulders"]]
+			[[Restructure shoulders more narrowly|Surgery Degradation][$activeSlave.shouldersImplant--,$activeSlave.shoulders--,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 40,$surgeryType = "shoulders"]]
 		<</if>>
 	<<elseif $surgeryUpgrade == 1>>
 		<<if $activeSlave.shoulders > -2 && $activeSlave.shoulders < 2>>
-			[[Advanced shoulder broadening surgery|Surgery Degradation][$activeSlave.shouldersImplant++,$activeSlave.shoulders++,$cash -= $surgeryCost, $activeSlave.health -= 40,$surgeryType = "shoulders"]] | [[Advanced shoulder narrowing surgery|Surgery Degradation][$activeSlave.shouldersImplant--,$activeSlave.shoulders--,$cash -= $surgeryCost, $activeSlave.health -= 40,$surgeryType = "shoulders"]]
+			[[Advanced shoulder broadening surgery|Surgery Degradation][$activeSlave.shouldersImplant++,$activeSlave.shoulders++,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 40,$surgeryType = "shoulders"]] | [[Advanced shoulder narrowing surgery|Surgery Degradation][$activeSlave.shouldersImplant--,$activeSlave.shoulders--,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 40,$surgeryType = "shoulders"]]
 		<<elseif $activeSlave.shoulders <= -1>>
-			[[Advanced shoulder broadening surgery|Surgery Degradation][$activeSlave.shouldersImplant++,$activeSlave.shoulders++,$cash -= $surgeryCost, $activeSlave.health -= 40,$surgeryType = "shoulders"]]
+			[[Advanced shoulder broadening surgery|Surgery Degradation][$activeSlave.shouldersImplant++,$activeSlave.shoulders++,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 40,$surgeryType = "shoulders"]]
 		<<elseif $activeSlave.shoulders >= 2>>
-			[[Advanced shoulder narrowing surgery|Surgery Degradation][$activeSlave.shouldersImplant--,$activeSlave.shoulders--,$cash -= $surgeryCost, $activeSlave.health -= 40,$surgeryType = "shoulders"]]
+			[[Advanced shoulder narrowing surgery|Surgery Degradation][$activeSlave.shouldersImplant--,$activeSlave.shoulders--,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 40,$surgeryType = "shoulders"]]
 		<</if>>
 	<</if>>
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
@@ -1386,21 +1386,21 @@ Work on $him structurally:
 	<</if>>
 	<<if ($activeSlave.hipsImplant == 0)>>
 		<<if $activeSlave.hips > -2 && $activeSlave.hips < 3 && $surgeryUpgrade == 1>>
-			[[Broaden pelvis|Surgery Degradation][$activeSlave.hipsImplant++,$activeSlave.hips++,$cash -= $surgeryCost, $activeSlave.health -= 40,$surgeryType = "hips"]] | [[Narrow pelvis|Surgery Degradation][$activeSlave.hipsImplant--,$activeSlave.hips--,$cash -= $surgeryCost, $activeSlave.health -= 40,$surgeryType = "hips"]]
+			[[Broaden pelvis|Surgery Degradation][$activeSlave.hipsImplant++,$activeSlave.hips++,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 40,$surgeryType = "hips"]] | [[Narrow pelvis|Surgery Degradation][$activeSlave.hipsImplant--,$activeSlave.hips--,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 40,$surgeryType = "hips"]]
 		<<elseif $activeSlave.hips > -2 && $activeSlave.hips < 2>>
-			[[Broaden pelvis|Surgery Degradation][$activeSlave.hipsImplant++,$activeSlave.hips++,$cash -= $surgeryCost, $activeSlave.health -= 40,$surgeryType = "hips"]] | [[Narrow pelvis|Surgery Degradation][$activeSlave.hipsImplant--,$activeSlave.hips--,$cash -= $surgeryCost, $activeSlave.health -= 40,$surgeryType = "hips"]]
+			[[Broaden pelvis|Surgery Degradation][$activeSlave.hipsImplant++,$activeSlave.hips++,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 40,$surgeryType = "hips"]] | [[Narrow pelvis|Surgery Degradation][$activeSlave.hipsImplant--,$activeSlave.hips--,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 40,$surgeryType = "hips"]]
 		<<elseif $activeSlave.hips <= -1>>
-			[[Broaden pelvis|Surgery Degradation][$activeSlave.hipsImplant++,$activeSlave.hips++,$cash -= $surgeryCost, $activeSlave.health -= 40,$surgeryType = "hips"]]
+			[[Broaden pelvis|Surgery Degradation][$activeSlave.hipsImplant++,$activeSlave.hips++,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 40,$surgeryType = "hips"]]
 		<<elseif $activeSlave.hips >= 2>>
-			[[Narrow pelvis|Surgery Degradation][$activeSlave.hipsImplant--,$activeSlave.hips--,$cash -= $surgeryCost, $activeSlave.health -= 40,$surgeryType = "hips"]]
+			[[Narrow pelvis|Surgery Degradation][$activeSlave.hipsImplant--,$activeSlave.hips--,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 40,$surgeryType = "hips"]]
 		<</if>>
 	<<elseif $surgeryUpgrade == 1>>
 		<<if $activeSlave.hips > -2 && $activeSlave.hips < 3>>
-			[[Advanced pelvis broadening|Surgery Degradation][$activeSlave.hipsImplant++,$activeSlave.hips++,$cash -= $surgeryCost, $activeSlave.health -= 40,$surgeryType = "hips"]] | [[Advanced pelvis narrowing|Surgery Degradation][$activeSlave.hipsImplant--,$activeSlave.hips--,$cash -= $surgeryCost, $activeSlave.health -= 40,$surgeryType = "hips"]]
+			[[Advanced pelvis broadening|Surgery Degradation][$activeSlave.hipsImplant++,$activeSlave.hips++,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 40,$surgeryType = "hips"]] | [[Advanced pelvis narrowing|Surgery Degradation][$activeSlave.hipsImplant--,$activeSlave.hips--,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 40,$surgeryType = "hips"]]
 		<<elseif $activeSlave.hips <= -1>>
-			[[Advanced pelvis broadening|Surgery Degradation][$activeSlave.hipsImplant++,$activeSlave.hips++,$cash -= $surgeryCost, $activeSlave.health -= 40,$surgeryType = "hips"]]
+			[[Advanced pelvis broadening|Surgery Degradation][$activeSlave.hipsImplant++,$activeSlave.hips++,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 40,$surgeryType = "hips"]]
 		<<elseif $activeSlave.hips >= 3>>
-			[[Advanced pelvis narrowing|Surgery Degradation][$activeSlave.hipsImplant--,$activeSlave.hips--,$cash -= $surgeryCost, $activeSlave.health -= 40,$surgeryType = "hips"]]
+			[[Advanced pelvis narrowing|Surgery Degradation][$activeSlave.hipsImplant--,$activeSlave.hips--,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 40,$surgeryType = "hips"]]
 		<</if>>
 	<</if>>
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
@@ -1416,19 +1416,19 @@ Work on $him structurally:
 	<</if>>
 <<if ($activeSlave.heightImplant == 0)>>
 	<<if $activeSlave.indentureRestrictions < 1>>
-	[[Lengthen major bones|Surgery Degradation][$activeSlave.heightImplant = 1,$activeSlave.height += 10,$cash -= $surgeryCost, $activeSlave.health -= 40,$surgeryType = "height"]] | [[Shorten major bones|Surgery Degradation][$activeSlave.heightImplant = -1,$activeSlave.height -= 10,$cash -= $surgeryCost, $activeSlave.health -= 40,$surgeryType = "height"]]
+	[[Lengthen major bones|Surgery Degradation][$activeSlave.heightImplant = 1,$activeSlave.height += 10,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 40,$surgeryType = "height"]] | [[Shorten major bones|Surgery Degradation][$activeSlave.heightImplant = -1,$activeSlave.height -= 10,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 40,$surgeryType = "height"]]
 	<</if>>
 <<elseif ($activeSlave.height < (Height.mean($activeSlave)+15)) && ($activeSlave.height >= (Height.mean($activeSlave)-15)) && ($surgeryUpgrade == 1)>>
 	<<if $activeSlave.indentureRestrictions < 1>>
-	[[Advanced height gain surgery|Surgery Degradation][$activeSlave.heightImplant = 1,$activeSlave.height += 10,$cash -= $surgeryCost, $activeSlave.health -= 40,$surgeryType = "height"]] | [[Advanced height reduction surgery|Surgery Degradation][$activeSlave.heightImplant = -1,$activeSlave.height -= 10,$cash -= $surgeryCost, $activeSlave.health -= 40,$surgeryType = "height"]]
+	[[Advanced height gain surgery|Surgery Degradation][$activeSlave.heightImplant = 1,$activeSlave.height += 10,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 40,$surgeryType = "height"]] | [[Advanced height reduction surgery|Surgery Degradation][$activeSlave.heightImplant = -1,$activeSlave.height -= 10,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 40,$surgeryType = "height"]]
 	<</if>>
 <<elseif ($activeSlave.height < (Height.mean($activeSlave)+15)) && ($surgeryUpgrade == 1)>>
 	<<if $activeSlave.indentureRestrictions < 1>>
-	[[Advanced height gain surgery|Surgery Degradation][$activeSlave.heightImplant = 1,$activeSlave.height += 10,$cash -= $surgeryCost, $activeSlave.health -= 40,$surgeryType = "height"]]
+	[[Advanced height gain surgery|Surgery Degradation][$activeSlave.heightImplant = 1,$activeSlave.height += 10,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 40,$surgeryType = "height"]]
 	<</if>>
 <<elseif ($activeSlave.height >= (Height.mean($activeSlave)-15)) && ($surgeryUpgrade == 1)>>
 	<<if $activeSlave.indentureRestrictions < 1>>
-	[[Advanced height reduction surgery|Surgery Degradation][$activeSlave.heightImplant = -1,$activeSlave.height -= 10,$cash -= $surgeryCost, $activeSlave.health -= 40,$surgeryType = "height"]]
+	[[Advanced height reduction surgery|Surgery Degradation][$activeSlave.heightImplant = -1,$activeSlave.height -= 10,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 40,$surgeryType = "height"]]
 	<</if>>
 <</if>>
 <br>&nbsp;&nbsp;&nbsp;&nbsp;
@@ -1439,11 +1439,11 @@ Work on $him structurally:
 <</if>>
 <<if ($activeSlave.heels == 0) && ($seeExtreme == 1)>>
 	<<if $activeSlave.indentureRestrictions < 1>>
-	[[Shorten tendons|Surgery Degradation][$activeSlave.heels = 1,$activeSlave.shoes = "heels",$cash -= $surgeryCost, $activeSlave.health -= 20,$surgeryType = "heels"]] //Prevents $him from walking in anything but very high heels//
+	[[Shorten tendons|Surgery Degradation][$activeSlave.heels = 1,$activeSlave.shoes = "heels",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "heels"]] //Prevents $him from walking in anything but very high heels//
 	<</if>>
 <</if>>
 <<if ($activeSlave.heels == 1)>>
-	[[Replace tendons|Surgery Degradation][$activeSlave.heels = 0,$activeSlave.shoes = "none",$cash -= $surgeryCost, $activeSlave.health -= 10,$surgeryType = "heelsRestoration"]]
+	[[Replace tendons|Surgery Degradation][$activeSlave.heels = 0,$activeSlave.shoes = "none",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 10,$surgeryType = "heelsRestoration"]]
 <</if>>
 <br>&nbsp;&nbsp;&nbsp;&nbsp;
 <</if>>
@@ -1475,29 +1475,29 @@ Work on $him structurally:
 <<if $cyberMod == 0>>
 	<<if $activeSlave.amp == 0>>
 		<<if ($activeSlave.indentureRestrictions < 1) && ($seeExtreme == 1)>>
-			[[Remove arms and legs|Surgery Degradation][$activeSlave.amp = 1,$activeSlave.heels = 0,$activeSlave.shoes = "none",$activeSlave.legAccessory = "none",$activeSlave.heightImplant = 0,$activeSlave.legsTat = 0,$activeSlave.armsTat = 0,$cash -= $surgeryCost,$activeSlave.health -= 40,$activeSlave.nails = 0,$activeSlave.PLimb = 0,$surgeryType = "amp1"]] //This will greatly restrict $him//
+			[[Remove arms and legs|Surgery Degradation][$activeSlave.amp = 1,$activeSlave.heels = 0,$activeSlave.shoes = "none",$activeSlave.legAccessory = "none",$activeSlave.heightImplant = 0,$activeSlave.legsTat = 0,$activeSlave.armsTat = 0,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$activeSlave.health -= 40,$activeSlave.nails = 0,$activeSlave.PLimb = 0,$surgeryType = "amp1"]] //This will greatly restrict $him//
 		<</if>>
 	<<elseif $activeSlave.PLimb != 1 && $activeSlave.amp == 1>>
 		<<if ($activeSlave.indentureRestrictions < 1) && ($seeExtreme == 1)>>
-			[[Implant prosthetic interface|Surgery Degradation][$activeSlave.PLimb = 1,$cash -= $surgeryCost,$activeSlave.health -= 20,$surgeryType = "prostheticInterface"]] //This will allow $him to use prosthetic limbs//
+			[[Implant prosthetic interface|Surgery Degradation][$activeSlave.PLimb = 1,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$activeSlave.health -= 20,$surgeryType = "prostheticInterface"]] //This will allow $him to use prosthetic limbs//
 		<</if>>
 	<</if>>
 <<else>>
 	<<if $activeSlave.amp == 0>>
 		<<if ($activeSlave.indentureRestrictions < 1) && ($seeExtreme == 1) && (($stockpile.basicPLimbInterface + $stockpile.advPLimbInterface) == 0)>>
-			[[Remove arms and legs|Surgery Degradation][$activeSlave.amp = 1,$activeSlave.heels = 0,$activeSlave.shoes = "none",$activeSlave.legAccessory = "none",$activeSlave.heightImplant = 0,$activeSlave.legsTat = 0,$activeSlave.armsTat = 0,$activeSlave.releaseRules = "restrictive",$cash -= $surgeryCost, $activeSlave.health -= 40,$activeSlave.nails = 0,$surgeryType = "amp"]] //This will greatly restrict $him//
+			[[Remove arms and legs|Surgery Degradation][$activeSlave.amp = 1,$activeSlave.heels = 0,$activeSlave.shoes = "none",$activeSlave.legAccessory = "none",$activeSlave.heightImplant = 0,$activeSlave.legsTat = 0,$activeSlave.armsTat = 0,$activeSlave.releaseRules = "restrictive",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 40,$activeSlave.nails = 0,$surgeryType = "amp"]] //This will greatly restrict $him//
 		<<elseif ($activeSlave.indentureRestrictions < 1) && ($seeExtreme == 1)>>
-			[[Remove arms and legs|Surgery Degradation][$activeSlave.amp = 1,$activeSlave.heels = 0,$activeSlave.shoes = "none",$activeSlave.legAccessory = "none",$activeSlave.heightImplant = 0,$activeSlave.legsTat = 0,$activeSlave.armsTat = 0,$activeSlave.releaseRules = "restrictive",$cash -= $surgeryCost, $activeSlave.health -= 40,$activeSlave.nails = 0,$surgeryType = "amp1"]] //This will greatly restrict $him//
+			[[Remove arms and legs|Surgery Degradation][$activeSlave.amp = 1,$activeSlave.heels = 0,$activeSlave.shoes = "none",$activeSlave.legAccessory = "none",$activeSlave.heightImplant = 0,$activeSlave.legsTat = 0,$activeSlave.armsTat = 0,$activeSlave.releaseRules = "restrictive",cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 40,$activeSlave.nails = 0,$surgeryType = "amp1"]] //This will greatly restrict $him//
 		<</if>>
 	<<elseif ($activeSlave.amp == 1) && ($activeSlave.PLimb == 0)>>
 		<<if ($stockpile.basicPLimbInterface > 0)>> |
-			[[Install basic prosthetic interface|Surgery Degradation][$activeSlave.PLimb = 1,$stockpile.basicPLimbInterface -= 1,$cash -= $surgeryCost, $activeSlave.health -= 20,$surgeryType = "PLimb interface1"]]
+			[[Install basic prosthetic interface|Surgery Degradation][$activeSlave.PLimb = 1,$stockpile.basicPLimbInterface -= 1,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "PLimb interface1"]]
 		<</if>>
 		<<if $stockpile.advPLimbInterface > 0>> |
-			[[Install advanced prosthetic interface|Surgery Degradation][$activeSlave.PLimb = 2,$stockpile.advPLimbInterface -= 1,$cash -= $surgeryCost, $activeSlave.health -= 20,$surgeryType = "PLimb interface2"]]
+			[[Install advanced prosthetic interface|Surgery Degradation][$activeSlave.PLimb = 2,$stockpile.advPLimbInterface -= 1,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "PLimb interface2"]]
 		<</if>>
 	<<elseif $activeSlave.amp == 1 && $activeSlave.PLimb == 1 && $stockpile.advPLimbInterface > 0>> |
-		[[Upgrade advanced prosthetic interface|Surgery Degradation][$activeSlave.PLimb = 2,$stockpile.advPLimbInterface -= 1,$cash -= $surgeryCost, $activeSlave.health -= 5,$surgeryType = "PLimb interface3"]]
+		[[Upgrade advanced prosthetic interface|Surgery Degradation][$activeSlave.PLimb = 2,$stockpile.advPLimbInterface -= 1,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 5,$surgeryType = "PLimb interface3"]]
 	<</if>>
 <</if>>
 
@@ -1535,7 +1535,7 @@ Work on $him structurally:
 			<<set _rems = $activeSlave.readyLimbs.findIndex(function(s) { return s.type == -1; })>>
 			<<if _rems == -1>>
 				<<link "Basic prosthetic limbs">>
-					<<set $cash -= 10000>>
+					<<run cashX(-10000, "slaveSurgery", $activeSlave)>>
 					<<set $activeLimbs = {weeksToCompletion: 4, ID: 0, type: "simple"}>>
 					<<set $activeLimbs.ID = $activeSlave.ID>>
 					<<set $limbs.push($activeLimbs)>>
@@ -1550,7 +1550,7 @@ Work on $him structurally:
 				<<if _rems == -1>>
 					|
 					<<link "Sexual functions">>
-						<<set $cash -= 15000>>
+						<<run cashX(-15000, "slaveSurgery", $activeSlave)>>
 						<<set $activeLimbs = {weeksToCompletion: 6, ID: 0, type: "sex"}>>
 						<<set $activeLimbs.ID = $activeSlave.ID>>
 						<<if $activeSlave.amp == 1>>
@@ -1567,7 +1567,7 @@ Work on $him structurally:
 				<<if _rems == -1>>
 					|
 					<<link "Beauty and grace">>
-						<<set $cash -= 15000>>
+						<<run cashX(-15000, "slaveSurgery", $activeSlave)>>
 						<<set $activeLimbs = {weeksToCompletion: 6, ID: 0, type: "beauty"}>>
 						<<set $activeLimbs.ID = $activeSlave.ID>>
 						<<if $activeSlave.amp == 1>>
@@ -1584,7 +1584,7 @@ Work on $him structurally:
 				<<if _rems == -1>>
 					|
 					<<link "Combat effectiveness">>
-						<<set $cash -= 15000>>
+						<<run cashX(-15000, "slaveSurgery", $activeSlave)>>
 						<<set $activeLimbs = {weeksToCompletion: 6, ID: 0, type: "combat"}>>
 						<<set $activeLimbs.ID = $activeSlave.ID>>
 						<<if $activeSlave.amp == 1>>
@@ -1602,7 +1602,7 @@ Work on $him structurally:
 				<<if _rems == -1>>
 					|
 					<<link "Highly advanced cybernetics">>
-						<<set $cash -= 25000>>
+						<<run cashX(-25000, "slaveSurgery", $activeSlave)>>
 						<<set $activeLimbs = {weeksToCompletion: 8, ID: 0, type: "cyber"}>>
 						<<set $activeLimbs.ID = $activeSlave.ID>>
 						<<if $activeSlave.amp == 1>>
@@ -1730,7 +1730,7 @@ Work on $him structurally:
 	<</if>>
 	<<if $activeSlave.indentureRestrictions < 1 && ($activeSlave.breedingMark != 1 || $propOutcome == 0)>>
 	<<if $activeSlave.fetish != "mindbroken">>
-		[[Chemically lobotomize|Surgery Degradation][$activeSlave.fetish = "mindbroken",$activeSlave.fetishKnown = 1,$cash -= $surgeryCost, $activeSlave.health -= 20,$surgeryType = "mindbreak"]]
+		[[Chemically lobotomize|Surgery Degradation][$activeSlave.fetish = "mindbroken",$activeSlave.fetishKnown = 1,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), $activeSlave.health -= 20,$surgeryType = "mindbreak"]]
 		//Warning: this is permanent and irreversible. It will destroy $his will and $his ability to remember anything but the simplest skills.//
 	<</if>>
 	<</if>>
diff --git a/src/uncategorized/reputation.tw b/src/uncategorized/reputation.tw
index 558cbb0f32d1b0d4770b0bf3488142b83c1270a2..8f42ef9a5dcbd2e6954d322fe7be8925f73298c8 100644
--- a/src/uncategorized/reputation.tw
+++ b/src/uncategorized/reputation.tw
@@ -737,7 +737,7 @@ On formal occasions, you are announced as $PCTitle.
 	<<set $PC.degeneracy -= 1>>
 	Rumors quelled as planned.
 <<else>>
-	<<set $cash += 1000>>
+	<<run cashX(1000, "policies")>>
 	Reputation subsidy reclaimed this week since your reputation is capped.
 <</if>>
 <</if>>
diff --git a/src/uncategorized/resFailure.tw b/src/uncategorized/resFailure.tw
index c17dc6710c6b9851c523f1a64b77cfc8906e624e..590353b311319c31974af0ad86a04df47e06e437 100644
--- a/src/uncategorized/resFailure.tw
+++ b/src/uncategorized/resFailure.tw
@@ -804,56 +804,56 @@ The failure of a prominent organization within your arcology has @@.red;affected
 	<<if $RESFailure == "TSS">>
 		<<if ($slaves[$i].origin == "She was given to you by a failed branch campus of The Slavegirl School right after her majority.") || ($slaves[$i].origin == "She was given to you by a failed branch campus of The Slavegirl School after she was retrained as a slave girl.")>>
 		<<slaveCost $slaves[$i]>>
-		<<set $cash += $slaveCost>>
+		<<run cashX(forceNeg($slaveCost), "slaveTransfer")>>
 		<<include "Remove activeSlave">>
 		<<set $i -= 1>>
 		<</if>>
 	<<elseif $RESFailure == "GRI">>
 		<<if $slaves[$i].origin == "She was given to you by a failed subsidiary lab of the Growth Research Institute right after her use as a test subject ended.">>
 		<<slaveCost $slaves[$i]>>
-		<<set $cash += $slaveCost>>
+		<<run cashX(forceNeg($slaveCost), "slaveTransfer")>>
 		<<include "Remove activeSlave">>
 		<<set $i -= 1>>
 		<</if>>
 	<<elseif $RESFailure == "SCP">>
 		<<if $slaves[$i].origin == "She was given to you by a failed branch campus of St. Claver Preparatory after she served as a plastic surgeon's passing final exam.">>
 		<<slaveCost $slaves[$i]>>
-		<<set $cash += $slaveCost>>
+		<<run cashX(forceNeg($slaveCost), "slaveTransfer")>>
 		<<include "Remove activeSlave">>
 		<<set $i -= 1>>
 		<</if>>
 	<<elseif $RESFailure == "LDE">>
 		<<if $slaves[$i].origin == "She was given to you by a failed branch campus of the innovative École des Enculées right after her graduation.">>
 		<<slaveCost $slaves[$i]>>
-		<<set $cash += $slaveCost>>
+		<<run cashX(forceNeg($slaveCost), "slaveTransfer")>>
 		<<include "Remove activeSlave">>
 		<<set $i -= 1>>
 		<</if>>
 	<<elseif $RESFailure == "TGA">>
 		<<if $slaves[$i].origin == "She was given to you by a failed branch campus of the intense Gymnasium-Academy right after her majority.">>
 		<<slaveCost $slaves[$i]>>
-		<<set $cash += $slaveCost>>
+		<<run cashX(forceNeg($slaveCost), "slaveTransfer")>>
 		<<include "Remove activeSlave">>
 		<<set $i -= 1>>
 		<</if>>
 	<<elseif $RESFailure == "HA">>
 		<<if $slaves[$i].origin == "She was given to you by a failed branch campus of the Hippolyta Academy right after her majority.">>
 		<<slaveCost $slaves[$i]>>
-		<<set $cash += $slaveCost>>
+		<<run cashX(forceNeg($slaveCost), "slaveTransfer")>>
 		<<include "Remove activeSlave">>
 		<<set $i -= 1>>
 		<</if>>
 	<<elseif $RESFailure == "TCR">>
 		<<if $slaves[$i].origin == "She is a prized dairy cow given to you by a failed local pasture of The Cattle Ranch.">>
 		<<slaveCost $slaves[$i]>>
-		<<set $cash += $slaveCost>>
+		<<run cashX(forceNeg($slaveCost), "slaveTransfer")>>
 		<<include "Remove activeSlave">>
 		<<set $i -= 1>>
 		<</if>>
 	<<else>>
 		<<if ($slaves[$i].origin == "She was the leader of your arcology's Futanari Sisters until you engineered her community's failure and enslavement.") || ($slaves[$i].origin == "She was a Futanari Sister until you engineered her early enslavement.")>>
 		<<slaveCost $slaves[$i]>>
-		<<set $cash += $slaveCost>>
+		<<run cashX(forceNeg($slaveCost), "slaveTransfer")>>
 		<<include "Remove activeSlave">>
 		<<set $i -= 1>>
 		<</if>>
diff --git a/src/uncategorized/saGetMilked.tw b/src/uncategorized/saGetMilked.tw
index 88c0313d193e5217a26e11d355c786d35bc298b3..0248e26f42413e84b27a35f246ed285782e094c5 100644
--- a/src/uncategorized/saGetMilked.tw
+++ b/src/uncategorized/saGetMilked.tw
@@ -168,7 +168,7 @@ gets milked this week.
 		<<set $milkSale = $milk*6>>
 		$His milk is sold for @@.yellowgreen;<<print cashFormat($milkSale)>>.@@
 	<</if>>
-	<<set $cash += $milkSale>>
+	<<run cashX($milkSale, "milked", $slaves[$i])>>
 	<<set _incomeStats.income += $milkSale>>
 
 	<<if $slaves[$i].fetishKnown>>
@@ -393,7 +393,7 @@ gets milked this week.
 		<<if $slaves[$i].vasectomy == 1 || $slaves[$i].ballType == "sterile">><<set _cumSale *= 0.2>><<elseif $slaves[$i].prostate == 3>><<set _cumSale *= 0.5>><</if>>
 		$He produces <<print $cum>> deciliters of cum over the week; the fresh ejaculate, which is in high demand given the new cultural preference for slave products, is sold for @@.yellowgreen;<<print cashFormat(_cumSale)>>.@@
 	<</if>>
-	<<set $cash += _cumSale>>
+	<<run cashX(_cumSale, "milked", $slaves[$i])>>
 	<<set _incomeStats.income += _cumSale>>
 
 	<<if ($slaves[$i].energy > 95)>>
@@ -465,7 +465,7 @@ gets milked this week.
 		Because of your arcology's cultural preferences, it comes with extra value.
 	<</if>>
 	It is sold for @@.yellowgreen;<<print cashFormat($fluidSale)>>.@@
-	<<set $cash += $fluidSale>>
+	<<run cashX( $fluidSale, "milked", $slaves[$i])>>
 	<<set _incomeStats.income += $fluidSale>>
 <</if>> /* CLOSES FEMALE PROSTATE FLUID GATHERING */
 
@@ -486,7 +486,7 @@ gets milked this week.
 		<<else>>
 			an incident without lasting effect.
 		<</if>>
-		<<set $cash += Math.trunc($FResult*_vignette.effect)>>
+		<<run cashX(Math.trunc($FResult*_vignette.effect), "milked", $slaves[$i])>>
 		<<set _incomeStats.income += Math.trunc($FResult*_vignette.effect)>>
 	<<elseif (_vignette.type == "devotion")>>
 		<<if (_vignette.effect > 0)>>
diff --git a/src/uncategorized/saLongTermEffects.tw b/src/uncategorized/saLongTermEffects.tw
index b149f3c9469c41b6d87e4e4c4c43d894362a9dd3..12988e896248e7094c7702400e3181c1a378b1dc 100644
--- a/src/uncategorized/saLongTermEffects.tw
+++ b/src/uncategorized/saLongTermEffects.tw
@@ -7241,7 +7241,7 @@
 	<<set _donations = Math.floor($slaves[$i].pornFame/(random(13,20)))+(random(-5000,5000))>>
 	<<if _donations > 0>>
 		A number of gifts and donations totaling @@.yellowgreen;<<print cashFormat(_donations)>>@@ were also sent to $him, among other things.
-		<<set $cash += _donations>>
+		<<run cashX(_donations, "porn", $slaves[$i])>>
 	<</if>>
 <<elseif $slaves[$i].pornFeed > 0>>
 	<<include "SA Porn">>
@@ -7307,7 +7307,7 @@
 			<<set $slaves[$i].pregKnown = 0>>
 			<<set WombFlush($slaves[$i])>>
 			<<run SetBellySize($slaves[$i])>>
-			<<set $cash -= 100000>>
+			<<run cashX(-100000, "fines", $slaves[$i])>>
 			<<set $failedElite += 150>>
 		<</if>>
 	<</if>>
diff --git a/src/uncategorized/saServeThePublic.tw b/src/uncategorized/saServeThePublic.tw
index 606dda542417b08da7252b7180b3ca97e788100e..eb16a3971393317f8bc70bf98d23af1fda924d95 100644
--- a/src/uncategorized/saServeThePublic.tw
+++ b/src/uncategorized/saServeThePublic.tw
@@ -1217,7 +1217,7 @@ $His appearance attracted $beauty members of the public (<<print Math.trunc($bea
 		<<else>>
 			an incident without lasting effect.
 		<</if>>
-		<<set $cash += Math.trunc($FResult*_vignette.effect)>>
+		<<run cashX(Math.trunc($FResult*_vignette.effect), "publicServant", $slaves[$i])>>
 		<<set _incomeStats.rep += Math.trunc($FResult*_vignette.effect)>>
 	<<elseif (_vignette.type == "devotion")>>
 		<<if (_vignette.effect > 0)>>
diff --git a/src/uncategorized/saWhore.tw b/src/uncategorized/saWhore.tw
index 21cae4ef1c8cf5212d27cee401d7788c087dc285..7bac453ed0d5abe638007cb75aee71f4866f915b 100644
--- a/src/uncategorized/saWhore.tw
+++ b/src/uncategorized/saWhore.tw
@@ -53,6 +53,7 @@
 $his body.
 
 <<set $beautyMultiplier = 1>>
+<<set _adsBeautyMultiplier = 0>>
 <<if $brothel > 0>>
 	<<if (($universalRulesFacilityWork == 1) && ($slaves[$i].assignment == "whore") && ($brothelSpots > 0)) || ($slaves[$i].assignment == "work in the brothel")>>
 	<<if ($slaves[$i].assignment == "whore")>>
@@ -1061,7 +1062,8 @@ $His appearance attracted $beauty customers (<<print Math.trunc($beauty/7)>> a d
 <</if>>
 
 In total, you were paid @@.yellowgreen;<<print cashFormat(Math.trunc($beauty*$FResult))>>@@ for the use of $slaves[$i].slaveName's body this week.
-<<set $cash += Math.trunc(($beauty*$FResult)*(1+(0.002*$slaves[$i].whoreSkill)))>>
+<<set _cashX = Math.trunc(($beauty*$FResult)*(1+(0.002*$slaves[$i].whoreSkill)))>>
+<<run cashX(_cashX, "whore", $slaves[$i])>>
 <<set _incomeStats.income += Math.trunc(($beauty*$FResult)*(1+(0.002*$slaves[$i].whoreSkill)))>>
 
 /* FACILITY DECORATION IMPACTS */
@@ -1227,7 +1229,8 @@ In total, you were paid @@.yellowgreen;<<print cashFormat(Math.trunc($beauty*$FR
 		<<else>>
 			an incident without lasting effect.
 		<</if>>
-		<<set $cash += Math.trunc($FResult*_vignette.effect)>>
+		<<set _cashX = Math.trunc($FResult*_vignette.effect)>>
+		<<run cashX(_cashX, "whore", $slaves[$i])>>
 	<<set _incomeStats.income += Math.trunc($FResult*_vignette.effect)>>
 	<<elseif (_vignette.type == "devotion")>>
 		<<if (_vignette.effect > 0)>>
diff --git a/src/uncategorized/saWorkAGloryHole.tw b/src/uncategorized/saWorkAGloryHole.tw
index 7a48cf2fe60fbe6f1a191a4b204f4b43eecbd416..687e5b0dd497750fcf5fcbc7b472478dd2388d21 100644
--- a/src/uncategorized/saWorkAGloryHole.tw
+++ b/src/uncategorized/saWorkAGloryHole.tw
@@ -265,6 +265,6 @@ $His feelings, skills, and appearance do not matter. $He is condemned to a world
 	<<set $slaves[$i].bellyImplant += _cervixPump>>
 <</if>>
 
-<<set $cash += ($beauty*$FResult)>>
+<<run cashX(($beauty*$FResult), "gloryhole", $slaves[$i])>>
 <<set _profits += ($beauty*$FResult)>>
 <<set _incomeStats.income += ($beauty*$FResult)>>
diff --git a/src/uncategorized/saWorkTheFarm.tw b/src/uncategorized/saWorkTheFarm.tw
index 0f6b72fb4772410b8467f13c87b31faf57a45e87..3523da7dfb13ed35a663af4b77fc45f256462498 100644
--- a/src/uncategorized/saWorkTheFarm.tw
+++ b/src/uncategorized/saWorkTheFarm.tw
@@ -164,7 +164,7 @@ gets milked this week.
 		<<set $milkSale = $milk*6>>
 		$His milk is sold for @@.yellowgreen;<<print cashFormat($milkSale)>>.@@
 	<</if>>
-	<<set $cash += $milkSale>>
+	<<run cashX($milkSale, "milked", $slaves[$i])>>
 	<<set _incomeStats.income += $milkSale>>
 
 	<<if $slaves[$i].fetishKnown>>
@@ -386,7 +386,7 @@ gets milked this week.
 		<<if $slaves[$i].vasectomy == 1 || $slaves[$i].ballType == "sterile">><<set _cumSale *= 0.2>><<elseif $slaves[$i].prostate == 3>><<set _cumSale *= 0.5>><</if>>
 		$He produces <<print $cum>> deciliters of cum over the week; the fresh ejaculate, which is in high demand given the new cultural preference for slave products, is sold for @@.yellowgreen;<<print cashFormat(_cumSale)>>.@@
 	<</if>>
-	<<set $cash += _cumSale>>
+	<<run cashX(_cumSale, "milked", $slaves[$i])>>
 	<<set _incomeStats.income += _cumSale>>
 
 	<<if ($slaves[$i].energy > 95)>>
@@ -458,7 +458,7 @@ gets milked this week.
 		Because of your arcology's cultural preferences, it comes with extra value.
 	<</if>>
 	It is sold for @@.yellowgreen;<<print cashFormat($fluidSale)>>.@@
-	<<set $cash += $fluidSale>>
+	<<run cashX($fluidSale, "milked", $slaves[$i])>>
 	<<set _incomeStats.income += $fluidSale>>
 <</if>> /* CLOSES FEMALE PROSTATE FLUID GATHERING */
 
@@ -479,7 +479,7 @@ gets milked this week.
 		<<else>>
 			an incident without lasting effect.
 		<</if>>
-		<<set $cash += Math.trunc($FResult*_vignette.effect)>>
+		<<run cashX(Math.trunc($FResult*_vignette.effect), "milked", $slaves[$i])>>
 		<<set _incomeStats.income += Math.trunc($FResult*_vignette.effect)>>
 	<<elseif (_vignette.type == "devotion")>>
 		<<if (_vignette.effect > 0)>>
diff --git a/src/uncategorized/salon.tw b/src/uncategorized/salon.tw
index f1acaab3be4fa5ce477b72d2890d3f37d28c6259..a1b04bda4e762ffc54b002c72c4eae45263b44d3 100644
--- a/src/uncategorized/salon.tw
+++ b/src/uncategorized/salon.tw
@@ -40,7 +40,7 @@
 	<</if>>
 	//Blurring options are annoying and impede performance on some assignments.//
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
-	Give $him: [[Cosmetic glasses|Salon][$activeSlave.eyewear = "glasses",$cash -= $modCost]]
+	Give $him: [[Cosmetic glasses|Salon][$activeSlave.eyewear = "glasses",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 	<br>
 <<elseif $activeSlave.eyes < -1>>
 	$He is blind, and
@@ -51,7 +51,7 @@
 	<</if>>
 	//Blurring options are annoying and impede performance on some assignments.//
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
-	Give $him: [[Cosmetic glasses|Salon][$activeSlave.eyewear = "glasses",$cash -= $modCost]]
+	Give $him: [[Cosmetic glasses|Salon][$activeSlave.eyewear = "glasses",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 <<elseif $activeSlave.eyes > -1>>
 	$His vision is normal, and $he
 	<<if $activeSlave.eyewear == "none">>
@@ -61,9 +61,9 @@
 	<</if>>
 	//Blurring options are annoying and impede performance on some assignments.//
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
-	Give $him: [[Cosmetic glasses|Salon][$activeSlave.eyewear = "glasses",$cash -= $modCost]]
-	| [[Blurring glasses|Salon][$activeSlave.eyewear = "blurring glasses",$cash -= $modCost]]
-	| [[Blurring contacts|Salon][$activeSlave.eyewear = "blurring contacts",$cash -= $modCost]]
+	Give $him: [[Cosmetic glasses|Salon][$activeSlave.eyewear = "glasses",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+	| [[Blurring glasses|Salon][$activeSlave.eyewear = "blurring glasses",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+	| [[Blurring contacts|Salon][$activeSlave.eyewear = "blurring contacts",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 <<else>>
 	$He is nearsighted, and $he
 	<<if $activeSlave.eyewear == "none">>
@@ -73,9 +73,9 @@
 	<</if>>
 	//Nearsightedness will impede performance on some assignments.//
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
-	Give $him: [[Cosmetic glasses|Salon][$activeSlave.eyewear = "glasses",$cash -= $modCost]]
-	| [[Corrective glasses|Salon][$activeSlave.eyewear = "corrective glasses",$cash -= $modCost]]
-	| [[Corrective contacts|Salon][$activeSlave.eyewear = "corrective contacts",$cash -= $modCost]]
+	Give $him: [[Cosmetic glasses|Salon][$activeSlave.eyewear = "glasses",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+	| [[Corrective glasses|Salon][$activeSlave.eyewear = "corrective glasses",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+	| [[Corrective contacts|Salon][$activeSlave.eyewear = "corrective contacts",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
 <</if>>
 
@@ -150,7 +150,7 @@
 
 	<<if $artificialEyeColor != "">>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
-		[[Give|Salon][$activeSlave.eyeColor = ($artificialEyeColor),$activeSlave.pupil = ($artificialEyeShape),$activeSlave.sclerae = ($artificialEyeFill),$cash -= $modCost, $artificialEyeColor = "", $artificialEyeShape = "", $artificialEyeFill = ""]] $him $artificialEyeColor <<if $activeSlave.origEye == "none">>glass eyes<<else>>lenses<</if>><<if $artificialEyeShape != "" || $artificialEyeFill != "">> with <<if $artificialEyeShape != "" >>$artificialEyeShape pupils<</if>><<if $artificialEyeShape != "" && $artificialEyeFill != "">> and <</if>><<if $artificialEyeFill != "" >>$artificialEyeFill sclerae<</if>><</if>>? //This will be applied in addition to eyewear choices.//
+		[[Give|Salon][$activeSlave.eyeColor = ($artificialEyeColor),$activeSlave.pupil = ($artificialEyeShape),$activeSlave.sclerae = ($artificialEyeFill),cashX(forceNeg($modCost), "slaveMod", $activeSlave), $artificialEyeColor = "", $artificialEyeShape = "", $artificialEyeFill = ""]] $him $artificialEyeColor <<if $activeSlave.origEye == "none">>glass eyes<<else>>lenses<</if>><<if $artificialEyeShape != "" || $artificialEyeFill != "">> with <<if $artificialEyeShape != "" >>$artificialEyeShape pupils<</if>><<if $artificialEyeShape != "" && $artificialEyeFill != "">> and <</if>><<if $artificialEyeFill != "" >>$artificialEyeFill sclerae<</if>><</if>>? //This will be applied in addition to eyewear choices.//
 	<</if>>
 
 <<else>>
@@ -171,9 +171,9 @@
 	<</if>>
 	//Muffling options are annoying and impede performance on some assignments.//
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
-	Give $him: [[Hearing aids|Salon][$activeSlave.earwear = "hearing aids",$cash -= $modCost]]
-	| [[Muffling ear plugs|Salon][$activeSlave.earwear = "muffling ear plugs",$cash -= $modCost]]
-	| [[Deafening ear plugs|Salon][$activeSlave.earwear = "deafening ear plugs",$cash -= $modCost]]
+	Give $him: [[Hearing aids|Salon][$activeSlave.earwear = "hearing aids",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+	| [[Muffling ear plugs|Salon][$activeSlave.earwear = "muffling ear plugs",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+	| [[Deafening ear plugs|Salon][$activeSlave.earwear = "deafening ear plugs",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 	<br>
 <<elseif $activeSlave.hears < -1>>
 	$He is deaf, and
@@ -184,9 +184,9 @@
 	<</if>>
 	//Muffling options are annoying and impede performance on some assignments.//
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
-	Give $him: [[Hearing aids|Salon][$activeSlave.earwear = "hearing aids",$cash -= $modCost]]
-	| [[Muffling ear plugs|Salon][$activeSlave.earwear = "muffling ear plugs",$cash -= $modCost]]
-	| [[Deafening ear plugs|Salon][$activeSlave.earwear = "deafening ear plugs",$cash -= $modCost]]
+	Give $him: [[Hearing aids|Salon][$activeSlave.earwear = "hearing aids",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+	| [[Muffling ear plugs|Salon][$activeSlave.earwear = "muffling ear plugs",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+	| [[Deafening ear plugs|Salon][$activeSlave.earwear = "deafening ear plugs",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 <<elseif $activeSlave.hears > -1>>
 	$His hearing is normal, and $he
 	<<if $activeSlave.earwear == "none">>
@@ -196,9 +196,9 @@
 	<</if>>
 	//Muffling options are annoying and impede performance on some assignments.//
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
-	Give $him: [[Hearing aids|Salon][$activeSlave.earwear = "hearing aids",$cash -= $modCost]]
-	| [[Muffling ear plugs|Salon][$activeSlave.earwear = "muffling ear plugs",$cash -= $modCost]]
-	| [[Deafening ear plugs|Salon][$activeSlave.earwear = "deafening ear plugs",$cash -= $modCost]]
+	Give $him: [[Hearing aids|Salon][$activeSlave.earwear = "hearing aids",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+	| [[Muffling ear plugs|Salon][$activeSlave.earwear = "muffling ear plugs",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+	| [[Deafening ear plugs|Salon][$activeSlave.earwear = "deafening ear plugs",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 <<else>>
 	$He is hearing impaired, and
 	<<if $activeSlave.earwear == "none">>
@@ -208,9 +208,9 @@
 	<</if>>
 	//Hearing impairment will impede performance on some assignments.//
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
-	Give $him: [[Hearing aids|Salon][$activeSlave.earwear = "hearing aids",$cash -= $modCost]]
-	| [[Muffling ear plugs|Salon][$activeSlave.earwear = "muffling ear plugs",$cash -= $modCost]]
-	| [[Deafening ear plugs|Salon][$activeSlave.earwear = "deafening ear plugs",$cash -= $modCost]]
+	Give $him: [[Hearing aids|Salon][$activeSlave.earwear = "hearing aids",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+	| [[Muffling ear plugs|Salon][$activeSlave.earwear = "muffling ear plugs",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+	| [[Deafening ear plugs|Salon][$activeSlave.earwear = "deafening ear plugs",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
 <</if>>
 
@@ -279,29 +279,29 @@
 
 	<<if $primaryHairColor != 0>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
-		[["Dye " + $his + " hair"|Salon][$activeSlave.hColor = ($primaryHairColor + $secondaryHairColor),$cash -= $modCost, $primaryHairColor = 0, $secondaryHairColor = ""]] $primaryHairColor $secondaryHairColor now?
+		[["Dye " + $his + " hair"|Salon][$activeSlave.hColor = ($primaryHairColor + $secondaryHairColor),cashX(forceNeg($modCost), "slaveMod", $activeSlave), $primaryHairColor = 0, $secondaryHairColor = ""]] $primaryHairColor $secondaryHairColor now?
 	<</if>>
 
 	<br><br>$His $activeSlave.hStyle hair is <<= lengthToEitherUnit($activeSlave.hLength)>> long. //General hairstyles will conform to hair length and clothing choices.//
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
 	<<if $activeSlave.hLength > 1>>
 		Style $his hair:
-		[[Afro|Salon][$activeSlave.hStyle = "afro",$cash -= $modCost]]
-		| [[Braided|Salon][$activeSlave.hStyle = "braided",$cash -= $modCost]]
-		| [[Cornrows|Salon][$activeSlave.hStyle = "cornrows",$cash -= $modCost]]
-		| [[Curled|Salon][$activeSlave.hStyle = "curled",$cash -= $modCost]]
-		| [[Dreadlocks|Salon][$activeSlave.hStyle = "dreadlocks",$cash -= $modCost]]
-		| [[Eary|Salon][$activeSlave.hStyle = "eary",$cash -= $modCost]]
-		| [[In a bun|Salon][$activeSlave.hStyle = "bun",$cash -= $modCost]]
-		| [[In a messy bun|Salon][$activeSlave.hStyle = "messy bun",$cash -= $modCost]]
-		| [[In a ponytail|Salon][$activeSlave.hStyle = "ponytail",$cash -= $modCost]]
-		| [[In tails|Salon][$activeSlave.hStyle = "tails",$cash -= $modCost]]
-		| [[Luxurious|Salon][$activeSlave.hStyle = "luxurious",$cash -= $modCost]]
-		| [[Messy|Salon][$activeSlave.hStyle = "messy",$cash -= $modCost]]
-		| [[Neat|Salon][$activeSlave.hStyle = "neat",$cash -= $modCost]]
-		| [[Permed|Salon][$activeSlave.hStyle = "permed",$cash -= $modCost]]
-		| [[Shaved sides|Salon][$activeSlave.hStyle = "strip",$cash -= $modCost]]
-		| [[Up|Salon][$activeSlave.hStyle = "up",$cash -= $modCost]]
+		[[Afro|Salon][$activeSlave.hStyle = "afro",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Braided|Salon][$activeSlave.hStyle = "braided",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Cornrows|Salon][$activeSlave.hStyle = "cornrows",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Curled|Salon][$activeSlave.hStyle = "curled",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Dreadlocks|Salon][$activeSlave.hStyle = "dreadlocks",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Eary|Salon][$activeSlave.hStyle = "eary",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[In a bun|Salon][$activeSlave.hStyle = "bun",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[In a messy bun|Salon][$activeSlave.hStyle = "messy bun",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[In a ponytail|Salon][$activeSlave.hStyle = "ponytail",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[In tails|Salon][$activeSlave.hStyle = "tails",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Luxurious|Salon][$activeSlave.hStyle = "luxurious",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Messy|Salon][$activeSlave.hStyle = "messy",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Neat|Salon][$activeSlave.hStyle = "neat",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Permed|Salon][$activeSlave.hStyle = "permed",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Shaved sides|Salon][$activeSlave.hStyle = "strip",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Up|Salon][$activeSlave.hStyle = "up",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 	<<else>>
 		//$His hair is too short to style meaningfully//
 	<</if>>
@@ -309,32 +309,32 @@
 	<<if $activeSlave.hLength > 1>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		Cut and style $his hair:
-		[[Shaved|Salon][$activeSlave.hStyle = "shaved",$activeSlave.hLength = 0,$cash -= $modCost]]
-		| [[Trimmed short|Salon][$activeSlave.hStyle = "trimmed",$activeSlave.hLength = 10,$cash -= $modCost]]
-		| [[Buzzcut|Salon][$activeSlave.hStyle = "buzzcut",$activeSlave.hLength = 1,$cash -= $modCost]]
+		[[Shaved|Salon][$activeSlave.hStyle = "shaved",$activeSlave.hLength = 0,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Trimmed short|Salon][$activeSlave.hStyle = "trimmed",$activeSlave.hLength = 10,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Buzzcut|Salon][$activeSlave.hStyle = "buzzcut",$activeSlave.hLength = 1,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 	<</if>>
 
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
 	Cut or lengthen $his hair:
 	<<if $activeSlave.hLength > 5>>
-		[[Very short|Salon][$activeSlave.hLength = 5,$cash -= $modCost]]
+		[[Very short|Salon][$activeSlave.hLength = 5,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 	<</if>>
 	<<if $activeSlave.hLength > 10>>
-		| [[Short|Salon][$activeSlave.hLength = 10,$cash -= $modCost]]
+		| [[Short|Salon][$activeSlave.hLength = 10,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 	<</if>>
 	<<if $activeSlave.hLength > 30>>
-		| [[Shoulder length|Salon][$activeSlave.hLength = 30,$cash -= $modCost]]
+		| [[Shoulder length|Salon][$activeSlave.hLength = 30,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 	<</if>>
 	<<if $activeSlave.hLength > 60>>
-		| [[Long|Salon][$activeSlave.hLength = 60,$cash -= $modCost]]
+		| [[Long|Salon][$activeSlave.hLength = 60,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 	<</if>>
 	<<if $activeSlave.hLength > 100>>
-		| [[Very long|Salon][$activeSlave.hLength = 100,$cash -= $modCost]]
+		| [[Very long|Salon][$activeSlave.hLength = 100,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 	<</if>>
 	<<if $activeSlave.hLength == 1>>
-		| [[Apply hair growth stimulating treatment|Salon][$activeSlave.hLength = 1,$cash -= $modCost]]
+		| [[Apply hair growth stimulating treatment|Salon][$activeSlave.hLength = 1,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 	<<elseif $activeSlave.hLength < 150>>
-		| [[Apply extensions|Salon][$activeSlave.hLength += 10,$cash -= $modCost]]
+		| [[Apply extensions|Salon][$activeSlave.hLength += 10,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 	<</if>>
 		/*		FIXME: get this to work
 		| Custom length: <<textbox "_newHLength" _oldHLength "Salon">>
@@ -358,7 +358,7 @@
 	<<else>>
 		$His current wig is $activeSlave.hColor.
 		<<if $activeSlave.hStyle != "bald">>
-			[[Remove wig|Salon][$activeSlave.hStyle = "bald",$activeSlave.hLength = 0,$cash -= $modCost]] or //choose a new one://
+			[[Remove wig|Salon][$activeSlave.hStyle = "bald",$activeSlave.hLength = 0,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]] or //choose a new one://
 		<<else>>
 			//Choose a wig color://
 		<</if>>
@@ -415,7 +415,7 @@
 
 		<<if $primaryHairColor != 0>>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
-			[[Change|Salon][$activeSlave.hColor = ($primaryHairColor + $secondaryHairColor),$cash -= $modCost, $primaryHairColor = 0, $secondaryHairColor = ""]] $his wig color to $primaryHairColor $secondaryHairColor
+			[[Change|Salon][$activeSlave.hColor = ($primaryHairColor + $secondaryHairColor),cashX(forceNeg($modCost), "slaveMod", $activeSlave), $primaryHairColor = 0, $secondaryHairColor = ""]] $his wig color to $primaryHairColor $secondaryHairColor
 		<</if>>
 	<</if>>
 
@@ -429,12 +429,12 @@
 
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		Set wig length to:
-		<<if $activeSlave.hLength != 10>>[[lengthToEitherUnit(10)|Salon][$activeSlave.hLength = 10,$cash -= $modCost]]<</if>>
-		<<if $activeSlave.hLength != 30>>[[lengthToEitherUnit(30)|Salon][$activeSlave.hLength = 30,$cash -= $modCost]]<</if>>
-		<<if $activeSlave.hLength != 60>>[[lengthToEitherUnit(60)|Salon][$activeSlave.hLength = 60,$cash -= $modCost]]<</if>>
-		<<if $activeSlave.hLength != 90>>[[lengthToEitherUnit(90)|Salon][$activeSlave.hLength = 90,$cash -= $modCost]]<</if>>
-		<<if $activeSlave.hLength != 120>>[[lengthToEitherUnit(120)|Salon][$activeSlave.hLength = 120,$cash -= $modCost]]<</if>>
-		<<if $activeSlave.hLength != 150>>[[lengthToEitherUnit(150)|Salon][$activeSlave.hLength = 150,$cash -= $modCost]]<</if>>
+		<<if $activeSlave.hLength != 10>>[[lengthToEitherUnit(10)|Salon][$activeSlave.hLength = 10,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]<</if>>
+		<<if $activeSlave.hLength != 30>>[[lengthToEitherUnit(30)|Salon][$activeSlave.hLength = 30,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]<</if>>
+		<<if $activeSlave.hLength != 60>>[[lengthToEitherUnit(60)|Salon][$activeSlave.hLength = 60,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]<</if>>
+		<<if $activeSlave.hLength != 90>>[[lengthToEitherUnit(90)|Salon][$activeSlave.hLength = 90,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]<</if>>
+		<<if $activeSlave.hLength != 120>>[[lengthToEitherUnit(120)|Salon][$activeSlave.hLength = 120,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]<</if>>
+		<<if $activeSlave.hLength != 150>>[[lengthToEitherUnit(150)|Salon][$activeSlave.hLength = 150,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]<</if>>
 	<<else>>
 		$He is not wearing a wig.
 	<</if>>
@@ -444,22 +444,22 @@
 	<<else>>
 		Give $him a wig:
 	<</if>>
-	[[Afro|Salon][$activeSlave.hStyle = "afro",$cash -= $modCost]]
-	| [[Braided|Salon][$activeSlave.hStyle = "braided",$cash -= $modCost]]
-	| [[Cornrows|Salon][$activeSlave.hStyle = "cornrows",$cash -= $modCost]]
-	| [[Curled|Salon][$activeSlave.hStyle = "curled",$cash -= $modCost]]
-	| [[Dreadlocks|Salon][$activeSlave.hStyle = "dreadlocks",$cash -= $modCost]]
-	| [[Eary|Salon][$activeSlave.hStyle = "eary",$cash -= $modCost]]
-	| [[In a bun|Salon][$activeSlave.hStyle = "bun",$cash -= $modCost]]
-	| [[In a messy bun|Salon][$activeSlave.hStyle = "messy bun",$cash -= $modCost]]
-	| [[In a ponytail|Salon][$activeSlave.hStyle = "ponytail",$cash -= $modCost]]
-	| [[In tails|Salon][$activeSlave.hStyle = "tails",$cash -= $modCost]]
-	| [[Luxurious|Salon][$activeSlave.hStyle = "luxurious",$cash -= $modCost]]
-	| [[Messy|Salon][$activeSlave.hStyle = "messy",$cash -= $modCost]]
-	| [[Neat|Salon][$activeSlave.hStyle = "neat",$cash -= $modCost]]
-	| [[Permed|Salon][$activeSlave.hStyle = "permed",$cash -= $modCost]]
-	| [[Shaved sides|Salon][$activeSlave.hStyle = "strip",$cash -= $modCost]]
-	| [[Up|Salon][$activeSlave.hStyle = "up",$cash -= $modCost]]
+	[[Afro|Salon][$activeSlave.hStyle = "afro",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+	| [[Braided|Salon][$activeSlave.hStyle = "braided",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+	| [[Cornrows|Salon][$activeSlave.hStyle = "cornrows",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+	| [[Curled|Salon][$activeSlave.hStyle = "curled",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+	| [[Dreadlocks|Salon][$activeSlave.hStyle = "dreadlocks",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+	| [[Eary|Salon][$activeSlave.hStyle = "eary",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+	| [[In a bun|Salon][$activeSlave.hStyle = "bun",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+	| [[In a messy bun|Salon][$activeSlave.hStyle = "messy bun",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+	| [[In a ponytail|Salon][$activeSlave.hStyle = "ponytail",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+	| [[In tails|Salon][$activeSlave.hStyle = "tails",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+	| [[Luxurious|Salon][$activeSlave.hStyle = "luxurious",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+	| [[Messy|Salon][$activeSlave.hStyle = "messy",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+	| [[Neat|Salon][$activeSlave.hStyle = "neat",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+	| [[Permed|Salon][$activeSlave.hStyle = "permed",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+	| [[Shaved sides|Salon][$activeSlave.hStyle = "strip",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+	| [[Up|Salon][$activeSlave.hStyle = "up",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 <</if>>
 
 /* MAKEUP */
@@ -467,21 +467,21 @@
 <br><br>
 <<makeupDescription>>
 <<if $activeSlave.makeup > 0>>
-	[[Remove|Salon][$activeSlave.makeup = 0,$cash -= $modCost]]
+	[[Remove|Salon][$activeSlave.makeup = 0,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 <</if>>
 <br>&nbsp;&nbsp;&nbsp;&nbsp;
 
 Apply makeup:
-[[Nice|Salon][$activeSlave.makeup = 1,$cash -= $modCost]]
-| [[Gorgeous|Salon][$activeSlave.makeup = 2,$cash -= $modCost]]
-| [[Slutty|Salon][$activeSlave.makeup = 4,$cash -= $modCost]]
-| [[Color-coordinate with hair|Salon][$activeSlave.makeup = 3,$cash -= $modCost]]
+[[Nice|Salon][$activeSlave.makeup = 1,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+| [[Gorgeous|Salon][$activeSlave.makeup = 2,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+| [[Slutty|Salon][$activeSlave.makeup = 4,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+| [[Color-coordinate with hair|Salon][$activeSlave.makeup = 3,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-[[Neon|Salon][$activeSlave.makeup = 5,$cash -= $modCost]]
-| [[Neon, color-coordinate with hair|Salon][$activeSlave.makeup = 6,$cash -= $modCost]]
+[[Neon|Salon][$activeSlave.makeup = 5,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+| [[Neon, color-coordinate with hair|Salon][$activeSlave.makeup = 6,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-[[Metallic|Salon][$activeSlave.makeup = 7,$cash -= $modCost]]
-| [[Metallic, color-coordinate with hair|Salon][$activeSlave.makeup = 8,$cash -= $modCost]]
+[[Metallic|Salon][$activeSlave.makeup = 7,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+| [[Metallic, color-coordinate with hair|Salon][$activeSlave.makeup = 8,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 
 /* NAILS */
 
@@ -491,18 +491,18 @@ Apply makeup:
 <<if $activeSlave.amp != 1>>
 <br>&nbsp;&nbsp;&nbsp;&nbsp;
 Treat nails:
-[[Clip|Salon][$activeSlave.nails = 0,$cash -= $modCost]]
-| [[Extend|Salon][$activeSlave.nails = 1,$cash -= $modCost]]
-| [[Sharp, claw-like|Salon][$activeSlave.nails = 3,$cash -= $modCost]]
-| [[Bright, glittery|Salon][$activeSlave.nails = 4,$cash -= $modCost]]
-| [[Streetwalker-style|Salon][$activeSlave.nails = 5,$cash -= $modCost]]
-| [[Color-coordinate with hair|Salon][$activeSlave.nails = 2,$cash -= $modCost]]
+[[Clip|Salon][$activeSlave.nails = 0,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+| [[Extend|Salon][$activeSlave.nails = 1,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+| [[Sharp, claw-like|Salon][$activeSlave.nails = 3,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+| [[Bright, glittery|Salon][$activeSlave.nails = 4,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+| [[Streetwalker-style|Salon][$activeSlave.nails = 5,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+| [[Color-coordinate with hair|Salon][$activeSlave.nails = 2,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-[[Neon|Salon][$activeSlave.nails = 6,$cash -= $modCost]]
-| [[Neon, color-coordinate with hair|Salon][$activeSlave.nails = 7,$cash -= $modCost]]
+[[Neon|Salon][$activeSlave.nails = 6,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+| [[Neon, color-coordinate with hair|Salon][$activeSlave.nails = 7,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-[[Metallic|Salon][$activeSlave.nails = 8,$cash -= $modCost]]
-| [[Metallic, color-coordinate with hair|Salon][$activeSlave.nails = 9,$cash -= $modCost]]
+[[Metallic|Salon][$activeSlave.nails = 8,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+| [[Metallic, color-coordinate with hair|Salon][$activeSlave.nails = 9,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 <</if>>
 
 /* SKIN */
@@ -517,7 +517,7 @@ Treat nails:
 $His skin is $activeSlave.skin.
 
 <<if ($dyedSkin.indexOf($activeSlave.skin) != -1)>>
-	[[Remove coloring|Salon][$activeSlave.skin = $activeSlave.origSkin,$cash -= $modCost]]
+	[[Remove coloring|Salon][$activeSlave.skin = $activeSlave.origSkin,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 <</if>>
 
 <<if ($dyedSkin.indexOf($activeSlave.skin) == -1)>>
@@ -526,35 +526,35 @@ $His skin is $activeSlave.skin.
 	<<set _needsSpacers = 0>>
 	<<if ($bleachableSkin.indexOf($activeSlave.skin) != -1)>>
 		<<if _needsSpacers == 1>> | <</if>>
-		[[Bleach|Salon][$activeSlave.skin = "pale",$cash -= $modCost]]
+		[[Bleach|Salon][$activeSlave.skin = "pale",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 		<<set _needsSpacers = 1>>
 	<</if>>
 	<<if ($lightenableSkin.indexOf($activeSlave.skin) != -1)>>
 		<<if _needsSpacers == 1>> | <</if>>
-		[[Lighten|Salon][$activeSlave.skin = "lightened",$cash -= $modCost]]
+		[[Lighten|Salon][$activeSlave.skin = "lightened",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 		<<set _needsSpacers = 1>>
 	<</if>>
 	<<if ($tannableSkin.indexOf($activeSlave.skin) != -1)>>
 		<<if _needsSpacers == 1>> | <</if>>
-		[[Tan|Salon][$activeSlave.skin = "tanned",$cash -= $modCost]]
+		[[Tan|Salon][$activeSlave.skin = "tanned",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 		<<set _needsSpacers = 1>>
 	<</if>>
 	<<if ($darkenableSkin.indexOf($activeSlave.skin) != -1)>>
 		<<if _needsSpacers == 1>> | <</if>>
-		[[Darken|Salon][$activeSlave.skin = "dark",$cash -= $modCost]]
+		[[Darken|Salon][$activeSlave.skin = "dark",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 		<<set _needsSpacers = 1>>
 	<</if>>
 <</if>>
 
 <br>&nbsp;&nbsp;&nbsp;&nbsp;
 Dye or paint:
-[[Blue|Salon][$activeSlave.skin = "dyed blue",$cash -= $modCost]]
-| [[Camouflage|Salon][$activeSlave.skin = "camouflage patterned",$cash -= $modCost]]
-| [[Gray|Salon][$activeSlave.skin = "dyed gray",$cash -= $modCost]]
-| [[Green|Salon][$activeSlave.skin = "dyed green",$cash -= $modCost]]
-| [[Pink|Salon][$activeSlave.skin = "dyed pink",$cash -= $modCost]]
-| [[Red|Salon][$activeSlave.skin = "dyed red",$cash -= $modCost]]
-| [[Tiger Stripes|Salon][$activeSlave.skin = "tiger striped",$cash -= $modCost]]
+[[Blue|Salon][$activeSlave.skin = "dyed blue",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+| [[Camouflage|Salon][$activeSlave.skin = "camouflage patterned",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+| [[Gray|Salon][$activeSlave.skin = "dyed gray",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+| [[Green|Salon][$activeSlave.skin = "dyed green",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+| [[Pink|Salon][$activeSlave.skin = "dyed pink",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+| [[Red|Salon][$activeSlave.skin = "dyed red",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+| [[Tiger Stripes|Salon][$activeSlave.skin = "tiger striped",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 
 /* MARKS */
 
@@ -568,7 +568,7 @@ Dye or paint:
 	<<else>>
 		qualifies as a beauty mark since $he's pretty, having no significant impact on $his beauty.
 	<</if>>
-	[[Remove it|Salon][$activeSlave.markings = "none",$cash -= $modCost]]
+	[[Remove it|Salon][$activeSlave.markings = "none",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 <</if>>
 <<if ($activeSlave.markings == "birthmark")>>
 	<br><br>
@@ -578,7 +578,7 @@ Dye or paint:
 	<<else>>
 		detracts from $his attractiveness.
 	<</if>>
-	[[Bleach it|Salon][$activeSlave.markings = "none",$cash -= $modCost]]
+	[[Bleach it|Salon][$activeSlave.markings = "none",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 <</if>>
 
 
@@ -593,67 +593,67 @@ Dye or paint:
 		are $activeSlave.eyebrowHColor.
 	<</if>>
 	<<if $activeSlave.eyebrowHColor != $activeSlave.hColor>>
-		[[Match the hair?|Salon][$activeSlave.eyebrowHColor = $activeSlave.hColor,$cash -= $modCost]]
+		[[Match the hair?|Salon][$activeSlave.eyebrowHColor = $activeSlave.hColor,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 	<</if>>
 
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
 	Dye $his eyebrow hair:
-		[[Auburn|Salon][$activeSlave.eyebrowHColor = "auburn",$cash -= $modCost]]
-		| [[Black|Salon][$activeSlave.eyebrowHColor = "black",$cash -= $modCost]]
-		| [[Blazing Red|Salon][$activeSlave.eyebrowHColor = "blazing red",$cash -= $modCost]]
-		| [[Blonde|Salon][$activeSlave.eyebrowHColor = "blonde",$cash -= $modCost]]
-		| [[Blue-Violet|Salon][$activeSlave.eyebrowHColor = "blue-violet",$cash -= $modCost]]
-		| [[Blue|Salon][$activeSlave.eyebrowHColor = "blue",$cash -= $modCost]]
-		| [[Brown|Salon][$activeSlave.eyebrowHColor = "brown",$cash -= $modCost]]
-		| [[Burgundy|Salon][$activeSlave.eyebrowHColor = "burgundy",$cash -= $modCost]]
-		| [[Chestnut|Salon][$activeSlave.eyebrowHColor = "chestnut",$cash -= $modCost]]
-		| [[Chocolate|Salon][$activeSlave.eyebrowHColor = "chocolate brown",$cash -= $modCost]]
-		| [[Copper|Salon][$activeSlave.eyebrowHColor = "copper",$cash -= $modCost]]
-		| [[Dark Blue|Salon][$activeSlave.eyebrowHColor = "dark blue",$cash -= $modCost]]
-		| [[Dark Brown|Salon][$activeSlave.eyebrowHColor = "dark brown",$cash -= $modCost]]
-		| [[Dark Orchid|Salon][$activeSlave.eyebrowHColor = "dark orchid",$cash -= $modCost]]
+		[[Auburn|Salon][$activeSlave.eyebrowHColor = "auburn",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Black|Salon][$activeSlave.eyebrowHColor = "black",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Blazing Red|Salon][$activeSlave.eyebrowHColor = "blazing red",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Blonde|Salon][$activeSlave.eyebrowHColor = "blonde",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Blue-Violet|Salon][$activeSlave.eyebrowHColor = "blue-violet",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Blue|Salon][$activeSlave.eyebrowHColor = "blue",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Brown|Salon][$activeSlave.eyebrowHColor = "brown",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Burgundy|Salon][$activeSlave.eyebrowHColor = "burgundy",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Chestnut|Salon][$activeSlave.eyebrowHColor = "chestnut",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Chocolate|Salon][$activeSlave.eyebrowHColor = "chocolate brown",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Copper|Salon][$activeSlave.eyebrowHColor = "copper",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Dark Blue|Salon][$activeSlave.eyebrowHColor = "dark blue",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Dark Brown|Salon][$activeSlave.eyebrowHColor = "dark brown",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Dark Orchid|Salon][$activeSlave.eyebrowHColor = "dark orchid",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 		| [[Deep Red|Salon][$primaryHairColor = "deep red"]]
-		| [[Ginger|Salon][$activeSlave.eyebrowHColor = "ginger",$cash -= $modCost]]
-		| [[Golden|Salon][$activeSlave.eyebrowHColor = "golden",$cash -= $modCost]]
-		| [[Green-yellow|Salon][$activeSlave.eyebrowHColor = "green-yellow",$cash -= $modCost]]
-		| [[Green|Salon][$activeSlave.eyebrowHColor = "green",$cash -= $modCost]]
-		| [[Grey|Salon][$activeSlave.eyebrowHColor = "grey",$cash -= $modCost]]
-		| [[Hazel|Salon][$activeSlave.eyebrowHColor = "hazel",$cash -= $modCost]]
-		| [[Jet Black|Salon][$activeSlave.eyebrowHColor = "jet black",$cash -= $modCost]]
-		| [[Neon Blue|Salon][$activeSlave.eyebrowHColor = "neon blue",$cash -= $modCost]]
-		| [[Neon Green|Salon][$activeSlave.eyebrowHColor = "neon green",$cash -= $modCost]]
-		| [[Neon Pink|Salon][$activeSlave.eyebrowHColor = "neon pink",$cash -= $modCost]]
-		| [[Pink|Salon][$activeSlave.eyebrowHColor = "pink",$cash -= $modCost]]
-		| [[Platinum Blonde|Salon][$activeSlave.eyebrowHColor = "platinum blonde",$cash -= $modCost]]
-		| [[Purple|Salon][$activeSlave.eyebrowHColor = "purple",$cash -= $modCost]]
-		| [[Red|Salon][$activeSlave.eyebrowHColor = "red",$cash -= $modCost]]
-		| [[Sea Green|Salon][$activeSlave.eyebrowHColor = "sea green",$cash -= $modCost]]
-		| [[Silver|Salon][$activeSlave.eyebrowHColor = "silver",$cash -= $modCost]]
-		| [[Strawberry-Blonde|Salon][$activeSlave.eyebrowHColor = "strawberry-blonde",$cash -= $modCost]]
-		| [[White|Salon][$activeSlave.eyebrowHColor = "white",$cash -= $modCost]]
+		| [[Ginger|Salon][$activeSlave.eyebrowHColor = "ginger",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Golden|Salon][$activeSlave.eyebrowHColor = "golden",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Green-yellow|Salon][$activeSlave.eyebrowHColor = "green-yellow",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Green|Salon][$activeSlave.eyebrowHColor = "green",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Grey|Salon][$activeSlave.eyebrowHColor = "grey",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Hazel|Salon][$activeSlave.eyebrowHColor = "hazel",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Jet Black|Salon][$activeSlave.eyebrowHColor = "jet black",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Neon Blue|Salon][$activeSlave.eyebrowHColor = "neon blue",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Neon Green|Salon][$activeSlave.eyebrowHColor = "neon green",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Neon Pink|Salon][$activeSlave.eyebrowHColor = "neon pink",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Pink|Salon][$activeSlave.eyebrowHColor = "pink",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Platinum Blonde|Salon][$activeSlave.eyebrowHColor = "platinum blonde",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Purple|Salon][$activeSlave.eyebrowHColor = "purple",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Red|Salon][$activeSlave.eyebrowHColor = "red",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Sea Green|Salon][$activeSlave.eyebrowHColor = "sea green",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Silver|Salon][$activeSlave.eyebrowHColor = "silver",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Strawberry-Blonde|Salon][$activeSlave.eyebrowHColor = "strawberry-blonde",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[White|Salon][$activeSlave.eyebrowHColor = "white",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
 	Style $his eyebrow hair:
-		[[Natural|Salon][$activeSlave.eyebrowHStyle = "natural",$cash -= $modCost]]
-		| [[Curved|Salon][$activeSlave.eyebrowHStyle = "curved",$cash -= $modCost]]
-		| [[Elongated|Salon][$activeSlave.eyebrowHStyle = "elongated",$cash -= $modCost]]
-		| [[High-Arched|Salon][$activeSlave.eyebrowHStyle = "high-arched",$cash -= $modCost]]
-		| [[Rounded|Salon][$activeSlave.eyebrowHStyle = "rounded",$cash -= $modCost]]
-		| [[Shaved|Salon][$activeSlave.eyebrowHStyle = "shaved",$cash -= $modCost]]
-		| [[Shortened|Salon][$activeSlave.eyebrowHStyle = "shortened",$cash -= $modCost]]
-		| [[Slanted Inwards|Salon][$activeSlave.eyebrowHStyle = "slanted inwards",$cash -= $modCost]]
-		| [[Slanted Outwards|Salon][$activeSlave.eyebrowHStyle = "slanted outwards",$cash -= $modCost]]
-		| [[Straight|Salon][$activeSlave.eyebrowHStyle = "straight",$cash -= $modCost]]
+		[[Natural|Salon][$activeSlave.eyebrowHStyle = "natural",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Curved|Salon][$activeSlave.eyebrowHStyle = "curved",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Elongated|Salon][$activeSlave.eyebrowHStyle = "elongated",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[High-Arched|Salon][$activeSlave.eyebrowHStyle = "high-arched",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Rounded|Salon][$activeSlave.eyebrowHStyle = "rounded",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Shaved|Salon][$activeSlave.eyebrowHStyle = "shaved",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Shortened|Salon][$activeSlave.eyebrowHStyle = "shortened",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Slanted Inwards|Salon][$activeSlave.eyebrowHStyle = "slanted inwards",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Slanted Outwards|Salon][$activeSlave.eyebrowHStyle = "slanted outwards",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Straight|Salon][$activeSlave.eyebrowHStyle = "straight",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
 	Shape $his eyebrow hair:
-		[[Natural|Salon][$activeSlave.eyebrowFullness = "natural",$cash -= $modCost]]
-		| [[Bushy|Salon][$activeSlave.eyebrowFullness = "bushy",$cash -= $modCost]]
-		| [[Thick|Salon][$activeSlave.eyebrowFullness = "thick",$cash -= $modCost]]
-		| [[Tapered|Salon][$activeSlave.eyebrowFullness = "tapered",$cash -= $modCost]]
-		| [[Threaded|Salon][$activeSlave.eyebrowFullness = "threaded",$cash -= $modCost]]
-		| [[Thin|Salon][$activeSlave.eyebrowFullness = "thin",$cash -= $modCost]]
-		| [[Pencil-Thin|Salon][$activeSlave.eyebrowFullness = "pencil-thin",$cash -= $modCost]]
+		[[Natural|Salon][$activeSlave.eyebrowFullness = "natural",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Bushy|Salon][$activeSlave.eyebrowFullness = "bushy",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Thick|Salon][$activeSlave.eyebrowFullness = "thick",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Tapered|Salon][$activeSlave.eyebrowFullness = "tapered",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Threaded|Salon][$activeSlave.eyebrowFullness = "threaded",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Thin|Salon][$activeSlave.eyebrowFullness = "thin",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Pencil-Thin|Salon][$activeSlave.eyebrowFullness = "pencil-thin",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 <<else>>
 	<br><br>$His eyebrows are completely hairless.
 <</if>>
@@ -674,53 +674,53 @@ Dye or paint:
 		is $activeSlave.pubicHColor.
 	<</if>>
 	<<if $activeSlave.pubicHColor != $activeSlave.hColor>>
-		[[Match the curtains?|Salon][$activeSlave.pubicHColor = $activeSlave.hColor,$cash -= $modCost]]
+		[[Match the curtains?|Salon][$activeSlave.pubicHColor = $activeSlave.hColor,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 	<</if>>
 
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
 	Dye $his pubic hair:
-		[[Auburn|Salon][$activeSlave.pubicHColor = "auburn",$cash -= $modCost]]
-		| [[Black|Salon][$activeSlave.pubicHColor = "black",$cash -= $modCost]]
-		| [[Blazing Red|Salon][$activeSlave.pubicHColor = "blazing red",$cash -= $modCost]]
-		| [[Blonde|Salon][$activeSlave.pubicHColor = "blonde",$cash -= $modCost]]
-		| [[Blue-Violet|Salon][$activeSlave.pubicHColor = "blue-violet",$cash -= $modCost]]
-		| [[Blue|Salon][$activeSlave.pubicHColor = "blue",$cash -= $modCost]]
-		| [[Brown|Salon][$activeSlave.pubicHColor = "brown",$cash -= $modCost]]
-		| [[Burgundy|Salon][$activeSlave.pubicHColor = "burgundy",$cash -= $modCost]]
-		| [[Chestnut|Salon][$activeSlave.pubicHColor = "chestnut",$cash -= $modCost]]
-		| [[Chocolate|Salon][$activeSlave.pubicHColor = "chocolate brown",$cash -= $modCost]]
-		| [[Copper|Salon][$activeSlave.pubicHColor = "copper",$cash -= $modCost]]
-		| [[Dark Blue|Salon][$activeSlave.pubicHColor = "dark blue",$cash -= $modCost]]
-		| [[Dark Brown|Salon][$activeSlave.pubicHColor = "dark brown",$cash -= $modCost]]
-		| [[Dark Orchid|Salon][$activeSlave.pubicHColor = "dark orchid",$cash -= $modCost]]
+		[[Auburn|Salon][$activeSlave.pubicHColor = "auburn",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Black|Salon][$activeSlave.pubicHColor = "black",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Blazing Red|Salon][$activeSlave.pubicHColor = "blazing red",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Blonde|Salon][$activeSlave.pubicHColor = "blonde",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Blue-Violet|Salon][$activeSlave.pubicHColor = "blue-violet",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Blue|Salon][$activeSlave.pubicHColor = "blue",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Brown|Salon][$activeSlave.pubicHColor = "brown",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Burgundy|Salon][$activeSlave.pubicHColor = "burgundy",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Chestnut|Salon][$activeSlave.pubicHColor = "chestnut",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Chocolate|Salon][$activeSlave.pubicHColor = "chocolate brown",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Copper|Salon][$activeSlave.pubicHColor = "copper",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Dark Blue|Salon][$activeSlave.pubicHColor = "dark blue",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Dark Brown|Salon][$activeSlave.pubicHColor = "dark brown",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Dark Orchid|Salon][$activeSlave.pubicHColor = "dark orchid",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 		| [[Deep Red|Salon][$primaryHairColor = "deep red"]]
-		| [[Ginger|Salon][$activeSlave.pubicHColor = "ginger",$cash -= $modCost]]
-		| [[Golden|Salon][$activeSlave.pubicHColor = "golden",$cash -= $modCost]]
-		| [[Green-yellow|Salon][$activeSlave.pubicHColor = "green-yellow",$cash -= $modCost]]
-		| [[Green|Salon][$activeSlave.pubicHColor = "green",$cash -= $modCost]]
-		| [[Grey|Salon][$activeSlave.pubicHColor = "grey",$cash -= $modCost]]
-		| [[Hazel|Salon][$activeSlave.pubicHColor = "hazel",$cash -= $modCost]]
-		| [[Jet Black|Salon][$activeSlave.pubicHColor = "jet black",$cash -= $modCost]]
-		| [[Neon Blue|Salon][$activeSlave.pubicHColor = "neon blue",$cash -= $modCost]]
-		| [[Neon Green|Salon][$activeSlave.pubicHColor = "neon green",$cash -= $modCost]]
-		| [[Neon Pink|Salon][$activeSlave.pubicHColor = "neon pink",$cash -= $modCost]]
-		| [[Pink|Salon][$activeSlave.pubicHColor = "pink",$cash -= $modCost]]
-		| [[Platinum Blonde|Salon][$activeSlave.pubicHColor = "platinum blonde",$cash -= $modCost]]
-		| [[Purple|Salon][$activeSlave.pubicHColor = "purple",$cash -= $modCost]]
-		| [[Red|Salon][$activeSlave.pubicHColor = "red",$cash -= $modCost]]
-		| [[Sea Green|Salon][$activeSlave.pubicHColor = "sea green",$cash -= $modCost]]
-		| [[Silver|Salon][$activeSlave.pubicHColor = "silver",$cash -= $modCost]]
-		| [[Strawberry-Blonde|Salon][$activeSlave.pubicHColor = "strawberry-blonde",$cash -= $modCost]]
-		| [[White|Salon][$activeSlave.pubicHColor = "white",$cash -= $modCost]]
+		| [[Ginger|Salon][$activeSlave.pubicHColor = "ginger",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Golden|Salon][$activeSlave.pubicHColor = "golden",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Green-yellow|Salon][$activeSlave.pubicHColor = "green-yellow",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Green|Salon][$activeSlave.pubicHColor = "green",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Grey|Salon][$activeSlave.pubicHColor = "grey",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Hazel|Salon][$activeSlave.pubicHColor = "hazel",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Jet Black|Salon][$activeSlave.pubicHColor = "jet black",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Neon Blue|Salon][$activeSlave.pubicHColor = "neon blue",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Neon Green|Salon][$activeSlave.pubicHColor = "neon green",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Neon Pink|Salon][$activeSlave.pubicHColor = "neon pink",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Pink|Salon][$activeSlave.pubicHColor = "pink",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Platinum Blonde|Salon][$activeSlave.pubicHColor = "platinum blonde",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Purple|Salon][$activeSlave.pubicHColor = "purple",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Red|Salon][$activeSlave.pubicHColor = "red",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Sea Green|Salon][$activeSlave.pubicHColor = "sea green",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Silver|Salon][$activeSlave.pubicHColor = "silver",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Strawberry-Blonde|Salon][$activeSlave.pubicHColor = "strawberry-blonde",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[White|Salon][$activeSlave.pubicHColor = "white",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
 	Style $his pubic hair:
-		[[Waxed|Salon][$activeSlave.pubicHStyle = "waxed",$cash -= $modCost]]
-		| [[Landing strip|Salon][$activeSlave.pubicHStyle = "in a strip",$cash -= $modCost]]
-		| [[Neat|Salon][$activeSlave.pubicHStyle = "neat",$cash -= $modCost]]
-		| [[Bushy in the front|Salon][$activeSlave.pubicHStyle = "bushy in the front and neat in the rear",$cash -= $modCost]]
-		| [[Bushy|Salon][$activeSlave.pubicHStyle = "bushy",$cash -= $modCost]]
-		| [[Very Bushy|Salon][$activeSlave.pubicHStyle = "very bushy",$cash -= $modCost]]
+		[[Waxed|Salon][$activeSlave.pubicHStyle = "waxed",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Landing strip|Salon][$activeSlave.pubicHStyle = "in a strip",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Neat|Salon][$activeSlave.pubicHStyle = "neat",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Bushy in the front|Salon][$activeSlave.pubicHStyle = "bushy in the front and neat in the rear",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Bushy|Salon][$activeSlave.pubicHStyle = "bushy",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Very Bushy|Salon][$activeSlave.pubicHStyle = "very bushy",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 
 <<else>>
 	<br><br>$His groin is completely hairless.
@@ -737,51 +737,51 @@ Dye or paint:
 		is $activeSlave.underArmHColor.
 	<</if>>
 	<<if $activeSlave.underArmHColor != $activeSlave.hColor>>
-		[[Match the hair?|Salon][$activeSlave.underArmHColor = $activeSlave.hColor,$cash -= $modCost]]
+		[[Match the hair?|Salon][$activeSlave.underArmHColor = $activeSlave.hColor,cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 	<</if>>
 
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
 	Dye $his armpit hair:
-		[[Auburn|Salon][$activeSlave.underArmHColor = "auburn",$cash -= $modCost]]
-		| [[Black|Salon][$activeSlave.underArmHColor = "black",$cash -= $modCost]]
-		| [[Blazing Red|Salon][$activeSlave.underArmHColor = "blazing red",$cash -= $modCost]]
-		| [[Blonde|Salon][$activeSlave.underArmHColor = "blonde",$cash -= $modCost]]
-		| [[Blue-Violet|Salon][$activeSlave.underArmHColor = "blue-violet",$cash -= $modCost]]
-		| [[Blue|Salon][$activeSlave.underArmHColor = "blue",$cash -= $modCost]]
-		| [[Brown|Salon][$activeSlave.underArmHColor = "brown",$cash -= $modCost]]
-		| [[Burgundy|Salon][$activeSlave.underArmHColor = "burgundy",$cash -= $modCost]]
-		| [[Chestnut|Salon][$activeSlave.underArmHColor = "chestnut",$cash -= $modCost]]
-		| [[Chocolate|Salon][$activeSlave.underArmHColor = "chocolate brown",$cash -= $modCost]]
-		| [[Copper|Salon][$activeSlave.underArmHColor = "copper",$cash -= $modCost]]
-		| [[Dark Blue|Salon][$activeSlave.underArmHColor = "dark blue",$cash -= $modCost]]
-		| [[Dark Brown|Salon][$activeSlave.underArmHColor = "dark brown",$cash -= $modCost]]
-		| [[Dark Orchid|Salon][$activeSlave.underArmHColor = "dark orchid",$cash -= $modCost]]
+		[[Auburn|Salon][$activeSlave.underArmHColor = "auburn",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Black|Salon][$activeSlave.underArmHColor = "black",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Blazing Red|Salon][$activeSlave.underArmHColor = "blazing red",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Blonde|Salon][$activeSlave.underArmHColor = "blonde",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Blue-Violet|Salon][$activeSlave.underArmHColor = "blue-violet",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Blue|Salon][$activeSlave.underArmHColor = "blue",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Brown|Salon][$activeSlave.underArmHColor = "brown",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Burgundy|Salon][$activeSlave.underArmHColor = "burgundy",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Chestnut|Salon][$activeSlave.underArmHColor = "chestnut",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Chocolate|Salon][$activeSlave.underArmHColor = "chocolate brown",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Copper|Salon][$activeSlave.underArmHColor = "copper",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Dark Blue|Salon][$activeSlave.underArmHColor = "dark blue",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Dark Brown|Salon][$activeSlave.underArmHColor = "dark brown",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Dark Orchid|Salon][$activeSlave.underArmHColor = "dark orchid",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 		| [[Deep Red|Salon][$primaryHairColor = "deep red"]]
-		| [[Ginger|Salon][$activeSlave.underArmHColor = "ginger",$cash -= $modCost]]
-		| [[Golden|Salon][$activeSlave.underArmHColor = "golden",$cash -= $modCost]]
-		| [[Green-yellow|Salon][$activeSlave.underArmHColor = "green-yellow",$cash -= $modCost]]
-		| [[Green|Salon][$activeSlave.underArmHColor = "green",$cash -= $modCost]]
-		| [[Grey|Salon][$activeSlave.underArmHColor = "grey",$cash -= $modCost]]
-		| [[Hazel|Salon][$activeSlave.underArmHColor = "hazel",$cash -= $modCost]]
-		| [[Jet Black|Salon][$activeSlave.underArmHColor = "jet black",$cash -= $modCost]]
-		| [[Neon Blue|Salon][$activeSlave.underArmHColor = "neon blue",$cash -= $modCost]]
-		| [[Neon Green|Salon][$activeSlave.underArmHColor = "neon green",$cash -= $modCost]]
-		| [[Neon Pink|Salon][$activeSlave.underArmHColor = "neon pink",$cash -= $modCost]]
-		| [[Pink|Salon][$activeSlave.underArmHColor = "pink",$cash -= $modCost]]
-		| [[Platinum Blonde|Salon][$activeSlave.underArmHColor = "platinum blonde",$cash -= $modCost]]
-		| [[Purple|Salon][$activeSlave.underArmHColor = "purple",$cash -= $modCost]]
-		| [[Red|Salon][$activeSlave.underArmHColor = "red",$cash -= $modCost]]
-		| [[Sea Green|Salon][$activeSlave.underArmHColor = "sea green",$cash -= $modCost]]
-		| [[Silver|Salon][$activeSlave.underArmHColor = "silver",$cash -= $modCost]]
-		| [[Strawberry-Blonde|Salon][$activeSlave.underArmHColor = "strawberry-blonde",$cash -= $modCost]]
-		| [[White|Salon][$activeSlave.underArmHColor = "white",$cash -= $modCost]]
+		| [[Ginger|Salon][$activeSlave.underArmHColor = "ginger",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Golden|Salon][$activeSlave.underArmHColor = "golden",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Green-yellow|Salon][$activeSlave.underArmHColor = "green-yellow",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Green|Salon][$activeSlave.underArmHColor = "green",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Grey|Salon][$activeSlave.underArmHColor = "grey",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Hazel|Salon][$activeSlave.underArmHColor = "hazel",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Jet Black|Salon][$activeSlave.underArmHColor = "jet black",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Neon Blue|Salon][$activeSlave.underArmHColor = "neon blue",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Neon Green|Salon][$activeSlave.underArmHColor = "neon green",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Neon Pink|Salon][$activeSlave.underArmHColor = "neon pink",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Pink|Salon][$activeSlave.underArmHColor = "pink",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Platinum Blonde|Salon][$activeSlave.underArmHColor = "platinum blonde",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Purple|Salon][$activeSlave.underArmHColor = "purple",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Red|Salon][$activeSlave.underArmHColor = "red",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Sea Green|Salon][$activeSlave.underArmHColor = "sea green",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Silver|Salon][$activeSlave.underArmHColor = "silver",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Strawberry-Blonde|Salon][$activeSlave.underArmHColor = "strawberry-blonde",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[White|Salon][$activeSlave.underArmHColor = "white",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
 	Style $his armpit hair:
-		[[Waxed|Salon][$activeSlave.underArmHStyle = "waxed",$cash -= $modCost]]
-		| [[Shaved|Salon][$activeSlave.underArmHStyle = "shaved",$cash -= $modCost]]
-		| [[Neat|Salon][$activeSlave.underArmHStyle = "neat",$cash -= $modCost]]
-		| [[Bushy|Salon][$activeSlave.underArmHStyle = "bushy",$cash -= $modCost]]
+		[[Waxed|Salon][$activeSlave.underArmHStyle = "waxed",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Shaved|Salon][$activeSlave.underArmHStyle = "shaved",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Neat|Salon][$activeSlave.underArmHStyle = "neat",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
+		| [[Bushy|Salon][$activeSlave.underArmHStyle = "bushy",cashX(forceNeg($modCost), "slaveMod", $activeSlave)]]
 
 <<else>>
 	<br><br>$His underarms are completely hairless.
diff --git a/src/uncategorized/scheduledEvent.tw b/src/uncategorized/scheduledEvent.tw
index 470d9c8e7f6151ae8b62f30160556b35a4eb8e8a..2263f8220c34c10675367c285fe1854ed4293102 100644
--- a/src/uncategorized/scheduledEvent.tw
+++ b/src/uncategorized/scheduledEvent.tw
@@ -132,7 +132,8 @@
 	<</if>>
 	<</for>>
 	<<if _wedding == 0>>
-		<<set $weddingPlanned = 0, $cash += 10000>>
+		<<set $weddingPlanned = 0>>
+		<<run cashX(10000, "event")>>
 		<<goto "Scheduled Event">>
 	<</if>>
 <<elseif $playerBred == 1 && ($PC.preg == 0 || $PC.preg == -1) && $PC.pregWeek == 0 && $PC.vagina == 1>>
diff --git a/src/uncategorized/schoolroom.tw b/src/uncategorized/schoolroom.tw
index a7945d0d8911f930af2dc9a2583146f8c27da546..a453f649db749ee8645033e44fd7c4aa67a965f1 100644
--- a/src/uncategorized/schoolroom.tw
+++ b/src/uncategorized/schoolroom.tw
@@ -90,14 +90,14 @@ $schoolroomNameCaps is well-equipped, with wallscreens to display lessons. These
 
 <<set _Tmult0 = Math.trunc($schoolroom*1000*$upgradeMultiplierArcology)>>
 <br>$schoolroomNameCaps has room to house $schoolroom slaves while they learn. Currently $schoolroomSlaves <<if $schoolroomSlaves == 1>>is<<else>>are<</if>> learning.
-[[Expand the schoolroom|Schoolroom][$cash -= _Tmult0, $schoolroom += 5, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>>//
+[[Expand the schoolroom|Schoolroom][cashX(forceNeg(_Tmult0), "capEx"), $schoolroom += 5, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>>//
 
 <br>
 <<if $schoolroomUpgradeSkills == 1>>
 	$schoolroomNameCaps provides slaves with some intermediate skills, including a solid foundation in sex, efficient and safe prostitution, and the rudiments of courtesanship.
 <<else>>
 	<<set _Tmult1 = Math.trunc(10000*$upgradeMultiplierArcology)>>
-	$schoolroomNameCaps inculcates the basic skills necessary to a sex slave. [[Upgrade the curriculum to cover some intermediate skills|Schoolroom][$cash -= _Tmult1, $schoolroomUpgradeSkills = 1]] //Costs <<print cashFormat(_Tmult1)>>//
+	$schoolroomNameCaps inculcates the basic skills necessary to a sex slave. [[Upgrade the curriculum to cover some intermediate skills|Schoolroom][cashX(forceNeg(_Tmult1), "capEx"), $schoolroomUpgradeSkills = 1]] //Costs <<print cashFormat(_Tmult1)>>//
 <</if>>
 
 <br>
@@ -105,14 +105,14 @@ $schoolroomNameCaps is well-equipped, with wallscreens to display lessons. These
 <<if $schoolroomUpgradeLanguage == 1>>
 	$schoolroomNameCaps boasts state of the art linguistic interfaces that allow it to teach the basics of the arcology's lingua franca with increased success.
 <<else>>
-	$schoolroomNameCaps includes only basic language classes in its curriculum. [[Install advanced linguistic interfaces to efficiently teach the arcology's lingua franca|Schoolroom][$cash -= _Tmult2, $schoolroomUpgradeLanguage = 1]] //Costs <<print cashFormat(_Tmult2)>>//
+	$schoolroomNameCaps includes only basic language classes in its curriculum. [[Install advanced linguistic interfaces to efficiently teach the arcology's lingua franca|Schoolroom][cashX(forceNeg(_Tmult2), "capEx"), $schoolroomUpgradeLanguage = 1]] //Costs <<print cashFormat(_Tmult2)>>//
 <</if>>
 
 <br>
 <<if $schoolroomUpgradeRemedial == 1>>
 	$schoolroomNameCaps has been upgraded with advanced teaching tools to help even the stupidest slave learn at an acceptable pace. Intelligent slaves won't learn much faster as a result, but idiots will benefit a great deal.
 <<else>>
-	$schoolroomNameCaps teaches idiots using standard methods. [[Purchase specialized materials to help stupid slaves learn good|Schoolroom][$cash -= _Tmult2, $schoolroomUpgradeRemedial = 1]] //Costs <<print cashFormat(_Tmult2)>>//
+	$schoolroomNameCaps teaches idiots using standard methods. [[Purchase specialized materials to help stupid slaves learn good|Schoolroom][cashX(forceNeg(_Tmult2), "capEx"), $schoolroomUpgradeRemedial = 1]] //Costs <<print cashFormat(_Tmult2)>>//
 <</if>>
 
 <br><br>
diff --git a/src/uncategorized/schoolroomReport.tw b/src/uncategorized/schoolroomReport.tw
index ce83005d1a9c1754b2b7bbfb20c552a7e6738c34..5186a4d76fc207eddc1e26847ad273f85f61b62c 100644
--- a/src/uncategorized/schoolroomReport.tw
+++ b/src/uncategorized/schoolroomReport.tw
@@ -95,7 +95,7 @@
 	<</for>>
 	<<if (_DL < $schoolroom)>>
 		<<set _seed = random(1,10)+(($schoolroom-_DL)*(random(150,170)+(_idleBonus*10)))>>
-		<<set $cash += _seed>>
+		<<run cashX(_seed, "school", $Schoolteacher)>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;Since she doesn't have enough students to occupy all of her time, $schoolroomName takes in citizens' slaves on a contract basis and she teaches them too, earning @@.yellowgreen;<<print cashFormat(_seed)>>.@@
 	<</if>>
 	<<if (_DL > 0)>><br><br><</if>>
diff --git a/src/uncategorized/seCustomSlaveDelivery.tw b/src/uncategorized/seCustomSlaveDelivery.tw
index b79ff54c1f10dd6b8c459065ea429d068fdd6849..799d85d07fcd9960d60990abc4d44e88177e1c53 100644
--- a/src/uncategorized/seCustomSlaveDelivery.tw
+++ b/src/uncategorized/seCustomSlaveDelivery.tw
@@ -225,7 +225,7 @@ $His price is <<print cashFormat($slaveCost)>>.
 <span id="result">
 <<if $cash >= $slaveCost>>
 	<<link "Accept the offered slave">>
-		<<set $cash -= $slaveCost>>
+		<<run cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave)>>
 		<<replace "#result">>
 			$He has been reasonably broken by the dealer that offered $him to you. $He has also picked up on the fact that $he was specially selected, and is a little hopeful that this means $he may be treated well. $He is now awaiting your instructions.
 			<<include "New Slave Intro">>
diff --git a/src/uncategorized/seExpiration.tw b/src/uncategorized/seExpiration.tw
index 96092a885197f13834a69b633ab272b85fdd1868..4186a681c36f6772eb81b576bcd3dca6ac1e33ae 100644
--- a/src/uncategorized/seExpiration.tw
+++ b/src/uncategorized/seExpiration.tw
@@ -36,7 +36,7 @@ $activeSlave.slaveName's indentured servitude is ending this week, meaning that
 		<<link "Plead necessity and reactivate $his indenture">>
 			<<replace "#result">>
 				You plead necessity and place $him under another indenture, paying the trivial fees left over once $he has been charged for $his own forecasted upkeep. Naturally, $he offers no response at all to any of this.
-				<<set $cash -= 1000>>
+				<<run cashX(-1000, "event", $activeSlave)>>
 				<<set $lowerClass -= 1>>
 				<<set $expired = 0, $expiree = 0>>
 				<<for $i = 0; $i < $slaves.length; $i++>>
@@ -72,7 +72,7 @@ $activeSlave.slaveName's indentured servitude is ending this week, meaning that
 			<<replace "#result">>
 				$He's beside $himself with joy when you accept $his plea and enslave $him. $He's given you the finest proof of loyalty a slave possibly can, having tasted a moment of freedom under the law, and thrown it away with utter contempt. $His $activeSlave.eyeColor eyes <<if canSee($activeSlave)>>watch you<<else>>are wide<</if>> with eager anticipation, radiating gladness that the prospect of separation from you has gone.
 				<<set $activeSlave.indenture = -1, $activeSlave.indentureRestrictions = 0>>
-				<<set $cash -= 1000>>
+				<<run cashX(-1000, "event", $activeSlave)>>
 				<<set $lowerClass -= 1>>
 				<<set $expired = 0, $expiree = 0>>
 				<<for $i = 0; $i < $slaves.length; $i++>>
@@ -111,7 +111,7 @@ $activeSlave.slaveName's indentured servitude is ending this week, meaning that
 		<<link "Offer $him a one year supplementary indenture">>
 			<<replace "#result">>
 				$He smiles almost shyly when you offer $him a one year supplementary indenture. The price is reasonable, but definitely favorable to you. $He accepts it anyway, and you transfer the money into an escrow account to be held for $him until $his new indenture is done. Your sex slave once again, $he awaits your pleasure without a hint of fear.
-				<<set $cash -= $slaveCost>>
+				<<run cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave)>>
 				<<set $lowerClass -= 1>>
 				<<set $expired = 0>><<set $expiree = 0>>
 				<<for $i = 0; $i < $slaves.length; $i++>>
@@ -142,7 +142,7 @@ at the moment of $his scheduled emancipation, $he seems willing to consider a sh
 	<<link "Offer $him a one year supplementary indenture">>
 		<<replace "#result">>
 			$He looks pensive when you offer $him a one year supplementary indenture. The price reflects the market, and is a reasonable compensation for a year of sexual slavery. $He accepts it after some consideration, and you transfer the money into an escrow account to be held for $him until $his new indenture is done. Your sex slave once again, $he awaits orders with complacency.
-			<<set $cash -= $slaveCost>>
+			<<run cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave)>>
 			<<set $lowerClass -= 1>>
 			<<set $expired = 0>><<set $expiree = 0>>
 			<<for $i = 0; $i < $slaves.length; $i++>>
diff --git a/src/uncategorized/seIndependenceDay.tw b/src/uncategorized/seIndependenceDay.tw
index 493258414492fa787098cf0f350ff9ef72079720..7f408a41f21d94c321ace41ec8091cb0b4b07fee 100644
--- a/src/uncategorized/seIndependenceDay.tw
+++ b/src/uncategorized/seIndependenceDay.tw
@@ -326,7 +326,8 @@ In the Free Cities, Independence Day falls on the day when the Free City achieve
 <br><<link "Pay for a lavish fireworks display">>
 	<<replace "#result2">>
 	<br><br>Once darkness falls outside the arcology, a traditional fireworks display erupts from mortars mounted on your penthouse balconies. The noise and light @@.green;delights@@ your citizens, terrifies the arcology's stupider slaves, and serves a useful ancillary purpose in defense preparedness. The arcology's radar and laser sensors track the display, using it as an opportunity to calibrate the point defense systems on real targets. There is general agreement that this sort of thing should be a yearly tradition here, just like it was in some parts of the old world: old ideas aren't all bad.
-	<<set $rep += 1000, $cash -= 10000>>
+	<<set $rep += 1000>>
+	<<run cashX(-10000, "event")>>
 	<</replace>>
 <</link>> //Costs @@.yellowgreen;<<print cashFormat(10000)>>@@// </span>
 
diff --git a/src/uncategorized/seLethalPit.tw b/src/uncategorized/seLethalPit.tw
index a2f8859a690edfab803c4d12a7b1c30f8c3e79e3..521ba4fbd25bd5862b803abd20440221b73a76c4 100644
--- a/src/uncategorized/seLethalPit.tw
+++ b/src/uncategorized/seLethalPit.tw
@@ -406,7 +406,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 		<<set _winner.health -= 50>>
 		<<if $pitAudience == "paid">>
 			The audience is surprised by the sudden violence after so much standing around, and your @@.yellowgreen;cut of the betting@@ is modest.
-			<<set $cash += 5000>>
+			<<run cashX(5000, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;surprised@@ by the sudden violence after so much standing around.
 			<<set $rep += 250>>
@@ -415,7 +415,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 		Upon your word the two combatants approach each other. _winner.slaveName drops $his sword as $he comes, raising only $his hands, but these are terrifying, modern weapons themselves. _loser.slaveName tries a probing sweep, but _winner.slaveName catches _his2 blade in one hand, slides it down to the hilt with a shriek of metal on metal, and snaps the blade cleanly. As _loser.slaveName watches this, dumbstruck, _winner.slaveName places a gentle hand under _his2 chin and then extends that arm's integral blade up and through $his opponent's skull. Though the fight was short,
 		<<if $pitAudience == "paid">>
 			the audience is quite impressed by the display, and your @@.yellowgreen;cut of the betting@@ is quite good.
-			<<set $cash += 10000>>
+			<<run cashX(10000, "pit")>>
 		<<elseif $pitAudience == "free">>
 			the audience is @@.green;very impressed@@ by the display.
 			<<set $rep += 500>>
@@ -424,7 +424,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 		Upon your word the two combatants approach each other. _winner.slaveName does not carry a sword, raising only $his hands, but these are terrifying, modern weapons themselves. _loser.slaveName tries a probing sweep, but _winner.slaveName catches _his2 blade in one hand, slides it down to the hilt with a shriek of metal on metal, and snaps the blade cleanly. _loser.slaveName watches this, dumbstruck, before regaining composure and taking a fighting stance again. _winner.slaveName manages to touch $his opponent's bare skin with $his own cybernetics, incapacitating _loser.slaveName with an electric shock. While _loser.slaveName is temporarily stunned, _winner.slaveName strikes _loser.slaveName on the head with deadly force, crushing $his opponent's skull. Though the fight was short,
 		<<if $pitAudience == "paid">>
 			the audience is quite impressed by the display, and your @@.yellowgreen;cut of the betting@@ is quite good.
-			<<set $cash += 10000>>
+			<<run cashX(10000, "pit")>>
 		<<elseif $pitAudience == "free">>
 			the audience is @@.green;very impressed@@ by the display.
 			<<set $rep += 500>>
@@ -434,7 +434,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 		<<set _winner.health -= 80>>
 		<<if $pitAudience == "paid">>
 			The audience is awestruck by the blind $girl's triumph, and your @@.yellowgreen;cut of the betting@@ is enormous.
-			<<set $cash += 40000>>
+			<<run cashX(40000, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;awestruck@@ by the blind $girl's triumph.
 			<<set $rep += 2000>>
@@ -444,7 +444,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 		<<set _winner.health -= 80>>
 		<<if $pitAudience == "paid">>
 			The audience found the fight embarrassing, and your @@.yellowgreen;cut of the betting@@ is pitiful.
-			<<set $cash += 40>>
+			<<run cashX(40, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.red;annoyed@@ by this waste of a fight.
 			<<set $rep -= 20>>
@@ -454,7 +454,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 			_winner.slaveName wants to win, and $he opens the fight with a furious attack. _loser.slaveName manages to get _his2 blade up, blocking a strike with a ringing clash and a few sparks, but by doing so leaves _his2 abdomen open and obscures _his2 vision enough that _he2 is unprepared for the following horizontal slash, which opens _his2 belly wide. The stricken _girl2 collapses, feebly trying to push _his2 viscera back into place. Whether out of mercy or a desire to get it over with, _winner.slaveName quickly removes the dying _girl2's head.
 			<<if $pitAudience == "paid">>
 				The audience is reasonably impressed by the gore, and your @@.yellowgreen;cut of the betting@@ is reasonable.
-				<<set $cash += 4000>>
+				<<run cashX(4000, "pit")>>
 			<<elseif $pitAudience == "free">>
 				The audience is @@.green;reasonably impressed@@ by the gore.
 				<<set $rep += 200>>
@@ -464,7 +464,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 			<<set _winner.health -= 20>>
 			<<if $pitAudience == "paid">>
 				The audience is reasonably impressed by the blood, and your @@.yellowgreen;cut of the betting@@ is reasonable.
-				<<set $cash += 4000>>
+				<<run cashX(4000, "pit")>>
 			<<elseif $pitAudience == "free">>
 				The audience is @@.green;reasonably impressed@@ by the blood.
 				<<set $rep += 200>>
@@ -475,7 +475,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 		<<set _winner.health -= 20>>
 		<<if $pitAudience == "paid">>
 			The audience is quite impressed by the expert fight, and your @@.yellowgreen;cut of the betting@@ is quite good.
-			<<set $cash += 10000>>
+			<<run cashX(10000, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;very impressed@@ by the expert fight.
 			<<set $rep += 500>>
@@ -485,7 +485,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 		<<set _loser.health -= 20>>
 		<<if $pitAudience == "paid">>
 			The audience is reasonably impressed by the blood, and your @@.yellowgreen;cut of the betting@@ is reasonable.
-			<<set $cash += 4000>>
+			<<run cashX(4000, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;reasonably impressed@@ by the blood.
 			<<set $rep += 200>>
@@ -494,7 +494,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 		_winner.slaveName is so massively muscular that $he's actually impeded by $his lack of speed and flexibility. _loser.slaveName is properly afraid of _his2 strength, though, so _he2 tries to stay away as much as _he2 can. The few times their blades clash reinforces this approach, since _winner.slaveName is able to beat $his opponent's blocks out of the way with contemptuous ease. The fight takes a long, long time, but it takes more out of _loser.slaveName to survive than it takes out of _winner.slaveName to keep swinging. Eventually the gasping, weeping _loser.slaveName trips and does not struggle to _his2 feet in time. It takes _his2 tired opponent several overhead butcher's cleaves to end it.
 		<<if $pitAudience == "paid">>
 			The audience is reasonably impressed by the show of strength, and your @@.yellowgreen;cut of the betting@@ is reasonable.
-			<<set $cash += 1000>>
+			<<run cashX(1000, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;reasonably impressed@@ by the show of strength.
 			<<set $rep += 50>>
@@ -511,7 +511,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 		_winner.slaveName walks over to the bleeding out slave and quickly cuts _his2 throat.
 		<<if $pitAudience == "paid">>
 			The audience is not very impressed by this easy kill, and your @@.yellowgreen;cut of the betting@@ is unimpressive.
-			<<set $cash += 2000>>
+			<<run cashX(slaveCost, "pit")>>
 		<<elseif $pitAudience == "free">>
 			the audience is @@.green;not very impressed@@ by this easy kill.
 			<<set $rep += 100>>
@@ -520,7 +520,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 		_winner.slaveName takes an extremely simple shortcut to victory. The instant the fight starts, $he slices _loser.slaveName right across _his2 huge tits, which are so large they cannot properly be defended. _loser.slaveName reflexively drops _his2 sword to clasp _his2 hands over _his2 ruined breasts, gushing blood<<if _loser.boobsImplant > 400>> and implant fluid<</if>>. _winner.slaveName's follow-up is neither artful nor particularly well planned, but it is effective. $He hits the distracted _girl2's neck from the side, almost but not quite separating _his2 head from _his2 body.
 		<<if $pitAudience == "paid">>
 			The audience is not very impressed by this easy kill, and your @@.yellowgreen;cut of the betting@@ is unimpressive.
-			<<set $cash += 2000>>
+			<<run cashX(slaveCost, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;not very impressed@@ by this easy kill.
 			<<set $rep += 100>>
@@ -529,7 +529,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 		_winner.slaveName wants to live badly enough that $he takes an extremely brutal shortcut to victory. The instant the fight starts, $he furiously swings for _loser.slaveName's face. _loser.slaveName reflexively raises _his2 sword to block, at which point _winner.slaveName simply kicks _him2 in the dick. _loser.slaveName goes down like a marionette with cut strings, _his2 mouth soundlessly opening and closing and tears leaking from _his2 closed eyes. _winner.slaveName walks over to the prostrate slave and cuts _his2 throat without much trouble.
 		<<if $pitAudience == "paid">>
 			The audience is not very impressed by this easy kill, and your @@.yellowgreen;cut of the betting@@ is unimpressive.
-			<<set $cash += 2000>>
+			<<run cashX(2000, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;not very impressed@@ by this easy kill.
 			<<set $rep += 100>>
@@ -538,7 +538,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 		_winner.slaveName wants to live badly enough that $he takes an extremely brutal shortcut to victory. The instant the fight starts, $he furiously swings for _loser.slaveName's face. _loser.slaveName reflexively raises _his2 sword to block, at which point _winner.slaveName simply kicks _him2 in the cunt. _loser.slaveName goes down like a marionette with cut strings, _his2 mouth soundlessly opening and closing and tears leaking from _his2 closed eyes. _winner.slaveName walks over to the prostrate slave and cuts _his2 throat without much trouble.
 		<<if $pitAudience == "paid">>
 			The audience is not very impressed by this easy kill, and your @@.yellowgreen;cut of the betting@@ is unimpressive.
-			<<set $cash += 2000>>
+			<<run cashX(2000, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;not very impressed@@ by this easy kill.
 			<<set $rep += 100>>
@@ -662,7 +662,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 			<<set _winner.health -= 80>>
 			<<if $pitAudience == "paid">>
 				The audience is awestruck by the blind $girl's triumph, and your @@.yellowgreen;cut of the betting@@ is enormous.
-				<<set $cash += 50000>>
+				<<run cashX(50000, "pit")>>
 			<<elseif $pitAudience == "free">>
 				The audience is @@.green;awestruck@@ by the blind $girl's triumph.
 				<<set $rep += 2000>>
@@ -671,7 +671,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 			_winner.slaveName is so massively muscular that $he's actually impeded by $his lack of speed and flexibility. The _animal.species is suitably cautious, and it does its best to avoid $his sword. The two go back and forth for a while — the slave slashing and swinging, the animal leaping out of the way. $activeSlave.slaveName finally manages to get the better of the _animal.species, though, and manages to catch the tip of $his sword on the animal's leg. With a loud <<switch _animal.type>><<case "canine">>yelp<<case "hooved">>whinny<<case "feline">>howl<</switch>>, the _animal.species stumbles back, giving the slave a chance to bring $his sword down in an overhead swing, nearly removing the _animal.species's head.
 			<<if $pitAudience == "paid">>
 				The audience is reasonably impressed by the show of strength, and your @@.yellowgreen;cut of the betting@@ is reasonable.
-				<<set $cash += 1000>>
+				<<run cashX(1000, "pit")>>
 			<<elseif $pitAudience == "free">>
 				The audience is @@.green;reasonably impressed@@ by the show of strength.
 				<<set $rep += 50>>
@@ -682,7 +682,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 			The _animal.species isn't aware that its opponent is blind, and either way, it wouldn't have cared. It slowly paces around the flailing _loser.slaveName, looking for an opening. Seeing one, the _animal.species <<if _animal.type == "hooved">>rushes<<else>>lunges<</if>> at $him, ending $his life in one fell swoop.
 			<<if $pitAudience == "paid">>
 				The audience found the fight embarrassing, and your @@.yellowgreen;cut of the betting@@ is pitiful.
-				<<set $cash += 40>>
+				<<run cashX(40, "pit")>>
 			<<elseif $pitAudience == "free">>
 				The audience is @@.red;annoyed@@ by this waste of a fight.
 				<<set $rep -= 20>>
@@ -706,7 +706,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 			With a <<switch _animal.type>><<case "canine" "feline">>growl<<case "hooved">>snort<</switch>>, the _animal.species quickly finishes $him off<<if _animal.type == "hooved">> with a kick to the head<</if>>.
 			<<if $pitAudience == "paid">>
 				The audience is not very impressed by this easy kill, and your @@.yellowgreen;cut of the betting@@ is unimpressive.
-				<<set $cash += 2000>>
+				<<run cashX(2000, "pit")>>
 			<<elseif $pitAudience == "free">>
 				the audience is @@.green;not very impressed@@ by this easy kill.
 				<<set $rep += 100>>
@@ -715,7 +715,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 			_loser.slaveName's tits are too big to possibly defend, so $he can't help but watch in horror as the _animal.species lunges at $him, <<switch _animal.type>><<case "canine" "feline">>fangs and claws out<<case "hooved">>headfirst<</switch>>. _loser.slaveName's reflexively drops _his2 sword to clasp _his2 hands over _his2 ruined breasts, gushing blood<<if _loser.boobsImplant > 400>> and implant fluid<</if>>. The _animal.species follows up with a <<switch _animal.type>><<case "canine" "feline">>fierce bite to one of $his legs, causing $him to collapse. A second later, the animal has finished $him off.<<case "hooved">>swift kick to the head, causing $him to drop like a rock. Another blow to the head finishes $him off.<</switch>>
 			<<if $pitAudience == "paid">>
 				The audience is not very impressed by this easy kill, and your @@.yellowgreen;cut of the betting@@ is unimpressive.
-				<<set $cash += 2000>>
+				<<run cashX(2000, "pit")>>
 			<<elseif $pitAudience == "free">>
 				The audience is @@.green;not very impressed@@ by this easy kill.
 				<<set $rep += 100>>
@@ -725,7 +725,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 				_loser.slaveName is reasonably confident in $his fighting abilities, but $he isn't sure how to go about attacking the _animal.species. $He decides to open with a series of wide horizontal slashes, but the beast manages to stay out of range of $his sword. Realizing this isn't working, $he lunges at the animal, leaving $his side exposed. The _animal.species sees this and <<switch _animal.type>><<case "canine" "feline">>leaves some @@.red;deep claw marks in $his side.@@ Bleeding<<case "hooved">>headbutts $him as hard as it can, sending $him flying into the side of $pitName. Battered<</switch>> and unable to stand, $activeSlave.slaveName can do little to stop the _animal.species from finishing $him off with a <<switch _animal.type>><<case "canine">>fierce bite of its fangs to $his throat.<<case "feline">>ferocious swipe of its claws to $his throat.<<case "hooved">>swift kick to the head.<</switch>>
 				<<if $pitAudience == "paid">>
 					The audience is reasonably impressed by the blood, and your @@.yellowgreen;cut of the betting@@ is reasonable.
-					<<set $cash += 4000>>
+					<<run cashX(4000, "pit")>>
 				<<elseif $pitAudience == "free">>
 					The audience is @@.green;reasonably impressed@@ by the blood.
 					<<set $rep += 200>>
@@ -739,7 +739,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 				<</switch>>
 				<<if $pitAudience == "paid">>
 					The audience is reasonably impressed by the violence, and your @@.yellowgreen;cut of the betting@@ is reasonable.
-					<<set $cash += 4000>>
+					<<run cashX(4000, "pit")>>
 				<<elseif $pitAudience == "free">>
 					The audience is @@.green;reasonably impressed@@ by the violence.
 					<<set $rep += 200>>
diff --git a/src/uncategorized/seNicaeaAnnouncement.tw b/src/uncategorized/seNicaeaAnnouncement.tw
index c0ccb72e8c99101894648d893b2e88b9fc5a2e2f..f4b296e0be65326eefae6cec394d3e81066b5414 100644
--- a/src/uncategorized/seNicaeaAnnouncement.tw
+++ b/src/uncategorized/seNicaeaAnnouncement.tw
@@ -36,7 +36,8 @@ Hosting a new religion's first synod will be expensive and time-consuming, but w
 		"Wonderful," says the evangelistic lady slaveowner. She orders that the newly consecrated slave approach her, and ends the call.
 	<</if>>
 	You have a tremendous amount of work to do, and not much time to do it. You immediately set aside a sizable sum as an initial budget for the event itself. The first major decision you'll need to make about the council is who to invite. As one of Chattel Religionism's most prominent figures, you have a good idea of who you'd have to include to ensure that the council's agreements have as much weight as possible; $assistantName immediately begins collating background information on potential attendees, to assist you further.
-	<<set $nicaeaInvolvement = 1, $nicaeaPower += 1, $nicaeaInfluence = 1, $nicaeaName = "Council of " + $arcologies[0].name, $cash -= 10000>>
+	<<set $nicaeaInvolvement = 1, $nicaeaPower += 1, $nicaeaInfluence = 1, $nicaeaName = "Council of " + $arcologies[0].name>>
+	<<run cashX(-10000, "event")>>
 	<</replace>>
 <</link>> //This will cost <<print cashFormat(10000)>>, and influencing the outcome will likely require further investment//
 <br><<link "Oppose the council">>
diff --git a/src/uncategorized/seNicaeaPreperation.tw b/src/uncategorized/seNicaeaPreperation.tw
index c809772da8c0cd8c75b9e2058db849403cc58405..b0462c2ad241b80f4219d4cdc43b4bfc07f95e71 100644
--- a/src/uncategorized/seNicaeaPreperation.tw
+++ b/src/uncategorized/seNicaeaPreperation.tw
@@ -72,7 +72,8 @@ Finally, you could use money to influence the Council. Everyone who's likely to
 <br><<link "Host a festival to coincide with their arrival">>
 	<<replace "#result3">>
 	Good works will spread the joy of a Chattel Religionist revival, and make you even more influential with the Council. You plan a public festival as part of the event.
-	<<set $cash -= 50000, $nicaeaInfluence += 1>>
+	<<set $nicaeaInfluence += 1>>
+	<<run cashX(-50000, "event")>>
 	<</replace>>
 <</link>> //This will cost <<print cashFormat(50000)>>//
 </span>
diff --git a/src/uncategorized/seNonlethalPit.tw b/src/uncategorized/seNonlethalPit.tw
index 5f43b9c59d681fc926acea281ac7a4a317059d4e..a8b9834a8b544ae85cc0322793d6cff3f248d302 100644
--- a/src/uncategorized/seNonlethalPit.tw
+++ b/src/uncategorized/seNonlethalPit.tw
@@ -364,7 +364,7 @@
 		_winner.slaveName and _loser.slaveName are both blind, making the fight a staredown. Neither slave wants to make the first move, especially with the drowning cacophony coming from the jeering crowd. Slowly, _winner.slaveName moves forward, waving feeling for $his opponent before $he $himself gets found. _loser.slaveName's hand meets _winner.slaveName's and the two move to grab each other in a headlock. The two slaves violently thrash against each other, suffering more and more strikes as the struggle goes on. Eventually, _loser.slaveName can take no more and releases _his2 grip on _winner.slaveName neck. It takes a moment for _winner.slaveName to stop wrestling the submitting _loser.slaveName and accept $his victory.
 		<<if $pitAudience == "paid">>
 			The audience is surprised by the sudden wrestling match, and your @@.yellowgreen;cut of the betting@@ is modest.
-			<<set $cash += 500>>
+			<<run cashX(500, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;surprised@@ by the impromptu wrestling match.
 			<<set $rep += 50>>
@@ -373,7 +373,7 @@
 		Upon your word the two combatants approach each other. _winner.slaveName keeps $his artificial limbs up in a protective position. _loser.slaveName probes $him with some light blows, puzzled by this ironclad defense. Gradually, _he2 hits harder and harder, _his2 opponent grunting under the impacts but holding steady. Finally, _loser.slaveName overcommits to a body blow, and _winner.slaveName grips _his2 forearm. That is the end. The augmented grip is effectively unbreakable, and _winner.slaveName uses it to pull $his opponent in and grab _his2 neck with the other hand, using it to exert just the right amount of pressure to choke _him2 out harmlessly. Though the fight was short,
 		<<if $pitAudience == "paid">>
 			the audience is quite impressed by the display, and your @@.yellowgreen;cut of the betting@@ is quite good.
-			<<set $cash += 2000>>
+			<<run cashX(2000, "pit")>>
 		<<elseif $pitAudience == "free">>
 			the audience is @@.green;very impressed@@ by the display.
 			<<set $rep += 100>>
@@ -384,7 +384,7 @@
 		Upon your word the two combatants approach each other. _winner.slaveName keeps $his advanced cybernetic limbs up in a protective position. _loser.slaveName probes $him with some light blows, puzzled by this ironclad defense. Gradually, _he2 hits harder and harder, _his2 opponent grunting under the impacts but holding steady. Finally, _loser.slaveName tires, gets off balance, and _winner.slaveName manages to grab _his2 forearm. _winner.slaveName's limbs emit an electric shock that temporarily incapacitates $his opponent. _winner.slaveName uses $his grip to pull $his stunned opponent in and grab _his2 neck with the other hand, using it to exert just the right amount of pressure to choke _him2 out harmlessly. Though the fight was short,
 		<<if $pitAudience == "paid">>
 			the audience is quite impressed by the display, and your @@.yellowgreen;cut of the betting@@ is quite good.
-			<<set $cash += 2000>>
+			<<run cashX(2000, "pit")>>
 		<<elseif $pitAudience == "free">>
 			the audience is @@.green;very impressed@@ by the display.
 			<<set $rep += 100>>
@@ -395,7 +395,7 @@
 		_winner.slaveName centers $himself and hones in on _loser.slaveName's rapid breath. $He readies $himself, knowing $he has a single chance to win. With heavy steps, _loser.slaveName rushes $him, fully prepared to tackle the helpless combatant. _winner.slaveName gambles everything on a single high punch, a strike that slams _loser.slaveName's undefended neck. _loser.slaveName falls to the ground before the panicking _winner.slaveName, who quickly pins the coughing loser.
 		<<if $pitAudience == "paid">>
 			The audience is awestruck by the blind $girl's triumph, and your @@.yellowgreen;cut of the betting@@ is enormous.
-			<<set $cash += 4000>>
+			<<run cashX(4000, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;awestruck@@ by the blind $girl's triumph.
 			<<set $rep += 200>>
@@ -404,7 +404,7 @@
 		_winner.slaveName grins at _loser.slaveName's random swings and poor form. $He centers in on $his favorite part of _loser.slaveName's body before rushing between _his2 strikes and tackling _him2 to the ground. _loser.slaveName lays there, helpless to stop _winner.slaveName from molesting _him2.
 		<<if $pitAudience == "paid">>
 			The audience found the fight embarrassing, and your @@.yellowgreen;cut of the betting@@ is pitiful.
-			<<set $cash += 40>>
+			<<run cashX(40, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.red;annoyed@@ by this lack of a fight.
 			<<set $rep -= 20>>
@@ -414,7 +414,7 @@
 			_winner.slaveName wants to win, and $he opens the fight with a furious attack. _loser.slaveName manages to get _his2 forearms up, blocking a few blows, but by doing so leaves _his2 abdomen open and obscures _his2 vision enough that _he2 is unprepared for the following kidney strike, which brings _him2 gasping to one knee. _winner.slaveName lets _him2 rise just a little before delivering a calculated hard right that sends _loser.slaveName to the mat.
 			<<if $pitAudience == "paid">>
 				The audience is not very impressed by this execution, and your @@.yellowgreen;cut of the betting@@ is unimpressive.
-				<<set $cash += 500>>
+				<<run cashX(500, "pit")>>
 			<<elseif $pitAudience == "free">>
 				The audience is @@.green;not very impressed@@ by this execution.
 				<<set $rep += 25>>
@@ -424,7 +424,7 @@
 			<<set _loser.health -= 10>>
 			<<if $pitAudience == "paid">>
 				The audience is reasonably impressed by the beating, and your @@.yellowgreen;cut of the betting@@ is reasonable.
-				<<set $cash += 100>>
+				<<run cashX(100, "pit")>>
 			<<elseif $pitAudience == "free">>
 				The audience is @@.green;reasonably impressed@@ by the beating.
 				<<set $rep += 50>>
@@ -436,7 +436,7 @@
 		<<set _loser.health -= 50>>
 		<<if $pitAudience == "paid">>
 			The audience is very impressed by the showdown, and your @@.yellowgreen;cut of the betting@@ is good.
-			<<set $cash += 1500>>
+			<<run cashX(1500, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;very impressed@@ by the showdown.
 			<<set $rep += 75>>
@@ -445,7 +445,7 @@
 		_loser.slaveName spies an easy win against _his2 massively bloated opponent and rushes in to topple _winner.slaveName. In an effort to defend $himself, _winner.slaveName hoists $his belly and turns suddenly, accidentally impacting _loser.slaveName with $his massive middle and knocking _him2 to the ground. Seeing an opportunity, _winner.slaveName releases $his grip and slams $his weighty womb down on _loser.slaveName, bashing the wind out of _him2. _loser.slaveName struggles to slip out from under the mass, but the weight is too great and _he2 passes out.
 		<<if $pitAudience == "paid">>
 			The audience is impressed by this absurd win, and your @@.yellowgreen;cut of the betting@@ is reasonably.
-			<<set $cash += 1000>>
+			<<run cashX(1000, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;impressed@@ by this absurd win.
 			<<set $rep += 50>>
@@ -456,7 +456,7 @@
 		<<set _winner.health -= 10>>
 		<<if $pitAudience == "paid">>
 			The audience is quite impressed by the expert fight, and your @@.yellowgreen;cut of the betting@@ is quite good.
-			<<set $cash += 2000>>
+			<<run cashX(2000, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;very impressed@@ by the expert fight.
 			<<set $rep += 100>>
@@ -466,7 +466,7 @@
 		<<set _loser.health -= 10>>
 		<<if $pitAudience == "paid">>
 			The audience is reasonably impressed by the takedown, and your @@.yellowgreen;cut of the betting@@ is reasonable.
-			<<set $cash += 1000>>
+			<<run cashX(1000, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;reasonably impressed@@ by the takedown.
 			<<set $rep += 50>>
@@ -476,7 +476,7 @@
 		<<set _loser.health -= 10, _loser.eyebrowPiercing = 0>>
 		<<if $pitAudience == "paid">>
 			The audience is reasonably impressed by the gory spectacle, and your @@.yellowgreen;cut of the betting@@ is reasonable.
-			<<set $cash += 1000>>
+			<<run cashX(1000, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;reasonably impressed@@ by the gory spectacle.
 			<<set $rep += 50>>
@@ -486,7 +486,7 @@
 		<<set _loser.health -= 10>>
 		<<if $pitAudience == "paid">>
 			The audience is reasonably impressed by the show of strength, and your @@.yellowgreen;cut of the betting@@ is reasonable.
-			<<set $cash += 1000>>
+			<<run cashX(1000, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;reasonably impressed@@ by the show of strength.
 			<<set $rep += 50>>
@@ -495,7 +495,7 @@
 		_winner.slaveName wants to win badly enough that $he takes an extremely brutal shortcut to victory. The instant the fight starts, $he quickly knees _loser.slaveName in the stomach. The massively swollen _loser.slaveName goes down with a loud thud and plenty of jiggling. _winner.slaveName gloats over the struggling _loser.slaveName watching as _he2 is unable to pull _his2 bloated form off the ground.
 		<<if $pitAudience == "paid">>
 			The audience is not very impressed by this easy win, and your @@.yellowgreen;cut of the betting@@ is unimpressive.
-			<<set $cash += 500>>
+			<<run cashX(500, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;not very impressed@@ by this easy win.
 			<<set $rep += 50>>
@@ -504,7 +504,7 @@
 		_winner.slaveName wants to win badly enough that $he takes an extremely simple shortcut to victory. The instant the fight starts, $he hits _loser.slaveName right in _his2 huge tits, as hard as $he can. This is a sucker punch of the worst kind; _loser.slaveName's boobs are so big that _he2 has no real chance of defending them. _He2 gasps with pain and wraps _his2 arms around _his2 aching bosom, giving _winner.slaveName a clear opening to deliver a free and easy blow to the jaw that sends the poor top-heavy slave to the mat. Any chance of _loser.slaveName rising is extinguished by _his2 breasts; it takes _him2 so long to muster an attempt to get up that _winner.slaveName can rain hits on _him2 while _he2 does.
 		<<if $pitAudience == "paid">>
 			The audience is not very impressed by this easy win, and your @@.yellowgreen;cut of the betting@@ is unimpressive.
-			<<set $cash += 500>>
+			<<run cashX(500, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;not very impressed@@ by this easy win.
 			<<set $rep += 25>>
@@ -513,7 +513,7 @@
 		_winner.slaveName wants to win badly enough that $he takes an extremely brutal shortcut to victory. The instant the fight starts, $he furiously goes for _loser.slaveName's face. _loser.slaveName defends _himself2 with _his2 arms, at which point _winner.slaveName delivers a mighty kick to the dick. _loser.slaveName goes down like a marionette with cut strings, _his2 mouth soundlessly opening and closing and tears leaking from _his2 closed eyes. _winner.slaveName winds up to kick _him2 again but hesitates, wondering whether it's even necessary.
 		<<if $pitAudience == "paid">>
 			The audience is not very impressed by this easy win, and your @@.yellowgreen;cut of the betting@@ is unimpressive.
-			<<set $cash += 500>>
+			<<run cashX(500, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;not very impressed@@ by this easy win.
 			<<set $rep += 25>>
@@ -522,7 +522,7 @@
 		_winner.slaveName wants to win badly enough that $he takes an extremely unpleasant shortcut to victory. The instant the fight starts, $he furiously goes for _loser.slaveName's eyes, hands forming claws. _loser.slaveName defends _himself2 with _his2 arms, at which point _winner.slaveName delivers a mighty cunt punt. _loser.slaveName goes straight down, _his2 mouth soundlessly opening and closing and tears leaking from _his2 closed eyes while _his2 hands desperately shield _his2 outraged pussy. _winner.slaveName follows _him2 down and puts the unresisting girl's head in a simple lock.
 		<<if $pitAudience == "paid">>
 			The audience is not very impressed by this easy win, and your @@.yellowgreen;cut of the betting@@ is unimpressive.
-			<<set $cash += 500>>
+			<<run cashX(500, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;not very impressed@@ by this easy win.
 			<<set $rep += 25>>
@@ -531,7 +531,7 @@
 		_winner.slaveName wants to win badly enough that $he takes an extremely unpleasant shortcut to victory. The instant the fight starts, $he furiously goes for _loser.slaveName's eyes, hands forming claws. _loser.slaveName defends _himself2 with _his2 arms, at which point _winner.slaveName delivers a clenched fist to _loser.slaveName's throat. _loser.slaveName staggers back, wheezing for breath with tears leaking from _his2 closed eyes. _winner.slaveName takes advantage of _loser.slaveName's vulnerability to quickly trip and pin the coughing loser.
 		<<if $pitAudience == "paid">>
 			The audience is not very impressed by this easy win, and your @@.yellowgreen;cut of the betting@@ is unimpressive.
-			<<set $cash += 500>>
+			<<run cashX(500, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;not very impressed@@ by this easy win.
 			<<set $rep += 25>>
@@ -1054,7 +1054,7 @@
 			$activeSlave.slaveName is quick, though, and $he manages to avoid the animal for the full five minutes, and drops to $his knees in relief and exhaustion once the bell sounds and the _animal.species is leashed and pulled back into its cage.
 			<<if $pitAudience == "paid">>
 				The audience is fairly impressed by this impressive display of sportsmanship, and so is your @@.yellowgreen;cut of the betting.@@
-			<<set $cash += 2500>>
+			<<run cashX(2500, "pit")>>
 			<<elseif $pitAudience == "free">>
 				The audience is @@.green;fairly impressed@@ by this impressive display of sportsmanship.
 				<<set $rep += 100>>
@@ -1069,7 +1069,7 @@
 		<</if>>
 		<<if $pitAudience == "paid">>
 			The audience is not very impressed by this mediocre display, and your @@.yellowgreen;cut of the betting@@ is equally unimpressive.
-			<<set $cash += 500>>
+			<<run cashX(500, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;not very impressed@@ by this mediocre display.
 			<<set $rep += 25>>
diff --git a/src/uncategorized/seRecruiterSuccess.tw b/src/uncategorized/seRecruiterSuccess.tw
index 564baf755b38c4b5268746bfe5daf992470fa7e1..5dd8d366a6b51f880dca10b89a8c56c015f4431e 100644
--- a/src/uncategorized/seRecruiterSuccess.tw
+++ b/src/uncategorized/seRecruiterSuccess.tw
@@ -250,13 +250,13 @@ Your recruiter $Recruiter.slaveName has succeeded; $he's convinced a desperate o
 <span id="result">
 <<if $cash >= $contractCost>>
 <<link "Enslave _him2">>
-	<<set $cash -= $contractCost>>
+	<<run cashX(forceNeg($contractCost), "slaveTransfer", $slaves[$i])>>
 	<<replace "#result">>
 	<<include "New Slave Intro">>
 	<</replace>>
 <</link>> //This will cost <<print cashFormat($contractCost)>>//
 <br><<link "Sell _him2 immediately">>
-	<<set $cash += $slaveCost>>
+	<<run cashX(forceNeg($slaveCost), "slaveTransfer", $Recruiter)>>
 	<<replace "#result">>
 	$activeSlave.slaveName accepts being resold without much fuss. _He2's merely exchanged one unknown owner for another. For all _he2 knows _his2 new buyer will be less abusive than you would have been. _He2 would be less complacent if _he2 knew who _his2 buyers are; _he2'll be immured in an arcade within the hour.
 	<</replace>>
diff --git a/src/uncategorized/sellSlave.tw b/src/uncategorized/sellSlave.tw
index df558ab6ee2edea3bfbfba86470b988369708fbb..48308dbe89709dea1b89051a2dceb09f8ca04c47 100644
--- a/src/uncategorized/sellSlave.tw
+++ b/src/uncategorized/sellSlave.tw
@@ -677,6 +677,10 @@ A reputable slave appraiser arrives promptly to inspect $him and certify $his qu
 		And that is all. Thank you." He nods in a businesslike fashion and departs.
 <</switch>>
 
+<br><br>
+__Financial Records__
+<<SlaveExpenses $activeSlave>>
+
 <</if>> /* CLOSES APPRAISAL */
 <</if>> /* closes breeding mark */
 
@@ -687,7 +691,7 @@ A reputable slave appraiser arrives promptly to inspect $him and certify $his qu
 <<set _Price = 500*Math.trunc(($slaveCost*1.1)/500)>>
 	<br>The current offer for $him stands at ''<<print cashFormat(_Price)>>''.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += _Price>>
+		<<run cashX(_Price, "slaveTransfer")>>
 		<<set $buyer = "elite auction">>
 	<</link>>
 <<else>>
@@ -766,7 +770,7 @@ __Bids Received__
 <</if>>
 <<if _NewOwner == 1>>
 	<<link "Accept bid""Slave Sold">>
-	<<set $cash += _Price>>
+	<<run cashX(_Price, "slaveTransfer")>>
 	<</link>>
 <</if>>
 
@@ -775,7 +779,8 @@ __Bids Received__
 	<<if random(1,100) > 50>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*0.9)/500))>>'' from a polite older citizen looking for a housekeeper and bedwarmer.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*0.9)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*0.9)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "housekeeper">>
 	<</link>>
 	<</if>>
@@ -788,7 +793,8 @@ __Bids Received__
 	<<if random(1,100) > 60>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.05)/500))>>'' from a male citizen who wants to ensure his posterity by using $him to carry his children.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.05)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.05)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "preg fetishist">>
 	<</link>>
 	<</if>>
@@ -798,7 +804,8 @@ __Bids Received__
 	<<if random(1,100) > 60>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.05)/500))>>'' from an organ modifier interested in $his anal womb.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.05)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.05)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "organ crafter">>
 	<</link>>
 	<</if>>
@@ -809,7 +816,8 @@ __Bids Received__
 	<<if random(1,100) > 60>>
 	<br>''<<print cashFormat(400*Math.trunc(($slaveCost*1.05)/500))>>'' from a pharmaceuticals corporation looking for fertile virgins for testing extreme fertility drugs.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 400*Math.trunc(($slaveCost*1.05)/500)>>
+		<<set _Price += 400*Math.trunc(($slaveCost*1.05)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "womb filler">>
 	<</link>>
 	<</if>>
@@ -822,7 +830,8 @@ __Bids Received__
 	<<if random(1,100) > 90>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.1)/500))>>'' from a fellow arcology owner seeking a smart, pretty slave to use as a breeder to produce superior children.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.1)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.1)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "eugenics arcology">>
 	<</link>>
 	<</if>>
@@ -835,7 +844,8 @@ __Bids Received__
 	<<if random(1,100) > 60>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.05)/500))>>'' from a fellow arcology owner focusing on building a future society based on his genes: he seeks fertile virgins with wide hips, feeling they will be the best mothers.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.05)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.05)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "repopulationist arcology">>
 	<</link>>
 	<</if>>
@@ -846,7 +856,8 @@ __Bids Received__
 	<<if random(1,100) > 60>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.3)/500))>>'' from a slave trader with a notorious virgin impregnation fetish: he uses his work to provide himself with an endless supply of virgins to knock up and resell.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.3)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.3)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "virgin trader">>
 	<</link>>
 	<</if>>
@@ -861,7 +872,8 @@ __Bids Received__
 	<<if random(1,100) > 60>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.05)/500))>>'' from a group that takes pleasure in performing abortions on live TV.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 400*Math.trunc(($slaveCost*1.05)/500)>>
+		<<set _Price += 400*Math.trunc(($slaveCost*1.05)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "abortion TV">>
 	<</link>>
 	<</if>>
@@ -874,7 +886,8 @@ __Bids Received__
 	<<if random(1,100) > 60>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.05)/500))>>'' from a female citizen with a very specific fetish: she loves breasts to the point of enjoying slaves with nipples large enough to meaningfully penetrate her.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.05)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.05)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "nipple fetishist">>
 	<</link>>
 	<</if>>
@@ -884,7 +897,8 @@ __Bids Received__
 	<<if random(1,100) > 60>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.1)/500))>>'' from a male citizen with a kink that's hard to satisfy: he loves nipple fucking, but hates how breasts just don't work that way.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.1)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.1)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "nipple fetishist">>
 	<</link>>
 	<</if>>
@@ -896,7 +910,8 @@ __Bids Received__
 	<<if random(1,100) > 60>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.05)/500))>>'' from a citizen who enjoys buttfucking slaves with the necessary equipment, willingness, and anal skill to reward his efforts with messy, hands-free orgasms of their own.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.05)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.05)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "anal fetishist">>
 	<</link>>
 	<</if>>
@@ -909,7 +924,8 @@ __Bids Received__
 	<<if random(1,100) > 60>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.05)/500))>>'' from an unusually well-endowed citizen who strongly prefers oral sex with willing partners who can deepthroat him successfully.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.05)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.05)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "oral fetishist">>
 	<</link>>
 	<</if>>
@@ -921,7 +937,8 @@ __Bids Received__
 	<<if random(1,100) > 60>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.05)/500))>>'' from a sadistic citizen who likes hurting her slaves, dislikes masochists for their enjoyment of her treatment, yet prefers slaves who will not hate her.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.05)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.05)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "pain fetishist">>
 	<</link>>
 	<</if>>
@@ -934,7 +951,8 @@ __Bids Received__
 	<<if random(1,100) > 60>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.05)/500))>>'' from a sadistic citizen who is looking for an imposing, stupid slave she can train to rape her victims on command.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.05)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.05)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "sadism fetishist">>
 	<</link>>
 	<</if>>
@@ -948,7 +966,8 @@ __Bids Received__
 	<<if random(1,100) > 60>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.05)/500))>>'' from a newly wealthy citizen who is expanding his household and is interested in smart, educated, and obedient slaves for leadership roles.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.05)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.05)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "dom fetishist">>
 	<</link>>
 	<</if>>
@@ -961,7 +980,8 @@ __Bids Received__
 	<<if random(1,100) > 60>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.05)/500))>>'' from a citizen whose job keeps her deskbound; bored, she's looking for a devoted oral slave to occupy the space under the desk and be her constant pussylicking appliance.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.05)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.05)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "sub fetishist">>
 	<</link>>
 	<</if>>
@@ -972,7 +992,8 @@ __Bids Received__
 	<<if random(1,100) > 60>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.3)/500))>>'' from a wealthy citizen infamous for cruelly raping anal virgins in public; he buys and abuses a new one every few weeks.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.3)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.3)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "buttbreaker">>
 	<</link>>
 	<</if>>
@@ -984,7 +1005,8 @@ __Bids Received__
 	<<if random(1,100) > 60>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.1)/500))>>'' from a small, local slave trainer interested in using $him to help train new slaves in the sexual arts.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.1)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.1)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "trainer staffing">>
 	<</link>>
 	<</if>>
@@ -1000,7 +1022,8 @@ __Bids Received__
 	<<if random(1,100) > 60>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.4)/500))>>'' from a skilled slave trainer who feels that MILFs make the best slave trainers.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.4)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.4)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "D milf staffing">>
 	<</link>>
 	<</if>>
@@ -1017,7 +1040,8 @@ __Bids Received__
 	<<if random(1,100) > 60>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.25)/500))>>'' from a prominent citizen with a notorious fetish for fertile, natural cows.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.25)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.25)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "D hucow">>
 	<</link>>
 	<</if>>
@@ -1033,7 +1057,8 @@ __Bids Received__
 	<<if random(1,100) > 60>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.35)/500))>>'' from a prominent citizen who's pursuing some sort of mercenary project that requires worryingly large numbers of thin <<print $girl>>s with sharp teeth.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.35)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.35)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "D startled the witch">>
 	<</link>>
 	<</if>>
@@ -1049,7 +1074,8 @@ __Bids Received__
 	<<if random(1,100) > 60>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.35)/500))>>'' from a prominent citizen who appreciates <<print $girl>>s who are both vaginal virgins and anal veterans.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.35)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.35)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "D virgin asspussy">>
 	<</link>>
 	<</if>>
@@ -1065,7 +1091,8 @@ __Bids Received__
 	<<if random(1,100) > 60>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.35)/500))>>'' from a prominent citizen with moist palms who insistently refers to $him as "his waifu," whatever that means.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.35)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.35)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "D waifu">>
 	<</link>>
 	<</if>>
@@ -1081,7 +1108,8 @@ __Bids Received__
 	<<if random(1,100) > 60>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.35)/500))>>'' from a prominent citizen who likes to provide his favored, well-endowed slaves with subordinate, orally skilled dickgirls with nice butts.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.35)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.35)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "D oral servants">>
 	<</link>>
 	<</if>>
@@ -1099,7 +1127,8 @@ __Bids Received__
 	<<if random(1,100) > 60>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.35)/500))>>'' from a prominent citizen who prefers slaves that look like demure <<print $girl>>s with their clothes on, and are willing to take cock up their pretty asspussies.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.35)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.35)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "D trap lover">>
 	<</link>>
 	<</if>>
@@ -1117,7 +1146,8 @@ __Bids Received__
 	<<if random(1,100) > 60>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.35)/500))>>'' from an eccentric citizen notorious for keeping tall slaves with huge soft butts, just so he can bury himself between their cheeks when they're standing.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.35)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.35)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "D butt bury">>
 	<</link>>
 	<</if>>
@@ -1136,7 +1166,8 @@ __Bids Received__
 	<<if random(1,100) > 60>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.35)/500))>>'' from a prominent citizen with strong opinions on futas: he likes a feminine $girl with a nice cock, a lovely pussy, no visible balls and yet the ability to get hard, and plentifully milky nipples.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.35)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.35)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "D milky herm">>
 	<</link>>
 	<</if>>
@@ -1156,7 +1187,8 @@ __Bids Received__
 	<<if random(1,100) > 60>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.35)/500))>>'' from a prominent citizen whose friends never let him hear the end of his incorrigibly romantic treatment of his apartment full of amazons.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.35)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.35)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "D amazon hunter">>
 	<</link>>
 	<</if>>
@@ -1174,7 +1206,8 @@ __Bids Received__
 	<<if random(1,100) > 60>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.35)/500))>>'' from a prominent citizen who keeps a large harem of lithe, muscular <<print $girl>>s to bear him children.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.35)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.35)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "D shorty breeder">>
 	<</link>>
 	<</if>>
@@ -1192,7 +1225,8 @@ __Bids Received__
 	<<if random(1,100) > 60>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.35)/500))>>'' from a prominent citizen who's looking for a fresh, skilled pair of lips eager to wrap around a thick cock.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.35)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.35)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "D oral servants">>
 	<</link>>
 	<</if>>
@@ -1210,7 +1244,8 @@ __Bids Received__
 	<<if random(1,100) > 80>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.15)/500))>>'' from a prominent citizen who's a notoriously inexperienced lover; it's painfully obvious that he prefers inexperienced slaves as they make him feel less insecure.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.15)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.15)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "D r9k">>
 	<</link>>
 	<</if>>
@@ -1227,7 +1262,8 @@ __Bids Received__
 	<<if random(1,100) > 60>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.25)/500))>>'' from a prominent citizen who takes unusually close interest in $his health and muscle tone, and cannot quite hide his salivation as he does so.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.25)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.25)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "D cannibal">>
 	<</link>>
 	<</if>>
@@ -1240,7 +1276,8 @@ __Bids Received__
 	<<if random(1,100) == 69>>
 	<br>''<<print cashFormat(200*Math.trunc(($slaveCost*2)/200))>>'' from an obsessive fan who absolutely must have $him for himself.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 200*Math.trunc(($slaveCost*2)/200)>>
+		<<set _Price += 200*Math.trunc(($slaveCost*2)/200)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "obsessed fan">>
 	<</link>>
 	<</if>>
@@ -1248,7 +1285,8 @@ __Bids Received__
 	<<if random(1,100) > 90>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.3)/500))>>'' from a studio interested in continued production of $his porn.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.3)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.3)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "porn studio">>
 	<</link>>
 	<</if>>
@@ -1259,7 +1297,8 @@ __Bids Received__
 	<<if random(1,100) > 60>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.1)/500))>>'' from a slave trainer that specializes in educating slaves and reselling them at a profit.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.1)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.1)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "teaching trainer">>
 	<</link>>
 	<</if>>
@@ -1271,7 +1310,8 @@ __Bids Received__
 	<<if random(1,100) > 60>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.1)/500))>>'' from a slave trainer that specializes in filling slaves with implants before resale.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.1)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.1)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "implanting trainer">>
 	<</link>>
 	<</if>>
@@ -1283,7 +1323,8 @@ __Bids Received__
 	<<if random(1,100) > 60>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.1)/500))>>'' from a slave trainer that specializes in fixing slaves who have been surgically ruined with overimplantation.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.1)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.1)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "purifying trainer">>
 	<</link>>
 	<</if>>
@@ -1297,7 +1338,8 @@ __Bids Received__
 	<<if random(1,100) > 60>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.1)/500))>>'' from a slave trainer that specializes in slimming down fat slaves to appeal to buyers who prefer slim <<print $girl>>s.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.1)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.1)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "slimming trainer">>
 	<</link>>
 	<</if>>
@@ -1313,7 +1355,8 @@ __Bids Received__
 	<<if random(1,100) > 60>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.1)/500))>>'' from a slave trainer that specializes in improving slaves with disappointing assets; they prefer pharmaceutical means but are not averse to surgical intervention if necessary.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.1)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.1)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "broadening trainer">>
 	<</link>>
 	<</if>>
@@ -1328,7 +1371,8 @@ __Bids Received__
 	<<if random(1,100) > 60>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.1)/500))>>'' from a slave trainer that specializes in getting $women ready to be dairy cows by using aggressive hormonal and pharmaceutical treatment to balloon their tits.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.1)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.1)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "cow trainer">>
 	<</link>>
 	<</if>>
@@ -1342,7 +1386,8 @@ __Bids Received__
 	<<if random(1,100) > 60>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.1)/500))>>'' from a slave trainer that specializes in feminizing imperfect shemales; an orchiectomy is invariably their first step.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.1)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.1)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "clipping trainer">>
 	<</link>>
 	<</if>>
@@ -1356,7 +1401,8 @@ __Bids Received__
 	<<if random(1,100) > 60>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.1)/500))>>'' from a slave trainer that specializes in creating proper slave $women from raw material that falls short of that ideal but has potential anyway.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.1)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.1)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "reassignment trainer">>
 	<</link>>
 	<</if>>
@@ -1369,7 +1415,8 @@ __Bids Received__
 	<<if random(1,100) > 70>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.25)/500))>>'' from a fellow arcology owner working towards autarkic slave pastoralism. He's awed by $his milk productivity.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.25)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.25)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "pastoralist arcology">>
 	<</link>>
 	<</if>>
@@ -1382,7 +1429,8 @@ __Bids Received__
 	<<if random(1,100) > 70>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.25)/500))>>'' from a fellow arcology owner building a facsimile of ancient Egypt. He's in the market for wise and educated slaves willing to pass on their skills.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.25)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.25)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "egyptian revivalist arcology">>
 	<</link>>
 	<</if>>
@@ -1396,7 +1444,8 @@ __Bids Received__
 	<<if random(1,100) > 70>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.25)/500))>>'' from a fellow arcology owner building a recreation of the Great Aztec Empire. He's in the market for willing, strong and combat ready slaves, to bolster his empire
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.25)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.25)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "aztec revivalist arcology">>
 	<</link>>
 	<</if>>
@@ -1410,7 +1459,8 @@ __Bids Received__
 	<<if random(1,100) > 70>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.25)/500))>>'' from a fellow arcology owner building a facsimile of classical Rome. He's in the market for slaves with basic combat skills to fight in modern gladiatorial combats.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.25)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.25)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "roman revivalist arcology">>
 	<</link>>
 	<</if>>
@@ -1423,7 +1473,8 @@ __Bids Received__
 	<<if random(1,100) > 70>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.25)/500))>>'' from a fellow arcology owner with interesting religious beliefs, which require beautiful slaves to be available to the public. Since $activeSlave.slaveName is pretty and not heavily used, he considers it a duty to buy $him and make $him a holy prostitute.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.25)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.25)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "chattel religionist arcology">>
 	<</link>>
 	<</if>>
@@ -1436,7 +1487,8 @@ __Bids Received__
 	<<if random(1,100) > 70>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.25)/500))>>'' from a fellow arcology owner devoted to muscular ladies. He seems to feel that $activeSlave.slaveName is not at $his true potential, and wants a try at improving $his physique himself.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.25)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.25)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "physical idealist arcology">>
 	<</link>>
 	<</if>>
@@ -1450,7 +1502,8 @@ __Bids Received__
 	<<if random(1,100) > 70>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.25)/500))>>'' from a fellow arcology owner devoted to chubby ladies. He seems to feel that $activeSlave.slaveName can handle a fair bit more weight, and wants a try at fattening $him up himself.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.25)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.25)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "hedonistic decadence arcology">>
 	<</link>>
 	<</if>>
@@ -1465,7 +1518,8 @@ __Bids Received__
 	<<if random(1,100) > 80>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.1)/400))>>'' from a chef that likes stuffing more than just turkeys.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.1)/400)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.1)/400)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "stuffer chef">>
 	<</link>>
 	<</if>>
@@ -1479,7 +1533,8 @@ __Bids Received__
 	<<if random(1,100) > 70>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.25)/500))>>'' from a fellow arcology owner who loves breast implants. Since large natural breasts can support larger implants, he seems to feel $activeSlave.slaveName has good potential to be implanted up to a truly gigantic size without too much stretching.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.25)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.25)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "transformation fetishist arcology">>
 	<</link>>
 	<</if>>
@@ -1492,7 +1547,8 @@ __Bids Received__
 	<<if random(1,100) > 70>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.25)/500))>>'' from a fellow arcology owner who never fails to dream big. He's interested in $him mostly for growth potential, since $his assets have grown so big, so young.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.25)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.25)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "asset expansionist arcology">>
 	<</link>>
 	<</if>>
@@ -1507,7 +1563,8 @@ __Bids Received__
 	<<if random(1,100) > 70>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.25)/500))>>'' from a fellow arcology owner with simple tastes. He likes his slaves young, slim, and reasonably innocent.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.25)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.25)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "slimness enthusiast arcology">>
 	<</link>>
 	<</if>>
@@ -1522,7 +1579,8 @@ __Bids Received__
 	<<if random(1,100) > 70>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.25)/500))>>'' from a fellow arcology owner with a hatred of implants that reaches missionary zeal. He buys slaves full of silicone, removes their implants, reconditions them, and resells them whenever his finances will permit.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.25)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.25)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "body purist arcology">>
 	<</link>>
 	<</if>>
@@ -1534,7 +1592,8 @@ __Bids Received__
 	<<if random(1,100) > 70>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.25)/500))>>'' from a fellow arcology owner who runs a terrifyingly degrading society. He prefers slaves who have been well-treated previously; it lends their screams a certain special authenticity.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.25)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.25)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "degradationist arcology">>
 	<</link>>
 	<</if>>
@@ -1546,7 +1605,8 @@ __Bids Received__
 	<<if random(1,100) > 70>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.25)/500))>>'' from a fellow arcology owner with an almost messianic calling to educate and improve slaves, though somewhat hypocritically, he prefers to start with reasonably obedient <<print $girl>>s, which usually means slaves broken by someone else.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.25)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.25)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "paternalist arcology">>
 	<</link>>
 	<</if>>
@@ -1562,7 +1622,8 @@ __Bids Received__
 	<<if random(1,100) > 70>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.25)/500))>>'' from a fellow arcology owner who likes willing, uncomplicated young ladies with bouncing boobs and big butts. He's an uncomplicated sort.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.25)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.25)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "gender fundamentalist arcology">>
 	<</link>>
 	<</if>>
@@ -1578,7 +1639,8 @@ __Bids Received__
 	<<if random(1,100) > 70>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.25)/500))>>'' from a fellow arcology owner with a notorious fetish for the process of feminization. He prefers diamonds in the rough, because the process of polishing is so much fun.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.25)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.25)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "gender radicalist arcology">>
 	<</link>>
 	<</if>>
@@ -1592,7 +1654,8 @@ __Bids Received__
 	<<if random(1,100) > 70>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.25)/500))>>'' from a fellow arcology owner with a strongly held belief that $activeSlave.race people should not be slaves. He devotes as much of his resources as he can to manumission of such <<print $girl>>s, concentrating on the downtrodden.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.25)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.25)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "supremacist arcology">>
 	<</link>>
 	<</if>>
@@ -1606,7 +1669,8 @@ __Bids Received__
 	<<if random(1,100) > 70>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.25)/500))>>'' from a fellow arcology owner working on a project to breed a race of $activeSlave.race people with natural, unquestioning obedience. He clearly considers $him good stock for the project.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.25)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.25)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "subjugationist arcology">>
 	<</link>>
 	<</if>>
@@ -1619,7 +1683,8 @@ __Bids Received__
 	<<if random(1,100) > 50>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.1)/500))>>'' from a cheap brothel chain that operates a franchise on a lower level of the arcology.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.1)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.1)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "cheap brothel">>
 	<</link>>
 	<</if>>
@@ -1632,7 +1697,8 @@ __Bids Received__
 	<<if random(1,100) > 50>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.1)/500))>>'' from a factory farm notorious for extracting every drop of value from its slaves' bodies.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.1)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.1)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "factory farm">>
 	<</link>>
 	<</if>>
@@ -1645,7 +1711,8 @@ __Bids Received__
 	<<if random(1,100) > 50>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.1)/500))>>'' from a sex arcade that maintains good service quality by rapidly cycling new slaves through their facilities.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.1)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.1)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "arcade">>
 	<</link>>
 	<</if>>
@@ -1660,7 +1727,8 @@ __Bids Received__
 	<<if random(1,100) > 50>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.1)/500))>>'' from a high-volume breeding operation interested in $him mostly for $his healthy, functional womb.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.1)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.1)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "volume breeder">>
 	<</link>>
 	<</if>>
@@ -1675,7 +1743,8 @@ __Bids Received__
 	<<if random(1,100) > 50>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.1)/500))>>'' from a group of partners that run a handsome brothel off the promenade.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.1)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.1)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "nice brothel">>
 	<</link>>
 	<</if>>
@@ -1689,7 +1758,8 @@ __Bids Received__
 	<<if random(1,100) > 50>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*0.8)/500))>>'' from a free-range farm that pays for the high costs of high quality livestock care by aggressively marketing its cruelty-free products.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*0.8)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*0.8)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "free range">>
 	<</link>>
 	<</if>>
@@ -1703,7 +1773,8 @@ __Bids Received__
 	<<if random(1,100) > 10>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.2)/500))>>'' from an organ harvesting firm that acquires healthy raw materials cheaply.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1.2)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1.2)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "harvester">>
 	<</link>>
 	<</if>>
@@ -1714,7 +1785,8 @@ __Bids Received__
 	<<if random(1,100) > 10>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1)/500))>>'' from a manufacturer of large sexual appliances that include a living inmate, drugged into helplessness.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*1)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*1)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "fuckdoll">>
 	<</link>>
 	<</if>>
@@ -1727,7 +1799,8 @@ __Bids Received__
 <<if random(1,100) > 90>>
 	<br>''<<print cashFormat(7000)>>'' from a porn director interested in a cheap slave with a belly implant for use in a snuff film.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 7000>>
+		<<set _Price += 7000>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<<set $buyer = "tentacle bred">>
 	<</link>>
 <</if>>
@@ -1739,7 +1812,8 @@ __Bids Received__
 <<if random(1,100) > 30>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*0.9)/500))>>'' from a reputable slave trader who will likely ship $him out of the arcology.
 	<<link "Accept bid" "Slave Sold">>
-	<<set $cash += 500*Math.trunc(($slaveCost*0.9)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*0.9)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 	<</link>>
 <</if>>
 
@@ -1747,7 +1821,8 @@ __Bids Received__
 	<<if random(1,100) > 20>>
 	<br>''<<print cashFormat(500*Math.trunc(($slaveCost*0.9)/500))>>'' from a slave trader who buys vast numbers of mindbroken <<print $girl>>s. His purpose is unknown, and none of them are ever seen again.
 	<<link "Accept bid" "Slave Sold">>
-		<<set $cash += 500*Math.trunc(($slaveCost*0.9)/500)>>
+		<<set _Price += 500*Math.trunc(($slaveCost*0.9)/500)>>
+		<<run cashX(_Price, "slaveSold", $activeSlave)>>
 	<</link>>
 	<</if>>
 <</if>>
@@ -1759,7 +1834,8 @@ __Bids Received__
 	<<if $activeSlave.oralSkill + $activeSlave.analSkill + $activeSlave.vaginalSkill > 100>>
 		<br>''<<print cashFormat(500*Math.trunc(($slaveCost*0.5)/500))>>'' from the officer in charge of 'recreational activities' for General $peacekeepers.generalName's forces. This is far less than the slave is worth, but the bid comes with the implicit offer of more influence over the peacekeepers.
 		<<link "Accept bid" "Slave Sold">>
-			<<set $cash += 500*Math.trunc(($slaveCost*0.5)/500), $buyer = "peacekeepers">>
+			<<set _Price += 500*Math.trunc(($slaveCost*0.5)/500), $buyer = "peacekeepers">>
+			<<run cashX(_Price, "slaveSold", $activeSlave)>>
 		<</link>>
 	<</if>>
 <<else>>
@@ -1767,52 +1843,52 @@ __Bids Received__
 	<<case "lusty futanari">>
 		<<if $activeSlave.balls > 0 && $activeSlave.ballType != "sterile" && $activeSlave.scrotum > 0 && $activeSlave.dick > 0 && $activeSlave.vagina > -1 && $activeSlave.energy > 50>>
 			<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.2)/500))>>'' from the sex slave buyer for General $peacekeepers.generalName's client state, which prefers $peacekeepers.tastes.
-			<<link "Accept bid" "Slave Sold">><<set $cash += 500*Math.trunc(($slaveCost*1.2)/500), $buyer = "peacekeepers">><</link>>
+			<<link "Accept bid" "Slave Sold">><<set _Price += 500*Math.trunc(($slaveCost*1.2)/500), $buyer = "peacekeepers">><<run cashX(_Price, "slaveSold", $activeSlave)>><</link>>
 		<</if>>
 	<<case "cum addicts">>
 		<<if $activeSlave.fetish == "cumslut" && $activeSlave.fetishStrength > 95 && $activeSlave.sexualFlaw == "cum addict">>
 			<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.2)/500))>>'' from the sex slave buyer for General $peacekeepers.generalName's client state, which prefers $peacekeepers.tastes.
-			<<link "Accept bid" "Slave Sold">><<set $cash += 500*Math.trunc(($slaveCost*1.2)/500), $buyer = "peacekeepers">><</link>>
+			<<link "Accept bid" "Slave Sold">><<set _Price += 500*Math.trunc(($slaveCost*1.2)/500), $buyer = "peacekeepers">><<run cashX(_Price, "slaveSold" , $activeSlave)>><</link>>
 		<</if>>
 	<<case "horny MILFs">>
 		<<if $activeSlave.physicalAge > 34 && $activeSlave.visualAge > 34 && $activeSlave.energy > 80>>
 			<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.2)/500))>>'' from the sex slave buyer for General $peacekeepers.generalName's client state, which prefers $peacekeepers.tastes.
-			<<link "Accept bid" "Slave Sold">><<set $cash += 500*Math.trunc(($slaveCost*1.2)/500), $buyer = "peacekeepers">><</link>>
+			<<link "Accept bid" "Slave Sold">><<set _Price += 500*Math.trunc(($slaveCost*1.2)/500), $buyer = "peacekeepers">><<run cashX(_Price, "slaveSold", $activeSlave)>><</link>>
 		<</if>>
 	<<case "big-breasted cows">>
 		<<if $activeSlave.boobs > 2000 && $activeSlave.lactation > 1>>
 			<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.2)/500))>>'' from the sex slave buyer for General $peacekeepers.generalName's client state, which prefers $peacekeepers.tastes.
-			<<link "Accept bid" "Slave Sold">><<set $cash += 500*Math.trunc(($slaveCost*1.2)/500), $buyer = "peacekeepers">><</link>>
+			<<link "Accept bid" "Slave Sold">><<set _Price += 500*Math.trunc(($slaveCost*1.2)/500), $buyer = "peacekeepers">><<run cashX(_Price, "slaveSold", $activeSlave)>><</link>>
 		<</if>>
 	<<case "beautiful young sex slaves">>
 		<<if $activeSlave.physicalAge < 25 && $activeSlave.visualAge < 25 && $activeSlave.face > 95>>
 			<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.2)/500))>>'' from the sex slave buyer for General $peacekeepers.generalName's client state, which prefers $peacekeepers.tastes.
-			<<link "Accept bid" "Slave Sold">><<set $cash += 500*Math.trunc(($slaveCost*1.2)/500), $buyer = "peacekeepers">><</link>>
+			<<link "Accept bid" "Slave Sold">><<set _Price += 500*Math.trunc(($slaveCost*1.2)/500), $buyer = "peacekeepers">><<run cashX(_Price, "slaveSold", $activeSlave)>><</link>>
 		<</if>>
 	<<case "fertile virgins">>
 		<<if $activeSlave.vagina == 0 && isFertile($activeSlave)>>
 			<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.2)/500))>>'' from the sex slave buyer for General $peacekeepers.generalName's client state, which prefers $peacekeepers.tastes.
-			<<link "Accept bid" "Slave Sold">><<set $cash += 500*Math.trunc(($slaveCost*1.2)/500), $buyer = "peacekeepers">><</link>>
+			<<link "Accept bid" "Slave Sold">><<set _Price += 500*Math.trunc(($slaveCost*1.2)/500), $buyer = "peacekeepers">><<run cashX(_Price, "slaveSold", $activeSlave)>><</link>>
 		<</if>>
 	<<case "lusty preggos">>
 		<<if $activeSlave.preg > $activeSlave.pregData.normalBirth/4 && $activeSlave.energy > 50>>
 			<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.2)/500))>>'' from the sex slave buyer for General $peacekeepers.generalName's client state, which prefers $peacekeepers.tastes.
-			<<link "Accept bid" "Slave Sold">><<set $cash += 500*Math.trunc(($slaveCost*1.2)/500), $buyer = "peacekeepers">><</link>>
+			<<link "Accept bid" "Slave Sold">><<set _Price += 500*Math.trunc(($slaveCost*1.2)/500), $buyer = "peacekeepers">><<run cashX(_Price, "slaveSold", $activeSlave)>><</link>>
 		<</if>>
 	<<case "baby obsessed breeders">>
 		<<if $activeSlave.preg > $activeSlave.pregData.normalBirth/4 && $activeSlave.fetish == "pregnancy" && $activeSlave.sexualFlaw == "breeder">>
 			<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.2)/500))>>'' from the sex slave buyer for General $peacekeepers.generalName's client state, which prefers $peacekeepers.tastes.
-			<<link "Accept bid" "Slave Sold">><<set $cash += 500*Math.trunc(($slaveCost*1.2)/500), $buyer = "peacekeepers">><</link>>
+			<<link "Accept bid" "Slave Sold">><<set _Price += 500*Math.trunc(($slaveCost*1.2)/500), $buyer = "peacekeepers">><<run cashX(_Price, "slaveSold", $activeSlave)>><</link>>
 		<</if>>
 	<<case "bellies with girls attached">>
 		<<if $activeSlave.belly >= 300000>>
 			<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.2)/500))>>'' from the sex slave buyer for General $peacekeepers.generalName's client state, which prefers $peacekeepers.tastes.
-			<<link "Accept bid" "Slave Sold">><<set $cash += 500*Math.trunc(($slaveCost*1.2)/500), $buyer = "peacekeepers">><</link>>
+			<<link "Accept bid" "Slave Sold">><<set _Price += 500*Math.trunc(($slaveCost*1.2)/500), $buyer = "peacekeepers">><<run cashX(_Price, "slaveSold", $activeSlave)>><</link>>
 		<</if>>
 	<<case "flesh balloons">>
 		<<if $activeSlave.boobs > 20000 && $activeSlave.butt > 10>>
 			<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.2)/500))>>'' from the sex slave buyer for General $peacekeepers.generalName's client state, which prefers $peacekeepers.tastes.
-			<<link "Accept bid" "Slave Sold">><<set $cash += 500*Math.trunc(($slaveCost*1.2)/500), $buyer = "peacekeepers">><</link>>
+			<<link "Accept bid" "Slave Sold">><<set _Price += 500*Math.trunc(($slaveCost*1.2)/500), $buyer = "peacekeepers">><<run cashX(_Price, "slaveSold", $activeSlave)>><</link>>
 		<</if>>
 	<</switch>>
 <</if>>
@@ -1821,7 +1897,7 @@ __Bids Received__
 <</if>>
 
 <br><br>
-<<link "Re-list $him" "Sell Slave">><<set $cash -= 500>><</link>>
+<<link "Re-list $him" "Sell Slave">><<run cashX(-500, "slaveTransfer")>><</link>>
 //This will cost <<print cashFormat(500)>>//
 
 <</if>>
diff --git a/src/uncategorized/servantsQuarters.tw b/src/uncategorized/servantsQuarters.tw
index 3b59bcf5c2e2d6567c100b630597a0c54e8a9d89..b78bb72780c1e1b2e478713e46544ea4b60f8c34 100644
--- a/src/uncategorized/servantsQuarters.tw
+++ b/src/uncategorized/servantsQuarters.tw
@@ -88,14 +88,14 @@ $servantsQuartersNameCaps
 
 <<set _Tmult0 = Math.trunc($servantsQuarters*1000*$upgradeMultiplierArcology)>>
 <br>$servantsQuartersNameCaps has room to keep $servantsQuarters slaves while they serve. Currently $servantsQuartersSlaves <<if $servantsQuartersSlaves == 1>>is<<else>>are<</if>> serving.
-[[Expand the Servants' Quarters|Servants' Quarters][$cash -= _Tmult0, $servantsQuarters += 5, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>>//
+[[Expand the Servants' Quarters|Servants' Quarters][cashX(forceNeg(_Tmult0), "capEx"), $servantsQuarters += 5, $PC.engineering += .1]] //Costs <<print cashFormat(_Tmult0)>>//
 
 <br>
 <<if $servantsQuartersUpgradeMonitoring == 1>>
 	The quarters have been upgraded with enhanced monitoring systems to make the servants work harder, improving their obedience and efficiency.
 <<else>>
 	<<set _Tmult1 = Math.trunc(10000*$upgradeMultiplierArcology)>>
-	The quarters are standard. [[Upgrade the monitoring systems to force harder work|Servants' Quarters][$cash -= _Tmult1, $servantsQuartersUpgradeMonitoring = 1]] //Costs <<print cashFormat(_Tmult1)>> and will increase upkeep costs//
+	The quarters are standard. [[Upgrade the monitoring systems to force harder work|Servants' Quarters][cashX(forceNeg(_Tmult1), "capEx"), $servantsQuartersUpgradeMonitoring = 1]] //Costs <<print cashFormat(_Tmult1)>> and will increase upkeep costs//
 <</if>>
 
 <<if $servantMilkers == 1>>
diff --git a/src/uncategorized/servantsQuartersReport.tw b/src/uncategorized/servantsQuartersReport.tw
index b9024446dde5f01cb092263fa2b7695930a873c8..69ff0af01170520178d927e62126b73e6931cbdd 100644
--- a/src/uncategorized/servantsQuartersReport.tw
+++ b/src/uncategorized/servantsQuartersReport.tw
@@ -164,7 +164,7 @@
 			She walks among the cowering servants looking for an excuse to extract sex from shirkers as @@.hotpink;punishment.@@
 		<</if>>
 		/% Get it out of the loop %/
-		<<set $cash += ($stewardessBonus * _DL)>>
+		<<run cashX(($stewardessBonus * _DL), "servantsQuarters", $Stewardess)>>
 		<br><br>
 	<</if>>
 <</if>>
diff --git a/src/uncategorized/slaveInteract.tw b/src/uncategorized/slaveInteract.tw
index b945cc4f1d449ee13f78de25e104e66e1aea2bc4..83be58b7c21aa0c16db4d7d8e5292e57808d8f78 100644
--- a/src/uncategorized/slaveInteract.tw
+++ b/src/uncategorized/slaveInteract.tw
@@ -1794,6 +1794,9 @@ Relationship rules: ''<span id="relationshipRules">$activeSlave.relationshipRule
 	<</if>>
 <</if>>
 
+<br><br>
+__Financial__:
+<<SlaveExpenses $activeSlave>>
 <br><br>
 <<if ($slaveCostFactor > 1)>>
 	@@.yellow;The slave market is bullish; the price of slaves is high.@@
@@ -1807,7 +1810,7 @@ Relationship rules: ''<span id="relationshipRules">$activeSlave.relationshipRule
 	<<elseif $activeSlave.accent > 3>>
 		//$His lack of language and basic life skills is a red sign to most slave appraisers. $He must not act like a child to be sold without raising suspicion.// |
 	<<else>>
-		<<link "Sell $him" "Sell Slave">><<set $cash -= 500>><</link>> //Listing $him for sale will cost <<print cashFormat(500)>>// |
+		<<link "Sell $him" "Sell Slave">><<run cashX(forceNeg(-500), "slaveTransfer", $activeSlave)>><</link>> //Listing $him for sale will cost <<print cashFormat(500)>>// |
 		<<if ($seeAge != 0) && ($activeSlave.indenture < 1)>>
 			<<link "Retire $him" "SE retirement">><<set $retiree = $activeSlave.ID, $retired = 1>><</link>> |
 		<</if>>
diff --git a/src/uncategorized/slaveMarkets.tw b/src/uncategorized/slaveMarkets.tw
index e769202977a25c4cfd9c5aacbc8713b302ac6607..c1ccf6a13e81f047259473cbba3f5b9324805d80 100644
--- a/src/uncategorized/slaveMarkets.tw
+++ b/src/uncategorized/slaveMarkets.tw
@@ -196,11 +196,11 @@ The offered price is <<print cashFormat($slaveCost)>>.<<if $slavesSeen > $slaveM
 
 <<setLocalPronouns $activeSlave>>
 <<if $cash >= $slaveCost>>
-	<br>[["Buy " + $him + " and check out other slaves to order"|Slave Markets][$cash -= $slaveCost, $newSlaves.push($activeSlave), $introType = "multi", $slavesSeen+=1]]
+	<br>[["Buy " + $him + " and check out other slaves to order"|Slave Markets][$cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave), $newSlaves.push($activeSlave), $introType = "multi", $slavesSeen+=1]]
 	<<if $newSlaves.length == 0>>
-		<br>[["Buy " + $his + " slave contract"|New Slave Intro][$cash -= $slaveCost,$nextButton = "Continue",$nextLink = "AS Dump",$returnTo = "Main"]]
+		<br>[["Buy " + $his + " slave contract"|New Slave Intro][$cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave),$nextButton = "Continue",$nextLink = "AS Dump",$returnTo = "Main"]]
 	<<else>>
-		<br>[["Buy " + $him + " and finish your order of slaves"|Bulk Slave Intro][$cash -= $slaveCost, $newSlaves.push($activeSlave)]]
+		<br>[["Buy " + $him + " and finish your order of slaves"|Bulk Slave Intro][$cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave), $newSlaves.push($activeSlave)]]
 	<</if>>
 <<else>>
 	//You lack the necessary funds to buy this slave.//
diff --git a/src/uncategorized/slaveShelter.tw b/src/uncategorized/slaveShelter.tw
index 15c9d5501ec3733bc2ff485e410f7f6c87c26b09..83dc02c6e653a2e17e89708352d8745284d1412b 100644
--- a/src/uncategorized/slaveShelter.tw
+++ b/src/uncategorized/slaveShelter.tw
@@ -388,7 +388,7 @@ The placement fee is <<print cashFormat($slaveCost)>>.
 <<if $cash >= $slaveCost>>
 	<<link "Buy $his slave contract">>
 		<<replace "#result">>
-			<<set $cash -= $slaveCost, $shelterSlaveBought = 1, $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "Main">>
+			<<set $cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave), $shelterSlaveBought = 1, $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "Main">>
 			<<include "New Slave Intro">>
 		<</replace>>
 	<</link>>
diff --git a/src/uncategorized/spa.tw b/src/uncategorized/spa.tw
index 721c6fdad57b374552dd787c38cde6fc16a35c52..7fce3008f83758d7e35157da1c400116b3543af3 100644
--- a/src/uncategorized/spa.tw
+++ b/src/uncategorized/spa.tw
@@ -89,14 +89,14 @@ $spaNameCaps
 
 <<set _Tmult0 = Math.trunc($spa*1000*$upgradeMultiplierArcology)>>
 <br>$spaNameCaps can house $spa slaves while they recuperate here. Currently $spaSlaves <<if $spaSlaves == 1>>is<<else>>are<</if>> recuperating.
-[[Expand the spa|Spa][$cash -= _Tmult0, $spa += 5]] //Costs <<print cashFormat(_Tmult0)>>//
+[[Expand the spa|Spa][cashX(forceNeg(_Tmult0), "capEx"), $spa += 5]] //Costs <<print cashFormat(_Tmult0)>>//
 
 <br>
 <<if $spaUpgrade == 1>>
 	$spaNameCaps has been upgraded with state of the art temperature treatment options, from hot and cold mineral water pools to baking saunas and dense steam rooms.
 <<else>>
 	<<set _Tmult1 = Math.trunc($spa*1000*$upgradeMultiplierArcology)>>
-	$spaNameCaps is a standard spa. [[Upgrade the spa with saunas, steam rooms, and mineral water baths|Spa][$cash -= _Tmult1, $spaUpgrade = 1]] //Costs <<print cashFormat(_Tmult1)>>//
+	$spaNameCaps is a standard spa. [[Upgrade the spa with saunas, steam rooms, and mineral water baths|Spa][cashX(forceNeg(_Tmult1), "capEx"), $spaUpgrade = 1]] //Costs <<print cashFormat(_Tmult1)>>//
 <</if>>
 
 <<if $Attendant != 0>>
diff --git a/src/uncategorized/spaReport.tw b/src/uncategorized/spaReport.tw
index 0cb26dfb59d17944b330b71e2df0a2a28144995b..c848d8562b87b96878918b1513bca1e7a289c477 100644
--- a/src/uncategorized/spaReport.tw
+++ b/src/uncategorized/spaReport.tw
@@ -201,7 +201,7 @@
 	<</for>>
 	<<if (_DL < $spa)>>
 		<<set _seed = random(1,10)+(($spa-_DL)*(random(150,170)+(_idleBonus*10)))>>
-		<<set $cash += _seed>>
+		<<run cashX(_seed, "spa", $Attendant)>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;Since $he doesn't have enough girls to occupy all $his time, the spa takes in citizens' slaves on a contract basis and $he helps them too, earning @@.yellowgreen;<<print cashFormat(_seed)>>.@@
 		<<if ($arcologies[0].FSHedonisticDecadence > 0) && (_DL == 0)>>
 			Society @@.green;loves@@ being allowed to lounge in your spa, greatly advancing your laid back culture.
diff --git a/src/uncategorized/specialSlave.tw b/src/uncategorized/specialSlave.tw
index 414ca98d4dca37433683b67be599e026c0f503d6..320ebfe278156ed91a6c387c8ca0259be9e9fc90 100644
--- a/src/uncategorized/specialSlave.tw
+++ b/src/uncategorized/specialSlave.tw
@@ -93,11 +93,11 @@
 
 	The offered price is <<print cashFormat($slaveCost)>>.
 
-	[["Buy " + $his + " slave contract"|New Slave Intro][$cash -= $slaveCost,$nextButton = "Continue",$nextLink = "AS Dump",$returnTo = "Main",$specialSlave = 1]]
+	[["Buy " + $his + " slave contract"|New Slave Intro][cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave),,$nextButton = "Continue",$nextLink = "AS Dump",$returnTo = "Main",$specialSlave = 1]]
 
 	<br><br>
 
-	[[Pay to access complete catalog of slaves|Complete Catalog][$cash -= 1000]] //Costs <<print cashFormat(1000)>>.//
+	[[Pay to access complete catalog of slaves|Complete Catalog][cashX(-1000, "slaveTransfer")]] //Costs <<print cashFormat(1000)>>.//
 
 	<br><br>
 
diff --git a/src/uncategorized/stClaverPreparatory.tw b/src/uncategorized/stClaverPreparatory.tw
index bee475a6fcdb892516aaf9ca9887680c9c407b7c..140fd159c10e3708d81ab5a6ac6e6d33a299b68b 100644
--- a/src/uncategorized/stClaverPreparatory.tw
+++ b/src/uncategorized/stClaverPreparatory.tw
@@ -24,11 +24,11 @@
 
 <<setLocalPronouns $activeSlave>>
 <<if $cash >= $slaveCost>>
-	<br>[["Buy " + $him + " and check out other slaves to order"|St. Claver Preparatory][$cash -= $slaveCost, $SCP.schoolSale = 0, $SCP.studentsBought += 1, $newSlaves.push($activeSlave), $introType = "multi", $slavesSeen+=1]]
+	<br>[["Buy " + $him + " and check out other slaves to order"|St. Claver Preparatory][$cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave), $SCP.schoolSale = 0, $SCP.studentsBought += 1, $newSlaves.push($activeSlave), $introType = "multi", $slavesSeen+=1]]
 	<<if $newSlaves.length == 0>>
-		<br>[["Buy " + $his + " slave contract"|New Slave Intro][$cash -= $slaveCost, $SCP.schoolSale = 0, $SCP.studentsBought += 1, $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "Main"]]
+		<br>[["Buy " + $his + " slave contract"|New Slave Intro][$cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave), $SCP.schoolSale = 0, $SCP.studentsBought += 1, $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "Main"]]
 	<<else>>
-		<br>[["Buy " + $him + " and finish your order of slaves"|Bulk Slave Intro][$cash -= $slaveCost, $SCP.schoolSale = 0, $SCP.studentsBought += 1, $newSlaves.push($activeSlave)]]
+		<br>[["Buy " + $him + " and finish your order of slaves"|Bulk Slave Intro][$cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave), $SCP.schoolSale = 0, $SCP.studentsBought += 1, $newSlaves.push($activeSlave)]]
 	<</if>>
 <<else>>
 	//You lack the necessary funds to buy this slave.//
diff --git a/src/uncategorized/storyCaption.tw b/src/uncategorized/storyCaption.tw
index b4e1c9070fb97d44ef67fab5710861243af09081..7d267919028c2b5068ce27ccd19cf02dd3c150c9 100644
--- a/src/uncategorized/storyCaption.tw
+++ b/src/uncategorized/storyCaption.tw
@@ -121,7 +121,7 @@
 		since last week)
 		<</link>>
 	<</if>>
-	<br>[[Upkeep|Costs Report]] |
+	<br>[[Upkeep|Costs Budget]] |
 <<else>>
 	<br>Upkeep |
 <</if>><<print cashFormat($costs)>>
diff --git a/src/uncategorized/surgeryDegradation.tw b/src/uncategorized/surgeryDegradation.tw
index 39f11c2c5598afd8b5efca573c83b73703721298..174ed2058a192c41d3ab35a92c2063fc77981edb 100644
--- a/src/uncategorized/surgeryDegradation.tw
+++ b/src/uncategorized/surgeryDegradation.tw
@@ -103,7 +103,7 @@
 			<<set $activeSlave.trust -= 10, $activeSlave.devotion -= 5>>
 		<</if>>
 	<</if>>
-	<<set $activeSlave.boobs = 300, $activeSlave.breastMesh = 0, $activeSlave.health -= 30, $cash -= $surgeryCost>>
+	<<set $activeSlave.boobs = 300, $activeSlave.breastMesh = 0, $activeSlave.health -= 30, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 
 <<else>>
 	<<switch $surgeryType>>
@@ -1737,7 +1737,7 @@ As the remote surgery's long recovery cycle completes,
 	<<if $cyberMod == 0>>
 		During the procedure you may install a prosthetic interface so that $he may use prosthetic limbs immediately afterwards.<br>
 		This will cost extra and put further strain on $activeSlave.slaveName's health, but choosing to do this now will be cheaper and be less damaging to $his health than if you were to perform the procedures separately.<br>
-		[[Install prosthetic interface|Surgery Degradation][$activeSlave.PLimb = 1, $activeSlave.health -= 10, $surgeryType = "ampInterface", $cash -= Math.trunc($surgeryCost/2)]]<br>
+		[[Install prosthetic interface|Surgery Degradation][$activeSlave.PLimb = 1, $activeSlave.health -= 10, $surgeryType = "ampInterface", cashX(forceNeg(Math.trunc($surgeryCost/2)), "slaveSurgery", $activeSlave)]]<br>
 		[[Only perform amputation|Surgery Degradation][$surgeryType = "amp"]]
 	<<else>>
 		Since you invested in cybernetic technology you can install PLimb interface into $his body during the operation.<br>
diff --git a/src/uncategorized/theFutanariSisters.tw b/src/uncategorized/theFutanariSisters.tw
index 7e1444389cbe4198dab5bc140216e15eaa276af3..07b8e4679e6fca4a97976ceaf1ab142d73e7ea0f 100644
--- a/src/uncategorized/theFutanariSisters.tw
+++ b/src/uncategorized/theFutanariSisters.tw
@@ -119,11 +119,11 @@ The price is <<print cashFormat($slaveCost)>>.<<if $slavesSeen > $slaveMarketLim
 
 <<setLocalPronouns $activeSlave>>
 <<if $cash >= $slaveCost>>
-	<br>[["Buy " + $him + " and check out other slaves to order"|The Futanari Sisters][$cash -= $slaveCost, $TFS.schoolSale = 0, $TFS.studentsBought += 1, $newSlaves.push($activeSlave), $introType = "multi", $slavesSeen+=1]]
+	<br>[["Buy " + $him + " and check out other slaves to order"|The Futanari Sisters][$cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave), $TFS.schoolSale = 0, $TFS.studentsBought += 1, $newSlaves.push($activeSlave), $introType = "multi", $slavesSeen+=1]]
 	<<if $newSlaves.length == 0>>
-		<br>[["Buy " + $his + " slave contract"|New Slave Intro][$cash -= $slaveCost, $TFS.schoolSale = 0, $TFS.studentsBought += 1, $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "Main"]]
+		<br>[["Buy " + $his + " slave contract"|New Slave Intro][$cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave), $TFS.schoolSale = 0, $TFS.studentsBought += 1, $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "Main"]]
 	<<else>>
-		<br>[["Buy " + $him + " and finish your order of slaves"|Bulk Slave Intro][$cash -= $slaveCost, $TFS.schoolSale = 0, $TFS.studentsBought += 1, $newSlaves.push($activeSlave)]]
+		<br>[["Buy " + $him + " and finish your order of slaves"|Bulk Slave Intro][$cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave), $TFS.schoolSale = 0, $TFS.studentsBought += 1, $newSlaves.push($activeSlave)]]
 	<</if>>
 <<else>>
 	//You lack the necessary funds to buy this slave.//
diff --git a/src/uncategorized/theGymnasiumAcademy.tw b/src/uncategorized/theGymnasiumAcademy.tw
index 5194021fe2773a115c9da7d16acf417bdb2dc570..6af965cc830b2fe96fc110b307ec9a595918660c 100644
--- a/src/uncategorized/theGymnasiumAcademy.tw
+++ b/src/uncategorized/theGymnasiumAcademy.tw
@@ -24,11 +24,11 @@
 
 <<setLocalPronouns $activeSlave>>
 <<if $cash >= $slaveCost>>
-	<br>[["Buy " + $him + " and check out other slaves to order"|The Gymnasium-Academy][$cash -= $slaveCost, $TGA.schoolSale = 0, $TGA.studentsBought += 1, $newSlaves.push($activeSlave), $introType = "multi", $slavesSeen+=1]]
+	<br>[["Buy " + $him + " and check out other slaves to order"|The Gymnasium-Academy][$cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave), $TGA.schoolSale = 0, $TGA.studentsBought += 1, $newSlaves.push($activeSlave), $introType = "multi", $slavesSeen+=1]]
 	<<if $newSlaves.length == 0>>
-		<br>[["Buy " + $his + " slave contract"|New Slave Intro][$cash -= $slaveCost, $TGA.schoolSale = 0, $TGA.studentsBought += 1, $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "Main"]]
+		<br>[["Buy " + $his + " slave contract"|New Slave Intro][$cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave), $TGA.schoolSale = 0, $TGA.studentsBought += 1, $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "Main"]]
 	<<else>>
-		<br>[["Buy " + $him + " and finish your order of slaves"|Bulk Slave Intro][$cash -= $slaveCost, $TGA.schoolSale = 0, $TGA.studentsBought += 1, $newSlaves.push($activeSlave)]]
+		<br>[["Buy " + $him + " and finish your order of slaves"|Bulk Slave Intro][$cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave), $TGA.schoolSale = 0, $TGA.studentsBought += 1, $newSlaves.push($activeSlave)]]
 	<</if>>
 <<else>>
 	//You lack the necessary funds to buy this slave.//
diff --git a/src/uncategorized/theSlavegirlSchool.tw b/src/uncategorized/theSlavegirlSchool.tw
index 50fef1f068e773d58c2b19ad43d7e5c907ee02d7..d356e2914f12f99493b80013b0b472b81f32ba35 100644
--- a/src/uncategorized/theSlavegirlSchool.tw
+++ b/src/uncategorized/theSlavegirlSchool.tw
@@ -24,11 +24,11 @@
 
 <<setLocalPronouns $activeSlave>>
 <<if $cash >= $slaveCost>>
-	<br>[["Buy " + $him + " and check out other slaves to order"|The Slavegirl School][$cash -= $slaveCost, $TSS.schoolSale = 0, $TSS.studentsBought += 1, $newSlaves.push($activeSlave), $introType = "multi", $slavesSeen+=1]]
+	<br>[["Buy " + $him + " and check out other slaves to order"|The Slavegirl School][$cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave), $TSS.schoolSale = 0, $TSS.studentsBought += 1, $newSlaves.push($activeSlave), $introType = "multi", $slavesSeen+=1]]
 	<<if $newSlaves.length == 0>>
-		<br>[["Buy " + $his + " slave contract"|New Slave Intro][$cash -= $slaveCost, $TSS.schoolSale = 0, $TSS.studentsBought += 1, $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "Main"]]
+		<br>[["Buy " + $his + " slave contract"|New Slave Intro][$cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave), $TSS.schoolSale = 0, $TSS.studentsBought += 1, $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "Main"]]
 	<<else>>
-		<br>[["Buy " + $him + " and finish your order of slaves"|Bulk Slave Intro][$cash -= $slaveCost, $TSS.schoolSale = 0, $TSS.studentsBought += 1, $newSlaves.push($activeSlave)]]
+		<br>[["Buy " + $him + " and finish your order of slaves"|Bulk Slave Intro][$cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave), $TSS.schoolSale = 0, $TSS.studentsBought += 1, $newSlaves.push($activeSlave)]]
 	<</if>>
 <<else>>
 	//You lack the necessary funds to buy this slave.//
diff --git a/src/utility/birthWidgets.tw b/src/utility/birthWidgets.tw
index 557185b8d0e49fc89d4bf75c47611e325f16f2ea..118a47f9cb2275aca6b4a3b29cc27709fca712c1 100644
--- a/src/utility/birthWidgets.tw
+++ b/src/utility/birthWidgets.tw
@@ -1081,7 +1081,7 @@
 	<<set $humiliation = 1>>
 	<<ClothingBirth>>
 	Upon completing $his show, $he reclines with $his $slaves[$i].pregType child<<if $slaves[$i].pregType > 1>>ren<</if>> and begins counting the credits $he bought in. In total $he made <<print cashFormat(100*_birthScene)>> and feels that business will be up in the brothel as patrons line up hoping another showing.
-	<<set $cash += 100*_birthScene>>
+	<<run cashX((100*_birthScene), "birth", $slaves[$i])>>
 
 <<case "be the Schoolteacher">>
 	<<if !canWalk($slaves[$i])>>
diff --git a/src/utility/slaveCreationWidgets.tw b/src/utility/slaveCreationWidgets.tw
index 129225ead1d4956f7ea9ee32296b4a37886f242d..523b91f969736c1028e03411b0ef19a8739f3afb 100644
--- a/src/utility/slaveCreationWidgets.tw
+++ b/src/utility/slaveCreationWidgets.tw
@@ -729,7 +729,7 @@
 		<<link "Add this slave">>
 			<<set $returnTo = "Commit Starting Girl", $createRelatedSlave = 0, $applyCareerBonus = 1, $careerBonusApplied = 0>>
 			<<StartingSlaveCost $activeSlave>>
-			<<set $cash -= $slaveCost>>
+			<<run cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave)>>
 			<<goto "RG AS Dump">>
 		<</link>>
 		//This will apply your @@.springgreen;career bonus@@ to $him:
@@ -760,7 +760,7 @@
 		<<link "Add slave without career bonus">>
 			<<set $returnTo = "Commit Starting Girl", $createRelatedSlave = 0, $applyCareerBonus = 0, $careerBonusApplied = 0>>
 			<<StartingSlaveCost $activeSlave>>
-			<<set $cash -= $slaveCost>>
+			<<run cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave)>>
 			<<goto "RG AS Dump">>
 		<</link>>
 	<<else>>
@@ -768,7 +768,7 @@
 		<<link "Add slave">>
 			<<set $returnTo = "Commit Starting Girl", $createRelatedSlave = 0, $applyCareerBonus = 0, $careerBonusApplied = 0>>
 			<<StartingSlaveCost $activeSlave>>
-			<<set $cash -= $slaveCost>>
+			<<run cashX(forceNeg($slaveCost), "slaveTransaction", $activeSlave)>>
 			<<goto "RG AS Dump">>
 		<</link>>
 		<br>