diff --git a/src/js/wombJS.tw b/src/js/wombJS.tw
index 7e357a751537aa4ed88f2ffe99c235731850bed3..36847302c5b2cd049d532b34d4f56b6ba2455e2e 100644
--- a/src/js/wombJS.tw
+++ b/src/js/wombJS.tw
@@ -47,7 +47,7 @@ window.WombInit = function(actor) //Init womb system.
     {
         WombImpregnate(actor, actor.pregType, actor.pregSource, actor.preg);
     }
-    else if (actor.womb.length == 0 && actor.pregType != 0 && actor.broodmother > 0) //sorry but for already present broodmothers it's impossible to calculate fully, aproximation used.
+    else if (actor.womb.length == 0 && actor.pregType != 0 && actor.broodmother > 0 && actor.broodmotherOnHold < 1) //sorry but for already present broodmothers it's impossible to calculate fully, aproximation used.
     {
         var i, pw = actor.preg, bCount, bLeft;
         if (pw > 40)
@@ -249,6 +249,21 @@ window.WombNormalizePreg = function(actor)
 {
 //    console.log("New actor: " + actor.slaveName + " ===============" + actor.name);
     WombInit(actor);
+
+    if (actor.womb.length == 0 && actor.broodmother >= 1) // this is broodmother on hold.
+    {
+        actor.pregType = 0; 
+        actor.pregKnown = 0;
+        
+        if (actor.preg > 0)
+            actor.preg = 0;
+        
+        if (actor.pregSource > 0)
+            actor.pregSource = 0;
+
+        if (actor.pregWeek > 0) 
+            actor.pregWeek = 0;
+    }
     
     if (actor.womb.length > 0)
     {
@@ -272,7 +287,7 @@ window.WombNormalizePreg = function(actor)
         actor.pregType = actor.womb.length;
         actor.pregSource = actor.womb[0].fatherID;
     } 
-    else if (actor.womb.length == 0 && actor.broodmother < 1)
+    else if (actor.womb.length == 0 && actor.broodmother < 1) //not broodmother
     {
 //        console.log("preg fixing");
         actor.pregType = 0;
diff --git a/src/pregmod/widgets/seBirthWidgets.tw b/src/pregmod/widgets/seBirthWidgets.tw
index 7a38d7737b56aa5c9e3275242243c35a0a9b5a08..c5e1543a091039634396622530d9d62b2d8a5781 100644
--- a/src/pregmod/widgets/seBirthWidgets.tw
+++ b/src/pregmod/widgets/seBirthWidgets.tw
@@ -939,21 +939,11 @@ All in all,
 
 <<if $slaves[$i].broodmother > 0 >>
 	<<set $slaves[$i].preg = WombMaxPreg($slaves[$i])>>
-	<<if $slaves[$i].broodmotherOnHold != 1 && $slaves[$i].womb.length == 0>> /* normally if broodmother is empty and not on hold then implant impregnate her 		immdiately*/
-		<<set WombImpregnate($slaves[$i], 1, $slaves[$i].pregSource, 1)>>
-	<</if>>
 	<<if $slaves[$i].broodmotherCountDown > 0 && $slaves[$i].womb.length > 0>> /*do we really finished?*/
 		<<set $slaves[$i].broodmotherCountDown = 38 - WombMinPreg($slaves[$i]) >> /*age of most new (small) fetus used to correct guessing of remained time.*/
-		/*Really, next block can be changed so implant will can remain inside womb turned off indefinitely. With manual extraction in surgery. But for now I leave it as is.*/
-		<<if $slaves[$i].broodmotherCountDown == 0>>
-			$pronounCap also passed the implant making $object a broodmother alongside the afterbirth.
-			<<set $slaves[$i].preg = 0>>
-			<<set $slaves[$i].pregType = 0>>
-			<<set $slaves[$i].pregSource = 0>>
-			<<set $slaves[$i].pregKnown = 0>>
-			<<set $slaves[$i].pregWeek = -4>>
-			<<set $slaves[$i].broodmother = 0>>
-		<</if>>	
+		<<set $slaves[$i].preg = 0>>
+		<<set $slaves[$i].pregType = 0>>
+		<<set $slaves[$i].pregSource = 0>>
 	<</if>>
 <<elseif $slaves[$i].womb.length > 0>>/* Not broodmother, but still has babies, partial birth case.*/
 	<<set $slaves[$i].preg = WombMaxPreg($slaves[$i])>> /*now we use most advanced remained fetus as base.*/
diff --git a/src/uncategorized/remoteSurgery.tw b/src/uncategorized/remoteSurgery.tw
index 2d298d219bfc23bd37cf325a063b61960f489ca6..bada24f0c06e6df33f5c0c16769a823f4ba32d70 100644
--- a/src/uncategorized/remoteSurgery.tw
+++ b/src/uncategorized/remoteSurgery.tw
@@ -759,6 +759,16 @@ Work on her sex:
 	<</if>>
 <</if>>
 
+<<if $permaPregImplant == 1>>
+	<<if $activeSlave.broodmother >= 1 >>
+		<<if $activeSlave.womb.length == 0 >>
+			[[Remove a pregnancy generator|Surgery Degradation][$activeSlave.preg = 0,$activeSlave.pregWeek = 0,$activeSlave.pregKnown = 0,$activeSlave.pregType = 0,$activeSlave.broodmother = 0,$activeSlave.broodmotherFetuses = 0,$activeSlave.broodmotherOnHold = 0,$cash -= $surgeryCost,$activeSlave.pregControl = "none",$activeSlave.health -= 10,$surgeryType = "pregRemove"]] 
+		<<else>>
+			$possessiveCap is pregnant right now, and her broodmother implant can't be safely extracted.
+		<</if>>
+	<</if>>
+<</if>>
+
 <<if $activeSlave.mpreg == 1>>
 	<<if $activeSlave.preg > 0>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;
diff --git a/src/uncategorized/surgeryDegradation.tw b/src/uncategorized/surgeryDegradation.tw
index c97ab48a68c2cd5005e73575980c0e8cdaf96c50..903f40b21d6ca6efc1f8b629412531f036de047d 100644
--- a/src/uncategorized/surgeryDegradation.tw
+++ b/src/uncategorized/surgeryDegradation.tw
@@ -415,6 +415,24 @@ As the remote surgery's long recovery cycle completes,
 		</span>
 	<</if>>
 
+<<case "pregRemove">>
+	<<if ($activeSlave.fetish == "pregnancy") && ($activeSlave.fetishStrength > 60) && ($activeSlave.fetishKnown == 1)>>
+		She leaves the surgery with a certain soreness and minor pain in her lower abdomen, she knows that her days as broodmother is finished. She is @@.red; filled with despair@@ about missing being swollen with life and rubs her flat belly with sorrow. Only one fact slightly soothes her and allows to remain sane - at least she not become infertile and still can get pregnant naturally. As with all surgery @@.red;her health has been slightly affected.@@
+		<<set $activeSlave.trust -= 10>>
+		<<set $activeSlave.devotion -= 30>>
+	<<elseif ($activeSlave.devotion > 50)>>
+		She leaves the surgery with a certain soreness and minor pain in her lower abdomen, she knows that her days as broodmother is finished. She's @@.hotpink;grateful@@ that you allow her body to be free of constant pregnancy stress, and a little nervous about if you will appreciate her enough without such dedication. As with all surgery @@.red;her health has been slightly affected.@@
+		<<set $activeSlave.devotion += 4>>
+	<<elseif ($activeSlave.devotion >= -20)>>
+		She leaves the surgery with a certain soreness and minor pain in her lower abdomen, she knows that her days as broodmother is finished. She understands the realities of her life as a slave, so it isn't much of a shock. As with all surgery @@.red;her health has been slightly affected.@@ She is @@.gold;sensibly fearful@@ of your total power over her body.
+		<<set $activeSlave.trust -= 10>>
+	<<else>>
+		She leaves the surgery with a certain soreness and minor pain in her lower abdomen, she knows that her days as broodmother is finished. She does not understand the realities of her life as a slave at a core level, so she's @@.mediumorchid;terrified and angry@@ that you can change her boby so radically just at your will. As with all surgery @@.red;her health has been slightly affected.@@  She is @@.gold;sensibly fearful@@ of your total power over her body and her now empty womb.
+		<<set $activeSlave.trust -= 15>>
+		<<set $activeSlave.devotion -= 15>>
+	<</if>>
+
+
 <<case "freshOvaries">>
 	<<if $activeSlave.ovaryAge >= 45>>
 		<<if (($activeSlave.fetish == "pregnancy") && ($activeSlave.fetishStrength > 60) && ($activeSlave.fetishKnown == 1)) || $activeSlave.origin == "She sold herself to you in the hope of someday bearing children.">>
diff --git a/src/utility/miscWidgets.tw b/src/utility/miscWidgets.tw
index 6b226d5415058c1d23a8c00fab84c813cf36e8d5..e830851066fa05b98ad7a204383b6f3167b4956e 100644
--- a/src/utility/miscWidgets.tw
+++ b/src/utility/miscWidgets.tw
@@ -2359,62 +2359,64 @@ This experience
  Call as <<SetPregType>>
  $args[0]: Slave.
 */
-<<widget "SetPregType">>
-	<<if $args[0].ID == -1>>
-		<<if $PC.birthMaster > 0>> /* Predisposed to twins */
-			<<if $PC.fertDrugs == 1>>
-				<<set $args[0].pregType = either(2, 2, 3, 3, 3, 3, 4, 4)>>
-			<<else>>
-				<<set $args[0].pregType = either(1, 1, 1, 2, 2, 2, 2, 2, 2, 3)>>
-			<</if>>
-			<<if $PC.forcedFertDrugs > 0>>
-				<<set $args[0].pregType += either(1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4)>>
-			<</if>>
-		<<else>>
-			<<if $PC.fertDrugs == 1>>
-				<<set $args[0].pregType = either(1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4)>>
-			<<else>>
-				<<set $args[0].pregType = either(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2)>>
-			<</if>>
-			<<if $PC.forcedFertDrugs > 0>>
-				<<set $args[0].pregType += either(0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 4)>>
-			<</if>>
-		<</if>>
-	<<else>>
-	<<if $args[0].pregType == 0>>
-		<<if ($args[0].drugs == "super fertility drugs")>>
-			<<if (($masterSuitePregnancyFertilitySupplements == 1) && (($args[0].assignment == "serve in the master suite") || ($args[0].assignment == "be your Concubine")))>>
-				<<if ($args[0].hormones == 2)>>
-					<<set $args[0].pregType = random(20,29)>>
+<<widget "SetPregType">> /* IMHO rework is posssible. Can be more interesting to play, if this code will take in account more body conditions - age, fat, food, hormone levels, etc. */
+	<<if $args[0].broodmother < 1>> /* Broodmothers should be not processed here. Necessary now.*/
+		<<if $args[0].ID == -1>>
+			<<if $PC.birthMaster > 0>> /* Predisposed to twins */
+				<<if $PC.fertDrugs == 1>>
+					<<set $args[0].pregType = either(2, 2, 3, 3, 3, 3, 4, 4)>>
 				<<else>>
-					<<set $args[0].pregType = random(10,29)>>
+					<<set $args[0].pregType = either(1, 1, 1, 2, 2, 2, 2, 2, 2, 3)>>
+				<</if>>
+				<<if $PC.forcedFertDrugs > 0>>
+					<<set $args[0].pregType += either(1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4)>>
 				<</if>>
 			<<else>>
-				<<if ($args[0].hormones == 2)>>
-					<<set $args[0].pregType = random(10,29)>>
+				<<if $PC.fertDrugs == 1>>
+					<<set $args[0].pregType = either(1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4)>>
 				<<else>>
-					<<set $args[0].pregType = either(3, 4, 4, 4, 5, 5, 6, 10, 11, 20)>>
+					<<set $args[0].pregType = either(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2)>>
 				<</if>>
-			<</if>>
-		<<elseif ($args[0].drugs == "fertility drugs")>>
-			<<if (($masterSuitePregnancyFertilitySupplements == 1) && (($args[0].assignment == "serve in the master suite") || ($args[0].assignment == "be your Concubine")))>>
-				<<if ($args[0].hormones == 2)>>
-					<<set $args[0].pregType = random(4,5)>>
-				<<else>>
-					<<set $args[0].pregType = either(2, 2, 3, 3, 3, 3, 4, 4, 5, 5)>>
+				<<if $PC.forcedFertDrugs > 0>>
+					<<set $args[0].pregType += either(0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 4)>>
 				<</if>>
-			<<else>>
-				<<if ($args[0].hormones == 2)>>
-					<<set $args[0].pregType = random(2,5)>>
+			<</if>>
+		<<else>>
+			<<if $args[0].pregType == 0>>
+				<<if ($args[0].drugs == "super fertility drugs")>>
+					<<if (($masterSuitePregnancyFertilitySupplements == 1) && (($args[0].assignment == "serve in the master suite") || ($args[0].assignment == "be your Concubine")))>>
+						<<if ($args[0].hormones == 2)>>
+							<<set $args[0].pregType = random(20,29)>>
+						<<else>>
+							<<set $args[0].pregType = random(10,29)>>
+						<</if>>
+					<<else>>
+						<<if ($args[0].hormones == 2)>>
+							<<set $args[0].pregType = random(10,29)>>
+						<<else>>
+							<<set $args[0].pregType = either(3, 4, 4, 4, 5, 5, 6, 10, 11, 20)>>
+						<</if>>
+					<</if>>
+				<<elseif ($args[0].drugs == "fertility drugs")>>
+					<<if (($masterSuitePregnancyFertilitySupplements == 1) && (($args[0].assignment == "serve in the master suite") || ($args[0].assignment == "be your Concubine")))>>
+						<<if ($args[0].hormones == 2)>>
+							<<set $args[0].pregType = random(4,5)>>
+						<<else>>
+							<<set $args[0].pregType = either(2, 2, 3, 3, 3, 3, 4, 4, 5, 5)>>
+						<</if>>
+					<<else>>
+						<<if ($args[0].hormones == 2)>>
+							<<set $args[0].pregType = random(2,5)>>
+						<<else>>
+							<<set $args[0].pregType = either(1, 1, 2, 2, 3, 3, 4, 4, 5, 5)>>
+						<</if>>
+					<</if>>
 				<<else>>
-					<<set $args[0].pregType = either(1, 1, 2, 2, 3, 3, 4, 4, 5, 5)>>
+					<<set $args[0].pregType = either(1, 1, 1, 1, 1, 1, 1, 1, 1, 2)>>
 				<</if>>
 			<</if>>
-		<<else>>
-			<<set $args[0].pregType = either(1, 1, 1, 1, 1, 1, 1, 1, 1, 2)>>
 		<</if>>
 	<</if>>
-	<</if>>
 <</widget>>
 
 /*