diff --git a/Changelog.txt b/Changelog.txt
index 82706bacd691dc355c8f588bfccb26c9d9aec9e1..3051f5acc0ca5c09b93664cecd22f36b62f74a28 100644
--- a/Changelog.txt
+++ b/Changelog.txt
@@ -1,22 +1,26 @@
 Pregmod
 
-0.10.7.1-3.2.x
+0.10.7.1-3.3.x
 
-	2
-	-tiredness overhauled
+	0
+	-tiredness overhauled (temp disabled)
 	-illness tweaked
 	-slave performance listing
 	-debug beauty/FResult listing
 	-reminder system
 	-engineering & warfare personal attention options
+	-better defined breast and butt implant types
 	-porn/ads code optimization
 	-arcology structure optimization
 	-expanded racial eye, hair and skin color ranges
 	-royal blood event can now use real dynasties
 	-CSS replacing SC formatting
 	-code consolidation
+	-major code structure improvements
 	-various fixes and balance changes
 
+0.10.7.1-3.2.x
+
 	12/26/2019
 
 	1
diff --git a/devNotes/colorCSS.txt b/devNotes/colorCSS.txt
index b0f4d786f71727202a8bdcb26d1ec7eed6c0bbd8..64f6398d673e407a86100861e0bcac5374aa6c8d 100644
--- a/devNotes/colorCSS.txt
+++ b/devNotes/colorCSS.txt
@@ -3,7 +3,7 @@ class names that are not final are marked, this list is NOT exhaustive and subje
 Note for mass replacing: The following cases have to be checked:
 	@@.trust.inc;
 	<span class="trust inc">
-	App.UI.DOM.makeSpan('string', ['trust', 'inc']);
+	App.UI.DOM.makeElement('string', 'string', ['trust', 'inc']);
 
 CLASS         -   COLOR
 
diff --git a/devTools/FC.d.ts b/devTools/FC.d.ts
index f1186870e854dd6e4b17419c2ab133371eae910d..19c0f79fbcc87ee64d8e3b3912141584e2d10edc 100644
--- a/devTools/FC.d.ts
+++ b/devTools/FC.d.ts
@@ -199,7 +199,7 @@ declare namespace App {
 			XX: number;
 			gelding: number;
 			preg: boolean;
-			abortion: string;
+			abortion: string[];
 			growth: RuleGrowthSetters;
 			hyper_drugs: number;
 			aphrodisiacs: number;
diff --git a/js/003-data/miscData.js b/js/003-data/miscData.js
index 7cea54214556f4d5eb35a49d0962598fafc848cc..79b06b0afeb7eb905ff79032a6344949b0c04f5d 100644
--- a/js/003-data/miscData.js
+++ b/js/003-data/miscData.js
@@ -1912,180 +1912,292 @@ App.Data.misc = {
 			name: "Maternity lingerie",
 			value: "attractive lingerie for a pregnant woman",
 			fs: "FSRepopulationFocus",
-			unlock: {clothesBoughtMaternityLingerie: 1}
+			rs: "clothesBoughtMaternityLingerie"
 		},
 		{
 			name: "Bunny outfit",
 			value: "a bunny outfit",
 			fs: "FSGenderFundamentalist",
-			unlock: {clothesBoughtBunny: 1}
+			rs: "clothesBoughtBunny"
 		},
 		{
 			name: "Body oil",
 			value: "body oil",
 			fs: "FSPhysicalIdealist",
-			unlock: {clothesBoughtOil: 1}
+			rs: "clothesBoughtOil"
 		},
 		{
 			name: "Chattel habit",
 			value: "a chattel habit",
 			fs: "FSChattelReligionist",
-			unlock: {clothesBoughtHabit: 1}
+			rs: "clothesBoughtHabit"
 		},
 		{
 			name: "Conservative clothing",
 			value: "conservative clothing",
 			fs: "FSPaternalist",
-			unlock: {clothesBoughtConservative: 1}
+			rs: "clothesBoughtConservative"
 		},
 		{
 			name: "Harem gauze",
 			value: "harem gauze",
 			fs: "FSArabianRevivalist",
-			unlock: {clothesBoughtHarem: 1}
+			rs: "clothesBoughtHarem"
 		},
 		{
 			name: "Huipil",
 			value: "a huipil",
 			fs: "FSAztecRevivalist",
-			unlock: {clothesBoughtHuipil: 1}
+			rs: "clothesBoughtHuipil"
 		},
 		{
 			name: "Kimono",
 			value: "a kimono",
 			fs: "FSEdoRevivalist",
-			unlock: {clothesBoughtKimono: 1, continent: "Japan"}
+			rs: {
+				either: {
+					clothesBoughtKimono: 1,
+					continent: "Japan"
+				}
+			}
 		},
 		{
 			name: "Maternity dress",
 			value: "a maternity dress",
 			fs: "FSRepopulationFocus",
-			unlock: {clothesBoughtMaternityDress: 1}
+			rs: "clothesBoughtMaternityDress"
 		},
 		{
 			name: "Qipao (slutty)",
 			value: "a slutty qipao",
 			fs: "FSChineseRevivalist",
-			unlock: {clothesBoughtQipao: 1}
+			rs: "clothesBoughtQipao"
 		},
 		{
 			name: "Qipao (long)",
 			value: "a long qipao",
 			fs: "FSChineseRevivalist",
-			unlock: {clothesBoughtCultural: 1}
+			rs: "clothesBoughtCultural"
 		},
 		{
 			name: "Stretch pants and a crop-top",
 			value: "stretch pants and a crop-top",
 			fs: "FSHedonisticDecadence",
-			unlock: {clothesBoughtLazyClothes: 1}
+			rs: "clothesBoughtLazyClothes"
 		},
 		{
 			name: "Toga",
 			value: "a toga",
 			fs: "FSRomanRevivalist",
-			unlock: {clothesBoughtToga: 1}
+			rs: "clothesBoughtToga"
 		},
 		{
 			name: "Western clothing",
 			value: "Western clothing",
 			fs: "FSPastoralist",
-			unlock: {clothesBoughtWestern: 1}
+			rs: "clothesBoughtWestern"
 		},
 		{
 			name: "Courtesan dress",
 			value: "a courtesan dress",
 			fs: "FSSlaveProfessionalism",
-			unlock: {clothesBoughtCourtesan: 1}
+			rs: "clothesBoughtCourtesan"
 		},
 		{
 			name: "Bimbo outfit",
 			value: "a bimbo outfit",
 			fs: "FSIntellectualDependency",
-			unlock: {clothesBoughtBimbo: 1}
+			rs: "clothesBoughtBimbo"
 		},
 		{
 			name: "Petite admi outfit",
 			value: "petite admi outfit",
 			fs: "FSPetiteAdmiration",
-			unlock: {clothesBoughtPetite: 1}
-		},
-		{name: "Battlearmor", value: "battlearmor", unlock: {clothesBoughtMilitary: 1}},
-		{name: "Military uniform", value: "a military uniform", unlock: {clothesBoughtMilitary: 1}},
-		{name: "Red Army uniform", value: "a red army uniform", unlock: {clothesBoughtMilitary: 1}},
-		{name: "Battledress", value: "battledress", unlock: {clothesBoughtMilitary: 1}},
-		{name: "Biyelgee costume", value: "a biyelgee costume", unlock: {clothesBoughtCultural: 1}},
-		{name: "Dirndl", value: "a dirndl", unlock: {clothesBoughtCultural: 1}},
-		{name: "Lederhosen", value: "lederhosen", unlock: {clothesBoughtCultural: 1}},
-		{name: "Mounty outfit", value: "a mounty outfit", unlock: {clothesBoughtCultural: 1}},
-		{name: "Hanbok", value: "a hanbok", unlock: {clothesBoughtCultural: 1}},
-		{name: "Burqa", value: "a burqa", unlock: {clothesBoughtMiddleEastern: 1, continent: "the Middle East"}},
-		{name: "Niqab and abaya", value: "a niqab and abaya", unlock: {clothesBoughtMiddleEastern: 1, continent: "the Middle East"}},
-		{name: "Hijab and blouse", value: "a hijab and blouse", unlock: {clothesBoughtMiddleEastern: 1, clothesBoughtConservative: 1, continent: "the Middle East"}},
-		{name: "Burkini", value: "a burkini", unlock: {clothesBoughtMiddleEastern: 1, clothesBoughtSwimwear: 1, continent: "the Middle East"}},
-		{name: "Santa dress", value: "a Santa dress", unlock: {clothesBoughtCostume: 1}},
-
-		{name: "Klan robe", value: "a klan robe", unlock: {clothesBoughtPol: 1}},
-		{name: "Slutty klan robe", value: "a slutty klan robe", unlock: {clothesBoughtPol: 1}},
-		{name: "Schutzstaffel uniform", value: "a schutzstaffel uniform", unlock: {clothesBoughtPol: 1}},
-		{name: "Slutty schutzstaffel uniform", value: "a slutty schutzstaffel uniform", unlock: {clothesBoughtPol: 1}},
-
-		{name: "Nice business attire", value: "nice business attire", unlock: {clothesBoughtCareer: 1}},
-		{name: "Nurse (nice)", value: "a nice nurse outfit", unlock: {clothesBoughtCareer: 1}},
-		{name: "Police uniform", value: "a police uniform", unlock: {clothesBoughtCareer: 1}},
-		{name: "Maid (nice)", value: "a nice maid outfit", unlock: {clothesBoughtCareer: 1, "PC.career": "servant"}},
-
-		{name: "Ballgown", value: "a ball gown", unlock: {clothesBoughtDresses: 1}},
-		{name: "Gothic lolita dress", value: "a gothic lolita dress", unlock: {clothesBoughtDresses: 1}},
-
-		{name: "Cybersuit", value: "a cybersuit", unlock: {clothesBoughtBodysuits: 1}},
-		{name: "Latex catsuit", value: "a latex catsuit", unlock: {clothesBoughtBodysuits: 1}},
-
-		{name: "Button-up shirt and panties", value: "a button-up shirt and panties", unlock: {clothesBoughtCasual: 1}},
-		{name: "Button-up shirt", value: "a button-up shirt", unlock: {clothesBoughtCasual: 1}},
-		{name: "Cutoffs", value: "cutoffs", unlock: {clothesBoughtCasual: 1}},
-		{name: "Jeans", value: "jeans", unlock: {clothesBoughtCasual: 1}},
-		{name: "Leather pants and a tube top", value: "leather pants and a tube top", unlock: {clothesBoughtCasual: 1}},
-		{name: "Leather pants", value: "leather pants", unlock: {clothesBoughtCasual: 1}},
-		{name: "Oversized t-shirt", value: "an oversized t-shirt", unlock: {clothesBoughtCasual: 1}},
-		{name: "Sweater and cutoffs", value: "a sweater and cutoffs", unlock: {clothesBoughtCasual: 1}},
-		{name: "Sweater and panties", value: "a sweater and panties", unlock: {clothesBoughtCasual: 1}},
-		{name: "Sweater", value: "a sweater", unlock: {clothesBoughtCasual: 1}},
-		{name: "T-shirt and jeans", value: "a t-shirt and jeans", unlock: {clothesBoughtCasual: 1}},
-		{name: "T-shirt and panties", value: "a t-shirt and panties", unlock: {clothesBoughtCasual: 1}},
-		{name: "T-shirt", value: "a t-shirt", unlock: {clothesBoughtCasual: 1}},
-		{name: "Tank-top and panties", value: "a tank-top and panties", unlock: {clothesBoughtCasual: 1}},
-		{name: "Tank-top", value: "a tank-top", unlock: {clothesBoughtCasual: 1}},
-		{name: "Tube top", value: "a tube top", unlock: {clothesBoughtCasual: 1}},
-
-		{name: "Boyshorts", value: "boyshorts", unlock: {clothesBoughtUnderwear: 1}},
-		{name: "Bra", value: "a bra", unlock: {clothesBoughtUnderwear: 1}},
-		{name: "Kitty lingerie", value: "kitty lingerie", unlock: {clothesBoughtUnderwear: 1}},
-		{name: "Panties and pasties", value: "panties and pasties", unlock: {clothesBoughtUnderwear: 1}},
-		{name: "Skimpy loincloth", value: "a skimpy loincloth", unlock: {clothesBoughtUnderwear: 1}},
-		{name: "Thong", value: "a thong", unlock: {clothesBoughtUnderwear: 1}},
-		{name: "Pasties", value: "pasties", unlock: {clothesBoughtUnderwear: 1}},
-
-		{name: "Leather pants and pasties", value: "leather pants and pasties", unlock: {clothesBoughtUnderwear: 1, clothesBoughtCasual: 1}},
-		{name: "T-shirt and thong", value: "a t-shirt and thong", unlock: {clothesBoughtUnderwear: 1, clothesBoughtCasual: 1}},
-		{name: "Tube top and thong", value: "a tube top and thong", unlock: {clothesBoughtUnderwear: 1, clothesBoughtCasual: 1}},
-		{name: "Oversized t-shirt and boyshorts", value: "an oversized t-shirt and boyshorts", unlock: {clothesBoughtUnderwear: 1, clothesBoughtCasual: 1}},
-
-		{name: "Sport shorts and a sports bra", value: "sport shorts and a sports bra", unlock: {clothesBoughtSports: 1}},
-		{name: "Sport shorts", value: "sport shorts", unlock: {clothesBoughtSports: 1}},
-		{name: "Sports bra", value: "a sports bra", unlock: {clothesBoughtSports: 1}},
-
-		{name: "Sport shorts and a t-shirt", value: "sport shorts and a t-shirt", unlock: {clothesBoughtSports: 1, clothesBoughtCasual: 1}}, // note both unlocks should be met for this one, not just either.
-
-		{name: "Pony outfit (nice)", value: "a nice pony outfit", unlock: {clothesBoughtPony: 1}},
-		{name: "Pony outfit (slutty)", value: "a slutty pony outfit", unlock: {clothesBoughtPony: 1}},
-
-		{name: "Monokini", value: "a monokini", unlock: {clothesBoughtSwimwear: 1}},
-		{name: "One-piece swimsuit", value: "a one-piece swimsuit", unlock: {clothesBoughtSwimwear: 1}},
-
-		{name: "Striped bra", value: "a striped bra", unlock: {clothesBoughtPantsu: 1, continent: "Japan"}},
-		{name: "Striped panties", value: "striped panties", unlock: {clothesBoughtPantsu: 1, continent: "Japan"}},
-		{name: "Striped underwear", value: "striped underwear", unlock: {clothesBoughtPantsu: 1, continent: "Japan"}},
+			rs: "clothesBoughtPetite"
+		},
+		{name: "Battlearmor", value: "battlearmor", rs: "clothesBoughtMilitary"},
+		{name: "Military uniform", value: "a military uniform", rs: "clothesBoughtMilitary"},
+		{name: "Red Army uniform", value: "a red army uniform", rs: "clothesBoughtMilitary"},
+		{name: "Battledress", value: "battledress", rs: "clothesBoughtMilitary"},
+		{name: "Biyelgee costume", value: "a biyelgee costume", rs: "clothesBoughtCultural"},
+		{name: "Dirndl", value: "a dirndl", rs: "clothesBoughtCultural"},
+		{name: "Lederhosen", value: "lederhosen", rs: "clothesBoughtCultural"},
+		{name: "Mounty outfit", value: "a mounty outfit", rs: "clothesBoughtCultural"},
+		{name: "Hanbok", value: "a hanbok", rs: "clothesBoughtCultural"},
+		{
+			name: "Burqa",
+			value: "a burqa",
+			rs: {
+				either: {
+					clothesBoughtMiddleEastern: 1,
+					continent: "the Middle East"
+				}
+			}
+		},
+		{
+			name: "Niqab and abaya",
+			value: "a niqab and abaya",
+			rs: {
+				either: {
+					clothesBoughtMiddleEastern: 1,
+					continent: "the Middle East"
+				}
+			}
+		},
+		{
+			name: "Hijab and blouse",
+			value: "a hijab and blouse",
+			rs: {
+				either: {
+					clothesBoughtConservative: 1,
+					continent: "the Middle East"
+				}
+			}
+		},
+		{
+			name: "Burkini",
+			value: "a burkini",
+			rs: {
+				clothesBoughtSwimwear: 1,
+				either: {
+					clothesBoughtMiddleEastern: 1,
+					continent: "the Middle East"
+				}
+			}
+		},
+		{name: "Santa dress", value: "a Santa dress", rs: "clothesBoughtCostume"},
+
+		{name: "Klan robe", value: "a klan robe", rs: "clothesBoughtPol"},
+		{name: "Slutty klan robe", value: "a slutty klan robe", rs: "clothesBoughtPol"},
+		{name: "Schutzstaffel uniform", value: "a schutzstaffel uniform", rs: "clothesBoughtPol"},
+		{name: "Slutty schutzstaffel uniform", value: "a slutty schutzstaffel uniform", rs: "clothesBoughtPol"},
+
+		{name: "Nice business attire", value: "nice business attire", rs: "clothesBoughtCareer"},
+		{name: "Nurse (nice)", value: "a nice nurse outfit", rs: "clothesBoughtCareer"},
+		{name: "Police uniform", value: "a police uniform", rs: "clothesBoughtCareer"},
+		{
+			name: "Maid (nice)",
+			value: "a nice maid outfit",
+			rs: {
+				either: {
+					clothesBoughtCareer: 1,
+					PC: {
+						career: "servant"
+					}
+				}
+			}
+		},
+
+		{name: "Ballgown", value: "a ball gown", rs: "clothesBoughtDresses"},
+		{name: "Gothic lolita dress", value: "a gothic lolita dress", rs: "clothesBoughtDresses"},
+
+		{name: "Cybersuit", value: "a cybersuit", rs: "clothesBoughtBodysuits"},
+		{name: "Latex catsuit", value: "a latex catsuit", rs: "clothesBoughtBodysuits"},
+
+		{name: "Button-up shirt and panties", value: "a button-up shirt and panties", rs: "clothesBoughtCasual"},
+		{name: "Button-up shirt", value: "a button-up shirt", rs: "clothesBoughtCasual"},
+		{name: "Cutoffs", value: "cutoffs", rs: "clothesBoughtCasual"},
+		{name: "Jeans", value: "jeans", rs: "clothesBoughtCasual"},
+		{name: "Leather pants and a tube top", value: "leather pants and a tube top", rs: "clothesBoughtCasual"},
+		{name: "Leather pants", value: "leather pants", rs: "clothesBoughtCasual"},
+		{name: "Oversized t-shirt", value: "an oversized t-shirt", rs: "clothesBoughtCasual"},
+		{name: "Sweater and cutoffs", value: "a sweater and cutoffs", rs: "clothesBoughtCasual"},
+		{name: "Sweater and panties", value: "a sweater and panties", rs: "clothesBoughtCasual"},
+		{name: "Sweater", value: "a sweater", rs: "clothesBoughtCasual"},
+		{name: "T-shirt and jeans", value: "a t-shirt and jeans", rs: "clothesBoughtCasual"},
+		{name: "T-shirt and panties", value: "a t-shirt and panties", rs: "clothesBoughtCasual"},
+		{name: "T-shirt", value: "a t-shirt", rs: "clothesBoughtCasual"},
+		{name: "Tank-top and panties", value: "a tank-top and panties", rs: "clothesBoughtCasual"},
+		{name: "Tank-top", value: "a tank-top", rs: "clothesBoughtCasual"},
+		{name: "Tube top", value: "a tube top", rs: "clothesBoughtCasual"},
+
+		{name: "Boyshorts", value: "boyshorts", rs: "clothesBoughtUnderwear"},
+		{name: "Bra", value: "a bra", rs: "clothesBoughtUnderwear"},
+		{name: "Kitty lingerie", value: "kitty lingerie", rs: "clothesBoughtUnderwear"},
+		{name: "Panties and pasties", value: "panties and pasties", rs: "clothesBoughtUnderwear"},
+		{name: "Skimpy loincloth", value: "a skimpy loincloth", rs: "clothesBoughtUnderwear"},
+		{name: "Thong", value: "a thong", rs: "clothesBoughtUnderwear"},
+		{name: "Pasties", value: "pasties", rs: "clothesBoughtUnderwear"},
+
+		{
+			name: "Leather pants and pasties",
+			value: "leather pants and pasties",
+			rs: {
+				clothesBoughtUnderwear: 1,
+				clothesBoughtCasual: 1
+			}
+		},
+		{
+			name: "T-shirt and thong",
+			value: "a t-shirt and thong",
+			rs: {
+				clothesBoughtUnderwear: 1,
+				clothesBoughtCasual: 1
+			}
+		},
+		{
+			name: "Tube top and thong",
+			value: "a tube top and thong",
+			rs: {
+				clothesBoughtUnderwear: 1,
+				clothesBoughtCasual: 1
+			}
+		},
+		{
+			name: "Oversized t-shirt and boyshorts",
+			value: "an oversized t-shirt and boyshorts",
+			rs: {
+				clothesBoughtUnderwear: 1,
+				clothesBoughtCasual: 1
+			}
+		},
+		{name: "Sport shorts and a sports bra", value: "sport shorts and a sports bra", rs: "clothesBoughtSports"},
+		{name: "Sport shorts", value: "sport shorts", rs: "clothesBoughtSports"},
+		{name: "Sports bra", value: "a sports bra", rs: "clothesBoughtSports"},
+		{
+			name: "Sport shorts and a t-shirt",
+			value: "sport shorts and a t-shirt",
+			rs: {
+				clothesBoughtSports: 1,
+				clothesBoughtCasual: 1
+			}
+		},
+		{name: "Pony outfit (nice)", value: "a nice pony outfit", rs: "clothesBoughtPony"},
+		{name: "Pony outfit (slutty)", value: "a slutty pony outfit", rs: "clothesBoughtPony"},
+
+		{name: "Monokini", value: "a monokini", rs: "clothesBoughtSwimwear"},
+		{name: "One-piece swimsuit", value: "a one-piece swimsuit", rs: "clothesBoughtSwimwear"},
+
+		{
+			name: "Striped bra",
+			value: "a striped bra",
+			rs: {
+				either: {
+					clothesBoughtPantsu: 1,
+					continent: "Japan"
+				}
+			}
+		},
+		{
+			name: "Striped panties",
+			value: "striped panties",
+			rs: {
+				either: {
+					clothesBoughtPantsu: 1,
+					continent: "Japan"
+				}
+			}
+		},
+		{
+			name: "Striped underwear",
+			value: "striped underwear",
+			rs: {
+				either: {
+					clothesBoughtPantsu: 1,
+					continent: "Japan"
+				}
+			}
+		},
 
 		// "Normal" things:
 		{name: "Apron", value: "an apron"},
@@ -2111,7 +2223,7 @@ App.Data.misc = {
 		{name: "Succubus costume", value: "a succubus outfit"},
 		{name: "Suit (slutty)", value: "slutty business attire"},
 
-		// {name: "Let them choose", value: "choosing her own clothes"}, //an option, but not one we need to return.  Human eyes only.
+		{name: "Let them choose", value: "choosing her own clothes"},
 		{name: "Haltertop dress", value: "a halter top dress"},
 		{name: "Slave gown", value: "a slave gown"}
 	],
@@ -2120,7 +2232,7 @@ App.Data.misc = {
 			name: "Chains",
 			value: "chains",
 			fs: "FSDegradationist",
-			unlock: {clothesBoughtChains: 1}
+			rs: "clothesBoughtChains"
 		},
 		{name: "Go naked", value: "no clothing"},
 		{name: "Penitent nun", value: "a penitent nuns habit"},
@@ -2139,10 +2251,16 @@ App.Data.misc = {
 		{name: "Bell", value: "bell collar"},
 		{name: "Cowbell", value: "leather with cowbell"},
 		{
-			name: "Bowtie collar", value: "bowtie", fs: "FSGenderFundamentalist", rs: "clothesBoughtBunny"
+			name: "Bowtie collar",
+			value: "bowtie",
+			fs: "FSGenderFundamentalist",
+			rs: "clothesBoughtBunny"
 		},
 		{
-			name: "Ancient Egyptian", value: "ancient Egyptian", fs: "FSEgyptianRevivalist", rs: "clothesBoughtEgypt"
+			name: "Ancient Egyptian",
+			value: "ancient Egyptian",
+			fs: "FSEgyptianRevivalist",
+			rs: "clothesBoughtEgypt"
 		},
 	],
 
@@ -2195,66 +2313,230 @@ App.Data.misc = {
 		{
 			name: "1st Trimester belly",
 			value: "a small empathy belly",
-			fs: "repopulation",
+			fs: "FSRepopulationFocus",
 			rs: "boughtBelly"
 		},
 		{
 			name: "2nd Trimester belly",
 			value: "a medium empathy belly",
-			fs: "repopulation",
+			fs: "FSRepopulationFocus",
 			rs: "boughtBelly"
 		},
 		{
 			name: "3rd Trimester belly",
 			value: "a large empathy belly",
-			fs: "repopulation",
+			fs: "FSRepopulationFocus",
 			rs: "boughtBelly"
 		},
 		{
 			name: "3rd Trimester twins belly",
 			value: "a huge empathy belly",
-			fs: "repopulation",
+			fs: "FSRepopulationFocus",
 			rs: "boughtBelly"
 		}
 	],
 
-	vaginalAccessories: [
-		{name: "None", value: "none"},
-		{name: "Bullet vibrator", value: "bullet vibrator"},
-		{name: "Smart bullet vibrator", value: "smart bullet vibrator"},
-		{name: "Dildo", value: "dildo"},
-		{name: "Long dildo", value: "long dildo", rs: "buyBigDildos"},
-		{name: "Large dildo", value: "large dildo"},
-		{name: "Long, large dildo", value: "long, large dildo", rs: "buyBigDildos"},
-		{name: "Huge dildo", value: "huge dildo"},
-		{name: "Long, huge dildo", value: "long, huge dildo", rs: "buyBigDildos"}
+	vaginalAccessories: [{
+			name: "None",
+			value: "none"
+		},
+		{
+			name: "Bullet vibrator",
+			value: "bullet vibrator"
+		},
+		{
+			name: "Smart bullet vibrator",
+			value: "smart bullet vibrator",
+			rs: "toysBoughtSmartVibes"
+		},
+		{
+			name: "Dildo",
+			value: "dildo"
+		},
+		{
+			name: "Long dildo",
+			value: "long dildo",
+			rs: "buyBigDildos"
+		},
+		{
+			name: "Large dildo",
+			value: "large dildo"
+		},
+		{
+			name: "Long, large dildo",
+			value: "long, large dildo",
+			rs: "buyBigDildos"
+		},
+		{
+			name: "Huge dildo",
+			value: "huge dildo"
+		},
+		{
+			name: "Long, huge dildo",
+			value: "long, huge dildo",
+			rs: "buyBigDildos"
+		}
 	],
 
 	vaginalAttachments: [
 		{name: "None", value: "none"},
-		{name: "Vibrating attachment", value: "vibrator"}
+		{
+			name: "Vibrating attachment",
+			value: "vibrator",
+		}
 	],
 
 	dickAccessories: [
-		{name: "None", value: "none"}
+		{name: "None", value: "none"},
+		{
+			name: "Bullet vibrator",
+			value: "bullet vibrator"
+		},
+		{
+			name: "Smart bullet vibrator",
+			value: "smart bullet vibrator"
+		}
 	],
 
-	buttplugs: [
-		{name: "None", value: "none"},
-		{name: "Standard plug", value: "plug"},
-		{name: "Long plug", value: "long plug", rs: "buyBigPlugs"},
-		{name: "Large plug", value: "large plug"},
-		{name: "Long, large plug", value: "long, large plug", rs: "buyBigPlugs"},
-		{name: "Huge plug", value: "huge plug"},
-		{name: "Long, huge plug", value: "long, huge plug", rs: "buyBigPlugs"}
+	buttplugs: [{
+			name: "None",
+			value: "none"
+		},
+		{
+			name: "Standard plug",
+			value: "plug"
+		},
+		{
+			name: "Long plug",
+			value: "long plug",
+			rs: "toysBoughtButtPlugs"
+		},
+		{
+			name: "Large plug",
+			value: "large plug"
+		},
+		{
+			name: "Long, large plug",
+			value: "long, large plug",
+			rs: "toysBoughtButtPlugs",
+		},
+		{
+			name: "Huge plug",
+			value: "huge plug",
+		},
+		{
+			name: "Long, huge plug",
+			value: "long, huge plug",
+			rs: "toysBoughtButtPlugs",
+		}
 	],
 
 	buttplugAttachments: [
 		{name: "None", value: "none"},
-		{name: "Tail", value: "tail", rs: "buyTails"},
-		{name: "Fox tail", value: "fox tail", rs: "buyTails"},
-		{name: "Cat tail", value: "cat tail", rs: "buyTails"},
-		{name: "Cow tail", value: "cow tail", rs: "buyTails"}
+		{name: "Tail", value: "tail", rs: "toysBoughtButtPlugTails"},
+		{name: "Fox tail", value: "fox tail", rs: "toysBoughtButtPlugTails"},
+		{name: "Cat tail", value: "cat tail", rs: "toysBoughtButtPlugTails"},
+		{name: "Cow tail", value: "cow tail", rs: "toysBoughtButtPlugTails"}
+	],
+
+	chastityDevices: [
+		// '.value' must be a string, so using update slave so I can update multiple values.
+		{
+			name: "None",
+			value: "none",
+			updateSlave: {
+				choosesOwnChastity: 0,
+				chastityAnus: 0,
+				chastityPenis: 0,
+				chastityVagina: 0
+			},
+		},
+		{
+			name: "Anal chastity",
+			value: "anal chastity",
+			updateSlave: {
+				choosesOwnChastity: 0,
+				chastityAnus: 1,
+				chastityPenis: 0,
+				chastityVagina: 0
+			}
+		},
+		{
+			name: "Chastity belt",
+			value: "chastity belt",
+			updateSlave: {
+				choosesOwnChastity: 0,
+				chastityAnus: 0,
+				chastityPenis: 0,
+				chastityVagina: 1
+			},
+		},
+		{
+			name: "Combined chastity belt",
+			value: "combined chastity belt",
+			updateSlave: {
+				choosesOwnChastity: 0,
+				chastityAnus: 1,
+				chastityPenis: 0,
+				chastityVagina: 1
+			},
+		},
+		{
+			name: "Chastity cage",
+			value: "chastity cage",
+			updateSlave: {
+				choosesOwnChastity: 0,
+				chastityAnus: 0,
+				chastityPenis: 1,
+				chastityVagina: 0
+			},
+		},
+		{
+			name: "Combined chastity cage",
+			value: "combined chastity cage",
+			updateSlave: {
+				choosesOwnChastity: 0,
+				chastityAnus: 1,
+				chastityPenis: 1,
+				chastityVagina: 0
+			},
+		},
+		{
+			name: "Genital chastity",
+			value: "genital chastity",
+			updateSlave: {
+				choosesOwnChastity: 0,
+				chastityAnus: 0,
+				chastityPenis: 1,
+				chastityVagina: 1
+			},
+		},
+		{
+			name: "Full chastity",
+			value: "full chastity",
+			updateSlave: {
+				choosesOwnChastity: 0,
+				chastityAnus: 1,
+				chastityPenis: 1,
+				chastityVagina: 1
+			},
+		},
+		{
+			name: "Choose own chastity",
+			value: "choose own chastity",
+			fs: "FSRestart",
+			updateSlave: {
+				choosesOwnChastity: 1
+			},
+		},
+		{
+			name: "Revoke choosing own chastity",
+			value: "revoke choosing own chastity",
+			fs: "FSRestart",
+			updateSlave: {
+				choosesOwnChastity: 0
+			},
+		},
 	],
 
 	facilityCareers: ["be confined in the arcade", "be confined in the cellblock", "be the Attendant", "be the DJ", "be the Farmer", "be the Madam", "be the Matron", "be the Milkmaid", "be the Nurse", "be the Schoolteacher", "be the Stewardess", "be the Wardeness", "be your Concubine", "get treatment in the clinic", "learn in the schoolroom", "live with your Head Girl", "rest in the spa", "serve in the club", "serve in the master suite", "work as a farmhand", "work as a nanny", "work as a servant", "work in the brothel", "work in the dairy"],
diff --git a/player variables documentation - Pregmod.txt b/player variables documentation - Pregmod.txt
index 89c7f7bbecddcde19bff0f01d1a50018de364a0d..3fa9a587f2fdb8fcbdeb2d556f8b196d20732380 100644
--- a/player variables documentation - Pregmod.txt	
+++ b/player variables documentation - Pregmod.txt	
@@ -135,6 +135,16 @@ Size, if any, of breast implants
 0 - none
 1+ - yes
 
+boobsImplantType:
+
+Implant type
+"none"
+"normal"
+"string"
+"fillable"
+"advanced fillable"
+"hyper fillable"
+
 lactation:
 
 is player lactating
@@ -160,6 +170,16 @@ do you have butt implants
 0 - no
 1+ - size
 
+buttImplantType:
+
+Implant type
+"none"
+"normal"
+"string"
+"fillable"
+"advanced fillable"
+"hyper fillable"
+
 vagina:
 
 (common in events)
diff --git a/slave variables documentation - Pregmod.txt b/slave variables documentation - Pregmod.txt
index f714f85bc48bf50093ea454ffe8f8833a6415b55..081f212b6c9b503f638223cd4f7c1702bda69a41 100644
--- a/slave variables documentation - Pregmod.txt	
+++ b/slave variables documentation - Pregmod.txt	
@@ -1771,16 +1771,23 @@ accepts int
 boobsImplant:
 
 slave implant size
-0	  - no implants
-1-199	 - small implants
+0	      - no implants
+1-199	  - small implants
 200-399   - normal implants
 400-599   - large implants
-600+	  - boobsImplant size fillable implants
+600-799	  - huge implants
+800-999	  - giant implants
+1000+     - massive implants
 
 boobsImplantType:
 
-0 - normal/none
-1 - string
+Implant type
+"none"
+"normal"
+"string"
+"fillable"
+"advanced fillable"
+"hyper fillable"
 
 boobShape:
 
@@ -1922,18 +1929,21 @@ butt size
 
 buttImplant:
 
-butt implant type and size
-0 - none
-1 - butt implant
-2 - big butt implant
-3 - fillable butt implants
-5 - 8  - advanced fillable implants
-9+ - hyper fillable implants
+butt implant size
+0  - none
+1  - butt implant
+2  - big butt implant
+3+ - massive butt implant
 
 buttImplantType:
 
-0 - normal/none
-1 - string
+Implant type
+"none"
+"normal"
+"string"
+"fillable"
+"advanced fillable"
+"hyper fillable"
 
 buttTat:
 
diff --git a/src/002-config/fc-version.js b/src/002-config/fc-version.js
index bb79320be10be5d2a1d797c482f81d03a7e7a3d6..49ba560ab0b5c183dc660c6f5cf75c352183ac11 100644
--- a/src/002-config/fc-version.js
+++ b/src/002-config/fc-version.js
@@ -1,7 +1,7 @@
 App.Version = {
 	base: "0.10.7.1", // The vanilla version the mod is based off of, this should never be changed.
-	pmod: "3.2.0",
-	release: 1060,
+	pmod: "3.3.0",
+	release: 1061,
 };
 
 /* Use release as save version */
diff --git a/src/004-base/arcologyBuilding.js b/src/004-base/arcologyBuilding.js
index c9999c606dab850173f65cc273de6843755683d5..262d9d94a5795cbd6f0a091ade74d7c6d1fedf02 100644
--- a/src/004-base/arcologyBuilding.js
+++ b/src/004-base/arcologyBuilding.js
@@ -155,7 +155,7 @@ App.Arcology.Cell.BaseCell = class extends App.Entity.Serializable {
 		if (cost > 0 || note === undefined) {
 			note = ` Costs ${cashFormat(cost)}${note !== undefined ? ` ${note}` : ""}.`;
 		}
-		div.append(App.UI.DOM.makeSpan(note, "detail"));
+		App.UI.DOM.appendNewElement("span", note, div, "detail");
 
 		if (domNote !== undefined) {
 			div.append(domNote); // this only exists for the farmyard, remove once that is out of alpha
diff --git a/src/arcologyBuilding/manufacturing.js b/src/arcologyBuilding/manufacturing.js
index bac40cf74914a409ee3f81a0aa067ed590783c20..545bb65e7e5c2f98876d2da271f22c9b4cb5953f 100644
--- a/src/arcologyBuilding/manufacturing.js
+++ b/src/arcologyBuilding/manufacturing.js
@@ -65,7 +65,7 @@ App.Arcology.Cell.Manufacturing = class extends App.Arcology.Cell.BaseCell {
 			case "Weapon Manufacturing":
 				return App.UI.DOM.passageLink("Weapons Manufacturing", "weaponsManufacturing");
 			default:
-				return App.UI.DOM.makeSpan(`ERROR: invalid type: ${this.type}`, "error");
+				return App.UI.DOM.makeElement("span", `ERROR: invalid type: ${this.type}`, "error");
 		}
 	}
 
@@ -138,8 +138,8 @@ App.Arcology.Cell.Manufacturing = class extends App.Arcology.Cell.BaseCell {
 
 			const paragraph = document.createElement("p");
 
-			paragraph.append(App.UI.DOM.makeDiv(MenialPopCap()),
-				App.UI.DOM.makeDiv(`In total you are able to personally house a total of ${num(V.PopCap)} menial slaves.`));
+			paragraph.append(App.UI.DOM.makeElement("div", MenialPopCap()),
+				App.UI.DOM.makeElement("div", `In total you are able to personally house a total of ${num(V.PopCap)} menial slaves.`));
 
 			if (V.menials + V.menialBioreactors + V.fuckdolls > 0) {
 				let r = "You own ";
@@ -196,7 +196,7 @@ App.Arcology.Cell.Manufacturing = class extends App.Arcology.Cell.BaseCell {
 				));
 			}
 
-			if (V.cheatMode === 1) {
+			if (V.experimental.food === 1) {
 				if (V.farmyard === 0) {
 					fragment.append(thisCell._makeUpgrade(
 						"Construct a farming facility to grow food for your arcology and house animals",
@@ -205,7 +205,7 @@ App.Arcology.Cell.Manufacturing = class extends App.Arcology.Cell.BaseCell {
 							thisCell.type = "Farmyard";
 						}, cost, "and will incur upkeep costs",
 						// this only exists for the farmyard, remove feature once that is out of alpha
-						App.UI.DOM.makeSpan("Alpha Content!", "warning")
+						App.UI.DOM.makeElement("span", "Alpha Content!", "warning")
 					));
 				}
 			}
diff --git a/src/arcologyBuilding/markets.js b/src/arcologyBuilding/markets.js
index 35bb94ba69f89b5cb950def07a38bccb62b81ba4..ac6c74bb9edc24a1d94c12b653ffb10b7c2d6332 100644
--- a/src/arcologyBuilding/markets.js
+++ b/src/arcologyBuilding/markets.js
@@ -53,7 +53,7 @@ App.Arcology.Cell.Market = class extends App.Arcology.Cell.BaseCell {
 			case "Corporate Market":
 				return App.UI.DOM.passageLink("Corporate Market", "Corporate Market");
 			default:
-				return App.UI.DOM.makeSpan("ERROR: invalid type: " + this.type, "error");
+				return App.UI.DOM.makeElement("span", "ERROR: invalid type: " + this.type, "error");
 		}
 	}
 
diff --git a/src/arcologyBuilding/penthouse.js b/src/arcologyBuilding/penthouse.js
index bf7fb1923eafdc6e2b570ad21005ed040b8bb04f..458774aa974367fab4843b798a1e286b6cc5b00f 100644
--- a/src/arcologyBuilding/penthouse.js
+++ b/src/arcologyBuilding/penthouse.js
@@ -25,7 +25,7 @@ App.Arcology.Cell.Penthouse = class extends App.Arcology.Cell.BaseCell {
 		const fragment = document.createDocumentFragment();
 
 		const link = App.UI.DOM.passageLink("Penthouse", "Manage Penthouse");
-		const hotkey = App.UI.DOM.makeSpan("[P]", "hotkey");
+		const hotkey = App.UI.DOM.makeElement("span", "[P]", "hotkey");
 		if (V.verticalizeArcologyLinks === 0) {
 			const div = document.createElement("div");
 			div.append(link, " ", hotkey);
@@ -96,7 +96,7 @@ App.Arcology.Cell.Penthouse = class extends App.Arcology.Cell.BaseCell {
 			const desc = `(${numberWithPluralOne(V.incubator - V.tanks.length, "empty tank")})`;
 
 			if (V.readySlaves > 0) {
-				wrapper.append(createFacilityDiv(link, desc, App.UI.DOM.makeSpan("[!]", "noteworthy")));
+				wrapper.append(createFacilityDiv(link, desc, App.UI.DOM.makeElement("span", "[!]", "noteworthy")));
 			} else {
 				wrapper.append(createFacilityDiv(link, desc));
 			}
diff --git a/src/arcologyBuilding/shops.js b/src/arcologyBuilding/shops.js
index b420082eddebcec7a74d260c6e44c2d171f5b95a..3d2d7cd3da8f08a2b206997cbaab4bf3a68c38f7 100644
--- a/src/arcologyBuilding/shops.js
+++ b/src/arcologyBuilding/shops.js
@@ -188,7 +188,7 @@ App.Arcology.Cell.Shop = class extends App.Arcology.Cell.BaseCell {
 				break;
 			case "Roman Revivalist":
 				fragment.append("dedicated to Roman Revivalism. Since the forums are out on the arcology's plazas, there are fewer stores here. There are eateries, from which the sharp smell of ",
-					App.UI.DOM.makeSpan("garum", "note"),
+					App.UI.DOM.makeElement("span", "garum", "note"),
 					" is distinctly identifiable, but most of the space is occupied by hypocaust baths, which are free to enter but include various concession stands run by slaves.",
 					App.UI.DOM.linkReplace("Clean yourself",
 						"A good Roman trip to the baths serves to cleanse, but it's a social experience, too. After being oiled down by a skilled slave, you work out in the proper nude, and then have the oil and any dirt scraped off your skin with by another slave. Then you make your way across the heated floor through a set of baths of varying temperatures, ending in a large and egalitarian space where many naked citizens of the new Rome are sharing the news of the day. You're welcomed with surprise, but also with comradeship, and made to feel welcome."));
@@ -205,11 +205,11 @@ App.Arcology.Cell.Shop = class extends App.Arcology.Cell.BaseCell {
 				break;
 			case "Edo Revivalist":
 				fragment.append("dedicated to Edo Revivalism. There are strict restrictions on the establishments' décor here, so ",
-					App.UI.DOM.makeSpan("tatami", "note"),
+					App.UI.DOM.makeElement("span", "tatami", "note"),
 					" mats and paper partitions are ubiquitous. There are handsome ",
-					App.UI.DOM.makeSpan("sake", "note"),
+					App.UI.DOM.makeElement("span", "sake", "note"),
 					" shops and tea rooms offering the traditional ceremony, and ",
-					App.UI.DOM.makeSpan("kabuki", "note"),
+					App.UI.DOM.makeElement("span", "kabuki", "note"),
 					" theaters offering the traditional performance, with modern plots and themes. ",
 					App.UI.DOM.linkReplace("See a show",
 						"As soon as you enter a theater, the play stops, and refined slave attendants usher you forward to the place of honor. None of the citizens present resent the interruption; having you here is a great addition to the performance. The actors bow deeply to you and resume. The classical dance drama is almost impenetrable to outsiders, and the modernity of the characters and events would not be at all decipherable. Once you catch the thread, though, the richness of the allegory towards Free Cities personages and events is quite enjoyable."));
@@ -293,7 +293,7 @@ App.Arcology.Cell.Shop = class extends App.Arcology.Cell.BaseCell {
 				}
 				break;
 			default:
-				fragment.append(App.UI.DOM.makeSpan(`ERROR: bad shop type: ${this.type}`, "error"));
+				App.UI.DOM.appendNewElement("span", `ERROR: bad shop type: ${this.type}`, fragment, "error");
 		}
 
 		if (this.owner === 1 && this.type === "Shops") {
diff --git a/src/art/artJS.js b/src/art/artJS.js
index 022fbeca7b95061e5a5227091d7a07371f53f617..8d0bb9571fbb917eaa520c03937ec924e9abd7d6 100644
--- a/src/art/artJS.js
+++ b/src/art/artJS.js
@@ -51,6 +51,42 @@ App.Art.SlaveArtElement = function(artSlave, artSize, UIDisplay) {
 	}
 };
 
+/**
+ * @param {App.Entity.SlaveState} artSlave Slave
+ * @param {number} artSize Image size/center:
+ * * 3: Large, right. Example: long slave description.
+ * * 2: Medium, right. Example: random events.
+ * * 1: Small, left. Example: lists.
+ * * 0: Tiny, left. Example: facilities
+ * @param {string} elementID the html element that is being updated
+ * @param {number} [UIDisplay] (optional, only used by legacy art): icon UI Display for vector art, 1 for on
+ */
+App.Art.refreshSlaveArt = function(artSlave, artSize, elementID, UIDisplay=0) {
+	if ($('#'+elementID).length) {
+		if (V.seeImages === 1 && V.eventDescription !== 1) {
+			let image = document.createElement('div');
+			if (artSize === 3) {
+				if (V.imageChoice === 1) {
+					image.className = "imageRef lrgVector";
+				} else {
+					image.className = "imageRef lrgRender";
+				}
+				let mask = document.createElement('div');
+				mask.className = "mask";
+				mask.textContent = " ";
+				image.appendChild(mask);
+			} else if (artSize === 2) {
+				image.className = "imageRef medImg";
+			} else if (artsize < 2) {
+				image.className = "imageRef smlImg";
+			}
+			image.appendChild(App.Art.SlaveArtElement(artSlave, artSize, UIDisplay));
+			return jQuery('#'+elementID).empty().append(image);
+		}
+	}
+	return;
+};
+
 window.ArtControlRendered = function ArtControlRendered(slave, sizePlacement) {
 	return App.Art.elementToMarkup(App.Art.renderedArtElement(slave, sizePlacement));
 };
diff --git a/src/cheats/mod_EditChildCheatNew.tw b/src/cheats/mod_EditChildCheatNew.tw
index 39d5f8b6b3461a8b2694d87f04a1fc4ca4af26ef..059fbb45d59dedd646770e861904e0eb61bafc8e 100644
--- a/src/cheats/mod_EditChildCheatNew.tw
+++ b/src/cheats/mod_EditChildCheatNew.tw
@@ -1610,11 +1610,13 @@
 	''Breast Implants:''
 	<<textbox "$tempSlave.boobsImplant" $tempSlave.boobsImplant>>
 	<br>
-	''Breast String Implants:''
-	<<if $tempSlave.boobsImplantType == 0>>@@.yellow;No@@ |
-	<<else>>@@.yellow;Yes@@ | <</if>>
-	<<radiobutton "$tempSlave.boobsImplantType" 0>> No
-	<<radiobutton "$tempSlave.boobsImplantType" 1>> Yes
+	''Breast Implant Type: @@.yellow;$tempSlave.boobsImplantType@@''
+	<<radiobutton "$tempSlave.boobsImplantType" "None">> None
+	<<radiobutton "$tempSlave.boobsImplantType" "normal">> Normal
+	<<radiobutton "$tempSlave.boobsImplantType" "string">> String
+	<<radiobutton "$tempSlave.boobsImplantType" "fillable">> Fillable
+	<<radiobutton "$tempSlave.boobsImplantType" "advanced fillable">> Advanced Fillable
+	<<radiobutton "$tempSlave.boobsImplantType" "hyper fillable">> Hyper Fillable
 	<br>
 
 	''Lactation (none:0 | natural:1 | artificial:2):''
@@ -1696,14 +1698,13 @@
 	<<radiobutton "$tempSlave.buttImplant" 2>> Large
 	<<radiobutton "$tempSlave.buttImplant" 3>> Huge
 	<br>
-	''Butt String Implants: ''
-	<<if $tempSlave.buttImplantType == 0>>
-		@@.yellow;No@@
-		<<checkbox "$tempSlave.buttImplantType" 0 1>>
-	<<else>>
-		@@.yellow;Yes@@
-		<<checkbox "$tempSlave.buttImplantType" 0 1 checked>>
-	<</if>>
+	''Butt Implant Type: @@.yellow;$tempSlave.buttImplantType@@''
+	<<radiobutton "$tempSlave.buttImplantType" "None">> None
+	<<radiobutton "$tempSlave.buttImplantType" "normal">> Normal
+	<<radiobutton "$tempSlave.buttImplantType" "string">> String
+	<<radiobutton "$tempSlave.buttImplantType" "fillable">> Fillable
+	<<radiobutton "$tempSlave.buttImplantType" "advanced fillable">> Advanced Fillable
+	<<radiobutton "$tempSlave.buttImplantType" "hyper fillable">> Hyper Fillable
 	<br><br>
 	''Anus Size:''
 	<<if $tempSlave.anus == 0>>@@.lime;Virgin.@@
diff --git a/src/cheats/mod_EditInfantCheatNew.tw b/src/cheats/mod_EditInfantCheatNew.tw
index dc00e4f574874c2edfcdb872a999850050b1ac35..fe012915cc413912e29be414083d7c86d54ca944 100644
--- a/src/cheats/mod_EditInfantCheatNew.tw
+++ b/src/cheats/mod_EditInfantCheatNew.tw
@@ -1612,11 +1612,13 @@
 	''Breast Implants:''
 	<<textbox "$tempSlave.boobsImplant" $tempSlave.boobsImplant>>
 	<br>
-	''Breast String Implants:''
-	<<if $tempSlave.boobsImplantType == 0>>@@.yellow;No@@ |
-	<<else>>@@.yellow;Yes@@ | <</if>>
-	<<radiobutton "$tempSlave.boobsImplantType" 0>> No
-	<<radiobutton "$tempSlave.boobsImplantType" 1>> Yes
+	''Breast Implant Type: @@.yellow;$tempSlave.boobsImplantType@@''
+	<<radiobutton "$tempSlave.boobsImplantType" "None">> None
+	<<radiobutton "$tempSlave.boobsImplantType" "normal">> Normal
+	<<radiobutton "$tempSlave.boobsImplantType" "string">> String
+	<<radiobutton "$tempSlave.boobsImplantType" "fillable">> Fillable
+	<<radiobutton "$tempSlave.boobsImplantType" "advanced fillable">> Advanced Fillable
+	<<radiobutton "$tempSlave.boobsImplantType" "hyper fillable">> Hyper Fillable
 	<br>
 
 	''Lactation (none:0 | natural:1 | artificial:2):''
@@ -1698,14 +1700,13 @@
 	<<radiobutton "$tempSlave.buttImplant" 2>> Large
 	<<radiobutton "$tempSlave.buttImplant" 3>> Huge
 	<br>
-	''Butt String Implants: ''
-	<<if $tempSlave.buttImplantType == 0>>
-		@@.yellow;No@@
-		<<checkbox "$tempSlave.buttImplantType" 0 1>>
-	<<else>>
-		@@.yellow;Yes@@
-		<<checkbox "$tempSlave.buttImplantType" 0 1 checked>>
-	<</if>>
+	''Butt Implant Type: @@.yellow;$tempSlave.buttImplantType@@''
+	<<radiobutton "$tempSlave.buttImplantType" "None">> None
+	<<radiobutton "$tempSlave.buttImplantType" "normal">> Normal
+	<<radiobutton "$tempSlave.buttImplantType" "string">> String
+	<<radiobutton "$tempSlave.buttImplantType" "fillable">> Fillable
+	<<radiobutton "$tempSlave.buttImplantType" "advanced fillable">> Advanced Fillable
+	<<radiobutton "$tempSlave.buttImplantType" "hyper fillable">> Hyper Fillable
 	<br><br>
 	''Anus Size:''
 	<<if $tempSlave.anus == 0>>@@.lime;Virgin.@@
diff --git a/src/cheats/mod_EditSlaveCheat.tw b/src/cheats/mod_EditSlaveCheat.tw
index 5acd2d2ede9717ed6f815a76e84ac905343d8231..df6bb7a69131890b3e1b6c3b9d92bd0b9b7797f3 100644
--- a/src/cheats/mod_EditSlaveCheat.tw
+++ b/src/cheats/mod_EditSlaveCheat.tw
@@ -687,10 +687,13 @@ Custom sclera color: <<textbox "$tempSlave.sclerae" $tempSlave.sclerae>>
 ''Breast Implants:''
 <<textbox "$tempSlave.boobsImplant" $tempSlave.boobsImplant>>
 <br>
-''Breast String Implants (no:0 | yes:1):''
-<<textbox "$tempSlave.boobsImplantType" $tempSlave.boobsImplantType>>
-<<radiobutton "$tempSlave.boobsImplantType" 0>> No
-<<radiobutton "$tempSlave.boobsImplantType" 1>> Yes
+''Breast Implant Type:'' // Nonsensical things will be corrected. //
+<<radiobutton "$tempSlave.boobsImplantType" "None">> None
+<<radiobutton "$tempSlave.boobsImplantType" "normal">> Normal
+<<radiobutton "$tempSlave.boobsImplantType" "string">> String
+<<radiobutton "$tempSlave.boobsImplantType" "fillable">> Fillable
+<<radiobutton "$tempSlave.boobsImplantType" "advanced fillable">> Advanced Fillable
+<<radiobutton "$tempSlave.boobsImplantType" "hyper fillable">> Hyper Fillable
 <br>
 
 ''Lactation (none:0 | natural:1 | artificial:2): $tempSlave.lactation |''
@@ -748,10 +751,13 @@ Custom sclera color: <<textbox "$tempSlave.sclerae" $tempSlave.sclerae>>
 <<radiobutton "$tempSlave.buttImplant" 2>> Large
 <<radiobutton "$tempSlave.buttImplant" 3>> Huge
 <br>
-''Butt String Implants (no:0 | yes:1):''
-<<textbox "$tempSlave.buttImplantType" $tempSlave.boobsImplantType>>
-<<radiobutton "$tempSlave.buttImplantType" 0>> No
-<<radiobutton "$tempSlave.buttImplantType" 1>> Yes
+''Butt Implant Type: @@.yellow;$tempSlave.buttImplantType@@''
+<<radiobutton "$tempSlave.buttImplantType" "None">> None
+<<radiobutton "$tempSlave.buttImplantType" "normal">> Normal
+<<radiobutton "$tempSlave.buttImplantType" "string">> String
+<<radiobutton "$tempSlave.buttImplantType" "fillable">> Fillable
+<<radiobutton "$tempSlave.buttImplantType" "advanced fillable">> Advanced Fillable
+<<radiobutton "$tempSlave.buttImplantType" "hyper fillable">> Hyper Fillable
 
 <br><br>
 
diff --git a/src/cheats/mod_editSlaveCheatNew.tw b/src/cheats/mod_editSlaveCheatNew.tw
index 9ad7ace8779fb903bf41c753ebe9d708dde0b5d3..79c5440dc48524fdf72fc1ef68ec29edfaca7e6c 100644
--- a/src/cheats/mod_editSlaveCheatNew.tw
+++ b/src/cheats/mod_editSlaveCheatNew.tw
@@ -2746,11 +2746,13 @@
 	''Breast Implants:''
 	<<textbox "$tempSlave.boobsImplant" $tempSlave.boobsImplant>>
 	<br>
-	''Breast String Implants:''
-	<<if $tempSlave.boobsImplantType == 0>>@@.yellow;No@@ |
-	<<else>>@@.yellow;Yes@@ | <</if>>
-	<<radiobutton "$tempSlave.boobsImplantType" 0>> No
-	<<radiobutton "$tempSlave.boobsImplantType" 1>> Yes
+	''Breast Implant Type: @@.yellow;$tempSlave.boobsImplantType@@''
+	<<radiobutton "$tempSlave.boobsImplantType" "None">> None
+	<<radiobutton "$tempSlave.boobsImplantType" "normal">> Normal
+	<<radiobutton "$tempSlave.boobsImplantType" "string">> String
+	<<radiobutton "$tempSlave.boobsImplantType" "fillable">> Fillable
+	<<radiobutton "$tempSlave.boobsImplantType" "advanced fillable">> Advanced Fillable
+	<<radiobutton "$tempSlave.boobsImplantType" "hyper fillable">> Hyper Fillable
 	<br>
 
 	''Lactation (none:0 | natural:1 | artificial:2):''
@@ -2832,14 +2834,13 @@
 	<<radiobutton "$tempSlave.buttImplant" 2>> Large
 	<<radiobutton "$tempSlave.buttImplant" 3>> Huge
 	<br>
-	''Butt String Implants: ''
-	<<if $tempSlave.buttImplantType == 0>>
-		@@.yellow;No@@
-		<<checkbox "$tempSlave.buttImplantType" 0 1>>
-	<<else>>
-		@@.yellow;Yes@@
-		<<checkbox "$tempSlave.buttImplantType" 0 1 checked>>
-	<</if>>
+	''Butt Implant Type: @@.yellow;$tempSlave.buttImplantType@@''
+	<<radiobutton "$tempSlave.buttImplantType" "None">> None
+	<<radiobutton "$tempSlave.buttImplantType" "normal">> Normal
+	<<radiobutton "$tempSlave.buttImplantType" "string">> String
+	<<radiobutton "$tempSlave.buttImplantType" "fillable">> Fillable
+	<<radiobutton "$tempSlave.buttImplantType" "advanced fillable">> Advanced Fillable
+	<<radiobutton "$tempSlave.buttImplantType" "hyper fillable">> Hyper Fillable
 	<br><br>
 	''Anus Size:''
 	<<if $tempSlave.anus == 0>>@@.lime;Virgin.@@
diff --git a/src/data/backwardsCompatibility/updateSlaveObject.js b/src/data/backwardsCompatibility/updateSlaveObject.js
index ec551c5664c60d3d97f017e63c73ef9bd940d2a9..6c98695e4ce036159e9337c18e60012e1ea593e2 100644
--- a/src/data/backwardsCompatibility/updateSlaveObject.js
+++ b/src/data/backwardsCompatibility/updateSlaveObject.js
@@ -440,6 +440,35 @@ App.Update.Slave = function(slave) {
 		}
 	}
 
+	if (V.releaseID < 1061) {
+		if (slave.boobsImplantType == 1) {
+			slave.boobsImplantType = "string";
+		} else if (slave.boobsImplant >= 10000) {
+			slave.boobsImplantType = "hyper fillable";
+		} else if (slave.boobsImplant >= 2000) {
+			slave.boobsImplantType = "advanced fillable";
+		} else if (slave.boobsImplant >= 800) {
+			slave.boobsImplantType = "fillable";
+		} else if (slave.boobsImplant > 0) {
+			slave.boobsImplantType = "normal";
+		} else {
+			slave.boobsImplantType = "none";
+		}
+		if (slave.buttImplantType == 1) {
+			slave.buttImplantType = "string";
+		} else if (slave.buttImplant > 7) {
+			slave.buttImplantType = "hyper fillable";
+		} else if (slave.buttImplant >= 5) {
+			slave.buttImplantType = "advanced fillable";
+		} else if (slave.buttImplant >= 3) {
+			slave.buttImplantType = "fillable";
+		} else if (slave.buttImplant > 0) {
+			slave.buttImplantType = "normal";
+		} else {
+			slave.buttImplantType = "none";
+		}
+	}
+
 	if (V.releaseID < 1059) {
 		if (slave.eyeColor === undefined) {
 			slave.eyeColor = slave.eyes;
diff --git a/src/endWeek/saChoosesOwnClothes.js b/src/endWeek/saChoosesOwnClothes.js
index 35eb146b400703731668e816b4eeb323edffce9b..5deb57be435a13947a62eb259c85d5e007fd9d23 100644
--- a/src/endWeek/saChoosesOwnClothes.js
+++ b/src/endWeek/saChoosesOwnClothes.js
@@ -207,16 +207,16 @@ window.saChoosesOwnClothes = (function() {
 			}
 		} else if (slave.devotion <= 20) {
 			clothing.push({text: `${He} uses the ability to select outfits to cover up with comfortable cutoffs and a t-shirt.`, clothes: "cutoffs and a t-shirt"});
-			if (isClothingAccessible.entry("a hijab and blouse")) {
+			if (isClothingAccessible.entry("a hijab and blouse") === true) {
 				clothing.push({text: `${He} uses the ability to select outfits to cover up with the most conservative clothing ${he} can find.`, clothes: "a hijab and blouse"});
 			}
-			if (isClothingAccessible.entry("conservative clothing")) {
+			if (isClothingAccessible.entry("conservative clothing") === true) {
 				clothing.push({text: `${He} uses the ability to select outfits to cover up with the most conservative clothing ${he} can find.`, clothes: "conservative clothing"});
 			}
-			if (isClothingAccessible.entry("a kimono")) {
+			if (isClothingAccessible.entry("a kimono") === true) {
 				clothing.push({text: `${He} uses the ability to select outfits to cover ${himself} with a kimono.`, clothes: "a kimono"});
 			}
-			if (isClothingAccessible.entry("stretch pants and a crop-top")) {
+			if (isClothingAccessible.entry("stretch pants and a crop-top") === true) {
 				clothing.push({text: `${He} uses the ability to select outfits to cover up with stretch pants and a crop-top, though ${he} wishes it didn't have lewd comments printed on it.`, clothes: "stretch pants and a crop-top"});
 			}
 			selection = jsEither(clothing);
@@ -228,12 +228,12 @@ window.saChoosesOwnClothes = (function() {
 					wardrobeAssignment.push({text: `and wears a slutty nurse outfit to make it clear just how much this nurse needs ${his} daily lay.`, clothes: "a slutty nurse outfit"});
 				} else if (slave.energy > 80) {
 					wardrobeAssignment.push({text: `and wears a slutty nurse outfit to show off ${his} body and arouse ${his} patients.`, clothes: "a slutty nurse outfit"});
-					if (isClothingAccessible.entry("a nice nurse outfit")) {
+					if (isClothingAccessible.entry("a nice nurse outfit") === true) {
 						wardrobeAssignment.push({text: `and wears a nice nurse outfit to look professional before ${his} patients.`, clothes: "a nice nurse outfit"});
 					}
 					wardrobeAssignment.push({text: `and wears a slutty nurse outfit to show to a little skin as ${he} cares for ${his} patients.`, clothes: "a slutty nurse outfit"});
 				} else {
-					if (isClothingAccessible.entry("a nice nurse outfit")) {
+					if (isClothingAccessible.entry("a nice nurse outfit") === true) {
 						wardrobeAssignment.push({text: `and wears a nice nurse outfit to look professional before ${his} patients.`, clothes: "a nice nurse outfit"});
 					}
 					wardrobeAssignment.push({text: `and wears a slutty nurse outfit to show to a little skin as ${he} cares for ${his} patients.`, clothes: "a slutty nurse outfit"});
@@ -242,25 +242,25 @@ window.saChoosesOwnClothes = (function() {
 				if (slave.energy > 95 || slave.need > 100) {
 					wardrobeAssignment.push({text: `and wears a slutty suit to be certain nothing blocks ${him} from getting the sex ${he} needs.`, clothes: "slutty business attire"});
 				} else if (slave.energy > 80) {
-					if (isClothingAccessible.entry("nice business attire")) {
+					if (isClothingAccessible.entry("nice business attire") === true) {
 						wardrobeAssignment.push({text: `and wears a nice suit to show ${he} means business.`, clothes: "nice business attire"});
 					}
 					wardrobeAssignment.push({text: `and wears a slutty suit to entice and arouse while still looking managerial.`, clothes: "slutty business attire"});
 					wardrobeAssignment.push({text: `and wears a slutty suit to entice and arouse while still looking managerial.`, clothes: "slutty business attire"});
 				} else {
-					if (isClothingAccessible.entry("nice business attire")) {
+					if (isClothingAccessible.entry("nice business attire") === true) {
 						wardrobeAssignment.push({text: `and wears a nice suit to show ${he} means business.`, clothes: "nice business attire"});
 					}
 					wardrobeAssignment.push({text: `and wears a slutty suit to entice and arouse while still looking managerial.`, clothes: "slutty business attire"});
 				}
 			} else if (slave.assignment === "be the Milkmaid") {
 				if (slave.energy > 95 || slave.need > 100) {
-					if (isClothingAccessible.entry("body oil")) {
+					if (isClothingAccessible.entry("body oil") === true) {
 						wardrobeAssignment.push({text: `and coats ${himself} with oil to better slip between ${his} cows as ${he} pleasures them.`, clothes: "body oil"});
 					}
 					wardrobeAssignment.push({text: `but goes nude to not be slowed down while moving between ${his} charges.`, clothes: "no clothing"});
 				} else {
-					if (isClothingAccessible.entry("a nice maid outfit")) {
+					if (isClothingAccessible.entry("a nice maid outfit") === true) {
 						wardrobeAssignment.push({text: `and wears a sturdy maid outfit, since anything else might be damaged by ${his} hard work with the cows.`, clothes: "a nice maid outfit"});
 					}
 					wardrobeAssignment.push({text: `and puts on a proper pair of worker's overalls, but not much else.`, clothes: "overalls"});
@@ -268,36 +268,36 @@ window.saChoosesOwnClothes = (function() {
 					wardrobeAssignment.push({text: `and opts to don a cheerleader outfit to help cheer the cows on.`, clothes: "a cheerleader outfit"});
 					wardrobeAssignment.push({text: `and dresses up as a succubus since ${he}'ll be drawing plenty of fluids.`, clothes: "a succubus outfit"});
 					wardrobeAssignment.push({text: `and slips into some spats and a tank top since ${he} feels a workout coming on.`, clothes: "spats and a tank top"});
-					if (isClothingAccessible.entry("Western clothing")) {
+					if (isClothingAccessible.entry("Western clothing") === true) {
 						wardrobeAssignment.push({text: `and wears an appropriate cowgirl outfit. ${His} bare ass walking past is sure to amuse ${his} charges.`, clothes: "Western clothing"});
 					}
-					if (isClothingAccessible.entry("stretch pants and a crop-top")) {
+					if (isClothingAccessible.entry("stretch pants and a crop-top") === true) {
 						wardrobeAssignment.push({text: `and slips into some comfy stretch pants to relax as ${he} works the cows.`, clothes: "stretch pants and a crop-top"});
 					}
 					if (State.variables.cumSlaves > 2) {
 						wardrobeAssignment.push({text: `and wears a slutty nurse outfit to help keep ${his} charges hard.`, clothes: "a slutty nurse outfit"});
 						wardrobeAssignment.push({text: `and wears nothing but sexy lingerie to help keep ${his} charges hard.`, clothes: "attractive lingerie"});
 						wardrobeAssignment.push({text: `and wears the skimpiest bikini on hand to help keep ${his} charges hard.`, clothes: "a string bikini"});
-						if (isClothingAccessible.entry("body oil")) {
+						if (isClothingAccessible.entry("body oil") === true) {
 							wardrobeAssignment.push({text: `and coats ${himself} in oil for ${his} charges to savor.`, clothes: "body oil"});
 						}
 					}
 				}
 			} else if (slave.assignment === "be your Head Girl") {
-				if (isClothingAccessible.entry("a military uniform")) {
+				if (isClothingAccessible.entry("a military uniform") === true) {
 					wardrobeAssignment.push({text: `and wears a military uniform to give ${him} that extra touch of authority.`, clothes: "a military uniform"});
 				}
-				if (isClothingAccessible.entry("a schutzstaffel uniform")) {
+				if (isClothingAccessible.entry("a schutzstaffel uniform") === true) {
 					wardrobeAssignment.push({text: `and wears a schutzstaffel uniform to give ${him} that extra touch of authority.`, clothes: "a schutzstaffel uniform"});
 					wardrobeAssignment.push({text: `and wears a slutty schutzstaffel uniform to give ${him} that extra touch of authority.`, clothes: "a slutty schutzstaffel uniform"});
 				}
-				if (isClothingAccessible.entry("a red army uniform")) {
+				if (isClothingAccessible.entry("a red army uniform") === true) {
 					wardrobeAssignment.push({text: `and wears a red army uniform to give ${him} that extra touch of authority.`, clothes: "a red army uniform"});
 				}
-				if (isClothingAccessible.entry("a mounty outfit")) {
+				if (isClothingAccessible.entry("a mounty outfit") === true) {
 					wardrobeAssignment.push({text: `and wears a mounty outfit to give ${him} that extra touch of authority.`, clothes: "a mounty outfit"});
 				}
-				if (isClothingAccessible.entry("nice business attire")) {
+				if (isClothingAccessible.entry("nice business attire") === true) {
 					wardrobeAssignment.push({text: `and wears a handsome suit to give ${him} that extra touch of authority.`, clothes: "nice business attire"});
 				}
 				if (canPenetrate(slave)) {
@@ -306,49 +306,49 @@ window.saChoosesOwnClothes = (function() {
 					wardrobeAssignment.push({text: `and wears a slutty suit to give ${him} an extra touch of authority while keeping ${his} crotch available.`, clothes: "slutty business attire"});
 				}
 			} else if (slave.assignment === "be the Schoolteacher") {
-				if (isClothingAccessible.entry("nice business attire")) {
+				if (isClothingAccessible.entry("nice business attire") === true) {
 					wardrobeAssignment.push({text: `and wears a handsome suit to give ${him} that teacherly authority.`, clothes: "nice business attire"});
 				}
 				wardrobeAssignment.push({text: `and wears a slutty suit to give ${him} an air of authority will keeping all eyes focused on ${him}.`, clothes: "slutty business attire"});
 				wardrobeAssignment.push({text: `and wears a schoolgirl outfit to help keep ${his} charges focused on ${him}.`, clothes: "a schoolgirl outfit"});
 				wardrobeAssignment.push({text: `and dresses up as a succubus to give ${his} sex lessons an extra kick.`, clothes: "a succubus outfit"});
-				if (isClothingAccessible.entry("conservative clothing")) {
+				if (isClothingAccessible.entry("conservative clothing") === true) {
 					wardrobeAssignment.push({text: `and wears conservative clothes to not detract from this week's lesson.`, clothes: "conservative clothing"});
 				}
-				if (isClothingAccessible.entry("a toga")) {
+				if (isClothingAccessible.entry("a toga") === true) {
 					wardrobeAssignment.push({text: `and wraps ${himself} in a toga to model ${himself} after the philosophers of yore.`, clothes: "a toga"});
 				}
-				if (isClothingAccessible.entry("a maternity dress") && slave.belly >= 10000) {
+				if (isClothingAccessible.entry("a maternity dress") === true && slave.belly >= 10000) {
 					wardrobeAssignment.push({text: `and settles for a comfortable maternity dress to support ${his} middle while ${he} lectures in front of the class all week.`, clothes: "a maternity dress"});
 				}
 			} else if (slave.assignment === "be the Wardeness") {
-				if (isClothingAccessible.entry("battledress")) {
+				if (isClothingAccessible.entry("battledress") === true) {
 					wardrobeAssignment.push({text: `and dons battledress, the better to intimidate the prisoners.`, clothes: "battledress"});
 				}
 				wardrobeAssignment.push({text: `and slips into a scalemail bikini, the better to intimidate the prisoners.`, clothes: "a scalemail bikini"});
 				wardrobeAssignment.push({text: `and dons a scandalous habit to make it perfectly clear that crossing this nun will result in sexual punishment.`, clothes: "a fallen nuns habit"});
-				if (isClothingAccessible.entry("a military uniform")) {
+				if (isClothingAccessible.entry("a military uniform") === true) {
 					wardrobeAssignment.push({text: `and wears a military uniform to look even more brutal and authoritative.`, clothes: "a military uniform"});
 				}
-				if (isClothingAccessible.entry("a schutzstaffel uniform")) {
+				if (isClothingAccessible.entry("a schutzstaffel uniform") === true) {
 					wardrobeAssignment.push({text: `and wears a schutzstaffel uniform to look even more brutal and authoritative.`, clothes: "a schutzstaffel uniform"});
 					wardrobeAssignment.push({text: `and wears a slutty schutzstaffel uniform to look even more brutal and authoritative.`, clothes: "a slutty schutzstaffel uniform"});
 				}
-				if (isClothingAccessible.entry("a red army uniform")) {
+				if (isClothingAccessible.entry("a red army uniform") === true) {
 					wardrobeAssignment.push({text: `and wears a red army uniform to look even more brutal and authoritative.`, clothes: "a red army uniform"});
 				}
-				if (isClothingAccessible.entry("stretch pants and a crop-top")) {
+				if (isClothingAccessible.entry("stretch pants and a crop-top") === true) {
 					wardrobeAssignment.push({text: `and decides to take it easy by slipping into some stretch pants. They come off just as quickly as they come on, just in case.`, clothes: "stretch pants and a crop-top"});
 				}
 			} else if (slave.assignment === "be the Attendant") {
 				wardrobeAssignment.push({text: `and wears a string bikini, since it's all ${he} can wear that won't be ruined by all the moisture in the spa.`, clothes: "a string bikini"});
-				if (isClothingAccessible.entry("a monokini")) {
+				if (isClothingAccessible.entry("a monokini") === true) {
 					wardrobeAssignment.push({text: `and wears an one-piece swimsuit, since it's all ${he} can wear that won't be ruined by all the moisture in the spa.`, clothes: "a monokini"});
 				}
-				if (isClothingAccessible.entry("a one-piece swimsuit")) {
+				if (isClothingAccessible.entry("a one-piece swimsuit") === true) {
 					wardrobeAssignment.push({text: `and wears a one-piece swimsuit, since it's all ${he} can wear that won't be ruined by all the moisture in the spa.`, clothes: "a one-piece swimsuit"});
 				}
-				if (isClothingAccessible.entry("a burkini")) {
+				if (isClothingAccessible.entry("a burkini") === true) {
 					wardrobeAssignment.push({text: `and wears a modest swimsuit, since it's all ${he} can wear that won't be ruined by all the moisture in the spa.`, clothes: "a burkini"});
 				}
 				wardrobeAssignment.push({text: `but decides to go nude, since ${he}'ll be spending so much time in the water.`, clothes: "no clothing"});
@@ -357,10 +357,10 @@ window.saChoosesOwnClothes = (function() {
 				wardrobeAssignment.push({text: `and slips into some attractive lingerie to enjoy ${himself} as ${he} unwinds.`, clothes: "attractive lingerie"});
 				wardrobeAssignment.push({text: `and slips into nothing more than a pair of panties.`, clothes: "panties"});
 				wardrobeAssignment.push({text: `but decides that clothing takes too much work and would rather sleep nude.`, clothes: "no clothing"});
-				if (isClothingAccessible.entry("stretch pants and a crop-top")) {
+				if (isClothingAccessible.entry("stretch pants and a crop-top") === true) {
 					wardrobeAssignment.push({text: `and slips into some comfy stretch pants to relax.`, clothes: "stretch pants and a crop-top"});
 				}
-				if (isClothingAccessible.entry("attractive lingerie for a pregnant woman") && slave.belly >= 1500) {
+				if (isClothingAccessible.entry("attractive lingerie for a pregnant woman") === true && slave.belly >= 1500) {
 					wardrobeAssignment.push({text: `and slips into some attractive lingerie to enjoy ${himself} as ${he} unwinds.`, clothes: "attractive lingerie for a pregnant woman"});
 				}
 				if (slave.fetish === "submissive") {
@@ -368,13 +368,13 @@ window.saChoosesOwnClothes = (function() {
 				}
 			} else if (slave.assignment === "get milked" || slave.assignment === "work in the dairy") {
 				wardrobeAssignment.push({text: `and wears sturdy lingerie to offer the best support to ${his} sore, milk-filled udders.`, clothes: "attractive lingerie"});
-				if (isClothingAccessible.entry("attractive lingerie for a pregnant woman") && slave.belly >= 1500) {
+				if (isClothingAccessible.entry("attractive lingerie for a pregnant woman") === true && slave.belly >= 1500) {
 					wardrobeAssignment.push({text: `and wears lingerie designed for milky mothers.`, clothes: "attractive lingerie for a pregnant woman"});
 				}
-				if (isClothingAccessible.entry("a maternity dress") && slave.belly >= 10000) {
+				if (isClothingAccessible.entry("a maternity dress") === true && slave.belly >= 10000) {
 					wardrobeAssignment.push({text: `and chooses a maternity dress since it is easy to free ${his} breasts from.`, clothes: "a maternity dress"});
 				}
-				if (isClothingAccessible.entry("a monokini")) {
+				if (isClothingAccessible.entry("a monokini") === true) {
 					wardrobeAssignment.push({text: `and chooses a swimsuit that leaves ${his} breasts exposed.`, clothes: "a monokini"});
 				}
 				wardrobeAssignment.push({text: `and puts on a pair of overalls, making sure to leave ${his} breasts exposed.`, clothes: "overalls"});
@@ -386,48 +386,48 @@ window.saChoosesOwnClothes = (function() {
 				wardrobeAssignment.push({text: `and dons a slutty outfit. If ${his} breasts are going to hang out, might as well wear something to complement them.`, clothes: "a slutty outfit"});
 			} else if (slave.assignment === "guard you") {
 				wardrobeAssignment.push({text: `and wears a bodysuit to show off ${his} curves without hindering ${his} deadliness.`, clothes: "a comfortable bodysuit"});
-				if (isClothingAccessible.entry("a military uniform")) {
+				if (isClothingAccessible.entry("a military uniform") === true) {
 					wardrobeAssignment.push({text: `and wears a military uniform to look the part of the honor guard.`, clothes: "a military uniform"});
 				}
-				if (isClothingAccessible.entry("a schutzstaffel uniform")) {
+				if (isClothingAccessible.entry("a schutzstaffel uniform") === true) {
 					wardrobeAssignment.push({text: `and wears a schutzstaffel uniform to look the part of the honor guard.`, clothes: "a schutzstaffel uniform"});
 					wardrobeAssignment.push({text: `and wears a slutty schutzstaffel uniform to look the part of the honor guard.`, clothes: "a slutty schutzstaffel uniform"});
 				}
-				if (isClothingAccessible.entry("a red army uniform")) {
+				if (isClothingAccessible.entry("a red army uniform") === true) {
 					wardrobeAssignment.push({text: `and wears a red army uniform to look the part of the honor guard.`, clothes: "a red army uniform"});
 				}
-				if (isClothingAccessible.entry("nice business attire")) {
+				if (isClothingAccessible.entry("nice business attire") === true) {
 					wardrobeAssignment.push({text: `and wears a nice suit to make it clear you mean business.`, clothes: "nice business attire"});
 				}
-				if (isClothingAccessible.entry("a mounty outfit")) {
+				if (isClothingAccessible.entry("a mounty outfit") === true) {
 					wardrobeAssignment.push({text: `and wears a mounty outfit to make it clear you mean business.`, clothes: "a mounty outfit"});
 				}
 				wardrobeAssignment.push({text: `and wears a scalemail bikini to make ${himself} look fierce.`, clothes: "a scalemail bikini"});
-				if (isClothingAccessible.entry("a kimono")) {
+				if (isClothingAccessible.entry("a kimono") === true) {
 					wardrobeAssignment.push({text: `and wears a nice kimono to add an air of elegance to your presence.`, clothes: "a kimono"});
 				}
 			} else {
 				/* Chooses clothes according to assignment (exceptions allowed)*/
 				if (slave.assignment === "recruit girls") {
-					if (isClothingAccessible.entry("a mini dress")) {
+					if (isClothingAccessible.entry("a mini dress") === true) {
 						wardrobeAssignment.push({text: `and wears a flattering mini dress to appear sexy and carefree before those desperately seeking a better life.`, clothes: "a mini dress"});
 					}
 					wardrobeAssignment.push({text: `and wears a cutoffs and a t-shirt to appear sexy and carefree before those desperately seeking a better life.`, clothes: "cutoffs and a t-shirt"});
-					if (isClothingAccessible.entry("nice business attire")) {
+					if (isClothingAccessible.entry("nice business attire") === true) {
 						wardrobeAssignment.push({text: `and wears a nice suit to appear trustworthy before those desperately seeking a better life.`, clothes: "nice business attire"});
 					}
 					wardrobeAssignment.push({text: `and wears a schoolgirl outfit to appear sexy and carefree before those desperately seeking a better life.`, clothes: "a schoolgirl outfit"});
-					if (isClothingAccessible.entry("a ball gown")) {
+					if (isClothingAccessible.entry("a ball gown") === true) {
 						wardrobeAssignment.push({text: `and wears an opulent gown to showcase your wealth before those desperately seeking a better life.`, clothes: "a ball gown"});
 					}
 					wardrobeAssignment.push({text: `and dresses as a succubus to attempt to lure any potential catches.`, clothes: "a succubus outfit"});
-					if (isClothingAccessible.entry("harem gauze")) {
+					if (isClothingAccessible.entry("harem gauze") === true) {
 						wardrobeAssignment.push({text: `and dons ${his} finest silks to showcase the luxuries waiting would-be slaves.`, clothes: "harem gauze"});
 					}
-					if (isClothingAccessible.entry("stretch pants and a crop-top")) {
+					if (isClothingAccessible.entry("stretch pants and a crop-top") === true) {
 						wardrobeAssignment.push({text: `and wears comfortable stretch pants to and crop-top to appear carefree before those desperately seeking a better life.`, clothes: "stretch pants and a crop-top"});
 					}
-					if (isClothingAccessible.entry("conservative clothing")) {
+					if (isClothingAccessible.entry("conservative clothing") === true) {
 						wardrobeAssignment.push({text: `and wears normal clothing to suggest to those desperately seeking a better life that they can find it here with you.`, clothes: "conservative clothing"});
 					}
 				} else if (slave.assignment === "be the DJ") {
@@ -439,7 +439,7 @@ window.saChoosesOwnClothes = (function() {
 					if (slave.boobs > 1000) {
 						wardrobeAssignment.push({text: `but decides to go naked and let ${his} girls bounce free as ${he} dances.`, clothes: "no clothing"});
 					}
-					if (isClothingAccessible.entry("harem gauze")) {
+					if (isClothingAccessible.entry("harem gauze") === true) {
 						wardrobeAssignment.push({text: `and wears the finest available silks to give ${his} moves a sensual grace.`, clothes: "harem gauze"});
 					}
 				} else if (slave.assignment === "be your Concubine") {
@@ -451,7 +451,7 @@ window.saChoosesOwnClothes = (function() {
 						wardrobeAssignment.push({text: `and dresses as a slutty maid as you always come home with a stiff package that needs a thorough polishing.`, clothes: "a slutty maid outfit"});
 					}
 					wardrobeAssignment.push({text: `and, since you personally see that ${he} never goes hungry, ${he} dresses like the sex demoness ${he} is.`, clothes: "a succubus outfit"});
-					if (isClothingAccessible.entry("attractive lingerie for a pregnant woman") && slave.belly >= 10000 && slave.pregSource === -1) {
+					if (isClothingAccessible.entry("attractive lingerie for a pregnant woman") === true && slave.belly >= 10000 && slave.pregSource === -1) {
 						wardrobeAssignment.push({text: `and chooses attractive lingerie to showcase the body you've given ${him} in the hopes that you ravish ${him}.`, clothes: "attractive lingerie for a pregnant woman"});
 					}
 					if (slave.toyHole === "dick" && canPenetrate(slave)) {
@@ -459,7 +459,7 @@ window.saChoosesOwnClothes = (function() {
 					}
 				} else if (slave.assignment === "be a subordinate slave") {
 					wardrobeAssignment.push({text: `but gives up and goes naked after the other slaves constantly tear whatever ${he}'s wearing off ${him}.`, clothes: "no clothing"});
-					if (isClothingAccessible.entry("Western clothing")) {
+					if (isClothingAccessible.entry("Western clothing") === true) {
 						wardrobeAssignment.push({text: `and chooses a pair of crotchless chaps so your other slaves don't have to waste time undressing ${him}.`, clothes: "Western clothing"});
 					}
 					if (slave.fetish === "submissive") {
@@ -472,28 +472,28 @@ window.saChoosesOwnClothes = (function() {
 				} else if (slave.assignment === "take classes" || slave.assignment === "learn in the schoolroom") {
 					wardrobeAssignment.push({text: `and wears a schoolgirl outfit, since it seems most appropriate.`, clothes: "a schoolgirl outfit"});
 					wardrobeAssignment.push({text: `and wears a cheerleader outfit, since ${he} might as well be one of the popular girls.`, clothes: "a cheerleader outfit"});
-					if (isClothingAccessible.entry("conservative clothing")) {
+					if (isClothingAccessible.entry("conservative clothing") === true) {
 						wardrobeAssignment.push({text: `and wears normal clothing to not distract from ${his} lessons.`, clothes: "conservative clothing"});
 					}
 				} else if ((slave.assignment === "whore") || (slave.assignment === "work in the brothel")) {
-					if (slave.belly >= 5000 && isClothingAccessible.entry("attractive lingerie for a pregnant woman")) {
+					if (slave.belly >= 5000 && isClothingAccessible.entry("attractive lingerie for a pregnant woman") === true) {
 						wardrobeAssignment.push({text: `and wears pretty lingerie to show off ${his} merchandise and accentuate ${his} pregnancy while still looking a little classy.`, clothes: "attractive lingerie for a pregnant woman"});
 					}
 					wardrobeAssignment.push({text: `and wears pretty lingerie to show off ${his} merchandise and still look a little classy.`, clothes: "attractive lingerie"});
-					if (isClothingAccessible.entry("kitty lingerie")) {
+					if (isClothingAccessible.entry("kitty lingerie") === true) {
 						wardrobeAssignment.push({text: `and wears pretty lingerie to show off ${his} merchandise and still look a little cute.`, clothes: "kitty lingerie"});
 					}
-					if (isClothingAccessible.entry("harem gauze")) {
+					if (isClothingAccessible.entry("harem gauze") === true) {
 						wardrobeAssignment.push({text: `and dresses ${himself} with harem gauze to add an exotic charm to ${his} display.`, clothes: "harem gauze"});
 					}
-					if (isClothingAccessible.entry("a kimono")) {
+					if (isClothingAccessible.entry("a kimono") === true) {
 						wardrobeAssignment.push({text: `and wraps ${himself} in a kimono to add some elegance to ${his} display.`, clothes: "a kimono"});
 					}
-					if (isClothingAccessible.entry("a slave gown")) {
+					if (isClothingAccessible.entry("a slave gown") === true) {
 						wardrobeAssignment.push({text: `and adorns ${himself} in fine dress to show off how much of a high class whore ${he} is.`, clothes: "a slave gown"});
 					}
 					wardrobeAssignment.push({text: `and dresses ${himself} in a slutty suit to show ${he}'s in it for the ¤.`, clothes: "slutty business attire"});
-					if (isClothingAccessible.entry("a mini dress")) {
+					if (isClothingAccessible.entry("a mini dress") === true) {
 						wardrobeAssignment.push({text: `and wears a flattering mini dress to really strut ${his} stuff.`, clothes: "a mini dress"});
 					}
 				} else if (slave.assignment === "serve the public" || slave.assignment === "serve in the club") {
@@ -502,7 +502,7 @@ window.saChoosesOwnClothes = (function() {
 					wardrobeAssignment.push({text: `and tosses on a slutty suit that screams ${he} needs a good fuck after a long day.`, clothes: "slutty business attire"});
 					wardrobeAssignment.push({text: `and dresses up as a slutty nurse; ${he} has just the technique to cure penile swelling.`, clothes: "a slutty nurse outfit"});
 					wardrobeAssignment.push({text: `and wears a cheerleader outfit to look energetic and fuckable.`, clothes: "a cheerleader outfit"});
-					if (isClothingAccessible.entry("a bunny outfit")) {
+					if (isClothingAccessible.entry("a bunny outfit") === true) {
 						wardrobeAssignment.push({text: `and slips into a teddy to add some class to ${his} post.`, clothes: "a bunny outfit"});
 					}
 					wardrobeAssignment.push({text: `and dresses up as a succubus to clearly advertise ${his} promiscuity.`, clothes: "a succubus outfit"});
@@ -515,13 +515,13 @@ window.saChoosesOwnClothes = (function() {
 						wardrobeAssignment.push({text: `and wears nothing more than an apron in the hopes that someone sneaks up behind ${him} as ${he} works and fulfills ${his} desires.`, clothes: "an apron"});
 					} else if (slave.energy > 80) {
 						wardrobeAssignment.push({text: `and wears a skimpy maid outfit to tempt anyone watching ${his} work.`, clothes: "a slutty maid outfit"});
-						if (isClothingAccessible.entry("a nice maid outfit")) {
+						if (isClothingAccessible.entry("a nice maid outfit") === true) {
 							wardrobeAssignment.push({text: `and wears a sturdy maid outfit, since anything else might be damaged by ${his} hard work around the penthouse.`, clothes: "a nice maid outfit"});
 						}
 						wardrobeAssignment.push({text: `and wears a skimpy maid outfit to tempt anyone watching ${his} work.`, clothes: "a slutty maid outfit"});
 						wardrobeAssignment.push({text: `and wears nothing more than an apron to tempt anyone watching ${his} work.`, clothes: "an apron"});
 					} else {
-						if (isClothingAccessible.entry("a nice maid outfit")) {
+						if (isClothingAccessible.entry("a nice maid outfit") === true) {
 							wardrobeAssignment.push({text: `and wears a sturdy maid outfit, since anything else might be damaged by ${his} hard work around the penthouse.`, clothes: "a nice maid outfit"});
 						}
 						wardrobeAssignment.push({text: `and wears a skimpy maid outfit to tempt anyone watching ${his} work.`, clothes: "a slutty maid outfit"});
@@ -558,14 +558,14 @@ window.saChoosesOwnClothes = (function() {
 					wardrobeFS.push({text: `and settles for some sexy succubutt.`, clothes: "a succubus outfit"});
 				}
 				if (V.arcologies[0].FSSlaveProfessionalism > 0) {
-					if (isClothingAccessible.entry("nice business attire")) {
+					if (isClothingAccessible.entry("nice business attire") === true) {
 						if (slave.energy > 80) {
 							wardrobeFS.push({text: `and picks out a professional suit with a nice, short skirt so ${he} can get right to business.`, clothes: "slutty business attire"});
 						} else {
 							wardrobeFS.push({text: `and picks out a professional suit that shows ${he} is open for business.`, clothes: "nice business attire"});
 						}
 					}
-					if (isClothingAccessible.entry("a nice maid outfit")) {
+					if (isClothingAccessible.entry("a nice maid outfit") === true) {
 						if (slave.energy > 80) {
 							wardrobeFS.push({text: `and picks out a skimpy maid outfit so ${he} can take advantage of its short skirt and ${his} lack of underwear,`, clothes: "a slutty maid outfit"});
 						} else {
@@ -579,7 +579,7 @@ window.saChoosesOwnClothes = (function() {
 					wardrobeFS.push({text: `and slaps together the sluttiest outfit ${he} can manage.`, clothes: "a slutty outfit"});
 					wardrobeFS.push({text: `and squeezes into a fishnet bodysuit to give ${his} nudity a slutty flair.`, clothes: "clubslut netting"});
 					wardrobeFS.push({text: `and ties on the skimpiest bikini ${he} can find.`, clothes: "a string bikini"});
-					if (slave.bellyPreg >= 5000 && isClothingAccessible.entry("attractive lingerie for a pregnant woman")) {
+					if (slave.bellyPreg >= 5000 && isClothingAccessible.entry("attractive lingerie for a pregnant woman") === true) {
 						wardrobeFS.push({text: `and opts for the classic seductive lingerie, albeit something more fitting for ${his} 'little accident'.`, clothes: "attractive lingerie for a pregnant woman"});
 					} else {
 						wardrobeFS.push({text: `and opts for the classic seductive lingerie.`, clothes: "attractive lingerie"});
@@ -587,10 +587,10 @@ window.saChoosesOwnClothes = (function() {
 				}
 				if (V.arcologies[0].FSPaternalist > 0) {
 					wardrobeFS.push({text: `and wears conservative clothing, as permitted by your paternalism.`, clothes: "conservative clothing"});
-					if (isClothingAccessible.entry("a hijab and blouse") && slave.race === "middle eastern") {
+					if (isClothingAccessible.entry("a hijab and blouse") === true && slave.race === "middle eastern") {
 						wardrobeFS.push({text: `and wears very conservative clothing, as permitted by your paternalism.`, clothes: "a hijab and blouse"});
 					}
-					if (isClothingAccessible.entry("stretch pants and a crop-top")) {
+					if (isClothingAccessible.entry("stretch pants and a crop-top") === true) {
 						wardrobeFS.push({text: `and wears the most comfortable stretch pants ${he} can find.`, clothes: "stretch pants and a crop-top"});
 					}
 				} else if (V.arcologies[0].FSDegradationist > 0) {
@@ -601,16 +601,16 @@ window.saChoosesOwnClothes = (function() {
 				}
 				if (V.arcologies[0].FSMaturityPreferentialist > 0) {
 					if (slave.visualAge >= 30) {
-						if (isClothingAccessible.entry("nice business attire")) {
+						if (isClothingAccessible.entry("nice business attire") === true) {
 							wardrobeFS.push({text: `and wears a formal suit to look like the ideal older woman.`, clothes: "nice business attire"});
 						}
 						wardrobeFS.push({text: `and wears a slutty suit to look like the ideal horny older woman.`, clothes: "slutty business attire"});
 						wardrobeFS.push({text: `and wears only an apron to make ${himself} seem more matronly.`, clothes: "an apron"});
 					} else {
-						if (isClothingAccessible.entry("nice business attire")) {
+						if (isClothingAccessible.entry("nice business attire") === true) {
 							wardrobeFS.push({text: `and wears a formal suit to look more mature.`, clothes: "nice business attire"});
 						}
-						if (isClothingAccessible.entry("a Santa dress")) {
+						if (isClothingAccessible.entry("a Santa dress") === true) {
 							wardrobeFS.push({text: `and wears a dress referencing a figure of advanced age.`, clothes: "a Santa dress"});
 						}
 						wardrobeFS.push({text: `and wears only an apron in an attempt to make ${himself} seem more matronly.`, clothes: "an apron"});
@@ -632,10 +632,10 @@ window.saChoosesOwnClothes = (function() {
 				if (V.arcologies[0].FSPastoralist > 0) {
 					wardrobeFS.push({text: `and wears Western clothing, since ${he} thinks it fits with pastoralism.`, clothes: "Western clothing"});
 					wardrobeFS.push({text: `and wears overalls that leave ${his} breasts uncovered.`, clothes: "overalls"});
-					if (isClothingAccessible.entry("a monokini")) {
+					if (isClothingAccessible.entry("a monokini") === true) {
 						wardrobeFS.push({text: `and wears a swimsuit that leaves ${his} breasts uncovered.`, clothes: "a monokini"});
 					}
-					if (isClothingAccessible.entry("pasties")) {
+					if (isClothingAccessible.entry("pasties") === true) {
 						wardrobeFS.push({text: `and wears nothing more than a pair of pasties over ${his} nipples and crotch.`, clothes: "pasties"});
 					}
 					if (slave.lactation > 0) {
@@ -646,13 +646,13 @@ window.saChoosesOwnClothes = (function() {
 				if (V.arcologies[0].FSBodyPurist > 0) {
 					wardrobeFS.push({text: `and wears a leotard to show off the purity of ${his} body.`, clothes: "a leotard"});
 					wardrobeFS.push({text: `but decides ${his} body is too nice to hide with clothing.`, clothes: "no clothing"});
-					if (isClothingAccessible.entry("body oil")) {
+					if (isClothingAccessible.entry("body oil") === true) {
 						wardrobeFS.push({text: `and coats ${his} pure body in oil to make it stand out.`, clothes: "body oil"});
 					}
 				} else if (V.arcologies[0].FSTransformationFetishist > 0) {
 					wardrobeFS.push({text: `and decides squeezing into a latex suit will only complement ${his} unnatural appearance.`, clothes: "restrictive latex"});
 					wardrobeFS.push({text: `and decides to go nude, ensuring everyone sees ${his} assets.`, clothes: "no clothing"});
-					if (isClothingAccessible.entry("body oil")) {
+					if (isClothingAccessible.entry("body oil") === true) {
 						wardrobeFS.push({text: `and coats ${his} assets in body oil to give them some extra shine.`, clothes: "body oil"});
 					}
 				}
@@ -660,13 +660,13 @@ window.saChoosesOwnClothes = (function() {
 					wardrobeFS.push({text: `and decides to dress up like a young man's wet dream.`, clothes: "a succubus outfit"});
 					wardrobeFS.push({text: `and decides to wear a skimpy bikini to make ${his} assets look even larger.`, clothes: "a string bikini"});
 					wardrobeFS.push({text: `and decides to throw together a slutty outfit that highlight ${his} assets.`, clothes: "a slutty outfit"});
-					if (isClothingAccessible.entry("a monokini")) {
+					if (isClothingAccessible.entry("a monokini") === true) {
 						wardrobeFS.push({text: `and decides to wear a monokini that clings to the assets it actually does conceal.`, clothes: "a monokini"});
 					}
 				} else if (V.arcologies[0].FSSlimnessEnthusiast > 0) {
 					if (slave.boobs < 300) {
 						wardrobeFS.push({text: `and wears a string bikini to show off just how flat ${he} is.`, clothes: "a string bikini"});
-						if (isClothingAccessible.entry("a monokini")) {
+						if (isClothingAccessible.entry("a monokini") === true) {
 							wardrobeFS.push({text: `and wears a monokini that leaves ${his} flat chest bare.`, clothes: "a monokini"});
 						}
 						wardrobeFS.push({text: `and wears only panties, leaving ${his} flat chest bare.`, clothes: "panties"});
@@ -682,23 +682,23 @@ window.saChoosesOwnClothes = (function() {
 				}
 				if (V.arcologies[0].FSSupremacist > 0) {
 					if (V.arcologies[0].FSSupremacistRace === "white") {
-						if (isClothingAccessible.entry("a dirndl")) {
+						if (isClothingAccessible.entry("a dirndl") === true) {
 							wardrobeFS.push({text: `and wears one of the beautiful folk costumes of the white race.`, clothes: "a dirndl"});
 						}
-						if (isClothingAccessible.entry("lederhosen")) {
+						if (isClothingAccessible.entry("lederhosen") === true) {
 							wardrobeFS.push({text: `and wears one of the beautiful folk costumes of the white race.`, clothes: "lederhosen"});
 						}
 					} else if (V.arcologies[0].FSSupremacistRace === "asian") {
-						if (isClothingAccessible.entry("a biyelgee costume")) {
+						if (isClothingAccessible.entry("a biyelgee costume") === true) {
 							wardrobeFS.push({text: `and wears one of the beautiful folk costumes of the asian race.`, clothes: "a biyelgee costume"});
 						}
-						if (isClothingAccessible.entry("a long qipao")) {
+						if (isClothingAccessible.entry("a long qipao") === true) {
 							wardrobeFS.push({text: `and wears one of the beautiful folk costumes of the asian race.`, clothes: "a long qipao"});
 						}
-						if (isClothingAccessible.entry("a kimono")) {
+						if (isClothingAccessible.entry("a kimono") === true) {
 							wardrobeAssignment.push({text: `and wears one of the beautiful folk costumes of the asian race.`, clothes: "a kimono"});
 						}
-						if (isClothingAccessible.entry("a hanbok")) {
+						if (isClothingAccessible.entry("a hanbok") === true) {
 							wardrobeAssignment.push({text: `and wears one of the beautiful folk costumes of the asian race.`, clothes: "a hanbok"});
 						}
 					}
@@ -706,17 +706,17 @@ window.saChoosesOwnClothes = (function() {
 
 				if (V.arcologies[0].FSSubjugationist > 0) {
 					if (V.arcologies[0].FSSubjugationistRace === "black") {
-						if (isClothingAccessible.entry("a klan robe")) {
+						if (isClothingAccessible.entry("a klan robe") === true) {
 							wardrobeFS.push({text: `and wears a costume associated with anti-black societies of the past.`, clothes: "a klan robe"});
 						}
-						if (isClothingAccessible.entry("a slutty klan robe")) {
+						if (isClothingAccessible.entry("a slutty klan robe") === true) {
 							wardrobeFS.push({text: `and wears a costume associated with anti-black societies of the past.`, clothes: "a slutty klan robe"});
 						}
 					} else if (V.arcologies[0].FSSubjugationistRace === "semitic") {
-						if (isClothingAccessible.entry("a schutzstaffel uniform")) {
+						if (isClothingAccessible.entry("a schutzstaffel uniform") === true) {
 							wardrobeFS.push({text: `and wears a costume associated with anti-semitic societies of the past.`, clothes: "a schutzstaffel uniform"});
 						}
-						if (isClothingAccessible.entry("a slutty schutzstaffel uniform")) {
+						if (isClothingAccessible.entry("a slutty schutzstaffel uniform") === true) {
 							wardrobeFS.push({text: `and wears a costume associated with anti-semitic societies of the past.`, clothes: "a slutty schutzstaffel uniform"});
 						}
 					}
@@ -731,7 +731,7 @@ window.saChoosesOwnClothes = (function() {
 						if (slave.butt > 3) {
 							wardrobeTastes.push({text: `and slips on some cutoffs that are sure to have men checking out ${his} ass.`, clothes: "cutoffs and a t-shirt"});
 						}
-						if (isClothingAccessible.entry("a bunny outfit")) {
+						if (isClothingAccessible.entry("a bunny outfit") === true) {
 							wardrobeTastes.push({text: `and slips into a bunny outfit that ${he} knows will have men lining up.`, clothes: "a bunny outfit"});
 						}
 						if (slave.boobs > 800) {
@@ -744,7 +744,7 @@ window.saChoosesOwnClothes = (function() {
 						if (slave.butt > 3) {
 							wardrobeTastes.push({text: `and slips on some cutoffs that shows off ${his} ass.`, clothes: "cutoffs and a t-shirt"});
 						}
-						if (isClothingAccessible.entry("a bunny outfit")) {
+						if (isClothingAccessible.entry("a bunny outfit") === true) {
 							wardrobeTastes.push({text: `and slips into a bunny outfit that hugs ${his} curves.`, clothes: "a bunny outfit"});
 						}
 						if (slave.boobs > 800) {
@@ -754,19 +754,19 @@ window.saChoosesOwnClothes = (function() {
 				}
 				if (slave.attrXX > 70) {
 					if (slave.attrKnown === 1) {
-						if (isClothingAccessible.entry("a slave gown")) {
+						if (isClothingAccessible.entry("a slave gown") === true) {
 							wardrobeTastes.push({text: `and wears a fashionable gown, since girls appreciate nice clothes.`, clothes: "a slave gown"});
 						}
 						wardrobeTastes.push({text: `and wears nothing but pretty lingerie to give the girls a show.`, clothes: "attractive lingerie"});
-						if (isClothingAccessible.entry("nice business attire")) {
+						if (isClothingAccessible.entry("nice business attire") === true) {
 							wardrobeTastes.push({text: `and wears a nice suit, since girls appreciate nice clothes.`, clothes: "nice business attire"});
 						}
 					} else {
-						if (isClothingAccessible.entry("a slave gown")) {
+						if (isClothingAccessible.entry("a slave gown") === true) {
 							wardrobeTastes.push({text: `and wears a fashionable gown.`, clothes: "a slave gown"});
 						}
 						wardrobeTastes.push({text: `and wears pretty lingerie that shows off ${his} body.`, clothes: "attractive lingerie"});
-						if (isClothingAccessible.entry("nice business attire")) {
+						if (isClothingAccessible.entry("nice business attire") === true) {
 							wardrobeTastes.push({text: `and wears a nice suit, the reasons not entirely clear to you.`, clothes: "nice business attire"});
 						}
 					}
@@ -783,12 +783,12 @@ window.saChoosesOwnClothes = (function() {
 
 				/* quirks n flaws */
 				if (slave.behavioralFlaw === "arrogant") {
-					if (isClothingAccessible.entry("a ball gown")) {
+					if (isClothingAccessible.entry("a ball gown") === true) {
 						wardrobeTastes.push({text: `and chooses a formal dress that makes ${him} feel like royalty.`, clothes: "a ball gown"});
 					}
 				} else if (slave.behavioralFlaw === "devout") {
 					wardrobeTastes.push({text: `and wears something more appropriate for a monastery than a whorehouse.`, clothes: "a penitent nuns habit"});
-					if (isClothingAccessible.entry("a burqa")) {
+					if (isClothingAccessible.entry("a burqa") === true) {
 						wardrobeTastes.push({text: `and chooses an incredibly restricting piece of religious garb.`, clothes: "a burqa"});
 					}
 				}
@@ -801,46 +801,46 @@ window.saChoosesOwnClothes = (function() {
 
 				if (slave.sexualFlaw === "shamefast") {
 					wardrobeTastes.push({text: `and chooses an outfit that covers ${him} up as much as possible.`, clothes: "a hijab and abaya"});
-					if (isClothingAccessible.entry("a burqa")) {
+					if (isClothingAccessible.entry("a burqa") === true) {
 						wardrobeTastes.push({text: `and chooses an outfit that covers ${him} up as much as possible.`, clothes: "a burqa"});
 					}
 				} else if (slave.sexualFlaw === "breeder") {
-					if (isClothingAccessible.entry("attractive lingerie for a pregnant woman")) {
+					if (isClothingAccessible.entry("attractive lingerie for a pregnant woman") === true) {
 						wardrobeTastes.push({text: `and wears lingerie designed to accommodate pregnancies, hoping that others get the hint.`, clothes: "attractive lingerie for a pregnant woman"});
 					}
 				} else if (slave.sexualFlaw === "malicious") {
-					if (isClothingAccessible.entry("a schutzstaffel uniform")) {
+					if (isClothingAccessible.entry("a schutzstaffel uniform") === true) {
 						wardrobeTastes.push({text: `and chooses an outfit that is commonly associated with wanton cruelty.`, clothes: "a schutzstaffel uniform"});
 						wardrobeTastes.push({text: `and chooses a skimpy outfit that is commonly associated with wanton cruelty.`, clothes: "a slutty schutzstaffel uniform"});
 					}
 				}
 
 				if (slave.sexualQuirk === "romantic") {
-					if (isClothingAccessible.entry("a halter top dress")) {
+					if (isClothingAccessible.entry("a halter top dress") === true) {
 						wardrobeTastes.push({text: `and dresses up like ${he}'s about to go on a date.`, clothes: "a halter top dress"});
 					}
 				} else if (slave.sexualQuirk === "tease") {
-					if (isClothingAccessible.entry("kitty lingerie")) {
+					if (isClothingAccessible.entry("kitty lingerie") === true) {
 						wardrobeTastes.push({text: `and wears a set of provocatively designed lingerie.`, clothes: "kitty lingerie"});
 					}
-					if (isClothingAccessible.entry("panties and pasties")) {
+					if (isClothingAccessible.entry("panties and pasties") === true) {
 						wardrobeTastes.push({text: `and wears the skimpiest outfit ${he} can find.`, clothes: "panties and pasties"});
 					}
 				}
 
 				/* age stuff */
 				if (slave.actualAge < 10) {
-					if (isClothingAccessible.entry("a ball gown")) {
+					if (isClothingAccessible.entry("a ball gown") === true) {
 						wardrobeTastes.push({text: `and puts on a pretty dress so ${he} can be a princess.`, clothes: "a ball gown"});
 					}
 					wardrobeTastes.push({text: `and dresses up like a cheerleader since ${he} thinks it looks cute.`, clothes: "a cheerleader outfit"});
-					if (isClothingAccessible.entry("a kimono")) {
+					if (isClothingAccessible.entry("a kimono") === true) {
 						wardrobeTastes.push({text: `and wraps ${himself} in a kimono, since it feels so good on ${his} skin.`, clothes: "a kimono"});
 					}
 				} else if (slave.actualAge < 18) {
 					wardrobeTastes.push({text: `and chooses an outfit that somewhat resembles one of ${his} school uniforms.`, clothes: "a schoolgirl outfit"});
 				} else if (slave.actualAge > 65) {
-					if (isClothingAccessible.entry("a Santa dress")) {
+					if (isClothingAccessible.entry("a Santa dress") === true) {
 						wardrobeTastes.push({text: `and chooses a dress that acknowledges ${his} advanced age while still looking sexy.`, clothes: "a Santa dress"});
 					}
 				}
@@ -851,20 +851,20 @@ window.saChoosesOwnClothes = (function() {
 						wardrobeTastes.push({text: `and wears restrictive latex to encourage others to dominate ${him}.`, clothes: "restrictive latex"});
 						wardrobeTastes.push({text: `and wears shibari ropes to encourage others to dominate ${him}.`, clothes: "shibari ropes"});
 					} else if (slave.fetish === "dom") {
-						if (isClothingAccessible.entry("nice business attire")) {
+						if (isClothingAccessible.entry("nice business attire") === true) {
 							wardrobeTastes.push({text: `and wears a handsome suit, since ${he} likes other slaves to look up to ${him}.`, clothes: "nice business attire"});
 						}
-						if (isClothingAccessible.entry("a latex catsuit")) {
+						if (isClothingAccessible.entry("a latex catsuit") === true) {
 							wardrobeTastes.push({text: `and wears a full body latex catsuit to look the part of the whip cracking dom.`, clothes: "a latex catsuit"});
 						}
 						wardrobeTastes.push({text: `and wears a scalemail bikini to make ${himself} look tough.`, clothes: "a scalemail bikini"});
 					} else if (slave.fetish === "masochist") {
 						wardrobeTastes.push({text: `and wears painfully restrictive bondage gear, since ${he} likes the torment.`, clothes: "uncomfortable straps"});
-						if (isClothingAccessible.entry("chains")) {
+						if (isClothingAccessible.entry("chains") === true) {
 							wardrobeTastes.push({text: `and wears painfully tight chains, since ${he} likes the torment.`, clothes: "chains"});
 						}
 					} else if (slave.fetish === "sadist") {
-						if (isClothingAccessible.entry("a slave gown")) {
+						if (isClothingAccessible.entry("a slave gown") === true) {
 							wardrobeTastes.push({text: `and wears an elegant gown, since ${he} thinks it makes ${him} look the part of the femme fatale.`, clothes: "a slave gown"});
 						}
 						wardrobeTastes.push({text: `and wears a scalemail bikini, since ${he} thinks it makes ${him} look fierce.`, clothes: "a scalemail bikini"});
@@ -877,21 +877,21 @@ window.saChoosesOwnClothes = (function() {
 						wardrobeTastes.push({text: `and wears nothing other than an apron, because ${he} likes to catch the eye without putting anything between cocks and ${his} rear end.`, clothes: "an apron"});
 					} else if (slave.fetish === "pregnancy") {
 						wardrobeTastes.push({text: `and wears a short maid dress, because ${he} wants to look motherly and fuckable at the same time.`, clothes: "a slutty maid outfit"});
-						if (isClothingAccessible.entry("a maternity dress") && canGetPregnant(slave)) {
+						if (isClothingAccessible.entry("a maternity dress") === true && canGetPregnant(slave)) {
 							wardrobeTastes.push({text: `and wears a maternity dress in the hope someone fills out its middle.`, clothes: "a maternity dress"});
 						}
 					} else if (slave.fetish === "boobs") {
 						wardrobeTastes.push({text: `and wears a cheerleader outfit, since ${he} loves the way it hugs ${his} tits as ${he} moves.`, clothes: "a cheerleader outfit"});
-						if (isClothingAccessible.entry("a monokini")) {
+						if (isClothingAccessible.entry("a monokini") === true) {
 							wardrobeTastes.push({text: `and wears a monokini, since ${he} loves how it leaves ${his} breasts totally bare.`, clothes: "a monokini"});
 						}
-						if (isClothingAccessible.entry("kitty lingerie")) {
+						if (isClothingAccessible.entry("kitty lingerie") === true) {
 							wardrobeTastes.push({text: `and chooses a lingerie set that leaves ${his} cleavage on public display.`, clothes: "kitty lingerie"});
 						}
-						if (isClothingAccessible.entry("pasties")) {
+						if (isClothingAccessible.entry("pasties") === true) {
 							wardrobeTastes.push({text: `and wears nothing but a pair of pasties to draw eyes straight to ${his} nipples.`, clothes: "pasties"});
 						}
-						if (isClothingAccessible.entry("a bra")) {
+						if (isClothingAccessible.entry("a bra") === true) {
 							wardrobeTastes.push({text: `and wears nothing but a bra in the hopes that the outlandish get up fixes eyes on ${his} chest.`, clothes: "a bra"});
 						}
 						wardrobeTastes.push({text: `and wears nothing but a pair of panties so ${his} tits can bounce freely.`, clothes: "panties"});
@@ -901,20 +901,20 @@ window.saChoosesOwnClothes = (function() {
 						wardrobeTastes.push({text: `and strangely opts for restrictive latex.`, clothes: "restrictive latex"});
 						wardrobeTastes.push({text: `and strangely opts for shibari ropes.`, clothes: "shibari ropes"});
 					} else if (slave.fetish === "dom") {
-						if (isClothingAccessible.entry("nice business attire")) {
+						if (isClothingAccessible.entry("nice business attire") === true) {
 							wardrobeTastes.push({text: `and wears a handsome suit; ${he} seems to think highly of ${himself} in it.`, clothes: "nice business attire"});
 						}
-						if (isClothingAccessible.entry("a latex catsuit")) {
+						if (isClothingAccessible.entry("a latex catsuit") === true) {
 							wardrobeTastes.push({text: `and wears a full body latex catsuit; there is a strange look on ${his} face as ${he} wears it.`, clothes: "a latex catsuit"});
 						}
 						wardrobeTastes.push({text: `and wears a scalemail bikini; ${he} keeps flexing and acting tough to ${himself}.`, clothes: "a scalemail bikini"});
 					} else if (slave.fetish === "masochist") {
 						wardrobeTastes.push({text: `and strangely opts for painfully restrictive bondage gear.`, clothes: "uncomfortable straps"});
-						if (isClothingAccessible.entry("chains")) {
+						if (isClothingAccessible.entry("chains") === true) {
 							wardrobeTastes.push({text: `and strangely opts for painfully tight chains.`, clothes: "chains"});
 						}
 					} else if (slave.fetish === "sadist") {
-						if (isClothingAccessible.entry("a slave gown")) {
+						if (isClothingAccessible.entry("a slave gown") === true) {
 							wardrobeTastes.push({text: `and wears an elegant gown for some reason.`, clothes: "a slave gown"});
 						}
 						wardrobeTastes.push({text: `and wears a scalemail bikini; an odd choice.`, clothes: "a scalemail bikini"});
@@ -927,21 +927,21 @@ window.saChoosesOwnClothes = (function() {
 						wardrobeTastes.push({text: `and wears nothing other than an apron, an odd choice; ${his} ass is completely exposed.`, clothes: "an apron"});
 					} else if (slave.fetish === "pregnancy") {
 						wardrobeTastes.push({text: `and wears a short maid dress; you frequently notice ${him} observing ${his} stomach.`, clothes: "a slutty maid outfit"});
-						if (isClothingAccessible.entry("a maternity dress") && canGetPregnant(slave)) {
+						if (isClothingAccessible.entry("a maternity dress") === true && canGetPregnant(slave)) {
 							wardrobeTastes.push({text: `and wears a maternity dress even though ${he} isn't pregnant.`, clothes: "a maternity dress"});
 						}
 					} else if (slave.fetish === "boobs") {
 						wardrobeTastes.push({text: `and wears a cheerleader outfit; ${he} seems to enjoy jiggling ${his} breasts in it.`, clothes: "a cheerleader outfit"});
-						if (isClothingAccessible.entry("a monokini")) {
+						if (isClothingAccessible.entry("a monokini") === true) {
 							wardrobeTastes.push({text: `and strangely decides to wear a monokini, which leaves ${his} breasts totally bare.`, clothes: "a monokini"});
 						}
-						if (isClothingAccessible.entry("kitty lingerie")) {
+						if (isClothingAccessible.entry("kitty lingerie") === true) {
 							wardrobeTastes.push({text: `and oddly chooses a lingerie set with a cleavage cutout in the bra.`, clothes: "kitty lingerie"});
 						}
-						if (isClothingAccessible.entry("pasties")) {
+						if (isClothingAccessible.entry("pasties") === true) {
 							wardrobeTastes.push({text: `and oddly opts for just a pair of pasties attached to ${his} nipples and one over ${his} crotch.`, clothes: "pasties"});
 						}
-						if (isClothingAccessible.entry("a bra")) {
+						if (isClothingAccessible.entry("a bra") === true) {
 							wardrobeTastes.push({text: `and oddly opts for nothing more than a bra.`, clothes: "a bra"});
 						}
 						wardrobeTastes.push({text: `and wears nothing but a pair of panties; ${he} seems to enjoy the way ${his} breasts bounce freely.`, clothes: "panties"});
@@ -954,7 +954,7 @@ window.saChoosesOwnClothes = (function() {
 				} else if (slave.energy > 60) {
 					wardrobeTastes.push({text: `and puts on some daring lingerie to draw attention to ${himself}.`, clothes: "attractive lingerie"});
 					wardrobeTastes.push({text: `and goes topless to draw attention to ${himself}.`, clothes: "panties"});
-					if (isClothingAccessible.entry("kitty lingerie")) {
+					if (isClothingAccessible.entry("kitty lingerie") === true) {
 						wardrobeTastes.push({text: `and puts on some decorative lingerie to draw attention to ${himself}.`, clothes: "kitty lingerie"});
 					}
 				}
@@ -963,15 +963,15 @@ window.saChoosesOwnClothes = (function() {
 				if (slave.belly >= 5000) {
 					wardrobeTastes.push({text: `and wears pretty lingerie to show off ${his} merchandise while giving ${his} protruding belly plenty of room to hang free.`, clothes: "attractive lingerie"});
 					wardrobeTastes.push({text: `and wears only panties. Something so easy to slip on is appreciable with such a big belly in the way.`, clothes: "panties"});
-					if (isClothingAccessible.entry("kitty lingerie")) {
+					if (isClothingAccessible.entry("kitty lingerie") === true) {
 						wardrobeTastes.push({text: `and wears cute lingerie to show off ${his} merchandise while giving ${his} protruding belly plenty of room to hang free.`, clothes: "kitty lingerie"});
 					}
-					if (isClothingAccessible.entry("a Santa dress")) {
+					if (isClothingAccessible.entry("a Santa dress") === true) {
 						wardrobeTastes.push({text: `and chooses a dress that pokes fun at ${his} rotund figure while still looking sexy.`, clothes: "a Santa dress"});
 					}
-					if (isClothingAccessible.entry("attractive lingerie for a pregnant woman") && slave.energy > 70) {
+					if (isClothingAccessible.entry("attractive lingerie for a pregnant woman") === true && slave.energy > 70) {
 						wardrobeTastes.push({text: `and wears pretty lingerie to show off ${his} merchandise and accentuate ${his} pregnancy while giving it plenty of room to hang free.`, clothes: "attractive lingerie for a pregnant woman"});
-					} else if (isClothingAccessible.entry("a maternity dress")) {
+					} else if (isClothingAccessible.entry("a maternity dress") === true) {
 						wardrobeTastes.push({text: `and wears a conservative dress with plenty of give for ${his} belly to stretch it.`, clothes: "a maternity dress"});
 					}
 					wardrobeTastes.push({text: `and wears string lingerie to look fun and fuckable while giving ${his} protruding belly plenty of room to hang free.`, clothes: "a string bikini"});
@@ -980,19 +980,19 @@ window.saChoosesOwnClothes = (function() {
 				}
 
 				if (slave.nationality === "Canadian") {
-					if (isClothingAccessible.entry("a mounty outfit")) {
+					if (isClothingAccessible.entry("a mounty outfit") === true) {
 						wardrobeTastes.push({text: `and chooses an outfit that makes ${him} feel oddly nostalgic.`, clothes: "a mounty outfit"});
 					}
 				} else if (slave.nationality === "Japanese") {
-					if (isClothingAccessible.entry("a kimono")) {
+					if (isClothingAccessible.entry("a kimono") === true) {
 						wardrobeTastes.push({text: `and chooses an outfit that makes ${him} feel oddly nostalgic.`, clothes: "a kimono"});
 					}
 				} else if (slave.nationality === "Korean") {
-					if (isClothingAccessible.entry("a hanbok")) {
+					if (isClothingAccessible.entry("a hanbok") === true) {
 						wardrobeTastes.push({text: `and chooses an outfit that makes ${him} feel oddly nostalgic.`, clothes: "a hanbok"});
 					}
 				} else if (slave.nationality === "Mongolian") {
-					if (isClothingAccessible.entry("a biyelgee costume")) {
+					if (isClothingAccessible.entry("a biyelgee costume") === true) {
 						wardrobeTastes.push({text: `and chooses an outfit that makes ${him} feel oddly nostalgic.`, clothes: "a biyelgee costume"});
 					}
 				}
diff --git a/src/facilities/nursery/nurseryDatatypeCleanup.js b/src/facilities/nursery/nurseryDatatypeCleanup.js
index ece181ed0016d9cea67e1bf657642be4ca86a2fc..8ee275de29dae105a706e42987bac75f87beefae 100644
--- a/src/facilities/nursery/nurseryDatatypeCleanup.js
+++ b/src/facilities/nursery/nurseryDatatypeCleanup.js
@@ -205,10 +205,18 @@ App.Facilities.Nursery.ChildDatatypeCleanup = function(child) {
 		child.lipsImplant = Math.clamp(+child.lipsImplant, 0, 100) || 0;
 		child.voiceImplant = Math.clamp(+child.voiceImplant, -1, 1) || 0;
 		child.boobsImplant = Math.max(+child.boobsImplant, 0) || 0;
-		child.boobsImplantType = Math.clamp(+child.boobsImplantType, 0, 1) || 0;
+		if (child.boobsImplant === 0) {
+			child.boobsImplantType = "none";
+		} else if (child.boobsImplantType === "none") {
+			child.boobsImplantType = "normal";
+		}
 		child.breastMesh = Math.clamp(+child.breastMesh, 0, 1) || 0;
 		child.buttImplant = Math.clamp(+child.buttImplant, 0, 3) || 0;
-		child.buttImplantType = Math.clamp(+child.buttImplantType, 0, 1) || 0;
+		if (child.buttImplant === 0) {
+			child.buttImplantType = "none";
+		} else if (child.buttImplantType === "none") {
+			child.buttImplantType = "normal";
+		}
 		child.earImplant = Math.clamp(+child.earImplant, 0, 1) || 0;
 	}
 
diff --git a/src/facilities/nursery/nurseryWidgets.js b/src/facilities/nursery/nurseryWidgets.js
index 99a09008e9fc819d9acccdba2885a432540ff4d4..19aa9e0b94a7c045ee5a5e2a375e19dfb8f64f1a 100644
--- a/src/facilities/nursery/nurseryWidgets.js
+++ b/src/facilities/nursery/nurseryWidgets.js
@@ -7463,13 +7463,13 @@ App.Facilities.Nursery.LongChildDescription = function(child) {
 			} else if (child.buttImplant === 2) {
 				r += `${His} big butt implants make ${his} ass jut out curvaceously whatever pose ${he}'s in. `;
 			} else if (child.buttImplant > 17) {
-				r += `${He} has oversized ${child.buttImplantType === 1 ? `engorged string` : `fillable butt`} implants, and it is completely obvious. Whatever ${his} position, ${his} immense ass dominates ${his} surroundings with its unyielding mass. `;
+				r += `${He} has oversized ${child.buttImplantType === "string" ? `engorged string` : `fillable butt`} implants, and it is completely obvious. Whatever ${his} position, ${his} immense ass dominates ${his} surroundings with its unyielding mass. `;
 			} else if (child.buttImplant > 12) {
-				r += `${He} has oversized ${child.buttImplantType === 1 ? `engorged string` : `fillable butt`} implants, and it is completely obvious. Whatever ${his} position, ${his} ass looks like someone shoved a pair of ready to burst weather balloons in ${his} buttcheeks. `;
+				r += `${He} has oversized ${child.buttImplantType === "string" ? `engorged string` : `fillable butt`} implants, and it is completely obvious. Whatever ${his} position, ${his} ass looks like someone shoved a pair of ready to burst weather balloons in ${his} buttcheeks. `;
 			} else if (child.buttImplant > 7) {
-				r += `${He} has oversized ${child.buttImplantType === 1 ? `engorged string` : `fillable butt`} implants, and it is completely obvious. Whatever ${his} position, ${his} ass looks like someone shoved a pair of overinflated beachballs in ${his} buttcheeks. `;
+				r += `${He} has oversized ${child.buttImplantType === "string" ? `engorged string` : `fillable butt`} implants, and it is completely obvious. Whatever ${his} position, ${his} ass looks like someone shoved a pair of overinflated beachballs in ${his} buttcheeks. `;
 			} else if (child.buttImplant > 2) {
-				r += `${He} has ${child.buttImplantType === 1 ? `engorged string` : `fillable butt`} implants, and it shows. Whatever ${his} position, ${his} ass looks just as artificially enticing. `;
+				r += `${He} has ${child.buttImplantType === "string" ? `engorged string` : `fillable butt`} implants, and it shows. Whatever ${his} position, ${his} ass looks just as artificially enticing. `;
 			}
 		}
 
@@ -15477,14 +15477,14 @@ App.Facilities.Nursery.infantToChild = function infantToChild(child) {
 	child.boobShape = "normal",
 	child.boobs = jsRandom(200, 500),
 	child.boobsImplant = 0,
-	child.boobsImplantType = 0,
+	child.boobsImplantType = "none",
 	child.boobsTat = 0,
 	child.brand = {},
 	child.breastMesh = 0,
 	child.breedingMark = 0,
 	child.butt = jsRandom(0, 3),
 	child.buttImplant = 0,
-	child.buttImplantType = 0,
+	child.buttImplantType = "none",
 	child.buttTat = 0,
 	child.buttplug = "none",
 	child.buttplugAttachment = "none",
@@ -16970,8 +16970,16 @@ App.Facilities.Nursery.ChildState = class ChildState {
 		* * 600+: boobsImplant size fillable implants
 		*/
 		this.boobsImplant = 0;
-		/** Implants type. 0: normal/none; 1: string */
-		this.boobsImplantType = 0;
+		/**
+		 * Implant type
+		 * * "none"
+		 * * "normal"
+		 * * "string"
+		 * * "fillable"
+		 * * "advanced fillable"
+		 * * "hyper fillable"
+		 */
+		this.boobsImplantType = "none";
 		/**
 		* breast shape
 		* * "normal"
@@ -17086,10 +17094,16 @@ App.Facilities.Nursery.ChildState = class ChildState {
 		* * 9+: hyper fillable implants
 		*/
 		this.buttImplant = 0;
-		/** Butt implant type
-		*
-		* 0: normal/none; 1: string */
-		this.buttImplantType = 0;
+		/**
+		 * Implant type
+		 * * "none"
+		 * * "normal"
+		 * * "string"
+		 * * "fillable"
+		 * * "advanced fillable"
+		 * * "hyper fillable"
+		 */
+		this.buttImplantType = "none";
 		/**
 		* butt tattoo
 		*
diff --git a/src/gui/Encyclopedia/encyclopedia.tw b/src/gui/Encyclopedia/encyclopedia.tw
index 3b696a5e9b640f992ffc8aa0084bd3df31e69284..bd00ec9721f7374c62d00fd98eb1c16bb6bd7ebf 100644
--- a/src/gui/Encyclopedia/encyclopedia.tw
+++ b/src/gui/Encyclopedia/encyclopedia.tw
@@ -2628,7 +2628,7 @@ LORE: INTERVIEWS
 	<br>''hexall90'' for height growth drugs, incubator organ farm support and detailing, the dispensary cleanup, the joint Eugenics bad end rework with ''SFanon (blank)'', the Hippolyta Academy, and the Security Expansion Mod.
 	<br>''sensei'' for coding in support for commas and an excellent family tree rework.
 	<br>''laziestman'' for sexy spats.
-	<br>''SFanon (blank)'' for SF related work, passive player skill gain, fulfillment order, player into summary and options rewriting, general fixes, storyCaption overhauling, updating and re-organizing the in-game wiki in addition to the joint Eugenics bad end rework with ''hexall90''. Cleaned up the sidebar, now maintaining and expanding secEx.
+	<br>''SFanon (blank)'' for SF related work, passive player skill gain, fulfillment order, player into summary and options rewriting, general fixes, storyCaption overhauling, updating and re-organizing the in-game wiki in addition to the joint Eugenics bad end rework with ''hexall90''. Cleaned up the sidebar, now maintaining and expanding secEx. Added reminder system and warfare/engineering personal attention targets.
 	<br>''anon'' for extending FCGudder's economy reports to the other facilities.
 	<br>''MilkAnon'' for his contributions to FCTV and the FC world in general.
 	<br>''valen102938'' for dealing with vector art, both creating new art and utilizing unused art.
@@ -2655,9 +2655,9 @@ LORE: INTERVIEWS
 	<br>''ezsh'' for bugfixing and creating a tool to build twineJS and twineCSS for me. Set up a revised SC update process as well. Has contributed massive revisions to the game's structure. Keeps the RA in line.
 	<br>''Sonofrevvan'' for making slaves beg and dance.
 	<br>''skriv'' for fixes and endless code cleaning.
-	<br>''Arkerthan'' for various additions including merging cybermod and vanilla prosthetics. Java sanity check. Limbs and reworked amputation. Eye rework.
+	<br>''Arkerthan'' for various additions including merging cybermod and vanilla prosthetics. Java sanity check. Limbs and reworked amputation. Eye rework. Has begun overhauling various systems including surgery and the building layout.
 	<br>''MouseOfLight'' for overhauling the corporation. V proxy, nuff said. Added better safeguards to the RA.
-	<br>''svornost'': A great asset. Various fixes and tools, including FCHost. Gave players the ability to find that one slave they are looking for. The 'Scope' macro. Optimized porn so beautifully I can't even think.
+	<br>''svornost'': A great asset. Various fixes and tools, including FCHost. Gave players the ability to find that one slave they are looking for. The 'Scope' macro. Optimized porn so beautifully I can't even think. Has continued his reign of optimization.
 	<br>''Trashman1138'' for various tweaks and fixes.
 	<br>''maxd569'' for adding .mp4 and .webm support to custom images.
 	<br>''Anu'' for various fixes.
@@ -2685,7 +2685,7 @@ LORE: INTERVIEWS
 	<br>''DrNoOne'' wrote the bulk slave purchase and persistent summary code.
 	<br>''Mauve'' provided vector art for chastity belts and limp dicks.
 	<br>''Klorpa'' for dozens of new nationalities and boundless new names and nicknames. Also monokinis, middle eastern clothing, overalls and aprons. Also the hearing, taste, and smell overhauls. Added basic support for waterpsorts. Has declared war on bad spelling, grammar and formatting. Added eyebrows too. Dug up ancient abandoned vanilla vignettes and implemented them. Toiled in the depths to extend limb support.
-	<br>''lowercasedonkey'' for various additions, not limited to the budget overhauls. Set up all the tabs too. Gave events dynamic vector art. Hammered the scarring and branding systems into place. Been a real boon writing events and other things as well. Used ezsh's facility framework to enhance slave summaries. Set up a system to recall where slaves were serving.
+	<br>''lowercasedonkey'' for various additions, not limited to the budget overhauls. Set up all the tabs too. Gave events dynamic vector art. Hammered the scarring and branding systems into place. Been a real boon writing events and other things as well. Used ezsh's facility framework to enhance slave summaries. Set up a system to recall where slaves were serving. Striving to master DOM with great gains.
 	<br>''amomynous0'' for bug reports and testing in addition to SFmod unit descriptions.
 	<br>''wepsrd'' for QOL (hormonal balance cheat and lactation adaptation to new menu) fixes.
 
diff --git a/src/init/storyInit.tw b/src/init/storyInit.tw
index 91dbffff3400f099fc3b8c426f90a2ec48bd0387..6cdb9ae6ad1b3f670f1dc6ff103fa30121f7516c 100644
--- a/src/init/storyInit.tw
+++ b/src/init/storyInit.tw
@@ -1287,6 +1287,12 @@ You should have received a copy of the GNU General Public License along with thi
 
 <<set $cheatMode = 0>>
 <<set $cheatModeM = 1>>
+<<set $experimental = {
+	nursery: 0,
+	food: 0,
+	animalOvaries: 0,
+	dinnerParty: 0
+}>>
 <<set $NaNArray = []>>
 
 <<set $fcnn = []>>
diff --git a/src/js/DefaultRules.js b/src/js/DefaultRules.js
index 1f1636d69e297e3badf34a6b4238ad1694a8269f..bd0a2bed181a70e3615958ba6347d681ebf3d89a 100644
--- a/src/js/DefaultRules.js
+++ b/src/js/DefaultRules.js
@@ -1023,90 +1023,94 @@ window.DefaultRules = (function() {
 	 * @param {App.RA.RuleSetters} rule
 	 */
 	function ProcessAbortions(slave, rule) {
-		if ((rule.abortion !== undefined) && (rule.abortion !== null)) {
-			if (rule.abortion === "all") {
-				if (slave.preg < 4 || (slave.fetish === "mindbroken" || slave.fuckdoll !== 0)) {
-					r += `<br>${slave.slaveName}'s pregnancy has been terminated.`;
-				} else {
-					r += `<br>${slave.slaveName}'s pregnancy has been terminated; `;
-					if (slave.sexualFlaw === "breeder") {
-						r += `it broke ${his} mind.`;
-						slave.fetish = "mindbroken";
-						slave.behavioralQuirk = "none";
-						slave.behavioralFlaw = "none";
-						slave.sexualQuirk = "none";
-						slave.sexualFlaw = "none";
-						slave.devotion = 0;
-						slave.trust = 0;
-					} else if (slave.devotion < -50) {
-						r += `${he} did not handle it well.`;
-						slave.trust -= 10;
-						slave.devotion -= 25;
-					} else if (slave.devotion < -20) {
-						r += `${he} did not handle it well.`;
-						slave.trust -= 10;
-						slave.devotion -= 10;
-					} else if (slave.fetish === "pregnancy") {
-						r += `${he} did not handle it well.`;
-						let fetishModifier = slave.fetishStrength / 2;
-						slave.devotion -= fetishModifier;
-						slave.trust -= fetishModifier;
-					} else if (slave.devotion <= 20) {
-						r += `${he} did not handle it well.`;
-						slave.trust -= 10;
-						slave.devotion -= 5;
-					} else if (slave.devotion <= 50) {
-						r += `${he} did not handle it well.`;
-						slave.trust -= 10;
-					} else {
-						r += "it had little mental effect.";
+		function conditionalTermination(slave, predicate) {
+			let res = false;
+			if (slave.preg < 4) {
+				let WL = slave.womb.length;
+				for (let index = 0; index < WL; index++) {
+					if (predicate(slave.womb[index])) {
+						WombRemoveFetus(slave, index);
+						index--;
+						WL--;
+						res = true;
 					}
 				}
-
-				if (lastPregRule(slave, V.defaultRules)) {
-					slave.preg = -1;
-				} else {
-					slave.preg = 0;
-				}
-				if (slave.abortionTat > -1) {
-					slave.abortionTat++;
-					cashX(forceNeg(V.modCost), "slaveMod", slave);
+				if (WL === 0) {
+					TerminatePregnancy(slave);
 				}
-				V.reservedChildren = FetusGlobalReserveCount("incubator");
-				V.reservedChildrenNursery = FetusGlobalReserveCount("nursery");
-				TerminatePregnancy(slave);
-			} else if (rule.abortion === "male") {
-				if (slave.preg < 4) {
-					let WL = slave.womb.length;
-					for (let index = 0; index < WL; index++) {
-						if (slave.womb[index].genetics.gender === "XY") {
-							WombRemoveFetus(slave, index);
-							index--;
-							WL--;
+			}
+			return res;
+		}
+
+		if ((rule.abortion !== undefined) && (rule.abortion !== null)) {
+			for (const ar of rule.abortion) {
+				if (ar === "all") {
+					if (slave.preg < 4 || (slave.fetish === "mindbroken" || slave.fuckdoll !== 0)) {
+						r += `<br>${slave.slaveName}'s pregnancy has been terminated.`;
+					} else {
+						r += `<br>${slave.slaveName}'s pregnancy has been terminated; `;
+						if (slave.sexualFlaw === "breeder") {
+							r += `it broke ${his} mind.`;
+							slave.fetish = "mindbroken";
+							slave.behavioralQuirk = "none";
+							slave.behavioralFlaw = "none";
+							slave.sexualQuirk = "none";
+							slave.sexualFlaw = "none";
+							slave.devotion = 0;
+							slave.trust = 0;
+						} else if (slave.devotion < -50) {
+							r += `${he} did not handle it well.`;
+							slave.trust -= 10;
+							slave.devotion -= 25;
+						} else if (slave.devotion < -20) {
+							r += `${he} did not handle it well.`;
+							slave.trust -= 10;
+							slave.devotion -= 10;
+						} else if (slave.fetish === "pregnancy") {
+							r += `${he} did not handle it well.`;
+							let fetishModifier = slave.fetishStrength / 2;
+							slave.devotion -= fetishModifier;
+							slave.trust -= fetishModifier;
+						} else if (slave.devotion <= 20) {
+							r += `${he} did not handle it well.`;
+							slave.trust -= 10;
+							slave.devotion -= 5;
+						} else if (slave.devotion <= 50) {
+							r += `${he} did not handle it well.`;
+							slave.trust -= 10;
+						} else {
+							r += "it had little mental effect.";
 						}
 					}
-					if (WL === 0) {
-						TerminatePregnancy(slave);
+
+					if (lastPregRule(slave, V.defaultRules)) {
+						slave.preg = -1;
+					} else {
+						slave.preg = 0;
 					}
-					r += `<br>${slave.slaveName}'s male fetuses have been terminated.`;
-				}
-			} else if (rule.abortion === "female") {
-				if (slave.preg < 4) {
-					let WL = slave.womb.length;
-					for (let index = 0; index < WL; index++) {
-						if (slave.womb[index].genetics.gender === "XX") {
-							WombRemoveFetus(slave, index);
-							index--;
-							WL--;
-						}
+					if (slave.abortionTat > -1) {
+						slave.abortionTat++;
+						cashX(forceNeg(V.modCost), "slaveMod", slave);
+					}
+					V.reservedChildren = FetusGlobalReserveCount("incubator");
+					V.reservedChildrenNursery = FetusGlobalReserveCount("nursery");
+					TerminatePregnancy(slave);
+				} else if (ar === "male") {
+					if (conditionalTermination(slave, fetus => fetus.genetics.gender === "XY")) {
+						r += `<br>${slave.slaveName}'s male fetuses have been terminated.`;
 					}
-					if (WL === 0) {
-						TerminatePregnancy(slave);
+				} else if (ar === "female") {
+					if (conditionalTermination(slave, fetus => fetus.genetics.gender === "XX")) {
+						r += `<br>${slave.slaveName}'s female fetuses have been terminated.`;
+					}
+				} else if (ar.startsWith("race:")){ // ar is the race name in the notation "race:<lowercase_race_name>"
+					const race = ar.substr("race:".length);
+					if (conditionalTermination(slave, fetus => fetus.genetics.race === race)) {
+						r += `<br>${slave.slaveName}'s ${race} fetuses have been terminated.`;
 					}
-					r += `<br>${slave.slaveName}'s female fetuses have been terminated.`;
 				}
+				SetBellySize(slave);
 			}
-			SetBellySize(slave);
 		}
 	}
 
diff --git a/src/js/SlaveState.js b/src/js/SlaveState.js
index 156751c2bd96283114a28d0d3b6f61a7ced34658..ca28c7c518f6b38af75054bf48c65dc332570fcf 100644
--- a/src/js/SlaveState.js
+++ b/src/js/SlaveState.js
@@ -881,8 +881,16 @@ App.Entity.SlaveState = class SlaveState {
 		 * * 600+: boobsImplant size fillable implants
 		 */
 		this.boobsImplant = 0;
-		/** Implants type. 0: normal/none; 1: string */
-		this.boobsImplantType = 0;
+		/**
+		 * Implant type
+		 * * "none"
+		 * * "normal"
+		 * * "string"
+		 * * "fillable"
+		 * * "advanced fillable"
+		 * * "hyper fillable"
+		 */
+		this.boobsImplantType = "none";
 		/**
 		 * breast shape
 		 * * "normal"
@@ -997,10 +1005,16 @@ App.Entity.SlaveState = class SlaveState {
 		 * * 9+: hyper fillable implants
 		 */
 		this.buttImplant = 0;
-		/** butt implant type
-		 *
-		 * 0: normal/none; 1: string */
-		this.buttImplantType = 0;
+		/**
+		 * Implant type
+		 * * "none"
+		 * * "normal"
+		 * * "string"
+		 * * "fillable"
+		 * * "advanced fillable"
+		 * * "hyper fillable"
+		 */
+		this.buttImplantType = "none";
 		/**
 		 * butt tattoo
 		 *
diff --git a/src/js/datatypeCleanupJS.js b/src/js/datatypeCleanupJS.js
index 0e7768d253f8b21ae0e73bd18a7d16adf0c55349..a6c5a77347071fb9ff4a0a6b890087a4e3e1c975 100644
--- a/src/js/datatypeCleanupJS.js
+++ b/src/js/datatypeCleanupJS.js
@@ -740,14 +740,23 @@ window.SlaveDatatypeCleanup = (function SlaveDatatypeCleanup() {
 		slave.lipsImplant = Math.clamp(+slave.lipsImplant, 0, 100) || 0;
 		slave.voiceImplant = Math.clamp(+slave.voiceImplant, -1, 1) || 0;
 		slave.boobsImplant = Math.max(+slave.boobsImplant, 0) || 0;
-		slave.boobsImplantType = Math.clamp(+slave.boobsImplantType, 0, 1) || 0;
+		if (slave.boobsImplant === 0) {
+			slave.boobsImplantType = "none";
+		} else if (slave.boobsImplantType === "none") {
+			slave.boobsImplantType = "normal";
+		}
 		slave.breastMesh = Math.clamp(+slave.breastMesh, 0, 1) || 0;
 		slave.buttImplant = Math.clamp(+slave.buttImplant, 0, 3) || 0;
-		slave.buttImplantType = Math.clamp(+slave.buttImplantType, 0, 1) || 0;
+		if (slave.buttImplant === 0) {
+			slave.buttImplantType = "none";
+		} else if (slave.buttImplantType === "none") {
+			slave.buttImplantType = "normal";
+		}
 		slave.heightImplant = Math.clamp(+slave.heightImplant, -1, 1) || 0;
 		slave.earImplant = Math.clamp(+slave.earImplant, 0, 1) || 0;
 		slave.shouldersImplant = Math.clamp(+slave.shouldersImplant, -1, 1) || 0;
 		slave.hipsImplant = Math.clamp(+slave.hipsImplant, -1, 1) || 0;
+
 	}
 
 	/**
@@ -1313,10 +1322,18 @@ window.childImplantsDatatypeCleanup = function childImplantsDatatypeCleanup(chil
 	child.lipsImplant = Math.clamp(+child.lipsImplant, 0, 100) || 0;
 	child.voiceImplant = Math.clamp(+child.voiceImplant, -1, 1) || 0;
 	child.boobsImplant = Math.max(+child.boobsImplant, 0) || 0;
-	child.boobsImplantType = Math.clamp(+child.boobsImplantType, 0, 1) || 0;
+	if (child.boobsImplant === 0) {
+		child.boobsImplantType = "none";
+	} else if (child.boobsImplantType === "none") {
+		child.boobsImplantType = "normal";
+	}
 	child.breastMesh = Math.clamp(+child.breastMesh, 0, 1) || 0;
 	child.buttImplant = Math.clamp(+child.buttImplant, 0, 3) || 0;
-	child.buttImplantType = Math.clamp(+child.buttImplantType, 0, 1) || 0;
+	if (child.buttImplant === 0) {
+		child.buttImplantType = "none";
+	} else if (child.buttImplantType === "none") {
+		child.buttImplantType = "normal";
+	}
 	child.earImplant = Math.clamp(+child.earImplant, 0, 1) || 0;
 };
 
@@ -1726,6 +1743,16 @@ window.PCDatatypeCleanup = function PCDatatypeCleanup() {
 	if (PC.indentureRestrictions !== undefined) {
 		delete PC.indentureRestrictions;
 	}
+	if (PC.boobsImplant > 0) {
+		PC.boobsImplantType = "normal";
+	} else {
+		PC.boobsImplantType = "none";
+	}
+	if (PC.buttImplant > 0) {
+		PC.buttImplantType = "normal";
+	} else {
+		PC.buttImplantType = "none";
+	}
 
 	/* None of these are in use */
 	PC.bellyPreg = PC.belly;
@@ -2494,6 +2521,9 @@ App.Entity.Utils.RARuleDatatypeCleanup = function() {
 		if (set.removeLabel === "") {
 			set.removeLabel = null;
 		}
+		if (typeof (set.abortion) === "string") {
+			set.abortion = [set.abortion];
+		}
 	}
 }();
 
diff --git a/src/js/economyJS.js b/src/js/economyJS.js
index a989a807b5160389accaf5d9988b1a84c8c82f43..4306cca7dd4278d045e5d19b054b3fb5ce0914a3 100644
--- a/src/js/economyJS.js
+++ b/src/js/economyJS.js
@@ -871,10 +871,10 @@ window.getSlaveCostArray = function(s) {
 	}
 
 	// Maintenance
-	if (s.boobs > 10000 && s.boobsImplantType === 1) {
+	if (s.boobsImplant > 10000 && s.boobsImplantType === "string") {
 		retval.push({text: "Maintenance cost for oversized string implants", value: 50});
 	}
-	if (s.butt > 10 && s.buttImplantType === 1) {
+	if (s.buttImplant > 5 && s.buttImplantType === "string") {
 		retval.push({text: "Maintenance cost for oversized string implants", value: 50});
 	}
 	if ((s.assignment !== Job.DAIRY || State.variables.dairyRestraintsSetting < 2) && (s.assignment !== Job.ARCADE)) {
diff --git a/src/js/futureSocietyJS.js b/src/js/futureSocietyJS.js
index 77722c33852f3b8804256722d0c02c28ccfba4d2..c4d7e32c52309ea33f52e8f22d8acc637481e339 100644
--- a/src/js/futureSocietyJS.js
+++ b/src/js/futureSocietyJS.js
@@ -33,8 +33,12 @@ window.FutureSocieties = (function() {
 		StatuesqueGlorification: "FSStatuesqueGlorification"
 	};
 	const SocietyList = [...new Set(Object.keys(FSString2Property).map(key => FSString2Property[key]))]; // This returns an array containing the unique values of FSString2Property. E.g. "FSSupremacist" and "FSSubjugationist"
+	const NPCSocietyList = [ "FSCummunism", "FSIncestFetishist" ]; // NPC arcologies may use these FSes, but the PC can't
 
 	return {
+		activeCount: activeCount,
+		applyBroadProgress: applyBroadProgress,
+		overflowToInfluence: overflowToInfluence,
 		remove: removeFS,
 		DecorationCleanup: DecorationCleanup,
 		Change: FSChange,
@@ -42,6 +46,37 @@ window.FutureSocieties = (function() {
 		HighestDecoration: FSHighestDecoration
 	};
 
+	// helper function, not callable externally
+	function activeFSes(arcologyID) {
+		let isSet = (fs) => V.arcologies[arcologyID][fs] !== "unset";
+		const npcFSes = arcologyID !== 0 ? NPCSocietyList.filter(isSet) : [];
+		return SocietyList.filter(isSet).concat(npcFSes);
+	}
+
+	// call as FutureSocieties.activeCount(arcologyID)
+	function activeCount(arcologyID) {
+		return activeFSes(arcologyID).length;
+	}
+
+	// call as FutureSocieties.applyBroadProgress(arcologyID, progress)
+	function applyBroadProgress(arcologyID, progress) {
+		for (const fs of activeFSes(arcologyID)) {
+			V.arcologies[arcologyID][fs] += progress;
+		}
+	}
+
+	// call as FutureSocieties.overflowToInfluence(arcologyID)
+	// converts excess progress into influence bonus
+	function overflowToInfluence(arcologyID) {
+		const arcology = V.arcologies[arcologyID];
+		for (const fs of activeFSes(arcologyID)) {
+			if (arcology[fs] > V.FSLockinLevel) {
+				arcology.influenceBonus += arcology[fs] - V.FSLockinLevel;
+				arcology[fs] = V.FSLockinLevel;
+			}
+		}
+	}
+
 	// call as FutureSocieties.remove(FS)
 	// FS must be a string (e.g. "FSPaternalist" or "FSDegradationist").
 	function removeFS(FS) {
@@ -78,6 +113,11 @@ window.FutureSocieties = (function() {
 				arcology.FSGenderFundamentalistLawBimbo = 0;
 				arcology.FSGenderFundamentalistSMR = 0;
 				break;
+			case "FSSupremacist":
+				arcology[FSLaw] = 0;
+				arcology[FSSMR] = 0;
+				V.noSubhumansInArmy = 0;
+				break;
 			case "FSTransformationFetishist":
 			case "FSAssetExpansionist":
 				arcology[FSSMR] = 0;
@@ -104,6 +144,7 @@ window.FutureSocieties = (function() {
 				arcology[FSLaw] = 0;
 				arcology[FSSMR] = 0;
 				V.universalRulesChildrenBecomeBreeders = 0;
+				V.pregExemption = 0;
 				break;
 			case "FSRestart":
 				arcology[FSLaw] = 0;
diff --git a/src/js/generateGenetics.js b/src/js/generateGenetics.js
index 548d119fb77dd6a6e779fdefc0974dda29ee7e32..07ed18740f38850d2b6789fe376eaeed27089e5b 100644
--- a/src/js/generateGenetics.js
+++ b/src/js/generateGenetics.js
@@ -1759,13 +1759,13 @@ window.generateChild = function(mother, ova, destination) {
 		child.areolaePiercing = 0;
 		child.corsetPiercing = 0;
 		child.boobsImplant = 0;
-		child.boobsImplantType = 0;
+		child.boobsImplantType = "none";
 		child.nipplesPiercing = 0;
 		child.areolaePiercing = 0;
 		child.lactation = 0;
 		child.hipsImplant = 0;
 		child.buttImplant = 0;
-		child.buttImplantType = 0;
+		child.buttImplantType = "none";
 		child.lipsImplant = 0;
 		child.lipsPiercing = 0;
 		child.tonguePiercing = 0;
diff --git a/src/js/generateMarketSlave.js b/src/js/generateMarketSlave.js
index c7d852c1e832dc2c3e7a042b689d1a26661813e6..a12ffb24da8432455eb7bf9b3e1d68260e80bdcc 100644
--- a/src/js/generateMarketSlave.js
+++ b/src/js/generateMarketSlave.js
@@ -414,15 +414,19 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 				r += `Slaves are given tasteful breast, butt, and lip implants. `;
 				V.activeSlave.buttImplant = 1;
 				V.activeSlave.butt = Math.clamp(V.activeSlave.butt+V.activeSlave.buttImplant, 0, 10);
+				V.activeSlave.buttImplantType = "normal";
 				V.activeSlave.boobsImplant = 600;
 				V.activeSlave.boobs = Math.clamp(V.activeSlave.boobs+V.activeSlave.boobsImplant, 0, 10000);
+				V.activeSlave.boobsImplantType = "normal";
 				V.activeSlave.lipsImplant = 20;
 				V.activeSlave.lips = Math.clamp(V.activeSlave.lips+V.activeSlave.lipsImplant, 0, 55);
 			} else if (V.corpSpecImplants === 2) {
 				r += `Slaves are given absurd breast, butt, and lip implants. `;
 				V.activeSlave.buttImplant = 4;
+				V.activeSlave.buttImplantType = "fillable";
 				V.activeSlave.butt = Math.clamp(V.activeSlave.butt+V.activeSlave.buttImplant, 0, 10);
 				V.activeSlave.boobsImplant = 2400;
+				V.activeSlave.boobsImplantType = "advanced fillable";
 				V.activeSlave.boobs = Math.clamp(V.activeSlave.boobs+V.activeSlave.boobsImplant, 0, 10000);
 				V.activeSlave.lipsImplant = 60;
 				V.activeSlave.lips = Math.clamp(V.activeSlave.lipsImplant+V.activeSlave.buttImplant, 0, 100);
@@ -772,8 +776,22 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 				r += `They vary in terms of what size their implants are, not whether they have them. `;
 				V.activeSlave.chem += jsRandom(10, 100);
 				V.activeSlave.boobsImplant = 200*jsRandom(2, 20);
+				if (V.activeSlave.boobsImplant > 10000) {
+					V.activeSlave.boobsImplantType = "hyper fillable";
+				} else if (V.activeSlave.boobsImplant > 2200) {
+					V.activeSlave.boobsImplantType = jsEither(["advanced fillable", "advanced fillable", "advanced fillable", "string"]);
+				} else if (V.activeSlave.boobsImplant > 1000) {
+					V.activeSlave.boobsImplantType = jsEither(["fillable", "fillable", "normal", "string"]);
+				} else {
+					V.activeSlave.boobsImplantType = jsEither(["normal", "normal", "normal", "string"]);
+				}
 				V.activeSlave.boobs += V.activeSlave.boobsImplant;
 				V.activeSlave.buttImplant = jsRandom(2, 5);
+				if (V.activeSlave.buttImplant > 4) {
+					V.activeSlave.buttImplantType = jsEither(["fillable", "fillable", "normal", "string"]);
+				} else {
+					V.activeSlave.buttImplantType = jsEither(["normal", "normal", "normal", "string"]);
+				}
 				V.activeSlave.butt += V.activeSlave.buttImplant;
 				V.activeSlave.lipsImplant = jsEither([10, 20]);
 				V.activeSlave.lips += V.activeSlave.lipsImplant;
@@ -781,8 +799,10 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 					r += `This one's implants are unusually large; a showcase of what ${pronoun.possessive} home arcology is capable of. `;
 					V.activeSlave.boobsImplant += 200*jsRandom(100, 200);
 					V.activeSlave.boobs += V.activeSlave.boobsImplant;
+					V.activeSlave.boobsImplantType = "hyper fillable";
 					V.activeSlave.buttImplant += jsRandom(7, 12);
 					V.activeSlave.butt += V.activeSlave.buttImplant;
+					V.activeSlave.buttImplantType = "hyper fillable";
 				}
 			}
 			if (V.arcologies[market].FSYouthPreferentialist > 20) {
@@ -1296,9 +1316,15 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 				let slaveGen = jsRandom(2, 8)*200;
 				V.activeSlave.boobs += slaveGen;
 				V.activeSlave.boobsImplant += slaveGen;
+				if (V.activeSlave.boobsImplant > 1000) {
+					V.activeSlave.boobsImplantType = jsEither(["fillable", "fillable", "normal", "string"]);
+				} else {
+					V.activeSlave.boobsImplantType = jsEither(["normal", "normal", "normal", "string"]);
+				}
 				slaveGen = jsRandom(1, 3);
 				V.activeSlave.butt += slaveGen;
 				V.activeSlave.buttImplant += slaveGen;
+				V.activeSlave.buttImplantType = "normal";
 				slaveGen = jsEither([10, 20]);
 				V.activeSlave.lips += slaveGen;
 				V.activeSlave.lipsImplant += slaveGen;
@@ -1533,9 +1559,11 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 			V.activeSlave.heightImplant = 1;
 			V.activeSlave.height += 10;
 			V.activeSlave.buttImplant = (4-V.activeSlave.butt);
+			V.activeSlave.buttImplantType = "normal";
 			V.activeSlave.butt += V.activeSlave.buttImplant;
 			V.activeSlave.boobsImplant = (2000-V.activeSlave.boobs);
 			V.activeSlave.boobs += V.activeSlave.boobsImplant;
+			V.activeSlave.boobsImplantType = "fillable";
 			V.activeSlave.nipples = "tiny";
 			V.activeSlave.areolae = 0;
 			V.activeSlave.clit = 0;
diff --git a/src/js/itemAvailability.js b/src/js/itemAvailability.js
index c50d1231077fa042d8f1c5c102a5335a9fd08ad6..92a3f257d06871c9b04b22c603b74931c4efe0ef 100644
--- a/src/js/itemAvailability.js
+++ b/src/js/itemAvailability.js
@@ -162,7 +162,7 @@ window.isItemAccessible = function(string) {
 		case "cat tail":
 		case "fox tail":
 			return (V.toysBoughtButtPlugTails === 1);
-		// "Normal" things:
+			// "Normal" things:
 		case "an apron":
 		case "slutty jewelry":
 		case "clubslut netting":
@@ -209,25 +209,57 @@ window.isClothingAccessible = (function() {
 	/**
 	 * Checks whether clothing is accessible
 	 * @param {string} string Name of wearable item
-	 * @returns {boolean}
+	 * @param {string} category that item is in clothing, collar, etc
+	 * @param {App.Entity.SlaveState} slave
+	 * @returns {boolean|string} Returns true if item is accessible, and false if it is not.  If the slave param is set, it may sometimes return a string instead of false, explaining why the item can't be used with that slave.
 	 */
-	function entry(string, category="clothing") {
+	function entry(string, category = "clothing", slave) {
 		if (V.cheatMode === 1) {
 			return true;
 		}
-		let niceDB;
-		let harshDB;
-		if (["clothing", "clothes"].includes(category)) {
-			niceDB = App.Data.misc.niceClothes;
-			harshDB = App.Data.misc.harshClothes;
-		} else if (category === "collar") {
-			niceDB = App.Data.misc.niceCollars;
-			harshDB = App.Data.misc.harshCollars;
-		} else {
-			niceDB = App.Data.misc[category];
+		let niceDB = [];
+		let harshDB = [];
+		switch (category) {
+			case "clothing":
+			case "clothes":
+				niceDB = App.Data.misc.niceClothes;
+				harshDB = App.Data.misc.harshClothes;
+				break;
+			case "collar":
+				niceDB = App.Data.misc.niceCollars;
+				harshDB = App.Data.misc.harshCollars;
+				break;
+			case "bellyAccessory":
+				niceDB = App.Data.misc.bellyAccessories;
+				break;
+			case "buttplug":
+				niceDB = App.Data.misc.buttplugs;
+				break;
+			case "buttplugAttachment":
+				niceDB = App.Data.misc.buttplugAttachments;
+				break;
+			case "vaginalAccessory":
+				niceDB = App.Data.misc.vaginalAccessories;
+				break;
+			case "vaginalAttachment":
+				niceDB = App.Data.misc.vaginalAttachments;
+				break;
+			case "dickAccessory":
+				niceDB = App.Data.misc.vaginalAccessories;
+				break;
+			case "shoes":
+				niceDB = App.Data.misc.shoes;
+				break;
+			case "chastity":
+				niceDB = App.Data.misc.chastityDevices;
+				break;
+			default:
+				console.log(`made a category for ${category} automatically, may need to define this by hand`);
+				niceDB = App.Data.misc[category];
+				break;
 		}
 		let item = niceDB.find((i) => i.value === string);
-		if (!item && typeof harshDB !== undefined) {
+		if (!item && (typeof harshDB !== 'undefined')) {
 			item = harshDB.find((i) => i.value === string);
 		}
 		if (!item) {
@@ -235,7 +267,7 @@ window.isClothingAccessible = (function() {
 			console.log(string);
 			return false; /* couldn't be found */
 		}
-		return isAvailable(item);
+		return isAvailable(item, category, slave);
 	}
 	/**
 	 * Returns array of wearable clothing in format [name, value], basically player facing / game data.
@@ -254,38 +286,247 @@ window.isClothingAccessible = (function() {
 		});
 		return array;
 	}
-	function isAvailable(item) {
-		if (!(item.hasOwnProperty("unlock")) && !(item.hasOwnProperty("fs")) && !(item.hasOwnProperty("rs"))) {
+
+	function isAvailable(item, category, slave) {
+		if (slave) {
+			let slaveResults = isAvailableForSlave(item, category, slave);
+			if (slaveResults !== true) { // If they are true we pass this check but want to run the others.
+				return slaveResults;
+			}
+		}
+		if (!(item.hasOwnProperty("fs")) && !(item.hasOwnProperty("rs"))) {
 			// No restriction, this clothing item is available to everyone
 			return true;
 		}
 		if (item.hasOwnProperty("rs")) {
-			if (V.arcologies[0][item.rs] > 0) {
-				return true;
+			if (typeof item.rs === 'object' && item.rs !== null) {
+				let fail = false;
+				// Scan rs requirments one by one if they are an object
+				Object.keys(item.rs).forEach((requirement) => {
+					if (typeof item.rs[requirement] === 'object' && item.rs[requirement] !== null) {
+						let eitherCheck = 0;
+						if (requirement === "either") { // If we find the "either" nested object, we need to see if just one of the conditions in it are true.
+							Object.keys(item.rs.either).forEach((nestedRequirement) => {
+								if (typeof item.rs.either[nestedRequirement] === 'object' && item.rs.either[nestedRequirement] !== null) { // And yes sometimes even in either we have a nested object, to check V.PC mostly, so check for it.
+									let insideEitherCheck = 0;
+									Object.keys(item.rs.either[nestedRequirement]).forEach((insideNestedRequirement) => {
+										if (V[nestedRequirement][insideNestedRequirement] === item.rs.either[nestedRequirement][insideNestedRequirement]) {
+											insideEitherCheck++;
+										}
+									});
+									if (insideEitherCheck > 0) {
+										eitherCheck++;
+									}
+									if (V[nestedRequirement] === item.rs.either[nestedRequirement]) {
+										eitherCheck++;
+									}
+								}
+							});
+						} else {
+							Object.keys(item.rs.either).forEach((nestedRequirement) => { // Otherwise we are probably recording a nested V variable to be checked.
+								if (V[requirement][nestedRequirement] === item.rs[requirement][nestedRequirement]) {
+									eitherCheck++;
+								}
+							});
+						}
+						if (eitherCheck === 0) {
+							fail = true;
+						}
+					} else {
+						if (V[requirement] !== item.rs[requirement]) {
+							fail = true;
+						}
+					}
+				});
+				if (fail) {
+					return false;
+				}
+			} else { // string
+				if (V[item.rs] < 1) {
+					return false;
+				}
 			}
 		}
 		if (item.hasOwnProperty("fs")) {
-			if (V.arcologies[0][item.fs] > 0) {
-				return true;
+			if (!(V.arcologies[0][item.fs] > 0)) {
+				return false;
 			}
 		}
-		if (item.hasOwnProperty("unlock")) {
-			let keys = Object.keys(item.unlock);
-			for (let key in keys) {
-				if (keys[key] === "continent" && V.continent === item.unlock[keys[key]]) {
-					return true;
-				} else if (V[keys[key]] > 0 ) {
-					return true;
+		return true;
+	}
+
+	function isAvailableForSlave(item, category, slave) {
+		switch (category) {
+			case "clothing":
+			case "clothes":
+				break;
+			case "collar":
+				break;
+			case "bellyAccessory": {
+				switch (item.value) {
+					case "a support band": {
+						if (slave.belly > 10000) {
+							return true;
+						} else {
+							return `Slave belly too small for this`;
+						}
+					}
+					case "a small empathy belly":
+					case "a medium empathy belly":
+					case "a large empathy belly":
+					case "a huge empathy belly": {
+						if (slave.belly < 1500 && slave.weight < 130) {
+							return true;
+						} else {
+							return `Slave belly too big for this`;
+						}
+					}
+					default:
+						return true;
 				}
 			}
-			// special case where they must both be true
-			if (item.unlock.clothesBoughtSports && item.unlock.clothesBoughtCasual) {
-				if (V.clothesBoughtSports && V.clothesBoughtCasual) {
-					return true;
+			case "buttplug": {
+				switch (item.value) {
+					case "huge plug": {
+						if (slave.anus < 2) {
+							return `Slave's anus is too small for this right now`;
+						} else {
+							return true;
+						}
+					}
+					case "long plug":
+					case "long, large plug": {
+						if (!(slave.breedingMark !== 1 || V.propOutcome === 0 || V.eugenicsFullControl === 1 || V.arcologies[0].FSRestart === "unset")) {
+							return "Elites frown on this";
+						} else {
+							return true;
+						}
+					}
+					case "long, huge plug": {
+						if (slave.anus < 2) {
+							return `Slave's anus is too small for this right now`;
+						} else if (!(slave.breedingMark !== 1 || V.propOutcome === 0 || V.eugenicsFullControl === 1 || V.arcologies[0].FSRestart === "unset")) {
+							return "Elites frown on this";
+						} else {
+							return true;
+						}
+					}
+					default:
+						return true;
 				}
 			}
+			case "buttplugAttachment":
+				break;
+			case "vaginalAccessory": {
+				if (slave.vagina < 0) {
+					return false;
+				}
+				switch (item.value) {
+					case "huge dildo": {
+						if (slave.vagina < 2) {
+							return `Slave's vagina is too small for this right now`;
+						} else {
+							return true;
+						}
+					}
+					case "long dildo":
+					case "long, large dildo": {
+						if (!(slave.breedingMark !== 1 || V.propOutcome === 0 || V.eugenicsFullControl === 1 || V.arcologies[0].FSRestart === "unset")) {
+							return "Elites frown on this";
+						} else {
+							return true;
+						}
+					}
+					case "long, huge dildo": {
+						if (slave.vagina < 2) {
+							return `Slave's vagina is too small for this right now`;
+						} else if (!(slave.breedingMark !== 1 || V.propOutcome === 0 || V.eugenicsFullControl === 1 || V.arcologies[0].FSRestart === "unset")) {
+							return "Elites frown on this";
+						} else {
+							return true;
+						}
+					}
+					default:
+						return true;
+				}
+			}
+			case "vaginalAttachment": {
+				if (slave.vagina < 0) {
+					return false;
+				}
+				switch (item.value) {
+					case "vibrator":
+						if (slave.vaginalAccessory === "none") {
+							return "No vaginal accessory to attach it to";
+						} else if (slave.vaginalAccessory === "bullet vibrator" || slave.vaginalAccessory === "smart bullet vibrator") {
+							return "Vaginal accessory already vibrates";
+						} else {
+							return true;
+						}
+				}
+				break;
+			}
+			case "dickAccessory":
+				if (slave.dick < 1) {
+					return false;
+				}
+				return true;
+			case "shoes":
+				break;
+			case "chastity": {
+				switch (item.value) {
+					case "chastity belt":
+					case "combined chastity belt": {
+						if (slave.vagina > -1) {
+							return true;
+						} else {
+							return false;
+						}
+					}
+					case "chastity cage":
+					case "combined chastity cage": {
+						if (slave.dick > 0) {
+							return true;
+						} else {
+							return false;
+						}
+					}
+					case "genital chastity":
+					case "full chastity": {
+						if (slave.vagina > -1 && slave.dick > 0) {
+							return true;
+						} else {
+							return false;
+						}
+					}
+					case "choose own chastity": {
+						if (slave.choosesOwnChastity !== 1 && slave.devotion > 20 && slave.trust > 0) {
+							if (slave.choosesOwnClothes === 1) {
+								return "Slave is not choosing own clothing";
+							} else {
+								return true;
+							}
+						}
+						return false;
+					}
+					case "revoke choosing own chastity": {
+						if (slave.choosesOwnChastity > 0 && slave.devotion > 20 && slave.trust > 0) {
+							if (slave.choosesOwnClothes === 1) {
+								return "Slave is not choosing own clothing";
+							} else {
+								return true;
+							}
+						}
+						return false;
+					}
+					default:
+						return true;
+				}
+			}
+			default:
+				break;
 		}
-		return false;
+		return true;
 	}
 })();
 
@@ -308,8 +549,8 @@ window.addProsthetic = function(slave, prosthetic) {
 		if (limb > 0) {
 			let p = {
 				id: prosthetic,
-				arm: {left: new App.Entity.LimbState(), right: new App.Entity.LimbState()},
-				leg: {left: new App.Entity.LimbState(), right: new App.Entity.LimbState()}
+				arm: { left: new App.Entity.LimbState(), right: new App.Entity.LimbState() },
+				leg: { left: new App.Entity.LimbState(), right: new App.Entity.LimbState() }
 			};
 			p.arm.left.type = limb;
 			p.arm.right.type = limb;
@@ -317,7 +558,7 @@ window.addProsthetic = function(slave, prosthetic) {
 			p.leg.right.type = limb;
 			slave.readyProsthetics.push(p);
 		} else {
-			slave.readyProsthetics.push({id: prosthetic});
+			slave.readyProsthetics.push({ id: prosthetic });
 		}
 	}
 };
diff --git a/src/js/main.js b/src/js/main.js
index c817c75707eec6c8c924fff53825075fe130e436..99f8ed023c0953de566467663fdf8afc5419f950 100644
--- a/src/js/main.js
+++ b/src/js/main.js
@@ -25,7 +25,7 @@ App.MainView.useGuard = function() {
 		return outerDiv;
 	}
 
-	outerDiv.append(App.UI.DOM.makeSpan(App.Interact.guardPose(guard), "scene-intro"));
+	App.UI.DOM.appendNewElement("span", App.Interact.guardPose(guard), outerDiv, "scene-intro");
 
 	function setEnvironment() {
 		V.activeSlave = guard;
diff --git a/src/js/rulesAssistantOptions.js b/src/js/rulesAssistantOptions.js
index 9799022ae69c31845bcf36314ca3aa5bc62438c6..7fa48dc20ea9087f572c70380b6edc56998499ba 100644
--- a/src/js/rulesAssistantOptions.js
+++ b/src/js/rulesAssistantOptions.js
@@ -475,6 +475,40 @@ window.rulesAssistantOptions = (function() {
 		}
 	}
 
+	/**
+	 * Displays the <select> element with multiple choices
+	 */
+	class MultiListSelector extends ListSelector {
+		constructor(prefix, data = []) {
+			super(prefix, data, false);
+		}
+
+		render(data, allowNullValue) {
+			const res = super.render(data, allowNullValue);
+			this.value.multiple = true;
+			return res;
+		}
+
+		getData() {
+			const res = [];
+			for (const opt of this.value.selectedOptions) {
+				res.push(this.values_.get(opt.value));
+			}
+			return res;
+		}
+
+		setValue(what) {
+			what = what || [];
+			if (!Array.isArray(what)) {
+				what = [what];
+			}
+			const vs = new Set(what);
+			for (const opt of this.value.options) {
+				opt.selected = vs.has(this.values_.get(opt.value));
+			}
+		}
+	}
+
 	class RadioSelector extends ElementWithLabel {
 		/**
 		 *
@@ -1973,7 +2007,7 @@ window.rulesAssistantOptions = (function() {
 			setup.buttplugs.forEach(acc => {
 				if (acc.fs === undefined && acc.rs === undefined) {
 					accs.push([acc.name, acc.value]);
-				} else if (acc.rs === "buyBigPlugs" && V.toysBoughtButtPlugs === 1) {
+				} else if (acc.rs === "toysBoughtButtPlugs" && V.toysBoughtButtPlugs === 1) {
 					accs.push([`${acc.name} (Purchased)`, acc.value]);
 				}
 			});
@@ -1989,7 +2023,7 @@ window.rulesAssistantOptions = (function() {
 			setup.buttplugs.forEach(acc => {
 				if (acc.fs === undefined && acc.rs === undefined) {
 					accs.push([acc.name, acc.value]);
-				} else if (acc.rs === "buyBigPlugs" && V.toysBoughtButtPlugs === 1) {
+				} else if (acc.rs === "toysBoughtButtPlugs" && V.toysBoughtButtPlugs === 1) {
 					accs.push([`${acc.name} (Purchased)`, acc.value]);
 				}
 			});
@@ -2005,7 +2039,7 @@ window.rulesAssistantOptions = (function() {
 			setup.buttplugAttachments.forEach(acc => {
 				if (acc.fs === undefined && acc.rs === undefined) {
 					accs.push([acc.name, acc.value]);
-				} else if (acc.rs === "buyTails" && V.toysBoughtButtPlugTails === 1) {
+				} else if (acc.rs === "toysBoughtButtPlugTails" && V.toysBoughtButtPlugTails === 1) {
 					accs.push([`${acc.name} (Purchased)`, acc.value]);
 				}
 			});
@@ -2254,14 +2288,17 @@ window.rulesAssistantOptions = (function() {
 		}
 	}
 
-	class AbortionList extends ListSelector {
+	class AbortionList extends MultiListSelector {
 		constructor() {
 			const pairs = [
-				["abort all", "all"],
+				["all", "all"],
 			];
 			if (V.pregnancyMonitoringUpgrade === 1 && V.geneticMappingUpgrade >= 1) {
-				pairs.push(["abort boys", "male"]);
-				pairs.push(["abort girls", "female"]);
+				pairs.push(["boys", "male"]);
+				pairs.push(["girls", "female"]);
+				for (let i = 0; i < App.Data.misc.filterRaces.length; ++i) {
+					pairs.push([App.Data.misc.filterRaces[i], "race:" + App.Data.misc.filterRacesLowercase[i]]);
+				}
 			}
 			super("Pregnancy termination", pairs);
 			this.setValue(current_rule.set.abortion);
diff --git a/src/js/rulesAutosurgery.js b/src/js/rulesAutosurgery.js
index fb9d7170fe60285c4c1b66393fbc4610cd7ada2d..08b8f256dc03af8762c657fd27bcbe06ce83254c 100644
--- a/src/js/rulesAutosurgery.js
+++ b/src/js/rulesAutosurgery.js
@@ -170,7 +170,7 @@ window.rulesAutosurgery = (function() {
 					commitProcedure(`surgery to remove ${his} ${bodyPart} implants`, slave => {
 						slave[bodyPart] -= slave[`${bodyPart}Implant`];
 						slave[`${bodyPart}Implant`] = 0;
-						slave[`${bodyPart}ImplantType`] = 0;
+						slave[`${bodyPart}ImplantType`] = "none";
 					});
 					return;
 				}
diff --git a/src/js/slaveInteract.js b/src/js/slaveInteract.js
index 8989f10b62a3796263728b1fce3d5ff2433825f7..13d2d4399ed54fb0fc4cce297c4906e5d6f5a34d 100644
--- a/src/js/slaveInteract.js
+++ b/src/js/slaveInteract.js
@@ -92,14 +92,48 @@ App.UI.SlaveInteract.fucktoyPref = function(slave) {
 	return jQuery('#fucktoypref').empty().append(el);
 };
 
-App.UI.SlaveInteract.assignmentBlock = function(blockId) {
-	let res = App.UI.jobLinks.assignments(-1, undefined, () => {
-		return `<<replace "#assign">>$activeSlave.assignment<</replace>><<replace "#${blockId}">><<= App.UI.SlaveInteract.assignmentBlock("${blockId}")>><<= App.UI.SlaveInteract.fucktoyPref($activeSlave)>><</replace>>`;
-	});
-	if (State.variables.activeSlave.assignment !== "choose her own job") {
-		res += '&thinsp;|&thinsp; <<link "Stay on this assignment for another month">><<set $activeSlave.sentence += 4>><<replace "#assign">>$activeSlave.assignment($activeSlave.sentence weeks)<</replace>><</link>>';
+App.UI.SlaveInteract.assignmentBlock = function(blockId, slave) {
+	let el = document.createElement('div');
+	let title = document.createElement('div');
+	let separator = document.createTextNode(` | `);
+	title.append(`Assignment: `);
+
+	let assign = document.createElement('span');
+	assign.style.fontWeight = "bold";
+	if (slave.sentence) {
+		assign.textContent = `${slave.assignment} (${slave.sentence} weeks). `;
+	} else {
+		assign.textContent = `${slave.assignment}. `;
+	}
+	title.appendChild(assign);
+	if (V.assignmentRecords[slave.ID] && V.assignmentRecords[slave.ID] !== slave.assignment) {
+		title.append(`Previously: `);
+		assign = document.createElement('span');
+		assign.style.fontWeight = "bold";
+		assign.textContent = `${V.assignmentRecords[slave.ID]}`;
+		title.appendChild(assign);
+	}
+	el.appendChild(title);
+
+	let links = document.createElement('div');
+	links.className = "choices";
+	let res = App.UI.jobLinks.assignmentsFragment(V.slaveIndices[slave.ID], passage(), (slave, assignment) => { assignJob(slave, assignment); });
+	links.appendChild(res);
+
+	if (slave.assignment !== "choose her own job") {
+		links.append(separator);
+		links.appendChild(
+			App.UI.DOM.link(
+				`Stay on this assignment for another month`,
+				() => {
+					slave.sentence += 4,
+					App.UI.SlaveInteract.assignmentBlock(blockId, slave);
+				},
+			)
+		);
 	}
-	return res;
+	el.appendChild(links);
+	return jQuery(`#${blockId}`).empty().append(el);
 };
 
 App.UI.SlaveInteract.drugs = function(slave) {
diff --git a/src/js/slaveListing.js b/src/js/slaveListing.js
index 4c9bd8e53b6aac555648479cdb34302eb43534b3..9e67529d96a1e51ff738758598ec8010786ced52 100644
--- a/src/js/slaveListing.js
+++ b/src/js/slaveListing.js
@@ -462,16 +462,16 @@ App.UI.SlaveList.Decoration = {};
  */
 App.UI.SlaveList.Decoration.penthousePositions = (slave) => {
 	if (App.Data.Facilities.headGirlSuite.manager.assignment === slave.assignment) {
-		return App.UI.DOM.makeSpan('HG', ['lightcoral', 'strong']);
+		return App.UI.DOM.makeElement("span", 'HG', ['lightcoral', 'strong']);
 	}
 	if (App.Data.Facilities.penthouse.manager.assignment === slave.assignment) {
-		return App.UI.DOM.makeSpan('RC', ['lightcoral', 'strong']);
+		return App.UI.DOM.makeElement("span", 'RC', ['lightcoral', 'strong']);
 	}
 	if (App.Data.Facilities.armory.manager.assignment === slave.assignment) {
-		return App.UI.DOM.makeSpan('BG', ['lightcoral', 'strong']);
+		return App.UI.DOM.makeElement("span", 'BG', ['lightcoral', 'strong']);
 	}
 	if (Array.isArray(State.variables.personalAttention) && State.variables.personalAttention.findIndex(s => s.ID === slave.ID) !== -1) {
-		return App.UI.DOM.makeSpan('PA', ['lightcoral', 'strong']);
+		return App.UI.DOM.makeElement("span", 'PA', ['lightcoral', 'strong']);
 	}
 	return null;
 };
@@ -1187,11 +1187,11 @@ App.UI.SlaveList.slaveSelectionList = function() {
 		const listPostNote = options.expCheck ?
 			(options.postNote ?
 				(s, i) => options.expCheck(s) ? App.UI.DOM.combineNodes(
-					App.UI.DOM.makeSpan("Has applicable career experience.", "lime"),
+					App.UI.DOM.makeElement("span", "Has applicable career experience.", "lime"),
 					document.createElement("br"),
 					options.postNote(s, i)
 				) : options.postNote(s, i) :
-				(s) => options.expCheck(s) ? App.UI.DOM.makeSpan("Has applicable career experience.", "lime") : null) :
+				(s) => options.expCheck(s) ? App.UI.DOM.makeElement("span", "Has applicable career experience.", "lime") : null) :
 			options.postNote ?
 				(s, i) => options.postNote(s, i) :
 				() => null;
diff --git a/src/js/utilsDOM.js b/src/js/utilsDOM.js
index 9a1469dfc5bf94eda201d03c1bdd1219fef8cdd4..033c063ab4c407032a8bb7e8c1ba93222214c84f 100644
--- a/src/js/utilsDOM.js
+++ b/src/js/utilsDOM.js
@@ -123,30 +123,35 @@ App.UI.DOM.disabledLink = function(link, reasons) {
 };
 
 /**
- * @param {string} text
- * @param {string|string[]} [classNames]
+ * @param {string} tag - valid HTML tag
+ * @param {string|Node} content
+ * @param {string|Array<string>} [classNames]
+ * @returns {HTMLElement}
  */
-App.UI.DOM.makeSpan = function makeSpan(text, classNames) {
-	let r = document.createElement("span");
+App.UI.DOM.makeElement = function(tag, content, classNames) {
+	const element = document.createElement(tag);
 	if (classNames !== undefined) {
 		if (Array.isArray(classNames)) {
-			r.classList.add(...classNames);
+			element.classList.add(...classNames);
 		} else {
-			r.classList.add(classNames);
+			element.classList.add(classNames);
 		}
 	}
-	r.innerHTML = text;
-	return r;
+	element.append(content);
+	return element;
 };
 
 /**
- * @param {Node|string} content
- * @returns {HTMLDivElement}
+ * @param {string} tag - valid HTML tag
+ * @param {string|Node} content
+ * @param {ParentNode} parent
+ * @param {string|Array<string>} [classNames]
+ * @returns {HTMLElement}
  */
-App.UI.DOM.makeDiv = function(content) {
-	const div = document.createElement("div");
-	div.append(content);
-	return div;
+App.UI.DOM.appendNewElement = function(tag, content, parent, classNames) {
+	const element = App.UI.DOM.makeElement(tag, content, classNames);
+	parent.append(element);
+	return element;
 };
 
 /**
diff --git a/src/js/wardrobeUse.js b/src/js/wardrobeUse.js
index 8949cd73066bf876e048c9e6e9c3c35a0a8259ae..cfa2d979c032238933028b42ab4e6b66d14bb2cc 100644
--- a/src/js/wardrobeUse.js
+++ b/src/js/wardrobeUse.js
@@ -5,9 +5,8 @@ App.UI.Wardrobe.clothes = function(slave) {
 		return;
 	}
 
-	const
-		{
-			// eslint-disable-next-line no-unused-vars
+	const {
+		// eslint-disable-next-line no-unused-vars
 			he, him, his, hers, himself, boy, He, His
 		} = getPronouns(slave);
 
@@ -23,15 +22,15 @@ App.UI.Wardrobe.clothes = function(slave) {
 
 	// Choose her own
 	if (slave.clothes !== `choosing her own clothes`) {
-		let choiceOptionsArray= [];
+		let choiceOptionsArray = [];
 		choiceOptionsArray.push({text: `Let ${him} choose`, updateSlave: {clothes: `choosing her own clothes`}});
-		label.appendChild(App.UI.Wardrobe.generateRows(choiceOptionsArray, "clothes", slave, true));
+		label.appendChild(App.UI.Wardrobe.generateRows(choiceOptionsArray, "clothes", slave, false));
 	}
 	el.appendChild(label);
 
 
-	let niceOptionsArray= [];
-	let harshOptionsArray= [];
+	let niceOptionsArray = [];
+	let harshOptionsArray = [];
 
 	let clothingOption;
 	// Nice clothes
@@ -54,7 +53,9 @@ App.UI.Wardrobe.clothes = function(slave) {
 		if (item.fs) {
 			clothingOption.FS = item.fs;
 		}
-		harshOptionsArray.push(clothingOption);
+		if (item.value !== "choosing her own clothes") {
+			harshOptionsArray.push(clothingOption);
+		}
 	});
 
 	// Sort
@@ -65,14 +66,14 @@ App.UI.Wardrobe.clothes = function(slave) {
 	let links = document.createElement('div');
 	links.className = "choices";
 	links.append(`Nice: `);
-	links.appendChild(App.UI.Wardrobe.generateRows(niceOptionsArray, "clothes", slave, false));
+	links.appendChild(App.UI.Wardrobe.generateRows(niceOptionsArray, "clothes", slave, true));
 	el.appendChild(links);
 
 	// Harsh options
 	links = document.createElement('div');
 	links.className = "choices";
 	links.append(`Harsh: `);
-	links.appendChild(App.UI.Wardrobe.generateRows(harshOptionsArray, "clothes", slave, false));
+	links.appendChild(App.UI.Wardrobe.generateRows(harshOptionsArray, "clothes", slave, true));
 	el.appendChild(links);
 
 	return jQuery('#clothes').empty().append(el);
@@ -95,15 +96,15 @@ App.UI.Wardrobe.collar = function(slave) {
 
 	// Choose her own
 	if (slave.collar !== `none`) {
-		let choiceOptionsArray= [];
+		let choiceOptionsArray = [];
 		choiceOptionsArray.push({text: `None`, updateSlave: {collar: `none`}});
-		label.appendChild(App.UI.Wardrobe.generateRows(choiceOptionsArray, "collar", slave, true));
+		label.appendChild(App.UI.Wardrobe.generateRows(choiceOptionsArray, "collar", slave, false));
 	}
 
 	el.appendChild(label);
 
-	let niceOptionsArray= [];
-	let harshOptionsArray= [];
+	let niceOptionsArray = [];
+	let harshOptionsArray = [];
 
 	let clothingOption;
 	// Nice collar
@@ -137,14 +138,14 @@ App.UI.Wardrobe.collar = function(slave) {
 	let links = document.createElement('div');
 	links.className = "choices";
 	links.append(`Nice: `);
-	links.appendChild(App.UI.Wardrobe.generateRows(niceOptionsArray, "collar", slave, false));
+	links.appendChild(App.UI.Wardrobe.generateRows(niceOptionsArray, "collar", slave, true));
 	el.appendChild(links);
 
 	// Harsh options
 	links = document.createElement('div');
 	links.className = "choices";
 	links.append(`Harsh: `);
-	links.appendChild(App.UI.Wardrobe.generateRows(harshOptionsArray, "collar", slave, false));
+	links.appendChild(App.UI.Wardrobe.generateRows(harshOptionsArray, "collar", slave, true));
 	el.appendChild(links);
 
 	return jQuery('#collar').empty().append(el);
@@ -170,7 +171,7 @@ App.UI.Wardrobe.armAccessory = function(slave) {
 	// Choose her own
 	if (slave.armAccessory !== "none") {
 		array.push({text: `None`, updateSlave: {armAccessory: `none`}});
-		label.appendChild(App.UI.Wardrobe.generateRows(array, "armAccessory", slave, true));
+		label.appendChild(App.UI.Wardrobe.generateRows(array, "armAccessory", slave, false));
 	}
 
 	el.appendChild(label);
@@ -181,7 +182,7 @@ App.UI.Wardrobe.armAccessory = function(slave) {
 		{text: "Hand gloves", updateSlave: {armAccessory: "hand gloves"}},
 		{text: "Elbow gloves", updateSlave: {armAccessory: "elbow gloves"}}
 	];
-	links.appendChild(App.UI.Wardrobe.generateRows(array, "armAccessory", slave, true));
+	links.appendChild(App.UI.Wardrobe.generateRows(array, "armAccessory", slave, false));
 	el.appendChild(links);
 
 	return jQuery('#armAccessory').empty().append(el);
@@ -198,10 +199,27 @@ App.UI.Wardrobe.shoes = function(slave) {
 			he, him, his, hers, himself, boy, He, His
 		} = getPronouns(slave);
 
-	let choiceOptionsArray= [];
-	choiceOptionsArray.push({text: `None`, updateSlave: {shoes: `none`}});
+	let el = document.createElement('div');
+
+	let label = document.createElement('div');
+	label.append(`Shoes: `);
+
+	let choice = document.createElement('span');
+	choice.style.fontWeight = "bold";
+	choice.textContent = (`${slave.shoes} `);
+	label.appendChild(choice);
+
+	/* We have "barefoot" in App.Data.Misc to cover for this
+	// Choose her own
+	if (slave.shoes !== `none`) {
+		let choiceOptionsArray = [];
+		choiceOptionsArray.push({text: `None`, updateSlave: {shoes: `none`}});
+		label.appendChild(App.UI.Wardrobe.generateRows(choiceOptionsArray, "shoes", slave, false));
+	}
+	*/
+	el.appendChild(label);
 
-	let optionsArray= [];
+	let optionsArray = [];
 
 	let clothingOption;
 	App.Data.misc.shoes.forEach(item => {
@@ -216,28 +234,12 @@ App.UI.Wardrobe.shoes = function(slave) {
 	});
 
 	// Sort
-	optionsArray = optionsArray.sort((a, b) => (a.text > b.text) ? 1 : -1);
-
-	let el = document.createElement('div');
-
-	let label = document.createElement('div');
-	label.append(`Shoes: `);
-
-	let choice = document.createElement('span');
-	choice.style.fontWeight = "bold";
-	choice.textContent = (`${slave.shoes} `);
-	label.appendChild(choice);
-
-	// Choose her own
-	if (slave.shoes !== `none`) {
-		label.appendChild(App.UI.Wardrobe.generateRows(choiceOptionsArray, "shoes", slave, true));
-	}
-	el.appendChild(label);
+	// No sort here since we want light -> advanced.  optionsArray = optionsArray.sort((a, b) => (a.text > b.text) ? 1 : -1);
 
 	// Options
 	let links = document.createElement('div');
 	links.className = "choices";
-	links.appendChild(App.UI.Wardrobe.generateRows(optionsArray, "shoes", slave));
+	links.appendChild(App.UI.Wardrobe.generateRows(optionsArray, "shoes", slave, true));
 	el.appendChild(links);
 
 	return jQuery('#shoes').empty().append(el);
@@ -248,9 +250,8 @@ App.UI.Wardrobe.legAccessory = function(slave) {
 		return;
 	}
 
-	const
-		{
-			// eslint-disable-next-line no-unused-vars
+	const {
+		// eslint-disable-next-line no-unused-vars
 			he, him, his, hers, himself, boy, He, His
 		} = getPronouns(slave);
 
@@ -269,7 +270,7 @@ App.UI.Wardrobe.legAccessory = function(slave) {
 	// Choose her own
 	if (slave.legAccessory !== "none") {
 		array.push({text: `None`, updateSlave: {legAccessory: `none`}});
-		label.appendChild(App.UI.Wardrobe.generateRows(array, "legAccessory", slave, true));
+		label.appendChild(App.UI.Wardrobe.generateRows(array, "legAccessory", slave, false));
 	}
 
 	el.appendChild(label);
@@ -280,17 +281,449 @@ App.UI.Wardrobe.legAccessory = function(slave) {
 		{text: "Short stockings", updateSlave: {legAccessory: "short stockings"}},
 		{text: "Long stockings", updateSlave: {legAccessory: "long stockings"}}
 	];
-	links.appendChild(App.UI.Wardrobe.generateRows(array, "legAccessory", slave, true));
+	links.appendChild(App.UI.Wardrobe.generateRows(array, "legAccessory", slave, false));
 	el.appendChild(links);
 
 	return jQuery('#legAccessory').empty().append(el);
 };
 
-App.UI.Wardrobe.generateRows = function(array, category, slave, ignoreAccessCheck="false") { // category should be in the form of slave.category, the thing we want to update.
+App.UI.Wardrobe.bellyAccessory = function(slave) {
+	if (slave.fuckdoll !== 0) {
+		return;
+	}
+
+	const {
+		// eslint-disable-next-line no-unused-vars
+			he, him, his, hers, himself, boy, He, His
+		} = getPronouns(slave);
+
+	let choiceOptionsArray = [];
+	choiceOptionsArray.push({text: `None`, updateSlave: {bellyAccessory: `none`}});
+
+	let optionsArray = [];
+
+	let clothingOption;
+	App.Data.misc.bellyAccessories.forEach(item => {
+		clothingOption = {
+			text: item.name,
+			updateSlave: {bellyAccessory: item.value}
+		};
+		if (item.fs) {
+			clothingOption.FS = item.fs;
+		}
+		if (item.value !== "none") {
+			// skip none in set, we set the link elsewhere.
+			optionsArray.push(clothingOption);
+		}
+	});
+	// Sort
+	// No sort here since we want small -> large.optionsArray = optionsArray.sort((a, b) => (a.text > b.text) ? 1 : -1);
+
+	let el = document.createElement('div');
+
+	let label = document.createElement('div');
+	label.append(`Belly accessory: `);
+
+	let choice = document.createElement('span');
+	choice.style.fontWeight = "bold";
+	choice.textContent = (`${slave.bellyAccessory} `);
+	label.appendChild(choice);
+
+	// Choose her own
+	if (slave.bellyAccessory !== `none`) {
+		label.appendChild(App.UI.Wardrobe.generateRows(choiceOptionsArray, "bellyAccessory", slave, false));
+	}
+
+	el.appendChild(label);
+
+	// Options
+	let links = document.createElement('div');
+	links.className = "choices";
+	links.appendChild(App.UI.Wardrobe.generateRows(optionsArray, "bellyAccessory", slave, true));
+	el.appendChild(links);
+
+	return jQuery('#bellyAccessory').empty().append(el);
+};
+
+App.UI.Wardrobe.buttplug = function(slave) {
+	if (slave.fuckdoll !== 0) {
+		return;
+	}
+
+	const {
+		// eslint-disable-next-line no-unused-vars
+			he, him, his, hers, himself, boy, He, His
+		} = getPronouns(slave);
+
+	let el = document.createElement('div');
+
+	let label = document.createElement('div');
+	label.append(`Anal accessory: `);
+
+	let choice = document.createElement('span');
+	choice.style.fontWeight = "bold";
+	choice.textContent = (`${slave.buttplug} `);
+	label.appendChild(choice);
+
+	if (slave.buttplug !== `none`) {
+		let choiceOptionsArray = [];
+		choiceOptionsArray.push({text: `None`, updateSlave: {buttplug: `none`}});
+		label.appendChild(App.UI.Wardrobe.generateRows(choiceOptionsArray, "buttplug", slave, false));
+	}
+	el.appendChild(label);
+
+	let optionsArray = [];
+
+	let clothingOption;
+	App.Data.misc.buttplugs.forEach(item => {
+		clothingOption = {
+			text: item.name,
+			updateSlave: {buttplug: item.value}
+		};
+		if (item.fs) {
+			clothingOption.FS = item.fs;
+		}
+
+		if (item.value !== "none") {
+			// skip none in set, we set the link elsewhere.
+			optionsArray.push(clothingOption);
+		}
+	});
+
+	// Sort
+	// No sort here since we want small -> large.  optionsArray = optionsArray.sort((a, b) => (a.text > b.text) ? 1 : -1);
+
+	// Options
+	let links = document.createElement('div');
+	links.className = "choices";
+	links.appendChild(App.UI.Wardrobe.generateRows(optionsArray, "buttplug", slave, true));
+	el.appendChild(links);
+
+	return jQuery('#buttplug').empty().append(el);
+};
+
+App.UI.Wardrobe.buttplugAttachment = function(slave) {
+	if (slave.fuckdoll !== 0) {
+		return;
+	} else if (slave.buttplug === "none") {
+		return jQuery('#buttplugAttachment').empty();
+	}
+
+	const {
+		// eslint-disable-next-line no-unused-vars
+			he, him, his, hers, himself, boy, He, His
+		} = getPronouns(slave);
+
+	let el = document.createElement('div');
+
+	let label = document.createElement('div');
+	label.append(`Anal accessory attachment: `);
+
+	let choice = document.createElement('span');
+	choice.style.fontWeight = "bold";
+	choice.textContent = (`${slave.buttplugAttachment} `);
+	label.appendChild(choice);
+
+	if (slave.buttplugAttachment !== `none`) {
+		let choiceOptionsArray = [];
+		choiceOptionsArray.push({text: `None`, updateSlave: {buttplugAttachment: `none`}});
+		label.appendChild(App.UI.Wardrobe.generateRows(choiceOptionsArray, "buttplugAttachment", slave, false));
+	}
+	el.appendChild(label);
+
+	let optionsArray = [];
+
+	let clothingOption;
+	App.Data.misc.buttplugAttachments.forEach(item => {
+		clothingOption = {
+			text: item.name,
+			updateSlave: {buttplugAttachment: item.value}
+		};
+		if (item.fs) {
+			clothingOption.FS = item.fs;
+		}
+
+		if (item.value !== "none") {
+			// skip none in set, we set the link elsewhere.
+			optionsArray.push(clothingOption);
+		}
+	});
+
+	// Sort
+	optionsArray = optionsArray.sort((a, b) => (a.text > b.text) ? 1 : -1);
+
+	// Options
+	let links = document.createElement('div');
+	links.className = "choices";
+	links.appendChild(App.UI.Wardrobe.generateRows(optionsArray, "buttplugAttachment", slave, true));
+	el.appendChild(links);
+
+	return jQuery('#buttplugAttachment').empty().append(el);
+};
+
+App.UI.Wardrobe.vaginalAccessory = function(slave) {
+	if (slave.fuckdoll !== 0) {
+		return;
+	}
+
+	const {
+		// eslint-disable-next-line no-unused-vars
+			he, him, his, hers, himself, boy, He, His
+		} = getPronouns(slave);
+
+	let el = document.createElement('div');
+
+	let label = document.createElement('div');
+	label.append(`Vaginal accessory: `);
+
+	let choice = document.createElement('span');
+	choice.style.fontWeight = "bold";
+	choice.textContent = (`${slave.vaginalAccessory} `);
+	label.appendChild(choice);
+
+	if (slave.vaginalAccessory !== `none`) {
+		let choiceOptionsArray = [];
+		choiceOptionsArray.push({text: `None`, updateSlave: {vaginalAccessory: `none`}});
+		label.appendChild(App.UI.Wardrobe.generateRows(choiceOptionsArray, "vaginalAccessory", slave, false));
+	}
+	el.appendChild(label);
+
+	let optionsArray = [];
+
+	let clothingOption;
+	App.Data.misc.vaginalAccessories.forEach(item => {
+		clothingOption = {
+			text: item.name,
+			updateSlave: {vaginalAccessory: item.value}
+		};
+		if (item.fs) {
+			clothingOption.FS = item.fs;
+		}
+
+		if (item.value !== "none") {
+			// skip none in set, we set the link elsewhere.
+			optionsArray.push(clothingOption);
+		}
+	});
+
+	// Sort
+	// No sort here since we want small -> large.  optionsArray = optionsArray.sort((a, b) => (a.text > b.text) ? 1 : -1);
+
+	// Options
+	let links = document.createElement('div');
+	links.className = "choices";
+	links.appendChild(App.UI.Wardrobe.generateRows(optionsArray, "vaginalAccessory", slave, true));
+	el.appendChild(links);
+
+	return jQuery('#vaginalAccessory').empty().append(el);
+};
+
+App.UI.Wardrobe.vaginalAttachment = function(slave) {
+	if (slave.fuckdoll !== 0) {
+		return;
+	} else if (slave.vaginalAccessory === "none") {
+		return jQuery('#vaginalAttachment').empty();
+	}
+
+	const {
+		// eslint-disable-next-line no-unused-vars
+			he, him, his, hers, himself, boy, He, His
+		} = getPronouns(slave);
+
+	let el = document.createElement('div');
+
+	let label = document.createElement('div');
+	label.append(`Vaginal accessory attachment: `);
+
+	let choice = document.createElement('span');
+	choice.style.fontWeight = "bold";
+	choice.textContent = (`${slave.vaginalAttachment} `);
+	label.appendChild(choice);
+
+	if (slave.vaginalAttachment !== `none`) {
+		let choiceOptionsArray = [];
+		choiceOptionsArray.push({text: `None`, updateSlave: {vaginalAttachment: `none`}});
+		label.appendChild(App.UI.Wardrobe.generateRows(choiceOptionsArray, "vaginalAttachment", slave, false));
+	}
+	el.appendChild(label);
+
+	let optionsArray = [];
+
+	let clothingOption;
+	App.Data.misc.vaginalAttachments.forEach(item => {
+		clothingOption = {
+			text: item.name,
+			updateSlave: {vaginalAttachment: item.value}
+		};
+		if (item.fs) {
+			clothingOption.FS = item.fs;
+		}
+
+		if (item.value !== "none") {
+			// skip none in set, we set the link elsewhere.
+			optionsArray.push(clothingOption);
+		}
+	});
+
+	// Sort
+	optionsArray = optionsArray.sort((a, b) => (a.text > b.text) ? 1 : -1);
+
+	// Options
+	let links = document.createElement('div');
+	links.className = "choices";
+	links.appendChild(App.UI.Wardrobe.generateRows(optionsArray, "vaginalAttachment", slave, true));
+	el.appendChild(links);
+
+	return jQuery('#vaginalAttachment').empty().append(el);
+};
+
+App.UI.Wardrobe.dickAccessory = function(slave) {
+	if (slave.fuckdoll !== 0) {
+		return;
+	}
+
+	const {
+		// eslint-disable-next-line no-unused-vars
+			he, him, his, hers, himself, boy, He, His
+		} = getPronouns(slave);
+
+	let el = document.createElement('div');
+
+	let label = document.createElement('div');
+	label.append(`Dick accessory: `);
+
+	let choice = document.createElement('span');
+	choice.style.fontWeight = "bold";
+	choice.textContent = (`${slave.dickAccessory} `);
+	label.appendChild(choice);
+
+	if (slave.dickAccessory !== `none`) {
+		let choiceOptionsArray = [];
+		choiceOptionsArray.push({text: `None`, updateSlave: {dickAccessory: `none`}});
+		label.appendChild(App.UI.Wardrobe.generateRows(choiceOptionsArray, "dickAccessory", slave, false));
+	}
+	el.appendChild(label);
+
+	let optionsArray = [];
+
+	let clothingOption;
+	App.Data.misc.dickAccessories.forEach(item => {
+		clothingOption = {
+			text: item.name,
+			updateSlave: {dickAccessory: item.value}
+		};
+		if (item.fs) {
+			clothingOption.FS = item.fs;
+		}
+
+		if (item.value !== "none") {
+			// skip none in set, we set the link elsewhere.
+			optionsArray.push(clothingOption);
+		}
+	});
+
+	// Sort
+	// No sort here since we want small -> large.  optionsArray = optionsArray.sort((a, b) => (a.text > b.text) ? 1 : -1);
+
+	// Options
+	let links = document.createElement('div');
+	links.className = "choices";
+	links.appendChild(App.UI.Wardrobe.generateRows(optionsArray, "dickAccessory", slave, true));
+	el.appendChild(links);
+
+	return jQuery('#dickAccessory').empty().append(el);
+};
+
+App.UI.Wardrobe.chastity = function(slave) {
+	if (slave.fuckdoll !== 0) {
+		return;
+	}
+
+	const {
+		// eslint-disable-next-line no-unused-vars
+		he,	him, his, hers, himself, boy, He, His
+	} = getPronouns(slave);
+
+	let el = document.createElement('div');
+
+	let label = document.createElement('div');
+	label.append(`Chastity devices: `);
+
+	let choice = document.createElement('span');
+	choice.style.fontWeight = "bold";
+	if (slave.choosesOwnChastity === 1) {
+		choice.textContent = `choosing ${his} own chastity `;
+	} else if (slave.chastityAnus === 1 && slave.chastityPenis === 1 && slave.chastityVagina === 1) {
+		choice.textContent = `full chastity `;
+	} else if (slave.chastityPenis === 1 && slave.chastityVagina === 1) {
+		choice.textContent = `genital chastity `;
+	} else if (slave.chastityAnus === 1 && slave.chastityPenis === 1) {
+		choice.textContent = `combined chastity cage `;
+	} else if (slave.chastityAnus === 1 && slave.chastityVagina === 1) {
+		choice.textContent = `combined chastity belt `;
+	} else if (slave.chastityVagina === 1) {
+		choice.textContent = `chastity belt `;
+	} else if (slave.chastityPenis === 1) {
+		choice.textContent = `chastity cage `;
+	} else if (slave.chastityAnus === 1) {
+		choice.textContent = `anal chastity `;
+	} else if (slave.chastityAnus === 0 && slave.chastityPenis === 0 && slave.chastityVagina === 0) {
+		choice.textContent = `none `;
+	} else {
+		choice.textContent = `THERE HAS BEEN AN ERROR `;
+	}
+	label.appendChild(choice);
+
+	if (slave.chastityAnus !== 0 || slave.chastityPenis !== 0 || slave.chastityVagina !== 0) {
+		let choiceOptionsArray = [];
+		choiceOptionsArray.push({
+			text: `None`,
+			updateSlave: {
+				choosesOwnChastity: 0,
+				chastityAnus: 0,
+				chastityPenis: 0,
+				chastityVagina: 0
+			}
+		});
+		label.appendChild(App.UI.Wardrobe.generateRows(choiceOptionsArray, "chastity", slave, false));
+	}
+	el.appendChild(label);
+
+	let optionsArray = [];
+
+	let clothingOption;
+	App.Data.misc.chastityDevices.forEach(item => {
+		clothingOption = {
+			text: item.name,
+			updateSlave: {}
+		};
+		Object.assign(clothingOption.updateSlave, item.updateSlave);
+		if (item.fs) {
+			clothingOption.FS = item.fs;
+		}
+		if (item.value !== "none") {
+			// skip none in set, we set the link elsewhere.
+			optionsArray.push(clothingOption);
+		}
+	});
+
+	// Sort
+	// skip sort for this one too. optionsArray = optionsArray.sort((a, b) => (a.text > b.text) ? 1 : -1);
+
+	// Options
+	let links = document.createElement('div');
+	links.className = "choices";
+	links.appendChild(App.UI.Wardrobe.generateRows(optionsArray, "chastity", slave, true));
+	el.appendChild(links);
+
+	return jQuery('#chastity').empty().append(el);
+};
+
+App.UI.Wardrobe.generateRows = function(array, category, slave, accessCheck = false) { // category should be in the form of slave.category, the thing we want to update.
 	let row = document.createElement('span');
 	for (let i = 0; i < array.length; i++) {
 		let link;
-		const separator  = document.createTextNode(` | `);
+		const separator = document.createTextNode(` | `);
 		const keys = Object.keys(array[i]);
 
 		// Test to see if there was a problem with the key
@@ -303,10 +736,25 @@ App.UI.Wardrobe.generateRows = function(array, category, slave, ignoreAccessChec
 				break;
 			}
 		}
-		if (ignoreAccessCheck === true || isClothingAccessible.entry(array[i].updateSlave[category], `${category}`)) {
+		// Some items will never be in App.data.misc, especially "none" if it falls in between harsh and nice data sets.  Trying to look it up would cause an error, which is what access check works around.
+		let unlocked = false;
+		if (accessCheck === true) {
+			if (Object.keys(array[i].updateSlave).length > 1 || category === "chastity") {
+				let text = array[i].text.toLowerCase(); // Yucky.  Sometimes for now updateSlave is an object since multiple values need to be set (chastity).  Compare using a lowercased name instead.
+				unlocked = isClothingAccessible.entry(text, `${category}`, slave, true);
+			} else {
+				unlocked = isClothingAccessible.entry(array[i].updateSlave[category], `${category}`, slave, true);
+			}
+		}
+		if (accessCheck === false || unlocked) {
+			if (i < array.length && i !== 0) { // start with separator (after first loop); can't after since the last loop may not have any text.
+				row.appendChild(separator);
+			}
 			// is it just text?
 			if (array[i].disabled) {
 				link = App.UI.DOM.disabledLink(array[i].text, [array[i].disabled]);
+			} else if (typeof unlocked === 'string') {
+				link = App.UI.DOM.disabledLink(array[i].text, [unlocked]);
 			} else {
 				link = document.createElement('span');
 
@@ -328,16 +776,13 @@ App.UI.Wardrobe.generateRows = function(array, category, slave, ignoreAccessChec
 
 				// add a note node if required
 				if (array[i].note) {
-					let note  = document.createElement('span');
+					let note = document.createElement('span');
 					note.textContent = (` ${array[i].note}`);
 					note.className = "note";
 					link.appendChild(note);
 				}
 			}
 			row.appendChild(link);
-			if (i < array.length-1) {
-				row.appendChild(separator);
-			}
 		}
 	}
 
@@ -361,203 +806,13 @@ App.UI.Wardrobe.refreshAll = function(slave) {
 	App.UI.Wardrobe.armAccessory(slave);
 	App.UI.Wardrobe.shoes(slave);
 	App.UI.Wardrobe.legAccessory(slave);
+	App.UI.Wardrobe.bellyAccessory(slave);
+	App.UI.Wardrobe.buttplug(slave);
+	App.UI.Wardrobe.buttplugAttachment(slave);
+	App.UI.Wardrobe.vaginalAccessory(slave);
+	App.UI.Wardrobe.vaginalAttachment(slave);
+	App.UI.Wardrobe.dickAccessory(slave);
+	App.UI.Wardrobe.chastity(slave);
+	App.Art.refreshSlaveArt(slave, 3, "artFrame");
 	return;
 };
-
-/*
-	<br>Collar: ''<span id="collar">slave.collar</span>.''
-	<<link "None">>slave.collar = "none";<</link>>
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;//Nice://
-	<<link "Stylish leather">>slave.collar = "stylish leather";<</link>>
-	<<link "Satin choker">>slave.collar = "satin choker";<</link>>
-	<<link "Silken ribbon">>slave.collar = "silk ribbon";<</link>>
-	<<link "Heavy gold">>slave.collar = "heavy gold";<</link>>
-	<<link "Pretty jewelry">>slave.collar = "pretty jewelry";<</link>>
-	if ((V.seeAge !== 0)) {
-		<<link "Nice retirement counter">>slave.collar = "nice retirement counter";<</link>>
-	}
-	<<link "Bell">>slave.collar = "bell collar";<</link>>
-	<<link "Cowbell">>slave.collar = "leather with cowbell";<</link>>
-
-		//FS// <<link "Bowtie collar">>slave.collar = "bowtie";<</link>>
-	}
-
-		//FS// <<link "Ancient Egyptian">>slave.collar = "ancient Egyptian";<</link>>
-	}
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;//Harsh://
-	<<link "Tight steel">>slave.collar = "tight steel";<</link>>
-	if ((V.seeAge !== 0)) {
-		<<link "Cruel retirement counter">>slave.collar = "cruel retirement counter";<</link>>
-	}
-	<<link "Uncomfortable leather">>slave.collar = "uncomfortable leather";<</link>>
-	if (slave.preg > -1 && (slave.ovaries === 1 |slave.mpreg === 1) && V.seePreg !== 0) {
-		<<link "Pregnancy biometrics">>slave.collar = "preg biometrics";<</link>>
-	}
-	<<link "Shock punishment">>slave.collar = "shock punishment";<</link>>
-	<<link "Dildo gag">>slave.collar = "dildo gag";<</link>>
-
-		if (slave.skill.oral > 50) {
-			<<link "Massive dildo gag">>slave.collar = "massive dildo gag";<</link>>
-		} else {
-			Massive dildo gag
-		}
-	}
-	<<link "Ball gag">>slave.collar = "ball gag";<</link>>
-	<<link "Bit gag">>slave.collar = "bit gag";<</link>>
-	<<link "Neck corset">>slave.collar = "neck corset";<</link>>
-	<<link "Porcelain mask">>slave.collar = "porcelain mask";<</link>>
-
-	if (hasAnyArms(slave)) {
-		<br>Arm accessory: ''<span id="armAccessory">slave.armAccessory</span>.''
-		<<link "None">>slave.armAccessory = "none";<</link>>
-		<<link "Hand gloves">>slave.armAccessory = "hand gloves";<</link>>
-		<<link "Elbow gloves">>slave.armAccessory = "elbow gloves";<</link>>
-	}
-
-	if (hasAnyLegs(slave)) {
-		<br>Shoes: ''<span id="shoes">slave.shoes</span>.''
-		<<link "Go barefoot">>slave.shoes = "none";<</link>>
-		<<link "Flats">>slave.shoes = "flats";<</link>>
-		<<link "Heels">>slave.shoes = "heels";<</link>>
-		<<link "Pumps">>slave.shoes = "pumps";<</link>>
-		<<link "Thigh boots">>slave.shoes = "boots";<</link>>
-		<<link "Painfully extreme heels">>slave.shoes = "extreme heels";<</link>>
-
-			<<link "Platforms">>slave.shoes = "platform shoes";<</link>>
-			<<link "Platform heels">>slave.shoes = "platform heels";<</link>>
-			<<link "Painfully extreme platform heels">>slave.shoes = "extreme platform heels";<</link>>
-		}
-
-		<br>Leg accessory: ''<span id="legAccessory">slave.legAccessory</span>.''
-		<<link "None">>slave.legAccessory = "none";<</link>>
-		<<link "Short stockings">>slave.legAccessory = "short stockings";<</link>>
-		<<link "Long stockings">>slave.legAccessory = "long stockings";<</link>>
-	}
-
-	<br>Torso accessory: ''<span id="bellyAccessory">slave.bellyAccessory</span>.''
-	<<link "None">>slave.bellyAccessory = "none";<</link>>
-	<<link "Tight corset">>slave.bellyAccessory = "a corset";<</link>>
-	if ((slave.breedingMark !== 1 |V.propOutcome === 0 |V.eugenicsFullControl === 1 |V.arcologies[0].FSRestart === "unset")) {
-		<<link "Extreme corset">>slave.bellyAccessory = "an extreme corset";<</link>>
-	}
-	if ((slave.belly > 10000)) {
-		<<link "Supportive band">>slave.bellyAccessory = "a support band";<</link>>
-	}
- // works for all of them
-		if (slave.belly < 1500 && slave.weight < 130) {
-			<<link "1st Trimester belly">>slave.bellyAccessory = "a small empathy belly";<</link>>
-			<<link "2nd Trimester belly">>slave.bellyAccessory = "a medium empathy belly";<</link>>
-			<<link "3rd Trimester belly">>slave.bellyAccessory = "a large empathy belly";<</link>>
-			<<link "3rd Trimester twins belly">>slave.bellyAccessory = "a huge empathy belly";<</link>>
-		} else {
-			V.His stomach is too big to fit an empathy belly around.
-		}
-	}
-
-	<br>Anal accessory: ''<span id="buttplug">slave.buttplug</span>.''
-	<<link "None">>slave.buttplug = "none", slave.buttplugAttachment = "none";<</link>>
-	<<link "Normal">>slave.buttplug = "plug";<</link>>
-
-		<<link "Long">>slave.buttplug = "long plug";<</link>>
-	}
-	<<link "Large">>slave.buttplug = "large plug";<</link>>
-
-		<<link "Long and large">>slave.buttplug = "long, large plug";<</link>>
-	}
-	if (slave.anus >= 2) {
-		<<link "Huge">>slave.buttplug = "huge plug";<</link>>
-
-			if ((slave.breedingMark !== 1 |V.propOutcome === 0 |V.eugenicsFullControl === 1 |V.arcologies[0].FSRestart === "unset")) {
-				<<link "Long and huge">>slave.buttplug = "long, huge plug";<</link>>
-			}
-		}
-	}
-	if (isItemAccessible("tail") && slave.buttplug !== "none") {
-		<br>
-		&nbsp;&nbsp;&nbsp;&nbsp;Anal accessory attachment: ''<span id="buttplugAttach">slave.buttplugAttachment</span>.''
-		<<link "None">>slave.buttplugAttachment = "none";<</link>>
-		if (V.toysBoughtButtPlugTails === 1) {
-			<<link "Tail">>slave.buttplugAttachment = "tail";<</link>>
-			<<link "Cat tail">>slave.buttplugAttachment = "cat tail";<</link>>
-			<<link "Fox tail">>slave.buttplugAttachment = "fox tail";<</link>>
-			<<link "Cow tail">>slave.buttplugAttachment = "cow tail";<</link>>
-		}
-	}
-
-	if (slave.vagina > -1) {
-		<br>Vaginal accessory: ''<span id="vaginalAccessory">slave.vaginalAccessory</span>.''
-		<<link "None">>slave.vaginalAccessory = "none";App.UI.SlaveInteract.refreshAll(slave);<</link>>
-
-			<<link "Bullet vibrator">>slave.vaginalAccessory = "bullet vibrator";<</link>>
-		}
-		if (isItemAccessible("smart bullet vibrator") && V.toysBoughtSmartVibes === 1) {
-			<<link "Smart bullet vibrator">>slave.vaginalAccessory = "smart bullet vibrator";<</link>>
-		}
-		<<link "Dildo">>slave.vaginalAccessory = "dildo";<</link>>
-
-			<<link "Long dildo">>slave.vaginalAccessory = "long dildo";<</link>>
-		}
-		<<link "Large dildo">>slave.vaginalAccessory = "large dildo";<</link>>
-
-			<<link "Large and long dildo">>slave.vaginalAccessory = "long, large dildo";<</link>>
-		}
-		if (slave.vagina >= 2) {
-			<<link "Huge dildo">>slave.vaginalAccessory = "huge dildo";<</link>>
-
-				<<link "Huge and long dildo">>slave.vaginalAccessory = "long, huge dildo";<</link>>
-			}
-		}
-		if (isItemAccessible("vibrator") && (slave.vaginalAccessory !== "none" && slave.vaginalAccessory !== "bullet vibrator" && slave.vaginalAccessory !== "smart bullet vibrator") && V.toysBoughtVaginalAttachments === 1) {
-			<br>
-			&nbsp;&nbsp;&nbsp;&nbsp;Vaginal accessory attachment:
-			''<span id="vaginalAttachment">slave.vaginalAttachment</span>.''
-			<<link "None">>slave.vaginalAttachment = "none";<</link>>
-			<<link "Vibrating dildo">>slave.vaginalAttachment = "vibrator";<</link>>
-		}
-	}
-
-	if (slave.dick > 0) {
-		<br>Dick accessory: ''<span id="dickAccessory">slave.dickAccessory</span>.''
-		<<link "None">>slave.dickAccessory = "none";App.UI.SlaveInteract.refreshAll(slave);<</link>>
-		if (isItemAccessible("bullet vibrator") && V.toysBoughtVaginalAttachments === 1) {
-			<<link "Bullet vibrator">>slave.dickAccessory = "bullet vibrator";<</link>>
-		}
-		if (isItemAccessible("smart bullet vibrator") && V.toysBoughtVaginalAttachments === 1) {
-			<<link "Smart bullet vibrator">>slave.dickAccessory = "smart bullet vibrator";<</link>>
-		}
-	}
-
-	<br>Chastity device: ''<span id="chastity">if (slave.chastityAnus === 1 && slave.chastityPenis === 1 && slave.chastityVagina === 1) {full chastity} else if (slave.chastityPenis === 1 && slave.chastityVagina === 1) {genital chastity} else if (slave.chastityAnus === 1 && slave.chastityPenis === 1) {combined chastity cage} else if (slave.chastityAnus === 1 && slave.chastityVagina === 1) {combined chastity belt} else if (slave.chastityVagina === 1) {chastity belt} else if (slave.chastityPenis === 1) {chastity cage} else if (slave.chastityAnus === 1) {anal chastity} else if (slave.chastityAnus === 0 && slave.chastityPenis === 0 && slave.chastityVagina === 0) {none} else {THERE HAS BEEN AN ERROR}</span>.''
-	<<link "None">>slave.chastityAnus = 0;slave.chastityPenis = 0;slave.chastityVagina = 0;App.UI.SlaveInteract.refreshAll(slave);<</link>>
-	<<link "Anal chastity">>slave.choosesOwnChastity = 0;slave.chastityAnus = 1;slave.chastityPenis = 0;slave.chastityVagina = 0;<<replace "#chastity">>anal chastityApp.UI.SlaveInteract.refreshAll(slave);<</link>>
-	if (slave.vagina > -1) {
-		<<link "Chastity belt">>slave.choosesOwnChastity = 0;slave.chastityAnus = 0;slave.chastityPenis = 0;slave.chastityVagina = 1;<<replace "#chastity">>Chastity beltApp.UI.SlaveInteract.refreshAll(slave);<</link>>
-		<<link "Combined chastity belt">>slave.choosesOwnChastity = 0;slave.chastityAnus = 1;slave.chastityPenis = 0;slave.chastityVagina = 1;<<replace "#chastity">>Combined chastity beltApp.UI.SlaveInteract.refreshAll(slave);<</link>>
-	}
-	if (slave.dick > 0) {
-		<<link "Chastity cage">>slave.choosesOwnChastity = 0;slave.chastityAnus = 0;slave.chastityPenis = 1;slave.chastityVagina = 0;<<replace "#chastity">>Chastity cageApp.UI.SlaveInteract.refreshAll(slave);<</link>>
-		<<link "Combined chastity cage">>slave.choosesOwnChastity = 0;slave.chastityAnus = 1;slave.chastityPenis = 1;slave.chastityVagina = 0;<<replace "#chastity">>Combined Chastity cageApp.UI.SlaveInteract.refreshAll(slave);<</link>>
-		if (slave.vagina > -1) {
-			<<link "Genital chastity">>slave.choosesOwnChastity = 0;slave.chastityAnus = 0;slave.chastityPenis = 1;slave.chastityVagina = 1;<<replace "#chastity">>Genital chastityApp.UI.SlaveInteract.refreshAll(slave);<</link>>
-			<<link "Full chastity">>slave.choosesOwnChastity = 0;slave.chastityAnus = 1;slave.chastityPenis = 1;slave.chastityVagina = 1;<<replace "#chastity">>Full chastityApp.UI.SlaveInteract.refreshAll(slave);<</link>>
-		}
-	}
-
-	if (V.arcologies[0].FSRestart !== "unset" && slave.devotion > 20 && slave.trust > 0 && slave.choosesOwnClothes === 1) {
-		<br>
-		if (slave.choosesOwnChastity === 1) {
-			r += `V.He is allowed to decide whether V.he to wear chastity devices. `;
-			[[Withdraw Privilege|Slave Interact][slave.choosesOwnChastity = 0]]
-		} else {
-			r += `V.He is not allowed to choose whether to wear chastity devices. `;
-			[[Allow Choice|Slave Interact][slave.choosesOwnChastity = 1]]
-		}
-	}
-
-} // CLOSES FUCKDOLL CHECK
-
-}	// CLOSES WARDROBE CHECK
-};
-
-</br>
-*/
diff --git a/src/npc/acquisition.tw b/src/npc/acquisition.tw
index 9c284ff67bc1b2d71c68383ae4590406fa23faab..28c146729dccf70cad52765a3f428c8d7de52b34 100644
--- a/src/npc/acquisition.tw
+++ b/src/npc/acquisition.tw
@@ -356,8 +356,10 @@ The previous owner seems to have left in something of a hurry.
 			<<set $activeSlave.face = Math.trunc($activeSlave.face+$activeSlave.faceImplant/2,-100,100)>>
 			<<set $activeSlave.boobsImplant = 200*random(4,8)>>
 			<<set $activeSlave.boobs += $activeSlave.boobsImplant>>
+			<<set $activeSlave.boobsImplantType = "normal">>
 			<<set $activeSlave.buttImplant = random(2,4)>>
 			<<set $activeSlave.butt += $activeSlave.buttImplant>>
+			<<set $activeSlave.buttImplant = "normal">>
 			<<set $activeSlave.lipsImplant = random(1,2)>>
 			<<set $activeSlave.lips = Math.trunc($activeSlave.lipsImplant+2,-3,3)>>
 			<<set $activeSlave.weight = random(-25,-15)>>
diff --git a/src/npc/databases/cheatmodeDatabase.tw b/src/npc/databases/cheatmodeDatabase.tw
index 49d4fc2a92b05772bf6b5c229a9e4213e7589e82..ec3c192f3e3df0623119475b8ccaba29074854a4 100644
--- a/src/npc/databases/cheatmodeDatabase.tw
+++ b/src/npc/databases/cheatmodeDatabase.tw
@@ -2,7 +2,7 @@
 
 <<set $activeSlave = BaseSlave()>>
 <<set _HS = clone($activeSlave)>>
-<<set _HS.slaveName = "Miss Anne", _HS.birthName = "Lindy Anne", _HS.ID = 990000, _HS.relation = "mother", _HS.relationTarget = 990004, _HS.relationship = 4, _HS.relationshipTarget = 990001, _HS.rivalry = 1, _HS.rivalryTarget = 990002, _HS.assignment = "be your Head Girl", _HS.birthWeek = random(0,51), _HS.actualAge = 42, _HS.physicalAge = 42, _HS.visualAge = 42, _HS.ovaryAge = 42, _HS.ageImplant = 1, setHealth(_HS, 50), _HS.devotion = 100, _HS.height = 175, _HS.eye.origColor = "green", _HS.origHColor = "honey blonde", _HS.origSkin = "pale", _HS.hStyle = "long", _HS.waist = -55, _HS.boobs = 1000, _HS.boobsImplant = 600, _HS.areolae = 1, _HS.butt = 4, _HS.buttImplant = 2, _HS.face = 55, _HS.lips = 35, _HS.anus = 1, _HS.makeup = 1, _HS.nails = 1, _HS.earPiercing = 1, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring = 100, _HS.skill.entertainment = 100, _HS.clothes = "a slave gown", _HS.intelligence = 100, _HS.energy = 65, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "'Miss Anne' is tattooed in lovely flowing script over $his collarbone.", _HS.custom.desc = "$He speaks with the rich accent of the Old South.">>
+<<set _HS.slaveName = "Miss Anne", _HS.birthName = "Lindy Anne", _HS.ID = 990000, _HS.relation = "mother", _HS.relationTarget = 990004, _HS.relationship = 4, _HS.relationshipTarget = 990001, _HS.rivalry = 1, _HS.rivalryTarget = 990002, _HS.assignment = "be your Head Girl", _HS.birthWeek = random(0,51), _HS.actualAge = 42, _HS.physicalAge = 42, _HS.visualAge = 42, _HS.ovaryAge = 42, _HS.ageImplant = 1, setHealth(_HS, 50), _HS.devotion = 100, _HS.height = 175, _HS.eye.origColor = "green", _HS.origHColor = "honey blonde", _HS.origSkin = "pale", _HS.hStyle = "long", _HS.waist = -55, _HS.boobs = 1000, _HS.boobsImplant = 600, _HS.boobsImplantType = "normal", _HS.areolae = 1, _HS.butt = 4, _HS.buttImplant = 2, _HS.buttImplantType = "normal", _HS.face = 55, _HS.lips = 35, _HS.anus = 1, _HS.makeup = 1, _HS.nails = 1, _HS.earPiercing = 1, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring = 100, _HS.skill.entertainment = 100, _HS.clothes = "a slave gown", _HS.intelligence = 100, _HS.energy = 65, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "'Miss Anne' is tattooed in lovely flowing script over $his collarbone.", _HS.custom.desc = "$He speaks with the rich accent of the Old South.">>
 <<if $seeDicks != 100>>
 	<<set _HS.genes = "XX", _HS.vagina = 2, _HS.ovaries = 1, _HS.skill.vaginal = 100, _HS.pubertyXX = 1>>
 <<else>>
@@ -13,7 +13,7 @@
 //There are quite a few left; their names are _HS.slaveName,//
 
 <<set _HS = clone($activeSlave)>>
-<<set _HS.slaveName = "Cornelia", _HS.birthName = "Cora", _HS.ID = 990001, _HS.relation = "mother", _HS.relationTarget = 990002, _HS.relationship = 4, _HS.relationshipTarget = 990000, _HS.assignment = "whore", _HS.birthWeek = random(0,51), _HS.actualAge = 36, _HS.physicalAge = 36, _HS.visualAge = 36, _HS.ovaryAge = 36, _HS.ageImplant = 1, setHealth(_HS, 10), _HS.devotion = 100, _HS.muscles = 20, _HS.height = 190, _HS.race = "black", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.origSkin = "dark", _HS.hStyle = "long", _HS.pubicHStyle = "waxed", _HS.waist = -55, _HS.boobs = 1200, _HS.boobsImplant = 1000, _HS.areolae = 2, _HS.butt = 5, _HS.buttImplant = 3, _HS.preg = -2, _HS.face = 15, _HS.faceImplant = 65, _HS.lips = 35, _HS.lipsImplant = 10, _HS.anus = 2, _HS.makeup = 1, _HS.nails = 1, _HS.earPiercing = 1, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring = 100, _HS.skill.entertainment = 100, _HS.clothes = "a slave gown", _HS.energy = 65, _HS.attrXX = 80, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.brand["left hand"] = "a large letter 'S'", _HS.custom.desc = "$He speaks with the demeaning accent of slaves from the Old South.">>
+<<set _HS.slaveName = "Cornelia", _HS.birthName = "Cora", _HS.ID = 990001, _HS.relation = "mother", _HS.relationTarget = 990002, _HS.relationship = 4, _HS.relationshipTarget = 990000, _HS.assignment = "whore", _HS.birthWeek = random(0,51), _HS.actualAge = 36, _HS.physicalAge = 36, _HS.visualAge = 36, _HS.ovaryAge = 36, _HS.ageImplant = 1, setHealth(_HS, 10), _HS.devotion = 100, _HS.muscles = 20, _HS.height = 190, _HS.race = "black", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.origSkin = "dark", _HS.hStyle = "long", _HS.pubicHStyle = "waxed", _HS.waist = -55, _HS.boobs = 1200, _HS.boobsImplant = 1000, _HS.boobsImplantType = "fillable", _HS.areolae = 2, _HS.butt = 5, _HS.buttImplant = 3, _HS.buttImplantType = "fillable", _HS.preg = -2, _HS.face = 15, _HS.faceImplant = 65, _HS.lips = 35, _HS.lipsImplant = 10, _HS.anus = 2, _HS.makeup = 1, _HS.nails = 1, _HS.earPiercing = 1, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring = 100, _HS.skill.entertainment = 100, _HS.clothes = "a slave gown", _HS.energy = 65, _HS.attrXX = 80, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.brand["left hand"] = "a large letter 'S'", _HS.custom.desc = "$He speaks with the demeaning accent of slaves from the Old South.">>
 <<if $seeDicks != 0>>
 	<<set _HS.genes = "XY", _HS.vagina = -1, _HS.dick = 3, _HS.balls = 3, _HS.scrotum = 3, _HS.foreskin = 3, _HS.prostate = 1, _HS.pubertyXY = 1>>
 <<else>>
@@ -23,7 +23,7 @@
 //_HS.slaveName,//
 
 <<set _HS = clone($activeSlave)>>
-<<set _HS.slaveName = "Sheba", _HS.birthName = "Shaneequa", _HS.ID = 990002, _HS.relation = "daughter", _HS.relationTarget = 990001, _HS.rivalry = 1, _HS.rivalryTarget = 990000, _HS.assignment = "whore", _HS.birthWeek = random(0,51), _HS.actualAge = 19, _HS.physicalAge = 19, _HS.visualAge = 19, _HS.ovaryAge = 19, setHealth(_HS, 10), _HS.devotion = 12, _HS.height = 175, _HS.race = "black", _HS.pubicHColor = "black", _HS.origSkin = "brown", _HS.hStyle = "long", _HS.pubicHStyle = "waxed", _HS.waist = -55, _HS.boobs = 1600, _HS.boobsImplant = 600, _HS.nipplesPiercing = 1, _HS.areolae = 1, _HS.butt = 6, _HS.buttImplant = 2, _HS.face = 55, _HS.faceImplant = 15, _HS.lips = 55, _HS.lipsImplant = 10, _HS.anus = 1, _HS.makeup = 1, _HS.nails = 1, _HS.earPiercing = 1, _HS.skill.oral = 35, _HS.skill.anal = 35, _HS.skill.whoring = 35, _HS.skill.entertainment = 35, _HS.clothes = "a slave gown", _HS.energy = 100, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.brand["left hand"] = "a large letter 'S'", _HS.custom.desc = "$He speaks with the demeaning accent of slaves from the Old South.", _HS.mother = 990001>>
+<<set _HS.slaveName = "Sheba", _HS.birthName = "Shaneequa", _HS.ID = 990002, _HS.relation = "daughter", _HS.relationTarget = 990001, _HS.rivalry = 1, _HS.rivalryTarget = 990000, _HS.assignment = "whore", _HS.birthWeek = random(0,51), _HS.actualAge = 19, _HS.physicalAge = 19, _HS.visualAge = 19, _HS.ovaryAge = 19, setHealth(_HS, 10), _HS.devotion = 12, _HS.height = 175, _HS.race = "black", _HS.pubicHColor = "black", _HS.origSkin = "brown", _HS.hStyle = "long", _HS.pubicHStyle = "waxed", _HS.waist = -55, _HS.boobs = 1600, _HS.boobsImplant = 600, _HS.boobsImplantType = "normal", _HS.nipplesPiercing = 1, _HS.areolae = 1, _HS.butt = 6, _HS.buttImplant = 2, _HS.buttImplantType = "normal", _HS.face = 55, _HS.faceImplant = 15, _HS.lips = 55, _HS.lipsImplant = 10, _HS.anus = 1, _HS.makeup = 1, _HS.nails = 1, _HS.earPiercing = 1, _HS.skill.oral = 35, _HS.skill.anal = 35, _HS.skill.whoring = 35, _HS.skill.entertainment = 35, _HS.clothes = "a slave gown", _HS.energy = 100, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.brand["left hand"] = "a large letter 'S'", _HS.custom.desc = "$He speaks with the demeaning accent of slaves from the Old South.", _HS.mother = 990001>>
 <<if $seeDicks != 100>>
 	<<set _HS.genes = "XX", _HS.vagina = 1, _HS.ovaries = 1, _HS.skill.vaginal = 35, _HS.pubertyXX = 1>>
 <<else>>
diff --git a/src/npc/databases/dSlavesDatabase.tw b/src/npc/databases/dSlavesDatabase.tw
index 718be20791d288f9cecdcbce74514a3f43e2c968..3635ebfaf5c678d031238b1d6e51aa8b83a8139a 100644
--- a/src/npc/databases/dSlavesDatabase.tw
+++ b/src/npc/databases/dSlavesDatabase.tw
@@ -25,7 +25,7 @@
 /*Added origin, made some assumptions about $his background, changed fetish to submissive, added arrogant flaw -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Luna", _HS.birthName = "Luna", _HS.ID = _i++, _HS.birthWeek = random(0,51), setHealth(_HS, 20), _HS.height = 157, _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.origSkin = "pale", _HS.hLength = 20, _HS.hStyle = "chin-length with bangs over one eye", _HS.boobs = 650, _HS.boobsImplant = 600, _HS.butt = 3, _HS.buttTat = "tribal patterns", _HS.vagina = 1, _HS.vaginaLube = 1, _HS.vaginaPiercing = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.earPiercing = 1, _HS.nosePiercing = 1, _HS.skill.vaginal = 35, _HS.skill.oral = 35, _HS.skill.anal = 35, _HS.clothes = "uncomfortable straps", _HS.attrXY = 40>>
+<<set _HS.slaveName = "Luna", _HS.birthName = "Luna", _HS.ID = _i++, _HS.birthWeek = random(0,51), setHealth(_HS, 20), _HS.height = 157, _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.origSkin = "pale", _HS.hLength = 20, _HS.hStyle = "chin-length with bangs over one eye", _HS.boobs = 650, _HS.boobsImplant = 600, _HS.boobsImplantType = "normal", _HS.butt = 3, _HS.buttTat = "tribal patterns", _HS.vagina = 1, _HS.vaginaLube = 1, _HS.vaginaPiercing = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.earPiercing = 1, _HS.nosePiercing = 1, _HS.skill.vaginal = 35, _HS.skill.oral = 35, _HS.skill.anal = 35, _HS.clothes = "uncomfortable straps", _HS.attrXY = 40>>
 <<set $heroSlaves.push(_HS)>>
 /*Tat should be lower back, "Wears a leather collar, a Scarab clitoris g-string, Tortoise shell leather harness, and a pair of black thigh high boots"*/
 /*Corrected piercings -BoneyM*/
@@ -47,7 +47,7 @@
 /*Corrected eyes, added combat skill, bisexual and odd, tweaked face -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Cuntbitch", _HS.birthName = "", _HS.birthSurname = "", _HS.origin = "$He was a slave trader until $he was betrayed by ambitious underlings and sold into enslavement.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 31, _HS.physicalAge = 31, _HS.visualAge = 31, _HS.ovaryAge = 31, setHealth(_HS, 40), _HS.devotion = -100, _HS.muscles = 20, _HS.height = 183, _HS.race = "black", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.origSkin = "black", _HS.hStyle = "long and curly", _HS.boobs = 1400, _HS.boobsImplant = 800, _HS.nipplesPiercing = 2, _HS.boobsTat = "degradation", _HS.butt = 6, _HS.buttImplant = 3, _HS.buttTat = "degradation", _HS.lips = 35, _HS.lipsPiercing = 2, _HS.lipsTat = "degradation", _HS.vagina = 1, _HS.vaginaLube = 1, _HS.vaginaPiercing = 1, _HS.vaginaTat = "degradation", _HS.anus = 1, _HS.ovaries = 1, _HS.anusTat = "degradation", _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.combat = 1, _HS.clothes = "restrictive latex", _HS.shoes = "heels", _HS.intelligence = -20, _HS.attrXY = 40, _HS.fetish = "humiliation", _HS.fetishKnown = 1, _HS.behavioralFlaw = "arrogant", _HS.custom.tattoo = "$He has several 'tribal' style tattoos on $his arms from before $his enslavement.", _HS.career = "a slaver">>
+<<set _HS.slaveName = "Cuntbitch", _HS.birthName = "", _HS.birthSurname = "", _HS.origin = "$He was a slave trader until $he was betrayed by ambitious underlings and sold into enslavement.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 31, _HS.physicalAge = 31, _HS.visualAge = 31, _HS.ovaryAge = 31, setHealth(_HS, 40), _HS.devotion = -100, _HS.muscles = 20, _HS.height = 183, _HS.race = "black", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.origSkin = "black", _HS.hStyle = "long and curly", _HS.boobs = 1400, _HS.boobsImplant = 800, _HS.boobsImplantType = "normal", _HS.nipplesPiercing = 2, _HS.boobsTat = "degradation", _HS.butt = 6, _HS.buttImplant = 3, _HS.buttImplantType = "normal", _HS.buttTat = "degradation", _HS.lips = 35, _HS.lipsPiercing = 2, _HS.lipsTat = "degradation", _HS.vagina = 1, _HS.vaginaLube = 1, _HS.vaginaPiercing = 1, _HS.vaginaTat = "degradation", _HS.anus = 1, _HS.ovaries = 1, _HS.anusTat = "degradation", _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.combat = 1, _HS.clothes = "restrictive latex", _HS.shoes = "heels", _HS.intelligence = -20, _HS.attrXY = 40, _HS.fetish = "humiliation", _HS.fetishKnown = 1, _HS.behavioralFlaw = "arrogant", _HS.custom.tattoo = "$He has several 'tribal' style tattoos on $his arms from before $his enslavement.", _HS.career = "a slaver">>
 <<set $heroSlaves.push(_HS)>>
 /*Set birth name to 'unknown', tweaked obedience downwards, corrected tattoo's, added combat skill, clothes and shoes, arrogant -BoneyM*/
 
@@ -114,12 +114,12 @@
 /*Added 'submissive' and 'bitchy' -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Valentina", _HS.birthName = "Valentina", _HS.origin = "$He was once the bodyguard to a Russian drug lord, and was sold into slavery after his death by cocaine overdose.", _HS.ID = _i++, _HS.nationality = "Russian", _HS.birthWeek = random(0,51), _HS.actualAge = 29, _HS.physicalAge = 29, _HS.visualAge = 29, _HS.ovaryAge = 29, setHealth(_HS, 100, 0, 0, 0, 0), _HS.devotion = 100, _HS.muscles = 100, _HS.height = 175, _HS.eye.origColor = "green", _HS.override_Skin = 1, _HS.origSkin = "sun tanned", _HS.hLength = 30, _HS.hStyle = "shoulder length", _HS.boobs = 650, _HS.boobsImplant = 600, _HS.butt = 2, _HS.lips = 25, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.skill.oral = 15, _HS.skill.anal = 35, _HS.skill.combat = 1, _HS.intelligence = 30, _HS.attrXY = 40, _HS.fetish = "buttslut", _HS.fetishKnown = 1, _HS.custom.tattoo = "$He has a red star tattoo on $his back, and a hammer and sickle on $his right buttock.", _HS.custom.desc = "$He has a Slavic face with high cheekbones and a strong, pointed jaw. $He is a skilled martial artist.", _HS.faceShape = "masculine", _HS.career = "a bodyguard">>
+<<set _HS.slaveName = "Valentina", _HS.birthName = "Valentina", _HS.origin = "$He was once the bodyguard to a Russian drug lord, and was sold into slavery after his death by cocaine overdose.", _HS.ID = _i++, _HS.nationality = "Russian", _HS.birthWeek = random(0,51), _HS.actualAge = 29, _HS.physicalAge = 29, _HS.visualAge = 29, _HS.ovaryAge = 29, setHealth(_HS, 100, 0, 0, 0, 0), _HS.devotion = 100, _HS.muscles = 100, _HS.height = 175, _HS.eye.origColor = "green", _HS.override_Skin = 1, _HS.origSkin = "sun tanned", _HS.hLength = 30, _HS.hStyle = "shoulder length", _HS.boobs = 650, _HS.boobsImplant = 600, _HS.boobsImplantType = "normal", _HS.butt = 2, _HS.lips = 25, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.skill.oral = 15, _HS.skill.anal = 35, _HS.skill.combat = 1, _HS.intelligence = 30, _HS.attrXY = 40, _HS.fetish = "buttslut", _HS.fetishKnown = 1, _HS.custom.tattoo = "$He has a red star tattoo on $his back, and a hammer and sickle on $his right buttock.", _HS.custom.desc = "$He has a Slavic face with high cheekbones and a strong, pointed jaw. $He is a skilled martial artist.", _HS.faceShape = "masculine", _HS.career = "a bodyguard">>
 <<set $heroSlaves.push(_HS)>>
 /*Tweaked devotion up, changed eyes to green, corrected tattoo syntax, added combat skill -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Maria", _HS.birthName = "Maria", _HS.origin = "$He was sold into slavery on a legal technicality.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 28, _HS.physicalAge = 28, _HS.visualAge = 28, _HS.ovaryAge = 28, setHealth(_HS, 40), _HS.devotion = 15, _HS.height = 155, _HS.race = "latina", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.origSkin = "brown", _HS.hLength = 25, _HS.hStyle = "in a bob", _HS.boobs = 650, _HS.boobsImplant = 600, _HS.nipplesPiercing = 1, _HS.butt = 2, _HS.buttTat = "tribal patterns", _HS.face = -15, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.anus = 1, _HS.analArea = 1, _HS.ovaries = 1, _HS.skill.vaginal = 35, _HS.skill.oral = 35, _HS.skill.anal = 35, _HS.skill.combat = 1, _HS.clothes = "attractive lingerie", _HS.intelligence = 20, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.sexualFlaw = "hates penetration">>
+<<set _HS.slaveName = "Maria", _HS.birthName = "Maria", _HS.origin = "$He was sold into slavery on a legal technicality.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 28, _HS.physicalAge = 28, _HS.visualAge = 28, _HS.ovaryAge = 28, setHealth(_HS, 40), _HS.devotion = 15, _HS.height = 155, _HS.race = "latina", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.origSkin = "brown", _HS.hLength = 25, _HS.hStyle = "in a bob", _HS.boobs = 650, _HS.boobsImplant = 600, _HS.boobsImplantType = "normal", _HS.nipplesPiercing = 1, _HS.butt = 2, _HS.buttTat = "tribal patterns", _HS.face = -15, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.anus = 1, _HS.analArea = 1, _HS.ovaries = 1, _HS.skill.vaginal = 35, _HS.skill.oral = 35, _HS.skill.anal = 35, _HS.skill.combat = 1, _HS.clothes = "attractive lingerie", _HS.intelligence = 20, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.sexualFlaw = "hates penetration">>
 <<set $heroSlaves.push(_HS)>>
 /*fighter*/
 /*Tweaked face down, added 'hates penetration' and combat skill -BoneyM*/
@@ -141,13 +141,13 @@
 /*Changed eye color, added odd, tweaked vaginalSkill, added origin -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Joan", _HS.birthName = "Joan", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 42, _HS.physicalAge = 42, _HS.visualAge = 42, _HS.ovaryAge = 42, setHealth(_HS, 20), _HS.devotion = 15, _HS.height = 175, _HS.eye.origColor = "blue", _HS.origHColor = "brown", _HS.pubicHColor = "brown", _HS.hStyle = "long", _HS.boobs = 1000, _HS.boobsImplant = 600, _HS.butt = 4, _HS.face = 15, _HS.lips = 35, _HS.lipsImplant = 10, _HS.vagina = 2, _HS.vaginaLube = 1, _HS.anus = 2, _HS.ovaries = 1, _HS.anusTat = "tribal patterns", _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.intelligence = 30, _HS.attrXX = 80, _HS.attrXY = 80, _HS.fetishKnown = 1>>
+<<set _HS.slaveName = "Joan", _HS.birthName = "Joan", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 42, _HS.physicalAge = 42, _HS.visualAge = 42, _HS.ovaryAge = 42, setHealth(_HS, 20), _HS.devotion = 15, _HS.height = 175, _HS.eye.origColor = "blue", _HS.origHColor = "brown", _HS.pubicHColor = "brown", _HS.hStyle = "long", _HS.boobs = 1000, _HS.boobsImplant = 600, _HS.boobsImplantType = "normal", _HS.butt = 4, _HS.face = 15, _HS.lips = 35, _HS.lipsImplant = 10, _HS.vagina = 2, _HS.vaginaLube = 1, _HS.anus = 2, _HS.ovaries = 1, _HS.anusTat = "tribal patterns", _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.intelligence = 30, _HS.attrXX = 80, _HS.attrXY = 80, _HS.fetishKnown = 1>>
 <<set $heroSlaves.push(_HS)>>
 /*heterochromia*/
 /*Tweaked face upwards, changed eye color, changed health from 20 to 6 -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Belle", _HS.birthName = "Belle", _HS.origin = "Formerly used solely for titfucking, $he quickly became a nymphomaniac after experiencing 'proper' sex.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 19, _HS.physicalAge = 19, _HS.visualAge = 19, _HS.ovaryAge = 19, setHealth(_HS, 20), _HS.devotion = -75, _HS.height = 155, _HS.boobs = 1200, _HS.boobsImplant = 1000, _HS.butt = 4, _HS.buttImplant = 3, _HS.vagina = 3, _HS.vaginaLube = 1, _HS.anus = 3, _HS.ovaries = 1, _HS.skill.vaginal = 35, _HS.skill.oral = 35, _HS.skill.anal = 35, _HS.intelligence = -30, _HS.energy = 100, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.behavioralFlaw = "odd", _HS.custom.tattoo = "$His breasts are tattooed with $his implant history, showing repeated additions.", _HS.sexualFlaw = "crude">>
+<<set _HS.slaveName = "Belle", _HS.birthName = "Belle", _HS.origin = "Formerly used solely for titfucking, $he quickly became a nymphomaniac after experiencing 'proper' sex.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 19, _HS.physicalAge = 19, _HS.visualAge = 19, _HS.ovaryAge = 19, setHealth(_HS, 20), _HS.devotion = -75, _HS.height = 155, _HS.boobs = 1200, _HS.boobsImplant = 1000, _HS.boobsImplantType = "normal", _HS.butt = 4, _HS.buttImplant = 3, _HS.buttImplantType = "normal", _HS.vagina = 3, _HS.vaginaLube = 1, _HS.anus = 3, _HS.ovaries = 1, _HS.skill.vaginal = 35, _HS.skill.oral = 35, _HS.skill.anal = 35, _HS.intelligence = -30, _HS.energy = 100, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.behavioralFlaw = "odd", _HS.custom.tattoo = "$His breasts are tattooed with $his implant history, showing repeated additions.", _HS.sexualFlaw = "crude">>
 <<set $heroSlaves.push(_HS)>>
 /*rapey implant addict*/
 /*Is 'rapey' a quirk? Guess so. Added odd. Changed eye color, added nympho, added origin. -BoneyM*/
@@ -188,7 +188,7 @@
 /*Added entertain skill -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Charity", _HS.birthName = "Charity", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 29, _HS.physicalAge = 29, _HS.visualAge = 29, _HS.ovaryAge = 29, setHealth(_HS, 20), _HS.devotion = 90, _HS.race = "middle eastern", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.origSkin = "light olive", _HS.hLength = 80, _HS.hStyle = "very long", _HS.boobs = 650, _HS.boobsImplant = 600, _HS.nipplesPiercing = 1, _HS.butt = 5, _HS.lipsPiercing = 1, _HS.tonguePiercing = 1, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.entertainment = 35, _HS.intelligence = 20, _HS.intelligenceImplant = 30, _HS.attrXX = 80, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "$He has 'Charity' tattooed in cursive across the back of $his neck.">>
+<<set _HS.slaveName = "Charity", _HS.birthName = "Charity", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 29, _HS.physicalAge = 29, _HS.visualAge = 29, _HS.ovaryAge = 29, setHealth(_HS, 20), _HS.devotion = 90, _HS.race = "middle eastern", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.origSkin = "light olive", _HS.hLength = 80, _HS.hStyle = "very long", _HS.boobs = 650, _HS.boobsImplant = 600, _HS.boobsImplantType = "normal", _HS.nipplesPiercing = 1, _HS.butt = 5, _HS.lipsPiercing = 1, _HS.tonguePiercing = 1, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 1, _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.entertainment = 35, _HS.intelligence = 20, _HS.intelligenceImplant = 30, _HS.attrXX = 80, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "$He has 'Charity' tattooed in cursive across the back of $his neck.">>
 <<set $heroSlaves.push(_HS)>>
 /*Changed $him to Arabic, corrected tattoo syntax, added entertain skill -BoneyM*/
 
@@ -282,7 +282,7 @@
 /*Increased health, added origin, fixed customdesc syntax -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Kinsey", _HS.birthName = "Kinsey", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 27, _HS.physicalAge = 27, _HS.visualAge = 27, _HS.ovaryAge = 27, setHealth(_HS, 20), _HS.devotion = 10, _HS.height = 145, _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.hLength = 15, _HS.hStyle = "short, with the left side shaved", _HS.boobs = 500, _HS.butt = 4, _HS.buttImplant = 1, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 2, _HS.nosePiercing = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 15, _HS.skill.anal = 100, _HS.attrXX = 80, _HS.attrXY = 40, _HS.fetishKnown = 1>>
+<<set _HS.slaveName = "Kinsey", _HS.birthName = "Kinsey", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 27, _HS.physicalAge = 27, _HS.visualAge = 27, _HS.ovaryAge = 27, setHealth(_HS, 20), _HS.devotion = 10, _HS.height = 145, _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.hLength = 15, _HS.hStyle = "short, with the left side shaved", _HS.boobs = 500, _HS.butt = 4, _HS.buttImplant = 1, _HS.buttImplantType = "normal", _HS.vagina = 1, _HS.vaginaLube = 1, _HS.anus = 2, _HS.nosePiercing = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 15, _HS.skill.anal = 100, _HS.attrXX = 80, _HS.attrXY = 40, _HS.fetishKnown = 1>>
 <<set $heroSlaves.push(_HS)>>
 /*Added nose piercing, reduced height, changed fetish to bisexual -BoneyM*/
 
@@ -338,7 +338,7 @@
 /* set nipples to pierced, changed fetish from bisexual to submissive, increased anal skill, dunno how to handle all the techno-implants $his tits etc. have as they don't seem to be size-increasing-focused, lowered health */
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Asha", _HS.birthName = "Asha", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 23, _HS.physicalAge = 23, _HS.visualAge = 23, _HS.ovaryAge = 23, setHealth(_HS, 20), _HS.devotion = 60, _HS.weight = -20, _HS.nationality = "Russian", _HS.race = "white", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.origSkin = "white", _HS.hLength = 170, _HS.hStyle = "floor length", _HS.waist = -55, _HS.heels = 1, _HS.boobs = 1200, _HS.boobsImplant = 800, _HS.nipplesPiercing = 2, _HS.lactation = 1, _HS.lactationDuration = 2, _HS.butt = 6, _HS.buttImplant = 3, _HS.face = 15, _HS.faceImplant = 15, _HS.lips = 35, _HS.lipsImplant = 10, _HS.lipsPiercing = 1, _HS.tonguePiercing = 1, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.clitPiercing = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.earPiercing = 2, _HS.skill.vaginal = 35, _HS.skill.oral = 35, _HS.skill.anal = 15, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "$He has many girly tattoos.", _HS.custom.desc = "$He loves hair play.", _HS.navelPiercing = 1>>
+<<set _HS.slaveName = "Asha", _HS.birthName = "Asha", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 23, _HS.physicalAge = 23, _HS.visualAge = 23, _HS.ovaryAge = 23, setHealth(_HS, 20), _HS.devotion = 60, _HS.weight = -20, _HS.nationality = "Russian", _HS.race = "white", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.origSkin = "white", _HS.hLength = 170, _HS.hStyle = "neat", _HS.waist = -55, _HS.heels = 1, _HS.boobs = 1200, _HS.boobsImplant = 800, _HS.boobsImplantType = "fillable", _HS.nipplesPiercing = 2, _HS.lactation = 1, _HS.lactationDuration = 2, _HS.butt = 6, _HS.buttImplant = 3, _HS.buttImplantType = "fillable", _HS.face = 15, _HS.faceImplant = 15, _HS.lips = 35, _HS.lipsImplant = 10, _HS.lipsPiercing = 1, _HS.tonguePiercing = 1, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.clitPiercing = 1, _HS.anus = 1, _HS.ovaries = 1, _HS.earPiercing = 2, _HS.skill.vaginal = 35, _HS.skill.oral = 35, _HS.skill.anal = 15, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "$He has many girly tattoos.", _HS.custom.desc = "$He loves hair play.", _HS.navelPiercing = 1>>
 <<set $heroSlaves.push(_HS)>>
 /*Reduced weight, increased face and faceimplant, added piercings, corrected tattoo and customdesc syntax -BoneyM*/
 
@@ -442,7 +442,7 @@
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "'Asspussy' Miss Julie O", _HS.birthName = "Leah", _HS.origin = "$He was sentenced to enslavement as a punishment for fraud and theft.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 42, _HS.physicalAge = 42, _HS.visualAge = 42, _HS.ovaryAge = 42, setHealth(_HS, 70), _HS.devotion = 100, _HS.height = 155, _HS.markings = "none", _HS.eye.origColor = "blue", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.origSkin = "pale", _HS.hLength = 40, _HS.hStyle = "fashionable for a Free Cities 3rd Grade Teacher, up in a tight bun", _HS.pubicHStyle = "bushy", _HS.waist = -55, _HS.vagina = 2, _HS.vaginaLube = 1, _HS.clit = 1, _HS.clitPiercing = 3, _HS.clitSetting = "anal", _HS.boobs = 650, _HS.boobsImplant = 200, _HS.nipples = "huge", _HS.butt = 3, _HS.face = 15, _HS.faceImplant = 65, _HS.anus = 1, _HS.ovaries = 1, _HS.anusPiercing = 2, _HS.anusTat = "bleached", _HS.makeup = 2, _HS.nails = 2, _HS.earPiercing = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 15, _HS.clothes = "nice business attire", _HS.collar = "heavy gold", _HS.shoes = "heels", _HS.intelligence = -40, _HS.attrXY = 40, _HS.fetish = "buttslut", _HS.fetishKnown = 1, _HS.custom.desc = "$His pale skin is lightly freckled, and $his nipples are dark tan. $He used to be sexually repressed, and used to hate anal sex.">>
+<<set _HS.slaveName = "'Asspussy' Miss Julie O", _HS.birthName = "Leah", _HS.origin = "$He was sentenced to enslavement as a punishment for fraud and theft.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 42, _HS.physicalAge = 42, _HS.visualAge = 42, _HS.ovaryAge = 42, setHealth(_HS, 70), _HS.devotion = 100, _HS.height = 155, _HS.markings = "none", _HS.eye.origColor = "blue", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.origSkin = "pale", _HS.hLength = 40, _HS.hStyle = "fashionable for a Free Cities 3rd Grade Teacher, up in a tight bun", _HS.pubicHStyle = "bushy", _HS.waist = -55, _HS.vagina = 2, _HS.vaginaLube = 1, _HS.clit = 1, _HS.clitPiercing = 3, _HS.clitSetting = "anal", _HS.boobs = 650, _HS.boobsImplant = 200, _HS.boobsImplantType = "normal", _HS.nipples = "huge", _HS.butt = 3, _HS.face = 15, _HS.faceImplant = 65, _HS.anus = 1, _HS.ovaries = 1, _HS.anusPiercing = 2, _HS.anusTat = "bleached", _HS.makeup = 2, _HS.nails = 2, _HS.earPiercing = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 15, _HS.clothes = "nice business attire", _HS.collar = "heavy gold", _HS.shoes = "heels", _HS.intelligence = -40, _HS.attrXY = 40, _HS.fetish = "buttslut", _HS.fetishKnown = 1, _HS.custom.desc = "$His pale skin is lightly freckled, and $his nipples are dark tan. $He used to be sexually repressed, and used to hate anal sex.">>
 <<set $heroSlaves.push(_HS)>>
 /*huge nips*/
 
@@ -463,7 +463,7 @@
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "'Funbags' Young", _HS.birthName = "Young", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 23, _HS.physicalAge = 23, _HS.visualAge = 23, _HS.ovaryAge = 23, setHealth(_HS, -10), _HS.devotion = 90, _HS.height = 175, _HS.nationality = "Korean", _HS.race = "asian", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.origSkin = "pale", _HS.hLength = 10, _HS.waist = -55, _HS.boobs = 3550, _HS.boobsImplant = 3000, _HS.nipplesPiercing = 1, _HS.areolae = 3, _HS.boobsTat = "degradation", _HS.butt = 2, _HS.face = 15, _HS.lipsPiercing = 2, _HS.lipsTat = "degradation", _HS.tonguePiercing = 2, _HS.vaginaLube = 1, _HS.anus = 2, _HS.ovaries = 1, _HS.brand["chest"] = "SLUT", _HS.skill.oral = 100, _HS.aphrodisiacs = 1, _HS.addict = 22, _HS.collar = "shock punishment", _HS.shoes = "heels", _HS.attrXY = 40, _HS.fetish = "cumslut", _HS.fetishKnown = 1>>
+<<set _HS.slaveName = "'Funbags' Young", _HS.birthName = "Young", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 23, _HS.physicalAge = 23, _HS.visualAge = 23, _HS.ovaryAge = 23, setHealth(_HS, -10), _HS.devotion = 90, _HS.height = 175, _HS.nationality = "Korean", _HS.race = "asian", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.origSkin = "pale", _HS.hLength = 10, _HS.waist = -55, _HS.boobs = 3550, _HS.boobsImplant = 3000, _HS.boobsImplantType = "advanced fillable", _HS.nipplesPiercing = 1, _HS.areolae = 3, _HS.boobsTat = "degradation", _HS.butt = 2, _HS.face = 15, _HS.lipsPiercing = 2, _HS.lipsTat = "degradation", _HS.tonguePiercing = 2, _HS.vaginaLube = 1, _HS.anus = 2, _HS.ovaries = 1, _HS.brand["chest"] = "SLUT", _HS.skill.oral = 100, _HS.aphrodisiacs = 1, _HS.addict = 22, _HS.collar = "shock punishment", _HS.shoes = "heels", _HS.attrXY = 40, _HS.fetish = "cumslut", _HS.fetishKnown = 1>>
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
@@ -474,10 +474,6 @@
 <<set _HS.slaveName = "Miss Maree", _HS.birthName = "Tina", _HS.origin = "A former headmistress, $he was sentenced to slavery after $he was caught training $his students to be lesbian trophy slaves.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 42, _HS.physicalAge = 42, _HS.visualAge = 42, _HS.ovaryAge = 42, setHealth(_HS, 100, 0, 0, 0, 0), _HS.devotion = -50, _HS.weight = 20, _HS.height = 155, _HS.nationality = "American", _HS.eye.origColor = "green", _HS.origHColor = "red", _HS.pubicHColor = "red", _HS.origSkin = "pale", _HS.hStyle = "in a large bun", _HS.pubicHStyle = "in a strip", _HS.waist = -55, _HS.boobs = 1500, _HS.areolae = 3, _HS.boobsTat = "advertisements", _HS.butt = 6, _HS.face = 15, _HS.lips = 35, _HS.lipsTat = "permanent makeup", _HS.vaginaLube = 1, _HS.bellyAccessory = "a corset", _HS.ovaries = 1, _HS.anusTat = "flowers", _HS.earPiercing = 1, _HS.stampTat = "scenes", _HS.skill.vaginal = 15, _HS.skill.oral = 15, _HS.collar = "leather with cowbell", _HS.shoes = "heels", _HS.intelligence = 100, _HS.intelligenceImplant = 30, _HS.attrXX = 80, _HS.attrXY = 0, _HS.fetishKnown = 1, _HS.behavioralFlaw = "bitchy", _HS.sexualFlaw = "hates men", _HS.custom.desc = "$He absolutely detests men.", _HS.career = "a principal">>
 <<set $heroSlaves.push(_HS)>>
 
-<<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Caroline", _HS.birthName = "Carl", _HS.ID = _i++, _HS.prestige = 1, _HS.prestigeDesc = "$He was once a rising Free Cities politician who argued for compulsory female enslavement, but $he became an addict, fell into debt, and was subsequently enslaved.", _HS.birthWeek = random(0,51), _HS.genes = "XY", _HS.actualAge = 44, _HS.physicalAge = 44, _HS.visualAge = 44, _HS.ovaryAge = 44, setHealth(_HS, 60), _HS.devotion = 90, _HS.height = 145, _HS.heightImplant = -1, _HS.race = "white", _HS.nationality = "French", _HS.eye.origColor = "blue", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.override_Skin = 1, _HS.origSkin = "spray tanned", _HS.hLength = 70, _HS.hStyle = "ass-length", _HS.waist = -55, _HS.heels = 1, _HS.boobs = 1100, _HS.boobsImplant = 400, _HS.nipplesPiercing = 1, _HS.areolae = 1, _HS.butt = 4, _HS.buttImplant = 2, _HS.face = 55, _HS.faceImplant = 65, _HS.lips = 55, _HS.lipsImplant = 2, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.preg = -2, _HS.anus = 2, _HS.anusTat = "bleached", _HS.makeup = 3, _HS.nails = 1, _HS.earPiercing = 1, _HS.navelPiercing = 1, _HS.legsTat = "degradation", _HS.stampTat = "degradation", _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring = 15, _HS.skill.entertainment = 35, _HS.drugs = "breast injections", _HS.addict = 1, _HS.clothes = "slutty jewelry", _HS.collar = "tight steel", _HS.intelligence = -90, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetish = "humiliation", _HS.behavioralFlaw = "arrogant", _HS.custom.tattoo = "$He has a tattoo down $his left arm, which reads 'Once a tall, muscular, handsome man with a big dick and big balls.'", _HS.custom.desc = "Since becoming a slave $he has been turned into a little bimbo.">>
-<<set $heroSlaves.push(_HS)>>
-
 <<if $seePreg != 0>>
 	<<set _HS = App.Entity.SlaveState.makeSkeleton()>>
 	<<set _HS.slaveName = "'Milkmaid' Megan", _HS.birthName = "Megan", _HS.origin = "$He was sold to you from the public slave market, and was probably kidnapped or otherwise forced into slavery.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 34, _HS.physicalAge = 34, _HS.visualAge = 34, _HS.ovaryAge = 34, setHealth(_HS, 100, 0, 0, 0, 0), _HS.devotion = 100, _HS.nationality = "American", _HS.origSkin = "light", _HS.hStyle = "long", _HS.pubicHStyle = "bushy", _HS.waist = -55, _HS.boobs = 1350, _HS.lactation = 1, _HS.lactationDuration = 4, _HS.butt = 3, _HS.vagina = 2, _HS.vaginaLube = 1, _HS.vaginaPiercing = 1, _HS.preg = 27, _HS.pregType = 1, _HS.pregWeek = 27, _HS.pregKnown = 1, _HS.belly = 5000, _HS.bellyPreg = 5000, _HS.counter.births = 1, _HS.counter.birthsTotal = 1, _HS.anus = 3, _HS.ovaries = 1, _HS.brand["right buttock"] = "SLAVE", _HS.earPiercing = 1, _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring =100, _HS.skill.entertainment = 35, _HS.skill.combat = 0, _HS.collar = "heavy gold", _HS.shoes = "flats", _HS.energy = 100, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.face = 0, _HS.intelligence = 0>>
@@ -505,7 +501,7 @@
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "'Vampire' Elvira", _HS.birthName = "Elvira", _HS.career = "a service worker", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 20, _HS.physicalAge = 20, _HS.visualAge = 20, _HS.ovaryAge = 20, setHealth(_HS, 90, 0, 0, 0), _HS.devotion = 100, _HS.height = 145, _HS.nationality = "Swedish", _HS.race = "white", _HS.eye.origColor = "blue", _HS.origHColor = "red", _HS.pubicHColor = "red", _HS.override_Skin = 1, _HS.origSkin = "sun tanned", _HS.hLength = 85, _HS.hStyle = "ass-length", _HS.waist = -55, _HS.boobs = 650, _HS.boobsImplant = 200, _HS.nipplesPiercing = 2, _HS.butt = 3, _HS.buttImplant = 1, _HS.face = 55, _HS.faceImplant = 15, _HS.lips = 35, _HS.tonguePiercing = 1, _HS.vagina = 3, _HS.vaginaLube = 1, _HS.clitPiercing = 1, _HS.anus = 3, _HS.ovaries = 1, _HS.brand["right buttock"] = "your initials", _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring =100, _HS.skill.entertainment = 15, _HS.rules.living = "luxurious", _HS.clothes = "choosing her own clothes", _HS.collar = "heavy gold", _HS.intelligenceImplant = 30, _HS.energy = 100, _HS.attrXY = 40, _HS.fetishKnown = 1>>
+<<set _HS.slaveName = "'Vampire' Elvira", _HS.birthName = "Elvira", _HS.career = "a service worker", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 20, _HS.physicalAge = 20, _HS.visualAge = 20, _HS.ovaryAge = 20, setHealth(_HS, 90, 0, 0, 0), _HS.devotion = 100, _HS.height = 145, _HS.nationality = "Swedish", _HS.race = "white", _HS.eye.origColor = "blue", _HS.origHColor = "red", _HS.pubicHColor = "red", _HS.override_Skin = 1, _HS.origSkin = "sun tanned", _HS.hLength = 85, _HS.hStyle = "ass-length", _HS.waist = -55, _HS.boobs = 650, _HS.boobsImplant = 200, _HS.boobsImplantType = "normal", _HS.nipplesPiercing = 2, _HS.butt = 3, _HS.buttImplant = 1, _HS.buttImplantType = "normal", _HS.face = 55, _HS.faceImplant = 15, _HS.lips = 35, _HS.tonguePiercing = 1, _HS.vagina = 3, _HS.vaginaLube = 1, _HS.clitPiercing = 1, _HS.anus = 3, _HS.ovaries = 1, _HS.brand["right buttock"] = "your initials", _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring =100, _HS.skill.entertainment = 15, _HS.rules.living = "luxurious", _HS.clothes = "choosing her own clothes", _HS.collar = "heavy gold", _HS.intelligenceImplant = 30, _HS.energy = 100, _HS.attrXY = 40, _HS.fetishKnown = 1>>
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
@@ -543,7 +539,7 @@
 
 <<if $seePreg != 0>>
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "'Fucknugget' Pillow", _HS.birthName = "Anika", _HS.origin = "$He sold $himself into slavery to escape life on the streets.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 37, _HS.physicalAge = 37, _HS.visualAge = 37, _HS.ovaryAge = 37, setHealth(_HS, 80, 0, 0, 0), _HS.devotion = 100, _HS.weight = 40, _HS.origRace = "white", _HS.override_Race = 1, _HS.race = "latina", _HS.eye.origColor = "blue", _HS.origHColor = "red", _HS.pubicHColor = "red", _HS.hStyle = "long", _HS.waist = -100, _HS.boobs = 6260, _HS.boobsImplant = 4200, _HS.nipplesPiercing = 2, _HS.areolae = 3, _HS.boobsTat = "flowers", _HS.lactation = 2, _HS.lactationDuration = 2, _HS.butt = 12, _HS.buttImplant = 1, _HS.buttTat = "flowers", _HS.face = 55, _HS.faceImplant = 15, _HS.lips = 55, _HS.lipsImplant = 10, _HS.lipsPiercing = 2, _HS.lipsTat = "flowers", _HS.tonguePiercing = 2, _HS.vagina = 3, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.vaginaTat = "flowers", _HS.preg = 37, _HS.pregType = 1, _HS.pregWeek = 37, _HS.pregKnown = 1, _HS.belly = 13000, _HS.bellyPreg = 13000, _HS.counter.births = 2, _HS.counter.birthsTotal = 2, _HS.clitPiercing = 3, _HS.clitSetting = "boobs", _HS.anus = 2, _HS.ovaries = 1, _HS.anusPiercing = 2, _HS.anusTat = "flowers", _HS.makeup = 3, _HS.earPiercing = 2, _HS.nosePiercing = 2, _HS.eyebrowPiercing = 2, _HS.navelPiercing = 2, _HS.shouldersTat = "advertisements", _HS.stampTat = "flowers", _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring = 15, _HS.aphrodisiacs = 1, _HS.addict = 99, _HS.clothes = "restrictive latex", _HS.collar = "leather with cowbell", _HS.intelligence = -70, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetish = "boobs", _HS.fetishKnown = 1>>
+<<set _HS.slaveName = "'Fucknugget' Pillow", _HS.birthName = "Anika", _HS.origin = "$He sold $himself into slavery to escape life on the streets.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 37, _HS.physicalAge = 37, _HS.visualAge = 37, _HS.ovaryAge = 37, setHealth(_HS, 80, 0, 0, 0), _HS.devotion = 100, _HS.weight = 40, _HS.origRace = "white", _HS.override_Race = 1, _HS.race = "latina", _HS.eye.origColor = "blue", _HS.origHColor = "red", _HS.pubicHColor = "red", _HS.hStyle = "long", _HS.waist = -100, _HS.boobs = 6260, _HS.boobsImplant = 4200, _HS.boobsImplantType = "string", _HS.nipplesPiercing = 2, _HS.areolae = 3, _HS.boobsTat = "flowers", _HS.lactation = 2, _HS.lactationDuration = 2, _HS.butt = 12, _HS.buttImplant = 1, _HS.buttImplantType = "normal", _HS.buttTat = "flowers", _HS.face = 55, _HS.faceImplant = 15, _HS.lips = 55, _HS.lipsImplant = 10, _HS.lipsPiercing = 2, _HS.lipsTat = "flowers", _HS.tonguePiercing = 2, _HS.vagina = 3, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.vaginaTat = "flowers", _HS.preg = 37, _HS.pregType = 1, _HS.pregWeek = 37, _HS.pregKnown = 1, _HS.belly = 13000, _HS.bellyPreg = 13000, _HS.counter.births = 2, _HS.counter.birthsTotal = 2, _HS.clitPiercing = 3, _HS.clitSetting = "boobs", _HS.anus = 2, _HS.ovaries = 1, _HS.anusPiercing = 2, _HS.anusTat = "flowers", _HS.makeup = 3, _HS.earPiercing = 2, _HS.nosePiercing = 2, _HS.eyebrowPiercing = 2, _HS.navelPiercing = 2, _HS.shouldersTat = "advertisements", _HS.stampTat = "flowers", _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring = 15, _HS.aphrodisiacs = 1, _HS.addict = 99, _HS.clothes = "restrictive latex", _HS.collar = "leather with cowbell", _HS.intelligence = -70, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetish = "boobs", _HS.fetishKnown = 1>>
 <<run App.Utils.removeHeroLimbs(_HS, "all")>>
 <<set $heroSlaves.push(_HS)>>
 <</if>>
@@ -553,7 +549,7 @@
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "'Onahole' Lian the Liberty Whore", _HS.birthName = "Lian", _HS.origin = "$He is an enslaved member of an anti-slavery extremist group.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 27, _HS.physicalAge = 27, _HS.visualAge = 27, _HS.ovaryAge = 27, setHealth(_HS, -50, 10, 10), _HS.devotion = 100, _HS.muscles = 20, _HS.nationality = "Chinese", _HS.race = "asian", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.origSkin = "pale", _HS.hLength = 0, _HS.hStyle = "shaved bald", _HS.waist = -100, _HS.boobs = 2000, _HS.boobsImplant = 600, _HS.areolae = 2, _HS.butt = 8, _HS.face = 55, _HS.faceImplant = 65, _HS.vagina = 3, _HS.vaginaLube = 1, _HS.clit = 2, _HS.anus = 2, _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring =100, _HS.collar = "shock punishment", _HS.shoes = "flats", _HS.intelligence = 25, _HS.intelligenceImplant = 30, _HS.energy = 100, _HS.attrXY = 40, _HS.fetishKnown = 1>>
+<<set _HS.slaveName = "'Onahole' Lian the Liberty Whore", _HS.birthName = "Lian", _HS.origin = "$He is an enslaved member of an anti-slavery extremist group.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 27, _HS.physicalAge = 27, _HS.visualAge = 27, _HS.ovaryAge = 27, setHealth(_HS, -50, 10, 10), _HS.devotion = 100, _HS.muscles = 20, _HS.nationality = "Chinese", _HS.race = "asian", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.origSkin = "pale", _HS.hLength = 0, _HS.hStyle = "shaved bald", _HS.waist = -100, _HS.boobs = 2000, _HS.boobsImplant = 600, _HS.boobsImplantType = "normal", _HS.areolae = 2, _HS.butt = 8, _HS.face = 55, _HS.faceImplant = 65, _HS.vagina = 3, _HS.vaginaLube = 1, _HS.clit = 2, _HS.anus = 2, _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring =100, _HS.collar = "shock punishment", _HS.shoes = "flats", _HS.intelligence = 25, _HS.intelligenceImplant = 30, _HS.energy = 100, _HS.attrXY = 40, _HS.fetishKnown = 1>>
 <<run App.Utils.removeHeroLimbs(_HS, "all")>>
 <<set $heroSlaves.push(_HS)>>
 
@@ -569,13 +565,13 @@
 /*Added 'bitchy' quirk, reduced height and weight, added customdesc -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Cunt", _HS.birthName = "Cunt", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 19, _HS.physicalAge = 19, _HS.visualAge = 19, _HS.ovaryAge = 19, setHealth(_HS, -10), _HS.devotion = 10, _HS.race = "white", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.origSkin = "white", _HS.hLength = 30, _HS.hStyle = "shoulder length", _HS.heels = 1, _HS.boobs = 800, _HS.boobsImplant = 600, _HS.butt = 4, _HS.buttImplant = 2, _HS.vagina = 2, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.clitPiercing = 1, _HS.anus = 2, _HS.anusTat = "tribal patterns", _HS.nosePiercing = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 15, _HS.skill.anal = 35, _HS.intelligence = -70, _HS.attrXY = 40, _HS.attrKnown = 0, _HS.fetish = "mindbroken", _HS.fetishKnown = 1>>
+<<set _HS.slaveName = "Cunt", _HS.birthName = "Cunt", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 19, _HS.physicalAge = 19, _HS.visualAge = 19, _HS.ovaryAge = 19, setHealth(_HS, -10), _HS.devotion = 10, _HS.race = "white", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.origSkin = "white", _HS.hLength = 30, _HS.hStyle = "shoulder length", _HS.heels = 1, _HS.boobs = 800, _HS.boobsImplant = 600, _HS.boobsImplantType = "normal", _HS.butt = 4, _HS.buttImplant = 2, _HS.buttImplantType = "normal", _HS.vagina = 2, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.clitPiercing = 1, _HS.anus = 2, _HS.anusTat = "tribal patterns", _HS.nosePiercing = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 15, _HS.skill.anal = 35, _HS.intelligence = -70, _HS.attrXY = 40, _HS.attrKnown = 0, _HS.fetish = "mindbroken", _HS.fetishKnown = 1>>
 <<set $heroSlaves.push(_HS)>>
 /*mindbroken*/
 /*Tweaked smart piercing setting, corrected piercings -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Fleshlight", _HS.birthName = "Fleshlight", _HS.origin = "Nothing remains of the person $he originally was, either mentally or physically.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, setHealth(_HS, 20), _HS.devotion = 60, _HS.race = "white", _HS.eye.origColor = "blue", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.override_Skin = 1, _HS.origSkin = "spray tanned", _HS.hStyle = "long", _HS.waist = -55, _HS.boobs = 800, _HS.boobsImplant = 600, _HS.butt = 5, _HS.buttImplant = 2, _HS.lips = 55, _HS.lipsImplant = 2, _HS.lipsTat = "permanent makeup", _HS.vagina = 2, _HS.vaginaLube = 1, _HS.anus = 2, _HS.ovaries = 1, _HS.makeup = 3, _HS.nails = 3, _HS.skill.vaginal = 35, _HS.skill.oral = 35, _HS.skill.anal = 35, _HS.shoes = "heels", _HS.attrXY = 40, _HS.fetish = "mindbroken", _HS.fetishKnown = 1, _HS.custom.desc = "$He has many surgical scars and something seems off about $him.">>
+<<set _HS.slaveName = "Fleshlight", _HS.birthName = "Fleshlight", _HS.origin = "Nothing remains of the person $he originally was, either mentally or physically.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 21, _HS.physicalAge = 21, _HS.visualAge = 21, _HS.ovaryAge = 21, setHealth(_HS, 20), _HS.devotion = 60, _HS.race = "white", _HS.eye.origColor = "blue", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.override_Skin = 1, _HS.origSkin = "spray tanned", _HS.hStyle = "long", _HS.waist = -55, _HS.boobs = 800, _HS.boobsImplant = 600, _HS.boobsImplantType = "normal", _HS.butt = 5, _HS.buttImplant = 2, _HS.buttImplantType = "normal", _HS.lips = 55, _HS.lipsImplant = 2, _HS.lipsTat = "permanent makeup", _HS.vagina = 2, _HS.vaginaLube = 1, _HS.anus = 2, _HS.ovaries = 1, _HS.makeup = 3, _HS.nails = 3, _HS.skill.vaginal = 35, _HS.skill.oral = 35, _HS.skill.anal = 35, _HS.shoes = "heels", _HS.attrXY = 40, _HS.fetish = "mindbroken", _HS.fetishKnown = 1, _HS.custom.desc = "$He has many surgical scars and something seems off about $him.">>
 <<run App.Medicine.Modification.addScar(_HS, "left breast", "surgical", 2)>>
 <<run App.Medicine.Modification.addScar(_HS, "right breast", "surgical", 2)>>
 <<run App.Medicine.Modification.addScar(_HS, "left buttock", "surgical", 2)>>
diff --git a/src/npc/databases/ddSlavesDatabase.tw b/src/npc/databases/ddSlavesDatabase.tw
index 5bb5da0afd731b6267a52ce39352d1e20f430dbe..b80534089743ac7b223cdb67cee38a0746066096 100644
--- a/src/npc/databases/ddSlavesDatabase.tw
+++ b/src/npc/databases/ddSlavesDatabase.tw
@@ -18,7 +18,7 @@
 /*Added odd as a stand-in for the multiple personalities -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Lola", _HS.birthName = "Lola", _HS.genes = "XY", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 27, _HS.physicalAge = 27, _HS.visualAge = 27, _HS.ovaryAge = 27, setHealth(_HS, 20), _HS.devotion = 35, _HS.height = 175, _HS.origSkin = "white", _HS.hStyle = "long", _HS.boobs = 1000, _HS.boobsImplant = 600, _HS.butt = 4, _HS.buttImplant = 2, _HS.vagina = -1, _HS.preg = -2, _HS.dick = 3, _HS.anus = 3, _HS.prostate = 1, _HS.balls = 1, _HS.scrotum = 1, _HS.skill.oral = 15, _HS.skill.anal = 15, _HS.aphrodisiacs = 1, _HS.addict = 10, _HS.intelligence = -30, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetish = "submissive", _HS.fetishKnown = 1>>
+<<set _HS.slaveName = "Lola", _HS.birthName = "Lola", _HS.genes = "XY", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 27, _HS.physicalAge = 27, _HS.visualAge = 27, _HS.ovaryAge = 27, setHealth(_HS, 20), _HS.devotion = 35, _HS.height = 175, _HS.origSkin = "white", _HS.hStyle = "long", _HS.boobs = 1000, _HS.boobsImplant = 600, _HS.boobsImplantType = "normal", _HS.butt = 4, _HS.buttImplant = 2, _HS.buttImplantType = "normal", _HS.vagina = -1, _HS.preg = -2, _HS.dick = 3, _HS.anus = 3, _HS.prostate = 1, _HS.balls = 1, _HS.scrotum = 1, _HS.skill.oral = 15, _HS.skill.anal = 15, _HS.aphrodisiacs = 1, _HS.addict = 10, _HS.intelligence = -30, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetish = "submissive", _HS.fetishKnown = 1>>
 <<set $heroSlaves.push(_HS)>>
 /*Second slave to not need changes -BoneyM*/
 
@@ -28,13 +28,13 @@
 /*Added origin, removed anal virginity -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "'Mrs.' Maria", _HS.birthName = "Maria", _HS.genes = "XY", _HS.origin = "$He was once a successful drug lord, but was turned into $his current self after making too many enemies.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 28, _HS.physicalAge = 28, _HS.visualAge = 28, _HS.ovaryAge = 28, setHealth(_HS, 100, 0, 0, 0, 0), _HS.devotion = 75, _HS.muscles = 20, _HS.height = 175, _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.override_Skin = 1, _HS.origSkin = "spray tanned", _HS.hLength = 10, _HS.boobs = 1000, _HS.boobsImplant = 600, _HS.nipplesPiercing = 1, _HS.lips = 55, _HS.lipsImplant = 10, _HS.vagina = -1, _HS.preg = -2, _HS.clitPiercing = 3, _HS.clitSetting = "anal", _HS.dick = 5, _HS.anus = 2, _HS.prostate = 1, _HS.balls = 2, _HS.scrotum = 2, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.intelligence = 100, _HS.intelligenceImplant = 30, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.brand["left testicle"] = "a brand of a former master", _HS.stampTat = "$He has a fairly generic tramp stamp.", _HS.career = "a gang leader">>
+<<set _HS.slaveName = "'Mrs.' Maria", _HS.birthName = "Maria", _HS.genes = "XY", _HS.origin = "$He was once a successful drug lord, but was turned into $his current self after making too many enemies.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 28, _HS.physicalAge = 28, _HS.visualAge = 28, _HS.ovaryAge = 28, setHealth(_HS, 100, 0, 0, 0, 0), _HS.devotion = 75, _HS.muscles = 20, _HS.height = 175, _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.override_Skin = 1, _HS.origSkin = "spray tanned", _HS.hLength = 10, _HS.boobs = 1000, _HS.boobsImplant = 600, _HS.boobsImplantType = "normal", _HS.nipplesPiercing = 1, _HS.lips = 55, _HS.lipsImplant = 10, _HS.vagina = -1, _HS.preg = -2, _HS.clitPiercing = 3, _HS.clitSetting = "anal", _HS.dick = 5, _HS.anus = 2, _HS.prostate = 1, _HS.balls = 2, _HS.scrotum = 2, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.intelligence = 100, _HS.intelligenceImplant = 30, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.brand["left testicle"] = "a brand of a former master", _HS.stampTat = "$He has a fairly generic tramp stamp.", _HS.career = "a gang leader">>
 <<set $heroSlaves.push(_HS)>>
 /*branded nut*/
 /*Added brand to customtat, added origin -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Sugar", _HS.birthName = "Sugar", _HS.genes = "XY", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 24, _HS.physicalAge = 24, _HS.visualAge = 24, _HS.ovaryAge = 24, setHealth(_HS, 20), _HS.height = 175, _HS.eye.origColor = "blue", _HS.origHColor = "platinum blonde", _HS.origSkin = "pale", _HS.hStyle = "long", _HS.waist = -55, _HS.boobs = 1400, _HS.boobsImplant = 1200, _HS.butt = 5, _HS.buttImplant = 4, _HS.lips = 55, _HS.lipsImplant = 2, _HS.vagina = -1, _HS.preg = -2, _HS.dick = 5, _HS.anus = 1, _HS.prostate = 1, _HS.balls = 1, _HS.scrotum = 1, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.clothes = "slutty jewelry", _HS.intelligence = -90, _HS.intelligenceImplant = 30, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetish = "cumslut", _HS.fetishKnown = 1, _HS.custom.desc = "$He is as dumb as a bag of hammers.">>
+<<set _HS.slaveName = "Sugar", _HS.birthName = "Sugar", _HS.genes = "XY", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 24, _HS.physicalAge = 24, _HS.visualAge = 24, _HS.ovaryAge = 24, setHealth(_HS, 20), _HS.height = 175, _HS.eye.origColor = "blue", _HS.origHColor = "platinum blonde", _HS.origSkin = "pale", _HS.hStyle = "long", _HS.waist = -55, _HS.boobs = 1400, _HS.boobsImplant = 1200, _HS.boobsImplantType = "fillable", _HS.butt = 5, _HS.buttImplant = 4, _HS.buttImplantType = "fillable", _HS.lips = 55, _HS.lipsImplant = 2, _HS.vagina = -1, _HS.preg = -2, _HS.dick = 5, _HS.anus = 1, _HS.prostate = 1, _HS.balls = 1, _HS.scrotum = 1, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.clothes = "slutty jewelry", _HS.intelligence = -90, _HS.intelligenceImplant = 30, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetish = "cumslut", _HS.fetishKnown = 1, _HS.custom.desc = "$He is as dumb as a bag of hammers.">>
 <<set $heroSlaves.push(_HS)>>
 /*also buttslut*/
 /*Added customdesc, changed eye color -BoneyM*/
@@ -69,7 +69,7 @@
 /*Removed customdesc copied over from previous slave -BoneyM*/
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Kai", _HS.birthName = "Mordecai", _HS.genes = "XY", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 23, _HS.physicalAge = 23, _HS.visualAge = 23, _HS.ovaryAge = 23, setHealth(_HS, 20), _HS.devotion = 60, _HS.height = 191, _HS.nationality = "Russian", _HS.race = "white", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.origSkin = "white", _HS.hLength = 140, _HS.hStyle = "knee length", _HS.waist = -55, _HS.heels = 1, _HS.boobs = 1000, _HS.boobsImplant = 600, _HS.nipplesPiercing = 2, _HS.lactation = 1, _HS.lactationDuration = 2, _HS.butt = 5, _HS.buttImplant = 3, _HS.lips = 35, _HS.lipsImplant = 10, _HS.lipsPiercing = 1, _HS.vagina = 1, _HS.preg = -2, _HS.dick = 5, _HS.anus = 1, _HS.prostate = 1, _HS.balls = 2, _HS.scrotum = 2, _HS.skill.oral = 35, _HS.skill.anal = 15, _HS.clothes = "restrictive latex", _HS.intelligence = 25, _HS.intelligenceImplant = 30, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "$He has many girly tattoos.", _HS.custom.desc = "$He likes hair play.", _HS.navelPiercing = 1>>
+<<set _HS.slaveName = "Kai", _HS.birthName = "Mordecai", _HS.genes = "XY", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 23, _HS.physicalAge = 23, _HS.visualAge = 23, _HS.ovaryAge = 23, setHealth(_HS, 20), _HS.devotion = 60, _HS.height = 191, _HS.nationality = "Russian", _HS.race = "white", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.origSkin = "white", _HS.hLength = 140, _HS.hStyle = "knee length", _HS.waist = -55, _HS.heels = 1, _HS.boobs = 1000, _HS.boobsImplant = 600, _HS.boobsImplantType = "normal", _HS.nipplesPiercing = 2, _HS.lactation = 1, _HS.lactationDuration = 2, _HS.butt = 5, _HS.buttImplant = 3, _HS.buttImplantType = "normal", _HS.lips = 35, _HS.lipsImplant = 10, _HS.lipsPiercing = 1, _HS.vagina = 1, _HS.preg = -2, _HS.dick = 5, _HS.anus = 1, _HS.prostate = 1, _HS.balls = 2, _HS.scrotum = 2, _HS.skill.oral = 35, _HS.skill.anal = 15, _HS.clothes = "restrictive latex", _HS.intelligence = 25, _HS.intelligenceImplant = 30, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "$He has many girly tattoos.", _HS.custom.desc = "$He likes hair play.", _HS.navelPiercing = 1>>
 <<set $heroSlaves.push(_HS)>>
 /*Increased height and balls size -BoneyM*/
 
@@ -116,7 +116,7 @@
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Mistress Izzy", _HS.birthName = "Isabella", _HS.genes = "XY", _HS.ID = _i++, _HS.birthWeek = random(0,51), setHealth(_HS, 70), _HS.devotion = 100, _HS.eye.origColor = "black", _HS.origHColor = "sparkling and shiny golden red", _HS.pubicHColor = "blonde", _HS.override_Skin = 1, _HS.origSkin = "sun tanned", _HS.hLength = 60, _HS.hStyle = "in thick long heavy braids", _HS.waist = -100, _HS.boobs = 9200, _HS.boobsImplant = 6000, _HS.nipplesPiercing = 2, _HS.boobsTat = "bovine patterns", _HS.lactation = 2, _HS.lactationDuration = 2, _HS.counter.milk = 3010, _HS.butt = 8, _HS.buttImplant = 1, _HS.buttTat = "bovine patterns", _HS.face = 55, _HS.faceImplant = 65, _HS.lips = 55, _HS.lipsImplant = 2, _HS.lipsPiercing = 2, _HS.lipsTat = "bovine patterns", _HS.tonguePiercing = 2, _HS.vagina = 2, _HS.vaginaPiercing = 2, _HS.vaginaTat = "bovine patterns", _HS.preg = -2, _HS.clitPiercing = 3, _HS.anus = 2, _HS.dick = 5, _HS.prostate = 1, _HS.balls = 3, _HS.scrotum = 2, _HS.anusPiercing = 2, _HS.anusTat = "bovine patterns", _HS.makeup = 2, _HS.nails = 2, _HS.brand["right buttock"] = "SLUT",_HS.earPiercing = 2, _HS.nosePiercing = 2, _HS.eyebrowPiercing = 2, _HS.navelPiercing = 2, _HS.shouldersTat = "bovine patterns", _HS.armsTat = "bovine patterns", _HS.legsTat = "bovine patterns", _HS.stampTat = "bovine patterns", _HS.skill.vaginal = 35, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring = 100, _HS.skill.entertainment = 35, _HS.collar = "leather with cowbell", _HS.shoes = "heels", _HS.intelligence = 20, _HS.energy = 100, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "$He has tattoos of teasing, enticing messages begging others to come taste $his addictive milk.", _HS.custom.desc = "$His musky milky aura drives men and women around $him giggly and dumb with lust.", _HS.horn = "cow horns">>
+<<set _HS.slaveName = "Mistress Izzy", _HS.birthName = "Isabella", _HS.genes = "XY", _HS.ID = _i++, _HS.birthWeek = random(0,51), setHealth(_HS, 70), _HS.devotion = 100, _HS.eye.origColor = "black", _HS.origHColor = "sparkling and shiny golden red", _HS.pubicHColor = "blonde", _HS.override_Skin = 1, _HS.origSkin = "sun tanned", _HS.hLength = 60, _HS.hStyle = "in thick long heavy braids", _HS.waist = -100, _HS.boobs = 9200, _HS.boobsImplant = 6000, _HS.boobsImplantType = "advanced fillable", _HS.nipplesPiercing = 2, _HS.boobsTat = "bovine patterns", _HS.lactation = 2, _HS.lactationDuration = 2, _HS.counter.milk = 3010, _HS.butt = 8, _HS.buttImplant = 1, _HS.buttImplantType = "normal", _HS.buttTat = "bovine patterns", _HS.face = 55, _HS.faceImplant = 65, _HS.lips = 55, _HS.lipsImplant = 2, _HS.lipsPiercing = 2, _HS.lipsTat = "bovine patterns", _HS.tonguePiercing = 2, _HS.vagina = 2, _HS.vaginaPiercing = 2, _HS.vaginaTat = "bovine patterns", _HS.preg = -2, _HS.clitPiercing = 3, _HS.anus = 2, _HS.dick = 5, _HS.prostate = 1, _HS.balls = 3, _HS.scrotum = 2, _HS.anusPiercing = 2, _HS.anusTat = "bovine patterns", _HS.makeup = 2, _HS.nails = 2, _HS.brand["right buttock"] = "SLUT",_HS.earPiercing = 2, _HS.nosePiercing = 2, _HS.eyebrowPiercing = 2, _HS.navelPiercing = 2, _HS.shouldersTat = "bovine patterns", _HS.armsTat = "bovine patterns", _HS.legsTat = "bovine patterns", _HS.stampTat = "bovine patterns", _HS.skill.vaginal = 35, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring = 100, _HS.skill.entertainment = 35, _HS.collar = "leather with cowbell", _HS.shoes = "heels", _HS.intelligence = 20, _HS.energy = 100, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.custom.tattoo = "$He has tattoos of teasing, enticing messages begging others to come taste $his addictive milk.", _HS.custom.desc = "$His musky milky aura drives men and women around $him giggly and dumb with lust.", _HS.horn = "cow horns">>
 <<set $heroSlaves.push(_HS)>>
 /*Dropped desc = $He has two cute horns protruding from $his forehead. A few addicted milkslaves of $his own tag along behind $him. */
 
@@ -133,11 +133,11 @@
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "'Dragon Goddess' Chae-won", _HS.genes = "XY", _HS.birthName = "Chae-won", _HS.origin = "$He is a former Kkangpae gang member who was sold into slavery by $his former boss as a punishment.", _HS.ID = _i++, _HS.prestige = 1, _HS.prestigeDesc = "$He is a famed Free Cities whore, and commands top prices.", _HS.birthWeek = random(0,51), _HS.actualAge = 26, _HS.physicalAge = 26, _HS.visualAge = 26, _HS.ovaryAge = 26, setHealth(_HS, 50), _HS.devotion = 31, _HS.muscles = 50, _HS.height = 155, _HS.nationality = "Korean", _HS.race = "asian", _HS.override_H_Color = 1, _HS.origHColor = "black", _HS.hColor = "onyx black and rainbow-streaked", _HS.override_Skin = 1, _HS.origSkin = "sun tanned", _HS.hLength = 60, _HS.hStyle = "styled in high chignon resembling a traditional Japanese geisha's Shimada hairstyle, with plenty of decorated hairpins", _HS.waist = -55, _HS.boobs = 6000, _HS.boobsImplant = 3000, _HS.nipples = "huge", _HS.butt = 4.5, _HS.face = 55, _HS.faceImplant = 15, _HS.lips = 35, _HS.lipsTat = "permanent makeup", _HS.tonguePiercing = 1, _HS.vagina = -1, _HS.preg = -2, _HS.anus = 1, _HS.dick = 5, _HS.prostate = 1, _HS.balls = 4, _HS.scrotum = 4, _HS.anusTat = "bleached", _HS.nails = 3, _HS.earPiercing = 1, _HS.legsTat = "flowers", _HS.stampTat = "flowers", _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring = 100, _HS.clothes = "a slave gown", _HS.collar = "pretty jewelry", _HS.shoes = "heels", _HS.intelligence = -3, _HS.intelligenceImplant = 30, _HS.energy = 100, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.behavioralFlaw = "arrogant", _HS.custom.tattoo = "$He has two neon-blue butterflies tattooed on $his right temple and one more right above $his right eyebrow; a bright blue, luminescent tattoo of an oriental dragon is intertwining with floral tattoos on $his right leg.", _HS.custom.desc = "$He is almost never seen without $his long, thin, lavishly decorated smoking pipe, either holding it in hand, or carrying it tucked in $his chignon.", _HS.career = "a gang member">>
+<<set _HS.slaveName = "'Dragon Goddess' Chae-won", _HS.genes = "XY", _HS.birthName = "Chae-won", _HS.origin = "$He is a former Kkangpae gang member who was sold into slavery by $his former boss as a punishment.", _HS.ID = _i++, _HS.prestige = 1, _HS.prestigeDesc = "$He is a famed Free Cities whore, and commands top prices.", _HS.birthWeek = random(0,51), _HS.actualAge = 26, _HS.physicalAge = 26, _HS.visualAge = 26, _HS.ovaryAge = 26, setHealth(_HS, 50), _HS.devotion = 31, _HS.muscles = 50, _HS.height = 155, _HS.nationality = "Korean", _HS.race = "asian", _HS.override_H_Color = 1, _HS.origHColor = "black", _HS.hColor = "onyx black and rainbow-streaked", _HS.override_Skin = 1, _HS.origSkin = "sun tanned", _HS.hLength = 60, _HS.hStyle = "styled in high chignon resembling a traditional Japanese geisha's Shimada hairstyle, with plenty of decorated hairpins", _HS.waist = -55, _HS.boobs = 6000, _HS.boobsImplant = 3000, _HS.boobsImplantType = "advanced fillable", _HS.nipples = "huge", _HS.butt = 4.5, _HS.face = 55, _HS.faceImplant = 15, _HS.lips = 35, _HS.lipsTat = "permanent makeup", _HS.tonguePiercing = 1, _HS.vagina = -1, _HS.preg = -2, _HS.anus = 1, _HS.dick = 5, _HS.prostate = 1, _HS.balls = 4, _HS.scrotum = 4, _HS.anusTat = "bleached", _HS.nails = 3, _HS.earPiercing = 1, _HS.legsTat = "flowers", _HS.stampTat = "flowers", _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring = 100, _HS.clothes = "a slave gown", _HS.collar = "pretty jewelry", _HS.shoes = "heels", _HS.intelligence = -3, _HS.intelligenceImplant = 30, _HS.energy = 100, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.behavioralFlaw = "arrogant", _HS.custom.tattoo = "$He has two neon-blue butterflies tattooed on $his right temple and one more right above $his right eyebrow; a bright blue, luminescent tattoo of an oriental dragon is intertwining with floral tattoos on $his right leg.", _HS.custom.desc = "$He is almost never seen without $his long, thin, lavishly decorated smoking pipe, either holding it in hand, or carrying it tucked in $his chignon.", _HS.career = "a gang member">>
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Bailey", _HS.birthName = "Bryan", _HS.genes = "XY", _HS.origin = "$He was sold to your predecessor by $his husband to pay off his extreme debt.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 22, _HS.physicalAge = 22, _HS.visualAge = 22, _HS.ovaryAge = 22, setHealth(_HS, 50), _HS.devotion = -50, _HS.nationality = "American", _HS.race = "white", _HS.eye.origColor = "blue", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.origSkin = "fair", _HS.hLength = 50, _HS.hStyle = "chest-length, styled up in schoolgirl pigtails with bangs", _HS.boobs = 700, _HS.boobsImplant = 400, _HS.butt = 2, _HS.lips = 35, _HS.vagina = -1, _HS.preg = -2, _HS.anus = 1, _HS.dick = 2, _HS.prostate = 1, _HS.balls = 2, _HS.scrotum = 2, _HS.makeup = 1, _HS.nails = 1, _HS.earPiercing = 1, _HS.skill.oral = 15, _HS.clothes = "a slutty maid outfit", _HS.shoes = "heels", _HS.intelligenceImplant = 30, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetish = "submissive", _HS.fetishKnown = 1>>
+<<set _HS.slaveName = "Bailey", _HS.birthName = "Bryan", _HS.genes = "XY", _HS.origin = "$He was sold to your predecessor by $his husband to pay off his extreme debt.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 22, _HS.physicalAge = 22, _HS.visualAge = 22, _HS.ovaryAge = 22, setHealth(_HS, 50), _HS.devotion = -50, _HS.nationality = "American", _HS.race = "white", _HS.eye.origColor = "blue", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.origSkin = "fair", _HS.hLength = 50, _HS.hStyle = "chest-length, styled up in schoolgirl pigtails with bangs", _HS.boobs = 700, _HS.boobsImplant = 400, _HS.boobsImplantType = "normal", _HS.butt = 2, _HS.lips = 35, _HS.vagina = -1, _HS.preg = -2, _HS.anus = 1, _HS.dick = 2, _HS.prostate = 1, _HS.balls = 2, _HS.scrotum = 2, _HS.makeup = 1, _HS.nails = 1, _HS.earPiercing = 1, _HS.skill.oral = 15, _HS.clothes = "a slutty maid outfit", _HS.shoes = "heels", _HS.intelligenceImplant = 30, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetish = "submissive", _HS.fetishKnown = 1>>
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
@@ -145,7 +145,7 @@
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "'Demon Whore' Yuzuki", _HS.birthName = "Yuri", _HS.genes = "XY", _HS.origin = "$His origins are unknown, but rumor has it that $he is a literal demon.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 19, _HS.physicalAge = 19, _HS.visualAge = 19, _HS.ovaryAge = 19, setHealth(_HS, 60), _HS.devotion = 90.4, _HS.muscles = 20, _HS.height = 190, _HS.nationality = "Japanese", _HS.race = "asian", _HS.eye.origColor = "green", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.origSkin = "pale", _HS.hStyle = "long", _HS.pubicHStyle = "in a strip", _HS.waist = -100, _HS.boobs = 10000, _HS.boobsImplant = 4800, _HS.areolae = 2, _HS.lactation = 2, _HS.lactationDuration = 2, _HS.butt = 9, _HS.face = 55, _HS.faceImplant = 65, _HS.lips = 35, _HS.vagina = 1, _HS.clitPiercing = 3, _HS.clitSetting = "humiliation", _HS.anus = 1, _HS.dick = 5, _HS.prostate = 1, _HS.balls = 5, _HS.scrotum = 4, _HS.ovaries = 1, _HS.makeup = 2, _HS.nails = 2, _HS.skill.vaginal = 15, _HS.skill.oral = 100, _HS.skill.anal = 15, _HS.skill.whoring = 15, _HS.skill.entertainment = 15, _HS.skill.combat = 1, _HS.clothes = "a string bikini", _HS.collar = "pretty jewelry", _HS.shoes = "boots", _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetish = "humiliation", _HS.fetishKnown = 1>>
+<<set _HS.slaveName = "'Demon Whore' Yuzuki", _HS.birthName = "Yuri", _HS.genes = "XY", _HS.origin = "$His origins are unknown, but rumor has it that $he is a literal demon.", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 19, _HS.physicalAge = 19, _HS.visualAge = 19, _HS.ovaryAge = 19, setHealth(_HS, 60), _HS.devotion = 90.4, _HS.muscles = 20, _HS.height = 190, _HS.nationality = "Japanese", _HS.race = "asian", _HS.eye.origColor = "green", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.origSkin = "pale", _HS.hStyle = "long", _HS.pubicHStyle = "in a strip", _HS.waist = -100, _HS.boobs = 10000, _HS.boobsImplant = 4800, _HS.boobsImplantType = "advanced fillable", _HS.areolae = 2, _HS.lactation = 2, _HS.lactationDuration = 2, _HS.butt = 9, _HS.face = 55, _HS.faceImplant = 65, _HS.lips = 35, _HS.vagina = 1, _HS.clitPiercing = 3, _HS.clitSetting = "humiliation", _HS.anus = 1, _HS.dick = 5, _HS.prostate = 1, _HS.balls = 5, _HS.scrotum = 4, _HS.ovaries = 1, _HS.makeup = 2, _HS.nails = 2, _HS.skill.vaginal = 15, _HS.skill.oral = 100, _HS.skill.anal = 15, _HS.skill.whoring = 15, _HS.skill.entertainment = 15, _HS.skill.combat = 1, _HS.clothes = "a string bikini", _HS.collar = "pretty jewelry", _HS.shoes = "boots", _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetish = "humiliation", _HS.fetishKnown = 1>>
 <<run setEyeColorFull(_HS, "", "demonic", "", "both")>>
 <<set $heroSlaves.push(_HS)>>
 
@@ -153,6 +153,10 @@
 <<set _HS.slaveName = "Fuckmeat", _HS.birthName = "Alva", _HS.genes = "XY", _HS.ID = _i++, _HS.prestige = 1, _HS.prestigeDesc = "$He is a famed Free Cities slut, and can please anyone.", _HS.birthWeek = random(0,51), _HS.actualAge = 19, _HS.physicalAge = 19, _HS.visualAge = 19, _HS.ovaryAge = 19, setHealth(_HS, 100, 0, 0, 0, 0), _HS.devotion = 100, _HS.muscles = 20, _HS.height = 145, _HS.race = "white", _HS.nationality = "Swedish", _HS.eye.origColor = "blue", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.origSkin = "pale", _HS.hLength = 0, _HS.hStyle = "shaved bald", _HS.pubicHStyle = "bushy", _HS.boobs = 1700, _HS.boobsTat = "rude words", _HS.butt = 8, _HS.buttTat = "rude words", _HS.face = 55, _HS.lips = 35, _HS.vagina = -1, _HS.vaginaTat = "rude words", _HS.preg = -2, _HS.anus = 3, _HS.dick = 2, _HS.dickTat = "rude words", _HS.prostate = 1, _HS.balls = 1, _HS.scrotum = 2, _HS.anusTat = "rude words", _HS.makeup = 3, _HS.nails = 3, _HS.brand["cheek"] = "a penis symbol",_HS.shouldersTat = "rude words", _HS.armsTat = "rude words", _HS.legsTat = "rude words", _HS.stampTat = "rude words", _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring = 100, _HS.skill.entertainment = 100, _HS.skill.combat = 1, _HS.diet = "muscle building", _HS.clothes = "harem gauze", _HS.collar = "heavy gold", _HS.shoes = "boots", _HS.energy = 100, _HS.attrXX = 40, _HS.attrXY = 40, _HS.fetishStrength = 0, _HS.fetishKnown = 1, _HS.custom.tattoo = "$He has a swastika tattooed on $his ballsack.">>
 <<set $heroSlaves.push(_HS)>>
 
+<<set _HS = App.Entity.SlaveState.makeSkeleton()>>
+<<set _HS.slaveName = "Caroline", _HS.birthName = "Carl", _HS.ID = _i++, _HS.prestige = 1, _HS.prestigeDesc = "$He was once a rising Free Cities politician who argued for compulsory female enslavement, but $he became an addict, fell into debt, and was subsequently enslaved.", _HS.birthWeek = random(0,51), _HS.genes = "XY", _HS.actualAge = 44, _HS.physicalAge = 44, _HS.visualAge = 44, _HS.ovaryAge = 44, setHealth(_HS, 60), _HS.devotion = 90, _HS.height = 145, _HS.heightImplant = -1, _HS.race = "white", _HS.nationality = "French", _HS.eye.origColor = "blue", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.override_Skin = 1, _HS.origSkin = "spray tanned", _HS.hLength = 70, _HS.hStyle = "ass-length", _HS.waist = -55, _HS.heels = 1, _HS.boobs = 1100, _HS.boobsImplant = 400, _HS.boobsImplantType = "normal", _HS.nipplesPiercing = 1, _HS.areolae = 1, _HS.butt = 4, _HS.buttImplant = 2, _HS.buttImplantType = "normal", _HS.face = 55, _HS.faceImplant = 65, _HS.lips = 55, _HS.lipsImplant = 2, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.preg = -2, _HS.anus = 2, _HS.anusTat = "bleached", _HS.makeup = 3, _HS.nails = 1, _HS.earPiercing = 1, _HS.navelPiercing = 1, _HS.legsTat = "degradation", _HS.stampTat = "degradation", _HS.skill.vaginal = 100, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring = 15, _HS.skill.entertainment = 35, _HS.drugs = "breast injections", _HS.addict = 1, _HS.clothes = "slutty jewelry", _HS.collar = "tight steel", _HS.intelligence = -90, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetish = "humiliation", _HS.behavioralFlaw = "arrogant", _HS.custom.tattoo = "$He has a tattoo down $his left arm, which reads 'Once a tall, muscular, handsome man with a big dick and big balls.'", _HS.custom.desc = "Since becoming a slave $he has been turned into a little bimbo.">>
+<<set $heroSlaves.push(_HS)>>
+
 <<if $seeExtreme == 1>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
diff --git a/src/npc/databases/dfSlavesDatabase.tw b/src/npc/databases/dfSlavesDatabase.tw
index cbd3291ad2e774fd2b09c3838b6c1538f4b35a94..4e1cf89141dde26486cf9d86e062fd2bffc19ab6 100644
--- a/src/npc/databases/dfSlavesDatabase.tw
+++ b/src/npc/databases/dfSlavesDatabase.tw
@@ -7,17 +7,17 @@
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Strawberry", _HS.birthName = "Strawberry", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 30, _HS.physicalAge = 30, _HS.visualAge = 30, _HS.ovaryAge = 30, setHealth(_HS, 20), _HS.devotion = 40, _HS.height = 175, _HS.eye.origColor = "dark brown", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.override_Skin = 1, _HS.origSkin = "sun tanned", _HS.hStyle = "long", _HS.pubicHStyle = "waxed", _HS.waist = -55, _HS.boobs = 1000, _HS.boobsImplant = 400, _HS.nipplesPiercing = 1, _HS.butt = 5, _HS.buttImplant = 2, _HS.lips = 35, _HS.lipsImplant = 10, _HS.vagina = 2, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.preg = -2, _HS.anus = 2, _HS.ovaries = 1, _HS.skill.vaginal = 35, _HS.skill.oral = 35, _HS.skill.anal = 35, _HS.attrXY = 40, _HS.fetish = "humiliation", _HS.fetishKnown = 1, _HS.lipsTat = "Strawberries are tattooed on $his left cheek.", _HS.buttTat = "Strawberries are tattooed on $his right buttock.", _HS.clitPiercing = 2, _HS.counter.birthsTotal = 2>>
+<<set _HS.slaveName = "Strawberry", _HS.birthName = "Strawberry", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 30, _HS.physicalAge = 30, _HS.visualAge = 30, _HS.ovaryAge = 30, setHealth(_HS, 20), _HS.devotion = 40, _HS.height = 175, _HS.eye.origColor = "dark brown", _HS.origHColor = "blonde", _HS.pubicHColor = "blonde", _HS.override_Skin = 1, _HS.origSkin = "sun tanned", _HS.hStyle = "long", _HS.pubicHStyle = "waxed", _HS.waist = -55, _HS.boobs = 1000, _HS.boobsImplant = 400, _HS.boobsImplantType = "normal", _HS.nipplesPiercing = 1, _HS.butt = 5, _HS.buttImplant = 2, _HS.buttImplantType = "normal", _HS.lips = 35, _HS.lipsImplant = 10, _HS.vagina = 2, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.preg = -2, _HS.anus = 2, _HS.ovaries = 1, _HS.skill.vaginal = 35, _HS.skill.oral = 35, _HS.skill.anal = 35, _HS.attrXY = 40, _HS.fetish = "humiliation", _HS.fetishKnown = 1, _HS.lipsTat = "Strawberries are tattooed on $his left cheek.", _HS.buttTat = "Strawberries are tattooed on $his right buttock.", _HS.clitPiercing = 2, _HS.counter.birthsTotal = 2>>
 /*vibe nips, muscles*/
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Melon", _HS.birthName = "Melon", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 23, _HS.physicalAge = 23, _HS.visualAge = 23, _HS.ovaryAge = 23, setHealth(_HS, 20), _HS.devotion = 50, _HS.height = 175, _HS.eye.origColor = "blue", _HS.origHColor = "red", _HS.pubicHColor = "red", _HS.override_Skin = 1, _HS.origSkin = "sun tanned", _HS.hLength = 10, _HS.hStyle = "short", _HS.pubicHStyle = "waxed", _HS.boobs = 1800, _HS.boobsImplant = 800, _HS.nipplesPiercing = 1, _HS.butt = 4, _HS.lips = 35, _HS.lipsImplant = 10, _HS.vagina = 2, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.preg = -2, _HS.anus = 2, _HS.ovaries = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 100, _HS.skill.anal = 15, _HS.attrXY = 40, _HS.fetish = "submissive", _HS.fetishKnown = 1, _HS.lipsTat = "Watermelons are tattooed on $his face.", _HS.buttTat = "Watermelons are tattooed on $his buttocks.", _HS.teeth = "removable", _HS.clitPiercing = 2, _HS.lipsPiercing = 2, _HS.counter.birthsTotal = 1>>
+<<set _HS.slaveName = "Melon", _HS.birthName = "Melon", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 23, _HS.physicalAge = 23, _HS.visualAge = 23, _HS.ovaryAge = 23, setHealth(_HS, 20), _HS.devotion = 50, _HS.height = 175, _HS.eye.origColor = "blue", _HS.origHColor = "red", _HS.pubicHColor = "red", _HS.override_Skin = 1, _HS.origSkin = "sun tanned", _HS.hLength = 10, _HS.hStyle = "short", _HS.pubicHStyle = "waxed", _HS.boobs = 1800, _HS.boobsImplant = 800, _HS.boobsImplantType = "fillable", _HS.nipplesPiercing = 1, _HS.butt = 4, _HS.lips = 35, _HS.lipsImplant = 10, _HS.vagina = 2, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.preg = -2, _HS.anus = 2, _HS.ovaries = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 100, _HS.skill.anal = 15, _HS.attrXY = 40, _HS.fetish = "submissive", _HS.fetishKnown = 1, _HS.lipsTat = "Watermelons are tattooed on $his face.", _HS.buttTat = "Watermelons are tattooed on $his buttocks.", _HS.teeth = "removable", _HS.clitPiercing = 2, _HS.lipsPiercing = 2, _HS.counter.birthsTotal = 1>>
 /*vibe nips, saliva implant*/
 <<set $heroSlaves.push(_HS)>>
 
 <<set _HS = App.Entity.SlaveState.makeSkeleton()>>
-<<set _HS.slaveName = "Carambola", _HS.birthName = "Carambola", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 25, _HS.physicalAge = 25, _HS.visualAge = 25, _HS.ovaryAge = 25, setHealth(_HS, 20), _HS.devotion = 90, _HS.height = 175, _HS.eye.origColor = "light green", _HS.origHColor = "dark blonde", _HS.pubicHColor = "dark blonde", _HS.override_Skin = 1, _HS.origSkin = "sun tanned", _HS.hLength = 60, _HS.hStyle = "curly and long, and in pigtails", _HS.pubicHStyle = "waxed", _HS.boobs = 650, _HS.nipplesPiercing = 1, _HS.butt = 8, _HS.buttImplant = 4, _HS.lips = 35, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.preg = -2, _HS.anus = 3, _HS.ovaries = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 15, _HS.skill.anal = 100, _HS.attrXY = 40, _HS.fetish = "buttslut", _HS.fetishKnown = 1, _HS.lipsTat = "Carambolas — starfruits — are tattooed on $his face.", _HS.buttTat = "Carambolas — starfruits — are tattooed on $his buttocks.", _HS.clitPiercing = 2, _HS.tonguePiercing = 1, _HS.clothes = "no clothing", _HS.collar = "bell collar", _HS.heels = 1>>
+<<set _HS.slaveName = "Carambola", _HS.birthName = "Carambola", _HS.ID = _i++, _HS.birthWeek = random(0,51), _HS.actualAge = 25, _HS.physicalAge = 25, _HS.visualAge = 25, _HS.ovaryAge = 25, setHealth(_HS, 20), _HS.devotion = 90, _HS.height = 175, _HS.eye.origColor = "light green", _HS.origHColor = "dark blonde", _HS.pubicHColor = "dark blonde", _HS.override_Skin = 1, _HS.origSkin = "sun tanned", _HS.hLength = 60, _HS.hStyle = "curly and long, and in pigtails", _HS.pubicHStyle = "waxed", _HS.boobs = 650, _HS.nipplesPiercing = 1, _HS.butt = 8, _HS.buttImplant = 4, _HS.buttImplantType = "fillable", _HS.lips = 35, _HS.vagina = 1, _HS.vaginaLube = 1, _HS.vaginaPiercing = 2, _HS.preg = -2, _HS.anus = 3, _HS.ovaries = 1, _HS.skill.vaginal = 15, _HS.skill.oral = 15, _HS.skill.anal = 100, _HS.attrXY = 40, _HS.fetish = "buttslut", _HS.fetishKnown = 1, _HS.lipsTat = "Carambolas — starfruits — are tattooed on $his face.", _HS.buttTat = "Carambolas — starfruits — are tattooed on $his buttocks.", _HS.clitPiercing = 2, _HS.tonguePiercing = 1, _HS.clothes = "no clothing", _HS.collar = "bell collar", _HS.heels = 1>>
 /*vibe nips, saliva implant lube*/
 <<set $heroSlaves.push(_HS)>>
 
diff --git a/src/npc/rgASDump.tw b/src/npc/rgASDump.tw
index fa63877df97b3da88466b20eb3226f59231d9398..bfd0c1e6fec6480d94077447e7194c0cae827855 100644
--- a/src/npc/rgASDump.tw
+++ b/src/npc/rgASDump.tw
@@ -47,7 +47,7 @@
 	<<elseif $PC.career == "slaver">>
 		<<set $activeSlave.devotion += 10>>
 	<<elseif $PC.career == "medicine">>
-		<<set $activeSlave.boobs += 600, $activeSlave.boobsImplant += 600, $activeSlave.butt += 2, $activeSlave.buttImplant += 2, $activeSlave.lips += 10, $activeSlave.lipsImplant += 10, $activeSlave.waist = -55>>
+		<<set $activeSlave.boobs += 600, $activeSlave.boobsImplant += 600, $activeSlave.boobsImplantType = "normal", $activeSlave.butt += 2, $activeSlave.buttImplant += 2, $activeSlave.buttImplantType = "normal", $activeSlave.lips += 10, $activeSlave.lipsImplant += 10, $activeSlave.waist = -55>>
 	<<elseif $PC.career == "celebrity">>
 		<<if $activeSlave.skill.entertainment < 60>><<set $activeSlave.skill.entertainment += 20>><</if>>
 	<<elseif $PC.career == "servant">>
diff --git a/src/npc/slaveStats.tw b/src/npc/slaveStats.tw
index 3dca1aae144a9f395d5797d3cfa80014c213bbbf..d00675a2c70aa7cde569ec021371b12f85bc3df0 100644
--- a/src/npc/slaveStats.tw
+++ b/src/npc/slaveStats.tw
@@ -259,8 +259,9 @@ Income: <<= num($activeSlave.lastWeeksRepIncome)>>
 		<br>Nails: $activeSlave.nails
 
 		<br><br>Boobs: $activeSlave.boobs,
+		Implant Type: $activeSlave.boobsImplantType,
+		Implant Volume: $activeSlave.boobsImplant
 		<br>Milk: $activeSlave.boobsMilk,
-		Type: $activeSlave.boobsImplantType,
 		Qunantity: $activeSlave.counter.milk
 		<br>Shape: $activeSlave.boobShape
 		<br>nipples: $activeSlave.nipples,
@@ -301,7 +302,8 @@ Income: <<= num($activeSlave.lastWeeksRepIncome)>>
 		Area: $activeSlave.analArea,
 		Count: $activeSlave.counter.anal
 		<br>Butt: $activeSlave.butt,
-		Type: $activeSlave.buttImplantType,
+		Implant Type: $activeSlave.buttImplantType,
+		Implant Volume: $activeSlave.buttImplant,
 		Plug: $activeSlave.buttplug,
 		PlugAttachment: $activeSlave.buttplugAttachment
 		<br>Mpreg: $activeSlave.mpreg
@@ -398,7 +400,7 @@ Income: <<= num($activeSlave.lastWeeksRepIncome)>>
 <div id="Impants_Piercings_Tattoos" class="tabcontent">
 	<div class="content">
 
-		<h2>Impants</h2>
+		<h2>Implants</h2>
 		Height: $activeSlave.heightImplant
 		<br>Ears: $activeSlave.earImplant
 		<br>Face: $activeSlave.faceImplant
diff --git a/src/js/surgery.js b/src/npc/surgery/surgery.js
similarity index 79%
rename from src/js/surgery.js
rename to src/npc/surgery/surgery.js
index 98b802e27ed61bde64b54f41f2f086eb05ff04c6..09909e85aa88081e8dbe45be022a9361cc009f32 100644
--- a/src/js/surgery.js
+++ b/src/npc/surgery/surgery.js
@@ -138,7 +138,7 @@ App.Medicine.Surgery.ListHelpers = class {
 
 	/**
 	 * @param {string} name
-	 * @param {number} implantType
+	 * @param {string} implantType
 	 * @param {number} size
 	 * @returns {App.Medicine.Surgery.Procedure}
 	 */
@@ -160,7 +160,7 @@ App.Medicine.Surgery.ListHelpers = class {
 			slave => {
 				slave[`${this._bodyPart}`] -= slave[`${this._bodyPart}Implant`];
 				slave[`${this._bodyPart}Implant`] = 0;
-				slave[`${this._bodyPart}ImplantType`] = 0;
+				slave[`${this._bodyPart}ImplantType`] = "none";
 			}, this._V.surgeryCost, 5, `${this._bodyPart}Loss`
 		);
 	}
@@ -294,72 +294,84 @@ App.Medicine.Surgery.sizingProcedures = function() {
 		const thisArcology = V.arcologies[0];
 		const largeImplantsAvailable = thisArcology.FSTransformationFetishistResearch === 1;
 		const advancedFillableImplantsAvailable = V.ImplantProductionUpgrade === 1;
+		const advancedSurgeryAvailable = V.ImplantProductionUpgrade === 1;
 		const pronouns = getPronouns(slave);
 		const {he, His} = pronouns;
 
 		const types = App.Medicine.Keys.Surgery.Target.breast; // shortcuts
 		const helper = new App.Medicine.Surgery.ListHelpers(slave, "boobs", types, pronouns, V.showBoobCCs);
 
-		const areStringsInstalled = slave.boobsImplantType === 1;
+		const areStringsInstalled = slave.boobsImplantType === "string";
+		const areFillablesInstalled = ["fillable", "advanced fillable", "hyper fillable"].includes(slave.boobsImplantType);
 		const curSize = slave.boobsImplant;
+		const implantType = slave.boobsImplantType;
 
 		let r = [];
 		if (options.augmentation) {
-			if (slave.boobs > 50000) {
-				r.push(App.Medicine.Surgery.makeImpossibleOption(types.fillUp, "Increase boobs", `<em>${His} breasts are as large as ${he} can physically support</em>`));
-			} else if (curSize > 10000 && !largeImplantsAvailable && !areStringsInstalled) {
-				r.push(App.Medicine.Surgery.makeImpossibleOption(types.fillUp, "Increase boobs", `<em>${His} implants are filled to capacity</em>`));
-			} else if (slave.indentureRestrictions >= 2) {
+			if (slave.indentureRestrictions >= 2) {
 				r.push(App.Medicine.Surgery.makeImpossibleOption(types.installImplant, "Change boob size", `<em>${His} indenture forbids elective surgery</em>`));
 			} else if (slave.breastMesh === 1) {
 				r.push(App.Medicine.Surgery.makeImpossibleOption(types.installImplant, "Put implants", `<em>${His} supportive mesh implant blocks implantation</em>`));
 			} else if (curSize === 0) {
 				if (options.strings) {
-					r.push(helper.installImplants("string", 1, 400));
+					r.push(helper.installImplants("string", "string", 400));
 				}
-				if (V.surgeryUpgrade === 1) {
-					r.push(helper.installImplants("large", 0, 600));
+				if (advancedSurgeryAvailable) {
+					r.push(helper.installImplants("large", "normal", 600));
+				}
+				r.push(helper.installImplants("standard", "normal", 400));
+				r.push(helper.installImplants("small", "normal", 200));
+			} else if (implantType === "normal") {
+				if (curSize > 400) {
+					r.push(helper.replaceImplants("fillable", "fillable", 800));
+				} else if (curSize > 200) {
+					r.push(helper.replaceImplants("large", "normal", 600));
+				} else {
+					r.push(helper.replaceImplants("standard", "normal", 400));
+					r.push(helper.replaceImplants("large", "normal", 600));
+				}
+			} else if (implantType === "hyper fillable") {
+				if (slave.boobs >= 50000) {
+					r.push(App.Medicine.Surgery.makeImpossibleOption(types.fillUp, "Increase boobs", `<em>${His} breasts are as large as ${he} can physically support</em>`));
+				} else {
+					r.push(helper.fillUp(1000));
+				}
+			} else if (implantType === "advanced fillable") {
+				if (curSize >= 10000) {
+					r.push(App.Medicine.Surgery.makeImpossibleOption(types.fillUp, "Increase boobs", `<em>${His} implants are filled to capacity</em>`));
+					if (largeImplantsAvailable) {
+						r.push(helper.replaceImplants("hyper fillable", "hyper fillable", 11000));
+					}
+				} else {
+					r.push(helper.fillUp(400));
+				}
+			} else if (implantType === "fillable") {
+				if (curSize >= 1800) {
+					r.push(App.Medicine.Surgery.makeImpossibleOption(types.fillUp, "Add inert filler", `<em>${His} implants are filled to capacity</em>`));
+					r.push(_advFillablePriceModifier(helper.replaceImplants("advanced fillable", "advanced fillable", 2200)));
+				} else {
+					r.push(helper.fillUp(200));
 				}
-				r.push(helper.installImplants("standard", 0, 400));
-				r.push(helper.installImplants("small", 0, 200));
-			} else if (curSize > 10000 && !areStringsInstalled && advancedFillableImplantsAvailable) {
-				r.push(helper.fillUp(1000));
-			} else if (curSize > 9800 && !areStringsInstalled && advancedFillableImplantsAvailable) {
-				r.push(helper.replaceImplants("hyper fillable", 0, 11000));
-			} else if (curSize > 2000 && !areStringsInstalled) {
-				r.push(helper.fillUp(400));
-			} else if (curSize > 1800 && !areStringsInstalled) {
-				r.push(App.Medicine.Surgery.makeImpossibleOption(types.fillUp, "Add inert filler", `<em>${His} implants are filled to capacity</em>`));
-				r.push(_advFillablePriceModifier(helper.replaceImplants("advanced fillable", 0, 2200)));
-			} else if (curSize > 600 && !areStringsInstalled) {
-				r.push(helper.fillUp(200));
-			} else if (curSize > 400 && !areStringsInstalled) {
-				r.push(helper.replaceImplants("fillable", 0, 800));
-			} else if (curSize > 200 && !areStringsInstalled) {
-				r.push(helper.replaceImplants("large", 0, 600));
-			} else if (curSize > 0 && !areStringsInstalled) {
-				r.push(helper.replaceImplants("standard", 0, 400));
-				r.push(helper.replaceImplants("large", 0, 600));
 			}
 		}
 
 		if (options.replace && slave.indentureRestrictions < 2 && curSize > 0) {
 			if (!areStringsInstalled && curSize < 600) {
-				r.push(helper.replaceImplants("string", 1, 400));
+				r.push(helper.replaceImplants("string", "string", 400));
 			} else if (areStringsInstalled){
 				// we have engorged string implants, suggest replacing with normal implants of similar size
 				if (curSize > 10000) {
 					if (largeImplantsAvailable) {
 						if (slave.boobs < 50000) {
-							r.push(helper.replaceImplants("hyper fillable", 0, Math.round(curSize / 1000) * 1000));
+							r.push(helper.replaceImplants("hyper fillable", "hyper fillable", Math.round(curSize / 1000) * 1000));
 						}
 					}
 				} else if (curSize > 2200) {
-					r.push(_advFillablePriceModifier(helper.replaceImplants("advanced fillable", 0, Math.round(curSize / 400) * 400)));
+					r.push(_advFillablePriceModifier(helper.replaceImplants("advanced fillable", "advanced fillable", Math.round(curSize / 400) * 400)));
 				} else if (curSize > 400) {
-					r.push(helper.replaceImplants("fillable", 0, Math.round(curSize / 200) * 200));
+					r.push(helper.replaceImplants("fillable", "fillable", Math.round(curSize / 200) * 200));
 				} else {
-					r.push(helper.replaceImplants("standard", 0, 400));
+					r.push(helper.replaceImplants("standard", "normal", 400));
 				}
 			}
 		}
@@ -378,8 +390,30 @@ App.Medicine.Surgery.sizingProcedures = function() {
 					} else if (curSize > 500) {
 						r.push(helper.drain(100));
 					}
+				} else if (areFillablesInstalled) {
+					if (implantType === "hyper fillable") {
+						if (curSize <= 10000) {
+							r.push(App.Medicine.Surgery.makeImpossibleOption(types.drain, "Remove filler", `<em>${His} implants are empty</em>`));
+						} else {
+							r.push(helper.drain(1000));
+						}
+					} else if (implantType === "advanced fillable") {
+						if (curSize <= 1000) {
+							r.push(App.Medicine.Surgery.makeImpossibleOption(types.drain, "Remove filler", `<em>${His} implants are empty</em>`));
+						} else {
+							r.push(helper.drain(500));
+						}
+					} else if (implantType === "fillable") {
+						if (curSize <= 500) {
+							r.push(App.Medicine.Surgery.makeImpossibleOption(types.drain, "Remove filler", `<em>${His} implants are empty</em>`));
+						} else {
+							r.push(helper.drain(100));
+						}
+					}
+				}
+				if (slave.indentureRestrictions < 2) {
+					r.push(helper.removeImplants());
 				}
-				r.push(helper.removeImplants());
 			}
 			if ((slave.boobs > 300) && (curSize === 0) && slave.indentureRestrictions < 2) {
 				r.push(helper.reduce("reduce", 200));
@@ -419,78 +453,113 @@ App.Medicine.Surgery.sizingProcedures = function() {
 		const thisArcology = V.arcologies[0];
 		const largeImplantsAvailable = thisArcology.FSTransformationFetishistResearch === 1;
 		const advancedFillableImplantsAvailable = V.ImplantProductionUpgrade === 1;
+		const advancedSurgeryAvailable = V.ImplantProductionUpgrade === 1;
 		const pronouns = getPronouns(slave);
 		const {he, His} = pronouns;
 
 		const types = App.Medicine.Keys.Surgery.Target.butt; // shortcuts
 		const helper = new App.Medicine.Surgery.ListHelpers(slave, "butt", types, pronouns, false);
 
-		const areStringsInstalled = slave.buttImplantType === 1;
+		const areStringsInstalled = slave.buttImplantType === "string";
+		const areFillablesInstalled = ["fillable", "advanced fillable", "hyper fillable"].includes(slave.buttImplantType);
 		const curSize = slave.buttImplant;
+		const implantType = slave.buttImplantType;
 
 		let r = [];
 
 		if (options.augmentation) {
 			if (slave.indentureRestrictions >= 2) {
 				r.push(App.Medicine.Surgery.makeImpossibleOption(types.installImplant, "Change butt size", `<em>${His} indenture forbids elective surgery</em>`));
-			} else if (slave.butt > 19) {
+			} else if (slave.butt > 19 && areFillablesInstalled) {
 				r.push(App.Medicine.Surgery.makeImpossibleOption(types.fillUp, "Increase butt", `<em>${His} butt is as large as it can possibly get</em>`));
-			} else if (slave.butt > 7 && !largeImplantsAvailable && thisArcology.FSAssetExpansionist === "unset" && !areStringsInstalled) {
-				r.push(App.Medicine.Surgery.makeImpossibleOption(types.installImplant, "Increase butt", `<em>${His} butt is as large as ${he} can physically support</em>`));
-			} else if (curSize > 7 && !largeImplantsAvailable && !areStringsInstalled) {
-				r.push(App.Medicine.Surgery.makeImpossibleOption(types.installImplant, "Increase butt", `<em>${His} butt implants are filled to capacity</em>`));
 			} else if (curSize === 0) {
-				r.push(helper.installImplants("standard", 0, 1));
 				if (options.strings) {
-					r.push(helper.installImplants("string", 1, 1));
+					r.push(helper.installImplants("string", "string", 1));
+				}
+				if (advancedSurgeryAvailable) {
+					r.push(helper.installImplants("big", "normal", 2));
 				}
-			} else if (curSize === 1 && !areStringsInstalled) {
-				r.push(helper.replaceImplants("bigger", 0, 2));
-			} else if (curSize === 2 && !areStringsInstalled) {
-				r.push(helper.replaceImplants("fillable", 0, 3));
-			} else if (curSize === 4 && !areStringsInstalled) {
-				r.push(App.Medicine.Surgery.makeImpossibleOption(types.fillUp, "Increase size", `<em>${His} implants are filled to capacity</em>`));
-				const advancedFillable = helper.replaceImplants("advanced fillable", 0, 5);
-				if (!advancedFillableImplantsAvailable) {
-					advancedFillable.costs += 10000;
-					advancedFillable.label += " (special order)";
-					advancedFillable.description += " (special order)";
+				r.push(helper.installImplants("standard", "normal", 1));
+			} else if (implantType === "normal") {
+				if (curSize >= 5) {
+					r.push(_advFillablePriceModifier(helper.replaceImplants("advanced fillable", "advanced fillable", curSize)));
+				} else if (curSize >= 2) {
+					r.push(helper.replaceImplants("fillable", "fillable", 3));
+				} else if (curSize === 1) {
+					r.push(helper.replaceImplants("bigger", "normal", 2));
+				}
+			} else if (implantType === "hyper fillable") {
+				if (curSize > 19) {
+					r.push(App.Medicine.Surgery.makeImpossibleOption(types.fillUp, "Increase butt", `<em>${His} butt implants are filled to capacity</em>`));
+				} else {
+					r.push(helper.fillUp(1));
+				}
+			} else if (implantType === "advanced fillable") {
+				if (curSize > 7) {
+					r.push(App.Medicine.Surgery.makeImpossibleOption(types.fillUp, "Increase butt", `<em>${His} butt implants are filled to capacity</em>`));
+					if (largeImplantsAvailable) {
+						r.push(helper.replaceImplants("hyper fillable", "hyper fillable", 9));
+					}
+				} else {
+					r.push(helper.fillUp(1));
+				}
+			} else if (implantType === "fillable") {
+				if (curSize >= 4) {
+					r.push(App.Medicine.Surgery.makeImpossibleOption(types.fillUp, "Increase size", `<em>${His} implants are filled to capacity</em>`));
+					r.push(_advFillablePriceModifier(helper.replaceImplants("advanced fillable", "advanced fillable", 5)));
+				} else {
+					r.push(helper.fillUp(1));
 				}
-				r.push(advancedFillable);
-			} else if (curSize === 8 && !areStringsInstalled && largeImplantsAvailable) {
-				r.push(helper.replaceImplants("hyper fillable", 0, 9));
-			} else if (curSize > 2 && !areStringsInstalled) {
-				r.push(helper.fillUp(1));
 			}
 		}
 
 		if (options.replace && slave.indentureRestrictions < 2 && curSize > 0) {
 			if (!areStringsInstalled && curSize === 1) {
-				r.push(helper.replaceImplants("string", 1, 1));
+				r.push(helper.replaceImplants("string", "string", 1));
 			} else if (areStringsInstalled) {
 				// we have engorged string implants, suggest replacing with normal implants of similar size
 				if (curSize >= 9) {
 					if (largeImplantsAvailable) {
-						r.push(helper.replaceImplants("hyper fillable", 0, curSize));
+						r.push(helper.replaceImplants("hyper fillable", "hyper fillable", curSize));
 					}
 				} else if (curSize >= 5) {
-					r.push(_advFillablePriceModifier(helper.replaceImplants("advanced fillable", 0, curSize)));
+					r.push(_advFillablePriceModifier(helper.replaceImplants("advanced fillable", "advanced fillable", curSize)));
 				} else if (curSize >= 3) {
-					r.push(helper.replaceImplants("fillable", 0, curSize));
+					r.push(helper.replaceImplants("fillable", "fillable", curSize));
 				} else if (curSize === 2) {
-					r.push(helper.replaceImplants("big", 0, curSize));
+					r.push(helper.replaceImplants("big", "normal", curSize));
 				} else {
-					r.push(helper.replaceImplants("standard", 0, curSize));
+					r.push(helper.replaceImplants("standard", "normal", curSize));
 				}
 			}
 		}
 
 		if (options.reduction) {
 			if (curSize > 0) {
-				if (slave.indentureRestrictions < 2) {
-					if (areStringsInstalled && curSize > 1) {
-						r.push(helper.drain(1));
+				if (areStringsInstalled && curSize > 1) {
+					r.push(helper.drain(1));
+				} else if (areFillablesInstalled) {
+					if (implantType === "hyper fillable") {
+						if (curSize <= 5) {
+							r.push(App.Medicine.Surgery.makeImpossibleOption(types.drain, "Remove filler", `<em>${His} implants are empty</em>`));
+						} else {
+							r.push(helper.drain(1));
+						}
+					} else if (implantType === "advanced fillable") {
+						if (curSize <= 3) {
+							r.push(App.Medicine.Surgery.makeImpossibleOption(types.drain, "Remove filler", `<em>${His} implants are empty</em>`));
+						} else {
+							r.push(helper.drain(1));
+						}
+					} else if (implantType === "fillable") {
+						if (curSize <= 1) {
+							r.push(App.Medicine.Surgery.makeImpossibleOption(types.drain, "Remove filler", `<em>${His} implants are empty</em>`));
+						} else {
+							r.push(helper.drain(1));
+						}
 					}
+				}
+				if (slave.indentureRestrictions < 2) {
 					r.push(helper.removeImplants());
 				}
 			}
diff --git a/src/player/electiveSurgery.tw b/src/player/electiveSurgery.tw
index 696abc429d6a89afbf7bf6cc913c9f093225014e..fec3355f03106561d74d93b5d65372dd52e84eab 100644
--- a/src/player/electiveSurgery.tw
+++ b/src/player/electiveSurgery.tw
@@ -148,7 +148,7 @@ You have @@.orange;$PC.skin skin.@@<<if $PC.skin != $PC.origSkin>> Your original
 <<if $PC.boobs >= 1400>>
 	<<if $PC.boobsImplant > 0>>
 		You have a @@.orange;pair of round H-cup breasts;@@ they are very obviously implants.
-		<br>//You are starting to experience back pain; any bigger and they might seriously impede your ability to run your arcology.// | [[Have your implants removed|PC Surgery Degradation][$PC.boobs -= $PC.boobsImplant, $PC.boobsImplant = 0, cashX(forceNeg(5000), "PCmedical"), $surgeryType = "breastReductionImplant"]]
+		<br>//You are starting to experience back pain; any bigger and they might seriously impede your ability to run your arcology.// | [[Have your implants removed|PC Surgery Degradation][$PC.boobs -= $PC.boobsImplant, $PC.boobsImplant = 0, $PC.boobsImplantType = "none", cashX(forceNeg(5000), "PCmedical"), $surgeryType = "breastReductionImplant"]]
 	<<else>>
 		You have a @@.orange;heavy H-cup bust.@@ They tend to sag a little when you free them from your top, though they have some perk to them.
 		<br>//You are starting to experience back pain; any bigger and they might seriously impede your ability to run your arcology.// | [[Have tissue removed|PC Surgery Degradation][$PC.boobs = 1300, cashX(forceNeg(5000), "PCmedical"), $surgeryType = "breastShrinkage"]]
@@ -156,7 +156,7 @@ You have @@.orange;$PC.skin skin.@@<<if $PC.skin != $PC.origSkin>> Your original
 <<elseif $PC.boobs >= 1200>>
 	<<if $PC.boobsImplant > 0>>
 		You have a @@.orange;pair of rounded G-cup breasts;@@ they are a little too perky for their size to pass as natural.
-		<br>[[Have your implants removed|PC Surgery Degradation][$PC.boobs -= $PC.boobsImplant, $PC.boobsImplant = 0, cashX(forceNeg(5000), "PCmedical"), $surgeryType = "breastReductionImplant"]] | [[Get the next size up|PC Surgery Degradation][$PC.boobs += 200, $PC.boobsImplant += 200, cashX(forceNeg(10000), "PCmedical"), $surgeryType = "breastEnlargementImplant"]]
+		<br>[[Have your implants removed|PC Surgery Degradation][$PC.boobs -= $PC.boobsImplant, $PC.boobsImplant = 0, $PC.boobsImplantType = "none", cashX(forceNeg(5000), "PCmedical"), $surgeryType = "breastReductionImplant"]] | [[Get the next size up|PC Surgery Degradation][$PC.boobs += 200, $PC.boobsImplant += 200, cashX(forceNeg(10000), "PCmedical"), $surgeryType = "breastEnlargementImplant"]]
 	<<else>>
 		You have a @@.orange;huge G-cup bust.@@
 		<br>[[Add additional breast tissue|PC Surgery Degradation][$PC.boobs += 200, cashX(forceNeg(15000), "PCmedical"), $surgeryType = "breastEnlargement"]] | [[Have tissue removed|PC Surgery Degradation][$PC.boobs -= 200, cashX(forceNeg(5000), "PCmedical"), $surgeryType = "breastShrinkage"]]
@@ -164,14 +164,14 @@ You have @@.orange;$PC.skin skin.@@<<if $PC.skin != $PC.origSkin>> Your original
 <<elseif $PC.boobs >= 1000>>
 	<<if $PC.boobsImplant > 0>>
 		You have a @@.orange;pair of perky F-cup breasts;@@ you can barely tell they are implanted.
-		<br>[[Have your implants removed|PC Surgery Degradation][$PC.boobs -= $PC.boobsImplant, $PC.boobsImplant = 0, cashX(forceNeg(5000), "PCmedical"), $surgeryType = "breastReductionImplant"]] | [[Get the next size up|PC Surgery Degradation][$PC.boobs += 200, $PC.boobsImplant += 200, cashX(forceNeg(10000), "PCmedical"), $surgeryType = "breastEnlargementImplant"]]
+		<br>[[Have your implants removed|PC Surgery Degradation][$PC.boobs -= $PC.boobsImplant, $PC.boobsImplant = 0, $PC.boobsImplantType = "none", cashX(forceNeg(5000), "PCmedical"), $surgeryType = "breastReductionImplant"]] | [[Get the next size up|PC Surgery Degradation][$PC.boobs += 200, $PC.boobsImplant += 200, cashX(forceNeg(10000), "PCmedical"), $surgeryType = "breastEnlargementImplant"]]
 	<<else>>
 		You have a @@.orange;hefty F-cup bust.@@
 		<br>[[Add additional breast tissue|PC Surgery Degradation][$PC.boobs += 200, cashX(forceNeg(15000), "PCmedical"), $surgeryType = "breastEnlargement"]] | [[Have tissue removed|PC Surgery Degradation][$PC.boobs -= 200, cashX(forceNeg(5000), "PCmedical"), $surgeryType = "breastShrinkage"]]
 	<</if>>
 <<elseif $PC.boobs >= 800>>
 	You have a @@.orange;big pair of DD-cup breasts.@@
-	<br>[[Get a pair of breast implants|PC Surgery Degradation][$PC.boobs += 200, $PC.boobsImplant += 200, cashX(forceNeg(10000), "PCmedical"), $surgeryType = "breastEnlargementImplant"]] | [[Add additional breast tissue|PC Surgery Degradation][$PC.boobs += 200, cashX(forceNeg(15000), "PCmedical"), $surgeryType = "breastEnlargement"]] | [[Have fatty tissue removed|PC Surgery Degradation][$PC.boobs = 700, cashX(forceNeg(5000), "PCmedical"), $surgeryType = "breastShrinkage"]] | [[Have them removed|PC Surgery Degradation][$PC.boobs = 100, cashX(forceNeg(5000), "PCmedical"), $surgeryType = "flatChest"]]
+	<br>[[Get a pair of breast implants|PC Surgery Degradation][$PC.boobs += 200, $PC.boobsImplant += 200, $PC.boobsImplantType = "normal", cashX(forceNeg(10000), "PCmedical"), $surgeryType = "breastEnlargementImplant"]] | [[Add additional breast tissue|PC Surgery Degradation][$PC.boobs += 200, cashX(forceNeg(15000), "PCmedical"), $surgeryType = "breastEnlargement"]] | [[Have fatty tissue removed|PC Surgery Degradation][$PC.boobs = 700, cashX(forceNeg(5000), "PCmedical"), $surgeryType = "breastShrinkage"]] | [[Have them removed|PC Surgery Degradation][$PC.boobs = 100, cashX(forceNeg(5000), "PCmedical"), $surgeryType = "flatChest"]]
 <<elseif $PC.boobs >= 650>>
 	You have a @@.orange;pair of D-cup breasts.@@
 	<br>[[Add additional fatty tissue|PC Surgery Degradation][$PC.boobs += 200, cashX(forceNeg(15000), "PCmedical"), $surgeryType = "breastEnlargement"]] | [[Have fatty tissue removed|PC Surgery Degradation][$PC.boobs = 600, cashX(forceNeg(5000), "PCmedical"), $surgeryType = "breastShrinkage"]] | [[Have them removed|PC Surgery Degradation][$PC.boobs = 100, cashX(forceNeg(5000), "PCmedical"), $surgeryType = "flatChest"]]
@@ -272,7 +272,7 @@ You have @@.orange;$PC.skin skin.@@<<if $PC.skin != $PC.origSkin>> Your original
 <<if $PC.butt >= 5>>
 	<<if $PC.buttImplant >= 1>>
 		You have an @@.orange;enormous, round, hard butt;@@ it is very obviously a pair of huge implants.
-		<br>//You can barely squeeze your rear into your clothes and are starting to get stuck in chairs; any bigger and it might seriously impede your ability to run your arcology.// | [[Have your implants removed|PC Surgery Degradation][$PC.butt -= $PC.buttImplant, $PC.buttImplant = 0, cashX(forceNeg(5000), "PCmedical"), $surgeryType = "buttReductionImplant"]]
+		<br>//You can barely squeeze your rear into your clothes and are starting to get stuck in chairs; any bigger and it might seriously impede your ability to run your arcology.// | [[Have your implants removed|PC Surgery Degradation][$PC.butt -= $PC.buttImplant, $PC.buttImplant = 0, $PC.buttImplantType = "none", cashX(forceNeg(5000), "PCmedical"), $surgeryType = "buttReductionImplant"]]
 	<<else>>
 		You have an @@.orange;enormous, jiggly butt.@@
 		<br>//You can barely squeeze your rear into your clothes and are starting to get stuck in chairs; any bigger and it might seriously impede your ability to run your arcology.// | [[Have fat removed|PC Surgery Degradation][$PC.butt -= 1, cashX(forceNeg(5000), "PCmedical"), $surgeryType = "buttShrinkage"]]
@@ -280,7 +280,7 @@ You have @@.orange;$PC.skin skin.@@<<if $PC.skin != $PC.origSkin>> Your original
 <<elseif $PC.butt >= 4>>
 	<<if $PC.buttImplant >= 1>>
 		You have a @@.orange;huge, round, firm butt;@@ it's easily identifiable as fake.
-		<br>[[Have your implants removed|PC Surgery Degradation][$PC.butt -= $PC.buttImplant, $PC.buttImplant = 0, cashX(forceNeg(5000), "PCmedical"), $surgeryType = "buttReductionImplant"]] | [[Get the next size up|PC Surgery Degradation][$PC.butt += 1, $PC.buttImplant += 1, cashX(forceNeg(10000), "PCmedical"), $surgeryType = "buttEnlargementImplant"]]
+		<br>[[Have your implants removed|PC Surgery Degradation][$PC.butt -= $PC.buttImplant, $PC.buttImplant = 0, $PC.buttImplantType = "none", cashX(forceNeg(5000), "PCmedical"), $surgeryType = "buttReductionImplant"]] | [[Get the next size up|PC Surgery Degradation][$PC.butt += 1, $PC.buttImplant += 1, cashX(forceNeg(10000), "PCmedical"), $surgeryType = "buttEnlargementImplant"]]
 	<<else>>
 		You have a @@.orange;huge, soft butt.@@
 		<br>[[Add additional fatty tissue|PC Surgery Degradation][$PC.butt += 1, cashX(forceNeg(15000), "PCmedical"), $surgeryType = "buttEnlargement"]] | [[Have fat removed|PC Surgery Degradation][$PC.butt -= 1, cashX(forceNeg(5000), "PCmedical"), $surgeryType = "buttShrinkage"]]
@@ -288,14 +288,14 @@ You have @@.orange;$PC.skin skin.@@<<if $PC.skin != $PC.origSkin>> Your original
 <<elseif $PC.butt >= 3>>
 	<<if $PC.buttImplant >= 1>>
 		You have a @@.orange;big firm butt;@@ anyone that feels it can tell it's fake, but at a glance you can't tell otherwise.
-		<br>[[Have your implants removed|PC Surgery Degradation][$PC.butt -= $PC.buttImplant, $PC.buttImplant = 0, cashX(forceNeg(5000), "PCmedical"), $surgeryType = "buttReductionImplant"]] | [[Get the next size up|PC Surgery Degradation][$PC.butt += 1, $PC.buttImplant += 1, cashX(forceNeg(10000), "PCmedical"), $surgeryType = "buttEnlargementImplant"]]
+		<br>[[Have your implants removed|PC Surgery Degradation][$PC.butt -= $PC.buttImplant, $PC.buttImplant = 0, $PC.buttImplantType = "none", cashX(forceNeg(5000), "PCmedical"), $surgeryType = "buttReductionImplant"]] | [[Get the next size up|PC Surgery Degradation][$PC.butt += 1, $PC.buttImplant += 1, cashX(forceNeg(10000), "PCmedical"), $surgeryType = "buttEnlargementImplant"]]
 	<<else>>
 		You have a @@.orange;big butt.@@
 		<br>[[Add additional fatty tissue|PC Surgery Degradation][$PC.butt += 1, cashX(forceNeg(15000), "PCmedical"), $surgeryType = "buttEnlargement"]] | [[Have fat removed|PC Surgery Degradation][$PC.butt -= 1, cashX(forceNeg(5000), "PCmedical"), $surgeryType = "buttShrinkage"]]
 	<</if>>
 <<else>>
 	You have a @@.orange;cute, but normal butt.@@ At your request, fat could be added until you have a healthy rear; alternatively, a pair of implants could be inserted instead.
-	<br>[[Get a pair of butt implants|PC Surgery Degradation][$PC.butt += 1, $PC.buttImplant += 1, cashX(forceNeg(10000), "PCmedical"), $surgeryType = "buttEnlargementImplant"]] | [[Add additional fatty tissue|PC Surgery Degradation][$PC.butt += 1, cashX(forceNeg(15000), "PCmedical"), $surgeryType = "buttEnlargement"]]
+	<br>[[Get a pair of butt implants|PC Surgery Degradation][$PC.butt += 1, $PC.buttImplant += 1, $PC.buttImplantType = "normal", cashX(forceNeg(10000), "PCmedical"), $surgeryType = "buttEnlargementImplant"]] | [[Add additional fatty tissue|PC Surgery Degradation][$PC.butt += 1, cashX(forceNeg(15000), "PCmedical"), $surgeryType = "buttEnlargement"]]
 <</if>>
 
 <<if $PC.balls != 0 && $PC.scrotum != 0>>
diff --git a/src/player/js/PlayerState.js b/src/player/js/PlayerState.js
index 137e80a63ec4375f815aa4232b8bf7b2c9d22f35..11e573a70df25ae3ffd1dcd4c89fc6f9e1e51d9c 100644
--- a/src/player/js/PlayerState.js
+++ b/src/player/js/PlayerState.js
@@ -648,8 +648,16 @@ App.Entity.PlayerState = class PlayerState {
 		 * * 600+: boobsImplant size fillable implants
 		 */
 		this.boobsImplant = 0;
-		/** Implants type. 0: normal/none; 1: string */
-		this.boobsImplantType = 0;
+		/**
+		 * Implant type
+		 * * "none"
+		 * * "normal"
+		 * * "string"
+		 * * "fillable"
+		 * * "advanced fillable"
+		 * * "hyper fillable"
+		 */
+		this.boobsImplantType = "none";
 		/**
 		 * breast shape
 		 * * "normal"
@@ -764,10 +772,16 @@ App.Entity.PlayerState = class PlayerState {
 		 * * 9+: hyper fillable implants
 		 */
 		this.buttImplant = 0;
-		/** butt implant type
-		 *
-		 * 0: normal/none; 1: string */
-		this.buttImplantType = 0;
+		/**
+		 * Implant type
+		 * * "none"
+		 * * "normal"
+		 * * "string"
+		 * * "fillable"
+		 * * "advanced fillable"
+		 * * "hyper fillable"
+		 */
+		this.buttImplantType = "none";
 		/**
 		 * butt tattoo
 		 *
diff --git a/src/pregmod/eliteSlave.tw b/src/pregmod/eliteSlave.tw
index 816c9ebe7dff0b7f788c0ba32b6f97f45c6add7a..ab45de311dcae639aee0fd2a870d3ad18c2df26b 100644
--- a/src/pregmod/eliteSlave.tw
+++ b/src/pregmod/eliteSlave.tw
@@ -118,15 +118,27 @@ You check to see if any potential breeding slaves are on auction. <<if $eliteAuc
 	<<set $activeSlave.butt = random(6,20)>>
 	<<if $arcologies[0].FSTransformationFetishist > 20>>
 		<<set $activeSlave.boobsImplant = $activeSlave.boobs-200>>
+		<<if $activeSlave.boobsImplant > 10000>>
+			<<set $activeSlave.boobsImplantType = "hyper fillable">>
+		<<else>>
+			<<set $activeSlave.boobsImplantType = "advanced fillable">>
+		<</if>>
 		<<set $activeSlave.buttImplant = $activeSlave.butt-1>>
+		<<if $activeSlave.buttImplant > 9>>
+			<<set $activeSlave.buttImplantType = "hyper fillable">>
+		<<else>>
+			<<set $activeSlave.buttImplantType = "advanced fillable">>
+		<</if>>
 	<</if>>
 <<elseif $arcologies[0].FSSlimnessEnthusiast > 20>>
 	<<set $activeSlave.boobs = (random(3,5) * 100)>>
 	<<set $activeSlave.butt = random(0,2)>>
 	<<if $arcologies[0].FSTransformationFetishist > 20>>
 		<<set $activeSlave.boobsImplant = $activeSlave.boobs-50>>
+		<<set $activeSlave.boobsImplantType = "normal">>
 		<<if $activeSlave.butt > 1>>
 			<<set $activeSlave.buttImplant = 1>>
+			<<set $activeSlave.buttImplantType = "normal">>
 		<</if>>
 	<</if>>
 <<else>>
@@ -134,7 +146,9 @@ You check to see if any potential breeding slaves are on auction. <<if $eliteAuc
 	<<set $activeSlave.butt = random(3,7)>>
 	<<if $arcologies[0].FSTransformationFetishist > 20>>
 		<<set $activeSlave.boobsImplant = $activeSlave.boobs-200>>
+		<<set $activeSlave.boobsImplantType = "normal">>
 		<<set $activeSlave.buttImplant = $activeSlave.butt-1>>
+		<<set $activeSlave.buttImplantType = "normal">>
 	<</if>>
 <</if>>
 <<if $arcologies[0].FSTransformationFetishist > 20>>
diff --git a/src/pregmod/newChildIntro.tw b/src/pregmod/newChildIntro.tw
index ca5307df6a9c5c750140c92cfc3112dceba954d6..d9a4db1abe44b648c3a5f59886355695a5c05964 100644
--- a/src/pregmod/newChildIntro.tw
+++ b/src/pregmod/newChildIntro.tw
@@ -1294,6 +1294,7 @@ You slowly strip down, gauging $his reactions to your show, until you are fully
 		<<set $activeSlave.trust += 20>>
 		<<set $activeSlave.boobs += 4000>>
 		<<set $activeSlave.boobsImplant += 4000>>
+		<<set $activeSlave.boobsImplantType = "advanced fillable">>
 		<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 		<<run surgeryDamage($activeSlave, 10)>>
 		<<set $activeSlave.boobShape = "normal">>
@@ -1306,7 +1307,7 @@ You slowly strip down, gauging $his reactions to your show, until you are fully
 		<<set $activeSlave.trust += 25>>
 		<<set $activeSlave.boobs += 7500>>
 		<<set $activeSlave.boobsImplant += 7500>>
-		<<set $activeSlave.boobsImplantType = 1>>
+		<<set $activeSlave.boobsImplantType = "string">>
 		<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 		<<run surgeryDamage($activeSlave, 10)>>
 		<<set $activeSlave.boobShape = "normal">>
@@ -1320,6 +1321,7 @@ You slowly strip down, gauging $his reactions to your show, until you are fully
 		<<set $activeSlave.trust += 10>>
 		<<set $activeSlave.boobs += 1000>>
 		<<set $activeSlave.boobsImplant += 1000>>
+		<<set $activeSlave.boobsImplantType = "fillable">>
 		<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 		<<run surgeryDamage($activeSlave, 10)>>
 		<<set $activeSlave.boobShape = "normal">>
@@ -1332,7 +1334,7 @@ You slowly strip down, gauging $his reactions to your show, until you are fully
 		<<set $activeSlave.trust += 15>>
 		<<set $activeSlave.boobs += 1500>>
 		<<set $activeSlave.boobsImplant += 1500>>
-		<<set $activeSlave.boobsImplantType = 1>>
+		<<set $activeSlave.boobsImplantType = "string">>
 		<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 		<<run surgeryDamage($activeSlave, 10)>>
 		<<set $activeSlave.boobShape = "normal">>
@@ -1501,6 +1503,7 @@ You slowly strip down, gauging $his reactions to your show, until you are fully
 		<<set $activeSlave.trust += 20>>
 		<<set $activeSlave.butt += 8>>
 		<<set $activeSlave.buttImplant += 8>>
+		<<set $activeSlave.buttImplantType = "advanced fillable">>
 		<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 		<<run surgeryDamage($activeSlave, 10)>>
 		<<replace "#result">>
@@ -1513,6 +1516,7 @@ You slowly strip down, gauging $his reactions to your show, until you are fully
 		<<set $activeSlave.trust += 10>>
 		<<set $activeSlave.butt += 2>>
 		<<set $activeSlave.buttImplant += 2>>
+		<<set $activeSlave.buttImplantType = "fillable">>
 		<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 		<<run surgeryDamage($activeSlave, 10)>>
 		<<replace "#result">>
@@ -1524,7 +1528,7 @@ You slowly strip down, gauging $his reactions to your show, until you are fully
 		<<set $activeSlave.trust += 15>>
 		<<set $activeSlave.butt += 3>>
 		<<set $activeSlave.buttImplant += 3>>
-		<<set $activeSlave.buttImplantType = 1>>
+		<<set $activeSlave.buttImplantType = "string">>
 		<<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>>
 		<<run surgeryDamage($activeSlave, 10)>>
 		<<replace "#result">>
diff --git a/src/pregmod/organFarm.tw b/src/pregmod/organFarm.tw
index ee9a5c6f4772fdfb3a71af2d538ae98a77a974af..63c37890bee896b3087e0fcfd5cbda413132b9c1 100644
--- a/src/pregmod/organFarm.tw
+++ b/src/pregmod/organFarm.tw
@@ -77,7 +77,7 @@
 		</div>
 	<</if>>
 
-	<<if $seePreg != 0 && $seeBestiality == 1 && $cheatMode == 1>>
+	<<if $seePreg != 0 && $seeBestiality == 1 && $experimental.animalOvaries == 1>>
 		<<if $farmyardLabUpgrades.animalOvaries > 0>>
 			<<if $animalOvaries < 1>>
 				<div class="note">
diff --git a/src/pregmod/saAgent.tw b/src/pregmod/saAgent.tw
index 3e3ebaec4421c01bf2b62a5e41a96fe6bf39c993..1f8b5723f51ff8ef25a7778aaacfc4bec3616661 100644
--- a/src/pregmod/saAgent.tw
+++ b/src/pregmod/saAgent.tw
@@ -2,7 +2,7 @@
 
 <<set _gigantomastiaMod = $slaves[$i].geneticQuirks.gigantomastia == 2 ? ($slaves[$i].geneticQuirks.macromastia == 2 ? 3 : 2) : 1>>
 
-<<if $slaves[$i].boobsImplantType == 1>>
+<<if $slaves[$i].boobsImplantType == "string">>
 	<<set $slaves[$i].boobsImplant += 50, $slaves[$i].boobs += 50>>
 	<<if ($slaves[$i].boobs > 50000)>>
 		<<set $slaves[$i].boobs -= 100, $slaves[$i].boobsImplant -= 100>>
@@ -39,7 +39,7 @@
 		<<set $slaves[$i].boobs += 10>>
 	<</if>>
 <</if>>
-<<if $slaves[$i].buttImplantType == 1>>
+<<if $slaves[$i].buttImplantType == "string">>
 	<<set $slaves[$i].buttImplant += .25, $slaves[$i].butt += .25>>
 	<<if ($slaves[$i].butt > 10)>>
 		<<set $slaves[$i].butt -= 1, $slaves[$i].buttImplant -= 1>>
diff --git a/src/pregmod/seHuskSlaveDelivery.tw b/src/pregmod/seHuskSlaveDelivery.tw
index 376c21d52c5ebf10f186460647dff1091bc3be4a..1f25c11f6f740648d251e8d1cc3e110df38eebb1 100644
--- a/src/pregmod/seHuskSlaveDelivery.tw
+++ b/src/pregmod/seHuskSlaveDelivery.tw
@@ -12,8 +12,9 @@
 <</if>>
 <<if $huskSlave.sex == 2>>
 	<<set $activeSlave = GenerateNewSlave("XY")>>
-	<<set $activeSlave.boobs = 0>>
+	<<set $activeSlave.boobs = 50>>
 	<<set $activeSlave.boobsImplant = 0>>
+	<<set $activeSlave.boobsImplantType = "none">>
 <<else>>
 	<<set $activeSlave = GenerateNewSlave("XX")>>
 <</if>>
diff --git a/src/uncategorized/BackwardsCompatibility.tw b/src/uncategorized/BackwardsCompatibility.tw
index c235961c8f88ad4e16b7510aba580fe803e735d6..70b0f6adc7f281133f9bd8a2411f9428991749f0 100644
--- a/src/uncategorized/BackwardsCompatibility.tw
+++ b/src/uncategorized/BackwardsCompatibility.tw
@@ -1387,6 +1387,14 @@
 <<if ndef $cheatModeM>>
 	<<set $cheatModeM = 1>>
 <</if>>
+<<if ndef $experimental>>
+	<<set $experimental = {
+		nursery: 0,
+		food: 0,
+		animalOvaries: 0,
+		dinnerParty: 0
+	}>>
+<</if>>
 <<if ndef $MercenariesMessageSent>>
 	<<set $MercenariesMessageSent = 0>>
 <</if>>
diff --git a/src/uncategorized/PESS.tw b/src/uncategorized/PESS.tw
index 1afe67e53607ecbabb0d75afe0a365952a4aacee..69b1bcaf75cfcefe4ba9c55b724182553f41a748 100644
--- a/src/uncategorized/PESS.tw
+++ b/src/uncategorized/PESS.tw
@@ -271,10 +271,16 @@ $He sees you examining at $him, and looks back at you submissively, too tired to
 			<<if $slaves[$i].boobs < 400>>
 				<<set $slaves[$i].boobs += 200>>
 				<<set $slaves[$i].boobsImplant += 200>>
+				<<if $slaves[$i].boobsImplantType == "none">>
+					<<set $slaves[$i].boobsImplantType = "normal">>
+				<</if>>
 				<<run cashX(forceNeg(Math.trunc(200*$upgradeMultiplierMedicine)), "slaveSurgery", $activeSlave)>>
 			<<elseif $slaves[$i].butt < 3>>
 				<<set $slaves[$i].butt += 1>>
 				<<set $slaves[$i].buttImplant += 1>>
+				<<if $slaves[$i].buttImplantType == "none">>
+					<<set $slaves[$i].buttImplantType = "normal">>
+				<</if>>
 				<<run cashX(forceNeg(Math.trunc(200*$upgradeMultiplierMedicine)), "slaveSurgery", $activeSlave)>>
 			<<elseif $slaves[$i].face < 95 && $slaves[$i].faceImplant <= 10>>
 				<<set $slaves[$i].face = Math.clamp($slaves[$i].face+20,-100,100)>>
diff --git a/src/uncategorized/REFS.tw b/src/uncategorized/REFS.tw
index cf44241fc842e0aadd290dd85c58f2e04a96fa6c..806bc5f646fde91ebc00edd8aa9eec997985aea2 100644
--- a/src/uncategorized/REFS.tw
+++ b/src/uncategorized/REFS.tw
@@ -126,8 +126,10 @@
 	<<run setHealth($activeSlave, jsRandom(10, 20), jsRandom(10, 20))>>
 	<<set $activeSlave.boobs += 600>>
 	<<set $activeSlave.boobsImplant = 600>>
+	<<set $activeSlave.boobsImplantType = "normal">>
 	<<set $activeSlave.butt += 1>>
 	<<set $activeSlave.buttImplant = 1>>
+	<<set $activeSlave.buttImplantType = "normal">>
 	<<set $activeSlave.lips += 10>>
 	<<set $activeSlave.lipsImplant = 10>>
 	<<set $activeSlave.clothes = "conservative clothing">>
diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw
index 816bbad6d09d8e52be60e0a499ebf56a0bc30edb..28468dd97991a8f7f1170756e93c893cee78390a 100644
--- a/src/uncategorized/RESS.tw
+++ b/src/uncategorized/RESS.tw
@@ -106,8 +106,10 @@
 		<<set _meanGirl.muscles = random(0,15)>>
 		<<set _meanGirl.boobsImplant = 200*random(0,3)>>
 		<<set _meanGirl.boobs += _meanGirl.boobsImplant>>
+		<<set _meanGirl.boobsImplantType = "normal">>
 		<<set _meanGirl.buttImplant = random(0,2)>>
 		<<set _meanGirl.butt += _meanGirl.buttImplant>>
+		<<set _meanGirl.buttImplantType = "normal">>
 		<<set _meanGirl.butt += 1>>
 		<<set _meanGirl.vagina = random(1,2)>>
 		<<set _meanGirl.anus = 1>>
@@ -3862,7 +3864,7 @@ Your slaves get dressed in a large wardrobe area adjacent to the dormitory, room
 	apparently bigger today than it was yesterday. Pregnancy often causes minor redistributions of weight like this.
 <<elseif $activeSlave.hormoneBalance >= 200>>
 	apparently bigger today than it was yesterday. Intensive female hormone regimens like $hers sometimes cause minor ass expansion.
-<<elseif $activeSlave.buttImplantType == 1>>
+<<elseif $activeSlave.buttImplantType == "string">>
 	apparently a little bigger today than it was yesterday. String implants like $hers steadily grow if not regularly drained.
 <<elseif $geneticMappingUpgrade >= 1 && $activeSlave.geneticQuirks.rearLipedema == 2>>
 	apparently a little bigger today than it was yesterday. $His body is constantly laying fat on $his ass and thighs, so this isn't really unexpected.
diff --git a/src/uncategorized/costsReport.tw b/src/uncategorized/costsReport.tw
index 6f1b0fdcab8dc6ec3e0e5d59979765ceb7507abe..592a0da8e3da5e8dddcd24fd39aa7831dd041578 100644
--- a/src/uncategorized/costsReport.tw
+++ b/src/uncategorized/costsReport.tw
@@ -730,15 +730,15 @@ $researchLab.level > 0>>
 			<<set _individualCosts += $rulesCost>>
 		<</if>>
 	<</if>>
-	<<if $slaves[$i].boobs > 10000>>
-		<<if $slaves[$i].boobsImplantType == 1>>
+	<<if $slaves[$i].boobsImplant > 10000>>
+		<<if $slaves[$i].boobsImplantType == "string">>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Maintenance cost for oversized string implants:</i>
 			@@.yellowgreen;<<print cashFormat(50)>>@@
 			<<set _individualCosts += 50>>
 		<</if>>
 	<</if>>
-	<<if $slaves[$i].butt > 10>>
-		<<if $slaves[$i].buttImplantType == 1>>
+	<<if $slaves[$i].buttImplant > 5>>
+		<<if $slaves[$i].buttImplantType == "string">>
 			<br>&nbsp;&nbsp;&nbsp;&nbsp;<i>Maintenance cost for oversized string implants:</i>
 			@@.yellowgreen;<<print cashFormat(50)>>@@
 			<<set _individualCosts += 50>>
diff --git a/src/uncategorized/fsDevelopments.tw b/src/uncategorized/fsDevelopments.tw
index 66ba98f708a43fba1ab5b091c5d411810f28e1a2..aa72630b77093dfdd83230bf427aea3005b96490 100644
--- a/src/uncategorized/fsDevelopments.tw
+++ b/src/uncategorized/fsDevelopments.tw
@@ -30,77 +30,7 @@
 <</if>>
 
 /* Count adopted FS */
-<<set _societies = 0>>
-<<if $arcologies[0].FSSupremacist != "unset">>
-	<<set _societies++>>
-<</if>>
-<<if $arcologies[0].FSSubjugationist != "unset">>
-	<<set _societies++>>
-<</if>>
-<<if $arcologies[0].FSGenderRadicalist != "unset">>
-	<<set _societies++>>
-<<elseif $arcologies[0].FSGenderFundamentalist != "unset">>
-	<<set _societies++>>
-<</if>>
-<<if $arcologies[0].FSPaternalist != "unset">>
-	<<set _societies++>>
-<<elseif $arcologies[0].FSDegradationist != "unset">>
-	<<set _societies++>>
-<</if>>
-<<if $arcologies[0].FSIntellectualDependency != "unset">>
-	<<set _societies++>>
-<<elseif $arcologies[0].FSSlaveProfessionalism != "unset">>
-	<<set _societies++>>
-<</if>>
-<<if $arcologies[0].FSBodyPurist != "unset">>
-	<<set _societies++>>
-<<elseif $arcologies[0].FSTransformationFetishist != "unset">>
-	<<set _societies++>>
-<</if>>
-<<if $arcologies[0].FSSlimnessEnthusiast != "unset">>
-	<<set _societies++>>
-<<elseif $arcologies[0].FSAssetExpansionist != "unset">>
-	<<set _societies++>>
-<</if>>
-<<if $arcologies[0].FSPastoralist != "unset">>
-	<<set _societies++>>
-<</if>>
-<<if $arcologies[0].FSPhysicalIdealist != "unset">>
-	<<set _societies++>>
-<<elseif $arcologies[0].FSHedonisticDecadence != "unset">>
-	<<set _societies++>>
-<</if>>
-<<if $arcologies[0].FSPetiteAdmiration != "unset">>
-	<<set _societies++>>
-<<elseif $arcologies[0].FSStatuesqueGlorification != "unset">>
-	<<set _societies++>>
-<</if>>
-<<if $arcologies[0].FSMaturityPreferentialist != "unset">>
-	<<set _societies++>>
-<<elseif $arcologies[0].FSYouthPreferentialist != "unset">>
-	<<set _societies++>>
-<</if>>
-<<if $arcologies[0].FSChattelReligionist != "unset">>
-	<<set _societies++>>
-<</if>>
-<<if $arcologies[0].FSRomanRevivalist != "unset">>
-	<<set _societies++>>
-<<elseif $arcologies[0].FSAztecRevivalist != "unset">>
-	<<set _societies++>>
-<<elseif $arcologies[0].FSEgyptianRevivalist != "unset">>
-	<<set _societies++>>
-<<elseif $arcologies[0].FSEdoRevivalist != "unset">>
-	<<set _societies++>>
-<<elseif $arcologies[0].FSArabianRevivalist != "unset">>
-	<<set _societies++>>
-<<elseif $arcologies[0].FSChineseRevivalist != "unset">>
-	<<set _societies++>>
-<</if>>
-<<if $arcologies[0].FSRepopulationFocus != "unset">>
-	<<set _societies++>>
-<<elseif $arcologies[0].FSRestart != "unset">>
-	<<set _societies++>>
-<</if>>
+<<set _societies = FutureSocieties.activeCount(0)>>
 
 /* Spending, terrain, rep effects */
 <<set _broadProgress = 0>>
@@ -237,76 +167,7 @@
 	<</switch>>
 <</if>> /*closes FS count changes */
 <<if _broadProgress != 0>>
-	<<if $arcologies[0].FSSupremacist != "unset">>
-		<<set $arcologies[0].FSSupremacist += _broadProgress>>
-	<</if>>
-	<<if $arcologies[0].FSSubjugationist != "unset">>
-		<<set $arcologies[0].FSSubjugationist += _broadProgress>>
-	<</if>>
-	<<if $arcologies[0].FSGenderRadicalist != "unset">>
-		<<set $arcologies[0].FSGenderRadicalist += _broadProgress>>
-	<<elseif $arcologies[0].FSGenderFundamentalist != "unset">>
-		<<set $arcologies[0].FSGenderFundamentalist += _broadProgress>>
-	<</if>>
-	<<if $arcologies[0].FSPaternalist != "unset">>
-		<<set $arcologies[0].FSPaternalist += _broadProgress>>
-	<<elseif $arcologies[0].FSDegradationist != "unset">>
-		<<set $arcologies[0].FSDegradationist += _broadProgress>>
-	<</if>>
-	<<if $arcologies[0].FSIntellectualDependency != "unset">>
-		<<set $arcologies[0].FSIntellectualDependency += _broadProgress>>
-	<<elseif $arcologies[0].FSSlaveProfessionalism != "unset">>
-		<<set $arcologies[0].FSSlaveProfessionalism += _broadProgress>>
-	<</if>>
-	<<if $arcologies[0].FSBodyPurist != "unset">>
-		<<set $arcologies[0].FSBodyPurist += _broadProgress>>
-	<<elseif $arcologies[0].FSTransformationFetishist != "unset">>
-		<<set $arcologies[0].FSTransformationFetishist += _broadProgress>>
-	<</if>>
-	<<if $arcologies[0].FSSlimnessEnthusiast != "unset">>
-		<<set $arcologies[0].FSSlimnessEnthusiast += _broadProgress>>
-	<<elseif $arcologies[0].FSAssetExpansionist != "unset">>
-		<<set $arcologies[0].FSAssetExpansionist += _broadProgress>>
-	<</if>>
-	<<if $arcologies[0].FSPastoralist != "unset">>
-		<<set $arcologies[0].FSPastoralist += _broadProgress>>
-	<</if>>
-	<<if $arcologies[0].FSPhysicalIdealist != "unset">>
-		<<set $arcologies[0].FSPhysicalIdealist += _broadProgress>>
-	<<elseif $arcologies[0].FSHedonisticDecadence != "unset">>
-		<<set $arcologies[0].FSHedonisticDecadence += _broadProgress>>
-	<</if>>
-	<<if $arcologies[0].FSMaturityPreferentialist != "unset">>
-		<<set $arcologies[0].FSMaturityPreferentialist += _broadProgress>>
-	<<elseif $arcologies[0].FSYouthPreferentialist != "unset">>
-		<<set $arcologies[0].FSYouthPreferentialist += _broadProgress>>
-	<</if>>
-	<<if $arcologies[0].FSPetiteAdmiration != "unset">>
-		<<set $arcologies[0].FSPetiteAdmiration += _broadProgress>>
-	<<elseif $arcologies[0].FSStatuesqueGlorification != "unset">>
-		<<set $arcologies[0].FSStatuesqueGlorification += _broadProgress>>
-	<</if>>
-	<<if $arcologies[0].FSChattelReligionist != "unset">>
-		<<set $arcologies[0].FSChattelReligionist += _broadProgress>>
-	<</if>>
-	<<if $arcologies[0].FSRomanRevivalist != "unset">>
-		<<set $arcologies[0].FSRomanRevivalist += _broadProgress>>
-	<<elseif $arcologies[0].FSAztecRevivalist != "unset">>
-		<<set $arcologies[0].FSAztecRevivalist += _broadProgress>>
-	<<elseif $arcologies[0].FSEgyptianRevivalist != "unset">>
-		<<set $arcologies[0].FSEgyptianRevivalist += _broadProgress>>
-	<<elseif $arcologies[0].FSEdoRevivalist != "unset">>
-		<<set $arcologies[0].FSEdoRevivalist += _broadProgress>>
-	<<elseif $arcologies[0].FSArabianRevivalist != "unset">>
-		<<set $arcologies[0].FSArabianRevivalist += _broadProgress>>
-	<<elseif $arcologies[0].FSChineseRevivalist != "unset">>
-		<<set $arcologies[0].FSChineseRevivalist += _broadProgress>>
-	<</if>>
-	<<if $arcologies[0].FSRepopulationFocus != "unset">>
-		<<set $arcologies[0].FSRepopulationFocus += _broadProgress>>
-	<<elseif $arcologies[0].FSRestart != "unset">>
-		<<set $arcologies[0].FSRestart += _broadProgress>>
-	<</if>>
+	<<run FutureSocieties.applyBroadProgress(0, _broadProgress)>>
 <</if>>
 
 <<if $secExpEnabled == 1>>
@@ -636,106 +497,7 @@
 <</if>>
 
 /* Progress overflow into influence */
-<<if $arcologies[0].FSSupremacist > $FSLockinLevel>>
-	<<set $arcologies[0].influenceBonus += $arcologies[0].FSSupremacist - $FSLockinLevel>>
-	<<set $arcologies[0].FSSupremacist = $FSLockinLevel>>
-<</if>>
-<<if $arcologies[0].FSSubjugationist > $FSLockinLevel>>
-	<<set $arcologies[0].influenceBonus += $arcologies[0].FSSubjugationist - $FSLockinLevel>>
-	<<set $arcologies[0].FSSubjugationist = $FSLockinLevel>>
-<</if>>
-<<if $arcologies[0].FSGenderRadicalist > $FSLockinLevel>>
-	<<set $arcologies[0].influenceBonus += $arcologies[0].FSGenderRadicalist - $FSLockinLevel>>
-	<<set $arcologies[0].FSGenderRadicalist = $FSLockinLevel>>
-<<elseif $arcologies[0].FSGenderFundamentalist > $FSLockinLevel>>
-	<<set $arcologies[0].influenceBonus += $arcologies[0].FSGenderFundamentalist - $FSLockinLevel>>
-	<<set $arcologies[0].FSGenderFundamentalist = $FSLockinLevel>>
-<</if>>
-<<if $arcologies[0].FSPaternalist > $FSLockinLevel>>
-	<<set $arcologies[0].influenceBonus += $arcologies[0].FSPaternalist - $FSLockinLevel>>
-	<<set $arcologies[0].FSPaternalist = $FSLockinLevel>>
-<<elseif $arcologies[0].FSPaternalist != "unset">>
-	<<set $arcologies[0].FSPaternalist += _broadProgress>>
-<<elseif $arcologies[0].FSDegradationist > $FSLockinLevel>>
-	<<set $arcologies[0].influenceBonus += $arcologies[0].FSDegradationist - $FSLockinLevel>>
-	<<set $arcologies[0].FSDegradationist = $FSLockinLevel>>
-<</if>>
-<<if $arcologies[0].FSIntellectualDependency > $FSLockinLevel>>
-	<<set $arcologies[0].influenceBonus += $arcologies[0].FSIntellectualDependency - $FSLockinLevel>>
-	<<set $arcologies[0].FSIntellectualDependency = $FSLockinLevel>>
-<<elseif $arcologies[0].FSSlaveProfessionalism > $FSLockinLevel>>
-	<<set $arcologies[0].influenceBonus += $arcologies[0].FSSlaveProfessionalism - $FSLockinLevel>>
-	<<set $arcologies[0].FSSlaveProfessionalism = $FSLockinLevel>>
-<</if>>
-<<if $arcologies[0].FSBodyPurist > $FSLockinLevel>>
-	<<set $arcologies[0].influenceBonus += $arcologies[0].FSBodyPurist - $FSLockinLevel>>
-	<<set $arcologies[0].FSBodyPurist = $FSLockinLevel>>
-<<elseif $arcologies[0].FSTransformationFetishist > $FSLockinLevel>>
-	<<set $arcologies[0].influenceBonus += $arcologies[0].FSTransformationFetishist - $FSLockinLevel>>
-	<<set $arcologies[0].FSTransformationFetishist = $FSLockinLevel>>
-<</if>>
-<<if $arcologies[0].FSPastoralist > $FSLockinLevel>>
-	<<set $arcologies[0].influenceBonus += $arcologies[0].FSPastoralist - $FSLockinLevel>>
-	<<set $arcologies[0].FSPastoralist = $FSLockinLevel>>
-<</if>>
-<<if $arcologies[0].FSPhysicalIdealist > $FSLockinLevel>>
-	<<set $arcologies[0].influenceBonus += $arcologies[0].FSPhysicalIdealist - $FSLockinLevel>>
-	<<set $arcologies[0].FSPhysicalIdealist = $FSLockinLevel>>
-<<elseif $arcologies[0].FSHedonisticDecadence > $FSLockinLevel>>
-	<<set $arcologies[0].influenceBonus += $arcologies[0].FSHedonisticDecadence - $FSLockinLevel>>
-	<<set $arcologies[0].FSHedonisticDecadence = $FSLockinLevel>>
-<</if>>
-<<if $arcologies[0].FSMaturityPreferentialist > $FSLockinLevel>>
-	<<set $arcologies[0].influenceBonus += $arcologies[0].FSMaturityPreferentialist - $FSLockinLevel>>
-	<<set $arcologies[0].FSMaturityPreferentialist = $FSLockinLevel>>
-<<elseif $arcologies[0].FSYouthPreferentialist > $FSLockinLevel>>
-	<<set $arcologies[0].influenceBonus += $arcologies[0].FSYouthPreferentialist - $FSLockinLevel>>
-	<<set $arcologies[0].FSYouthPreferentialist = $FSLockinLevel>>
-<</if>>
-<<if $arcologies[0].FSPetiteAdmiration > $FSLockinLevel>>
-	<<set $arcologies[0].influenceBonus += $arcologies[0].FSPetiteAdmiration - $FSLockinLevel>>
-	<<set $arcologies[0].FSPetiteAdmiration = $FSLockinLevel>>
-<<elseif $arcologies[0].FSStatuesqueGlorification > $FSLockinLevel>>
-	<<set $arcologies[0].influenceBonus += $arcologies[0].FSStatuesqueGlorification - $FSLockinLevel>>
-	<<set $arcologies[0].FSStatuesqueGlorification = $FSLockinLevel>>
-<</if>>
-<<if $arcologies[0].FSSlimnessEnthusiast > $FSLockinLevel>>
-	<<set $arcologies[0].influenceBonus += $arcologies[0].FSSlimnessEnthusiast - $FSLockinLevel>>
-	<<set $arcologies[0].FSSlimnessEnthusiast = $FSLockinLevel>>
-<<elseif $arcologies[0].FSAssetExpansionist > $FSLockinLevel>>
-	<<set $arcologies[0].influenceBonus += $arcologies[0].FSAssetExpansionist - $FSLockinLevel>>
-	<<set $arcologies[0].FSAssetExpansionist = $FSLockinLevel>>
-<</if>>
-<<if $arcologies[0].FSChattelReligionist > $FSLockinLevel>>
-	<<set $arcologies[0].influenceBonus += $arcologies[0].FSChattelReligionist - $FSLockinLevel>>
-	<<set $arcologies[0].FSChattelReligionist = $FSLockinLevel>>
-<</if>>
-<<if $arcologies[0].FSRomanRevivalist > $FSLockinLevel>>
-	<<set $arcologies[0].influenceBonus += $arcologies[0].FSRomanRevivalist - $FSLockinLevel>>
-	<<set $arcologies[0].FSRomanRevivalist = $FSLockinLevel>>
-<<elseif $arcologies[0].FSAztecRevivalist > $FSLockinLevel>>
-	<<set $arcologies[0].influenceBonus += $arcologies[0].FSAztecRevivalist - $FSLockinLevel>>
-	<<set $arcologies[0].FSAztecRevivalist = $FSLockinLevel>>
-<<elseif $arcologies[0].FSEgyptianRevivalist > $FSLockinLevel>>
-	<<set $arcologies[0].influenceBonus += $arcologies[0].FSEgyptianRevivalist - $FSLockinLevel>>
-	<<set $arcologies[0].FSEgyptianRevivalist = $FSLockinLevel>>
-<<elseif $arcologies[0].FSEdoRevivalist > $FSLockinLevel>>
-	<<set $arcologies[0].influenceBonus += $arcologies[0].FSEdoRevivalist - $FSLockinLevel>>
-	<<set $arcologies[0].FSEdoRevivalist = $FSLockinLevel>>
-<<elseif $arcologies[0].FSArabianRevivalist > $FSLockinLevel>>
-	<<set $arcologies[0].influenceBonus += $arcologies[0].FSArabianRevivalist - $FSLockinLevel>>
-	<<set $arcologies[0].FSArabianRevivalist = $FSLockinLevel>>
-<<elseif $arcologies[0].FSChineseRevivalist > $FSLockinLevel>>
-	<<set $arcologies[0].influenceBonus += $arcologies[0].FSChineseRevivalist - $FSLockinLevel>>
-	<<set $arcologies[0].FSChineseRevivalist = $FSLockinLevel>>
-<</if>>
-<<if $arcologies[0].FSRepopulationFocus > $FSLockinLevel>>
-	<<set $arcologies[0].influenceBonus += $arcologies[0].FSRepopulationFocus - $FSLockinLevel>>
-	<<set $arcologies[0].FSRepopulationFocus = $FSLockinLevel>>
-<<elseif $arcologies[0].FSRestart > $FSLockinLevel>>
-	<<set $arcologies[0].influenceBonus += $arcologies[0].FSRestart - $FSLockinLevel>>
-	<<set $arcologies[0].FSRestart = $FSLockinLevel>>
-<</if>>
+<<run FutureSocieties.overflowToInfluence(0)>>
 
 /* warm up policy influence */
 <<if $arcologies[0].FSEgyptianRevivalistIncestPolicy == 1 && $arcologies[0].FSEgyptianRevivalistInterest < 26>>
diff --git a/src/uncategorized/genericPlotEvents.tw b/src/uncategorized/genericPlotEvents.tw
index 3553703c7a99519911c14ee6b987a679c41923dc..23f73d85b12a076643d98ba44e95f7faad888de0 100644
--- a/src/uncategorized/genericPlotEvents.tw
+++ b/src/uncategorized/genericPlotEvents.tw
@@ -99,7 +99,7 @@ As you step off the elevator, you hear several <<if $seeDicks != 100>>female <</
 	<<set $activeSlave.skill.whoring = 35>>
 	<<set $activeSlave.boobs += 600>>
 	<<set $activeSlave.boobsImplant = 600>>
-	<<set $activeSlave.boobsImplantType = 1>>
+	<<set $activeSlave.boobsImplantType = "string">>
 	<<set $activeSlave.lipsPiercing = 1>>
 	<<set $activeSlave.earPiercing = 1>>
 	<<set $activeSlave.nosePiercing = 1>>
diff --git a/src/uncategorized/jeSlaveDispute.tw b/src/uncategorized/jeSlaveDispute.tw
index 1ca2f96ae081e68846e72e064dd907b9cd807c89..0803d07d9e0fcfbbe9c610aeb80d5f319ab63462 100644
--- a/src/uncategorized/jeSlaveDispute.tw
+++ b/src/uncategorized/jeSlaveDispute.tw
@@ -125,8 +125,10 @@
 	<<set $activeSlave.skill.entertainment = 15>>
 	<<set $activeSlave.boobs += 600>>
 	<<set $activeSlave.boobsImplant = 600>>
+	<<set $activeSlave.boobsImplantType = "normal">>
 	<<set $activeSlave.butt += 1>>
 	<<set $activeSlave.buttImplant = 1>>
+	<<set $activeSlave.buttImplantType = "normal">>
 	<<set $activeSlave.lips += 10>>
 	<<set $activeSlave.lipsImplant = 10>>
 	<<set $activeSlave.lipsPiercing = 1>>
diff --git a/src/uncategorized/lawCompliance.tw b/src/uncategorized/lawCompliance.tw
index 754f33e4b55b194a806e3147a8e4f26db075d440..7495980d049cb0db26702d79c10ac0b4072cd6c4 100644
--- a/src/uncategorized/lawCompliance.tw
+++ b/src/uncategorized/lawCompliance.tw
@@ -179,10 +179,12 @@
 	<<if $activeSlave.boobsImplant > 0>>
 		<<set $activeSlave.boobs -= $activeSlave.boobsImplant>>
 		<<set $activeSlave.boobsImplant = 0>>
+		<<set $activeSlave.boobsImplantType = "none">>
 	<</if>>
 	<<if $activeSlave.buttImplant > 0>>
 		<<set $activeSlave.butt -= $activeSlave.buttImplant>>
 		<<set $activeSlave.buttImplant = 0>>
+		<<set $activeSlave.buttImplantType = "none">>
 	<</if>>
 	<<if $activeSlave.lipsImplant > 0>>
 		<<set $activeSlave.lips -= $activeSlave.lipsImplant>>
@@ -199,10 +201,12 @@
 	<<if $activeSlave.boobsImplant == 0>>
 		<<set $activeSlave.boobsImplant = 400>>
 		<<set $activeSlave.boobs += $activeSlave.boobsImplant>>
+		<<set $activeSlave.boobsImplantType = "normal">>
 	<</if>>
 	<<if $activeSlave.buttImplant == 0>>
 		<<set $activeSlave.buttImplant = 1>>
 		<<set $activeSlave.butt += $activeSlave.buttImplant>>
+		<<set $activeSlave.buttImplantType = "normal">>
 	<</if>>
 	<<if $activeSlave.lipsImplant == 0>>
 		<<set $activeSlave.lipsImplant = 10>>
diff --git a/src/uncategorized/longSlaveDescription.tw b/src/uncategorized/longSlaveDescription.tw
index d4056b6899906e67a7fa4c6c1b9f1df6be1764b9..dc27f6fd135c81fed141fdfe4221a9c2ba362d00 100644
--- a/src/uncategorized/longSlaveDescription.tw
+++ b/src/uncategorized/longSlaveDescription.tw
@@ -3,6 +3,7 @@
 <<run SlaveStatClamp($activeSlave)>>
 <<setLocalPronouns $activeSlave>>
 
+<span id="artFrame">
 /* 000-250-006 */
 <<if $seeImages == 1 && $eventDescription != 1>>
 	<<if $imageChoice == 1>>
@@ -12,6 +13,7 @@
 	<</if>>
 <</if>>
 /* 000-250-006 */
+</span>
 
 &nbsp;&nbsp;&nbsp;&nbsp;
 
diff --git a/src/uncategorized/manageArcology.tw b/src/uncategorized/manageArcology.tw
index b385cf29d8a6a9ee707e66ab72d870572b0237f8..896280bfdda15ee90a4bbde23b26a6439e9528a3 100644
--- a/src/uncategorized/manageArcology.tw
+++ b/src/uncategorized/manageArcology.tw
@@ -521,7 +521,7 @@
 	Your arcology is named <<textbox "$arcologies[0].name" $arcologies[0].name "Manage Arcology">>
 </p>
 
-<<if $cheatMode == 1 && $seeExtreme == 1>>
+<<if $experimental.dinnerParty == 1 && $seeExtreme == 1>>
 	<p>
 		[[Host Dinner Party|Dinner Party Preparations]]
 	</p>
diff --git a/src/uncategorized/managePenthouse.tw b/src/uncategorized/managePenthouse.tw
index 938219a78967b8407df3db7f9fe3d38eb1bd1423..f59c83755ff599b9ef88923e8e1061bde871b8e8 100644
--- a/src/uncategorized/managePenthouse.tw
+++ b/src/uncategorized/managePenthouse.tw
@@ -88,15 +88,15 @@
 	</div>
 
 	<<if $familyTesting == 1 && $seePreg != 0>>
-		<<if $cheatMode == 1>>
-		<div>
-		<<if $nursery == 0>>
-			[[Build a nursery to raise children from birth|Manage Penthouse][cashX(forceNeg(Math.trunc(5000*$upgradeMultiplierArcology)), "capEx"), $nursery = 5, $nurseryNannies = 1, $PC.skill.engineering += 1]]
-			<span class="detail">Costs <<print cashFormat(Math.trunc(5000*$upgradeMultiplierArcology))>></span>
-		<<else>>
-				The penthouse has a nursery built where infants can be brought up.
-		<</if>>
-		</div>
+		<<if $experimental.nursery == 1>>
+			<div>
+				<<if $nursery == 0>>
+					[[Build a nursery to raise children from birth|Manage Penthouse][cashX(forceNeg(Math.trunc(5000*$upgradeMultiplierArcology)), "capEx"), $nursery = 5, $nurseryNannies = 1, $PC.skill.engineering += 1]]
+					<span class="detail">Costs <<print cashFormat(Math.trunc(5000*$upgradeMultiplierArcology))>></span>
+				<<else>>
+						The penthouse has a nursery built where infants can be brought up.
+				<</if>>
+			</div>
 		<</if>>
 	<</if>>
 
diff --git a/src/uncategorized/neighborsDevelopment.tw b/src/uncategorized/neighborsDevelopment.tw
index a5768bd73cdc10db8192ceae5df24cbc247a9acf..ad12e9105429aa45cee7000aa79a7dc03c718cb8 100644
--- a/src/uncategorized/neighborsDevelopment.tw
+++ b/src/uncategorized/neighborsDevelopment.tw
@@ -634,7 +634,7 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 
 /* FUTURE SOCIETY PROGRESS */
 
-<<set _societiesAdopted = 0>>
+<<set _societiesAdopted = FutureSocieties.activeCount($i)>>
 <<switch $arcologies[$i].government>>
 <<case "elected officials">>
 	<<set $efficiency = random(-2,2)>>
@@ -664,11 +664,10 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 	<<set _FSCrossThresh += 5>>
 <</if>>
 
+<<if $arcologies[$i].direction != 0>>
+	<<run FutureSocieties.applyBroadProgress($i, $efficiency)>>
+<</if>>
 <<if $arcologies[$i].FSSupremacist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSSupremacist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if ($arcologies[$j].FSSupremacist > $arcologies[$i].FSSupremacist + _FSCrossThresh) && ($arcologies[$j].FSSupremacistRace == $arcologies[$i].FSSupremacistRace)>>
@@ -682,10 +681,7 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 	<</for>>
 	<<if $arcologies[$i].direction != 0>>
 		<<if $arcologies[$i].FSSupremacist >= $FSLockinLevel>>
-			<<set $arcologies[$i].influenceBonus += $arcologies[$i].FSSupremacist - $FSLockinLevel>>
-			<<set $arcologies[$i].FSSupremacist = $FSLockinLevel>>
-			<<set $toSearch = $arcologies[$i].name>>
-			<<if ($toSearch.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
+			<<if ($arcologies[$i].name.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
 				Racial Supremacy for $arcologies[$i].FSSupremacistRace people has reached stability and acceptance there. The arcology has been renamed
 				<<switch $arcologies[$i].FSSupremacistRace>>
 				<<case "white">>
@@ -732,10 +728,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 <</if>>
 
 <<if $arcologies[$i].FSSubjugationist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSSubjugationist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if ($arcologies[$j].FSSubjugationist > $arcologies[$i].FSSubjugationist + _FSCrossThresh) && ($arcologies[$j].FSSubjugationistRace == $arcologies[$i].FSSubjugationistRace)>>
@@ -749,10 +741,7 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 	<</for>>
 	<<if $arcologies[$i].direction != 0>>
 		<<if $arcologies[$i].FSSubjugationist >= $FSLockinLevel>>
-			<<set $arcologies[$i].influenceBonus += $arcologies[$i].FSSubjugationist - $FSLockinLevel>>
-			<<set $arcologies[$i].FSSubjugationist = $FSLockinLevel>>
-			<<set $toSearch = $arcologies[$i].name>>
-			<<if ($toSearch.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
+			<<if ($arcologies[$i].name.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
 				Racial Subjugationism of $arcologies[$i].FSSubjugationistRace people has reached stability and acceptance there. The arcology has been renamed
 				<<switch $arcologies[$i].FSSubjugationistRace>>
 				<<case "white">>
@@ -799,10 +788,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 <</if>>
 
 <<if $arcologies[$i].FSRepopulationFocus != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSRepopulationFocus += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSRepopulationFocus > $arcologies[$i].FSRepopulationFocus + _FSCrossThresh>>
@@ -816,10 +801,7 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 	<</for>>
 	<<if $arcologies[$i].direction != 0>>
 		<<if $arcologies[$i].FSRepopulationFocus >= $FSLockinLevel>>
-			<<set $arcologies[$i].influenceBonus += $arcologies[$i].FSRepopulationFocus - $FSLockinLevel>>
-			<<set $arcologies[$i].FSRepopulationFocus = $FSLockinLevel>>
-			<<set $toSearch = $arcologies[$i].name>>
-			<<if ($toSearch.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
+			<<if ($arcologies[$i].name.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
 				Repopulationism has reached stability and acceptance there. The arcology has been renamed
 				<<set $arcologies[$i].name to setup.ArcologyNamesRepopulationist.random()>>
 				'' $arcologies[$i].name'' to mark the occasion.
@@ -847,10 +829,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 		<</if>>
 	<</if>>
 <<elseif $arcologies[$i].FSRestart != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSRestart += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSRestart > $arcologies[$i].FSRestart + _FSCrossThresh>>
@@ -864,10 +842,7 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 	<</for>>
 	<<if $arcologies[$i].direction != 0>>
 		<<if $arcologies[$i].FSRestart >= $FSLockinLevel>>
-			<<set $arcologies[$i].influenceBonus += $arcologies[$i].FSRestart - $FSLockinLevel>>
-			<<set $arcologies[$i].FSRestart = $FSLockinLevel>>
-			<<set $toSearch = $arcologies[$i].name>>
-			<<if ($toSearch.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
+			<<if ($arcologies[$i].name.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
 				<<set $arcologies[$i].FSRestartResearch = 1>>
 				Eugenics has reached stability and acceptance there. The arcology has been renamed
 				<<set $arcologies[$i].name = setup.ArcologyNamesEugenics.random()>>
@@ -898,10 +873,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 <</if>>
 
 <<if $arcologies[$i].FSGenderRadicalist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSGenderRadicalist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSGenderRadicalist > $arcologies[$i].FSGenderRadicalist + _FSCrossThresh>>
@@ -915,10 +886,7 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 	<</for>>
 	<<if $arcologies[$i].direction != 0>>
 		<<if $arcologies[$i].FSGenderRadicalist >= $FSLockinLevel>>
-			<<set $arcologies[$i].influenceBonus += $arcologies[$i].FSGenderRadicalist - $FSLockinLevel>>
-			<<set $arcologies[$i].FSGenderRadicalist = $FSLockinLevel>>
-			<<set $toSearch = $arcologies[$i].name>>
-			<<if ($toSearch.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
+			<<if ($arcologies[$i].name.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
 				<<set $arcologies[$i].FSGenderRadicalistResearch = 1>>
 				Gender Radicalism has reached stability and acceptance there. The arcology has been renamed
 				<<set $arcologies[$i].name = setup.ArcologyNamesGenderRadicalist.random()>>
@@ -953,10 +921,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 		<</if>>
 	<</if>>
 <<elseif $arcologies[$i].FSGenderFundamentalist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSGenderFundamentalist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSGenderFundamentalist > $arcologies[$i].FSGenderFundamentalist + _FSCrossThresh>>
@@ -970,10 +934,7 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 	<</for>>
 	<<if $arcologies[$i].direction != 0>>
 		<<if $arcologies[$i].FSGenderFundamentalist >= $FSLockinLevel>>
-			<<set $arcologies[$i].influenceBonus += $arcologies[$i].FSGenderFundamentalist - $FSLockinLevel>>
-			<<set $arcologies[$i].FSGenderFundamentalist = $FSLockinLevel>>
-			<<set $toSearch = $arcologies[$i].name>>
-			<<if ($toSearch.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
+			<<if ($arcologies[$i].name.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
 				Gender Fundamentalism has reached stability and acceptance there. The arcology has been renamed
 				<<set $arcologies[$i].name = setup.ArcologyNamesGenderFundamentalist.random()>>
 				'' $arcologies[$i].name'' to mark the occasion.
@@ -995,10 +956,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 <</if>>
 
 <<if $arcologies[$i].FSPaternalist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSPaternalist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSPaternalist > $arcologies[$i].FSPaternalist + _FSCrossThresh>>
@@ -1012,10 +969,7 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 	<</for>>
 	<<if $arcologies[$i].direction != 0>>
 		<<if $arcologies[$i].FSPaternalist >= $FSLockinLevel>>
-			<<set $arcologies[$i].influenceBonus += $arcologies[$i].FSPaternalist - $FSLockinLevel>>
-			<<set $arcologies[$i].FSPaternalist = $FSLockinLevel>>
-			<<set $toSearch = $arcologies[$i].name>>
-			<<if ($toSearch.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
+			<<if ($arcologies[$i].name.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
 				Paternalism has reached stability and acceptance there. The arcology has been renamed
 				<<set $arcologies[$i].name = setup.ArcologyNamesPaternalist.random()>>
 				'' $arcologies[$i].name'' to mark the occasion.
@@ -1044,10 +998,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 		<</if>>
 	<</if>>
 <<elseif $arcologies[$i].FSDegradationist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSDegradationist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSDegradationist > $arcologies[$i].FSDegradationist + _FSCrossThresh>>
@@ -1061,10 +1011,7 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 	<</for>>
 	<<if $arcologies[$i].direction != 0>>
 		<<if $arcologies[$i].FSDegradationist >= $FSLockinLevel>>
-			<<set $arcologies[$i].influenceBonus += $arcologies[$i].FSDegradationist - $FSLockinLevel>>
-			<<set $arcologies[$i].FSDegradationist = $FSLockinLevel>>
-			<<set $toSearch = $arcologies[$i].name>>
-			<<if ($toSearch.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
+			<<if ($arcologies[$i].name.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
 				Degradationism has reached stability and acceptance there. The arcology has been renamed
 				<<set $arcologies[$i].name = setup.ArcologyNamesDegradationist.random()>>
 				'' $arcologies[$i].name'' to mark the occasion.
@@ -1095,10 +1042,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 <</if>>
 
 <<if $arcologies[$i].FSIntellectualDependency != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSIntellectualDependency += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSIntellectualDependency > $arcologies[$i].FSIntellectualDependency + _FSCrossThresh>>
@@ -1112,10 +1055,7 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 	<</for>>
 	<<if $arcologies[$i].direction != 0>>
 		<<if $arcologies[$i].FSIntellectualDependency >= $FSLockinLevel>>
-			<<set $arcologies[$i].influenceBonus += $arcologies[$i].FSIntellectualDependency - $FSLockinLevel>>
-			<<set $arcologies[$i].FSIntellectualDependency = $FSLockinLevel>>
-			<<set $toSearch = $arcologies[$i].name>>
-			<<if ($toSearch.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
+			<<if ($arcologies[$i].name.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
 				Intellectual Dependency has reached stability and acceptance there. The arcology has been renamed
 				<<set $arcologies[$i].name = setup.ArcologyNamesIntellectualDependency.random()>>
 				'' $arcologies[$i].name'' to mark the occasion.
@@ -1139,10 +1079,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 		<</if>>
 	<</if>>
 <<elseif $arcologies[$i].FSSlaveProfessionalism != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSSlaveProfessionalism += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSSlaveProfessionalism > $arcologies[$i].FSSlaveProfessionalism + _FSCrossThresh>>
@@ -1156,10 +1092,7 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 	<</for>>
 	<<if $arcologies[$i].direction != 0>>
 		<<if $arcologies[$i].FSSlaveProfessionalism >= $FSLockinLevel>>
-			<<set $arcologies[$i].influenceBonus += $arcologies[$i].FSSlaveProfessionalism - $FSLockinLevel>>
-			<<set $arcologies[$i].FSSlaveProfessionalism = $FSLockinLevel>>
-			<<set $toSearch = $arcologies[$i].name>>
-			<<if ($toSearch.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
+			<<if ($arcologies[$i].name.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
 				<<set $arcologies[$i].FSSlaveProfessionalismResearch = 1>>
 				Slave Professionalism has reached stability and acceptance there. The arcology has been renamed
 				<<set $arcologies[$i].name = setup.ArcologyNamesSlaveProfessionalism.random()>>
@@ -1200,10 +1133,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 <</if>>
 
 <<if $arcologies[$i].FSBodyPurist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSBodyPurist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSBodyPurist > $arcologies[$i].FSBodyPurist + _FSCrossThresh>>
@@ -1217,10 +1146,7 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 	<</for>>
 	<<if $arcologies[$i].direction != 0>>
 		<<if $arcologies[$i].FSBodyPurist >= $FSLockinLevel>>
-			<<set $arcologies[$i].influenceBonus += $arcologies[$i].FSBodyPurist - $FSLockinLevel>>
-			<<set $arcologies[$i].FSBodyPurist = $FSLockinLevel>>
-			<<set $toSearch = $arcologies[$i].name>>
-			<<if ($toSearch.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
+			<<if ($arcologies[$i].name.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
 				Body Purism has reached stability and acceptance there. The arcology has been renamed
 				<<set $arcologies[$i].name = setup.ArcologyNamesBodyPurist.random()>>
 				'' $arcologies[$i].name'' to mark the occasion.
@@ -1242,10 +1168,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 		<</if>>
 	<</if>>
 <<elseif $arcologies[$i].FSTransformationFetishist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSTransformationFetishist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSTransformationFetishist > $arcologies[$i].FSTransformationFetishist + _FSCrossThresh>>
@@ -1259,10 +1181,7 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 	<</for>>
 	<<if $arcologies[$i].direction != 0>>
 		<<if $arcologies[$i].FSTransformationFetishist >= $FSLockinLevel>>
-			<<set $arcologies[$i].influenceBonus += $arcologies[$i].FSTransformationFetishist - $FSLockinLevel>>
-			<<set $arcologies[$i].FSTransformationFetishist = $FSLockinLevel>>
-			<<set $toSearch = $arcologies[$i].name>>
-			<<if ($toSearch.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
+			<<if ($arcologies[$i].name.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
 				<<set $arcologies[$i].FSTransformationFetishistResearch = 1>>
 				Transformation Fetishism has reached stability and acceptance there. The arcology has been renamed
 				<<set $arcologies[$i].name = setup.ArcologyNamesTransformationFetishist.random()>>
@@ -1289,10 +1208,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 <</if>>
 
 <<if $arcologies[$i].FSYouthPreferentialist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSYouthPreferentialist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSYouthPreferentialist > $arcologies[$i].FSYouthPreferentialist + _FSCrossThresh>>
@@ -1306,10 +1221,7 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 	<</for>>
 	<<if $arcologies[$i].direction != 0>>
 		<<if $arcologies[$i].FSYouthPreferentialist >= $FSLockinLevel>>
-			<<set $arcologies[$i].influenceBonus += $arcologies[$i].FSYouthPreferentialist - $FSLockinLevel>>
-			<<set $arcologies[$i].FSYouthPreferentialist = $FSLockinLevel>>
-			<<set $toSearch = $arcologies[$i].name>>
-			<<if ($toSearch.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
+			<<if ($arcologies[$i].name.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
 				Youth Preferentialism has reached stability and acceptance there. The arcology has been renamed
 				<<if $pedo_mode == 1 || $minimumSlaveAge < 6>>
 					<<set $arcologies[$i].name = setup.ArcologyNamesYouthPreferentialistLow.random()>>
@@ -1336,10 +1248,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 		<</if>>
 	<</if>>
 <<elseif $arcologies[$i].FSMaturityPreferentialist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSMaturityPreferentialist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSMaturityPreferentialist > $arcologies[$i].FSMaturityPreferentialist + _FSCrossThresh>>
@@ -1353,10 +1261,7 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 	<</for>>
 	<<if $arcologies[$i].direction != 0>>
 		<<if $arcologies[$i].FSMaturityPreferentialist >= $FSLockinLevel>>
-			<<set $arcologies[$i].influenceBonus += $arcologies[$i].FSMaturityPreferentialist - $FSLockinLevel>>
-			<<set $arcologies[$i].FSMaturityPreferentialist = $FSLockinLevel>>
-			<<set $toSearch = $arcologies[$i].name>>
-			<<if ($toSearch.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
+			<<if ($arcologies[$i].name.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
 				Maturity Preferentialism has reached stability and acceptance there. The arcology has been renamed
 				<<set $arcologies[$i].name = setup.ArcologyNamesMaturityPreferentialist.random()>>
 				'' $arcologies[$i].name'' to mark the occasion.
@@ -1378,10 +1283,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 <</if>>
 
 <<if $arcologies[$i].FSPetiteAdmiration != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSPetiteAdmiration += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSPetiteAdmiration > $arcologies[$i].FSPetiteAdmiration + _FSCrossThresh>>
@@ -1395,10 +1296,7 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 	<</for>>
 	<<if $arcologies[$i].direction != 0>>
 		<<if $arcologies[$i].FSPetiteAdmiration >= $FSLockinLevel>>
-			<<set $arcologies[$i].influenceBonus += $arcologies[$i].FSPetiteAdmiration - $FSLockinLevel>>
-			<<set $arcologies[$i].FSPetiteAdmiration = $FSLockinLevel>>
-			<<set $toSearch = $arcologies[$i].name>>
-			<<if ($toSearch.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
+			<<if ($arcologies[$i].name.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
 				Petite Admiration has reached stability and acceptance there. The arcology has been renamed
 				<<set $arcologies[$i].name = setup.ArcologyNamesPetiteAdmiration.random()>>
 				'' $arcologies[$i].name'' to mark the occasion.
@@ -1422,10 +1320,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 		<</if>>
 	<</if>>
 <<elseif $arcologies[$i].FSStatuesqueGlorification != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSStatuesqueGlorification += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSStatuesqueGlorification > $arcologies[$i].FSStatuesqueGlorification + _FSCrossThresh>>
@@ -1439,10 +1333,7 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 	<</for>>
 	<<if $arcologies[$i].direction != 0>>
 		<<if $arcologies[$i].FSStatuesqueGlorification >= $FSLockinLevel>>
-			<<set $arcologies[$i].influenceBonus += $arcologies[$i].FSStatuesqueGlorification - $FSLockinLevel>>
-			<<set $arcologies[$i].FSStatuesqueGlorification = $FSLockinLevel>>
-			<<set $toSearch = $arcologies[$i].name>>
-			<<if ($toSearch.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
+			<<if ($arcologies[$i].name.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
 				Statuesque Glorification has reached stability and acceptance there. The arcology has been renamed
 				<<set $arcologies[$i].name = setup.ArcologyNamesStatuesqueGlorification.random()>>
 				'' $arcologies[$i].name'' to mark the occasion.
@@ -1468,10 +1359,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 <</if>>
 
 <<if $arcologies[$i].FSSlimnessEnthusiast != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSSlimnessEnthusiast += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSSlimnessEnthusiast > $arcologies[$i].FSSlimnessEnthusiast + _FSCrossThresh>>
@@ -1485,10 +1372,7 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 	<</for>>
 	<<if $arcologies[$i].direction != 0>>
 		<<if $arcologies[$i].FSSlimnessEnthusiast >= $FSLockinLevel>>
-			<<set $arcologies[$i].influenceBonus += $arcologies[$i].FSSlimnessEnthusiast - $FSLockinLevel>>
-			<<set $arcologies[$i].FSSlimnessEnthusiast = $FSLockinLevel>>
-			<<set $toSearch = $arcologies[$i].name>>
-			<<if ($toSearch.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
+			<<if ($arcologies[$i].name.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
 				Slimness Enthusiasm has reached stability and acceptance there. The arcology has been renamed
 				<<set $arcologies[$i].name = setup.ArcologyNamesSlimnessEnthusiast.random()>>
 				'' $arcologies[$i].name'' to mark the occasion.
@@ -1511,10 +1395,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 		<</if>>
 	<</if>>
 <<elseif $arcologies[$i].FSAssetExpansionist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSAssetExpansionist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSAssetExpansionist > $arcologies[$i].FSAssetExpansionist + _FSCrossThresh>>
@@ -1528,10 +1408,7 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 	<</for>>
 	<<if $arcologies[$i].direction != 0>>
 		<<if $arcologies[$i].FSAssetExpansionist >= $FSLockinLevel>>
-			<<set $arcologies[$i].influenceBonus += $arcologies[$i].FSAssetExpansionist - $FSLockinLevel>>
-			<<set $arcologies[$i].FSAssetExpansionist = $FSLockinLevel>>
-			<<set $toSearch = $arcologies[$i].name>>
-			<<if ($toSearch.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
+			<<if ($arcologies[$i].name.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
 				<<set $arcologies[$i].FSAssetExpansionistResearch = 1>>
 				Asset Expansionism has reached stability and acceptance there. The arcology has been renamed
 				<<set $arcologies[$i].name = setup.ArcologyNamesAssetExpansionist.random()>>
@@ -1562,10 +1439,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 <</if>>
 
 <<if $arcologies[$i].FSPastoralist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSPastoralist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSPastoralist > $arcologies[$i].FSPastoralist + _FSCrossThresh>>
@@ -1576,10 +1449,7 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 	<</for>>
 	<<if $arcologies[$i].direction != 0>>
 		<<if $arcologies[$i].FSPastoralist >= $FSLockinLevel>>
-			<<set $arcologies[$i].influenceBonus += $arcologies[$i].FSPastoralist - $FSLockinLevel>>
-			<<set $arcologies[$i].FSPastoralist = $FSLockinLevel>>
-			<<set $toSearch = $arcologies[$i].name>>
-			<<if ($toSearch.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
+			<<if ($arcologies[$i].name.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
 				Pastoralism has reached stability and acceptance there. The arcology has been renamed
 				<<set $arcologies[$i].name = setup.ArcologyNamesPastoralist.random()>>
 				'' $arcologies[$i].name'' to mark the occasion.
@@ -1603,10 +1473,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 		<</if>>
 	<</if>>
 <<elseif $arcologies[$i].FSCummunism != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSCummunism += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSCummunism > $arcologies[$i].FSCummunism + _FSCrossThresh>>
@@ -1620,10 +1486,7 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 	<</for>>
 	<<if $arcologies[$i].direction != 0>>
 		<<if $arcologies[$i].FSCummunism >= $FSLockinLevel>>
-			<<set $arcologies[$i].influenceBonus += $arcologies[$i].FSCummunism - $FSLockinLevel>>
-			<<set $arcologies[$i].FSCummunism = $FSLockinLevel>>
-			<<set $toSearch = $arcologies[$i].name>>
-			<<if ($toSearch.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
+			<<if ($arcologies[$i].name.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
 				Cummunism has reached stability and acceptance there. The arcology has been renamed
 				<<set $arcologies[$i].name = setup.ArcologyNamesCummunism.random()>>
 				'' $arcologies[$i].name'' to mark the occasion.
@@ -1653,10 +1516,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 <</if>>
 
 <<if $arcologies[$i].FSPhysicalIdealist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSPhysicalIdealist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSPhysicalIdealist > $arcologies[$i].FSPhysicalIdealist + _FSCrossThresh>>
@@ -1670,10 +1529,7 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 	<</for>>
 	<<if $arcologies[$i].direction != 0>>
 		<<if $arcologies[$i].FSPhysicalIdealist >= $FSLockinLevel>>
-			<<set $arcologies[$i].influenceBonus += $arcologies[$i].FSPhysicalIdealist - $FSLockinLevel>>
-			<<set $arcologies[$i].FSPhysicalIdealist = $FSLockinLevel>>
-			<<set $toSearch = $arcologies[$i].name>>
-			<<if ($toSearch.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
+			<<if ($arcologies[$i].name.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
 				Physical Idealism has reached stability and acceptance there. The arcology has been renamed
 				<<set $arcologies[$i].name = setup.ArcologyNamesPhysicalIdealist.random()>>
 				'' $arcologies[$i].name'' to mark the occasion.
@@ -1701,10 +1557,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 		<</if>>
 	<</if>>
 <<elseif $arcologies[$i].FSHedonisticDecadence != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSHedonisticDecadence += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSHedonisticDecadence > $arcologies[$i].FSHedonisticDecadence + _FSCrossThresh>>
@@ -1718,10 +1570,7 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 	<</for>>
 	<<if $arcologies[$i].direction != 0>>
 		<<if $arcologies[$i].FSHedonisticDecadence >= $FSLockinLevel>>
-			<<set $arcologies[$i].influenceBonus += $arcologies[$i].FSHedonisticDecadence - $FSLockinLevel>>
-			<<set $arcologies[$i].FSHedonisticDecadence = $FSLockinLevel>>
-			<<set $toSearch = $arcologies[$i].name>>
-			<<if ($toSearch.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
+			<<if ($arcologies[$i].name.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
 				<<set $arcologies[$i].FSHedonisticDecadenceResearch = 1>>
 				Decadent Hedonism has reached stability and acceptance there. The arcology has been renamed
 				<<set $arcologies[$i].name = setup.ArcologyNamesHedonisticDecadence.random()>>
@@ -1748,10 +1597,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 <</if>>
 
 <<if $arcologies[$i].FSIncestFetishist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSIncestFetishist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSIncestFetishist > $arcologies[$i].FSIncestFetishist + _FSCrossThresh>>
@@ -1762,10 +1607,7 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 	<</for>>
 	<<if $arcologies[$i].direction != 0>>
 		<<if $arcologies[$i].FSIncestFetishist >= $FSLockinLevel>>
-			<<set $arcologies[$i].influenceBonus += $arcologies[$i].FSIncestFetishist - $FSLockinLevel>>
-			<<set $arcologies[$i].FSIncestFetishist = $FSLockinLevel>>
-			<<set $toSearch = $arcologies[$i].name>>
-			<<if ($toSearch.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
+			<<if ($arcologies[$i].name.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
 				Incest Fetishism has reached stability and acceptance there. The arcology has been renamed
 				<<set $arcologies[$i].name = setup.ArcologyNamesIncestFetishist.random()>>
 				'' $arcologies[$i].name'' to mark the occasion.
@@ -1787,10 +1629,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 <</if>>
 
 <<if $arcologies[$i].FSChattelReligionist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSChattelReligionist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSChattelReligionist > $arcologies[$i].FSChattelReligionist + _FSCrossThresh>>
@@ -1801,10 +1639,7 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 	<</for>>
 	<<if $arcologies[$i].direction != 0>>
 		<<if $arcologies[$i].FSChattelReligionist >= $FSLockinLevel>>
-			<<set $arcologies[$i].influenceBonus += $arcologies[$i].FSChattelReligionist - $FSLockinLevel>>
-			<<set $arcologies[$i].FSChattelReligionist = $FSLockinLevel>>
-			<<set $toSearch = $arcologies[$i].name>>
-			<<if ($toSearch.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
+			<<if ($arcologies[$i].name.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
 				Chattel Religionism has reached stability and acceptance there. The arcology has been renamed
 				<<set $arcologies[$i].name = setup.ArcologyNamesChattelReligionist.random()>>
 				'' $arcologies[$i].name'' to mark the occasion.
@@ -1830,10 +1665,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 <</if>>
 
 <<if $arcologies[$i].FSRomanRevivalist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSRomanRevivalist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSRomanRevivalist > $arcologies[$i].FSRomanRevivalist + _FSCrossThresh>>
@@ -1859,10 +1690,7 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 	<</for>>
 	<<if $arcologies[$i].direction != 0>>
 		<<if $arcologies[$i].FSRomanRevivalist >= $FSLockinLevel>>
-			<<set $arcologies[$i].influenceBonus += $arcologies[$i].FSRomanRevivalist - $FSLockinLevel>>
-			<<set $arcologies[$i].FSRomanRevivalist = $FSLockinLevel>>
-			<<set $toSearch = $arcologies[$i].name>>
-			<<if ($toSearch.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
+			<<if ($arcologies[$i].name.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
 				Roman Revivalism has reached stability and acceptance there. The arcology has been renamed
 				<<set $arcologies[$i].name = setup.ArcologyNamesRomanRevivalist.random()>>
 				'' $arcologies[$i].name'' to mark the occasion.
@@ -1882,10 +1710,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 		<</if>>
 	<</if>>
 <<elseif $arcologies[$i].FSAztecRevivalist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSAztecRevivalist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSAztecRevivalist > $arcologies[$i].FSAztecRevivalist + _FSCrossThresh>>
@@ -1911,10 +1735,7 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 	<</for>>
 	<<if $arcologies[$i].direction != 0>>
 		<<if $arcologies[$i].FSAztecRevivalist >= $FSLockinLevel>>
-			<<set $arcologies[$i].influenceBonus += $arcologies[$i].FSAztecRevivalist - $FSLockinLevel>>
-			<<set $arcologies[$i].FSAztecRevivalist = $FSLockinLevel>>
-			<<set $toSearch = $arcologies[$i].name>>
-			<<if ($toSearch.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
+			<<if ($arcologies[$i].name.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
 				Aztec Revivalism has reached stability and acceptance there. The arcology has been renamed
 				<<set $arcologies[$i].name = setup.ArcologyNamesAztecRevivalist.random()>>
 				'' $arcologies[$i].name'' to mark the occasion.
@@ -1934,10 +1755,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 		<</if>>
 	<</if>>
 <<elseif $arcologies[$i].FSEgyptianRevivalist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSEgyptianRevivalist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSEgyptianRevivalist > $arcologies[$i].FSEgyptianRevivalist + _FSCrossThresh>>
@@ -1963,10 +1780,7 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 	<</for>>
 	<<if $arcologies[$i].direction != 0>>
 		<<if $arcologies[$i].FSEgyptianRevivalist >= $FSLockinLevel>>
-			<<set $arcologies[$i].influenceBonus += $arcologies[$i].FSEgyptianRevivalist - $FSLockinLevel>>
-			<<set $arcologies[$i].FSEgyptianRevivalist = $FSLockinLevel>>
-			<<set $toSearch = $arcologies[$i].name>>
-			<<if ($toSearch.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
+			<<if ($arcologies[$i].name.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
 				Egyptian Revivalism has reached stability and acceptance there. The arcology has been renamed
 				<<set $arcologies[$i].name = setup.ArcologyNamesEgyptianRevivalist.random()>>
 				'' $arcologies[$i].name'' to mark the occasion.
@@ -1986,10 +1800,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 		<</if>>
 	<</if>>
 <<elseif $arcologies[$i].FSEdoRevivalist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSEdoRevivalist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSEdoRevivalist > $arcologies[$i].FSEdoRevivalist + _FSCrossThresh>>
@@ -2015,10 +1825,7 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 	<</for>>
 	<<if $arcologies[$i].direction != 0>>
 		<<if $arcologies[$i].FSEdoRevivalist >= $FSLockinLevel>>
-			<<set $arcologies[$i].influenceBonus += $arcologies[$i].FSEdoRevivalist - $FSLockinLevel>>
-			<<set $arcologies[$i].FSEdoRevivalist = $FSLockinLevel>>
-			<<set $toSearch = $arcologies[$i].name>>
-			<<if ($toSearch.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
+			<<if ($arcologies[$i].name.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
 				Edo Revivalism has reached stability and acceptance there. The arcology has been renamed
 				<<set $arcologies[$i].name = setup.ArcologyNamesEdoRevivalist.random()>>
 				'' $arcologies[$i].name'' to mark the occasion.
@@ -2038,10 +1845,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 		<</if>>
 	<</if>>
 <<elseif $arcologies[$i].FSArabianRevivalist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSArabianRevivalist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSArabianRevivalist > $arcologies[$i].FSArabianRevivalist + _FSCrossThresh>>
@@ -2067,10 +1870,7 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 	<</for>>
 	<<if $arcologies[$i].direction != 0>>
 		<<if $arcologies[$i].FSArabianRevivalist >= $FSLockinLevel>>
-			<<set $arcologies[$i].influenceBonus += $arcologies[$i].FSArabianRevivalist - $FSLockinLevel>>
-			<<set $arcologies[$i].FSArabianRevivalist = $FSLockinLevel>>
-			<<set $toSearch = $arcologies[$i].name>>
-			<<if ($toSearch.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
+			<<if ($arcologies[$i].name.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
 				Arabian Revivalism has reached stability and acceptance there. The arcology has been renamed
 				<<set $arcologies[$i].name = setup.ArcologyNamesArabianRevivalist.random()>>
 				'' $arcologies[$i].name'' to mark the occasion.
@@ -2094,10 +1894,6 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 		<</if>>
 	<</if>>
 <<elseif $arcologies[$i].FSChineseRevivalist != "unset">>
-	<<set _societiesAdopted += 1>>
-	<<if $arcologies[$i].direction != 0>>
-		<<set $arcologies[$i].FSChineseRevivalist += $efficiency>>
-	<</if>>
 	<<for $j = 0; $j < $arcologies.length; $j++>>
 		<<if $arcologies[$i].direction != $arcologies[$j].direction>>
 			<<if $arcologies[$j].FSChineseRevivalist > $arcologies[$i].FSChineseRevivalist + _FSCrossThresh>>
@@ -2123,10 +1919,7 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 	<</for>>
 	<<if $arcologies[$i].direction != 0>>
 		<<if $arcologies[$i].FSChineseRevivalist >= $FSLockinLevel>>
-			<<set $arcologies[$i].influenceBonus += $arcologies[$i].FSChineseRevivalist - $FSLockinLevel>>
-			<<set $arcologies[$i].FSChineseRevivalist = $FSLockinLevel>>
-			<<set $toSearch = $arcologies[$i].name>>
-			<<if ($toSearch.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
+			<<if ($arcologies[$i].name.indexOf("Arcology") != -1) && (random(0,2) == 0)>>
 				Chinese Revivalism has reached stability and acceptance there. The arcology has been renamed
 				<<set $arcologies[$i].name = setup.ArcologyNamesChineseRevivalist.random()>>
 				'' $arcologies[$i].name'' to mark the occasion.
@@ -2146,6 +1939,7 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(_prosperity)>><<if $sh
 		<</if>>
 	<</if>>
 <</if>>
+<<run FutureSocieties.overflowToInfluence($i)>>
 
 /* FUTURE SOCIETY ADOPTION */
 
diff --git a/src/uncategorized/neighborsFSAdoption.tw b/src/uncategorized/neighborsFSAdoption.tw
index 0ec292191497c1bcb0158481af06a252d5b27fd1..640fe8b230458efc44a994e03eac08acdd95655c 100644
--- a/src/uncategorized/neighborsFSAdoption.tw
+++ b/src/uncategorized/neighborsFSAdoption.tw
@@ -496,74 +496,40 @@ societal development.
 		<</if>>
 	<</if>>
 <</if>>
-<<if $familyTesting == 1>>
-	<<if ($arcologies[$i].FSRomanRevivalist == "unset")>>
-	<<if ($arcologies[$i].FSAztecRevivalist == "unset")>>
-	<<if ($arcologies[$i].FSEgyptianRevivalist == "unset")>>
-	<<if ($arcologies[$i].FSEdoRevivalist == "unset")>>
-	<<if ($arcologies[$i].FSArabianRevivalist == "unset")>>
-	<<if ($arcologies[$i].FSChineseRevivalist == "unset")>>
-		<<if ($leaders[$j].relationshipTarget != 0)>>
-			<<set _lover = $slaves.findIndex(function(s) { return areRelated(s, $leaders[$j]) && $leaders[$j].relationshipTarget == s.ID; })>>
-			<<if _lover != -1>>
-				Your agent @@.pink;$leaders[$j].slaveName@@ successfully pushes it to @@.yellow;adopt Egyptian Revivalism,@@ since $he's already part of a gloriously incestuous relationship.
-				<<set $arcologies[$i].FSEgyptianRevivalist = 5>><<break>>
-			<</if>>
-		<<elseif $leaders[$j].nationality == "Chinese">>
-			Your agent @@.pink;$leaders[$j].slaveName@@ successfully pushes it to @@.yellow;adopt Chinese Revivalism,@@ since $he's Chinese $himself and can claim high honor in such a society.
-			<<set $arcologies[$i].FSChineseRevivalist = 5>><<break>>
-		<<elseif $leaders[$j].nationality == "Japanese">>
-			Your agent @@.pink;$leaders[$j].slaveName@@ successfully pushes it to @@.yellow;adopt Edo Revivalism,@@ since $he's Japanese $himself and can claim high honor in such a society.
-			<<set $arcologies[$i].FSEdoRevivalist = 5>><<break>>
-		<<elseif $leaders[$j].nationality == "Mexican">>
-			Your agent @@.pink;$leaders[$j].slaveName@@ successfully pushes it to @@.yellow;adopt Aztec Revivalism,@@ since $he's Mexican $himself and can claim high honor in such a society.
-			<<set $arcologies[$i].FSAztecRevivalist = 5>><<break>>
-		<<elseif $leaders[$j].behavioralQuirk == "confident">>
-			Your agent @@.pink;$leaders[$j].slaveName@@ successfully pushes it to @@.yellow;adopt Roman Revivalism,@@ since it appeals to $his confident, patrician nature.
-			<<set $arcologies[$i].FSRomanRevivalist = 5>><<break>>
-		<<elseif $leaders[$j].fetish == "dom">>
-			Your agent @@.pink;$leaders[$j].slaveName@@ successfully pushes it to @@.yellow;adopt Arabian Revivalism,@@ since $he's sexually dominant and quite likes the idea of overseeing slave bazaars.
-			<<set $arcologies[$i].FSArabianRevivalist = 5>><<break>>
-		<</if>>
-	<</if>>
-	<</if>>
-	<</if>>
-	<</if>>
-	<</if>>
-	<</if>>
-<<else>>
-	<<if ($arcologies[$i].FSRomanRevivalist == "unset")>>
-	<<if ($arcologies[$i].FSAztecRevivalist == "unset")>>
-	<<if ($arcologies[$i].FSEgyptianRevivalist == "unset")>>
-	<<if ($arcologies[$i].FSEdoRevivalist == "unset")>>
-	<<if ($arcologies[$i].FSArabianRevivalist == "unset")>>
-	<<if ($arcologies[$i].FSChineseRevivalist == "unset")>>
-		<<if ($leaders[$j].relationshipTarget != 0) && ($leaders[$j].relationshipTarget == $leaders[$j].relationTarget)>>
+<<if ($arcologies[$i].FSRomanRevivalist == "unset")>>
+<<if ($arcologies[$i].FSAztecRevivalist == "unset")>>
+<<if ($arcologies[$i].FSEgyptianRevivalist == "unset")>>
+<<if ($arcologies[$i].FSEdoRevivalist == "unset")>>
+<<if ($arcologies[$i].FSArabianRevivalist == "unset")>>
+<<if ($arcologies[$i].FSChineseRevivalist == "unset")>>
+	<<if ($leaders[$j].relationshipTarget != 0)>>
+		<<set _lover = getSlave($leaders[$j].relationshipTarget)>>
+		<<if (def _lover) && areRelated($leaders[$j], _lover)>>
 			Your agent @@.pink;$leaders[$j].slaveName@@ successfully pushes it to @@.yellow;adopt Egyptian Revivalism,@@ since $he's already part of a gloriously incestuous relationship.
 			<<set $arcologies[$i].FSEgyptianRevivalist = 5>><<break>>
-		<<elseif $leaders[$j].nationality == "Chinese">>
-			Your agent @@.pink;$leaders[$j].slaveName@@ successfully pushes it to @@.yellow;adopt Chinese Revivalism,@@ since $he's Chinese $himself and can claim high honor in such a society.
-			<<set $arcologies[$i].FSChineseRevivalist = 5>><<break>>
-		<<elseif $leaders[$j].nationality == "Japanese">>
-			Your agent @@.pink;$leaders[$j].slaveName@@ successfully pushes it to @@.yellow;adopt Edo Revivalism,@@ since $he's Japanese $himself and can claim high honor in such a society.
-			<<set $arcologies[$i].FSEdoRevivalist = 5>><<break>>
-		<<elseif $leaders[$j].nationality == "Mexican">>
-			Your agent @@.pink;$leaders[$j].slaveName@@ successfully pushes it to @@.yellow;adopt Aztec Revivalism,@@ since $he's Mexican $himself and can claim high honor in such a society.
-			<<set $arcologies[$i].FSAztecRevivalist = 5>><<break>>
-		<<elseif $leaders[$j].behavioralQuirk == "confident">>
-			Your agent @@.pink;$leaders[$j].slaveName@@ successfully pushes it to @@.yellow;adopt Roman Revivalism,@@ since it appeals to $his confident, patrician nature.
-			<<set $arcologies[$i].FSRomanRevivalist = 5>><<break>>
-		<<elseif $leaders[$j].fetish == "dom">>
-			Your agent @@.pink;$leaders[$j].slaveName@@ successfully pushes it to @@.yellow;adopt Arabian Revivalism,@@ since $he's sexually dominant and quite likes the idea of overseeing slave bazaars.
-			<<set $arcologies[$i].FSArabianRevivalist = 5>><<break>>
 		<</if>>
+	<<elseif $leaders[$j].nationality == "Chinese">>
+		Your agent @@.pink;$leaders[$j].slaveName@@ successfully pushes it to @@.yellow;adopt Chinese Revivalism,@@ since $he's Chinese $himself and can claim high honor in such a society.
+		<<set $arcologies[$i].FSChineseRevivalist = 5>><<break>>
+	<<elseif $leaders[$j].nationality == "Japanese">>
+		Your agent @@.pink;$leaders[$j].slaveName@@ successfully pushes it to @@.yellow;adopt Edo Revivalism,@@ since $he's Japanese $himself and can claim high honor in such a society.
+		<<set $arcologies[$i].FSEdoRevivalist = 5>><<break>>
+	<<elseif $leaders[$j].nationality == "Mexican">>
+		Your agent @@.pink;$leaders[$j].slaveName@@ successfully pushes it to @@.yellow;adopt Aztec Revivalism,@@ since $he's Mexican $himself and can claim high honor in such a society.
+		<<set $arcologies[$i].FSAztecRevivalist = 5>><<break>>
+	<<elseif $leaders[$j].behavioralQuirk == "confident">>
+		Your agent @@.pink;$leaders[$j].slaveName@@ successfully pushes it to @@.yellow;adopt Roman Revivalism,@@ since it appeals to $his confident, patrician nature.
+		<<set $arcologies[$i].FSRomanRevivalist = 5>><<break>>
+	<<elseif $leaders[$j].fetish == "dom">>
+		Your agent @@.pink;$leaders[$j].slaveName@@ successfully pushes it to @@.yellow;adopt Arabian Revivalism,@@ since $he's sexually dominant and quite likes the idea of overseeing slave bazaars.
+		<<set $arcologies[$i].FSArabianRevivalist = 5>><<break>>
 	<</if>>
-	<</if>>
-	<</if>>
-	<</if>>
-	<</if>>
-	<</if>>
-<</if>> /* closes extended family mode */
+<</if>>
+<</if>>
+<</if>>
+<</if>>
+<</if>>
+<</if>>
 
 <<set _adopted = 0>> /* did not break out of the for loop, so no FS was adopted */
 <</if>>
diff --git a/src/uncategorized/newSlaveIntro.tw b/src/uncategorized/newSlaveIntro.tw
index 19a2711b0a8ad5c1f08038359ea49d7dc185a721..020304cd7120194490b9ad62885a84a08f60b45b 100644
--- a/src/uncategorized/newSlaveIntro.tw
+++ b/src/uncategorized/newSlaveIntro.tw
@@ -929,10 +929,12 @@ The legalities completed, <span class='slave-name'><<= SlaveFullName($activeSlav
 		<<set $activeSlave.devotion += 4>>
 		<<set $activeSlave.boobs -= $activeSlave.boobsImplant>>
 		<<set $activeSlave.boobsImplant = 0>>
+		<<set $activeSlave.boobsImplantType = "none">>
 		<<set $activeSlave.lips -= $activeSlave.lipsImplant>>
 		<<set $activeSlave.lipsImplant = 0>>
 		<<set $activeSlave.butt -= $activeSlave.buttImplant>>
 		<<set $activeSlave.buttImplant = 0>>
+		<<set $activeSlave.buttImplantType = "none">>
 		<<set $activeSlave.lipsPiercing = 0>>
 		<<set $activeSlave.tonguePiercing = 0>>
 		<<set $activeSlave.nosePiercing = 0>>
diff --git a/src/uncategorized/nonRandomEvent.tw b/src/uncategorized/nonRandomEvent.tw
index af321d54b07444ac3db3d5b946c780d92b135734..aa9f340454b7ba070ecf7d68e51fcd4845e505aa 100644
--- a/src/uncategorized/nonRandomEvent.tw
+++ b/src/uncategorized/nonRandomEvent.tw
@@ -60,7 +60,7 @@
 	<</if>>
 <<elseif (_effectiveWeek == 46) && ($mercenaries > 0)>>
 	<<goto "P raid invitation">>
-<<elseif (_effectiveWeek == 48) && ($cheatMode == 1)>>
+<<elseif (_effectiveWeek == 48) && ($experimental.food == 1)>>
 	<<set $foodCrisis = 1>>
 	<<goto "P food crisis">>
 <<elseif (_effectiveWeek == 50) && ($rations > 0)>>
diff --git a/src/uncategorized/options.tw b/src/uncategorized/options.tw
index 18ec7934246cce11c0c653b3621c0ecb1f1f280d..d23f707e2f72d9d31d9ebfba40b1b7e52c0c656e 100644
--- a/src/uncategorized/options.tw
+++ b/src/uncategorized/options.tw
@@ -90,6 +90,7 @@ This save was created using FC version $ver build $releaseID.
 <button class="tablinks" onclick="App.UI.tabbar.openTab(event, 'CONTENT&FLAVOR')" id="tab CONTENT&FLAVOR">Content & flavour</button>
 <button class="tablinks" onclick="App.UI.tabbar.openTab(event, 'MODS')" id="tab MODS">Mods</button>
 <button class="tablinks" onclick="App.UI.tabbar.openTab(event, 'DEBUG/CHEATING')" id="tab DEBUG/CHEATING">Debug/cheating</button>
+<button class="tablinks" onclick="App.UI.tabbar.openTab(event, 'Experimental')" id="tab Experimental">Experimental</button>
 <br>
 
 <div id="Display" class="tabcontent">
@@ -1033,3 +1034,46 @@ This save was created using FC version $ver build $releaseID.
 		<</if>>
 	</div>
 </div>
+
+<div id="Experimental" class="tabcontent">
+	<div class="subHeading" style="fontWeight:bold">
+		Experimental means just that: experimental.  Options below are likely to be in an <span class="yellow">even more incomplete or broken state than usual.</span>  <span class="red">THEY MAY NOT WORK AT ALL.</span>  Make sure you back up your save before enabling any of these, and if you are that interested, consider helping to improve them.
+	</div>
+	<<if ($familyTesting === 1 && $seePreg !== 0)>>
+		<<options $experimental.nursery>>
+			Nursery is
+			<<option 1 "Enabled">>
+			<<option 0 "Disabled">>
+			<<comment>>
+			This will enable the experimental nursery, which allows players to interact with growing slave children.  An alternative to the incubator.
+		<</options>>
+	<</if>>
+
+	<<options $experimental.food>>
+		Food is
+		<<option 1 "Enabled">>
+		<<option 0 "Disabled">>
+		<<comment>>
+		This will enable the experimental food supply and demand system, as well as a new farmyard building and assignments.
+	<</options>>
+
+	<<if $seeExtreme === 1 && $seeBestiality === 1>>
+		<<options $experimental.animalOvaries>>
+			Animal Ovaries
+			<<option 1 "Enabled">>
+			<<option 0 "Disabled">>
+			<<comment>>
+			This will allow slaves to be impregnated by animals.
+		<</options>>
+	<</if>>
+
+	<<if $seeExtreme === 1>>
+		<<options $experimental.dinnerParty>>
+			Dinner party
+			<<option 1 "Enabled">>
+			<<option 0 "Disabled">>
+			<<comment>>
+			This will enable a controversial but very broken event.  Warning: Snuff, cannibalism.
+		<</options>>
+	<</if>>
+</div>
diff --git a/src/uncategorized/pRivalryActions.tw b/src/uncategorized/pRivalryActions.tw
index 8a4ce82adf268f8d9b482d734a579677b8c841cc..cf9ce0a3770427b224d01412591461764f89445f 100644
--- a/src/uncategorized/pRivalryActions.tw
+++ b/src/uncategorized/pRivalryActions.tw
@@ -148,6 +148,7 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty
 		<<set $hostage.devotion -= 5>>
 		<<set $hostage.boobs += 2000>>
 		<<set $hostage.boobsImplant += 2000>>
+		<<set $hostage.boobsImplantType = "advanced fillable">>
 		<<set $hostage.behavioralFlaw = "anorexic">>
 		<<set $hostage.sexualFlaw = "shamefast">>
 		struggling against $his restraints on the operating table as a pair of 2000cc implants are forced into $his chest.
@@ -409,6 +410,9 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty
 		<<set $hostage.devotion -= 5>>
 		<<set $hostage.boobs += 2000>>
 		<<set $hostage.boobsImplant += 2000>>
+		<<if $hostage.boobsImplant > 10000>>
+			<<set $hostage.boobsImplantType = "hyper fillable">>
+		<</if>>
 		<<set $hostage.fetish = "boobs">>
 		<<set $hostage.fetishStrength = 10>>
 		blushing as $he attempts to get dressed with $his massive <<print $hostage.boobs>>cc fake tits getting in the way.
@@ -537,6 +541,7 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty
 			get a big pair of fillable implants in you right away."
 			<<set $hostage.boobs += 1000>>
 			<<set $hostage.boobsImplant += 1000>>
+			<<set $hostage.boobsImplantType = "fillable">>
 		<<case "sadist">>
 			have a sissy little bitch in reach for you to torment as you please."
 		<<case "masochist">>
@@ -805,8 +810,12 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty
 		<<set $hostage.devotion -= 5>>
 		<<set $hostage.boobs += 2000>>
 		<<set $hostage.boobsImplant += 2000>>
+		<<if $hostage.boobsImplant > 10000>>
+			<<set $hostage.boobsImplantType = "hyper fillable">>
+		<</if>>
 		<<set $hostage.butt = 7>>
 		<<set $hostage.buttImplant = 4>>
+		<<set $hostage.buttImplantType = "fillable">>
 		<<set $hostage.behavioralFlaw = "none">>
 		<<set $hostage.behavioralQuirk = "insecure">>
 		<<set $hostage.sexualFlaw = "crude">>
@@ -909,6 +918,9 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty
 		<<case "boobs">>
 			<<set $hostage.boobs += 100>>
 			<<set $hostage.boobsImplant += 100>>
+			<<if $hostage.boobsImplant > 2000>>
+				<<set $hostage.boobsImplantType = "advanced fillable">>
+			<</if>>
 		<<case "pregnancy">>
 			<<set $hostage.preg++>>
 			<<set $hostage.pregKnown = 1>>
@@ -1187,6 +1199,9 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty
 		<<set $hostage.devotion -= 5>>
 		<<set $hostage.boobs += 2000>>
 		<<set $hostage.boobsImplant += 2000>>
+		<<if $hostage.boobsImplant > 10000>>
+			<<set $hostage.boobsImplantType = "hyper fillable">>
+		<</if>>
 		<<set $hostage.fetishStrength = 100>>
 		<<set $hostage.sexualFlaw = "breast growth">>
 		getting $his taut <<print $hostage.boobs>>cc tits massaged by a pair of flat slaves. $He is rambling on about how much happier $he is with $his massive implants than when $he was flat like them.
@@ -1263,6 +1278,9 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty
 		<<case "boobs">>
 			<<set $hostage.boobs += 100>>
 			<<set $hostage.boobsImplant += 100>>
+			<<if $hostage.boobsImplant > 2000>>
+				<<set $hostage.boobsImplantType = "advanced fillable">>
+			<</if>>
 		<<case "pregnancy">>
 			<<set $hostage.preg++>>
 			<<set $hostage.pregKnown = 1>>
@@ -1498,7 +1516,8 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty
 		<</if>>
 	<<case "Body Purism">>
 		<<set $hostage.boobs = 50000>>
-		<<set $hostage.boobsImplant 45000>>
+		<<set $hostage.boobsImplant = 45000>>
+		<<set $hostage.boobsImplantType = "hyper fillable">>
 		giving an interview. $He gushes over how great it feels being more silicone than $girl and how terrible it is that some people want to deny girls this pleasure.
 	<<case "Transformation Fetishism">>
 		<<set $hostage.counter.vaginal += 1>>
@@ -1557,6 +1576,9 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty
 			"I love my big boobs and get off watching them get bigger!"
 			<<set $hostage.boobs += 100>>
 			<<set $hostage.boobsImplant += 100>>
+			<<if $hostage.boobsImplant > 2000>>
+				<<set $hostage.boobsImplantType = "advanced fillable">>
+			<</if>>
 			<<set $hostage.sexualFlaw = "breast growth">>
 		<<case "sadist">>
 			"Nothing turns me on more than crushing my lovers' nuts! That or maybe whipping or cutting them... Or anything that makes them bleed..."
@@ -2160,6 +2182,9 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty
 			<<set $hostage.devotion -= 5>>
 			<<set $hostage.boobs += 2000>>
 			<<set $hostage.boobsImplant += 2000>>
+			<<if $hostage.boobsImplant > 10000>>
+				<<set $hostage.boobsImplantType = "hyper fillable">>
+			<</if>>
 			<<set _hostageAction.push("trying desperately to stand despite $his massive <<print $hostage.boobs>>cc fake tits.")>>
 			<<set _hostageAction.push("crying while trying to get comfortable with $his <<print $hostage.boobs>>cc fake tits.")>>
 			<<set _hostageAction.push("sobbing as an autosurgery reads out how much $his <<print $hostage.boobs>>cc implants can be expanded this week.")>>
@@ -2169,6 +2194,9 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty
 			<<set $hostage.fetishStrength += 5>>
 			<<set $hostage.boobs += 1000>>
 			<<set $hostage.boobsImplant += 1000>>
+			<<if $hostage.boobsImplant > 10000>>
+				<<set $hostage.boobsImplantType = "hyper fillable">>
+			<</if>>
 			<<set _hostageAction.push("reluctantly exploring $his new massive <<print $hostage.boobs>>cc implants.")>>
 			<<set _hostageAction.push("reluctantly exploring new resting positions due to $his <<print $hostage.boobs>>cc implants.")>>
 			<<set _hostageAction.push("crying as an autosurgery reads out how much $his <<print $hostage.boobs>>cc implants can be expanded this week.")>>
@@ -2178,6 +2206,9 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty
 			<<set $hostage.fetishStrength += 5>>
 			<<set $hostage.boobs += 1000>>
 			<<set $hostage.boobsImplant += 1000>>
+			<<if $hostage.boobsImplant > 10000>>
+				<<set $hostage.boobsImplantType = "hyper fillable">>
+			<</if>>
 			<<set _hostageAction.push("happily playing with $his truly immense <<print $hostage.boobs>>cc breast implants and huge butt implants.")>>
 			<<set _hostageAction.push("happily resting $his head on $his <<print $hostage.boobs>>cc breast implants.")>>
 			<<set _hostageAction.push("blushing as an autosurgery reads out how much $his <<print $hostage.boobs>>cc implants can be expanded this week.")>>
@@ -2186,6 +2217,9 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty
 			<<set $hostage.devotion -= 5>>
 			<<set $hostage.boobs += 1000>>
 			<<set $hostage.boobsImplant += 1000>>
+			<<if $hostage.boobsImplant > 10000>>
+				<<set $hostage.boobsImplantType = "hyper fillable">>
+			<</if>>
 			<<set _hostageAction.push("happily getting titfucked against $his anchoring <<print $hostage.boobs>>cc fake tits.")>>
 			<<set _hostageAction.push("contently resting against $his <<print $hostage.boobs>>cc fake tits.")>>
 			<<set _hostageAction.push("getting excited as an autosurgery reads out how much $his <<print $hostage.boobs>>cc implants can be expanded this week.")>>
@@ -2520,6 +2554,9 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty
 			<<case "boobs">>
 				<<set $hostage.boobs += 100>>
 				<<set $hostage.boobsImplant += 100>>
+				<<if $hostage.boobsImplant > 2000>>
+					<<set $hostage.boobsImplantType = "advanced fillable">>
+				<</if>>
 			<<case "pregnancy">>
 				<<set $hostage.preg++>>
 				<<set $hostage.pregKnown = 1>>
@@ -2564,6 +2601,9 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty
 			<<case "boobs">>
 				<<set $hostage.boobs += 100>>
 				<<set $hostage.boobsImplant += 100>>
+				<<if $hostage.boobsImplant > 2000>>
+					<<set $hostage.boobsImplantType = "advanced fillable">>
+				<</if>>
 			<<case "pregnancy">>
 				<<set $hostage.preg++>>
 				<<set $hostage.pregKnown = 1>>
@@ -2607,6 +2647,9 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty
 			<<case "boobs">>
 				<<set $hostage.boobs += 100>>
 				<<set $hostage.boobsImplant += 100>>
+				<<if $hostage.boobsImplant > 2000>>
+					<<set $hostage.boobsImplantType = "advanced fillable">>
+				<</if>>
 			<<case "pregnancy">>
 				<<set $hostage.preg++>>
 				<<set $hostage.pregKnown = 1>>
@@ -2647,6 +2690,9 @@ Your inter-arcology war with the arcology owner behind the Daughters of Liberty
 			<<case "boobs">>
 				<<set $hostage.boobs += 100>>
 				<<set $hostage.boobsImplant += 100>>
+				<<if $hostage.boobsImplant > 2000>>
+					<<set $hostage.boobsImplantType = "advanced fillable">>
+				<</if>>
 			<<case "pregnancy">>
 				<<set $hostage.preg++>>
 				<<set $hostage.pregKnown = 1>>
diff --git a/src/uncategorized/pRivalryCapture.tw b/src/uncategorized/pRivalryCapture.tw
index 8eb1226e6527704f56ff0f1b453bdeb4c6c85796..d60af8487137f13d5ab1ef303a47277ac55b565d 100644
--- a/src/uncategorized/pRivalryCapture.tw
+++ b/src/uncategorized/pRivalryCapture.tw
@@ -196,9 +196,11 @@
 	<<set $activeSlave.lips = 35>>
 	<<set $activeSlave.buttImplant = 1>>
 	<<set $activeSlave.butt += $activeSlave.buttImplant>>
+	<<set $activeSlave.buttImplantType = "normal">>
 	<<set $activeSlave.boobs -= 100>>
 	<<set $activeSlave.boobsImplant = either(400, 600, 800)>>
 	<<set $activeSlave.boobs += $activeSlave.boobsImplant>>
+	<<set $activeSlave.boobsImplantType = "normal">>
 	<<set $activeSlave.clit = 2>>
 	<<set $activeSlave.anus = 1>>
 	<<set $activeSlave.vagina = 1>>
@@ -343,8 +345,10 @@
 	<<set $activeSlave.lips = random(25,55)>>
 	<<set $activeSlave.buttImplant = 2>>
 	<<set $activeSlave.butt += $activeSlave.buttImplant>>
+	<<set $activeSlave.buttImplantType = "normal">>
 	<<set $activeSlave.boobsImplant = either(600, 800, 1000)>>
 	<<set $activeSlave.boobs += $activeSlave.boobsImplant>>
+	<<set $activeSlave.boobsImplantType = "normal">>
 	<<set $activeSlave.anus = 2>>
 	<<set $activeSlave.vagina = 1>>
 	<<set $activeSlave.preg = -1>>
diff --git a/src/uncategorized/prestigiousSlave.tw b/src/uncategorized/prestigiousSlave.tw
index 1e4a8425c762c230ea23d3cf3f4ebd764e4aca24..34687388376a3ca281eefa311fd9e5af16ba71b1 100644
--- a/src/uncategorized/prestigiousSlave.tw
+++ b/src/uncategorized/prestigiousSlave.tw
@@ -51,10 +51,12 @@ You check to see if any especially prestigious slaves are on auction. <<if $pres
 	<<set $activeSlave.career = "a porn star">>
 	<<set $activeSlave.boobsImplant += random(4,6)*200>>
 	<<set $activeSlave.boobs += $activeSlave.boobsImplant>>
+	<<set $activeSlave.boobsImplantType = "string">>
 	<<set $activeSlave.nipples = either("cute", "huge", "puffy")>>
 	<<set $activeSlave.areolae = 1>>
 	<<set $activeSlave.butt += 1>>
 	<<set $activeSlave.buttImplant += 1>>
+	<<set $activeSlave.buttImplantType = "normal">>
 	<<set $activeSlave.lips += 10>>
 	<<set $activeSlave.lipsImplant += 10>>
 	<<set $activeSlave.face = Math.clamp($activeSlave.face+20,-100,100)>>
@@ -94,8 +96,10 @@ You check to see if any especially prestigious slaves are on auction. <<if $pres
 	<<set $activeSlave.career = "a trophy wife">>
 	<<set $activeSlave.boobsImplant += random(1,3)*200>>
 	<<set $activeSlave.boobs += $activeSlave.boobsImplant>>
+	<<set $activeSlave.boobsImplantType = "normal">>
 	<<set $activeSlave.butt += 1>>
 	<<set $activeSlave.buttImplant += 1>>
+	<<set $activeSlave.buttImplantType = "normal">>
 	<<set $activeSlave.lips += 10>>
 	<<set $activeSlave.lipsImplant += 10>>
 	<<set $activeSlave.face = Math.clamp($activeSlave.face+20,-100,100)>>
@@ -214,10 +218,12 @@ You check to see if any especially prestigious slaves are on auction. <<if $pres
 	<<set $activeSlave.career = "a slave">>
 	<<set $activeSlave.boobsImplant += random(10,15)*200>>
 	<<set $activeSlave.boobs += $activeSlave.boobsImplant>>
+	<<set $activeSlave.boobsImplantType = "fillable">>
 	<<set $activeSlave.nipples = either("cute", "huge", "puffy")>>
 	<<set $activeSlave.areolae = 2>>
 	<<set $activeSlave.butt += 4>>
 	<<set $activeSlave.buttImplant += 4>>
+	<<set $activeSlave.buttImplantType = "fillable">>
 	<<set $activeSlave.lips = random(75,85)>>
 	<<set $activeSlave.lipsImplant = 3>>
 	<<set $activeSlave.face = 55>>
@@ -266,8 +272,10 @@ You check to see if any especially prestigious slaves are on auction. <<if $pres
 	<<set $activeSlave.career = "an actress">>
 	<<set $activeSlave.boobs += 200>>
 	<<set $activeSlave.boobsImplant += 200>>
+	<<set $activeSlave.boobsImplantType = "normal">>
 	<<set $activeSlave.butt += 1>>
 	<<set $activeSlave.buttImplant += 1>>
+	<<set $activeSlave.buttImplantType = "normal">>
 	<<set $activeSlave.lips += 10>>
 	<<set $activeSlave.lipsImplant += 10>>
 	<<set $activeSlave.face = 55>>
@@ -366,11 +374,13 @@ You check to see if any especially prestigious slaves are on auction. <<if $pres
 	<<set $activeSlave.career = "an arcology owner">>
 	<<set $activeSlave.boobsImplant += random(20,40)*200>>
 	<<set $activeSlave.boobs += $activeSlave.boobsImplant>>
+	<<set $activeSlave.boobsImplantType = "advanced fillable">>
 	<<set $activeSlave.boobs += 1000>>
 	<<set $activeSlave.nipples = either("cute", "huge", "puffy")>>
 	<<set $activeSlave.areolae = 2>>
 	<<set $activeSlave.buttImplant += random(6,8)>>
 	<<set $activeSlave.butt += $activeSlave.buttImplant>>
+	<<set $activeSlave.buttImplantType = "advanced fillable">>
 	<<set $activeSlave.heels = 1>>
 	<<set $activeSlave.voice = 0>>
 	<<set $activeSlave.lips = random(75,85)>>
@@ -527,10 +537,12 @@ You check to see if any especially prestigious slaves are on auction. <<if $pres
 	<<set $activeSlave.career = "a porn star">>
 	<<set $activeSlave.boobsImplant += random(4,6)*200>>
 	<<set $activeSlave.boobs += $activeSlave.boobsImplant>>
+	<<set $activeSlave.boobsImplantType = "fillable">>
 	<<set $activeSlave.nipples = either("cute", "huge", "puffy")>>
 	<<set $activeSlave.areolae = 1>>
 	<<set $activeSlave.butt += 1>>
 	<<set $activeSlave.buttImplant += 1>>
+	<<set $activeSlave.buttImplantType = "normal">>
 	<<set $activeSlave.lips += 10>>
 	<<set $activeSlave.lipsImplant += 10>>
 	<<set $activeSlave.face = Math.clamp($activeSlave.face+20,-100,100)>>
@@ -682,10 +694,12 @@ You check to see if any especially prestigious slaves are on auction. <<if $pres
 	<<set $activeSlave.career = "a prostitute">>
 	<<set $activeSlave.boobsImplant += random(10,15)*200>>
 	<<set $activeSlave.boobs += $activeSlave.boobsImplant>>
+	<<set $activeSlave.boobsImplantType = "advanced fillable">>
 	<<set $activeSlave.nipples = either("cute", "huge", "puffy")>>
 	<<set $activeSlave.areolae = 2>>
 	<<set $activeSlave.butt += 4>>
 	<<set $activeSlave.buttImplant += 4>>
+	<<set $activeSlave.buttImplantType = "fillable">>
 	<<set $activeSlave.lips = random(25,55)>>
 	<<set $activeSlave.lipsImplant = 2>>
 	<<set $activeSlave.face = 55>>
@@ -736,8 +750,10 @@ You check to see if any especially prestigious slaves are on auction. <<if $pres
 	<<set $activeSlave.career = "an actress">>
 	<<set $activeSlave.boobs += 200>>
 	<<set $activeSlave.boobsImplant += 200>>
+	<<set $activeSlave.boobsImplantType = "normal">>
 	<<set $activeSlave.butt += 1>>
 	<<set $activeSlave.buttImplant += 1>>
+	<<set $activeSlave.buttImplantType = "normal">>
 	<<set $activeSlave.lips += 10>>
 	<<set $activeSlave.lipsImplant += 10>>
 	<<set $activeSlave.face = 55>>
diff --git a/src/uncategorized/reBoomerang.tw b/src/uncategorized/reBoomerang.tw
index b078353ab7fe371ba96b5eeb2714760766f196f1..d1eab1b80378cfd00738bdaef33abb59bbaaa8b9 100644
--- a/src/uncategorized/reBoomerang.tw
+++ b/src/uncategorized/reBoomerang.tw
@@ -178,8 +178,8 @@ brings up the relevant feeds. There's a naked body crumpled pathetically against
 	<<set $activeSlave.behavioralFlaw = "odd", $activeSlave.sexualFlaw = "hates men">>
 <<case "slimness enthusiast arcology">>
 	"It wa<<s>> horrible." You sold $him to a pleasant Slimness Enthusiast arcology, but somehow $he's acquired grotesque implants. "The arcology got a new owner." $He shudders. "I gue<<ss>> the ni<<c>>e one wa<<s>> weak, and, and the new one i<<s>> changing thing<<s>>. <<Sh>>-<<sh>>e l-like<<s>> t-to ruin the <<s>>lim one<<s>>." It's nothing short of incredible that $he managed to get back here. $He must have sold and traded $himself without hesitation.
-	<<set $activeSlave.boobsImplant = 200*random(2,4), $activeSlave.boobs += $activeSlave.boobsImplant>>
-	<<set $activeSlave.buttImplant = random(2,4), $activeSlave.butt = Math.clamp($activeSlave.butt+$activeSlave.buttImplant,0,10)>>
+	<<set $activeSlave.boobsImplant = 200*random(2,4), $activeSlave.boobs += $activeSlave.boobsImplant, $activeSlave.boobsImplantType = "normal">>
+	<<set $activeSlave.buttImplant = random(2,4), $activeSlave.butt = Math.clamp($activeSlave.butt+$activeSlave.buttImplant,0,10), $activeSlave.buttImplantType = "normal">>
 	<<set $activeSlave.lipsImplant = 10*random(1,3), $activeSlave.lips = Math.clamp($activeSlave.lips+$activeSlave.lipsImplant,0,100)>>
 <<case "asset expansionist arcology">>
 	"It wa<<s>> horrible." You sold $him to an Asset Expansionist arcology; it's nothing short of incredible that $he managed to get back here. $He must have sold and traded $himself without hesitation.
@@ -194,7 +194,7 @@ brings up the relevant feeds. There's a naked body crumpled pathetically against
 	<<set $activeSlave.behavioralFlaw = "anorexic">>
 <<case "transformation fetishist arcology">>
 	"It wa<<s>> horrible." You sold $him to a Transformation Fetishist arcology; it's nothing short of incredible that $he managed to get back here. $He must have sold and traded $himself without hesitation. "They were giving me new boob implant<<s>> every two week<<s>>. I ran away before another <<s>>et. I c-couldn't take any more <<s>>-<<s>>urgery."
-	<<set $activeSlave.boobsImplant = 200*random(9,12), $activeSlave.boobs += $activeSlave.boobsImplant>>
+	<<set $activeSlave.boobsImplant = 200*random(9,12), $activeSlave.boobs += $activeSlave.boobsImplant, $activeSlave.boobsImplantType = "normal">>
 <<case "physical idealist arcology">>
 	"It wa<<s>> horrible." You sold $him to a Physical Idealist arcology; it's nothing short of incredible that $he managed to get back here. $He must have sold and traded $himself without hesitation. "It should have been called a <<S>>teroid Enthu<<s>>ia<<s>>t arcology." $He shivers. "The <<s>>ide effect<<s>> are terrible. I can't <<s>>leep. I can barely eat. They had to feed me with a tube."
 	<<set $activeSlave.muscles = 100, $activeSlave.weight = random(-85,-75)>>
@@ -212,8 +212,8 @@ brings up the relevant feeds. There's a naked body crumpled pathetically against
 	"It wa<<s>> horrible." You sold $him to an Egyptian Revivalist arcology; it's nothing short of incredible that $he managed to get back here. $He must have sold and traded $himself without hesitation. "My new owner wa<<s>> old, and he wa<<s>> really into <<s>>ome of the tomb <<s>>tuff. If he died, I'd have been buried with him."
 <<case "body purist arcology">>
 	"It wa<<s>> horrible." You sold $him to a pleasant Body Purist arcology, but somehow $he's acquired grotesque implants. "The arcology got a new owner." $He shudders. "I gue<<ss>> the ni<<c>>e one wa<<s>> weak, and, and the new one i<<s>> changing thing<<s>>. <<Sh>>-<<sh>>e l-like<<s>> t-to ruin the pure one<<s>>." It's nothing short of incredible that $he managed to get back here. $He must have sold and traded $himself without hesitation.
-	<<set $activeSlave.boobsImplant = 200*random(2,4), $activeSlave.boobs += $activeSlave.boobsImplant>>
-	<<set $activeSlave.buttImplant = random(2,4), $activeSlave.butt = Math.clamp($activeSlave.butt+$activeSlave.buttImplant,0,10)>>
+	<<set $activeSlave.boobsImplant = 200*random(2,4), $activeSlave.boobs += $activeSlave.boobsImplant, $activeSlave.boobsImplantType = "normal">>
+	<<set $activeSlave.buttImplant = random(2,4), $activeSlave.butt = Math.clamp($activeSlave.butt+$activeSlave.buttImplant,0,10), $activeSlave.buttImplantType = "normal">>
 	<<set $activeSlave.lipsImplant = 10*random(1,3), $activeSlave.lips = Math.clamp($activeSlave.lips+$activeSlave.lipsImplant,0,100)>>
 <<case "D milf staffing" "trainer staffing">>
 	<<setNonlocalPronouns $seeDicks>>
@@ -226,13 +226,13 @@ brings up the relevant feeds. There's a naked body crumpled pathetically against
 	<<set $activeSlave.behavioralFlaw = "hates penetration", $activeSlave.sexualFlaw = "apathetic">>
 <<case "implanting trainer">>
 	"I d-don't want to be c-cut again," $he <<say>>s hollowly. $His buyer planned to use $him as a surgical teaching tool. "E-every time I'm healed, they implant me again. B-bigger."
-	<<set $activeSlave.boobsImplant = 200*random(8,12), $activeSlave.boobs += $activeSlave.boobsImplant>>
-	<<set $activeSlave.buttImplant = random(2,4), $activeSlave.butt = Math.clamp($activeSlave.butt+$activeSlave.buttImplant,0,10)>>
+	<<set $activeSlave.boobsImplant = 200*random(8,12), $activeSlave.boobs += $activeSlave.boobsImplant, $activeSlave.boobsImplantType = "advanced fillable">>
+	<<set $activeSlave.buttImplant = random(2,4), $activeSlave.butt = Math.clamp($activeSlave.butt+$activeSlave.buttImplant,0,10), $activeSlave.buttImplantType = "normal">>
 	<<set $activeSlave.lipsImplant = 10*random(1,3), $activeSlave.lips = Math.clamp($activeSlave.lips+$activeSlave.lipsImplant,0,100)>>
 <<case "purifying trainer">>
 	"It w-wa<<s>>n't like I thought it would be," $he <<say>>s. "The trainer you <<s>>old me to took out my implant<<s>>. B-but then they <<s>>aid my boob<<s>> had to be rebuilt, only with drug<<s>> thi<<s>> time." $He shivers. "The <<s>>ide effect<<s>> are terrible. I can't <<s>>leep. I can barely eat. They had to feed me with a tube."
-	<<set $activeSlave.boobs -= $activeSlave.boobsImplant, $activeSlave.boobsImplant = 0>>
-	<<set $activeSlave.butt -= $activeSlave.buttImplant, $activeSlave.buttImplant = 0>>
+	<<set $activeSlave.boobs -= $activeSlave.boobsImplant, $activeSlave.boobsImplant = 0, $activeSlave.boobsImplantType = "none">>
+	<<set $activeSlave.butt -= $activeSlave.buttImplant, $activeSlave.buttImplant = 0, $activeSlave.buttImplantType = "none">>
 	<<set $activeSlave.lips -= $activeSlave.lipsImplant, $activeSlave.lipsImplant = 0>>
 	<<set $activeSlave.boobs = Math.clamp($activeSlave.boobs+50*random(20,40),0,10000)>>
 <<case "D startled the witch">>
@@ -259,8 +259,8 @@ brings up the relevant feeds. There's a naked body crumpled pathetically against
 	<<set $activeSlave.weight = Math.clamp($activeSlave.weight+random(50,100),-100,200)>>
 <<case "clipping trainer">>
 	"All I do i<<s>> <<s>>uck dick<<s>> and get fucked in the butt." You sold $him to a trainer who specializes in clipping and improving overly masculine slaves, and $he's definitely more feminine, if bitterly unhappy. "They're going to <<s>>ell me to a bitch brothel <<s>>oon, I know it. Plea<<s>>e, nobody'<<s>> even <<s>>aid anything to me other than '<<s>>uck my cock' or 'bend over bitch' in week<<s>>."
-	<<set $activeSlave.boobsImplant = 200*random(2,4), $activeSlave.boobs += $activeSlave.boobsImplant>>
-	<<set $activeSlave.buttImplant = random(1,2), $activeSlave.butt = Math.clamp($activeSlave.butt+$activeSlave.buttImplant,0,10)>>
+	<<set $activeSlave.boobsImplant = 200*random(2,4), $activeSlave.boobs += $activeSlave.boobsImplant, $activeSlave.boobsImplantType = "normal">>
+	<<set $activeSlave.buttImplant = random(1,2), $activeSlave.butt = Math.clamp($activeSlave.butt+$activeSlave.buttImplant,0,10), $activeSlave.buttImplantType = "normal">>
 	<<set $activeSlave.lipsImplant = 10*random(1,2), $activeSlave.lips = Math.clamp($activeSlave.lips+$activeSlave.lipsImplant,0,100)>>
 	<<set $activeSlave.waist = Math.clamp($activeSlave.waist+random(20,50),-100,100)>>
 	<<set $activeSlave.balls = 0, $activeSlave.scrotum = 0, $activeSlave.dick = Math.clamp($activeSlave.dick-random(1,2),0,10)>>
@@ -268,8 +268,8 @@ brings up the relevant feeds. There's a naked body crumpled pathetically against
 	<<if $activeSlave.faceShape == "masculine">><<set $activeSlave.faceShape = "androgynous">><</if>>
 <<case "reassignment trainer">>
 	"I m-mi<<ss>> my dick." You sold $him to a trainer who specializes in gender reassignment, and $he's definitely more feminine, if bitterly unhappy. "P-plea<<s>>e, even if you won't f-fi<<x>> me, plea<<s>>e take me back. I'll b-be a <<s>>e<<x>> <<s>>lave, I ju<<s>>t don't want to be a woman."
-	<<set $activeSlave.boobsImplant = 200*random(2,4), $activeSlave.boobs += $activeSlave.boobsImplant>>
-	<<set $activeSlave.buttImplant = random(1,2), $activeSlave.butt = Math.clamp($activeSlave.butt+$activeSlave.buttImplant,0,10)>>
+	<<set $activeSlave.boobsImplant = 200*random(2,4), $activeSlave.boobs += $activeSlave.boobsImplant, $activeSlave.boobsImplantType = "normal">>
+	<<set $activeSlave.buttImplant = random(1,2), $activeSlave.butt = Math.clamp($activeSlave.butt+$activeSlave.buttImplant,0,10), $activeSlave.buttImplantType = "normal">>
 	<<set $activeSlave.lipsImplant = 10*random(1,2), $activeSlave.lips = Math.clamp($activeSlave.lips+$activeSlave.lipsImplant,0,100)>>
 	<<set $activeSlave.waist = Math.clamp($activeSlave.waist+random(20,50),-100,100)>>
 	<<set $activeSlave.balls = 0, $activeSlave.scrotum = 0, $activeSlave.dick = 0, $activeSlave.vagina = 3>>
diff --git a/src/uncategorized/reFSAcquisition.tw b/src/uncategorized/reFSAcquisition.tw
index bc12b1b9acdfba3992dc97a071fb5274770ce707..721271841063d14bc4a0ac7742c478a9e2778ec1 100644
--- a/src/uncategorized/reFSAcquisition.tw
+++ b/src/uncategorized/reFSAcquisition.tw
@@ -251,10 +251,12 @@
 <<set $activeSlave.origin = "$He was sold to you by an anonymous person who wanted $him to suffer.">>
 <<set $activeSlave.boobsImplant += random(4,6)*200>>
 <<set $activeSlave.boobs += $activeSlave.boobsImplant>>
+<<set $activeSlave.boobsImplantType = "normal">>
 <<set $activeSlave.nipples = "huge">>
 <<set $activeSlave.areolae = 1>>
 <<set $activeSlave.butt += 1>>
 <<set $activeSlave.buttImplant += 1>>
+<<set $activeSlave.buttImplantType = "normal">>
 <<set $activeSlave.lips += 10>>
 <<set $activeSlave.lipsImplant += 10>>
 <<set $activeSlave.face = Math.clamp($activeSlave.face+20,-100,100)>>
@@ -292,9 +294,11 @@
 <<set $activeSlave.origin = "$He was sold to you by an anonymous slave breaking group.">>
 <<set $activeSlave.boobsImplant += random(3,6)*200>>
 <<set $activeSlave.boobs += $activeSlave.boobsImplant>>
+<<set $activeSlave.boobsImplantType = "normal">>
 <<set $activeSlave.areolae = 1>>
 <<set $activeSlave.butt += 1>>
 <<set $activeSlave.buttImplant += 1>>
+<<set $activeSlave.buttImplantType = "normal">>
 <<set $activeSlave.lips += 10>>
 <<set $activeSlave.lipsImplant += 10>>
 <<set $activeSlave.face = Math.clamp($activeSlave.face+20,-100,100)>>
@@ -376,6 +380,7 @@
 <<set $activeSlave.origin = "$He offered $himself for voluntary enslavement after realizing $his career was over.">>
 <<set $activeSlave.boobsImplant += random(4,6)*200>>
 <<set $activeSlave.boobs += $activeSlave.boobsImplant>>
+<<set $activeSlave.boobsImplantType = "fillable">>
 <<set $activeSlave.lips = 60>>
 <<set $activeSlave.face = Math.clamp($activeSlave.face+20,-100,100)>>
 <<set $activeSlave.devotion = random(20,45)>>
@@ -611,8 +616,10 @@
 <<set $activeSlave.geneticQuirks.dwarfism = 2>>
 <<set $activeSlave.boobsImplant += random(4,6)*200>>
 <<set $activeSlave.boobs += $activeSlave.boobsImplant>>
+<<set $activeSlave.boobsImplantType = "string">>
 <<set $activeSlave.buttImplant += 2>>
 <<set $activeSlave.butt += $activeSlave.buttImplant>>
+<<set $activeSlave.buttImplantType = "normal">>
 <<set $activeSlave.hips = 2>>
 <<set $activeSlave.lips = 60>>
 <<set $activeSlave.lipsImplant = 10>>
@@ -680,9 +687,11 @@
 <<set $activeSlave.origin = "You received $him from a surgeon who botched an implant operation on $him and needed to get $him out of sight.">>
 <<set $activeSlave.boobsImplant += random(10,20)*200>>
 <<set $activeSlave.boobs += $activeSlave.boobsImplant>>
+<<set $activeSlave.boobsImplantType = "advanced fillable">>
 <<set $activeSlave.nipples = "tiny">>
 <<set $activeSlave.areolae = 2>>
 <<set $activeSlave.buttImplant += random(2,4)>>
+<<set $activeSlave.buttImplantType = "fillable">>
 <<set $activeSlave.butt += $activeSlave.buttImplant>>
 <<set $activeSlave.lipsImplant += random(15,25)>>
 <<set $activeSlave.lips += $activeSlave.lipsImplant>>
@@ -709,10 +718,12 @@
 <<set $activeSlave.career = "a trophy wife">>
 <<set $activeSlave.boobsImplant += random(5,10)*200>>
 <<set $activeSlave.boobs += $activeSlave.boobsImplant>>
+<<set $activeSlave.boobsImplantType = "fillable">>
 <<set $activeSlave.nipples = "tiny">>
 <<set $activeSlave.areolae = 2>>
 <<set $activeSlave.buttImplant += random(2,4)>>
 <<set $activeSlave.butt += $activeSlave.buttImplant>>
+<<set $activeSlave.buttImplantType = "normal">>
 <<set $activeSlave.lipsImplant += random(15,25)>>
 <<set $activeSlave.lips += $activeSlave.lipsImplant>>
 <<set $activeSlave.face = Math.clamp($activeSlave.face+20,-100,100)>>
diff --git a/src/uncategorized/reMalefactor.tw b/src/uncategorized/reMalefactor.tw
index 68df0769421f32f41ec8b3079daf044dc2ce94b0..8d7215312f246d6947a65ab825e65fdd3a0f79f2 100644
--- a/src/uncategorized/reMalefactor.tw
+++ b/src/uncategorized/reMalefactor.tw
@@ -152,8 +152,10 @@
 <<set $activeSlave.anus = 0>>
 <<set $activeSlave.boobs += 400>>
 <<set $activeSlave.boobsImplant = 400>>
+<<set $activeSlave.boobsImplantType = "normal">>
 <<set $activeSlave.butt += 2>>
 <<set $activeSlave.buttImplant = 2>>
+<<set $activeSlave.buttImplantType = "normal">>
 <<run setHealth($activeSlave, jsRandom(20, 40))>>
 <<set $activeSlave.sexualFlaw = "hates oral">>
 <<set $activeSlave.behavioralFlaw = "arrogant">>
@@ -187,8 +189,10 @@
 <<set $activeSlave.skill.whoring = 35>>
 <<set $activeSlave.boobs += 400>>
 <<set $activeSlave.boobsImplant = 400>>
+<<set $activeSlave.boobsImplantType = "normal">>
 <<set $activeSlave.butt += 1>>
 <<set $activeSlave.buttImplant = 1>>
+<<set $activeSlave.buttImplantType = "normal">>
 <<set $activeSlave.lips += 10>>
 <<set $activeSlave.lipsImplant = 10>>
 <<set $activeSlave.lipsPiercing = 1>>
diff --git a/src/uncategorized/reRecruit.tw b/src/uncategorized/reRecruit.tw
index d1f4f9575c9efe53eaededc494eab95b7283ba66..44961a2c8b5b1765e8ff82176128e382f711346e 100644
--- a/src/uncategorized/reRecruit.tw
+++ b/src/uncategorized/reRecruit.tw
@@ -114,8 +114,10 @@
 <<set $activeSlave.skill.whoring = 35>>
 <<set $activeSlave.boobs += 600>>
 <<set $activeSlave.boobsImplant = 600>>
+<<set $activeSlave.boobsImplantType = "normal">>
 <<set $activeSlave.butt += 1>>
 <<set $activeSlave.buttImplant = 1>>
+<<set $activeSlave.buttImplantType = "normal">>
 <<set $activeSlave.lips += 10>>
 <<set $activeSlave.lipsImplant = 10>>
 <<set $activeSlave.lipsPiercing = 1>>
@@ -342,7 +344,9 @@
 <<set $activeSlave.face = 15>>
 <<set $activeSlave.butt = random(4,5)>>
 <<set $activeSlave.buttImplant = 1>>
+<<set $activeSlave.buttImplantType = "normal">>
 <<set $activeSlave.boobsImplant = 400>>
+<<set $activeSlave.boobsImplantType = "normal">>
 <<set $activeSlave.boobs = random(8,10)*100>>
 <<set $activeSlave.lipsImplant = 10>>
 <<set $activeSlave.anus = 0>>
@@ -372,8 +376,10 @@
 <<set $activeSlave.face = 15>>
 <<set $activeSlave.boobs = random(5,6)*100>>
 <<set $activeSlave.boobsImplant = 400>>
+<<set $activeSlave.boobsImplantType = "normal">>
 <<set $activeSlave.butt = random(2,3)>>
 <<set $activeSlave.buttImplant = 1>>
+<<set $activeSlave.buttImplantType = "normal">>
 <<set $activeSlave.dick = 1>>
 <<if $activeSlave.foreskin > 0>><<set $activeSlave.foreskin = $activeSlave.dick>><</if>>
 <<if $activeSlave.balls > 0>><<set $activeSlave.scrotum = $activeSlave.balls>><</if>>
@@ -470,8 +476,10 @@
 <<set $activeSlave.skill.oral = 15>>
 <<set $activeSlave.boobs += 400>>
 <<set $activeSlave.boobsImplant = 400>>
+<<set $activeSlave.boobsImplantType = "normal">>
 <<set $activeSlave.butt += 1>>
 <<set $activeSlave.buttImplant = 1>>
+<<set $activeSlave.buttImplantType = "normal">>
 <<set $activeSlave.lips += 10>>
 <<set $activeSlave.lipsImplant = 10>>
 <<set $activeSlave.face = Math.clamp($activeSlave.face+20,-100,100)>>
@@ -676,6 +684,7 @@
 <<set $activeSlave.skill.oral = random(15,40)>>
 <<set $activeSlave.skill.whoring = 0>>
 <<set $activeSlave.boobsImplant = random(3,6)*100>>
+<<set $activeSlave.boobsImplantType = "normal">>
 <<set $activeSlave.boobs = $activeSlave.boobsImplant+150>>
 <<set $activeSlave.vagina = 0>>
 <<set $activeSlave.skill.vaginal = 0>>
@@ -716,8 +725,9 @@
 <<set $activeSlave.skill.anal = 0>>
 <<set $activeSlave.skill.oral = 35>>
 <<set $activeSlave.skill.whoring = 0>>
-<<set $activeSlave.boobs = 150>>
 <<set $activeSlave.boobsImplant = random(2,6)*100>>
+<<set $activeSlave.boobs = 150 + $activeSlave.boobsImplant>>
+<<set $activeSlave.boobsImplantType = "normal">>
 <<set $activeSlave.vagina = -1>>
 <<set $activeSlave.ovaries = 0>>
 <<set $activeSlave.preg = -1>>
diff --git a/src/uncategorized/reRelativeRecruiter.tw b/src/uncategorized/reRelativeRecruiter.tw
index 875814f49bae9e8f5d00d81803188a6f0b0f5c48..62fafa143b7a1d998209d3fc988449ec419dabeb 100644
--- a/src/uncategorized/reRelativeRecruiter.tw
+++ b/src/uncategorized/reRelativeRecruiter.tw
@@ -95,7 +95,7 @@
 		<<set $activeSlave.muscles = 0>>
 		<<set $activeSlave.corsetPiercing = 0>>
 		<<set $activeSlave.boobsImplant = 0>>
-		<<set $activeSlave.boobsImplantType = 0>>
+		<<set $activeSlave.boobsImplantType = "none">>
 		<<set $activeSlave.nipplesPiercing = 0>>
 		<<set $activeSlave.areolae = 0>>
 		<<set $activeSlave.areolaePiercing = 0>>
@@ -103,7 +103,7 @@
 		<<set $activeSlave.lactation = 0>>
 		<<set $activeSlave.hipsImplant = 0>>
 		<<set $activeSlave.buttImplant = 0>>
-		<<set $activeSlave.buttImplantType = 0>>
+		<<set $activeSlave.buttImplantType = "none">>
 		<<set $activeSlave.lipsImplant = 0>>
 		<<set $activeSlave.lipsPiercing = 0>>
 		<<set $activeSlave.tonguePiercing = 0>>
@@ -205,7 +205,7 @@
 	<<set $activeSlave.vagina = -1>>
 	<<set $activeSlave.boobs = (random(5,6)*100)>>
 	<<set $activeSlave.boobsImplant = 0>>
-	<<set $activeSlave.boobsImplantType = 0>>
+	<<set $activeSlave.boobsImplantType = "none">>
 	<<set $activeSlave.butt = random(4,6)>>
 	<<set $activeSlave.actualAge = ($eventSlave.actualAge+random(15,20))>>
 
@@ -216,6 +216,7 @@
 	<<set $activeSlave.preg = -1>>
 	<<set $activeSlave.boobs = (random(8,10)*100)>>
 	<<set $activeSlave.boobsImplant = 600>>
+	<<set $activeSlave.boobsImplantType = "normal">>
 	<<set $activeSlave.skill.oral += random(0,20)>>
 	<<set $activeSlave.skill.vaginal += random(0,20)>>
 	<<set $activeSlave.skill.anal += random(0,20)>>
@@ -243,6 +244,7 @@
 	<<set $activeSlave.prostate = 1>>
 	<<set $activeSlave.boobs = (random(6,8)*100)>>
 	<<set $activeSlave.boobsImplant = 600>>
+	<<set $activeSlave.boobsImplantType = "normal">>
 	<<set $activeSlave.skill.oral += random(0,20)>>
 	<<set $activeSlave.skill.anal += random(0,20)>>
 	<<set $activeSlave.skill.entertainment += random(0,20)>>
@@ -298,7 +300,7 @@
 	<<set $activeSlave.dick = 5>>
 	<<set $activeSlave.boobs = 50>>
 	<<set $activeSlave.boobsImplant = 0>>
-	<<set $activeSlave.boobsImplantType = 0>>
+	<<set $activeSlave.boobsImplantType = "none">>
 	<<set $activeSlave.balls = 4>>
 	<<set $activeSlave.prostate = 1>>
 	<<set $activeSlave.actualAge = Math.clamp($eventSlave.actualAge, $retirementAge, $eventSlave.actualAge + _siblingGap)>>
@@ -317,10 +319,10 @@
 	<<set $activeSlave.genes = "XY">>
 	<<set $activeSlave.boobs = (random(20,40)*100)>>
 	<<set $activeSlave.boobsImplant = $activeSlave.boobs - 100>>
-	<<set $activeSlave.boobsImplantType = 1>>
+	<<set $activeSlave.boobsImplantType = "string">>
 	<<set $activeSlave.butt = random(7,8)>>
 	<<set $activeSlave.buttImplant = $activeSlave.butt-1>>
-	<<set $activeSlave.buttImplantType = 1>>
+	<<set $activeSlave.buttImplantType = "string">>
 	<<set $activeSlave.lips = random(70,90)>>
 	<<set $activeSlave.lipsImplant = $activeSlave.lips-10>>
 	<<set $activeSlave.nipplesPiercing = 2>>
@@ -542,7 +544,7 @@
 	<<s>>welling with life
 <<elseif $eventSlave.anus > 2>>
 	getting <<his 2>> butt <<s>>tretched out
-<<elseif $eventSlave.boobsImplant > 20>>
+<<elseif $eventSlave.boobsImplant > 500>>
 	getting turned into a bimbo <<s>>lut
 <<else>>
 	the feeling of your cock in _him2
@@ -1067,7 +1069,7 @@ $eventSlave.slaveName requests an interview with you. $He's a devoted slave, and
 	<<s>>welling with life
 <<elseif $eventSlave.anus > 2>>
 	getting <<his 2>> butt <<s>>tretched out
-<<elseif $eventSlave.boobsImplant > 20>>
+<<elseif $eventSlave.boobsImplant > 500>>
 	getting turned into a bimbo <<s>>lut
 <<else>>
 	the feeling of your cock in _him2
diff --git a/src/uncategorized/recETS.tw b/src/uncategorized/recETS.tw
index 3ef861bbf0f81c851a610f2c4886deea9f19ad8e..97b6d90afe6116ec8a7e2c074ec616b8b409bae2 100644
--- a/src/uncategorized/recETS.tw
+++ b/src/uncategorized/recETS.tw
@@ -124,8 +124,10 @@
 			<<set $activeSlave.anus = 0>>
 			<<set $activeSlave.boobs += 400>>
 			<<set $activeSlave.boobsImplant = 400>>
+			<<set $activeSlave.boobsImplantType = "normal">>
 			<<set $activeSlave.butt += 1>>
 			<<set $activeSlave.buttImplant = 1>>
+			<<set $activeSlave.buttImplantType = "normal">>
 			<<set $activeSlave.clothes = "nice business attire">>
 			<<run setHealth($activeSlave, jsRandom(20, 40), 0, 0, 0)>>
 			<<set $activeSlave.pubicHStyle = "neat">>
@@ -168,8 +170,10 @@
 			<<set $activeSlave.lactation = 1>>
 			<<set $activeSlave.lactationDuration = 2>>
 			<<set $activeSlave.boobsImplant = 0>>
+			<<set $activeSlave.boobsImplantType = "none">>
 			<<set $activeSlave.butt += 2>>
 			<<set $activeSlave.buttImplant = 0>>
+			<<set $activeSlave.buttImplantType = "none">>
 			<<set $activeSlave.clothes = "conservative clothing">>
 			<<run setHealth($activeSlave, jsRandom(20, 40), 0, 0, 0)>>
 			<<set $activeSlave.pubicHStyle = "bushy">>
@@ -440,8 +444,10 @@
 			<<set $activeSlave.lactation = 1>>
 			<<set $activeSlave.lactationDuration = 2>>
 			<<set $activeSlave.boobsImplant = 0>>
+			<<set $activeSlave.boobsImplantType = "none">>
 			<<set $activeSlave.butt += 2>>
 			<<set $activeSlave.buttImplant = 0>>
+			<<set $activeSlave.buttImplantType = "none">>
 			<<set $activeSlave.clothes = "conservative clothing">>
 			<<run setHealth($activeSlave, jsRandom(20, 40), 0, 0, 0)>>
 			<<set $activeSlave.pubicHStyle = "bushy">>
@@ -517,6 +523,7 @@
 			<<set $activeSlave.skill.anal = 15>>
 			<<set $activeSlave.boobs = 600>>
 			<<set $activeSlave.boobsImplant = 400>>
+			<<set $activeSlave.boobsImplantType = "normal">>
 			<<set $activeSlave.butt = either(1, 2)>>
 			<<set $activeSlave.preg = -2>>
 			<<set $activeSlave.birthWeek = 0>>
@@ -566,8 +573,10 @@
 			<<set $activeSlave.skill.anal = 15>>
 			<<set $activeSlave.boobs = either(500,600)>>
 			<<set $activeSlave.boobsImplant = 400>>
+			<<set $activeSlave.boobsImplantType = "normal">>
 			<<set $activeSlave.butt = either(2, 3)>>
 			<<set $activeSlave.buttImplant = 1>>
+			<<set $activeSlave.buttImplantType = "normal">>
 			<<set $activeSlave.preg = -3>>
 			<<set $activeSlave.hStyle = "in twin tails">>
 			<<set $activeSlave.pubicHStyle = "waxed">>
@@ -622,8 +631,10 @@
 			<<if $activeSlave.physicalAge >= random(13,17)>>
 				<<set $activeSlave.boobs = either(500,600)>>
 				<<set $activeSlave.boobsImplant = 0>>
+				<<set $activeSlave.boobsImplantType = "none">>
 				<<set $activeSlave.butt = either(2, 3)>>
 				<<set $activeSlave.buttImplant = 0>>
+				<<set $activeSlave.buttImplantType = "none">>
 			<</if>>
 			<<set $activeSlave.preg = -1>>
 			<<set $activeSlave.hStyle = "in twin tails">>
@@ -676,8 +687,10 @@
 			<<if $activeSlave.physicalAge >= random(13,17)>>
 				<<set $activeSlave.boobs = either(500,600)>>
 				<<set $activeSlave.boobsImplant = 0>>
+				<<set $activeSlave.boobsImplantType = "none">>
 				<<set $activeSlave.butt = either(2, 3)>>
 				<<set $activeSlave.buttImplant = 0>>
+				<<set $activeSlave.buttImplantType = "none">>
 			<</if>>
 			<<set $activeSlave.preg = 30>>
 			<<set $activeSlave.pregType = 2>>
@@ -812,6 +825,7 @@
 			<<set $activeSlave.oldDevotion = $activeSlave.devotion>>
 			<<set $activeSlave.boobs -= 400>>
 			<<set $activeSlave.boobsImplant = 0>>
+			<<set $activeSlave.boobsImplantType = "none">>
 			<<set $activeSlave.butt -= 1>>
 			<<set $activeSlave.vagina = 1>>
 			<<set $activeSlave.anus = 0>>
@@ -1107,6 +1121,7 @@
 			<<set $activeSlave.lactation = 0>>
 			<<set $activeSlave.lactationDuration = 0>>
 			<<set $activeSlave.boobsImplant = 0>>
+			<<set $activeSlave.boobsImplantType = "none">>
 			<<set $activeSlave.butt -= 2>>
 			<<if $familyTesting == 1>>
 				<<set $activeSlave.mother = $activeSlave.ID - 1000>>
@@ -1179,6 +1194,7 @@
 			<<set $activeSlave.sexualFlaw = "hates penetration">>
 			<<set $activeSlave.boobs = either(400, 500)>>
 			<<set $activeSlave.boobsImplant = 0>>
+			<<set $activeSlave.boobsImplantType = "none">>
 			<<set $activeSlave.butt = either(2, 3)>>
 			<<if $activeSlave.actualAge < 12>>
 				<<set $activeSlave.actualAge = 16>>
@@ -1207,7 +1223,9 @@
 			<<set $activeSlave.balls = 0>>
 			<<set $activeSlave.skill.vaginal = 15>>
 			<<set $activeSlave.boobsImplant = 0>>
+			<<set $activeSlave.boobsImplantType = "none">>
 			<<set $activeSlave.buttImplant = 0>>
+			<<set $activeSlave.buttImplantType = "none">>
 			<<if $familyTesting == 1>>
 			<<else>>
 				<<set $activeSlave.relation = "twin">>
diff --git a/src/uncategorized/remoteSurgery.tw b/src/uncategorized/remoteSurgery.tw
index e76f31c0eea7415e9e44417743e2d5b94aae1f0d..3733a7401867ebcdd7586be0e8ece0c0ce70b3ca 100644
--- a/src/uncategorized/remoteSurgery.tw
+++ b/src/uncategorized/remoteSurgery.tw
@@ -645,23 +645,58 @@
 <div>
 	$He has
 	<<if $activeSlave.boobsImplant > 0>>
-		<<if $activeSlave.boobsImplant > 600>>
-			<<print $activeSlave.boobsImplant>>cc
-		<<elseif $activeSlave.boobsImplant > 400>>
-			large, <<print $activeSlave.boobsImplant>>cc
-		<<elseif $activeSlave.boobsImplant > 200>>
-			moderate, <<print $activeSlave.boobsImplant>>cc
-		<<elseif $activeSlave.boobsImplant > 0>>
-			small, <<print $activeSlave.boobsImplant>>cc
-		<</if>>
-		<<if $activeSlave.boobsImplantType == 1>>
-			string
-		<<elseif $activeSlave.boobsImplant >= 800>>
-			fillable
-		<</if>>
-		breast implants.
-		<<if $activeSlave.boobsImplant > 8000 && $activeSlave.boobsImplantType == 1>>
-			<span class="yellow">Large string based implants are a risk to a slave's health.</span>
+		<<if ["fillable", "advanced fillable", "hyper fillable"].includes($activeSlave.boobsImplantType)>>
+			<<if $activeSlave.boobsImplantType == "hyper fillable">>
+				<<if $activeSlave.boobsImplant < 20000>>
+					underfilled,
+				<<else>>
+					enormous,
+				<</if>>
+			<<elseif $activeSlave.boobsImplantType == "advanced fillable">>
+				<<if $activeSlave.boobsImplant <= 1000>>
+					deflated,
+				<<elseif $activeSlave.boobsImplant < 2200>>
+					underfilled,
+				<<elseif $activeSlave.boobsImplant > 10000>>
+					massively overfilled,
+				<<else>>
+					massive,
+				<</if>>
+			<<else>>
+				<<if $activeSlave.boobsImplant <= 500>>
+					deflated,
+				<<elseif $activeSlave.boobsImplant < 800>>
+					underfilled,
+				<<elseif $activeSlave.boobsImplant > 1800>>
+					massively overfilled,
+				<<elseif $activeSlave.boobsImplant > 1000>>
+					massive,
+				<<elseif $activeSlave.boobsImplant >= 800>>
+					giant,
+				<</if>>
+			<</if>>
+			<<print $activeSlave.boobsImplant>>cc $activeSlave.boobsImplantType breast implants.
+		<<else>>
+			<<if $activeSlave.boobsImplant > 1000>>
+				massive, <<print $activeSlave.boobsImplant>>cc
+			<<elseif $activeSlave.boobsImplant > 800>>
+				giant, <<print $activeSlave.boobsImplant>>cc
+			<<elseif $activeSlave.boobsImplant > 600>>
+				huge, <<print $activeSlave.boobsImplant>>cc
+			<<elseif $activeSlave.boobsImplant > 400>>
+				large, <<print $activeSlave.boobsImplant>>cc
+			<<elseif $activeSlave.boobsImplant > 200>>
+				moderate, <<print $activeSlave.boobsImplant>>cc
+			<<elseif $activeSlave.boobsImplant > 0>>
+				small, <<print $activeSlave.boobsImplant>>cc
+			<</if>>
+			<<if $activeSlave.boobsImplantType != "normal">>
+				$activeSlave.boobsImplantType
+			<</if>>
+			breast implants.
+			<<if $activeSlave.boobsImplant > 8000 && $activeSlave.boobsImplantType == "string">>
+				<span class="yellow">Large string based implants are a risk to a slave's health.</span>
+			<</if>>
 		<</if>>
 	<<else>>
 		no implants.
@@ -1024,29 +1059,54 @@
 
 	<<if $activeSlave.buttImplant > 0>>
 		$He has
-		<<if $activeSlave.buttImplant == 1>>
-			moderate
-		<<elseif $activeSlave.buttImplant == 2>>
-			enormous
-		<<elseif $activeSlave.buttImplant > 2>>
-			<<if $activeSlave.buttImplantType == 1>>
+		<<if $activeSlave.buttImplantType == "string">>
+			<<if $activeSlave.buttImplant > 2>>
 				massively engorged
+			<</if>>
+		<<elseif $activeSlave.buttImplantType == "normal">>
+			<<if $activeSlave.buttImplant == 1>>
+				moderate
+			<<elseif $activeSlave.buttImplant == 2>>
+				enormous
 			<<else>>
-				<<if $activeSlave.buttImplant > 8>>
-					hyper
-				<<elseif $activeSlave.buttImplant > 4>>
-					advanced
-				<</if>>
+				absurd
+			<</if>>
+		<<elseif $activeSlave.buttImplantType == "hyper fillable">>
+			<<if $activeSlave.buttImplant > 19>>
+				overfilled
+			<<elseif $activeSlave.buttImplant < 9>>
+				underfilled
+			<<elseif $activeSlave.buttImplant <= 5>>
+				deflated
+			<<else>>
+				absurd
+			<</if>>
+		<<elseif $activeSlave.buttImplantType == "advanced fillable">>
+			<<if $activeSlave.buttImplant > 8>>
+				overfilled
+			<<elseif $activeSlave.buttImplant < 5>>
+				underfilled
+			<<elseif $activeSlave.buttImplant <= 3>>
+				deflated
+			<<else>>
+				massive
+			<</if>>
+		<<elseif $activeSlave.buttImplantType == "fillable">>
+			<<if $activeSlave.buttImplant > 4>>
+				overfilled
+			<<elseif $activeSlave.buttImplant < 3>>
+				underfilled
+			<<elseif $activeSlave.buttImplant == 1>>
+				deflated
+			<<else>>
+				massive
 			<</if>>
 		<</if>>
-		butt
-		<<if $activeSlave.buttImplantType == 1>>
-			string
-		<<elseif $activeSlave.buttImplant >= 3>>
-			fillable
+		<<if $activeSlave.buttImplantType != "normal">>
+			$activeSlave.buttImplantType
 		<</if>>
-		implants.
-		<<if $activeSlave.buttImplant > 3 && $activeSlave.buttImplantType == 1>>
+		butt implants.
+		<<if $activeSlave.buttImplant > 3 && $activeSlave.buttImplantType == "string">>
 			<span class="yellow">Large string based implants are a risk to a slave's health.</span>
 		<</if>>
 	<</if>>
diff --git a/src/uncategorized/resFailure.tw b/src/uncategorized/resFailure.tw
index 9cc44e840550e043540ebae1181f57140b644272..2f8fea7aadfd0654ce278c17875c801c9fa22bdc 100644
--- a/src/uncategorized/resFailure.tw
+++ b/src/uncategorized/resFailure.tw
@@ -239,8 +239,10 @@
 		<<set $activeSlave.height += 10>>
 		<<set $activeSlave.buttImplant = (4-$activeSlave.butt)>>
 		<<set $activeSlave.butt += $activeSlave.buttImplant>>
+		<<set $activeSlave.boobsImplantType = "normal">>
 		<<set $activeSlave.boobsImplant = (2000-$activeSlave.boobs)>>
 		<<set $activeSlave.boobs += $activeSlave.boobsImplant>>
+		<<set $activeSlave.boobsImplantType = "fillable">>
 		<<set $activeSlave.nipples = "tiny">>
 		<<set $activeSlave.areolae = 0>>
 		<<set $activeSlave.clit = 0>>
diff --git a/src/uncategorized/saLongTermEffects.tw b/src/uncategorized/saLongTermEffects.tw
index 70c2204f58fd1c66b9d18c68b6306552f969845a..80f2249720ec51688242f630a0a5dcd5bc27d035 100644
--- a/src/uncategorized/saLongTermEffects.tw
+++ b/src/uncategorized/saLongTermEffects.tw
@@ -3161,7 +3161,7 @@
 
 /* IMPLANT EFFECTS ON UNDERLYING FLESH */
 
-<<if ($slaves[$i].boobsImplantType == 1)>>
+<<if ($slaves[$i].boobsImplantType == "string")>>
 	$His string implants absorb fluid @@.lime;slowly swelling $his breasts.@@
 	<<set $slaves[$i].boobsImplant += 50, $slaves[$i].boobs += 50>>
 	<<set _effect = random(1,10)>>
@@ -3225,7 +3225,7 @@
 	<</if>>
 <</if>>
 
-<<if ($slaves[$i].buttImplantType == 1)>>
+<<if ($slaves[$i].buttImplantType == "string")>>
 	$His string implants absorb fluid @@.lime;slowly swelling $his ass.@@
 	<<set $slaves[$i].buttImplant += .25, $slaves[$i].butt += .25>>
 	<<if ($slaves[$i].butt+$slaves[$i].buttImplant > 10 && $slaves[$i].buttImplant > 1)>>
diff --git a/src/uncategorized/seCoursing.tw b/src/uncategorized/seCoursing.tw
index 68cebeea596dc1847367ed437b31ce78da295950..9d8f813a6e11b7bf8a4184ed10e6278ca9145ebb 100644
--- a/src/uncategorized/seCoursing.tw
+++ b/src/uncategorized/seCoursing.tw
@@ -140,8 +140,10 @@ You lead your lurcher $activeLurcher.slaveName out on a leash, naked just like t
 	<<set $activeSlave = GenerateNewSlave("XX")>>
 	<<set $activeSlave.boobs += 800>>
 	<<set $activeSlave.boobsImplant += 800>>
+	<<set $activeSlave.boobsImplantType = "normal">>
 	<<set $activeSlave.butt += 1>>
 	<<set $activeSlave.buttImplant += 1>>
+	<<set $activeSlave.buttImplantType = "normal">>
 	<<set $activeSlave.face = 55>>
 	<<set $activeSlave.faceImplant += 20>>
 	<<set $activeSlave.anus = 1>>
@@ -211,8 +213,10 @@ You lead your lurcher $activeLurcher.slaveName out on a leash, naked just like t
 	<<set $activeSlave = GenerateNewSlave("XY")>>
 	<<set $activeSlave.boobs += 800>>
 	<<set $activeSlave.boobsImplant += 800>>
+	<<set $activeSlave.boobsImplantType = "fillable">>
 	<<set $activeSlave.butt += 1>>
 	<<set $activeSlave.buttImplant += 1>>
+	<<set $activeSlave.buttImplantType = "normal">>
 	<<set $activeSlave.face = Math.clamp($activeSlave.face+20,-100,100)>>
 	<<set $activeSlave.faceImplant += 20>>
 	<<set $activeSlave.anus = 3>>
diff --git a/src/uncategorized/seRaiding.tw b/src/uncategorized/seRaiding.tw
index 4620e2caa9353f991d03488e04fa478df8b7d32b..590a995e83d4e1cf270dcc456a7eb37b7df767db 100644
--- a/src/uncategorized/seRaiding.tw
+++ b/src/uncategorized/seRaiding.tw
@@ -79,8 +79,10 @@ target
 	<<set $activeSlave = GenerateNewSlave("XX")>>
 	<<set $activeSlave.boobs += 800>>
 	<<set $activeSlave.boobsImplant += 800>>
+	<<set $activeSlave.boobsImplantType = "normal">>
 	<<set $activeSlave.butt += 1>>
 	<<set $activeSlave.buttImplant += 1>>
+	<<set $activeSlave.buttImplantType = "normal">>
 	<<set $activeSlave.face = 55>>
 	<<set $activeSlave.faceImplant += 20>>
 	<<set $activeSlave.anus = 1>>
@@ -330,8 +332,10 @@ target
 	<<set $activeSlave = GenerateNewSlave("XX")>>
 	<<set $activeSlave.boobs += 800>>
 	<<set $activeSlave.boobsImplant += 800>>
+	<<set $activeSlave.boobsImplantType = "fillable">>
 	<<set $activeSlave.butt += 1>>
 	<<set $activeSlave.buttImplant += 1>>
+	<<set $activeSlave.buttImplantType = "normal">>
 	<<set $activeSlave.face = 55>>
 	<<set $activeSlave.faceImplant += 20>>
 	<<set $activeSlave.anus = 1>>
diff --git a/src/uncategorized/seRecruiterSuccess.tw b/src/uncategorized/seRecruiterSuccess.tw
index ded170cbec90c15182b30db87bf800c99e2b262b..26670aedb3a06af9758a6437b93ba75a9cfbe015 100644
--- a/src/uncategorized/seRecruiterSuccess.tw
+++ b/src/uncategorized/seRecruiterSuccess.tw
@@ -182,8 +182,14 @@
 <<set $activeSlave.skill.whoring = random(15,40)>>
 <<set $activeSlave.boobsImplant = random(0,3)*200>>
 <<set $activeSlave.boobs += $activeSlave.boobsImplant>>
+<<if $activeSlave.boobsImplant > 0>>
+	<<set $activeSlave.boobsImplantType = "normal">>
+<</if>>
 <<set $activeSlave.buttImplant = random(0,2)>>
 <<set $activeSlave.butt = $activeSlave.buttImplant>>
+<<if $activeSlave.buttImplant > 0>>
+	<<set $activeSlave.buttImplantType = "normal">>
+<</if>>
 <<set $activeSlave.lipsImplant = either(0,10)>>
 <<set $activeSlave.lips += $activeSlave.lipsImplant>>
 <<set $activeSlave.lipsPiercing = random(0,1)>>
diff --git a/src/uncategorized/slaveInteract.tw b/src/uncategorized/slaveInteract.tw
index 307d47c23b0b7b02695db8bc4d8457d1c0e37f18..7db74c82bf2712844bf465c1e967238e2c3f2fb5 100644
--- a/src/uncategorized/slaveInteract.tw
+++ b/src/uncategorized/slaveInteract.tw
@@ -157,25 +157,14 @@
 
 	<div id="fucktoypref"></div>
 	<script>App.UI.SlaveInteract.fucktoyPref(V.activeSlave)</script>
-
-	Assignment:
-	<span id="assign" font-weight="bold">
-		<<if $activeSlave.sentence>>
-			$activeSlave.assignment ($activeSlave.sentence weeks).
-		<<else>>
-			$activeSlave.assignment.
-		<</if>>
-	</span>
-	<<if $assignmentRecords[$activeSlave.ID] && $assignmentRecords[$activeSlave.ID] != $activeSlave.assignment>>
-		Previously: <<print $assignmentRecords[$activeSlave.ID]>>
-	<</if>>
 	
-	<span id="assignmentLinks"><<= App.UI.SlaveInteract.assignmentBlock("assignmentLinks")>></span>
+	<span id="assignmentLinks"></span>
+	<script>App.UI.SlaveInteract.assignmentBlock("assignmentLinks", V.activeSlave)</script>
 
 	<<set _numFacilities = $brothel+$club+$dairy+$farmyard+$servantsQuarters+$masterSuite+$spa+$nursery+$clinic+$schoolroom+$cellblock+$arcade+$HGSuite>>
 
 	<<if _numFacilities > 0>>
-		<br>Transfer to: <<= App.UI.jobLinks.transfers(-1)>>
+		Transfer to: <<= App.UI.jobLinks.transfers(-1)>>
 	<</if>> /* closes _numFacilities */
 
 <</switch>> /* END CAN BE REASSIGNED */
@@ -213,131 +202,37 @@
 		<script>App.UI.Wardrobe.legAccessory(V.activeSlave)</script>
 	<</if>>
 
-	<br>Torso accessory: ''<span id="bellyAccessory">$activeSlave.bellyAccessory</span>.''
-	<<link "None">><<set $activeSlave.bellyAccessory = "none">><<replace "#bellyAccessory">>$activeSlave.bellyAccessory<</replace>><</link>>
-	| <<link "Tight corset">><<set $activeSlave.bellyAccessory = "a corset">><<replace "#bellyAccessory">>$activeSlave.bellyAccessory<</replace>><</link>>
-	<<if ($activeSlave.breedingMark != 1 || $propOutcome == 0 || $eugenicsFullControl == 1 || $arcologies[0].FSRestart == "unset")>>
-		| <<link "Extreme corset">><<set $activeSlave.bellyAccessory = "an extreme corset">><<replace "#bellyAccessory">>$activeSlave.bellyAccessory<</replace>><</link>>
-	<</if>>
-	<<if ($activeSlave.belly > 10000)>>
-		| <<link "Supportive band">><<set $activeSlave.bellyAccessory = "a support band">><<replace "#bellyAccessory">>$activeSlave.bellyAccessory<</replace>><</link>>
-	<</if>>
-	<<if isItemAccessible("a small empathy belly")>> /* works for all of them */
-		<<if $activeSlave.belly < 1500 && $activeSlave.weight < 130>>
-			| <<link "1st Trimester belly">><<set $activeSlave.bellyAccessory = "a small empathy belly">><<replace "#bellyAccessory">>$activeSlave.bellyAccessory<</replace>><</link>>
-			| <<link "2nd Trimester belly">><<set $activeSlave.bellyAccessory = "a medium empathy belly">><<replace "#bellyAccessory">>$activeSlave.bellyAccessory<</replace>><</link>>
-			| <<link "3rd Trimester belly">><<set $activeSlave.bellyAccessory = "a large empathy belly">><<replace "#bellyAccessory">>$activeSlave.bellyAccessory<</replace>><</link>>
-			| <<link "3rd Trimester twins belly">><<set $activeSlave.bellyAccessory = "a huge empathy belly">><<replace "#bellyAccessory">>$activeSlave.bellyAccessory<</replace>><</link>>
-		<<else>>
-			| $His stomach is too big to fit an empathy belly around.
-		<</if>>
-	<</if>>
+	<span id="bellyAccessory"></span>
+	<script>App.UI.Wardrobe.bellyAccessory(V.activeSlave)</script>
+
+	<span id="buttplug"></span>
+	<script>App.UI.Wardrobe.buttplug(V.activeSlave)</script>
 
-	<br>Anal accessory: ''<span id="buttplug">$activeSlave.buttplug</span>.''
-	<<link "None">><<set $activeSlave.buttplug = "none", $activeSlave.buttplugAttachment = "none">><<replace "#buttplug">>$activeSlave.buttplug<</replace>><</link>>
-	| <<link "Normal">><<set $activeSlave.buttplug = "plug">><<replace "#buttplug">>$activeSlave.buttplug<</replace>><</link>>
-	<<if isItemAccessible("long plug") && ($activeSlave.breedingMark != 1 || $propOutcome == 0 || $eugenicsFullControl == 1 || $arcologies[0].FSRestart == "unset")>>
-		| <<link "Long">><<set $activeSlave.buttplug = "long plug">><<replace "#buttplug">>$activeSlave.buttplug<</replace>><</link>>
-	<</if>>
-	| <<link "Large">><<set $activeSlave.buttplug = "large plug">><<replace "#buttplug">>$activeSlave.buttplug<</replace>><</link>>
-	<<if isItemAccessible("long, large plug") && ($activeSlave.breedingMark != 1 || $propOutcome == 0 || $eugenicsFullControl == 1 || $arcologies[0].FSRestart == "unset")>>
-		| <<link "Long and large">><<set $activeSlave.buttplug = "long, large plug">><<replace "#buttplug">>$activeSlave.buttplug<</replace>><</link>>
-	<</if>>
-	<<if $activeSlave.anus >= 2>>
-		| <<link "Huge">><<set $activeSlave.buttplug = "huge plug">><<replace "#buttplug">>$activeSlave.buttplug<</replace>><</link>>
-		<<if isItemAccessible("long, huge plug")>>
-			<<if ($activeSlave.breedingMark != 1 || $propOutcome == 0 || $eugenicsFullControl == 1 || $arcologies[0].FSRestart == "unset")>>
-				| <<link "Long and huge">><<set $activeSlave.buttplug = "long, huge plug">><<replace "#buttplug">>$activeSlave.buttplug<</replace>><</link>>
-			<</if>>
-		<</if>>
-	<</if>>
 	<<if isItemAccessible("tail") && $activeSlave.buttplug != "none">>
-		<br>
-		&nbsp;&nbsp;&nbsp;&nbsp;Anal accessory attachment: ''<span id="buttplugAttach">$activeSlave.buttplugAttachment</span>.''
-		<<link "None">><<set $activeSlave.buttplugAttachment = "none">><<replace "#buttplugAttach">>$activeSlave.buttplugAttachment<</replace>><</link>>
-		<<if $toysBoughtButtPlugTails == 1>>
-			| <<link "Tail">><<set $activeSlave.buttplugAttachment = "tail">><<replace "#buttplugAttach">>$activeSlave.buttplugAttachment<</replace>><</link>>
-			| <<link "Cat tail">><<set $activeSlave.buttplugAttachment = "cat tail">><<replace "#buttplugAttach">>$activeSlave.buttplugAttachment<</replace>><</link>>
-			| <<link "Fox tail">><<set $activeSlave.buttplugAttachment = "fox tail">><<replace "#buttplugAttach">>$activeSlave.buttplugAttachment<</replace>><</link>>
-			| <<link "Cow tail">><<set $activeSlave.buttplugAttachment = "cow tail">><<replace "#buttplugAttach">>$activeSlave.buttplugAttachment<</replace>><</link>>
-		<</if>>
+		<span id="buttplugAttachment"></span>
+		<script>App.UI.Wardrobe.buttplugAttachment(V.activeSlave)</script>
 	<</if>>
 
 	<<if $activeSlave.vagina > -1>>
-		<br>Vaginal accessory: ''<span id="vaginalAccessory">$activeSlave.vaginalAccessory</span>.''
-		<<link "None">><<set $activeSlave.vaginalAccessory = "none">><<replace "#vaginalAccessory">>$activeSlave.vaginalAccessory<</replace>><<run App.UI.SlaveInteract.refreshAll($activeSlave)>><</link>>
-		<<if isItemAccessible("bullet vibrator")>>
-			| <<link "Bullet vibrator">><<set $activeSlave.vaginalAccessory = "bullet vibrator">><<replace "#vaginalAccessory">>$activeSlave.vaginalAccessory<</replace>><</link>>
-		<</if>>
-		<<if isItemAccessible("smart bullet vibrator") && $toysBoughtSmartVibes == 1>>
-			| <<link "Smart bullet vibrator">><<set $activeSlave.vaginalAccessory = "smart bullet vibrator">><<replace "#vaginalAccessory">>$activeSlave.vaginalAccessory<</replace>><</link>>
-		<</if>>
-		| <<link "Dildo">><<set $activeSlave.vaginalAccessory = "dildo">><<replace "#vaginalAccessory">>$activeSlave.vaginalAccessory<</replace>><</link>>
-		<<if isItemAccessible("long dildo") && ($activeSlave.breedingMark != 1 || $propOutcome == 0 || $eugenicsFullControl == 1 || $arcologies[0].FSRestart == "unset")>>
-			| <<link "Long dildo">><<set $activeSlave.vaginalAccessory = "long dildo">><<replace "#vaginalAccessory">>$activeSlave.vaginalAccessory<</replace>><</link>>
-		<</if>>
-		| <<link "Large dildo">><<set $activeSlave.vaginalAccessory = "large dildo">><<replace "#vaginalAccessory">>$activeSlave.vaginalAccessory<</replace>><</link>>
-		<<if isItemAccessible("long, large dildo") && ($activeSlave.breedingMark != 1 || $propOutcome == 0 || $eugenicsFullControl == 1 || $arcologies[0].FSRestart == "unset")>>
-			| <<link "Large and long dildo">><<set $activeSlave.vaginalAccessory = "long, large dildo">><<replace "#vaginalAccessory">>$activeSlave.vaginalAccessory<</replace>><</link>>
-		<</if>>
-		<<if $activeSlave.vagina >= 2>>
-			| <<link "Huge dildo">><<set $activeSlave.vaginalAccessory = "huge dildo">><<replace "#vaginalAccessory">>$activeSlave.vaginalAccessory<</replace>><</link>>
-			<<if isItemAccessible("long, huge dildo") && ($activeSlave.breedingMark != 1 || $propOutcome == 0 || $eugenicsFullControl == 1 || $arcologies[0].FSRestart == "unset")>>
-				| <<link "Huge and long dildo">><<set $activeSlave.vaginalAccessory = "long, huge dildo">><<replace "#vaginalAccessory">>$activeSlave.vaginalAccessory<</replace>><</link>>
-			<</if>>
-		<</if>>
-		<<if isItemAccessible("vibrator") && ($activeSlave.vaginalAccessory != "none" && $activeSlave.vaginalAccessory != "bullet vibrator" && $activeSlave.vaginalAccessory != "smart bullet vibrator") && $toysBoughtVaginalAttachments == 1>>
-			<br>
-			&nbsp;&nbsp;&nbsp;&nbsp;Vaginal accessory attachment:
-			''<span id="vaginalAttachment">$activeSlave.vaginalAttachment</span>.''
-			<<link "None">><<set $activeSlave.vaginalAttachment = "none">><<replace "#vaginalAttachment">>$activeSlave.vaginalAttachment<</replace>><</link>>
-			| <<link "Vibrating dildo">><<set $activeSlave.vaginalAttachment = "vibrator">><<replace "#vaginalAttachment">>$activeSlave.vaginalAttachment<</replace>><</link>>
-		<</if>>
+		<span id="vaginalAccessory"></span>
+		<script>App.UI.Wardrobe.vaginalAccessory(V.activeSlave)</script>
+		<span id="vaginalAttachment"></span>
+		<script>App.UI.Wardrobe.vaginalAttachment(V.activeSlave)</script>
 	<</if>>
 
 	<<if $activeSlave.dick > 0>>
-		<br>Dick accessory: ''<span id="dickAccessory">$activeSlave.dickAccessory</span>.''
-		<<link "None">><<set $activeSlave.dickAccessory = "none">><<replace "#dickAccessory">>$activeSlave.dickAccessory<</replace>><<run App.UI.SlaveInteract.refreshAll($activeSlave)>><</link>>
-		<<if isItemAccessible("bullet vibrator") && $toysBoughtVaginalAttachments == 1>>
-			| <<link "Bullet vibrator">><<set $activeSlave.dickAccessory = "bullet vibrator">><<replace "#dickAccessory">>$activeSlave.dickAccessory<</replace>><</link>>
-		<</if>>
-		<<if isItemAccessible("smart bullet vibrator") && $toysBoughtVaginalAttachments == 1>>
-			| <<link "Smart bullet vibrator">><<set $activeSlave.dickAccessory = "smart bullet vibrator">><<replace "#dickAccessory">>$activeSlave.dickAccessory<</replace>><</link>>
-		<</if>>
+		<span id="dickAccessory"></span>
+		<script>App.UI.Wardrobe.dickAccessory(V.activeSlave)</script>
 	<</if>>
 
-	<br>Chastity device: ''<span id="chastity"><<if $activeSlave.chastityAnus == 1 && $activeSlave.chastityPenis == 1 && $activeSlave.chastityVagina == 1>>full chastity<<elseif $activeSlave.chastityPenis == 1 && $activeSlave.chastityVagina == 1>>genital chastity<<elseif $activeSlave.chastityAnus == 1 && $activeSlave.chastityPenis == 1>>combined chastity cage<<elseif $activeSlave.chastityAnus == 1 && $activeSlave.chastityVagina == 1>>combined chastity belt<<elseif $activeSlave.chastityVagina == 1>>chastity belt<<elseif $activeSlave.chastityPenis == 1>>chastity cage<<elseif $activeSlave.chastityAnus == 1>>anal chastity<<elseif $activeSlave.chastityAnus == 0 && $activeSlave.chastityPenis == 0 && $activeSlave.chastityVagina == 0>>none<<else>>THERE HAS BEEN AN ERROR<</if>></span>.''
-	<<link "None">><<set $activeSlave.chastityAnus = 0>><<set $activeSlave.chastityPenis = 0>><<set $activeSlave.chastityVagina = 0>><<replace "#chastity">>none<</replace>><<run App.UI.SlaveInteract.refreshAll($activeSlave)>><</link>>
-	| <<link "Anal chastity">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 1>><<set $activeSlave.chastityPenis = 0>><<set $activeSlave.chastityVagina = 0>><<replace "#chastity">>anal chastity<</replace>><<run App.UI.SlaveInteract.refreshAll($activeSlave)>><</link>>
-	<<if $activeSlave.vagina > -1>>
-		| <<link "Chastity belt">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 0>><<set $activeSlave.chastityPenis = 0>><<set $activeSlave.chastityVagina = 1>><<replace "#chastity">>Chastity belt<</replace>><<run App.UI.SlaveInteract.refreshAll($activeSlave)>><</link>>
-		| <<link "Combined chastity belt">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 1>><<set $activeSlave.chastityPenis = 0>><<set $activeSlave.chastityVagina = 1>><<replace "#chastity">>Combined chastity belt<</replace>><<run App.UI.SlaveInteract.refreshAll($activeSlave)>><</link>>
-	<</if>>
-	<<if $activeSlave.dick > 0>>
-		| <<link "Chastity cage">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 0>><<set $activeSlave.chastityPenis = 1>><<set $activeSlave.chastityVagina = 0>><<replace "#chastity">>Chastity cage<</replace>><<run App.UI.SlaveInteract.refreshAll($activeSlave)>><</link>>
-		| <<link "Combined chastity cage">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 1>><<set $activeSlave.chastityPenis = 1>><<set $activeSlave.chastityVagina = 0>><<replace "#chastity">>Combined Chastity cage<</replace>><<run App.UI.SlaveInteract.refreshAll($activeSlave)>><</link>>
-		<<if $activeSlave.vagina > -1>>
-			| <<link "Genital chastity">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 0>><<set $activeSlave.chastityPenis = 1>><<set $activeSlave.chastityVagina = 1>><<replace "#chastity">>Genital chastity<</replace>><<run App.UI.SlaveInteract.refreshAll($activeSlave)>><</link>>
-			| <<link "Full chastity">><<set $activeSlave.choosesOwnChastity = 0>><<set $activeSlave.chastityAnus = 1>><<set $activeSlave.chastityPenis = 1>><<set $activeSlave.chastityVagina = 1>><<replace "#chastity">>Full chastity<</replace>><<run App.UI.SlaveInteract.refreshAll($activeSlave)>><</link>>
-		<</if>>
-	<</if>>
-
-	<<if $arcologies[0].FSRestart != "unset" && $activeSlave.devotion > 20 && $activeSlave.trust > 0 && $activeSlave.choosesOwnClothes == 1>>
-		<br>
-		<<if $activeSlave.choosesOwnChastity == 1>>
-			$He is allowed to decide whether $he to wear chastity devices.
-			[[Withdraw Privilege|Slave Interact][$activeSlave.choosesOwnChastity = 0]]
-		<<else>>
-			$He is not allowed to choose whether to wear chastity devices.
-			[[Allow Choice|Slave Interact][$activeSlave.choosesOwnChastity = 1]]
-		<</if>>
-	<</if>>
+	<span id="chastity"></span>
+	<script>App.UI.Wardrobe.chastity(V.activeSlave)</script>
 
 <</if>> /* CLOSES FUCKDOLL CHECK */
 
 <</if>>	/* CLOSES WARDROBE CHECK */
 
-<br><br>__Physical Regimen:__
+<br>__Physical Regimen:__
 <span id="drugs"></span>
 <script>App.UI.SlaveInteract.drugs(V.activeSlave)</script>
 
diff --git a/src/uncategorized/slaveShelter.tw b/src/uncategorized/slaveShelter.tw
index ea9c22f03b05cbdd354acb7ba809024cf58a25b9..718daf2afe00442c0b9262753466854e565dabaa 100644
--- a/src/uncategorized/slaveShelter.tw
+++ b/src/uncategorized/slaveShelter.tw
@@ -170,6 +170,7 @@ You contact the Slave Shelter to review the profile of the slave the Shelter is
 	<<run setHealth($shelterSlave, jsRandom(-60,-40), normalRandInt(10, 3), normalRandInt(20, 3))>>
 	<<set $shelterSlave.boobs = 0>>
 	<<set $shelterSlave.boobsImplant = 0>>
+	<<set $shelterSlave.boobsImplantType = "none">>
 	<<set $shelterSlave.nipples = "tiny">>
 	<<set $shelterSlave.behavioralFlaw = either("anorexic", "anorexic", "anorexic", "odd")>>
 	<<set $shelterSlave.sexualFlaw = either("apathetic", "neglectful", "self hating")>>
diff --git a/src/uncategorized/wardrobe.tw b/src/uncategorized/wardrobe.tw
index c216f9526989329ee6f3102e3689bd4466b6d704..53018e6985ecf74b58f965c0469f7759183a3718 100644
--- a/src/uncategorized/wardrobe.tw
+++ b/src/uncategorized/wardrobe.tw
@@ -51,7 +51,7 @@ The room containing all the clothes and accessories you have available to dress
 		<<= SlaveArt(_model, 1, 0)>>
 	</div>
 <</if>>
-<<if !isClothingAccessible.entry("a bunny outfit")>>
+<<if !isClothingAccessible.entry("a bunny outfit") === true>>
 	[[Order a shipment of bunny suits|Wardrobe][cashX(forceNeg(Math.trunc(7500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtBunny = 1]]
 	<div class="detail">Costs <<print cashFormat(Math.trunc(7500 * $upgradeMultiplierTrade))>></div>
 <<else>>
@@ -66,7 +66,7 @@ The room containing all the clothes and accessories you have available to dress
 		<<= SlaveArt(_model, 1, 0)>>
 	</div>
 <</if>>
-<<if !isClothingAccessible.entry("conservative clothing")>>
+<<if !isClothingAccessible.entry("conservative clothing") === true>>
 	[[Order a shipment of conservative clothes|Wardrobe][cashX(forceNeg(Math.trunc(7500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtConservative = 1]]
 	<div class="detail">Costs <<print cashFormat(Math.trunc(7500 * $upgradeMultiplierTrade))>></div>
 <<else>>
@@ -83,7 +83,7 @@ The room containing all the clothes and accessories you have available to dress
 		<<= SlaveArt(_model, 1, 0)>>
 	</div>
 <</if>>
-<<if !isClothingAccessible.entry("a bimbo outfit")>>
+<<if !isClothingAccessible.entry("a bimbo outfit") === true>>
 	[[Order a shipment of outfits suitable for bimbos|Wardrobe][cashX(forceNeg(Math.trunc(7500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtBimbo = 1]]
 	<div class="detail">Costs <<print cashFormat(Math.trunc(7500 * $upgradeMultiplierTrade))>></div>
 <<else>>
@@ -98,7 +98,7 @@ The room containing all the clothes and accessories you have available to dress
 		<<= SlaveArt(_model, 1, 0)>>
 	</div>
 <</if>>
-<<if !isClothingAccessible.entry("a courtesan dress")>>
+<<if !isClothingAccessible.entry("a courtesan dress") === true>>
 	[[Order a shipment of courtesan dresses|Wardrobe][cashX(forceNeg(Math.trunc(7500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtCourtesan = 1]]
 	<div class="detail">Costs <<print cashFormat(Math.trunc(7500 * $upgradeMultiplierTrade))>></div>
 <<else>>
@@ -115,7 +115,7 @@ The room containing all the clothes and accessories you have available to dress
 		<<= SlaveArt(_model, 1, 0)>>
 	</div>
 <</if>>
-<<if !isClothingAccessible.entry("chains")>>
+<<if !isClothingAccessible.entry("chains") === true>>
 	[[Order a shipment of chains|Wardrobe][cashX(forceNeg(Math.trunc(7500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtChains = 1]]
 	<div class="detail">Costs <<print cashFormat(Math.trunc(7500 * $upgradeMultiplierTrade))>></div>
 <<else>>
@@ -130,7 +130,7 @@ The room containing all the clothes and accessories you have available to dress
 		<<= SlaveArt(_model, 1, 0)>>
 	</div>
 <</if>>
-<<if !isClothingAccessible.entry("Western clothing")>>
+<<if !isClothingAccessible.entry("Western clothing") === true>>
 	[[Order a shipment of western outfits|Wardrobe][cashX(forceNeg(Math.trunc(7500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtWestern = 1]]
 	<div class="detail">Costs <<print cashFormat(Math.trunc(7500 * $upgradeMultiplierTrade))>></div>
 <<else>>
@@ -147,7 +147,7 @@ The room containing all the clothes and accessories you have available to dress
 		<<= SlaveArt(_model, 1, 0)>>
 	</div>
 <</if>>
-<<if !isClothingAccessible.entry("body oil")>>
+<<if !isClothingAccessible.entry("body oil") === true>>
 	[[Order a shipment of body oil|Wardrobe][cashX(forceNeg(Math.trunc(7500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtOil = 1]]
 	<div class="detail">Costs <<print cashFormat(Math.trunc(7500 * $upgradeMultiplierTrade))>></div>
 <<else>>
@@ -162,7 +162,7 @@ The room containing all the clothes and accessories you have available to dress
 		<<= SlaveArt(_model, 1, 0)>>
 	</div>
 <</if>>
-<<if !isClothingAccessible.entry("stretch pants and a crop-top")>>
+<<if !isClothingAccessible.entry("stretch pants and a crop-top") === true>>
 	[[Order a shipment of comfortable, rather stretchy, clothes|Wardrobe][cashX(forceNeg(Math.trunc(7500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtLazyClothes = 1]]
 	<div class="detail">Costs <<print cashFormat(Math.trunc(7500 * $upgradeMultiplierTrade))>></div>
 <<else>>
@@ -179,7 +179,7 @@ The room containing all the clothes and accessories you have available to dress
 		<<= SlaveArt(_model, 1, 0)>>
 	</div>
 <</if>>
-<<if !isClothingAccessible.entry("a chattel habit")>>
+<<if !isClothingAccessible.entry("a chattel habit") === true>>
 	[[Order a shipment of chattel habits|Wardrobe][cashX(forceNeg(Math.trunc(7500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtHabit = 1]]
 	<div class="detail">Costs <<print cashFormat(Math.trunc(7500 * $upgradeMultiplierTrade))>></div>
 <<else>>
@@ -193,7 +193,7 @@ The room containing all the clothes and accessories you have available to dress
 		<<= SlaveArt(_model, 1, 0)>>
 	</div>
 <</if>>
-<<if !isClothingAccessible.entry("a maternity dress")>>
+<<if !isClothingAccessible.entry("a maternity dress") === true>>
 	[[Order a shipment of maternity dresses|Wardrobe][cashX(forceNeg(Math.trunc(7500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtMaternityDress = 1]]
 	<div class="detail">Costs <<print cashFormat(Math.trunc(7500 * $upgradeMultiplierTrade))>></div>
 <<else>>
@@ -210,7 +210,7 @@ The room containing all the clothes and accessories you have available to dress
 		<<= SlaveArt(_model, 1, 0)>>
 	</div>
 <</if>>
-<<if !isClothingAccessible.entry("attractive lingerie for a pregnant woman")>>
+<<if !isClothingAccessible.entry("attractive lingerie for a pregnant woman") === true>>
 	[[Order a shipment of maternity lingerie|Wardrobe][cashX(forceNeg(Math.trunc(7500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtMaternityLingerie = 1]]
 	<div class="detail">Costs <<print cashFormat(Math.trunc(7500 * $upgradeMultiplierTrade))>></div>
 <<else>>
@@ -248,7 +248,7 @@ The room containing all the clothes and accessories you have available to dress
 		<<= SlaveArt(_model, 1, 0)>>
 	</div>
 <</if>>
-<<if !isClothingAccessible.entry("a toga")>>
+<<if !isClothingAccessible.entry("a toga") === true>>
 	[[Order a shipment of togas|Wardrobe][cashX(forceNeg(Math.trunc(7500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtToga = 1]]
 	<div class="detail">Costs <<print cashFormat(Math.trunc(7500 * $upgradeMultiplierTrade))>></div>
 <<else>>
@@ -265,7 +265,7 @@ The room containing all the clothes and accessories you have available to dress
 		<<= SlaveArt(_model, 1, 0)>>
 	</div>
 <</if>>
-<<if !isClothingAccessible.entry("a huipil")>>
+<<if !isClothingAccessible.entry("a huipil") === true>>
 	[[Order a shipment of huipil|Wardrobe][cashX(forceNeg(Math.trunc(7500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtHuipil = 1]]
 	<div class="detail">Costs <<print cashFormat(Math.trunc(7500 * $upgradeMultiplierTrade))>></div>
 <<else>>
@@ -280,7 +280,7 @@ The room containing all the clothes and accessories you have available to dress
 		<<= SlaveArt(_model, 1, 0)>>
 	</div>
 <</if>>
-<<if !isClothingAccessible.entry("a kimono")>>
+<<if !isClothingAccessible.entry("a kimono") === true>>
 	[[Order a shipment of kimonos|Wardrobe][cashX(forceNeg(Math.trunc(7500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtKimono = 1]]
 	<div class="detail">Costs <<print cashFormat(Math.trunc(7500 * $upgradeMultiplierTrade))>></div>
 <<else>>
@@ -297,7 +297,7 @@ The room containing all the clothes and accessories you have available to dress
 		<<= SlaveArt(_model, 1, 0)>>
 	</div>
 <</if>>
-<<if !isClothingAccessible.entry("harem gauze")>>
+<<if !isClothingAccessible.entry("harem gauze") === true>>
 	[[Order a shipment of harem outfits|Wardrobe][cashX(forceNeg(Math.trunc(7500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtHarem = 1]]
 	<div class="detail">Costs <<print cashFormat(Math.trunc(7500 * $upgradeMultiplierTrade))>></div>
 <<else>>
@@ -312,7 +312,7 @@ The room containing all the clothes and accessories you have available to dress
 		<<= SlaveArt(_model, 1, 0)>>
 	</div>
 <</if>>
-<<if !isClothingAccessible.entry("a slutty qipao")>>
+<<if !isClothingAccessible.entry("a slutty qipao") === true>>
 	[[Order a shipment of qipaos|Wardrobe][cashX(forceNeg(Math.trunc(7500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtQipao = 1]]
 	<div class="detail">Costs <<print cashFormat(Math.trunc(7500 * $upgradeMultiplierTrade))>></div>
 <<else>>
@@ -333,7 +333,7 @@ The room containing all the clothes and accessories you have available to dress
 		<<= SlaveArt(_model, 1, 0)>>
 	</div>
 <</if>>
-<<if !isClothingAccessible.entry("battlearmor")>>
+<<if !isClothingAccessible.entry("battlearmor") === true>>
 	[[Order a shipment of military themed clothing|Wardrobe][cashX(forceNeg(Math.trunc(5000 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtMilitary = 1]]
 	<div class="detail">Costs <<print cashFormat(Math.trunc(5000 * $upgradeMultiplierTrade))>></div>
 <<else>>
@@ -348,7 +348,7 @@ The room containing all the clothes and accessories you have available to dress
 		<<= SlaveArt(_model, 1, 0)>>
 	</div>
 <</if>>
-<<if !isClothingAccessible.entry("a dirndl")>>
+<<if !isClothingAccessible.entry("a dirndl") === true>>
 	[[Order a shipment of cultural outfits|Wardrobe][cashX(forceNeg(Math.trunc(15000 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtCultural = 1]]
 	<div class="detail">Costs <<print cashFormat(Math.trunc(15000 * $upgradeMultiplierTrade))>></div>
 <<else>>
@@ -365,7 +365,7 @@ The room containing all the clothes and accessories you have available to dress
 		<<= SlaveArt(_model, 1, 0)>>
 	</div>
 <</if>>
-<<if !isClothingAccessible.entry("a burqa")>>
+<<if !isClothingAccessible.entry("a burqa") === true>>
 	[[Order a shipment of burqas and similar garb|Wardrobe][cashX(forceNeg(Math.trunc(5000 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtMiddleEastern = 1]]
 	<div class="detail">Costs <<print cashFormat(Math.trunc(5000 * $upgradeMultiplierTrade))>></div>
 <<else>>
@@ -380,7 +380,7 @@ The room containing all the clothes and accessories you have available to dress
 		<<= SlaveArt(_model, 1, 0)>>
 	</div>
 <</if>>
-<<if !isClothingAccessible.entry("jeans")>>
+<<if !isClothingAccessible.entry("jeans") === true>>
 	[[Order an extra large shipment of casual clothing|Wardrobe][cashX(forceNeg(Math.trunc(5000 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtCasual = 1]]
 	<div class="detail">Costs <<print cashFormat(Math.trunc(5000 * $upgradeMultiplierTrade))>></div>
 <<else>>
@@ -397,7 +397,7 @@ The room containing all the clothes and accessories you have available to dress
 		<<= SlaveArt(_model, 1, 0)>>
 	</div>
 <</if>>
-<<if !isClothingAccessible.entry("a police uniform")>>
+<<if !isClothingAccessible.entry("a police uniform") === true>>
 	[[Order a shipment of professional garments|Wardrobe][cashX(forceNeg(Math.trunc(2500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtCareer = 1]]
 	<div class="detail">Costs <<print cashFormat(Math.trunc(2500 * $upgradeMultiplierTrade))>></div>
 <<else>>
@@ -412,7 +412,7 @@ The room containing all the clothes and accessories you have available to dress
 		<<= SlaveArt(_model, 1, 0)>>
 	</div>
 <</if>>
-<<if !isClothingAccessible.entry("a gothic lolita dress")>>
+<<if !isClothingAccessible.entry("a gothic lolita dress") === true>>
 	[[Order a shipment of professionally tailored dresses|Wardrobe][cashX(forceNeg(Math.trunc(15000 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtDresses = 1]]
 	<div class="detail">Costs <<print cashFormat(Math.trunc(15000 * $upgradeMultiplierTrade))>></div>
 <<else>>
@@ -429,7 +429,7 @@ The room containing all the clothes and accessories you have available to dress
 		<<= SlaveArt(_model, 1, 0)>>
 	</div>
 <</if>>
-<<if !isClothingAccessible.entry("a cybersuit")>>
+<<if !isClothingAccessible.entry("a cybersuit") === true>>
 	[[Order a shipment of exotic bodysuits|Wardrobe][cashX(forceNeg(Math.trunc(7500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtBodysuits = 1]]
 	<div class="detail">Costs <<print cashFormat(Math.trunc(7500 * $upgradeMultiplierTrade))>></div>
 <<else>>
@@ -444,7 +444,7 @@ The room containing all the clothes and accessories you have available to dress
 		<<= SlaveArt(_model, 1, 0)>>
 	</div>
 <</if>>
-<<if !isClothingAccessible.entry("boyshorts")>>
+<<if !isClothingAccessible.entry("boyshorts") === true>>
 	[[Order a shipment of undergarments|Wardrobe][cashX(forceNeg(Math.trunc(5000 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtUnderwear = 1]]
 	<div class="detail">Costs <<print cashFormat(Math.trunc(5000 * $upgradeMultiplierTrade))>></div>
 <<else>>
@@ -461,7 +461,7 @@ The room containing all the clothes and accessories you have available to dress
 		<<= SlaveArt(_model, 1, 0)>>
 	</div>
 <</if>>
-<<if !isClothingAccessible.entry("sport shorts and a sports bra")>>
+<<if !isClothingAccessible.entry("sport shorts and a sports bra") === true>>
 	[[Order a shipment of exercise wear|Wardrobe][cashX(forceNeg(Math.trunc(2500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtSports = 1]]
 	<div class="detail">Costs <<print cashFormat(Math.trunc(2500 * $upgradeMultiplierTrade))>></div>
 <<else>>
@@ -476,7 +476,7 @@ The room containing all the clothes and accessories you have available to dress
 		<<= SlaveArt(_model, 1, 0)>>
 	</div>
 <</if>>
-<<if !isClothingAccessible.entry("a one-piece swimsuit")>>
+<<if !isClothingAccessible.entry("a one-piece swimsuit") === true>>
 	[[Order a shipment of swimwear|Wardrobe][cashX(forceNeg(Math.trunc(3500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtSwimwear = 1]]
 	<div class="detail">Costs <<print cashFormat(Math.trunc(3500 * $upgradeMultiplierTrade))>></div>
 <<else>>
@@ -493,7 +493,7 @@ The room containing all the clothes and accessories you have available to dress
 		<<= SlaveArt(_model, 1, 0)>>
 	</div>
 <</if>>
-<<if !isClothingAccessible.entry("a nice pony outfit")>>
+<<if !isClothingAccessible.entry("a nice pony outfit") === true>>
 	[[Order a shipment of specialized latex ponygirl outfits|Wardrobe][cashX(forceNeg(Math.trunc(10000 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtPony = 1]]
 	<div class="detail">Costs <<print cashFormat(Math.trunc(10000 * $upgradeMultiplierTrade))>></div>
 <<else>>
@@ -508,7 +508,7 @@ The room containing all the clothes and accessories you have available to dress
 		<<= SlaveArt(_model, 1, 0)>>
 	</div>
 <</if>>
-<<if !isClothingAccessible.entry("a schutzstaffel uniform")>>
+<<if !isClothingAccessible.entry("a schutzstaffel uniform") === true>>
 	[[Order a shipment of politically incorrect clothing|Wardrobe][cashX(forceNeg(Math.trunc(15000 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtPol = 1]]
 	<div class="detail">Costs <<print cashFormat(Math.trunc(15000 * $upgradeMultiplierTrade))>></div>
 <<else>>
@@ -525,7 +525,7 @@ The room containing all the clothes and accessories you have available to dress
 		<<= SlaveArt(_model, 1, 0)>>
 	</div>
 <</if>>
-<<if !isClothingAccessible.entry("a Santa dress")>>
+<<if !isClothingAccessible.entry("a Santa dress") === true>>
 	[[Order a shipment of colorful and revealing costumes|Wardrobe][cashX(forceNeg(Math.trunc(7500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtCostume = 1]]
 	<div class="detail">Costs <<print cashFormat(Math.trunc(15000 * $upgradeMultiplierTrade))>></div>
 <<else>>
@@ -540,7 +540,7 @@ The room containing all the clothes and accessories you have available to dress
 		<<= SlaveArt(_model, 1, 0)>>
 	</div>
 <</if>>
-<<if !isClothingAccessible.entry("striped panties")>>
+<<if !isClothingAccessible.entry("striped panties") === true>>
 	[[Order a large crate of panties from Japan|Wardrobe][cashX(forceNeg(Math.trunc(2500 * $upgradeMultiplierTrade)), "capEx"), $clothesBoughtPantsu = 1]]
 	<div class="detail">Costs <<print cashFormat(Math.trunc(2500 * $upgradeMultiplierTrade))>></div>
 <<else>>
diff --git a/src/utility/descriptionWidgetsFlesh.tw b/src/utility/descriptionWidgetsFlesh.tw
index f515471455ad1f9bb9b4b5308c06f66e8cd19d40..f8aa30b32a0efd9b98fb84d7e0f01e87463f6a85 100644
--- a/src/utility/descriptionWidgetsFlesh.tw
+++ b/src/utility/descriptionWidgetsFlesh.tw
@@ -1264,13 +1264,13 @@ $He's got a
 		<<elseif $activeSlave.buttImplant == 2>>
 			$His big butt implants make $his ass jut out curvaceously whatever pose $he's in.
 		<<elseif $activeSlave.buttImplant > 2>>
-			$He has <<if $activeSlave.buttImplantType == 1>>engorged string<<else>>fillable butt<</if>> implants, and it shows. Whatever $his position, $his ass looks just as artificially enticing.
+			$He has <<if $activeSlave.buttImplantType == "string">>engorged string<<elseif $activeSlave.buttImplantType == "normal">>butt<<else>>fillable butt<</if>> implants, and it shows. Whatever $his position, $his ass looks just as artificially enticing.
 		<<elseif $activeSlave.buttImplant > 7>>
-			$He has oversized <<if $activeSlave.buttImplantType == 1>>engorged string<<else>>fillable butt<</if>> implants, and it is completely obvious. Whatever $his position, $his ass looks like someone shoved a pair of overinflated beachballs in $his buttcheeks.
+			$He has oversized <<if $activeSlave.buttImplantType == "string">>engorged string<<elseif $activeSlave.buttImplantType == "normal">>silicone butt<<else>>fillable butt<</if>> implants, and it is completely obvious. Whatever $his position, $his ass looks like someone shoved a pair of overinflated beachballs in $his buttcheeks.
 		<<elseif $activeSlave.buttImplant > 12>>
-			$He has oversized <<if $activeSlave.buttImplantType == 1>>engorged string<<else>>fillable butt<</if>> implants, and it is completely obvious. Whatever $his position, $his ass looks like someone shoved a pair of ready to burst weather balloons in $his buttcheeks.
+			$He has oversized <<if $activeSlave.buttImplantType == "string">>engorged string<<else>>fillable butt<</if>> implants, and it is completely obvious. Whatever $his position, $his ass looks like someone shoved a pair of ready to burst weather balloons in $his buttcheeks.
 		<<elseif $activeSlave.buttImplant > 17>>
-			$He has oversized <<if $activeSlave.buttImplantType == 1>>engorged string<<else>>fillable butt<</if>> implants, and it is completely obvious. Whatever $his position, $his immense ass dominates $his surroundings with its unyielding mass.
+			$He has oversized <<if $activeSlave.buttImplantType == "string">>engorged string<<else>>fillable butt<</if>> implants, and it is completely obvious. Whatever $his position, $his immense ass dominates $his surroundings with its unyielding mass.
 		<</if>>
 	<</if>>
 	<<if $arcologies[0].FSTransformationFetishist != "unset">>
@@ -17137,6 +17137,8 @@ $His womb contains <<= num(_slaveWD.litters.length)>> separate pregnancies;
 				They're very minimal.
 			<</if>>
 		<</switch>>
+	<<elseif $activeSlave.boobShape == "deflated">>
+		/* WIP */
 	<<elseif ($activeSlave.boobsImplant <= 400)>>
 		<<if ($activeSlave.boobs > 800)>>
 			$He has <<print $activeSlave.boobsImplant>>cc breast implants. $His tits look fairly natural, but defy gravity more than could be expected given their size.
@@ -17163,11 +17165,11 @@ $His womb contains <<= num(_slaveWD.litters.length)>> separate pregnancies;
 		<</if>>
 	<<else>>
 		<<if ($activeSlave.boobs > 2000)>>
-			$He has <<print $activeSlave.boobsImplant>>cc <<if $activeSlave.boobsImplantType == 1>>engorged string<<else>>fillable breast<</if>> implants, which is obvious from the unnatural size of $his boobs.
+			$He has <<print $activeSlave.boobsImplant>>cc <<if $activeSlave.boobsImplantType == "string">>engorged string<<else>>fillable breast<</if>> implants, which is obvious from the unnatural size of $his boobs.
 		<<elseif $activeSlave.boobs - $activeSlave.boobsImplant > 800>>
-			$He has <<print $activeSlave.boobsImplant>>cc <<if $activeSlave.boobsImplantType == 1>>engorged string<<else>>fillable breast<</if>> implants, which is obvious from the roundness of $his fake tits.
+			$He has <<print $activeSlave.boobsImplant>>cc <<if $activeSlave.boobsImplantType == "string">>engorged string<<else>>fillable breast<</if>> implants, which is obvious from the roundness of $his fake tits.
 		<<else>>
-			$He has <<print $activeSlave.boobsImplant>>cc <<if $activeSlave.boobsImplantType == 1>>engorged string<<else>>fillable breast<</if>> implants. They are extremely obvious; with little natural breast tissue to support them, they look like a pair of balloons attached to $his chest.
+			$He has <<print $activeSlave.boobsImplant>>cc <<if $activeSlave.boobsImplantType == "string">>engorged string<<else>>fillable breast<</if>> implants. They are extremely obvious; with little natural breast tissue to support them, they look like a pair of balloons attached to $his chest.
 		<</if>>
 		<<if $arcologies[0].FSTransformationFetishist != "unset">>
 			<<if $activeSlave.boobsImplant > 0>>