diff --git a/slave variables documentation - Pregmod.txt b/slave variables documentation - Pregmod.txt
index 2f440a2b8e484e47cf2293f54051bf579f554339..e5db8973851d24928b25034ddc4d665ec0ebb965 100644
--- a/slave variables documentation - Pregmod.txt	
+++ b/slave variables documentation - Pregmod.txt	
@@ -461,6 +461,11 @@ rules.rest:
 "permissive"	- slave is allowed to rest when tired
 "mandatory"		- day of rest each week to recover
 
+rules.mobility
+
+"restrictive"	- slave is forced to crawl should she grow too large to walk
+"permissive"	- slave is allowed to use carts and such to carry her weight should she grow too large to walk
+
 rules.relationship:
 
 "restrictive"
diff --git a/src/data/backwardsCompatibility/datatypeCleanup.js b/src/data/backwardsCompatibility/datatypeCleanup.js
index 4564df3e1027f97c63cd859987bea7823421d2c2..60a17047a0e5579de773a24678db928f63fc925a 100644
--- a/src/data/backwardsCompatibility/datatypeCleanup.js
+++ b/src/data/backwardsCompatibility/datatypeCleanup.js
@@ -1049,6 +1049,9 @@ globalThis.SlaveDatatypeCleanup = (function SlaveDatatypeCleanup() {
 		slave.choosesOwnChastity = Math.clamp(+slave.choosesOwnChastity, 0, 1) || 0;
 		slave.breedingMark = Math.clamp(+slave.breedingMark, 0, 1) || 0;
 		slave.rudeTitle = Math.clamp(+slave.rudeTitle, 0, 1) || 0;
+		if (typeof slave.rules.mobility !== "string") {
+			slave.rules.mobility = "restrictive";
+		}
 	}
 
 	/**
diff --git a/src/gui/css/mainStyleSheet.css b/src/gui/css/mainStyleSheet.css
index 6df18302381e551ba35766130030421d7bf9f36e..ea810776e556246be27260e75ebe1efc1403990f 100644
--- a/src/gui/css/mainStyleSheet.css
+++ b/src/gui/css/mainStyleSheet.css
@@ -339,7 +339,7 @@ div.double-choices, p.double-choices {
 	font-style: italic;
 }
 
-.story-label {
+.story-label, .underline {
 	text-decoration: underline;
 }
 
diff --git a/src/js/SlaveState.js b/src/js/SlaveState.js
index 0313f4892c1647257af7136a5957860d5b24dfe2..92f35f702d2f61f60101b8c11ff2fd131ffaa698 100644
--- a/src/js/SlaveState.js
+++ b/src/js/SlaveState.js
@@ -44,6 +44,12 @@ App.Entity.RuleState = class RuleState {
 		 * * "mandatory"
 		 */
 		this.rest = "restrictive";
+		/**
+		 * Is the slave allowed to use mobility aids
+		 * * "restrictive"
+		 * * "permissive"
+		 */
+		this.mobility = "restrictive";
 		/**
 		 * * "restrictive"
 		 * * "permissive"
diff --git a/src/js/slaveExpenses.js b/src/js/slaveExpenses.js
new file mode 100644
index 0000000000000000000000000000000000000000..9327b167f0a27bd01feb87deb0025fc4658a47f3
--- /dev/null
+++ b/src/js/slaveExpenses.js
@@ -0,0 +1,231 @@
+/**
+ * Returns a block that describes an overview of the slave's impact on your reputation and finances in the short term
+ * @param {App.Entity.SlaveState} slave
+ * @returns {node}
+ */
+globalThis.slaveExpenses = function(slave) {
+	const frag = new DocumentFragment();
+	let div;
+
+	// Generate the lines of the report
+	for (const line of getSlaveCostArray(slave)) {
+		div = document.createElement("div");
+		div.classList.add("indent");
+		App.UI.DOM.appendNewElement("span", div, `${line.text}: `);
+		App.UI.DOM.appendNewElement("span", div, cashFormat(line.value), "cash");
+		frag.append(div);
+	}
+
+	// Total expenses
+	const individualCosts = getSlaveCost(slave);
+	div = document.createElement("div");
+	div.classList.add("double-indent");
+
+	App.UI.DOM.appendNewElement("span", div, "Predicted expense", "underline");
+	div.append(": ");
+	div.append(App.UI.DOM.cashFormat(-individualCosts));
+	frag.append(div);
+
+	// Income from last week vs expense gives net, assistant gated
+	if (V.assistant.power > 0) {
+		if (slave.lastWeeksCashIncome > 0) {
+			div = document.createElement("div");
+			div.classList.add("indent");
+			App.UI.DOM.appendNewElement("span", div, `Income: `);
+			div.append(App.UI.DOM.cashFormat(slave.lastWeeksCashIncome));
+			frag.append(div);
+
+			div = document.createElement("div");
+			div.classList.add("double-indent");
+			App.UI.DOM.appendNewElement("span", div, `Total`, "underline");
+			App.UI.DOM.appendNewElement("span", div, `: `);
+			div.append(App.UI.DOM.cashFormat(slave.lastWeeksCashIncome - individualCosts));
+			frag.append(div);
+		}
+	}
+	frag.append(slaveImpactLongTerm(slave));
+
+	return frag;
+};
+
+/**
+ * Returns a block that describes an overview of the slave's impact on your reputation and finances over the long term
+ * @param {App.Entity.SlaveState} slave
+ * @returns {node}
+ */
+globalThis.slaveImpactLongTerm = function(slave) {
+	const frag = new DocumentFragment();
+	const {he, his, him} = getPronouns(slave);
+	let p;
+	let div;
+	let span;
+	let _Cost;
+	let _Expense;
+	let _Income;
+	let text;
+
+	// Background and original cost
+	if (slave.origin !== 0) {
+		App.UI.DOM.appendNewElement("div", frag, pronounsForSlaveProp(slave, slave.origin), "indent");
+	}
+	div = document.createElement("div");
+	div.classList.add("indent");
+	if (slave.slaveCost < 0) {
+		div.append(`You bought ${him} for: `);
+		div.append(App.UI.DOM.cashFormat(slave.slaveCost));
+		div.append(`.`);
+		_Cost = slave.slaveCost;
+	} else if (slave.slaveCost === 0) {
+		div.append(`You spent nothing to acquire ${him}.`);
+		_Cost = slave.slaveCost;
+	} else {
+		text = `You have no record of how much `;
+		if (slave.origin !== 0) {
+			text += `this`;
+		} else {
+			text += `${he} originally`;
+		}
+		text += ` cost.`;
+		div.append(text);
+		_Cost = 0;
+	}
+	frag.append(div);
+
+	// Lifetime totals, assistant gated
+	if (V.assistant.power > 0) {
+		const _weeksOwned = V.week - slave.weekAcquired;
+		// Lifetime expense
+		div = document.createElement("div");
+		div.classList.add("indent");
+		if (slave.lifetimeCashExpenses < 0) {
+			text = `In ${his} `;
+			if (_weeksOwned > 0) {
+				text += `${_weeksOwned} `;
+				if (_weeksOwned === 1) {
+					text += `week`;
+				} else {
+					text += `weeks`;
+				}
+			} else {
+				text += `time`;
+			}
+			text += ` with you, ${he} has cost `;
+			div.append(text);
+			div.append(App.UI.DOM.cashFormat(slave.lifetimeCashExpenses));
+			div.append(`.`);
+			_Expense = slave.lifetimeCashExpenses;
+		} else {
+			div.append(`You have no record of ${him} costing you any ¤.`);
+			_Expense = 0;
+		}
+		frag.append(div);
+
+		// Lifetime income
+		div = document.createElement("div");
+		div.classList.add("indent");
+		if (slave.lifetimeCashIncome > 0) {
+			text = `In ${his} `;
+			if (_weeksOwned > 0) {
+				text += `${_weeksOwned} `;
+				if (_weeksOwned === 1) {
+					text += `week`;
+				} else {
+					text += `weeks`;
+				}
+			} else {
+				text += `time`;
+			}
+			text += ` with you, ${he} has earned `;
+			div.append(text);
+			div.append(App.UI.DOM.cashFormat(slave.lifetimeCashIncome));
+			div.append(`.`);
+			_Income = slave.lifetimeCashIncome;
+		} else {
+			div.append(`You have no record of ${him} making you any ¤.`);
+			_Income = 0;
+		}
+		frag.append(div);
+
+		// Lifetime total
+		div = document.createElement("div");
+		div.classList.add("indent");
+		div.append(`Overall, `);
+		if ((_Income + _Cost + _Expense) > 0) {
+			div.append(`you have made `);
+			div.append(App.UI.DOM.cashFormat(_Income + _Cost + _Expense));
+			div.append(` net from ${his} labors.`);
+		} else if ((_Income + _Cost + _Expense) === 0) {
+			div.append(`${he} is even in cost and income.`);
+		} else {
+			div.append(`${he} has cost you `);
+			div.append(App.UI.DOM.cashFormat(_Income + _Cost + _Expense));
+			div.append(`.`);
+		}
+		frag.append(div);
+
+		// Reputation:
+		p = document.createElement("p");
+		if (slave.lifetimeRepIncome !== 0 || slave.lifetimeRepExpenses !== 0) {
+			let _repTotal = (slave.lifetimeRepIncome + slave.lifetimeRepExpenses);
+			if (V.cheatMode === 1 || V.debugMode === 1) {
+				if (slave.lifetimeRepIncome !== 0) {
+					div = document.createElement("div");
+					div.classList.add("indent");
+					div.append(`This week ${he} has `);
+					if (slave.lastWeeksRepIncome === 0) {
+						div.append(`had no positive effect on your reputation, but `);
+					} else {
+						div.append(`improved your reputation by `);
+						App.UI.DOM.appendNewElement("span", div, num(slave.lastWeeksRepIncome), "green");
+						div.append(` and `);
+					}
+					div.append(`over ${his} entire time with you, ${he} gained `);
+					App.UI.DOM.appendNewElement("span", div, `${num(slave.lifetimeRepIncome)}.`, "green");
+					p.append(div);
+				}
+
+				if (slave.lifetimeRepExpenses !== 0) {
+					div = document.createElement("div");
+					div.classList.add("indent");
+					div.append(`This week ${he} has `);
+					if (slave.lastWeeksRepExpenses === 0) {
+						div.append(`had no negative effect on your reputation, but `);
+					} else {
+						div.append(`lowered your reputation by `);
+						App.UI.DOM.appendNewElement("span", div, slave.lastWeeksRepExpenses, "red");
+						div.append(` and `);
+					}
+					div.append(`over ${his} entire time with you, ${he} cost `);
+					App.UI.DOM.appendNewElement("span", div, `${slave.lifetimeRepExpenses}.`, "red");
+					p.append(div);
+				}
+
+				div = document.createElement("div");
+				div.classList.add("indent");
+				div.append(`Overall then, ${he} has changed your reputation by `);
+				span = document.createElement("span");
+				if (_repTotal > 0) {
+					span.classList.add("green");
+				} else if (_repTotal < 0) {
+					span.classList.add("red");
+				}
+				span.append(num(_repTotal));
+				div.append(span);
+				p.append(div);
+			} else {
+				/* lowercasedonkey: TODO: I don't like how vague my placeholder is. Probably need to set up some kind of sliding scale to describe how much rep (roughly) she has made or lost. Need to get a sense of common ranges. */
+				text = `Overall, ${he} has `;
+				if (_repTotal === 0) {
+					text += `had no impact on your reputation.`;
+				} else if (_repTotal > 0) {
+					text += `<span class="green">increased</span> your reputation.`;
+				} else if (_repTotal < 0) {
+					text += `<span class="red">decreased</span> your reputation.`;
+				}
+				App.UI.DOM.appendNewElement("div", p, text, "indent");
+			}
+		}
+		frag.append(p);
+	}
+	return frag;
+};
diff --git a/src/js/utilsDOM.js b/src/js/utilsDOM.js
index 27531125aa81bb12b0711a878886f59807ec5109..efd222f544541de35cd3d3df43b596a2aab60db1 100644
--- a/src/js/utilsDOM.js
+++ b/src/js/utilsDOM.js
@@ -382,3 +382,14 @@ Macro.add("includeDOM", {
 		}
 	}
 });
+
+App.UI.DOM.cashFormat = function(s) {
+	const span = document.createElement("span");
+	if (s < 0) { // Display red if the value is negative, unless invert is true
+		span.classList.add("red");
+	} else if (s !== 0) { // Yellow for positive
+		span.classList.add("cash");
+	}
+	span.textContent = cashFormat(Math.trunc(s));
+	return span;
+};
diff --git a/src/npc/descriptions/boobs/boobs.js b/src/npc/descriptions/boobs/boobs.js
index 9c4bee2b3d184398752a2997efee1c632344c953..9de9fdcfc75013a7953d16416ca18b01268f3d2d 100644
--- a/src/npc/descriptions/boobs/boobs.js
+++ b/src/npc/descriptions/boobs/boobs.js
@@ -1528,7 +1528,7 @@ App.Desc.boobsExtra = function(slave, {market, eventDescription} = {}) {
 				} else {
 					res.push(`Together they are nearly the same size as ${his} torso, making ${him} about half boob.`);
 				}
-				if (canMove(eventSlave) && !canWalk(eventSlave)) {
+				if (canMove(slave) && !canWalk(slave)) {
 					res.push(`${His} breasts are so heavy that it is difficult for ${him} to move at all.`);
 					res.push(movingRestrictions(dairyTest));
 				}
diff --git a/src/npc/interaction/fSlaveFeed.tw b/src/npc/interaction/fSlaveFeed.tw
index a91527177c410e4195e867e669f2ece6366613a6..e7d6fe2cc5a86b40a31abd995d9e7e68220a77b5 100644
--- a/src/npc/interaction/fSlaveFeed.tw
+++ b/src/npc/interaction/fSlaveFeed.tw
@@ -22,6 +22,12 @@
 
 <<if getSlave($AS).inflationType == "milk">>
 <<set getSlave($AS).milkSource = $milkTap.ID>>
+<<if $milkTap.behavioralQuirk == "sinful" || $milkTap.sexualQuirk == "perverted" || $milkTap.fetish == "incest">> /* incest is a planned fetish, don't touch it! */
+	<<set _incestGive = 1>>
+<</if>>
+<<if getSlave($AS).behavioralQuirk == "sinful" || getSlave($AS).sexualQuirk == "perverted" || getSlave($AS).fetish == "incest">>
+	<<set _incestTake = 1>>
+<</if>>
 
 The first necessary step is to prepare the milk cow and _his2 udders.
 
@@ -52,19 +58,107 @@ The first necessary step is to prepare the milk cow and _his2 udders.
 	This is very easy, since $milkTap.slaveName loves _his2 tits played with and can't wait to get suckled. <<if $milkTap.lactation > 1>>_he2 is practically gushing milk with excitement<<else>>It takes next to no effort to get _his2 milk flowing<</if>>.
 
 <<elseif getSlave($AS).mother == $milkTap.ID>>
-	This is easy enough, as $milkTap.slaveName fondly remembers nursing _his2 <<print relativeTerm($milkTap, getSlave($AS))>>. <<if $milkTap.lactation > 1>>$he is practically gushing milk with nostalgia<<else>>It takes minimal effort to get _his2 milk flowing<</if>>.
+	<<if _incestGive>>
+		This is easy enough, as $milkTap.slaveName fondly remembers nursing _his2 <<print relativeTerm($milkTap, getSlave($AS))>>.
+	<<else>>
+		This is fairly easy, as $milkTap.slaveName's body remembers nursing _his2 <<print relativeTerm($milkTap, getSlave($AS))>>, even if $he is resistant to the idea.
+	<</if>>
+	<<if $milkTap.lactation > 1>>
+		_He2 is practically gushing milk with nostalgia.
+	<<else>>
+		It takes minimal effort to get _his2 milk flowing.
+	<</if>>
 <<elseif getSlave($AS).father == $milkTap.ID>>
-	This is extremely tough, as $milkTap.slaveName is very uncomfortable breast feeding the $girl _he2 sired. <<if $milkTap.lactation > 1>>_His2 excessive milk production quickly leaves _him2 eager for release, however<<else>>It takes some coaxing and kneading to get _his2 milk flowing and _him2 eager for relief<</if>>.
+	<<if _incestGive>>
+		This is easy enough, as $milkTap.slaveName is aroused at the thought of breast feeding the $girl _he2 sired.
+		<<if $milkTap.lactation > 1>>
+			_He2 is practically gushing milk with excitement.
+		<<else>>
+			It takes minimal effort to get _his2 milk flowing.
+		<</if>>
+	<<else>>
+		This is extremely tough, as $milkTap.slaveName is very uncomfortable breast feeding the $girl _he2 sired.
+		<<if $milkTap.lactation > 1>>
+			_His2 excessive milk production quickly leaves _him2 eager for release, however.
+		<<else>>
+			It takes some coaxing and kneading to get _his2 milk flowing and _him2 eager for relief.
+		<</if>>
+	<</if>>
 <<elseif $milkTap.mother == getSlave($AS).ID>>
-	This is moderately tough, as $milkTap.slaveName finds it awkward to nurse _his2 own mother. <<if $milkTap.lactation > 1>>_His2 excessive milk production quickly leaves _him2 eager for release<<else>>It takes some coaxing and kneading to get _his2 milk flowing and _him2 eager for relief<</if>>.
+	<<if _incestGive>>
+		This is easy enough, as $milkTap.slaveName is aroused at the lewdity of breast feeding _his2 own mother.
+		<<if $milkTap.lactation > 1>>
+			_He2 is practically gushing milk with excitement.
+		<<else>>
+			It takes minimal effort to get _his2 milk flowing.
+		<</if>>
+	<<else>>
+		This is moderately tough, as $milkTap.slaveName finds it awkward to nurse _his2 own mother.
+		<<if $milkTap.lactation > 1>>
+			_His2 excessive milk production quickly leaves _him2 eager for release.
+		<<else>>
+			It takes some coaxing and kneading to get _his2 milk flowing and _him2 eager for relief.
+		<</if>>
+	<</if>>
 <<elseif $milkTap.father == getSlave($AS).ID>>
-	This is very tough, as $milkTap.slaveName finds it weird to let _his2 father suckle from _him2. <<if $milkTap.lactation > 1>>_His2 excessive milk production quickly leaves _him2 eager for release, however<<else>>It takes some coaxing and kneading to get _his2 milk flowing and _him2 eager for relief<</if>>.
+	<<if _incestGive>>
+		This is easy enough, as having _his2 father drink _his2 milk is a taboo $milkTap.slaveName can't wait to break.
+		<<if $milkTap.lactation > 1>>
+			_He2 is practically gushing milk with excitement.
+		<<else>>
+			It takes minimal effort to get _his2 milk flowing.
+		<</if>>
+	<<else>>
+		This is very tough, as $milkTap.slaveName finds it weird to let _his2 father suckle from _him2.
+		<<if $milkTap.lactation > 1>>
+			_His2 excessive milk production quickly leaves _him2 eager for release, however.
+		<<else>>
+			It takes some coaxing and kneading to get _his2 milk flowing and _him2 eager for relief.
+		<</if>>
+	<</if>>
 <<elseif areSisters(getSlave($AS), $milkTap) == 1>>
-	This is easy enough, as $milkTap.slaveName wants _his2 <<print relativeTerm(getSlave($AS), $milkTap)>> to try _his2 milk, but only if $he can taste $hers too. <<if $milkTap.lactation > 1>>$he is practically gushing milk with excitement<<else>>It takes minimal effort to get _his2 milk flowing<</if>>.
+	<<if _incestGive>>
+		This is easy enough, as having $milkTap.slaveName enjoys sexually experimenting with _his2 <<print relativeTerm(getSlave($AS), $milkTap)>>.
+	<<else>>
+		This is easy enough, as $milkTap.slaveName wants _his2 <<print relativeTerm(getSlave($AS), $milkTap)>> to try _his2 milk, but only if $he can taste $hers too.
+	<</if>>
+	<<if $milkTap.lactation > 1>>
+		_He2 is practically gushing milk with excitement.
+	<<else>>
+		It takes minimal effort to get _his2 milk flowing.
+	<</if>>
 <<elseif areSisters(getSlave($AS), $milkTap) == 2>>
-	This is moderately tough, as $milkTap.slaveName is uncomfortable getting so intimate with _his2 <<print relativeTerm($milkTap, getSlave($AS))>>. <<if $milkTap.lactation > 1>>_His2 excessive milk production quickly leaves _him2 eager for release<<else>>It takes some coaxing and kneading to get _his2 milk flowing and _him2 eager for relief<</if>>.
+	<<if _incestGive>>
+		This is easy enough, as having $milkTap.slaveName enjoys sexually experimenting with _his2 <<print relativeTerm(getSlave($AS), $milkTap)>>.
+		<<if $milkTap.lactation > 1>>
+			_He2 is practically gushing milk with excitement.
+		<<else>>
+			It takes minimal effort to get _his2 milk flowing.
+		<</if>>
+	<<else>>
+		This is moderately tough, as $milkTap.slaveName is uncomfortable getting so intimate with _his2 <<print relativeTerm($milkTap, getSlave($AS))>>.
+		<<if $milkTap.lactation > 1>>
+			_His2 excessive milk production quickly leaves _him2 eager for release.
+		<<else>>
+			It takes some coaxing and kneading to get _his2 milk flowing and _him2 eager for relief.
+		<</if>>
+	<</if>>
 <<elseif areSisters(getSlave($AS), $milkTap) == 3>>
-	This is slightly difficult, as $milkTap.slaveName is uncomfortable getting so intimate with _his2 <<print relativeTerm($milkTap, getSlave($AS))>>. <<if $milkTap.lactation > 1>>_His2 excessive milk production quickly leaves _him2 eager for release<<else>>It takes some coaxing and kneading to get _his2 milk flowing and _him2 eager for relief<</if>>.
+	<<if _incestGive>>
+		This is easy enough, as having $milkTap.slaveName enjoys sexually experimenting with _his2 <<print relativeTerm(getSlave($AS), $milkTap)>>.
+		<<if $milkTap.lactation > 1>>
+			_He2 is practically gushing milk with excitement.
+		<<else>>
+			It takes minimal effort to get _his2 milk flowing.
+		<</if>>
+	<<else>>
+		This is slightly difficult, as $milkTap.slaveName is uncomfortable getting so intimate with _his2 <<print relativeTerm($milkTap, getSlave($AS))>>.
+		<<if $milkTap.lactation > 1>>
+			_His2 excessive milk production quickly leaves _him2 eager for release.
+		<<else>>
+			It takes some coaxing and kneading to get _his2 milk flowing and _him2 eager for relief.
+		<</if>>
+	<</if>>
 
 <<elseif ($milkTap.lactation > 1) && ($milkTap.devotion >= -20)>>
 	Since $milkTap.slaveName produces so much milk, _he2 eagerly accepts any source of relief _he2 can manage.
@@ -116,17 +210,21 @@ Next, you see to <<= getSlave($AS).slaveName>>.
 <<elseif getSlave($AS).mother == $milkTap.ID>>
 	$He draws close to $his mother's nipples, trying to remember if $he once had a favorite.
 <<elseif getSlave($AS).father == $milkTap.ID>>
-	$He hesitatingly lowers $himself to $his father's nipple. <<if $milkTap.dick > 0 && canAchieveErection($milkTap)>> $he nearly backs away when $he feels the dick that sired $him poking at $his belly.<</if>>
+	<<if _incestTake>>
+		$He eagerly wraps $his lips around $his father's nipple.<<if canAchieveErection($milkTap)>> $He shudders with budding lust when $he feels the dick that sired $him poking at $his belly.<</if>>
+	<<else>>
+		$He hesitatingly lowers $himself to $his father's nipple.<<if canAchieveErection($milkTap)>> $He nearly backs away when $he feels the dick that sired $him poking at $his belly.<</if>>
+	<</if>>
 <<elseif $milkTap.mother == getSlave($AS).ID>>
-	$He awkwardly brings $his lips to $his <<print relativeTerm(getSlave($AS), $milkTap)>>'s nipple.
+	$He <<if _incestTake>>happily<<else>>awkwardly<</if>> brings $his lips to $his <<print relativeTerm(getSlave($AS), $milkTap)>>'s nipple.
 <<elseif $milkTap.father == getSlave($AS).ID>>
-	$He awkwardly brings $his lips to $his <<print relativeTerm(getSlave($AS), $milkTap)>>'s nipple<<if getSlave($AS).dick > 0 && canAchieveErection(getSlave($AS))>>, $his cock steadily hardening at the perversion of suckling from $his child<</if>>.
+	$He <<if _incestTake>>eagerly<<else>>awkwardly<</if>> brings $his lips to $his <<print relativeTerm(getSlave($AS), $milkTap)>>'s nipple<<if canAchieveErection(getSlave($AS))>>, $his cock steadily hardening at the perversion of suckling from $his child<</if>>.
 <<elseif areSisters(getSlave($AS), $milkTap) == 1>>
 	$He readily gets in position to <<if canTaste(getSlave($AS))>>taste<<else>>suckle from<</if>> $his <<print relativeTerm(getSlave($AS), $milkTap)>><<if getSlave($AS).lactation > 0>> while coaxing $his own milk to flow<</if>>.
 <<elseif areSisters(getSlave($AS), $milkTap) == 2>>
-	$He hesitatingly lowers $himself to $his <<print relativeTerm(getSlave($AS), $milkTap)>>'s nipple.
+	$He <<if _incestTake>>eagerly wraps $his lips around<<else>>hesitatingly lowers $himself to<</if>> $his <<print relativeTerm(getSlave($AS), $milkTap)>>'s nipple.
 <<elseif areSisters(getSlave($AS), $milkTap) == 3>>
-	$He hesitatingly lowers $himself to $his <<print relativeTerm(getSlave($AS), $milkTap)>>'s nipple.
+	$He <<if _incestTake>>eagerly wraps $his lips around<<else>>hesitatingly lowers $himself to<</if>> $his <<print relativeTerm(getSlave($AS), $milkTap)>>'s nipple.
 
 <<elseif (getSlave($AS).fetish == "boobs") && (getSlave($AS).fetishKnown == 1) && (getSlave($AS).fetishStrength > 60) && (getSlave($AS).devotion >= -20)>>
 	$He can't wait to <<if hasBothArms(getSlave($AS))>>wrap $his hands around<<else>>get between<</if>> $milkTap.slaveName's massive milky breasts and eagerly approaches $his nipples to suckle.
@@ -176,7 +274,7 @@ Next, you see to <<= getSlave($AS).slaveName>>.
 <<elseif getSlave($AS).mother == $milkTap.ID>>
 	$milkTap.slaveName sighs contently as _his2 little $girl once again suckles from _his2 breasts. You enjoy the show, specifically the sight of <<= getSlave($AS).slaveName>>'s belly steadily growing larger until <<if getSlave($AS).inflation == 3>>$his belly is round and taut, making $him look pregnant. $He pops off $his mother's nipple and settles into _his2 breasts for a short rest while hiccupping<<if hasAnyArms(getSlave($AS))>> and rubbing $his gurgling stomach<</if>><<elseif getSlave($AS).inflation == 2>>$his belly is round, jiggling and sloshing with milk. $He pops off $his mother's nipple and settles into _his2 breasts for a short rest while hiccupping<<if hasAnyArms(getSlave($AS))>> and teasing $his wobbling, gurgling stomach<</if>><<elseif getSlave($AS).inflation == 1>>$his belly is distended and sloshing with milk. $He pops off $his mother's nipple and settles into _his2 breasts for a short rest while hiccupping<<if hasAnyArms(getSlave($AS))>> and teasing $his gurgling stomach<</if>><</if>>.
 <<elseif getSlave($AS).father == $milkTap.ID>>
-	$milkTap.slaveName moans lewdly as _his2 <<print relativeTerm($milkTap, getSlave($AS))>> suckles from _his2 breasts<<if $milkTap.dick > 0 && canAchieveErection($milkTap)>>, _his2 dick throbbing with lust<</if>>. You enjoy the show, specifically the sight of <<= getSlave($AS).slaveName>>'s belly steadily growing larger until <<if getSlave($AS).inflation == 3>>$his belly is round and taut, making $him look pregnant. $He pops off $his father's nipple and settles into _his2 breasts for a short rest while hiccupping<<if hasAnyArms(getSlave($AS))>> and rubbing $his gurgling stomach<</if>><<elseif getSlave($AS).inflation == 2>>$his belly is round, jiggling and sloshing with milk. $He pops off $his father's nipple and settles into _his2 breasts for a short rest while hiccupping<<if hasAnyArms(getSlave($AS))>> and teasing $his wobbling, gurgling stomach<</if>><<elseif getSlave($AS).inflation == 1>>$his belly is distended and sloshing with milk. $He pops off $his father's nipple and settles into _his2 breasts for a short rest while hiccupping<<if hasAnyArms(getSlave($AS))>> and teasing $his gurgling stomach<</if>><</if>><<if $milkTap.dick > 0 && canAchieveErection($milkTap)>><<if getSlave($AS).sexualQuirk == "perverted">>. The way $he is wiggling $his hips suggests $he isn't finished with $his daddy just yet, and $his father's moaning confirms $he is teasing _him2 with $his rear. $He giggles as the horny cow unloads on $his backside<<else>>. $He doesn't stay put for long, as a strong moan and a blast of cum across $his rear from the horny cow startles $him from $his rest<</if>><</if>>.
+	$milkTap.slaveName moans lewdly as _his2 <<print relativeTerm($milkTap, getSlave($AS))>> suckles from _his2 breasts<<if canAchieveErection($milkTap)>>, _his2 dick throbbing with lust<</if>>. You enjoy the show, specifically the sight of <<= getSlave($AS).slaveName>>'s belly steadily growing larger until <<if getSlave($AS).inflation == 3>>$his belly is round and taut, making $him look pregnant. $He pops off $his father's nipple and settles into _his2 breasts for a short rest while hiccupping<<if hasAnyArms(getSlave($AS))>> and rubbing $his gurgling stomach<</if>><<elseif getSlave($AS).inflation == 2>>$his belly is round, jiggling and sloshing with milk. $He pops off $his father's nipple and settles into _his2 breasts for a short rest while hiccupping<<if hasAnyArms(getSlave($AS))>> and teasing $his wobbling, gurgling stomach<</if>><<elseif getSlave($AS).inflation == 1>>$his belly is distended and sloshing with milk. $He pops off $his father's nipple and settles into _his2 breasts for a short rest while hiccupping<<if hasAnyArms(getSlave($AS))>> and teasing $his gurgling stomach<</if>><</if>><<if canAchieveErection($milkTap)>><<if _incestTake>>. The way $he is wiggling $his hips suggests $he isn't finished with $his daddy just yet, and $his father's moaning confirms $he is teasing _him2 with $his rear. $He giggles as the horny cow unloads on $his backside<<else>>. $He doesn't stay put for long, as a strong moan and a blast of cum across $his rear from the horny cow startles $him from $his rest<</if>><</if>>.
 <<elseif $milkTap.mother == getSlave($AS).ID>>
 	$milkTap.slaveName moans lewdly as _he2 enjoys some role reversal as _his2 mother suckles from _his2 breasts. You enjoy the show, specifically the sight of <<= getSlave($AS).slaveName>>'s belly steadily growing larger until <<if getSlave($AS).inflation == 3>>$his belly is round and taut, making $him look pregnant. $He pops off $his <<print relativeTerm(getSlave($AS), $milkTap)>>'s nipple and settles into _his2 breasts for a short rest while hiccupping<<if hasAnyArms(getSlave($AS))>> and rubbing $his gurgling stomach<</if>><<elseif getSlave($AS).inflation == 2>>$his belly is round, jiggling and sloshing with milk. $He pops off $his <<print relativeTerm(getSlave($AS), $milkTap)>>'s nipple and settles into _his2 breasts for a short rest while hiccupping<<if hasAnyArms(getSlave($AS))>> and teasing $his wobbling, gurgling stomach<</if>><<elseif getSlave($AS).inflation == 1>>$his belly is distended and sloshing with milk. $He pops off $his <<print relativeTerm(getSlave($AS), $milkTap)>>'s nipple and settles into _his2 breasts for a short rest while hiccupping<<if hasAnyArms(getSlave($AS))>> and teasing $his gurgling stomach<</if>><</if>>.
 <<elseif $milkTap.father == getSlave($AS).ID>>
@@ -347,7 +445,12 @@ Next, you see to <<= getSlave($AS).slaveName>>.
 
 <<else>> /* cum variant */
 <<set getSlave($AS).cumSource = $milkTap.ID>>
-
+<<if $milkTap.behavioralQuirk == "sinful" || $milkTap.sexualQuirk == "perverted" || $milkTap.fetish == "incest">> /* incest is a planned fetish, don't touch it! */
+	<<set _incestGive = 1>>
+<</if>>
+<<if getSlave($AS).behavioralQuirk == "sinful" || getSlave($AS).sexualQuirk == "perverted" || getSlave($AS).fetish == "incest">>
+	<<set _incestTake = 1>>
+<</if>>
 
 The first necessary step is to prepare the cum slave and $his cock and balls.
 
@@ -375,22 +478,50 @@ The first necessary step is to prepare the cum slave and $his cock and balls.
 	<</if>>
 
 <<elseif getSlave($AS).mother == $milkTap.ID>>
-	This is tough, as $milkTap.slaveName is very uncomfortable having _his2 dick sucked by _his2 <<print relativeTerm($milkTap, getSlave($AS))>>, but _he2 can't really complain about getting _his2 overfilled nuts drained.
+	<<if _incestGive>>
+		This is easy enough, as $milkTap.slaveName savors the thought of having _his2 dick sucked by _his2 <<print relativeTerm($milkTap, getSlave($AS))>>.
+	<<else>>
+		This is tough, as $milkTap.slaveName is very uncomfortable having _his2 dick sucked by _his2 <<print relativeTerm($milkTap, getSlave($AS))>>, but _he2 can't really complain about getting _his2 overfilled nuts drained.
+	<</if>>
 <<elseif getSlave($AS).father == $milkTap.ID>>
-	This is tough, as $milkTap.slaveName is rather uncomfortable having _his2 dick sucked by _his2 <<print relativeTerm($milkTap, getSlave($AS))>>, but _he2 can't really complain about getting _his2 overfilled nuts drained.
+	<<if _incestGive>>
+		This is easy enough, as $milkTap.slaveName cherishes the sheer lewdity of having _his2 dick sucked by _his2 <<print relativeTerm($milkTap, getSlave($AS))>>.
+	<<else>>
+		This is tough, as $milkTap.slaveName is rather uncomfortable having _his2 dick sucked by _his2 <<print relativeTerm($milkTap, getSlave($AS))>>, but _he2 can't really complain about getting _his2 overfilled nuts drained.
+	<</if>>
 <<elseif $milkTap.mother == getSlave($AS).ID>>
-	This is moderately tough, as $milkTap.slaveName is very uncomfortable having _his2 dick sucked by _his2 own mother, but _he2 can't really complain about getting _his2 overfilled nuts drained.
+	<<if _incestGive>>
+		This is easy enough, as $milkTap.slaveName savors the thought of having _his2 dick sucked by _his2 own mother.
+	<<else>>
+		This is moderately tough, as $milkTap.slaveName is very uncomfortable having _his2 dick sucked by _his2 own mother, but _he2 can't really complain about getting _his2 overfilled nuts drained.
+	<</if>>
 <<elseif $milkTap.father == getSlave($AS).ID>>
-	This is tough, as $milkTap.slaveName is very uncomfortable having _his2 dick sucked by _his2 own father, but _he2 can't really complain about getting _his2 overfilled nuts drained.
+	<<if _incestGive>>
+		This is easy enough, as $milkTap.slaveName cherishes the sheer lewdity of having _his2 dick sucked by _his2 own father.
+	<<else>>
+		This is tough, as $milkTap.slaveName is very uncomfortable having _his2 dick sucked by _his2 own father, but _he2 can't really complain about getting _his2 overfilled nuts drained.
+	<</if>>
 <<elseif areSisters(getSlave($AS), $milkTap) == 1>>
-	This is moderately tough, as $milkTap.slaveName is uncomfortable getting so intimate with _his2 <<print relativeTerm(getSlave($AS), $milkTap)>><<if $milkTap.energy >= 95>>, though as a nymphomaniac, the thought of someone who looks so much like _his2 is a major turn on<<else>> but _he2 can't really complain about getting _his2 overfilled nuts drained<</if>>.
+	<<if _incestGive>>
+		This is easy enough, as $milkTap.slaveName enjoys the notion of twincest quite a lot.
+	<<else>>
+		This is moderately tough, as $milkTap.slaveName is uncomfortable getting so intimate with _his2 <<print relativeTerm(getSlave($AS), $milkTap)>><<if $milkTap.energy >= 95>>, though as a nymphomaniac, the thought of someone who looks so much like _his2 is a major turn on<<else>> but _he2 can't really complain about getting _his2 overfilled nuts drained<</if>>.
+	<</if>>
 <<elseif areSisters(getSlave($AS), $milkTap) == 2>>
-	This is moderately tough, as $milkTap.slaveName is uncomfortable getting so intimate with _his2 <<print relativeTerm($milkTap, getSlave($AS))>>, but _he2 can't really complain about getting _his2 overfilled nuts drained.
+	<<if _incestGive>>
+		This is easy enough, as $milkTap.slaveName is quite eager to get intimate with _his2 <<print relativeTerm($milkTap, getSlave($AS))>>.
+	<<else>>
+		This is moderately tough, as $milkTap.slaveName is uncomfortable getting so intimate with _his2 <<print relativeTerm($milkTap, getSlave($AS))>>, but _he2 can't really complain about getting _his2 overfilled nuts drained.
+	<</if>>
 <<elseif areSisters(getSlave($AS), $milkTap) == 3>>
-	This is moderately tough, as $milkTap.slaveName is uncomfortable getting so intimate with _his2 <<print relativeTerm($milkTap, getSlave($AS))>>, but _he2 can't really complain about getting _his2 overfilled nuts drained.
+	<<if _incestGive>>
+		This is easy enough, as $milkTap.slaveName is quite eager to get intimate with _his2 <<print relativeTerm($milkTap, getSlave($AS))>>.
+	<<else>>
+		This is moderately tough, as $milkTap.slaveName is uncomfortable getting so intimate with _his2 <<print relativeTerm($milkTap, getSlave($AS))>>, but _he2 can't really complain about getting _his2 overfilled nuts drained.
+	<</if>>
 
 <<elseif ($milkTap.fetish == "cumslut") && ($milkTap.fetishKnown == 1) && ($milkTap.fetishStrength > 60) && ($milkTap.devotion >= -20)>>
-	This is very easy, since $milkTap.slaveName loves blasting loads whenever _he2 can, and it is just a bonus to _his2 that _he2 gets a blowjob in the process.
+	This is very easy, since $milkTap.slaveName loves blasting loads whenever _he2 can, and it is just a bonus to _him2 that _he2 gets a blowjob in the process.
 
 <<elseif ($milkTap.energy > 95)>>
 	This is very easy, since $milkTap.slaveName is so sexually charged _he2 is practically overflowing at the thought of getting _his2 dick sucked.
@@ -457,19 +588,19 @@ Next, you see to <<= getSlave($AS).slaveName>>.
 	<</if>>
 
 <<elseif getSlave($AS).mother == $milkTap.ID>>
-	$He awkwardly brings $his lips to $his mother's cock.
+	$He <<if _incestTake>>eagerly wraps $his lips around<<else>>awkwardly brings $his lips to<</if>> $his mother's cock.
 <<elseif getSlave($AS).father == $milkTap.ID>>
-	$He <<if getSlave($AS).sexualQuirk == "perverted">>eagerly<<else>>awkwardly<</if>> brings $his lips to daddy's cock.
+	$He <<if _incestTake>>eagerly wraps $his lips around<<else>>awkwardly brings $his lips to<</if>> daddy's cock.
 <<elseif $milkTap.mother == getSlave($AS).ID>>
-	$He awkwardly brings $his lips to $his <<print relativeTerm(getSlave($AS), $milkTap)>><<print relativeTerm(getSlave($AS), $milkTap)>>'s cock.
+	$He <<if _incestTake>>eagerly wraps $his lips around<<else>>awkwardly brings $his lips to<</if>> $his <<print relativeTerm(getSlave($AS), $milkTap)>><<print relativeTerm(getSlave($AS), $milkTap)>>'s cock.
 <<elseif $milkTap.father == getSlave($AS).ID>>
-	$He awkwardly brings $his lips to $his <<print relativeTerm(getSlave($AS), $milkTap)>>'s cock.
+	$He <<if _incestTake>>eagerly wraps $his lips around<<else>>awkwardly brings $his lips to<</if>> $his <<print relativeTerm(getSlave($AS), $milkTap)>>'s cock.
 <<elseif areSisters(getSlave($AS), $milkTap) == 1>>
-	$He gets in position to suck $his <<print relativeTerm(getSlave($AS), $milkTap)>>'s dick.
+	$He <<if _incestTake>>readily <</if>>gets in position to suck $his <<print relativeTerm(getSlave($AS), $milkTap)>>'s dick.
 <<elseif areSisters(getSlave($AS), $milkTap) == 2>>
-	$He hesitatingly lowers $himself to $his <<print relativeTerm(getSlave($AS), $milkTap)>>'s cock.
+	$He <<if _incestTake>>eagerly wraps $his lips around<<else>>hesitatingly lowers $himself to<</if>> $his <<print relativeTerm(getSlave($AS), $milkTap)>>'s cock.
 <<elseif areSisters(getSlave($AS), $milkTap) == 3>>
-	$He hesitatingly lowers $himself to $his <<print relativeTerm(getSlave($AS), $milkTap)>>'s cock.
+	$He <<if _incestTake>>eagerly wraps $his lips around<<else>>hesitatingly lowers $himself to<</if>> $his <<print relativeTerm(getSlave($AS), $milkTap)>>'s cock.
 
 <<elseif (getSlave($AS).fetish == "cumslut") && (getSlave($AS).fetishKnown == 1) && (getSlave($AS).fetishStrength > 60) && (getSlave($AS).devotion >= -20)>>
 	$He can't wait to wrap $his lips around $milkTap.slaveName's cock and balloon with cum, so $he eagerly approaches the waiting shaft.
diff --git a/src/npc/interaction/passage/fSlaveImpreg.tw b/src/npc/interaction/passage/fSlaveImpreg.tw
index 2e5015ba3a3ad1eaa041c0ec9d333f8e9b7fb068..ea74e085502754f4fbd5ca0f322f0070f8d88957 100644
--- a/src/npc/interaction/passage/fSlaveImpreg.tw
+++ b/src/npc/interaction/passage/fSlaveImpreg.tw
@@ -9,7 +9,7 @@
 
 <h3>Select an eligible slave to serve as the semen donatrix</h3>
 
-<<set _eligibles = $slaves.filter((s) => (s.ID != getSlave($AS).ID) && canImpreg(getSlave($AS), s))>>
+<<set _eligibles = $slaves.filter((s) => (s.ID != getSlave($AS).ID) && canImpreg(getSlave($AS), s) && canPenetrate(getSlave($AS), s))>>
 <<for _i = 0; _i < _eligibles.length; _i++>>
 	<<set _name = SlaveFullName(_eligibles[_i])>>
 	<div>
diff --git a/src/player/js/enslavePlayer.js b/src/player/js/enslavePlayer.js
index b995e6412f2e575f1ff9584ac3b3b8cd7020f024..752f46e5a9ebca016f2136b03c0b7927829e2a52 100644
--- a/src/player/js/enslavePlayer.js
+++ b/src/player/js/enslavePlayer.js
@@ -89,6 +89,7 @@ globalThis.convertPlayerToSlave = function(slave, badEnd = "boring") {
 	slave.currentRules = [];
 	slave.HGExclude = 0;
 	slave.choosesOwnChastity = 0;
+	slave.rules.mobility = "restrictive";
 	slave.pregControl = "none";
 	slave.readyProsthetics = [];
 	slave.death = "";
diff --git a/src/uncategorized/costsReport.tw b/src/uncategorized/costsReport.tw
index f971c456965480b4182a2adfa960e35b175656df..5b365daa246306f026575687ddd11c9cb3f83d64 100644
--- a/src/uncategorized/costsReport.tw
+++ b/src/uncategorized/costsReport.tw
@@ -7,7 +7,7 @@
 	<<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]>>
+		<<includeDOM SlaveExpenses (V.slaves[V.i])>>
 	<</capture>>
 <</for>>
 
diff --git a/src/uncategorized/costsReportSlaves.tw b/src/uncategorized/costsReportSlaves.tw
index 3399fecd92dfe8a6509c01412263bd4e8a05718d..ae0467edc474f629deb9c74255662f840c8890c3 100644
--- a/src/uncategorized/costsReportSlaves.tw
+++ b/src/uncategorized/costsReportSlaves.tw
@@ -8,6 +8,6 @@
 	<<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]>>
+	<<includeDOM SlaveExpenses (V.slaves[V.i])>>
 	<</capture>>
 <</for>>
diff --git a/src/uncategorized/costsWidgets.tw b/src/uncategorized/costsWidgets.tw
deleted file mode 100644
index 5b69bd2fa6c132cb49c48e662134f34ac6c0190a..0000000000000000000000000000000000000000
--- a/src/uncategorized/costsWidgets.tw
+++ /dev/null
@@ -1,145 +0,0 @@
-:: Cost widgets [nobr widget]
-
-<<widget "SlaveExpenses">>
-	<<set _individualCosts = 0>>
-	<<setLocalPronouns $args[0]>>
-
-	/* Generate the lines of the report */
-	<<for _line range getSlaveCostArray($args[0])>>
-		<div class="indent">
-			<<= _line.text>>: <<=cashFormatColor(_line.value)>>
-		</div>
-	<</for>>
-
-	/* Total expenses */
-	<<set _individualCosts = Math.trunc(getSlaveCost($args[0]))>>
-	<div class="double-indent">
-		__Predicted expense__: @@.red;<<print cashFormat(Math.trunc(_individualCosts))>>@@
-	</div>
-
-	/* Income from last week vs expense gives net, assistant gated */
-	<<if $assistant.power > 0>>
-		<<if $args[0].lastWeeksCashIncome > 0>>
-			<div class="indent">
-				Income: <<print cashFormatColor($args[0].lastWeeksCashIncome)>>
-			</div>
-			<<set _total = (Math.trunc($args[0].lastWeeksCashIncome - _individualCosts))>>
-			<div class="double-indent">
-				__Total__: <<print cashFormatColor(Math.trunc(_total))>>
-			</div>
-		<</if>>
-	<</if>>
-	<<SlaveExpensesExtra $args[0]>>
-<</widget>>
-
-<<widget "SlaveExpensesExtra">>
-	<<setLocalPronouns $args[0]>>
-	/* Background and original cost */
-	<<if $args[0].origin != 0>>
-		<div class="indent">
-			$args[0].origin
-		</div>
-	<</if>>
-	<div class="indent">
-		<<if $args[0].slaveCost < 0>>
-			You bought $him for: @@.red;<<print cashFormat($args[0].slaveCost)>>.@@
-			<<set _Cost = $args[0].slaveCost>>
-		<<elseif $args[0].slaveCost == 0>>
-			You spent nothing to acquire $him.
-			<<set _Cost = $args[0].slaveCost>>
-		<<else>>
-			You have no record of how much <<if $args[0].origin != 0>>this<<else>>$he originally<</if>> cost.
-			<<set _Cost = 0>>
-		<</if>>
-	</div>
-
-	/* Lifetime totals, assistant gated */
-	<<if $assistant.power > 0>>
-		<<set _weeksOwned = $week - $args[0].weekAcquired>>
-		/* Lifetime expense */
-		<div class="indent">
-			<<if $args[0].lifetimeCashExpenses < 0>>
-				In $his <<if _weeksOwned > 0>>_weeksOwned <<if _weeksOwned == 1>>week<<else>>weeks<</if>><<else>>time<</if>> with you, $he has cost @@.red;<<print cashFormat($args[0].lifetimeCashExpenses)>>.@@
-				<<set _Expense = $args[0].lifetimeCashExpenses>>
-			<<else>>
-				You have no record of $him costing you any ¤.
-				<<set _Expense = 0>>
-			<</if>>
-		</div>
-
-		/* Lifetime income */
-		<div class="indent">
-			<<if $args[0].lifetimeCashIncome > 0>>
-				In $his <<if _weeksOwned > 0>>_weeksOwned <<if _weeksOwned == 1>>week<<else>>weeks<</if>><<else>>time<</if>> with you, $he has earned @@.yellowgreen;<<print cashFormat($args[0].lifetimeCashIncome)>>.@@
-				<<set _Income = $args[0].lifetimeCashIncome>>
-			<<else>>
-				You have no record of $him making you any ¤.
-				<<set _Income = 0>>
-			<</if>>
-		</div>
-
-		/* Lifetime total */
-		<div class="indent">
-			Overall,
-			<<if (_Income + _Cost + _Expense) > 0>>
-				you have made @@.yellowgreen;<<print cashFormat(_Income + _Cost + _Expense)>>@@ net from $his labors.
-			<<elseif (_Income + _Cost + _Expense) == 0>>
-				$he is even in cost and income.
-			<<else>>
-				$he has cost you @@.red;<<print cashFormat(_Income + _Cost + _Expense)>>.@@
-			<</if>>
-		</div>
-
-		/* Reputation: */
-		<div>
-			<<if ($args[0].lifetimeRepIncome != 0 || $args[0].lifetimeRepExpenses != 0)>>
-				<<set _repTotal = ($args[0].lifetimeRepIncome + $args[0].lifetimeRepExpenses)>>
-				<<if ($cheatMode == 1 || $debugMode == 1)>>
-					<<if $args[0].lifetimeRepIncome != 0>>
-						<div class="indent">
-							This week $he has
-							<<if $args[0].lastWeeksRepIncome == 0>>
-								had no positive effect on your reputation, but
-							<<else>>
-								improved your reputation by @@.green;<<print num($args[0].lastWeeksRepIncome)>>@@ and
-							<</if>>
-							over $his entire time with you, $he gained @@.green;<<print num($args[0].lifetimeRepIncome)>>.@@
-						</div>
-					<</if>>
-					<<if $args[0].lifetimeRepExpenses != 0>>
-						<div class="indent">
-							This week $he has
-							<<if $args[0].lastWeeksRepExpenses == 0>>
-								had no negative effect on your reputation, but
-							<<else>>
-								lowered your reputation by @@.red;<<print num($args[0].lastWeeksRepExpenses)>>@@ and
-							<</if>>
-							over $his entire time with you, $he cost @@.red;<<print num($args[0].lifetimeRepExpenses)>>.@@
-						</div>
-					<</if>>
-					<div class="indent">
-						Overall then, $he has changed your reputation by
-						<<if _repTotal > 0>>
-							@@.green;<<print num(_repTotal)>>@@
-						<<elseif _repTotal < 0>>
-							@@.red;<<print num(_repTotal)>>@@
-						<<else>>
-							<<print num(_repTotal)>>
-						<</if>>
-					</div>
-				<<else>> /* lowercasedonkey: TODO: I don't like how vague my placeholder is. Probably need to set up some kind of sliding scale to describe how much rep (roughly) she has made or lost. Need to get a sense of common ranges. */
-					<div class="indent">
-						Overall, $he has
-						<<if _repTotal == 0>>
-							had no impact on your reputation.
-						<<elseif _repTotal > 0>>
-							@@.green;increased@@ your reputation.
-						<<elseif _repTotal < 0>>
-							@@.red;decreased@@ your reputation.
-						<</if>>
-					</div>
-				<</if>>
-			<</if>>
-		</div>
-	<</if>>
-<</widget>>
diff --git a/src/uncategorized/pBioreactorPerfected.tw b/src/uncategorized/pBioreactorPerfected.tw
index 6400df20ac5ace1511c5831d8294429a6fb33718..68a0cc811044ded79c58461d98a6dc3d886ee756 100644
--- a/src/uncategorized/pBioreactorPerfected.tw
+++ b/src/uncategorized/pBioreactorPerfected.tw
@@ -238,6 +238,6 @@ You stop and consider the cow, from $his titanic breasts to $his <<if ($activeSl
 	<div class="indent">
 		$His current task is to <<print $activeSlave.assignment>><<if $assignmentRecords[$activeSlave.ID]>>, and before that to <<print $assignmentRecords[$activeSlave.ID]>><</if>>.
 	</div>
-	<<SlaveExpenses $activeSlave>>
+	<<includeDOM slaveExpenses(V.activeSlave)>>
 </div>
 <</if>> /* closes validity check */
diff --git a/src/uncategorized/pMercenaryRomeo.tw b/src/uncategorized/pMercenaryRomeo.tw
index e44f9645d50b45dcfa4fc73f8adf1528ecce805f..f0e7363898e764ce86bd6cf5f00c083ef57a6d13 100644
--- a/src/uncategorized/pMercenaryRomeo.tw
+++ b/src/uncategorized/pMercenaryRomeo.tw
@@ -132,7 +132,7 @@ proffered by an attentive slave _girlU, he seems almost bashful.
 		<div class="indent">
 			$His current task is to <<print $activeSlave.assignment>><<if $assignmentRecords[$activeSlave.ID]>>, and before that to <<print $assignmentRecords[$activeSlave.ID]>><</if>>.
 		</div>
-		<<SlaveExpensesExtra $activeSlave>>
+		<<includeDOM slaveImpactLongTerm(V.activeSlave)>>
 	</div>
 
 <</if>>
diff --git a/src/uncategorized/saLongTermEffects.tw b/src/uncategorized/saLongTermEffects.tw
index 563471bbca377f6db3916ebfc2a8ae2fa6393ff7..17f1785363d4cb98d9102f8b3a395fde3980e2a5 100644
--- a/src/uncategorized/saLongTermEffects.tw
+++ b/src/uncategorized/saLongTermEffects.tw
@@ -4834,9 +4834,8 @@
 								<<set $slaves[$i].trust -= 4>>
 								<<set _studVaginal = 1>>
 							<<else>>
-								$slaves[$i].slaveName finds _Stud.slaveName is in a similar situation as $he is, so the two of them try to make it as @@.mediumaquamarine;mutuably enjoyable as possible,@@ despite the awkwardness involved, while trying their best to overlook that _Stud.slaveName is being forced to @@.lime;impregnate $him.@@
+								$slaves[$i].slaveName finds _Stud.slaveName is in a similar situation as $he is, so $he tries to make it as @@.mediumaquamarine;mutuably enjoyable as possible,@@ despite the awkwardness involved, while trying $his best to overlook that _Stud.slaveName is being forced to @@.lime;impregnate $him.@@
 								<<set $slaves[$i].trust += 4>>
-								<<set _Stud.trust += 4>>
 								<<set $slaves[$i].need = 0>>
 							<</if>>
 						<<elseif ($slaves[$i].devotion <= 20)>>
@@ -4844,9 +4843,8 @@
 								$slaves[$i].slaveName, though fearfully obedient, is not happy with being bred, so _Stud.slaveName is forced to @@.mediumorchid;rape the poor $girl@@ pregnant, regularly squirting cum into $his <<if $slaves[$i].mpreg == 1>>ass<</if>>pussy until @@.lime;conception@@ is confirmed.
 								<<set $slaves[$i].devotion -= 4>>
 							<<else>>
-								_Stud.slaveName doesn't want to do this and shows mercy to the pitiable $slaves[$i].slaveName, @@.mediumorchid;reinforcing their dislike of you.@@ _He2 still has to @@.lime;force $him to bear _his2 child,@@ however.
-								<<set $slaves[$i].devotion -= 4>>
-								<<set _Stud.devotion -= 4>>
+								$slaves[$i].slaveName finds that _Stud.slaveName is less than enthusiastic about fucking $him, @@.mediumorchid;making the resulting rape extra unpleasant@@ when _he2 @@.lime;forces a baby into $him.@@
+								<<set $slaves[$i].devotion -= 6>>
 							<</if>>
 						<<elseif ($slaves[$i].devotion <= 75)>>
 							<<if ($slaves[$i].fetish == "pregnancy") && ($slaves[$i].fetishKnown == 1) && ($slaves[$i].fetishStrength > 60)>>
@@ -4915,9 +4913,8 @@
 								<<set $slaves[$i].devotion -= 4>>
 								<<set _rapeAddsFlaw = 1>>
 							<<else>>
-								$slaves[$i].slaveName finds _Stud.slaveName is in a similar situation as $he is, so the two of them try to make it as @@.mediumaquamarine;mutuably enjoyable as possible@@ while trying their best to overlook that _Stud.slaveName is being forced to @@.lime;impregnate $him.@@
+								$slaves[$i].slaveName finds _Stud.slaveName is in a similar situation as $he is, so $he tries to make it as @@.mediumaquamarine;mutuably enjoyable as possible,@@ despite the awkwardness involved, while trying $his best to overlook that _Stud.slaveName is being forced to @@.lime;impregnate $him.@@
 								<<set $slaves[$i].trust += 4>>
-								<<set _Stud.trust += 4>>
 								<<set $slaves[$i].need = 0>>
 							<</if>>
 						<<elseif ($slaves[$i].devotion <= 20)>>
@@ -4926,9 +4923,8 @@
 								<<set $slaves[$i].devotion -= 4>>
 								<<set _rapeAddsFlaw = 1>>
 							<<else>>
-								_Stud.slaveName doesn't want to do this and shows mercy to the pitiable $slaves[$i].slaveName, @@.mediumorchid;reinforcing their dislike of you.@@ _He2 still has to @@.lime;force $him to bear _his2 child,@@ however.
-								<<set $slaves[$i].devotion -= 4>>
-								<<set _Stud.devotion -= 4>>
+								$slaves[$i].slaveName finds that _Stud.slaveName is less than enthusiastic about fucking $him, @@.mediumorchid;making the resulting rape extra unpleasant@@ when _he2 @@.lime;forces a baby into $him.@@
+								<<set $slaves[$i].devotion -= 6>>
 							<</if>>
 						<<elseif ($slaves[$i].devotion <= 75)>>
 							<<if ($slaves[$i].fetish == "pregnancy") && ($slaves[$i].fetishKnown == 1) && ($slaves[$i].fetishStrength > 60)>>
@@ -5000,9 +4996,8 @@
 								<<set _studPenetrative = 1>>
 								<<set _studTakesV = 1>>
 							<<else>>
-								$slaves[$i].slaveName finds _Stud.slaveName is in a similar situation as $he is, so the two of them try to make it as @@.mediumaquamarine;mutuably enjoyable as possible@@ while trying their best to overlook that _Stud.slaveName is being forced to @@.lime;impregnate $him.@@
+								$slaves[$i].slaveName finds _Stud.slaveName is in a similar situation as $he is, so $he tries to make it as @@.mediumaquamarine;mutuably enjoyable as possible,@@ despite the awkwardness involved, while trying $his best to overlook that _Stud.slaveName is being forced to @@.lime;impregnate $him.@@
 								<<set $slaves[$i].trust += 4>>
-								<<set _Stud.trust += 4>>
 								<<set $slaves[$i].need = 0>>
 								<<set _studPenetrative = 1>>
 							<</if>>
@@ -5011,9 +5006,8 @@
 								$slaves[$i].slaveName, though fearfully obedient, is not happy with being bred, so _Stud.slaveName is forced to @@.mediumorchid;rape the poor $girl@@ pregnant, regularly squirting cum into $his <<if $slaves[$i].mpreg == 1>>ass<</if>>pussy until @@.lime;conception@@ is confirmed.
 								<<set $slaves[$i].devotion -= 4>>
 							<<else>>
-								_Stud.slaveName doesn't want to do this and shows mercy to the pitiable $slaves[$i].slaveName, @@.mediumorchid;reinforcing their dislike of you.@@ _He2 still has to @@.lime;force $him to bear _his2 child,@@ however.
-								<<set $slaves[$i].devotion -= 4>>
-								<<set _Stud.devotion -= 4>>
+								$slaves[$i].slaveName finds that _Stud.slaveName is less than enthusiastic about fucking $him, @@.mediumorchid;making the resulting rape extra unpleasant@@ when _he2 @@.lime;forces a baby into $him.@@
+								<<set $slaves[$i].devotion -= 6>>
 							<</if>>
 						<<elseif ($slaves[$i].devotion <= 75)>>
 							<<if ($slaves[$i].fetish == "pregnancy") && ($slaves[$i].fetishKnown == 1) && ($slaves[$i].fetishStrength > 60)>>
diff --git a/src/uncategorized/seExpiration.tw b/src/uncategorized/seExpiration.tw
index 6a5d5cc47662078b2e137cf10c2d2618190034ab..df473743b1d393701a3decff38957bc84caf4085 100644
--- a/src/uncategorized/seExpiration.tw
+++ b/src/uncategorized/seExpiration.tw
@@ -202,5 +202,5 @@ at the moment of $his scheduled emancipation, $he seems willing to consider a sh
 	<div class="indent">
 		$His most recent task was to <<print $activeSlave.assignment>><<if $assignmentRecords[$activeSlave.ID]>>, and before that to <<print $assignmentRecords[$activeSlave.ID]>><</if>>.
 	</div>
-	<<SlaveExpensesExtra $activeSlave>>
+	<<includeDOM slaveImpactLongTerm(V.activeSlave)>>
 </div>
\ No newline at end of file
diff --git a/src/uncategorized/seRetirement.tw b/src/uncategorized/seRetirement.tw
index 560bf85bcb33e1af1f5307509444a958e7b0726c..c38103479688aa2a09fe03b2a6431168674a2252 100644
--- a/src/uncategorized/seRetirement.tw
+++ b/src/uncategorized/seRetirement.tw
@@ -388,7 +388,7 @@
 	<div class="indent">
 		$His most recent task was to <<print $activeSlave.assignment>><<if $assignmentRecords[$activeSlave.ID]>>, and before that to <<print $assignmentRecords[$activeSlave.ID]>><</if>>.
 	</div>
-	<<SlaveExpensesExtra $activeSlave>>
+	<<includeDOM slaveImpactLongTerm(V.activeSlave)>>
 </div>
 
 <<if $retired == 0>> /* retiring during the end week */
diff --git a/src/uncategorized/sellSlave.tw b/src/uncategorized/sellSlave.tw
index 4f3cf2cec05a3151f1d9ffef912f17d8df843cc7..0007e6b30a74a330ead71c95a2d5f4ee14e0c042 100644
--- a/src/uncategorized/sellSlave.tw
+++ b/src/uncategorized/sellSlave.tw
@@ -728,7 +728,7 @@ A reputable slave appraiser arrives promptly to inspect $him and certify $his qu
 
 <br><br>
 __Financial Records__
-<<SlaveExpenses $activeSlave>>
+<<includeDOM slaveExpenses(V.activeSlave)>>
 
 <</if>> /* CLOSES APPRAISAL */
 <</if>> /* closes breeding mark */
diff --git a/src/uncategorized/slaveInteract.tw b/src/uncategorized/slaveInteract.tw
index 46ba3454f437d529763d019fea65732ac0a5acd0..b1e4f5796a89830351634b5ffd4e35321cfaa205 100644
--- a/src/uncategorized/slaveInteract.tw
+++ b/src/uncategorized/slaveInteract.tw
@@ -324,7 +324,7 @@
 
 		<h3>Financial</h3>
 		<p>
-			<<SlaveExpenses $activeSlave>>
+			<<includeDOM slaveExpenses(V.activeSlave)>>
 		</p>
 
 		<p>