diff --git a/src/pregmod/csec.tw b/src/pregmod/csec.tw
index dca1115cba753a609bb66cd5b0039a383eb7ab10..529814a1fad3ac24e2cfff3d6bad6d9650bae406 100644
--- a/src/pregmod/csec.tw
+++ b/src/pregmod/csec.tw
@@ -132,31 +132,14 @@
 <<set _incubated = 0>>
 <<set _oldDevotion = $activeSlave.devotion>>
 
-<<set _cToIncub = 0, _origReserve = WombReserveCount($activeSlave, "incubator")>> 
-<<if _origReserve > 0 && _curBabies > 0>> /*Do we need incubator checks?*/
-	<<if _curBabies >= _origReserve>>
-		/*adding normal*/
-		<<set _cToIncub = _origReserve>>
-	<<elseif _curBabies < _origReserve && $activeSlave.womb.length > 0>>
-		/*broodmother or partial birth, we will wait for next time to get remaining children*/
-		<<set _cToIncub = _curBabies>>
-	<<else>>
-		/*Stillbirth or something other go wrong. Correcting children count.*/
-		<<set _cToIncub = _curBabies>>
+<<set _cToIncub = 0, _cToNursery = 0>> 
+<<for _csec = 0; _csec < _curBabies; _csec++>>
+	<<if $slaves[$i].curBabies[_csec].reserve === "incubator">>
+		<<set _cToIncub++>>
+	<<elseif $slaves[$i].curBabies[_csec].reserve === "nursery">>
+		<<set _cToNursery++>>
 	<</if>>
-<</if>>
-
-/*this block is the same as the one above, with variables for the nursery instead*/
-<<set _cToNursery = 0, _origReserveNursery = WombReserveCount($activeSlave, "nursery")>>  
-<<if _origReserveNursery > 0 && _curBabies > 0>>
-	<<if _curBabies >= _origReserveNursery >>
-		<<set _cToNursery = _origReserveNursery >>
-	<<elseif _curBabies < _origReserveNursery && $activeSlave.womb.length > 0>>
-		<<set _cToNursery = _curBabies>>
-	<<else>>
-		<<set _cToNursery = _curBabies>>
-	<</if>>
-<</if>>
+<</for>>
 
 /* ------------------------------------------------ */
 
@@ -179,7 +162,7 @@ Performing a cesarean section is trivial for the remote surgery to carry out. $a
 	<<if _curBabies <= 1>>has<<else>>have<</if>>
 	already been
 
-	<<if _cToIncub == _curBabies && _cToIncub > 0 >>
+	<<if _cToIncub == _curBabies>>
 		taken to $incubatorName.
 		<<set _incubated = 2>>
 	<<elseif _cToIncub < _curBabies && _cToIncub > 0>>
@@ -187,7 +170,7 @@ Performing a cesarean section is trivial for the remote surgery to carry out. $a
 		<<set _incubated = 1>>
 	<</if>>
 
-	<<if _cToNursery == _curBabies && _cToNursery > 0>>
+	<<if _cToNursery == _curBabies>>
 		taken to $nurseryName.
 		<<set _nursed = 2>>
 	<<elseif _cToNursery < _curBabies && _cToNursery > 0>>
diff --git a/src/pregmod/sePlayerBirth.tw b/src/pregmod/sePlayerBirth.tw
index 0078a256926cc594c7b02dff657b3d79ac9889b3..2ecdfed62ffdaf0ef90d08a148b6430b4c628acb 100644
--- a/src/pregmod/sePlayerBirth.tw
+++ b/src/pregmod/sePlayerBirth.tw
@@ -473,10 +473,10 @@ You arrange yourself to give birth, relaxing until your body urges you to begin
 			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>>
+		<<if $PC.curBabies[0].reserve === "incubator">>
 			You set <<if _gender == "XX">>her<<else>>him<</if>> aside for incubation.
 			<<include "Incubator Workaround">>
-		<<elseif $PC.reservedChildrenNursery > 0>>
+		<<elseif $PC.curBabies[0].reserve === "nursery">>
 			You set <<if _gender == "XX">>her<<else>>him<</if>> aside for incubation.
 			<<include "Nursery Workaround">>
 		<</if>>
@@ -520,13 +520,13 @@ You arrange yourself to give birth, relaxing until your body urges you to begin
 				<<include "Incubator Workaround">>
 				<<run $PC.curBabies.splice($PC.curBabies[_p], 1)>>
 				<<set _p--, _curBabies-->>
-				<<set $PC.reservedChildren-- >>
+				<<set $PC.reservedChildren-->>
 			<<elseif $PC.curBabies[_p].reserve == "incubator">>
 				You set <<if $PC.curBabies[_p].genetics.gender == "XX">>her<<else>>him<</if>> aside for incubation.
 				<<include "Nursery Workaround">>
 				<<run $PC.curBabies.splice($PC.curBabies[_p], 1)>>
 				<<set _p--, _curBabies-->>
-				<<set $PC.reservedChildrenNursery-- >>
+				<<set $PC.reservedChildrenNursery-->>
 			<</if>>
 		<</for>>
 
diff --git a/src/pregmod/widgets/seBirthWidgets.tw b/src/pregmod/widgets/seBirthWidgets.tw
index fcaf933899d7156cd3517a8ba416c62be4b53714..439f7091816d4efc6de226a628424ee02f55f498 100644
--- a/src/pregmod/widgets/seBirthWidgets.tw
+++ b/src/pregmod/widgets/seBirthWidgets.tw
@@ -844,33 +844,23 @@ All in all,
 /*===============================================================================================*/
 
 <<widget "seBirthBabies">>
-<<set _curBabies = $slaves[$i].curBabies.length, _cToIncub = 0, _origReserve = WombReserveCount($slaves[$i], "incubator"), _cToNursery = 0, _origReserveNursery = WombReserveCount($slaves[$i], "nursery")>> 
+<<set _curBabies = $slaves[$i].curBabies.length, _cToIncub = 0, _cToNursery = 0>> 
+<<for _sebw = 0; _sebw < _curBabies; _sebw++>>
+	<<if $slaves[$i].curBabies[_sebw].reserve === "incubator">>
+		<<set _cToIncub++>>
+	<<elseif $slaves[$i].curBabies[_sebw].reserve === "nursery">>
+		<<set _cToNursery++>>
+	<</if>>
+<</for>>
 
 /* ----------------------- incubator/nursery adding subsection. There is support for broodmothers too. */
 
-<<if (_origReserve > 0 || _origReserveNursery > 0) && _curBabies > 0>> /*Do we need keep child checks?*/
-	<<if _curBabies >= _origReserve>>
-		/*adding normal*/
-		<<set _cToIncub = _origReserve, $slaves[$i].reservedChildren = 0>>
-	<<elseif _curBabies < _origReserve && $slaves[$i].womb.length > 0>>
-		/*broodmother or partial birth, we will wait for next time to get remaining children*/
-		<<set $slaves[$i].reservedChildren -= _curBabies, _cToIncub = _curBabies>>
-	<<else>>
-		/*Stillbirth or something other go wrong. Correcting children count.*/
-		<<set $slaves[$i].reservedChildren = 0, _cToIncub = 0>>
-	<</if>>
-	<<if _curBabies >= _origReserveNursery>>
-		/*adding normal*/
-		<<set _cToNursery = _origReserveNursery, $slaves[$i].reservedChildrenNursery = 0>>
-	<<elseif _curBabies < _origReserveNursery && $slaves[$i].womb.length > 0>>
-		/*broodmother or partial birth, we will wait for next time to get remaining children*/
-		<<set $slaves[$i].reservedChildrenNursery -= _curBabies, _cToNursery = _curBabies>>
-	<<else>>
-		<<set $slaves[$i].reservedChildrenNursery = 0, _cToNursery = _curBabies>>
-	<</if>>
+<<if (_cToIncub + _cToNursery > 0) && _curBabies > 0>> /*Do we need keep child checks?*/
+	<<set $slaves[$i].reservedChildren -= _cToIncub>>
+	<<set $slaves[$i].reservedChildrenNursery -= _cToNursery>>
 	<br><br>
-	Of $his _curBabies child<<if $slaves[$i].pregType > 1>>ren<</if>>, _cToIncub <<if $slaves[$i].reservedChildren > 1>>were<<else>>was<</if>> taken to $incubatorName.
-	<<if _cToIncub > 0 || _cToNursery > 0>>
+	Of $his _curBabies child<<if _curBabies > 1>>ren<</if>>, _cToIncub <<if _curBabies === 1>>was<<else>>were<</if>> taken to $incubatorName<<if $nursery > 0>>, and _cToNursery <<if _cToNursery === 1>>was<<else>>were<</if>> taken to $nurseryName<</if>>.
+	<<if _cToIncub + _cToNursery > 0>>
 		<<for _cb = 0; _cb < _curBabies; _cb++>> /* if there is no reserved children, code in loop will not trigger */
 			<<if $slaves[$i].curBabies[_cb].reserve == "incubator">>
 				<<set $activeSlave = applyGenetics($slaves[$i], $slaves[$i].curBabies[_cb])>>
diff --git a/src/uncategorized/slaveInteract.tw b/src/uncategorized/slaveInteract.tw
index 0adb1e89b51c9e3fd189046bdac9b34ae7b057ae..74bda916a1f05b2a7f8c8921692f34fe1c8c3aa8 100644
--- a/src/uncategorized/slaveInteract.tw
+++ b/src/uncategorized/slaveInteract.tw
@@ -1352,49 +1352,52 @@ Aphrodisiacs: <span id="aphrodisiacs"><strong><<if $activeSlave.aphrodisiacs > 1
 </span>
 <<set $reservedChildren = FetusGlobalReserveCount("incubator")>>
 <<set $reservedChildrenNursery = FetusGlobalReserveCount("nursery")>>
-<<set $activeSlave.reservedChildren = WombReserveCount($activeSlave, "incubator")>>
-<<set $activeSlave.reservedChildrenNursery = WombReserveCount($activeSlave, "nursery")>>
+<<set _reservedIncubator = WombReserveCount($activeSlave, "incubator")>>
+<<set _reservedNursery = WombReserveCount($activeSlave, "nursery")>>
+<<set _WL = $activeSlave.womb.length>>
+<<set $activeSlave.reservedChildren = _reservedIncubator>> /* should be removed eventually, for now keep updated */
+<<set $activeSlave.reservedChildrenNursery = _reservedNursery>> /* should be removed eventually, for now keep updated */
 
 <<if $incubator > 0>>
 <<if $activeSlave.preg > 0 && $activeSlave.broodmother == 0 && $activeSlave.pregKnown == 1 && $activeSlave.eggType == "human">>
 <<if $activeSlave.assignment == "work in the dairy" && $dairyPregSetting > 0>>
 <<else>>
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
-	<<if $activeSlave.pregType - $activeSlave.reservedChildrenNursery == 0>>
+	<<if _WL - _reservedNursery == 0>>
 		//$His children are already reserved for $nurseryName//
 	<<else>>
 		<<set $freeTanks = ($incubator-$tanks.length)>>
-		<<if $activeSlave.reservedChildren > 0>>
-			<<if $activeSlave.pregType == 1>>
+		<<if _reservedIncubator > 0>>
+			<<if _WL == 1>>
 				$His child will be placed in $incubatorName.
-			<<elseif $activeSlave.reservedChildren < $activeSlave.pregType>>
-				$activeSlave.reservedChildren of $his children will be placed in $incubatorName.
-			<<elseif $activeSlave.pregType == 2>>
+			<<elseif _reservedIncubator < _WL>>
+				_reservedIncubator of $his children will be placed in $incubatorName.
+			<<elseif _WL == 2>>
 				Both of $his children will be placed in $incubatorName.
 			<<else>>
-				All $activeSlave.reservedChildren of $his children will be placed in $incubatorName.
+				All _reservedIncubator of $his children will be placed in $incubatorName.
 			<</if>>
-			<<if ($activeSlave.reservedChildren + $activeSlave.reservedChildrenNursery < $activeSlave.pregType) && ($reservedChildren < $freeTanks)>>
+			<<if (_reservedIncubator + _reservedNursery < _WL) && ($reservedChildren < $freeTanks)>>
 				<<link "Keep another child" "Slave Interact">><<set WombAddToGenericReserve($activeSlave, "incubator", 1)>><</link>>
-				<<if $activeSlave.reservedChildren > 0>>
+				<<if _reservedIncubator > 0>>
 					| <<link "Keep one less child" "Slave Interact">><<set WombCleanGenericReserve($activeSlave, "incubator", 1)>><</link>>
 				<</if>>
-				<<if $activeSlave.reservedChildren > 1>>
+				<<if _reservedIncubator > 1>>
 					| <<link "Keep none of $his children" "Slave Interact">><<set WombCleanGenericReserve($activeSlave, "incubator", 9999)>><</link>>
 				<</if>>
-				<<if ($reservedChildren + $activeSlave.pregType - $activeSlave.reservedChildren) <= $freeTanks>>
+				<<if ($reservedChildren + _WL - _reservedIncubator) <= $freeTanks>>
 					| <<link "Keep the rest of $his children" "Slave Interact">><<set WombAddToGenericReserve($activeSlave, "incubator", 9999)>><</link>>
 				<</if>>
-			<<elseif ($activeSlave.reservedChildren == $activeSlave.pregType) || ($reservedChildren == $freeTanks) || ($activeSlave.reservedChildren - $activeSlave.reservedChildrenNursery >= 0)>>
+			<<elseif (_reservedIncubator == _WL) || ($reservedChildren == $freeTanks) || (_reservedIncubator - _reservedNursery >= 0)>>
 				<<link "Keep one less child" "Slave Interact">><<set WombCleanGenericReserve($activeSlave, "incubator", 1)>><</link>>
-				<<if $activeSlave.reservedChildren > 1>>
+				<<if _reservedIncubator > 1>>
 					| <<link "Keep none of $his children" "Slave Interact">><<set WombCleanGenericReserve($activeSlave, "incubator", 9999)>><</link>>
 				<</if>>
 			<</if>>
 		<<elseif $reservedChildren < $freeTanks>>
 			$He is pregnant and you have <<if $freeTanks == 1>>an<</if>> @@.lime;available aging tank<<if $freeTanks > 1>>s<</if>>.@@
-			<<print "[[Keep "+ (($activeSlave.pregType > 1) ? "a" : "the") +" child|Slave Interact][WombAddToGenericReserve($activeSlave, 'incubator', 1)]]">>
-			<<if ($activeSlave.pregType > 1) && ($reservedChildren + $activeSlave.pregType) <= $freeTanks>>
+			<<print "[[Keep "+ ((_WL > 1) ? "a" : "the") +" child|Slave Interact][WombAddToGenericReserve($activeSlave, 'incubator', 1)]]">>
+			<<if (_WL > 1) && ($reservedChildren + _WL) <= $freeTanks>>
 				| <<link "Keep all of $his children" "Slave Interact">><<set WombAddToGenericReserve($activeSlave, "incubator", 9999)>><</link>>
 			<</if>>
 		<<elseif $reservedChildren == $freeTanks>>
@@ -1410,42 +1413,42 @@ Aphrodisiacs: <span id="aphrodisiacs"><strong><<if $activeSlave.aphrodisiacs > 1
 <<if $activeSlave.assignment == "work in the dairy" && $dairyPregSetting > 0>>
 <<else>>
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
-	<<if $activeSlave.pregType - $activeSlave.reservedChildren == 0>>
+	<<if _WL - _reservedIncubator == 0>>
 		<<set $reservedChildren = 0>>
 		//$His children are already reserved for $incubatorName//
 	<<else>>
 		<<set $freeCribs = ($nursery-$cribs.length)>>
-		<<if $activeSlave.reservedChildrenNursery > 0>>
-			<<if $activeSlave.pregType == 1>>
+		<<if _reservedNursery > 0>>
+			<<if _WL == 1>>
 				$His child will be placed in $nurseryName.
-			<<elseif $activeSlave.reservedChildrenNursery < $activeSlave.pregType>>
-				$activeSlave.reservedChildrenNursery of $his children will be placed in $nurseryName.
-			<<elseif $activeSlave.pregType == 2>>
+			<<elseif _reservedNursery < _WL>>
+				_reservedNursery of $his children will be placed in $nurseryName.
+			<<elseif _WL == 2>>
 				Both of $his children will be placed in $nurseryName.
 			<<else>>
-				All $activeSlave.reservedChildrenNursery of $his children will be placed in $nurseryName.
+				All _reservedNursery of $his children will be placed in $nurseryName.
 			<</if>>
-			<<if (($activeSlave.reservedChildren + $activeSlave.reservedChildrenNursery < $activeSlave.pregType) && ($reservedChildrenNursery < $freeCribs))>>
+			<<if ((_reservedIncubator + _reservedNursery < _WL) && ($reservedChildrenNursery < $freeCribs))>>
 				<<link "Keep another child" "Slave Interact">><<set WombAddToGenericReserve($activeSlave, "nursery", 1)>><</link>>
-				<<if $activeSlave.reservedChildrenNursery > 0>>
+				<<if _reservedNursery > 0>>
 					| <<link "Keep one less child" "Slave Interact">><<set WombCleanGenericReserve($activeSlave, "nursery", 1)>><</link>>
 				<</if>>
-				<<if $activeSlave.reservedChildrenNursery > 1>>
+				<<if _reservedNursery > 1>>
 					| <<link "Keep none of $his children" "Slave Interact">><<set WombCleanGenericReserve($activeSlave, "nursery", 9999)>><</link>>
 				<</if>>
-				<<if ($reservedChildrenNursery + $activeSlave.pregType - $activeSlave.reservedChildrenNursery) <= $freeCribs>>
+				<<if ($reservedChildrenNursery + _WL - _reservedNursery) <= $freeCribs>>
 					| <<link "Keep the rest of $his children" "Slave Interact">><<set WombAddToGenericReserve($activeSlave, "nursery", 9999)>><</link>>
 				<</if>>
-			<<elseif ($activeSlave.reservedChildrenNursery == $activeSlave.pregType) || ($reservedChildrenNursery == $freeCribs) || ($activeSlave.reservedChildrenNursery - $activeSlave.reservedChildren >= 0)>>
+			<<elseif (_reservedNursery == _WL) || ($reservedChildrenNursery == $freeCribs) || (_reservedNursery - _reservedIncubator >= 0)>>
 				<<link "Keep one less child" "Slave Interact">><<set WombCleanGenericReserve($activeSlave, "nursery", 1)>><</link>>
-				<<if $activeSlave.reservedChildrenNursery > 1>>
+				<<if _reservedNursery > 1>>
 					| <<link "Keep none of $his children" "Slave Interact">><<set WombCleanGenericReserve($activeSlave, "nursery", 9999)>><</link>>
 				<</if>>
 			<</if>>
 		<<elseif $reservedChildrenNursery < $freeCribs>>
 			$He is pregnant and you have <<if $freeCribs == 1>>an<</if>> @@.lime;available room<<if $freeCribs > 1>>s<</if>>.@@
-			<<print "[[Keep "+ (($activeSlave.pregType > 1) ? "a" : "the") +" child|Slave Interact][WombAddToGenericReserve($activeSlave, 'nursery', 1)]]">>
-			<<if ($activeSlave.pregType > 1) && ($reservedChildrenNursery + $activeSlave.pregType) <= $freeCribs>>
+			<<print "[[Keep "+ ((_WL > 1) ? "a" : "the") +" child|Slave Interact][WombAddToGenericReserve($activeSlave, 'nursery', 1)]]">>
+			<<if (_WL > 1) && ($reservedChildrenNursery + _WL) <= $freeCribs>>
 				| <<link "Keep all of $his children" "Slave Interact">><<set WombAddToGenericReserve($activeSlave, "nursery", 9999)>><</link>>
 			<</if>>
 		<<elseif $reservedChildrenNursery == $freeCribs>>