diff --git a/src/pregmod/saClothes.tw b/src/pregmod/saClothes.tw
index c8478b59d073d0189216ccc8ebe75bd3be62f88f..914cf0a4ae70428043c41a2618ba380caa62096a 100644
--- a/src/pregmod/saClothes.tw
+++ b/src/pregmod/saClothes.tw
@@ -408,13 +408,13 @@
 			<<if ($slaves[$i].collar == "dildo gag")>>
 				<<if $slaves[$i].skill.oral <= 10>>
 					Living gagged by a dildo, $he can't help but get better at having things down $his throat.
-					<<set $skillIncrease = 5>><<OralSkillIncrease $slaves[$i]>>
+					<<set $skillIncrease = 5>><<= SkillIncrease.Oral($slaves[$i], $skillIncrease)>>
 				<</if>>
 			<</if>>
 			<<if ($slaves[$i].collar == "massive dildo gag")>>
 				<<if $slaves[$i].skill.oral < 75>>
 					Living gagged by such an immense dildo, $he can't help but get even better at having giant things rammed down $his throat.
-					<<set $skillIncrease = 5>><<OralSkillIncrease $slaves[$i]>>
+					<<set $skillIncrease = 5>><<= SkillIncrease.Oral($slaves[$i], $skillIncrease)>>
 				<</if>>
 			<</if>>
 		<</if>>
diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw
index 28f7b7b922b003fa4d15932a9ce49d5f10e2e7d2..6c4d98b6a9f82c1ccd55d996b5fdf2cefeed40d0 100644
--- a/src/uncategorized/RESS.tw
+++ b/src/uncategorized/RESS.tw
@@ -6959,11 +6959,11 @@ brought in to you. This time <<EventNameLink>> has been sent to deliver it. $He
 	<<set $skillIncrease = 10>>
 	<<if $activeSlave.skill.anal <= 10 && canDoAnal($activeSlave)>>
 		$He can't help but learn how to take a rough buttfuck.
-		<<AnalSkillIncrease $activeSlave>>
+		<<= SkillIncrease.Anal($activeSlave, $skillIncrease)>>
 	<</if>>
 	<<if $activeSlave.skill.oral <= 10>>
 		$He can't help but learn how to deepthroat.
-		<<OralSkillIncrease $activeSlave>>
+		<<= SkillIncrease.Oral($activeSlave, $skillIncrease)>>
 	<</if>>
 	<</replace>>
 <</link>><<if ($activeSlave.anus == 0 && canDoAnal($activeSlave)) || ($activeSlave.vagina == 0 && canDoVaginal($activeSlave))>> //This option will take virginity//<</if>>
@@ -7596,7 +7596,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 	<</if>>
 	You patiently explain that taking <<if $PC.dick == 0>>anything you feel like inserting into $his backdoor<<else>>your cock<</if>> is $his duty, and begin to massage $his sphincter open with a single gentle finger. $He doesn't enjoy the ensuing assfuck, but $he doesn't truly hate it either and @@.hotpink;begins to hope@@ that being your butt slave won't be so painful after all.
 	<<set $activeSlave.devotion += 4>>
-	<<set $skillIncrease = 10>><<AnalSkillIncrease $activeSlave>>
+	<<set $skillIncrease = 10>><<= SkillIncrease.Anal($activeSlave, $skillIncrease)>>
 	<<= AnalVCheck()>>
 	<</replace>>
 <</link>>
@@ -9580,7 +9580,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 	<<EventNameDelink $activeSlave>>
 	<<replace "#result">>
 	$He obeys your orders to keep $his hands off $his dick, but can't hide $his disappointment and frustration. You keep a close watch on $him, and buttfuck $him every chance you get, teaching $him the finer points of taking a <<if $PC.dick == 0>>strap-on<<else>>dick<</if>> up the butt. You focus entirely on your pleasure, teaching $him how to use $his <<if ($activeSlave.anus > 2)>>gaping<<elseif ($activeSlave.anus > 1)>>loose<<else>>tight<</if>> anal ring to extract orgasms from cocks. This experience was hard for $him but has increased $his anal skill.
-	<<set $skillIncrease = 10>><<AnalSkillIncrease $activeSlave>>
+	<<set $skillIncrease = 10>><<= SkillIncrease.Anal($activeSlave, $skillIncrease)>>
 	<<= AnalVCheck(9)>>
 	<</replace>>
 <</link>>
@@ -15166,7 +15166,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 	<<replace "#result">>
 	Simple problems require simple solutions — $he'll get fucked in the mouth until $he either gets over $his hang-ups about oral or learns to hide them. You drag the protesting $activeSlave.slaveName out in public, chain $him low so that $his mouth is available, and tell $him that $he'll suck dicks until $he gets through five in a row without grimacing, gagging, or resisting. You have a comfortable chair brought out to you and settle in to watch the show.
 	$activeSlave.slaveName tries, $he really does. But when word gets out as to the conditions of $his enslavement, $his users take a perverse enjoyment in being rougher than usual to evoke the exact reactions $he's trying to avoid. By the third failed streak, you've started to grow bored of the spectacle, but luckily you find entertainment in conversation with those who have already been entertained by poor $activeSlave.slaveName. Before long more chairs have been brought up and an impromptu salon has been set up alongside the blowbang line. By the sixth failed streak, an enterprising citizen has set up a small bar and is serving drinks. By the ninth, you've delegated watching $activeSlave.slaveName to your assistant. You personally break the eleventh streak after $he reached four, to general acclaim from your newfound friends and a toast to your virility.
-	When the fourteenth streak is finally successful, there are serious talks about making these blowbang salons a regular occurrence and some backslapping directed towards you for your innovation in genteel hedonism. While you seriously doubt $activeSlave.slaveName enjoys oral sex any more than $he did at the start of the day, $he's certainly @@.green;learned to keep $his feelings on the matter to $himself.@@ $He did, however, @@.red;have quite a rough time@@ of it<<if $activeSlave.skill.oral <= 30>>, though $he did learn a thing or two about sucking dick.<<set $skillIncrease = 10>><<OralSkillIncrease $activeSlave>><<else>>.<</if>> And last of all, you and $activeSlave.slaveName did make @@.green;quite a good impression@@ today, though for widely differing reasons.
+	When the fourteenth streak is finally successful, there are serious talks about making these blowbang salons a regular occurrence and some backslapping directed towards you for your innovation in genteel hedonism. While you seriously doubt $activeSlave.slaveName enjoys oral sex any more than $he did at the start of the day, $he's certainly @@.green;learned to keep $his feelings on the matter to $himself.@@ $He did, however, @@.red;have quite a rough time@@ of it<<if $activeSlave.skill.oral <= 30>>, though $he did learn a thing or two about sucking dick.<<set $skillIncrease = 10>><<= SkillIncrease.Oral($activeSlave, $skillIncrease)>><<else>>.<</if>> And last of all, you and $activeSlave.slaveName did make @@.green;quite a good impression@@ today, though for widely differing reasons.
 	<<set $activeSlave.health -= 10, $activeSlave.sexualFlaw = "none">>
 	<<set _oralSeed = random(65,80)>>
 	<<set $activeSlave.counter.oral += _oralSeed, $activeSlave.counter.publicUse += _oralSeed, $oralTotal += _oralSeed>>
@@ -19695,7 +19695,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 	<<replace "#result">>
 	You tell $him $he'll get fucked in the mouth until $he either gets over the idea of being special for $his education or until all $his learning is fucked out of $his head. You drag the protesting $activeSlave.slaveName out into a public plaza, restrain $him in stocks so that $his mouth is available, and inform the gathering crowd of citizens that this particular slave thinks $himself more than a fuckhole because of some fancy 'education'.
 	<br><br>
-	When you return later in the evening, it becomes abundantly clear that your citizenry taught $activeSlave.slaveName a harsh lesson about a slave's place in $arcologies[0].name. $activeSlave.slaveName has certainly @@.green;learned to keep any pretentious thoughts about $his education in $his head.@@ $He did, however, @@.red;have quite a rough time@@ sucking all those dicks<<if $activeSlave.skill.oral <= 30>>, though $he did learn about sucking dick, so $he can't claim enslavement isn't educational.<<set $skillIncrease = 10>><<OralSkillIncrease $activeSlave>><<else>>.<</if>> And last of all, you and $activeSlave.slaveName did make @@.green;quite a good impression@@ today, though for widely differing reasons.
+	When you return later in the evening, it becomes abundantly clear that your citizenry taught $activeSlave.slaveName a harsh lesson about a slave's place in $arcologies[0].name. $activeSlave.slaveName has certainly @@.green;learned to keep any pretentious thoughts about $his education in $his head.@@ $He did, however, @@.red;have quite a rough time@@ sucking all those dicks<<if $activeSlave.skill.oral <= 30>>, though $he did learn about sucking dick, so $he can't claim enslavement isn't educational.<<set $skillIncrease = 10>><<= SkillIncrease.Oral($activeSlave, $skillIncrease)>><<else>>.<</if>> And last of all, you and $activeSlave.slaveName did make @@.green;quite a good impression@@ today, though for widely differing reasons.
 	<<set $activeSlave.health -= 10>>
 	<<set _blowBang = random(65,80)>>
 	<<set $activeSlave.counter.oral += _blowBang, $activeSlave.counter.publicUse += _blowBang, $oralTotal += _blowBang>>
diff --git a/src/uncategorized/dairyReport.tw b/src/uncategorized/dairyReport.tw
index 8dc3f1ead0e9fb0439fcd18d1facd59273e344b1..5c8ab29a9124d2bab9458203d3293f38da9d6fa3 100644
--- a/src/uncategorized/dairyReport.tw
+++ b/src/uncategorized/dairyReport.tw
@@ -197,7 +197,7 @@
 	<</if>>
 	<<if ($Milkmaid.skill.oral < 90)>>
 		<<set $skillIncrease = 3>>
-		<<OralSkillIncrease $slaves[_FLs]>>
+		<<= SkillIncrease.Oral($slaves[_FLs], $skillIncrease)>> 
 	<</if>>
 	<<if ($Milkmaid.sexualQuirk == "caring")>>
 		<<set $milkmaidTrustBonus++>>
diff --git a/src/uncategorized/hgApplication.tw b/src/uncategorized/hgApplication.tw
index 51ed0e9ec32604d5bece1f313cc62f642a659561..197fa73b64e2095e19a195689bbf35d8f9a4d71e 100644
--- a/src/uncategorized/hgApplication.tw
+++ b/src/uncategorized/hgApplication.tw
@@ -232,68 +232,68 @@ $He punishes $activeSlave.slaveName whenever $he sees _him2 breaking the rules y
 <<set $activeSlave.training = 0>>
 <<if ($HeadGirl.fetish == "cumslut") && ($HeadGirl.fetishStrength > 60)>>
 	In spare moments $he teaches $activeSlave.slaveName how to suck cocks, cunts, and assholes. $His enthusiasm for oral sex is infectious. $activeSlave.slaveName's @@.green;oral skills have improved.@@
-	<<set $skillIncrease = random(5,10)>><<OralSkillIncrease $activeSlave>>
+	<<set $skillIncrease = random(5,10)>><<= SkillIncrease.Oral($activeSlave, $skillIncrease)>>
 <<elseif ($HeadGirl.dick > 0) && canPenetrate($HeadGirl)>>
 	In spare moments $he teaches $activeSlave.slaveName how to suck cocks, cunts, and assholes. Your Head Girl uses $his penis as an effective teaching tool. $activeSlave.slaveName's @@.green;oral skills have improved.@@
-	<<set $skillIncrease = random(5,10)>><<OralSkillIncrease $activeSlave>>
+	<<set $skillIncrease = random(5,10)>><<= SkillIncrease.Oral($activeSlave, $skillIncrease)>>
 <<elseif ($HeadGirl.clit > 2)>>
 	In spare moments $he teaches $activeSlave.slaveName how to suck cocks, cunts, and assholes. Your Head Girl uses $his pseudophallus-sized clit as an effective teaching tool. $activeSlave.slaveName's @@.green;oral skills have improved.@@
-	<<set $skillIncrease = random(5,10)>><<OralSkillIncrease $activeSlave>>
+	<<set $skillIncrease = random(5,10)>><<= SkillIncrease.Oral($activeSlave, $skillIncrease)>>
 <<else>>
 	In spare moments $he teaches $activeSlave.slaveName how to suck cocks, cunts, and assholes. $activeSlave.slaveName's @@.green;oral skills have improved.@@
 <</if>>
-<<set $skillIncrease = Math.ceil(_effectiveness/10)>><<OralSkillIncrease $activeSlave>>
+<<set $skillIncrease = Math.ceil(_effectiveness/10)>><<= SkillIncrease.Oral($activeSlave, $skillIncrease)>>
 
 <<elseif $HGtraining == "anal skill">>
 
 <<set $activeSlave.training = 0>>
 <<if ($HeadGirl.fetish == "buttslut") && ($HeadGirl.fetishStrength > 60)>>
 	In spare moments $he teaches $activeSlave.slaveName how to take it up the ass. Your Head Girl's enthusiasm for backdoor loving is infectious. $activeSlave.slaveName's @@.green;anal skills have improved.@@
-	<<set $skillIncrease = random(5,10)>><<AnalSkillIncrease $activeSlave>>
+	<<set $skillIncrease = random(5,10)>><<= SkillIncrease.Anal($activeSlave, $skillIncrease)>>
 <<elseif ($HeadGirl.dick > 0) && canPenetrate($HeadGirl)>>
 	In spare moments $he teaches $activeSlave.slaveName how to take a dick up the butt. Your Head Girl uses $his penis as an effective teaching tool. $activeSlave.slaveName's @@.green;anal skills have improved.@@
-	<<set $skillIncrease = random(5,10)>><<AnalSkillIncrease $activeSlave>>
+	<<set $skillIncrease = random(5,10)>><<= SkillIncrease.Anal($activeSlave, $skillIncrease)>>
 <<elseif ($HeadGirl.clit > 2)>>
 	In spare moments $he teaches $activeSlave.slaveName how to take a phallus up the butt. Your Head Girl uses $his pseudophallus-sized clit as an effective teaching tool. $activeSlave.slaveName's @@.green;anal skills have improved.@@
-	<<set $skillIncrease = random(5,10)>><<AnalSkillIncrease $activeSlave>>
+	<<set $skillIncrease = random(5,10)>><<= SkillIncrease.Anal($activeSlave, $skillIncrease)>>
 <<else>>
 	In spare moments $he teaches $activeSlave.slaveName how to take a dick up the butt. $activeSlave.slaveName's @@.green;anal skills have improved.@@
 <</if>>
-<<set $skillIncrease = Math.ceil(_effectiveness/10)>><<AnalSkillIncrease $activeSlave>>
+<<set $skillIncrease = Math.ceil(_effectiveness/10)>><<= SkillIncrease.Anal($activeSlave, $skillIncrease)>>
 
 <<elseif $HGtraining == "fuck skill">>
 
 <<set $activeSlave.training = 0>>
 <<if ($HeadGirl.energy > 95)>>
 	In spare moments $he teaches $activeSlave.slaveName how to take a dick. Your Head Girl's enthusiasm for sex is infectious. $activeSlave.slaveName's @@.green;vanilla sex skills have improved.@@
-	<<set $skillIncrease = random(5,10)>><<VaginalSkillIncrease $activeSlave>>
+	<<set $skillIncrease = random(5,10)>><<= SkillIncrease.Vaginal($activeSlave, $skillIncrease)>>
 <<elseif ($HeadGirl.dick > 0) && canPenetrate($HeadGirl)>>
 	In spare moments $he teaches $activeSlave.slaveName how to take a dick. Your Head Girl uses $his penis as an effective teaching tool. $activeSlave.slaveName's @@.green;vanilla sex skills have improved.@@
-	<<set $skillIncrease = random(5,10)>><<VaginalSkillIncrease $activeSlave>>
+	<<set $skillIncrease = random(5,10)>><<= SkillIncrease.Vaginal($activeSlave, $skillIncrease)>>
 <<elseif ($HeadGirl.clit > 2)>>
 	In spare moments $he teaches $activeSlave.slaveName how to take a phallus. Your Head Girl uses $his pseudophallus-sized clit as an effective teaching tool. $activeSlave.slaveName's @@.green;vanilla sex skills have improved.@@
-	<<set $skillIncrease = random(5,10)>><<VaginalSkillIncrease $activeSlave>>
+	<<set $skillIncrease = random(5,10)>><<= SkillIncrease.Vaginal($activeSlave, $skillIncrease)>>
 <<else>>
 	In spare moments $he teaches $activeSlave.slaveName how to take a dick. $activeSlave.slaveName's @@.green;vanilla sex skills have improved.@@
 <</if>>
-<<set $skillIncrease = Math.ceil(_effectiveness/10)>><<VaginalSkillIncrease $activeSlave>>
+<<set $skillIncrease = Math.ceil(_effectiveness/10)>><<= SkillIncrease.Vaginal($activeSlave, $skillIncrease)>>
 
 <<elseif $HGtraining == "whore skill">>
 
 <<set $activeSlave.training = 0>>
 In spare moments $he teaches $activeSlave.slaveName how to prostitute _himself2. $activeSlave.slaveName's @@.green;whoring skills have improved.@@
-<<set $skillIncrease = Math.ceil(_effectiveness/10)>><<WhoreSkillIncrease $activeSlave>>
+<<set $skillIncrease = Math.ceil(_effectiveness/10)>><<= SkillIncrease.Whore($activeSlave, $skillIncrease)>>
 
 <<elseif $HGtraining == "entertain skill">>
 
 <<set $activeSlave.training = 0>>
 <<if ($HeadGirl.fetish == "humiliation") && ($HeadGirl.fetishStrength > 60)>>
 	In spare moments $he teaches $activeSlave.slaveName how to entertain. Your Head Girl's enthusiasm for public display is infectious. $activeSlave.slaveName's @@.green;entertainment skills have improved.@@
-	<<set $skillIncrease = random(5,10)>><<EntertainSkillIncrease $activeSlave>>
+	<<set $skillIncrease = random(5,10)>><<= SkillIncrease.Entertain($activeSlave, $skillIncrease)>>
 <<else>>
 	In spare moments $he teaches $activeSlave.slaveName how to entertain. $activeSlave.slaveName's @@.green;entertainment skills have improved.@@
 <</if>>
-<<set $skillIncrease = Math.ceil(_effectiveness/10)>><<EntertainSkillIncrease $activeSlave>>
+<<set $skillIncrease = Math.ceil(_effectiveness/10)>><<= SkillIncrease.Entertain($activeSlave, $skillIncrease)>>
 
 <</if>>
 <</if>>
diff --git a/src/uncategorized/ptWorkaround.tw b/src/uncategorized/ptWorkaround.tw
index 45395352ecd534382ba5b5df93d8019a235dc3ba..a1082be69c6c444a93c1158bee78f79d81a42bf8 100644
--- a/src/uncategorized/ptWorkaround.tw
+++ b/src/uncategorized/ptWorkaround.tw
@@ -344,43 +344,43 @@
 	<</if>>
 	<<if $activeSlave.skill.oral <= 10>>
 		Since $he's orally unskilled, you start with $his mouth. $He <<if $PC.dick == 1>>sucks your dick<<else>>eats you out<</if>>, of course, but $his training is more creative than just that. You give $him delicious hard candies to suck and feed $him phallic fruits and vegetables that $he must deepthroat before $he can eat. As $his skill improves, $he wears a gag with an inward-facing dildo, which is swapped out for a bigger size every so often. You only let $him orgasm when $he's sucking, and before long $he's associating giving someone oral pleasure with experiencing pleasure $himself. @@.lime;$His oral skills have improved.@@
-		<<OralSkillIncrease $activeSlave>>
+		<<= SkillIncrease.Oral($activeSlave, $skillIncrease)>>
 	<<elseif ($activeSlave.skill.vaginal <= 10) && ($activeSlave.vagina > 0) && canDoVaginal($activeSlave)>>
 		Since $he's vaginally unskilled, and not a virgin, you start with $his pussy. @@.lime;$His vaginal skills have improved.@@
-		<<VaginalSkillIncrease $activeSlave>>
+		<<= SkillIncrease.Vaginal($activeSlave, $skillIncrease)>>
 	<<elseif ($activeSlave.skill.anal <= 10) && ($activeSlave.anus > 0) && canDoAnal($activeSlave)>>
 		Since $he's anally unskilled, and not an anal virgin, you start with $his ass. @@.lime;$His anal skills have improved.@@
-		<<AnalSkillIncrease $activeSlave>>
+		<<= SkillIncrease.Anal($activeSlave, $skillIncrease)>>
 	<<elseif $activeSlave.skill.oral <= 30>>
 		Since $he's sexually experienced, you work with $him on the finer points of oral sex. @@.lime;$His oral skills have improved.@@
-		<<OralSkillIncrease $activeSlave>>
+		<<= SkillIncrease.Oral($activeSlave, $skillIncrease)>>
 	<<elseif ($activeSlave.skill.vaginal <= 30) && ($activeSlave.vagina > 0) && canDoVaginal($activeSlave)>>
 		Since $he's sexually experienced, you work with $him on the finer points of penetrative sex. $He can already fuck pretty well, but $his muscular control could be improved. $He works $his Kegel muscles all week, using fingers, dildos, and your <<if $PC.dick == 0>>strap-on<<else>>cock<</if>> as training tools. $He becomes expert enough that $he is able to make you cum without any thrusting at all by you or any riding by $him; $he just flexes $his muscles enough to <<if $PC.dick == 0>>grind the fake phallus back against your cunt<<else>>stimulate you<</if>>. @@.lime;$His vaginal skills have improved.@@
-		<<VaginalSkillIncrease $activeSlave>>
+		<<= SkillIncrease.Vaginal($activeSlave, $skillIncrease)>>
 	<<elseif ($activeSlave.skill.anal <= 30) && ($activeSlave.anus > 0) && canDoAnal($activeSlave)>>
 		Since $he's anally experienced, you work with $him on the finer points of penetrative sex. $He can already take it up $his ass, but $his muscular control could be improved. $He works $his Kegel muscles and anal sphincter all week, using fingers, dildos, and your <<if $PC.dick == 0>>strap-on<<else>>cock<</if>> as training tools. $He becomes expert enough that $he is able to make you cum without any thrusting at all by you or any riding by $him; $he just flexes $his muscles enough to <<if $PC.dick == 0>>squeeze the fake phallus<<else>>stimulate you<</if>>. @@.lime;$His anal skills have improved.@@
-		<<AnalSkillIncrease $activeSlave>>
+		<<= SkillIncrease.Anal($activeSlave, $skillIncrease)>>
 	<<elseif $activeSlave.skill.oral < 100>>
 		$He is already a skilled oral whore, but $his skills can be polished further. You train $him in the basics of <<if $seePee == 1>>urine play, <</if>>massage, pet play, needle play, and many other niche skills. You also expand $his oral endurance, enabling $him to deepthroat for extended periods. @@.lime;$His oral skills have improved.@@
-		<<OralSkillIncrease $activeSlave>>
+		<<= SkillIncrease.Oral($activeSlave, $skillIncrease)>>
 	<<elseif ($activeSlave.skill.vaginal < 100) && ($activeSlave.vagina > 0) && canDoVaginal($activeSlave)>>
 		$He is already a skilled pussy slut, but $his skills can be polished further. You train $him in the basics of <<if $seePee == 1>>urine play, <</if>>massage, pet play, needle play, and many other niche skills. You also work with $him to develop a personal regimen of vaginal muscle exercises. This will enable $him to squeeze and massage dicks with $his practiced vaginal walls. @@.lime;$His vaginal skills have improved.@@
-		<<VaginalSkillIncrease $activeSlave>>
+		<<= SkillIncrease.Vaginal($activeSlave, $skillIncrease)>>
 	<<elseif ($activeSlave.skill.anal < 100) && ($activeSlave.anus > 0) && canDoAnal($activeSlave)>>
 		$He is already a skilled anal bitch, but $his skills can be polished further. You train $him in the basics of <<if $seePee == 1>>urine play, <</if>>massage, pet play, needle play, and many other niche skills. You also expand $his knowledge of sexual positions. $He learns to balance $himself on tiptoe for the challenge of standing anal sex without support. @@.lime;$His sexual skills have improved.@@
-		<<AnalSkillIncrease $activeSlave>>
+		<<= SkillIncrease.Anal($activeSlave, $skillIncrease)>>
 	<<elseif $activeSlave.skill.whoring <= 10>>
 		Since $he's dangerously naïve about selling sex, you teach $him the basics of self protection and business. @@.lime;$His prostitution skills have improved.@@
-		<<WhoreSkillIncrease $activeSlave>>
+		<<= SkillIncrease.Whore($activeSlave, $skillIncrease)>>
 	<<elseif $activeSlave.skill.entertainment <= 10>>
 		Since $he's rough and unskilled at entertainment, you teach $him the basics of polite conversation, music, and dance. @@.lime;$His entertainment skills have improved.@@
-		<<EntertainSkillIncrease $activeSlave>>
+		<<= SkillIncrease.Entertain($activeSlave, $skillIncrease)>>
 	<<elseif $activeSlave.skill.whoring <= 30>>
 		Since $he has only basic entertainment skills, you teach $him to steer clients to more lucrative sex acts. @@.lime;$His prostitution skills have improved.@@
-		<<WhoreSkillIncrease $activeSlave>>
+		<<= SkillIncrease.Whore($activeSlave, $skillIncrease)>>
 	<<elseif $activeSlave.skill.entertainment <= 30>>
 		Since $he has only basic entertainment skills, you teach $him more about poise and Free Cities etiquette. @@.lime;$His entertainment skills have improved.@@
-		<<EntertainSkillIncrease $activeSlave>>
+		<<= SkillIncrease.Entertain($activeSlave, $skillIncrease)>>
 	<<else>>
 		$He's learned everything you can teach, and is now a masterful
 		<<if ($activeSlave.skill.vaginal >= 100)>>
diff --git a/src/uncategorized/saLiveWithHG.tw b/src/uncategorized/saLiveWithHG.tw
index 0d2ac526e12f6b2821aabfebd09f55b2e774816c..70cd4dd5c9bdbff254f889a1e12c04f6b487507c 100644
--- a/src/uncategorized/saLiveWithHG.tw
+++ b/src/uncategorized/saLiveWithHG.tw
@@ -222,16 +222,16 @@
 <<set $skillIncrease = 10>>
 <<if ($slaves[$i].skill.oral <= 30)>>
 	$HeadGirl.slaveName wants to come home to a talented tongue, so _he2 trains $slaves[$i].slaveName's oral skills.
-	<<OralSkillIncrease $slaves[$i]>>
+	<<= SkillIncrease.Oral($slaves[$i], $skillIncrease)>>
 <<elseif ($slaves[$i].vagina > 0) && ($slaves[$i].skill.vaginal <= 30)>>
 	$HeadGirl.slaveName wants _his2 personal sex slave to be as skilled with $his pussy as possible, so _he2 trains $slaves[$i].slaveName's vaginal skills.
-	<<VaginalSkillIncrease $slaves[$i]>>
+	<<= SkillIncrease.Vaginal($slaves[$i], $skillIncrease)>>
 <<elseif ($slaves[$i].anus > 0) && ($slaves[$i].skill.anal <= 30)>>
 	$HeadGirl.slaveName wants _his2 personal sex slave to be a skillful backdoor whore, so _he2 trains $slaves[$i].slaveName's anal skills.
-	<<AnalSkillIncrease $slaves[$i]>>
+	<<= SkillIncrease.Anal($slaves[$i], $skillIncrease)>>
 <<elseif ($slaves[$i].skill.entertainment <= 10)>>
 	$HeadGirl.slaveName wants to be kept amused in _his2 occasional free time, so _he2 trains $slaves[$i].slaveName's entertainment skills.
-	<<EntertainSkillIncrease $slaves[$i]>>
+	<<= SkillIncrease.Entertain($slaves[$i], $skillIncrease)>>
 <<elseif ($slaves[$i].sexualFlaw != "none")>>
 	$HeadGirl.slaveName is annoyed by $slaves[$i].slaveName's sexual flaws, so _he2 @@.green;trains@@ $him out of them.
 	<<set $slaves[$i].sexualFlaw = "none">>
diff --git a/src/uncategorized/saPleaseYou.tw b/src/uncategorized/saPleaseYou.tw
index e5f3297574017378f88b28fbd9706973f5f88e78..8445a44ae42e6ed914c55ee6b9b4434ccfd6daa0 100644
--- a/src/uncategorized/saPleaseYou.tw
+++ b/src/uncategorized/saPleaseYou.tw
@@ -108,7 +108,7 @@ serves you this week.
 				<</if>>
 				<<if ($slaves[$i].skill.vaginal < 100)>>
 					After a lot of time spent having vanilla sex, $his vaginal skill improves.
-					<<VaginalSkillIncrease $slaves[$i]>>
+					<<= SkillIncrease.Vaginal($slaves[$i], $skillIncrease)>>
 				<</if>>
 			<</if>>
 			<<if $PC.dick == 1>>
@@ -239,7 +239,7 @@ serves you this week.
 				<</if>>
 				<<if ($slaves[$i].skill.anal < 100)>>
 					After a lot of time spent getting buttfucked, $his anal skill improves.
-					<<AnalSkillIncrease $slaves[$i]>>
+					<<= SkillIncrease.Anal($slaves[$i], $skillIncrease)>>
 				<</if>>
 				<<if $slaves[$i].fetish == "buttslut">>
 					<<if $slaves[$i].fetishKnown == 1>>
@@ -383,7 +383,7 @@ serves you this week.
 				<</if>>
 				<<if ($slaves[$i].skill.oral < 100)>>
 					After a lot of time spent <<if $PC.dick == 1>>sucking you off<<if $PC.vagina == 1>> and eating you out<</if>><<else>>eating you out<</if>>, $his oral skill improves.
-					<<OralSkillIncrease $slaves[$i]>>
+					<<= SkillIncrease.Oral($slaves[$i], $skillIncrease)>>
 				<</if>>
 				<<if $slaves[$i].fetish == "cumslut">>
 					<<if $slaves[$i].fetishKnown == 1>>
@@ -1055,13 +1055,13 @@ serves you this week.
 		<<if $slaves[$i].fetish != "mindbroken">>
 			<<if ($slaves[$i].skill.oral < 100)>>
 				After a lot of time spent with <<if $PC.dick == 1>>your dick in $his mouth<<else>>$his mouth on your cunt<</if>>, $his oral skill improves.
-				<<OralSkillIncrease $slaves[$i]>>
+				<<= SkillIncrease.Oral($slaves[$i], $skillIncrease)>>
 			<<elseif ($slaves[$i].skill.vaginal < 100) && ($slaves[$i].vagina > 0) && canDoVaginal($slaves[$i])>>
 				After a lot of time spent getting fucked, $his vaginal skill improves.
-				<<VaginalSkillIncrease $slaves[$i]>>
+				<<= SkillIncrease.Vaginal($slaves[$i], $skillIncrease)>>
 			<<elseif ($slaves[$i].skill.anal < 100) && ($slaves[$i].anus != 0) && canDoAnal($slaves[$i])>>
 				After a lot of time spent taking it up the ass, $his anal skill improves.
-				<<AnalSkillIncrease $slaves[$i]>>
+				<<= SkillIncrease.Anal($slaves[$i], $skillIncrease)>>
 			<</if>>
 		<</if>>
 	<</if>>
diff --git a/src/uncategorized/saRelationships.tw b/src/uncategorized/saRelationships.tw
index 7f7a66cf69ef11806ae7cb77d3a4c03128ed6088..9ef868a104a1745f526f35376442bea58ddb10c4 100644
--- a/src/uncategorized/saRelationships.tw
+++ b/src/uncategorized/saRelationships.tw
@@ -1457,13 +1457,13 @@
 				_SlaveI.slaveName's <<if _SlaveI.relationship >= 5>>wife<<else>>lover<</if>> is older, more experienced, and
 				<<if (_SlaveJ.skill.oral > _SlaveI.skill.oral)>>
 					better at blowjobs than $he is. They are such good slaves that the senior _girl2 serves as a mentor to the junior, improving $his oral skills.
-					<<set $skillIncrease = 5>><<OralSkillIncrease _SlaveI>>
+					<<set $skillIncrease = 5>><<= SkillIncrease.Oral(_SlaveI, $skillIncrease)>> 
 				<<elseif (_SlaveJ.skill.anal > _SlaveI.skill.anal) && (_SlaveI.anus > 0)>>
 					better at taking a buttfuck than $he is, and they are such good slaves that the senior _girl2 serves as a mentor to the junior, improving $his anal skills.
-					<<set $skillIncrease = 5>><<AnalSkillIncrease _SlaveI>>
+					<<set $skillIncrease = 5>><<= SkillIncrease.Anal(_SlaveI, $skillIncrease)>>
 				<<elseif (_SlaveJ.skill.vaginal > _SlaveI.skill.vaginal) && (_SlaveI.vagina > 0) && (_SlaveJ.vagina > 0)>>
 					a better lover than $he is, and they are such good slaves that the senior _girl2 serves as a mentor to the junior, improving $his vaginal skills.
-					<<set $skillIncrease = 5>><<VaginalSkillIncrease _SlaveI>>
+					<<set $skillIncrease = 5>><<= SkillIncrease.Vaginal(_SlaveI, $skillIncrease)>>
 				<<elseif (_SlaveJ.trust > _SlaveI.trust)>>
 					a better slave than $he is, and they are such obedient slaves that the senior _girl2 serves as a mentor to the junior, @@.mediumaquamarine;improving $his trust.@@
 					<<set _SlaveI.trust += 11>>
diff --git a/src/uncategorized/saTakeClasses.tw b/src/uncategorized/saTakeClasses.tw
index 60ff204f23d84994c61c3dee13c592b480b97d4a..56992df0ab5c9f595fc1c21debcd4dd6af1f19bc 100644
--- a/src/uncategorized/saTakeClasses.tw
+++ b/src/uncategorized/saTakeClasses.tw
@@ -150,41 +150,41 @@
 			<<set _seed = 1>>
 		<<elseif ($slaves[$i].skill.oral <= 10)>>
 			Since $he is orally incompetent, $he is taught basic gag reflex suppression exercises and other simple oral things.
-			<<OralSkillIncrease $slaves[$i]>>
+			<<= SkillIncrease.Oral($slaves[$i], $skillIncrease)>>
 		<<elseif ($slaves[$i].skill.vaginal <= 10) && ($slaves[$i].vagina > 0) && canDoVaginal($slaves[$i])>>
 			Since $he is unskilled at using $his pussy, $he is taught Kegel exercises and other simple vaginal skills.
-			<<VaginalSkillIncrease $slaves[$i]>>
+			<<= SkillIncrease.Vaginal($slaves[$i], $skillIncrease)>>
 		<<elseif ($slaves[$i].skill.vaginal <= 10) && ($slaves[$i].vagina >= 0)>>
 			Since $he is unskilled at using $his pussy and not permitted to learn through practice, $he is taught Kegel exercises, vaginal basics and several new positions.
-			<<VaginalSkillIncrease $slaves[$i]>>
+			<<= SkillIncrease.Vaginal($slaves[$i], $skillIncrease)>>
 		<<elseif ($slaves[$i].skill.anal <= 10) && ($slaves[$i].anus > 0) && canDoAnal($slaves[$i])>>
 			Since $he is a novice at taking it up $his butt, $he is taught relaxation exercises and other simple anal basics.
-			<<AnalSkillIncrease $slaves[$i]>>
+			<<= SkillIncrease.Anal($slaves[$i], $skillIncrease)>>
 		<<elseif ($slaves[$i].skill.anal <= 10) && ($slaves[$i].anus >= 0)>>
 			Since $he is a novice at taking it up $his butt and not permitted to learn through practice, $he is taught relaxation exercises and other simple anal basics.
-			<<AnalSkillIncrease $slaves[$i]>>
+			<<= SkillIncrease.Anal($slaves[$i], $skillIncrease)>>
 		<<elseif ($slaves[$i].skill.whoring <= 10)>>
 			Since $he has little idea what's involved in selling $his body, $he is taught basic safety practices and other simple prostitution skills.
-			<<WhoreSkillIncrease $slaves[$i]>>
+			<<= SkillIncrease.Whore($slaves[$i], $skillIncrease)>>
 		<<elseif ($slaves[$i].skill.entertainment <= 10)>>
 			Since $his entertainment value is limited to $his holes, $he is taught simple conversational skills and other courtesan's essentials.
-			<<EntertainSkillIncrease $slaves[$i]>>
+			<<= SkillIncrease.Entertain($slaves[$i], $skillIncrease)>>
 		<<elseif ($schoolroomUpgradeSkills == 1)>>
 			<<if ($slaves[$i].skill.oral <= 30)>>
 				Having completed the basic sex slave curriculum, $he studies more advanced ways to use $his lips and tongue to please cocks, cunts, and asses.
-				<<OralSkillIncrease $slaves[$i]>>
+				<<= SkillIncrease.Oral($slaves[$i], $skillIncrease)>>
 			<<elseif ($slaves[$i].skill.whoring <= 30)>>
 				Having completed the basic sex slave curriculum, $he studies intermediate prostitution, including how to stay as safe as possible and maximize $his efficiency.
-				<<WhoreSkillIncrease $slaves[$i]>>
+				<<= SkillIncrease.Whore($slaves[$i], $skillIncrease)>>
 			<<elseif ($slaves[$i].skill.entertainment <= 30)>>
 				Having completed the basic sex slave curriculum, $he studies courtesanship, including social dynamics and flirtation more subtle than straightforward begging for sex.
-				<<EntertainSkillIncrease $slaves[$i]>>
+				<<= SkillIncrease.Entertain($slaves[$i], $skillIncrease)>>
 			<<elseif ($slaves[$i].skill.vaginal <= 30) && ($slaves[$i].vagina >= 0)>>
 				Having completed the basic sex slave curriculum, $he studies more advanced techniques and exotic positions to make use of $his <<if $slaves[$i].vagina == 0>>virgin pussy for use in $his first time<<else>>pussy<</if>>.
-				<<VaginalSkillIncrease $slaves[$i]>>
+				<<= SkillIncrease.Vaginal($slaves[$i], $skillIncrease)>>
 			<<elseif ($slaves[$i].skill.anal <= 30)>>
 				Having completed the basic sex slave curriculum, $he studies more advanced techniques and exotic positions to make use of $his <<if $slaves[$i].vagina == 0>>virgin ass for use in $his first time<<else>>ass<</if>>.
-				<<AnalSkillIncrease $slaves[$i]>>
+				<<= SkillIncrease.Anal($slaves[$i], $skillIncrease)>>
 			<</if>>
 		<</if>>
 	<</for>>
diff --git a/src/uncategorized/saWhore.tw b/src/uncategorized/saWhore.tw
index f3be3cad23d52913428b9485fd41c086ee93279d..c413870c919575bdd814bdb8f5654073f1d2ca4c 100644
--- a/src/uncategorized/saWhore.tw
+++ b/src/uncategorized/saWhore.tw
@@ -456,21 +456,21 @@ $His appearance attracted $beauty customers (<<print Math.trunc($beauty/7)>> a d
 	<<else>>
 		$He shows diligence, and $his sexual skills improve, according to what the customers demand<<if !canDoVaginal($slaves[$i])>> and what's possible for $him<</if>>.
 		<<set $skillIncrease = 5+Math.floor(($slaves[$i].intelligence+$slaves[$i].intelligenceImplant)/32)+$oralUseWeight>>
-		<<OralSkillIncrease $slaves[$i]>>
+		<<= SkillIncrease.Oral($slaves[$i], $skillIncrease)>>
 		<<if canDoAnal($slaves[$i])>>
 			<<set $skillIncrease = 5+Math.floor(($slaves[$i].intelligence+$slaves[$i].intelligenceImplant)/32)+$analUseWeight>>
-			<<AnalSkillIncrease $slaves[$i]>>
+			<<= SkillIncrease.Anal($slaves[$i], $skillIncrease)>>
 		<</if>>
 		<<if canDoVaginal($slaves[$i])>>
 			<<set $skillIncrease = 5+Math.floor(($slaves[$i].intelligence+$slaves[$i].intelligenceImplant)/32)+$vaginalUseWeight>>
-			<<VaginalSkillIncrease $slaves[$i]>>
+			<<= SkillIncrease.Vaginal($slaves[$i], $skillIncrease)>>
 		<</if>>
 	<</if>>
 	<<if ($slaves[$i].amp != 1)>>
 	<<if ($slaves[$i].skill.whoring < 100)>>
 		$He gains experience as a prostitute.
 		<<set $skillIncrease = 10+Math.floor(($slaves[$i].intelligence+$slaves[$i].intelligenceImplant)/32)>>
-		<<WhoreSkillIncrease $slaves[$i]>>
+		<<= SkillIncrease.Whore($slaves[$i], $skillIncrease)>>
 	<</if>>
 	<</if>>
 <</if>>
diff --git a/src/utility/miscWidgets.tw b/src/utility/miscWidgets.tw
index e5951ea84a16cc0c93ca7eca4765a7020dbb3c9e..451f5fd8497f30fbdf3011277e49f2763c37a9c2 100644
--- a/src/utility/miscWidgets.tw
+++ b/src/utility/miscWidgets.tw
@@ -487,61 +487,6 @@
 <</if>>
 <</widget>>
 
-/%
- Call as <<OralSkillIncrease>>
- $args[0]: Slave.
- $skillIncrease: Amount of increase.
-%/
-<<widget "OralSkillIncrease">>
-
-<<= SkillIncrease.Oral($args[0], $skillIncrease)>>
-
-<</widget>>
-
-/%
- Call as <<VaginalSkillIncrease>>
- $args[0]: Slave.
- $skillIncrease: Amount of increase.
-%/
-<<widget "VaginalSkillIncrease">>
-
-<<= SkillIncrease.Vaginal($args[0], $skillIncrease)>>
-
-<</widget>>
-
-/%
- Call as <<AnalSkillIncrease>>
- $args[0]: Slave.
- $skillIncrease: Amount of increase.
-%/
-<<widget "AnalSkillIncrease">>
-
-<<= SkillIncrease.Anal($args[0], $skillIncrease)>>
-
-<</widget>>
-
-/%
- Call as <<WhoreSkillIncrease>>
- $args[0]: Slave.
- $skillIncrease: Amount of increase.
-%/
-<<widget "WhoreSkillIncrease">>
-
-<<= SkillIncrease.Whore($args[0], $skillIncrease)>>
-
-<</widget>>
-
-/%
- Call as <<EntertainSkillIncrease>>
- $args[0]: Slave.
- $skillIncrease: Amount of increase.
-%/
-<<widget "EntertainSkillIncrease">>
-
-<<= SkillIncrease.Entertain($args[0], $skillIncrease)>>
-
-<</widget>>
-
 <<widget "Master">><<if def $args[0]>><<run Enunciate($args[0])>><<elseif ndef $titleEnunciate>><<run Enunciate($activeSlave)>><</if>>$titleEnunciate<</widget>>
 <<widget "say">><<if (def $args[0]) && $sayEnunciate != "lisp">>$args[0]<<else>>$sayEnunciate<</if>><</widget>>
 <<widget "s">>$sEnunciate<</widget>>