diff --git a/devNotes/twine JS.txt b/devNotes/twine JS.txt
index ed1cc38be1e2460d3425199fa4ffe0295ab73e34..2e8040628a15bfeb6d42123536d904119f9c2bd9 100644
--- a/devNotes/twine JS.txt	
+++ b/devNotes/twine JS.txt	
@@ -9965,17 +9965,17 @@ window.generateGenetics = (function() {
 	let activeMother;
 	let father;
 	let activeFather;
-	let V
+	let V;
 
 	function generateGenetics(actor1, actor2, x) {
 		V = State.variables;
-		genes = {gender: "XX", name: "blank", mother: 0, motherName: "none", father: 0, fatherName: "none", nationality: "Stateless", race: "white", intelligence: 0, face: 0, eyeColor: "brown", hColor: "black", skin: "white", markings: "none", behavioralFlaw: "none", sexualFlaw: "none", pubicHSyle: "bushy", underArmHStyle: "bushy", geneticQuirks: 0};
+		genes = {gender: "XX", name: "blank", surname: 0, mother: 0, motherName: "none", father: 0, fatherName: "none", nationality: "Stateless", race: "white", intelligence: 0, face: 0, eyeColor: "brown", hColor: "black", skin: "white", markings: "none", behavioralFlaw: "none", sexualFlaw: "none", pubicHSyle: "bushy", underArmHStyle: "bushy", geneticQuirks: 0};
 		mother = (actor1 > 0) ? V.genePool.findIndex(function(s) { return s.ID == actor1; }) : V.PC;
-		activeMother = (actor1 > 0) ? V.slaves[actor1] : V.PC;
+		activeMother = (actor1 > 0) ? V.slaves[V.slaveIndices[actor1]] : V.PC;
 		father = (actor2 > 0) ? V.genePool.findIndex(function(s) { return s.ID == actor2; })
 			: (actor2 == -1) ? V.PC
 			: 0;
-		activeFather = (father !== 0 && father.ID > 0) ? V.slaves[actor2]
+		activeFather = (father !== 0 && father.ID > 0) ? V.slaves[V.slaveIndices[actor2]]
 			: (father !== 0 && father.ID == -1) ? V.PC
 			: 0;
 
@@ -9998,6 +9998,8 @@ window.generateGenetics = (function() {
 		genes.sexualFlaw = setSexualFlaw(father, mother);
 		genes.behavioralFlaw = setBehavioralFlaw(father, mother);
 		genes.fetish = setFetish(father, mother);
+		
+		return genes;
 	}
 
 	// gender
@@ -10034,7 +10036,7 @@ window.generateGenetics = (function() {
 	// motherName
 	function setMotherName(activeMother) {
 		let motherName;
-		if (actor1 == -1) {
+		if (activeMother.ID == -1) {
 			motherName = activeMother.name;
 			if (activeMother.surname !== 0 && activeMother.surname !== "") { motherName + " " + activeMother.surname; }
 		} else {
@@ -10060,8 +10062,8 @@ window.generateGenetics = (function() {
 				fatherName = activeFather.slaveName;
 				if (activeFather.slaveSurname !== 0 && activeFather.slaveSurname !== "") { fatherName + " " + activeFather.slaveSurname; }
 			}
+			return fatherName;
 		}
-		return fatherName;
 	}
 
 	// nationality
@@ -10403,10 +10405,373 @@ window.generateGenetics = (function() {
 		return Math.clamp(face, -100, 100);
 	}
 
-	return genes;
+	return generateGenetics;
 
 })();
 
+window.generateChild = function(mother, ova, destination) {
+
+	let V = State.variables;
+	let child = V.activeSlave;
+	let genes = ova.genetics; //maybe just argument this? We'll see.
+	let pregUpgrage = V.pregnancyMonitoringUpgrade;
+
+	if (!destination) { //does extra work for the incubator if defined, otherwise builds a simple object
+		if (genes.gender = "XX") {
+			child.genes == "XX";
+			child.slaveSurname = genes.surname;
+			if (!pregUpgrage) {
+				if (genes.mother == -1) {
+					if (genes.father <= 0) {
+						child.slaveName = "Your daughter";
+					} else {
+						child.slaveName = `Your and ${genes.fatherName}'s daughter`;
+					}
+					child.slaveSurname =  V.PC.surname;
+				} else {
+					if (genes.father == -1) {
+						child.slaveName = `${genes.motherName} and your daughter`;
+						child.slaveSurname =  V.PC.surname;
+					} else if (genes.father > 0) {
+						child.slaveName = `${genes.motherName} and ${genes.fatherName}'s daughter`;
+						let currentMother = getSlave(genes.mother);
+						if (currentMother !== undefined) {
+							if (currentMother.slaveSurname !== 0 && currentMother.slaveSurname !== "") {
+								child.slaveSurname = currentMother.slaveSurname;
+							}
+						} else {
+							let currentFather = getSlave(genes.father);
+							if (currentFather !== undefined) {
+								if (currentFather.slaveSurname !== 0 && currentFather.slaveSurname !== "") {
+									child.slaveSurname = currentFather.slaveSurname;
+								}
+							}
+						}
+					} else {
+						child.slaveName = `${genes.motherName}'s bastard son`;
+						let currentMother = getSlave(genes.mother);
+						if (currentMother !== undefined) {
+							if (currentMother.slaveSurname !== 0 && currentMother.slaveSurname !== "") {
+								child.slaveSurname = currentMother.slaveSurname;
+							}
+						}
+					}
+				}
+			} else {
+				child.slaveName = genes.name;
+			}
+		} else {
+			child.genes == "XY";
+			child.slaveSurname = genes.surname;
+			if (!pregUpgrage) {
+				if (genes.mother == -1) {
+					if (genes.father <= 0) {
+						child.slaveName = "Your son";
+					} else {
+						child.slaveName = `Your and ${genes.fatherName}'s son`;
+					}
+					child.slaveSurname =  V.PC.surname;
+				} else {
+					if (genes.father == -1) {
+						child.slaveName = `${genes.motherName} and your son`;
+						child.slaveSurname =  V.PC.surname;
+					} else if (genes.father > 0) {
+						child.slaveName = `${genes.motherName} and ${genes.fatherName}'s son`;
+						let currentMother = getSlave(genes.mother);
+						if (currentMother !== undefined) {
+							if (currentMother.slaveSurname !== 0 && currentMother.slaveSurname !== "") {
+								child.slaveSurname = currentMother.slaveSurname;
+							}
+						} else {
+							let currentFather = getSlave(genes.father);
+							if (currentFather !== undefined) {
+								if (currentFather.slaveSurname !== 0 && currentFather.slaveSurname !== "") {
+									child.slaveSurname = currentFather.slaveSurname;
+								}
+							}
+						}
+					} else {
+						child.slaveName = `${genes.motherName}'s bastard son`;
+						let currentMother = getSlave(genes.mother);
+						if (currentMother !== undefined) {
+							if (currentMother.slaveSurname !== 0 && currentMother.slaveSurname !== "") {
+								child.slaveSurname = currentMother.slaveSurname;
+							}
+						}
+					}
+				}
+			} else {
+				child.slaveName = genes.name;
+			}
+		}
+
+		child.mother = genes.mother;
+		child.father = genes.father;
+		child.nationality = genes.nationality;
+		child.skin = genes.skin;
+		child.race = genes.race;
+		child.intelligence = genes.intelligence;
+		if (mother.prematureBirth > 0) {
+			if (child.intelligence >= -90) {
+				child.intelligence -= jsRandom(0,10)
+			}
+			child.premature = 1;
+		}
+		child.face = genes.face;
+		child.eyeColor = genes.eyeColor;
+		child.hColor = genes.hColor;
+		child.underArmHStyle = genes.underArmHStyle;
+		child.pubicHStyle = genes.pubicHStyle;
+		child.markings = genes.markings;
+		child.sexualFlaw = genes.sexualFlaw;
+		child.behavioralFlaw = genes.behavioralFlaw;
+		child.fetish = genes.fetish;
+		child.pubicHColor = child.hColor;
+		child.underArmHColor = child.hColor;
+		child.eyebrowHColor = child.hColor;
+		child.birthWeek = child.birthWeek;
+		if (mother.addict > 0) {
+			child.addict = Math.trunc(mother.addict/2);
+		}
+		child.weekAcquired = V.week;
+		if (child.nationality == "Stateless") {
+			if (V.arcologies[0].FSRomanRevivalist > 90) {
+				child.nationality = "Roman Revivalist";
+			} else if (V.arcologies[0].FSAztecRevivalist > 90) {
+				child.nationality = "Aztec Revivalist";
+			} else if (V.arcologies[0].FSEgyptianRevivalist > 90) {
+				child.nationality = "Ancient Egyptian Revivalist";
+			} else if (V.arcologies[0].FSEdoRevivalist > 90) {
+				child.nationality = "Edo Revivalist";
+			} else if (V.arcologies[0].FSArabianRevivalist > 90) {
+				child.nationality = "Arabian Revivalist";
+			} else if (V.arcologies[0].FSChineseRevivalist > 90) {
+				child.nationality = "Ancient Chinese Revivalist";
+			}
+		}
+
+	} else {
+
+		V.activeSlaveOneTimeMinAge = V.targetAge;
+		V.activeSlaveOneTimeMaxAge = V.targetAge;
+		V.one_time_age_overrides_pedo_mode = 1;
+		V.ageAdjustOverride = 1;
+
+		if (genes.gender = "XX") {
+			GenerateNewSlave("XX");
+			child.slaveSurname = genes.surname;
+			if (!pregUpgrage) {
+				if (genes.mother == -1) {
+					if (genes.father <= 0) {
+						child.slaveName = "Your daughter";
+					} else {
+						child.slaveName = `Your and ${genes.fatherName}'s daughter`;
+					}
+					child.slaveSurname =  V.PC.surname;
+				} else {
+					if (genes.father == -1) {
+						child.slaveName = `${genes.motherName} and your daughter`;
+						child.slaveSurname =  V.PC.surname;
+					} else if (genes.father > 0) {
+						child.slaveName = `${genes.motherName} and ${genes.fatherName}'s daughter`;
+						let currentMother = getSlave(genes.mother);
+						if (currentMother !== undefined) {
+							if (currentMother.slaveSurname !== 0 && currentMother.slaveSurname !== "") {
+								child.slaveSurname = currentMother.slaveSurname;
+							}
+						} else {
+							let currentFather = getSlave(genes.father);
+							if (currentFather !== undefined) {
+								if (currentFather.slaveSurname !== 0 && currentFather.slaveSurname !== "") {
+									child.slaveSurname = currentFather.slaveSurname;
+								}
+							}
+						}
+					} else {
+						child.slaveName = `${genes.motherName}'s bastard son`;
+						let currentMother = getSlave(genes.mother);
+						if (currentMother !== undefined) {
+							if (currentMother.slaveSurname !== 0 && currentMother.slaveSurname !== "") {
+								child.slaveSurname = currentMother.slaveSurname;
+							}
+						}
+					}
+				}
+			} else {
+				child.slaveName = genes.name;
+			}
+		} else {
+			GenerateNewSlave("XY");
+			child.slaveSurname = genes.surname;
+			if (!pregUpgrage) {
+				if (genes.mother == -1) {
+					if (genes.father <= 0) {
+						child.slaveName = "Your son";
+					} else {
+						child.slaveName = `Your and ${genes.fatherName}'s son`;
+					}
+					child.slaveSurname =  V.PC.surname;
+				} else {
+					if (genes.father == -1) {
+						child.slaveName = `${genes.motherName} and your son`;
+						child.slaveSurname =  V.PC.surname;
+					} else if (genes.father > 0) {
+						child.slaveName = `${genes.motherName} and ${genes.fatherName}'s son`;
+						let currentMother = getSlave(genes.mother);
+						if (currentMother !== undefined) {
+							if (currentMother.slaveSurname !== 0 && currentMother.slaveSurname !== "") {
+								child.slaveSurname = currentMother.slaveSurname;
+							}
+						} else {
+							let currentFather = getSlave(genes.father);
+							if (currentFather !== undefined) {
+								if (currentFather.slaveSurname !== 0 && currentFather.slaveSurname !== "") {
+									child.slaveSurname = currentFather.slaveSurname;
+								}
+							}
+						}
+					} else {
+						child.slaveName = `${genes.motherName}'s bastard son`;
+						let currentMother = getSlave(genes.mother);
+						if (currentMother !== undefined) {
+							if (currentMother.slaveSurname !== 0 && currentMother.slaveSurname !== "") {
+								child.slaveSurname = currentMother.slaveSurname;
+							}
+						}
+					}
+				}
+			} else {
+				child.slaveName = genes.name;
+			}
+		}
+
+		child.mother = genes.mother;
+		child.father = genes.father;
+		child.nationality = genes.nationality;
+		child.skin = genes.skin;
+		child.origSkin = child.skin;
+		child.race = genes.race;
+		child.origRace = child.race;
+		child.intelligence = genes.intelligence;
+		if (mother.prematureBirth > 0) {
+			if (child.intelligence >= -90) {
+				child.intelligence -= jsRandom(0,10)
+			}
+			child.premature = 1;
+		}
+		child.face = genes.face;
+		child.eyeColor = genes.eyeColor;
+		child.origEye = child.eyeColor;
+		child.hColor = genes.hColor;
+		child.origHColor = child.HColor;
+		child.underArmHStyle = genes.underArmHStyle;
+		child.pubicHStyle = genes.pubicHStyle;
+		child.markings = genes.markings;
+		child.sexualFlaw = genes.sexualFlaw;
+		child.behavioralFlaw = genes.behavioralFlaw;
+		child.fetish = genes.fetish;
+		child.pubicHColor = child.hColor;
+		child.underArmHColor = child.hColor;
+		child.eyebrowHColor = child.hColor;
+		child.birthWeek = child.birthWeek;
+		child.energy = 0;
+		child.anus = 0;
+		if (child.vagina > 0) {child.vagina = 0;}
+		if (child.fetish != "none") {child.fetishStrength = 20;}
+		if (child.dick > 0) {
+			child.foreskin = 1;
+			child.balls = 1;
+			child.scrotum = 1;
+		}
+		if (mother.addict > 0) {
+			child.addict = Math.trunc(mother.addict/2);
+		}
+		child.career = "a slave since birth";
+		child.birthName = $activeSlave.slaveName;
+		child.birthSurname = $activeSlave.slaveSurname;
+		child.devotion = 0;
+		child.trust = 0;
+		child.weekAcquired = V.week;
+		if (child.nationality == "Stateless") {
+			if (V.arcologies[0].FSRomanRevivalist > 90) {
+				child.nationality = "Roman Revivalist";
+			} else if (V.arcologies[0].FSAztecRevivalist > 90) {
+				child.nationality = "Aztec Revivalist";
+			} else if (V.arcologies[0].FSEgyptianRevivalist > 90) {
+				child.nationality = "Ancient Egyptian Revivalist";
+			} else if (V.arcologies[0].FSEdoRevivalist > 90) {
+				child.nationality = "Edo Revivalist";
+			} else if (V.arcologies[0].FSArabianRevivalist > 90) {
+				child.nationality = "Arabian Revivalist";
+			} else if (V.arcologies[0].FSChineseRevivalist > 90) {
+				child.nationality = "Ancient Chinese Revivalist";
+			}
+		}
+
+		child.weight = -100;
+		child.muscles = -100;
+		child.boobs = 0;
+		child.butt = 0;
+		child.chem = 990;
+		child.areolaePiercing = 0;
+		child.corsetPiercing = 0;
+		child.boobsImplant = 0;
+		child.boobsImplantType = 0;
+		child.nipplesPiercing = 0;
+		child.areolaePiercing = 0;
+		child.lactation = 0;
+		child.hipsImplant = 0;
+		child.buttImplant = 0;
+		child.buttImplantType = 0;
+		child.lipsImplant = 0;
+		child.lipsPiercing = 0;
+		child.tonguePiercing = 0;
+		child.vaginaPiercing = 0;
+		child.preg = 0;
+		child.pregType = 0;
+		child.pregKnown = 0;
+		child.belly = 0;
+		child.bellyPreg = 0;
+		child.bellyFluid = 0;
+		child.bellyImplant = -1;
+		child.clitPiercing = 0;
+		child.dickPiercing = 0;
+		child.makeup = 0;
+		child.nails = 0;
+		child.earPiercing = 0;
+		child.nosePiercing = 0;
+		child.eyebrowPiercing = 0;
+		child.stampTat = 0;
+		child.bellyTat = 0;
+		child.anusPiercing = 0;
+		child.anusTat = 0;
+		child.shouldersTat = 0;
+		child.armsTat = 0;
+		child.legsTat = 0;
+		child.backTat = 0;
+		child.combatSkill = 0;
+		child.whoreSkill = 0;
+		child.entertainSkill = 0;
+		child.oralSkill = 0;
+		child.analSkill = 0;
+		child.vaginalSkill = 0;
+		child.accent = 4;
+		child.canRecruit = 0;
+		child.hStyle = "long";
+		child.hLength = 300;
+		if (V.incubatorImprintSetting == "terror") {
+			child.origin = "She was conditioned from birth into mindless terror in an aging tank.";
+			child.tankBaby = 2;
+		} else {
+			child.origin = "She was conditioned from birth into trusting obedience in an aging tank.";
+			child.tankBaby = 1;
+		}
+		child.intelligenceImplant = 0;
+		child.navelPiercing = 0;
+	}
+	return child;
+}
+
 /*:: wombJS [script]*/
 
 /*
diff --git a/src/pregmod/sePlayerBirth.tw b/src/pregmod/sePlayerBirth.tw
index 86987acb3f08d7ab50c5a985739f492f3fa28a9d..61f846fdfde0af185c25e30a34e454c89c698f7b 100644
--- a/src/pregmod/sePlayerBirth.tw
+++ b/src/pregmod/sePlayerBirth.tw
@@ -18,9 +18,9 @@ PC.pregSource documentation
 
 
 <<if $PC.births == 0>>
-	<<set $badBirth = 30+($PC.pregType*4)>>
+	<<set _badBirth = 30+($PC.pregType*4)>>
 <<else>>
-	<<set $badBirth = 10>>
+	<<set _badBirth = 10>>
 <</if>>
 <<set $PC.curBabies = WombBirth($PC, 35)>>
 <<set _curBabies = $PC.curBabies.length>> 
@@ -40,32 +40,40 @@ PC.pregSource documentation
  * PC will not support partial birth - even if she happens to be pregnant at different stages at once, undeveloped babies will be dead as result.
  * _stilBirth currently not used - it's just for future improvements. */
 <<set $PC.preg = 0, $PC.pregKnown = 0, $PC.labor = 0, $PC.births += _curBabies>>
-<<if $PC.pregSource == 0>>
-	<<set $PC.birthOther += _curBabies>>
-<<elseif $PC.pregSource == -1>>
-	<<set $PC.birthSelf += _curBabies>>
-<<elseif $PC.pregSource == -2>>
-	<<set $PC.birthCitizen += _curBabies>>
-<<elseif $PC.pregSource == -3>>
-	<<set $PC.birthMaster += _curBabies>>
-<<elseif $PC.pregSource == -4>>
-	<<set $PC.birthArcOwner += _curBabies>>
-<<elseif $PC.pregSource == -5>>
-	<<set $PC.birthClient += _curBabies>>
-<<elseif $PC.pregSource == -6>>
-	<<set $PC.birthElite += _curBabies>>
-<<elseif $PC.pregSource == -7>>
-	<<set $PC.birthLab += _curBabies>>
-<<else>>
-	<<set $PC.birthDegenerate += _curBabies>>
-	<<set _babyDaddy = $slaveIndices[$PC.pregSource]>>
-	<<if def _babyDaddy>>
-		<<set $slaves[_babyDaddy].PCChildrenFathered += _curBabies>>
+
+/* setting the tallies for each type of child born */
+<<set _others = 0, _self = 0, _citizens = 0, _oldMaster = 0, _arcOwner = 0, _clients = 0, _elite = 0, _lab = 0, _slaveFathers = [], _slavesLength = 0>>
+<<for _spb = 0; _spb < $PC.curBabies.length; _spb++>>
+	<<if $PC.curBabies[_spb].fatherID == 0>>
+		<<set _others++>>
+	<<elseif $PC.curBabies[_spb].fatherID == -1>>
+		<<set _self++>>
+	<<elseif $PC.curBabies[_spb].fatherID == -2>>
+		<<set _citizens++>>
+	<<elseif $PC.curBabies[_spb].fatherID == -3>>
+		<<set _oldMaster++>>
+	<<elseif $PC.curBabies[_spb].fatherID == -4>>
+		<<set _arcOwner++>>
+	<<elseif $PC.curBabies[_spb].fatherID == -5>>
+		<<set _clients++>>
+	<<elseif $PC.curBabies[_spb].fatherID == -6>>
+		<<set _elite++>>
+	<<elseif $PC.curBabies[_spb].fatherID == -7>>
+		<<set _lab++>>
+	<<else>>
+		<<set _babyDaddy = $slaveIndices[$PC.curBabies[_spb].fatherID]>>
+		<<if def _babyDaddy>>
+			<<set _slaveFathers.push($slaves[_babyDaddy])>>
+			<<set _slavesLength++>>
+		<<else>>
+			<<set _others++>>
+		<</if>>
 	<</if>>
 <</if>>
 
-<<if $PC.pregSource == -6>>
+<<if _elite > 0>> /* for simplicity's sake, not going to allow other embryos to be added during a elite pregnancy */
 	Since you are heavily pregnant with a child of the Societal Elite, you are quickly taken to the finest clinic the arcology has to offer. After a quick sedation, you awake to find your belly no longer round with child; that and a note stating your next breeding partner and a notice that <<print cashFormat(50000)>> has been added to your account. The Societal Elite are @@.green;very pleased@@ at their new addition to the ranks. You just wish you could have seen your <<if _curBabies == 1>>little <<if _gender == "XX">>girl<<else>>boy<</if>> before they took <<if _gender == "XX">>her<<else>>him<</if>><<else>>babies before they took them<</if>> away to be raised into a proper member of the future world.
+	<<set $PC.birthElite += _elite>>
 	<<if $PC.ovaryAge >= 55 && $playerAging != 0>>
 		You are getting too old to have children; you feel like <<if _curBabies > 1>>they<<else>>this<</if>> may be your last.
 		<<set $PC.preg = -2>>
@@ -119,7 +127,7 @@ While sitting at your desk planning your day, @@.lime;your water breaks,@@ thoro
 <</if>>
 <br><br>
 You arrange yourself to give birth, relaxing until your body urges you to begin bearing down and pushing your child into the world.<<if _concubinePresent == 1>>$Concubine.slaveName settles in beside you, one hand soothing your contraction wracked middle and the other <<if $PC.dick == 1>>stroking your hardening dick<<else>>teasing your stiffening clit<</if>>.<</if>>
-<<if $badBirth > random(1,100)>> /* shits going wrong */
+<<if _badBirth > random(1,100)>> /* shits going wrong */
 	<<if $Nurse != 0>>
 		<<setLocalPronouns $Nurse>>
 		You keep pushing and pushing, but your child is not coming out.<<if _concubinePresent == 1>> $Concubine.slaveName shifts to massaging your gravid middle<<if canTalk($Concubine)>>, while whispering words of encouragement into your ear<</if>>. Until $Nurse.slaveName shoos _him2 away so $he can take over and get this baby out of you.<</if>> $Nurse.slaveName was prepared for this possibility, adjusts your position and timings, and before long is holding your @@.lime;new baby <<if _gender == "XX">>girl<<else>>boy<</if>>@@ in $his arms.
@@ -424,66 +432,11 @@ You arrange yourself to give birth, relaxing until your body urges you to begin
 
 <<if _gaveBirth == 0>>
 
-<<if _curBabies == 1>>
+	<<set $PC.birthOther += _others, $PC.birthSelf += _self, $PC.birthCitizen += _citizens, $PC.birthMaster += _oldMaster, $PC.birthArcOwner += _arcOwner, $PC.birthClient += _clients, $PC.birthElite += _elite, $PC.birthLab += _lab, $PC.birthDegenerate += _slavesLength>>
 
-	$PC.curBabies[0]
-	<<set $activeSlave = applyGenetics($PC, $PC.curBabies[0])>>
+	<<if _curBabies == 1>>
 
-	<<if $activeSlave.race == $PC.race>>
-		<<set _PCDegree++>>
-	<</if>>
-	<<if $activeSlave.hColor == $PC.hColor>>
-		<<set _PCDegree++>>
-	<</if>>
-	<<if $activeSlave.skin == $PC.skin>>
-		<<set _PCDegree++>>
-	<</if>>
-	<<if $activeSlave.eyeColor == $PC.eyeColor>>
-		<<set _PCDegree++>>
-	<</if>>
-
-	Your little <<if _gender == "XX">>girl<<else>>boy<</if>>
-	<<if $PC.pregSource == -1>>
-		looks exactly like you, in fact, the resemblance seems uncanny. Since <<if _gender == "XX">>she<<else>>he<</if>> has the exact same genetics as you, <<if _gender == "XX">>she<<else>>he<</if>>'ll likely look almost identical to you when <<if _gender == "XX">>she<<else>>he<</if>>'s your age.
-	<<elseif _PCDegree == 4>>
-		looks just like you; <<if _gender == "XX">>she<<else>>he<</if>> will likely grow up to closely resemble yourself.
-	<<elseif $activeSlave.eyeColor == $PC.eyeColor>>
-		has your lovely $PC.eyeColor eyes.
-	<<elseif _PCDegree > 0>>
-		looks a little like you, enough that <<if _gender == "XX">>she<<else>>he<</if>>'ll be recognizable as yours.
-	<<else>>
-		looks nothing like you; it's hard to believe <<if _gender == "XX">>she's your daughter<<else>>he's you son<</if>>
-	<</if>>
-
-	<<if $PC.reservedChildren > 0>>
-		You set <<if _gender == "XX">>her<<else>>him<</if>> aside for incubation.
-		<<include "Incubator Workaround">>
-	<</if>>
-	<<if $PC.reservedChildrenNursery > 0>>
-		You set <<if _gender == "XX">>her<<else>>him<</if>> aside for incubation.
-		<<include "Nursery Workaround">>
-	<</if>>
-	<<set $PC.curBabies.shift()>>
-
-<<elseif _curBabies > 1>>
-	<<set _identicalChildGen = 0, _shiftDegree = 0>>
-
-	<<for _p = 0; _p < _curBabies; _p++>>
-		<<if _identicalChildGen == 0>>
-			<<if _p == $PC.curBabies.length-1 && $PC.curBabies.length > 1 && $PC.curBabies[_p].identical == 1>> /* catch for improperly placed identical twin flag to still generate*/
-				<<set _twin = clone($activeSlave)>>
-				<<set _twin.ID = $IDNumber++>>
-				<<set $activeSlave = 0>>
-				<<set $activeSlave = _twin>>
-			<<else>>
-				<<include "Generate Child">>
-			<</if>>
-		<<else>>
-			<<set _twin = clone($activeSlave)>>
-			<<set _twin.ID = $IDNumber++>>
-			<<set $activeSlave = 0>>
-			<<set $activeSlave = _twin>>
-		<</if>>
+		<<set $activeSlave = applyGenetics($PC, $PC.curBabies[0])>>
 
 		<<if $activeSlave.race == $PC.race>>
 			<<set _PCDegree++>>
@@ -498,11 +451,9 @@ You arrange yourself to give birth, relaxing until your body urges you to begin
 			<<set _PCDegree++>>
 		<</if>>
 
-		<<if _p == 0>>Your first<<else>>The next<</if>> little <<if _gender == "XX">>girl<<else>>boy<</if>>
-		<<if _identicalChildGen == 1>>
-			looks exactly like the previous; they're identical twins.
-		<<elseif $PC.pregSource == -6>>
-			looks exactly like you<<if _p == 0>>, in fact, the resemblance seems uncanny. Since <<if _gender == "XX">>she<<else>>he<</if>> has the exact same genetics as you, <<if _gender == "XX">>she<<else>>he<</if>>'ll likely look almost identical to you when <<if _gender == "XX">>she<<else>>he<</if>>'s your age<</if>>. Every one of your children look this way; it's kind of hard to tell them apart.
+		Your little <<if _gender == "XX">>girl<<else>>boy<</if>>
+		<<if $PC.pregSource == -1>>
+			looks exactly like you, in fact, the resemblance seems uncanny. Since <<if _gender == "XX">>she<<else>>he<</if>> has the exact same genetics as you, <<if _gender == "XX">>she<<else>>he<</if>>'ll likely look almost identical to you when <<if _gender == "XX">>she<<else>>he<</if>>'s your age.
 		<<elseif _PCDegree == 4>>
 			looks just like you; <<if _gender == "XX">>she<<else>>he<</if>> will likely grow up to closely resemble yourself.
 		<<elseif $activeSlave.eyeColor == $PC.eyeColor>>
@@ -512,128 +463,185 @@ You arrange yourself to give birth, relaxing until your body urges you to begin
 		<<else>>
 			looks nothing like you; it's hard to believe <<if _gender == "XX">>she's your daughter<<else>>he's you son<</if>>
 		<</if>>
+
 		<<if $PC.reservedChildren > 0>>
 			You set <<if _gender == "XX">>her<<else>>him<</if>> aside for incubation.
 			<<include "Incubator Workaround">>
-			<<set _shiftDegree++>>
-			<<set $PC.reservedChildren-- >>
-		<</if>>
-		<<if $PC.reservedChildrenNursery > 0>>
+		<<elseif $PC.reservedChildrenNursery > 0>>
 			You set <<if _gender == "XX">>her<<else>>him<</if>> aside for incubation.
 			<<include "Nursery Workaround">>
-			<<set _shiftDegree++>>
-			<<set $PC.reservedChildrenNursery-- >>
 		<</if>>
-		<<if $PC.curBabies[_p].identical === 1>>
-			<<set _identicalChildGen = 1>>
-		<<else>>
-			<<set _identicalChildGen = 0>>
-			<<if $seeDicksAffectsPregnancy == 1>>
-				<<set $babyGender = Math.floor(Math.random()*100) < $seeDicks ? 2 : 1>>
+		<<set $PC.curBabies.shift()>>
+
+	<<elseif _curBabies > 1>>
+		<<set _identicalChildGen = 0, _shiftDegree = 0>>
+
+		<<for _p = 0; _p < _curBabies; _p++>>
+			<<if _identicalChildGen == 0>>
+				<<if _p == $PC.curBabies.length-1 && $PC.curBabies.length > 1 && $PC.curBabies[_p].identical == 1>> /* catch for improperly placed identical twin flag to still generate*/
+					<<set _twin = clone($activeSlave)>>
+					<<set _twin.ID = $IDNumber++>>
+					<<set $activeSlave = 0>>
+					<<set $activeSlave = _twin>>
+				<<else>>
+					<<include "Generate Child">>
+				<</if>>
 			<<else>>
-				<<set $babyGender = random(1,2)>>
+				<<set _twin = clone($activeSlave)>>
+				<<set _twin.ID = $IDNumber++>>
+				<<set $activeSlave = 0>>
+				<<set $activeSlave = _twin>>
 			<</if>>
-		<</if>>
-	<</for>>
-	<<if _shiftDegree > 0>>
-		<<for _spb = 0; _spb < _shiftDegree; _spb++>>
-			<<set $PC.curBabies.shift()>>
-		<</for>>
-	<</if>>
-
-<</if>>
 
+			<<if $activeSlave.race == $PC.race>>
+				<<set _PCDegree++>>
+			<</if>>
+			<<if $activeSlave.hColor == $PC.hColor>>
+				<<set _PCDegree++>>
+			<</if>>
+			<<if $activeSlave.skin == $PC.skin>>
+				<<set _PCDegree++>>
+			<</if>>
+			<<if $activeSlave.eyeColor == $PC.eyeColor>>
+				<<set _PCDegree++>>
+			<</if>>
 
-<<if $PC.pregSource > 0 && _curBabies > 0>>
-	<<set _pb = $slaveIndices[$PC.pregSource]>>
-	<<if def _pb>>
-		<<if $arcologies[0].FSRestartDecoration == 100 && $eugenicsFullControl != 1>>
-			Word spreads fast through your peers that you gave birth to <<if _curBabies > 1>>low class infants<<else>>a low class child<</if>> @@.red;utterly devastating your standing among the Elite.@@
-			<<set $failedElite += 200>>
-		<<elseif $arcologies[0].FSChattelReligionistLaw == 1>>
-			Rumors spread that The Prophet gave birth to a slave's child<<if _curBabies > 1>>ren<</if>>.
-			<<if $arcologies[0].FSSupremacist != "unset">>
-				<<if $slaves[_pb].race != $arcologies[0].FSSupremacistRace>>
-					Word is that your child<<if _curBabies > 1>>ren were<<else>> was<</if>> not $arcologies[0].FSSupremacistRace. As The Prophet saw fit to bear such a child, society views it as a sign to @@.red;reject $arcologies[0].FSSupremacistRace supremacy.@@
-					<<set $arcologies[0].FSSupremacist -= 120>>
-				<</if>>
+			<<if _p == 0>>Your first<<else>>The next<</if>> little <<if _gender == "XX">>girl<<else>>boy<</if>>
+			<<if _identicalChildGen == 1>>
+				looks exactly like the previous; they're identical twins.
+			<<elseif $PC.pregSource == -6>>
+				looks exactly like you<<if _p == 0>>, in fact, the resemblance seems uncanny. Since <<if _gender == "XX">>she<<else>>he<</if>> has the exact same genetics as you, <<if _gender == "XX">>she<<else>>he<</if>>'ll likely look almost identical to you when <<if _gender == "XX">>she<<else>>he<</if>>'s your age<</if>>. Every one of your children look this way; it's kind of hard to tell them apart.
+			<<elseif _PCDegree == 4>>
+				looks just like you; <<if _gender == "XX">>she<<else>>he<</if>> will likely grow up to closely resemble yourself.
+			<<elseif $activeSlave.eyeColor == $PC.eyeColor>>
+				has your lovely $PC.eyeColor eyes.
+			<<elseif _PCDegree > 0>>
+				looks a little like you, enough that <<if _gender == "XX">>she<<else>>he<</if>>'ll be recognizable as yours.
+			<<else>>
+				looks nothing like you; it's hard to believe <<if _gender == "XX">>she's your daughter<<else>>he's you son<</if>>
 			<</if>>
-			<<if $arcologies[0].FSSubjugationist != "unset">>
-				<<if $slaves[_pb].race == $arcologies[0].FSSubjugationistRace>>
-					In addition, The Prophet's womb bore <<if _curBabies == 1>>a <</if>>$arcologies[0].FSSubjugationistRace child<<if _curBabies > 1>>ren<</if>>, surely a sign to end @@.red;reject $arcologies[0].FSSubjugationistRace subjugation.@@
-					<<set $arcologies[0].FSSubjugationist -= 120>>
-				<</if>>
+			<<if $PC.reservedChildren > 0>>
+				You set <<if _gender == "XX">>her<<else>>him<</if>> aside for incubation.
+				<<include "Incubator Workaround">>
+				<<set _shiftDegree++>>
+				<<set $PC.reservedChildren-- >>
 			<</if>>
-		<<else>>
-			Rumors spread that your child<<if _curBabies > 1>>ren were<<else>> was<</if>> fathered by a slave, @@.red;harming your lasting reputation.@@
-			<<set $PC.degeneracy += 20>>
-			<<if $arcologies[0].FSSupremacist != "unset">>
-				<<if $slaves[_pb].race != $arcologies[0].FSSupremacistRace>>
-					Furthermore, word is that your child<<if _curBabies > 1>>ren were<<else>> was<</if>> not $arcologies[0].FSSupremacistRace, @@.red;further hurting your lasting reputation.@@
-					<<set $PC.degeneracy += 10>>
-				<</if>>
+			<<if $PC.reservedChildrenNursery > 0>>
+				You set <<if _gender == "XX">>her<<else>>him<</if>> aside for incubation.
+				<<include "Nursery Workaround">>
+				<<set _shiftDegree++>>
+				<<set $PC.reservedChildrenNursery-- >>
 			<</if>>
-			<<if $arcologies[0].FSSubjugationist != "unset">>
-				<<if $slaves[_pb].race == $arcologies[0].FSSubjugationistRace>>
-					In addition, there is a nasty rumor that you gave birth to <<if _curBabies == 1>>a <</if>>$arcologies[0].FSSubjugationistRace child<<if _curBabies > 1>>ren<</if>>, @@.red;devastating your lasting reputation.@@
-					<<set $PC.degeneracy += 50>>
+			<<if $PC.curBabies[_p].identical === 1>>
+				<<set _identicalChildGen = 1>>
+			<<else>>
+				<<set _identicalChildGen = 0>>
+				<<if $seeDicksAffectsPregnancy == 1>>
+					<<set $babyGender = Math.floor(Math.random()*100) < $seeDicks ? 2 : 1>>
+				<<else>>
+					<<set $babyGender = random(1,2)>>
 				<</if>>
 			<</if>>
+		<</for>>
+		<<if _shiftDegree > 0>>
+			<<for _spb = 0; _spb < _shiftDegree; _spb++>>
+				<<set $PC.curBabies.shift()>>
+			<</for>>
 		<</if>>
+
 	<</if>>
-<</if>>
 
-/* -------------------- Now curBabies counts live, birthed babies who haven't been placed in the incubator. */
-<<set _curBabies = $PC.curBabies.length>>
 
-<<if _curBabies > 0>>
-	<br><br>
-	Now you are faced with a decision of what to do with your <<if _pregTypeDecrecement > 0>>remaining<<else>>new<</if>> child<<if _curBabies > 1>>ren<</if>>. You're far too busy to keep <<if _curBabies > 1>>them<<else>>it<</if>> yourself, but you could @@.orange;send them to a boarding school to be raised until they are of age to serve as your heir.@@ Other options include sending them to @@.orange;become a slave at a slave orphanage,@@ sending them to @@.orange;a citizen school,@@ to be brought up coequal with the arcology's other young people, or sending them to be @@.orange;raised privately,@@ with expert care and tutoring.
-	<<if $arcologies[0].FSRepopulationFocus > 40>>
-		Of course, there are also the @@.orange;breeding schools,@@ where your
-		<<if _curBabies == 1>>
-			<<if _gender == "XX">>
-				daughter will be taught the joys of motherhood up until she is around $fertilityAge years old, when she will be impregnated with her first child.
+	<<if $PC.pregSource > 0 && _curBabies > 0>>
+		<<set _pb = $slaveIndices[$PC.pregSource]>>
+		<<if def _pb>>
+			<<if $arcologies[0].FSRestartDecoration == 100 && $eugenicsFullControl != 1>>
+				Word spreads fast through your peers that you gave birth to <<if _curBabies > 1>>low class infants<<else>>a low class child<</if>> @@.red;utterly devastating your standing among the Elite.@@
+				<<set $failedElite += 200>>
+			<<elseif $arcologies[0].FSChattelReligionistLaw == 1>>
+				Rumors spread that The Prophet gave birth to a slave's child<<if _curBabies > 1>>ren<</if>>.
+				<<if $arcologies[0].FSSupremacist != "unset">>
+					<<if $slaves[_pb].race != $arcologies[0].FSSupremacistRace>>
+						Word is that your child<<if _curBabies > 1>>ren were<<else>> was<</if>> not $arcologies[0].FSSupremacistRace. As The Prophet saw fit to bear such a child, society views it as a sign to @@.red;reject $arcologies[0].FSSupremacistRace supremacy.@@
+						<<set $arcologies[0].FSSupremacist -= 120>>
+					<</if>>
+				<</if>>
+				<<if $arcologies[0].FSSubjugationist != "unset">>
+					<<if $slaves[_pb].race == $arcologies[0].FSSubjugationistRace>>
+						In addition, The Prophet's womb bore <<if _curBabies == 1>>a <</if>>$arcologies[0].FSSubjugationistRace child<<if _curBabies > 1>>ren<</if>>, surely a sign to end @@.red;reject $arcologies[0].FSSubjugationistRace subjugation.@@
+						<<set $arcologies[0].FSSubjugationist -= 120>>
+					<</if>>
+				<</if>>
 			<<else>>
-				son will be taught it is his duty to fuck every slavegirl he sees without a baby bump pregnant.
+				Rumors spread that your child<<if _curBabies > 1>>ren were<<else>> was<</if>> fathered by a slave, @@.red;harming your lasting reputation.@@
+				<<set $PC.degeneracy += 20>>
+				<<if $arcologies[0].FSSupremacist != "unset">>
+					<<if $slaves[_pb].race != $arcologies[0].FSSupremacistRace>>
+						Furthermore, word is that your child<<if _curBabies > 1>>ren were<<else>> was<</if>> not $arcologies[0].FSSupremacistRace, @@.red;further hurting your lasting reputation.@@
+						<<set $PC.degeneracy += 10>>
+					<</if>>
+				<</if>>
+				<<if $arcologies[0].FSSubjugationist != "unset">>
+					<<if $slaves[_pb].race == $arcologies[0].FSSubjugationistRace>>
+						In addition, there is a nasty rumor that you gave birth to <<if _curBabies == 1>>a <</if>>$arcologies[0].FSSubjugationistRace child<<if _curBabies > 1>>ren<</if>>, @@.red;devastating your lasting reputation.@@
+						<<set $PC.degeneracy += 50>>
+					<</if>>
+				<</if>>
 			<</if>>
-		<<else>>
-			<<if _gender == "XX">>
-				daughters will be taught the joys of motherhood up until they are around $fertilityAge years old, when they will be impregnated for the first time.<<if _curBabies > 1>> They say multiples run in families, so your daughters should blossom into quite the fertile breeders.<</if>>
+		<</if>>
+	<</if>>
+
+	/* -------------------- Now curBabies counts live, birthed babies who haven't been placed in the incubator. */
+	<<set _curBabies = $PC.curBabies.length>>
+
+	<<if _curBabies > 0>>
+		<br><br>
+		Now you are faced with a decision of what to do with your <<if _pregTypeDecrecement > 0>>remaining<<else>>new<</if>> child<<if _curBabies > 1>>ren<</if>>. You're far too busy to keep <<if _curBabies > 1>>them<<else>>it<</if>> yourself, but you could @@.orange;send them to a boarding school to be raised until they are of age to serve as your heir.@@ Other options include sending them to @@.orange;become a slave at a slave orphanage,@@ sending them to @@.orange;a citizen school,@@ to be brought up coequal with the arcology's other young people, or sending them to be @@.orange;raised privately,@@ with expert care and tutoring.
+		<<if $arcologies[0].FSRepopulationFocus > 40>>
+			Of course, there are also the @@.orange;breeding schools,@@ where your
+			<<if _curBabies == 1>>
+				<<if _gender == "XX">>
+					daughter will be taught the joys of motherhood up until she is around $fertilityAge years old, when she will be impregnated with her first child.
+				<<else>>
+					son will be taught it is his duty to fuck every slavegirl he sees without a baby bump pregnant.
+				<</if>>
 			<<else>>
-				sons will be taught it is their duty to fuck every slavegirl they sees without a baby bump pregnant.
+				<<if _gender == "XX">>
+					daughters will be taught the joys of motherhood up until they are around $fertilityAge years old, when they will be impregnated for the first time.<<if _curBabies > 1>> They say multiples run in families, so your daughters should blossom into quite the fertile breeders.<</if>>
+				<<else>>
+					sons will be taught it is their duty to fuck every slavegirl they sees without a baby bump pregnant.
+				<</if>>
 			<</if>>
 		<</if>>
+		<<if $Cash4Babies == 1>>
+			<<set _seed = random(1,10)>>
+			Alternatively, since it is @@.orange;legal to sell slave babies@@, your child should be worth quite a pretty ¤ at auction.
+		<</if>>
+		<br><br>
+		<span id="choice">What will it be?
+		<br>
+		<<link "Boarding School">><<replace "#choice">><<print "You have decided to send them away to be raised in your stead.">><</replace>><</link>> | 
+		<<link "Slave Orphanage">><<replace "#choice">><<print "You have decided to send them to a slave orphanage to be raised to $minimumSlaveAge and sold. Perhaps you'll even see them again, though you are unlikely to recognize them if you do.">><</replace>><<set $slaveOrphanageTotal += _curBabies>><</link>> |
+		<<link "Citizen School">><<replace "#choice">><<print "You have decided to send them to a citizen school to become a future citizen. Perhaps you'll even see them again, though you are unlikely to recognize them if you do.">><</replace>><<set $citizenOrphanageTotal += _curBabies>><</link>> |
+		<<link "Privately Raised">><<replace "#choice">><<print "You have decided to send them to be privately raised. Perhaps you'll even see them again, though it's unlikely that there will be any connection between you. At least you'll know they've been properly reared.">><</replace>><<set $privateOrphanageTotal += _curBabies>><</link>>
+		<<if $arcologies[0].FSRepopulationFocus > 40>>
+			| <<link "Breeding School">><<replace "#choice">><<print "You have decided to send them to be raised into a proper breeder. Perhaps you'll even see them again, though it's unlikely you'll recognize them with their reproduction focused body.">><</replace>><<set $breederOrphanageTotal += _curBabies>><</link>>
+		<</if>>
+		<<if $Cash4Babies == 1>> | <<link "Auction Them">><<replace "#choice">><<print "You send the child<<if _curBabies > 1>>ren<</if>> to be sold at auction amongst other prestigious slaves. The winning bid for your offspring came in at @@.yellowgreen;<<print cashFormat(1000*_seed*_curBabies)>>.@@">><</replace>><<set $cash += 1000*_seed*_curBabies>><</link>><</if>>
+		</span>
 	<</if>>
-	<<if $Cash4Babies == 1>>
-		<<set _seed = random(1,10)>>
-		Alternatively, since it is @@.orange;legal to sell slave babies@@, your child should be worth quite a pretty ¤ at auction.
-	<</if>>
-	<br><br>
-	<span id="choice">What will it be?
-	<br>
-	<<link "Boarding School">><<replace "#choice">><<print "You have decided to send them away to be raised in your stead.">><</replace>><</link>> | 
-	<<link "Slave Orphanage">><<replace "#choice">><<print "You have decided to send them to a slave orphanage to be raised to $minimumSlaveAge and sold. Perhaps you'll even see them again, though you are unlikely to recognize them if you do.">><</replace>><<set $slaveOrphanageTotal += _curBabies>><</link>> |
-	<<link "Citizen School">><<replace "#choice">><<print "You have decided to send them to a citizen school to become a future citizen. Perhaps you'll even see them again, though you are unlikely to recognize them if you do.">><</replace>><<set $citizenOrphanageTotal += _curBabies>><</link>> |
-	<<link "Privately Raised">><<replace "#choice">><<print "You have decided to send them to be privately raised. Perhaps you'll even see them again, though it's unlikely that there will be any connection between you. At least you'll know they've been properly reared.">><</replace>><<set $privateOrphanageTotal += _curBabies>><</link>>
-	<<if $arcologies[0].FSRepopulationFocus > 40>>
-		| <<link "Breeding School">><<replace "#choice">><<print "You have decided to send them to be raised into a proper breeder. Perhaps you'll even see them again, though it's unlikely you'll recognize them with their reproduction focused body.">><</replace>><<set $breederOrphanageTotal += _curBabies>><</link>>
-	<</if>>
-	<<if $Cash4Babies == 1>> | <<link "Auction Them">><<replace "#choice">><<print "You send the child<<if _curBabies > 1>>ren<</if>> to be sold at auction amongst other prestigious slaves. The winning bid for your offspring came in at @@.yellowgreen;<<print cashFormat(1000*_seed*_curBabies)>>.@@">><</replace>><<set $cash += 1000*_seed*_curBabies>><</link>><</if>>
-	</span>
-<</if>>
 
-<<if $PC.ovaryAge >= 55 && $playerAging != 0>>
-	<br>
-	You are getting too old to have children; you feel like this may be your last.
-	<<set $PC.preg = -2>>
-<</if>>
+	<<if $PC.ovaryAge >= 55 && $playerAging != 0>>
+		<br>
+		You are getting too old to have children; you feel like this may be your last.
+		<<set $PC.preg = -2>>
+	<</if>>
 
 <</if>> /*closes gaveBirth*/
 <</if>> /*closes SE*/
 
-<<set $badBirth = 0, $PC.pregSource = 0, $PC.pregType = 0, $babyGender = 0, $PC.belly = 2000, WombFlush($PC)>>
-<<if $PC.career == "servant">>
+<<set _badBirth = 0, $PC.pregSource = 0, $PC.pregType = 0, $babyGender = 0, $PC.belly = 2000, WombFlush($PC)>>
+<<if $PC.geneticQuirks.fertility == 2>>
 	<<set $PC.pregWeek = -3>>
 <<else>>
 	<<set $PC.pregWeek = -4>>