diff --git a/src/art/artJS.js b/src/art/artJS.js
index ac11061948093bbc93acad2ffd8cb75d5514de0d..59198698b2d240b0b3f486a763d780be136a5c78 100644
--- a/src/art/artJS.js
+++ b/src/art/artJS.js
@@ -77,7 +77,7 @@ App.Art.refreshSlaveArt = function(artSlave, artSize, elementID, UIDisplay=0) {
 				image.appendChild(mask);
 			} else if (artSize === 2) {
 				image.className = "imageRef medImg";
-			} else if (artsize < 2) {
+			} else if (artSize < 2) {
 				image.className = "imageRef smlImg";
 			}
 			image.appendChild(App.Art.SlaveArtElement(artSlave, artSize, UIDisplay));
diff --git a/src/js/findSlave.js b/src/js/findSlave.js
index ca370f9fb0f72e40c588c43a36560d4976f6d65a..8bf1329a87b05e25bef09c4df4594d7cd3598c31 100644
--- a/src/js/findSlave.js
+++ b/src/js/findSlave.js
@@ -12,14 +12,14 @@ App.FindSlave._fragmentSearch = function(haystacks, needles) {
 };
 
 /**
- * Get slave indices which match a predicate
+ * Get slave ids which match a predicate
  * @param {function(App.Entity.SlaveState): boolean} predicate
  * @returns {number[]}
  */
-App.FindSlave._slaveIndices = function(predicate) {
-	return V.slaves.reduce((acc, slave, ind) => {
+App.FindSlave._slaveIDs = function(predicate) {
+	return V.slaves.reduce((acc, slave) => {
 		if (predicate(createReadonlyProxy(slave))) {
-			acc.push(ind);
+			acc.push(slave.ID);
 		}
 		return acc;
 	}, []);
@@ -32,8 +32,8 @@ App.FindSlave._slaveIndices = function(predicate) {
  */
 App.FindSlave.searchByName = function(query) {
 	const needles = query.split(" ").map((needle) => { return new RegExp(needle, "i"); });
-	const indices = this._slaveIndices((slave) => { return this._fragmentSearch([slave.slaveName, slave.slaveSurname, slave.birthName, slave.birthSurname], needles); });
-	return App.UI.SlaveList.render.listDOM(indices, [], App.UI.SlaveList.SlaveInteract.stdInteract);
+	const ids = this._slaveIDs((slave) => { return this._fragmentSearch([slave.slaveName, slave.slaveSurname, slave.birthName, slave.birthSurname], needles); });
+	return App.UI.SlaveList.render.listDOM(ids, [], App.UI.SlaveList.SlaveInteract.stdInteract);
 };
 
 /**
@@ -43,8 +43,8 @@ App.FindSlave.searchByName = function(query) {
  */
 App.FindSlave.searchByBackground = function(query) {
 	const needles = query.split(" ").map((needle) => { return new RegExp(needle, "i"); });
-	const indices = this._slaveIndices((slave) => { return this._fragmentSearch([slave.career, slave.origin], needles); });
-	return App.UI.SlaveList.render.listDOM(indices, [], App.UI.SlaveList.SlaveInteract.stdInteract);
+	const ids = this._slaveIDs((slave) => { return this._fragmentSearch([slave.career, slave.origin], needles); });
+	return App.UI.SlaveList.render.listDOM(ids, [], App.UI.SlaveList.SlaveInteract.stdInteract);
 };
 
 /**
@@ -54,6 +54,6 @@ App.FindSlave.searchByBackground = function(query) {
  */
 App.FindSlave.searchByExpression = function(query) {
 	const pred = new Function("slave", "return (" + query + ");");
-	const indices = runWithReadonlyProxy(() => { return this._slaveIndices(pred); });
-	return App.UI.SlaveList.render.listDOM(indices, [], App.UI.SlaveList.SlaveInteract.stdInteract);
+	const ids = runWithReadonlyProxy(() => { return this._slaveIDs(pred); });
+	return App.UI.SlaveList.render.listDOM(ids, [], App.UI.SlaveList.SlaveInteract.stdInteract);
 };
diff --git a/src/js/slaveListing.js b/src/js/slaveListing.js
index b97674baaa0da8c76dccc5452ac654ad4a279026..17508379a2437be6c92ed582bbcf568bc90a719f 100644
--- a/src/js/slaveListing.js
+++ b/src/js/slaveListing.js
@@ -21,12 +21,10 @@ App.UI.SlaveList = {};
 
 App.UI.SlaveList.render = function() {
 	const facilityPassages = new Set(
-		["Main", "Head Girl Suite", "Spa", "Brothel", "Club", "Arcade", "Clinic", "Schoolroom", "Dairy", "Farmyard", "Servants' Quarters" , "Master Suite", "Cellblock"]);
+		["Main", "Head Girl Suite", "Spa", "Brothel", "Club", "Arcade", "Clinic", "Schoolroom", "Dairy", "Farmyard", "Servants' Quarters", "Master Suite", "Cellblock"]);
 
 	/** @type {string} */
 	let passageName;
-	/** @type {App.Entity.SlaveState[]} */
-	let slaves;
 
 	// potentially can be a problem if played long enough to reach Number.MAX_SAFE_INTEGER
 	let listID = Number.MIN_SAFE_INTEGER;
@@ -50,7 +48,6 @@ App.UI.SlaveList.render = function() {
 	 */
 	function listDOM(IDs, rejectedSlaves, interactionLink, postNote) {
 		passageName = passage();
-		slaves = V.slaves;
 
 		let res = document.createDocumentFragment();
 
@@ -757,29 +754,29 @@ App.UI.SlaveList.listNGPSlaves = function() {
 	}
 
 	if (V.slavesToImport > 0) {
-		const importedSlavesIndices = slaves.reduce((acc, s, i) => {
+		const importedSlavesIDs = slaves.reduce((acc, s) => {
 			if (s.assignment === NGPassignment) {
-				acc.push(i);
+				acc.push(s.ID);
 			}
 			return acc;
 		}, []);
-		SlaveSort.indices(importedSlavesIndices);
-		r += App.UI.tabbar.makeTab("remove", App.UI.SlaveList.render.listMarkup(importedSlavesIndices, [],
+		SlaveSort.IDs(importedSlavesIDs);
+		r += App.UI.tabbar.makeTab("remove", App.UI.SlaveList.render.listMarkup(importedSlavesIDs, [],
 			App.UI.SlaveList.makeNameDecorator(["emphasizedSlave", "pink"]),
-			(s, i) => App.UI.DOM.passageLink('Remove from import list', thisPassage,
-				() => { variables().slavesToImport -= 1; removeJob(variables().slaves[i], NGPassignment); }
+			(s) => App.UI.DOM.passageLink('Remove from import list', thisPassage,
+				() => { V.slavesToImport -= 1; removeJob(s, NGPassignment); }
 			)));
 	} else {
 		r += App.UI.tabbar.makeTab("remove", `<em>No slaves will go with you to the new game</em>`);
 	}
 
 	if (V.slavesToImport < V.slavesToImportMax) {
-		const slavesToImportIndices = slaves.reduce((acc, s, i) => { if (s.assignment !== NGPassignment) { acc.push(i); } return acc; }, []);
-		SlaveSort.indices(slavesToImportIndices);
-		r += App.UI.tabbar.makeTab("assign", App.UI.SlaveList.render.listMarkup(slavesToImportIndices, [],
+		const slavesToImportIDs = slaves.reduce((acc, s) => { if (s.assignment !== NGPassignment) { acc.push(s.ID); } return acc; }, []);
+		SlaveSort.IDs(slavesToImportIDs);
+		r += App.UI.tabbar.makeTab("assign", App.UI.SlaveList.render.listMarkup(slavesToImportIDs, [],
 			App.UI.SlaveList.makeNameDecorator(["emphasizedSlave", "pink"]),
-			(s, i) => App.UI.DOM.passageLink('Add to import list', thisPassage,
-				() => { variables().slavesToImport += 1; assignJob(variables().slaves[i], NGPassignment); }
+			(s) => App.UI.DOM.passageLink('Add to import list', thisPassage,
+				() => { V.slavesToImport += 1; assignJob(s, NGPassignment); }
 			)));
 	} else {
 		r += App.UI.tabbar.makeTab("assign", `<strong>Slave import limit reached</strong>`);
diff --git a/src/js/slaveSummaryHelpers.js b/src/js/slaveSummaryHelpers.js
index 6e37470c95b653850580b80f63aa3c9d4c953b4b..19630f896b9cf5fcf50033575d496104d3ef9afb 100644
--- a/src/js/slaveSummaryHelpers.js
+++ b/src/js/slaveSummaryHelpers.js
@@ -545,7 +545,7 @@ App.UI.SlaveSummaryImpl = function() {
 		 */
 		function long_muscles(slave, c) {
 			const h = helpers;
-			h.makeStyledSpan(c, h.getMultiNumericRating(data.long.body.muscles, [slave.muscles + 100, h.FSData.policy.PhysicalIdealist.active]), slave.muscles);
+			h.makeStyledSpan(c, h.getMultiNumericRating(data.long.body.muscles, [slave.muscles + 100, h.FSData.policy.PhysicalIdealist.active]), slave.muscles, true);
 		}
 
 		/**