diff --git a/src/uncategorized/generateXXSlave.tw b/src/uncategorized/generateXXSlave.tw
index 5e53eca05bf3ed48c7c8c296769d08d14cad6c5e..c025870da34988b8d0ffda6756db68de9567fd6c 100644
--- a/src/uncategorized/generateXXSlave.tw
+++ b/src/uncategorized/generateXXSlave.tw
@@ -143,22 +143,6 @@
 <<set $activeSlave.trust = random(-45,-25)>>
 
 /% Begin height replacement section. %/
-/% Vanilla settings yield an average height of 162.5 cm, which is not representative for the world as a whole. %/
-<<if random(1,2) == 1>>
-	<<set $activeSlave.height = random(150,170)>>
-<<else>>
-	<<set $activeSlave.height = random(140,190)>>
-<</if>>
-
-/% Set height-based effects before adjusting height for nationality. %/
-<<if $activeSlave.height >= 170>>
-	<<set $activeSlave.hips = either(-1, 0, 0, 1, 1, 2, 2)>>
-	<<set $activeSlave.shoulders = either(-1, -1, 0, 0, 0, 1)>>
-<<else>>
-	<<set $activeSlave.hips = either(-1, 0, 0, 0, 1, 1, 2)>>
-	<<set $activeSlave.shoulders = either(-2, -1, -1, 0, 0, 1)>>
-<</if>>
-
 /% Since we use nationality for height effects we need to initialize it now instead of later on like in vanilla Free Cities. %/
 <<if $fixedNationality == 0>>
 	<<set $activeSlave.nationality = $nationalities.random()>>
@@ -193,178 +177,15 @@
 <<NationalityToName $activeSlave>>
 <<NationalityToAccent $activeSlave>>
 
-<<set $seed = 162.5>>
-
-<<switch $activeSlave.nationality>>
-<<case "American">>
-	<<if $activeSlave.race is "white">>
-		<<set $seed = 165>>
-	<<elseif $activeSlave.race is "black">>
-		<<set $seed = 163.6>>
-	<<elseif $activeSlave.race is "latina">>
-		<<set $seed = 158.9>>
-	<<elseif $activeSlave.race is "asian">>
-		<<set $seed = 158.4>>
-	<<else>>
-		<<set $seed = 161.8>>
-	<</if>>
-<<case "Afghan">>
-<<case "Argentinian">>
-	<<set $seed = 159.6>>
-<<case "Armenian">>
-<<case "Australian">>
-	<<set $seed = 161.8>>
-<<case "Austrian">>
-	<<set $seed = 166>>
-<<case "Belarusian">>
-	<<set $seed = 166.8>>
-<<case "Belgian">>
-<<case "Bolivian">>
-	<<set $seed = 142.2>>
-<<case "Brazilian">>
-	<<set $seed = 158.8>>
-<<case "British">>
-	<<set $seed = 161.9>>
-<<case "Canadian">>
-	<<set $seed = 162.3>>
-<<case "Chilean">>
-	<<set $seed = 157.2>>
-<<case "Chinese">>
-	<<set $seed = 155.8>>
-<<case "Colombian">>
-	<<set $seed = 158.7>>
-<<case "Congolese">>
-	<<set $seed = 157.7>>
-<<case "Cuban">>
-	<<set $seed = 156>>
-<<case "Czech">>
-	<<set $seed = 167.22>>
-<<case "Danish">>
-	<<set $seed = 168.7>>
-<<case "Dominican">>
-	<<set $seed = 156.4>>
-<<case "Dutch">>
-	<<set $seed = 169>>
-<<case "Emirati">>
-	<<set $seed = 156.4>>
-<<case "Egyptian">>
-	<<set $seed = 158.9>>
-<<case "Estonian">>
-<<case "Ethiopian">>
-<<case "Finnish">>
-	<<set $seed = 165.3>>
-<<case "French">>
-	<<set $seed = 162.5>>
-<<case "German">>
-	<<set $seed = 162.8>>
-<<case "Ghanan">>
-	<<set $seed = 158.5>>
-<<case "Greek">>
-	<<set $seed = 165>>
-<<case "Guatemalan">>
-<<case "Haitian">>
-<<case "Hungarian">>
-	<<set $seed = 176>>
-<<case "Icelandic">>
-<<case "Indian">>
-	<<set $seed = 151.9>>
-<<case "Indonesian">>
-<<case "Iranian">>
-	<<set $seed = 157.2>>
-<<case "Iraqi">>
-	<<set $seed = 155.8>>
-<<case "Irish">>
-	<<set $seed = 163>>
-<<case "Israeli">>
-	<<set $seed = 166>>
-<<case "Italian">>
-<<case "Jamaican">>
-	<<set $seed = 160.8>>
-<<case "Japanese">>
-	<<set $seed = 158>>
-<<case "Jordanian">>
-<<case "Kazakh">>
-<<case "Kenyan">>
-<<case "Korean">>
-	<<if either(1,2,3) == 3>>
-		<<set $seed = 154.9>>
-	<<else>>
-		<<set $seed = 157.4>>
-	<</if>>
-<<case "Lebanese">>
-<<case "Libyan">>
-<<case "Lithuanian">>
-	<<set $seed = 167.5>>
-<<case "Malaysian">>
-	<<set $seed = 154.7>>
-<<case "Malian">>
-	<<set $seed = 160.4>>
-<<case "Mexican">>
-	<<set $seed = 154>>
-<<case "Moroccan">>
-<<case "Nepalese">>
-<<case "Nigerian">>
-	<<set $seed = 163.8>>
-<<case "Norwegian">>
-	<<set $seed = 157.8>>
-<<case "Omani">>
-<<case "Pakistani">>
-	/% Default to India's figures. %/
-	<<set $seed = 151.9>>
-<<case "Peruvian">>
-	<<set $seed = 151>>
-<<case "Polish">>
-	<<set $seed = 165.1>>
-<<case "Portuguese">>
-	<<set $seed = 165.1>>
-<<case "Puerto Rican">>
-	/% Use average for U.S. Hispanics. %/
-	<<set $seed = 158.9>>
-<<case "Romanian">>
-	<<set $seed = 157>>
-<<case "Russian">>
-	<<set $seed = 164.1>>
-<<case "Saudi">>
-	<<set $seed = 156.3>>
-<<case "Scottish">>
-	<<set $seed = 163>>
-<<case "Serbian">>
-	<<set $seed = 166.8>>
-<<case "Slovak">>
-	<<set $seed = 165.6>>
-<<case "Spanish">>
-	<<set $seed = 162.6>>
-<<case "Sudanese">>
-<<case "Swedish">>
-	<<set $seed = 166.8>>
-<<case "Swiss">>
-<<case "Tanzanian">>
-<<case "Thai">>
-<<case "Tunisian">>
-<<case "Turkish">>
-	<<set $seed = 161.9>>
-<<case "Ugandan">>
-<<case "Ukrainian">>
-<<case "Uzbek">>
-<<case "Venezuelan">>
-<<case "Vietnamese">>
-	<<set $seed = 155.2>>
-<<case "Yemeni">>
-<<case "a New Zealander">>
-	<<set $seed = 164>>
-<<case "Zimbabwean">>
-<<default>>
-<</switch>>
+<<set $activeSlave.height = Math.round(Height.random($activeSlave))>>
 
-/% Include adjustment factor for age. %/
-<<if $activeSlave.physicalAge <= 13>>
-  <<set $seed = interpolate(2,85,13,$seed * 157/164.0,$activeSlave.physicalAge)>>
-<<elseif $activeSlave.physicalAge < 20>>
-  <<set $seed = interpolate(13,$seed * 157/164.0,20,$seed,$activeSlave.physicalAge)>>
+<<if $activeSlave.height >= Height.mean($activeSlave) * 170/162.5>>
+	<<set $activeSlave.hips = either(-1, 0, 0, 1, 1, 2, 2)>>
+	<<set $activeSlave.shoulders = either(-1, -1, 0, 0, 0, 1)>>
+<<else>>
+	<<set $activeSlave.hips = either(-1, 0, 0, 0, 1, 1, 2)>>
+	<<set $activeSlave.shoulders = either(-2, -1, -1, 0, 0, 1)>>
 <</if>>
-
-/% Adjust height and convert from decimal number to integer. %/
-<<set $activeSlave.height = Math.round($activeSlave.height * $seed / 162.5)>>
 /% End height replacement section. %/
 
 <<set $activeSlave.weight = random(-100,180)>>
diff --git a/src/uncategorized/generateXYSlave.tw b/src/uncategorized/generateXYSlave.tw
index 2ef07c6b03e459a56aca3ff723bad7b82956e429..ab47c17ede047fb44deb863044434e71f76837d9 100644
--- a/src/uncategorized/generateXYSlave.tw
+++ b/src/uncategorized/generateXYSlave.tw
@@ -129,32 +129,6 @@
 <<set $activeSlave.trust = random(-45,-25)>>
 
 /% Begin height replacement section. %/
-/% Vanilla settings yield an average height of 172.5 cm, which is not representative for the world as a whole. %/
-<<if random(1,2) == 1>>
-	<<set $activeSlave.height = random(160,180)>>
-<<else>>
-	<<set $activeSlave.height = random(150,200)>>
-<</if>>
-
-/% Set height-based effects before adjusting height for nationality. %/
-<<if $activeSlave.physicalAge <= 13>>
-	<<if $activeSlave.height > 170>>
-	  <<set $activeSlave.hips = either(-2, -1, -1, 0, 1)>>
-	  <<set $activeSlave.shoulders = either(-1, -1, 0, 0, 0, 1)>>
-	<<else>>
-	  <<set $activeSlave.hips = either(-2, -2, -1, -1, 0)>>
-	  <<set $activeSlave.shoulders = either(-2, -1, -1, 0, 0, 1)>>
-	<</if>>
-<<else>>
-	<<if $activeSlave.height >= 170>>
-		<<set $activeSlave.hips = either(-2, -1, -1, 0, 1)>>
-		<<set $activeSlave.shoulders = either(-1, 0, 1, 1, 2, 2)>>
-	<<else>>
-		<<set $activeSlave.hips = either(-2, -2, -1, -1, 0)>>
-		<<set $activeSlave.shoulders = either(-1, 0, 0, 1, 1, 2)>>
-	<</if>>
-<</if>>
-
 <<if ($activeSlave.physicalAge > random(0,100))>>
 	<<set $activeSlave.eyes = -1>>
 	<<if random(0,100) > 90>>
@@ -197,181 +171,24 @@
 <<NationalityToName $activeSlave>>
 <<NationalityToAccent $activeSlave>>
 
-<<set $seed = 172.5>>
-<<if $activeSlave.race == "white">>
-	<<set $seed = 177.6>>/% White people use European average if no country-specific figure available. %/
-<</if>>
-
-<<switch $activeSlave.nationality>>
-<<case "American">>
-	<<if $activeSlave.race == "white">>
-		<<set $seed = 178.2>>
-	<<elseif $activeSlave.race == "black">>
-		<<set $seed = 177.4>>
-	<<elseif ($activeSlave.race == "latina") or ($activeSlave.race == "asian")>>
-		/% Averages are 172.4 and 172.3 which are close enough to default. %/
+<<set $activeSlave.height = Math.round(Height.random($activeSlave))>>
+<<if $activeSlave.physicalAge <= 13>>
+	<<if $activeSlave.height > Height.mean($activeSlave) * 170/172.5>>
+	  <<set $activeSlave.hips = either(-2, -1, -1, 0, 1)>>
+	  <<set $activeSlave.shoulders = either(-1, -1, 0, 0, 0, 1)>>
 	<<else>>
-		<<set $seed = 176.4>>
+	  <<set $activeSlave.hips = either(-2, -2, -1, -1, 0)>>
+	  <<set $activeSlave.shoulders = either(-2, -1, -1, 0, 0, 1)>>
 	<</if>>
-<<case "Afghan">>
-<<case "Argentinian">>
-	<<set $seed = 174.46>>
-<<case "Armenian">>
-<<case "Australian">>
-	<<set $seed = 175.6>>
-<<case "Austrian">>
-	<<set $seed = 179>>
-<<case "Belarusian">>
-	<<set $seed = 176.9>>
-<<case "Belgian">>
-	<<set $seed = 178.7>>
-<<case "Bolivian">>
-	<<set $seed = 160.0>>
-<<case "Brazilian">>
-	<<set $seed = 170.7>>
-<<case "British">>
-	<<set $seed = 175.3>>
-<<case "Canadian">>
-	<<set $seed = 175.1>>
-<<case "Chilean">>
-	<<set $seed = 169.6>>
-<<case "Chinese">>
-	<<set $seed = 167.1>>
-<<case "Colombian">>
-  <<set $seed = 170.6>>
-<<case "Congolese">>
-	<<set $seed = 158.9>>
-<<case "Cuban">>
-	<<set $seed = 168>>
-<<case "Czech">>
-	<<set $seed = 180.31>>
-<<case "Danish">>
-	<<set $seed = 180.4>>
-<<case "Dominican">>
-	<<set $seed = 168.4>>
-<<case "Dutch">>
-	<<set $seed = 181>>
-<<case "Emirati">>
-<<case "Egyptian">>
-	<<set $seed = 170.3>>
-<<case "Estonian">>
-	<<set $seed = 179.1>>
-<<case "Ethiopian">>
-<<case "Finnish">>
-	<<set $seed = 178.9>>
-<<case "French">>
-	<<set $seed = 175.6>>
-<<case "German">>
-	<<set $seed = 175.4>>
-<<case "Ghanan">>
-	<<set $seed = 169.5>>
-<<case "Greek">>
-	<<set $seed = 177>>
-<<case "Guatemalan">>
-<<case "Haitian">>
-<<case "Hungarian">>
-	<<set $seed = 176>>
-<<case "Icelandic">>
-<<case "Indian">>
-	<<set $seed = 164.7>>
-<<case "Indonesian">>
-<<case "Iranian">>
-	<<set $seed = 170.3>>
-<<case "Iraqi">>
-	<<set $seed = 165.4>>
-<<case "Irish">>
-  <<set $seed = 177>>
-<<case "Israeli">>
-	<<set $seed = 177>>
-<<case "Italian">>
-	<<set $seed = 176.5>>
-<<case "Jamaican">>
-	<<set $seed = 171.8>>
-<<case "Japanese">>
-	<<set $seed = 172>>
-<<case "Jordanian">>
-<<case "Kazakh">>
-<<case "Kenyan">>
-<<case "Korean">>
-	<<if either(1,2,3) == 3>>
-		<<set $seed = 165.6>>
+<<else>>
+	<<if $activeSlave.height >= Height.mean($activeSlave) * 170/172.5>>
+		<<set $activeSlave.hips = either(-2, -1, -1, 0, 1)>>
+		<<set $activeSlave.shoulders = either(-1, 0, 1, 1, 2, 2)>>
 	<<else>>
-		<<set $seed = 170.7>>
+		<<set $activeSlave.hips = either(-2, -2, -1, -1, 0)>>
+		<<set $activeSlave.shoulders = either(-1, 0, 0, 1, 1, 2)>>
 	<</if>>
-<<case "Lebanese">>
-<<case "Libyan">>
-<<case "Lithuanian">>
-	<<set $seed = 177.2>>
-<<case "Malaysian">>
-	<<set $seed = 166.3>>
-<<case "Malian">>
-	<<set $seed = 171.3>>
-<<case "Mexican">>
-	<<set $seed = 167>>
-<<case "Moroccan">>
-<<case "Nepalese">>
-<<case "Nigerian">>
-	<<set $seed = 163.8>>
-<<case "Norwegian">>
-	<<set $seed = 179.63>>
-<<case "Omani">>
-<<case "Pakistani">>
-	/% Default to India's figures. %/
-	<<set $seed = 164.7>>
-<<case "Peruvian">>
-	<<set $seed = 164>>
-<<case "Polish">>
-	<<set $seed = 178.7>>
-<<case "Portuguese">>
-	<<set $seed = 173.9>>
-<<case "Puerto Rican">>
-	/% Average for U.S. Hispanics == 172.4. No adjustment necessary. %/
-<<case "Romanian">>
-	<<set $seed = 172>>
-<<case "Russian">>
-	<<set $seed = 177.2>>
-<<case "Saudi">>
-	<<set $seed = 168.9>>
-<<case "Scottish">>
-	<<set $seed = 177.6>>
-<<case "Serbian">>
-	<<set $seed = 182>>
-<<case "Slovak">>
-	<<set $seed = 179.4>>
-<<case "Spanish">>
-	<<set $seed = 173.1>>
-<<case "Sudanese">>
-<<case "Swedish">>
-	<<set $seed = 181.5>>
-<<case "Swiss">>
-	<<set $seed = 178.2>>
-<<case "Tanzanian">>
-<<case "Thai">>
-<<case "Tunisian">>
-<<case "Turkish">>
-	<<set $seed = 173.6>>
-<<case "Ugandan">>
-<<case "Ukrainian">>
-<<case "Uzbek">>
-<<case "Venezuelan">>
-<<case "Vietnamese">>
-	<<set $seed = 165.7>>
-<<case "Yemeni">>
-<<case "a New Zealander">>
-	<<set $seed = 177>>
-<<case "Zimbabwean">>
-<<default>>
-<</switch>>
-
-/% Include adjustment factor for age. %/
-<<if $activeSlave.physicalAge <= 15>>
-  <<set $seed = interpolate(2,86,15,$seed * 170/178.0,$activeSlave.physicalAge)>>
-<<elseif $activeSlave.physicalAge < 20>>
-  <<set $seed = interpolate(15,$seed * 170.0/178.0,20,$seed,$activeSlave.physicalAge)>>
 <</if>>
-
-/% Adjust height and convert from decimal number to integer. %/
-<<set $activeSlave.height = Math.round($activeSlave.height * $seed / 172.5)>>
 /% End height replacement section. %/
 
 <<set $activeSlave.weight = random(-100, 180)>>