diff --git a/js/003-data/miscData.js b/js/003-data/miscData.js
index f0a3c59732cd8c016d79c1fe8b8a657b030a02c7..59cd16e3e00e4a97ac5d2591b36caf9c3aa11dc5 100644
--- a/js/003-data/miscData.js
+++ b/js/003-data/miscData.js
@@ -1453,264 +1453,265 @@ App.Data.misc = {
 
 	royalNationalities: ["Bahraini", "Belgian", "Bhutanese", "British", "Bruneian", "Cambodian", "Danish", "Dutch", "Emirati", "Japanese", "Jordanian", "Kuwaiti", "Luxembourgian", "Malaysian", "Monégasque", "Moroccan", "Mosotho", "Norwegian", "Omani", "Qatari", "Saudi", "Spanish", "Swazi", "Swedish", "Thai", "Tongan"],
 
+	nationalitiesByRace: {
+		"amerindian": {
+			"Bolivian": 1,
+			"Greenlandic": 1,
+			"Guatemalan": 1,
+			"Peruvian": 1
+		},
 
-	amerindianNationalities: {
-		"Bolivian": 1,
-		"Greenlandic": 1,
-		"Guatemalan": 1,
-		"Peruvian": 1
-	},
-
-	asianNationalities: {
-		"Bhutanese": 1,
-		"Burmese": 1,
-		"Cambodian": 1,
-		"Chinese": 1,
-		"Japanese": 1,
-		"Korean": 1,
-		"Laotian": 1,
-		"Mongolian": 1,
-		"Nepalese": 1,
-		"Singaporean": 1,
-		"Taiwanese": 1,
-		"Thai": 1,
-		"Tibetan": 1,
-		"Vietnamese": 1
-	},
+		"asian": {
+			"Bhutanese": 1,
+			"Burmese": 1,
+			"Cambodian": 1,
+			"Chinese": 1,
+			"Japanese": 1,
+			"Korean": 1,
+			"Laotian": 1,
+			"Mongolian": 1,
+			"Nepalese": 1,
+			"Singaporean": 1,
+			"Taiwanese": 1,
+			"Thai": 1,
+			"Tibetan": 1,
+			"Vietnamese": 1
+		},
 
-	blackNationalities: {
-		"American": 1,
-		"Angolan": 1,
-		"Antiguan": 1,
-		"Bahamian": 1,
-		"Barbadian": 1,
-		"Beninese": 1,
-		"Bermudian": 1,
-		"Bissau-Guinean": 1,
-		"Burkinabé": 1,
-		"Burundian": 1,
-		"Cameroonian": 1,
-		"Central African": 1,
-		"Chadian": 1,
-		"Comorian": 1,
-		"Congolese": 1,
-		"Curaçaoan": 1,
-		"Djiboutian": 1,
-		"Dominiquais": 1,
-		"Equatoguinean": 1,
-		"Eritrean": 1,
-		"Ethiopian": 1,
-		"Gabonese": 1,
-		"Gambian": 1,
-		"Ghanan": 1,
-		"Grenadian": 1,
-		"Guinean": 1,
-		"Guyanese": 1,
-		"Haitian": 1,
-		"Ivorian": 1,
-		"Jamaican": 1,
-		"Kenyan": 1,
-		"Kittitian": 1,
-		"Liberian": 1,
-		"Malagasy": 1,
-		"Malawian": 1,
-		"Malian": 1,
-		"Mauritanian": 1,
-		"Mosotho": 1,
-		"Motswana": 1,
-		"Mozambican": 1,
-		"Namibian": 1,
-		"Nigerian": 1,
-		"Nigerien": 1,
-		"Rwandan": 1,
-		"Saint Lucian": 1,
-		"São Toméan": 1,
-		"Senegalese": 1,
-		"Sierra Leonean": 1,
-		"Somali": 1,
-		"South African": 1,
-		"South Sudanese": 1,
-		"Surinamese": 1,
-		"Swazi": 1,
-		"Tanzanian": 1,
-		"Togolese": 1,
-		"Trinidadian": 1,
-		"Ugandan": 1,
-		"Vincentian": 1,
-		"Zairian": 1,
-		"Zambian": 1,
-		"Zimbabwean": 1
-	},
+		"black": {
+			"American": 1,
+			"Angolan": 1,
+			"Antiguan": 1,
+			"Bahamian": 1,
+			"Barbadian": 1,
+			"Beninese": 1,
+			"Bermudian": 1,
+			"Bissau-Guinean": 1,
+			"Burkinabé": 1,
+			"Burundian": 1,
+			"Cameroonian": 1,
+			"Central African": 1,
+			"Chadian": 1,
+			"Comorian": 1,
+			"Congolese": 1,
+			"Curaçaoan": 1,
+			"Djiboutian": 1,
+			"Dominiquais": 1,
+			"Equatoguinean": 1,
+			"Eritrean": 1,
+			"Ethiopian": 1,
+			"Gabonese": 1,
+			"Gambian": 1,
+			"Ghanan": 1,
+			"Grenadian": 1,
+			"Guinean": 1,
+			"Guyanese": 1,
+			"Haitian": 1,
+			"Ivorian": 1,
+			"Jamaican": 1,
+			"Kenyan": 1,
+			"Kittitian": 1,
+			"Liberian": 1,
+			"Malagasy": 1,
+			"Malawian": 1,
+			"Malian": 1,
+			"Mauritanian": 1,
+			"Mosotho": 1,
+			"Motswana": 1,
+			"Mozambican": 1,
+			"Namibian": 1,
+			"Nigerian": 1,
+			"Nigerien": 1,
+			"Rwandan": 1,
+			"Saint Lucian": 1,
+			"São Toméan": 1,
+			"Senegalese": 1,
+			"Sierra Leonean": 1,
+			"Somali": 1,
+			"South African": 1,
+			"South Sudanese": 1,
+			"Surinamese": 1,
+			"Swazi": 1,
+			"Tanzanian": 1,
+			"Togolese": 1,
+			"Trinidadian": 1,
+			"Ugandan": 1,
+			"Vincentian": 1,
+			"Zairian": 1,
+			"Zambian": 1,
+			"Zimbabwean": 1
+		},
 
-	indoAryanNationalities: {
-		"Afghan": 1,
-		"Azerbaijani": 1,
-		"Bahraini": 1,
-		"Bangladeshi": 1,
-		"Burmese": 1,
-		"Emirati": 1,
-		"Georgian": 1,
-		"Guyanese": 1,
-		"Indian": 1,
-		"Iranian": 1,
-		"Kazakh": 1,
-		"Kurdish": 1,
-		"Kyrgyz": 1,
-		"Maldivian": 1,
-		"Mauritian": 1,
-		"Omani": 1,
-		"Pakistani": 1,
-		"Sri Lankan": 1,
-		"Surinamese": 1,
-		"Tajik": 1,
-		"Trinidadian": 1,
-		"Turkish": 1,
-		"Turkmen": 1,
-		"Uzbek": 1
-	},
+		"indo-aryan": {
+			"Afghan": 1,
+			"Azerbaijani": 1,
+			"Bahraini": 1,
+			"Bangladeshi": 1,
+			"Burmese": 1,
+			"Emirati": 1,
+			"Georgian": 1,
+			"Guyanese": 1,
+			"Indian": 1,
+			"Iranian": 1,
+			"Kazakh": 1,
+			"Kurdish": 1,
+			"Kyrgyz": 1,
+			"Maldivian": 1,
+			"Mauritian": 1,
+			"Omani": 1,
+			"Pakistani": 1,
+			"Sri Lankan": 1,
+			"Surinamese": 1,
+			"Tajik": 1,
+			"Trinidadian": 1,
+			"Turkish": 1,
+			"Turkmen": 1,
+			"Uzbek": 1
+		},
 
-	latinaNationalities: {
-		"American": 1,
-		"Argentinian": 1,
-		"Belizean": 1,
-		"Bolivian": 1,
-		"Brazilian": 1,
-		"Chilean": 1,
-		"Colombian": 1,
-		"Costa Rican": 1,
-		"Cuban": 1,
-		"Dominican": 1,
-		"Ecuadorian": 1,
-		"Guatemalan": 1,
-		"Honduran": 1,
-		"Mexican": 1,
-		"Nicaraguan": 1,
-		"Panamanian": 1,
-		"Paraguayan": 1,
-		"Peruvian": 1,
-		"Puerto Rican": 1,
-		"Salvadoran": 1,
-		"Uruguayan": 1,
-		"Venezuelan": 1
-	},
+		"latina": {
+			"American": 1,
+			"Argentinian": 1,
+			"Belizean": 1,
+			"Bolivian": 1,
+			"Brazilian": 1,
+			"Chilean": 1,
+			"Colombian": 1,
+			"Costa Rican": 1,
+			"Cuban": 1,
+			"Dominican": 1,
+			"Ecuadorian": 1,
+			"Guatemalan": 1,
+			"Honduran": 1,
+			"Mexican": 1,
+			"Nicaraguan": 1,
+			"Panamanian": 1,
+			"Paraguayan": 1,
+			"Peruvian": 1,
+			"Puerto Rican": 1,
+			"Salvadoran": 1,
+			"Uruguayan": 1,
+			"Venezuelan": 1
+		},
 
-	malayNationalities: {
-		"Bruneian": 1,
-		"East Timorese": 1,
-		"Filipina": 1,
-		"Indonesian": 1,
-		"Malaysian": 1,
-		"Papua New Guinean": 1
-	},
+		"malay": {
+			"Bruneian": 1,
+			"East Timorese": 1,
+			"Filipina": 1,
+			"Indonesian": 1,
+			"Malaysian": 1,
+			"Papua New Guinean": 1
+		},
 
-	middleEasternNationalities: {
-		"Algerian": 1,
-		"Bahraini": 1,
-		"Egyptian": 1,
-		"Iraqi": 1,
-		"Jordanian": 1,
-		"Kuwaiti": 1,
-		"Lebanese": 1,
-		"Libyan": 1,
-		"Moroccan": 1,
-		"Omani": 1,
-		"Palestinian": 1,
-		"Qatari": 1,
-		"Sahrawi": 1,
-		"Saudi": 1,
-		"Sudanese": 1,
-		"Syrian": 1,
-		"Tunisian": 1,
-		"Yemeni": 1
-	},
+		"middle eastern": {
+			"Algerian": 1,
+			"Bahraini": 1,
+			"Egyptian": 1,
+			"Iraqi": 1,
+			"Jordanian": 1,
+			"Kuwaiti": 1,
+			"Lebanese": 1,
+			"Libyan": 1,
+			"Moroccan": 1,
+			"Omani": 1,
+			"Palestinian": 1,
+			"Qatari": 1,
+			"Sahrawi": 1,
+			"Saudi": 1,
+			"Sudanese": 1,
+			"Syrian": 1,
+			"Tunisian": 1,
+			"Yemeni": 1
+		},
 
-	mixedRaceNationalities: {
-		"Aruban": 1,
-		"Cape Verdean": 1,
-		"French Guianan": 1,
-		"São Toméan": 1,
-		"Seychellois": 1
-	},
+		"mixed race": {
+			"Aruban": 1,
+			"Cape Verdean": 1,
+			"French Guianan": 1,
+			"São Toméan": 1,
+			"Seychellois": 1
+		},
 
-	pacificIslanderNationalities: {
-		"a Cook Islander": 1,
-		"Fijian": 1,
-		"French Polynesian": 1,
-		"Guamanian": 1,
-		"I-Kiribati": 1,
-		"Marshallese": 1,
-		"Micronesian": 1,
-		"Nauruan": 1,
-		"New Caledonian": 1,
-		"Ni-Vanuatu": 1,
-		"Niuean": 1,
-		"Palauan": 1,
-		"Samoan": 1,
-		"a Solomon Islander": 1,
-		"Tongan": 1,
-		"Tuvaluan": 1
-	},
+		"pacific islander": {
+			"a Cook Islander": 1,
+			"Fijian": 1,
+			"French Polynesian": 1,
+			"Guamanian": 1,
+			"I-Kiribati": 1,
+			"Marshallese": 1,
+			"Micronesian": 1,
+			"Nauruan": 1,
+			"New Caledonian": 1,
+			"Ni-Vanuatu": 1,
+			"Niuean": 1,
+			"Palauan": 1,
+			"Samoan": 1,
+			"a Solomon Islander": 1,
+			"Tongan": 1,
+			"Tuvaluan": 1
+		},
 
-	semiticNationalities: {"Armenian": 1, "Georgian": 1, "Israeli": 1},
+		"semitic": {"Armenian": 1, "Georgian": 1, "Israeli": 1},
 
-	southernEuropeanNationalities: {
-		"Andorran": 1,
-		"Catalan": 1,
-		"Cypriot": 1,
-		"Greek": 1,
-		"Italian": 1,
-		"Maltese": 1,
-		"Monégasque": 1,
-		"Portuguese": 1,
-		"Sammarinese": 1,
-		"Spanish": 1,
-		"Vatican": 1
-	},
+		"southern european": {
+			"Andorran": 1,
+			"Catalan": 1,
+			"Cypriot": 1,
+			"Greek": 1,
+			"Italian": 1,
+			"Maltese": 1,
+			"Monégasque": 1,
+			"Portuguese": 1,
+			"Sammarinese": 1,
+			"Spanish": 1,
+			"Vatican": 1
+		},
 
-	whiteNationalities: {
-		"Albanian": 1,
-		"American": 1,
-		"Austrian": 1,
-		"Belarusian": 1,
-		"Belgian": 1,
-		"Bosnian": 1,
-		"Brazilian": 1,
-		"British": 1,
-		"Bulgarian": 1,
-		"Canadian": 1,
-		"Croatian": 1,
-		"Czech": 1,
-		"Danish": 1,
-		"Dutch": 1,
-		"Estonian": 1,
-		"Finnish": 1,
-		"French": 1,
-		"German": 1,
-		"Hungarian": 1,
-		"Icelandic": 1,
-		"Irish": 1,
-		"Kosovan": 1,
-		"Latvian": 1,
-		"a Liechtensteiner": 1,
-		"Lithuanian": 1,
-		"Luxembourgian": 1,
-		"Macedonian": 1,
-		"Moldovan": 1,
-		"Monégasque": 1,
-		"Montenegrin": 1,
-		"a New Zealander": 1,
-		"Norwegian": 1,
-		"Polish": 1,
-		"Romanian": 1,
-		"Russian": 1,
-		"Scottish": 1,
-		"Serbian": 1,
-		"Slovak": 1,
-		"Slovene": 1,
-		"Swedish": 1,
-		"Swiss": 1,
-		"Ukrainian": 1,
-		"Vatican": 1
+		"white": {
+			"Albanian": 1,
+			"American": 1,
+			"Austrian": 1,
+			"Belarusian": 1,
+			"Belgian": 1,
+			"Bosnian": 1,
+			"Brazilian": 1,
+			"British": 1,
+			"Bulgarian": 1,
+			"Canadian": 1,
+			"Croatian": 1,
+			"Czech": 1,
+			"Danish": 1,
+			"Dutch": 1,
+			"Estonian": 1,
+			"Finnish": 1,
+			"French": 1,
+			"German": 1,
+			"Hungarian": 1,
+			"Icelandic": 1,
+			"Irish": 1,
+			"Kosovan": 1,
+			"Latvian": 1,
+			"a Liechtensteiner": 1,
+			"Lithuanian": 1,
+			"Luxembourgian": 1,
+			"Macedonian": 1,
+			"Moldovan": 1,
+			"Monégasque": 1,
+			"Montenegrin": 1,
+			"a New Zealander": 1,
+			"Norwegian": 1,
+			"Polish": 1,
+			"Romanian": 1,
+			"Russian": 1,
+			"Scottish": 1,
+			"Serbian": 1,
+			"Slovak": 1,
+			"Slovene": 1,
+			"Swedish": 1,
+			"Swiss": 1,
+			"Ukrainian": 1,
+			"Vatican": 1
+		},
 	},
 
 	badWords: ["anus", "ass", "bitch", "boob", "butt", "cock", "crap", "cum", "cunny", "cunt", "dick", "fuck", "jizz", "junk", "piss", "prick", "pussy", "shit", "slave", "slut", "tit", "trash", "whore"],
diff --git a/src/events/intro/customizeSlaveTrade.js b/src/events/intro/customizeSlaveTrade.js
index d8891f6ddd0bbe70591b3bcd8c755b47d6985928..eb606d0398de1207eaabb6b8cec388bce18381ab 100644
--- a/src/events/intro/customizeSlaveTrade.js
+++ b/src/events/intro/customizeSlaveTrade.js
@@ -209,7 +209,7 @@ App.Intro.CustomSlaveTrade = function() {
 			}
 		} else {
 			/* Filtered pop controls */
-			const controlsNationality = setup[baseControlsFilter + 'Nationalities'];
+			const controlsNationality = setup.nationalitiesByRace[baseControlsFilter] || setup[baseControlsFilter + 'Nationalities'];
 			const keys = Object.keys(controlsNationality);
 			for (const nation of keys) {
 				const li = document.createElement("LI");
diff --git a/src/npc/generate/slaveGenerationJS.js b/src/npc/generate/slaveGenerationJS.js
index 69e6c88c14b5e570f370fc1fa6141cce661dd5f2..9f7e466bc3e3e445bfbb641a86646deb28a80646 100644
--- a/src/npc/generate/slaveGenerationJS.js
+++ b/src/npc/generate/slaveGenerationJS.js
@@ -18,9 +18,8 @@ globalThis.raceToNationality = function(slave) {
 	}
 	/* No success after 100 attempts, so just randomize according to race */
 	if (setup.raceSelector[slave.nationality] && !(slave.race in setup.raceSelector[slave.nationality]) && i === 100) {
-		const nationalityKey = `${slave.race.toLowerCase().replace(/[ -]/g, "")}Nationalities`;
-		if (nationalityKey in setup) {
-			slave.nationality = hashChoice(setup[nationalityKey]);
+		if (slave.race in setup.nationalitiesByRace) {
+			slave.nationality = hashChoice(setup.nationalitiesByRace[slave.race]);
 		} else {
 			slave.nationality = "Stateless";
 		}