diff --git a/src/art/vector/VectorArtJS.js b/src/art/vector/VectorArtJS.js
index 8d2c8651648754dcef4cb0c816f67a70c63de331..de18789e8978bd797b471bd1629fddeea3f49879 100644
--- a/src/art/vector/VectorArtJS.js
+++ b/src/art/vector/VectorArtJS.js
@@ -70,6 +70,7 @@ window.VectorArt = (function() {
 		/* prepare HTML color codes for slave display */
 		/* note: latex clothing is mostly emulated by rubber color for skin (and shoes) */
 		ArtVectorColor(slave);
+		/* TODO: consistently use American "color" instead of "colour" for all identifiers */
 
 		/* displayClass is the style class for this display */
 		if (T.art_display_id > 0)
@@ -106,7 +107,7 @@ window.VectorArt = (function() {
 				right: 0;\
 			}\
 			.${displayClass} .white{ fill:#FFFFFF; }\
-			.${displayClass} .skin{ fill:${T.skinColor}; }\
+			.${displayClass} .skin{ fill:${T.skinColour}; }\
 			.${displayClass} .head{ ${T.headSkinStyle}; }\
 			.${displayClass} .torso{ ${T.torsoSkinStyle}; }\
 			.${displayClass} .boob{ ${T.boobSkinStyle}; }\
@@ -116,16 +117,16 @@ window.VectorArt = (function() {
 			.${displayClass} .areola{ fill:${T.areolaStyle}; }\
 			.${displayClass} .bellybutton{ fill:${T.bellybuttonStyle}; }\
 			.${displayClass} .labia{ fill:${T.labiaStyle}; }\
-			.${displayClass} .hair{ fill:${T.hairColor}; }\
-			.${displayClass} .pubic_hair{ fill:${T.pubicHairColor}; }\
-			.${displayClass} .underarm_hair{ fill:${T.underarmHairColor}; }\
-			.${displayClass} .eyebrow_hair{ fill:${T.eyebrowHairColor}; }\
-			.${displayClass} .shoe{ fill:${T.shoeColor}; }\
-			.${displayClass} .shoe_shadow{ fill:${T.shoeShadowColor}; }\
+			.${displayClass} .hair{ fill:${T.hairColour}; }\
+			.${displayClass} .pubic_hair{ fill:${T.pubicHairColour}; }\
+			.${displayClass} .underarm_hair{ fill:${T.underarmHairColour}; }\
+			.${displayClass} .eyebrow_hair{ fill:${T.eyebrowHairColour}; }\
+			.${displayClass} .shoe{ fill:${T.shoeColour}; }\
+			.${displayClass} .shoe_shadow{ fill:${T.shoeShadowColour}; }\
 			.${displayClass} .smart_piercing{ fill:#4DB748; }\
 			.${displayClass} .steel_piercing{ fill:#787878; }\
 			.${displayClass} .steel_chastity{ fill:#BABABA; }\
-			.${displayClass} .outfit_base{ fill:${T.outfitBaseColor}; }\
+			.${displayClass} .outfit_base{ fill:${T.outfitBaseColour}; }\
 			.${displayClass} .gag{ fill:#BF2126; }\
 			.${displayClass} .shadow{ fill:#010101; }\
 			.${displayClass} .glasses{ fill:${T.glassesColor}; }\
@@ -1046,11 +1047,11 @@ window.VectorArt = (function() {
 	}
 
 	function ArtVectorColor() {
-		let outfitBaseColor;
+		let outfitBaseColour;
 
 		/*
 			WARNING: Some of these temporary variables are used in wardrobeUse.tw or salon.tw
-			Known examples are _outfitBaseColor, _glassesColor, and _shoeColor
+			Known examples are _outfitBaseColour, _glassesColor, and _shoeColour
 		*/
 		setOutfitColor();
 		setSkinColor();
@@ -1060,9 +1061,9 @@ window.VectorArt = (function() {
 		function setOutfitColor() {
 			/* TODO: rewrite all textual descriptions not to explicitly mention the latex being of black color. */
 			if (wearingLatex === true || slave.clothes === "a cybersuit")
-				outfitBaseColor = slave.clothingBaseColor || "#515351"; /* use custom color, or use default latex color */
+				outfitBaseColour = slave.clothingBaseColor || "#515351"; /* use custom color, or use default latex color */
 			else if (slave.clothes === "a comfortable bodysuit")
-				outfitBaseColor = slave.clothingBaseColor || "#464646"; /* use custom color, or use default bodysuit color */
+				outfitBaseColour = slave.clothingBaseColor || "#464646"; /* use custom color, or use default bodysuit color */
 
 			/* head addons */
 			if (slave.collar === "porcelain mask")
@@ -1071,17 +1072,17 @@ window.VectorArt = (function() {
 				T.glassesColor = slave.glassesColor || "#010101"; /* use custom color or default */
 
 			T.eyeColor = extractColor(slave.eyeColor, 1);
-			T.outfitBaseColor = outfitBaseColor;
+			T.outfitBaseColour = outfitBaseColour;
 		}
 
 		function setSkinColor() {
-			const colorSlave = skinColorCatcher(slave);
+			const colorSlave = skinColourCatcher(slave);
 
 			/* setting default values */
 			T.areolaStyle = colorSlave.areolaColor;
 			T.bellybuttonStyle = colorSlave.areolaColor;
 			T.labiaStyle = colorSlave.labiaColor;
-			T.skinColor = colorSlave.skinColor;
+			T.skinColour = colorSlave.skinColour;
 			/* todo: introduce fleshStyle */
 			/* these need to be declared so they can be set conditionally */
 			T.headSkinStyle = undefined;
@@ -1094,37 +1095,37 @@ window.VectorArt = (function() {
 			/* BEGIN SKIN COLOR OVERRIDES FOR LATEX CLOTHING EMULATION */
 			if (slave.clothes === "a Fuckdoll suit") {
 				/* slave is a fuckdoll - display all skin as if it was black rubber */
-				T.skinColor = outfitBaseColor;
+				T.skinColour = outfitBaseColour;
 				T.areolaStyle = "fill:rgba(81,83,81,1);";
 				T.labiaStyle = T.areolaStyle;
 				T.bellybuttonStyle = T.areolaStyle;
 			} else if (slave.clothes === "restrictive latex") { /* slave wears restrictive latex - display most skin as if it was rubber */
 				/* nice latex does not cover any privates. */
-				T.boobSkinStyle = "fill:"+T.skinColor+";";
-				T.penisSkinStyle = "fill:"+T.skinColor+";";
-				T.scrotumSkinStyle = "fill:"+T.skinColor+";";
-				T.torsoSkinStyle = "fill:"+T.skinColor+";";
+				T.boobSkinStyle = "fill:"+T.skinColour+";";
+				T.penisSkinStyle = "fill:"+T.skinColour+";";
+				T.scrotumSkinStyle = "fill:"+T.skinColour+";";
+				T.torsoSkinStyle = "fill:"+T.skinColour+";";
 				/* rest of body is covered in latex */
-				T.skinColor = outfitBaseColor;
-				T.bellybuttonStyle = outfitBaseColor;
+				T.skinColour = outfitBaseColour;
+				T.bellybuttonStyle = outfitBaseColour;
 			} else if (slave.clothes === "a latex catsuit") {
 				/* nice latex does not cover head. */
-				T.headSkinStyle = "fill:"+T.skinColor+";";
+				T.headSkinStyle = "fill:"+T.skinColour+";";
 				/* rest of body is covered in latex */
-				T.skinColor = outfitBaseColor;
+				T.skinColour = outfitBaseColour;
 				/* catsuit covers areolae and crotch, too */
-				T.bellybuttonStyle = outfitBaseColor;
+				T.bellybuttonStyle = outfitBaseColour;
 			} else if (slave.clothes === "a cybersuit") {
 				/* rest of body is covered in latex */
-				T.skinColor = outfitBaseColor;
-				T.bellybuttonStyle = outfitBaseColor;
+				T.skinColour = outfitBaseColour;
+				T.bellybuttonStyle = outfitBaseColour;
 			} else if (slave.clothes === "a comfortable bodysuit") {
 				/* nice bodysuit does not cover head. */
-				T.headSkinStyle = "fill:"+T.skinColor+";";
+				T.headSkinStyle = "fill:"+T.skinColour+";";
 				/* rest of body is covered in bodysuit */
-				T.skinColor = outfitBaseColor;
-				T.bellySkinStyle = outfitBaseColor;
-				T.bellybuttonStyle = outfitBaseColor;
+				T.skinColour = outfitBaseColour;
+				T.bellySkinStyle = outfitBaseColour;
+				T.bellybuttonStyle = outfitBaseColour;
 			}
 			/* END SKIN COLOR OVERRIDES FOR LATEX CLOTHING EMULATION */
 
@@ -1411,22 +1412,22 @@ window.VectorArt = (function() {
 		}
 
 		function setShoeColor() {
-			/* BEWARE: _shoeColor is read by Wardrobe Use */
+			/* BEWARE: _shoeColour is read by Wardrobe Use */
 			/* note: only heels use this _shoeShadowColor */
 
 			/* override color in case of full body latex outfit, or custom color*/
 			if (slave.clothes === "a Fuckdoll suit" || slave.clothes === "restrictive latex") {
-				T.shoeColor = T.skinColor;
-				T.shoeShadowColor = T.shoeColor+";opacity: 0.5"; /* TODO: do not abuse "color" variable for style definitions. do not rely on dark background for shadow effect either. */
-			} else if (slave.shoeColor !== undefined) {
-				T.shoeColor = slave.shoeColor+";opacity: 0.4"; /* shoe color selected by user */
-				T.shoeShadowColor = T.shoeColor+";opacity: 0.5"; /* TODO: do not abuse "color" variable for style definitions. do not rely on dark background for shadow effect either. */
+				T.shoeColour = T.skinColour;
+				T.shoeShadowColor = T.shoeColour+";opacity: 0.5"; /* TODO: do not abuse "color" variable for style definitions. do not rely on dark background for shadow effect either. */
+			} else if (slave.shoeColour !== undefined) {
+				T.shoeColour = slave.shoeColour+";opacity: 0.4"; /* shoe color selected by user */
+				T.shoeShadowColor = T.shoeColour+";opacity: 0.5"; /* TODO: do not abuse "color" variable for style definitions. do not rely on dark background for shadow effect either. */
 			} else {
 				T.shoeShadowColor = "#616a6b";
 				if (slave.shoes === "none")
-					T.shoeColor = "#595959";
+					T.shoeColour = "#595959";
 				else
-					T.shoeColor = "#80808080";
+					T.shoeColour = "#80808080";
 			}
 		}
 	}
diff --git a/src/js/foreachMacroJS.js b/src/js/foreachMacroJS.js
deleted file mode 100644
index d670f6f911cf4f9c2d9e57077be124ed37dd2873..0000000000000000000000000000000000000000
--- a/src/js/foreachMacroJS.js
+++ /dev/null
@@ -1,59 +0,0 @@
-Macro.add('foreach', {
-	skipArgs: true,
-	tags: null,
-
-	handler() {
-		const payload = this.payload[0].contents.replace(/\n$/, '');
-		let statement = this.args.raw.trim();
-		let variable;
-		let array;
-		let result;
-
-		if (statement.length !== 0) {
-			const parts = statement.match(/^(\S+?)\s+of\s+(\S.*?)\s*$/i);
-			if (parts !== null) {
-				variable = parts[1];
-				array = parts[2];
-			}
-		}
-		if (!variable || !array) {
-			return this.error('invalid syntax, format: <<foreach variable of array-expression>>... <</foreach>>');
-		}
-
-		try {
-			result = Scripting.evalTwineScript(array);
-		} catch (ex) {
-			return this.error(`bad evaluation: ${typeof ex === 'object' ? ex.message : ex}`);
-		}
-
-		let resultLength = result['length'];
-
-		// We don't check for "instanceof Array" to also be able to pass arguments or other strange objects
-		if (typeof resultLength !== 'number' || (resultLength % 1) !== 0) {
-			return this.error(`bad evaluation: '${ result }' is not an array or array-like object`);
-		}
-
-		if (resultLength > Config.macros.maxLoopIterations) {
-			return this.error(`Array too large for maxLoopIterations (${ resultLength } > ${ Config.macros.maxLoopIterations })`);
-		}
-
-		if (!new RegExp(`^(${Patterns.variable})$`).test(variable)) {
-			return this.error(`not a variable identifier: ${ variable}`);
-		}
-
-		if (resultLength <= 0) {
-			// Don't bother with empty stuff
-			return;
-		}
-
-		Config.debug && this.debugView.modes({
-			block: true
-		});
-
-		payload.replace(/^\n/, '');
-		for (let i = 0; i < resultLength; ++i) {
-			Wikifier.setValue(variable, result[i]);
-			new Wikifier(this.output, payload);
-		}
-	}
-});
diff --git a/src/npc/fDance.tw b/src/npc/fDance.tw
index 1b7c7800eaef440f2934604284423c8cd0a586ad..4007e9283456cf529020b391e1da977373c4644d 100644
--- a/src/npc/fDance.tw
+++ b/src/npc/fDance.tw
@@ -1,29 +1,30 @@
 :: FDance [nobr]
 
+/* this needs better support for different devotion/trust combinations, perhaps dance alterations for bodytypes? */
+
 <<set $desc = SlaveTitle($activeSlave)>>
 <<run clearSummaryCache($activeSlave)>>
 <<setLocalPronouns $activeSlave>>
 <<setPlayerPronouns>>
 
-You tell your assistant to summon your slave and set some erotic music. When your slave arrives $he finds the lights in your office flashing club colors. You gesture towards the platform in the center of your office and tell $him to dance for you.
+You tell your assistant to summon your slave and set some erotic music. When your slave arrives $he finds the lights in your office flashing club colors. You gesture towards a sturdy platform in the center of your office and tell $him to dance for you.
 
 <<if ($activeSlave.entertainmentSkill >= 100)>>
-	Your slave has a level of skill previously unseen in the old world. Even $his blinks have the seductive pull of a goddess. $He slides his ass gracefully unto the stage, then dramatically raises $his elongated legs one at a time onto the platform. Circling to $his knees, $he raises $his ass in the air and glides $his hands up $his legs as $he stands upright. As you watch $him preform, you think how no man of the old world would ever get to see pure sexuality like this. And not only do get to watch $him, you OWN $him. $His body moves like water, and hips that ebbed and flowed as if the tides themselves panged for a rock hard cock to come and take them. You try to go back to your work, but cannot take your eyes off $him for even a second.
+	Your slave has a level of skill previously unseen in the old world; even $his blinks have the seductive pull of a goddess. $He slides his ass gracefully unto the stage, then dramatically raises $his elongated legs one at a time onto the platform. Circling to $his knees, $he raises $his ass in the air and glides $his hands up $his legs as $he stands upright. As you watch $him preform, you think how no man of the old world would ever get to see pure sexuality like this. And not only do get to watch $him, you OWN $him. $His body moves like water, and hips that ebbed and flowed as if the tides themselves panged for a rock hard cock to come and take them. You try to go back to your work, but cannot take your eyes off $him for even a second.
 <<elseif ($activeSlave.entertainmentSkill >= 80)>>
 	$He takes his rightful place on your stage. $His skill would have only been matched by the best of the best old world erotic dancers, but in your Free City expectations are high. $He dances with seduction in every move, alternating $his style between everything from belly dancing to club twerking, and each with the skill level of a trained professional. You resume your work, but often find yourself pulled back in by the tide of $his rolling hips.
 <<elseif ($activeSlave.entertainmentSkill >= 60)>>
-	$He goes to take $his place on your stage and dance for $his Master. $He has impressive skill and would have been a top-tier dancer in the old world. One of the many benefits of being a leader of a Free City is the ability to work in an atmosphere of pure servitude. You smile as you continue your work in an office an old world man could only dream of.
+	$He goes to take $his place on your stage and dance for $his <<= writtenMaster($activeSlave)>>. $He has impressive skill and would have been a top-tier dancer in the old world. One of the many benefits of being a leader of a Free City is the ability to work in an atmosphere of pure servitude. You smile as you continue your work in an office an old world _womanP could only dream of.
 <<elseif ($activeSlave.entertainmentSkill >= 40)>>
-	$He ascends to the platform and begins to grind at the pole. Despite being an average entertainer, it is clear that $he is doing $his best. You enjoy the new ambiance while continuing your work.
+	$He ascends the platform and begins to grind on the pole. Despite being an average entertainer, it is clear that $he is doing $his best. You enjoy the new ambiance while continuing your work.
 <<elseif ($activeSlave.entertainmentSkill >= 20)>>
-	$He climbs up onto the platform and grabs onto the pole. $He is still learning the nuances of seductive dance, but at least able to move with the rhythm. It isn't long before you are distracted with work, leaving your slave to continue to dance without an audience, and unable to stop until you command it.
+	$He climbs up onto the platform and grabs hold of the pole. $He is still learning the nuances of seductive dance, but at least able to move with the rhythm. It isn't long before you are distracted with work, leaving your slave to continue to dance without an audience, and unable to stop until you command it.
 <<else>>
-	$He unceremoniously climbs on the platform and begins to dance. Or, at least, $his best attempt at dancing. $His arms flail about awkwardly as $he crouches and straightens off-beat to the music. You try to tune $him out and get some work done.
+	$He unceremoniously climbs on the platform and begins to dance — or, at least, $his best attempt at dancing. $His arms flail about awkwardly as $he crouches and straightens off-beat to the music. You try to tune $him out and get some work done.
 <</if>>
 
-The atmosphere of your office is a testament to masculine opulence. Few _womenP in the old world would have the pleasure of completing their work while an attractive $woman flaunts $himself for _hisP pleasure.
-You allow the situation to continue for about an hour, before deciding it's time to escalate.
-You look up once more at your slave and congratulate yourself for choosing such a delicious outfit for $him.
+The atmosphere of your office is a testament to masculine opulence. Few _womenP in the old world would have the pleasure of completing their work while an attractive $girl flaunts $himself for _hisP pleasure. You allow the situation to continue for about an hour, before deciding it's time to escalate. You look up once more at your slave and congratulate yourself for choosing such a delicious outfit for $him.
+/* I do not like this part */
 <<switch $activeSlave.clothes>>
 	<<case "uncomfortable straps">>
 		<<if $activeSlave.boobs < 300>>
@@ -200,7 +201,8 @@ You look up once more at your slave and congratulate yourself for choosing such
 		<<else>>
 			$His naked <<if $activeSlave.boobs < 300>> flat chest and nipples<<else>>breasts<</if>> catch your eye.
 		<</if>>
-	<</switch>>
+<</switch>>
+
 You tell your slave that it's time to incorporate some stripping into $his dance.
 
 <<if ($activeSlave.sexualFlaw == "shamefast")>>
@@ -425,14 +427,14 @@ You tell your slave that it's time to incorporate some stripping into $his dance
 After the last piece of clothing has hit the floor you let your little slut dance naked a little while longer while you finish your last report. Once you have gotten enough of $his dancing, you snap your fingers and $he hurries to your side and drops to $his knees, awaiting further orders.
 
 <<if (random(1,100) > (100 + $activeSlave.devotion))>>
-	<<if ($activeSlave.fetish != "humiliation") && ($activeSlave.energy <= 95) && ($activeSlave.sexualFlaw != "shamefast")>>
+	<<if ($activeSlave.fetish != "humiliation") && ($activeSlave.energy <= 50) && ($activeSlave.sexualFlaw == "none")>>
 		Being forced to reveal $himself has given $him a @@.red;desire to always be clothed.@@
 		<<set $activeSlave.sexualFlaw = "shamefast">>
 	<</if>>
-<<elseif (random(1,100) > (110 - $activeSlave.devotion))>>
-	<<if ($activeSlave.fetish == "none") && ($activeSlave.sexualFlaw != "shamefast")>>
-		Being on display for your pleasure has @@.lightcoral;encouraged $him to focus exposing $himself more often.@@
-		<<set $activeSlave.fetish = "humiliation", $activeSlave.fetishKnown = 1>>
+<<elseif ($activeSlave.fetish == "none") && ($activeSlave.sexualFlaw != "shamefast")>>
+	<<if fetishChangeChance($activeSlave) > random(0,100)>>
+		Being on display for your pleasure has @@.lightcoral;encouraged $him to savor humiliation.@@
+		<<set $activeSlave.fetish = "humiliation", $activeSlave.fetishKnown = 1, $activeSlave.fetishStrength = 65>>
 	<</if>>
 <</if>>
 
diff --git a/src/pregmod/basenationalitiesControls.tw b/src/pregmod/basenationalitiesControls.tw
index 21d4a28a50535981a1a8cefec77dab7d8834ee0a..5a28b3895d209e116d64a6e3e08dee4c489842e3 100644
--- a/src/pregmod/basenationalitiesControls.tw
+++ b/src/pregmod/basenationalitiesControls.tw
@@ -107,7 +107,7 @@ Filter by Region:
 		</div>
 	<</for>>
 	<div style="clear: both;">By dominant race/ethnicity (hover over the name to see the nationalities affected):</div>
-	<<foreach _race of setup.filterRaces>>
+	<<for _race range setup.filterRaces>>
 		<<set _racialNationalities = setup.baseNationalities.filter(function(n) {
 			var races = setup.raceSelector[n] || setup.raceSelector[''];
 			return races[_race.toLowerCase()] * 3.5 > hashSum(races); })>>
@@ -126,7 +126,7 @@ Filter by Region:
 				<<replace '#PopControl'>><<include 'Basenationalities Controls'>><</replace>>
 			<</link>>@@</div>">>
 		<</if>>
-	<</foreach>>
+	<</for>>
 <<else>>
 /* Filtered pop controls */
 	<<set _controlsNationality = setup[$baseControlsFilter+'Nationalities']>>
diff --git a/src/pregmod/seDeath.tw b/src/pregmod/seDeath.tw
index 27e6a0cdc31efd6aa0a029e75c5b85a36aee4d15..51cd278c447670cf8fcd9d2f936b1f266cf768d5 100644
--- a/src/pregmod/seDeath.tw
+++ b/src/pregmod/seDeath.tw
@@ -3,7 +3,7 @@
 <<set $nextButton = "Continue", $nextLink = "Scheduled Event">>
 
 <<set _killedSlaves = []>>
-<<foreach _slave of $slaves>>
+<<for _slave range $slaves>>
 	<<switch _slave.death.toLowerCase()>>
 		<<case "old">>
 			<<DeathOldAge _slave>>
@@ -22,16 +22,16 @@
 			<br><br><hr style="margin:0"><br>
 			<<set _killedSlaves.push(_slave)>>
 	<</switch>>
-<</foreach>>
+<</for>>
 <<if _killedSlaves.length == 0>>
 	/* if something beats this to the slaves, this should kick the player along instead of leaving them at a blank screen */
 	<<set $slaveDeath = 0>>
 	<<goto "Scheduled Event">>
 <</if>>
-<<foreach _slave of _killedSlaves>>
+<<for _slave range _killedSlaves>>
 	<<set $activeSlave = _slave>>
 	<<= removeActiveSlave() >>
-<</foreach>>
+<</for>>
 <<unset _killedSlaves>>
 
-<<set $slaveDeath = 0>>
\ No newline at end of file
+<<set $slaveDeath = 0>>
diff --git a/src/pregmod/widgets/marketWidgets.tw b/src/pregmod/widgets/marketWidgets.tw
index c9d19f880eaa6f8e82568347ae9b63de191a00a8..b568f38367b81882839bfeb336e8b259d8ae36fe 100644
--- a/src/pregmod/widgets/marketWidgets.tw
+++ b/src/pregmod/widgets/marketWidgets.tw
@@ -19,9 +19,9 @@
 			while(match = re.exec(wp.text)) { result.push(match[1]); }
 			return result; })
 		.value()>>
-	<<silently>><<foreach _widget of _widgets>>
+	<<silently>><<for _widget range _widgets>>
 		<<= "<<" + _widget + " $args[1]>>">>
-	<</foreach>><</silently>>
+	<</for>><</silently>>
 <</if>>
 <</widget>>
 
@@ -35,4 +35,4 @@
 		<<include "Generate Random Slave">>
 	<</if>>
 <</silently>>
-<</widget>>
\ No newline at end of file
+<</widget>>
diff --git a/src/uncategorized/main.tw b/src/uncategorized/main.tw
index 4aec940dc9292dc84bc8039eb8a205ee3377f06e..fda0d00c63ff99db3d458208eabc122a0bb8f8b4 100644
--- a/src/uncategorized/main.tw
+++ b/src/uncategorized/main.tw
@@ -49,10 +49,10 @@
 /* end extra sanity checks and repair */
 
 <<set _duplicateSlaves = _($slaves).countBy(s => s.ID).pickBy(v => v > 1).keys().map(v => Number(v)).value()>>
-<<foreach _i of _duplicateSlaves>>
+<<for _i range _duplicateSlaves>>
 	<br><br>@@.red;Duplicate slave ID _i at indices
 	<<= _($slaves).map((s, idx) => ({ID: s.ID, idx: idx, name: s.slaveName, assignment: s.assignment})).filter(s => s.ID === _i).map(s => s.idx + ' - ' + s.name + ' (' + s.assignment + ')').join(', ')>>@@
-<</foreach>>
+<</for>>
 <<set _visibleSlaves = $slaves.filter(s => s.assignmentVisible == 1 && (s.assignment != "be your Head Girl" || $HGSuite != 1) && (s.assignment != "guard you" || $dojo <= 1)),
 	$slavesVisible = _visibleSlaves.length,
 	$dormitoryPopulation = _visibleSlaves.filter(s => s.livingRules != "luxurious").length,
diff --git a/src/uncategorized/wardrobeUse.tw b/src/uncategorized/wardrobeUse.tw
index 88fe2a21ec7752b8e85c1770d99952117e96570b..3c13257ba0d646ecf2446e2cb4befe4056c2f681 100644
--- a/src/uncategorized/wardrobeUse.tw
+++ b/src/uncategorized/wardrobeUse.tw
@@ -251,12 +251,12 @@
 	<<if ($seeImages == 1) && ($imageChoice == 1)>>
 		/* prepare display of currently selected color. */
 		/* TODO: update currently selected color upon outfit select */
-		/* _clothingBaseColor is set by display (Art_Vector_Set_Color_Shoe_), but not all outfits define a color. */
-		/* _skinColor is used as fallback default (set by Art_Vector_Set_Color_Skin_). */
+		/* _clothingBaseColor is set by display (Art_Vector_Set_Colour_Shoe_), but not all outfits define a color. */
+		/* _skinColor is used as fallback default (set by Art_Vector_Set_Colour_Skin_). */
 		<<set _clothingBaseColor = _skinColor >>
-		<<if def _outfitBaseColor>>
+		<<if def _outfitBaseColour>>
 			/* set default color predefined by choice of outfit */
-			<<set _clothingBaseColor = _outfitBaseColor>>
+			<<set _clothingBaseColor = _outfitBaseColour>>
 		<</if>>
 		<<if def $activeSlave.clothingBaseColor>>
 			/* regard current user selection */
@@ -327,7 +327,7 @@ Collar: ''$activeSlave.collar.''
 
 	<<if ($seeImages == 1) && ($imageChoice == 1)>>
 		/* prepare display of currently selected color. */
-		/* _glassesColor is always set by display (Art_Vector_Set_Color_Outfit_) */
+		/* _glassesColor is always set by display (Art_Vector_Set_Colour_Outfit_) */
 		<<if def $activeSlave.glassesColor>>
 			/* regard current user selection */
 			<<set _glassesColor = $activeSlave.glassesColor>>
@@ -369,14 +369,14 @@ Collar: ''$activeSlave.collar.''
 	<<if ($seeImages == 1) && ($imageChoice == 1) && $activeSlave.shoes != "none">>
 		&nbsp;&nbsp;&nbsp;&nbsp;//Color://&nbsp;&nbsp;
 		/* prepare display of currently selected color. */
-		/* _shoeColor is always set by display (Art_Vector_Set_Color_Shoe_) */
+		/* _shoeColour is always set by display (Art_Vector_Set_Colour_Shoe_) */
 		/* TODO: update currently selected color upon shoe select */
 		<<if def $activeSlave.shoeColor>>
 			/* regard current user selection */
-			<<set _shoeColor = $activeSlave.shoeColor>>
+			<<set _shoeColour = $activeSlave.shoeColor>>
 		<</if>>
 		/* Display an HTML5 color picker */
-		<<colorinput "$activeSlave.shoeColor" _shoeColor>>
+		<<colorinput "$activeSlave.shoeColor" _shoeColour>>
 		<<if def $activeSlave.shoeColor>>
 			&nbsp;&nbsp;[[Reset default color|Wardrobe Use][delete $activeSlave.shoeColor]]
 		<</if>>