diff --git a/resources/vector/outfit/torso unnatural latex.svg b/resources/vector/outfit/torso unnatural latex.svg
index 6bc64d6e6fd7c34e216242862ae1b8936efe6d9b..88e2364228803c100b6cafedb255f41cc4e60446 100644
--- a/resources/vector/outfit/torso unnatural latex.svg	
+++ b/resources/vector/outfit/torso unnatural latex.svg	
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
 <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
 	 viewBox="0 0 1000 1000" style="enable-background:new 0 0 1000 1000;" xml:space="preserve">
 <style type="text/css">
diff --git a/resources/vector/outfit/uncomfortable leather.svg b/resources/vector/outfit/uncomfortable leather.svg
index 0de7fb10310d9ac0224624fad960c44c73503eef..1dcca4c3e5fe97413ec51e52d0381160506b8c5e 100644
--- a/resources/vector/outfit/uncomfortable leather.svg	
+++ b/resources/vector/outfit/uncomfortable leather.svg	
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 19.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!-- Generator: Adobe Illustrator 19.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
 <svg version="1.1"
 	 id="svg4356" inkscape:version="0.92.0 r15299" sodipodi:docname="fc vector edit.svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:svg="http://www.w3.org/2000/svg"
 	 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 1000 1000"
diff --git a/resources/vector/test ui.svg b/resources/vector/test ui.svg
index c57ef7a8fc5055b2ea29b4de82897cf194cf60d2..c663c45815e76f91356845f72039534c46218c83 100644
--- a/resources/vector/test ui.svg	
+++ b/resources/vector/test ui.svg	
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
 <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
 	 viewBox="0 0 1000 1000" style="enable-background:new 0 0 1000 1000;" xml:space="preserve">
 <style type="text/css">
diff --git a/slave variables documentation - Pregmod.txt b/slave variables documentation - Pregmod.txt
index eb7e7874a2bd2c5f6f9103bfedb658cb77d5854d..d2278d399ae3f487f17c82b079804a66e331a7a9 100644
--- a/slave variables documentation - Pregmod.txt	
+++ b/slave variables documentation - Pregmod.txt	
@@ -1492,6 +1492,7 @@ type of kemonomimi ears if any
 "kit"
 "tanuki"
 "normal"
+"usagi"
 
 earTColor:
 
@@ -1552,6 +1553,9 @@ the current shape of their modular tail
 "kitsune"
 "tanuki"
 "ushi"
+"usagi"
+"risu"
+"uma"
 
 tailColor:
 
diff --git a/src/001-lib/04-ScopeMacro/ScopeMacro.js b/src/001-lib/04-ScopeMacro/ScopeMacro.js
index 08999d246d4e3dc84310c453e794538c14c7d0ac..e350fbdcde4389f09dda44035ff3eecca43d3978 100644
--- a/src/001-lib/04-ScopeMacro/ScopeMacro.js
+++ b/src/001-lib/04-ScopeMacro/ScopeMacro.js
@@ -25,7 +25,7 @@ Macro.add('scope', {
 				*/
 				while ((match = varRe.exec(this.args.raw)) !== null) {
 					const varName = match[1];
-					const varKey  = varName.slice(1);
+					const varKey = varName.slice(1);
 					if(varName[0] === '$') {
 						return this.error("Global variable '" + varName + "'cannot be scoped.");
 					}
diff --git a/src/002-config/sugarCubeConfig.js b/src/002-config/sugarCubeConfig.js
index 5a8dca9167779c0561d77cae60ece31abac3fef2..771f8b360634b68ebd6908feba5a1f5bfdc23bf0 100644
--- a/src/002-config/sugarCubeConfig.js
+++ b/src/002-config/sugarCubeConfig.js
@@ -27,5 +27,5 @@ Config.history.maxStates = 1;
 Note: This is an 'engine level' debug mode, completely separate from the game's debug mode. */
 Config.debug = false;
 
-/* Set maximum loop iterations.  Among other things, this controls the maximum number of slaves the player can own. */
+/* Set maximum loop iterations. Among other things, this controls the maximum number of slaves the player can own. */
 Config.macros.maxLoopIterations = 5000;
diff --git a/src/cheats/mod_editSlaveCheatNew.tw b/src/cheats/mod_editSlaveCheatNew.tw
index c0b5488f57662c5b0001e5a86f29238b25281733..b4477b15319efc168ab8a48ba3aac1978ece791f 100644
--- a/src/cheats/mod_editSlaveCheatNew.tw
+++ b/src/cheats/mod_editSlaveCheatNew.tw
@@ -1569,6 +1569,7 @@
 	<<radiobutton "$tempSlave.earT" "inu">> Dog
 	<<radiobutton "$tempSlave.earT" "kit">> Fox
 	<<radiobutton "$tempSlave.earT" "tanuki">> Tanuki
+	<<radiobutton "$tempSlave.earT" "usagi">> Rabbit
 	<br><br>
 
 	''Sense of Smell:''
@@ -2489,9 +2490,12 @@
 		<<case "neko">>@@.yellow;Cat@@
 		<<case "inu">>@@.yellow;Dog@@
 		<<case "kit">>@@.yellow;Fox@@
-		<<case "kitsune">>@@.yellow;3 tailed fox@@
+		<<case "kitsune">>@@.yellow;3 Tailed fox@@
 		<<case "tanuki">>@@.yellow;Tanuki@@
 		<<case "ushi">>@@.yellow;Bovine@@
+		<<case "usagi">>@@.yellow;Rabbit@@
+		<<case "risu">>@@.yellow;Squirrel@@
+		<<case "uma">>@@.yellow;Horse@@
 	<</switch>>
 	@@.yellow;$tempSlave.tailShape@@ ''
 	<br>
@@ -2503,6 +2507,9 @@
 	<<radiobutton "$tempSlave.tailShape" "kitsune">> 3 Fox Tails
 	<<radiobutton "$tempSlave.tailShape" "tanuki">> Tanuki
 	<<radiobutton "$tempSlave.tailShape" "ushi">> Bovine
+	<<radiobutton "$tempSlave.tailShape" "usagi">> Rabbit
+	<<radiobutton "$tempSlave.tailShape" "risu">> Squirrel
+	<<radiobutton "$tempSlave.tailShape" "uma">> Horse
 	<br>
 	''Tail Color: ''@@.yellow;$tempSlave.tailColor@@<br>
 	<<textbox "$tempSlave.tailColor" $tempSlave.tailColor>>
diff --git a/src/data/backwardsCompatibility/backwardsCompatibility.js b/src/data/backwardsCompatibility/backwardsCompatibility.js
index 95e32dbe47947c04292997ff30f0eefb917077c7..930e64d4bce2e80a5c1e00c310d766475e390af3 100644
--- a/src/data/backwardsCompatibility/backwardsCompatibility.js
+++ b/src/data/backwardsCompatibility/backwardsCompatibility.js
@@ -309,14 +309,14 @@ App.Update.globalVariables = function(node) {
 	}
 
 	// Farmyard Subsection
-	const animalsBought = ["canines", "hooved", "felines", "labradorRetrievers", "germanShepherds", "goldenRetrievers", "frenchBulldogs", "bulldogs", "beagles", "poodles", "rottweilers", "yorkshireTerriers", "siberianHuskies", "horses", "bulls", "pigs", "siameses", "persians", "maineCoons", "ragdolls", "bengals", "abbysinians", "birmans", "orientalShorthairs", "sphynxes", "russianBlues", "wolves", "foxes", "jackals", "dingos", "zebras", "cougars", "jaguars", "pumas", "lynx", "leopards", "lions", "tigers"];
+	const animalsBought = ["abbysinians", "beagles", "bengals", "birmans", "bulldogs", "bulls", "canines", "cougars", "dingos", "felines", "foxes", "frenchBulldogs", "germanShepherds", "goldenRetrievers", "hooved", "horses", "jackals", "jaguars", "labradorRetrievers", "leopards", "lions", "lynx", "maineCoons", "orientalShorthairs", "persians", "pigs", "poodles", "pumas", "ragdolls", "rottweilers", "russianBlues", "siameses", "siberianHuskies", "sphynxes", "tigers", "wolves", "yorkshireTerriers", "zebras"];
 	animalsBought.forEach(function(species) { V.animalsBought[species] = V.animalsBought[species] || 0; });
 	if (typeof V.farmyardUpgrade !== "object") {
 		V.farmyardUpgrade = {
 			pump: 0, fertilizer: 0, hydroponics: 0, machinery: 0, seeds: 0, lab: 0
 		};
 	}
-	
+
 	// Incubator
 	if (V.incubatorImprintSetting === 0) { V.incubatorImprintSetting = "trust"; }
 
diff --git a/src/data/backwardsCompatibility/datatypeCleanup.js b/src/data/backwardsCompatibility/datatypeCleanup.js
index c665263cb69db828823b7a598e6a388aa50ed617..a5cb9d17eeb2fd32a648aa5f5813a2a8fd4cf9be 100644
--- a/src/data/backwardsCompatibility/datatypeCleanup.js
+++ b/src/data/backwardsCompatibility/datatypeCleanup.js
@@ -2390,7 +2390,7 @@ App.Entity.Utils.RARuleDatatypeCleanup = function() {
 	/** @param {App.RA.RuleSetters} set */
 	function settersSchemeCleanup(set) {
 		/**
-		 * Moves properties of the given object, whose names start with prefix to the suboject newProp
+		 * Moves properties of the given object, whose names start with prefix to the subject newProp
 		 * @param {object} obj
 		 * @param {string} prefix
 		 * @param {string} newProp
diff --git a/src/endWeek/minorInjuryResponse.js b/src/endWeek/minorInjuryResponse.js
index 8c210ddf521d8e226a9c47037557a658fb9200ec..deed5a56dcd86a83cfe7120a7aaf3b32f73514ca 100644
--- a/src/endWeek/minorInjuryResponse.js
+++ b/src/endWeek/minorInjuryResponse.js
@@ -33,7 +33,7 @@ window.minorInjuryResponse = function minorInjuryResponse(slave) {
 			break;
 	}
 	r = responseWithTracking(slave, trackedCategory);
-	
+
 	function responseWithTracking(s, category) {
 		let o = "";
 		if (arcology.FSDegradationist > 20) {
@@ -69,6 +69,6 @@ window.minorInjuryResponse = function minorInjuryResponse(slave) {
 		}
 		return o;
 	}
-	
+
 	return r;
 };
diff --git a/src/endWeek/saWorkAGloryHole.js b/src/endWeek/saWorkAGloryHole.js
index e6cb7614f78a82ffae0150d9812e99799d16a5bc..975690d2d6577cd2d780654047de135e25178191 100644
--- a/src/endWeek/saWorkAGloryHole.js
+++ b/src/endWeek/saWorkAGloryHole.js
@@ -516,7 +516,7 @@ window.saWorkAGloryHole = (function saWorkAGloryHole() {
 		} else {
 			cash = Math.trunc(beauty * FResult / 5);
 		}
-		
+
 		if (slave.assignment === window.Job.GLORYHOLE) {
 			cashX(cash, "slaveAssignmentGloryhole", slave);
 		} else if (slave.assignment === window.Job.ARCADE) {
@@ -524,7 +524,7 @@ window.saWorkAGloryHole = (function saWorkAGloryHole() {
 		} else {
 			cashX(cash, "income for working a gloryhole in an unregistered building", slave);
 		}
-		
+
 		T.profits += cash;
 		T.incomeStats.income += cash;
 	}
diff --git a/src/events/intro/introSummary.tw b/src/events/intro/introSummary.tw
index 4cbe34024472f3b33420a30a894fa7dbcc7e9ae1..f4663b62525eb58ea43159b44ba9be197235dae6 100644
--- a/src/events/intro/introSummary.tw
+++ b/src/events/intro/introSummary.tw
@@ -108,7 +108,7 @@ You may review your settings before clicking "Continue" to begin.<br>
 	<div class="content">
 
 	<<options $seeImages>>
-		Displing images is currently:
+		Displaying images is currently:
 		<<option 1 "Enable">>
 			''Enabled''.
 		<<option 0 "Disable">>
diff --git a/src/facilities/nursery/nurseryWidgets.js b/src/facilities/nursery/nurseryWidgets.js
index d12ba99299631520f451f05c15b1508e5eb6949d..764f268c1f28f4cbcb89ad0d97ec9624d93e4b71 100644
--- a/src/facilities/nursery/nurseryWidgets.js
+++ b/src/facilities/nursery/nurseryWidgets.js
@@ -8704,7 +8704,7 @@ App.Facilities.Nursery.LongChildDescription = function(child) {
 
 		switch (child.earT) {
 			case "neko":
-				r += `${He} has cute, ${child.earTColor} cat ears on ${his} head, they `;
+				r += `${He} has cute, ${child.earTColor} cat ears on ${his} head; they `;
 				if (child.earImplant) {
 					r += `perk up at `;
 					if (child.devotion > 20) {
@@ -8716,7 +8716,7 @@ App.Facilities.Nursery.LongChildDescription = function(child) {
 				}
 				break;
 			case "inu":
-				r += `${He} has cute, ${child.earTColor} dog ears on ${his} head, they `;
+				r += `${He} has cute, ${child.earTColor} dog ears on ${his} head; they `;
 				if (child.earImplant) {
 					r += `perk up at `;
 					if (child.devotion > 20) {
@@ -8728,7 +8728,7 @@ App.Facilities.Nursery.LongChildDescription = function(child) {
 				}
 				break;
 			case "kit":
-				r += `${He} has elegant, ${child.earTColor} fox ears on ${his} head, they `;
+				r += `${He} has elegant, ${child.earTColor} fox ears on ${his} head; they `;
 				if (child.earImplant) {
 					r += `perk up at `;
 					if (child.devotion > 20) {
@@ -8751,6 +8751,18 @@ App.Facilities.Nursery.LongChildDescription = function(child) {
 					r += `${jsEither(`tend to droop when ${he} is relaxed or sad`, `twitch at the slightest touch`)}. `;
 				}
 				break;
+			case "usagi":
+				r += `${He} has long, ${child.earTColor}, fluffy rabbit ears on ${his} head; they `;
+				if (child.earImplant) {
+					r += `perk up at `;
+					if (child.devotion > 20) {
+						r += `the sound of your voice and `;
+					} else {
+						r += `sudden noises and `;
+					}
+					r += `${jsEither(`tend to droop when ${he} is relaxed or sad`, `twitch at the slightest touch`)}. `;
+				}
+				break;
 			case "normal":
 				r += `${He} has ${child.earShape !== "none" ? `a second set` : `a pair`} of non-functioning ears grafted to the top of ${his} head. `;
 				break;
@@ -10237,13 +10249,22 @@ App.Facilities.Nursery.LongChildDescription = function(child) {
 				r += `${He} has a soft, fluffy, ${child.tailColor} fox tail. `;
 				break;
 			case "kitsune":
-				r += `${He} has three incredibly soft, fluffy, ${child.tailColor} fox tails, they feel heavenly to the touch. `;
+				r += `${He} has three incredibly soft, fluffy, ${child.tailColor} fox tails; they feel heavenly to the touch. `;
 				break;
 			case "tanuki":
 				r += `${He} has a long, fluffy, ${child.tailColor} tanuki tail with a dark stripe running down the middle. `;
 				break;
 			case "ushi":
-				r += `${He} has a long, ${child.tailColor} cow tail, it has a small tuft of hair at the end and tends to swat at things absentmindedly. `;
+				r += `${He} has a long, ${child.tailColor} cow tail; it has a small tuft of hair at the end and tends to swat at things absentmindedly. `;
+				break;
+			case "usagi":
+				r += `${He} has a short and fluffy ${child.tailColor} rabbit tail. `;
+				break;
+			case "risu":
+				r += `${He} has a big and bushy ${child.tailColor} squirrel tail. `;
+				break;
+			case "uma":
+				r += `${He} has a long horse tail consisting of ${child.tailColor} hair. `;
 				break;
 			default:
 				if (child.tail === "combat") {
@@ -15963,7 +15984,7 @@ App.Facilities.Nursery.ChildState = class ChildState {
 			* "none", "damaged", "normal", "pointy", "elven", "ushi" */
 		this.earShape = "normal";
 		/** Type of kemonomimi ears if any
-			* "neko", "inu", "kit", "tanuki" */
+			* "neko", "inu", "kit", "tanuki", "usagi" */
 		this.earT = "none";
 		/** Kemonomimi ear color
 			* "hairless" */
@@ -15989,7 +16010,7 @@ App.Facilities.Nursery.ChildState = class ChildState {
 			*/
 		this.PTail = 0;
 		/** The current shape of their modular tail
-			* "none", "neko", "inu", "kit", "kitsune", "tanuki", "ushi" */
+			* "none", "neko", "inu", "kit", "kitsune", "tanuki", "ushi", "usagi", "risu", "uma" */
 		this.tailShape = "none";
 		/** Tail color */
 		this.tailColor = "none";
diff --git a/src/init/storyInit.tw b/src/init/storyInit.tw
index cc124ea7944b61eea5f687c630d201eb5737542c..79c2ea431c584ac573db829803d9e8d4ca92dd0e 100644
--- a/src/init/storyInit.tw
+++ b/src/init/storyInit.tw
@@ -12,7 +12,7 @@ This program is distributed in the hope that it will be useful, but WITHOUT ANY
 You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
 */
 
-/* Set up the game as politely as possible.  If values are already set, they are preserved. */
+/* Set up the game as politely as possible. If values are already set, they are preserved. */
 <<run App.Update.setNonexistantProperties(V, App.Data.defaultGameStateVariables)>>
 
 /* These variables must be created AND set to default values, NG+ or not */
diff --git a/src/interaction/prostheticConfig.tw b/src/interaction/prostheticConfig.tw
index 53461f80ff3e8c0e1c265d37a75d98c02bebad1b..f3438a02b694e1cac7eede2b57de9094c369b7f8 100644
--- a/src/interaction/prostheticConfig.tw
+++ b/src/interaction/prostheticConfig.tw
@@ -209,6 +209,9 @@ This room is lined with shelves and cabinets; it could be easily mistaken for a
 			| [[Kitsune's Tail|Prosthetics Configuration][$prostheticsConfig = "attachTail", getSlave($AS).tail = "mod", getSlave($AS).tailShape = "kitsune", getSlave($AS).tailColor = getSlave($AS).hColor]]
 			| [[Tanuki's Tail|Prosthetics Configuration][$prostheticsConfig = "attachTail", getSlave($AS).tail = "mod", getSlave($AS).tailShape = "tanuki", getSlave($AS).tailColor = getSlave($AS).hColor]]
 			| [[Cow's Tail|Prosthetics Configuration][$prostheticsConfig = "attachTail", getSlave($AS).tail = "mod", getSlave($AS).tailShape = "ushi", getSlave($AS).tailColor = getSlave($AS).hColor]]
+			| [[Rabbit's Tail|Prosthetics Configuration][$prostheticsConfig = "attachTail", getSlave($AS).tail = "mod", getSlave($AS).tailShape = "usagi", getSlave($AS).tailColor = getSlave($AS).hColor]]
+			| [[Squirrel's Tail|Prosthetics Configuration][$prostheticsConfig = "attachTail", getSlave($AS).tail = "mod", getSlave($AS).tailShape = "risu", getSlave($AS).tailColor = getSlave($AS).hColor]]
+			| [[Horse's Tail|Prosthetics Configuration][$prostheticsConfig = "attachTail", getSlave($AS).tail = "mod", getSlave($AS).tailShape = "uma", getSlave($AS).tailColor = getSlave($AS).hColor]]
 			</div>
 		<</if>>
 		<div>
@@ -242,6 +245,12 @@ This room is lined with shelves and cabinets; it could be easily mistaken for a
 		a long, fluffy tanuki tail.
 	<<elseif getSlave($AS).tailShape == "ushi">>
 		a long cow tail.
+	<<elseif getSlave($AS).tailShape == "usagi">>
+		a short rabbit tail.
+	<<elseif getSlave($AS).tailShape == "risu">>
+		a large squirrel tail.
+	<<elseif getSlave($AS).tailShape == "uma">>
+		a long horse tail.
 	<</if>>
 	</div>
 
@@ -254,6 +263,9 @@ This room is lined with shelves and cabinets; it could be easily mistaken for a
 	| [[Kitsune|Prosthetics Configuration][getSlave($AS).tailShape = "kitsune", cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
 	| [[Tanuki|Prosthetics Configuration][getSlave($AS).tailShape = "tanuki", cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
 	| [[Bovine|Prosthetics Configuration][getSlave($AS).tailShape = "ushi", cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
+	| [[Rabbit|Prosthetics Configuration][getSlave($AS).tailShape = "usagi", cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
+	| [[Squirrel|Prosthetics Configuration][getSlave($AS).tailShape = "risu", cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
+	| [[Horse|Prosthetics Configuration][getSlave($AS).tailShape = "uma", cashX(forceNeg($modCost), "slaveMod", getSlave($AS))]]
 	</div>
 	</div>
 <</if>>
@@ -475,6 +487,9 @@ This room is lined with shelves and cabinets; it could be easily mistaken for a
 	<<elseif getSlave($AS).tailShape == "kitsune">>slowly sways $his tails luxuriating in the incredibly soft, fluffy fur brushing against $his skin.
 	<<elseif getSlave($AS).tailShape == "tanuki">>admires $his long, thick fluffy tail.
 	<<elseif getSlave($AS).tailShape == "ushi">>swats $himself playfully.
+	<<elseif getSlave($AS).tailShape == "usagi">>wiggles $his little tail a bit.
+	<<elseif getSlave($AS).tailShape == "risu">>admires $his the size of $his fluffy tail.
+	<<elseif getSlave($AS).tailShape == "uma">>sways $his tail back and forth.
 	<<elseif getSlave($AS).tail == "combat">>experimentally whips the long tail side to side then takes aim at a prepared fruit, lashes out with blinding speed and smiles as it explodes into chunks.
 	<<elseif getSlave($AS).tail == "sex">>accidentally engages the vibrating and lube functions, startling $him and making quite a mess.
 	<<else>>admires $his new tail.
diff --git a/src/interaction/slaveInteract.js b/src/interaction/slaveInteract.js
index 63d2d06644e53c53af0738a82bc187efb05275cd..4d1085722bffb5a89155710e88697cb19332a98b 100644
--- a/src/interaction/slaveInteract.js
+++ b/src/interaction/slaveInteract.js
@@ -255,7 +255,7 @@ App.UI.SlaveInteract.drugs = function(slave) {
 				drugOptions.push({text: `Nipple enhancers`, updateSlave: {drugs: `nipple enhancers`}});
 			} else if(slave.nipples === "huge") {
 				drugOptions.push({text: `Nipple enhancers`, disabled: `Nipples are already huge`});
-			} else  {
+			} else {
 				drugOptions.push({text: `Nipple enhancers`, disabled: `Has no effect on ${slave.nipples} nipples`});
 			}
 		}
@@ -987,11 +987,11 @@ App.UI.SlaveInteract.fertility = function(slave) {
 			} else if (slave.preg < 4) {
 				fertility.textContent = "may be pregnant";
 			} else {
-				fertility.textContent = `${Math.trunc(slave.preg * 1000) / 1000} weeks pregnant`; // * and /  needed to avoid seeing something like 20.1000000008 in some cases.
+				fertility.textContent = `${Math.trunc(slave.preg * 1000) / 1000} weeks pregnant`; // * and / needed to avoid seeing something like 20.1000000008 in some cases.
 			}
 			fertility.textContent += ". ";
 			fertilityblock.appendChild(fertility);
-			
+
 			if (slave.preg === 0) {
 				link.appendChild(App.UI.DOM.link(
 					`Use contraceptives`,
@@ -2438,7 +2438,7 @@ App.UI.SlaveInteract.generateRows = function(array, slave, category, accessCheck
 				break;
 			}
 		}
-		// Some items will never be in App.data.misc, especially "none" if it falls in between harsh and nice data sets.  Trying to look it up would cause an error, which is what access check works around.
+		// Some items will never be in App.data.misc, especially "none" if it falls in between harsh and nice data sets. Trying to look it up would cause an error, which is what access check works around.
 		let unlocked = false;
 		if (accessCheck === true) {
 			if (category === "chastity") {
@@ -2452,7 +2452,7 @@ App.UI.SlaveInteract.generateRows = function(array, slave, category, accessCheck
 			if (i < array.length && i !== 0 && useSep === true) { // start with separator (after first loop); can't after since the last loop may not have any text.
 				row.appendChild(separator);
 			}
-			useSep = true;  // First item may not appear and if it doesn't we don't want the second to start with a '|'
+			useSep = true; // First item may not appear and if it doesn't we don't want the second to start with a '|'
 			// is it just text?
 			if (array[i].disabled) {
 				link = App.UI.DOM.disabledLink(array[i].text, [array[i].disabled]);
diff --git a/src/js/DefaultRules.js b/src/js/DefaultRules.js
index 406b7a1124938e46901a1383b7fccd4ee055e77b..ad89c391b22402e1e746089ca59c18dbacae011d 100644
--- a/src/js/DefaultRules.js
+++ b/src/js/DefaultRules.js
@@ -1327,7 +1327,7 @@ window.DefaultRules = (function() {
 						flag = false;
 					}
 					break;
-					
+
 				case "nipple enhancers":
 					if (!(["inverted", "partially inverted", "cute", "tiny", "puffy"].includes(slave.nipples))) {
 						flag = false;
diff --git a/src/js/SlaveState.js b/src/js/SlaveState.js
index aafa402ad7c7a3c7ed0e61791fba7a24384b15d1..5fe21b697f60cdc48b957ab2137303e6b09601b8 100644
--- a/src/js/SlaveState.js
+++ b/src/js/SlaveState.js
@@ -679,7 +679,7 @@ App.Entity.SlaveState = class SlaveState {
 		 * "none", "damaged", "normal", "pointy", "elven", "ushi" */
 		this.earShape = "normal";
 		/** type of kemonomimi ears if any
-		 * "neko", "inu", "kit", "tanuki" */
+		 * "neko", "inu", "kit", "tanuki", "usagi" */
 		this.earT = "none";
 		/** kemonomimi ear color
 		 * "hairless" */
@@ -705,7 +705,7 @@ App.Entity.SlaveState = class SlaveState {
 		 */
 		this.PTail = 0;
 		/** the current shape of their modular tail
-		 * "none", "neko", "inu", "kit", "kitsune", "tanuki", "ushi" */
+		 * "none", "neko", "inu", "kit", "kitsune", "tanuki", "ushi", "usagi", "risu", "uma" */
 		this.tailShape = "none";
 		/** tail color */
 		this.tailColor = "none";
diff --git a/src/js/descriptionWidgets.js b/src/js/descriptionWidgets.js
index 14a4c96291604d6e7cf5f0a80a05d6d48f2c03ae..044c181a2f7854dc5303816e0050bcbb9599dc8d 100644
--- a/src/js/descriptionWidgets.js
+++ b/src/js/descriptionWidgets.js
@@ -1291,7 +1291,40 @@ App.Desc.limbs = function(slave) {
 		} else {
 			r += `The most obvious thing about ${slave.slaveName} is that ${he} is a <span class="pink">quadruple amputee:</span> ${he} has neither arms nor legs. `;
 		}
-		return r;
+	} else if ((!hasBothArms(slave)) || (!hasBothLegs(slave))) {
+		r += `The most obvious thing about ${slave.slaveName} is that ${he} is `;
+		if (((!hasAnyArms(slave)) && (!hasBothLegs(slave))) || ((!hasBothArms(slave)) && (!hasAnyLegs(slave)))) {
+			r += `a triple `;
+		} else if (((hasAnyArms(slave)) && (hasBothLegs(slave))) || ((hasBothArms(slave)) && (hasAnyLegs(slave)))) {
+			r += `an `;
+		} else {
+			r += `a double `;
+		}
+		r += `amputee: `;
+		if (!hasAnyArms(slave)) {
+			r += `both of ${his} arms `;
+		} else if (!hasLeftArm(slave)) {
+			r += `${his} left arm `;
+		} else if (!hasRightArm(slave)) {
+			r += `${his} right arm `;
+		}
+		if ((!hasBothArms(slave)) && (!hasBothLegs(slave))) {
+			r += `and `;
+		}
+		if (!hasAnyLegs(slave)) {
+			r += `both of ${his} legs `;
+		} else if (!hasLeftLeg(slave)) {
+			r += `${his} left leg `;
+		} else if (!hasRightLeg(slave)) {
+			r += `${his} right leg `;
+		}
+		if (((hasAnyArms(slave)) && (hasBothLegs(slave))) || ((hasBothArms(slave)) && (hasAnyLegs(slave)))) {
+			r += `has been reduced to a stump.`;
+		} else {
+			r += `have been reduced to stumps.`;
+		}
+	}
+	return r;
 	}*/
 };
 
diff --git a/src/js/economyJS.js b/src/js/economyJS.js
index 9d56c3fb8ba3184973e40930c3d8af126035124b..6083cced95d1196af84cbb3b0ccb6aef8fd30906 100644
--- a/src/js/economyJS.js
+++ b/src/js/economyJS.js
@@ -1981,7 +1981,7 @@ window.slaveJobValues = function(lowerClassSexDemandRef, middleClassSexDemandRef
 			income *= initialHealthPenalty;
 
 			// Automatically changing effectiveWhoreClass
-			// what is the initial effective whore class? Are we providing more sex than overal demand? Is the ratio of supply/demand for this tier higher than the one below it?
+			// what is the initial effective whore class? Are we providing more sex than overall demand? Is the ratio of supply/demand for this tier higher than the one below it?
 			// This also takes into consideration public sluts and ignores the NPC market and arcades
 			const topSDRatio = slaveJobValues.brothel.topClass / (topClassSexDemandRef - V.NPCSexSupply.topClass);
 			const upperSDRatio = slaveJobValues.brothel.upperClass / (upperClassSexDemandRef - V.NPCSexSupply.upperClass);
@@ -1993,7 +1993,7 @@ window.slaveJobValues = function(lowerClassSexDemandRef, middleClassSexDemandRef
 			const lowerSDRatio = lowerSupply / (lowerClassSexDemandRef - V.NPCSexSupply.lowerClass);
 			let demandBoost = 1;
 			let priceBoost = 1;
-			
+
 			if (toTheBrothel === 1 || s.assignment === "work in the brothel") {
 				demandBoost += V.brothelBoost.eligible / 50;
 				priceBoost += V.brothelBoost.eligible / 20;
diff --git a/src/js/generateMarketSlave.js b/src/js/generateMarketSlave.js
index 374188f9a3d77310a984698c39369c864fb5d66f..d3a025ac5ad1461b827333d559bb7f5d6e6e7192 100644
--- a/src/js/generateMarketSlave.js
+++ b/src/js/generateMarketSlave.js
@@ -33,7 +33,7 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 			} else {
 				r += `Promising slaves are trained without special sorting based on age. `;
 			}
-			SGProp.ageOverridesPedoMode  = 1;
+			SGProp.ageOverridesPedoMode = 1;
 			if (V.corp.SpecRaces.length > 0) {
 				SGProp.race = jsEither(V.corp.SpecRaces);
 			}
@@ -1791,7 +1791,7 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 			if (V.TCR.schoolUpgrade === 2 && jsRandom(1, 100) <= 20) {
 				SGProp.minAge = V.fertilityAge;
 				SGProp.maxAge = 18;
-				SGProp.ageOverridesPedoMode  = 1;
+				SGProp.ageOverridesPedoMode = 1;
 				SGProp.disableDisability = 1;
 				slave = GenerateNewSlave("XX", SGProp);
 				slave.origin = "You bought $him from The Cattle Ranch.";
@@ -1832,7 +1832,7 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 			} else if (V.TCR.schoolUpgrade === 1 && jsRandom(1, 100) <= 20) {
 				SGProp.minAge = V.potencyAge+1;
 				SGProp.maxAge = 24;
-				SGProp.ageOverridesPedoMode  = 1;
+				SGProp.ageOverridesPedoMode = 1;
 				SGProp.disableDisability = 1;
 				slave = GenerateNewSlave("XY", SGProp);
 				slave.slaveName = setup.cowSlaveNames.random();
@@ -1878,7 +1878,7 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 			} else {
 				SGProp.minAge = 19;
 				SGProp.maxAge = 24;
-				SGProp.ageOverridesPedoMode  = 1;
+				SGProp.ageOverridesPedoMode = 1;
 				SGProp.disableDisability = 1;
 				slave = GenerateNewSlave("XX", SGProp);
 				slave.slaveName = setup.cowSlaveNames.random();
@@ -1936,7 +1936,7 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 		case "TFS": {
 			SGProp.minAge = 25;
 			SGProp.maxAge = 29;
-			SGProp.ageOverridesPedoMode  = 1;
+			SGProp.ageOverridesPedoMode = 1;
 			SGProp.disableDisability = 1;
 			if (V.TFS.schoolUpgrade === 3 && V.TFS.compromiseWeek+15 <= V.week) {
 				slave = GenerateNewSlave("", SGProp);
@@ -2173,7 +2173,7 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 		case "HA": {
 			SGProp.minAge = 22;
 			SGProp.maxAge = 26;
-			SGProp.ageOverridesPedoMode  = 1;
+			SGProp.ageOverridesPedoMode = 1;
 			SGProp.disableDisability = 1;
 			slave = GenerateNewSlave("XX", SGProp);
 			slave.origin = "You bought $him from the prestigious Hippolyta Academy.";
@@ -2299,7 +2299,7 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 			if (V.pedo_mode === 1) {
 				SGProp.minAge = 6;
 				SGProp.maxAge = 18;
-				SGProp.ageOverridesPedoMode  = 1;
+				SGProp.ageOverridesPedoMode = 1;
 			} else {
 				SGProp.minAge = 16;
 				if (V.retirementAge > 56) {
@@ -2551,7 +2551,7 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 			if (V.pedo_mode === 1) {
 				SGProp.minAge = 12;
 				SGProp.maxAge = 18;
-				SGProp.ageOverridesPedoMode  = 1;
+				SGProp.ageOverridesPedoMode = 1;
 			} else {
 				SGProp.minAge = 18;
 				if (V.retirementAge > 56) {
@@ -2751,7 +2751,7 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 			if (V.pedo_mode === 1) {
 				SGProp.minAge = 16;
 				SGProp.maxAge = 45;
-				SGProp.ageOverridesPedoMode  = 1;
+				SGProp.ageOverridesPedoMode = 1;
 			} else {
 				SGProp.minAge = 25;
 				if (V.retirementAge > 66) {
@@ -2867,7 +2867,7 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 			if (V.pedo_mode === 1) {
 				SGProp.minAge = 6;
 				SGProp.maxAge = 18;
-				SGProp.ageOverridesPedoMode  = 1;
+				SGProp.ageOverridesPedoMode = 1;
 			} else {
 				SGProp.minAge = 16;
 				if (V.retirementAge > 56) {
diff --git a/src/js/generateNewSlaveJS.js b/src/js/generateNewSlaveJS.js
index f7a6028e1732ac6cce2ad9c936e5dacbe4ecd391..8e6eaa906ac97ecb4d11541e2bbac39dd9085e58 100644
--- a/src/js/generateNewSlaveJS.js
+++ b/src/js/generateNewSlaveJS.js
@@ -54,11 +54,11 @@ window.GenerateNewSlave = (function() {
 
 		preGenCombinedStats();
 		if (!sex) {
-		    if (GenerateChromosome() == "XY") {
-		        GenerateXYSlave();
-		    } else {
-		        GenerateXXSlave();
-		    }
+			if (GenerateChromosome() == "XY") {
+				GenerateXYSlave();
+			} else {
+				GenerateXXSlave();
+			}
 		} else if (sex === "XY") {
 			GenerateXYSlave();
 		} else {
diff --git a/src/npc/interaction/passage/fAnimalImpregConsummate.tw b/src/npc/interaction/passage/fAnimalImpregConsummate.tw
index bfe0a4fc12557f5131f61752518a31aa57809d2b..f8d8ada254c2427da6b91ba76ba052f47834aaf7 100644
--- a/src/npc/interaction/passage/fAnimalImpregConsummate.tw
+++ b/src/npc/interaction/passage/fAnimalImpregConsummate.tw
@@ -3,4 +3,4 @@
 /* TODO: all of this */
 
 <<set _animal = $impregnatrix>>
-You have a servant lead the <<if _animal.species != "dog" || _animal.species != "cat">><<print _animal.species>><<else>><<print _animal.breed>><</if>> in on a leash and feed him a special treat, one laced with high amounts of aphrodisiacs and vasodilators. They have an effect very rapidly, and the <<if _animal.species != "dog" && _animal.species != "cat">><<print _animal.species>><<else>><<print _animal.breed>><</if>>'s <<print _animal.dickSize>> cock quickly stands at attention.
\ No newline at end of file
+You have a servant lead the <<if _animal.species != "dog" || _animal.species != "cat">><<print _animal.species>><<else>><<print _animal.breed>><</if>> in on a leash and feed him a special treat, one laced with high amounts of aphrodisiacs and vasodilators. They have an effect very rapidly, and the <<if _animal.species != "dog" && _animal.species != "cat">><<print _animal.species>><<else>><<print _animal.breed>><</if>>'s <<print _animal.dickSize>> cock quickly stands at attention.
diff --git a/src/npc/startingGirls/commitStartingGirl.tw b/src/npc/startingGirls/commitStartingGirl.tw
index dacd8d4ea5de88f17d4fce66eb86869505f02261..a60dbe12c1f983d72dbbba16fc1291b00bfd7311 100644
--- a/src/npc/startingGirls/commitStartingGirl.tw
+++ b/src/npc/startingGirls/commitStartingGirl.tw
@@ -3,7 +3,7 @@
 <<run App.StartingGirls.cleanup($activeSlave)>>
 
 <<if def $slaveIndices[$activeSlave.ID]>>
-	<div>@@red;Starting Girl ID conflict; slave not committed.  Please report this error with a description of your actions.@@</div>
+	<div>@@red;Starting Girl ID conflict; slave not committed. Please report this error with a description of your actions.@@</div>
 <<else>>
 	<<run newSlave($activeSlave)>>
 <</if>>
diff --git a/src/player/js/PlayerState.js b/src/player/js/PlayerState.js
index 11e573a70df25ae3ffd1dcd4c89fc6f9e1e51d9c..c555ba67c2a3f734de1a5c7fd85ea7735c37aaef 100644
--- a/src/player/js/PlayerState.js
+++ b/src/player/js/PlayerState.js
@@ -451,7 +451,7 @@ App.Entity.PlayerState = class PlayerState {
 		 * "none", "damaged", "normal", "pointy", "elven", "ushi" */
 		this.earShape = "normal";
 		/** type of kemonomimi ears if any
-		 * "neko", "inu", "kit", "tanuki" */
+		 * "neko", "inu", "kit", "tanuki", "usagi" */
 		this.earT = "none";
 		/** kemonomimi ear color
 		 * "hairless" */
@@ -477,7 +477,7 @@ App.Entity.PlayerState = class PlayerState {
 		 */
 		this.PTail = 0;
 		/** the current shape of your modular tail
-		 * "none", "neko", "inu", "kit", "kitsune", "tanuki", "ushi" */
+		 * "none", "neko", "inu", "kit", "kitsune", "tanuki", "ushi", "usagi", "risu", "uma" */
 		this.tailShape = "none";
 		/** tail color */
 		this.tailColor = "none";
diff --git a/src/pregmod/analyzePregnancy.tw b/src/pregmod/analyzePregnancy.tw
index 5f01832b3061c2ba4a24e7635db56b5b6c4c858a..cbfb058f6bc77d865483a792e09faa8fec14a901 100644
--- a/src/pregmod/analyzePregnancy.tw
+++ b/src/pregmod/analyzePregnancy.tw
@@ -26,11 +26,11 @@
 					Estimated physical degree of pregnancy adaptation: <<print num(Math.round(getSlave($activeSlave.ID).pregAdaptation))>>
 				</div>
 				<div>
-					Estimated safe 
+					Estimated safe
 					<<if getSlave($activeSlave.ID).ovaries == 1 || getSlave($activeSlave.ID).mpreg == 1>>
 						womb
 					<<else>>
-						abdomenal
+						abdominal
 					<</if>>
 					volume: <<= num(_safecc)>> cc
 				</div>
@@ -43,7 +43,7 @@
 				<<if getSlave($activeSlave.ID).ovaries == 1 || getSlave($activeSlave.ID).mpreg == 1>>
 					womb
 				<<else>>
-					abdomenal
+					abdominal
 				<</if>>
 				volume: <<if _safecc < _cc && $geneticMappingUpgrade > 0>>@@.red;<<= num(_cc)>>@@<<else>><<= num(_cc)>><</if>> cc
 			</div>
diff --git a/src/pregmod/incubator.tw b/src/pregmod/incubator.tw
index 64fdeed1c81802846f2c02b278fd8d263c6e51ce..7e4dd2df2a309b9f1927317418a27186f2906dc8 100644
--- a/src/pregmod/incubator.tw
+++ b/src/pregmod/incubator.tw
@@ -356,13 +356,13 @@ Target age for release: <<textbox "$targetAge" $targetAge "Incubator">> [[Minimu
 <<if $incubatorImprintSetting == "terror">>
 	The imprinting system is currently focused on making them devoted but fearful of you. The imprinting cycle is locked upon incubation start.
 	<<if $bodyswapAnnounced == 1>>
-	    <br>[[Switch the system to focus on preparation for body-swapping|Incubator][$incubatorImprintSetting = "husk"]]
+		<br>[[Switch the system to focus on preparation for body-swapping|Incubator][$incubatorImprintSetting = "husk"]]
 	<</if>>
 	<br>[[Switch the system to focus on attachment|Incubator][$incubatorImprintSetting = "trust"]]
 <<elseif $incubatorImprintSetting == "trust">>
 	The imprinting system is currently focused on making them devoted and trusting of you. The imprinting cycle is locked upon incubation start.
 	<<if $bodyswapAnnounced == 1>>
-	    <br>[[Switch the system to focus on preparation for body-swapping|Incubator][$incubatorImprintSetting = "husk"]]
+		<br>[[Switch the system to focus on preparation for body-swapping|Incubator][$incubatorImprintSetting = "husk"]]
 	<</if>>
 	<br>[[Switch the system to focus on dependence|Incubator][$incubatorImprintSetting = "terror"]]
 <<else>>
diff --git a/src/pregmod/incubatorRetrievalWorkaround.tw b/src/pregmod/incubatorRetrievalWorkaround.tw
index 29d905e441d81d24082abc4935ca6e28249a3d4d..dd6705e8cbb46d761a7648e129fff47f770d9116 100644
--- a/src/pregmod/incubatorRetrievalWorkaround.tw
+++ b/src/pregmod/incubatorRetrievalWorkaround.tw
@@ -12,7 +12,7 @@
 	<<set $saleDescription = 0, $applyLaw = 0>>
 	<<set $incubatorSlaves-->>
 	<<include "Long Slave Description">>
-    <<if $readySlave.tankBaby != 3>>
+	<<if $readySlave.tankBaby != 3>>
 		<<if $incubatorOrgans.length > 0>>
 			<<for _irw = 0; _irw < $incubatorOrgans.length; _irw++>>
 				<<if $incubatorOrgans[_irw].ID == $incubatorOldID>>
diff --git a/src/pregmod/widgets/bodySwapReaction.tw b/src/pregmod/widgets/bodySwapReaction.tw
index 75f051dfc2c9b403b94677987ea3f547741a6aa5..2d9ab7d21cc27ce111e64a4596aefa2f48ea4594 100644
--- a/src/pregmod/widgets/bodySwapReaction.tw
+++ b/src/pregmod/widgets/bodySwapReaction.tw
@@ -1194,7 +1194,7 @@ Now you only have to wait for $him to wake up.
 				<</if>>
 			<</if>>
 			<<set _weightChange = 1>>
-		<<elseif $args[0].bellyImplant < $args[1].bellyImplant>> /*belly implant reduced*/
+		<<elseif ($args[0].bellyImplant < $args[1].bellyImplant)>> /*belly implant reduced*/
 			<br><br>
 			$His hand<<if hasBothArms($args[0])>>s<</if>> drift<<if !hasBothArms($args[0])>>s<</if>> over $his stomach, where $he
 			<<if $args[0].bellyImplant >= 450000>>
@@ -1604,10 +1604,10 @@ Now you only have to wait for $him to wake up.
 			<<else>>
 				While $he's not terribly upset, this still feels like a violation of $him, somehow. Still, there are worse things that could happen than waking up with a bigger rear.
 			<</if>>
-			<<if $args[0].butt >= $args[1].butt+5 && $args[0].butt > 12>>
+			<<if ($args[0].butt >= ($args[1].butt+5)) && ($args[0].butt > 12)>>
 				$He is overwhelmed by how large $his new bottom is. $He can barely stand under its weight.
 			<</if>>
-		<<elseif $args[0].butt < $args[1].butt>> /*(smaller)*/
+		<<elseif ($args[0].butt < $args[1].butt)>> /*(smaller)*/
 			much @@.orange;smaller $his butt is now.@@ As $he <<if canSee($args[0])>>turns around $he sees<<else>>cups a cheek with each hand $he finds<</if>> it has shrunk
 			<<if $args[0].butt <= $args[1].butt-5>> /*(+to max size description or above)*/
 				an incredible amount.
diff --git a/src/uncategorized/householdLiquidator.tw b/src/uncategorized/householdLiquidator.tw
index b6f34c76c8a5568e4e60cb1c471d16d1c46082c3..4fbb82fe55ffeab928139598cf75a2f62165dae6 100644
--- a/src/uncategorized/householdLiquidator.tw
+++ b/src/uncategorized/householdLiquidator.tw
@@ -20,7 +20,7 @@
 /% Create opposite sex chance of relative %/
 <<set _oppositeSex = 0>>
 <<if $activeSlave.genes != GenerateChromosome()>>
-    <<set _oppositeSex = 1>>
+	<<set _oppositeSex = 1>>
 <</if>>
 
 The household liquidator is offering a set of siblings for sale. You are permitted to inspect both slaves.
@@ -57,7 +57,7 @@ The household liquidator is offering a set of siblings for sale. You are permitt
 /% Create opposite sex chance of relative %/
 <<set _oppositeSex = 0>>
 <<if $activeSlave.genes != GenerateChromosome()>>
-    <<set _oppositeSex = 1>>
+	<<set _oppositeSex = 1>>
 <</if>>
 
 <<setLocalPronouns $activeSlave>>
diff --git a/src/uncategorized/pDefenseFears.tw b/src/uncategorized/pDefenseFears.tw
index 4edcfbc6a12c2f6e7aaf5c29d235afcc17494aa6..6f1e70b06eb706e658e2884e435d590cd40f4e3d 100644
--- a/src/uncategorized/pDefenseFears.tw
+++ b/src/uncategorized/pDefenseFears.tw
@@ -37,4 +37,4 @@ A deputation of slaveowning citizens comes to see you. Though they haven't exper
 	<<run repX(-1000, "event")>>
 	<</replace>>
 <</link>>
-</span>
\ No newline at end of file
+</span>
diff --git a/src/uncategorized/policies.tw b/src/uncategorized/policies.tw
index e2ad282e6358f55270537580abbe54e4a28d2496..677cdced99dee85e636853ca48062b3edd5292da 100644
--- a/src/uncategorized/policies.tw
+++ b/src/uncategorized/policies.tw
@@ -164,7 +164,7 @@ More policies will become available as the arcology develops.//
 		<<if !$QualityBeautySMR>>
 			<br>''Basic Beauty Standards:'' no unattractive slaves may be sold in the slave markets.
 			<<if $rep >= 1000>>
-				@@.green;[[Implement|Policies][$BasicBeautySMR  = 1, cashX(-5000, "policies"), repX(-1000, "policies")]]@@
+				@@.green;[[Implement|Policies][$BasicBeautySMR = 1, cashX(-5000, "policies"), repX(-1000, "policies")]]@@
 			<</if>>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;//This will raise the price of slaves.
 		<</if>>
@@ -349,7 +349,7 @@ More policies will become available as the arcology develops.//
 		<</if>>
 	<</if>>
 
- <h1>Future Socities</h1>
+ <h1>Future Societies</h1>
 	<<if $arcologies[0].FSRepopulationFocusPregPolicy>>
 		<br>''Pregnancy Encouragement:'' you are using your personal influence to spur interest in pregnancy.
 		@@.yellow;[[Repeal|Policies][$arcologies[0].FSRepopulationFocusPregPolicy = 0]]@@
@@ -408,11 +408,11 @@ More policies will become available as the arcology develops.//
 
 	<<if $ProRecruitment>>
 		<br>''Encourage Self-Enslavement:'' Soften your image as a slaveowner, encouraging the desperate to consider coming to you for enslavement.
-		@@.yellow;[[Repeal|Policies][$ProRecruitment  = 0]]@@
+		@@.yellow;[[Repeal|Policies][$ProRecruitment = 0]]@@
 	<<else>>
 		<br>''Encourage Self-Enslavement:'' your image as a slaveowner will be softened, encouraging the desperate to consider coming to you for enslavement.
 		<<if $rep >= 1000>>
-			@@.green;[[Implement|Policies][$ProRecruitment  = 1, cashX(-5000, "policies"), repX(-1000, "policies")]]@@
+			@@.green;[[Implement|Policies][$ProRecruitment = 1, cashX(-5000, "policies"), repX(-1000, "policies")]]@@
 		<</if>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;//Will increase the chances of desperate people offering themselves to you for enslavement//
 	<</if>>
diff --git a/src/uncategorized/remoteSurgery.tw b/src/uncategorized/remoteSurgery.tw
index af89b773469ff2c81b87acd7b16a3df1fa0b95be..d1b6e17ea647d530204e39009687e36ac0b621a4 100644
--- a/src/uncategorized/remoteSurgery.tw
+++ b/src/uncategorized/remoteSurgery.tw
@@ -399,6 +399,8 @@
 				a pair of fox ears adorning $his head.
 			<<elseif getSlave($AS).earT == "tanuki">>
 				a pair of tanuki ears adorning $his head.
+			<<elseif getSlave($AS).earT == "usagi">>
+				a pair of rabbit ears adorning $his head.
 			<<else>>
 				You done goofed. <span class="note">Report This</span>
 			<</if>>
@@ -421,6 +423,9 @@
 					<<if getSlave($AS).earT != "tanuki">>
 						| [[Reshape into tanuki Ears|Surgery Degradation][getSlave($AS).earT = "tanuki", cashX(forceNeg($surgeryCost), "slaveSurgery", getSlave($AS)), surgeryDamage(getSlave($AS),10), $surgeryType = "earMajor"]]
 					<</if>>
+					<<if getSlave($AS).earT != "usagi">>
+						| [[Reshape into rabbit Ears|Surgery Degradation][getSlave($AS).earT = "usagi", cashX(forceNeg($surgeryCost), "slaveSurgery", getSlave($AS)), surgeryDamage(getSlave($AS),10), $surgeryType = "earMajor"]]
+					<</if>>
 				<<else>>
 					<<if getSlave($AS).earTColor == "hairless">>
 						They are completely bald.
@@ -456,7 +461,7 @@
 				<<if (getSlave($AS).earImplant != 1) && getSlave($AS).earShape != "none">>
 					[[Correct hearing|Surgery Degradation][getSlave($AS).hears = 0, cashX(forceNeg($surgeryCost), "slaveSurgery", getSlave($AS)), surgeryDamage(getSlave($AS),10), $surgeryType = "earFix"]]
 				<</if>>
-			<<else>>
+			<<elseif getSlave($AS).hears == 0>>
 				<<if ($seeExtreme == 1) && (getSlave($AS).earImplant != 1) && getSlave($AS).indentureRestrictions < 1>>
 					[[Muffle hearing|Surgery Degradation][getSlave($AS).hears = -1, cashX(forceNeg($surgeryCost), "slaveSurgery", getSlave($AS)), surgeryDamage(getSlave($AS),10), $surgeryType = "earMuffle"]]
 				<</if>>
diff --git a/src/uncategorized/slaveInteract.tw b/src/uncategorized/slaveInteract.tw
index ca051274837903bcbab1769f9445d2f48954e719..094beccfa8d606815c04e9e5d3176c88b8b131b9 100644
--- a/src/uncategorized/slaveInteract.tw
+++ b/src/uncategorized/slaveInteract.tw
@@ -151,28 +151,28 @@
 				<p class="scene-intro">
 					Take slave to another room.
 				</p>
-				
+
 				<div>
 					[[Auto salon|Salon][$activeSlave = getSlave($AS), $degradation = 0,$primaryHairColor = "",$secondaryHairColor = "",$primaryEarColor = "",$secondaryEarColor = "",$primaryTailColor = "",$secondaryTailColor = "",$artificialEyeColor = "",$artificialEyeShape = "",$artificialEyeFill = "",$tattooChoice = "",$piercingLevel = ""]]
 					<span class="note">
 						Modify hair (color, length, style), nails, and even skin color.
 					</span>
 				</div>
-				
+
 				<div>
 					[[Body mod studio|Body Modification][$activeSlave = getSlave($AS), $degradation = 0, $tattooChoice = undefined]]
 					<span class="note">
 						Mark your slave with piercings, tattoos, brands or even scars.
 					</span>
 				</div>
-				
+
 				<div>
 					[[Remote surgery|Remote Surgery][$activeSlave = getSlave($AS), $degradation = 0]]
 					<span class="note">
-						Surgically modify your slave with state of the art plastic surgery and more.  Alter $his senses, skeletal structure, organs, and even more.
+						Surgically modify your slave with state of the art plastic surgery and more. Alter $his senses, skeletal structure, organs, and even more.
 					</span>
 				</div>
-				<<if $prostheticsUpgrade > 0>>					
+				<<if $prostheticsUpgrade > 0>>
 					<div>
 						[[Configure cybernetics|Prosthetics Configuration][$activeSlave = getSlave($AS), $prostheticsConfig = "main"]]
 						<span class="note">
diff --git a/src/uncategorized/surgeryDegradation.tw b/src/uncategorized/surgeryDegradation.tw
index f3138c83028a21cf2f6499b0416cf6ac16e2e928..fd04a162c2964fb973a0ad7cf6f9a23f934e1991 100644
--- a/src/uncategorized/surgeryDegradation.tw
+++ b/src/uncategorized/surgeryDegradation.tw
@@ -1819,7 +1819,6 @@ As the remote surgery's long recovery cycle completes,
 		$He exits the surgery on $his own two feet. $He's still sore, but the modern surgery is fast and effective, and $he can use $his restored legs immediately. $He gingerly stands on one foot, then the other; and even takes a few little hops. $He obviously confused, finding it surprising that you would go to the expense and trouble of repairing $him. As with all surgery @@.red;$his health has been slightly affected.@@
 	<</if>>
 
-/*
 <<case "ampA1">>
 	<<if getSlave($AS).fetish == "mindbroken">>
 		You're there to help $him with the door as $he exits the surgery. $He smiles dumbly at your generosity, already seeming to forget $he ever had another arm. Since the surgery was invasive, @@.red;$his health has been greatly affected.@@
@@ -1871,7 +1870,7 @@ As the remote surgery's long recovery cycle completes,
 		Of course, $he could not walk out of the surgery; you carried $him. You had a good idea what $his reaction would be, so you've made sure to bind $his arm<<if (hasBothArms(getSlave($AS)))>>s<</if>> to prevent $him from trying to attack you, and <<if (getSlave($AS).teeth == "removable")>>remove $his teeth<<else>>muzzle $him<</if>> to prevent $him from trying to bite. $He sobs convulsively, and $his <<if canSee(getSlave($AS))>>eyes dart desperately from side to side through $his tears, hopelessly imploring the mirror to show $him something other than this<<else>>hip stumps twitch pathetically with $his desperate efforts to move $his legs, to prove there is something other than this<</if>>. Anything other than this. @@.mediumorchid;The surgical invasion has filled $him with horror and anger.@@ Since the surgery was invasive, @@.red;$his health has been greatly affected.@@ $He is @@.gold;utterly and entirely terrified@@ of your total power over $his body.
 		<<set getSlave($AS).trust -= 30, getSlave($AS).devotion -= 30>>
 	<</if>>
-*/
+
 <<case "amp">>
 	<<set $nextButton = " ">>
 	<<= App.Desc.limbChange().amputate(getSlave($AS), $oldLimbs, "Remote Surgery")>>
diff --git a/src/utility/descriptionWidgetsFlesh.tw b/src/utility/descriptionWidgetsFlesh.tw
index 6ce426619ddb34aa968cc58d2c60b606d212fff8..472d90e9ed707fe1e06c1ad0f6d3fb214ef12308 100644
--- a/src/utility/descriptionWidgetsFlesh.tw
+++ b/src/utility/descriptionWidgetsFlesh.tw
@@ -4211,7 +4211,7 @@ $He's got a
 <</if>>
 
 <<if $activeSlave.earT == "neko">>
-	$He has cute, $activeSlave.earTColor cat ears on $his head, they
+	$He has cute, $activeSlave.earTColor cat ears on $his head; they
 	<<if $activeSlave.earImplant == 1>>
 		perk up at
 		<<if $activeSlave.devotion > 20>>
@@ -4222,7 +4222,7 @@ $He's got a
 	<</if>>
 	<<print either("tend to droop when $he is relaxed or sad", "twitch at the slightest touch")>>.
 <<elseif $activeSlave.earT == "inu">>
-	$He has cute, $activeSlave.earTColor dog ears on $his head, they
+	$He has cute, $activeSlave.earTColor dog ears on $his head; they
 	<<if $activeSlave.earImplant == 1>>
 		perk up at
 		<<if $activeSlave.devotion > 50>>
@@ -4233,7 +4233,7 @@ $He's got a
 	<</if>>
 	<<print either("tend to droop when $he is relaxed or sad", "twitch at the slightest touch")>>.
 <<elseif $activeSlave.earT == "kit">>
-	$He has elegant, $activeSlave.earTColor fox ears on $his head, they
+	$He has elegant, $activeSlave.earTColor fox ears on $his head; they
 	<<if $activeSlave.earImplant == 1>>
 		perk up at
 		<<if $activeSlave.devotion > 50>>
@@ -4254,6 +4254,17 @@ $He's got a
 		<</if>>
 	<</if>>
 	<<print either("tend to droop when $he is relaxed or sad", "twitch at the slightest touch")>>.
+<<elseif $activeSlave.earT == "usagi">>
+	$He has long, $activeSlave.earTColor, fluffy rabbit ears on $his head; they
+	<<if $activeSlave.earImplant == 1>>
+		perk up at
+		<<if $activeSlave.devotion > 50>>
+			the sound of your voice and
+		<<else>>
+			sudden noises and
+		<</if>>
+	<</if>>
+	<<print either("tend to droop when $he is relaxed or sad", "twitch at the slightest touch")>>.
 <<elseif $activeSlave.earT == "normal">>
 	$He has <<if $activeSlave.earShape != "none">>a second set<<else>>a pair<</if>> of non-functioning ears grafted to the top of $his head.
 <</if>>
@@ -17104,11 +17115,17 @@ $His womb contains <<= num(_slaveWD.litters.length)>> separate pregnancies;
 <<elseif $activeSlave.tailShape == "kit">>
 	$He has a soft, fluffy, $activeSlave.tailColor fox tail.
 <<elseif $activeSlave.tailShape == "kitsune">>
-	$He has three incredibly soft, fluffy, $activeSlave.tailColor fox tails, they feel heavenly to the touch.
+	$He has three incredibly soft, fluffy, $activeSlave.tailColor fox tails; they feel heavenly to the touch.
 <<elseif $activeSlave.tailShape == "tanuki">>
 	$He has a long, fluffy, $activeSlave.tailColor tanuki tail with a dark stripe running down the middle.
 <<elseif $activeSlave.tailShape == "ushi">>
-	$He has a long, $activeSlave.tailColor cow tail, it has a small tuft of hair at the end and tends to swat at things absentmindedly.
+	$He has a long, $activeSlave.tailColor cow tail; it has a small tuft of hair at the end and tends to swat at things absentmindedly.
+<<elseif $activeSlave.tailShape == "usagi">>
+	$He has a short and fluffy $activeSlave.tailColor rabbit tail.
+<<elseif $activeSlave.tailShape == "risu">>
+	$He has a big and bushy $activeSlave.tailColor squirrel tail.
+<<elseif $activeSlave.tailShape == "uma">>
+	$He has a long horse tail consisting of consisting of $activeSlave.tailColor hair.
 <<elseif $activeSlave.tail == "combat">>
 	$He has a very long $activeSlave.tailColor metallic tail that can lash out, constrict, and deploy razor sharp spikes on command.
 <<elseif $activeSlave.tail == "sex">>