diff --git a/src/gui/css/mainStyleSheet.css b/src/gui/css/mainStyleSheet.css
index 99a23af72c15df74833beeb920c99ff775bd56d1..6df18302381e551ba35766130030421d7bf9f36e 100644
--- a/src/gui/css/mainStyleSheet.css
+++ b/src/gui/css/mainStyleSheet.css
@@ -381,7 +381,7 @@ h3 + p {
 	margin: 0 auto;
 }
 
-.major-link {
+.major-link, .bold {
 	font-weight: bold;
 }
 
diff --git a/src/interaction/slaveInteract.js b/src/interaction/slaveInteract.js
index cd56cffbf022fd13c29f46cf87f59ab55f504dbb..257a61c5e15568f7fe7a9eceadeed03eedc5a6ff 100644
--- a/src/interaction/slaveInteract.js
+++ b/src/interaction/slaveInteract.js
@@ -1708,7 +1708,7 @@ App.UI.SlaveInteract.incubator = function(slave) {
 
 	if (V.incubator > 0) {
 		if (slave.preg > 0 && slave.broodmother === 0 && slave.pregKnown === 1 && slave.eggType === "human") {
-			if ((slave.assignment === Job.DAIRY && V.dairyPregSetting > 0) || (slave.assignment === Job.FARMYARD && V.farmyardBreeding > 0)) {} else {
+			if ((slave.assignment === Job.DAIRY && V.dairyPregSetting > 0) || (slave.assignment === Job.FARMYARD && V.farmyardBreeding > 0)) { } else {
 				let title = document.createElement('div');
 				let link = document.createElement('div');
 				link.className = "choices";
@@ -1878,7 +1878,7 @@ App.UI.SlaveInteract.nursery = function(slave) {
 		let _reservedNursery = WombReserveCount(slave, "nursery");
 		let _WL = slave.womb.length;
 		if (slave.preg > 0 && slave.broodmother === 0 && slave.pregKnown === 1 && slave.eggType === "human") {
-			if ((slave.assignment === Job.DAIRY && V.dairyPregSetting > 0) || (slave.assignment === Job.FARMYARD && V.farmyardBreeding > 0)) {} else {
+			if ((slave.assignment === Job.DAIRY && V.dairyPregSetting > 0) || (slave.assignment === Job.FARMYARD && V.farmyardBreeding > 0)) { } else {
 				let title = document.createElement('div');
 				let link = document.createElement('div');
 				link.className = "choices";
@@ -2030,118 +2030,408 @@ App.UI.SlaveInteract.nursery = function(slave) {
 	return jQuery('#nursery').empty().append(el);
 };
 
-App.UI.SlaveInteract.smartSettings = function(slave) {
-	let el = document.createElement('div');
-
-	const {His} = getPronouns(slave);
-	const bodyPart = [];
-	const BDSM = [];
-	const gender = [];
-	const level = [];
-
-	if (slave.clitPiercing === 3 || slave.vaginalAccessory === "smart bullet vibrator") {
-		// Level
-		level.push({text: `No sex`, updateSlave: {clitSetting: `none`}});
-		level.push({text: `All sex`, updateSlave: {clitSetting: `all`}});
-
-		// Body part
-		bodyPart.push({text: `Vanilla`, updateSlave: {clitSetting: `vanilla`}});
-		bodyPart.push({text: `Oral`, updateSlave: {clitSetting: `oral`}});
-		bodyPart.push({text: `Anal`, updateSlave: {clitSetting: `anal`}});
-		bodyPart.push({text: `Boobs`, updateSlave: {clitSetting: `boobs`}});
-		if (V.seePreg !== 0) {
-			bodyPart.push({text: `Preg`, updateSlave: {clitSetting: `pregnancy`}});
-		}
-		// BDSM
-		BDSM.push({text: `Sub`, updateSlave: {clitSetting: `submissive`}});
-		BDSM.push({text: `Dom`, updateSlave: {clitSetting: `dom`}});
-		BDSM.push({text: `Masochism`, updateSlave: {clitSetting: `masochist`}});
-		BDSM.push({text: `Sadism`, updateSlave: {clitSetting: `sadist`}});
-		BDSM.push({text: `Humiliation`, updateSlave: {clitSetting: `humiliation`}});
-
-		// Gender
-		gender.push({text: `Men`, updateSlave: {clitSetting: `men`}});
-		gender.push({text: `Women`, updateSlave: {clitSetting: `women`}});
-		gender.push({text: `Anti-men`, updateSlave: {clitSetting: `anti-men`}});
-		gender.push({text: `Anti-women`, updateSlave: {clitSetting: `anti-women`}});
-	}
-
-	let label = null;
-	if (slave.clitPiercing === 3) {
-		if (slave.dick < 1) {
-			label = `${His} smart clit piercing `;
-			if (slave.vaginalAccessory === "smart bullet vibrator") {
-				label += `and smart bullet vibrator are `;
+App.UI.SlaveInteract.rules = function(slave) {
+	const frag = new DocumentFragment();
+	let p;
+	let div;
+	let array;
+	let choices;
+	const {
+		he, him, his, hers, himself, boy, He, His
+	} = getPronouns(slave);
+	if (V.seePreg !== 0) {
+		p = document.createElement('p');
+		if (V.universalRulesImpregnation === "HG") {
+			if (slave.HGExclude === 0) {
+				p.append(`Will be bred by the Head Girl when fertile. `);
+				p.append(
+					App.UI.DOM.link(
+						`Exempt ${him}`,
+						() => {
+							slave.HGExclude = 1;
+							App.UI.SlaveInteract.rules(slave);
+						}
+					)
+				);
 			} else {
-				label += `is `;
+				p.append(`Will not be bred by the Head Girl when fertile. `);
+				p.append(
+					App.UI.DOM.link(
+						`Include ${him}`,
+						() => {
+							slave.HGExclude = 0;
+							App.UI.SlaveInteract.rules(slave);
+						}
+					)
+				);
 			}
-			label += `set to: `;
-		} else {
-			label = `${His} smart frenulum piercing `;
-			if (slave.vaginalAccessory === "smart bullet vibrator") {
-				label += `and smart bullet vibrator are `;
+		} else if (V.universalRulesImpregnation === "Stud") {
+			if (slave.StudExclude === 0) {
+				p.append(`Will be bred by your Stud when fertile. `);
+				p.append(
+					App.UI.DOM.link(
+						`Exempt ${him}`,
+						() => {
+							slave.StudExclude = 1;
+							App.UI.SlaveInteract.rules(slave);
+						}
+					)
+				);
 			} else {
-				label += `is `;
+				p.append(`Will not be bred by your Stud when fertile. `);
+				p.append(
+					App.UI.DOM.link(
+						`Include ${him}`,
+						() => {
+							slave.StudExclude = 0;
+							App.UI.SlaveInteract.rules(slave);
+						}
+					)
+				);
 			}
-			label += `set to: `;
 		}
-	} else if (slave.vaginalAccessory === "smart bullet vibrator") {
-		label = `${His} smart bullet vibe is set to: `;
-	}
-	if (label) {
-		let title = App.UI.DOM.appendNewElement('div', el, label);
-		let selected = App.UI.DOM.appendNewElement('span', title, `${slave.clitSetting}. `);
-		selected.style.fontWeight = "bold";
+		frag.append(p);
 	}
+	p = document.createElement('p');
 
-	App.UI.SlaveInteract.appendLabeledChoiceRow(el, "Level", level, slave);
-	App.UI.SlaveInteract.appendLabeledChoiceRow(el, "Body part", bodyPart, slave);
-	App.UI.SlaveInteract.appendLabeledChoiceRow(el, "BDSM", BDSM, slave);
-	App.UI.SlaveInteract.appendLabeledChoiceRow(el, "Gender", gender, slave);
+	array = [];
+	if (slave.useRulesAssistant === 0) {
+		App.UI.DOM.appendNewElement("span", p, `Not subject `, ["bold", "gray"]);
+		App.UI.DOM.appendNewElement("span", p, `to the Rules Assistant.`, "gray");
+		array.push(
+			App.UI.DOM.link(
+				`Include ${him}`,
+				() => {
+					slave.useRulesAssistant = 1;
+					App.UI.SlaveInteract.rules(slave);
+				}
+			)
+		);
+	} else {
+		App.UI.DOM.appendNewElement("h2", p, `Rules Assistant`);
+
+		if (slave.hasOwnProperty("currentRules") && slave.currentRules.length > 0) {
+			const ul = document.createElement("UL");
+			ul.style.margin = 0;
+			V.defaultRules.filter(
+				x => ruleApplied(slave, x)
+			).map(
+				x => {
+					const li = document.createElement('li');
+					li.append(x.name);
+					ul.append(li);
+				}
+			);
 
-	return jQuery('#smartSettings').empty().append(el);
-};
+			// set up rules display
+			if ($("ul").has("li").length ) {
+				App.UI.DOM.appendNewElement("div", p, `Rules applied: `);
+				p.append(ul);
+			} else {
+				App.UI.DOM.appendNewElement("div", p, `There are no rules that would apply to ${him}.`, "gray");
+			}
+		}
+		array.push(
+			App.UI.DOM.link(
+				`Apply rules`,
+				() => {
+					DefaultRules(slave);
+					App.UI.SlaveInteract.rules(slave);
+				}
+			)
+		);
+		array.push(
+			App.UI.DOM.link(
+				`Exempt ${him}`,
+				() => {
+					slave.useRulesAssistant = 0;
+					App.UI.SlaveInteract.rules(slave);
+				}
+			)
+		);
+		array.push(App.UI.DOM.passageLink("Rules Assistant Options", "Rules Assistant"));
+	}
+	p.append(App.UI.DOM.generateLinksStrip(array));
+	frag.append(p);
 
-App.UI.SlaveInteract.orgasm = function(slave) {
-	let el = document.createElement('div');
+	p = document.createElement('p');
+	App.UI.DOM.appendNewElement("h2", p, `Other Rules`);
 
-	let title = document.createElement('div');
-	title.textContent = `Non-assignment orgasm rules: `;
-	el.append(title);
+	// Living
+	if (slave.fuckdoll > 0) {
+		// Rules have little meaning for living sex toys//
+	} else {
+		penthouseCensus();
+		p.append("Living standard: ");
+		App.UI.DOM.appendNewElement("span", p, slave.rules.living, "bold");
+	}
+	if (setup.facilityCareers.includes(slave.assignment)) {
+		// ${His} living conditions are managed by ${his} assignment.//
+	} else if ((slave.assignment === "be your Head Girl") && (V.HGSuite === 1)) {
+		// ${He} has ${his} own little luxurious room in the penthouse with everything ${he} needs to be a proper Head Girl.//
+	} else if ((slave.assignment === "guard you") && (V.dojo > 1)) {
+		// ${He} has a comfortable room in the armory to call ${his} own.//
+	} else {
+		choices = [
+			{value: "spare"},
+			{value: "normal"},
+		];
+		if (V.roomsPopulation <= V.rooms - 0.5) {
+			choices.push({value: "luxurious"});
+		} else {
+			choices.push(App.UI.DOM.disabledLink(`Luxurious`, "No luxurious rooms available"));
+		}
+
+		p.append(listChoices(choices, "living"));
+	}
+
+	// Rest
+	if (V.cheatMode) {
+		if (["be a servant", "get milked", "please you", "serve in the club", "serve the public", "whore", "work as a farmhand", "work in the brothel", "work in the dairy", "work a glory hole"].includes(slave.assignment)) {
+			div = document.createElement("div");
+			div.append("Sleep rules: ");
+			App.UI.DOM.appendNewElement("span", div, slave.rules.rest, "bold");
+			choices = [
+				{value: "none"},
+				{value: "cruel"},
+				{value: "restrictive"},
+				{value: "permissive"},
+				{value: "mandatory"},
+			];
+			div.append(listChoices(choices, "rest"));
+			p.append(div);
+		}
+	}
+
+	// Punishment
+	div = document.createElement("div");
+	div.append("Typical punishment: ");
+	App.UI.DOM.appendNewElement("span", div, slave.rules.punishment, "bold");
+	choices = [
+		{value: "confinement"},
+		{value: "whipping"},
+		{value: "orgasm"},
+		{value: "chastity"},
+		{value: "situational"},
+	];
+	div.append(listChoices(choices, "punishment"));
+	p.append(div);
+
+	// Reward
+	div = document.createElement("div");
+	div.append("Typical reward: ");
+	App.UI.DOM.appendNewElement("span", div, slave.rules.reward, "bold");
+	choices = [
+		{value: "relaxation"},
+		{value: "drugs"},
+		{value: "orgasm"},
+		{value: "situational"},
+	];
+	div.append(listChoices(choices, "reward"));
+	p.append(div);
+
+	// Lactation
+	if (slave.lactation !== 2) {
+		div = document.createElement("div");
+		div.append("Lactation maintenance: ");
+		App.UI.DOM.appendNewElement("span", div, slave.rules.lactation, "bold");
+		choices = [
+			{
+				title: "Left alone",
+				value: "none",
+			},
+		];
 
-	makeLinks("Masturbation", "rules.release.masturbation");
-	makeLinks("Partner", "rules.release.partner");
-	makeLinks("Family", "rules.release.family");
-	makeLinks("Other slaves", "rules.release.slaves");
-	makeLinks("Master", "rules.release.master", true);
+		if (slave.lactation === 0) {
+			choice.push(
+				{
+					title: "Induce lactation",
+					value: "induce",
+				}
+			);
+		} else {
+			choice.push(
+				{
+					title: "Maintain lactation",
+					value: "maintain",
+				}
+			);
+		}
+		div.append(listChoices(choices, "lactation"));
+		p.append(div);
+	}
 
-	function makeLinks(text, setting, master=false) {
-		const options =
-			[{text: master ? `Grant` : `Allow`, updateSlave: {[setting]: 1}},
-			 {text: master ? `Deny` : `Forbid`, updateSlave: {[setting]: 0}}];
+	p.append(orgasm(slave));
 
-		let links = document.createElement('div');
-		links.append(`${text}: `);
-		links.append(status(_.get(slave, setting), master));
-		links.appendChild(App.UI.SlaveInteract.generateRows(options, slave));
-		links.className = "choices";
-		el.append(links);
+	if (slave.voice !== 0) {
+		div = document.createElement("div");
+		div.append("Speech rules: ");
+		App.UI.DOM.appendNewElement("span", div, slave.rules.speech, "bold");
+		choices = [
+			{value: "restrictive"},
+			{value: "permissive"},
+		];
+		if (slave.accent > 0 && slave.accent < 4) {
+			choices.push(
+				{value: "accent elimination"},
+			);
+		} else if (slave.accent > 3) {
+			choices.push(
+				{value: "language lessons"},
+			);
+		}
+		div.append(listChoices(choices, "speech"));
+		p.append(div);
+	}
+
+	div = document.createElement("div");
+	div.append("Relationship rules: ");
+	App.UI.DOM.appendNewElement("span", div, slave.rules.relationship, "bold");
+	choices = [
+		{value: "restrictive"},
+		{value: "just friends"},
+		{value: "permissive"},
+	];
+	div.append(listChoices(choices, "relationship"));
+	p.append(div);
+
+	p.append(smartSettings(slave));
+	frag.append(p);
+	return jQuery('#rules').empty().append(frag);
+
+	function listChoices(choices, property) {
+		const links = [];
+		for (const c of choices) {
+			if (typeof c == "object") {
+				const title = c.title || capFirstChar(c.value);
+				links.push(
+					App.UI.DOM.link(
+						title,
+						() => {
+							slave.rules[property] = c.value;
+							App.UI.SlaveInteract.rules(slave);
+						}
+					)
+				);
+			} else { // node
+				links.push(c);
+			}
+		}
+		return App.UI.DOM.generateLinksStrip(links);
 	}
+	function orgasm(slave) {
+		let el = document.createElement('div');
 
-	function status(setting, master) {
-		let selected = document.createElement('span');
-		selected.style.fontWeight = "bold";
-		let text;
-		if (master) {
-			text = setting ? "granted" : "denied";
-		} else {
-			text = setting ? "allowed" : "denied";
+		let title = document.createElement('div');
+		title.textContent = `Non-assignment orgasm rules: `;
+		el.append(title);
+
+		makeLinks("Masturbation", "rules.release.masturbation");
+		makeLinks("Partner", "rules.release.partner");
+		makeLinks("Family", "rules.release.family");
+		makeLinks("Other slaves", "rules.release.slaves");
+		makeLinks("Master", "rules.release.master", true);
+
+		function makeLinks(text, setting, master = false) {
+			const options =
+				[{text: master ? `Grant` : `Allow`, updateSlave: {[setting]: 1}},
+					{text: master ? `Deny` : `Forbid`, updateSlave: {[setting]: 0}}];
+
+			let links = document.createElement('div');
+			links.append(`${text}: `);
+			links.append(status(_.get(slave, setting), master));
+			links.appendChild(App.UI.SlaveInteract.generateRows(options, slave));
+			links.className = "choices";
+			el.append(links);
+		}
+
+		function status(setting, master) {
+			let selected = document.createElement('span');
+			selected.style.fontWeight = "bold";
+			let text;
+			if (master) {
+				text = setting ? "granted" : "denied";
+			} else {
+				text = setting ? "allowed" : "denied";
+			}
+			selected.textContent = `${text}. `;
+			return selected;
 		}
-		selected.textContent = `${text}. `;
-		return selected;
+
+		return el;
 	}
 
-	return jQuery('#orgasm').empty().append(el);
+	function smartSettings(slave) {
+		let el = document.createElement('div');
+
+		const {His} = getPronouns(slave);
+		const bodyPart = [];
+		const BDSM = [];
+		const gender = [];
+		const level = [];
+
+		if (slave.clitPiercing === 3 || slave.vaginalAccessory === "smart bullet vibrator") {
+			// Level
+			level.push({text: `No sex`, updateSlave: {clitSetting: `none`}});
+			level.push({text: `All sex`, updateSlave: {clitSetting: `all`}});
+
+			// Body part
+			bodyPart.push({text: `Vanilla`, updateSlave: {clitSetting: `vanilla`}});
+			bodyPart.push({text: `Oral`, updateSlave: {clitSetting: `oral`}});
+			bodyPart.push({text: `Anal`, updateSlave: {clitSetting: `anal`}});
+			bodyPart.push({text: `Boobs`, updateSlave: {clitSetting: `boobs`}});
+			if (V.seePreg !== 0) {
+				bodyPart.push({text: `Preg`, updateSlave: {clitSetting: `pregnancy`}});
+			}
+			// BDSM
+			BDSM.push({text: `Sub`, updateSlave: {clitSetting: `submissive`}});
+			BDSM.push({text: `Dom`, updateSlave: {clitSetting: `dom`}});
+			BDSM.push({text: `Masochism`, updateSlave: {clitSetting: `masochist`}});
+			BDSM.push({text: `Sadism`, updateSlave: {clitSetting: `sadist`}});
+			BDSM.push({text: `Humiliation`, updateSlave: {clitSetting: `humiliation`}});
+
+			// Gender
+			gender.push({text: `Men`, updateSlave: {clitSetting: `men`}});
+			gender.push({text: `Women`, updateSlave: {clitSetting: `women`}});
+			gender.push({text: `Anti-men`, updateSlave: {clitSetting: `anti-men`}});
+			gender.push({text: `Anti-women`, updateSlave: {clitSetting: `anti-women`}});
+		}
+
+		let label = null;
+		if (slave.clitPiercing === 3) {
+			if (slave.dick < 1) {
+				label = `${His} smart clit piercing `;
+				if (slave.vaginalAccessory === "smart bullet vibrator") {
+					label += `and smart bullet vibrator are `;
+				} else {
+					label += `is `;
+				}
+				label += `set to: `;
+			} else {
+				label = `${His} smart frenulum piercing `;
+				if (slave.vaginalAccessory === "smart bullet vibrator") {
+					label += `and smart bullet vibrator are `;
+				} else {
+					label += `is `;
+				}
+				label += `set to: `;
+			}
+		} else if (slave.vaginalAccessory === "smart bullet vibrator") {
+			label = `${His} smart bullet vibe is set to: `;
+		}
+		if (label) {
+			let title = App.UI.DOM.appendNewElement('div', el, label);
+			let selected = App.UI.DOM.appendNewElement('span', title, `${slave.clitSetting}. `);
+			selected.style.fontWeight = "bold";
+		}
+
+		App.UI.SlaveInteract.appendLabeledChoiceRow(el, "Level", level, slave);
+		App.UI.SlaveInteract.appendLabeledChoiceRow(el, "Body part", bodyPart, slave);
+		App.UI.SlaveInteract.appendLabeledChoiceRow(el, "BDSM", BDSM, slave);
+		App.UI.SlaveInteract.appendLabeledChoiceRow(el, "Gender", gender, slave);
+
+		return el;
+	}
 };
 
 App.UI.SlaveInteract.custom = (function() {
@@ -3080,7 +3370,6 @@ App.UI.SlaveInteract.refreshAll = function(slave) {
 	App.UI.SlaveInteract.diet(slave);
 	App.UI.SlaveInteract.dietBase(slave);
 	App.UI.SlaveInteract.snacks(slave);
-	App.UI.SlaveInteract.smartSettings(slave);
-	App.UI.SlaveInteract.orgasm(slave);
+	App.UI.SlaveInteract.rules(slave);
 	App.UI.SlaveInteract.work(slave);
 };
diff --git a/src/uncategorized/slaveInteract.tw b/src/uncategorized/slaveInteract.tw
index 23f69235becfe32ed3c72112c6c6c0302c1b521a..46ba3454f437d529763d019fea65732ac0a5acd0 100644
--- a/src/uncategorized/slaveInteract.tw
+++ b/src/uncategorized/slaveInteract.tw
@@ -259,125 +259,8 @@
 
 <div id="Rules" class="tabcontent">
 	<div class="content">
-		<p>
-			<<if $seePreg != 0>>
-				<<if $universalRulesImpregnation == "HG">>
-					<<if getSlave($AS).HGExclude == 0>>
-						Will be bred by the Head Girl when fertile. <<link "Exempt $him" "Slave Interact">><<set getSlave($AS).HGExclude = 1>><</link>>
-					<<else>>
-						Will not be bred by the Head Girl when fertile. <<link "Include $him" "Slave Interact">><<set getSlave($AS).HGExclude = 0>><</link>>
-					<</if>>
-				<<elseif $universalRulesImpregnation == "Stud">>
-					<<if getSlave($AS).StudExclude == 0>>
-						Will be bred by your Stud when fertile. <<link "Exempt $him" "Slave Interact">><<set getSlave($AS).StudExclude = 1>><</link>>
-					<<else>>
-						Will not be bred by your Stud when fertile. <<link "Include $him" "Slave Interact">><<set getSlave($AS).StudExclude = 0>><</link>>
-					<</if>>
-				<</if>>
-			<</if>>
-		</p>
-
-		<p>
-			<<if getSlave($AS).useRulesAssistant == 0>>
-				<span class="gray">
-					''Not subject'' to the Rules Assistant.
-				</span>
-				<<link "Include $him" "Slave Interact">>
-					<<set getSlave($AS).useRulesAssistant = 1>>
-				<</link>>
-			<<else>>
-				__Rules Assistant:__ [[Rules Assistant Options|Rules Assistant]]
-
-				<<if (def getSlave($AS).currentRules) && (getSlave($AS).currentRules.length > 0)>>
-					<ul style="margin:0">
-						<<= $defaultRules.filter(x => ruleApplied(getSlave($AS), x)).map(x => `<li>Rule "${x.name}" applied</li>`).join(" ") >>
-					</ul>
-				<<else>>
-					|
-				<</if>>
-				<span style="font-style:italic">
-					<<link "Apply rules">>
-						<<run DefaultRules(getSlave($AS))>>
-						<<goto "Slave Interact">>
-					<</link>>
-				</span>
-				|
-				<<link "Exempt $him" "Slave Interact">>
-					<<set getSlave($AS).useRulesAssistant = 0>>
-				<</link>>
-			<</if>>
-		</p>
-		<<if getSlave($AS).fuckdoll > 0>>
-			//Rules have little meaning for living sex toys//
-		<<else>>
-			<<run penthouseCensus()>>
-
-			Living standard: <span id="livingRules" style="font-weight:bold"><<= getSlave($AS).rules.living>></span>.
-			<<if setup.facilityCareers.includes(getSlave($AS).assignment)>>
-				//$His living conditions are managed by $his assignment.//
-			<<elseif (getSlave($AS).assignment == "be your Head Girl") && ($HGSuite == 1)>>
-				//$He has $his own little luxurious room in the penthouse with everything $he needs to be a proper Head Girl.//
-			<<elseif (getSlave($AS).assignment == "guard you") && ($dojo > 1)>>
-				//$He has a comfortable room in the armory to call $his own.//
-			<<else>>
-				<<link "Spare">><<set getSlave($AS).rules.living = "spare">><<replace "#livingRules">><<= getSlave($AS).rules.living>><</replace>><</link>> |
-				<<link "Normal">><<set getSlave($AS).rules.living = "normal">><<replace "#livingRules">><<= getSlave($AS).rules.living>><</replace>><</link>> |
-				<<if $roomsPopulation <= $rooms-0.5>><<link "Luxurious">><<set getSlave($AS).rules.living = "luxurious">><<replace "#livingRules">><<= getSlave($AS).rules.living>><</replace>><</link>><<else>>//No luxurious rooms available//<</if>>
-			<</if>>
-
-			<<if $cheatMode>>
-			<<if ["be a servant", "get milked", "please you", "serve in the club", "serve the public", "whore", "work as a farmhand", "work in the brothel", "work in the dairy", "work a glory hole"].includes($activeSlave.assignment)>>
-				<br>Sleep rules: <span id="restRules" style="font-weight:bold"><<= getSlave($AS).rules.rest>></span>.
-				<<link "None">><<set getSlave($AS).rules.rest = "none">><<replace "#restRules">><<= getSlave($AS).rules.rest>><</replace>><</link>> |
-				<<link "Cruel">><<set getSlave($AS).rules.rest = "cruel">><<replace "#restRules">><<= getSlave($AS).rules.rest>><</replace>><</link>> |
-				<<link "Restrictive">><<set getSlave($AS).rules.rest = "restrictive">><<replace "#restRules">><<= getSlave($AS).rules.rest>><</replace>><</link>> |
-				<<link "Permissive">><<set getSlave($AS).rules.rest = "permissive">><<replace "#restRules">><<= getSlave($AS).rules.rest>><</replace>><</link>> |
-				<<link "Mandatory">><<set getSlave($AS).rules.rest = "mandatory">><<replace "#restRules">><<= getSlave($AS).rules.rest>><</replace>><</link>>
-			<</if>>
-			<</if>>
-
-			<br>Typical punishment: <span id="standardPunishment" style="font-weight:bold"><<= getSlave($AS).rules.punishment>></span>.
-			<<link "Confinement">><<set getSlave($AS).rules.punishment = "confinement">><<replace "#standardPunishment">><<= getSlave($AS).rules.punishment>><</replace>><</link>> |
-			<<link "Whipping">><<set getSlave($AS).rules.punishment = "whipping">><<replace "#standardPunishment">><<= getSlave($AS).rules.punishment>><</replace>><</link>> |
-			<<link "Chastity">><<set getSlave($AS).rules.punishment = "chastity">><<replace "#standardPunishment">><<= getSlave($AS).rules.punishment>><</replace>><</link>> |
-			<<link "Situational">><<set getSlave($AS).rules.punishment = "situational">><<replace "#standardPunishment">><<= getSlave($AS).rules.punishment>><</replace>><</link>>
-			<br>Typical reward: <span id="standardReward" style="font-weight:bold"><<= getSlave($AS).rules.reward>></span>.
-			<<link "Relaxation">><<set getSlave($AS).rules.reward = "relaxation">><<replace "#standardReward">><<= getSlave($AS).rules.reward>><</replace>><</link>> |
-			<<link "Drugs">><<set getSlave($AS).rules.reward = "drugs">><<replace "#standardReward">><<= getSlave($AS).rules.reward>><</replace>><</link>> |
-			<<link "Orgasm">><<set getSlave($AS).rules.reward = "orgasm">><<replace "#standardReward">><<= getSlave($AS).rules.reward>><</replace>><</link>> |
-			<<link "Situational">><<set getSlave($AS).rules.reward = "situational">><<replace "#standardReward">><<= getSlave($AS).rules.reward>><</replace>><</link>>
-
-
-			<<if getSlave($AS).lactation != 2>>
-				<br>Lactation maintenance: <span id="lactationRules" style="font-weight:bold"><<= getSlave($AS).rules.lactation>></span>.
-				<<link "Left alone">><<set getSlave($AS).rules.lactation = "none">><<replace "#lactationRules">><<= getSlave($AS).rules.lactation>><</replace>><</link>> |
-				<<if getSlave($AS).lactation == 0>>
-					<<link "Induce lactation">><<set getSlave($AS).rules.lactation = "induce">><<replace "#lactationRules">><<= getSlave($AS).rules.lactation>><</replace>><</link>>
-				<<else>>
-					<<link "Maintain lactation">><<set getSlave($AS).rules.lactation = "maintain">><<replace "#lactationRules">><<= getSlave($AS).rules.lactation>><</replace>><</link>>
-				<</if>>
-			<</if>>
-
-			<span id="orgasm"></span>
-			<script>App.UI.SlaveInteract.orgasm(getSlave(V.activeSlave.ID))</script>
-
-			<<if getSlave($AS).voice != 0>>
-				Speech rules: <span id="speechRules" style="font-weight:bold"><<= getSlave($AS).rules.speech>></span>.
-				<<link "Restrictive">><<set getSlave($AS).rules.speech = "restrictive">><<replace "#speechRules">><<= getSlave($AS).rules.speech>><</replace>><</link>> |
-				<<link "Permissive">><<set getSlave($AS).rules.speech = "permissive">><<replace "#speechRules">><<= getSlave($AS).rules.speech>><</replace>><</link>>
-				<<if getSlave($AS).accent > 0 && getSlave($AS).accent < 4>>| <<link "Accent elimination">><<set getSlave($AS).rules.speech = "accent elimination">><<replace "#speechRules">><<= getSlave($AS).rules.speech>><</replace>><</link>>
-				<<elseif getSlave($AS).accent > 3>>| <<link "Language lessons">><<set getSlave($AS).rules.speech = "language lessons">><<replace "#speechRules">><<= getSlave($AS).rules.speech>><</replace>><</link>>
-				<</if>>
-			<</if>>
-
-			<br>
-			Relationship rules: <span id="relationshipRules" style="font-weight:bold"><<= getSlave($AS).rules.relationship>></span>.
-			<<link "Restrictive">><<set getSlave($AS).rules.relationship = "restrictive">><<replace "#relationshipRules">><<= getSlave($AS).rules.relationship>><</replace>><</link>> |
-			<<link "Just friends">><<set getSlave($AS).rules.relationship = "just friends">><<replace "#relationshipRules">><<= getSlave($AS).rules.relationship>><</replace>><</link>> |
-			<<link "Permissive">><<set getSlave($AS).rules.relationship = "permissive">><<replace "#relationshipRules">><<= getSlave($AS).rules.relationship>><</replace>><</link>>
-		<</if>>
-		<span id="smartSettings"></span>
-		<script>App.UI.SlaveInteract.smartSettings(getSlave(V.activeSlave.ID))</script>
+		<span id="rules"></span>
+		<script>App.UI.SlaveInteract.rules(getSlave(V.activeSlave.ID))</script>
 	</div>
 </div>