diff --git a/src/facilities/nursery/longChildDescription.tw b/src/facilities/nursery/longChildDescription.tw
index 05e679819e625d17ee400a28cc0408958f21653e..149ea8e58b9fb1c1485833a54cae5aac009735b0 100644
--- a/src/facilities/nursery/longChildDescription.tw
+++ b/src/facilities/nursery/longChildDescription.tw
@@ -1272,7 +1272,7 @@ $He is
 	<<if $activeChild.markings == "birthmark" && $activeChild.prestige == 0 && $activeChild.pornPrestige < 2>>
 		$He has a large, liver-colored birthmark, detracting from $his beauty.
 	<</if>>
-	<<if ($activeChild.skin == "tan") && ($activeChild.origSkin != "tan")>>
+	<<if (skinToneLevel($activeChild.skin) > skinToneLevel($activeChild.origSkin))>>
 		<<if ($activeChild.releaseRules != "restrictive" && $activeChild.releaseRules != "masturbation" && $activeChild.releaseRules != "chastity")>>
 			<<if ($activeChild.fetishStrength > 60) && ($activeChild.fetishKnown == 1)>>
 				$His tan is slightly uneven, since $he enjoys
@@ -1314,7 +1314,7 @@ $He is
 	<<if ($activeChild.hColor == "red")>>
 		<<if ($activeChild.hLength >= 10)>>
 			<<if ($activeChild.markings == "freckles") || ($activeChild.markings == "heavily freckled")>>
-				<<if ($activeChild.skin == "pale") || ($activeChild.skin == "fair")>>
+				<<if (skinToneLevel($activeSlave.skin) > 5) && (skinToneLevel($activeSlave.skin) < 10)>>
 					It goes perfectly with $his $activeChild.skin skin and freckles.
 				<</if>>
 			<</if>>
diff --git a/src/js/generateNewSlaveJS.js b/src/js/generateNewSlaveJS.js
index 1c901d3acca1d6e1f9df91873565be6d9b858ebb..a7cd81d5b5fcd8d81e8938cb368a1cc0624a223b 100644
--- a/src/js/generateNewSlaveJS.js
+++ b/src/js/generateNewSlaveJS.js
@@ -1359,7 +1359,7 @@ window.GenerateNewSlave = (function() {
 					slave.geneticQuirks.heterochromia = jsEither(["blue", "brown", "green"]);
 				}
 		}
-		if (slave.skin === "pale" || slave.skin === "fair") {
+		if (skinToneLevel(slave.skin) < 10) {
 			if (jsRandom(1, 4) === 1) {
 				slave.markings = jsEither(["beauty mark", "beauty mark", "birthmark", "birthmark", "freckles", "freckles", "freckles", "heavily freckled"]);
 			}
diff --git a/src/js/slaveCostJS.js b/src/js/slaveCostJS.js
index 829f261ef3ba828e902d8b9f4e9aab5fef5c2803..73cc00cd4d200fe4d1944db222580848f1cd5252 100644
--- a/src/js/slaveCostJS.js
+++ b/src/js/slaveCostJS.js
@@ -210,7 +210,7 @@ window.Beauty = (function() {
 				break;
 			case "freckles":
 			case "heavily freckled":
-				if (slave.skin === "pale" || slave.skin === "fair") {
+				if (skinToneLevel(slave.skin) < 10) {
 					beauty += 2;
 					if (slave.hColor === "red") {
 						beauty += 2;
diff --git a/src/js/storyJS.js b/src/js/storyJS.js
index 6fac9f460ef408594025b6afe0fd9f2c9f444ca1..0996ffc34a645f6b6a60a182f37e244459747c99 100644
--- a/src/js/storyJS.js
+++ b/src/js/storyJS.js
@@ -371,19 +371,19 @@ window.toJson = function(obj) {
 
 window.nippleColor = /** @param {App.Entity.SlaveState} slave */ function (slave) {
 	slave = slave || State.variables.activeSlave;
-	if (slave.skin === 'tanned' || slave.skin === 'fair') {
+	if (skinToneLevel(slave.skin) < 8) {
 		if (slave.preg > slave.pregData.normalBirth/4 || (slave.birthsTotal > 0 && slave.lactation > 0)) {
-			return 'dark brown';
+			return 'brown';
 		} else {
 			return 'pink';
 		}
-	} else if ((slave.skin === 'pale' || slave.race === 'white')) {
+	} else if (skinToneLevel(slave.skin) < 14) {
 		if (slave.preg > slave.pregData.normalBirth/4 || (slave.birthsTotal > 0 && slave.lactation > 0)) {
-			return 'brown';
+			return 'dark brown';
 		} else {
 			return 'pink';
 		}
-	} else if ((slave.skin === 'brown' || slave.race === 'black')) {
+	} else if (skinToneLevel(slave.skin) > 20) {
 		if (slave.preg > slave.pregData.normalBirth/4 || (slave.birthsTotal > 0 && slave.lactation > 0)) {
 			return 'black';
 		} else {
diff --git a/src/js/utilJS.js b/src/js/utilJS.js
index 35f4353277e67e133bf07d7e990965983841d9bd..c33319d24e365aa851fe64c25f9cd1de396ad08f 100644
--- a/src/js/utilJS.js
+++ b/src/js/utilJS.js
@@ -1663,6 +1663,39 @@ window.randomRaceHair = function(raceName)
 	return hair;
 };
 
+window.skinToneLevel = function(skinTone)
+{
+	let skinToMelanin = {
+		"pure black": 25,
+		"ebony": 24,
+		"black": 23,
+		"dark brown": 22,
+		"brown": 21,
+		"light brown": 20,
+		"dark beige": 19,
+		"beige": 18,
+		"light beige": 17,
+		"dark": 16,
+		"dark olive": 15,
+		"bronze": 14,
+		"olive": 13,
+		"tan": 12,
+		"light olive": 11,
+		"light": 10,
+		"fair": 9,
+		"very fair": 8,
+		"extremely fair": 7,
+		"pale": 6,
+		"very pale": 5,
+		"extremely pale": 4,
+		"white": 3,
+		"ivory": 2,
+		"pure white": 1
+	};
+	let skinNumber = skinToMelanin[skinTone];
+	return skinNumber;
+};
+
 window.changeSkinTone = function(skin, value)
 {
 	let skinToMelanin = {
diff --git a/src/pregmod/fFeet.tw b/src/pregmod/fFeet.tw
index 0c80bc675a7cc29232df385faf2fbabe6c4bda62..adfe0fa5875428e46daff281d9c9c702572a68eb 100644
--- a/src/pregmod/fFeet.tw
+++ b/src/pregmod/fFeet.tw
@@ -6,40 +6,40 @@
 <<set _footSeed = random(1,100)>>
 
 <<if $activeSlave.weight > 190>>
-	<<set _thighs = 'massive flabby'>>
+	<<set _thighs = "massive flabby">>
 <<elseif $activeSlave.weight > 160>>
-	<<set _thighs = 'thick flabby'>>
+	<<set _thighs = "thick flabby">>
 <<elseif $activeSlave.weight > 130>>
-	<<set _thighs = 'flabby'>>
+	<<set _thighs = "flabby">>
 <<elseif $activeSlave.weight > 95>>
-	<<set _thighs = 'fat'>>
+	<<set _thighs = "fat">>
 <<elseif $activeSlave.weight > 30>>
 	<<if $activeSlave.muscles > 75>>
-		<<set _thighs = 'toned fat'>>
+		<<set _thighs = "toned fat">>
 	<<elseif $activeSlave.muscles < 15>>
-		<<set _thighs = 'fat'>>
+		<<set _thighs = "fat">>
 	<<else>>
-		<<set _thighs = 'plush'>>
+		<<set _thighs = "plush">>
 	<</if>>
 <<elseif $activeSlave.weight > 10>>
 	<<if $activeSlave.muscles > 70>>
-		<<set _thighs = 'thick muscular'>>
+		<<set _thighs = "thick muscular">>
 	<<elseif $activeSlave.muscles > 20>>
-		<<set _thighs = 'soft toned'>>
+		<<set _thighs = "soft toned">>
 	<<else>>
-		<<set _thighs = 'soft'>>
+		<<set _thighs = "soft">>
 	<</if>>
 <<elseif $activeSlave.weight >= -10>>
 	<<if $activeSlave.muscles > 70>>
-		<<set _thighs = 'muscular'>>
+		<<set _thighs = "muscular">>
 	<<elseif $activeSlave.muscles > 20>>
-		<<set _thighs = 'toned'>>
+		<<set _thighs = "toned">>
 	<<else>>
-		<<set _thighs = 'average'>>
+		<<set _thighs = "average">>
 	<</if>>
 <<elseif $activeSlave.weight >= -30>>
 	<<if $activeSlave.muscles > 40>>
-		<<set _thighs = 'thin muscular'>>
+		<<set _thighs = "thin muscular">>
 	<<elseif $activeSlave.muscles > 20>>
 		<<set _thighs = "toned model's">>
 	<<else>>
@@ -47,9 +47,9 @@
 	<</if>>
 <<else>>
 	<<if $activeSlave.muscles > 5>>
-		<<set _thighs = 'emaciated toned'>>
+		<<set _thighs = "emaciated toned">>
 	<<else>>
-		<<set _thighs = 'emaciated'>>
+		<<set _thighs = "emaciated">>
 	<</if>>
 <</if>>
 
@@ -60,163 +60,163 @@
 <</if>>
 
 <<if $activeSlave.height >= 185>>
-	<<set _legs = 'wonderfully long'>>
+	<<set _legs = "wonderfully long">>
 <<elseif $activeSlave.height >= 170>>
-	<<set _legs = 'long'>>
+	<<set _legs = "long">>
 <<elseif $activeSlave.height >= 160>>
-	<<set _legs = 'nice'>>
+	<<set _legs = "nice">>
 <<elseif $activeSlave.height >= 150>>
-	<<set _legs = 'short'>>
+	<<set _legs = "short">>
 <<else>>
-	<<set _legs = 'short little'>>
+	<<set _legs = "short little">>
 <</if>>
 
 <<if $activeSlave.boobs >= 30000>>
-	<<set _boobsa = 'skip'>>
-	<<set _boobs = 'room filling'>>
+	<<set _boobsa = "skip">>
+	<<set _boobs = "room filling">>
 <<elseif $activeSlave.boobs >= 20000>>
-	<<set _boobsa = 'beanbag sized'>>
+	<<set _boobsa = "beanbag sized">>
 <<elseif $activeSlave.boobs >= 8500>>
-	<<set _boobsa = 'obscenely massive'>>
+	<<set _boobsa = "obscenely massive">>
 <<elseif $activeSlave.boobs >= 8000>>
-	<<set _boobsa = 'Z-cup'>>
+	<<set _boobsa = "Z-cup">>
 <<elseif $activeSlave.boobs >= 7500>>
-	<<set _boobsa = 'Y-cup'>>
+	<<set _boobsa = "Y-cup">>
 <<elseif $activeSlave.boobs >= 7000>>
-	<<set _boobsa = 'X-cup'>>
+	<<set _boobsa = "X-cup">>
 <<elseif $activeSlave.boobs >= 6500>>
-	<<set _boobsa = 'V-cup'>>
+	<<set _boobsa = "V-cup">>
 <<elseif $activeSlave.boobs >= 5500>>
-	<<set _boobsa = 'U-cup'>>
+	<<set _boobsa = "U-cup">>
 <<elseif $activeSlave.boobs >= 5100>>
-	<<set _boobsa = 'T-cup'>>
+	<<set _boobsa = "T-cup">>
 <<elseif $activeSlave.boobs >= 4700>>
-	<<set _boobsa = 'S-cup'>>
+	<<set _boobsa = "S-cup">>
 <<elseif $activeSlave.boobs >= 4300>>
-	<<set _boobsa = 'R-cup'>>
+	<<set _boobsa = "R-cup">>
 <<elseif $activeSlave.boobs >= 3950>>
-	<<set _boobsa = 'Q-cup'>>
+	<<set _boobsa = "Q-cup">>
 <<elseif $activeSlave.boobs >= 3600>>
-	<<set _boobsa = 'P-cup'>>
+	<<set _boobsa = "P-cup">>
 <<elseif $activeSlave.boobs >= 3250>>
-	<<set _boobsa = 'O-cup'>>
+	<<set _boobsa = "O-cup">>
 <<elseif $activeSlave.boobs >= 2900>>
-	<<set _boobsa = 'N-cup'>>
+	<<set _boobsa = "N-cup">>
 <<elseif $activeSlave.boobs >= 2600>>
-	<<set _boobsa = 'M-cup'>>
+	<<set _boobsa = "M-cup">>
 <<elseif $activeSlave.boobs >= 2300>>
-	<<set _boobsa = 'L-cup'>>
+	<<set _boobsa = "L-cup">>
 <<elseif $activeSlave.boobs >= 2050>>
-	<<set _boobsa = 'K-cup'>>
+	<<set _boobsa = "K-cup">>
 <<elseif $activeSlave.boobs >= 1800>>
-	<<set _boobsa = 'J-cup'>>
+	<<set _boobsa = "J-cup">>
 <<elseif $activeSlave.boobs >= 1600>>
-	<<set _boobsa = 'I-cup'>>
+	<<set _boobsa = "I-cup">>
 <<elseif $activeSlave.boobs >= 1400>>
-	<<set _boobsa = 'H-cup'>>
+	<<set _boobsa = "H-cup">>
 <<elseif $activeSlave.boobs >= 1200>>
-	<<set _boobsa = 'G-cup'>>
+	<<set _boobsa = "G-cup">>
 <<elseif $activeSlave.boobs >= 1000>>
-	<<set _boobsa = 'F-cup'>>
+	<<set _boobsa = "F-cup">>
 <<elseif $activeSlave.boobs >= 800>>
-	<<set _boobsa = 'DD-cup'>>
+	<<set _boobsa = "DD-cup">>
 <<elseif $activeSlave.boobs >= 650>>
-	<<set _boobsa = 'D-cup'>>
+	<<set _boobsa = "D-cup">>
 <<elseif $activeSlave.boobs >= 400>>
-	<<set _boobsa = 'C-cup'>>
+	<<set _boobsa = "C-cup">>
 <<elseif $activeSlave.boobs >= 300>>
-	<<set _boobsa = 'B-cup'>>
+	<<set _boobsa = "B-cup">>
 <<else>>
-	<<set _boobsa = 'skip'>>
-	<<set _boobs = 'flat'>>
+	<<set _boobsa = "skip">>
+	<<set _boobs = "flat">>
 <</if>>
 <<if _boobsa != "skip">>
 	<<set _boobs = "_boobsa $activeSlave.boobShape">>
 <</if>>
 
 <<if $activeSlave.balls == 1>>
-	<<set _balls = 'vestigial'>>
+	<<set _balls = "vestigial">>
 <<elseif $activeSlave.balls == 2>>
-	<<set _balls = 'small'>>
+	<<set _balls = "small">>
 <<elseif $activeSlave.balls == 3>>
-	<<set _balls = 'average'>>
+	<<set _balls = "average">>
 <<elseif $activeSlave.balls == 4>>
-	<<set _balls = 'large'>>
+	<<set _balls = "large">>
 <<elseif $activeSlave.balls == 5>>
-	<<set _balls = 'massive'>>
+	<<set _balls = "massive">>
 <<elseif $activeSlave.balls == 6>>
-	<<set _balls = 'huge'>>
+	<<set _balls = "huge">>
 <<elseif $activeSlave.balls == 7>>
-	<<set _balls = 'giant'>>
+	<<set _balls = "giant">>
 <<elseif $activeSlave.balls == 8>>
-	<<set _balls = 'enormous'>>
+	<<set _balls = "enormous">>
 <<elseif $activeSlave.balls == 9>>
-	<<set _balls = 'monstrous'>>
+	<<set _balls = "monstrous">>
 <<else>>
-	<<set _balls = 'overly massive'>>
+	<<set _balls = "overly massive">>
 <</if>>
 
 <<if $activeSlave.dick == 1>>
-	<<set _dick = 'tiny'>>
+	<<set _dick = "tiny">>
 <<elseif $activeSlave.dick == 2>>
-	<<set _dick = 'little'>>
+	<<set _dick = "little">>
 <<elseif $activeSlave.dick == 3>>
-	<<set _dick = 'average'>>
+	<<set _dick = "average">>
 <<elseif $activeSlave.dick == 4>>
-	<<set _dick = 'big'>>
+	<<set _dick = "big">>
 <<elseif $activeSlave.dick == 5>>
-	<<set _dick = 'huge'>>
+	<<set _dick = "huge">>
 <<elseif $activeSlave.dick == 6>>
-	<<set _dick = 'gigantic'>>
+	<<set _dick = "gigantic">>
 <<elseif $activeSlave.dick == 7>>
-	<<set _dick = 'massive'>>
+	<<set _dick = "massive">>
 <<elseif $activeSlave.dick == 8>>
-	<<set _dick = 'horse-sized'>>
+	<<set _dick = "horse-sized">>
 <<elseif $activeSlave.dick == 9>>
-	<<set _dick = 'monstrous'>>
+	<<set _dick = "monstrous">>
 <<elseif $activeSlave.dick == 10>>
-	<<set _dick = 'inhuman'>>
+	<<set _dick = "inhuman">>
 <<else>>
-	<<set _dick = 'hypertrophied'>>
+	<<set _dick = "hypertrophied">>
 <</if>>
 
 <<if $activeSlave.butt < 1>>
-	<<set _butt = 'flat'>>
+	<<set _butt = "flat">>
 <<elseif $activeSlave.butt < 2>>
-	<<set _butt = 'small'>>
+	<<set _butt = "small">>
 <<elseif $activeSlave.butt < 3>>
-	<<set _butt = 'plump'>>
+	<<set _butt = "plump">>
 <<elseif $activeSlave.butt < 4>>
-	<<set _butt = 'big bubble'>>
+	<<set _butt = "big bubble">>
 <<elseif $activeSlave.butt < 5>>
-	<<set _butt = 'huge'>>
+	<<set _butt = "huge">>
 <<elseif $activeSlave.butt < 6>>
-	<<set _butt = 'enormous'>>
+	<<set _butt = "enormous">>
 <<elseif $activeSlave.butt < 7>>
-	<<set _butt = 'gigantic'>>
+	<<set _butt = "gigantic">>
 <<elseif $activeSlave.butt < 8>>
-	<<set _butt = 'ridiculous'>>
+	<<set _butt = "ridiculous">>
 <<elseif $activeSlave.butt < 10>>
-	<<set _butt = 'immense'>>
+	<<set _butt = "immense">>
 <<else>>
-	<<set _butt = 'inhuman'>>
+	<<set _butt = "inhuman">>
 <</if>>
 
 <<if $activeSlave.hips > 2>>
-	<<set _hips = 'inhumanly wide'>>
+	<<set _hips = "inhumanly wide">>
 <<elseif $activeSlave.hips > 1>>
-	<<set _hips = 'very wide'>>
+	<<set _hips = "very wide">>
 <<elseif $activeSlave.hips > 0>>
-	<<set _hips = 'wide'>>
+	<<set _hips = "wide">>
 <<elseif $activeSlave.hips > -1>>
-	<<set _hips = 'ample'>>
+	<<set _hips = "ample">>
 <<elseif $activeSlave.hips > -2>>
-	<<set _hips = 'narrow'>>
+	<<set _hips = "narrow">>
 <<else>>
-	<<set _hips = 'very narrow'>>
+	<<set _hips = "very narrow">>
 <</if>>
 
-<<if ($activeSlave.skin == $activeSlave.race) || $activeSlave.race == 'white' || $activeSlave.race == 'black'>>
+<<if ($activeSlave.skin == $activeSlave.race) || ($activeSlave.race == "white") || ($activeSlave.race == "black") || ($seeRace == 1)>>
 	<<set _skin = "$activeSlave.skin">>
 <<else>>
 	<<set _skin = "$activeSlave.skin $activeSlave.race">>
@@ -372,7 +372,7 @@ You call $activeSlave.slaveName to your office, telling $him to use $his feet to
 	<<elseif $activeSlave.fetish == "cumslut" && $activeSlave.fetishKnown == 1 && $activeSlave.fetishStrength >= 60>>
 		As a devoted cumslut, $activeSlave.slaveName eagerly strokes your cock with $his feet, delightedly smearing your precum on $his soles. $He <<if canSee($activeSlave)>>stares at your <<if $PC.balls >=2>>massive balls with a ravenous gaze, <<elseif $PC.balls >=1>>large balls with a hungry gaze, <<else>>balls with a steady gaze, <</if>><<else>>gingerly feels the weight of your <<if $PC.balls >=2>>massive balls <<elseif $PC.balls >=1>>large balls <<else>>balls <</if>>with $his feet, <</if>>shivering in anticipation.
 	<<elseif $activeSlave.fetish == "humiliation" && $activeSlave.fetishKnown == 1 && $activeSlave.fetishStrength >= 60>>
-		$activeSlave.slaveName slowly strokes your cock with $his feet, getting off on the degrading use of $his feet and avoiding your gaze. $He is showing an embarrassed smile<<if $activeSlave.skin == 'black'>>, and if $his skin was any lighter you would see $his<<else>> and<</if>> bright blushing cheeks.
+		$activeSlave.slaveName slowly strokes your cock with $his feet, getting off on the degrading use of $his feet and avoiding your gaze. $He is showing an embarrassed smile<<if skinToneLevel($activeSlave.skin) > 22>>, and if $his skin was any lighter you would see $his<<else>> and<</if>> bright blushing cheeks.
 	<<elseif $activeSlave.fetish == "boobs" && $activeSlave.fetishKnown == 1 && $activeSlave.fetishStrength >= 60>>
 		As $activeSlave.slaveName deftly strokes your cock with $his feet, $his hands plays with $his <<if $activeSlave.boobs < 300>>erect nipples. <<elseif $activeSlave.boobs < 500>>small chest. <<elseif $activeSlave.boobs >= 18000>>_boobs breasts, though $he can't reach $his nipples. <<else>>_boobs breasts and erect nipples. <</if>> $He is certainly giving you plenty of sexy options for you to watch.
 	<<elseif $activeSlave.fetish == "sadist" && $activeSlave.fetishKnown == 1 && $activeSlave.fetishStrength >= 60>>
diff --git a/src/uncategorized/RECI.tw b/src/uncategorized/RECI.tw
index 4e13cfd9a3a8a6bb0e88515dd4189fd436126d50..5bd1ad23c813146b8535c798fefc74fe140c2427 100644
--- a/src/uncategorized/RECI.tw
+++ b/src/uncategorized/RECI.tw
@@ -75,11 +75,9 @@
 	<</if>>
 <</for>>
 
-<<if ($activeSlave.skin == "tan") || ($activeSlave.skin == "fair")>>
+<<if (skinToneLevel($activeSlave.skin) < 10)>>
 	<<set $skinDesc = "pink">>
-<<elseif ($activeSlave.skin == "pale") || ($activeSlave.race == "white")>>
-	<<set $skinDesc = "pink">>
-<<elseif ($activeSlave.skin == "brown") || ($activeSlave.race == "black")>>
+<<elseif (skinToneLevel($activeSlave.skin) > 20)>>
 	<<set $skinDesc = "dark brown">>
 <<else>>
 	<<set $skinDesc = "brown">>
diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw
index fda22f8e50117173a33bcb1dab0a52c90add1508..5709be04fd05b4d06f765c795db40af804ecf413 100644
--- a/src/uncategorized/RESS.tw
+++ b/src/uncategorized/RESS.tw
@@ -424,9 +424,9 @@ clings to you in $his sleep as the warmth of your body begins to move away from
 <<case "confident tanning">>
 
 It's an unusually nice day, with mild sunshine, light breezes, and nothing offensive or dangerous in the atmosphere. In the middle of the afternoon, you take a break from your busy schedule of sex and business and stroll out onto one of your penthouse balconies. It seems <<EventNameLink>> was struck by a similar impulse. <<if $activeSlave.assignment == "rest">>$He's assigned to do little but rest<<else>>This is one of $his rest periods<</if>>, so $he's come out here to lay naked on a towel and enjoy the sun.
-<<if ["black", "brown", "dark brown", "dark olive", "dark", "ebony", "pure black"].includes($activeSlave.skin)>>
+<<if (skinToneLevel($activeSlave.skin) > 20)>>
 	$His $activeSlave.skin doesn't tan much, so $he's just out here to bask in its warmth. $His body shines with lotion from a bottle lying next to $him, but it's just general-purpose stuff.
-<<elseif ($activeSlave.skin == "tan")>>
+<<elseif (skinToneLevel($activeSlave.skin) > 11)>>
 	$His tanned skin shines with lotion from a bottle lying next to $him.
 <<else>>
 	$His skin shines with sunblock lotion from a bottle lying next to $him. It would be foolish of $him to let the sun ruin $his $activeSlave.skin skin.
diff --git a/src/uncategorized/longSlaveDescription.tw b/src/uncategorized/longSlaveDescription.tw
index 7313750827ecad98509d73680dd44b33aefba975..ac0d70a1eae33161f5457f7a3e7a6b5bcfc54c34 100644
--- a/src/uncategorized/longSlaveDescription.tw
+++ b/src/uncategorized/longSlaveDescription.tw
@@ -2040,7 +2040,7 @@ $He is
 	<<if $activeSlave.markings == "birthmark" && $activeSlave.prestige == 0 && $activeSlave.pornPrestige < 2>>
 		$He has a large, liver-colored birthmark, detracting from $his beauty.
 	<</if>>
-	<<if ($activeSlave.skin == "tan") && ($activeSlave.origSkin != "tan")>>
+	<<if (skinToneLevel($activeSlave.skin) > skinToneLevel($activeSlave.origSkin))>>
 		<<if ($activeSlave.releaseRules != "restrictive" && $activeSlave.releaseRules != "masturbation" && $activeSlave.releaseRules != "chastity")>>
 			<<if ($activeSlave.fetishStrength > 60) && ($activeSlave.fetishKnown == 1)>>
 				$His tan is slightly uneven, since $he enjoys
@@ -2082,7 +2082,7 @@ $He is
 	<<if ($activeSlave.hColor == "red")>>
 		<<if ($activeSlave.hLength >= 10)>>
 			<<if ($activeSlave.markings == "freckles") || ($activeSlave.markings == "heavily freckled")>>
-				<<if ($activeSlave.skin == "pale") || ($activeSlave.skin == "fair")>>
+				<<if (skinToneLevel($activeSlave.skin) > 5) && (skinToneLevel($activeSlave.skin) < 10)>>
 					It goes perfectly with $his $activeSlave.skin skin and freckles.
 				<</if>>
 			<</if>>
diff --git a/src/utility/descriptionWidgetsFlesh.tw b/src/utility/descriptionWidgetsFlesh.tw
index a2171983d995f25635bc0bc15eb1fd81a70cf1b2..16aeda210a41eade219f8741cb8dc1dbc7a5d14c 100644
--- a/src/utility/descriptionWidgetsFlesh.tw
+++ b/src/utility/descriptionWidgetsFlesh.tw
@@ -2572,11 +2572,11 @@ $He's got a
 
 <<widget "AnusDescription">>
 
-<<if ($activeSlave.skin == "tan") || ($activeSlave.skin == "fair") || ($activeSlave.skin == "pale") || ($activeSlave.race == "white")>>
+<<if (skinToneLevel($activeSlave.skin) < 13)>>
 	<<set $skinDesc = "pink">>
 <<elseif ($activeSlave.anusTat == "bleached")>>
 	<<set $skinDesc = $activeSlave.skin>>
-<<elseif ($activeSlave.skin == "brown") || ($activeSlave.race == "black")>>
+<<elseif (skinToneLevel($activeSlave.skin) > 19)>>
 	<<set $skinDesc = "dark">>
 <<else>>
 	<<set $skinDesc = "darker">>
@@ -17634,7 +17634,7 @@ $He has
 <<widget "skinDescription">>
 
 <<if $activeSlave.fuckdoll > 0>>
-	The small areas of visible skin are <<print $activeSlave.skin>><<if $activeSlave.markings == "freckles">> and lightly freckled<<if (($activeSlave.skin == "pale") || ($activeSlave.skin == "fair")) && ($activeSlave.hColor != "red")>>, an attractive combination<</if>><<elseif $activeSlave.markings == "heavily freckled">> and heavily freckled<<if (($activeSlave.skin == "pale") || ($activeSlave.skin == "fair")) && ($activeSlave.hColor != "red")>>, an attractive combination<</if>><</if>>.
+	The small areas of visible skin are <<print $activeSlave.skin>><<if $activeSlave.markings == "freckles">> and lightly freckled<<if (skinToneLevel($activeSlave.skin) < 10) && ($activeSlave.hColor != "red")>>, an attractive combination<</if>><<elseif $activeSlave.markings == "heavily freckled">> and heavily freckled<<if (skinToneLevel($activeSlave.skin) < 10) && ($activeSlave.hColor != "red")>>, an attractive combination<</if>><</if>>.
 <<elseif ($seeNationality == 1)>>
 	<<if $activeSlave.nationality == 0>>
 		Ethnically, $he's
@@ -17649,7 +17649,7 @@ $He has
 	<<else>>
 		$He's originally @@.tan;<<print $activeSlave.nationality>>;@@ ethnically, $he's
 	<</if>>
-	@@.tan;<<print $activeSlave.race>>,@@ and $his skin is <<print $activeSlave.skin>><<if $activeSlave.markings == "freckles">> and lightly freckled<<if (($activeSlave.skin == "pale") || ($activeSlave.skin == "fair")) && ($activeSlave.hColor != "red")>>, an attractive combination<</if>><<elseif $activeSlave.markings == "heavily freckled">> and heavily freckled<<if (($activeSlave.skin == "pale") || ($activeSlave.skin == "fair")) && ($activeSlave.hColor != "red")>>, an attractive combination<</if>><</if>>.
+	@@.tan;<<print $activeSlave.race>>,@@ and $his skin is <<print $activeSlave.skin>><<if $activeSlave.markings == "freckles">> and lightly freckled<<if (skinToneLevel($activeSlave.skin) < 10) && ($activeSlave.hColor != "red")>>, an attractive combination<</if>><<elseif $activeSlave.markings == "heavily freckled">> and heavily freckled<<if (skinToneLevel($activeSlave.skin) < 10) && ($activeSlave.hColor != "red")>>, an attractive combination<</if>><</if>>.
 	<<if $activeSlave.race != $activeSlave.origRace && $saleDescription != 1>>
 		$He has received plastic surgery to appear <<print $activeSlave.race>>; $he is originally <<print $activeSlave.origRace>>.
 	<<elseif $activeSlave.race != $activeSlave.origRace && $saleDescription == 1>>
@@ -17664,7 +17664,7 @@ $He has
 		<</if>>
 	<</if>>
 <<elseif ($seeRace == 1)>>
-	Ethnically, $he's @@.tan;<<print $activeSlave.race>>,@@ and $his skin is <<print $activeSlave.skin>><<if $activeSlave.markings == "freckles">> and lightly freckled<<if (($activeSlave.skin == "pale") || ($activeSlave.skin == "fair")) && ($activeSlave.hColor != "red")>>, an attractive combination<</if>><<elseif $activeSlave.markings == "heavily freckled">> and heavily freckled<<if (($activeSlave.skin == "pale") || ($activeSlave.skin == "fair")) && ($activeSlave.hColor != "red")>>, an attractive combination<</if>><</if>>.
+	Ethnically, $he's @@.tan;<<print $activeSlave.race>>,@@ and $his skin is <<print $activeSlave.skin>><<if $activeSlave.markings == "freckles">> and lightly freckled<<if (skinToneLevel($activeSlave.skin) < 10) && ($activeSlave.hColor != "red")>>, an attractive combination<</if>><<elseif $activeSlave.markings == "heavily freckled">> and heavily freckled<<if (skinToneLevel($activeSlave.skin) < 10) && ($activeSlave.hColor != "red")>>, an attractive combination<</if>><</if>>.
 	<<if $activeSlave.race != $activeSlave.origRace && $saleDescription != 1>>
 		$He has received plastic surgery to appear <<print $activeSlave.race>>; $he is originally <<print $activeSlave.origRace>>.
 	<<elseif $activeSlave.race != $activeSlave.origRace && $saleDescription == 1>>
@@ -17679,7 +17679,7 @@ $He has
 		<</if>>
 	<</if>>
 <<else>>
-	$His skin is <<print $activeSlave.skin>><<if $activeSlave.markings == "freckles">> and lightly freckled<<if (($activeSlave.skin == "pale") || ($activeSlave.skin == "fair")) && ($activeSlave.hColor != "red")>>, an attractive combination<</if>><<elseif $activeSlave.markings == "heavily freckled">> and heavily freckled<<if (($activeSlave.skin == "pale") || ($activeSlave.skin == "fair")) && ($activeSlave.hColor != "red")>>, an attractive combination<</if>><</if>>.
+	$His skin is <<print $activeSlave.skin>><<if $activeSlave.markings == "freckles">> and lightly freckled<<if (skinToneLevel($activeSlave.skin) < 10) && ($activeSlave.hColor != "red")>>, an attractive combination<</if>><<elseif $activeSlave.markings == "heavily freckled">> and heavily freckled<<if (skinToneLevel($activeSlave.skin) < 10) && ($activeSlave.hColor != "red")>>, an attractive combination<</if>><</if>>.
 <</if>>
 
 <</widget>>
diff --git a/src/utility/descriptionWidgetsStyle.tw b/src/utility/descriptionWidgetsStyle.tw
index 90d53b5f61a55f76d9f22bfe0272e7264414e3fa..303097b85726b58648e9b27b911923d673416b74 100644
--- a/src/utility/descriptionWidgetsStyle.tw
+++ b/src/utility/descriptionWidgetsStyle.tw
@@ -294,8 +294,8 @@ $activeSlave.slaveName is
 		which lacks arm or leg holes, so $his limbless torso is in a net.
 	<<else>>
 		<<if (($activeSlave.nails == 2) || ($activeSlave.nails == 7) || ($activeSlave.nails == 9)) && (($activeSlave.makeup == 3) || ($activeSlave.makeup == 6) || ($activeSlave.nails == 8))>>
-			$activeSlave.hColor to match $his monocolor style,
-		<<elseif ($activeSlave.skin == "dark") || ($activeSlave.skin == "black")>>
+			$activeSlave.hColor to match $his unicolor style,
+		<<elseif (skinToneLevel($activeSlave.skin) > 22)>>
 			in white to create a striking contrast with $his $activeSlave.skin skin,
 		<<elseif ($activeSlave.addict > 5)>>
 			in the electric blue color of aphrodisiacs to signal $he's down to fuck high,