diff --git a/js/003-data/gameVariableData.js b/js/003-data/gameVariableData.js
index f0bbc2ac969e71e5f7947ae9e62127baccf5707f..a69dee57996a1f9b5a7066718ba0464ef21f3e5b 100644
--- a/js/003-data/gameVariableData.js
+++ b/js/003-data/gameVariableData.js
@@ -770,7 +770,7 @@ App.Data.resetOnNGPlus = {
 	nurseryNameCaps: "The Nursery",
 	reservedChildrenNursery: 0,
 	cribs: [],							/* array of children in the nursery */
-	cribsFreed: [],					/* array of children that have been freed */
+	cribsIndices: {},
 	sortNurseryList: "Unsorted",
 	targetAgeNursery: 18,
 
diff --git a/src/data/backwardsCompatibility/backwardsCompatibility.js b/src/data/backwardsCompatibility/backwardsCompatibility.js
index 3eb0251be825d75d3e08964f423acf58b7abff69..e7b0ab807a1398299258db7ade0a2c0953e03c62 100644
--- a/src/data/backwardsCompatibility/backwardsCompatibility.js
+++ b/src/data/backwardsCompatibility/backwardsCompatibility.js
@@ -1232,19 +1232,16 @@ App.Update.slaveRecords = function(node) {
 		nurseryDiv.append(`Checking and fixing records for nursery cribs... `);
 		V.cribs.forEach((child) => {
 			if (child.actualAge < 3) {
+				// infants are not slaves, they need their own update code (but there isn't any yet)
+				// note that some infants have been *converted into* corrupted slaves by bad old BCs...no attempt is made to fix them here
 				App.Facilities.Nursery.InfantDatatypeCleanup(child);
 			} else {
+				App.Update.Slave(slave);
 				App.Entity.Utils.SlaveDataSchemeCleanup(child, true);
 				App.Facilities.Nursery.ChildDatatypeCleanup(child);
 			}
 		});
 		V.cribsIndices = App.Facilities.Nursery.cribsToIndices();
-		if (V.nurseryNannies > 0) {
-			for (let bci = 0; bci < V.cribs.length; bci++) {
-				App.Update.Slave(V.cribs[bci]);
-				// let _nurseryChild = V.cribs[bci]; TODO: on importing this to JS, what is this even supposed to do?
-			}
-		}
 		nurseryDiv.append(`Done!`);
 	}
 
diff --git a/src/descriptions/familySummaries.js b/src/descriptions/familySummaries.js
index 7aa316de819147d93b2276476471889d3846232d..6b82150d8d88a0465cb8679dedb6faa3c8e2789d 100644
--- a/src/descriptions/familySummaries.js
+++ b/src/descriptions/familySummaries.js
@@ -467,7 +467,7 @@ App.Desc.family = (function() {
 			}
 		}
 
-		if (slave.clone !== 0) {
+		if (slave.clone) {
 			r.push(`${He} is`);
 			if (slave.cloneID === -1) {
 				r.push(`your clone.`);
diff --git a/src/facilities/nursery/nurseryDatatypeCleanup.js b/src/facilities/nursery/nurseryDatatypeCleanup.js
index c062138b13752dcb5b91d97b79a0931ef0cf3ee1..de65be9984e94e87339540509349f87e52918b76 100644
--- a/src/facilities/nursery/nurseryDatatypeCleanup.js
+++ b/src/facilities/nursery/nurseryDatatypeCleanup.js
@@ -531,16 +531,6 @@ App.Facilities.Nursery.InfantDatatypeCleanup = function(child) {
 		if (typeof child.skin !== "string") {
 			child.skin = "light";
 		}
-		if (typeof child.health === "number") {
-			const condition = child.health;
-			child.health = {};
-			child.health.condition = condition;
-		}
-		child.health.condition = Math.clamp(+child.health.condition, -100, 100) || 0;
-		child.health.shortDamage = Math.max(+child.health.shortDamage, 0) || 0;
-		child.health.longDamage = Math.max(+child.health.longDamage, 0) || 0;
-		child.health.illness = Math.max(+child.health.illness, 0) || 0;
-		child.health.tired = Math.clamp(+child.health.tired, 0, 100) || 0;
 		child.weight = Math.clamp(+child.weight, -100, 200) || 0;
 	}
 
diff --git a/src/facilities/nursery/nurseryWidgets.js b/src/facilities/nursery/nurseryWidgets.js
index b78a8b3e152a9b4ec5e09c03eb1ae709dcd68620..f35053ae8066f0cc37922494f25b409bc1fece5a 100644
--- a/src/facilities/nursery/nurseryWidgets.js
+++ b/src/facilities/nursery/nurseryWidgets.js
@@ -65,12 +65,10 @@ App.Facilities.Nursery.InfantSummary = function(child) {
 		if (abbreviate.physicals === 1) {
 			shortAge(child);
 			shortFace(child);
-			shortEyes(child);
 			r += `</span> `;
 		} else if (abbreviate.physicals === 2) {
 			longAge(child);
 			longFace(child);
-			longEyes(child);
 			r += `</span> `;
 		}
 		r += `<br>`;
@@ -116,7 +114,7 @@ App.Facilities.Nursery.InfantSummary = function(child) {
 	}
 
 	// /**	TODO: add health to infants
-	//  * @param {App.Entity.SlaveState} child
+	//  * @param {App.Entity.InfantState} child
 	//  */
 	// function shortHealth(child) {
 	// 	if (child.health.condition < -20) {
@@ -130,7 +128,7 @@ App.Facilities.Nursery.InfantSummary = function(child) {
 	// }
 
 	// /**
-	//  * @param {App.Entity.SlaveState} child
+	//  * @param {App.Entity.InfantState} child
 	//  */
 	// function longHealth(child) {
 	// 	if (child.health.condition < -90) {
@@ -152,7 +150,7 @@ App.Facilities.Nursery.InfantSummary = function(child) {
 	// }
 
 	/**
-	 * @param {App.Entity.SlaveState} child
+	 * @param {App.Entity.InfantState} child
 	 */
 	function shortRace(child) {
 		switch (child.race) {
@@ -199,7 +197,7 @@ App.Facilities.Nursery.InfantSummary = function(child) {
 	}
 
 	/**
-	 * @param {App.Entity.SlaveState} child
+	 * @param {App.Entity.InfantState} child
 	 */
 	function longRace(child) {
 		switch (child.race) {
@@ -246,7 +244,7 @@ App.Facilities.Nursery.InfantSummary = function(child) {
 	}
 
 	/**
-	 * @param {App.Entity.SlaveState} child
+	 * @param {App.Entity.InfantState} child
 	 */
 	function shortNationality(child) {
 		r += `<span class="tan">`;
@@ -923,7 +921,7 @@ App.Facilities.Nursery.InfantSummary = function(child) {
 	}
 
 	/**
-	 * @param {App.Entity.SlaveState} child
+	 * @param {App.Entity.InfantState} child
 	 */
 	function longNationality(child) {
 		r += `<span class="tan">`;
@@ -961,7 +959,7 @@ App.Facilities.Nursery.InfantSummary = function(child) {
 	}
 
 	/**
-	 * @param {App.Entity.SlaveState} child
+	 * @param {App.Entity.InfantState} child
 	 */
 	function shortSkin(child) {
 		r += `<span class="pink">`;
@@ -1024,7 +1022,7 @@ App.Facilities.Nursery.InfantSummary = function(child) {
 	}
 
 	/**
-	 * @param {App.Entity.SlaveState} child
+	 * @param {App.Entity.InfantState} child
 	 */
 	function shortAge(child) {
 		r += `<span class="pink">`;
@@ -1046,7 +1044,7 @@ App.Facilities.Nursery.InfantSummary = function(child) {
 	}
 
 	/**
-	 * @param {App.Entity.SlaveState} child
+	 * @param {App.Entity.InfantState} child
 	 */
 	function shortFace(child) {
 		if (child.face < -95) {
@@ -1067,18 +1065,7 @@ App.Facilities.Nursery.InfantSummary = function(child) {
 	}
 
 	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function shortEyes(child) {
-		if (!canSee(slave)) {
-			r += `<span class="red">Blind</span> `;
-		} else if (!canSeePerfectly(slave)) {
-			r += `<span class="yellow">Sight-</span> `;
-		}
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
+	 * @param {App.Entity.InfantState} child
 	 */
 	function longAge(child) {
 		r += `<span class="pink">`;
@@ -1105,7 +1092,7 @@ App.Facilities.Nursery.InfantSummary = function(child) {
 	}
 
 	/**
-	 * @param {App.Entity.SlaveState} child
+	 * @param {App.Entity.InfantState} child
 	 */
 	function longFace(child) {
 		r += `Likely to have a `;
@@ -1128,18 +1115,7 @@ App.Facilities.Nursery.InfantSummary = function(child) {
 	}
 
 	/**
-	 * @param {App.Entity.SlaveState} child
-	 */
-	function longEyes(child) {
-		if (!canSee(child)) {
-			r += `<span class="red">Blind.</span> `;
-		} else if (!canSeePerfectly(child)) {
-			r += `<span class="yellow">Nearsighted.</span> `;
-		}
-	}
-
-	/**
-	 * @param {App.Entity.SlaveState} child
+	 * @param {App.Entity.InfantState} child
 	 */
 	function shortIntelligence(child) {
 		let intelligence = child.intelligence;
@@ -1202,7 +1178,7 @@ App.Facilities.Nursery.InfantSummary = function(child) {
 	}
 
 	/**
-	 * @param {App.Entity.SlaveState} child
+	 * @param {App.Entity.InfantState} child
 	 */
 	function shortPrestige(child) {
 		if (child.prestige > 0) {
@@ -1219,7 +1195,7 @@ App.Facilities.Nursery.InfantSummary = function(child) {
 	}
 
 	/**
-	 * @param {App.Entity.SlaveState} child
+	 * @param {App.Entity.InfantState} child
 	 */
 	function shortPornPrestige(child) {
 		if (child.pornPrestige > 0) {
@@ -1236,7 +1212,7 @@ App.Facilities.Nursery.InfantSummary = function(child) {
 	}
 
 	/**
-	 * @param {App.Entity.SlaveState} child
+	 * @param {App.Entity.InfantState} child
 	 */
 	function longIntelligence(child) {
 		let intelligence = child.intelligence;
@@ -1261,7 +1237,7 @@ App.Facilities.Nursery.InfantSummary = function(child) {
 	}
 
 	/**
-	 * @param {App.Entity.SlaveState} child
+	 * @param {App.Entity.InfantState} child
 	 */
 	function longPrestige(child) {
 		if (child.prestige > 0) {
@@ -1278,7 +1254,7 @@ App.Facilities.Nursery.InfantSummary = function(child) {
 	}
 
 	/**
-	 * @param {App.Entity.SlaveState} child
+	 * @param {App.Entity.InfantState} child
 	 */
 	function longPornPrestige(child) {
 		if (child.pornPrestige > 0) {
@@ -1295,7 +1271,7 @@ App.Facilities.Nursery.InfantSummary = function(child) {
 	}
 
 	/**
-	 * @param {App.Entity.SlaveState} child
+	 * @param {App.Entity.InfantState} child
 	 */
 	function shortBehaviorFlaw(child) {
 		r += `<span class="red">`;
@@ -1335,7 +1311,7 @@ App.Facilities.Nursery.InfantSummary = function(child) {
 	}
 
 	/**
-	 * @param {App.Entity.SlaveState} child
+	 * @param {App.Entity.InfantState} child
 	 */
 	function shortSexFlaw(child) {
 		switch (child.sexualFlaw) {
@@ -1400,7 +1376,7 @@ App.Facilities.Nursery.InfantSummary = function(child) {
 	}
 
 	/**
-	 * @param {App.Entity.SlaveState} child
+	 * @param {App.Entity.InfantState} child
 	 */
 	function longBehaviorFlaw(child) {
 		r += `<span class="red">`;
@@ -1440,7 +1416,7 @@ App.Facilities.Nursery.InfantSummary = function(child) {
 	}
 
 	/**
-	 * @param {App.Entity.SlaveState} child
+	 * @param {App.Entity.InfantState} child
 	 */
 	function longSexFlaw(child) {
 		switch (child.sexualFlaw) {
@@ -1505,7 +1481,7 @@ App.Facilities.Nursery.InfantSummary = function(child) {
 	}
 
 	/**
-	 * @param {App.Entity.SlaveState} child
+	 * @param {App.Entity.InfantState} child
 	 */
 	function shortExtendedFamily(child) {
 		let handled = 0;
@@ -1618,7 +1594,7 @@ App.Facilities.Nursery.InfantSummary = function(child) {
 	}
 
 	/**
-	 * @param {App.Entity.SlaveState} child
+	 * @param {App.Entity.InfantState} child
 	 */
 	function shortRival(child) {
 		if (child.rivalry !== 0) {
@@ -1641,7 +1617,7 @@ App.Facilities.Nursery.InfantSummary = function(child) {
 	}
 
 	/**
-	 * @param {App.Entity.SlaveState} child
+	 * @param {App.Entity.InfantState} child
 	 */
 	function longExtendedFamily(child) {
 		let handled = 0;
@@ -1769,7 +1745,7 @@ App.Facilities.Nursery.InfantSummary = function(child) {
 	}
 
 	/**
-	 * @param {App.Entity.SlaveState} child
+	 * @param {App.Entity.InfantState} child
 	 */
 	function longRival(child) {
 		if (child.rivalry !== 0) {
@@ -1791,7 +1767,7 @@ App.Facilities.Nursery.InfantSummary = function(child) {
 	}
 
 	/**
-	 * @param {App.Entity.SlaveState} child
+	 * @param {App.Entity.InfantState} child
 	 */
 	function origins(child) {
 		r += `<br> `;
@@ -14783,7 +14759,6 @@ App.Facilities.Nursery.infantToChild = function infantToChild(child) {
 	child.eyebrowFullness = "natural",
 	child.eyebrowHStyle = "natural",
 	child.eyebrowPiercing = 0,
-	child.eye = new App.Entity.EyeState(),
 	child.eyewear = "none",
 	child.faceImplant = 0,
 	child.fertKnown = 1,
@@ -14863,7 +14838,7 @@ App.Facilities.Nursery.infantToChild = function infantToChild(child) {
 	child.onDiet = 0,
 	child.origRace = child.race,
 	child.eye = new App.Entity.EyeState(),
-	child.eye.orig = child.eyeColor,
+	child.eye.origColor = child.eyeColor,
 	child.origHColor = child.hColor,
 	child.origSkin = child.skin,
 	child.ovaries = child.genes === "XX" ? 1 : 0,
@@ -14975,6 +14950,7 @@ App.Facilities.Nursery.infantToChild = function infantToChild(child) {
 	child.weight = jsRandom(-10, 10),
 	child.womb = [],
 	child.wombImplant = "none";
+	resetEyeColor(child, "both");
 	generatePronouns(child);
 
 	return child;
@@ -15226,11 +15202,10 @@ App.Facilities.Nursery.nameChild = function nameChild(child) {
 };
 
 /**
- * Creates a new child object
- * @param {App.Entity.ChildState} child
+ * Adds an infant to a the cribs
+ * @param {App.Entity.InfantState} child
  */
 App.Facilities.Nursery.newChild = function newChild(child) {
-
 	child.ID = generateSlaveID();
 
 	child.actualAge = 0;
@@ -15240,9 +15215,6 @@ App.Facilities.Nursery.newChild = function newChild(child) {
 		child.origRace = child.race;
 	}
 
-	if (child.override_Eye_Color !== 1) {
-		resetEyeColor(child, "both");
-	}
 	if (child.override_H_Color !== 1) {
 		child.hColor = getGeneticHairColor(child);
 	}
@@ -15289,6 +15261,7 @@ App.Facilities.Nursery.newChild = function newChild(child) {
 	child.targetLocation = "slavery";
 	child.growTime = V.targetAgeNursery * 52;
 	V.cribs.push(child);
+	V.cribsIndices = App.Facilities.Nursery.cribsToIndices();
 	V.nurseryBabies++;
 };
 
diff --git a/src/facilities/servantsQuarters/servantsQuartersFramework.js b/src/facilities/servantsQuarters/servantsQuartersFramework.js
index dd92499b3cb9023ac13326c32af9b247fab61c1d..2e6713317dcee7ff08e6f70487d3ec55fe96b1ac 100644
--- a/src/facilities/servantsQuarters/servantsQuartersFramework.js
+++ b/src/facilities/servantsQuarters/servantsQuartersFramework.js
@@ -44,7 +44,7 @@ App.Entity.Facilities.ServantsQuartersServantJob = class extends App.Entity.Faci
 		if (!App.Entity.Facilities.Job._isBrokenEnough(slave, -20, -50, 20, -21)) {
 			r.push(App.Entity.Facilities.Job._stdBreakageMessage(slave));
 		}
-		if (!window.canWalk(slave)) {
+		if (!canWalk(slave)) {
 			r.push(`${slave.slaveName} can't walk and would be unable to properly clean.`);
 		}
 		if (!canSee(slave)) {
diff --git a/src/js/generateGenetics.js b/src/js/generateGenetics.js
index 3cd4fa3595c93a9f97c88621a7de6be8886c404b..4b4ff267077d9ea42444463a99ce71d5324d71d5 100644
--- a/src/js/generateGenetics.js
+++ b/src/js/generateGenetics.js
@@ -1060,6 +1060,7 @@ globalThis.generateGenetics = (function() {
 
 /**
  * @param {App.Entity.SlaveState} mother
+ * @returns {App.Entity.SlaveState|App.Entity.InfantState}
  */
 globalThis.generateChild = function(mother, ova, destination) {
 	let genes = ova.genetics; // maybe just argument this? We'll see.
@@ -1189,11 +1190,10 @@ globalThis.generateChild = function(mother, ova, destination) {
 			child.albinismOverride = makeAlbinismOverride(child.race);
 		}
 		child.origSkin = genes.skin;
-		child.eye.origColor = genes.eyeColor;
+		child.eyeColor = genes.eyeColor;
 		child.origHColor = genes.hColor;
 		child.skin = getGeneticSkinColor(child);
 		child.hColor = getGeneticHairColor(child);
-		resetEyeColor(child, "both");
 		child.pubicHColor = child.hColor;
 		child.underArmHColor = child.hColor;
 		child.eyebrowHColor = child.hColor;