diff --git a/src/002-config/fc-version.js b/src/002-config/fc-version.js
index 4d275c841cb4ef4f07c5eaab416d5424fbd60032..70b8bee2c7aefe72059d4e1ede6e35c545ba50b2 100644
--- a/src/002-config/fc-version.js
+++ b/src/002-config/fc-version.js
@@ -1,8 +1,8 @@
 App.Version = {
 	base: "0.10.8",
 	pmod: "2.8.X",
-	release: 1051,
+	release: 1052,
 };
 
 /* Use release as save version */
-Config.saves.version = App.Version.release;
\ No newline at end of file
+Config.saves.version = App.Version.release;
diff --git a/src/js/SlaveState.js b/src/js/SlaveState.js
index 27d628b9666c900a271dc7ad650e9d6354b25122..5a6a0308f62439cebfa070dc5d6799dff2f88b7c 100644
--- a/src/js/SlaveState.js
+++ b/src/js/SlaveState.js
@@ -2477,6 +2477,7 @@ App.Entity.SlaveState = class SlaveState {
 		return {
 			arm: {left: {}, right: {}},
 			leg: {left: {}, right: {}},
+			readyProsthetics: [], // yes, not an object, but needed for hero slaves
 			counter: {},
 			brand: {},
 			scar: {},
diff --git a/src/js/itemAvailability.js b/src/js/itemAvailability.js
index a43564b829d7bcffebca45c0b211c74b070a738c..130127c649794e9d904d9c6d173290c772005132 100644
--- a/src/js/itemAvailability.js
+++ b/src/js/itemAvailability.js
@@ -170,7 +170,7 @@ window.isItemAccessible = function(string) {
 	}
 };
 
-/*
+/**
  * @param {App.Entity.SlaveState} slave
  * @param {string} prosthetic
  * @returns {boolean}
@@ -185,6 +185,72 @@ window.isProstheticAvailable = function(slave, prosthetic) {
  */
 window.addProsthetic = function(slave, prosthetic) {
 	if (!isProstheticAvailable(slave, prosthetic)) {
-		slave.readyProsthetics.push({id: prosthetic});
+		let limb = prostheticToLimb(prosthetic);
+		if (limb > 0) {
+			let p = {
+				id: prosthetic,
+				arm: {left: new App.Entity.LimbState(), right: new App.Entity.LimbState()},
+				leg: {left: new App.Entity.LimbState(), right: new App.Entity.LimbState()}
+			};
+			p.arm.left.type = limb;
+			p.arm.right.type = limb;
+			p.leg.left.type = limb;
+			p.leg.right.type = limb;
+			slave.readyProsthetics.push(p);
+		} else {
+			slave.readyProsthetics.push({id: prosthetic});
+		}
+	}
+};
+
+/**
+ * @param {App.Entity.SlaveState} slave
+ * @param {string} prosthetic
+ * @returns {{}}
+ */
+window.findProsthetic = function(slave, prosthetic) {
+	return slave.readyProsthetics.find(p => p.id === prosthetic);
+};
+
+/**
+ * @param {string} prosthetic
+ * @returns {number}
+ */
+window.prostheticToLimb = function(prosthetic) {
+	switch (prosthetic) {
+		case "basicL":
+			return 2;
+		case "sexL":
+			return 3;
+		case "beautyL":
+			return 4;
+		case "combatL":
+			return 5;
+		case "cyberneticL":
+			return 6;
+		default:
+			return 0;
+	}
+};
+
+/**
+ *
+ * @param {number} limb
+ * @returns {string}
+ */
+window.limbToProsthetic = function(limb) {
+	switch (limb) {
+		case 2:
+			return "basicL";
+		case 3:
+			return "sexL";
+		case 4:
+			return "beautyL";
+		case 5:
+			return "combatL";
+		case 6:
+			return "cyberneticL";
+		default:
+			return "";
 	}
 };
diff --git a/src/js/surgery.js b/src/js/surgery.js
index dcd5c5a92c8e0a80e04afe18b9ebc9cf0197cd51..404641a3d100bab458a7e38df859d7296c4e0d9a 100644
--- a/src/js/surgery.js
+++ b/src/js/surgery.js
@@ -453,11 +453,11 @@ App.Medicine.Surgery.sizingProcedures = function() {
 }();
 
 /**
-* Clean up extremities on removal or piercings, tats, and brands
-* For limbs use removeLimbs()
-* @param {App.Entity.SlaveState} slave
-* @param {string} part
-*/
+ * Clean up extremities on removal or piercings, tats, and brands
+ * For limbs use removeLimbs()
+ * @param {App.Entity.SlaveState} slave
+ * @param {string} part
+ */
 window.surgeryAmp = function(slave, part) {
 	switch (part) {
 		case "left ear":
@@ -527,10 +527,19 @@ window.surgeryAmp = function(slave, part) {
  * @param {string} limb
  */
 window.removeLimbs = function(slave, limb) {
-	// TODO: add bodymod support for prosthetics
+	function remove(limb, side) {
+		const prosthetic = findProsthetic(slave, limbToProsthetic(slave[limb][side].type));
+
+		if (prosthetic) {
+			prosthetic[limb][side] = slave[limb][side];
+		}
+
+		slave[limb][side] = null;
+	}
+
 	switch (limb) {
 		case "left arm":
-			slave.arm.left = null;
+			remove("arm", "left");
 			delete slave.brand["left upper arm"];
 			delete slave.brand["left lower arm"];
 			delete slave.brand["left wrist"];
@@ -542,7 +551,7 @@ window.removeLimbs = function(slave, limb) {
 			}
 			break;
 		case "right arm":
-			slave.arm.right = null;
+			remove("arm", "right");
 			delete slave.brand["right upper arm"];
 			delete slave.brand["right lower arm"];
 			delete slave.brand["right wrist"];
@@ -554,7 +563,7 @@ window.removeLimbs = function(slave, limb) {
 			}
 			break;
 		case "left leg":
-			slave.leg.left = null;
+			remove("leg", "left");
 			delete slave.brand["left thigh"];
 			delete slave.brand["left calf"];
 			delete slave.brand["left ankle"];
@@ -568,7 +577,7 @@ window.removeLimbs = function(slave, limb) {
 			}
 			break;
 		case "right leg":
-			slave.leg.right = null;
+			remove("leg", "right");
 			delete slave.brand["right thigh"];
 			delete slave.brand["right calf"];
 			delete slave.brand["right ankle"];
@@ -601,23 +610,29 @@ window.removeLimbs = function(slave, limb) {
  * @param {number} id
  */
 window.attachLimbs = function(slave, limb, id) {
-	// TODO: add support for body mods
+	function attach(limb, side) {
+		let prosthetic = findProsthetic(slave, limbToProsthetic(id));
+
+		if (prosthetic) {
+			slave[limb][side] = prosthetic[limb][side];
+		} else {
+			slave[limb][side] = new App.Entity.LimbState();
+			slave[limb][side].type = id;
+		}
+	}
+
 	switch (limb) {
 		case "left arm":
-			slave.arm.left = new App.Entity.LimbState();
-			slave.arm.left.type = id;
+			attach("arm", "left");
 			break;
 		case "right arm":
-			slave.arm.right = new App.Entity.LimbState();
-			slave.arm.right.type = id;
+			attach("arm", "right");
 			break;
 		case "left leg":
-			slave.leg.left = new App.Entity.LimbState();
-			slave.leg.left.type = id;
+			attach("leg", "left");
 			break;
 		case "right leg":
-			slave.leg.right = new App.Entity.LimbState();
-			slave.leg.right.type = id;
+			attach("leg", "right");
 			break;
 		case "all":
 			attachLimbs(slave, "left arm", id);
diff --git a/src/pregmod/widgets/pregmodWidgets.tw b/src/pregmod/widgets/pregmodWidgets.tw
index be7103ae00fe739d3fa55ff1e53255f069cca226..b22449d4445a03ede9b61b86dcaaa031be1d1386 100644
--- a/src/pregmod/widgets/pregmodWidgets.tw
+++ b/src/pregmod/widgets/pregmodWidgets.tw
@@ -598,6 +598,12 @@
 	<<run delete $args[0].missingEyes>>
 <</if>>
 
+<<if $releaseID < 1052>>
+	<<set _prosthetics = $args[0].readyProsthetics, $args[0].readyProsthetics = []>>
+	<<for _p range _prosthetics>>
+		<<run addProsthetic($args[0], _p.id)>>
+	<</for>>
+<</if>>
 
 <</widget>>
 
diff --git a/src/uncategorized/BackwardsCompatibility.tw b/src/uncategorized/BackwardsCompatibility.tw
index 98c46e1fd57f7dfcac5963f679d99b63a9150e50..f9d7bc0acb157aab975c0d9d76a435eea1a4a978 100644
--- a/src/uncategorized/BackwardsCompatibility.tw
+++ b/src/uncategorized/BackwardsCompatibility.tw
@@ -4001,10 +4001,6 @@ Done<br>
 	<</if>>
 <</if>>
 
-<<if $releaseID < App.Version.release>>
-	<<set $releaseID = App.Version.release>>
-<</if>>
-
 <<if def $activeArcology>>
 	<<unset $activeArcology>>
 <</if>>
@@ -4137,5 +4133,10 @@ Done<br>
 	<br>Fixed NaN FS value for FSStatuesqueGlorification
 <</if>>
 
+
+/* leave this at the bottom of BC */
+<<if $releaseID < App.Version.release>>
+	<<set $releaseID = App.Version.release>>
+<</if>>
 /* reset NaNArray after BC is run */
 <<set $NaNArray = findNaN()>>
diff --git a/src/uncategorized/multiImplant.tw b/src/uncategorized/multiImplant.tw
index 210e0eb9a3e3c99a4043d1eabcfc0b81b15dd0b3..88f76ef94c0921c94f8f6e46f3cff0791c9c04d5 100644
--- a/src/uncategorized/multiImplant.tw
+++ b/src/uncategorized/multiImplant.tw
@@ -1011,7 +1011,7 @@ You head down to your <<if $surgeryUpgrade == 1>>heavily upgraded and customized
 			<<set _p = $adjustProsthetics[_k]>>
 			<<if _p.slaveID == $activeSlave.ID && _p.workLeft <= 0>>
 				<<set $adjustProsthetics.splice(_k, 1), _k-->>
-				<<set $activeSlave.readyProsthetics.push({id: _p.id})>>
+				<<set addProsthetic($activeSlave, _p.id)>>
 				<br><hr>
 				<<switch _p.id>>
 				<<case "ocular">>
diff --git a/src/uncategorized/remoteSurgery.tw b/src/uncategorized/remoteSurgery.tw
index 72ec058a913ff57c17a1de0f95e896c4e3a74d77..7cfdff045e767d885eed19ec86dc911495aeed58 100644
--- a/src/uncategorized/remoteSurgery.tw
+++ b/src/uncategorized/remoteSurgery.tw
@@ -8,7 +8,7 @@
 <<if $adjustProstheticsCompleted > 0>>
 	<<set $adjustProsthetics = $adjustProsthetics.filter(function(p) {
 		if (p.workLeft <= 0 && p.slaveID == $activeSlave.ID) {
-			$activeSlave.readyProsthetics.push({id: p.id});
+			addProsthetic($activeSlave, p.id);
 			$adjustProstheticsCompleted--;
 			return false;
 		}