diff --git a/js/003-data/slaveWearData.js b/js/003-data/slaveWearData.js
index ee5f17b6f40c2bd78e4fb0360f5554ebc3d9450c..b649e699b8f82f067a8f7a99d8cb4b1b3ecd1116 100644
--- a/js/003-data/slaveWearData.js
+++ b/js/003-data/slaveWearData.js
@@ -983,53 +983,6 @@ App.Data.slaveWear = {
 		]
 	]),
 
-	vaginalAccessories: new Map([
-		["none", {name: "None"}],
-		["bullet vibrator", {name: "Bullet vibrator"}],
-		["smart bullet vibrator",
-			{
-				name: "Smart bullet vibrator",
-				get requirements() {
-					return V.boughtItem.toys.smartVibes === 1;
-				}
-			}
-		],
-		["dildo", {name: "Dildo"}],
-		["long dildo",
-			{
-				name: "Long dildo",
-				get requirements() {
-					return V.boughtItem.toys.dildos === 1;
-				}
-			}
-		],
-		["large dildo", {name: "Large dildo"}],
-		["long, large dildo",
-			{
-				name: "Long, large dildo",
-				get requirements() {
-					return V.boughtItem.toys.dildos === 1;
-				}
-			}
-		],
-		["huge dildo",
-			{
-				name: "Huge dildo",
-				get requirements() {
-					return V.boughtItem.toys.dildos === 1;
-				}
-			}
-		],
-		["long, huge dildo",
-			{
-				name: "Long, huge dildo",
-				get requirements() {
-					return V.boughtItem.toys.dildos === 1;
-				}
-			}
-		]
-	]),
-
 	vaginalAttachments: new Map([
 		["none", {name: "None"}],
 		["vibrator",
@@ -1263,7 +1216,98 @@ App.Data.buttplugs = new Map([
 		}
 	]
 ]);
+/**
+ * @typedef {object} vaginalAccessories
+ * @property {string} name
+ * @property {FC.FutureSociety} [fs] Automatically unlocked with this FS.
+ * @property {boolean} [requirements]
+ * @property {0|1|2|3} width
+ * @property {0|1|2} length
+ */
 
+/**
+ * @type {Map<string, vaginalAccessories>}
+ */
+App.Data.vaginalAccessories = new Map([
+	["none",
+		{
+			name: "None",
+			width: 0,
+			length: 0
+		}
+	],
+	["bullet vibrator",
+		{
+			name: "Bullet vibrator",
+			width: 0,
+			length: 1
+		}
+	],
+	["smart bullet vibrator",
+		{
+			name: "Smart bullet vibrator",
+			get requirements() {
+				return V.boughtItem.toys.smartVibes === 1;
+			},
+			width: 0,
+			length: 1
+		}
+	],
+	["dildo",
+		{
+			name: "Dildo",
+			width: 1,
+			length: 1
+		}
+	],
+	["long dildo",
+		{
+			name: "Long dildo",
+			get requirements() {
+				return V.boughtItem.toys.dildos === 1;
+			},
+			width: 1,
+			length: 2
+		}
+	],
+	["large dildo",
+		{
+			name: "Large dildo",
+			width: 2,
+			length: 1
+		}
+	],
+	["long, large dildo",
+		{
+			name: "Long, large dildo",
+			get requirements() {
+				return V.boughtItem.toys.dildos === 1;
+			},
+			width: 2,
+			length: 2
+		}
+	],
+	["huge dildo",
+		{
+			name: "Huge dildo",
+			get requirements() {
+				return V.boughtItem.toys.dildos === 1;
+			},
+			width: 3,
+			length: 1
+		}
+	],
+	["long, huge dildo",
+		{
+			name: "Long, huge dildo",
+			get requirements() {
+				return V.boughtItem.toys.dildos === 1;
+			},
+			width: 3,
+			length: 2
+		}
+	]
+]);
 /**
  * @typedef {object} slaveWearChastity
  * @property {string} name
@@ -1381,3 +1425,4 @@ App.Data.chastityDevices = new Map([
 		}
 	]
 ]);
+
diff --git a/src/interaction/siWardrobe.js b/src/interaction/siWardrobe.js
index 5ce522bbb185278210505758ef579ba8574118ff..511d657d698551c5146723493cbfdd8be745b516 100644
--- a/src/interaction/siWardrobe.js
+++ b/src/interaction/siWardrobe.js
@@ -590,7 +590,7 @@ App.UI.SlaveInteract.wardrobe = function(slave) {
 
 		let optionsArray = [];
 
-		for (const [key, object] of App.Data.slaveWear.vaginalAccessories) {
+		for (const [key, object] of App.Data.vaginalAccessories) {
 			if (key === "none") {
 				// skip none in set, we set the link elsewhere.
 				continue;
diff --git a/src/js/itemAvailability.js b/src/js/itemAvailability.js
index d8975c4fcb1d77997979d22ff243bb5cce4960ca..e2349b2a2eb1980f959b048af5b4f60772297bbe 100644
--- a/src/js/itemAvailability.js
+++ b/src/js/itemAvailability.js
@@ -34,7 +34,7 @@ globalThis.isItemAccessible = (function() {
 				selectedDB = App.Data.slaveWear.buttplugAttachments;
 				break;
 			case "vaginalAccessory":
-				selectedDB = App.Data.slaveWear.vaginalAccessories;
+				selectedDB = App.Data.vaginalAccessories;
 				break;
 			case "vaginalAttachment":
 				selectedDB = App.Data.slaveWear.vaginalAttachments;
diff --git a/src/js/rulesAssistantOptions.js b/src/js/rulesAssistantOptions.js
index 294b86564f30c9595c969fb68c540dbb72a02da9..23c59b39e43381f354f08f40a589136c55afc656 100644
--- a/src/js/rulesAssistantOptions.js
+++ b/src/js/rulesAssistantOptions.js
@@ -1928,7 +1928,7 @@ App.RA.options = (function() {
 
 	class VagAccVirginsList extends ListSelector {
 		constructor() {
-			super("Vaginal accessories for virgins", isItemAccessible.array(App.Data.slaveWear.vaginalAccessories));
+			super("Vaginal accessories for virgins", isItemAccessible.array(App.Data.vaginalAccessories));
 			this.setValue(current_rule.set.virginAccessory);
 			this.onchange = (value) => current_rule.set.virginAccessory = value;
 		}
@@ -1936,7 +1936,7 @@ App.RA.options = (function() {
 
 	class VagAccAVirginsList extends ListSelector {
 		constructor() {
-			super("Vaginal accessories for anal virgins", isItemAccessible.array(App.Data.slaveWear.vaginalAccessories));
+			super("Vaginal accessories for anal virgins", isItemAccessible.array(App.Data.vaginalAccessories));
 			this.setValue(current_rule.set.aVirginAccessory);
 			this.onchange = (value) => current_rule.set.aVirginAccessory = value;
 		}
@@ -1944,7 +1944,7 @@ App.RA.options = (function() {
 
 	class VagAccOtherList extends ListSelector {
 		constructor() {
-			super("Vaginal accessories for other slaves", isItemAccessible.array(App.Data.slaveWear.vaginalAccessories));
+			super("Vaginal accessories for other slaves", isItemAccessible.array(App.Data.vaginalAccessories));
 			this.setValue(current_rule.set.vaginalAccessory);
 			this.onchange = (value) => current_rule.set.vaginalAccessory = value;
 		}