diff --git a/Changelog.txt b/Changelog.txt
index baa5930f0d6ed8dee2080afed629c73b1cd648f6..f0288ffa637c7d933d4103f5083ccf38d23ecd0e 100644
--- a/Changelog.txt
+++ b/Changelog.txt
@@ -2,6 +2,9 @@ Pregmod
 
 0.10.7.1-3.4.x
 
+	-added nipple growth drugs
+	-various fixes and cleaning
+
 	3/27/2020
 
 	1
diff --git a/compile.sh b/compile.sh
index 53265b8640a82828176aedd42bdb078b04e66265..ef62d7c3edce75b714e1f945e7458859a794a834 100755
--- a/compile.sh
+++ b/compile.sh
@@ -3,8 +3,8 @@
 output=/dev/stdout
 
 # displays help text
-function displayHelp {
-  cat << HelpText
+function displayHelp() {
+	cat <<HelpText
 Usage: compile.sh [OPTION]...
 
 Options:
@@ -17,17 +17,17 @@ HelpText
 }
 
 #display an error message
-function echoError {
-	echo -e "\033[0;31m$@\033[0m"
+function echoError() {
+	echo -e "\033[0;31m$*\033[0m"
 }
 
 #display message
-function echoMessage {
-	echo "$1" > "${output}"
+function echoMessage() {
+	echo "$1" >"${output}"
 }
 
 #compile the HTML file
-function compile {
+function compile() {
 	mkdir -p bin/resources
 	export TWEEGO_PATH=devTools/tweeGo/storyFormats
 	TWEEGO_EXE="tweego"
@@ -36,30 +36,31 @@ function compile {
 		echoMessage "system tweego binary"
 	else
 		case "$(uname -m)" in
-		x86_64|amd64)
-			echoMessage "x64 arch"
-			if [ "$(uname -s)" = "Darwin" ]; then
-				TWEEGO_EXE="./devTools/tweeGo/tweego_osx64"
-			elif [ $OSTYPE = "msys" ]; then
-				TWEEGO_EXE="./devTools/tweeGo/tweego_win64"
-			else
-				TWEEGO_EXE="./devTools/tweeGo/tweego_nix64"
-			fi
-			;;
-		x86|i[3-6]86)
-			echoMessage "x86 arch"
-			if [ "$(uname -s)" = "Darwin" ]; then
-				TWEEGO_EXE="./devTools/tweeGo/tweego_osx86"
-			elif [ $OSTYPE = "msys" ]; then
-				TWEEGO_EXE="./devTools/tweeGo/tweego_win86"
-			else
-				TWEEGO_EXE="./devTools/tweeGo/tweego_nix86"
-			fi
-			;;
-		*)
-			echoError "No system tweego binary found, and no precompiled binary for your platform available."
-			echoError "Please compile tweego and put the executable in PATH."
-			exit 2
+			x86_64 | amd64)
+				echoMessage "x64 arch"
+				if [ "$(uname -s)" = "Darwin" ]; then
+					TWEEGO_EXE="./devTools/tweeGo/tweego_osx64"
+				elif [ "$OSTYPE" = "msys" ]; then
+					TWEEGO_EXE="./devTools/tweeGo/tweego_win64"
+				else
+					TWEEGO_EXE="./devTools/tweeGo/tweego_nix64"
+				fi
+				;;
+			x86 | i[3-6]86)
+				echoMessage "x86 arch"
+				if [ "$(uname -s)" = "Darwin" ]; then
+					TWEEGO_EXE="./devTools/tweeGo/tweego_osx86"
+				elif [ "$OSTYPE" = "msys" ]; then
+					TWEEGO_EXE="./devTools/tweeGo/tweego_win86"
+				else
+					TWEEGO_EXE="./devTools/tweeGo/tweego_nix86"
+				fi
+				;;
+			*)
+				echoError "No system tweego binary found, and no precompiled binary for your platform available."
+				echoError "Please compile tweego and put the executable in PATH."
+				exit 2
+				;;
 		esac
 	fi
 
@@ -78,8 +79,7 @@ function compile {
 	devTools/concatFiles.sh js/ '*.js' bin/fc.js
 	$TWEEGO_EXE -o $file --module=bin/fc.js --head devTools/head.html src/ || build_failed="true"
 	rm -f bin/fc.js
-	if [ "$build_failed" = "true" ]
-	then
+	if [ "$build_failed" = "true" ]; then
 		echoError "Build failed."
 		exit 1
 	fi
@@ -97,29 +97,29 @@ if [[ "$1" == "" ]]; then
 	echoMessage "For more options see compile.sh -h."
 else
 	#parse options
-	while [[ "$1" ]]
-	do
+	while [[ "$1" ]]; do
 		case $1 in
-		-d|--dry)
-			dry="true"
-		;;
-		-g|--git)
-			usehash="true"
-		;;
-		-h|--help)
-			displayHelp
-			exit 0
-		;;
-		-s|--sanity)
-			sanity="true"
-		;;
-		-q|--quiet)
-			output=/dev/null
-		;;
-		*)
-			echoError "Unknown argument $1."
-			displayHelp
-			exit 1
+			-d | --dry)
+				dry="true"
+				;;
+			-g | --git)
+				usehash="true"
+				;;
+			-h | --help)
+				displayHelp
+				exit 0
+				;;
+			-s | --sanity)
+				sanity="true"
+				;;
+			-q | --quiet)
+				output=/dev/null
+				;;
+			*)
+				echoError "Unknown argument $1."
+				displayHelp
+				exit 1
+				;;
 		esac
 		shift
 	done
diff --git a/sanityCheck.sh b/sanityCheck.sh
index 268742e99c464ab95209493f05fdab1a6a419056..500558d0cfb2486b91921873687c2d1525039ba2 100755
--- a/sanityCheck.sh
+++ b/sanityCheck.sh
@@ -8,7 +8,7 @@ fi
 WARNING='\033[93m'
 
 myprint() {
-	while read data; do
+	while read -r data; do
 		echo -n -e "[$1]$WARNING"
 		echo "$data"
 	done
@@ -25,17 +25,17 @@ $GREP "<<[^\"<>]*\"[^\"<>]*>>" -- 'src/*' | myprint "MissingSpeechMark"
 # Check for missing ".  e.g.:   <<if $foo = "hello)
 $GREP -e "<<[^\"<>]*\([^\"<>]*\"[^><\"]*\"\| [<>] \)*\"\([^\"<>]*\"[^><\"]*\"\| [<>] \)*\([^\"<>]\| [<>] \)*>>" --and --not -e "*[^']*" -- 'src/*' | myprint "MissingSpeechMark2"
 # Check for colors like: @@color:red   - should be @@.red
-$GREP -e "@@color:" --and --not -e  "@@color:rgb([0-9 ]\+,[0-9 ]\+,[0-9 ]\+)" -- "src/*" | myprint "UseCSSColors"
+$GREP -e "@@color:" --and --not -e "@@color:rgb([0-9 ]\+,[0-9 ]\+,[0-9 ]\+)" -- "src/*" | myprint "UseCSSColors"
 # Check for missing $ in activeSlave or PC
-$GREP "<<[ ]*[^\$><_\[]*\(activeSlave\|PC\)[.]"  -- "src/*" | myprint "MissingDollar"
+$GREP "<<[ ]*[^\$><_\[]*\(activeSlave\|PC\)[.]" -- "src/*" | myprint "MissingDollar"
 # Check for closing bracket without opening bracket.  e.g.:  <<if foo)>>	  (but  <<case "foo")>>   is valid, so ignore those
-$GREP -e "<<[ a-zA-Z]\+\([^()<>]\|[^()<>][<>][^()<>]\)*)" --and --not -e "<< *case"  -- "src/*" | myprint "MissingOpeningBracket"
+$GREP -e "<<[ a-zA-Z]\+\([^()<>]\|[^()<>][<>][^()<>]\)*)" --and --not -e "<< *case" -- "src/*" | myprint "MissingOpeningBracket"
 # Check for opening bracket without closing bracket.  e.g.:  <<if (foo>>
 $GREP -e "<<[ a-zA-Z]\([^<>]\|[^<>][<>][^<>]\)\+(\([^()<>]\|[^<>()][<>][^<>()]\|([^<>()]*])\)*>>" -- "src/*" | myprint "MissingClosingBracket"
 # Check for two closing brackets but one opening bracket.  e.g.:  <<if (foo))>>
-$GREP -e "<<[ a-zA-Z]\+[^()<>]*([^()]*)[^()]*)[^()<>]*>>"  -- "src/*" | myprint "MissingOpeningBracket2"
+$GREP -e "<<[ a-zA-Z]\+[^()<>]*([^()]*)[^()]*)[^()<>]*>>" -- "src/*" | myprint "MissingOpeningBracket2"
 # Check for one closing bracket but two opening brackets.  e.g.:  <<if ((foo)>>
-$GREP -e "<<[ a-zA-Z]\+[^()<>]*([^()]*([^()]*)[^()<>]*>>"  -- "src/*" | myprint "MissingClosingBracket2"
+$GREP -e "<<[ a-zA-Z]\+[^()<>]*([^()]*([^()]*)[^()<>]*>>" -- "src/*" | myprint "MissingClosingBracket2"
 $GREP -e "<<.*[(][^<>)]*[(][^<>)]*)\?[^<>)]*>>" -- "src/*" | myprint "MissingClosingBracket3"
 # Check for too many >>>.  e.g.: <</if>>>
 $GREP "<<[^<>]*[<>]\?[^<>]*>>>" -- "src/*.tw" | myprint "TooManyAngleBrackets"
@@ -50,7 +50,7 @@ $GREP "<<else >\?[^>]" -- 'src/*' | myprint "ShouldBeElseIf"
 # Check, e.g., =to
 $GREP "=to" -- 'src/*' | myprint "EqualAndTo"
 # Check doing  $slaves.foo instead of $slaves[i].foo
-$GREP -e "[$]slaves[.]"  --and --not -e '[$]slaves[.]\(length\|random\|map\|filter\|deleteAt\|push\|find\|includes\|delete\|forEach\)' -- 'src/*' | myprint "MissingSlavesIndex"
+$GREP -e "[$]slaves[.]" --and --not -e '[$]slaves[.]\(length\|random\|map\|filter\|deleteAt\|push\|find\|includes\|delete\|forEach\)' -- 'src/*' | myprint "MissingSlavesIndex"
 # Try to check for accidentally mixing slaves[] and activeSlave.  This can have a lot of false matches, but has caught a lot of bugs so it's worth the pain
 $GREP -e "activeSlave[.]" --and -e "slaves\[..\?\][.]" --and --not -e '[.]ID' --and --not -e 'slaves\[..\?\][.]\(slaveName\|slaveSurname\|actualAge\|relation\|assignment\|age\|devotion\|trust\|vagina\|mother\|father\|training\)' -- 'src/*' | myprint "MaybeAccidentalMixingOfSlavesAndActiveSlave"
 # Check, e.g.  <<set foo == 4>>
@@ -62,7 +62,7 @@ $GREP -e "<<[a-zA-Z]\([^>\"]\|[^>]>[^>]\|\"[^\"]*\"\)* [a-zA-Z]\+ * =" -- src/*.
 # Check for missing command, e.g.  <<foo =
 $GREP -e "<<[a-zA-Z]* = *" -- src/*.tw | myprint "BadCommand"
 # Check for duplicate words, e.g. with with
-$GREP -e  " \(\b[a-zA-Z][a-zA-Z]\+\) \1\b " --and --not -e " her her " --and --not -e " you you " --and --not -e " New New " --and --not -e "Slave Slave " --and --not -e " that that " --and --not -e " in in " --and --not -e " is is " -- 'src/*' | myprint "Duplicate words"
+$GREP -e " \(\b[a-zA-Z][a-zA-Z]\+\) \1\b " --and --not -e " her her " --and --not -e " you you " --and --not -e " New New " --and --not -e "Slave Slave " --and --not -e " that that " --and --not -e " in in " --and --not -e " is is " -- 'src/*' | myprint "Duplicate words"
 # Check for obsolete SugarCube macros
 $GREP -E "<<display |<<click|<<.*\.contains" -- src/*.tw | myprint "ObsoleteMacro"
 # Check for double articles
@@ -73,9 +73,9 @@ $GREP -i -E "\Wan (b|c|d|f|g|j|k|l|m|n|p|q|r|s|t|v|w|x|y|z)\w." -- src/*.tw | gr
 # Check for $ sign mid-word
 $GREP -i "\w$\w" -- src/*.tw | myprint "VarSignMidWord"
 # check for $ sign at beginning of macro
-$GREP '<<\s*\$' -- 'src/*'  | myprint "VarSignAtMacroStart"
+$GREP '<<\s*\$' -- 'src/*' | myprint "VarSignAtMacroStart"
 # check our custom option macro is either options,option,optionlt,optionlte,optiongt,optiongte,optiondefault,optionstyle,optionif
-$GREP -e '<<option' --and --not -e "<<option\(\|s\|lt\|lte\|gt\|gte\|default\|style\|if\)[ >]" -- 'src/*'  | myprint "OptionUnrecognized"
+$GREP -e '<<option' --and --not -e "<<option\(\|s\|lt\|lte\|gt\|gte\|default\|style\|if\)[ >]" -- 'src/*' | myprint "OptionUnrecognized"
 # check our custom option macro is: <<option variable "somestring"
 $GREP -e "<<option[lg]te\? " --and --not -e "<<option[lg]te\?\s\+-\?[0-9]\+\s\+-\?[0-9]\+\s\+[\'\"].*[\'\"]" -- 'src/*' | grep -v src/js | myprint "OptionBadArguments1"
 $GREP -e "<<optiondefault " --and --not -e "<<optiondefault\s\+\(-\?[0-9]\+\|[\'\"].*[\'\"]\|false\|true\)\s\+[\'\"].*[\'\"]" -- 'src/*' | grep -v src/js | myprint "OptionBadArguments2"
@@ -83,8 +83,8 @@ $GREP -e "<<option\([lg]t\?\|default\) *>" -- 'src/*' | grep -v src/js | myprint
 #$GREP -e "<<option " --and --not -e "<<option\s\+\(-\?[0-9]\+\|[\'\"].*[\'\"]\|false\|true\)\s\+[\`\'\"].*[\'\"\`]" -- 'src/*' | grep -v src/js | myprint "OptionBadArguments4" # too many false positives
 $GREP -e "<<if def [^(>]*[&|]" -- 'src/*' | myprint "AddBracketsAroundDef2"
 # check for missing ; before statement
-$GREP 'if $ ' -- 'src/*'  | myprint "Missing ; before statement"
-$GREP 'elseif $ ' -- 'src/*'  | myprint "Missing ; before statement"
+$GREP 'if $ ' -- 'src/*' | myprint "Missing ; before statement"
+$GREP 'elseif $ ' -- 'src/*' | myprint "Missing ; before statement"
 # Check for an unrecognized letter before >>
 $GREP "[^]a-zA-Z0-9 \")}'+-\*\`] *>>" -- 'src/*' | myprint "StrangeCharacterAtEndOfCommand"
 # Check for a . inside a <<>>
@@ -110,10 +110,9 @@ $GREP -i "non.lethal" -- 'src/*' | myprint "ShouldBeNonlethal"
 #$GREP "span class=[^\"]" -- src/*.js --exclude 'src/001-lib/Jquery/Jquery.js' | myprint "MissingQuotes" disabled until I can figure out how to exclude files
 
 (
-cd src/
+	cd src/ || exit
 	$GREP "\$\(PC\|activeSlave\|slaves\|tanks\)[.][^a-zA-Z]" | myprint "UnexpectedCharAfterDot"
 )
 
-
 # Check that all the tags are properly opened and closed & a lot of other stuff
 java -jar devTools/javaSanityCheck/SanityCheck.jar
diff --git a/slave variables documentation - Pregmod.txt b/slave variables documentation - Pregmod.txt
index 5900a574bcc702e674ce45459769119c72e57d1d..040a1da09468d6ab7f5806305ed0277a128a0f51 100644
--- a/slave variables documentation - Pregmod.txt	
+++ b/slave variables documentation - Pregmod.txt	
@@ -1676,16 +1676,16 @@ series of rings up the back that can be tied together
 0 - no
 1 - yes
 
-amp:
+(leg|arm).(right|left).type:
 
-is slave amputee
--5 - swiss army limbs
--4 - artificial limbs - Combat
--3 - artificial limbs - Beauty
--2 - artificial limbs - Sex
--1 - artificial limbs
- 0 - no
- 1 - yes
+individual limb state
+0 - missing limb
+1 - natural
+2 - simple prosthetic
+3 - advanced - Sex
+4 - advanced - Beauty
+5 - advanced - Combat
+6 - cybernetic
 
 PLimb:
 
@@ -2713,13 +2713,6 @@ how much of her diet is milk
 1 - supplemented
 2 - nearly entirely
 
-tired:
-
-affects work performance, i.e. decreased pay for whoring
-caused by poor/overcrowded sleeping conditions
-0 - not tired
-1 - tired
-
 hormones:
 
 -2 - heavy male hormones
diff --git a/src/002-config/mousetrapConfig.js b/src/002-config/mousetrapConfig.js
index 1007d1f07271562f06aea98bcc4a3df159143d88..0a8bc6f2df416623886e07b4450030df2ee48a87 100644
--- a/src/002-config/mousetrapConfig.js
+++ b/src/002-config/mousetrapConfig.js
@@ -81,7 +81,7 @@ Mousetrap.bind("v", function() {
 	$("#story-caption #URButton a.macro-link").trigger("click");
 });
 Mousetrap.bind("r", function() {
-	$("#RAButton a.macro-link").trigger("click");
+	$("#RAButton a").trigger("click");
 });
 Mousetrap.bind("x", function() {
 	$("#story-caption #managePerson a.macro-link").trigger("click");
diff --git a/src/Corporation/corporate.js b/src/Corporation/corporate.js
index 9fd85d7976843558787b461a2ad161c6e3d1a662..6028170bdf72b48f3275d435184035efca9e11e5 100644
--- a/src/Corporation/corporate.js
+++ b/src/Corporation/corporate.js
@@ -264,7 +264,7 @@ App.Corporate.Init = function() {
 			super();
 
 			this._const.category = App.Corporate.maintenance.divisionCategories[categoryId];
-			if(this._const.category == null) { debugger; throw new "Invalid category id: " + categoryId; }
+			if(this._const.category == null) { throw new "Invalid category id: " + categoryId; }
 			this._var.divisions = [];
 		}
 		addDivision(division) {
@@ -320,7 +320,7 @@ App.Corporate.Init = function() {
 			return this._var.operatingCost;
 		}
 		set operatingCost(value) {
-			if(!Number.isFinite(value)) { debugger; throw "Operating cost wasn't finite "; }
+			if(!Number.isFinite(value)) { throw "Operating cost wasn't finite "; }
 			this._var.operatingCost = Math.trunc(value);
 		}
 		get overhead() {
@@ -665,7 +665,6 @@ App.Corporate.Init = function() {
 		if(!Number.isFinite(cost)) { throw "The cost provided was not real"; }
 		cost = Math.trunc(cost);
 		if(weekLedger == null) {
-			debugger;
 			throw "No weekLedger provided";
 		}
 		this.dividend += cost;
diff --git a/src/Mods/SecExp/edicts.tw b/src/Mods/SecExp/edicts.tw
index 8505010daa1ad935c1e5155ec8c46003fa5f7ba0..f9369fa13425f3f526a1593f83f6d7a2e943866f 100644
--- a/src/Mods/SecExp/edicts.tw
+++ b/src/Mods/SecExp/edicts.tw
@@ -2,8 +2,9 @@
 
 <<set $nextButton = "Back", $nextLink = "Main">>
 
+<div class="center">
 ''__Active Edicts__''
-
+</div>
 <<if $alternativeRents == 1>>
 	<br>''Alternative rent payment:'' you are allowing citizens to pay for their rents in menial slaves rather than cash.
 	[[Repeal|edicts][$alternativeRents = 0]]
@@ -214,11 +215,15 @@
 		[[Repeal|edicts][$sunTzu = 0, $militiaBaseAttack--, $militiaBaseDefense--, $mercBaseAttack--, $mercBaseDefense--, $slaveBaseAttack--, $slaveBaseDefense--, $militiaBaseMorale -= 5, $mercBaseMorale -= 5, $slaveBaseMorale -= 5]]
 	<</if>>
 <</if>>
+
+<br>
+<br>
 <hr>
 
+<div class="center">
 ''__Available Edicts__''
 <br>//Passing any edict will cost <<print cashFormat(5000)>> and some authority. More edicts will become available as the arcology develops.//
-<br>
+</div>
 <<if $alternativeRents == 0>>
 	<br>''Alternative rent payment:'' allow citizens to pay for their rents in menial slaves rather than cash, if so they wish.
 	<<if $SecExp.core.authority >= 1000>>
diff --git a/src/endWeek/healthFunctions.js b/src/endWeek/healthFunctions.js
index fa68975f0b9038b52116dc1bf2cb3bb2a7b4f4cf..fc4f860a0da28034b587bd75b74b05906e23f530 100644
--- a/src/endWeek/healthFunctions.js
+++ b/src/endWeek/healthFunctions.js
@@ -341,6 +341,10 @@ window.willWorkToDeath = function willWorkToDeath(slave) {
 		return true;
 	} else if (slave.fetish === "mindbroken") {
 		return true;
+	} else if (V.Madam !== 0 && (slave.assignment === "work in the brothel" || (slave.assignment === "whore" && V.brothel > 0 && V.universalRulesFacilityWork === 1 && V.brothelSpots > 0))) {
+		return true;
+	} else if (V.DJ !== 0 && (slave.assignment === "serve in the club" || (slave.assignment === "serve the public" && V.club > 0 && V.universalRulesFacilityWork === 1 && V.clubSpots > 0))) {
+		return true;
 	}
 	return false;
 };
@@ -491,13 +495,16 @@ window.tired = function tired(slave) {
 			} else {
 				assignment += 15;
 			}
-		} else if (["serve in the master suite", "please you", "be a servant"].includes(slave.assignment)) { // Easy assignments
-			if (slave.tired > 75) {
-				assignment += 2;
+		} else if (["serve in the master suite", "please you", "be a servant", "work as a servant"].includes(slave.assignment)) { // Easy assignments
+			if (slaveResting(slave)) {
+				assignment -= 20;
+				V.slaveUsedRest = 1;
+			} else if (slave.tired + 11 >= 90 && !willWorkToDeath(slave)) {
+				assignment += 1;
 			} else if (slave.devotion > 20) {
-				assignment += 5;
+				assignment += 7;
 			} else {
-				assignment += 10;
+				assignment += 11;
 			}
 		} else if (["learn in the schoolroom", "take classes"].includes(slave.assignment)) { // Trivial assignments
 			if (slave.tired > 80) {
@@ -670,12 +677,12 @@ window.tiredFucks = function tiredFucks(slave) {
 			} else {
 				slave.health.tired += Math.trunc(slave.sexAmount * (1 + normalRandInt(0, 5) / 100) / 50);
 			}
-		} /*else {
+		} else {
 			if ((acceptance > 20 && slave.devotion > 20) || slave.sexualFlaw === "self hating") {
 				slave.health.tired += Math.trunc(slave.sexAmount * (1 + normalRandInt(0, 5) / 100) / 50);
 			} else {
 				slave.health.tired += Math.trunc(slave.sexAmount * (1 + normalRandInt(0, 5) / 100) / 25);
 			}
-		}*/
+		}
 	}
 };
diff --git a/src/endWeek/saBeYourHeadGirl.js b/src/endWeek/saBeYourHeadGirl.js
index e94554dc8a7a418666416cab9011f454e093f25c..8d042f4d9dc2d08d7f45057900a4cad37a2ffbff 100644
--- a/src/endWeek/saBeYourHeadGirl.js
+++ b/src/endWeek/saBeYourHeadGirl.js
@@ -301,7 +301,7 @@ window.saBeYourHeadGirl = (function saBeYourHeadGirl() {
 	 */
 	function prestigeGain(slave) {
 		if (V.HGTimeInGrade + ((slave.intelligence + slave.intelligenceImplant) / 10) + (slave.devotion / 10) + (slave.trust / 10) > 50) {
-			r.push(`slave.slaveName has rendered such long and competent service as your Head Girl that many of your citizens have come to rely on ${his} word as an extension of yours, trusting that if ${he} does something, it's because you trust ${him} to. <span class="green">${He} has become prestigious on ${his} own merits, a remarkable achievement for a slave!</span>`);
+			r.push(`${slave.slaveName} has rendered such long and competent service as your Head Girl that many of your citizens have come to rely on ${his} word as an extension of yours, trusting that if ${he} does something, it's because you trust ${him} to. <span class="green">${He} has become prestigious on ${his} own merits, a remarkable achievement for a slave!</span>`);
 			slave.prestige += 1;
 			slave.prestigeDesc = "Many citizens respect ${his} long and able service as your Head Girl.";
 		}
diff --git a/src/endWeek/saServeThePublic.js b/src/endWeek/saServeThePublic.js
index db878594dd591a5eacc3cc460227c7e1bda9ba05..c18d11ba32816ed1b6278d98f77005667201fe80 100644
--- a/src/endWeek/saServeThePublic.js
+++ b/src/endWeek/saServeThePublic.js
@@ -285,6 +285,71 @@ window.saServeThePublic = (function saServeThePublic() {
 	 *
 	 */
 	function physicalEffects(slave) {
+		if (slave.health.illness > 0 || slave.health.tired > 60) {
+			r += ` ${He} is<span class="red">`;
+			if (slave.health.illness === 1) {
+				r += ` feeling under the weather`;
+			} else if (slave.healtdh.illness === 2) {
+				r += ` somewhat ill`;
+			} else if (slave.health.illness === 3) {
+				r += ` sick`;
+			} else if (slave.health.illness === 4) {
+				r += ` very sick`;
+			} else if (slave.health.illness === 5) {
+				r += ` terribly ill`;
+			}
+			if (slave.health.illness > 0 && slave.health.tired > 90) {
+				r += ` and`;
+			}
+			if (slave.health.tired > 90) {
+				r += ` exhausted`;
+			} else if (slave.health.tired > 60) {
+				r += ` fatigued`;
+			}
+			r += `,</span> hindering ${his} ability to attract and please citizens.`;
+		}
+		if (slave.assignment === "serve in the club") {
+			if (slaveResting(slave)) {
+				r += ` ${He} spends reduced hours working the floor in ${V.clubName} in order to <span class="green">offset ${his} lack of rest.</span>`;
+			} else if (slave.tired + 15 >= 90 && !willWorkToDeath(slave)) {
+				r += ` ${He} attempts to turn down citizens due to ${his} exhaustion, but can do little to stop it or the resulting `;
+				if (V.DJ !== 0) {
+					r += `<span class="trust dec">severe punishment</span> by ${V.DJ.slaveName}. ${His} <span class="devotion dec">reluctance</span> is worked around by your watchful DJ, preventing citizens from ever realizing ${his} intent.`;
+				} else {
+					r += `<span class="trust dec">severe punishment.</span> ${He} <span class="devotion dec">purposefully underperforms,</span> choosing ${his} overall well-being over the consequences, <span class="reputation dec">aggravating citizens and damaging the establishment's image.</span>`;
+					repX(forceNeg(50), "disobedience", slave);
+				}
+				slave.devotion -= 10;
+				slave.trust -= 5;
+			} else {
+				r += ` It gets tiring `;
+				if (hasBothLegs(slave)) {
+					r += `dancing all day and fucking all day, `;
+				} else {
+					r += `being a popular slut, `;
+				}
+				r += `so ${he} ends ${his} shifts <span class="red">eager for sleep.</span>`;
+			}
+			tired(slave);
+		} else if (slave.assignment === "serve the public") {
+			if (slaveResting(slave)) {
+				r += ` ${He} spends reduced hours serving in order to <span class="green">offset ${his} lack of rest.</span>`;
+			} else if (slave.tired + 15 >= 90 && !willWorkToDeath(slave)) {
+				r += ` ${He} attempts to turn down citizens due to ${his} exhaustion, but can do little to avoid it or the resulting `;
+				if (V.club > 0 && V.universalRulesFacilityWork === 1 && V.clubSpots > 0 && V.DJ !== 0) {
+					r += `<span class="trust dec">severe punishment</span> by ${V.DJ.slaveName}. ${His} <span class="devotion dec">reluctance</span> is worked around by your watchful DJ, preventing citizens from ever realizing ${his} intent.`;
+				} else {
+					r += `<span class="trust dec">severe punishment.</span> ${He} <span class="devotion dec">purposefully underperforms,</span> choosing ${his} overall well-being over the consequences, <span class="reputation dec">causing a scene and damaging the image of your public servants.</span>`;
+					repX(forceNeg(100), "disobedience", slave);
+				}
+				slave.devotion -= 10;
+				slave.trust -= 5;
+			} else {
+				r += ` It gets tiring being a popular slut and ${he} ends ${his} shifts <span class="red">eager for sleep.</span>`;
+			}
+			tired(slave);
+		}
+
 		if (slave.assignment !== "serve in the club") {
 			if (slave.curatives > 0 || slave.inflationType === "curative") {
 				r += ` The drugs `;
@@ -338,30 +403,6 @@ window.saServeThePublic = (function saServeThePublic() {
 			}
 		}
 
-		if (slave.health.illness > 0 || slave.health.tired > 60) {
-			r += ` ${He} performed worse this week due to<span class="red">`;
-			if (slave.health.illness === 1) {
-				r += ` feeling under the weather`;
-			} else if (slave.health.illness === 2) {
-				r += ` a minor illness`;
-			} else if (slave.health.illness === 3) {
-				r += ` being sick`;
-			} else if (slave.health.illness === 4) {
-				r += ` being very sick`;
-			} else if (slave.health.illness === 5) {
-				r += ` a terrible illness`;
-			}
-			if (slave.health.illness > 0 && slave.health.tired > 60) {
-				r += ` and`;
-			}
-			if (slave.health.tired > 90) {
-				r += ` exhaustion`;
-			} else if (slave.health.tired > 60) {
-				r += ` being tired`;
-			}
-			r += `.</span>`;
-		}
-
 		if (canDoVaginal(slave)) {
 			if (slave.vagina === 0) {
 				if (slave.aphrodisiacs > 1 || slave.inflationType === "aphrodisiac") {
diff --git a/src/endWeek/saWhore.js b/src/endWeek/saWhore.js
index 0c769d45b381eacdc715121d03a5f520b5bf5134..02f79f6153d8f8a2a26e30cce0dc2c1993c2be42 100644
--- a/src/endWeek/saWhore.js
+++ b/src/endWeek/saWhore.js
@@ -324,6 +324,66 @@ window.saWhore = (function saWhore() {
 	 */
 	function physicalEffects(slave) {
 		let injury = 0;
+
+		if (slave.health.illness > 0 || slave.health.tired > 60) {
+			r += ` ${He} is<span class="red">`;
+			if (slave.health.illness === 1) {
+				r += ` feeling under the weather`;
+			} else if (slave.healtdh.illness === 2) {
+				r += ` somewhat ill`;
+			} else if (slave.health.illness === 3) {
+				r += ` sick`;
+			} else if (slave.health.illness === 4) {
+				r += ` very sick`;
+			} else if (slave.health.illness === 5) {
+				r += ` terribly ill`;
+			}
+			if (slave.health.illness > 0 && slave.health.tired > 90) {
+				r += ` and`;
+			}
+			if (slave.health.tired > 90) {
+				r += ` exhausted`;
+			} else if (slave.health.tired > 60) {
+				r += ` fatigued`;
+			}
+			r += `,</span> hindering ${his} ability to attract and please customers.`;
+		}
+		if (slave.assignment === "work in the brothel") {
+			if (slaveResting(slave)) {
+				r += ` ${He} spends reduced hours working ${V.brothelName} in order to <span class="green">offset ${his} lack of rest.</span>`;
+			} else if (slave.tired + 15 >= 90 && !willWorkToDeath(slave)) {
+				r += ` ${He} attempts to refuse customers due to ${his} exhaustion, but can do little to stop it or the resulting `;
+				if (V.Madam !== 0) {
+					r += `<span class="trust dec">severe punishment</span> by ${V.Madam.slaveName}. ${His} <span class="devotion dec">outbursts</span> are kept in check by your watchful Madam, preventing the customers from ever becoming aware of them while keeping ${him} productive.`;
+				} else {
+					r += `<span class="trust dec">severe punishment.</span> ${He} <span class="devotion dec">purposefully underperforms,</span> choosing ${his} overall well-being over the consequences, <span class="reputation dec">aggravating customers and damaging the establishment's image.</span>`;
+					repX(forceNeg(50), "disobedience", slave);
+				}
+				slave.devotion -= 10;
+				slave.trust -= 5;
+			} else {
+				r += ` It takes effort to be a productive whore and ${he} ends ${his} shifts <span class="red">eager for sleep.</span>`;
+			}
+			tired(slave);
+		} else if (slave.assignment === "whore") {
+			if (slaveResting(slave)) {
+				r += ` ${He} spends reduced hours plying ${his} trade in order to <span class="green">offset ${his} lack of rest.</span>`;
+			} else if (slave.tired + 15 >= 90 && !willWorkToDeath(slave)) {
+				r += ` ${He} attempts to refuse to whore due to ${his} exhaustion, but can do little to avoid it or the resulting `;
+				if (V.brothel > 0 && V.universalRulesFacilityWork === 1 && V.brothelSpots > 0 && V.Madam !== 0) {
+					r += `<span class="trust dec">severe punishment</span> by ${V.Madam.slaveName}. ${His} <span class="devotion dec">outbursts</span> are kept in check by your watchful Madam, preventing the customers from ever becoming aware of them and keeping ${him} productive.`;
+				} else {
+					r += `<span class="trust dec">severe punishment.</span> ${He} <span class="devotion dec">purposefully underperforms,</span> choosing ${his} overall well-being over the consequences, <span class="reputation dec">causing a scene and damaging the image of your whores.</span>`;
+					repX(forceNeg(100), "disobedience", slave);
+				}
+				slave.devotion -= 10;
+				slave.trust -= 5;
+			} else {
+				r += ` It takes effort to be an effective prostitute and ${he} ends ${his} shifts <span class="red">eager for sleep.</span>`;
+			}
+			tired(slave);
+		}
+
 		if (slave.assignment !== window.Job.BROTHEL) {
 			if (slave.curatives > 0 || slave.inflationType === "curative") {
 				r += ` The drugs `;
@@ -408,30 +468,6 @@ window.saWhore = (function saWhore() {
 			}
 		}
 
-		if (slave.health.illness > 0 || slave.health.tired > 60) {
-			r += ` ${He} performed worse this week due to<span class="red">`;
-			if (slave.health.illness === 1) {
-				r += ` feeling under the weather`;
-			} else if (slave.health.illness === 2) {
-				r += ` a minor illness`;
-			} else if (slave.health.illness === 3) {
-				r += ` being sick`;
-			} else if (slave.health.illness === 4) {
-				r += ` being very sick`;
-			} else if (slave.health.illness === 5) {
-				r += ` a terrible illness`;
-			}
-			if (slave.health.illness > 0 && slave.health.tired > 60) {
-				r += ` and`;
-			}
-			if (slave.health.tired > 90) {
-				r += ` exhaustion`;
-			} else if (slave.health.tired > 60) {
-				r += ` being tired`;
-			}
-			r += `.</span>`;
-		}
-
 		if (canDoVaginal(slave)) {
 			if (slave.vagina === 0) {
 				if (slave.aphrodisiacs > 1 || slave.inflationType === "aphrodisiac") {
diff --git a/src/interaction/main/walkPast.js b/src/interaction/main/walkPast.js
index 97c9ab0b757a7821b4bbf7ac1abd6062a274adb2..4985269bd91ad4b1a97d0404a41a5bb929d7d646 100644
--- a/src/interaction/main/walkPast.js
+++ b/src/interaction/main/walkPast.js
@@ -273,8 +273,11 @@ window.walkPast = (function() {
 			if (!isSlaveAvailable(partnerSlave)) {
 				if (partnerSlave.assignment === "work in the dairy" && V.dairyRestraintsSetting >= 2) {
 					t += `trying their best to maintain their relationship with ${partnerName} being part of ${V.dairyName}.`;
-				} else if (partnerSlave.assignment === "be your agent") {
+				} else if (partnerSlave.assignment === "be your agent" && activeSlave.assignment !== "live with your agent") {
 					t += `catching up with each other over a video call. Running an arcology in your stead comes with its perks.`;
+				} else if (partnerSlave.assignment === "live with your agent" || activeSlave.assignment === "live with your agent") {
+					const arc = V.arcologies.find((a) => (a.leaderID === partnerSlave.ID || a.leaderID === activeSlave.ID));
+					t += `having some casual fun with each other in the penthouse of ${arc.name}. ${V.assistant.name} has helpfully put a live feed of their activities up on one of the large screens in your office.`;
 				} else if (partnerSlave.assignment === "be confined in the arcade") {
 					t += `trying their best to maintain their relationship with ${partnerName} being nothing more than a hole in ${V.arcadeName}.`;
 				}
diff --git a/src/interaction/slaveInteract.js b/src/interaction/slaveInteract.js
index e90f0c6e08517a7e75e6c0501971d17f98a206f8..f106bda7f8e710fad22c38b40411b671e731814e 100644
--- a/src/interaction/slaveInteract.js
+++ b/src/interaction/slaveInteract.js
@@ -518,6 +518,7 @@ App.UI.SlaveInteract.useSlaveDisplay = function(slave) {
 		if (slave.vagina > -1) {
 			if (canDoVaginal(slave)) {
 				sexOptions.push({text: `Grope ${his} pussy`, scene: `FondleVagina`});
+				sexOptions.push({text: `Eat ${him} out`, scene: `FLickPussy`});
 			}
 		}
 
diff --git a/src/js/economyJS.js b/src/js/economyJS.js
index 7b0d4b94d14a37777e2d303b8a5c083e306469ec..d90e4bf6b6772baf9779f2700982cabe384725a9 100644
--- a/src/js/economyJS.js
+++ b/src/js/economyJS.js
@@ -1704,6 +1704,7 @@ window.slaveJobValues = function(lowerClassSexDemandRef, middleClassSexDemandRef
 	function SJVClub(s) {
 		let toTheClub = 0;
 		let beautyMultiplier = 1;
+		let restEffect = restEffects(s, 15);
 		s.minorInjury = 0;
 
 		// The beauty multiplier
@@ -1785,6 +1786,9 @@ window.slaveJobValues = function(lowerClassSexDemandRef, middleClassSexDemandRef
 				s.sexAmount *= (10 - CL - toTheClubTotal) / 10;
 			}
 		}
+		if (restEffect != healthPenalty(s)) {
+			s.sexAmount *= restEffect;
+		}
 		s.sexAmount = Math.trunc(s.sexAmount * beautyMultiplier);
 
 		// The effect of sexual acts on tiredness
@@ -1816,8 +1820,11 @@ window.slaveJobValues = function(lowerClassSexDemandRef, middleClassSexDemandRef
 			s.sexQuality += 2;
 			clubSpots -= 1;
 		}
+		if (healthPenalty(s) < restEffect) {
+			s.sexQuality = Math.trunc(s.sexQuality * healthPenalty(s) / restEffect);
+		}
 		if (s.assignment !== "recruit girls") {
-			slaveJobValues.club += s.sexAmount * s.sexQuality * healthPenalty(s);
+			slaveJobValues.club += Math.trunc(s.sexAmount * s.sexQuality);
 		}
 	}
 
@@ -1960,7 +1967,7 @@ window.slaveJobValues = function(lowerClassSexDemandRef, middleClassSexDemandRef
 			let targetBudget; // Finding the right budget target
 			let fuckMin; // minimum amount of fucks
 			let fuckDev = 3; // standard deviation of fucks
-			const initialHealthPenalty = healthPenalty(s);
+			const initialHealthPenalty = restEffects(s, 15);
 			s.effectiveWhoreClass = effectiveWhoreClass(s);
 			s.maxWhoreClass = s.effectiveWhoreClass;
 			income *= initialHealthPenalty;
@@ -2017,6 +2024,9 @@ window.slaveJobValues = function(lowerClassSexDemandRef, middleClassSexDemandRef
 					fuckMin = 60;
 			}
 
+			if (initialHealthPenalty != healthPenalty(s)) {
+				fuckMin *= initialHealthPenalty;
+			}
 			sexMin = normalRandInt(fuckMin, fuckDev); // The minimum of fucks per week; can increase if needed
 			sexBudget = Math.trunc(targetBudget); // initial maximum price per fuck; can increase if needed
 			while (income > sexBudget * sexMin) { // if the income can not be caught within the initial values of sexMin and sexBudget we increase both as needed in this loop
diff --git a/src/js/health.js b/src/js/health.js
index 0fe0e9595af614b13c7200b4d86b628e368b9c45..099bc5c641ada6399ef7903967c13acdc355d8b2 100644
--- a/src/js/health.js
+++ b/src/js/health.js
@@ -1,5 +1,5 @@
 /**
- * checks for illness and reduces the effectiveness of the slave accordingly -- 5, 10, 25, 50, 90% reduced
+ * checks for illness and reduces the effectiveness of the slave accordingly -- 10, 25, 50, 85, 95% reduced
  * also checks for tiredness and reduces effectiveness from that as well -- 25% reduction at 90+ and 10% at 60-90
  * @param {App.Entity.SlaveState} slave
  * @returns {number}
@@ -9,18 +9,7 @@ window.healthPenalty = function healthPenalty(slave) {
 	let penalty = 100;
 	if (slave.assignment !== "work a glory hole") {
 		if (H.illness > 0) {
-			// penalty *= 1 - (100 - Math.min(Math.pow(H.illness, 2) * 5 + 5, 95)) / 100; Needs checking!
-			if (H.illness === 5) {
-				penalty *= 0.10;
-			} else if (H.illness === 4) {
-				penalty *= 0.50;
-			} else if (H.illness === 3) {
-				penalty *= 0.75;
-			} else if (H.illness === 2) {
-				penalty *= 0.90;
-			} else if (H.illness === 1) {
-				penalty *= 0.95;
-			}
+			penalty *= (100 - Math.min((Math.pow(H.illness, 2) * 5 + 5), 95)) / 100;
 		}
 		if (H.tired > 90) {
 			penalty *= 0.75;
diff --git a/src/js/rulesAssistantOptions.js b/src/js/rulesAssistantOptions.js
index 9e380a413170d84411b7cd9e70b6749b288eddb8..b39c224105cee224f6a5a063b81813b37d549c13 100644
--- a/src/js/rulesAssistantOptions.js
+++ b/src/js/rulesAssistantOptions.js
@@ -359,7 +359,7 @@ window.rulesAssistantOptions = (function() {
 			} else {
 				selected = this.children.filter(listItem => this.dataEqual(listItem.data, dataValue));
 			}
-			if (selected.length > 1) { debugger; throw Error(`Multiple shortcuts matched ${JSON.stringify(dataValue)}`); }
+			if (selected.length > 1) { throw Error(`Multiple shortcuts matched ${JSON.stringify(dataValue)}`); }
 			if (selected.length === 1) {
 				const listItem = selected[0];
 				listItem.select(false);
@@ -2050,7 +2050,7 @@ window.rulesAssistantOptions = (function() {
 		}
 
 		nds() {
-			[this.breasts, this.butts, this.lips, this.dicks, this.balls].forEach(i => {
+			this.sublists.forEach(i => {
 				i.setValue(null);
 				i.propagateChange();
 			});
@@ -2309,8 +2309,7 @@ window.rulesAssistantOptions = (function() {
 			if (V.arcologies[0].FSAssetExpansionistResearch === 1) {
 				drugs.push(["hyper breast injections"]);
 			}
-			if (V.dispensary)
-			{
+			if (V.dispensary) {
 				drugs.push(["nipple enhancers"]);
 			}
 			if (V.purchasedSagBGone === 1) {
@@ -2938,7 +2937,11 @@ window.rulesAssistantOptions = (function() {
 				["nice", 1],
 				["gorgeous", 2],
 				["color-coordinate with hair", 3],
-				["slutty", 4]
+				["slutty", 4],
+				["neon", 5],
+				["neon color-coordinate with hair", 6],
+				["metallic", 7],
+				["metallic color-coordinate with hair", 8]
 			];
 			super("Makeup", pairs);
 			this.setValue(current_rule.set.makeup);
@@ -2969,6 +2972,7 @@ window.rulesAssistantOptions = (function() {
 	class HairLengthList extends ListSelector {
 		constructor() {
 			const pairs = [
+				["shaved", 0],
 				["very short", 5],
 				["short", 10],
 				["shoulder length", 30],
diff --git a/src/js/slaveCostJS.js b/src/js/slaveCostJS.js
index 4abd0af972c470487f717b889cec75dfd7bec2d4..32dbaf1e65a580c076e09c1630e5832989fd77c9 100644
--- a/src/js/slaveCostJS.js
+++ b/src/js/slaveCostJS.js
@@ -103,7 +103,7 @@ window.BeautyArray = (function() {
 		} else if (arcology.FSIntellectualDependency !== "unset") {
 			adjustBeauty("Intelligence: Intellectual Dependency", -((arcology.FSIntellectualDependency / 10) * ((slave.intelligence + slave.intelligenceImplant) / 20))); /* 65 */
 		} else if (arcology.FSDegradationist !== "unset") {
-			adjustBeauty("Intelligence: Degredationist", -((arcology.FSDegradationist / 10) * ((slave.intelligence + slave.intelligenceImplant) / 50))); /* 20 */
+			adjustBeauty("Intelligence: Degradationist", -((arcology.FSDegradationist / 10) * ((slave.intelligence + slave.intelligenceImplant) / 50))); /* 20 */
 		} else {
 			adjustBeauty("Intelligence: General", ((slave.intelligence + slave.intelligenceImplant) / 10)); /* -10 to 13 */
 		}
diff --git a/src/personalAssistant/assistantAppearance.tw b/src/personalAssistant/assistantAppearance.tw
index f4595f17c8ff462f2bab5090ba620a4847d4d994..bd374414e011b173ad034f839229c6e3e2bbdff3 100644
--- a/src/personalAssistant/assistantAppearance.tw
+++ b/src/personalAssistant/assistantAppearance.tw
@@ -1526,7 +1526,7 @@ _HeA's a cute little <<if $arcologies[0].FSSupremacist != "unset" && $assistant.
 		<<case "eugenics">>
 			wearing nothing at all. You can't take your eyes off of _hisA perfect body, but at the same time, you feel a strange sense of danger about _himA.
 		<<case "gender radicalist">>
-			wearing nothing at all. Even though _heA lacks a penis, you can't shake the feeling that it's not a trap.
+			wearing nothing at all. Even though _heA lacks a penis, you can't shake the feeling that it's a trap.
 		<<case "gender fundamentalist">>
 			full breasts, wide hips and wearing absolutely nothing. You swear _hisA tits are moving slightly and an unusual bulge can be seen writhing in _hisA lower belly.
 		<<case "asset expansionist">>
diff --git a/src/pregmod/FCTV/seFCTVremote.tw b/src/pregmod/FCTV/seFCTVremote.tw
index 8dbc5fb61d595a9a5b2e3baa2b86f069f9edae8c..829085455e47e81541bdebafb63e7938a9bd7642 100644
--- a/src/pregmod/FCTV/seFCTVremote.tw
+++ b/src/pregmod/FCTV/seFCTVremote.tw
@@ -221,7 +221,7 @@
 				</p>
 
 				<p>
-					"Uh, that <span class="virginity loss">virgin ass</span>!" the customer exclaims. "How's THIS for an upgraded package. Last time I had a billing problem you folks told me where to shove it. Well here. It. Goes!" From the way they collapse over each other, it seems they orgasmed at about the same time.
+					"Uh, that <span class="virginity loss">virgin ass</span>!" the customer exclaims. "How's THIS for an upgraded package. Last time I had a billing problem you folks told me where to shove it. Well. Here! It! Goes!" From the way they collapse over each other, it seems they orgasmed at about the same time.
 				</p>
 			<</if>>
 			<<set _slave.anus = 1>>
diff --git a/src/uncategorized/neighborDescription.tw b/src/uncategorized/neighborDescription.tw
index 4cbcbd028c93d540903bb6053533e1e4e74f92de..91b4e531e3b9a7fec1aa63f171eafbb8d2d99654 100644
--- a/src/uncategorized/neighborDescription.tw
+++ b/src/uncategorized/neighborDescription.tw
@@ -219,7 +219,7 @@ its neighbors.
 	<<elseif $arcologies[$i].FSIntellectualDependency > 40>>
 		<<set $desc = $desc + "becoming known for its unusually simple-minded chattel.">>
 	<<else>>
-		<<set $desc = $desc + "importanting large quantities of aphrodisiacs and psychosuppressants.">>
+		<<set $desc = $desc + "importing large quantities of aphrodisiacs and psychosuppressants.">>
 	<</if>>
 	<<set _neighborDescription.push($desc)>>
 <</if>>
diff --git a/src/uncategorized/policies.tw b/src/uncategorized/policies.tw
index f4ffc2b6da24ac41261b14053698b6f7dc833905..29ca1ba676ab951487d3b87ffff3aa6eabe0d753 100644
--- a/src/uncategorized/policies.tw
+++ b/src/uncategorized/policies.tw
@@ -30,8 +30,10 @@
 	<<setLocalPronouns $HeadGirl>>
 <</if>>
 
+<div class="center">
 ''__Active policies__''
 <br>//These policies are active within your arcology. Slave Market Regulations (SMRs) will affect slaves that come through the official slave markets in your arcology. The markets themselves will bear the cost of these regulations, but the minimum practicable slave prices may rise as a result.//
+</div>
 
 <<if ($BasicSMR + $HealthInspectionSMR + $EducationSMR + $IntelligenceEugenicsSMR + $HeightEugenicsSMR + $FaceEugenicsSMR + $HonestySMR + $FrigiditySMR + $BasicBeautySMR + $QualityBeautySMR + $BasicWeightSMR + $BasicIntelligenceSMR + $QualityIntelligenceSMR > 0) || ($BasicHeightSMR != 0) || ($AdvancedHeightSMR != 0)>>
 <br>__Slave Market Regulations__
@@ -803,10 +805,14 @@
 
 <</if>> /* CLOSES FINAL CATEGORY DISPLAY */
 
+<br>
+<br>
+<hr>
 
-<br><br>
+<div class="center">
 ''__Available policies__''
 <br>//Passing any law will cost <<print cashFormat(5000)>> and a small amount of reputation. More policies will become available as the arcology develops.//
+</div>
 
 <<if $rep >= 1000>>
 
diff --git a/src/uncategorized/remoteSurgery.tw b/src/uncategorized/remoteSurgery.tw
index 53a8e26e1604cac5c3535bb15e9476596e1b3233..af89b773469ff2c81b87acd7b16a3df1fa0b95be 100644
--- a/src/uncategorized/remoteSurgery.tw
+++ b/src/uncategorized/remoteSurgery.tw
@@ -1613,15 +1613,11 @@
 					<</if>>
 				<</if>>
 				<<if ($seeExtreme == 1)>>
-					<<if (getSlave($AS).scrotum > 0)>>
-						|
-					<</if>>
+					|
 					[[Geld|Surgery Degradation][getSlave($AS).balls = 0,getSlave($AS).ballType = "human",getSlave($AS).scrotum = 0,getSlave($AS).vasectomy = 0,cashX(forceNeg($surgeryCost), "slaveSurgery", getSlave($AS)), surgeryDamage(getSlave($AS),40), $surgeryType = "geld"]]
 				<</if>>
 				<<if getSlave($AS).ballType != "sterile">>
-					<<if (getSlave($AS).scrotum > 0)>>
-						|
-					<</if>>
+					|
 					[[Chemically castrate|Surgery Degradation][getSlave($AS).ballType = "sterile",cashX(forceNeg($surgeryCost), "slaveSurgery", getSlave($AS)), $surgeryType = "chem castrate"]]
 				<</if>>
 			</div>
diff --git a/src/uncategorized/saRules.tw b/src/uncategorized/saRules.tw
index e97817e4c5281e31b066819d4ad4e7e813839fd1..64c32ac4452141fc62d303717ea34ca2e07f5813 100644
--- a/src/uncategorized/saRules.tw
+++ b/src/uncategorized/saRules.tw
@@ -403,6 +403,8 @@
 					<<elseif ($slaves[$i].trust > 10)>>
 						The spare living conditions of $brothelName @@.gold;keep $him aware of $his place.@@
 						<<set $slaves[$i].trust -= 1>>
+					<<else>>
+						$He's used to spare living conditions, so $he's not bothered by $brothelName's.
 					<</if>>
 				<<case "Chattel Religionist">>
 					The open, yet comfortable, conditions of $brothelName's slave quarters are quite refreshing after a day of public sex, even if $he has to share it with all the other whores.
@@ -410,6 +412,67 @@
 					$He likes $his little room in $brothelName, even if <<if canSmell($slaves[$i])>>it smells of sex<<else>>it's filled with the heat of sex<</if>> after fucking in it all day.
 				<</switch>>
 			<</if>>
+			<<if $slaves[$i].rules.living == "luxurious">>
+				They provide @@.green;satisfying rest@@ every time $he drifts off to sleep.
+			<<elseif $slaves[$i].rules.living == "spare">>
+				<<if $slaves[$i].devotion > 20 && $slaves[$i].trust <= 10>>
+					They don't provide much rest, however.
+				<<else>>
+					They provide meager rest, if anything.
+				<</if>>
+			<<else>>
+				They provide @@.green;adequate
+				<<if $slaves[$i].devotion > 20>>
+					rest@@ for a $girl that knows how to manage $his time.
+				<<else>>
+					rest,@@ but not enough for a slave lacking time management.
+				<</if>>
+			<</if>>
+
+			<<if $slaves[$i].rules.rest == "mandatory">>
+				<<if ($slaves[$i].devotion <= 20)>>
+					Getting a day off each week @@.mediumaquamarine;builds feelings of liberty@@ a slave shouldn't have.
+					<<set $slaves[$i].trust += 3>>
+				<<else>>
+					$He appreciates having a weekly day off and takes it as a sign that $he has a @@.mediumaquamarine;caring <<= WrittenMaster()>>.@@
+					<<set $slaves[$i].trust += 1>>
+				<</if>>
+			<<elseif $slaveUsedRest>>
+				<<if $slaves[$i].rules.rest == "permissive">>
+					<<if ($slaves[$i].devotion <= 20)>>
+						$He's permitted to rest whenever $he feels even the slightest bit tired; @@.mediumaquamarine;a privilege not lost on $him.@@
+						<<set $slaves[$i].trust += 2>>
+					<<else>>
+						$He @@.hotpink;likes@@ that you @@.mediumaquamarine;care enough@@ to let him rest when he gets tired.
+						<<set $slaves[$i].devotion += 1>>
+						<<set $slaves[$i].trust += 1>>
+					<</if>>
+				<<elseif $slaves[$i].rules.rest == "restrictive">>
+					<<if ($slaves[$i].devotion <= -20)>>
+						$He's permitted to rest when fatigue sets in, but not enough to shake $his tiredness; $he feels this @@.gold;deprivation@@ is intentional.
+						<<set $slaves[$i].trust -= 1>>
+					<<elseif ($slaves[$i].devotion <= 20)>>
+						$He's permitted to rest when fatigue sets in, and @@.hotpink;understands@@ this is less for $his wellbeing and more to prevent $him from become unproductive.
+						<<set $slaves[$i].devotion += 1>>
+					<<else>>
+						$He's permitted to rest when fatigue sets in and is @@.mediumaquamarine;thankful@@ you would allow $him the privilege so that $he may serve you better.
+						<<set $slaves[$i].trust += 1>>
+					<</if>>
+				<<elseif $slaves[$i].rules.rest == "cruel">>
+					<<if ($slaves[$i].devotion <= -20)>>
+						$He's @@.gold;terrified@@ that the only reason $he is given any time to rest at all is just to prolong your torment of $him.
+						<<set $slaves[$i].trust -= 3>>
+					<<elseif ($slaves[$i].devotion <= 20)>>
+						You work $him to the bone and only allow $him rest when on the verge of collapsing. $He @@.gold;fears@@ this @@.mediumorchid;cruelty@@ is just the beginning.
+						<<set $slaves[$i].trust -= 3>>
+						<<set $slaves[$i].devotion -= 3>>
+					<<else>>
+						Only being allowed rest when on the verge of collapsing @@.mediumorchid;shakes $his faith@@ in you a little.
+						<<set $slaves[$i].devotion -= 2>>
+					<</if>>
+				<</if>>
+				<<unset $slaveUsedRest>>
+			<</if>>
 
 			<<if ($universalRulesConsent == 0)>>
 				<<if ($slaves[$i].devotion <= 20)>>
@@ -918,6 +981,57 @@
 			<<else>>
 				$He likes $his personal space in $clubName, even if <<if canSmell($slaves[$i])>>it smells of<<else>>it's filled with the heat from<</if>> sex and citizens.
 			<</if>>
+			It provides @@.green;adequate
+			<<if $slaves[$i].devotion > 20>>
+				rest@@ for a slut that knows how to manage $his time.
+			<<else>>
+				rest,@@ but not enough for a slut lacking time management.
+			<</if>>
+
+			<<if $slaves[$i].rules.rest == "mandatory">>
+				<<if ($slaves[$i].devotion <= 20)>>
+					Getting a day off each week @@.mediumaquamarine;builds feelings of liberty@@ a slave shouldn't have.
+					<<set $slaves[$i].trust += 3>>
+				<<else>>
+					$He appreciates having a weekly day off and takes it as a sign that $he has a @@.mediumaquamarine;caring <<= WrittenMaster()>>.@@
+					<<set $slaves[$i].trust += 1>>
+				<</if>>
+			<<elseif $slaveUsedRest>>
+				<<if $slaves[$i].rules.rest == "permissive">>
+					<<if ($slaves[$i].devotion <= 20)>>
+						$He's permitted to rest whenever $he feels even the slightest bit tired; @@.mediumaquamarine;a privilege not lost on $him.@@
+						<<set $slaves[$i].trust += 2>>
+					<<else>>
+						$He @@.hotpink;likes@@ that you @@.mediumaquamarine;care enough@@ to let him rest when he gets tired.
+						<<set $slaves[$i].devotion += 1>>
+						<<set $slaves[$i].trust += 1>>
+					<</if>>
+				<<elseif $slaves[$i].rules.rest == "restrictive">>
+					<<if ($slaves[$i].devotion <= -20)>>
+						$He's permitted to rest when fatigue sets in, but not enough to shake $his tiredness; $he feels this @@.gold;deprivation@@ is intentional.
+						<<set $slaves[$i].trust -= 1>>
+					<<elseif ($slaves[$i].devotion <= 20)>>
+						$He's permitted to rest when fatigue sets in, and @@.hotpink;understands@@ this is less for $his wellbeing and more to prevent $him from become unproductive.
+						<<set $slaves[$i].devotion += 1>>
+					<<else>>
+						$He's permitted to rest when fatigue sets in and is @@.mediumaquamarine;thankful@@ you would allow $him the privilege so that $he may serve you better.
+						<<set $slaves[$i].trust += 1>>
+					<</if>>
+				<<elseif $slaves[$i].rules.rest == "cruel">>
+					<<if ($slaves[$i].devotion <= -20)>>
+						$He's @@.gold;terrified@@ that the only reason $he is given any time to rest at all is just to prolong your torment of $him.
+						<<set $slaves[$i].trust -= 3>>
+					<<elseif ($slaves[$i].devotion <= 20)>>
+						You work $him to the bone and only allow $him rest when on the verge of collapsing. $He @@.gold;fears@@ this @@.mediumorchid;cruelty@@ is just the beginning.
+						<<set $slaves[$i].trust -= 3>>
+						<<set $slaves[$i].devotion -= 3>>
+					<<else>>
+						Only being allowed rest when on the verge of collapsing @@.mediumorchid;shakes $his faith@@ in you a little.
+						<<set $slaves[$i].devotion -= 2>>
+					<</if>>
+				<</if>>
+				<<unset $slaveUsedRest>>
+			<</if>>
 
 			<<if ($universalRulesConsent == 0)>>
 				<<if ($slaves[$i].devotion <= 20)>>
@@ -5708,6 +5822,26 @@
 				<<elseif ($slaves[$i].trust > 10)>>
 					The spare living conditions @@.gold;keep $him aware of $his place.@@
 					<<set $slaves[$i].trust -= 1>>
+				<<else>>
+					$He's used to having only the bare minimum in terms of living conditions, so $he's not bothered by them.
+				<</if>>
+			<</if>>
+			<<if ["be a servant", "get milked", "please you", "serve the public", "whore", "work as a farmhand", "work a glory hole"].includes($slaves[$i].assignment)>>
+				<<if $slaves[$i].rules.living == "luxurious">>
+					<<if ($slaves[$i].devotion <= 20)>>They provide<<else>>It provides a<</if>> @@.green;satisfying rest@@ every time $he drifts off to sleep.
+				<<elseif $slaves[$i].rules.living == "spare">>
+					<<if $slaves[$i].devotion > 20 && $slaves[$i].trust <= 10>>
+						They don't provide much rest, however.
+					<<else>>
+						They provide meager rest, if anything, however.
+					<</if>>
+				<<else>>
+					<<if ($slaves[$i].devotion <= 20)>>They provide<<else>>It provides<</if>> @@.green;adequate
+					<<if $slaves[$i].devotion > 20>>
+						rest@@ for a $girl that knows how to manage $his time.
+					<<else>>
+						rest,@@ but not enough for a slave lacking time management.
+					<</if>>
 				<</if>>
 			<</if>>
 
@@ -5750,8 +5884,7 @@
 				<</if>>
 			<</if>>
 
-			/* rules rest block only applies to certain jobs for now - may consider dropping the condition during finalization */
-			<<if ["work a glory hole"].includes($slaves[$i].assignment)>>
+			<<if ["be a servant", "get milked", "please you", "serve the public", "whore", "work a glory hole"].includes($slaves[$i].assignment)>>
 				<<if $slaves[$i].rules.rest == "mandatory">>
 					<<if ($slaves[$i].devotion <= 20)>>
 						Getting a day off each week @@.mediumaquamarine;builds feelings of liberty@@ a slave shouldn't have.
diff --git a/src/uncategorized/slaveInteract.tw b/src/uncategorized/slaveInteract.tw
index 50f9d00e247dee47d93ace51e9231fc129b9984a..efe43dd6f76acd07c53af85b88bce63db05311c6 100644
--- a/src/uncategorized/slaveInteract.tw
+++ b/src/uncategorized/slaveInteract.tw
@@ -461,6 +461,17 @@
 				<<if $roomsPopulation <= $rooms-0.5>><<link "Luxurious">><<set $slaves[_i].rules.living = "luxurious">><<replace "#livingRules">>$slaves[_i].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 in the master suite", "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">$slaves[_i].rules.rest</span>.''
+				<<link "None">><<set $slaves[_i].rules.rest = "none">><<replace "#restRules">>$slaves[_i].rules.rest<</replace>><</link>> |
+				<<link "Cruel">><<set $slaves[_i].rules.rest = "cruel">><<replace "#restRules">>$slaves[_i].rules.rest<</replace>><</link>> |
+				<<link "Restrictive">><<set $slaves[_i].rules.rest = "restrictive">><<replace "#restRules">>$slaves[_i].rules.rest<</replace>><</link>> |
+				<<link "Permissive">><<set $slaves[_i].rules.rest = "permissive">><<replace "#restRules">>$slaves[_i].rules.rest<</replace>><</link>> |
+				<<link "Mandatory">><<set $slaves[_i].rules.rest = "mandatory">><<replace "#restRules">>$slaves[_i].rules.rest<</replace>><</link>>
+			<</if>>
+			<</if>>
+
 			<br>Typical punishment: ''<span id="standardPunishment">$slaves[_i].rules.punishment</span>.''
 			<<link "Confinement">><<set $slaves[_i].rules.punishment = "confinement">><<replace "#standardPunishment">>$slaves[_i].rules.punishment<</replace>><</link>> |
 			<<link "Whipping">><<set $slaves[_i].rules.punishment = "whipping">><<replace "#standardPunishment">>$slaves[_i].rules.punishment<</replace>><</link>> |
@@ -472,17 +483,6 @@
 			<<link "Orgasm">><<set $slaves[_i].rules.reward = "orgasm">><<replace "#standardReward">>$slaves[_i].rules.reward<</replace>><</link>> |
 			<<link "Situational">><<set $slaves[_i].rules.reward = "situational">><<replace "#standardReward">>$slaves[_i].rules.reward<</replace>><</link>>
 
-			/*
-			<<if ["be a servant", "get milked", "please you", "serve in the club", "serve in the master suite", "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">$slaves[_i].rules.rest</span>.''
-				<<link "None">><<set $slaves[_i].rules.rest = "none">><<replace "#restRules">>$slaves[_i].rules.rest<</replace>><</link>> |
-				<<link "Cruel">><<set $slaves[_i].rules.rest = "cruel">><<replace "#restRules">>$slaves[_i].rules.rest<</replace>><</link>> |
-				<<link "Restrictive">><<set $slaves[_i].rules.rest = "restrictive">><<replace "#restRules">>$slaves[_i].rules.rest<</replace>><</link>> |
-				<<link "Permissive">><<set $slaves[_i].rules.rest = "permissive">><<replace "#restRules">>$slaves[_i].rules.rest<</replace>><</link>> |
-				<<link "Mandatory">><<set $slaves[_i].rules.rest = "mandatory">><<replace "#restRules">>$slaves[_i].rules.rest<</replace>><</link>>
-			<</if>>
-			*/
-
 			<<if setup.facilityHeads.includes($slaves[_i].assignment)>>
 				<<if $slaves[_i].lactation != 2>>
 					<br>Lactation maintenance for facility heads: ''<span id="lactationRules">$slaves[_i].rules.lactation</span>.''