diff --git a/js/003-data/miscData.js b/js/003-data/miscData.js
index ff006a0af1402f94e9916f35cf7443c3ff1911bc..17bb58e4a0807c7077695cf15c0c639ae5bc32d8 100644
--- a/js/003-data/miscData.js
+++ b/js/003-data/miscData.js
@@ -453,7 +453,7 @@ App.Data.misc = {
 	badNames: ["Ass Kisser", "Ass Licker", "Ass", "Assfucker", "Asshole", "Ballsack", "Bastard", "Bitch", "Cock", "Cocksucker", "Coward", "Creep", "Cum Rag", "Cunt", "Degenerate", "Despoiler", "Dick", "Dickhead", "Dicksucker", "Dickweed", "Dipshit", "Douchebag", "Dumbass", "DumbFuck", "Dunderfuck", "Faggot", "Fucker", "Fuckface", "Fuckhead", "Fucko", "Fucktard", "Fuckwit", "Idiot", "Inbred", "Jackass", "Jerk", "Jizz Stain", "Moron", "Motherfucker", "Nutsack", "Pissbaby", "Prick", "Pussy", "Rapist", "Ratfuck", "Retard", "Ruiner", "Schmuck", "Scumbag", "Shitbird", "Shithead", "Slave", "Slaver", "Sleazeball", "Slut", "Sodomite", "Thundercunt", "Traitor", "Trash", "Whore"],
 
 	niceClothes: [
-		{name: "Attractive lingerie for a pregnant woman", value: "attractive lingerie for a pregnant woman", fs: "FSRepopulationFocus", unlock: {clothesBoughtMaternityLingerie: 1} },
+		{name: "Maternity lingerie", value: "attractive lingerie for a pregnant woman", fs: "FSRepopulationFocus", unlock: {clothesBoughtMaternityLingerie: 1} },
 		{name: "Bunny outfit", value: "a bunny outfit", fs: "FSGenderFundamentalist", unlock: {clothesBoughtBunny: 1} },
 		{name: "Body oil", value: "body oil", fs: "FSPhysicalIdealist", unlock: {clothesBoughtOil: 1} },
 		{name: "Chattel habit", value: "a chattel habit", fs: "FSChattelReligionist", unlock: {clothesBoughtHabit: 1} },
@@ -569,7 +569,7 @@ App.Data.misc = {
 		{name: "Spats and a tank top", value: "spats and a tank top"},
 		{name: "String bikini", value: "a string bikini"},
 		{name: "Succubus costume", value: "a succubus outfit"},
-		{name: "Slutty business attire", value: "slutty business attire"},
+		{name: "Suit (slutty)", value: "slutty business attire"},
 
 		//{name: "Let them choose", value: "choosing her own clothes"}, //an option, but not one we need to return.  Human eyes only.
 		{name: "Haltertop dress", value: "a halter top dress"},
diff --git a/src/js/itemAvailability.js b/src/js/itemAvailability.js
index c00d459196f5e7dc12d9130b077da63a6726e6b3..d6c866328015f93013e22d391b24fd17979341c8 100644
--- a/src/js/itemAvailability.js
+++ b/src/js/itemAvailability.js
@@ -200,45 +200,77 @@ window.isItemAccessible = function(string) {
 	}
 };
 
-window.isClothingAccessible = function(string) {
-	if (V.cheatMode === 1) {
-		return true;
-	}
+window.isClothingAccessible = (function() {
+	return {
+		array: array,
+		entry: entry,
+	};
 
-	let item = App.Data.misc.niceClothes.find((i) => i.value === string);
-	if (!item) {
-		item = App.Data.misc.harshClothes.find((i) => i.value === string);
-	}
-	if (!item) {
-		console.log(`${string} is not a registered piece of clothing! Check App.Data.Misc.`);
-		return false; /* couldn't be found */
+	/**
+	 * Checks whether clothing is accessible
+	 * @param {string} string Name of wearable item
+	 * @returns {boolean}
+	 */
+	function entry(string) {
+		if (V.cheatMode === 1) {
+			return true;
+		}
+		let item = App.Data.misc.niceClothes.find((i) => i.value === string);
+		if (!item) {
+			item = App.Data.misc.harshClothes.find((i) => i.value === string);
+		}
+		if (!item) {
+			console.log(`${string} is not a registered piece of clothing! Check App.Data.Misc.`);
+			return false; /* couldn't be found */
+		}
+		return isAvailable(item);
 	}
-	if (!(item.hasOwnProperty("unlock")) && !(item.hasOwnProperty("fs"))) {
-		return true;
+	/**
+	 * Returns array of wearable clothing in format [name, value], basically player facing / game data.
+	 * @param {string} db Name of array to look in (such as "App.Data.misc.niceClothes")
+	 * @returns {Array}
+	 */
+	function array(db) {
+		const array = [];
+		db.forEach((i) => {
+			if (V.cheatMode || isAvailable(i)) {
+				if (i.fs) {
+					i.name = i.name + ` (FS)`;
+				}
+				array.push([i.name, i.value]);
+			}
+		});
+		return array;
 	}
-	if (item.hasOwnProperty("fs")) {
-		if (V.arcologies[0][item.fs] > 0) {
+	function isAvailable(item) {
+		if (!(item.hasOwnProperty("unlock")) && !(item.hasOwnProperty("fs"))) {
+			// No restriction, this clothing item is available to everyone
 			return true;
 		}
-	}
-	if (item.hasOwnProperty("unlock")) {
-		let keys = Object.keys(item.unlock);
-		for (let key in keys) {
-			if (keys[key] === "continent" && V.continent === item.unlock[keys[key]]) {
-				return true;
-			} else if (V[keys[key]] > 0 ) {
+		if (item.hasOwnProperty("fs")) {
+			if (V.arcologies[0][item.fs] > 0) {
 				return true;
 			}
 		}
-		// special case where they must both be true
-		if (item.unlock.clothesBoughtSports && item.unlock.clothesBoughtCasual) {
-			if (V.clothesBoughtSports && V.clothesBoughtCasual) {
-				return true;
+		if (item.hasOwnProperty("unlock")) {
+			let keys = Object.keys(item.unlock);
+			for (let key in keys) {
+				if (keys[key] === "continent" && V.continent === item.unlock[keys[key]]) {
+					return true;
+				} else if (V[keys[key]] > 0 ) {
+					return true;
+				}
+			}
+			// special case where they must both be true
+			if (item.unlock.clothesBoughtSports && item.unlock.clothesBoughtCasual) {
+				if (V.clothesBoughtSports && V.clothesBoughtCasual) {
+					return true;
+				}
 			}
 		}
+		return false;
 	}
-	return false;
-};
+})();
 
 /**
  * @param {App.Entity.SlaveState} slave
diff --git a/src/js/rulesAssistantOptions.js b/src/js/rulesAssistantOptions.js
index 2fb8cb1db46ddddb49f8521a4f23f0901e16744d..4ecefd19e6bd91bc30dd3829ba27c688d40cb2d0 100644
--- a/src/js/rulesAssistantOptions.js
+++ b/src/js/rulesAssistantOptions.js
@@ -1743,132 +1743,11 @@ window.rulesAssistantOptions = (function() {
 			];
 			super("Clothes", items);
 
-			const nclothes = [
-				["Apron", "an apron"],
-				["Bangles", "slutty jewelry"],
-				["Bodysuit", "a comfortable bodysuit"],
-				["Cheerleader", "a cheerleader outfit"],
-				["Clubslut netting", "clubslut netting"],
-				["Cutoffs and a t-shirt", "cutoffs and a t-shirt"],
-				["Fallen nun", "a fallen nuns habit"],
-				["Hijab and abaya", "a hijab and abaya"],
-				["Leotard", "a leotard"],
-				["Maid (slutty)", "a slutty maid outfit"],
-				["Nice lingerie", "attractive lingerie"],
-				["Nurse (slutty)", "a slutty nurse outfit"],
-				["Overalls", "overalls"],
-				["Scalemail bikini", "a scalemail bikini"],
-				["Schoolgirl", "a schoolgirl outfit"],
-				["Slutty outfit", "a slutty outfit"],
-				["Spats and tank top", "spats and a tank top"],
-				["String bikini", "a string bikini"],
-				["Succubus costume", "a succubus outfit"],
-				["Suit (slutty)", "slutty business attire"]
-			];
-			const spclothes = [
-				["Ballgown", "a ball gown"],
-				["Battlearmor", "battlearmor"],
-				["Battledress", "battledress"],
-				["Biyelgee costume", "a biyelgee costume"],
-				["Boyshorts", "boyshorts"],
-				["Bra", "a bra"],
-				["Burkini", "a burkini"],
-				["Burqa", "a burqa"],
-				["Button-up shirt and panties", "a button-up shirt and panties"],
-				["Button-up shirt", "a button-up shirt"],
-				["Cutoffs", "cutoffs"],
-				["Cybersuit", "a cybersuit"],
-				["Dirndl", "a dirndl"],
-				["Gothic Lolita Dress", "a gothic lolita dress"],
-				["Halter top dress", "a halter top dress"],
-				["Hanbok", "a hanbok"],
-				["Hijab and blouse", "a hijab and blouse"],
-				["Jeans", "jeans"],
-				["Kitty lingerie", "kitty lingerie"],
-				["Ku Klux Klan Robe", "a klan robe"],
-				["Ku Klux Klan Robe (slutty)", "a slutty klan robe"],
-				["Latex catsuit", "a latex catsuit"],
-				["Leather pants and a tube top", "leather pants and a tube top"],
-				["Leather pants and pasties", "leather pants and pasties"],
-				["Leather pants", "leather pants"],
-				["Lederhosen", "lederhosen"],
-				["Maid (nice)", "a nice maid outfit"],
-				["Military uniform", "a military uniform"],
-				["Mini dress", "a mini dress"],
-				["Monokini", "a monokini"],
-				["Mounty outfit", "a mounty outfit"],
-				["Niqab and abaya", "a niqab and abaya"],
-				["Nurse (nice)", "a nice nurse outfit"],
-				["One-piece swimsuit", "a one-piece swimsuit"],
-				["Over-sized t-shirt and boyshorts", "an oversized t-shirt and boyshorts"],
-				["Over-sized t-shirt", "an oversized t-shirt"],
-				["Panties", "panties"],
-				["Pasties", "pasties"],
-				["Pasties and panties", "panties and pasties"],
-				["Police Uniform", "a police uniform"],
-				["Pony outfit (nice)", "a nice pony outfit"],
-				["Pony outfit (slutty)", "a slutty pony outfit"],
-				["Red Army uniform", "a red army uniform"],
-				["Santa dress", "a Santa dress"],
-				["Schutzstaffel uniform (nice)", "a schutzstaffel uniform"],
-				["Schutzstaffel uniform (slutty)", "a slutty schutzstaffel uniform"],
-				["Skimpy loincloth", "a skimpy loincloth"],
-				["Slave gown", "a slave gown"],
-				["Sport shorts and a sports bra", "sport shorts and a sports bra"],
-				["Sport shorts and a t-shirt", "sport shorts and a t-shirt"],
-				["Sport shorts", "sport shorts"],
-				["Sports bra", "a sports bra"],
-				["Striped Bra", "a striped bra"],
-				["Striped Panties", "striped panties"],
-				["Striped Underwear", "striped underwear"],
-				["Suit (nice)", "nice business attire"],
-				["Sweater and cutoffs", "a sweater and cutoffs"],
-				["Sweater and panties", "a sweater and panties"],
-				["Sweater", "a sweater"],
-				["T-shirt and jeans", "a t-shirt and jeans"],
-				["T-shirt and panties", "a t-shirt and panties"],
-				["T-shirt and thong", "a t-shirt and thong"],
-				["T-shirt", "a t-shirt"],
-				["Tank-top and panties", "a tank-top and panties"],
-				["Tank-top", "a tank-top"],
-				["Thong", "a thong"],
-				["Tube top and thong", "a tube top and thong"],
-				["Tube top", "a tube top"]
-			];
-			const fsnclothes = [
-				["Bimbo outfit (FS)", "a bimbo outfit"],
-				["Body oil (FS)", "body oil"],
-				["Bunny outfit (FS)", "a bunny outfit"],
-				["Chattel habit (FS)", "a chattel habit"],
-				["Conservative clothing (FS)", "conservative clothing"],
-				["Courtesan dress (FS)", "a courtesan dress"],
-				["Harem gauze (FS)", "harem gauze"],
-				["Huipil (FS)", "a huipil"],
-				["Kimono (FS)", "a kimono"],
-				["Maternity dress (FS)", "a maternity dress"],
-				["Maternity lingerie (FS)", "attractive lingerie for a pregnant woman"],
-				["Qipao (nice) (FS)", "a long qipao"],
-				["Qipao (slutty) (FS)", "a slutty qipao"],
-				["Stretch pants and a crop-top (FS)", "stretch pants and a crop-top"],
-				["Toga (FS)", "a toga"],
-				["Western clothing (FS)", "Western clothing"],
-			];
-			spclothes.forEach(pair => { if (isItemAccessible(pair[1])) { nclothes.push(pair); } });
-			fsnclothes.forEach(pair => { if (isItemAccessible(pair[1])) { nclothes.push(pair); } });
+			const nclothes = isClothingAccessible.array(App.Data.misc.niceClothes);
 			nclothes.sort(function(a, b) { if (a[0] < b[0]) { return -1; } if (a[0] > b[0]) { return 1; } return 0; });
 			this._nice = new ListSubSection(this, "Nice", nclothes);
 
-			const hclothes = [
-				["Nude", "no clothing"],
-				["Penitent nun", "a penitent nuns habit"],
-				["Restrictive latex", "restrictive latex"],
-				["Shibari ropes", "shibari ropes"],
-				["Uncomfortable straps", "uncomfortable straps"]
-			];
-			const fshclothes = [
-				["Chains (FS)", "chains"],
-			];
-			fshclothes.forEach(pair => { if (isItemAccessible(pair[1])) { hclothes.push(pair); } });
+			const hclothes = isClothingAccessible.array(App.Data.misc.harshClothes);
 			hclothes.sort(function(a, b) { if (a[0] < b[0]) { return -1; } if (a[0] > b[0]) { return 1; } return 0; });
 
 			this._harsh = new ListSubSection(this, "Harsh", hclothes);
diff --git a/src/js/wardrobeUse.js b/src/js/wardrobeUse.js
index f1ae754633ace4afb08c5b740f968c7756f1eb53..6ff864ee5edf6f039c2fe835a23842b0d00b9134 100644
--- a/src/js/wardrobeUse.js
+++ b/src/js/wardrobeUse.js
@@ -95,7 +95,7 @@ App.UI.Wardrobe.clothes = function(slave) {
 					break;
 				}
 			}
-			if (array[i].updateSlave.clothes === `choosing her own clothes` || isClothingAccessible(array[i].updateSlave.clothes)) {
+			if (array[i].updateSlave.clothes === `choosing her own clothes` || isClothingAccessible.entry(array[i].updateSlave.clothes)) {
 				// is it just text?
 				if (array[i].disabled) {
 					link = App.UI.DOM.disabledLink(array[i].text, [array[i].disabled]);