diff --git a/devTools/types/FC/RA.d.ts b/devTools/types/FC/RA.d.ts
index 3c1d84a173ded8e61137dfff5ccfd949a75cf4a7..f9816fcdafde765781fc6c95f684294d9e31a7cc 100644
--- a/devTools/types/FC/RA.d.ts
+++ b/devTools/types/FC/RA.d.ts
@@ -84,8 +84,8 @@ declare namespace FC {
 			clothes: FC.Clothes;
 			collar: string;
 			faceAccessory: string;
-			mouthAccessory: string;
-			shoes: string;
+			mouthAccessory: WithNone<MouthAccessory>;
+			shoes: WithNone<Shoes>;
 			armAccessory: string;
 			legAccessory: string;
 			chastityVagina: number;
diff --git a/devTools/types/FC/human.d.ts b/devTools/types/FC/human.d.ts
index b4565ff0d7a35f68058b3219f4a8b8115c5130d8..b7fdcf8e73f9e11ae975c6761a44f4350c5a167d 100644
--- a/devTools/types/FC/human.d.ts
+++ b/devTools/types/FC/human.d.ts
@@ -241,6 +241,8 @@ declare global {
 			"stretch pants and a crop-top" | "striped panties" | "striped underwear" | "uncomfortable straps" |	"Western clothing";
 		type HairStyle = "afro"| "braided" | "cornrows" | "curled" | "dreadlocks" | "eary" | "bun" | "messy bun" | "ponytail" | "tails" |
 			"drills" | "luxurious" | "messy" | "neat" | "permed" | "bangs" | "hime" | "strip" | "up" | "shaved" | "trimmed" | "buzzcut" | "bald" | "undercut";
+		type Shoes = "heels" | "pumps" | "extreme heels" | "boots" | "flats" | "platform heels" | "extreme heels" | "extreme platform heels" | "platform shoes";
+		type MouthAccessory = "dildo gag" | "massive dildo gag" | "ball gag" | "bit gag" | "ring gag";
 		type Diet = "healthy" | "restricted" | "corrective" | "muscle building" | "fattening" | "slimming" | "XX" | "XY" | "XXY" |
 			"cum production" | "cleansing" | "fertility" | "high caloric";
 		type Drug = "no drugs" |
diff --git a/js/003-data/clothes/001-slaveWearData.js b/js/003-data/clothes/001-slaveWearData.js
index 5fdaedc70f5c0fe38be948e5d6dbd4eb87d25aa9..a5a64627b615e6ffb62f57a38bebbd9caf94c188 100644
--- a/js/003-data/clothes/001-slaveWearData.js
+++ b/js/003-data/clothes/001-slaveWearData.js
@@ -1123,42 +1123,6 @@ App.Data.slaveWear = {
 		],
 	]),
 
-	mouthAccessory: new Map([
-		["ball gag",
-			{
-				name: "Ball gag",
-				note: "Increases fear and devotion for disobedient slaves, submissives and nymphos also enjoy wearing one."
-			}
-		],
-		["bit gag",
-			{
-				name: "Bit gag",
-				note: "Increases fear and devotion for disobedient slaves, submissives and nymphos also enjoy wearing one."
-			}
-		],
-		["ring gag",
-			{
-				name: "Ring gag",
-				note: "Increases fear and devotion for disobedient slaves, submissives and nymphos also enjoy wearing one."
-			}
-		],
-		["massive dildo gag",
-			{
-				name: "Massive dildo gag",
-				get requirements() {
-					return V.boughtItem.toys.gags === 1;
-				},
-				note: "Increases oral skill up to a point and causes fear for disobedient slaves."
-			}
-		],
-		["dildo gag",
-			{
-				name: "Dildo gag",
-				note: "Increases oral skill up to a point and causes fear for disobedient slaves."
-			}
-		],
-	]),
-
 	vaginalAttachment: new Map([
 		["none", {name: "None"}],
 		["vibrator",
@@ -1244,6 +1208,51 @@ App.Data.slaveWear = {
 
 	]),
 };
+
+/**
+ * @typedef {object} mouthAccessory
+ * @property {string} name
+ * @property {boolean} [requirements]
+ * @property {string} [note]
+ */
+
+/** @type {Map<FC.MouthAccessory, mouthAccessory>} */
+App.Data.mouthAccessory = new Map([
+	["ball gag",
+		{
+			name: "Ball gag",
+			note: "Increases fear and devotion for disobedient slaves, submissives and nymphos also enjoy wearing one."
+		}
+	],
+	["bit gag",
+		{
+			name: "Bit gag",
+			note: "Increases fear and devotion for disobedient slaves, submissives and nymphos also enjoy wearing one."
+		}
+	],
+	["ring gag",
+		{
+			name: "Ring gag",
+			note: "Increases fear and devotion for disobedient slaves, submissives and nymphos also enjoy wearing one."
+		}
+	],
+	["massive dildo gag",
+		{
+			name: "Massive dildo gag",
+			get requirements() {
+				return V.boughtItem.toys.gags === 1;
+			},
+			note: "Increases oral skill up to a point and causes fear for disobedient slaves."
+		}
+	],
+	["dildo gag",
+		{
+			name: "Dildo gag",
+			note: "Increases oral skill up to a point and causes fear for disobedient slaves."
+		}
+	],
+]);
+
 /**
  * @typedef {object} slaveShoes
  * @property {string} name
@@ -1255,7 +1264,7 @@ App.Data.slaveWear = {
  */
 
 /**
- * @type {Map<string, slaveShoes>} slaveShoesCategory
+ * @type {Map<FC.Shoes, slaveShoes>} slaveShoesCategory
  */
 App.Data.shoes = new Map([ // TODO: add lift property
 	["none",
diff --git a/src/endWeek/saChoosesOwnClothes.js b/src/endWeek/saChoosesOwnClothes.js
index feb00e02e41b645151712978d739fbbe219b2f41..fefd9c8b46081fd7f2c97ab3ad0abf0c98ae6ee3 100644
--- a/src/endWeek/saChoosesOwnClothes.js
+++ b/src/endWeek/saChoosesOwnClothes.js
@@ -997,9 +997,10 @@ App.SlaveAssignment.choosesOwnClothes = (function() {
 
 	/**
 	 * @param {App.Entity.SlaveState} slave
-	 * @returns {{text:string, shoes:string}}
+	 * @returns {{text:string, shoes:FC.Shoes}}
 	 */
 	function todaysShoes(slave) {
+		/** @type {{text:string, shoes:FC.Shoes}[]} */
 		const shoes = [];
 
 		if (slave.fetish === "mindbroken") {
diff --git a/src/interaction/siWardrobe.js b/src/interaction/siWardrobe.js
index c7a95a4dfbe4fe52ecce4e780143eee67bba6856..92d6e8c6416ceae92970853fb5b7c0878cae1cfe 100644
--- a/src/interaction/siWardrobe.js
+++ b/src/interaction/siWardrobe.js
@@ -323,13 +323,13 @@ App.UI.SlaveInteract.wardrobe = function(slave, contentRefresh) {
 
 		el.appendChild(label);
 
-		let array = Array.from(App.Data.slaveWear.mouthAccessory.keys());
+		let array = Array.from(App.Data.mouthAccessory.keys());
 
 		// Sort
-		array = array.sort((a, b) => (App.Data.slaveWear.mouthAccessory.get(a).name > App.Data.slaveWear.mouthAccessory.get(b).name) ? 1 : -1);
+		array = array.sort((a, b) => (App.Data.mouthAccessory.get(a).name > App.Data.mouthAccessory.get(b).name) ? 1 : -1);
 		const sortedMap = new Map([]);
 		for (const name of array) {
-			sortedMap.set(name, App.Data.slaveWear.mouthAccessory.get(name));
+			sortedMap.set(name, App.Data.mouthAccessory.get(name));
 		}
 
 		let links = document.createElement('div');
diff --git a/src/js/SlaveState.js b/src/js/SlaveState.js
index 15948ec5a44c04b33b83318e30ec9e45f52e08d2..b9c5ff8c04cf17e0b346c4472b80685683e20852 100644
--- a/src/js/SlaveState.js
+++ b/src/js/SlaveState.js
@@ -1889,26 +1889,12 @@ App.Entity.SlaveState = class SlaveState {
 		this.faceAccessory = "none";
 		/**
 		 * may accept strings, use at own risk
-		 * * "none"
-		 * * "dildo gag"
-		 * * "massive dildo gag"
-		 * * "ball gag"
-		 * * "bit gag"
-		 * * "ring gag"
+		 * @type {FC.WithNone<FC.MouthAccessory>}
 		 */
 		this.mouthAccessory = "none";
 		/**
 		 * may accept strings, use at own risk
-		 * * "none"
-		 * * "heels"
-		 * * "pumps"
-		 * * "extreme heels"
-		 * * "boots"
-		 * * "flats"
-		 * * "platform heels"
-		 * * "extreme heels"
-		 * * "extreme platform heels"
-		 * * "platform shoes"
+		 * @type {FC.WithNone<FC.Shoes>}
 		 */
 		this.shoes = "none";
 		/**
diff --git a/src/js/rulesAssistantOptions.js b/src/js/rulesAssistantOptions.js
index 9845e5a93bab869a15fb50f0ac6ec10c59104934..6b96e8f8c0d2817f3511801bb756f4874f4861f6 100644
--- a/src/js/rulesAssistantOptions.js
+++ b/src/js/rulesAssistantOptions.js
@@ -2002,7 +2002,7 @@ App.RA.options = (function() {
 
 	class GagList extends ListSelector {
 		constructor() {
-			const pairs = [["No gag", "none"]].concat(isItemAccessible.array(App.Data.slaveWear.mouthAccessory ));
+			const pairs = [["No gag", "none"]].concat(isItemAccessible.array(App.Data.mouthAccessory ));
 			super("Gag", pairs);
 			this.setValue(current_rule.set.mouthAccessory );
 			this.onchange = (value) => current_rule.set.mouthAccessory = value;
diff --git a/src/npc/interaction/fKiss.js b/src/npc/interaction/fKiss.js
index c6ebb02242839929928b3fb0c65b229d7d86d14a..451396c50676ab22aef5a4739ff815b8f358de7a 100644
--- a/src/npc/interaction/fKiss.js
+++ b/src/npc/interaction/fKiss.js
@@ -15,6 +15,7 @@ App.Interact.fKiss = function(slave) {
 	const {title: Master, say: say} = getEnunciation(slave);
 
 	const {womanP} = getPronouns(V.PC).appendSuffix("P");
+	/** @type {FC.MouthAccessory|""} */
 	let assignedGag = "";
 	r.push(`You tell ${slave.slaveName} to`);
 	switch (slave.mouthAccessory) {