diff --git a/src/pregmod/widgets/pregmodWidgets.tw b/src/pregmod/widgets/pregmodWidgets.tw
index ae8d24df58f0c9c9d8ff2258a9b95dc3eeff3694..93b2f10a13bb336af061c7906a146bb81f640a80 100644
--- a/src/pregmod/widgets/pregmodWidgets.tw
+++ b/src/pregmod/widgets/pregmodWidgets.tw
@@ -1205,20 +1205,38 @@ extremely pale -5
 
 <<widget "ParentNames">>
 <<set _currentSlaveNames = $slaves.map(s => s.slaveName)>>
-<<set _sanityCheck = '>>', /* to appease sanityCheck */
-	$args[1].slaveName = generateName($args[0].nationality, $args[1].race, $args[1].genes === "XY", sn => !_currentSlaveNames.includes(sn))>>
-<<if !$args[1].slaveName>>
-	/* we ran out of names ... How? */
-	<<set _maxTries = 10>>
-	<<for _maxTries > 0 && !$args[1].slaveName>>
-		<<set _continentNationality = hashChoice($nationalities)>>
-		<<set _sanityCheck = '>>', /* to appease sanityCheck */
-			$args[1].slaveName = generateName(_continentNationality, $args[1].race, $args[1].genes === "XY", sn => !_currentSlaveNames.includes(sn))>>
-	<</for>>
-<</if>>
-<<if !$args[1].slaveName>>
-	/* give up, duplicate name is fine I guess */
-	<<set $args[1].slaveName = generateName($args[0].nationality, $args[1].race, $args[1].genes === "XY")>>
+<<if $allowMaleSlaveNames>>
+	<<set _sanityCheck = '>>', /* to appease sanityCheck */
+		$args[1].slaveName = generateName($args[0].nationality, $args[1].race, $args[1].genes === "XY", sn => !_currentSlaveNames.includes(sn))>>
+	<<if !$args[1].slaveName>>
+		/* we ran out of names ... How? */
+		<<set _maxTries = 10>>
+		<<for _maxTries > 0 && !$args[1].slaveName>>
+			<<set _continentNationality = hashChoice($nationalities)>>
+			<<set _sanityCheck = '>>', /* to appease sanityCheck */
+				$args[1].slaveName = generateName(_continentNationality, $args[1].race, $args[1].genes === "XY", sn => !_currentSlaveNames.includes(sn))>>
+		<</for>>
+	<</if>>
+	<<if !$args[1].slaveName>>
+		/* give up, duplicate name is fine I guess */
+		<<set $args[1].slaveName = generateName($args[0].nationality, $args[1].race, $args[1].genes === "XY")>>
+	<</if>>
+<<else>>
+	<<set _sanityCheck = '>>', /* to appease sanityCheck */
+		$args[1].slaveName = generateName($args[0].nationality, $args[1].race, false, sn => !_currentSlaveNames.includes(sn))>>
+	<<if !$args[1].slaveName>>
+		/* we ran out of names ... How? */
+		<<set _maxTries = 10>>
+		<<for _maxTries > 0 && !$args[1].slaveName>>
+			<<set _continentNationality = hashChoice($nationalities)>>
+			<<set _sanityCheck = '>>', /* to appease sanityCheck */
+				$args[1].slaveName = generateName(_continentNationality, $args[1].race, false, sn => !_currentSlaveNames.includes(sn))>>
+		<</for>>
+	<</if>>
+	<<if !$args[1].slaveName>>
+		/* give up, duplicate name is fine I guess */
+		<<set $args[1].slaveName = generateName($args[0].nationality, $args[1].race, false)>>
+	<</if>>
 <</if>>
 <<unset _currentSlaveNames, _maxTries, _continentNationality>>
 <</widget>>