diff --git a/src/endWeek/slaveAssignmentReport.js b/src/endWeek/slaveAssignmentReport.js
index 62721203d638b137d2e52420127304c7a08b99ad..504fc7d72887c91a61dcad2d299f4b94a3bf70f9 100644
--- a/src/endWeek/slaveAssignmentReport.js
+++ b/src/endWeek/slaveAssignmentReport.js
@@ -789,11 +789,11 @@ App.EndWeek.slaveAssignmentReport = function() {
 			if (!canWalk(slave)) {
 				_printSlaveUnassignedNote(slave, "is no longer independently mobile",
 					`and cannot fight any more. ${getPronouns(slave).he} has been removed from ${App.Entity.facilities.pit.name} roster`);
-				V.fighterIDs.delete(slave.ID);
+				removeJob(slave, Job.PIT, true);
 			} else if (!canHold(slave)) {
 				_printSlaveUnassignedNote(slave, "is no longer able to strike",
 					`and cannot fight any more. ${getPronouns(slave).he} has been removed from ${App.Entity.facilities.pit.name} roster`);
-				V.fighterIDs.delete(slave.ID);
+				removeJob(slave, Job.PIT, true);
 			}
 		}
 	}
diff --git a/src/js/DefaultRules.js b/src/js/DefaultRules.js
index 03933f6408ec545edbc53c56778d00b68c6b4daa..64098f25463e2189ed1ba1e9832580923b5060a1 100644
--- a/src/js/DefaultRules.js
+++ b/src/js/DefaultRules.js
@@ -1552,16 +1552,14 @@ globalThis.DefaultRules = (function() {
 		if (rule.pitRules !== undefined && rule.pitRules !== null) {
 			if (V.pit > 0) {
 				if (rule.pitRules === 0) {
-					V.fighterIDs = V.fighterIDs.filter(e => e !== slave.ID);
+					removeJob(slave, Job.PIT, true);
 					r += `<br>${slave.slaveName} has been removed from the pit.`;
 				} else {
 					if (App.Entity.facilities.pit.job().checkRequirements(slave).length !== 0) {
-						V.fighterIDs = V.fighterIDs.filter(e => e !== slave.ID);
+						removeJob(slave, Job.PIT, true);
 						r += `<br>${slave.slaveName} is not eligible to fight.`;
 					} else {
-						if (!V.fighterIDs.includes(slave.ID)) {
-							V.fighterIDs.push(slave.ID);
-						}
+						assignJob(slave, Job.PIT);
 						r += `<br>${slave.slaveName} has been automatically assigned to fight in the pit.`;
 					}
 				}
diff --git a/src/js/assignJS.js b/src/js/assignJS.js
index 130bd855d4008e6d24d0c198ee7567629e0c092a..3572b229856ea7a1dac2edbf8ed1c891f41b80c6 100644
--- a/src/js/assignJS.js
+++ b/src/js/assignJS.js
@@ -12,7 +12,9 @@ globalThis.assignJob = function(slave, job) {
 
 	// handle non-exclusive pseudo-assignments as special cases
 	if (job === Job.PIT) {
-		V.fighterIDs.push(slave.ID);
+		if (!V.fighterIDs.includes(slave.ID)) {
+			V.fighterIDs.push(slave.ID);
+		}
 		V.JobIDMap[Job.PIT].add(slave.ID);
 		return r;
 	} else if (job === Job.LURCHER) {
diff --git a/src/uncategorized/surgeryDegradation.tw b/src/uncategorized/surgeryDegradation.tw
index d84b14450243e26a2678f2c90f7815dede1841dd..b05da6946cf664dc26d7a17a5dcf4809535d962f 100644
--- a/src/uncategorized/surgeryDegradation.tw
+++ b/src/uncategorized/surgeryDegradation.tw
@@ -110,9 +110,8 @@
 	<<switch $surgeryType>>
 	<<case "amp" "amp1" "ampA2" "ampL2" "blind" "fuckdoll" "mindbreak" "PLimb interface1" "PLimb interface2" "PLimb interface3" "remove eyes" "removeLimbs">>
 		/* unassign if necessary */
-		<<set _ID = getSlave($AS).ID>>
-		<<if _ID == $LurcherID>><<set $LurcherID = 0>><</if>>
-		<<run $fighterIDs.deleteWith((f) => f === _ID)>>
+		<<= removeJob(getSlave($AS), Job.LURCHER, true)>>
+		<<= removeJob(getSlave($AS), Job.PIT, true)>>
 		<<= removeJob(getSlave($AS), getSlave($AS).assignment)>>
 	<</switch>>