diff --git a/js/003-data/gameVariableData.js b/js/003-data/gameVariableData.js
index df5e20795791d5fbc3be387a182de46d994860da..03f80e106f913acf671bffe82f6138ee3b2d72f8 100644
--- a/js/003-data/gameVariableData.js
+++ b/js/003-data/gameVariableData.js
@@ -481,16 +481,11 @@ App.Data.resetOnNGPlus = {
 	secBotsUpgradeCost: 250,
 	equipUpgradeCost: 250,
 	maxTroops: 30,
-	militiaTotalManpower: 0,
 	militiaFreeManpower: 0,
-	militiaEmployedManpower: 0,
 	militiaTotalCasualties: 0,
-	slavesEmployedManpower: 0,
 	slavesTotalCasualties: 0,
 	slavesMaxTroops: 30,
-	mercTotalManpower: 0,
 	mercFreeManpower: 0,
-	mercEmployedManpower: 0,
 	mercTotalCasualties: 0,
 	createdSlavesUnits: 0,
 	createdMilitiaUnits: 0,
@@ -601,7 +596,6 @@ App.Data.resetOnNGPlus = {
 
 	fluid: 0,
 	cumSale: 0,
-	revivalistLanguage: 0,
 	localEcon: 0,
 	econRate: 0,
 	drugsCost: 0,
diff --git a/js/artInfrastructure.js b/js/artInfrastructure.js
index b416cc6d4698fb7a6ffb9847ddca2cf51d3697b2..9257c68753fe76272459864a8e5f6817b3cce042 100644
--- a/js/artInfrastructure.js
+++ b/js/artInfrastructure.js
@@ -33,7 +33,7 @@ App.Art.cacheArtData = function() {
 	}
 
 	App.Data.Art = {};
-	App.Data.Art.Vector = makeCache(document.querySelectorAll('[tags="Twine.image"][name^="Art_Vector"]:not([ame^="Art_Vector_Revamp"])'));
+	App.Data.Art.Vector = makeCache(document.querySelectorAll('[tags="Twine.image"][name^="Art_Vector"]:not([name^="Art_Vector_Revamp"])'));
 	App.Data.Art.VectorRevamp = makeCache(document.querySelectorAll('[tags="Twine.image"][name^="Art_Vector_Revamp"]'));
 };
 
diff --git a/src/Mods/SecExp/SecExpBackwardCompatibility.tw b/src/Mods/SecExp/SecExpBackwardCompatibility.tw
index 109096932f6f2f5d5420292cbdbfe7ed2a8c4b70..9629e43a9c7a95b6ad6f85a9859d2f632331cf8f 100644
--- a/src/Mods/SecExp/SecExpBackwardCompatibility.tw
+++ b/src/Mods/SecExp/SecExpBackwardCompatibility.tw
@@ -492,39 +492,24 @@
 <<if ndef $militiaFounded>>
 	<<set $militiaFounded = 0>>
 <</if>>
-<<if ndef $militiaTotalManpower>>
-	<<set $militiaTotalManpower = 0>>
-<</if>>
 <<if ndef $militiaFreeManpower>>
 	<<set $militiaFreeManpower = 0>>
 <</if>>
-<<if ndef $militiaEmployedManpower>>
-	<<set $militiaEmployedManpower = 0>>
-<</if>>
 <<if ndef $militiaTotalCasualties>>
 	<<set $militiaTotalCasualties = 0>>
 <</if>>
 <<if ndef $slavesOfficers>>
 	<<set $slavesOfficers = 0>>
 <</if>>
-<<if ndef $slavesEmployedManpower>>
-	<<set $slavesEmployedManpower = 0>>
-<</if>>
 <<if ndef $slavesTotalCasualties>>
 	<<set $slavesTotalCasualties = 0>>
 <</if>>
 <<if ndef $slavesMaxTroops>>
 	<<set $slavesMaxTroops = 30>>
 <</if>>
-<<if ndef $mercTotalManpower>>
-	<<set $mercTotalManpower = 0>>
-<</if>>
 <<if ndef $mercFreeManpower>>
 	<<set $mercFreeManpower = 0>>
 <</if>>
-<<if ndef $mercEmployedManpower>>
-	<<set $mercEmployedManpower = 0>>
-<</if>>
 <<if ndef $mercTotalCasualties>>
 	<<set $mercTotalCasualties = 0>>
 <</if>>
@@ -644,10 +629,18 @@
 	<<set $SavedSFI = $SFIntervention>>
 <</if>>
 
+/* init merc manpower if it wasn't done already */
+<<if $wasToggledBefore == 0>>
+	<<if $mercenaries == 1>>
+		<<set $mercFreeManpower = random(5,20)>>
+	<<elseif $mercenaries > 1>>
+		<<set $mercFreeManpower = random(10,30)>>
+	<</if>>
+<</if>>
+
 /* recalculation widgets */
 <<fixBrokenUnits>>
 <<fixBrokenStats>>
-<<recalcManpower>>
 <<set $wasToggledBefore = 1>>
 
 <br>Missing Security Expansion variables set. All done!
diff --git a/src/Mods/SecExp/buildings/secBarracks.tw b/src/Mods/SecExp/buildings/secBarracks.tw
index 0f7f271b6b3eca2137e435bba36837d353b11164..0fbe76bf1a140780ea578f17e03b84edec1c5da8 100644
--- a/src/Mods/SecExp/buildings/secBarracks.tw
+++ b/src/Mods/SecExp/buildings/secBarracks.tw
@@ -121,7 +121,7 @@ While this a sore sight for many citizens of $arcologies[0].name, the barracks s
 <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+($slavesEmployedManpower)+($militiaEmployedManpower)+($mercEmployedManpower))>> 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>>
+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()>>
 <<run _options.addOption("Unit descriptions are", "unitDescriptions", $SecExp.settings)
@@ -166,7 +166,7 @@ Your current maximum number of units is <<print App.SecExp.battle.maxUnits()>> (
 
 <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($slavesEmployedManpower)>> are already employed as soldiers. During all your battles you lost a total of <<print num($slavesTotalCasualties)>>.
+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>>
@@ -193,7 +193,7 @@ You are free to organize your menial slaves into fighting units. Currently you h
 	<br>
 	<<link "Form a new unit" "secBarracks">>
 		<<set _newUnit = {
-			ID: 0,
+			ID: App.SecExp.generateUnitID(),
 			platoonName: ordinalSuffix(++$createdSlavesUnits) + " slave platoon",
 			active: 1,
 			isDeployed: 0,
@@ -207,10 +207,8 @@ You are free to organize your menial slaves into fighting units. Currently you h
 			SF: 0,
 			commissars: 0,
 			battlesFought: 0}>>
-		<<generateUnitID _newUnit>>
 		<<set $slaveUnits.push(_newUnit)>>
 		<<set $menials -= _newUnit.troops>>
-		<<set $slavesEmployedManpower += _newUnit.troops>>
 	<</link>>
 <</if>>
 <<for _i = 0; _i < _sL; _i++>>
@@ -220,7 +218,6 @@ You are free to organize your menial slaves into fighting units. Currently you h
 		<br>
 		<<link "Disband the unit" "secBarracks">>
 			<<set $menials += $slaveUnits[_i].troops>>
-			<<set $slavesEmployedManpower -= $slaveUnits[_i].troops>>
 			<<set $slaveUnits.deleteAt(_i)>>
 		<</link>>
 		|
@@ -234,12 +231,10 @@ You are free to organize your menial slaves into fighting units. Currently you h
 			<<link "Replenish unit" "secBarracks">>
 				<<if $menials >= $slaveUnits[_i].maxTroops - $slaveUnits[_i].troops>>
 					<<set $menials -= $slaveUnits[_i].maxTroops - $slaveUnits[_i].troops>>
-					<<set $slavesEmployedManpower += $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 $slavesEmployedManpower += $menials>>
 					<<set _expLoss = $menials / $slaveUnits[_i].troops>>
 					<<set $slaveUnits[_i].training -= $slaveUnits[_i].training * _expLoss>>
 					<<set $slaveUnits[_i].troops += $menials>>
@@ -265,12 +260,10 @@ You are free to organize your menial slaves into fighting units. Currently you h
 			|
 			<<link "Reform the unit" "secBarracks">>
 				<<if $menials >= $slaveUnits[_i].maxTroops>>
-					<<set $slavesEmployedManpower += $slaveUnits[_i].maxTroops>>
 					<<set $menials -= $slaveUnits[_i].maxTroops>>
 					<<set $slaveUnits[_i].troops = $slaveUnits[_i].maxTroops>>
 					<<set $slaveUnits[_i].training = 0>>
 				<<else>>
-					<<set $slavesEmployedManpower += $menials>>
 					<<set $slaveUnits[_i].troops += $menials>>
 					<<set $menials = 0>>
 					<<set $slaveUnits[_i].training = 0>>
@@ -296,13 +289,13 @@ __Militia__
 	<<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($militiaTotalManpower)>>, of which <<print num($militiaEmployedManpower)>> is in active duty. You lost in total <<print num($militiaTotalCasualties)>> citizens, leaving you with <<print num($militiaFreeManpower)>> available citizens.
+	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: 0,
+				ID: App.SecExp.generateUnitID(),
 				platoonName: ordinalSuffix(++$createdMilitiaUnits) + " citizens' platoon",
 				active: 1,
 				isDeployed: 0,
@@ -316,10 +309,8 @@ __Militia__
 				SF: 0,
 				commissars: 0,
 				battlesFought: 0}>>
-			<<generateUnitID _newUnit>>
 			<<set $militiaUnits.push(_newUnit)>>
 			<<set $militiaFreeManpower -= _newUnit.troops>>
-			<<set $militiaEmployedManpower += _newUnit.troops>>
 		<</link>>
 	<</if>>
 	<<for _i = 0; _i < _mL; _i++>>
@@ -329,7 +320,6 @@ __Militia__
 			<br>
 			<<link "Disband the unit" "secBarracks">>
 				<<set $militiaFreeManpower += $militiaUnits[_i].troops>>
-				<<set $militiaEmployedManpower -= $militiaUnits[_i].troops>>
 				<<set $militiaUnits.deleteAt(_i)>>
 			<</link>>
 			|
@@ -343,12 +333,10 @@ __Militia__
 				<<link "Replenish unit" "secBarracks">>
 					<<if $militiaFreeManpower >= $militiaUnits[_i].maxTroops - $militiaUnits[_i].troops>>
 						<<set $militiaFreeManpower -= $militiaUnits[_i].maxTroops - $militiaUnits[_i].troops>>
-						<<set $militiaEmployedManpower += $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 $militiaEmployedManpower += $militiaFreeManpower>>
 						<<set _expLoss = $militiaFreeManpower / $militiaUnits[_i].troops>>
 						<<set $militiaUnits[_i].training -= $militiaUnits[_i].training * _expLoss>>
 						<<set $militiaUnits[_i].troops += $militiaFreeManpower>>
@@ -360,7 +348,6 @@ __Militia__
 			<br>
 			<<link "Disband the unit" "secBarracks">>
 				<<set $militiaFreeManpower += $militiaUnits[_i].troops>>
-				<<set $militiaEmployedManpower -= $militiaUnits[_i].troops>>
 				<<set _elimUnit = $militiaUnits[_i]>>
 				<<set _newMilitiaUnits = []>>
 				<<for _y = 0; _y < _sL; _y++>>
@@ -375,12 +362,10 @@ __Militia__
 				|
 				<<link "Reform the unit" "secBarracks">>
 					<<if $militiaFreeManpower >= $militiaUnits[_i].maxTroops>>
-						<<set $militiaEmployedManpower += $militiaUnits[_i].maxTroops>>
 						<<set $militiaFreeManpower -= $militiaUnits[_i].maxTroops>>
 						<<set $militiaUnits[_i].troops = $militiaUnits[_i].maxTroops>>
 						<<set $militiaUnits[_i].training = 0>>
 					<<else>>
-						<<set $militiaEmployedManpower += $militiaFreeManpower>>
 						<<set $militiaUnits[_i].troops += $militiaFreeManpower>>
 						<<set $militiaFreeManpower = 0>>
 						<<set $militiaUnits[_i].training = 0>>
@@ -402,13 +387,13 @@ __Militia__
 __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($mercTotalManpower)>> mercenaries in your arcology, of which <<print num($mercEmployedManpower)>> actively employed and <<print $mercFreeManpower>> not yet under contract. In total <<print num($mercTotalCasualties)>> mercenaries have died defending your arcology.
+	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: 0,
+				ID: App.SecExp.generateUnitID(),
 				platoonName: ordinalSuffix(++$createdMercUnits) + " mercenary platoon",
 				active: 1,
 				isDeployed: 0,
@@ -422,10 +407,8 @@ __Mercenaries__
 				SF: 0,
 				commissars: 0,
 				battlesFought: 0}>>
-			<<generateUnitID _newUnit>>
 			<<set $mercUnits.push(_newUnit)>>
 			<<set $mercFreeManpower -= _newUnit.troops>>
-			<<set $mercEmployedManpower += _newUnit.troops>>
 		<</link>>
 	<</if>>
 	<<for _i = 0; _i < _meL; _i++>>
@@ -435,7 +418,6 @@ __Mercenaries__
 			<br>
 			<<link "Disband the unit" "secBarracks">>
 				<<set $mercFreeManpower += $mercUnits[_i].troops>>
-				<<set $mercEmployedManpower -= $mercUnits[_i].troops>>
 				<<set $mercUnits.deleteAt(_i)>>
 			<</link>>
 			|
@@ -449,12 +431,10 @@ __Mercenaries__
 				<<link "Replenish unit" "secBarracks">>
 					<<if $mercFreeManpower >= $mercUnits[_i].maxTroops - $mercUnits[_i].troops>>
 						<<set $mercFreeManpower -= $mercUnits[_i].maxTroops - $mercUnits[_i].troops>>
-						<<set $mercEmployedManpower += $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 $mercEmployedManpower += $mercFreeManpower>>
 						<<set _expLoss = $mercFreeManpower / $mercUnits[_i].troops>>
 						<<set $mercUnits[_i].training -= $mercUnits[_i].training * _expLoss>>
 						<<set $mercUnits[_i].troops += $mercFreeManpower>>
@@ -480,12 +460,10 @@ __Mercenaries__
 				|
 				<<link "Reform the unit" "secBarracks">>
 					<<if $mercFreeManpower >= $mercUnits[_i].maxTroops>>
-						<<set $mercEmployedManpower += $mercUnits[_i].maxTroops>>
 						<<set $mercFreeManpower -= $mercUnits[_i].maxTroops>>
 						<<set $mercUnits[_i].troops = $mercUnits[_i].maxTroops>>
 						<<set $mercUnits[_i].training = 0>>
 					<<else>>
-						<<set $mercEmployedManpower += $mercFreeManpower>>
 						<<set $mercUnits[_i].troops += $mercFreeManpower>>
 						<<set $mercFreeManpower = 0>>
 						<<set $mercUnits[_i].training = 0>>
diff --git a/src/Mods/SecExp/js/Unit.js b/src/Mods/SecExp/js/Unit.js
index 36c0c413185028c6c2d918ba44c283a67e4334cc..cd6bdfa02dc88a5f712005ff65046108295eee0e 100644
--- a/src/Mods/SecExp/js/Unit.js
+++ b/src/Mods/SecExp/js/Unit.js
@@ -1,3 +1,14 @@
+/** Generate a unit ID for a new unit
+ * @returns {number}
+ */
+App.SecExp.generateUnitID = function() {
+	return Math.max(
+		V.militiaUnits.reduce((acc, cur) => Math.max(acc, cur.ID), 0),
+		V.slaveUnits.reduce((acc, cur) => Math.max(acc, cur.ID), 0),
+		V.mercUnits.reduce((acc, cur) => Math.max(acc, cur.ID), 0)
+	) + 1;
+};
+
 /** Player unit factory - get a unit based on its type and index
  * @param {string} type - "Bots", "Militia", "Slaves", or "Mercs"
  * @param {number} [index] - must be supplied if type is not "Bots"
diff --git a/src/Mods/SecExp/js/secExp.js b/src/Mods/SecExp/js/secExp.js
index a91b4acbf1e79b5b82cda4284173dc1571b9c55e..9469924406dcf9161a58a4093ec47c2ccea450ff 100644
--- a/src/Mods/SecExp/js/secExp.js
+++ b/src/Mods/SecExp/js/secExp.js
@@ -870,3 +870,37 @@ App.SecExp.describeUnit = (function() {
 App.SecExp.mercenaryAvgLoyalty = function() {
 	return _.mean(V.mercUnits.filter((u) => u.active === 1).map((u) => u.loyalty));
 };
+
+App.SecExp.Manpower = {
+	get totalMilitia() {
+		return this.employedMilitia + this.freeMilitia;
+	},
+
+	get employedMilitia() {
+		return V.militiaUnits.reduce((acc, cur) => acc + cur.troops, 0);
+	},
+
+	get freeMilitia() {
+		return V.militiaFreeManpower;
+	},
+
+	get employedSlave() {
+		return V.slaveUnits.reduce((acc, cur) => acc + cur.troops, 0);
+	},
+
+	get totalMerc() {
+		return this.employedMerc + this.freeMerc;
+	},
+
+	get employedMerc() {
+		return V.mercUnits.reduce((acc, cur) => acc + cur.troops, 0);
+	},
+
+	get freeMerc() {
+		return V.mercFreeManpower;
+	},
+
+	get employedOverall() {
+		return this.employedMerc + this.employedMilitia + this.employedSlave;
+	}
+};
diff --git a/src/Mods/SecExp/rebellionReport.tw b/src/Mods/SecExp/rebellionReport.tw
index 0db2edca35816e3fea5a8308fe394476a98bec1f..47661795c5aa89473c34174eeab5eba78da79bd0 100644
--- a/src/Mods/SecExp/rebellionReport.tw
+++ b/src/Mods/SecExp/rebellionReport.tw
@@ -912,7 +912,6 @@
 <<include "unitsRebellionReport">>
 
 /* resets variables and flags */
-<<recalcManpower>>
 <<set $attackTroops = 0>>
 <<set $attackEquip = 0>>
 <<set $enemyLosses = 0>>
diff --git a/src/Mods/SecExp/securityReport.tw b/src/Mods/SecExp/securityReport.tw
index 1ff08137fd66c0608a7cff86b4f0cadfc8bdc2f0..e0b14ca2d2db91ce2618025e25639d9c8bc24b37 100644
--- a/src/Mods/SecExp/securityReport.tw
+++ b/src/Mods/SecExp/securityReport.tw
@@ -454,9 +454,8 @@ Due to the deterioration of the old world countries, organized crime focuses mor
 		<</if>>
 	<</if>>
 	<<if $militiaFounded == 1>>
-		<<set _recruits = Math.trunc((_recruitLimit * $ACitizens - ($militiaTotalManpower - $militiaTotalCasualties)) / 20 * _recruitsMultiplier)>>
+		<<set _recruits = Math.trunc((_recruitLimit * $ACitizens - App.SecExp.Manpower.totalMilitia) / 20 * _recruitsMultiplier)>>
 		<<if _recruits > 0>>
-			<<set $militiaTotalManpower += _recruits>>
 			<<set $militiaFreeManpower += _recruits>>
 			This week <<print _recruits>> citizens joined the militia.
 		<<elseif $militarizedSociety == 1>>
@@ -514,14 +513,12 @@ Due to the deterioration of the old world countries, organized crime focuses mor
 		<</if>>
 		<<set _newMercs = Math.trunc(_newMercs / 2)>>
 		<<if _newMercs > 0>>
-			<<set $mercTotalManpower += _newMercs>>
 			<<set $mercFreeManpower += _newMercs>>
 			This week <<print _newMercs>> mercenaries reached the arcology.
 		<<else>>
 			This week no new mercenaries reached the arcology.
 		<</if>>
 		<<if $mercFreeManpower > 2000>>
-			<<set $mercTotalManpower -= $mercFreeManpower - 2000>>
 			<<set $mercFreeManpower = 2000>>
 		<</if>>
 		<br>
diff --git a/src/Mods/SecExp/seeUnit.tw b/src/Mods/SecExp/seeUnit.tw
index 94a3a769febd45bf0247ea49dcae1ccca5b25fdb..882eb5e5987638a43c70c33677209683af559c0e 100644
--- a/src/Mods/SecExp/seeUnit.tw
+++ b/src/Mods/SecExp/seeUnit.tw
@@ -62,12 +62,10 @@
 		<<link "Replenish unit" "seeUnit">>
 			<<if $militiaFreeManpower >= $militiaUnits[$targetIndex].maxTroops - $militiaUnits[$targetIndex].troops>>
 				<<set $militiaFreeManpower -= $militiaUnits[$targetIndex].maxTroops - $militiaUnits[$targetIndex].troops>>
-				<<set $militiaEmployedManpower += $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 $militiaEmployedManpower += $militiaFreeManpower>>
 				<<set _expLoss = $militiaFreeManpower / $militiaUnits[$targetIndex].troops>>
 				<<set $militiaUnits[$targetIndex].training -= $militiaUnits[$targetIndex].training * _expLoss>>
 				<<set $militiaUnits[$targetIndex].troops += $militiaFreeManpower>>
@@ -171,12 +169,10 @@
 		<<link "Replenish unit" "seeUnit">>
 			<<if $menials >= $slaveUnits[$targetIndex].maxTroops - $slaveUnits[$targetIndex].troops>>
 				<<set $menials -= $slaveUnits[$targetIndex].maxTroops - $slaveUnits[$targetIndex].troops>>
-				<<set $slavesEmployedManpower += $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 $slavesEmployedManpower += $menials>>
 				<<set _expLoss = $menials / $slaveUnits[$targetIndex].troops>>
 				<<set $slaveUnits[$targetIndex].training -= $slaveUnits[$targetIndex].training * _expLoss>>
 				<<set $slaveUnits[$targetIndex].troops += $menials>>
@@ -279,12 +275,10 @@
 		<<link "Replenish unit" "seeUnit">>
 			<<if $mercFreeManpower >= $mercUnits[$targetIndex].maxTroops - $mercUnits[$targetIndex].troops>>
 				<<set $mercFreeManpower -= $mercUnits[$targetIndex].maxTroops - $mercUnits[$targetIndex].troops>>
-				<<set $mercEmployedManpower += $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 $mercEmployedManpower += $mercFreeManpower>>
 				<<set _expLoss = $mercFreeManpower / $mercUnits[$targetIndex].troops>>
 				<<set $mercUnits[$targetIndex].training -= $mercUnits[$targetIndex].training * _expLoss>>
 				<<set $mercUnits[$targetIndex].troops += $mercFreeManpower>>
diff --git a/src/Mods/SecExp/unitsBattleReport.tw b/src/Mods/SecExp/unitsBattleReport.tw
index 74082e8238b03b6b7efaee6112785e44639d75c5..032c274abac4d5f4ce3a3fb140e7104c85511415 100644
--- a/src/Mods/SecExp/unitsBattleReport.tw
+++ b/src/Mods/SecExp/unitsBattleReport.tw
@@ -164,9 +164,7 @@
 					Some men were saved by their medics.
 				<</if>>
 				<<set $militiaUnits[_j].troops -= Math.trunc(Math.clamp(_loss - _med,0,$militiaUnits[_j].maxTroops))>>
-				<<set $militiaEmployedManpower -= Math.trunc(_loss - _med)>>
 				<<set $militiaTotalCasualties += Math.trunc(_loss - _med)>>
-				<<set $militiaTotalManpower -= Math.trunc(_loss - _med)>>
 				<<if $militiaUnits[_j].training < 100>>
 					<<if random(1,100) > 60>>
 						Experience has increased.
@@ -207,9 +205,7 @@
 					Some men were saved by their medics.
 				<</if>>
 				<<set $slaveUnits[_j].troops -= Math.trunc(Math.clamp(_loss - _med,0,$slaveUnits[_j].maxTroops))>>
-				<<set $slavesEmployedManpower -= Math.trunc(_loss - _med)>>
 				<<set $slavesTotalCasualties += Math.trunc(_loss - _med)>>
-				<<set $menials -= Math.clamp($menials, 0, Math.trunc(_loss - _med))>>
 				<<if $slaveUnits[_j].training < 100>>
 					<<if random(1,100) > 60>>
 						Experience has increased.
@@ -250,9 +246,7 @@
 					Some men were saved by their medics.
 				<</if>>
 				<<set $mercUnits[_j].troops -= Math.trunc(Math.clamp(_loss - _med,0,$mercUnits[_j].maxTroops))>>
-				<<set $mercEmployedManpower -= Math.trunc(_loss - _med)>>
 				<<set $mercTotalCasualties += Math.trunc(_loss - _med)>>
-				<<set $mercTotalManpower -= Math.trunc(_loss - _med)>>
 				<<if $mercUnits[_j].training < 100>>
 					<<if random(1,100) > 60>>
 						Experience has increased.
diff --git a/src/Mods/SecExp/unitsRebellionReport.tw b/src/Mods/SecExp/unitsRebellionReport.tw
index 65ed13047d18f4cf2de7bc4691be9af413488568..4611aabeacb2a5a904ffb8e5baa808866fa27a30 100644
--- a/src/Mods/SecExp/unitsRebellionReport.tw
+++ b/src/Mods/SecExp/unitsRebellionReport.tw
@@ -70,7 +70,6 @@
 							<<set $militiaUnits[_i].loyalty = Math.clamp($militiaUnits[_i].loyalty - random(10,40),0,100)>>
 						<</if>>
 					<</for>>
-					<<recalcManpower>>
 					<<replace "#militiaResult">>
 						<br>Units dissolved.
 					<</replace>>
@@ -79,7 +78,6 @@
 				<br><<link "Purge the dissidents and dissolve the units">>
 					<<run removeUnits(_militiaRebelledID)>>
 					<<set $militiaFreeManpower += _militiaManpower * 0.5>>
-					<<recalcManpower>>
 					<<replace "#militiaResult">>
 						<br>Dissidents purged and units dissolved.
 					<</replace>>
@@ -92,7 +90,6 @@
 							<<set $militiaUnits[_i].loyalty = Math.clamp($militiaUnits[_i].loyalty + random(10,40),0,100)>>
 						<</if>>
 					<</for>>
-					<<recalcManpower>>
 					<<replace "#militiaResult">>
 						<br>Units executed. Dissent will not be tolerated.
 					<</replace>>
@@ -123,7 +120,6 @@
 							<<set $slaveUnits[_i].loyalty = Math.clamp($slaveUnits[_i].loyalty - random(10,40),0,100)>>
 						<</if>>
 					<</for>>
-					<<recalcManpower>>
 					<<replace "#slaveResult">>
 						<br>Units dissolved.
 					<</replace>>
@@ -132,7 +128,6 @@
 				<br><<link "Purge the dissidents and dissolve the units">>
 					<<run removeUnits(_slaveRebelledID)>>
 					<<set $menials += _slaveManpower * 0.5>>
-					<<recalcManpower>>
 					<<replace "#slaveResult">>
 						<br>Dissidents purged and units dissolved.
 					<</replace>>
@@ -145,7 +140,6 @@
 							<<set $slaveUnits[_i].loyalty = Math.clamp($slaveUnits[_i].loyalty + random(10,40),0,100)>>
 						<</if>>
 					<</for>>
-					<<recalcManpower>>
 					<<replace "#slaveResult">>
 						<br>Units executed. Dissent will not be tolerated.
 					<</replace>>
@@ -176,7 +170,6 @@
 							<<set $mercUnits[_i].loyalty = Math.clamp($mercUnits[_i].loyalty - random(10,40),0,100)>>
 						<</if>>
 					<</for>>
-					<<recalcManpower>>
 					<<replace "#mercResult">>
 						<br>Units dissolved.
 					<</replace>>
@@ -185,7 +178,6 @@
 				<br><<link "Purge the dissidents and dissolve the units">>
 					<<run removeUnits(_mercRebelledID)>>
 					<<set $mercFreeManpower += _mercManpower * 0.5>>
-					<<recalcManpower>>
 					<<replace "#mercResult">>
 						<br>Dissidents purged and units dissolved.
 					<</replace>>
@@ -198,7 +190,6 @@
 							<<set $mercUnits[_i].loyalty = Math.clamp($mercUnits[_i].loyalty + random(10,40),0,100)>>
 						<</if>>
 					<</for>>
-					<<recalcManpower>>
 					<<replace "#mercResult">>
 						<br>Units executed. Dissent will not be tolerated.
 					<</replace>>
@@ -247,7 +238,6 @@
 		<</if>>
 		<<run cashX(forceNeg(1000 * _mercRebelledID.length), "war")>>
 		<<run removeUnits(_mercRebelledID)>>
-		<<recalcManpower>>
 	<</if>>
 
 <<elseif $losses > 0>>
@@ -400,9 +390,7 @@
 					Some men were saved by their medics.
 				<</if>>
 				<<set $militiaUnits[_j].troops -= Math.trunc(Math.clamp(_loss - _med,0,$militiaUnits[_j].maxTroops))>>
-				<<set $militiaEmployedManpower -= Math.trunc(_loss - _med)>>
 				<<set $militiaTotalCasualties += Math.trunc(_loss - _med)>>
-				<<set $militiaTotalManpower -= Math.trunc(_loss - _med)>>
 				<<if $militiaUnits[_j].training < 100>>
 					<<if random(1,100) > 60>>
 						Experience has increased.
@@ -448,9 +436,7 @@
 					Some men were saved by their medics.
 				<</if>>
 				<<set $slaveUnits[_j].troops -= Math.trunc(Math.clamp(_loss - _med,0,$slaveUnits[_j].maxTroops))>>
-				<<set $slavesEmployedManpower -= _loss - _med>>
 				<<set $slavesTotalCasualties += _loss - _med>>
-				<<set $menials -= Math.trunc(_loss - _med)>>
 				<<if $slaveUnits[_j].training < 100>>
 					<<if random(1,100) > 60>>
 						Experience gained.
@@ -491,9 +477,7 @@
 					Some men were saved by their medics.
 				<</if>>
 				<<set $mercUnits[_j].troops -= Math.trunc(Math.clamp(_loss - _med,0,$mercUnits[_j].maxTroops))>>
-				<<set $mercEmployedManpower -= Math.trunc(_loss - _med)>>
 				<<set $mercTotalCasualties += Math.trunc(_loss - _med)>>
-				<<set $mercTotalManpower -= Math.trunc(_loss - _med)>>
 				<<if $mercUnits[_j].training < 100>>
 					<<if random(1,100) > 60>>
 						Experience gained.
@@ -533,7 +517,6 @@
 							<<set $militiaUnits[_i].loyalty = Math.clamp($militiaUnits[_i].loyalty - random(10,40),0,100)>>
 						<</if>>
 					<</for>>
-					<<recalcManpower>>
 					<<replace "#militiaResult">>
 						<br>Units dissolved.
 					<</replace>>
@@ -542,7 +525,6 @@
 				<br><<link "Purge the dissidents and dissolve the units">>
 					<<run removeUnits(_militiaRebelledID)>>
 					<<set $militiaFreeManpower += _militiaManpower * 0.5>>
-					<<recalcManpower>>
 					<<replace "#militiaResult">>
 						<br>Dissidents purged and units dissolved.
 					<</replace>>
@@ -555,7 +537,6 @@
 							<<set $militiaUnits[_i].loyalty = Math.clamp($militiaUnits[_i].loyalty + random(10,40),0,100)>>
 						<</if>>
 					<</for>>
-					<<recalcManpower>>
 					<<replace "#militiaResult">>
 						<br>Units executed. Dissent will not be tolerated.
 					<</replace>>
@@ -586,7 +567,6 @@
 							<<set $slaveUnits[_i].loyalty = Math.clamp($slaveUnits[_i].loyalty - random(10,40),0,100)>>
 						<</if>>
 					<</for>>
-					<<recalcManpower>>
 					<<replace "#slaveResult">>
 						<br>Units dissolved.
 					<</replace>>
@@ -595,7 +575,6 @@
 				<br><<link "Purge the dissidents and dissolve the units">>
 					<<run removeUnits(_slaveRebelledID)>>
 					<<set $menials += _slaveManpower * 0.5>>
-					<<recalcManpower>>
 					<<replace "#slaveResult">>
 						<br>Dissidents purged and units dissolved.
 					<</replace>>
@@ -608,7 +587,6 @@
 							<<set $slaveUnits[_i].loyalty = Math.clamp($slaveUnits[_i].loyalty + random(10,40),0,100)>>
 						<</if>>
 					<</for>>
-					<<recalcManpower>>
 					<<replace "#slaveResult">>
 						<br>Units executed. Dissent will not be tolerated.
 					<</replace>>
@@ -639,7 +617,6 @@
 							<<set $mercUnits[_i].loyalty = Math.clamp($mercUnits[_i].loyalty - random(10,40),0,100)>>
 						<</if>>
 					<</for>>
-					<<recalcManpower>>
 					<<replace "#mercResult">>
 						<br>Units dissolved.
 					<</replace>>
@@ -648,7 +625,6 @@
 				<br><<link "Purge the dissidents and dissolve the units">>
 					<<run removeUnits(_mercRebelledID)>>
 					<<set $mercFreeManpower += _mercManpower * 0.5>>
-					<<recalcManpower>>
 					<<replace "#mercResult">>
 						<br>Dissidents purged and units dissolved.
 					<</replace>>
@@ -661,7 +637,6 @@
 							<<set $mercUnits[_i].loyalty = Math.clamp($mercUnits[_i].loyalty + random(10,40),0,100)>>
 						<</if>>
 					<</for>>
-					<<recalcManpower>>
 					<<replace "#mercResult">>
 						<br>Units executed. Dissent will not be tolerated.
 					<</replace>>
@@ -712,7 +687,6 @@
 		<</if>>
 		<<run cashX(forceNeg(1000 * _mercRebelledID.length), "war")>>
 		<<run removeUnits(_mercRebelledID)>>
-		<<recalcManpower>>
 	<</if>>
 <<else>>
 	<br>@@.red;Error: losses are a negative number or NaN@@
diff --git a/src/Mods/SecExp/widgets/miscSecExpWidgets.tw b/src/Mods/SecExp/widgets/miscSecExpWidgets.tw
index 9a7bec5a15f1c36abdaf2ecf252a00f8ad2af7e1..77e99c5102c43d78eabfc7a00e534ff7145c178d 100644
--- a/src/Mods/SecExp/widgets/miscSecExpWidgets.tw
+++ b/src/Mods/SecExp/widgets/miscSecExpWidgets.tw
@@ -1,45 +1,5 @@
 :: miscSecExpWidgets [widget nobr]
 
-<<widget "recalcManpower">>
-	<<if $wasToggledBefore == 0>>
-		<<if $mercenaries == 1>>
-			<<set $mercFreeManpower = random(5,20)>>
-		<<elseif $mercenaries > 1>>
-			<<set $mercFreeManpower = random(10,30)>>
-		<</if>>
-	<</if>>
-
-	<<set _correctEmployedMP = 0>>
-	<<for _i = 0; _i < $slaveUnits.length; _i++>>
-		<<set _correctEmployedMP += $slaveUnits[_i].troops>>
-	<</for>>
-
-	<<if $slavesEmployedManpower != _correctEmployedMP>>
-		<<set $slavesEmployedManpower = _correctEmployedMP>>
-	<</if>>
-
-	<<set _correctEmployedMP = 0>>
-	<<for _i = 0; _i < $militiaUnits.length; _i++>>
-		<<set _correctEmployedMP += $militiaUnits[_i].troops>>
-	<</for>>
-
-	<<if $militiaEmployedManpower != _correctEmployedMP>>
-		<<set $militiaEmployedManpower = _correctEmployedMP>>
-	<</if>>
-
-	<<set _correctEmployedMP = 0>>
-	<<for _i = 0; _i < $mercUnits.length; _i++>>
-		<<set _correctEmployedMP += $mercUnits[_i].troops>>
-	<</for>>
-
-	<<if $mercEmployedManpower != _correctEmployedMP>>
-		<<set $mercEmployedManpower = _correctEmployedMP>>
-	<</if>>
-
-	<<set $militiaTotalManpower = $militiaEmployedManpower + $militiaFreeManpower>>
-	<<set $mercTotalManpower = $mercEmployedManpower + $mercFreeManpower>>
-<</widget>>
-
 <<widget "fixBrokenUnits">>
 	<<if ndef $secBots.ID>>
 		<<set $secBots.ID = -1>>
@@ -64,7 +24,7 @@
 		<</if>>
 		<<if ndef $militiaUnits[_i].ID>>
 			<br>Set militia missing ID
-			<<generateUnitID $militiaUnits[_i]>>
+			<<set $militiaUnits[_i].ID = App.SecExp.generateUnitID()>>
 		<</if>>
 		<<if ndef $militiaUnits[_i].cyber>>
 			<br>Set militia missing flag
@@ -95,7 +55,7 @@
 		<</if>>
 		<<if ndef $slaveUnits[_i].ID>>
 			<br>Set slave missing ID
-			<<generateUnitID $slaveUnits[_i]>>
+			<<set $slaveUnits[_i].ID = App.SecExp.generateUnitID()>>
 		<</if>>
 		<<if ndef $slaveUnits[_i].cyber>>
 			<br>Set slave missing flag
@@ -126,7 +86,7 @@
 		<</if>>
 		<<if ndef $mercUnits[_i].ID>>
 			<br>Set merc missing ID
-			<<generateUnitID $mercUnits[_i]>>
+			<<set $mercUnits[_i].ID = App.SecExp.generateUnitID()>>
 		<</if>>
 		<<if ndef $mercUnits[_i].cyber>>
 			<br>Set merc missing flag
@@ -158,30 +118,15 @@
 	<<if !Number.isInteger($mercTotalCasualties)>>
 		<<set $mercTotalCasualties = 0>>
 	<</if>>
-	<<if !Number.isInteger($mercEmployedManpower)>>
-		<<set $mercEmployedManpower = 0>>
-	<</if>>
-	<<if !Number.isInteger($mercTotalManpower)>>
-		<<set $mercTotalManpower = 0>>
-	<</if>>
 	<<if !Number.isInteger($slavesTotalCasualties)>>
 		<<set $slavesTotalCasualties = 0>>
 	<</if>>
-	<<if !Number.isInteger($slavesEmployedManpower)>>
-		<<set $slavesEmployedManpower = 0>>
-	<</if>>
 	<<if !Number.isInteger($militiaTotalCasualties)>>
 		<<set $militiaTotalCasualties = 0>>
 	<</if>>
-	<<if !Number.isInteger($militiaEmployedManpower)>>
-		<<set $militiaEmployedManpower = 0>>
-	<</if>>
 	<<if !Number.isInteger($militiaFreeManpower)>>
 		<<set $militiaFreeManpower = 0>>
 	<</if>>
-	<<if !Number.isInteger($militiaTotalManpower)>>
-		<<set $militiaTotalManpower = 0>>
-	<</if>>
 	<<if !Number.isInteger($battlesCount)>>
 		<<set $battlesCount = 0>>
 	<</if>>
@@ -228,12 +173,10 @@
 					<<if $militiaUnits[_i].troops < $militiaUnits[_i].maxTroops && $militiaFreeManpower > 0>>
 						<<if $militiaFreeManpower >= $militiaUnits[_i].maxTroops - $militiaUnits[_i].troops>>
 							<<set $militiaFreeManpower -= $militiaUnits[_i].maxTroops - $militiaUnits[_i].troops>>
-							<<set $militiaEmployedManpower += $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 $militiaEmployedManpower += $militiaFreeManpower>>
 							<<set _expLoss = $militiaFreeManpower / $militiaUnits[_i].troops>>
 							<<set $militiaUnits[_i].training -= $militiaUnits[_i].training * _expLoss>>
 							<<set $militiaUnits[_i].troops += $militiaFreeManpower>>
@@ -248,12 +191,10 @@
 					<<if $slaveUnits[_i].troops < $slaveUnits[_i].maxTroops && $menials > 0>>
 						<<if $menials >= $slaveUnits[_i].maxTroops - $slaveUnits[_i].troops>>
 							<<set $menials -= $slaveUnits[_i].maxTroops - $slaveUnits[_i].troops>>
-							<<set $slavesEmployedManpower += $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 $slavesEmployedManpower += $menials>>
 							<<set _expLoss = $menials / $slaveUnits[_i].troops>>
 							<<set $slaveUnits[_i].training -= $slaveUnits[_i].training * _expLoss>>
 							<<set $slaveUnits[_i].troops += $menials>>
@@ -268,12 +209,10 @@
 					<<if $mercUnits[_i].troops < $mercUnits[_i].maxTroops && $mercFreeManpower > 0>>
 						<<if $mercFreeManpower >= $mercUnits[_i].maxTroops - $mercUnits[_i].troops>>
 							<<set $mercFreeManpower -= $mercUnits[_i].maxTroops - $mercUnits[_i].troops>>
-							<<set $mercEmployedManpower += $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 $mercEmployedManpower += $mercFreeManpower>>
 							<<set _expLoss = $mercFreeManpower / $mercUnits[_i].troops>>
 							<<set $mercUnits[_i].training -= $mercUnits[_i].training * _expLoss>>
 							<<set $mercUnits[_i].troops += $mercFreeManpower>>
diff --git a/src/Mods/SecExp/widgets/unitsWidgets.tw b/src/Mods/SecExp/widgets/unitsWidgets.tw
deleted file mode 100644
index 9cdc494ef7b54a3bff4d8cdc138d7408d0bc3489..0000000000000000000000000000000000000000
--- a/src/Mods/SecExp/widgets/unitsWidgets.tw
+++ /dev/null
@@ -1,25 +0,0 @@
-:: unitsWidgets [widget nobr]
-
-<<widget "generateUnitID">>
-	<<set _newID = 0>>
-
-	<<for _i = 0; _i < $militiaUnits.length; _i++>>
-		<<if $militiaUnits[_i].ID >= _newID>>
-			<<set _newID = $militiaUnits[_i].ID + 1>>
-		<</if>>
-	<</for>>
-
-	<<for _i = 0; _i < $slaveUnits.length; _i++>>
-		<<if $slaveUnits[_i].ID >= _newID>>
-			<<set _newID = $slaveUnits[_i].ID + 1>>
-		<</if>>
-	<</for>>
-
-	<<for _i = 0; _i < $mercUnits.length; _i++>>
-		<<if $mercUnits[_i].ID >= _newID>>
-			<<set _newID = $mercUnits[_i].ID + 1>>
-		<</if>>
-	<</for>>
-
-	<<set $args[0].ID = _newID>>
-<</widget>>
\ No newline at end of file
diff --git a/src/data/backwardsCompatibility/backwardsCompatibility.js b/src/data/backwardsCompatibility/backwardsCompatibility.js
index 07ce59668170cc28bba63d831fd0205b8b05a2d1..d49802024c0f20a68b5aadd5f9582c3787ad6c17 100644
--- a/src/data/backwardsCompatibility/backwardsCompatibility.js
+++ b/src/data/backwardsCompatibility/backwardsCompatibility.js
@@ -2014,9 +2014,9 @@ App.Update.oldVersions = function(node) {
 		}
 		if (typeof V.playerGetsMilked !== "undefined") {
 			if (V.playerGetsMilked === 2) {
-				V.PC.rules.lactation = "sell";
+				newPC.rules.lactation = "sell";
 			} else if (V.playerGetsMilked === 1) {
-				V.PC.rules.lactation = "maintain";
+				newPC.rules.lactation = "maintain";
 			}
 		}
 
diff --git a/src/gui/options/options.tw b/src/gui/options/options.tw
index 8cd9ef8151ef0e2c32b9737cd1363cc392548620..dfef7055c5c1571dde07bdfb74f29aefbb05ba80 100644
--- a/src/gui/options/options.tw
+++ b/src/gui/options/options.tw
@@ -598,22 +598,18 @@
 				<td style="text-align:right">
 				<<link "Give militia manpower" "Options">>
 					<<set $militiaFreeManpower += 30>>
-					<<recalcManpower>>
 				<</link>>
 				| <<link "Remove militia manpower" "Options">>
 					<<set $militiaFreeManpower = Math.max($militiaFreeManpower - 30, 0)>>
-					<<recalcManpower>>
 				<</link>>
 				</td>
 
 				<td style="text-align:left">
 				<<link "Give mercs manpower" "Options">>
 					<<set $mercFreeManpower += 30>>
-					<<recalcManpower>>
 				<</link>>
 				| <<link "Remove mercs manpower" "Options">>
 					<<set $mercFreeManpower = Math.max($mercFreeManpower - 30, 0)>>
-					<<recalcManpower>>
 				<</link>>
 				</td>
 				</tr>
diff --git a/src/interaction/slaveInteract.js b/src/interaction/slaveInteract.js
index 3fb401eab73c76d5ca49d220801b51052ba950ef..c6523cfd62c71feeb8022255cbf2ddd8e7280afd 100644
--- a/src/interaction/slaveInteract.js
+++ b/src/interaction/slaveInteract.js
@@ -98,7 +98,7 @@ App.UI.SlaveInteract.modify = function(slave) {
 	}
 
 	// Analyze Pregnancy
-	if (V.prostheticsUpgrade > 0) {
+	if (V.pregnancyMonitoringUpgrade > 0) {
 		makeRoomLink(el, "Internal scan", "Analyze Pregnancy", ` Full scan of abdomen and reproductive organs.`,
 			() => {
 				V.activeSlave = slave;
@@ -3064,9 +3064,7 @@ App.UI.SlaveInteract.generateRows = function(array, slave, category, accessCheck
 				);
 
 				if (array[i].FS) {
-					let FS = array[i].FS.substring(2); // Given "FSEdoRevivalist", cut off the first two letters to start a user friendly tooltip
-					FS = FS.replace(/([A-Z])/g, ` $1`); // Given "EdoRevivalist", find every capital letter and put a space in front of it
-					FS = App.UI.DOM.disabledLink(`FS`, [FS]); // Tooltip should read "Edo Revivalist"
+					let FS = App.UI.DOM.disabledLink(`FS`, [FutureSocieties.displayAdj(array[i].FS)]);
 					FS.style.fontStyle = "italic";
 					link.appendChild(FS);
 				}
diff --git a/src/npc/descriptions/boobs/boobs.js b/src/npc/descriptions/boobs/boobs.js
index 78cfb917f63b8e4533a877c2a6850c6289db0874..e21664dd48aefb55ceaac6aad13b1195a3fb07ab 100644
--- a/src/npc/descriptions/boobs/boobs.js
+++ b/src/npc/descriptions/boobs/boobs.js
@@ -235,6 +235,8 @@ App.Desc.boobs = function() {
 	 * @returns {string}
 	 */
 	function outerInspection(slave) {
+		const {his} = getPronouns(slave);
+
 		if (V.surgeryDescription === 1) { // unused in the game
 			if (slave.boobs < 300) {
 				return `${slave.slaveName}'s flat chest is bare and begging for surgery.`;
diff --git a/src/npc/surgery/surgery.js b/src/npc/surgery/surgery.js
index 6b47b41d0aa74236930f52904b199c6454101221..7db885a87d40195fbe2de9ff715665fa2434dd65 100644
--- a/src/npc/surgery/surgery.js
+++ b/src/npc/surgery/surgery.js
@@ -131,7 +131,6 @@ App.Medicine.Surgery.ListHelpers = class {
 		/** @private */
 		this._pronouns = pronouns;
 		/** @private */
-		this._V = V;
 		this._showCCs = showCCs;
 	}
 
@@ -148,7 +147,7 @@ App.Medicine.Surgery.ListHelpers = class {
 				slave[`${this._bodyPart}Implant`] = size;
 				slave[`${this._bodyPart}ImplantType`] = implantType;
 				slave[this._bodyPart] += size;
-			}, this._V.surgeryCost, 10, this._bodyPart
+			}, V.surgeryCost, 10, this._bodyPart
 		);
 	}
 
@@ -160,13 +159,13 @@ App.Medicine.Surgery.ListHelpers = class {
 				slave[`${this._bodyPart}`] -= slave[`${this._bodyPart}Implant`];
 				slave[`${this._bodyPart}Implant`] = 0;
 				slave[`${this._bodyPart}ImplantType`] = "none";
-			}, this._V.surgeryCost, 5, `${this._bodyPart}Loss`
+			}, V.surgeryCost, 5, `${this._bodyPart}Loss`
 		);
 	}
 
 	/**
 	 * @param {string} name
-	 * @param {number} implantType
+	 * @param {string} implantType
 	 * @param {number} size
 	 * @param {number} [implantPrice=0]
 	 * @returns {App.Medicine.Surgery.Procedure}
@@ -179,7 +178,7 @@ App.Medicine.Surgery.ListHelpers = class {
 				slave[this._bodyPart] += size - slave[`${this._bodyPart}Implant`];
 				slave[`${this._bodyPart}Implant`] = size;
 				slave[`${this._bodyPart}ImplantType`] = implantType;
-			}, this._V.surgeryCost + implantPrice, 10, this._bodyPart
+			}, V.surgeryCost + implantPrice, 10, this._bodyPart
 		);
 	}
 
@@ -194,7 +193,7 @@ App.Medicine.Surgery.ListHelpers = class {
 				slave[`${this._bodyPart}Implant`] += volume;
 				slave[this._bodyPart] += volume;
 			},
-			this._V.surgeryCost, 10, this._bodyPart
+			V.surgeryCost, 10, this._bodyPart
 		);
 	}
 
@@ -208,7 +207,7 @@ App.Medicine.Surgery.ListHelpers = class {
 			slave => {
 				slave[`${this._bodyPart}Implant`] -= volume;
 				slave[this._bodyPart] -= volume;
-			}, this._V.surgeryCost, 5, `${this._bodyPart}Loss`
+			}, V.surgeryCost, 5, `${this._bodyPart}Loss`
 		);
 	}
 
@@ -223,7 +222,7 @@ App.Medicine.Surgery.ListHelpers = class {
 			`${procedureName} ${this._pronouns.his} ${this._bodyPart}`,
 			slave => {
 				slave[this._bodyPart] -= sizeChange;
-			}, this._V.surgeryCost, 5, `${this._bodyPart}Loss`
+			}, V.surgeryCost, 5, `${this._bodyPart}Loss`
 		);
 	}
 };
@@ -292,13 +291,12 @@ App.Medicine.Surgery.sizingProcedures = function() {
 	function boobSizingProcedures(slave, options = {}) {
 		const thisArcology = V.arcologies[0];
 		const largeImplantsAvailable = thisArcology.FSTransformationFetishistResearch === 1;
-		const advancedFillableImplantsAvailable = V.ImplantProductionUpgrade === 1;
 		const advancedSurgeryAvailable = V.ImplantProductionUpgrade === 1;
 		const pronouns = getPronouns(slave);
 		const {he, His} = pronouns;
 
 		const types = App.Medicine.Keys.Surgery.Target.breast; // shortcuts
-		const helper = new App.Medicine.Surgery.ListHelpers(slave, "boobs", types, pronouns, V.showBoobCCs);
+		const helper = new App.Medicine.Surgery.ListHelpers(slave, "boobs", types, pronouns, V.showBoobCCs > 0);
 
 		const areStringsInstalled = slave.boobsImplantType === "string";
 		const areFillablesInstalled = ["fillable", "advanced fillable", "hyper fillable"].includes(slave.boobsImplantType);
@@ -451,7 +449,6 @@ App.Medicine.Surgery.sizingProcedures = function() {
 	function buttSizingProcedures(slave, options = {}) {
 		const thisArcology = V.arcologies[0];
 		const largeImplantsAvailable = thisArcology.FSTransformationFetishistResearch === 1;
-		const advancedFillableImplantsAvailable = V.ImplantProductionUpgrade === 1;
 		const advancedSurgeryAvailable = V.ImplantProductionUpgrade === 1;
 		const pronouns = getPronouns(slave);
 		const {he, His} = pronouns;
diff --git a/src/uncategorized/arcmgmt.tw b/src/uncategorized/arcmgmt.tw
index 6210c09c70d1be8ae36286540c86633283df19dd..02f32d7e9052ca5c6e9ed9b799fc9d46826e4c74 100644
--- a/src/uncategorized/arcmgmt.tw
+++ b/src/uncategorized/arcmgmt.tw
@@ -1145,7 +1145,7 @@ _SCD = Math.trunc(($upperClass * (2 + _slaveDemandU)) + ($topClass * (12 + _slav
 <</if>> /*ends _weatherFreeze*/
 
 <<if $secExpEnabled == 1>>
-	<<set $ASlaves = $NPCSlaves + $menials + $fuckdolls + $menialBioreactors + $secMenials + $slavesEmployedManpower>>
+	<<set $ASlaves = $NPCSlaves + $menials + $fuckdolls + $menialBioreactors + $secMenials + App.SecExp.Manpower.employedSlave>>
 <<else>>
 	<<set $ASlaves = $NPCSlaves + $menials + $fuckdolls + $menialBioreactors>>
 <</if>>
diff --git a/src/uncategorized/changeLanguage.tw b/src/uncategorized/changeLanguage.tw
index 7dbd3c9616c9cf89294ac9efac6a34a2e914611f..b0ab666b7d3f8f85ad69313895bf05728b5fa75c 100644
--- a/src/uncategorized/changeLanguage.tw
+++ b/src/uncategorized/changeLanguage.tw
@@ -3,31 +3,19 @@
 <<set $nextButton = "Confirm changes">>
 <<set $nextLink = "Main">>
 
-<<set $revivalistLanguage = 0>>
+<<set _revivalistLanguage = 0>>
 <<if $arcologies[0].FSRomanRevivalist != "unset">>
-	<<if $language != "Latin">>
-		<<set $revivalistLanguage = "Latin">>
-	<</if>>
+	<<set _revivalistLanguage = "Latin">>
 <<elseif $arcologies[0].FSAztecRevivalist != "unset">>
-	<<if $language != "Nahuatl">>
-		<<set $revivalistLanguage = "Nahuatl">>
-	<</if>>
+	<<set _revivalistLanguage = "Nahuatl">>
 <<elseif $arcologies[0].FSEgyptianRevivalist != "unset">>
-	<<if $language != "Ancient Egyptian">>
-		<<set $revivalistLanguage = "Ancient Egyptian">>
-	<</if>>
+	<<set _revivalistLanguage = "Ancient Egyptian">>
 <<elseif $arcologies[0].FSEdoRevivalist != "unset">>
-	<<if $language != "Japanese">>
-		<<set $revivalistLanguage = "Japanese">>
-	<</if>>
+	<<set _revivalistLanguage = "Japanese">>
 <<elseif $arcologies[0].FSArabianRevivalist != "unset">>
-	<<if $language != "Arabic">>
-		<<set $revivalistLanguage = "Arabic">>
-	<</if>>
+	<<set _revivalistLanguage = "Arabic">>
 <<elseif $arcologies[0].FSChineseRevivalist != "unset">>
-	<<if $language != "Chinese">>
-		<<set $revivalistLanguage = "Chinese">>
-	<</if>>
+	<<set _revivalistLanguage = "Chinese">>
 <</if>>
 
 The lingua franca of the arcology is ''$language''.
@@ -56,7 +44,7 @@ Select a custom language to be applied: <<textbox "$seed" $seed "Change Language
 			<<run cashX(-500, "capEx")>>
 		<</if>>
 	<</for>>
-	<br><br>//Language changed.//
+	<br><br>//Language changed to $language.//
 	<</replace>>
 	<</link>>
 <</if>>
@@ -76,7 +64,7 @@ Select a custom language to be applied: <<textbox "$seed" $seed "Change Language
 			<<run cashX(-500, "capEx")>>
 		<</if>>
 	<</for>>
-	<br><br>//Language changed.//
+	<br><br>//Language changed to $language.//
 	<</replace>>
 	<</link>>
 <</if>>
@@ -96,7 +84,7 @@ Select a custom language to be applied: <<textbox "$seed" $seed "Change Language
 			<<run cashX(-500, "capEx")>>
 		<</if>>
 	<</for>>
-	<br><br>//Language changed.//
+	<br><br>//Language changed to $language.//
 	<</replace>>
 	<</link>>
 <</if>>
@@ -116,7 +104,7 @@ Select a custom language to be applied: <<textbox "$seed" $seed "Change Language
 			<<run cashX(-500, "capEx")>>
 		<</if>>
 	<</for>>
-	<br><br>//Language changed.//
+	<br><br>//Language changed to $language.//
 	<</replace>>
 	<</link>>
 <</if>>
@@ -136,7 +124,7 @@ Select a custom language to be applied: <<textbox "$seed" $seed "Change Language
 			<<run cashX(-500, "capEx")>>
 		<</if>>
 	<</for>>
-	<br><br>//Language changed.//
+	<br><br>//Language changed to $language.//
 	<</replace>>
 	<</link>>
 <</if>>
@@ -156,14 +144,14 @@ Select a custom language to be applied: <<textbox "$seed" $seed "Change Language
 			<<run cashX(-500, "capEx")>>
 		<</if>>
 	<</for>>
-	<br><br>//Language changed.//
+	<br><br>//Language changed to $language.//
 	<</replace>>
 	<</link>>
 <</if>>
-<<if $revivalistLanguage != 0>>
+<<if _revivalistLanguage != 0 && $language != _revivalistLanguage>>
 	<br><<link "Match language to Revivalist future society">>
 	<<replace "#result">>
-	<<set $language = $revivalistLanguage>>
+	<<set $language = _revivalistLanguage>>
 	<<set $arcologies[0].prosperity = Math.trunc(0.9*$arcologies[0].prosperity)>>
 	<<for _cl = 0; _cl < $slaves.length; _cl++>>
 		<<if $slaves[_cl].fetish != "mindbroken">>
@@ -176,7 +164,7 @@ Select a custom language to be applied: <<textbox "$seed" $seed "Change Language
 			<<run cashX(-500, "capEx")>>
 		<</if>>
 	<</for>>
-	<br><br>//Language changed.//
+	<br><br>//Language changed to $language.//
 	<</replace>>
 	<</link>> //Failing to take this step will retard adoption of Revivalism//
 <</if>>
diff --git a/src/uncategorized/manageArcology.tw b/src/uncategorized/manageArcology.tw
index db1af6376a52a4e3a0ba2ab979aa2d08e6a6b138..0b76b7221c2b427d8e8044ed7049d83adc368824 100644
--- a/src/uncategorized/manageArcology.tw
+++ b/src/uncategorized/manageArcology.tw
@@ -512,9 +512,9 @@
 <<if $secExpEnabled == 1 && $SecExp.settings.battle.enabled == 1>>
 	<p>
 	<<if $SF.Toggle === 0||$SF.Active === 0>>
-		Your army counts <<print num($militiaEmployedManpower + $slavesEmployedManpower + $mercEmployedManpower)>> total soldiers.
+		Your army counts <<print num(App.SecExp.Manpower.employedOverall)>> total soldiers.
 	<<elseif $SF.Toggle && $SF.Active >= 1>>
-		Your army counts <<print num($militiaEmployedManpower + $slavesEmployedManpower + $mercEmployedManpower + $SF.ArmySize)>> total soldiers of which <<print num($SF.ArmySize)>> under the special force command and the rest under your direct control.
+		Your army counts <<print num(App.SecExp.Manpower.employedOverall + $SF.ArmySize)>> total soldiers of which <<print num($SF.ArmySize)>> under the special force command and the rest under your direct control.
 	<</if>>
 	<<if $hasFoughtOnce == 1>>
 		Your troops were involved in <<print num($battlesCount)>> battles of which <<print num($majorBattlesCount)>> were major engagements. You won
diff --git a/src/uncategorized/pMercenaries.tw b/src/uncategorized/pMercenaries.tw
index d48cf683056380504d0c21371f174cdbe66ec28a..ab117945345578e98eab45b466599e8604fc04aa 100644
--- a/src/uncategorized/pMercenaries.tw
+++ b/src/uncategorized/pMercenaries.tw
@@ -27,20 +27,18 @@ The budgetary difficulty many old world countries are in has resulted in unemplo
 <<link "Quarter a squad in the arcology">>
 	<<replace "#result">>
 	You hire some reputable mercenaries, kit them in excellent gear, and quarter them in $arcologies[0].name. The sight of armed men on patrol has @@.red;offended some of the more free-spirited citizens@@ of $arcologies[0].name.
-	<<run repX(-500, "event")>>
+	<<run repX(-100, "event")>>
 	<<run cashX(forceNeg(_price), "mercenaries")>>
 	<<set $mercenaries = 1>>
-	<<set $mercTotalManpower = 15>>
 	<<set $mercFreeManpower = 15>>
 	<</replace>>
 <</link>> <<if ($PC.skill.warfare >= 50) || ($PC.career == "arcology owner")>>//This will cost <<print cashFormat(_price)>> and some upkeep, @@.springgreen;reduced by your mercenary contacts@@//<<else>>//This will cost <<print cashFormat(5000)>> and incur significant upkeep costs//<</if>>
 <br><<link "Install a full platoon">>
 	<<replace "#result">>
 	You hire a full platoon of reputable mercenaries with a veteran officer to command them, kit them in excellent gear, and quarter them in $arcologies[0].name. The sight of many armed men on patrol has @@.red;deeply offended some of the more free-spirited citizens@@ of $arcologies[0].name.
-	<<run repX(-100, "event")>>
+	<<run repX(-500, "event")>>
 	<<run cashX(forceNeg((_price*2)), "mercenaries")>>
 	<<set $mercenaries = 3>>
-	<<set $mercTotalManpower = 30>>
 	<<set $mercFreeManpower = 30>>
 	<</replace>>
 <</link>> <<if ($PC.skill.warfare >= 50) || ($PC.career == "arcology owner")>>//This will cost <<print cashFormat((_price*2))>> and some upkeep, @@.springgreen;reduced by your mercenary contacts@@//<<else>>//This will cost <<print cashFormat(10000)>> and incur significant upkeep costs//<</if>>