diff --git a/src/js/rulesAssistantOptions.tw b/src/js/rulesAssistantOptions.tw
index e281da3f6dca4663df4858b9be772264aeb5fdb6..8f2a40553fc98c81853283c169437d6047445f92 100644
--- a/src/js/rulesAssistantOptions.tw
+++ b/src/js/rulesAssistantOptions.tw
@@ -133,7 +133,9 @@ window.rulesAssistantOptions = (function() {
 				surgery_butt: "no default setting",
 				surgery_faceShape: "no default setting",
 				surgery_lips: "no default setting",
-				surgery_holes: "not default setting",
+				surgery_holes: "no default setting",
+				surgery_hair: "no default setting",
+				surgery_bodyhair: "no default setting",
 				underArmHColor: "no default setting",
 				underArmHStyle: "no default setting",
 				drug: "no default setting",
@@ -931,1375 +933,1387 @@ window.rulesAssistantOptions = (function() {
 			this.appendChild(new UpperBackTattooList())
 			this.appendChild(new LowerBackTattooList())
 			this.appendChild(new AbdomenTattooList())
-			this.appendChild(new DickTattooList())
+			if (V.seeDicks || V.makeDicks)
+				this.appendChild(new DickTattooList())
 			this.appendChild(new ButtockTattooList())
 			this.appendChild(new AnalTattooList())
 			this.appendChild(new LegTattooList())
 		}
 	}
 
-	class SurgerySection extends Element {
+	class AutoSurgerySection extends Element {
 		constructor() {
 			super()
-		}
-	}
-
-	class ClothesList extends List {
-		constructor() {
-			const items = [
-				["Select her own outfit", "choosing her own clothes"]
-			]
-			super("Clothes", items)
-
-			const nclothes = [
-				["No default clothes setting", "no default setting"],
-				["Bangles", "slutty jewelry"],
-				["Bodysuit", "a comfortable bodysuit"],
-				["Cheerleader outfit", "a cheerleader outfit"],
-				["Clubslut netting", "clubslut netting"],
-				["Cutoffs and a t-shirt", "cutoffs and a t-shirt"],
-				["Fallen nun", "a fallen nuns habit"],
-				["Halter top", "a halter top dress"],
-				["Hijab and abaya", "a hijab and abaya"],
-				["Latex catsuit", "a latex catsuit"],
-				["Leotard", "a leotard"],
-				["Maid (nice)", "a nice maid outfit"],
-				["Maid (slutty)", "a slutty maid outfit"],
-				["Military uniform", "a military uniform"],
-				["Mini dress", "a mini dress"],
-				["Nice lingerie", "attractive lingerie"],
-				["Nurse (nice)", "a nice nurse outfit"],
-				["Schoolgirl", "a schoolgirl outfit"],
-				["Silken ballgown", "a ball gown"],
-				["Skimpy battledress", "battledress"],
-				["Slave gown", "a slave gown"],
-				["Slutty outfit", "a slutty outfit"],
-				["String bikini", "a stirng bikini"],
-				["Scalemail bikini", "a scalemail bikini"],
-				["Succubus costume", "a succubus outfit"],
-				["Suit (nice)", "nice business sattire"],
-				["Suit (slutty", "slutty business attire"],
-				["Spats and tank top", "spats and a tank top"]
-			]
-			const fsnclothes = [
-				["Body oil (FS)", "body oil"],
-				["Bunny outfit (FS)", "a bunny outfit"],
-				["Chattel habit (FS)", "a chattel habit"],
-				["Conservative clothing (FS)", "conservative clothing"],
-				["Harem gauze (FS)", "harem gauze"],
-				["Huipil (FS)", "a huipil"],
-				["Kimono (FS)", "a kimono"],
-				["Maternity dress (FS)", "a maternity dress"],
-				["Maternity lingerie (FS)", "attractive lingerie for a pregnant woman"],
-				["Slutty qipao (FS)", "a slutty qipao"],
-				["Stretch pants and a crop-top (FS)", "stretch pants and a crop-top"],
-				["Toga (FS)", "a toga"],
-				["Western clothing (FS)", "Western clothing"],
-			]
-			fsnclothes.forEach(pair => { if (isItemAccessible(pair[1])) nclothes.push(pair) })
-			const nice = new ListSubSection("Nice", nclothes)
-			this.appendChild(nice)
-
-			const hclothes = [
-``				["Nude", "no clothing"]
-				["Penitent nun", "a penitent nuns habit"],
-				["Restrictive latex", "restrictive latex"],
-				["Shibari ropes", "shibari ropes"],
-				["Uncomfortable straps", "uncomfortable straps"]
-			]
-			const fshclothes = [
-				["Chains (FS)", "chains"],
-			]
-			fshclothes.forEach(pair => { if (isItemAccessible(pair[1])) hclothes.push(pair) })
-
-			const harsh = new ListSubSection("Harsh", hclothes)
-			this.appendChild(harsh)
-
-			this.setValue(V.currentRule.set.clothes)
-			this.onchange = (data) => V.currentRule.set.clothes = value
-		}
-	}
-
-	class CollarList extends List {
-		constructor() {
-			const items = [
-				["No default collar setting", "no default setting"]
-				["No collar", "none"]
-			]
-			super("Collar", items)
-
-			const ncollars = [
-				["Stylish leather", "stylish leather"],
-				["Satin choker", "satin choker"],
-				["Silken Ribbon", "silk ribbon"],
-				["Heavy Gold", "heavy gold"],
-				["Pretty jewelry", "pretty jewelry"],
-				["Cowbell", "leather with cowbell"]
-			]
-			if (V.seeAge !== 0)
-				ncollars.push(["Nice retirement counter", "nice retirement counter"])
-			const fsncollars = [
-				["Bowtie collar", "bowtie"],
-				["ancient Egyptian", "ancient Egyptian"],
-			]
-			fsncollars.forEach(pair => { if (isItemAccessible(pair[1])) ncollars.push(pair) })
-			const nice = new ListSubSection("Nice", ncollars)
-			this.appendChild(nice)
-
-			const hcollars = [
-				["Tight steel", "tight steel"],
-				["Uncomfortable leather", "uncomfortable leather"],
-				["Pregnancy biometrics", "preg biometrics"],
-				["Shock punishment", "shock punishment"],
-				["Dildo gag", "dildo gag"],
-				["Ball gag", "ball gag"],
-				["Bit gag", "bit gag"],
-				["Neck corset", "neck corset"],
-			]
-			if (V.seeAge !== 0)
-				hcollars.push(["Cruel retirement counter", "cruel retirement counter"])
-			if (V.toysBoughtGags === 1)
-				hcollars.push(["Massive dildo gag", "massive dildo gag"])
-			const harsh = new ListSubSection("Harsh", hcollars)
-			this.appendChild(harsh)
-
-			this.setValue(V.currentRule.set.collar)
-			this.onchange = (value) => V.currentRule.set.collar = value
-		}
-	}
-
-	class ShoeList extends List {
-		constructor() {
-			super("Shoes", setup.shoes)
-			this.setValue(V.currentRule.set.shoes)
-			this.onchange = (value) => V.currentRule.set.shoes = value
-		}
-	}
-
-	class CorsetList extends List {
-		constructor() {
-			const bellies = []
-			setup.bellyAccessories.forEach(acc => {
-				if (acc.fs === undefined && acc.rs === undefined)
-					bellies.push([acc.name, acc.value])
-				else if (acc.fs === "repopulation" && V.arcologies[0].FSRepopulationFocus !== "unset")
-					bellies.push([acc.name + " (FS)", acc.value])
-				else if (acc.rs === "boughtBelly" && V.clothesBoughtBelly === 1)
-					bellies.push([acc.name + " (Purchased)", acc.value])
-			})
-			super("Corsetage", bellies)
-			this.setValue(V.currentRule.set.bellyAccessory)
-			this.onchange = (value) => V.currentRule.set.bellyAccessory
-		}
-	}
-
-	class VagAccVirginsList extends List {
-		constructor() {
-			const accs = []
-			setup.vaginalAccessories.forEach(acc => {
-				if (acc.fs === undefined && acc.rs === undefined)
-					accs.push([acc.name, acc.value])
-				else if (acc.rs === "buyBigDildos" && V.toysBoughtDildos === 1)
-					accs.push([acc.name + " (Purchased)", acc.value])
-			})
-			super("Vaginal accessories for virgins")
-			this.setValue(V.currentRule.set.virginAccessory)
-			this.onchange = (value) => V.currentRule.set.virginAccessory = value
-		}
-	}
-
-	class VagAccAVirginsList extends List {
-		constructor() {
-			const accs = []
-			setup.vaginalAccessories.forEach(acc => {
-				if (acc.fs === undefined && acc.rs === undefined)
-					accs.push([acc.name, acc.value])
-				else if (acc.rs === "buyBigDildos" && V.toysBoughtDildos === 1)
-					accs.push([acc.name + " (Purchased)", acc.value])
-			})
-			super("Vaginal accessories for anal virgins")
-			this.setValue(V.currentRule.set.aVirginAccessory)
-			this.onchange = (value) => V.currentRule.set.aVirginAccessory = value
-		}
-	}
-
-	class VagAccOtherList extends List {
-		constructor() {
-			const accs = []
-			setup.vaginalAccessories.forEach(acc => {
-				if (acc.fs === undefined && acc.rs === undefined)
-					accs.push([acc.name, acc.value])
-				else if (acc.rs === "buyBigDildos" && V.toysBoughtDildos === 1)
-					accs.push([acc.name + " (Purchased)", acc.value])
-			})
-			super("Vaginal accessories for other slaves")
-			this.setValue(V.currentRule.set.vaginalAccessory)
-			this.onchange = (value) => V.currentRule.set.vaginalAccessory = value
-		}
-	}
-
-	class DickAccVirginsList extends List {
-		constructor() {
-			super("Dick accessories for anal virgins", setup.dickAccessories)
-			this.setValue(V.currentRule.set.aVirginDickAccessory)
-			this.onchange = (value) => V.currentRule.set.aVirginDickAccessory = value
-		}
-	}
-
-	class DickAccOtherList extends List {
-		constructor() {
-			super("Dick accessories for other slaves", setup.dickAccessories)
-			this.setValue(V.currentRule.set.dickAccessory)
-			this.onchange = (value) => V.currentRule.set.dickAccessory = value
-		}
-	}
-
-	class ButtplugsVirginsList extends List {
-		constructor() {
-			const accs = []
-			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)
-					accs.push([acc.name + " (Purchased)", acc.value])
-			})
-			super("Buttplugs for anal virgins")
-			this.setValue(V.currentRule.set.aVirginButtplug)
-			this.onchange = (value) => V.currentRule.set.aVirginButtplug = value
-		}
-	}
-
-	class ButtplugsOtherList extends List {
-		constructor() {
-			const accs = []
-			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)
-					accs.push([acc.name + " (Purchased)", acc.value])
-			})
-			super("Buttplugs for other slaves")
-			this.setValue(V.currentRule.set.buttplug)
-			this.onchange = (value) => V.currentRule.set.buttplug = value
-		}
-	}
-
-	class ImplantVolumeList extends List {
-		constructor() {
-			const pairs = [
-				["No changes", -1],
-				["Empty implant", 0],
-				["Early pregnancy", 1500],
-				["Second trimester pregnancy", 5000],
-				["Full-term pregnancy", 15000],
-				["Full-term with twins", 30000],
-				["Full-term with triplets", 45000],
-				["Full-term with quadruplets", 60000],
-				["Full-term with quintuplets", 75000],
-				["Full-term with sextuplets", 90000],
-				["Full-term with septuplets", 105000],
-				["Full-term with octuplets", 120000]
-			]
-			super("Belly implant target volume (if present)")
-			this.setValue(V.currentRule.set.bellyImplantVol)
-			this.onchange = (value) => V.currentRule.set.bellyImplantVol = value
-		}
-	}
-
-	class AutosurgerySwitch extends List {
-		constructor() {
-			const pairs = [
-				["Activate", 1]
-				["Off", 0]
-			]
-			super("Assistant-applied implants (Autosurgery global switch)", pairs)
-			this.setValue(V.currentRule.set.autoSurgery)
-			this.onchange = (value) => V.currentRule.set.autoSurgery = value
-		}
-	}
-
-	class GrowthList extends Options {
-		constructor() {
-			super()
-			this.sublists = []
-			const pairs = [
-				["No default setting", () => this.nds()],
-				["Girlish figure", () => this.girlish()],
-				["Stacked figure", () => this.stacked()],
-				["Huge but functional", () => this.huge()],
-				["Unlimited", () => this.unlimited()],
-				["None", () => this.none()]
-			]
-			pairs.forEach(pair => this.appendChild(new OptionsItem(...pair)))
-
-			this.breasts = new BreastGrowthList()
-			this.butts = new ButtGrowthList()
-			this.lips = new LipGrowthList()
-			this.sublists.push(this.breasts, this.butts, this.lips)
-
-			if (V.seeDicks > 0 || V.makeDicks > 0) {
-				this.dicks = new DickGrowthList()
-				this.balls = new BallGrowthList()
-				this.sublists.push(this.dicks, this.balls)
-			}
-
-			this.sublists.forEach(i => this.appendChild(i))
-		}
-
-		render() {
-			const elem = document.createElement("div")
-			const span = document.createElement("span")
-			span.innerHTML = "Growth hormone regimes for healthy slaves:"
-			elem.appendChild(span)
-			return elem
-		}
-
-		nds() {
-			[this.breasts, this.butts, this.lips, this.dicks, this.balls].forEach(i => {
-				i.setValue("no default change")
-				i.propagateChange()
-			})
-		}
-
-		girlish() {
-			this.breasts.setValue(350)
-			this.butts.setValue(2)
-			this.lips.setValue(25)
-			if (this.dicks) this.dicks.setValue(0)
-			if (this.balls) this.balls.setValue(0)
-			this.sublists.forEach(i => i.propagateChange())
-		}
-
-		stacked() {
-			this.breasts.setValue(1000)
-			this.butts.setValue(4)
-			this.lips.setValue(25)
-			if (this.dicks) this.dicks.setValue(4)
-			if (this.balls) this.balls.setValue(4)
-			this.sublists.forEach(i => i.propagateChange())
-		}
-
-		huge() {
-			this.breasts.setValue(9000)
-			this.butts.setValue(10)
-			this.lips.setValue(45)
-			if (this.dicks) this.dicks.setValue(6)
-			if (this.balls) this.balls.setValue(6)
-			this.sublists.forEach(i => i.propagateChange())
-		}
-
-		unlimited() {
-			this.breasts.setValue(48000)
-			this.butts.setValue(10)
-			this.lips.setValue(100)
-			if (this.dicks) this.dicks.setValue(10)
-			if (this.balls) this.balls.setValue(6)
-			this.sublists.forEach(i => i.propagateChange())
-		}
-
-		none() {
-			this.sublists.forEach(i => {
-				i.setValue(0)
-				i.propagateChange()
-			})
-		}
-	}
-
-	class BreastGrowthList extends List {
-		constructor() {
-			const pairs = [
-				["No default setting", "no default setting"],
-				["B Cup", 350],
-				["D Cup", 1000],
-				["Monstrous", 9000],
-				["Unlimited", 48000],
-				["None", 0]
-			]
-			super("Breasts", pairs, true)
-			this.setValue(V.currentRule.set.growth_boobs)
-			this.onchange = (value) => V.currentRule.set.growth_boobs = value
-		}
-	}
-
-	class ButtGrowthList extends List {
-		constructor() {
-			const pairs = [
-				["No default setting", "no default setting"],
-				["Cute", 2],
-				["Big", 4],
-				["Huge", 6],
-				["Unlimited", 10],
-				["None", 0]
-			]
-			super("Butts", pairs, true)
-			this.setValue(V.currentRule.set.growth_butt)
-			this.onchange = (value) => V.currentRule.set.growth_butt = value
-		}
-	}
-
-	class LipGrowthList extends List {
-		constructor() {
-			const pairs = [
-				["No default setting", "no default setting"],
-				["Plump", 25],
-				["Beestung", 45],
-				["Facepussy", 100],
-				["None", 0]
-			]
-			super("Lips", pairs, true)
-			this.setValue(V.currentRule.set.growth_lips)
-			this.onchange = (value) => V.currentRule.set.growth_lips = value
-		}
-	}
-
-	class DickGrowthList extends List {
-		constructor() {
-			const pairs = [
-				["No default setting", "no default setting"],
-				["Above average", 4],
-				["Pornstar", 6],
-				["Unlimited", 10],
-				["None", 0]
-			]
-			super("Dicks, if present", pairs, true)
-			this.setValue(V.currentRule.set.growth_dick)
-			this.onchange = (value) => V.currentRule.set.growth_dick = value
-		}
-	}
-
-	class BallGrowthList extends List {
-		constructor() {
-			const pairs = [
-				["No default setting", "no default setting"],
-				["Sizeable", 4],
-				["Cumslave", 6],
-				["Unlimited", 10],
-				["None", 0]
-			]
-			super("Balls, if present", pairs, true)
-			this.setValue(V.currentRule.set.growth_balls)
-			this.onchange = (value) => V.currentRule.set.growth_balls = value
-		}
-	}
-
-	class CurrativesList extends List {
-		constructor() {
-			const pairs = [
-				["No default setting", "no default setting"],
-				["None", "none", 0],
-				["Preventatives", "preventatives", 1],
-				["Curatives", "curatives", 2]
-			]
-			super("Health drugs", pairs)
-			this.setValue(V.currentRule.set.curatives)
-			this.onchange = (value) => V.currentRule.set.curatives = value
-		}
-	}
-
-	class AphrodisiacList extends List {
-		constructor() {
-			const pairs = [
-				["No default setting", "no default setting"],
-				["None", "none", 0],
-				["Standard", "standard", 1],
-				["Extreme", "extreme", 2],
-				["Anaphrodisiacs", "anaphrodisiacs", -1]
-			]
-			super("Aphrodisiacs", pairs)
-			this.setValue(V.currentRule.set.aphrodisiacs)
-			this.onchange = (value) => V.currentRule.set.aphrodisiacs = value
-		}
-	}
-
-	class ContraceptiveList extends List {
-		constructor() {
-			const drugs =  [
-				["No default setting", "no default setting"],
-				["Contraceptives", "contraceptives", -1]
-				["Fertile", "fertile", 0],
-				["Very fertile", "very fertile", 1],
-				["Extremely fertile", "extremely fertile", 2],
-			]
-			if (V.seeHyperPreg === 1 && V.superFertilityDrugs === 1) {
-				drugs.push(["Hyper fertile", "hyper fertile", 3])
-				drugs.push(["Maximize fertility", "maximize fertility", 4])
-			}
-			super("Contraceptives for fertile slaves", drugs)
-			this.setValue(V.currentRule.set.preg)
-			this.onchange = (value) => V.currentRule.set.preg = value
-		}
-	}
-
-	class PregDrugsList extends List {
-		constructor() {
-			const pairs = [
-				["No changes", "no changes", "no default setting"],
-				["None", "none"],
-				["Fast gestation", "fast gestation", "fast"],
-				["Slow gestation", "slow gestation", "slow"],
-				["Birth supressors", "birth supressors", "suppress"],
-				["Birth stimulators", "birth stimulators", "stimulate"]
-			]
-			super("Pregnancy control agents for pregnant slaves", pairs)
-			this.setValue(V.currentRule.set.pregSpeed)
-			this.onchange = (value) => V.currentRule.set.pregSpeed = value
-		}
-	}
-
-	class FemaleHormonesList extends List {
-		constructor() {
-			const pairs = [
-				["No default setting", "no default setting"],
-				["Intensive Female", "intensive female", 2],
-				["Female", "female", 1],
-				["None", "none", 0],
-				["Male", "male", -1],
-				["Intensive Male", "intensive male", -2]
-			]
-			super("Hormones for female slaves", pairs)
-			this.setValue(V.currentRule.set.XX)
-			this.onchange = (value) => V.currentRule.set.XX = value
-		}
-	}
-
-	class GeldingHormonesList extends List {
-		constructor() {
-			const pairs = [
-				["No default setting", "no default setting"],
-				["Intensive Female", "intensive female", 2],
-				["Female", "female", 1],
-				["None", "none", 0],
-				["Male", "male", -1],
-				["Intensive Male", "intensive male", -2]
-			]
-			super("Hormones for geldings", pairs)
-			this.setValue(V.currentRule.set.gelding)
-			this.onchange = (value) => V.currentRule.set.gelding = value
-		}
-	}
-
-	class ShemaleHormonesList extends List {
-		constructor() {
-			const pairs = [
-				["No default setting", "no default setting"],
-				["Intensive Female", "intensive female", 2],
-				["Female", "female", 1],
-				["None", "none", 0],
-				["Male", "male", -1],
-				["Intensive Male", "intensive male", -2]
-			]
-			super("Hormones for shemales", pairs)
-			this.setValue(V.currentRule.set.XY)
-			this.onchange = (value) => V.currentRule.set.XY = value
-		}
-	}
-
-	class OtherDrugsList extends List {
-		constructor() {
-			const drugs = []
-			setup.drugs.forEach(drug => {
-				if (drug.fs === undefined && drug.rs === undefined)
-					drugs.push([drug.name, drug.value])
-				else if (drug.rs === "growth" && V.growthStim === 1)
-					drugs.push([drug.name + " (Research)", drug.value])
-				else if (drug.rs === "pubHorm" && V.precociousPuberty === 1 && V.pubertyHormones === 1)
-					drugs.push([drug.name + " (Research)", drug.value])
-				else if (drug.rs === "nosag" && V.purchasedSagBGone === 1)
-					drugs.push([drug.name + " (Product)", drug.value])
-				else if (drug.fs === "slimness" && V.arcologies[0].FSSlimnessEnthusiastResearch === 1)
-					drugs.push([drug.name + " (FS)", drug.value])
-				else if (drug.fs === "youth" && V.arcologies[0].FSYouthPreferentialistResearch === 1)
-					drugs.push([drug.name + " (FS)", drug.value])
-			})
-			super("Other drugs (Will be overriden by hormones and other drugs where applicable)", drugs)
-			this.setValue(V.currentRule.set.drug)
-			this.onchange = (value) => V.currentRule.set.drug = value
-		}
-	}
-
-	class DietList extends List {
-		constructor() {
-			const diets = [
-				["no default setting", "no default setting"],
-				["Fix fat and skinny slaves", "fix fat and skinny slaves", "attractive"],
-				["Curvy", "curvy", 30],
-				["Average", "average", 0],
-				["Thin", "thin", -30]
-			]
-			if (V.feeder === 1) {
-				diets.push(
-					["Feminine", "feminine", "XX"],
-					["Masculine", "masculine", "XY"]
-				)
-				if (V.dietXXY === 1)
-					diets.push(["Futanari", "futanari", "XXY"])
-			}
-			if (V.dietCleanse === 1)
-				diets.push(["Cleansing", "promote health", "cleansing"])
-			if (V.dietFertility === 1)
-				diets.push(["Feritlity", "promote fertility", "fertility"])
-			if (V.cumProDiet === 1)
-				diets.push(["Cum production", "promote cum production", "cum production"])
-			
-			super("Slave diets", diets)
-			this.setValue(V.currentRule.set.diet)
-			this.onchange = (value) => V.currentRule.set.diet = value
-		}
-	}
-
-	class DietGrowthList extends List {
-		constructor() {
-			const pairs = [
-				["On", 1],
-				["Off", 0]
-			]
-			super("Diet support for growth drugs", pairs)
-			this.setValue(V.currentRule.set.dietGrowthSupport)
-			this.onchange = (value) => V.currentRule.set.dietGrowthSupport = value
-		}
-	}
-
-	class DietBaseList extends List {
-		constructor() {
-			// TODO: better data structure?
-			const pairs = [
-				["No default setting", {cum: "no default setting", milk: "no default setting"}],
-				["Normal Diet", {cum: 0, milk: 0}],
-				["Cum Added", {cum: 1, milk: 0}],
-				["Milk Added", {cum: 0, milk: 1}],
-				["Cum & Milk Added", {cum: 1, milk: 1}],
-				["Cum-Based", {cum: 2, milk: 0}]
-				["Milk-Based", {cum: 0, milk: 2}]
-			]
-			super("Diet base", pairs)
-			this.setValue({cum: V.currentRule.set.dietCum, milk: V.currentRule.set.dietMilk})
-			this.onchange = (value) => {
-				V.currentRule.set.dietCum = value.cum
-				V.currentRule.set.dietMilk = value.milk
-			}
-		}
-	}
-
-	class MuscleList extends List {
-		constructor() {
-			const pairs = [
-				["No default setting", "no default setting"],
-				["None", "None", 0],
-				["Toned", "Toned", 20],
-				["Ripped", "Ripped", 50],
-				["Massive", "Massive", 100],
-				["Weak", "Weak", -20]
-			]
-			super("Muscles", pairs, true)
-			this.setValue(V.currentRule.set.muscles)
-			this.onchange = (value) => V.currentRule.set.muscles = value
-		}
-	}
-
-	class BraceList extends List {
-		constructor() {
-			const pairs = [
-				["No default setting", "no default setting"],
-				["None", "none"],
-				["Straighten", "straighten"],
-				["Universal", "universal"]
-			]
-			super("Braces", pairs)
-			this.setValue(V.currentRule.set.teeth)
-			this.onchange = (value) => V.currentRule.set.teeth = value
-		}
-	}
-
-	class LivingStandardList extends List {
-		constructor() {
-			const pairs = [
-				["No default setting", "no default setting"],
-				["Luxurious", "luxurious"],
-				["Normal", "normal"],
-				["Spare", "spare"]
-			]
-			super("Living standard", pairs)
-			this.setValue(V.currentRule.set.livingRules)
-			this.onchange = (value) => V.currentRule.set.livingRules = value
-		}
-	}
-
-	class PunishmentList extends List {
-		constructor() {
-			const pairs = [
-				["No default setting", "no default setting"],
-				["Confinement", "confinement"],
-				["Whipping", "whipping"],
-				["Chastity", "chastity"],
-				["Situational", "situational"]
-			]
-			super("Typical punishment", pairs)
-			this.setValue(V.currentRule.set.standardPunishment)
-			this.onchange = (value) => V.currentRule.set.standardPunishment = value
-		}
-	}
-
-	class RewardList extends List {
-		constructor() {
-			const pairs = [
-				["No default setting", "no default setting"],
-				["Relaxation", "relaxation"],
-				["Drugs", "drugs"],
-				["Orgasm", "orgasm"],
-				["Situational", "situational"]
-			]
-			super("Typical reward", pairs)
-			this.setValue(V.currentRule.set.standardReward)
-			this.onchange = (value) => V.currentRule.set.standardReward = value
-		}
-	}
-
-	class ReleaseList extends List {
-		constructor() {
-			const pairs = [
-				["No default setting", "no default setting"],
-				["Permissive", "permissive"],
-				["Sapphic", "sapphic"],
-				["Masturbation", "masturbation"],
-				["Restritive", "restrictive"]
-			]
-			super("Release rules", pairs)
-			this.setValue(V.currentRule.set.releaseRules)
-			this.onchange = (value) => V.currentRule.set.releaseRules = value
-		}
-	}
-
-	class SmartFetishList extends List {
-		constructor() {
-			const pairs = [
-				["No default setting", "no default setting"],
-				["Vanilla", "vanilla"],
-				["Oral", "oral"],
-				["Anal", "anal"],
-				["Boobs", "boobs"],
-				["Sub", "submissive"],
-				["Dom", "dom"],
-				["Humiliation", "humiliation"],
-				["Preg", "pregnancy"],
-				["Pain", "masochist"],
-				["Sadism", "sadist"]
-			]
-			super("Smart piercing fetish target", pairs)
-			this.setValue(V.currentRule.set.clitSetting)
-			this.onchange = (value) => V.currentRule.set.clitSetting = value
-		}
-	}
-
-	class SmartXYAttractionList extends List {
-		constructor() {
-			const pairs = [
-				["No default setting", "no default setting"],
-				["Passionate", "passionate", 100],
-				["Attracted", "attracted", 75],
-				["Indifferent", "indifferent", 45],
-				["None", "none", 0]
-			]
-			super("Smart piercing XY attraction target", pairs)
-			this.setValue(V.currentRule.set.clitSettingXY)
-			this.onchange = (value) => V.currentRule.set.clitSettingXY = value
-		}
-	}
-
-	class SmartXXAttractionList extends List {
-		constructor() {
-			const pairs = [
-				["No default setting", "no default setting"],
-				["Passionate", "passionate", 100],
-				["Attracted", "attracted", 75],
-				["Indifferent", "indifferent", 45],
-				["None", "none", 0]
-			]
-			super("Smart piercing XX attraction target", pairs)
-			this.setValue(V.currentRule.set.clitSettingXX)
-			this.onchange = (value) => V.currentRule.set.clitSettingXX = value
-		}
-	}
-
-	class SmartEnergyList extends List {
-		constructor() {
-			const pairs = [
-				["Nympho", "nympho", 100],
-				["Sex Addict", "sex addict", 85],
-				["Powerful", "powerful", 65],
-				["Healthy", "healthy", 45],
-				["Weak", "weak", 25],
-				["Frigid", "frigid", 0]
-			]
-			super("Smart piercing sex drive target", pairs)
-			this.setValue(V.currentRule.set.clitSettingEnergy)
-			this.onchange = (value) => V.currentRule.set.clitSettingEnergy = value
-		}
-	}
-
-	class SpeechList extends List {
-		constructor() {
-			const pairs = [
-				["No default setting", "no default setting"],
-				["Permissive", "permissive"],
-				["Suppress accents", "accent elimination"],
-				["Restrictive", "restrictive"]
-			]
-			super("Speech rules", pairs)
-			this.setValue(V.currentRule.set)
-			this.onchange = (value) => V.currentRule.set = value
-		}
-	}
-
-	class RelationshipList extends List {
-		constructor() {
-			const pairs =[
-				["No default setting", "no default setting"],
-				["Permissive", "permissive"],
-				["Just friends", "just friends"],
-				["Restrictive", "restrictive"]
-			]
-			super("Relationship rules", pairs)
-			this.setValue(V.currentRule.set)
-			this.onchange = (value) => V.currentRule.set = value
-		}
-	}
-
-	class PornList extends List {
-		constructor() {
-			const pairs = [
-				["No default setting", "no default setting"],
-				["No broadcasting", "no broadcasting", -1],
-				["No subsidy", "no subsidy", 0],
-				["1000", "1000", 1000],
-				["2000", "2000", 2000],
-				["3000", "3000", 3000],
-				["4000", "4000", 4000],
-				["5000", "5000", 5000]
-			]
-			super("Weekly porn publicity subsidy", pairs)
-			this.setValue(V.currentRule.set.pornFameSpending)
-			this.onchange = (value) => V.currentRule.set.pornFameSpending = value
-		}
-	}
-
-	class EyewearList extends List {
-		constructor() {
-			const pairs = [
-				["no default setting"],
-				["correct with contacts"],
-				["universal glasses"],
-				["blur with glasses"],
-				["blur with contacts"]
-			]
-			super("Eyewear", pairs)
-			this.setValue(V.currentRule.set.eyewear)
-			this.onchange = (value) => V.currentRule.set.eyewear = value
-		}
-	}
-
-	class LensesList extends Element {
-		constructor() {
-			super(V.currentRule.set.eyeColor)
-			this.appendChild(new OptionsItem("No default Setting", () => this.setValue("no default setting")))
-			this.colourlist = new LensesColourList()
-			this.shapelist = new LensesShapeList()
-			this.appendChild(this.colourlist)
-			this.appendChild(this.shapelist)
-		}
-
-		render(color) {
-			const elem = document.createElement("div")
-			elem.innerHTML = "Eye coloring: "
-			this.label = document.createElement("strong")
-			this.label.innerText = coloring
-			elem.appendChild(this.label)
-		}
-
-		combine() {
-			const lst = []
-			if (this.colourlist.value !== "no default setting")
-				lst.appendChild(this.colourlist.value)
-			if (this.shapelist.value !== "no default setting")
-				list.appendChild(this.shapelist.value)
-			if (lst.length === 0) return "no default value"
-			else return lst.join(" ")
-		}
-
-		set_value() {
-			const tmp = this.combine()
-			this.label.innerText = tmp
-			V.currentRule.set.eyeColor = tmp
-		}
-	}
-
-	class LensesColourList extends Options {
-		constructor() {
-			super("Color:")
-			[
-				["no default setting"]
-				["blue"],
-				["black"],
-				["brown"],
-				["green"],
-				["turquoise"],
-				["sky-blue"],
-				["hazel"],
-				["pale-grey"],
-				["white"],
-				["pink"],
-				["amber"],
-				["red"]
-			].forEach(i => this.appendChild(new OptionsItem(i, item => {
-				this.value = item.label
-				this.parent.set_value()
-			})))
-		}
-	}
-
-	class LensesShapeList extends Options {
-		constructor() {
-			super("Shape:")
-			[
-				["no default setting"],
-				["catlike"],
-				["serpent-like"],
-				["devilish"],
-				["demonic"],
-				["hypnotic"],
-				["heart-shaped"],
-				["wide-eyed"],
-				["almond-shaped"],
-				["bright"],
-				["teary"],
-				["vacant"]
-			].forEach(i => this.appendChild(new OptionsItem(i, item => {
-				this.value = item.label
-				this.parent.set_value()
-			})))
-		}
-	}
-
-	class MakeupList extends List {
-		constructor() {
-			super("Makeup")
-			[
-				["no default setting"],
-				["makeup-free", "makeup-free", 0],
-				["nice", "nice", 1],
-				["gorgeous", "gorgeous", 2],
-				["color-coordinate with hair", "color-coordinate with hair", 3],
-				["slutty", "slutty", 4]
-			].forEach(pair => this.appendChild(new ListItem(...pair)))
-			this.setValue(V.currentRule.set.makeup)
-			this.onchange = (value) => V.currentRule.set.makeup = value
-		}
-	}
-
-	class NailsList extends List {
-		constructor() {
-			super("Nails")
-			[
-				["no default setting"],
-				["clipped", "clipped", 0],
-				["extended", "extended", 1],
-				["color-coordinate with hair", "color-coordinate with hair", 2],
-				["sharp and claw-like", "sharp and claw-like", 3],
-				["bright and glittery", "bright and glittery", 4],
-				["hooker nails", "hooker nails", 5]
-			].forEach(pair => this.appendChild(new ListItem(...pair)))
-			this.setValue(V.currentRule.set.nails)
-			this.onchange = (value) => V.currentRule.set.nails = value
-		}
-	}
-
-	class HairLengthList extends List {
-		constructor() {
-			const pairs = [
-				["no default setting"],
-				["very short", "very short", 5],
-				["short", "short", 10],
-				["shoulder length", "shoulder length", 30],
-				["long", "long", 60],
-				["very long", "very long", 100],
-				["floor length", "floor length", 150]
-			]
-			super("Hair length", pairs)
-			this.setValue(V.currentRule.set.hLength)
-			this.onchange = (value) => V.currentRule.set.hLength = value
-		}
-	}
-	class HairColourList extends List {
-		constructor() {
-			const pairs = [
-				["no default setting"],
-				["blonde"],
-				["golden"],
-				["platinum blonde"],
-				["strawbery-blonde"],
-				["copper"],
-				["ginger"],
-				["red"]
-				["green"],
-				["blue"],
-				["pink"],
-				["dark brown"],
-				["brown"],
-				["auburn"],
-				["burgundy"],
-				["chocolate"],
-				["chestnut"],
-				["hazel"],
-				["black"],
-				["grey"],
-				["silver"],
-				["white"],
-				["blazing red"],
-				["neon green"],
-				["neon blue"],
-				["neon pink"]
-			]
-			super("Hair color", pairs)
-			this.setValue(V.currentRule.set.hColor)
-			this.onchange = (value) => V.currentRule.set.hColor = value
-		}
-	}
-
-	class HairStyleList extends List {
-		constructor() {
-			const pairs = [
-				["no default setting"],
-				["neat"],
-				["shaved"],
-				["trimmed"],
-				["buzzcut"],
-				["up"],
-				["ponytail"],
-				["bun"],
-				["curled"],
-				["permed"],
-				["luxurious"],
-				["dreadlocks"],
-				["cornrows"],
-				["braided"],
-				["tails"],
-				["afro"],
-				["strip"]
-			]
-			super("Hair style", pairs)
-			this.setValue(V.currentRule.set.hStyle)
-			this.onchange = (value) => V.currentRule.set.hStyle = value
-		}
-	}
-
-	class PubicHairColourList extends List {
-		constructor() {
-			const pairs = [
-				["no default setting"],
-				["blonde"],
-				["golden"],
-				["platinum blonde"],
-				["strawerry-blonde"],
-				["copper"],
-				["ginger"],
-				["red"],
-				["green"],
-				["blue"],
-				["pink"],
-				["dark brown"],
-				["brown"],
-				["auburn"],
-				["burgundy"],
-				["chocolate"],
-				["chestnut"],
-				["hazel"],
-				["black"],
-				["grey"],
-				["silver"],
-				["white"],
-				["blazing red"],
-				["neon green"],
-				["neon blue"],
-				["neon pink"]
-			]
-			super("Pubic hair color, when present", pairs)
-			this.setValue(V.currentRule.set.pubicHColor)
-			this.onchange = (value) => V.currentRule.set.pubicHColor = value
-		}
-	}
-
-	class PubicHairStyleList extends List {
-		constructor() {
-			const pairs = [
-				["no default setting"],
-				["waxed"],
-				["in a strip"],
-				["neat"],
-				["bushy"],
-				["bushy in the front and neat in the rear"],
-				["very bushy"]
-			]
-			super("Pubic hairstyle", pairs)
-			this.setValue(V.currentRule.set.pubicHStyle)
-			this.onchange = (value) => V.currentRule.set.pubicHStyle = value
-		}
-	}
-
-	class ArmpitHairColourList extends List {
-		constructor() {
-			const pairs = [
-				["no default setting"],
-				["blonde"],
-				["golden"],
-				["platinum blonde"],
-				["strawberry-blonde"],
-				["copper"],
-				["ginger"],
-				["red"],
-				["green"],
-				["blue"],
-				["pink"],
-				["dark brown"],
-				["brown"],
-				["auburn"],
-				["burgundry"],
-				["chocolate"],
-				["chestnut"],
-				["hazel"],
-				["black"],
-				["grey"],
-				["silver"],
-				["white"]
-			]
-			super("Underarm hair color, when present", pairs)
-			this.setValue(V.currentRule.set.underArmHColor)
-			this.onchange = (value) => V.currentRule.set.underArmHColor = value
-		}
-	}
-
-	class ArmpitHairStyleList extends List {
-		constructor() {
-			const pairs = [
-				["no default setting"],
-				["waxed"],
-				["shaved"],
-				["neat"],
-				["bushy"]
-			]
-			super("Underarm hair style", pairs)
-			this.setValue(V.currentRule.set.underArmHStyle)
-			this.onchange = (value) => V.currentRule.set.underArmHStyle = value
-		}
-	}
-
-	class EarPiecingList extends List {
-		constructor() {
-			const pairs = [
-				["No default setting", "no default setting"],
-				["None", 0],
-				["Light", 1],
-				["Heavy", 2]
-			]
-			super("Ear piercings", pairs)
-			this.setValue(V.currentRule.set.earPiercing)
-			this.onchange = (value) => V.currentRule.set.earPiercing
-		}
-	}
-
-	class NosePiercingList extends List {
-		constructor() {
-			const pairs = [
-				["No default setting", "no default setting"],
-				["None", 0],
-				["Light", 1],
-				["Heavy", 2]
-			]
-			super("Nasal piercings", pairs)
-			this.setValue(V.currentRule.set.nosePiercing)
-			this.onchange = (value) => V.currentRule.set.earPiercing
-		}
-	}
-
-	class EyebrowPiercingList extends List {
-		constructor() {
-			const pairs = [
-				["No default setting", "no default setting"],
-				["None", 0],
-				["Light", 1],
-				["Heavy", 2]
-			]
-			super("Eyebrow piercings", pairs)
-			this.setValue(V.currentRule.set.eyebrowPiercing)
-			this.onchange = (value) => V.currentRule.set.eyebrowPiercing
-		}
-	}
-
-	class NavelPiercingList extends List {
-		constructor() {
-			const pairs = [
-				["No default setting", "no default setting"],
-				["None", 0],
-				["Light", 1],
-				["Heavy", 2]
-			]
-			super("Navel piercings", pairs)
-			this.setValue(V.currentRule.set.navelPiercing)
-			this.onchange = (value) => V.currentRule.set.navelPiercing
-		}
-	}
-
-	class NipplePiercingList extends List {
-		constructor() {
-			const pairs = [
-				["No default setting", "no default setting"],
-				["None", 0],
-				["Light", 1],
-				["Heavy", 2]
-			]
-			super("Nipple piercings", pairs)
-			this.setValue(V.currentRule.set.nipplesPiercing)
-			this.onchange = (value) => V.currentRule.set.nipplesPiercing
-		}
-	}
-
-	class AreolaPiercingList extends List {
-		constructor() {
-			const pairs = [
-				["No default setting", "no default setting"],
-				["None", 0],
-				["Studded", 1]
-			]
-			super("Areola studs", pairs)
-			this.setValue(V.currentRule.set.areolaePiercing)
-			this.onchange = (value) => V.currentRule.set.areolaePiercing
-		}
-	}
-
-	class LipPiercingList extends List {
-		constructor() {
-			const pairs = [
-				["No default setting", "no default setting"],
-				["None", 0],
-				["Light", 1],
-				["Heavy", 2]
-			]
-			super("Lip piercings", pairs)
-			this.setValue(V.currentRule.set.lipsPiercing)
-			this.onchange = (value) => V.currentRule.set.lipsPiercing
-		}
-	}
-
-	class TonguePiercingList extends List {
-		constructor() {
-			const pairs = [
-				["No default setting", "no default setting"],
-				["None", 0],
-				["Light", 1],
-				["Heavy", 2]
-			]
-			super("Tongue piercing", pairs)
-			this.setValue(V.currentRule.set.tonguePiercing)
-			this.onchange = (value) => V.currentRule.set.tonguePiercing
-		}
-	}
-
-	class CliptPiercingList extends List {
-		constructor() {
-			const pairs = [
-				["No default setting", "no default setting"],
-				["None", 0],
-				["Light", 1],
-				["Heavy", 2],
-				["Smart (expensive)", 3]
-			]
-			super("Clit piercing", pairs)
-			this.setValue(V.currentRule.set.clitPiercing)
-			this.onchange = (value) => V.currentRule.set.clitPiercing
-		}
+			this.appendChild(new VisionSurgeryList())
+			this.appendChild(new LactationSurgeryList())
+			if (V.seeDicks || V.makeDicks)
+				this.appendChild(new SemenSurgeryList())
+			this.appendChild(new CosmeticSurgeryList())
+			this.appendChild(new LipSurgeryList())
+			this.appendChild(new ButtSurgeryList())
+			this.appendChild(new BreastSurgeryList())
+			this.appendChild(new TighteningSurgeryList())
+			this.appendChild(new BodyHairSurgeryList())
+			this.appendChild(new HairSurgeryList())
+	}
+}
+
+class ClothesList extends List {
+	constructor() {
+		const items = [
+			["Select her own outfit", "choosing her own clothes"]
+		]
+		super("Clothes", items)
+
+		const nclothes = [
+			["No default clothes setting", "no default setting"],
+			["Bangles", "slutty jewelry"],
+			["Bodysuit", "a comfortable bodysuit"],
+			["Cheerleader outfit", "a cheerleader outfit"],
+			["Clubslut netting", "clubslut netting"],
+			["Cutoffs and a t-shirt", "cutoffs and a t-shirt"],
+			["Fallen nun", "a fallen nuns habit"],
+			["Halter top", "a halter top dress"],
+			["Hijab and abaya", "a hijab and abaya"],
+			["Latex catsuit", "a latex catsuit"],
+			["Leotard", "a leotard"],
+			["Maid (nice)", "a nice maid outfit"],
+			["Maid (slutty)", "a slutty maid outfit"],
+			["Military uniform", "a military uniform"],
+			["Mini dress", "a mini dress"],
+			["Nice lingerie", "attractive lingerie"],
+			["Nurse (nice)", "a nice nurse outfit"],
+			["Schoolgirl", "a schoolgirl outfit"],
+			["Silken ballgown", "a ball gown"],
+			["Skimpy battledress", "battledress"],
+			["Slave gown", "a slave gown"],
+			["Slutty outfit", "a slutty outfit"],
+			["String bikini", "a stirng bikini"],
+			["Scalemail bikini", "a scalemail bikini"],
+			["Succubus costume", "a succubus outfit"],
+			["Suit (nice)", "nice business sattire"],
+			["Suit (slutty", "slutty business attire"],
+			["Spats and tank top", "spats and a tank top"]
+		]
+		const fsnclothes = [
+			["Body oil (FS)", "body oil"],
+			["Bunny outfit (FS)", "a bunny outfit"],
+			["Chattel habit (FS)", "a chattel habit"],
+			["Conservative clothing (FS)", "conservative clothing"],
+			["Harem gauze (FS)", "harem gauze"],
+			["Huipil (FS)", "a huipil"],
+			["Kimono (FS)", "a kimono"],
+			["Maternity dress (FS)", "a maternity dress"],
+			["Maternity lingerie (FS)", "attractive lingerie for a pregnant woman"],
+			["Slutty qipao (FS)", "a slutty qipao"],
+			["Stretch pants and a crop-top (FS)", "stretch pants and a crop-top"],
+			["Toga (FS)", "a toga"],
+			["Western clothing (FS)", "Western clothing"],
+		]
+		fsnclothes.forEach(pair => { if (isItemAccessible(pair[1])) nclothes.push(pair) })
+		const nice = new ListSubSection("Nice", nclothes)
+		this.appendChild(nice)
+
+		const hclothes = [
+``				["Nude", "no clothing"]
+			["Penitent nun", "a penitent nuns habit"],
+			["Restrictive latex", "restrictive latex"],
+			["Shibari ropes", "shibari ropes"],
+			["Uncomfortable straps", "uncomfortable straps"]
+		]
+		const fshclothes = [
+			["Chains (FS)", "chains"],
+		]
+		fshclothes.forEach(pair => { if (isItemAccessible(pair[1])) hclothes.push(pair) })
+
+		const harsh = new ListSubSection("Harsh", hclothes)
+		this.appendChild(harsh)
+
+		this.setValue(V.currentRule.set.clothes)
+		this.onchange = (data) => V.currentRule.set.clothes = value
+	}
+}
+
+class CollarList extends List {
+	constructor() {
+		const items = [
+			["No default collar setting", "no default setting"]
+			["No collar", "none"]
+		]
+		super("Collar", items)
+
+		const ncollars = [
+			["Stylish leather", "stylish leather"],
+			["Satin choker", "satin choker"],
+			["Silken Ribbon", "silk ribbon"],
+			["Heavy Gold", "heavy gold"],
+			["Pretty jewelry", "pretty jewelry"],
+			["Cowbell", "leather with cowbell"]
+		]
+		if (V.seeAge !== 0)
+			ncollars.push(["Nice retirement counter", "nice retirement counter"])
+		const fsncollars = [
+			["Bowtie collar", "bowtie"],
+			["ancient Egyptian", "ancient Egyptian"],
+		]
+		fsncollars.forEach(pair => { if (isItemAccessible(pair[1])) ncollars.push(pair) })
+		const nice = new ListSubSection("Nice", ncollars)
+		this.appendChild(nice)
+
+		const hcollars = [
+			["Tight steel", "tight steel"],
+			["Uncomfortable leather", "uncomfortable leather"],
+			["Pregnancy biometrics", "preg biometrics"],
+			["Shock punishment", "shock punishment"],
+			["Dildo gag", "dildo gag"],
+			["Ball gag", "ball gag"],
+			["Bit gag", "bit gag"],
+			["Neck corset", "neck corset"],
+		]
+		if (V.seeAge !== 0)
+			hcollars.push(["Cruel retirement counter", "cruel retirement counter"])
+		if (V.toysBoughtGags === 1)
+			hcollars.push(["Massive dildo gag", "massive dildo gag"])
+		const harsh = new ListSubSection("Harsh", hcollars)
+		this.appendChild(harsh)
+
+		this.setValue(V.currentRule.set.collar)
+		this.onchange = (value) => V.currentRule.set.collar = value
+	}
+}
+
+class ShoeList extends List {
+	constructor() {
+		super("Shoes", setup.shoes)
+		this.setValue(V.currentRule.set.shoes)
+		this.onchange = (value) => V.currentRule.set.shoes = value
+	}
+}
+
+class CorsetList extends List {
+	constructor() {
+		const bellies = []
+		setup.bellyAccessories.forEach(acc => {
+			if (acc.fs === undefined && acc.rs === undefined)
+				bellies.push([acc.name, acc.value])
+			else if (acc.fs === "repopulation" && V.arcologies[0].FSRepopulationFocus !== "unset")
+				bellies.push([acc.name + " (FS)", acc.value])
+			else if (acc.rs === "boughtBelly" && V.clothesBoughtBelly === 1)
+				bellies.push([acc.name + " (Purchased)", acc.value])
+		})
+		super("Corsetage", bellies)
+		this.setValue(V.currentRule.set.bellyAccessory)
+		this.onchange = (value) => V.currentRule.set.bellyAccessory
+	}
+}
+
+class VagAccVirginsList extends List {
+	constructor() {
+		const accs = []
+		setup.vaginalAccessories.forEach(acc => {
+			if (acc.fs === undefined && acc.rs === undefined)
+				accs.push([acc.name, acc.value])
+			else if (acc.rs === "buyBigDildos" && V.toysBoughtDildos === 1)
+				accs.push([acc.name + " (Purchased)", acc.value])
+		})
+		super("Vaginal accessories for virgins")
+		this.setValue(V.currentRule.set.virginAccessory)
+		this.onchange = (value) => V.currentRule.set.virginAccessory = value
+	}
+}
+
+class VagAccAVirginsList extends List {
+	constructor() {
+		const accs = []
+		setup.vaginalAccessories.forEach(acc => {
+			if (acc.fs === undefined && acc.rs === undefined)
+				accs.push([acc.name, acc.value])
+			else if (acc.rs === "buyBigDildos" && V.toysBoughtDildos === 1)
+				accs.push([acc.name + " (Purchased)", acc.value])
+		})
+		super("Vaginal accessories for anal virgins")
+		this.setValue(V.currentRule.set.aVirginAccessory)
+		this.onchange = (value) => V.currentRule.set.aVirginAccessory = value
+	}
+}
+
+class VagAccOtherList extends List {
+	constructor() {
+		const accs = []
+		setup.vaginalAccessories.forEach(acc => {
+			if (acc.fs === undefined && acc.rs === undefined)
+				accs.push([acc.name, acc.value])
+			else if (acc.rs === "buyBigDildos" && V.toysBoughtDildos === 1)
+				accs.push([acc.name + " (Purchased)", acc.value])
+		})
+		super("Vaginal accessories for other slaves")
+		this.setValue(V.currentRule.set.vaginalAccessory)
+		this.onchange = (value) => V.currentRule.set.vaginalAccessory = value
+	}
+}
+
+class DickAccVirginsList extends List {
+	constructor() {
+		super("Dick accessories for anal virgins", setup.dickAccessories)
+		this.setValue(V.currentRule.set.aVirginDickAccessory)
+		this.onchange = (value) => V.currentRule.set.aVirginDickAccessory = value
+	}
+}
+
+class DickAccOtherList extends List {
+	constructor() {
+		super("Dick accessories for other slaves", setup.dickAccessories)
+		this.setValue(V.currentRule.set.dickAccessory)
+		this.onchange = (value) => V.currentRule.set.dickAccessory = value
+	}
+}
+
+class ButtplugsVirginsList extends List {
+	constructor() {
+		const accs = []
+		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)
+				accs.push([acc.name + " (Purchased)", acc.value])
+		})
+		super("Buttplugs for anal virgins")
+		this.setValue(V.currentRule.set.aVirginButtplug)
+		this.onchange = (value) => V.currentRule.set.aVirginButtplug = value
+	}
+}
+
+class ButtplugsOtherList extends List {
+	constructor() {
+		const accs = []
+		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)
+				accs.push([acc.name + " (Purchased)", acc.value])
+		})
+		super("Buttplugs for other slaves")
+		this.setValue(V.currentRule.set.buttplug)
+		this.onchange = (value) => V.currentRule.set.buttplug = value
+	}
+}
+
+class ImplantVolumeList extends List {
+	constructor() {
+		const pairs = [
+			["No changes", -1],
+			["Empty implant", 0],
+			["Early pregnancy", 1500],
+			["Second trimester pregnancy", 5000],
+			["Full-term pregnancy", 15000],
+			["Full-term with twins", 30000],
+			["Full-term with triplets", 45000],
+			["Full-term with quadruplets", 60000],
+			["Full-term with quintuplets", 75000],
+			["Full-term with sextuplets", 90000],
+			["Full-term with septuplets", 105000],
+			["Full-term with octuplets", 120000]
+		]
+		super("Belly implant target volume (if present)")
+		this.setValue(V.currentRule.set.bellyImplantVol)
+		this.onchange = (value) => V.currentRule.set.bellyImplantVol = value
+	}
+}
+
+class AutosurgerySwitch extends List {
+	constructor() {
+		const pairs = [
+			["Activate", 1]
+			["Off", 0]
+		]
+		super("Assistant-applied implants (Autosurgery global switch)", pairs)
+		this.setValue(V.currentRule.set.autoSurgery)
+		this.onchange = (value) => V.currentRule.set.autoSurgery = value
+	}
+}
+
+class GrowthList extends Options {
+	constructor() {
+		super()
+		this.sublists = []
+		const pairs = [
+			["No default setting", () => this.nds()],
+			["Girlish figure", () => this.girlish()],
+			["Stacked figure", () => this.stacked()],
+			["Huge but functional", () => this.huge()],
+			["Unlimited", () => this.unlimited()],
+			["None", () => this.none()]
+		]
+		pairs.forEach(pair => this.appendChild(new OptionsItem(...pair)))
+
+		this.breasts = new BreastGrowthList()
+		this.butts = new ButtGrowthList()
+		this.lips = new LipGrowthList()
+		this.sublists.push(this.breasts, this.butts, this.lips)
+
+		if (V.seeDicks > 0 || V.makeDicks > 0) {
+			this.dicks = new DickGrowthList()
+			this.balls = new BallGrowthList()
+			this.sublists.push(this.dicks, this.balls)
+		}
+
+		this.sublists.forEach(i => this.appendChild(i))
+	}
+
+	render() {
+		const elem = document.createElement("div")
+		const span = document.createElement("span")
+		span.innerHTML = "Growth hormone regimes for healthy slaves:"
+		elem.appendChild(span)
+		return elem
+	}
+
+	nds() {
+		[this.breasts, this.butts, this.lips, this.dicks, this.balls].forEach(i => {
+			i.setValue("no default change")
+			i.propagateChange()
+		})
 	}
 
-	class LabiaPiercingList extends List {
-		constructor() {
-			const pairs = [
-				["No default setting", "no default setting"],
-				["None", 0],
-				["Light", 1],
-				["Heavy", 2]
-			]
-			super("Pussylips piercings", pairs)
-			this.setValue(V.currentRule.set.vaginaPiercing)
-			this.onchange = (value) => V.currentRule.set.vaginaPiercing
-		}
+	girlish() {
+		this.breasts.setValue(350)
+		this.butts.setValue(2)
+		this.lips.setValue(25)
+		if (this.dicks) this.dicks.setValue(0)
+		if (this.balls) this.balls.setValue(0)
+		this.sublists.forEach(i => i.propagateChange())
 	}
 
-	class ShaftPiercingList extends List {
-		constructor() {
-			const pairs = [
-				["No default setting", "no default setting"],
-				["None", 0],
-				["Light", 1],
-				["Heavy", 2]
-			]
-			super("Shaft piercings", pairs)
-			this.setValue(V.currentRule.set.dickPiercing)
-			this.onchange = (value) => V.currentRule.set.dickPiercing
-		}
+	stacked() {
+		this.breasts.setValue(1000)
+		this.butts.setValue(4)
+		this.lips.setValue(25)
+		if (this.dicks) this.dicks.setValue(4)
+		if (this.balls) this.balls.setValue(4)
+		this.sublists.forEach(i => i.propagateChange())
 	}
 
-	class PerineumPiercingList extends List {
-		constructor() {
-			const pairs = [
-				["No default setting", "no default setting"],
-				["None", 0],
-				["Light", 1],
-				["Heavy", 2]
-			]
-			super("Perianal piercings", pairs)
-			this.setValue(V.currentRule.set.anusPiercing)
-			this.onchange = (value) => V.currentRule.set.anusPiercing
-		}
+	huge() {
+		this.breasts.setValue(9000)
+		this.butts.setValue(10)
+		this.lips.setValue(45)
+		if (this.dicks) this.dicks.setValue(6)
+		if (this.balls) this.balls.setValue(6)
+		this.sublists.forEach(i => i.propagateChange())
 	}
 
-	class CorsetPiercingList extends List {
-		constructor() {
-			const pairs = [
-				["No default setting", "no default setting"],
-				["None", 0],
-				["Apply", 1]
-			]
-			super("Corset piercings", pairs)
-			this.setValue(V.currentRule.set.corsetPiercing)
-			this.onchange = (value) => V.currentRule.set.corsetPiercing
-		}
+	unlimited() {
+		this.breasts.setValue(48000)
+		this.butts.setValue(10)
+		this.lips.setValue(100)
+		if (this.dicks) this.dicks.setValue(10)
+		if (this.balls) this.balls.setValue(6)
+		this.sublists.forEach(i => i.propagateChange())
 	}
 
-	class AutoBrandingList exnteds List {
-		constructor() {
-			const pairs = [
-				["Activate", 1],
-				["Off", 0],
-			]
-			super("Automatic branding", pairs)
-			this.setValue(V.currentRule.set.autoBrand)
-			this.onchange = (value) => V.currentRule.set.autoBrand = value
-		}
+	none() {
+		this.sublists.forEach(i => {
+			i.setValue(0)
+			i.propagateChange()
+		})
 	}
-
-	class BrandingLocationList extends List {
-		constructor() {
-			super("Your preferred location for brands is", [])
-
-			const ears = new ListSubSection("Ears", [
-				["Left", "left ear"],
-				["Right", "right ear"],
-				["Both", "ears"]
-			])
-			this.appendChild(ears)
-
-			const cheeks = new ListSubSection("Cheeks", [
-				["Left", "left cheek"],
-				["Right", "right cheek"],
-				["Both", "cheeks"]
-			])
+}
+
+class BreastGrowthList extends List {
+	constructor() {
+		const pairs = [
+			["No default setting", "no default setting"],
+			["B Cup", 350],
+			["D Cup", 1000],
+			["Monstrous", 9000],
+			["Unlimited", 48000],
+			["None", 0]
+		]
+		super("Breasts", pairs, true)
+		this.setValue(V.currentRule.set.growth_boobs)
+		this.onchange = (value) => V.currentRule.set.growth_boobs = value
+	}
+}
+
+class ButtGrowthList extends List {
+	constructor() {
+		const pairs = [
+			["No default setting", "no default setting"],
+			["Cute", 2],
+			["Big", 4],
+			["Huge", 6],
+			["Unlimited", 10],
+			["None", 0]
+		]
+		super("Butts", pairs, true)
+		this.setValue(V.currentRule.set.growth_butt)
+		this.onchange = (value) => V.currentRule.set.growth_butt = value
+	}
+}
+
+class LipGrowthList extends List {
+	constructor() {
+		const pairs = [
+			["No default setting", "no default setting"],
+			["Plump", 25],
+			["Beestung", 45],
+			["Facepussy", 100],
+			["None", 0]
+		]
+		super("Lips", pairs, true)
+		this.setValue(V.currentRule.set.growth_lips)
+		this.onchange = (value) => V.currentRule.set.growth_lips = value
+	}
+}
+
+class DickGrowthList extends List {
+	constructor() {
+		const pairs = [
+			["No default setting", "no default setting"],
+			["Above average", 4],
+			["Pornstar", 6],
+			["Unlimited", 10],
+			["None", 0]
+		]
+		super("Dicks, if present", pairs, true)
+		this.setValue(V.currentRule.set.growth_dick)
+		this.onchange = (value) => V.currentRule.set.growth_dick = value
+	}
+}
+
+class BallGrowthList extends List {
+	constructor() {
+		const pairs = [
+			["No default setting", "no default setting"],
+			["Sizeable", 4],
+			["Cumslave", 6],
+			["Unlimited", 10],
+			["None", 0]
+		]
+		super("Balls, if present", pairs, true)
+		this.setValue(V.currentRule.set.growth_balls)
+		this.onchange = (value) => V.currentRule.set.growth_balls = value
+	}
+}
+
+class CurrativesList extends List {
+	constructor() {
+		const pairs = [
+			["No default setting", "no default setting"],
+			["None", "none", 0],
+			["Preventatives", "preventatives", 1],
+			["Curatives", "curatives", 2]
+		]
+		super("Health drugs", pairs)
+		this.setValue(V.currentRule.set.curatives)
+		this.onchange = (value) => V.currentRule.set.curatives = value
+	}
+}
+
+class AphrodisiacList extends List {
+	constructor() {
+		const pairs = [
+			["No default setting", "no default setting"],
+			["None", "none", 0],
+			["Standard", "standard", 1],
+			["Extreme", "extreme", 2],
+			["Anaphrodisiacs", "anaphrodisiacs", -1]
+		]
+		super("Aphrodisiacs", pairs)
+		this.setValue(V.currentRule.set.aphrodisiacs)
+		this.onchange = (value) => V.currentRule.set.aphrodisiacs = value
+	}
+}
+
+class ContraceptiveList extends List {
+	constructor() {
+		const drugs =  [
+			["No default setting", "no default setting"],
+			["Contraceptives", "contraceptives", -1]
+			["Fertile", "fertile", 0],
+			["Very fertile", "very fertile", 1],
+			["Extremely fertile", "extremely fertile", 2],
+		]
+		if (V.seeHyperPreg === 1 && V.superFertilityDrugs === 1) {
+			drugs.push(["Hyper fertile", "hyper fertile", 3])
+			drugs.push(["Maximize fertility", "maximize fertility", 4])
+		}
+		super("Contraceptives for fertile slaves", drugs)
+		this.setValue(V.currentRule.set.preg)
+		this.onchange = (value) => V.currentRule.set.preg = value
+	}
+}
+
+class PregDrugsList extends List {
+	constructor() {
+		const pairs = [
+			["No changes", "no changes", "no default setting"],
+			["None", "none"],
+			["Fast gestation", "fast gestation", "fast"],
+			["Slow gestation", "slow gestation", "slow"],
+			["Birth supressors", "birth supressors", "suppress"],
+			["Birth stimulators", "birth stimulators", "stimulate"]
+		]
+		super("Pregnancy control agents for pregnant slaves", pairs)
+		this.setValue(V.currentRule.set.pregSpeed)
+		this.onchange = (value) => V.currentRule.set.pregSpeed = value
+	}
+}
+
+class FemaleHormonesList extends List {
+	constructor() {
+		const pairs = [
+			["No default setting", "no default setting"],
+			["Intensive Female", "intensive female", 2],
+			["Female", "female", 1],
+			["None", "none", 0],
+			["Male", "male", -1],
+			["Intensive Male", "intensive male", -2]
+		]
+		super("Hormones for female slaves", pairs)
+		this.setValue(V.currentRule.set.XX)
+		this.onchange = (value) => V.currentRule.set.XX = value
+	}
+}
+
+class GeldingHormonesList extends List {
+	constructor() {
+		const pairs = [
+			["No default setting", "no default setting"],
+			["Intensive Female", "intensive female", 2],
+			["Female", "female", 1],
+			["None", "none", 0],
+			["Male", "male", -1],
+			["Intensive Male", "intensive male", -2]
+		]
+		super("Hormones for geldings", pairs)
+		this.setValue(V.currentRule.set.gelding)
+		this.onchange = (value) => V.currentRule.set.gelding = value
+	}
+}
+
+class ShemaleHormonesList extends List {
+	constructor() {
+		const pairs = [
+			["No default setting", "no default setting"],
+			["Intensive Female", "intensive female", 2],
+			["Female", "female", 1],
+			["None", "none", 0],
+			["Male", "male", -1],
+			["Intensive Male", "intensive male", -2]
+		]
+		super("Hormones for shemales", pairs)
+		this.setValue(V.currentRule.set.XY)
+		this.onchange = (value) => V.currentRule.set.XY = value
+	}
+}
+
+class OtherDrugsList extends List {
+	constructor() {
+		const drugs = []
+		setup.drugs.forEach(drug => {
+			if (drug.fs === undefined && drug.rs === undefined)
+				drugs.push([drug.name, drug.value])
+			else if (drug.rs === "growth" && V.growthStim === 1)
+				drugs.push([drug.name + " (Research)", drug.value])
+			else if (drug.rs === "pubHorm" && V.precociousPuberty === 1 && V.pubertyHormones === 1)
+				drugs.push([drug.name + " (Research)", drug.value])
+			else if (drug.rs === "nosag" && V.purchasedSagBGone === 1)
+				drugs.push([drug.name + " (Product)", drug.value])
+			else if (drug.fs === "slimness" && V.arcologies[0].FSSlimnessEnthusiastResearch === 1)
+				drugs.push([drug.name + " (FS)", drug.value])
+			else if (drug.fs === "youth" && V.arcologies[0].FSYouthPreferentialistResearch === 1)
+				drugs.push([drug.name + " (FS)", drug.value])
+		})
+		super("Other drugs (Will be overriden by hormones and other drugs where applicable)", drugs)
+		this.setValue(V.currentRule.set.drug)
+		this.onchange = (value) => V.currentRule.set.drug = value
+	}
+}
+
+class DietList extends List {
+	constructor() {
+		const diets = [
+			["no default setting", "no default setting"],
+			["Fix fat and skinny slaves", "fix fat and skinny slaves", "attractive"],
+			["Curvy", "curvy", 30],
+			["Average", "average", 0],
+			["Thin", "thin", -30]
+		]
+		if (V.feeder === 1) {
+			diets.push(
+				["Feminine", "feminine", "XX"],
+				["Masculine", "masculine", "XY"]
+			)
+			if (V.dietXXY === 1)
+				diets.push(["Futanari", "futanari", "XXY"])
+		}
+		if (V.dietCleanse === 1)
+			diets.push(["Cleansing", "promote health", "cleansing"])
+		if (V.dietFertility === 1)
+			diets.push(["Feritlity", "promote fertility", "fertility"])
+		if (V.cumProDiet === 1)
+			diets.push(["Cum production", "promote cum production", "cum production"])
+
+		super("Slave diets", diets)
+		this.setValue(V.currentRule.set.diet)
+		this.onchange = (value) => V.currentRule.set.diet = value
+	}
+}
+
+class DietGrowthList extends List {
+	constructor() {
+		const pairs = [
+			["On", 1],
+			["Off", 0]
+		]
+		super("Diet support for growth drugs", pairs)
+		this.setValue(V.currentRule.set.dietGrowthSupport)
+		this.onchange = (value) => V.currentRule.set.dietGrowthSupport = value
+	}
+}
+
+class DietBaseList extends List {
+	constructor() {
+		// TODO: better data structure?
+		const pairs = [
+			["No default setting", {cum: "no default setting", milk: "no default setting"}],
+			["Normal Diet", {cum: 0, milk: 0}],
+			["Cum Added", {cum: 1, milk: 0}],
+			["Milk Added", {cum: 0, milk: 1}],
+			["Cum & Milk Added", {cum: 1, milk: 1}],
+			["Cum-Based", {cum: 2, milk: 0}]
+			["Milk-Based", {cum: 0, milk: 2}]
+		]
+		super("Diet base", pairs)
+		this.setValue({cum: V.currentRule.set.dietCum, milk: V.currentRule.set.dietMilk})
+		this.onchange = (value) => {
+			V.currentRule.set.dietCum = value.cum
+			V.currentRule.set.dietMilk = value.milk
+		}
+	}
+}
+
+class MuscleList extends List {
+	constructor() {
+		const pairs = [
+			["No default setting", "no default setting"],
+			["None", "None", 0],
+			["Toned", "Toned", 20],
+			["Ripped", "Ripped", 50],
+			["Massive", "Massive", 100],
+			["Weak", "Weak", -20]
+		]
+		super("Muscles", pairs, true)
+		this.setValue(V.currentRule.set.muscles)
+		this.onchange = (value) => V.currentRule.set.muscles = value
+	}
+}
+
+class BraceList extends List {
+	constructor() {
+		const pairs = [
+			["No default setting", "no default setting"],
+			["None", "none"],
+			["Straighten", "straighten"],
+			["Universal", "universal"]
+		]
+		super("Braces", pairs)
+		this.setValue(V.currentRule.set.teeth)
+		this.onchange = (value) => V.currentRule.set.teeth = value
+	}
+}
+
+class LivingStandardList extends List {
+	constructor() {
+		const pairs = [
+			["No default setting", "no default setting"],
+			["Luxurious", "luxurious"],
+			["Normal", "normal"],
+			["Spare", "spare"]
+		]
+		super("Living standard", pairs)
+		this.setValue(V.currentRule.set.livingRules)
+		this.onchange = (value) => V.currentRule.set.livingRules = value
+	}
+}
+
+class PunishmentList extends List {
+	constructor() {
+		const pairs = [
+			["No default setting", "no default setting"],
+			["Confinement", "confinement"],
+			["Whipping", "whipping"],
+			["Chastity", "chastity"],
+			["Situational", "situational"]
+		]
+		super("Typical punishment", pairs)
+		this.setValue(V.currentRule.set.standardPunishment)
+		this.onchange = (value) => V.currentRule.set.standardPunishment = value
+	}
+}
+
+class RewardList extends List {
+	constructor() {
+		const pairs = [
+			["No default setting", "no default setting"],
+			["Relaxation", "relaxation"],
+			["Drugs", "drugs"],
+			["Orgasm", "orgasm"],
+			["Situational", "situational"]
+		]
+		super("Typical reward", pairs)
+		this.setValue(V.currentRule.set.standardReward)
+		this.onchange = (value) => V.currentRule.set.standardReward = value
+	}
+}
+
+class ReleaseList extends List {
+	constructor() {
+		const pairs = [
+			["No default setting", "no default setting"],
+			["Permissive", "permissive"],
+			["Sapphic", "sapphic"],
+			["Masturbation", "masturbation"],
+			["Restritive", "restrictive"]
+		]
+		super("Release rules", pairs)
+		this.setValue(V.currentRule.set.releaseRules)
+		this.onchange = (value) => V.currentRule.set.releaseRules = value
+	}
+}
+
+class SmartFetishList extends List {
+	constructor() {
+		const pairs = [
+			["No default setting", "no default setting"],
+			["Vanilla", "vanilla"],
+			["Oral", "oral"],
+			["Anal", "anal"],
+			["Boobs", "boobs"],
+			["Sub", "submissive"],
+			["Dom", "dom"],
+			["Humiliation", "humiliation"],
+			["Preg", "pregnancy"],
+			["Pain", "masochist"],
+			["Sadism", "sadist"]
+		]
+		super("Smart piercing fetish target", pairs)
+		this.setValue(V.currentRule.set.clitSetting)
+		this.onchange = (value) => V.currentRule.set.clitSetting = value
+	}
+}
+
+class SmartXYAttractionList extends List {
+	constructor() {
+		const pairs = [
+			["No default setting", "no default setting"],
+			["Passionate", "passionate", 100],
+			["Attracted", "attracted", 75],
+			["Indifferent", "indifferent", 45],
+			["None", "none", 0]
+		]
+		super("Smart piercing XY attraction target", pairs)
+		this.setValue(V.currentRule.set.clitSettingXY)
+		this.onchange = (value) => V.currentRule.set.clitSettingXY = value
+	}
+}
+
+class SmartXXAttractionList extends List {
+	constructor() {
+		const pairs = [
+			["No default setting", "no default setting"],
+			["Passionate", "passionate", 100],
+			["Attracted", "attracted", 75],
+			["Indifferent", "indifferent", 45],
+			["None", "none", 0]
+		]
+		super("Smart piercing XX attraction target", pairs)
+		this.setValue(V.currentRule.set.clitSettingXX)
+		this.onchange = (value) => V.currentRule.set.clitSettingXX = value
+	}
+}
+
+class SmartEnergyList extends List {
+	constructor() {
+		const pairs = [
+			["Nympho", "nympho", 100],
+			["Sex Addict", "sex addict", 85],
+			["Powerful", "powerful", 65],
+			["Healthy", "healthy", 45],
+			["Weak", "weak", 25],
+			["Frigid", "frigid", 0]
+		]
+		super("Smart piercing sex drive target", pairs)
+		this.setValue(V.currentRule.set.clitSettingEnergy)
+		this.onchange = (value) => V.currentRule.set.clitSettingEnergy = value
+	}
+}
+
+class SpeechList extends List {
+	constructor() {
+		const pairs = [
+			["No default setting", "no default setting"],
+			["Permissive", "permissive"],
+			["Suppress accents", "accent elimination"],
+			["Restrictive", "restrictive"]
+		]
+		super("Speech rules", pairs)
+		this.setValue(V.currentRule.set)
+		this.onchange = (value) => V.currentRule.set = value
+	}
+}
+
+class RelationshipList extends List {
+	constructor() {
+		const pairs =[
+			["No default setting", "no default setting"],
+			["Permissive", "permissive"],
+			["Just friends", "just friends"],
+			["Restrictive", "restrictive"]
+		]
+		super("Relationship rules", pairs)
+		this.setValue(V.currentRule.set)
+		this.onchange = (value) => V.currentRule.set = value
+	}
+}
+
+class PornList extends List {
+	constructor() {
+		const pairs = [
+			["No default setting", "no default setting"],
+			["No broadcasting", "no broadcasting", -1],
+			["No subsidy", "no subsidy", 0],
+			["1000", "1000", 1000],
+			["2000", "2000", 2000],
+			["3000", "3000", 3000],
+			["4000", "4000", 4000],
+			["5000", "5000", 5000]
+		]
+		super("Weekly porn publicity subsidy", pairs)
+		this.setValue(V.currentRule.set.pornFameSpending)
+		this.onchange = (value) => V.currentRule.set.pornFameSpending = value
+	}
+}
+
+class EyewearList extends List {
+	constructor() {
+		const pairs = [
+			["no default setting"],
+			["correct with contacts"],
+			["universal glasses"],
+			["blur with glasses"],
+			["blur with contacts"]
+		]
+		super("Eyewear", pairs)
+		this.setValue(V.currentRule.set.eyewear)
+		this.onchange = (value) => V.currentRule.set.eyewear = value
+	}
+}
+
+class LensesList extends Element {
+	constructor() {
+		super(V.currentRule.set.eyeColor)
+		this.appendChild(new OptionsItem("No default Setting", () => this.setValue("no default setting")))
+		this.colourlist = new LensesColourList()
+		this.shapelist = new LensesShapeList()
+		this.appendChild(this.colourlist)
+		this.appendChild(this.shapelist)
+	}
+
+	render(color) {
+		const elem = document.createElement("div")
+		elem.innerHTML = "Eye coloring: "
+		this.label = document.createElement("strong")
+		this.label.innerText = coloring
+		elem.appendChild(this.label)
+	}
+
+	combine() {
+		const lst = []
+		if (this.colourlist.value !== "no default setting")
+			lst.appendChild(this.colourlist.value)
+		if (this.shapelist.value !== "no default setting")
+			list.appendChild(this.shapelist.value)
+		if (lst.length === 0) return "no default value"
+		else return lst.join(" ")
+	}
+
+	set_value() {
+		const tmp = this.combine()
+		this.label.innerText = tmp
+		V.currentRule.set.eyeColor = tmp
+	}
+}
+
+class LensesColourList extends Options {
+	constructor() {
+		super("Color:")
+		[
+			["no default setting"]
+			["blue"],
+			["black"],
+			["brown"],
+			["green"],
+			["turquoise"],
+			["sky-blue"],
+			["hazel"],
+			["pale-grey"],
+			["white"],
+			["pink"],
+			["amber"],
+			["red"]
+		].forEach(i => this.appendChild(new OptionsItem(i, item => {
+			this.value = item.label
+			this.parent.set_value()
+		})))
+	}
+}
+
+class LensesShapeList extends Options {
+	constructor() {
+		super("Shape:")
+		[
+			["no default setting"],
+			["catlike"],
+			["serpent-like"],
+			["devilish"],
+			["demonic"],
+			["hypnotic"],
+			["heart-shaped"],
+			["wide-eyed"],
+			["almond-shaped"],
+			["bright"],
+			["teary"],
+			["vacant"]
+		].forEach(i => this.appendChild(new OptionsItem(i, item => {
+			this.value = item.label
+			this.parent.set_value()
+		})))
+	}
+}
+
+class MakeupList extends List {
+	constructor() {
+		super("Makeup")
+		[
+			["no default setting"],
+			["makeup-free", "makeup-free", 0],
+			["nice", "nice", 1],
+			["gorgeous", "gorgeous", 2],
+			["color-coordinate with hair", "color-coordinate with hair", 3],
+			["slutty", "slutty", 4]
+		].forEach(pair => this.appendChild(new ListItem(...pair)))
+		this.setValue(V.currentRule.set.makeup)
+		this.onchange = (value) => V.currentRule.set.makeup = value
+	}
+}
+
+class NailsList extends List {
+	constructor() {
+		super("Nails")
+		[
+			["no default setting"],
+			["clipped", "clipped", 0],
+			["extended", "extended", 1],
+			["color-coordinate with hair", "color-coordinate with hair", 2],
+			["sharp and claw-like", "sharp and claw-like", 3],
+			["bright and glittery", "bright and glittery", 4],
+			["hooker nails", "hooker nails", 5]
+		].forEach(pair => this.appendChild(new ListItem(...pair)))
+		this.setValue(V.currentRule.set.nails)
+		this.onchange = (value) => V.currentRule.set.nails = value
+	}
+}
+
+class HairLengthList extends List {
+	constructor() {
+		const pairs = [
+			["no default setting"],
+			["very short", "very short", 5],
+			["short", "short", 10],
+			["shoulder length", "shoulder length", 30],
+			["long", "long", 60],
+			["very long", "very long", 100],
+			["floor length", "floor length", 150]
+		]
+		super("Hair length", pairs)
+		this.setValue(V.currentRule.set.hLength)
+		this.onchange = (value) => V.currentRule.set.hLength = value
+	}
+}
+class HairColourList extends List {
+	constructor() {
+		const pairs = [
+			["no default setting"],
+			["blonde"],
+			["golden"],
+			["platinum blonde"],
+			["strawbery-blonde"],
+			["copper"],
+			["ginger"],
+			["red"]
+			["green"],
+			["blue"],
+			["pink"],
+			["dark brown"],
+			["brown"],
+			["auburn"],
+			["burgundy"],
+			["chocolate"],
+			["chestnut"],
+			["hazel"],
+			["black"],
+			["grey"],
+			["silver"],
+			["white"],
+			["blazing red"],
+			["neon green"],
+			["neon blue"],
+			["neon pink"]
+		]
+		super("Hair color", pairs)
+		this.setValue(V.currentRule.set.hColor)
+		this.onchange = (value) => V.currentRule.set.hColor = value
+	}
+}
+
+class HairStyleList extends List {
+	constructor() {
+		const pairs = [
+			["no default setting"],
+			["neat"],
+			["shaved"],
+			["trimmed"],
+			["buzzcut"],
+			["up"],
+			["ponytail"],
+			["bun"],
+			["curled"],
+			["permed"],
+			["luxurious"],
+			["dreadlocks"],
+			["cornrows"],
+			["braided"],
+			["tails"],
+			["afro"],
+			["strip"]
+		]
+		super("Hair style", pairs)
+		this.setValue(V.currentRule.set.hStyle)
+		this.onchange = (value) => V.currentRule.set.hStyle = value
+	}
+}
+
+class PubicHairColourList extends List {
+	constructor() {
+		const pairs = [
+			["no default setting"],
+			["blonde"],
+			["golden"],
+			["platinum blonde"],
+			["strawerry-blonde"],
+			["copper"],
+			["ginger"],
+			["red"],
+			["green"],
+			["blue"],
+			["pink"],
+			["dark brown"],
+			["brown"],
+			["auburn"],
+			["burgundy"],
+			["chocolate"],
+			["chestnut"],
+			["hazel"],
+			["black"],
+			["grey"],
+			["silver"],
+			["white"],
+			["blazing red"],
+			["neon green"],
+			["neon blue"],
+			["neon pink"]
+		]
+		super("Pubic hair color, when present", pairs)
+		this.setValue(V.currentRule.set.pubicHColor)
+		this.onchange = (value) => V.currentRule.set.pubicHColor = value
+	}
+}
+
+class PubicHairStyleList extends List {
+	constructor() {
+		const pairs = [
+			["no default setting"],
+			["waxed"],
+			["in a strip"],
+			["neat"],
+			["bushy"],
+			["bushy in the front and neat in the rear"],
+			["very bushy"]
+		]
+		super("Pubic hairstyle", pairs)
+		this.setValue(V.currentRule.set.pubicHStyle)
+		this.onchange = (value) => V.currentRule.set.pubicHStyle = value
+	}
+}
+
+class ArmpitHairColourList extends List {
+	constructor() {
+		const pairs = [
+			["no default setting"],
+			["blonde"],
+			["golden"],
+			["platinum blonde"],
+			["strawberry-blonde"],
+			["copper"],
+			["ginger"],
+			["red"],
+			["green"],
+			["blue"],
+			["pink"],
+			["dark brown"],
+			["brown"],
+			["auburn"],
+			["burgundry"],
+			["chocolate"],
+			["chestnut"],
+			["hazel"],
+			["black"],
+			["grey"],
+			["silver"],
+			["white"]
+		]
+		super("Underarm hair color, when present", pairs)
+		this.setValue(V.currentRule.set.underArmHColor)
+		this.onchange = (value) => V.currentRule.set.underArmHColor = value
+	}
+}
+
+class ArmpitHairStyleList extends List {
+	constructor() {
+		const pairs = [
+			["no default setting"],
+			["waxed"],
+			["shaved"],
+			["neat"],
+			["bushy"]
+		]
+		super("Underarm hair style", pairs)
+		this.setValue(V.currentRule.set.underArmHStyle)
+		this.onchange = (value) => V.currentRule.set.underArmHStyle = value
+	}
+}
+
+class EarPiecingList extends List {
+	constructor() {
+		const pairs = [
+			["No default setting", "no default setting"],
+			["None", 0],
+			["Light", 1],
+			["Heavy", 2]
+		]
+		super("Ear piercings", pairs)
+		this.setValue(V.currentRule.set.earPiercing)
+		this.onchange = (value) => V.currentRule.set.earPiercing
+	}
+}
+
+class NosePiercingList extends List {
+	constructor() {
+		const pairs = [
+			["No default setting", "no default setting"],
+			["None", 0],
+			["Light", 1],
+			["Heavy", 2]
+		]
+		super("Nasal piercings", pairs)
+		this.setValue(V.currentRule.set.nosePiercing)
+		this.onchange = (value) => V.currentRule.set.earPiercing
+	}
+}
+
+class EyebrowPiercingList extends List {
+	constructor() {
+		const pairs = [
+			["No default setting", "no default setting"],
+			["None", 0],
+			["Light", 1],
+			["Heavy", 2]
+		]
+		super("Eyebrow piercings", pairs)
+		this.setValue(V.currentRule.set.eyebrowPiercing)
+		this.onchange = (value) => V.currentRule.set.eyebrowPiercing
+	}
+}
+
+class NavelPiercingList extends List {
+	constructor() {
+		const pairs = [
+			["No default setting", "no default setting"],
+			["None", 0],
+			["Light", 1],
+			["Heavy", 2]
+		]
+		super("Navel piercings", pairs)
+		this.setValue(V.currentRule.set.navelPiercing)
+		this.onchange = (value) => V.currentRule.set.navelPiercing
+	}
+}
+
+class NipplePiercingList extends List {
+	constructor() {
+		const pairs = [
+			["No default setting", "no default setting"],
+			["None", 0],
+			["Light", 1],
+			["Heavy", 2]
+		]
+		super("Nipple piercings", pairs)
+		this.setValue(V.currentRule.set.nipplesPiercing)
+		this.onchange = (value) => V.currentRule.set.nipplesPiercing
+	}
+}
+
+class AreolaPiercingList extends List {
+	constructor() {
+		const pairs = [
+			["No default setting", "no default setting"],
+			["None", 0],
+			["Studded", 1]
+		]
+		super("Areola studs", pairs)
+		this.setValue(V.currentRule.set.areolaePiercing)
+		this.onchange = (value) => V.currentRule.set.areolaePiercing
+	}
+}
+
+class LipPiercingList extends List {
+	constructor() {
+		const pairs = [
+			["No default setting", "no default setting"],
+			["None", 0],
+			["Light", 1],
+			["Heavy", 2]
+		]
+		super("Lip piercings", pairs)
+		this.setValue(V.currentRule.set.lipsPiercing)
+		this.onchange = (value) => V.currentRule.set.lipsPiercing
+	}
+}
+
+class TonguePiercingList extends List {
+	constructor() {
+		const pairs = [
+			["No default setting", "no default setting"],
+			["None", 0],
+			["Light", 1],
+			["Heavy", 2]
+		]
+		super("Tongue piercing", pairs)
+		this.setValue(V.currentRule.set.tonguePiercing)
+		this.onchange = (value) => V.currentRule.set.tonguePiercing
+	}
+}
+
+class CliptPiercingList extends List {
+	constructor() {
+		const pairs = [
+			["No default setting", "no default setting"],
+			["None", 0],
+			["Light", 1],
+			["Heavy", 2],
+			["Smart (expensive)", 3]
+		]
+		super("Clit piercing", pairs)
+		this.setValue(V.currentRule.set.clitPiercing)
+		this.onchange = (value) => V.currentRule.set.clitPiercing
+	}
+}
+
+class LabiaPiercingList extends List {
+	constructor() {
+		const pairs = [
+			["No default setting", "no default setting"],
+			["None", 0],
+			["Light", 1],
+			["Heavy", 2]
+		]
+		super("Pussylips piercings", pairs)
+		this.setValue(V.currentRule.set.vaginaPiercing)
+		this.onchange = (value) => V.currentRule.set.vaginaPiercing
+	}
+}
+
+class ShaftPiercingList extends List {
+	constructor() {
+		const pairs = [
+			["No default setting", "no default setting"],
+			["None", 0],
+			["Light", 1],
+			["Heavy", 2]
+		]
+		super("Shaft piercings", pairs)
+		this.setValue(V.currentRule.set.dickPiercing)
+		this.onchange = (value) => V.currentRule.set.dickPiercing
+	}
+}
+
+class PerineumPiercingList extends List {
+	constructor() {
+		const pairs = [
+			["No default setting", "no default setting"],
+			["None", 0],
+			["Light", 1],
+			["Heavy", 2]
+		]
+		super("Perianal piercings", pairs)
+		this.setValue(V.currentRule.set.anusPiercing)
+		this.onchange = (value) => V.currentRule.set.anusPiercing
+	}
+}
+
+class CorsetPiercingList extends List {
+	constructor() {
+		const pairs = [
+			["No default setting", "no default setting"],
+			["None", 0],
+			["Apply", 1]
+		]
+		super("Corset piercings", pairs)
+		this.setValue(V.currentRule.set.corsetPiercing)
+		this.onchange = (value) => V.currentRule.set.corsetPiercing
+	}
+}
+
+class AutoBrandingList exnteds List {
+	constructor() {
+		const pairs = [
+			["Activate", 1],
+			["Off", 0],
+		]
+		super("Automatic branding", pairs)
+		this.setValue(V.currentRule.set.autoBrand)
+		this.onchange = (value) => V.currentRule.set.autoBrand = value
+	}
+}
+
+class BrandingLocationList extends List {
+	constructor() {
+		super("Your preferred location for brands is", [])
+
+		const ears = new ListSubSection("Ears", [
+			["Left", "left ear"],
+			["Right", "right ear"],
+			["Both", "ears"]
+		])
+		this.appendChild(ears)
+
+		const cheeks = new ListSubSection("Cheeks", [
+			["Left", "left cheek"],
+			["Right", "right cheek"],
+			["Both", "cheeks"]
+		])
 			this.appendChild(cheeks)
 
 			const shoulders = new ListSubSection("Shoulders", [
@@ -2491,4 +2505,417 @@ window.rulesAssistantOptions = (function() {
 			super("Your brand design is", items, true)
 		}
 	}
+
+	class FaceTattooList extends List {
+		constructor() {
+			const items = [
+				["no default setting"],
+				["none", 0]
+				["tribal patterns"],
+				["flowers"],
+				["counting"],
+				["advertisements"],
+				["rude words"],
+				["degradation"],
+				["bovine patterns"],
+				["Asian art"],
+				["permanent makeup"],
+				["sacrament"],
+				["sacrilege"],
+				["possessive"],
+				["paternalist"]
+			]
+			super("Facial tattoos", items)
+			this.selectValue(V.currentRule.set.lipsTat)
+			this.onchange = (value) => V.currentRule.set.lipsTat = value
+		}
+	}
+	
+	class ShoulderTattooList extends List {
+		constructor() {
+			const items = [
+				["no default setting"],
+				["none", 0]
+				["tribal patterns"],
+				["flowers"],
+				["counting"],
+				["advertisements"],
+				["rude words"],
+				["degradation"],
+				["bovine patterns"],
+				["Asian art"],
+				["scenes"],
+				["sacrament"],
+				["sacrilege"],
+				["possessive"],
+				["paternalist"]
+			]
+			super("Shoulder tattoos", items)
+			this.selectValue(V.currentRule.set.shouldersTat)
+			this.onchange = (value) => V.currentRule.set.shouldersTat = value
+		}
+	}
+
+	class ChestTattooList extends List {
+		constructor() {
+			const items = [
+				["no default setting"],
+				["none", 0]
+				["tribal patterns"],
+				["flowers"],
+				["counting"],
+				["advertisements"],
+				["rude words"],
+				["degradation"],
+				["bovine patterns"],
+				["Asian art"],
+				["scenes"],
+				["sacrament"],
+				["sacrilege"],
+				["possessive"],
+				["paternalist"]
+			]
+			super("Chest tattoos", items)
+			this.selectValue(V.currentRule.set.boobsTat)
+			this.onchange = (value) => V.currentRule.set.boobsTat = value
+		}
+	}
+
+	class ArmTattooList extends List {
+		constructor() {
+			const items = [
+				["no default setting"],
+				["none", 0]
+				["tribal patterns"],
+				["flowers"],
+				["counting"],
+				["advertisements"],
+				["rude words"],
+				["degradation"],
+				["bovine patterns"],
+				["Asian art"],
+				["scenes"],
+				["sacrament"],
+				["sacrilege"],
+				["possessive"],
+				["paternalist"]
+			]
+			super("Arm tattoos", items)
+			this.selectValue(V.currentRule.set.armsTat)
+			this.onchange = (value) => V.currentRule.set.armsTat = value
+		}
+	}
+
+	class UpperBackTattooList extends List {
+		constructor() {
+			const items = [
+				["no default setting"],
+				["none", 0]
+				["tribal patterns"],
+				["flowers"],
+				["counting"],
+				["advertisements"],
+				["rude words"],
+				["degradation"],
+				["bovine patterns"],
+				["Asian art"],
+				["scenes"],
+				["sacrament"],
+				["sacrilege"],
+				["possessive"],
+				["paternalist"]
+			]
+			super("Upper back tattoos", items)
+			this.selectValue(V.currentRule.set.backTat)
+			this.onchange = (value) => V.currentRule.set.backTat = value
+		}
+	}
+
+	class LowerBackTattooList extends List {
+		constructor() {
+			const items = [
+				["no default setting"],
+				["none", 0]
+				["tribal patterns"],
+				["flowers"],
+				["counting"],
+				["advertisements"],
+				["rude words"],
+				["degradation"],
+				["bovine patterns"],
+				["Asian art"],
+				["scenes"],
+				["sacrament"],
+				["sacrilege"],
+				["possessive"],
+				["paternalist"]
+			]
+			super("Lower back tattoos", items)
+			this.selectValue(V.currentRule.set.stampTat)
+			this.onchange = (value) => V.currentRule.set.stampTat = value
+		}
+	}
+
+	class AbdomenTattooList extends List {
+		constructor() {
+			const items = [
+				["no default setting"],
+				["none", 0]
+				["tribal patterns"],
+				["flowers"],
+				["counting"],
+				["advertisements"],
+				["rude words"],
+				["degradation"],
+				["bovine patterns"],
+				["Asian art"],
+				["scenes"],
+				["sacrament"],
+				["sacrilege"],
+				["possessive"],
+				["paternalist"]
+			]
+			super("Abdomen tattoos", items)
+			this.selectValue(V.currentRule.set.vaginaTat)
+			this.onchange = (value) => V.currentRule.set.vaginaTat = value
+		}
+	}
+
+	class DickTattooList extends List {
+		constructor() {
+			const items = [
+				["no default setting"],
+				["none", 0]
+				["tribal patterns"],
+				["flowers"],
+				["counting"],
+				["advertisements"],
+				["rude words"],
+				["degradation"],
+				["bovine patterns"],
+				["Asian art"],
+				["sacrament"],
+				["sacrilege"],
+				["possessive"],
+				["paternalist"]
+			]
+			super("Dick tattoos", items)
+			this.selectValue(V.currentRule.set.dickTat)
+			this.onchange = (value) => V.currentRule.set.dickTat = value
+		}
+	}
+
+	class ButtockTattooList extends List {
+		constructor() {
+			const items = [
+				["no default setting"],
+				["none", 0]
+				["tribal patterns"],
+				["flowers"],
+				["counting"],
+				["advertisements"],
+				["rude words"],
+				["degradation"],
+				["bovine patterns"],
+				["Asian art"],
+				["scenes"],
+				["sacrament"],
+				["sacrilege"],
+				["possessive"],
+				["paternalist"]
+			]
+			super("Buttock tattoos", items)
+			this.selectValue(V.currentRule.set.buttTat)
+			this.onchange = (value) => V.currentRule.set.buttTat = value
+		}
+	}
+
+	class AnalTattooList extends List {
+		constructor() {
+			const items = [
+				["no default setting"],
+				["none", 0]
+				["tribal patterns"],
+				["flowers"],
+				["counting"],
+				["advertisements"],
+				["rude words"],
+				["degradation"],
+				["bovine patterns"],
+				["bleached"]
+				["sacrament"],
+				["sacrilege"],
+				["possessive"],
+				["paternalist"]
+			]
+			super("Anal tattoo or bleaching", items)
+			this.selectValue(V.currentRule.set.anusTat)
+			this.onchange = (value) => V.currentRule.set.anusTat = value
+		}
+	}
+
+	class LegTattooList extends List {
+		constructor() {
+			const items = [
+				["no default setting"],
+				["none", 0]
+				["tribal patterns"],
+				["flowers"],
+				["counting"],
+				["advertisements"],
+				["rude words"],
+				["degradation"],
+				["bovine patterns"],
+				["Asian art"],
+				["scenes"],
+				["sacrament"],
+				["sacrilege"],
+				["possessive"],
+				["paternalist"]
+			]
+			super("Leg tattoos", items)
+			this.selectValue(V.currentRule.set.legsTat)
+			this.onchange = (value) => V.currentRule.set.legsTat = value
+		}
+	}
+
+	class VisionSurgeryList extends List {
+		constructor() {
+			const items = [
+				["no default setting"],
+				["fixed", 1],
+				["blurred", -1]
+			]
+			super("Vision correction", items)
+			this.selectValue(V.currentRule.set.surgery_eyes)
+			this.onchange = (value) => V.currentRule.set.surgery_eyes = value
+		}
+	}
+
+	class LactationSurgeryList extends List {
+		constructor() {
+			const items = [
+				["no default setting"],
+				["implanted", 1],
+				["removed", 0]
+			]
+			super("Lactation drug implants", items)
+			this.selectValue(V.currentRule.set.surgery_lactation)
+			this.onchange = (value) => V.currentRule.set.surgery_lactation = value
+		}
+	}
+
+	class SemenSurgeryList extends List {
+		constructor() {
+			const items = [
+				["no default setting"],
+				["implanted", 1],
+				["removed", 0]
+			]
+			super("Prostate production enhancing drug implants", items)
+			this.selectValue(V.currentRule.set.surgery_prostate)
+			this.onchange = (value) => V.currentRule.set.surgery_prostate = value
+		}
+	}
+
+	class CosmeticSurgeryList extends List {
+		constructor() {
+			const items = [
+				["none", 0],
+				["subtle", 1],
+				["invasive", 2]
+			]
+			super("Cosmetic Surgery", items)
+			this.selectValue(V.currentRule.set.surgery_cosmetic)
+			this.onchange = (value) => V.currentRule.set.surgery_cosmetic = value
+		}
+	}
+
+	class LipSurgeryList extends List {
+		constructor() {
+			const items = [
+				["no default setting"],
+				["removed", 0],
+				["plush", 20],
+				["big", 40],
+				["huge", 70],
+				["facepussy", 95]
+			]
+			super("Lip implants", items)
+			this.selectValue(V.currentRule.set.surgery_lips)
+			this.onchange = (value) => V.currentRule.set.surgery_lips = value
+		}
+	}
+
+	class ButtSurgeryList extends List {
+		constructor() {
+			const items = [
+				["no default setting"],
+				["removed", 0]
+				["slim", 2],
+				["stacked", 4],
+				["huge", 6],
+				["maximised", 9]
+			]
+			super("Buttock implants", items)
+			this.selectValue(V.currentRule.set.surgery_butt)
+			this.onchange = (value) => V.currentRule.set.surgery_butt = value
+		}
+	}
+
+	class BreastSurgeryList extends List {
+		constructor() {
+			const items = [
+				["no default setting"],
+				["removed", 0]
+				["slim", 400],
+				["stacked", 1000],
+				["huge", 2000],
+				["barely functional", 9000],
+				["maximised", 48000]
+			]
+			super("Breast implants", items)
+			this.selectValue(V.currentRule.set.surgery_boobs)
+			this.onchange = (value) => V.currentRule.set.surgery_boobs = value
+		}
+	}
+
+	class TighteningSurgeryList extends List {
+		constructor() {
+			const items = [
+				["no default setting"],
+				["tightening", 1]
+				["virginity restoration", 2]
+			]
+			super("Orifice Tightening", items)
+			this.selectValue(V.currentRule.set.surgery_holes)
+			this.onchange = (value) => V.currentRule.set.surgery_holes = value
+		}
+	}
+
+	class BodyHairSurgeryList extends List {
+		constructor() {
+			const items = [
+				["no default setting"],
+				["keep", 1]
+				["removal", 2]
+			]
+			super("Orifice Tightening", items)
+			this.selectValue(V.currentRule.set.surgery_bodyhair)
+			this.onchange = (value) => V.currentRule.set.surgery_bodyhair = value
+		}
+	}
+
+	class HairSurgeryList extends List {
+		constructor() {
+			const items = [
+				["no default setting"],
+				["keep", 1]
+				["removal", 2]
+			]
+			super("Orifice Tightening", items)
+			this.selectValue(V.currentRule.set.surgery_hair)
+			this.onchange = (value) => V.currentRule.set.surgery_hair = value
+		}
+	}
 })()