diff --git a/devNotes/VersionChangeLog-Premod+LoliMod.txt b/devNotes/VersionChangeLog-Premod+LoliMod.txt
index f54cf567dbb752c3dc25b711409c18af25c78a6e..9c87e4eb56f2ce71527013a9df75bddd679fb64a 100644
--- a/devNotes/VersionChangeLog-Premod+LoliMod.txt
+++ b/devNotes/VersionChangeLog-Premod+LoliMod.txt
@@ -4,6 +4,10 @@
 
 12/24/17
 
+	229
+	-fixes
+	-QoL changes to unit management in secEx
+
 	228
 	-code improvements
 	-SFanon's player skill stuff
diff --git a/slave variables documentation - Pregmod.txt b/slave variables documentation - Pregmod.txt
index de9b0fc1e7a250b1822bbb3dee3a4661744f7e06..073ee13ddaa4f3ff8d34fc892cb420eb7f22e35a 100644
--- a/slave variables documentation - Pregmod.txt	
+++ b/slave variables documentation - Pregmod.txt	
@@ -2588,6 +2588,7 @@ skillTE:
 Her skill as a teacher
 accpts int
 default cap is 200
+
 skillAT:
 
 Her skill as an attendant
diff --git a/src/init/setupVars.tw b/src/init/setupVars.tw
index 41426bff4dcc5939ae2902b0a7e30c7b7e9db2ed..54d3fc50cdc147995f150a6702b56c1529d1e8ff 100644
--- a/src/init/setupVars.tw
+++ b/src/init/setupVars.tw
@@ -239,7 +239,7 @@
 
 <<set setup.educatedCareers = ["a business owner", "a child actress", "a classical dancer", "a classical musician", "a college scout", "a counselor", "a criminal", "a cult leader", "a dispatch officer", "a doctor", "a journalist", "a journalist", "a lawyer", "a librarian", "a manager", "a mechanic", "a medical student", "a mercenary", "a military officer", "a military recruiter", "a nun", "a paramedic", "a pilot", "a political activist", "a politician", "a principal", "a private detective", "a private instructor", "a procuress", "a professional bartender", "a professor", "a programmer", "a psychologist", "a refugee", "a scholar", "a scientist", "a serial divorcee", "a shut-in", "a teacher", "a teaching assistant", "a therapist", "a transporter", "a veterinarian", "a wedding planner", "a writer", "an MS pilot", "an actress", "an air hostess", "an assassin", "an engineer", "an estate agent", "an investor", "a producer"]>>
 
-<<set setup.uneducatedCareers = ["a barista", "a bartender", "a bodyguard", "a bouncer", "a bounty hunter", "a camgirl", "a camwhore", "a caregiver", "a charity worker", "a cheerleader", "a cocktail waitress", "a cook", "a criminal", "a dairy worker", "a dancer", "a factory worker", "a farm laborer", "a farmer's daughter", "a fisherwoman", "a handmaiden", "a house DJ", "a housewife", "a law enforcement officer", "a lifeguard", "a local news anchor", "a maid", "a mail carrier", "a masseuse", "a masseuse", "a medic", "a medic", "a missionary", "a mistress", "a model", "a musician", "a nurse", "a paramedic", "a party girl", "a pimp", "a political activist", "a prison guard", "a prisoner", "a procuress", "a prostitute", "a racing driver", "a rancher", "a refugee", "a revolutionary", "a ride attendant", "a saleswoman", "a secretary", "a security guard", "a service worker", "a soldier", "a stripper", "a student", "a teacher", "a trophy wife", "a truck driver", "a waitress", "a weathergirl", "an actress", "an arcade attendant", "an aspiring pop star", "an athlete", "an enforcer", "an enforcer", "an exotic dancer", "an office worker", "in a militia", "unemployed", "unemployed", "unemployed", "unemployed", "unemployed", "a cum dump", "a meat toilet", "a shrine maiden"]>>
+<<set setup.uneducatedCareers = ["a barista", "a bartender", "a bodyguard", "a bouncer", "a bounty hunter", "a camgirl", "a camwhore", "a caregiver", "a charity worker", "a cheerleader", "a cocktail waitress", "a cook", "a criminal", "a dairy worker", "a dancer", "a factory worker", "a farm laborer", "a farmer's daughter", "a fisherwoman", "a handmaiden", "a house DJ", "a housewife", "a law enforcement officer", "a lifeguard", "a local news anchor", "a maid", "a mail carrier", "a masseuse", "a masseuse", "a medic", "a medic", "a missionary", "a mistress", "a model", "a musician", "a nurse", "a paramedic", "a party girl", "a pimp", "a political activist", "a prison guard", "a prisoner", "a procuress", "a prostitute", "a racing driver", "a rancher", "a refugee", "a revolutionary", "a ride attendant", "a saleswoman", "a secretary", "a security guard", "a service worker", "a soldier", "a stripper", "a student", "a teacher", "a trophy wife", "a truck driver", "a waitress", "a weathergirl", "an actress", "an arcade attendant", "an aspiring pop star", "an athlete", "an enforcer", "an enforcer", "an exotic dancer", "an office worker", "in a militia", "unemployed", "unemployed", "unemployed", "unemployed", "unemployed", "a cum dump", "a meat toilet", "a shrine maiden", "an innkeeper"]>>
 
 <<set setup.gratefulCareers = ["a beggar", "a child soldier", "a pick-pocket", "a prisoner", "a refugee", "a shut-in", "a street urchin", "a student from a boarding school", "a sweatshop worker", "an orphan", "from a lower class family", "homeless", "unemployed"]>>
 
@@ -251,7 +251,7 @@
 
 <<set setup.HGCareers = ["a lawyer", "a leading arcology citizen", "a military officer", "a model-UN star", "a politician", "a student council president", "a Queen"]>>
 
-<<set setup.madamCareers = ["a business owner", "a manager", "a pimp", "a procuress"]>>
+<<set setup.madamCareers = ["a business owner", "a manager", "a pimp", "a procuress", "an innkeeper"]>>
 
 <<set setup.DJCareers = ["a classical dancer", "a classical musician", "a dancer", "a house DJ", "a musician", "an aspiring pop star"]>>
 
diff --git a/src/uncategorized/reFSAcquisition.tw b/src/uncategorized/reFSAcquisition.tw
index e1a7a5b225538b537c9b9842ee157db601b5e6f1..f6be2ef38cd0955fb9de623e10fefa04bb95fcf8 100644
--- a/src/uncategorized/reFSAcquisition.tw
+++ b/src/uncategorized/reFSAcquisition.tw
@@ -1212,7 +1212,7 @@ The call comes in from an office, and you suppress the urge to check whether $as
 	<<case "Maturity Preferentialist Two">>\
 	She arrives apologizing for her fine clothing. "I'm sorry," she apologizes sadly, "but I wanted to wear my best one last time." She sighs, squares her shoulders, and visibly steels herself. "My son's a bastard for selling me to you, and all to save that useless store of his." She delivers this last with a bitter smile on her lips. "At least he had the sense to sell me to someone with exquisite taste, like you. After all, you did buy me."
 	<<case "Chattel Religionist">>\
-	She lets out a convulsive sob when you accept her servitude, and is painfully obsequious as you complete the formalities of enslavement. Your exam reveals several minor indications of self-harm - chewed nails, bitten lips, and such. But for all that, a remarkable look of peace has settled on the poor woman's face. She waits patiently for a hint of your will, <<if $activeSlave.dick > 0>>her cock painfully erect<<else>>her pussy visibly moist<</if>> at the prospect of the servile sex she is convinced is her duty.
+	She lets out a convulsive sob when you accept her servitude, and is painfully obsequious as you complete the formalities of enslavement. Your exam reveals several minor indications of self-harm - chewed nails, bitten lips, and such. But for all that, a remarkable look of peace has settled on the poor woman's face. She waits patiently for a hint of your will, <<if canAchieveErection($activeSlave)>>her cock painfully erect<<elseif $activeSlave.dick > 0>>precum dripping from her soft dick<<else>>her pussy visibly moist<</if>> at the prospect of the servile sex she is convinced is her duty.
 	<<case "Roman Revivalist">>\
 	She arrives wide-eyed and enthusiastic about the historical style she saw on the way in. She swallows nervously throughout the enslavement process and even cries a little at the end. She's slow to undress, and when she's finished, she covers her modest breasts with one arm and her mons with the other. It seems that she's about to have a rude awakening about the realities of being a house slave.
 	<<case "Aztec Revivalist">>\
diff --git a/src/uncategorized/reRecruit.tw b/src/uncategorized/reRecruit.tw
index 1a80e5886ff58b903ef25d5defab6b559a27aaea..249bcedefaa48e832109004267af1ad7298801c9 100644
--- a/src/uncategorized/reRecruit.tw
+++ b/src/uncategorized/reRecruit.tw
@@ -1797,7 +1797,7 @@ Every push, every desperate contraction must be agonizing to her. Fortunately yo
 		She cooperates as the biometric scanners scrupulously record her every particular as belonging not to a person but to a piece of human property. She willingly places her biometric signature in testament to the truth of her voluntary enslavement. The process is completed with a distinct anticlimax: she is one of your slaves now. She gives you a smile, knowing she'll have a belly full of food before long.
 	<<case "paternalist swan song">>
 		She thanks you profusely for purchasing her, and she means it. She's relieved to have been bought by a kind master and promises to give you a private performance when ever you want.
-		<<set $swanSongWeek = $week, $swanSong = 1>>
+		<<set $swanSongWeek = $week, $swanSong = 2>>
 	<<case "tg addict">>
 		When she awakes from surgery, she slowly realizes that whatever she programmed the remote surgery to do wasn't done; instead, she's a young woman with a flat chest and a new virgin pussy. It takes a while for you to get her to understand, through her tears, that she is now obliged to accept enslavement due to her extreme debts. Eventually she figures it out and glares daggers at you as she signs her life away.
 	<<case "school sale">>
diff --git a/src/uncategorized/saRules.tw b/src/uncategorized/saRules.tw
index 748d23fc25fbcae2a0928465f8a122431c294a16..167d523d58e694ce7dc48469e368c2af21be07b8 100644
--- a/src/uncategorized/saRules.tw
+++ b/src/uncategorized/saRules.tw
@@ -3132,6 +3132,24 @@
 				<</switch>>
 			<</if>>
 		<<case "work in the dairy">>
+			<<if $dairyRestraintsSetting > 1>>
+				<<if $slaves[$i].devotion < -50>>
+					is so unhappy that she has little interest in getting off, not that she gets the choice.
+				<<elseif $slaves[$i].energy <= 20>>
+					is frigid and has little interest in getting off, not that she gets a choice.
+				<<else>>
+					gets off regardless of her thoughts on the matter.
+				<</if>>
+				<<set $slaves[$i].need = 0>>
+				<<if ($slaves[$i].attrKnown == 0)>>
+					<<if ($week-$slaves[$i].weekAcquired > 4) && $slaves[$i].energy > 20>>
+						<<set $slaves[$i].attrKnown = 1>>
+						<<if $assistantName == "your personal assistant">>Your personal assistant<<else>>$assistantName<</if>> has been monitoring her arousal in regards to the visual stimulation. It seems she is
+						<<saRulesAttractionDiscovery>>
+					<</if>>
+				<</if>>
+			<<else>>
+			<</if>>
 		<<default>>
 			<<if $slaves[$i].devotion < -50>>
 				is so unhappy that she has little interest in getting off<<if ($slaves[$i].releaseRules != "permissive")>>, making the rule restricting her sexual outlets superfluous<</if>>.
diff --git a/src/utility/raWidgets.tw b/src/utility/raWidgets.tw
index d53f488b323cc5c2f772b8fabbd2886ceca2c614..1c10c9a683ee5d75d9ebf1f53edbbb25b26eeec2 100644
--- a/src/utility/raWidgets.tw
+++ b/src/utility/raWidgets.tw
@@ -3580,7 +3580,7 @@ Your brand design is ''$brandDesign.''
 /* Asset Growth */
 	<<set _tempAssetGrowthDrugs = ["breast injections", "intensive breast injections", "breast redistributors", "butt injections", "intensive butt injections", "butt redistributors", "lip injections", "lip atrophiers", "penis enhancement", "intensive penis enhancement", "penis atrophiers", "testicle enhancement", "intensive testicle enhancement", "testicle atrophiers", "hyper breast injections", "hyper butt injections", "hyper penis enhancement", "hyper testicle enhancement"]>>
 	<<for _g = 0; _g < 1; _g++>> /* Growth drugs. Single loop broken when we find a drug to apply, or that a currently active drug is working on an unsatisfied growth target. Please advise if cleaner or more efficient code is possible. */
-	<<if $args[0].drugs == "super fertility drugs" || $args[0].drugs == "fertility drugs">>
+	<<if ($args[0].drugs == "super fertility drugs" || $args[0].drugs == "fertility drugs") && isFertile($args[0])>>
 	<br>$args[0].slaveName is on $args[0].drugs and will not be considered for drug enhancement until that regime is complete.
 	<<break>>
 	<<elseif (_combinedRule.growth.boobs == "no default setting" && _combinedRule.growth.butt == "no default setting" && _combinedRule.growth.lips == "no default setting" && _combinedRule.growth.dick == "no default setting" && _combinedRule.growth.dick == "no default setting" && _combinedRule.growth.balls == "no default setting")>>