diff --git a/js/003-data/gameVariableData.js b/js/003-data/gameVariableData.js
index a447a6695175cfcca8476cd7a6429ccee18d22f9..026c65e29eced2edfa9a37d88c829d697530cc61 100644
--- a/js/003-data/gameVariableData.js
+++ b/js/003-data/gameVariableData.js
@@ -588,7 +588,6 @@ App.Data.resetOnNGPlus = {
 	incubator: 0,
 	incubatorBulkRelease: 0,
 	incubatorOrgans: [],
-	incubatorOldID: 0,
 	incubatorUpgradeSpeed: 5,
 	incubatorUpgradeWeight: 0,
 	incubatorUpgradeMuscles: 0,
diff --git a/src/facilities/incubator/incubatorInteract.js b/src/facilities/incubator/incubatorInteract.js
index 1469610c2f7442d99c92362b963d14807dcca334..a56943dfd9a528dbbde10c27cf181e20deecbb88 100644
--- a/src/facilities/incubator/incubatorInteract.js
+++ b/src/facilities/incubator/incubatorInteract.js
@@ -951,7 +951,6 @@ App.UI.incubator = function() {
 						App.UI.DOM.link(
 							"Retrieve immediately",
 							() => {
-								V.incubatorOldID = V.tanks[i].ID;
 								V.readySlave = V.tanks[i];
 								V.tanks.splice(i, 1);
 							},
@@ -1673,35 +1672,24 @@ App.UI.incubator = function() {
 	}
 
 	function release() {
+		const multiple = (V.incubatorBulkRelease === 1) && V.tanks.filter(t => t.growTime <= 0).length > 1;
+
+		const singleRelease = () => {
+			const baby = V.tanks.find(t => t.growTime <= 0);
+			V.tanks.delete(baby);
+			V.readySlave = baby;
+		};
+
+		const multipleRelease = () => {
+			V.newSlavePool = V.tanks.deleteWith(t => t.growTime <= 0);
+		};
+
 		if (V.readySlaves === 1) {
-			if (V.incubatorBulkRelease === 1) {
-				V.newSlavePool = [];
-				for (let _inc = 0; _inc < V.tanks.length; _inc++) {
-					if (V.tanks[_inc].growTime <= 0) {
-						V.incubatorOldID = V.tanks[_inc].ID;
-						/* single slave case */
-						const _tempObject = {object: V.tanks[_inc], ID: V.tanks[_inc].ID};
-						V.newSlavePool.push(clone(_tempObject));
-						V.tanks.splice(_inc, 1);
-						_inc--;
-					}
-				}
-				if (V.newSlavePool.length === 1) {
-					V.readySlave = V.newSlavePool[0].object;
-					V.newSlavePool = 0;
-					return App.UI.DOM.passageLink(`Release ready tank`, "Incubator Retrieval Workaround");
-				}
+			if (multiple) {
+				return App.UI.DOM.passageLink(`Release ready tanks`, "Incubator Retrieval Workaround", multipleRelease);
 			} else {
-				for (let _inc = 0; _inc < incubatorSlaves; _inc++) {
-					if (V.tanks[_inc].growTime <= 0) {
-						V.incubatorOldID = V.tanks[_inc].ID;
-						V.readySlave = V.tanks[_inc];
-						V.tanks.splice(_inc, 1);
-						break;
-					}
-				}
+				return App.UI.DOM.passageLink(`Release ready tank`, "Incubator Retrieval Workaround", singleRelease);
 			}
-			return App.UI.DOM.passageLink(`Release ready tanks`, "Incubator Retrieval Workaround");
 		}
 		return new DocumentFragment();
 	}
@@ -1753,8 +1741,8 @@ App.UI.incubator = function() {
 	/**
 	 *
 	 * @param {string} id
-	 * @param {HTMLElement} element
-	 * @returns {HTMLElement}
+	 * @param {Node} element
+	 * @returns {HTMLSpanElement}
 	 */
 	function makeSpanIded(id, element) {
 		const span = document.createElement("span");
diff --git a/src/facilities/incubator/incubatorRetrievalWorkaround.tw b/src/facilities/incubator/incubatorRetrievalWorkaround.tw
index cb888d4f58ab71df898d6f576e4ad3c6c794465a..f89e5c3590663bb5c82b66ea1882a1c46b7759aa 100644
--- a/src/facilities/incubator/incubatorRetrievalWorkaround.tw
+++ b/src/facilities/incubator/incubatorRetrievalWorkaround.tw
@@ -15,7 +15,7 @@
 	<<if $readySlave.tankBaby != 3>>
 		<<if $incubatorOrgans.length > 0>>
 			<<for _irw = 0; _irw < $incubatorOrgans.length; _irw++>>
-				<<if $incubatorOrgans[_irw].ID == $incubatorOldID>>
+				<<if $incubatorOrgans[_irw].ID == $readySlave.ID>>
 					<<set _newOrgan = {type: $incubatorOrgans[_irw].type, weeksToCompletion: $incubatorOrgans[_irw].weeksToCompletion, ID: $activeSlave.ID}>>
 					<<if _newOrgan.weeksToCompletion <= 0>>
 						<<set $completedOrgans.push($incubatorOrgans[_irw])>>
@@ -47,7 +47,7 @@
 
 	<<for _irw = 0; _irw < $newSlavePool.length; _irw++>>
 		<br><br>
-		<<set _newSlave = $newSlavePool[_irw].object>>
+		<<set _newSlave = $newSlavePool[_irw]>>
 
 		Name: <<= SlaveFullName(_newSlave)>>
 		<br>Mother: