diff --git a/src/init/storyInit.tw b/src/init/storyInit.tw
index 13b0aa9e271da18e5d88c65ee8a1b123a14caa70..dbdbcf65d100d1dbcc6783c13ca46f28fc044d20 100644
--- a/src/init/storyInit.tw
+++ b/src/init/storyInit.tw
@@ -887,8 +887,8 @@ You should have received a copy of the GNU General Public License along with thi
 
 /* assistant FS appearance variable */
 <<set $assistantFSAppearance = "default">>
-<<set $assistantPronouns = {pronoun: "it", possessivePronoun: "its", possessive: "its", object: "it", objectReflexive: "itself", noun: "program"}>>
-<<set $marketAssistantPronouns = {pronoun: "it", possessivePronoun: "its", possessive: "its", object: "it", objectReflexive: "itself", noun: "program"}>>
+<<set $assistantPronouns = {pronoun: App.Data.Pronouns.Kind.ai}>>
+<<set $marketAssistantPronouns = {pronoun: App.Data.Pronouns.Kind.ai}>>
 
 /*pregmod variables */
 <<set $specialSlavesPriceOverride = 0>>
diff --git a/src/js/utilJS.js b/src/js/utilJS.js
index 727b474331912e60eeec876aa126cf5d55ba624f..cccec986969696394bfb8edab87ff1f4434d407a 100644
--- a/src/js/utilJS.js
+++ b/src/js/utilJS.js
@@ -3042,7 +3042,8 @@ App.Utils.setLocalPronouns = function(slave, suffix, pronouns) {
 		'He', 'Him', 'His', 'Himself', 'Boy',
 		'she', 'her', 'hers', 'herself', 'girl',
 		'She', 'Her', 'Hers', 'Herself', 'Girl',
-		'woman', 'women', 'loli'
+		'woman', 'women', 'loli',
+		'Woman', 'Women', 'Loli'
 	];
 
 	const scope = pSuffix.length === 0 ? State.variables : State.temporary;
diff --git a/src/pregmod/widgets/pregmodWidgets.tw b/src/pregmod/widgets/pregmodWidgets.tw
index b1ad071d58473543e73b7fca34c5d413173d6b2f..e60b8737ce34bd24cbfedf7e2b92c160cfa5a14c 100644
--- a/src/pregmod/widgets/pregmodWidgets.tw
+++ b/src/pregmod/widgets/pregmodWidgets.tw
@@ -209,120 +209,34 @@
 <</widget>>
 
 <<widget "setNonlocalPronouns">>
+	/* a fake slave object, we need the .pronoun attribute only */
+	<<set _fSlave = {pronoun: App.Data.Pronouns.Kind.female}>>
 	/* Used for generic slaves, citizens, security, etc. */
-	<<if $diversePronouns != 1>>
-		<<set _gendernl = 1>>
-	<<elseif $args[0] == 100>>
-		<<set _gendernl = 2>>
-	<<elseif $args[0] == 0>>
-		<<set _gendernl = 1>>
-	<<elseif (random(1,100) <= $args[0])>>
-		<<set _gendernl = 2>>
-	<<else>>
-		<<set _gendernl = 1>>
-	<</if>>
-	<<if _gendernl == 2>>
-		<<set _heU = "he">>
-		<<set _hisU = "his">>
-		<<set _hersU = "his">>
-		<<set _himU = "him">>
-		<<set _himselfU = "himself">>
-		<<set _girlU = "boy">>
-		<<set _womanU = "man">>
-		<<set _loliU = "shota">>
-		<<set _womenU = "men">>
-		<<set _HeU = "He">>
-		<<set _HisU = "His">>
-		<<set _HersU = "His">>
-		<<set _HimU = "Him">>
-		<<set _HimselfU = "Himself">>
-		<<set _GirlU = "Boy">>
-		<<set _WomanU = "Man">>
-		<<set _LoliU = "Shota">>
-		<<set _WomenU = "Men">>
-	<<else>>
-		<<set _heU = "she">>
-		<<set _hisU = "her">>
-		<<set _hersU = "hers">>
-		<<set _himU = "her">>
-		<<set _himselfU = "herself">>
-		<<set _girlU = "girl">>
-		<<set _womanU = "woman">>
-		<<set _loliU = "loli">>
-		<<set _womenU = "women">>
-		<<set _HeU = "She">>
-		<<set _HisU = "Her">>
-		<<set _HersU = "Hers">>
-		<<set _HimU = "Her">>
-		<<set _HimselfU = "Herself">>
-		<<set _GirlU = "Girl">>
-		<<set _WomanU = "Woman">>
-		<<set _LoliU = "Loli">>
-		<<set _WomenU = "Women">>
+	<<if $diversePronouns == 1>>
+		<<if $args[0] === 100>>
+			<<set _fSlave.pronoun = App.Data.Pronouns.Kind.male>>
+		<<elseif ($args[0] > 0) && (random(1,100) <= $args[0])>>
+			<<set _fSlave.pronoun = App.Data.Pronouns.Kind.male>>
+		<</if>>
 	<</if>>
+	<<run App.Utils.setLocalPronouns(_fSlave, 'U')>>
 <</widget>>
 
 <<widget "setPlayerPronouns">>
-	<<set _heP = $PC.pronoun>>
-	<<set _hisP = $PC.possessive>>
-	<<set _hersP = $PC.possessivePronoun>>
-	<<set _himP = $PC.object>>
-	<<set _himselfP = $PC.objectReflexive>>
-	<<set _womanP = $PC.noun>>
-	<<if _womanP == "woman">>
-		<<set _girlP = "girl", _loliP = "loli", _womenP = "women">>
-	<<else>>
-		<<set _girlP = "boy", _loliP = "shota", _womenP = "men">>
-	<</if>>
-
-	<<set _HeP = capFirstChar(_heP)>>
-	<<set _HisP = capFirstChar(_hisP)>>
-	<<set _HersP = capFirstChar(_hersP)>>
-	<<set _HimP = capFirstChar(_himP)>>
-	<<set _HimselfP = capFirstChar(_himselfP)>>
-	<<set _WomanP = capFirstChar(_womanP)>>
+	<<set _pl = ["he", "his", "hers", "him", "himself", "woman", "girl",
+		"He", "His", "Hers", "Him", "Himself", "Woman"]>>
+	<<run App.Utils.setLocalPronouns($PC, 'P', _pl)>>
+	<<unset _pl>>
 <</widget>>
 
 <<widget "setAssistantPronouns">>
-	<<set _ap = getPronouns($assistantPronouns)>>
-	<<set _girlA = _ap.noun>>
-	<<set _hisA = _ap.possessive>>
-	<<set _hersA = _ap.possessivePronoun>>
-	<<set _heA = _ap.pronoun>>
-	<<set _himA = _ap.object>>
-	<<set _himselfA = _ap.objectReflexive>>
-	<<if _girlA == "girl">>
-		<<set _womanA = "woman", _loliA = "loli", _womenA = "women">>
-	<<else>>
-		<<set _womanA = "man", _loliA = "shota", _womenA = "men">>
-	<</if>>
-
-	<<set _GirlA = capFirstChar(_girlA)>>
-	<<set _HisA = capFirstChar(_hisA)>>
-	<<set _HersA = capFirstChar(_hersA)>>
-	<<set _HeA = capFirstChar(_heA)>>
-	<<set _HimA = capFirstChar(_himA)>>
-	<<set _HimselfA = capFirstChar(_himselfA)>>
-
-	<<set _amp = getPronouns($marketAssistantPronouns)>>
-	<<set _girlM = _amp.noun>>
-	<<set _hisM = _amp.possessive>>
-	<<set _hersM = _amp.possessivePronoun>>
-	<<set _heM = _amp.pronoun>>
-	<<set _himM = _amp.object>>
-	<<set _himselfM = _amp.objectReflexive>>
-	<<if _girlM == "girl">>
-		<<set _womanM = "woman", _loliM = "loli", _womenM = "women">>
-	<<else>>
-		<<set _womanM = "man", _loliM = "shota", _womenM = "men">>
-	<</if>>
+	<<set _apl = ["he", "his", "him", "himself",
+		"hers", "girl", "woman",
+		"Girl", "His", "Hers", "He", "Him", "Himself"]>>
 
-	<<set _GirlM = capFirstChar(_girlM)>>
-	<<set _HisM = capFirstChar(_hisM)>>
-	<<set _HersM = capFirstChar(_hersM)>>
-	<<set _HeM = capFirstChar(_heM)>>
-	<<set _HimM = capFirstChar(_himM)>>
-	<<set _HimselfM = capFirstChar(_himselfM)>>
+	<<run App.Utils.setLocalPronouns($assistantPronouns, 'A', _apl)>>
+	<<run App.Utils.setLocalPronouns($marketAssistantPronouns, 'M', _apl)>>
+	<<unset _apl>>
 <</widget>>
 
 /*