diff --git a/src/events/debugEvent.js b/src/events/debugEvent.js
index 044296df3cd22972560e1af6f1ffa9e53945eadf..d8c3dce979a1202ce3fb8a9013a95750d02aee3d 100644
--- a/src/events/debugEvent.js
+++ b/src/events/debugEvent.js
@@ -5,6 +5,7 @@ App.Events.debugEvent = function(eventName) {
 	const frag = document.createDocumentFragment();
 	/** @type {App.Events.BaseEvent} */
 	const event = eval(`new ${eventName}`);
+	let displayOnlyValid = false;
 
 	function makeCastList() {
 		const cast = document.createDocumentFragment();
@@ -14,7 +15,6 @@ App.Events.debugEvent = function(eventName) {
 			if (!event.actors[i]) {
 				missingCast = true;
 			}
-			App.UI.DOM.appendNewElement("div", cast, `Actor ${i}: ${event.actors[i] ? SlaveFullName(getSlave(event.actors[i])) : 'not yet cast'}`);
 		}
 		if (!missingCast) {
 			App.UI.DOM.appendNewElement("div", cast, App.UI.DOM.link('Run event now', (evt) => { V.event = evt; }, [event], "JS Random Event"));
@@ -27,12 +27,13 @@ App.Events.debugEvent = function(eventName) {
 	function makeActorList() {
 		const actors = document.createDocumentFragment();
 		const actorReqs = event.actorPrerequisites();
+
 		if (actorReqs.length === 1) {
 			actors.append(singleActorList(0));
 		} else {
 			const tabBar = new App.UI.Tabs.TabBar("Options");
 			for (let i = 0; i < actorReqs.length; ++i) {
-				tabBar.addTab(`Actor ${i}`, `actor${i}`, singleActorList(i));
+				tabBar.addTab(`Actor ${i}: ${event.actors[i] ? SlaveFullName(getSlave(event.actors[i])) : 'not yet cast'}`, `actor${i}`, singleActorList(i));
 			}
 			actors.append(tabBar.render());
 		}
@@ -41,18 +42,40 @@ App.Events.debugEvent = function(eventName) {
 
 		function singleActorList(i) {
 			let tab = App.UI.DOM.makeElement("div");
+			if (!displayOnlyValid) {
+				App.UI.DOM.appendNewElement("div", tab, App.UI.DOM.link(
+					"Show only valid slaves",
+					() => {
+						displayOnlyValid = true;
+						$('#actorList').empty().append(makeActorList());
+					}
+				));
+			} else {
+				App.UI.DOM.appendNewElement("div", tab, App.UI.DOM.link(
+					"Show all slaves",
+					() => {
+						displayOnlyValid = false;
+						$('#actorList').empty().append(makeActorList());
+					}
+				));
+			}
 			for (const slave of V.slaves) {
-				let slaveDiv = App.UI.DOM.appendNewElement("div", tab, App.UI.DOM.makeElement("span", SlaveFullName(slave), "slave-name"));
+				let slaveDiv = App.UI.DOM.makeElement("div", App.UI.DOM.makeElement("span", SlaveFullName(slave), "slave-name"));
 				let slaveFails = false;
 				for (const p of actorReqs[i]) {
 					let passed = testPredicate(slaveDiv, p, slave);
 					slaveFails = slaveFails || !passed;
 					App.UI.DOM.appendNewElement("div", slaveDiv, p.name || p.toString(), [passed ? "green" : "red", "indent"]);
 				}
-				if (!slaveFails) {
+				if (event.actors.includes(slave.ID)) {
+					App.UI.DOM.appendNewElement("div", slaveDiv, App.UI.DOM.link("Remove this slave", removeCasted, [slave]), "indent");
+				} else if (!slaveFails) {
 					App.UI.DOM.appendNewElement("div", slaveDiv, App.UI.DOM.link("Choose this slave", castSlave, [slave, i]), "indent");
+				} else if (displayOnlyValid) { // Filter out slaves that are not valid
+					continue;
 				}
 				App.UI.DOM.appendNewElement("hr", tab);
+				tab.append(slaveDiv);
 			}
 			return tab;
 		}
@@ -64,6 +87,12 @@ App.Events.debugEvent = function(eventName) {
 		$('#actorList').empty().append(makeActorList());
 	}
 
+	function removeCasted(slave) {
+		event.actors.delete(slave.ID);
+		$('#castList').empty().append(makeCastList());
+		$('#actorList').empty().append(makeActorList());
+	}
+
 	function testPredicate(outDiv, p, ...args) {
 		let passed = false;
 		try {