diff --git a/artTools/vector_clothing_replicator.py b/artTools/vector_clothing_replicator.py
index 4915ae7a32218ae831513fab01021a169ecc94be..f4bd3ba53ef96fc29766ba25181e81f8e4590c91 100644
--- a/artTools/vector_clothing_replicator.py
+++ b/artTools/vector_clothing_replicator.py
@@ -31,7 +31,7 @@ import lxml.etree as etree
 import sys
 
 REFERENCE_PATH_SAMPLES = 200
-EMBED_REPLICATIONS = True # wether to embed all replications into the input file or output separate files
+EMBED_REPLICATIONS = True # whether to embed all replications into the input file or output separate files
 
 input_file = sys.argv[1]
 clothing = sys.argv[2]
@@ -67,11 +67,19 @@ def get_points(xpath_shape):
   points = []
   path_length = None
   for path_data in paths_data:
+<<<<<<< HEAD
 	p = parse_path(path_data)
 	points += [
 	  p.point(1.0/float(REFERENCE_PATH_SAMPLES)*i)
 	  for i in range(REFERENCE_PATH_SAMPLES)
 	]
+=======
+    p = parse_path(path_data)
+    points += [
+      p.point(1.0/float(REFERENCE_PATH_SAMPLES)*i)
+      for i in range(REFERENCE_PATH_SAMPLES)
+    ]
+>>>>>>> 14b240a283262b8791485ed8f234dfbe31a62dc7
   if (not points):
 	raise RuntimeError(
 	  'No paths for reference points found by selector "%s".'%(xpath_shape)
diff --git a/artTools/vector_layer_split.py b/artTools/vector_layer_split.py
index abff29fc4a76be031dd870bdb69917b4ff70f629..e6022ad7d34f9d4174795995269ed183c54c30d6 100644
--- a/artTools/vector_layer_split.py
+++ b/artTools/vector_layer_split.py
@@ -69,9 +69,15 @@ layers = tree.xpath('//svg:g',namespaces=ns)
 for layer in layers:
   i = layer.get('id')
   if ( # disregard non-content groups
+<<<<<<< HEAD
 	i.endswith("_") or # manually suppressed with underscore
 	i.startswith("XMLID") or # Illustrator generated group
 	i.startswith("g") # Inkscape generated group
+=======
+    i.endswith("_") or # manually suppressed with underscore
+    i.startswith("XMLID") or # Illustrator generated group
+    i.startswith("g") # Inkscape generated group
+>>>>>>> 14b240a283262b8791485ed8f234dfbe31a62dc7
   ):
 	continue
   # create new canvas
@@ -86,6 +92,7 @@ for layer in layers:
   # TODO: extract only referenced defs (filters, gradients, ...)
   # TODO: detect necessity by traversing the elements. do not stupidly search in the string representation
   if ("filter:" in svg.decode('utf-8')):
+<<<<<<< HEAD
 	# it seems there is a filter referenced in the generated SVG, re-insert defs from main document
 	canvas.insert(0,defs)
 	# re-generate output
@@ -107,6 +114,29 @@ for layer in layers:
 	else:
 	  svg = svg.replace('<g ','<g transform="\'+_art_transform+\'"') # otherwise use default scaling
 	svg = svg.encode('utf-8')
+=======
+    # it seems there is a filter referenced in the generated SVG, re-insert defs from main document
+    canvas.insert(0,defs)
+    # re-generate output
+    svg = etree.tostring(output, pretty_print=False)
+
+  if (output_format == 'tw'):
+    # remove unnecessary attributes
+    # TODO: never generate unnecessary attributes in the first place
+    svg = svg.decode('utf-8')
+    svg = regex_xmlns.sub('',svg)
+    svg = svg.replace(' inkscape:connector-curvature="0"','') # this just saves space
+    svg = svg.replace('\n','').replace('\r','') # print cannot be multi-line
+    svg = regex_space.sub('><',svg) # remove indentation
+    svg = svg.replace('svg:','') # svg namespace was removed
+    if ("Boob" in i): # internal groups are used for scaling
+      svg = svg.replace('<g ','<g transform="\'+_artTransformBoob+\'"') # boob art uses the boob scaling
+    elif ("Belly" in i):
+      svg = svg.replace('<g ','<g transform="\'+_artTransformBelly+\'"') # belly art uses the belly scaling
+    else:
+      svg = svg.replace('<g ','<g transform="\'+_art_transform+\'"') # otherwise use default scaling
+    svg = svg.encode('utf-8')
+>>>>>>> 14b240a283262b8791485ed8f234dfbe31a62dc7
 
   # save SVG string to file
   i = layer.get('id')
diff --git a/artTools/vector_revamp_layer_split.py b/artTools/vector_revamp_layer_split.py
index eee6817c4f896abfe876c250a992e3ea06d7cd31..6e66922a3c0bec2b819033212d5f6ee762db51c3 100644
--- a/artTools/vector_revamp_layer_split.py
+++ b/artTools/vector_revamp_layer_split.py
@@ -74,6 +74,7 @@ regex_transformAttr = re.compile('transform="[^"]*"', )
 # find all groups
 layers = tree.xpath('//svg:g', namespaces=ns)
 for layer in layers:
+<<<<<<< HEAD
 	i = layer.get('id')
 	if (  # disregard non-content groups
 			i.endswith("_") or  # manually suppressed with underscore
@@ -138,3 +139,69 @@ for layer in layers:
 			f.write("<<print '<html>".encode("utf-8"))
 			f.write(svg)
 			f.write("</html>' >>".encode("utf-8"))
+=======
+    i = layer.get('id')
+    if (  # disregard non-content groups
+            i.endswith("_") or  # manually suppressed with underscore
+            i.startswith("XMLID") or  # Illustrator generated group
+            i.startswith("g")  # Inkscape generated group
+    ):
+        continue
+    # create new canvas
+    output = copy.deepcopy(template)
+    # copy all shapes into template
+    canvas = output.getroot()
+    for e in layer:
+        canvas.append(e)
+    # represent template as SVG (binary string)
+    svg = etree.tostring(output, pretty_print=False)
+    # poor man's conditional defs insertion
+    # TODO: extract only referenced defs (filters, gradients, ...)
+    # TODO: detect necessity by traversing the elements. do not stupidly search in the string representation
+    if ("filter:" in svg.decode('utf-8')):
+        # it seems there is a filter referenced in the generated SVG, re-insert defs from main document
+        canvas.insert(0, defs)
+        # re-generate output
+        svg = etree.tostring(output, pretty_print=False)
+    elif ("clip-path=" in svg.decode('utf-8')):
+        # it seems there is a clip path referenced in the generated SVG, re-insert defs from main document
+        canvas.insert(0, defs)
+        # re-generate output
+        svg = etree.tostring(output, pretty_print=False)
+
+    if (output_format == 'tw'):
+        # remove unnecessary attributes
+        # TODO: never generate unnecessary attributes in the first place
+        svg = svg.decode('utf-8')
+        svg = regex_xmlns.sub('', svg)
+        svg = svg.replace(' inkscape:connector-curvature="0"', '')  # this just saves space
+        svg = svg.replace('\n', '').replace('\r', '')  # print cannot be multi-line
+        svg = regex_space.sub('><', svg)  # remove indentation
+        svg = svg.replace('svg:', '')  # svg namespace was removed
+
+        transformGroups = regex_transformVar.findall(svg)
+
+        if (len(transformGroups) > 0):
+            svg = regex_transformAttr.sub('', svg)
+            for transformGroup in transformGroups:
+                transformValue = regex_transformValue.search(transformGroup)
+                if (transformValue is not None):
+                    svg = svg.replace(transformGroup, ' transform="\'+' + transformValue.group() + '+\'" ')  # internal groups are used for scaling
+
+        svg = svg.encode('utf-8')
+
+    # save SVG string to file
+    i = layer.get('id')
+    output_path = os.path.join(output_directory, i + '.' + output_format)
+    with open(output_path, 'wb') as f:
+        if (output_format == 'svg'):
+            # Header for normal SVG (XML)
+            f.write('<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n'.encode("utf-8"))
+            f.write(svg)
+        elif (output_format == 'tw'):
+            # Header for SVG in Twine file (SugarCube print statement)
+            f.write((':: Art_Vector_Revamp_%s [nobr]\n\n' % (i)).encode("utf-8"))
+            f.write("<<print '<html>".encode("utf-8"))
+            f.write(svg)
+            f.write("</html>' >>".encode("utf-8"))
+>>>>>>> 14b240a283262b8791485ed8f234dfbe31a62dc7
diff --git a/devNotes/QuickList.txt b/devNotes/QuickList.txt
index 03f875b67fa9cd26414ab8beb95a35190c05b94c..664a2072e9bdaa68fa9a4611a77a455a7b5b4e2b 100644
--- a/devNotes/QuickList.txt
+++ b/devNotes/QuickList.txt
@@ -1,4 +1,3 @@
-
 QuickList is built from the interaction of six parts.
 
 1] The Quick List option enable/disable control.
diff --git a/devNotes/sugarcube stuff/building sugarcube.txt b/devNotes/sugarcube stuff/building sugarcube.txt
index e3ac1eda31d628457f0c56733dd323713023319c..1d7f4d6f72857813094560e37a2ba196e1ec6674 100644
--- a/devNotes/sugarcube stuff/building sugarcube.txt	
+++ b/devNotes/sugarcube stuff/building sugarcube.txt	
@@ -36,8 +36,12 @@ Run the node package manager (npm) in the repository:
 	npm install
 
 CAUTION: dependencies list (located in the package.json file in the repository root) may change from
+<<<<<<< HEAD
 commit to commit and it differs between branches! Make sure to install correct dependencies after
 switching working branch.
+=======
+commit to commit and it differs between branches! Make sure to install correct dependencies after switching working branch.
+>>>>>>> 14b240a283262b8791485ed8f234dfbe31a62dc7
 
 
 Patching and building SugarCube.
diff --git a/devTools/sugarcube.d.ts b/devTools/sugarcube.d.ts
index efc5b067c248a863ba252c3e199c6d2bb9145ed9..b7a10f44290810d8e3bd2453cdd2d7445d3d27d8 100644
--- a/devTools/sugarcube.d.ts
+++ b/devTools/sugarcube.d.ts
@@ -91,7 +91,7 @@ declare namespace SugarCubeLib {
 
 			/**
 			 * Determines whether saving is allowed within the current context. The callback is invoked each time a save is
-			 * requested. If its return value is falsy, the save is disallowed. If its return value is truthy, the save is
+			 * requested. If its return value is false, the save is disallowed. If its return value is truthy, the save is
 			 * allowed to continue unperturbed.
 			 * @default undefined
 			 * @since 2.0.0
diff --git a/slave variables documentation - Pregmod.txt b/slave variables documentation - Pregmod.txt
index 7ee9252d561e11d2d883a889f5c56c6aa54115c2..cbea27af76bfb220ee6957ad1dcf46cac5d0761a 100644
--- a/slave variables documentation - Pregmod.txt	
+++ b/slave variables documentation - Pregmod.txt	
@@ -653,6 +653,7 @@ slave's assignment
 		"be confined in the cellblock"
 		"be confined in the arcade"
 		"get treatment in the clinic"
+		"live with your agent"
 		"live with your Head Girl"
 
 	Leadership positions:
@@ -662,6 +663,7 @@ slave's assignment
 		"be the Milkmaid"
 		"be the Farmer"
 		"be the DJ"
+		"be your agent"
 		"be your Concubine"
 		"be the Madam"
 		"be the Schoolteacher"
diff --git a/src/SecExp/attackOptions.tw b/src/SecExp/attackOptions.tw
index 0f8c9f5ba370a1475638fddf136f3a2eb70b3dc9..c34165d3ec936267e161418c918334a4ff9b1b4e 100644
--- a/src/SecExp/attackOptions.tw
+++ b/src/SecExp/attackOptions.tw
@@ -418,6 +418,7 @@ Units about to be deployed:
 				<<set $secBots.isDeployed = 1>>
 				<<set $deployableUnits-->>
 				<<set $deployedUnits++>>
+				<<set $deployingBots = 1>>
 			<<else>>
 				<<for _j = 0; _j < $militiaUnits.length; _j++>>
 					<<if $lastSelection[_i] == $militiaUnits[_j].ID>>
diff --git a/src/SecExp/attackReport.tw b/src/SecExp/attackReport.tw
index 5a6ff71c5ece8e77b31ba202c7b0b2000c6bc1b7..72e1d5364301ac4980e89937c2c93be9be12fb6a 100644
--- a/src/SecExp/attackReport.tw
+++ b/src/SecExp/attackReport.tw
@@ -896,9 +896,9 @@
 			<</if>>
 		<</if>>
 		<<if $PC.warfare <= 25 && $PC.warfare > 10>>
-			Your inexperience in military matters has a negative impact on your troops performance and the effectiveness of your battle plan
+			Your inexperience in military matters has a negative impact on your troops performance and the effectiveness of your battle plan.
 		<<elseif $PC.warfare <= 10>>
-			Your ignorance in military matters has a severe negative impact on your troops performance and the effectiveness of your battle plan
+			Your ignorance in military matters has a severe negative impact on your troops performance and the effectiveness of your battle plan.
 		<<elseif $PC.warfare >= 50 && $PC.warfare >= 50>>
 			Your experience in military matters has a positive impact on your troops performance and the effectiveness of your battle plan.
 		<<elseif $PC.warfare >= 75>>
diff --git a/src/art/artJS.js b/src/art/artJS.js
index 47b5dd8daac5187e28ea5a96d73b34bd4ceee4c3..4b872ca3401250a017b23017c42846f8ee75a6d3 100644
--- a/src/art/artJS.js
+++ b/src/art/artJS.js
@@ -191,37 +191,37 @@ window.skinColorCatcher = function (artSlave) {
 		labiaColor: "#d76b93",
 		lipsColor: "#ff69b4"
 	};
-	if (artSlave.skin == "camouflage patterned") {
+	if (artSlave.skin === "camouflage patterned") {
 		colorSlave.skinColor = "#78875a";
 		colorSlave.areolaColor = "#939F7A";
 		colorSlave.labiaColor = "#F977A3";
 		colorSlave.lipsColor = "#708050";
-	} else if (artSlave.skin == "dyed red") {
+	} else if (artSlave.skin === "dyed red") {
 		colorSlave.skinColor = "#bc4949";
 		colorSlave.areolaColor = "#C96D6D";
 		colorSlave.labiaColor = "#F977A3";
 		colorSlave.lipsColor = "#b04040";
-	} else if (artSlave.skin == "dyed green") {
+	} else if (artSlave.skin === "dyed green") {
 		colorSlave.skinColor = "#A6C373";
 		colorSlave.areolaColor = "#B7CF8F";
 		colorSlave.labiaColor = "#F977A3";
 		colorSlave.lipsColor = "#A0C070";
-	} else if (artSlave.skin == "dyed blue") {
+	} else if (artSlave.skin === "dyed blue") {
 		colorSlave.skinColor = "#5b8eb7";
 		colorSlave.areolaColor = "#7BA4C5";
 		colorSlave.labiaColor = "#F977A3";
 		colorSlave.lipsColor = "#5080b0";
-	} else if (artSlave.skin == "dyed pink") {
+	} else if (artSlave.skin === "dyed pink") {
 		colorSlave.skinColor = "#fe62b0";
 		colorSlave.areolaColor = "#fc45a1";
 		colorSlave.labiaColor = "#fba2c0";
 		colorSlave.lipsColor = "#ff4291";
-	} else if (artSlave.skin == "dyed gray") {
+	} else if (artSlave.skin === "dyed gray") {
 		colorSlave.skinColor = "#bdbdbd";
 		colorSlave.areolaColor = "#666666";
 		colorSlave.labiaColor = "#8C8C8C";
 		colorSlave.lipsColor = "#171717";
-	} else if (artSlave.skin == "tiger striped") {
+	} else if (artSlave.skin === "tiger striped") {
 		colorSlave.skinColor = "#e2d75d";
 		colorSlave.areolaColor = "#E7DF7D";
 		colorSlave.labiaColor = "#F977A3";
diff --git a/src/art/artWidgets.tw b/src/art/artWidgets.tw
index 9aba498d189720f56ceb3b398cf13c8cac92917e..17f28ce4872b2eac96afd855575aa0642ac4e0a9 100644
--- a/src/art/artWidgets.tw
+++ b/src/art/artWidgets.tw
@@ -31,25 +31,12 @@ $args[2]: icon UI Display for vector art, 1 for on.
 
 <<elseif $imageChoice == 1>> /* VECTOR ART BY NOX*/
 
-<<if ndef $seeVectorArtHighlights>>
-	<<set $seeVectorArtHighlights = 1>>
-<</if>>
 <<set _artSlave = $args[0] >>
-<<silently>>
 /* prepare HTML color codes for slave display */
 /* note: latex clothing is mostly emulated by rubber color for skin (and shoes) */
 /* TODO: consistently use American "color" instead of "colour" for all identifiers */
-<<include Art_Vector_Set_Colour_Outfit_>>
-<<include Art_Vector_Set_Colour_Skin_>>
-<<include Art_Vector_Set_Colour_Hair_>>
-<<include Art_Vector_Set_Colour_Shoe_>>
-<</silently>>
+<<run ArtVectorColor(_artSlave)>>
 <<include Art_Vector_Generate_Stylesheet_>>
-/*
-each passage adds one layer of vector art
-vector art added later is drawn over previously added art
-(what is listed on the bottom in the code appears on the top of the image)
-*/
 <<= VectorArt(_artSlave)>>
 
 <<elseif $imageChoice == 2>> /* VECTOR ART BY NOX - Pregmod Legacy Version */
diff --git a/src/art/vector/ArtVectorColor.js b/src/art/vector/ArtVectorColor.js
new file mode 100644
index 0000000000000000000000000000000000000000..f7613a449ef38fa1d2cff96cc6c26ed98244da16
--- /dev/null
+++ b/src/art/vector/ArtVectorColor.js
@@ -0,0 +1,387 @@
+window.ArtVectorColor = function(slave) {
+	const T = State.temporary;
+	let outfitBaseColour;
+	
+	/* 
+		WARNING: Some of these temporary variables are used in wardrobeUse.tw or salon.tw 
+	 	Known examples are _outfitBaseColour, _glassesColor, and _shoeColour
+	*/
+	setOutfitColor();	
+	setSkinColor();
+	setHairColor();
+	setShoeColor();
+
+	function setOutfitColor() {
+		/* TODO: rewrite all textual descriptions not to explicitly mention the latex being of black color. */
+		if (slave.clothes === "a Fuckdoll suit" || slave.clothes === "restrictive latex" || slave.clothes === "a latex catsuit" || slave.clothes === "a cybersuit")
+			outfitBaseColour = slave.clothingBaseColor || "#515351"; /* use custom color, or use default latex color */
+		else if (slave.clothes == "a comfortable bodysuit")
+			outfitBaseColour = slave.clothingBaseColor || "#464646"; /* use custom color, or use default bodysuit color */
+
+		/* head addons */
+		if (slave.collar === "porcelain mask")
+			T.glassesColor = slave.glassesColor || "#FFFFFF"; /* use custom color or white */
+		else
+			T.glassesColor = slave.glassesColor || "#010101"; /* use custom color or default */
+
+		T.eyeColor = extractColor(slave.eyeColor, 1);
+		T.outfitBaseColour = outfitBaseColour;
+	}
+
+	function setSkinColor() {
+		let colorSlave = skinColorCatcher(slave);
+
+		/* setting default values */
+		T.areolaStyle = colorSlave.areolaColor;
+		T.bellybuttonStyle = colorSlave.areolaColor;
+		T.labiaStyle = colorSlave.labiaColor;
+		T.skinColour = colorSlave.skinColor;
+		/* todo: introduce fleshStyle */
+		/* these need to be declared so they can be set conditionally */
+		T.headSkinStyle = undefined;
+		T.torsoSkinStyle = undefined;
+		T.boobSkinStyle = undefined;
+		T.penisSkinStyle = undefined;
+		T.scrotumSkinStyle = undefined;
+		T.bellySkinStyle = undefined;
+
+		/* BEGIN SKIN COLOR OVERRIDES FOR LATEX CLOTHING EMULATION */
+		if (slave.clothes === "a Fuckdoll suit") {
+			/* slave is a fuckdoll - display all skin as if it was black rubber */
+			T.skinColour = outfitBaseColour;
+			T.areolaStyle = "fill:rgba(81,83,81,1);";
+			T.labiaStyle = T.areolaStyle;
+			T.bellybuttonStyle = T.areolaStyle;
+		} else if (slave.clothes === "restrictive latex") { /* slave wears restrictive latex - display most skin as if it was rubber */
+			/* nice latex does not cover any privates. */
+			T.boobSkinStyle = "fill:"+T.skinColour+";";
+			T.penisSkinStyle = "fill:"+T.skinColour+";";
+			T.scrotumSkinStyle = "fill:"+T.skinColour+";";
+			T.torsoSkinStyle = "fill:"+T.skinColour+";";
+			/* rest of body is covered in latex */
+			T.skinColour = outfitBaseColour;
+			T.bellybuttonStyle = outfitBaseColour;
+		} else if (slave.clothes === "a latex catsuit") {
+			/* nice latex does not cover head. */
+			T.headSkinStyle = "fill:"+T.skinColour+";";
+			/* rest of body is covered in latex */
+			T.skinColour = outfitBaseColour;
+			/* catsuit covers areolae and crotch, too */
+			T.bellybuttonStyle = outfitBaseColour;
+		} else if (slave.clothes === "a cybersuit") {
+			/* rest of body is covered in latex */
+			T.skinColour = outfitBaseColour;
+			T.bellybuttonStyle = outfitBaseColour;
+		} else if (slave.clothes === "a comfortable bodysuit") {
+			/* nice bodysuit does not cover head. */
+			T.headSkinStyle = "fill:"+T.skinColour+";";
+			/* rest of body is covered in bodysuit */
+			T.skinColour = outfitBaseColour;
+			T.bellySkinStyle = outfitBaseColour;
+			T.bellybuttonStyle = outfitBaseColour;
+		}
+		/* END SKIN COLOR OVERRIDES FOR LATEX CLOTHING EMULATION */
+
+		/* outfit dick coloring to match outfit rgba in svg */
+		switch (slave.clothes) {
+			case "a cheerleader outfit":
+				T.scrotumSkinStyle = "fill:rgba(250,186,0,1);";
+				T.bellySkinStyle = "fill:rgba(95,110,160,1);";
+				break;
+			case "cutoffs and a t-shirt":
+				T.scrotumSkinStyle = "fill:rgba(81,124,211,1);";
+				break;
+			case "a halter top dress":
+				T.scrotumSkinStyle = "fill:rgba(94,51,124,1);";
+				T.bellySkinStyle = "fill:rgba(94,51,124,1);";
+				break;
+			case "a burqa":
+			case "a hijab and abaya":
+			case "a niqab and abaya":
+				T.scrotumSkinStyle = "fill:rgba(51,51,51,1);";
+				T.bellySkinStyle = "fill:rgba(51,51,51,1);";
+				break;
+			case "a hijab and blouse":
+				T.scrotumSkinStyle = "fill:rgba(85,0,34,1);";
+				T.bellySkinStyle = "fill:rgba(85,0,34,1);";
+				break;
+			case "a burkini":
+				T.scrotumSkinStyle = "fill:rgba(0,97,158,1);";
+				T.bellySkinStyle = "fill:rgba(0,97,158,1);";
+				break;
+			case "a klan robe":
+				T.scrotumSkinStyle = "fill:rgba(236,236,236,1);";
+				T.bellySkinStyle = "fill:rgba(236,236,236,1);";
+				break;
+			case "a nice maid outfit":
+			case "a slutty maid outfit":
+				T.scrotumSkinStyle = "fill:rgba(225,225,225,1);";
+				T.bellySkinStyle = "fill:rgba(225,225,225,1);";
+				break;
+			case "a leotard":
+				T.scrotumSkinStyle = "fill:rgba(120,15,55,1);";
+				T.bellySkinStyle = "fill:rgba(120,15,55,1);";
+				break;
+			case "a military uniform":
+				T.scrotumSkinStyle = "fill:rgba(34,42,18,1);";
+				T.bellySkinStyle = "fill:rgba(34,42,18,1);";
+				break;
+			case "a mini dress":
+				T.scrotumSkinStyle = "fill:rgba(26,26,26,1);";
+				T.bellySkinStyle = "fill:rgba(26,26,26,1);";
+				break;
+			case "a nice nurse outfit":
+				T.scrotumSkinStyle = "fill:rgba(0,128,128,1);";
+				T.bellySkinStyle = "fill:rgba(0,128,128,1);";
+				break;
+			case "a slutty nurse outfit":
+				T.scrotumSkinStyle = "fill:rgba(255,255,255,1);";
+				break;
+			case "a scalemail bikini":
+				T.scrotumSkinStyle = "fill:rgba(133,146,158,1);";
+				break;
+			case "striped panties":
+				T.scrotumSkinStyle = "fill:rgba(255,255,255,1);";
+				break;
+			case "a schoolgirl outfit":
+				T.scrotumSkinStyle = "fill:rgba(28,31,36,1);";
+				T.bellySkinStyle = "fill:rgba(28,31,36,1);";
+				break;
+			case "a ball gown":
+				T.scrotumSkinStyle = "fill:rgba(128,0,0,1);";
+				T.bellySkinStyle = "fill:rgba(128,0,0,1);";
+				break;
+			case "battledress":
+				T.scrotumSkinStyle = "fill:rgba(34,42,18,1);";
+				T.bellySkinStyle = "fill:rgba(34,42,18,1);";
+				break;
+			case "a slave gown":
+				T.scrotumSkinStyle = "fill:rgba(200,200,200,1);";
+				T.bellySkinStyle = "fill:rgba(200,200,200,1);";
+				break;
+			case "a slutty outfit":
+				T.scrotumSkinStyle = "fill:rgba(63,126,181,1);";
+				break;
+			case "spats and a tank top":
+				T.scrotumSkinStyle = "fill:rgba(51,51,51,1);";
+				break;
+			case "a succubus outfit":
+				T.scrotumSkinStyle = "fill:rgba(128,0,0,1);";
+				T.bellySkinStyle = "fill:rgba(128,0,0,1);";
+				break;
+			case "nice business attire":
+				T.scrotumSkinStyle = "fill:rgba(51,51,51,1);";
+				T.bellySkinStyle = "fill:rgba(51,51,51,1);";
+				break;
+			case "slutty business attire":
+				T.scrotumSkinStyle = "fill:rgba(51,51,51,1);";
+				break;
+			case "attractive lingerie for a pregnant woman":
+				T.scrotumSkinStyle = "fill:rgba(153,153,153,1);";
+				break;
+			case "a bunny outfit":
+				T.scrotumSkinStyle = "fill:rgba(51,51,51,1);";
+				T.bellySkinStyle = "fill:rgba(51,51,51,1);";
+				break;
+			case "conservative clothing":
+				T.scrotumSkinStyle = "fill:rgba(51,51,51,1);";
+				T.bellySkinStyle = "fill:rgba(51,51,51,1);";
+				break;
+			case "harem gauze":
+				T.scrotumSkinStyle = "fill:rgba(0,168,131,1);";
+				break;
+			case "a huipil":
+				T.scrotumSkinStyle = "fill:rgba(200,200,200,1);";
+				T.bellySkinStyle = "fill:rgba(200,200,200,1);";
+				break;
+			case "a kimono":
+				T.scrotumSkinStyle = "fill:rgba(0,91,150,1);";
+				T.bellySkinStyle = "fill:rgba(0,91,150,1);";
+				break;
+			case "a maternity dress":
+				T.scrotumSkinStyle = "fill:rgba(48,54,72,1);";
+				T.bellySkinStyle = "fill:rgba(48,54,72,1);";
+				break;
+			case "a slutty qipao":
+				T.scrotumSkinStyle = "fill:rgba(204,177,68,1);";
+				T.bellySkinStyle = "fill:rgba(204,177,68,1);";
+				break;
+			case "stretch pants and a crop-top":
+				T.scrotumSkinStyle = "fill:rgba(51,51,51,1);";
+				break;
+			case "a toga":
+				T.scrotumSkinStyle = "fill:rgba(200,200,200,1);";
+				T.bellySkinStyle = "fill:rgba(200,200,200,1);";
+				break;
+			case "a penitent nuns habit":
+				T.scrotumSkinStyle = "fill:rgba(114,93,73,1);";
+				break;
+			case "a fallen nuns habit":
+				T.bellySkinStyle = "fill:rgba(51,51,51,1);";
+				break;
+			case "a chattel habit":
+				T.scrotumSkinStyle = "fill:rgba(200,200,200,1);";
+				break;
+			case "a monokini":
+				T.scrotumSkinStyle = "fill:rgba(33,47,61,1);";
+				break;
+			case "a schutzstaffel uniform":
+			case "a slutty schutzstaffel uniform":
+				T.scrotumSkinStyle = "fill:rgba(51,51,51,1);";
+				T.bellySkinStyle = "fill:rgba(51,51,51,1);";
+				break;
+			case "a red army uniform":
+				T.scrotumSkinStyle = "fill:rgba(114,93,73,1);";
+				T.bellySkinStyle = "fill:rgba(114,93,73,1);";
+				break;
+			case "an apron":
+				T.scrotumSkinStyle = "fill:rgba(255,105,180,1);";
+				T.bellySkinStyle = "fill:rgba(255,105,180,1);";
+				break;
+			case "a dirndl":
+				T.scrotumSkinStyle = "fill:rgba(128,0,51,1);";
+				T.bellySkinStyle = "fill:rgba(128,0,51,1);";
+				break;
+			case "lederhosen":
+				T.scrotumSkinStyle = "fill:rgba(93,83,108,1);";
+				break;
+			case "a long qipao":
+				T.scrotumSkinStyle = "fill:rgba(0,128,0,1);";
+				break;
+			case "a mounty outfit":
+				T.scrotumSkinStyle = "fill:rgba(51,51,51,1);";
+				T.bellySkinStyle = "fill:rgba(128,0,0,1);";
+				break;
+			case "battlearmor":
+				T.scrotumSkinStyle = "fill:rgba(200,200,200,1);";
+				break;
+			case "striped underwear":
+				T.scrotumSkinStyle = "fill:rgba(255,255,255,1);";
+				break;
+			case "panties":
+				T.scrotumSkinStyle = "fill:rgba(255,170,238,1);";
+				break;
+			case "a thong":
+				T.scrotumSkinStyle = "fill:rgba(34,28,36,1);";
+				break;
+			case "a button-up shirt and panties":
+			case "a t-shirt and panties":
+				T.scrotumSkinStyle = "fill:rgba(255,255,255,1);";
+				T.bellySkinStyle = "fill:rgba(255,255,255,1);";
+				break;
+			case "a slutty klan robe":
+				T.scrotumSkinStyle = "fill:rgba(128,0,0,1);";
+				break;
+			case "cutoffs":
+				T.scrotumSkinStyle = "fill:rgba(81,124,211,1);";
+				break;
+			case "sport shorts":
+			case "sport shorts and a sports bra":
+				T.scrotumSkinStyle = "fill:rgba(51,51,51,1);";
+				break;
+			case "a t-shirt and thong":
+				T.scrotumSkinStyle = "fill:rgba(200,55,171,1);";
+				T.bellySkinStyle = "fill:rgba(200,55,171,1);";
+				break;
+			case "jeans":
+				T.scrotumSkinStyle = "fill:rgba(81,124,211,1);";
+				break;
+			case "leather pants":
+			case "leather pants and a tube top":
+				T.scrotumSkinStyle = "fill:rgba(26,26,26,1);";
+				break;
+			case "leather pants and pasties":
+				T.scrotumSkinStyle = "fill:rgba(85,0,0,1);";
+				break;
+			case "a t-shirt and jeans":
+				T.scrotumSkinStyle = "fill:rgba(81,124,211,1);";
+				T.bellySkinStyle = "fill:rgba(255,255,255,1);";
+				break;
+			case "a tank-top and panties":
+				T.scrotumSkinStyle = "fill:rgba(26,26,26,1);";
+				T.bellySkinStyle = "fill:rgba(26,26,26,1);";
+				break;
+			case "a tank-top":
+				T.bellySkinStyle = "fill:rgba(255,255,255,1);";
+				break;
+			case "a tube top and thong":
+				T.scrotumSkinStyle = "fill:rgba(34,28,36,1);";
+				break;
+			case "boyshorts":
+				T.scrotumSkinStyle = "fill:rgba(26,26,26,1);";
+				break;
+			case "an oversized t-shirt and boyshorts":
+				T.bellySkinStyle = "fill:rgba(255,255,255,1);";
+				break;
+			case "a sweater and panties":
+				T.scrotumSkinStyle = "fill:rgba(26,26,26,1);";
+				T.bellySkinStyle = "fill:rgba(212,170,0,1);";
+				break;
+			case "a sweater and cutoffs":
+				T.scrotumSkinStyle = "fill:rgba(77,77,77,1);";
+				T.bellySkinStyle = "fill:rgba(85,0,0,1);";
+				break;
+			case "a police uniform":
+				T.scrotumSkinStyle = "fill:rgba(11,23,40,1);";
+				T.bellySkinStyle = "fill:rgba(11,23,40,1);";
+				break;
+			case "a one-piece swimsuit":
+				T.scrotumSkinStyle = "fill:rgba(22,45,80,1);";
+				T.bellySkinStyle = "fill:rgba(22,45,80,1);";
+				break;
+			case "a skimpy loincloth":
+				T.scrotumSkinStyle = "fill:rgba(145,124,111,1);";
+				break;
+			case "kitty lingerie":
+				T.scrotumSkinStyle = "fill:rgba(255,170,238,1);";
+				break;
+			case "an oversized t-shirt":
+				T.bellySkinStyle = "fill:rgba(255,255,255,1);";
+				break;
+			case "a hanbok":
+				T.bellySkinStyle = "fill:rgba(255,109,182,1);";
+				break;
+			case "a gothic lolita dress":
+				T.bellySkinStyle = "fill:rgba(26,26,26,1);";
+				break;
+			case "a sweater":
+				T.bellySkinStyle = "fill:rgba(85,0,0,1);";
+				break;
+			case "sport shorts and a t-shirt":
+				T.scrotumSkinStyle = "fill:rgba(200,55,171,1);";
+				T.bellySkinStyle = "fill:rgba(200,55,171,1);";
+				break;
+			case "a biyelgee costume":
+				T.scrotumSkinStyle = "fill:rgba(33,68,120,1);";
+		}
+	}
+
+	function setHairColor() {
+		T.hairColour = extractColor(slave.hColor);
+		T.pubicHairColour = extractColor(slave.pubicHColor);
+		T.underarmHairColour = extractColor(slave.underArmHColor);
+		T.eyebrowHairColour = extractColor(slave.eyebrowHColor);
+		T.sclerae = extractColor(slave.sclerae);
+	}
+
+	function setShoeColor() {
+		/* BEWARE: _shoeColour is read by Wardrobe Use */
+
+		/* note: only heels use this shadow */
+		T.shoeShadowColour = "#616a6b";
+
+		if (slave.shoes === "none")
+			T.shoeColour = "#595959";
+		else
+			T.shoeColour = "#80808080";
+
+		/* override color in case of full body latex outfit, or custom color*/
+		if (slave.clothes === "a Fuckdoll suit" || slave.clothes === "restrictive latex") {
+			T.shoeColour = T.skinColour;
+			T.shoeShadowColour = T.shoeColour+";opacity: 0.5"; /* TODO: do not abuse "color" variable for style definitions. do not rely on dark background for shadow effect either. */
+		} else if (slave.shoeColor !== undefined) {
+			T.shoeColour = slave.shoeColor+";opacity: 0.4"; /* shoe color selected by user */
+			T.shoeShadowColour = T.shoeColour+";opacity: 0.5"; /* TODO: do not abuse "color" variable for style definitions. do not rely on dark background for shadow effect either. */
+		}
+	}
+};
diff --git a/src/art/vector/Set_Colour_Hair.tw b/src/art/vector/Set_Colour_Hair.tw
deleted file mode 100644
index 3e7470c2836db883493a87b5cb8d3aa53d03a506..0000000000000000000000000000000000000000
--- a/src/art/vector/Set_Colour_Hair.tw
+++ /dev/null
@@ -1,13 +0,0 @@
-:: Art_Vector_Set_Colour_Hair_ [nobr]
-
-/*
-"Free-Cities Dyes (taken from Cosmetic Rules Assistant Settings)"-
-to-"HTML Color"-Map
-courtesy of Nov-X
-*/
-
-<<set _hairColour = extractColor(_artSlave.hColor) >>
-<<set _pubicHairColour = extractColor(_artSlave.pubicHColor) >>
-<<set _underarmHairColour = extractColor(_artSlave.underArmHColor) >>
-<<set _eyebrowHairColour = extractColor(_artSlave.eyebrowHColor) >>
-<<set _sclerae = extractColor(_artSlave.sclerae) >>
\ No newline at end of file
diff --git a/src/art/vector/Set_Colour_Outfit.js b/src/art/vector/Set_Colour_Outfit.js
deleted file mode 100644
index b48d35a8078bce83a423d3ed7f5671209b02cdd3..0000000000000000000000000000000000000000
--- a/src/art/vector/Set_Colour_Outfit.js
+++ /dev/null
@@ -1,53 +0,0 @@
-window.Art_Vector_Set_Colour_Outfit = function(artSlave) {
-
-var s = {
-	outfitBaseColour : undefined,
-	glassesColor : undefined
-	}
-
-if (artSlave.fuckdoll != 0 || artSlave.clothes == "restrictive latex" || artSlave.clothes == "a latex catsuit" || artSlave.clothes == "a cybersuit") {
-	s.outfitBaseColour = "#515351" ; /* standard "black rubber" latex color */
-	if (artSlave.clothingBaseColor) {
-		s.outfitBaseColour = artSlave.clothingBaseColor ; /* latex color selected by user */
-		/* TODO: rewrite all textual descriptions not to explicitly mention the latex being of black color. */
-	}
-}
-
-if (artSlave.fuckdoll != 0 || artSlave.clothes == "a comfortable bodysuit") {
-	s.outfitBaseColour = "#464646" ; /* bodysuit */
-	if (artSlave.clothingBaseColor) {
-		s.outfitBaseColour = artSlave.clothingBaseColor ; /* bodysuit color selected by user */
-	}
-}
-
-/* head addons */
-switch (artSlave.eyewear) {
-	case "corrective glasses":
-	case "glasses":
-	case "blurring glasses":
-		s.glassesColor = "#010101";
-		break;
-	default:
-		/* use color for "glasses" by default */
-		s.glassesColor = "#010101";
-	}
-
-switch (artSlave.collar) {
-	case "porcelain mask":
-		s.glassesColor = "#FFFFFF";
-		break;
-	default:
-		/* use color for "mask" by default */
-		s.glassesColor = "#010101";
-	}
-
-if (artSlave.glassesColor) {
-	s.glassesColor = artSlave.glassesColor; /* glasses color selected by user */
-}
-
-if (artSlave.eyeColor) {
-	s.eyeColor = extractColor(artSlave.eyeColor, 1);
-}
-
-return s;
-}
diff --git a/src/art/vector/Set_Colour_Outfit.tw b/src/art/vector/Set_Colour_Outfit.tw
deleted file mode 100644
index 08c35b6c1e0c0a5123f1b1a160a4ded6da620c7e..0000000000000000000000000000000000000000
--- a/src/art/vector/Set_Colour_Outfit.tw
+++ /dev/null
@@ -1,10 +0,0 @@
-:: Art_Vector_Set_Colour_Outfit_
-
-/* BEWARE: _outfitBaseColour is used by Art_Vector_Set_Colour_Skin_ */
-/* BEWARE: _outfitBaseColour is read by Wardrobe Use */
-/* BEWARE: _glassesColor is read by Wardrobe Use */
-
-<<set _s = Art_Vector_Set_Colour_Outfit(_artSlave) >>
-<<set _outfitBaseColour = _s.outfitBaseColour>>
-<<set _glassesColor = _s.glassesColor>>
-<<set _eyeColor = _s.eyeColor>>
\ No newline at end of file
diff --git a/src/art/vector/Set_Colour_Shoe.tw b/src/art/vector/Set_Colour_Shoe.tw
deleted file mode 100644
index c33f5997f3ceb5d52b7b12e81488da820f7eea4a..0000000000000000000000000000000000000000
--- a/src/art/vector/Set_Colour_Shoe.tw
+++ /dev/null
@@ -1,33 +0,0 @@
-:: Art_Vector_Set_Colour_Shoe_ [nobr]
-
-/* courtesy of Nov-X */
-
-/* BEWARE: _shoeColour is read by Wardrobe Use */
-
-/* note: only heels use this shadow */
-<<set _shoeShadowColour = "#616a6b">>
-
-<<switch _artSlave.shoes>>
-<<case "extreme heels" "heels">>
-	<<set _shoeColour = "#80808080">>
-<<case "boots">>
-	<<set _shoeColour = "#80808080">>
-<<case "flats">>
-	<<set _shoeColour = "#80808080">>
-<<case "pumps">>
-	<<set _shoeColour = "#80808080">>
-<<default>>
-	/* use color for "heels" by default */
-	<<set _shoeColour = "#595959">>
-<</switch>>
-
-<<if def _artSlave.shoeColor>>
-	<<set _shoeColour = _artSlave.shoeColor+";opacity: 0.4">> /* shoe color selected by user */
-	<<set _shoeShadowColour = _shoeColour+";opacity: 0.5">> /* TODO: do not abuse "color" variable for style definitions. do not rely on dark background for shadow effect either. */
-<</if>>
-
-/* override color in case of full body latex outfit */
-<<if _artSlave.fuckdoll != 0 || _artSlave.clothes == "restrictive latex" >>
-	<<set _shoeColour = _skinColour>>
-	<<set _shoeShadowColour = _shoeColour+";opacity: 0.5">> /* TODO: do not abuse "color" variable for style definitions. do not rely on dark background for shadow effect either. */
-<</if>>
diff --git a/src/art/vector/Set_Colour_Skin.js b/src/art/vector/Set_Colour_Skin.js
deleted file mode 100644
index 790667177f9c73853427d39531648686a2aafd2a..0000000000000000000000000000000000000000
--- a/src/art/vector/Set_Colour_Skin.js
+++ /dev/null
@@ -1,370 +0,0 @@
-window.Art_Vector_Set_Colour_Skin = function(artSlave, outfitBaseColour) {
-
-/* create an aggregator object yielding all computed styles */
-var s = {
-	areolaStyle: "#d76b93", /* this is the default and can be customized later */
-	labiaStyle: "#d76b93", /* this is the default and can be customized later */
-	bellybuttonStyle: "#d76b93",
-	/* todo: introduce fleshStyle */
-	/* these need to be declared so they can be set conditionally */
-	headSkinStyle: undefined,
-	torsoSkinStyle: undefined,
-	boobSkinStyle: undefined,
-	penisSkinStyle: undefined,
-	scrotumSkinStyle: undefined,
-	bellySkinStyle: undefined,
-	skinColour: undefined,
-	eyeColor: undefined,
-}
-
-	var colorSlave = skinColorCatcher(artSlave);
-	s.areolaStyle = colorSlave.areolaColor;
-	s.bellybuttonStyle = colorSlave.areolaColor;
-	s.labiaStyle = colorSlave.labiaColor;
-	s.skinColour = colorSlave.skinColor;
-
-/* BEGIN SKIN COLOR OVERRIDES FOR LATEX CLOTHING EMULATION */
-
-if (artSlave.fuckdoll != 0) {
-	/* slave is a fuckdoll - display all skin as if it was black rubber */
-	s.skinColour = outfitBaseColour;
-	s.areolaStyle = "fill:rgba(81,83,81,1);";
-	s.labiaStyle = s.areolaStyle;
-	s.bellybuttonStyle = s.areolaStyle;
-}
-
-/* slave wears restrictive latex - display most skin as if it was rubber */
-if (artSlave.clothes == "restrictive latex") {
-	/* nice latex does not cover any privates. */
-	s.boobSkinStyle = "fill:"+s.skinColour+";";
-	s.penisSkinStyle = "fill:"+s.skinColour+";";
-	s.scrotumSkinStyle = "fill:"+s.skinColour+";";
-	s.torsoSkinStyle = "fill:"+s.skinColour+";";
-	/* rest of body is covered in latex */
-	s.skinColour = outfitBaseColour;
-	s.bellybuttonStyle = outfitBaseColour;
-}
-
-if (artSlave.clothes == "a latex catsuit") {
-	/* nice latex does not cover head. */
-	s.headSkinStyle = "fill:"+s.skinColour+";";
-	/* rest of body is covered in latex */
-	s.skinColour = outfitBaseColour;
-	/* catsuit covers areolae and crotch, too */
-	s.bellybuttonStyle = outfitBaseColour;
-}
-
-if (artSlave.clothes == "a cybersuit") {
-	/* rest of body is covered in latex */
-	s.skinColour = outfitBaseColour;
-	s.bellybuttonStyle = outfitBaseColour;
-}
-
-/* END SKIN COLOR OVERRIDES FOR LATEX CLOTHING EMULATION */
-
-if (artSlave.clothes == "a comfortable bodysuit") {
-	/* nice bodysuit does not cover head. */
-	s.headSkinStyle = "fill:"+s.skinColour+";";
-	/* rest of body is covered in bodysuit */
-	s.skinColour = outfitBaseColour;
-	s.bellySkinStyle = outfitBaseColour;
-	s.bellybuttonStyle = outfitBaseColour;
-}
-
-/* outfit dick coloring to match outfit rgba in svg */
-switch (artSlave.clothes) {
-case "a cheerleader outfit":
-	s.scrotumSkinStyle = "fill:rgba(250,186,0,1);";
-	s.bellySkinStyle = "fill:rgba(95,110,160,1);";
-	break;
-case "cutoffs and a t-shirt":
-	s.scrotumSkinStyle = "fill:rgba(81,124,211,1);";
-	break;
-case "a halter top dress":
-	s.scrotumSkinStyle = "fill:rgba(94,51,124,1);";
-	s.bellySkinStyle = "fill:rgba(94,51,124,1);";
-	break;
-case "a hijab and abaya":
-	s.scrotumSkinStyle = "fill:rgba(51,51,51,1);";
-	s.bellySkinStyle = "fill:rgba(51,51,51,1);";
-	break;
-case "a niqab and abaya":
-	s.scrotumSkinStyle = "fill:rgba(51,51,51,1);";
-	s.bellySkinStyle = "fill:rgba(51,51,51,1);";
-	break;
-case "a burqa":
-	s.scrotumSkinStyle = "fill:rgba(51,51,51,1);";
-	s.bellySkinStyle = "fill:rgba(51,51,51,1);";
-	break;
-case "a hijab and blouse":
-	s.scrotumSkinStyle = "fill:rgba(85,0,34,1);";
-	s.bellySkinStyle = "fill:rgba(85,0,34,1);";
-	break;
-case "a burkini":
-	s.scrotumSkinStyle = "fill:rgba(0,97,158,1);";
-	s.bellySkinStyle = "fill:rgba(0,97,158,1);";
-	break;
-case "a klan robe":
-	s.scrotumSkinStyle = "fill:rgba(236,236,236,1);";
-	s.bellySkinStyle = "fill:rgba(236,236,236,1);";
-	break;
-case "a nice maid outfit":
-	s.scrotumSkinStyle = "fill:rgba(225,225,225,1);";
-	s.bellySkinStyle = "fill:rgba(225,225,225,1);";
-	break;
-case "a slutty maid outfit":
-	s.scrotumSkinStyle = "fill:rgba(225,225,225,1);";
-	s.bellySkinStyle = "fill:rgba(225,225,225,1);";
-	break;
-case "a leotard":
-	s.scrotumSkinStyle = "fill:rgba(120,15,55,1);";
-	s.bellySkinStyle = "fill:rgba(120,15,55,1);";
-	break;
-case "a military uniform":
-	s.scrotumSkinStyle = "fill:rgba(34,42,18,1);";
-	s.bellySkinStyle = "fill:rgba(34,42,18,1);";
-	break;
-case "a mini dress":
-	s.scrotumSkinStyle = "fill:rgba(26,26,26,1);";
-	s.bellySkinStyle = "fill:rgba(26,26,26,1);";
-	break;
-case "a nice nurse outfit":
-	s.scrotumSkinStyle = "fill:rgba(0,128,128,1);";
-	s.bellySkinStyle = "fill:rgba(0,128,128,1);";
-	break;
-case "a slutty nurse outfit":
-	s.scrotumSkinStyle = "fill:rgba(255,255,255,1);";
-	break;
-case "a scalemail bikini":
-	s.scrotumSkinStyle = "fill:rgba(133,146,158,1);";
-	break;
-case "striped panties":
-	s.scrotumSkinStyle = "fill:rgba(255,255,255,1);";
-	break;
-case "a schoolgirl outfit":
-	s.scrotumSkinStyle = "fill:rgba(28,31,36,1);";
-	s.bellySkinStyle = "fill:rgba(28,31,36,1);";
-	break;
-case "a ball gown":
-	s.scrotumSkinStyle = "fill:rgba(128,0,0,1);";
-	s.bellySkinStyle = "fill:rgba(128,0,0,1);";
-	break;
-case "battledress":
-	s.scrotumSkinStyle = "fill:rgba(34,42,18,1);";
-	s.bellySkinStyle = "fill:rgba(34,42,18,1);";
-	break;
-case "a slave gown":
-	s.scrotumSkinStyle = "fill:rgba(200,200,200,1);";
-	s.bellySkinStyle = "fill:rgba(200,200,200,1);";
-	break;
-case "a slutty outfit":
-	s.scrotumSkinStyle = "fill:rgba(63,126,181,1);";
-	break;
-case "spats and a tank top":
-	s.scrotumSkinStyle = "fill:rgba(51,51,51,1);";
-	break;
-case "a succubus outfit":
-	s.scrotumSkinStyle = "fill:rgba(128,0,0,1);";
-	s.bellySkinStyle = "fill:rgba(128,0,0,1);";
-	break;
-case "nice business attire":
-	s.scrotumSkinStyle = "fill:rgba(51,51,51,1);";
-	s.bellySkinStyle = "fill:rgba(51,51,51,1);";
-	break;
-case "slutty business attire":
-	s.scrotumSkinStyle = "fill:rgba(51,51,51,1);";
-	break;
-case "attractive lingerie for a pregnant woman":
-	s.scrotumSkinStyle = "fill:rgba(153,153,153,1);";
-	break;
-case "a bunny outfit":
-	s.scrotumSkinStyle = "fill:rgba(51,51,51,1);";
-	s.bellySkinStyle = "fill:rgba(51,51,51,1);";
-	break;
-case "conservative clothing":
-	s.scrotumSkinStyle = "fill:rgba(51,51,51,1);";
-	s.bellySkinStyle = "fill:rgba(51,51,51,1);";
-	break;
-case "harem gauze":
-	s.scrotumSkinStyle = "fill:rgba(0,168,131,1);";
-	break;
-case "a huipil":
-	s.scrotumSkinStyle = "fill:rgba(200,200,200,1);";
-	s.bellySkinStyle = "fill:rgba(200,200,200,1);";
-	break;
-case "a kimono":
-	s.scrotumSkinStyle = "fill:rgba(0,91,150,1);";
-	s.bellySkinStyle = "fill:rgba(0,91,150,1);";
-	break;
-case "a maternity dress":
-	s.scrotumSkinStyle = "fill:rgba(48,54,72,1);";
-	s.bellySkinStyle = "fill:rgba(48,54,72,1);";
-	break;
-case "a slutty qipao":
-	s.scrotumSkinStyle = "fill:rgba(204,177,68,1);";
-	s.bellySkinStyle = "fill:rgba(204,177,68,1);";
-	break;
-case "stretch pants and a crop-top":
-	s.scrotumSkinStyle = "fill:rgba(51,51,51,1);";
-	break;
-case "a toga":
-	s.scrotumSkinStyle = "fill:rgba(200,200,200,1);";
-	s.bellySkinStyle = "fill:rgba(200,200,200,1);";
-	break;
-case "a penitent nuns habit":
-	s.scrotumSkinStyle = "fill:rgba(114,93,73,1);";
-	break;
-case "a chattel habit":
-	s.scrotumSkinStyle = "fill:rgba(200,200,200,1);";
-	break;
-case "a monokini":
-	s.scrotumSkinStyle = "fill:rgba(33,47,61,1);";
-	break;
-case "a schutzstaffel uniform":
-	s.scrotumSkinStyle = "fill:rgba(51,51,51,1);";
-	s.bellySkinStyle = "fill:rgba(51,51,51,1);";
-	break;
-case "a slutty schutzstaffel uniform":
-	s.scrotumSkinStyle = "fill:rgba(51,51,51,1);";
-	s.bellySkinStyle = "fill:rgba(51,51,51,1);";
-	break;
-case "a red army uniform":
-	s.scrotumSkinStyle = "fill:rgba(114,93,73,1);";
-	s.bellySkinStyle = "fill:rgba(114,93,73,1);";
-	break;
-case "an apron":
-	s.scrotumSkinStyle = "fill:rgba(255,105,180,1);";
-	s.bellySkinStyle = "fill:rgba(255,105,180,1);";
-	break;
-case "a fallen nuns habit":
-	s.bellySkinStyle = "fill:rgba(51,51,51,1);";
-	break;
-case "a dirndl":
-	s.scrotumSkinStyle = "fill:rgba(128,0,51,1);";
-	s.bellySkinStyle = "fill:rgba(128,0,51,1);";
-	break;
-case "lederhosen":
-	s.scrotumSkinStyle = "fill:rgba(93,83,108,1);";
-	break;
-case "a long qipao":
-	s.scrotumSkinStyle = "fill:rgba(0,128,0,1);";
-	break;
-case "a mounty outfit":
-	s.scrotumSkinStyle = "fill:rgba(51,51,51,1);";
-	s.bellySkinStyle = "fill:rgba(128,0,0,1);";
-	break;
-case "battlearmor":
-	s.scrotumSkinStyle = "fill:rgba(200,200,200,1);";
-	break;
-case "striped underwear":
-	s.scrotumSkinStyle = "fill:rgba(255,255,255,1);";
-	break;
-case "panties":
-	s.scrotumSkinStyle = "fill:rgba(255,170,238,1);";
-	break;
-case "a thong":
-	s.scrotumSkinStyle = "fill:rgba(34,28,36,1);";
-	break;
-case "a button-up shirt and panties":
-	s.scrotumSkinStyle = "fill:rgba(255,255,255,1);";
-	s.bellySkinStyle = "fill:rgba(255,255,255,1);";
-	break;
-case "a slutty klan robe":
-	s.scrotumSkinStyle = "fill:rgba(128,0,0,1);";
-	break;
-case "cutoffs":
-	s.scrotumSkinStyle = "fill:rgba(81,124,211,1);";
-	break;
-case "sport shorts":
-	s.scrotumSkinStyle = "fill:rgba(51,51,51,1);";
-	break;
-case "sport shorts":
-	s.scrotumSkinStyle = "fill:rgba(51,51,51,1);";
-	break;
-case "sport shorts and a sports bra":
-	s.scrotumSkinStyle = "fill:rgba(51,51,51,1);";
-	break;
-case "a t-shirt and thong":
-	s.scrotumSkinStyle = "fill:rgba(200,55,171,1);";
-	s.bellySkinStyle = "fill:rgba(200,55,171,1);";
-	break;
-case "a t-shirt and panties":
-	s.scrotumSkinStyle = "fill:rgba(255,255,255,1);";
-	s.bellySkinStyle = "fill:rgba(255,255,255,1);";
-	break;
-case "jeans":
-	s.scrotumSkinStyle = "fill:rgba(81,124,211,1);";
-	break;
-case "leather pants":
-	s.scrotumSkinStyle = "fill:rgba(26,26,26,1);";
-	break;
-case "leather pants and pasties":
-	s.scrotumSkinStyle = "fill:rgba(85,0,0,1);";
-	break;
-case "leather pants and a tube top":
-	s.scrotumSkinStyle = "fill:rgba(26,26,26,1);";
-	break;
-case "a t-shirt and jeans":
-	s.scrotumSkinStyle = "fill:rgba(81,124,211,1);";
-	s.bellySkinStyle = "fill:rgba(255,255,255,1);";
-	break;
-case "a tank-top and panties":
-	s.scrotumSkinStyle = "fill:rgba(26,26,26,1);";
-	s.bellySkinStyle = "fill:rgba(26,26,26,1);";
-	break;
-case "a tank-top":
-	s.bellySkinStyle = "fill:rgba(255,255,255,1);";
-	break;
-case "a tube top and thong":
-	s.scrotumSkinStyle = "fill:rgba(34,28,36,1);";
-	break;
-case "boyshorts":
-	s.scrotumSkinStyle = "fill:rgba(26,26,26,1);";
-	break;
-case "an oversized t-shirt and boyshorts":
-	s.bellySkinStyle = "fill:rgba(255,255,255,1);";
-	break;
-case "a sweater and panties":
-	s.scrotumSkinStyle = "fill:rgba(26,26,26,1);";
-	s.bellySkinStyle = "fill:rgba(212,170,0,1);";
-	break;
-case "a sweater and cutoffs":
-	s.scrotumSkinStyle = "fill:rgba(77,77,77,1);";
-	s.bellySkinStyle = "fill:rgba(85,0,0,1);";
-	break;
-case "a police uniform":
-	s.scrotumSkinStyle = "fill:rgba(11,23,40,1);";
-	s.bellySkinStyle = "fill:rgba(11,23,40,1);";
-	break;
-case "a one-piece swimsuit":
-	s.scrotumSkinStyle = "fill:rgba(22,45,80,1);";
-	s.bellySkinStyle = "fill:rgba(22,45,80,1);";
-	break;
-case "a skimpy loincloth":
-	s.scrotumSkinStyle = "fill:rgba(145,124,111,1);";
-	break;
-case "kitty lingerie":
-	s.scrotumSkinStyle = "fill:rgba(255,170,238,1);";
-	break;
-case "an oversized t-shirt":
-	s.bellySkinStyle = "fill:rgba(255,255,255,1);";
-	break;
-case "a hanbok":
-	s.bellySkinStyle = "fill:rgba(255,109,182,1);";
-	break;
-case "a gothic lolita dress":
-	s.bellySkinStyle = "fill:rgba(26,26,26,1);";
-	break;
-case "a sweater":
-	s.bellySkinStyle = "fill:rgba(85,0,0,1);";
-	break;
-case "sport shorts and a t-shirt":
-	s.scrotumSkinStyle = "fill:rgba(200,55,171,1);";
-	s.bellySkinStyle = "fill:rgba(200,55,171,1);";
-	break;
-case "a biyelgee costume":
-	s.scrotumSkinStyle = "fill:rgba(33,68,120,1);";
-}
-
-return s;
-}
diff --git a/src/art/vector/Set_Colour_Skin.tw b/src/art/vector/Set_Colour_Skin.tw
deleted file mode 100644
index 2e2fba0e1480ab2f77e6c59d5d7436135affb79e..0000000000000000000000000000000000000000
--- a/src/art/vector/Set_Colour_Skin.tw
+++ /dev/null
@@ -1,15 +0,0 @@
-:: Art_Vector_Set_Colour_Skin_
-
-/* BEWARE: _outfitBaseColour is set by Art_Vector_Set_Colour_Outfit_ */
-
-<<set _s = Art_Vector_Set_Colour_Skin(_artSlave, _outfitBaseColour) >>
-<<set _areolaStyle = _s.areolaStyle>>
-<<set _bellySkinStyle = _s.bellySkinStyle>>
-<<set _boobSkinStyle = _s.boobSkinStyle>>
-<<set _headSkinStyle = _s.headSkinStyle>>
-<<set _labiaStyle = _s.labiaStyle>>
-<<set _penisSkinStyle = _s.penisSkinStyle>>
-<<set _scrotumSkinStyle = _s.scrotumSkinStyle>>
-<<set _skinColour = _s.skinColour>>
-<<set _torsoSkinStyle = _s.torsoSkinStyle>>
-<<set _bellybuttonStyle = _s.bellybuttonStyle>>
diff --git a/src/events/intro/introSummary.tw b/src/events/intro/introSummary.tw
index 40befac3e1ab1c3f6248747b4e0ea0a3a304756f..d1d2a8965396b89b931d364e3b34a4c2767c6160 100644
--- a/src/events/intro/introSummary.tw
+++ b/src/events/intro/introSummary.tw
@@ -1116,8 +1116,8 @@ __''Mods''__
 	''disabled.'' [[Enable|Intro Summary][$SF.Toggle = 1]]
 <<else>>
 	''enabled.'' [[Disable|Intro Summary][$SF.Toggle = 0]]
-	<br>&nbsp;The support facility is
-	/*<<if $SF.Facility.Toggle < 1>>
+	/*<br>&nbsp;The support facility is
+	<<if $SF.Facility.Toggle < 1>>
 			@@.red;DISABLED.@@ [[Enable|Intro Summary][$SF.Facility.Toggle = 1]]
 	<<else>>
 			@@.cyan;ENABLED.@@ [[Disable|Intro Summary][$SF.Facility.Toggle = 0]]
diff --git a/src/facilities/farmyard/food/pFoodCrisis.tw b/src/facilities/farmyard/food/pFoodCrisis.tw
index e0f0d6a3e01cc405ed0e02370076cabdf4b8ad84..83caafcd75faf2aed7a6f76e8ab363c721c62166 100644
--- a/src/facilities/farmyard/food/pFoodCrisis.tw
+++ b/src/facilities/farmyard/food/pFoodCrisis.tw
@@ -35,7 +35,7 @@
 	<br><<link "Give them enough to survive on">>
 		<<replace "#result">>
 		You have your own problems to deal with, but that doesn't mean you don't look out for your own. You have a number of rationing stations set up throughout $arcologies[0].name and announce that each citizen is entitled to two full meals a day, just enough for your citizens not to starve. Your citizens are @@.green;happy@@ to hear that their leader is looking out for them.
-        <<run repX(2500, "event")>>
+		<<run repX(2500, "event")>>
 		<<set cashX(forceNeg(_price), "farmyard")>>
 		<<set $rations = 1>>
 		<</replace>> <<if ($PC.trading >= 50) || ($PC.career == "capitalist")>>//This will cost <<print cashFormat(_price)>> and some upkeep, @@.springgreen;reduced by your knowledge of trading@@//<<else>>//This will cost <<print cashFormat(_price)>> and incur significant upkeep costs//<</if>>
@@ -66,7 +66,7 @@
 	<br><<link "Provide them with enough sustenance to survive on too">>
 		<<replace "#result">>
 		As much as you'd like to provide them with all of the food in the world, it simply is not feasible in your current situation. Therefore, you announce to the leaders that you will provide them only enough rations to live off of. The leaders understand, and are @@.green;pleased@@ to hear that you would provide for them at all.
-        <<run repX(2500, "event")>>
+		<<run repX(2500, "event")>>
 		<<set cashX(forceNeg(_price), "farmyard")>>
 		<<set $rations = 3>>
 		<</replace>>
@@ -101,7 +101,7 @@
 	<br><<link "Politely decline their offer, but continue giving them rations">>
 		<<replace "#result">>
 		Things have been going fairly well for you, but not //that// well — setting up an entirely new place to buy, sell, and store food would no doubt be an expensive undertaking. You tell the citizens that while you can't spare the resources to create a new market at the moment, you will honor your past agreement and continue giving them free rations. The people initially seem a bit disappointed that you don't seem to want to expand $arcologies[0].name, but are ultimately @@.green;glad@@ to hear that you'll continue taking care of them.
-        <<run repX(2500, "event")>>
+		<<run repX(2500, "event")>>
 		<<set cashX(forceNeg(_price), "farmyard")>>
 		<<set $rations = 5>>
 		<</replace>>
diff --git a/src/interaction/cyberConfig.tw b/src/interaction/cyberConfig.tw
index 4b1b172374d4c49afa4b1b16d992c97ea30c7bb8..afa7d742e44f7a13d1ba75e169397cd3da8255c4 100644
--- a/src/interaction/cyberConfig.tw
+++ b/src/interaction/cyberConfig.tw
@@ -142,10 +142,10 @@
 
 	<<if $activeSlave.PTail == 1>><br><br>
 		$He has a neural tail interface installed. You can assign and adjust $his tail here.
-	    <<if $activeSlave.tail != "none">><br>&nbsp;
+		<<if $activeSlave.tail != "none">><br>&nbsp;
 			$He currently has a tail attached, if you wish to change it you will first need to detach it.<br>
 			[[Detach|cyberConfig][$temp = 7,$nextButton = "Continue", $nextLink = "cyberConfig"]]
-	    <<else>><br>&nbsp;
+		<<else>><br>&nbsp;
 			<<if $stockpile.modPTail > 0>>Attach a modular tail designed to look like a:<br>
 			[[Cat's Tail|cyberConfig][$temp = 8, $activeSlave.tail = "mod", $activeSlave.tailShape = "neko", $activeSlave.tailColor = $activeSlave.hColor, $stockpile.modPTail -= 1]]
 			| [[Dog's Tail|cyberConfig][$temp = 8, $activeSlave.tail = "mod", $activeSlave.tailShape = "inu", $activeSlave.tailColor = $activeSlave.hColor, $stockpile.modPTail -= 1]]
@@ -155,7 +155,7 @@
 			| [[Cow's Tail|cyberConfig][$temp = 8, $activeSlave.tail = "mod", $activeSlave.tailColor = "ushi", $activeSlave.tailColor = $activeSlave.hColor, $stockpile.modPTail -= 1]]<br><</if>>
 			<<if $stockpile.warPTail > 0>>[[Attach Combat Tail|cyberConfig][$temp = 8, $activeSlave.tail = "combat", $activeSlave.tailColor = "jet black", $stockpile.warPTail -= 1]]<</if>>
 			<<if $stockpile.sexPTail > 0>>| [[Attach Pleasure Tail|cyberConfig][$temp = 8, $activeSlave.tail = "sex", $activeSlave.tailColor = "pink", $stockpile.sexPTail -= 1]]<</if>>
-        <</if>>
+		<</if>>
 	<<else>>
 		$He does not have a neural tail interface installed so you can not attach a tail.
 	<</if>>
diff --git a/src/js/DefaultRules.js b/src/js/DefaultRules.js
index b450c38c0b3df4a92b2d431b667e9ec02d1f130d..bae0c78afaa42cbc5b2a4c7ea6d4d4a193e480ac 100644
--- a/src/js/DefaultRules.js
+++ b/src/js/DefaultRules.js
@@ -2231,8 +2231,13 @@ window.DefaultRules = (function() {
 		}
 
 		if (rule.skinColor !== undefined && rule.skinColor !== "no default setting" && rule.skinColor !== slave.skin) {
-			slave.skin = rule.skinColor;
-			r += `<br>${slave.slaveName}'s skin color has been set to ${rule.skinColor}.`;
+			if (rule.skinColor === "natural") {
+				slave.skin = slave.origSkin;
+				r += `<br>${slave.slaveName}'s skin color has been returned to ${slave.origSkin}.`;
+			} else {
+				slave.skin = rule.skinColor;
+				r += `<br>${slave.slaveName}'s skin color has been set to ${rule.skinColor}.`;
+			}
 		}
 
 
diff --git a/src/js/PenthouseNaming.js b/src/js/PenthouseNaming.js
index bd4a1f0d02694a431adf00a01d0e50f997389647..398e0f58178544e9f062686672c76e67fe155647 100644
--- a/src/js/PenthouseNaming.js
+++ b/src/js/PenthouseNaming.js
@@ -1,77 +1,105 @@
+/**
+ * @return {string}
+ */
 window.MasterSuiteUIName = function () {
 	const V = State.variables;
-	var name = "";
+	let name = "";
 	if (V.masterSuiteNameCaps === "The Master Suite")
 		name = "Master Suite";
 	else
 		name = V.masterSuiteNameCaps;
 	return `<<link "${name}""Master Suite">><</link>> `;
 };
+/**
+ * @return {string}
+ */
 window.HeadGirlSuiteUIName = function () {
 	const V = State.variables;
-	var name = "";
+	let name = "";
 	if (V.HGSuiteNameCaps === "The Head Girl Suite")
 		name = "Head Girl Suite";
 	else
 		name = V.HGSuiteNameCaps;
 	return `<<link "${name}""Head Girl Suite">><</link>> `;
 };
+/**
+ * @return {string}
+ */
 window.ServantQuartersUIName = function () {
 	const V = State.variables;
-	var name = "";
+	let name = "";
 	if (V.servantsQuartersNameCaps === "The Servants' Quarters")
 		name = "Servants' Quarters";
 	else
 		name = V.servantsQuartersNameCaps;
 	return `<<link "${name}""Servants' Quarters">><</link>> `;
 };
+/**
+ * @return {string}
+ */
 window.SpaUIName = function() {
 	const V = State.variables;
-	var name = "";
+	let name = "";
 	if (V.spaNameCaps === "The Spa")
-		name = "Spa"
+		name = "Spa";
 	else
 		name = V.spaNameCaps;
-	return `<<link "${name}""Spa">><</link>> `}
+	return `<<link "${name}""Spa">><</link>> `;
+};
+/**
+ * @return {string}
+ */
 window.NurseryUIName = function () {
 	const V = State.variables;
-	var name = "";
+	let name = "";
 	if (V.nurseryNameCaps === "The Nursery")
 		name = "Nursery";
 	else
 		name = V.nurseryNameCaps;
 	return `<<link "${name}""Nursery">><</link>> `;
 };
+/**
+ * @return {string}
+ */
 window.ClinicUIName = function () {
 	const V = State.variables;
-	var name = "";
+	let name = "";
 	if (V.clinicNameCaps === "The Clinic")
 		name = "Clinic";
 	else
 		name = V.clinicNameCaps;
 	return `<<link "${name}""Clinic">><</link>> `;
 };
+/**
+ * @return {string}
+ */
 window.SchoolRoomUIName = function () {
 	const V = State.variables;
-	var name = "";
+	let name = "";
 	if (V.schoolroomNameCaps === "The Schoolroom")
 		name = "Schoolroom";
 	else
 		name = V.schoolroomNameCaps;
 	return `<<link "${name}""Schoolroom">><</link>> `;
 };
+/**
+ * @return {string}
+ */
 window.CellblockUIName = function () {
 	const V = State.variables;
-	var name = "";
+	let name = "";
 	if (V.cellblockNameCaps === "The Cellblock")
 		name = "Cellblock";
 	else
 		name = V.cellblockNameCaps;
 	return `<<link "${name}""Cellblock">><</link>> `;
 };
+/**
+ * @return {string}
+ */
 window.IncubatorUIName = function () {
 	const V = State.variables;
-	var name = "";
+	let name = "";
 	if (V.incubatorNameCaps === "The Incubator")
 		name = "Incubator";
 	else
diff --git a/src/js/assignJS.js b/src/js/assignJS.js
index e411ecc39d408a1cf7a8f048e22861c66bbabbf7..b44407d86daa5b5158682405710472dacc23ee91 100644
--- a/src/js/assignJS.js
+++ b/src/js/assignJS.js
@@ -285,6 +285,8 @@ window.assignJob = function assignJob(slave, job) {
 			slave.assignment = job;
 			slave.assignmentVisible = 0;
 			slave.useRulesAssistant = 0; /* non-visible roles exempt from Rules Assistant */
+			WombCleanGenericReserve(slave, 'incubator', 9999);
+			WombCleanGenericReserve(slave, 'nursery', 9999);
 			if (job === "be your agent") {
 				V.leaders.push(slave);
 			}
diff --git a/src/js/extendedFamilyModeJS.js b/src/js/extendedFamilyModeJS.js
index f9964f6206f0c371b6e07a4b5dff0e9526a7bd26..39cec31aab9c48540a6689d735606ae9f224eb85 100644
--- a/src/js/extendedFamilyModeJS.js
+++ b/src/js/extendedFamilyModeJS.js
@@ -30,9 +30,9 @@ window.sameMom = function(slave1, slave2){
 
 window.isAunt = /** @param {App.Entity.SlaveState} niece, @param {App.Entity.SlaveState} aunt */ function(niece, aunt) {
 
-    if (!State.variables.showDistantRelatives) {
-        return false;
-    }
+	if (!State.variables.showDistantRelatives) {
+		return false;
+	}
 
 	if (!niece || !aunt || (niece.ID === aunt.ID)) {
 		return false;
@@ -136,9 +136,9 @@ window.areSisters = function(c1, c2) {
 */
 window.areCousins = /** @param {App.Entity.SlaveState} slave1, @param {App.Entity.SlaveState} slave2 */ function(slave1, slave2) {
 
-    if (!State.variables.showDistantRelatives) {
-        return false;
-    }
+	if (!State.variables.showDistantRelatives) {
+		return false;
+	}
 
 	if (!slave1 || !slave2 || (slave1.ID === slave2.ID) || areSisters(slave1, slave2) ) {
 		return false;
diff --git a/src/js/heroCreator.js b/src/js/heroCreator.js
index 95f8d0ca54d067122cbbc1819603701b11f4fcc1..faa919b75ca7ed098f3cf6ed21d43c1d73f821ad 100644
--- a/src/js/heroCreator.js
+++ b/src/js/heroCreator.js
@@ -1,6 +1,11 @@
+/**
+ * @param {App.Entity.SlaveState} heroSlave
+ * @param {App.Entity.SlaveState} baseHeroSlave
+ * @return {App.Entity.SlaveState}
+ */
 window.getHeroSlave = function (heroSlave, baseHeroSlave) {
-	var newSlave = clone(baseHeroSlave);
-	for (var attrname in heroSlave) {
+	const newSlave = clone(baseHeroSlave);
+	for (let attrname in heroSlave) {
 		newSlave[attrname] = heroSlave[attrname];
 	}
 	generatePuberty(newSlave);
diff --git a/src/js/rulesAssistantOptions.js b/src/js/rulesAssistantOptions.js
index ca7e55f33e5ede210115adb399f1d1c8b6391ec6..4f0148bd44a320f7014d014b8d8cc3ddc277ca85 100644
--- a/src/js/rulesAssistantOptions.js
+++ b/src/js/rulesAssistantOptions.js
@@ -3513,6 +3513,7 @@ window.rulesAssistantOptions = (function() {
 		constructor() {
 			const items = [
 				["no default setting"],
+				["natural"],
 				["pale"],
 				["lightened"],
 				["tanned"],
diff --git a/src/js/slaveCostJS.js b/src/js/slaveCostJS.js
index 6a7c8581b9bef42941acc9c75a4d96ef730cf8e5..87c0ba6d7ef69b451cc706876d8286267b0c3eee 100644
--- a/src/js/slaveCostJS.js
+++ b/src/js/slaveCostJS.js
@@ -1054,6 +1054,9 @@ window.Beauty = (function() {
 			if (slave.hips === 3) {
 				beauty += 10;
 			}
+			if (slave.horns !== "none" || slave.tail !== "none" || (slave.earShape !== "normal" && slave.earShape !== "damaged") || slave.earT !== "none") {
+				beauty += 10;
+			}
 		}
 		if ((arcology.FSGenderRadicalist > 20 && arcology.FSGenderRadicalistLawFuta !== 3) || arcology.FSSlimnessEnthusiast > 20) {
 			if (slave.hips < 0) {
@@ -1077,6 +1080,18 @@ window.Beauty = (function() {
 				beauty += 2*V.nicaeaPower;
 			}
 		}
+		if (arcology.FSChattelReligionist > 40 && arcology.FSBodyPurist === "unset") {
+			let tats = ["shouldersTat", "lipsTat", "boobsTat", "armsTat", "backTat", "stampTat", "buttTat", "vaginaTat", "dickTat", "anusTat", "legsTat"];
+			let sacrilegeCount = 0;
+			for (var index in tats) {
+				if (slave[index] === "sacrilege") {
+					sacrilegeCount++;
+				}
+			}
+			if (sacrilegeCount > 0) {
+				beauty += (1.5 * sacrilegeCount);
+			}
+		}
 	}
 
 	/** @param {App.Entity.SlaveState} slave */
diff --git a/src/pregmod/incubator.tw b/src/pregmod/incubator.tw
index fae743fe30a8dfa5c3a6d7521a1796abafc9e434..c4681d40bf9d856b767b3e2c41fb7e4d0a6ec8b5 100644
--- a/src/pregmod/incubator.tw
+++ b/src/pregmod/incubator.tw
@@ -72,7 +72,7 @@ Reserve an eligible mother-to-be's child to be placed in a tank upon birth. Of $
 <<for _u = 0; _u < _SL; _u++>>
 	<<setLocalPronouns $slaves[_u]>>
 	<<if $slaves[_u].preg > 0 && $slaves[_u].broodmother == 0 && $slaves[_u].pregKnown == 1 && $slaves[_u].eggType == "human">>
-	<<if $slaves[_u].assignment == "work in the dairy" && $dairyPregSetting > 0>>
+	<<if ($slaves[_u].assignment == "work in the dairy" && $dairyPregSetting > 0) || $activeSlave.assignment == "be your agent" || $activeSlave.assignment == "live with your agent">>
 	<<else>>
 		<<set _slaveId = "slave-" + $slaves[_u].ID>>
 		<<set _WL = $slaves[_u].womb.length>>
diff --git a/src/uncategorized/BackwardsCompatibility.tw b/src/uncategorized/BackwardsCompatibility.tw
index 241199e7de95936189746855ca81938eeb2adca8..34b145f0e640c1661adcea2a554990243a8c938a 100644
--- a/src/uncategorized/BackwardsCompatibility.tw
+++ b/src/uncategorized/BackwardsCompatibility.tw
@@ -2484,6 +2484,9 @@ Setting missing global variables:
 	<<set $PCSlutContacts = 1>>
 <</if>>
 
+<<if ndef $seeVectorArtHighlights>>
+	<<set $seeVectorArtHighlights = 1>>
+<</if>>
 <<if ndef $seeFaces>>
 	<<set $seeFaces = 1>>
 <</if>>
diff --git a/src/uncategorized/arcmgmt.tw b/src/uncategorized/arcmgmt.tw
index 6713874ab21bd0454c582687f2f239629875bbbb..85debf228ead78b84226b41521efa118d99e844e 100644
--- a/src/uncategorized/arcmgmt.tw
+++ b/src/uncategorized/arcmgmt.tw
@@ -689,7 +689,7 @@ $menialBioreactors -= _expirationBR>>
 <</if>>
 <<if $terrain == "urban">>
 	<<set _terrain = 1.2>>
-<<elseif $terrain == "rural" || "marine">>
+<<elseif $terrain == "rural" || $terrain == "marine">>
 	<<set _terrain = 1>>
 <<else>>
 	<<set _terrain = 0.8>>
diff --git a/src/uncategorized/brothel.tw b/src/uncategorized/brothel.tw
index 52d7ed3e93413a8f7ca53a3609b03d3ac3b9e751..04ddba28941a644e3383964207fe74baeaaca2cd 100644
--- a/src/uncategorized/brothel.tw
+++ b/src/uncategorized/brothel.tw
@@ -88,12 +88,14 @@ $brothelNameCaps
 	<<else>>
 		some are augmented by implants.
 	<</if>>
-	<<if $brothelAdsPreg == 1>>
-		Most of slaves have firm, rounded bellies.
-	<<elseif $brothelAdsPreg == -1>>
-		Most of the slaves have firm, flat bellies.
-	<<else>>
-		Some of the slaves are pregnant.
+	<<if $seePreg == 1>>
+		<<if $brothelAdsPreg == 1>>
+			Most of slaves have firm, rounded bellies.
+		<<elseif $brothelAdsPreg == -1>>
+			Most of the slaves have firm, flat bellies.
+		<<else>>
+			Some of the slaves are pregnant.
+		<</if>>
 	<</if>>
 	<<if $brothelAdsModded == 1>>
 		Everything is heavily pierced and tattooed.
diff --git a/src/uncategorized/brothelAdvertisement.tw b/src/uncategorized/brothelAdvertisement.tw
index ede828219133cfcfb8c6f79bb657b3e85701b089..5342f69d4f22c1dbf82c48a947fb6198268100fa 100644
--- a/src/uncategorized/brothelAdvertisement.tw
+++ b/src/uncategorized/brothelAdvertisement.tw
@@ -79,12 +79,14 @@
 	<<else>>
 	some are augmented by implants.
 	<</if>>
-	<<if $brothelAdsPreg == 1>>
-		Most of slaves have firm, rounded bellies.
-	<<elseif $brothelAdsPreg == -1>>
-		Most of the slaves have firm, flat bellies.
-	<<else>>
-		Some of the slaves are pregnant.
+	<<if $seePreg == 1>>
+		<<if $brothelAdsPreg == 1>>
+			Most of slaves have firm, rounded bellies.
+		<<elseif $brothelAdsPreg == -1>>
+			Most of the slaves have firm, flat bellies.
+		<<else>>
+			Some of the slaves are pregnant.
+		<</if>>
 	<</if>>
 	<<if $brothelAdsModded == 1>>
 	Everything is heavily pierced and tattooed.
diff --git a/src/uncategorized/club.tw b/src/uncategorized/club.tw
index 176af0c1d345f7515ddc7c728953b4de6f2d0894..c2fb50fd9ce47c39c6e9e811d88f3e0fd34f4854 100644
--- a/src/uncategorized/club.tw
+++ b/src/uncategorized/club.tw
@@ -88,12 +88,14 @@ $clubNameCaps
 	<<else>>
 		some are augmented by implants.
 	<</if>>
-	<<if $clubAdsPreg == 1>>
-		Most of strippers have firm, rounded bellies.
-	<<elseif $clubAdsPreg == -1>>
-		Most of the strippers have firm, flat bellies.
-	<<else>>
-		Some of the strippers are pregnant.
+	<<if $seePreg == 1>>
+		<<if $clubAdsPreg == 1>>
+			Most of strippers have firm, rounded bellies.
+		<<elseif $clubAdsPreg == -1>>
+			Most of the strippers have firm, flat bellies.
+		<<else>>
+			Some of the strippers are pregnant.
+		<</if>>
 	<</if>>
 	<<if $clubAdsModded == 1>>
 		Everything is heavily pierced and tattooed.
diff --git a/src/uncategorized/clubAdvertisement.tw b/src/uncategorized/clubAdvertisement.tw
index ea30c0798cce8b8857663ecff1f15bef7cd0aeef..769010969f58fea5d568639ec192ab124382f0db 100644
--- a/src/uncategorized/clubAdvertisement.tw
+++ b/src/uncategorized/clubAdvertisement.tw
@@ -79,12 +79,14 @@
 	<<else>>
 	some are augmented by implants.
 	<</if>>
-	<<if $clubAdsPreg == 1>>
-		Most of strippers have firm, rounded bellies.
-	<<elseif $clubAdsPreg == -1>>
-		Most of the strippers have firm, flat bellies.
-	<<else>>
-		Some of the strippers are pregnant.
+	<<if $seePreg == 1>>
+		<<if $clubAdsPreg == 1>>
+			Most of strippers have firm, rounded bellies.
+		<<elseif $clubAdsPreg == -1>>
+			Most of the strippers have firm, flat bellies.
+		<<else>>
+			Some of the strippers are pregnant.
+		<</if>>
 	<</if>>
 	<<if $clubAdsModded == 1>>
 	Everything is heavily pierced and tattooed.
diff --git a/src/uncategorized/longSlaveDescription.tw b/src/uncategorized/longSlaveDescription.tw
index 8d2c215f666529a471d0347440ab616d89e8ccb0..9940183eaae87a34f182025d4a43652678808f7d 100644
--- a/src/uncategorized/longSlaveDescription.tw
+++ b/src/uncategorized/longSlaveDescription.tw
@@ -1171,9 +1171,9 @@ is
 				$He is in an @@.lightgreen;incestuous relationship with $his daughter, <<= SlaveFullName(_lover)>>.@@
 			<<elseif def $showDistantRelatives && $showDistantRelatives == 1>>
     			<<if isAunt($activeSlave, _lover)>>
-    				$He is in an @@.lightgreen;incestuous relationship with $his aunt, <<= SlaveFullName(_lover)>>.@@	
+    				$He is in an @@.lightgreen;incestuous relationship with $his aunt, <<= SlaveFullName(_lover)>>.@@
     			<<elseif isAunt(_lover, $activeSlave)>>
-    				$He is in an @@.lightgreen;incestuous relationship with $his niece, <<= SlaveFullName(_lover)>>.@@	
+    				$He is in an @@.lightgreen;incestuous relationship with $his niece, <<= SlaveFullName(_lover)>>.@@
     			<<elseif areCousins($activeSlave, _lover)>>
     				$He is in an @@.lightgreen;incestuous relationship with $his cousin, <<= SlaveFullName(_lover)>>.@
     			<</if>>
@@ -1206,18 +1206,18 @@ is
 		<<elseif def $showDistantRelatives && $showDistantRelatives == 1>>
     		<<if isAunt($activeSlave, $PC)>>
     			<<if $PC.title == 1>>
-    				$He is in an @@.lightgreen;incestuous relationship with $his uncle, you.@@	
+    				$He is in an @@.lightgreen;incestuous relationship with $his uncle, you.@@
     			<<elseif $PC.title == 0>>
-    				$He is in an @@.lightgreen;incestuous relationship with $his aunt, you.@@	
+    				$He is in an @@.lightgreen;incestuous relationship with $his aunt, you.@@
     			<</if>>
     		<<elseif isAunt($PC, $activeSlave) && $PC.title == 0>>
     			<<if $PC.title == 1>>
-    				$He is in an @@.lightgreen;incestuous relationship with $his nephew, you.@@	
+    				$He is in an @@.lightgreen;incestuous relationship with $his nephew, you.@@
     			<<elseif $PC.title == 0>>
-    				$He is in an @@.lightgreen;incestuous relationship with $his niece, you.@@	
+    				$He is in an @@.lightgreen;incestuous relationship with $his niece, you.@@
     			<</if>>
     		<<elseif areCousins($PC, $activeSlave)>>
-    			$He is in an @@.lightgreen;incestuous relationship with $his cousin, you.@@	
+    			$He is in an @@.lightgreen;incestuous relationship with $his cousin, you.@@
     		<</if>>
 		<<elseif areSisters($PC, $activeSlave) == 1>>
 			<<if $PC.title == 1>>
diff --git a/src/uncategorized/options.tw b/src/uncategorized/options.tw
index 10808ea177d69a8c8b6c60e4f18b1328486a9581..97d7c37360dfb7c454aee983719e9f93a7b28d11 100644
--- a/src/uncategorized/options.tw
+++ b/src/uncategorized/options.tw
@@ -348,7 +348,7 @@ Assignment performance vignettes on the end week report are
 <</if>>
 
 <br>
-	
+
 <<if $familyTesting == 1>>
 	<<if def $showDistantRelatives && $showDistantRelatives == 1>>
 		Distant relatives such as aunts, nieces and cousins ''are'' shown
@@ -484,8 +484,8 @@ Assignment performance vignettes on the end week report are
 	@@.red;DISABLED.@@ [[Enable|Options][$SF.Toggle = 1]]
 <<else>>
 	@@.cyan;ENABLED.@@ [[Disable|Options][$SF.Toggle = 0]]
-	<br>&nbsp;The support facility is
-	/*<<if ($SF.Facility.Toggle === 0)>>
+	/*<br>&nbsp;The support facility is
+	<<if ($SF.Facility.Toggle === 0)>>
 			@@.red;DISABLED.@@ [[Enable|Options][$SF.Facility.Toggle = 1]]
 	<<else>>
 			@@.cyan;ENABLED.@@ [[Disable|Options][$SF.Facility.Toggle = 0]]
diff --git a/src/uncategorized/pRaidInvitation.tw b/src/uncategorized/pRaidInvitation.tw
index f94a12c3d317a6f44fe2529717846e1b9bab35f1..3e7ad192c499ae6c12ec63e5b6f9cb2fcef21775 100644
--- a/src/uncategorized/pRaidInvitation.tw
+++ b/src/uncategorized/pRaidInvitation.tw
@@ -36,7 +36,8 @@ Fund a quick raid on the refugees with <<print cashFormat(5000)>>, targeting:
 	<<set $PRaidTarget = 3>>
 	<</replace>>
 <</link>>
-<br><<link "Let them go">>
+<br>Or, simply:
+<br>&nbsp;&nbsp;&nbsp;&nbsp;<<link "Let them go">>
 	<<replace "#result">>
 	Some of the refugees make it to safety. Some do not.
 	<</replace>>
diff --git a/src/uncategorized/remoteSurgery.tw b/src/uncategorized/remoteSurgery.tw
index fc30d1813b8c9b2f1731b8ec44d9f089d460cba0..43fc7ceb0ff5826c54ef35318946c8b3942aef92 100644
--- a/src/uncategorized/remoteSurgery.tw
+++ b/src/uncategorized/remoteSurgery.tw
@@ -1335,7 +1335,7 @@ $He has
 		<</if>>
 		<<if $activeSlave.geneticQuirks.wellHung == 2>>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;
-			[[Corret genetic predisposition for large geneitals|Surgery Degradation][$activeSlave.geneticQuirks.wellHung = 0,cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 100,$surgeryType = "gene treatment"]]
+			[[Corret genetic predisposition for large genitals|Surgery Degradation][$activeSlave.geneticQuirks.wellHung = 0,cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 100,$surgeryType = "gene treatment"]]
 		<</if>>
 	<</if>>
 	<br><br>
diff --git a/src/uncategorized/saLongTermEffects.tw b/src/uncategorized/saLongTermEffects.tw
index c09cbb9bde2f17857dde1c5eeaad8ff28f9ee910..5051b435c32b74fcbc07bbee614ff780c6b6cd0b 100644
--- a/src/uncategorized/saLongTermEffects.tw
+++ b/src/uncategorized/saLongTermEffects.tw
@@ -4728,6 +4728,14 @@
 			Society @@.green;approves@@ of $his unmarked, unblemished skin, advancing the fashion for unspoiled slaves.
 			<<= FSChangePorn("BodyPurist", 1)>>
 		<</if>>
+		<<if ($slaves[$i].earShape != "normal" && $slaves[$i].earShape != "damaged") || $slaves[$i].earT != "none">>
+			Society finds $his inhuman ears @@.red;appalling.@@
+			<<= FSChangePorn("BodyPurist", -1)>>
+		<</if>>
+		<<if $slaves[$i].horns != "none" || $slaves[$i].tail != "none">>
+			Society @@.red;is disgusted@@ by $his inhuman attributes.
+			<<= FSChangePorn("BodyPurist", -1)>>
+		<</if>>
 		<<if $slaves[$i].faceImplant <= 5 && $slaves[$i].race == $slaves[$i].origRace>>
 			Society @@.green;approves@@ of $his natural, untouched appearance, advancing the fashion for unaltered slaves.
 			<<= FSChangePorn("BodyPurist", 1)>>
@@ -4747,6 +4755,7 @@
 				<<= FSChangePorn("BodyPurist", 1)>>
 			<</if>>
 		<</if>>
+		
 	<<elseif $arcologies[0].FSTransformationFetishist != "unset">>
 		<<set _transformed = 0>>
 		<<if ($slaves[$i].boobsImplant > 0) && ($slaves[$i].buttImplant > 0) && ($slaves[$i].lipsImplant > 0)>>
@@ -4778,7 +4787,7 @@
 			<<= FSChangePorn("TransformationFetishist", 1)>>
 			<<set _transformed = 1>>
 		<</if>>
-		<<if ($slaves[$i].amp < 0)>>
+		<<if ($slaves[$i].amp < 0) || $slaves[$i].earT != "none" || $slaves[$i].horns != "none" || $slaves[$i].tail != "none">>
 			Society @@.green;strongly approves@@ of $his transhuman body.
 			<<= FSChangePorn("TransformationFetishist", 1)>>
 			<<set _transformed = 1>>
@@ -4959,6 +4968,10 @@
 			Society @@.green;strongly approves@@ of $his eagerness to transgress against the old world religious mores $he once held dear.
 			<<= FSChangePorn("ChattelReligionist", 2)>>
 		<</if>>
+		<<if [$slaves[$i].shouldersTat == "sacrilege" && $slaves[$i].lipsTat == "sacrilege" && $slaves[$i].boobsTat == "sacrilege" && $slaves[$i].armsTat == "sacrilege" && $slaves[$i].backTat == "sacrilege" && $slaves[$i].stampTat == "sacrilege" && $slaves[$i].buttTat == "sacrilege" && $slaves[$i].vaginaTat == "sacrilege" && $slaves[$i].dickTat == "sacrilege" && $slaves[$i].anusTat == "sacrilege" && $slaves[$i].legsTat == "sacrilege" && $slaves[$i].fuckdoll == 0>>
+			Society @@.green;enjoys the sight@@ of the religious sacrilege scrawled across $his skin.
+			<<= FSChangePorn("ChattelReligionist", 1)>>
+		<</if>>
 	<</if>>
 
 <</if>> /* closes FSAnnounced */
diff --git a/src/uncategorized/slaveAssignmentsReport.tw b/src/uncategorized/slaveAssignmentsReport.tw
index 0e86ddbf3cb5ad4e6636f79db2c2099929798550..bff75290866de0c2624270c294082fe7943e42b4 100644
--- a/src/uncategorized/slaveAssignmentsReport.tw
+++ b/src/uncategorized/slaveAssignmentsReport.tw
@@ -454,7 +454,7 @@
 	<</if>>
 <</if>>
 
-<<if $slaves[$i].assignment == "be your Agent" || $slaves[$i].assignment == "live with your agent">>
+<<if $slaves[$i].assignment == "be your agent" || $slaves[$i].assignment == "live with your agent">>
 	<<include "SA agent">>
 <</if>>
 
diff --git a/src/utility/descriptionWidgetsFlesh.tw b/src/utility/descriptionWidgetsFlesh.tw
index 933a805c4b0f15b8e1653f31ab69faec0a954bf1..4a73db590655d584ad20d2722e91968d1abc8686 100644
--- a/src/utility/descriptionWidgetsFlesh.tw
+++ b/src/utility/descriptionWidgetsFlesh.tw
@@ -5191,7 +5191,7 @@ $He's got a
 <<widget "eyeDescription">>
 <<if $activeSlave.eyes == -2>>
 	<<if $activeSlave.eyeColor != "empty">>
-		$His eyes are dull and unfocused,
+		$His eyes are dull<<if $saleDescription == 1 && ($PC.medicine >= 50 || $PC.slaving >= 50)>>, unfocused and clearly nonfunctional<<else>> and unfocused<</if>>,
 	<<else>>
 		$His gaze is empty,
 	<</if>>
@@ -16717,7 +16717,7 @@ $He has
 
 		$He appears to be $activeSlave.visualAge years old
 		<<if $activeSlave.visualAge <= 8>>
-			and $he has induced @@.orange;NCS@@ and will alway have a <<= _bodyNCS>> body, no matter how long $he lives.
+			and $he has induced @@.orange;NCS@@ and will always have a <<= _bodyNCS>> body, no matter how long $he lives.
 		<<elseif ($activeSlave.visualAge < 13)>>
 			and $he has induced @@.orange;NCS@@ and will have a <<= _bodyNCS>> body for the rest of $his life.
 		<<elseif ($activeSlave.visualAge < 20)>>
diff --git a/src/utility/extendedFamilyWidgets.tw b/src/utility/extendedFamilyWidgets.tw
index f70b61f222c7807f637b18653b85770be377116f..4fe1f9f6c6a64724fbd563ae2e1bbccd0d4d2a51 100644
--- a/src/utility/extendedFamilyWidgets.tw
+++ b/src/utility/extendedFamilyWidgets.tw
@@ -77,444 +77,444 @@
 <</if>>
 
 <<if def $showDistantRelatives && $showDistantRelatives == 1>>
-    /*testtest maternal grandma passage - determines if the current slave has a maternal grandmother*/
-    <<set _mi = $slaveIndices[$activeSlave.mother]>>
-    <<set _fi = $slaveIndices[$activeSlave.father]>>
-    <<if def _mi>>
-    	<<set _mmi = $slaveIndices[$slaves[_mi].mother]>>
-    	<<set _fmi = $slaveIndices[$slaves[_mi].father]>>
-    <<elseif $PC.ID == $activeSlave.mother>>
-    	<<set _mmi = $slaveIndices[$PC.mother]>>
-    	<<set _fmi = $slaveIndices[$PC.father]>>
-    <</if>>
-    <<if def _fi>>
-    	<<set _mfi = $slaveIndices[$slaves[_fi].mother]>>
-    	<<set _ffi = $slaveIndices[$slaves[_fi].father]>>
-    <<elseif $PC.ID == $activeSlave.father>>
-    	<<set _mfi = $slaveIndices[$PC.mother]>>
-    	<<set _ffi = $slaveIndices[$PC.father]>>
-    <</if>>
-    <<if (def _mi || def _fi) && ndef _mmi && ndef _fmi && ndef _mfi && ndef _ffi>>
-    	<<if def _mi>>
-    		<<if def _fi && _mi == _fi>>
-    			<<if $PC.ID == $slaves[_mi].mother && $PC.ID == $slaves[_fi].father>>
-    				$He is @@.lightgreen;your grandchild.@@ You impregnated yourself with $his sole biological parent.
-    			<<elseif $PC.ID == $slaves[_mi].mother>>
-    				$He is @@.lightgreen;your grandchild.@@ You gave birth to $his sole biological parent.
-    			<<elseif $PC.ID == $slaves[_fi].father>>
-    				$He is @@.lightgreen;your grandchild.@@ You fathered $his sole biological parent.
-    			<</if>>
-    		<<elseif def _fi && $PC.ID == $slaves[_mi].mother && $PC.ID == $slaves[_fi].mother>>
-    			$He is @@.lightgreen;your grandchild.@@ You gave birth to both of $his parents.
-    		<<elseif def _fi && $PC.ID == $slaves[_mi].father && $PC.ID == $slaves[_fi].father>>
-    			$He is @@.lightgreen;your grandchild.@@ You fathered both of $his parents.
-    		<<elseif $PC.ID == $slaves[_mi].mother>>
-    			$He is @@.lightgreen;your grandchild.@@ You gave birth to $his mother.
-    		<<elseif $PC.ID == $slaves[_mi].father>>
-    			$He is @@.lightgreen;your grandchild.@@ You fathered $his mother.
-    		<</if>>
-    	<<elseif def _fi>>
-    		<<if $PC.ID == $slaves[_fi].mother>>
-    			$He is @@.lightgreen;your grandchild.@@ You gave birth to $his father.
-    		<<elseif $PC.ID == $slaves[_fi].father>>
-    			$He is @@.lightgreen;your grandchild.@@ You fathered $his father.
-    		<</if>>
-    	<</if>>
-    <<else>>
-    	<<if def _mmi && def _ffi && _mmi == _ffi>>
-    		$His sole @@.lightgreen;grandparent is $slaves[_mmi].slaveName.@@
-    	<<else>>
-    		<<if def _mmi && def _mfi && _mmi == _mfi>>
-    			$His sole @@.lightgreen;grandmother is $slaves[_mmi].slaveName.@@
-    		<<else>>
-    			<<if def _mmi>>
-    				$His maternal @@.lightgreen;grandmother is $slaves[_mmi].slaveName.@@
-    			<</if>>
-    			<<if def _mfi>>
-    				$His paternal @@.lightgreen;grandmother is $slaves[_mfi].slaveName.@@
-    			<</if>>
-    		<</if>>
-    		<<if def _fmi && def _ffi && _fmi == _ffi>>
-    			$His sole @@.lightgreen;grandfather is $slaves[_ffi].slaveName.@@
-    		<<else>>
-    			<<if def _fmi>>
-    				$His maternal @@.lightgreen;grandfather is $slaves[_fmi].slaveName.@@
-    			<</if>>
-    			<<if _ffi>>
-    				$His paternal @@.lightgreen;grandfather is $slaves[_ffi].slaveName.@@
-    			<</if>>
-    		<</if>>
-    	<</if>>
-    <</if>>
-    
-    
-    /*testtest PC grandparents passage - determines if the current slave is your grandparent*/
-    <<set _pcMother = $slaveIndices[$PC.mother]>>
-    <<set _pcFather = $slaveIndices[$PC.father]>>
-    <<if def _pcMother>>
-    	<<if def _pcFather && _pcMother == _pcFather>>
-    		<<if $activeSlave.ID == $slaves[_pcMother].mother && $activeSlave.ID == $slaves[_pcFather].father>>
-    			$He is @@.lightgreen;your sole grandparent.@@ $He impregnated $himself with your mother/father who in turn impregnated themselves with you.
-    		<<elseif $activeSlave.ID == $slaves[_pcMother].mother>>
-    			$He is @@.lightgreen;your sole grandmother.@@ $He gave birth to $slaves[_pcMother].slaveName who in turn impregnated themselves with you.
-    		<<elseif $activeSlave.ID == $slaves[_pcFather].father>>
-    			$He is @@.lightgreen;your sole grandfather.@@ $He fathered $slaves[_pcFather].slaveName who in turn impregnated themselves with you.
-    		<</if>>
-    	<<elseif def _pcFather && $activeSlave.ID == $slaves[_pcMother].mother && $activeSlave.ID == $slaves[_pcFather].mother>>
-    		$He is @@.lightgreen;your sole grandmother.@@ $He gave birth to both of your parents, $slaves[_pcMother].slaveName and $slaves[_pcFather].slaveName.
-    	<<elseif def _pcFather && $activeSlave.ID == $slaves[_pcMother].father && $activeSlave.ID == $slaves[_pcFather].father>>
-    		$He is @@.lightgreen;your sole grandfather.@@ $He fathered both of your parents, $slaves[_pcFather].slaveName and $slaves[_pcMother].slaveName.
-    	<<elseif $activeSlave.ID == $slaves[_pcMother].mother>>
-    		$He is @@.lightgreen;your maternal grandmother.@@
-    	<<elseif $activeSlave.ID == $slaves[_pcMother].father>>
-    		$He is @@.lightgreen;your maternal grandfather.@@
-    	<</if>>
-    <<elseif def _pcFather>>
-    	<<if $activeSlave.ID == $slaves[_pcFather].mother>>
-    		$He is @@.lightgreen;your paternal grandmother.@@
-    	<<elseif $activeSlave.ID == $slaves[_pcFather].father>>
-    		$He is @@.lightgreen;your paternal grandfather.@@
-    	<</if>>
-    <</if>>
-    
-    /*testtest grandchild passage - determines how many grandchildren the current slave has*/
-    <<for $i = 0; $i < $slaves.length; $i++>>
-    	<<if $slaves[$i].ID != $activeSlave.ID>>
-    	<<if $activeSlave.ID == $slaves[$i].mother || $activeSlave.ID == $slaves[$i].father>>
-    		<<for $j = 0; $j < $slaves.length; $j++>>
-    			<<if $slaves[$i].ID != $slaves[$j].ID>>
-    			<<if $slaves[$i].ID == $slaves[$j].mother || $slaves[$i].ID == $slaves[$j].father>>
-    				<<set $children.push($slaves[$j])>>
-    			<</if>>
-    			<</if>>
-    		<</for>>
-    	<</if>>
-    	<</if>>
-    <</for>>
-    <<if $children.length > 0>>
-    	$He
-    <<if $children.length > 2>>
-    	has @@.lightgreen;many grandchildren,
-    	<<for $j = 0; $j < $children.length; $j++>>
-    		<<if $j < $children.length-1>>
-    			$children[$j].slaveName,
-    		<<else>>
-    			and $children[$j].slaveName amongst your slaves.@@
-    		<</if>>
-    	<</for>>
-    <<elseif $children.length > 1>>
-    	has @@.lightgreen;two grandchildren, $children[0].slaveName, and $children[1].slaveName as your slaves.@@
-    <<elseif $children.length > 0>>
-    	has a @@.lightgreen;grandchild, $children[0].slaveName as your slave.@@
-    <</if>>
-    <</if>>
-    <<set $children = []>>
-
-    /*testtest PC aunt passage - determines how many aunts you have*/
-    <<for $i = 0; $i < $slaves.length; $i++>>
-    	<<if $slaves[$i].ID != $activeSlave.ID>>
-    	<<if areSisters($slaves[$i], $activeSlave) == 1 || areSisters($slaves[$i], $activeSlave) == 2>>
-    	<<if $slaves[$i].ID == $PC.mother || $slaves[$i].ID == $PC.father>>
-    		<<for $j = 0; $j < $slaves.length; $j++>>
-    			<<if $slaves[$i].ID != $slaves[$j].ID>>
-    			<<if $slaves[$j].genes == "XX">>
-    			<<if areSisters($slaves[$j], $activeSlave) == 1 || areSisters($slaves[$j], $activeSlave) == 2>>
-    				<<set $children.push($slaves[$j])>>
-    			<</if>>
-    			<</if>>
-    			<</if>>
-    		<</for>>
-    	<</if>>
-    	<</if>>
-    	<</if>>
-    <</for>>
-    <<if $activeSlave.genes == "XX" && $children.length > 0>>
-    	$He
-    	<<if $children.length > 2>>
-    		is @@.lightgreen;your aunt along with
-    		<<for $j = 0; $j < $children.length; $j++>>
-    			<<if $j < $children.length-1>>
-    				$children[$j].slaveName,
-    			<<else>>
-    				and $children[$j].slaveName.@@
-    			<</if>>
-    		<</for>>
-    	<<elseif $children.length > 1>>
-    		is @@.lightgreen;your aunt along with $children[0].slaveName.@@
-    	<<elseif $children.length > 0>>
-    		<<for $i = 0; $i < $slaves.length; $i++>>
-    			<<if $slaves[$i].ID != $activeSlave.ID && $activeSlave.genes == "XX">>
-    			<<if areSisters($slaves[$i], $activeSlave) == 1 || areSisters($slaves[$i], $activeSlave) == 2>>
-    			<<if $slaves[$i].ID == $PC.mother || $slaves[$i].ID == $PC.father>>
-    				$He is @@.lightgreen;your aunt.@@
-    			<</if>>
-    			<</if>>
-    			<</if>>
-    		<</for>>
-    	<</if>>
-    <</if>>
-    <<set $children = []>>
-    
-    /*testtest PC uncle passage - determines how many uncles you have*/
-    <<for $i = 0; $i < $slaves.length; $i++>>
-    	<<if $slaves[$i].ID != $activeSlave.ID>>
-    		<<if areSisters($slaves[$i], $activeSlave) == 1 || areSisters($slaves[$i], $activeSlave) == 2>>
-    			<<if $slaves[$i].ID == $PC.mother || $slaves[$i].ID == $PC.father>>
-    				<<for $j = 0; $j < $slaves.length; $j++>>
-    					<<if $slaves[$i].ID != $slaves[$j].ID && $slaves[$j].dick > 0 && $slaves[$j].genes == "XY">>
-    						<<if areSisters($slaves[$j], $activeSlave) == 1 || areSisters($slaves[$j], $activeSlave) == 2>>
-    							<<set $children.push($slaves[$j])>>
-    						<</if>>
-    					<</if>>
-    				<</for>>
-    			<</if>>
-    		<</if>>
-    	<</if>>
-    <</for>>
-    <<if $activeSlave.genes == "XY" && $children.length > 0>>
-    	$He
-    	<<if $children.length > 2>>
-    		is @@.lightgreen;your uncle along with
-    		<<for $j = 0; $j < $children.length; $j++>>
-    			<<if $j < $children.length-1>>
-    				$children[$j].slaveName,
-    			<<else>>
-    				and $children[$j].slaveName.@@
-    			<</if>>
-    		<</for>>
-    	<<elseif $children.length > 1>>
-    		is @@.lightgreen;your uncle along with $children[0].slaveName.@@
-    	<<elseif $children.length > 0>>
-    		<<for $i = 0; $i < $slaves.length; $i++>>
-    			<<if $slaves[$i].ID != $activeSlave.ID && $activeSlave.genes == "XY">>
-    				<<if areSisters($slaves[$i], $activeSlave) == 1 || areSisters($slaves[$i], $activeSlave) == 2>>
-    					<<if $slaves[$i].ID == $PC.mother || $slaves[$i].ID == $PC.father>>
-    						$He is @@.lightgreen;your uncle.@@
-    					<</if>>
-    				<</if>>
-    			<</if>>
-    		<</for>>
-    	<</if>>
-    <</if>>
-    <<set $children = []>>
-    
-    /*testtest aunt passage - determines how many aunts a slave has*/
-    <<for $i = 0; $i < $slaves.length; $i++>>
-    	<<if $slaves[$i].ID != $activeSlave.ID>>
-    		<<if $slaves[$i].ID == $activeSlave.mother || $slaves[$i].ID == $activeSlave.father>>
-    			<<for $j = 0; $j < $slaves.length; $j++>>
-    				<<if $slaves[$j].genes == "XX">>
-    					<<if areSisters($slaves[$j], $slaves[$i]) == 1 || areSisters($slaves[$j], $slaves[$i]) == 2>>
-    						<<set $children.push($slaves[$j])>>
-    					<</if>>
-    				<</if>>
-    			<</for>>
-    		<</if>>
-    	<</if>>
-    <</for>>
-    <<if $children.length > 0>>
-    	$He
-    	<<if $children.length > 2>>
-    		has @@.lightgreen;many aunts,
-    		<<for $j = 0; $j < $children.length; $j++>>
-    			<<if $j < $children.length-1>>
-    				$children[$j].slaveName,
-    			<<else>>
-    				and $children[$j].slaveName.@@
-    			<</if>>
-    		<</for>>
-    	<<elseif $children.length > 1>>
-    		has @@.lightgreen;two aunts, $children[0].slaveName, and $children[1].slaveName.@@
-    	<<elseif $children.length > 0>>
-    		has @@.lightgreen;an aunt, $children[0].slaveName.@@
-    	<</if>>
-    <</if>>
-    <<set $children = []>>
-    
-    /*testtest uncle passage - determines how many uncles a slave has*/
-    <<for $i = 0; $i < $slaves.length; $i++>>
-    	<<if $slaves[$i].ID != $activeSlave.ID>>
-    		<<if $slaves[$i].ID == $activeSlave.mother || $slaves[$i].ID == $activeSlave.father>>
-    			<<for $j = 0; $j < $slaves.length; $j++>>
-    				<<if $slaves[$j].genes == "XY">>
-    					<<if areSisters($slaves[$j], $slaves[$i]) == 1 || areSisters($slaves[$j], $slaves[$i]) == 2>>
-    						<<set $children.push($slaves[$j])>>
-    					<</if>>
-    				<</if>>
-    			<</for>>
-    		<</if>>
-    	<</if>>
-    <</for>>
-    <<if $children.length > 0>>
-    	$He
-    	<<if $children.length > 2>>
-    		has @@.lightgreen;many uncles,
-    		<<for $j = 0; $j < $children.length; $j++>>
-    			<<if $j < $children.length-1>>
-    				$children[$j].slaveName,
-    			<<else>>
-    				and $children[$j].slaveName.@@
-    			<</if>>
-    		<</for>>
-    	<<elseif $children.length > 1>>
-    		has @@.lightgreen;two uncles, $children[0].slaveName, and $children[1].slaveName.@@
-    	<<elseif $children.length > 0>>
-    		has @@.lightgreen;an uncle, $children[0].slaveName.@@
-    	<</if>>
-    <</if>>
-    <<set $children = []>>
-    
-    /*testtest PC niece passage - determines how many nieces you have*/
-    <<for $i = 0; $i < $slaves.length; $i++>>
-    	<<if $slaves[$i].ID != $activeSlave.ID>>
-    		<<if areSisters($slaves[$i], $PC) == 1 || areSisters($slaves[$i], $PC) == 2>>
-    			<<if $slaves[$i].ID == $activeSlave.mother || $slaves[$i].ID == $activeSlave.father>>
-    				<<for $j = 0; $j < $slaves.length; $j++>>
-    					<<if $slaves[$i].ID != $slaves[$j].ID && $slaves[$j].ID != $activeSlave.ID && $slaves[$j].genes == "XX">>
-    						<<if $slaves[$i].ID == $slaves[$j].mother || $slaves[$i].ID == $slaves[$j].father>>
-    							<<set $children.push($slaves[$j])>>
-    						<</if>>
-    					<</if>>
-    				<</for>>
-    			<</if>>
-    		<</if>>
-    	<</if>>
-    <</for>>
-    <<if $activeSlave.genes == "XX" && $children.length > 0>>
-    	$He
-    	<<if $children.length > 2>>
-    		is @@.lightgreen;your niece along with
-    		<<for $j = 0; $j < $children.length; $j++>>
-    			<<if $j < $children.length-1>>
-    				$children[$j].slaveName,
-    			<<else>>
-    				and $children[$j].slaveName.@@
-    			<</if>>
-    		<</for>>
-    	<<elseif $children.length > 1>>
-    		is @@.lightgreen;your niece along with $children[0].slaveName.@@
-    	<<elseif $children.length > 0>>
-    		<<for $i = 0; $i < $slaves.length; $i++>>
-    			<<if $slaves[$i].ID != $activeSlave.ID && $activeSlave.genes == "XX">>
-    				<<if areSisters($slaves[$i], $PC) == 1 || areSisters($slaves[$i], $PC) == 2>>
-    					<<if $slaves[$i].ID == $activeSlave.mother || $slaves[$i].ID == $activeSlave.father>>
-    						is @@.lightgreen;your niece.@@
-    					<</if>>
-    				<</if>>
-    			<</if>>
-    		<</for>>
-    	<</if>>
-    <</if>>
-    <<set $children = []>>
-    
-    /* testtest niece passage - determines how many nieces a slave has*/
-    <<for $i = 0; $i < $slaves.length; $i++>>
-    	<<if $slaves[$i].ID != $activeSlave.ID>>
-    		<<if areSisters($slaves[$i], $activeSlave) == 1 || areSisters($slaves[$i], $activeSlave) == 2>>
-    			<<for $j = 0; $j < $slaves.length; $j++>>
-    				<<if $slaves[$i].ID != $slaves[$j].ID && $slaves[$j].ID != $activeSlave.ID && $slaves[$j].genes == "XX">>
-    					<<if $slaves[$i].ID == $slaves[$j].mother || $slaves[$i].ID == $slaves[$j].father>>
-    						<<set $children.push($slaves[$j])>>
-    					<</if>>
-    				<</if>>
-    			<</for>>
-    		<</if>>
-    	<</if>>
-    <</for>>
-    <<if $children.length > 0>>
-    	$He
-    	<<if $children.length > 2>>
-    		has @@.lightgreen;many nieces,
-    		<<for $j = 0; $j < $children.length; $j++>>
-    			<<if $j < $children.length-1>>
-    				$children[$j].slaveName,
-    			<<else>>
-    				and $children[$j].slaveName, who are your slaves.@@
-    			<</if>>
-    		<</for>>
-    	<<elseif $children.length > 1>>
-    		has @@.lightgreen;two nieces, $children[0].slaveName, and $children[1].slaveName, who are your slaves.@@
-    	<<elseif $children.length > 0>>
-    		has @@.lightgreen;a niece, $children[0].slaveName, who is your slave.@@
-    	<</if>>
-    <</if>>
-    <<set $children = []>>
-    
-    /*testtest PC nephew passage - determines how many nephews you have*/
-    <<for $i = 0; $i < $slaves.length; $i++>>
-    	<<if $slaves[$i].ID != $activeSlave.ID>>
-    		<<if areSisters($slaves[$i], $PC) == 1 || areSisters($slaves[$i], $PC) == 2>>
-    			<<if $slaves[$i].ID == $activeSlave.mother || $slaves[$i].ID == $activeSlave.father>>
-    				<<for $j = 0; $j < $slaves.length; $j++>>
-    					<<if $slaves[$i].ID != $slaves[$j].ID && $slaves[$j].ID != $activeSlave.ID && $slaves[$i].genes == "XY">>
-    						<<if $slaves[$i].ID == $slaves[$j].mother || $slaves[$i].ID == $slaves[$j].father>>
-    							<<set $children.push($slaves[$j])>>
-    						<</if>>
-    					<</if>>
-    				<</for>>
-    			<</if>>
-    		<</if>>
-    	<</if>>
-    <</for>>
-    <<if $activeSlave.genes == "XY" && $children.length > 0>>
-    	$He
-    	<<if $children.length > 2>>
-    		is @@.lightgreen;your nephew along with
-    		<<for $j = 0; $j < $children.length; $j++>>
-    			<<if $j < $children.length-1>>
-    				$children[$j].slaveName,
-    			<<else>>
-    				and $children[$j].slaveName.@@
-    			<</if>>
-    		<</for>>
-    	<<elseif $children.length > 1>>
-    		is @@.lightgreen;your nephew along with $children[0].slaveName.@@
-    	<<elseif $children.length > 0>>
-    		<<for $i = 0; $i < $slaves.length; $i++>>
-    			<<if $slaves[$i].ID != $activeSlave.ID && $activeSlave.genes == "XY">>
-    				<<if areSisters($slaves[$i], $PC) == 1 || areSisters($slaves[$i], $PC) == 2>>
-    					<<if $slaves[$i].ID == $activeSlave.mother || $slaves[$i].ID == $activeSlave.father>>
-    						is @@.lightgreen;your nephew.@@
-    					<</if>>
-    				<</if>>
-    			<</if>>
-    		<</for>>
-    	<</if>>
-    <</if>>
-    <<set $children = []>>
-    
-    /* testtest nephew passage - determines how many nephews a slave has*/
-    <<for $i = 0; $i < $slaves.length; $i++>>
-    	<<if $slaves[$i].ID != $activeSlave.ID>>
-    		<<if areSisters($slaves[$i], $activeSlave) == 1 || areSisters($slaves[$i], $activeSlave) == 2>>
-    			<<for $j = 0; $j < $slaves.length; $j++>>
-    				<<if $slaves[$i].ID != $slaves[$j].ID && $slaves[$j].ID != $activeSlave.ID && $slaves[$j].genes == "XY">>
-    					<<if $slaves[$i].ID == $slaves[$j].mother || $slaves[$i].ID == $slaves[$j].father>>
-    						<<set $children.push($slaves[$j])>>
-    					<</if>>
-    				<</if>>
-    			<</for>>
-    		<</if>>
-    	<</if>>
-    <</for>>
-    <<if $children.length > 0>>
-    	$He
-    	<<if $children.length > 2>>
-    		has @@.lightgreen;many nephews,
-    		<<for $j = 0; $j < $children.length; $j++>>
-    			<<if $j < $children.length-1>>
-    				$children[$j].slaveName,
-    			<<else>>
-    				and $children[$j].slaveName, who are your slaves.@@
-    			<</if>>
-    		<</for>>
-    	<<elseif $children.length > 1>>
-    		has @@.lightgreen;two nephews, $children[0].slaveName, and $children[1].slaveName, who are your slaves.@@
-    	<<elseif $children.length > 0>>
-    		has @@.lightgreen;a nephew, $children[0].slaveName, who is your slave.@@
-    	<</if>>
-    <</if>>
-    <<set $children = []>>
+	/*testtest maternal grandma passage - determines if the current slave has a maternal grandmother*/
+	<<set _mi = $slaveIndices[$activeSlave.mother]>>
+	<<set _fi = $slaveIndices[$activeSlave.father]>>
+	<<if def _mi>>
+		<<set _mmi = $slaveIndices[$slaves[_mi].mother]>>
+		<<set _fmi = $slaveIndices[$slaves[_mi].father]>>
+	<<elseif $PC.ID == $activeSlave.mother>>
+		<<set _mmi = $slaveIndices[$PC.mother]>>
+		<<set _fmi = $slaveIndices[$PC.father]>>
+	<</if>>
+	<<if def _fi>>
+		<<set _mfi = $slaveIndices[$slaves[_fi].mother]>>
+		<<set _ffi = $slaveIndices[$slaves[_fi].father]>>
+	<<elseif $PC.ID == $activeSlave.father>>
+		<<set _mfi = $slaveIndices[$PC.mother]>>
+		<<set _ffi = $slaveIndices[$PC.father]>>
+	<</if>>
+	<<if (def _mi || def _fi) && ndef _mmi && ndef _fmi && ndef _mfi && ndef _ffi>>
+		<<if def _mi>>
+			<<if def _fi && _mi == _fi>>
+				<<if $PC.ID == $slaves[_mi].mother && $PC.ID == $slaves[_fi].father>>
+					$He is @@.lightgreen;your grandchild.@@ You impregnated yourself with $his sole biological parent.
+				<<elseif $PC.ID == $slaves[_mi].mother>>
+					$He is @@.lightgreen;your grandchild.@@ You gave birth to $his sole biological parent.
+				<<elseif $PC.ID == $slaves[_fi].father>>
+					$He is @@.lightgreen;your grandchild.@@ You fathered $his sole biological parent.
+				<</if>>
+			<<elseif def _fi && $PC.ID == $slaves[_mi].mother && $PC.ID == $slaves[_fi].mother>>
+				$He is @@.lightgreen;your grandchild.@@ You gave birth to both of $his parents.
+			<<elseif def _fi && $PC.ID == $slaves[_mi].father && $PC.ID == $slaves[_fi].father>>
+				$He is @@.lightgreen;your grandchild.@@ You fathered both of $his parents.
+			<<elseif $PC.ID == $slaves[_mi].mother>>
+				$He is @@.lightgreen;your grandchild.@@ You gave birth to $his mother.
+			<<elseif $PC.ID == $slaves[_mi].father>>
+				$He is @@.lightgreen;your grandchild.@@ You fathered $his mother.
+			<</if>>
+		<<elseif def _fi>>
+			<<if $PC.ID == $slaves[_fi].mother>>
+				$He is @@.lightgreen;your grandchild.@@ You gave birth to $his father.
+			<<elseif $PC.ID == $slaves[_fi].father>>
+				$He is @@.lightgreen;your grandchild.@@ You fathered $his father.
+			<</if>>
+		<</if>>
+	<<else>>
+		<<if def _mmi && def _ffi && _mmi == _ffi>>
+			$His sole @@.lightgreen;grandparent is $slaves[_mmi].slaveName.@@
+		<<else>>
+			<<if def _mmi && def _mfi && _mmi == _mfi>>
+				$His sole @@.lightgreen;grandmother is $slaves[_mmi].slaveName.@@
+			<<else>>
+				<<if def _mmi>>
+					$His maternal @@.lightgreen;grandmother is $slaves[_mmi].slaveName.@@
+				<</if>>
+				<<if def _mfi>>
+					$His paternal @@.lightgreen;grandmother is $slaves[_mfi].slaveName.@@
+				<</if>>
+			<</if>>
+			<<if def _fmi && def _ffi && _fmi == _ffi>>
+				$His sole @@.lightgreen;grandfather is $slaves[_ffi].slaveName.@@
+			<<else>>
+				<<if def _fmi>>
+					$His maternal @@.lightgreen;grandfather is $slaves[_fmi].slaveName.@@
+				<</if>>
+				<<if _ffi>>
+					$His paternal @@.lightgreen;grandfather is $slaves[_ffi].slaveName.@@
+				<</if>>
+			<</if>>
+		<</if>>
+	<</if>>
+
+
+	/*testtest PC grandparents passage - determines if the current slave is your grandparent*/
+	<<set _pcMother = $slaveIndices[$PC.mother]>>
+	<<set _pcFather = $slaveIndices[$PC.father]>>
+	<<if def _pcMother>>
+		<<if def _pcFather && _pcMother == _pcFather>>
+			<<if $activeSlave.ID == $slaves[_pcMother].mother && $activeSlave.ID == $slaves[_pcFather].father>>
+				$He is @@.lightgreen;your sole grandparent.@@ $He impregnated $himself with your mother/father who in turn impregnated themselves with you.
+			<<elseif $activeSlave.ID == $slaves[_pcMother].mother>>
+				$He is @@.lightgreen;your sole grandmother.@@ $He gave birth to $slaves[_pcMother].slaveName who in turn impregnated themselves with you.
+			<<elseif $activeSlave.ID == $slaves[_pcFather].father>>
+				$He is @@.lightgreen;your sole grandfather.@@ $He fathered $slaves[_pcFather].slaveName who in turn impregnated themselves with you.
+			<</if>>
+		<<elseif def _pcFather && $activeSlave.ID == $slaves[_pcMother].mother && $activeSlave.ID == $slaves[_pcFather].mother>>
+			$He is @@.lightgreen;your sole grandmother.@@ $He gave birth to both of your parents, $slaves[_pcMother].slaveName and $slaves[_pcFather].slaveName.
+		<<elseif def _pcFather && $activeSlave.ID == $slaves[_pcMother].father && $activeSlave.ID == $slaves[_pcFather].father>>
+			$He is @@.lightgreen;your sole grandfather.@@ $He fathered both of your parents, $slaves[_pcFather].slaveName and $slaves[_pcMother].slaveName.
+		<<elseif $activeSlave.ID == $slaves[_pcMother].mother>>
+			$He is @@.lightgreen;your maternal grandmother.@@
+		<<elseif $activeSlave.ID == $slaves[_pcMother].father>>
+			$He is @@.lightgreen;your maternal grandfather.@@
+		<</if>>
+	<<elseif def _pcFather>>
+		<<if $activeSlave.ID == $slaves[_pcFather].mother>>
+			$He is @@.lightgreen;your paternal grandmother.@@
+		<<elseif $activeSlave.ID == $slaves[_pcFather].father>>
+			$He is @@.lightgreen;your paternal grandfather.@@
+		<</if>>
+	<</if>>
+
+	/*testtest grandchild passage - determines how many grandchildren the current slave has*/
+	<<for $i = 0; $i < $slaves.length; $i++>>
+		<<if $slaves[$i].ID != $activeSlave.ID>>
+		<<if $activeSlave.ID == $slaves[$i].mother || $activeSlave.ID == $slaves[$i].father>>
+			<<for $j = 0; $j < $slaves.length; $j++>>
+				<<if $slaves[$i].ID != $slaves[$j].ID>>
+				<<if $slaves[$i].ID == $slaves[$j].mother || $slaves[$i].ID == $slaves[$j].father>>
+					<<set $children.push($slaves[$j])>>
+				<</if>>
+				<</if>>
+			<</for>>
+		<</if>>
+		<</if>>
+	<</for>>
+	<<if $children.length > 0>>
+		$He
+	<<if $children.length > 2>>
+		has @@.lightgreen;many grandchildren,
+		<<for $j = 0; $j < $children.length; $j++>>
+			<<if $j < $children.length-1>>
+				$children[$j].slaveName,
+			<<else>>
+				and $children[$j].slaveName amongst your slaves.@@
+			<</if>>
+		<</for>>
+	<<elseif $children.length > 1>>
+		has @@.lightgreen;two grandchildren, $children[0].slaveName, and $children[1].slaveName as your slaves.@@
+	<<elseif $children.length > 0>>
+		has a @@.lightgreen;grandchild, $children[0].slaveName as your slave.@@
+	<</if>>
+	<</if>>
+	<<set $children = []>>
+
+	/*testtest PC aunt passage - determines how many aunts you have*/
+	<<for $i = 0; $i < $slaves.length; $i++>>
+		<<if $slaves[$i].ID != $activeSlave.ID>>
+		<<if areSisters($slaves[$i], $activeSlave) == 1 || areSisters($slaves[$i], $activeSlave) == 2>>
+		<<if $slaves[$i].ID == $PC.mother || $slaves[$i].ID == $PC.father>>
+			<<for $j = 0; $j < $slaves.length; $j++>>
+				<<if $slaves[$i].ID != $slaves[$j].ID>>
+				<<if $slaves[$j].genes == "XX">>
+				<<if areSisters($slaves[$j], $activeSlave) == 1 || areSisters($slaves[$j], $activeSlave) == 2>>
+					<<set $children.push($slaves[$j])>>
+				<</if>>
+				<</if>>
+				<</if>>
+			<</for>>
+		<</if>>
+		<</if>>
+		<</if>>
+	<</for>>
+	<<if $activeSlave.genes == "XX" && $children.length > 0>>
+		$He
+		<<if $children.length > 2>>
+			is @@.lightgreen;your aunt along with
+			<<for $j = 0; $j < $children.length; $j++>>
+				<<if $j < $children.length-1>>
+					$children[$j].slaveName,
+				<<else>>
+					and $children[$j].slaveName.@@
+				<</if>>
+			<</for>>
+		<<elseif $children.length > 1>>
+			is @@.lightgreen;your aunt along with $children[0].slaveName.@@
+		<<elseif $children.length > 0>>
+			<<for $i = 0; $i < $slaves.length; $i++>>
+				<<if $slaves[$i].ID != $activeSlave.ID && $activeSlave.genes == "XX">>
+				<<if areSisters($slaves[$i], $activeSlave) == 1 || areSisters($slaves[$i], $activeSlave) == 2>>
+				<<if $slaves[$i].ID == $PC.mother || $slaves[$i].ID == $PC.father>>
+					$He is @@.lightgreen;your aunt.@@
+				<</if>>
+				<</if>>
+				<</if>>
+			<</for>>
+		<</if>>
+	<</if>>
+	<<set $children = []>>
+
+	/*testtest PC uncle passage - determines how many uncles you have*/
+	<<for $i = 0; $i < $slaves.length; $i++>>
+		<<if $slaves[$i].ID != $activeSlave.ID>>
+			<<if areSisters($slaves[$i], $activeSlave) == 1 || areSisters($slaves[$i], $activeSlave) == 2>>
+				<<if $slaves[$i].ID == $PC.mother || $slaves[$i].ID == $PC.father>>
+					<<for $j = 0; $j < $slaves.length; $j++>>
+						<<if $slaves[$i].ID != $slaves[$j].ID && $slaves[$j].dick > 0 && $slaves[$j].genes == "XY">>
+							<<if areSisters($slaves[$j], $activeSlave) == 1 || areSisters($slaves[$j], $activeSlave) == 2>>
+								<<set $children.push($slaves[$j])>>
+							<</if>>
+						<</if>>
+					<</for>>
+				<</if>>
+			<</if>>
+		<</if>>
+	<</for>>
+	<<if $activeSlave.genes == "XY" && $children.length > 0>>
+		$He
+		<<if $children.length > 2>>
+			is @@.lightgreen;your uncle along with
+			<<for $j = 0; $j < $children.length; $j++>>
+				<<if $j < $children.length-1>>
+					$children[$j].slaveName,
+				<<else>>
+					and $children[$j].slaveName.@@
+				<</if>>
+			<</for>>
+		<<elseif $children.length > 1>>
+			is @@.lightgreen;your uncle along with $children[0].slaveName.@@
+		<<elseif $children.length > 0>>
+			<<for $i = 0; $i < $slaves.length; $i++>>
+				<<if $slaves[$i].ID != $activeSlave.ID && $activeSlave.genes == "XY">>
+					<<if areSisters($slaves[$i], $activeSlave) == 1 || areSisters($slaves[$i], $activeSlave) == 2>>
+						<<if $slaves[$i].ID == $PC.mother || $slaves[$i].ID == $PC.father>>
+							$He is @@.lightgreen;your uncle.@@
+						<</if>>
+					<</if>>
+				<</if>>
+			<</for>>
+		<</if>>
+	<</if>>
+	<<set $children = []>>
+
+	/*testtest aunt passage - determines how many aunts a slave has*/
+	<<for $i = 0; $i < $slaves.length; $i++>>
+		<<if $slaves[$i].ID != $activeSlave.ID>>
+			<<if $slaves[$i].ID == $activeSlave.mother || $slaves[$i].ID == $activeSlave.father>>
+				<<for $j = 0; $j < $slaves.length; $j++>>
+					<<if $slaves[$j].genes == "XX">>
+						<<if areSisters($slaves[$j], $slaves[$i]) == 1 || areSisters($slaves[$j], $slaves[$i]) == 2>>
+							<<set $children.push($slaves[$j])>>
+						<</if>>
+					<</if>>
+				<</for>>
+			<</if>>
+		<</if>>
+	<</for>>
+	<<if $children.length > 0>>
+		$He
+		<<if $children.length > 2>>
+			has @@.lightgreen;many aunts,
+			<<for $j = 0; $j < $children.length; $j++>>
+				<<if $j < $children.length-1>>
+					$children[$j].slaveName,
+				<<else>>
+					and $children[$j].slaveName.@@
+				<</if>>
+			<</for>>
+		<<elseif $children.length > 1>>
+			has @@.lightgreen;two aunts, $children[0].slaveName, and $children[1].slaveName.@@
+		<<elseif $children.length > 0>>
+			has @@.lightgreen;an aunt, $children[0].slaveName.@@
+		<</if>>
+	<</if>>
+	<<set $children = []>>
+
+	/*testtest uncle passage - determines how many uncles a slave has*/
+	<<for $i = 0; $i < $slaves.length; $i++>>
+		<<if $slaves[$i].ID != $activeSlave.ID>>
+			<<if $slaves[$i].ID == $activeSlave.mother || $slaves[$i].ID == $activeSlave.father>>
+				<<for $j = 0; $j < $slaves.length; $j++>>
+					<<if $slaves[$j].genes == "XY">>
+						<<if areSisters($slaves[$j], $slaves[$i]) == 1 || areSisters($slaves[$j], $slaves[$i]) == 2>>
+							<<set $children.push($slaves[$j])>>
+						<</if>>
+					<</if>>
+				<</for>>
+			<</if>>
+		<</if>>
+	<</for>>
+	<<if $children.length > 0>>
+		$He
+		<<if $children.length > 2>>
+			has @@.lightgreen;many uncles,
+			<<for $j = 0; $j < $children.length; $j++>>
+				<<if $j < $children.length-1>>
+					$children[$j].slaveName,
+				<<else>>
+					and $children[$j].slaveName.@@
+				<</if>>
+			<</for>>
+		<<elseif $children.length > 1>>
+			has @@.lightgreen;two uncles, $children[0].slaveName, and $children[1].slaveName.@@
+		<<elseif $children.length > 0>>
+			has @@.lightgreen;an uncle, $children[0].slaveName.@@
+		<</if>>
+	<</if>>
+	<<set $children = []>>
+
+	/*testtest PC niece passage - determines how many nieces you have*/
+	<<for $i = 0; $i < $slaves.length; $i++>>
+		<<if $slaves[$i].ID != $activeSlave.ID>>
+			<<if areSisters($slaves[$i], $PC) == 1 || areSisters($slaves[$i], $PC) == 2>>
+				<<if $slaves[$i].ID == $activeSlave.mother || $slaves[$i].ID == $activeSlave.father>>
+					<<for $j = 0; $j < $slaves.length; $j++>>
+						<<if $slaves[$i].ID != $slaves[$j].ID && $slaves[$j].ID != $activeSlave.ID && $slaves[$j].genes == "XX">>
+							<<if $slaves[$i].ID == $slaves[$j].mother || $slaves[$i].ID == $slaves[$j].father>>
+								<<set $children.push($slaves[$j])>>
+							<</if>>
+						<</if>>
+					<</for>>
+				<</if>>
+			<</if>>
+		<</if>>
+	<</for>>
+	<<if $activeSlave.genes == "XX" && $children.length > 0>>
+		$He
+		<<if $children.length > 2>>
+			is @@.lightgreen;your niece along with
+			<<for $j = 0; $j < $children.length; $j++>>
+				<<if $j < $children.length-1>>
+					$children[$j].slaveName,
+				<<else>>
+					and $children[$j].slaveName.@@
+				<</if>>
+			<</for>>
+		<<elseif $children.length > 1>>
+			is @@.lightgreen;your niece along with $children[0].slaveName.@@
+		<<elseif $children.length > 0>>
+			<<for $i = 0; $i < $slaves.length; $i++>>
+				<<if $slaves[$i].ID != $activeSlave.ID && $activeSlave.genes == "XX">>
+					<<if areSisters($slaves[$i], $PC) == 1 || areSisters($slaves[$i], $PC) == 2>>
+						<<if $slaves[$i].ID == $activeSlave.mother || $slaves[$i].ID == $activeSlave.father>>
+							is @@.lightgreen;your niece.@@
+						<</if>>
+					<</if>>
+				<</if>>
+			<</for>>
+		<</if>>
+	<</if>>
+	<<set $children = []>>
+
+	/* testtest niece passage - determines how many nieces a slave has*/
+	<<for $i = 0; $i < $slaves.length; $i++>>
+		<<if $slaves[$i].ID != $activeSlave.ID>>
+			<<if areSisters($slaves[$i], $activeSlave) == 1 || areSisters($slaves[$i], $activeSlave) == 2>>
+				<<for $j = 0; $j < $slaves.length; $j++>>
+					<<if $slaves[$i].ID != $slaves[$j].ID && $slaves[$j].ID != $activeSlave.ID && $slaves[$j].genes == "XX">>
+						<<if $slaves[$i].ID == $slaves[$j].mother || $slaves[$i].ID == $slaves[$j].father>>
+							<<set $children.push($slaves[$j])>>
+						<</if>>
+					<</if>>
+				<</for>>
+			<</if>>
+		<</if>>
+	<</for>>
+	<<if $children.length > 0>>
+		$He
+		<<if $children.length > 2>>
+			has @@.lightgreen;many nieces,
+			<<for $j = 0; $j < $children.length; $j++>>
+				<<if $j < $children.length-1>>
+					$children[$j].slaveName,
+				<<else>>
+					and $children[$j].slaveName, who are your slaves.@@
+				<</if>>
+			<</for>>
+		<<elseif $children.length > 1>>
+			has @@.lightgreen;two nieces, $children[0].slaveName, and $children[1].slaveName, who are your slaves.@@
+		<<elseif $children.length > 0>>
+			has @@.lightgreen;a niece, $children[0].slaveName, who is your slave.@@
+		<</if>>
+	<</if>>
+	<<set $children = []>>
+
+	/*testtest PC nephew passage - determines how many nephews you have*/
+	<<for $i = 0; $i < $slaves.length; $i++>>
+		<<if $slaves[$i].ID != $activeSlave.ID>>
+			<<if areSisters($slaves[$i], $PC) == 1 || areSisters($slaves[$i], $PC) == 2>>
+				<<if $slaves[$i].ID == $activeSlave.mother || $slaves[$i].ID == $activeSlave.father>>
+					<<for $j = 0; $j < $slaves.length; $j++>>
+						<<if $slaves[$i].ID != $slaves[$j].ID && $slaves[$j].ID != $activeSlave.ID && $slaves[$i].genes == "XY">>
+							<<if $slaves[$i].ID == $slaves[$j].mother || $slaves[$i].ID == $slaves[$j].father>>
+								<<set $children.push($slaves[$j])>>
+							<</if>>
+						<</if>>
+					<</for>>
+				<</if>>
+			<</if>>
+		<</if>>
+	<</for>>
+	<<if $activeSlave.genes == "XY" && $children.length > 0>>
+		$He
+		<<if $children.length > 2>>
+			is @@.lightgreen;your nephew along with
+			<<for $j = 0; $j < $children.length; $j++>>
+				<<if $j < $children.length-1>>
+					$children[$j].slaveName,
+				<<else>>
+					and $children[$j].slaveName.@@
+				<</if>>
+			<</for>>
+		<<elseif $children.length > 1>>
+			is @@.lightgreen;your nephew along with $children[0].slaveName.@@
+		<<elseif $children.length > 0>>
+			<<for $i = 0; $i < $slaves.length; $i++>>
+				<<if $slaves[$i].ID != $activeSlave.ID && $activeSlave.genes == "XY">>
+					<<if areSisters($slaves[$i], $PC) == 1 || areSisters($slaves[$i], $PC) == 2>>
+						<<if $slaves[$i].ID == $activeSlave.mother || $slaves[$i].ID == $activeSlave.father>>
+							is @@.lightgreen;your nephew.@@
+						<</if>>
+					<</if>>
+				<</if>>
+			<</for>>
+		<</if>>
+	<</if>>
+	<<set $children = []>>
+
+	/* testtest nephew passage - determines how many nephews a slave has*/
+	<<for $i = 0; $i < $slaves.length; $i++>>
+		<<if $slaves[$i].ID != $activeSlave.ID>>
+			<<if areSisters($slaves[$i], $activeSlave) == 1 || areSisters($slaves[$i], $activeSlave) == 2>>
+				<<for $j = 0; $j < $slaves.length; $j++>>
+					<<if $slaves[$i].ID != $slaves[$j].ID && $slaves[$j].ID != $activeSlave.ID && $slaves[$j].genes == "XY">>
+						<<if $slaves[$i].ID == $slaves[$j].mother || $slaves[$i].ID == $slaves[$j].father>>
+							<<set $children.push($slaves[$j])>>
+						<</if>>
+					<</if>>
+				<</for>>
+			<</if>>
+		<</if>>
+	<</for>>
+	<<if $children.length > 0>>
+		$He
+		<<if $children.length > 2>>
+			has @@.lightgreen;many nephews,
+			<<for $j = 0; $j < $children.length; $j++>>
+				<<if $j < $children.length-1>>
+					$children[$j].slaveName,
+				<<else>>
+					and $children[$j].slaveName, who are your slaves.@@
+				<</if>>
+			<</for>>
+		<<elseif $children.length > 1>>
+			has @@.lightgreen;two nephews, $children[0].slaveName, and $children[1].slaveName, who are your slaves.@@
+		<<elseif $children.length > 0>>
+			has @@.lightgreen;a nephew, $children[0].slaveName, who is your slave.@@
+		<</if>>
+	<</if>>
+	<<set $children = []>>
 <</if>> /* end distant relatives toggle check */
 
 /*testtest PC sibling passages - determines how many siblings you have
@@ -573,11 +573,11 @@
 		<<run ($slaves[_efw].genes == 'XX' ? _halfsisters : _halfbrothers).push($slaves[_efw])>>
 	<</if>>
 	<<if def $showDistantRelatives && $showDistantRelatives == 1>>
-	    <<set _cousinCheck = areCousins($slaves[_efw], $activeSlave)>>
-    	<<if _cousinCheck == true>>
-    		<<run _cousins.push($slaves[_efw])>>
-    	<</if>>
-    <</if>>
+		<<set _cousinCheck = areCousins($slaves[_efw], $activeSlave)>>
+		<<if _cousinCheck == true>>
+			<<run _cousins.push($slaves[_efw])>>
+		<</if>>
+	<</if>>
 <</for>>
 
 /*testtest PC twin passages - determines how many twins you have but not implemented yet*/
@@ -707,37 +707,37 @@
 <</if>>
 
 <<if def $showDistantRelatives && $showDistantRelatives == 1>>
-    /*testtest PC cousin passage - determines how many cousins you have*/
-    <<if areCousins($activeSlave, $PC)>>
-    	$He
-    	<<if _cousins.length > 1>>
-    		@@.lightgreen;is your cousin along with <<print _cousins.reduce(function(res, ch, i, arr) { return (res.slaveName || res) + (i == arr.length - 1 ? ' and ' : ', ') + ch.slaveName; })>>.@@
-    	<<elseif _cousins.length > 0>>
-    		is @@.lightgreen;your cousin along with _sisters[0].slaveName.@@
-    	<<else>>
-    		is @@.lightgreen;your cousin.@@
-    	<</if>>
-    <</if>>
-    
-    /*testtest cousin - determines how many cousins a slave has*/
-    <<set _children = $slaves.filter(function(s) { return s.ID != $activeSlave.ID && areCousins($activeSlave, s)})>>
-    <<if _children.length > 2>>
-    	@@.lightgreen;
-    	<<for _efw = 0; _efw < _children.length; _efw++>>
-    		<<if _efw < _children.length-1>>
-    			_children[_efw].slaveName,
-    		<<else>>
-    			and _children[_efw].slaveName
-    		<</if>>
-    	<</for>>
-    	are cousins to $him.@@
-    <<elseif _children.length > 1>>
-    	@@.lightgreen;_children[0].slaveName and _children[1].slaveName are cousins to $him.@@
-    <<elseif _children.length > 0>>
-    	@@.lightgreen;_children[0].slaveName is a cousin to $him.@@
-    <</if>>
+	/*testtest PC cousin passage - determines how many cousins you have*/
+	<<if areCousins($activeSlave, $PC)>>
+		$He
+		<<if _cousins.length > 1>>
+			@@.lightgreen;is your cousin along with <<print _cousins.reduce(function(res, ch, i, arr) { return (res.slaveName || res) + (i == arr.length - 1 ? ' and ' : ', ') + ch.slaveName; })>>.@@
+		<<elseif _cousins.length > 0>>
+			is @@.lightgreen;your cousin along with _sisters[0].slaveName.@@
+		<<else>>
+			is @@.lightgreen;your cousin.@@
+		<</if>>
+	<</if>>
+
+	/*testtest cousin - determines how many cousins a slave has*/
+	<<set _children = $slaves.filter(function(s) { return s.ID != $activeSlave.ID && areCousins($activeSlave, s)})>>
+	<<if _children.length > 2>>
+		@@.lightgreen;
+		<<for _efw = 0; _efw < _children.length; _efw++>>
+			<<if _efw < _children.length-1>>
+				_children[_efw].slaveName,
+			<<else>>
+				and _children[_efw].slaveName
+			<</if>>
+		<</for>>
+		are cousins to $him.@@
+	<<elseif _children.length > 1>>
+		@@.lightgreen;_children[0].slaveName and _children[1].slaveName are cousins to $him.@@
+	<<elseif _children.length > 0>>
+		@@.lightgreen;_children[0].slaveName is a cousin to $him.@@
+	<</if>>
 <</if>> /* end distant relatives toggle check */
-    
+
 <<if $activeSlave.clone != 0>>
 	$He is
 	<<if $activeSlave.cloneID == -1>>