diff --git a/src/npc/descriptions/descriptionWidgets.js b/src/npc/descriptions/descriptionWidgets.js
index f6bded7d4177b42c16b510647d66e1338e62b459..db042db98e265601bf10e08900cffd6cc9b39eb3 100644
--- a/src/npc/descriptions/descriptionWidgets.js
+++ b/src/npc/descriptions/descriptionWidgets.js
@@ -1526,3 +1526,51 @@ App.Desc.geneticQuirkAssessment = function(slave) {
 	}
 	return r.join(` `);
 };
+
+/**
+ * @param {App.Entity.SlaveState} slave
+ * @returns {string} Description of slave's flower
+ */
+App.Desc.flower = function(slave) {
+	if (slave.dick > 0 && slave.balls === 0) {
+		return `a white orchid, its black stamen stiffly erect.`;
+	} else if (slave.dick > 0) {
+		return `a morning glory, light around its edges with a puckered pink center.`;
+	} else if (slave.addict > 5) {
+		return `a large poppy, its pod glistening with black opiate juice.`;
+	} else if (slave.vagina === 0) {
+		return `a white lily, pure and unspoiled.`;
+	} else if (slave.pregType > 3 && slave.pregKnown === 1) {
+		return `a pink lotus, beautiful and fertile.`;
+	} else if (slave.energy > 95) {
+		return `a flamboyant tiger lily.`;
+	} else if (slave.actualAge > 40) {
+		return `an elegant, mature orchid.`;
+	} else if (slave.actualAge < 20) {
+		return `an innocent little peony.`;
+	} else if (slave.boobs > 2000) {
+		return `a huge round sunflower.`;
+	} else {
+		return `a nice red rose.`;
+	}
+};
+
+/**
+ * @param {App.Entity.SlaveState} slave
+ * @returns {string} Image associated with slave
+ */
+App.Desc.image = function(slave) {
+	if (slave.dick > 0 && slave.balls === 0) {
+		return `sodomy.`;
+	} else if (slave.dick > 0) {
+		return `stiff pricks.`;
+	} else if (slave.skill.oral >= 100) {
+		return `oral sex.`;
+	} else if (slave.boobs > 1000) {
+		return `boobs.`;
+	} else if (slave.vagina === -1) {
+		return `sodomy.`;
+	} else {
+		return `pussies.`;
+	}
+};
diff --git a/src/utility/descriptionWidgets.tw b/src/utility/descriptionWidgets.tw
deleted file mode 100644
index 7ffb58fc5a04ab657a331aabb69c478f17daa1dc..0000000000000000000000000000000000000000
--- a/src/utility/descriptionWidgets.tw
+++ /dev/null
@@ -1,46 +0,0 @@
-:: description widgets [widget nobr]
-
-<<widget "FlowerDesc">>
-
-<<if $activeSlave.dick > 0 && $activeSlave.balls == 0>>
-	a white orchid, its black stamen stiffly erect.
-<<elseif $activeSlave.dick > 0>>
-	a morning glory, light around its edges with a puckered pink center.
-<<elseif $activeSlave.addict > 5>>
-	a large poppy, its pod glistening with black opiate juice.
-<<elseif $activeSlave.vagina == 0>>
-	a white lily, pure and unspoiled.
-<<elseif $activeSlave.pregType > 3 && $activeSlave.pregKnown == 1>>
-	a pink lotus, beautiful and fertile.
-<<elseif $activeSlave.energy > 95>>
-	a flamboyant tiger lily.
-<<elseif $activeSlave.actualAge > 40>>
-	an elegant, mature orchid.
-<<elseif $activeSlave.actualAge < 20>>
-	an innocent little peony.
-<<elseif $activeSlave.boobs > 2000>>
-	a huge round sunflower.
-<<else>>
-	a nice red rose.
-<</if>>
-
-<</widget>>
-
-
-<<widget "ImageDesc">>
-
-<<if $activeSlave.dick > 0 && $activeSlave.balls == 0>>
-	sodomy.
-<<elseif $activeSlave.dick > 0>>
-	stiff pricks.
-<<elseif $activeSlave.skill.oral >= 100>>
-	oral sex.
-<<elseif $activeSlave.boobs > 1000>>
-	boobs.
-<<elseif $activeSlave.vagina == -1>>
-	sodomy.
-<<else>>
-	pussies.
-<</if>>
-
-<</widget>>
diff --git a/src/utility/descriptionWidgetsStyle.tw b/src/utility/descriptionWidgetsStyle.tw
index 33d489f61549fabbec464a4e80771c8f39435d25..0fb5f56b0fde91063d74b4e78ab70c86df6fafb8 100644
--- a/src/utility/descriptionWidgetsStyle.tw
+++ b/src/utility/descriptionWidgetsStyle.tw
@@ -1155,7 +1155,7 @@ $His
 			cascades out from under a festive hat.
 		<<case "a string bikini" "attractive lingerie" "attractive lingerie for a pregnant woman">>
 			flows back in a mane, with a flower tucked behind one ear:
-			<<FlowerDesc>>
+			<<= App.Desc.flower($activeSlave)>>
 		<<case "a scalemail bikini">>
 			is topped by a gold headband, and flows back in a mane.
 		<<case "kitty lingerie">>
@@ -1223,7 +1223,7 @@ $His
 			flows out from under a festive hat.
 		<<case "a string bikini" "attractive lingerie" "attractive lingerie for a pregnant woman">>
 			is tucked back by a flower, tucked behind one ear:
-			<<FlowerDesc>>
+			<<= App.Desc.flower($activeSlave)>>
 		<<case "a scalemail bikini">>
 			is topped by a gold headband.
 		<<case "kitty lingerie">>
@@ -1291,7 +1291,7 @@ $His
 			is topped by a festive hat.
 		<<case "a string bikini" "attractive lingerie" "attractive lingerie for a pregnant woman">>
 			bears a flower tucked behind one ear:
-			<<FlowerDesc>>
+			<<= App.Desc.flower($activeSlave)>>
 		<<case "a scalemail bikini">>
 			is topped by a gold headband.
 		<<case "kitty lingerie">>
@@ -1353,7 +1353,7 @@ $His
 			is hidden by a festive hat.
 		<<case "a string bikini" "attractive lingerie" "attractive lingerie for a pregnant woman" "long qipao" "a dirndl" "lederhosen" "a biyelgee costume" "striped panties">>
 			is short, and $he has a flower tucked behind one ear:
-			<<FlowerDesc>>
+			<<= App.Desc.flower($activeSlave)>>
 		<<case "a scalemail bikini">>
 			is short, and topped by a gold headband.
 		<<case "kitty lingerie">>
@@ -1617,14 +1617,14 @@ $His
 			is permed, and back in big poofy tails secured by scrunchies in noxious 80's pastel colors.
 		<<case "a slutty qipao">>
 			is back in huge tails secured by jade rings etched with images of
-			<<ImageDesc>>
+			<<= App.Desc.image($activeSlave)>>
 		<<case "spats and a tank top">>
 			is pulled back with a pair of scrunchies into long tails that almost reach the ground.
 		<<case "a huipil">>
 			is twisted into two huge tails that rest on top of $his shoulders.
 		<<case "a kimono">>
 			is in huge tails secured by ivory combs carved with images of
-			<<ImageDesc>>
+			<<= App.Desc.image($activeSlave)>>
 		<<case "uncomfortable straps">>
 			is back in huge tails secured by leather ties.
 		<<case "shibari rope">>
@@ -1699,14 +1699,14 @@ $His
 			is permed, and back in big poofy tails secured by scrunchies in noxious 80's pastel colors.
 		<<case "a slutty qipao">>
 			is back in big tails secured by jade rings etched with images of
-			<<ImageDesc>>
+			<<= App.Desc.image($activeSlave)>>
 		<<case "spats and a tank top">>
 			is pulled back with a pair of scrunchies into long tails.
 		<<case "a huipil">>
 			is twisted into two tails that rest on top of $his shoulders.
 		<<case "a kimono">>
 			is in big tails secured by ivory combs carved with images of
-			<<ImageDesc>>
+			<<= App.Desc.image($activeSlave)>>
 		<<case "uncomfortable straps">>
 			is back in big tails secured by leather ties.
 		<<case "shibari rope">>
@@ -1781,14 +1781,14 @@ $His
 			is permed, and back in poofy tails secured by scrunchies in noxious 80's pastel colors.
 		<<case "a slutty qipao">>
 			is back in short tails secured by jade rings etched with images of
-			<<ImageDesc>>
+			<<= App.Desc.image($activeSlave)>>
 		<<case "spats and a tank top">>
 			is pulled back with a pair of scrunchies into little tails.
 		<<case "a huipil">>
 			is twisted into two short tails that give $him the look of a little girl.
 		<<case "a kimono">>
 			is in short tails secured by ivory combs carved with images of
-			<<ImageDesc>>
+			<<= App.Desc.image($activeSlave)>>
 		<<case "uncomfortable straps">>
 			is back in short tails secured by leather ties.
 		<<case "shibari rope">>
@@ -1898,14 +1898,14 @@ $His
 			is back in a big, long ponytail, tied with a scrunchy in noxious 80's pastel colors.
 		<<case "a slutty qipao">>
 			is tied back in a huge ponytail secured by jade rings etched with images of
-			<<ImageDesc>>
+			<<= App.Desc.image($activeSlave)>>
 		<<case "spats and a tank top">>
 			is tied back with a scrunchy into a long ponytail that falls down <<if (hasAnyLegs($activeSlave))>>$his leg<<if (hasBothLegs($activeSlave))>>s<</if>><<else>>past $his torso<</if>>.
 		<<case "a huipil">>
 			is tied into a huge ponytail, that leaves $his long hair to wave in the wind.
 		<<case "a kimono">>
 			is in a huge ponytail secured by ivory combs carved with images of
-			<<ImageDesc>>
+			<<= App.Desc.image($activeSlave)>>
 		<<case "uncomfortable straps">>
 			is back in a huge ponytail secured by leather ties.
 		<<case "shibari rope">>
@@ -1980,14 +1980,14 @@ $His
 			is permed, and back in a big, long ponytail tied with a scrunchy in noxious 80's pastel colors.
 		<<case "a slutty qipao">>
 			is back in a big ponytail secured by jade rings etched with images of
-			<<ImageDesc>>
+			<<= App.Desc.image($activeSlave)>>
 		<<case "spats and a tank top">>
 			is tied back with a scrunchy into a long ponytail.
 		<<case "a huipil">>
 			is tied into a modest ponytail, that leaves $his hair to wave in the wind.
 		<<case "a kimono">>
 			is in a big ponytail secured by ivory combs carved with images of
-			<<ImageDesc>>
+			<<= App.Desc.image($activeSlave)>>
 		<<case "uncomfortable straps">>
 			is back in a big ponytail secured by leather ties.
 		<<case "shibari rope">>
@@ -2062,14 +2062,14 @@ $His
 			is permed, and back in a big, long ponytail tied with a scrunchy in noxious 80's pastel colors.
 		<<case "a slutty qipao">>
 			is back in short ponytail secured by jade rings etched with images of
-			<<ImageDesc>>
+			<<= App.Desc.image($activeSlave)>>
 		<<case "spats and a tank top">>
 			is tied back with a scrunchy into a short, cute ponytail.
 		<<case "a huipil">>
 			is tied into a small ponytail, that leaves $his short hair to wave in the wind.
 		<<case "a kimono">>
 			is in short ponytail secured by ivory combs carved with images of
-			<<ImageDesc>>
+			<<= App.Desc.image($activeSlave)>>
 		<<case "uncomfortable straps">>
 			is back in short ponytail secured by leather ties.
 		<<case "shibari rope">>
@@ -2157,12 +2157,12 @@ $His
 			is permed, and back in big poofy braids secured by scrunchies in noxious 80's pastel colors.
 		<<case "a slutty qipao">>
 			is back in huge braids secured by jade rings etched with images of
-			<<ImageDesc>>
+			<<= App.Desc.image($activeSlave)>>
 		<<case "a huipil">>
 			is twisted into huge braids, that rest on $his shoulders.
 		<<case "a kimono">>
 			is in huge braids secured by ivory combs carved with images of
-			<<ImageDesc>>
+			<<= App.Desc.image($activeSlave)>>
 		<<case "uncomfortable straps">>
 			is back in huge braids secured by leather ties.
 		<<case "shibari rope">>
@@ -2235,12 +2235,12 @@ $His
 			is permed, and back in big, long braids secured by scrunchies in noxious 80's pastel colors.
 		<<case "a slutty qipao">>
 			is back in big braids secured by jade rings etched with images of
-			<<ImageDesc>>
+			<<= App.Desc.image($activeSlave)>>
 		<<case "a huipil">>
 			is twisted into braids, that rest on $his shoulders.
 		<<case "a kimono">>
 			is in long braids secured by ivory combs carved with images of
-			<<ImageDesc>>
+			<<= App.Desc.image($activeSlave)>>
 		<<case "uncomfortable straps">>
 			is back in long braids secured by leather ties.
 		<<case "shibari rope">>
@@ -2313,12 +2313,12 @@ $His
 			is permed, and back in short braids secured by scrunchies in noxious 80's pastel colors.
 		<<case "a slutty qipao">>
 			is back in short braids secured by jade rings etched with images of
-			<<ImageDesc>>
+			<<= App.Desc.image($activeSlave)>>
 		<<case "a huipil">>
 			is twisted into short braids, that rest on $his shoulders.
 		<<case "a kimono">>
 			is in short braids secured by ivory combs carved with images of
-			<<ImageDesc>>
+			<<= App.Desc.image($activeSlave)>>
 		<<case "uncomfortable straps">>
 			is back in short braids secured by leather ties.
 		<<case "shibari rope">>
@@ -2406,12 +2406,12 @@ $His
 			is in dreadlocks, some tied with bands of colored string.
 		<<case "a slutty qipao">>
 			is in long dreadlocks, some with jade ornaments etched with images of
-			<<ImageDesc>>
+			<<= App.Desc.image($activeSlave)>>
 		<<case "a huipil">>
 			is in long dreadlocks, with a couple of small ornaments important to $him.
 		<<case "a kimono">>
 			is in long dreadlocks, some in ivory rings carved with images of
-			<<ImageDesc>>
+			<<= App.Desc.image($activeSlave)>>
 		<<case "uncomfortable straps">>
 			is in long dreadlocks some in simple leather ties.
 		<<case "shibari rope">>
@@ -2484,12 +2484,12 @@ $His
 			is in dreadlocks, some tied with bands of colored string.
 		<<case "a slutty qipao">>
 			is in dreadlocks, some with jade rings etched with images of
-			<<ImageDesc>>
+			<<= App.Desc.image($activeSlave)>>
 		<<case "a huipil">>
 			is in dreadlocks, with a couple of small ornaments important to $him.
 		<<case "a kimono">>
 			is in dreadlocks, some in ivory rings carved with images of
-			<<ImageDesc>>
+			<<= App.Desc.image($activeSlave)>>
 		<<case "uncomfortable straps">>
 			is in dreadlocks, some tied with simple leather ties.
 		<<case "shibari rope">>
@@ -2566,12 +2566,12 @@ $His
 			is in short dreadlocks, some tied with colored string.
 		<<case "a slutty qipao">>
 			is in short dreadlocks, some in jade rings etched with images of
-			<<ImageDesc>>
+			<<= App.Desc.image($activeSlave)>>
 		<<case "a huipil">>
 			is in short dreadlocks, with a couple of small ornaments important to $him.
 		<<case "a kimono">>
 			is in short dreadlocks, some with ivory rings carved with images of
-			<<ImageDesc>>
+			<<= App.Desc.image($activeSlave)>>
 		<<case "uncomfortable straps">>
 			is in short dreadlocks, some with simple leather ties.
 		<<case "shibari rope">>
@@ -2659,12 +2659,12 @@ $His
 			is curled into long flowing locks, tied with a scrunchy in noxious 80's pastel colors.
 		<<case "a slutty qipao">>
 			is curled into long flowing locks secured by jade rings etched with images of
-			<<ImageDesc>>
+			<<= App.Desc.image($activeSlave)>>
 		<<case "a huipil">>
 			is in long curls, and the locks flow down $his shoulders.
 		<<case "a kimono">>
 			is curled into long flowing locks secured by ivory combs carved with images of
-			<<ImageDesc>>
+			<<= App.Desc.image($activeSlave)>>
 		<<case "uncomfortable straps">>
 			is curled into long flowing locks secured by leather ties.
 		<<case "shibari rope">>
@@ -2737,12 +2737,12 @@ $His
 			is curled into long locks, tied with a scrunchy in noxious 80's pastel colors.
 		<<case "a slutty qipao">>
 			is curled into long locks, secured by jade rings etched with images of
-			<<ImageDesc>>
+			<<= App.Desc.image($activeSlave)>>
 		<<case "a huipil">>
 			is in curls, and the locks flow down $his shoulders.
 		<<case "a kimono">>
 			is curled into long locks, secured by ivory combs carved with images of
-			<<ImageDesc>>
+			<<= App.Desc.image($activeSlave)>>
 		<<case "uncomfortable straps">>
 			is curled into long locks, secured by leather ties.
 		<<case "shibari rope">>
@@ -2815,12 +2815,12 @@ $His
 			is curled into short locks tied with a scrunchy in noxious 80's pastel colors.
 		<<case "a slutty qipao">>
 			is curled into short locks secured by jade rings etched with images of
-			<<ImageDesc>>
+			<<= App.Desc.image($activeSlave)>>
 		<<case "a huipil">>
 			is in short curls, and the locks flow down $his shoulders.
 		<<case "a kimono">>
 			is curled into short locks secured by ivory combs carved with images of
-			<<ImageDesc>>
+			<<= App.Desc.image($activeSlave)>>
 		<<case "uncomfortable straps">>
 			is curled into short locks secured by leather ties.
 		<<case "shibari rope">>
@@ -2908,12 +2908,12 @@ $His
 			is permed into long flowing curls, tied with a scrunchy in noxious 80's pastel colors.
 		<<case "a slutty qipao">>
 			is permed into long flowing curls secured by jade rings etched with images of
-			<<ImageDesc>>
+			<<= App.Desc.image($activeSlave)>>
 		<<case "a huipil">>
 			is permed into long curls, and the locks flow down $his shoulders.
 		<<case "a kimono">>
 			is permed into long flowing curls secured by ivory combs carved with images of
-			<<ImageDesc>>
+			<<= App.Desc.image($activeSlave)>>
 		<<case "uncomfortable straps">>
 			is permed into long flowing curls secured by leather ties.
 		<<case "shibari rope">>
@@ -2986,12 +2986,12 @@ $His
 			is permed and tied with a scrunchy in noxious 80's pastel colors.
 		<<case "a slutty qipao">>
 			is permed into long locks, secured by jade rings etched with images of
-			<<ImageDesc>>
+			<<= App.Desc.image($activeSlave)>>
 		<<case "a huipil">>
 			is permed into curls, and the locks flow down $his shoulders.
 		<<case "a kimono">>
 			is permed and secured by ivory combs carved with images of
-			<<ImageDesc>>
+			<<= App.Desc.image($activeSlave)>>
 		<<case "uncomfortable straps">>
 			is permed and secured by leather ties.
 		<<case "shibari rope">>
@@ -3064,12 +3064,12 @@ $His
 			is permed into short waves tied with a scrunchy in noxious 80's pastel colors.
 		<<case "a slutty qipao">>
 			is permed into short waves secured by jade rings etched with images of
-			<<ImageDesc>>
+			<<= App.Desc.image($activeSlave)>>
 		<<case "a huipil">>
 			is permed into short curls, and the locks flow down $his shoulders.
 		<<case "a kimono">>
 			is permed into short waves secured by ivory combs carved with images of
-			<<ImageDesc>>
+			<<= App.Desc.image($activeSlave)>>
 		<<case "uncomfortable straps">>
 			is permed into short waves secured by leather ties.
 		<<case "shibari rope">>
@@ -3203,7 +3203,7 @@ $His
 			cascades out from under a festive hat in luxurious layered locks.
 		<<case "a string bikini" "attractive lingerie" "attractive lingerie for a pregnant woman">>
 			is in luxurious layered locks, with a flower tucked behind one ear:
-			<<FlowerDesc>>
+			<<= App.Desc.flower($activeSlave)>>
 		<<case "a scalemail bikini">>
 			is in luxurious locks topped by a gold headband.
 		<<case "kitty lingerie">>
@@ -3269,7 +3269,7 @@ $His
 			is in luxurious layered locks flowing out from under a festive hat.
 		<<case "a string bikini" "attractive lingerie" "attractive lingerie for a pregnant woman">>
 			is in luxurious layered locks held back by a flower, tucked behind one ear:
-			<<FlowerDesc>>
+			<<= App.Desc.flower($activeSlave)>>
 		<<case "a scalemail bikini">>
 			is in luxurious locks topped by a gold headband.
 		<<case "kitty lingerie">>
@@ -3335,7 +3335,7 @@ $His
 			is in luxuriously styled short locks topped by a festive hat.
 		<<case "a string bikini" "attractive lingerie" "attractive lingerie for a pregnant woman">>
 			is in luxuriously styled short locks, bearing a flower tucked behind one ear:
-			<<FlowerDesc>>
+			<<= App.Desc.flower($activeSlave)>>
 		<<case "a scalemail bikini">>
 			is in short, luxurious locks topped by a gold headband.
 		<<case "kitty lingerie">>
@@ -3383,7 +3383,7 @@ $His
 			is in luxuriously styled short locks under $his festive hat.
 		<<case "a string bikini" "attractive lingerie" "attractive lingerie for a pregnant woman">>
 			is in luxuriously styled short locks, and $he has a flower tucked behind one ear:
-			<<FlowerDesc>>
+			<<= App.Desc.flower($activeSlave)>>
 		<<case "a scalemail bikini" "striped panties">>
 			is in short, luxurious locks topped by a gold headband.
 		<<case "kitty lingerie">>