diff --git a/js/002-config/fc-js-init.js b/js/002-config/fc-js-init.js
index 25c52a87a62ced70f885e16e7fedf779bad9c3aa..b2f6656f91a1bfb95e24d6aa2b023b25cdcd3a5e 100644
--- a/js/002-config/fc-js-init.js
+++ b/js/002-config/fc-js-init.js
@@ -50,6 +50,8 @@ App.Neighbor = {};
 App.MainView = {};
 App.Medicine = {};
 App.Medicine.Modification = {};
+App.Medicine.Modification.Brands = {};
+App.Medicine.Modification.Select = {};
 App.Medicine.OrganFarm = {};
 App.Medicine.OrganFarm.Organs = {};
 App.Medicine.Surgery = {};
diff --git a/js/003-data/policiesData.js b/js/003-data/policiesData.js
index 3187767968a592b10205cc55a8bfa4d1c126a5b5..4b56d17639f47ab1305a3d77c958938a5f91dd15 100644
--- a/js/003-data/policiesData.js
+++ b/js/003-data/policiesData.js
@@ -703,6 +703,7 @@ App.Data.Policies.Selection = {
 				},
 				get activatedText() { return `you have set your arcology's standard retirement age for sex slaves at ${V.retirementAge}.`; },
 				onRepeal: function() { V.retirementAge = 45; },
+				requirements: function() { return (V.policies.retirement.physicalAgePolicy === 0); },
 				note: "Set age before implementing"
 			}
 		],
@@ -731,6 +732,7 @@ App.Data.Policies.Selection = {
 					return el;
 				},
 				get activatedText() { return `you have set your arcology's standard retirement age for sex slaves at physically ${V.retirementAge}. This policy completely supplants former age retirement policies.`; },
+				onImplementation:  function() { V.policies.retirement.customAgePolicy = 0; },
 				onRepeal: function() { V.retirementAge = 45; },
 				note: "Set age before implementing"
 			}
diff --git a/js/003-data/slaveMods.js b/js/003-data/slaveMods.js
new file mode 100644
index 0000000000000000000000000000000000000000..1d660eb8e5b9ab782d5065dc817eb4935257eddc
--- /dev/null
+++ b/js/003-data/slaveMods.js
@@ -0,0 +1,194 @@
+/**
+ * @typedef {object} BrandStyle
+ * @property {string} displayName The way the brand is dispayed as a choice in the UI
+ * @property {function(void):boolean} [requirements] Function to determine if a brand symbol can be used.
+ */
+/**
+ * @typedef {object<string, BrandStyle[]>} BrandStyleList
+ * How the brand is saved in the variable.
+ */
+
+/** @type {object<string, BrandStyleList>} */
+App.Medicine.Modification.Brands = {
+	personal: {
+		"your personal symbol": {displayName: "Your slaving emblem"},
+		"your initials": {displayName: "Your initials"},
+	},
+	dirtyWord: {
+		"SLUT": {displayName: "SLUT"},
+		"WHORE": {displayName: "WHORE"},
+		"SLAVE": {displayName: "SLAVE"},
+		"COW": {displayName: "COW"},
+		"MEAT": {displayName: "MEAT"},
+		"CUMDUMP": {displayName: "CUMDUMP"},
+		"LOVER": {displayName: "LOVER"},
+	},
+	genitalSymbol: {
+		"a pussy symbol": {displayName: "Pussy symbol"},
+		"an anus symbol": {displayName: "Anus symbol"},
+		"a penis symbol": {displayName: "Penis symbol"},
+	},
+	silhouettes: {
+		"Lady": {displayName: "a lady silhouette"},
+		"Princess": {displayName: "a princess silhouette"},
+		"Queen": {displayName: "a queen silhouette"},
+		"Angel": {displayName: "an angel silhouette"},
+		"Devil": {displayName: "a devil silhouette"},
+
+	},
+	FS: {
+		"a racial slur": {
+			displayName: "Racial Slur",
+			requirements: function() {
+				return (
+					(V.arcologies[0].FSSupremacist !== "unset" && slave.race !== V.arcologies[0].FSSupremacistRace) ||
+					(V.arcologies[0].FSSubjugationist !== "unset" && slave.race === V.arcologies[0].FSSubjugationistRace)
+				);
+			}
+		},
+		"how much sex $he needs per day": {
+			displayName: "Scores",
+			requirements: function() {
+				return (V.arcologies[0].FSIntellectualDependency !== "unset");
+			}
+		},
+		"$his average slave aptitude test scores": {
+			displayName: "Scores",
+			requirements: function() {
+				return (V.arcologies[0].FSSlaveProfessionalism !== "unset");
+			}
+		},
+		"the number of children $he has birthed": {
+			displayName: "Birth Count",
+			requirements: function() {
+				return (V.arcologies[0].FSRepopulationFocus !== "unset");
+			}
+		},
+		"a gender symbol": {
+			displayName: "Gender Symbol",
+			requirements: function() {
+				return ((V.arcologies[0].FSGenderRadicalist !== "unset") || (V.arcologies[0].FSGenderFundamentalist !== "unset"));
+			}
+		},
+		"$his own personal symbol": {
+			displayName: "Personal Symbol",
+			requirements: function() {
+				return (V.arcologies[0].FSPaternalist !== "unset");
+			}
+		},
+		"a chain symbol": {
+			displayName: "Chain Symbol",
+			requirements: function() {
+				return (V.arcologies[0].FSDegradationist !== "unset");
+			}
+		},
+		"a Vitruvian man": {
+			displayName: "Vitruvian Man",
+			requirements: function() {
+				return (V.arcologies[0].FSBodyPurist !== "unset");
+			}
+		},
+		"a scalpel": {
+			displayName: "Scalpel",
+			requirements: function() {
+				return (V.arcologies[0].FSTransformationFetishist !== "unset");
+			}
+		},
+		"$his virginity status": {
+			displayName: "Virginity Status",
+			requirements: function() {
+				return (V.arcologies[0].FSYouthPreferentialist !== "unset");
+			}
+		},
+		"$his sexual skills": {
+			displayName: "Sexual Skill Info",
+			requirements: function() {
+				return (V.arcologies[0].FSMaturityPreferentialist !== "unset");
+			}
+		},
+		"$his current height": {
+			displayName: "Current height",
+			requirements: function() {
+				return ((V.arcologies[0].FSPetiteAdmiration !== "unset") || (V.arcologies[0].FSStatuesqueGlorification !== "unset"));
+			}
+		},
+		"$his absolute minimum breast size": {
+			displayName: "Breast Floor",
+			requirements: function() {
+				return (V.arcologies[0].FSSlimnessEnthusiast !== "unset");
+			}
+		},
+		"$his absolute maximum breast size": {
+			displayName: "Breast Ceiling",
+			requirements: function() {
+				return (V.arcologies[0].FSAssetExpansionist !== "unset");
+			}
+		},
+		"$his highest weigh-in": {
+			displayName: "Weight Record",
+			requirements: function() {
+				return (V.arcologies[0].FSHedonisticDecadence !== "unset");
+			}
+		},
+		"a big helping of your favorite food": {
+			displayName: "Favorite Food",
+			requirements: function() {
+				return ((V.arcologies[0].FSHedonisticDecadence !== "unset") && V.PC.refreshmentType === 2);
+			}
+		},
+		"$his body product quality": {
+			displayName: "Product Quality",
+			requirements: function() {
+				return (V.arcologies[0].FSPastoralist !== "unset");
+			}
+		},
+		"$his deadlift record": {
+			displayName: "Deadlift Info",
+			requirements: function() {
+				return (V.arcologies[0].FSPhysicalIdealist !== "unset");
+			}
+		},
+		"a religious symbol": {
+			displayName: "Religious Symbol",
+			requirements: function() {
+				return (V.arcologies[0].FSChattelReligionist !== "unset");
+			}
+		},
+		"the crest of your Republic": {
+			displayName: "Republican Crest",
+			requirements: function() {
+				return (V.arcologies[0].FSRomanRevivalist !== "unset");
+			}
+		},
+		"the symbol of the Aztec gods": {
+			displayName: "Seven Serpents",
+			requirements: function() {
+				return (V.arcologies[0].FSAztecRevivalist !== "unset");
+			}
+		},
+		"the sigil of your Dynasty": {
+			displayName: "Dynastic Sigil",
+			requirements: function() {
+				return (V.arcologies[0].FSEgyptianRevivalist !== "unset");
+			}
+		},
+		"the Shogunate's mon": {
+			displayName: "Mon",
+			requirements: function() {
+				return (V.arcologies[0].FSEdoRevivalist !== "unset");
+			}
+		},
+		"a symbol of the Caliphate": {
+			displayName: "Caliphate Symbol",
+			requirements: function() {
+				return (V.arcologies[0].FSArabianRevivalist !== "unset");
+			}
+		},
+		"your Imperial Seal": {
+			displayName: "Imperial Seal",
+			requirements: function() {
+				return (V.arcologies[0].FSChineseRevivalist !== "unset");
+			}
+		},
+	}
+};
diff --git a/src/cheats/mod_EditChildCheatNew.tw b/src/cheats/mod_EditChildCheatNew.tw
index 29a8e4cecf83ac920c0eae2941360e6944ee521d..14046e6b0891397407af860262099846c7b8eb26 100644
--- a/src/cheats/mod_EditChildCheatNew.tw
+++ b/src/cheats/mod_EditChildCheatNew.tw
@@ -2756,136 +2756,11 @@
 <</widget>>
 
 <<widget BrandTab>>
-	<br>
-	''Branding: ''<<link "[No Branding]">><<set $tempSlave.brand =0>><<set $tempSlave.brandLocation = 0>><</link>>
-	<br>
-	<<if $tempSlave.brand == 0>>
-		''$He has no Branding''
-	<<else>>
-		''@@.yellow;$He has $tempSlave.brand branded onto $his <<if $tempSlave.brandLocation == 0>>@@.red;[NEEDS TO BE SET]<<else>> $tempSlave.brandLocation <</if>>@@''
-	<</if>>
-	<br><br>
-	''Branding Location:''
-	<br>
-	<<radiobutton "$tempSlave.brandLocation" "neck">> Neck
-	<<radiobutton "$tempSlave.brandLocation" "chest">> Chest
-	<<radiobutton "$tempSlave.brandLocation" "pubic mound">> Pubic mound
-	<<radiobutton "$tempSlave.brandLocation" "back">> On the back
-	<br>
-	''Ears:''
-	<<radiobutton "$tempSlave.brandLocation" "left ear">> Left ear
-	<<radiobutton "$tempSlave.brandLocation" "right ear">> Right ear
-	<<radiobutton "$tempSlave.brandLocation" "ears">> Both ears
-	<br>
-	''Cheeks:''
-	<<radiobutton "$tempSlave.brandLocation" "left cheek">> Left cheek
-	<<radiobutton "$tempSlave.brandLocation" "right cheek">> Right cheek
-	<<radiobutton "$tempSlave.brandLocation" "cheeks">> Both cheeks
-	<br>
-	''Shoulders:''
-	<<radiobutton "$tempSlave.brandLocation" "left shoulder">> Left shoulder
-	<<radiobutton "$tempSlave.brandLocation" "right shoulder">> Right shoulder
-	<<radiobutton "$tempSlave.brandLocation" "shoulders">> Both shoulders
-	<br>
-	''Breasts:''
-	<<radiobutton "$tempSlave.brandLocation" "left shoulder">> Left shoulder
-	<<radiobutton "$tempSlave.brandLocation" "right shoulder">> Right shoulder
-	<<radiobutton "$tempSlave.brandLocation" "shoulders">> Both shoulders
-	<br>
-	''Upper Arms:''
-	<<radiobutton "$tempSlave.brandLocation" "left upper arm">> Left upper arm
-	<<radiobutton "$tempSlave.brandLocation" "right upper arm">> Right upper arm
-	<<radiobutton "$tempSlave.brandLocation" "upper arms">> Both upper arms
-	<br>
-	''Lower Arms:''
-	<<radiobutton "$tempSlave.brandLocation" "left lower arm">> Left lower arm
-	<<radiobutton "$tempSlave.brandLocation" "right lower arm">> Right lower arm
-	<<radiobutton "$tempSlave.brandLocation" "lower arms">> Both lower arms
-	<br>
-	''Wrist:''
-	<<radiobutton "$tempSlave.brandLocation" "left wrist">> Left wrist
-	<<radiobutton "$tempSlave.brandLocation" "right wrist">> Right wrist
-	<<radiobutton "$tempSlave.brandLocation" "wrists">> Both wrists
-	<br>
-	''Hand:''
-	<<radiobutton "$tempSlave.brandLocation" "left hand">> Left hand
-	<<radiobutton "$tempSlave.brandLocation" "right hand">> Right hand
-	<<radiobutton "$tempSlave.brandLocation" "hands">> Both hands
-	<br>
-	''Buttocks:''
-	<<radiobutton "$tempSlave.brandLocation" "left buttock">> Left buttock
-	<<radiobutton "$tempSlave.brandLocation" "right buttock">> Right buttock
-	<<radiobutton "$tempSlave.brandLocation" "buttocks">> Both buttocks
-	<br>
-	''Thighs:''
-	<<radiobutton "$tempSlave.brandLocation" "left thigh">> Left thigh
-	<<radiobutton "$tempSlave.brandLocation" "right thigh">> Right thigh
-	<<radiobutton "$tempSlave.brandLocation" "thighs">> Both thighs
-	<br>
-	''Calves:''
-	<<radiobutton "$tempSlave.brandLocation" "left calf">> Left calf
-	<<radiobutton "$tempSlave.brandLocation" "right calf">> Right calf
-	<<radiobutton "$tempSlave.brandLocation" "calves">> Both calves
-	<br>
-	''Ankles:''
-	<<radiobutton "$tempSlave.brandLocation" "left ankle">> Left ankle
-	<<radiobutton "$tempSlave.brandLocation" "right ankle">> Right ankle
-	<<radiobutton "$tempSlave.brandLocation" "ankles">> Both ankles
-	<br>
-	''Feet:''
-	<<radiobutton "$tempSlave.brandLocation" "left foot">> Left foot
-	<<radiobutton "$tempSlave.brandLocation" "right foot">> Right foot
-	<<radiobutton "$tempSlave.brandLocation" "feet">> Both feet
-	<br><br>
-	''Brand Design:''
-	<br>
-	<<link "[your personal symbol]">><<set $tempSlave.brand = "your personal symbol">><</link>><<print " | ">>
-	<<link "[SLUT]">><<set $tempSlave.brand = "SLUT">><</link>><<print " | ">>
-	<<link "[WHORE]">><<set $tempSlave.brand = "WHORE">><</link>><<print " | ">>
-	<<link "[SLAVE]">><<set $tempSlave.brand = "SLAVE">><</link>><<print " | ">>
-	<<link "[COW]">><<set $tempSlave.brand = "COW">><</link>>
-	<br>
-	<<link "[MEAT]">><<set $tempSlave.brand = "MEAT">><</link>><<print " | ">>
-	<<link "[CUMDUMP]">><<set $tempSlave.brand = "CUMDUMP">><</link>><<print " | ">>
-	<<link "[LOVER]">><<set $tempSlave.brand = "LOVER">><</link>><<print " | ">>
-	<<link "[a pussy symbol]">><<set $tempSlave.brand = "a pussy symbol">><</link>><<print " | ">>
-	<<link "[an anus symbol]">><<set $tempSlave.brand = "an anus symbol">><</link>>
-	<br>
-	<<link "[a penis symbol]">><<set $tempSlave.brand = "a penis symbol">><</link>><<print " | ">>
-	<<link "[a lady silhouette]">><<set $tempSlave.brand = "a lady silhouette">><</link>><<print " | ">>
-	<<link "[a princess silhouette]">><<set $tempSlave.brand = "a princess silhouette">><</link>><<print " | ">>
-	<<link "[a queen silhouette]">><<set $tempSlave.brand = "a queen silhouette">><</link>><<print " | ">>
-	<<link "[an angel silhouette]">><<set $tempSlave.brand = "an angel silhouette">><</link>>
-	<br>
-	<<link "[a devil silhouette]">><<set $tempSlave.brand = "a devil silhouette">><</link>><<print " | ">>
-	<<link "[a racial slur]">><<set $tempSlave.brand = "a racial slur">><</link>><<print " | ">>
-	<<link "[the number of children $he has birthed]">><<set $tempSlave.brand = "the number of children $he has birthed">><</link>><<print " | ">>
-	<<link "[a gender symbol]">><<set $tempSlave.brand = "a gender symbol">><</link>><<print " | ">>
-	<<link "[$his own personal symbol]">><<set $tempSlave.brand = "$his own personal symbol">><</link>><<print " | ">>
-	<br>
-	<<link "[a chain symbol]">><<set $tempSlave.brand = "a chain symbol">><</link>><<print " | ">>
-	<<link "[a Vitruvian man]">><<set $tempSlave.brand = "a Vitruvian man">><</link>><<print " | ">>
-	<<link "[a scalpel]">><<set $tempSlave.brand = "a scalpel">><</link>><<print " | ">>
-	<<link "[$his virginity status]">><<set $tempSlave.brand = "$his virginity status">><</link>><<print " | ">>
-	<<link "[$his sexual skills]">><<set $tempSlave.brand = "$his sexual skills">><</link>>
-	<br>
-	<<link "[$his absolute minimum breast size]">><<set $tempSlave.brand = "$his absolute minimum breast size">><</link>><<print " | ">>
-	<<link "[$his absolute maximum breast size]">><<set $tempSlave.brand = "$his absolute maximum breast size">><</link>><<print " | ">>
-	<<link "[$his highest weigh-in]">><<set $tempSlave.brand = "$his highest weigh-in">><</link>><<print " | ">>
-	<<link "[a big helping of your personal refreshment]">><<set $tempSlave.brand = "a big helping of "+$PC.refreshment >><</link>><<print " | ">>
-	<<link "[$his body product quality]">><<set $tempSlave.brand = "$his body product quality">><</link>>
-	<br>
-	<<link "[$his deadlift record]">><<set $tempSlave.brand = "$his deadlift record">><</link>><<print " | ">>
-	<<link "[a religious symbol]">><<set $tempSlave.brand = "a religious symbol">><</link>><<print " | ">>
-	<<link "[the crest of your Republic]">><<set $tempSlave.brand = "the crest of your Republic">><</link>><<print " | ">>
-	<<link "[the symbol of the Aztec gods]">><<set $tempSlave.brand = "the symbol of the Aztec gods">><</link>><<print " | ">>
-	<<link "[the sigil of your Dynasty]">><<set $tempSlave.brand = "the sigil of your Dynasty">><</link>>
-	<br>
-	<<link "[the Shogunate's mon]">><<set $tempSlave.brand = "the Shogunate's mon">><</link>><<print " | ">>
-	<<link "[a symbol of the Caliphate]">><<set $tempSlave.brand = "a symbol of the Caliphate">><</link>><<print " | ">>
-	<<link "[your Imperial Seal]">><<set $tempSlave.brand = "your Imperial Seal">><</link>>
-	<br>''Custom brand design:'' <<textbox "$tempSlave.brand" $tempSlave.brand>>
-	<br>
+	''Branding:''
+	<p id="brandSelection"></p>
+	<script>
+		App.Medicine.Modification.Select.brand(V.tempSlave, true)
+	</script>
 <</widget>>
 
 <<widget PiercTab>>
diff --git a/src/cheats/mod_EditInfantCheatNew.tw b/src/cheats/mod_EditInfantCheatNew.tw
index 0aaa53a152f25499f340577504e2362f84e90f94..7010d35de063ede6e334695a1ffd343a3acf3863 100644
--- a/src/cheats/mod_EditInfantCheatNew.tw
+++ b/src/cheats/mod_EditInfantCheatNew.tw
@@ -2758,136 +2758,11 @@
 <</widget>>
 
 <<widget BrandTab>>
-	<br>
-	''Branding: ''<<link "[No Branding]">><<set $tempSlave.brand =0>><<set $tempSlave.brandLocation = 0>><</link>>
-	<br>
-	<<if $tempSlave.brand == 0>>
-		''$He has no Branding''
-	<<else>>
-		''@@.yellow;$He has $tempSlave.brand branded onto $his <<if $tempSlave.brandLocation == 0>>@@.red;[NEEDS TO BE SET]<<else>> $tempSlave.brandLocation <</if>>@@''
-	<</if>>
-	<br><br>
-	''Branding Location:''
-	<br>
-	<<radiobutton "$tempSlave.brandLocation" "neck">> Neck
-	<<radiobutton "$tempSlave.brandLocation" "chest">> Chest
-	<<radiobutton "$tempSlave.brandLocation" "pubic mound">> Pubic mound
-	<<radiobutton "$tempSlave.brandLocation" "back">> On the back
-	<br>
-	''Ears:''
-	<<radiobutton "$tempSlave.brandLocation" "left ear">> Left ear
-	<<radiobutton "$tempSlave.brandLocation" "right ear">> Right ear
-	<<radiobutton "$tempSlave.brandLocation" "ears">> Both ears
-	<br>
-	''Cheeks:''
-	<<radiobutton "$tempSlave.brandLocation" "left cheek">> Left cheek
-	<<radiobutton "$tempSlave.brandLocation" "right cheek">> Right cheek
-	<<radiobutton "$tempSlave.brandLocation" "cheeks">> Both cheeks
-	<br>
-	''Shoulders:''
-	<<radiobutton "$tempSlave.brandLocation" "left shoulder">> Left shoulder
-	<<radiobutton "$tempSlave.brandLocation" "right shoulder">> Right shoulder
-	<<radiobutton "$tempSlave.brandLocation" "shoulders">> Both shoulders
-	<br>
-	''Breasts:''
-	<<radiobutton "$tempSlave.brandLocation" "left shoulder">> Left shoulder
-	<<radiobutton "$tempSlave.brandLocation" "right shoulder">> Right shoulder
-	<<radiobutton "$tempSlave.brandLocation" "shoulders">> Both shoulders
-	<br>
-	''Upper Arms:''
-	<<radiobutton "$tempSlave.brandLocation" "left upper arm">> Left upper arm
-	<<radiobutton "$tempSlave.brandLocation" "right upper arm">> Right upper arm
-	<<radiobutton "$tempSlave.brandLocation" "upper arms">> Both upper arms
-	<br>
-	''Lower Arms:''
-	<<radiobutton "$tempSlave.brandLocation" "left lower arm">> Left lower arm
-	<<radiobutton "$tempSlave.brandLocation" "right lower arm">> Right lower arm
-	<<radiobutton "$tempSlave.brandLocation" "lower arms">> Both lower arms
-	<br>
-	''Wrist:''
-	<<radiobutton "$tempSlave.brandLocation" "left wrist">> Left wrist
-	<<radiobutton "$tempSlave.brandLocation" "right wrist">> Right wrist
-	<<radiobutton "$tempSlave.brandLocation" "wrists">> Both wrists
-	<br>
-	''Hand:''
-	<<radiobutton "$tempSlave.brandLocation" "left hand">> Left hand
-	<<radiobutton "$tempSlave.brandLocation" "right hand">> Right hand
-	<<radiobutton "$tempSlave.brandLocation" "hands">> Both hands
-	<br>
-	''Buttocks:''
-	<<radiobutton "$tempSlave.brandLocation" "left buttock">> Left buttock
-	<<radiobutton "$tempSlave.brandLocation" "right buttock">> Right buttock
-	<<radiobutton "$tempSlave.brandLocation" "buttocks">> Both buttocks
-	<br>
-	''Thighs:''
-	<<radiobutton "$tempSlave.brandLocation" "left thigh">> Left thigh
-	<<radiobutton "$tempSlave.brandLocation" "right thigh">> Right thigh
-	<<radiobutton "$tempSlave.brandLocation" "thighs">> Both thighs
-	<br>
-	''Calves:''
-	<<radiobutton "$tempSlave.brandLocation" "left calf">> Left calf
-	<<radiobutton "$tempSlave.brandLocation" "right calf">> Right calf
-	<<radiobutton "$tempSlave.brandLocation" "calves">> Both calves
-	<br>
-	''Ankles:''
-	<<radiobutton "$tempSlave.brandLocation" "left ankle">> Left ankle
-	<<radiobutton "$tempSlave.brandLocation" "right ankle">> Right ankle
-	<<radiobutton "$tempSlave.brandLocation" "ankles">> Both ankles
-	<br>
-	''Feet:''
-	<<radiobutton "$tempSlave.brandLocation" "left foot">> Left foot
-	<<radiobutton "$tempSlave.brandLocation" "right foot">> Right foot
-	<<radiobutton "$tempSlave.brandLocation" "feet">> Both feet
-	<br><br>
-	''Brand Design:''
-	<br>
-	<<link "[your personal symbol]">><<set $tempSlave.brand = "your personal symbol">><</link>><<print " | ">>
-	<<link "[SLUT]">><<set $tempSlave.brand = "SLUT">><</link>><<print " | ">>
-	<<link "[WHORE]">><<set $tempSlave.brand = "WHORE">><</link>><<print " | ">>
-	<<link "[SLAVE]">><<set $tempSlave.brand = "SLAVE">><</link>><<print " | ">>
-	<<link "[COW]">><<set $tempSlave.brand = "COW">><</link>>
-	<br>
-	<<link "[MEAT]">><<set $tempSlave.brand = "MEAT">><</link>><<print " | ">>
-	<<link "[CUMDUMP]">><<set $tempSlave.brand = "CUMDUMP">><</link>><<print " | ">>
-	<<link "[LOVER]">><<set $tempSlave.brand = "LOVER">><</link>><<print " | ">>
-	<<link "[a pussy symbol]">><<set $tempSlave.brand = "a pussy symbol">><</link>><<print " | ">>
-	<<link "[an anus symbol]">><<set $tempSlave.brand = "an anus symbol">><</link>>
-	<br>
-	<<link "[a penis symbol]">><<set $tempSlave.brand = "a penis symbol">><</link>><<print " | ">>
-	<<link "[a lady silhouette]">><<set $tempSlave.brand = "a lady silhouette">><</link>><<print " | ">>
-	<<link "[a princess silhouette]">><<set $tempSlave.brand = "a princess silhouette">><</link>><<print " | ">>
-	<<link "[a queen silhouette]">><<set $tempSlave.brand = "a queen silhouette">><</link>><<print " | ">>
-	<<link "[an angel silhouette]">><<set $tempSlave.brand = "an angel silhouette">><</link>>
-	<br>
-	<<link "[a devil silhouette]">><<set $tempSlave.brand = "a devil silhouette">><</link>><<print " | ">>
-	<<link "[a racial slur]">><<set $tempSlave.brand = "a racial slur">><</link>><<print " | ">>
-	<<link "[the number of children $he has birthed]">><<set $tempSlave.brand = "the number of children "+$he+" has birthed">><</link>><<print " | ">>
-	<<link "[a gender symbol]">><<set $tempSlave.brand = "a gender symbol">><</link>><<print " | ">>
-	<<link "[$his own personal symbol]">><<set $tempSlave.brand = $his+" own personal symbol">><</link>><<print " | ">>
-	<br>
-	<<link "[a chain symbol]">><<set $tempSlave.brand = "a chain symbol">><</link>><<print " | ">>
-	<<link "[a Vitruvian man]">><<set $tempSlave.brand = "a Vitruvian man">><</link>><<print " | ">>
-	<<link "[a scalpel]">><<set $tempSlave.brand = "a scalpel">><</link>><<print " | ">>
-	<<link "[$his virginity status]">><<set $tempSlave.brand = $his+" virginity status">><</link>><<print " | ">>
-	<<link "[$his sexual skills]">><<set $tempSlave.brand = $his+" sexual skills">><</link>>
-	<br>
-	<<link "[$his absolute minimum breast size]">><<set $tempSlave.brand = $his+" absolute minimum breast size">><</link>><<print " | ">>
-	<<link "[$his absolute maximum breast size]">><<set $tempSlave.brand = $his+" absolute maximum breast size">><</link>><<print " | ">>
-	<<link "[$his highest weigh-in]">><<set $tempSlave.brand = $his+" highest weigh-in">><</link>><<print " | ">>
-	<<link "[a big helping of your personal refreshment]">><<set $tempSlave.brand = "a big helping of "+$PC.refreshment >><</link>><<print " | ">>
-	<<link "[$his body product quality]">><<set $tempSlave.brand = $his+" body product quality">><</link>>
-	<br>
-	<<link "[$his deadlift record]">><<set $tempSlave.brand = $his+" deadlift record">><</link>><<print " | ">>
-	<<link "[a religious symbol]">><<set $tempSlave.brand = "a religious symbol">><</link>><<print " | ">>
-	<<link "[the crest of your Republic]">><<set $tempSlave.brand = "the crest of your Republic">><</link>><<print " | ">>
-	<<link "[the symbol of the Aztec gods]">><<set $tempSlave.brand = "the symbol of the Aztec gods">><</link>><<print " | ">>
-	<<link "[the sigil of your Dynasty]">><<set $tempSlave.brand = "the sigil of your Dynasty">><</link>>
-	<br>
-	<<link "[the Shogunate's mon]">><<set $tempSlave.brand = "the Shogunate's mon">><</link>><<print " | ">>
-	<<link "[a symbol of the Caliphate]">><<set $tempSlave.brand = "a symbol of the Caliphate">><</link>><<print " | ">>
-	<<link "[your Imperial Seal]">><<set $tempSlave.brand = "your Imperial Seal">><</link>>
-	<br>''Custom brand design:'' <<textbox "$tempSlave.brand" $tempSlave.brand>>
-	<br>
+	''Branding:''
+	<p id="brandSelection"></p>
+	<script>
+		App.Medicine.Modification.Select.brand(V.tempSlave, true)
+	</script>
 <</widget>>
 
 <<widget PiercTab>>
diff --git a/src/cheats/mod_editSlaveCheatNew.tw b/src/cheats/mod_editSlaveCheatNew.tw
index b4ad3c40a2f1c88592c997eb0e77ba61725fed0c..c3a3e1dad083ce6b810f230635604e4c332b29b3 100644
--- a/src/cheats/mod_editSlaveCheatNew.tw
+++ b/src/cheats/mod_editSlaveCheatNew.tw
@@ -4269,136 +4269,11 @@
 <</widget>>
 
 <<widget BrandTab>>
-	<br>
-	''Branding: ''<<link "[No Branding]">><<set $tempSlave.brand =0>><<set $tempSlave.brandLocation = 0>><</link>>
-	<br>
-	<<if $tempSlave.brand == 0>>
-		''$He has no Branding''
-	<<else>>
-		''@@.yellow;$He has $tempSlave.brand branded onto $his <<if $tempSlave.brandLocation == 0>>@@.red;[NEEDS TO BE SET]<<else>> $tempSlave.brandLocation <</if>>@@''
-	<</if>>
-	<br><br>
-	''Branding Location:''
-	<br>
-	<<radiobutton "$tempSlave.brandLocation" "neck">> Neck
-	<<radiobutton "$tempSlave.brandLocation" "chest">> Chest
-	<<radiobutton "$tempSlave.brandLocation" "pubic mound">> Pubic mound
-	<<radiobutton "$tempSlave.brandLocation" "back">> On the back
-	<br>
-	''Ears:''
-	<<radiobutton "$tempSlave.brandLocation" "left ear">> Left ear
-	<<radiobutton "$tempSlave.brandLocation" "right ear">> Right ear
-	<<radiobutton "$tempSlave.brandLocation" "ears">> Both ears
-	<br>
-	''Cheeks:''
-	<<radiobutton "$tempSlave.brandLocation" "left cheek">> Left cheek
-	<<radiobutton "$tempSlave.brandLocation" "right cheek">> Right cheek
-	<<radiobutton "$tempSlave.brandLocation" "cheeks">> Both cheeks
-	<br>
-	''Shoulders:''
-	<<radiobutton "$tempSlave.brandLocation" "left shoulder">> Left shoulder
-	<<radiobutton "$tempSlave.brandLocation" "right shoulder">> Right shoulder
-	<<radiobutton "$tempSlave.brandLocation" "shoulders">> Both shoulders
-	<br>
-	''Breasts:''
-	<<radiobutton "$tempSlave.brandLocation" "left shoulder">> Left shoulder
-	<<radiobutton "$tempSlave.brandLocation" "right shoulder">> Right shoulder
-	<<radiobutton "$tempSlave.brandLocation" "shoulders">> Both shoulders
-	<br>
-	''Upper Arms:''
-	<<radiobutton "$tempSlave.brandLocation" "left upper arm">> Left upper arm
-	<<radiobutton "$tempSlave.brandLocation" "right upper arm">> Right upper arm
-	<<radiobutton "$tempSlave.brandLocation" "upper arms">> Both upper arms
-	<br>
-	''Lower Arms:''
-	<<radiobutton "$tempSlave.brandLocation" "left lower arm">> Left lower arm
-	<<radiobutton "$tempSlave.brandLocation" "right lower arm">> Right lower arm
-	<<radiobutton "$tempSlave.brandLocation" "lower arms">> Both lower arms
-	<br>
-	''Wrist:''
-	<<radiobutton "$tempSlave.brandLocation" "left wrist">> Left wrist
-	<<radiobutton "$tempSlave.brandLocation" "right wrist">> Right wrist
-	<<radiobutton "$tempSlave.brandLocation" "wrists">> Both wrists
-	<br>
-	''Hand:''
-	<<radiobutton "$tempSlave.brandLocation" "left hand">> Left hand
-	<<radiobutton "$tempSlave.brandLocation" "right hand">> Right hand
-	<<radiobutton "$tempSlave.brandLocation" "hands">> Both hands
-	<br>
-	''Buttocks:''
-	<<radiobutton "$tempSlave.brandLocation" "left buttock">> Left buttock
-	<<radiobutton "$tempSlave.brandLocation" "right buttock">> Right buttock
-	<<radiobutton "$tempSlave.brandLocation" "buttocks">> Both buttocks
-	<br>
-	''Thighs:''
-	<<radiobutton "$tempSlave.brandLocation" "left thigh">> Left thigh
-	<<radiobutton "$tempSlave.brandLocation" "right thigh">> Right thigh
-	<<radiobutton "$tempSlave.brandLocation" "thighs">> Both thighs
-	<br>
-	''Calves:''
-	<<radiobutton "$tempSlave.brandLocation" "left calf">> Left calf
-	<<radiobutton "$tempSlave.brandLocation" "right calf">> Right calf
-	<<radiobutton "$tempSlave.brandLocation" "calves">> Both calves
-	<br>
-	''Ankles:''
-	<<radiobutton "$tempSlave.brandLocation" "left ankle">> Left ankle
-	<<radiobutton "$tempSlave.brandLocation" "right ankle">> Right ankle
-	<<radiobutton "$tempSlave.brandLocation" "ankles">> Both ankles
-	<br>
-	''Feet:''
-	<<radiobutton "$tempSlave.brandLocation" "left foot">> Left foot
-	<<radiobutton "$tempSlave.brandLocation" "right foot">> Right foot
-	<<radiobutton "$tempSlave.brandLocation" "feet">> Both feet
-	<br><br>
-	''Brand Design:''
-	<br>
-	<<link "[your personal symbol]">><<set $tempSlave.brand = "your personal symbol">><</link>><<print " | ">>
-	<<link "[SLUT]">><<set $tempSlave.brand = "SLUT">><</link>><<print " | ">>
-	<<link "[WHORE]">><<set $tempSlave.brand = "WHORE">><</link>><<print " | ">>
-	<<link "[SLAVE]">><<set $tempSlave.brand = "SLAVE">><</link>><<print " | ">>
-	<<link "[COW]">><<set $tempSlave.brand = "COW">><</link>>
-	<br>
-	<<link "[MEAT]">><<set $tempSlave.brand = "MEAT">><</link>><<print " | ">>
-	<<link "[CUMDUMP]">><<set $tempSlave.brand = "CUMDUMP">><</link>><<print " | ">>
-	<<link "[LOVER]">><<set $tempSlave.brand = "LOVER">><</link>><<print " | ">>
-	<<link "[a pussy symbol]">><<set $tempSlave.brand = "a pussy symbol">><</link>><<print " | ">>
-	<<link "[an anus symbol]">><<set $tempSlave.brand = "an anus symbol">><</link>>
-	<br>
-	<<link "[a penis symbol]">><<set $tempSlave.brand = "a penis symbol">><</link>><<print " | ">>
-	<<link "[a lady silhouette]">><<set $tempSlave.brand = "a lady silhouette">><</link>><<print " | ">>
-	<<link "[a princess silhouette]">><<set $tempSlave.brand = "a princess silhouette">><</link>><<print " | ">>
-	<<link "[a queen silhouette]">><<set $tempSlave.brand = "a queen silhouette">><</link>><<print " | ">>
-	<<link "[an angel silhouette]">><<set $tempSlave.brand = "an angel silhouette">><</link>>
-	<br>
-	<<link "[a devil silhouette]">><<set $tempSlave.brand = "a devil silhouette">><</link>><<print " | ">>
-	<<link "[a racial slur]">><<set $tempSlave.brand = "a racial slur">><</link>><<print " | ">>
-	<<link "[the number of children $he has birthed]">><<set $tempSlave.brand = "the number of children $he has birthed">><</link>><<print " | ">>
-	<<link "[a gender symbol]">><<set $tempSlave.brand = "a gender symbol">><</link>><<print " | ">>
-	<<link "[$his own personal symbol]">><<set $tempSlave.brand = "$his own personal symbol">><</link>><<print " | ">>
-	<br>
-	<<link "[a chain symbol]">><<set $tempSlave.brand = "a chain symbol">><</link>><<print " | ">>
-	<<link "[a Vitruvian man]">><<set $tempSlave.brand = "a Vitruvian man">><</link>><<print " | ">>
-	<<link "[a scalpel]">><<set $tempSlave.brand = "a scalpel">><</link>><<print " | ">>
-	<<link "[$his virginity status]">><<set $tempSlave.brand = "$his virginity status">><</link>><<print " | ">>
-	<<link "[$his sexual skills]">><<set $tempSlave.brand = "$his sexual skills">><</link>>
-	<br>
-	<<link "[$his absolute minimum breast size]">><<set $tempSlave.brand = "$his absolute minimum breast size">><</link>><<print " | ">>
-	<<link "[$his absolute maximum breast size]">><<set $tempSlave.brand = "$his absolute maximum breast size">><</link>><<print " | ">>
-	<<link "[$his highest weigh-in]">><<set $tempSlave.brand = "$his highest weigh-in">><</link>><<print " | ">>
-	<<link "[a big helping of your personal refreshment]">><<set $tempSlave.brand = "a big helping of "+$PC.refreshment >><</link>><<print " | ">>
-	<<link "[$his body product quality]">><<set $tempSlave.brand = "$his body product quality">><</link>>
-	<br>
-	<<link "[$his deadlift record]">><<set $tempSlave.brand = "$his deadlift record">><</link>><<print " | ">>
-	<<link "[a religious symbol]">><<set $tempSlave.brand = "a religious symbol">><</link>><<print " | ">>
-	<<link "[the crest of your Republic]">><<set $tempSlave.brand = "the crest of your Republic">><</link>><<print " | ">>
-	<<link "[the symbol of the Aztec gods]">><<set $tempSlave.brand = "the symbol of the Aztec gods">><</link>><<print " | ">>
-	<<link "[the sigil of your Dynasty]">><<set $tempSlave.brand = "the sigil of your Dynasty">><</link>>
-	<br>
-	<<link "[the Shogunate's mon]">><<set $tempSlave.brand = "the Shogunate's mon">><</link>><<print " | ">>
-	<<link "[a symbol of the Caliphate]">><<set $tempSlave.brand = "a symbol of the Caliphate">><</link>><<print " | ">>
-	<<link "[your Imperial Seal]">><<set $tempSlave.brand = "your Imperial Seal">><</link>>
-	<br>''Custom brand design:'' <<textbox "$tempSlave.brand" $tempSlave.brand>>
-	<br>
+	''Branding:''
+	<p id="brandSelection"></p>
+	<script>
+		App.Medicine.Modification.Select.brand(V.tempSlave, true)
+	</script>
 <</widget>>
 
 <<widget PiercTab>>
diff --git a/src/pregmod/managePersonalAffairs.tw b/src/pregmod/managePersonalAffairs.tw
index 8a212bc09f387e17146aa93caeb98c42edb38c21..5fc4806a07030f7e6969af334d9e8cdabbd76497 100644
--- a/src/pregmod/managePersonalAffairs.tw
+++ b/src/pregmod/managePersonalAffairs.tw
@@ -72,7 +72,7 @@
 		<<if $PC.origHColor != "crimson">>| [[Crimson|Manage Personal Affairs][$PC.hColor = "crimson"]]<</if>>
 		<<if $PC.origHColor != "dark blue">>| [[Dark Blue|Manage Personal Affairs][$PC.hColor = "dark blue"]]<</if>>
 		<<if $PC.origHColor != "dark brown">>| [[Dark Brown|Manage Personal Affairs][$PC.hColor = "dark brown"]]<</if>>
-		<<if $PC.origHColor != "dark orchid">>| [[Blue-Violet|Manage Personal Affairs][$PC.hColor = "dark orchid"]]<</if>>
+		<<if $PC.origHColor != "dark orchid">>| [[Dark Orchid|Manage Personal Affairs][$PC.hColor = "dark orchid"]]<</if>>
 		<<if $PC.origHColor != "ginger">>| [[Ginger|Manage Personal Affairs][$PC.hColor = "ginger"]]<</if>>
 		<<if $PC.origHColor != "golden">>| [[Golden|Manage Personal Affairs][$PC.hColor = "golden"]]<</if>>
 		<<if $PC.origHColor != "green">>| [[Green|Manage Personal Affairs][$PC.hColor = "green"]]<</if>>
diff --git a/src/uncategorized/bodyModification.js b/src/uncategorized/bodyModification.js
new file mode 100644
index 0000000000000000000000000000000000000000..2e136955d81e23e6027b79dc30db8aa8ba143586
--- /dev/null
+++ b/src/uncategorized/bodyModification.js
@@ -0,0 +1,351 @@
+App.Medicine.Modification.Select.brand = function(slave, cheat = false) {
+	const el = new DocumentFragment();
+	let p = document.createElement('p');
+	let div = document.createElement('div');
+	const {his, His, him, He} = getPronouns(slave);
+
+	p.classList.add("indent");
+	for (const brandPlace in slave.brand) {
+		div = document.createElement('div');
+		div.append(`${His} ${brandPlace} is marked with ${slave.brand[brandPlace]}`);
+		if (slave.brand[brandPlace] === V.brandDesign.official) {
+			div.append(`, your `);
+			div.append(App.UI.DOM.passageLink("official brand", "Universal Rules"));
+		}
+		div.append(": ");
+		if (!cheat) {
+			div.append(
+				App.UI.DOM.link(
+					"Remove Brand",
+					() => {
+						V.brandApplied = 0;
+						delete slave.brand[brandPlace];
+						cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave);
+						V.degradation -= 10;
+					},
+					[],
+					"Body Modification"
+				)
+			);
+		} else {
+			div.append(
+				App.UI.DOM.link(
+					"Remove Brand",
+					() => {
+						delete slave.brand[brandPlace];
+						App.Medicine.Modification.Select.brand(slave, cheat); // Refresh display
+					},
+				)
+			);
+		}
+		p.append(div);
+	}
+
+	if (jQuery.isEmptyObject(slave.brand)) {
+		App.UI.DOM.appendNewElement("div", p, `${His} skin is unmarked.`);
+	}
+
+	if (!(Object.values(slave.brand).includes(V.brandDesign.official))) {
+		div = document.createElement('div');
+		div.append(`${He} lacks your `);
+		div.append(App.UI.DOM.passageLink("official brand", "Universal Rules"));
+		div.append(`, "${V.brandDesign.official}."`);
+		p.append(div);
+	}
+
+	el.append(p);
+	p = document.createElement('p');
+	p.classList.add("indent");
+
+
+	div = document.createElement('div');
+	div.append(`Use ''${V.brandDesign.local}'' or choose another brand: `);
+	div.append(symbolOptions("personal"));
+	p.append(div);
+
+	p.append(symbolBlock("dirtyWord"));
+	p.append(symbolBlock("genitalSymbol"));
+	p.append(symbolBlock("silhouettes"));
+	p.append(symbolBlock("FS"));
+
+	div = document.createElement('div');
+	div.classList.add("indent");
+	div.append(`Or design your own: `);
+	div.append(
+		App.UI.DOM.makeTextBox(
+			V.brandDesign.local,
+			v => {
+				V.brandDesign.local = v;
+				App.Medicine.Modification.Select.brand(slave, cheat); // Refresh display
+			},
+		)
+	);
+	p.append(div);
+	el.append(p);
+
+	p = document.createElement('p');
+	p.classList.add("indent");
+	App.UI.DOM.appendNewElement("div", p, "Choose a site for branding: ");
+	const body = slaveBody();
+	p.append(partLinks(body.head));
+	p.append(partLinks(body.torso));
+	p.append(partLinks(body.arms));
+	p.append(partLinks(body.legs));
+
+	div = document.createElement('div');
+	div.classList.add("indent");
+	div.append(`Or a custom site:  `);
+	div.append(
+		App.UI.DOM.makeTextBox(
+			V.brandTarget.local,
+			v => {
+				V.brandTarget.local = v;
+				App.Medicine.Modification.Select.brand(slave, cheat); // Refresh display
+			},
+		)
+	);
+	p.append(div);
+	el.append(p);
+
+	p = document.createElement('p');
+	p.classList.add("indent");
+
+	if (["ankle", "breast", "buttock", "calf", "cheek", "ear", "foot", "hand", "lower arm", "shoulder", "testicle", "thigh", "upper arm", "wrist"].includes(V.brandTarget.local)) {
+		const leftTarget = ("left " + V.brandTarget.local);
+		const rightTarget = ("right " + V.brandTarget.local);
+		if (slave.brand[leftTarget]) {
+			p.append(`${His} ${leftTarget} is already marked with ${slave.brand[leftTarget]}. `);
+		}
+		if (slave.brand[rightTarget]) {
+			p.append(`${His} ${rightTarget} is already marked with ${slave.brand[rightTarget]}. `);
+		}
+		p.append(`Brand ${him} now with ''${V.brandDesign.local}'' on the `); // todo: break out bold
+		let _left;
+		let _right;
+		if (
+			!(["upper arm", "lower arm", "wrist", "hand"].includes(V.brandTarget.local) && getLeftArmID(slave) !== 1) &&
+			!(["thigh", "calf", "ankle", "foot"].includes(V.brandTarget.local) && getLeftLegID(slave) !== 1)
+		) {
+			_left = 1;// make next checks easier
+			if (!cheat) {
+				p.append(
+					App.UI.DOM.link(
+						"left",
+						() => {
+							V.brandApplied = 1;
+							slave.brand[leftTarget] = check(V.brandDesign.local);
+							cashX(forceNeg(V.modCost), "slaveMod", slave);
+							V.degradation += 10;
+						},
+						[],
+						"Body Modification"
+					)
+				);
+			} else {
+				p.append(
+					App.UI.DOM.link(
+						"left",
+						() => {
+							slave.brand[leftTarget] = check(V.brandDesign.local);
+						},
+					)
+				);
+			}
+
+			if (!(["upper arm", "lower arm", "wrist", "hand"].includes(V.brandTarget.local) && getRightArmID(slave) !== 1) && !(["thigh", "calf", "ankle", "foot"].includes(V.brandTarget.local) && getRightLegID(slave) !== 1)) {
+				_right = 1; // make next checks easier
+			}
+			if (_left && _right) {
+				p.append(` ${V.brandTarget.local}, or the `);
+			}
+			if (_right) {
+				if (!cheat) {
+					p.append(
+						App.UI.DOM.link(
+							"right",
+							() => {
+								V.brandApplied = 1;
+								slave.brand[rightTarget] = check(V.brandDesign.local);
+								cashX(forceNeg(V.modCost), "slaveMod", slave);
+								V.degradation += 10;
+							},
+							[],
+							"Body Modification"
+						)
+					);
+				} else {
+					p.append(
+						App.UI.DOM.link(
+							"right",
+							() => {
+								slave.brand[rightTarget] = check(V.brandDesign.local);
+							},
+						)
+					);
+				}
+			}
+			p.append(`? `);
+			if (!_left || !_right) {
+				p.append(` ${V.brandTarget.local}`);
+				App.UI.DOM.appendNewElement("span", "p", `Branding will slightly reduce ${his} beauty but may slowly increase your reputation.`, "note");
+			}
+		}
+	} else {
+		if (slave.brand[V.brandTarget.local] === V.brandDesign.local) {
+			p.append(`${He} already has ${V.brandDesign.local} on ${his} V.brandTarget.local.`);
+		} else {
+			if (!cheat) {
+				p.append(
+					App.UI.DOM.link(
+						"Brand",
+						() => {
+							V.brandApplied = 1;
+							slave.brand[V.brandTarget.local] = V.brandDesign.local;
+							cashX(forceNeg(V.modCost), "slaveMod", slave);
+							V.degradation += 10;
+						},
+						[],
+						"Body Modification"
+					)
+				);
+			} else {
+				p.append(
+					App.UI.DOM.link(
+						"Brand",
+						() => {
+							slave.brand[V.brandTarget.local] = V.brandDesign.local;
+						},
+					)
+				);
+			}
+			p.append(` with ${V.brandDesign.local} on the ${V.brandTarget.local}`);
+			if (slave.brand[V.brandTarget.local]) {
+				p.append(`, covering the "${slave.brand[V.brandTarget.local]}" that is already there? `);
+			} else {
+				p.append(`. `);
+			}
+			App.UI.DOM.appendNewElement("span", p, `Branding will slightly reduce ${his} beauty but may slowly increase your reputation.`, "note");
+		}
+	}
+	el.append(p);
+	return jQuery('#brandSelection').empty().append(el);
+
+	function symbolBlock(brandList) {
+		const div = document.createElement('div');
+		div.classList.add("double-choices");
+		div.style.textIndent = 0;
+		div.append(symbolOptions(brandList));
+		return div;
+	}
+
+	function symbolOptions(brandList) {
+		const frag = new DocumentFragment();
+		const list = App.Medicine.Modification.Brands[brandList];
+		let length = Object.keys(list).length;
+		for (const brand in list) {
+			if (!cheat && list[brand].hasOwnProperty("requirements")) {
+				if (!list[brand].requirements()) {
+					continue;
+				}
+			}
+			if (brandList === "FS") {
+				App.UI.DOM.appendNewElement("span", frag, "FS ", "note");
+			}
+			frag.append(
+				App.UI.DOM.link(
+					list[brand].displayName,
+					() => {
+						V.brandDesign.local = check(brand);
+						App.Medicine.Modification.Select.brand(slave, cheat); // Refresh display
+					}
+				)
+			);
+			length--;
+			if (length > 0) {
+				frag.append(" | ");
+			}
+		}
+		return frag;
+	}
+
+	function slaveBody() {
+		const body = {};
+		// Sorted head to toe
+		// Head
+		body.head = {};
+		if (slave.earShape !== "none") {
+			body.head.ears = "Ears";
+		}
+		body.head.cheek = "Cheeks";
+		body.head.neck = "Neck";
+
+		// Torso
+		body.torso = {};
+		body.torso.chest = "Chest";
+		body.torso.breast = "Breasts";
+		body.torso.back = "Back";
+		body.torso["lower back"] = "Lower Back";
+		body.torso.belly = "Belly";
+		body.torso["pubic mound"] = "Pubic Mound";
+
+		if (slave.dick > 0) {
+			body.torso.penis = "Penis";
+		}
+		if (slave.balls > 0 && slave.scrotum > 0) {
+			body.torso.testicle = "Testicles";
+		}
+
+		// Arms
+		body.arms = {};
+		body.arms.shoulder = "Shoulders";
+		if (hasAnyNaturalArms(slave)) {
+			body.arms["upper arm"] = "Arm, upper";
+			body.arms["lower arm"] = "Arm, lower";
+			body.arms.wrist = "Wrists";
+			body.arms.hand = "Hands";
+		}
+
+		// Legs
+		body.legs = {};
+		body.legs.buttock = "Buttocks";
+		if (hasAnyNaturalLegs(slave)) {
+			body.legs.thigh = "Thighs";
+			body.legs.calf = "Calves";
+			body.legs.ankle = "Ankles";
+			body.legs.foot = "Feet";
+		}
+		return body;
+	}
+
+	function partLinks(bodyPartObj) {
+		const div = document.createElement("div");
+		div.classList.add("double-choices");
+		div.style.textIndent = 0;
+		let length = Object.keys(bodyPartObj).length;
+		for (const bp in bodyPartObj) {
+			div.append(
+				App.UI.DOM.link(
+					bodyPartObj[bp],
+					() => {
+						V.brandTarget.local = check(bp);
+						App.Medicine.Modification.Select.brand(slave, cheat); // Refresh display
+					}
+				)
+			);
+			length--;
+			if (length > 0) {
+				div.append(" | ");
+			}
+		}
+		return div;
+	}
+
+	function check(brand) {
+		switch(brand) {
+			case "a big helping of your favorite food":
+				return 	"a big helping of " + V.PC.refreshment;
+			default:
+				return brand;
+		}
+	}
+};
diff --git a/src/uncategorized/bodyModification.tw b/src/uncategorized/bodyModification.tw
index fb09203737d4e2de441237532a86a4058adca0f3..244162c389f61bccfb6ca392f6c8631d21e369d3 100644
--- a/src/uncategorized/bodyModification.tw
+++ b/src/uncategorized/bodyModification.tw
@@ -649,256 +649,18 @@
 /* Branding */
 
 <h2>Branding</h2>
-<div class="indent">
-<div style="padding-bottom:1em">
-<<for _brandName, _brand range getSlave($AS).brand>>
-	<div>
-	$His _brandName is marked with _brand<<if _brand == $brandDesign.official>>, your [[official brand|Universal Rules]]<</if>>:
-	<<capture _brandName>>
-		<<link "Remove Brand">>
-			<<set $brandApplied = 0>>
-			<<run delete getSlave($AS).brand[_brandName]>>
-			<<run cashX(forceNeg($surgeryCost), "slaveSurgery", getSlave($AS))>>
-			<<set $degradation -= 10>>
-			<<goto "Body Modification">>
-		<</link>>
-	<</capture>>
-	</div>
-<</for>>
-<<if (jQuery.isEmptyObject(getSlave($AS).brand))>>
-	<div>
-	$His skin is unmarked.
-	</div>
-<</if>>
-
-<<if !(Object.values(getSlave($AS).brand).includes($brandDesign.official))>>
-	<div>
-	$He lacks your [[official brand|Universal Rules]], "$brandDesign.official."
-	</div>
-<</if>>
-</div>
-
-<div>
-Use ''$brandDesign.local'' or choose another brand:
-[[Your slaving emblem|Body Modification][$brandDesign.local = "your personal symbol"]]
-| [[Your initials|Body Modification][$brandDesign.local = "your initials"]]
-</div>
-<div class="double-indent">
-<div>
-[[SLUT|Body Modification][$brandDesign.local = "SLUT"]]
-| [[WHORE|Body Modification][$brandDesign.local = "WHORE"]]
-| [[SLAVE|Body Modification][$brandDesign.local = "SLAVE"]]
-| [[COW|Body Modification][$brandDesign.local = "COW"]]
-| [[MEAT|Body Modification][$brandDesign.local = "MEAT"]]
-| [[CUMDUMP|Body Modification][$brandDesign.local = "CUMDUMP"]]
-| [[LOVER|Body Modification][$brandDesign.local = "LOVER"]]
-</div>
-<div>
-[[Pussy symbol|Body Modification][$brandDesign.local = "a pussy symbol"]]
-| [[Anus symbol|Body Modification][$brandDesign.local = "an anus symbol"]]
-| [[Penis symbol|Body Modification][$brandDesign.local = "a penis symbol"]]
-</div>
-<div>
-[[Lady|Body Modification][$brandDesign.local = "a lady silhouette"]]
-| [[Princess|Body Modification][$brandDesign.local = "a princess silhouette"]]
-| [[Queen|Body Modification][$brandDesign.local = "a queen silhouette"]]
-| [[Angel|Body Modification][$brandDesign.local = "an angel silhouette"]]
-| [[Devil|Body Modification][$brandDesign.local = "a devil silhouette"]]
-<<if ($arcologies[0].FSSupremacist != "unset") && (getSlave($AS).race != $arcologies[0].FSSupremacistRace)>>
-	| //FS// [[Racial Slur|Body Modification][$brandDesign.local = "a racial slur"]]
-<</if>>
-<<if ($arcologies[0].FSSubjugationist != "unset") && (getSlave($AS).race == $arcologies[0].FSSubjugationistRace)>>
-	| //FS// [[Racial Slur|Body Modification][$brandDesign.local = "a racial slur"]]
-<</if>>
-<<if ($arcologies[0].FSIntellectualDependency != "unset")>>
-	| //FS// [[Scores|Body Modification][$brandDesign.local = "how much sex $he needs per day"]]
-<</if>>
-<<if ($arcologies[0].FSSlaveProfessionalism != "unset")>>
-	| //FS// [[Scores|Body Modification][$brandDesign.local = "$his average slave aptitude test scores"]]
-<</if>>
-<<if ($arcologies[0].FSRepopulationFocus != "unset")>>
-	| //FS// [[Birth Count|Body Modification][$brandDesign.local = "the number of children $he has birthed"]]
-<</if>>
-<<if ($arcologies[0].FSGenderRadicalist != "unset") || ($arcologies[0].FSGenderFundamentalist != "unset")>>
-	| //FS// [[Gender Symbol|Body Modification][$brandDesign.local = "a gender symbol"]]
-<</if>>
-<<if ($arcologies[0].FSPaternalist != "unset")>>
-	| //FS// [[Personal Symbol|Body Modification][$brandDesign.local = "$his own personal symbol"]]
-<</if>>
-<<if ($arcologies[0].FSDegradationist != "unset")>>
-	| //FS// [[Chain Symbol|Body Modification][$brandDesign.local = "a chain symbol"]]
-<</if>>
-<<if ($arcologies[0].FSBodyPurist != "unset")>>
-	| //FS// [[Vitruvian Man|Body Modification][$brandDesign.local = "a Vitruvian man"]]
-<</if>>
-<<if ($arcologies[0].FSTransformationFetishist != "unset")>>
-	| //FS// [[Scalpel|Body Modification][$brandDesign.local = "a scalpel"]]
-<</if>>
-<<if ($arcologies[0].FSYouthPreferentialist != "unset")>>
-	| //FS// [[Virginity Status|Body Modification][$brandDesign.local = "$his virginity status"]]
-<</if>>
-<<if ($arcologies[0].FSMaturityPreferentialist != "unset")>>
-	| //FS// [[Sexual Skill Info|Body Modification][$brandDesign.local = "$his sexual skills"]]
-<</if>>
-<<if ($arcologies[0].FSPetiteAdmiration != "unset") || ($arcologies[0].FSStatuesqueGlorification != "unset")>>
-	| //FS// [[Current height|Body Modification][$brandDesign.local = "$his current height"]]
-<</if>>
-<<if ($arcologies[0].FSSlimnessEnthusiast != "unset")>>
-	| //FS// [[Breast Floor|Body Modification][$brandDesign.local = "$his absolute minimum breast size"]]
-<</if>>
-<<if ($arcologies[0].FSAssetExpansionist != "unset")>>
-	| //FS// [[Breast Ceiling|Body Modification][$brandDesign.local = "$his absolute maximum breast size"]]
-<</if>>
-<<if ($arcologies[0].FSHedonisticDecadence != "unset")>>
-	| //FS// [[Weight Record|Body Modification][$brandDesign.local = "$his highest weigh-in"]]
-<</if>>
-<<if ($arcologies[0].FSHedonisticDecadence != "unset") && $PC.refreshmentType == 2>>
-	| //FS// [[Favorite Food|Body Modification][$brandDesign.local = "a big helping of "+$PC.refreshment]]
-<</if>>
-<<if ($arcologies[0].FSPastoralist != "unset")>>
-	| //FS// [[Product Quality|Body Modification][$brandDesign.local = "$his body product quality"]]
-<</if>>
-<<if ($arcologies[0].FSPhysicalIdealist != "unset")>>
-	| //FS// [[Deadlift Info|Body Modification][$brandDesign.local = "$his deadlift record"]]
-<</if>>
-<<if ($arcologies[0].FSChattelReligionist != "unset")>>
-	| //FS// [[Religious Symbol|Body Modification][$brandDesign.local = "a religious symbol"]]
-<</if>>
-<<if ($arcologies[0].FSRomanRevivalist != "unset")>>
-	| //FS// [[Republican Crest|Body Modification][$brandDesign.local = "the crest of your Republic"]]
-<</if>>
-<<if ($arcologies[0].FSAztecRevivalist != "unset")>>
-	| //FS// [[Seven Serpents|Body Modification][$brandDesign.local = "the symbol of the Aztec gods"]]
-<</if>>
-<<if ($arcologies[0].FSEgyptianRevivalist != "unset")>>
-	| //FS// [[Dynastic Sigil|Body Modification][$brandDesign.local = "the sigil of your Dynasty"]]
-<</if>>
-<<if ($arcologies[0].FSEdoRevivalist != "unset")>>
-	| //FS// [[Mon|Body Modification][$brandDesign.local = "the Shogunate's mon"]]
-<</if>>
-<<if ($arcologies[0].FSArabianRevivalist != "unset")>>
-	| //FS// [[Caliphate Symbol|Body Modification][$brandDesign.local = "a symbol of the Caliphate"]]
-<</if>>
-<<if ($arcologies[0].FSChineseRevivalist != "unset")>>
-	| //FS// [[Imperial Seal|Body Modification][$brandDesign.local = "your Imperial Seal"]]
-<</if>>
-</div>
-</div> /* double indent */
-
-<div>
-Or design your own: <<textbox "$brandDesign.local" $brandDesign.local "Body Modification">>
-</div>
-
-<div>
-Choose a site for branding:
-/* Sorted head to toe */
-/* Head */
-<<if getSlave($AS).earShape != "none">>[[Ears|Body Modification][$brandTarget.local = "ear"]]<</if>>
-| [[Cheeks|Body Modification][$brandTarget.local = "cheek"]]
-| [[Neck|Body Modification][$brandTarget.local = "neck"]]
-
-/* Torso */
-| [[Chest|Body Modification][$brandTarget.local = "chest"]]
-| [[Breasts|Body Modification][$brandTarget.local = "breast"]]
-| [[Back|Body Modification][$brandTarget.local = "back"]]
-| [[Lower Back|Body Modification][$brandTarget.local = "lower back"]]
-| [[Belly|Body Modification][$brandTarget.local = "belly"]]
-| [[Pubic Mound|Body Modification][$brandTarget.local = "pubic mound"]]
-<<if getSlave($AS).dick > 0>>
-	| [[Penis|Body Modification][$brandTarget.local = "penis"]]
-<</if>>
-<<if getSlave($AS).balls > 0 && getSlave($AS).scrotum > 0>>
-	| [[Testicles|Body Modification][$brandTarget.local = "testicle"]]
-<</if>>
-
-/* Arms*/
-| [[Shoulders|Body Modification][$brandTarget.local = "shoulder"]]
-<<if hasAnyNaturalArms(getSlave($AS))>>
-	| [[Arm, upper|Body Modification][$brandTarget.local = "upper arm"]]
-	| [[Arm, lower|Body Modification][$brandTarget.local = "lower arm"]]
-	| [[Wrists|Body Modification][$brandTarget.local = "wrist"]]
-	| [[Hands|Body Modification][$brandTarget.local = "hand"]]
-<</if>>
-
-/* Legs */
-| [[Buttocks|Body Modification][$brandTarget.local = "buttock"]]
-<<if hasAnyNaturalLegs(getSlave($AS))>>
-	| [[Thighs|Body Modification][$brandTarget.local = "thigh"]]
-	| [[Calves|Body Modification][$brandTarget.local = "calf"]]
-	| [[Ankles|Body Modification][$brandTarget.local = "ankle"]]
-	| [[Feet|Body Modification][$brandTarget.local = "foot"]]
-<</if>>
-</div>
-
-/* Branding expansion contributed by Anon1888 */
+<span id="brandSelection"></span>
+<script>
+	App.Medicine.Modification.Select.brand(getSlave(V.AS))
+</script>
 
-<div>
-Or a custom site: <<textbox "$brandTarget.local" $brandTarget.local "Body Modification">>
-</div>
-
-<div>
-<<if ["ankle", "breast", "buttock", "calf", "cheek", "ear", "foot", "hand", "lower arm", "shoulder", "testicle", "thigh", "upper arm", "wrist"].includes($brandTarget.local)>>
-	<<set _leftTarget = ("left " + $brandTarget.local)>>
-	<<set _rightTarget = ("right " + $brandTarget.local)>>
-	<<if getSlave($AS).brand[_leftTarget]>>
-		$His _leftTarget is already marked with <<print getSlave($AS).brand[_leftTarget]>>.
-	<</if>>
-	<<if getSlave($AS).brand[_rightTarget]>>
-		$His _rightTarget is already marked with <<print getSlave($AS).brand[_rightTarget]>>.
-	<</if>>
-	Brand $him now with ''$brandDesign.local'' on the
-
-	<<if !(["upper arm", "lower arm", "wrist", "hand"].includes($brandTarget.local) && getLeftArmID(getSlave($AS)) !== 1) && !(["thigh", "calf", "ankle", "foot"].includes($brandTarget.local) && getLeftLegID(getSlave($AS)) !== 1)>>
-		<<set _left = 1>> /* make next checks easier */
-		<<link "left">>
-			<<set $brandApplied = 1>>
-			<<set getSlave($AS).brand[_leftTarget] = $brandDesign.local>>
-			<<run cashX(forceNeg($modCost), "slaveMod", getSlave($AS))>>
-			<<set $degradation += 10>>
-			<<goto "Body Modification">>
-		<</link>>
-	<</if>>
-	<<if !(["upper arm", "lower arm", "wrist", "hand"].includes($brandTarget.local) && getRightArmID(getSlave($AS)) !== 1) && !(["thigh", "calf", "ankle", "foot"].includes($brandTarget.local) && getRightLegID(getSlave($AS)) !== 1)>>
-		<<set _right = 1>> /* make next checks easier */
-	<</if>>
-	<<if _left && _right>>
-		$brandTarget.local, or the
-	<</if>>
-	<<if _right>>
-		<<link "right">>
-			<<set $brandApplied = 1>>
-			<<set getSlave($AS).brand[_rightTarget] = $brandDesign.local>>
-			<<run cashX(forceNeg($modCost), "slaveMod", getSlave($AS))>>
-			<<set $degradation += 10>>
-			<<goto "Body Modification">>
-		<</link>>
-	<</if>><<if !_left || !_right>> $brandTarget.local<</if>>?
-
-	//Branding will slightly reduce $his beauty but may slowly increase your reputation.//
-<<else>>
-	<<if getSlave($AS).brand[$brandTarget.local] === $brandDesign.local>>
-		$He already has $brandDesign.local on $his $brandTarget.local.
-	<<else>>
-		<<link "Brand">>
-			<<set $brandApplied = 1>>
-			<<set getSlave($AS).brand[$brandTarget.local] = $brandDesign.local>>
-			<<run cashX(forceNeg($modCost), "slaveMod", getSlave($AS))>>
-			<<set $degradation += 10>>
-			<<goto "Body Modification">>
-		<</link>>
-		with $brandDesign.local on the $brandTarget.local<<if getSlave($AS).brand[$brandTarget.local]>>, covering the "<<print getSlave($AS).brand[$brandTarget.local]>>" that is already there?<<else>>.<</if>> //Branding will slightly reduce $his beauty but may slowly increase your reputation.//
-	<</if>>
-<</if>>
-</div>
 
 <<if getSlave($AS).breedingMark == 1 && ($propOutcome == 0 || $eugenicsFullControl == 1 || $arcologies[0].FSRestart == "unset")>>
-	<div>
+	<div class="indent">
 	$He has an intricate tattoo on $his lower belly that suggests $he was made to be bred. [[Remove it|Body Modification][getSlave($AS).breedingMark = 0]]
 	</div>
 <</if>>
 
-</div> /* indent */
-
 /* Scars */
 
 <h2>Scars</h2>