diff --git a/js/003-data/gameVariableData.js b/js/003-data/gameVariableData.js
index e7a200b5cbb5376ec3147de2b4cd7985e694d5a3..e8894f0df883121e4c505169de8a8b7970d8403c 100644
--- a/js/003-data/gameVariableData.js
+++ b/js/003-data/gameVariableData.js
@@ -434,16 +434,9 @@ App.Data.resetOnNGPlus = {
 	PCrebLoss: 0,
 
 	/* armed forces stats */
-	targetUnit: 0,
-	targetIndex: 0,
-	secBotsCost: 500,
-	secBotsUpgradeCost: 250,
-	equipUpgradeCost: 250,
-	maxTroops: 30,
 	militiaFreeManpower: 0,
 	militiaTotalCasualties: 0,
 	slavesTotalCasualties: 0,
-	slavesMaxTroops: 30,
 	mercFreeManpower: 0,
 	mercTotalCasualties: 0,
 	createdSlavesUnits: 0,
@@ -1461,6 +1454,11 @@ App.Data.resetOnNGPlus = {
 		slave: 0 /* { type: string, company: string */
 	},
 	tempEventToggle: 0,
+	/**
+	 * Assignments texts for slaves who choose their own assignment, set at during the first pass in  App.SlaveAssignment.choosesOwnJob()
+	 * @type {Object.<number, string>}
+	 */
+	choosesOwnAssignmentText: {},
 };
 
 App.Data.ignoreGameStateVariables = [
diff --git a/src/Mods/SecExp/buildings/propagandaHub.tw b/src/Mods/SecExp/buildings/propagandaHub.tw
index 6b72a7bc9e6edadef51bbf0853161806145f35d4..da3f9f3668003ada274cdb18c54b6a367772d136 100644
--- a/src/Mods/SecExp/buildings/propagandaHub.tw
+++ b/src/Mods/SecExp/buildings/propagandaHub.tw
@@ -62,13 +62,15 @@ The propaganda hub is a surprisingly inconspicuous building, dimly lit from the
 			<<set $SecExp.buildings.propHub.focus = "enslavement">>
 		<</link>>
 	<</if>>
-	|
-	<<if $SecExp.buildings.propHub.focus == "recruitment">>
-		recruitment
-	<<else>>
-		<<link "recruitment" "propagandaHub">>
-			<<set $SecExp.buildings.propHub.focus = "recruitment">>
-		<</link>>
+	<<if $militiaFounded == 1>>
+		|
+		<<if $SecExp.buildings.propHub.focus == "recruitment">>
+			recruitment
+		<<else>>
+			<<link "recruitment" "propagandaHub">>
+				<<set $SecExp.buildings.propHub.focus = "recruitment">>
+			<</link>>
+		<</if>>
 	<</if>>
 	<br>
 	You are concentrating your propaganda efforts towards
diff --git a/src/Mods/SecExp/buildings/secBarracks.tw b/src/Mods/SecExp/buildings/secBarracks.tw
index 0fbe76bf1a140780ea578f17e03b84edec1c5da8..e747527ba4757d49d7ef0633679e22c8eb0c5234 100644
--- a/src/Mods/SecExp/buildings/secBarracks.tw
+++ b/src/Mods/SecExp/buildings/secBarracks.tw
@@ -1,12 +1,9 @@
 :: secBarracks [nobr jump-to-safe jump-from-safe]
 
-<<set $nextButton = "Back">>
-<<set $nextLink = "Main">>
+<<set $nextButton = "Back", $nextLink = "Main">>
 
 The Barracks
-<hr>
-__Upgrades__
-<br>
+<hr>__Upgrades__<br>
 While this a sore sight for many citizens of $arcologies[0].name, the barracks stand proud before you.
 <<if $SecExp.buildings.barracks.upgrades.size == 0>>
 	The building is relatively small and able to house a limited number of units.
@@ -46,8 +43,7 @@ While this a sore sight for many citizens of $arcologies[0].name, the barracks s
 <<else>>
 	The barracks have been fitted with an advanced indoctrination facility.
 <</if>>
-<br>
-<br>
+<br><br>
 <<if $SecExp.buildings.barracks.upgrades.size < 5>>
 	<<link "Increase the size of the barracks" "secBarracks">>
 		<<run cashX(forceNeg(Math.trunc((5000 * ($SecExp.buildings.barracks.upgrades.size + 1))*$upgradeMultiplierArcology)), "capEx")>>
@@ -118,9 +114,7 @@ While this a sore sight for many citizens of $arcologies[0].name, the barracks s
 	You have improved the indoctrination facility to the limit.
 <</if>>
 
-<hr>
-__Units__
-<br>
+<hr>__Units__<br>
 Your current maximum number of units is <<print App.SecExp.battle.maxUnits()>> (<<print num($secBots.maxTroops+(50*App.SecExp.battle.maxUnits()))>> troops), <<print App.SecExp.battle.activeUnits()>> (<<print num($secBots.maxTroops+App.SecExp.Manpower.employedOverall)>> troops) are active and <<print (2 * App.SecExp.battle.deploySpeed())>> units can be deployed. <<if $SecExp.buildings.barracks.upgrades.luxury > 0>>The barracks provides <<print $SecExp.buildings.barracks.upgrades.luxury * 5>>% bonus morale when battle occurs.<</if>> <<if $SecExp.buildings.barracks.upgrades.training > 0>>The training facility will increase the effectiveness of your units with time.<</if>>
 <br>
 <<set _options = new App.UI.OptionsGroup()>>
@@ -132,349 +126,312 @@ Your current maximum number of units is <<print App.SecExp.battle.maxUnits()>> (
 <</if>>
 <<if $arcologies[0].FSRomanRevivalist != "unset" || $arcologies[0].FSChineseRevivalist != "unset" || $arcologies[0].FSArabianRevivalist != "unset" || $arcologies[0].FSEdoRevivalist != "unset" || $arcologies[0].FSEgyptianRevivalist != "unset" || $arcologies[0].FSAztecRevivalist != "unset">>
 <</if>>
-<br>
-<<replenishAllUnits>>
 
-<br>__Security Drones__
-/* drones */
-<br>
+<<replenishAllUnits>>
 
-<<if $arcologyUpgrade.drones == 1>>
-	<<= App.SecExp.getUnit("Bots").describe()>>
-	<br>
-	<<if $secBots.active == 1>>
-		<<link "Review Equipment and upgrades" "seeUnit">>
-			<<set $targetUnit = "secBots">>
-		<</link>>
-		<<if $secBots.troops < $secBots.maxTroops>>
-			|
-			<<link "Replenish the unit" "secBarracks">>
-				<<run cashX(forceNeg(($secBots.maxTroops - $secBots.troops) * $secBotsCost), "securityExpansion")>>
-				<<set $secBots.troops = $secBots.maxTroops>>
-			<</link>>
-		<</if>>
-	<<else>>
-		<<link "Rebuild the unit" "secBarracks">>
-			<<run cashX(forceNeg(($secBots.maxTroops - $secBots.troops) * $secBotsCost), "securityExpansion")>>
-			<<set $secBots.troops = $secBots.maxTroops>>
-			<<set $secBots.active = 1>>
-		<</link>>
-	<</if>>
-<<else>>
+<<if $arcologyUpgrade.drones === 0>>
 	You have not yet installed a drone security system in your arcology, you will not be able to form a unit of drones.
 <</if>>
-
-<br><br>__Slaves__
-<br>/* slaves */
-You are free to organize your menial slaves into fighting units. Currently you have <<print num($menials)>> slaves available, while <<print num(App.SecExp.Manpower.employedSlave)>> are already employed as soldiers. During all your battles you lost a total of <<print num($slavesTotalCasualties)>>.
-<<run MenialPopCap()>>
-<<set _menialPrice = menialSlaveCost()>>
-<<set _bulkMax = $PopCap-$menials-$fuckdolls-$menialBioreactors>>
-<<if $cash > _menialPrice>>
-	<<if _bulkMax > 0>>
-		<br>
-		[[Buy|secBarracks][$menials+=1,$menialSupplyFactor-=1,cashX(forceNeg(_menialPrice), "menialTransfer")]]
-		<<if $cash > (menialSlaveCost(10))*10>>
-			[[(x10)|secBarracks][$menials+=10,$menialSupplyFactor-=10,cashX(forceNeg((menialSlaveCost(10))*10), "menialTransfer")]]
-		<</if>>
-		<<if $cash > (menialSlaveCost(100))*100>>
-			[[(x100)|secBarracks][$menials+=100,$menialSupplyFactor-=100,cashX(forceNeg((menialSlaveCost(100))*100), "menialTransfer")]]
-		<</if>>
-		<<if $cash > (_menialPrice+1)*2>>
-			<<set _menialBulkPremium = Math.trunc(1 + Math.clamp($cash/_menialPrice,0,_bulkMax)/400)>>
-			[[(max)|secBarracks][$menials+=Math.trunc(Math.clamp($cash/(_menialPrice+_menialBulkPremium),0,_bulkMax)),$menialSupplyFactor-=Math.trunc(Math.clamp($cash/(_menialPrice+_menialBulkPremium),0,_bulkMax)),cashX(forceNeg(Math.trunc(Math.clamp($cash/(_menialPrice+_menialBulkPremium),0,_bulkMax)*(_menialPrice+_menialBulkPremium))), "menialTransfer")]]
-		<</if>>
-		//Bulk transactions may require offering a premium.//
-	<</if>>
+<<if $militiaFounded === 0>>
+	<br>You have not yet founded the militia, you will not be able to form citizens units.
 <</if>>
-<br>
-<<set _sL = $slaveUnits.length>>
-<<if $menials > 0 && App.SecExp.battle.activeUnits() < App.SecExp.battle.maxUnits()>>
-	<br>
-	<<link "Form a new unit" "secBarracks">>
-		<<set _newUnit = {
-			ID: App.SecExp.generateUnitID(),
-			platoonName: ordinalSuffix(++$createdSlavesUnits) + " slave platoon",
-			active: 1,
-			isDeployed: 0,
-			troops: Math.min($maxTroops, $menials),
-			maxTroops: $maxTroops,
-			equip: 0,
-			training: 0,
-			loyalty: random(40,60),
-			cyber: 0,
-			medics: 0,
-			SF: 0,
-			commissars: 0,
-			battlesFought: 0}>>
-		<<set $slaveUnits.push(_newUnit)>>
-		<<set $menials -= _newUnit.troops>>
-	<</link>>
+<<if $mercenaries === 0>>
+	<br>Mercenaries are not allowed inside the arcology. You will not be able to recruit mercenary units.
 <</if>>
-<<for _i = 0; _i < _sL; _i++>>
-	<<capture _i>>
-	<<= App.SecExp.getUnit("Slaves", _i).describe()>>
-	<<if $slaveUnits[_i].active == 1>>
-		<br>
-		<<link "Disband the unit" "secBarracks">>
-			<<set $menials += $slaveUnits[_i].troops>>
-			<<set $slaveUnits.deleteAt(_i)>>
-		<</link>>
-		|
-		<<link "Review Equipment and upgrades" "seeUnit">>
-			<<set $targetUnit = "slaveUnits">>
-			<<set $targetIndex = _i>>
-		<</link>>
-
-		<<if $slaveUnits[_i].troops < $slaveUnits[_i].maxTroops && $menials > 0>>
-			|
-			<<link "Replenish unit" "secBarracks">>
-				<<if $menials >= $slaveUnits[_i].maxTroops - $slaveUnits[_i].troops>>
-					<<set $menials -= $slaveUnits[_i].maxTroops - $slaveUnits[_i].troops>>
-					<<set _expLoss = ($slaveUnits[_i].maxTroops - $slaveUnits[_i].troops) / $slaveUnits[_i].troops>>
-					<<set $slaveUnits[_i].training -= $slaveUnits[_i].training * _expLoss>>
-					<<set $slaveUnits[_i].troops = $slaveUnits[_i].maxTroops>>
-				<<else>>
-					<<set _expLoss = $menials / $slaveUnits[_i].troops>>
-					<<set $slaveUnits[_i].training -= $slaveUnits[_i].training * _expLoss>>
-					<<set $slaveUnits[_i].troops += $menials>>
-					<<set $menials = 0>>
-				<</if>>
-			<</link>>
-		<</if>>
-
-	<<else>>
-		<br>
-		<<link "Disband the unit" "secBarracks">>
-			<<set _elimUnit = $slaveUnits[_i]>>
-			<<set _newSlaveUnits = []>>
-			<<for _y = 0; _y < _sL; _y++>>
-				<<if $slaveUnits[_y] != _elimUnit>>
-					<<set _newSlaveUnits.push($slaveUnits[_y])>>
-				<</if>>
-			<</for>>
-			<<set $slaveUnits = _newSlaveUnits>>
-		<</link>>
-
-		<<if $menials > 0>>
-			|
-			<<link "Reform the unit" "secBarracks">>
-				<<if $menials >= $slaveUnits[_i].maxTroops>>
-					<<set $menials -= $slaveUnits[_i].maxTroops>>
-					<<set $slaveUnits[_i].troops = $slaveUnits[_i].maxTroops>>
-					<<set $slaveUnits[_i].training = 0>>
-				<<else>>
-					<<set $slaveUnits[_i].troops += $menials>>
-					<<set $menials = 0>>
-					<<set $slaveUnits[_i].training = 0>>
-				<</if>>
-				<<set $slaveUnits[_i].active = 1>>
-			<</link>>
-		<</if>>
+<div class="tabbar">
+	<<if $arcologyUpgrade.drones == 1>>
+		<button class="tablinks" onclick="App.UI.tabbar.openTab(event, 'Bots')" id="tab Bots">Security Drones</button>
 	<</if>>
-	<</capture>>
-<</for>>
-
-<<if $militiaFounded == 1>>
-<br>
-__Militia__
-<br>/* militia */
-	You founded the $arcologies[0].name free militia. You are now able to organize your citizens into fighting units.
-	<<if $recruitVolunteers == 1>>
-		The militia is composed entirely of volunteers, your manpower is approximately 1.5% of the citizens population of your arcology.
-	<<elseif $conscription == 1>>
-		With the establishment of conscription, your available manpower has increased to now approximately 3% of the arcology's citizens population.
-	<<elseif $militaryService == 1>>
-		By establishing obligatory military service to obtain citizenship you have enlarged your manpower pool to be approximately 5% of the arcology's citizens population.
-	<<elseif $militarizedSociety == 1>>
-		With the adoption of a militarized society, your available manpower has swelled to be approximately 15% of the arcology's citizens population.
+	<<if $militiaFounded == 1>>
+		<button class="tablinks" onclick="App.UI.tabbar.openTab(event, 'Militia')" id="tab Militia">Militia: ($militiaUnits.length)</button>
 	<</if>>
-	Your current total manpower is <<print num(App.SecExp.Manpower.totalMilitia)>>, of which <<print num(App.SecExp.Manpower.employedMilitia)>> is in active duty. You lost in total <<print num($militiaTotalCasualties)>> citizens, leaving you with <<print num($militiaFreeManpower)>> available citizens.
-	<<set _mL = $militiaUnits.length>>
-	<<if $militiaFreeManpower > 0 && App.SecExp.battle.activeUnits() < App.SecExp.battle.maxUnits()>>
-		<br><br>
-		<<link "Form a new unit" "secBarracks">>
-			<<set _newUnit = {
-				ID: App.SecExp.generateUnitID(),
-				platoonName: ordinalSuffix(++$createdMilitiaUnits) + " citizens' platoon",
-				active: 1,
-				isDeployed: 0,
-				troops: Math.min($maxTroops, $militiaFreeManpower),
-				maxTroops: $maxTroops,
-				equip: 0,
-				training: 0,
-				loyalty: random(40,60),
-				cyber: 0,
-				medics: 0,
-				SF: 0,
-				commissars: 0,
-				battlesFought: 0}>>
-			<<set $militiaUnits.push(_newUnit)>>
-			<<set $militiaFreeManpower -= _newUnit.troops>>
-		<</link>>
+	<<if $mercenaries >= 1>>
+		<button class="tablinks" onclick="App.UI.tabbar.openTab(event, 'Mercs')" id="tab Mercs">Mercenaries: ($mercUnits.length)</button>
 	<</if>>
-	<<for _i = 0; _i < _mL; _i++>>
-		<<capture _i>>
-		<<= App.SecExp.getUnit("Militia", _i).describe()>>
-		<<if $militiaUnits[_i].active == 1>>
+	<button class="tablinks" onclick="App.UI.tabbar.openTab(event, 'Slaves')" id="tab Slaves">Slaves: ($slaveUnits.length)</button>
+</div>
+<<run App.UI.tabbar.handlePreSelectedTab($tabChoice.secBarracks)>>
+<div id="Bots" class="tabcontent">
+	<div class="content">
+		<<set _secBotsCost = 500, _secBotsUpgradeCost = 250>>
+		<<= App.SecExp.getUnit("Bots").describe()>> <br>
+		<<if $secBots.active == 1>>
+			<<if $secBots.maxTroops > $secBots.troops>> <br>
+				<<link "Replenish the unit" "seeUnit">>
+					<<run cashX(forceNeg(($secBots.maxTroops - $secBots.troops) * _secBotsCost), "securityExpansion")>>
+					<<set $secBots.troops = $secBots.maxTroops>>
+				<</link>>
+			<</if>>
 			<br>
-			<<link "Disband the unit" "secBarracks">>
-				<<set $militiaFreeManpower += $militiaUnits[_i].troops>>
-				<<set $militiaUnits.deleteAt(_i)>>
-			<</link>>
-			|
-			<<link "Review Equipment and upgrades" "seeUnit">>
-				<<set $targetUnit = "militiaUnits">>
-				<<set $targetIndex = _i>>
-			<</link>>
-
-			<<if $militiaUnits[_i].troops < $militiaUnits[_i].maxTroops && $militiaFreeManpower > 0>>
+			<<if $secBots.maxTroops < 80>> <br>
+				<<link "Improve the digital control matrix" "seeUnit">>
+					<<set $secBots.maxTroops += 10>>
+					<<run cashX(-5000, "securityExpansion")>>
+				<</link>>
+				Invest in the development of more refined controls for your drones to increase the maximum number of drones in the unit.
+				<br>//Costs <<print cashFormat(5000)>> per upgrade and each will increase the max by 10//
+			<<elseif $SF.Toggle && $SF.Active >= 1 && $secBots.maxTroops < 100 && $SecExp.edicts.SFSupportLevel >= 1>> <br>
+				<<link "Refine the drone network with $SF.Lower assistance" "seeUnit">>
+				<<set $secBots.maxTroops += 10>>
+					<<run cashX(forceNeg(5000 + 10 * _secBotsUpgradeCost * $secBots.equip), "securityExpansion")>>
+				<</link>>
+				Utilize the technological developments made by $SF.Lower to further improve the control matrix of the security drones.
+				<br>//Costs <<print cashFormat(5000 + 10 * _secBotsUpgradeCost * $secBots.equip)>> and will increase the max by 10//
+			<<elseif $SF.Toggle && $SF.Active >= 1 && $SecExp.edicts.SFSupportLevel < 1>>
+				There's little left to improve in the matrix. However support from $SF.Lower might give some more room from improvement.
+			<<else>>
+				There's little left to improve in the matrix. Your control systems are at top capacity and won't be able to handle a bigger drone unit.
+			<</if>>
+			<<if $secBots.equip < 3>> <br>
+				<<link "Improve drone weaponry and armor" "seeUnit">>
+					<<set $secBots.equip += 1>>
+					<<run cashX(forceNeg((_secBotsUpgradeCost * $secBots.maxTroops) + 1000), "securityExpansion")>>
+				<</link>>
+				Invest in better equipment for your drones to increase their battle effectiveness.
+				<br>//Costs <<print cashFormat((_secBotsUpgradeCost * $secBots.maxTroops) + 1000)>> and will increase attack and defense value of the unit by 15% for every upgrade.//
+			<<else>>
+				<br>Your drones are equipped with top tier weaponry and armor.
+			<</if>>
+			<<if $SecExp.settings.showStats == 1>>
+				<br><<= _App.SecExp.getUnit("Bots").printStats()>>
+			<</if>>
+			<<if $secBots.troops < $secBots.maxTroops>>
 				|
-				<<link "Replenish unit" "secBarracks">>
-					<<if $militiaFreeManpower >= $militiaUnits[_i].maxTroops - $militiaUnits[_i].troops>>
-						<<set $militiaFreeManpower -= $militiaUnits[_i].maxTroops - $militiaUnits[_i].troops>>
-						<<set _expLoss = ($militiaUnits[_i].maxTroops - $militiaUnits[_i].troops) / $militiaUnits[_i].troops>>
-						<<set $militiaUnits[_i].training -= $militiaUnits[_i].training * _expLoss>>
-						<<set $militiaUnits[_i].troops = $militiaUnits[_i].maxTroops>>
-					<<else>>
-						<<set _expLoss = $militiaFreeManpower / $militiaUnits[_i].troops>>
-						<<set $militiaUnits[_i].training -= $militiaUnits[_i].training * _expLoss>>
-						<<set $militiaUnits[_i].troops += $militiaFreeManpower>>
-						<<set $militiaFreeManpower = 0>>
-					<</if>>
+				<<link "Replenish the unit" "secBarracks">>
+					<<run cashX(forceNeg(($secBots.maxTroops - $secBots.troops) * _secBotsCost), "securityExpansion")>>
+					<<set $secBots.troops = $secBots.maxTroops>>
 				<</link>>
 			<</if>>
 		<<else>>
-			<br>
-			<<link "Disband the unit" "secBarracks">>
-				<<set $militiaFreeManpower += $militiaUnits[_i].troops>>
-				<<set _elimUnit = $militiaUnits[_i]>>
-				<<set _newMilitiaUnits = []>>
-				<<for _y = 0; _y < _sL; _y++>>
-					<<if $militiaUnits[_y] != _elimUnit>>
-						<<set _newMilitiaUnits.push($militiaUnits[_y])>>
-					<</if>>
-				<</for>>
-				<<set $militiaUnits = _newMilitiaUnits>>
+			<<link "Rebuild the unit" "secBarracks">>
+				<<run cashX(forceNeg(($secBots.maxTroops - $secBots.troops) * _secBotsCost), "securityExpansion")>>
+				<<set $secBots.troops = $secBots.maxTroops>>
+				<<set $secBots.active = 1>>
 			<</link>>
-
-			<<if $militiaFreeManpower > 0>>
-				|
-				<<link "Reform the unit" "secBarracks">>
-					<<if $militiaFreeManpower >= $militiaUnits[_i].maxTroops>>
-						<<set $militiaFreeManpower -= $militiaUnits[_i].maxTroops>>
-						<<set $militiaUnits[_i].troops = $militiaUnits[_i].maxTroops>>
-						<<set $militiaUnits[_i].training = 0>>
-					<<else>>
-						<<set $militiaUnits[_i].troops += $militiaFreeManpower>>
-						<<set $militiaFreeManpower = 0>>
-						<<set $militiaUnits[_i].training = 0>>
-					<</if>>
-					<<set $militiaUnits[_i].active = 1>>
-				<</link>>
+		<</if>>
+	</div>
+</div>
+<div id="Slaves" class="tabcontent">
+	<div class="content">
+		You are free to organize your menial slaves into fighting units. Currently you have <<print num($menials)>> slaves available, while <<print num(App.SecExp.Manpower.employedSlave)>> are already employed as soldiers. During all your battles you lost a total of <<print num($slavesTotalCasualties)>>.
+		<<if $menials > 0 && App.SecExp.battle.activeUnits() < App.SecExp.battle.maxUnits()>> 
+			<<link "Form a new unit" "secBarracks">>
+				<<set $slaveUnits.push(App.SecExp.generateUnit("slaves"))>>
+			<</link>>
+		<</if>>
+		<<run MenialPopCap()>>
+		<<set _menialPrice = menialSlaveCost()>>
+		<<set _bulkMax = $PopCap-$menials-$fuckdolls-$menialBioreactors>>
+		<<if $cash > _menialPrice>>
+			<<if _bulkMax > 0>> <br>
+				[[Buy|secBarracks][$menials+=1,$menialSupplyFactor-=1,cashX(forceNeg(_menialPrice), "menialTransfer")]]
+				<<if $cash > (menialSlaveCost(10))*10>>
+					[[(x10)|secBarracks][$menials+=10,$menialSupplyFactor-=10,cashX(forceNeg((menialSlaveCost(10))*10), "menialTransfer")]]
+				<</if>>
+				<<if $cash > (menialSlaveCost(100))*100>>
+					[[(x100)|secBarracks][$menials+=100,$menialSupplyFactor-=100,cashX(forceNeg((menialSlaveCost(100))*100), "menialTransfer")]]
+				<</if>>
+				<<if $cash > (_menialPrice+1)*2>>
+					<<set _menialBulkPremium = Math.trunc(1 + Math.clamp($cash/_menialPrice,0,_bulkMax)/400)>>
+					[[(max)|secBarracks][$menials+=Math.trunc(Math.clamp($cash/(_menialPrice+_menialBulkPremium),0,_bulkMax)),$menialSupplyFactor-=Math.trunc(Math.clamp($cash/(_menialPrice+_menialBulkPremium),0,_bulkMax)),cashX(forceNeg(Math.trunc(Math.clamp($cash/(_menialPrice+_menialBulkPremium),0,_bulkMax)*(_menialPrice+_menialBulkPremium))), "menialTransfer")]]
+				<</if>>
+				//Bulk transactions may require offering a premium.//
 			<</if>>
 		<</if>>
-		<</capture>>
-	<</for>>
-	<br>
-<<else>>
-	<br><br>
-	You have not yet founded the militia, you will not be able to form citizens units.
-<</if>>
-
-<<if $mercenaries >= 1>>
-<br>
-__Mercenaries__
-<br>/* mercenaries */
-	With the installation of a mercenary company in the arcology, many other are attracted to your free city, hoping to land a contract with you.
-	You are able to organize them in units to use in the defense of the arcology. Excluding the defense force you set up, there are <<print num(App.SecExp.Manpower.totalMerc)>> mercenaries in your arcology, of which <<print num(App.SecExp.Manpower.employedMerc)>> actively employed and <<print num($mercFreeManpower)>> not yet under contract. In total <<print num($mercTotalCasualties)>> mercenaries have died defending your arcology.
-	<<set _meL = $mercUnits.length>>
-	<<if $mercFreeManpower > 0 && App.SecExp.battle.activeUnits() < App.SecExp.battle.maxUnits()>>
-		<br><br>
-		<<link "Form a new unit" "secBarracks">>
-			<<set _newUnit = {
-				ID: App.SecExp.generateUnitID(),
-				platoonName: ordinalSuffix(++$createdMercUnits) + " mercenary platoon",
-				active: 1,
-				isDeployed: 0,
-				troops: Math.min($maxTroops, $mercFreeManpower),
-				maxTroops: $maxTroops,
-				equip: 0,
-				training: 0,
-				loyalty: random(40,60),
-				cyber: 0,
-				medics: 0,
-				SF: 0,
-				commissars: 0,
-				battlesFought: 0}>>
-			<<set $mercUnits.push(_newUnit)>>
-			<<set $mercFreeManpower -= _newUnit.troops>>
-		<</link>>
-	<</if>>
-	<<for _i = 0; _i < _meL; _i++>>
-		<<capture _i>>
-		<<= App.SecExp.getUnit("Mercs", _i).describe()>>
-		<<if $mercUnits[_i].active == 1>>
-			<br>
-			<<link "Disband the unit" "secBarracks">>
-				<<set $mercFreeManpower += $mercUnits[_i].troops>>
-				<<set $mercUnits.deleteAt(_i)>>
+		<<set _sL = $slaveUnits.length>>
+		<<for _i = 0; _i < _sL; _i++>>
+			<<capture _i>>
+			<<= App.SecExp.getUnit("Slaves", _i).describe()>> <br>
+			Rename unit <<textbox "$slaveUnits[_i].platoonName" $slaveUnits[_i].platoonName "secBarracks">>
+			 | <<link "Disband the unit" "secBarracks">>
+				<<set $menials += $slaveUnits[_i].troops>>
+				<<set $slaveUnits.deleteAt(_i)>>
 			<</link>>
-			|
-			<<link "Review Equipment and upgrades" "seeUnit">>
-				<<set $targetUnit = "mercUnits">>
-				<<set $targetIndex = _i>>
+			<<if $slaveUnits[_i].active == 1>>
+				<<if $slaveUnits[_i].troops < $slaveUnits[_i].maxTroops && $menials > 0>>
+					|
+					<<link "Replenish unit" "secBarracks">>
+						<<if $menials >= $slaveUnits[_i].maxTroops - $slaveUnits[_i].troops>>
+							<<set $menials -= $slaveUnits[_i].maxTroops - $slaveUnits[_i].troops>>
+							<<set _expLoss = ($slaveUnits[_i].maxTroops - $slaveUnits[_i].troops) / $slaveUnits[_i].troops>>
+							<<set $slaveUnits[_i].training -= $slaveUnits[_i].training * _expLoss>>
+							<<set $slaveUnits[_i].troops = $slaveUnits[_i].maxTroops>>
+						<<else>>
+							<<set _expLoss = $menials / $slaveUnits[_i].troops>>
+							<<set $slaveUnits[_i].training -= $slaveUnits[_i].training * _expLoss>>
+							<<set $slaveUnits[_i].troops += $menials>>
+							<<set $menials = 0>>
+						<</if>>
+					<</link>>
+				<</if>>
+				<<if $SecExp.settings.showStats == 1>>
+					<br><<= App.SecExp.getUnit("Slaves", _i).printStats()>>
+				<</if>>
+				<<includeDOM App.SecExp.humanUnitUpgradeList($slaveUnits[_i])>>
+			<<else>>
+				<<if $menials > 0>>
+					|
+					<<link "Reform the unit" "secBarracks">>
+						<<if $menials >= $slaveUnits[_i].maxTroops>>
+							<<set $menials -= $slaveUnits[_i].maxTroops>>
+							<<set $slaveUnits[_i].troops = $slaveUnits[_i].maxTroops>>
+							<<set $slaveUnits[_i].training = 0>>
+						<<else>>
+							<<set $slaveUnits[_i].troops += $menials>>
+							<<set $menials = 0>>
+							<<set $slaveUnits[_i].training = 0>>
+						<</if>>
+						<<set $slaveUnits[_i].active = 1>>
+					<</link>>
+				<</if>>
+			<</if>>
+			<</capture>>
+		<</for>>
+	</div>
+</div>
+<div id="Militia" class="tabcontent">
+	<div class="content">
+		You founded the $arcologies[0].name free militia. You are now able to organize your citizens into fighting units.
+		<<if $recruitVolunteers == 1>>
+			The militia is composed entirely of volunteers, your manpower is approximately 1.5% of the citizens population of your arcology.
+		<<elseif $conscription == 1>>
+			With the establishment of conscription, your available manpower has increased to now approximately 3% of the arcology's citizens population.
+		<<elseif $militaryService == 1>>
+			By establishing obligatory military service to obtain citizenship you have enlarged your manpower pool to be approximately 5% of the arcology's citizens population.
+		<<elseif $militarizedSociety == 1>>
+			With the adoption of a militarized society, your available manpower has swelled to be approximately 15% of the arcology's citizens population.
+		<</if>>
+		Your current total manpower is <<print num(App.SecExp.Manpower.totalMilitia)>>, of which <<print num(App.SecExp.Manpower.employedMilitia)>> is in active duty. You lost in total <<print num($militiaTotalCasualties)>> citizens, leaving you with <<print num($militiaFreeManpower)>> available citizens.
+		<<if $militiaFreeManpower > 0 && App.SecExp.battle.activeUnits() < App.SecExp.battle.maxUnits()>> <br><br>
+			<<link "Form a new unit" "secBarracks">>
+				<<set $militiaUnits.push(App.SecExp.generateUnit("militia"))>>
 			<</link>>
-
-			<<if $mercUnits[_i].troops < $mercUnits[_i].maxTroops && $mercFreeManpower > 0>>
-				|
-				<<link "Replenish unit" "secBarracks">>
-					<<if $mercFreeManpower >= $mercUnits[_i].maxTroops - $mercUnits[_i].troops>>
-						<<set $mercFreeManpower -= $mercUnits[_i].maxTroops - $mercUnits[_i].troops>>
-						<<set _expLoss = ($mercUnits[_i].maxTroops - $mercUnits[_i].troops) / $mercUnits[_i].troops>>
-						<<set $mercUnits[_i].training -= $mercUnits[_i].training * _expLoss>>
-						<<set $mercUnits[_i].troops = $mercUnits[_i].maxTroops>>
-					<<else>>
-						<<set _expLoss = $mercFreeManpower / $mercUnits[_i].troops>>
-						<<set $mercUnits[_i].training -= $mercUnits[_i].training * _expLoss>>
-						<<set $mercUnits[_i].troops += $mercFreeManpower>>
-						<<set $mercFreeManpower = 0>>
-					<</if>>
-				<</link>>
+		<</if>>
+		<<set _mL = $militiaUnits.length>>
+		<<for _i = 0; _i < _mL; _i++>>
+			<<capture _i>>
+			<<= App.SecExp.getUnit("Militia", _i).describe()>> <br>
+			Rename unit <<textbox "$militiaUnits[_i].platoonName" $militiaUnits[_i].platoonName "secBarracks">>
+			 | <<link "Disband the unit" "secBarracks">>
+				<<set $militiaFreeManpower += $militiaUnits[_i].troops>>
+				<<set $militiaUnits.deleteAt(_i)>>
+			<</link>>
+			<<if $militiaUnits[_i].active == 1>>
+				<<if $militiaUnits[_i].troops < $militiaUnits[_i].maxTroops && $militiaFreeManpower > 0>>
+					|
+					<<link "Replenish unit" "secBarracks">>
+						<<if $militiaFreeManpower >= $militiaUnits[_i].maxTroops - $militiaUnits[_i].troops>>
+							<<set $militiaFreeManpower -= $militiaUnits[_i].maxTroops - $militiaUnits[_i].troops>>
+							<<set _expLoss = ($militiaUnits[_i].maxTroops - $militiaUnits[_i].troops) / $militiaUnits[_i].troops>>
+							<<set $militiaUnits[_i].training -= $militiaUnits[_i].training * _expLoss>>
+							<<set $militiaUnits[_i].troops = $militiaUnits[_i].maxTroops>>
+						<<else>>
+							<<set _expLoss = $militiaFreeManpower / $militiaUnits[_i].troops>>
+							<<set $militiaUnits[_i].training -= $militiaUnits[_i].training * _expLoss>>
+							<<set $militiaUnits[_i].troops += $militiaFreeManpower>>
+							<<set $militiaFreeManpower = 0>>
+						<</if>>
+					<</link>>
+				<</if>>
+				<<if $SecExp.settings.showStats == 1>>
+					<br><<= App.SecExp.getUnit("Militia", _i).printStats()>>
+				<</if>>
+				<<includeDOM App.SecExp.humanUnitUpgradeList($militiaUnits[_i])>>
+			<<else>>
+				<<if $militiaFreeManpower > 0>>
+					|
+					<<link "Reform the unit" "secBarracks">>
+						<<if $militiaFreeManpower >= $militiaUnits[_i].maxTroops>>
+							<<set $militiaFreeManpower -= $militiaUnits[_i].maxTroops>>
+							<<set $militiaUnits[_i].troops = $militiaUnits[_i].maxTroops>>
+							<<set $militiaUnits[_i].training = 0>>
+						<<else>>
+							<<set $militiaUnits[_i].troops += $militiaFreeManpower>>
+							<<set $militiaFreeManpower = 0>>
+							<<set $militiaUnits[_i].training = 0>>
+						<</if>>
+						<<set $militiaUnits[_i].active = 1>>
+					<</link>>
+				<</if>>
 			<</if>>
-
-		<<else>>
-			<br>
-			<<link "Disband the unit" "secBarracks">>
-				<<set _elimUnit = $mercUnits[_i]>>
-				<<set _newMercUnits = []>>
-				<<for _y = 0; _y < _sL; _y++>>
-					<<if $mercUnits[_y] != _elimUnit>>
-						<<set _newMercUnits.push($mercUnits[_y])>>
-					<</if>>
-				<</for>>
-				<<set $mercUnits = _newMercUnits>>
+			<</capture>>
+		<</for>>
+	</div>
+</div>
+<div id="Mercs" class="tabcontent">
+	<div class="content">
+		With the installation of a mercenary company in the arcology, many other are attracted to your free city, hoping to land a contract with you.
+		You are able to organize them in units to use in the defense of the arcology. Excluding the defense force you set up, there are <<print num(App.SecExp.Manpower.totalMerc)>> mercenaries in your arcology, of which <<print num(App.SecExp.Manpower.employedMerc)>> actively employed and <<print num($mercFreeManpower)>> not yet under contract. In total <<print num($mercTotalCasualties)>> mercenaries have died defending your arcology.
+		<<if $mercFreeManpower > 0 && App.SecExp.battle.activeUnits() < App.SecExp.battle.maxUnits()>> <br><br>
+			<<link "Form a new unit" "secBarracks">>
+				<<set $mercUnits.push(App.SecExp.generateUnit("mercs"))>>
 			<</link>>
+		<</if>>
+		<<set _meL = $mercUnits.length>>
+		<<for _i = 0; _i < _meL; _i++>>
+			<<capture _i>>
+			<<= App.SecExp.getUnit("Mercs", _i).describe()>> <br>
+			Rename unit <<textbox "$mercUnits[_i].platoonName" $mercUnits[_i].platoonName "secBarracks">>
+			 | <<link "Disband the unit" "secBarracks">>
+				<<set $mercFreeManpower += $mercUnits[_i].troops>>
+				<<set $mercUnits.deleteAt(_i)>>
+			<</link>>
+			<<if $mercUnits[_i].active == 1>>
+				<<if $mercUnits[_i].troops < $mercUnits[_i].maxTroops && $mercFreeManpower > 0>>
+					|
+					<<link "Replenish unit" "secBarracks">>
+						<<if $mercFreeManpower >= $mercUnits[_i].maxTroops - $mercUnits[_i].troops>>
+							<<set $mercFreeManpower -= $mercUnits[_i].maxTroops - $mercUnits[_i].troops>>
+							<<set _expLoss = ($mercUnits[_i].maxTroops - $mercUnits[_i].troops) / $mercUnits[_i].troops>>
+							<<set $mercUnits[_i].training -= $mercUnits[_i].training * _expLoss>>
+							<<set $mercUnits[_i].troops = $mercUnits[_i].maxTroops>>
+						<<else>>
+							<<set _expLoss = $mercFreeManpower / $mercUnits[_i].troops>>
+							<<set $mercUnits[_i].training -= $mercUnits[_i].training * _expLoss>>
+							<<set $mercUnits[_i].troops += $mercFreeManpower>>
+							<<set $mercFreeManpower = 0>>
+						<</if>>
+					<</link>>
+				<</if>>
+				<<if $SecExp.settings.showStats == 1>>
+					<br><<= App.SecExp.getUnit("Mercs", _i).printStats()>>
+				<</if>>
+				<<includeDOM App.SecExp.humanUnitUpgradeList($mercUnits[_i])>>
 
-			<<if $mercFreeManpower > 0>>
-				|
-				<<link "Reform the unit" "secBarracks">>
-					<<if $mercFreeManpower >= $mercUnits[_i].maxTroops>>
-						<<set $mercFreeManpower -= $mercUnits[_i].maxTroops>>
-						<<set $mercUnits[_i].troops = $mercUnits[_i].maxTroops>>
-						<<set $mercUnits[_i].training = 0>>
-					<<else>>
-						<<set $mercUnits[_i].troops += $mercFreeManpower>>
-						<<set $mercFreeManpower = 0>>
-						<<set $mercUnits[_i].training = 0>>
-					<</if>>
-					<<set $mercUnits[_i].active = 1>>
-				<</link>>
+				<<if $mercUnits[_i].troops < $mercUnits[_i].maxTroops && $mercFreeManpower > 0>>
+					|
+					<<link "Replenish unit" "secBarracks">>
+						<<if $mercFreeManpower >= $mercUnits[_i].maxTroops - $mercUnits[_i].troops>>
+							<<set $mercFreeManpower -= $mercUnits[_i].maxTroops - $mercUnits[_i].troops>>
+							<<set _expLoss = ($mercUnits[_i].maxTroops - $mercUnits[_i].troops) / $mercUnits[_i].troops>>
+							<<set $mercUnits[_i].training -= $mercUnits[_i].training * _expLoss>>
+							<<set $mercUnits[_i].troops = $mercUnits[_i].maxTroops>>
+						<<else>>
+							<<set _expLoss = $mercFreeManpower / $mercUnits[_i].troops>>
+							<<set $mercUnits[_i].training -= $mercUnits[_i].training * _expLoss>>
+							<<set $mercUnits[_i].troops += $mercFreeManpower>>
+							<<set $mercFreeManpower = 0>>
+						<</if>>
+					<</link>>
+				<</if>>
+			<<else>>
+				<<if $mercFreeManpower > 0>>
+					|
+					<<link "Reform the unit" "secBarracks">>
+						<<if $mercFreeManpower >= $mercUnits[_i].maxTroops>>
+							<<set $mercFreeManpower -= $mercUnits[_i].maxTroops>>
+							<<set $mercUnits[_i].troops = $mercUnits[_i].maxTroops>>
+							<<set $mercUnits[_i].training = 0>>
+						<<else>>
+							<<set $mercUnits[_i].troops += $mercFreeManpower>>
+							<<set $mercFreeManpower = 0>>
+							<<set $mercUnits[_i].training = 0>>
+						<</if>>
+						<<set $mercUnits[_i].active = 1>>
+					<</link>>
+				<</if>>
 			<</if>>
-		<</if>>
-		<</capture>>
-	<</for>>
-<<else>>
-	<br><br>
-	Mercenaries are not allowed inside the arcology. You will not be able to recruit mercenary units.
-<</if>>
\ No newline at end of file
+			<</capture>>
+		<</for>>
+	</div>
+</div>
\ No newline at end of file
diff --git a/src/Mods/SecExp/js/Unit.js b/src/Mods/SecExp/js/Unit.js
index 2eedd7203ea99d7c5725ce05430f8a3ffd83fabb..b1c34c32b2b97e243ce43b87f375d2ec81052074 100644
--- a/src/Mods/SecExp/js/Unit.js
+++ b/src/Mods/SecExp/js/Unit.js
@@ -1,3 +1,149 @@
+/** Creates the requested unit object.
+ * @param {string} [type] the unit type to be created.
+*/
+App.SecExp.generateUnit = function(type) {
+	let newUnit = {ID: -1, equip: 0, active: 1, isDeployed: 0, maxTroops:30,  troops: 30};
+	if (type !== "bots") {
+		Object.assign(newUnit, {
+			training: 0, cyber: 0, medics: 0,
+			SF: 0, commissars: 0, battlesFought: 0,
+			loyalty: jsRandom(40, 60), 
+			ID: App.SecExp.generateUnitID()
+		});
+		
+		if (type === "slaves") {
+			newUnit.platoonName = ordinalSuffix(++V.createdSlavesUnits) + " slave platoon";
+			newUnit.troops = Math.min(newUnit.maxTroops, V.menials);
+			V.menials -= newUnit.troops;
+		} else if (type === "militia") {
+			newUnit.platoonName = ordinalSuffix(++V.createdMilitiaUnits) + " citizens' platoon";
+			newUnit.troops = Math.min(newUnit.maxTroops, V.militiaFreeManpower);
+			V.militiaFreeManpower -= newUnit.troops;
+		} else if (type === "mercs") {
+			newUnit.platoonName = ordinalSuffix(++V.createdMercUnits) + " mercenary platoon";
+			newUnit.troops = Math.min(newUnit.maxTroops, V.mercFreeManpower);	
+			V.mercFreeManpower -= newUnit.troops;
+		}
+	}
+	return newUnit;
+};
+
+/** Prints a list of upgrades that can be applied to the passed human unit.
+ * @param {object} [input] the human unit to be checked.
+*/
+App.SecExp.humanUnitUpgradeList = function(input) {
+	const equipUpgradeCost = 250; let options, el = options = document.createElement("div");
+	
+	options = document.createElement("div");
+	if (input.maxTroops < 50) {
+		options.append(`For ${cashFormat(5000 + 10 * equipUpgradeCost * (input.equip + input.commissars + input.cyber + input.SF))} provide this unit's `);
+		options.append(App.UI.DOM.link("officers with intensive training", () => {
+		input.maxTroops += 10,
+		cashX(-(5000 + 10 * equipUpgradeCost * (input.equip + input.commissars + input.cyber + input.SF)), "securityExpansion");
+		},
+		[], passage()
+		));
+		options.append(` to increase the maximum number of soldiers in the unit by 10.`);
+	} else {
+		options.append(`Your officers reached their peak. Further training will have little impact on the number of troops they can effectively lead.`);
+	}
+	el.append(options);
+	
+	options = document.createElement("div");
+	if (input.equip < 3) {
+		options.append(`For ${cashFormat(equipUpgradeCost * input.maxTroops + 1000)} invest in `);
+		options.append(App.UI.DOM.link("better equipment", () => {
+		input.equip++,
+		cashX(-(equipUpgradeCost * input.maxTroops + 1000), "securityExpansion");
+		},
+		[], passage()
+		));
+		options.append(` to increase this unit's attack and defense by 15% per investement.`);
+	} else {
+		options.append(`The unit is equipped with state of the art weaponry and equipment.`);
+	}
+	el.append(options);
+
+	options = document.createElement("div");
+	if (input.commissars === 0) {
+		options.append(`For ${cashFormat(equipUpgradeCost * input.maxTroops + 1000)} attach `);
+		options.append(App.UI.DOM.link("commissars", () => {
+		input.commissars++,
+		cashX(-(equipUpgradeCost * input.maxTroops + 1000), "securityExpansion");
+		},
+		[], passage()
+		));
+		options.append(` to slowly increase this unit's loyalty.`);
+	} else if (input.commissars < 2) {
+		options.append(`For ${cashFormat(equipUpgradeCost * input.maxTroops + 1000)} attach `);
+		options.append(App.UI.DOM.link("commissars", () => {
+		input.commissars++,
+		cashX(-(equipUpgradeCost * input.maxTroops + 1000), "securityExpansion");
+		},
+		[], passage()
+		));
+		options.append(` to slowly increase this unit's even loyalty.`);
+	}
+	if (input.commissars === 1) {
+		options.append("The unit has a commissar detachment, keeping under control the ambitions of the unit's officers.");
+	} else if (input.commissars === 2) {
+		options.append("The unit has a perfectly trained and loyal commissar detachment, keeping under control the ambitions of the unit's officers.");
+	}
+	el.append(options);
+
+	options = document.createElement("div");
+	if (V.prostheticsUpgrade >= 2 || V.researchLab.advCombatPLimb == 1) {
+		if (input.cyber === 0) {
+			options.append(`For ${cashFormat(equipUpgradeCost * input.maxTroops + 1000)} `);
+			options.append(App.UI.DOM.link("augment all soldiers of the unit", () => {
+			input.cyber++,
+			cashX(-(equipUpgradeCost * input.maxTroops + 2000), "securityExpansion");
+			},
+			[], passage()
+			));
+			options.append(` with high tech cyber enhancements that will increase attack, defense and base hp values.`);
+		} else {
+			options.append('The unit is equipped with advanced cybernetic enhancements.');
+		}
+	}
+	el.append(options);
+
+	options = document.createElement("div");
+	if (input.medics === 0) {
+		options.append(`For ${cashFormat(equipUpgradeCost * input.maxTroops + 1000)} `);
+		options.append(App.UI.DOM.link("attach trained medics to the unit", () => {
+		input.medics++,
+		cashX(-(equipUpgradeCost * input.maxTroops + 1000), "securityExpansion");
+		},
+		[], passage()
+		));
+		options.append(' which will decrease the number of casualties suffered during battle.');
+	} else {
+		options.append('The unit has a medic detachment following it into battle, decreasing the number of casualties the unit suffers');
+	}
+	el.append(options);
+
+	if (V.SF.Toggle && V.SF.Active >= 1) {
+		options = document.createElement("div");
+		
+		if (input.SF === 0) {
+			options.append(`For ${cashFormat(equipUpgradeCost * input.maxTroops + 5000)} `);
+			options.append(App.UI.DOM.link("attach Special Force advisors", () => {
+			input.SF++,
+			cashX(-(equipUpgradeCost * input.maxTroops + 5000), "securityExpansion");
+			},
+			[], passage()
+			));
+			options.append(' which will slightly increase the base stats of the unit.');
+		} else {
+			options.append('The unit has attached advisors from $SF.Lower that will help the squad remain tactically aware and active.');
+		}
+		el.append(options);
+	}
+
+	return el;
+};
+
 /** Generate a unit ID for a new unit
  * @returns {number}
  */
diff --git a/src/Mods/SecExp/potentialToDo.txt b/src/Mods/SecExp/potentialToDo.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f296e0340642562128b2a5585a1306d336a060e5
--- /dev/null
+++ b/src/Mods/SecExp/potentialToDo.txt
@@ -0,0 +1,40 @@
+Hexall90's last merged commit: 52dde0b3
+
+- My personal asst keeps getting the credit, even though I choose to personally lead my forces. (Has been this way for a fewish days): Military01.swf
+- Enable oceanic battles
+	Fine, I'll Do It Myself
+	Pirates? Enemy navies? - 328279
+	Pirates could raid trade routs and such ,even could capture a high class cruise liner and you have to move retake it with an army similar to the ground battles. you could have an event where you gain a old world port to ship your goods to , and you have to defend it .		-328413
+- How to make threads - 355452
+	A suggestion for prisoners of war after winning the battle: maybe add an option to execute them on the spot for authority gains?
+	And how about giving a chance (depending on the amount of captives) to actually make one or two of them that aren't as hateful or wounded as your sex slaves instead of just menials? Perhaps you may even turn (hypothetical) female captives into sex dolls or bioreactors too. It can be an optional button.
+	Also, maybe make some of them actually surrender so it will be possible to get captives even when you completely overwhelm their forces in numbers/efficiency?
+- How to make threads - 355478
+- One thing I find to be weird/stupid is that facilities must be manned with menial slaves. I think that it instead should be an option, like with armies, to man them with free citizens instead who then do a better job but instead require a monthly wage.
+- Oni-girl soldiers.
+- Modify DOL battle scene to recognise SecExp units.
+- Update encyclopedia entry to reflect above.
+- Add suicide units.
+- Add WarAnimal's units - Optimally Functioning Code, 254511 - 3rd Military Animal Platoon.
+- Loli unit - Unlocked from Black market, origin Wedding edition - 310602.
+- Feature Request: Attack Imminent Layout (GUI suggestion done) - https://gitgud.io/pregmodfan/fc-pregmod/issues/1145
+- Feature Request: Potential for damage to Security Expansion Upgrades - https://gitgud.io/pregmodfan/fc-pregmod/issues/1146
+- Special Forces Morale Bonus - https://gitgud.io/pregmodfan/fc-pregmod/issues/1165
+- Suggestion - Specialized Schools, Fortifications and Militia Edicts -https://gitgud.io/pregmodfan/fc-pregmod/issues/763
+- Suggestion - Arcology Conquest - https://gitgud.io/pregmodfan/fc-pregmod/issues/760
+- Does forcing every citizen to be in military raise appeal of slaves that know how to fight?
+- And if I am a master tactician, maybe I could get an estimate how effective the various tacticts could be?
+- make https://gitgud.io/pregmodfan/fc-pregmod/issues/1431 and https://gitgud.io/pregmodfan/fc-pregmod/issues/1436 more visible
+- Suggestion - Weapon Manufacturing Research Queue - https://gitgud.io/pregmodfan/fc-pregmod/issues/1618
+- Ability to create more drone squads.
+- Increase base maximum units to 18, 20 with SF.
+- Suggestion - Gradual Battle Frequency - https://gitgud.io/pregmodfan/fc-pregmod/issues/1245#note_82504
+- Option to send slaves into military unit to gain some nice scars and experience wold be nice (with retrieval). 
+- So would be taking slaves from slave units as personal ones. The slave units would pretty much be menial slaves I'd imagine, not sex slaves.
+- If I think about it having a squad of personal slaves that you equip in whatever gear you want and send out to capture new slaves, raid caravans and cities and shit would be pretty sweet, I would even call it special forces but that's taken, also the combat skill is still a binary thing which makes the whole thing pointless.
+	How about to start off with option to send one or two of your combat trained slaves to assist the merc's when they are on a raid with the possibility of receiving battle wounds.
+- It would be a start if the tactics talking about the size difference of the armies actually took the size difference into account.
+- How about to start off with option to send one or two of your combat trained slaves to assist the merc's when they are on a raid with the possibility of receiving battle wounds.
+- If there are choices, they should be along the lines of "higher risk, higher reward" (defeating the enemy with fewer casualties and damage if it goes right, but suffering higher casualties and damage if it goes wrong), or things like accepting more/less military casualties for better/worse protection of economic assets (costing money/damaging economy) and civilians (costing reputation/damaging population).
+- The ability to send units to the general to increase relationship as an alternative to sending slaves.
+- Unrelated minor suggestion: Could we perhaps set default unit names somewhere? Just a small thing so I don't have to change each new unit to (slave/citizen/mercenary) Legion in my Roman society whenever I make new ones.
\ No newline at end of file
diff --git a/src/Mods/SecExp/rebellionOptions.tw b/src/Mods/SecExp/rebellionOptions.tw
index 834b91f0092fa0900d5fd2d34cbff62192e1183f..aef6f210007f6077516fb43285c2beb1a54ad299 100644
--- a/src/Mods/SecExp/rebellionOptions.tw
+++ b/src/Mods/SecExp/rebellionOptions.tw
@@ -287,8 +287,7 @@ We can dedicate some of our forces to the protection of the vital parts of the a
 <br><br>
 <<replenishAllUnits>>
 
-<br>
-<br>
+<br><br>
 <<link "Proceed" "rebellionHandler">>
 	<<set $battleResult = 4>>						/* sets $battleResult value outside accepted range to avoid evaluation problems */
 	<<set $foughtThisWeek = 1>>
diff --git a/src/Mods/SecExp/seeUnit.tw b/src/Mods/SecExp/seeUnit.tw
deleted file mode 100644
index bd9769539bb0916bc37b44d90f6c5b43af821caf..0000000000000000000000000000000000000000
--- a/src/Mods/SecExp/seeUnit.tw
+++ /dev/null
@@ -1,372 +0,0 @@
-:: seeUnit [nobr]
-
-<<if $attackThisWeek == 1>>
-	<<set $nextButton = "Back", $nextLink = "attackOptions", $returnTo = "secBarracks">>
-<<else>>
-	<<set $nextButton = "Back", $nextLink = "secBarracks", $returnTo = "secBarracks">>
-<</if>>
-
-<<if $targetUnit == "secBots">>
-	<<set _unit = App.SecExp.getUnit("Bots")>>
-	<<= _unit.describe()>>
-	<<if $secBots.maxTroops > $secBots.troops>>
-		<br>
-		<<link "Replenish the unit" "seeUnit">>
-			<<run cashX(forceNeg(($secBots.maxTroops - $secBots.troops) * $secBotsCost), "securityExpansion")>>
-			<<set $secBots.troops = $secBots.maxTroops>>
-		<</link>>
-	<</if>>
-	<br>
-	<<if $secBots.maxTroops < 80>>
-		<br>
-		<<link "Improve the digital control matrix" "seeUnit">>
-			<<set $secBots.maxTroops += 10>>
-			<<run cashX(-5000, "securityExpansion")>>
-		<</link>>
-		Invest in the development of more refined controls for your drones to increase the maximum number of drones in the unit.
-		<br>//Costs <<print cashFormat(5000)>> per upgrade and each will increase the max by 10//
-	<<elseif $SF.Toggle && $SF.Active >= 1 && $secBots.maxTroops < 100 && $SecExp.edicts.SFSupportLevel >= 1>>
-		<br>
-		<<link "Refine the drone network with $SF.Lower assistance" "seeUnit">>
-		<<set $secBots.maxTroops += 10>>
-			<<run cashX(forceNeg(5000 + 10 * $secBotsUpgradeCost * $secBots.equip), "securityExpansion")>>
-		<</link>>
-		Utilize the technological developments made by $SF.Lower to further improve the control matrix of the security drones.
-		<br>//Costs <<print cashFormat(5000 + 10 * $secBotsUpgradeCost * $secBots.equip)>> and will increase the max by 10//
-	<<elseif $SF.Toggle && $SF.Active >= 1 && $SecExp.edicts.SFSupportLevel < 1>>
-		There's little left to improve in the matrix. However support from $SF.Lower might give some more room from improvement.
-	<<else>>
-		There's little left to improve in the matrix. Your control systems are at top capacity and won't be able to handle a bigger drone unit.
-	<</if>>
-	<<if $secBots.equip < 3>>
-		<br>
-		<<link "Improve drone weaponry and armor" "seeUnit">>
-			<<set $secBots.equip += 1>>
-			<<run cashX(forceNeg(($secBotsUpgradeCost * $secBots.maxTroops) + 1000), "securityExpansion")>>
-		<</link>>
-		Invest in better equipment for your drones to increase their battle effectiveness.
-		<br>//Costs <<print cashFormat(($secBotsUpgradeCost * $secBots.maxTroops) + 1000)>> and will increase attack and defense value of the unit by 15% for every upgrade.//
-	<<else>>
-		<br>
-		Your drones are equipped with top tier weaponry and armor.
-	<</if>>
-	<<if $SecExp.settings.showStats == 1>>
-		<br><<= _unit.printStats()>>
-	<</if>>
-<<elseif $targetUnit == "militiaUnits">>
-	<<set _unit = App.SecExp.getUnit("Militia", $targetIndex)>>
-	<<= _unit.describe()>>
-	Rename unit <<textbox "$militiaUnits[$targetIndex].platoonName" $militiaUnits[$targetIndex].platoonName "seeUnit">>
-	<<if $militiaUnits[$targetIndex].maxTroops > $militiaUnits[$targetIndex].troops && $militiaFreeManpower > 0>>
-		<br>
-		<<link "Replenish unit" "seeUnit">>
-			<<if $militiaFreeManpower >= $militiaUnits[$targetIndex].maxTroops - $militiaUnits[$targetIndex].troops>>
-				<<set $militiaFreeManpower -= $militiaUnits[$targetIndex].maxTroops - $militiaUnits[$targetIndex].troops>>
-				<<set _expLoss = ($militiaUnits[$targetIndex].maxTroops - $militiaUnits[$targetIndex].troops) / $militiaUnits[$targetIndex].troops>>
-				<<set $militiaUnits[$targetIndex].training -= $militiaUnits[$targetIndex].training * _expLoss>>
-				<<set $militiaUnits[$targetIndex].troops = $militiaUnits[$targetIndex].maxTroops>>
-			<<else>>
-				<<set _expLoss = $militiaFreeManpower / $militiaUnits[$targetIndex].troops>>
-				<<set $militiaUnits[$targetIndex].training -= $militiaUnits[$targetIndex].training * _expLoss>>
-				<<set $militiaUnits[$targetIndex].troops += $militiaFreeManpower>>
-				<<set $militiaFreeManpower = 0>>
-			<</if>>
-		<</link>>
-	<</if>>
-	<br>
-	<<if $militiaUnits[$targetIndex].maxTroops < 50>>
-		<br>
-		<<link "Intensive officers training" "seeUnit">>
-			<<set $militiaUnits[$targetIndex].maxTroops += 10>>
-			<<run cashX(forceNeg(5000 + 10 * $equipUpgradeCost * ($militiaUnits[$targetIndex].equip + $militiaUnits[$targetIndex].commissars + $militiaUnits[$targetIndex].cyber + $militiaUnits[$targetIndex].SF)), "securityExpansion")>>
-		<</link>>
-		Invest in the training of your officers to increase the maximum number of soldiers in the unit.
-		<br>//Costs <<print cashFormat(5000 + 10 * $equipUpgradeCost * ($militiaUnits[$targetIndex].equip + $militiaUnits[$targetIndex].commissars + $militiaUnits[$targetIndex].cyber + $militiaUnits[$targetIndex].SF))>> and will increase the max by 10//
-	<<else>>
-		<br>
-		Your officers reached their peak. Further training will have little impact on the number of troops they can effectively lead.
-	<</if>>
-	<<if $militiaUnits[$targetIndex].equip < 3>>
-		<br>
-		<<link "Improve weaponry and equipment" "seeUnit">>
-			<<set $militiaUnits[$targetIndex].equip += 1>>
-			<<run cashX(forceNeg(($equipUpgradeCost * $militiaUnits[$targetIndex].maxTroops) + 1000), "securityExpansion")>>
-		<</link>>
-		Invest in better equipment for your soldiers to increase their battle effectiveness.
-		<br>//Costs <<print cashFormat(($equipUpgradeCost * $militiaUnits[$targetIndex].maxTroops) + 1000)>> and will increase attack and defense value of the unit by 15% for every upgrade.//
-	<<else>>
-		<br>
-		The unit is equipped with state of the art weaponry and equipment.
-	<</if>>
-	<<if $militiaUnits[$targetIndex].commissars == 0>>
-		<br>
-		<<link "Attach commissars to the unit" "seeUnit">>
-			<<set $militiaUnits[$targetIndex].commissars = 1>>
-			<<run cashX(forceNeg($equipUpgradeCost * $militiaUnits[$targetIndex].maxTroops + 1000), "securityExpansion")>>
-		<</link>>
-		Attach a small squad of commissars to the unit.
-		<br>//Costs <<print cashFormat(($equipUpgradeCost * $militiaUnits[$targetIndex].maxTroops) + 1000)>> and will slowly increase the loyalty of the unit.//
-	<<elseif $militiaUnits[$targetIndex].commissars < 2>>
-		<br>
-		<<link "Intensive loyalty training" "seeUnit">>
-			<<set $militiaUnits[$targetIndex].commissars += 1>>
-			<<run cashX(forceNeg($equipUpgradeCost * $militiaUnits[$targetIndex].maxTroops + 1000), "securityExpansion")>>
-		<</link>>
-		Provide special training for the officers and the commissars of the unit.
-		<br>//Costs <<print cashFormat(($equipUpgradeCost * $militiaUnits[$targetIndex].maxTroops) + 1000)>> and will increase the loyalty of the unit faster.//
-	<<elseif $militiaUnits[$targetIndex].commissars == 1>>
-		<br>The unit has a commissar detachment, keeping under control the ambitions of the unit's officers.
-	<<else>>
-		<br>The unit has a perfectly trained and loyal commissar detachment, keeping under control the ambitions of the unit's officers.
-	<</if>>
-	<<if $prostheticsUpgrade >= 2 || $researchLab.advCombatPLimb == 1>>
-		<<if $militiaUnits[$targetIndex].cyber == 0>>
-			<br>
-			<<link "Provide enhanced cybernetic enhancements" "seeUnit">>
-				<<set $militiaUnits[$targetIndex].cyber += 1>>
-				<<run cashX(forceNeg($equipUpgradeCost * $militiaUnits[$targetIndex].maxTroops + 2000), "securityExpansion")>>
-			<</link>>
-			Will augment all soldiers of the unit with high tech cyber enhancements.
-			<br>//Costs <<print cashFormat(($equipUpgradeCost * $militiaUnits[$targetIndex].maxTroops) + 2000)>> and will increase attack, defense and base hp values of the unit.//
-		<<else>>
-			<br>The unit is equipped with advanced cybernetic enhancements.
-		<</if>>
-	<</if>>
-	<<if $militiaUnits[$targetIndex].medics == 0>>
-		<br>
-		<<link "Attach trained medics to the unit" "seeUnit">>
-			<<set $militiaUnits[$targetIndex].medics = 1>>
-			<<run cashX(forceNeg($equipUpgradeCost * $militiaUnits[$targetIndex].maxTroops + 1000), "securityExpansion")>>
-		<</link>>
-		Attach a small squad of trained medics to the unit.
-		<br>//Costs <<print cashFormat(($equipUpgradeCost * $militiaUnits[$targetIndex].maxTroops) + 1000)>> and will decrease the number of casualties suffered during battle.//
-	<<else>>
-		<br>The unit has a medic detachment following it into battle, decreasing the number of casualties the unit suffers.
-	<</if>>
-	<<if $SF.Toggle && $SF.Active >= 1>>
-		<<if $militiaUnits[$targetIndex].SF == 0>>
-			<br>
-			<<link "Attach Special Force advisors" "seeUnit">>
-				<<set $militiaUnits[$targetIndex].SF = 1>>
-				<<run cashX(forceNeg(($equipUpgradeCost * $militiaUnits[$targetIndex].maxTroops) + 5000), "securityExpansion")>>
-			<</link>>
-			Attach $SF.Lower advisors to the unit.
-			<br>//Costs <<print cashFormat(($equipUpgradeCost * $militiaUnits[$targetIndex].maxTroops) + 5000)>> and will slightly increase the base stats of the unit.//
-		<<else>>
-			<br>The unit has attached advisors from $SF.Lower that will help the squad remain tactically aware and active.
-		<</if>>
-	<</if>>
-	<<if $SecExp.settings.showStats == 1>>
-		<br><<= _unit.printStats()>>
-	<</if>>
-<<elseif $targetUnit == "slaveUnits">>
-	<<set _unit = App.SecExp.getUnit("Slaves", $targetIndex)>>
-	<<= _unit.describe()>>
-	<br>
-	Rename unit <<textbox "$slaveUnits[$targetIndex].platoonName" $slaveUnits[$targetIndex].platoonName "seeUnit">>
-	<<if $slaveUnits[$targetIndex].maxTroops > $slaveUnits[$targetIndex].troops && $menials > 0>>
-		<br>
-		<<link "Replenish unit" "seeUnit">>
-			<<if $menials >= $slaveUnits[$targetIndex].maxTroops - $slaveUnits[$targetIndex].troops>>
-				<<set $menials -= $slaveUnits[$targetIndex].maxTroops - $slaveUnits[$targetIndex].troops>>
-				<<set _expLoss = ($slaveUnits[$targetIndex].maxTroops - $slaveUnits[$targetIndex].troops) / $slaveUnits[$targetIndex].troops>>
-				<<set $slaveUnits[$targetIndex].training -= $slaveUnits[$targetIndex].training * _expLoss>>
-				<<set $slaveUnits[$targetIndex].troops = $slaveUnits[$targetIndex].maxTroops>>
-			<<else>>
-				<<set _expLoss = $menials / $slaveUnits[$targetIndex].troops>>
-				<<set $slaveUnits[$targetIndex].training -= $slaveUnits[$targetIndex].training * _expLoss>>
-				<<set $slaveUnits[$targetIndex].troops += $menials>>
-				<<set $menials = 0>>
-			<</if>>
-		<</link>>
-	<</if>>
-	<br>
-	<<if $slaveUnits[$targetIndex].maxTroops < 50>>
-		<br>
-		<<link "Intensive officers training" "seeUnit">>
-			<<set $slaveUnits[$targetIndex].maxTroops += 10>>
-			<<run cashX(forceNeg(5000 + 10 * $equipUpgradeCost * ($slaveUnits[$targetIndex].equip + $slaveUnits[$targetIndex].commissars + $slaveUnits[$targetIndex].cyber + $slaveUnits[$targetIndex].SF)), "securityExpansion")>>
-		<</link>>
-		Invest in the training of your officers to increase the maximum number of soldiers in the unit.
-		<br>//Costs <<print cashFormat(5000 + 10 * $equipUpgradeCost * ($slaveUnits[$targetIndex].equip + $slaveUnits[$targetIndex].commissars + $slaveUnits[$targetIndex].cyber + $slaveUnits[$targetIndex].SF))>> and will increase the max by 10//
-	<<else>>
-		<br>Your officers reached their peak. Further training will have little impact on the number of troops they can effectively lead.
-	<</if>>
-	<<if $slaveUnits[$targetIndex].equip < 3>>
-		<br>
-		<<link "Improve weaponry and equipment">>
-			<<set $slaveUnits[$targetIndex].equip += 1>>
-			<<run cashX(forceNeg($equipUpgradeCost * $slaveUnits[$targetIndex].maxTroops + 1000), "securityExpansion")>>
-			<<goto "seeUnit">>
-		<</link>>
-		Invest in better equipment for your soldiers to increase their battle effectiveness.
-		<br>//Costs <<print cashFormat(($equipUpgradeCost * $slaveUnits[$targetIndex].maxTroops) + 1000)>> and will increase attack and defense value of the unit by 15% for every upgrade.//
-	<<else>>
-		<br>The unit is equipped with state of the art weaponry and equipment.
-	<</if>>
-	<<if $slaveUnits[$targetIndex].commissars == 0>>
-		<br>
-		<<link "Attach commissars to the unit" "seeUnit">>
-			<<set $slaveUnits[$targetIndex].commissars = 1>>
-			<<run cashX(forceNeg($equipUpgradeCost * $slaveUnits[$targetIndex].maxTroops + 1000), "securityExpansion")>>
-		<</link>>
-		Attach a small squad of commissars to the unit.
-		<br>//Costs <<print cashFormat(($equipUpgradeCost * $slaveUnits[$targetIndex].maxTroops) + 1000)>> and will slowly increase the loyalty of the unit.//
-	<<elseif $slaveUnits[$targetIndex].commissars < 2>>
-		<br>
-		<<link "Intensive loyalty training" "seeUnit">>
-			<<set $slaveUnits[$targetIndex].commissars += 1>>
-			<<run cashX(forceNeg($equipUpgradeCost * $slaveUnits[$targetIndex].maxTroops + 1000), "securityExpansion")>>
-		<</link>>
-		Provide special training for the officers and the commissars of the unit.
-		<br>//Costs <<print cashFormat(($equipUpgradeCost * $slaveUnits[$targetIndex].maxTroops) + 1000)>> and will increase the loyalty of the unit faster.//
-	<<elseif $slaveUnits[$targetIndex].commissars == 1>>
-		<br>The unit has a commissar detachment, keeping under control the ambitions of the unit's officers.
-	<<else>>
-		<br>The unit has a perfectly trained and loyal commissar detachment, keeping under control the ambitions of the unit's officers.
-	<</if>>
-	<<if $prostheticsUpgrade >= 2 || $researchLab.advCombatPLimb == 1>>
-		<<if $slaveUnits[$targetIndex].cyber == 0>>
-			<br>
-			<<link "Provide enhanced cybernetic enhancements" "seeUnit">>
-				<<set $slaveUnits[$targetIndex].cyber += 1>>
-				<<run cashX(forceNeg($equipUpgradeCost * $slaveUnits[$targetIndex].maxTroops + 2000), "securityExpansion")>>
-			<</link>>
-			Will augment all soldiers of the unit with high tech cyber enhancements.
-			<br>//Costs <<print cashFormat(($equipUpgradeCost * $slaveUnits[$targetIndex].maxTroops) + 2000)>> and will increase attack, defense and base hp values of the unit.//
-		<<else>>
-			<br>The unit is equipped with advanced cybernetic enhancements.
-		<</if>>
-	<</if>>
-	<<if $slaveUnits[$targetIndex].medics == 0>>
-		<br>
-		<<link "Attach trained medics to the unit" "seeUnit">>
-			<<set $slaveUnits[$targetIndex].medics = 1>>
-			<<run cashX(forceNeg($equipUpgradeCost * $slaveUnits[$targetIndex].maxTroops + 1000), "securityExpansion")>>
-		<</link>>
-		Attach a small squad of trained medics to the unit.
-		<br>//Costs <<print cashFormat(($equipUpgradeCost * $slaveUnits[$targetIndex].maxTroops) + 1000)>> and will decrease the number of casualties suffered during battle.//
-	<<else>>
-		<br>The unit has a medic detachment following it into battle, decreasing the number of casualties the unit suffers.
-	<</if>>
-	<<if $SF.Toggle && $SF.Active >= 1>>
-		<<if $slaveUnits[$targetIndex].SF == 0>>
-			<br>
-			<<link "Attach Special Force advisors" "seeUnit">>
-				<<set $slaveUnits[$targetIndex].SF = 1>>
-				<<run cashX(forceNeg(($equipUpgradeCost * $slaveUnits[$targetIndex].maxTroops) + 5000), "securityExpansion")>>
-			<</link>>
-			Attach $SF.Lower advisors to the unit.
-			<br>//Costs <<print cashFormat(($equipUpgradeCost * $slaveUnits[$targetIndex].maxTroops) + 5000)>> and will slightly increase the base stats of the unit.//
-		<<else>>
-			<br>The unit has attached advisors from $SF.Lower that will help the squad remain tactically aware and active.
-		<</if>>
-	<</if>>
-	<<if $SecExp.settings.showStats == 1>>
-		<br><<= _unit.printStats()>>
-	<</if>>
-<<elseif $targetUnit == "mercUnits">>
-	<<set _unit = App.SecExp.getUnit("Mercs", $targetIndex)>>
-	<<= _unit.describe()>>
-	<br>
-	Rename unit <<textbox "$mercUnits[$targetIndex].platoonName" $mercUnits[$targetIndex].platoonName "seeUnit">>
-	<<if $mercUnits[$targetIndex].troops < $mercUnits[$targetIndex].maxTroops && $mercFreeManpower > 0>>
-		<br>
-		<<link "Replenish unit" "seeUnit">>
-			<<if $mercFreeManpower >= $mercUnits[$targetIndex].maxTroops - $mercUnits[$targetIndex].troops>>
-				<<set $mercFreeManpower -= $mercUnits[$targetIndex].maxTroops - $mercUnits[$targetIndex].troops>>
-				<<set _expLoss = ($mercUnits[$targetIndex].maxTroops - $mercUnits[$targetIndex].troops) / $mercUnits[$targetIndex].troops>>
-				<<set $mercUnits[$targetIndex].training -= $mercUnits[$targetIndex].training * _expLoss>>
-				<<set $mercUnits[$targetIndex].troops = $mercUnits[$targetIndex].maxTroops>>
-			<<else>>
-				<<set _expLoss = $mercFreeManpower / $mercUnits[$targetIndex].troops>>
-				<<set $mercUnits[$targetIndex].training -= $mercUnits[$targetIndex].training * _expLoss>>
-				<<set $mercUnits[$targetIndex].troops += $mercFreeManpower>>
-				<<set $mercFreeManpower = 0>>
-			<</if>>
-		<</link>>
-	<</if>>
-	<br>
-	<<if $mercUnits[$targetIndex].maxTroops < 50>>
-		<br>
-		<<link "Intensive officers training" "seeUnit">>
-			<<set $mercUnits[$targetIndex].maxTroops += 10>>
-			<<run cashX(forceNeg(5000 + 10 * $equipUpgradeCost * ($mercUnits[$targetIndex].equip + $mercUnits[$targetIndex].commissars + $mercUnits[$targetIndex].cyber + $mercUnits[$targetIndex].SF)), "securityExpansion")>>
-		<</link>>
-		Invest in the training of your officers to increase the maximum number of soldiers in the unit.
-		<br>//Costs <<print cashFormat(5000 + 10 * $equipUpgradeCost * ($mercUnits[$targetIndex].equip + $mercUnits[$targetIndex].commissars + $mercUnits[$targetIndex].cyber + $mercUnits[$targetIndex].SF))>> and will increase the max by 10//
-	<<else>>
-		<br>Your officers reached their peak. Further training will have little impact on the number of troops they can effectively lead.
-	<</if>>
-	<<if $mercUnits[$targetIndex].equip < 3>>
-		<br>
-		<<link "Improve weaponry and equipment" "seeUnit">>
-			<<set $mercUnits[$targetIndex].equip += 1>>
-			<<run cashX(forceNeg(($equipUpgradeCost * $mercUnits[$targetIndex].maxTroops) + 1000), "securityExpansion")>>
-		<</link>>
-		Invest in better equipment for your soldiers to increase their battle effectiveness.
-		<br>//Costs <<print cashFormat(($equipUpgradeCost * $mercUnits[$targetIndex].maxTroops) + 1000)>> and will increase attack and defense value of the unit by 15% for every upgrade.//
-	<<else>>
-		<br>The unit is equipped with state of the art weaponry and equipment.
-	<</if>>
-	<<if $mercUnits[$targetIndex].commissars == 0>>
-		<br>
-		<<link "Attach commissars to the unit" "seeUnit">>
-			<<set $mercUnits[$targetIndex].commissars = 1>>
-			<<run cashX(forceNeg($equipUpgradeCost * $mercUnits[$targetIndex].maxTroops + 1000), "securityExpansion")>>
-		<</link>>
-		Attach a small squad of commissars to the unit.
-		<br>//Costs <<print cashFormat(($equipUpgradeCost * $mercUnits[$targetIndex].maxTroops) + 1000)>> and will slowly increase the loyalty of the unit.//
-	<<elseif $mercUnits[$targetIndex].commissars < 2>>
-		<br>
-		<<link "Intensive loyalty training" "seeUnit">>
-			<<set $mercUnits[$targetIndex].commissars += 1>>
-			<<run cashX(forceNeg($equipUpgradeCost * $mercUnits[$targetIndex].maxTroops + 1000), "securityExpansion")>>
-		<</link>>
-		Provide special training for the officers and the commissars of the unit.
-		<br>//Costs <<print cashFormat(($equipUpgradeCost * $mercUnits[$targetIndex].maxTroops) + 1000)>> and will increase the loyalty of the unit faster.//
-	<<elseif $mercUnits[$targetIndex].commissars == 1>>
-		<br>The unit has a commissar detachment, keeping under control the ambitions of the unit's officers.
-	<<else>>
-		<br>The unit has a perfectly trained and loyal commissar detachment, keeping under control the ambitions of the unit's officers.
-	<</if>>
-	<<if $prostheticsUpgrade >= 2 || $researchLab.advCombatPLimb == 1>>
-		<<if $mercUnits[$targetIndex].cyber == 0>>
-			<br>
-			<<link "Provide enhanced cybernetic enhancements" "seeUnit">>
-				<<set $mercUnits[$targetIndex].cyber += 1>>
-				<<run cashX(forceNeg($equipUpgradeCost * $mercUnits[$targetIndex].maxTroops + 2000), "securityExpansion")>>
-			<</link>>Will augment all soldiers of the unit with high tech cyber enhancements.
-			<br>//Costs <<print cashFormat(($equipUpgradeCost * $mercUnits[$targetIndex].maxTroops) + 2000)>> and will increase attack, defense and base hp values of the unit.//
-		<<else>>
-			<br>The unit is equipped with advanced cybernetic enhancements.
-		<</if>>
-	<</if>>
-	<<if $mercUnits[$targetIndex].medics == 0>>
-		<br>
-		<<link "Attach trained medics to the unit" "seeUnit">>
-			<<set $mercUnits[$targetIndex].medics = 1>>
-			<<run cashX(forceNeg(($equipUpgradeCost * $mercUnits[$targetIndex].maxTroops) + 5000), "securityExpansion")>>
-		<</link>>
-		Attach a small squad of trained medics to the unit.
-		<br>//Costs <<print cashFormat(($equipUpgradeCost * $mercUnits[$targetIndex].maxTroops) + 5000)>> and will decrease the number of casualties suffered during battle.//
-	<<else>>
-		<br>The unit has a medic detachment following it into battle, decreasing the number of casualties the unit suffers.
-	<</if>>
-	<<if $SF.Toggle && $SF.Active >= 1>>
-		<<if $mercUnits[$targetIndex].SF == 0>>
-			<br>
-			<<link "Attach Special Force advisors" "seeUnit">>
-				<<set $mercUnits[$targetIndex].SF = 1>>
-				<<run cashX(forceNeg(($equipUpgradeCost * $mercUnits[$targetIndex].maxTroops) + 5000), "securityExpansion")>>
-			<</link>>
-			Attach $SF.Lower advisors to the unit.
-			<br>//Costs <<print cashFormat(($equipUpgradeCost * $mercUnits[$targetIndex].maxTroops) + 5000)>> and will slightly increase the base stats of the unit.//
-		<<else>>
-			<br>The unit has attached advisors from $SF.Lower that will help the squad remain tactically aware and active.
-		<</if>>
-	<</if>>
-	<<if $SecExp.settings.showStats == 1>>
-		<br><<= _unit.printStats()>>
-	<</if>>
-<</if>>
\ No newline at end of file
diff --git a/src/Mods/SecExp/widgets/miscSecExpWidgets.tw b/src/Mods/SecExp/widgets/miscSecExpWidgets.tw
index 868c0d95573227608e32957f8c686ff7a994426d..8f7fee5c2bab3354ba3718486844719d1710bb25 100644
--- a/src/Mods/SecExp/widgets/miscSecExpWidgets.tw
+++ b/src/Mods/SecExp/widgets/miscSecExpWidgets.tw
@@ -159,7 +159,7 @@
 	<</for>>
 
 	<<if _hasLossesBots == 1 || _hasLossesM == 1 || _hasLossesS == 1 || _hasLossesMe == 1>>
-		<br><br><<link "Replenish all units">>
+		<<link "Replenish all units">>
 			<<if _hasLossesBots == 1>>
 					<<run cashX(-(($secBots.maxTroops - $secBots.troops) * 500), "securityExpansion")>>
 					<<set $secBots.troops = $secBots.maxTroops>>
diff --git a/src/Mods/SpecialForce/ColonelSexDec.tw b/src/Mods/SpecialForce/ColonelSexDec.tw
index 8ed3b8a6392af87e4083643f77bc470aef0583ae..51d463073b68636bc0b272fefa2291671a9890e8 100644
--- a/src/Mods/SpecialForce/ColonelSexDec.tw
+++ b/src/Mods/SpecialForce/ColonelSexDec.tw
@@ -3,7 +3,7 @@
 <<switch $SF.Colonel.Core>>
 <<case "shell shocked">>
 	<span id="result7">
-		The entire time it is obvious that The Colonel is reliving a horrible event.
+		<br>The entire time it is obvious that The Colonel is reliving a horrible event.
 		<br><<link "Try to bring her back">>
 			<<replace "#result7">>
 				"You made an attempt to try to bring her back to the present."
@@ -18,5 +18,5 @@
 	</span>
 
 <<default>>
-	Inset sex noises here.
+	<br>Inset sex noises here.
 <</switch>>
\ No newline at end of file
diff --git a/src/Mods/SpecialForce/Firebase.tw b/src/Mods/SpecialForce/Firebase.tw
index b3304a0f61fbfd4d2c9d9a2cc18a73a2753a582f..68e85c00ecc247dcbb188e5efd088b7fb130df94 100644
--- a/src/Mods/SpecialForce/Firebase.tw
+++ b/src/Mods/SpecialForce/Firebase.tw
@@ -60,7 +60,7 @@
 					, that biannual merc meetup has come around again. You've already gave me leave to attend, but I just wanted to be sure I'm still clear to go."
 				<</if>>
 				<br>[[Grant leave|Firebase][$SF.MercCon.CanAttend = 1]]
-				<br>[[Request she remain on site|Firebase][$SF.MercCon.CanAttend = -2]]<br>
+				<br>[[Request she remain on site|Firebase][$SF.MercCon.CanAttend = -2]]
 			<</if>>
 
 			<span id="result0">
@@ -109,4 +109,4 @@
 	<div id="FS" class="tabcontent">
 		<div class="content"> <<= App.SF.fsIntegration()>> </div>
 	</div>
-<</if>>
+<</if>>
\ No newline at end of file
diff --git a/src/Mods/SpecialForce/Upgrades.tw b/src/Mods/SpecialForce/Upgrades.tw
index 1f338a6ff95cf12712a31cd98bd0d1ec24aa176c..9e49660808b28e0f93c772ff0b9656417bc041e1 100644
--- a/src/Mods/SpecialForce/Upgrades.tw
+++ b/src/Mods/SpecialForce/Upgrades.tw
@@ -6,7 +6,7 @@
 <<if $SF.Squad.Firebase < App.SF.upgrades.currentUnitMax('Firebase')>>
 	<<set _cF = App.SF.UpgradeCost(125000/_upgradeDiv,$SF.Squad.Firebase)>>
 	<<if $cash >= _cF>> <br>
-		[[Upgrade Firebase|Firebase][$SF.Upgrade = 1, $SF.Colonel.Talk += 1, $SF.Squad.Firebase++, $SF.CreditsInvested += (_cF), cashX(forceNeg(_cF), "specialForcesCap")]]
+		[[Upgrade Firebase|Firebase][$SF.Upgrade = 1, $SF.Squad.Firebase++, $SF.CreditsInvested += (_cF), cashX(forceNeg(_cF), "specialForcesCap")]]
 	<<else>>
 		//Cannot afford to upgrade the Firebase.//
 	<</if>>
@@ -18,7 +18,7 @@
 <<if $SF.Squad.Armoury < App.SF.upgrades.currentUnitMax('Armoury')>>
 	<<set _cA = App.SF.UpgradeCost(40000/_upgradeDiv,$SF.Squad.Armoury)>>
 	<<if $cash >= _cA>>
-		[[Upgrade Armory|Firebase][$SF.Upgrade = 1, $SF.Colonel.Talk += 1, $SF.Squad.Armoury++, $SF.CreditsInvested += (_cA), cashX(forceNeg(_cA), "specialForcesCap")]]
+		[[Upgrade Armory|Firebase][$SF.Upgrade = 1, $SF.Squad.Armoury++, $SF.CreditsInvested += (_cA), cashX(forceNeg(_cA), "specialForcesCap")]]
 	<<else>>
 		//Cannot afford to upgrade the Armory.//
 	<</if>>
@@ -30,7 +30,7 @@
 <<if $SF.Squad.Drugs < App.SF.upgrades.currentUnitMax('Drugs')>>
 	<<set _cDrugs = App.SF.UpgradeCost(40000/_upgradeDiv,$SF.Squad.Drugs)>>
 	<<if $cash >= _cDrugs>>
-		[[Upgrade Drug Lab|Firebase][$SF.Upgrade = 1, $SF.Colonel.Talk += 1, $SF.Squad.Drugs++, $SF.CreditsInvested += (_cDrugs), cashX(forceNeg(_cDrugs), "specialForcesCap")]]
+		[[Upgrade Drug Lab|Firebase][$SF.Upgrade = 1, $SF.Squad.Drugs++, $SF.CreditsInvested += (_cDrugs), cashX(forceNeg(_cDrugs), "specialForcesCap")]]
 	<<else>>
 			//Cannot afford to upgrade the Drug Lab.//
 	<</if>>
@@ -42,7 +42,7 @@
 <<if $SF.Squad.Firebase >= 2 && $SF.Squad.Drones < App.SF.upgrades.currentUnitMax('Drones')>>
 	<<set _cDrones = App.SF.UpgradeCost(45000/_upgradeDiv,$SF.Squad.Drones)>>
 	<<if $cash >= _cDrones>>
-		[[Upgrade Drone Bay|Firebase][$SF.Upgrade = 1, $SF.Colonel.Talk += 1, $SF.Squad.Drones++, $SF.CreditsInvested += (_cDrones), cashX(forceNeg(_cDrones), "specialForcesCap")]]
+		[[Upgrade Drone Bay|Firebase][$SF.Upgrade = 1, $SF.Squad.Drones++, $SF.CreditsInvested += (_cDrones), cashX(forceNeg(_cDrones), "specialForcesCap")]]
 	<<else>>
 		//Cannot afford to upgrade the Drone Bay.//
 	<</if>>
@@ -56,7 +56,7 @@
 	<<if $SF.Squad.AV < App.SF.upgrades.currentUnitMax('AV')>>
 		<<set _cAV = App.SF.UpgradeCost(60000/_upgradeDiv,$SF.Squad.AV)>>
 		<<if $cash >= _cAV>>
-			[[Upgrade Attack Vehicle Fleet|Firebase][$SF.Upgrade = 1, $SF.Colonel.Talk += 1, $SF.Squad.AV++, $SF.CreditsInvested += (_cAV), cashX(forceNeg(_cAV), "specialForcesCap")]]
+			[[Upgrade Attack Vehicle Fleet|Firebase][$SF.Upgrade = 1, $SF.Squad.AV++, $SF.CreditsInvested += (_cAV), cashX(forceNeg(_cAV), "specialForcesCap")]]
 		<<else>>
 			//Cannot afford to upgrade the Attack Vehicle Fleet.//
 		<</if>>
@@ -70,7 +70,7 @@
 	<<if $SF.Squad.TV < App.SF.upgrades.currentUnitMax('TV')>>
 		<<set _cTV = App.SF.UpgradeCost(60000/_upgradeDiv,$SF.Squad.TV)>>
 		<<if $cash >= _cTV>>
-			[[Upgrade Transport Vehicle Fleet|Firebase][$SF.Upgrade = 1, $SF.Colonel.Talk += 1, $SF.Squad.TV++, $SF.CreditsInvested += (_cTV), cashX(forceNeg(_cTV), "specialForcesCap")]]
+			[[Upgrade Transport Vehicle Fleet|Firebase][$SF.Upgrade = 1, $SF.Squad.TV++, $SF.CreditsInvested += (_cTV), cashX(forceNeg(_cTV), "specialForcesCap")]]
 		<<else>>
 			//Cannot afford to upgrade Transport Vehicle Fleet.//
 		<</if>>
@@ -85,7 +85,7 @@
 	<<if $SF.Squad.PGT < _PGTU>>
 		<<set _cPGT = App.SF.UpgradeCost(735000/_upgradeDiv,$SF.Squad.PGT)>>
 		<<if $cash >= _cPGT>>
-			[[Upgrade Prototype Goliath tank|Firebase][$SF.Upgrade = 1, $SF.Colonel.Talk += 1, $SF.Squad.PGT++, $SF.CreditsInvested += (_cPGT), cashX(forceNeg(_cPGT), "specialForcesCap")]]
+			[[Upgrade Prototype Goliath tank|Firebase][$SF.Upgrade = 1, $SF.Squad.PGT++, $SF.CreditsInvested += (_cPGT), cashX(forceNeg(_cPGT), "specialForcesCap")]]
 		<<else>>
 			//Cannot afford to upgrade Prototype Goliath Tank.//
 		<</if>>
@@ -103,7 +103,7 @@
 	<<if $SF.Squad.AA < App.SF.upgrades.currentUnitMax('AA')>>
 		<<set _cAA = App.SF.UpgradeCost(70000/_upgradeDiv,$SF.Squad.AA)>>
 		<<if $cash >= _cAA>>
-			[[Upgrade Attack Aircraft Fleet|Firebase][$SF.Upgrade = 1, $SF.Colonel.Talk += 1, $SF.Squad.AA++, $SF.CreditsInvested += (_cAA), cashX(forceNeg(_cAA), "specialForcesCap")]]
+			[[Upgrade Attack Aircraft Fleet|Firebase][$SF.Upgrade = 1, $SF.Squad.AA++, $SF.CreditsInvested += (_cAA), cashX(forceNeg(_cAA), "specialForcesCap")]]
 		<<else>>
 			//Cannot afford to upgrade Attack Aircraft Fleet.//
 		<</if>>
@@ -117,7 +117,7 @@
 	<<if $SF.Squad.TA < App.SF.upgrades.currentUnitMax('TA')>>
 		<<set _cTA = App.SF.UpgradeCost(70000/_upgradeDiv,$SF.Squad.TA)>>
 		<<if $cash >= _cTA>>
-			[[Upgrade Transport Aircraft Fleet|Firebase][$SF.Upgrade = 1, $SF.Colonel.Talk += 1, $SF.Squad.TA++, $SF.CreditsInvested += (_cTA), cashX(forceNeg(_cTA), "specialForcesCap")]]
+			[[Upgrade Transport Aircraft Fleet|Firebase][$SF.Upgrade = 1, $SF.Squad.TA++, $SF.CreditsInvested += (_cTA), cashX(forceNeg(_cTA), "specialForcesCap")]]
 		<<else>>
 			//Cannot afford to upgrade the Transport Aircraft Fleet.//
 		<</if>>
@@ -132,7 +132,7 @@
 	<<if $SF.Squad.SpacePlane < _SPU>>
 		<<set _cSP = App.SF.UpgradeCost(250000/_upgradeDiv,$SF.Squad.SpacePlane)>>
 		<<if $cash >= _cSP>>
-			[[Upgrade Spaceplane|Firebase][$SF.Upgrade = 1, $SF.Colonel.Talk += 1, $SF.Squad.SpacePlane++, $SF.CreditsInvested += (_cSP), cashX(forceNeg(_cSP), "specialForcesCap")]]
+			[[Upgrade Spaceplane|Firebase][$SF.Upgrade = 1, $SF.Squad.SpacePlane++, $SF.CreditsInvested += (_cSP), cashX(forceNeg(_cSP), "specialForcesCap")]]
 		<<else>>
 			//Cannot afford to upgrade the Spaceplane.//
 		<</if>>
@@ -149,7 +149,7 @@
 	<<if $SF.Squad.GunS < _GunSU>>
 		<<set _cGunS = App.SF.UpgradeCost(350000/_upgradeDiv,$SF.Squad.GunS)>>
 		<<if $cash >= _cGunS>>
-			[[Upgrade Gunship|Firebase][$SF.Upgrade = 1, $SF.Colonel.Talk += 1, $SF.Squad.GunS++, $SF.CreditsInvested += (_cGunS), cashX(forceNeg(_cGunS), "specialForcesCap")]]
+			[[Upgrade Gunship|Firebase][$SF.Upgrade = 1, $SF.Squad.GunS++, $SF.CreditsInvested += (_cGunS), cashX(forceNeg(_cGunS), "specialForcesCap")]]
 		<<else>>
 			//Cannot afford to upgrade Gunship.//
 		<</if>>
@@ -168,7 +168,7 @@
 	<<if $SF.Squad.Satellite < _SatU && $SF.SatLaunched < 1>>
 		<<set _cSat = App.SF.UpgradeCost(525000/_upgradeDiv,$SF.Squad.Satellite)>>
 		<<if $cash >= _cSat>>
-			[[Upgrade Satellite|Firebase][$SF.Upgrade = 1, $SF.Colonel.Talk += 1, $SF.Squad.Satellite++, $SF.CreditsInvested += (_cSat), cashX(forceNeg(_cSat), "specialForcesCap")]]
+			[[Upgrade Satellite|Firebase][$SF.Upgrade = 1, $SF.Squad.Satellite++, $SF.CreditsInvested += (_cSat), cashX(forceNeg(_cSat), "specialForcesCap")]]
 		<<else>>
 			//Cannot afford to upgrade Satellite.//
 		<</if>>
@@ -186,7 +186,7 @@
 		<<if $SF.Squad.GiantRobot < _GRU>>
 			<<set _cGR = App.SF.UpgradeCost(550000/_upgradeDiv,$SF.Squad.GiantRobot)>>
 			<<if $cash >= _cGR>>
-				[[Upgrade Giant Robot|Firebase][$SF.Upgrade = 1, $SF.Colonel.Talk += 1, $SF.Squad.GiantRobot++, $SF.CreditsInvested += (_cGR), cashX(forceNeg(_cGR), "specialForcesCap")]]
+				[[Upgrade Giant Robot|Firebase][$SF.Upgrade = 1, $SF.Squad.GiantRobot++, $SF.CreditsInvested += (_cGR), cashX(forceNeg(_cGR), "specialForcesCap")]]
 			<<else>>
 				//Cannot afford to upgrade the Giant Robot.//
 			<</if>>
@@ -203,7 +203,7 @@
 		<<if $SF.Squad.MissileSilo < _MSU>>
 			<<set _cMS = App.SF.UpgradeCost(565000/_upgradeDiv,$SF.Squad.MissileSilo)>>
 			<<if $cash >= _cMS>>
-				[[Upgrade Cruise Missile|Firebase][$SF.Upgrade = 1, $SF.Colonel.Talk += 1, $SF.Squad.MissileSilo++, $SF.CreditsInvested += (_cMS), cashX(forceNeg(_cMS), "specialForcesCap")]]
+				[[Upgrade Cruise Missile|Firebase][$SF.Upgrade = 1, $SF.Squad.MissileSilo++, $SF.CreditsInvested += (_cMS), cashX(forceNeg(_cMS), "specialForcesCap")]]
 			<<else>>
 				//Cannot afford to upgrade Cruise Missile.//
 			<</if>>
@@ -223,7 +223,7 @@
 	<<if $SF.Squad.AircraftCarrier < _ACU>>
 		<<set _cAC = App.SF.UpgradeCost(650000/_upgradeDiv,$SF.Squad.AircraftCarrier)>>
 		<<if $cash >= _cAC>>
-			[[Upgrade Aircraft Carrier|Firebase][$SF.Upgrade = 1, $SF.Colonel.Talk += 1, $SF.Squad.AircraftCarrier++, $SF.CreditsInvested += (_cAC), cashX(forceNeg(_cAC), "specialForcesCap")]]
+			[[Upgrade Aircraft Carrier|Firebase][$SF.Upgrade = 1, $SF.Squad.AircraftCarrier++, $SF.CreditsInvested += (_cAC), cashX(forceNeg(_cAC), "specialForcesCap")]]
 		<<else>>
 			//Cannot afford to upgrade Aircraft Carrier.//
 		<</if>>
@@ -240,7 +240,7 @@
 	<<if $SF.Squad.Sub < _SubU>>
 		<<set _cSub = App.SF.UpgradeCost(700000/_upgradeDiv,$SF.Squad.Sub)>>
 		<<if $cash >= _cSub>>
-			[[Upgrade Submarine|Firebase][$SF.Upgrade = 1, $SF.Colonel.Talk += 1, $SF.Squad.Sub++, $SF.CreditsInvested += (_cSub), cashX(forceNeg(_cSub), "specialForcesCap")]]
+			[[Upgrade Submarine|Firebase][$SF.Upgrade = 1, $SF.Squad.Sub++, $SF.CreditsInvested += (_cSub), cashX(forceNeg(_cSub), "specialForcesCap")]]
 		<<else>>
 			//Cannot afford to upgrade Submarine//
 		<</if>>
@@ -257,7 +257,7 @@
 	<<if $SF.Squad.HAT < _HATU>>
 		<<set _cHAT = App.SF.UpgradeCost(665000/_upgradeDiv,$SF.Squad.HAT)>>
 		<<if $cash >= _cHAT>>
-			[[Upgrade Amphibious Transport|Firebase][$SF.Upgrade = 1, $SF.Colonel.Talk += 1, $SF.Squad.HAT++, $SF.CreditsInvested += (_cHAT), cashX(forceNeg(_cHAT), "specialForcesCap")]]
+			[[Upgrade Amphibious Transport|Firebase][$SF.Upgrade = 1, $SF.Squad.HAT++, $SF.CreditsInvested += (_cHAT), cashX(forceNeg(_cHAT), "specialForcesCap")]]
 		<<else>>
 			//Cannot afford to upgrade Amphibious Transport.//
 		<</if>>
diff --git a/src/Mods/SpecialForce/WeeklyChoices.tw b/src/Mods/SpecialForce/WeeklyChoices.tw
index 91436ee7527f0e510a2253b5797bf66b295dfff8..956faa2a90f81e3167f2cb48bd7a225c800823c7 100644
--- a/src/Mods/SpecialForce/WeeklyChoices.tw
+++ b/src/Mods/SpecialForce/WeeklyChoices.tw
@@ -51,232 +51,230 @@
 	<</if>>
 <</if>>
 
+<span id="result1">
 <<if $SF.Colonel.Talk + $SF.Colonel.Fun === 0>>
-	<span id="result0">
-	<br>"If you need me for anything else, let me know."
+	<span id="result2">
+	<br><br>"If you need me for anything else, let me know."
 
 	<<if $SF.Colonel.Status >= 25>>
-		<br><<link "Walk with The Colonel on the surface">>
-			<<replace "#result0">>
+		<br><<link "Walk with The Colonel on the surface" "Firebase">>
 			<<set $SF.Colonel.Talk = 1, $SF.Colonel.Status += 2, $SF.FS.Tension -= _colonelTalkTensionRuction>>
-			<br><br>You ask The Colonel if she would like to stretch her legs up on the surface. It doesn't take much effort for her to agree.
-			<<if $PC.skill.warfare >= 100 && $PC.career == "mercenary">>
-				Your mastery of wet work and prior experience in a PMC satisfies The Colonel that between you<<if _S.Bodyguard>>, _S.Bodyguard.slaveName,<</if>> and her, there should be little threat to walking around the arcology. Being able to see and interact with the arcology owner directly maintains the false idea that you're just like one of them while also giving them an increased opportunity to try gaining your favor.
-				<<run repX(10, "specialForces")>>
-				<<run cashX(_EnvCash2, "specialForces")>>
-			<<elseif $PC.skill.warfare >= 100>>
-				Your mastery of wet work satisfies The Colonel that you only need two soldiers <<if _S.Bodyguard>> plus _S.Bodyguard.slaveName<</if>> to walk safely around the arcology. Being able to see and interact with the arcology owner directly maintains the false idea that you're just like one of them while also giving them an increased opportunity to try gaining your favor.
-				<<run repX(5, "specialForces")>>
-				<<run cashX(_EnvCash3, "specialForces")>>
-			<<elseif $PC.skill.warfare >= 60>>
-				With some expertise in warfare, The Colonel believes <<if _S.Bodyguard>>with _S.Bodyguard.slaveName <</if>>you only need a squad of armed soldiers for a walk through the arcology.
-			<<elseif $PC.skill.warfare >= 30>>
-				As you have some skill in warfare, The Colonel believes<<if _S.Bodyguard>> with _S.Bodyguard.slaveName<</if>> you only need two full squads of armed soldiers for a walk around the arcology.
-			<<elseif $PC.skill.warfare >= 10>>
-				Your minor skill in warfare convinces The Colonel that <<if _S.Bodyguard>>in addition to _S.Bodyguard.slaveName, <</if>>you need two full squads of armed soldiers and an armored car escort for a simple walk around the arcology.
-			<<else>>
-				Your complete lack of combat skill convinces The Colonel that <<if _S.Bodyguard>>in addition to _S.Bodyguard.slaveName, <</if>>you need two full squads of armed soldiers, an armored car escort, and a sniper overwatch for a simple walk around the arcology.
-			<</if>>
-
-			<br>As you make your way through the arcology you stop at a
-			<<if $arcologies[0].FSPaternalist != "unset">>
-				paternalist shop, <<if $SF.Colonel.Core == "cruel">>earning a sneer from The Colonel<<else>>helping The Colonel select some luxurious and relaxing slave treatments<</if>>.
-			<<elseif $arcologies[0].FSPastoralist != "unset">>
-				pastoralist shop, helping The Colonel select a more comfortable breast pump.
-			<<else>>
-				shop that catches The Colonel's eye.
-			<</if>>
-			<<if $PC.skill.slaving >= 100 && $PC.career == "slaver">>
-				Your mastery and extensive history of slaving allows you to assist The Colonel greatly. The shop owner is so impressed by your understanding of slavery that she asks you for some advice. Before you leave, you manage to pass on a few tips, helping the business with future customers.
-				<<if $arcologies[0].prosperity < $AProsperityCap>>
-					<<set $arcologies[0].prosperity++>>
-				<</if>>
-			<<elseif $PC.skill.slaving >= 100>>
-				Your mastery and extensive history of slaving allows you to assist The Colonel greatly. The shop owner is so impressed by your understanding of slavery that she asks you for some advice. Before you leave, you manage to pass on a few tips, helping the business with future customers.
-				<<if $arcologies[0].prosperity < $AProsperityCap>>
-					<<set $arcologies[0].prosperity++>>
-				<</if>>
-			<<elseif $PC.skill.slaving >= 60>>
-				Your expertise in slavery allows you to help The Colonel decide what to buy for her main slave.
-			<<elseif $PC.skill.slaving >= 30>>
-				Your moderate skill in slavery makes you somewhat helpful to The Colonel in deciding what to buy for her main slave.
-			<<elseif $PC.skill.slaving >= 10>>
-				Your basic skill level of slavery doesn't allow you to help The Colonel at all.
-			<<elseif $PC.skill.slaving < 10>>
-				Your total lack of slavery skill (which is very unusual and very concerning for an arcology owner) means that you are of little to no help or even a hindrance. The shopkeeper notices your complete ineptitude, and as soon as you've left the rumor mill begins.
-				<<run repX(-20, "PCactions")>>
-			<</if>>
-			<br>Soon the entourage heads back to the HQ of $SF.Lower.
-			<<if random(1,100) > 50>>
-				Along the route you see a homeless citizen with a serious injury begging for help.
-				<<if $PC.skill.medicine >= 100 && $PC.career == "medicine">>
-					Your expertise in surgery ensures that the citizen receives the best care they'll ever experience in their life. They are so grateful that they are more than happy to try and compensate your time. Word quickly spreads of the kindly medically trained arcology owner who took the time to heal a citizen, providing confidence to the rest of the citizens.
-					<<run repX(10, "specialForces")>>
-					<<run cashX(_EnvCash4, "specialForces")>>
-				<<elseif $PC.skill.medicine >= 100>>
-					Your expertise in surgery ensures that the citizen receives the best care they'll ever experience in their life. Word quickly spreads of the kindly arcology owner who took the time to heal a citizen.
-					<<run repX(5, "specialForces")>>
-				<<elseif $PC.skill.medicine >= 60>>
-					Your proficiency in surgery allows you to properly close their wound with minimal trauma to the patient.
-				<<elseif $PC.skill.medicine >= 30>>
-					Your moderate surgical skill ensures that you can close the citizen's wound, though not without likely scarring.
-				<<elseif $PC.skill.medicine >= 10>>
-					Your basic surgical skill in medicine is sufficient only to stabilize the citizen's wounds before medical assistance arrives.
-				<<else>>
-					Your total lack of surgical skill causes the death of the citizen through repeated medical blunders.
-					<<set $arcologies[0].prosperity -= .25>>
-				<</if>>
-			<</if>>
-			<</replace>>
 		<</link>>
 	<</if>>
 
 	<br><<link "Talk in $SF.Lower's HQ">>
-		<<replace "#result0">>
-		<span id="result1">
-			<br><br>What do you want to do with The Colonel in the HQ?
-			<br><<link "Talk">>
-				<<replace "#result1">>
-				<<set $SF.Colonel.Talk = 1, $SF.Colonel.Status += 3, $SF.FS.Tension -= _colonelTalkTensionRuction>>
-				<br><br>You and The Colonel talk over some $PC.refreshment, where she ends up talking about her past. You learn a little more about her.
-				<<switch random(1,6)>>
-				<<case 1>>
-					<<= IncreasePCSkills(['medicine', 'trading', 'slaving'], 1)>>
-				<<case 2>>
-					<<= IncreasePCSkills(['trading', 'slaving', 'engineering'], 1)>>
-				<<case 3>>
-					<<= IncreasePCSkills(['slaving', 'engineering', 'hacking'], 1)>>
-				<<case 4>>
-					<<= IncreasePCSkills(['engineering', 'hacking', 'warfare'], 1)>>
-				<<case 5>>
-					<<= IncreasePCSkills(['hacking', 'warfare', 'medicine'], 1)>>
-				<<case 6>>
-					<<= IncreasePCSkills(['warfare', 'medicine', 'trading'], 1)>>
-				<</switch>>
-				<</replace>>
-			<</link>>
+		<<replace "#result2">>
+		<span id="result3">
+		<br><br>What do you want to do with The Colonel in the HQ?
+		<br><<link "Talk" "Firebase">>
+			<<set $SF.Colonel.Talk = 2, $SF.Colonel.Status += 3, $SF.FS.Tension -= _colonelTalkTensionRuction>>
+		<</link>>
 
-			<br><<link "Learn">>
-				<<replace "#result1">>
-				<<set $SF.Colonel.Talk = 1,$SF.Colonel.Status += 1, $SF.FS.Tension -= _colonelTalkTensionRuction>>
-				<br><br>"Sure boss, I can use a break from all of this," she laughs. The Colonel tells a story about one time when she
-				<<switch random(1,6)>>
-				<<case 1>>
-					used field medicine to save another merc's life, teaching you some medical procedures in the process.
-					<<= IncreasePCSkills('medicine', 5)>>
-				<<case 2>>
-					haggled for necessary gear with a stingy quartermaster, teaching you how to get what you want from traders.
-					<<= IncreasePCSkills('trading', 5)>>
-				<<case 3>>
-					found a load of human chattel in a raid and had to manage them before they could later be unloaded, teaching you how to better care for your slaves.
-					<<= IncreasePCSkills('slaving', 5)>>
-				<<case 4>>
-					was responsible for rebuilding a fort she had seized, teaching you how to better manage construction in your arcology.
-					<<= IncreasePCSkills('engineering', 5)>>
-				<<case 5>>
-					was forced to hack her way out of a trap, teaching you how to better penetrate digital security.
-					<<= IncreasePCSkills('hacking', 5)>>
-				<<case 6>>
-					fought off an entire battalion with only a small squad, teaching you how to think tactically in battle.
-					<<= IncreasePCSkills('warfare', 5)>>
-				<</switch>>
-				<</replace>>
-			<</link>>
+		<br><<link "Learn" "Firebase">>
+			<<set $SF.Colonel.Talk = 3,$SF.Colonel.Status += 1, $SF.FS.Tension -= _colonelTalkTensionRuction>>
+		<</link>>
 
-			<<if $SF.Colonel.Status >= 45>>
-				<br><<link "Have some fun">>
-					<<replace "#result1">>
-					<span id="result4">
-						<<set $SF.Colonel.Fun = 1,$SF.Colonel.Talk = 1,$SF.Colonel.Status += 3, $SF.FS.Tension -= _colonelTalkTensionRuction>>
-						<br>Where should this fun take place?
-						<<link "Go back" "Firebase">>
-							<<set $SF.Colonel.Fun = 0, $SF.Colonel.Talk = 0,$SF.Colonel.Status -= 3, $SF.FS.Tension += _colonelTalkTensionRuction>>
-						<</link>>
-						<br><<link "In private">>
-							<<replace "#result4">>
-							<span id="result6">
-								<br>Which orifice do you wish to target?
-								<<link "Go back" "Firebase">>
-								<</link>>
-								<br><<link "Pussy">>
-									<<replace "#result6">>
-									<<include "SFColonelSexDec">>
-									<</replace>>
-									<<set $SF.Colonel.Fun += 1>>
-								<</link>>
-								<br><<link "Ass">>
-									<<replace "#result6">>
-									<<include "SFColonelSexDec">>
-									<</replace>>
-									<<set $SF.Colonel.Fun += 1>>
-								<</link>>
-								<br><<link "Both pussy and ass">>
-									<<replace "#result6">>
-									<<include "SFColonelSexDec">>
-									<</replace>>
-									<<set $SF.Colonel.Fun += 2>>
-								<</link>>
-								<br><<link "Mouth">>
-									<<replace "#result6">>
-									<<include "SFColonelSexDec">>
-									<</replace>>
-									<<set $SF.Colonel.Fun += 1>>
-								<</link>>
-								<br><<link "All three holes">>
-									<<replace "#result6">>
-									<<include "SFColonelSexDec">>
-									<</replace>>
-									<<set $SF.Colonel.Fun += 3>>
-								<</link>>
-							</span>
-							<</replace>>
-						<</link>>
+		<<if $SF.Colonel.Status >= 45>> <br>
+			<<link "Have some fun">>
+				<<replace "#result3">>
+				<span id="result4">
+				<<set $SF.Colonel.Fun = 1, $SF.Colonel.Status += 3, $SF.FS.Tension -= _colonelTalkTensionRuction>>
+				<br><br>Where should this fun take place? 
+				<<link "Go back" "Firebase">>
+					<<set $SF.Colonel.Fun = 0, $SF.Colonel.Talk = 0,$SF.Colonel.Status -= 3, $SF.FS.Tension += _colonelTalkTensionRuction>>
+				<</link>>
+				<br><<link "In private">>
+					<<replace "#result4">>
+					<span id="result6">
+					<br><br>Which orifice do you wish to target?
+					<<link "Go back" "Firebase">> <</link>>
+					<br><<link "Pussy">>
+						<<replace "#result6">>
+						<<include "SFColonelSexDec">>
+						<</replace>>
+						<<set $SF.Colonel.Fun += 1>>
+					<</link>>
+					<br><<link "Ass">>
+						<<replace "#result6">>
+						<<include "SFColonelSexDec">>
+						<</replace>>
+						<<set $SF.Colonel.Fun += 1>>
+					<</link>>
+					<br><<link "Both pussy and ass">>
+						<<replace "#result6">>
+						<<include "SFColonelSexDec">>
+						<</replace>>
+						<<set $SF.Colonel.Fun += 2>>
+					<</link>>
+					<br><<link "Mouth">>
+						<<replace "#result6">>
+						<<include "SFColonelSexDec">>
+						<</replace>>
+						<<set $SF.Colonel.Fun += 1>>
+					<</link>>
+					<br><<link "All three holes">>
+						<<replace "#result6">>
+						<<include "SFColonelSexDec">>
+						<</replace>>
+						<<set $SF.Colonel.Fun += 3>>
+					<</link>>
+					</span>
+					<</replace>>
+				<</link>>
 
-						<br><<link "On The Colonel's throne">>
-							<<replace "#result4">>
-							<span id="result6">
-								<br>Which orifice do you wish to target?
-								<<link "Go back" "Firebase">>
-								<</link>>
-								<br><<link "Pussy">>
-									<<replace "#result6">>
-									<<include "SFColonelSexDec">>
-									<</replace>>
-									<<set $SF.Colonel.Fun += 1>>
-								<</link>>
-								<br><<link "Ass">>
-									<<replace "#result6">>
-									<<include "SFColonelSexDec">>
-									<</replace>>
-									<<set $SF.Colonel.Fun += 1>>
-								<</link>>
-								<br><<link "Both pussy and ass">>
-									<<replace "#result6">>
-									<<include "SFColonelSexDec">>
-									<</replace>>
-									<<set $SF.Colonel.Fun += 2>>
-								<</link>>
-								<br><<link "Mouth">>
-									<<replace "#result6">>
-									<<include "SFColonelSexDec">>
-									<</replace>>
-									<<set $SF.Colonel.Fun += 1>>
-								<</link>>
-								<br><<link "All three holes">>
-									<<replace "#result6">>
-									<<include "SFColonelSexDec">>
-									<</replace>>
-									<<set $SF.Colonel.Fun += 3>>
-								<</link>>
-							</span>
-							<</replace>>
-						<</link>>
+				<br><<link "On The Colonel's throne">>
+					<<replace "#result4">>
+					<span id="result6">
+					<br><br>Which orifice do you wish to target?
+					<<link "Go back" "Firebase">> <</link>>
+					<br><<link "Pussy">>
+						<<replace "#result6">>
+						<<include "SFColonelSexDec">>
+						<</replace>>
+						<<set $SF.Colonel.Fun += 1>>
+					<</link>>
+					<br><<link "Ass">>
+						<<replace "#result6">>
+						<<include "SFColonelSexDec">>
+						<</replace>>
+						<<set $SF.Colonel.Fun += 1>>
+					<</link>>
+					<br><<link "Both pussy and ass">>
+						<<replace "#result6">>
+						<<include "SFColonelSexDec">>
+						<</replace>>
+						<<set $SF.Colonel.Fun += 2>>
+					<</link>>
+					<br><<link "Mouth">>
+						<<replace "#result6">>
+						<<include "SFColonelSexDec">>
+						<</replace>>
+						<<set $SF.Colonel.Fun += 1>>
+					<</link>>
+					<br><<link "All three holes">>
+						<<replace "#result6">>
+						<<include "SFColonelSexDec">>
+						<</replace>>
+						<<set $SF.Colonel.Fun += 3>>
+					<</link>>
 					</span>
 					<</replace>>
 				<</link>>
-			<</if>> /*Closes fun*/
+			</span>
+			<</replace>>
+			<</link>>
+		<</if>> /*Closes fun*/
+
 		</span>
 		<</replace>>
-		<</link>> /*Closes talk*/
+	<</link>> /*Closes talk*/
 	</span>
-<</if>> /*Closes spend time with The Colonel*/
\ No newline at end of file
+<</if>> /*Closes spend time with The Colonel*/
+</span>
+
+<<if $SF.Colonel.Talk === 1>>
+	<br><br>You ask The Colonel if she would like to stretch her legs up on the surface. It doesn't take much effort for her to agree.
+	<<if $PC.skill.warfare >= 100 && $PC.career == "mercenary">>
+		Your mastery of wet work and prior experience in a PMC satisfies The Colonel that between you<<if _S.Bodyguard>>, _S.Bodyguard.slaveName,<</if>> and her, there should be little threat to walking around the arcology. Being able to see and interact with the arcology owner directly maintains the false idea that you're just like one of them while also giving them an increased opportunity to try gaining your favor.
+		<<run repX(10, "specialForces"), cashX(_EnvCash2, "specialForces")>>
+	<<elseif $PC.skill.warfare >= 100>>
+		Your mastery of wet work satisfies The Colonel that you only need two soldiers <<if _S.Bodyguard>> plus _S.Bodyguard.slaveName<</if>> to walk safely around the arcology. Being able to see and interact with the arcology owner directly maintains the false idea that you're just like one of them while also giving them an increased opportunity to try gaining your favor.
+		<<run repX(5, "specialForces"), cashX(_EnvCash3, "specialForces")>>
+	<<elseif $PC.skill.warfare >= 60>>
+		With some expertise in warfare, The Colonel believes <<if _S.Bodyguard>>with _S.Bodyguard.slaveName <</if>>you only need a squad of armed soldiers for a walk through the arcology.
+	<<elseif $PC.skill.warfare >= 30>>
+		As you have some skill in warfare, The Colonel believes<<if _S.Bodyguard>> with _S.Bodyguard.slaveName<</if>> you only need two full squads of armed soldiers for a walk around the arcology.
+	<<elseif $PC.skill.warfare >= 10>>
+		Your minor skill in warfare convinces The Colonel that <<if _S.Bodyguard>>in addition to _S.Bodyguard.slaveName, <</if>>you need two full squads of armed soldiers and an armored car escort for a simple walk around the arcology.
+	<<else>>
+		Your complete lack of combat skill convinces The Colonel that <<if _S.Bodyguard>>in addition to _S.Bodyguard.slaveName, <</if>>you need two full squads of armed soldiers, an armored car escort, and a sniper overwatch for a simple walk around the arcology.
+	<</if>>
+
+	<br>As you make your way through the arcology you stop at a
+	<<if $arcologies[0].FSPaternalist != "unset">>
+		paternalist shop, <<if $SF.Colonel.Core == "cruel">>earning a sneer from The Colonel<<else>>helping The Colonel select some luxurious and relaxing slave treatments<</if>>.
+	<<elseif $arcologies[0].FSPastoralist != "unset">>
+		pastoralist shop, helping The Colonel select a more comfortable breast pump.
+	<<else>>
+		shop that catches The Colonel's eye.
+	<</if>>
+	<<if $PC.skill.slaving >= 100 && $PC.career == "slaver">>
+		Your mastery and extensive history of slaving allows you to assist The Colonel greatly. The shop owner is so impressed by your understanding of slavery that she asks you for some advice. Before you leave, you manage to pass on a few tips, helping the business with future customers.
+		<<if $arcologies[0].prosperity < $AProsperityCap>>
+			<<set $arcologies[0].prosperity++>>
+		<</if>>
+	<<elseif $PC.skill.slaving >= 100>>
+		Your mastery and extensive history of slaving allows you to assist The Colonel greatly. The shop owner is so impressed by your understanding of slavery that she asks you for some advice. Before you leave, you manage to pass on a few tips, helping the business with future customers.
+		<<if $arcologies[0].prosperity < $AProsperityCap>>
+			<<set $arcologies[0].prosperity++>>
+		<</if>>
+	<<elseif $PC.skill.slaving >= 60>>
+		Your expertise in slavery allows you to help The Colonel decide what to buy for her main slave.
+	<<elseif $PC.skill.slaving >= 30>>
+		Your moderate skill in slavery makes you somewhat helpful to The Colonel in deciding what to buy for her main slave.
+	<<elseif $PC.skill.slaving >= 10>>
+		Your basic skill level of slavery doesn't allow you to help The Colonel at all.
+	<<elseif $PC.skill.slaving < 10>>
+		Your total lack of slavery skill (which is very unusual and very concerning for an arcology owner) means that you are of little to no help or even a hindrance. The shopkeeper notices your complete ineptitude, and as soon as you've left the rumor mill begins.
+		<<run repX(-20, "PCactions")>>
+	<</if>>
+	<br>Soon the entourage heads back to the HQ of $SF.Lower.
+	<<if random(1,100) > 50>>
+		Along the route you see a homeless citizen with a serious injury begging for help.
+		<<if $PC.skill.medicine >= 100 && $PC.career == "medicine">>
+			Your expertise in surgery ensures that the citizen receives the best care they'll ever experience in their life. They are so grateful that they are more than happy to try and compensate your time. Word quickly spreads of the kindly medically trained arcology owner who took the time to heal a citizen, providing confidence to the rest of the citizens.
+			<<run repX(10, "specialForces")>>
+			<<run cashX(_EnvCash4, "specialForces")>>
+		<<elseif $PC.skill.medicine >= 100>>
+			Your expertise in surgery ensures that the citizen receives the best care they'll ever experience in their life. Word quickly spreads of the kindly arcology owner who took the time to heal a citizen.
+			<<run repX(5, "specialForces")>>
+		<<elseif $PC.skill.medicine >= 60>>
+			Your proficiency in surgery allows you to properly close their wound with minimal trauma to the patient.
+		<<elseif $PC.skill.medicine >= 30>>
+			Your moderate surgical skill ensures that you can close the citizen's wound, though not without likely scarring.
+		<<elseif $PC.skill.medicine >= 10>>
+			Your basic surgical skill in medicine is sufficient only to stabilize the citizen's wounds before medical assistance arrives.
+		<<else>>
+			Your total lack of surgical skill causes the death of the citizen through repeated medical blunders.
+			<<set $arcologies[0].prosperity -= .25>>
+		<</if>>
+	<</if>>
+<<elseif $SF.Colonel.Talk === 2>>
+	<br><br>You and The Colonel talk over some $PC.refreshment, where she ends up talking about her past. You learn a little more about her.
+	<<switch random(1,6)>>
+	<<case 1>>
+		<<= IncreasePCSkills(['medicine', 'trading', 'slaving'], 1)>>
+	<<case 2>>
+		<<= IncreasePCSkills(['trading', 'slaving', 'engineering'], 1)>>
+	<<case 3>>
+		<<= IncreasePCSkills(['slaving', 'engineering', 'hacking'], 1)>>
+	<<case 4>>
+		<<= IncreasePCSkills(['engineering', 'hacking', 'warfare'], 1)>>
+	<<case 5>>
+		<<= IncreasePCSkills(['hacking', 'warfare', 'medicine'], 1)>>
+	<<case 6>>
+		<<= IncreasePCSkills(['warfare', 'medicine', 'trading'], 1)>>
+	<</switch>>
+<<elseif $SF.Colonel.Talk === 3>>
+	<br><br>"Sure boss, I can use a break from all of this," she laughs. The Colonel tells a story about one time when she
+	<<switch random(1,6)>>
+	<<case 1>>
+		used field medicine to save another merc's life, teaching you some medical procedures in the process.
+		<<= IncreasePCSkills('medicine', 5)>>
+	<<case 2>>
+		haggled for necessary gear with a stingy quartermaster, teaching you how to get what you want from traders.
+		<<= IncreasePCSkills('trading', 5)>>
+	<<case 3>>
+		found a load of human chattel in a raid and had to manage them before they could later be unloaded, teaching you how to better care for your slaves.
+		<<= IncreasePCSkills('slaving', 5)>>
+	<<case 4>>
+		was responsible for rebuilding a fort she had seized, teaching you how to better manage construction in your arcology.
+		<<= IncreasePCSkills('engineering', 5)>>
+	<<case 5>>
+		was forced to hack her way out of a trap, teaching you how to better penetrate digital security.
+		<<= IncreasePCSkills('hacking', 5)>>
+	<<case 6>>
+		fought off an entire battalion with only a small squad, teaching you how to think tactically in battle.
+		<<= IncreasePCSkills('warfare', 5)>>
+	<</switch>>
+<</if>>
\ No newline at end of file
diff --git a/src/data/backwardsCompatibility/backwardsCompatibility.js b/src/data/backwardsCompatibility/backwardsCompatibility.js
index 5d39d3c5b0494a40e0327a4bbfb85dbb4ef95b0e..e10008d8b8db09c2662726a27667290d2eb263aa 100644
--- a/src/data/backwardsCompatibility/backwardsCompatibility.js
+++ b/src/data/backwardsCompatibility/backwardsCompatibility.js
@@ -1260,6 +1260,10 @@ App.Update.globalVariables = function(node) {
 	V.boughtItem.toys.buttPlugs = V.boughtItem.toys.buttPlugs || V.toysBoughtButtPlugs || 0;
 	V.boughtItem.toys.buttPlugTails = V.boughtItem.toys.buttPlugTails || V.toysBoughtButtPlugTails || 0;
 
+	V.boughtItem.toys.buckets = V.boughtItem.toys.buckets || V.buckets || 0;
+	V.boughtItem.toys.enema = V.boughtItem.toys.enema || V.enema || 0;
+	V.boughtItem.toys.medicalEnema  = V.boughtItem.toys.medicalEnema  || V.medicalEnema || 0;
+
 	node.append(`Done!`);
 };
 
diff --git a/src/descriptions/arcologyDescription.js b/src/descriptions/arcologyDescription.js
index 12ef6da75cb1446e4732db60814a6c5fdaeb4773..c013250fc54ee4b9d32730dd072cbc739d544bc0 100644
--- a/src/descriptions/arcologyDescription.js
+++ b/src/descriptions/arcologyDescription.js
@@ -324,7 +324,7 @@ App.Desc.playerArcology = function(lastElement) {
 				}
 				if (V.seePreg === 1) {
 					if (V.brothelAdsPreg === 1) {
-						buffer.push(`Most of slaves have firm, rounded bellies.`);
+						buffer.push(`Most of the slaves have firm, rounded bellies.`);
 					} else if (V.brothelAdsPreg === -1) {
 						buffer.push(`Most of the slaves have firm, flat bellies.`);
 					} else {
diff --git a/src/endWeek/saChoosesOwnJob.js b/src/endWeek/saChoosesOwnJob.js
index 88d92960c58d6ea1f81c0855351a694c8f7e5ba0..6e2447dfa7f5b0ade1d8669b321ebd70d4ec16f8 100644
--- a/src/endWeek/saChoosesOwnJob.js
+++ b/src/endWeek/saChoosesOwnJob.js
@@ -48,15 +48,15 @@ App.SlaveAssignment.choosesOwnJob = (function() {
 		} else if (slave.choosesOwnAssignment === 2) {
 			// second pass happens visibly during weekly report for the location where this slave decided to go (or stay)
 			// display text but don't change assignment (already done)
-			r.push(slave.choosesOwnAssignmentText);
-			slave.choosesOwnAssignmentText = "";
+			r.push(V.choosesOwnAssignmentText[slave.ID]);
+			delete V.choosesOwnAssignmentText[slave.ID];
 			slave.choosesOwnAssignment = 1;
 			// continue cycle for next week
 		} else {
 			// first pass happens silently before all reports: give stats bonus, construct decision string for display during second pass, actually change assignment
 			slave.devotion++;
 			slave.trust++;
-			slave.choosesOwnAssignmentText = jobSelection(slave);
+			V.choosesOwnAssignmentText[slave.ID] = jobSelection(slave);
 		}
 
 		return r.join(" ");
diff --git a/src/events/RECI/butthole.js b/src/events/RECI/butthole.js
index f797aaf8ab36d24816c040243ff3622c22f964fa..dca2c363224f201aa2877b846fdc47bba205cfcc 100644
--- a/src/events/RECI/butthole.js
+++ b/src/events/RECI/butthole.js
@@ -233,13 +233,13 @@ App.Events.RECIButthole = class RECIButthole extends App.Events.BaseEvent {
 			(eventSlave.chastityAnus)
 				? new App.Events.Result(`Remind ${him} of ${his} chastity`, chaste)
 				: new App.Events.Result(),
-			(eventSlave.ID !== V.HeadGirlID)
+			(S.HeadGirl && eventSlave.ID !== V.HeadGirlID)
 				? new App.Events.Result(`Double anal with the Head Girl`, () => DoubleTeam(S.HeadGirl))
 				: new App.Events.Result(),
-			(eventSlave.ID !== V.ConcubineID && hasAnyLegs(S.Concubine) && hasAnyArms(S.Concubine) && S.Concubine.fetish !== "mindbroken")
+			(S.Concubine && eventSlave.ID !== V.ConcubineID && hasAnyLegs(S.Concubine) && hasAnyArms(S.Concubine) && S.Concubine.fetish !== "mindbroken")
 				? new App.Events.Result(`Double anal with your Concubine`, () => DoubleTeam(S.Concubine))
 				: new App.Events.Result(),
-			(eventSlave.ID !== V.BodyguardID)
+			(S.Bodyguard && eventSlave.ID !== V.BodyguardID)
 				? new App.Events.Result(`Double anal with your Body Guard`, () => DoubleTeam(S.Bodyguard))
 				: new App.Events.Result(),
 			new App.Events.Result(`Chat about ${his} ass`, talk),
diff --git a/src/events/intro/initNationalities.js b/src/events/intro/initNationalities.js
index b34f9d8f003f924eaddb302bcae69b86d8dddcfe..ecb9fbe0686d0235dd9f121954946eb463fce6ea 100644
--- a/src/events/intro/initNationalities.js
+++ b/src/events/intro/initNationalities.js
@@ -96,9 +96,7 @@ App.Intro.initNationalities = function() {
 			V.arcologyUpgrade.drones = 1;
 			V.arcologyUpgrade.hydro = 1;
 			if (V.secExpEnabled > 0) {
-				V.secBots.active = 1;
-				V.secBots.troops = 30;
-				V.secBots.maxTroops = 30;
+				V.secBots = App.SecExp.generateUnit("bots");
 			}
 		} else if (V.PC.career === "medicine") {
 			V.trinkets.push("a framed postsurgical x-ray");
diff --git a/src/events/intro/introSummary.tw b/src/events/intro/introSummary.tw
index be921e5753767cd93b71fca18f57ce4b420626b7..748d8d845e215e8175a3da6668053112582177a1 100644
--- a/src/events/intro/introSummary.tw
+++ b/src/events/intro/introSummary.tw
@@ -352,11 +352,17 @@ You may review your settings before clicking "Continue" to begin.<br>
 	<h2>Mods</h2>
 	<<set _options = new App.UI.OptionsGroup()>>
 
-	<<run _options.addOption("The Special Force Mod is", "Toggle", $SF).addComment("This mod is initially from anon1888 but expanded by SFanon offers a lategame special (started out as security but changed to special in order to try and reduce confusion with CrimeAnon's separate Security Expansion (SecExp) mod) force, that is triggered after week 80. It is non-canon where it conflicts with canonical updates to the base game.")
-	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
+	<<run _options.addOption("The Special Force Mod is", "Toggle", $SF)
+	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()
+	.addComment("<div>This mod is initially from anon1888 but expanded by SFanon offers a lategame special (started out as security but changed to special in order to try and reduce confusion with CrimeAnon's separate Security Expansion (SecExp) mod) force, that is triggered after week 72.</div> 
+	<div>It is non-canon where it conflicts with canonical updates to the base game.</div>")
+	>>
 
-	<<run _options.addOption("The Security Expansion Mod is", "secExpEnabled").addComment("This mod introduces security and crime in the arcology, as well as attacks and battles.")
-	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
+	<<run _options.addOption("The Security Expansion Mod is", "secExpEnabled")
+	.addValue("Enabled", 1).on().addValue("Disabled", 0).off()
+	.addComment("<div>This mod introduces security and crime in the arcology, as well as attacks and battles.</div> 
+	<div>The mod can be activated in any moment, but it may result in unbalanced gameplay if activated very late in the game.<div>")
+	>>
 
 	<<includeDOM _options.render()>>
 	</div>
diff --git a/src/gui/options/options.tw b/src/gui/options/options.tw
index ffbeac3eb3930d080d1ed43fd5bb528b8e055cb0..928a523ac5de7fe46c20d28898ba559c78bcc9a2 100644
--- a/src/gui/options/options.tw
+++ b/src/gui/options/options.tw
@@ -389,7 +389,8 @@
 		<<set _options = new App.UI.OptionsGroup()>>
 
 		<<run _options.addOption("The Special Force Mod is currently", "Toggle", $SF)
-		.addValue("Enabled", 1).on().addValue("Disabled", 0).off()>>
+		.addValue("Enabled", 1).on().addValue("Disabled", 0).off()
+		.addComment("<div>This mod is triggered after week 72. It is non-canon where it conflicts with canonical updates to the base game.</div>")>>
 
 		<<run _options.addOption("The Security Expansion mod is", "secExpEnabled")
 		.addValue("Enabled", 1).on().addValue("Disabled", 0).off()
diff --git a/src/gui/storyCaption.tw b/src/gui/storyCaption.tw
index c73a92b0d4a98ec45195ad8eca0f36e41d353ef3..d4562a07d4b16235cf7f46c4c076745d5c430a6c 100644
--- a/src/gui/storyCaption.tw
+++ b/src/gui/storyCaption.tw
@@ -182,52 +182,53 @@
 			</div>
 		<</if>>
 
-		<<if $secExpEnabled > 0 && ($sideBarOptions.Authority + $sideBarOptions.Security + $sideBarOptions.Crime > 0)>>
+		<<if $secExpEnabled == 1 && ($sideBarOptions.Authority + $sideBarOptions.Security + $sideBarOptions.Crime > 0)>>
 			<<if $sideBarOptions.Authority > 0>>
 				<div>
-				@@.darkviolet;Auth@@ |
+				@@.darkviolet;Auth@@ | @@.darkviolet;
 				<<set $SecExp.core.authority = Math.clamp(Math.trunc($SecExp.core.authority), 0, 20000)>>
 				<<if $SecExp.core.authority > 19500>>
-					@@color:rgb(148, 0, 211);divine will@@
+					divine will
 				<<elseif $SecExp.core.authority > 19000>>
-					@@color:rgb(148, 0, 211);sovereign@@
+					sovereign
 				<<elseif $SecExp.core.authority > 18000>>
-					@@color:rgb(148, 0, 211);monarch@@
+					monarch
 				<<elseif $SecExp.core.authority > 17000>>
-					@@color:rgb(148, 0, 211);tyrant@@
+					tyrant
 				<<elseif $SecExp.core.authority > 15000>>
-					@@color:rgb(148, 0, 211);dictator@@
+					dictator
 				<<elseif $SecExp.core.authority > 14000>>
-					@@color:rgb(148, 0, 211);prince@@
+					prince
 				<<elseif $SecExp.core.authority > 13000>>
-					@@color:rgb(183, 0, 211);master@@
+					master
 				<<elseif $SecExp.core.authority > 12000>>
-					@@color:rgb(183, 0, 211);leader@@
+					leader
 				<<elseif $SecExp.core.authority > 11000>>
-					@@color:rgb(183, 0, 211);director@@
+					director
 				<<elseif $SecExp.core.authority > 10000>>
-					@@color:rgb(183, 0, 211);overseer@@
+					overseer
 				<<elseif $SecExp.core.authority > 9000>>
-					@@color:rgb(183, 0, 211);chief@@
+					chief
 				<<elseif $SecExp.core.authority > 8000>>
-					@@color:rgb(183, 0, 211);manager@@
+					manager
 				<<elseif $SecExp.core.authority > 7000>>
-					@@color:rgb(211,0,204);principal@@
+					principal
 				<<elseif $SecExp.core.authority > 6000>>
-					@@color:rgb(211,0,204);auxiliary@@
+					auxiliary
 				<<elseif $SecExp.core.authority > 5000>>
-					@@color:rgb(211,0,204);subordinate@@
+					subordinate
 				<<elseif $SecExp.core.authority > 4000>>
-					@@color:rgb(211,0,204);follower@@
+					follower
 				<<elseif $SecExp.core.authority > 3000>>
-					@@color:rgb(211,0,204);powerless@@
+					powerless
 				<<elseif $SecExp.core.authority > 2000>>
-					@@color:rgb(211,0,204);toothless@@
+					toothless
 				<<elseif $SecExp.core.authority > 1000>>
-					@@color:rgb(211,0,204);mostly harmless@@
+					mostly harmless
 				<<else>>
-					@@color:rgb(211,0,204);harmless@@
+					harmless
 				<</if>>
+				@@
 				(<<= num($SecExp.core.authority)>>)
 				<<if _Pass == "Main" && $cheatMode && $cheatModeM>>
 					<<set _TAuth = $SecExp.core.authority>>
diff --git a/src/js/itemAvailability.js b/src/js/itemAvailability.js
index 044139009a3433d6a5d7cd8594ea80513be4eec8..8a05c65810293bc13806680888ae134218090353 100644
--- a/src/js/itemAvailability.js
+++ b/src/js/itemAvailability.js
@@ -104,7 +104,7 @@ globalThis.isItemAccessible = (function() {
 			return true;
 		}
 		if (item.hasOwnProperty("rs")) {
-			if (item.rs) {
+			if (item.rs === true) {
 				return true;
 			}
 		}
@@ -113,7 +113,7 @@ globalThis.isItemAccessible = (function() {
 				return true;
 			}
 		}
-		if (slaveResults) { // If we still haven't returned true or false, then we display why this particular slave can't use the item.
+		if (slaveResults && slaveResults !== true) { // If we still haven't returned true or false, then we display why this particular slave can't use the item.
 			return slaveResults;
 		}
 		return false;
diff --git a/src/npc/interaction/forceFeeding.tw b/src/npc/interaction/forceFeeding.tw
index 89a56c3a1a869d80a8219ff79528b1d988863cbe..fb793eb0b178b4e78b5454ba4164f9b4027b5616 100644
--- a/src/npc/interaction/forceFeeding.tw
+++ b/src/npc/interaction/forceFeeding.tw
@@ -2,6 +2,7 @@
 
 <<set $AS = $activeSlave.ID>>
 <<setLocalPronouns $activeSlave>>
+<<set $desc = SlaveTitle(getSlave($AS))>>
 
 <<set _belly = bellyAdjective(getSlave($AS))>>
 <<set getSlave($AS).bellyAccessory = "none", _isDone = getSlave($AS).inflation-1, _pregDiscovery = 0>>
diff --git a/src/pregmod/FCTV/FCTV.js b/src/pregmod/FCTV/FCTV.js
index d2a769c5a5f583c3e979357884998d87f91675fd..7433d13498b35385a3b7db1cc59268533c33b8ed 100644
--- a/src/pregmod/FCTV/FCTV.js
+++ b/src/pregmod/FCTV/FCTV.js
@@ -23,14 +23,10 @@ globalThis.FCTV = (function() {
 	};
 
 	/** Produce an array of numbers representing all available channels in App.Data.FCTV.channels
-	 * @returns {Array}
+	 * @returns {number[]}
 	 */
 	function channels() {
-		const array = [];
-		for (const channel in App.Data.FCTV.channels) {
-			array.push(parseInt(channel, 10));
-		}
-		return array;
+		return Object.keys(App.Data.FCTV.channels).map(chStr => parseInt(chStr, 10));
 	}
 
 	function initChannels() {
@@ -161,7 +157,7 @@ globalThis.FctvDisplay = function({usedRemote = 0, seeAll = 0, selectedChannel =
 		return jQuery("#FctvWatch").empty().append(frag);
 
 		/** Creates a remote control for FCTV
-		 * @returns {node}
+		 * @returns {HTMLParagraphElement}
 		 */
 		function createRemote() {
 			const p = document.createElement("p");
@@ -175,7 +171,7 @@ globalThis.FctvDisplay = function({usedRemote = 0, seeAll = 0, selectedChannel =
 					if (selectedChannel !== i) { // Selected button
 						buttons.push(
 							App.UI.DOM.link(
-								i,
+								i.toFixed(0),
 								() => {
 									watch({usedRemote: 1, seeAll: seeAll, selectedChannel: i});
 								}
@@ -187,7 +183,7 @@ globalThis.FctvDisplay = function({usedRemote = 0, seeAll = 0, selectedChannel =
 						span.style.fontWeight = "bold";
 						span.append(
 							App.UI.DOM.link(
-								i,
+								i.toFixed(0),
 								() => {
 									watch({usedRemote: 1, seeAll: seeAll, selectedChannel: i});
 								},
@@ -200,7 +196,7 @@ globalThis.FctvDisplay = function({usedRemote = 0, seeAll = 0, selectedChannel =
 					}
 				} else { // Channel you cannot choose
 					buttons.push(
-						App.UI.DOM.disabledLink(i, [showChannel(i).text])
+						App.UI.DOM.disabledLink(i.toFixed(0), [showChannel(i).text])
 					);
 				}
 			}
@@ -302,7 +298,7 @@ globalThis.FctvDisplay = function({usedRemote = 0, seeAll = 0, selectedChannel =
 		/**
 		 * Text to frame if content won't work due to tags.
 		 * @param {string} text Reason this channel/episode can't be shown
-		 * @returns {node}
+		 * @returns {Node}
 		 */
 		function channelFailed(text) {
 			const frag = new DocumentFragment;
@@ -314,7 +310,7 @@ globalThis.FctvDisplay = function({usedRemote = 0, seeAll = 0, selectedChannel =
 
 		/**
 		 * Displays just the channel itself, including art
-		 * @returns {node}
+		 * @returns {Node}
 		 */
 		function displayShow() {
 			const frag = new DocumentFragment();
@@ -343,11 +339,12 @@ globalThis.FctvDisplay = function({usedRemote = 0, seeAll = 0, selectedChannel =
 			if (channel.intro) {
 				$(frag).append(channel.intro);
 			}
-			if (channel.episode[epToShow].text) {
-				if (typeof channel.episode[epToShow].text === 'function') {
-					$(frag).append(channel.episode[epToShow].text(slave));
+			const episodeText = channel.episode[epToShow].text;
+			if (episodeText) {
+				if (typeof episodeText === 'function') {
+					$(frag).wiki(episodeText(slave));
 				} else {
-					$(frag).append(channel.episode[epToShow].text);
+					$(frag).wiki(episodeText);
 				}
 			}
 			if (channel.outro) {
diff --git a/src/pregmod/FCTV/FCTVshows.js b/src/pregmod/FCTV/FCTVshows.js
index e2a55380f317ccb66af951e6da832d9bc41bac91..ee9fcfead2ae5a6c875024ac782a0a0ac4dccbde 100644
--- a/src/pregmod/FCTV/FCTVshows.js
+++ b/src/pregmod/FCTV/FCTVshows.js
@@ -1,8 +1,4 @@
-/**
- * @typedef {object<string, App.Entity.SlaveState>} FctvActor
- */
-
-/** @type {object.<string, FctvActor>} */
+/** @type {Object.<string, App.Entity.SlaveState>} */
 App.Data.FCTV.actors = {
 	get millie() {
 		const slave = BaseSlave();
@@ -109,7 +105,7 @@ App.Data.FCTV.actors = {
 	},
 	get premiumVirgin() {
 		let slave = GenerateNewSlave("XX", {
-			disableDisability: 1, slaveOneTimeMinAge: (V.fertilityAge + 2), slaveOneTimeMaxAge: 18, ageOverridesPedoMode: 1
+			disableDisability: 1, minAge: (V.fertilityAge + 2), maxAge: 18, ageOverridesPedoMode: 1
 		});
 		slave.devotion = jsRandom(60, 90);
 		slave.weight = jsRandom(-10, 10);
@@ -154,7 +150,7 @@ App.Data.FCTV.actors = {
 	},
 	get hyperPregnant() {
 		let slave = GenerateNewSlave("XX", {
-			disableDisability: 1, slaveOneTimeMinAge: (V.fertilityAge + 3), slaveOneTimeMaxAge: 20, ageOverridesPedoMode: 1
+			disableDisability: 1, minAge: (V.fertilityAge + 3), maxAge: 20, ageOverridesPedoMode: 1
 		});
 		slave.weight = jsRandom(10, 20);
 		slave.waist = jsRandom(-25, 25);
@@ -203,7 +199,7 @@ App.Data.FCTV.actors = {
 	},
 	get superfetation() { // superfetation
 		let slave = GenerateNewSlave("XX", {
-			disableDisability: 1, slaveOneTimeMinAge: (V.fertilityAge + 4), slaveOneTimeMaxAge: 24, ageOverridesPedoMode: 1
+			disableDisability: 1, minAge: (V.fertilityAge + 4), maxAge: 24, ageOverridesPedoMode: 1
 		});
 
 		slave.weight = jsRandom(20, 40);
@@ -246,7 +242,7 @@ App.Data.FCTV.actors = {
 	},
 	get MILF() { // MILF
 		let slave = GenerateNewSlave("XX", {
-			disableDisability: 1, slaveOneTimeMinAge: 36, slaveOneTimeMaxAge: 40, ageOverridesPedoMode: 1
+			disableDisability: 1, minAge: 36, maxAge: 40, ageOverridesPedoMode: 1
 		});
 		slave.weight = jsRandom(20, 90);
 		slave.waist = jsRandom(-45, 45);
@@ -284,7 +280,7 @@ App.Data.FCTV.actors = {
 		return slave;
 	},
 	get youngHottie() { // discount young hottie
-		let slave = GenerateNewSlave("XX", {disableDisability: 1, slaveOneTimeMaxAge: 25, ageOverridesPedoMode: 1});
+		let slave = GenerateNewSlave("XX", {disableDisability: 1, maxAge: 25, ageOverridesPedoMode: 1});
 
 		slave.face = jsRandom(70, 100);
 		slave.weight = jsRandom(-5, 10);
@@ -318,7 +314,7 @@ App.Data.FCTV.actors = {
 		return slave;
 	},
 	get hugeBalls() { // huge balls
-		let slave = GenerateNewSlave("XY", {disableDisability: 1, slaveOneTimeMaxAge: 25, ageOverridesPedoMode: 1});
+		let slave = GenerateNewSlave("XY", {disableDisability: 1, maxAge: 25, ageOverridesPedoMode: 1});
 
 		slave.anus = 2;
 		slave.balls = jsRandom(20, 35);
@@ -334,7 +330,7 @@ App.Data.FCTV.actors = {
 		return slave;
 	},
 	get mpreg() { // mpreg dickgirl
-		let slave = GenerateNewSlave("XY", {disableDisability: 1, slaveOneTimeMaxAge: 22, ageOverridesPedoMode: 1});
+		let slave = GenerateNewSlave("XY", {disableDisability: 1, maxAge: 22, ageOverridesPedoMode: 1});
 		slave.anus = 2;
 		slave.vagina = 1;
 		slave.ovaries = 0;
@@ -409,14 +405,14 @@ App.Data.FCTV.actors = {
 	},
 	get hostess() {
 		const gender = (V.seeDicks === 100) ? "XY" : "XX";
-		let races = 0;
+		let races = [];
 		if (V.arcologies[0].FSSupremacistLawME === 1) {
-			races = V.arcologies[0].FSSupremacistRace;
+			races = [V.arcologies[0].FSSupremacistRace];
 		} else if (V.arcologies[0].FSSubjugationistLawME === 1) {
 			races = setup.filterRacesLowercase.filter(race => race !== V.arcologies[0].FSSubjugationistRace);
 		}
 		const slave = GenerateNewSlave(gender, {
-			ageOverridesPedoMode: 1, oneTimeDisableDisability: 1, slaveOneTimeMinAge: 25, slaveOneTimeMaxAge: 35, fixedRace: races.jsRandom()
+			ageOverridesPedoMode: 1, disableDisability: 1, minAge: 25, maxAge: 35, race: races.random()
 		});
 		slave.devotion = 45;
 		slave.trust = 55;
@@ -438,14 +434,14 @@ App.Data.FCTV.actors = {
 	},
 	get scientist() {
 		const gender = (V.seeDicks === 0) ? "XY" : "XX";
-		let races = 0;
+		let races = [];
 		if (V.arcologies[0].FSSupremacistLawME === 1) {
-			races = V.arcologies[0].FSSupremacistRace;
+			races = [V.arcologies[0].FSSupremacistRace];
 		} else if (V.arcologies[0].FSSubjugationistLawME === 1) {
 			races = setup.filterRacesLowercase.filter(race => race !== V.arcologies[0].FSSubjugationistRace);
 		}
 		const slave = GenerateNewSlave(gender, {
-			ageOverridesPedoMode: 1, oneTimeDisableDisability: 1, slaveOneTimeMinAge: 25, slaveOneTimeMaxAge: 35, fixedRace: races.jsRandom()
+			ageOverridesPedoMode: 1, disableDisability: 1, minAge: 25, maxAge: 35, race: races.random()
 		});
 
 		slave.devotion = 0;
@@ -470,18 +466,18 @@ App.Data.FCTV.actors = {
 	},
 	get nun() {
 		const gender = (V.seeDicks === 100) ? "XY" : "XX";
-		let races = 0;
+		let races = [];
 		if (V.arcologies[0].FSSupremacistLawME === 1) {
-			races = V.arcologies[0].FSSupremacistRace;
+			races = [V.arcologies[0].FSSupremacistRace];
 		} else if (V.arcologies[0].FSSubjugationistLawME === 1) {
 			races = setup.filterRacesLowercase.filter(race => race !== V.arcologies[0].FSSubjugationistRace);
 		}
 		const slave = GenerateNewSlave(gender, {
-			ageOverridesPedoMode: 1, oneTimeDisableDisability: 1, slaveOneTimeMinAge: 25, slaveOneTimeMaxAge: 35, fixedRace: races.jsRandom()
+			ageOverridesPedoMode: 1, disableDisability: 1, minAge: 25, maxAge: 35, race: races.random()
 		});
 
 		slave.devotion = jsRandom(45, 60);
-		slave.trust = jsRandom(-10);
+		slave.trust = jsRandom(-10, 0);
 		slave.muscles = 30;
 		slave.hLength = 1;
 		slave.hStyle = "buzzcut";
@@ -517,17 +513,18 @@ App.Data.FCTV.actors = {
 /**
  * @typedef {object} FctvChannel
  * @property {FctvTags} [tags]
+ * @property {boolean} [disableSelection]
  * @property {boolean} loop After an initial viewing, should the episodes continue to play in order?
- * @property {string} intro
+ * @property {string} [intro]
  * @property {FctvEpisode[]} episode
- * @property {function(App.Entity.SlaveState, [number]):string} outro Takes slave and episode number
+ * @property {function(App.Entity.SlaveState, number):string | Node} [outro] Takes slave and episode number
  */
 
 /**
  * @typedef {object} FctvEpisode
  * @property {FctvTags} [tags]
  * @property {App.Entity.SlaveState[]} [slaves]
- * @property {string} text HTML embedded
+ * @property {(function(App.Entity.SlaveState):string) | string} text HTML embedded
  */
 
 /**
@@ -537,9 +534,10 @@ App.Data.FCTV.actors = {
  * @property {boolean} [loli]
  * @property {boolean} [extreme]
  * @property {boolean} [dicks]
+ * @property {boolean} [incest]
  */
 
-/** @type {object.<number, FctvChannel>} */
+/** @type {Object.<number, FctvChannel>} */
 App.Data.FCTV.channels = {
 	0: { // News
 		tags: {},
@@ -662,17 +660,17 @@ App.Data.FCTV.channels = {
 					r.push(`<p>The montage is overlaid with a narrator's voice: "12 of Canadia Arcology's most attractive women are all competing for the privilege of having the arcology owner's children. Clint Miles has desirable genes, and these ladies are determined to prove their worth as gestators. And here in Canadia, there are no restrictions on fertility drugs for the winner, so the competition this season is fierce! ${V.FCTV.channel.two} ladies have already been sent packing, who will be Canadia's... Next Top Breeder!?" The title finally pops up, redundantly labeling the show as 'Next Top Breeder: Canadia'.`);
 					if (MSL >= 1) {
 						r.push(`</p><p>You don't spend very much time actually watching the show; the randy opening, perverted competitions, and constant talk of creampies quickly has`);
-						if (MSL >= 1 && S.Concubine !== 0) {
+						if (MSL >= 1 && S.Concubine) {
 							r.push(`<span class="pink">${S.Concubine.slaveName}</span> eager for some attention from ${getPronouns(S.Concubine).possessive} own arcology owner. Of course, the same could be said for the other eager slaves living in your bedroom, and the situation quickly devolves into a lust-filled`);
 							if (MSL > 1) {
 								r.push(`orgy.`);
 							} else {
 								r.push(`threesome.`);
 							}
-						} else if (MSL === 0 && S.Concubine !== 0) {
+						} else if (MSL === 0 && S.Concubine) {
 							const {his2, him2, he2} = getPronouns(S.Concubine).appendSuffix(`2`);
 							r.push(`<span class="pink">${S.Concubine.slaveName}</span> eager for some attention from ${his2} own arcology owner. You've trained ${him2} well, and ${he2} knows exactly how to please you. You spend the rest of the evening doing something a lot more fun than watching reality TV.`);
-						} else if (MSL >= 1 && S.Concubine === 0) {
+						} else if (MSL >= 1 && !S.Concubine) {
 							r.push(`the pleasure slaves in your bed eager for some attention from their own arcology owner. You spend the rest of the evening doing something a lot more fun than watching reality TV.`);
 						}
 					}
@@ -1046,7 +1044,7 @@ App.Data.FCTV.channels = {
 		loop: false,
 		get intro() {
 			const r = [];
-			r.push(`which is currently showing an episode of the 'Modern Dairy' edutainment series, which opens with a montage of milk-related food and cooking shots. After the last of the opening credits disappears, the show sticks to a single shot from the montage, a delicious looking bowl of cereal. The camera zooms out to reveal the show's host wearing her trademark cow print leotard, and getting just a little too much enjoyment out of her cereal. She slowly puts the spoon down while savoring her cereal, reluctantly swallowing and starting the show. "Hi there y'all, welcome to another episode of Modern Dairy!" She gives the camera a wave — setting her gargantuan melons wobbling inside the spandex-like leotard — and the camera fades to black.</p>`);
+			r.push(`which is currently showing an episode of the 'Modern Dairy' edutainment series, which opens with a montage of milk-related food and cooking shots. After the last of the opening credits disappears, the show sticks to a single shot from the montage, a delicious looking bowl of cereal. The camera zooms out to reveal the show's host wearing her trademark cow print leotard, and getting just a little too much enjoyment out of her cereal. She slowly puts the spoon down while savoring her cereal, reluctantly swallowing and starting the show. "Hi there y'all, welcome to another episode of Modern Dairy!" She gives the camera a wave — setting her gargantuan melons wobbling inside the spandex-like leotard — and the camera fades to black.`);
 			return r.join(" ");
 		},
 		episode: [
@@ -1130,7 +1128,7 @@ App.Data.FCTV.channels = {
 			} else {
 				r.push(`Your practical experience means that this program is unlikely to tell you anything you don't already know, but you watch anyway to see how an average citizen views an arcology.`);
 			}
-			r.push(`</p><p>A likely-artificial voice of an older man narrates while the program displays video to demonstrate the topic being narrated. The show looks crisp and professional, but you can tell it doesn't have the budget that the more sexually-charged shows do.</p>`);
+			r.push(`<p>A likely-artificial voice of an older man narrates while the program displays video to demonstrate the topic being narrated. The show looks crisp and professional, but you can tell it doesn't have the budget that the more sexually-charged shows do.</p>`);
 			return r.join(" ");
 		},
 		episode: [
@@ -1169,6 +1167,7 @@ App.Data.FCTV.channels = {
 		intro: `which is currently showing a preview of the how-to series "Extreme Gestation for Fun and Profit", hosted by Millie. It seems like the show's going to cover topics ranging from hyper-pregnancy to broodmother implants, and even hints and some sort of medical technique to allow anal pregnancy in males.`,
 		episode: [
 			{
+				text: null,
 				slaves: [
 					App.Data.FCTV.actors.millie
 				],
@@ -1191,7 +1190,7 @@ App.Data.FCTV.channels = {
 				},
 				get text() {
 					const r = [];
-					r.push(`surging Repopulation movement: "Continuing the Dream". After the opening credits, the documentary introduces a young and extremely pregnant woman as the commentator. The program makes an impassioned argument about the need for a new generation of citizens and slaves that were born into the dream of the Free Cities. The woman is wearing semi-conservative business attire, and has on elegant makeup. She looks somewhat plain when compared to the hyper-sexualized style of other FCTV shows, though she does make it plain over the course of the program that she loves sex more than ever. She tends to use herself as an example to show that pregnancy no longer means limitations or sacrifice, instead emphasizing that she's on her fifth pregnancy and would rather be with child than without.</p>`);
+					r.push(`surging Repopulation movement: "Continuing the Dream". After the opening credits, the documentary introduces a young and extremely pregnant woman as the commentator. The program makes an impassioned argument about the need for a new generation of citizens and slaves that were born into the dream of the Free Cities. The woman is wearing semi-conservative business attire, and has on elegant makeup. She looks somewhat plain when compared to the hyper-sexualized style of other FCTV shows, though she does make it plain over the course of the program that she loves sex more than ever. She tends to use herself as an example to show that pregnancy no longer means limitations or sacrifice, instead emphasizing that she's on her fifth pregnancy and would rather be with child than without.`);
 					r.push(`<p>The woman makes two main points during the course of the documentary. The first is that the combined population of the Free Cities needs to grow explosively for 'Free City Society' to become stable. She points out several economic reasons, including the drive to invest in research and infrastructure. She has interviews with experts explaining the need for independence; that the Free Cities are still dependent on the old world industrially and financially, and that the population must expand dramatically to avoid going down with the metaphorical ship. The more Free Cities there are, the more they become free and independent of the old world.</p>`);
 					r.push(`<p>The second point concerns the source of the new citizens and slaves that the Free Cities need. Her arguments concerning citizens focus on the unique culture of the Free Cities, and the direction that the future society will take. She points out that immigrants from the old world are rooted in its decaying culture. She asks her viewers how long it took them to adapt to their new lives, and how often they find themselves doubting their new home subconsciously. She admits that even she sometimes finds something wrong or repulsive, until she realizes that it's the ghost of her past life clinging to her. A noted psychologist talks about the strong hold people's earlier lives has on them, and how developing the promise of the Free Cities will need a generation untainted by the old world. The documentary's argument for slaves largely comes down to the fact that second-generation slaves are happier, better adjusted, and simply better slaves.</p>`);
 					if (policies.countEugenicsSMRs() > 0) {
@@ -1221,10 +1220,10 @@ App.Data.FCTV.channels = {
 				get text() {
 					const r = [];
 					if (V.arcologies[0].FSGenderFundamentalist === "unset") {
-						r.push(`increasingly-popular Gender Radicalist movement titled: "Power, not Biology". After the opening credits, the documentary introduces an androgynous documentarian in a nicely-cut suit. The finely tailored suit doesn't try to hide the person's breasts, which seem to be a pretty average D-cup. Similarly, another bulge is visible stretching down one of the pants legs. The futanari opens with a pretty simple question: "Am I a man, or am I a woman?" The documentary is focused on answering that question in the context of a modern era where medical science means that genitalia are irrelevant. It argues that a person's body no longer has any relation to their sexuality or ambition, that being free means choosing the body that pleases you most, and that society needs new criteria from which to determine gender.</p>`);
+						r.push(`increasingly-popular Gender Radicalist movement titled: "Power, not Biology". After the opening credits, the documentary introduces an androgynous documentarian in a nicely-cut suit. The finely tailored suit doesn't try to hide the person's breasts, which seem to be a pretty average D-cup. Similarly, another bulge is visible stretching down one of the pants legs. The futanari opens with a pretty simple question: "Am I a man, or am I a woman?" The documentary is focused on answering that question in the context of a modern era where medical science means that genitalia are irrelevant. It argues that a person's body no longer has any relation to their sexuality or ambition, that being free means choosing the body that pleases you most, and that society needs new criteria from which to determine gender.`);
 						r.push(`<p>The criteria suggested by the documentary is power. The idea is simple; the powerful are male, the weak are female. It argues that the biology and sexual proclivities of a person simply can't represent them any longer. The powerful are often free to choose the body and activities they wish to pursue, while the weak have those decisions made for them. It's a practical argument, and the documentary gives a long list of evidence supporting it, from expert interviews to ancient civilizations that followed a similar idea. The concept is somewhat appealing to you; after all, you wield extraordinary power, and a large part of that power includes altering the bodies of others. Whatever you choose to do, you can't see any reason to let your slaves and citizens criticize you for it.</p>`);
 					} else if (V.arcologies[0].FSGenderRadicalist === "unset") {
-						r.push(`conservative Gender Fundamentalism movement titled: "It's Eve, NOT Steve". After the outdated graphics finish displaying the garish opening credits, a portly man in late middle age introduces himself as Reverend Brad, the apparent commentator of the program. You don't pay much attention, but learn that apparently the Futanari Sisters are whore agents of Satan. You also learn that you're apparently destined for hell because of the medical technology in your penthouse that could be used to alter someone's naughty bits. You did get a good laugh when the reverend started yelling that choir boys are boys, and if he wanted a girl he would've found a nun.</p>`);
+						r.push(`conservative Gender Fundamentalism movement titled: "It's Eve, NOT Steve". After the outdated graphics finish displaying the garish opening credits, a portly man in late middle age introduces himself as Reverend Brad, the apparent commentator of the program. You don't pay much attention, but learn that apparently the Futanari Sisters are whore agents of Satan. You also learn that you're apparently destined for hell because of the medical technology in your penthouse that could be used to alter someone's naughty bits. You did get a good laugh when the reverend started yelling that choir boys are boys, and if he wanted a girl he would've found a nun.`);
 						r.push(`<p>You have to admit that most of the show is complete bullshit, but you can't deny that it's useful for controlling your citizens. As long as they're filling their heads with this bullshit, they won't be getting any dangerous ideas from somewhere else. In a more practical sense, it's a lot easier to manage an arcology and a house full of slaves when you don't have to worry about crazy gender issues or people disliking pregnant slaves.</p>`);
 					}
 					return r.join(" ");
@@ -1268,11 +1267,11 @@ App.Data.FCTV.channels = {
 				get text() {
 					const r = [];
 					if (V.arcologies[0].FSSlimnessEnthusiast === "unset") {
-						r.push(`growing Asset Expansionist movement titled: "More of a Good Thing". After a brief set of opening credits the documentary dives immediately into short clips of numerous interviews with stacked women stating that they love having big tits and a big ass. Eventually, a man and woman are introduced as the hosts of the program. Both are finely dressed in the recent fashions, and despite the subject of the documentary, they don't have humongous assets. The woman does have huge breasts, wide hips, and a large derrière; the man has a noticeable bulge in his pants, but nothing extreme. The hosts explain that seeing Asset Expansionism as a call for ridiculous size is something of a misconception. They emphasize that it's about the freedom to enjoy more of a good thing.</p>`);
+						r.push(`growing Asset Expansionist movement titled: "More of a Good Thing". After a brief set of opening credits the documentary dives immediately into short clips of numerous interviews with stacked women stating that they love having big tits and a big ass. Eventually, a man and woman are introduced as the hosts of the program. Both are finely dressed in the recent fashions, and despite the subject of the documentary, they don't have humongous assets. The woman does have huge breasts, wide hips, and a large derrière; the man has a noticeable bulge in his pants, but nothing extreme. The hosts explain that seeing Asset Expansionism as a call for ridiculous size is something of a misconception. They emphasize that it's about the freedom to enjoy more of a good thing.`);
 						r.push(`<p>The documentary makes several arguments in favor of the movement, and is clear about explaining the natural biological attraction humans have to large assets. By interviewing stacked members of the movement and psychological experts alike, they try to demonstrate how larger assets lead to happier and more pleasurable lives, both in and out of the bedroom. The documentary neatly tops off its argument by demonstrating how assets have been expanding naturally since the start of the twentieth century, and claiming that it's silly to idolize the way humans looked before modern nutrition and medicine. Western countries in the old world already had average bust sizes of D-cup or larger by the turn of the century, the hosts claim that trying to go back to smaller sizes is synonymous with reducing the prosperity of free citizens.</p>`);
 					} else if (V.arcologies[0].FSAssetExpansionist === "unset") {
 						r.push(`Slimness Enthusiast counter movement titled: "Slim Is In". Artistic opening credits play across the screen before a slim woman walks up and begins talking to the camera conversationally. She seems to be in her mid to late thirties, and is wearing conservative makeup to accent her natural beauty. Her narrow waist combines with her slim hips and full shoulders to create a balanced but muted hourglass profile. It's a look that was popular for decades on fashion models in the old world, and it improves the attractiveness of her B- or C-cup breasts and taut butt. It's obvious that the woman aspires to be a role model in addition to being the documentary's commentator.</p>`);
-						r.push(`<p>Much of the documentary's arguments center around the concept of fashion and the privileged. They point out how in the past societal changes have altered what people find attractive, giving skin tans as an example. When most worked outside and only the privileged stayed indoors pale skin was considered attractive. When the world changed and most people worked indoors, suddenly the tan skin of those with leisure time to spend outside came into vogue. She argues that modern hormones can easily expand the assets of the masses, but that only the privileged can afford to sculpt themselves into an ideal form like hers. She points out that even though the masses may imitate with surgery, they'll never be able to copy the naturally good bone structure and vibrancy of the well-bred elite.</p>`);
+						r.push(`<p>Much of the documentary's arguments center around the concept of fashion and the privileged. They point out how in the past societal changes have altered what people find attractive, giving skin tans as an example. When most worked outside and only the privileged stayed indoors pale skin was considered attractive. When the world changed and most people worked indoors, suddenly the tan skin of those with leisure time to spend outside came into vogue. She argues that modern hormones can easily expand the assets of the masses, but that only the privileged can afford to sculpt themselves into an ideal form like hers. She points out that even though the masses may imitate with surgery, they'll never be able to copy the naturally good bone structure and vibrancy of the well-bred elite.`);
 					}
 					return r.join(" ");
 				}
@@ -1318,10 +1317,10 @@ App.Data.FCTV.channels = {
 				get text() {
 					const r = [];
 					if (V.arcologies[0].FSTransformationFetishist === "unset") {
-						r.push(`spreading Body Purist movement titled: "Don't Settle for Imitations". The opening credits are displayed over a series of comparison images showing beautiful breasts and asses next to obviously artificial imitations of the same. The screen splits and shows the two hosts in their own environments side by side. One is an extremely attractive doctor, her body is exquisitely curvy underneath her lab coat and her face is an impossible combination of beautiful and cute. The other host is an artist with graying hair; he's working in his studio to create a life-size sculpture of the first host. He starts off the documentary by asking why people are so eager to destroy the natural beauty of the human form. The doctor continues by asking why people are so impatient that they get implants instead of using a superior process of targeted hormonal growth.</p>`);
+						r.push(`spreading Body Purist movement titled: "Don't Settle for Imitations". The opening credits are displayed over a series of comparison images showing beautiful breasts and asses next to obviously artificial imitations of the same. The screen splits and shows the two hosts in their own environments side by side. One is an extremely attractive doctor, her body is exquisitely curvy underneath her lab coat and her face is an impossible combination of beautiful and cute. The other host is an artist with graying hair; he's working in his studio to create a life-size sculpture of the first host. He starts off the documentary by asking why people are so eager to destroy the natural beauty of the human form. The doctor continues by asking why people are so impatient that they get implants instead of using a superior process of targeted hormonal growth.`);
 						r.push(`<p>The documentary keeps up the two-viewpoint style and approaches the issue from two directions. The first is the stark aesthetic differences between natural and artificial bodies. It demonstrates why implants always fall short of the beauty they seek to imitate, and how those with implants are doomed to a vicious cycle of surgery to try and recapture the beauty they lost in the initial surgery. The other angle, presented by the doctor, is a lot more practical. It points out the numerous shortcomings of implants when compared to natural growth, such as the frequent need for maintenance surgeries, the significant extra health risks, the reduced pleasure and sensitivity felt by implant patients, and the extreme difficulty of a patient to get what they want. Taken together the argument is pretty simple: why get implants when other medical options are cheaper, safer, more effective, healthier, and more attractive?</p>`);
 					} else if (V.arcologies[0].FSBodyPurist === "unset") {
-						r.push(`rise of the Transformation Fetish titled: "The Mass Insanity of Adding Mass". The opening credits are styled to look like a psychological case study from a mental institution. When the credits finish, the video cuts to a scene of a man sitting behind a desk, the whole shot is high contrast due to the harsh lighting from a lone desk lamp. The middle-aged man screams 'hard-boiled' and looks like he walked straight out of a noir film to host this documentary. His opening monologue makes it pretty clear that this documentary has a lot of parallels with a crime documentary. Worse, is that the evidence and expert witnesses available to the producers were apparently overwhelming, because the program seems rushed trying to fit as much as it can into a narrow time slot.</p>`);
+						r.push(`rise of the Transformation Fetish titled: "The Mass Insanity of Adding Mass". The opening credits are styled to look like a psychological case study from a mental institution. When the credits finish, the video cuts to a scene of a man sitting behind a desk, the whole shot is high contrast due to the harsh lighting from a lone desk lamp. The middle-aged man screams 'hard-boiled' and looks like he walked straight out of a noir film to host this documentary. His opening monologue makes it pretty clear that this documentary has a lot of parallels with a crime documentary. Worse, is that the evidence and expert witnesses available to the producers were apparently overwhelming, because the program seems rushed trying to fit as much as it can into a narrow time slot.`);
 						r.push(`<p>Evidence and whatever else be damned, this isn't the kind of documentary that should be on the FCTV stream in your arcology. You tell ${V.assistant.name} to remind you to send a complaint in the morning.</p>`);
 					}
 					return r.join(" ");
@@ -1338,7 +1337,7 @@ App.Data.FCTV.channels = {
 				},
 				get text() {
 					const r = [];
-					r.push(`surging Repopulation movement: "Continuing the Dream". After the opening credits, the documentary introduces a young and extremely pregnant woman as the commentator. The program makes an impassioned argument about the need for a new generation of citizens and slaves that were born into the dream of the Free Cities. The woman is wearing semi-conservative business attire, and has on elegant makeup. She looks somewhat plain when compared to the hyper-sexualized style of other FCTV shows, though she does make it plain over the course of the program that she loves sex more than ever. She tends to use herself as an example to show that pregnancy no longer means limitations or sacrifice, instead emphasizing that she's on her fifth pregnancy and would rather be with child than without.</p>`);
+					r.push(`surging Repopulation movement: "Continuing the Dream". After the opening credits, the documentary introduces a young and extremely pregnant woman as the commentator. The program makes an impassioned argument about the need for a new generation of citizens and slaves that were born into the dream of the Free Cities. The woman is wearing semi-conservative business attire, and has on elegant makeup. She looks somewhat plain when compared to the hyper-sexualized style of other FCTV shows, though she does make it plain over the course of the program that she loves sex more than ever. She tends to use herself as an example to show that pregnancy no longer means limitations or sacrifice, instead emphasizing that she's on her fifth pregnancy and would rather be with child than without.`);
 					r.push(`<p>The woman makes two main points during the course of the documentary. The first is that the combined population of the Free Cities needs to grow explosively for 'Free City Society' to become stable. She points out several economic reasons, including the drive to invest in research and infrastructure. She has interviews with experts explaining the need for independence; that the Free Cities are still dependent on the old world industrially and financially, and that the population must expand dramatically to avoid going down with the metaphorical ship. The more Free Cities there are, the more they become free and independent of the old world.</p>`);
 					r.push(`<p>The second point concerns the source of the new citizens and slaves that the Free Cities need. Her arguments concerning citizens focus on the unique culture of the Free Cities, and the direction that the future society will take. She points out that immigrants from the old world are rooted in its decaying culture. She asks her viewers how long it took them to adapt to their new lives, and how often they find themselves doubting their new home subconsciously. She admits that even she sometimes finds something wrong or repulsive, until she realizes that it's the ghost of her past life clinging to her. A noted psychologist talks about the strong hold people's earlier lives has on them, and how developing the promise of the Free Cities will need a generation untainted by the old world. The documentary's argument for slaves largely comes down to the fact that second-generation slaves are happier, better adjusted, and simply better slaves.`);
 					if (policies.countEugenicsSMRs() > 0) {
@@ -1374,7 +1373,7 @@ App.Data.FCTV.channels = {
 				r.push(`The fluid enthusiast Mike and Mindy pair are wearing their usual style in new colors, the clothes appearing to be as soddenly wet as any other episode.`);
 			}
 
-			r.push(`</p><p>Mindy kicks off the show, speaking to the audience. "Welcome to another episode of Cum and Cream!"</p>`);
+			r.push(`<p>Mindy kicks off the show, speaking to the audience. "Welcome to another episode of Cum and Cream!"</p>`);
 			return r.join(" ");
 		},
 		episode: [
@@ -1409,7 +1408,7 @@ App.Data.FCTV.channels = {
 				},
 				get text() {
 					const r = [];
-					r.push(`Mike unexpectedly moves over and starts rubbing Mindy's stomach, the extra attention highlighting how big her stomach is. "Mindy, don't tell me you went and got yourself knocked up... Your belly has gotten downright huge!"</p>`);
+					r.push(`Mike unexpectedly moves over and starts rubbing Mindy's stomach, the extra attention highlighting how big her stomach is. "Mindy, don't tell me you went and got yourself knocked up... Your belly has gotten downright huge!"`);
 					r.push(`<p>Mindy laughs and chides Mike. "Oh Mike! You know I'm waiting for the perfect`);
 					if (V.seeDicks === 0) {
 						r.push(`<i>smile</i>`);
@@ -1458,7 +1457,7 @@ App.Data.FCTV.channels = {
 					} else {
 						r.push(`erection`);
 					}
-					r.push(`as he continues the introduction. "Tonight we have a truly special treat for you, and it's all thanks to Arcology Imperiales!"</p>`);
+					r.push(`as he continues the introduction. "Tonight we have a truly special treat for you, and it's all thanks to Arcology Imperiales!"`);
 					r.push(`<p>Mindy continues, and makes no attempt to hide the fact that she has one hand stuffed inside her bikini bottom. "Thanks to the wonderful Dr. Picarde, owner of Arcology Imperiales, we have access to three amazing sex slaves for tonight's challenge!"</p>`);
 					r.push(`<p>Mike nods enthusiastically. "Mindy, tell everyone what makes them so special!"</p>`);
 					r.push(`<p>Mindy gushes her explanation. "Well they're inflation fetishists, of course, but they're also masochists! But that's not all! They've been voluntarily modified with cutting-edge surgery to allow them to burst when they've been overfilled, without any danger at all!"</p>`);
@@ -1487,9 +1486,7 @@ App.Data.FCTV.channels = {
 		]
 	},
 	11: {// sag-B-gone
-		tags: {},
 		loop: true,
-		intro: ``,
 		episode: [
 			{
 				get slaves() {
@@ -1501,16 +1498,16 @@ App.Data.FCTV.channels = {
 				},
 				get text() {
 					const r = [];
-					const {his} = S.Concubine ? getPronouns(S.Concubine) : {};
-					const {title: Master} = canTalk(S.Concubine) ? getEnunciation(S.Concubine) : {};
+					const {He = '', him = '', his = ''} = S.Concubine ? getPronouns(S.Concubine) : {};
+					const {title: Master = ''} = canTalk(S.Concubine) ? getEnunciation(S.Concubine) : {};
 
 					if (FCTV.channelCount(11, 1, 'gt')) {
 						r.push(`, once again,`);
 					}
-					r.push(`which is currently showing an infomercial attempting to sell a product named "sag-B-gone" that claims to be able to prevent breasts from naturally sagging under their own weight.</p><p>`);
+					r.push(`which is currently showing an infomercial attempting to sell a product named "sag-B-gone" that claims to be able to prevent breasts from naturally sagging under their own weight.<p>`);
 					if (V.purchasedSagBGone === 1) {
 						r.push(`You've already made the mistake of ordering the sham of a product. While it gave you a great excuse to fondle breasts, it's not like you needed one in the first place.</p>`);
-						if (S.Concubine !== 0 && canTalk(S.Concubine)) {
+						if (S.Concubine && canTalk(S.Concubine)) {
 							r.push(`<p>`);
 							r.push(Spoken(S.Concubine, `"I told you it wouldn't work, ${Master}. Plus you know you can touch these anytime!"`));
 							r.push(`${S.Concubine.slaveName} shakes ${his} chest at you.</p>`);
@@ -1526,7 +1523,7 @@ App.Data.FCTV.channels = {
 							if (V.PC.dick !== 0) {
 								r.push(`At the very least it should make for some decent lubricant for a titfuck.`);
 							}
-							if (S.Concubine !== 0) {
+							if (S.Concubine) {
 								r.push(`</p><p>`);
 								if (S.Concubine.boobs > 2000 && S.Concubine.boobShape === "saggy") {
 									r.push(S.Concubine.slaveName);
@@ -1600,7 +1597,7 @@ App.Data.FCTV.channels = {
 								r.push(`You cup your huge breasts. They're pretty large and you swear they've been drooping a little lately; maybe you could benefit from this cream...`);
 							}
 						}
-						r.push(`<div id="called">`);
+						r.push(`</p><div id="called">`);
 						r.push(App.UI.link(
 							"Place an order",
 							() => {
@@ -1631,7 +1628,7 @@ App.Data.FCTV.channels = {
 			{
 				get text() {
 					const r = [];
-					r.push(`For a moment you consider changing the channel, but you decide to give it a shot.</p>`);
+					r.push(`For a moment you consider changing the channel, but you decide to give it a shot.`);
 					r.push(`<p>The woman posed in the mirror. She was tall for a woman, fair skinned, and wore a keyhole sweater dress. Her scarlet hair was done in a braid down her back and her plump lips were covered in ruby red lipstick. She was slender, but not intolerably so; at the very least, she filled out her dress enough to avoid being arrested for indecency. All in all, the woman's reflection made for a pleasant picture. The only thing detracting from this scene was her glare.</p>`);
 					r.push(`<p>"Hey Scott, do you have anything a bit more conservative?" The woman asked. "We've been over this." Scott said. "Not showing off your breasts is seen as very rude here." Scott frowned, "Well, that's not entirely correct, but it is seen as distinctly unfriendly; the only girls who don't show some cleavage are frigid cunts and old-worlders fresh off the boat."</p>`);
 					r.push(`<p>The woman kept glaring in the mirror. "I understand that, but what is the point of this?" she said, pulling at the slits in the fabric at her sides. "Oh, those are for girls who want get milked on-the-go and not disrupt the view of their cleavage. Also, for this." The man said as he reached through the slits to give her breasts a polite squeeze.</p>`);
@@ -1833,7 +1830,7 @@ App.Data.FCTV.channels = {
 					} else {
 						r.push(`which is currently in`);
 					}
-					r.push(`the middle of a "real life" documentary.</p>`);
+					r.push(`the middle of a "real life" documentary.`);
 					r.push(`<p>The mountain roads started getting dangerous when the rains started getting bad. All that water washed away the earth and loosened up rocks that had been there for ages. Rock slides started getting more and more common, so the roads started getting less and less traffic. People with enough money took planes to get across the mountains, and those without money just stayed put. That is until things started getting worse over there. There was an exodus of desperate people leaving some time ago after their government withdrew from the area, and that many vehicles was enough to bring down the rocks and kill hundreds. All that was left back home was those stupid enough to think things would get better, and those smart enough to realize that crossing was death. Now the roads are in pretty bad shape, but occasionally some groups come through. Either stupid or desperate, and either case works for us.</p>`);
 					r.push(`<p>Two vans trundle down the road in the early morning fog, seen only by a pair of vague red shapes on a screen. Probably a family trying their escape. The vehicles slow to a halt and a couple of human shapes step out. A good portion of the road in front of them is gone. Maybe if they were on motorbikes they would be able to use what's left, but, as it stands, they're probably going to have to all get out and walk the rest of the way.</p>`);
 					r.push(`<p>The click of static from a radio breaks the silence. "Recon, report?"</p>`);
@@ -1873,7 +1870,7 @@ App.Data.FCTV.channels = {
 					} else {
 						r.push(`skipping straight to`);
 					}
-					r.push(`the middle of yet another "real life" documentary.</p>`);
+					r.push(`the middle of yet another "real life" documentary.`);
 					r.push(`<p>The dull blueish glow of a simple terminal illuminates a haggard, pock-marked face as it gazes at account data just barely in the black. A simple reminder breaks the tense silence between the figure and the machine. "Deployment at 1800. Two hour reminder."</p>`);
 					r.push(`<p>With a heavy sigh the figure shuts the terminal and heads out into the sun-lit concourse, grabbing a simple handbag as they go. They join the flowing chaos of people heading in the direction of the market sectors. After a time they break from the river of bodies toward a multi-level piece of solid, pristine white built into the massive, slowly curving wall of businesses that makes up the center of the arcology's markets. The simple black text marks the building as "Vinewood Hospital." A crystal clear door slides open silently at the figure's approach, the thin, metal frame moving being the only indication that anything had changed. The interior of the structure is, like the exterior, a chilly, sterile white. A few staff in simple, pastel scrubs move around the open reception area, all making efforts to stay clear of the figure's path toward the reception counter.</p>`);
 					r.push(`<p>At their approach, the reception slave gives a smile that only looks slightly forced, "How can I help you today?"</p>`);
@@ -1937,12 +1934,12 @@ App.Data.FCTV.channels = {
 			{
 				get text() {
 					const r = [];
-					r.push(`which is currently showing the newest episode of a family-oriented soap opera. The intro shows a beautiful family of three, featuring a husband, wife, and young daughter. When they show the events of the previous episode, it quickly becomes clear that this episode is the finale of the current season of the show.</p>`);
+					r.push(`which is currently showing the newest episode of a family-oriented soap opera. The intro shows a beautiful family of three, featuring a husband, wife, and young daughter. When they show the events of the previous episode, it quickly becomes clear that this episode is the finale of the current season of the show.`);
 					r.push(`<p>The episode opens with the husband waking up alone in bed and finding a note on his nightstand that his wife had left for him at the end of the previous episode. Through narration in his head, the note is read aloud to the audience.</p>`);
 					r.push(`<p>"Jason, I'm sorry you had to find out like this, but I had no other choice. I didn't want to fight about this, and I didn't want you to think you could change my mind. I'm leaving, and this time I'm not coming back. I tried for so many years to make this work, but I never really wanted a family to begin with. I'm no mother, and I never could be. By the time you read this I'll already be in another arcology, much too far away for you to find me. Please take care of Jessica in all the ways I couldn't."</p>`);
 					r.push(`<p>After finishing the note, Jason weeps into his hands before the camera transitions to a shot showing him in a rather nice kitchen explaining to his daughter where her mother went. His deep sadness is all displayed right there on his face, much to the actor's credit. His daughter leaves for school, but not before looking back through the doorway at her depressed father with pity. The camera pans to one of the large windows illuminating the kitchen, and zooms in on some street whores before dissolving into a shot of Jason walking that same street.</p>`);
 					r.push(`<p>He stops just short of a few prostitutes, seeing one that remarkably resembles his now ex-wife. He seems torn, but quickly replaces the hesitant look on his face with one of determination. He approaches the whore with a few ¤ in hand, and in less than a minute she's dragging him by the hand down a nearby alley. She stops right in the middle of it, hikes up her short skirt, and bends over with her hands against the steel wall in front of her before turning her head to Jason and speaking.</p>`);
-					r.push(`<p>"I don't care if anyone sees, but most customers prefer this way." she giggles, as Jason undoes his pants. Despite the fact that he has a rear-view of a perfect, smooth pussy and a taut, pink asshole, Jason can't achieve an erection. "What's the matter?" the hooker asks him. "Need me to take care of you?" A short flashback sequence plays, centered on the note from earlier. "Take care of Jessica." his wife's disembodied voice implores him, the audio mixed to sound haunting and reverberate.</p>`);
+					r.push(`<p>"I don't care if anyone sees, but most customers prefer this way." she giggles, as Jason undoes his pants. Despite the fact that he has a rear-view of a perfect, smooth pussy and a taut, pink asshole, Jason can't achieve an erection. "What's the matter?" the hooker asks him. "Need me to take care of you?" A short flashback sequence plays, centered on the note from earlier. "Take care of Jessica." his wife's disembodied voice implores him, the audio mixed to reverberate hauntingly.</p>`);
 					r.push(`<p>"Keep the money." Jason says before he immediately runs off, leaving the hooker looking perplexed and then bored in the dingy alley. With a quick cut he's back in his apartment, watching an in-universe parody of a popular real-world FCTV show. His daughter conveniently gets home at that exact time, throwing open the door and kicking off the shoes to her school uniform. "Hi Daddy!" she says, far too jubilant considering the events of that morning. "Hi Jessica." he replies sullenly.</p>`);
 					r.push(`<p>You start wondering if you should even be playing this, as the sadness has utterly killed the mood in the room.`);
 					if (V.fuckSlaves > 0) {
@@ -2008,26 +2005,26 @@ App.Data.FCTV.channels = {
 						r.push(`appreciating the life growing within you and what future prospects may await it.</p>`);
 					} else if (V.PC.dick >= 1) {
 						r.push(`<p>Stunned and fully erect, you inexplicably feel the urge to creampie a pussy, so you`);
-						if (S.Concubine !== 0 && S.Concubine.vagina > 0 && canDoVaginal(S.Concubine)) {
+						if (S.Concubine && S.Concubine.vagina > 0 && canDoVaginal(S.Concubine)) {
 							const {him} = getPronouns(S.Concubine);
 							r.push(`grab ${S.Concubine.slaveName} and recreate the entire ending with ${him}.`);
 							S.Concubine.counter.vaginal++;
 							V.vaginalTotal++;
 							if (canImpreg(S.Concubine, V.PC)) {
-								r.push(knockMeUp(S.Concubine, 10, 0, -1, 1));
+								r.push(knockMeUp(S.Concubine, 10, 0, -1, true));
 							}
 						} else if (V.fuckSlaves > 0) {
 							r.push(`grab the nearest slave watching with you, who is overjoyed to recreate the entire ending with you.`);
 						} else {
-							r.push(`make your way to the slave dormitory and pick out the perfect ${slave}.`);
+							r.push(`make your way to the slave dormitory and pick out the perfect slave.`);
 						}
 						r.push(`You've never had a more hope-filled orgasm.</p>`);
 					} else if (V.PC.vagina >= 1) {
 						r.push(`<p>Stunned and soaking wet, you hurry to`);
-						if (S.Concubine !== 0 && canPenetrate(S.Concubine) && canImpreg(V.PC, S.Concubine) && (V.policies.sexualOpenness === 1 || S.Concubine.toyHole === "dick")) {
+						if (S.Concubine && canPenetrate(S.Concubine) && canImpreg(V.PC, S.Concubine) && (V.policies.sexualOpenness === 1 || S.Concubine.toyHole === "dick")) {
 							const {him} = getPronouns(S.Concubine);
 							r.push(`get ${S.Concubine.slaveName} nice and hard before recreating the entire ending with ${him}. You've never had a more hope-filled orgasm.`);
-							r.push(knockMeUp(V.PC, 10, 0, S.Concubine.ID, 1));
+							r.push(knockMeUp(V.PC, 10, 0, S.Concubine.ID, true));
 							S.Concubine.counter.penetrative++;
 							V.penetrativeTotal++;
 						} else if (V.policies.sexualOpenness === 1) {
@@ -2044,7 +2041,7 @@ App.Data.FCTV.channels = {
 			{
 				get text() {
 					const r = [];
-					r.push(`currently displaying a Free Cities documentary on the benefits of aphrodisiacs, which is almost halfway over. A montage of out-of-context shots of injectors, suppositories, and bottles of liquid interspersed with very horny, sweaty slaves needily grinding on each other plays before cutting back to the presenter, a gorgeous young woman with long, brown hair in a tight one-piece red dress and matching heels. Her dress, practically a second skin, proudly reveals that she definitely isn't wearing a bra or panties of any kind but still leaves plenty up to the imagination increasing her enticing presence. She's with a handsome man in a lab coat, and they're sitting on a couch in an office with a microphone on a coffee table between them.</p>`);
+					r.push(`currently displaying a Free Cities documentary on the benefits of aphrodisiacs, which is almost halfway over. A montage of out-of-context shots of injectors, suppositories, and bottles of liquid interspersed with very horny, sweaty slaves needily grinding on each other plays before cutting back to the presenter, a gorgeous young woman with long, brown hair in a tight one-piece red dress and matching heels. Her dress, practically a second skin, proudly reveals that she definitely isn't wearing a bra or panties of any kind but still leaves plenty up to the imagination increasing her enticing presence. She's with a handsome man in a lab coat, and they're sitting on a couch in an office with a microphone on a coffee table between them.`);
 					r.push(`<p>"I met with one of the leading scientists working on cleaner, higher-purity aphrodisiacs." the woman presenting narrates.</p>`);
 					r.push(`<p>The scientist's volume fades in, and you can finally hear what he has to say. "The problem with most of the cheap stuff is it can make you sick and it can be really hard to kick an addiction to it. With products similar to what we aim to create those risks are severely mitigated, showing that the potential for healthy, prolonged use of aphrodisiacs exists, and that cessation of use can be significantly easier."</p>`);
 					r.push(`<p>The woman cuts in with a question. "But won't an easier time quitting mean a weaker product?"`);
@@ -2087,7 +2084,7 @@ App.Data.FCTV.channels = {
 			{
 				get text() {
 					const r = [];
-					r.push(`the pirate themed channel. Apparently this is a live feed produced by a band of pirates and you tuned in right as they board a small pleasure craft.</p>`);
+					r.push(`the pirate themed channel. Apparently this is a live feed produced by a band of pirates and you tuned in right as they board a small pleasure craft.`);
 					r.push(`<p>Three armed pirates are swiftly sweeping the boat, gathering the passengers, a man, his wife and his two children, on deck and tying them up. The camera is attached to the pirate captain as he sweeps below deck finding their supplies.</p>`);
 					r.push(`<p>"Manta, this is Orca" the captain radios. "Looks like they were in for a long trip, there's boxes of supplies down here that would last them weeks."</p>`);
 					r.push(`<p>"Aye, Captain Orca, Fleeing ol' world collapse seems like." The reply comes through on the radio. "Don't rightly know where they were headin' to, maybe to Tortuga to be citizens, maybe to another country. Sure is a nice boat though."</p>`);
@@ -2113,7 +2110,7 @@ App.Data.FCTV.channels = {
 			// All actors are at least 18
 			const r = [];
 			r.push(`<p>As you snuggle in for the night`);
-			if (S.Concubine !== 0) {
+			if (S.Concubine) {
 				r.push(`with your concubine, you`);
 			} else {
 				r.push(`you`);
diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw
index 7797dc30398c96397b640c12533b8d93db685048..217ffb489b191d7cf6efd07d1a17ffef76330b13 100644
--- a/src/uncategorized/RESS.tw
+++ b/src/uncategorized/RESS.tw
@@ -15676,7 +15676,7 @@ brought in to you. This time <<= App.UI.slaveDescriptionDialog($activeSlave)>> h
 <<if canDoAnal($activeSlave)>>
 	<<link "Fuck $him">>
 		<<replace "#result">>
-			You announce that you're going to fuck $his <<if $activeSlave.anus == 0>>virgin <</if>>asspussy. To your complete lack of surprise, $he can't hide $his horror at the prospect of <<if $PC.dick != 0>>having a cock inside $his<<else>>being fucked with a strap-on<</if>>, and $his <<if canSee($activeSlave)>>wide, <<= App.Desc.eyesColor($activeSlave)>> track<<else>>terrified face follows<</if>> your movements closely as you stand up and <<if $PC.dick != 0>>reveal the formidable member<<else>>don the strap-on<</if>> you're about to breed $him with. You order $him to <<if hasAnyLegs($activeSlave)>>kneel<<else>>get<</if>> on the couch, which $he does, @@.gold;cringing in fear of being buttfucked, but knowing disobedience will be worse;@@ and then you order $him to reach down and spread $his butt for you, as wide as it'll go. $He complies,
+			You announce that you're going to fuck $his <<if $activeSlave.anus == 0>>virgin <</if>>asspussy. To your complete lack of surprise, $he can't hide $his horror at the prospect of <<if $PC.dick != 0>>having a cock inside $him<<else>>being fucked with a strap-on<</if>>, and $his <<if canSee($activeSlave)>>wide, <<= App.Desc.eyesColor($activeSlave)>> track<<else>>terrified face follows<</if>> your movements closely as you stand up and <<if $PC.dick != 0>>reveal the formidable member<<else>>don the strap-on<</if>> you're about to breed $him with. You order $him to <<if hasAnyLegs($activeSlave)>>kneel<<else>>get<</if>> on the couch, which $he does, @@.gold;cringing in fear of being buttfucked, but knowing disobedience will be worse;@@ and then you order $him to reach down and spread $his butt for you, as wide as it'll go. $He complies,
 			<<if $activeSlave.butt > 12>>
 				grabbing as much flesh as $he can of each monstrous buttock and heaving them as far apart as $he can manage in an attempt
 			<<elseif $activeSlave.butt > 6>>
diff --git a/src/uncategorized/brothel.tw b/src/uncategorized/brothel.tw
index 88eabec01bd81ec3ed06e73ef9b92bc8f78e0bc4..7d41fd1475a5989dfdfcca77dc1d6592e04b33a9 100644
--- a/src/uncategorized/brothel.tw
+++ b/src/uncategorized/brothel.tw
@@ -98,7 +98,7 @@
 		<</if>>
 		<<if $seePreg == 1>>
 			<<if $brothelAdsPreg == 1>>
-				Most of slaves have firm, rounded bellies.
+				Most of the slaves have firm, rounded bellies.
 			<<elseif $brothelAdsPreg == -1>>
 				Most of the slaves have firm, flat bellies.
 			<<else>>
diff --git a/src/uncategorized/brothelAdvertisement.tw b/src/uncategorized/brothelAdvertisement.tw
index 6578d5031a708863ca4d0914c2ca146846bb7577..cf03039aafb9c8617bbfb9073dcbcee7efbec6a7 100644
--- a/src/uncategorized/brothelAdvertisement.tw
+++ b/src/uncategorized/brothelAdvertisement.tw
@@ -90,7 +90,7 @@
 		<</if>>
 		<<if $seePreg == 1>>
 			<<if $brothelAdsPreg == 1>>
-				Most of slaves have firm, rounded bellies.
+				Most of the slaves have firm, rounded bellies.
 			<<elseif $brothelAdsPreg == -1>>
 				Most of the slaves have firm, flat bellies.
 			<<else>>
diff --git a/src/uncategorized/club.tw b/src/uncategorized/club.tw
index a131b01108c8b808a04e648c103346600695aa20..264823944969fed4d2d79a07ca60dd334a292111 100644
--- a/src/uncategorized/club.tw
+++ b/src/uncategorized/club.tw
@@ -258,7 +258,7 @@
 
 <div>
 	<<if _S.DJ>>
-		<<if _S.DJignoresFlaws != 1>>
+		<<if $DJignoresFlaws != 1>>
 			_S.DJ.slaveName will attempt to fix flaws in <<print $clubName>>'s sluts.
 			[[Ignore flaws|Club][$DJignoresFlaws = 1]]
 		<<else>>
diff --git a/src/uncategorized/manageArcology.tw b/src/uncategorized/manageArcology.tw
index c27d239ff46364b1dc9bcdc4a2ae909ac9e108c4..9a50bee0d2bd6655f69d86b29f1a1f02a937fde5 100644
--- a/src/uncategorized/manageArcology.tw
+++ b/src/uncategorized/manageArcology.tw
@@ -52,9 +52,8 @@
 		<<link "Install drone security system" "Manage Arcology">>
 			<<run cashX(forceNeg(Math.trunc(5000*$upgradeMultiplierArcology)), "capEx")>>
 			<<set $arcologyUpgrade.drones = 1, $PC.skill.engineering += 1>>
-			<<if $secExpEnabled == 1>>
-				<<run App.SecExp.Check.general()>>
-				<<set $secBots.active = 1, $secBots.troops = $secBots.maxTroops = 30>>
+			<<if $secExpEnabled > 0>>
+				<<set $secBots = App.SecExp.generateUnit("bots")>>
 			<</if>>
 		<</link>>
 	<<elseif $arcologyUpgrade.hydro != 1>>
diff --git a/src/uncategorized/wardrobe.tw b/src/uncategorized/wardrobe.tw
index 4cbd5736ff2aa699d69a62f36f067f611d3791d8..90d798bfc61da9c524688411de19bda567b7e6d1 100644
--- a/src/uncategorized/wardrobe.tw
+++ b/src/uncategorized/wardrobe.tw
@@ -573,13 +573,13 @@ The room containing all the clothes and accessories you have available to dress
 <p>
 	<div>
 	<<if $boughtItem.toys.dildos == 0>>
-		[[Order a shipment of extra long dildos and bullet vibes|Wardrobe][cashX(forceNeg(Math.trunc(10000 * $upgradeMultiplierTrade)), "capEx"), $boughtItem.clothing.dildos = 1]]
+		[[Order a shipment of extra long dildos and bullet vibes|Wardrobe][cashX(forceNeg(Math.trunc(10000 * $upgradeMultiplierTrade)), "capEx"), $boughtItem.toys.dildos = 1]]
 		<span class="detail">Costs <<print cashFormat(Math.trunc(10000 * $upgradeMultiplierTrade))>></span>
 	<<else>>
 		You are well stocked with extra long dildos in a variety of sizes, as well as a good amount of bullet vibrators.
-		<<if $boughtItem.clothing.smartVibes == 0>>
+		<<if $boughtItem.toys.smartVibes == 0>>
 			<div class="indent">
-				[[Order the "smart" variant of the bullet vibrators|Wardrobe][cashX(forceNeg(Math.trunc(5000 * $upgradeMultiplierTrade)), "capEx"), $boughtItem.clothing.smartVibes = 1]]
+				[[Order the "smart" variant of the bullet vibrators|Wardrobe][cashX(forceNeg(Math.trunc(5000 * $upgradeMultiplierTrade)), "capEx"), $boughtItem.toys.smartVibes = 1]]
 				<span class="detail">Costs <<print cashFormat(Math.trunc(5000 * $upgradeMultiplierTrade))>></span>
 			</div>
 		<<else>>
@@ -590,7 +590,7 @@ The room containing all the clothes and accessories you have available to dress
 
 	<div>
 	<<if $boughtItem.toys.vaginalAttachments == 0>>
-		[[Order a shipment of vibrating dildo attachments|Wardrobe][cashX(forceNeg(Math.trunc(10000 * $upgradeMultiplierTrade)), "capEx"), $boughtItem.clothing.vaginalAttachments = 1]]
+		[[Order a shipment of vibrating dildo attachments|Wardrobe][cashX(forceNeg(Math.trunc(10000 * $upgradeMultiplierTrade)), "capEx"), $boughtItem.toys.vaginalAttachments = 1]]
 		<span class="detail">Costs <<print cashFormat(Math.trunc(10000 * $upgradeMultiplierTrade))>></span>
 	<<else>>
 		You are well stocked with attachments that allow dildos to vibrate.
@@ -599,7 +599,7 @@ The room containing all the clothes and accessories you have available to dress
 
 	<div>
 	<<if $boughtItem.toys.buttPlugs == 0>>
-		[[Order a shipment of extra long buttplugs|Wardrobe][cashX(forceNeg(Math.trunc(10000 * $upgradeMultiplierTrade)), "capEx"), $boughtItem.clothing.buttPlugs = 1]]
+		[[Order a shipment of extra long buttplugs|Wardrobe][cashX(forceNeg(Math.trunc(10000 * $upgradeMultiplierTrade)), "capEx"), $boughtItem.toys.buttPlugs = 1]]
 		<span class="detail">Costs <<print cashFormat(Math.trunc(10000 * $upgradeMultiplierTrade))>></span>
 	<<else>>
 		You are well stocked with extra long buttplugs in a variety of sizes.
@@ -608,7 +608,7 @@ The room containing all the clothes and accessories you have available to dress
 
 	<div>
 	<<if $boughtItem.toys.buttPlugTails == 0>>
-		[[Order a shipment of attachable tails|Wardrobe][cashX(forceNeg(Math.trunc(5000 * $upgradeMultiplierTrade)), "capEx"), $boughtItem.clothing.buttPlugTails = 1]]
+		[[Order a shipment of attachable tails|Wardrobe][cashX(forceNeg(Math.trunc(5000 * $upgradeMultiplierTrade)), "capEx"), $boughtItem.toys.buttPlugTails = 1]]
 		<span class="detail">Costs <<print cashFormat(Math.trunc(5000 * $upgradeMultiplierTrade))>></span>
 	<<else>>
 		You are well stocked with tails to attach to your buttplugs.