diff --git a/src/art/artJS.tw b/src/art/artJS.tw
index 4e06bbcfbc5b979e2a9eacf0995f0186363c6a9f..d85213bbd589c587618d05e86b16ea4e2cc0efed 100644
--- a/src/art/artJS.tw
+++ b/src/art/artJS.tw
@@ -3674,3 +3674,42 @@ window.ArtVectorTorso = function(slave) {
 	State.temporary.torsoSize = torsoSize;
 	return r;
 };
+
+window.ArtVectorTorsoOutfit = function(slave) {
+	const torsoSize = State.temporary.torsoSize;
+	let r = "";
+
+	/* BEWARE: _torsoSize is set by Art_Vector_Torso_ */
+	/* TODO: latex catsuit should cover vagina and its piercings, too */
+	switch (slave.clothes) {
+		case "a Fuckdoll suit":
+		case "a latex catsuit":
+		case "a nice pony outfit":
+		case "a slutty pony outfit":
+		case "choosing her own clothes":
+		case "no clothing":
+			break; /* no torso outfit */
+		/* manually handle special cases */
+		case "a cybersuit":
+			r += jsInclude(`Art_Vector_Torso_Outfit_Latex_${torsoSize}`);
+			break;
+		case "a slutty schutzstaffel uniform":
+			r += jsInclude(`Art_Vector_Torso_Outfit_SchutzstaffelUniform_${torsoSize}`);
+			break;
+		case "a niqab and abaya":
+		case "a burqa":
+			r += jsInclude(`Art_Vector_Torso_Outfit_HijabAndAbaya_${torsoSize}`);
+			break;
+		default:
+			r += jsInclude(`Art_Vector_Torso_Outfit_${clothing2artSuffix(slave.clothes)}_${torsoSize}`);
+	}
+	if (State.variables.seeVectorArtHighlights === 1) {
+		if (slave.fuckdoll !== 0 || slave.clothes === "restrictive latex" || slave.clothes === "a latex catsuit") {
+			if (slave.amp !== 0)
+				r += jsInclude("Art_Vector_Torso_Outfit_Shine_Shoulder");
+			if (slave.preg <= 0)
+				r += jsInclude(`Art_Vector_Torso_Outfit_Shine_${torsoSize}`);
+		}
+	}
+	return r;
+};
diff --git a/src/art/vector/Torso_Outfit.tw b/src/art/vector/Torso_Outfit.tw
index 5659b8f6422ad708bd1c79e214ca676bbf1d5c32..b8cbd0244f853a5970cea857ef86c6b8021e60d7 100644
--- a/src/art/vector/Torso_Outfit.tw
+++ b/src/art/vector/Torso_Outfit.tw
@@ -1,40 +1,3 @@
 :: Art_Vector_Torso_Outfit_ [nobr]
 
-/* BEWARE: _torsoSize is set by Art_Vector_Torso_ */
-
-/* TODO: latex catsuit should cover vagina and its piercings, too */
-
-<<unset _art>>
-
-<<set _clothes = _artSlave.clothes>>
-<<switch _artSlave.clothes >>
-/* handling special cases */
-<<case "a cybersuit" >>
-	<<set _clothes = "restrictive latex">> /* cybersuit uses restrictive latex art */
-<<case "a slutty schutzstaffel uniform" >>
-	<<set _clothes = "a schutzstaffel uniform">> /* slutty schutzstaffel uniform uses schutzstaffel uniform art */
-<<case "a niqab and abaya" "a burqa">>
-	<<set _clothes = "a hijab and abaya">>
-<<case "a hijab and blouse">>
-	<<set _clothes = "a hijab and blouse">>
-<</switch>>
-<<switch _clothes >> /* select available clothes */
-<<case "a ball gown" "a bunny outfit" "a chattel habit" "a cheerleader outfit" "a comfortable bodysuit" "a cybersuit" "a fallen nuns habit" "a halter top dress" "a hijab and abaya" "a huipil" "a kimono" "a leotard" "a maternity dress" "a military uniform" "a mini dress" "a monokini" "an apron" "a nice maid outfit" "a nice nurse outfit" "a penitent nuns habit" "a red army uniform" "a scalemail bikini" "a schoolgirl outfit" "a schutzstaffel uniform" "a slave gown" "a slutty maid outfit" "a slutty nurse outfit" "a slutty outfit" "a slutty qipao" "a slutty schutzstaffel uniform" "a string bikini" "a succubus outfit" "a toga" "attractive lingerie" "attractive lingerie for a pregnant woman" "battledress" "body oil" "chains" "clubslut netting" "conservative clothing" "cutoffs and a t-shirt" "harem gauze" "nice business attire" "restrictive latex" "shibari ropes" "slutty business attire" "slutty jewelry" "spats and a tank top" "stretch pants and a crop-top" "uncomfortable straps" "Western clothing" "a long qipao" "battlearmor" "a mounty outfit" "lederhosen" "a dirndl" "a biyelgee costume" "striped panties" "a klan robe" "a slutty klan robe" "a hijab and blouse" "a burkini" "panties" "panties and pasties" "a thong" "cutoffs" "a bra" "striped underwear" "a striped bra" "a button-up shirt" "a button-up shirt and panties" "sport shorts" "sport shorts and a sports bra" "sport shorts and a t-shirt" "a sports bra" "a t-shirt" "a t-shirt and thong" "a t-shirt and panties" "jeans" "leather pants" "leather pants and pasties" "leather pants and a tube top" "a tube top and thong" "a tube top" "boyshorts" "a skimpy loincloth" "a tank-top" "a tank-top and panties" "a t-shirt and jeans" "an oversized t-shirt" "an oversized t-shirt and boyshorts" "a sweater" "a sweater and cutoffs" "a sweater and panties" "a one-piece swimsuit" "a police uniform" "a hanbok" "a gothic lolita dress" "kitty lingerie">>
-	<<set _art = "Art_Vector_Torso_Outfit_"+clothing2artSuffix(_clothes)+"_"+_torsoSize >>
-	<<include _art >>
-<</switch>>
-
-/* shiny clothing */
-<<if $seeVectorArtHighlights == 1>>
-	<<if _artSlave.fuckdoll != 0 || _artSlave.clothes == "restrictive latex" || _artSlave.clothes == "a latex catsuit">>
-		<<if _artSlave.amp != 0>>
-			/* this shiny shoulder only looks sensible on amputees */
-			<<include Art_Vector_Torso_Outfit_Shine_Shoulder>>
-		<</if>>
-		<<if _artSlave.preg <= 0>>
-			/* the hip can be hidden by pregnant belly */
-			<<set _art = "Art_Vector_Torso_Outfit_Shine_"+_torsoSize >>
-			<<include _art >>
-		<</if>>
-	<</if>>
-<</if>>
+<<= ArtVectorTorsoOutfit(_artSlave)>>