diff --git a/src/facilities/surgery/analyzePregnancy.js b/src/facilities/surgery/analyzePregnancy.js
new file mode 100644
index 0000000000000000000000000000000000000000..cd45a8f2bdcd07d677222710f3e578d9b6d740ea
--- /dev/null
+++ b/src/facilities/surgery/analyzePregnancy.js
@@ -0,0 +1,91 @@
+/**
+ *
+ * @param {App.Entity.Fetus} fetus
+ */
+
+globalThis.fetusAbnormalities = function(fetus) {
+	const div = App.UI.DOM.makeElement("div", null, "indent");
+	/** @type {Map.<FC.GeneticQuirks|string>} */
+	const quirkNames = new Map([
+		["albinism",
+			{
+				abbreviation: "alb",
+				goodTrait: true
+			}
+		],
+		["gigantism", {abbreviation: "gnt"}],
+		["dwarfism", {abbreviation: "dwrf"}],
+		["neoteny", {abbreviation: "ntny"}],
+		["progeria", {abbreviation: "progeria"}],
+		["heterochromia",
+			{
+				abbreviation: "hetchrom",
+				goodTrait: true
+			}
+		],
+		["androgyny", {abbreviation: "andr"}],
+		["pFace",
+			{
+				abbreviation: "pfce",
+				goodTrait: true
+			}
+		],
+		["uFace", {abbreviation: "ufce"}],
+		["fertility",
+			{
+				abbreviation: "fert",
+				goodTrait: true
+			}
+		],
+		["hyperFertility",
+			{
+				abbreviation: "hfert",
+				goodTrait: true
+			}
+		],
+		["superfetation",
+			{
+				abbreviation: "supfet",
+				goodTrait: true
+			}
+		],
+		["polyhydramnios", {abbreviation: "polyhyd"}],
+		["uterineHypersensitivity",
+			{
+				abbreviation: "uthyp",
+				goodTrait: true
+			}
+		],
+		["macromastia", {abbreviation: "mmast"}],
+		["gigantomastia", {abbreviation: "gmast"}],
+		["galactorrhea", {abbreviation: "rlact"}],
+		["wellHung",
+			{
+				abbreviation: "bigd",
+				goodTrait: true
+			}
+		],
+		["rearLipedema", {abbreviation: "lipe"}],
+		["wGain", {abbreviation: "lepti+"}],
+		["wLoss", {abbreviation: "lepti-"}],
+		["mGain", {abbreviation: "myot+"}],
+		["mLoss", {abbreviation: "myot-"}],
+	]);
+
+	const abnormalitySpans = [];
+	for (const gene in fetus.genetics.geneticQuirks) {
+		const geneObj = quirkNames.get(gene);
+		const quirkName = (geneObj) ? geneObj.abbreviation || gene : gene;
+		const quirkColor = (geneObj && geneObj.goodTrait) ? "green" : "red";
+		if (fetus.genetics.geneticQuirks[gene] === 2) {
+			abnormalitySpans.push(App.UI.DOM.makeElement("span", quirkName, quirkColor));
+		} else if (fetus.genetics.geneticQuirks[gene] === 1 && V.geneticMappingUpgrade >= 2) {
+			abnormalitySpans.push(App.UI.DOM.makeElement("span", quirkName, "yellow"));
+		}
+	}
+	if (abnormalitySpans.length > 0) {
+		div.append("Detected abnormalities: ");
+		App.Events.addNode(div, abnormalitySpans);
+	}
+	return div;
+};
diff --git a/src/pregmod/analyzePlayerPregnancy.tw b/src/pregmod/analyzePlayerPregnancy.tw
index b1bdeb95bbe012893fa6e427d9f707b426e0a6db..ccc64318142b41f749cab12c136a35fcbf0cfac0 100644
--- a/src/pregmod/analyzePlayerPregnancy.tw
+++ b/src/pregmod/analyzePlayerPregnancy.tw
@@ -145,124 +145,7 @@
 							Markings: $PC.womb[_ap].genetics.markings
 						</div>
 					<</if>>
-					<div class="indent">
-						Detected abnormalities:
-						<<if $PC.womb[_ap].genetics.geneticQuirks.albinism == 2>>
-							@@.green;alb@@
-						<<elseif $PC.womb[_ap].genetics.geneticQuirks.albinism == 1 && $geneticMappingUpgrade >= 2>>
-							@@.yellow;alb@@
-						<</if>>
-						<<if $PC.womb[_ap].genetics.geneticQuirks.gigantism == 2>>
-							@@.red;gnt@@
-						<<elseif $PC.womb[_ap].genetics.geneticQuirks.gigantism == 1 && $geneticMappingUpgrade >= 2>>
-							@@.yellow;gnt@@
-						<</if>>
-						<<if $PC.womb[_ap].genetics.geneticQuirks.dwarfism == 2>>
-							@@.red;dwrf@@
-						<<elseif $PC.womb[_ap].genetics.geneticQuirks.dwarfism == 1 && $geneticMappingUpgrade >= 2>>
-							@@.yellow;dwrf@@
-						<</if>>
-						<<if $PC.womb[_ap].genetics.geneticQuirks.neoteny >= 2>>
-							@@.red;ntny@@
-						<<elseif $PC.womb[_ap].genetics.geneticQuirks.neoteny == 1 && $geneticMappingUpgrade >= 2>>
-							@@.yellow;ntny@@
-						<</if>>
-						<<if $PC.womb[_ap].genetics.geneticQuirks.progeria >= 2>>
-							@@.red;progeria@@
-						<<elseif $PC.womb[_ap].genetics.geneticQuirks.progeria == 1 && $geneticMappingUpgrade >= 2>>
-							@@.yellow;progeria@@
-						<</if>>
-						<<if $PC.womb[_ap].genetics.geneticQuirks.heterochromia == 2>>
-							@@.green;hetchrom@@
-						<<elseif $PC.womb[_ap].genetics.geneticQuirks.heterochromia == 1 && $geneticMappingUpgrade >= 2>>
-							@@.yellow;hetchrom@@
-						<</if>>
-						<<if $PC.womb[_ap].genetics.geneticQuirks.androgyny == 2>>
-							@@.red;andr@@
-						<<elseif $PC.womb[_ap].genetics.geneticQuirks.androgyny == 1 && $geneticMappingUpgrade >= 2>>
-							@@.yellow;andr@@
-						<</if>>
-						<<if $PC.womb[_ap].genetics.geneticQuirks.pFace == 2>>
-							@@.green;pfce@@
-						<<elseif $PC.womb[_ap].genetics.geneticQuirks.pFace == 1 && $geneticMappingUpgrade >= 2>>
-							@@.yellow;pfce@@
-						<</if>>
-						<<if $PC.womb[_ap].genetics.geneticQuirks.uFace == 2>>
-							@@.red;ufce@@
-						<<elseif $PC.womb[_ap].genetics.geneticQuirks.uFace == 1 && $geneticMappingUpgrade >= 2>>
-							@@.yellow;ufce@@
-						<</if>>
-						<<if $PC.womb[_ap].genetics.geneticQuirks.fertility == 2>>
-							@@.green;fert@@
-						<<elseif $PC.womb[_ap].genetics.geneticQuirks.fertility == 1 && $geneticMappingUpgrade >= 2>>
-							@@.yellow;fert@@
-						<</if>>
-						<<if $PC.womb[_ap].genetics.geneticQuirks.hyperFertility == 2>>
-							@@.green;hfert@@
-						<<elseif $PC.womb[_ap].genetics.geneticQuirks.hyperFertility == 1 && $geneticMappingUpgrade >= 2>>
-							@@.yellow;hfert@@
-						<</if>>
-						<<if $PC.womb[_ap].genetics.geneticQuirks.superfetation == 2>>
-							@@.green;supfet@@
-						<<elseif $PC.womb[_ap].genetics.geneticQuirks.superfetation == 1 && $geneticMappingUpgrade >= 2>>
-							@@.yellow;supfet@@
-						<</if>>
-						<<if $PC.womb[_ap].genetics.geneticQuirks.polyhydramnios == 2>>
-							@@.red;polyhyd@@
-						<<elseif $PC.womb[_ap].genetics.geneticQuirks.polyhydramnios == 1 && $geneticMappingUpgrade >= 2>>
-							@@.yellow;polyhyd@@
-						<</if>>
-						<<if $PC.womb[_ap].genetics.geneticQuirks.uterineHypersensitivity == 2>>
-							@@.green;uthyp@@
-						<<elseif $PC.womb[_ap].genetics.geneticQuirks.uterineHypersensitivity == 1 && $geneticMappingUpgrade >= 2>>
-							@@.yellow;uthyp@@
-						<</if>>
-						<<if $PC.womb[_ap].genetics.geneticQuirks.macromastia >= 2>>
-							@@.red;mmast@@
-						<<elseif $PC.womb[_ap].genetics.geneticQuirks.macromastia == 1 && $geneticMappingUpgrade >= 2>>
-							@@.yellow;mast@@
-						<</if>>
-						<<if $PC.womb[_ap].genetics.geneticQuirks.gigantomastia >= 2>>
-							@@.red;gmast@@
-						<<elseif $PC.womb[_ap].genetics.geneticQuirks.gigantomastia == 1 && $geneticMappingUpgrade >= 2>>
-							@@.yellow;gmast@@
-						<</if>>
-						<<if $PC.womb[_ap].genetics.geneticQuirks.galactorrhea >= 2>>
-							@@.red;rlact@@
-						<<elseif $PC.womb[_ap].genetics.geneticQuirks.galactorrhea == 1 && $geneticMappingUpgrade >= 2>>
-							@@.yellow;rlact@@
-						<</if>>
-						<<if $PC.womb[_ap].genetics.geneticQuirks.wellHung == 2>>
-							@@.green;bigd@@
-						<<elseif $PC.womb[_ap].genetics.geneticQuirks.wellHung == 1 && $geneticMappingUpgrade >= 2>>
-							@@.yellow;bigd@@
-						<</if>>
-						<<if $PC.womb[_ap].genetics.geneticQuirks.rearLipedema == 2>>
-							@@.red;lipe@@
-						<<elseif $PC.womb[_ap].genetics.geneticQuirks.rearLipedema == 1 && $geneticMappingUpgrade >= 2>>
-							@@.yellow;lipe@@
-						<</if>>
-						<<if $PC.womb[_ap].genetics.geneticQuirks.wGain == 2>>
-							@@.red;lepti+@@
-						<<elseif $PC.womb[_ap].genetics.geneticQuirks.wGain == 1 && $geneticMappingUpgrade >= 2>>
-							@@.yellow;lepti+@@
-						<</if>>
-						<<if $PC.womb[_ap].genetics.geneticQuirks.wLoss == 2>>
-							@@.red;lepti-@@
-						<<elseif $PC.womb[_ap].genetics.geneticQuirks.wLoss == 1 && $geneticMappingUpgrade >= 2>>
-							@@.yellow;lepti-@@
-						<</if>>
-						<<if $PC.womb[_ap].genetics.geneticQuirks.mGain == 2>>
-							@@.red;myot+@@
-						<<elseif $PC.womb[_ap].genetics.geneticQuirks.mGain == 1 && $geneticMappingUpgrade >= 2>>
-							@@.yellow;myot+@@
-						<</if>>
-						<<if $PC.womb[_ap].genetics.geneticQuirks.mLoss == 2>>
-							@@.red;myot-@@
-						<<elseif $PC.womb[_ap].genetics.geneticQuirks.mLoss == 1 && $geneticMappingUpgrade >= 2>>
-							@@.yellow;myot-@@
-						<</if>>
-					</div>
+					<<includeDOM fetusAbnormalities($PC.womb[_ap])>>
 				<<else>>
 					<<if $PC.womb[_ap].age > 13>>
 						<div class="indent">
diff --git a/src/pregmod/analyzePregnancy.tw b/src/pregmod/analyzePregnancy.tw
index b7cc87210cf6ea8a0cfbcec420c80d1fdc12d916..18da93ad6211aba4c58b52bca813c57460fc0051 100644
--- a/src/pregmod/analyzePregnancy.tw
+++ b/src/pregmod/analyzePregnancy.tw
@@ -180,124 +180,7 @@
 									Markings: <<= capFirstChar(getSlave($AS).womb[_ap].genetics.markings)>>
 								</div>
 							<</if>>
-							<div class="indent">
-								Detected abnormalities:
-								<<if getSlave($AS).womb[_ap].genetics.geneticQuirks.albinism == 2>>
-									@@.green;alb@@
-								<<elseif getSlave($AS).womb[_ap].genetics.geneticQuirks.albinism == 1 && $geneticMappingUpgrade >= 2>>
-									@@.yellow;alb@@
-								<</if>>
-								<<if getSlave($AS).womb[_ap].genetics.geneticQuirks.gigantism == 2>>
-									@@.red;gnt@@
-								<<elseif getSlave($AS).womb[_ap].genetics.geneticQuirks.gigantism == 1 && $geneticMappingUpgrade >= 2>>
-									@@.yellow;gnt@@
-								<</if>>
-								<<if getSlave($AS).womb[_ap].genetics.geneticQuirks.dwarfism == 2>>
-									@@.red;dwrf@@
-								<<elseif getSlave($AS).womb[_ap].genetics.geneticQuirks.dwarfism == 1 && $geneticMappingUpgrade >= 2>>
-									@@.yellow;dwrf@@
-								<</if>>
-								<<if getSlave($AS).womb[_ap].genetics.geneticQuirks.neoteny >= 2>>
-									@@.red;ntny@@
-								<<elseif getSlave($AS).womb[_ap].genetics.geneticQuirks.neoteny == 1 && $geneticMappingUpgrade >= 2>>
-									@@.yellow;ntny@@
-								<</if>>
-								<<if getSlave($AS).womb[_ap].genetics.geneticQuirks.progeria >= 2>>
-									@@.red;progeria@@
-								<<elseif getSlave($AS).womb[_ap].genetics.geneticQuirks.progeria == 1 && $geneticMappingUpgrade >= 2>>
-									@@.yellow;progeria@@
-								<</if>>
-								<<if getSlave($AS).womb[_ap].genetics.geneticQuirks.heterochromia == 2>>
-									@@.green;hetchrom@@
-								<<elseif getSlave($AS).womb[_ap].genetics.geneticQuirks.heterochromia == 1 && $geneticMappingUpgrade >= 2>>
-									@@.yellow;hetchrom@@
-								<</if>>
-								<<if getSlave($AS).womb[_ap].genetics.geneticQuirks.androgyny == 2>>
-									@@.red;andr@@
-								<<elseif getSlave($AS).womb[_ap].genetics.geneticQuirks.androgyny == 1 && $geneticMappingUpgrade >= 2>>
-									@@.yellow;andr@@
-								<</if>>
-								<<if getSlave($AS).womb[_ap].genetics.geneticQuirks.pFace == 2>>
-									@@.green;pfce@@
-								<<elseif getSlave($AS).womb[_ap].genetics.geneticQuirks.pFace == 1 && $geneticMappingUpgrade >= 2>>
-									@@.yellow;pfce@@
-								<</if>>
-								<<if getSlave($AS).womb[_ap].genetics.geneticQuirks.uFace == 2>>
-									@@.red;ufce@@
-								<<elseif getSlave($AS).womb[_ap].genetics.geneticQuirks.uFace == 1 && $geneticMappingUpgrade >= 2>>
-									@@.yellow;ufce@@
-								<</if>>
-								<<if getSlave($AS).womb[_ap].genetics.geneticQuirks.fertility == 2>>
-									@@.green;fert@@
-								<<elseif getSlave($AS).womb[_ap].genetics.geneticQuirks.fertility == 1 && $geneticMappingUpgrade >= 2>>
-									@@.yellow;fert@@
-								<</if>>
-								<<if getSlave($AS).womb[_ap].genetics.geneticQuirks.hyperFertility == 2>>
-									@@.green;hfert@@
-								<<elseif getSlave($AS).womb[_ap].genetics.geneticQuirks.hyperFertility == 1 && $geneticMappingUpgrade >= 2>>
-									@@.yellow;hfert@@
-								<</if>>
-								<<if getSlave($AS).womb[_ap].genetics.geneticQuirks.superfetation == 2>>
-									@@.green;supfet@@
-								<<elseif getSlave($AS).womb[_ap].genetics.geneticQuirks.superfetation == 1 && $geneticMappingUpgrade >= 2>>
-									@@.yellow;supfet@@
-								<</if>>
-								<<if getSlave($AS).womb[_ap].genetics.geneticQuirks.polyhydramnios == 2>>
-									@@.red;polyhyd@@
-								<<elseif getSlave($AS).womb[_ap].genetics.geneticQuirks.polyhydramnios == 1 && $geneticMappingUpgrade >= 2>>
-									@@.yellow;polyhyd@@
-								<</if>>
-								<<if getSlave($AS).womb[_ap].genetics.geneticQuirks.uterineHypersensitivity == 2>>
-									@@.green;uthyp@@
-								<<elseif getSlave($AS).womb[_ap].genetics.geneticQuirks.uterineHypersensitivity == 1 && $geneticMappingUpgrade >= 2>>
-									@@.yellow;uthyp@@
-								<</if>>
-								<<if getSlave($AS).womb[_ap].genetics.geneticQuirks.macromastia >= 2>>
-									@@.red;mmast@@
-								<<elseif getSlave($AS).womb[_ap].genetics.geneticQuirks.macromastia == 1 && $geneticMappingUpgrade >= 2>>
-									@@.yellow;mast@@
-								<</if>>
-								<<if getSlave($AS).womb[_ap].genetics.geneticQuirks.gigantomastia >= 2>>
-									@@.red;gmast@@
-								<<elseif getSlave($AS).womb[_ap].genetics.geneticQuirks.gigantomastia == 1 && $geneticMappingUpgrade >= 2>>
-									@@.yellow;gmast@@
-								<</if>>
-								<<if getSlave($AS).womb[_ap].genetics.geneticQuirks.galactorrhea >= 2>>
-									@@.red;rlact@@
-								<<elseif getSlave($AS).womb[_ap].genetics.geneticQuirks.galactorrhea == 1 && $geneticMappingUpgrade >= 2>>
-									@@.yellow;rlact@@
-								<</if>>
-								<<if getSlave($AS).womb[_ap].genetics.geneticQuirks.wellHung == 2>>
-									@@.green;bigd@@
-								<<elseif getSlave($AS).womb[_ap].genetics.geneticQuirks.wellHung == 1 && $geneticMappingUpgrade >= 2>>
-									@@.yellow;bigd@@
-								<</if>>
-								<<if getSlave($AS).womb[_ap].genetics.geneticQuirks.rearLipedema == 2>>
-									@@.red;lipe@@
-								<<elseif getSlave($AS).womb[_ap].genetics.geneticQuirks.rearLipedema == 1 && $geneticMappingUpgrade >= 2>>
-									@@.yellow;lipe@@
-								<</if>>
-								<<if getSlave($AS).womb[_ap].genetics.geneticQuirks.wGain == 2>>
-									@@.red;lepti+@@
-								<<elseif getSlave($AS).womb[_ap].genetics.geneticQuirks.wGain == 1 && $geneticMappingUpgrade >= 2>>
-									@@.yellow;lepti+@@
-								<</if>>
-								<<if getSlave($AS).womb[_ap].genetics.geneticQuirks.wLoss == 2>>
-									@@.red;lepti-@@
-								<<elseif getSlave($AS).womb[_ap].genetics.geneticQuirks.wLoss == 1 && $geneticMappingUpgrade >= 2>>
-									@@.yellow;lepti-@@
-								<</if>>
-								<<if getSlave($AS).womb[_ap].genetics.geneticQuirks.mGain == 2>>
-									@@.red;myot+@@
-								<<elseif getSlave($AS).womb[_ap].genetics.geneticQuirks.mGain == 1 && $geneticMappingUpgrade >= 2>>
-									@@.yellow;myot+@@
-								<</if>>
-								<<if getSlave($AS).womb[_ap].genetics.geneticQuirks.mLoss == 2>>
-									@@.red;myot-@@
-								<<elseif getSlave($AS).womb[_ap].genetics.geneticQuirks.mLoss == 1 && $geneticMappingUpgrade >= 2>>
-									@@.yellow;myot-@@
-								<</if>>
-							</div>
+							<<includeDOM fetusAbnormalities(getSlave($AS).womb[_ap])>>
 						<<else>>
 							<<if getSlave($AS).womb[_ap].age > 13>>
 								<div class="indent">