diff --git a/js/003-data/gameVariableData.js b/js/003-data/gameVariableData.js
index 85f94bc7fd4f82564d95bf74b638caf46f106288..e4fa33dafeaaf954b60b46a8fe12fdbd9bf5c05d 100644
--- a/js/003-data/gameVariableData.js
+++ b/js/003-data/gameVariableData.js
@@ -1219,6 +1219,8 @@ App.Data.resetOnNGPlus = {
 	bellyImplants: 0,
 	/** @type {0|1|2} */
 	cervixImplants: 0,
+	/** @type {0|1} */
+	cervixImplantUpgrade: 0,
 	/** @type {FC.Bool} */
 	meshImplants: 0,
 	/** @type {FC.Bool} */
diff --git a/js/medicine/surgery/assets/01-sizingImplants.js b/js/medicine/surgery/assets/01-sizingImplants.js
index 7be866f3a3080fa69d4c039056d82fae8654c2cb..7ff8a31d947c9a283117dcdc213693f1dee1b3d0 100644
--- a/js/medicine/surgery/assets/01-sizingImplants.js
+++ b/js/medicine/surgery/assets/01-sizingImplants.js
@@ -251,12 +251,12 @@ App.Medicine.Surgery.Procedures.RemoveSizingImplantProcedure = class extends App
 	}
 
 	get name() {
-		return `Remove ${this._targetName} implants`;
+		return `Remove implants`;
 	}
 
 	get description() {
 		const {his} = getPronouns(this._slave);
-		return `remove ${his} ${this._oldImplantsDescription} ${this._targetName} implants`;
+		return `remove ${his} ${this._oldImplantsDescription} implants`;
 	}
 
 	get _materialCost() {
@@ -287,7 +287,7 @@ App.Medicine.Surgery.Procedures.ReplaceSizingImplantProcedure = class extends Ap
 
 	get description() {
 		const {his} = getPronouns(this._slave);
-		return `replace ${his} ${this._oldImplantsDescription} ${this._targetName} implants with ${this._describeImplant(this._implantType, this._size)} ones`;
+		return `replace ${his} ${this._oldImplantsDescription} implants with ${this._describeImplant(this._implantType, this._size)} ones`;
 	}
 
 	get note() {
@@ -340,7 +340,7 @@ App.Medicine.Surgery.Procedures.FillSizingImplantProcedure = class extends App.M
 	get description() {
 		const {his} = getPronouns(this._slave);
 		const volumeStr = this._volumeStr(this._size);
-		return `add ${volumeStr ? `${volumeStr} of` : 'some'} inert filler to each of ${his} ${this._oldImplantsDescription} ${this._targetName} implants`;
+		return `add ${volumeStr ? `${volumeStr} of` : 'some'} inert filler to each of ${his} ${this._oldImplantsDescription} implants`;
 	}
 
 	get _materialCost() {
@@ -369,7 +369,7 @@ App.Medicine.Surgery.Procedures.DrainSizingImplantProcedure = class extends App.
 	get description() {
 		const {his} = getPronouns(this._slave);
 		const volumeStr = this._volumeStr(this._size);
-		return `drain ${volumeStr ? `${volumeStr} of` : 'some'} inert filler from ${his} ${this._oldImplantsDescription} ${this._targetName} implants`;
+		return `drain ${volumeStr ? `${volumeStr} of` : 'some'} inert filler from ${his} ${this._oldImplantsDescription} implants`;
 	}
 
 	get _materialCost() {
diff --git a/js/medicine/surgery/belly/cervixPumpTubing.js b/js/medicine/surgery/belly/cervixPumpTubing.js
index 0a1ea372b481b57f130bf66b746eeeecb3887943..dd02748f34a887f1a11a1b82183aad62074a5bc6 100644
--- a/js/medicine/surgery/belly/cervixPumpTubing.js
+++ b/js/medicine/surgery/belly/cervixPumpTubing.js
@@ -40,6 +40,6 @@ App.Medicine.Surgery.Procedures.CervixPumpTubing = class extends App.Medicine.Su
 	apply(cheat) {
 		this._slave.cervixImplantTubing = 1;
 		this._slave.cervixImplantTarget = "none";
-		return this._assemble(new App.Medicine.Surgery.Reactions.CervixPump());
+		return this._assemble(new App.Medicine.Surgery.Reactions.CervixPumpTubing());
 	}
 };
diff --git a/src/facilities/implantManufactory.js b/src/facilities/implantManufactory.js
index 4c8185cfe81479ab0247d340c34bda82e9595fc8..60579c3383d863606b94c687cbf3845f4b2ebcc4 100644
--- a/src/facilities/implantManufactory.js
+++ b/src/facilities/implantManufactory.js
@@ -64,6 +64,14 @@ App.UI.implantManufactory = function() {
 		} else if (V.cervixImplants > 1) {
 			App.UI.DOM.appendNewElement("div", node, "The manufactory is capable of crafting cervix and rectal filter micropumps for fillable abdominal implants.");
 		}
+		if (V.cervixImplantUpgrade !== 1 && V.cervixImplants > 0) {
+			upgradeOption(node, 6000, "micropump system extension", ["will allow micropumps to be upgraded to transfer filler to other fillable implants"],
+				120000, () => { V.cervixImplantUpgrade = 1; },
+				"obtain schematics for a filler circulation system"
+			);
+		} else if (V.cervixImplantUpgrade) {
+			App.UI.DOM.appendNewElement("div", node, "The manufactory is capable of crafting a network of tubes and pumps capable of moving inert filler to fillable implants.");
+		}
 	}
 
 	if (V.seePreg !== 0) {
diff --git a/src/facilities/surgery/surgeryPassageUpper.js b/src/facilities/surgery/surgeryPassageUpper.js
index 7a3cce247bd4f6db0346ce5793c08aecdfd9f16d..d8015e61522eb14487ca9721d96e0ddfa492e36c 100644
--- a/src/facilities/surgery/surgeryPassageUpper.js
+++ b/src/facilities/surgery/surgeryPassageUpper.js
@@ -528,7 +528,7 @@ App.UI.surgeryPassageUpper = function(slave, refresh, cheat = false) {
 						refresh, cheat));
 				}
 			}
-			if (slave.cervixImplant > 0 && slave.cervixImplantTubing === 0 && V.cervixImplants >= 1) {
+			if (slave.cervixImplant > 0 && slave.cervixImplantTubing === 0 && V.cervixImplantUpgrade > 0) {
 				linkArray.push(App.Medicine.Surgery.makeLink(
 					new App.Medicine.Surgery.Procedures.CervixPumpTubing(slave),
 					refresh, cheat));
diff --git a/src/interaction/siPhysicalRegimen.js b/src/interaction/siPhysicalRegimen.js
index c00d1ec59bc9875bfa11613c10dbd2847b883315..2c9903b6ad9fb82e0925d3996767666b43d60dd0 100644
--- a/src/interaction/siPhysicalRegimen.js
+++ b/src/interaction/siPhysicalRegimen.js
@@ -577,7 +577,7 @@ App.UI.SlaveInteract.physicalRegimen = function(slave, refresh) {
 			}
 			App.UI.DOM.appendNewElement("div", fertilityBlock, App.UI.DOM.generateLinksStrip(linkArray), "choices");
 		}
-		if (slave.cervixPump > 0 && slave.cervixPumpTubing > 0) {
+		if (slave.cervixImplant > 0 && slave.cervixImplantTubing > 0) {
 			const hasFillableBellyImplant = slave.bellyImplant >= 0;
 			const hasFillableBoobsImplant = slave.boobsImplant > 0 && ["fillable", "advanced fillable", "hyper fillable"].includes(slave.boobsImplantType);
 			const hasFillableButtImplant = slave.buttImplant > 0 && ["fillable", "advanced fillable", "hyper fillable"].includes(slave.buttImplantType) && slave.cervixPump === 0; // Forced impossible due to butt implants not being compatible.
@@ -589,21 +589,21 @@ App.UI.SlaveInteract.physicalRegimen = function(slave, refresh) {
 			titleCervix.appendChild(underlineCervix);
 			titleCervix.append(": ");
 
-			if (slave.cervixPumpTarget === "all") {
+			if (slave.cervixImplantTarget === "all") {
 				titleCervix.append("Pump to all fillable implants. ");
-			} else if (slave.pregControl === "TnA") {
+			} else if (slave.cervixImplantTarget === "TnA") {
 				titleCervix.append("Pump to breast and butt implants. ");
-			} else if (slave.pregControl === "mombod") {
+			} else if (slave.cervixImplantTarget === "mombod") {
 				titleCervix.append("Pump to belly and breast implants, simulating pregnancy. ");
-			} else if (slave.pregControl === "bottomHeavy") {
+			} else if (slave.cervixImplantTarget === "bottomHeavy") {
 				titleCervix.append("Pump most to butt implants and some to belly implant. ");
-			} else if (slave.pregControl === "boobsImplant") {
+			} else if (slave.cervixImplantTarget === "boobsImplant") {
 				titleCervix.append("Pump to breast implants. ");
-			} else if (slave.pregControl === "buttImplant") {
+			} else if (slave.cervixImplantTarget === "buttImplant") {
 				titleCervix.append("Pump to butt implants. ");
-			} else if (slave.pregControl === "bellyImplant") {
+			} else if (slave.cervixImplantTarget === "bellyImplant") {
 				titleCervix.append("Pump to belly implant. ");
-			} else if (slave.pregControl === "none") {
+			} else if (slave.cervixImplantTarget === "none") {
 				titleCervix.append("Pump disabled. ");
 			}
 			fertilityBlock.appendChild(titleCervix);