diff --git a/src/markets/specificMarkets/customSlaveMarket.js b/src/markets/specificMarkets/customSlaveMarket.js
index 8d9877dbcc74aff83971cc7de6fef833f501c14c..e1d98751247f0234d309110d9bf8a2c05974ced5 100644
--- a/src/markets/specificMarkets/customSlaveMarket.js
+++ b/src/markets/specificMarkets/customSlaveMarket.js
@@ -36,6 +36,7 @@ App.Markets["Custom Slave"] = function() {
 	el.append(nationality());
 	el.append(reset());
 	el.append(orderControls());
+	el.append(hears());
 
 	return el;
 
@@ -671,9 +672,64 @@ App.Markets["Custom Slave"] = function() {
 		return el;
 	}
 
-	//TODO: eyes
+	function eyes() {
+		const el = document.createElement("div");
+		const slaveProperty = "eyes";
+		const choices = new Map([
+			["0", "Normal Vision"],
+			["-1", "Nearsighted"],
+		]);
+		if (V.seeExtreme) {
+			choices.set("-2", "Blind");
+		}
+
+		// Desc setup
+		const descText = document.createElement("span");
+		descText.id = (`${slaveProperty}-text`);
+		descText.append(description());
+		el.append(descText);
+
+		el.append(choicesMaker(slaveProperty, choices, description));
+
+		function description() {
+			const vision = getBestVision(slave);
+			for (const [value, text] of choices) {
+				if (vision === Number(value)) {
+					return `${text}.`;
+				}
+			}
+			return `Blind.`;
+		}
+
+		return el;
+	}
+
 
-	//TODO: ears
+	function hears() {
+		const el = document.createElement("div");
+		const slaveProperty = "hears";
+		const choices = new Map([
+			["0", "Normal Hearing"],
+			["-1", "Hard of Hearing"],
+		]);
+		if (V.seeExtreme) {
+			choices.set("-2", "Deaf");
+		}
+
+		createDescription(el, description, slaveProperty);
+		el.append(choicesMaker(slaveProperty, choices, description));
+
+		function description() {
+			for (const [value, text] of choices) {
+				if (slave.hears === Number(value)) {
+					return `${text}.`;
+				}
+			}
+			return `Hard of hearing.`;
+		}
+
+		return el;
+	}
 
 	function smells() {
 		const el = document.createElement("div");