diff --git a/src/facilities/surgery/analyzePregnancy.js b/src/facilities/surgery/analyzePregnancy.js
index fb33e286902ab8899c7bfebac5d1fbc0e4960f36..022c9ebb2dddbe52551cc501e4549204db76cb4b 100644
--- a/src/facilities/surgery/analyzePregnancy.js
+++ b/src/facilities/surgery/analyzePregnancy.js
@@ -14,79 +14,86 @@ globalThis.analyzePregnancies = function(mother, cheat) {
 	function scanFetus(i) {
 		const el = new DocumentFragment();
 		const fetus = mother.womb[i];
-		let linkArray = [];
+		const genes = fetus.genetics;
+		let option;
+		const options = new App.UI.OptionsGroup();
 		if (fetus.age >= 2) {
-			App.UI.DOM.appendNewElement("div", el, `Ova: ${fetus.genetics.name}`);
-			App.UI.DOM.appendNewElement("div", el, `Age: ${Math.trunc(fetus.age * 1000) / 1000}`);
+			options.addOption(`Ova: ${genes.name}`, "name", genes).showTextBox();
+			options.addOption(`Age: ${Math.trunc(fetus.age * 1000) / 1000}`, "age", fetus).showTextBox();
 			if (V.geneticMappingUpgrade >= 1) {
-				App.UI.DOM.appendNewElement("div", el, `Gender: ${fetus.genetics.gender}`);
-				App.UI.DOM.appendNewElement("div", el, `Father ID: ${fetus.genetics.father}`);
-				App.UI.DOM.appendNewElement("div", el, `Father Name: ${(fetus.genetics.fatherName) ? fetus.genetics.fatherName : `name not registered`}`);
+				options.addOption(`Gender: ${genes.gender}`, "age", fetus).showTextBox();
+				options.addOption(`Father ID: ${genes.father}`, "father", genes).showTextBox();
+				options.addOption(`Father Name: ${(genes.fatherName) ? genes.fatherName : `name not registered`}`, "father", genes);
+				options.addOption(`Mother ID: ${genes.mother}`, "mother", genes).showTextBox();
+				options.addOption(`Mother Name: ${(genes.motherName) ? genes.motherName : `name not registered`}`, "motherName", genes);
+				options.addOption(`Nationality: ${genes.nationality}`, "nationality", genes).showTextBox();
+				options.addOption(`Race: ${capFirstChar(genes.race)}`, "race", genes).showTextBox();
+				options.addOption(`Skin tone: ${capFirstChar(genes.skin)}`, "skin", genes).showTextBox();
+				options.addOption(`Intelligence index: ${genes.intelligence} out of 100`, "intelligence", genes).showTextBox();
+				options.addOption(`Face index: ${genes.face} out of 100`, "face", genes).showTextBox();
+				options.addOption(`Eye Color: ${capFirstChar(genes.eyeColor)}`, "eyeColor", genes).showTextBox();
+				options.addOption(`Hair Color: ${capFirstChar(genes.hColor)}`, "hColor", genes).showTextBox();
 
-				App.UI.DOM.appendNewElement("div", el, `Mother ID: ${fetus.genetics.mother}`);
-				App.UI.DOM.appendNewElement("div", el, `Mother Name: ${(fetus.genetics.motherName) ? fetus.genetics.motherName : `name not registered`}`);
-				App.UI.DOM.appendNewElement("div", el, `Nationality: ${fetus.genetics.nationality}`);
-				App.UI.DOM.appendNewElement("div", el, `Race: ${capFirstChar(fetus.genetics.race)}`);
-				App.UI.DOM.appendNewElement("div", el, `Skin tone: ${capFirstChar(fetus.genetics.skin)}`);
-				App.UI.DOM.appendNewElement("div", el, `Intelligence index: ${fetus.genetics.intelligence} out of 100`);
-				App.UI.DOM.appendNewElement("div", el, `Face index: ${fetus.genetics.face} out of 100`);
-				App.UI.DOM.appendNewElement("div", el, `Eye Color: ${capFirstChar(fetus.genetics.eyeColor)}`);
-				App.UI.DOM.appendNewElement("div", el, `Hair Color: ${capFirstChar(fetus.genetics.hColor)}`);
-
-				if (fetus.genetics.underArmHStyle === "hairless" && fetus.genetics.pubicHStyle === "hairless") {
-					App.UI.DOM.appendNewElement("div", el, `Body hair: None`);
-				} else if (fetus.genetics.underArmHStyle === "hairless") {
-					App.UI.DOM.appendNewElement("div", el, `Body hair: Lacks underarm hair`);
-				} else if (fetus.genetics.pubicHStyle === "hairless") {
-					App.UI.DOM.appendNewElement("div", el, `Body hair: Lacks pubic hair`);
+				if (genes.underArmHStyle === "hairless" && genes.pubicHStyle === "hairless") {
+					options.addOption(`Body hair: None`);
+				} else if (genes.underArmHStyle === "hairless") {
+					options.addOption(`Body hair: Lacks underarm hair`);
+				} else if (genes.pubicHStyle === "hairless") {
+					options.addOption(`Body hair: Lacks pubic hair`);
 				}
-				if (fetus.genetics.markings === "freckles" || fetus.genetics.markings === "heavily freckled") {
-					App.UI.DOM.appendNewElement("div", el, `Markings: ${capFirstChar(fetus.genetics.markings)}`);
+				if (genes.markings === "freckles" || genes.markings === "heavily freckled") {
+					options.addOption(`Markings: ${capFirstChar(genes.markings)}`, "markings", genes).showTextBox();
 				}
+				el.append(options.render());
 				el.append(fetusAbnormalities());
 			} else {
 				if (fetus.age > 13) {
-					App.UI.DOM.appendNewElement("div", el, `Gender: ${fetus.genetics.gender}`);
+					App.UI.DOM.appendNewElement("div", el, `Gender: ${genes.gender}`);
 				}
 				if (fetus.age > 5) {
-					App.UI.DOM.appendNewElement("div", el, `Father ID: ${fetus.genetics.father}`);
-					App.UI.DOM.appendNewElement("div", el, `Father Name: ${fetus.genetics.fatherName}`);
-					App.UI.DOM.appendNewElement("div", el, `Mother ID: ${fetus.genetics.mother}`);
-					App.UI.DOM.appendNewElement("div", el, `Mother Name: ${fetus.genetics.motherName}`);
+					App.UI.DOM.appendNewElement("div", el, `Father ID: ${genes.father}`);
+					App.UI.DOM.appendNewElement("div", el, `Father Name: ${genes.fatherName}`);
+					App.UI.DOM.appendNewElement("div", el, `Mother ID: ${genes.mother}`);
+					App.UI.DOM.appendNewElement("div", el, `Mother Name: ${genes.motherName}`);
 				}
 			}
 			if (V.incubator.capacity > 0 || V.nursery > 0) {
 				App.UI.DOM.appendNewElement("div", el, `Reserved: ${fetus.reserve}`);
 			}
 
-			App.UI.DOM.appendNewElement("div", el, `Rename: `)
-				.append(App.UI.DOM.makeTextBox(
-					fetus.genetics.name,
-					(v) => fetus.genetics.name = v
-				));
 			if (fetus.age < 4 && (V.arcologies[0].FSRestart === "unset" || V.eugenicsFullControl === 1 || mother.breedingMark === 0 || V.propOutcome === 0 || (fetus.fatherID !== -1 && fetus.fatherID !== -6))) {
-				linkArray.push(App.UI.DOM.link(
-					"Terminate ovum",
-					() => {
-						WombRemoveFetus(mother, i);
-						if (mother.preg === 0) {
-							mother.pregWeek = -1;
-						}
-					}
-				));
+				option = options.addOption(``)
+					.customButton(
+						"Terminate ovum",
+						() => {
+							WombRemoveFetus(mother, i);
+							if (mother.preg === 0) {
+								mother.pregWeek = -1;
+							}
+						},
+						passage()
+					)
+					.customButton(
+						"Terminate ovum",
+						() => {
+							WombRemoveFetus(mother, i);
+							if (mother.preg === 0) {
+								mother.pregWeek = -1;
+							}
+						},
+						passage()
+					);
 				if (V.surgeryUpgrade === 1) {
-					linkArray.push(App.UI.DOM.link(
+					option.customButton(
 						"Transplant ovum",
 						() => {
 							V.donatrix = mother;
 							V.wombIndex = i;
 							V.nextLink = "Analyze Pregnancy";
 						},
-						[],
 						"Ova Transplant Workaround"
-					));
+					);
 				}
-				App.UI.DOM.appendNewElement("div", el, App.UI.DOM.generateLinksStrip(linkArray));
 			}
 			if (V.incubator.capacity > 0) {
 				if (fetus.reserve === "incubator") {
@@ -135,32 +142,30 @@ globalThis.analyzePregnancies = function(mother, cheat) {
 				}
 			}
 		} else {
-			linkArray = [];
 			App.UI.DOM.appendNewElement("div", el, `Unidentified ova found, no detailed data available.`);
 			App.UI.DOM.appendNewElement("div", el, `Age: too early for scan.`);
-			linkArray.push(App.UI.DOM.link(
-				`Terminate ovum`,
-				() => {
-					WombRemoveFetus(mother, i);
-					if (mother.preg === 0) {
-						mother.pregWeek = -1;
-					}
-				},
-				[],
-				passage()
-			));
+			option = options.addOption(``)
+				.customButton(
+					`Terminate ovum`,
+					() => {
+						WombRemoveFetus(mother, i);
+						if (mother.preg === 0) {
+							mother.pregWeek = -1;
+						}
+					},
+					passage()
+				);
 
 			if (V.surgeryUpgrade === 1) {
-				linkArray.push(App.UI.DOM.link(
+				option.customButton(
 					`Transplant ovum`,
 					() => {
 						V.donatrix = mother;
 						V.wombIndex = i;
 						V.nextLink = "Analyze Pregnancy";
 					},
-					[],
 					`Ova Transplant Workaround`
-				));
+				);
 			}
 		}
 		return el;
@@ -169,13 +174,13 @@ globalThis.analyzePregnancies = function(mother, cheat) {
 			const div = App.UI.DOM.makeElement("div", null);
 
 			const abnormalitySpans = [];
-			for (const gene in fetus.genetics.geneticQuirks) {
+			for (const gene in genes.geneticQuirks) {
 				const geneObj = App.Data.genes.get(gene);
 				const quirkName = (geneObj && geneObj.abbreviation) ? geneObj.abbreviation : gene;
 				const quirkColor = (geneObj && geneObj.goodTrait) ? "green" : "red";
-				if (fetus.genetics.geneticQuirks[gene] === 2 || typeof fetus.genetics.geneticQuirks[gene] === "string") { // String check is for heterochromia
+				if (genes.geneticQuirks[gene] === 2 || typeof genes.geneticQuirks[gene] === "string") { // String check is for heterochromia
 					abnormalitySpans.push(App.UI.DOM.makeElement("span", quirkName, quirkColor));
-				} else if (fetus.genetics.geneticQuirks[gene] === 1 && V.geneticMappingUpgrade >= 2) {
+				} else if (genes.geneticQuirks[gene] === 1 && V.geneticMappingUpgrade >= 2) {
 					abnormalitySpans.push(App.UI.DOM.makeElement("span", quirkName, "yellow"));
 				}
 			}