diff --git a/.eslintrc.cjs b/.eslintrc.cjs
index 1bbee1d4f06761eb5ef7c415e4b0d6322925e8cf..4398308bc33541788d01ac93b0c42eeae4f331e6 100644
--- a/.eslintrc.cjs
+++ b/.eslintrc.cjs
@@ -93,6 +93,7 @@ module.exports = {
 		Orbital: "readonly",
 		Fadable: "readonly",
 		Skin: "readonly",
+		Sunscreen: "readonly",
 		// DoL SC2 functions
 		compressionVerifier: "readonly",
 		DefineMacro: "readonly",
@@ -243,7 +244,6 @@ module.exports = {
 		version: "readonly",
 		getClothingCost: "readonly",
 		isLoveInterest: "readonly",
-		skinColor: "readonly",
 		nullable: "readonly",
 	},
 
@@ -261,19 +261,18 @@ module.exports = {
 
 	parserOptions: {
 		// Support back to ES2020 to cover old mobile devices with outdated WebView versions that fail on 2020 and up functions
-		// ecmaVersion: "2020", (taken care of by env es2020)
 		sourceType: "module",
 	},
 
 	env: {
 		browser: true,
-		es2020: true,
+		es2021: true,
 		jquery: true,
 	},
 
 	plugins: ["es-x"],
 
-	extends: ["eslint:recommended", "plugin:jsdoc/recommended", "prettier-standard/prettier-file", "plugin:es-x/restrict-to-es2020"],
+	extends: ["eslint:recommended", "plugin:jsdoc/recommended", "prettier-standard/prettier-file", "plugin:es-x/restrict-to-es2021"],
 
 	settings: {
 		jsdoc: {
@@ -285,15 +284,13 @@ module.exports = {
 	rules: {
 		"object-shorthand": ["error", "always"],
 
-		"es-x/no-object-hasown": "off",
-
 		// SugarCube extends native objects and we follow it
 		"no-extend-native": "off",
 
 		/* hasOwn */
 		// No need for this, since we're overriding hasOwn for older browers (01-compatibility.js)
 		// Warn for the hasOwnProperty instead
-		"es-x/no-object-hasown": "off", // eslint-disable-line
+		"es-x/no-object-hasown": "off",
 		"prefer-object-has-own": "warn",
 
 		/* eslint-plugin-jsdoc */
diff --git a/devTools/canvasmodel/model.d.ts b/devTools/canvasmodel/model.d.ts
index b25bcc5e2a9d888ca47ac15ee279e9c47071bced..639a0a1b303457662ac1b433b24e77639deabc7d 100644
--- a/devTools/canvasmodel/model.d.ts
+++ b/devTools/canvasmodel/model.d.ts
@@ -75,7 +75,7 @@ declare interface CompositeLayerParams {
 	/**
 	 * Mask, a stencil image to cut out and display only select parts of this layer.
 	 */
-	masksrc?: string | HTMLCanvasElement | (string | HTMLCanvasElement)[];
+	masksrc?: string | HTMLCanvasElement | MaskObject | (string | HTMLCanvasElement | MaskObject)[];
 	/**
 	 * Alpha, 0-1. Default 1
 	 */
@@ -148,6 +148,12 @@ declare interface SimpleAnimationSpec {
 	duration: number;
 }
 
+declare interface MaskObject {
+	path?: string;
+	offsetX?: number;
+	offsetY?: number;
+}
+
 declare interface CompositeLayer extends CompositeLayerSpec {
 	maskBlendMode: GlobalCompositeOperation;
 	/**
@@ -161,11 +167,15 @@ declare interface CompositeLayer extends CompositeLayerSpec {
 	/**
 	 * Loaded/cached mask image
 	 */
-	mask?: CanvasImageSource;
+	mask?: CanvasImageSource | MaskObject | (CanvasImageSource | MaskObject)[];
+	/**
+	 * Offset of mask image
+	 */
+	maskOffsets?: MaskObject;
 	/**
 	 * Value of `masksrc` corresponding to current `mask` (if masksrc changes mask will be reloaded)
 	 */
-	cachedMaskSrc?: string | HTMLCanvasElement | (string | HTMLCanvasElement)[];
+	cachedMaskSrc?: string | MaskObject | (string | MaskObject)[];
 	/**
 	 * Encoded processing options used to display cachedImage
 	 */
@@ -178,4 +188,8 @@ declare interface CompositeLayer extends CompositeLayerSpec {
 	 * Scale it?
 	 */
 	scale?: boolean;
+	/**
+	 * Mask alpha
+	 */
+	maskAlpha?: number;
 }
diff --git a/devTools/canvasmodel/renderer.ts b/devTools/canvasmodel/renderer.ts
index d60c23c818d251418d7ccef212b834aef2c0831e..fe802044b4639c6a2e6199fb00068faa3205ec54 100644
--- a/devTools/canvasmodel/renderer.ts
+++ b/devTools/canvasmodel/renderer.ts
@@ -791,18 +791,25 @@ namespace Renderer {
 			return !!layer.mask;
 		},
 
-		render(image: CanvasImageSource, layer: CompositeLayer, context: Renderer.RenderPipelineContext): HTMLCanvasElement {
-			const maskCanvas = Renderer.ensureCanvas(image).getContext('2d')
-			let mask = layer.mask;
-			if (Array.isArray(layer.mask)) {
-				let combinedCtx = Renderer.createCanvas(image.width, image.height);
-				for (const mask of layer.mask) {
-					combinedCtx.drawImage(mask as CanvasImageSource, 0, 0);
-				}
-				mask = combinedCtx.canvas;
+		render(image: HTMLCanvasElement, compositeLayer: CompositeLayer, renderContext: Renderer.RenderPipelineContext): HTMLCanvasElement {
+			const maskCanvas = Renderer.ensureCanvas(image).getContext('2d');
+			let finalMask = compositeLayer.mask;
+
+			if (Array.isArray(compositeLayer.mask)) {
+				const combinedCtx = Renderer.createCanvas(image.width, image.height);
+				compositeLayer.mask.forEach((maskItem, index) => {
+					const offset = compositeLayer.maskOffsets[index] || { x: 0, y: 0 };
+					combinedCtx.drawImage(maskItem, offset.x, offset.y);
+				});
+				finalMask = combinedCtx.canvas;
+			} else if (compositeLayer.maskOffsets[0]?.x || compositeLayer.maskOffsets[0]?.y) {
+				const offsetCtx = Renderer.createCanvas(image.width, image.height);
+				const offset = compositeLayer.maskOffsets[0] || { x: 0, y: 0 };
+				offsetCtx.drawImage(compositeLayer.mask as CanvasImageSource, offset.x, offset.y);
+				finalMask = offsetCtx.canvas;
 			}
-			maskCanvas.globalAlpha = layer.maskAlpha;
-			return Renderer.cutoutFrom(maskCanvas, mask as CanvasImageSource, layer.maskBlendMode as GlobalCompositeOperation).canvas;
+			maskCanvas.globalAlpha = compositeLayer.maskAlpha;
+			return Renderer.cutoutFrom(maskCanvas, finalMask as CanvasImageSource, compositeLayer.maskBlendMode as GlobalCompositeOperation).canvas;
 		}
 	}
 
@@ -1086,22 +1093,38 @@ namespace Renderer {
 				}
 			}
 			if (needImage) {
-				if (ImageErrors[layer.src]) {
+				if (ImageErrors[layer.src as string]) {
 					layer.show = false;
 					continue;
-				} else if (layer.src in ImageCaches) {
-					layer.image = ImageCaches[layer.src];
-					layer.imageSrc = layer.src;
+				} else if (layer.src as string in ImageCaches) {
+					layer.image = ImageCaches[layer.src as string];
+					layer.imageSrc = layer.src as string;
 				} else {
 					loadLayerImage(layer);
 				}
 			}
+
+			layer.maskOffsets = [] as MaskObject;
+			
 			if (Array.isArray(layer.masksrc)) {
-				layer.masksrc = layer.masksrc.filter(value => value != null);
+				layer.masksrc = layer.masksrc
+					.map(item => {
+						if (item?.path) {
+							layer.maskOffsets.push({ x: item.offsetX || 0, y: item.offsetY || 0 });
+							return item.path;
+						}
+						return item;
+					})
+					.filter(value => value != null);
+		
 				if (layer.masksrc.length === 0 || layer.masksrc.every(value => value == null)) {
 					layer.masksrc = null;
 				}
+			} else if (layer.masksrc?.path) {
+				layer.maskOffsets.push({ x: layer.masksrc.offsetX || 0, y: layer.masksrc.offsetY || 0 });
+				layer.masksrc = layer.masksrc.path;
 			}
+
 			let needMask = !!layer.masksrc;
 			if (layer.mask) {
 				if (layer.cachedMaskSrc === layer.masksrc || layer.masksrc instanceof HTMLCanvasElement) {
diff --git a/game/03-JavaScript/00-libs/renderer.js b/game/03-JavaScript/00-libs/renderer.js
index 9110ca33e38086c64467d8deeb45951c438368d4..1ae71e08805cd0457a7ffe7c9807c85dc775c987 100644
--- a/game/03-JavaScript/00-libs/renderer.js
+++ b/game/03-JavaScript/00-libs/renderer.js
@@ -604,18 +604,25 @@ var Renderer;
         condition(layer, context) {
             return !!layer.mask;
         },
-        render(image, layer, context) {
+        render(image, compositeLayer, renderContext) {
             const maskCanvas = Renderer.ensureCanvas(image).getContext('2d');
-            let mask = layer.mask;
-            if (Array.isArray(layer.mask)) {
-                let combinedCtx = Renderer.createCanvas(image.width, image.height);
-                for (const mask of layer.mask) {
-                    combinedCtx.drawImage(mask, 0, 0);
-                }
-                mask = combinedCtx.canvas;
+            let finalMask = compositeLayer.mask;
+            if (Array.isArray(compositeLayer.mask)) {
+                const combinedCtx = Renderer.createCanvas(image.width, image.height);
+                compositeLayer.mask.forEach((maskItem, index) => {
+                    const offset = compositeLayer.maskOffsets[index] || { x: 0, y: 0 };
+                    combinedCtx.drawImage(maskItem, offset.x, offset.y);
+                });
+                finalMask = combinedCtx.canvas;
             }
-            maskCanvas.globalAlpha = layer.maskAlpha;
-            return Renderer.cutoutFrom(maskCanvas, mask, layer.maskBlendMode).canvas;
+            else if (compositeLayer.maskOffsets[0]?.x || compositeLayer.maskOffsets[0]?.y) {
+                const offsetCtx = Renderer.createCanvas(image.width, image.height);
+                const offset = compositeLayer.maskOffsets[0] || { x: 0, y: 0 };
+                offsetCtx.drawImage(compositeLayer.mask, offset.x, offset.y);
+                finalMask = offsetCtx.canvas;
+            }
+            maskCanvas.globalAlpha = compositeLayer.maskAlpha;
+            return Renderer.cutoutFrom(maskCanvas, finalMask, compositeLayer.maskBlendMode).canvas;
         }
     };
     const RenderingStepCutout = {
@@ -874,12 +881,25 @@ var Renderer;
                     loadLayerImage(layer);
                 }
             }
+            layer.maskOffsets = [];
             if (Array.isArray(layer.masksrc)) {
-                layer.masksrc = layer.masksrc.filter(value => value != null);
+                layer.masksrc = layer.masksrc
+                    .map(item => {
+                    if (item?.path) {
+                        layer.maskOffsets.push({ x: item.offsetX || 0, y: item.offsetY || 0 });
+                        return item.path;
+                    }
+                    return item;
+                })
+                    .filter(value => value != null);
                 if (layer.masksrc.length === 0 || layer.masksrc.every(value => value == null)) {
                     layer.masksrc = null;
                 }
             }
+            else if (layer.masksrc?.path) {
+                layer.maskOffsets.push({ x: layer.masksrc.offsetX || 0, y: layer.masksrc.offsetY || 0 });
+                layer.masksrc = layer.masksrc.path;
+            }
             let needMask = !!layer.masksrc;
             if (layer.mask) {
                 if (layer.cachedMaskSrc === layer.masksrc || layer.masksrc instanceof HTMLCanvasElement) {
diff --git a/game/03-JavaScript/05-renderer/01-canvasmodel-utils.js b/game/03-JavaScript/05-renderer/01-canvasmodel-utils.js
index 99538ad1980db71c8f4b9474947652a7b19648b1..d55eb8bed95ca0b50d6ce1601f8405a9dc353141 100644
--- a/game/03-JavaScript/05-renderer/01-canvasmodel-utils.js
+++ b/game/03-JavaScript/05-renderer/01-canvasmodel-utils.js
@@ -154,5 +154,16 @@ function refreshModels(e, overlay) {
 }
 
 /* Events */
-$(document).on(":onloadsave", () => refreshCanvas("lighting"));
+$(document).on(":passagestart", () => {
+	if (State.current !== State.top) {
+		Skin.recache();
+	}
+});
+$(document).on(":onloadsave", () => {
+	Skin.recache();
+	refreshCanvas("lighting");
+});
+$(document).on(":enginerestart", () => {
+	Skin.recache();
+});
 $(document).on(":oncloseoverlay", refreshModels);
diff --git a/game/03-JavaScript/05-renderer/canvasmodel-animations.js b/game/03-JavaScript/05-renderer/canvasmodel-animations.js
index 1acb94bbfbb8410e05fe896fef9a483b714131a1..1db35a29ca238fe0459ba1d11e37cbbb6dd7239a 100644
--- a/game/03-JavaScript/05-renderer/canvasmodel-animations.js
+++ b/game/03-JavaScript/05-renderer/canvasmodel-animations.js
@@ -600,14 +600,3 @@ Renderer.Animations.VaginalCumDripVeryFast = {
 		{ frame: 11, duration: 100 },
 	],
 };
-Renderer.Animations.coinFlip = {
-	keyframes: [
-		{ frame: 0, duration: 1000 },
-		{ frame: 1, duration: 100 },
-		{ frame: 2, duration: 100 },
-		{ frame: 3, duration: 100 },
-		{ frame: 4, duration: 100 },
-		{ frame: 5, duration: 100 },
-		{ frame: 6, duration: 500 },
-	],
-};
diff --git a/game/03-JavaScript/05-renderer/canvasmodel-editor.js b/game/03-JavaScript/05-renderer/canvasmodel-editor.js
index 837028e3348969607e9d3f56f832bf81c0e7eb24..74a5063ef58bd6265e16d5fd5348e40b2c449b42 100644
--- a/game/03-JavaScript/05-renderer/canvasmodel-editor.js
+++ b/game/03-JavaScript/05-renderer/canvasmodel-editor.js
@@ -484,6 +484,7 @@ Macro.add("canvasModelEditor", {
 		const options = model.options;
 
 		function redraw() {
+			Skin.recache();
 			const options = model.options;
 			model.reset();
 			model.options = options;
@@ -597,9 +598,9 @@ Macro.add("canvasModelEditor", {
 					value: getNestedProperty(options, name),
 					set(value) {
 						if (number) value = Number(value);
-
+		
 						setNestedProperty(options, name, value);
-
+		
 						// If this is a clothing index change, update the setup property
 						if (isClothingIndex && slot) {
 							const selectedItem = setup.clothes[slot][value];
@@ -607,7 +608,7 @@ Macro.add("canvasModelEditor", {
 								setNestedProperty(options, `worn.${slot}.setup`, selectedItem);
 							}
 						}
-
+		
 						redraw();
 					},
 					$oncreate(e) {
@@ -732,7 +733,7 @@ Macro.add("canvasModelEditor", {
 						selectOption("breasts_parasite", ["", "parasite"]),
 						selectOption("clit_parasite", ["", "urchin", "slime", "parasite"]),
 						selectOption("arm_left", ["none", "idle", "cover"]),
-						selectOption("arm_right", ["none", "idle", "cover", "hold"]),
+						selectOption("arm_right", ["none", "idle", "cover"]),
 
 						optionCategory("Skin"),
 						selectOption("skin_type", ["light", "medium", "dark", "gyaru", "ylight", "ymedium", "ydark", "ygyaru"]),
diff --git a/game/03-JavaScript/skin.js b/game/03-JavaScript/skin.js
index d7d8e0d9ea9a6718f1c3f387fc350052f2b065e8..10e6c8ea0be101d9c7d0ed9f97e0a2b2d5487234 100644
--- a/game/03-JavaScript/skin.js
+++ b/game/03-JavaScript/skin.js
@@ -2,7 +2,7 @@
 
 const Sunscreen = (() => {
 	function getDuration() {
-		return 24 * TimeConstants.secondsPerHour;
+		return TimeConstants.secondsPerDay;
 	}
 
 	function apply() {
@@ -54,6 +54,7 @@ const Sunscreen = (() => {
 	Skin.tanningBonus: Value between 0 and 1. The bonus exists until time has been passed.
 */
 const Skin = (() => {
+	// Constants
 	const defaultModel = ["main", "sidebar"];
 	const defaultLayer = { layers: [], slots: {} };
 	const tanningMultiplier = 9; // Increase to make the tanning function even out more sharply (as the tan level increases)
@@ -61,6 +62,10 @@ const Skin = (() => {
 	const tanningLossPerMinute = 0.000695; // ~1 per day - ~100 days from 100% to 0%
 	const maxLayerGroups = 6;
 
+	// Properties
+	const cachedLayers = null;
+	let accumulatedValue = 0;
+
 	/**
 	 * Only run this from time.js
 	 *
@@ -125,6 +130,7 @@ const Skin = (() => {
 				// Apply tanning gain if there's any
 				if (tanningGain > 0) {
 					selectedLayers.value += tanningGain;
+					accumulatedValue += tanningGain;
 				}
 
 				nextTime.addMinutes(chunkMinutes);
@@ -144,6 +150,10 @@ const Skin = (() => {
 			// Reset bonus and other modifiers after time passes
 			Skin.tanningBonus = 0;
 			Skin.tanningBed = false;
+
+			if (accumulatedValue > 0.1) {
+				Skin.recache();
+			}
 		});
 	}
 
@@ -155,6 +165,7 @@ const Skin = (() => {
 		if (savedLayers.length > 0) {
 			lowerTanningInLayers(savedLayers, totalTanningLoss);
 		}
+		if (totalTanningLoss > 0.1) Skin.recache();
 	}
 
 	function lowerTanningInLayers(groups, totalTanningLoss, skipIndex = -1) {
@@ -228,7 +239,7 @@ const Skin = (() => {
 	}
 
 	function setLayers(savedLayers, currentLayers, index) {
-		index = index ?? currentLayers.index;
+		index ??= currentLayers.index;
 		if (!currentLayers) {
 			console.warn("setTanning: Could not find clothing groups");
 			return null;
@@ -307,6 +318,7 @@ const Skin = (() => {
 		return `<span class="teal">Your tanning gain was reduced due to:</span><br><span class="orange">${reasons.join("<br>")}</span><br>`;
 	}
 	return {
+		cachedLayers,
 		applyTanningGain,
 		applyTanningLoss,
 		getTanningFactor,
@@ -347,6 +359,7 @@ const Skin = (() => {
 					Skin.color.setTan(value);
 				},
 				setTan(value, wholeBody = true) {
+					Skin.recache();
 					value = Math.clamp(value, 0, 100);
 					const savedLayers = V.player.skin.layers;
 					const totalTan = getTanningValue(savedLayers);
@@ -370,6 +383,10 @@ const Skin = (() => {
 				},
 			};
 		},
+		recache() {
+			Skin.cachedLayers = null;
+			accumulatedValue = 0;
+		},
 		getImageCount() {
 			// return V.player.skin.layers.reduce((count, layerGroup) => count + layerGroup.groups.length, 0);
 		},
diff --git a/game/03-JavaScript/time.js b/game/03-JavaScript/time.js
index 2901888bd26558f4e569783b25afcc0bbd724c33..16aa65669c26061c067afd1ef571c2c7751bae00 100644
--- a/game/03-JavaScript/time.js
+++ b/game/03-JavaScript/time.js
@@ -102,7 +102,7 @@ const Time = (() => {
 	let currentDate = {};
 
 	function set(time = V.timeStamp) {
-		V.startDate = V.startDate ?? new DateTime(2022, 9, 4, 7).timeStamp;
+		V.startDate ??= new DateTime(2022, 9, 4, 7).timeStamp;
 
 		if (time instanceof DateTime) {
 			currentDate = time;
@@ -274,7 +274,7 @@ const Time = (() => {
 	}
 
 	function isBloodMoon(date) {
-		date = date ?? currentDate;
+		date ??= currentDate;
 		return (date.day === date.lastDayOfMonth && date.hour >= 21) || (date.day === 1 && date.hour < 6);
 	}
 
diff --git a/game/03-JavaScript/weather/01-setup/location-images.js b/game/03-JavaScript/weather/01-setup/location-images.js
index 2557c3108e165844486a07b3f9c7ea461458af98..22ec3d3ce3c8e17ef765596dabb60a1c58e342f2 100644
--- a/game/03-JavaScript/weather/01-setup/location-images.js
+++ b/game/03-JavaScript/weather/01-setup/location-images.js
@@ -20,11 +20,14 @@ setup.Locations = {
 	castle: () => {
 		return "tower";
 	},
+	chalets: () => {
+		return "beach";
+	},
 	hotel: () => {
 		return "town";
 	},
 	estate: () => (V.bus === "estate_cottage" ? "estate_cottage" : "estate"),
-	farm: () => (["farmroad6", "farm"].includes(V.bus) ? "farm" : "underground_farm"),
+	farm: () => (V.bus === "farm" ? "farm" : "underground_farm"),
 	get() {
 		if (typeof this[V.location] === "function") {
 			return this[V.location]();
@@ -547,25 +550,6 @@ setup.LocationImages = {
 			},
 		},
 	},
-	chalets: {
-		folder: "chalets",
-		base: {
-			default: {
-				image: "base.png",
-			},
-			snow: {
-				condition: () => Weather.isSnow,
-				image: "snow.png",
-			},
-			water: {
-				image: "water.png",
-				animation: {
-					frameDelay: 250,
-					cycleDelay: 1500,
-				},
-			},
-		},
-	},
 	churchyard: {
 		folder: "churchyard",
 		base: {
@@ -584,49 +568,6 @@ setup.LocationImages = {
 			size: 2,
 		},
 	},
-	coastpath: {
-		folder: "coastal_path",
-		base: {
-			default: {
-				image: "base.png",
-				animation: {
-					frameDelay: 200,
-					cycleDelay: () => random(5, 15) * 1000,
-				},
-			},
-			snow: {
-				condition: () => Weather.isSnow,
-				image: "snow.png",
-				animation: {
-					frameDelay: 200,
-					cycleDelay: () => random(5, 15) * 1000,
-				},
-			},
-			flower: {
-				condition: () => !Weather.isSnow,
-				image: "flower.png",
-				animation: {
-					frameDelay: 500,
-					cycleDelay: () => random(5, 30) * 1000,
-				},
-			},
-			water: {
-				image: "water.png",
-				animation: {
-					frameDelay: 250,
-					cycleDelay: () => 0,
-				},
-			},
-			bunny: {
-				condition: () => Time.dayState !== "night",
-				image: "bunny.png",
-				animation: {
-					frameDelay: 175,
-					cycleDelay: () => random(5, 15) * 1000,
-				},
-			},
-		},
-	},
 	com_alley: {
 		folder: "com_alley",
 		base: {
@@ -1391,32 +1332,6 @@ setup.LocationImages = {
 			},
 		},
 	},
-	townhall: {
-		folder: "town_hall",
-		base: {
-			default: {
-				image: "base.png",
-			},
-			trees: {
-				condition: () => Time.season !== "winter",
-				image: "trees.png",
-			},
-			trees_winter: {
-				condition: () => Time.season === "winter",
-				image: "trees_winter.png",
-			},
-			snow: {
-				condition: () => Weather.isSnow,
-				image: "snow.png",
-			},
-		},
-		emissive: {
-			image: "emissive.png",
-			condition: () => Weather.lightsOn,
-			color: "#deae66",
-			strength: 2,
-		},
-	},
 	meadow: {
 		folder: "meadow",
 		base: {
diff --git a/game/03-JavaScript/weather/02-main/01-weather.js b/game/03-JavaScript/weather/02-main/01-weather.js
index 8e7b42141c2a8900232f9a1f9ad8161edbcc74b2..e1191a4d2d19868f78f805a6b974c0a1b43de6a8 100644
--- a/game/03-JavaScript/weather/02-main/01-weather.js
+++ b/game/03-JavaScript/weather/02-main/01-weather.js
@@ -19,7 +19,7 @@ const Weather = (() => {
 	}
 
 	function getSunIntensity(time) {
-		time = time ?? Time.date;
+		time ??= Time.date;
 		const sunIntensity = Weather.genSettings.months[time.month - 1].sunIntensity * Weather.activeRenderer?.orbitals.sun.getFactor(time);
 		const weatherModifier = V.outside ? Weather.current.tanningModifier : 0;
 		const locationModifier = V.location === "forest" ? 0.2 : 1;
diff --git a/game/03-JavaScript/weather/02-main/02-weather-generation.js b/game/03-JavaScript/weather/02-main/02-weather-generation.js
index 53492777c2e4bc13f2452f30b38eb8f4748c440c..caaf9c3269d5f412df16d52684d530b4de8086e6 100644
--- a/game/03-JavaScript/weather/02-main/02-weather-generation.js
+++ b/game/03-JavaScript/weather/02-main/02-weather-generation.js
@@ -72,7 +72,7 @@ Weather.WeatherGeneration = (() => {
 			return currentKeyPoint.value;
 		}
 
-		currentKeyPoint = currentKeyPoint ?? { timestamp: currentTimeStamp, value: nextKeyPoint.value };
+		currentKeyPoint ??= { timestamp: currentTimeStamp, value: nextKeyPoint.value };
 
 		const current = Weather.genSettings.weatherTypes[currentKeyPoint.value];
 		const next = Weather.genSettings.weatherTypes[nextKeyPoint.value];
diff --git a/game/04-Variables/canvasmodel-main.js b/game/04-Variables/canvasmodel-main.js
index 034b7488ece98dedfe00cc5605f82b7be404678d..ffce969a81160c63e2602d6fe8c328f4986939cc 100644
--- a/game/04-Variables/canvasmodel-main.js
+++ b/game/04-Variables/canvasmodel-main.js
@@ -219,7 +219,6 @@ Renderer.CanvasModels.main = {
 	generatedOptions() {
 		return [
 			"blink_animation",
-			"coinFlip",
 			"genitals_chastity",
 			"handheld_position",
 			"handheld_overhead",
@@ -525,7 +524,6 @@ Renderer.CanvasModels.main = {
 
 		const blink = options.trauma ? "blink-trauma" : "blink";
 		options.blink_animation = options.blink ? blink : "";
-		options.handheld_animation = V.worn.handheld.name.includes("coin") ? "coinFlip" : "idle"
 
 		options.filters.left_eye = lookupColour(options, setup.colours.eyes_map, options.left_eye, "eyes", "eyes_custom", "eyes");
 		options.filters.right_eye = lookupColour(options, setup.colours.eyes_map, options.right_eye, "eyes", "eyes_custom", "eyes");
@@ -615,9 +613,10 @@ Renderer.CanvasModels.main = {
 
 		// Show arm and hand just below outermost clothes layer to fully show its main/breasts layer and hide others
 		// -0.1 is to move arms behind sleeves; to display gloves above sleeves they get +0.2 in hand layer decls
-		if (options.worn.over_upper) {
+
+		if (options.worn.over_upper.index) {
 			options.zarms = ZIndices.over_upper_arms - 0.1;
-		} else if (options.worn.upper) {
+		} else if (options.worn.upper.index) {
 			if (options.arm_left === "cover") {
 				if (options.upper_tucked) {
 					options.zarms = ZIndices.upper_arms_tucked - 0.1;
@@ -627,7 +626,7 @@ Renderer.CanvasModels.main = {
 			} else {
 				options.zarms = ZIndices.under_upper_arms - 0.1;
 			}
-		} else if (options.worn.under_upper) {
+		} else if (options.worn.under_upper.index) {
 			options.zarms = ZIndices.under_upper_arms - 0.1;
 		} else {
 			options.zarms = ZIndices.armsidle
@@ -781,12 +780,11 @@ Renderer.CanvasModels.main = {
 		}
 
 		if (
-			!["pom poms", "cane", "forearm crutch", "naked"].includes(options.worn.handheld.setup.name)
+			options.worn.handheld.setup.name != "pom poms"
+				&& options.worn.handheld.setup.name != "naked"
 				&& options.arm_right === "hold"
 		) {
-			options.handheld_position = 'hold';
-		} else if (["cane", "forearm crutch"].includes(options.worn.handheld.setup.name)) {
-			options.handheld_position = 'right_cover';
+			options.handheld_position = true;
 		} else {
 			options.handheld_position = null;
 		}
@@ -828,67 +826,83 @@ Renderer.CanvasModels.main = {
 	postprocess(options) {
 		options.generatedLayers = {};
 
-		if (V.options.tanLines){
-			if (options.tanningEnabled) {
-				const canvasModel = this;
-
-				// Don't modify the original options object
-				const newOptions = canvasModel.options.deepCopy();
-
-				// Highest tanning values are added first
-				const tanningGroups = [...Skin.tanningLayers].sort((a, b) => a.value - b.value);
-
-				for (let i = 0; i < tanningGroups.length; i++) {
-					const layerGroup = tanningGroups[i];
-					if (layerGroup.layers.length === 0) continue;
-
-					// For every item in tanning layers, create a new entry in options.worn, and setup the filters
-					for (const [slot, props] of Object.entries(layerGroup.slots)) {
-						const item = {
-							index: Number(props.index),
-							integrity: props.integrity ?? "full",
-							alt: props.alt,
-							colour: props.colour || "black",
-							accColour: props.accColour || "black",
-							setup: setup.clothes[slot][props.index],
-						};
-						newOptions.worn[slot] = { ...newOptions.worn[slot], ...item };
-						// Set up the filters for the tanning layer in order to choose the correct sprites
-						// Uses default "black" colour since undefined will try to load the incorrect path
-						setClothingFilter(newOptions, slot, item, item.setup, '', 'colour_sidebar', 'colour');
-						setClothingFilter(newOptions, slot, item, item.setup, '_acc', 'accessory_colour_sidebar', 'accColour');
-					}
-
-					// Get the source paths for the tanning layer
-					const layers = { arms: [], body: [] };
-					for (const layerName of layerGroup.layers) {
-						const layer = canvasModel.layers[layerName];
-
-						if (!layer.showfn(newOptions)) continue;
-						const src = layer.srcfn(newOptions);
-						const target = layerName.includes("rightarm") || layerName.includes("leftarm") ? layers.arms : layers.body;
-						target.push(src);
-					}
-
-					// Generate final tanning layers
-					// Separate the base with the arms, since they can overlap
-					const alpha = layerGroup.value;
-					if (layers.body.length) {
-						options.generatedLayers[`tan_base${i}`] = (genlayer_tanning("base", i, layers.body, alpha, null));
-						options.generatedLayers[`tan_breasts${i}`] = (genlayer_tanning("breasts", i, layers.body, alpha));
-						options.generatedLayers[`tan_belly${i}`] = (genlayer_tanning("belly", i, layers.body, alpha));
-					}
-					if (layers.arms.length) {
-						options.generatedLayers[`tan_leftarm${i}`] = (genlayer_tanning("leftarm", i, layers.arms, alpha));
-						options.generatedLayers[`tan_rightarm${i}`] = (genlayer_tanning("rightarm", i, layers.arms, alpha));
+		if (options.tanningEnabled) {
+			if (V.options.tanLines){
+				if (!Skin.cachedLayers) {
+					const canvasModel = this;
+	
+					// Don't modify the original options object
+					const newOptions = canvasModel.options.deepCopy();
+	
+					// Highest tanning values are added first
+					const tanningGroups = [...Skin.tanningLayers].sort((a, b) => a.value - b.value);
+	
+					for (let i = 0; i < tanningGroups.length; i++) {
+						const layerGroup = tanningGroups[i];
+						if (layerGroup.layers.length === 0) continue;
+	
+						// For every item in tanning layers, create a new entry in options.worn, and setup the filters
+						for (const [slot, props] of Object.entries(layerGroup.slots)) {
+							const item = {
+								index: Number(props.index),
+								integrity: props.integrity ?? "full",
+								alt: props.alt,
+								colour: props.colour || "black",
+								accColour: props.accColour || "black",
+								setup: setup.clothes[slot][props.index],
+							};
+							newOptions.worn[slot] = { ...newOptions.worn[slot], ...item };
+							// Set up the filters for the tanning layer in order to choose the correct sprites
+							// Uses default "black" colour since undefined will try to load the incorrect path
+							setClothingFilter(newOptions, slot, item, item.setup, '', 'colour_sidebar', 'colour');
+							setClothingFilter(newOptions, slot, item, item.setup, '_acc', 'accessory_colour_sidebar', 'accColour');
+						}
+	
+						// Get the source paths for the tanning layer
+						// Filter out non-unique rows
+						const layers = { arms: [], body: [] };
+						for (const layerName of layerGroup.layers) {
+							const layer = canvasModel.layers[layerName];
+	
+							// Set offsets (mostly for preg belly)
+							const srcObject = {
+								path: layer.srcfn(newOptions),
+								offsetX: layer.dxfn ? layer.dxfn(newOptions) : 0,
+								offsetY: layer.dyfn ? layer.dyfn(newOptions) : 0,
+							};
+
+							const target = layerName.includes("rightarm") || layerName.includes("leftarm") ? layers.arms : layers.body;
+							if (!target.some(item => item.path === srcObject.path && item.offsetX === srcObject.offsetX)) {
+								target.push(srcObject);
+							}
+						}
+	
+						// Generate final tanning layers
+						// Separate the base with the arms, since they can overlap
+						// Base layer has disabled animations
+						const alpha = layerGroup.value;
+						console.log("LAYERS BODY", layers.body);
+						if (layers.body.length) {
+							options.generatedLayers[`tan_base${i}`] = (genlayer_tanning("base", i, layers.body, alpha, null));
+							options.generatedLayers[`tan_breasts${i}`] = (genlayer_tanning("breasts", i, layers.body, alpha));
+							options.generatedLayers[`tan_belly${i}`] = (genlayer_tanning("belly", i, layers.body, alpha));
+							//if preg offset belly masks
+						}
+						if (layers.arms.length) {
+							options.generatedLayers[`tan_leftarm${i}`] = (genlayer_tanning("leftarm", i, layers.arms, alpha));
+							options.generatedLayers[`tan_rightarm${i}`] = (genlayer_tanning("rightarm", i, layers.arms, alpha));
+						}
 					}
+					Skin.cachedLayers = options.generatedLayers;
+				} else {
+					options.generatedLayers = Skin.cachedLayers;
 				}
 			}
 
 			// Only use necessary data for tanning layers. Filter out the rest.
 			// Only clothing items that aren't handheld or headwear will be used
 			// Only use the base pregnancy layers
-			const skippedSlots = ["handheld", "head", "neck", "face", "upper_belly_", "lower_belly_"];
+			const skippedSlots = ["handheld", "head", "neck", "face", "under_upper_belly_", "upper_belly_", "under_lower_belly_", "lower_belly_"];
 			this.tanningLayers = this.layerList
 				.filter(obj => obj.show === true
 					&& obj.worn
@@ -1009,7 +1023,7 @@ Renderer.CanvasModels.main = {
 			},
 			srcfn(options) {
 				if (options.mannequin) return "img/body/mannequin/leftarmidle.png";
-				if (options.arm_left === "cover") return "img/body/leftarmcover.png";
+				if (options.arm_left === "cover") return "img/body/leftarm.png";
 				return `img/body/leftarmidle-${options.body_type}.png`
 			},
 		},
@@ -1024,10 +1038,10 @@ Renderer.CanvasModels.main = {
 				return options.arm_right !== "none";
 			},
 			srcfn(options) {
-				if (options.mannequin && options.handheld_position) return `img/body/mannequin/rightarm${options.handheld_position === "hold" ? options.handheld_position : "cover"}.png`;
+				if (options.mannequin && options.handheld_position) return "img/body/mannequin/rightarmhold.png";
 				if (options.mannequin) return "img/body/mannequin/rightarmidle.png";
-				if (options.arm_right === "cover") return "img/body/rightarmcover.png";
-				if (options.handheld_position) return `img/body/rightarm${options.handheld_position === "hold" ? options.handheld_position : "cover"}.png`;
+				if (options.arm_right === "cover") return "img/body/rightarm.png";
+				if (options.handheld_position) return "img/body/rightarmhold.png";
 				return `img/body/rightarmidle-${options.body_type}.png`
 			},
 		},
@@ -3163,7 +3177,7 @@ Renderer.CanvasModels.main = {
 				return options.lowerBellyMask;
 			},
 			zfn(options) {
-				return options.worn_lower_setup.high_img ? ZIndices.lower_high : ZIndices.lower_belly;
+				return options.worn.lower.setup.high_img ? ZIndices.lower_high : ZIndices.lower_belly;
 			},
 		}),
 		"lower_breasts": genlayer_clothing_breasts("lower", {
@@ -3423,15 +3437,6 @@ Renderer.CanvasModels.main = {
 				return ZIndices.under_upper_top;
 			},
 		}),
-		/*** Did not work ***/
-		// "under_upper_belly_shadow": genlayer_clothing_belly_highlight("under_upper", {
-		// 	masksrcfn(options) {
-		// 		return options.belly_mask_upper_shadow_src;
-		// 	},
-		// 	zfn() {
-		// 		return ZIndices.under_upper_top_high;
-		// 	},
-		// }),
 		"under_upper_belly_acc": genlayer_clothing_belly_acc("under_upper", {
 			masksrcfn(options) {
 				return options.belly_mask_src;
@@ -3532,7 +3537,7 @@ Renderer.CanvasModels.main = {
 			animation: "idle",
 
 			srcfn(options) {
-				const hold = options.handheld_position || "right";
+				const hold = options.handheld_position ? "hold" : "right";
 				const suffix = options.arm_right === "cover" ? "right_cover" : hold;
 				const path = `img/clothes/hands/${options.worn.hands.setup.variable}/${suffix}.png`;
 				return gray_suffix(path, options.filters['worn_hands']);
@@ -3553,7 +3558,7 @@ Renderer.CanvasModels.main = {
 			animation: "idle",
 
 			srcfn(options) {
-				const hold = options.handheld_position || "right";
+				const hold = options.handheld_position ? "hold" : "right";
 				const suffix = options.arm_right === "cover" ? "right_cover" : hold;
 				const path = `img/clothes/hands/${options.worn.hands.setup.variable}/${suffix}_acc.png`;
 				return gray_suffix(path, options.filters['worn_hands_acc']);
@@ -3602,9 +3607,6 @@ Renderer.CanvasModels.main = {
 				const check = options.handheld_overhead || options.worn.handheld.setup.type.includes("prop");
 				return check ? ZIndices.old_over_upper : ZIndices.handheld
 			},
-			animationfn(options) {
-				return options.handheld_animation
-			}
 		}),
 		"handheld_acc": genlayer_clothing_accessory('handheld', {
 			srcfn(options) {
@@ -4069,20 +4071,6 @@ function getClothingPathBreastsAcc(slot, options) {
 	return gray_suffix(path, options.filters[`worn_${slot}_acc`]);
 }
 
-function filterCondition(state, options, slot, item) {
-	switch (state) {
-		case undefined:
-		case "":
-		case "primary":
-			return generateClothingFilter(options, slot, item);
-		case "secondary":
-			return generateClothingAccFilter(options, slot, item);
-		case "no":
-		default:
-			return "";
-	}
-}
-
 function filterFnArm(state, slot, options) {
 	switch (state) {
 		case undefined:
@@ -4136,8 +4124,7 @@ function genlayer_clothing_main(slot, overrideOptions) {
 
 			const end = isHoodDown ? '_down' : isAltPosition ? '_alt' : '';
 			const path = `img/clothes/${slot}/${setup.variable}/${options.worn[slot].integrity}${end}.png`;
-			const filter = generateClothingFilter(options, slot, options.worn[slot])
-			return gray_suffix(path, filter);
+			return gray_suffix(path, options.filters[`worn_${slot}`]);
 		},
 	}, overrideOptions));
 }
@@ -4190,9 +4177,7 @@ function genlayer_clothing_fitted_left_acc(slot, overrideOptions) {
 			const special = setup.accessory_integrity_img ? `_${options.worn[slot].integrity}` : '';
 			const end = isHoodDown ? '_down' : isAltPosition ? '_alt' : '';
 			const path = `img/clothes/${slot}/${setup.variable}/acc${special}${end}.png`;
-
-			const filter = generateClothingAccFilter(options, slot, options.worn[slot])
-			return gray_suffix(path, filter);
+			return gray_suffix(path, options.filters[`worn_${slot}_acc`]);
 		},
 	}, overrideOptions));
 }
@@ -4221,9 +4206,7 @@ function genlayer_clothing_fitted_right_acc(slot, overrideOptions) {
 			const special = setup.accessory_integrity_img ? `_${options.worn[slot].integrity}` : '';
 			const end = isHoodDown ? '_down' : isAltPosition ? '_alt' : '';
 			const path = `img/clothes/${slot}/${setup.variable}/acc${special}${end}.png`;
-
-			const filter = generateClothingAccFilter(options, slot, options.worn[slot])
-			return gray_suffix(path, filter);
+			return gray_suffix(path, options.filters[`worn_${slot}_acc`]);
 		},
 	}, overrideOptions));
 }
@@ -4252,9 +4235,7 @@ function genlayer_clothing_accessory(slot, overrideOptions) {
 			const special = setup.accessory_integrity_img ? `_${options.worn[slot].integrity}` : '';
 			const end = isHoodDown ? '_down' : isAltPosition ? '_alt' : '';
 			const path = `img/clothes/${slot}/${setup.variable}/acc${special}${end}.png`;
-
-			const filter = generateClothingAccFilter(options, slot, options.worn[slot])
-			return gray_suffix(path, filter);
+			return gray_suffix(path, options.filters[`worn_${slot}_acc`]);
 		},
 	}, overrideOptions));
 }
@@ -4287,8 +4268,7 @@ function genlayer_clothing_breasts(slot, overrideOptions) {
 			const breastSize = typeof breastImg === 'object' ? breastImg[options.breast_size] : Math.min(options.breast_size, 6);
 			const end = isAltPosition ? '_alt' : '';
 			const path = `img/clothes/${slot}/${setup.variable}/${breastSize}${end}.png`;
-			const filter = generateClothingFilter(options, slot, options.worn[slot])
-			return gray_suffix(path, filter);
+			return gray_suffix(path, options.filters[`worn_${slot}`]);
 		},
 	}, overrideOptions));
 }
@@ -4326,8 +4306,7 @@ function genlayer_clothing_belly(slot, overrideOptions) {
 			const integrity = options.worn[slot].integrity;
 			const end = isAltPosition ? '_alt' : '';
 			const path = `img/clothes/${slot}/${setup.variable}/${integrity}${end}.png`;
-			const filter = generateClothingFilter(options, slot, options.worn[slot])
-			return gray_suffix(path, filter);
+			return gray_suffix(path, options.filters[`worn_${slot}`]);
 		},
 	}, overrideOptions));
 }
@@ -4389,8 +4368,7 @@ function genlayer_clothing_belly_split_acc(slot, overrideOptions) {
 			const hoodDown = isHoodDown ? '_down' : end;
 
 			const path = `img/clothes/${slot}/${setup.variable}/acc${integrity}${hoodDown}.png`;
-			const filter = generateClothingFilter(options, slot, options.worn[slot])
-			return gray_suffix(path, filter);
+			return gray_suffix(path, options.filters[`worn_${slot}_acc`]);
 		},
 	}, overrideOptions));
 }
@@ -4450,8 +4428,7 @@ function genlayer_clothing_belly_acc(slot, overrideOptions) {
 			const hoodDown = isHoodDown ? '_down' : end;
 
 			const path = `img/clothes/${slot}/${setup.variable}/acc${integrity}${hoodDown}.png`;
-			const filter = generateClothingAccFilter(options, slot, options.worn[slot])
-			return gray_suffix(path, filter);
+			return gray_suffix(path, options.filters[`worn_${slot}_acc`]);
 		},
 	}, overrideOptions));
 }
@@ -4517,8 +4494,7 @@ function genlayer_clothing_back_img(slot, overrideOptions) {
 			const suffix = options.worn[slot].setup.back_integrity_img ? `_${options.worn[slot].integrity}` : '';
 
 			const path = `img/clothes/${slot}/${options.worn[slot].setup.variable}/${prefix}${suffix}.png`;
-			const filter = filterCondition(options.worn[slot].setup.back_img_colour, options, slot, options.worn[slot])
-			return gray_suffix(path, filter);
+			return gray_suffix(path, options.filters[this.filtersfn(options)[0]]);
 		},
 	}, overrideOptions));
 }
@@ -4555,9 +4531,7 @@ function genlayer_clothing_back_img_acc(slot, overrideOptions) {
 
 			const suffix = isAltPosition ? 'back_alt' : 'back';
 			const path = `img/clothes/${slot}/${options.worn[slot].setup.variable}/${suffix}_acc.png`;
-
-			const filter = filterCondition(options.worn[slot].setup.back_img_acc_colour, options, slot, options.worn[slot])
-			return gray_suffix(path, filter);
+			return gray_suffix(path, options.filters[this.filtersfn(options)[0]]);
 		},
 	}, overrideOptions));
 }
@@ -4591,14 +4565,12 @@ function genlayer_clothing_arm(arm, slot, overrideOptions) {
 				&& options.alt_sleeve_state
 				&& V.worn[slot]?.altsleeve === 'alt';
 
-			const held = options.handheld_position && arm === 'right' ? options.handheld_position : arm;
+			const held = options.handheld_position && arm === 'right' ? 'hold' : arm;
 			const cover = options[`arm_${arm}`] === 'cover' ? `${arm}_cover` : held;
 			const alt = isAltPosition ? "_alt" : '';
 			const sleeve = isAltSleeve ? '_rolled' : '';
 			const path =  `img/clothes/${slot}/${setup.variable}/${cover}${alt}${sleeve}.png`;
-			const filter = filterCondition(options.worn[slot].setup.sleeve_colour, options, slot, options.worn[slot])
-
-			return gray_suffix(path, filter);
+			return gray_suffix(path, options.filters[this.filtersfn(options)[0]]);
 		},
 	}, overrideOptions));
 }
@@ -4635,14 +4607,13 @@ function genlayer_clothing_arm_fitted(arm, slot, overrideOptions) {
 				&& options.alt_sleeve_state
 				&& V.worn[slot]?.altsleeve === 'alt';
 
-			const held = options.handheld_position && arm === 'right' ? options.handheld_position : arm;
+			const held = options.handheld_position && arm === 'right' ? 'hold' : arm;
 			const cover = options[`arm_${arm}`] === 'cover' ? `${arm}_cover` : held;
 			const alt = isAltPosition ? "_alt" : '';
 			const sleeve = isAltSleeve ? '_rolled' : '';
 
 			const path =  `img/clothes/${slot}/${setup.variable}/${cover}${alt}${sleeve}.png`;
-			const filter = filterCondition(options.worn[slot].setup.sleeve_colour, options, slot, options.worn[slot])
-			return gray_suffix(path, filter);
+			return gray_suffix(path, options.filters[this.filtersfn(options)[0]]);
 		},
 	}, overrideOptions));
 }
@@ -4676,13 +4647,12 @@ function genlayer_clothing_arm_acc(arm, slot, overrideOptions) {
 
 			let filename = `${arm}_cover_acc`;
 			if (options[`arm_${arm}`] !== "cover") {
-				filename = (options.handheld_position && arm === "right") ? options.handheld_position : arm;
+				filename = (options.handheld_position && arm === "right") ? 'hold' : arm;
 				filename += (isAltPosition) ? '_alt_acc' : '_acc';
 			}
 
 			const path = `img/clothes/${slot}/${setup.variable}/${filename}.png`;
-			const filter = filterCondition(options.worn[slot].setup.accessory_colour_sidebar, options, slot, options.worn[slot])
-			return gray_suffix(path, filter);
+			return gray_suffix(path, options.filters[this.filtersfn(options)[0]]);
 		},
 	}, overrideOptions));
 }
@@ -4710,17 +4680,16 @@ function genlayer_clothing_arm_acc_fitted(arm, slot, overrideOptions) {
 				&& options[`arm_${arm}`] !== "none";
 		},
 		srcfn(options) {
-			const hold = options.handheld_position && arm === "right" ? options.handheld_position : arm;
+			const hold = options.handheld_position && arm === "right" ? "hold" : arm;
 			const cover = options[`arm_${arm}`] === "cover" ? `${arm}_cover` : hold;
 
 			const path = `img/clothes/${slot}/${options.worn[slot].setup.variable}/${cover}_acc.png`;
-			const filter = filterCondition(options.worn[slot].setup.accessory_colour_sidebar, options, slot, options.worn[slot])
-			return gray_suffix(path, filter);
+			return gray_suffix(path, options.filters[this.filtersfn(options)[0]]);
 		},
 	}, overrideOptions))
 }
 
-function genlayer_tanning(slot, index, tanningLayer, value, animation = "idle") {
+function genlayer_tanning(slot, index, tanningLayer, value, maskdx, animation = "idle") {
 	return {
 		alphafn() {
 			return value / 100;
diff --git a/game/base-clothing/clothing-handheld.js b/game/base-clothing/clothing-handheld.js
index 13f6eb1bbfd177717200e7cb8c192a5318fe375d..13732801cb662702c74465a3be0db20174f0edf3 100644
--- a/game/base-clothing/clothing-handheld.js
+++ b/game/base-clothing/clothing-handheld.js
@@ -1024,2554 +1024,6 @@ function initHandheld() {
 			accessory_colour_sidebar: 0,
 			coverImage: 0,
 		},
-		{
-			index: 37,
-			name: "cane",
-			name_cap: "Cane",
-			variable: "cane",
-			integrity: 120,
-			integrity_max: 120,
-			fabric_strength: 10,
-			reveal: 200,
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: ["black", "blue", "brown", "green", "pink", "purple", "red", "tangerine", "teal", "white", "yellow", "neon blue", "custom"],
-			colour_sidebar: 1,
-			type: ["formal"],
-			gender: "n",
-			femininity: 0,
-			warmth: 0,
-			cost: 1000,
-			description: "Lightweight and dignified.",
-			shop: ["clothing"],
-			accessory: 1,
-			accessory_colour: 0,
-			accessory_colour_options: ["steel", "blue steel", "bronze", "gold", "silver", "black", "white"],
-			accessory_colour_sidebar: 1,
-			cursed: 0,
-			location: 0,
-			iconFile: "cane.png",
-			accIcon: "cane_acc.png",
-		},
-		{
-			index: 38,
-			name: "forearm crutch",
-			name_cap: "Forearm crutch",
-			variable: "crutch",
-			integrity: 120,
-			integrity_max: 120,
-			fabric_strength: 10,
-			reveal: 200,
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: ["black", "blue", "brown", "green", "pink", "purple", "red", "tangerine", "teal", "white", "yellow", "neon blue", "wine", "custom"],
-			colour_sidebar: 1,
-			type: ["normal"],
-			gender: "n",
-			femininity: 0,
-			warmth: 0,
-			cost: 1000,
-			description: "Affordable, like an assistive device should be.",
-			shop: ["clothing"],
-			accessory: 1,
-			accessory_colour: 0,
-			accessory_colour_options: ["steel", "blue steel", "bronze", "gold", "silver", "black", "white"],
-			accessory_colour_sidebar: 1,
-			cursed: 0,
-			location: 0,
-			iconFile: "crutch.png",
-			accIcon: "crutch_acc.png",
-		},
-		{
-			index: 39,
-			name: "bottle of sunscreen",
-			name_cap: "bottle of sunscreen",
-			variable: "sunscreen",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "White and viscous.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 40,
-			name: "scrap of fabric",
-			name_cap: "Scrap of fabric",
-			variable: "rag",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: ["black", "blue", "brown", "green", "pink", "purple", "red", "tangerine", "teal", "white", "yellow", "neon blue", "grey", "custom"],
-			colour_sidebar: 1,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Your scrap of fabric is ripped into scraps!",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 41,
-			name: "pill bottle",
-			name_cap: "Pill bottle",
-			variable: "pill bottle",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Don't forget to take your meds.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 42,
-			name: "paintbrush",
-			name_cap: "Paintbrush",
-			variable: "paintbrush",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "For the artistically-inclined.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 43,
-			name: "notebook",
-			name_cap: "Notebook",
-			variable: "notebook",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "For detailed notes about parasites.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 44,
-			name: "net",
-			name_cap: "Net",
-			variable: "net",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: ["tan"],
-			colour_sidebar: 1,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Gotta catch 'em all.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 45,
-			name: "bottle of lube",
-			name_cap: "Bottle of lube",
-			variable: "lube",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: ["off-white"],
-			colour_sidebar: 1,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Slippery when wet.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 46,
-			name: "breast pump",
-			name_cap: "Breast pump",
-			variable: "breast pump",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: ["pink", "purple", "blue", "light pink", "yellow"],
-			colour_sidebar: 1,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Produces farm-fresh milk from the comfort of your own home.",
-			accessory: 1,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 47,
-			name: "can of hairspray",
-			name_cap: "Can of hairspray",
-			variable: "hairspray",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Begone, vile ruffle toggle, begone from me!",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 48,
-			name: "bottle of hair gel",
-			name_cap: "Bottle of hair gel",
-			variable: "hairgel",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Begone, vile ruffle toggle, begone from me!",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 49,
-			name: "bottle of hair dye",
-			name_cap: "Bottle of hair dye",
-			variable: "hairdye",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "For pubes and brows only.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 50,
-			name: "dummy",
-			name_cap: "Dummy",
-			variable: "dummy",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "For babies. Or ravers.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 51,
-			name: "baby rattle",
-			name_cap: "Baby rattle",
-			variable: "toyrattle",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Shake whatcha mama gave ya.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 52,
-			name: "toy car",
-			name_cap: "Toy car",
-			variable: "toycar",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Vrelcar go nyoom.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 53,
-			name: "stuffed bear",
-			name_cap: "Stuffed bear",
-			variable: "toybear",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Soft and cuddly",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 54,
-			name: "tray",
-			name_cap: "Tray",
-			variable: "tray",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Don't drop it.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-		},
-		{
-			index: 55,
-			name: "trash bag",
-			name_cap: "Trash bag",
-			variable: "trash bag",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Pure rubbish.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-			back_img: 1,
-		},
-		{
-			index: 56,
-			name: "can of spray paint",
-			name_cap: "can of spray paint",
-			variable: "spray paint",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Favoured tool of delinquents.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 57,
-			name: "bar of soap",
-			name_cap: "Bar of soap",
-			variable: "soap",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Rub a dub dub.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-		},
-		{
-			index: 58,
-			name: "science textbook",
-			name_cap: "Science textbook",
-			variable: "bookscience",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: ["blue"],
-			colour_sidebar: 1,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Filled with knowledge.",
-			accessory: 1,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 59,
-			name: "maths textbook",
-			name_cap: "Maths textbook",
-			variable: "bookmaths",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: ["red"],
-			colour_sidebar: 1,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Filled with knowledge.",
-			accessory: 1,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 60,
-			name: "English textbook",
-			name_cap: "English textbook",
-			variable: "bookenglish",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: ["green"],
-			colour_sidebar: 1,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Filled with knowledge.",
-			accessory: 1,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 61,
-			name: "history textbook",
-			name_cap: "History textbook",
-			variable: "bookhistory",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: ["yellow"],
-			colour_sidebar: 1,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Filled with knowledge.",
-			accessory: 1,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 62,
-			name: "scarlet book",
-			name_cap: "Scarlet book",
-			variable: "bookscarlet",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "A classic English drama.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 63,
-			name: "olive book",
-			name_cap: "Olive book",
-			variable: "bookolive",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "A classic Christmas tale.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 64,
-			name: "science textbook",
-			name_cap: "Science textbook",
-			variable: "bookscienceclosed",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: ["blue"],
-			colour_sidebar: 1,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Filled with knowledge.",
-			accessory: 1,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 65,
-			name: "maths textbook",
-			name_cap: "Maths textbook",
-			variable: "bookmathsclosed",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: ["red"],
-			colour_sidebar: 1,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Filled with knowledge.",
-			accessory: 1,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 66,
-			name: "English textbook",
-			name_cap: "English textbook",
-			variable: "bookenglishclosed",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: ["green"],
-			colour_sidebar: 1,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Filled with knowledge.",
-			accessory: 1,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 67,
-			name: "history textbook",
-			name_cap: "History textbook",
-			variable: "bookhistoryclosed",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: ["yellow"],
-			colour_sidebar: 1,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Filled with knowledge.",
-			accessory: 1,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 68,
-			name: "scarlet book",
-			name_cap: "Scarlet book",
-			variable: "bookscarletclosed",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "A classic English drama.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 69,
-			name: "olive book",
-			name_cap: "Olive book",
-			variable: "bookoliveclosed",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "A classic Christmas tale.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 70,
-			name: "blood lemon",
-			name_cap: "Blood lemon",
-			variable: "blood lemon",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Picked by lemon stealing whores.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 71,
-			name: "lemon",
-			name_cap: "Lemon",
-			variable: "lemon",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Picked by lemon stealing whores.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 72,
-			name: "apple",
-			name_cap: "Apple",
-			variable: "apple",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Does not keep Doctor Harper away.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 73,
-			name: "banana",
-			name_cap: "Banana",
-			variable: "banana",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Delicious.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 74,
-			name: "blackberry",
-			name_cap: "Blackberry",
-			variable: "blackberry",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Delicious.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 75,
-			name: "orange",
-			name_cap: "Orange",
-			variable: "orange",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Helps stave off scurvy.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 76,
-			name: "peach",
-			name_cap: "Peach",
-			variable: "peach",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Beware of crocodile tongues.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 77,
-			name: "pear",
-			name_cap: "Pear",
-			variable: "pear",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Delicious.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 78,
-			name: "honeycomb",
-			name_cap: "Honeycomb",
-			variable: "honeycomb",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Sticky and delicious.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 79,
-			name: "strawberry",
-			name_cap: "Strawberry",
-			variable: "strawberry",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Delicious.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 80,
-			name: "plum",
-			name_cap: "Plum",
-			variable: "plum",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Juicy and sweet.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 81,
-			name: "bag of breast milk",
-			name_cap: "Bag of breast milk",
-			variable: "breast milk bag",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Farm-fresh milk, straight from the source.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 82,
-			name: "bottle of breast milk",
-			name_cap: "Bottle of breast milk",
-			variable: "breast milk bottle",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Farm-fresh breast milk, straight from the source.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 83,
-			name: "bottle of semen",
-			name_cap: "Bottle of semen",
-			variable: "semen bottle",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Farm-fresh 'milk', straight from the source.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 84,
-			name: "bottle of milk",
-			name_cap: "bottle of milk",
-			variable: "milk bottle",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Farm-fresh milk, straight from the source.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 85,
-			name: "baby bottle",
-			name_cap: "Baby bottle",
-			variable: "baby bottle",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Fed is best.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 86,
-			name: "mushroom",
-			name_cap: "Mushroom",
-			variable: "mushroom",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Fun guy.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 87,
-			name: "wolfshroom",
-			name_cap: "Wolfshroom",
-			variable: "wolfshroom",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Wolf it down.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 88,
-			name: "ghostshroom",
-			name_cap: "Ghostshroom",
-			variable: "ghostshroom",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Fungus amongus.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 89,
-			name: "pink mushroom",
-			name_cap: "Pink mushroom",
-			variable: "pinkshroom",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "A natural aphrodisiac.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 90,
-			name: "jar of pink fluid",
-			name_cap: "Jar of pink fluid",
-			variable: "aphrodisiac jar",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Lust incarnate.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 91,
-			name: "condom",
-			name_cap: "Condom",
-			variable: "condom",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Wrap it before you tap it.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 92,
-			name: "black box",
-			name_cap: "Black box",
-			variable: "black box",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "A special item requested by Landry.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 93,
-			name: "bird egg",
-			name_cap: "Bird egg",
-			variable: "bird egg",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Can I offer you a nice egg in these trying times?",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 94,
-			name: "chocolate bar",
-			name_cap: "Chocolate bar",
-			variable: "chocolate bar",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Golden ticket not included.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 95,
-			name: "bucket of candy",
-			name_cap: "Bucket of candy",
-			variable: "halloween",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Trick-or-treat.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 96,
-			name: "sucker",
-			name_cap: "Sucker",
-			variable: "sucker",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Lick it like you like it.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 97,
-			name: "cup of hot cocoa",
-			name_cap: "Cup of hot cocoa",
-			variable: "hot cocoa",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Tasty.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 98,
-			name: "cup of hot cider",
-			name_cap: "Cup of hot cider",
-			variable: "hot cider",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Tasty.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 99,
-			name: "bronze key",
-			name_cap: "Bronze key",
-			variable: "bronze key",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Some doors should remain unopened.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 100,
-			name: "razor",
-			name_cap: "Razor",
-			variable: "razor",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Don't nick yourself.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 101,
-			name: "solo cup",
-			name_cap: "Solo cup",
-			variable: "solo cup",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "A party staple.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 102,
-			name: "salve jar",
-			name_cap: "Salve jar",
-			variable: "salve",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Good for massage.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 103,
-			name: "whisk",
-			name_cap: "Whisk",
-			variable: "whisk",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "For making world-class cream buns.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 104,
-			name: "candy box",
-			name_cap: "Candy box",
-			variable: "candy box",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Saccharine.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 105,
-			name: "watering can",
-			name_cap: "Watering can",
-			variable: "watering can",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Drink up, you thirsty bitches.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 106,
-			name: "broomstick",
-			name_cap: "Broomstick",
-			variable: "witch broom",
-			integrity: 20,
-			integrity_max: 20,
-			fabric_strength: 20,
-			reveal: 50,
-			word: "a",
-			plural: 1,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["costume"],
-			gender: "n",
-			cost: 2500,
-			description: "Doesn't let you defy gravity.",
-			shop: ["forest"],
-			accessory: 1,
-			accessory_colour: 0,
-			accessory_colour_options: ["black", "steel", "gold", "white", "bronze", "blue steel"],
-			accessory_colour_sidebar: 1,
-			back_img: 0,
-			cursed: 0,
-			location: 0,
-			iconFile: "broom.png",
-			accIcon: "broom_acc.png",
-		},
-		{
-			index: 107,
-			name: "antique arrow",
-			name_cap: "Antique arrow",
-			variable: "arrow",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 108,
-			name: "antique artillery shell",
-			name_cap: "Antique artillery shell",
-			variable: "artillery",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 109,
-			name: "antique bell",
-			name_cap: "Antique bell",
-			variable: "bell",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 110,
-			name: "antique brass statuette",
-			name_cap: "Antique brass statuette",
-			variable: "brass statuette",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 111,
-			name: "antique bullet",
-			name_cap: "Antique bullet",
-			variable: "bullet",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 112,
-			name: "antique candlestick",
-			name_cap: "Antique candlestick",
-			variable: "candlestick",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 113,
-			name: "antique cane",
-			name_cap: "Antique cane",
-			variable: "sword cane",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 114,
-			name: "antique chastity belt",
-			name_cap: "Antique chastity belt",
-			variable: "chastity",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 115,
-			name: "antique chocolate bar",
-			name_cap: "Antique chocolate bar",
-			variable: "chocolate",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 116,
-			name: "antique copper coin",
-			name_cap: "Antique copper coin",
-			variable: "copper coin",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 117,
-			name: "antique copper compass",
-			name_cap: "Antique copper compass",
-			variable: "copper compass",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 118,
-			name: "antique copper ring",
-			name_cap: "Antique copper ring",
-			variable: "copper ring",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 119,
-			name: "antique coral ring",
-			name_cap: "Antique coral ring",
-			variable: "coral ring",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 120,
-			name: "antique crystal",
-			name_cap: "Antique crystal",
-			variable: "crystal",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 121,
-			name: "antique pink crystal",
-			name_cap: "Antique pink crystal",
-			variable: "crystal pink",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 122,
-			name: "antique cup",
-			name_cap: "Antique cup",
-			variable: "cup",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 123,
-			name: "antique cutlass",
-			name_cap: "Antique cutlass",
-			variable: "cutlass",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 124,
-			name: "antique dagger",
-			name_cap: "Antique dagger",
-			variable: "dagger",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 125,
-			name: "antique diamond",
-			name_cap: "Antique diamond",
-			variable: "diamond",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 126,
-			name: "antique medical aid",
-			name_cap: "Antique medical aid",
-			variable: "dildo",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 127,
-			name: "antique disc",
-			name_cap: "Antique disc",
-			variable: "disc",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 128,
-			name: "antique figurine",
-			name_cap: "Antique figurine",
-			variable: "figurine",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 129,
-			name: "antique gem",
-			name_cap: "Antique gem",
-			variable: "forest gem",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 130,
-			name: "antique gold brooch",
-			name_cap: "Antique gold brooch",
-			variable: "gold brooch",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 131,
-			name: "antique gold coin",
-			name_cap: "Antique gold coin",
-			variable: "gold coin",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 132,
-			name: "antique grenade",
-			name_cap: "Antique grenade",
-			variable: "grenade",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 133,
-			name: "antique horn",
-			name_cap: "Antique horn",
-			variable: "horn",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 134,
-			name: "antique hourglass",
-			name_cap: "Antique hourglass",
-			variable: "hourglass",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 135,
-			name: "antique incense burner",
-			name_cap: "Antique incense burner",
-			variable: "incense",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 136,
-			name: "antique island arrow",
-			name_cap: "Antique island arrow",
-			variable: "islander arrow",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 137,
-			name: "antique ivory box",
-			name_cap: "Antique ivory box",
-			variable: "ivory box",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 138,
-			name: "antique ivory statuette",
-			name_cap: "Antique ivory statuette",
-			variable: "ivory statuette",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 139,
-			name: "antique map",
-			name_cap: "Antique map",
-			variable: "map",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 140,
-			name: "antique mine sign",
-			name_cap: "Antique mine sign",
-			variable: "bailey",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 141,
-			name: "antique rusted cutlass",
-			name_cap: "Antique rusted cutlass",
-			variable: "rusted cutlass",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 142,
-			name: "antique silver blade",
-			name_cap: "Antique silver blade",
-			variable: "silver blade",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 143,
-			name: "antique silver brooch",
-			name_cap: "Antique silver brooch",
-			variable: "silver brooch",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 144,
-			name: "antique silver coin",
-			name_cap: "Antique silver coin",
-			variable: "silver coin",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 145,
-			name: "antique silver compass",
-			name_cap: "Antique silver compass",
-			variable: "silver compass",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 146,
-			name: "antique silver crown",
-			name_cap: "Antique silver crown",
-			variable: "silver crown",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 147,
-			name: "antique silver dagger",
-			name_cap: "Antique silver dagger",
-			variable: "silver dagger",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 148,
-			name: "antique silver goblet",
-			name_cap: "Antique silver goblet",
-			variable: "silver goblet",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 149,
-			name: "antique silver mask",
-			name_cap: "Antique silver mask",
-			variable: "silver mask",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 150,
-			name: "antique silver ring",
-			name_cap: "Antique silver ring",
-			variable: "silver ring",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 151,
-			name: "antique tea caddy",
-			name_cap: "Antique tea caddy",
-			variable: "tea caddy",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 152,
-			name: "antique trilobite",
-			name_cap: "Antique trilobite",
-			variable: "trilobite",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 153,
-			name: "antique watch",
-			name_cap: "Antique watch",
-			variable: "watch",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 154,
-			name: "antique gold compass",
-			name_cap: "Antique gold compass",
-			variable: "gold compass",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 155,
-			name: "antique gold necklace",
-			name_cap: "Antique gold necklace",
-			variable: "gold necklace",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 156,
-			name: "antique gold ring",
-			name_cap: "Antique gold ring",
-			variable: "gold ring",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 157,
-			name: "antique fetish",
-			name_cap: "Antique fetish",
-			variable: "fetish",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 158,
-			name: "tube of parasite cream",
-			name_cap: "Tube of parasite cream",
-			variable: "parasite cream",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Keeps the parasites at bay.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 159,
-			name: "truffle",
-			name_cap: "Truffle",
-			variable: "truffle",
-			word: "a",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Decadent.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 160,
-			name: "antique islander mask",
-			name_cap: "Antique islander mask",
-			variable: "islander mask",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 161,
-			name: "antique ivory necklace",
-			name_cap: "Antique ivory necklace",
-			variable: "ivory necklace",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
-		{
-			index: 162,
-			name: "antique stone talisman",
-			name_cap: "Antique stone talisman",
-			variable: "stone talisman",
-			word: "an",
-			plural: 0,
-			colour: 0,
-			colour_options: [],
-			colour_sidebar: 0,
-			type: ["prop"],
-			shop: [],
-			gender: "n",
-			description: "Belongs in a museum.",
-			accessory: 0,
-			accessory_colour: 0,
-			accessory_colour_options: [],
-			accessory_colour_sidebar: 0,
-			coverImage: 0,
-		},
 	];
 
 	/*
diff --git a/game/base-clothing/clothing-upper.js b/game/base-clothing/clothing-upper.js
index 91bae20b6a99733d633e36e948700f022d6315e4..cc718a479a9df0bca081cf36b91ef33279437474 100644
--- a/game/base-clothing/clothing-upper.js
+++ b/game/base-clothing/clothing-upper.js
@@ -2499,7 +2499,7 @@ function initUpper() {
 			sleeve_img: 1,
 			sleeve_colour: "no",
 			breast_img: 0,
-			breast_acc_img: { 0: null, 1: null, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6 },
+			breast_acc_img: { 0: null, 1: null, 2: null, 3: 3, 4: 4, 5: 5, 6: 6 },
 			cursed: 0,
 			location: 0,
 			iconFile: "gothic_gown.png",
diff --git a/game/base-clothing/danceWidgets.twee b/game/base-clothing/danceWidgets.twee
index ea8af3313297bd1f0e50666387995084f4d224d7..d3b97e9f6adc823bc099c149cb109bd477e80470 100644
--- a/game/base-clothing/danceWidgets.twee
+++ b/game/base-clothing/danceWidgets.twee
@@ -802,13 +802,6 @@
 <</widget>>
 
 <<widget "dance_private_init">>
-	<!--
-	<<for _i to 0; _i lt $NPCList.length; _i++>>
-		<<if $dance_place isnot _i>>
-			<<deactivateNPC _i>>
-		<</if>>
-	<</for>>
-	-->
 	<<if $dance_place isnot 0>>
 		<<saveNPC $dance_place chosen_npc>>
 		<<saveNPC 0 zero_npc>>
diff --git a/game/base-clothing/shop.twee b/game/base-clothing/shop.twee
index 376e26f96a210c1bd3b4350f7beda29fe949617e..b6655d417200c9bd77a7fe0ebe2b593144c8916d 100644
--- a/game/base-clothing/shop.twee
+++ b/game/base-clothing/shop.twee
@@ -129,9 +129,6 @@
 		<<clothingcategoryicon "neck">>
 		<<link "Look in the glowing box">><<replace "#clothingShop-div">><<NeckShop>><</replace>><</link>>
 		<br>
-		<<clothingcategoryicon "handheld">>
-		<<link "Look in the rusty umbrella stand">><<replace "#clothingShop-div">><<HandheldShop>><</replace>><</link>>
-		<br>
 		<<clothingcategoryicon "hand">>
 		<<link "Look in the tilted vanity">><<replace "#clothingShop-div">><<HandsShop>><</replace>><</link>>
 		<br>
diff --git a/game/base-clothing/widgets.twee b/game/base-clothing/widgets.twee
index d904e2ef4d7e79c5c39088815c738f38750111c1..f78d4a46f2991f09661d10bb32f3d925f178b897 100644
--- a/game/base-clothing/widgets.twee
+++ b/game/base-clothing/widgets.twee
@@ -460,11 +460,7 @@
 	<<if !$worn.handheld.type.includes("prop")>>
 		<<set $propEquipped to 1>>
 		<<handheldstrip>>
-		<<if _args[1]>>
-			<<handheldwear _propIndex _args[1]>>
-		<<else>>
-			<<handheldwear _propIndex>>
-		<</if>>
+		<<handheldwear _propIndex>>
 	<</if>>
 <</widget>>
 
diff --git a/game/base-combat/consensual.twee b/game/base-combat/consensual.twee
deleted file mode 100644
index f0c6a880534043c320c90d036c63384160b42a5f..0000000000000000000000000000000000000000
--- a/game/base-combat/consensual.twee
+++ /dev/null
@@ -1,16 +0,0 @@
-:: Widgets Consensual Man [widget]
-<<widget "consensualman">>
-	<!-- Unused -->
-<</widget>>
-:: Widgets Consensual Actions [widget]
-/*
-<<widget "consensualman">>
-	<!-- Unused -->
-<</widget>>
-*/
-:: Widgets Consensual Effects [widget]
-/*
-<<widget "consensualman">>
-	<!-- Unused -->
-<</widget>>
-*/
\ No newline at end of file
diff --git a/game/base-combat/init.twee b/game/base-combat/init.twee
index abd24515a3fbd0b3bf66e68ebe77857cda19411f..48b2d19ec8aaa994fbb6f3dd6eb60a6a0af72c74 100644
--- a/game/base-combat/init.twee
+++ b/game/base-combat/init.twee
@@ -492,40 +492,6 @@
 	<<combatinit>>
 <</widget>>
 
-<<widget "busmoveinit">>
-	<<set $enemyhealth to 200>>
-	<<set $enemyarousal to $allure / 50>>
-	<<set $enemyanger to 0>>
-	<<set $enemystrength to 20000>>
-	<<set $combat to 1>>
-	<<set $enemyarousalmax to 200>>
-	<<set $enemyangermax to 200>>
-	<<set $enemyhealthmax to 200>>
-	<<set $enemytrust to 0>>
-	<<if $dissociation gte 1>>
-		<<set $enemytrust -= 40>>
-	<</if>>
-	<<set $enemytype to "man">>
-
-	<<set $rapeavoid to 1>>
-	<<set $orgasmdown to 0>>
-	<<set $penisbitten to 0>>
-	<<set $apologised to 0>>
-	<<set $underlowerstruggle to 0>>
-	<<set $lowerstruggle to 0>>
-	<<set $upperstruggle to 0>>
-	<<set $leftaction to 0>>
-	<<set $rightaction to 0>>
-	<<set $traumasaved to $trauma>>
-	<<set $stresssaved to $stress>>
-	<<set $traumagain to 0>>
-	<<set $stressgain to 0>>
-
-	<<if Time.dayState isnot "night">><<enable_rescue>><</if>>
-
-	<<combatinit>>
-<</widget>>
-
 <<widget "lefthandinit">>
 	<<set $enemyhealth to 200>>
 	<<set $enemyarousal to $allure / 50>>
@@ -964,29 +930,6 @@
 	<<wetnessCalculate>>
 <</widget>>
 
-<<widget "deactivateNPC">>
-	/* How to use:
-	* Call this widget as <<deactivateNPC _n>> where _n is any number between 0 and 5, and is an active NPC.
-	* This will prevent said NPC from entering combat plus deal with all the rest of the math.
-	* Optional arguments [1] and [2] for health and arousal respectivelly. If the original health or arousal values for the NPCs haven't been changed, no need to use those arguments.
-	*/
-	<<set $_hpToReduce to _args[1] || $NPCList[_args[0]].healthmax>>
-	<<set $_arousalToReduce to _args[2] || $enemyarousalmax/$enemyno>>
-	<<if _args[0] isnot undefined and $NPCList[_args[0]]>>
-		<<if $NPCList[_args[0]].active isnot "inactive">>
-			<<set $NPCList[_args[0]].active to "inactive">>
-			<<set $enemyhealth -= $_hpToReduce>>
-			<<set $enemyhealthmax to $enemyhealth>>
-			<<set $enemyarousalmax -= $_arousalToReduce>>
-			<<set $enemyno-->>
-		<<else>>
-			<span class="red">deactivateNPC ERROR: NPC _args[0] is already inactive.</span>
-		<</if>>
-	<<else>>
-		<span class="red">deactivateNPC ERROR: Invalid or missing index specified.</span>
-	<</if>>
-<</widget>>
-
 <<widget "man">>
 	<<if $finish isnot 1>>
 		<<if $setupMidOrgasm is true>>
diff --git a/game/base-combat/widgets.twee b/game/base-combat/widgets.twee
index 0135b887298f9747d04a7e793cf04e6aeda4fbeb..c7c86465ac76da8a3153fec938def29a01f80658 100644
--- a/game/base-combat/widgets.twee
+++ b/game/base-combat/widgets.twee
@@ -644,7 +644,3 @@
 	<<set $_alongside to either("alongside","heedless of","pushing aside")>>
 	<<set _text_output to (playerHasButtPlug() ? ", "+$_alongside+" your "+$worn.butt_plug.name : "")>>
 <</silently>><<print _text_output>><</widget>>
-
-<<widget "commaButtPlug">><<silently>>
-	<<set _text_output to (playerHasButtPlug() ? ", your $worn.butt_plug.name, " : "")>>
-<</silently>><<print _text_output>><</widget>>
diff --git a/game/base-system/images.twee b/game/base-system/images.twee
index 0314c2993f59d9409697d0612f49d08d6403ce35..4d31c0e454ada62f14c32801d2d971c73d111f99 100644
--- a/game/base-system/images.twee
+++ b/game/base-system/images.twee
@@ -1274,29 +1274,6 @@
 	<<icon "arcade.gif">>
 <</widget>>
 
-<<widget "gameicon">>
-	<<switch _args[0]>>
-		<<case "controller">>
-			<<set $_baseIcon to "robin_controller.png">>
-		<<case "cards">>
-			<<set $_cardIcon =  "game_cards.gif">>
-			<<set $_frontIcon = "game_acc_cards.gif">>
-		<<case "cards_0" "cards_1" "cards_2">>
-			<<set $_cardIcon =  "game_cards_bet.gif">>
-			<<set $_frontIcon = "game_acc_" + _args[0] +".gif">>
-		<<default>>
-			<<set $_baseIcon to "game_" + _args[0] +".png">>
-	<</switch>>
-	<<if $_baseIcon>>
-		<<icon $_baseIcon>>
-	<<elseif $_cardIcon>>
-		<<icon $_frontIcon infront>>
-		<span @class="'clothes-' + $cardcover.colour">
-			<<icon $_cardIcon>>
-		</span>
-	<</if>>
-<</widget>>
-
 <<widget "poundicon">>
 	<<if Weather.precipitation is "rain">>
 		<<icon "pound_rust.png">>
@@ -1695,12 +1672,7 @@
 	<<switch _args[0]>>
 		<<case "blood">><<icon "mirrorblood.gif">>
 		<<case "home">><<icon "mirrorhome.png">>
-		<<default>>
-			<<switch $location>>
-				<<case "home">><<icon "mirrorhome.png">>
-				<<case "prison">><<prisonicon "mirror">>
-				<<default>><<icon "mirror.png">>
-			<</switch>>
+		<<default>><<icon "mirror.png">>
 	<</switch>>
 <</widget>>
 
@@ -1852,7 +1824,6 @@
 		<<case "party">><<icon "solocup.png">>
 		<<case "volleyball">><<icon "volleyball.png">>
 		<<case "cinema">><<icon "ticket.png">>
-		<<case "ask">><<icon "birdTower/socialise_question.png">>
 		<<default>><<icon "socialise.png">>
 	<</switch>>
 <</widget>>
diff --git a/game/base-system/location.twee b/game/base-system/location.twee
index f9ee2e9fc97f56bde585192115058ab13199d8aa..c73a87576e8fd641489e90f7b74a26630b019e90 100644
--- a/game/base-system/location.twee
+++ b/game/base-system/location.twee
@@ -125,7 +125,6 @@
 		setup.addlocation( "connudatus"               ).parent("town").bus().build();
 		setup.addlocation( "strip_club"               ).parent("connudatus").location().inside().build();
 		setup.addlocation( "cliff"                    ).parent("town").bus().build();
-		setup.addlocation( "townhall"          		  ).parent("cliff").location().inside().build();
 		setup.addlocation( "cafe"                     ).parent("cliff").location().inside().build();
 		setup.addlocation( "cafe_outside"             ).parent("cafe").outside().build(); /* outside seating */
 		setup.addlocation( "high"                     ).parent("town").bus().build();
@@ -194,7 +193,7 @@
 		setup.addlocation( "seadocks"                 ).parent("sea").bus().build();
 		setup.addlocation( "seacliffs"                ).parent("sea").bus().build();
 		setup.addlocation( "pirate_ship"               ).parent("sea").location().inside().build();
-		setup.addlocation( "coastpath"                ).parent("sea").location().build();
+		setup.addlocation( "coastpath"                ).parent("sea").build();
 		setup.addlocation( "prison"                   ).parent("sea").location().inside().build();
 		setup.addlocation( "island"                   ).parent("sea").location().build();
 
diff --git a/game/base-system/mirror.twee b/game/base-system/mirror.twee
index 8aa8475089e637d64f8c3da3013acf642fd1c138..42907277d44586ad17a63a3abdc59e24fb379ac5 100644
--- a/game/base-system/mirror.twee
+++ b/game/base-system/mirror.twee
@@ -158,27 +158,27 @@
 		<span class="fading">A pale figure stands behind.</span>
 	<</if>>
 	<br><br>
-	<<crimeicon "mark">><<link "Examine how you are seen by others">><<set $mirrorMenu to "appearance">><<replace #mirror>><<mirrorDisplay>><</replace>><<numberify "#passages > .passage">><</link>>
+	<<link "Examine how you are seen by others">><<set $mirrorMenu to "appearance">><<replace #mirror>><<mirrorDisplay>><</replace>><<numberify "#passages > .passage">><</link>>
 	<br><br>
 	<<if !$simpleMirror>>
 		__Skin__
 		<br>
-		<<investigateicon>><<link "Examine your skin">><<set $mirrorMenu to "skin">><<replace #mirror>><<mirrorDisplay>><</replace>><<numberify "#passages > .passage">><</link>>
+		<<link "Examine your skin">><<set $mirrorMenu to "skin">><<replace #mirror>><<mirrorDisplay>><</replace>><<numberify "#passages > .passage">><</link>>
 		<br><br>
 	<</if>>
 	__Hair__
 	<br>
-	<<hairdressericon "hairspray">><<link "Change your hair style">><<set $mirrorMenu to "hair">><<replace #mirror>><<mirrorDisplay>><</replace>><<numberify "#passages > .passage">><</link>>
+	<<link "Change your hair style">><<set $mirrorMenu to "hair">><<replace #mirror>><<mirrorDisplay>><</replace>><<numberify "#passages > .passage">><</link>>
 	<br><br>
 	__Makeup__
 	<br>
-	<<cosmeticsicon>><<link "Apply makeup">><<set $mirrorMenu to "makeup">><<replace #mirror>><<mirrorDisplay>><</replace>><<numberify "#passages > .passage">><</link>>
+	<<link "Apply makeup">><<set $mirrorMenu to "makeup">><<replace #mirror>><<mirrorDisplay>><</replace>><<numberify "#passages > .passage">><</link>>
 	<br><br>
 
 	<<if $worn.neck.name is "love locket">>
 		__Locket__
 		<br>
-		<span @class="'clothes-'+$worn.neck.colour"><<icon "locket.png">></span><<link [[Customise locket|Mirror Locket]]>><<set $passage_mirror to $passage>><</link>>
+		<<link [[Customise locket|Mirror Locket]]>><<set $passage_mirror to $passage>><</link>>
 		<br><br>
 	<</if>>
 
@@ -186,16 +186,6 @@
 		<<if $specialTransform is 1 or $physicalTransform is 1>>
 			__Transformation__
 			<br>
-			<<if $demon gte 6>><<tficon "demon">>
-			<<elseif $wolf gte 6>><<tficon "wolf">>
-			<<elseif $angel gte 6>><<tficon "angel">>
-			<<elseif $fallenangel gte 2>><<tficon "fallen">>
-			<<elseif $cat gte 6>><<tficon "cat">>
-			<<elseif $cow gte 6>><<tficon "cow">>
-			<<elseif $harpy gte 6>><<tficon "bird">>
-			<<elseif $fox gte 6>><<tficon "fox">>
-			<<else>><<tficon "angel">>
-			<</if>>
 			<<link "Examine your inner self">><<set $mirrorMenu to "transformation">><<replace #mirror>><<mirrorDisplay>><</replace>><<numberify "#passages > .passage">><</link>>
 		<<else>>
 			Obtain otherworldly powers to examine further.
@@ -204,12 +194,12 @@
 	<br><br>
 
 	<<if $debug is 1>>
-		<<ind>><<link "Debug">><<set $mirrorMenu to "debug">><<replace #mirror>><<mirrorDisplay>><</replace>><</link>>
+		<<link "Debug">><<set $mirrorMenu to "debug">><<replace #mirror>><<mirrorDisplay>><</replace>><</link>>
 	<</if>>
 <</widget>>
 
 <<widget "mirrorAppearance">>
-	<<mirroricon>><<link "Back">><<replace #mirror>><<mirrorMenu>><</replace>><<numberify "#passages > .passage">><<unset $mirrorMenu>><</link>>
+	<<link "Back">><<replace #mirror>><<mirrorMenu>><</replace>><<numberify "#passages > .passage">><<unset $mirrorMenu>><</link>>
 	<br><br>
 	<<settextcolorfromgender $player.gender_appearance>>
 	You look like a <span @class="_text_color"><<if playerBellyVisible(true)>>pregnant <</if>><<girl>>.</span>
@@ -829,16 +819,14 @@
 <</widget>>
 
 <<widget "mirrorSkin">>
-	<<mirroricon>><<link "Back">><<handheldon>><<updatesidebarimg>><<replace #mirror>><<mirrorMenu>><</replace>><<numberify "#passages > .passage">><<unset $mirrorMenu>><</link>>
+	You are looking at your skin.
+	<br>
+	<<link "Back">><<replace #mirror>><<mirrorMenu>><</replace>><<numberify "#passages > .passage">><<unset $mirrorMenu>><</link>>
 	<br><br>
 
-	<span id="sunscreenDescription">
-		<<sunscreenDesc>>
-	</span>
 	<span id="sunscreenLinks">
 		<<sunscreenLinks>>
 	</span>
-	<br><br>
 
 	<<if $liquidcount gt 0>>
 		__Body liquids__
@@ -858,7 +846,7 @@
 		<<mirrorwet "anus" $player.bodyliquid.anus.semen $player.bodyliquid.anus.goo $player.bodyliquid.anus.nectar>>
 		<<mirrorwet "mouth" $player.bodyliquid.mouth.semen $player.bodyliquid.mouth.goo $player.bodyliquid.mouth.nectar>>
 	<<else>>
-		Your skin feels <span class="green">clean</span>.
+		Your skin feels clean.
 	<</if>>
 	<br><br>
 	__Body Writing__<br>
@@ -892,26 +880,6 @@
 <</widget>>
 
 <<widget "sunscreenLinks">>
-	<<if Skin.Sunscreen.isApplied()>>
-		<br>
-		<<cosmeticsicon "sunscreen">><<link "Remove sunscreen">>
-			<<handheldon>>
-			<<replace #sunscreenDescription>><<sunscreenApply "remove">><</replace>>
-			<<replace #sunscreenLinks>><<sunscreenLinks>><</replace>>
-		<</link>> <<note `Skin.Sunscreen.usesLeft + ' use'+(Skin.Sunscreen.usesLeft > 1 ? 's' : '') + ' left'`>>
-	<<else>>
-		<<if Skin.Sunscreen.usesLeft gt 0>>
-			<br>
-			<<cosmeticsicon "sunscreen">><<link "Apply sunscreen">>
-				<<handheldon>>
-				<<replace #sunscreenDescription>><<sunscreenApply>><</replace>>
-				<<replace #sunscreenLinks>><<sunscreenLinks>><</replace>>
-			<</link>> <<note `Skin.Sunscreen.usesLeft + ' use'+(Skin.Sunscreen.usesLeft > 1 ? 's' : '') + ' left'`>>
-		<</if>>
-	<</if>>
-<</widget>>
-
-<<widget "sunscreenDesc">>
 	Your skin is
 	<<if Skin.Sunscreen.isApplied()>>
 		<mouse class = "gold tooltip-small" style="border-bottom-color:white">
@@ -926,6 +894,11 @@
 		</mouse>
 		<<set $_timeLeft to Math.floor(Skin.Sunscreen.timeLeft / 60)>>
 		(<<print getTimeString($_timeLeft)>> left).
+		<br>
+		<<cosmeticsicon "sunscreen">><<link "Remove sunscreen">>
+			<<run Skin.Sunscreen.remove()>>
+			<<replace #sunscreenLinks>><<sunscreenLinks>><</replace>>
+		<</link>> <<note `Skin.Sunscreen.usesLeft + ' use'+(Skin.Sunscreen.usesLeft > 1 ? 's' : '') + ' left'`>>
 	<<else>>
 		<mouse class = "gold tooltip-small" style="border-bottom-color:white">
 			not protected against the sun.
@@ -937,30 +910,16 @@
 				<</if>>
 			</span>
 		</mouse>
-	<</if>>
-<</widget>>
-
-<<widget "sunscreenApply">>
-	<<if $leftarm isnot "bound" and $rightarm isnot "bound">>
-		<<if _args[0] is "remove">>
-			<<run Skin.Sunscreen.remove()>>
-		<<else>>
-			<<run Skin.Sunscreen.apply()>>
+		<<if Skin.Sunscreen.usesLeft gt 0>>
+			<<set $_applyText += " sunscreen">>
+			<br>
+			<<cosmeticsicon "sunscreen">><<link "Apply sunscreen">>
+				<<run Skin.Sunscreen.apply()>>
+				<<replace #sunscreenLinks>><<sunscreenLinks>><</replace>>
+			<</link>> <<note `Skin.Sunscreen.usesLeft + ' use'+(Skin.Sunscreen.usesLeft > 1 ? 's' : '') + ' left'`>>
 		<</if>>
 	<</if>>
-	<<if $leftarm is "bound" and $rightarm is "bound">>
-		<span class="red">Both of your arms are bound</span>, and you find it difficult to do anything about your skin this way.
-		<hr>
-	<<elseif _args[0] is "remove">>
-		<<wearProp "rag" "white">><<updatesidebarimg>>
-		You scrub a damp towel over your skin, removing any last traces of sunscreen.
-		<hr>
-	<<else>>
-		<<wearProp "sunscreen">><<updatesidebarimg>>
-		You squirt a hefty dollop of sunscreen onto your hand and rub it into your skin.
-		<hr>
-	<</if>>
-	<<sunscreenDesc>>
+	<br><br>
 <</widget>>
 
 <<widget "bodywritingOptions">>
@@ -1484,7 +1443,7 @@
 <</widget>>
 
 <<widget "mirrorHair">>
-	<<mirroricon>><<link "Back">><<handheldon>><<updatesidebarimg>><<replace #mirror>><<mirrorMenu>><</replace>><<numberify "#passages > .passage">><<unset $mirrorMenu>><</link>>
+	<<link "Back">><<replace #mirror>><<mirrorMenu>><</replace>><<numberify "#passages > .passage">><<unset $mirrorMenu>><</link>>
 	<<shopClothingFilterSettingsDefault>> /* Due to reusing the traits filtering */
 	<br><br>
 	<div id="hairDescription">
@@ -1498,23 +1457,16 @@
 	<br>
 
 	<<set _hairTypeByName to {}>>
-	<<run setup.hairstyles.sides.sort((a, b) => {
-		if (a.name === "natural") return -1;
-		if (b.name === "natural") return 1;
-		return a.name.localeCompare(b.name);
-	}).forEach(style => {
+	<<run setup.hairstyles.sides.sort((a, b) => a.name_cap.localeCompare(b.name_cap)).forEach(style => {
 		if (!V.shopClothingFilter.active || !V.shopClothingFilter.traits.length || style.type.find(type => V.shopClothingFilter.traits.includes(type))) {
-			T.hairTypeByName[style.name] = style.variable;
+			T.hairTypeByName[style.name_cap] = style.variable;
 		}
 	})>>
+
 	<<set _fringeTypeByName to {}>>
-	<<run setup.hairstyles.fringe.sort((a, b) => {
-		if (a.name === "natural") return -1;
-		if (b.name === "natural") return 1;
-		return a.name.localeCompare(b.name);
-	}).forEach(style => {
+	<<run setup.hairstyles.fringe.sort((a, b) => a.name_cap.localeCompare(b.name_cap)).forEach(style => {
 		if (!V.shopClothingFilter.active || !V.shopClothingFilter.traits.length || style.type.find(type => V.shopClothingFilter.traits.includes(type))) {
-			T.fringeTypeByName[style.name] = style.variable;
+			T.fringeTypeByName[style.name_cap] = style.variable;
 		}
 	})>>
 
@@ -1550,9 +1502,8 @@
 	<<hairDescription>>
 	<<if $leftarm is "bound" and $rightarm is "bound">>
 		<span class="red">Both of your arms are bound</span>, and you find it difficult to do anything about your hair this way.
-		<hr>
+		<br>
 	<<else>>
-		<<wearProp "hairgel">><<updatesidebarimg>>
 		You squirt a hefty dollop of hair gel onto your hand and slick it through your hair. By the time you're finished, your hairstyle is securely in place, and the small bottle is empty. <span class="pink">If you decide to change up your hairstyle, you'll need to <<print ($hairgelBottles is 0) ? "acquire" : "apply">> more.</span>
 		<hr>
 	<</if>>
@@ -1633,7 +1584,7 @@
 <<widget "mirrorhairOptions">>
 	<<set _hairOptions to {}>>
 	<<run setup.hairstyles[_args[0]].forEach(style => {
-		if (!V.shopClothingFilter.active || !V.shopClothingFilter.traits.length || style.type.find(type => V.shopClothingFilter.traits.includes(type))) T.hairOptions[style.name] = style.variable;
+		if (!V.shopClothingFilter.active || !V.shopClothingFilter.traits.length || style.type.find(type => V.shopClothingFilter.traits.includes(type))) T.hairOptions[style.name_cap] = style.variable;
 	})>>
 	<<set _pageMax to Math.ceil(Object.keys(_hairOptions).length / _perPage)>>
 
@@ -1730,7 +1681,7 @@
 						<<rendermodel "hairstyleMannequin">>
 						<br>
 					<</if>>
-					<<print toTitleCase(_label)>>
+					<<print _label>>
 				</div>
 			<</capture>>
 		<</for>>
@@ -1991,7 +1942,7 @@
 <</widget>>
 
 <<widget "mirrorMakeup">>
-	<<mirroricon>><<link "Back">><<replace #mirror>><<mirrorMenu>><</replace>><<numberify "#passages > .passage">><<unset $mirrorMenu>><</link>>
+	<<link "Back">><<replace #mirror>><<mirrorMenu>><</replace>><<numberify "#passages > .passage">><<unset $mirrorMenu>><</link>>
 	<br><br>
 	__Makeup__
 	<br>
@@ -2303,7 +2254,7 @@
 <</widget>>
 
 <<widget "mirrorTransformation">>
-	<<mirroricon>><<link "Back">><<replace #mirror>><<mirrorMenu>><</replace>><<numberify "#passages > .passage">><<unset $mirrorMenu>><</link>>
+	<<link "Back">><<replace #mirror>><<mirrorMenu>><</replace>><<numberify "#passages > .passage">><<unset $mirrorMenu>><</link>>
 	<br><br>
 	Hiding parts of your Inner Self will slowly increase your Trauma over time (excludes pubes and pits).
 	If your Trauma gets too high, you will be unable to hide.
diff --git a/game/base-system/orgasm.twee b/game/base-system/orgasm.twee
index 60e8bcbf0398197005017fb008d5bcd4d90fa654..0f659d386e1041977f1896fbb6a78968eaf34eba 100644
--- a/game/base-system/orgasm.twee
+++ b/game/base-system/orgasm.twee
@@ -93,14 +93,14 @@
 						<</if>>
 						<<set $_impregnatedChance to Math.floor($_impregnatedChance * (_orgasmSpermRng / 100))>>
 						/*If random NPC is impregnated, store NPC and fetus*/
-						<<if ($_impregnatedChance gte random(0,200) or _npcForceImpregnation) or true>>
+						<<if ($_impregnatedChance gte random(0,200) or _npcForceImpregnation)>>
 							<<switch $NPCList[$penistarget].type>>
 								<<case "human">><<set $_pregnancy to pregnancyGenerator.human(V.NPCList[$penistarget], "pc", true)>>
 								<<case "wolf">><<set $_pregnancy to pregnancyGenerator.wolf(V.NPCList[$penistarget], "pc", true, "vagina", false)>>
 								<<case "wolfgirl" "wolfboy">><<set $_pregnancy to pregnancyGenerator.wolf(V.NPCList[$penistarget], "pc", true, "vagina", true)>>
 							<</switch>>
 							<<if $_pregnancy and !(typeof $_pregnancy is "string" || $_pregnancy instanceof String)>>
-								<<if $consensual is 1 and ((random(0, 1 + $_count) is 0 and $_count lte 10) or (setup.pregnancy.randomAlwaysKeep.includes($location) and $_count lte 15)) or true>>
+								<<if $consensual is 1 and ((random(0, 1 + $_count) is 0 and $_count lte 10) or (setup.pregnancy.randomAlwaysKeep.includes($location) and $_count lte 15))>>
 									<<storeNPC $penistarget "pregnancy">>
 									<<set $storedNPCs[_lastStoredName].pregnancy to $_pregnancy>>
 								<</if>>
diff --git a/game/base-system/overlays/options.twee b/game/base-system/overlays/options.twee
index 4a6db440610b6534225edf669397336e40e883f9..a75972d09107564a51b64dbf23934538deb2181b 100644
--- a/game/base-system/overlays/options.twee
+++ b/game/base-system/overlays/options.twee
@@ -151,7 +151,7 @@ IMPORTANT:
 		</div>
 		<div class="settingsToggleItem">
 			<label><<checkbox "$options.clothingCaption" false true autocheck>> Show clothing descriptions in sidebar</label>
-			<mouse class="tooltip-small linkBlue">(?)<span>Still displays the description as a tooltip when hovering over the avatar when disabled.</span></mouse>
+			<span class="tooltip-anchor linkBlue" tooltip="Still displays the description as a tooltip when hovering over the avatar when disabled.">(?)</span>
 		</div>
 		<div class="settingsToggleItem">
 			<label><<checkbox "$options.showCaptionText" false true autocheck>> Show caption text in sidebar</label>
@@ -429,7 +429,6 @@ IMPORTANT:
 			<div class="settingsToggleItem">
 				<label data-target="options.images" data-disabledif="V.options.images===0">
 					<<checkbox "$options.bodywritingImages" false true autocheck>> Enable bodywriting images
-					
 				</label>
 				<span class="tooltip-anchor linkBlue" tooltip="Disabling may improve performance and potentially prevent images from not loading correctly.">(?)</span>
 			</div>
diff --git a/game/base-system/pregnancy/children-events.twee b/game/base-system/pregnancy/children-events.twee
index 192394971f055f18b7a240f4bb74871339bc371a..288bd7e5adefcaa91f1f9d325123656577037993 100644
--- a/game/base-system/pregnancy/children-events.twee
+++ b/game/base-system/pregnancy/children-events.twee
@@ -353,7 +353,6 @@
 <<link [[Next|$childPassageExit]]>><<unset $childPassageExit>><<endevent>><</link>>
 
 :: childBathe
-<<wearProp "soap">>
 You fill a small tub with warm water, and prepare the towels and a new nappy beforehand. You take <<childname>> in your arms gently, and carry <<childhim>> to the bathtub, making sure to put <<childhim>> in a safe position.
 <<set _rng to random(1, 5)>>
 <<switch _rng>>
@@ -462,7 +461,7 @@ When you're done bathing <<childhim>>, you lay <<childhim>> on a towel and gentl
 <<link [[Back|Childrens Home]]>><<unset $childActivityEvent>><<endevent>><</link>>
 
 :: Childrens Donate Milk 2
-<<effects>><<wearProp "baby bottle">>
+<<effects>>
 
 <<set $pregnancyStats.orphanageMilkBottles += $donatedMilk>>
 <<set $pregnancyStats.orphanageMilkBottlesTotal += $donatedMilk>>
@@ -629,7 +628,6 @@ You leave behind $donatedMilk bottles of milk for your children with one of Bail
 		You sit beside <<childname>>, and begin to converse with <<childhim>>. <<childHe>> gives no indication of understanding you, but smiles at your presence and tries to mimic your sounds. <<childHe>> soon becomes distracted by <<childhis>> hands however, and falls silent. You get back on your feet.<<llstress>><<stress -12>>
 		<<set $children[$childActivityEvent.childid].localVariables.activity to "thumbSucking">>
 	<<case "batheGentle">>
-		<<wearProp "rag" "white">>
 		You fill a small tub with warm water, and prepare the towels and a new nappy beforehand. You take <<childname>> in your arms gently, and carry <<childhim>> to the bathtub, making sure to put <<childhim>> in a safe position.
 		<br><br>
 		Next, you rub <<childname>> gently with the warm water, making sure to clean between the folds of skin, and holding <<childhis>> little body with one hand. The softness of <<childhis>> skin as you rub makes you feel extremely at ease. The baby seems to be tickled by your touches, and swings <<childhis>> legs in the water, making some of it splash on your clothes and face. You can't help but smile at the situation.<<ltrauma>><<trauma -6>>
@@ -637,7 +635,6 @@ You leave behind $donatedMilk bottles of milk for your children with one of Bail
 		You finish bathing <<childhim>>, lay <<childhim>> on a towel, and dry <<childhis>> body with softer fabric. You finish by changing <<childhis>> nappy and putting <<childhim>> back in <<childhis>> crib.
 		<<set $children[$childActivityEvent.childid].localVariables.activity to "sleeping">>
 	<<case "batheShampoo">>
-		<<wearProp "soap">>
 		You fill a small tub with warm water, and prepare the towels and a new nappy beforehand. You take <<childname>> in your arms gently, and carry <<childhim>> to the bathtub, making sure to put <<childhim>> in a safe position.
 		<br><br>
 		Next, you gently rub <<childname>>'s head in circular motions with a handful of baby shampoo. The sweet aroma of strawberry fills the ambient, and bubbles begin to appear in the water. Your child seems curious, and periodically takes one of <<childhis>> fingers to the bubbles, popping them. <<childHis>> mellow laughter echoes through the room as <<childhe>> is distracted by the foam in the bathtub.<<ltrauma>><<lstress>><<trauma -6>><<stress -6>>
@@ -645,7 +642,6 @@ You leave behind $donatedMilk bottles of milk for your children with one of Bail
 		You finish bathing <<childhim>>, lay <<childhim>> on a towel, and dry <<childhis>> body with softer fabric. You finish by changing <<childhis>> nappy and putting <<childhim>> back in <<childhis>> crib.
 		<<set $children[$childActivityEvent.childid].localVariables.activity to "sleeping">>
 	<<case "BatheCalm">>
-		<<wearProp "soap">>
 		You fill a small tub with warm water, and prepare the towels and a new nappy beforehand. You take <<childname>> in your arms gently, and carry <<childhim>> to the bathtub, making sure to put <<childhim>> in a safe position.
 		<br><br>
 		Next, you start the bath by trying to soap your baby's body. <<childHe>> doesn't seem to like the feel of water on <<childhis>> skin, let alone seems to be enjoying your attempts to cleanse <<childhim>>. <<childname>> threatens to cry as you continue the bath, but you manage to calm <<childhim>> down after a little effort. <<childHe>> pouts in distaste until the end of the cleaning session. When you're finished, <<childhe>> doesn't seem to want to let you carry <<childhim>> back, and makes uncontent sounds when you pick <<childhim>> up.<<gstress>><<stress 6>>
@@ -653,7 +649,6 @@ You leave behind $donatedMilk bottles of milk for your children with one of Bail
 		You finish bathing <<childhim>>, lay <<childhim>> on a towel, and dry <<childhis>> body with softer fabric. You finish by changing <<childhis>> nappy and putting <<childhim>> back in <<childhis>> crib.
 		<<set $children[$childActivityEvent.childid].localVariables.activity to "sleeping">>
 	<<case "batheTantrum">>
-		<<wearProp "rag" "white">>
 		You fill a small tub with warm water, and prepare the towels and a new nappy beforehand. You take <<childname>> in your arms gently, and carry <<childhim>> to the bathtub, making sure to put <<childhim>> in a safe position.
 		<br><br>
 		Just touching the water makes <<childname>> let out a high-pitched, incessant cry. <<childHe>> flails <<childhis>> legs and arms into the water trying to get free as you struggle to rub <<childhim>> properly. Water splashes quickly soak your clothes. <<childHe>> continues throwing a tantrum until the end of the bath, leaving you with a headache.<<gstress>><<stress 6>>
@@ -674,11 +669,9 @@ You leave behind $donatedMilk bottles of milk for your children with one of Bail
 		<<childname>> sits alone, wearing a scowl on <<childhis>> infant face. You sit beside <<childhim>>, but <<childhe>> ignores you. Unable to help but smile at the grumpy child's expression, you begin to tickle <<childhim>>. <<childHe>>'s not ticklish, but is amused by your teasing fingers and the silly noises you make as you playfully attack <<childhis>> sides. The scowl is soon gone, and <<childhe>> giggles and smiles instead. Mission accomplished.<<lstress>><<stress -6>>
 		<<set $children[$childActivityEvent.childid].localVariables.activity to "thumbSucking">>
 	<<case "readingAttempt">>
-		<<wearProp "bookenglish">>
 		You sit beside <<childname>>, and pull <<childhim>> and the inverted book into your lap. You flip it open and begin to read the simple words to <<childhim>>. <<childHe>> follows along both your voice and the colourful pictures for a while, until <<childhe>> becomes distracted and rolls off your lap.<<lstress>><<stress -6>>
 		<<set $children[$childActivityEvent.childid].localVariables.activity to "readingCorrected">>
 	<<case "babyRattle">>
-		<<wearProp "toyrattle">>
 		You sit beside <<childname>>. <<childHe>>'s looking down at a <<childtoy $location $childActivityEvent.toyid "lowercase">>. You take it in hand, and give it a shake, causing a cacophany of rattles. The <<childtype>> looks bewildered and intrigued, and reaches for this strange object. You give the <<childtoy $location $childActivityEvent.toyid "lowercase">> one last shake before handing it over for the <<childtype>> to experiment with.
 		<<if _childTotalDays lte 40>>
 			<<childHe>> simply drops it to the floor.
@@ -689,12 +682,10 @@ You leave behind $donatedMilk bottles of milk for your children with one of Bail
 		<</if>>
 		<<lstress>><<stress -5>><<ltrauma>><<trauma -2>>
 	<<case "teddyBear">>
-		<<wearProp "toybear">>
 		You tuck the <<childtoy $location $childActivityEvent.toyid "lowercase">> into <<childname>>'s arms. <<childHe>> grasps it tight, and nuzzles against it. <<childHe>> is soon asleep again. You spend a few calming moments watching <<childhim>>.<<ltrauma>><<trauma -6>><<lstress>><<stress -6>>
 		<<set $children[$childActivityEvent.childid].localVariables.activity to "teddyBear2">>
 		<<set $children[$childActivityEvent.childid].localVariables.toy to clone(_toyName)>>
 	<<case "toyCar">>
-		<<wearProp "toycar">>
 		You sit beside <<childname>>, and take the <<childtoy $location $childActivityEvent.toyid "lowercase">> from <<childhis>> flailing hands. You place it on the floor, and roll it back and forth. "Vroom! Vroom!" you say, rolling it back and forth as <<childname>> watches, enraptured. You hand <<childhim>> the toy.
 		<br><br>
 		<<if _childTotalDays lte 120 + random(0,20)>>
@@ -704,7 +695,6 @@ You leave behind $donatedMilk bottles of milk for your children with one of Bail
 		<</if>>
 		<<lstress>><<stress -5>><<ltrauma>><<trauma -2>>
 	<<case "dummy">>
-		<<wearProp "dummy">>
 		<<set _rng to random(0,100)>>
 		You rush over to <<childname>>, and notice that <<childhis>> <<childtoy $location $childActivityEvent.toyid "lowercase">> lies on the floor beside <<childhim>>.
 		<br><br>
@@ -941,7 +931,6 @@ You leave behind $donatedMilk bottles of milk for your children with one of Bail
 		<</if>>
 		<<set $children[$childActivityEvent.childid].localVariables.activity to "sleeping">>
 	<<case "bathe">>
-		<<wearProp "rag">>
 		You notice with your sharp eyes that <<childname>> is in need of bathing. You scoop the <<childtype>> into your arms despite <<childhis>> chirps of protest, walking in the direction of the rainwater pool.
 		<br><br>
 
diff --git a/game/base-system/pregnancy/children.twee b/game/base-system/pregnancy/children.twee
index 046d918c6f1ffde8456ca8782ed2d7693e4b639e..ebf3ae12b3dbce93c5ba9de205726f4729b537ab 100644
--- a/game/base-system/pregnancy/children.twee
+++ b/game/base-system/pregnancy/children.twee
@@ -78,20 +78,6 @@ args[3] - "both" to include unrelated children or "only" to exclude the player c
 	<</if>>
 <</widget>>
 
-/*args[0] - childId, args[1] - clothes*/
-<<widget "childChangeClothes">>
-	<<if _args[0]>>
-		<<if $children[_args[0]].features.clothes isnot null>>
-			<<if _args[1]>>
-				<<set _clothes to _args[1]>>
-			<<else>>
-				<<set _clothes to "naked">>
-			<</if>>
-			<<set $children[_args[0]].features.clothes to _clothes>>
-		<</if>>
-	<</if>>
-<</widget>>
-
 /*args[0] - childId, args[1] - set to display specific text output*/
 <<widget "childAge">><<silently>>
 	<<if _args[0]>>
@@ -599,45 +585,6 @@ args[3] - "both" to include unrelated children or "only" to exclude the player c
 	<</if>>
 <</silently>><<if $_text_output>><<print $_text_output>><</if>><</widget>>
 
-/*args[0] - cry type, args[1] - childId */
-<<widget "childCry">><<silently>>
-	<<if _args[1] isnot undefined>>
-		<<set $_id to _args[1]>>
-	<<elseif $childSelected isnot undefined>>
-		<<set $_id to $childSelected.childId>>
-	<</if>>
-	<<if $_id isnot undefined>>
-		<<if between(_args[0], 1, 4)>>
-			<<set $_cry to _args[0]>>
-		<<else>>
-			<<set $_cry to 1>>
-		<</if>>
-		<<switch $children[$_id].type>>
-			<<case "human">>
-				<<switch $_cry>>
-					<<case 1>><<set $_text_output to "Sniffling">>
-					<<case 2>><<set $_text_output to "Weeping">>
-					<<case 3>><<set $_text_output to "Sobbing">>
-					<<case 4>><<set $_text_output to "Wailing">>
-				<</switch>>
-			<<case "wolf" "wolfboy" "wolfgirl">>
-				<<switch $_cry>>
-					<<case 1>><<set $_text_output to "Whining">>
-					<<case 2>><<set $_text_output to "Whimpering">>
-					<<case 3>><<set $_text_output to "Crying">>
-					<<case 4>><<set $_text_output to "Howling">>
-				<</switch>>
-			<<case "hawk">>
-				<<switch $_cry>>
-					<<case 1>><<set $_text_output to "Chirping">>
-					<<case 2>><<set $_text_output to "Warbling">>
-					<<case 3>><<set $_text_output to "Trilling">>
-					<<case 4>><<set $_text_output to "Lilting">>
-				<</switch>>
-		<</switch>>
-	<</if>>
-<</silently>><<if $_text_output>><<print $_text_output>><</if>><</widget>>
-
 /*args[0] - childId*/
 <<widget "childtype">><<silently>>
 	<<if _args[0] isnot undefined>>
diff --git a/game/base-system/pregnancy/containers.twee b/game/base-system/pregnancy/containers.twee
index 357b9e379bf88396147140eb42eef6e776f73dde..aa4ed387a1298ea79bad19355a8b7c69969435b5 100644
--- a/game/base-system/pregnancy/containers.twee
+++ b/game/base-system/pregnancy/containers.twee
@@ -270,8 +270,8 @@
 <</widget>>
 
 <<widget "containerInfo">>
-	<<assignmenticon>><<wearProp "notebook">><<updatesidebarimg>>
-	<<link "Close notebook">><<handheldon>><<updatesidebarimg>><<replace "#info">><<assignmenticon>><<link "Open notebook">><<replace "#info">><<containerInfo>><</replace>><</link>><</replace>><</link>>
+	<<assignmenticon>>
+	<<link "Close notebook">><<replace "#info">><<assignmenticon>><<link "Open notebook">><<replace "#info">><<containerInfo>><</replace>><</link>><</replace>><</link>>
 	<br>
 	<<set _locCount to 0>>
 	<<for _locs range $container.list>>
@@ -483,5 +483,5 @@
 		<</link>>
 		<br>
 	<</if>>
-	<<getouticon>><<link [[Leave|_container.leaveLink]]>><<handheldon>><</link>>
+	<<getouticon>><<link [[Leave|_container.leaveLink]]>><</link>>
 <</if>>
diff --git a/game/base-system/settings.twee b/game/base-system/settings.twee
index f9f2fd20f7039aefa447ac77205e3217c5ac3abb..ea099a4f1cea71e657067046081c90b2de09b0a8 100644
--- a/game/base-system/settings.twee
+++ b/game/base-system/settings.twee
@@ -143,8 +143,6 @@
 	<<run settingsDisableElement()>>
 <</widget>>
 
-<<widget "fa-icon">><span @class="'fa-icon fa-' + _args.raw" alt="' + _args.raw + '"></span><</widget>>
-
 <<widget "startOptionsComplexityButton">>
 	<div @class="_selectedStart is _args[1] ? 'gold buttonStartSelected' : 'buttonStart'" >
 		<<button _args[0]>>
diff --git a/game/base-system/tending.twee b/game/base-system/tending.twee
index d1f72f2bc8132ee4799b65b02368d3d3e916b236..c78c90a5279843c8196e5a079cb74ac31be5d81b 100644
--- a/game/base-system/tending.twee
+++ b/game/base-system/tending.twee
@@ -218,7 +218,6 @@
 	<<if $leftarm is "bound" and $rightarm is "bound">>
 		<span class="red">Can't water when your arms are bound.</span>
 	<<else>>
-		<<wearProp "watering can">>
 		<<gardenicon "water">>
 		<<link "Water ($_time)" $passage>>
 			<<tending _tStatup>><<pass _tPass>><<set _plantbed.water to 1>><<set $tendingvars.plot_watered to true>>
@@ -228,7 +227,6 @@
 <</widget>>
 
 <<widget "tendingWaterAllDryBeds">>
-	<<wearProp "watering can">>
 	<<set $_plotsToWater to _args[0]>>
 
 	<<for $_plot range $_plotsToWater>>
diff --git a/game/base-system/text.twee b/game/base-system/text.twee
index 1886b6e47d6b4b9cba31c26bb1d303270c7b198b..ba882ef739df8e8073a8c519ea5c4fa16208ca0b 100644
--- a/game/base-system/text.twee
+++ b/game/base-system/text.twee
@@ -361,19 +361,6 @@
 	<</if>>
 <</widget>>
 
-<<widget "clearPronouns">>
-	<<if _args[0]>>
-		<<set _args[0].pronouns.he = 0>>
-		<<set _args[0].pronouns.his = 0>>
-		<<set _args[0].pronouns.hers = 0>>
-		<<set _args[0].pronouns.him = 0>>
-		<<set _args[0].pronouns.himself = 0>>
-		<<set _args[0].pronouns.man = 0>>
-		<<set _args[0].pronouns.boy = 0>>
-		<<set _args[0].pronouns.men = 0>>
-	<</if>>
-<</widget>>
-
 <!-- [0] - string
 	 prints string [0] prepended with an indefinite article based on the [0]'s first character -->
 <<widget "a">><<silently>>
@@ -2062,56 +2049,6 @@
 	<</if>>
 <</widget>>
 
-<<widget "combatdeviant">>
-	<<if $consensual is 1 and $statdisable is "f">>
-		<<set _color to ["","teal","lblue","blue","purple","pink","red"][_args[0]]>>
-		<span @class="_color">Deviancy _args[0]</span>
-	<</if>>
-<</widget>>
-
-<<widget "combatdeviant1">>
-	<<if $consensual is 1 and $statdisable is "f">>
-		<span class="teal">Deviancy 1</span>
-	<</if>>
-<</widget>>
-
-<<widget "combatdeviant2">>
-	<<if $consensual is 1 and $statdisable is "f">>
-		<span class="lblue">Deviancy 2</span>
-	<</if>>
-<</widget>>
-
-<<widget "combatdeviant3">>
-	<<if $consensual is 1 and $statdisable is "f">>
-		<span class="blue">Deviancy 3</span>
-	<</if>>
-<</widget>>
-
-<<widget "combatdeviant4">>
-	<<if $consensual is 1 and $statdisable is "f">>
-		<span class="purple">Deviancy 4</span>
-	<</if>>
-<</widget>>
-
-<<widget "combatdeviant5">>
-	<<if $consensual is 1 and $statdisable is "f">>
-		<span class="pink">Deviancy 5</span>
-	<</if>>
-<</widget>>
-
-<<widget "combatdeviant6">>
-	<<if $consensual is 1 and $statdisable is "f">>
-		<span class="red">!Deviancy 6!</span>
-	<</if>>
-<</widget>>
-
-<!-- Commented out for deprecation. Use: ?admires
-			See 03-JavaScript/Templates/..
-<<widget "admires">>
-	<<print either("leers at", "admires", "ogles", "eyes up")>>
-<</widget>>
--->
-
 <<widget "crime">>
 	<<if $statdisable is "f">> |
 		<span class="red">Crime</span>
diff --git a/game/base-system/weather/passout-scenes.twee b/game/base-system/weather/passout-scenes.twee
index 20ea6acb85e70a808e98b2aacabe16ea7f802a4b..a682522ab0be8fb353be17661b174c967e45c79d 100644
--- a/game/base-system/weather/passout-scenes.twee
+++ b/game/base-system/weather/passout-scenes.twee
@@ -1007,7 +1007,7 @@ You give <<him>> a smile, and manage to mumble a thank you. <<He>> sighs, shakin
 <<link [[Ask for help|Passout Beach Heatstroke Lemonade Help]]>><</link>>
 
 :: Passout Beach Heatstroke Lemonade Take
-<<effects>><<wearProp "lemonade">>
+<<effects>>
 You grab the lemonade from Robin's hands and bring it to your lips. It tastes slightly salty, and your nose wrinkles at the unfamiliar taste.
 <br><br>
 "Sorry, I know it tastes kinda gross. But you need electrolytes," <<he>> says, sitting next to you. You down the lemonade as quickly as you can. "The ice, too," Robin adds.
@@ -1032,7 +1032,7 @@ You take a few small cubes into your mouth and let them sit on your tongue. It f
 <br><br>
 <<He>> takes the cup from your hands and smiles at you, but <<he>> still looks concerned.
 <br><br>
-<<link [[Next|Passout Beach Heatstroke Lemonade End]]>><<handheldon>><</link>>
+<<link [[Next|Passout Beach Heatstroke Lemonade End]]>><</link>>
 
 :: Passout Beach Heatstroke Lemonade Help
 <<effects>>
diff --git a/game/base-system/widgets.twee b/game/base-system/widgets.twee
index a0a6018e74a001c18ebb30b94b332dc02d36addb..6e292f5009ec36c4a632a295843e5f8fe09fab8a 100644
--- a/game/base-system/widgets.twee
+++ b/game/base-system/widgets.twee
@@ -2070,7 +2070,7 @@
 
 <<widget "exposure">>
 	<!-- In safe locations, while alone, the player won't cover up. Love interest check is likely not hitting everywhere it should be due to NPCs generating after this check. -->
-	<<if ["Wardrobe", "Bedroom", "Sleep", "Bird Tower", "Bird Hunt"].some(keyword => V.passage.includes(keyword)) and !($NPCList.some(obj => Object.hasOwn(obj, "type")) and !$NPCList.find(({fullDescription:fd}) => fd && Object.values($loveInterest).includes(fd)))>>
+	<<if ["Wardrobe", "Bedroom", "Sleep", "Bird Tower", "Bird Hunt", "Spa Tan Underwear", "Spa Tan Curtains", "Spa Tan Naked"].some(keyword => V.passage.includes(keyword)) and !($NPCList.some(obj => Object.hasOwn(obj, "type")) and !$NPCList.find(({fullDescription:fd}) => fd && Object.values($loveInterest).includes(fd)))>>
 		<<set $libertine to 2>>
 	<<else>>
 		<<set $libertine to 0>>
@@ -3757,12 +3757,6 @@
 	<</if>>
 <</widget>>
 
-<<widget "fringecheck">>
-	<<if $fringetype is "default">>
-		<<set $fringetype to "messy">>
-	<</if>>
-<</widget>>
-
 <<widget "haircheck">>
 	<<if $hairtype is "default">>
 		<<set $hairtype to "messy">>
diff --git a/game/overworld-forest/loc-asylum/main.twee b/game/overworld-forest/loc-asylum/main.twee
index 8712c441b8894cfcefa968f2a9c520cb64888d89..66a30210e42f7aa42cbd0d3b2ce4f4ed743b4821 100644
--- a/game/overworld-forest/loc-asylum/main.twee
+++ b/game/overworld-forest/loc-asylum/main.twee
@@ -1360,11 +1360,8 @@ It seems that for this plan to work, you'll have to find and disable it.
 <<link [[Next|Asylum]]>><</link>>
 
 :: Asylum Study
+
 <<set $outside to 0>><<set $location to "asylum">><<asylumeffects>><<effects>>
-<<if $leftarm isnot "bound" and $rightarm isnot "bound">>
-	<<set _prop to either("bookenglish", "bookhistory", "bookscience", "bookmaths")>>
-	<<wearProp _prop>>
-<</if>>
 You read old text books in the dusty library. Most of this should still apply.
 <<if $leftarm is "bound" and $rightarm is "bound">>
 	Your arms are bound, so
@@ -1413,7 +1410,7 @@ You nod. The orderly pulls a chair close and sits down.
 <<link [[Thank|Asylum Study Thank]]>><<set $suspicion -= 1>><</link>><<lsuspicion>>
 <br>
 <<if $leftarm isnot "bound" and $rightarm isnot "bound">>
-<<link [[Rest a hand on their thigh|Asylum Study Thigh]]>><<handheldon>><</link>><<promiscuous1>>
+<<link [[Rest a hand on their thigh|Asylum Study Thigh]]>><</link>><<promiscuous1>>
 <</if>>
 <br>
 
@@ -2220,7 +2217,7 @@ Each patient is given a bed of soil to work as they please. Many are untended, b
 <</if>>
 <br>
 
-<<getouticon>><<link [[Leave|Asylum]]>><<handheldon>><</link>>
+<<getouticon>><<link [[Leave|Asylum]]>><</link>>
 <br>
 
 <<unset $event_trigger>>
diff --git a/game/overworld-forest/loc-asylum/widgets.twee b/game/overworld-forest/loc-asylum/widgets.twee
index c61b7fbc33f2910190db61a561b4de951dca2763..fddfe6c51cac79e3acecd18525b9e3a90cacf3ae 100644
--- a/game/overworld-forest/loc-asylum/widgets.twee
+++ b/game/overworld-forest/loc-asylum/widgets.twee
@@ -467,13 +467,13 @@
 			"Excuse me," says a voice to your side. It's a <<person>> wearing a patient's gown. "Doctor Harper gave me a task. I need to," <<he>> looks away. "I need to expose myself to a dozen people before my next assessment. My b-body, I mean. C-can I show you?" <<He>> doesn't look happy.
 			<br><br>
 
-			<<link [[Accept|Asylum Exposure Accept]]>><<handheldon>><<arousal 600>><</link>><<garousal>>
+			<<link [[Accept|Asylum Exposure Accept]]>><<arousal 600>><</link>><<garousal>>
 			<br>
-			<<link [[Accept but keep your eyes shut|Asylum Exposure Shut]]>><<famegood 1>><<handheldon>><</link>>
+			<<link [[Accept but keep your eyes shut|Asylum Exposure Shut]]>><<famegood 1>><</link>>
 			<br>
-			<<link [[Accept and pretend to keep your eyes shut|Asylum Exposure Peek]]>><<arousal 600>><<famegood 1>><<handheldon>><</link>><<garousal>>
+			<<link [[Accept and pretend to keep your eyes shut|Asylum Exposure Peek]]>><<arousal 600>><<famegood 1>><</link>><<garousal>>
 			<br>
-			<<link [[Refuse|Asylum Exposure Refuse]]>><<handheldon>><</link>>
+			<<link [[Refuse|Asylum Exposure Refuse]]>><</link>>
 			<br>
 		<<elseif $rng gte 81 and (random(1,100) lte $suspicion)>>
 			<<generateDoctor 1>><<generate2>><<person1>>
@@ -481,15 +481,15 @@
 			"Hello. The doctor has extra time today and wants you in for an extra treatment," <<he>> says. "Come with me please."<br>
 			A <<person2>><<person>> stands behind you.
 			<br><br>
-			<<link [[Go with them|Asylum Fake Treatment Accept]]>><<handheldon>><</link>>
+			<<link [[Go with them|Asylum Fake Treatment Accept]]>><</link>>
 			<br>
-			<<link [[Refuse to go|Asylum Fake Treatment Refuse]]>><<handheldon>><</link>><<physiquedifficulty 1 $physiquemax>>
+			<<link [[Refuse to go|Asylum Fake Treatment Refuse]]>><</link>><<physiquedifficulty 1 $physiquemax>>
 			<br>
 		<<elseif $rng gte 61>>
 			<<generate1>><<person1>><<npcClothesType $NPCList[0] "patient">>You catch one of the other patients, a <<person>>, looking at you. <<He>> smiles.
 			<br><br>
 
-			<<link [[Flirt (0:02)|Asylum Flirt]]>><<handheldon>><<asylumstatus 1>><<pass 2>><</link>><<promiscuous1>><<gcool>>
+			<<link [[Flirt (0:02)|Asylum Flirt]]>><<asylumstatus 1>><<pass 2>><</link>><<promiscuous1>><<gcool>>
 			<br>
 			<<link [[Ignore|Asylum]]>><<endevent>><</link>>
 			<br>
@@ -497,7 +497,7 @@
 			<<generate1>><<generatev2>><<person1>>One of the patients, a <<person>>, gropes one of the nurses, a <<person2>><<person>>. The nurse doesn't resist. <<He>> looks resigned.
 			<br><br>
 
-			<<link [[Intervene (0:02)|Asylum Intervene]]>><<handheldon>><<pass 2>><<suspicion -5>><<asylumstatus -5>><</link>><<llsuspicion>><<llcool>>
+			<<link [[Intervene (0:02)|Asylum Intervene]]>><<pass 2>><<suspicion -5>><<asylumstatus -5>><</link>><<llsuspicion>><<llcool>>
 			<br>
 			<<link [[Ignore|Asylum]]>><<endevent>><</link>>
 			<br>
@@ -506,13 +506,13 @@
 			<<generate1>><<person1>><<generate2>>A <<person>>, a patient, runs past you and hides from view, just as a <<person2>><<person>> rounds the corner. <<Hes>> a nurse. <<He>> looks around, then at you. "Have you seen a <<person1>><<person>> by chance?"
 			<br><br>
 
-			<<link [[Truth|Asylum Truth]]>><<handheldon>><<suspicion -5>><<asylumstatus -5>><</link>><<llsuspicion>><<llcool>>
+			<<link [[Truth|Asylum Truth]]>><<suspicion -5>><<asylumstatus -5>><</link>><<llsuspicion>><<llcool>>
 			<br>
-			<<link [[Lie|Asylum Lie]]>><<handheldon>><<suspicion 5>><<asylumstatus 5>><</link>><<ggsuspicion>><<ggcool>>
+			<<link [[Lie|Asylum Lie]]>><<suspicion 5>><<asylumstatus 5>><</link>><<ggsuspicion>><<ggcool>>
 			<br>
 		<</if>>
 	<<else>>
-		<<link [[Next|Asylum]]>><<handheldon>><</link>>
+		<<link [[Next|Asylum]]>><</link>>
 		<br>
 	<</if>>
 <</widget>>
diff --git a/game/overworld-forest/loc-cabin/events.twee b/game/overworld-forest/loc-cabin/events.twee
index 1b509ecc8868e33cd9868bd34f7a19ac17a4ec09..7b7dece2c23e105a31903a3c5b5cd35810117bf1 100644
--- a/game/overworld-forest/loc-cabin/events.twee
+++ b/game/overworld-forest/loc-cabin/events.twee
@@ -1290,7 +1290,6 @@ You press your body closer to Eden, and slide your hand down <<his>> stomach.
 :: Eden Massage
 <<effects>>
 <<set $outside to 0>><<set $location to "cabin">><<effects>>
-<<wearProp "salve">>
 /* eden is already generated on passages that lead here
 <<npc Eden>><<person1>>*/
 
@@ -1327,17 +1326,17 @@ You press your body closer to Eden, and slide your hand down <<his>> stomach.
 	<br>
 	<<if Time.days % 2 is 0>>
 		<<if $eden_shoot gte 1>>
-			<<edenicon "target">><<link [[Practise shooting (0:30)|Eden Shoot]]>><<handheldon>><<pass 30>><<stress -3>><</link>><<lstress>>
+			<<edenicon "target">><<link [[Practise shooting (0:30)|Eden Shoot]]>><<pass 30>><<stress -3>><</link>><<lstress>>
 			<br>
 		<<else>>
-			<<edenicon "target">><<link [[Say you want to learn how to shoot (0:05)|Eden Shoot Ask]]>><<handheldon>><<pass 5>><</link>>
+			<<edenicon "target">><<link [[Say you want to learn how to shoot (0:05)|Eden Shoot Ask]]>><<pass 5>><</link>>
 			<br>
 		<</if>>
 	<<else>>
-		<<schoolicon "library">><<link [[Ask Eden to read to you (0:30)|Eden Read]]>><<handheldon>><<trauma -3>><<pass 30>><<npcincr Eden love 1>><</link>><<glove>><<ltrauma>>
+		<<schoolicon "library">><<link [[Ask Eden to read to you (0:30)|Eden Read]]>><<trauma -3>><<pass 30>><<npcincr Eden love 1>><</link>><<glove>><<ltrauma>>
 		<br>
 	<</if>>
-	<<getouticon>><<link [[Stop massaging|Cabin Eden Actions]]>><<handheldon>><</link>>
+	<<getouticon>><<link [[Stop massaging|Cabin Eden Actions]]>><</link>>
 	<br>
 <<else>>
 	<<link [[Next|Eden Cabin]]>><<endevent>><</link>>
@@ -2862,7 +2861,7 @@ You and Eden walk through the forest, searching for anything of value.
 <</if>>
 
 :: Eden Blood Moon
-<<location "forest">><<effects>><<wearProp "blood lemon">>
+<<location "forest">><<effects>>
 
 <<if $speech_attitude is "meek">>
 	"R-red lemons?" you ask, as <<he>> hands them to you.
@@ -3272,7 +3271,7 @@ Seeing your happy expression, <<he>> returns a faint smile to you. <<He>> leans
 <<link [[Next|Eden Wounds No Kiss]]>><</link>>
 
 :: Eden Wounds No Kiss
-<<effects>><<wearProp "solo cup">>
+<<effects>>
 
 Grabbing a cup of water from the kitchen, you walk over to Eden and gently shake <<him>> awake. <<He>> jerks slightly in surprise, but relaxes once <<he>> sees you. You hand <<him>> the cup, watching as <<he>> takes a drink.
 <br><br>
diff --git a/game/overworld-forest/loc-cabin/halloween.twee b/game/overworld-forest/loc-cabin/halloween.twee
index 99a6e33716bfa64cbe63ad90d9aaaeb108dd6710..ce796a811bf1b87a93773bc46cb4b72360bd3d47 100644
--- a/game/overworld-forest/loc-cabin/halloween.twee
+++ b/game/overworld-forest/loc-cabin/halloween.twee
@@ -1,5 +1,5 @@
 :: Eden Halloween
-<<set $outside to 0>><<set $location to "cabin">><<effects>><<wearProp "halloween">>
+<<set $outside to 0>><<set $location to "cabin">><<effects>>
 Orange autumn leaves decorate the trees of the forest, covering the ground and crunching under your feet as you approach Eden, the hamper of sweets in your hands. <<He>> momentarily looks up from <<his>> work to regard you, but stops when <<he>> notices what you're holding.
 <br><br>
 
diff --git a/game/overworld-forest/loc-cabin/main.twee b/game/overworld-forest/loc-cabin/main.twee
index 739bf958d2c3dfbd50261c085a83fa736b89a1a4..8b3cd5f32a1fd25fb23ed9fb217793777e55e723 100644
--- a/game/overworld-forest/loc-cabin/main.twee
+++ b/game/overworld-forest/loc-cabin/main.twee
@@ -2364,7 +2364,7 @@ Using the broom and dustpan, you sweep the cabin floor until it's clean.
 <<link [[Next|Cabin House Actions]]>><<endevent>><</link>>
 
 :: Eden Salve
-<<effects>><<wearProp "salve">>
+<<effects>>
 <!-- <<npc Eden>><<person1>> -->
 You gather the ingredients for your salve and melt the mixture on the stove. When you're done, you leave your salve on the table to cool and dry.
 <br><br>
@@ -2379,7 +2379,7 @@ You gather the ingredients for your salve and melt the mixture on the stove. Whe
 <<link [[Next|Cabin House Actions]]>><<endevent>><</link>>
 
 :: Eden Soap
-<<effects>><<wearProp "soap">>
+<<effects>>
 <!-- <<npc Eden>><<person1>> -->
 You gather the ingredients for your soap and melt the mixture on the stove. When you're done, you leave your soap on the table to cool and set.
 <br><br>
@@ -2404,7 +2404,7 @@ You take stock of Eden's supplies, noting what needs to be replenished and how m
 :: Eden Mirror
 
 <<effects>>
-<<edenicon>><<link [[Step away|Eden Cabin]]>><<handheldon>><<unset $mirrorMenu>><<unset $bodywritingSet>><<postMirror>><</link>>
+<<link [[Step away|Eden Cabin]]>><<unset $mirrorMenu>><<unset $bodywritingSet>><<postMirror>><</link>>
 <br>
 <<mirror>>
 <br><br>
@@ -2421,7 +2421,7 @@ You take stock of Eden's supplies, noting what needs to be replenished and how m
 <<display_plot eden>>
 
 <<if !$plants_known.includes("poppy")>>
-	<<icon "tending/poppy.png">> <<link [[Search for seeds (0:30)|Eden Plots Seeds]]>><<set $plants_known.push("poppy")>><<pass 30>><<handheldon>><</link>>
+	<<icon "tending/poppy.png">> <<link [[Search for seeds (0:30)|Eden Plots Seeds]]>><<set $plants_known.push("poppy")>><<pass 30>><</link>>
 	<br>
 <</if>>
 <br>
diff --git a/game/overworld-forest/loc-churchyard/catacombs.twee b/game/overworld-forest/loc-churchyard/catacombs.twee
index c2726ce97872716f276429dea8e70d741b45bd44..3f9f0023805c4f5c45c3fcff890c85e783fd6faa 100644
--- a/game/overworld-forest/loc-churchyard/catacombs.twee
+++ b/game/overworld-forest/loc-churchyard/catacombs.twee
@@ -82,7 +82,7 @@ You hold your torch over the brazier. It blazes into new life. For a moment the
 <br>
 
 :: Catacombs Statuette
-<<effects>><<wearProp "ivory statuette">>
+<<effects>>
 
 You climb the six-armed statue, standing on its arms and using the wings for support. It proves sturdy, and you come face-to-face with the statuette. It's a miniature version of the larger angel, except the arms and head are raised in supplication, and the smile beams.
 <br><br>
@@ -92,7 +92,7 @@ You take the smaller angel from the larger angel's hand, and climb back down. It
 
 <<set $antiquemoney += 500>><<museumAntiqueStatus "antiqueivorystatuette" "found">><<crimeUp 500 "thievery">>
 
-<<link [[Next|Catacombs]]>><<set $eventskip to 1>><<handheldon>><</link>>
+<<link [[Next|Catacombs]]>><<set $eventskip to 1>><</link>>
 <br>
 
 :: Catacombs Sarcophagi
@@ -434,7 +434,7 @@ You enter the tunnel. The ceiling is so low you need to crouch, but you soon eme
 <br>
 
 :: Catacombs Crown 2
-<<effects>><<wearProp "silver crown">>
+<<effects>>
 
 You take the crown. The earth tremors, almost knocking you off your feet. Clumps of dirt fall from the ceiling. You rush for the tunnel, and manage to escape before being buried in the avalanche.
 <br><br>
@@ -444,7 +444,7 @@ You examine the crown. There are sockets on the front that were once filled, and
 
 <<set $antiquemoney += 1200>><<museumAntiqueStatus "antiquesilvercrown" "found">><<crimeUp 1200 "thievery">>
 
-<<link [[Next|Catacombs Barrow]]>><<handheldon>><<set $eventskip to 1>><</link>>
+<<link [[Next|Catacombs Barrow]]>><<set $eventskip to 1>><</link>>
 <br>
 
 :: Catacombs Stream
@@ -787,7 +787,7 @@ You approach the machine. You feel the ground vibrate as you draw closer, and se
 <br>
 
 :: Catacombs Crystal 2
-<<effects>><<wearProp "crystal">>
+<<effects>>
 <<earnFeat "Dark Delvings">>
 You remove the crystal. The prongs release it without resistance. You think you see an engraving, somehow carved into the interior.
 <br><br>
@@ -797,5 +797,5 @@ Before you can examine further, <span class="red">an alarm blares.</span> You tu
 
 <<set $antiquemoney += 2000>><<museumAntiqueStatus "antiquewhitecrystal" "found">><<crimeUp 1000 "destruction">><<crimeUp 1000 "thievery">>
 
-<<link [[Next|Catacombs Compound]]>><<handheldon>><<set $eventskip to 1>><</link>>
+<<link [[Next|Catacombs Compound]]>><<set $eventskip to 1>><</link>>
 <br>
diff --git a/game/overworld-forest/loc-churchyard/events.twee b/game/overworld-forest/loc-churchyard/events.twee
index 201e9772c7fc39920580338138ce9ea2332d73b2..b1d2d5bfcfb1bdeaeff114d5c432ebca3739b1fe 100644
--- a/game/overworld-forest/loc-churchyard/events.twee
+++ b/game/overworld-forest/loc-churchyard/events.twee
@@ -80,10 +80,8 @@ You search the catacombs for plunder, looking in nooks and crannies, kicking ope
 	<</if>>
 <<elseif $rng gte 61>>
 	You have no luck, until you come across a strongbox, its lock still intact. You make short work of the primitive design. Inside is a blade of tarnished silver. Whatever hilt or handle it was attached to has long since decayed away. It might be worth something.
-	<<wearProp "silver blade">>
 	<<set $antiquemoney += 60>><<museumAntiqueStatus "antiquesilverblade" "found">><<crimeUp 60 "thievery">>
 <<else>>
-	<<wearProp "copper coin">>
 	You find a copper coin, the metal corroded and any text long-faded. Still, it might be valuable to a collector.
 	<<set $antiquemoney += 10>><<museumAntiqueStatus "antiquecoppercoin" "found">><<crimeUp 10 "thievery">>
 <</if>>
@@ -108,11 +106,9 @@ You search among the debris for anything of value, kneeling while rummaging thro
 		You feed your torch.<<gtorch>><<catacombs_torch 10>>
 	<</if>>
 <<elseif $rng gte 61>>
-	<<wearProp "silver goblet">>
 	Your fingers find something cold, and hard. You tug it free from the earth. A goblet of corroded silver. Lines cover the surface, all that remains of an intricate engraving. It might be worth something to a collector.
 	<<set $antiquemoney += 60>><<museumAntiqueStatus "antiquesilvergoblet" "found">><<crimeUp 60 "thievery">>
 <<else>>
-	<<wearProp "fetish">>
 	You feel a rubbery texture, and pull a strange fetish from the mud. Inhuman arms dangle from a decrepit frame. Still, it might be worth something to a collector.
 	<<set $antiquemoney += 15>><<museumAntiqueStatus "antiquestrangefetish" "found">><<crimeUp 15 "thievery">>
 <</if>>
@@ -136,11 +132,9 @@ You crack open old coffers, and avoid the resulting clouds of dust.
 		You have no luck however, though you do find some old scraps of rag. You feed your torch.<<gtorch>><<catacombs_torch 10>>
 	<</if>>
 <<elseif $rng gte 61>>
-	<<wearProp "gold coin">>
 	Coffer after coffer yields nothing, until you see a glint of yellow metal. A gold coin, corroded by time, but still valuable no doubt. The face of a long-dead monarch stares at you.
 	<<set $antiquemoney += 100>><<museumAntiqueStatus "antiquegoldcoin" "found">><<crimeUp 100 "thievery">>
 <<else>>
-	<<wearProp "silver coin">>
 	You find a silver coin, buried under ruined scrap.
 	<<set $antiquemoney += 20>><<museumAntiqueStatus "antiquesilvercoin" "found">><<crimeUp 20 "thievery">>
 <</if>>
diff --git a/game/overworld-forest/loc-forest/events.twee b/game/overworld-forest/loc-forest/events.twee
index 4b9b32679db8e094b9fc669ab4b54fc695233118..982df260ce84a70f4c60219377b6fad9927df1d3 100644
--- a/game/overworld-forest/loc-forest/events.twee
+++ b/game/overworld-forest/loc-forest/events.twee
@@ -21,20 +21,20 @@ It's fragile and revealing, and you don't think you could take it off without br
 <br>
 
 :: Forest Mushrooms
-<<location "forest">><<effects>><<wearProp "mushroom">>
+<<location "forest">><<effects>>
 
 You eat one of the mushrooms. It tastes bitter, but somehow refreshing.
 <br><br>
 
-<<link [[Next|Forest]]>><<handheldon>><<set $eventskip to 1>><</link>>
+<<link [[Next|Forest]]>><<set $eventskip to 1>><</link>>
 
 :: Forest Mushrooms2
-<<location "forest">><<effects>><<wearProp "wolfshroom">>
+<<location "forest">><<effects>>
 
 You eat one of the mushrooms, it's quite sweet. You feel more relaxed, and strangely heated.
 <br><br>
 
-<<link [[Next|Forest]]>><<handheldon>><<set $eventskip to 1>><</link>>
+<<link [[Next|Forest]]>><<set $eventskip to 1>><</link>>
 <br>
 
 :: Forest Mushrooms Pick
@@ -43,7 +43,6 @@ You eat one of the mushrooms, it's quite sweet. You feel more relaxed, and stran
 You drop to your knees, and search beneath the decaying roots.
 
 <<if $tendingSuccess>>
-	<<wearProp "mushroom">>
 	<span class="green">You find some tasty <<icon "tending/mushroom.png">> mushrooms that should fetch a price at market.</span>
 	<<tending_pick mushroom>>
 <<else>>
@@ -51,7 +50,7 @@ You drop to your knees, and search beneath the decaying roots.
 <</if>>
 <br><br>
 
-<<link [[Next|Forest]]>><<handheldon>><<set $eventskip to 1>><</link>>
+<<link [[Next|Forest]]>><<set $eventskip to 1>><</link>>
 <br>
 
 :: Forest Mushrooms2 Pick
@@ -60,7 +59,6 @@ You drop to your knees, and search beneath the decaying roots.
 You drop to your knees, and search beneath the decaying roots.
 
 <<if $tendingSuccess>>
-	<<wearProp "wolfshroom">>
 	<span class="green">You find some fat <<icon "tending/wolfshroom.png">> mushrooms that should fetch a good price.</span>
 	<<tending_pick wolfshroom>>
 <<else>>
@@ -68,7 +66,7 @@ You drop to your knees, and search beneath the decaying roots.
 <</if>>
 <br><br>
 
-<<link [[Next|Forest]]>><<handheldon>><<set $eventskip to 1>><</link>>
+<<link [[Next|Forest]]>><<set $eventskip to 1>><</link>>
 <br>
 
 :: Forest Wolf Molestation
@@ -2659,7 +2657,6 @@ The buzzing fades into the trees. <<tearful>> you continue through the forest.
 You shake the <<icon "tending/apple.png">> apple trees, hoping to dislodge some of the fruit.
 
 <<if $tendingSuccess>>
-	<<wearProp "apple">>
 	<span class="green">You catch some shiny ones.</span>
 	<<tending_pick apple 6 18>>
 <<else>>
@@ -2667,7 +2664,7 @@ You shake the <<icon "tending/apple.png">> apple trees, hoping to dislodge some
 <</if>>
 <br><br>
 
-<<link [[Next|Forest]]>><<handheldon>><<set $eventskip to 1>><</link>>
+<<link [[Next|Forest]]>><<set $eventskip to 1>><</link>>
 
 :: Forest Pear Pick
 <<effects>>
@@ -2675,7 +2672,6 @@ You shake the <<icon "tending/apple.png">> apple trees, hoping to dislodge some
 You stand on tiptoe, and test the <<icon "tending/pear.png">> pears.
 
 <<if $tendingSuccess>>
-	<<wearProp "pear">>
 	<span class="green">You find some ripe ones.</span>
 	<<tending_pick pear 6 18>>
 <<else>>
@@ -2690,7 +2686,6 @@ You stand on tiptoe, and test the <<icon "tending/pear.png">> pears.
 You search the short trees for saleable <<icon "tending/lemon.png">> lemons.
 
 <<if $tendingSuccess>>
-	<<wearProp "lemon">>
 	<span class="green">You find a bunch, nice and yellow.</span>
 	<<tending_pick lemon 6 18>>
 <<else>>
@@ -2705,7 +2700,6 @@ You search the short trees for saleable <<icon "tending/lemon.png">> lemons.
 
 You search the short trees for saleable <<icon "tending/blood_lemon.gif">> lemons.
 <<if $tendingSuccess>>
-	<<wearProp "blood lemon">>
 	<span class="green">You find a bunch,</span> their yellow skin criss-crossed by red veins.
 	<<tending_pick blood_lemon 6 18>>
 	<<earnFeat "In Red Light">>
@@ -2717,10 +2711,10 @@ You search the short trees for saleable <<icon "tending/blood_lemon.gif">> lemon
 <</if>>
 <br><br>
 
-<<link [[Next|Forest]]>><<handheldon>><<set $eventskip to 1>><</link>>
+<<link [[Next|Forest]]>><<set $eventskip to 1>><</link>>
 
 :: Forest Honey Pick
-<<effects>><<wearProp "honeycomb">>
+<<effects>>
 
 You climb the tree until you're level with the hive. You reach for the <<icon "tending/wild_honeycomb.png">> honeycomb, and snap off a large chunk.
 <<silently>><<tending_pick wild_honeycomb 1 1>><</silently>>
@@ -2732,7 +2726,7 @@ You climb the tree until you're level with the hive. You reach for the <<icon "t
 	Not wanting to tempt fate, you climb back down the tree, prize in hand.
 	<br><br>
 
-	<<link [[Next|Forest]]>><<handheldon>><<set $eventskip to 1>><</link>>
+	<<link [[Next|Forest]]>><<set $eventskip to 1>><</link>>
 	<br>
 <<else>>
 	<span class="red">The buzzing intensifies.</span>
@@ -2741,7 +2735,7 @@ You climb the tree until you're level with the hive. You reach for the <<icon "t
 	You clamber down the tree, prize in hand. Four immense bees emerge from the hive, and shoot after you.
 	<br><br>
 
-	<<link [[Next|Forest Honey Struggle]]>><<handheldon>><<set $struggle_start to 1>><</link>>
+	<<link [[Next|Forest Honey Struggle]]>><<set $struggle_start to 1>><</link>>
 	<br>
 <</if>>
 
@@ -5546,3 +5540,54 @@ You shout for help out the top of your lungs, hoping for the best. Besides some
 	<</if>>
 <</if>>
 
+:: Forest Eden Snare Oral
+
+<<if $phase is 0>> /* Help Eden pull pants down */
+	<<set $edenFluidsCheck to "Eden">>
+	<<if $NPCList[0].penis isnot "none">>
+		Eden releases <<his>> <<print $NPCList[0].penisdesc>> from <<his>> torn pants. It's already hard.
+		<br><br>
+		"You know what I want from you," <<he>> mutters as <<he>> cradles your head.
+		<br><br>
+		You take <<his>> penis into your mouth, licking and sucking while the <<nnpc_title "Eden">> grunts in approval.<<if $player.virginity.oral is true>><<takeVirginity "Eden" "oral">><</if>>
+		<br><br>
+		<<He>> gets bored after a while and grabs you by the back of the head. It gets harder to breathe as <<he>> uses your throat to get off.<<stress 6>><<gstress>>
+		<br><br>
+		After a while Eden finishes, filling your mouth with <<his>> semen until it spills down your face.<<bodyliquid "mouth" "semen">><<bodyliquid "face" "semen">>
+	<<else>>
+		Eden pulls <<his>> pants down as to <<his>> ankles, revealing <<his>> wet pussy.
+		<br><br>
+		"I need this," <<he>> says as <<he>> cradles your head.
+		<br><br>
+		You strain your neck to lick at <<his>> pussy, tasting the wetness as you do. Eden sighs in approval.
+		<br><br>
+		You begin to suckle <<his>> clit, but Eden seems to get impatient and presses your face closer. It's hard to breathe with <<him>> smothering you like this.<<stress 6>><<gstress>>
+		<br><br>
+		After a while, Eden finishes. <<His>> juices cover your mouth as <<he>> pulls away.<<bodyliquid "mouth" "goo">>
+	<</if>>
+	You're dizzy now from the blood rushing to your head and the lack of air. "Good <<girl>>."
+	<br><br>
+	Eden takes a moment to fix <<himself>> up before returning to you. This time, <<he>> lets you down from the snare.
+<<else>> /* Push Eden away */
+	"I don't want to," you say as you push at Eden's thighs.
+	<br><br>
+	<<if C.npc.Eden.love gte 150>>
+		<<He>> considers your words for a moment before fixing <<his>> pants. A scowl remains on <<his>> face.
+		<br><br>
+		"You better make it up to me later," Eden huffs as <<he>> undoes the bindings. <<He>> isn't gentle as <<he>> helps you down.<<pain 4>><<gpain>>
+	<<else>>
+		<<set $edenFluidsCheck to "Eden">>
+		"Of course you do; you don't need to lie to me." Your protests don't seem to matter. The <<nnpc_title "Eden">> continues to reveal <<himself>> to you.
+		<br><br>
+		Eden tries to force <<= $NPCList[0].penis isnot "none" ? "<<his>> cock into your mouth" : " your mouth onto <<his>> pussy">> even as you try to writhe away. <<He>> gets fed up after one too many times and slaps your face.<<pain 4>><<gpain>>
+		<br><br>
+		You cry out before realising your mistake. Eden forces <<his>> <<= $NPCList[0].penis isnot "none" ? "cock" : "wet cunt">> into your mouth. <<He>> is not gentle, <<= $NPCList[0].penis isnot "none" ? "making" : "smushing your face as close as can be. It makes">> it hard to keep breathing.<<stress 6>><<gstress>><<if $NPCList[0].penis isnot "none" and $player.virginity.oral is true>><<takeVirginity "Eden" "oral">><</if>>
+		<br><br>
+		It takes a while for Eden to finish. By then, you've almost passed out. Luckily, <<he>> cums before you can. <<= $NPCList[0].penis isnot "none" ? "The semen drips out of the corners of your mouth and onto" : "<<His>> juices cover">> your face.<<if $NPCList[0].penis isnot "none">><<bodyliquid "mouth" "semen">><<bodyliquid "face" "semen">><<else>><<bodyliquid "mouth" "goo">><</if>>
+		<br><br>
+		Eden takes a moment to fix <<himself>> up. When <<he>> does return, <<he>> isn't gentle when <<he>> releases you.<<pain 2>><<gpain>>
+	<</if>>
+<</if>>
+<br><br>
+
+<<forestCabinReturnLinks>>
\ No newline at end of file
diff --git a/game/overworld-forest/loc-forest/main.twee b/game/overworld-forest/loc-forest/main.twee
index 2473174630776efba7167b86e033cdb5a9c53e59..3722529cbcb4639db2e6956344af5dfe75b25b85 100644
--- a/game/overworld-forest/loc-forest/main.twee
+++ b/game/overworld-forest/loc-forest/main.twee
@@ -522,9 +522,8 @@
 
 	<<clotheson>>
 	<<endcombat>>
-	<<wearProp "black box">>
 
-	<<link [[Next|Forest]]>><<handheldon>><</link>>
+	<<link [[Next|Forest]]>><</link>>
 
 <<elseif $enemyhealth lte 0>>
 	The pair recoil in pain and drop the box on the grass. <<tearful>> you seize it and flee the clearing, chased by their angry shouts.
@@ -533,9 +532,8 @@
 
 	<<clotheson>>
 	<<endcombat>>
-	<<wearProp "black box">>
 
-	<<link [[Next|Forest]]>><<handheldon>><</link>>
+	<<link [[Next|Forest]]>><</link>>
 <</if>>
 
 :: Forest Science Shroom
@@ -548,7 +546,6 @@
 <</if>>
 
 <<if $phase is 0>>
-	<<wearProp "mushroom">>
 	<<set $scienceshroomheart += 1>>
 	You kneel and gather the mushrooms. They smell refreshing.
 	<<ltiredness>><<tiredness -6>>
@@ -557,7 +554,6 @@
 	<span class="gold">You can add the mushrooms you found to your project in your room or the school library.</span>
 	<br><br>
 <<else>>
-	<<wearProp "wolfshroom">>
 	<<set $scienceshroomwolf += 1>>
 	You kneel and gather the mushrooms. They smell sweet.
 	<<garousal>><<arousal 600>>
@@ -567,7 +563,7 @@
 	<br><br>
 <</if>>
 
-<<link [[Next|Forest]]>><<handheldon>><<set $eventskip to 1>><</link>>
+<<link [[Next|Forest]]>><<set $eventskip to 1>><</link>>
 <br>
 
 :: Forest Brook
diff --git a/game/overworld-forest/loc-forest/widgets.twee b/game/overworld-forest/loc-forest/widgets.twee
index ee1608e58372cd3c5e479af246dcefad6c0b885e..6fc4d291826c8eab8e9dbd37fb12ce0333e5813c 100644
--- a/game/overworld-forest/loc-forest/widgets.twee
+++ b/game/overworld-forest/loc-forest/widgets.twee
@@ -791,17 +791,15 @@
 <</widget>>
 
 <<widget "forestdagger">>
-	<<wearProp "dagger">>
 	You tread on something hard. You kneel and pull it from the forest detritus. It's an ancient dagger, worn beyond use. A collector might pay for this.
 	<br><br>
 
 	<<set $antiquemoney += 40>><<museumAntiqueStatus "antiqueforestdagger" "found">>
-	<<link [[Next|Forest]]>><<handheldon>><<set $eventskip to 1>><</link>>
+	<<link [[Next|Forest]]>><<set $eventskip to 1>><</link>>
 	<br>
 <</widget>>
 
 <<widget "forestgem">>
-	<<wearProp "forest gem">>
 	Something glints at the base of a tree stump. You tug it free. A calmness falls over you.
 	<<lstress>><<stress -3>>
 	<br><br>
@@ -810,17 +808,16 @@
 	<br><br>
 
 	<<set $antiquemoney += 100>><<museumAntiqueStatus "antiqueforestgem" "found">>
-	<<link [[Next|Forest]]>><<handheldon>><<set $eventskip to 1>><</link>>
+	<<link [[Next|Forest]]>><<set $eventskip to 1>><</link>>
 	<br>
 <</widget>>
 
 <<widget "forestarrow">>
-	<<wearProp "arrow">>
 	You spot a decaying metal shard amongst the fallen bark at your feet. It's an arrowhead. A collector might pay for it.
 	<br><br>
 
 	<<set $antiquemoney += 20>><<museumAntiqueStatus "antiqueforestarrow" "found">>
-	<<link [[Next|Forest]]>><<handheldon>><<set $eventskip to 1>><</link>>
+	<<link [[Next|Forest]]>><<set $eventskip to 1>><</link>>
 	<br>
 <</widget>>
 
@@ -983,7 +980,21 @@
 						You reach up to untie yourself, and spot someone watching. It's Eden.
 						<br><br>
 
-						"Those traps are meant for animals," <<he>> says. "You should watch where you're going." <<He>> takes your weight in <<his>> arms while <<he>> unties you, then eases you to the ground.
+						"Those traps are meant for animals," <<he>> says. "You should watch where you're going." <<He>> takes your weight in <<his>> arms while <<he>>
+
+						<<if C.npc.Eden.lust gte 60>>
+							begins to untie you. <<He>> pauses before <<he>> does.
+							<br><br>
+							“We should have some fun first, though, don’t you agree?” <<He>> smiles down at you as <<he>> unzips <<his>> pants.
+							<br><br>
+
+							<<link [[Help Eden pull <<his>> pants down|Forest Eden Snare Oral]]>><<set $phase to 0>><<npcincr Eden love 1>><<npcincr Eden dom 1>><<sub 1>><</link>><<glove>><<gdom>>
+							<br>
+							<<link [[Push Eden away|Forest Eden Snare Oral]]>><<set $phase to 1>><<npcincr Eden love -1>><<npcincr Eden dom -1>><<def 1>><</link>><<llove>><<ldom>>
+							<<exit>>
+						<<else>>
+							unties you, then eases you to the ground.
+						<</if>>
 					<</if>>
 				<<else>>
 					<<npc Eden>><<person1>>
@@ -1599,7 +1610,6 @@
 				<<set $_max to (_args[0] + 4)>>
 			<</if>>
 		<</if>>
-		<<wearProp "bird egg">>
 		<span class="green"><<tending_pick bird_egg $_min $_max>></span>
 	<<else>>
 		<span class="red">There's no intact eggs left.</span>
diff --git a/game/overworld-forest/loc-lake/main.twee b/game/overworld-forest/loc-lake/main.twee
index 5d35f210567d5e10fe7c91cf3b95c492fc4061b5..19faa3eb830112cd911ef112a65eada978b77a92 100644
--- a/game/overworld-forest/loc-lake/main.twee
+++ b/game/overworld-forest/loc-lake/main.twee
@@ -376,7 +376,7 @@ You ask.
 					"Never guessed this would be your <<girlfriend>>, Ro." Robin pushes Wren's hand away. The emotion on <<his>> face is hard to read, but you think you catch a mixture of disgust and 'help me'.
 				<<else>>
 					"Never guessed this would be the friend you were telling me all about, Ro." Robin pushes Wren's hand away and takes a step out of reach. The emotion on <<his>> face is hard to read.
-				<</if>>
+				<</if>>				
 			<<else>>
 				<br><br>
 				<<if $robinromance is 1>>
@@ -1488,7 +1488,6 @@ You don't catch the rest as the two <<if $location is "school">>round a corner<<
 <<if playerAwareTheyArePregnant()>>
 	You sit and chat under the moonlight, though you refrain from any drinks.
 <<else>>
-	<<wearProp "solo cup">>
 	You sit, chat, and drink under the moonlight.
 <</if>>
 The others try to entertain themselves with ghost stories.
@@ -1500,15 +1499,16 @@ The others try to entertain themselves with ghost stories.
 	<<case 2>>A <<persons>> story leaves the whole party howling with ridicule. <<He>> washes down the shame with another beer.
 	<<case 1>>One drives a <<person>> to tears, to the amusement of the group. <<He>> sniffles and retreats to the woods, drawing further laughter.
 <</switch>>
+<<endevent>>
 <br><br>
 
 <<if $syndromewolves is 1 and !$halloweenWolves>><<set $halloweenWolves to 1>>
 	The party is suddenly silenced by a cry from the woods. A howl, followed by cursing, then a pained yelp.
 	<br><br>
 
-	<<investigateicon>><<link [[Investigate|Lake Halloween Wolves Investigate]]>><<endevent>><</link>>
+	<<investigateicon>><<link [[Investigate|Lake Halloween Wolves Investigate]]>><</link>>
 	<br>
-	<<ind>><<link [[Stay seated|Lake Halloween Wolves Ignore]]>><<endevent>><</link>>
+	<<ind>><<link [[Stay seated|Lake Halloween Wolves Ignore]]>><</link>>
 	<br>
 <<elseif Time.monthDay isnot 31>>
 	It's getting late, and the shadows of the forest are lengthening. People are preparing to return to town. No one wants to be left to travel alone.
@@ -1519,26 +1519,26 @@ The others try to entertain themselves with ghost stories.
 		<span class="red">The slime in your ear refuses to allow you to leave with <<underwearTypeText>> on.</span>
 		<<set _earSlimeText to true>>
 	<<elseif _storedClothes.length>>
-		<<ind>><<link [[Get changed, then go with them (0:40)|Lake Return Journey]]>><<endevent>><<storeload "lakeshore">><<set $foresthunt to 0>><<pass 30>><</link>>
+		<<ind>><<link [[Get changed, then go with them (0:40)|Lake Return Journey]]>><<storeload "lakeshore">><<set $foresthunt to 0>><<pass 30>><</link>>
 		<br>
 	<</if>>
 	<<if $earSlime.forcedCommando isnot undefined and !$worn.under_lower.type.includes("naked")>>
 		<<if _earSlimeText>><span class="red">The slime in your ear refuses to allow you to leave with <<underwearTypeText>> on.</span><</if>>
 	<<elseif $exposed lte 0>>
-		<<ind>><<link [[Go with them (0:30)|Lake Return Journey]]>><<endevent>><<set $foresthunt to 0>><<pass 30>><</link>>
+		<<ind>><<link [[Go with them (0:30)|Lake Return Journey]]>><<set $foresthunt to 0>><<pass 30>><</link>>
 		<br>
 	<</if>>
 
-	<<ind>><<link [[Stay|Lake Shore]]>><<endevent>><</link>>
+	<<ind>><<link [[Stay|Lake Shore]]>><</link>>
 	<br>
 <<else>>
 	<<if playerAwareTheyArePregnant()>>
-		<<socialiseicon "party">><<link [[Keep partying (0:10)|Lake Halloween Party]]>><<endevent>><<set $phase to 1>><<stress -4>><<status 1>><<pass 10>><</link>><<lstress>><<gcool>>
+		<<socialiseicon "party">><<link [[Keep partying (0:10)|Lake Halloween Party]]>><<set $phase to 1>><<stress -4>><<status 1>><<pass 10>><</link>><<lstress>><<gcool>>
 	<<else>>
-		<<socialiseicon "party">><<link [[Keep partying (0:10)|Lake Halloween Party]]>><<endevent>><<set $phase to 1>><<stress -4>><<alcohol 20>><<status 1>><<pass 10>><</link>><<lstress>><<gcool>><<galcohol>>
+		<<socialiseicon "party">><<link [[Keep partying (0:10)|Lake Halloween Party]]>><<set $phase to 1>><<stress -4>><<alcohol 20>><<status 1>><<pass 10>><</link>><<lstress>><<gcool>><<galcohol>>
 	<</if>>
 	<br>
-	<<getouticon>><<link [[Leave|Lake Shore]]>><<endevent>><<set $phase to 0>><</link>>
+	<<getouticon>><<link [[Leave|Lake Shore]]>><<set $phase to 0>><</link>>
 	<br>
 <</if>>
 
diff --git a/game/overworld-forest/loc-lake/underwater.twee b/game/overworld-forest/loc-lake/underwater.twee
index 88a9482abdc8e6f204acd7c0f775c3ca8b5a15c0..93878d7789fedf96e5067cde67ace8f4060f5ef9 100644
--- a/game/overworld-forest/loc-lake/underwater.twee
+++ b/game/overworld-forest/loc-lake/underwater.twee
@@ -270,10 +270,10 @@ You are deep in the submerged ruin beneath the lake. Pots of different sizes fil
 :: Lake Ruin Door
 
 <<set $outside to 0>><<set $location to "lake_ruin">><<underwater>><<effects>><<lakeeffects>>
-<<set $lakeruinkey to 2>><<wearProp "bronze key">>
+<<set $lakeruinkey to 2>>
 You hear the ancient mechanism creak and the door groans open. Beyond is a plinth, stood alone in a rubble-strewn room. Atop it sits an ivory necklace. It's studded with blue jewels.
 <br><br>
-<<swimicon>><<link [[Swim inside|Lake Ruin Plinth]]>><<handheldon>><</link>>
+<<swimicon>><<link [[Swim inside|Lake Ruin Plinth]]>><</link>>
 <br>
 
 :: Lake Ruin Sit
@@ -416,7 +416,7 @@ You are deep in the lake ruin, in a small room with a plinth.
 <</if>>
 <<if _leave>>
 	<<if $museumAntiques.antiques.antiqueivorynecklace is "notFound">>
-		<<icon "clothes/ivory_necklace.png">><<link [[Take the necklace|Lake Ruin Ivory]]>><<set $antiquemoney += 2000>><<museumAntiqueStatus "antiqueivorynecklace" "found">><<set $necklaceThief to "player">><</link>>
+		<<ind>><<link [[Take the necklace|Lake Ruin Ivory]]>><<set $antiquemoney += 2000>><<museumAntiqueStatus "antiqueivorynecklace" "found">><<set $necklaceThief to "player">><</link>>
 		<br>
 	<</if>>
 	<<swimicon "back">><<link [[Leave|Lake Ruin Deep]]>><<set $phase to 0>><</link>>
@@ -424,7 +424,7 @@ You are deep in the lake ruin, in a small room with a plinth.
 <</if>>
 
 :: Lake Ruin Ivory
-<<effects>><<wearProp "ivory necklace">>
+<<effects>>
 You lift the necklace from the plinth. The craftsmanship is masterful, and you get the feeling that this meant a lot to someone.
 <br><br>
 <<if C.npc["Ivory Wraith"].init is 1>>
@@ -452,7 +452,7 @@ You lift the necklace from the plinth. The craftsmanship is masterful, and you g
 	You can see your reflection in the blue gemstones. This will fetch a high price.
 <</if>>
 <br><br>
-<<link [[Next|Lake Ruin Deep]]>><<handheldon>><</link>>
+<<link [[Next|Lake Ruin Deep]]>><</link>>
 <br>
 
 :: Lake Ruin Deep Offer
@@ -569,30 +569,29 @@ Deciding you've had enough, you attempt to unravel yourself and leave the room.
 	<<foresthunt>>
 <<else>>
 	<<if $rng gte 81>>
-		<<wearProp "ivory box">>
 		You reach inside one of the pots, and find a small ivory box. It's sealed by a bronze lock.
 		<br><br>
 		<<if $historytrait gte 4>>
 			The box itself is very old. It must be valuable.
 			<br><br>
-			<<ind>><<link [[Just take the box|Lake Ruin Deep]]>><<set $antiquemoney += 20>><<museumAntiqueStatus "antiquebox" "found">><<handheldon>><</link>>
+			<<ind>><<link [[Just take the box|Lake Ruin Deep]]>><<set $antiquemoney += 20>><<museumAntiqueStatus "antiquebox" "found">><</link>>
 			<br>
 		<</if>>
 		<<set $skulduggerydifficulty to 300>>
-		<<templeicon "chastity release">><<link [[Open it|Lake Ruin Box]]>><<wateraction>><<handheldon>><</link>><<skulduggerydifficulty>><<loxygen>>
+		<<templeicon "chastity release">><<link [[Open it|Lake Ruin Box]]>><<wateraction>><</link>><<skulduggerydifficulty>><<loxygen>>
 		<br>
 		<<if $lakeruinkey is 1>>
-			<<lakeicon "key">><<link [[Use bronze key|Lake Ruin Door]]>><<wateraction>><<handheldon>><</link>><<loxygen>>
+			<<lakeicon "key">><<link [[Use bronze key|Lake Ruin Door]]>><<wateraction>><</link>><<loxygen>>
 			<br>
 		<</if>>
-		<<lakeicon "pots">><<link [[Search pots|Lake Pots]]>><<wateraction>><<handheldon>><</link>><<loxygen>>
+		<<lakeicon "pots">><<link [[Search pots|Lake Pots]]>><<wateraction>><</link>><<loxygen>>
 		<br>
 		<<if $lakeruinkey is 2>>
-			<<swimicon>><<link [[Swim inside plinth room|Lake Ruin Plinth]]>><<wateraction>><<handheldon>><</link>><<loxygen>>
+			<<swimicon>><<link [[Swim inside plinth room|Lake Ruin Plinth]]>><<wateraction>><</link>><<loxygen>>
 			<br>
 		<</if>>
 		<br>
-		<<swimicon "back">><<link [[Swim towards exit|Lake Ruin]]>><<wateraction>><<handheldon>><</link>><<loxygen>>
+		<<swimicon "back">><<link [[Swim towards exit|Lake Ruin]]>><<wateraction>><</link>><<loxygen>>
 		<br>
 	<<elseif $rng gte 78 and $swarmdisable is "f">>
 		You reach inside one of the pots. Swarms of small fish surge out, surrounding you.
@@ -617,20 +616,19 @@ Deciding you've had enough, you attempt to unravel yourself and leave the room.
 		<<swimicon "back">><<link [[Swim towards exit|Lake Ruin]]>><<wateraction>><</link>><<loxygen>>
 		<br>
 	<<elseif $rng gte 41 and $lakeruinkey is undefined>>
-		<<wearProp "bronze key">>
 		You reach inside one of the pots. You find a decaying bronze key.
 		<br><br>
 		<<set $lakeruinkey to 1>>
-		<<lakeicon "key">><<link [[Open door with bronze key|Lake Ruin Door]]>><<wateraction>><<handheldon>><</link>><<loxygen>>
+		<<lakeicon "key">><<link [[Open door with bronze key|Lake Ruin Door]]>><<wateraction>><</link>><<loxygen>>
 		<br>
-		<<lakeicon "pots">><<link [[Search pots|Lake Pots]]>><<handheldon>><<wateraction>><</link>><<loxygen>>
+		<<lakeicon "pots">><<link [[Search pots|Lake Pots]]>><<wateraction>><</link>><<loxygen>>
 		<br>
 		<<if $lakeruinkey is 2>>
-			<<swimicon>><<link [[Swim inside plinth room|Lake Ruin Plinth]]>><<wateraction>><<handheldon>><</link>><<loxygen>>
+			<<swimicon>><<link [[Swim inside plinth room|Lake Ruin Plinth]]>><<wateraction>><</link>><<loxygen>>
 			<br>
 		<</if>>
 		<br>
-		<<swimicon "back">><<link [[Swim towards exit|Lake Ruin]]>><<wateraction>><<handheldon>><</link>><<loxygen>>
+		<<swimicon "back">><<link [[Swim towards exit|Lake Ruin]]>><<wateraction>><</link>><<loxygen>>
 		<br>
 	<<else>>
 		<<rng>>
@@ -734,19 +732,16 @@ Deciding you've had enough, you attempt to unravel yourself and leave the room.
 	<<skulduggeryuse>>
 	<<if $rng gte 95>>
 		<<if random(0,100) gte 80>>
-			<<wearProp "chastity">>
 			You find a gold chastity belt.
 			<<set $antiquemoney += 2000>><<museumAntiqueStatus "antiquegoldchastitybelt" "found">>
 			<<set _goldchastity to true>>
 			<br><br>
 		<<else>>
-			<<wearProp "gold necklace">>
 			You find a gold necklace.
 			<<set $antiquemoney += 500>><<museumAntiqueStatus "antiquegoldnecklace" "found">>
 			<br><br>
 		<</if>>
 	<<else>>
-		<<wearProp "silver ring">>
 		You find a silver ring.
 		<<set $antiquemoney += 30>><<museumAntiqueStatus "antiquesilverring" "found">>
 		<br><br>
@@ -758,34 +753,33 @@ Deciding you've had enough, you attempt to unravel yourself and leave the room.
 	<</if>>
 
 	<<if $worn.genitals.name is "naked" and _goldchastity and playerBellySize() lte 7>>
-		<<templeicon "chastity">><<link [[Wear it|Lake Gold Chastity Belt]]>><<wateraction>><<handheldon>><</link>><<loxygen>>
+		<<templeicon "chastity">><<link [[Wear it|Lake Gold Chastity Belt]]>><<wateraction>><</link>><<loxygen>>
 		<br>
 	<</if>>
-	<<lakeicon "pots">><<link [[Search pots|Lake Pots]]>><<handheldon>>
+	<<lakeicon "pots">><<link [[Search pots|Lake Pots]]>>
 	<<if _goldchastity>>
 		<<set $gold_chastity_held to true>>
 	<</if>>
 	<<wateraction>><</link>><<loxygen>>
 	<br>
-	<<swimicon "back">><<link [[Swim towards exit|Lake Ruin]]>><<handheldon>>
+	<<swimicon "back">><<link [[Swim towards exit|Lake Ruin]]>>
 	<<if _goldchastity>>
 		<<set $gold_chastity_held to true>>
 	<</if>>
 	<<wateraction>><</link>><<loxygen>>
 	<br>
 <<else>>
-	<<wearProp "ivory box">>
 	You fail to pick the lock.
 	<br><br>
 	<<if $historytrait gte 4>>
-		<<ind>><<link [[Just take the box|Lake Ruin Deep]]>><<handheldon>><<set $antiquemoney += 20>><<museumAntiqueStatus "antiquebox" "found">><</link>>
+		<<ind>><<link [[Just take the box|Lake Ruin Deep]]>><<set $antiquemoney += 20>><<museumAntiqueStatus "antiquebox" "found">><</link>>
 		<br>
 	<</if>>
-	<<ind>><<link [[Try again|Lake Ruin Box]]>><<<handheldon>><<wateraction>><</link>><<skulduggerydifficulty>><<loxygen>>
+	<<ind>><<link [[Try again|Lake Ruin Box]]>><<wateraction>><</link>><<skulduggerydifficulty>><<loxygen>>
 	<br>
-	<<swimicon "back">><<link [[Swim towards exit|Lake Ruin]]>><<handheldon>><<wateraction>><</link>><<loxygen>>
+	<<swimicon "back">><<link [[Swim towards exit|Lake Ruin]]>><<wateraction>><</link>><<loxygen>>
 	<br>
-	<<lakeicon "pots">><<handheldon>><<link [[Search pots|Lake Pots]]>><<wateraction>><</link>><<loxygen>>
+	<<lakeicon "pots">><<link [[Search pots|Lake Pots]]>><<wateraction>><</link>><<loxygen>>
 	<br>
 <</if>>
 
@@ -793,7 +787,6 @@ Deciding you've had enough, you attempt to unravel yourself and leave the room.
 
 <<set $outside to 0>><<set $location to "lake_ruin">><<underwater>><<effects>><<lakeeffects>>
 <<set $antiquemoney -= 2000>>
-<<wearProp "chastity">>
 
 You examine the gold chastity belt in your hands. You think you see a faint glow emanating from it. You wonder what it felt like having something so beautiful protecting your <<genitals 1>>.
 <br><br>
@@ -804,9 +797,9 @@ You feel an urge to try it on. You wrap it around your waist. As it clicks shut
 <<earnFeat "Locked In Gold">>
 <<set $worn.genitals.origin to "Underwater Temple">>
 
-<<lakeicon "pots">><<link [[Search pots|Lake Pots]]>><<handheldon>><<wateraction>><<clotheson>><</link>><<loxygen>>
+<<lakeicon "pots">><<link [[Search pots|Lake Pots]]>><<wateraction>><<clotheson>><</link>><<loxygen>>
 <br>
-<<swimicon "back">><<link [[Swim towards exit|Lake Ruin]]>><<handheldon>><<wateraction>><<clotheson>><</link>><<loxygen>>
+<<swimicon "back">><<link [[Swim towards exit|Lake Ruin]]>><<wateraction>><<clotheson>><</link>><<loxygen>>
 <br>
 
 :: Lake Lichen
diff --git a/game/overworld-forest/loc-wolfpack/hunts.twee b/game/overworld-forest/loc-wolfpack/hunts.twee
index 34f76ba47a60eb52d84c39784e80f4195466de4c..38ad764b050f9fb851e21dcbc0e1939aa702308b 100644
--- a/game/overworld-forest/loc-wolfpack/hunts.twee
+++ b/game/overworld-forest/loc-wolfpack/hunts.twee
@@ -426,7 +426,6 @@ A frontal attack would be very risky.
 	<<gferocity>>
 	<br><br>
 <<elseif $phase is 1>><<set $wolfpackshroom to "none">>
-	<<wearProp "pinkshroom">>
 	You crumble the pink mushroom onto the Black Wolf's food. <<bHe>> spots you and growls, but relents when <<bhe>> sees you carry nothing away. <<bHe>> returns to <<bhis>> place and continues eating. Over the next few hours <<bhe>> becomes lethargic. The other <<wolf_cave_plural>> notice and try their luck at parts of the deer they wouldn't normally be allowed.
 	<<lferocity>><<set $wolfpackpoisoned to 1>>
 	<br><br>
@@ -435,7 +434,6 @@ A frontal attack would be very risky.
 You lie on the grass with your head resting on a <<beasttype>>. All that running is tiring. You close your eyes and sleep. You're awoken when the <<beasttype>> you were resting on stands up.
 <br><br>
 <<endevent>>
-<<if $phase is 0>><<wearProp "wolfshroom">><<else>><<wearProp "pinkshroom">><</if>>
 
 <<set $huntstate to "success">>
 <<wolfhuntevents>>
diff --git a/game/overworld-forest/loc-wolfpack/main.twee b/game/overworld-forest/loc-wolfpack/main.twee
index 9686694e94b0c50e146492f4152980afd312acf1..2f185fcfbc7bb252b4354e8d16e1134c308de469 100644
--- a/game/overworld-forest/loc-wolfpack/main.twee
+++ b/game/overworld-forest/loc-wolfpack/main.twee
@@ -326,7 +326,7 @@ The <<beasttype>> huffs, and prowls from <<bhis>> hiding place, towards the play
 
 <br>
 
-<<getouticon>><<link [[Leave|Wolf Cave Clearing]]>><<handheldon>><</link>>
+<<getouticon>><<link [[Leave|Wolf Cave Clearing]]>><</link>>
 <br>
 
 <<unset $event_trigger>>
diff --git a/game/overworld-forest/loc-wolfpack/widgets.twee b/game/overworld-forest/loc-wolfpack/widgets.twee
index 79456ed179eb92a2ae1a285df0f1c3081e7e7206..b0914190bcdd7c1e99d051272eb61c0d13927dbd 100644
--- a/game/overworld-forest/loc-wolfpack/widgets.twee
+++ b/game/overworld-forest/loc-wolfpack/widgets.twee
@@ -345,7 +345,7 @@
 		<<lferocity>><<gharmony>>
 		<br><br>
 
-		<<link [[Next|Wolf Cave]]>><<handheldon>><<unset $blackWolfNotHunting>><</link>>
+		<<link [[Next|Wolf Cave]]>><<unset $blackWolfNotHunting>><</link>>
 		<br>
 	<<elseif $huntstate is "ongoing" and (Weather.dayState is "dawn" or Weather.dayState is "day")>>
 		<<set $huntstate to "finished">>
@@ -354,14 +354,14 @@
 		<<gferocity>><<lharmony>>
 		<br><br>
 
-		<<link [[Next|Wolf Cave]]>><<handheldon>><<unset $blackWolfNotHunting>><</link>>
+		<<link [[Next|Wolf Cave]]>><<unset $blackWolfNotHunting>><</link>>
 		<br>
 	<<elseif $huntstate is "failure">>
 		<<set $huntstate to "finished">>
 		<<if $wolfstate is "hunt">><<set $wolfstate to "cave">><</if>>
 		<<gferocity>><<lharmony>>
 		<br><br>
-		<<link [[Next|Wolf Cave]]>><<handheldon>><<unset $blackWolfNotHunting>><</link>>
+		<<link [[Next|Wolf Cave]]>><<unset $blackWolfNotHunting>><</link>>
 		<br>
 	<<else>>
 		<<rng>>
diff --git a/game/overworld-plains/loc-bird/hunts.twee b/game/overworld-plains/loc-bird/hunts.twee
index 075ee6de4d946ead30b6751c2aeca4fe2b20e411..ea130b7e5805cc5ac8b709fe6dca65674ccf1a32 100644
--- a/game/overworld-plains/loc-bird/hunts.twee
+++ b/game/overworld-plains/loc-bird/hunts.twee
@@ -642,7 +642,7 @@ What will you hunt for?
 		<<flight_hunt_options>>
 	<<else>>
 		<<if $daily.huntRemyCamp>>
-			You're above
+			You're above 
 			<<if $remySeen?.includesAny("farm","livestock","manor") or $livestock_intro isnot undefined>>
 				an encampment belonging to Remy's goons.
 			<<else>>
@@ -1180,14 +1180,12 @@ What will you hunt for?
 			<<flight_hunt_return>>
 		<</if>>
 	<<case 4>>
-		<<wearProp "rag">>
 		You take random pieces of cloth, hoping to be able to use them later.
 		<br><br>
 
 		<<flight_hunt_get "fabric" random(1, 2)>>
 		<<flight_hunt_return>>
 	<<case 5>>
-		<<wearProp "rag">>
 		<<if $housekeepingSuccess>>
 			You're able to find more usable pieces of cloth, a few sturdy ones catching your eye. You take them with you.
 			<<flight_hunt_get "fabric" 3>>
@@ -1370,7 +1368,7 @@ What will you hunt for?
 				<br>
 			<</if>>
 			<<if $farm_stage gte 10>>
-				<<link [[Hurl net|Bird Hunt Lurker Hurl Net]]>><</link>><<wearProp "net">><<dancedifficulty 1 1200>><<athleticsdifficulty 0 1200>>
+				<<link [[Hurl net|Bird Hunt Lurker Hurl Net]]>><</link>><<dancedifficulty 1 1200>><<athleticsdifficulty 0 1200>>
 				<br>
 			<</if>>
 		<</if>>
@@ -1475,16 +1473,16 @@ What will you hunt for?
 	You return your attention to the branches. Only two of them look suitable for use.
 	<br><br>
 
-	<<link [[Take one branch|Bird Hunt Sticks 2]]>><<handheldon>><<set $phase to 2>><</link>>
+	<<link [[Take one branch|Bird Hunt Sticks 2]]>><<set $phase to 2>><</link>>
 	<br>
-	<<link [[Try to take two|Bird Hunt Sticks 2]]>><<handheldon>><<set $phase to 3>><</link>><<athleticsdifficulty _athlDiffMin _athlDiffMax>>
+	<<link [[Try to take two|Bird Hunt Sticks 2]]>><<set $phase to 3>><</link>><<athleticsdifficulty _athlDiffMin _athlDiffMax>>
 	<br>
 <<else>>
 	You try to hurl the net, <span class="red">but it's on you too fast,</span> latching onto your face. You can't see. You try to pull the creature off, but you struggle to get a grip on its slimy skin. You keep your lips sealed as something presses against your mouth.<<gnet>>
 	<<prof net 1>>
 	<br><br>
 
-	<<link [[Next|Bird Hunt Struggle]]>><<handheldon>><<set $struggle_start to 1>><</link>>
+	<<link [[Next|Bird Hunt Struggle]]>><<set $struggle_start to 1>><</link>>
 	<br>
 <</if>>
 
@@ -6075,7 +6073,6 @@ Your stomach rises as you plummet. You try to get your bearings, and your attack
 	<<elseif $tendingSuccess>>
 		It only takes you a few moments to realise that <<your_bird_text>> is hurt. Badly. <<bHes 1>> putting on a tough front, but <span class="red"><<bhes 1>> covered in deep cuts, and one of <<bhis 1>> wings had some flesh torn away.</span> <<bHis>> feathers are slowly being matted by fresh blood.
 		<<if $bird.hunts.loot.fabric gte 1>>
-			<<wearProp "rag">>
 			You waste no time, using some of the fabric you have on-hand to patch up the worst of <<bhis 1>> wounds. <<bHe 1>> winces in pain, but nuzzles you affectionately when you're done. <<if $monster is 1>>"Thank you, <<wife>>. Will be fine, just need rest."<</if>> <span class="green"><<bHe 1>>'ll recover faster thanks to your swift care.</span> <<npcincr "Great Hawk" love 3>><<npcincr "Great Hawk" dom -3>><<gglove>><<lldom>><<set $bird.injured -= 5>><<flight_hunt_remove "fabric" 1>>
 		<<elseif $bird.hunts.loot.leaves gte 2>>
 			You waste no time, using some of the leaves you have on-hand to patch up the worst of <<bhis 1>> wounds. <<bHe 1>> winces in pain, but nuzzles you affectionately when you're done. <<if $monster is 1>>"Thank you, <<wife>>. Will be fine, just need rest."<</if>> <span class="green"><<bHe 1>>'ll recover faster thanks to your swift care.</span> <<npcincr "Great Hawk" love 3>><<npcincr "Great Hawk" dom -3>><<gglove>><<lldom>><<set $bird.injured -= 5>><<flight_hunt_remove "leaves" 2>>
diff --git a/game/overworld-plains/loc-bird/main.twee b/game/overworld-plains/loc-bird/main.twee
index 47a4626766bf05f55d0b7b58602e4ea393e41240..7052cd42c887e5886c70686f320476b99966329b 100644
--- a/game/overworld-plains/loc-bird/main.twee
+++ b/game/overworld-plains/loc-bird/main.twee
@@ -1285,7 +1285,6 @@ You are inside <<if $syndromebird is 1>>your tower<<else>>a ruined tower<</if>>,
 	<<else>>
 		<<bHe>> holds a torn piece of fabric in <<bhis>> beak. It looks like <<bhe>> was trying to put it in your wardrobe. <<bHe>> drops it at your feet apologetically before hopping away.
 	<</if>>
-	<<wearProp "rag">>
 	<<set $bird.materials.fabric ++>>
 	<br><br>
 
@@ -1867,14 +1866,13 @@ You rifle through the wood and detritus, searching for anything that could help
 <</if>>
 
 <<if $rng gte 66>>
-	<<wearProp "rag">>
 	You find a torn but strong piece of fabric. It could be used for a rope. <<set $bird.materials.fabric += 1>><<gfabric>>
 <<else>>
 	You don't find anything.
 <</if>>
 <br><br>
 
-<<link [[Next|Bird Tower]]>><<handheldon>><</link>>
+<<link [[Next|Bird Tower]]>><</link>>
 <br>
 
 :: Bird Tower Base Descend
@@ -1968,71 +1966,67 @@ You squeeze through the slit, and tumble to the ground outside. You're in the ca
 The wind snatches your hair as you peer over the edge. It's a long way down.
 <br><br>
 
-You have <span class="gold"><<number $bird.materials.fabric>></span><<birdicon "fabric">> <<= $bird.materials.fabric is 1 ? "piece" : "pieces">> of fabric.
+You have <<number $bird.materials.fabric>> spare material<<if $bird.materials.fabric gt 1>>s<</if>>.
 <<if $syndromebird isnot 1>>
 	You could tear up your clothes for more.
 <</if>>
 <br>
 
 <<if $syndromebird isnot 1>>
-	<<if setup.clothes_all_slots.some(slot => $worn[slot].name !== "naked")>>
-		Tear up your:
-		<br>
-	<</if>>
 	<<if $worn.upper.name isnot "naked" and $worn.upper.cursed isnot 1>>
-		<<clothingicon $worn.upper "upper">><<link [[$worn.upper.name.toUpperFirst()|Bird Tower Rope Clothes]]>><<set $bird.materials.fabric += 1>><<set $fabricColour to $worn.upper.colour>><<upperruined>><</link>>
+		Tear up your <<link [[$worn.upper.name|Bird Tower Rope Clothes]]>><<set $bird.materials.fabric += 1>><<upperruined>><</link>>
 		<br>
 	<</if>>
 	<<if $worn.lower.name isnot "naked" and $worn.lower.cursed isnot 1>>
-		<<clothingicon $worn.lower "lower">><<link [[$worn.lower.name.toUpperFirst()|Bird Tower Rope Clothes]]>><<set $fabricColour to $worn.lower.colour>><<set $bird.materials.fabric += 1>><<lowerruined>><</link>>
+		Tear up your <<link [[$worn.lower.name|Bird Tower Rope Clothes]]>><<set $bird.materials.fabric += 1>><<lowerruined>><</link>>
 		<br>
 	<</if>>
 	<<if $worn.under_upper.name isnot "naked" and $worn.under_upper.cursed isnot 1>>
-		<<clothingicon $worn.under_upper "under_upper">><<link [[$worn.under_upper.name.toUpperFirst()|Bird Tower Rope Clothes]]>><<set $fabricColour to $worn.under_upper.colour>><<set $bird.materials.fabric += 1>><<underupperruined>><</link>>
+		Tear up your <<link [[$worn.under_upper.name|Bird Tower Rope Clothes]]>><<set $bird.materials.fabric += 1>><<underupperruined>><</link>>
 		<br>
 	<</if>>
 	<<if $worn.under_lower.name isnot "naked" and $worn.under_lower.cursed isnot 1>>
-		<<clothingicon $worn.under_lower "under_lower">><<link [[$worn.under_lower.name.toUpperFirst()|Bird Tower Rope Clothes]]>><<set $fabricColour to $worn.under_lower.colour>><<set $bird.materials.fabric += 1>><<underlowerruined undefined "commando">><</link>>
+		Tear up your <<link [[$worn.under_lower.name|Bird Tower Rope Clothes]]>><<set $bird.materials.fabric += 1>><<underlowerruined undefined "commando">><</link>>
 		<br>
 	<</if>>
 	<<if $worn.over_upper.name isnot "naked" and $worn.over_upper.cursed isnot 1>>
-		<<clothingicon $worn.over_upper "over_upper">><<link [[$worn.over_upper.name.toUpperFirst()|Bird Tower Rope Clothes]]>><<set $fabricColour to $worn.over_upper.colour>><<set $bird.materials.fabric += 1>><<overupperruined>><</link>>
+		Tear up your <<link [[$worn.over_upper.name|Bird Tower Rope Clothes]]>><<set $bird.materials.fabric += 1>><<overupperruined>><</link>>
 		<br>
 	<</if>>
 	<<if $worn.over_lower.name isnot "naked" and $worn.over_lower.cursed isnot 1>>
-		<<clothingicon $worn.over_lower "over_lower">><<link [[$worn.over_lower.name.toUpperFirst()|Bird Tower Rope Clothes]]>><<set $fabricColour to $worn.over_lower.colour>><<set $bird.materials.fabric += 1>><<overlowerruined>><</link>>
+		Tear up your <<link [[$worn.over_lower.name|Bird Tower Rope Clothes]]>><<set $bird.materials.fabric += 1>><<overlowerruined>><</link>>
 		<br>
 	<</if>>
 	<<if $worn.over_head.name isnot "naked" and $worn.over_head.cursed isnot 1>>
-		<<clothingicon $worn.over_head "over_head">><<link [[$worn.over_head.name.toUpperFirst()|Bird Tower Rope Clothes]]>><<set $bird.materials.fabric += 1>><<set $fabricColour to $worn.over_head.colour>><<overheadruined>><</link>>
+		Tear up your <<link [[$worn.over_head.name|Bird Tower Rope Clothes]]>><<set $bird.materials.fabric += 1>><<overheadruined>><</link>>
 		<br>
 	<</if>>
 	<<if $worn.head.name isnot "naked" and $worn.head.cursed isnot 1>>
-		<<clothingicon $worn.head "head">><<link [[$worn.head.name.toUpperFirst()|Bird Tower Rope Clothes]]>><<set $bird.materials.fabric += 1>><<set $fabricColour to $worn.head.colour>><<headruined>><</link>>
+		Tear up your <<link [[$worn.head.name|Bird Tower Rope Clothes]]>><<set $bird.materials.fabric += 1>><<headruined>><</link>>
 		<br>
 	<</if>>
 	<<if $worn.face.name isnot "naked" and $worn.face.cursed isnot 1>>
-		<<clothingicon $worn.face "face">><<link [[$worn.face.name.toUpperFirst()|Bird Tower Rope Clothes]]>><<set $bird.materials.fabric += 1>><<set $fabricColour to $worn.face.colour>><<faceruined>><</link>>
+		Tear up your <<link [[$worn.face.name|Bird Tower Rope Clothes]]>><<set $bird.materials.fabric += 1>><<faceruined>><</link>>
 		<br>
 	<</if>>
 	<<if $worn.neck.name isnot "naked" and $worn.neck.cursed isnot 1>>
-		<<clothingicon $worn.neck "neck">><<link [[$worn.neck.name.toUpperFirst()|Bird Tower Rope Clothes]]>><<set $bird.materials.fabric += 1>><<set $fabricColour to $worn.neck.colour>><<neckruined>><</link>>
+		Tear up your <<link [[$worn.neck.name|Bird Tower Rope Clothes]]>><<set $bird.materials.fabric += 1>><<neckruined>><</link>>
 		<br>
 	<</if>>
 	<<if $worn.hands.name isnot "naked" and $worn.hands.cursed isnot 1>>
-		<<clothingicon $worn.hands "hands">><<link [[$worn.hands.name.toUpperFirst()|Bird Tower Rope Clothes]]>><<set $bird.materials.fabric += 1>><<set $fabricColour to $worn.hands.colour>><<handsruined>><</link>>
+		Tear up your <<link [[$worn.hands.name|Bird Tower Rope Clothes]]>><<set $bird.materials.fabric += 1>><<handsruined>><</link>>
 		<br>
 	<</if>>
 	<<if $worn.handheld.name isnot "naked" and $worn.handheld.cursed isnot 1>>
-		<<clothingicon $worn.handheld "handheld">><<link [[$worn.handheld.name.toUpperFirst()|Bird Tower Rope Clothes]]>><<set $bird.materials.fabric += 1>><<set $fabricColour to $worn.handheld.colour>><<handheldruined>><</link>>
+		Tear up your <<link [[$worn.handheld.name|Bird Tower Rope Clothes]]>><<set $bird.materials.fabric += 1>><<handheldruined>><</link>>
 		<br>
 	<</if>>
 	<<if $worn.legs.name isnot "naked" and $worn.legs.cursed isnot 1>>
-		<<clothingicon $worn.legs "legs">><<link [[$worn.legs.name.toUpperFirst()|Bird Tower Rope Clothes]]>><<set $bird.materials.fabric += 1>><<set $fabricColour to $worn.legs.colour>><<legsruined>><</link>>
+		Tear up your <<link [[$worn.legs.name|Bird Tower Rope Clothes]]>><<set $bird.materials.fabric += 1>><<legsruined>><</link>>
 		<br>
 	<</if>>
 	<<if $worn.feet.name isnot "naked" and $worn.feet.cursed isnot 1>>
-		<<clothingicon $worn.feet "feet">><<link [[$worn.feet.name.toUpperFirst()|Bird Tower Rope Clothes]]>><<set $bird.materials.fabric += 1>><<set $fabricColour to $worn.feet.colour>><<feetruined>><</link>>
+		Tear up your <<link [[$worn.feet.name|Bird Tower Rope Clothes]]>><<set $bird.materials.fabric += 1>><<feetruined>><</link>>
 		<br>
 	<</if>>
 	<br>
@@ -2049,6 +2043,7 @@ You have <span class="gold"><<number $bird.materials.fabric>></span><<birdicon "
 		Your wings would carry you down, if you had a better jumping point. <span class="blue">The perch might be perfect.</span>
 	<</if>>
 <</if>>
+<br>
 <<if $bird.rope lt 7>>
 	<<if $bird.materials.fabric gte 1>>
 		<<if $bird.rope is 0>>
@@ -2072,8 +2067,6 @@ You have <span class="gold"><<number $bird.materials.fabric>></span><<birdicon "
 
 :: Bird Tower Rope Clothes
 <<effects>>
-<<set $fabricColour to $fabricColour is 0 ? "white" : $fabricColour>>
-<<wearProp "rag" $fabricColour>>
 
 You tear off your clothing, giving yourself more raw material to work with.
 <<if $exposed gte 1>>
@@ -2082,7 +2075,7 @@ You tear off your clothing, giving yourself more raw material to work with.
 <<covered>>
 <br><br>
 
-<<link [[Next|Bird Tower Look]]>><<run delete $fabricColour>><<handheldon>><</link>>
+<<link [[Next|Bird Tower Look]]>><</link>>
 <br>
 
 
@@ -2627,11 +2620,9 @@ You turn the container upside down.
 		You tear open the packet, and shovel crisps into your mouth. They're soon gone.
 		<<hunger -200>>
 	<<case "chocolate">>
-		<<wearProp "chocolate bar">>
 		You tear open the wrapper, and take a bite of chocolate. It melts in your mouth. You savour the sweetness.
 		<<hunger -1000>>
 	<<case "apple">>
-		<<wearProp "apple">>
 		You bite into the crisp apple. It's juicy.
 		<<hunger -100>>
 	<<case "carrot">>
@@ -3365,7 +3356,7 @@ You slowly run your hands down the <<beasttypes>> feathers, towards <<bhis>> <<n
 :: Bird Tower Mirror
 <<setTowerTemp>><<effects>>
 
-<<birdicon "tower">><<link [[Step away|Bird Tower]]>><<handheldon>><<unset $mirrorMenu>><<unset $bodywritingSet>><<postMirror>><</link>>
+<<link [[Step away|Bird Tower]]>><<unset $mirrorMenu>><<unset $bodywritingSet>><<postMirror>><</link>>
 <br>
 
 <<mirror>>
@@ -5864,7 +5855,6 @@ Whose feathers will you use?
 
 :: Bird Tower Telescope Get
 <<setTowerTemp>><<effects>>
-<<wearProp "ornatetelescope">>
 <<set $bird.upgrades.telescope to 1>>
 You kneel down in the corner. A small hint of something shiny peeks out of the wall. You touch it, and what you first thought to be a solid brick crumbles at your touch. The brick must have been knocked loose a long time ago, and the hole was filled over centuries with compacted dust.
 <br><br>
@@ -5878,7 +5868,7 @@ You tug on the shiny bit, and a large cylindrical object escapes the dust. It ca
 You dust it off, and set it up near the perch.
 <br><br>
 
-<<link [[Next|Bird Tower Perch]]>><<endevent>><</link>>
+<<link [[Next|Bird Tower Perch]]>><<if $propEquipped is 1>><<if $carried.handheld.name isnot "naked">><<handheldon>><<else>><<handheldruined true>><</if>><<set $propEquipped to 0>><</if>><<endevent>><</link>>
 <br>
 
 :: Bird Tower Casual Flight
@@ -6706,6 +6696,7 @@ The Great Hawk dives directly towards you, talons extended.
 
 :: Bird Tower Telescope
 <<setTowerTemp>><<effects>>
+<<wearProp "ornatetelescope">>
 You look through your telescope.
 <<if Time.dayState isnot "night">>
 	It's too early to look at the sky.
@@ -7257,13 +7248,13 @@ You look up to the sky.
 <br>
 
 :: Bird Tower Eggs Take
-<<setTowerTemp>><<effects>><<wearProp "bird egg">>
+<<setTowerTemp>><<effects>>
 
 You take the unfertilised egg<<if $eggLayNumber gt 1>>s<</if>> from the nest. <<your_bird_text "cap">> doesn't seem to mind. <<tending_pick bird_egg $eggLayNumber $eggLayNumber>>
 <br><br>
 
 <<if $birdEggContext is "huntReturn">>
-	<<link [[Next|Bird Tower Great Hawk Egg Laying Hunt Finish]]>><<endBirdEggLaying>><<handheldon>><</link>>
+	<<link [[Next|Bird Tower Great Hawk Egg Laying Hunt Finish]]>><<endBirdEggLaying>><</link>>
 <<else>>
 	<<link [[Next|Bird Tower]]>><<endevent>><<endBirdEggLaying>><</link>>
 <</if>>
@@ -7325,7 +7316,7 @@ You let out a short gasp as you feel
 		<</if>>
 		<<if $eggLayNumber is 2>>
 			The second egg passes much easier, joining its sibling in your nest.
-		<<elseif $eggLayNumber gte 3>>
+		<<elseif $eggLayNumber is 3>>
 			The second egg passes easily, but the third one gets stuck, having nothing behind it to help push. <<if $phase is 0>>The Great Hawk presses down gently, helping the egg exit with a pop.<<else>>You sit there pushing for more agonising minutes, but eventually you manage to push it out.<</if>> Your <<pussy>> remains slightly opened. You pant in exertion, feeling dizzy.
 		<<else>>
 			The next eggs pass easily, but the last one gets stuck, having nothing behind it to help push. <<if $phase is 0>>The Great Hawk presses down gently, helping the egg exit with a pop.<<else>>You sit there pushing for more agonising minutes, but eventually you manage to push it out.<</if>> Your <<pussy>> remains slightly opened. You pant in exertion, feeling dizzy.
@@ -7424,14 +7415,13 @@ You're filled with a sense of maternal bliss.
 			<<bHe>> prods at <<if $eggLayNumber gt 1>>them<<else>>it<</if>>, before looking to you. They're unfertilised, of course.
 		<</if>>
 	<</if>>
-	<<wearProp "bird egg">>
 	<<tending_pick bird_egg $eggLayNumber $eggLayNumber>>
 	<<unset $harpyEggs>>
 	<<set $harpyEggsPrevent to 14>>
 	<br><br>
 
 	<<if _optionReassure>>
-		<<link [[Reassure|Bird Tower Player Eggs Reassure]]>><<handheldon>><<npcincr "Great Hawk" love 1>><<bird_stockholm 3>><</link>><<glove>><<ggbirdstockholm>>
+		<<link [[Reassure|Bird Tower Player Eggs Reassure]]>><<npcincr "Great Hawk" love 1>><<bird_stockholm 3>><</link>><<glove>><<ggbirdstockholm>>
 		<br>
 	<</if>>
 <</if>>
diff --git a/game/overworld-plains/loc-bird/widgets.twee b/game/overworld-plains/loc-bird/widgets.twee
index ce66a3406bd8dcd6d1869b1cc70f389a641ed224..c9e5fffb5bbd0795352d9e661d357acc24aa125a 100644
--- a/game/overworld-plains/loc-bird/widgets.twee
+++ b/game/overworld-plains/loc-bird/widgets.twee
@@ -2842,7 +2842,7 @@
 						<</if>>
 						<<if $_eggnant.fetus.length is 2>>
 							The second egg passes much easier, joining its sibling in your nest.
-						<<elseif $_eggnant.fetus.length gte 3>>
+						<<elseif $_eggnant.fetus.length is 3>>
 							The second egg passes easily, but the third one gets stuck, having nothing behind it to help push. You sit there pushing for more agonising minutes, but eventually you manage to push it out. Your <<pussy>> remains slightly opened. You pant in exertion, feeling dizzy.
 						<<else>>
 							The next eggs pass easily, but the last one gets stuck, having nothing behind it to help push. You sit there pushing for more agonising minutes, but eventually you manage to push it out. Your <<pussy>> remains slightly opened. You pant in exertion, feeling dizzy.
@@ -2889,7 +2889,7 @@
 						<</if>>
 						<<if $_eggnant.fetus.length is 2>>
 							The second egg passes much easier, joining its sibling on your bed.
-						<<elseif $_eggnant.fetus.length gte 3>>
+						<<elseif $_eggnant.fetus.length is 3>>
 							The second egg passes easily, but the third one gets stuck, having nothing behind it to help push. You sit there pushing for more agonising minutes, but eventually you manage to push it out. Your <<pussy>> remains slightly opened. You pant in exertion, feeling dizzy.
 						<<else>>
 							The next eggs pass easily, but the last one gets stuck, having nothing behind it to help push. You sit there pushing for more agonising minutes, but eventually you manage to push it out. Your <<pussy>> remains slightly opened. You pant in exertion, feeling dizzy.
@@ -2936,7 +2936,7 @@
 					<</if>>
 					<<if $harpyEggs.count is 2>>
 						The second egg passes much easier, joining its sibling <<if $location is "tower">>in your nest<<else>>on your bed<</if>>.
-					<<elseif $harpyEggs.count gte 3>>
+					<<elseif $harpyEggs.count is 3>>
 						The second egg passes easily, but the third one gets stuck, having nothing behind it to help push. You sit there pushing for more agonising minutes, but eventually you manage to push it out. Your <<pussy>> remains slightly opened. You pant in exertion, feeling dizzy.
 					<<else>>
 						The next eggs pass easily, but the last one gets stuck, having nothing behind it to help push. You sit there pushing for more agonising minutes, but eventually you manage to push it out. Your <<pussy>> remains slightly opened. You pant in exertion, feeling dizzy.
diff --git a/game/overworld-plains/loc-estate/cards_widgets.twee b/game/overworld-plains/loc-estate/cards_widgets.twee
index 5e426777b4691d31aa8ea26b22a9c6eb657368bf..fb6bcafe26a9a98bfe022bd74f2ae206e38f59db 100644
--- a/game/overworld-plains/loc-estate/cards_widgets.twee
+++ b/game/overworld-plains/loc-estate/cards_widgets.twee
@@ -1578,13 +1578,6 @@ more suspicion if you actually lose the round. -->
 	<</if>>
 <</widget>>
 
-<<widget "cards_panties_cover">>
-	<<if $uncomfortable.underwear is true>>
-		<span class="lewd">You anxiously make sure your $worn.under_lower.name <<underlowerplural>> on right.</span>
-		<br><br>
-	<</if>>
-<</widget>>
-
 <<widget "cards_bra_cover">>
 	<<if $uncomfortable.underwear is true>>
 		<span class="lewd">You cover your $worn.under_upper.name with an arm.</span>
@@ -2050,7 +2043,7 @@ more suspicion if you actually lose the round. -->
 		<<getouticon>><<link [[Leave|Estate Cards Leave]]>><<handheldon>><</link>>
 		<br>
 	<<else>>
-		<<gameicon "cards">><<link [[Play (0:01)|Estate Blackjack]]>><<pass 1>><<handheldon>><</link>>
+		<<ind>><<link [[Play (0:01)|Estate Blackjack]]>><<pass 1>><<handheldon>><</link>>
 		<<if $estate.cards.state is "ride">>
 			<span class="purple">Losing may increase arousal.</span> <<cards_virginity_all_warnings>>
 		<</if>>
@@ -2065,14 +2058,13 @@ more suspicion if you actually lose the round. -->
 
 <<widget "cards_start_play_options">>
 	<<if $farm_stage gte 5>>
-		<<gameicon "cards">><<link [[Play cards|Estate Cards Intro 2]]>><</link>>
+		<<ind>><<link [[Play cards|Estate Cards Intro 2]]>><</link>>
 
 		<<if $estatePersistent.stakesRaised>>
 			<<set $_anteMaxNum to setup.estateBlackjack.anteSizes.length - 1>>
 
 			<<for _i to 0; _i lte $_anteMaxNum; _i++>>
 				<<set _anteAmount to setup.estateBlackjack.anteSizes[_i]>>
-				<<set _cards to "cards_" + _i>>
 				<<formatmoney _anteAmount>>
 
 				<<set $_confidenceMoney to setup.estateBlackjack.confidenceMoney[_i]>>
@@ -2087,7 +2079,7 @@ more suspicion if you actually lose the round. -->
 						<<set _linkText to "Play cards with betting (" + _printmoney + " upfront)">>
 						<br>
 						<<capture _linkText, _anteAmount, _i>>
-							<<gameicon _cards>><<link [[_linkText|Estate Cards Intro 2]]>><<estate_betting_start _i>><</link>>
+							<<ind>><<link [[_linkText|Estate Cards Intro 2]]>><<estate_betting_start _i>><</link>>
 						<</capture>>
 					<</if>>
 				<<else>>
diff --git a/game/overworld-plains/loc-farm/cottage.twee b/game/overworld-plains/loc-farm/cottage.twee
index ddaab53e906405af5ced60ad34e6b109a69286b1..64ccd8b104dea6061d7cd13b6b893ca0fad03ef1 100644
--- a/game/overworld-plains/loc-farm/cottage.twee
+++ b/game/overworld-plains/loc-farm/cottage.twee
@@ -351,7 +351,7 @@ You are in your room at Alex's cottage. It's cramped, but larger than your room
 :: Farm Mirror
 <<effects>>
 
-<<bedicon>><<link [[Step away|Farm Bedroom]]>><<handheldon>><<unset $mirrorMenu>><<postMirror>><</link>>
+<<link [[Step away|Farm Bedroom]]>><<unset $mirrorMenu>><<postMirror>><</link>>
 <br>
 
 <<mirror>>
@@ -614,7 +614,7 @@ Alex holds your body tighter and begins humping your rear faster.
 
 <<link [[Keep going|Farm Alex Somno 2]]>><<set $phase to 0>><</link>>
 <br>
-<<link [[Give Alex oral|Farm Alex Somno 2]]>><<set $phase to 1>><</link>>
+<<link [[Give Alex oral|Farm Alex Somno 2]]>><<set $phase to 1>><</link>><<if $NPCList[0].penis isnot "none">><<oralvirginitywarning>><</if>>
 <br>
 <<link [[Give Alex a hand job|Farm Alex Somno 2]]>><<set $phase to 2>><</link>>
 
@@ -634,7 +634,7 @@ Alex holds your body tighter and begins humping your rear faster.
 <<elseif $phase is 1>> /* Give Alex oral */
 	You take a deep breath as you carefully move Alex's arms to give you room to move. Slowly, you roll over to face Alex. <<He>> doesn't stop humping you, but <<his>> pace slows. You slip further down under the covers until your face is within inches of <<his>> crotch. You hook your fingers around <<his>> <<if $NPCList[0].penis isnot "none">>boxers<<else>>underwear<</if>> band and slide them down. You bring your lips to <<his>> <<if $NPCList[0].penis isnot "none">>dick<<else>>clit<</if>> and start gently licking it.
 	<br><br>
-	Alex twitches, bucking <<his>> <<if $NPCList[0].penis isnot "none">>dick<<else>>pussy<</if>> against your lips. You open your mouth <<if $NPCList[0].penis isnot "none">>to allow <<his>> dick to enter<<else>>and start sucking on <<his>> clit<</if>>.
+	Alex twitches, bucking <<his>> <<if $NPCList[0].penis isnot "none">>dick<<else>>pussy<</if>> against your lips. You open your mouth <<if $NPCList[0].penis isnot "none">>to allow <<his>> dick to enter<<else>>and start sucking on <<his>> clit<</if>>.<<if $NPCList[0].penis isnot "none" and $player.virginity.oral is true>><<takeVirginity "Alex" "oral">><</if>>
 	<br><br>
 	<<if $speech_attitude is "meek">>
 		<<His>> <<if $NPCList[0].penis isnot "none">>precum<<else>>fluids<</if>> start to fill your mouth, causing you to moan. You push your legs together, attempting to stimulate your own growing arousal.
@@ -3899,7 +3899,7 @@ Alex is willing to build a Nursery at the cottage, but first <span class="gold">
 
 :: Farm Alex Birth
 <<effects>><<set $alexBabiesCount to getPregnancyObject("Alex").fetus.length>>
-<<wearProp "tea">>
+
 You make the call, explaining the situation to the dispatcher. As you talk, Alex winces, breathing through contractions.
 <br><br>
 
@@ -3918,7 +3918,7 @@ You make Alex a cup of tea. No sugar, a little milk, just the way <<he>> likes i
 You take a seat next to Alex but soon stand up, unable to sit still as you both wait for the doctor's arrival.<<gstress>><<stress 6>>
 <br><br>
 
-<<link [[Next|Farm Alex Birth 2]]>><<handheldon>><</link>>
+<<link [[Next|Farm Alex Birth 2]]>><</link>>
 
 :: Farm Alex Birth 2
 <<effects>>
@@ -4301,7 +4301,6 @@ Tears roll down <<his>> face, but <<he>> does <<his>> best to keep up <<his>> st
 <<effects>>
 
 <<if !$ambulance>>
-	<<wearProp "tea">>
 	<<set $pcBabyCount to getPregnancyObject("pc").fetus.length>>
 
 	<<He>> grabs <<his>> phone and makes the call, explaining the situation and where the farm is located.
@@ -4325,7 +4324,7 @@ Tears roll down <<his>> face, but <<he>> does <<his>> best to keep up <<his>> st
 	Alex holds your hand, and you wait for the Doctor's arrival.
 	<br><br>
 
-	<<link [[Next|Farm PC Birth 2]]>><<handheldon>><</link>>
+	<<link [[Next|Farm PC Birth 2]]>><</link>>
 
 <<else>>
 	You don't have to wait long before you hear a siren and a honk. Alex helps you stand and brings you closer to the paramedics; they quickly put you in the ambulance and drive to the hospital, but the pain becomes too much for you. You pass out.
diff --git a/game/overworld-plains/loc-farm/events.twee b/game/overworld-plains/loc-farm/events.twee
index e2b10396ba34907ae521f2f697bfc74101ceb72d..0f02b8d358ae72bcfec01f341db9ab23709bbedc 100644
--- a/game/overworld-plains/loc-farm/events.twee
+++ b/game/overworld-plains/loc-farm/events.twee
@@ -230,21 +230,21 @@ You gasp for air. "Be careful of those," <<he>> says. "They crawl in from the mo
 <br>
 
 :: Farm Yard Hurl net
-<<effects>><<wearProp "net">>
+<<effects>>
 
 <<if $danceSuccess and $athleticsSuccess>>
 	<span class="green">The net lands true.</span> You pull the creature into your possession.
 	<br><br>
 	<<set $lurkers_held += 1>>
 	<<set $stat_lurkers_captured += 1>>
-	<<link [[Next|Farm Work]]>><<handheldon>><</link>>
+	<<link [[Next|Farm Work]]>><</link>>
 	<br>
 <<else>>
 	You try to hurl the net, <span class="red">but it's on you too fast,</span> latching onto your face. You can't see. You try to pull the creature off, but you struggle to get a grip on its slimy skin. You keep your lips sealed as something presses against your mouth.<<gnet>>
 	<<prof net 1>>
 	<br><br>
 
-	<<link [[Next|Farm Yard Struggle]]>><<handheldon>><<set $struggle_start to 1>><</link>>
+	<<link [[Next|Farm Yard Struggle]]>><<set $struggle_start to 1>><</link>>
 	<br>
 <</if>>
 
@@ -2568,7 +2568,7 @@ You scream, but the creature lands on your face, cutting it short. You can't see
 <<link [[Next|Farm Tending Struggle]]>><<set $struggle_start to 2>><</link>>
 
 :: Farm Tending Lurker Hurl net
-<<effects>><<wearProp "net">>
+<<effects>>
 <<if $danceSuccess and $athleticsSuccess>>
 	<span class="green">The net lands true.</span> You pull the creature into your possession.
 	<br><br>
@@ -2580,7 +2580,7 @@ You scream, but the creature lands on your face, cutting it short. You can't see
 	<<prof net 1>>
 	<br><br>
 
-	<<link [[Next|Farm Tending Struggle]]>><<handheldon>><<set $struggle_start to 1>><</link>>
+	<<link [[Next|Farm Tending Struggle]]>><<set $struggle_start to 1>><</link>>
 	<br>
 <</if>>
 
@@ -6036,9 +6036,8 @@ You sit with them, and chat. You share a little about the troubles on the farm,
 	<br><br>
 	<<clotheson>>
 	<<endcombat>>
-	<<wearProp "tea">>
 
-	<<link [[Next|Farm Cottage]]>><<handheldon>><</link>>
+	<<link [[Next|Farm Cottage]]>><</link>>
 	<br>
 <<else>>
 	"We should get back to work," the <<person1>><<person>> says. They pick up their tools and walk away.
diff --git a/game/overworld-plains/loc-farm/fields.twee b/game/overworld-plains/loc-farm/fields.twee
index 4f4fa1b56ce95a52785cc3e1547f68a0c4e60239..9a9892ceb3875e28f6f5add0e7fe5a2f31a08af4 100644
--- a/game/overworld-plains/loc-farm/fields.twee
+++ b/game/overworld-plains/loc-farm/fields.twee
@@ -62,7 +62,7 @@
 	<</if>>
 	<<display_plot farm>>
 
-	<<getouticon>><<link [[Leave (0:05)|Farm Work]]>><<handheldon>><<pass 5>><</link>>
+	<<getouticon>><<link [[Leave (0:05)|Farm Work]]>><<pass 5>><</link>>
 	<br>
 <</if>>
 
diff --git a/game/overworld-plains/loc-farm/main.twee b/game/overworld-plains/loc-farm/main.twee
index 2769a4265341ed1cdac31076133e2532487ca4db..4984334f3bfe2011e7db4dd401fdf0407607d529 100644
--- a/game/overworld-plains/loc-farm/main.twee
+++ b/game/overworld-plains/loc-farm/main.twee
@@ -1606,7 +1606,7 @@ Alex laughs. "That's what I need," <<he>> says. <<He>> leans against the fence a
 
 
 :: Farm Fight End 4
-<<set $location to "alex_cottage">><<set $outside to 0>><<effects>><<wearProp "tea">>
+<<set $location to "alex_cottage">><<set $outside to 0>><<effects>>
 
 <<if $farm_fight.stage gte 9>>
 	Alex sits at the kitchen table, nursing <<his>> injuries while you make <<him>> a cup of tea.
@@ -1618,11 +1618,11 @@ You place the cup on the table. <<He>> warms <<his>> hands against it, and stare
 
 "That <<nnpc_gender "Bailey">>," <<he>> says. "That was Bailey, the orphanage caretaker?" You nod. Alex shakes <<his>> head. "I shouldn't be surprised Remy deals with that sort."<br><br>
 
-<<link [[Ask what Alex knows of Bailey|Farm Fight End Ask]]>><<handheldon>><</link>>
+<<link [[Ask what Alex knows of Bailey|Farm Fight End Ask]]>><</link>>
 <br>
-<<link [[Apologise|Farm Fight End Apologise]]>><<handheldon>><<sub 1>><</link>>
+<<link [[Apologise|Farm Fight End Apologise]]>><<sub 1>><</link>>
 <br>
-<<link [[Suggest teaming up|Farm Fight End Suggest]]>><<handheldon>><<def 1>><</link>>
+<<link [[Suggest teaming up|Farm Fight End Suggest]]>><<def 1>><</link>>
 <br>
 
 
@@ -1760,7 +1760,6 @@ You are inside the shed with the shower.
 :: Farm Shave
 <<effects>>
 <<dontHideForNow>><<shavestrip>>
-<<wearProp "razor">>
 You take off your clothes and look at your <<genitals>>.
 <br>
 <<if $worn.genitals.name is "chastity belt" or $worn.genitals.name is "gold chastity belt">>
@@ -1862,7 +1861,7 @@ You spread your legs, and start carefully trimming your pubes. After a few minut
 <<link [[Next|Farm Shed]]>><<clotheson>><<dontHideRevert>><</link>>
 
 :: Farm Dye
-<<effects>><<wearProp "hairdye">>
+<<effects>>
 
 <<set _ownedColours = $makeup.owned.hairdye.filter(x => x.count > 0)>>
 <<if _ownedColours.length == 0>>
@@ -2716,7 +2715,7 @@ You turn your head as Alex leans in. <<His>> lips peck your cheek before <<he>>
 
 
 :: Farm Builders Tea
-<<effects>><<wearProp "tea">>
+<<effects>>
 
 You ask if the <<person>> takes sugar, then make <<him>> a cup of tea. <<He>> takes a sip. "Cheers."
 <br><br>
@@ -2725,7 +2724,7 @@ You ask if the <<person>> takes sugar, then make <<him>> a cup of tea. <<He>> ta
 <br>
 
 :: Farm Builders Tea Chat
-<<effects>><<wearProp "tea">>
+<<effects>>
 
 You ask the <<person>> if <<he>> takes sugar, then make <<him>> a cup of tea. <<He>> takes a sip. "Cheers."
 <br><br>
@@ -2778,7 +2777,7 @@ Truffles: $farm.stock.truffles
 <br>
 <<if $farm.stock.truffles gte 1>>
 	<<set _farm_stocked to true>>
-	<<tendingicon "truffles">><<link [[Take|Farm Stock]]>><<wearProp "truffle">><<tending_give truffle $farm.stock.truffles>><<set $farm.stock.truffles to 0>><</link>>
+	<<tendingicon "truffles">><<link [[Take|Farm Stock]]>><<tending_give truffle $farm.stock.truffles>><<set $farm.stock.truffles to 0>><</link>>
 	<br>
 <</if>>
 <br>
@@ -2786,7 +2785,7 @@ Eggs: $farm.stock.eggs
 <br>
 <<if $farm.stock.eggs gte 1>>
 	<<set _farm_stocked to true>>
-	<<tendingicon "eggs">><<link [[Take|Farm Stock]]>><<wearProp "bird egg">><<tending_give chicken_egg $farm.stock.eggs>><<set $farm.stock.eggs to 0>><</link>>
+	<<tendingicon "eggs">><<link [[Take|Farm Stock]]>><<tending_give chicken_egg $farm.stock.eggs>><<set $farm.stock.eggs to 0>><</link>>
 	<br>
 <</if>>
 <br>
@@ -2794,7 +2793,7 @@ Bottles of milk: $farm.stock.milk
 <br>
 <<if $farm.stock.milk gte 1>>
 	<<set _farm_stocked to true>>
-	<<tendingicon "milk">><<link [[Take|Farm Stock]]>><<wearProp "milk bottle">><<tending_give bottle_of_milk $farm.stock.milk>><<set $farm.stock.milk to 0>><</link>>
+	<<tendingicon "milk">><<link [[Take|Farm Stock]]>><<tending_give bottle_of_milk $farm.stock.milk>><<set $farm.stock.milk to 0>><</link>>
 	<br>
 <</if>>
 <br>
@@ -2803,15 +2802,12 @@ Bottles of milk: $farm.stock.milk
 	<<tendingicon>>
 	<<link [[Take all|Farm Cottage]]>>
 		<<if $farm.stock.truffles gte 1>>
-			<<wearProp "truffle">>
 			<<tending_give truffle $farm.stock.truffles>><<set $farm.stock.truffles to 0>>
 		<</if>>
 		<<if $farm.stock.eggs gte 1>>
-			<<wearProp "bird egg">>
 			<<tending_give chicken_egg $farm.stock.eggs>><<set $farm.stock.eggs to 0>>
 		<</if>>
 		<<if $farm.stock.milk gte 1>>
-			<<wearProp "milk bottle">>
 			<<tending_give bottle_of_milk $farm.stock.milk>><<set $farm.stock.milk to 0>>
 		<</if>>
 	<</link>>
diff --git a/game/overworld-plains/loc-farm/meadow.twee b/game/overworld-plains/loc-farm/meadow.twee
index 475fba3acab2380fedc21318e32a1ea2a8190500..85547ccb47750e11f3d4e5bb49f7bef285079086 100644
--- a/game/overworld-plains/loc-farm/meadow.twee
+++ b/game/overworld-plains/loc-farm/meadow.twee
@@ -437,10 +437,9 @@ Your eyes were so drawn by the water that it takes you a moment to notice the <<
 <</if>>
 
 :: Meadow Cave Accept
-<<effects>><<clotheson>>
+<<effects>>
 
 <<if $museumAntiques.antiques.antiquestonetalisman isnot "found" and $museumAntiques.antiques.antiquestonetalisman isnot "talk" and $museumAntiques.antiques.antiquestonetalisman isnot "museum">>
-	<<wearProp "stone talisman">>
 	<<set $antiquemoney += 1200>><<museumAntiqueStatus "antiquestonetalisman" "found">>
 	<<if $monster is 1>>
 		"Thank you!" the <<beasttype>> says.
@@ -452,11 +451,12 @@ Your eyes were so drawn by the water that it takes you a moment to notice the <<
 	<</if>>
 	<<bHe>> scurries back toward the tunnel, leaving your clothes behind.
 <</if>>
+<<clotheson>>
 
 You turn away from the water, and walk back down the tunnel.
 <br><br>
 
-<<link [[Next|Meadow Cave Exit]]>><<handheldon>><<unset $foxGen>><</link>>
+<<link [[Next|Meadow Cave Exit]]>><<unset $foxGen>><</link>>
 <br>
 
 :: Meadow Cave Punish
@@ -498,16 +498,14 @@ You turn away from the water, and walk back down the tunnel.
 <br>
 
 :: Meadow Cave Punish 2
-<<effects>><<clotheson>>
+<<effects>>
 
 <<if $museumAntiques.antiques.antiquestonetalisman isnot "found" and $museumAntiques.antiques.antiquestonetalisman isnot "talk" and $museumAntiques.antiques.antiquestonetalisman isnot "museum">>
 	<<set $antiquemoney += 1200>><<museumAntiqueStatus "antiquestonetalisman" "found">>
-	<<set _clothes to "clothes and the strange stone">>
-	<<wearProp "stone talisman">>
+	"I think I've made myself clear," you say as you rise to your feet, picking up your clothes and the strange stone as you do.<<clotheson>>
 <<else>>
-	<<set _clothes to "clothes">>
+	"I think I've made myself clear," you say as you rise to your feet, picking up your clothes as you do.<<clotheson>>
 <</if>>
-"I think I've made myself clear," you say as you rise to your feet, picking up your _clothes as you do.
 <br><br>
 
 You walk back to the tunnel, leaving the <<beasttype>> panting on the ground.
@@ -567,27 +565,38 @@ You make it to the top, and squeeze through the entrance, emerging near the mead
 <</if>>
 
 :: Meadow Cave Sex Finish
-<<effects>><<clotheson>>
+<<effects>>
 
 <<if $enemyarousal gte $enemyarousalmax>>
 	<<beastejaculation>>
-<</if>>
 
-<<if $museumAntiques.antiques.antiquestonetalisman isnot "found" and $museumAntiques.antiques.antiquestonetalisman isnot "talk" and $museumAntiques.antiques.antiquestonetalisman isnot "museum">>
-	<<set _clothes to "clothes and the strange stone">>
-	<<set $antiquemoney += 1200>><<museumAntiqueStatus "antiquestonetalisman" "found">>
-	<<wearProp "stone talisman">>
+	<<if $museumAntiques.antiques.antiquestonetalisman isnot "found" and $museumAntiques.antiques.antiquestonetalisman isnot "talk" and $museumAntiques.antiques.antiquestonetalisman isnot "museum">>
+		<<set $antiquemoney += 1200>><<museumAntiqueStatus "antiquestonetalisman" "found">>
+		"I think I've made myself clear," you say as you rise to your feet, picking up your clothes and the strange stone as you do.<<clotheson>>
+	<<else>>
+		"I think I've made myself clear," you say as you rise to your feet, picking up your clothes as you do.<<clotheson>>
+	<</if>>
+	<br><br>
+
+	You walk back to the tunnel, leaving the <<beasttype>> panting on the ground.
+	<<endcombat>>
+
+	<<link [[Next|Meadow Cave Exit]]>><</link>>
+	<br>
 <<else>>
-	<<set _clothes to "clothes">>
-<</if>>
-"I think I've made myself clear," you say as you rise to your feet, picking up your _clothes as you do.
-<br><br>
+	<<if $museumAntiques.antiques.antiquestonetalisman isnot "found" and $museumAntiques.antiques.antiquestonetalisman isnot "talk" and $museumAntiques.antiques.antiquestonetalisman isnot "museum">>
+		<<set $antiquemoney += 1200>><<museumAntiqueStatus "antiquestonetalisman" "found">>
+		"I think I've made myself clear," you say as you rise to your feet, picking up your clothes and the strange stone as you do.<<clotheson>>
+	<<else>>
+		"I think I've made myself clear," you say as you rise to your feet, picking up your clothes as you do.<<clotheson>>
+	<</if>>
+	<br><br>
 
-You walk back to the tunnel, leaving the <<beasttype>> panting on the ground.
-<<endcombat>>
+	You walk back to the tunnel, leaving the <<beasttype>> panting on the ground.
+	<<endcombat>>
 
-<<link [[Next|Meadow Cave Exit]]>><<handheldon>><</link>>
-<br>
+	<<link [[Next|Meadow Cave Exit]]>><</link>>
+<</if>>
 
 :: Meadow Chase Hill
 <<effects>>
@@ -706,27 +715,39 @@ You keep low as you move, though you see no one else around.
 <</if>>
 
 :: Meadow Chase Hill Sex Finish
-<<effects>><<clotheson>>
+<<effects>>
 
 <<if $enemyarousal gte $enemyarousalmax>>
 	<<beastejaculation>>
-<</if>>
 
-<<if $museumAntiques.antiques.antiquestonetalisman isnot "found" and $museumAntiques.antiques.antiquestonetalisman isnot "talk" and $museumAntiques.antiques.antiquestonetalisman isnot "museum">>
-	<<set _clothes to "clothes and the strange stone">>
-	<<set $antiquemoney += 1200>><<museumAntiqueStatus "antiquestonetalisman" "found">>
-	<<wearProp "stone talisman">>
+	<<if $museumAntiques.antiques.antiquestonetalisman isnot "found" and $museumAntiques.antiques.antiquestonetalisman isnot "talk" and $museumAntiques.antiques.antiquestonetalisman isnot "museum">>
+		<<set $antiquemoney += 1200>><<museumAntiqueStatus "antiquestonetalisman" "found">>
+		"I think I've made myself clear," you say as you rise to your feet, picking up your clothes and the strange stone as you do.<<clotheson>>
+	<<else>>
+		"I think I've made myself clear," you say as you rise to your feet, picking up your clothes as you do.<<clotheson>>
+	<</if>>
+	<br><br>
+
+	You walk back to the meadow.
+	<<endcombat>>
+
+	<<link [[Next|Meadow]]>><</link>>
+	<br>
 <<else>>
-	<<set _clothes to "clothes">>
-<</if>>
-"I think I've made myself clear," you say as you rise to your feet, picking up your _clothes as you do.
-<br><br>
+	<<if $museumAntiques.antiques.antiquestonetalisman isnot "found" and $museumAntiques.antiques.antiquestonetalisman isnot "talk" and $museumAntiques.antiques.antiquestonetalisman isnot "museum">>
+		<<set $antiquemoney += 1200>><<museumAntiqueStatus "antiquestonetalisman" "found">>
+		"I think I've made myself clear," you say as you rise to your feet, picking up your clothes and the strange stone as you do.<<clotheson>>
+	<<else>>
+		"I think I've made myself clear," you say as you rise to your feet, picking up your clothes as you do.<<clotheson>>
+	<</if>>
+	<br><br>
 
-You walk back to the meadow.
-<<endcombat>>
+	You walk back to the meadow.
+	<<endcombat>>
 
-<<link [[Next|Meadow]]>><<handheldon>><</link>>
-<br>
+	<<link [[Next|Meadow]]>><</link>>
+	<br>
+<</if>>
 
 :: Meadow Chase Hill Trap
 <<effects>>
@@ -993,7 +1014,7 @@ You release the <<beasttype>>.
 
 	<<pass 2>>
 	You wait a minute. Then another. Then you hear a rustle behind a tree. You investigate, and find an engraved stone lying on the ground. You're not sure what it is, but it looks intricate. It might be worth something to a collector.
-	<<clotheson>><<wearProp "stone talisman">>
+	<<clotheson>>
 <<else>>
 	<<if $monster is 1>>
 		"Thank you!" the <<beasttype>> says. <<bHe>> disappears between the trees.
@@ -1043,15 +1064,18 @@ You release the <<beasttype>>.
 :: Meadow Chase Hill Punish 2
 <<effects>>
 
+
 "I think I've made myself clear," you say as you rise to your feet, picking up your clothes as you do.<<clotheson>>
 <<if $museumAntiques.antiques.antiquestonetalisman isnot "found" and $museumAntiques.antiques.antiquestonetalisman isnot "talk" and $museumAntiques.antiques.antiquestonetalisman isnot "museum">>
-	<<set $antiquemoney += 1200>><<museumAntiqueStatus "antiquestonetalisman" "found">><<wearProp "stone talisman">>
-	Something falls from the bundle as you dress. You look closer. It's a smooth stone, covered with engravings. It might be worth something to a collector.
+	<<set $antiquemoney += 1200>><<museumAntiqueStatus "antiquestonetalisman" "found">>
+	Something fell from the bundle as you dressed. You look closer. It's a smooth stone, covered with engravings. It might be worth something to a collector.
 	<br><br>
+<<else>>
+
 <</if>>
 
 You walk back to the meadow.
 <<deviancy4>>
 
-<<link [[Next|Meadow]]>><<handheldon>><<unset $foxGen>><</link>>
+<<link [[Next|Meadow]]>><<unset $foxGen>><</link>>
 <br>
diff --git a/game/overworld-plains/loc-farm/widgets.twee b/game/overworld-plains/loc-farm/widgets.twee
index 413eb531073971a7eb6b778ea1261c111eb68ba4..b535ca466f84f3c419d16e1ff8b915c435b3a8c3 100644
--- a/game/overworld-plains/loc-farm/widgets.twee
+++ b/game/overworld-plains/loc-farm/widgets.twee
@@ -2110,10 +2110,6 @@
 	<<set $farm_fight.screws to 10>>
 <</widget>>
 
-<<widget "farm_fight_end">>
-	<<unset $farm_fight>>
-<</widget>>
-
 <<widget "farm_fight_alex">>
 	<<person1>>
 	<<if $farm_fight.distraction is 2>>
diff --git a/game/overworld-plains/loc-farm/woodland.twee b/game/overworld-plains/loc-farm/woodland.twee
index c497384e8d6d181710b6cdc76f112a42358cd24d..cfa674be684563f7ba640d7d5b7347dde84f641a 100644
--- a/game/overworld-plains/loc-farm/woodland.twee
+++ b/game/overworld-plains/loc-farm/woodland.twee
@@ -296,7 +296,6 @@ You take a basket into the woodland, and search the boughs and floor for ripe ed
 <br><br>
 
 <<if $rng gte 75>>
-	<<wearProp "strawberry">>
 	<span class="green">You find some ripe <<icon "tending/strawberry.png">> strawberries.</span>
 	<<if $farm.woodland gte 3>>
 		<<tending_pick strawberry 10 50>>
@@ -304,7 +303,6 @@ You take a basket into the woodland, and search the boughs and floor for ripe ed
 		<<tending_pick strawberry 5 25>>
 	<</if>>
 <<elseif $rng gte 50>>
-	<<wearProp "peach">>
 	<span class="green">You find some ripe <<icon "tending/peach.png">> peaches.</span>
 	<<if $farm.woodland gte 3>>
 		<<tending_pick peach 10 50>>
@@ -312,7 +310,6 @@ You take a basket into the woodland, and search the boughs and floor for ripe ed
 		<<tending_pick peach 5 25>>
 	<</if>>
 <<elseif $rng gte 25>>
-	<<wearProp "plum">>
 	<span class="green">You find some ripe <<icon "tending/plum.png">> plums.</span>
 	<<if $farm.woodland gte 3>>
 		<<tending_pick plum 10 50>>
@@ -320,7 +317,6 @@ You take a basket into the woodland, and search the boughs and floor for ripe ed
 		<<tending_pick plum 5 25>>
 	<</if>>
 <<else>>
-	<<wearProp "mushroom">>
 	<span class="green">You find some <<icon "tending/mushroom.png">> mushrooms.</span>
 	<<if $farm.woodland gte 3>>
 		<<tending_pick mushroom 10 50>>
@@ -334,12 +330,12 @@ You take a basket into the woodland, and search the boughs and floor for ripe ed
 	You smell a mesmerising sweetness. It leads you to a strange purple flower.
 	<br><br>
 
-	<<icon "tending/strange_flower.png">> <<link [[Pick|Farm Woodland Harvest]]>><<handheldon>><<drugs 60>><</link>><<garousal>>
+	<<icon "tending/strange_flower.png">> <<link [[Pick|Farm Woodland Harvest]]>><<drugs 60>><</link>><<garousal>>
 	<br>
-	<<link [[Ignore|Farm Woodland]]>><<handheldon>><</link>>
+	<<link [[Ignore|Farm Woodland]]>><</link>>
 	<br>
 <<else>>
-	<<link [[Next|Farm Woodland]]>><<handheldon>><</link>>
+	<<link [[Next|Farm Woodland]]>><</link>>
 	<br>
 <</if>>
 
diff --git a/game/overworld-plains/loc-farm/work.twee b/game/overworld-plains/loc-farm/work.twee
index 06fe6b103030e12fe5951f02b6ab3b020a67440a..4cd1f9cc1e8fe4fe53dbd64eb32319fc87959dd3 100644
--- a/game/overworld-plains/loc-farm/work.twee
+++ b/game/overworld-plains/loc-farm/work.twee
@@ -2784,12 +2784,10 @@ The machine continues its devilish work, sucking with more intensity. You feel a
 	<</if>>
 	<br><br>
 	<<if $farm_breast_milk gte 2000>>
-		<<wearProp "breast milk bottle">>
 		<<set $farm_breast_milk to Math.trunc($farm_breast_milk / 1000)>>
 		<span class="gold">You've filled $farm_breast_milk bottles of milk.</span>
 		<<tending_give bottle_of_breast_milk $farm_breast_milk>>
 	<<elseif $farm_breast_milk gte 1000>>
-		<<wearProp "breast milk bottle">>
 		<<set $farm_breast_milk to Math.trunc($farm_breast_milk / 1000)>>
 		<span class="gold">You've filled a bottle with milk.</span>
 		<<tending_give bottle_of_breast_milk $farm_breast_milk>>
@@ -2935,13 +2933,11 @@ The machine continues its devilish work, sucking with more intensity. You feel a
 	<br><br>
 
 	<<if $farm_penis_milk gte 2000>>
-		<<wearProp "semen bottle">>
 		<<set $farm_penis_milk to Math.trunc($farm_penis_milk / 1000)>>
 		<span class="gold">You've filled $farm_penis_milk bottles of semen.</span>
 		<<tending_give bottle_of_semen $farm_penis_milk>>
 		<br><br>
 	<<elseif $farm_penis_milk gte 1000>>
-		<<wearProp "semen bottle">>
 		<<set $farm_penis_milk to Math.trunc($farm_penis_milk / 1000)>>
 		<span class="gold">You've filled a bottle with semen.</span>
 		<<tending_give bottle_of_semen $farm_penis_milk>>
diff --git a/game/overworld-plains/loc-moor/events.twee b/game/overworld-plains/loc-moor/events.twee
index 14eb98dca9b571e17f723980417245acc2dcd638..8d37912b70595672b4906602a55915cffce85040 100644
--- a/game/overworld-plains/loc-moor/events.twee
+++ b/game/overworld-plains/loc-moor/events.twee
@@ -1024,8 +1024,8 @@ The water is cold, and deep. You swim away from shore. You can see nothing ahead
 	Your hands grasp sand, and you crawl onto a bank. You weren't imagining the glimmer. Your fingers close around cold metal, half-buried. It feels like a ring.
 	<br><br>
 	<<set $antiquemoney += 3000>><<museumAntiqueStatus "antiquegoldring" "found">>
-	<<wearProp "gold ring">>
-	<<link [[Next|Moor Passage Swim 2]]>><<handheldon>><</link>>
+
+	<<link [[Next|Moor Passage Swim 2]]>><</link>>
 	<br>
 
 <<else>>
diff --git a/game/overworld-plains/loc-moor/main.twee b/game/overworld-plains/loc-moor/main.twee
index 16ebebc2d8fbef17cef5abfc1af82eed3d4b04f1..cb509d768b6984c0b2672e7f3db1d081632b3897 100644
--- a/game/overworld-plains/loc-moor/main.twee
+++ b/game/overworld-plains/loc-moor/main.twee
@@ -390,10 +390,10 @@ Inside is a black iron bell. The exterior is marked with symbols common at the t
 You find yourself wanting to leave it buried, but it could be worth a lot to a collector.
 <br><br>
 
-<<earnFeat "Buried Treasure">><<wearProp "bell">>
+<<earnFeat "Buried Treasure">>
 <<set $antiquemoney += 10000>><<museumAntiqueStatus "antiquebell" "found">>
 
-<<link [[Next|Castle]]>><<handheldon>><</link>>
+<<link [[Next|Castle]]>><</link>>
 <br>
 
 
@@ -474,7 +474,6 @@ The creatures disppear beneath the surface.
 
 <<clotheson>>
 <<endcombat>>
-<<wearProp "black box">>
 
 You make it to the island. The black box lies atop a torn satchel. You pick it up.
 <<set $pubtask2 to 1>>
@@ -483,7 +482,7 @@ You make it to the island. The black box lies atop a torn satchel. You pick it u
 The journey back to shore proves safer.
 <br><br>
 
-<<link [[Next|Moor]]>><<handheldon>><<set $eventskip to 1>><</link>>
+<<link [[Next|Moor]]>><<set $eventskip to 1>><</link>>
 <br>
 
 
@@ -651,9 +650,10 @@ The journey back to shore proves safer.
 The <<person>> sighs. "Fine." <<He>> chucks it onto the earth beside you. You crouch to retrieve it. By the time you rise, the <<person>> is gone.
 <br><br>
 <<set $pubtask2 to 1>>
-<<wearProp "black box">>
 
-<<link [[Next|Moor]]>><<endevent>><<clearNPC moor>><<set $eventskip to 1>><</link>>
+<<endevent>>
+<<clearNPC moor>>
+<<link [[Next|Moor]]>><<set $eventskip to 1>><</link>>
 <br>
 
 
@@ -744,9 +744,9 @@ The <<person>> sighs. "Fine." <<He>> chucks it onto the earth beside you. You cr
 <br><br>
 <<set $pubtask2 to 1>>
 
-<<wearProp "black box">>
-
-<<link [[Next|Moor]]>><<endevent>><<clearNPC moor>><<set $eventskip to 1>><</link>>
+<<endevent>>
+<<clearNPC moor>>
+<<link [[Next|Moor]]>><<set $eventskip to 1>><</link>>
 <br>
 
 :: Moor Box Undies
@@ -858,9 +858,11 @@ You crouch to retrieve the box. The <<person>> is gone by the time you rise. <<c
 <br><br>
 
 <<set $pubtask2 to 1>>
-<<wearProp "black box">>
 
-<<link [[Next|Moor]]>><<endevent>><<clearNPC moor>><<set $eventskip to 1>><</link>>
+<<endevent>>
+<<clearNPC moor>>
+
+<<link [[Next|Moor]]>><<set $eventskip to 1>><</link>>
 <br>
 
 
diff --git a/game/overworld-plains/loc-moor/widgets.twee b/game/overworld-plains/loc-moor/widgets.twee
index c704e89e0bf4633e258068f6f7ecc7be5de1ed4b..ce6e4dec5dbc8cb99c1582e95561c7773881cd24 100644
--- a/game/overworld-plains/loc-moor/widgets.twee
+++ b/game/overworld-plains/loc-moor/widgets.twee
@@ -7,11 +7,10 @@
 	<<if random(1, 8) is 8 or ($moormove is "quick_search" or $moormove is "normal_search" or $moormove is "careful_search" or $moormove is "fly_search") and random(1, 4) is 4>>
 		<<rng 3>>
 		<<if $rng is 3>>
-			<<wearProp "bullet">>
 			You see a bullet lying at the edge of a trail. It looks old. A collector might pay for it.
 			<br><br>
 			<<set $antiquemoney += 50>><<museumAntiqueStatus "antiquebullet" "found">>
-			<<link [[Next|Moor]]>><<handheldon>><<set $eventskip to 1>><</link>>
+			<<link [[Next|Moor]]>><<set $eventskip to 1>><</link>>
 			<br>
 		<<elseif $rng is 2>>
 			Tufts of small yellow flowers grow among the heather.
@@ -28,7 +27,7 @@
 				<span class="blue">You need a higher tending skill to identify them.</span>
 				<br><br>
 			<</if>>
-			<<mooricon>><<link [[Continue|Moor]]>><<set $eventskip to 1>><</link>>
+			<<link [[Continue|Moor]]>><<set $eventskip to 1>><</link>>
 			<br>
 		<<else>>
 			Tufts of small white flowers grow among the heather.
@@ -45,7 +44,7 @@
 				<span class="blue">You need a higher tending skill to identify them.</span>
 				<br><br>
 			<</if>>
-			<<mooricon>><<link [[Continue|Moor]]>><<set $eventskip to 1>><</link>>
+			<<ind>><<link [[Continue|Moor]]>><<set $eventskip to 1>><</link>>
 			<br>
 		<</if>>
 	<<elseif $danger gte (9900 - ($allure * $forestmod))>>
@@ -267,7 +266,6 @@
 	<<if random(1, 8) is 8 or ($moormove is "quick_search" or $moormove is "normal_search" or $moormove is "careful_search" or $moormove is "fly_search") and random(1, 4) is 4>>
 		<<rng 2>>
 		<<if $rng is 2>>
-			<<wearProp "artillery">>
 			You spot a black shape, half-buried in mud. It's an artillery shell. It looks old.
 
 			<<if currentSkillValue('history') gte 500>>
@@ -280,7 +278,7 @@
 
 			<</if>>
 
-			<<link [[Next|Moor]]>><<handheldon>><<set $eventskip to 1>><</link>>
+			<<link [[Next|Moor]]>><<set $eventskip to 1>><</link>>
 			<br>
 		<<else>>
 			Green shoots erupt from the earth in clusters.
@@ -294,7 +292,7 @@
 				<span class="blue">You need a higher tending skill to identify them.</span>
 				<br><br>
 			<</if>>
-			<<mooricon>><<link [[Continue|Moor]]>><<set $eventskip to 1>><</link>>
+			<<getinicon>><<link [[Continue|Moor]]>><<set $eventskip to 1>><</link>>
 			<br>
 		<</if>>
 	<<elseif $danger gte (9900 - ($allure * $forestmod))>>
@@ -572,7 +570,7 @@
 				<span class="blue">You need a higher tending skill to identify them.</span>
 				<br><br>
 			<</if>>
-			<<mooricon>><<link [[Continue|Moor]]>><<set $eventskip to 1>><</link>>
+			<<ind>><<link [[Continue|Moor]]>><<set $eventskip to 1>><</link>>
 			<br>
 		<</if>>
 	<<elseif $danger gte (9900 - ($allure * $forestmod))>>
@@ -961,7 +959,7 @@
 			<<link [[Screech back|Moor Bird Screech]]>><</link>><<harpy>>
 			<br>
 		<</if>>
-		<<mooricon>><<link [[Continue|Moor]]>><<set $eventskip to 1>><</link>>
+		<<link [[Continue|Moor]]>><<set $eventskip to 1>><</link>>
 		<br>
 	<<else>>
 		<<if $birdescaped gte 1>>
diff --git a/game/overworld-plains/loc-riding/main.twee b/game/overworld-plains/loc-riding/main.twee
index 5aa1ce68e8b0e118ea62198a40c70a9fd309aff4..4a8347f761e2284711c5d22a08408d572cfec069 100644
--- a/game/overworld-plains/loc-riding/main.twee
+++ b/game/overworld-plains/loc-riding/main.twee
@@ -714,7 +714,7 @@ You brace yourself.
 <</if>>
 
 :: Riding School Lesson Building
-<<effects>><<wearProp "grenade">>
+<<effects>>
 
 It's dark, with only a little natural light entering through a small window. You can make out a decaying cabinet. Perhaps there are clothes inside.
 <br><br>
@@ -727,7 +727,7 @@ You open the doors, and cough at the scatter of dust. Something heavy thuds to t
 You almost panic, but the pin is still in. It also looks old. So old that it can't still be live, surely. A collector would be interested in this.
 <br><br>
 
-<<link [[Next|Riding School Lesson Building 2]]>><<handheldon>><</link>>
+<<link [[Next|Riding School Lesson Building 2]]>><</link>>
 <br>
 
 :: Riding School Lesson Building 2
diff --git a/game/overworld-town/loc-adultshop/intro.twee b/game/overworld-town/loc-adultshop/intro.twee
index 5aeec9efc6f72b1327a815c10a37ade7b2ad3861..4674a7b1e2f532fa0b6193ad5c31e451d63012f0 100644
--- a/game/overworld-town/loc-adultshop/intro.twee
+++ b/game/overworld-town/loc-adultshop/intro.twee
@@ -273,7 +273,6 @@
 		<</if>>
 	<</if>>
 <<else>>
-	<<wearProp "paintbrush">>
 	You help Sydney paint the walls while Sirris works in the back. You're not sure what <<person1>><<hes>> up to back there, but you hear an occasional whirring.
 	<br><br>
 	<<person2>>
@@ -803,7 +802,7 @@ You hear Sirris clap <<his>> hands as <<he>> receives the crate. Sydney returns
 
 
 :: Dilapidated End
-<<effects>><<handheldon>>
+<<effects>>
 <<run statusCheck("Sydney")>>
 <<if $adultshopprogress gte 22>>
 	<<person1>>
diff --git a/game/overworld-town/loc-adultshop/sex-shop-menu.twee b/game/overworld-town/loc-adultshop/sex-shop-menu.twee
index 790977f02f10c6acbc93ce2a708454ea2dc909cc..6ca91e2c1d069bdc43f913cea5ddb2e1220283e6 100644
--- a/game/overworld-town/loc-adultshop/sex-shop-menu.twee
+++ b/game/overworld-town/loc-adultshop/sex-shop-menu.twee
@@ -17,7 +17,7 @@ You are inside the adult shop.
 <<run window.sexShopGridInit()>>
 <br><br>
 <<if $debug is 1>>
-	<<ind>><<link [[Reload|Adult Shop Menu]]>><</link>>
+	<<link [[Reload|Adult Shop Menu]]>><</link>>
 	<br>
 <</if>>
 <<getouticon>><<link [[Leave|Adult Shop]]>><</link>>
diff --git a/game/overworld-town/loc-alley/park.twee b/game/overworld-town/loc-alley/park.twee
index 8899bc11981f2f79b137fb4aefa54d96a23f2175..45905d0ce9ebadffc6eaac2cd0d2ca1f3f943d50 100644
--- a/game/overworld-town/loc-alley/park.twee
+++ b/game/overworld-town/loc-alley/park.twee
@@ -50,7 +50,6 @@ Tulips grow in great patches near the riverbank.
 	<<elseif $robinReunionScene isnot undefined and _robin_location is "park" and $exposed lte 0 and !$possessed>>
 		<<npc Robin>><<person1>>
 		<<if $robinReunionScene is "dungeon">>
-			<<wearProp "cocoa">>
 			<<unset $robinReunionScene>><<set $robinPostMortem to true>>
 			You see Robin stood behind <<his>> hot chocolate stand. <<His>> mouth goes agape as <<he>> sees you, and <<he>> sprints towards you.
 			<br><br>
@@ -69,7 +68,6 @@ Tulips grow in great patches near the riverbank.
 			<br>
 		<<elseif $robinReunionScene is "dungeonRobin">>
 			<<unset $robinReunionScene>>
-			<<wearProp "cocoa">>
 			You see Robin stood behind <<his>> hot chocolate stand. <<His>> mouth goes agape as <<he>> sees you, and <<he>> sprints towards you.
 			<br><br>
 
diff --git a/game/overworld-town/loc-alley/residential.twee b/game/overworld-town/loc-alley/residential.twee
index bc3e97a84fb7272ceed5c25ce9f52fb85185387d..2656d6d8c6a89f57888b55377c39cdda1e7acf38 100644
--- a/game/overworld-town/loc-alley/residential.twee
+++ b/game/overworld-town/loc-alley/residential.twee
@@ -467,12 +467,11 @@ The tunnel is pitch black, but straight, and you're able to make it to the other
 The lower <<icon "tending/blackberry.png">> blackberries have all been picked. You stand on tip-toe to reach the tops of the bramble bushes.
 <br><br>
 <<if $tendingSuccess>>
-	<<wearProp "blackberry">>
 	<span class="green">You manage to gather a number of juicy-looking specimens.</span>
 	<<tending_pick blackberry 60 180>>
 	<br><br>
 
-	<<link [[Next|Residential Thicket]]>><<handheldon>><<set $eventskip to 1>><</link>>
+	<<link [[Next|Residential Thicket]]>><<set $eventskip to 1>><</link>>
 	<br>
 <<else>>
 	<span class="red">Try as you might, you can't reach,</span> and you don't want to risk grazing yourself on a thorn.<<gtending>><<tending 2>>
diff --git a/game/overworld-town/loc-beach/balloon.twee b/game/overworld-town/loc-beach/balloon.twee
index ccf11b7666e1c2ad98d1a6ac257e0a3ffec4426c..85bfea681c5c7e82f278df528fe0832bf6531acd 100644
--- a/game/overworld-town/loc-beach/balloon.twee
+++ b/game/overworld-town/loc-beach/balloon.twee
@@ -18,22 +18,14 @@
 	<</if>>
 	<br><br>
 	<<switch $phase>>
-		<<case "popcorn">>
-			<<He>> scoops out some freshly-popped popcorn. The bag's still warm when <<he>> hands it to you.
-			<<set $daily.ex.popcorn to ($daily.ex.popcorn or 0) + 1>>
-			<<wearProp "popcorn">>
-
-			<<if $daily.ex.popcorn is 2 and $balloonStand.owner isnot "angry">>
-				"You must be hungry," <<he>> says. <<print playerBellyVisible() ? `"I suppose you are eating for two." <<He>> smiles, glancing affectionately at your baby bump.` : `"Not getting enough to eat at home?" <<His>> brow creases momentarily, but <<he>> quickly shakes it off.`>>
-			<<elseif $daily.ex.popcorn is 3>>
-				"Gotta save some for the other customers, so I'm gonna have to cut you off after this." <<print $balloonStand.owner is "angry" ? "<<His>> voice is curt" : "<<He>> gives you an apologetic smile">>.
-			<</if>>
-		<<default>>
+		<<case "hot drink" "cold drink">>
 			<<set $daily.ex.balloonDrink to ($daily.ex.balloonDrink or 0) + 1>>
-			<<set _prop to $phase is "cold drink" ? "lemonade" : $phase is "hot cider" ? "hot cider" : "hot cocoa">>
+			<<set _prop to $phase is "cold drink" ? "lemonade" : "cocoa">>
 			<<wearProp _prop>>
 
-			<<set _drink to $phase is "cold drink" ? "glass of ice-cold <<seasonal_beverage>>. The plastic cup swelters in your hand" : "a cup of steaming <<seasonal_beverage>>. The paper cup warms your hands">>
+			<<set _drink to $phase is "hot drink" ?
+			"a cup of steaming <<seasonal_beverage>>. The paper cup warms your hands" :
+			"glass of ice-cold <<seasonal_beverage>>. The plastic cup swelters in your hand">>
 			<<He>> pours you a _drink.
 
 			<<if $daily.ex.balloonDrink is 2>>
@@ -41,10 +33,23 @@
 			<<elseif $daily.ex.balloonDrink is 3>>
 				"Gotta save some for the other customers, so I'm gonna have to cut you off after this." <<He>> gives you an apologetic smile.
 			<</if>>
+
+		<<case "popcorn">>
+			<<He>> scoops out some freshly-popped popcorn. The bag's still warm when <<he>> hands it to you.
+			<<set $daily.ex.popcorn to ($daily.ex.popcorn or 0) + 1>>
+			<<wearProp "popcorn">>
+
+			<<if $daily.ex.popcorn is 2 and $balloonStand.owner isnot "angry">>
+				"You must be hungry," <<he>> says. <<print playerBellyVisible() ? `"I suppose you are eating for two." <<He>> smiles, glancing affectionately at your baby bump.` : `"Not getting enough to eat at home?" <<His>> brow creases momentarily, but <<he>> quickly shakes it off.`>>
+			<<elseif $daily.ex.popcorn is 3>>
+				"Gotta save some for the other customers, so I'm gonna have to cut you off after this." <<print $balloonStand.owner is "angry" ? "<<His>> voice is curt" : "<<He>> gives you an apologetic smile">>.
+			<</if>>
 	<</switch>>
 	"<<print $balloonStand.owner is "angry" ? "There you go. Get lost." : either("Good to see you, love.", "Have a great rest of your day now.", "Thanks for your custom.", "Enjoy!")>>"
 	<br><br>
 	<<switch $phase>>
+		<<case "hot drink" "cold drink">>
+			<<link [[Take a sip (0:15)|Balloon Consume]]>><<stress -9>><<pass 15>><</link>><<lstress>><br>
 		<<case "popcorn">>
 			<<link [[Eat the popcorn (0:15)|Balloon Consume]]>><<set $phase to $balloonStand.robin.status is "help needed" ? "ask_eat" : "popcorn">><<trauma -3>><</link>><<ltrauma>><br>
 			<<if $balloonStand.robin.status is "help needed">>
@@ -52,18 +57,16 @@
 			<<else>>
 				<<link [[Save it for later|Beach]]>><<set $eventskip to 1>><<set $popcorn += 1>><<endevent>><</link>>
 			<</if>>
-		<<default>>
-			<<link [[Take a sip (0:15)|Balloon Consume]]>><<stress -9>><<pass 15>><</link>><<lstress>><br>
 	<</switch>>
 
 :: Balloon Consume
 <<effects>>
 
 <<switch $phase>>
+	<<case "hot drink">>You take a careful sip, careful not to scald your tongue. The <<seasonal_beverage>> is rich <<print Time.season is "winter" ? "and creamy" : "with spices">>, and you can feel the stress melting away.
 	<<case "cold drink">>You take a sip. The <<seasonal_beverage>> is <<print Time.season is "spring" ? "pleasantly fruity" : "tart">> and refreshing, and you can feel the stress melting away.
 	<<case "popcorn" "park" "ask_eat">>You pop a handful of popcorn into your mouth. It's buttery and salty, and it brings back nostalgic memories of trips to the cinema.
 	<<case "ask">>You fold over the top of the bag so popcorn doesn't spill everywhere before pocketing it.<<handheldon>>
-	<<default>>You take a careful sip, careful not to scald your tongue. The <<seasonal_beverage>> is rich <<print Time.season is "winter" ? "and creamy" : "with spices">>, and you can feel the stress melting away.
 <</switch>>
 <br><br>
 <<if ["ask","ask_eat"].includes($phase)>>
@@ -512,10 +515,10 @@ You take your leave and let the <<person>> finish setting up <<his>> stall.
 		<</if>>
 		<<if $balloonStand.robin.status is "sabotaged" and $money gte 300 and !($daily.ex.balloonDrink gte 3)>>
 			<<switch Time.season>>
-				<<case "winter">><<set _drink to "hotcocoa">><<set _phase to "hot cocoa">>
+				<<case "winter">><<set _drink to "hotcocoa">><<set _phase to "hot drink">>
 				<<case "spring">><<set _drink to "strawberrylemonade">><<set _phase to "cold drink">>
 				<<case "summer">><<set _drink to "lemonade">><<set _phase to "cold drink">>
-				<<default>><<set _drink to "hotcider">><<set _phase to "hot cider">>
+				<<default>><<set _drink to "hotcider">><<set _phase to "hot drink">>
 			<</switch>>
 			<br>
 			<<foodicon _drink>><<link [[Buy something to drink (0:02 £3)|Balloon Purchase]]>><<set $money -= 300>><<set $phase to _phase>><<pass 2>><</link>>
diff --git a/game/overworld-town/loc-beach/main.twee b/game/overworld-town/loc-beach/main.twee
index 901ac3100c98ff2fe158ae751e4375636d00a799..7456f9333b5e51e760dc116d6b3d9fc882a26e98 100644
--- a/game/overworld-town/loc-beach/main.twee
+++ b/game/overworld-town/loc-beach/main.twee
@@ -1137,7 +1137,6 @@ You feel everyone's eyes on your body as you walk onto the dry sand and into the
 <<if playerBellyVisible()>>
 		A <<generatey2>><<person2>><<person>> almost passes you a cold beer, but stops when <<he>> sees your baby bump.
 <<else>>
-	<<wearProp "beerbottle">>
 	You're handed a cold beer by a <<generatey2>><<person2>><<person>>.
 	 <<if playerIsPregnant() and playerAwareTheyArePregnant()>>
 		You're not comfortable drinking while you know you're pregnant.
diff --git a/game/overworld-town/loc-brothel/main.twee b/game/overworld-town/loc-brothel/main.twee
index 972c6f8356f0bcb279c7831f01a93a8c184c782c..d86ae02790ad7ba1e60bfa6a6492ced683a2f2b7 100644
--- a/game/overworld-town/loc-brothel/main.twee
+++ b/game/overworld-town/loc-brothel/main.twee
@@ -261,7 +261,7 @@ You are in the brothel's dressing room. There are a few mirrors, currently occup
 :: Brothel Mirror
 <<effects>>
 
-<<icon "adultclothing.png">><<link [[Step away|Brothel Dressing Room]]>><<handheldon>><<unset $mirrorMenu>><<unset $bodywritingSet>><<postMirror>><</link>>
+<<link [[Step away|Brothel Dressing Room]]>><<unset $mirrorMenu>><<unset $bodywritingSet>><<postMirror>><</link>>
 <br>
 
 <<mirror>>
@@ -1740,10 +1740,10 @@ You are in the bathroom at the brothel. There are communal showers for the dance
 <br><br>
 <<else>>You're relieved to find there is still hot water.<</if>>
 
-You wash until you're squeaky clean.<<wash>><<wearProp "soap">>
+You wash until you're squeaky clean.<<wash>>
 <br><br>
 
-<<skinicon "masturbate">><<link [[Masturbate|Brothel Shower Masturbation]]>><<handheldon>><<set $masturbationstart to 2>><</link>>
+<<skinicon "masturbate">><<link [[Masturbate|Brothel Shower Masturbation]]>><<set $masturbationstart to 2>><</link>>
 <br>
 
 <<getouticon>><<link [[Get out->Brothel Bathroom]]>><<clotheson>><</link>>
@@ -2491,21 +2491,21 @@ You tell Briar you are not interested in <<his>> conditions.
 <<effects>>
 <<if $phase is 1>>
 	You insert the money into the machine and a 3-pack of condoms slides into a drawer. You take them.
-	<<wearProp "condom">>
 	<<set $money -= 8000>>
 	<<gcondoms 3>>
 	<<set $brothelVending.condoms -=1>>
 	<<set $brothelVending.condomsSold +=1>>
+	<br><br>
+	<<link [[Back|Brothel Dressing Room]]>><<endevent>><</link>>
 <<else>>
 	You insert the money into the machine and a bottle of lube slides into a drawer. You take it.
-	<<wearProp "lube">>
 	<<set $money -= 3000>>
 	<<run window.sexShopOnBuyClick(8, false, false, false)>>
 	<<set $brothelVending.lube -=1>>
 	<<set $brothelVending.lubeSold +=1>>
+	<br><br>
+	<<link [[Back|Brothel Dressing Room]]>><<endevent>><</link>>
 <</if>>
-<br><br>
-<<link [[Back|Brothel Dressing Room]]>><<endevent>><</link>>
 
 :: Brothel Escort Job Intro
 <<effects>>
diff --git a/game/overworld-town/loc-bus-station/main.twee b/game/overworld-town/loc-bus-station/main.twee
index 271db2c14c0929d2f009170881d440e8a774e9cb..3ddbe8d9e2b835240cc02a40c446e5ac1334769a 100644
--- a/game/overworld-town/loc-bus-station/main.twee
+++ b/game/overworld-town/loc-bus-station/main.twee
@@ -29,9 +29,10 @@ You are in the bus station.
 				<<if $smuggler_location is "bus" and $smuggler_timer is 0 and Time.hour gte 18>>
 					<<smugglerdifficultyactions>>
 				<</if>>
-				<<alleyicon>><<link [[Industrial alleyways (0:02)|Industrial alleyways]]>><<pass 2>><</link>>
 				<br>
-				<<exiticon "flip">><<link [[Leave via front door (0:02)->Bus Station Front Door]]>><<pass 2>><</link>>
+				<<exiticon>><<link [[Leave via back door (0:02)|Industrial alleyways]]>><<pass 2>><</link>>
+				<br>
+				<<harvesticon>><<link [[Harvest Street (0:02)->Bus Station Front Door]]>><<pass 2>><</link>>
 				<br><br>
 			<</if>>
 		<<else>>
@@ -51,10 +52,11 @@ You are in the bus station.
 			<<if $smuggler_location is "bus" and $smuggler_timer is 0>>
 				<<smugglerdifficultyactions>>
 			<</if>>
-			<<alleyicon>><<link [[Industrial alleyways (0:02)|Industrial alleyways]]>><<pass 2>><</link>>
 			<br>
-			<<exiticon "flip">><<link [[Leave via front door (0:02)->Bus Station Front Door]]>><<pass 2>><</link>>
-			<br><br>
+
+			<<exiticon>><<link [[Leave via back door (0:02)|Bus Station Back Door]]>><<pass 2>><</link>>
+			<br>
+			<<harvesticon>><<link [[Harvest Street (0:02)->Bus Station Front Door]]>><<pass 2>><</link>>
 			<br><br>
 		<<else>>
 			<<exiticon>><<link [[Leave via back door (0:02)|Bus Station Back Door]]>><<pass 2>><</link>>
@@ -100,11 +102,8 @@ A tall blonde girl in a crisp black outfit walks around the bonnet, and slashes
 */
 
 :: Bus Station Front Door
-<<set $outside to 0>><<effects>><<set $lock to 100>>
-
-The front door to the bus station is in front of you. It's locked.
-<br>
 
+<<set $outside to 0>><<effects>><<set $lock to 100>>
 <<if currentSkillValue('skulduggery') gte $lock>>
 	<span class="green">The lock looks easy to pick.</span>
 	<br><br>
@@ -114,15 +113,12 @@ The front door to the bus station is in front of you. It's locked.
 	<span class="red">The lock looks beyond your ability to pick.</span><<skulduggeryrequired>>
 	<br><br>
 <</if>>
-<<busstationicon>><<link [[Leave|Bus Station]]>><</link>>
+<<getouticon>><<link [[Leave|Bus Station]]>><</link>>
 <br>
 
 :: Bus Station Back Door
-<<set $outside to 0>><<effects>><<set $lock to 0>>
-
-The back door to the bus station is in front of you. It leads out to the industrial alleyways.
-<br><br>
 
+<<set $outside to 0>><<effects>><<set $lock to 0>>
 <<if currentSkillValue('skulduggery') gte $lock>>
 	<span class="green">The lock looks easy to pick.</span>
 	<br><br>
@@ -132,14 +128,11 @@ The back door to the bus station is in front of you. It leads out to the industr
 	<span class="red">The lock looks beyond your ability to pick.</span><<skulduggeryrequired>>
 	<br><br>
 <</if>>
-<<busstationicon>><<link [[Leave|Bus Station]]>><</link>>
+<<getouticon>><<link [[Leave|Bus Station]]>><</link>>
 <br>
 
 :: Bus Station Entrance
 
-The front door to the bus station is locked.
-<br>
-
 <<set $outside to 1>><<effects>><<set $lock to 100>>
 <<if currentSkillValue('skulduggery') gte $lock>>
 	<span class="green">The lock looks easy to pick.</span>
@@ -150,14 +143,11 @@ The front door to the bus station is locked.
 	<span class="red">The lock looks beyond your ability to pick.</span><<skulduggeryrequired>>
 	<br><br>
 <</if>>
-<<harvesticon>><<link [[Leave|Harvest Street]]>><</link>>
+<<harvest>><<link [[Leave|Harvest Street]]>><</link>>
 <br>
 
 :: Bus Station Back Entrance
 
-The back door to the bus station is locked.
-<br>
-
 <<set $outside to 1>><<effects>><<set $lock to 0>>
 <<if currentSkillValue('skulduggery') gte $lock>>
 	<span class="green">The lock looks easy to pick.</span>
diff --git a/game/overworld-town/loc-bus/main.twee b/game/overworld-town/loc-bus/main.twee
index 57db6374607348eace8c1a357beaece43e679520..78ea4c86e86692a54c9ca27e9fd01d1e987766c9 100644
--- a/game/overworld-town/loc-bus/main.twee
+++ b/game/overworld-town/loc-bus/main.twee
@@ -296,7 +296,7 @@ You cautiously look around the bus. No one seems to have noticed your predicamen
 <</if>>
 
 :: Stranger rescue bus
-<<wearProp "chocolate bar">>
+
 <<effects>><<pass 1 hour>><<set $hunger -= 500>><<set $thirst -= 500>><<set $stress -= 500>>
 You feel someone shaking your shoulder. You look around and see an old woman smiling at you. She pours you a cup of tea from a flask and gives you a chocolate bar, letting you know that it's important to not let your blood-sugar levels drop too low. You thank her and shortly after the bus arrives at your destination.
 <br><br>
diff --git a/game/overworld-town/loc-cafe/chef.twee b/game/overworld-town/loc-cafe/chef.twee
index ab318a944903b6f7be91920bc8d867ba73b492b0..c3618f46cda62c954f3adcaab6c22d7e0fd62e60 100644
--- a/game/overworld-town/loc-cafe/chef.twee
+++ b/game/overworld-town/loc-cafe/chef.twee
@@ -429,7 +429,6 @@ You make sure you're alone in the kitchen, and place a bowl in front of you.
 <<set $chef_event += 20>>
 
 <<npc Sam>><<person1>>
-<<wearProp "whisk">>
 
 <<if $masturbation_fluid gte 30>>
 	<<if _temp_timer lte 10>>
@@ -489,11 +488,13 @@ You make sure you're alone in the kitchen, and place a bowl in front of you.
 
 <<pass 50>>
 
-<<link [[Next|Ocean Breeze]]>><<endevent>><</link>>
+<<endevent>>
+
+<<link [[Next|Ocean Breeze]]>><</link>>
 <br>
 
 :: Chef Work Regular
-<<set $outside to 0>><<set $location to "cafe">><<effects>><<wearProp "whisk">>
+<<set $outside to 0>><<set $location to "cafe">><<effects>>
 
 <<npc Sam>><<person1>>
 <<pass 60>>
@@ -506,7 +507,9 @@ You're cleaning up when Sam enters the kitchen.
 "Still," <<he>> continues. "You've earned this." <<He>> hands you <<moneyGain 10>>.
 <br><br>
 
-<<link [[Next|Ocean Breeze]]>><<endevent>><</link>>
+<<endevent>>
+
+<<link [[Next|Ocean Breeze]]>><</link>>
 <br>
 
 :: Chef Photographer
diff --git a/game/overworld-town/loc-cafe/main.twee b/game/overworld-town/loc-cafe/main.twee
index 6ec43f2c5f437e2c1fc05325bcb06e52b1a99350..e06d72e19e553f67e6a35f471c417886b44c7996 100644
--- a/game/overworld-town/loc-cafe/main.twee
+++ b/game/overworld-town/loc-cafe/main.twee
@@ -769,7 +769,6 @@ Please be patient with them; they don't mean nothing by it! We're always underst
 <</if>>
 
 :: Ocean Breeze Plates
-<<wearProp "tray">>
 <<if $phase is 0>>
 	It takes a few minutes, but you manage to get everything to the table.
 	<br><br>
diff --git a/game/overworld-town/loc-chalets/widgets.twee b/game/overworld-town/loc-chalets/widgets.twee
index 998a5877c55c12fb4faa9eb664a15d307a99f5da..d258bf26cc13f63559e59b332bcad03c26f077f6 100644
--- a/game/overworld-town/loc-chalets/widgets.twee
+++ b/game/overworld-town/loc-chalets/widgets.twee
@@ -232,19 +232,14 @@
 <<widget "chalets_bags">>
 <<switch $chalets_bags>>
     <<case 5>>
-        <<wearProp "trash bag">>
-		You have <span class="gold">5</span> bags of rubbish. Deliver them to the manager on Starfish Street for payment.
+        You have <span class="gold">5</span> bags of rubbish. Deliver them to the manager on Starfish Street for payment.
     <<case 4>>
-		<<wearProp "trash bag">>
         You have <span class="gold">4</span> bags of rubbish. Deliver them to the manager on Starfish Street for payment.
     <<case 3>>
-		<<wearProp "trash bag">>
         You have <span class="gold">3</span> bags of rubbish. Deliver them to the manager on Starfish Street for payment.
     <<case 2>>
-		<<wearProp "trash bag">>
         You have <span class="gold">2</span> bags of rubbish. Deliver them to the manager on Starfish Street for payment.
     <<case 1>>
-		<<wearProp "trash bag">>
         You have <span class="gold">1</span> bag of rubbish. Deliver them to the manager on Starfish Street for payment.
     <<default>>
         You have no bags of rubbish.
diff --git a/game/overworld-town/loc-compound/main.twee b/game/overworld-town/loc-compound/main.twee
index f57f785a781d31f27a8a7e253fda8e8cb08fef60..425cf6c22e29b66c4063e50747420d6b60238dfb 100644
--- a/game/overworld-town/loc-compound/main.twee
+++ b/game/overworld-town/loc-compound/main.twee
@@ -231,7 +231,7 @@ A green light flashes above. You feel a rumble, and the door opens. A <<person>>
 <br>
 
 :: Elk Compound Sell
-<<effects>><<wearProp "aphrodisiac jar">>
+<<effects>>
 
 You offer the
 <<if $phials_held gte 2>>
@@ -1263,7 +1263,7 @@ You walk up to the gate. It's guarded by two security guards. <<generateSecurity
 <br><br>
 
 <<if $phials_held gte 1>>
-	<<icon "lust.png">><<link [[Show them the aphrodisiac phial|Elk Compound Show]]>><</link>>
+	<<ind>><<link [[Show them the aphrodisiac phial|Elk Compound Show]]>><</link>>
 	<br>
 <</if>>
 <<if $compoundcard is 1>>
@@ -1275,7 +1275,7 @@ You walk up to the gate. It's guarded by two security guards. <<generateSecurity
 
 
 :: Elk Compound Show
-<<effects>><<wearProp "aphrodisiac jar">>
+<<effects>>
 
 You hold out the phial. The <<person>> peers at it. "Hmph," <<he>> sounds. "Fine. Central building. Make your delivery and get out." <<His>> companion disappears into a booth, and the gates shudder open.
 <br><br>
diff --git a/game/overworld-town/loc-compound/wraith.twee b/game/overworld-town/loc-compound/wraith.twee
index fceef9397d8cf951bb918dd6147cf9e3b2d351f5..e60e54f33666eee87c2cf67e0c168e11bea46363 100644
--- a/game/overworld-town/loc-compound/wraith.twee
+++ b/game/overworld-town/loc-compound/wraith.twee
@@ -462,7 +462,7 @@ The <<person>> collapses to the ground, groaning. <<He>> tries to push <<himself
 	<</if>>
 	<br>
 	<<if $museumAntiques.antiques.antiquehourglass isnot "found" and $museumAntiques.antiques.antiquehourglass isnot "talk" and $museumAntiques.antiques.antiquehourglass isnot "museum">>
-		<<set $antiquemoney += 1400>><<museumAntiqueStatus "antiquehourglass" "found">><<wearProp "hourglass">>
+		<<set $antiquemoney += 1400>><<museumAntiqueStatus "antiquehourglass" "found">>
 		It reaches into one specific crate, one which didn't appear to be holding a creature at all, and pulls out an ornate hourglass made of an unidentifiable metal, with various inscriptions along the edges. A collector might be interested in it. "<span class="wraith">The sands have long since run dry, but still they do not deserve this. Hold it close, fore it slips through your fingers.</span>"
 	<<else>>
 		<<set $blackmoney += 1000>>
@@ -494,7 +494,6 @@ The <<person>> collapses to the ground, groaning. <<He>> tries to push <<himself
 		It speaks through your mouth, but for once, it doesn't sound angry. "<span class="wraith">Penance. First of many. More than a tool, one day.</span>"
 		<br>
 		<<if $museumAntiques.antiques.antiquehourglass isnot "found" and $museumAntiques.antiques.antiquehourglass isnot "talk" and $museumAntiques.antiques.antiquehourglass isnot "museum">>
-			<<wearProp "hourglass">>
 			<<set $antiquemoney += 1400>><<museumAntiqueStatus "antiquehourglass" "found">>
 			It reaches into one specific crate, one which didn't appear to be holding a creature at all, and pulls out an ornate hourglass made of an unidentifiable metal, with various inscriptions along the edges. A collector might be interested in it. "<span class="wraith">I trust this more in your hands, than I do in theirs. Hold it close, fore it slips through your fingers.</span>"
 		<<else>>
@@ -513,9 +512,9 @@ The <<person>> collapses to the ground, groaning. <<He>> tries to push <<himself
 <br><br>
 
 <<if $possessed>>
-	<span class="nextLink"><<link [[Next.|Elk Compound Possessed Creatures 2]]>><<handheldon>><</link>></span><<nexttext>>
+	<span class="nextLink"><<link [[Next.|Elk Compound Possessed Creatures 2]]>><</link>></span><<nexttext>>
 <<else>>
-	<<link [[Next|Elk Compound Possessed Creatures 2]]>><<handheldon>><</link>><<nexttext>>
+	<<link [[Next|Elk Compound Possessed Creatures 2]]>><</link>><<nexttext>>
 <</if>>
 
 :: Elk Compound Possessed Creatures 2
@@ -599,9 +598,9 @@ A sudden noise draws your attention. A trio of guards, led by a <<person>>, run
 <<actionsman>>
 
 <<if _combatend>>
-	<span id="next"><<link [[Next|Elk Compound Possessed Guards Fight Finish]]>><</link>><<nexttext>>
+	<span id="next"><<link [[Next|Elk Compound Possessed Guards Fight Finish]]>><</link>></span><<nexttext>>
 <<else>>
-	<span id="next"><<link [[Next|Elk Compound Possessed Guards Fight]]>><</link>><<nexttext>>
+	<span id="next"><<link [[Next|Elk Compound Possessed Guards Fight]]>><</link>></span><<nexttext>>
 <</if>>
 
 :: Elk Compound Possessed Guards Fight Finish
diff --git a/game/overworld-town/loc-dance-studio/job.twee b/game/overworld-town/loc-dance-studio/job.twee
index 29ee258c3835eb7ed3851a64ce14d668cd5d6036..d33e1b1ce01a51254b241fc5b9052d031cacbbb7 100644
--- a/game/overworld-town/loc-dance-studio/job.twee
+++ b/game/overworld-town/loc-dance-studio/job.twee
@@ -1946,7 +1946,6 @@ Modern necklaces, bracelets, watches, and other gaudy objects are laid out to se
 
 <<skulduggerycheck>>
 <<if $skulduggerysuccess is 1>>
-	<<wearProp "gold brooch">>
 
 	You render the lock useless, and slip your hand beneath the lid, snatching the brooch away. It belongs in a proper museum.<<crimeUp 500 "thievery">>
 	<<set $antiquemoney += 500>><<museumAntiqueStatus "antiquegoldbrooch" "found">>
diff --git a/game/overworld-town/loc-danube-homes/skulduggery.twee b/game/overworld-town/loc-danube-homes/skulduggery.twee
index 2c29e6eabf378b1c02b1b235f11d8b5749add4ea..778aa6204e51147d9b383dc9c2d6fdb1a0690798 100644
--- a/game/overworld-town/loc-danube-homes/skulduggery.twee
+++ b/game/overworld-town/loc-danube-homes/skulduggery.twee
@@ -281,7 +281,6 @@ You sneak around the mansion and look for anything of value.
 You comb through the row of citrus trees for saleable oranges.
 
 <<if $tendingSuccess>>
-	<<wearProp "orange">>
 	<span class="green">You find a bunch, firm and juicy.</span>
 	<<tending_pick orange 4 14>>
 <<else>>
@@ -289,7 +288,7 @@ You comb through the row of citrus trees for saleable oranges.
 <</if>>
 <br><br>
 
-<<link [[Next|Danube Street]]>><<handheldon>><</link>>
+<<link [[Next|Danube Street]]>><</link>>
 
 
 :: Danube House Wine Cellar
diff --git a/game/overworld-town/loc-danube-homes/work.twee b/game/overworld-town/loc-danube-homes/work.twee
index 512fae2362e0ddd7d459425cea44459ceeeca52f..84de54eb991d77683c454a28e746815361345761 100644
--- a/game/overworld-town/loc-danube-homes/work.twee
+++ b/game/overworld-town/loc-danube-homes/work.twee
@@ -43,7 +43,7 @@ You walk up to one of the mansions and knock on the door.
 		<<set $phase to 2>>
 	<</addinlineevent>>
 	<<addinlineevent "Danube Tea Pre-Intro">>
-		<<generate1>><<person1>>A <<person>> answers the door. <<He>> examines you head to feet before speaking. "Such a fine thing," <<he>> says. "Is there anything I can do for you?"
+		<<generate1>><<person1>>A <<person>> answers the door. <<He>> examines you head to toe before speaking. "Such a fine thing," <<he>> says. "Is there anything I can do for you?"
 		<<set $phase to 3>>
 	<</addinlineevent>>
 	<<addinlineevent "Danube Garden Pre-Intro">>
diff --git a/game/overworld-town/loc-domus-homes/work.twee b/game/overworld-town/loc-domus-homes/work.twee
index aab9cb58a8e1c8f0f120551b286be72aac6277e9..075cb27e21538c87b510b66b4facdc9ff40fec4d 100644
--- a/game/overworld-town/loc-domus-homes/work.twee
+++ b/game/overworld-town/loc-domus-homes/work.twee
@@ -868,7 +868,7 @@ Once you round a corner you look more closely at the envelope. It's unmarked, an
 
 :: Domus Painting
 <<set $outside to 0>><<set $location to "town">><<effects>><<set $bus to "domus">>
-<<wearProp "paintbrush">>
+
 The <<person1>><<person>> leads you to the second floor and into a small, empty room. A tin of paint sits on a step ladder, beside a collection of brushes and a roller.
 <br><br>
 
diff --git a/game/overworld-town/loc-flats/main.twee b/game/overworld-town/loc-flats/main.twee
index 04607c4e2455b0fa5c02113c1876784775a1e3f0..fe231d023c0f5a97748fe7825a88d0ed139358a8 100644
--- a/game/overworld-town/loc-flats/main.twee
+++ b/game/overworld-town/loc-flats/main.twee
@@ -272,7 +272,7 @@ You are on the ground floor of a block of flats on Barb Street. The walls and fl
                 <br>
             <</if>>
         <</if>>
-        <br>
+        <br><br>
         <<barbicon>><<link [[Leave|Barb Street]]>><</link>>
         <br>
     <</if>>
@@ -393,7 +393,7 @@ You knock on a door. Footsteps thud on the other side, then the door swings open
 <<His>> gaze flicks over your body once. "What do you want?"
 <br><br>
 
-<<askicon>><<link [[Ask for work (1:00)|Flats Knock Intro 2]]>><<wearProp "rag" "grey">><<pass 60>><</link>>
+<<askicon>><<link [[Ask for work (1:00)|Flats Knock Intro 2]]>><<pass 60>><</link>>
 <br>
 <<getouticon>><<link [[Say you've got the wrong address and leave|Flats]]>><<endevent>><</link>>
 <br>
@@ -404,11 +404,10 @@ You knock on a door. Footsteps thud on the other side, then the door swings open
 
 "Bathroom needs cleaning," <<he>> says, opening the door all the way. "First door on the right. You'll find cleaning materials on the shelf."
 <br><br>
-You enter the bathroom. It's quite clean already, but the bath is stained. There are several bottles on the shelf, along with a rag. The rag is almost clean as well. You turn the bottles, but find they're completely unmarked.
 
 <<if $housekeeping gte 100>>
     <<set $flats_progress to 1>>
-    You try to open the closest. The lid is stuck, but you use the rag for extra purchase, and manage to twist it off.
+    You enter the bathroom. It's quite clean already, but the bath is stained. There are several bottles on the shelf, along with a rag. The rag is almost clean as well. You turn the bottles, but find they're completely unmarked. You try to open the closest. The lid is stuck, but you use the rag for extra purchase, and manage to twist it off.
     <br><br>
     You pour the cleaning solution over the bath's surface, and dust the shelves and windowsill while you wait for the chemicals to work. You run the tap, and hose the enamel down with a shower attachment. The chemicals run clear, leaving a pearly white.
     <br><br>
@@ -419,13 +418,13 @@ You enter the bathroom. It's quite clean already, but the bath is stained. There
     <i>You can now work as a cleaner in the flats on Barb Street.</i>
     <br><br>
 <<else>>
-	You try to open one, but the lid is stuck. You have more luck with the next, but you've no idea if it's what you need.
+    You enter the bathroom. It's quite clean already, but the bath is stained. There are several bottles on the shelf, along with a rag. The rag is almost clean as well. You turn the bottles, but find they're completely unmarked. You try to open one, but the lid is stuck. You have more luck with the next, but you've no idea if it's what you need.
     <br><br>
     You pour it into the bath, wait for a few minutes, then run the tap. The water clears, but the stain remains. You try each bottle in turn, but nothing will remove it. You try rubbing the bath with the rag, but to no effect. There's only one bottle left.
     <br><br>
     You twist the lid with all your might. It comes loose, <span class="red">but with too much force.</span> The bottle jerks from your hand, and spills its contents into the bath. It's half empty by the time you get it upright.
     <br><br>
-    The <<person>> walks in on this scene. "Shit," <<he>> says. "I gave you a simple fucking-" <<He>> pauses, and inhales. "It's fine. I'm not paying you though. Get out."
+    The <<person>> walks in on this scene. "Shit," <<he>> says. "I gave you a simple fucking-," <<he>> pauses, and inhales. "It's fine. I'm not paying you though. Get out."
     <br><br>
     <span class="blue">You'll need at least an <span class="pink">F+</span> housekeeping skill to work as a cleaner at the flats.</span>
     <br><br>
diff --git a/game/overworld-town/loc-flats/widgets.twee b/game/overworld-town/loc-flats/widgets.twee
index 85dcaacbfa6cf3d02d23faf94f4423a9aa2f53ce..9805d1b9fe538f313afc56e15ae31c74a17d7fc1 100644
--- a/game/overworld-town/loc-flats/widgets.twee
+++ b/game/overworld-town/loc-flats/widgets.twee
@@ -168,25 +168,3 @@ and
 <<unset $flats_alarm_time>>
 <<unset $flats_alarm_fabric>>
 <</widget>>
-
-<<widget "flats_vents_init">>
-<<set $flats_vents_distance to 0>>
-<</widget>>
-
-<<widget "flats_vents_end">>
-<<unset $flats_vents_distance>>
-<</widget>>
-
-<<widget "flats_vents_links">>
-<<if $flats_vents_distance lt 24>>
-    <<link [[Crawl deeper|Flats Vents]]>><<set $flats_vents_distance += 1>><</link>>
-    <br>
-<</if>>
-<<if $flats_vents_distance gt 0>>
-    <<link [[Crawl towards entrance|Flats Vents]]>><<set $flats_vents_distance -= 1>><</link>>
-<</if>>
-<<if $flats_vents_distance is 0>>
-    <<link [[Laundry room|Flats Vents Leave]]>><</link>>
-    <br>
-<</if>>
-<</widget>>
diff --git a/game/overworld-town/loc-flats/work.twee b/game/overworld-town/loc-flats/work.twee
index 57bfd14b7082d6019c9dc788b52c8e9806318bb7..732ca1c902e2e9fadb7c0be9dcb9c7a40c3e9e51 100644
--- a/game/overworld-town/loc-flats/work.twee
+++ b/game/overworld-town/loc-flats/work.twee
@@ -502,7 +502,7 @@ The <<beasttype>> pulls you in front of <<bhis>> shocked master.
 	<<He>> soon recovers, <<his>> expression replaced with a grin. "A bad mutt indeed," <<he>> says. "Or did you want this?" <<He>> lifts <<his>> phone from the counter, points it at your face, then crouches to get a close-up of the knot.
 	<br><br>
 
-	"It'll shrink soon enough," <<he>> says. Just hang tight. <<Hes>> not wrong. It exits with a plop. Fluid floods out after it, pooling beneath you.
+	"It'll shrink soon enough," <<he>> says. "Just hang tight." <<Hes>> not wrong. It exits with a plop. Fluid floods out after it, pooling beneath you.
 	<br><br>
 	"Bad dog!" <<he>> says, kicking <<his>> pet from the room and shutting the door.
 	<br><br>
@@ -870,7 +870,7 @@ You get to work, ironing the clothes and folding them neatly in a pile. The <<pe
 :: Flats Laundry Coffee
 <<effects>><<wearProp "coffee">>
 
-You get to work, ironing the clothes and folding them neatly in a pile. The <<person>> returns with a mug of coffee. "Instant, I'm afraid. I only keep it for guests." It doesn't taste bad.
+You get to work, ironing the clothes and folding them neatly in a pile. The <<person>> returns with a mug of coffee. "Instant I'm afraid. I only keep it for guests." It doesn't taste bad.
 <br><br>
 
 <<link [[Next|Flats Laundry Drink]]>><</link>>
diff --git a/game/overworld-town/loc-home/event-widgets.twee b/game/overworld-town/loc-home/event-widgets.twee
index fddf1f99519d0df7a085c3855c5285403fc09701..c64c0838279436056a64eb398517d938642a0552 100644
--- a/game/overworld-town/loc-home/event-widgets.twee
+++ b/game/overworld-town/loc-home/event-widgets.twee
@@ -122,7 +122,7 @@
 				<<npc Bailey>><<generateyv2>><<generateyv3>>You hear excited voices up a flight of stairs. At the top, a <<person2>><<person>> and <<person3>><<person>> are taking turns jumping in the air, grasping at the ceiling.
 				<br><br>
 
-				You climb up, and reach the higher floor just as the <<person2>><<person>> places a stool to gain more reach. The <<person3>><<person>> smiles at you. "You're a bit taller than us," <<he>> says. "There's a cord up there. Could you pull it? We want to see what happens.
+				You climb up, and reach the higher floor just as the <<person2>><<person>> places a stool to gain more reach. The <<person3>><<person>> smiles at you. "You're a bit taller than us," <<he>> says. "There's a cord up there. Could you pull it? We want to see what happens."
 				<br><br>
 
 				<<link [[Pull the cord|Orphanage Loft Intro]]>><<set $phase to 0>><</link>>
@@ -600,13 +600,11 @@
 			<<if $spray gte $spraymax or random(1, 100) gte 71>>
 				<<He>> hands you a bulging envelope you've never seen before. Inside is
 				<<if $museumAntiques.antiques.antiquesilverbrooch isnot "found" and $museumAntiques.antiques.antiquesilverbrooch isnot "talk" and $museumAntiques.antiques.antiquesilverbrooch isnot "museum">>
-					<<wearProp "silver brooch">>
 					a silver brooch. It looks old. Perhaps a collector would be interested in it.
 					<<set $antiquemoney += 50>><<museumAntiqueStatus "antiquesilverbrooch" "found">>
 				<<else>>
 					<<switch random(1, 3)>>
 						<<case 1>>
-							<<wearProp "silver brooch">>
 							a silver brooch. It looks old. Perhaps a collector would be interested in it.
 							<<set $antiquemoney += 50>><<museumAntiqueStatus "antiquesilverbrooch" "found">>
 						<<case 2>>
@@ -626,7 +624,7 @@
 
 			<</if>>
 			<<endevent>>
-			<<link [[Next|Orphanage]]>><<handheldon>><</link>>
+			<<link [[Next|Orphanage]]>><</link>>
 			<br>
 		<<case 5>>
 			A group of orphans are playing darts. A picture of Bailey has been tacked onto the board.
diff --git a/game/overworld-town/loc-home/garden.twee b/game/overworld-town/loc-home/garden.twee
index de1b1da72a90cd979cb8504fde02a9e9f51bccd4..99c65f49b244a4900ac05f3cbdddde6390e9b2d2 100644
--- a/game/overworld-town/loc-home/garden.twee
+++ b/game/overworld-town/loc-home/garden.twee
@@ -495,7 +495,7 @@ You look over your shoulder to make sure you aren't being watched, then hoist yo
 		<br>
 	<</if>>
 	<br>
-	<<getouticon>><<link [[Leave|Garden]]>><<handheldon>><</link>>
+	<<getouticon>><<link [[Leave|Garden]]>><</link>>
 	<br>
 <</if>>
 
@@ -829,7 +829,7 @@ You squeeze <<his>> hips between your thighs for a moment and lean closer. "You'
 
 :: Garden Robin Help
 <<effects>>
-<<set _robin to statusCheck("Robin")>><<wearProp "watering can">>
+<<set _robin to statusCheck("Robin")>>
 
 <<for _plot range $plots["garden"]>>
 	<<set _plot.water to 1>>
@@ -846,9 +846,9 @@ You hand Robin your watering can, and <<he>> gets to work while you find another
 Job well done, Robin sits on the grass and watches the flowers sway in the breeze.
 <br><br>
 
-<<link [[Sit with Robin (0:05)|Garden Robin Sit]]>><<handheldon>><<pass 5>><<npcincr Robin love 1>><</link>><<glove>>
+<<link [[Sit with Robin (0:05)|Garden Robin Sit]]>><<pass 5>><<npcincr Robin love 1>><</link>><<glove>>
 <br>
-<<link [[Make Robin a flower crown (0:10)|Garden Robin Crown]]>><<handheldon>><<pass 10>><</link>><<tendingdifficulty 1 200>>
+<<link [[Make Robin a flower crown (0:10)|Garden Robin Crown]]>><<pass 10>><</link>><<tendingdifficulty 1 200>>
 <br>
 
 
diff --git a/game/overworld-town/loc-home/main.twee b/game/overworld-town/loc-home/main.twee
index 346828a3642c2e47f2b4eb095ccb3957c7f88241..149d4d62218b6856c744d31525786847e27c0768 100644
--- a/game/overworld-town/loc-home/main.twee
+++ b/game/overworld-town/loc-home/main.twee
@@ -1567,16 +1567,16 @@ The water's getting cold. "I'm squeaky clean," you say. "Thanks for the help." T
 		<</if>>
 	<</if>>
 <<elseif $danger gte (9900 - $allure / 3) and $hallucinations gte 2 and $slimedisable is "f" and $swarmdisable is "f" and $controlled is 0>>
-	You wash until you're squeaky clean.<<wash>><<wearProp "soap">>
+	You wash until you're squeaky clean.<<wash>>
 	<br><br>
 
 	As you remove the plug to drain the water, you feel something probe your <<genitals>>. You look between your legs, but you don't see anything abnormal. When you try to stand up however, translucent tendrils rise from the water and force you back down.
 	<br><br>
 
-	<<link [[Next|Bath Slime]]>><<handheldon>><<set $molestationstart to 1>><</link>>
+	<<link [[Next|Bath Slime]]>><<set $molestationstart to 1>><</link>>
 <<elseif ($danger gte (9900 - $allure / 2) and $rng gte 30 and Time.dayState isnot "night") or _DEBUGTIMEBOIS is 1>>
 	<<generatey1>><<generatey2>><<generatey3>><<fameexhibitionism 3>>
-	You wash until you're squeaky clean.<<wash>><<wearProp "soap">>
+	You wash until you're squeaky clean.<<wash>>
 	<br><br>
 
 	As you remove the plug to drain the water, you hear voices from the hallway. They stop outside the door, before flinging it open. A <<fullGroup>> barge in.
@@ -1596,16 +1596,16 @@ The water's getting cold. "I'm squeaky clean," you say. "Thanks for the help." T
 
 		The <<person2>><<person>> blushes. "S-sorry," <<he>> says, not taking <<his>> eyes off you. "We didn't know you were in here."
 		<br><br>
-		<<link [[Scream|Bath Scream]]>><<handheldon>><</link>>
+		<<link [[Scream|Bath Scream]]>><</link>>
 		<br>
-		<<link [[Ask them to leave|Bath Ask]]>><<handheldon>><</link>>
+		<<link [[Ask them to leave|Bath Ask]]>><</link>>
 		<br>
 		<<if hasSexStat("exhibitionism", 5)>>
-			<<link [[Let them watch (0:05)|Bath Watch]]>><<handheldon>><<pass 5>><</link>><<exhibitionist5>>
+			<<link [[Let them watch (0:05)|Bath Watch]]>><<pass 5>><</link>><<exhibitionist5>>
 			<br>
 		<</if>>
 		<<if hasSexStat("promiscuity", 5)>>
-			<<link [[Goad|Bath Sex]]>><<set $sexstart to 1>><<handheldon>><</link>><<promiscuous5>>
+			<<link [[Goad|Bath Sex]]>><<set $sexstart to 1>><</link>><<promiscuous5>>
 			<br>
 		<</if>>
 	<<else>>
@@ -1628,7 +1628,7 @@ The water's getting cold. "I'm squeaky clean," you say. "Thanks for the help." T
 			<br><br>
 		<</if>>
 
-		<<link [[Finish up->Bath Finish]]>><<handheldon>><</link>>
+		<<link [[Finish up->Bath Finish]]>><</link>>
 		<<endevent>>
 	<</if>>
 
@@ -1645,12 +1645,12 @@ The water's getting cold. "I'm squeaky clean," you say. "Thanks for the help." T
     <br>
     <<link [[Shove Kylar Away|Kylar Bath Shove]]>><<npcincr Kylar love -1>><<npcincr Kylar rage 3>><</link>><<llove>><<gksuspicion>>
 <<else>>
-You wash until you're squeaky clean.<<wash>><<wearProp "soap">>
+You wash until you're squeaky clean.<<wash>>
 <br><br>
 
-<<getouticon>><<link [[Get out->Bath Finish]]>><<handheldon>><</link>>
+<<getouticon>><<link [[Get out->Bath Finish]]>><</link>>
 <br>
-<<skinicon "masturbate">><<link [[Masturbate|Bath Masturbation]]>><<handheldon>><<set $masturbationstart to 1>><</link>>
+<<skinicon "masturbate">><<link [[Masturbate|Bath Masturbation]]>><<set $masturbationstart to 1>><</link>>
 <</if>>
 
 :: Kylar Bath Help
@@ -3065,7 +3065,7 @@ Attitudes
 :: Mirror
 <<effects>>
 
-<<bedicon>><<link [[Step away|Bedroom]]>><<handheldon>><<unset $mirrorMenu>><<unset $bodywritingSet>><<postMirror>><</link>>
+<<link [[Step away|Bedroom]]>><<unset $mirrorMenu>><<unset $bodywritingSet>><<postMirror>><</link>>
 <br>
 
 <<mirror>>
@@ -3078,7 +3078,7 @@ Attitudes
 <<if $previousPassage is undefined>>
 	<<set $previousPassage = "Bedroom">>
 <</if>>
-<<ind>><<link [[Step away|$previousPassage]]>><<handheldon>><<unset $mirrorMenu>><<unset $simpleMirror>><<unset $bodywritingSet>><<postMirror>><</link>>
+<<link [[Step away|$previousPassage]]>><<unset $mirrorMenu>><<unset $simpleMirror>><<unset $bodywritingSet>><<postMirror>><</link>>
 <br>
 
 <<mirror>>
@@ -3385,7 +3385,6 @@ You grab your clothes and dress with haste.
 <</if>>
 
 <<shavestrip>>
-<<wearProp "razor">>
 You take off your clothes and look at your <<genitals>>.
 <br>
 <<if $worn.genitals.name is "chastity belt" or $worn.genitals.name is "gold chastity belt">>
@@ -3488,14 +3487,13 @@ You sit down, spread your legs, and start carefully trimming your pubes. After a
 <<link [[Next|Bathroom]]>><<clotheson>><<dontHideRevert>><</link>>
 
 :: Dye pubic hair
-<<effects>><<handheldon>>
+<<effects>>
 
 <<set _ownedColours = $makeup.owned.hairdye.filter(x => x.count > 0)>>
 <<if _ownedColours.length == 0>>
 	You don't own any hair dyes. Maybe you should visit a cosmetics shop to buy some.
 	<br>
 <<else>>
-	<<wearProp "hairdye">>
 	What colour will it be?
 	<br>
 	<<set _choice = _ownedColours[0].colour>>
diff --git a/game/overworld-town/loc-home/mirror.twee b/game/overworld-town/loc-home/mirror.twee
index 61e57c3534ee7c50c8cbb83ab127fd608fda9a3a..b8421fc836f0bf436aebfb8078a81c47287a8c0c 100644
--- a/game/overworld-town/loc-home/mirror.twee
+++ b/game/overworld-town/loc-home/mirror.twee
@@ -15,7 +15,7 @@ The light takes shape and extends into the space in front of you. A single tenta
 <<effects>>
 You pull away from the mirror. The light goes out at once.
 <br><br>
-<<bedicon>><<link [[Step away|Bedroom]]>><<handheldon>><<unset $mirrorMenu>><<unset $bodywritingSet>><<postMirror>><</link>>
+<<link [[Step away|Bedroom]]>><<unset $mirrorMenu>><<unset $bodywritingSet>><<postMirror>><</link>>
 <<mirror>>
 
 :: Eerie Mirror 2
@@ -80,7 +80,9 @@ Several other tentacles form from the light. They dance closer.
 	<<deviancy2>>
 	The light fades, and the tentacles fade with it.
 	<br><br>
-	<<bedicon>><<link [[Step away|Bedroom]]>><<handheldon>><<unset $mirrorMenu>><<unset $bodywritingSet>><<postMirror>><</link>>
+	<<link [[Step away|Bedroom]]>><<unset $mirrorMenu>><<unset $bodywritingSet>><<postMirror>><</link>>
+	<br><br>
+
 	<br><br>
 	<<mirror>>
 <</if>>
diff --git a/game/overworld-town/loc-home/pills.twee b/game/overworld-town/loc-home/pills.twee
index a770958ec0e94fdf1384237c147c6fff4e83f1bf..c780e69ee05721ef9a6bbf8d1dc9f1cab5e158f4 100644
--- a/game/overworld-town/loc-home/pills.twee
+++ b/game/overworld-town/loc-home/pills.twee
@@ -14,15 +14,8 @@
 
 :: Take Pill From Medicine Drawer
 <<print $lastPillTakenDescription>>
-<<if V.lastPillTakenDescription.includes("cream")>>
-	<<wearProp "parasite cream">>
-<<elseif V.lastPillTakenDescription.includes("spray")>>
-	<<wearProp "hairspray">>
-<<else>>
-	<<wearProp "pill bottle">>
-<</if>>
-<br><br>
-<<link [[Return|PillCollection]]>><<handheldon>><<pass 2>><</link>>
+<br><br><br>
+<<link [[Return|PillCollection]]>><<pass 2>><</link>>
 
 :: PillCollection
 <<set $outside to 0>><<effects>>
diff --git a/game/overworld-town/loc-hospital/pharmacy.twee b/game/overworld-town/loc-hospital/pharmacy.twee
index a7ff0a5dbe661c6acdf4baed5bf474c0750df262..5f943f969125816b486204921834ae55e025f26e 100644
--- a/game/overworld-town/loc-hospital/pharmacy.twee
+++ b/game/overworld-town/loc-hospital/pharmacy.twee
@@ -71,12 +71,12 @@
 
 	Parasite Prevention:
 	<br>
-	<<procedureicon "parasite">><<link [[Tube of anti-parasite cream|Pharmacy Sale]]>><<wearProp "parasite cream">><<set $pharmacyItem to setup.pharmacyItems["Anti-Parasite Cream"]>><</link>>
+	<<procedureicon "parasite">><<link [[Tube of anti-parasite cream|Pharmacy Sale]]>><<set $pharmacyItem to setup.pharmacyItems["Anti-Parasite Cream"]>><</link>>
 	<br><br>
 
 	Family Planning:
 	<br>
-	<<sextoysicon "pump">><<link [[Breast pump|Pharmacy Sale]]>><<wearProp "breast pump">><<set $pharmacyItem to setup.pharmacyItems["breast_pump"]>><</link>>
+	<<sextoysicon "pump">><<link [[Breast pump|Pharmacy Sale]]>><<set $pharmacyItem to setup.pharmacyItems["breast_pump"]>><</link>>
 	<br>
 	<<pregnancytesticon>><<link [[Pack of 2 pregnancy tests|Pharmacy Sale]]>><<set $pharmacyItem to setup.pharmacyItems["pregnancy_test"]>><</link>>
 	<br>
@@ -90,7 +90,7 @@
 		<br>
 	<</if>>
 	<<if $condomLvl gte 1>>
-		<<condomicon>><<link [[Pack of 3 condoms|Pharmacy Sale]]>><<wearProp "condom">><<set $pharmacyItem to setup.pharmacyItems["condoms"]>><</link>>
+		<<condomicon>><<link [[Pack of 3 condoms|Pharmacy Sale]]>><<set $pharmacyItem to setup.pharmacyItems["condoms"]>><</link>>
 		<br>
 	<</if>>
 	<<pillicon "contraceptive">><<link [[Pack of 14 contraceptive pills|Pharmacy Sale]]>><<set $pharmacyItem to setup.pharmacyItems["contraceptive_pills"]>><</link>>
@@ -278,7 +278,7 @@ An assortment of colourful contact lenses is displayed behind the glass. You can
 
 :: Pharmacy Sale
 <<set $outside to 0>><<set $location to "hospital">><<effects>>
-The <<person>> looks at the <<print $pharmacyItem.name>> you're holding.
+The <<person>> looks at the <<print $pharmacyItem.name>> you're holding,
 <<formatmoney $pharmacyItem.price>>
 <<switch $pharmacyItem.type>>
 	<<case "penis reduction">>
@@ -306,7 +306,7 @@ The <<person>> looks at the <<print $pharmacyItem.name>> you're holding.
 	<<case "condoms">>
 		"_printmoney please." <<He>> looks you over.
 		<<if $player.gender_appearance is "m">>
-			"Glad to see people playing it safe. Your girl is lucky."
+			"Glad to see people playing it safe, your girl is lucky."
 		<</if>>
 	<<case "pregnancy test">>
 		"_printmoney please." <<He>> looks you over.
@@ -329,9 +329,9 @@ The <<person>> looks at the <<print $pharmacyItem.name>> you're holding.
 	<<case "contraceptive">>
 		"_printmoney please.
 		<<if $player.gender_appearance is "m">>
-			Glad to see people playing it safe. Your girl is lucky.
+			Glad to see people playing it safe, your girl is lucky.
 		<</if>>
-		Take one per day, and try to normalise the time. You still need to be careful, though. The only sure way to be safe is to be abstinent."
+		Take one per day, try to normalise the time. You still need to be careful, the only sure way to be safe is still to be abstinent."
 	<<default>>
 		<<run throw new Error(`Missing pharmacyItem type! ${V.pharmacyItem.type}`)>>
 <</switch>>
@@ -340,15 +340,15 @@ The <<person>> looks at the <<print $pharmacyItem.name>> you're holding.
 <<if $money gte $pharmacyItem.price>>
 	<<switch $pharmacyItem.type>>
 		<<case "Breast Pump">>
-			<<link [[Hand over the money|Pharmacy]]>><<run sexShopOnBuyClick(11, false, V.worn.handheld.colour.replace(" ","-"), false)>><<handheldon>><</link>>
+			<<link [[Hand over the money|Pharmacy]]>><<run sexShopOnBuyClick(11, false)>><</link>>
 		<<case "condoms">>
-			<<link [[Hand over the money|Pharmacy]]>><<handheldon>><<set $money -= $pharmacyItem.price>><<gcondoms 3>><</link>>
+			<<link [[Hand over the money|Pharmacy]]>><<set $money -= $pharmacyItem.price>><<gcondoms 3>><</link>>
 		<<case "pregnancy test">>
-			<<link [[Hand over the money|Pharmacy]]>><<handheldon>><<set $money -= $pharmacyItem.price>><<set $pregnancyTest += 2>><</link>>
+			<<link [[Hand over the money|Pharmacy]]>><<set $money -= $pharmacyItem.price>><<set $pregnancyTest += 2>><</link>>
 		<<case "Anti-Parasite Cream">>
-			<<link [[Hand over the money|Pharmacy]]>><<handheldon>><<set $money -= $pharmacyItem.price>><<set $sexStats.pills.pills[$pharmacyItem.type].owned += 1>><<boughtOnce>><</link>>
+			<<link [[Hand over the money|Pharmacy]]>><<set $money -= $pharmacyItem.price>><<set $sexStats.pills.pills[$pharmacyItem.type].owned += 1>><<boughtOnce>><</link>>
 		<<default>>
-			<<link [[Hand over the money|Pharmacy]]>><<handheldon>><<set $money -= $pharmacyItem.price>><<set $sexStats.pills.pills[$pharmacyItem.type].owned += 14>><<boughtOnce>><</link>>
+			<<link [[Hand over the money|Pharmacy]]>><<set $money -= $pharmacyItem.price>><<set $sexStats.pills.pills[$pharmacyItem.type].owned += 14>><<boughtOnce>><</link>>
 	<</switch>>
 <<else>>
 	<span class="purple">You cannot afford them.</span>
diff --git a/game/overworld-town/loc-island/main.twee b/game/overworld-town/loc-island/main.twee
index 79650c5ffdd04b666ecbb53b1a12acd124e4d29b..7b93b1899e67ffc7fc512cecfefccda2a096fe1b 100644
--- a/game/overworld-town/loc-island/main.twee
+++ b/game/overworld-town/loc-island/main.twee
@@ -399,7 +399,7 @@ Where do you want to explore?
 	<<else>>
 		<<number `$island.walnut + $island.walnut_dried`>> handfuls
 	<</if>>
-	of walnuts stashed away. <<Number $island.walnut_dried>> <<print $island.walnut_dried is 1 ? 'handful is' : 'handfuls are'>> dried and all the more nutritious for it.
+	of walnuts stashed away. <<if $island.walnut_dried gte 1>><<Number $island.walnut_dried>> <<print $island.walnut_dried is 1 ? 'handful is' : 'handfuls are'>> dried and all the more nutritious for it.<</if>>
 	<br>
 	<<if $island.walnut gte 1>>
 		<<islandicon "nuts">><<link [[Eat a handful of raw walnuts|Island Walnut Eat]]>><<set $island.walnut-->><<hunger -200>><</link>><<lhunger>>
@@ -1486,7 +1486,7 @@ A courtyard echoes with the rumble of unseen drums. The islanders smacks their t
 			<br><br>
 			<<He>> takes what remains of the fibre, and turns away, leaving your skin marked with a <<tattoo forehead>>.
 		<<else>>
-			<<He>> pulls you to your feet, examining the myriad tattoos covering your body. <<if $uncomfortable.nude is true>><<covered>><</if>>
+			forehead. <<He>> pauses, before pulling you to your feet, examining the myriad tattoos covering your body. <<if $uncomfortable.nude is true>><<covered>><</if>>
 		<</if>>
 		<br><br>
 		<<link [[Next|Island Defeat Tattoo End]]>><</link>>
@@ -1585,11 +1585,10 @@ The floor carries you with it, until you're pressed against the wall. It continu
 	<<unbind>>
 	<<leg_unbind>>
 	<<person1>>
-	<<wearProp "tea">>
 	You awaken beneath a stony ceiling, lit by flickering firelight. "Ah," says an elderly voice. "Wasn't expecting you back so soon." The <<person>> passes you a cup of weak tea. "When you're feeling ready, I'll show you to my boat."
 	<br><br>
 
-	<<link [[Next|Islander Return Held]]>><<handheldon>><</link>>
+	<<link [[Next|Islander Return Held]]>><</link>>
 	<br>
 <<elseif $spear_vessel is "sea">>
 	<<loadNPC 0 "old_islander">>
@@ -1598,13 +1597,12 @@ The floor carries you with it, until you're pressed against the wall. It continu
 	<<unbind>>
 	<<leg_unbind>>
 	<<person1>>
-	<<wearProp "tea">>
 	You awaken beneath a stony ceiling, lit by flickering firelight. "Ah," says an elderly voice. "Wasn't expecting you back so soon." The <<person>> passes you a cup of weak tea. "When you're feeling ready, I'll show you to my boat."
 	<br><br>
 
-	<<link [[Tell them where the spear is|Islander Return Sea]]>><<handheldon>><</link>>
+	<<link [[Tell them where the spear is|Islander Return Sea]]>><</link>>
 	<br>
-	<<link [[Don't tell them|Islander Return Refrain]]>><<handheldon>><</link>>
+	<<link [[Don't tell them|Islander Return Refrain]]>><</link>>
 	<br>
 
 <<elseif $spear_vessel is "Zephyr">>
@@ -1614,13 +1612,12 @@ The floor carries you with it, until you're pressed against the wall. It continu
 	<<unbind>>
 	<<leg_unbind>>
 	<<person1>>
-	<<wearProp "tea">>
 	You awaken beneath a stony ceiling, lit by flickering firelight. "Ah," says an elderly voice. "Wasn't expecting you back so soon." The <<person>> passes you a cup of weak tea. "When you're feeling ready, I'll show you to my boat."
 	<br><br>
 
-	<<link [[Tell them where the spear is|Islander Return Zephyr]]>><<handheldon>><</link>>
+	<<link [[Tell them where the spear is|Islander Return Zephyr]]>><</link>>
 	<br>
-	<<link [[Don't tell them|Islander Return Refrain]]>><<handheldon>><</link>>
+	<<link [[Don't tell them|Islander Return Refrain]]>><</link>>
 	<br>
 <<elseif $spear_vessel is "temple">>
 	<<loadNPC 0 "old_islander">>
@@ -1629,13 +1626,12 @@ The floor carries you with it, until you're pressed against the wall. It continu
 	<<unbind>>
 	<<leg_unbind>>
 	<<person1>>
-	<<wearProp "tea">>
 	You awaken beneath a stony ceiling, lit by flickering firelight. "Ah," says an elderly voice. "Wasn't expecting you back so soon." The <<person>> passes you a cup of weak tea. "When you're feeling ready, I'll show you to my boat."
 	<br><br>
 
-	<<link [[Tell them where the spear is|Islander Return Temple]]>><<handheldon>><</link>>
+	<<link [[Tell them where the spear is|Islander Return Temple]]>><</link>>
 	<br>
-	<<link [[Don't tell them|Islander Return Refrain]]>><<handheldon>><</link>>
+	<<link [[Don't tell them|Islander Return Refrain]]>><</link>>
 	<br>
 <<elseif $spear_vessel>>
 	 <<loadNPC 0 "old_islander">>
@@ -1644,11 +1640,10 @@ The floor carries you with it, until you're pressed against the wall. It continu
 	<<unbind>>
 	<<leg_unbind>>
 	<<person1>>
-	<<wearProp "tea">>
 	You awaken beneath a stony ceiling, lit by flickering firelight. "Ah," says an elderly voice. "Wasn't expecting you back so soon." The <<person>> passes you a cup of weak tea. "When you're feeling ready, I'll show you to my boat."
 	<br><br>
 
-	<<link [[Next|Islander Return Refrain]]>><<handheldon>><</link>>
+	<<link [[Next|Islander Return Refrain]]>><</link>>
 	<br>
 <<else>>
 	<<generateRole 0 0 "old islander">><<person1>>
diff --git a/game/overworld-town/loc-island/widgets.twee b/game/overworld-town/loc-island/widgets.twee
index 7443a115390d32985cbf32c4c5fe49082f6fce88..afd2ffb99ef7dfcf4133c8c761a3c80bd46459c6 100644
--- a/game/overworld-town/loc-island/widgets.twee
+++ b/game/overworld-town/loc-island/widgets.twee
@@ -750,32 +750,30 @@ You find a walnut tree, with fresh nuts lying about the base.
 	<<set $island.explore_locations.pushUnique("plain")>>
 	The trees part, and open to a vast, uneven plain. There are patches of trees here and there, along with jagged rocks almost as tall as you. Long grass tickles your knees.
 	<br><br>
-	<<set $antiquemoney += 500>><<museumAntiqueStatus "antiqueobsidiandisc" "found">><<wearProp "disc">>
+	<<set $antiquemoney += 500>><<museumAntiqueStatus "antiqueobsidiandisc" "found">>
 	Light catches on something near your feet. Half-buried in the ground is an obsidian disc. It's the size and shape of a large coin. There are no markings, but the perfect round shape suggests it was made by intelligent hands. This might be a good place to find antiques.
 	<br><br>
 
 	<span class="gold">You've discovered the plain.</span>
 	<br><br>
 
-	<<link [[Next|Island]]>><<handheldon>><<island_explore_end>><</link>>
+	<<link [[Next|Island]]>><<island_explore_end>><</link>>
 	<br>
 <</widget>>
 
 <<widget "island_events_arrow">>
-	<<wearProp "islander arrow">>
 	You find an arrow embedded in the ground. It's dirty, but intact. The odd handiwork might be worth something to a collector.
 	<br><br>
 	<<set $antiquemoney += 20>><<museumAntiqueStatus "antiqueislandarrow" "found">>
-	<<link [[Next|Island]]>><<handheldon>><<island_explore_end>><</link>>
+	<<link [[Next|Island]]>><<island_explore_end>><</link>>
 	<br>
 <</widget>>
 
 <<widget "island_events_broken_mask">>
 	You find one of the angular islander masks, lying against a tree. It's broken, with the straps snapped and a crack down the middle. Still, it might be worth something to a collector.
 	<br><br>
-	<<wearProp "islander mask">>
 	<<set $antiquemoney += 40>><<museumAntiqueStatus "antiquewoodenmask" "found">>
-	<<link [[Next|Island]]>><<handheldon>><<island_explore_end>><</link>>
+	<<link [[Next|Island]]>><<island_explore_end>><</link>>
 	<br>
 <</widget>>
 
@@ -784,8 +782,8 @@ You find a walnut tree, with fresh nuts lying about the base.
 	<br><br>
 	The fossil belongs in a museum, and it's easy to pry free.
 	<br><br>
-	<<set $antiquemoney += 50>><<museumAntiqueStatus "antiquetrilobitefossil" "found">><<wearProp "trilobite">>
-	<<link [[Next|Island]]>><<handheldon>><<island_explore_end>><</link>>
+	<<set $antiquemoney += 50>><<museumAntiqueStatus "antiquetrilobitefossil" "found">>
+	<<link [[Next|Island]]>><<island_explore_end>><</link>>
 <</widget>>
 
 <<widget "island_events_overhear">>
diff --git a/game/overworld-town/loc-landfill/events.twee b/game/overworld-town/loc-landfill/events.twee
index d6f3285affb16acf87eb3f57289cf09bb47c7443..41e8b81163206a3c5ad73b9952c6c3d877f1a95b 100644
--- a/game/overworld-town/loc-landfill/events.twee
+++ b/game/overworld-town/loc-landfill/events.twee
@@ -853,12 +853,11 @@ The light flickers, fades, and the shackles release you. The machine sinks back
 	It looks like a sign. It might be worth something to a collector.
 	<br><br>
 	<<set $antiquemoney += 140>><<museumAntiqueStatus "antiqueminesign" "found">>
-	<<wearProp "bailey">>
 <<else>>
 	You pick at the grime, but it's hard, so hard it might just be discoloured metal. <span class="red">You give up</span> after several minutes of fruitless attempt.
 	<br><br>
 
 <</if>>
 
-<<link [[Next|Trash]]>><<set $eventskip to 1>><<handheldon>><</link>>
+<<link [[Next|Trash]]>><<set $eventskip to 1>><</link>>
 <br>
diff --git a/game/overworld-town/loc-landfill/main.twee b/game/overworld-town/loc-landfill/main.twee
index 24c119d48893c111534ab5d876615a192d0c75d9..2778872449d981cc081c676bdb3b7b5a09cf3237 100644
--- a/game/overworld-town/loc-landfill/main.twee
+++ b/game/overworld-town/loc-landfill/main.twee
@@ -220,7 +220,6 @@ You search the piles of rubbish for anything of value.
 		You spot a pink light reflect off the base of the compactor. You investigate, and find a small canister. There's a glass window on the side, letting you see the glowing pink gel within. <span class="gold">This must be the fuel used by the brothel sex machine.</span>
 		<<set $brothel_machine_repair to 3>>
 	<<elseif $rng gte 80>>
-		<<wearProp "incense">>
 		You find an ancient incense burner. It's clearly an antique. You're not sure why anyone would throw it out.
 		<<set $antiquemoney += 100>><<museumAntiqueStatus "antiquetrashburner" "found">><<crimeUp 100 "thievery">>
 
@@ -295,7 +294,6 @@ You search the piles of rubbish for anything of value.
 	<</if>>
 <<elseif $trash gte 10>>
 	<<if $rng gte 80>>
-		<<wearProp "cup">>
 		You find a stained metal cup. You wipe the grime off, and reveal a silver shine beneath. It looks like it belongs in a museum.
 		<<set $antiquemoney += 50>><<museumAntiqueStatus "antiquetrashcup" "found">><<crimeUp 20 "thievery">>
 	<<elseif $rng gte 60>>
@@ -347,12 +345,12 @@ You search the piles of rubbish for anything of value.
 	<<generatey1>><<generatey2>><<generatey3>><<generatey4>><<generatey5>><<generatey6>>
 	You hear the sound of <<group>> in the distance.
 	<br><br>
-	<<link [[Investigate|Trash Compare]]>><<handheldon>><</link>>
+	<<investigateicon>><<link [[Investigate|Trash Compare]]>><</link>>
 	<br>
 	<<link [[Ignore|Trash]]>><<endevent>><</link>>
 	<br>
 <<else>>
-	<<link [[Next|Trash]]>><<handheldon>><</link>>
+	<<link [[Next|Trash]]>><</link>>
 	<br>
 <</if>>
 
diff --git a/game/overworld-town/loc-market/widgets.twee b/game/overworld-town/loc-market/widgets.twee
index d4fadcd1afa8bbadb4cf02614a54f7bd915b0391..ec88da59bbdf910d031d389fd10b426f6e3274dc 100644
--- a/game/overworld-town/loc-market/widgets.twee
+++ b/game/overworld-town/loc-market/widgets.twee
@@ -14,10 +14,10 @@
 		<br>
 	<<else>>
 		<<if random(1, 10000) is 10000>>
-			<<stallicon "open">><<link [[Capitalism ho! (0:20)|Stall]]>><<endevent>><<endstall>><<pass 20>><</link>>
+			<<ind>><<link [[Capitalism ho! (0:20)|Stall]]>><<endevent>><<endstall>><<pass 20>><</link>>
 			<br>
 		<<else>>
-			<<stallicon "open">><<link [[Continue (0:20)|Stall]]>><<endevent>><<endstall>><<pass 20>><</link>>
+			<<ind>><<link [[Continue (0:20)|Stall]]>><<endevent>><<endstall>><<pass 20>><</link>>
 			<br>
 		<</if>>
 		<<if $worn.lower.name isnot "naked">>
diff --git a/game/overworld-town/loc-museum/bdsm.twee b/game/overworld-town/loc-museum/bdsm.twee
index 2aedbb060237067505772d552445eb8f9b793294..1ac10b94623acd365aa4f0648913a1ba8a086492 100644
--- a/game/overworld-town/loc-museum/bdsm.twee
+++ b/game/overworld-town/loc-museum/bdsm.twee
@@ -363,7 +363,6 @@ You are plunged once more into the cold water.
 	<br><br>
 	<<earnFeat "Submerged">>
 	<<if $museumAntiques.antiques.antiquesilvermask isnot "found" and $museumAntiques.antiques.antiquesilvermask isnot "talk" and $museumAntiques.antiques.antiquesilvermask isnot "museum">>
-		<<wearProp "silver mask">>
 		Something <span class="gold">glints</span> in the riverbed, poking from the silt beside your feet.
 		You nudge it free. <span class="gold">A metal mask stares up at you,</span> its face contorted into a sinister smile.
 		It's tarnished, but silver glimmers through in places.
@@ -478,8 +477,9 @@ You arrive at the museum. <<He>> takes you to a small side room, and leaves you
 
 That was terrifying, <span class="green">yet you feel a strong catharsis.</span><<trauma -24>>
 <br><br>
+<<endevent>>
 <<set $museuminterest += 50>>
-<<link [[Next|Museum]]>><<endevent>><<unbindtemp>><<upperruined true>><<lowerruined true>><<storeon "museum">><</link>>
+<<link [[Next|Museum]]>><<unbindtemp>><<upperruined true>><<lowerruined true>><<storeon "museum">><</link>>
 <br>
 
 
@@ -833,7 +833,7 @@ You nod in acknowledgement. <<if $exhibitonism gte 500>>The thought of having an
 <<if playerIsPregnant() and playerBellyVisible()>>
 	Winter leads you back to the staff computer to send out the announcement. <<He>> pauses, looking at your belly. "On second thought, maybe we should wait to take the demonstrations to the next level. Don't want to scare those watching."
 	<br><br>
-
+	
 	<<link [[Next|Museum]]>><<endevent>><</link>>
 	<br>
 <<else>>
diff --git a/game/overworld-town/loc-park/robin.twee b/game/overworld-town/loc-park/robin.twee
index 1fe85c8bb6d92cde3dac4ee6d46e049056d4064e..8aae24464c1c2f9a8b13139899ff7b8407232e71 100644
--- a/game/overworld-town/loc-park/robin.twee
+++ b/game/overworld-town/loc-park/robin.twee
@@ -159,7 +159,6 @@ You take your time with the mug, letting it warm your hands as you sip away at t
 		<</if>>
 	<<elseif $rng gte 61>>
 		"I'd like to give out free samples. Could you take this tray around the park, and offer them to anyone who looks cold? I hope it's not too heavy."
-		<<wearProp "tray">>
 		<<if _robin.trauma gte 40>>
 			<<He>> pauses before handing you the tray. "Hurry back please," <<he>> adds in a quiet voice.
 		<</if>>
@@ -515,7 +514,7 @@ Robin smiles when you return to <<him>>.
 <<npc Robin>><<person1>>
 <<set _robin to statusCheck("Robin")>>
 <<if $masturbation_fluid gte 500>>
-	<<wearProp "milk bottle">>
+
 	<span class="green">The bottle filled with milk,</span> you leave the toilets.
 	<br><br>
 	Robin smiles when <<he>> sees you.
diff --git a/game/overworld-town/loc-park/widgets.twee b/game/overworld-town/loc-park/widgets.twee
index 292e202914e53dc14882783c8864b657b1b28276..a348ba45ce038b46b6fc7dbd6a79d1bab810da0c 100644
--- a/game/overworld-town/loc-park/widgets.twee
+++ b/game/overworld-town/loc-park/widgets.twee
@@ -362,21 +362,3 @@
 
 	<<if $player.gender_appearance isnot $player.gender>><<set $toiletsmistake to 1>><</if>>
 <</widget>>
-
-<<widget "eventstoiletssafe">>
-	<<if Weather.precipitation is "rain">>
-		Rain hammers against the small windows.
-		<br><br>
-	<<else>>
-		Wind rattles the small windows.
-		<br><br>
-	<</if>>
-
-	<<if $bus is "parkmens">>
-		<<link [[Next|Men's Toilets]]>><<set $eventskip to 1>><</link>>
-		<br>
-	<<else>>
-		<<link [[Next|Women's Toilets]]>><<set $eventskip to 1>><</link>>
-		<br>
-	<</if>>
-<</widget>>
diff --git a/game/overworld-town/loc-pirates/activities.twee b/game/overworld-town/loc-pirates/activities.twee
index 1e528d50ab4b7f1172a713d222a2f9377e5c15e8..954e5bb0575cacfd266b3044c3076bd9cd529ed0 100644
--- a/game/overworld-town/loc-pirates/activities.twee
+++ b/game/overworld-town/loc-pirates/activities.twee
@@ -674,46 +674,41 @@ Not many pirates enter the bilge at this time of night. You search the nooks and
 <<if $rng gte 41>>
     <<rng 100>>
     <<if $rng gte 81>>
-		<<wearProp "sword cane">>
         You find a barrel full of old canes. Most are rotted through, and only one is remarkable. As you try to pull it out, you instead unsheath a hidden sword. It looks like an antique.
         <br><br>
-        <<antiqueicon "cane">><<link [[Take it|Pirate Bilge]]>><<handheldon>><<set $antiquemoney += 50>><<museumAntiqueStatus "antiqueswordcane" "found">><</link>>
+        <<antiqueicon "cane">><<link [[Take it|Pirate Bilge]]>><<set $antiquemoney += 50>><<museumAntiqueStatus "antiqueswordcane" "found">><</link>>
         <br>
-        <<getouticon>><<link [[Leave|Pirate Bilge]]>><<handheldon>><</link>>
+        <<getouticon>><<link [[Leave|Pirate Bilge]]>><</link>>
         <br>
     <<elseif $rng gte 61>>
-		<<wearProp "chocolate">>
         You find an old chocolate tin. There's still chocolate inside. It looks safe to eat, but is very old and wouldn't taste nice.
         <br><br>
 
-        <<antiqueicon "chocolate">><<link [[Take it|Pirate Bilge]]>><<handheldon>><<set $antiquemoney += 25>><<museumAntiqueStatus "antiquechocolate" "found">><</link>>
+        <<antiqueicon "chocolate">><<link [[Take it|Pirate Bilge]]>><<set $antiquemoney += 25>><<museumAntiqueStatus "antiquechocolate" "found">><</link>>
         <br>
-        <<getouticon>><<link [[Leave|Pirate Bilge]]>><<handheldon>><</link>>
+        <<getouticon>><<link [[Leave|Pirate Bilge]]>><</link>>
         <br>
     <<elseif $rng gte 41>>
-		<<wearProp "tea caddy">>
         You find an old tea caddy, coated with dust. There's no tea inside, but you can smell residue. It might be worth something to a collector.
         <br><br>
 
-        <<antiqueicon "tea">><<link [[Take it|Pirate Bilge]]>><<handheldon>><<set $antiquemoney += 20>><<museumAntiqueStatus "antiqueteacaddy" "found">><</link>>
+        <<antiqueicon "tea">><<link [[Take it|Pirate Bilge]]>><<set $antiquemoney += 20>><<museumAntiqueStatus "antiqueteacaddy" "found">><</link>>
         <br>
-        <<getouticon>><<link [[Leave|Pirate Bilge]]>><<handheldon>><</link>>
+        <<getouticon>><<link [[Leave|Pirate Bilge]]>><</link>>
         <br>
     <<elseif $rng gte 21>>
-		<<wearProp "figurine">>
         You find a small wooden figurine, perched on a shelf. The wood looks aged, and the design foreign. You're not sure where it's from, but it might be worth something to a collector.
         <br><br>
-        <<antiqueicon "figurine">><<link [[Take it|Pirate Bilge]]>><<set $antiquemoney += 15>><<museumAntiqueStatus "antiquewoodenfigurine" "found">><<handheldon>><</link>>
+        <<antiqueicon "figurine">><<link [[Take it|Pirate Bilge]]>><<set $antiquemoney += 15>><<museumAntiqueStatus "antiquewoodenfigurine" "found">><</link>>
         <br>
-        <<getouticon>><<link [[Leave|Pirate Bilge]]>><<handheldon>><</link>>
+        <<getouticon>><<link [[Leave|Pirate Bilge]]>><</link>>
         <br>
     <<else>>
-		<<wearProp "copper ring">>
         You hear a clink at your feet. You disturbed a copper ring. It doesn't look remarkable, but there is an engraving along one edge. Perhaps it's worth something to a collector.
         <br><br>
-        <<antiqueicon "copper_ring">><<link [[Take it|Pirate Bilge]]>><<set $antiquemoney += 5>><<museumAntiqueStatus "antiquecopperring" "found">><<handheldon>><</link>>
+        <<antiqueicon "copper_ring">><<link [[Take it|Pirate Bilge]]>><<set $antiquemoney += 5>><<museumAntiqueStatus "antiquecopperring" "found">><</link>>
         <br>
-        <<getouticon>><<link [[Leave|Pirate Bilge]]>><<handheldon>><</link>>
+        <<getouticon>><<link [[Leave|Pirate Bilge]]>><</link>>
         <br>
     <</if>>
 <<elseif $rng gte 31>>
diff --git a/game/overworld-town/loc-pirates/attack.twee b/game/overworld-town/loc-pirates/attack.twee
index 3de9750c467639c10cb6a153d87ef002f84b89f5..f70af2085f812b9186e71f9134318c74ef087ac1 100644
--- a/game/overworld-town/loc-pirates/attack.twee
+++ b/game/overworld-town/loc-pirates/attack.twee
@@ -794,7 +794,6 @@ Zephyr turns to you.
 <<if $pirate_attention gte 10>>
     <<if $museumAntiques.antiques.antiquegoldcompass isnot "found" and $museumAntiques.antiques.antiquegoldcompass isnot "talk" and $museumAntiques.antiques.antiquegoldcompass isnot "museum">>
         <<earnFeat "Lost Heirloom">>
-		<<wearProp "gold compass">>
         "You've done a mighty fine job here," <<he>> says, reaching into <<his>> jacket. "I want ye to have this." <<He>> produces a compass. It looks like it's made of gold.
         <br><br>
         "I don't need it. The stars light me way, along with me telescope. But it has sentimental value. Was the first thing I ever stole." <<He>> shuts <<his>> eyes as <<he>> holds it out to you, as if <<he>> can't bear the sight of its loss.
@@ -826,7 +825,7 @@ Zephyr turns to you.
 The pirates continue robbing the audience of valuables, tearing jewellery off necks, watches off wrists, emptying purses and wallets into their sacks. No more guns are fired, but anyone who resists gets beaten while the rest of the audience look away.
 <br><br>
 
-<<link [[Next|Pirate Attack Scum End 4]]>><<handheldon>><</link>>
+<<link [[Next|Pirate Attack Scum End 4]]>><</link>>
 <br>
 
 :: Pirate Attack Scum End 4
diff --git a/game/overworld-town/loc-police/community.twee b/game/overworld-town/loc-police/community.twee
index acc4efa3ee862d5d2bb45a1b5703705d1fdeb66c..83ac396ad84da79a1189bbc165c41d59f98538b6 100644
--- a/game/overworld-town/loc-police/community.twee
+++ b/game/overworld-town/loc-police/community.twee
@@ -1340,7 +1340,7 @@ The <<person>> leads you into the alley. A few of the other criminals glance ove
 	<<person1>>
 	<<clearNPC "community_police">>
 	<<clearNPC "community_criminal">>
-	You emerge to see the <<person1>><<person>> shoving the <<person2>><<person>> into the back of the van, <<his>> protests unheeded. You help yourself to <<his>> unattended bag of rubbish.<<wearProp "trash">>
+	You emerge to see the <<person1>><<person>> shoving the <<person2>><<person>> into the back of the van, <<his>> protests unheeded. You help yourself to <<his>> unattended bag of rubbish.
 	<br><br>
 	<<person1>>
 
diff --git a/game/overworld-town/loc-pound/abduction.twee b/game/overworld-town/loc-pound/abduction.twee
index 00bd28d90ce890ea673c3505a26f8777330711b1..44ae8c3794d59464006785f6f6381a0e6086e80a 100644
--- a/game/overworld-town/loc-pound/abduction.twee
+++ b/game/overworld-town/loc-pound/abduction.twee
@@ -1488,7 +1488,7 @@ A tunnel is up next.
 
 You weave between the poles as fast as you can,
 <<if $danceSuccess>>
-	<span class="green">overtaking a struggling <<beasttype 0>></span>
+	<span class="green">overtaking a struggling <<beasttype 0>>.</span>
 	<<set $pound.compete += 1>>
 <<else>>
 	<span class="red">but not fast enough to catch up with the others.</span>
diff --git a/game/overworld-town/loc-prison/events.twee b/game/overworld-town/loc-prison/events.twee
index aa370445d58b31bae73406441b64d44134048232..6a3090eff94ceb876cfa03f87b530708166422c9 100644
--- a/game/overworld-town/loc-prison/events.twee
+++ b/game/overworld-town/loc-prison/events.twee
@@ -45,7 +45,7 @@ You walk closer. <<person2>><<tattooed_inmate 0 cap>> grabs your arm and pulls y
 <<He>> shoves you into a walk, and stays close behind.
 <br><br>
 
-<<person1>>"What have we here?" asks a unfamiliar voice from behind. <<tattooed_inmate 1 cap>> and <<his>> goons spin in alarm. <<scarred_inmate 0 cap>> walks closer, a <<person5>><<person>> and <<person6>><<person>> on either side.
+<<person1>>"What have we here?" asks an unfamiliar voice from behind. <<tattooed_inmate 1 cap>> and <<his>> goons spin in alarm. <<scarred_inmate 0 cap>> walks closer, a <<person5>><<person>> and <<person6>><<person>> on either side.
 <br><br>
 
 <<link [[Next|Prison Attention Gangs]]>><</link>>
diff --git a/game/overworld-town/loc-prison/main.twee b/game/overworld-town/loc-prison/main.twee
index 2ffb78d5d46752a46e1cde3ad62cc0003823bc88..39d317a1a00632fe22e761b586e7e24e17e31fd7 100644
--- a/game/overworld-town/loc-prison/main.twee
+++ b/game/overworld-town/loc-prison/main.twee
@@ -103,7 +103,7 @@ You are in your cell. There's a bed in one corner, and a cupboard in another. A
 :: Prison Mirror
 <<effects>>
 
-<<prisonicon "cell">><<link [[Step away|Prison Cell]]>><<handheldon>><<unset $mirrorMenu>><<unset $bodywritingSet>><<postMirror>><</link>>
+<<link [[Step away|Prison Cell]]>><<unset $mirrorMenu>><<unset $bodywritingSet>><<postMirror>><</link>>
 <br>
 
 <<mirror>>
@@ -325,9 +325,9 @@ You could only dig during lockdown. Too risky otherwise.
 <</if>>
 <br><br>
 
-<<prisonicon "cell">><<link [[Crawl to cell|Prison Cell]]>><</link>>
+<<link [[Crawl to cell|Prison Cell]]>><</link>>
 <br>
-<<beachicon "rocks">><<link [[Climb to beach (0:05)|Prison Beach]]>><<pass 5>><</link>>
+<<link [[Climb to beach (0:05)|Prison Beach]]>><<pass 5>><</link>>
 <br>
 
 :: Prison Bed
@@ -1140,7 +1140,7 @@ You are in the laundry room. The walls give way to raw rock part way in. Thick p
 	<<else>>
 		<<if $prison.schedule is "work">>
 			<<if $prison.job is "laundry">>
-				<<prisonicon "laundry_work">><<link [[Work|Prison Laundry Work]]>><<endevent>><</link>>
+				<<ind>><<link [[Work|Prison Laundry Work]]>><<endevent>><</link>>
 				<br>
 			<<else>>
 				<span class="blue">Your labours are expected elsewhere.</span>
@@ -1181,7 +1181,7 @@ You are in the medical room. Rows of beds stretch down its length, many occupied
 	<<else>>
 		<<if $prison.schedule is "work">>
 			<<if $prison.job is "medical">>
-				<<prisonicon "medical_work">><<link [[Work|Prison Medical Work]]>><</link>>
+				<<link [[Work|Prison Medical Work]]>><</link>>
 				<br>
 			<<else>>
 				<span class="blue">Your labours are expected elsewhere.</span>
@@ -1192,10 +1192,10 @@ You are in the medical room. Rows of beds stretch down its length, many occupied
 			<br>
 			There's a black and yellow door in one corner.
 			<br>
-			<<prisonicon "medical_door">><<link [[Approach|Prison Medical Door]]>><</link>>
+			<<link [[Approach|Prison Medical Door]]>><</link>>
 			<br><br>
 		<</if>>
-		<<getouticon>><<link [[Leave|Prison Walkway]]>><</link>>
+		<<link [[Leave|Prison Walkway]]>><</link>>
 		<br>
 		<<prison_map medical>>
 	<</if>>
@@ -1214,7 +1214,7 @@ You approach the black and yellow door. There's no visible lock, but there is a
 		<br><br>
 	<<else>>
 		<br><br>
-		<<prisonicon "medical_door">><<link [[Enter|Prison Medical Shock]]>><</link>>
+		<<link [[Enter|Prison Medical Shock]]>><</link>>
 		<br>
 	<</if>>
 <<else>>
@@ -1222,7 +1222,7 @@ You approach the black and yellow door. There's no visible lock, but there is a
 	<br><br>
 <</if>>
 
-<<getouticon>><<link [[Leave|Prison Medical]]>><<endevent>><</link>>
+<<link [[Leave|Prison Medical]]>><<endevent>><</link>>
 <br>
 
 :: Prison Medical Shock
@@ -1240,9 +1240,9 @@ The interior is dark, even compared to the rest of the prison. There's a rack of
 This machine doesn't look or sound stable. You could probably inflict irreparable damage with one of the tools lying around, but you wouldn't get away with it.
 <br><br>
 
-<<edenicon "fix">><<link [[Sabotage|Prison Medical Sabotage]]>><<prison_hope 20>><<prison_reb 20>><<set $prison.shock to 0>><<prison_guards -20>><<prison_inmates 20>><</link>><<gggsuspicion>><<gggreb>><<ggghope>><<gggrespect>>
+<<link [[Sabotage|Prison Medical Sabotage]]>><<prison_hope 20>><<prison_reb 20>><<set $prison.shock to 0>><<prison_guards -20>><<prison_inmates 20>><</link>><<gggsuspicion>><<gggreb>><<ggghope>><<gggrespect>>
 <br>
-<<getouticon>><<link [[Leave|Prison Medical]]>><</link>>
+<<link [[Leave|Prison Medical]]>><</link>>
 <br>
 
 :: Prison Medical Sabotage
@@ -1261,7 +1261,7 @@ You lift the largest hammer, one with a wooden handle, and get to work. You smas
 <<generate_methodical_guard 0>>
 <<generate_veteran_guard 1>>
 
-<<methodical_guard 0 cap>><<person1>> arrives with <<veteran_guard 1>> in tow. "What have you done?" <<he>> asks, reaching into <<his>> shirt pocket. <<He>> pulls out a remote, points at you, and presses the button. <span class="green">Nothing happens.</span> <<He>> tries again and again, to no avail.
+<<methodical_guard 0 cap>><<person1>> arrives with <<veteran_guard 1>> in tow. "What have you done," <<he>> asks, reaching into <<his>> shirt pocket. <<He>> pulls out a remote, points at you, and presses the button. <span class="green">Nothing happens.</span> <<He>> tries again and again, to no avail.
 <br><br>
 
 "Back to basics," <<veteran_guard 1>><<person2>> says, stepping forward with <<his>> baton at the ready. "Good. Best come quietly."
@@ -1396,7 +1396,7 @@ You are in the prison yard. It's spacious, but the surrounding walls are unreaso
 				<<if $prison.schedule isnot "revolt">>
 					<<if $worn.feet.name is "ball and chain">>
 						<span class="blue">You can't run with your legs weighed down.</span>
-						<br>
+						<br>						
 					<<elseif $worn.feet.type.includes("shackle")>>
 						<span class="blue">You can't run with your legs bound.</span>
 						<br>
@@ -1419,10 +1419,10 @@ You are in the prison yard. It's spacious, but the surrounding walls are unreaso
 					<<else>>
 						<<socialiseicon>><<link [[Speak with the guard (0:30)|Prison Yard Speak]]>><<pass 30>><<prison_rep veteran 1>><<endevent>><</link>><<glove>>
 						<br>
-						<<loveicon>><<link [[Cutely flirt with inmates (0:30)|Prison Yard Flirt]]>><<set $phase to 0>><<pass 30>><<prison_hope 1>><<endevent>><</link>><<promiscuous1>><<ghope>>
+						<<link [[Cutely flirt with inmates (0:30)|Prison Yard Flirt]]>><<set $phase to 0>><<pass 30>><<prison_hope 1>><<endevent>><</link>><<promiscuous1>><<ghope>>
 						<br>
 						<<if hasSexStat("promiscuity", 2)>>
-							<<brothelicon>><<link [[Salaciously flirt with inmates (0:30)|Prison Yard Flirt]]>><<set $phase to 1>><<pass 30>><<prison_reb 1>><<endevent>><</link>><<promiscuous2>><<greb>>
+							<<link [[Salaciously flirt with inmates (0:30)|Prison Yard Flirt]]>><<set $phase to 1>><<pass 30>><<prison_reb 1>><<endevent>><</link>><<promiscuous2>><<greb>>
 							<br>
 						<</if>>
 					<</if>>
@@ -1699,34 +1699,34 @@ Panting, <<veteran_guard 0>> steps away from the curled <<person2>><<person>>. Y
 				<</if>>
 				<br><br>
 				<<if $prison.job is "spire">>
-					<<ind>><<link [[Work|Prison Spire Work]]>><</link>>
+					<<link [[Work|Prison Spire Work]]>><</link>>
 					<br>
 				<<else>>
 					<span class="blue">Your labours are expected elsewhere.</span>
 					<br>
 				<</if>>
 				<<if $prison.watchers_friend is 1 and $prison_egg is 1>>
-					<<ind>><<link [[Hold up the egg|Prison Spire Egg]]>><</link>>
+					<<link [[Hold up the egg|Prison Spire Egg]]>><</link>>
 					<br>
 				<</if>>
 				<<if $harpy gte 6 and $birdFly gte 1>>
 					<br>
 					Your wings, and the wind, are strong. You think you could fly all the way to the mainland from here.
 					<br>
-					<<glideicon>><<link [[Soar to the mainland|Prison Soar]]>><</link>>
+					<<link [[Soar to the mainland|Prison Soar]]>><</link>>
 					<br><br>
 				<</if>>
-				<<getouticon>><<link [[Leave (0:05)|Prison Yard]]>><<pass 5>><</link>>
+				<<link [[Leave (0:05)|Prison Yard]]>><<pass 5>><</link>>
 				<br>
 			<</if>>
 		<<else>>
 			<<if $harpy gte 6 and $birdFly gte 1>>
 				Your wings, and the wind, are strong. You think you could fly all the way to the mainland from here.
 				<br>
-				<<glideicon>><<link [[Soar to the mainland|Prison Soar]]>><</link>>
+				<<link [[Soar to the mainland|Prison Soar]]>><</link>>
 				<br><br>
 			<</if>>
-			<<getouticon>><<link [[Leave (0:05)|Prison Yard]]>><<pass 5>><</link>>
+			<<link [[Leave (0:05)|Prison Yard]]>><<pass 5>><</link>>
 			<br>
 		<</if>>
 		<<prison_map spire>>
diff --git a/game/overworld-town/loc-prison/punishment.twee b/game/overworld-town/loc-prison/punishment.twee
index 2ea0c60058c7dcf32462afebc469667df46ce328..7f0734b1741b612a66799653c2648a38dc94ed53 100644
--- a/game/overworld-town/loc-prison/punishment.twee
+++ b/game/overworld-town/loc-prison/punishment.twee
@@ -53,7 +53,7 @@ Writing is engraved on its surface.
 <<relaxed_guard 1 cap>> pulls a pair of dice from <<his>> pocket. <<He>> cups <<his>> hands together, and leans over the desk.
 <br><br>
 
-<<gameicon "dice">><<link [[Roll|Prison Punishment Roll]]>><</link>>
+<<link [[Roll|Prison Punishment Roll]]>><</link>>
 <br>
 
 :: Prison Punishment Roll
diff --git a/game/overworld-town/loc-prison/rut.twee b/game/overworld-town/loc-prison/rut.twee
index 8331dbddad2901c550fcf46b60b9a02152b32b47..2a88f74d1abdb6bc07c73ebf96a38b9e46106093 100644
--- a/game/overworld-town/loc-prison/rut.twee
+++ b/game/overworld-town/loc-prison/rut.twee
@@ -6,7 +6,7 @@ You are in the rut, beneath the prison.
 	<span class="green">You come across a marble step.</span> As your foot touches it, the darkness retreats, revealing a staircase shrouded in pink mist. You climb to the top, and find a stone chest, decorated with floral engravings, and a closed eye in the middle. It looks unlocked.
 		<br><br>
 
-		<<prisonicon "chest">><<link [[Open|Prison Rut Chest]]>><</link>>
+		<<link [[Open|Prison Rut Chest]]>><</link>>
 		<br>
 <<elseif $stress gte $stressmax>>
 	<br><br>
diff --git a/game/overworld-town/loc-prison/widgets.twee b/game/overworld-town/loc-prison/widgets.twee
index e852a2a98aa689dfbdd8e83674bf3b3089646fe9..004815662f31bfefc26929516d4171e99a915afb 100644
--- a/game/overworld-town/loc-prison/widgets.twee
+++ b/game/overworld-town/loc-prison/widgets.twee
@@ -1283,15 +1283,15 @@
 		<<link [[Next|Prison Block]]>><<endevent>><</link>>
 		<br>
 	<<else>>
-		<<prisonicon "laundry_work">><<link [[Work hard (1:00)|Prison Laundry Work Hard]]>><<prison_work 1>><<pass 1>><<advancetohour>><</link>><<note "Will give opportunities to reduce suspicion" "green">>
+		<<link [[Work hard (1:00)|Prison Laundry Work Hard]]>><<prison_work 1>><<pass 1>><<advancetohour>><</link>><<note "Will give opportunities to reduce suspicion" "green">>
 		<br>
-		<<socialiseicon>><<link [[Socialise with inmates (1:00)|Prison Laundry Work Socialise]]>><<prison_work 1>><<pass 1>><<advancetohour>><</link>><<note "Will give opportunities to raise respect" "green">>
+		<<link [[Socialise with inmates (1:00)|Prison Laundry Work Socialise]]>><<prison_work 1>><<pass 1>><<advancetohour>><</link>><<note "Will give opportunities to raise respect" "green">>
 		<br>
 		<<if !$daily.prison.prisonRelaxedSpoke>>
-			<<socialiseicon>><<link [[Speak with guard|Prison Laundry Work Chat]]>><</link>><<note "Will give opportunities to raise love" "green">>
+			<<link [[Speak with guard|Prison Laundry Work Chat]]>><</link>><<note "Will give opportunities to raise love" "green">>
 			<br>
 		<</if>>
-		<<refuseicon>><<link [[Stop|Prison Laundry]]>><</link>>
+		<<link [[Stop|Prison Laundry]]>><</link>>
 		<br>
 	<</if>>
 <</widget>>
@@ -1311,13 +1311,13 @@
 		<<link [[Next|Prison Medical]]>><<endevent>><</link>>
 		<br>
 	<<else>>
-		<<prisonicon "medical_work">><<link [[Assist (1:00)|Prison Medical Work Hard]]>><<prison_work 1>><<pass 1>><<advancetohour>><</link>>
+		<<link [[Assist (1:00)|Prison Medical Work Hard]]>><<prison_work 1>><<pass 1>><<advancetohour>><</link>>
 		<br>
 		<<if !$daily.prison.methodicalSpoke>>
-			<<socialiseicon>><<link [[Speak with guard|Prison Medical Work Chat]]>><</link>>
+			<<link [[Speak with guard|Prison Medical Work Chat]]>><</link>>
 			<br>
 		<</if>>
-		<<refuseicon>><<link [[Stop|Prison Medical]]>><</link>>
+		<<link [[Stop|Prison Medical]]>><</link>>
 		<br>
 	<</if>>
 <</widget>>
@@ -1351,13 +1351,13 @@
 		<<link [[Next|Prison Spire Precipice]]>><</link>>
 		<br>
 	<<else>>
-		<<ind>><<link [[Work (1:00)|Prison Spire Work Hard]]>><<prison_work 1>><<pass 1>><<advancetohour>><</link>>
+		<<link [[Work (1:00)|Prison Spire Work Hard]]>><<prison_work 1>><<pass 1>><<advancetohour>><</link>>
 		<br>
 		<<if !$daily.prison.anxiousSpoke>>
-			<<socialiseicon>><<link [[Speak with guard|Prison Spire Work Chat]]>><</link>>
+			<<link [[Speak with guard|Prison Spire Work Chat]]>><</link>>
 			<br>
 		<</if>>
-		<<refuseicon>><<link [[Stop|Prison Spire]]>><</link>>
+		<<link [[Stop|Prison Spire]]>><</link>>
 		<br>
 	<</if>>
 <</widget>>
diff --git a/game/overworld-town/loc-prison/work.twee b/game/overworld-town/loc-prison/work.twee
index fa0d039757bfefaac62bb896922be1e1a16a9f5e..9976d175b0e0ffd879543e3e75027fc5082a6573 100644
--- a/game/overworld-town/loc-prison/work.twee
+++ b/game/overworld-town/loc-prison/work.twee
@@ -527,25 +527,25 @@ You step away from the <<person>>. <<He>> takes the hint, though gives your <<bo
 <<generate_relaxed_guard 0>><<relaxed_guard 0 cap>><<person1>> looks up as you approach. "You should be working," <<he>> says. "But I'll overlook it. Fancy a game?" <<He>> rattles the dice in <<his>> hand.
 <br><br>
 
-<<gameicon "dice">><<link [[Play|Prison Laundry Work Play]]>><<set $daily.prison.prisonRelaxedSpoke to true>><<prison_rep relaxed 1>><</link>><<glove>>
+<<link [[Play|Prison Laundry Work Play]]>><<set $daily.prison.prisonRelaxedSpoke to true>><<prison_rep relaxed 1>><</link>><<glove>>
 <br>
 <<if $prison_job_change is undefined>>
 	<<if $prison.guards gte 60>>
-		<<askicon>><<link [[Ask to work in medical|Prison Laundry Work Medical]]>><</link>>
+		<<link [[Ask to work in medical|Prison Laundry Work Medical]]>><</link>>
 		<br>
 	<<else>>
 		<span class="blue">You aren't trusted enough to work in medical.</span>
 		<br>
 	<</if>>
 	<<if $prison.guards gte 80>>
-		<<askicon>><<link [[Ask to work on the spire|Prison Laundry Work Spire]]>><</link>>
+		<<link [[Ask to work on the spire|Prison Laundry Work Spire]]>><</link>>
 		<br>
 	<<else>>
 		<span class="blue">You aren't trusted enough to be allowed on the spire.</span>
 		<br>
 	<</if>>
 <</if>>
-<<getouticon>><<link [[Leave|Prison Laundry Work]]>><<endevent>><</link>>
+<<link [[Leave|Prison Laundry Work]]>><<endevent>><</link>>
 <br>
 
 
@@ -1229,17 +1229,17 @@ You administer a single tooth as instructed. The <<person2>><<person>> sighs, bu
 <br><br>
 
 <<if $prison_job_change is undefined>>
-	<<askicon>><<link [[Ask to work in the laundry room|Prison Medical Work Laundry]]>><</link>>
+	<<link [[Ask to work in the laundry room|Prison Medical Work Laundry]]>><</link>>
 	<br>
 	<<if $prison.guards gte 80>>
-		<<askicon>><<link [[Ask to work on the spire|Prison Medical Work Spire]]>><</link>>
+		<<link [[Ask to work on the spire|Prison Medical Work Spire]]>><</link>>
 		<br>
 	<<else>>
 		<span class="blue">You aren't trusted enough to be allowed on the spire.</span>
 		<br>
 	<</if>>
 <</if>>
-<<getouticon>><<link [[Leave|Prison Medical Work]]>><<endevent>><</link>>
+<<link [[Leave|Prison Medical Work]]>><<endevent>><</link>>
 <br>
 
 
@@ -1662,17 +1662,17 @@ You run around the beacon, scooping the teeth without stopping.
 
 
 <<if $prison_job_change is undefined>>
-	<<askicon>><<link [[Ask to work in the laundry room|Prison Spire Work Laundry]]>><</link>>
+	<<link [[Ask to work in the laundry room|Prison Spire Work Laundry]]>><</link>>
 	<br>
 	<<if $prison.guards gte 60>>
-		<<askicon>><<link [[Ask to work in medical|Prison Spire Work Medical]]>><</link>>
+		<<link [[Ask to work in medical|Prison Spire Work Medical]]>><</link>>
 		<br>
 	<<else>>
 		<span class="blue">You aren't trusted enough to work in medical.</span>
 		<br>
 	<</if>>
 <</if>>
-<<getouticon>><<link [[Leave|Prison Spire Work]]>><<endevent>><</link>>
+<<link [[Leave|Prison Spire Work]]>><<endevent>><</link>>
 <br>
 
 :: Prison Spire Work Laundry
diff --git a/game/overworld-town/loc-pub/main.twee b/game/overworld-town/loc-pub/main.twee
index 2fe01c324125a8f9358db8e3a14df589fbb81344..eb69ffdd6205a4fb18f5036f9ce2991b6f863f19 100644
--- a/game/overworld-town/loc-pub/main.twee
+++ b/game/overworld-town/loc-pub/main.twee
@@ -699,7 +699,7 @@ They can't tell you're exposed from behind the bar, but you'll look suspicious i
 <br>
 
 :: Pub Exposed Bar Serve
-<<set $outside to 0>><<set $location to "pub">><<effects>><<wearProp "tray">>
+<<set $outside to 0>><<set $location to "pub">><<effects>>
 
 <<if $player.gender_appearance is "f" and $worn.upper.exposed gte 2 and $worn.under_upper.exposed gte 1>>
 	You top off a tray of drinks, holding it to your chest as you make your way over. The froth ought to hide your <<breasts>>. You hope.
diff --git a/game/overworld-town/loc-school/changing-rooms-widgets.twee b/game/overworld-town/loc-school/changing-rooms-widgets.twee
index c260259e03445ea7e77431fa13264a71ef409cdb..e753f08b9e61769986dc72c241cc08ba07058e0f 100644
--- a/game/overworld-town/loc-school/changing-rooms-widgets.twee
+++ b/game/overworld-town/loc-school/changing-rooms-widgets.twee
@@ -388,11 +388,3 @@
 	<<storeon "school pool boys" "return">>
 	<<storeon "school pool girls" "return">>
 <</widget>>
-
-<<widget "enterChangingRoomLink">>
-	<<if _args[0] is "m">>
-		<<maleicon>><<link [[Boys' changing room|School Boy Changing Room]]>><</link>>
-	<<else>>
-		<<femaleicon>><<link [[Girls' changing room|School Girl Changing Room]]>><</link>>
-	<</if>>
-<</widget>>
diff --git a/game/overworld-town/loc-school/classes/history.twee b/game/overworld-town/loc-school/classes/history.twee
index 72bcc5219e5399f4f2253cb9c95693d8ec928fdf..05fabc75b6bf065161280cdaaaebfe658fac5b16 100644
--- a/game/overworld-town/loc-school/classes/history.twee
+++ b/game/overworld-town/loc-school/classes/history.twee
@@ -444,7 +444,6 @@ You rest your head on the desk while Winter <<print either("elaborates on the si
 :: History Classroom Study
 <<set $outside to 0>><<set $location to "school">><<schooleffects>><<effects>>
 <<run statusCheck("Robin")>>
-<<wearProp "bookhistory">>
 <<if $robinhistory is "seat">>
 	You sit beside Robin and read a history textbook.
 <<else>>
diff --git a/game/overworld-town/loc-school/classes/science.twee b/game/overworld-town/loc-school/classes/science.twee
index 70ac3ce706d30c575c34061632a418c9f97a1e8f..e9da1372a3efde5d21cc33e4941c75f31018ef64 100644
--- a/game/overworld-town/loc-school/classes/science.twee
+++ b/game/overworld-town/loc-school/classes/science.twee
@@ -205,7 +205,6 @@ Sirris looks exasperated. "Right. I'll have to inform the head of your behaviour
 
 :: Science Classroom Study
 <<set $outside to 0>><<set $location to "school">><<schooleffects>><<effects>>
-<<wearProp "bookscience">>
 <<if $worn.over_upper.name isnot "naked" or $worn.over_lower.name isnot "naked" or $worn.over_head.name isnot "naked">>
 	<<undressOverClothes "scienceClassroom">>
 	You hang your coat at the back of the class, take your seat and read a science textbook.
diff --git a/game/overworld-town/loc-school/hallways.twee b/game/overworld-town/loc-school/hallways.twee
index 9aa923ada1a0eae6a61996f85467b2d56c7d3b10..681f346ac26bdc4ac91fd393bf8feaf420070034 100644
--- a/game/overworld-town/loc-school/hallways.twee
+++ b/game/overworld-town/loc-school/hallways.twee
@@ -2824,3 +2824,168 @@ The group of students fight to pull down your <<if setup.clothes.lower[clothesIn
 	<<link [[Next|Hallways]]>><<endevent>><<unset $pantsed>><<lowerruined>><<underlowerruined>><<set $eventskip to 1>><</link>>
 
 <</if>>
+
+:: Hallways Delinquent Lockers
+<<effects>>
+
+<<if $phase is 0>> /* Intervene */
+	<<if $speech_attitude is "meek">>
+		You take a deep breath and cautiously approach them from behind. "Um, excuse me? I don't... think that's your locker...?"
+	<<elseif $speech_attitude is "bratty">>
+		"Hey!" You stomp up to them from behind. "What the fuck do you think you're doing? That's not your locker."
+	<<else>>
+		"What are you two doing?" you ask as you approach them from behind. "That's not your locker."
+	<</if>>
+	<br><br>
+	The two delinquents simultaneously turn to look at you, then at each other.
+	<br><br>
+
+	<<link [[Next|Hallways Delinquent Lockers 2]]>><</link>>
+	<br>
+<<else>> /* Ignore them */
+	You simply give them a wide berth, and continue on your way.
+	<br><br>
+
+	<<link [[Next|Hallways]]>><<endevent>><<set $eventskip to 1>><<clearNPC locker_key_owner>><</link>>
+	<br>
+<</if>>
+
+:: Hallways Delinquent Lockers 2
+<<effects>>
+
+<<if $whitneyromance is 1 and C.npc.Whitney.love gte 25>>
+	<<if $cool gte 240>>
+		The <<person1>><<person>> and <<person2>><<person>> look at you again with nervous, placating grins.
+		<br><br>
+		"Oh, wow, you're totally right! We must've gotten them mixed up, eh? Oops!"
+		<br><br>
+		The <<person1>><<person>> doesn't even bother to sound genuine, but the <<person2>><<person>> puts the dirty magazine back in the locker, and the <<person1>><<person>> shuts the door and locks it again.
+		<br><br>
+		<<He>> tosses the key to you, and they both immediately make themselves scarce.
+		<br><br>
+		You relax now that the delinquents have left. You look at the key in your hand, then at the locker it belongs to.
+		<br><br>
+
+		<<link [[Raid the locker yourself|Hallways Delinquent Lockers End]]>><<set $phase to 0>><<crimeUp 1 "petty">><</link>><<crime "petty">>
+		<br>
+		<<link [[Find the locker's owner and return their key|Hallways Delinquent Lockers End]]>><<endevent>><<set $phase to 1>><</link>>
+		<br>
+	<<else>>
+		They shoot you annoyed looks, and <<person2>><<person>> scoffs.
+		<br><br>
+		"Fucking killjoy," <<he>> mutters as <<he>> returns the dirty mag. The <<person1>><<person>> rolls <<his>> eyes and slams the locker shut. <<He>> doesn't bother locking it, and shoves the key into <<his>> pocket.
+		<br><br>
+		The two of them skulk off, glaring at you as they do, but at least they don't pick a fight.
+		<br><br>
+		You relax now that the delinquents have left, and continue on to your destination.
+		<br><br>
+
+		<<link [[Next|Hallways]]>><<endevent>><<set $eventskip to 1>><<clearNPC locker_key_owner>><</link>>
+		<br>
+	<</if>>
+<<else>>
+	They both start laughing.
+	<br><br>
+	"'That's not your locker'!" the <<person1>><<person>> mocks. "I've got the key for it, don't I? How do you know it's not mine, huh?"
+	<br><br>
+	"Seems like the <<girls>> trying to play at hero." The <<person2>><<person>> grabs you and shoves you against another locker. "Why don't we teach this goodie two-shoes a lesson about how <<pshe>> ought to be treating <<pher>> betters?"
+	<br><br>
+
+	<<saveNPC 0 key_bully_0>><<saveNPC 1 key_bully_1>>
+	<<endevent>>
+	<<loadNPC 0 key_bully_0>><<loadNPC 1 key_bully_1>>
+	<<clearNPC key_bully_0>><<clearNPC key_bully_1>>
+
+	<<link [[Next|Hallways Delinquent Lockers Rape]]>><<set $molestationstart to 1>><</link>>
+	<br>
+<</if>>
+
+:: Hallways Delinquent Lockers Rape
+<<if $molestationstart is 1>>
+	<<set $molestationstart to 0>>
+	<<controlloss>>
+	<<violence 1>>
+	<<neutral 1>>
+	<<molested>>
+	<<maninit>>
+	<<if $delinquency lt 400>><<enable_rescue>><</if>>
+	The delinquents close in on you.
+<</if>>
+
+<<effects>>
+<<effectsman>>
+<<alarmstate "<span class='red'>No one comes to your aid, likely due to your reputation as a delinquent.</span>">>
+<<man>>
+<<stateman>>
+<br><br>
+<<actionsman>>
+
+<<if _combatend>>
+	<span id="next"><<link [[Next|Hallways Delinquent Lockers Rape Finish]]>><</link>></span><<nexttext>>
+<<else>>
+	<span id="next"><<link [[Next|Hallways Delinquent Lockers Rape]]>><</link>></span><<nexttext>>
+<</if>>
+
+:: Hallways Delinquent Lockers Rape Finish
+<<effects>>
+
+<<if $enemyarousal gte $enemyarousalmax>>
+	<<ejaculation>>
+	The two of them lean against a locker, still recovering from their orgasms.
+	<br><br>
+	<<tearful>> you wriggle away and attempt to make your escape. You notice the locker key lying on the floor. It must have fallen during the action.
+	<br><br>
+	<<clotheson>>
+	<<endcombat>>
+
+	<<link [[Leave it there|Hallways Delinquent Lockers End]]>><<set $phase to 2>><</link>>
+	<br>
+	<<link [[Find the locker's owner and return their key|Hallways Delinquent Lockers End]]>><<set $phase to 1>><</link>>
+	<br>
+<<elseif $enemyhealth lte 0>>
+	"Fuck!"
+	<br><br>
+	The delinquents stagger away from you, looking surprised that you put up more of a fight than they expected.
+	<br><br>
+	"You stupid fucking slut...!"
+	<br><br>
+	The <<person1>><<person>> and the <<person2>><<person>> exchange frustrated looks, before running off down the hall.
+	<br><br>
+	<<tearful>> you notice the locker key on the floor, forgotten.
+	<br><br>
+	<<clotheson>>
+	<<endcombat>>
+
+	<<link [[Raid the locker yourself|Hallways Delinquent Lockers End]]>><<set $phase to 0>><<crimeUp 1 "petty">><</link>><<crime "petty">>
+	<br>
+	<<link [[Find the locker's owner and return their key|Hallways Delinquent Lockers End]]>><<set $phase to 1>><</link>>
+	<br>
+<<else>>
+	Having heard your scream, a teacher comes rushing around a nearby corner. "What's going on here?"
+	<br><br>
+	The delinquents curse, and one of them gives you one last kick before they both run away.<<pain 4>><<gpain>>
+	<br><br>
+	The teacher makes sure you're alright before letting you go. <<tearful>> you gather yourself.
+	<br><br>
+	<<clotheson>>
+	<<endcombat>>
+
+	<<link [[Next|Hallways]]>><<endevent>><<set $eventskip to 1>><<clearNPC locker_key_owner>><</link>>
+	<br>
+<</if>>
+
+:: Hallways Delinquent Lockers End
+<<effects>>
+
+<<if $phase is 0>> /* Raid the locker yourself */
+	You open the locker yourself and examine its contents. Besides the explicit magazine, there's not much besides a couple school textbooks and bits of rubbish. However, you do find some loose change that totals to <<rng 1 5>><<moneyGain $rng true true>>.
+<<elseif $phase is 1>> /* Find the locker's owner and return their key */
+	<<loadNPC 0 locker_key_owner>><<person1>>
+	You look for the <<person>> that the key belongs to and return it to <<him>>. <<Hes>> very grateful, and thanks you multiple times before going on <<his>> way. <<status 1>><<gcool>>
+<<else>> /* Leave it there */
+	You don't want to risk getting noticed and grabbed at again. You sneak away while you have the chance.
+<</if>>
+<br><br>
+
+<<link [[Next|Hallways]]>><<endevent>><<set $eventskip to 1>><<clearNPC locker_key_owner>><</link>>
+<br>
diff --git a/game/overworld-town/loc-school/infirmary.twee b/game/overworld-town/loc-school/infirmary.twee
index 4bb505dcf786a005facd559ef1a8dc8a58ebdb89..391e97f0450e2445ca4c78f58c50ff7204b9bfb4 100644
--- a/game/overworld-town/loc-school/infirmary.twee
+++ b/game/overworld-town/loc-school/infirmary.twee
@@ -86,7 +86,7 @@
 
 :: School Infirmary Painkiller Take
 <<set $outside to 0>><<set $location to "school">><<schooleffects>><<effects>>
-<<wearProp "solo cup">>
+
 The nurse hands you the pill, along with a cup of water. You down them both. Almost immediately you feel a great relief, though your eyelids feel a bit heavier.
 <br><br>
 
diff --git a/game/overworld-town/loc-school/library.twee b/game/overworld-town/loc-school/library.twee
index 85971e4cdc19e45b181c81e5199c8661877f0b51..a2c7cbbd290b83094901a433bc9997216903e7b2 100644
--- a/game/overworld-town/loc-school/library.twee
+++ b/game/overworld-town/loc-school/library.twee
@@ -231,22 +231,22 @@ Next to it is a small basket with returned and not yet sorted books.
 
 		<<projectoptions>>
 		<<if $exposed gte 1>>
-			<<scienceicon>><<link [[Study science (0:20)|Library Study Exposed]]>><<pass 20>><<set $phase to 1>><<wearProp "bookscience">><</link>><<gscience>>
+			<<scienceicon>><<link [[Study science (0:20)|Library Study Exposed]]>><<pass 20>><<set $phase to 1>><</link>><<gscience>>
 			<br>
-			<<mathicon>><<link [[Study maths (0:20)|Library Study Exposed]]>><<wearProp "bookmaths">><<pass 20>><<set $phase to 2>><</link>><<gmaths>>
+			<<mathicon>><<link [[Study maths (0:20)|Library Study Exposed]]>><<pass 20>><<set $phase to 2>><</link>><<gmaths>>
 			<br>
-			<<englishicon>><<link [[Study English (0:20)|Library Study Exposed]]>><<pass 20>><<set $phase to 3>><<wearProp "bookenglish">><</link>><<genglish>>
+			<<englishicon>><<link [[Study English (0:20)|Library Study Exposed]]>><<pass 20>><<set $phase to 3>><</link>><<genglish>>
 			<br>
-			<<historyicon>><<link [[Study history (0:20)|Library Study Exposed]]>><<pass 20>><<set $phase to 4>><<wearProp "bookhistory">><</link>><<ghistory>>
+			<<historyicon>><<link [[Study history (0:20)|Library Study Exposed]]>><<pass 20>><<set $phase to 4>><</link>><<ghistory>>
 			<br>
 		<<else>>
-			<<scienceicon>><<link [[Study science (0:20)|Library Study]]>><<pass 20>><<set $phase to 1>><<wearProp "bookscience">><</link>><<gscience>>
+			<<scienceicon>><<link [[Study science (0:20)|Library Study]]>><<pass 20>><<set $phase to 1>><</link>><<gscience>>
 			<br>
-			<<mathicon>><<link [[Study maths (0:20)|Library Study]]>><<pass 20>><<set $phase to 2>><<wearProp "bookmaths">><</link>><<gmaths>>
+			<<mathicon>><<link [[Study maths (0:20)|Library Study]]>><<pass 20>><<set $phase to 2>><</link>><<gmaths>>
 			<br>
-			<<englishicon>><<link [[Study English (0:20)|Library Study]]>><<pass 20>><<set $phase to 3>><<wearProp "bookenglish">><</link>><<genglish>>
+			<<englishicon>><<link [[Study English (0:20)|Library Study]]>><<pass 20>><<set $phase to 3>><</link>><<genglish>>
 			<br>
-			<<historyicon>><<link [[Study history (0:20)|Library Study]]>><<pass 20>><<set $phase to 4>><<wearProp "bookhistory">><</link>><<ghistory>>
+			<<historyicon>><<link [[Study history (0:20)|Library Study]]>><<pass 20>><<set $phase to 4>><</link>><<ghistory>>
 			<br>
 		<</if>>
 		/*indev - scarlet book possible to be taken. English 200+ required*/
@@ -287,12 +287,12 @@ Next to it is a small basket with returned and not yet sorted books.
 		<<generatey1>><<generatey2>>While you are minding your own business, a <<fullGroup>> start harassing you.
 		<br><br>
 
-		<<link [[Ignore them|School Library Harass]]>><<handheldon>><<set $phase to 0>><<trauma 2>><<stress 2>><</link>><<gtrauma>><<gstress>>
+		<<link [[Ignore them|School Library Harass]]>><<set $phase to 0>><<trauma 2>><<stress 2>><</link>><<gtrauma>><<gstress>>
 		<br>
-		<<link [[Ask the librarian for help|School Library Harass]]>><<handheldon>><<set $phase to 1>><<status -10>><</link>><<lcool>>
+		<<link [[Ask the librarian for help|School Library Harass]]>><<set $phase to 1>><<status -10>><</link>><<lcool>>
 		<br>
 		<<if C.npc.Sydney.init is 1 and $sydneySeen.includes("library") and _sydney_location is "library">>
-			<<link [[Ask Sydney for help|School Library Harass]]>><<handheldon>><<set $phase to 2>><</link>>
+			<<link [[Ask Sydney for help|School Library Harass]]>><<set $phase to 2>><</link>>
 			<br>
 		<</if>>
 	<<elseif _wraithEvent>>
@@ -347,19 +347,19 @@ Next to it is a small basket with returned and not yet sorted books.
 		<<if $earSlime.growth gte 200 - ($earSlime.promiscuity * 10) and $exposed gte 1>>
 			<span class="lewd">You feel the slime in your head command you to expose yourself and ask <<him>> to rape you.</span> <span class="red">It expects to be obeyed.</span>
 			<br><br>
-			<<link [[Obey|Library Study Exposed Slime Obey]]>><<handheldon>><<corruption 1>><<pain -4>><<stress -6>><<trauma -12>><<sub 2>><</link>><<gcorruption>><<lpain>><<lltrauma>><<lstress>>
+			<<link [[Obey|Library Study Exposed Slime Obey]]>><<corruption 1>><<pain -4>><<stress -6>><<trauma -12>><<sub 2>><</link>><<gcorruption>><<lpain>><<lltrauma>><<lstress>>
 			<br>
-			<<link [[Defy|Library Study Exposed Slime Defy]]>><<handheldon>><<corruption -1>><<pain 8>><<stress 6>><<trauma 6>><<def 1>><</link>><<lcorruption>><<ggpain>><<ggtrauma>><<ggstress>>
+			<<link [[Defy|Library Study Exposed Slime Defy]]>><<corruption -1>><<pain 8>><<stress 6>><<trauma 6>><<def 1>><</link>><<lcorruption>><<ggpain>><<ggtrauma>><<ggstress>>
 			<br>
 		<<else>>
 			<<if $exposed gte 2>>
 				<<if hasSexStat("exhibitionism", 5)>>
-					<<link [[Show yourself|Library Study Show]]>><<handheldon>><<set $phase to 0>><</link>><<exhibitionist5>>
+					<<link [[Show yourself|Library Study Show]]>><<set $phase to 0>><</link>><<exhibitionist5>>
 					<br>
 				<</if>>
 			<<elseif $exposed is 1>>
 				<<if hasSexStat("exhibitionism", 2)>>
-					<<link [[Show yourself|Library Study Show]]>><<handheldon>><<set $phase to 1>><</link>><<exhibitionist2>>
+					<<link [[Show yourself|Library Study Show]]>><<set $phase to 1>><</link>><<exhibitionist2>>
 					<br>
 				<</if>>
 			<</if>>
@@ -409,7 +409,8 @@ Next to it is a small basket with returned and not yet sorted books.
 	<br><br>
 <</if>>
 
-<<link [[Next|School Library]]>><<endevent>><</link>>
+<<endevent>>
+<<link [[Next|School Library]]>><</link>>
 <br>
 
 :: Library Study Pair Hide
diff --git a/game/overworld-town/loc-school/maths-project.twee b/game/overworld-town/loc-school/maths-project.twee
index 45e7382a526a4b73c9664059f196e3e7219b5f93..7a6c68aa048fa0962443a4ea331e20cda408af44 100644
--- a/game/overworld-town/loc-school/maths-project.twee
+++ b/game/overworld-town/loc-school/maths-project.twee
@@ -31,6 +31,7 @@ You have <span class="gold">$mathsinfo</span> insights.
 <br>
 <<if $mathsstim gte 1 and playerIsPregnant() and playerAwareTheyArePregnant()>>
 	<span class="blue">You can't bring yourself to take stimulants while you know you're with child.</span>
+	<br>
 <<elseif $mathsstim gte 1>>
 	<<pillicon "stimulant">><<link [[Use stimulant (2:00)|Maths Project Stim]]>><<if $location is "home" and _chair.type.includes("comfy")>><<set $mathschance += 20>><<else>><<set $mathschance += 16>><</if>><<set $mathsstim -= 1>><<set $mathsstimused += 1>><<mathsskill 40>><<pass 120>><</link>><<gggmaths>>
 	<br>
@@ -49,7 +50,7 @@ You have <span class="gold">$mathsinfo</span> insights.
 <</if>>
 
 :: Maths Project Work
-<<wearProp "notebook">>
+
 <<effects>>
 You sit down and get to work.
 <<set _chair to Furniture.get('chair')>>
@@ -148,7 +149,7 @@ You sit down and get to work.
 <</if>>
 <br><br>
 <<if $mathsproject is "ongoing">>
-	<<link [[Next|Maths Project]]>><<handheldon>><</link>>
+	<<link [[Next|Maths Project]]>><</link>>
 	<br>
 <<else>>
 	You glance at the time. You suddenly realise that <span class="red">the maths competition has already ended.</span>
@@ -157,16 +158,16 @@ You sit down and get to work.
 	<br><br>
 
 	<<if $location is "home">>
-		<<link [[Next|Bedroom]]>><<handheldon>><</link>>
+		<<link [[Next|Bedroom]]>><</link>>
 	<<else>>
-		<<link [[Next|School Library]]>><<handheldon>><</link>>
+		<<link [[Next|School Library]]>><</link>>
 	<</if>>
 	<br>
 <</if>>
 
 :: Maths Project Stim
 
-<<effects>><<wearProp "notebook">>
+<<effects>>
 You take the stimulant, sit down, and get to work.
 <<set _chair to Furniture.get('chair')>>
 <<if $location is "home" and _chair.type.includes("comfy")>>
@@ -270,14 +271,14 @@ You take the stimulant, sit down, and get to work.
 	You consider leaving your room for some fresh air. But your mind is so overwhelmed by desire. You can only imagine what will happen when someone finds you in your defenceless state. And the alternative, staying here and trying to endure the arousal until it fades, feels like it might be even worse.
 	<br><br>
 	<<if $location is "home">>
-		<<link [[Endure (4:00)|Maths Project Endure Home]]>><<handheldon>><<pass 240>><<stress 24>><</link>><<ggstress>>
+		<<link [[Endure (4:00)|Maths Project Endure Home]]>><<pass 240>><<stress 24>><</link>><<ggstress>>
 		<br>
-		<<link [[Go outside|Maths Project Outside Home]]>><<handheldon>><</link>>
+		<<link [[Go outside|Maths Project Outside Home]]>><</link>>
 		<br>
 	<<else>>
-		<<link [[Endure (4:00)|Maths Project Endure Library]]>><<handheldon>><<pass 240>><<stress 24>><</link>>
+		<<link [[Endure (4:00)|Maths Project Endure Library]]>><<pass 240>><<stress 24>><</link>>
 		<br>
-		<<link [[Go outside|Maths Project Outside Library]]>><<handheldon>><</link>>
+		<<link [[Go outside|Maths Project Outside Library]]>><</link>>
 		<br>
 	<</if>>
 <<elseif $mathsstimused is 3 or $mathsstimused gte 4 and $rng gte 50>>
@@ -291,7 +292,7 @@ You take the stimulant, sit down, and get to work.
 	<<else>>
 		<<set $bus to "industrial">>
 	<</if>>
-	<<link [[Next|Maths Project Void]]>><<handheldon>><</link>>
+	<<link [[Next|Maths Project Void]]>><</link>>
 	<br>
 <<elseif $mathsstimrobin isnot 1 and Time.schoolDay and Time.dayState isnot "night" and $robinmissing is 0 and C.npc.Robin.init is 1 and $location is "home">>
 	<<set $mathsstimrobin to 1>>
@@ -306,17 +307,17 @@ You take the stimulant, sit down, and get to work.
 	<<if $robinromance is 1>>
 		That strange heat hasn't left your body. Robin is so close.
 		<br><br>
-		<<link [[Pull Robin on top of you|Maths Project Robin Sex]]>><<handheldon>><<set $sexstart to 1>><</link>><<promiscuous1>>
+		<<link [[Pull Robin on top of you|Maths Project Robin Sex]]>><<set $sexstart to 1>><</link>><<promiscuous1>>
 		<br>
 	<</if>>
-	<<link [[Say you're fine|Maths Project Robin]]>><<handheldon>><</link>>
+	<<link [[Say you're fine|Maths Project Robin]]>><</link>>
 	<br>
 <<else>>
 	You sit back and admire your work. You feel a strange heat just beneath your skin.
 	<<ggarousal>><<arousal 1800>><<drugs 120>><<hallucinogen 120>>
 	<br><br>
 	<<if $mathsproject is "ongoing">>
-		<<link [[Next|Maths Project]]>><<handheldon>><</link>>
+		<<link [[Next|Maths Project]]>><</link>>
 		<br>
 	<<else>>
 		You glance at the time. You suddenly realise that <span class="red">the maths competition has already ended.</span>
@@ -325,9 +326,9 @@ You take the stimulant, sit down, and get to work.
 		<br><br>
 
 		<<if $location is "home">>
-			<<link [[Next|Bedroom]]>><<handheldon>><</link>>
+			<<link [[Next|Bedroom]]>><</link>>
 		<<else>>
-			<<link [[Next|School Library]]>><<handheldon>><</link>>
+			<<link [[Next|School Library]]>><</link>>
 		<</if>>
 		<br>
 	<</if>>
diff --git a/game/overworld-town/loc-school/roof.twee b/game/overworld-town/loc-school/roof.twee
index 08a7c506eebeac7018c1bc5419cc92274ff4f104..10e2c1e00932cf65fe397572c827a6e04c63f9b2 100644
--- a/game/overworld-town/loc-school/roof.twee
+++ b/game/overworld-town/loc-school/roof.twee
@@ -769,6 +769,7 @@ Whitney pretends to consider a moment, then shoves the <<person>> hard against t
 
 The <<person>> produces <<his>> key from <<his>> shirt pocket. Whitney releases <<him>>, throws the key to one of <<person1>><<his>> friends, then lights a cigarette. Both the key and <<person2>><<person>> seem to be forgotten.
 <br><br>
+<<set $whitneyRoofKey to true>><<saveNPC 1 locker_key_owner>>
 
 <<link [[Next|School Roof]]>><<endevent>><</link>>
 <br>
@@ -790,6 +791,7 @@ Whitney flashes you a thankful grin. Your words, and Whitney's aggression, reach
 
 Whitney throws the key at one of <<person1>><<his>> friends, puts the <<person2>><<person>> down, and lights a cigarette as if the <<person>> and key are already forgotten.
 <br><br>
+<<set $whitneyRoofKey to true>><<saveNPC 1 locker_key_owner>>
 
 <<link [[Next|School Roof]]>><<endevent>><</link>>
 <br>
diff --git a/game/overworld-town/loc-school/science-project.twee b/game/overworld-town/loc-school/science-project.twee
index daa221786bc044750f438fdeb3c45effc6712fd6..c4c64adeb03ebafdd74f8111c36cd265e8e7350b 100644
--- a/game/overworld-town/loc-school/science-project.twee
+++ b/game/overworld-town/loc-school/science-project.twee
@@ -104,13 +104,11 @@ You can only submit one project to the fair.
 <<effects>>
 
 <<if $phase is 0>>
-	<<wearProp "mushroom">>
 	<<set $scienceshroomheartready += 1>>
 	You measure the heartshrooms. You note down the weight, volume, where you found them and describe what they look like. You note that they smell refreshing. You feel more energetic by the end.
 	<<ltiredness>><<tiredness -6>>
 	<br><br>
 <<else>>
-	<<wearProp "wolfshroom">>
 	<<set $scienceshroomwolfready += 1>>
 	You measure the wolfshroom. You note down the weight, volume, where you found them and describe what they look like. You note that they smell sweet. Your hand is shaking by the end.
 	<<ggarousal>><<arousal 3000>>
@@ -118,7 +116,7 @@ You can only submit one project to the fair.
 <</if>>
 
 <<if $scienceproject is "ongoing">>
-	<<link [[Next|Science Project]]>><<handheldon>><<set $phase to 0>><</link>>
+	<<link [[Next|Science Project]]>><<set $phase to 0>><</link>>
 	<br>
 <<else>>
 	You glance at the time. You suddenly realise that <span class="red">the science competition has already ended.</span>
@@ -127,9 +125,9 @@ You can only submit one project to the fair.
 	<br><br>
 
 	<<if $location is "home">>
-		<<link [[Next|Bedroom]]>><<handheldon>><</link>>
+		<<link [[Next|Bedroom]]>><</link>>
 	<<else>>
-		<<link [[Next|School Library]]>><<handheldon>><</link>>
+		<<link [[Next|School Library]]>><</link>>
 	<</if>>
 	<br>
 <</if>>
@@ -327,7 +325,7 @@ Leighton and Sirris examine your project.
 	<</if>>
 <<elseif $phase is 2>>
 	<<if $sciencephalluschance gte 100>>
-		"This is... Different," Leighton says.
+		"This is... different," Leighton says.
 		<br><br>
 
 		"It's for science," Sirris says. "<<pShe>> should be commended for originality."
diff --git a/game/overworld-town/loc-school/special-olive.twee b/game/overworld-town/loc-school/special-olive.twee
index e4e47e956e2195b9e0e51905272ee80c207e3d4d..94b2dff8476293173cc18c8823bd3aad0712fb41 100644
--- a/game/overworld-town/loc-school/special-olive.twee
+++ b/game/overworld-town/loc-school/special-olive.twee
@@ -14,7 +14,7 @@
 	<<npcClothesName $NPCList[0] "robinGiftChristmas">>
 	<<saveNPC 0 "pinch">>
 <</if>>
-<<wearProp "bookoliveclosed">>
+
 <<if $oliveExitPassage is "School Library">>
 	You take the olive book from the basket.
 <<else>>
@@ -26,32 +26,32 @@ The title, written in stylised white letters, reads "How <<personname>> Groped C
 <<if $englishtrait gte 3>>
 	You know the book very well. It's a classic Christmas tale, with more than half a century's worth of history. It teaches the general populace of the values of the festivity. You can't help but notice that this version seems different compared to other versions you've heard of.
 	<br><br>
-	<<link [[Read (0:20)|Olive Book 2]]>><<handheldon>><<pass 20>><<stress -6>><<englishskill>><</link>><<genglish>><<lstress>>
+	<<link [[Read (0:20)|Olive Book 2]]>><<pass 20>><<stress -6>><<englishskill>><</link>><<genglish>><<lstress>>
 	<br>
 <<elseif $englishtrait gte 2>>
 	You know the book well. And who wouldn't? It's a classic Christmas story. You can't help but notice that this version seems different compared to other versions you've heard of.
 	<br><br>
-	<<link [[Read (0:20)|Olive Book 2]]>><<handheldon>><<pass 20>><<stress -6>><<englishskill>><</link>><<genglish>><<lstress>>
+	<<link [[Read (0:20)|Olive Book 2]]>><<pass 20>><<stress -6>><<englishskill>><</link>><<genglish>><<lstress>>
 	<br>
 <<elseif $englishtrait gte 1>>
 	You know the book. It's a classic Christmas story.
 	<br><br>
-	<<link [[Read (0:20)|Olive Book 2]]>><<handheldon>><<pass 20>><<englishskill>><</link>><<genglish>>
+	<<link [[Read (0:20)|Olive Book 2]]>><<pass 20>><<englishskill>><</link>><<genglish>>
 	<br>
 <<elseif $englishtrait gte 0>>
 	The title sounds familiar to you, but you can't quite place it.
 	<br><br>
-	<<link [[Read (0:20)|Olive Book 2]]>><<handheldon>><<pass 20>><<englishskill>><</link>><<genglish>>
+	<<link [[Read (0:20)|Olive Book 2]]>><<pass 20>><<englishskill>><</link>><<genglish>>
 	<br>
 <<else>>
 	You open the book on a random page. It looks like the same dumb Christmas story you hear every year. Uninterested, you set it back down.
 	<br><br>
 <</if>>
-<<link [[Put the book away|$oliveExitPassage]]>><<handheldon>><<unset $oliveExitPassage>><<pinchEnd>><</link>>
+<<link [[Put the book away|$oliveExitPassage]]>><<unset $oliveExitPassage>><<pinchEnd>><</link>>
 
 /*indev scarlet book event. English: 300-399*/
 :: Olive Book 2
-<<wearProp "bookolive">>
+
 You're reading "How <<personname>> Groped Christmas".
 <br><br>
 
@@ -73,7 +73,7 @@ Fed up with it all, <<personname>>'s plan is to "defile" their Christmas spirit.
 	Nothing interesting. Just the same dumb Christmas story you hear every year.
 	<br><br>
 <</if>>
-<<link [[Put the book away|$oliveExitPassage]]>><<handheldon>><<unset $oliveExitPassage>><<pinchEnd>><</link>>
+<<link [[Put the book away|$oliveExitPassage]]>><<unset $oliveExitPassage>><<pinchEnd>><</link>>
 
 :: Olive Book 3
 
@@ -102,7 +102,7 @@ A <<print ($player.gender_appearance is "f" ? "lovely" : "handsome")>> <<lass>>
 	The story is interesting. You think to return to it later.
 	<br><br>
 <</if>>
-<<link [[Put the book away|$oliveExitPassage]]>><<handheldon>><<unset $oliveExitPassage>><<pinchEnd>><</link>>
+<<link [[Put the book away|$oliveExitPassage]]>><<unset $oliveExitPassage>><<pinchEnd>><</link>>
 <br>
 
 :: Olive Book 4
@@ -128,36 +128,36 @@ It is there <<he>> learns the most valuable lesson of Christmas. And it is there
 With each telling of the story, it takes different meanings. A once innocent tale has taken a turn for the worse, now more than ever in this darker version. This book seems to have taught you to believe what the true message is behind the old, happy tale - purity and innocence, defiled by debauchery and depravity. You feel a mix of jealousy, lust and anger. And some part of you likes the feelings.
 <br><br>
 
-<<oliveicon>><<link [[Read the whole book (0:20)|Olive Book Full]]>><<handheldon>><<pass 20>><<stress -6>><<englishskill>><</link>><<if !$christmas_book_read>><<note "???" "blue">><<else>><<genglish>><<lstress>><<garousal>><</if>>
+<<oliveicon>><<link [[Read the whole book (0:20)|Olive Book Full]]>><<pass 20>><<stress -6>><<englishskill>><</link>><<if !$christmas_book_read>><<note "???" "blue">><<else>><<genglish>><<lstress>><<garousal>><</if>>
 <br>
 <<if $bus is "schoollibrary">>
 	<<if Time.schoolDay>>
 		<<if $schoolstate is "lunch" and hasSexStat("exhibitionism", 5)>>
-			<<skinicon "masturbate">><<link [[Masturbate|Library Masturbation]]>><<handheldon>><<set $masturbationstart to 1>><</link>><<exhibitionist5>>
+			<<skinicon "masturbate">><<link [[Masturbate|Library Masturbation]]>><<set $masturbationstart to 1>><</link>><<exhibitionist5>>
 			<br>
 		<<elseif hasSexStat("exhibitionism", 3) and ["early", "late"].includes($schoolstate)>>
-			<<skinicon "masturbate">><<link [[Masturbate|Library Masturbation]]>><<handheldon>><<set $masturbationstart to 1>><</link>><<exhibitionist3>>
+			<<skinicon "masturbate">><<link [[Masturbate|Library Masturbation]]>><<set $masturbationstart to 1>><</link>><<exhibitionist3>>
 			<br>
 		<<elseif hasSexStat("exhibitionism", 4)>>
-			<<skinicon "masturbate">><<link [[Masturbate|Library Masturbation]]>><<handheldon>><<set $masturbationstart to 1>><</link>><<exhibitionist4>>
+			<<skinicon "masturbate">><<link [[Masturbate|Library Masturbation]]>><<set $masturbationstart to 1>><</link>><<exhibitionist4>>
 			<br>
 		<</if>>
 	<<elseif hasSexStat("exhibitionism", 2)>>
-		<<skinicon "masturbate">><<link [[Masturbate|Library Masturbation]]>><<handheldon>><<set $masturbationstart to 1>><</link>><<exhibitionist2>>
+		<<skinicon "masturbate">><<link [[Masturbate|Library Masturbation]]>><<set $masturbationstart to 1>><</link>><<exhibitionist2>>
 		<br>
 	<</if>>
 <</if>>
 <<if $arousal gte ($arousalmax / 5) * 2>>
 	<<if $christmas_book_read gte 2>>
-		<<daydreamicon>><<link [[Imagine yourself as Lew|Olive Book Lew]]>><<handheldon>><<pass 30>><<arousal 600>><<set $phase to 2>><</link>><<garousal>>
+		<<daydreamicon>><<link [[Imagine yourself as Lew|Olive Book Lew]]>><<pass 30>><<arousal 600>><<set $phase to 2>><</link>><<garousal>>
 		<br>
 	<</if>>
 	<<if $christmas_book_read gte 3>>
-		<<daydreamicon>><<link [[Imagine yourself as Pinch|Olive Book Pinch]]>><<pass 30>><<arousal 600>><<set $phase to 2>><<handheldon>><</link>><<garousal>>
+		<<daydreamicon>><<link [[Imagine yourself as Pinch|Olive Book Pinch]]>><<pass 30>><<arousal 600>><<set $phase to 2>><</link>><<garousal>>
 		<br>
 	<</if>>
 <</if>>
-<<getouticon>><<link [[Put the book away|$oliveExitPassage]]>><<handheldon>><<unset $oliveExitPassage>><<pinchEnd>><</link>>
+<<getouticon>><<link [[Put the book away|$oliveExitPassage]]>><<unset $oliveExitPassage>><<pinchEnd>><</link>>
 <br>
 
 :: Olive Book Full
@@ -1036,7 +1036,7 @@ You liked it,
 <</if>>
 <br><br>
 
-<<link [[Next|$oliveExitPassage]]>><<handheldon>><<unset $oliveExitPassage>><</link>>
+<<link [[Next|$oliveExitPassage]]>><<unset $oliveExitPassage>><</link>>
 <br>
 
 :: Pinch Widgets [widget]
diff --git a/game/overworld-town/loc-school/special-scarlet.twee b/game/overworld-town/loc-school/special-scarlet.twee
index 78a7e24786ed80b7cfba0474c8fc8ee73a6890fc..5ecfc8cf3e33ff36d2314b5e43984d8af00b2797 100644
--- a/game/overworld-town/loc-school/special-scarlet.twee
+++ b/game/overworld-town/loc-school/special-scarlet.twee
@@ -7,7 +7,6 @@ Feb 2019
 
 /*indev - scarlet book event. English: 200+*/
 :: ScarletBook1
-<<wearProp "bookscarletclosed">>
 <<if $scarletExitPassage is "School Library">>
 	You take a scarlet book from the basket. The title written in decorative gold letters says "Raul and Janet".
 <<else>>
@@ -16,32 +15,31 @@ Feb 2019
 <<if currentSkillValue('english') gte 600>>
 	You know the book very well. It's a classic English drama from 1616. It tells the tragic story of two lovers.
 	<br><br>
-	<<link [[Read (0:20)|ScarletBook2]]>><<handheldon>><<pass 20>><<stress -6>><<englishskill>><</link>><<genglish>><<lstress>>
+	<<link [[Read (0:20)|ScarletBook2]]>><<pass 20>><<stress -6>><<englishskill>><</link>><<genglish>><<lstress>>
 	<br>
 <<elseif currentSkillValue('english') gte 500>>
 	It's a classic story of two lovers from the seventeenth century.
 	<br><br>
-	<<link [[Read (0:20)|ScarletBook2]]>><<handheldon>><<pass 20>><<stress -6>><<englishskill>><</link>><<genglish>><<lstress>>
+	<<link [[Read (0:20)|ScarletBook2]]>><<pass 20>><<stress -6>><<englishskill>><</link>><<genglish>><<lstress>>
 	<br>
 <<elseif currentSkillValue('english') gte 400>>
 	You know that book. It tells the story of two lovers from the seventeenth century.
 	<br><br>
-	<<link [[Read (0:20)|ScarletBook2]]>><<handheldon>><<pass 20>><<englishskill>><</link>><<genglish>>
+	<<link [[Read (0:20)|ScarletBook2]]>><<pass 20>><<englishskill>><</link>><<genglish>>
 	<br>
 <<elseif currentSkillValue('english') gte 300>>
 	This title sounds familiar. Isn't that the one about those two lovers from middle ages?
 	<br><br>
-	<<link [[Read (0:20)|ScarletBook2]]>><<handheldon>><<pass 20>><<englishskill>><</link>><<genglish>>
+	<<link [[Read (0:20)|ScarletBook2]]>><<pass 20>><<englishskill>><</link>><<genglish>>
 	<br>
 <<else>>
 	You open the book on a random page. The text looks like it was written a hundred years ago. Some words sound ridiculous and incomprehensible. Did people really talk like that back then?
 	<br><br>
 <</if>>
-	<<link [[Put the book away|$scarletExitPassage]]>><<handheldon>><<unset $scarletExitPassage>><</link>>
+	<<link [[Put the book away|$scarletExitPassage]]>><<unset $scarletExitPassage>><</link>>
 
 /*indev scarlet book event. English: 300-399*/
 :: ScarletBook2
-<<wearProp "bookscarlet">>
 You're reading "Raul and Janet".
 <br><br>
 The book tells the story of two lovers from a few centuries ago. Raul is the son of a poor tailor, but instead of honest work, he prefers to search for adventures. Janet is a young, polite girl from a wealthy family and the daughter of a local baron and the ruler of the city. Despite the differences between them, they fall in love with each other.
@@ -55,7 +53,7 @@ The book tells the story of two lovers from a few centuries ago. Raul is the son
 	It seems to be some kind of romance for old lonely people. Nothing interesting.
 	<br><br>
 <</if>>
-	<<link [[Put the book away|$scarletExitPassage]]>><<handheldon>><<unset $scarletExitPassage>><</link>>
+	<<link [[Put the book away|$scarletExitPassage]]>><<unset $scarletExitPassage>><</link>>
 
 /*indev scarlet book event. English 400-499*/
 :: ScarletBook3
@@ -72,7 +70,7 @@ The book tells the story of two lovers from the seventeenth century. Raul is the
 	The story is interesting. You think to return to it later.
 	<br><br>
 <</if>>
-<<link [[Put the book away|$scarletExitPassage]]>><<handheldon>><<unset $scarletExitPassage>><</link>>
+<<link [[Put the book away|$scarletExitPassage]]>><<unset $scarletExitPassage>><</link>>
 <br>
 
 /*indev scarlet book event. English: 500-599*/
@@ -97,28 +95,28 @@ With each act, the book becomes darker and scarier. Every time you read it, you
 <<if $bus is "schoollibrary">>
 	<<if Time.schoolDay>>
 		<<if $schoolstate is "lunch" and hasSexStat("exhibitionism", 5)>>
-			<<skinicon "masturbate">><<link [[Masturbate|Library Masturbation]]>><<handheldon>><<set $masturbationstart to 1>><</link>><<exhibitionist5>>
+			<<skinicon "masturbate">><<link [[Masturbate|Library Masturbation]]>><<set $masturbationstart to 1>><</link>><<exhibitionist5>>
 			<br>
 		<<elseif $schoolstate is "early" and hasSexStat("exhibitionism", 3)>>
-			<<skinicon "masturbate">><<link [[Masturbate|Library Masturbation]]>><<handheldon>><<set $masturbationstart to 1>><</link>><<exhibitionist3>>
+			<<skinicon "masturbate">><<link [[Masturbate|Library Masturbation]]>><<set $masturbationstart to 1>><</link>><<exhibitionist3>>
 			<br>
 		<<elseif $schoolstate is "late" and hasSexStat("exhibitionism", 3)>>
-			<<skinicon "masturbate">><<link [[Masturbate|Library Masturbation]]>><<handheldon>><<set $masturbationstart to 1>><</link>><<exhibitionist3>>
+			<<skinicon "masturbate">><<link [[Masturbate|Library Masturbation]]>><<set $masturbationstart to 1>><</link>><<exhibitionist3>>
 			<br>
 		<<elseif hasSexStat("exhibitionism", 4)>>
-			<<skinicon "masturbate">><<link [[Masturbate|Library Masturbation]]>><<handheldon>><<set $masturbationstart to 1>><</link>><<exhibitionist4>>
+			<<skinicon "masturbate">><<link [[Masturbate|Library Masturbation]]>><<set $masturbationstart to 1>><</link>><<exhibitionist4>>
 			<br>
 		<</if>>
 	<<elseif hasSexStat("exhibitionism", 2)>>
-		<<skinicon "masturbate">><<link [[Masturbate|Library Masturbation]]>><<handheldon>><<set $masturbationstart to 1>><</link>><<exhibitionist2>>
+		<<skinicon "masturbate">><<link [[Masturbate|Library Masturbation]]>><<set $masturbationstart to 1>><</link>><<exhibitionist2>>
 		<br>
 	<</if>>
 <</if>>
 <<if currentSkillValue('english') gte 600 and $arousal gte ($arousalmax / 5) * 2>>
-	<<daydreamicon>><<link [[Imagine yourself as Janet|ScarletBook5]]>><<handheldon>><<pass 30>><<arousal 600>><</link>><<garousal>>
+	<<daydreamicon>><<link [[Imagine yourself as Janet|ScarletBook5]]>><<pass 30>><<arousal 600>><</link>><<garousal>>
 	<br>
 <</if>>
-<<getouticon>><<link [[Put the book away|$scarletExitPassage]]>><<handheldon>><<unset $scarletExitPassage>><</link>>
+<<getouticon>><<link [[Put the book away|$scarletExitPassage]]>><<unset $scarletExitPassage>><</link>>
 <br>
 
 /*indev scarlet book event. English 600+*/
@@ -260,7 +258,7 @@ You feel relaxed and a little jealous.
 <br><br>
 You liked it, despite knowing that the <b>original story went differently</b>.
 <br><br>
-<<link [[Put the book away|$scarletExitPassage]]>><<handheldon>><<unset $scarletExitPassage>><</link>>
+<<link [[Put the book away|$scarletExitPassage]]>><<unset $scarletExitPassage>><</link>>
 
 :: ScarletBook8nay
 <<sleepJanet>><<pass 10>>
@@ -272,7 +270,7 @@ You feel aroused and excited.
 <br><br>
 You liked it, despite knowing that the <b>original story went differently</b>.
 <br><br>
-<<link [[Put the book away|$scarletExitPassage]]>><<handheldon>><<unset $scarletExitPassage>><</link>>
+<<link [[Put the book away|$scarletExitPassage]]>><<unset $scarletExitPassage>><</link>>
 
 :: ScarletBook9
 <b>RAUL:</b>
@@ -317,7 +315,7 @@ It's time to get back to reality.
 <br>
 How long have you been here?
 <br><br>
-<<link [[Put the book away|$scarletExitPassage]]>><<handheldon>><<unset $scarletExitPassage>><<endcombat>><</link>>
+<<link [[Put the book away|$scarletExitPassage]]>><<unset $scarletExitPassage>><<endcombat>><</link>>
 
 /*indev*/
 :: Library Masturbation
diff --git a/game/overworld-town/loc-school/widgets-events.twee b/game/overworld-town/loc-school/widgets-events.twee
index f1833fa338625f2c766bae918f2a2862810c9800..ce5993b8567054ef4079e827db77a7d6ce979301 100644
--- a/game/overworld-town/loc-school/widgets-events.twee
+++ b/game/overworld-town/loc-school/widgets-events.twee
@@ -880,6 +880,22 @@
 			<<link [[Ignore|Hallways]]>><<endevent>><<set $eventskip to 1>><</link>>
 			<br>
 		<</if>>
+	<<elseif $rng gte 16 and $whitneyRoofKey is true>>
+		<<unset $whitneyRoofKey>>
+		<<generates1>><<generates2>><<loadNPC 2 locker_key_owner>>
+		You're walking down the halls when you see a <<person1>><<person>> and a <<person2>><<person>> digging through a locker. You recognise them as a couple of Whitney's friends.
+		<br><br>
+		"Ha, check this out!" The <<person>> pulls out an explicit magazine.
+		<br><br>
+		"Damn, that <<person3>><<personsimple>> wasn't as innocent as <<he>> seemed, huh?"
+		<br><br>
+		You remember seeing Whitney on the roof bullying another student, and passing off the <<person>>'s locker key to <<nnpc_his "Whitney">> friends.
+		<br><br>
+
+		<<link [[Intervene|Hallways Delinquent Lockers]]>><<set $phase to 0>><</link>>
+		<br>
+		<<link [[Ignore them|Hallways Delinquent Lockers]]>><<set $phase to 1>><</link>>
+		<br>
 	<<elseif $rng gte 11 and !$worn.lower.type.includes("naked")>>
 		<<lockerevent>>
 	<<else>>
diff --git a/game/overworld-town/loc-school/widgets.twee b/game/overworld-town/loc-school/widgets.twee
index aaa7e0b502960482d1010ad4002a7255a67c4807..453ebc3987e181921ebbcd7fac8dd51f11ad87cc 100644
--- a/game/overworld-town/loc-school/widgets.twee
+++ b/game/overworld-town/loc-school/widgets.twee
@@ -286,31 +286,6 @@
 	<</if>>
 <</widget>>
 
-<<widget "changingrooms">>
-	<<if $exposed gte 2>>
-		<<if $player.gender_appearance is "m">>
-			<<if hasSexStat("exhibitionism", 5)>>
-				<<femaleicon>><<link [[Girls' changing room|School Girl Changing Room]]>><</link>><<exhibitionist5>>
-				<br>
-			<</if>>
-			<<maleicon>><<link [[Boys' changing room|School Boy Changing Room]]>><</link>>
-			<br>
-		<<else>>
-			<<if hasSexStat("exhibitionism", 5)>>
-				<<maleicon>><<link [[Boys' changing room|School Boy Changing Room]]>><</link>><<exhibitionist5>>
-				<br>
-			<</if>>
-			<<femaleicon>><<link [[Girls' changing room|School Girl Changing Room]]>><</link>>
-			<br>
-		<</if>>
-	<<else>>
-		<<maleicon>><<link [[Boys' changing room|School Boy Changing Room]]>><</link>>
-		<br>
-		<<femaleicon>><<link [[Girls' changing room|School Girl Changing Room]]>><</link>>
-		<br>
-	<</if>>
-<</widget>>
-
 :: Widgets Events Science [widget]
 <<widget "eventsscience">>
 	<<cleareventpool>>
@@ -3641,27 +3616,25 @@
 	<br>
 	<<switch $studyBooks.rented>>
 		<<case "science" "maths" "English" "history">>
-			<<set _prop to "book" + $studyBooks.rented.toLowerCase() + "closed">>
-			<<schoolicon "library">><<link [[`Return your ${$studyBooks.rented} textbook`|Book Rental]]>><<handheldon>><<wearProp _prop>><<set $bookRent to "return">><</link>>
+			<<schoolicon "library">><<link [[`Return your ${$studyBooks.rented} textbook`|Book Rental]]>><<set $bookRent to "return">><</link>>
 			<br>
 		<<case "Raul and Janet">>
-			<<schoolicon "library">><<link [[Return "Raul and Janet"|Book Rental]]>><<handheldon>><<wearProp "bookscarletclosed">><<set $phase to 5>><<set $bookRent to "return">><</link>>
+			<<schoolicon "library">><<link [[Return "Raul and Janet"|Book Rental]]>><<set $phase to 5>><<set $bookRent to "return">><</link>>
 			<br>
 		<<case "Pinch">>
-			<<schoolicon "library">><<link [[Return the olive-coloured book|Book Rental]]>><<handheldon>><<wearProp "bookoliveclosed">><<set $phase to 6>><<set $bookRent to "return">><</link>>
+			<<schoolicon "library">><<link [[Return the olive-coloured book|Book Rental]]>><<set $phase to 6>><<set $bookRent to "return">><</link>>
 			<br>
 		<<default>>
 	<</switch>>
 	<<switch $studyBooks.stolen>>
 		<<case "science" "maths" "English" "history">>
-			<<set _prop to "book" + $studyBooks.stolen.toLowerCase() + "closed">>
-			<<schoolicon "library">><<link [[`Return your stolen ${$studyBooks.stolen} textbook`|Book Rental Return Stolen]]>><<wearProp _prop>><</link>>
+			<<schoolicon "library">><<link [[`Return your stolen ${$studyBooks.stolen} textbook`|Book Rental Return Stolen]]>><</link>>
 			<br>
 		<<case "Raul and Janet">>
-			<<schoolicon "library">><<link [[Return your stolen copy of "Raul and Janet"|Book Rental Return Stolen]]>><<wearProp "bookscarletclosed">><<set $phase to 5>><</link>>
+			<<schoolicon "library">><<link [[Return your stolen copy of "Raul and Janet"|Book Rental Return Stolen]]>><<set $phase to 5>><</link>>
 			<br>
 		<<case "Pinch">>
-			<<schoolicon "library">><<link [[Return the olive-coloured book|Book Rental Return Stolen]]>><<wearProp "bookoliveclosed">><<set $phase to 6>><</link>>
+			<<schoolicon "library">><<link [[Return the olive-coloured book|Book Rental Return Stolen]]>><<set $phase to 6>><</link>>
 			<br>
 		<<default>>
 	<</switch>>
@@ -3670,27 +3643,27 @@
 		<<if $money gte 2000>>
 			<<if $studyBooks.rented is "none">>
 				<<if $studyBooks.stolen isnot "science">>
-					<<scienceicon>><<link [[Rent a science textbook (£20)|Book Rental]]>><<handheldon>><<wearProp "bookscienceclosed">><<set $money -= 2000>><<set $bookRent to "rent">><<set $phase to 1>><<set $studyBooks.rented to "science">><</link>><<note "+ Passive Science" "green">>
+					<<scienceicon>><<link [[Rent a science textbook (£20)|Book Rental]]>><<set $money -= 2000>><<set $bookRent to "rent">><<set $phase to 1>><<set $studyBooks.rented to "science">><</link>><<note "+ Passive Science" "green">>
 					<br>
 				<</if>>
 				<<if $studyBooks.stolen isnot "maths">>
-					<<mathicon>><<link [[Rent a maths textbook (£20)|Book Rental]]>><<handheldon>><<wearProp "bookmathsclosed">><<set $money -= 2000>><<set $bookRent to "rent">><<set $phase to 2>><<set $studyBooks.rented to "maths">><</link>><<note "+ Passive Maths" "green">>
+					<<mathicon>><<link [[Rent a maths textbook (£20)|Book Rental]]>><<set $money -= 2000>><<set $bookRent to "rent">><<set $phase to 2>><<set $studyBooks.rented to "maths">><</link>><<note "+ Passive Maths" "green">>
 					<br>
 				<</if>>
 				<<if $studyBooks.stolen isnot "English">>
-					<<englishicon>><<link [[Rent an English textbook (£20)|Book Rental]]>><<handheldon>><<wearProp "bookenglishclosed">><<set $money -= 2000>><<set $bookRent to "rent">><<set $phase to 3>><<set $studyBooks.rented to "English">><</link>><<note "+ Passive English" "green">>
+					<<englishicon>><<link [[Rent an English textbook (£20)|Book Rental]]>><<set $money -= 2000>><<set $bookRent to "rent">><<set $phase to 3>><<set $studyBooks.rented to "English">><</link>><<note "+ Passive English" "green">>
 					<br>
 				<</if>>
 				<<if $studyBooks.stolen isnot "history">>
-					<<historyicon>><<link [[Rent a history textbook (£20)|Book Rental]]>><<handheldon>><<wearProp "bookhistoryclosed">><<set $money -= 2000>><<set $bookRent to "rent">><<set $phase to 4>><<set $studyBooks.rented to "history">><</link>><<note "+ Passive History" "green">>
+					<<historyicon>><<link [[Rent a history textbook (£20)|Book Rental]]>><<set $money -= 2000>><<set $bookRent to "rent">><<set $phase to 4>><<set $studyBooks.rented to "history">><</link>><<note "+ Passive History" "green">>
 					<br>
 				<</if>>
 				<<if currentSkillValue('english') gte 300 and $studyBooks.stolen isnot "Raul and Janet">>
-					<<scarleticon>><<link [[Rent "Raul and Janet" (£20)|Book Rental]]>><<handheldon>><<wearProp "bookscarletclosed">><<set $money -= 2000>><<set $bookRent to "rent">><<set $phase to 5>><<set $studyBooks.rented to "Raul and Janet">><</link>>
+					<<scarleticon>><<link [[Rent "Raul and Janet" (£20)|Book Rental]]>><<set $money -= 2000>><<set $bookRent to "rent">><<set $phase to 5>><<set $studyBooks.rented to "Raul and Janet">><</link>>
 					<br>
 				<</if>>
 				<<if ((Time.monthName is "November" and Time.monthDay gte 24) or Time.monthName is "December") and $studyBooks.stolen isnot "Pinch">>
-					<<oliveicon>><<link [[Rent the olive-coloured book (£20)|Book Rental]]>><<handheldon>><<wearProp "bookoliveclosed">><<set $money -= 2000>><<set $bookRent to "rent">><<set $phase to 6>><<set $studyBooks.rented to "Pinch">><</link>>
+					<<oliveicon>><<link [[Rent the olive-coloured book (£20)|Book Rental]]>><<set $money -= 2000>><<set $bookRent to "rent">><<set $phase to 6>><<set $studyBooks.rented to "Pinch">><</link>>
 					<br>
 				<</if>>
 			<<else>>
diff --git a/game/overworld-town/loc-sea/events.twee b/game/overworld-town/loc-sea/events.twee
index efbc746845dc711a39f468c5db9e11a551953fd3..f691a7346562d82976f22cf16446d0a1030af4a9 100644
--- a/game/overworld-town/loc-sea/events.twee
+++ b/game/overworld-town/loc-sea/events.twee
@@ -934,7 +934,6 @@ You reach into the seaweed,
 
 <<if $rng gte 51 or ($museumAntiques.antiques.antiquecoppercompass isnot "found" and $museumAntiques.antiques.antiquecoppercompass isnot "talk" and $museumAntiques.antiques.antiquecoppercompass isnot "museum")>>
 	and wrap your fingers around something cold and hard. It's a compass. The glass is covered in grime, but beneath the point still turns north. Someone might be interested in this.
-	<<wearProp "copper compass">>
 	<<set $antiquemoney += 50>><<museumAntiqueStatus "antiquecoppercompass" "found">>
 	<br><br>
 	<<destinationeventend>>
@@ -1113,7 +1112,6 @@ You open the lock, laying bare the treasure inside. A variety of stolen jeweller
 <br><br>
 
 <<if $museumAntiques.antiques.antiquecoralring isnot "found" and $museumAntiques.antiques.antiquecoralring isnot "talk" and $museumAntiques.antiques.antiquecoralring isnot "museum">>
-	<<wearProp "coral ring">>
 	<<set $antiquemoney += 800>><<museumAntiqueStatus "antiquecoralring" "found">>
 	There's also a ring, studded with blooms of coral. There's something vulgar about it. The metal looks like gold, but tarnished with age. This one belongs in a museum.
 	<br><br>
@@ -1131,7 +1129,7 @@ A breeze from the sea whips through your hair. <span class="blue">You shiver.</s
 You return to the water.
 <br><br>
 
-<<link [[Next|Sea]]>><<handheldon>><<set $eventskip to 1>><</link>>
+<<link [[Next|Sea]]>><<set $eventskip to 1>><</link>>
 <br>
 
 :: Sea Pair Greet
diff --git a/game/overworld-town/loc-sea/main.twee b/game/overworld-town/loc-sea/main.twee
index 5a2b49cf1009d1b3b40c30a857da0b48e6941379..771190b49ce7e39b830a75476f052c431c6c0ee5 100644
--- a/game/overworld-town/loc-sea/main.twee
+++ b/game/overworld-town/loc-sea/main.twee
@@ -332,7 +332,7 @@ You <<= $passagePrev.includes("Up") ? "break the pool's surface" : "slip into th
 <</if>>
 
 :: Rocks Diamond
-<<underwater>><<effects>><<wearProp "diamond">>
+<<underwater>><<effects>>
 
 <<set $antiquemoney += 2000>><<museumAntiqueStatus "antiquediamond" "found">>
 You grasp the light, along with a handful of sand, and examine it. It's a white jewel, no bigger than a fingernail, but it might be worth something to a collector.
@@ -341,9 +341,9 @@ You grasp the light, along with a handful of sand, and examine it. It's a white
 You plant your feet against the sand, and notice a cave leading away from the pool, lit by a dim blue light.
 <br><br>
 
-<<link [[Swim up|Rocks Up]]>><<handheldon>><<set $phase to 0>><</link>>
+<<link [[Swim up|Rocks Up]]>><<set $phase to 0>><</link>>
 <br>
-<<link [[Swim into the cave|Beach Cave Entrance]]>><<handheldon>><</link>>
+<<link [[Swim into the cave|Beach Cave Entrance]]>><</link>>
 <br>
 
 :: Rocks Swarm Invite
diff --git a/game/overworld-town/loc-shop/clothingCategories-v2.twee b/game/overworld-town/loc-shop/clothingCategories-v2.twee
index ef87d07efa5c5288bbf64ec1865c9660244362ee..532e7a7350e73853bc699d3d8547bbcac7c67a44 100644
--- a/game/overworld-town/loc-shop/clothingCategories-v2.twee
+++ b/game/overworld-town/loc-shop/clothingCategories-v2.twee
@@ -428,7 +428,7 @@
 					</div>
 				<</if>>
 				<<set _active = _args[0] == "handheld" ? "active" : "">>
-				<<if !["adult"].includes($shopName)>>
+				<<if ["clothing","school"].includes($shopName)>> /*Only shops with handheld items atm*/
 					<div @class="'div-link category-tab ' + _active">
 						<<if $options.images is 1>>
 							<<clothingcategoryicon "handheld">>
diff --git a/game/overworld-town/loc-shop/widgets.twee b/game/overworld-town/loc-shop/widgets.twee
index b26ee1d5ca52bcc492fcb0fb4460667d6b67ff57..c2bd4b64419e51f418e1752c090efd00a495576d 100644
--- a/game/overworld-town/loc-shop/widgets.twee
+++ b/game/overworld-town/loc-shop/widgets.twee
@@ -214,7 +214,6 @@
 			"harempants":"locked",
 			"loincloth":"locked",
 			"witchhat":"locked",
-			"broomstick":"locked",
 			"christmashat":"locked",
 			"chefhat":"locked",
 			"fedora":"locked",
@@ -376,7 +375,6 @@
 		<<set $specialClothes["witchdress"] to "unlocked">>
 		<<set $specialClothes["vampirejacket"] to "unlocked">>
 		<<set $specialClothes["witchhat"] to "unlocked">>
-		<<set $specialClothes["broomstick"] to "unlocked">>
 		<<set $specialClothes["witchshoes"] to "unlocked">>
 		<<set $specialClothes["mummyfacewrap"] to "unlocked">>
 		<<set $specialClothes["mummytop"] to "unlocked">>
@@ -497,7 +495,6 @@
 			"harempants":"Be offered the star role in a show at the brothel.",
 			"loincloth":"Befriend a lonely hunter, or join a pack of wolves.",
 			"witchhat":"In stock from the 21st of October.",
-			"broomstick":"In stock from the 21st of October.",
 			"christmashat":"In stock from the 18th of December.",
 			"chefhat":"Become famous for your cream buns.",
 			"fedora":"Eavesdrop as a bartender and learn about a criminal undertaking.",
diff --git a/game/overworld-town/loc-street/danube.twee b/game/overworld-town/loc-street/danube.twee
index c62d09f06ba848df1c177ad5121949b9854c4e71..88dd20ebd4d03810cf8fd2b87d96fb75da907664 100644
--- a/game/overworld-town/loc-street/danube.twee
+++ b/game/overworld-town/loc-street/danube.twee
@@ -109,7 +109,7 @@ Some homes host extravagant Halloween displays.
 
 :: Danube Challenge
 
-<<set $outside to 1>><<set $location to "oak">><<effects>>
+<<set $outside to 1>><<set $location to "town">><<effects>>
 
 <<if $exhibitionismrunon is 0>>
 
@@ -144,7 +144,7 @@ Some homes host extravagant Halloween displays.
 :: Danube Challenge Strip
 
 <<set $challengetimer to 10>>
-<<set $outside to 1>><<set $location to "oak">><<effects>>
+<<set $outside to 1>><<set $location to "town">><<effects>>
 <<strip>>
 <<if $phase is 0>>
 	You <<nervously>> remove your clothing as the note said, until you're stood naked, here on the outskirts of town.
diff --git a/game/overworld-town/loc-street/exposed-widgets.twee b/game/overworld-town/loc-street/exposed-widgets.twee
index f6bea93f251c71ba7214287468e08e28d25f7663..885cae208c7980e509aa1142b19455bb6b2bf2b9 100644
--- a/game/overworld-town/loc-street/exposed-widgets.twee
+++ b/game/overworld-town/loc-street/exposed-widgets.twee
@@ -149,27 +149,3 @@
 	<<link [[Industrial Street (0:05)|Industrial Exposed]]>><<pass 5>><</link>>
 	<br>
 <</widget>>
-
-<<widget "ex_init">>
-	<<set $ex to 1>>
-	<<set $shame to 0>>
-	<<if $ex_intro isnot 1>>
-		<<set $ex_intro to 1>>
-		<i>You're undressed in public! It's exciting, but scary. Becoming too ashamed will force you to hide and run for safety.</i>
-		<br><br>
-	<</if>>
-<</widget>>
-
-<<widget "ex_end">>
-	<<set $ex to 0>>
-<</widget>>
-
-<<widget "ex_effects">>
-	<<if $ex is 1>>
-		Shame:
-		<div class="meter">
-			<<set _percent=Math.floor(($shame/ 100)*100)>>
-			<<print '<div class="redbar" style="width:' + _percent + '%"></div>'>>
-		</div>
-	<</if>>
-<</widget>>
diff --git a/game/overworld-town/loc-strip club/events.twee b/game/overworld-town/loc-strip club/events.twee
index 9f3d656939ffc95e5c2f044e4fade90d919a0580..e658bcf6250a9c9f10a31e8a4f50eb382a65518a 100644
--- a/game/overworld-town/loc-strip club/events.twee	
+++ b/game/overworld-town/loc-strip club/events.twee	
@@ -328,7 +328,7 @@ You're pouring a <<person2>><<person>> a beer towards the end of your shift when
 
 :: Bartending VIP Strip
 <<set $outside to 0>><<set $location to "strip_club">><<effects>>
-<<wearProp "rag" "white">>
+
 You grab a cloth and pretend to clean the bar, moving towards the leaning <<person1>><<person>>. Once close, you reach over the counter and <span class="lewd">rip the <<if $pronoun is "m">>shirt<<else>>top half of their dress<</if>> right off their back.</span> It comes away easy, no doubt designed to be easily removed.
 <<promiscuity2>>
 
@@ -338,10 +338,10 @@ The onlookers hoot and cheer as the <<person>> <<if $pronoun is "m">>pretends to
 <span class="gold">That should make them part with more cash.</span>
 <br><br>
 
-<<link [[Return to work|Bartending VIP Strip Work]]>><<handheldon>><<set $phase to 0>><</link>>
+<<link [[Return to work|Bartending VIP Strip Work]]>><<set $phase to 0>><</link>>
 <br>
 <<if hasSexStat("promiscuity", 3)>>
-<<link [[Take it further|Bartending VIP Strip 2]]>><<handheldon>><</link>><<promiscuous3>>
+<<link [[Take it further|Bartending VIP Strip 2]]>><</link>><<promiscuous3>>
 <br>
 <</if>>
 
diff --git a/game/overworld-town/loc-strip club/main.twee b/game/overworld-town/loc-strip club/main.twee
index 9af6daab68aed476a50479e5dc6a49a0fecc5783..6f136c0e17128e548926ff7badce08cc6f2b4f38 100644
--- a/game/overworld-town/loc-strip club/main.twee	
+++ b/game/overworld-town/loc-strip club/main.twee	
@@ -175,7 +175,7 @@ You are in the strip club's dressing room. <<if Time.dayState isnot "day" and Ti
 :: Strip Club Mirror
 <<effects>>
 
-<<shopicon "clothing">><<link [[Step away|Strip Club Dressing Room]]>><<handheldon>><<unset $mirrorMenu>><<unset $bodywritingSet>><<postMirror>><</link>>
+<<getouticon>><<link [[Step away|Strip Club Dressing Room]]>><<unset $mirrorMenu>><<unset $bodywritingSet>><<postMirror>><</link>>
 <br>
 
 <<mirror>>
@@ -281,12 +281,12 @@ You are in the bathroom at the Strip Club. There are several private cubicles fo
 <</if>>
 
 :: Strip Club Shower
-<<effects>><<set $location to "strip_club">><<set $outside to 0>><<wearProp "soap">>
+<<effects>><<set $location to "strip_club">><<set $outside to 0>>
 
 You wash until you're squeaky clean.<<wash>>
 <br><br>
 
-<<skinicon "masturbate">><<link [[Masturbate|Strip Club Shower Masturbation]]>><<handheldon>><<set $masturbationstart to 1>><</link>>
+<<skinicon "masturbate">><<link [[Masturbate|Strip Club Shower Masturbation]]>><<set $masturbationstart to 1>><</link>>
 <br>
 
 <<getouticon>><<link [[Get out->Strip Club Bathroom]]>><<clotheson>><</link>>
diff --git a/game/overworld-town/loc-temple/cloister.twee b/game/overworld-town/loc-temple/cloister.twee
index b6b05118e36761bce60b54cb2de37fd1a45cbce4..14b2191229dba4429d54fe938aa537e25b653bf3 100644
--- a/game/overworld-town/loc-temple/cloister.twee
+++ b/game/overworld-town/loc-temple/cloister.twee
@@ -1002,7 +1002,7 @@ It appears to be made of marble. Its wings are spread out wide, and its middle a
 <</if>>
 The mirror it holds is almost wide enough to see the whole room.
 <br><br>
-<<templeicon>><<link [[Step away|Temple Cloister]]>><<handheldon>><<unset $mirrorMenu>><<unset $bodywritingSet>><<postMirror>><</link>>
+<<link [[Step away|Temple Cloister]]>><<unset $mirrorMenu>><<unset $bodywritingSet>><<postMirror>><</link>>
 <br>
 <<mirror>>
 <br><br>
diff --git a/game/overworld-town/loc-temple/confess.twee b/game/overworld-town/loc-temple/confess.twee
index 178c8aa8c615a13f24600656a8551e97ad7da68e..ce672da82c4bef11fb1e5c155ab17e46307e10b6 100644
--- a/game/overworld-town/loc-temple/confess.twee
+++ b/game/overworld-town/loc-temple/confess.twee
@@ -3424,7 +3424,6 @@ You grab one of the pieces of paper and a pen from the stack and slip them throu
 		<<if $NPCList[0].vagina.toString().includes("mouth") or $NPCList[0].penis.toString().includes("mouth")>>
 			<span class="lewd">You take in the corruption.</span>
 		<<else>>
-			<<wearProp "aphrodisiac jar">>
 			The silver vessel fills with a glowing pink fluid. <span class="lewd">You tilt the bowl, and take in the corruption.</span>
 		<</if>>
 		<<if $angel gte 6>>
@@ -3506,7 +3505,7 @@ You grab one of the pieces of paper and a pen from the stack and slip them throu
 <</if>>
 
 :: Temple Confess Inspect
-<<temple_effects>><<effects>><<wearProp "aphrodisiac jar">>
+<<temple_effects>><<effects>>
 You feel an irresistable pull towards the glowing fluid. Before you know it, you've tilted the bowl and <span class="lewd">consumed it all.</span> <<grace 1>><<ggrace>>
 <br><br>
 
@@ -3516,9 +3515,9 @@ You don't know why you just did that. It was almost automatic. But a single thou
 <span class="lewd">More. Drain more. Purify <<him>>.</span>
 <br><br>
 
-<<link [[Drain more|Temple Confess Drain]]>><<handheldon>><<set $phase to 1>><<grace 1>><</link>><<ggrace>>
+<<link [[Drain more|Temple Confess Drain]]>><<set $phase to 1>><<grace 1>><</link>><<ggrace>>
 <br>
-<<link [[Stop|Temple Confess Stop]]>><<handheldon>><<set $phase to 0>><</link>>
+<<link [[Stop|Temple Confess Stop]]>><<set $phase to 0>><</link>>
 <br>
 
 :: Temple Confess Drain
diff --git a/game/overworld-town/loc-temple/garden.twee b/game/overworld-town/loc-temple/garden.twee
index 012d87b561f64211667192bb458a58e59cf84266..cf98f8100d2542474cc08545e926e488024967b2 100644
--- a/game/overworld-town/loc-temple/garden.twee
+++ b/game/overworld-town/loc-temple/garden.twee
@@ -447,7 +447,6 @@ Feeling safe, you look around the room.
 	<<else>>
 	<</if>>
 <</if>>
-<<wearProp "tea">>
 The <<person4>>smiling <<person>> pulls out a chair for you, and hands you a cup of tea.
 <<gggrace monk>><<grace 5 monk>><<ltrauma>><<lstress>><<trauma -6>><<stress -6>>
 <br><br>
diff --git a/game/overworld-town/loc-temple/quarters.twee b/game/overworld-town/loc-temple/quarters.twee
index 558b05e8f058da79bdf85c41bd89322fee3203e7..d57d5d7a4694ba6c5bdf38da725b26b0d047a292 100644
--- a/game/overworld-town/loc-temple/quarters.twee
+++ b/game/overworld-town/loc-temple/quarters.twee
@@ -199,10 +199,9 @@ There is a thermometer on the wall, next to the window. It reads the outside tem
 	You reach in again, gingerly this time, and wrap your fingers around something cool and hard. You bring it out into the light. <span class="gold">It's a brass statuette,</span> moulded in the shape of an eagle. You caught your hand on its beak.
 	<br><br>
 	It looks old.
-	<<wearProp "brass statuette">>
 	<<set $antiquemoney += 120>><<museumAntiqueStatus "antiquebrassstatuette" "found">>
 	<br><br>
-	<<link [[Next|Temple Quarters]]>><<handheldon>><</link>>
+	<<link [[Next|Temple Quarters]]>><</link>>
 	<br>
 <<elseif $rng gte 61 or $stone_pendant_found is undefined>>
 	You reach in. The hole is deep. You lie on your front and shuffle beneath the bed, allowing you to fit more of your arm down the hole.
diff --git a/game/overworld-town/loc-town-hall/main.twee b/game/overworld-town/loc-town-hall/main.twee
index fb5fcd3bf30fd653d01eda13d82d6acd87ca5bfb..144362397ef651158c1fa49357ffb1a3837c585c 100644
--- a/game/overworld-town/loc-town-hall/main.twee
+++ b/game/overworld-town/loc-town-hall/main.twee
@@ -1,5 +1,5 @@
 :: Town Hall
-<<set $outside to 0>><<effects>><<location "townhall">>
+<<set $outside to 0>><<effects>>
 
 You approach the town hall, a tall building on the precipice. It looms over the rest of the street, and the beach below. The hall proper is locked when not in use, but the mayor's office sits next door.
 <br><br>
diff --git a/game/overworld-town/special-avery/cards.twee b/game/overworld-town/special-avery/cards.twee
index 46eb2584558d11a8dd7475b35f5fc800aa586974..a21f9784f6bc46fcb0a8b6b4b33e42578446e9c9 100644
--- a/game/overworld-town/special-avery/cards.twee
+++ b/game/overworld-town/special-avery/cards.twee
@@ -240,7 +240,7 @@ Bailey catches your eye, and nods. <<person2>><<He>> wants a top-up too. "There'
 
 
 :: Avery Cards Fetch
-<<effects>><<wearProp "tray">>
+<<effects>>
 
 You pick up the tray, gather the glasses, and enter the kitchen. The liquor isn't hard to find, arrayed in bottles on the counter.
 <br><br>
@@ -351,7 +351,7 @@ Bailey sniffs <<person2>><<his>> drink before taking a sip. <<He>> doesn't comme
 <</if>>
 <br><br>
 
-Leighton takes a sip of <<person3>><<his>> without looking.
+Leighton takes a sip of <<person3>><<hers>> without looking.
 <<if $avery_cards.drink.leighton is "gin">>
 	<<He>> gasps in satisfaction, and smacks <<his>> lips.<<lcardskill Leighton>><<card_skill leighton -10>><<set $avery_cards_drinks_known.pushUnique("leighton")>>
 <</if>>
@@ -373,7 +373,7 @@ Avery is the last to drink.<<person1>>
 <br>
 
 :: Avery Cards 4
-<<effects>><<handheldon>>
+<<effects>>
 
 They each bet £100. Bailey deals. A silence descends as they inspect their cards.
 <br><br>
@@ -413,7 +413,7 @@ Bailey shoots you a glance. "Make yourself useful while you're here. Tidy up."
 <br>
 
 :: Avery Cards Polish Avery
-<<effects>><<wearProp "rag" "white">>
+<<effects>>
 
 You polish the silverware behind Avery. Several plates, a jug, and an urn. All engraved with intricate detail.
 <br><br>
@@ -428,7 +428,7 @@ You listen to the game behind you while you work. "I'm glad you could make it, A
 <br>
 
 :: Avery Cards Polish Bailey
-<<effects>><<wearProp "rag" "white">>
+<<effects>>
 
 You polish the window behind Bailey, revealing the streets below.
 <br><br>
@@ -449,7 +449,7 @@ You listen to the game behind you while you work. Your hair occasionally stands
 <br>
 
 :: Avery Cards Polish Leighton
-<<effects>><<wearProp "rag" "white">>
+<<effects>>
 
 You polish the glass cabinet behind Leighton. There are history books of many eras inside.
 <br><br>
@@ -464,7 +464,7 @@ You listen to the game behind you while you work. "I trust my wards have been me
 <br>
 
 :: Avery Cards Polish Quinn
-<<effects>><<wearProp "rag" "white">>
+<<effects>>
 
 You polish the mirror behind Quinn. The glass itself, as well as the brass frame.
 <br><br>
@@ -486,7 +486,7 @@ The next game sees Avery make a terrible loss, to Quinn's benefit.
 
 
 :: Avery Cards 5
-<<effects>><<handheldon>>
+<<effects>>
 
 <<if $rng gte 76>>
 	You return to the table. Avery wraps an arm around your waist, and pulls you onto <<person1>><<his>> lap. Bailey glances over.
diff --git a/game/overworld-town/special-avery/main.twee b/game/overworld-town/special-avery/main.twee
index 1852e2f427f02ba1e0ee0127031df076fa3fa3d7..9831458e21e4189c8ec98985835615ff0af4123e 100644
--- a/game/overworld-town/special-avery/main.twee
+++ b/game/overworld-town/special-avery/main.twee
@@ -4707,9 +4707,9 @@ The two of you find a booth and sit down.
 
 :: Avery Pub Winter Drink
 <<effects>>
+<<wearProp "wine">>
 
 <<if $phase is 0>>
-	<<wearProp "wine">>
 	Avery closes the drink menu, looking pleased with you. <<He>> orders a glass of mulled wine for you and a coffee for <<himself>>.
 	<br><br>
 
@@ -4718,7 +4718,6 @@ The two of you find a booth and sit down.
 
 	You raise the hot beverage to your lips, taking in the sweet fragrance of fruit and spices. You take a sip. It tastes different from other wines you've tried.
 <<else>>
-	<<wearProp "solo cup">>
 	Avery frowns, but orders you a glass of orange juice. <<He>> orders a cup of coffee for <<himself>>.
 	<br><br>
 
diff --git a/game/overworld-town/special-doren/main.twee b/game/overworld-town/special-doren/main.twee
index d15c25f5842e58c93d438f64cf05e494ad82106d..0e7a59c8c58fe82d6e2d83003b6bbce63531f3b4 100644
--- a/game/overworld-town/special-doren/main.twee
+++ b/game/overworld-town/special-doren/main.twee
@@ -159,12 +159,13 @@ You thank Doren but say you'll wash at home. "Alright," <<he>> says. "Thanks for
 :: Doren Shower 1
 
 <<set $outside to 0>><<set $location to "town">><<effects>>
-<<clothesontowel>><<wash>><<wearProp "soap">>
+<<clothesontowel>><<wash>>
 You wash until you're squeaky clean.
 <br><br>
 Doren smiles at you on your way out. "Come back tomorrow if you like."
 <br><br>
-<<link [[Next|Barb Street]]>><<endevent>><</link>>
+<<endevent>>
+<<link [[Next|Barb Street]]>><</link>>
 <br>
 
 :: Doren Shower 2
diff --git a/game/overworld-town/special-kylar/manor.twee b/game/overworld-town/special-kylar/manor.twee
index 4dc5f55b4e4d2252529d1a2c8d5661a01b9fbdc1..3a298a0b5ea88be8d4ae97297e3aa0aa91b2ca42 100644
--- a/game/overworld-town/special-kylar/manor.twee
+++ b/game/overworld-town/special-kylar/manor.twee
@@ -102,7 +102,6 @@ You are in the grounds behind Kylar's manor, an elevated patch of woodland full
 
 You search the bases of trees for the ash-coloured <<tendingicon "ghostshrooms">> mushrooms. Most aren't ready for harvest,
 <<if $tendingSuccess>>
-	<<wearProp "ghostshroom">>
 	<span class="green">but you find enough to fill a basket.</span>
 	<<tending_pick ghostshroom 12 36>>
 	<br><br>
@@ -110,7 +109,7 @@ You search the bases of trees for the ash-coloured <<tendingicon "ghostshrooms">
 	They're cold to the touch.<<arousal -600>><<larousal>>
 	<br><br>
 
-	<<link [[Next|Manor Grounds]]>><<handheldon>><</link>>
+	<<link [[Next|Manor Grounds]]>><</link>>
 	<br>
 <<else>>
 	<span class="red">and the rest are already rotting.</span><<gtending>><<tending 2>>
diff --git a/game/overworld-town/special-nightmares/main.twee b/game/overworld-town/special-nightmares/main.twee
index 1798681a7539e1b37efa9dae710b5b7b94d9e480..def6c29ad9997a37b98eef7ef01ac230c2924294 100644
--- a/game/overworld-town/special-nightmares/main.twee
+++ b/game/overworld-town/special-nightmares/main.twee
@@ -1475,7 +1475,7 @@ A shadow falls over you. Sydney crouches down, petting your hair. "I'm sorry, I
 	<br><br>
 	The other one tenses behind you before pulling away, making a disgusted sound as <<he>> does. "It was never meant to go like this. You should never have walked down this dark path."
 	<br><br>
-	Darkness seeps into the stone, turning it from grey to black. The cracks widen more and more while you Sydney holds onto you. The other gets brighter and brighter, contrasting with the darkening world.
+	Darkness seeps into the stone, turning it from grey to black. The cracks widen more and more while your Sydney holds onto you. The other gets brighter and brighter, contrasting with the darkening world.
 	<br><br>
 	Stone falls away piece by piece. When the one beneath you falls, you only float.
 	<br><br>
@@ -1669,4 +1669,4 @@ It's over. You're not dreaming anymore. You're safe.
 <br><br>
 
 <<link [[Next|$nightmareExit]]>><<unset $nightmareExit>><</link>>
-<br>
\ No newline at end of file
+<br>
diff --git a/game/overworld-town/special-robin/halloween.twee b/game/overworld-town/special-robin/halloween.twee
index e74850109e0805b66d2d91179e869c18ea37c688..47928cf23abab816c9917c1bff68b5c14a2915a5 100644
--- a/game/overworld-town/special-robin/halloween.twee
+++ b/game/overworld-town/special-robin/halloween.twee
@@ -203,7 +203,7 @@ The group stops at the edge of the road. You see other trick-or-treaters up and
 <br>
 
 :: Robin Trick 2
-<<set $outside to 0>><<set $location to "town">><<effects>><<wearProp "halloween">>
+<<set $outside to 0>><<set $location to "town">><<effects>>
 
 You walk up to the nearest house and ring the doorbell. A <<generate2>><<person2>><<person>> answers.
 <br><br>
@@ -219,7 +219,7 @@ You move between houses, shouting and filling your bags. Most homes are accommod
 <br>
 
 :: Robin Trick 3
-<<set $outside to 0>><<set $location to "town">><<effects>><<wearProp "halloween">>
+<<set $outside to 0>><<set $location to "town">><<effects>>
 
 You come to a brightly-lit house. It's covered in extravagant decorations. The orphans brim with excitement as you ring the bell.
 <br><br>
@@ -290,7 +290,7 @@ Robin tries to cheer everyone up, and points out that there are still many house
 	<br><br>
 	<<clothesontowel>>
 	<<endcombat>>
-	<<wearProp "halloween">>
+
 	<<tearful>> you pick up the sack of sweets and step outside. The orphans are overjoyed by your success. They crowd around as you pass out the treats. Robin seems oblivious to what you just did.
 	<br><br>
 
@@ -299,7 +299,7 @@ Robin tries to cheer everyone up, and points out that there are still many house
 	<br><br>
 
 	<<clothesontowel>>
-	<<endcombat>><<wearProp "halloween">>
+	<<endcombat>>
 	<<tearful>> you snatch up the treats and dash outside. The orphans are overjoyed by your success. They crowd around as you pass out the treats. Robin seems oblivious to what you just did.
 	<br><br>
 
@@ -624,7 +624,7 @@ You walk with Robin to <<his>> room. <<if $halloween_robin_costume is "ghost">><
 <br>
 
 :: Robin Trick Hug
-<<set $outside to 0>><<set $location to "town">><<effects>><<wearProp "halloween">>
+<<set $outside to 0>><<set $location to "town">><<effects>>
 
 You embrace Robin, and <<he>> squeezes you back. <<He>> rests <<his>> head on your shoulder. You hold <<him>> for a few minutes, listening to <<him>> breathe, until <<he>> pulls away.
 <br><br>
@@ -639,7 +639,7 @@ You swap sweets with Robin, though <<he>> has trouble making up <<his>> mind, un
 <<robinoptions>>
 
 :: Robin Trick Talk
-<<set $outside to 0>><<set $location to "town">><<effects>><<wearProp "halloween">>
+<<set $outside to 0>><<set $location to "town">><<effects>>
 
 You chat with Robin, until <<he>> jerks to <<his>> feet. "My sweets!" <<he>> says. "I almost forgot." <<He>> lifts <<his>> bag and rifles through the contents. "There are so many," <<he>> says. <<He>> points at your bag. "We can trade the ones we don't like."
 <br><br>
@@ -701,7 +701,7 @@ You swap sweets with Robin, though <<he>> has trouble making up <<his>> mind, un
 	<<clotheson>>
 	<<endcombat>>
 <</if>>
-<<npc Robin>><<person1>><<wearProp "halloween">>
+<<npc Robin>><<person1>>
 Robin jerks to <<his>> feet. "My sweets!" <<he>> says. "I almost forgot." <<He>> lifts <<his>> bag and rifles through the contents. "There are so many," <<he>> says. <<He>> points at your bag. "We can trade the ones we don't like."
 <br><br>
 
diff --git a/game/overworld-town/special-robin/main.twee b/game/overworld-town/special-robin/main.twee
index 85a28db0ed9d86cb7a3a6c180b71f93f33cd4bf9..75626dd69494890b4eba3b4c232e3e13911b6020 100644
--- a/game/overworld-town/special-robin/main.twee
+++ b/game/overworld-town/special-robin/main.twee
@@ -232,13 +232,13 @@ The door opens again. Robin looks conflicted, <<his>> face guilty. "Oh, I... It'
 <<robinoptions>>
 
 :: Robin Study
-<<effects>><<wearProp "bookhistory">>
+<<effects>>
 <<if $robin.timer.hurt gte 1>>
 	You walk into the room<<if $study_inside is 1>> after bringing your homework<</if>>. Robin is already <<if $study_inside isnot 1>>back to<</if>> focusing on <<his>> schoolwork. <<He>> may not want you to disturb <<him>>. You decide to stay quietly beside <<him>>, working on your own homework.<<ghistory>><<historyskill 2>>
 	<br><br>
 	The awkwardness between you is tense. You feel like you're both trying to ignore it.
 	<br><br>
-	<<link[[Next (1:00)|Robin Study End]]>><<handheldon>><<set $phase to 1>><<pass 60>><</link>>
+	<<link[[Next (1:00)|Robin Study End]]>><<set $phase to 1>><<pass 60>><</link>>
 <<elseif C.npc.Robin.trauma gte 40>>
 	<<if $study_inside isnot 1>>
 		Robin smiles and nods. You bring your homework with you, and clean up the mess inside.
@@ -316,7 +316,7 @@ The door opens again. Robin looks conflicted, <<his>> face guilty. "Oh, I... It'
 	<br><br>
 	<<He>> hugs you tightly. "You're the best," <<he>> murmurs. "I could never have done it without you."
 	<br><br>
-	<<link[[Next|Robin Study End]]>><<handheldon>><<set $phase to 1>><</link>>
+	<<link[[Next|Robin Study End]]>><<set $phase to 1>><</link>>
 <<elseif C.npc.Robin.trauma gte 20>>
 	<<if $historytrait gte 3>>
 		You organise Robin's notes, filling in the missing pieces. <<His>> eyes widen when you hand them to <<him>>. "Thank you," <<he>> says. "I'll work harder." <<He>> puts them carefully into the folder and sighs. "Sorry for having you help me like this." <<His>> head rubs your shoulders, hair tickling your neck. "I really need to feel some warmth," <<he>> says.
@@ -333,7 +333,7 @@ The door opens again. Robin looks conflicted, <<his>> face guilty. "Oh, I... It'
 		Robin's eyes light up. You study the text carefully, piecing together the missing notes bit by bit. Robin looks more at ease. <<He>> can even joke about <<his>> sloppy handwriting.<<stress -3>><<lstress>><<trauma -3>><<ltrauma>>
 	<</if>>
 	<br><br>
-	<<link[[Next|Robin Study End]]>><<handheldon>><<set $phase to 1>><</link>>
+	<<link[[Next|Robin Study End]]>><<set $phase to 1>><</link>>
 <<else>>
 	You and Robin are studying in <<his>> room. What do you want to do?
 	<br><br>
@@ -349,12 +349,12 @@ The door opens again. Robin looks conflicted, <<his>> face guilty. "Oh, I... It'
 	<br><br>
 	<<link[[Ask Robin|Robin Study Course]]>><</link>>
 	<<if hasSexStat("promiscuity", 2)>>
-		<br><<link[[Give up and ask for "other help"|Robin Study Course Kiss]]>><<handheldon>><</link>><<promiscuous 2>>
+		<br><<link[[Give up and ask for "other help"|Robin Study Course Kiss]]>><</link>><<promiscuous 2>>
 	<</if>>
 <<elseif $rng lt 70>>
 	<<print either("You finish your homework quietly.", "You casually chat as you finish up your homework.", "You share several biscuits. Fueled by sugar, the two of you quickly complete your homework.", "You collaborate on a report. Your division of tasks seems to work well together.")>> Robin looks pleased.<<stress -3>><<lstress>><<historyskill 6>>
 	<br><br>
-	<<link[[Next|Robin Study End]]>><<handheldon>><<set $phase to 1>><</link>>
+	<<link[[Next|Robin Study End]]>><<set $phase to 1>><</link>>
 <<else>>
 	Your eyes are sore from reading. You can't help but rub your eyes. Robin notices you. "Tired?" <<He>> comes over and gives your brow a gentle pinch. You nod, and <<he>> helps you up. You both plop down in front of <<his>> books. "You can lean on me. I'll read it for you," <<he>> says.
 	<br><br>
@@ -393,7 +393,7 @@ The door opens again. Robin looks conflicted, <<his>> face guilty. "Oh, I... It'
 	<br><br>
 	Robin's reflections refresh your mind. After the short break, you resume your work.<<ghistory>><<historyskill 6>>
 	<br><br>
-	<<link[[Next|Robin Study End]]>><<handheldon>><<set $phase to 1>><</link>>
+	<<link[[Next|Robin Study End]]>><<set $phase to 1>><</link>>
 <</if>>
 
 :: Robin Study Peek
@@ -442,16 +442,16 @@ You look down at your exercise questions. Just completing them here seems dull.
 		"Likewise," you reply politely.
 	<</if>>
 	<br><br>
-	<<link[[Bask in your victory|Robin Study Winner End]]>><<handheldon>><</link>><br>
+	<<link[[Bask in your victory|Robin Study Winner End]]>><</link>><br>
 	<<if hasSexStat("promiscuity", 2)>>
-		<<link[[Ask for a prize|Robin Study Winner Prize]]>><<handheldon>><<promiscuous1>><</link>>
+		<<link[[Ask for a prize|Robin Study Winner Prize]]>><<promiscuous1>><</link>>
 	<</if>>
 <<elseif ($rng gte 40) or ($rng gte 10 and $historytrait is 4)>>
 	You finish answering the questions almost at the same time. You exchange the sheet to check each other's work. In the end, you both agree that your answers are equally excellent.<<ghistory>><<historyskill 6>>
 	<br><br>
 	Robin stands up and stretches. "I'll win next time!" <<he>> declares, piling the books into <<his>> schoolbag. <<He>> <<if $robinconsole is 0>>instinctively touches the spot where the game controller used to be, only to find emptiness. An awkward smile crosses <<his>> face.<<else>>picks up the video game controller.<</if>>
 	<br><br>
-	<<link[[Next|Robin Study End]]>><<handheldon>><<set $phase to 1>><</link>>
+	<<link[[Next|Robin Study End]]>><<set $phase to 1>><</link>>
 <<else>>
 	The room is filled only with the rustle of papers. Winter's questions are remarkably in-depth, requiring more than textbook knowledge. You think you've done your best, but Robin's answers trump yours.
 	<br><br>
@@ -463,14 +463,14 @@ You look down at your exercise questions. Just completing them here seems dull.
 	<br><br>
 	<<He>> shares some skills for answering questions. <<He>> seems to be very good at identifying key concepts in them. You feel that you've learned something. <<stress -3>><<lstress>><<ghistory>><<historyskill 6>><<npcincr Robin dom 1>><<gdom>>
 	<br><br>
-	<<link[[Next|Robin Study End]]>><<handheldon>><<set $phase to 1>><</link>>
+	<<link[[Next|Robin Study End]]>><<set $phase to 1>><</link>>
 <</if>>
 
 :: Robin Study Winner End
 <<effects>>
 Robin stands up and stretches. "I'll win next time!" <<he>> declares, piling the books into <<his>> schoolbag. <<He>> <<if $robinconsole is 0>>instinctively touches the spot where the game controller used to be, only to find emptiness. An awkward smile crosses <<his>> face.<<else>>picks up the video game controller.<</if>>
 <br><br>
-<<link[[Next|Robin Study End]]>><<handheldon>><<set $phase to 1>><</link>>
+<<link[[Next|Robin Study End]]>><<set $phase to 1>><</link>>
 
 :: Robin Study Winner Prize
 <<effects>>
@@ -514,14 +514,12 @@ When Robin turns around, you
 		<<else>>
 			"O…Oh! I-I see! " <<He>> fumbles open <<his>> desk drawer and shoves a candy bar into your hand. "Tha-that's what you mean, right? Sweets are the best after brain work." You can see embarrassment on <<his>> face.
 		<</if>>
-		<<wearProp "chocolate bar">>
 	<</if>>
 <<else>>
 	Robin laughs. "Sure, good for you," <<he>> says. <<He>> hands you a piece of candy. <<He>> doesn't seem to get what you mean, but the chocolate is very sweet. <<stress -3>><<lstress>>
-	<<wearProp "chocolate bar">>
 <</if>>
 <br><br>
-<<link[[Next|Robin Study End]]>><<handheldon>><<set $phase to 1>><</link>>
+<<link[[Next|Robin Study End]]>><<set $phase to 1>><</link>>
 
 :: Robin Study Course
 <<effects>>
@@ -537,7 +535,7 @@ You tell Robin the problem you're facing. <<He>> sketches a timeline, which help
 	"Correct!" Robin exclaims, patting your shoulder encouragingly.<<stress -3>><<lstress>><<npcincr Robin dom 1>><<gdom>>
 <</if>>
 <br><br>
-<<link[[Next (1:00)|Robin Study End]]>><<handheldon>><<set $phase to 1>><<pass 60>><</link>>
+<<link[[Next (1:00)|Robin Study End]]>><<set $phase to 1>><<pass 60>><</link>>
 
 :: Robin Study Course Kiss
 <<effects>>
@@ -598,13 +596,13 @@ You tell Robin the problem you're facing. <<He>> sketches a timeline, which help
 		Robin looks at you, eyes filled with need, "I'd like you to teach me more, <<if $player.gender_appearance is "m">>sir<<else>>madam<</if>>."
 	<</if>>
 	<br><br>
-	<<link[[Next (1:00)|Robin Study End]]>><<handheldon>><<set $phase to 2>><<pass 60>><</link>>
+	<<link[[Next (1:00)|Robin Study End]]>><<set $phase to 2>><<pass 60>><</link>>
 <<else>>
 	Robin titters with a blush, "You must be joking." <<He>> seems unaffected by your words. <<npcincr Robin lust 1>><<glust>>
 	<br><br>
 	You go back to your work.<<ghistory>><<historyskill 2>>
 	<br><br>
-	<<link[[Next (1:00)|Robin Study End]]>><<handheldon>><<set $phase to 1>><<pass 60>><</link>>
+	<<link[[Next (1:00)|Robin Study End]]>><<set $phase to 1>><<pass 60>><</link>>
 <</if>>
 
 :: Robin Study Mess
@@ -668,7 +666,7 @@ You notice Robin's neat and clean notebook pages. It might be fun to draw someth
 <br><br>
 You go back to your work.<<ghistory>><<historyskill 2>>
 <br><br>
-<<link[[Next (1:00)|Robin Study End]]>><<handheldon>><<set $phase to 1>><<pass 60>><</link>>
+<<link[[Next (1:00)|Robin Study End]]>><<set $phase to 1>><<pass 60>><</link>>
 
 :: Robin Study Note
 <<effects>>
@@ -687,7 +685,7 @@ You hold the slip of paper out of <<his>> reach, tickling <<him>> while <<hes>>
 <br><br>
 "You're welcome," you say, handing Robin the note and going back to your work.<<ghistory>><<historyskill 2>>
 <br><br>
-<<link[[Next (1:00)|Robin Study End]]>><<handheldon>><<set $phase to 1>><<pass 60>><</link>>
+<<link[[Next (1:00)|Robin Study End]]>><<set $phase to 1>><<pass 60>><</link>>
 
 :: Robin Study Hide Notes
 <<effects>>
@@ -733,7 +731,7 @@ You shove the note <<if !$worn.under_lower.type.includes("naked")>>into your $wo
 	<</if>>
 <</if>>
 <br><br>
-<<link[[Next (1:00)|Robin Study End]]>><<handheldon>><<set $phase to 1>><<pass 60>><</link>>
+<<link[[Next (1:00)|Robin Study End]]>><<set $phase to 1>><<pass 60>><</link>>
 
 :: Robin Study Mess Masturbation
 <<effects>>
@@ -807,7 +805,7 @@ You shove the note <<if !$worn.under_lower.type.includes("naked")>>into your $wo
 	<br><br>
 	Finally, <<he>> returns to <<his>> books. You also shift your focus back to studying.
 	<br><br>
-	<<link[[Next (1:00)|Robin Study End]]>><<handheldon>><<clotheson>><<set $phase to 1>><<pass 60>><</link>>
+	<<link[[Next (1:00)|Robin Study End]]>><<clotheson>><<set $phase to 1>><<pass 60>><</link>>
 <</if>>
 
 :: Robin Study Mess Sex
@@ -857,13 +855,13 @@ You shove the note <<if !$worn.under_lower.type.includes("naked")>>into your $wo
 <<clotheson>>
 <<endcombat>>
 <<npc Robin>><<person1>>
-<<link [[Next (1:00)|Robin Study End]]>><<handheldon>><<set $phase to 3>><<pass 60>><</link>>
+<<link [[Next (1:00)|Robin Study End]]>><<set $phase to 3>><<pass 60>><</link>>
 
 :: Robin Study Back
 <<effects>>
 <<His>> dedication motivates you. You decide to try harder.<<historyskill 6>>
 <br><br>
-<<link[[Next (1:00)|Robin Study End]]>><<handheldon>><<set $phase to 1>><</link>>
+<<link[[Next (1:00)|Robin Study End]]>><<set $phase to 1>><</link>>
 
 :: Robin Study End
 <<effects>><<unset $study_inside>>
@@ -3006,7 +3004,7 @@ You put the cash on the desk. Bailey snatches it, and reclines in <<his>> chair
 <<link [[Leave|Orphanage]]>><<endevent>><</link>>
 <br>
 
-:: Bailey Office Seduce
+:: Bailey Office Seduce 
 /* Intentionally inaccessible */
 <<set $outside to 0>><<set $location to "home">><<effects>>
 
@@ -7919,7 +7917,7 @@ You run off to a nearby gardening store and start looking for something that wil
 Robin tries to wash <<his>> body, but every time <<he>> moves, it looks like <<hes>> in pain.
 "Looks like the adrenaline finally wore off," Robin gives a pained chuckle.
 <br><br>
-<<wearProp "rag">>
+
 You take a cloth and soap it up before gently starting to wash Robin's body. <<He>> seems surprised at first, but doesn't voice any complaints.
 You have to empty the tub a few times just to keep the water clean.
 <br><br>
@@ -7932,7 +7930,7 @@ You make sure to get every trace of dirt<<if $robinPillory.danger gte 11>>, frui
 Once Robin is squeaky clean you help <<him>> get dressed in a towel and you both go to <<his>> room.
 <br><br>
 
-<<link [[Next|Robin Pillory Finish]]>><<handheldon>><</link>>
+<<link [[Next|Robin Pillory Finish]]>><</link>>
 <br>
 
 
diff --git a/game/overworld-town/special-robin/walk.twee b/game/overworld-town/special-robin/walk.twee
index e9a1e44dce7404bb3f9c87420b917dc68ec1de7d..9e35485ece3f06a01e2e9a74982ae9f9abbb240b 100644
--- a/game/overworld-town/special-robin/walk.twee
+++ b/game/overworld-town/special-robin/walk.twee
@@ -1827,7 +1827,7 @@ You break a piece of bread in half and hand <<him>> the bigger piece. <<He>> smi
 <<link [[Go home|Robin Forest Crash Home]]>><</link>>
 <br>
 <<if $robinromance is 1>>
-	<<link [[Kiss|Robin Forest Crash Kiss]]>><</link>><<promiscuous1>>
+	<<link [[Kiss|Robin Forest Crash Kiss]]>><</link>><<promiscuous1>><<kissvirginitywarning>>
 	<br>
 <</if>>
 
@@ -1843,7 +1843,7 @@ You only relax when you're safe in Robin's room.
 :: Robin Forest Crash Kiss
 <<effects>>
 
-You lean forwards and kiss Robin. <<He>> kisses back, pulling you closer. "I feel so safe with you," <<he>> says.
+You lean forwards and kiss Robin. <<He>> kisses back, pulling you closer. "I feel so safe with you," <<he>> says.<<takeKissVirginity "Robin" `($robinromance is 1?"loveInterest":"romantic")`>>
 <<promiscuity1>>
 
 Heavy footsteps interrupt before you can continue. A hand grabs your hair and yanks you back. You catch a glimpse of Eden's face contorted into a snarl, right before <<npc Eden 2>><<person2>><<he>> slams <<his>> fist into Robin's gut.
diff --git a/game/overworld-town/special-sydney/temple.twee b/game/overworld-town/special-sydney/temple.twee
index 9f216ca979a9ccd8afff0b0d8e7b0e310e3f1ba6..1926351ac6b3c6b173654a920c18cde87b9bfc4f 100644
--- a/game/overworld-town/special-sydney/temple.twee
+++ b/game/overworld-town/special-sydney/temple.twee
@@ -3010,14 +3010,14 @@ You nod. Sydney heaves a sigh of relief once again before returning to <<his>> p
 <<if $phase is 0>>
 	You sit beside Sydney on the pew and wag your tail for <<him>>. <<He>> opens an eye as you let your tail rest beside <<him>> and you gently pat it.
 	<<if _sydneyStatus.includes("corrupt")>>
-		"I've earned a nap."
+		"I've earned a nap." 
 	<<else>>
-		"I... Suppose I've earned a little rest."
+		"I... Suppose I've earned a little rest." 
 	<</if>>
 	<br><br>
 	<<He>> lies down on the pew, using your tail as a pillow. <<He>> only barely gets a nap before one of the monks scolds the two of you.
 	<<if _sydneyStatus.includes("corrupt")>>
-		<<He>> sighs as he sits back up, "Maybe next time. It's very fluffy and nice."
+		<<He>> sighs as he sits back up, "Maybe next time. It's very fluffy and nice." 
 	<<else>>
 		<<He>> sits back up sleepily. "Thank you... It made for a nice pillow, at least."
 	<</if>>
@@ -3027,13 +3027,13 @@ You nod. Sydney heaves a sigh of relief once again before returning to <<his>> p
 	<<if _sydneyStatus.includes("corrupt")>>
 		"Hoping to catch a peek?"
 	<<else>>
-		"Saying a quick prayer?"
+		"Saying a quick prayer?" 
 	<</if>>
 	You offer your head to <<him>> and <<he>> pets you more. You sit back up beside <<him>> after a short while. "Did that feel nice?"
 <<elseif $phase is 2>>
-	You nuzzle into Sydney's arm affectionately, disturbing <<his>> prayers.
+	You nuzzle into Sydney's arm affectionately, disturbing <<his>> prayers. 
 	<<if _sydneyStatus.includes("corrupt")>>
-		"Aww, hey there." <<he>> says, smiling
+		"Aww, hey there." <<he>> says, smiling 
 	<<else>>
 		"H-hey! I was praying!" <<he>> says, pouting
 	<</if>>
diff --git a/game/overworld-town/special-whitney/park.twee b/game/overworld-town/special-whitney/park.twee
index 56a0e73d49a5917563e3a5e4d4592b25abc81168..37051f91f72d42ea331b9b917614f710f744d0c5 100644
--- a/game/overworld-town/special-whitney/park.twee
+++ b/game/overworld-town/special-whitney/park.twee
@@ -474,7 +474,7 @@
 			"I can even help you practise, if you want," <<he>> grins, leading your hand <<= $rng gte 51 ? either("to <<his>> zipper", "to <<his>> groin") : (C.npc.Whitney.pronoun is "m" ? "to the waistband of <<his>> bottoms" : "under <<his>> skirt")>>. "Aren't I nice?"
 			<br><br>
 
-			<<link [[Give oral|Whitney Milkshake Cherry Oral]]>><<set $phase to 0>><<sub 1>><<oralskill 5>><<npcincr Whitney love 1>><<npcincr Whitney dom 1>><</link>><<goralskill>><<glove>><<gdom>><<oralvirginitywarning>>
+			<<link [[Give oral|Whitney Milkshake Cherry Oral]]>><<set $phase to 0>><<sub 1>><<oralskill 5>><<npcincr Whitney love 1>><<npcincr Whitney dom 1>><</link>><<goralskill>><<glove>><<gdom>><<if $NPCList[0].penis isnot "none">><<oralvirginitywarning>><</if>>
 			<br>
 			<<link [[Refuse|Whitney Milkshake Cherry Oral]]>><<set $phase to 1>><<def 1>><<npcincr Whitney love -1>><<npcincr Whitney dom -1>><</link>><<llove>><<ldom>>
 			<br>
@@ -664,6 +664,7 @@
 			<<default>>
 				<<He>> groans as you swirl your tongue along <<his>> penis. "That's it. Take it, fuck, just like that. Take it all." You resist telling <<him>> that it's not exactly a challenge given <<his>> size, instead focusing on surrounding the sensitive glans with your warm, wet mouth.
 		<</switch>>
+		<<if $player.virginity.oral is true>><<silently>><<takeVirginity "Whitney" "oral">><</silently>><</if>>
 		<br><br>
 		It's not long before Whitney doubles over when <<he>> cums, keeping <<his>> <<print $NPCList[0].penisdesc>> lodged in your mouth until <<hes>> finished pumping hot, thick ejaculate down your throat.<<arousal 600 "mouth">><<garousal>>
 		<<oralejacstat>><<ejacstat>><<cumswallow "human" null `npcSemenMod(C.npc.Whitney.penissize)`>>
diff --git a/game/overworld-town/special-whitney/street.twee b/game/overworld-town/special-whitney/street.twee
index cf9e3d80344b4c7ead5fc220f01aa3cfa78d41fe..f2dc1fcefe6a8542928f0a4822279eb0adccc0ea 100644
--- a/game/overworld-town/special-whitney/street.twee
+++ b/game/overworld-town/special-whitney/street.twee
@@ -1385,7 +1385,7 @@ A sudden, sharp pain shocks your <<genitals>> as the fabric of your <<print $wor
 <<destinationeventend>>
 
 :: Street Bully Paint
-<<set $outside to 1>><<effects>><<wearProp "spray paint">>
+<<set $outside to 1>><<effects>>
 
 <<if $phase is 1>>
 	<<if $speech_attitude is "meek">>
diff --git a/game/overworld-underground/loc-cave/beach.twee b/game/overworld-underground/loc-cave/beach.twee
index 7fc0fa738c4ad8002880ce13c3b891da7dfbd77f..bf41df5d7c6159f9d0675751714a9ea8d504ed20 100644
--- a/game/overworld-underground/loc-cave/beach.twee
+++ b/game/overworld-underground/loc-cave/beach.twee
@@ -75,7 +75,7 @@ You are in a cave along the coast. Bioluminescent lichen clings to the walls.
 
 
 :: Beach Cave Open
-<<effects>><<wearProp "silver compass">>
+<<effects>>
 
 You open the chest. Silver glints inside. A compass. It looks valuable. A collector would know more.
 <<set $antiquemoney += 2200>><<museumAntiqueStatus "antiquesilvercompass" "found">>
@@ -83,11 +83,11 @@ You open the chest. Silver glints inside. A compass. It looks valuable. A collec
 <<set $pursuit += 1>>
 <<if $museumAntiques.antiques.antiqueleathermap isnot "found" and $museumAntiques.antiques.antiqueleathermap isnot "talk" and $museumAntiques.antiques.antiqueleathermap isnot "museum">>
 	<<set $skulduggerydifficulty to 700>>
-	<<caveicon "treasure">><<handheldon>><<link [[Examine the chest more closely|Beach Cave Examine]]>><</link>><<skulduggerydifficulty>>
+	<<caveicon "treasure">><<link [[Examine the chest more closely|Beach Cave Examine]]>><</link>><<skulduggerydifficulty>>
 	<br>
 <</if>>
 
-<<getouticon>><<link [[Leave|Beach Cave]]>><<handheldon>><<set $eventskip to 1>><</link>>
+<<getouticon>><<link [[Leave|Beach Cave]]>><<set $eventskip to 1>><</link>>
 <br>
 
 
@@ -103,13 +103,12 @@ You peer into the chest, then feel along the walls.
 	<<earnFeat "X Marks the Spot">>
 	You feel a button, barely perceptible against the wood. You don't push it. Instead, you feel with your fingertip. There's a smaller button, set into the first. You push down with a nail, and <span class="green">a hidden compartment opens</span> from the base of the container.
 	<br><br>
-	<<wearProp "map">>
 	<<set $antiquemoney += 4000>><<museumAntiqueStatus "antiqueleathermap" "found">>
 	A leather scroll sits inside, bound by waxy string. You unfurl it. It's a map, and in good condition. A coastal settlement is depicted, squashed beside a forest. Lines criss-cross the sea, some of them dotted. A kraken has been drawn in the top left corner, and a dragon in the bottom right. A collector might know more.
 	<br><br>
 	<<skulduggeryuse>>
 
-	<<link [[Next|Beach Cave]]>><<handheldon>><</link>>
+	<<link [[Next|Beach Cave]]>><</link>>
 	<br>
 
 <<else>>
diff --git a/game/overworld-underground/loc-cave/events.twee b/game/overworld-underground/loc-cave/events.twee
index 2be8425e2afed660a732d860d16d96e0c3920683..0e8c14cc7f2f7cf8b5ca0910d43d66448374c081 100644
--- a/game/overworld-underground/loc-cave/events.twee
+++ b/game/overworld-underground/loc-cave/events.twee
@@ -1,9 +1,11 @@
 :: Beach Cave Hollow Open
 <<effects>>
 
+
+
 <<skulduggerycheck>>
 <<if $skulduggerysuccess is 1>>
-	<<wearProp "cutlass">>
+
 	You're not unfamiliar with locks from this period, but this one is cleverer than most. Not clever enough. <span class="green">It snaps open,</span> and you lift the lid.
 	<br><br>
 	The interior is dry.
@@ -18,6 +20,8 @@
 	<br><br>
 	<<skulduggeryuse>>
 
+
+	<<endevent>>
 	<<beach_cave_caught>>
 
 <<else>>
@@ -41,7 +45,7 @@
 
 <<skulduggerycheck>>
 <<if $skulduggerysuccess is 1>>
-	<<wearProp "rusted cutlass">>
+
 	You're not unfamiliar with locks from this period, <span class="green">and manage to snap it open.</span> You lift the lid.
 	<br><br>
 	It's full of water.
@@ -56,6 +60,7 @@
 	<br><br>
 	<<skulduggeryuse>>
 
+	<<endevent>>
 	<<beach_cave_caught>>
 
 <<else>>
@@ -85,17 +90,16 @@
 You spot an unlocked chest half-concealed behind an outcrop.
 
 <<if random(1, 2) is 2>>
-	<<wearProp "silver dagger">>
 	You find a silver dagger inside. It would be worth something to a collector.
 	<<set $antiquemoney += 240>><<museumAntiqueStatus "antiquesilverdagger" "found">>
 	<br><br>
 <<else>>
-	<<wearProp "rusted cutlass">>
 	There's a rusty old cutlass inside. Might be worth a little to a collector.
 	<<set $antiquemoney += 10>><<museumAntiqueStatus "antiquerustedcutlass" "found">>
 	<br><br>
 <</if>>
 
+<<endevent>>
 <<beach_cave_caught>>
 
 
@@ -154,12 +158,11 @@ You dive beneath the water, and follow the cave.
 <<if $swimmingSuccess>>
 	<span class="green">You emerge from the water</span> on the other side, and look around. The air is warmer here. You see a lichen-light glint behind an outcrop. It's a dagger, made of silver and in good condition. A collector would be interested in this.
 	<br><br>
-	<<wearProp "silver dagger">>
 	<<set $antiquemoney += 240>><<museumAntiqueStatus "antiquesilverdagger" "found">>
 	<br><br>
 	You swim back to the main cave.
 	<br><br>
-	<<link [[Next|Beach Cave]]>><<handheldon>><<set $eventskip to 1>><</link>>
+	<<link [[Next|Beach Cave]]>><<set $eventskip to 1>><</link>>
 	<br>
 <<else>>
 	You begin to run out of breath, <span class="red">and you see no end up ahead.</span> You turn back.<<gstress>><<stress 6>>
diff --git a/game/overworld-underground/loc-cave/widgets.twee b/game/overworld-underground/loc-cave/widgets.twee
index 73a8e1d29dc67fe3ad1b8f88fb3d6bad92ca8892..ea918ed81bb60619263b0ccb4f92a03b08402fc6 100644
--- a/game/overworld-underground/loc-cave/widgets.twee
+++ b/game/overworld-underground/loc-cave/widgets.twee
@@ -478,10 +478,9 @@
 		<<if $bestialitydisable is "f" and $slugdisable is "f" and random(1, 2) is 2>>
 			<span class="red">A shape lunges from the water.</span> It misses, landing on the cave wall behind you. A giant slug. Another swims towards you.
 			<br><br>
-			<<link [[Next|Beach Cave Struggle]]>><<endevent>><<set $struggle_start to 1>><</link>>
+			<<link [[Next|Beach Cave Struggle]]>><<set $struggle_start to 1>><</link>>
 			<br>
 		<<else>>
-			<<endevent>>
 			<<generate1>><<generate2>><<generate3>><<generate4>><<generate5>><<generate6>><<person1>>
 
 			A figure rounds a corner up ahead. A <<person>>, wearing a wetsuit. <<He>> stares at you, smiling. Two others join <<him>>.
@@ -503,19 +502,19 @@
 		<<set $pursuit += 1>>
 		Your hair bristles. <span class="purple">Something is watching you.</span>
 		<br><br>
-		<<link [[Next|Beach Cave]]>><<endevent>><<set $eventskip to 1>><</link>>
+		<<link [[Next|Beach Cave]]>><<set $eventskip to 1>><</link>>
 		<br>
 	<<elseif $pursuit is 1>>
 		<<set $pursuit += 1>>
 		You shiver. <span class="pink">Something is following you. It's not alone.</span>
 		<br><br>
-		<<link [[Next|Beach Cave]]>><<endevent>><<set $eventskip to 1>><</link>>
+		<<link [[Next|Beach Cave]]>><<set $eventskip to 1>><</link>>
 		<br>
 	<<else>>
 		<<set $pursuit += 1>>
 		You shiver. <span class="pink">Another threat follows.</span>
 		<br><br>
-		<<link [[Next|Beach Cave]]>><<endevent>><<set $eventskip to 1>><</link>>
+		<<link [[Next|Beach Cave]]>><<set $eventskip to 1>><</link>>
 		<br>
 	<</if>>
 <</widget>>
diff --git a/game/overworld-underground/loc-sewers/old-sewers.twee b/game/overworld-underground/loc-sewers/old-sewers.twee
index 83d8b35ddf30036fbe114be994a500b05c726868..35e5eafc8363ee6c93b85b7a93611e9f06030062 100644
--- a/game/overworld-underground/loc-sewers/old-sewers.twee
+++ b/game/overworld-underground/loc-sewers/old-sewers.twee
@@ -230,17 +230,17 @@ You are in a cavern near the old sewers, beside a pool of water. The pool stretc
 		<<orgasmLocation "sewers" `($sewerschased is 1 ? true : false)`>>
 	<</if>>
 	<<if $sewersspray isnot 1>>
-		<<peppersprayicon>><<link [[Take the cylinder|Sewers Lake Cylinder]]>><<handheldon>><<set $sewersspray to 1>><<set $spraymax += 1>><<spray 5>><</link>><<gspraymax>>
+		<<peppersprayicon>><<link [[Take the cylinder|Sewers Lake Cylinder]]>><<set $sewersspray to 1>><<set $spraymax += 1>><<spray 5>><</link>><<gspraymax>>
 		<br>
 	<</if>>
 	<<if !$weekly.sewers.antiqueCrystal>>
-		<<antiqueicon "crystal_pink">><<link [[Take the crystal|Sewers Lake]]>><<wearProp "crystal pink">><<arousal 600>><<set $weekly.sewers.antiqueCrystal to true>><<set $antiquemoney += 200>><<museumAntiqueStatus "antiquecrystal" "found">><</link>><<garousal>>
+		<<antiqueicon "crystal_pink">><<link [[Take the crystal|Sewers Lake]]>><<arousal 600>><<set $weekly.sewers.antiqueCrystal to true>><<set $antiquemoney += 200>><<museumAntiqueStatus "antiquecrystal" "found">><</link>><<garousal>>
 		<br><br>
 	<</if>>
 	<<if $nextPassageCheck is "Sewers Waterfall">>
-		<<sewericon "waterfall">><span class="nextLink"><<link [[Wet tunnel (0:05)|Sewers Waterfall]]>><<pass 5>><<handheldon>><</link>></span>
+		<<sewericon "waterfall">><span class="nextLink"><<link [[Wet tunnel (0:05)|Sewers Waterfall]]>><<pass 5>><</link>></span>
 	<<else>>
-		<<sewericon "waterfall">><<link [[Wet tunnel (0:05)|Sewers Waterfall]]>><<pass 5>><<handheldon>><</link>>
+		<<sewericon "waterfall">><<link [[Wet tunnel (0:05)|Sewers Waterfall]]>><<pass 5>><</link>>
 	<</if>>
 	<br><br>
 <</if>>
@@ -406,7 +406,6 @@ You are in the old sewers. The walls are covered in huge spider webs.
 
 <<effects>><<set $location to "sewers">><<set $outside to 0>>
 <<set $weekly.sewers.antiqueCandlestick to true>>
-<<wearProp "candlestick">>
 <<set $antiquemoney += 50>><<museumAntiqueStatus "antiquecandlestick" "found">>
 You reach into the web and tug out the candlestick.
 <<if $rng gte 81>>
@@ -414,7 +413,7 @@ You reach into the web and tug out the candlestick.
 	<<bind>>
 <</if>>
 <br><br>
-<<link [[Next|Sewers Webs]]>><<handheldon>><</link>>
+<<link [[Next|Sewers Webs]]>><</link>>
 <br>
 
 :: Sewers Shrooms
@@ -461,7 +460,6 @@ You are in the old sewers. The walls and floor here are covered in fungus. Some
 :: Sewers Dildo
 
 <<effects>><<set $location to "sewers">><<set $outside to 0>>
-<<wearProp "dildo">>
 <<set $weekly.sewers.antiqueDildo to true>>
 <<set $antiquemoney += 50>><<museumAntiqueStatus "antiquedildo" "found">>
 You squeeze between the mushrooms and grasp the object. <<if $museumAntiques.antiques.antiquedildo isnot "museum">>Even up close you've no clue what it is. A cucumber ornament?<<else>>You remember Winter mentioning that it's an old medical aid.<</if>>
@@ -469,7 +467,7 @@ You squeeze between the mushrooms and grasp the object. <<if $museumAntiques.ant
 You squeeze out of the mushroom forest and sneeze. You feel warm.
 <<drugs 360>><<garousal>><<arousal 600>>
 <br><br>
-<<link [[Next|Sewers Shrooms]]>><<handheldon>><</link>>
+<<link [[Next|Sewers Shrooms]]>><</link>>
 <br>
 
 :: Sewers Hole
@@ -530,13 +528,12 @@ A breeze emerges from the pit. It makes your <<genitals 1>> tingle.
 	<br>
 <<else>>
 	<<set $weekly.sewers.antiqueHorn to true>>
-	<<wearProp "horn">>
 	<<set $antiquemoney += 100>><<museumAntiqueStatus "antiquehorn" "found">>
 	Arms stretched out either side, you walk across the gap. A warm air gushes up from the pit and caresses you, but you make it to the other side.
 	<br><br>
 	You take the horn and walk back the way you came.
 	<br><br>
-	<<link [[Next|Sewers Hole]]>><<handheldon>><</link>>
+	<<link [[Next|Sewers Hole]]>><</link>>
 	<br>
 <</if>>
 
@@ -880,20 +877,19 @@ You wait. Nothing happens. You peek, then walk back to the safe. It's still lock
 <<if $sewerswatchattempt is $sewerswatchnumber>>
 	You press $sewerswatchattempt and the door swings open. Inside is an antique watch. You take it.
 	<<set $antiquemoney += 200>><<museumAntiqueStatus "antiquewatch" "found">>
-	<<wearProp "watch">>
 	<br><br>
 	<<if $slimedisable is "f" and $hallucinations gte 1 and $sewerscountdown is 0>>
 		The slime spreads to your other arm.
 		<br><br>
 
-		<<link [[Next|Sewers Slime]]>><<handheldon>><</link>>
+		<<link [[Next|Sewers Slime]]>><</link>>
 		<br>
 	<<else>>
 		<<if $slimedisable is "f" and $hallucinations gte 1 and $sewerscountdown lt 3>>
 			You peel the slime off your limbs.
 			<br><br>
 		<</if>>
-		<<link [[Next|Sewers Workshop]]>><<handheldon>><</link>>
+		<<link [[Next|Sewers Workshop]]>><</link>>
 		<br>
 	<</if>>
 <<elseif $sewerscountdown is 0>>
@@ -902,10 +898,10 @@ You wait. Nothing happens. You peek, then walk back to the safe. It's still lock
 	<<if $slimedisable is "f" and $hallucinations gte 1>>
 		The slime spreads to your other arm.
 		<br><br>
-		<<link [[Next|Sewers Slime]]>><<handheldon>><</link>>
+		<<link [[Next|Sewers Slime]]>><</link>>
 		<br>
 	<<else>>
-		<<link [[Next|Sewers Workshop]]>><<handheldon>><</link>>
+		<<link [[Next|Sewers Workshop]]>><</link>>
 		<br>
 	<</if>>
 <<elseif $sewerscountdown is 1>>
diff --git a/game/special-exhibition/night.twee b/game/special-exhibition/night.twee
index 1eb82fe9e5d463f9d0c7f8dbcd332a2307eec161..e4e58f0ac7fab4e58c73fdfa508b1b0d14650fdd 100644
--- a/game/special-exhibition/night.twee
+++ b/game/special-exhibition/night.twee
@@ -57,7 +57,6 @@
 <<exhibitionism2>>
 
 <<if $rng gte 51>>
-	<<wearProp "sucker">>
 	<<generate2>>
 	A <<person1>><<person>> reads a magazine at the counter. <<He>> doesn't look up as you enter.
 	<br><br>
@@ -77,7 +76,6 @@
 	<br>
 
 <<else>>
-	<<wearProp "chocolate bar">>
 	<<fameexhibitionism 1>>
 	A <<person>> reads a magazine at the counter. <<He>> glances up as you enter, then looks again, a shocked expression on <<his>> face. <<covered>>
 
diff --git a/game/special-masturbation/widgets.twee b/game/special-masturbation/widgets.twee
index fbc099b6613e36e3c39c1947c6bdeb8f386faefb..5b7d9d7abfd93472d251f1716c4b52d2ed3da92d 100644
--- a/game/special-masturbation/widgets.twee
+++ b/game/special-masturbation/widgets.twee
@@ -105,7 +105,6 @@
 	<<elseif $bottledMilk>>
 		<span class="gold">You bottled <<print ($bottledMilk).toFixed(1)>> mL of breast milk.</span>
 		<<if $bottledMilk gte 100>>
-			<<wearProp "baby bottle">>
 			<<set $_bottles to Math.floor(parseFloat(($bottledMilk).toFixed(1)) / 100)>>
 			<<tending_give baby_bottle_of_breast_milk $_bottles>>
 			Enough to fill <<print $_bottles>> bottle<<print $_bottles gt 1 ? "s" : "">>.
diff --git a/img/body/leftarmcover.png b/img/body/leftarm.png
similarity index 100%
rename from img/body/leftarmcover.png
rename to img/body/leftarm.png
diff --git a/img/body/mannequin/rightarmcover.png b/img/body/mannequin/rightarmcover.png
deleted file mode 100644
index 6cc14850cb8b47716d883b4daee34bf92ae84a9a..0000000000000000000000000000000000000000
Binary files a/img/body/mannequin/rightarmcover.png and /dev/null differ
diff --git a/img/body/rightarm.png b/img/body/rightarm.png
new file mode 100644
index 0000000000000000000000000000000000000000..8153fb1a55868b25182ad2f06bac0cf0a961070f
Binary files /dev/null and b/img/body/rightarm.png differ
diff --git a/img/body/rightarmcover.png b/img/body/rightarmcover.png
deleted file mode 100644
index 37bc19cb3a67c390ab33a110ca00007fd2cb2e9a..0000000000000000000000000000000000000000
Binary files a/img/body/rightarmcover.png and /dev/null differ
diff --git a/img/body/rightarmhold.png b/img/body/rightarmhold.png
index 1b72acdf6309cf27c5ac6cdf93029fae518b7b14..c02370ccf3c974b4125943c1c58a1c18f59a3dd0 100644
Binary files a/img/body/rightarmhold.png and b/img/body/rightarmhold.png differ
diff --git a/img/clothes/feet/fur_boots/acc_gray.png b/img/clothes/feet/fur_boots/acc_gray.png
index 6c2139223357c0ae886d45cc94174955ac6da15b..5a4fb7776103c7b276ec55e00d99c71f5b6a31cf 100644
Binary files a/img/clothes/feet/fur_boots/acc_gray.png and b/img/clothes/feet/fur_boots/acc_gray.png differ
diff --git a/img/clothes/feet/fur_boots/full_gray.png b/img/clothes/feet/fur_boots/full_gray.png
index 2d9002582c5ba6715036b4f22e64de4ff414f650..56900a596333ddefea0f33327b28510a33acfc70 100644
Binary files a/img/clothes/feet/fur_boots/full_gray.png and b/img/clothes/feet/fur_boots/full_gray.png differ
diff --git a/img/clothes/feet/fur_boots/mask.png b/img/clothes/feet/fur_boots/mask.png
index f3fd94bdd82018504af50219fdf1fc1e4afdf1c6..c9644e62b947ece830c4c0df10dcccd655decea7 100644
Binary files a/img/clothes/feet/fur_boots/mask.png and b/img/clothes/feet/fur_boots/mask.png differ
diff --git a/img/clothes/feet/thighhigh_heels/full_gray.png b/img/clothes/feet/thighhigh_heels/full_gray.png
index 5ede0a3d9be9e29df35f2aa7dea62002c0a087ee..4d7331c87428b5333cb16d2c6c550fddb4724dc5 100644
Binary files a/img/clothes/feet/thighhigh_heels/full_gray.png and b/img/clothes/feet/thighhigh_heels/full_gray.png differ
diff --git a/img/clothes/handheld/aphrodisiac jar/right.png b/img/clothes/handheld/aphrodisiac jar/right.png
deleted file mode 100644
index a2bd3ea2840b7c0014f007b83fdd625188313d29..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/aphrodisiac jar/right.png and /dev/null differ
diff --git a/img/clothes/handheld/apple/right.png b/img/clothes/handheld/apple/right.png
deleted file mode 100644
index b53565becb217c8a748ba84adcf5efc5780bf740..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/apple/right.png and /dev/null differ
diff --git a/img/clothes/handheld/arrow/right.png b/img/clothes/handheld/arrow/right.png
deleted file mode 100644
index afd5641ee576c20916890bf31a84105979c43d61..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/arrow/right.png and /dev/null differ
diff --git a/img/clothes/handheld/artillery/right.png b/img/clothes/handheld/artillery/right.png
deleted file mode 100644
index daf6902ba4b3f44c5f96d1227b8b2ee40f26a63d..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/artillery/right.png and /dev/null differ
diff --git a/img/clothes/handheld/baby bottle/right.png b/img/clothes/handheld/baby bottle/right.png
deleted file mode 100644
index f37f4b78de5080a20e7390384c07071a9bd557eb..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/baby bottle/right.png and /dev/null differ
diff --git a/img/clothes/handheld/bailey/right.png b/img/clothes/handheld/bailey/right.png
deleted file mode 100644
index d8170f8d3dbdeda99cf5d6ebd9e62ce9fa105360..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/bailey/right.png and /dev/null differ
diff --git a/img/clothes/handheld/banana/right.png b/img/clothes/handheld/banana/right.png
deleted file mode 100644
index d800af3167fc2e884b9616f961fcc32bcb6753d9..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/banana/right.png and /dev/null differ
diff --git a/img/clothes/handheld/bell/right.png b/img/clothes/handheld/bell/right.png
deleted file mode 100644
index ccd91b76f12d54fbc134c7bdfcc44d8e7da6175d..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/bell/right.png and /dev/null differ
diff --git a/img/clothes/handheld/bird egg/right.png b/img/clothes/handheld/bird egg/right.png
deleted file mode 100644
index 025bcc99eed95b2d9c0664394f207dc677c0ee66..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/bird egg/right.png and /dev/null differ
diff --git a/img/clothes/handheld/black box/right.png b/img/clothes/handheld/black box/right.png
deleted file mode 100644
index 0bb6b93fe7d2bfc25ae2caa06b67c8d2004acb0d..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/black box/right.png and /dev/null differ
diff --git a/img/clothes/handheld/blackberry/right.png b/img/clothes/handheld/blackberry/right.png
deleted file mode 100644
index 86a76acceb9e41f749e8d4b8f9c73157372ca268..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/blackberry/right.png and /dev/null differ
diff --git a/img/clothes/handheld/blood lemon/right.png b/img/clothes/handheld/blood lemon/right.png
deleted file mode 100644
index 5c9655f9fedab941847314f943c3d9aa94adc5fe..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/blood lemon/right.png and /dev/null differ
diff --git a/img/clothes/handheld/bookenglish/right_acc.png b/img/clothes/handheld/bookenglish/right_acc.png
deleted file mode 100644
index 161cbb8744fdc4288214e8224ff54296621ef7b8..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/bookenglish/right_acc.png and /dev/null differ
diff --git a/img/clothes/handheld/bookenglish/right_gray.png b/img/clothes/handheld/bookenglish/right_gray.png
deleted file mode 100644
index d78f943bdec92ac73cda1bdd4822d8385df11338..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/bookenglish/right_gray.png and /dev/null differ
diff --git a/img/clothes/handheld/bookenglishclosed/right_acc.png b/img/clothes/handheld/bookenglishclosed/right_acc.png
deleted file mode 100644
index 261b422a22a0811a6117cd16dcbd254fe6e88738..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/bookenglishclosed/right_acc.png and /dev/null differ
diff --git a/img/clothes/handheld/bookenglishclosed/right_gray.png b/img/clothes/handheld/bookenglishclosed/right_gray.png
deleted file mode 100644
index 1c820c76c1b1cc741ce017c0ec71605047424f1d..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/bookenglishclosed/right_gray.png and /dev/null differ
diff --git a/img/clothes/handheld/bookhistory/right_acc.png b/img/clothes/handheld/bookhistory/right_acc.png
deleted file mode 100644
index a1947f6c22d7c0677fc2aae84f202c67684d201b..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/bookhistory/right_acc.png and /dev/null differ
diff --git a/img/clothes/handheld/bookhistory/right_gray.png b/img/clothes/handheld/bookhistory/right_gray.png
deleted file mode 100644
index d78f943bdec92ac73cda1bdd4822d8385df11338..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/bookhistory/right_gray.png and /dev/null differ
diff --git a/img/clothes/handheld/bookhistoryclosed/right_acc.png b/img/clothes/handheld/bookhistoryclosed/right_acc.png
deleted file mode 100644
index de1a5898fc7a6ae9d85966875f7cd92a55a1e347..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/bookhistoryclosed/right_acc.png and /dev/null differ
diff --git a/img/clothes/handheld/bookhistoryclosed/right_gray.png b/img/clothes/handheld/bookhistoryclosed/right_gray.png
deleted file mode 100644
index 1c820c76c1b1cc741ce017c0ec71605047424f1d..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/bookhistoryclosed/right_gray.png and /dev/null differ
diff --git a/img/clothes/handheld/bookmaths/right_acc.png b/img/clothes/handheld/bookmaths/right_acc.png
deleted file mode 100644
index c25ad73aeff2a9ae9b9dfd5987660bda33b5a82d..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/bookmaths/right_acc.png and /dev/null differ
diff --git a/img/clothes/handheld/bookmaths/right_gray.png b/img/clothes/handheld/bookmaths/right_gray.png
deleted file mode 100644
index d78f943bdec92ac73cda1bdd4822d8385df11338..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/bookmaths/right_gray.png and /dev/null differ
diff --git a/img/clothes/handheld/bookmathsclosed/right_acc.png b/img/clothes/handheld/bookmathsclosed/right_acc.png
deleted file mode 100644
index 813a456cd03fc7b671993b44aec3bfc33a4f053b..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/bookmathsclosed/right_acc.png and /dev/null differ
diff --git a/img/clothes/handheld/bookmathsclosed/right_gray.png b/img/clothes/handheld/bookmathsclosed/right_gray.png
deleted file mode 100644
index 1c820c76c1b1cc741ce017c0ec71605047424f1d..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/bookmathsclosed/right_gray.png and /dev/null differ
diff --git a/img/clothes/handheld/bookolive/right.png b/img/clothes/handheld/bookolive/right.png
deleted file mode 100644
index 727a134bec5bf364cee1cf0f7a20b44b777829d7..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/bookolive/right.png and /dev/null differ
diff --git a/img/clothes/handheld/bookoliveclosed/right.png b/img/clothes/handheld/bookoliveclosed/right.png
deleted file mode 100644
index c48c0fb695772b24593649f82b16a56b90ea1e35..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/bookoliveclosed/right.png and /dev/null differ
diff --git a/img/clothes/handheld/bookscarlet/right.png b/img/clothes/handheld/bookscarlet/right.png
deleted file mode 100644
index 537e72c00d4d6ca24d1930e01912d677529f18e6..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/bookscarlet/right.png and /dev/null differ
diff --git a/img/clothes/handheld/bookscarletclosed/right.png b/img/clothes/handheld/bookscarletclosed/right.png
deleted file mode 100644
index 7ebd0be469a0fb50a1a0b87064ae3b784d88327a..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/bookscarletclosed/right.png and /dev/null differ
diff --git a/img/clothes/handheld/bookscience/right_acc.png b/img/clothes/handheld/bookscience/right_acc.png
deleted file mode 100644
index 4384ba85cdfdd9c8d361293511164934e67e5d4c..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/bookscience/right_acc.png and /dev/null differ
diff --git a/img/clothes/handheld/bookscience/right_gray.png b/img/clothes/handheld/bookscience/right_gray.png
deleted file mode 100644
index d78f943bdec92ac73cda1bdd4822d8385df11338..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/bookscience/right_gray.png and /dev/null differ
diff --git a/img/clothes/handheld/bookscienceclosed/right_acc.png b/img/clothes/handheld/bookscienceclosed/right_acc.png
deleted file mode 100644
index 7a9d30e02146bf2cfbd8277b8200f4f84ff2f631..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/bookscienceclosed/right_acc.png and /dev/null differ
diff --git a/img/clothes/handheld/bookscienceclosed/right_gray.png b/img/clothes/handheld/bookscienceclosed/right_gray.png
deleted file mode 100644
index 1c820c76c1b1cc741ce017c0ec71605047424f1d..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/bookscienceclosed/right_gray.png and /dev/null differ
diff --git a/img/clothes/handheld/brass statuette/right.png b/img/clothes/handheld/brass statuette/right.png
deleted file mode 100644
index 0cc2c5300ce176bb4a0147d20a6ffcde91f84bec..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/brass statuette/right.png and /dev/null differ
diff --git a/img/clothes/handheld/breast milk bag/right.png b/img/clothes/handheld/breast milk bag/right.png
deleted file mode 100644
index 0dcc3dc501ac76ff11683fe482369ac152280517..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/breast milk bag/right.png and /dev/null differ
diff --git a/img/clothes/handheld/breast milk bottle/right.png b/img/clothes/handheld/breast milk bottle/right.png
deleted file mode 100644
index 786dbf840ef9ee1649449294477379c52449a2f9..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/breast milk bottle/right.png and /dev/null differ
diff --git a/img/clothes/handheld/breast pump/right_acc.png b/img/clothes/handheld/breast pump/right_acc.png
deleted file mode 100644
index 651d316762b5f3766e7ef8a80f15c4ff56ae6541..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/breast pump/right_acc.png and /dev/null differ
diff --git a/img/clothes/handheld/breast pump/right_gray.png b/img/clothes/handheld/breast pump/right_gray.png
deleted file mode 100644
index 822f825a30c941536b74182faa653cdf8a9a1d42..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/breast pump/right_gray.png and /dev/null differ
diff --git a/img/clothes/handheld/bronze key/right.png b/img/clothes/handheld/bronze key/right.png
deleted file mode 100644
index 0aeb12b603a5d6045382dfa67f50fcbd99008e71..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/bronze key/right.png and /dev/null differ
diff --git a/img/clothes/handheld/bullet/right.png b/img/clothes/handheld/bullet/right.png
deleted file mode 100644
index bfec3f3f376272edbfd15cdc9efa046f8f95769e..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/bullet/right.png and /dev/null differ
diff --git a/img/clothes/handheld/candlestick/right.png b/img/clothes/handheld/candlestick/right.png
deleted file mode 100644
index e6b99322772caac2def4141a1b498a604c4b9c4d..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/candlestick/right.png and /dev/null differ
diff --git a/img/clothes/handheld/candy box/right.png b/img/clothes/handheld/candy box/right.png
deleted file mode 100644
index 97acf4b1f6a3b72ada8b4767acc68f885c2ad070..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/candy box/right.png and /dev/null differ
diff --git a/img/clothes/handheld/cane/right_acc_gray.png b/img/clothes/handheld/cane/right_acc_gray.png
deleted file mode 100644
index 92b40f36cfa3b27af4140449661f39eb78e1748a..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/cane/right_acc_gray.png and /dev/null differ
diff --git a/img/clothes/handheld/cane/right_gray.png b/img/clothes/handheld/cane/right_gray.png
deleted file mode 100644
index 72792f1e94bc2331bf97e9bd8597bb49b793e69a..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/cane/right_gray.png and /dev/null differ
diff --git a/img/clothes/handheld/chastity/right.png b/img/clothes/handheld/chastity/right.png
deleted file mode 100644
index 24a212c5c5182ba1cf4767e1ef8034102f96e05e..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/chastity/right.png and /dev/null differ
diff --git a/img/clothes/handheld/chocolate bar/right.png b/img/clothes/handheld/chocolate bar/right.png
deleted file mode 100644
index 2a30892bc4d45846d466278a961f5bc00470984a..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/chocolate bar/right.png and /dev/null differ
diff --git a/img/clothes/handheld/chocolate/right.png b/img/clothes/handheld/chocolate/right.png
deleted file mode 100644
index 0b7835a8859708461c40c24c19d86ab29637ebce..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/chocolate/right.png and /dev/null differ
diff --git a/img/clothes/handheld/condom/right.png b/img/clothes/handheld/condom/right.png
deleted file mode 100644
index 42a3d5345d5476ce81307a4caf5d04117845e124..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/condom/right.png and /dev/null differ
diff --git a/img/clothes/handheld/copper coin/right.png b/img/clothes/handheld/copper coin/right.png
deleted file mode 100644
index 9a39e1b7e5ca3d44a73f8357d125216b3d2684cc..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/copper coin/right.png and /dev/null differ
diff --git a/img/clothes/handheld/copper compass/right.png b/img/clothes/handheld/copper compass/right.png
deleted file mode 100644
index a1986df0a51898cbe8798d6b68fce737a324b8c6..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/copper compass/right.png and /dev/null differ
diff --git a/img/clothes/handheld/copper ring/right.png b/img/clothes/handheld/copper ring/right.png
deleted file mode 100644
index 192e2200f62077241a81ce5894f6bf341131dcd1..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/copper ring/right.png and /dev/null differ
diff --git a/img/clothes/handheld/coral ring/right.png b/img/clothes/handheld/coral ring/right.png
deleted file mode 100644
index 3920918ef84db7cfb143addcaeb5750924a877b2..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/coral ring/right.png and /dev/null differ
diff --git a/img/clothes/handheld/crutch/right_acc_gray.png b/img/clothes/handheld/crutch/right_acc_gray.png
deleted file mode 100644
index 68002d2b091a818f28b400cf4abddda525876c52..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/crutch/right_acc_gray.png and /dev/null differ
diff --git a/img/clothes/handheld/crutch/right_gray.png b/img/clothes/handheld/crutch/right_gray.png
deleted file mode 100644
index f010c63387d26fd877c3ad781363d366c0c64c75..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/crutch/right_gray.png and /dev/null differ
diff --git a/img/clothes/handheld/crystal pink/right.png b/img/clothes/handheld/crystal pink/right.png
deleted file mode 100644
index 68cc22283afbf7acb1168afb8c358b3199caf5a5..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/crystal pink/right.png and /dev/null differ
diff --git a/img/clothes/handheld/crystal/right.png b/img/clothes/handheld/crystal/right.png
deleted file mode 100644
index f7a4268dff87e761a4d71c2bb0dbe2cb8967b71e..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/crystal/right.png and /dev/null differ
diff --git a/img/clothes/handheld/cup/right.png b/img/clothes/handheld/cup/right.png
deleted file mode 100644
index 9834c323249fa8270b33597ecb8ebd767d5e3f0a..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/cup/right.png and /dev/null differ
diff --git a/img/clothes/handheld/cutlass/right.png b/img/clothes/handheld/cutlass/right.png
deleted file mode 100644
index bcbb14508bf17ee251c8454209b7b71fbbdbe000..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/cutlass/right.png and /dev/null differ
diff --git a/img/clothes/handheld/dagger/right.png b/img/clothes/handheld/dagger/right.png
deleted file mode 100644
index 908545c34614a4b025a01ecfd35429f35fd74c2a..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/dagger/right.png and /dev/null differ
diff --git a/img/clothes/handheld/diamond/right.png b/img/clothes/handheld/diamond/right.png
deleted file mode 100644
index e28d387181f2e12459fcc328017ba990e08acad2..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/diamond/right.png and /dev/null differ
diff --git a/img/clothes/handheld/dildo/right.png b/img/clothes/handheld/dildo/right.png
deleted file mode 100644
index 7f0aff3a30056f6b5af1a2361de3b28abacbdfef..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/dildo/right.png and /dev/null differ
diff --git a/img/clothes/handheld/disc/right.png b/img/clothes/handheld/disc/right.png
deleted file mode 100644
index 0c16d8d00db332e864c12f7bc300996b3bb6e2a0..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/disc/right.png and /dev/null differ
diff --git a/img/clothes/handheld/dummy/right.png b/img/clothes/handheld/dummy/right.png
deleted file mode 100644
index 86d7688c94961952105cd0e4a1026003512f4d9a..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/dummy/right.png and /dev/null differ
diff --git a/img/clothes/handheld/fetish/right.png b/img/clothes/handheld/fetish/right.png
deleted file mode 100644
index 40c5b5e41d4972f4bb7537396fecd512a8f72f4d..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/fetish/right.png and /dev/null differ
diff --git a/img/clothes/handheld/figurine/right.png b/img/clothes/handheld/figurine/right.png
deleted file mode 100644
index 8b9cbeb53f12cd78cf737c4ea46517f23f907641..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/figurine/right.png and /dev/null differ
diff --git a/img/clothes/handheld/forest gem/right.png b/img/clothes/handheld/forest gem/right.png
deleted file mode 100644
index 0d5e5509ee882b4d19fcbc99c0829469dcdd293f..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/forest gem/right.png and /dev/null differ
diff --git a/img/clothes/handheld/ghostshroom/right.png b/img/clothes/handheld/ghostshroom/right.png
deleted file mode 100644
index a71926358bcd67668b321ef29b5a2cd64aa870ef..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/ghostshroom/right.png and /dev/null differ
diff --git a/img/clothes/handheld/gold brooch/right.png b/img/clothes/handheld/gold brooch/right.png
deleted file mode 100644
index fc601c1a61a463c78c0ff2cfc893ef1018b10244..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/gold brooch/right.png and /dev/null differ
diff --git a/img/clothes/handheld/gold coin/right.png b/img/clothes/handheld/gold coin/right.png
deleted file mode 100644
index 93ea39f094f9c000b68bba864ead071e2dce238c..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/gold coin/right.png and /dev/null differ
diff --git a/img/clothes/handheld/gold compass/right.png b/img/clothes/handheld/gold compass/right.png
deleted file mode 100644
index b19a1effa12555aa3a87da024b1f2ae93da1422e..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/gold compass/right.png and /dev/null differ
diff --git a/img/clothes/handheld/gold necklace/right.png b/img/clothes/handheld/gold necklace/right.png
deleted file mode 100644
index 1aa6425938365c9415e04df1824a70a25f772f39..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/gold necklace/right.png and /dev/null differ
diff --git a/img/clothes/handheld/gold ring/right.png b/img/clothes/handheld/gold ring/right.png
deleted file mode 100644
index d031ba664efe789943b594857fb46c1bed806498..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/gold ring/right.png and /dev/null differ
diff --git a/img/clothes/handheld/grenade/right.png b/img/clothes/handheld/grenade/right.png
deleted file mode 100644
index b865db5c51a09769df404d135e97a021632e0d0a..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/grenade/right.png and /dev/null differ
diff --git a/img/clothes/handheld/hairdye/right.png b/img/clothes/handheld/hairdye/right.png
deleted file mode 100644
index 7b0699b6be50b00a1beb97cc4dd071e925a8e0ff..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/hairdye/right.png and /dev/null differ
diff --git a/img/clothes/handheld/hairgel/right.png b/img/clothes/handheld/hairgel/right.png
deleted file mode 100644
index 61df3a82881a12ef0f6c468a2dd52a786b08b523..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/hairgel/right.png and /dev/null differ
diff --git a/img/clothes/handheld/hairspray/right.png b/img/clothes/handheld/hairspray/right.png
deleted file mode 100644
index 57168f44df0c75e4918ca910c59bae82f24d6059..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/hairspray/right.png and /dev/null differ
diff --git a/img/clothes/handheld/halloween/right.png b/img/clothes/handheld/halloween/right.png
deleted file mode 100644
index c88dd88db04e188965b4332027aacb3166d643fa..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/halloween/right.png and /dev/null differ
diff --git a/img/clothes/handheld/honeycomb/right.png b/img/clothes/handheld/honeycomb/right.png
deleted file mode 100644
index 16342958fae35d03a98027b33529ddfb163c482a..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/honeycomb/right.png and /dev/null differ
diff --git a/img/clothes/handheld/horn/right.png b/img/clothes/handheld/horn/right.png
deleted file mode 100644
index 9b36aa712cfbf480e1f11eb8aa37b8de106ea3c9..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/horn/right.png and /dev/null differ
diff --git a/img/clothes/handheld/hot cider/right.png b/img/clothes/handheld/hot cider/right.png
deleted file mode 100644
index c230463e8cb304a20e6b48e05153eacfb08cc6df..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/hot cider/right.png and /dev/null differ
diff --git a/img/clothes/handheld/hot cocoa/right.png b/img/clothes/handheld/hot cocoa/right.png
deleted file mode 100644
index f8350668ed451bb358c59a18beea43c005d99c52..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/hot cocoa/right.png and /dev/null differ
diff --git a/img/clothes/handheld/hourglass/right.png b/img/clothes/handheld/hourglass/right.png
deleted file mode 100644
index dd0c65f54ec1d03c3349019ddc547560a3e393e7..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/hourglass/right.png and /dev/null differ
diff --git a/img/clothes/handheld/incense/right.png b/img/clothes/handheld/incense/right.png
deleted file mode 100644
index 8bb6a7a4472a1a03992906f471739c431f8097c6..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/incense/right.png and /dev/null differ
diff --git a/img/clothes/handheld/islander arrow/right.png b/img/clothes/handheld/islander arrow/right.png
deleted file mode 100644
index 0bde5a6f9ee769b79fa232f3dd5aa81cbaceed5c..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/islander arrow/right.png and /dev/null differ
diff --git a/img/clothes/handheld/islander mask/right.png b/img/clothes/handheld/islander mask/right.png
deleted file mode 100644
index 1d66b88ddbd16cb749a21debb42b9ac878364b16..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/islander mask/right.png and /dev/null differ
diff --git a/img/clothes/handheld/ivory box/right.png b/img/clothes/handheld/ivory box/right.png
deleted file mode 100644
index c4c3bae205f77521714dd361aedd1ce681022f77..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/ivory box/right.png and /dev/null differ
diff --git a/img/clothes/handheld/ivory necklace/right.png b/img/clothes/handheld/ivory necklace/right.png
deleted file mode 100644
index 9c6b9d14ba165f8da748aebb9e6a0a35ab283dd9..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/ivory necklace/right.png and /dev/null differ
diff --git a/img/clothes/handheld/ivory statuette/right.png b/img/clothes/handheld/ivory statuette/right.png
deleted file mode 100644
index 171ec876631272f01590cf2e9f2fbd2ba91f56e5..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/ivory statuette/right.png and /dev/null differ
diff --git a/img/clothes/handheld/lemon/right.png b/img/clothes/handheld/lemon/right.png
deleted file mode 100644
index 508ff080a651073c7923a675f6f30b99d2998e1b..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/lemon/right.png and /dev/null differ
diff --git a/img/clothes/handheld/lube/right_gray.png b/img/clothes/handheld/lube/right_gray.png
deleted file mode 100644
index 43aea749000ecb8b1176d88f4f1f1d892006cb55..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/lube/right_gray.png and /dev/null differ
diff --git a/img/clothes/handheld/map/right.png b/img/clothes/handheld/map/right.png
deleted file mode 100644
index 2c5fe3a7aa5a0ad025dd9190976b8f756afced46..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/map/right.png and /dev/null differ
diff --git a/img/clothes/handheld/milk bottle/right.png b/img/clothes/handheld/milk bottle/right.png
deleted file mode 100644
index 82f3343d74dad0006fba54bf9fe3cde08b00c191..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/milk bottle/right.png and /dev/null differ
diff --git a/img/clothes/handheld/mushroom/right.png b/img/clothes/handheld/mushroom/right.png
deleted file mode 100644
index 659b4bf3991a5846439e1289cde85760ed1c0925..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/mushroom/right.png and /dev/null differ
diff --git a/img/clothes/handheld/net/right_gray.png b/img/clothes/handheld/net/right_gray.png
deleted file mode 100644
index 226ca294132c466d59b05d56fdd8c479f915b5a6..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/net/right_gray.png and /dev/null differ
diff --git a/img/clothes/handheld/notebook/right.png b/img/clothes/handheld/notebook/right.png
deleted file mode 100644
index 4208a87c088651a35619066394a410ae4e8fc295..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/notebook/right.png and /dev/null differ
diff --git a/img/clothes/handheld/orange/right.png b/img/clothes/handheld/orange/right.png
deleted file mode 100644
index ba11d0ff55245e5e5a460ba6be49b3e9602dcc3a..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/orange/right.png and /dev/null differ
diff --git a/img/clothes/handheld/paintbrush/right.png b/img/clothes/handheld/paintbrush/right.png
deleted file mode 100644
index 7b048305c2b32cced67c2542edbe12750966f73d..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/paintbrush/right.png and /dev/null differ
diff --git a/img/clothes/handheld/paintbrush/right_acc_gray.png b/img/clothes/handheld/paintbrush/right_acc_gray.png
deleted file mode 100644
index 20247c10d02172231a82a7a60a95695218f96135..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/paintbrush/right_acc_gray.png and /dev/null differ
diff --git a/img/clothes/handheld/parasite cream/right.png b/img/clothes/handheld/parasite cream/right.png
deleted file mode 100644
index 55210f4d4e2da80b3539085ceb373bb1ae4a65c8..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/parasite cream/right.png and /dev/null differ
diff --git a/img/clothes/handheld/peach/right.png b/img/clothes/handheld/peach/right.png
deleted file mode 100644
index 90dd2987637a24b88c4b4634bdb2c69e6040e219..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/peach/right.png and /dev/null differ
diff --git a/img/clothes/handheld/pear/right.png b/img/clothes/handheld/pear/right.png
deleted file mode 100644
index d22fd39312ca12a3f4c182d58fe6370904ff323b..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/pear/right.png and /dev/null differ
diff --git a/img/clothes/handheld/pill bottle/right.png b/img/clothes/handheld/pill bottle/right.png
deleted file mode 100644
index b32ebd53e378ee3711cedb42de85fb8d0f106051..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/pill bottle/right.png and /dev/null differ
diff --git a/img/clothes/handheld/pinkshroom/right.png b/img/clothes/handheld/pinkshroom/right.png
deleted file mode 100644
index 57150e9fa76820383216b1fb91c3a790f119fe48..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/pinkshroom/right.png and /dev/null differ
diff --git a/img/clothes/handheld/plum/right.png b/img/clothes/handheld/plum/right.png
deleted file mode 100644
index d8b4c50be987ac80645f61b0e5d7201c7655da18..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/plum/right.png and /dev/null differ
diff --git a/img/clothes/handheld/rag/right_gray.png b/img/clothes/handheld/rag/right_gray.png
deleted file mode 100644
index f0303f303eb91ef9a24669fab4682596d2631190..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/rag/right_gray.png and /dev/null differ
diff --git a/img/clothes/handheld/razor/right.png b/img/clothes/handheld/razor/right.png
deleted file mode 100644
index 5359c4c2c4e8d4364d755fa3838a02484704e87f..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/razor/right.png and /dev/null differ
diff --git a/img/clothes/handheld/rusted cutlass/right.png b/img/clothes/handheld/rusted cutlass/right.png
deleted file mode 100644
index 05a7ec0abd48eec88c136baa36ee2effb50c47e8..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/rusted cutlass/right.png and /dev/null differ
diff --git a/img/clothes/handheld/salve/right.png b/img/clothes/handheld/salve/right.png
deleted file mode 100644
index b96591edf4e1ef99dd6f1e0574f6ff5fbf455ac8..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/salve/right.png and /dev/null differ
diff --git a/img/clothes/handheld/semen bottle/right.png b/img/clothes/handheld/semen bottle/right.png
deleted file mode 100644
index ada91aaacca48d932522b882a571377e182801f1..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/semen bottle/right.png and /dev/null differ
diff --git a/img/clothes/handheld/silver blade/right.png b/img/clothes/handheld/silver blade/right.png
deleted file mode 100644
index 18508e880e7a2da82ab2019567ba6be5937f83c7..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/silver blade/right.png and /dev/null differ
diff --git a/img/clothes/handheld/silver brooch/right.png b/img/clothes/handheld/silver brooch/right.png
deleted file mode 100644
index 88d3e5cb8ad38900973c58b4e625dc52dcf8c5aa..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/silver brooch/right.png and /dev/null differ
diff --git a/img/clothes/handheld/silver coin/right.png b/img/clothes/handheld/silver coin/right.png
deleted file mode 100644
index 40619d27ff51028c98bf4a296a80844e3a970920..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/silver coin/right.png and /dev/null differ
diff --git a/img/clothes/handheld/silver compass/right.png b/img/clothes/handheld/silver compass/right.png
deleted file mode 100644
index eca25f151b973f592239b352ee8f81565d2001a4..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/silver compass/right.png and /dev/null differ
diff --git a/img/clothes/handheld/silver crown/right.png b/img/clothes/handheld/silver crown/right.png
deleted file mode 100644
index 67429f7f910e03295211e07dbfdd7bbdbe8b07c9..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/silver crown/right.png and /dev/null differ
diff --git a/img/clothes/handheld/silver dagger/right.png b/img/clothes/handheld/silver dagger/right.png
deleted file mode 100644
index d31d5d1c230426a86cd85d27f48360dc56e603a2..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/silver dagger/right.png and /dev/null differ
diff --git a/img/clothes/handheld/silver goblet/right.png b/img/clothes/handheld/silver goblet/right.png
deleted file mode 100644
index 9db11938fa44cf90475d9d5e8a5074d900e71557..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/silver goblet/right.png and /dev/null differ
diff --git a/img/clothes/handheld/silver mask/right.png b/img/clothes/handheld/silver mask/right.png
deleted file mode 100644
index a49969f38862d4d00b250d1b63a1442c17bd6bd6..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/silver mask/right.png and /dev/null differ
diff --git a/img/clothes/handheld/silver ring/right.png b/img/clothes/handheld/silver ring/right.png
deleted file mode 100644
index c78345986eec98bdc718e1ee7986077d4536e3cb..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/silver ring/right.png and /dev/null differ
diff --git a/img/clothes/handheld/soap/right.png b/img/clothes/handheld/soap/right.png
deleted file mode 100644
index eaacd333680c090199e10e336a8bd4674842af77..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/soap/right.png and /dev/null differ
diff --git a/img/clothes/handheld/soap/right_cover.png b/img/clothes/handheld/soap/right_cover.png
deleted file mode 100644
index bcabbe9ae1fb33dc7fdb896275351bac90103ba1..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/soap/right_cover.png and /dev/null differ
diff --git a/img/clothes/handheld/solo cup/right.png b/img/clothes/handheld/solo cup/right.png
deleted file mode 100644
index 9c59deb4e7f5c1d7e1cf31ae65ae1e0ed2102a14..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/solo cup/right.png and /dev/null differ
diff --git a/img/clothes/handheld/spray paint/right.png b/img/clothes/handheld/spray paint/right.png
deleted file mode 100644
index 6a48d3ef1fff2afb1ca0d470adf91beeb51292e7..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/spray paint/right.png and /dev/null differ
diff --git a/img/clothes/handheld/stone talisman/right.png b/img/clothes/handheld/stone talisman/right.png
deleted file mode 100644
index 91e73c5ff6687383e4813ec9816fd77931cc7f5b..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/stone talisman/right.png and /dev/null differ
diff --git a/img/clothes/handheld/strawberry/right.png b/img/clothes/handheld/strawberry/right.png
deleted file mode 100644
index 80b29253dee3c9e1e5e82c5396ccb77fc41631b2..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/strawberry/right.png and /dev/null differ
diff --git a/img/clothes/handheld/sucker/right.png b/img/clothes/handheld/sucker/right.png
deleted file mode 100644
index 16ad02b3311dc7ffc2aa6b2c5d20d1190fa262b2..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/sucker/right.png and /dev/null differ
diff --git a/img/clothes/handheld/sunscreen/right.png b/img/clothes/handheld/sunscreen/right.png
deleted file mode 100644
index 59c8f2db52ed7f075fdfd1b5c6d9d3bcf6eeba4e..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/sunscreen/right.png and /dev/null differ
diff --git a/img/clothes/handheld/sword cane/right.png b/img/clothes/handheld/sword cane/right.png
deleted file mode 100644
index ccb8a779dc1f8861693198de3b9d4f9bcde880c7..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/sword cane/right.png and /dev/null differ
diff --git a/img/clothes/handheld/tea caddy/right.png b/img/clothes/handheld/tea caddy/right.png
deleted file mode 100644
index 29a4a0b86ebf0add44d8715f9d31694d47c89f4b..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/tea caddy/right.png and /dev/null differ
diff --git a/img/clothes/handheld/toybear/right.png b/img/clothes/handheld/toybear/right.png
deleted file mode 100644
index f81588a8225f532d547f933d28b1366d549d82ba..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/toybear/right.png and /dev/null differ
diff --git a/img/clothes/handheld/toycar/right.png b/img/clothes/handheld/toycar/right.png
deleted file mode 100644
index b91212ac5ebe9d60634ae59f7a69255f8856eb90..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/toycar/right.png and /dev/null differ
diff --git a/img/clothes/handheld/toyrattle/right.png b/img/clothes/handheld/toyrattle/right.png
deleted file mode 100644
index e31ed90c85fc3978b43910dbf267b09412ceaa54..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/toyrattle/right.png and /dev/null differ
diff --git a/img/clothes/handheld/trash bag/back.png b/img/clothes/handheld/trash bag/back.png
deleted file mode 100644
index ffd8138998a9d3f4bbc3173fad3c47ec203a0adc..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/trash bag/back.png and /dev/null differ
diff --git a/img/clothes/handheld/trash bag/right.png b/img/clothes/handheld/trash bag/right.png
deleted file mode 100644
index a04fdb215cccd9e03cf5f96e730a9ce07c68d137..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/trash bag/right.png and /dev/null differ
diff --git a/img/clothes/handheld/tray/right.png b/img/clothes/handheld/tray/right.png
deleted file mode 100644
index dd8e67e8ff3181d957d7fce5bd66811ff1579f6a..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/tray/right.png and /dev/null differ
diff --git a/img/clothes/handheld/tray/right_cover.png b/img/clothes/handheld/tray/right_cover.png
deleted file mode 100644
index d0f963321e15a4d91b58985b8f066e8a351668b5..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/tray/right_cover.png and /dev/null differ
diff --git a/img/clothes/handheld/trilobite/right.png b/img/clothes/handheld/trilobite/right.png
deleted file mode 100644
index b0e30a32bb084546aa5104c6091b7922cd5c33aa..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/trilobite/right.png and /dev/null differ
diff --git a/img/clothes/handheld/truffle/right.png b/img/clothes/handheld/truffle/right.png
deleted file mode 100644
index 5feef77c5303811234ba1a2f9f1d3676feb51907..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/truffle/right.png and /dev/null differ
diff --git a/img/clothes/handheld/watch/right.png b/img/clothes/handheld/watch/right.png
deleted file mode 100644
index 683d7a7999d16cf6052c108bdeb420ad555b40f2..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/watch/right.png and /dev/null differ
diff --git a/img/clothes/handheld/watering can/right.png b/img/clothes/handheld/watering can/right.png
deleted file mode 100644
index 84fb8ba5e19ee6f53767b942db5fd3f9cdc03cb9..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/watering can/right.png and /dev/null differ
diff --git a/img/clothes/handheld/whisk/right.png b/img/clothes/handheld/whisk/right.png
deleted file mode 100644
index 97e46464052b0f33eab378b9ed11f03fed882b9f..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/whisk/right.png and /dev/null differ
diff --git a/img/clothes/handheld/witch broom/right.png b/img/clothes/handheld/witch broom/right.png
deleted file mode 100644
index 9fd3d6f025c30bca4bf35bbf41f73786f77087f7..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/witch broom/right.png and /dev/null differ
diff --git a/img/clothes/handheld/witch broom/right_acc_gray.png b/img/clothes/handheld/witch broom/right_acc_gray.png
deleted file mode 100644
index 7ec6a465b53f0a37347254fbde796df47557caa3..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/witch broom/right_acc_gray.png and /dev/null differ
diff --git a/img/clothes/handheld/witch broom/right_cover.png b/img/clothes/handheld/witch broom/right_cover.png
deleted file mode 100644
index 64052ac1841a49f37335b7238bfeda2a5cebf6a8..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/witch broom/right_cover.png and /dev/null differ
diff --git a/img/clothes/handheld/witch broom/right_cover_acc_gray.png b/img/clothes/handheld/witch broom/right_cover_acc_gray.png
deleted file mode 100644
index b2721504354c06f263afdfc29d6df81b9c0576d8..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/witch broom/right_cover_acc_gray.png and /dev/null differ
diff --git a/img/clothes/handheld/wolfshroom/right.png b/img/clothes/handheld/wolfshroom/right.png
deleted file mode 100644
index 9ff2408e7a954c0dc12bb76ca6dc03f8079b87c8..0000000000000000000000000000000000000000
Binary files a/img/clothes/handheld/wolfshroom/right.png and /dev/null differ
diff --git a/img/hair/back/fluffy half up twintail/feet.png b/img/hair/back/fluffy half up twintail/feet.png
deleted file mode 100644
index 74932f03d98146d3d83bb9eb80ac0cd146b5cbc5..0000000000000000000000000000000000000000
Binary files a/img/hair/back/fluffy half up twintail/feet.png and /dev/null differ
diff --git a/img/hair/back/goopy/feet.png b/img/hair/back/goopy/feet.png
deleted file mode 100644
index 48a4918adae3a8f93941eaceb6a20976be0e4850..0000000000000000000000000000000000000000
Binary files a/img/hair/back/goopy/feet.png and /dev/null differ
diff --git a/img/hair/back/goopy/navel.png b/img/hair/back/goopy/navel.png
deleted file mode 100644
index 584033ecf863515acb83dedb112025a72b4d3e12..0000000000000000000000000000000000000000
Binary files a/img/hair/back/goopy/navel.png and /dev/null differ
diff --git a/img/hair/back/goopy/thighs.png b/img/hair/back/goopy/thighs.png
deleted file mode 100644
index 876488449ac3f88b46862b8194b6d7a3f9bd44e2..0000000000000000000000000000000000000000
Binary files a/img/hair/back/goopy/thighs.png and /dev/null differ
diff --git a/img/hair/back/voluminous smoke/feet.png b/img/hair/back/voluminous smoke/feet.png
deleted file mode 100644
index 12ab5f5bdee785c61ac52ffeb8344a3ae875f679..0000000000000000000000000000000000000000
Binary files a/img/hair/back/voluminous smoke/feet.png and /dev/null differ
diff --git a/img/hair/back/voluminous smoke/thighs.png b/img/hair/back/voluminous smoke/thighs.png
deleted file mode 100644
index 0e7dbce75c1eb7822859a3ad76f30f07f1799653..0000000000000000000000000000000000000000
Binary files a/img/hair/back/voluminous smoke/thighs.png and /dev/null differ
diff --git a/img/hair/fringe/fluffy wave/chest.png b/img/hair/fringe/fluffy wave/chest.png
deleted file mode 100644
index 06e96255a1937125c5668babe15d58ed437fe210..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/fluffy wave/chest.png and /dev/null differ
diff --git a/img/hair/fringe/fluffy wave/feet.png b/img/hair/fringe/fluffy wave/feet.png
deleted file mode 100644
index 957643b1fc2b2d27e3a7682ee4c2f50b8dd30fcb..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/fluffy wave/feet.png and /dev/null differ
diff --git a/img/hair/fringe/fluffy wave/navel.png b/img/hair/fringe/fluffy wave/navel.png
deleted file mode 100644
index 8447b96e9e43c14f4a2e55e474c68a85320de625..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/fluffy wave/navel.png and /dev/null differ
diff --git a/img/hair/fringe/fluffy wave/short.png b/img/hair/fringe/fluffy wave/short.png
deleted file mode 100644
index e0eb01bf006a08f41c9b83198c1bcf42da09664d..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/fluffy wave/short.png and /dev/null differ
diff --git a/img/hair/fringe/fluffy wave/shoulder.png b/img/hair/fringe/fluffy wave/shoulder.png
deleted file mode 100644
index 8a3fbc20826f35473514cb205f5b2d8db2a5dd34..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/fluffy wave/shoulder.png and /dev/null differ
diff --git a/img/hair/fringe/fluffy wave/thighs.png b/img/hair/fringe/fluffy wave/thighs.png
deleted file mode 100644
index a9a648b4d2e566e3649a17ff84116fdd4e3aaeb1..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/fluffy wave/thighs.png and /dev/null differ
diff --git a/img/hair/fringe/goopy/chest.png b/img/hair/fringe/goopy/chest.png
deleted file mode 100644
index 9af409a602a5876e5b0589c167a1e75c4a6f4bef..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/goopy/chest.png and /dev/null differ
diff --git a/img/hair/fringe/goopy/feet.png b/img/hair/fringe/goopy/feet.png
deleted file mode 100644
index 463244a6c03edcae074483e6f806686710cdee1d..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/goopy/feet.png and /dev/null differ
diff --git a/img/hair/fringe/goopy/navel.png b/img/hair/fringe/goopy/navel.png
deleted file mode 100644
index 75b914ca0393d5279da172cb0852550b74c2f1ce..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/goopy/navel.png and /dev/null differ
diff --git a/img/hair/fringe/goopy/short.png b/img/hair/fringe/goopy/short.png
deleted file mode 100644
index 35566058bd11964bc23e97fa22ef7649444d68ca..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/goopy/short.png and /dev/null differ
diff --git a/img/hair/fringe/goopy/shoulder.png b/img/hair/fringe/goopy/shoulder.png
deleted file mode 100644
index 722813921900a7fc9455ff2166d792d7db8d9e42..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/goopy/shoulder.png and /dev/null differ
diff --git a/img/hair/fringe/goopy/thighs.png b/img/hair/fringe/goopy/thighs.png
deleted file mode 100644
index 69897ad8f6d195185dac576f7d2fe80c772f5f9d..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/goopy/thighs.png and /dev/null differ
diff --git a/img/hair/fringe/opened curtain/chest.png b/img/hair/fringe/opened curtain/chest.png
deleted file mode 100644
index 813d35cfa5feda1dc1eaaf42ec3e387c039379f9..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/opened curtain/chest.png and /dev/null differ
diff --git a/img/hair/fringe/opened curtain/feet.png b/img/hair/fringe/opened curtain/feet.png
deleted file mode 100644
index 1f66cad42d94429cce44019be2e693d3648d06bc..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/opened curtain/feet.png and /dev/null differ
diff --git a/img/hair/fringe/opened curtain/navel.png b/img/hair/fringe/opened curtain/navel.png
deleted file mode 100644
index c140441c11b1e3e106d7cc3bf0ac1b4cc07c21d8..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/opened curtain/navel.png and /dev/null differ
diff --git a/img/hair/fringe/opened curtain/short.png b/img/hair/fringe/opened curtain/short.png
deleted file mode 100644
index b9cef27f5d4d4cf366249222a7c956ca65482bae..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/opened curtain/short.png and /dev/null differ
diff --git a/img/hair/fringe/opened curtain/shoulder.png b/img/hair/fringe/opened curtain/shoulder.png
deleted file mode 100644
index 66da2e2b37ff631b10ae75ed589bcc624f5b06df..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/opened curtain/shoulder.png and /dev/null differ
diff --git a/img/hair/fringe/opened curtain/thighs.png b/img/hair/fringe/opened curtain/thighs.png
deleted file mode 100644
index ff60828bfe762d46cef33a967bc84ffbb0790818..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/opened curtain/thighs.png and /dev/null differ
diff --git a/img/hair/fringe/thorn and curl/chest.png b/img/hair/fringe/thorn and curl/chest.png
deleted file mode 100644
index 97d90546b3ae24a06309f50824bad66582aa2f97..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/thorn and curl/chest.png and /dev/null differ
diff --git a/img/hair/fringe/thorn and curl/feet.png b/img/hair/fringe/thorn and curl/feet.png
deleted file mode 100644
index 799fbb1bfe033a779e16e969010a52db84c79126..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/thorn and curl/feet.png and /dev/null differ
diff --git a/img/hair/fringe/thorn and curl/navel.png b/img/hair/fringe/thorn and curl/navel.png
deleted file mode 100644
index 6b508a7363517564ff63ab1021d63cfdf799f448..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/thorn and curl/navel.png and /dev/null differ
diff --git a/img/hair/fringe/thorn and curl/short.png b/img/hair/fringe/thorn and curl/short.png
deleted file mode 100644
index dc7a4837e21e9423f55db5d3eb34a8b9e622f0e7..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/thorn and curl/short.png and /dev/null differ
diff --git a/img/hair/fringe/thorn and curl/shoulder.png b/img/hair/fringe/thorn and curl/shoulder.png
deleted file mode 100644
index 4acb0f17cedd4ed9cb6de9313665fd6347e8299a..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/thorn and curl/shoulder.png and /dev/null differ
diff --git a/img/hair/fringe/thorn and curl/thighs.png b/img/hair/fringe/thorn and curl/thighs.png
deleted file mode 100644
index 2469e1fe04085b7837d574c65695d7cefd42a006..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/thorn and curl/thighs.png and /dev/null differ
diff --git a/img/hair/fringe/torn and curl/chest.png b/img/hair/fringe/torn and curl/chest.png
deleted file mode 100644
index 0f902de564c0cc627663979614bdad5736d026b0..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/torn and curl/chest.png and /dev/null differ
diff --git a/img/hair/fringe/torn and curl/feet.png b/img/hair/fringe/torn and curl/feet.png
deleted file mode 100644
index 100bacd4c07fc8f094d61f698a0d0d855355e4d6..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/torn and curl/feet.png and /dev/null differ
diff --git a/img/hair/fringe/torn and curl/navel.png b/img/hair/fringe/torn and curl/navel.png
deleted file mode 100644
index 7f2f158dbf71c0dc98d24b231e5fe63dcbdbb6ab..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/torn and curl/navel.png and /dev/null differ
diff --git a/img/hair/fringe/torn and curl/short.png b/img/hair/fringe/torn and curl/short.png
deleted file mode 100644
index cb2ab5a4b83586b587d901433bbd879a68fd01d9..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/torn and curl/short.png and /dev/null differ
diff --git a/img/hair/fringe/torn and curl/shoulder.png b/img/hair/fringe/torn and curl/shoulder.png
deleted file mode 100644
index fef1b7b79d3d99f114c5a1b58af19533fc9fbfbe..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/torn and curl/shoulder.png and /dev/null differ
diff --git a/img/hair/fringe/torn and curl/thighs.png b/img/hair/fringe/torn and curl/thighs.png
deleted file mode 100644
index f34a5f280f7980a03b3fa74a51d4cc9d7f3de6ab..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/torn and curl/thighs.png and /dev/null differ
diff --git a/img/hair/fringe/voluminous smoke/chest.png b/img/hair/fringe/voluminous smoke/chest.png
deleted file mode 100644
index e9b05fd930f94d1c6b35796a2468748f42caa652..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/voluminous smoke/chest.png and /dev/null differ
diff --git a/img/hair/fringe/voluminous smoke/feet.png b/img/hair/fringe/voluminous smoke/feet.png
deleted file mode 100644
index 75ce5da2b8d2e6172275729519f8075a26285eb3..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/voluminous smoke/feet.png and /dev/null differ
diff --git a/img/hair/fringe/voluminous smoke/navel.png b/img/hair/fringe/voluminous smoke/navel.png
deleted file mode 100644
index 7106b1b5202632fa05c586ba3214c2b4c2405a1c..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/voluminous smoke/navel.png and /dev/null differ
diff --git a/img/hair/fringe/voluminous smoke/short.png b/img/hair/fringe/voluminous smoke/short.png
deleted file mode 100644
index 4f64aea65e1bb90ecaf0124c9e4d4b301c81b0df..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/voluminous smoke/short.png and /dev/null differ
diff --git a/img/hair/fringe/voluminous smoke/shoulder.png b/img/hair/fringe/voluminous smoke/shoulder.png
deleted file mode 100644
index 5dee378e9c72660a99b74ba9ad9b8de80451dc17..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/voluminous smoke/shoulder.png and /dev/null differ
diff --git a/img/hair/fringe/voluminous smoke/thighs.png b/img/hair/fringe/voluminous smoke/thighs.png
deleted file mode 100644
index f08eab8b4004205c92fc3cd691d6dfc07bf8b97a..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/voluminous smoke/thighs.png and /dev/null differ
diff --git a/img/hair/fringe/wavy sickle/chest.png b/img/hair/fringe/wavy sickle/chest.png
deleted file mode 100644
index d3c75eb6f4f6587fece2404fb09c81f59643ae2e..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/wavy sickle/chest.png and /dev/null differ
diff --git a/img/hair/fringe/wavy sickle/feet.png b/img/hair/fringe/wavy sickle/feet.png
deleted file mode 100644
index dff080cf707a83ca1cd447ca6e32ba1b5965fcf8..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/wavy sickle/feet.png and /dev/null differ
diff --git a/img/hair/fringe/wavy sickle/navel.png b/img/hair/fringe/wavy sickle/navel.png
deleted file mode 100644
index e5ffcef953dd24acbd4f788f7ec7945398901d70..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/wavy sickle/navel.png and /dev/null differ
diff --git a/img/hair/fringe/wavy sickle/short.png b/img/hair/fringe/wavy sickle/short.png
deleted file mode 100644
index 7029292ca3a3930d06b8d632d92c301a3765950a..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/wavy sickle/short.png and /dev/null differ
diff --git a/img/hair/fringe/wavy sickle/shoulder.png b/img/hair/fringe/wavy sickle/shoulder.png
deleted file mode 100644
index 1b0bb1f618b67518b4755b1310e7254851caaf71..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/wavy sickle/shoulder.png and /dev/null differ
diff --git a/img/hair/fringe/wavy sickle/thighs.png b/img/hair/fringe/wavy sickle/thighs.png
deleted file mode 100644
index 72862e610166fbaf4c4bf6d047a869e28860476b..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/wavy sickle/thighs.png and /dev/null differ
diff --git a/img/hair/fringe/wispy/chest.png b/img/hair/fringe/wispy/chest.png
deleted file mode 100644
index cf78217ac9f4f4cfadc3f5c944f574b5479e5832..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/wispy/chest.png and /dev/null differ
diff --git a/img/hair/fringe/wispy/feet.png b/img/hair/fringe/wispy/feet.png
deleted file mode 100644
index 4af257b3902ce8408814a7d829de1fe00aafc2df..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/wispy/feet.png and /dev/null differ
diff --git a/img/hair/fringe/wispy/navel.png b/img/hair/fringe/wispy/navel.png
deleted file mode 100644
index cf78217ac9f4f4cfadc3f5c944f574b5479e5832..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/wispy/navel.png and /dev/null differ
diff --git a/img/hair/fringe/wispy/short.png b/img/hair/fringe/wispy/short.png
deleted file mode 100644
index 66030bfeff2705e2b12b9414098b386181e53673..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/wispy/short.png and /dev/null differ
diff --git a/img/hair/fringe/wispy/shoulder.png b/img/hair/fringe/wispy/shoulder.png
deleted file mode 100644
index 66030bfeff2705e2b12b9414098b386181e53673..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/wispy/shoulder.png and /dev/null differ
diff --git a/img/hair/fringe/wispy/thighs.png b/img/hair/fringe/wispy/thighs.png
deleted file mode 100644
index 4af257b3902ce8408814a7d829de1fe00aafc2df..0000000000000000000000000000000000000000
Binary files a/img/hair/fringe/wispy/thighs.png and /dev/null differ
diff --git a/img/hair/sides/fluffy half up twintail/chest.png b/img/hair/sides/fluffy half up twintail/chest.png
deleted file mode 100644
index edae9d806b2c5c74a894bcae09176b5742f1b619..0000000000000000000000000000000000000000
Binary files a/img/hair/sides/fluffy half up twintail/chest.png and /dev/null differ
diff --git a/img/hair/sides/fluffy half up twintail/feet.png b/img/hair/sides/fluffy half up twintail/feet.png
deleted file mode 100644
index 2547b5b97c5dc7d8d428fa53f0a8c076f1420881..0000000000000000000000000000000000000000
Binary files a/img/hair/sides/fluffy half up twintail/feet.png and /dev/null differ
diff --git a/img/hair/sides/fluffy half up twintail/navel.png b/img/hair/sides/fluffy half up twintail/navel.png
deleted file mode 100644
index f716ca47687e706664d03fcbb9c67855ee1c4934..0000000000000000000000000000000000000000
Binary files a/img/hair/sides/fluffy half up twintail/navel.png and /dev/null differ
diff --git a/img/hair/sides/fluffy half up twintail/short.png b/img/hair/sides/fluffy half up twintail/short.png
deleted file mode 100644
index 9e4ad1bc5eea9304c8cfe8231fcdf88aa03a799b..0000000000000000000000000000000000000000
Binary files a/img/hair/sides/fluffy half up twintail/short.png and /dev/null differ
diff --git a/img/hair/sides/fluffy half up twintail/shoulder.png b/img/hair/sides/fluffy half up twintail/shoulder.png
deleted file mode 100644
index 3dd17ee61336a8f9b632c2755cfaefaac87f11a8..0000000000000000000000000000000000000000
Binary files a/img/hair/sides/fluffy half up twintail/shoulder.png and /dev/null differ
diff --git a/img/hair/sides/fluffy half up twintail/thighs.png b/img/hair/sides/fluffy half up twintail/thighs.png
deleted file mode 100644
index 450c1f4cfa50754eb1ddc641b911235b32142913..0000000000000000000000000000000000000000
Binary files a/img/hair/sides/fluffy half up twintail/thighs.png and /dev/null differ
diff --git a/img/hair/sides/goopy/chest.png b/img/hair/sides/goopy/chest.png
deleted file mode 100644
index 348f6ccf7127777815b7cf56f7d27b35ac3fca06..0000000000000000000000000000000000000000
Binary files a/img/hair/sides/goopy/chest.png and /dev/null differ
diff --git a/img/hair/sides/goopy/feet.png b/img/hair/sides/goopy/feet.png
deleted file mode 100644
index ca6edd1d8f3938a956277b0006c32c733ffc9f67..0000000000000000000000000000000000000000
Binary files a/img/hair/sides/goopy/feet.png and /dev/null differ
diff --git a/img/hair/sides/goopy/navel.png b/img/hair/sides/goopy/navel.png
deleted file mode 100644
index 97fed2c6a840ef07278b01e5f1d6227c488449c6..0000000000000000000000000000000000000000
Binary files a/img/hair/sides/goopy/navel.png and /dev/null differ
diff --git a/img/hair/sides/goopy/short.png b/img/hair/sides/goopy/short.png
deleted file mode 100644
index 9506ec82212a46b42114392ae9757e842a4fbd5e..0000000000000000000000000000000000000000
Binary files a/img/hair/sides/goopy/short.png and /dev/null differ
diff --git a/img/hair/sides/goopy/shoulder.png b/img/hair/sides/goopy/shoulder.png
deleted file mode 100644
index 7e77d8a405c69f0a999d6fb70c72a146fac00efe..0000000000000000000000000000000000000000
Binary files a/img/hair/sides/goopy/shoulder.png and /dev/null differ
diff --git a/img/hair/sides/goopy/thighs.png b/img/hair/sides/goopy/thighs.png
deleted file mode 100644
index c6ab26e47f6cc15943f8e766744f4ff87ba9d6a0..0000000000000000000000000000000000000000
Binary files a/img/hair/sides/goopy/thighs.png and /dev/null differ
diff --git a/img/hair/sides/princess twintail/chest.png b/img/hair/sides/princess twintail/chest.png
deleted file mode 100644
index 150bee67e735f907d2d626f042f213557dee61fc..0000000000000000000000000000000000000000
Binary files a/img/hair/sides/princess twintail/chest.png and /dev/null differ
diff --git a/img/hair/sides/princess twintail/feet.png b/img/hair/sides/princess twintail/feet.png
deleted file mode 100644
index 046ac26e273e8b5dbec6208878f486e3cbad0773..0000000000000000000000000000000000000000
Binary files a/img/hair/sides/princess twintail/feet.png and /dev/null differ
diff --git a/img/hair/sides/princess twintail/navel.png b/img/hair/sides/princess twintail/navel.png
deleted file mode 100644
index 92a2249fea043836d303490a88987fdf6569099b..0000000000000000000000000000000000000000
Binary files a/img/hair/sides/princess twintail/navel.png and /dev/null differ
diff --git a/img/hair/sides/princess twintail/short.png b/img/hair/sides/princess twintail/short.png
deleted file mode 100644
index 795776b898cbdfe93a6bc6ea05dda838d0f9815d..0000000000000000000000000000000000000000
Binary files a/img/hair/sides/princess twintail/short.png and /dev/null differ
diff --git a/img/hair/sides/princess twintail/shoulder.png b/img/hair/sides/princess twintail/shoulder.png
deleted file mode 100644
index 150bee67e735f907d2d626f042f213557dee61fc..0000000000000000000000000000000000000000
Binary files a/img/hair/sides/princess twintail/shoulder.png and /dev/null differ
diff --git a/img/hair/sides/princess twintail/thighs.png b/img/hair/sides/princess twintail/thighs.png
deleted file mode 100644
index 7c3aba3f51d3cdf1628812bf2faff340362220cc..0000000000000000000000000000000000000000
Binary files a/img/hair/sides/princess twintail/thighs.png and /dev/null differ
diff --git a/img/hair/sides/thick princess twintail/chest.png b/img/hair/sides/thick princess twintail/chest.png
deleted file mode 100644
index 1435fd91c11a3ce8d941d13ed62926b6ff50c202..0000000000000000000000000000000000000000
Binary files a/img/hair/sides/thick princess twintail/chest.png and /dev/null differ
diff --git a/img/hair/sides/thick princess twintail/feet.png b/img/hair/sides/thick princess twintail/feet.png
deleted file mode 100644
index 33493ff19a969fa73ddfe48661b0801cc2982c82..0000000000000000000000000000000000000000
Binary files a/img/hair/sides/thick princess twintail/feet.png and /dev/null differ
diff --git a/img/hair/sides/thick princess twintail/navel.png b/img/hair/sides/thick princess twintail/navel.png
deleted file mode 100644
index 75afd5aafaf7ba0db6babd23f8ed6d973ac1e729..0000000000000000000000000000000000000000
Binary files a/img/hair/sides/thick princess twintail/navel.png and /dev/null differ
diff --git a/img/hair/sides/thick princess twintail/short.png b/img/hair/sides/thick princess twintail/short.png
deleted file mode 100644
index 66e60fafe8d7ad4a19a194ff9c367448a36f9dd4..0000000000000000000000000000000000000000
Binary files a/img/hair/sides/thick princess twintail/short.png and /dev/null differ
diff --git a/img/hair/sides/thick princess twintail/shoulder.png b/img/hair/sides/thick princess twintail/shoulder.png
deleted file mode 100644
index d17f866e9bab3f9da4e16e485549c5b89a1eb953..0000000000000000000000000000000000000000
Binary files a/img/hair/sides/thick princess twintail/shoulder.png and /dev/null differ
diff --git a/img/hair/sides/thick princess twintail/thighs.png b/img/hair/sides/thick princess twintail/thighs.png
deleted file mode 100644
index 9effd93f1978e0187fc35fd4bc16a013b8495b85..0000000000000000000000000000000000000000
Binary files a/img/hair/sides/thick princess twintail/thighs.png and /dev/null differ
diff --git a/img/hair/sides/voluminous smoke/chest.png b/img/hair/sides/voluminous smoke/chest.png
deleted file mode 100644
index b8f20282cdd541176383a76895ee227530b8e753..0000000000000000000000000000000000000000
Binary files a/img/hair/sides/voluminous smoke/chest.png and /dev/null differ
diff --git a/img/hair/sides/voluminous smoke/feet.png b/img/hair/sides/voluminous smoke/feet.png
deleted file mode 100644
index 864f688817707b5520a51e4707608322d277b858..0000000000000000000000000000000000000000
Binary files a/img/hair/sides/voluminous smoke/feet.png and /dev/null differ
diff --git a/img/hair/sides/voluminous smoke/navel.png b/img/hair/sides/voluminous smoke/navel.png
deleted file mode 100644
index d2e6e7e0ae422b7345fdcf6ebbd006b68c7b75fe..0000000000000000000000000000000000000000
Binary files a/img/hair/sides/voluminous smoke/navel.png and /dev/null differ
diff --git a/img/hair/sides/voluminous smoke/short.png b/img/hair/sides/voluminous smoke/short.png
deleted file mode 100644
index 2ce6e0e82eaaed9ca70dacab327402af666f73b9..0000000000000000000000000000000000000000
Binary files a/img/hair/sides/voluminous smoke/short.png and /dev/null differ
diff --git a/img/hair/sides/voluminous smoke/shoulder.png b/img/hair/sides/voluminous smoke/shoulder.png
deleted file mode 100644
index 11f790363f793d1689d126f68599fa606a23d435..0000000000000000000000000000000000000000
Binary files a/img/hair/sides/voluminous smoke/shoulder.png and /dev/null differ
diff --git a/img/hair/sides/voluminous smoke/thighs.png b/img/hair/sides/voluminous smoke/thighs.png
deleted file mode 100644
index 69abb67efe1818a198a5a712088dc7edee59496f..0000000000000000000000000000000000000000
Binary files a/img/hair/sides/voluminous smoke/thighs.png and /dev/null differ
diff --git a/img/misc/icon/clothes/broom.png b/img/misc/icon/clothes/broom.png
deleted file mode 100644
index 93d7e6df6e5432b4091af7cf3e75d701b05c321b..0000000000000000000000000000000000000000
Binary files a/img/misc/icon/clothes/broom.png and /dev/null differ
diff --git a/img/misc/icon/clothes/broom_acc.png b/img/misc/icon/clothes/broom_acc.png
deleted file mode 100644
index 017d84b20318bf6dee054038a0bb508a465bebef..0000000000000000000000000000000000000000
Binary files a/img/misc/icon/clothes/broom_acc.png and /dev/null differ
diff --git a/img/misc/icon/clothes/cane.png b/img/misc/icon/clothes/cane.png
deleted file mode 100644
index 817f070f8207071e05d5d603532203dea5763909..0000000000000000000000000000000000000000
Binary files a/img/misc/icon/clothes/cane.png and /dev/null differ
diff --git a/img/misc/icon/clothes/cane_acc.png b/img/misc/icon/clothes/cane_acc.png
deleted file mode 100644
index 2c0e2eb7b1b60cbf4ba4590deac5c4ce16574731..0000000000000000000000000000000000000000
Binary files a/img/misc/icon/clothes/cane_acc.png and /dev/null differ
diff --git a/img/misc/icon/clothes/crutch.png b/img/misc/icon/clothes/crutch.png
deleted file mode 100644
index a894e5f93752254f661244cd47b9532acee1593f..0000000000000000000000000000000000000000
Binary files a/img/misc/icon/clothes/crutch.png and /dev/null differ
diff --git a/img/misc/icon/clothes/crutch_acc.png b/img/misc/icon/clothes/crutch_acc.png
deleted file mode 100644
index 18c7e8553908142069910b341eea586fbc59e52e..0000000000000000000000000000000000000000
Binary files a/img/misc/icon/clothes/crutch_acc.png and /dev/null differ
diff --git a/img/misc/icon/game_acc_cards.gif b/img/misc/icon/game_acc_cards.gif
deleted file mode 100644
index 1e69e9da190e1804e933a62a79dc08cc57af1b52..0000000000000000000000000000000000000000
Binary files a/img/misc/icon/game_acc_cards.gif and /dev/null differ
diff --git a/img/misc/icon/game_acc_cards_0.gif b/img/misc/icon/game_acc_cards_0.gif
deleted file mode 100644
index 15f79b51d6b31cf578d8a4ace8c63660bc77226a..0000000000000000000000000000000000000000
Binary files a/img/misc/icon/game_acc_cards_0.gif and /dev/null differ
diff --git a/img/misc/icon/game_acc_cards_1.gif b/img/misc/icon/game_acc_cards_1.gif
deleted file mode 100644
index 987a6a8651c215b639c828c1dc540fadcd1c108c..0000000000000000000000000000000000000000
Binary files a/img/misc/icon/game_acc_cards_1.gif and /dev/null differ
diff --git a/img/misc/icon/game_acc_cards_2.gif b/img/misc/icon/game_acc_cards_2.gif
deleted file mode 100644
index 244b2e923034daa574f03bc78e23cf9c2fc98d04..0000000000000000000000000000000000000000
Binary files a/img/misc/icon/game_acc_cards_2.gif and /dev/null differ
diff --git a/img/misc/icon/game_cards.gif b/img/misc/icon/game_cards.gif
deleted file mode 100644
index 4b05a05de9b3bc8d1044b126a3b9e5854c8e8498..0000000000000000000000000000000000000000
Binary files a/img/misc/icon/game_cards.gif and /dev/null differ
diff --git a/img/misc/icon/game_cards_bet.gif b/img/misc/icon/game_cards_bet.gif
deleted file mode 100644
index aac931f8ce94b8285a6a413e6a1ac43a5061b941..0000000000000000000000000000000000000000
Binary files a/img/misc/icon/game_cards_bet.gif and /dev/null differ
diff --git a/img/misc/icon/game_dice.png b/img/misc/icon/game_dice.png
deleted file mode 100644
index 230a56da1cdb608544c9e40d7a2b4720e27549f2..0000000000000000000000000000000000000000
Binary files a/img/misc/icon/game_dice.png and /dev/null differ
diff --git a/img/misc/icon/icon.twee-config.yml b/img/misc/icon/icon.twee-config.yml
index 2cf3f7d808e35b05f743d8cba82d4a2f00a0c7a8..ca49e2dfd44f6ff20d504bc2d7b98f2e1fce6748 100644
--- a/img/misc/icon/icon.twee-config.yml
+++ b/img/misc/icon/icon.twee-config.yml
@@ -195,81 +195,7 @@ sugarcube-2:
       description: |-
         Prints an icon relative to birdTower directory
 
-        ![birdicon](./birdTower/belly_hawk.png)
-        ![birdicon](./birdTower/bracelet.png)
-        ![birdicon](./birdTower/child_hawk.png)
-        ![birdicon](./birdTower/child_hawks.png)
-        ![birdicon](./birdTower/cooking_pot.png)
-        ![birdicon](./birdTower/cooking_pot_boil.gif)
-        ![birdicon](./birdTower/drying_rack_enclosed.png)
-        ![birdicon](./birdTower/drying_rack_makeshift.png)
-        ![birdicon](./birdTower/fabric.png)
-        ![birdicon](./birdTower/feather.png)
-        ![birdicon](./birdTower/firepit_bonfire_4.gif)
-        ![birdicon](./birdTower/firepit_makeshift_2.gif)
-        ![birdicon](./birdTower/firepit_robust_2.gif)
-        ![birdicon](./birdTower/flight_land.png)
-        ![birdicon](./birdTower/hawk_egg_one.png)
-        ![birdicon](./birdTower/hawk_egg_three.png)
-        ![birdicon](./birdTower/hawk_egg_two.png)
-        ![birdicon](./birdTower/junk.png)
-        ![birdicon](./birdTower/kiss_greathawk_beast.png)
-        ![birdicon](./birdTower/kiss_greathawk_monster.png)
-        ![birdicon](./birdTower/leaf.png)
-        ![birdicon](./birdTower/lurker_dead.png)
-        ![birdicon](./birdTower/lurker_leather.png)
-        ![birdicon](./birdTower/lurker_netted.png)
-        ![birdicon](./birdTower/mirror_tower.png)
-        ![birdicon](./birdTower/mirror_tower_decor.png)
-        ![birdicon](./birdTower/necklace.png)
-        ![birdicon](./birdTower/nest_cushioned.png)
-        ![birdicon](./birdTower/nest_cushioned_eggs.png)
-        ![birdicon](./birdTower/nest_luxurious.png)
-        ![birdicon](./birdTower/nest_luxurious_decor.png)
-        ![birdicon](./birdTower/nest_luxurious_eggs.png)
-        ![birdicon](./birdTower/nest_padded.png)
-        ![birdicon](./birdTower/nest_padded_eggs.png)
-        ![birdicon](./birdTower/nest_wood.png)
-        ![birdicon](./birdTower/nest_wood_eggs.png)
-        ![birdicon](./birdTower/ornate_telescope.png)
-        ![birdicon](./birdTower/perch_blood.png)
-        ![birdicon](./birdTower/perch_blood_decor.png)
-        ![birdicon](./birdTower/perch_dawn.png)
-        ![birdicon](./birdTower/perch_dawn_decor.png)
-        ![birdicon](./birdTower/perch_day.png)
-        ![birdicon](./birdTower/perch_day_decor.png)
-        ![birdicon](./birdTower/perch_dusk.png)
-        ![birdicon](./birdTower/perch_dusk_decor.png)
-        ![birdicon](./birdTower/perch_get_up.png)
-        ![birdicon](./birdTower/perch_night.png)
-        ![birdicon](./birdTower/perch_night_decor.png)
-        ![birdicon](./birdTower/perch_rain.png)
-        ![birdicon](./birdTower/perch_rain_decor.png)
-        ![birdicon](./birdTower/perch_snow.png)
-        ![birdicon](./birdTower/perch_snow_decor.png)
-        ![birdicon](./birdTower/prepare_hunt_dawn.gif)
-        ![birdicon](./birdTower/prepare_hunt_day.gif)
-        ![birdicon](./birdTower/prepare_hunt_dusk.gif)
-        ![birdicon](./birdTower/prepare_hunt_night.gif)
-        ![birdicon](./birdTower/rain_pool.gif)
-        ![birdicon](./birdTower/rain_pool_heated.gif)
-        ![birdicon](./birdTower/ring.png)
-        ![birdicon](./birdTower/silver_bar.gif)
-        ![birdicon](./birdTower/snare_bait.png)
-        ![birdicon](./birdTower/snare_lurker.gif)
-        ![birdicon](./birdTower/snare_no_bait.png)
-        ![birdicon](./birdTower/socialise_question.png)
-        ![birdicon](./birdTower/stick.png)
-        ![birdicon](./birdTower/tarp.png)
-        ![birdicon](./birdTower/toolbox.png)
-        ![birdicon](./birdTower/tower.png)
-        ![birdicon](./birdTower/trap_door.png)
-        ![birdicon](./birdTower/trap_door_locked.png)
-        ![birdicon](./birdTower/wallet.png)
-        ![birdicon](./birdTower/wardrobe_tower.png)
-        ![birdicon](./birdTower/wardrobe_tower_decor.png)
-        ![birdicon](./birdTower/watch.png)
-        ![birdicon](./birdTower/wood.png)
+        ![birdicon](./birdTower/nest.png)
 
         `<<birdIcon iconFileName>>`
         - **iconFileName**: `string` - filename relative to birdTower directory (including extension)
@@ -433,7 +359,7 @@ sugarcube-2:
         - **iconName** _optional_: `string` - type
           - `"contacts"` | `"dyes"` | `"mascara"` | `"eyeshadow"` | `"sunscreen"` | `default`
       parameters:
-        - '|+ "contacts"|"dyes"|"mascara"|"eyeshadow"|"sunscreen"'
+        - '|+ "contacts"|"dyes"|"mascara"|"eyeshadow"'
       tags: ["img"]
     couchicon:
       description: "![couchicon](./couch_relax.png)"
@@ -497,6 +423,9 @@ sugarcube-2:
       parameters:
         - '|+ "domus"|"danube"|"open"|"orphanage"|"doren"'
       tags: ["img"]
+    dorenflaticon:
+      description: "![dorenflaticon](./dorenflat.png)"
+      tags: ["img"]
     dressasyouwereicon:
       description: "![dressasyouwereicon](./clothes/serafuku.png)"
       tags: ["img"]
@@ -596,9 +525,6 @@ sugarcube-2:
 
         ![default](./tank_medium.gif)
       tags: ["img"]
-    flatsicon:
-      description: "![flatsicon](./flats.png)"
-      tags: ["img"]
     foodicon:
       description: |-
         Prints a food icon
@@ -667,16 +593,6 @@ sugarcube-2:
       parameters:
         - text
       tags: ["img"]
-    gameicon:
-      description: |-
-        Prints a game icon
-
-        `<<gameicon iconName?>>`
-        - **iconName** _optional_: `string` - object
-          - `"dice"` | `"cards"` | `default`
-      parameters:
-        - '|+ "dice"|"cards"'
-      tags: ["img"]
     gardenicon:
       description: |-
         Prints a garden icon
@@ -1046,14 +962,10 @@ sugarcube-2:
         ![bed](./prison_bed.png)
         ![canteen](./prison_canteen.png)
         ![cell](./prison_cell.png)
-        ![chest](./prison_chest.png)
         ![door](./prison_door.png)
         ![laundry](./prison_laundry.png)
-        ![laundry](./prison_laundry_work.png)
         ![lift](./prison_lift.png)
         ![medical](./prison_medical.png)
-        ![medical_door](./prison_medical_door.png)
-        ![medical_work](./prison_medical_work.png)
         ![mirror](./prison_mirror.png)
         ![plaque](./prison_plaque.png)
         ![run](./prison_run.png)
@@ -1061,9 +973,9 @@ sugarcube-2:
 
         `<<prisonicon iconName>>`
         - **iconName**: `string` - filename (not including `prison_` namespace or `.png` extension)
-          - `"bed"` | `"canteen"` | `"cell"` | `"chest"` | `"door"` | `"laundry"` | `"laundry_work"` | `"lift"` | `"medical"` | `"medical_door"` | `"medical_work"` | `"mirror"` | `"plaque"` | `"run"` |`"wardrobe"`
+          - `"bed"` | `"canteen"` | `"cell"` | `"door"` | `"laundry"` | `"lift"` | `"medical"` | `"mirror"` | `"plaque"` | `"run"` |`"wardrobe"`
       parameters:
-        - '"bed"|"canteen"|"cell"|"chest"|"door"|"laundry"|"laundry_work"|"lift"|"medical"|"medical_door"|"medical_work"|"mirror"|"plaque"|"run"|"wardrobe"'
+        - '"bed"|"canteen"|"cell"|"door"|"laundry"|"lift"|"medical"|"mirror"|"plaque"|"run"|"wardrobe"'
       tags: ["img"]
     procedureicon:
       description: |-
@@ -1296,14 +1208,13 @@ sugarcube-2:
         ![party](./solocup.png)
         ![volleyball](./volleyball.png)
         ![cinema](./ticket.png)
-        ![ask](./birdTower/socialise_question.png)
         ![default](./socialise.png)
 
         `<<socialiseicon iconName?>>`
         - **iconName** _optional_: `string` - interest point
-          - `"angry"` | `"party"` | `"volleyball"` | `"cinema"` | `"ask"` | `default`
+          - `"angry"` | `"party"` | `"volleyball"` | `"cinema"` | `default`
       parameters:
-        - '|+ "angry"|"party"|"volleyball"|"cinema"|"ask"'
+        - '|+ "angry"|"party"|"volleyball"|"cinema"'
       tags: ["img"]
     soupkitchenicon:
       description: "![soupkitchenicon](./soupkitchen.png)"
@@ -1334,7 +1245,7 @@ sugarcube-2:
       description: |-
         Prints a stall icon
 
-        ![balloon](./stall_balloon.png)
+        ![balloon](./balloon.png)
         ![open](./stall_open.png)
         ![default](./stall.png)
 
diff --git a/img/misc/icon/lust.png b/img/misc/icon/lust.png
deleted file mode 100644
index c9eafa3c3d3ac0b4c89adbaf72113bee11a98cc1..0000000000000000000000000000000000000000
Binary files a/img/misc/icon/lust.png and /dev/null differ
diff --git a/img/misc/icon/prison_chest.png b/img/misc/icon/prison_chest.png
deleted file mode 100644
index b4426c75477ecd2ca83963f3b1d195bd833287dd..0000000000000000000000000000000000000000
Binary files a/img/misc/icon/prison_chest.png and /dev/null differ
diff --git a/img/misc/icon/prison_laundry_work.png b/img/misc/icon/prison_laundry_work.png
deleted file mode 100644
index 096e2e4bb5e1dba449c1ae3b6c4ef6ff5df4f3cb..0000000000000000000000000000000000000000
Binary files a/img/misc/icon/prison_laundry_work.png and /dev/null differ
diff --git a/img/misc/icon/prison_medical_door.png b/img/misc/icon/prison_medical_door.png
deleted file mode 100644
index 53dbbc5f93ee7dfdd92adf55e9052ff82c10fcc3..0000000000000000000000000000000000000000
Binary files a/img/misc/icon/prison_medical_door.png and /dev/null differ
diff --git a/img/misc/icon/prison_medical_work.png b/img/misc/icon/prison_medical_work.png
deleted file mode 100644
index 30baf642a22a41464f3e2d111db935f01a5ae39f..0000000000000000000000000000000000000000
Binary files a/img/misc/icon/prison_medical_work.png and /dev/null differ
diff --git a/img/misc/locations/chalets/base.png b/img/misc/locations/chalets/base.png
deleted file mode 100644
index e3d90ee8040e369f5fdb7d57ae923de4e0bcb6d9..0000000000000000000000000000000000000000
Binary files a/img/misc/locations/chalets/base.png and /dev/null differ
diff --git a/img/misc/locations/chalets/snow.png b/img/misc/locations/chalets/snow.png
deleted file mode 100644
index 4945d4ca51c00affc0b1035fd3d8b27824e27d97..0000000000000000000000000000000000000000
Binary files a/img/misc/locations/chalets/snow.png and /dev/null differ
diff --git a/img/misc/locations/chalets/water.png b/img/misc/locations/chalets/water.png
deleted file mode 100644
index 8f9a146888193b690e1b54b12a32b4605ad20f29..0000000000000000000000000000000000000000
Binary files a/img/misc/locations/chalets/water.png and /dev/null differ
diff --git a/img/misc/locations/coastal_path/base.png b/img/misc/locations/coastal_path/base.png
deleted file mode 100644
index 0593e5352f8d7f2413a9a39e3b8b836658a4e65a..0000000000000000000000000000000000000000
Binary files a/img/misc/locations/coastal_path/base.png and /dev/null differ
diff --git a/img/misc/locations/coastal_path/bunny.png b/img/misc/locations/coastal_path/bunny.png
deleted file mode 100644
index fdadfdf40f6a0cf4960353d050f3b57b69550548..0000000000000000000000000000000000000000
Binary files a/img/misc/locations/coastal_path/bunny.png and /dev/null differ
diff --git a/img/misc/locations/coastal_path/flower.png b/img/misc/locations/coastal_path/flower.png
deleted file mode 100644
index 28c6368721d34e66e6b7e4afe2165b851378daaf..0000000000000000000000000000000000000000
Binary files a/img/misc/locations/coastal_path/flower.png and /dev/null differ
diff --git a/img/misc/locations/coastal_path/snow.png b/img/misc/locations/coastal_path/snow.png
deleted file mode 100644
index 00525ff8386fa7a35f7c1faccfbf803bac1d5d4b..0000000000000000000000000000000000000000
Binary files a/img/misc/locations/coastal_path/snow.png and /dev/null differ
diff --git a/img/misc/locations/coastal_path/water.png b/img/misc/locations/coastal_path/water.png
deleted file mode 100644
index e00a172dcc5ec8b72ea8f23754ed0e8685bc5772..0000000000000000000000000000000000000000
Binary files a/img/misc/locations/coastal_path/water.png and /dev/null differ
diff --git a/img/misc/locations/town_hall/base.png b/img/misc/locations/town_hall/base.png
deleted file mode 100644
index 3dcd3abd562f08724516db5cf0ab255fb50dfd25..0000000000000000000000000000000000000000
Binary files a/img/misc/locations/town_hall/base.png and /dev/null differ
diff --git a/img/misc/locations/town_hall/emissive.png b/img/misc/locations/town_hall/emissive.png
deleted file mode 100644
index 34a6521a9224c7f459a4590004d17b7956f7e6be..0000000000000000000000000000000000000000
Binary files a/img/misc/locations/town_hall/emissive.png and /dev/null differ
diff --git a/img/misc/locations/town_hall/snow.png b/img/misc/locations/town_hall/snow.png
deleted file mode 100644
index 711d607a564bdf30278f9101e1c1f94862ae3c9c..0000000000000000000000000000000000000000
Binary files a/img/misc/locations/town_hall/snow.png and /dev/null differ
diff --git a/img/misc/locations/town_hall/trees.png b/img/misc/locations/town_hall/trees.png
deleted file mode 100644
index 4959c2d3fa33ea2f03ac893462cf262189439eb0..0000000000000000000000000000000000000000
Binary files a/img/misc/locations/town_hall/trees.png and /dev/null differ
diff --git a/img/misc/locations/town_hall/trees_winter.png b/img/misc/locations/town_hall/trees_winter.png
deleted file mode 100644
index cb2036d95d532ef31e56b7f69361423750b8a3c3..0000000000000000000000000000000000000000
Binary files a/img/misc/locations/town_hall/trees_winter.png and /dev/null differ
diff --git a/modules/01-compatibility.js b/modules/01-compatibility.js
index bb37fe844b69f24c562011a5ad5143fd68f69778..03d731086f9c5ed020de12289e22bc1000b42a3c 100644
--- a/modules/01-compatibility.js
+++ b/modules/01-compatibility.js
@@ -1,3 +1,4 @@
+/* eslint-disable no-eval */
 /* Use the most compatible code possible for this script, it should serve as the first script to load on the page, so should have total precedence. */
 (() => {
 	"use strict";
@@ -5,18 +6,11 @@
 	let hasErrored = false;
 	let resp = "";
 	try {
-		// eslint-disable-next-line no-eval
 		eval("const tdTest = { 'name': 'Bob', 'age': 5 };const tfTest2 = { 'hair': 'blonde', ...tdTest };");
+		eval("let foo = {}; foo?.bar; foo ??= []");
 	} catch (e) {
 		hasErrored = true;
-		resp += "Destructuring is not supported for your browser.\n";
-	}
-	try {
-		// eslint-disable-next-line no-eval
-		eval("const foo = {}; foo?.bar;");
-	} catch (e) {
-		hasErrored = true;
-		resp += "This browser does not meet the minimum requirements for DoL (ES2020).\n";
+		resp += "This browser does not meet the minimum requirements for DoL (ES2021).\n";
 	}
 	if (hasErrored) {
 		/* Calculate how the user should upgrade. */
@@ -25,7 +19,7 @@
 		const chromeTest = segments.findIndex(s => s.startsWith("Chrome"));
 		const firefoxTest = segments.findIndex(s => s.startsWith("Firefox"));
 		if (androidTest >= 0) {
-			resp += "\nUpdate your Android WebView System app. Requires at least version 80. \nCurrent version: " + segments[androidTest].slice(8);
+			resp += "\nUpdate your Android WebView System app. Requires at least version 89. \nCurrent version: " + segments[androidTest].slice(8);
 		} else if (chromeTest >= 0) {
 			resp += "\nUpdate your Chrome browser.\nVersion: " + segments[chromeTest].slice(7);
 		} else if (firefoxTest >= 0) {
diff --git a/package-lock.json b/package-lock.json
index 73e27942e70e985cb3eb76e3190ad42bf4277e55..c7d7f62e6bf351da34a7a73f30997bffbf54e639 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -14,7 +14,7 @@
         "eslint-config-prettier": "^8.10.0",
         "eslint-config-prettier-standard": "^4.0.1",
         "eslint-config-standard": "^17.1.0",
-        "eslint-plugin-es-x": "^7.6.0",
+        "eslint-plugin-es-x": "^7.8.0",
         "eslint-plugin-import": "^2.29.1",
         "eslint-plugin-jsdoc": "^39.9.1",
         "eslint-plugin-n": "^15.7.0",
@@ -187,9 +187,9 @@
       }
     },
     "node_modules/@eslint-community/regexpp": {
-      "version": "4.10.0",
-      "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz",
-      "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==",
+      "version": "4.11.0",
+      "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz",
+      "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==",
       "dev": true,
       "engines": {
         "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
@@ -1476,9 +1476,9 @@
       }
     },
     "node_modules/eslint-compat-utils": {
-      "version": "0.5.0",
-      "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.0.tgz",
-      "integrity": "sha512-dc6Y8tzEcSYZMHa+CMPLi/hyo1FzNeonbhJL7Ol0ccuKQkwopJcJBA9YL/xmMTLU1eKigXo9vj9nALElWYSowg==",
+      "version": "0.5.1",
+      "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz",
+      "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==",
       "dev": true,
       "dependencies": {
         "semver": "^7.5.4"
@@ -1609,21 +1609,22 @@
       }
     },
     "node_modules/eslint-plugin-es-x": {
-      "version": "7.6.0",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.6.0.tgz",
-      "integrity": "sha512-I0AmeNgevgaTR7y2lrVCJmGYF0rjoznpDvqV/kIkZSZbZ8Rw3eu4cGlvBBULScfkSOCzqKbff5LR4CNrV7mZHA==",
+      "version": "7.8.0",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.8.0.tgz",
+      "integrity": "sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==",
       "dev": true,
+      "funding": [
+        "https://github.com/sponsors/ota-meshi",
+        "https://opencollective.com/eslint"
+      ],
       "dependencies": {
         "@eslint-community/eslint-utils": "^4.1.2",
-        "@eslint-community/regexpp": "^4.6.0",
-        "eslint-compat-utils": "^0.5.0"
+        "@eslint-community/regexpp": "^4.11.0",
+        "eslint-compat-utils": "^0.5.1"
       },
       "engines": {
         "node": "^14.18.0 || >=16.0.0"
       },
-      "funding": {
-        "url": "https://github.com/sponsors/ota-meshi"
-      },
       "peerDependencies": {
         "eslint": ">=8"
       }
diff --git a/package.json b/package.json
index 728c2d05d00483b187eb09854f1b75ddfbe7a5f1..acd9d856c54dd4571da63f46f30ac8053aeca006 100644
--- a/package.json
+++ b/package.json
@@ -15,7 +15,7 @@
     "eslint-config-prettier": "^8.10.0",
     "eslint-config-prettier-standard": "^4.0.1",
     "eslint-config-standard": "^17.1.0",
-    "eslint-plugin-es-x": "^7.6.0",
+    "eslint-plugin-es-x": "^8.0.0",
     "eslint-plugin-import": "^2.29.1",
     "eslint-plugin-jsdoc": "^39.9.1",
     "eslint-plugin-n": "^15.7.0",
diff --git a/t3lt.twee-config.yml b/t3lt.twee-config.yml
index d9af1b6eaf3a2f83846f3fa7ad6d987bb718358a..c2bb833bbab42f6277720955fcb5522736147f81 100644
--- a/t3lt.twee-config.yml
+++ b/t3lt.twee-config.yml
@@ -4405,8 +4405,6 @@ sugarcube-2:
       name: faceundress
     facewear:
       name: facewear
-    fadeText:
-      name: fadeText
     fallenangel:
       description: |-
         Prints `| Fallen Angel`
@@ -5760,8 +5758,6 @@ sugarcube-2:
     generatep6:
       name: generatep6
       tags: ["unused"]
-    generatePaperShopStock:
-      name: generatePaperShopStock
     generatepenisremark:
       name: generatepenisremark
     generatepig1:
@@ -7208,14 +7204,11 @@ sugarcube-2:
       description: |-
         Prints colour of `$hairfringecolour` or `two-toned`
     hairgelApply:
-      description: |-
-        Applies hairgel to the player, if their hands are not bound. Equips the handheld "hairgel" prop.
+      name: hairgelApply
     hairgelDesc:
-      description: |-
-        Replaces the contents of `#hairDesc` to reflect the current hairgel state
+      name: hairgelDesc
     hairgelLinks:
-      description: |-
-        Prints the links used to apply hairgel
+      name: hairgelLinks
     hairmapcolourtext:
       description: |-
         Prints colour corresponding to `setup.colours.hair_map`
@@ -10762,8 +10755,6 @@ sugarcube-2:
       name: pantsdownscene
     pantsdowntime:
       name: pantsdowntime
-    paperCatalogue:
-      name: paperCatalogue
     parasite:
       name: parasite
     parasiteinit:
@@ -13248,8 +13239,6 @@ sugarcube-2:
       name: storeload
     storeloaditem:
       name: storeloaditem
-    storeNPC:
-      name: storeNPC
     storeon:
       name: storeon
     storeonface:
@@ -13565,15 +13554,11 @@ sugarcube-2:
       name: subsectionSettingsTabButton
     suffocatepass:
       name: suffocatepass
-    sunscreenApply:
-      description: |-
-        Applies sunscreen to the player, if their hands are not bound. Equips the handheld "sunscreen" prop.
-    sunscreenDesc:
-      description: |-
-        Replaces the contents of `#sunscreenDescription` to reflect the current sunscreen state
     sunscreenLinks:
       description: |-
         Prints the links used to apply and remove sunscreen
+
+        Replaces the contents of `#sunscreenLinks` to reflect the current sunscreen state
     suspicion:
       description: |-
         Adds suspicion to pc's state
@@ -14909,11 +14894,10 @@ sugarcube-2:
 
         Props can be cleared earlier in a scene via `<<handheldon>>` or `<<clotheson>>` and are removed in `<<endevent>>`
 
-        `<<wearProp prop colour?>>`
+        `<<wearProp prop>>`
         - **prop**: `string` - prop to equip, using the variable of the handheld item
-        - **colour**: `string` - colour of handheld prop
       parameters:
-        - text |+ "custom"|text
+        - text
     weather_select:
       name: weather_select
     weatherdisplay: