diff --git a/src/events/intro/introSummary.tw b/src/events/intro/introSummary.tw
index c9f61b17f7e5f7bfb9f5143d32e92870cb286d02..2140ef648506768ff44e43fc0e0389daa1706434 100644
--- a/src/events/intro/introSummary.tw
+++ b/src/events/intro/introSummary.tw
@@ -107,146 +107,78 @@ You may review your settings before clicking "Continue" to begin.<br>
 <div id="UI" class="tabcontent">
 	<div class="content">
 
-	<<options $seeImages>>
-		Displaying images is currently:
-		<<option 1 "Enable">>
-			''Enabled''.
-		<<option 0 "Disable">>
-			''Disabled''.
-	<</options>>
-
-	<<set _exampleSlave = BaseSlave()>>
-	<<if $seeImages == 1>>
-		<<options $imageChoice>>
-			Using
-			<<option 0 "Rendered">>
-				''Rendered imagepack by Shokushu''.
-			<<option 1 "Vector — embedded">>
-				''Vector art by NoX/Deepmurk — embedded''.
-				<br><span class="red">Git compiled only, no exceptions.</span>
-			<<option 2 "Vector — non-embedded">>
-				''Vector art by NoX/Deepmurk — non-embedded''.
-			<<option 3 "Vector revamp">>
-				''Vector art revamp''.
-				<br><span class="red">Git compiled only, no exceptions.</span>
-			<<comment>>
-				"Vector — embedded" is the most up to date and supports the most content. Ironically, revamp has not been touched in a long time.
-		<</options>>
-		<<if $imageChoice == 1>>
-			<div style="position:relative;width:200px;height:200px;margin:0 auto;">
-				<<= SlaveArt(_exampleSlave, 0, 0)>>
-			</div>
-			<<options $seeFaces>>
-				Face art
-				<<option 1 "Enable">>
-					@@.cyan;ENABLED.@@
-				<<option 0 "Disable">>
-					@@.red;DISABLED.@@
-			<</options>>
-
-			<<options $seeVectorArtHighlights>>
-				Highlights on shiny clothing
-				<<option 1 "Enable">>
-					@@.cyan;ENABLED.@@
-				<<option 0 "Disable">>
-					@@.red;DISABLED.@@
-			<</options>>
-
-			<<options $seeHeight>>
-				Height scaling
-				<<option 2 "Enable for all images">>
-					@@.cyan;ENABLED@@ on all images.
-				<<option 1 "Enable only for small images">>
-					@@.yellow;ENABLED@@ on small images.
-				<<option 0 "Disable">>
-					@@.red;DISABLED.@@
-			<</options>>
-		<<elseif $imageChoice == 2>>
-			<div style="position:relative;width:200px;height:200px;margin:0 auto;">
-				<<= SlaveArt(_exampleSlave, 0, 0)>>
-			</div>
-		<<elseif $imageChoice == 3>>
-			<div style="position:relative;width:200px;height:200px;margin:0 auto;">
-				<<= SlaveArt(_exampleSlave, 0, 0)>>
-			</div>
-			<<options $seeVectorArtHighlights>>
-				Highlights on shiny clothing
-				<<option 1 "Enable">>
-					@@.cyan;ENABLED.@@
-				<<option 0 "Disable">>
-					@@.red;DISABLED.@@
-			<</options>>
-		<<elseif $imageChoice == 0>>
-			<div style="width:200px; height:200px; margin: auto; position: relative;">
-				You need to <a href="https://mega.nz/#!upoAlBaZ!EbZ5wCixxZxBhMN_ireJTXt0SIPOywO2JW9XzTIPhe0">download the image pack</a>
-				and put the 'renders' folder into the resources/ folder where this
-				html file is.
-				<img src="resources/renders/female big soft obedient.png"
-				title="Example image" alt="Failed to load image"
-			style="position:absolute;top:0;left:0;width:100%;background:#111;color:red;">
-			</div>
-			<<options $seeMainFetishes>>
-				Slave summary fetish images
-				<<option 1 "Enable">>
-					''enabled''.
-				<<option 0 "Disable">>
-					''disabled''.
-			<</options>>
-		<</if>>
+	<<set _options = new App.UI.OptionsGroup()>>
 
-		<<options $seeAvatar>>
-			PA avatar images are
-			<<option 1 "Enable">>
-				''enabled''.
-			<<option 0 "Disable">>
-				''disabled''.
-		<</options>>
+	<<run _options.addOption("Help tooltips are", "tooltipsEnabled")
+	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()
+	.addComment("This is mostly for new players. @@.exampleTooltip.noteworthy;Colored text@@ can have tooltips.")>>
 
-		<<options $seeSummaryImages>>
-			Slave images in lists are
-			<<option 1 "Enable">>
-				''enabled''.
-			<<option 0 "Disable">>
-				''disabled''.
-		<</options>>
+	<<run _options.addOption("Accordion effects on weekly reports are", "useAccordion")
+	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
 
-		<<options $seeReportImages>>
-			Slave images in the weekly report are
-			<<option 1 "Enable">>
-				''enabled''.
-			<<option 0 "Disable">>
-				''disabled''.
-		<</options>>
-	<</if>>
+	<<run _options.addOption("Economic Tabs on weekly reports are", "useTabs")
+	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
+	
+	<<print App.UI.DOM.includeDOM(_options.render())>>
+
+	<h2>Images</h2>
+	<<set _options = new App.UI.OptionsGroup()>>
+
+	<<run _options.addOption("Images are", "seeImages")
+	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
+	
+	<<print App.UI.DOM.includeDOM(_options.render())>>
+
+	<<if $seeImages > 0>>
+		<div class="imageRef" style="width:200px;height:200px;margin-left:50px;">
+			<<= SlaveArt(BaseSlave(), 0, 0)>>
+		</div>
 
-	<<options $tooltipsEnabled>>
-		Help tooltips are
-		<<option 1 "Enable">>
-		@@.cyan;ENABLED.@@
-		<<option 0 "Disable">>
-		@@.red;DISABLED.@@
-		<<comment>>
-		This is mostly for new players. @@.exampleTooltip.noteworthy;Colored text@@ can have tooltips.
-	<</options>>
-
-	/* Accordion 000-250-006 */
-	<<options $useAccordion>>
-		Accordion effects on weekly reports are
-		<<option 1 "Enable">>
-			@@.cyan;ENABLED.@@
-		<<option 0 "Disable">>
-			@@.red;DISABLED.@@
-	<</options>>
-	/* Accordion 000-250-006 */
-
-	<<options $useTabs>>
-		Economic Tabs on weekly reports are
-		<<option 1 "Enable">>
-			@@.cyan;ENABLED.@@
-		<<option 0 "Disable">>
-			@@.red;DISABLED.@@
-	<</options>>
+		<<set _options = new App.UI.OptionsGroup()>>
 
+		<<run _options.addOption("", "imageChoice")
+		.addValueList([["Revamped embedded vector art", 3], ["Non-embedded vector art", 2], ["NoX/Deepmurk's vector art", 1], ["Shokushu's rendered imagepack", 0]])>>
+
+		<<if $imageChoice === 1>>
+			<<run _options.addOption("").addComment('<span class="warning">Git compiled only, no exceptions.</span>')>>
+
+			<<run _options.addOption("Face artwork is", "seeFaces")
+			.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
+
+			<<run _options.addOption("Highlights on shiny clothing are", "seeVectorArtHighlights")
+			.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
+
+			<<run _options.addOption("Height scaling", "seeHeight")
+			.addValue("All images", 2).on().addValue("Small images", 1).neutral().addValue("Disabled", 0).off()>>
+
+			<<run _options.addOption("Clothing erection bulges are", "showClothingErection")
+			.addValue("Enabled", true).on().addValue("Disabled", false).off()>>
+		<<elseif $imageChoice === 0>>
+			<<run _options.addOption("").addComment(`You need """to"""
+				<a href="https://mega.nz/#!upoAlBaZ!EbZ5wCixxZxBhMN_ireJTXt0SIPOywO2JW9XzTIPhe0">download the image pack</a>
+				"""and""" put the 'renders' folder into the resources/ folder where this html file is.`
+			)>>
+
+			<<run _options.addOption("Slave summary fetish images are", "seeMainFetishes")
+			.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
+		<<elseif $imageChoice === 3>>
+			<<run _options.addOption("").addComment('<span class="warning">Git compiled only, no exceptions.</span>')>>
+
+			<<run _options.addOption("Clothing erection bulges are", "showClothingErection")
+			.addValue("Enabled", true).on().addValue("Disabled", false).off()>>
+		<</if>>
+
+		<<run _options.addOption("PA avatar art is", "seeAvatar")
+		.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
+
+		<<run _options.addOption("Slave images in lists are", "seeSummaryImages")
+		.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
+
+		<<run _options.addOption("Slave images in the weekly report are", "seeReportImages")
+		.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
+		
+		<<print App.UI.DOM.includeDOM(_options.render())>>
+	<</if>>
 	</div>
 </div>
 
@@ -448,641 +380,300 @@ You may review your settings before clicking "Continue" to begin.<br>
 <div id="slaves" class="tabcontent">
 	<div class="content">
 
-	<<options $verboseDescriptions>>
-		<<option 1 "Enable">>
-			Your master suite ''will'' detail slave changes.
-		<<option 0 "Disable">>
-			Your master suite ''will not'' detail slave changes.
-	<</options>>
-
-	<<options $newDescriptions>>
-		<<option 1 "Enable">>
-			Slaves ''will'' have alternate titles.
-		<<option 0 "Disable">>
-			Slaves ''will not'' have alternate titles.
-	<</options>>
-
-	<<options $seeRace>>
-		<<option 1 "Enable mentions of race">>
-			Ethnicity will ''occasionally'' be mentioned.
-		<<option 0 "Disable most mentions of race">>
-			Ethnicity will ''almost never'' be mentioned.
-	<</options>>
-
-	<<options $seeNationality>>
-		<<option 1 "Enable mentions of nationality">>
-			Nationality will ''occasionally'' be mentioned.
-		<<option 0 "Disable most mentions of nationality">>
-			Nationality will ''almost never'' be mentioned.
-	<</options>>
-
-	<<options $realRoyalties>>
-		<<option 1 "Historical dynasties">>
-			When enslaving Royalty, they will have nationalities and surnames of the real royalties.
-		<<option 0 "Random dynasties">>
-			When enslaving Royalty, their nationalities and surnames will be random.
-	<</options>>
-
-	<<options $allowMaleSlaveNames>>
-		<<option false "Only use female names">>
-			Slaves will ''always generate with female names''.
-		<<option true "Allow male names">>
-			Slaves ''can generate with male names''.
-			<<comment>>
-				This only affects slave generation and not your ability to name your slaves.
-	<</options>>
-
-	<<options $surnameOrder>>
-		<<option 0 "Allow nationality name order">>
-			Order names ''based on country of origin''.
-		<<option 1 "Force name surname">>
-			Names will always be ''Name Surname''.
-		<<option 2 "Force surname name">>
-			Names will always be ''Surname Name''.
-	<</options>>
-
-	<<options $limitFamilies>>
-		<<option 1 "Restrict family size">>
-			Vanilla emulation.
-		<<option 0 "Allow extended families">>
-			Extended family mode.
-		<<comment>>
-			Controls acquisition of additional relatives, by means other than birth, for slaves with families.
-	<</options>>
-
-	<<options $showDistantRelatives>>
-		<<option 1 "Enable distant relatives">>
-			Distant relatives ''will'' be tracked.
-		<<option 0 "Disable distant relatives">>
-			Distant relatives ''will not'' be tracked.
-	<</options>>
-
-	<<options $inbreeding>>
-		<<option 1 "Enable inbreeding damage">>
-			Successive breeding ''will'' result in sub-average slaves.
-		<<option 0 "Disable inbreeding damage">>
-			Successive breeding ''will not'' result in sub-average slaves.
-	<</options>>
-
-	<<options $allowFamilyTitles>>
-		<<option 1 "Enable family titles">>
-			Your relatives ''will'' use family titles.
-		<<option 0 "Disable family titles">>
-			Your relatives ''will not'' use family titles.
-	<</options>>
-
-	<<options $weightAffectsAssets>>
-		<<option 1 "Enable">>
-			Interactions between slaves' weight and asset size are ''enabled''.
-		<<option 0 "Disable">>
-			Interactions between slaves' weight and asset size are ''disabled''.
-	<</options>>
-
-	<<options $curativeSideEffects>>
-		<<option 1 "Enable">>
-			Curative side effects are ''enabled''.
-		<<option 0 "Disable">>
-			Curative side effects are ''disabled''.
-	<</options>>
-
- /% Begin mod section: toggle whether slaves lisp. %/
-
-	<<options $disableLisping>>
-		<<option 0 "Enable Lisping">>
-			Lisping: ''slaves with fat lips or heavy oral piercings will lisp''.
-		<<option 1 "Disable Lisping">>
-			Lisping: ''slaves will not lisp''.
-	<</options>>
-
-	/% End mod section: toggle whether slaves lisp. %/
-
-	<h2 align="center">Age</h2>
-	<<options $seeAge>>
-		<<option 1 "Enable aging">>
-			Slaves will ''age naturally.''
-		<<option 2 "Semi aging">>
-			Slaves ''will'' celebrate birthdays, but ''not age.''
-		<<option 0 "Disable aging">>
-			Slaves will ''not age,'' and not experience birthdays.
-		<<comment>>
-			This option cannot be changed during the game.
-	<</options>>
-
-	<<options $pedo_mode>>
-		<<option 1 "Loli mode" "$minimumSlaveAge = 5">>
-			Nearly all randomly generated slaves will be under the age of 18, although custom slaves and slaves related to specific events may be older.
-		<<option 0 "Normal mode">>
-			Randomly generated slaves will generate normally.
-	<</options>>
-
-	<<if $minimumSlaveAge < 3>>
-		<<set $minimumSlaveAge = 3>>
-	<<elseif $minimumSlaveAge < 18>>
-		/% OK %/
-	<<else>>
-		/% Either out of range or not a number. %/
-		<<set $minimumSlaveAge = 18>>
-	<</if>>
-	<<options>>
-		Girls appearing in the game will be no younger than:
-		<<option>>
-			<<textbox2 "$minimumSlaveAge" $minimumSlaveAge "Intro Summary">>
-	<</options>>
-
-	<<options $extremeUnderage>>
-		<<option 1 "Allow">>
-			Molestation of slaves younger than $minimumSlaveAge is ''permitted''.
-		<<option 0 "Deny">>
-			Molestation of slaves younger than $minimumSlaveAge is ''forbidden''.
-	<</options>>
-
-	<<if $retirementAge <= $minimumSlaveAge>>
-		<<set $retirementAge = $minimumSlaveAge+1>>
-	<<elseif $retirementAge <= 120>>
-		/% OK %/
-	<<else>>
-		/% Either out of range or not a number. %/
-		<<set $retirementAge = 45>>
-	<</if>>
-	<<options>>
-		Initial retirement age will be at:
-		<<option>>
-			<<textbox2 "$retirementAge" $retirementAge "Intro Summary">>
-		<<comment>>
-			May cause issues with New Game and initial slaves if set below 45.
-	<</options>>
-
-	<<if $fertilityAge < 3>>
-		<<set $fertilityAge = 3>>
-	<<elseif $fertilityAge < 18>>
-		/% OK %/
-	<<else>>
-		/% Either out of range or not a number. %/
-		<<set $fertilityAge = 18>>
-	<</if>>
-	<<options>>
-		Girls will not be able to become pregnant if their age is under:
-		<<option>>
-			<<textbox2 "$fertilityAge" $fertilityAge "Intro Summary">>
-	<</options>>
-
-	<<if $potencyAge < 3>>
-		<<set $potencyAge = 3>>
-	<<elseif $potencyAge < 18>>
-		/% OK %/
-	<<else>>
-		/% Either out of range or not a number. %/
-		<<set $potencyAge = 18>>
-	<</if>>
-	<<options>>
-		Girls will not be able to impregnate others if their age is under:
-		<<option>>
-			<<textbox2 "$potencyAge" $potencyAge "Intro Summary">>
-	<</options>>
-
-	<<options $precociousPuberty>>
-		<<option 1 "Enable precocious puberty">>
-			Girls ''can'' experience precocious puberty. (Under certain conditions they can become pregnant or inseminate others younger then normal age - $fertilityAge, though they may also experience delayed puberty).
-		<<option 0 "Disable precocious puberty">>
-			Girls ''cannot'' experience precocious puberty. (Unable to become pregnant or inseminate others younger than normal puberty age - $fertilityAge).
-	<</options>>
-
-	<<options $AgePenalty>>
-		<<option 1 "Enable age penalties">>
-			Girls ''will'' receive job and career penalties due to age.
-		<<option 0 "Disable age penalties">>
-			Girls ''will not'' receive job and career penalties due to age.
-	<</options>>
-
-	<<options $loliGrow>>
-		<<option 1 "Enable Growth">>
-			Children ''will'' grow as they age.
-		<<option 0 "Disable Growth">>
-			Children ''will not'' grow as they age.
-	<</options>>
+	<<set _options = new App.UI.OptionsGroup()>>
+
+	<<run _options.addOption("Master Suite report details such as slave changes are", "verboseDescriptions")
+	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
+
+	<<run _options.addOption("Slaves can have alternate titles", "newDescriptions")
+	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
+
+	<<run _options.addOption("Mention ethnicity", "seeRace")
+	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
+
+	<<run _options.addOption("Mention ethnicity", "seeNationality")
+	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
+
+	<<run _options.addOption("Dynasties of enslaved royalities are", "realRoyalties")
+	.addValueList([["Historical", 1], ["Random", 0]])>>
+
+	<<run _options.addOption("New slaves may have male names", "allowMaleSlaveNames").addComment("This only affects slave generation and not your ability to name your slaves.")
+	.addValue("Enabled", true).on().addValue("Disabled", false).off()>>
+
+	<<run _options.addOption("Schema for ordering slave names is", "surnameOrder")
+	.addValueList([["Country of origin", 0], ["Name Surname", 1], ["Surname Name", 2]])>>
+
+	<<run _options.addOption("Family size", "limitFamilies").addComment("Controls acquisition of additional relatives, by means other than birth, for slaves with families.")
+	.addValue("Allow extended families", 0).on().addValue("Restrict family size (Vanilla Emulation)", 1).off()>>
+
+	<<run _options.addOption("Tracking distant relatives is", "showDistantRelatives")
+	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
+
+	<<run _options.addOption("Successive breeding resulting in sub-average slaves is", "inbreeding")
+	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
+
+	<<run _options.addOption("Family titles for relatives", "allowFamilyTitles")
+	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
+
+	<<run _options.addOption("Slave assets affected by weight is", "weightAffectsAssets")
+	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()
+	.addComment("Diet will still affect asset size.")>>
+
+	<<run _options.addOption("Curative side effects are", "curativeSideEffects")
+	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
+
+	<<run _options.addOption("Slaves with fat lips or heavy oral piercings may lisp", "disableLisping")
+	.addValue("Yes", 0).on().addValue("No", 1).off()>>
+
+	<<print App.UI.DOM.includeDOM(_options.render())>>
+
+	<h2>Age</h2>
+	<<set _options = new App.UI.OptionsGroup()>>
+
+	<<run _options.addOption("Slave aging", "seeAge")
+	.addValue("Enabled", 1).on().addValue("Celebrate birthdays, but don't age.", 2).neutral().addValue("Disabled", 0).off()>>
+
+	<<run _options.addOption("Slave age distribution", "pedo_mode").addComment("In loli mode most new slaves are under the age of 18. May not apply to custom slaves and slaves from specific events.")
+	.addValue("Loli mode", 1, () => V.minimumSlaveAge = 5).addValue("Normal mode", 0)>>
+
+	<<set $minimumSlaveAge = Math.clamp($minimumSlaveAge, 3, 18)>>
+	<<run _options.addOption("Girls appearing in the game will be no younger than", "minimumSlaveAge").showTextBox()>>
+
+	<<run _options.addOption("Molestation of slaves younger than $minimumSlaveAge is", "extremeUnderage")
+	.addValue("Permitted", 1).on().addValue("Forbidden", 0).off()>>
+
+	<<set $retirementAge = Math.clamp($retirementAge, $minimumSlaveAge + 1, 120)>>
+	<<run _options.addOption("Initial retirement age will be at", "retirementAge")
+	.addComment("May cause issues with New Game and initial slaves if set below 45.").showTextBox()>>
+
+	<<set $fertilityAge = Math.clamp($fertilityAge, 3, 18)>>
+	<<run _options.addOption("Girls will not be able to become pregnant if their age is under", "fertilityAge").showTextBox()>>
 
+	<<set $potencyAge = Math.clamp($potencyAge, 3, 18)>>
+	<<run _options.addOption("Girls will not be able to impregnate others if their age is under", "potencyAge").showTextBox()>>
+
+	<<run _options.addOption("Precocious puberty is", "precociousPuberty").addComment("Under certain conditions they can become pregnant or inseminate others younger then normal age - $fertilityAge, though they may also experience delayed puberty.")
+	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
+
+	<<run _options.addOption("Age penalties are", "AgePenalty").addComment("Job and career penalties due to age.")
+	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
+
+	<<run _options.addOption("Children growing as they age is", "loliGrow")
+	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
+
+	<<print App.UI.DOM.includeDOM(_options.render())>>
 	</div>
 </div>
 
 <div id="PC" class="tabcontent">
 	<div class="content">
 
-	<<if $freshPC == 1 || $saveImported == 0>>
-		<<if ndef $PCCreationSex>>
-			<<if $PC.title == 1>>
-				<<set $PCCreationSex = "masculine ''Master''">>
-			<<else>>
-				<<set $PCCreationSex = "feminine ''Mistress''">>
-			<</if>>
-		<</if>>
-
-		<<options $PC.title>>
-			You are a $PCCreationSex. Change to:
-			<<option 1 "Masculine Master" "$PC.genes = 'XY', $PCCreationSex = \"masculine ''Master''\"">>
-			<<option 0 "Feminine Mistress" "$PC.genes = 'XX', $PCCreationSex = \"feminine ''Mistress''\"">>
-		<</options>>
+	<<set _options = new App.UI.OptionsGroup()>>
 
-		<div style="display:flex">
-			<span style="flex:50%; text-align:right">
-				Everyone calls you ''<<= PlayerName()>>.''
-			</span>
-			<span style="flex:50%">
-			</span>
-		</div>
+	<<if $freshPC == 1 || $saveImported == 0>>
+		<<run _options.addOption("You are a", "title", $PC)
+		.addValue("Masculine Master", 1, () => V.PC.genes = "XY").addValue("Feminine Mistress", 0, () => V.PC.genes = "XX")>>
 
-		<<options>>
-			&nbsp;&nbsp;With your given name as:
-			<<option>>
-				<<textbox2 "$PC.slaveName" $PC.slaveName>>
-		<</options>>
+		<<run _options.addOption("Everyone calls you ''<<= PlayerName()>>.''")>>
+		<<run _options.addOption("Your given name is", "slaveName", $PC).showTextBox()>>
 
-		<<if $PC.slaveSurname == 0>>
-			<<options $PC.slaveSurname>>
-				&nbsp;&nbsp;And no surname.
-				<<option "Anon" "Add a surname">>
-				<<comment>>
-					Surnames cannot be changed during the game outside of special circumstances.
-			<</options>>
+		<<if $PC.slaveSurname === 0>>
+			<<run _option = _options.addOption("And no surname", "slaveSurname", $PC)
+			.addValue("Add a surname", "Anon")
+			.addComment("Surnames cannot be changed during the game outside of special circumstances.")>>
 		<<else>>
-			<<options $PC.slaveSurname>>
-				&nbsp;&nbsp;And your surname is:
-				<<option>>
-					<<textbox2 "$PC.slaveSurname" $PC.slaveSurname>>
-				<<option 0 "Go by a single name">>
-			<</options>>
+			<<run _option = _options.addOption("And your surname is", "slaveSurname", $PC).showTextBox()
+			.addValue("Go by a single name", 0)
+			.addComment("Surnames cannot be changed during the game outside of special circumstances.")>>
 		<</if>>
 
 		<<set $PC.physicalAge = $PC.actualAge, $PC.visualAge = $PC.actualAge>>
-		<<options>>
-			You are ''$PC.actualAge'' years old which is
-			<<if $PC.actualAge >= 65>>
-				''old''.
-			<<elseif $PC.actualAge >= 50>>
-				''well into middle age''.
-			<<elseif $PC.actualAge >= 35>>
-				''entering middle age''.
-			<<else>>
-				''surprisingly young''.
-			<</if>>
-			<<option>>
-				<<textbox2 "$PC.actualAge" $PC.actualAge "Intro Summary">>
-		<</options>>
+		<<run _options.addOption("You are", "actualAge", $PC).showTextBox()
+		.addRange(25, 35, "<", "Surprisingly young").addRange(40, 50, "<", "Entering middle age")
+		.addRange(55, 65, "<", "Well into middle age").addRange(70, 65, ">=", "Old")>>
 
-		<<options>>
-			Your birthday was ''$PC.birthWeek'' weeks ago.
-			<<option>>
-				<<textbox2 "$PC.birthWeek" $PC.birthWeek "Intro Summary">>
-		<</options>>
+		<<run _options.addOption("Your birthday was ''$PC.birthWeek'' weeks ago.", "birthWeek", $PC).showTextBox()>>
 
-		<<options $playerAging>>
-			<<option 2 "Enable aging">>
-				and you ''age naturally''.
-			<<option 1 "Semi aging">>
-				and you ''will'' celebrate birthdays, but ''not age''.
-			<<option 0 "Disable aging">>
-				and you will ''not age,'' nor experience birthdays.
-			<<comment>>
-				This option cannot be changed during the game
-		<</options>>
+		<<run _options.addOption("Player aging is", "playerAging")
+		.addValue("Enabled", 2).on().addValue("Celebrate birthdays, but don't age.", 1).neutral().addValue("Disabled", 0).off()
+		.addComment("This option cannot be changed during the game.")>>
 
 		<<if def $PC.customTitle>>
-			<<options>>
-				Your custom title is:
-				<<option>>
-					<<textbox2 "$PC.customTitle" $PC.customTitle "Intro Summary">>
-			<</options>>
-
-			<<options>>
-				and when lisped it is:
-				<<option>>
-					<<textbox2 "$PC.customTitleLisp" $PC.customTitleLisp "Intro Summary">>
-				<<comment>>
-					If using a custom title, select Master or Mistress to set the gender of your title.
-					Make sure to replace your "s"s with "th"s to have working lisps in your lisped title.
-			<</options>>
+			<<run _options.addOption("Custom title", "customTitle", $PC).showTextBox()
+			.addValue("Reset to default", "", () => {delete $PC.customTitle; delete $PC.customTitleLisp;})>>
+
+			<<run _options.addOption("Lisped custom title", "customTitleLisp", $PC).showTextBox()
+			.addComment('If using a custom title, select Master or Mistress to set the gender of your title. Make sure to replace your "s"s with "th"s to have working lisps in your lisped title.')>>
 		<<else>>
-			<<options $PC.customTitle>>
-				You have no custom title:
-				<<option "Master" "Set custom title" "$PC.customTitleLisp = 'Mather'">>
-				<<comment>>
-					If using a custom title, select Master or Mistress to set the gender of your title.
-					Make sure to replace your "s"s with "th"s to have working lisps in your lisped title.
-			<</options>>
+			<<run _options.addOption("Custom title", "customTitle", $PC)
+			.addValue("Set custom title", "Master", () => $PC.customTitleLisp = 'Mather')>>
 		<</if>>
 
-		<<options>>
-			Your nationality is:
-			<<option>>
-				<<textbox2 "$PC.nationality" $PC.nationality "Intro Summary">>
-			<<comment>>
-				Capitalize it
-		<</options>>
+		<<run _options.addOption("Your nationality is", "nationality", $PC).showTextBox()
+		.addComment("For best result capitalize it.")>>
 
-		<<options $PC.race>>
-			Your race is:
-			<<option "white" "White">>
-			<<option "asian" "Asian">>
-			<<option "latina" "Latina">>
-			<<option "middle eastern" "Middle Eastern">>
-			<<option "black" "Black">>
-			<<option "semitic" "Semitic">>
-			<<option "southern european" "Southern European">>
-			<<option "indo-aryan" "Indo-Aryan">>
-			<<option "amerindian" "Amerindian">>
-			<<option "pacific islander" "Pacific Islander">>
-			<<option "malay" "Malay">>
-			<<option "mixed race" "Mixed Race">>
-			<<option>>
-				<<textbox2 "$PC.race" $PC.race "Intro Summary">>
-		<</options>>
+		<<run _options.addOption("Your race is", "race", $PC).showTextBox()
+		.addValueList([["White", "white"], ["Asian", "asian"], ["Latina", "latina"], ["Middle Eastern", "middle eastern"],
+			["Black", "black"], ["Semetic", "semetic"], ["Southern European", "southern european"], ["Indo-Aryan", "indo-aryan"],
+			["Amerindian", "amerindian"], ["Pacific Islander", "pacific islander"], ["Malay", "malay"], ["Mixed Race", "mixed race"]])>>
 
-		<<options $PC.skin>>
-			Your skin tone is:
-			<<option "pure white" "Pure White" >>
-			<<option "ivory" "Ivory" >>
-			<<option "white" "White" >>
-			<<option "extremely pale" "Extremely Pale" >>
-			<<option "very pale" "Very Pale" >>
-			<<option "pale" "Pale" >>
-			<<option "extremely fair" "Extremely Fair" >>
-			<<option "very fair" "Very Fair" >>
-			<<option "fair" "Fair" >>
-			<<option "light" "Light" >>
-			<<option "light olive" "Light Olive" >>
-			<<option "tan" "Tan" >>
-			<<option "olive" "Olive" >>
-			<<option "bronze" "Bronze" >>
-			<<option "dark olive" "Dark Olive" >>
-			<<option "dark" "Dark" >>
-			<<option "light beige" "Light Beige" >>
-			<<option "beige" "Beige" >>
-			<<option "dark beige" "Dark Beige" >>
-			<<option "light brown" "Light Brown" >>
-			<<option "brown" "Brown" >>
-			<<option "dark brown" "Dark Brown" >>
-			<<option "black" "Black" >>
-			<<option "ebony" "Ebony" >>
-			<<option "pure black" "Pure Black" >>
-			<<option>>
-				<<textbox2 "$PC.skin" $PC.skin "Intro Summary">>
-		<</options>>
+		<<run _options.addOption("Your skin tone is", "skin", $PC).showTextBox()
+		.addValueList([["Pure White", "pure white"], ["Ivory", "ivory"], ["White", "white"], ["Extremely Pale", "extremely pale"],
+			["Very Pale", "very pale"], ["Pale", "pale"], ["Extremely Fair", "extremely fair"], ["Very Fair", "very fair"],
+			["Fair", "fair"], ["Light", "light"], ["Light Olive", "light olive"], ["Tan", "tan"], ["Olive", "olive"], ["Bronze", "bronze"],
+			["Dark Olive", "dark olive"], ["Dark", "dark"], ["Light Beige", "light beige"], ["Beige", "beige"],
+			["Dark Beige", "dark beige"], ["Light Brown", "light brown"], ["Brown", "brown"], ["Dark Brown", "dark brown"],
+			["Black", "black"], ["Ebony", "ebony"], ["Pure Black", "pure black"]])>>
 
-		<<options $PC.markings>>
-			<<option "none" "None">>
-				Your body ''is clear of blemishes''.
-			<<option "freckles" "Light">>
-				Your body ''has light freckling''.
-			<<option "heavily freckled" "Heavy">>
-				Your body ''has heavy freckling''.
-		<</options>>
+		<<run _options.addOption("Your body", "markings", $PC)
+		.addValueList([["Is clear of blemishes", "none"], ["Has light freckling", "freckles"], ["Has heavy freckling", "heavily freckled"]])>>
 
-		<<options>>
-			Your eyes are:
-			<<option>>
-				<<textbox2 "$PC.eye.origColor" $PC.eye.origColor "Intro Summary">>
-		<</options>>
+		<<run _options.addOption("Your eyes are", "origColor", $PC.eye).showTextBox()>>
 
-		<<options>>
-		Your hair is:
-			<<option>>
-				<<textbox2 "$PC.hColor" $PC.hColor "Intro Summary">>
-		<</options>>
+		<<run _options.addOption("Your hair is", "hColor", $PC).showTextBox()>>
 
-		<<options $PC.faceShape>>
-			<<option "normal" "Normal">>
-				Your face is ''normal''.
-			<<option "androgynous" "Androgynous">>
-				Your face is ''androgynous''.
-			<<option "masculine" "Masculine">>
-				Your face is ''masculine''.
-			<<option "cute" "Cute">>
-				Your face is ''cute''.
-			<<option "sensual" "Sensual">>
-				Your face is ''sensual''.
-			<<option "exotic" "Exotic">>
-				Your face is ''exotic''.
-		<</options>>
+		<<run _options.addOption("Your face is", "faceShape", $PC)
+		.addValueList([["Normal", "normal"], ["Androgynous", "androgynous"], ["Masculine", "masculine"], ["Cute", "cute"], ["Sensual", "sensual"], ["Exotic", "exotic"]])>>
 
-		<<options $PC.refreshment>>
-			Your preferred refreshment is:
-			<<option "cigar" "Cigars" "$PC.refreshmentType = 0">>
-			<<option "whiskey" "Whiskey" "$PC.refreshmentType = 1">>
-			<<option>>
-				<<textbox2 "$PC.refreshment" $PC.refreshment "Intro Summary">>
-		<</options>>
+		<<run _options.addOption("Your preferred refreshment is", "refreshment", $PC).showTextBox()
+		.addValue("Cigars", "cigar", () => {V.PC.refreshmentType = 0})
+		.addValue("Whiskey", "whiskey", () => {V.PC.refreshmentType = 1})>>
 
-		<<options $PC.refreshmentType>>
-			Which you
-			<<option 0 "Smoke">>
-				smoke.
-			<<option 1 "Drink">>
-				drink.
-			<<option 2 "Eat">>
-				eat.
-			<<option 3 "Snort">>
-				snort.
-			<<option 4 "Inject">>
-				inject.
-			<<option 5 "Pop">>
-				pop.
-			<<option 6 "Orally Dissolve">>
-				orally dissolve.
-		<</options>>
+		<<set _option = _options.addOption("Which you", "refreshmentType", $PC)
+		.addValueList([["Smoke", 0], ["Drink", 1], ["Eat", 2], ["Snort", 3], ["Inject", 4], ["Pop", 5], ["Orally dissolve", 6]])>>
 
-		&nbsp;&nbsp;&nbsp;&nbsp;
-		<<if ($PC.refreshmentType == 0) && ($PC.refreshmentType != 0) >>//"Smoked" must fit into the following sentence: "I smoked a $PC.refreshment" to fit events properly
-		<<elseif $PC.refreshmentType == 5>>//"Popped" must fit into the following sentence: "I shook the bottle of $PC.refreshment" to fit events properly
-		<<elseif $PC.refreshmentType == 6>>//"Orally Dissolved" must fit into the following sentence: "I placed a tab of $PC.refreshment under my tongue" to fit events properly
+		<<if $PC.refreshmentType == 0>>
+			<<run _option.addComment('"Smoked" must fit into the following sentence: "I smoked a $PC.refreshment" to fit events properly.')>>
+		<<elseif $PC.refreshmentType == 5>>
+			<<run _option.addComment('"Popped" must fit into the following sentence: "I shook the bottle of $PC.refreshment" to fit events properly.')>>
+		<<elseif $PC.refreshmentType == 6>>
+			<<run _option.addComment('"Orally Dissolved" must fit into the following sentence: "I placed a tab of $PC.refreshment under my tongue" to fit events properly.')>>
 		<</if>>
 
-		<<switch $PC.career>>
-		<<case "capitalist">>
-			<<set _PCCreationCareer = "a business leader">>
-			<<set _PCSecExpCareer = "@@.yellowgreen;The propaganda hub's upgrades will be cheaper.@@">>
-		<<case "mercenary">>
-			<<set _PCCreationCareer = "a mercenary">>
-			<<set _PCSecExpCareer = "@@.green;Easier to maintain security@@ and @@.yellowgreen;the security HQ's upgrades will be cheaper.@@">>
-		<<case "slaver">>
-			<<set _PCCreationCareer = "a slaver">>
-			<<set _PCSecExpCareer = "@@.green;Easier to maintain authority@@ and @@.yellowgreen;the security HQ's upgrades will be cheaper.@@">>
-		<<case "engineer">>
-			<<set _PCCreationCareer = "an engineer">>
-			<<set _PCSecExpCareer = "@@.yellowgreen;construction and upgrade of facilities will be cheaper.@@">>
-		<<case "medicine">>
-			<<set _PCCreationCareer = "a doctor">>
-			<<set _PCSecExpCareer = "@@.yellowgreen;Drug upgrades will be cheaper.@@">>
-		<<case "celebrity">>
-			<<set _PCCreationCareer = "a minor celebrity">>
-			<<set _PCSecExpCareer = "@@.yellowgreen;The propaganda hub's upgrades will be cheaper.@@">>
-		<<case "escort">>
-			<<set _PCCreationCareer = "an escort">>
-			<<set _PCSecExpCareer = "@@.red;Harder to maintain authority.@@">>
-		<<case "servant">>
-			<<set _PCCreationCareer = "a servant">>
-			<<set _PCSecExpCareer = "@@.red;Harder to maintain authority.@@">>
-		<<case "gang">>
-			<<set _PCCreationCareer = "a gang leader">>
-			<<set _PCSecExpCareer = "@@.green;Easier to maintain authority@@ and @@.yellowgreen;the security HQ's upgrades will be cheaper.@@">>
-		<<case "BlackHat">>
-			<<set _PCCreationCareer = "an incursion specialist">>
-			<<set _PCSecExpCareer = "@@.red;Harder to maintain authority.@@">>
-		<<default>>
-			<<set _PCCreationCareer = "a member of the idle wealthy">>
-			<<set _PCSecExpCareer = "@@.red;Harder to maintain authority,@@ but @@.yellowgreen;the propaganda hub's upgrades will be cheaper.@@">>
-		<</switch>>
-
+		<<set _option = _options.addOption("Before you came to the Free Cities, you were a", "career", $PC)>>
 		<<if $PC.career == "arcology owner">>
-			Before you came to the Free Cities, you were ''_PCCreationCareer''.
+			<<run _option.addValue("Arcology owner", "arcology owner")>>
 		<<else>>
-			<<options $PC.career>>
-				Before you came to the Free Cities, you were ''_PCCreationCareer'':
-				<<option "wealth" "Member of the idle wealthy">>
-				<<option "capitalist" "Business leader">>
-				<<option "mercenary" "Mercenary">>
-				<<option "slaver" "Slaver">>
-				<<option "engineer" "Engineer">>
-				<<option "medicine" "Doctor">>
-				<<option "BlackHat" "Hacker">>
-				<<option "celebrity" "Minor celebrity">>
-				<<option "escort" "Escort">>
-				<<option "servant" "Servant">>
-				<<option "gang" "Gang leader">>
-			<</options>>
+			<<run _option.addValueList([["Member of the idle wealthy", "wealth"], ["Business leader", "capitalist"],
+				["Mercenary", "mercenary"], ["Slaver", "slaver"], ["Engineer", "engineer"], ["Doctor", "medicine"], ["Hacker", "BlackHat"],
+				["Minor celebrity", "celebrity"], ["Escort", "escort"], ["Servant", "servant"], ["Gang leader", "gang"]]
+			)>>
 			<<if $secExpEnabled > 0>>
-				<div>
-					Security Expansion bonus: _PCSecExpCareer
-				</div>
+				<<switch $PC.career>>
+				<<case "capitalist">>
+					<<run _option.addComment("<div>@@.yellowgreen;The propaganda hub's upgrades will be cheaper.@@</div>")>>
+				<<case "mercenary">>
+					<<run _option.addComment("<div>@@.green;Easier to maintain security@@ and @@.yellowgreen;the security HQ's upgrades will be cheaper.@@</div>")>>
+				<<case "slaver">>
+					<<run _option.addComment("<div>@@.green;Easier to maintain authority@@ and @@.yellowgreen;the security HQ's upgrades will be cheaper.@@</div>")>>
+				<<case "engineer">>
+					<<run _option.addComment("<div>@@.yellowgreen;construction and upgrade of facilities will be cheaper.@@</div>")>>
+				<<case "medicine">>
+					<<run _option.addComment("<div>@@.yellowgreen;Drug upgrades will be cheaper.@@</div>")>>
+				<<case "celebrity">>
+					<<run _option.addComment("<div>@@.yellowgreen;The propaganda hub's upgrades will be cheaper.@@</div>")>>
+				<<case "escort">>
+					<<run _option.addComment("<div>@@.red;Harder to maintain authority.@@</div>")>>
+				<<case "servant">>
+					<<run _option.addComment("<div>@@.red;Harder to maintain authority.@@</div>")>>
+				<<case "gang">>
+					<<run _option.addComment("<div>@@.green;Easier to maintain authority@@ and @@.yellowgreen;the security HQ's upgrades will be cheaper.@@</div>")>>
+				<<case "BlackHat">>
+					<<run _option.addComment("<div>@@.red;Harder to maintain authority.@@</div>")>>
+				<<default>>
+					<<run _option.addComment("<div>@@.red;Harder to maintain authority,@@ but @@.yellowgreen;the propaganda hub's upgrades will be cheaper.@@</div>")>>
+				<</switch>>
 			<</if>>
 		<</if>>
 
-		<<options $PC.rumor>>
-			It is rumored that you acquired your arcology through ''$PC.rumor'':
-			<<option "wealth" "Wealth">>
-			<<option "diligence" "Hard work">>
-			<<option "force" "Force">>
-			<<option "social engineering" "Social engineering">>
-			<<option "luck" "Blind luck">>
-		<</options>>
+		<<run _options.addOption("It is rumored that you acquired your arcology through", "rumor", $PC)
+		.addValueList([["Wealth", "wealth"], ["Hard work", "diligence"], ["Force", "force"], ["Social engineering", "social engineering"],
+			["Blind luck", "luck"]]
+		)>>
 
-		<<if $PC.vagina != -1 && $PC.dick != 0>>
+		<<print App.UI.DOM.includeDOM(_options.render())>>
+
+		<h2>Sexuality</h2>
+		<<set _options = new App.UI.OptionsGroup()>>
+
+		<<if $PC.vagina !== -1 && $PC.dick !== 0>>
 			<<set _vagina_penis = 2>>
-		<<elseif $PC.vagina != -1>>
+		<<elseif $PC.vagina !== -1>>
 			<<set _vagina_penis = 1>>
 		<<else>>
 			<<set _vagina_penis = 0>>
 		<</if>>
 
-		<<options _vagina_penis>>
-			You have a
-			<<option 0 "Penis" "$PC.preg=0, $PC.pregType=0, $PC.dick=4, $PC.balls=3, $PC.scrotum=3, $PC.prostate=1, $PC.vagina=-1, $PC.ovaries=0">>
-				''penis''. Standard sex scenes; easiest reputation maintenance.
-			<<option 1 "Vagina" "$PC.dick=0, $PC.balls=0, $PC.prostate=0, $PC.scrotum=0, $PC.vagina=1, $PC.ovaries=1">>
-				''vagina''. Sex scene variations; most difficult reputation maintenance.
-			<<option 2 "Penis and Vagina" "$PC.dick=4, $PC.balls=3, $PC.scrotum=3, $PC.prostate=1, $PC.vagina=1, $PC.ovaries=1">>
-				''penis and vagina''. Sex scene variations; more difficult reputation maintenance; some unique opportunities, especially with breasts.
-		<</options>>
+		<<set _option = _options.addOption("You have a", "vagina_penis", State.temporary)
+		.addValue("Penis", 0, () => {
+			V.PC.preg = 0;
+			V.PC.pregType = 0;
+			V.PC.dick = 4;
+			V.PC.balls = 3;
+			V.PC.scrotum = 3;
+			V.PC.prostate = 1;
+			V.PC.vagina = -1;
+			V.PC.ovaries = 0;
+		}).addValue("Vagina", 1, () => {
+			V.PC.dick = 0;
+			V.PC.balls = 0;
+			V.PC.scrotum = 0;
+			V.PC.prostate = 0;
+			V.PC.vagina = 1;
+			V.PC.ovaries = 1
+		}).addValue("Penis and Vagina", 2, () => {
+			V.PC.dick = 4;
+			V.PC.balls = 3;
+			V.PC.scrotum = 3;
+			V.PC.prostate = 1;
+			V.PC.vagina = 1;
+			V.PC.ovaries = 1
+		})>>
+		<<if _vagina_penis === 0>>
+			<<run _option.addComment("Standard sex scenes; easiest reputation maintenance.")>>
+		<<elseif _vagina_penis === 1>>
+			<<run _option.addComment("Sex scene variations; most difficult reputation maintenance.")>>
+		<<else>>
+			<<run _option.addComment("Sex scene variations; more difficult reputation maintenance; some unique opportunities, especially with breasts.")>>
+		<</if>>
 
-		<<if $PC.vagina != -1>>
+		<<if $PC.vagina !== -1>>
+			<<set _option = _options.addOption("You are", "preg", $PC)
+			.addValue("Taking contraceptives", -1, () => {V.PC.pregType = 0; V.PC.labor = 0;})
+			.addValue("Not taking contraceptives", 0, () => {V.PC.pregType = 0; V.PC.labor = 0;})
+			.addRange(16, 37, "<=", "Pregnant").addCallback(() => {V.PC.pregType = 1; V.PC.labor = 0;})
+			.addRange(40, 42, "<=", "Ready to drop").addCallback(() => {V.PC.pregType = 1; V.PC.labor = 0;})
+			.addRange(43, 42, ">", "Ready to drop with octuplets").addCallback(() => {V.PC.pregType = 8; V.PC.labor = 1;})>>
 			<<if $PC.preg == -1>>
-				<<options $PC.preg>>
-					You are taking contraceptives. You ''can't'' get pregnant, however there
-					will be a slight increase to living expenses.
-					<<option -1 "Taking contraceptives">>
-					<<option 0 "Do not take contraceptives">>
-				<</options>>
-			<<elseif $PC.preg == 0>>
-				<<options $PC.preg>>
-					You are ''not'' on contraceptives. You ''can'' get pregnant.
-					<<option -1 "Take contraceptives">>
-					<<option 0  "Not taking contraceptives">>
-					<<option 16 "Too late for that!" "$PC.pregType = 1">>
-				<</options>>
-			<<elseif $PC.preg > 42>>
-				<<options $PC.preg>>
-					You are ''<<print $PC.preg>> weeks pregnant with octuplets'' and your
-					water just broke.
-					<<option 0 "Not pregnant" "$PC.pregType = 0, $PC.labor = 0">>
-				<</options>>
-			<<elseif $PC.preg > 37>>
-				<<options $PC.preg>>
-					You are ''<<print $PC.preg>> weeks pregnant'' and going to go into labor soon.
-					<<option 0 "Not pregnant" "$PC.pregType = 0, $PC.labor = 0">>
-					<<option 43 "Stuffed to capacity" "$PC.pregType = 8, $PC.labor = 1">>
-				<</options>>
-			<<elseif $PC.preg > 0>>
-				<<options $PC.preg>>
-					You are ''<<print $PC.preg>> weeks pregnant'' so there is no need to
-					worry about contraceptives.
-					<<option 0 "Not pregnant" "$PC.pregType = 0">>
-					<<option 40 "Ready to drop">>
-					<<option 43 "Stuffed to capacity" "$PC.pregType = 8, $PC.labor = 1">>
-				<</options>>
+				<<run _option.addComment("You can't get pregnant, however there will be a slight increase to living expenses.")>>
 			<</if>>
 
 			<<if $PC.counter.birthsTotal > 0>>
-				<div>
-					You have given birth to ''$PC.counter.birthsTotal'' babies.
-				</div>
+				<<run _options.addOption("").addComment("You have given birth to ''$PC.counter.birthsTotal'' babies.")>>
 			<</if>>
 
-			<<options $PC.pregMood>>
-				Your hormones
-				<<option 0 "Not affected">>
-					do not affect you. Vanilla setting.
-				<<option 1 "Caring and motherly">>
-					influence you to be ''caring and motherly''. Sex scene alterations;
-					slaves will trust you more, but may try to take advantage of your mercy.
-				<<option 2 "Aggressive and domineering">>
-					influence you to be ''aggressive and domineering''. Sex scene alterations; slaves will fear you more, but will become more submissive to you.
-			<</options>>
+			<<set _option = _options.addOption("Hormone effects", "pregMood", $PC)
+			.addValueList([["None", 0], ["Caring and motherly", 1], ["Aggressive and domineering", 2]])>>
+			<<if $PC.pregMood === 1>>
+				<<run _option.addComment("Sex scene alterations; slaves will trust you more, but may try to take advantage of your mercy.")>>
+			<<elseif $PC.pregMood === 2>>
+				<<run _option.addComment("Sex scene alterations; slaves will fear you more, but will become more submissive to you.")>>
+			<</if>>
 		<</if>>
 
-		<<switch $PC.boobs>>
-		<<case 400>>
-			<<set _PCCreationBoobSize = "small B-cups">>
-		<<case 500>>
-			<<set _PCCreationBoobSize = "unnoticeable C-cups">>
-		<<case 700>>
-			<<set _PCCreationBoobSize = "unremarkable D-cups">>
-		<<case 1100>>
-			<<set _PCCreationBoobSize = "noticeable F-cups">>
-		<<case 1300>>
-			<<set _PCCreationBoobSize = "huge G-cups">>
-		<<case 1500>>
-			<<set _PCCreationBoobSize = "massive H-cups">>
-		<<default>>
-			<<set _PCCreationBoobSize = "average DD-cups">>
-		<</switch>>
-
-		<<if $PC.boobsImplant>>
-			<<set _PCCreationBreast = "fake">>
+		<<if $PC.title === 1 && $PC.boobs <= 100>>
+			<<set _option = _options.addOption("Your chest is", "boobs", $PC).addValue("Manly", 100, () => V.PC.boobsImplant = 0)>>
 		<<else>>
-			<<set _PCCreationBreast = "all natural">>
+			<<set _option = _options.addOption("Your breasts are", "boobs", $PC).addValue("Flat", 100, () => V.PC.boobsImplant = 0)>>
 		<</if>>
+		<<run _option.addValueList([["C-cups", 500], ["DD-cups", 900], ["F-cups", 1100], ["G-cups", 1300]])>>
 
-		<<if $PC.boobs > 300>>
-			<<options $PC.boobs>>
-				Your breasts are ''_PCCreationBoobSize'' and ''_PCCreationBreast''.
-				<<option 500 "C-cup" "$PC.boobsImplant = 0">>
-				<<option 900  "DD-cup" "$PC.boobsImplant = 0">>
-				<<option 1100  "F-cup" "$PC.boobsImplant = 0">>
-				<<option 1300  "G-cup" "$PC.boobsImplant = 0">>
-				<<option 1300  "G-cup implants" "$PC.boobsImplant = 400">>
-				<<option 0  "Remove them" "$PC.boobs = 100, $PC.boobsImplant = 0">>
-			<</options>>
-		<<else>>
-			<<if $PC.title == 1>>
-				<<options $PC.boobs>>
-					Your chest is ''manly.''
-					<<option 500 "Add breasts">>
-				<</options>>
-			<<else>>
-				<<options $PC.boobs>>
-					You are ''flat chested.''
-					<<option 500 "Grow breasts">>
-				<</options>>
-			<</if>>
+		<<if $PC.boobs >= 500>>
+			<<run _options.addOption("Your breasts are", "boobsImplant", $PC)
+			.addValueList([["All natural", 0], ["Fake", 400]])>>
 		<</if>>
+
+		<<print App.UI.DOM.includeDOM(_options.render())>>
 	<<else>>
 
 		You are a
diff --git a/src/npc/startingGirls/startingGirls.tw b/src/npc/startingGirls/startingGirls.tw
index b462ee675310983d835b3524983501636047904b..9c6edd7fbf3beb17f5eebe4606984e1fd5145c5f 100644
--- a/src/npc/startingGirls/startingGirls.tw
+++ b/src/npc/startingGirls/startingGirls.tw
@@ -1709,5 +1709,3 @@
 
 	</div>
 </div>
-
-<<unset $PCCreationSex>>