diff --git a/src/interaction/sellSlave.js b/src/interaction/sellSlave.js
index f20b040d2ee2c340da749a97686a95a4ed3ccce4..ff69d7e267f26ef96db2dd2a73e2350df341fd5c 100644
--- a/src/interaction/sellSlave.js
+++ b/src/interaction/sellSlave.js
@@ -848,6 +848,7 @@ new App.DomPassage("Sell Slave", () => {
 	 * @property {boolean} requirements
 	 * @property {number} percentOdds
 	 * @property {Node} [completeSale]
+	 * @property {boolean} [allowsBoomerang=true]
 	 */
 
 	/** @type {Map<string, slaveBuyerData>}*/
@@ -876,7 +877,8 @@ new App.DomPassage("Sell Slave", () => {
 					}
 					App.Events.addNode(el, r);
 					return el;
-				}
+				},
+				allowsBoomerang: false
 			}
 		]]);
 	} else if (slave.geneticQuirks.progeria === 2 && slave.physicalAge >= 45) {
@@ -934,84 +936,79 @@ new App.DomPassage("Sell Slave", () => {
 				V.encyclopedia = "Personal Assistant";
 				App.Utils.scheduleSidebarRefresh();
 				const resultNode = new DocumentFragment();
-				if (!["abortion TV", "elite auction", "eugenics arcology", "organ crafter", "peacekeepers", "repopulationist arcology", "tentacle bred", "womb filler"].includes(key) && (((slave.actualAge < V.retirementAge-1) && V.policies.retirement.physicalAgePolicy === 0) || ((slave.physicalAge < V.retirementAge-1) && V.policies.retirement.physicalAgePolicy === 1))) { // organ crafter is not viable now, the elite/peacekeepers won't part so easily with a prize, some take place x months later when the event's max is 15 weeks, and the rest are snuff events. You don't want that slave back.
-					if (!V.boomerangSlave || V.boomerangWeeks > 15) {
-						if (slave.fuckdoll === 0) {
-							if (canWalk(slave)) {
-								if (canTalk(slave)) {
-									if (slave.fetish !== "mindbroken") {
-										if (slave.devotion > 50) {
-											if (slave.trust > 95 || slave.trust < -20 || (slave.intelligence+slave.intelligenceImplant < -15)) {
-												V.boomerangSlave = clone(slave);
-												V.boomerangWeeks = 1;
-												V.boomerangBuyer = key;
-												V.boomerangSlave.assignment = "rest";
-												V.boomerangStats = {
-													PCpregSource: 0, PCmother: 0, PCfather: 0, boomerangMother: [], boomerangFather: [], boomerangPregSources: [], boomerangMotherTank: [], boomerangFatherTank: [], boomerangRelationship: 0, boomerangRivalry: 0, boomerangRelation: 0, boomerangBody: 0
-												};
-												if (V.AS === V.PC.pregSource) {
-													V.boomerangStats.PCpregSource = V.AS;
-												}
-												if (V.PC.mother === V.AS) {
-													V.boomerangStats.PCmother = V.AS;
-												}
-												if (V.PC.father === V.AS) {
-													V.boomerangStats.PCfather = V.AS;
-												}
-												for (const s of V.slaves) {
-													if (s.ID !== V.AS) {
-														if (s.mother === V.AS) {
-															V.boomerangStats.boomerangMother.push(s.ID);
-														}
-														if (s.father === V.AS) {
-															V.boomerangStats.boomerangFather.push(s.ID);
-														}
-														if (V.AS === s.pregSource) {
-															V.boomerangStats.boomerangPregSources.push(s.ID);
-														}
-													}
-												}
-												if (V.incubator.capacity > 0) {
-													for (const child of V.incubator.tanks) {
-														if (V.AS === child.mother) {
-															V.boomerangStats.boomerangMotherTank.push(child.ID);
-														}
-														if (V.AS === child.father) {
-															V.boomerangStats.boomerangFatherTank.push(child.ID);
-														}
-													}
-												}
-												if (V.nursery > 0) {
-													for (const child of V.cribs) {
-														if (V.AS === child.mother) {
-															V.boomerangStats.boomerangMotherTank.push(child.ID);
-														}
-														if (V.AS === child.father) {
-															V.boomerangStats.boomerangFatherTank.push(child.ID);
-														}
-													}
-												}
-												V.boomerangSlave.sisters = 0;
-												V.boomerangSlave.daughters = 0;
-												if (slave.relationship > 0) {
-													V.boomerangStats.boomerangRelationship = slave.relationshipTarget;
-												}
-												if (slave.rivalry > 0) {
-													V.boomerangStats.boomerangRivalry = slave.rivalryTarget;
-												}
-												if (slave.bodySwap > 0) {
-													const myBody = V.slaves.find(s => s.origBodyOwnerID === V.AS);
-													if (myBody) {
-														V.boomerangStats.boomerangBody = myBody.ID;
-													}
-												}
-											}
-										}
-									}
-								}
+				const allowsBoomerang = !buyer.hasOwnProperty("allowsBoomerang") || buyer.allowsBoomerang;
+				const slaveCanBoomerang = () => (
+					(
+						((slave.actualAge < V.retirementAge-1) && V.policies.retirement.physicalAgePolicy === 0) ||
+						((slave.physicalAge < V.retirementAge-1) && V.policies.retirement.physicalAgePolicy === 1)
+					) && slave.fuckdoll === 0 && canWalk(slave) && canTalk(slave) && slave.fetish !== "mindbroken" && slave.devotion > 50 &&
+					(slave.trust > 95 || slave.trust < -20 || (slave.intelligence+slave.intelligenceImplant < -15))
+				);
+
+				if (allowsBoomerang && slaveCanBoomerang() && (!V.boomerangSlave || V.boomerangWeeks > 15)) {
+					V.boomerangSlave = clone(slave);
+					V.boomerangWeeks = 1;
+					V.boomerangBuyer = key;
+					V.boomerangSlave.assignment = "rest";
+					V.boomerangStats = {
+						PCpregSource: 0, PCmother: 0, PCfather: 0, boomerangMother: [], boomerangFather: [], boomerangPregSources: [], boomerangMotherTank: [], boomerangFatherTank: [], boomerangRelationship: 0, boomerangRivalry: 0, boomerangRelation: 0, boomerangBody: 0
+					};
+					if (V.AS === V.PC.pregSource) {
+						V.boomerangStats.PCpregSource = V.AS;
+					}
+					if (V.PC.mother === V.AS) {
+						V.boomerangStats.PCmother = V.AS;
+					}
+					if (V.PC.father === V.AS) {
+						V.boomerangStats.PCfather = V.AS;
+					}
+					for (const s of V.slaves) {
+						if (s.ID !== V.AS) {
+							if (s.mother === V.AS) {
+								V.boomerangStats.boomerangMother.push(s.ID);
+							}
+							if (s.father === V.AS) {
+								V.boomerangStats.boomerangFather.push(s.ID);
+							}
+							if (V.AS === s.pregSource) {
+								V.boomerangStats.boomerangPregSources.push(s.ID);
+							}
+						}
+					}
+					if (V.incubator.capacity > 0) {
+						for (const child of V.incubator.tanks) {
+							if (V.AS === child.mother) {
+								V.boomerangStats.boomerangMotherTank.push(child.ID);
+							}
+							if (V.AS === child.father) {
+								V.boomerangStats.boomerangFatherTank.push(child.ID);
+							}
+						}
+					}
+					if (V.nursery > 0) {
+						for (const child of V.cribs) {
+							if (V.AS === child.mother) {
+								V.boomerangStats.boomerangMotherTank.push(child.ID);
+							}
+							if (V.AS === child.father) {
+								V.boomerangStats.boomerangFatherTank.push(child.ID);
 							}
 						}
 					}
+					V.boomerangSlave.sisters = 0;
+					V.boomerangSlave.daughters = 0;
+					if (slave.relationship > 0) {
+						V.boomerangStats.boomerangRelationship = slave.relationshipTarget;
+					}
+					if (slave.rivalry > 0) {
+						V.boomerangStats.boomerangRivalry = slave.rivalryTarget;
+					}
+					if (slave.bodySwap > 0) {
+						const myBody = V.slaves.find(s => s.origBodyOwnerID === V.AS);
+						if (myBody) {
+							V.boomerangStats.boomerangBody = myBody.ID;
+						}
+					}
 				}
 				for (const s of V.slaves) {
 					const {his2} = getPronouns(s).appendSuffix("2");
@@ -1161,7 +1158,8 @@ new App.DomPassage("Sell Slave", () => {
 					}
 					App.Events.addNode(el, r);
 					return el;
-				}
+				},
+				allowsBoomerang: false
 			}],
 			["womb filler", {
 				cost: 400 * Math.trunc((cost * 1.05) / 500),
@@ -1203,7 +1201,8 @@ new App.DomPassage("Sell Slave", () => {
 					}
 					App.Events.addNode(el, r);
 					return el;
-				}
+				},
+				allowsBoomerang: false
 			}],
 			["eugenics arcology", {
 				cost: (500 * Math.trunc((cost * 1.1) / 500)),
@@ -1229,7 +1228,8 @@ new App.DomPassage("Sell Slave", () => {
 					}
 					App.Events.addNode(el, r);
 					return el;
-				}
+				},
+				allowsBoomerang: false
 			}],
 			["repopulationist arcology", {
 				cost: (500 * Math.trunc((cost * 1.05) / 500)),
@@ -1261,7 +1261,8 @@ new App.DomPassage("Sell Slave", () => {
 					}
 					App.Events.addNode(el, r);
 					return el;
-				}
+				},
+				allowsBoomerang: false
 			}],
 			["virgin trader", {
 				cost: (500 * Math.trunc((cost * 1.3) / 500)),
@@ -1309,7 +1310,8 @@ new App.DomPassage("Sell Slave", () => {
 					}
 					App.Events.addNode(el, r);
 					return el;
-				}
+				},
+				allowsBoomerang: false
 			}],
 			["nipple fetishist", {
 				cost: (500 * Math.trunc((cost * 1.05) / 500)),
@@ -2863,7 +2865,8 @@ new App.DomPassage("Sell Slave", () => {
 
 					App.Events.addNode(el, r);
 					return el;
-				}
+				},
+				allowsBoomerang: false
 			}],
 			["reputable trader", {
 				cost: 500 * Math.trunc((cost * 0.9) / 500),
@@ -3107,7 +3110,8 @@ new App.DomPassage("Sell Slave", () => {
 					}
 					App.Events.addNode(el, r);
 					return el;
-				}
+				},
+				allowsBoomerang: false
 			});
 		}
 		let desc;