diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000000000000000000000000000000000000..474880409f2eb7e1e60e1f030f7bb46364ea574c
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,3 @@
+{
+    "eslint.enable": false
+}
\ No newline at end of file
diff --git a/compile b/compile
index d44d129ab69d49563aebeec6f894f4e42b013f7a..c9bb6c0cd576c3111a246d3985f774f3c7670586 100755
--- a/compile
+++ b/compile
@@ -66,3 +66,6 @@ fi
 #Make the output prettier, replacing \t with a tab and \n with a newline
 sed -i -e '/^.*<div id="store-area".*$/s/\\t/\t/g' -e '/^.*<div id="store-area".*$/s/\\n/\n/g' bin/FC_pregmod_tmp.html \
 	&& mv bin/FC_pregmod_tmp.html bin/FC_pregmod.html
+
+echo "bin/FC_pregmod.html compilation finished."
+
diff --git a/compile-git b/compile-git
index 92331b4916db9a0906e43e383916518ab689f2e5..43304f9a1090397b866dd284c853f9b6a80502ad 100755
--- a/compile-git
+++ b/compile-git
@@ -41,4 +41,4 @@ $TWEEGO_EXE -o "bin/FC_pregmod_${HASH}_tmp.html" src/
 sed -i -e '/^<div id="store-area".*$/s/\\t/\t/g' -e '/^<div id="store-area".*$/s/\\n/\n/g'  "bin/FC_pregmod_${HASH}_tmp.html" \
 	&& mv "bin/FC_pregmod_${HASH}_tmp.html" "bin/FC_pregmod_${HASH}.html"
 
-echo "FC_pregmod_$HASH.html compilation finished."
+echo "bin/FC_pregmod_$HASH.html compilation finished."
diff --git a/devNotes/VersionChangeLog-Premod+LoliMod.txt b/devNotes/VersionChangeLog-Premod+LoliMod.txt
index ab5ff93babc9ee0ca6b8f7bf156a3212890fe177..579ba6ae6c235153c6a1bfdc7ed4eb98b9da19bd 100644
--- a/devNotes/VersionChangeLog-Premod+LoliMod.txt
+++ b/devNotes/VersionChangeLog-Premod+LoliMod.txt
@@ -2,6 +2,13 @@ Pregmod
 
 0.10.7.1-2.2.x
 
+03/13/2019
+
+	4
+	-fixes
+	-code cleaning
+	-player engineering skill now functional
+
 03/11/2019
 
 	3
diff --git a/slave variables documentation - Pregmod.txt b/slave variables documentation - Pregmod.txt
index a1d9d6cba8aef8a7ecf44770ed75da0d54082366..477a44f14ee1bf6953d39b5505fe0d972ad7dddb 100644
--- a/slave variables documentation - Pregmod.txt	
+++ b/slave variables documentation - Pregmod.txt	
@@ -2636,6 +2636,7 @@ vaginalAccessory:
 
 may accept strings, use at own risk
 "none"
+"bullet vibrator"
 "dildo"
 "large dildo"
 "huge dildo"
@@ -2643,6 +2644,12 @@ may accept strings, use at own risk
 "long, large dildo"
 "long, huge dildo"
 
+vaginalAttachment:
+
+may accept strings, use at own risk
+"none"
+"vibrator"
+
 dickAccessory:
 
 may accept strings, use at own risk
diff --git a/src/SpecialForce/Firebase.tw b/src/SpecialForce/Firebase.tw
index d6e3997f2e52a62da44cbc12c80630283a5c5b81..452c1b0006b295ecf9a46947463caad56562cbe4 100644
--- a/src/SpecialForce/Firebase.tw
+++ b/src/SpecialForce/Firebase.tw
@@ -71,12 +71,12 @@
 	<br>[[Tour the firebase|Firebase][$Tour = 1]]
 <<else>>
 	<<= FlavourText('Intro')>>
- <<if _T1 && _LB> 0>> <br><br>''Launch Bay:''
-			<<if $SF.Squad.Satellite.lv > 0>> <br>&nbsp;''Satellite:'' <<= Sat()>>
-				<<if $SF.Squad.Satellite.InOrbit < 1>> <br>&nbsp;&nbsp;[[Launch it into geostationary orbit.|Firebase][$SF.Squad.Satellite.InOrbit=1]] &nbsp;//You <span class='red'>cannot</span> upgrade the satellite once it has been launched.// <</if>>
-			<</if>>
-			<<if $SF.Squad.GiantRobot > 0>> <br>&nbsp;''Giant Robot:'' <<= GR()>> <</if>>
-			<<if $SF.Squad.MissileSilo > 0>> <br>&nbsp;''Cruise Missile:'' <<= ms()>> <</if>>
+	<<if _T1 && _LB> 0>> <br><br>''Launch Bay:''
+		<<if $SF.Squad.Satellite.lv > 0>> <br>&nbsp;''Satellite:'' <<= Sat()>>
+			<<if $SF.Squad.Satellite.InOrbit < 1>> <br>&nbsp;&nbsp;[[Launch it into geostationary orbit.|Firebase][$SF.Squad.Satellite.InOrbit=1]] &nbsp;//You <span class='red'>cannot</span> upgrade the satellite once it has been launched.// <</if>>
+		<</if>>
+		<<if $SF.Squad.GiantRobot > 0>> <br>&nbsp;''Giant Robot:'' <<= GR()>> <</if>>
+		<<if $SF.Squad.MissileSilo > 0>> <br>&nbsp;''Cruise Missile:'' <<= ms()>> <</if>>
 	<</if>>
 	<<= FlavourText('Outro')>>
 <</if>>
\ No newline at end of file
diff --git a/src/SpecialForce/SpecialForce.js b/src/SpecialForce/SpecialForce.js
index 144bbe80a68815ab91d62097edf1adb1ef496bf1..5bbe9269e02d4e066ba64a65823c8e8762e3bf95 100644
--- a/src/SpecialForce/SpecialForce.js
+++ b/src/SpecialForce/SpecialForce.js
@@ -1,42 +1,4 @@
 //V=SugarCube.State.variables, T=SugarCube.State.temporary;
-window.Count = function() {
-	const V=State.variables, T=State.temporary, C=Math.clamp, S=V.SF.Squad, E=V.economy;
-	T.FU=10; S.Firebase=C(S.Firebase, 0, T.FU);
-	T.AU=10; S.Armoury=C(S.Armoury, 0, T.AU);
-	T.DrugsU=10; S.Drugs=C(S.Drugs, 0, T.DrugsU);
-	T.DU=10; S.Drones=C(S.Drones, 0, T.DU);
-	T.AVU=10; S.AV=C(S.AV, 0, T.AVU);
-	T.TVU=10; S.TV=C(S.TV, 0, T.TVU);
-	T.AAU=10; S.AA=C(S.AA, 0, T.AAU);
-	T.TAU=10; S.TA=C(S.TA, 0, T.TAU);
-	if (V.PC.warfare >= 75) {T.PGTU=10; T.SPU=10; T.GunSU=10; T.SatU=10; T.GRU=10; T.MSU=10; T.ACU=10; T.SubU=10; T.HATU=10;}
-	else if (V.PC.warfare >= 50) {T.PGTU=9; T.SPU=9; T.GunSU=9; T.SatU=9; T.GRU=9; T.MSU=9; T.ACU=9; T.SubU=9; T.HATU=9;}
-	else {T.PGTU=8; T.SPU=8; T.GunSU=8; T.SatU=8; T.GRU=8; T.MSU=8; T.ACU=8; T.SubU=8; T.HATU=8;}
-	S.PGT=C(S.PGT, 0, T.PGTU);
-	S.SpacePlane=C(S.SpacePlane, 0, T.SPU); S.GunS=C(S.GunS, 0, T.GunSU);
-	S.Satellite.lv=C(S.Satellite.lv, 0, T.SatU); S.GiantRobot=C(S.GiantRobot, 0, T.GRU); S.MissileSilo=C(S.MissileSilo, 0, T.MSU);
-	S.AircraftCarrier=C(S.AircraftCarrier, 0, T.ACU); S.Sub=C(S.Sub, 0, T.SubU); S.HAT=C(S.HAT, 0, T.HATU);
-	T.GU=T.AVU+T.TVU+T.PGTU; T.G=S.AV+S.TV+S.PGT;
-	T.H=S.AA+S.TA+S.SpacePlane+S.GunS; T.HU=T.AAU+T.TAU+T.SPU+T.GunSU;
-	T.LBU=T.SatU+T.MSU; T.LB=S.Satellite.lv+S.MissileSilo;
-	T.Base=S.Firebase+S.Armoury+S.Drugs+S.Drones+T.H;
-	T.max=T.FU+T.AU+T.DrugsU+T.DU+T.HU;
-	//if (V.SF.Facility.Toggle > 0) T.Base += 1; T.max += 1;
-
-	if (V.terrain !== "oceanic" || V.terrain === "marine") { T.LBU += T.GRU; T.LB += S.GiantRobot; T.Base += T.G; T.max += T.GU;
-	T.max += T.LBU; T.Base += T.LB;
-	} else {
-		T.NY=S.AircraftCarrier + S.Sub + S.HAT; T.Base += T.NY;
-		T.NYU=T.ACU + T.SubU + T.HATU; T.max += T.NYU;
-	} V.SF.Size=T.Base; V.SF.Size=C(V.SF.Size, 1, T.max); T.T1=0;
-	if (E > 100) {T.Env=4;} else if (E > 67) {T.Env=3;} else {T.Env=2;}
-	if (V.SF.Size >= 30) T.T1=1; T.SFSubsidy=5000*(1+((V.SF.Squad.Troops/100)+(V.SF.Size/100)));
-	SFNameCapsCheck();
-	if (V.SF.IntroProgress > -1) delete V.SF.IntroProgress;
-	if (V.SF.MercCon === undefined) MercCon();
-	if (V.SF.Size === T.max) delete V.SF.Upgrade;
-};
-
 window.Main = function() {
  const V=State.variables;
  V.SF={Toggle:V.SF.Toggle,Active:-1,Depravity:0, Size:0, Upgrade:0, Gift:0, UC:{Assign:0, Lock:0}, ROE:"hold", Target:"recruit", Regs:"strict", Caps:"The Special Force", Lower:"the special force", Subsidy:1, BadOutcome:""};
@@ -64,65 +26,34 @@ window.SFInit = function() {
 };
 
 window.SFBC = function() {
+	function jsDel(input) {
+		while(input.length > 0) {
+			delete input[0]; input.splice(input[0],1);
+		}
+	}
+
 	const V=State.variables;
 	function InitClean() {
-		delete V.SFMODToggle;
-		delete V.securityForceActive;
-		delete V.securityForceCreate;
-		delete V.securityForceEventSeen;
+		jsDel([V.SFMODToggle,V.securityForceActive,V.securityForceCreate,V.securityForceEventSeen]);
 	}
 	function MainClean() {
-		delete V.securityForceActive;
-		delete V.securityForceRecruit;
-		delete V.securityForceTrade;
-		delete V.securityForceBooty;
-		delete V.securityForceIncome;
-		delete V.securityForceMissionEfficiency;
-		delete V.securityForceProfitable;
-		delete V.TierTwoUnlock;
-		delete V.securityForceDepravity;
-		delete V.SFAO;
-		delete V.securityForceUpgradeTokenReset;
-		delete V.securityForceUpgradeToken;
-		delete V.securityForceGiftToken;
-		delete V.securityForceRulesOfEngagement;
-		delete V.securityForceFocus;
-		delete V.securityForceAccountability;
-		delete V.securityForceName;
-		delete V.SubsidyActive;
+		jsDel([V.securityForceActive,V.securityForceRecruit,V.securityForceTrade,V.securityForceBooty,V.securityForceIncome]);
+		jsDel([V.securityForceMissionEfficiency,V.securityForceProfitable,V.TierTwoUnlock,V.securityForceDepravity,V.SFAO]);
+		jsDel([V.securityForceUpgradeTokenReset,V.securityForceUpgradeToken,V.securityForceGiftToken,V.securityForceRulesOfEngagement]);
+		jsDel([V.securityForceFocus,V.securityForceAccountability,V.securityForceName,V.SubsidyActive]);
 	}
 	function ColonelClean() {
-		delete V.SubsidyActive;
-		delete V.ColonelCore;
-		delete V.securityForceColonelToken;
-		delete V.securityForceColonelSexed;
-		delete V.ColonelRelationship;
+		jsDel([V.SubsidyActive,V.ColonelCore,V.securityForceColonelToken,V.securityForceColonelSexed,V.ColonelRelationship]);
 	}
 	function TradeShowClean() {
-		delete V.OverallTradeShowAttendance;
-		delete V.CurrentTradeShowAttendance;
-		delete V.TradeShowIncome;
-		delete V.TotalTradeShowIncome;
-		delete V.TradeShowHelots;
-		delete V.TotalTradeShowHelots;
+		jsDel([V.OverallTradeShowAttendance,V.CurrentTradeShowAttendance,V.TradeShowIncome,V.TotalTradeShowIncome]);
+		jsDel([V.TradeShowHelots,V.TotalTradeShowHelots]);
 	}
 	function UnitsClean() {
-		delete V.securityForcePersonnel;
-		delete V.securityForceInfantryPower;
-		delete V.securityForceArcologyUpgrades;
-		delete V.securityForceVehiclePower;
-		delete V.securityForceDronePower;
-		delete V.securityForceStimulantPower;
-		delete V.securityForceHeavyBattleTank;
-		delete V.securityForceAircraftPower;
-		delete V.securityForceSpacePlanePower;
-		delete V.securityForceAC130;
-		delete V.securityForceSatellitePower;
-		delete V.securityForceGiantRobot;
-		delete V.securityForceMissileSilo;
-		delete V.securityForceAircraftCarrier;
-		delete V.securityForceSubmarine;
-		delete V.securityForceHeavyAmphibiousTransport;
+		jsDel([V.securityForceInfantryPower,V.securityForceArcologyUpgrades,V.securityForceVehiclePower,V.securityForceDronePower]);
+		jsDel([V.securityForceStimulantPower,V.securityForceHeavyBattleTank,V.securityForceAircraftPower,V.securityForceSpacePlanePower]);
+		jsDel([V.securityForceAC130,V.securityForceSatellitePower,V.securityForceGiantRobot,V.securityForceMissileSilo,V.securityForceAircraftCarrier]);
+		jsDel([V.securityForceSubmarine,V.securityForceHeavyAmphibiousTransport,V.securityForcePersonnel]);
 	}
 
 	if (V.SF === undefined) {
@@ -205,8 +136,8 @@ window.SFBC = function() {
 		if (V.SpecOpsLock != undefined) V.SF.SpecOpsLock=V.SpecOpsLock; delete V.SpecOpsLock;
 		if (V.SF.UC === undefined) {
 			if (V.SF.SpecOps != undefined && V.SF.SpecOpsLock != undefined) {
-				V.SF.UC={Assign:V.SF.SpecOps, Lock:V.SF.SpecOpsLock}; delete V.SF.SpecOps;
-				delete V.SF.SpecOpsLock;
+				V.SF.UC={Assign:V.SF.SpecOps, Lock:V.SF.SpecOpsLock};
+				jsDel([V.SF.SpecOps,V.SF.SpecOpsLock]);
 			} else if (V.SF.UC === {}) {
 				V.SF.UC={Assign:0, Lock:0};
 			}
@@ -228,17 +159,17 @@ window.SFBC = function() {
 		if (V.SF.Depravity < 0) V.SF.Depravity=0;
 		if (V.SF.Size === undefined) V.SF.Size=V.SF.Units; delete V.SF.Units;
 		if (V.SFUnit !== undefined) {
-			if (V.SFUnit.AT !== undefined) delete V.SFUnit.AT; V.SFUnitTA=0;
-			V.SF.Squad=V.SFUnit; delete V.SFUnit;
-			V.SF.Squad.Sat={lv:V.SF.Squad.Satellite, InOrbit:V.SatLaunched};
-			delete V.SatLaunched;
+			if (V.SFUnit.AT !== undefined) V.SFUnitTA=0;
+			V.SF.Squad.Satellite=V.SF.Squad.Sat;
+			jsDel([V.SF.Squad.Sat,V.SatLaunched,V.SFUnit.AT]);
 			V.SF.Squad.Satellite=V.SF.Squad.Sat; delete V.SF.Squad.Sat;
 			if (V.SFTradeShow !== undefined) V.SF.MercCon=V.SFTradeShow; delete V.SFTradeShow;
 			if (V.SFColonel !== undefined) V.SF.Colonel=V.SFColonel; delete V.SFColonel;
 			if (V.SF.BadOutcome === undefined) V.SF.BadOutcome="";
 			if (V.SF.Squad.Satellite !== undefined && V.SatLaunched === undefined) {
-				delete V.SFUnit; V.SF.Squad.Sat={lv:0, InOrbit:0};
-				delete V.SatLaunched; V.SF.Squad.Satellite=V.SF.Squad.Sat; delete V.SF.Squad.Sat;
+				V.SF.Squad.Sat={lv:0, InOrbit:0};
+				V.SF.Squad.Satellite=V.SF.Squad.Sat;
+				jsDel([V.SF.Squad.Sat,V.SatLaunched,V.SFUnit]);
 			}
 		}
 		if (V.SF.Squad !== undefined && V.SF.Squad.Satellite.lv === undefined) {
@@ -251,8 +182,7 @@ window.SFBC = function() {
 };
 
 window.SFReport = function() {
-	"use strict";
- const V=State.variables,T=State.temporary,S=V.SF.Squad;
+	"use strict"; const V=State.variables,T=State.temporary,S=V.SF.Squad;
 	let target=50000,baseLine=5000,profit=0,upkeep=0,income=0;
 	let Multiplier={action:1,troop:1,unit:1,depravity:1},SFD=V.SF.Depravity;
 	let FNG=10,unitCap=2500,Trade=0.025,deaths=0,r=``; Count();
@@ -363,9 +293,9 @@ window.SFReport = function() {
 		V.arcologies[0].prosperity=Math.ceil(V.arcologies[0].prosperity+(Trade/10)*0.25);}
 	if (V.secExp > 0) V.authority += V.SF.Size*10; V.authority=Math.clamp(V.authority, 0, 20000);
 
-	income += Math.ceil( ( (baseLine* (0.09+Multiplier.troop/NO).toFixed(2) * (0.09+Multiplier.unit/NO).toFixed(2) * (0.09+Multiplier.action/NO).toFixed(2) * (0.09+Multiplier.depravity/NO).toFixed(2) ) - (upkeep*N1).toFixed(2) )/V.SF.Size/5+S.Troops/1000 ); S.Troops += Math.round(FNG/2);
+	income += Math.ceil( ( (baseLine* (0.09+Multiplier.troop/NO).toFixed(2) * (0.09+Multiplier.unit/NO).toFixed(2) * (0.09+Multiplier.action/NO).toFixed(2) * (0.09+Multiplier.depravity/NO).toFixed(2) ) - (upkeep*N1).toFixed(2) )/((V.SF.Size/2+S.Troops/2)*5) ); S.Troops += Math.round(FNG/2);
 	if (V.debugMode > 0) r += `<br>income:${commaNum(income)}, troop:${commaNum((0.09+Multiplier.troop/NO).toFixed(2))}, unit:${commaNum((0.09+Multiplier.unit/NO).toFixed(2))}, action:${commaNum((0.09+Multiplier.action/NO).toFixed(2))}, depravity:${commaNum((0.09+Multiplier.depravity/NO).toFixed(2))}, upkeep:${commaNum((upkeep*N1).toFixed(2))}`;
-	if (V.economy < 100) if (V.SF.Target === "raiding") { income=Math.ceil(income*14); } else if (V.SF.Target === "secure") { income=Math.ceil(income*20); } else { income=Math.ceil(income*50); } //Remove line if hard mode ever gets fixed.
+	if (V.economy < 100) income *= 83; //Remove line if hard mode ever gets fixed.
 	if (income >= target) profit=1; delete V.SF.Subsidy; cashX(income, "specialForces");
 	if (S.Troops > unitCap) S.Troops=unitCap;
 	if (V.arcologies[0].prosperity > V.ProsperityCap) V.arcologies[0].prosperity=V.ProsperityCap;
@@ -434,20 +364,58 @@ window.SFReport = function() {
 	return r;
 };
 
+window.Count = function() {
+	const V=State.variables, T=State.temporary, C=Math.clamp, S=V.SF.Squad, E=V.economy;
+	T.FU=10; S.Firebase=C(S.Firebase, 0, T.FU);
+	T.AU=10; S.Armoury=C(S.Armoury, 0, T.AU);
+	T.DrugsU=10; S.Drugs=C(S.Drugs, 0, T.DrugsU);
+	T.DU=10; S.Drones=C(S.Drones, 0, T.DU);
+	T.AVU=10; S.AV=C(S.AV, 0, T.AVU);
+	T.TVU=10; S.TV=C(S.TV, 0, T.TVU);
+	T.AAU=10; S.AA=C(S.AA, 0, T.AAU);
+	T.TAU=10; S.TA=C(S.TA, 0, T.TAU);
+	if (V.PC.warfare >= 75) {T.PGTU=10; T.SPU=10; T.GunSU=10; T.SatU=10; T.GRU=10; T.MSU=10; T.ACU=10; T.SubU=10; T.HATU=10;}
+	else if (V.PC.warfare >= 50) {T.PGTU=9; T.SPU=9; T.GunSU=9; T.SatU=9; T.GRU=9; T.MSU=9; T.ACU=9; T.SubU=9; T.HATU=9;}
+	else {T.PGTU=8; T.SPU=8; T.GunSU=8; T.SatU=8; T.GRU=8; T.MSU=8; T.ACU=8; T.SubU=8; T.HATU=8;}
+	S.PGT=C(S.PGT, 0, T.PGTU);
+	S.SpacePlane=C(S.SpacePlane, 0, T.SPU); S.GunS=C(S.GunS, 0, T.GunSU);
+	S.Satellite.lv=C(S.Satellite.lv, 0, T.SatU); S.GiantRobot=C(S.GiantRobot, 0, T.GRU); S.MissileSilo=C(S.MissileSilo, 0, T.MSU);
+	S.AircraftCarrier=C(S.AircraftCarrier, 0, T.ACU); S.Sub=C(S.Sub, 0, T.SubU); S.HAT=C(S.HAT, 0, T.HATU);
+	T.GU=T.AVU+T.TVU+T.PGTU; T.G=S.AV+S.TV+S.PGT;
+	T.H=S.AA+S.TA+S.SpacePlane+S.GunS; T.HU=T.AAU+T.TAU+T.SPU+T.GunSU;
+	T.LBU=T.SatU+T.MSU; T.LB=S.Satellite.lv+S.MissileSilo;
+	T.Base=S.Firebase+S.Armoury+S.Drugs+S.Drones+T.H;
+	T.max=T.FU+T.AU+T.DrugsU+T.DU+T.HU;
+	//if (V.SF.Facility.Toggle > 0) T.Base += 1; T.max += 1;
+
+	if (V.terrain !== "oceanic" || V.terrain === "marine") { T.LBU += T.GRU; T.LB += S.GiantRobot; T.Base += T.G; T.max += T.GU;
+	T.max += T.LBU; T.Base += T.LB;
+	} else {
+		T.NY=S.AircraftCarrier + S.Sub + S.HAT; T.Base += T.NY;
+		T.NYU=T.ACU + T.SubU + T.HATU; T.max += T.NYU;
+	} V.SF.Size=T.Base; V.SF.Size=C(V.SF.Size, 1, T.max); T.T1=0;
+	if (E > 100) {T.Env=4;} else if (E > 67) {T.Env=3;} else {T.Env=2;}
+	if (V.SF.Size >= 30) T.T1=1; T.SFSubsidy=5000*(1+((V.SF.Squad.Troops/100)+(V.SF.Size/100)));
+	SFNameCapsCheck();
+	if (V.SF.IntroProgress > -1) delete V.SF.IntroProgress;
+	if (V.SF.MercCon === undefined) MercCon();
+	if (V.SF.Size === T.max) delete V.SF.Upgrade;
+};
+
 window.SFNameCapsCheck = function() {
  const V=State.variables;
  if (V.SF.Lower != "the special force") V.SF.Caps=V.SF.Lower.replace("the ", "The ");
 };
 
 window.SFUpgradeCost = function(cost,unit) {
-	const V=State.variables,T=State.temporary,S=V.SF.Squad; var value=0;
+	"use strict"; const V=State.variables,T=State.temporary,S=V.SF.Squad; let value=0;
 	value=cost*T.Env*(1.15+(V.SF.Size/10))*(1.15+(unit/100));
 	if ([S.Sub,S.AircraftCarrier,S.MissileSilo,S.GiantRobot,S.Satellite.lv,S.GunS,S.SpacePlane,S.Drones].includes(unit)) value *= V.HackingSkillMultiplier;
 	return Math.ceil(value);
 };
 
 window.progress = function(x,max) {
-	var out = `⏐`, z, i;
+	"use strict"; let out = `⏐`, z, i;
 	if (max === undefined) {
 		Math.clamp(x,0,10);
 		if (State.variables.SF.Size < 30) {
@@ -485,7 +453,7 @@ window.SFCR = function() {
 
 window.Interactions = function() {
 	"use strict"; let choice=``, time=``;
-	const V=State.variables, C=V.SF.Colonel, T=State.temporary;
+	const V=State.variables, C=V.SF.Colonel;
 	if (V.SF.Gift > 0) {
 		if (V.choice == 1) {
 			choice +=`${V.SF.Caps} is turning over spare capital in tribute this week. `;
@@ -511,7 +479,7 @@ window.Interactions = function() {
 };
 
 window.BadOutcome = function() {
-	const V=State.variables,t=`The Colonel's`; var r =``;V.SF.Active=-2;
+	"use strict"; const V=State.variables; let r =``;V.SF.Active=-2;
 	switch(V.SF.Colonel.Core) {
 		case "Shell-Shocked":
 			V.SF.BadOutcome="lockdown"; V.trinkets.push("${t} explosives detonator");
@@ -683,7 +651,7 @@ window.FlavourText = function(View) {
 		if (S.AA >= 8) stealth=`The old skin has been replaced with a radar-absorbent material, making the aircraft difficult to pick up on radar.`;
 		if (S.AA >= 9) scramble=`The VTOLs can scramble to react to any threat in under three minutes.`;
 		if (S.AA >= 10) PAI=`A piloting AI has been installed, allowing the VTOLs to perform impossible maneuvers that cannot be done by a human pilot. This removes the need for a human in the aircraft altogether.`;
-		return `${group}. Several of the landing pads around $arcologies[0].name host groups of four fighters, ready to defend the arcology. ${scramble} The attack VTOL are currently ${W1} with a Gatling cannon${W2} ${W3}${support}. ${TAI} ${PAI} ${engines} ${lock} ${stealth}`;
+		return `${group}. Several of the landing pads around ${V.arcologies[0].name} host groups of four fighters, ready to defend the arcology. ${scramble} The attack VTOL are currently ${W1} with a Gatling cannon${W2} ${W3}${support}. ${TAI} ${PAI} ${engines} ${lock} ${stealth}`;
 	}
 
 	function TA() {
@@ -730,7 +698,7 @@ window.FlavourText = function(View) {
 
 	function AC() {
 		let recom=`has been recommissioned from the Old World for ${V.SF.Lower}. It`, jets=`Formerly mothballed strike jets`, loc=``, radar=``, AAG=``, prop=``, torp=``, armor=``, power=``, scramble=``;
-		if (V.week % 6 === 0) { loc=`moored to the pier in the Naval Yard`; } else { loc=`patrolling the waters near $arcologies[0].name`; }
+		if (V.week % 6 === 0) { loc=`moored to the pier in the Naval Yard`; } else { loc=`patrolling the waters near ${V.arcologies[0].name}`; }
 		if (S.AircraftCarrier >= 2) { radar=`The island's radar and comms have been improved.`; recom=``; }
 		if (S.AircraftCarrier >= 3) AAG=`The antiair guns have been updated to automatically track and predict enemy aircraft movement.`;
 		if (S.AircraftCarrier >= 4) jets=`Modern strike jets with state-of-the-art armaments`;
@@ -768,7 +736,7 @@ window.FlavourText = function(View) {
 		if (S.HAT >= 8) ramps=`The loading ramps have been improved, allowing for faster unloading.`;
 		if (S.HAT >= 9) HATframe=`The frame has been widened and reinforced, allowing for more space on the deck.`;
 		if (S.HAT >= 10) loadout=`An experimental loadout sacrifices all carrying capacity to instead act as a floating gun platform by mounting several rotary autocannons the deck, should the need arise.`;
-		return `An air cushion transport vehicle, or hovercraft${recom} is parked on the pier of the Naval Yard, ready to ferry ${tons} tons of soldiers and vehicles. ${guns} ${guns2} ${fans} ${turbines} ${speed} ${skirt} ${armor} ${ramps} ${HATframe} ${loadout}`;
+		return `An air cushion transport vehicle, or hovercraft ${recom} is parked on the pier of the Naval Yard, ready to ferry ${tons} tons of soldiers and vehicles. ${guns} ${guns2} ${fans} ${turbines} ${speed} ${skirt} ${armor} ${ramps} ${HATframe} ${loadout}`;
 	}
 
 	let r = `<br>`;
@@ -897,7 +865,7 @@ window.Sat = function() {
 	if (S.Satellite.lv >= 9) lens=`A higher quality and adjustable lens has been installed on the laser, allowing scalpel precision on armor or wide-area blasts on unarmored targets.`;
 	if (S.Satellite.lv >= 10) kin=`A magazine of directable tungsten rods have been mounted to the exterior of the satellite, allowing for kinetic bombardment roughly equal to a series of nuclear blasts.`;
 	return `${loc} ${gyro} ${thrusters} ${telemetry} ${solar} ${reactor} ${surviv} ${laser}${heat} ${lens} ${kin}`;
-}
+};
 
 window.GR = function() {
 	"use strict"; const V=State.variables, S=V.SF.Squad;
@@ -912,7 +880,7 @@ window.GR = function() {
 	if (S.GiantRobot >= 9) ammo=`; with spare ammunition drums kept along the robot's waist.`;
 	if (S.GiantRobot >= 10) missile=`Missile pods have been mounted on the shoulders.`;
 	return `A prototype giant robot ${loc} rests in a gantry along the side of the arcology. The robot is as tall as a medium-sized office building, focusing on speed over other factors. ${power} ${armor} ${actuator} ${heatsink} The main armament is ${knife} ${cannon}${ammo} ${missile}`;
-}
+};
 
 window.ms = function() {
 	"use strict"; const V=State.variables, S=V.SF.Squad;
@@ -927,7 +895,7 @@ window.ms = function() {
 	if (S.MissileSilo >= 9) h=`The missile now uses its remaining fuel to create a thermobaric explosion, massively increasing explosive power.`;
 	if (S.MissileSilo >= 10) c=` that can be tipped with either a conventional or nuclear warhead`;
 	return `${a} the arcology. The current missile armament is ${b}${c}. ${d} ${e} ${f} ${g} ${h}`;
-}
+};
 
 /*window.FSIntegrationMenu = function() {
 	const V=State.variables;
@@ -937,7 +905,7 @@ window.ms = function() {
 	if (V.SF.FS === undefined) {
 		text += `<br><br>`;
 		//text += ``;
-		V.SF.FS={Acceptance:{'FS':[],'Percent':[]}, Upgrade:0, Annoyance:0, Options:{ 'Slaves':[], 'FoodsAndMedia':[], 'CommonArea':[] ,'Barracks':[], 'SlaveProcessingCages':[], 'CommandCenter':[] ,'Armory':[] ,'DrugLab':[], 'Garage':[], 'Hangar':[] ,'DroneBay':[] ,'PersonalItems':[] ,'VehicleUpgrades':[] ,'CommonAreaVendors':[], 'RoleplayingManadated':[] ,'ColonelCompilance':[] ,'ColonelGift':[] }};
+		V.SF.FS={Acceptance:{'FS':[],'Percent':[]}, Upgrade:0, Annoyance:0, Options:{ 'Slaves':[], 'FoodsAndMedia':[], 'CommonArea':[], 'Barracks':[], 'SlaveProcessingCages':[], 'CommandCenter':[], 'Armory':[], 'DrugLab':[], 'Garage':[], 'Hangar':[], 'DroneBay':[], 'PersonalItems':[], 'VehicleUpgrades':[], 'CommonAreaVendors':[], 'RoleplayingManadated':[], 'ColonelCompilance':[], 'ColonelGift':[] }};
 		V.SF.Colonel.Talk=1;
 	} else {
 		text += `You walk past The Colonel and move towards the common area to meet with an exclusive group of her very influential officers that are currently relaxing at their favorite table. These men and women are known for their competence, popularity, and authority within in their respective divisions of the ${V.SF.Lower}, they are hard to replace, and they are always looking to earn more coin; they are the perfect weak link for trickling your Future Society influences down into the Firebase. As the officers make room at their table for you to sit and join them for discussion, you spot The Colonel staring at you from afar, and she does not look happy with you. As you are her employer, she cannot stop you from speaking with her soldiers or moving around as you please, but she can tell that you are up to no good: <br><br>`;
diff --git a/src/SpecialForce/TrickShotNight.tw b/src/SpecialForce/TrickShotNight.tw
index fa046dc9db2c1f7ffe360f58e3a05c6864691ef1..1bcfada098a24753297800026b5ad61cee67650c 100644
--- a/src/SpecialForce/TrickShotNight.tw
+++ b/src/SpecialForce/TrickShotNight.tw
@@ -23,9 +23,9 @@ Despite your direct elevator, interaction with the majority of your security for
 	<br>//You lack the necessary funds to attend.//
 <<else>> /* cash >= 500000 */
 
-<<link "Attend the trick shot night">>
+<br><<link "Attend the trick shot night">>
 	<<replace "#result">> <<set $PC.warfare += 1>>
-		You instruct $assistantName to inform $SF.Lower that you will be attending their trick shot night, and after settling your affairs in the penthouse you head down to the firebase. The atmosphere in the firebase is casual, especially in comparison to the usual situations you meet them, though your security force still maintain some measure of decorum towards you as their employer. Eventually, you settle in at the table with a handful of $SF.Lower officers and cash in your @@.yellowgreen;<<print cashFormat(500000)>>@@ into bullets. All that remains is to decide your strategy for the night.
+		You instruct $assistantName to inform $SF.Lower that you will be attending their trick shot night, and after settling your affairs in the penthouse you head down to the firebase. The atmosphere in the firebase is casual, especially in comparison to the usual situations you meet them, though your security force still maintain some measure of decorum towards you as their employer. Eventually, you settle in at the table with a handful of $SF.Lower officers and turn your @@.yellowgreen;<<print cashFormat(500000)>>@@ into bullets. All that remains is to decide your strategy for the night.
 		<br><br> <span id="bountyresult">
 
 	<<link "Play it safe">>
@@ -73,13 +73,41 @@ Despite your direct elevator, interaction with the majority of your security for
 			<<set $activeSlave.analSkill = 0>>
 			<<set $activeSlave.whoreSkill = 0>>
 			<<set $activeSlave.combatSkill = 1>>
+			<<set $activeSlave.accent = random(0,1)>>
 			<<set $activeSlave.behavioralFlaw = "arrogant">>
+			<<set $activeSlave.hLength = 1>>
 			<<set $activeSlave.hStyle = "buzzcut">>
+			<<set $activeSlave.clothes = "a military uniform">>
 			<<setLocalPronouns $activeSlave>>
+			<span id="artFrame">
+			/* 000-250-006 */
+			<<if $seeImages == 1>>
+				<<if $imageChoice == 1>>
+					<div class="imageRef medImg"><<SlaveArt $activeSlave 2 0>></div>
+				<<else>>
+					<div class="imageRef medImg"><<SlaveArt $activeSlave 2 0>></div>
+				<</if>>
+			<</if>>
+			/* 000-250-006 */
+			</span>
 			Some aggressive play and an eye for riling up your fellow players has resulted in an immense payout, and all but one of your adversaries have folded as the situation has escalated. The only player still in contention is a wily old mercenary, the veteran of $his fair share of battles on the battlefield and at the firing range. $He's short on bullets, however, and $he'll have to buy in with something else as collateral.
 			<br><br> <span id="aliveresult">
 
 				<<link "A year of servitude">>
+					<<set $activeSlave.clothes = "no clothing">>
+					<<replace "#artFrame">>
+						<span id="artFrame">
+						/* 000-250-006 */
+						<<if $seeImages == 1>>
+							<<if $imageChoice == 1>>
+								<div class="imageRef medImg"><<SlaveArt $activeSlave 2 0>></div>
+							<<else>>
+								<div class="imageRef medImg"><<SlaveArt $activeSlave 2 0>></div>
+							<</if>>
+						<</if>>
+						/* 000-250-006 */
+						</span>
+					<</replace>>
 					<<replace "#aliveresult">>
 						<<if random(1,100) > 50>>
 							For all your skillful maneuvering to reach this position, ultimately the win comes down to chance. This time, however, luck was not on your side. As the victor sweeps up $his spoils, the other security force clap you on the back and offer their condolences for your defeat. Though you may have lost your ¤, it seems you've @@.green;made some friends.@@
diff --git a/src/SpecialForce/Upgrades.tw b/src/SpecialForce/Upgrades.tw
index e1aaa7b15af009ee9869d00b0b82262811cd2770..21365acb4661b81b4a643679065a149e86af3a6e 100644
--- a/src/SpecialForce/Upgrades.tw
+++ b/src/SpecialForce/Upgrades.tw
@@ -1,5 +1,6 @@
 :: Upgrades [nobr]
-	<br><br> <<if $SF.Size !== _max>> Total upgrade progress: <<print progress($SF.Size,_max)>> $SF.Size/_max(<<print ($SF.Size/_max).toFixed(2)>>%) <<if $SF.Size < 30>><br>//<<print (30-$SF.Size )>> more upgrades is needed untill the next tier unlocks.//<</if>>
+
+	<br><br> <<if $SF.Size !== _max>> Total upgrade progress: <<print progress($SF.Size,_max)>> $SF.Size/_max(<<print ($SF.Size/_max).toFixed(2)>>%) <<if $SF.Size < 30>><br>//<<print (30-$SF.Size )>> more upgrades is needed until the next tier unlocks.//<</if>>
 	<<else>>There are no more upgrades available.<</if>>
 	<<if $SF.Upgrade > 0 && ($SF.Size !== _max)>>
 	<<set _cost = Math.ceil(Math.abs($cash*.05*(1.25+($SF.Size/1000))))>>
diff --git a/src/art/vector/VectorArtJS.js b/src/art/vector/VectorArtJS.js
index 6d6308083adfb65acbd108ab69e9dec11a20e44c..b1cf19041dd87a77d2447f0da5d433403ed9ebd1 100644
--- a/src/art/vector/VectorArtJS.js
+++ b/src/art/vector/VectorArtJS.js
@@ -1029,6 +1029,8 @@ window.VectorArt = (function () {
 							r += jsInclude("Art_Vector_Dildo_Huge");
 						else if (slave.vaginalAccessory === "long, huge dildo")
 							r += jsInclude("Art_Vector_Dildo_Huge_Long");
+					} else if (slave.vaginalAccessory === "bullet vibrator") {
+						r += jsInclude("Art_Vector_Bullet_Vibrator");
 					}
 			}
 		}
diff --git a/src/art/vector_revamp/vectorRevampedArtControl.js b/src/art/vector_revamp/vectorRevampedArtControl.js
index b70074c5f3a8e1fab7d4e04917203740926cc8a4..8be76f964b583f31b7239a461db15b90665c57f3 100644
--- a/src/art/vector_revamp/vectorRevampedArtControl.js
+++ b/src/art/vector_revamp/vectorRevampedArtControl.js
@@ -1067,7 +1067,7 @@ class RevampedArtControl {
 			result.push("Art_Vector_Revamp_Clit_Piercing");
 		else if (this.artSlave.clitPiercing == 2)
 			result.push("Art_Vector_Revamp_Clit_Piercing_Heavy");
-		else if (this.artSlave.clitPiercing == 1)
+		else if (this.artSlave.clitPiercing == 3)
 			result.push("Art_Vector_Revamp_Clit_Piercing_Smart");
 
 		return result;
diff --git a/src/cheats/PCCheatMenuCheatDatatypeCleanup.tw b/src/cheats/PCCheatMenuCheatDatatypeCleanup.tw
index 928a415334cca34355d5cdfcf1bdc70eed2472a3..377239aaf99d4455ce6044a94e7c5a569479aeee 100644
--- a/src/cheats/PCCheatMenuCheatDatatypeCleanup.tw
+++ b/src/cheats/PCCheatMenuCheatDatatypeCleanup.tw
@@ -31,6 +31,8 @@
 	<<set $tempSlave.pregWeek = 0>>
 <</if>>
 <<run PCDatatypeCleanup()>>
+<<set $upgradeMultiplierArcology = upgradeMultiplierArcology()>>
+<<set $HackingSkillMultiplier = HackingSkillMultiplier()>>
 
 <<if $tempSlave.boobs == 0>>
 	<<set $tempSlave.boobsBonus = 0>>
diff --git a/src/cheats/mod_EditFSCheat.tw b/src/cheats/mod_EditFSCheat.tw
index 434a64cf002347a1cacf655a8d7c414c462e2fee..83b314e537f52114d245c4e1ccd6ee43957519db 100644
--- a/src/cheats/mod_EditFSCheat.tw
+++ b/src/cheats/mod_EditFSCheat.tw
@@ -35,7 +35,7 @@
 	<<radiobutton "$arcologies[0].FSSupremacistRace" "semitic">> Semitic |
 	<<radiobutton "$arcologies[0].FSSupremacistRace" "mixed race">> Mixed Race
 
-	<br>[[Apply and reset Racial Subjugationism|MOD_Edit FS Cheat][removeFS("FSSubjugationist")]]
+	<br>[[Apply and reset Racial Subjugationism|MOD_Edit FS Cheat][FutureSocieties.remove("FSSubjugationist")]]
 
 <br><br>
 
@@ -71,7 +71,7 @@
 	<<radiobutton "$arcologies[0].FSSubjugationistRace" "semitic">> Semitic |
 	<<radiobutton "$arcologies[0].FSSubjugationistRace" "mixed race">> Mixed Race
 
-	<br>[[Apply and reset Racial Supremacy|MOD_Edit FS Cheat][removeFS("FSSupremacist")]]
+	<br>[[Apply and reset Racial Supremacy|MOD_Edit FS Cheat][FutureSocieties.remove("FSSupremacist")]]
 
 <br><br>
 
@@ -101,7 +101,7 @@
 	| <<radiobutton "$arcologies[0].FSGenderRadicalistLawFuta" 3>> 3 (Big butts and skilled buttholes pref.)
 	| <<radiobutton "$arcologies[0].FSGenderRadicalistLawFuta" 4>> 4 (Trap pref.)
 
-	<br>[[Apply and reset Gender Traditionalism|MOD_Edit FS Cheat][removeFS("FSGenderFundamentalist")]]
+	<br>[[Apply and reset Gender Traditionalism|MOD_Edit FS Cheat][FutureSocieties.remove("FSGenderFundamentalist")]]
 
 <br><br>
 
@@ -124,7 +124,7 @@
 	<<radiobutton "$arcologies[0].FSGenderFundamentalistSMR" 0>> 0 (Not passed.)
 	| <<radiobutton "$arcologies[0].FSGenderFundamentalistSMR" 1>> 1 (Passed.)
 
-	<br>[[Apply and reset Gender Radicalism|MOD_Edit FS Cheat][removeFS("FSGenderRadicalist")]]
+	<br>[[Apply and reset Gender Radicalism|MOD_Edit FS Cheat][FutureSocieties.remove("FSGenderRadicalist")]]
 
 <<if $seePreg != 0>>
 <br><br>
@@ -152,7 +152,7 @@
 	<<radiobutton "$arcologies[0].FSRepopulationFocusLaw" 0>> 0 (Not passed.)
 	| <<radiobutton "$arcologies[0].FSRepopulationFocusLaw" 1>> 1 (Passed.)
 
-	<br>[[Apply and reset Eugenics|MOD_Edit FS Cheat][removeFS("FSRestart")]]
+	<br>[[Apply and reset Eugenics|MOD_Edit FS Cheat][FutureSocieties.remove("FSRestart")]]
 
 <br><br>
 
@@ -175,7 +175,7 @@
 	<<radiobutton "$arcologies[0].FSRestartSMR" 0>> 0 (Not passed.)
 	| <<radiobutton "$arcologies[0].FSRestartSMR" 1>> 1 (Passed.)
 
-	<br>[[Apply and reset Repopulation Efforts|MOD_Edit FS Cheat][removeFS("FSRepopulationFocus")]]
+	<br>[[Apply and reset Repopulation Efforts|MOD_Edit FS Cheat][FutureSocieties.remove("FSRepopulationFocus")]]
 <</if>>
 
 <br><br>
@@ -199,7 +199,7 @@
 	<<radiobutton "$arcologies[0].FSPaternalistLaw" 0>> 0 (Not passed.)
 	| <<radiobutton "$arcologies[0].FSPaternalistLaw" 1>> 1 (Passed.)
 
-	<br>[[Apply and reset Degradationism|MOD_Edit FS Cheat][removeFS("FSDegradationist")]]
+	<br>[[Apply and reset Degradationism|MOD_Edit FS Cheat][FutureSocieties.remove("FSDegradationist")]]
 
 <br><br>
 
@@ -222,7 +222,7 @@
 	<<radiobutton "$arcologies[0].FSDegradationistLaw" 0>> 0 (Not passed.)
 	| <<radiobutton "$arcologies[0].FSDegradationistLaw" 1>> 1 (Passed.)
 
-	<br>[[Apply and reset Paternalism|MOD_Edit FS Cheat][removeFS("FSPaternalist")]]
+	<br>[[Apply and reset Paternalism|MOD_Edit FS Cheat][FutureSocieties.remove("FSPaternalist")]]
 
 <br><br>
 
@@ -245,7 +245,7 @@
 	<<radiobutton "$arcologies[0].FSBodyPuristLaw" 0>> 0 (Not passed.)
 	| <<radiobutton "$arcologies[0].FSBodyPuristLaw" 1>> 1 (Passed.)
 
-	<br>[[Apply and reset Body Transformationism|MOD_Edit FS Cheat][removeFS("FSTransformationFetishist")]]
+	<br>[[Apply and reset Body Transformationism|MOD_Edit FS Cheat][FutureSocieties.remove("FSTransformationFetishist")]]
 
 <br><br>
 
@@ -268,7 +268,7 @@
 	<<radiobutton "$arcologies[0].FSTransformationFetishistSMR" 0>> 0 (Not passed.)
 	| <<radiobutton "$arcologies[0].FSTransformationFetishistSMR" 1>> 1 (Passed.)
 
-	<br>[[Apply and reset Body Purism|MOD_Edit FS Cheat][removeFS("FSBodyPurist")]]
+	<br>[[Apply and reset Body Purism|MOD_Edit FS Cheat][FutureSocieties.remove("FSBodyPurist")]]
 
 <br><br>
 
@@ -292,7 +292,7 @@
 	<<radiobutton "$arcologies[0].FSYouthPreferentialistLaw" 0>> 0 (Not passed.)
 	| <<radiobutton "$arcologies[0].FSYouthPreferentialistLaw" 1>> 1 (Passed.)
 
-	<br>[[Apply and reset Maturity Preferentialism|MOD_Edit FS Cheat][removeFS("FSMaturityPreferentialist")]]
+	<br>[[Apply and reset Maturity Preferentialism|MOD_Edit FS Cheat][FutureSocieties.remove("FSMaturityPreferentialist")]]
 
 <br><br>
 
@@ -316,7 +316,7 @@
 	<<radiobutton "$arcologies[0].FSMaturityPreferentialistLaw" 0>> 0 (Not passed.)
 	| <<radiobutton "$arcologies[0].FSMaturityPreferentialistLaw" 1>> 1 (Passed.)
 
-	<br>[[Apply and reset Youth Preferentialism|MOD_Edit FS Cheat][removeFS("FSYouthPreferentialist")]]
+	<br>[[Apply and reset Youth Preferentialism|MOD_Edit FS Cheat][FutureSocieties.remove("FSYouthPreferentialist")]]
 
 <br><br>
 
@@ -339,7 +339,7 @@
 	<<radiobutton "$arcologies[0].FSSlimnessEnthusiastSMR" 0>> 0 (Not passed.)
 	| <<radiobutton "$arcologies[0].FSSlimnessEnthusiastSMR" 1>> 1 (Passed.)
 
-	<br>[[Apply and reset Asset Expansionism|MOD_Edit FS Cheat][removeFS("FSAssetExpansionist")]]
+	<br>[[Apply and reset Asset Expansionism|MOD_Edit FS Cheat][FutureSocieties.remove("FSAssetExpansionist")]]
 
 <br><br>
 
@@ -363,7 +363,7 @@
 	<<radiobutton "$arcologies[0].FSAssetExpansionistSMR" 0>> 0 (Not passed.)
 	| <<radiobutton "$arcologies[0].FSAssetExpansionistSMR" 1>> 1 (Passed.)
 
-	<br>[[Apply and reset Slimness Enthusiasm|MOD_Edit FS Cheat][removeFS("FSSlimnessEnthusiast")]]
+	<br>[[Apply and reset Slimness Enthusiasm|MOD_Edit FS Cheat][FutureSocieties.remove("FSSlimnessEnthusiast")]]
 
 <br><br>
 
@@ -409,7 +409,7 @@
 	<<radiobutton "$arcologies[0].FSPhysicalIdealistSMR" 0>> 0 (Not passed.)
 	| <<radiobutton "$arcologies[0].FSPhysicalIdealistSMR" 1>> 1 (Passed.)
 
-	<br>[[Apply and reset Hedonistic Decadence|MOD_Edit FS Cheat][removeFS("FSHedonisticDecadence")]]
+	<br>[[Apply and reset Hedonistic Decadence|MOD_Edit FS Cheat][FutureSocieties.remove("FSHedonisticDecadence")]]
 
 <br><br>
 
@@ -440,7 +440,7 @@
 	<<radiobutton "$arcologies[0].FSHedonisticDecadenceLaw2" 0>> 0 (Not passed.)
 	| <<radiobutton "$arcologies[0].FSHedonisticDecadenceLaw2" 1>> 1 (Passed.)
 
-	<br>[[Apply and reset Physical Idealist|MOD_Edit FS Cheat][removeFS("FSPhysicalIdealist")]]
+	<br>[[Apply and reset Physical Idealist|MOD_Edit FS Cheat][FutureSocieties.remove("FSPhysicalIdealist")]]
 
 <br><br>
 
@@ -486,7 +486,7 @@
 	<<radiobutton "$arcologies[0].FSRomanRevivalistLaw" 0>> 0 (Not passed.)
 	| <<radiobutton "$arcologies[0].FSRomanRevivalistLaw" 1>> 1 (Passed.)
 
-	<br>[[Apply and reset other Revivalisms|MOD_Edit FS Cheat][removeFS("FSAztecRevivalist"), removeFS("FSEgyptianRevivalist"), removeFS("FSEdoRevivalist"), removeFS("FSArabianRevivalist"), removeFS("FSChineseRevivalist")]]
+	<br>[[Apply and reset other Revivalisms|MOD_Edit FS Cheat][FutureSocieties.remove("FSAztecRevivalist"), FutureSocieties.remove("FSEgyptianRevivalist"), FutureSocieties.remove("FSEdoRevivalist"), FutureSocieties.remove("FSArabianRevivalist"), FutureSocieties.remove("FSChineseRevivalist")]]
 
 <br><br>
 
@@ -509,7 +509,7 @@
 	<<radiobutton "$arcologies[0].FSAztecRevivalistLaw" 0>> 0 (Not passed.)
 	| <<radiobutton "$arcologies[0].FSAztecRevivalistLaw" 1>> 1 (Passed.)
 
-	<br>[[Apply and reset other Revivalisms|MOD_Edit FS Cheat][removeFS("FSRomanRevivalist"), removeFS("FSEgyptianRevivalist"), removeFS("FSEdoRevivalist"), removeFS("FSArabianRevivalist"), removeFS("FSChineseRevivalist")]]
+	<br>[[Apply and reset other Revivalisms|MOD_Edit FS Cheat][FutureSocieties.remove("FSRomanRevivalist"), FutureSocieties.remove("FSEgyptianRevivalist"), FutureSocieties.remove("FSEdoRevivalist"), FutureSocieties.remove("FSArabianRevivalist"), FutureSocieties.remove("FSChineseRevivalist")]]
 
 <br><br>
 
@@ -532,7 +532,7 @@
 	<<radiobutton "$arcologies[0].FSEgyptianRevivalistLaw" 0>> 0 (Not passed.)
 	| <<radiobutton "$arcologies[0].FSEgyptianRevivalistLaw" 1>> 1 (Passed.)
 
-	<br>[[Apply and reset other Revivalisms|MOD_Edit FS Cheat][removeFS("FSRomanRevivalist"), removeFS("FSAztecRevivalist"), removeFS("FSEdoRevivalist"), removeFS("FSArabianRevivalist"), removeFS("FSChineseRevivalist")]]
+	<br>[[Apply and reset other Revivalisms|MOD_Edit FS Cheat][FutureSocieties.remove("FSRomanRevivalist"), FutureSocieties.remove("FSAztecRevivalist"), FutureSocieties.remove("FSEdoRevivalist"), FutureSocieties.remove("FSArabianRevivalist"), FutureSocieties.remove("FSChineseRevivalist")]]
 
 <br><br>
 
@@ -555,7 +555,7 @@
 	<<radiobutton "$arcologies[0].FSEdoRevivalistLaw" 0>> 0 (Not passed.)
 	| <<radiobutton "$arcologies[0].FSEdoRevivalistLaw" 1>> 1 (Passed.)
 
-	<br>[[Apply and reset other Revivalisms|MOD_Edit FS Cheat][removeFS("FSRomanRevivalist"), removeFS("FSAztecRevivalist"), removeFS("FSEgyptianRevivalist"), removeFS("FSArabianRevivalist"), removeFS("FSChineseRevivalist")]]
+	<br>[[Apply and reset other Revivalisms|MOD_Edit FS Cheat][FutureSocieties.remove("FSRomanRevivalist"), FutureSocieties.remove("FSAztecRevivalist"), FutureSocieties.remove("FSEgyptianRevivalist"), FutureSocieties.remove("FSArabianRevivalist"), FutureSocieties.remove("FSChineseRevivalist")]]
 
 <br><br>
 
@@ -578,7 +578,7 @@
 	<<radiobutton "$arcologies[0].FSArabianRevivalistLaw" 0>> 0 (Not passed.)
 	| <<radiobutton "$arcologies[0].FSArabianRevivalistLaw" 1>> 1 (Passed.)
 
-	<br>[[Apply and reset other Revivalisms|MOD_Edit FS Cheat][removeFS("FSRomanRevivalist"), removeFS("FSAztecRevivalist"), removeFS("FSEgyptianRevivalist"), removeFS("FSEdoRevivalist"), removeFS("FSChineseRevivalist")]]
+	<br>[[Apply and reset other Revivalisms|MOD_Edit FS Cheat][FutureSocieties.remove("FSRomanRevivalist"), FutureSocieties.remove("FSAztecRevivalist"), FutureSocieties.remove("FSEgyptianRevivalist"), FutureSocieties.remove("FSEdoRevivalist"), FutureSocieties.remove("FSChineseRevivalist")]]
 
 <br><br>
 
@@ -601,4 +601,4 @@
 	<<radiobutton "$arcologies[0].FSChineseRevivalistLaw" 0>> 0 (Not passed.)
 	| <<radiobutton "$arcologies[0].FSChineseRevivalistLaw" 1>> 1 (Passed.)
 
-	<br>[[Apply and reset other Revivalisms|MOD_Edit FS Cheat][removeFS("FSRomanRevivalist"), removeFS("FSAztecRevivalist"), removeFS("FSEgyptianRevivalist"), removeFS("FSEdoRevivalist"), removeFS("FSArabianRevivalist")]]
+	<br>[[Apply and reset other Revivalisms|MOD_Edit FS Cheat][FutureSocieties.remove("FSRomanRevivalist"), FutureSocieties.remove("FSAztecRevivalist"), FutureSocieties.remove("FSEgyptianRevivalist"), FutureSocieties.remove("FSEdoRevivalist"), FutureSocieties.remove("FSArabianRevivalist")]]
diff --git a/src/cheats/mod_EditFSCheatDatatypeCleanup.tw b/src/cheats/mod_EditFSCheatDatatypeCleanup.tw
index 460a79ba8d52f964b4d619b9359b8b8c59e4b866..f0dc1eabfd1d3b10eb3c864d0c1c40eb882af4fb 100644
--- a/src/cheats/mod_EditFSCheatDatatypeCleanup.tw
+++ b/src/cheats/mod_EditFSCheatDatatypeCleanup.tw
@@ -141,7 +141,7 @@
 <</if>>
 <<for _fscdc = 0; _fscdc < setup.FutureSocieties.length; _fscdc++>>
 	<<if !($arcologies[0][setup.FutureSocieties[_fscdc]] > 0)>>
-		<<run removeFS(setup.FutureSocieties[_fscdc])>>
+		<<run FutureSocieties.remove(setup.FutureSocieties[_fscdc])>>
 	<</if>>
 <</for>>
 
diff --git a/src/events/intro/introSummary.tw b/src/events/intro/introSummary.tw
index afcb75c701b1d1a4e1e2482a37af243c95366380..40a3e1123b433fc8d0bbb282ef6509c367fd6234 100644
--- a/src/events/intro/introSummary.tw
+++ b/src/events/intro/introSummary.tw
@@ -86,27 +86,23 @@ __''World Settings''__
 <<if ndef $customVariety>>
 You are using standardized slave trading channels. [[Customize the slave trade|Customize Slave Trade][$customVariety = 1, $customWA = 0]]
 <br>
-	<<if $internationalTrade == 0>>
+	<<options $internationalTrade>>
+	  <<option 0 "Restrict the trade to continental">>
 		The slave trade is ''continental,'' so a narrower variety of slaves will be available.
-		[[Allow intercontinental trade|Intro Summary][$internationalTrade = 1]]
-		<br>
-	<<else>>
+	  <<option 1 "Allow intercontinental trade">>
 		The slave trade is ''international,'' so a wider variety of slaves will be available.
-		[[Restrict the trade to continental|Intro Summary][$internationalTrade = 0]]
-		<br>
-	<</if>>
+	<</options>>
+	<br>
 
 	<<if $internationalTrade == 1>>
-	<<if $internationalVariety == 0>>
-		International slave variety is ''semi-realistic,'' so more populous nations will be more common.
-		[[Normalized national variety|Intro Summary][$internationalVariety = 1]]
-		<br>
-	<<else>>
-		International slave variety is ''normalized,'' so small nations will appear nearly as much as large ones.
-		[[Semi-realistic national variety|Intro Summary][$internationalVariety = 0]]
-		<br>
-	<</if>>
+	  <<options $internationalVariety>>
+		<<option 0 "Semi-realistic national variety">>
+		  International slave variety is ''semi-realistic,'' so more populous nations will be more common.
+		<<option 1 "Normalized national variety">>
+		  International slave variety is ''normalized,'' so small nations will appear nearly as much as large  ones.
+	  <</options>>
 	<</if>>
+	<br>
 <<else>>
 	Current nationality distributions are [[Adjust the slave trade|Customize Slave Trade][$customWA = 0, $customVariety = 1]] | [[Stop customizing|Intro Summary][delete $customVariety]]
 	<<if ndef $nationalitiescheck>> /* NGP: regenerate $nationalitiescheck from previous game's $nationalities array */
@@ -124,166 +120,156 @@ You are using standardized slave trading channels. [[Customize the slave trade|C
 <</if>> /* closes $customVariety is defined */
 
 /* Accordion 000-250-006 */
-	Accordion effects on weekly reports are
-<<if $useAccordion == 0>>
-	@@.red;DISABLED.@@ [[Enable|Intro Summary][$useAccordion = 1]]
-<<else>>
-	@@.cyan;ENABLED.@@ [[Disable|Intro Summary][$useAccordion = 0]]
-<</if>>
+<<options $useAccordion>>
+	<<option 0 "Disable">>
+		Accordion effects on weekly reports are @@.red;DISABLED.@@
+	<<option 1 "Enable">>
+		Accordion effects on weekly reports are @@.cyan;ENABLED.@@
+<</options>>
 /* Accordion 000-250-006 */
 
 <br>
-Economic Tabs on weekly reports are
-<<if $useTabs == 0>>
-@@.red;DISABLED.@@ [[Enable|Intro Summary][$useTabs = 1]]
-<<else>>
-@@.cyan;ENABLED.@@ [[Disable|Intro Summary][$useTabs = 0]]
-<</if>>
-
+<<options $useTabs>>
+	<<option 0 "Disable">>
+		Economic Tabs on weekly reports are @@.red;DISABLED.@@
+	<<option 1 "Enable">>
+		Economic Tabs on weekly reports are @@.cyan;ENABLED.@@
+<</options>>
 <br>
-<<if $plot == 1>>
-	Game mode: ''two-handed''. Includes non-erotic events concerning the changing world.
-	[[Disable non-erotic events|Intro Summary][$plot = 0]]
-<<else>>
-	Game mode: ''one-handed''. No non-erotic events concerning the changing world.
-	[[Enable non-erotic events|Intro Summary][$plot = 1]]
-<</if>>
+
+<<options $plot>>
+	<<option 0 "Disable non-erotic events">>
+	  Game mode: ''one-handed''. No non-erotic events concerning the changing world.
+	<<option 1 "Enable non-erotic events">>
+	  Game mode: ''two-handed''. Includes non-erotic events concerning the changing world.
+<</options>>
 
 <br><br>
 __''General slave settings''__
 <br>
-<<if $verboseDescriptions == 1>>
-	Your master suite ''will'' detail slave changes.
-	[[Disable|Intro Summary][$verboseDescriptions = 0]]
-<<else>>
-	Your master suite ''will not'' detail slave changes.
-	[[Enable|Intro Summary][$verboseDescriptions = 1]]
-<</if>>
+<<options $verboseDescriptions>>
+	<<option 0 "Disable">>
+	  Your master suite ''will not'' detail slave changes.
+	<<option 1 "Enable">>
+	  Your master suite ''will'' detail slave changes.
+<</options>>
 
 <br>
-<<if $newDescriptions == 1>>
-	Slaves ''will'' have alternate titles.
-	[[Disable|Intro Summary][$newDescriptions = 0]]
-<<else>>
-	Slaves ''will not'' have alternate titles.
-	[[Enable|Intro Summary][$newDescriptions = 1]]
-<</if>>
+<<options $newDescriptions>>
+	<<option 0 "Disable">>
+	  Slaves ''will not'' have alternate titles.
+	<<option 1 "Enable">>
+	  Slaves ''will'' have alternate titles.
+<</options>>
 
 <br>
-<<if $seeRace == 1>>
-	Ethnicity will ''occasionally'' be mentioned.
-	[[Disable most mentions of race|Intro Summary][$seeRace = 0]]
-<<else>>
-	Ethnicity will ''almost never'' be mentioned.
-	[[Enable mentions of race|Intro Summary][$seeRace = 1]]
-<</if>>
+<<options $seeRace>>
+	<<option 0 "Disable most mentions of race">>
+	  Ethnicity will ''almost never'' be mentioned.
+	<<option 1 "Enable mentions of race">>
+	  Ethnicity will ''occasionally'' be mentioned.
+<</options>>
 
 <br>
-<<if $seeNationality == 1>>
-	Nationality will ''occasionally'' be mentioned.
-	[[Disable most mentions of nationality|Intro Summary][$seeNationality = 0]]
-<<else>>
-	Nationality will ''almost never'' be mentioned.
-	[[Enable mentions of nationality|Intro Summary][$seeNationality = 1]]
-<</if>>
+<<options $seeNationality>>
+	<<option 0 "Disable most mentions of nationality">>
+	  Nationality will ''almost never'' be mentioned.
+	<<option 1 "Enable mentions of nationality">>
+	  Nationality will ''occasionally'' be mentioned.
+<</options>>
 
 <br>
-<<if $allowMaleSlaveNames>>
-	Slaves ''can generate with male names.''
-	[[Only use female names|Intro Summary][$allowMaleSlaveNames = false]]
-<<else>>
-	Slaves will ''always generate with female names.''
-	[[Allow male names|Intro Summary][$allowMaleSlaveNames = true]]
-<</if>>
+<<options $allowMaleSlaveNames>>
+	<<option false "Only use female names">>
+	  Slaves will ''always generate with female names'',
+	<<option true "Allow male names">>
+	  Slaves ''can generate with male names''.
+<</options>>
 //This only affects slave generation and not your ability to name your slaves.//
 
 <br>
-<<if $surnameOrder == 0>>
-	Order names ''based on country of origin''. [[Force name surname|Intro Summary][$surnameOrder = 1]] | [[Force surname name|Intro Summary][$surnameOrder = 2]]
-<<elseif $surnameOrder == 1>>
-	Names will always be ''Name Surname''. [[Allow nationality name order|Intro Summary][$surnameOrder = 0]] | [[Force surname name|Intro Summary][$surnameOrder = 2]]
-<<elseif $surnameOrder == 2>>
-	Names will always be ''Surname Name''. [[Allow nationality name order|Intro Summary][$surnameOrder = 0]] | [[Force name surname|Intro Summary][$surnameOrder = 1]]
-<</if>>
+<<options $surnameOrder>>
+  <<option 0 "Allow nationality name order">>
+	Order names ''based on country of origin''.
+  <<option 1 "Force name surname">>
+	Names will always be ''Name Surname''.
+  <<option 2 "Force surname name">>
+	Names will always be ''Surname Name''.
+<</options>>
 
 <br>
-<<if $familyTesting == 1>>
-	Slaves ''can'' have extended families instead of just a single relative. //May cause lag.//
-	[[Disable extended families|Intro Summary][$familyTesting = 0]]
-<<else>>
+<<options $familyTesting>>
+  <<option 0 "Disable extended families">>
 	Slaves ''cannot'' have extended families, just a single relative. //Vanilla Mode.//
-	[[Enable extended families|Intro Summary][$familyTesting = 1]]
-<</if>> //Extended family mode must be on for the incubation facility to be enabled.//
+  <<option 1 "Enable extended families">>
+	Slaves ''can'' have extended families instead of just a single relative. //May cause lag.//
+<</options>> //Extended family mode must be on for the incubation facility to be enabled.//
 
 <<if $familyTesting == 1>>
 	<br>
-	<<if $inbreeding == 1>>
-		Successive breeding ''will'' result in sub-average slaves.
-		[[Disable inbreeding damage|Intro Summary][$inbreeding = 0]]
-	<<else>>
+	<<options $inbreeding>>
+	  <<option 0 "Disable inbreeding damage">>
 		Successive breeding ''will not'' result in sub-average slaves.
-		[[Enable inbreeding damage|Intro Summary][$inbreeding = 1]]
-	<</if>>
+	  <<option 1 "Enable inbreeding damage">>
+		Successive breeding ''will'' result in sub-average slaves.
+	<</options>>
 
 	<br>
-	<<if $allowFamilyTitles == 1>>
-		Your relatives ''will'' use family titles.
-		[[Disable family titles|Intro Summary][$allowFamilyTitles = 0]]
-	<<else>>
+	<<options $allowFamilyTitles>>
+	  <<option 0 "Disable family titles">>
 		Your relatives ''will not'' use family titles.
-		[[Enable family titles|Intro Summary][$allowFamilyTitles = 1]]
-	<</if>>
+	  <<option 1 "Enable family titles">>
+		Your relatives ''will'' use family titles.
+	<</options>>
 <</if>>
 
 <br>
-Interactions between slaves' weight and asset size are
-<<if ($weightAffectsAssets != 0)>>
-	''enabled''. [[Disable|Intro Summary][$weightAffectsAssets = 0]]
-<<else>>
-	''disabled''. [[Enable|Intro Summary][$weightAffectsAssets = 1]]
-<</if>>
+
+<<options $weightAffectsAssets>>
+	<<option 0 "Disable">>
+	  Interactions between slaves' weight and asset size are ''disabled''.
+	<<option 1 "Enable">>
+	  Interactions between slaves' weight and asset size are ''enabled''.
+<</options>>
 
 &nbsp;&nbsp;&nbsp;&nbsp;
 
 <br>
-<<if ($curativeSideEffects != 0)>>
-Curative side effects are ''enabled''. [[Disable|Intro Summary][$curativeSideEffects = 0]]
-<<else>>
-Curative side effects are ''disabled''. [[Enable|Intro Summary][$curativeSideEffects = 1]]
-<</if>>
+<<options $curativeSideEffects>>
+  <<option 0 "Disable">>
+	Curative side effects are ''disabled''.
+  <<option 1 "Enable">>
+	Curative side effects are ''enabled''.
+<</options>>
 
 <br>
 /% Begin mod section: toggle whether slaves lisp. %/
 
-<<if $disableLisping>>
+<<options $disableLisping>>
+<<option 0 "Disable Lisping">>
 	Lisping: ''slaves will not lisp''.
-	[[Enable Lisping|Intro Summary][$disableLisping = 0]]
-<<else>>
+<<option 1 "Enable Lisping">>
 	Lisping: ''slaves with fat lips or heavy oral piercings will lisp''.
-	[[Disable Lisping|Intro Summary][$disableLisping = 1]]
-<</if>>
+<</options>>
 
 /% End mod section: toggle whether slaves lisp. %/
 
 <br><br>
 __''Slave age settings''__
 <br>
-<<if $seeAge == 1>>
+
+<br>
+<<options $seeAge>>
+  <<option 0 "Disable aging">>
+	Slaves will ''not age,'' and not experience birthdays.
+  <<option 1 "Enable aging">>
 	Slaves will ''age naturally.''
-	[[Disable aging|Intro Summary][$seeAge = 0]] |
-	[[Semi aging|Intro Summary][$seeAge = 2]]
-<<elseif $seeAge == 2>>
+  <<option 2 "Semi aging">>
 	Slaves ''will'' celebrate birthdays, but ''not age.''
-	[[Enable aging fully|Intro Summary][$seeAge = 1]] |
-	[[Disable aging|Intro Summary][$seeAge = 0]]
-<<else>>
-	Slaves will ''not age,'' and not experience birthdays.
-	[[Enable aging|Intro Summary][$seeAge = 1]] |
-	[[Semi aging|Intro Summary][$seeAge = 2]]
-<</if>>
+<</options>>
 //This option cannot be changed during the game//
-
 <br>
+
 <<if $minimumSlaveAge < 3>>
 	<<set $minimumSlaveAge = 3>>
 <<elseif $minimumSlaveAge < 18>>
@@ -295,12 +281,12 @@ __''Slave age settings''__
 Girls appearing in the game will be no younger than <<textbox "$minimumSlaveAge" $minimumSlaveAge "Intro Summary">>
 
 <br>
-<<if ($extremeUnderage == 0)>>
-Molestation of slaves younger than $minimumSlaveAge is ''forbidden''. [[Allow|Intro Summary][$extremeUnderage = 1]]
-<<else>>
-Molestation of slaves younger than $minimumSlaveAge is ''permitted''. [[Deny|Intro Summary][$extremeUnderage = 0]]
-<</if>>
-
+<<options $extremeUnderage>>
+  <<option 0 "Deny">>
+	Molestation of slaves younger than $minimumSlaveAge is ''forbidden''.
+  <<option 1 "Allow">>
+	Molestation of slaves younger than $minimumSlaveAge is ''permitted''.
+<</options>>
 <br>
 <<if $retirementAge <= $minimumSlaveAge>>
 	<<set $retirementAge = $minimumSlaveAge+1>>
@@ -313,13 +299,12 @@ Molestation of slaves younger than $minimumSlaveAge is ''permitted''. [[Deny|Int
 Initial retirement age will be at <<textbox "$retirementAge" $retirementAge "Intro Summary">> //May cause issues with New Game and initial slaves if set below 45.//
 
 <br>
-<<if $pedo_mode == 0>>
+<<options $pedo_mode>>
+  <<option 0 "Normal mode">>
 	Randomly generated slaves will generate normally.
-	[[Loli mode|Intro Summary][$pedo_mode = 1, $minimumSlaveAge = 5]]
-<<else>>
-	Nearly all randomly generated slaves will be under the age of 18, although custom slaves and slaves related to specific events may be older.
-	[[Normal mode|Intro Summary][$pedo_mode = 0]]
-<</if>>
+  <<option 1 "Loli mode" "$minimumSlaveAge = 5">>
+  	Nearly all randomly generated slaves will be under the age of 18, although custom slaves and slaves related to specific events may be older.
+<</options>>
 
 <br>
 <<if $fertilityAge < 3>>
@@ -344,148 +329,132 @@ Girls will not be able to become pregnant if their age is under <<textbox "$fert
 Girls will not be able to impregnate others if their age is under <<textbox "$potencyAge" $potencyAge "Intro Summary">>
 
 <br>
-<<if $precociousPuberty == 0>>
+<<options $precociousPuberty>>
+  <<option 0 "Disable precocious puberty">>
 	Girls ''cannot'' experience precocious puberty. (Unable to become pregnant or inseminate others younger than normal puberty age - $fertilityAge).
-	[[Enable precocious puberty|Intro Summary][$precociousPuberty = 1]]
-<<else>>
-	Girls ''can'' experience precocious puberty. (Under certain conditions they can become pregnant or inseminate others younger then normal age - $fertilityAge, though they may also experience delayed puberty).
-	[[Disable precocious puberty|Intro Summary][$precociousPuberty = 0]]
-<</if>>
+  <<option 1 "Enable precocious puberty">>
+  	Girls ''can'' experience precocious puberty. (Under certain conditions they can become pregnant or inseminate others younger then normal age - $fertilityAge, though they may also experience delayed puberty).
+<</options>>
 
 <br><br>
 __''Slave age effects''__
 <br>
-<<if $AgePenalty == 0>>
+<<options $AgePenalty>>
+  <<option 0 "Disable age penalties">>
 	Girls ''will not'' receive job and career penalties due to age.
-	[[Enable age penalties|Intro Summary][$AgePenalty = 1]]
-<<else>>
-	Girls ''will'' receive job and career penalties due to age.
-	[[Disable age penalties|Intro Summary][$AgePenalty = 0]]
-<</if>>
-
+  <<option 1 "Enable age penalties">>
+  	Girls ''will'' receive job and career penalties due to age.
+<</options>>
 <br>
-<<if $loliGrow == 1>>
-	Children ''will not'' grow as they age.
-	[[Enable Growth|Intro Summary][$loliGrow = 0]]
-<<else>>
+<<options $loliGrow>>
+  <<option 0 "Disable Growth">>
 	Children ''will'' grow as they age.
-	[[Disable Growth|Intro Summary][$loliGrow = 1]]
-<</if>>
+  <<option 1 "Enable Growth">>
+  	Children ''will not'' grow as they age.
+<</options>>
 
 <br><br>
 __''Content settings''__
 <br>
-<<switch $seeDicks>>
-<<case 100>>
-	''All''
-<<case 90>>
-	''Almost all''
-<<case 75>>
-	''Most''
-<<case 50>>
-	''Half''
-<<case 25>>
-	''Some''
-<<case 10>>
-	''A few''
-<<default>>
-	''None''
-<</switch>>
-of the slave girls will have dicks.
-<<if $seeDicks != 0>>[[None|Intro Summary][$seeDicks = 0]]<<else>>None<</if>> (0%)
-| <<if $seeDicks != 10>>[[A few|Intro Summary][$seeDicks = 10]]<<else>>A few<</if>> (10%)
-| <<if $seeDicks != 25>>[[Some|Intro Summary][$seeDicks = 25]]<<else>>Some<</if>> (25%)
-| <<if $seeDicks != 50>>[[Half|Intro Summary][$seeDicks = 50]]<<else>>Half<</if>> (50%)
-| <<if $seeDicks != 75>>[[Most|Intro Summary][$seeDicks = 75]]<<else>>Most<</if>> (75%)
-| <<if $seeDicks != 90>>[[Almost all|Intro Summary][$seeDicks = 90]]<<else>>Almost all<</if>> (90%)
-| <<if $seeDicks != 100>>[[All|Intro Summary][$seeDicks = 100]]<<else>>All<</if>> (100%)
-
+<<options $seeDicks>>
+  <<option 0 "None" "" "(0%)">>
+	''None'' of the slave girls will have dicks.
+  <<option 10 "A few" "" "(10%)">>
+	''A few'' of the slave girls will have dicks.
+  <<option 25 "Some" "" "(25%)">>
+	''Some'' of the slave girls will have dicks.
+  <<option 50 "Half" "" "(50%)">>
+	''Half'' of the slave girls will have dicks.
+  <<option 75 "Most" "" "(75%)">>
+	''Most'' of the slave girls will have dicks.
+  <<option 90 "Almost all" "" "(90%)">>
+	''Almost all'' of the slave girls will have dicks.
+  <<option 100 "All" "" "(100%)">>
+	''All'' of the slave girls will have dicks.
+<</options>>
 <br>
 <<if $seeDicks == 0>>
 Should you be able to surgically attach a penis to your female slaves and starting girls?
-<<if $makeDicks != 0>>[[No|Intro Summary][$makeDicks = 0]]<<else>>No<</if>>
-| <<if $makeDicks != 1>>[[Yes|Intro Summary][$makeDicks = 1]]<<else>>Yes<</if>>
+<<options $makeDicks>>
+  <<option 0 "No">>
+  <<option 1 "Yes">>
+<</options>>
 <</if>>
 
 <br>
-<<if $seePreg == 1>>
-	Pregnancy related content is ''enabled''.
-	[[Disable|Intro Summary][$seePreg = 0]]
-<<else>>
-	Most pregnancy related content is ''disabled''.
-	[[Enable|Intro Summary][$seePreg = 1]]
-<</if>>
+<<options $seePreg>>
+  <<option 0 "Disable">>
+  	Most pregnancy related content is ''disabled''.
+  <<option 1 "Enable">>
+  	Pregnancy related content is ''enabled''.
+<</options>>
 
 <br>
-Should children born in game strictly adhere to dick content settings?
-<<if $seeDicksAffectsPregnancy != 0>>[[No|Intro Summary][$seeDicksAffectsPregnancy = 0]]<<else>>No<</if>>
-| <<if $seeDicksAffectsPregnancy != 1>>[[Yes|Intro Summary][$seeDicksAffectsPregnancy = 1]]<<else>>Yes<</if>>
+<<options $seeDicksAffectsPregnancy>>
+  <<option 0 "No">>
+	Children born in game do not adhere to dick content settings.
+  <<option 1 "Yes">>
+	Children born in game strictly adhere to dick content settings.
+<</options>>
 
 <<if $seeDicksAffectsPregnancy == 0>>
 	<br>
-	<<if $adamPrinciple == 1>>
-		XX slaves only fathering daughters is ''enabled''.
-		[[Disable|Intro Summary][$adamPrinciple = 0]]
-	<<else>>
-		XX slaves only fathering daughters is ''disabled''.
-		[[Enable|Intro Summary][$adamPrinciple = 1]]
-	<</if>>
+	<<options $adamPrinciple>>
+	  <<option 0 "Disable">>
+	  	XX slaves only fathering daughters is ''disabled''.
+	  <<option 1 "Enable">>
+	  	XX slaves only fathering daughters is ''enabled''.
+	<</options>>
 <</if>>
 
 <br>
-<<if $seeHyperPreg == 1>>
-	Extreme pregnancy content like broodmothers is ''enabled''.
-	[[Disable|Intro Summary][$seeHyperPreg = 0]]
-<<else>>
+<<options $seeHyperPreg>>
+  <<option 0 "Disable">>
 	Extreme pregnancy content like broodmothers is ''disabled''.
-	[[Enable|Intro Summary][$seeHyperPreg = 1]]
-<</if>>
+  <<option 1 "Enable">>
+	Extreme pregnancy content like broodmothers is ''enabled''.
+<</options>>
 
 <br>
-<<if ($dangerousPregnancy == 0)>>
+<<options $dangerousPregnancy>>
+  <<option 0 "Disable">>
 	Advanced pregnancy complications such as miscarriage and premature birth are currently ''disabled''.
-	[[Enable|Intro Summary][$dangerousPregnancy = 1]]
-<<else>>
+  <<option 1 "Enable">>
 	Advanced pregnancy complications such as miscarriage and premature birth are currently ''enabled''.
-	[[Disable|Intro Summary][$dangerousPregnancy = 0]]
-<</if>>
+<</options>>
 
 <br>
-<<if $seeExtreme == 1>>
-	Extreme content like amputation is ''enabled''.
-	[[Disable|Intro Summary][$seeExtreme = 0]]
-<<else>>
+<<options $seeExtreme>>
+  <<option 0 "Disable">>
 	Extreme content like amputation is ''disabled''.
-	[[Enable|Intro Summary][$seeExtreme = 1]]
-<</if>>
+  <<option 1 "Enable">>
+	Extreme content like amputation is ''enabled''.
+<</options>>
 
 <br>
-<<if $seeBestiality == 1>>
-	Bestiality content is ''enabled''.
-	[[Disable|Intro Summary][$seeBestiality = 0]]
-<<else>>
+<<options $seeBestiality>>
+  <<option 0 "Disable">>
 	Bestiality content is ''disabled''.
-	[[Enable|Intro Summary][$seeBestiality = 1]]
-<</if>>
+  <<option 1 "Enable">>
+	Bestiality content is ''enabled''.
+<</options>>
 
 <br>
-<<if $seePee == 1>>
-	Watersports content is ''enabled''.
-	[[Disable|Intro Summary][$seePee = 0]]
-<<else>>
+<<options $seePee>>
+  <<option 0 "Disable">>
 	Watersports content is ''disabled''.
-	[[Enable|Intro Summary][$seePee = 1]]
-<</if>>
+  <<option 1 "Enable">>
+	Watersports content is ''enabled''.
+<</options>>
 
 <<if $seeDicks != 0>>
 	<br>
-	<<if $seeCircumcision == 1>>
-		Circumcision is ''enabled''.
-		[[Disable|Intro Summary][$seeCircumcision = 0]]
-	<<else>>
+	<<options $seeCircumcision>>
+	  <<option 0 "Disable">>
 		Circumcision is ''disabled''.
-		[[Enable|Intro Summary][$seeCircumcision = 1]]
-	<</if>>
+	  <<option 1 "Enable">>
+		Circumcision is ''enabled''.
+	<</options>>
 <</if>>
 
 <br><br>
@@ -675,31 +644,35 @@ __''Player Character''__
 		[[Ebony|Intro Summary][$PC.skin = "ebony"]] |
 		[[Pure Black|Intro Summary][$PC.skin = "pure black"]]
 
-	<<switch $PC.markings>>
-		<<case "freckles">>
-			<<set _PCCreationFreckles = "has light freckling">>
-		<<case "heavily freckled">>
-			<<set _PCCreationFreckles = "has heavy freckling">>
-		<<default>>
-			<<set _PCCreationFreckles = "is clear of blemishes">>
-	<</switch>>
-	<br>Your body ''_PCCreationFreckles''.
-		[[None|Intro Summary][$PC.markings = "none"]] |
-		[[Light|Intro Summary][$PC.markings = "freckles"]] |
-		[[Heavy|Intro Summary][$PC.markings = "heavily freckled"]]
+	<br>
+	<<options $PC.markings>>
+	  <<option "none" "None">>
+		Your body ''is clear of blemishes''.
+	  <<option "freckles" "Light">>
+		Your body ''has light freckling''.
+	  <<option "heavily freckled" "Heavy">>
+		Your body ''has heavy freckling''.
+	<</options>>
 
 	<br>Your eyes are <<textbox "$PC.eyeColor" $PC.eyeColor "Intro Summary">>
 
 	and hair is <<textbox "$PC.hColor" $PC.hColor "Intro Summary">>.
 
-	<br>Your face is ''$PC.faceShape''.
-		[[Normal|Intro Summary][$PC.faceShape = "normal"]] |
-		[[Androgynous|Intro Summary][$PC.faceShape = "androgynous"]] |
-		[[Masculine|Intro Summary][$PC.faceShape = "masculine"]] |
-		[[Cute|Intro Summary][$PC.faceShape = "cute"]] |
-		[[Sensual|Intro Summary][$PC.faceShape = "sensual"]] |
-		[[Exotic|Intro Summary][$PC.faceShape = "exotic"]]
-
+	<br>
+	<<options $PC.faceShape>>
+		<<option "normal" "Normal">>
+		  Your face is ''normal''.
+		<<option "androgynous" "Androgynous">>
+		  Your face is ''androgynous''.
+		<<option "masculine" "Masculine">>
+		  Your face is ''masculine''.
+		<<option "cute" "Cute">>
+		  Your face is ''cute''.
+		<<option "sensual" "Sensual">>
+		  Your face is ''sensual''.
+		<<option "exotic" "Exotic">>
+		  Your face is ''exotic''.
+	<</options>>
 	<br>
 	Your preferred refreshment is <<textbox "$PC.refreshment" $PC.refreshment "Intro Summary">> [[Cigars|Intro Summary][$PC.refreshment = "cigar",$PC.refreshmentType = 0]] | [[Whiskey|Intro Summary][$PC.refreshment = "whiskey",$PC.refreshmentType = 1]]
 
diff --git a/src/facilities/farmyard/futureAnimals.tw b/src/facilities/farmyard/futureAnimals.tw
index dac46ad0138ac862ffc280ee6fd008d5174e2373..5bb700d7c1d300955ac2d78516bda520c528ee6b 100644
--- a/src/facilities/farmyard/futureAnimals.tw
+++ b/src/facilities/farmyard/futureAnimals.tw
@@ -1,6 +1,6 @@
 /* Putting them here because commenting them out was breaking for some reason */
 
-<<if $animalsBought.germanShepherds == 0>>
+		<<if $animalsBought.germanShepherds == 0>>
 		<<link "Purchase German Shepherds" "FarmyardAnimals">><<set cashX(forceNeg(Math.trunc(20000*$upgradeMultiplierArcology)), "farmyard"), $animalsBought.germanShepherds = 1, $animalsBought.canines += 1, $canines.push("German Shepherds")>><</link>>
 		<br>
 	<<elseif $animalsBought.germanShepherds == 1>>
@@ -108,7 +108,6 @@
 		<</if>>
 		<br>
 	<</if>>
-<</if>>
 
 
 
@@ -237,7 +236,6 @@
 		<br>
 	<</if>>
 <</if>>
-<</if>>
 
 
 
@@ -281,7 +279,6 @@
 		<</if>>
 		<br>
 	<</if>>
-<</if>>
 
 
 <<if $farmyardStable > 1>>
@@ -367,4 +364,4 @@
 			//Set as active feline//
 		<</if>>
 		<br>
-	<</if>>
\ No newline at end of file
+	<</if>>
diff --git a/src/facilities/nursery/childSummary.tw b/src/facilities/nursery/childSummary.tw
index 78449006c71ef6d6c5753beb58d866e9c3b713cb..c69071588e1d848fc05799662b5dc08b7dacc03c 100644
--- a/src/facilities/nursery/childSummary.tw
+++ b/src/facilities/nursery/childSummary.tw
@@ -95,10 +95,6 @@
 <<switch _Pass>>
 <<case "Main">>
 
-	<<if $useSlaveSummaryTabs == 1>>
-		<<if $childAssignmentTab == "overview">>
-	<</if>>
-
 	<<if (_Child.choosesOwnClothes == 1) && (_Child.clothes == "choosing her own clothes")>>
 		<<set _oldDevotion = _Child.devotion>>
 		<<set _chosenClothes = saChoosesOwnClothes(_Child)>>
diff --git a/src/gui/Encyclopedia/encyclopedia.tw b/src/gui/Encyclopedia/encyclopedia.tw
index 791d4f2e130d134a0037491ae78b24e6635b49d6..7b9213065ef426af8a3250c91e8e5110e1d51a2b 100644
--- a/src/gui/Encyclopedia/encyclopedia.tw
+++ b/src/gui/Encyclopedia/encyclopedia.tw
@@ -21,7 +21,7 @@ PLAYING FREE CITIES
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Start the game and select any of the world options; choose normal difficulty, since it's pretty forgiving and this opener will make good @@.yellowgreen;[[money|Encyclopedia][$encyclopedia = "Money"]].@@ Build a completely male PC for your first game; it makes @@.green;[[reputation|Encyclopedia][$encyclopedia = "Arcologies and Reputation"]]@@ maintenance much easier. Choose wealth for both your career and your rumored method of obtaining the arcology; the other options are fun but a full wealth build will set you up quickly to get started.
 
 	<br><br>Now, customize your starting slaves.
-	<br>For your first, make her as @@.cyan;intelligent, educated,@@ and old as possible. Make her @@.hotpink;[[devoted|Encyclopedia][$encyclopedia = "From Rebellious to Devoted"]]@@ , but save @@.yellowgreen;[[money|Encyclopedia][$encyclopedia = "Money"]]@@ by giving her flaws, an unknown fetish, and @@.gold;making her afraid of you.@@ (These are easy to fix.) You can customize the rest of her as you wish, but try to keep her under ;@@.yellowgreen;<<print cashFormat(5000)>>.@@ Don't worry about skills, since with two of them you'll be able to rotate Head Girl duty so the other can learn skills. Commit her, base another slave off her, and commit that one too. Those are your [[Head Girls|Encyclopedia][$encyclopedia = "Head Girl"]].
+	<br>For your first, make her as @@.cyan;intelligent, educated,@@ and old as possible. Make her @@.hotpink;[[devoted|Encyclopedia][$encyclopedia = "From Rebellious to Devoted"]]@@, but save @@.yellowgreen;[[money|Encyclopedia][$encyclopedia = "Money"]]@@ by giving her flaws, an unknown fetish, and @@.gold;making her afraid of you.@@ (These are easy to fix.) You can customize the rest of her as you wish, but try to keep her under ;@@.yellowgreen;<<print cashFormat(5000)>>.@@ Don't worry about skills, since with two of them you'll be able to rotate Head Girl duty so the other can learn skills. Commit her, base another slave off her, and commit that one too. Those are your [[Head Girls|Encyclopedia][$encyclopedia = "Head Girl"]].
 
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Spend the rest of your @@.yellowgreen;[[money|Encyclopedia][$encyclopedia = "Money"]]@@ on prospects: slaves that are @@.yellowgreen;[[cheap|Encyclopedia][$encyclopedia = "Money"]]@@ now, but can be improved quickly. As long as you keep @@.hotpink;devotion@@ pretty high, low @@.mediumaquamarine;[[trust|Encyclopedia][$encyclopedia = "Trust"]]@@ can be fixed reliably. Unknown fetishes, emaciated or fat, flaws, deep voice, and poor skills are all good ways to drive prices down, and can all be fixed quickly. Virginities are a bad idea because they drive costs up and are easy to break. @@.cyan;Education@@ can take awhile and will take slaves away from other jobs, so make them all educated for now, and keep their @@.cyan;intelligence@@ reasonably high.
 
diff --git a/src/gui/css/optionsMacro.tw b/src/gui/css/optionsMacro.tw
new file mode 100644
index 0000000000000000000000000000000000000000..f6fa1ccc7cf508dbd614f4075348229848069907
--- /dev/null
+++ b/src/gui/css/optionsMacro.tw
@@ -0,0 +1,31 @@
+:: Options Macro [stylesheet]
+
+.optionMacroDescription {
+}
+
+.optionMacroOption {
+}
+
+/* Seperate each option with a | */
+.optionMacroOption::after {
+    content: " | ";
+}
+
+/* But don't add the | after the last one */
+.optionMacroOption:last-child::after {
+    content: unset;
+}
+
+
+.optionMacroOption a {
+}
+
+.optionMacroOption:hover {
+}
+
+.optionMacroSelected {
+}
+
+/* Container div of the list of options */
+.optionMacroOptionsList {
+}
diff --git a/src/init/setupVars.tw b/src/init/setupVars.tw
index 7efa84944bfcfac157d03422e1bf81829da88ef2..7645c3af06e676e6658cb1e3009ca2b9083c9775 100644
--- a/src/init/setupVars.tw
+++ b/src/init/setupVars.tw
@@ -2072,6 +2072,7 @@ Then pick _namePool.random(), or display those names as possible choices, or do
 <<set setup.vaginalAccessories = [
 	{name: "No default setting", value: "no default setting"},
 	{name: "None", value: "none"},
+	{name: "Bullet vibrator", value: "bullet vibrator"},
 	{name: "Dildo", value: "dildo"},
 	{name: "Long dildo", value: "long dildo", rs: "buyBigDildos"},
 	{name: "Large dildo", value: "large dildo"},
@@ -2079,6 +2080,11 @@ Then pick _namePool.random(), or display those names as possible choices, or do
 	{name: "Huge dildo", value: "huge dildo"},
 	{name: "Long, huge dildo", value: "long, huge dildo", rs: "buyBigDildos"}]>>
 
+<<set setup.vaginalAttachments = [
+	{name: "No default setting", value: "no default setting"},
+	{name: "None", value: "none"},
+	{name: "Vibrating attachment", value: "vibrator"}]>>
+
 <<set setup.dickAccessories = [
 	{name: "No default setting", value: "no default setting"},
 	{name: "None", value: "none"}]>>
diff --git a/src/init/storyInit.tw b/src/init/storyInit.tw
index d8c08dce33727b9173234eb4a23982ee8e560e21..1241b29310c51c3e7184a200c587e78a60d41f0e 100644
--- a/src/init/storyInit.tw
+++ b/src/init/storyInit.tw
@@ -861,6 +861,7 @@ You should have received a copy of the GNU General Public License along with thi
 <<set $clothesBoughtSwimwear = 0>>
 <<set $toysBoughtDildos = 0>>
 <<set $toysBoughtGags = 0>>
+<<set $toysBoughtVaginalAttachments = 0>>
 <<set $toysBoughtButtPlugs = 0>>
 <<set $toysBoughtButtPlugTails = 0>>
 <<set $buckets = 0>>
diff --git a/src/interaction/cyberConfig.tw b/src/interaction/cyberConfig.tw
index 3c327fc67cc1dcab062c4f93feb7db5b38940b80..eacceaf73b8e5ed7146bd85b92e3be3fa92335d1 100644
--- a/src/interaction/cyberConfig.tw
+++ b/src/interaction/cyberConfig.tw
@@ -157,7 +157,7 @@
 			<<if $stockpile.sexPTail > 0>>| [[Attach Pleasure Tail|cyberConfig][$temp = 8, $activeSlave.tail = "sex", $activeSlave.tailColor = "pink", $stockpile.sexPTail -= 1]]<</if>>
 		<</if>>
 	<<else>>
-		$He does not have a neural tail interface installed so you can not attach a tail.
+		$He does not have a neural tail interface installed so you cannot attach a tail.
 	<</if>>
 	<<if $activeSlave.tail == "mod">><br>
 		$He currently has a modular tail, styled to look like
diff --git a/src/js/DefaultRules.js b/src/js/DefaultRules.js
index b028235b359e8a38177877876cf89d1d722121fe..1f32ab0bbc453f11e23ab943b227f589a416d72d 100644
--- a/src/js/DefaultRules.js
+++ b/src/js/DefaultRules.js
@@ -564,6 +564,7 @@ window.DefaultRules = (function() {
 			ProcessAVirginDildos(slave, rule);
 		} else if (slave.vagina > 0) {
 			ProcessNonVirginDildos(slave, rule);
+		ProcessVaginalAttachments(slave, rule);
 		}
 	}
 
@@ -740,6 +741,45 @@ window.DefaultRules = (function() {
 		}
 	}
 
+	/** @param {App.Entity.SlaveState} slave */
+	function ProcessVaginalAttachments(slave, rule) {
+		// apply vaginal accessories to slaves
+		if (slave.vaginalAccessory === "none" && slave.vaginalAttachment === "vibrator") {
+			slave.vaginalAttachment = "none"; // clears dildo attachment when dildos are removed above
+		} else if ((rule.vaginalAttachment !== undefined) && (rule.vaginalAttachment !== "no default setting")) {
+			if ((slave.vaginalAttachment !== rule.vaginalAttachment)) {
+				slave.vaginalAttachment = rule.vaginalAttachment;
+				if (slave.vaginalAccessory !== "none") {
+					switch (slave.vaginalAttachment) {
+
+						case "none":
+							r += `<br>${slave.slaveName} has been instructed not to use an attachment for ${his} dildo.`;
+							break;
+
+						case "vibrator":
+							r += `<br>${slave.slaveName}'s dildo has been replaced with a vibrating model.`;
+							break;
+
+						default:
+							r += `<br>${slave.slaveName} has been given a ${slave.vaginalAttachment}.`;
+							break;
+					}
+				} else {
+					switch (slave.vaginalAttachment) {
+
+						case "none":
+							r += `<br>${slave.slaveName} has been instructed not to use any vaginal accessories.`;
+							break;
+
+						default:
+							r += `<br>${slave.slaveName} has been given a ${slave.vaginalAttachment}.`;
+							break;
+					}
+				}
+			}
+		}
+	}
+
 	/** @param {App.Entity.SlaveState} slave */
 	function ProcessDickAccessories(slave, rule) {
 		// apply dick accessories to slave
diff --git a/src/js/SlaveState.js b/src/js/SlaveState.js
index 2a72bb0ff5a8cf672762f51d0f251640cfb7070d..4bcb55d3cf9b4ae203c1a4ef6dd5013ac3166d59 100644
--- a/src/js/SlaveState.js
+++ b/src/js/SlaveState.js
@@ -1554,6 +1554,19 @@ App.Entity.SlaveState = class SlaveState {
 		/**
 		 * may accept strings, use at own risk
 		 * * "none"
+		 * * "bullet vibrator"
+		 * * "dildo"
+		 * * "long dildo"
+		 * * "large dildo"
+		 * * "long, large dildo"
+		 * * "huge dildo"
+		 * * "long, huge dildo"
+		 */
+		this.vaginalAttachment = "none";
+		/**
+		 * may accept strings, use at own risk
+		 * * "none"
+		 * * "vibrator"
 		 */
 		this.dickAccessory = "none";
 		/**
diff --git a/src/js/datatypeCleanupJS.js b/src/js/datatypeCleanupJS.js
index 923ec88aa2a87acdc08af7d20bd44502975c4f77..79920a1b4deb3c7175d74d95d77e924364a84a0c 100644
--- a/src/js/datatypeCleanupJS.js
+++ b/src/js/datatypeCleanupJS.js
@@ -404,6 +404,9 @@ window.SlaveDatatypeCleanup = (function SlaveDatatypeCleanup() {
 		if (typeof slave.vaginalAccessory !== "string") {
 			slave.vaginalAccessory = "none";
 		}
+		if (typeof slave.vaginalAttachment !== "string") {
+			slave.vaginalAttachments = "none";
+		}
 		if (typeof slave.dickAccessory !== "string") {
 			slave.dickAccessory = "none";
 		}
@@ -979,6 +982,9 @@ window.childCosmeticsDatatypeCleanup = function childCosmeticsDatatypeCleanup(ch
 	if (typeof child.vaginalAccessory !== "string") {
 		child.vaginalAccessory = "none";
 	}
+	if (typeof child.vaginalAttachment !== "string") {
+		child.vaginalAttachments = "none";
+	}
 	if (typeof child.dickAccessory !== "string") {
 		child.dickAccessory = "none";
 	}
diff --git a/src/js/futureSocietyJS.js b/src/js/futureSocietyJS.js
new file mode 100644
index 0000000000000000000000000000000000000000..eb78f23bb650a9f153d1e38c1836336f6c39523d
--- /dev/null
+++ b/src/js/futureSocietyJS.js
@@ -0,0 +1,112 @@
+window.FutureSocieties = (function() {
+	return {
+		remove: removeFS,
+		resetCredits: resetFSCredits
+	};
+
+	// call as FutureSocieties.remove(FS)
+	// FS must be a string (e.g. "FSPaternalist" or "FSDegradationist").
+	function removeFS(FS) {
+		const V = State.variables;
+		const arcology = V.arcologies[0];
+		const FSDecoration = FS + "Decoration";
+		const FSSMR = FS + "SMR";
+		let FSLaw = FS + "Law";
+		if (arcology[FS] === undefined) {
+			console.log(`ERROR: bad FS reference, $arcologies[0].${FS} not defined`);
+			return;
+		}
+
+		if (FS === "FSSupremacist" || FS === "FSSubjugationist")
+			FSLaw += "ME";
+		if (FS !== "FSNull")
+			arcology[FSDecoration] = 20;
+		arcology[FS] = "unset";
+		switch (FS) {
+			case "FSPaternalist":
+				arcology[FSLaw] = 0;
+				arcology[FSSMR] = 0;
+				V.slaveWatch = 0;
+				break;
+			case "FSDegradationist":
+				arcology[FSLaw] = 0;
+				arcology[FSSMR] = 0;
+				V.liveTargets = 0;
+				break;
+			case "FSGenderRadicalist":
+				arcology.FSGenderRadicalistLawBeauty = 0;
+				arcology.FSGenderRadicalistLawFuta = 0;
+				break;
+			case "FSGenderFundamentalist":
+				arcology.FSGenderFundamentalistLawBeauty = 0;
+				arcology.FSGenderFundamentalistLawBimbo = 0;
+				arcology.FSGenderFundamentalistSMR = 0;
+				break;
+			case "FSTransformationFetishist":
+			case "FSAssetExpansionist":
+				arcology[FSSMR] = 0;
+				break;
+			case "FSPhysicalIdealist":
+				arcology.FSPhysicalIdealistLaw = 0;
+				arcology.FSPhysicalIdealistSMR = 0;
+				arcology.FSPhysicalIdealistStrongFat = 0;
+				V.martialSchool = 0;
+				break;
+			case "FSHedonisticDecadence":
+				arcology.FSHedonisticDecadenceLaw = 0;
+				arcology.FSHedonisticDecadenceLaw2 = 0;
+				arcology.FSHedonisticDecadenceSMR = 0;
+				arcology.FSHedonisticDecadenceStrongFat = 0;
+				break;
+			case "FSChattelReligionist":
+				arcology.FSChattelReligionistLaw = 0;
+				arcology.FSChattelReligionistSMR = 0;
+				arcology.FSChattelReligionistCreed = 0;
+				V.subsidyChurch = 0;
+				break;
+			case "FSRepopulationFocus":
+				arcology[FSLaw] = 0;
+				arcology[FSSMR] = 0;
+				V.universalRulesChildrenBecomeBreeders = 0;
+				break;
+			case "FSRestart":
+				arcology[FSLaw] = 0;
+				arcology[FSSMR] = 0;
+				V.eliteOfficers = 0;
+				V.propOutcome = 0;
+				V.failedElite = 0;
+				break;
+			case "FSNull":
+				break;
+			default: // all others have one law and one SMR
+				arcology[FSLaw] = 0;
+				arcology[FSSMR] = 0;
+				break;
+		}
+
+		FacilityDecorationCleanup();
+		resetFSCredits();
+	}
+
+	function resetFSCredits() {
+		const V = State.variables;
+		let activeFS = 0;
+		for (let i = 0; i < setup.FutureSocieties.length; i++) {
+			if (V.arcologies[0][setup.FutureSocieties[i]] > 0) {
+				activeFS++;
+			}
+		}
+		if (V.arcologies[0].FSNull > 0) { // possibly recalculate for multiculturalism
+			activeFS--;
+			if (V.FSCreditCount === 4)
+				activeFS += V.arcologies[0].FSNull/25;
+			else if (V.FSCreditCount === 6)
+				activeFS += V.arcologies[0].FSNull/17;
+			else if (V.FSCreditCount === 7)
+				activeFS += V.arcologies[0].FSNull/15;
+			else
+				activeFS += V.arcologies[0].FSNull/20;
+		}
+		V.FSCredits = Math.max(Math.trunc(V.FSGotRepCredits - activeFS), 0);
+	}
+})();
diff --git a/src/js/itemAvailability.js b/src/js/itemAvailability.js
index 4f06d45d4718beb412310765b99b1bd500b888d7..eeac0fb007d7a35cf66753a39943814cfb1eb814 100644
--- a/src/js/itemAvailability.js
+++ b/src/js/itemAvailability.js
@@ -134,10 +134,13 @@ window.isItemAccessible = function(string) {
 		case 'a large empathy belly':
 		case 'a huge empathy belly':
 			return (V.arcologies[0].FSRepopulationFocus > 0 || V.clothesBoughtBelly === 1);
+		case 'bullet vibrator':	// Not technically a dildo, but $toyBoughtVaginalAccessories doesn't exist
 		case 'long dildo':
 		case 'long, large dildo':
 		case 'long, huge dildo':
 			return (V.toysBoughtDildos === 1);
+		case 'vibrator':
+			return (V.toysBoughtVaginalAttachments === 1);
 		case 'long plug':
 		case 'long, large plug':
 		case 'long, huge plug':
diff --git a/src/js/optionsMacro.js b/src/js/optionsMacro.js
new file mode 100644
index 0000000000000000000000000000000000000000..8f4c80db07804bac68fe154cc2c5fb8ad9b42eec
--- /dev/null
+++ b/src/js/optionsMacro.js
@@ -0,0 +1,63 @@
+/* Use like:
+ *  <<option $varname "New Passage (defaults to current passage)">>
+ *  <<option "value_to_set_varname_to" "English text to show user" "additional variables to set when clicked" "Extra english text to show, but not as a link">>
+		 Text to show if $varname matches this option
+	  <<option ....>>
+	<</option>>
+  */
+Macro.add('options', {
+	skipArgs : false,
+	tags     : ['option'],
+	handler  : function () {
+		try {
+			var currentOption = this.payload[0].args[0];
+			if (currentOption === undefined)
+				currentOption = false;
+			if (!this.payload[0].args.full.startsWith("State.variables.")) {
+				throw new Error("First parameter to 'options' must be a variable");
+			}
+			var variable = this.payload[0].args.full.split(' ',1)[0].substring("State.variables.".length);
+			var passageName = this.payload[0].args[1] || passage();
+
+			var found = false;
+			var hasDescription = false;
+			/* First print out the string for the current value */
+			for (var i = 1, len = this.payload.length; i < len; ++i) {
+				if (this.payload[i].name === 'option') {
+					if (this.payload[i].args[0] === currentOption) {
+						if (found) {
+							throw new Error("Two 'option' found with the same value")
+						}
+						hasDescription = !!this.payload[i].contents;
+						jQuery(this.output).wiki('<span class="optionMacroDescription">' + this.payload[i].contents + " </span>");
+						found = true;
+					}
+				} else {
+					throw new Error("Only valid tag is 'option' inside 'options'")
+				}
+			}
+			if (!found) {
+				throw new Error("No option found for value " + this.payload[0].args[0]);
+			}
+
+			var showSelectedOption = this.payload.length != 3 || !hasDescription;
+
+			/* Now print out the list of options */
+			var output = "";
+			for (var i = 1, len = this.payload.length; i < len; ++i) {
+				var args = this.payload[i].args;
+				var extraComment = args[3] ? (' ' + args[3]) : '';
+				if (args[0] !== currentOption) {
+					var onClickChange = args[2] ? (', ' + args[2]) : '';
+					output += '<span class="optionMacroOption">[[' + args[1] + "|" + passage() + "][$" + variable + " = " + JSON.stringify(args[0]) + onClickChange + "]]" + extraComment + "</span>";
+				} else if (showSelectedOption) {
+					output +='<span class="optionMacroSelected optionMacroOption">' + args[1] + extraComment + '</span>';
+				}
+			}
+			jQuery(this.output).wiki('<span class="optionMacroOptionsList">' + output + "</span>");
+		}
+		catch (ex) {
+			return this.error('bad options expression: ' + ex.message);
+		}
+	}
+});
diff --git a/src/js/rulesAssistantOptions.js b/src/js/rulesAssistantOptions.js
index 311155c74e46521ef93fea701218a3568625ce9b..a3caa9529ccbe59fb7768c55025e2ba5768d6cb4 100644
--- a/src/js/rulesAssistantOptions.js
+++ b/src/js/rulesAssistantOptions.js
@@ -918,6 +918,7 @@ window.rulesAssistantOptions = (function() {
 			this.appendChild(new VagAccVirginsList());
 			this.appendChild(new VagAccAVirginsList());
 			this.appendChild(new VagAccOtherList());
+			this.appendChild(new VaginalAttachmentsList());
 			if (V.seeDicks !== 0 || V.makeDicks !== 0) {
 				this.appendChild(new DickChastityList());
 				this.appendChild(new DickAccVirginsList());
@@ -1355,6 +1356,21 @@ window.rulesAssistantOptions = (function() {
 		}
 	}
 
+	class VaginalAttachmentsList extends List {	/**TODO: this will need expanding */
+		constructor() {
+			const accs = [];
+			setup.vaginalAttachments.forEach(acc => {
+				if (acc.fs === undefined && acc.rs === undefined)
+					accs.push([acc.name, acc.value]);
+				else if (acc.rs === "buyVaginalAttachments" && V.toysBoughtVaginalAttachments === 1)
+					accs.push([acc.name + " (Purchased)", acc.value]);
+			});
+			super("Vaginal attachments for slaves with vaginal accessories", accs);
+			this.setValue(current_rule.set.vaginalAttachment);
+			this.onchange = (value) => current_rule.set.vaginalAttachment = value;
+		}
+	}
+
 	class DickChastityList extends List {
 		constructor() {
 			const items = [
diff --git a/src/js/slaveSummaryWidgets.js b/src/js/slaveSummaryWidgets.js
index 2eb64c87236dfc98bc5d26aee4a5a736ed49e1c3..a9cc60634875e403f1d3bcb8dc83cc09527c6ec2 100644
--- a/src/js/slaveSummaryWidgets.js
+++ b/src/js/slaveSummaryWidgets.js
@@ -4622,27 +4622,40 @@ window.SlaveSummaryUncached = (function(){
 
 	/** @param {App.Entity.SlaveState} slave */
 	function long_vaginal_acc(slave) {
-		switch (slave.vaginalAccessory) {
-			case "dildo":
-				r += `Vaginal dildo.`;
-				break;
-			case "large dildo":
-				r += `Large vaginal dildo.`;
-				break;
-			case "huge dildo":
-				r += `Huge vaginal dildo.`;
-				break;
-			case "long dildo":
-				r += `Long vaginal dildo.`;
-				break;
-			case "long, large dildo":
-				r += `Long and large vaginal dildo.`;
-				break;
-			case "long, huge dildo":
-				r += `Long and wide vaginal dildo.`;
-				break;
+		if (slave.vaginalAttachment !== "vibrator") {
+			switch (slave.vaginalAccessory) {
+				case "bullet vibrator":
+					r += `Attached bullet vibrator.`;
+					break;
+				case "dildo":
+					r += `Vaginal dildo.`;
+					break;
+				case "large dildo":
+					r += `Large vaginal dildo.`;
+					break;
+				case "huge dildo":
+					r += `Huge vaginal dildo.`;
+					break;
+				case "long dildo":
+					r += `Long vaginal dildo.`;
+					break;
+				case "long, large dildo":
+					r += `Long and large vaginal dildo.`;
+					break;
+				case "long, huge dildo":
+					r += `Long and wide vaginal dildo.`;
+					break;
+			}
 		}
 		r += " ";
+		if (slave.vaginalAttachment !== "none") {
+			switch (slave.vaginalAttachment) {
+				case "vibrator":
+					r += `Vibrating dildo.`;
+					break;
+			}
+			r += " ";
+		}
 	}
 
 	/** @param {App.Entity.SlaveState} slave */
diff --git a/src/js/storyJS.js b/src/js/storyJS.js
index 1d9a97fd8aa7fc8669e6a5ad71795452e355a843..67101c00926a46acb0769f864892593c465c45ff 100644
--- a/src/js/storyJS.js
+++ b/src/js/storyJS.js
@@ -808,109 +808,6 @@ window.SoftenSexualFlaw = /** @param {App.Entity.SlaveState} slave */ function S
 	slave.sexualFlaw = "none";
 };
 
-window.removeFS = function(FS) {
-	const V = State.variables;
-	const arcology = V.arcologies[0];
-	let FSDecoration = FS + "Decoration";
-	let FSSMR = FS + "SMR";
-	let FSLaw = FS + "Law";
-	if (FS === "FSSupremacist" || FS === "FSSubjugationist") {
-		FSLaw += "ME";
-	}
-	switch (FS) {
-		case "FSPaternalist":
-			arcology[FSLaw] = 0;
-			arcology[FSSMR] = 0;
-			V.slaveWatch = 0;
-			break;
-		case "FSDegradationist":
-			arcology[FSLaw] = 0;
-			arcology[FSSMR] = 0;
-			V.liveTargets = 0;
-			break;
-		case "FSGenderRadicalist":
-			arcology.FSGenderRadicalistLawBeauty = 0;
-			arcology.FSGenderRadicalistLawFuta = 0;
-			break;
-		case "FSGenderFundamentalist":
-			arcology.FSGenderFundamentalistLawBeauty = 0;
-			arcology.FSGenderFundamentalistLawBimbo = 0;
-			arcology.FSGenderFundamentalistSMR = 0;
-			break;
-		case "FSTransformationFetishist":
-		case "FSAssetExpansionist":
-			arcology[FSSMR] = 0;
-			break;
-		case "FSPhysicalIdealist":
-			arcology.FSPhysicalIdealistLaw = 0;
-			arcology.FSPhysicalIdealistSMR = 0;
-			arcology.FSPhysicalIdealistStrongFat = 0;
-			V.martialSchool = 0;
-			break;
-		case "FSHedonisticDecadence":
-			arcology.FSHedonisticDecadenceLaw = 0;
-			arcology.FSHedonisticDecadenceLaw2 = 0;
-			arcology.FSHedonisticDecadenceSMR = 0;
-			arcology.FSHedonisticDecadenceStrongFat = 0;
-			break;
-		case "FSChattelReligionist":
-			arcology.FSChattelReligionistLaw = 0;
-			arcology.FSChattelReligionistSMR = 0;
-			arcology.FSChattelReligionistCreed = 0;
-			V.subsidyChurch = 0;
-			break;
-		case "FSRepopulationFocus":
-			arcology[FSLaw] = 0;
-			arcology[FSSMR] = 0;
-			V.universalRulesChildrenBecomeBreeders = 0;
-			break;
-		case "FSRestart":
-			arcology[FSLaw] = 0;
-			arcology[FSSMR] = 0;
-			V.eliteOfficers = 0;
-			break;
-		case "FSNull":
-			break;
-		default: /* all others have one law and one SMR */
-			arcology[FSLaw] = 0;
-			arcology[FSSMR] = 0;
-			break;
-	}
-	if (FS !== "FSNull") {
-		arcology[FSDecoration] = 20;
-		if (FS === "FSRestart") {
-			V.propOutcome = 0;
-			V.failedElite = 0;
-		}
-	}
-	arcology[FS] = "unset";
-	FacilityDecorationCleanup();
-	resetFSCredits();
-};
-
-window.resetFSCredits = function() {
-	const V = State.variables;
-	let activeFS = 0;
-	for (let i = 0; i < setup.FutureSocieties.length; i++) {
-		if (V.arcologies[0][setup.FutureSocieties[i]] > 0) {
-			activeFS++;
-		}
-	}
-	if (V.arcologies[0].FSNull > 0) { /* possibly recalculate for multiculturalism */
-		activeFS--;
-		if (V.FSCreditCount === 4) {
-			activeFS += V.arcologies[0].FSNull/25;
-		} else if (V.FSCreditCount === 6) {
-			activeFS += V.arcologies[0].FSNull/17;
-		} else if (V.FSCreditCount === 7) {
-			activeFS += V.arcologies[0].FSNull/15;
-		} else {
-			activeFS += V.arcologies[0].FSNull/20;
-		}
-	}
-	V.FSCredits = Math.max(Math.trunc(V.FSGotRepCredits - activeFS), 0);
-};
-
 window.generatePlayerPronouns = function(PC) {
 	if (PC.title === 0) {
 		PC.pronoun = "she";
@@ -977,3 +874,84 @@ window.generateAssistantPronouns = function() {
 		V.marketAssistantPronouns.noun = "girl";
 	}
 };
+
+window.printTrinkets = function printTrinkets() {
+	function trinketPluralReplacer(desc) {
+		switch (desc) {
+			/* not supported
+				best in show ribbons
+				napkins
+				saPorn trinkets
+				wedding photos
+			*/
+			// should never have plurals
+			case "a collection of diplomas from expensive schools":
+			case "a framed low denomination piece of paper money from your native country":
+			case "a battered old assault rifle":
+			case "a framed picture of a slave with her sale price scrawled across the bottom":
+			case "an artist's impression of an early arcology design":
+			case "a framed copy of the first news story featuring yourself":
+			case "a miniature model of your first arcology":
+			case "a copy of the first porno you starred in":
+			case "a framed picture of your late Master":
+			case "your favorite handgun, whose sight has instilled fear in many":
+			case "a news clipping of your first successful live hack":
+			case "a damaged plate carrier bearing Daughters of Liberty insignia":
+			case "a Daughters of Liberty flag that once hung in their forward command post within your arcology":
+			case "a Daughters of Liberty brassard":
+			case "a shot-torn flag of the failed nation whose militants attacked the Free City":
+				return desc;
+			// manual replacement
+			case "a thank-you note from a MILF tourist whom you made feel welcome in the arcology":
+				return "several thank-you notes from MILF tourists whom you made feel welcome in the arcology";
+			// replacement by groups
+			default:
+				let r = desc;
+				if (desc.endsWith("citizen")) { // will not reduce spam from different future societies
+					r = r.replace("message", "messages");
+					r = r.replace("from a", "from");
+					r = r.replace("a ", "several ");
+					r = r.replace("citizen", "citizens");
+					r = r.replace("number", "numbers");
+					r = r.replace("test", "tests");
+				} else if (desc.endsWith("acquaintance")) {
+					r = r.replace("note", "notes");
+					r = r.replace("from a", "from");
+					r = r.replace("a ", "several ");
+					r = r.replace("owner", "owners");
+				}
+				return r;
+		}
+	}
+
+	if (State.variables.trinkets.length === 0)
+		return '';
+
+	const trinkets = weightedArray2HashMap(State.variables.trinkets);
+	let trinketString = [];
+	let plurals = false;
+
+	for (let trinketDesc in trinkets) {
+		if (trinkets[trinketDesc] === 1) {
+			trinketString.push(trinketDesc);
+		} else if (trinkets[trinketDesc] > 1) {
+			trinketString.push(trinketPluralReplacer(trinketDesc));
+			plurals = true;
+		}
+	}
+
+	// depending on length of trinketString, add necessary conjunctions
+	if (trinketString.length === 1) {
+		if (plurals === false) {
+			trinketString = `a single item: ${trinketString[0]}`;
+		} else {
+			trinketString = trinketString[0];
+		}
+	} else if (trinketString.length === 2 && plurals === false) {
+		trinketString = `a couple of items: ${trinketString[0]}, and ${trinketString[1]}`;
+	} else {
+		trinketString[trinketString.length - 1] = "and " + trinketString[trinketString.length - 1];
+		trinketString = trinketString.join(", ");
+	}
+	return `There's a display case behind your desk, with ${trinketString}.`;
+};
diff --git a/src/js/utilJS.js b/src/js/utilJS.js
index 17431b10bdaa9c0f91cba21be764550f6a9695a8..1c50d1b4386a575f5d4325de94808caa93b118f3 100644
--- a/src/js/utilJS.js
+++ b/src/js/utilJS.js
@@ -921,7 +921,19 @@ window.getSlaveTrustClass = /** @param {App.Entity.SlaveState} slave */ function
 
 // takes an integer e.g. $activeSlave.hLength, returns a string in the format 10 inches
 window.cmToInchString = function(s) {
-	return Math.round(s/2.54) + (Math.round(s/2.54) === 1?' inch':' inches');
+	let inches = Math.round(s/2.54);
+	if (inches === 0) {
+		if (s === 0) {
+			inches += ' inches';
+		} else {
+			inches = 'less than an inch';
+		}
+	} else if (inches === 1){
+		inches += ' inch';
+	} else {
+		inches += ' inches';
+	}
+	return inches;
 };
 
 // takes an integer e.g. $activeSlave.height, returns a string in the format 6'5"
diff --git a/src/js/walkPastJS.js b/src/js/walkPastJS.js
index 39f6a270a8365e934fe81ae83ab847d4714516e9..f86963faa5d1fd2e9ccf44998afb5123770288df 100644
--- a/src/js/walkPastJS.js
+++ b/src/js/walkPastJS.js
@@ -196,7 +196,7 @@ window.loverSlave = function(activeSlave) {
 							if (_fuckSeed > 45 && (canPenetrate(activeSlave) && _partnerSlave.nipples === "fuckable")) {
 								t += `taking advantage of ${partnerName}'s fuckable tits. The motion running through ${partnerName}'s breasts as ${he} humps is hypnotic.`;
 							} else {
-								t += `how well ${partnerName}'s cock feels in ${his} fuckable tits . The motion running through ${name}'s breasts as ${his} ${activeSlaveRel} fucks ${him} is hypnotic.`;
+								t += `how well ${partnerName}'s cock feels in ${his} fuckable tits. The motion running through ${name}'s breasts as ${his} ${activeSlaveRel} fucks ${him} is hypnotic.`;
 							}
 						} else {
 							t += `snuggling rather sexually ${_fuckSpot}. ${name} loves having `;
@@ -1965,7 +1965,7 @@ window.boobWatch = function(slave) {
 		case "a scalemail bikini":
 			t += `${His} scalemail bikini covers `;
 			if (slave.boobs < 300) {
-				t += `all of $his flat chest.`;
+				t += `all of ${his} flat chest.`;
 			} else if (slave.boobs < 700) {
 				t += `${his} breasts entirely.`;
 			} else if (slave.boobs < 1500) {
diff --git a/src/pregmod/fFeet.tw b/src/pregmod/fFeet.tw
index 988a4fc63b3e265e58b408310300dc92e0f10ec2..0c80bc675a7cc29232df385faf2fbabe6c4bda62 100644
--- a/src/pregmod/fFeet.tw
+++ b/src/pregmod/fFeet.tw
@@ -354,7 +354,7 @@ You call $activeSlave.slaveName to your office, telling $him to use $his feet to
 					erect _dick cock,
 				<</if>>
 			<<else>>
-				soft and dripping _dick <<if ($activeSlave.chastityPenis == 1)>>caged <</if>>dick ,
+				soft and dripping _dick <<if ($activeSlave.chastityPenis == 1)>>caged <</if>>dick,
 			<</if>>
 			<<if $activeSlave.balls > 0 && $activeSlave.scrotum > 0>>
 				<<if $activeSlave.vagina >= 0>>
diff --git a/src/pregmod/manageCorporation.tw b/src/pregmod/manageCorporation.tw
index 958fdb839754b959cfd7ac22cfb60aa870ece4ee..9545b79adcd5d434d6b4164c8fba518c5b89f481 100644
--- a/src/pregmod/manageCorporation.tw
+++ b/src/pregmod/manageCorporation.tw
@@ -819,7 +819,7 @@ __Division Management__
 		<<elseif $corpDivTrainSurgerySwitch == 1 && $corpDivTrainSurgeryTimer < 5>>
 			<br>You can sell these slaves on the market. [[Sell 1|Manage Corporation][$corpCash += Math.trunc((26 + $corpDivTrainSurgeryTimer * 1.6) * menialSlaveCost()), $corpDivTrainSlaves2 -= 1, $menialDemandFactor -= 1, $corpRev += Math.trunc((26 + $corpDivTrainSurgeryTimer * 1.6) * menialSlaveCost())]]
 			<<if $corpDivTrainSlaves2 >= 10>>
-				| [[Sell 10|Manage Corporation][$corpCash += Math.trunc((26 +\ $corpDivTrainSurgeryTimer * 1.6) * 10 * menialSlaveCost(-10)), $corpDivTrainSlaves2 -= 10, $menialDemandFactor -= 10, $corpRev += Math.trunc((26 + $corpDivTrainSurgeryTimer * 1.6) * 10 * menialSlaveCost())]]
+				| [[Sell 10|Manage Corporation][$corpCash += Math.trunc((26 + $corpDivTrainSurgeryTimer * 1.6) * 10 * menialSlaveCost(-10)), $corpDivTrainSlaves2 -= 10, $menialDemandFactor -= 10, $corpRev += Math.trunc((26 + $corpDivTrainSurgeryTimer * 1.6) * 10 * menialSlaveCost())]]
 			<</if>>
 			<<if $corpDivTrainSlaves2 >= 100>>
 				| [[Sell 100|Manage Corporation][$corpCash += Math.trunc((26 + $corpDivTrainSurgeryTimer * 1.6) * 100 * menialSlaveCost(-100)), $corpDivTrainSlaves2 -= 100, $menialDemandFactor -= 100, $corpRev += Math.trunc((26 + $corpDivTrainSurgeryTimer * 1.6) * 100 * menialSlaveCost())]]
@@ -1708,7 +1708,7 @@ __Slave specialization__
 			<<if !($arcologies[0].FSSubjugationist != "unset" && $arcologies[0].FSSubjugationistRace != "semitic")>>
 				<<if $corpSpecRaces.length > 1 && $corpSpecTimer == 0>>
 					<<if ($corpSpecRaces.length == 4 || $corpSpecRaces.length == 8) && $corpSpecToken > 0>>
-						[[Blacklist|Manage Corporation][$corpSpecRaces = corpBlacklistRace("semitic",1), $corpSpecToken -= , $corpSpecTimer = 1]]
+						[[Blacklist|Manage Corporation][$corpSpecRaces = corpBlacklistRace("semitic",1), $corpSpecToken -= 1, $corpSpecTimer = 1]]
 					<<elseif ($corpSpecRaces.length != 4 || $corpSpecRaces.length != 8)>>
 						[[Blacklist|Manage Corporation][$corpSpecRaces = corpBlacklistRace("semitic",1)]]
 					<</if>>
diff --git a/src/pregmod/saClothes.tw b/src/pregmod/saClothes.tw
index 221e26ae97b6a92160f07d33fe506c0540be0f11..0a1dff8fdd22a8a40607fb0f299d45280496ebcc 100644
--- a/src/pregmod/saClothes.tw
+++ b/src/pregmod/saClothes.tw
@@ -639,7 +639,9 @@
 <</if>>
 
 <<if ($slaves[$i].vaginalAccessory != "none")>>
-	<<if ($slaves[$i].vaginalAccessory == "dildo")>>
+	<<if ($slaves[$i].vaginalAttachment == "bullet vibrator")>>
+		/* TODO: add effects here */
+	<<elseif ($slaves[$i].vaginalAccessory == "dildo")>>
 		<<if ($slaves[$i].vagina < 1) && (random(1,100) > 50)>>
 			Constantly wearing a dildo in $his virgin pussy @@.lime;gets it used to penetration.@@
 			<<set $slaves[$i].vagina += 1>>
@@ -819,7 +821,10 @@
 			<</if>>
 		<</if>>
 	<</if>>
-
+<</if>>
+<<if ($slaves[$i].vaginalAttachment != "none")>>
+	/* TODO: write effects here */
+	<<elseif ($slaves[$i].vaginalAttachment == "vibrator")>>
 <</if>>
 
 <<if ($slaves[$i].buttplug != "none")>>
@@ -1005,4 +1010,4 @@
 			<</if>>
 		<</if>>
 	<</if>>
-<</if>>
\ No newline at end of file
+<</if>>
diff --git a/src/pregmod/widgets/bodyswapWidgets.tw b/src/pregmod/widgets/bodyswapWidgets.tw
index f6a079911ca684ef2106a0133ebba31690fc62e7..d396524a58ad51221474b634587bd7d1d087ef30 100644
--- a/src/pregmod/widgets/bodyswapWidgets.tw
+++ b/src/pregmod/widgets/bodyswapWidgets.tw
@@ -182,6 +182,7 @@
 <<set $args[0].collar = $args[1].collar>>
 <<set $args[0].shoes = $args[1].shoes>>
 <<set $args[0].vaginalAccessory = $args[1].vaginalAccessory>>
+<<set $args[0].vaginalAttachment = $args[1].vaginalAttachment>>
 <<set $args[0].dickAccessory = $args[1].dickAccessory>>
 <<set $args[0].chastityVagina = $args[1].chastityVagina>>
 <<set $args[0].chastityPenis = $args[1].chastityPenis>>
diff --git a/src/uncategorized/BackwardsCompatibility.tw b/src/uncategorized/BackwardsCompatibility.tw
index d2603d3a4f614b47653513c3b0fc3cae9010bf00..3c1bb3c7b0b12cd6c651f044965a61cc65f5f43a 100644
--- a/src/uncategorized/BackwardsCompatibility.tw
+++ b/src/uncategorized/BackwardsCompatibility.tw
@@ -452,6 +452,9 @@
 <<if ndef $toysBoughtGags>>
 	<<set $toysBoughtGags = 0>>
 <</if>>
+<<if ndef $toysBoughtVaginalAttachments>>
+	<<set $toysBoughtVaginalAttachments = 0>>
+<</if>>
 <<if ndef $toysBoughtButtPlugs>>
 	<<set $toysBoughtButtPlugs = 0>>
 <</if>>
diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw
index 52ac6c1a92ccae865dbce2af4e4f91e270f90a80..03607fc1603e0a0e57f86da01547ec7887d2a1aa 100644
--- a/src/uncategorized/RESS.tw
+++ b/src/uncategorized/RESS.tw
@@ -4993,7 +4993,7 @@ brought in to you. This time <<EventNameLink>> has been sent to deliver it. $He
 			<br><<link "Deny $him from ever having satisfying sex again">>
 				<<replace "#result2">>
 				You ask $him if $he enjoyed $his last orgasm, because $he won't be getting any more. Restrained as $he is, the most $he can do is cry and beg. Once $he comes to after the surgery, $he faces $his new body; @@.mediumorchid;$he's now a surgical null,@@ though $he retains $his balls, and $he's @@.gold;the only one to blame@@ for $his @@.red;suffering.@@ You waste no time in shoving $him against the wall and forcing your <<if $PC.dick == 1>>dick<<else>>strap-on<</if>> into $his anus. As $his arousal grows, $he realizes you not only took $his dick, but $his prostate as well. $He quickly find $himself desperate for release but lacking any way to do so. You watch $him squirm in sexual frustration. This will be $his new life. Every other rebellious slave is @@.gold;horrified by the example.@@
-				<<set $activeSlave.trust -= 50, $activeSlave.devotion -= 30, $activeSlave.health -= 20, $activeSlave.dick = 0, $activeSlave.prostate = 0, $activeSlave.dickAccessory = "none", $activeSlave.chastityPenis = 0, $activeSlave.vagina = 0, $activeSlave.ovaries = 0, $activeSlave.clit = 0, $activeSlave.labia = 0, $activeSlave.vaginalAccessory = "none", $activeSlave.chastityVagina = 0>>
+				<<set $activeSlave.trust -= 50, $activeSlave.devotion -= 30, $activeSlave.health -= 20, $activeSlave.dick = 0, $activeSlave.prostate = 0, $activeSlave.dickAccessory = "none", $activeSlave.chastityPenis = 0, $activeSlave.vagina = 0, $activeSlave.ovaries = 0, $activeSlave.clit = 0, $activeSlave.labia = 0, $activeSlave.vaginalAccessory = "none", $activeSlave.vaginalAttachment = "none", $activeSlave.chastityVagina = 0>>
 				<<= AnalVCheck()>>
 				<<set $slaves.forEach(function(s) { if (s.devotion < -50) { s.trust -= 15; } })>>
 				<<run cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave)>>
@@ -5093,7 +5093,7 @@ brought in to you. This time <<EventNameLink>> has been sent to deliver it. $He
 			<br><<link "Deny $him from ever having satisfying sex again">>
 				<<replace "#result2">>
 				You ask $him if $he enjoyed $his last orgasm, because $he won't be getting any more. Restrained as $he is, the most $he can do is cry and beg. Once $he comes to after the surgery, $he faces $his new body; @@.mediumorchid;$he's now a surgical null,@@ though $he retains $his balls, and $he's @@.gold;the only one to blame@@ for $his @@.red;suffering.@@ You waste no time in shoving $him against the wall and forcing your <<if $PC.dick == 1>>dick<<else>>strap-on<</if>> into $his anus. As $his arousal grows, $he realizes you not only took $his dick, but $his prostate as well. $He quickly find $himself desperate for release but lacking any way to do so. You watch $him squirm in sexual frustration. This will be $his new life. Every other rebellious slave is @@.gold;horrified by the example.@@
-				<<set $activeSlave.trust -= 50, $activeSlave.devotion -= 30, $activeSlave.health -= 20, $activeSlave.dick = 0, $activeSlave.prostate = 0, $activeSlave.dickAccessory = "none", $activeSlave.chastityPenis = 0, $activeSlave.vagina = 0, $activeSlave.ovaries = 0, $activeSlave.clit = 0, $activeSlave.labia = 0, $activeSlave.vaginalAccessory = "none", $activeSlave.chastityVagina = 0>>
+				<<set $activeSlave.trust -= 50, $activeSlave.devotion -= 30, $activeSlave.health -= 20, $activeSlave.dick = 0, $activeSlave.prostate = 0, $activeSlave.dickAccessory = "none", $activeSlave.chastityPenis = 0, $activeSlave.vagina = 0, $activeSlave.ovaries = 0, $activeSlave.clit = 0, $activeSlave.labia = 0, $activeSlave.vaginalAccessory = "none", $activeSlave.vaginalAttachment = "none", $activeSlave.chastityVagina = 0>>
 				<<= AnalVCheck()>>
 				<<set $slaves.forEach(function(s) { if (s.devotion < -50) { s.trust -= 15; } })>>
 				<<run cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave)>>
@@ -5188,7 +5188,7 @@ brought in to you. This time <<EventNameLink>> has been sent to deliver it. $He
 			<br><<link "Deny $him from ever having satisfying sex again">>
 				<<replace "#result2">>
 				You ask $him if $he enjoyed $his last orgasm, because $he won't be getting any more. Restrained as $he is, the most $he can do is cry and beg. Once $he comes to after the surgery, $he faces $his new body; @@.mediumorchid;$he's now a surgical null,@@ though $he retains $his balls, and $he's @@.gold;the only one to blame@@ for $his @@.red;suffering.@@ You waste no time in shoving $him against the wall and forcing your <<if $PC.dick == 1>>dick<<else>>strap-on<</if>> into $his anus. As $his arousal grows, $he realizes you not only took $his dick, but $his prostate as well. $He quickly find $himself desperate for release but lacking any way to do so. You watch $him squirm in sexual frustration. This will be $his new life. Every other rebellious slave is @@.gold;horrified by the example.@@
-				<<set $activeSlave.trust -= 50, $activeSlave.devotion -= 30, $activeSlave.health -= 20, $activeSlave.dick = 0, $activeSlave.prostate = 0, $activeSlave.dickAccessory = "none", $activeSlave.chastityPenis = 0, $activeSlave.vagina = 0, $activeSlave.ovaries = 0, $activeSlave.clit = 0, $activeSlave.labia = 0, $activeSlave.vaginalAccessory = "none", $activeSlave.chastityVagina = 0>>
+				<<set $activeSlave.trust -= 50, $activeSlave.devotion -= 30, $activeSlave.health -= 20, $activeSlave.dick = 0, $activeSlave.prostate = 0, $activeSlave.dickAccessory = "none", $activeSlave.chastityPenis = 0, $activeSlave.vagina = 0, $activeSlave.ovaries = 0, $activeSlave.clit = 0, $activeSlave.labia = 0, $activeSlave.vaginalAccessory = "none", $activeSlave.vaginalAttachment = "none", $activeSlave.chastityVagina = 0>>
 				<<= AnalVCheck()>>
 				<<set $slaves.forEach(function(s) { if (s.devotion < -50) { s.trust -= 15; } })>>
 				<<run cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave)>>
@@ -5258,7 +5258,7 @@ brought in to you. This time <<EventNameLink>> has been sent to deliver it. $He
 		<br><<link "Deny $him from ever having satisfying sex again">>
 			<<replace "#result2">>
 			You ask $him if $he enjoyed $his last orgasm, because $he won't be getting any more. Restrained as $he is, the most $he can do is cry and beg. Once $he comes to after the surgery, $he faces $his new body; @@.mediumorchid;$he's now a surgical null,@@ though $he retains $his balls, and $he's @@.gold;the only one to blame@@ for $his @@.red;suffering.@@ You waste no time in shoving $him against the wall and forcing your <<if $PC.dick == 1>>dick<<else>>strap-on<</if>> into $his anus. As $his arousal grows, $he realizes you not only took $his dick, but $his prostate as well. $He quickly find $himself desperate for release but lacking any way to do so. You watch $him squirm in sexual frustration. This will be $his new life. Every other rebellious slave is @@.gold;horrified by the example.@@
-			<<set $activeSlave.trust -= 50, $activeSlave.devotion -= 30, $activeSlave.health -= 20, $activeSlave.dick = 0, $activeSlave.prostate = 0, $activeSlave.dickAccessory = "none", $activeSlave.chastityPenis = 0, $activeSlave.vagina = 0, $activeSlave.ovaries = 0, $activeSlave.clit = 0, $activeSlave.labia = 0, $activeSlave.vaginalAccessory = "none", $activeSlave.chastityVagina = 0>>
+			<<set $activeSlave.trust -= 50, $activeSlave.devotion -= 30, $activeSlave.health -= 20, $activeSlave.dick = 0, $activeSlave.prostate = 0, $activeSlave.dickAccessory = "none", $activeSlave.chastityPenis = 0, $activeSlave.vagina = 0, $activeSlave.ovaries = 0, $activeSlave.clit = 0, $activeSlave.labia = 0, $activeSlave.vaginalAccessory = "none", $activeSlave.vaginalAttachment = "none", $activeSlave.chastityVagina = 0>>
 			<<= AnalVCheck()>>
 			<<set $slaves.forEach(function(s) { if (s.devotion < -50) { s.trust -= 15; } })>>
 			<<run cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave)>>
@@ -6651,7 +6651,7 @@ brought in to you. This time <<EventNameLink>> has been sent to deliver it. $He
 	<br><br>
 	You then conduct a more thorough inspection, from the top of $his $activeSlave.hColor-haired head on down. $He complies submissively, obviously expecting to be abused at any moment. $He obediently <<if ($activeSlave.boobs > 1000)>>lifts each of $his massive breasts one by one to display each of them from all angles.<<elseif $activeSlave.belly >= 5000>> allows you to do as you will to $his gravid stomach.<<else>>opens $his mouth and sticks out $his tongue on command.<</if>> $He even obeys an instruction to <<if ($activeSlave.dick > 1)>>take $himself by the dickhead and pull $his member flat up against $his abdomen.<<elseif ($activeSlave.dick > 0)>>take $his little dickhead between a thumb and forefinger and hold $himself out straight to reveal how tiny $he really is.<<elseif ($activeSlave.clit > 1)>>push back $his hood to reveal all of $his enormous clit.<<elseif ($activeSlave.labia > 1)>>spread $his meaty labia to reveal $his cunt.<<elseif $activeSlave.vagina == -1>>really show off $his smooth groin, displaying every bit of it, down to the tiny hole that's its only feature.<<else>>spread $his pussylips to show off $his cunt.<</if>>
 	<br><br>
-	Finally the inspection reaches $his backdoor, so you tell $him to turn around, bend over, and pull $his buttocks apart as wide as $he can. $He tenses in fear, obviously expecting anal rape, but after a moment of hesitation, $he obeys. $He turns, <<if $activeSlave.belly >= 10000>>carefully bends<<else>>bends<</if>>, and <<if ($activeSlave.butt > 5)>>grabs a handful of buttcheek in both hands, trembling as $he spreads $his ass to reveal<<elseif ($activeSlave.butt > 2)>>harshly pulls $his own buttcheeks apart, clearly hoping that if $he treats $himself this way, you won't. $He reveals<<else>>even though $his trim ass has already revealed everything, uses $his hands to spread $himself even wider to show off<</if>> $his <<if ($activeSlave.anus > 2)>>poor, overused asshole, which despite $his terror is still gaping a little.<<elseif ($activeSlave.anus > 1)>>$his asshole, which is clenched tight in terror.<<else>>invitingly tight asshole, which is clenched hard in terror.<</if>> Maintaining your neutral tone, you ask $him how $he feels about anal sex.
+	Finally the inspection reaches $his backdoor, so you tell $him to turn around, bend over, and pull $his buttocks apart as wide as $he can. $He tenses in fear, obviously expecting anal rape, but after a moment of hesitation, $he obeys. $He turns, <<if $activeSlave.belly >= 10000>>carefully bends<<else>>bends<</if>>, and <<if ($activeSlave.butt > 5)>>grabs a handful of buttcheek in both hands, trembling as $he spreads $his ass to reveal<<elseif ($activeSlave.butt > 2)>>harshly pulls $his own buttcheeks apart, clearly hoping that if $he treats $himself this way, you won't. $He reveals<<else>>even though $his trim ass has already revealed everything, uses $his hands to spread $himself even wider to show off<</if>> $his <<if ($activeSlave.anus > 2)>>poor, overused asshole, which despite $his terror is still gaping a little.<<elseif ($activeSlave.anus > 1)>>asshole, which is clenched tight in terror.<<else>>invitingly tight asshole, which is clenched hard in terror.<</if>> Maintaining your neutral tone, you ask $him how $he feels about anal sex.
 	<<if ($activeSlave.anus == 0)>>
 		"It'<<s>> <<s>>-<<s>>cary, <<if $activeSlave.rudeTitle == 1>><<= PoliteRudeTitle($activeSlave)>><<else>><<Master>><</if>>. I'm afraid it'll h-hurt," $he gasps out.
 	<<elseif ($activeSlave.fetishKnown == 1) && ($activeSlave.fetish == "buttslut")>>
@@ -7793,7 +7793,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 	<</if>>
 	<</replace>>
 <</link>>
-<<if $activeSlave.buttPlug == "none" && ($activeSlave.vagina < 0 || $activeSlave.vaginalAccessory == "none")>>
+<<if $activeSlave.buttPlug == "none" && ($activeSlave.vagina < 0 || ($activeSlave.vaginalAccessory == "none" && $activeSlave.vaginalAttachment == "none"))>>
 <br><<link "Add dildos to $his gear">>
 	<<EventNameDelink $activeSlave>>
 	<<replace "#result">>
@@ -12751,17 +12751,17 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 		<<if $PC.dick == 1>>cock<<if $PC.vagina == 1>> and <</if>><</if>><<if $PC.vagina == 1>>cunt<</if>>
 		but you pull $him up again and tell $him to do that last.
 		<<if $PC.belly >= 60000>>
-			$He quickly finds something almost as good by licking ,and sucking $his way up your linea nigra. When $he reaches your <<if $PC.preg >= 22>>popped<<else>>flattened<</if>> navel, you hold $his head there for a while, savoring the erotic sensation before pushing $him along to the rest of your expansive midriff.
+			$He quickly finds something almost as good by licking and sucking $his way up your linea nigra. When $he reaches your <<if $PC.preg >= 22>>popped<<else>>flattened<</if>> navel, you hold $his head there for a while, savoring the erotic sensation before pushing $him along to the rest of your expansive midriff.
 		<<elseif $PC.belly >= 5000>>
-			$He quickly finds something almost as good by licking ,and sucking $his way up your linea nigra. When $he reaches your <<if $PC.preg >= 22>>popped<<else>>flattened<</if>> navel, you hold $his head there for a while, savoring the erotic sensation.
+			$He quickly finds something almost as good by licking and sucking $his way up your linea nigra. When $he reaches your <<if $PC.preg >= 22>>popped<<else>>flattened<</if>> navel, you hold $his head there for a while, savoring the erotic sensation.
 		<<elseif $PC.boobsBonus > 2>>
-			$He quickly finds something almost as good by licking ,and sucking $his way up the sweaty crevice between your enormous breasts. When $he reaches your nipples, you hold $his head there for a while, enjoying $his tongue.
+			$He quickly finds something almost as good by licking and sucking $his way up the sweaty crevice between your enormous breasts. When $he reaches your nipples, you hold $his head there for a while, enjoying $his tongue.
 		<<elseif $PC.boobsBonus == 2>>
-			$He quickly finds something almost as good by licking ,and sucking $his way up the sweaty crevice between your huge breasts. When $he reaches your nipples, you hold $his head there for a while, enjoying $his tongue.
+			$He quickly finds something almost as good by licking and sucking $his way up the sweaty crevice between your huge breasts. When $he reaches your nipples, you hold $his head there for a while, enjoying $his tongue.
 		<<elseif $PC.boobsBonus == 1>>
-			$He quickly finds something almost as good by licking ,and sucking $his way up the sweaty crevice between your big breasts. When $he reaches your nipples, you hold $his head there for a while, enjoying $his tongue.
+			$He quickly finds something almost as good by licking and sucking $his way up the sweaty crevice between your big breasts. When $he reaches your nipples, you hold $his head there for a while, enjoying $his tongue.
 		<<elseif $PC.boobs == 1>>
-			$He quickly finds something almost as good by licking ,and sucking $his way up the sweaty crevice between your breasts. When $he reaches your nipples, you hold $his head there for a while, enjoying $his tongue.
+			$He quickly finds something almost as good by licking and sucking $his way up the sweaty crevice between your breasts. When $he reaches your nipples, you hold $his head there for a while, enjoying $his tongue.
 		<<else>>
 			<<if $PC.title == 0>>
 				$He settles for kissing and licking $his way up your abs, pecs, and non-existent tits. When $he reaches your nipples, you hold $his head there for a while, enjoying $his tongue.
diff --git a/src/uncategorized/costsWidgets.tw b/src/uncategorized/costsWidgets.tw
index b952e9b8177fddd9132b3e0ed8fe885a045eb3f5..2fbf44cfbdda9715a8bfd4320a02313d3ab6cbe1 100644
--- a/src/uncategorized/costsWidgets.tw
+++ b/src/uncategorized/costsWidgets.tw
@@ -414,7 +414,7 @@
 		You bought $him for: @@.red;<<print cashFormat($args[0].slaveCost)>>@@.
 		<<set _Cost = $args[0].slaveCost>>
 	<<elseif $args[0].slaveCost == 0>>
-		You spent nothing to aquire $him.
+		You spent nothing to acquire $him.
 		<<set _Cost = $args[0].slaveCost>>
 	<<else>>
 		You have no record of how much <<if $args[0].origin != 0>>this<<else>>$he originally<</if>> cost.
diff --git a/src/uncategorized/customSlave.tw b/src/uncategorized/customSlave.tw
index ed2ac67c84c2c131058b4536485cfc1a95865d1b..08c6f865eca42d3e25ae23ce32715538ca827a56 100644
--- a/src/uncategorized/customSlave.tw
+++ b/src/uncategorized/customSlave.tw
@@ -458,8 +458,8 @@
 <<if $customSlave.weight == -50>>Very thin.
 <<elseif $customSlave.weight == -15>>Thin.
 <<elseif $customSlave.weight == 0>>Average weight.
-<<elseif $customSlave.weight == 15>>Chubby.
-<<elseif $customSlave.weight == 50>>Plump.
+<<elseif $customSlave.weight == 15>>Plush.
+<<elseif $customSlave.weight == 50>>Chubby.
 <<elseif $customSlave.weight == 100>>Fat.
 <<elseif $customSlave.weight == 150>>Very Fat.
 <<else>>Immobile.
@@ -480,12 +480,12 @@
 	<<CustomSlaveWeight>>
 <</link>>
 |
-<<link "Chubby">>
+<<link "Plush">>
 	<<set $customSlave.weight = 15>>
 	<<CustomSlaveWeight>>
 <</link>>
 |
-<<link "Plump">>
+<<link "Chubby">>
 	<<set $customSlave.weight = 50>>
 	<<CustomSlaveWeight>>
 <</link>>
diff --git a/src/uncategorized/dairyReport.tw b/src/uncategorized/dairyReport.tw
index 2b1a916c6bd29be3544cca5ce2f23dc2b64b229a..c102a4800cd9579dd8c32b4d0e78ef6e424cbc28 100644
--- a/src/uncategorized/dairyReport.tw
+++ b/src/uncategorized/dairyReport.tw
@@ -368,7 +368,7 @@
 		<<set $slaves[$i].diet = "healthy">>
 	<</if>>
 	<<if $dairyRestraintsSetting > 1>>
-		<<set $slaves[$i].collar = "none", $slaves[$i].choosesOwnClothes = 0, $slaves[$i].clothes = "no clothing", $slaves[$i].buttplug = "none", $slaves[$i].vaginalAccessory = "none", $slaves[$i].dickAccessory = "none", $slaves[$i].chastityAnus = 0, $slaves[$i].chastityPenis = 0, $slaves[$i].chastityVagina = 0>>
+		<<set $slaves[$i].collar = "none", $slaves[$i].choosesOwnClothes = 0, $slaves[$i].clothes = "no clothing", $slaves[$i].vaginalAccessory = "none", $slaves[$i].vaginalAttachment = "none", $slaves[$i].dickAccessory = "none", $slaves[$i].buttplug = "none", $slaves[$i].chastityAnus = 0, $slaves[$i].chastityPenis = 0, $slaves[$i].chastityVagina = 0>>
 	<</if>>
 	<<switch $dairyDecoration>>
 	<<case "Roman Revivalist" "Aztec Revivalist" "Chinese Revivalist" "Chattel Religionist" "Edo Revivalist" "Arabian Revivalist" "Egyptian Revivalist" "Supremacist" "Subjugationist" "Degradationist">>
diff --git a/src/uncategorized/fsDevelopments.tw b/src/uncategorized/fsDevelopments.tw
index 60e018b48d914a42b862f4814831669101c99a3d..a36258e4325634e3327dc3365155b4aa62d8a03a 100644
--- a/src/uncategorized/fsDevelopments.tw
+++ b/src/uncategorized/fsDevelopments.tw
@@ -695,7 +695,7 @@
 		$arcologies[0].name is unconvinced of $arcologies[0].FSSupremacistRace superiority.
 	<</if>>
 	<<if $arcologies[0].FSSupremacist < 0>>
-		<<run removeFS("FSSupremacist")>>
+		<<run FutureSocieties.remove("FSSupremacist")>>
 		<<if $assistantFSAppearance == "supremacist">><<set $assistantFSAppearance = "default">><</if>>
 		<<ClearFacilityDecorations>>
 		@@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@
@@ -725,7 +725,7 @@
 		$arcologies[0].name is unconvinced of the inferiority of $arcologies[0].FSSubjugationistRace people.
 	<</if>>
 	<<if $arcologies[0].FSSubjugationist < 0>>
-		<<run removeFS("FSSubjugationist")>>
+		<<run FutureSocieties.remove("FSSubjugationist")>>
 		<<if $assistantFSAppearance == "subjugationist">><<set $assistantFSAppearance = "default">><</if>>
 		<<ClearFacilityDecorations>>
 		@@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@
@@ -755,7 +755,7 @@
 		$arcologies[0].name is unconvinced that all women should be pregnant.
 	<</if>>
 	<<if $arcologies[0].FSRepopulationFocus < 0>>
-		<<run removeFS("FSRepopulationFocus")>>
+		<<run FutureSocieties.remove("FSRepopulationFocus")>>
 		<<if $assistantFSAppearance == "repopulation focus">><<set $assistantFSAppearance = "default">><</if>>
 		<<ClearFacilityDecorations>>
 		@@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@
@@ -785,7 +785,7 @@
 		$arcologies[0].name is unconvinced that only the elite should reproduce.
 	<</if>>
 	<<if $arcologies[0].FSRestart < 0 && $arcologies[0].FSRestartDecoration != 100>>
-		<<run removeFS("FSRestart")>>
+		<<run FutureSocieties.remove("FSRestart")>>
 		<<if $assistantFSAppearance == "eugenics">><<set $assistantFSAppearance = "default">><</if>>
 		<<ClearFacilityDecorations>>
 		@@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@
@@ -815,7 +815,7 @@
 		$arcologies[0].name is unconvinced of the need to redefine gender around power.
 	<</if>>
 	<<if $arcologies[0].FSGenderRadicalist < 0>>
-		<<run removeFS("FSGenderRadicalist")>>
+		<<run FutureSocieties.remove("FSGenderRadicalist")>>
 		<<if $assistantFSAppearance == "gender radicalist">><<set $assistantFSAppearance = "default">><</if>>
 		<<ClearFacilityDecorations>>
 		@@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@
@@ -845,7 +845,7 @@
 		$arcologies[0].name is unconvinced of the need to preserve traditional gender roles.
 	<</if>>
 	<<if $arcologies[0].FSGenderFundamentalist < 0>>
-		<<run removeFS("FSGenderFundamentalist")>>
+		<<run FutureSocieties.remove("FSGenderFundamentalist")>>
 		<<if $assistantFSAppearance == "gender fundamentalist">><<set $assistantFSAppearance = "default">><</if>>
 		<<ClearFacilityDecorations>>
 		@@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@
@@ -875,7 +875,7 @@
 		$arcologies[0].name is unconvinced of the vision of a well-bred race of slaves.
 	<</if>>
 	<<if $arcologies[0].FSPaternalist < 0>>
-		<<run removeFS("FSPaternalist")>>
+		<<run FutureSocieties.remove("FSPaternalist")>>
 		<<if $assistantFSAppearance == "paternalist">><<set $assistantFSAppearance = "default">><</if>>
 		<<ClearFacilityDecorations>>
 		@@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@
@@ -905,7 +905,7 @@
 		$arcologies[0].name is unconvinced that slaves are not human and should be thoroughly degraded.
 	<</if>>
 	<<if $arcologies[0].FSDegradationist < 0>>
-		<<run removeFS("FSDegradationist")>>
+		<<run FutureSocieties.remove("FSDegradationist")>>
 		<<if $assistantFSAppearance == "degradationist">><<set $assistantFSAppearance = "default">><</if>>
 		<<ClearFacilityDecorations>>
 		@@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@
@@ -935,7 +935,7 @@
 		$arcologies[0].name is unconvinced of the unattractive nature of implants.
 	<</if>>
 	<<if $arcologies[0].FSBodyPurist < 0>>
-		<<run removeFS("FSBodyPurist")>>
+		<<run FutureSocieties.remove("FSBodyPurist")>>
 		<<if $assistantFSAppearance == "body purist">><<set $assistantFSAppearance = "default">><</if>>
 		<<ClearFacilityDecorations>>
 		@@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@
@@ -963,7 +963,7 @@
 		$arcologies[0].name is unconvinced about the attractiveness of implants.
 	<</if>>
 	<<if $arcologies[0].FSTransformationFetishist < 0>>
-		<<run removeFS("FSTransformationFetishist")>>
+		<<run FutureSocieties.remove("FSTransformationFetishist")>>
 		<<if $assistantFSAppearance == "transformation fetishist">><<set $assistantFSAppearance = "default">><</if>>
 		<<ClearFacilityDecorations>>
 		@@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@
@@ -991,7 +991,7 @@
 		$arcologies[0].name is unconvinced about your preference for older ladies.
 	<</if>>
 	<<if $arcologies[0].FSMaturityPreferentialist < 0>>
-		<<run removeFS("FSMaturityPreferentialist")>>
+		<<run FutureSocieties.remove("FSMaturityPreferentialist")>>
 		<<if $assistantFSAppearance == "maturity preferentialist">><<set $assistantFSAppearance = "default">><</if>>
 		<<ClearFacilityDecorations>>
 		@@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@
@@ -1019,7 +1019,7 @@
 		$arcologies[0].name is unconvinced about your preference for young women.
 	<</if>>
 	<<if $arcologies[0].FSYouthPreferentialist < 0>>
-		<<run removeFS("FSYouthPreferentialist")>>
+		<<run FutureSocieties.remove("FSYouthPreferentialist")>>
 		<<if $assistantFSAppearance == "youth preferentialist">><<set $assistantFSAppearance = "default">><</if>>
 		<<ClearFacilityDecorations>>
 		@@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@
@@ -1047,7 +1047,7 @@
 		$arcologies[0].name is unconvinced about your preference for slim slaves with girlish figures.
 	<</if>>
 	<<if $arcologies[0].FSSlimnessEnthusiast < 0>>
-		<<run removeFS("FSSlimnessEnthusiast")>>
+		<<run FutureSocieties.remove("FSSlimnessEnthusiast")>>
 		<<if $assistantFSAppearance == "slimness enthusiast">><<set $assistantFSAppearance = "default">><</if>>
 		<<ClearFacilityDecorations>>
 		@@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@
@@ -1077,7 +1077,7 @@
 		$arcologies[0].name is unconvinced that all tits and asses should be bigger.
 	<</if>>
 	<<if $arcologies[0].FSAssetExpansionist < 0>>
-		<<run removeFS("FSAssetExpansionist")>>
+		<<run FutureSocieties.remove("FSAssetExpansionist")>>
 		<<if $assistantFSAppearance == "asset expansionist">><<set $assistantFSAppearance = "default">><</if>>
 		<<ClearFacilityDecorations>>
 		@@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@
@@ -1107,7 +1107,7 @@
 		$arcologies[0].name is unconvinced that slaves should be milked.
 	<</if>>
 	<<if $arcologies[0].FSPastoralist < 0>>
-		<<run removeFS("FSPastoralist")>>
+		<<run FutureSocieties.remove("FSPastoralist")>>
 		<<if $assistantFSAppearance == "pastoralist">><<set $assistantFSAppearance = "default">><</if>>
 		<<ClearFacilityDecorations>>
 		@@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@
@@ -1137,7 +1137,7 @@
 		$arcologies[0].name is unconvinced that all slaves should be tall and strong.
 	<</if>>
 	<<if $arcologies[0].FSPhysicalIdealist < 0>>
-		<<run removeFS("FSPhysicalIdealist")>>
+		<<run FutureSocieties.remove("FSPhysicalIdealist")>>
 		<<if $assistantFSAppearance == "physical idealist">><<set $assistantFSAppearance = "default">><</if>>
 		<<ClearFacilityDecorations>>
 		@@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@
@@ -1167,7 +1167,7 @@
 		$arcologies[0].name is unconvinced that all slaves should be soft and laid-back.
 	<</if>>
 	<<if $arcologies[0].FSHedonisticDecadence < 0>>
-		<<run removeFS("FSHedonisticDecadence")>>
+		<<run FutureSocieties.remove("FSHedonisticDecadence")>>
 		<<if $assistantFSAppearance == "hedonistic decadence">><<set $assistantFSAppearance = "default">><</if>>
 		<<ClearFacilityDecorations>>
 		@@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@
@@ -1197,7 +1197,7 @@
 		$arcologies[0].name is unconvinced of a version of religion that emphasizes slaveholding traditions.
 	<</if>>
 	<<if $arcologies[0].FSChattelReligionist < 0>>
-		<<run removeFS("FSChattelReligionist")>>
+		<<run FutureSocieties.remove("FSChattelReligionist")>>
 		<<if $assistantFSAppearance == "chattel religionist">><<set $assistantFSAppearance = "default">><</if>>
 		<<ClearFacilityDecorations>>
 		@@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@
@@ -1227,7 +1227,7 @@
 		$arcologies[0].name is unconvinced of the wisdom of your project to build a new Rome.
 	<</if>>
 	<<if $arcologies[0].FSRomanRevivalist < 0>>
-		<<run removeFS("FSRomanRevivalist")>>
+		<<run FutureSocieties.remove("FSRomanRevivalist")>>
 		<<if $assistantFSAppearance == "roman revivalist">><<set $assistantFSAppearance = "default">><</if>>
 		<<ClearFacilityDecorations>>
 		@@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@
@@ -1257,7 +1257,7 @@
 		$arcologies[0].name is unconvinced of the wisdom of your project to build a new Aztec Empire.
 	<</if>>
 	<<if $arcologies[0].FSAztecRevivalist < 0>>
-		<<run removeFS("FSAztecRevivalist")>>
+		<<run FutureSocieties.remove("FSAztecRevivalist")>>
 		<<if $assistantFSAppearance == "aztec revivalist">><<set $assistantFSAppearance = "default">><</if>>
 		<<ClearFacilityDecorations>>
 		@@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@
@@ -1287,7 +1287,7 @@
 		$arcologies[0].name is unconvinced of the wisdom of your project to build a new land of the Pharaohs.
 	<</if>>
 	<<if $arcologies[0].FSEgyptianRevivalist < 0>>
-		<<run removeFS("FSEgyptianRevivalist")>>
+		<<run FutureSocieties.remove("FSEgyptianRevivalist")>>
 		<<if $assistantFSAppearance == "egyptian revivalist">><<set $assistantFSAppearance = "default">><</if>>
 		<<ClearFacilityDecorations>>
 		@@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@
@@ -1317,7 +1317,7 @@
 		$arcologies[0].name is unconvinced of the wisdom of your project to build a new Edo Japan.
 	<</if>>
 	<<if $arcologies[0].FSEdoRevivalist < 0>>
-		<<run removeFS("FSEdoRevivalist")>>
+		<<run FutureSocieties.remove("FSEdoRevivalist")>>
 		<<if $assistantFSAppearance == "edo revivalist">><<set $assistantFSAppearance = "default">><</if>>
 		<<ClearFacilityDecorations>>
 		@@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@
@@ -1347,7 +1347,7 @@
 		$arcologies[0].name is unconvinced of the wisdom of your project to build a new Sultanate.
 	<</if>>
 	<<if $arcologies[0].FSArabianRevivalist < 0>>
-		<<run removeFS("FSArabianRevivalist")>>
+		<<run FutureSocieties.remove("FSArabianRevivalist")>>
 		<<if $assistantFSAppearance == "arabian revivalist">><<set $assistantFSAppearance = "default">><</if>>
 		<<ClearFacilityDecorations>>
 		@@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@
@@ -1377,7 +1377,7 @@
 		$arcologies[0].name is unconvinced of the wisdom of your pursuit of the Mandate of Heaven.
 	<</if>>
 	<<if $arcologies[0].FSChineseRevivalist < 0>>
-		<<run removeFS("FSChineseRevivalist")>>
+		<<run FutureSocieties.remove("FSChineseRevivalist")>>
 		<<if $assistantFSAppearance == "chinese revivalist">><<set $assistantFSAppearance = "default">><</if>>
 		<<ClearFacilityDecorations>>
 		@@.red;Your future society project has failed:@@ your citizens were repelled from your idea more than they were attracted to it. @@.yellow;You may select another option, or elect to try again.@@
diff --git a/src/uncategorized/futureSociety.tw b/src/uncategorized/futureSociety.tw
index d253264c5153ab60250308b5bcc9bab3d0f2921b..5df1ca07eb6cb70511e37f45024cc4346dbbfc67 100644
--- a/src/uncategorized/futureSociety.tw
+++ b/src/uncategorized/futureSociety.tw
@@ -593,7 +593,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc
 </span>
 
 <<if $arcologies[0].FSSupremacist != "unset">>
-	<br>''You are pursuing'' $arcologies[0].FSSupremacistRace superiority. //<<link "Abandon" "Future Society">><<run removeFS("FSSupremacist")>><<if $assistantFSAppearance == "supremacist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
+	<br>''You are pursuing'' $arcologies[0].FSSupremacistRace superiority. //<<link "Abandon" "Future Society">><<run FutureSocieties.remove("FSSupremacist")>><<if $assistantFSAppearance == "supremacist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
 	<<FSChangeDecoration "FSSupremacist">>
 	<<if $PAPublic == 1>>
 		<<if ($assistantAppearance == "amazon") || ($assistantAppearance == "monstergirl") || ($assistantAppearance == "succubus")>>
@@ -622,7 +622,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc
 <</if>>
 
 <<if $arcologies[0].FSSubjugationist != "unset">>
-	<br>''You are pursuing'' $arcologies[0].FSSubjugationistRace inferiority. //<<link "Abandon" "Future Society">><<run removeFS("FSSubjugationist")>><<if $assistantFSAppearance == "subjugationist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
+	<br>''You are pursuing'' $arcologies[0].FSSubjugationistRace inferiority. //<<link "Abandon" "Future Society">><<run FutureSocieties.remove("FSSubjugationist")>><<if $assistantFSAppearance == "subjugationist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
 	<<FSChangeDecoration "FSSubjugationist">>
 	<<if $PAPublic == 1>>
 		<<if ($assistantAppearance == "businesswoman") || ($assistantAppearance == "amazon") || ($assistantAppearance == "imp")>>
@@ -654,7 +654,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc
 	<<if $arcologies[0].FSRestart == "unset">>
 		<<if $arcologies[0].FSRepopulationFocus != "unset">>
 			<br>''You are pursuing'' the belief that mass breeding will save humanity.
-			//<<link "Abandon" "Future Society">><<run removeFS("FSRepopulationFocus")>><<if $assistantFSAppearance == "repopulation focus">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
+			//<<link "Abandon" "Future Society">><<run FutureSocieties.remove("FSRepopulationFocus")>><<if $assistantFSAppearance == "repopulation focus">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
 			<<FSChangeDecoration "FSRepopulationFocus" "clothesBoughtMaternityLingerie" "clothesBoughtMaternityDress" "clothesBoughtBelly">>
 			<<if $PAPublic == 1>>
 				<<if ($assistantAppearance == "goddess") || ($assistantAppearance == "hypergoddess") || ($assistantAppearance == "preggololi") || ($assistantAppearance == "pregnant fairy") || ($assistantAppearance == "succubus") || ($assistantAppearance == "witch")>>
@@ -674,14 +674,14 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc
 		<<if $arcologies[0].FSRestart != "unset">>
 			<<if $arcologies[0].FSRestartDecoration != 100>>
 				<br>''You are pursuing'' Eugenics.
-				//<<link "Abandon" "Future Society">><<run removeFS("FSRestart")>><<if $assistantFSAppearance == "eugenics">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
+				//<<link "Abandon" "Future Society">><<run FutureSocieties.remove("FSRestart")>><<if $assistantFSAppearance == "eugenics">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
 				<<FSChangeDecoration "FSRestart">>
 			<<else>>
 				<br>''You have established'' Eugenics.
 				<<if $eugenicsFullControl != 1>>
 					The Societal Elite will not permit you to abandon Eugenics.
 				<<else>>
-					//<<link "Abandon" "Future Society">><<run removeFS("FSRestart")>><<if $assistantFSAppearance == "eugenics">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//
+					//<<link "Abandon" "Future Society">><<run FutureSocieties.remove("FSRestart")>><<if $assistantFSAppearance == "eugenics">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//
 				<</if>>
 				<br>&nbsp;&nbsp;&nbsp;&nbsp;
 				<<FSChangeDecoration "FSRestart">>
@@ -706,7 +706,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc
 	<<if $arcologies[0].FSGenderFundamentalist == "unset">>
 		<<if $arcologies[0].FSGenderRadicalist != "unset">>
 			<br>''You are pursuing'' a radical redefinition of gender that identifies powerful people as male, and everyone else as female.
-			//<<link "Abandon" "Future Society">><<run removeFS("FSGenderRadicalist")>><<if $assistantFSAppearance == "gender radicalist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
+			//<<link "Abandon" "Future Society">><<run FutureSocieties.remove("FSGenderRadicalist")>><<if $assistantFSAppearance == "gender radicalist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
 			<<FSChangeDecoration "FSGenderRadicalist">>
 			<<if $PAPublic == 1>>
 				<<if ($assistantAppearance == "shemale") || ($assistantAppearance == "monstergirl") || ($assistantAppearance == "incubus") || ($assistantAppearance == "succubus") || ($assistantAppearance == "witch")>>
@@ -726,7 +726,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc
 <<if $arcologies[0].FSGenderRadicalist == "unset">>
 	<<if $arcologies[0].FSGenderFundamentalist != "unset">>
 		<br>''You are pursuing'' gender traditionalism, including a societal preference for feminine slaves and support for slave pregnancy.
-		//<<link "Abandon" "Future Society">><<run removeFS("FSGenderFundamentalist")>><<if $assistantFSAppearance == "gender fundamentalist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
+		//<<link "Abandon" "Future Society">><<run FutureSocieties.remove("FSGenderFundamentalist")>><<if $assistantFSAppearance == "gender fundamentalist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		<<FSChangeDecoration "FSGenderFundamentalist" "clothesBoughtBunny">>
 		<<if $PAPublic == 1>>
 			<<if ($assistantAppearance == "schoolgirl") || ($assistantAppearance == "goddess") || ($assistantAppearance == "hypergoddess") || ($assistantAppearance == "preggololi") || ($assistantAppearance == "loli") || ($assistantAppearance == "fairy") || ($assistantAppearance == "pregnant fairy") || ($assistantAppearance == "angel") || ($assistantAppearance == "cherub") || ($assistantAppearance == "succubus") || ($assistantAppearance == "witch")>>
@@ -745,7 +745,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc
 <<if $arcologies[0].FSDegradationist == "unset">>
 	<<if $arcologies[0].FSPaternalist != "unset">>
 		<br>''You are pursuing'' a vision of slave improvement, including slaves' health, mental well-being, and education.
-		//<<link "Abandon" "Future Society">><<run removeFS("FSPaternalist")>><<if $assistantFSAppearance == "paternalist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
+		//<<link "Abandon" "Future Society">><<run FutureSocieties.remove("FSPaternalist")>><<if $assistantFSAppearance == "paternalist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		<<FSChangeDecoration "FSPaternalist" "clothesBoughtConservative">>
 		<<if $PAPublic == 1>>
 			<<if ($assistantAppearance == "schoolgirl") || ($assistantAppearance == "goddess") || ($assistantAppearance == "hypergoddess") || ($assistantAppearance == "preggololi") || ($assistantAppearance == "loli") || ($assistantAppearance == "fairy") || ($assistantAppearance == "pregnant fairy") || ($assistantAppearance == "angel") || ($assistantAppearance == "cherub")>>
@@ -764,7 +764,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc
 <<if $arcologies[0].FSPaternalist == "unset">>
 	<<if $arcologies[0].FSDegradationist != "unset">>
 		<br>''You are pursuing'' slave degradation, a belief that slaves are not human and should not be treated decently.
-		//<<link "Abandon" "Future Society">><<run removeFS("FSDegradationist")>><<if $assistantFSAppearance == "degradationist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
+		//<<link "Abandon" "Future Society">><<run FutureSocieties.remove("FSDegradationist")>><<if $assistantFSAppearance == "degradationist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		<<FSChangeDecoration "FSDegradationist" "clothesBoughtChains">>
 		<<if $PAPublic == 1>>
 			<<if ($assistantAppearance == "monstergirl") || ($assistantAppearance == "businesswoman") || ($assistantAppearance == "preggololi") || ($assistantAppearance == "succubus") || ($assistantAppearance == "incubus") || ($assistantAppearance == "imp")>>
@@ -783,7 +783,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc
 <<if $arcologies[0].FSTransformationFetishist == "unset">>
 	<<if $arcologies[0].FSBodyPurist != "unset">>
 		<br>''You are pursuing'' societal disapproval of implant surgery.
-		//<<link "Abandon" "Future Society">><<run removeFS("FSBodyPurist")>><<if $assistantFSAppearance == "body purist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
+		//<<link "Abandon" "Future Society">><<run FutureSocieties.remove("FSBodyPurist")>><<if $assistantFSAppearance == "body purist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		<<FSChangeDecoration "FSBodyPurist">>
 		<<if $PAPublic == 1>>
 			<<if ($assistantAppearance == "amazon") || ($assistantAppearance == "goddess") || ($assistantAppearance == "loli") || ($assistantAppearance == "fairy") || ($assistantAppearance == "pregnant fairy") || ($assistantAppearance == "angel") || ($assistantAppearance == "succubus") || ($assistantAppearance == "incubus") || ($assistantAppearance == "witch")>>
@@ -802,7 +802,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc
 <<if $arcologies[0].FSBodyPurist == "unset">>
 	<<if $arcologies[0].FSTransformationFetishist != "unset">>
 		<br>''You are pursuing'' societal fetishization of implant surgery.
-		//<<link "Abandon" "Future Society">><<run removeFS("FSTransformationFetishist")>><<if $assistantFSAppearance == "transformation fetishist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
+		//<<link "Abandon" "Future Society">><<run FutureSocieties.remove("FSTransformationFetishist")>><<if $assistantFSAppearance == "transformation fetishist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		<<FSChangeDecoration "FSTransformationFetishist">>
 		<<if $PAPublic == 1>>
 			<<if ($assistantAppearance == "businesswoman") || ($assistantAppearance == "shemale") || ($assistantAppearance == "succubus") || ($assistantAppearance == "incubus") || ($assistantAppearance == "witch") || ($assistantAppearance == "ERROR_1606_APPEARANCE_FILE_CORRUPT")>>
@@ -821,7 +821,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc
 <<if $arcologies[0].FSMaturityPreferentialist == "unset">>
 	<<if $arcologies[0].FSYouthPreferentialist != "unset">>
 		<br>''You are pursuing'' an accentuated societal preference for younger slaves.
-		//<<link "Abandon" "Future Society">><<run removeFS("FSYouthPreferentialist")>><<if $assistantFSAppearance == "youth preferentialist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
+		//<<link "Abandon" "Future Society">><<run FutureSocieties.remove("FSYouthPreferentialist")>><<if $assistantFSAppearance == "youth preferentialist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		<<FSChangeDecoration "FSYouthPreferentialist">>
 		<<if $PAPublic == 1>>
 			<<if ($assistantAppearance == "schoolgirl") || ($assistantAppearance == "shemale") || ($assistantAppearance == "preggololi") || ($assistantAppearance == "loli") || ($assistantAppearance == "succubus") || ($assistantAppearance == "angel") || ($assistantAppearance == "cherub") || ($assistantAppearance == "imp") || ($assistantAppearance == "witch")>>
@@ -840,7 +840,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc
 <<if $arcologies[0].FSYouthPreferentialist == "unset">>
 	<<if $arcologies[0].FSMaturityPreferentialist != "unset">>
 		<br>''You are pursuing'' a societal preference for older women.
-		//<<link "Abandon" "Future Society">><<run removeFS("FSMaturityPreferentialist")>><<if $assistantFSAppearance == "maturity preferentialist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
+		//<<link "Abandon" "Future Society">><<run FutureSocieties.remove("FSMaturityPreferentialist")>><<if $assistantFSAppearance == "maturity preferentialist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		<<FSChangeDecoration "FSMaturityPreferentialist">>
 		<<if $PAPublic == 1>>
 			<<if ($assistantAppearance == "businesswoman") || ($assistantAppearance == "goddess") || ($assistantAppearance == "succubus") || ($assistantAppearance == "incubus") || ($assistantAppearance == "witch") || ($assistantAppearance == "angel")>>
@@ -859,7 +859,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc
 <<if $arcologies[0].FSAssetExpansionist == "unset">>
 	<<if $arcologies[0].FSSlimnessEnthusiast != "unset">>
 		<br>''You are supporting'' enthusiasm for slaves with girlish figures.
-		//<<link "Abandon" "Future Society">><<run removeFS("FSSlimnessEnthusiast")>><<if $assistantFSAppearance == "slimness enthusiast">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
+		//<<link "Abandon" "Future Society">><<run FutureSocieties.remove("FSSlimnessEnthusiast")>><<if $assistantFSAppearance == "slimness enthusiast">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		<<FSChangeDecoration "FSSlimnessEnthusiast">>
 		<<if $PAPublic == 1>>
 			<<if ($assistantAppearance == "schoolgirl") || ($assistantAppearance == "shemale") || ($assistantAppearance == "loli") || ($assistantAppearance == "cherub") || ($assistantAppearance == "imp") || ($assistantAppearance == "succubus") || ($assistantAppearance == "witch")>>
@@ -878,7 +878,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc
 <<if $arcologies[0].FSSlimnessEnthusiast == "unset">>
 	<<if $arcologies[0].FSAssetExpansionist != "unset">>
 		<br>''You are pursuing'' societal hunger for huge assets.
-		//<<link "Abandon" "Future Society">><<run removeFS("FSAssetExpansionist")>><<if $assistantFSAppearance == "asset expansionist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
+		//<<link "Abandon" "Future Society">><<run FutureSocieties.remove("FSAssetExpansionist")>><<if $assistantFSAppearance == "asset expansionist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		<<FSChangeDecoration "FSAssetExpansionist">>
 		<<if $PAPublic == 1>>
 			<<if ($assistantAppearance == "businesswoman") || ($assistantAppearance == "shemale") || ($assistantAppearance == "hypergoddess") || ($assistantAppearance == "succubus") || ($assistantAppearance == "incubus") || ($assistantAppearance == "witch")>>
@@ -896,7 +896,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc
 
 <<if $arcologies[0].FSPastoralist != "unset">>
 	<br>''You are pursuing'' societal normalization of slave milking.
-	//<<link "Abandon" "Future Society">><<run removeFS("FSPastoralist")>><<if $assistantFSAppearance == "pastoralist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
+	//<<link "Abandon" "Future Society">><<run FutureSocieties.remove("FSPastoralist")>><<if $assistantFSAppearance == "pastoralist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
 	<<FSChangeDecoration "FSPastoralist" "clothesBoughtWestern">>
 	<<if $PAPublic == 1>>
 		<<if ($assistantAppearance == "goddess") || ($assistantAppearance == "shemale") || ($assistantAppearance == "hypergoddess") || ($assistantAppearance == "incubus") || ($assistantAppearance == "succubus") || ($assistantAppearance == "witch")>>
@@ -914,7 +914,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc
 <<if $arcologies[0].FSHedonisticDecadence == "unset">>
 	<<if $arcologies[0].FSPhysicalIdealist != "unset">>
 		<br>''You are pursuing'' societal reverence for the idealized human form, including height, health and muscle.
-		//<<link "Abandon" "Future Society">><<run removeFS("FSPhysicalIdealist")>><<if $assistantFSAppearance == "physical idealist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
+		//<<link "Abandon" "Future Society">><<run FutureSocieties.remove("FSPhysicalIdealist")>><<if $assistantFSAppearance == "physical idealist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		<<FSChangeDecoration "FSPhysicalIdealist" "clothesBoughtOil">>
 		<<if $PAPublic == 1>>
 			<<if ($assistantAppearance == "amazon") || ($assistantAppearance == "shemale") || ($assistantAppearance == "incubus") || ($assistantAppearance == "succubus") || ($assistantAppearance == "witch")>>
@@ -933,7 +933,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc
 <<if $arcologies[0].FSPhysicalIdealist == "unset">>
 	<<if $arcologies[0].FSHedonisticDecadence != "unset">>
 		<br>''You are pursuing'' societal normalization of overindulgence and immediate gratification. Be it food, drink, sex, drugs or whatever one's desire may be.
-		//<<link "Abandon" "Future Society">><<run removeFS("FSHedonisticDecadence")>><<if $assistantFSAppearance == "hedonistic decadence">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
+		//<<link "Abandon" "Future Society">><<run FutureSocieties.remove("FSHedonisticDecadence")>><<if $assistantFSAppearance == "hedonistic decadence">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		<<FSChangeDecoration "FSHedonisticDecadence">>
 		<<if $PAPublic == 1>>
 			<<if ($assistantAppearance == "goddess") || ($assistantAppearance == "hypergoddess") || ($assistantAppearance == "preggololi") || ($assistantAppearance == "imp") || ($assistantAppearance == "incubus") || ($assistantAppearance == "succubus") || ($assistantAppearance == "witch")>>
@@ -952,7 +952,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc
 <<if $arcologies[0].FSNull == "unset">>
 	<<if $arcologies[0].FSChattelReligionist != "unset">>
 		<br>''You are pursuing'' a new strain of religion that emphasizes the slaveholding portions of religious history.
-		//<<link "Abandon" "Future Society">><<run removeFS("FSChattelReligionist")>><<if $assistantFSAppearance == "chattel religionist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
+		//<<link "Abandon" "Future Society">><<run FutureSocieties.remove("FSChattelReligionist")>><<if $assistantFSAppearance == "chattel religionist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		<<FSChangeDecoration "FSChattelReligionist" "clothesBoughtHabit">>
 		<<if $PAPublic == 1>>
 			<<if ($assistantAppearance == "goddess") || ($assistantAppearance == "monstergirl") || ($assistantAppearance == "incubus") || ($assistantAppearance == "succubus") || ($assistantAppearance == "witch") || ($assistantAppearance == "angel") || ($assistantAppearance == "cherub") || ($assistantAppearance == "imp")>>
@@ -971,7 +971,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc
 <<if ($arcologies[0].FSAztecRevivalist == "unset") && ($arcologies[0].FSEgyptianRevivalist == "unset") && ($arcologies[0].FSEdoRevivalist == "unset") && ($arcologies[0].FSArabianRevivalist == "unset") && ($arcologies[0].FSChineseRevivalist == "unset")>>
 	<<if $arcologies[0].FSRomanRevivalist != "unset">>
 		<br>''You are pursuing'' a vision of a new Rome.
-		//<<link "Abandon" "Future Society">><<run removeFS("FSRomanRevivalist")>><<if $assistantFSAppearance == "roman revivalist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
+		//<<link "Abandon" "Future Society">><<run FutureSocieties.remove("FSRomanRevivalist")>><<if $assistantFSAppearance == "roman revivalist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		<<FSChangeDecoration "FSRomanRevivalist" "clothesBoughtToga">>
 		<<if $PAPublic == 1>>
 			<<if ($assistantAppearance == "businesswoman") || ($assistantAppearance == "amazon") || ($assistantAppearance == "incubus") || ($assistantAppearance == "succubus")>>
@@ -990,7 +990,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc
 <<if ($arcologies[0].FSRomanRevivalist == "unset") && ($arcologies[0].FSEgyptianRevivalist == "unset") && ($arcologies[0].FSEdoRevivalist == "unset") && ($arcologies[0].FSArabianRevivalist == "unset") && ($arcologies[0].FSChineseRevivalist == "unset")>>
 	<<if $arcologies[0].FSAztecRevivalist != "unset">>
 		<br>''You are pursuing'' a vision of a new Aztec Empire.
-		//<<link "Abandon" "Future Society">><<run removeFS("FSAztecRevivalist")>><<if $assistantFSAppearance == "aztec revivalist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
+		//<<link "Abandon" "Future Society">><<run FutureSocieties.remove("FSAztecRevivalist")>><<if $assistantFSAppearance == "aztec revivalist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		<<FSChangeDecoration "FSAztecRevivalist" "clothesBoughtHuipil">>
 		<<if $PAPublic == 1>>
 			<<if ($assistantAppearance == "goddess") || ($assistantAppearance == "amazon") || ($assistantAppearance == "incubus") || ($assistantAppearance == "succubus")>>
@@ -1009,7 +1009,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc
 <<if ($arcologies[0].FSRomanRevivalist == "unset") && ($arcologies[0].FSAztecRevivalist == "unset") && ($arcologies[0].FSEdoRevivalist == "unset") && ($arcologies[0].FSArabianRevivalist == "unset") && ($arcologies[0].FSChineseRevivalist == "unset")>>
 	<<if $arcologies[0].FSEgyptianRevivalist != "unset">>
 		<br>''You are pursuing'' a vision of Pharaoh's Egypt.
-		//<<link "Abandon" "Future Society">><<run removeFS("FSEgyptianRevivalist")>><<if $assistantFSAppearance == "egyptian revivalist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
+		//<<link "Abandon" "Future Society">><<run FutureSocieties.remove("FSEgyptianRevivalist")>><<if $assistantFSAppearance == "egyptian revivalist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		<<FSChangeDecoration "FSEgyptianRevivalist" "clothesBoughtEgypt">>
 		<<if $PAPublic == 1>>
 			<<if ($assistantAppearance == "goddess") || ($assistantAppearance == "monstergirl") || ($assistantAppearance == "incubus") || ($assistantAppearance == "succubus")>>
@@ -1028,7 +1028,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc
 <<if ($arcologies[0].FSRomanRevivalist == "unset") && ($arcologies[0].FSAztecRevivalist == "unset") && ($arcologies[0].FSEgyptianRevivalist == "unset") && ($arcologies[0].FSArabianRevivalist == "unset") && ($arcologies[0].FSChineseRevivalist == "unset")>>
 	<<if $arcologies[0].FSEdoRevivalist != "unset">>
 		<br>''You are pursuing'' a vision of Edo Japan.
-		//<<link "Abandon" "Future Society">><<run removeFS("FSEdoRevivalist")>><<if $assistantFSAppearance == "edo revivalist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
+		//<<link "Abandon" "Future Society">><<run FutureSocieties.remove("FSEdoRevivalist")>><<if $assistantFSAppearance == "edo revivalist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		<<FSChangeDecoration "FSEdoRevivalist" "clothesBoughtKimono">>
 		<<if $PAPublic == 1>>
 			<<if ($assistantAppearance == "amazon") || ($assistantAppearance == "monstergirl") || ($assistantAppearance == "loli") || ($assistantAppearance == "kitsune") || ($assistantAppearance == "incubus") || ($assistantAppearance == "succubus")>>
@@ -1047,7 +1047,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc
 <<if ($arcologies[0].FSRomanRevivalist == "unset") && ($arcologies[0].FSAztecRevivalist == "unset") && ($arcologies[0].FSEgyptianRevivalist == "unset") && ($arcologies[0].FSEdoRevivalist == "unset") && ($arcologies[0].FSChineseRevivalist == "unset")>>
 	<<if $arcologies[0].FSArabianRevivalist != "unset">>
 		<br>''You are pursuing'' a vision of the Sultanate of old.
-		//<<link "Abandon" "Future Society">><<run removeFS("FSArabianRevivalist")>><<if $assistantFSAppearance == "arabian revivalist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
+		//<<link "Abandon" "Future Society">><<run FutureSocieties.remove("FSArabianRevivalist")>><<if $assistantFSAppearance == "arabian revivalist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		<<FSChangeDecoration "FSArabianRevivalist" "clothesBoughtHarem">>
 		<<if $PAPublic == 1>>
 			<<if ($assistantAppearance == "businesswoman") || ($assistantAppearance == "schoolgirl") || ($assistantAppearance == "incubus") || ($assistantAppearance == "succubus")>>
@@ -1066,7 +1066,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc
 <<if ($arcologies[0].FSRomanRevivalist == "unset") && ($arcologies[0].FSAztecRevivalist == "unset") && ($arcologies[0].FSEgyptianRevivalist == "unset") && ($arcologies[0].FSEdoRevivalist == "unset") && ($arcologies[0].FSArabianRevivalist == "unset")>>
 	<<if $arcologies[0].FSChineseRevivalist != "unset">>
 		<br>''You are pursuing'' a vision of ancient China.
-		//<<link "Abandon" "Future Society">><<run removeFS("FSChineseRevivalist")>><<if $assistantFSAppearance == "chinese revivalist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
+		//<<link "Abandon" "Future Society">><<run FutureSocieties.remove("FSChineseRevivalist")>><<if $assistantFSAppearance == "chinese revivalist">><<set $assistantFSAppearance = "default">><</if>><<ClearFacilityDecorations>><</link>>//<br>&nbsp;&nbsp;&nbsp;&nbsp;
 		<<FSChangeDecoration "FSChineseRevivalist" "clothesBoughtQipao">>
 		<<if $PAPublic == 1>>
 			<<if ($assistantAppearance == "schoolgirl") || ($assistantAppearance == "monstergirl") || ($assistantAppearance == "incubus") || ($assistantAppearance == "succubus")>>
@@ -1087,7 +1087,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc
 		<<if $arcologies[0].FSNull != "unset">>
 			<br>''You are permitting <<if $arcologies[0].FSNull <= 25>>basic<<elseif $arcologies[0].FSNull <= 50>>considerable<<elseif $arcologies[0].FSNull <= 75>>advanced<<else>>absolute<</if>>'' cultural freedom in your arcology.
 			<<if $arcologies[0].FSNull <= 25>>
-				//[[Abandon|Future Society][removeFS("FSNull")]]//
+				//[[Abandon|Future Society][FutureSocieties.remove("FSNull")]]//
 			<<else>>
 				//[[Withdraw|Future Society][$arcologies[0].FSNull -= 25, $FSCredits += 1]]//
 			<</if>>
@@ -1106,7 +1106,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc
 		<<if $arcologies[0].FSNull != "unset">>
 			<br>''You are permitting <<if $arcologies[0].FSNull <= 17>>basic<<elseif $arcologies[0].FSNull <= 34>>some<<elseif $arcologies[0].FSNull <= 51>>considerable<<elseif $arcologies[0].FSNull <= 68>>great<<elseif $arcologies[0].FSNull <= 85>>advanced<<else>>absolute<</if>>'' cultural freedom in your arcology.
 			<<if $arcologies[0].FSNull <= 20>>
-				//[[Abandon|Future Society][removeFS("FSNull")]]//
+				//[[Abandon|Future Society][FutureSocieties.remove("FSNull")]]//
 			<<else>>
 				//[[Withdraw|Future Society][$arcologies[0].FSNull -= 17, $FSCredits += 1]]//
 			<</if>>
@@ -1125,7 +1125,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc
 		<<if $arcologies[0].FSNull != "unset">>
 			<br>''You are permitting <<if $arcologies[0].FSNull <= 15>>basic<<elseif $arcologies[0].FSNull <= 30>>some<<elseif $arcologies[0].FSNull <= 45>>notable<<elseif $arcologies[0].FSNull <= 60>>considerable<<elseif $arcologies[0].FSNull <= 75>>great<<elseif $arcologies[0].FSNull <= 90>>advanced<<else>>absolute<</if>>'' cultural freedom in your arcology.
 			<<if $arcologies[0].FSNull <= 20>>
-				//[[Abandon|Future Society][removeFS("FSNull")]]//
+				//[[Abandon|Future Society][FutureSocieties.remove("FSNull")]]//
 			<<else>>
 				//[[Withdraw|Future Society][$arcologies[0].FSNull -= 15, $FSCredits += 1]]//
 			<</if>>
@@ -1144,7 +1144,7 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc
 		<<if $arcologies[0].FSNull != "unset">>
 			<br>''You are permitting <<if $arcologies[0].FSNull <= 20>>basic<<elseif $arcologies[0].FSNull <= 40>>considerable<<elseif $arcologies[0].FSNull <= 60>>great<<elseif $arcologies[0].FSNull <= 80>>advanced<<else>>absolute<</if>>'' cultural freedom in your arcology.
 			<<if $arcologies[0].FSNull <= 20>>
-				//[[Abandon|Future Society][removeFS("FSNull")]]//
+				//[[Abandon|Future Society][FutureSocieties.remove("FSNull")]]//
 			<<else>>
 				//[[Withdraw|Future Society][$arcologies[0].FSNull -= 20, $FSCredits += 1]]//
 			<</if>>
diff --git a/src/uncategorized/officeDescription.tw b/src/uncategorized/officeDescription.tw
index 1ccfe6471e364b873b1339505976bf1430b3ad85..160f9ae27cdc35e6a923fc11f28c99c0592c0804 100644
--- a/src/uncategorized/officeDescription.tw
+++ b/src/uncategorized/officeDescription.tw
@@ -179,22 +179,7 @@
 		<</switch>>
 	<</if>>
 <</if>>
-<<if $trinkets.length > 0>>
-There's a display case behind your desk,
-<<if $trinkets.length > 2>>
-	with
-	<<for $i = 0; $i < $trinkets.length; $i++>>
-		<<if $i < $trinkets.length-1>>
-			$trinkets[$i],
-		<<else>>
-			and $trinkets[$i].
-		<</if>>
-	<</for>>
-<<elseif $trinkets.length > 1>>
-	with a couple of items: $trinkets[0], and $trinkets[1].
-<<else>>
-	with a single item: $trinkets[0].
-<</if>>
+<<= printTrinkets()>>
 
 A small mirror resides on your desk, facing you.
 A $PC.visualAge year old<<if $PC.markings == "freckles">>, freckled<<elseif $PC.markings == "heavily freckled">>, densely freckled<</if>> $PC.faceShape face stares back at you.
@@ -204,4 +189,3 @@ A $PC.visualAge year old<<if $PC.markings == "freckles">>, freckled<<elseif $PC.
 <<PlayerCrotch>>
 <<PlayerButt>>
 
-<</if>>
diff --git a/src/uncategorized/personalAssistantOptions.tw b/src/uncategorized/personalAssistantOptions.tw
index fc0dce0614f86abddcb02a958ff2fafe00285e00..6f36e6ae36979e00306a882f572163a2ee03c941 100644
--- a/src/uncategorized/personalAssistantOptions.tw
+++ b/src/uncategorized/personalAssistantOptions.tw
@@ -29,11 +29,19 @@ __Computer Core Upgrades__
 <br>
 
 <<if $assistantPower == 0>>
-	//The first upgrade needed is a switch to a holographic memory core to store the immense quantity of data $assistantName gathers. This upgrade will cost <<print cashFormat(Math.trunc(20000*$upgradeMultiplierArcology*$HackingSkillMultiplier))>>.// [[Install holographic memory core|Personal assistant options][cashX(forceNeg(Math.trunc(20000*$upgradeMultiplierArcology*$HackingSkillMultiplier)), "capEx"), $assistantPower += 1, $PC.engineering += 1, $PC.hacking += 1]]
+	The first upgrade needed is a switch to a holographic memory core to store the immense quantity of data $assistantName gathers.
+	//Will cost <<print cashFormat(Math.trunc(20000*$upgradeMultiplierArcology*$HackingSkillMultiplier))>>//
+	[[Install holographic memory core|Personal assistant options][cashX(forceNeg(Math.trunc(20000*$upgradeMultiplierArcology*$HackingSkillMultiplier)), "capEx"), $assistantPower += 1, $PC.engineering += 1, $PC.hacking += 1]]
 <<elseif $assistantPower == 1>>
-	//The final upgrade needed is a transition to optical RAM. This huge project will cost <<print cashFormat(Math.trunc(50000*$upgradeMultiplierArcology*$HackingSkillMultiplier))>>.// [[Install optical RAM|Personal assistant options][cashX(forceNeg(Math.trunc(50000*$upgradeMultiplierArcology*$HackingSkillMultiplier)), "capEx"), $assistantPower += 1, $PC.engineering += 1, $PC.hacking += 1]]
+	The next upgrade needed is a liquid nitrogen cooling system to allow for extensive overclocking.
+	//Will cost <<print cashFormat(Math.trunc(35000*$upgradeMultiplierArcology*$HackingSkillMultiplier))>> and will allow you to upgrade the smart piercings in $arcologies[0].name//
+	[[Install upgraded cooling system|Personal assistant options][cashX(forceNeg(Math.trunc(35000*$upgradeMultiplierArcology*$HackingSkillMultiplier)), "capEx"), $assistantPower += 1, $PC.engineering += 1, $PC.hacking += 1]]
+<<elseif $assistantPower == 2>>
+	The final upgrade needed is a transition to optical RAM.
+	//Will cost <<print cashFormat(Math.trunc(50000*$upgradeMultiplierArcology*$HackingSkillMultiplier))>>//
+	[[Install optical RAM|Personal assistant options][cashX(forceNeg(Math.trunc(50000*$upgradeMultiplierArcology*$HackingSkillMultiplier)), "capEx"), $assistantPower += 1, $PC.engineering += 1, $PC.hacking += 1]]
 <<else>>
-	//The arcology's computer core is fully upgraded.//
+	The arcology's computer core is fully upgraded.
 <</if>>
 <br>
 
diff --git a/src/uncategorized/rePokerNight.tw b/src/uncategorized/rePokerNight.tw
index 8c4ee797e47d4325c9c6e1a525ef15da8b2a4a13..025ca0d93ee7cd9ce22239c89ca4f874aa825b34 100644
--- a/src/uncategorized/rePokerNight.tw
+++ b/src/uncategorized/rePokerNight.tw
@@ -95,6 +95,7 @@ On a particularly lackadaisical evening, you find yourself alerted to a message
 					<<set $activeSlave.combatSkill = 1>>
 					<<set $activeSlave.accent = random(0,1)>>
 					<<set $activeSlave.behavioralFlaw = "arrogant">>
+					<<set $activeSlave.hLength = 1>>
 					<<set $activeSlave.hStyle = "shaved into a mohawk">>
 					<<set $activeSlave.customTat = "She has a number of tattoos from a variety of mercenary companies.">>
 					<<set $activeSlave.clothes = "a military uniform">>
diff --git a/src/uncategorized/reRelativeRecruiter.tw b/src/uncategorized/reRelativeRecruiter.tw
index 276c4107103d8b56160866a2cf1410030da5e336..a7404b9b0374480761e3f22bc0836119b6cf8dda 100644
--- a/src/uncategorized/reRelativeRecruiter.tw
+++ b/src/uncategorized/reRelativeRecruiter.tw
@@ -487,6 +487,7 @@
 <<set $activeSlave.inflation = 0, $activeSlave.inflationType = "none", $activeSlave.inflationMethod = 0>>
 <<set $activeSlave.bodySwap = 0>>
 <<set $activeSlave.pregControl = "none">>
+<<set $activeSlave.vaginalAttachment = "none">>
 <<set $activeSlave.buttplugAttachment = "none">>
 <<run SetBellySize($activeSlave)>>
 <<if $activeSlave.physicalAge < 6>>
diff --git a/src/uncategorized/reShelterInspection.tw b/src/uncategorized/reShelterInspection.tw
index b062a258e9e2f9abf6895f7863e60eaa7fe5169c..f8aad90409a1aa075a24d8f5d86f807d0f207150 100644
--- a/src/uncategorized/reShelterInspection.tw
+++ b/src/uncategorized/reShelterInspection.tw
@@ -181,7 +181,7 @@ Not waiting to be greeted, the inspector looks up at the nearest camera and dema
 		<<run cashX(forceNeg($contractCost/2), "slaveTransfer", $activeSlave)>>
 		<<replace "#result">>
 		You have _him2 ushered up to your office, and order _Inspectee.slaveName brought in. The inspector has a single moment to stiffen in shock at the sight before _he2 stiffens involuntarily due to the security drone tasing _him2 unconscious. It takes a few credits here and there to circumvent the Shelter's various legal and contractual defenses to prevent slaveowners from doing exactly what you're doing, but you finish the day richer by one more Fuckdoll. Odds are _he2 wants to be defiant, but the suit works perfectly and leaves _him2 no outlet to make _his2 thoughts known.
-		<<set $activeSlave.toyHole="all her holes", $activeSlave.pubicHStyle="waxed", $activeSlave.livingRules="spare", $activeSlave.speechRules="restrictive", $activeSlave.releaseRules="restrictive", $activeSlave.relationshipRules="restrictive", $activeSlave.fuckdoll=1, $activeSlave.choosesOwnClothes=0, $activeSlave.clothes="a Fuckdoll suit", $activeSlave.collar="none", $activeSlave.shoes="heels",$activeSlave.legAccessory="none", $activeSlave.vaginalAccessory="none", $activeSlave.dickAccessory="none", $activeSlave.buttplug="none", $activeSlave.chastityAnus = 0, $activeSlave.chastityPenis = 0, $activeSlave.chastityVagina = 0, $activeSlave.attrKnown=1, $activeSlave.fetishKnown=1>>
+		<<set $activeSlave.toyHole="all her holes", $activeSlave.pubicHStyle="waxed", $activeSlave.livingRules="spare", $activeSlave.speechRules="restrictive", $activeSlave.releaseRules="restrictive", $activeSlave.relationshipRules="restrictive", $activeSlave.fuckdoll=1, $activeSlave.choosesOwnClothes=0, $activeSlave.clothes="a Fuckdoll suit", $activeSlave.collar="none", $activeSlave.shoes="heels",$activeSlave.legAccessory="none", $activeSlave.vaginalAccessory="none", $activeSlave.vaginalAttachment="none", $activeSlave.dickAccessory="none", $activeSlave.buttplug="none", $activeSlave.chastityAnus = 0, $activeSlave.chastityPenis = 0, $activeSlave.chastityVagina = 0, $activeSlave.attrKnown=1, $activeSlave.fetishKnown=1>>
 		<<set $shelterAbuse += 10>>
 		<<set $nextButton = "Continue">><<UpdateNextButton>> /* unlock Continue button */
 		<<run newSlave($activeSlave)>> /* skip New Slave Intro */
diff --git a/src/uncategorized/reStaffedMorning.tw b/src/uncategorized/reStaffedMorning.tw
index a4f8d3119f89cd4c5cea280dadbd31d510c7214a..969ab4616310d795f5420e36e1f80b3ea8643c29 100644
--- a/src/uncategorized/reStaffedMorning.tw
+++ b/src/uncategorized/reStaffedMorning.tw
@@ -8,6 +8,8 @@
 <<set _bedSlaves = _bedSlaves.shuffle()>>
 <<setLocalPronouns _bedSlaves[0]>>
 <<setLocalPronouns _bedSlaves[1] 2>>
+<<setLocalPronouns _bedSlaves[2] 3>>
+<<setLocalPronouns _bedSlaves[3] 4>>
 <<setPlayerPronouns>>
 
 <<set _clothesTemp = _bedSlaves[1].clothes, _bedSlaves[1].clothes = "no clothing">>
@@ -51,17 +53,13 @@ The bathroom door is open and the shower is running. Though the steam is beginni
 		You reach down and run a possessive hand across each slave's scalp, neck, and back, eliciting shivers. Then, you gently hook them under the armpits and pull them up a bit, without breaking their lip locks with your nipples, or forcing them to stop playing with your cunt. Each slave ends curled up, mostly face-down, with their mouths still sucking on your <<if $PC.boobs == 1>>boobs<<else>>chest<</if>> and their free hands trapped between their legs. They get the message and begin to look after themselves, too; their resultant moaning against your nipples grows when you reach down and start teasing their butts. The three of you climax more or less together, and you bounce up with undiminished arousal to enjoy your shower.
 	<</if>>
 	<br><br>
-	<<setLocalPronouns _bedSlaves[2]>>
-	<<setLocalPronouns _bedSlaves[3] 2>>
 	By now, the shower is an impenetrable fog of steam. The wet, soapy bodies inside are easy to find, though. _bedSlaves[2].slaveName happens to be closest, so you
 	<<if $PC.dick == 1>>
-		kiss $his laughing mouth hard and fuck $him with $his back against the shower wall<<if _bedSlaves[2].boobs > 2000>>, $his huge soapy tits sliding around deliciously<</if>>. $He does $his best to soap your front while $he takes cock, and _bedSlaves[3].slaveName washes your back<<if $PC.vagina == 1>>, reaching under your butt to tease your pussy<</if>>. After a short while, you set $him down and seize _bedSlaves[3].slaveName, sliding your cock <<if _bedSlaves[3].butt > 4>>between _his2 huge buttocks and<</if>> up _his2 willing ass, taking _him2 from behind while _bedSlaves[2].slaveName does $his best to get $his wits back and take over washing duty. They towel you together, and you head back out of the bathroom.
+		kiss _his3 laughing mouth hard and fuck _him3 with _his3 back against the shower wall<<if _bedSlaves[2].boobs > 2000>>, _his3 huge soapy tits sliding around deliciously<</if>>. _He3 does _his3 best to soap your front while _he3 takes cock, and _bedSlaves[3].slaveName washes your back<<if $PC.vagina == 1>>, reaching under your butt to tease your pussy<</if>>. After a short while, you set _him3 down and seize _bedSlaves[3].slaveName, sliding your cock <<if _bedSlaves[3].butt > 4>>between _his4 huge buttocks and<</if>> up _his4 willing ass, taking _him4 from behind while _bedSlaves[2].slaveName does _his3 best to get _his3 wits back and take over washing duty. They towel you together, and you head back out of the bathroom.
 	<<else>>
-		kiss $his laughing mouth hard and trib $him with $his back against the shower wall<<if _bedSlaves[2].boobs > 2000>>, $his huge soapy tits sliding around deliciously<</if>>. $He does $his best to soap your front while you hump $his thigh<<if _bedSlaves[2].vagina > -1>> and pussy<</if>>, and _bedSlaves[3].slaveName washes your back. After a short while, you set $him down and seize _bedSlaves[3].slaveName, pushing _his2 face against the wall and sliding your fingers inside _him2 while you straddle one of _his2 legs. _bedSlaves[2].slaveName does $his best to get $his wits back and take over washing duty. They towel you together, and you head back out of the bathroom.
+		kiss _his3 laughing mouth hard and trib _him3 with _his3 back against the shower wall<<if _bedSlaves[2].boobs > 2000>>, _his3 huge soapy tits sliding around deliciously<</if>>. _He3 does _his3 best to soap your front while you hump _his3 thigh<<if _bedSlaves[2].vagina > -1>> and pussy<</if>>, and _bedSlaves[3].slaveName washes your back. After a short while, you set _him3 down and seize _bedSlaves[3].slaveName, pushing _his4 face against the wall and sliding your fingers inside _him4 while you straddle one of _his4 legs. _bedSlaves[2].slaveName does _his3 best to get _his3 wits back and take over washing duty. They towel you together, and you head back out of the bathroom.
 	<</if>>
 	<br><br>
-	<<setLocalPronouns _bedSlaves[0]>>
-	<<setLocalPronouns _bedSlaves[1] 2>>
 	Your clothes have been laid out, ready for _bedSlaves[0].slaveName and _bedSlaves[1].slaveName to dress you, but
 	<<if $PC.dick == 1>>
 		next to the neat stack of clothes, the two slaves are bent over the bed with their buttocks spread. You select _bedSlaves[1].slaveName and slide your dick up _his2 <<if _bedSlaves[1].anus > 2>>welcoming asspussy<<elseif _bedSlaves[1].anus > 1>>soft butthole<<else>>tight anus<</if>>, sodomizing _him2 while _bedSlaves[0].slaveName buttons your shirt. When it's done, you push $him down next to _bedSlaves[1].slaveName and switch assholes, letting _bedSlaves[1].slaveName up to do _his2 best to help you into your trousers in the meantime. _He2 gets them on and fastens everything, except the fly, of course.
@@ -82,21 +80,17 @@ The bathroom door is open and the shower is running. Though the steam is beginni
 	<</if>>
 	and bounce up to fuck bitches in the shower, knocking _bedSlaves[0].slaveName to the floor and sending _bedSlaves[1].slaveName sprawling. As you go, you tell them they've got ten minutes to get your clothes laid out and their buttholes ready. They nod furiously and scramble.
 	<br><br>
-	<<setLocalPronouns _bedSlaves[2]>>
-	<<setLocalPronouns _bedSlaves[3] 2>>
 	By now, the shower is an impenetrable fog of steam. The wet, soapy bodies inside are easy to find, though. _bedSlaves[2].slaveName happens to be closest, so you
 	<<if $PC.dick == 1>>
-		grab $him and shove $him into a corner of the shower<<if _bedSlaves[2].boobs > 2000>>, $his huge soapy tits slapping painfully against the glass<</if>>. $He does $his best to angle $his hips for you as you push your cock up $his ass and give $him a good hard reaming. _bedSlaves[3].slaveName does _his2 best to wash your back<<if $PC.vagina == 1>> and give your pussy some manual attention<</if>>, but finds _himself2 taking _bedSlaves[2].slaveName's place soon enough, smashed into the corner with your dick pistoning in and out of _his2 rectum.
+		grab _him3 and shove _him3 into a corner of the shower<<if _bedSlaves[2].boobs > 2000>>, _his3 huge soapy tits slapping painfully against the glass<</if>>. _He3 does _his3 best to angle _his3 hips for you as you push your cock up _his3 ass and give _him3 a good hard reaming. _bedSlaves[3].slaveName does _his4 best to wash your back<<if $PC.vagina == 1>> and give your pussy some manual attention<</if>>, but finds _himself4 taking _bedSlaves[2].slaveName's place soon enough, smashed into the corner with your dick pistoning in and out of _his4 rectum.
 	<<else>>
-		grab $him and shove $him into a corner of the shower<<if _bedSlaves[2].boobs > 2000>>, $his huge soapy tits slapping painfully against the glass<</if>>. $He does $his best to angle $his hips for you as you fingerfuck $his butthole, forcing complete submission out of the compliant $girl. _bedSlaves[3].slaveName does _his2 best to wash your back, but finds _himself2 taking _bedSlaves[2].slaveName's place soon enough, smashed into the corner with your fingers pistoning in and out of _his2 rectum.
+		grab _him3 and shove _him3 into a corner of the shower<<if _bedSlaves[2].boobs > 2000>>, _his3 huge soapy tits slapping painfully against the glass<</if>>. _He3 does _his3 best to angle _his3 hips for you as you fingerfuck _his3 butthole, forcing complete submission out of the compliant _girl3. _bedSlaves[3].slaveName does _his4 best to wash your back, but finds _himself4 taking _bedSlaves[2].slaveName's place soon enough, smashed into the corner with your fingers pistoning in and out of _his4 rectum.
 	<</if>>
 	You're in a hurry, but it'll be a sad day when you aren't able to assrape a slave into total submission in five minutes. You drop _bedSlaves[3].slaveName on the shower floor and let _bedSlaves[2].slaveName towel you off.
 	<<if $PC.dick == 0>>
-		_bedSlaves[3].slaveName gets to _his2 feet and helpfully holds up a strap-on questioningly; you shake your head and point to another, larger one. _He2 helps you into it, and you ram it up _his2 loosened ass experimentally, nodding in satisfaction when the big phallus forces a pained gasp out of _him2.
+		_bedSlaves[3].slaveName gets to _his4 feet and helpfully holds up a strap-on questioningly; you shake your head and point to another, larger one. _He4 helps you into it, and you ram it up _his4 loosened ass experimentally, nodding in satisfaction when the big phallus forces a pained gasp out of _him4.
 	<</if>>
 	<br><br>
-	<<setLocalPronouns _bedSlaves[0]>>
-	<<setLocalPronouns _bedSlaves[1] 2>>
 	Back in the bedroom, your clothes have been laid out, ready for _bedSlaves[0].slaveName and _bedSlaves[1].slaveName to dress you.
 	<<if $PC.dick == 1>>
 		Next to the neat stack of clothes, the two slaves are bent over the bed with their buttocks spread. They're perfectly still, awaiting your pleasure. You select _bedSlaves[1].slaveName and ram your dick up _his2 <<if _bedSlaves[1].anus > 2>>welcoming asspussy<<elseif _bedSlaves[1].anus > 1>>soft butthole<<else>>tight anus<</if>>, assraping _him2 without mercy while _bedSlaves[0].slaveName buttons your shirt. When it's done, you push $him down next to _bedSlaves[1].slaveName and switch assholes, letting _bedSlaves[1].slaveName up to do _his2 best to help you into your trousers in the meantime. _He2 gets them on and fastens everything, except the fly, of course. When _bedSlaves[0].slaveName has been buttfucked into helplessness, you throw $him away like the human sex toy $he is and pound _bedSlaves[1].slaveName and then the dried-off _bedSlaves[3].slaveName and _bedSlaves[2].slaveName senseless, careful to frequently pull far enough out that the slaves have to take the pain of initial penetration again.
diff --git a/src/uncategorized/remoteSurgery.tw b/src/uncategorized/remoteSurgery.tw
index cf1c8e9e69441054ce8e8e83c7bbee1517c82acc..4fdb66d998953489ff483d327c1a5addaf550239 100644
--- a/src/uncategorized/remoteSurgery.tw
+++ b/src/uncategorized/remoteSurgery.tw
@@ -1149,11 +1149,11 @@ Work on $his sex:
 
 <<if ($activeSlave.vagina > -1) && ($activeSlave.dick > 0)>>
 	<<if $activeSlave.indentureRestrictions < 1 && ($activeSlave.breedingMark != 1 || $propOutcome == 0)>>
-		| [[Remove pussy|Surgery Degradation][$activeSlave.vagina = -1,$activeSlave.ovaries = 0,$activeSlave.preg = -2,$activeSlave.pregSource = 0,$activeSlave.vaginalSkill = 0,$activeSlave.vaginalAccessory = "none",$activeSlave.chastityVagina = 0,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$activeSlave.health -= 20,$surgeryType = "vaginaRemoval"]] <<if $activeSlave.ovaries == 1>>//This will remove $his ovaries as well//<</if>>
+		| [[Remove pussy|Surgery Degradation][$activeSlave.vagina = -1,$activeSlave.ovaries = 0,$activeSlave.preg = -2,$activeSlave.pregSource = 0,$activeSlave.vaginalSkill = 0,$activeSlave.vaginalAccessory = "none",$activeSlave.vaginalAttachment = "none",$activeSlave.chastityVagina = 0,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$activeSlave.health -= 20,$surgeryType = "vaginaRemoval"]] <<if $activeSlave.ovaries == 1>>//This will remove $his ovaries as well//<</if>>
 	<</if>>
 <<elseif $activeSlave.vagina > -1>>
 	<<if $activeSlave.indentureRestrictions < 1 && ($activeSlave.breedingMark != 1 || $propOutcome == 0)>>
-		| [[Remove pussy|Surgery Degradation][$activeSlave.vagina = -1,$activeSlave.ovaries = 0,$activeSlave.preg = -2,$activeSlave.pregSource = 0,$activeSlave.vaginalSkill = 0,$activeSlave.vaginalAccessory = "none",$activeSlave.chastityVagina = 0,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$activeSlave.health -= 20,$surgeryType = "vaginaRemoval"]] <<if $activeSlave.ovaries == 1>>//This will remove $his ovaries as well//<</if>>
+		| [[Remove pussy|Surgery Degradation][$activeSlave.vagina = -1,$activeSlave.ovaries = 0,$activeSlave.preg = -2,$activeSlave.pregSource = 0,$activeSlave.vaginalSkill = 0,$activeSlave.vaginalAccessory = "none",$activeSlave.vaginalAttachment = "none",$activeSlave.chastityVagina = 0,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$activeSlave.health -= 20,$surgeryType = "vaginaRemoval"]] <<if $activeSlave.ovaries == 1>>//This will remove $his ovaries as well//<</if>>
 	<</if>>
 <</if>>
 
@@ -1875,7 +1875,7 @@ Work on $him structurally:
 	<<if $activeSlave.fuckdoll == 0>>
 		<br>$He is a normal sex slave, not a living sex toy.
 		<<if $activeSlave.indentureRestrictions < 1 && ($activeSlave.breedingMark != 1 || $propOutcome == 0)>>
-			[[Encase in a Fuckdoll suit|Surgery Degradation][$activeSlave.subTarget=0, $activeSlave.sentence=0, $activeSlave.training=0, $activeSlave.toyHole="all her holes", $activeSlave.pubicHStyle="waxed", $activeSlave.livingRules="spare", $activeSlave.speechRules="restrictive", $activeSlave.releaseRules="restrictive", $activeSlave.relationshipRules="restrictive", $activeSlave.fuckdoll=1, $activeSlave.choosesOwnClothes=0, $activeSlave.clothes="a Fuckdoll suit", $activeSlave.collar="none", $activeSlave.shoes="heels",$activeSlave.legAccessory="none", $activeSlave.vaginalAccessory="none", $activeSlave.dickAccessory="none", $activeSlave.chastityAnus=0, $activeSlave.chastityPenis=0, $activeSlave.chastityVagina=0, $activeSlave.buttplug="none", $activeSlave.attrKnown=1, $activeSlave.fetishKnown=1, $activeSlave.inflation=0, $activeSlave.inflationType="none", $activeSlave.inflationMethod=0, $activeSlave.milkSource=0, $activeSlave.cumSource=0, $surgeryType = "fuckdoll"]] //This will greatly restrict $him//
+			[[Encase in a Fuckdoll suit|Surgery Degradation][$activeSlave.subTarget=0, $activeSlave.sentence=0, $activeSlave.training=0, $activeSlave.toyHole="all her holes", $activeSlave.pubicHStyle="waxed", $activeSlave.livingRules="spare", $activeSlave.speechRules="restrictive", $activeSlave.releaseRules="restrictive", $activeSlave.relationshipRules="restrictive", $activeSlave.fuckdoll=1, $activeSlave.choosesOwnClothes=0, $activeSlave.clothes="a Fuckdoll suit", $activeSlave.collar="none", $activeSlave.shoes="heels",$activeSlave.legAccessory="none", $activeSlave.vaginalAccessory="none", $activeSlave.vaginalAttachment="none", $activeSlave.dickAccessory="none", $activeSlave.chastityAnus=0, $activeSlave.chastityPenis=0, $activeSlave.chastityVagina=0, $activeSlave.buttplug="none", $activeSlave.attrKnown=1, $activeSlave.fetishKnown=1, $activeSlave.inflation=0, $activeSlave.inflationType="none", $activeSlave.inflationMethod=0, $activeSlave.milkSource=0, $activeSlave.cumSource=0, $surgeryType = "fuckdoll"]] //This will greatly restrict $him//
 		<</if>>
 	<<else>>
 		<br>$He is encased in a Fuckdoll suit. [[Extract " + $him + "|Surgery Degradation][$activeSlave.fuckdoll=0, $activeSlave.clothes="no clothing", $activeSlave.shoes="none", $surgeryType = "fuckdollExtraction"]]
diff --git a/src/uncategorized/reputation.tw b/src/uncategorized/reputation.tw
index 6aabb016be8fec2a20487c172c056891f3ead47f..cc6aad833f56b3774849a3092e0b98d505d63d56 100644
--- a/src/uncategorized/reputation.tw
+++ b/src/uncategorized/reputation.tw
@@ -782,7 +782,7 @@ On formal occasions, you are announced as $PCTitle.
 	<<if $eugenicsFullControl != 1>>
 		<<if $failedElite > 300>>
 			The Societal Elite @@.red;have departed from your arcology in disgust@@.
-			<<run removeFS("FSRestart")>>
+			<<run FutureSocieties.remove("FSRestart")>>
 			<<run repX(-10000, "event")>>
 			<<set $eliteFail = random(30,100),
 			$eliteFailTimer = 15>>
diff --git a/src/uncategorized/saBeYourHeadGirl.tw b/src/uncategorized/saBeYourHeadGirl.tw
index e4a358bc95aaac729bc53c0c52a403ff5c964bb3..28fc9164f38dcffef7dc11ee700aacedbd418a02 100644
--- a/src/uncategorized/saBeYourHeadGirl.tw
+++ b/src/uncategorized/saBeYourHeadGirl.tw
@@ -12,7 +12,7 @@
 	serves as your Consort. Though $he is still your slave, $his status is scarcely below that of a citizen. $He @@.green;contributes to your reputation@@ just like a Concubine, and $he is @@.hotpink;conscious@@ of the @@.mediumaquamarine;trust@@ you place in $him.
 	<<set $slaves[$i].devotion += 1, $slaves[$i].trust += 1>>
 	<<silently>>
-	<<include "SA please you">>
+		<<include "SA please you">>
 	<</silently>>
 	<<if $slaves[$i].relationship > 4>>
 		<<if $familyTesting == 1>>
diff --git a/src/uncategorized/saGuardsYou.tw b/src/uncategorized/saGuardsYou.tw
index 5b6099227f7db5a5a8ae7be6dff4e4ac74e4cc1b..03995323f17e82667890480d9560749b637ef444 100644
--- a/src/uncategorized/saGuardsYou.tw
+++ b/src/uncategorized/saGuardsYou.tw
@@ -158,8 +158,8 @@ $His constant presence is
 <<if $deadliness > 6>>
 	extremely intimidating, @@.green;adding much to your reputation.@@
 	<<if $slaves[$i].career == "an arcology owner">>
-	You've made a one-time rival arcology owner into a deadly and loyal protector, a feat of slaveownership that's @@.green;internationally famous.@@
-	<<run repX($deadliness*50, "bodyguard", $slaves[$i])>>
+		You've made a one-time rival arcology owner into a deadly and loyal protector, a feat of slaveownership that's @@.green;internationally famous.@@
+		<<run repX($deadliness*50, "bodyguard", $slaves[$i])>>
 	<</if>>
 <<elseif $deadliness > 3>>
 	intimidating, @@.green;adding to your reputation.@@
diff --git a/src/uncategorized/saLongTermEffects.tw b/src/uncategorized/saLongTermEffects.tw
index 9d5266ee9645b19f3d692ad1278451addd92387f..dc918f0ffde4d620b349b92ff18b75dc414ef5bf 100644
--- a/src/uncategorized/saLongTermEffects.tw
+++ b/src/uncategorized/saLongTermEffects.tw
@@ -1604,175 +1604,523 @@
 	<<else>>
 		<<switch $slaves[$i].clitSetting>>
 		<<case "none">>
-			$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing disrupts arousal, @@.red;reducing $his sex drive@@ and @@.mediumorchid;infuriating $him.@@
-			<<set $slaves[$i].devotion -= 2>>
-			<<if $slaves[$i].energy > 5>>
-				<<set $slaves[$i].energy -= 10>>
-			<<elseif $slaves[$i].energy > 0>>
-				<<set $slaves[$i].energy = 0>>
+			$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing
+			<<if $slaves[$i].vaginalAccessory == "bullet vibrator">>
+				and the bullet vibrator $he is wearing disrupt arousal, @@.red;reducing $his sex drive@@ and @@.mediumorchid;infuriating $him.@@
+				<<set $slaves[$i].devotion -= 3>>
+				<<if $slaves[$i].energy > 5>>
+					<<set $slaves[$i].energy -= 13>>
+				<<elseif $slaves[$i].energy > 0>>
+					<<set $slaves[$i].energy = 0>>
+				<</if>>
+			<<elseif $slaves[$i].vaginalAttachment == "vibrator">>
+				and the vibrating dildo in $his pussy disrupt arousal, @@.red;reducing $his sex drive@@ and @@.mediumorchid;infuriating $him.@@
+				<<set $slaves[$i].devotion -= 3>>
+				<<if $slaves[$i].energy > 5>>
+					<<set $slaves[$i].energy -= 13>>
+				<<elseif $slaves[$i].energy > 0>>
+					<<set $slaves[$i].energy = 0>>
+				<</if>>
+			<<else>>
+				disrupts arousal, @@.red;reducing $his sex drive@@ and @@.mediumorchid;infuriating $him.@@
+				<<set $slaves[$i].devotion -= 2>>
+				<<if $slaves[$i].energy > 5>>
+					<<set $slaves[$i].energy -= 10>>
+				<<elseif $slaves[$i].energy > 0>>
+					<<set $slaves[$i].energy = 0>>
+				<</if>>
 			<</if>>
 		<<case "all">>
 			<<if $slaves[$i].energy <= 95>>
-				$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing encourages sex of all kinds, @@.green;increasing $his sex drive.@@
-				<<set $slaves[$i].energy += 3>>
+				$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing
+				<<if $slaves[$i].vaginalAccessory == "bullet vibrator">>
+					and the bullet vibrator $he is wearing encourage sex of all kinds, @@.green;increasing $his sex drive.@@
+					<<set $slaves[$i].energy += 5>>
+				<<elseif $slaves[$i].vaginalAttachment == "vibrator">>
+					and the vibrating dildo in $his pussy encourage sex of all kinds, @@.green;increasing $his sex drive.@@
+					<<set $slaves[$i].energy += 5>>
+				<<else>>
+					encourages sex of all kinds, @@.green;increasing $his sex drive.@@
+					<<set $slaves[$i].energy += 3>>
+				<</if>>
 			<</if>>
 		<<case "women">>
 			<<if $slaves[$i].attrXX < 95>>
-				$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing successfully @@.green;increases $his attraction to girls@@ by pleasuring $him when $he's around them.
-				<<set $slaves[$i].attrXX += 4+$assistant+$assistant>>
-				<<if $slaves[$i].energy < 80>>
-					This has the secondary effect of slightly @@.green;enhancing $his libido.@@
-					<<set $slaves[$i].energy++>>
+				$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing
+				<<if $slaves[$i].vaginalAccessory == "bullet vibrator">>
+					and the bullet vibrator $he is wearing successfully @@.green;increase $his attraction to girls@@ by pleasuring $him when $he's around them.
+					<<set $slaves[$i].attrXX += 6+$assistant+$assistant>>
+					<<if $slaves[$i].energy < 80>>
+						This has the secondary effect of slightly @@.green;enhancing $his libido.@@
+						<<set $slaves[$i].energy += 2>>
+					<</if>>
+				<<elseif $slaves[$i].vaginalAttachment == "vibrator">>
+					and the vibrating dildo in $his pussy successfully @@.green;increase $his attraction to girls@@ by pleasuring $him when $he's around them.
+					<<set $slaves[$i].attrXX += 6+$assistant+$assistant>>
+					<<if $slaves[$i].energy < 80>>
+						This has the secondary effect of slightly @@.green;enhancing $his libido.@@
+						<<set $slaves[$i].energy += 2>>
+					<</if>>
+				<<else>>
+					successfully @@.green;increases $his attraction to girls@@ by pleasuring $him when $he's around them.
+					<<set $slaves[$i].attrXX += 7+$assistant+$assistant>>
+					<<if $slaves[$i].energy < 80>>
+						This has the secondary effect of slightly @@.green;enhancing $his libido.@@
+						<<set $slaves[$i].energy++>>
+					<</if>>
 				<</if>>
 			<</if>>
 		<<case "anti-women">>
 			<<if $slaves[$i].attrXX > 0>>
-				$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing successfully @@.green;suppresses $his attraction to girls@@ by making $his private parts very uncomfortable when $he's around them.
-				<<set $slaves[$i].attrXX -= Math.clamp($slaves[$i].attrXX-(4+$assistant+$assistant),0,100)>>
-				<<if $slaves[$i].energy > 0>>
-					This has the secondary effect of slightly @@.red;reducing $his libido.@@
-					<<set $slaves[$i].energy-->>
+				$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing
+				<<if $slaves[$i].vaginalAccessory == "bullet vibrator">>
+					and the bullet vibrator $he is wearing successfully @@.green;suppress $his attraction to girls@@ by making $his private parts very uncomfortable when $he's around them.
+					<<set $slaves[$i].attrXX -= Math.clamp($slaves[$i].attrXX-(6+$assistant+$assistant),0,100)>>
+					<<if $slaves[$i].energy > 0>>
+						This has the secondary effect of slightly @@.red;reducing $his libido.@@
+						<<set $slaves[$i].energy -= 2>>
+					<</if>>
+				<<elseif $slaves[$i].vaginalAttachment == "vibrator">>
+					and the vibrating dildo in $his pussy successfully @@.green;suppress $his attraction to girls@@ by making $his private parts very uncomfortable when $he's around them.
+					<<set $slaves[$i].attrXX -= Math.clamp($slaves[$i].attrXX-(6+$assistant+$assistant),0,100)>>
+					<<if $slaves[$i].energy > 0>>
+						This has the secondary effect of slightly @@.red;reducing $his libido.@@
+						<<set $slaves[$i].energy -= 2>>
+					<</if>>
+				<<else>>
+					successfully @@.green;suppresses $his attraction to girls@@ by making $his private parts very uncomfortable when $he's around them.
+					<<set $slaves[$i].attrXX -= Math.clamp($slaves[$i].attrXX-(4+$assistant+$assistant),0,100)>>
+					<<if $slaves[$i].energy > 0>>
+						This has the secondary effect of slightly @@.red;reducing $his libido.@@
+						<<set $slaves[$i].energy-->>
+					<</if>>
 				<</if>>
 			<</if>>
 		<<case "men">>
 			<<if $slaves[$i].attrXY < 95>>
-				$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing successfully @@.green;increases $his attraction to guys@@ by pleasuring $him when $he's around cocks.
-				<<set $slaves[$i].attrXY += 4+$assistant+$assistant>>
-				<<if $slaves[$i].energy < 80>>
-					This has the secondary effect of slightly @@.green;enhancing $his libido.@@
-					<<set $slaves[$i].energy++>>
+				$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing
+				<<if $slaves[$i].vaginalAccessory == "bullet vibrator">>
+					and the bullet vibrator $he is wearing successfully @@.green;increase $his attraction to guys@@ by pleasuring $him when $he's around cocks.
+					<<set $slaves[$i].attrXY += 6+$assistant+$assistant>>
+					<<if $slaves[$i].energy < 80>>
+						This has the secondary effect of slightly @@.green;enhancing $his libido.@@
+						<<set $slaves[$i].energy += 2>>
+					<</if>>
+				<<elseif $slaves[$i].vaginalAttachment == "vibrator">>
+					and the vibrating dildo in $his pussy successfully @@.green;increase $his attraction to guys@@ by pleasuring $him when $he's around cocks.
+					<<set $slaves[$i].attrXY += 6+$assistant+$assistant>>
+					<<if $slaves[$i].energy < 80>>
+						This has the secondary effect of slightly @@.green;enhancing $his libido.@@
+						<<set $slaves[$i].energy += 2>>
+					<</if>>
+				<<else>>
+					successfully @@.green;increases $his attraction to guys@@ by pleasuring $him when $he's around cocks.
+					<<set $slaves[$i].attrXY += 4+$assistant+$assistant>>
+					<<if $slaves[$i].energy < 80>>
+						This has the secondary effect of slightly @@.green;enhancing $his libido.@@
+						<<set $slaves[$i].energy++>>
+					<</if>>
 				<</if>>
 			<</if>>
 		<<case "anti-men">>
 			<<if $slaves[$i].attrXY > 0>>
-				$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing successfully @@.green;suppresses $his attraction to guys@@ by making $his private parts very uncomfortable when $he's around them.
-				<<set $slaves[$i].attrXY -= Math.clamp($slaves[$i].attrXY-(4+$assistant+$assistant),0,100)>>
-				<<if $slaves[$i].energy > 0>>
-					This has the secondary effect of slightly @@.red;reducing $his libido.@@
-					<<set $slaves[$i].energy-->>
+				$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing
+				<<if $slaves[$i].vaginalAccessory == "bullet vibrator">>
+					and the bullet vibrator $he is wearing successfully @@.green;suppress $his attraction to guys@@ by making $his private parts very uncomfortable when $he's around them.
+					<<set $slaves[$i].attrXY -= Math.clamp($slaves[$i].attrXY-(6+$assistant+$assistant),0,100)>>
+					<<if $slaves[$i].energy > 0>>
+						This has the secondary effect of slightly @@.red;reducing $his libido.@@
+						<<set $slaves[$i].energy -= 2>>
+					<</if>>
+				<<elseif $slaves[$i].vaginalAttachment == "vibrator">>
+					and the vibrating dildo in $his pussy successfully @@.green;suppress $his attraction to guys@@ by making $his private parts very uncomfortable when $he's around them.
+					<<set $slaves[$i].attrXY -= Math.clamp($slaves[$i].attrXY-(6+$assistant+$assistant),0,100)>>
+					<<if $slaves[$i].energy > 0>>
+						This has the secondary effect of slightly @@.red;reducing $his libido.@@
+						<<set $slaves[$i].energy -= 2>>
+					<</if>>
+				<<else>>
+					successfully @@.green;suppresses $his attraction to guys@@ by making $his private parts very uncomfortable when $he's around them.
+					<<set $slaves[$i].attrXY -= Math.clamp($slaves[$i].attrXY-(4+$assistant+$assistant),0,100)>>
+					<<if $slaves[$i].energy > 0>>
+						This has the secondary effect of slightly @@.red;reducing $his libido.@@
+						<<set $slaves[$i].energy-->>
+					<</if>>
 				<</if>>
 			<</if>>
 		<<case "vanilla">>
 			<<if ($slaves[$i].fetish != "none") && (_fetishChangeChance > random(0,100)-20*$assistant)>>
-				After $his smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing encourages many orgasms during straightforward sex, @@.coral;$his sexuality returns to normal.@@
-				<<set $slaves[$i].fetish = "none", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 10>>
+				After $his smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing
+				<<if $slaves[$i].vaginalAccessory == "bullet vibrator">>
+					and the bullet vibrator $he is wearing encourage many orgasms during straightforward sex, @@.coral;$his sexuality returns to normal.@@
+					<<set $slaves[$i].fetish = "none", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 15>>
+				<<elseif $slaves[$i].vaginalAttachment == "vibrator">>
+					and the vibrating dildo in $his pussy encourage many orgasms during straightforward sex, @@.coral;$his sexuality returns to normal.@@
+					<<set $slaves[$i].fetish = "none", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 15>>
+				<<else>>
+					encourages many orgasms during straightforward sex, @@.coral;$his sexuality returns to normal.@@
+					<<set $slaves[$i].fetish = "none", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 10>>
+				<</if>>
 			<</if>>
 		<<case "oral">>
 			<<if ($slaves[$i].fetish != "cumslut")>>
 				<<if $slaves[$i].fetishStrength >= 10>>
-					$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> acts to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $he's using $his mouth.
-					<<set $slaves[$i].fetishStrength -= 20>>
+					$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>>
+					<<if $slaves[$i].vaginalAccessory == "bullet vibrator">>
+						and the bullet vibrator $he is wearing act to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $he's using $his mouth.
+						<<set $slaves[$i].fetishStrength -= 30>>
+					<<elseif $slaves[$i].vaginalAttachment == "vibrator">>
+						and the vibrating dildo in $his pussy act to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $he's using $his mouth.
+						<<set $slaves[$i].fetishStrength -= 30>>
+					<<else>>
+						acts to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $he's using $his mouth.
+						<<set $slaves[$i].fetishStrength -= 20>>
+					<</if>>
 				<<elseif (_fetishChangeChance > random(0,100)-20*$assistant)>>
-					After $his smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing encourages many orgasms as $he performs oral sex, @@.lightcoral;$he develops a fetish for cum.@@
-					<<set $slaves[$i].fetish = "cumslut", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 10>>
+					After $his smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing
+					<<if $slaves[$i].vaginalAccessory == "bullet vibrator">>
+						and the bullet vibrator $he is wearing encourage many orgasms as $he performs oral sex, @@.lightcoral;$he develops a fetish for cum.@@
+						<<set $slaves[$i].fetish = "cumslut", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 15>>
+					<<elseif $slaves[$i].vaginalAttachment == "vibrator">>
+						and the vibrating dildo in $his pussy encourage many orgasms as $he performs oral sex, @@.lightcoral;$he develops a fetish for cum.@@
+						<<set $slaves[$i].fetish = "cumslut", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 15>>
+					<<else>>
+						encourages many orgasms as $he performs oral sex, @@.lightcoral;$he develops a fetish for cum.@@
+						<<set $slaves[$i].fetish = "cumslut", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 10>>
+					<</if>>
 				<</if>>
 			<<elseif ($slaves[$i].fetishStrength <= 95)>>
-				$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing @@.lightcoral;advances $his oral fetish.@@
-				<<set $slaves[$i].fetishStrength += 4>>
+				$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing
+				<<if $slaves[$i].vaginalAccessory == "bullet vibrator">>
+					and the bullet vibrator $he is wearing @@.lightcoral;advance $his oral fetish.@@
+					<<set $slaves[$i].fetishStrength += 6>>
+				<<elseif $slaves[$i].vaginalAttachment == "vibrator">>
+					and the vibrating dildo in $his pussy @@.lightcoral;advance $his oral fetish.@@
+					<<set $slaves[$i].fetishStrength += 6>>
+				<<else>>
+					@@.lightcoral;advances $his oral fetish.@@
+					<<set $slaves[$i].fetishStrength += 4>>
+				<</if>>
 			<</if>>
 		<<case "anal">>
 			<<if ($slaves[$i].fetish != "buttslut")>>
 				<<if $slaves[$i].fetishStrength >= 10>>
-					$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> acts to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $his rear hole is being fucked.
-					<<set $slaves[$i].fetishStrength -= 20>>
+					$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>>
+					<<if $slaves[$i].vaginalAccessory == "bullet vibrator">>
+						and the bullet vibrator $he is wearing act to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $his rear hole is being fucked.
+						<<set $slaves[$i].fetishStrength -= 30>>
+					<<elseif $slaves[$i].vaginalAttachment == "vibrator">>
+						and the vibrating dildo in $his pussy act to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $his rear hole is being fucked.
+						<<set $slaves[$i].fetishStrength -= 30>>
+					<<else>>
+						acts to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $his rear hole is being fucked.
+						<<set $slaves[$i].fetishStrength -= 20>>
+					<</if>>
 				<<elseif (_fetishChangeChance > random(0,100)-20*$assistant)>>
-					After $his smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing encourages many orgasms when $his ass is being stimulated, @@.lightcoral;$he develops a fetish for being an anal bottom.@@
-					<<set $slaves[$i].fetish = "buttslut", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 10>>
+					After $his smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing
+					<<if $slaves[$i].vaginalAccessory == "bullet vibrator">>
+						and the bullet vibrator $he is wearing encourage many orgasms when $his ass is being stimulated, @@.lightcoral;$he develops a fetish for being an anal bottom.@@
+						<<set $slaves[$i].fetish = "buttslut", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 15>>
+					<<elseif $slaves[$i].vaginalAttachment == "vibrator">>
+						and the vibrating dildo in $his pussy encourage many orgasms when $his ass is being stimulated, @@.lightcoral;$he develops a fetish for being an anal bottom.@@
+						<<set $slaves[$i].fetish = "buttslut", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 15>>
+					<<else>>
+						encourages many orgasms when $his ass is being stimulated, @@.lightcoral;$he develops a fetish for being an anal bottom.@@
+						<<set $slaves[$i].fetish = "buttslut", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 10>>
+					<</if>>
 				<</if>>
 			<<elseif ($slaves[$i].fetishStrength <= 95)>>
-				$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing @@.lightcoral;advances $his anal fetish.@@
-				<<set $slaves[$i].fetishStrength += 4>>
+				$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing
+				<<if $slaves[$i].vaginalAccessory == "bullet vibrator">>
+					and the bullet vibrator $he is wearing @@.lightcoral;advance $his anal fetish.@@
+					<<set $slaves[$i].fetishStrength += 6>>
+				<<elseif $slaves[$i].vaginalAttachment == "vibrator">>
+					and the vibrating dildo in $his pussy @@.lightcoral;advance $his anal fetish.@@
+					<<set $slaves[$i].fetishStrength += 6>>
+				<<else>>
+					@@.lightcoral;advances $his anal fetish.@@
+					<<set $slaves[$i].fetishStrength += 4>>
+				<</if>>
 			<</if>>
 		<<case "boobs">>
 			<<if ($slaves[$i].fetish != "boobs")>>
 				<<if $slaves[$i].fetishStrength >= 10>>
-					$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> acts to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $his tits are being touched.
-					<<set $slaves[$i].fetishStrength -= 20>>
+					$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>>
+					<<if $slaves[$i].vaginalAccessory == "bullet vibrator">>
+						and the bullet vibrator $he is wearing act to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $his tits are being touched.
+						<<set $slaves[$i].fetishStrength -= 30>>
+					<<elseif $slaves[$i].vaginalAttachment == "vibrator">>
+						and the vibrating dildo in $his pussy act to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $his tits are being touched.
+						<<set $slaves[$i].fetishStrength -= 30>>
+					<<else>>
+						acts to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $his tits are being touched.
+						<<set $slaves[$i].fetishStrength -= 20>>
+					<</if>>
 				<<elseif (_fetishChangeChance > random(0,100)-20*$assistant)>>
-					After $his smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing encourages many orgasms when $his nipples are being stimulated, @@.lightcoral;$he develops a fetish for $his tits.@@
-					<<set $slaves[$i].fetish = "boobs", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 10>>
+					After $his smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing
+					<<if $slaves[$i].vaginalAccessory == "bullet vibrator">>
+						and the bullet vibrator $he is wearing encourage many orgasms when $his nipples are being stimulated, @@.lightcoral;$he develops a fetish for $his tits.@@
+						<<set $slaves[$i].fetish = "boobs", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 15>>
+					<<elseif $slaves[$i].vaginalAttachment == "vibrator">>
+						and the vibrating dildo in $his pussy encourage many orgasms when $his nipples are being stimulated, @@.lightcoral;$he develops a fetish for $his tits.@@
+						<<set $slaves[$i].fetish = "boobs", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 15>>
+					<<else>>
+						encourages many orgasms when $his nipples are being stimulated, @@.lightcoral;$he develops a fetish for $his tits.@@
+						<<set $slaves[$i].fetish = "boobs", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 10>>
+					<</if>>
 				<</if>>
 			<<elseif ($slaves[$i].fetishStrength <= 95)>>
-				$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing @@.lightcoral;advances $his boob fetish.@@
-				<<set $slaves[$i].fetishStrength += 4>>
+				$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing
+				<<if $slaves[$i].vaginalAccessory == "bullet vibrator">>
+					and the bullet vibrator $he is wearing @@.lightcoral;advance $his boob fetish.@@
+					<<set $slaves[$i].fetishStrength += 6>>
+				<<elseif $slaves[$i].vaginalAttachment == "vibrator">>
+					and the vibrating dildo in $his pussy @@.lightcoral;advance $his boob fetish.@@
+					<<set $slaves[$i].fetishStrength += 6>>
+				<<else>>
+					@@.lightcoral;advance $his boob fetish.@@
+					<<set $slaves[$i].fetishStrength += 4>>
+				<</if>>
 			<</if>>
 		<<case "submissive">>
 			<<if ($slaves[$i].fetish != "submissive")>>
 				<<if $slaves[$i].fetishStrength >= 10>>
-					$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> acts to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $he's being held down and used.
-					<<set $slaves[$i].fetishStrength -= 20>>
+					$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>>
+					<<if $slaves[$i].vaginalAccessory == "bullet vibrator">>
+						and the bullet vibrator $he is wearing act to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $he's being held down and used.
+						<<set $slaves[$i].fetishStrength -= 30>>
+					<<elseif $slaves[$i].vaginalAttachment == "vibrator">>
+						and the vibrating dildo in $his pussy act to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $he's being held down and used.
+						<<set $slaves[$i].fetishStrength -= 30>>
+					<<else>>
+						acts to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $he's being held down and used.
+						<<set $slaves[$i].fetishStrength -= 20>>
+					<</if>>
 				<<elseif (_fetishChangeChance > random(0,100)-20*$assistant)>>
-					After $his smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing encourages many orgasms when $he is restrained, @@.lightcoral;$he develops a fetish for submission.@@
-					<<set $slaves[$i].fetish = "submissive", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 10>>
+					After $his smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing
+					<<if $slaves[$i].vaginalAccessory == "bullet vibrator">>
+						and the bullet vibrator $he is wearing encourage many orgasms when $he is restrained, @@.lightcoral;$he develops a fetish for submission.@@
+						<<set $slaves[$i].fetish = "submissive", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 15>>
+					<<elseif $slaves[$i].vaginalAttachment == "vibrator">>
+						and the vibrating dildo in $his pussy encourage many orgasms when $he is restrained, @@.lightcoral;$he develops a fetish for submission.@@
+						<<set $slaves[$i].fetish = "submissive", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 15>>
+					<<else>>
+						encourages many orgasms when $he is restrained, @@.lightcoral;$he develops a fetish for submission.@@
+						<<set $slaves[$i].fetish = "submissive", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 10>>
+					<</if>>
 				<</if>>
 			<<elseif ($slaves[$i].fetishStrength <= 95)>>
-				$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing @@.lightcoral;advances $his submission.@@
-				<<set $slaves[$i].fetishStrength += 4>>
+				$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing
+				<<if $slaves[$i].vaginalAccessory == "bullet vibrator">>
+					and the bullet vibrator $he is wearing @@.lightcoral;advance $his submission.@@
+					<<set $slaves[$i].fetishStrength += 6>>
+				<<elseif $slaves[$i].vaginalAttachment == "vibrator">>
+					and the vibrating dildo in $his pussy @@.lightcoral;advance $his submission.@@
+					<<set $slaves[$i].fetishStrength += 6>>
+				<<else>>
+					@@.lightcoral;advances $his submission.@@
+					<<set $slaves[$i].fetishStrength += 4>>
+				<</if>>
 			<</if>>
 		<<case "humiliation">>
 			<<if ($slaves[$i].fetish != "humiliation")>>
 				<<if $slaves[$i].fetishStrength >= 10>>
-					$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> acts to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $he's got an audience.
-					<<set $slaves[$i].fetishStrength -= 20>>
+					$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>>
+					<<if $slaves[$i].vaginalAccessory == "bullet vibrator">>
+						and the bullet vibrator $he is wearing act to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $he's got an audience.
+						<<set $slaves[$i].fetishStrength -= 30>>
+					<<elseif $slaves[$i].vaginalAttachment == "vibrator">>
+						and the vibrating dildo in $his pussy act to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $he's got an audience.
+						<<set $slaves[$i].fetishStrength -= 30>>
+					<<else>>
+						acts to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $he's got an audience.
+						<<set $slaves[$i].fetishStrength -= 20>>
+					<</if>>
 				<<elseif (_fetishChangeChance > random(0,100)-20*$assistant)>>
-					After $his smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing encourages many orgasms when $he is being humiliated, @@.lightcoral;$he develops a fetish for humiliation.@@
-					<<set $slaves[$i].fetish = "humiliation", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 10>>
+					After $his smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing
+					<<if $slaves[$i].vaginalAccessory == "bullet vibrator">>
+						and the bullet vibrator $he is wearing encourage many orgasms when $he is being humiliated, @@.lightcoral;$he develops a fetish for humiliation.@@
+						<<set $slaves[$i].fetish = "humiliation", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 15>>
+					<<elseif $slaves[$i].vaginalAttachment == "vibrator">>
+						and the vibrating dildo in $his pussy encourage many orgasms when $he is being humiliated, @@.lightcoral;$he develops a fetish for humiliation.@@
+						<<set $slaves[$i].fetish = "humiliation", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 15>>
+					<<else>>
+						encourages many orgasms when $he is being humiliated, @@.lightcoral;$he develops a fetish for humiliation.@@
+						<<set $slaves[$i].fetish = "humiliation", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 10>>
+					<</if>>
 				<</if>>
 			<<elseif ($slaves[$i].fetishStrength <= 95)>>
-				$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing @@.lightcoral;advances $his humiliation fetish.@@
-				<<set $slaves[$i].fetishStrength += 4>>
+				$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing
+				<<if $slaves[$i].vaginalAccessory == "bullet vibrator">>
+					and the bullet vibrator $he is wearing @@.lightcoral;advance $his humiliation fetish.@@
+					<<set $slaves[$i].fetishStrength += 6>>
+				<<elseif $slaves[$i].vaginalAttachment == "vibrator">>
+					and the vibrating dildo in $his pussy @@.lightcoral;advance $his humiliation fetish.@@
+					<<set $slaves[$i].fetishStrength += 6>>
+				<<else>>
+					@@.lightcoral;advance $his humiliation fetish.@@
+					<<set $slaves[$i].fetishStrength += 4>>
+				<</if>>
 			<</if>>
 		<<case "pregnancy">>
 			<<if ($slaves[$i].fetish != "pregnancy")>>
 				<<if $slaves[$i].fetishStrength >= 10>>
-					$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> acts to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $he feels like $he's being bred.
-					<<set $slaves[$i].fetishStrength -= 20>>
+					$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>>
+					<<if $slaves[$i].vaginalAccessory == "bullet vibrator">>
+						and the bullet vibrator $he is wearing act to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $he feels like $he's being bred.
+						<<set $slaves[$i].fetishStrength -= 30>>
+					<<elseif $slaves[$i].vaginalAttachment == "vibrator">>
+						and the vibrating dildo in $his pussy act to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $he feels like $he's being bred.
+						<<set $slaves[$i].fetishStrength -= 30>>
+					<<else>>
+						acts to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $he feels like $he's being bred.
+						<<set $slaves[$i].fetishStrength -= 20>>
+					<</if>>
 				<<elseif (_fetishChangeChance > random(0,100)-20*$assistant)>>
-					After $his smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing encourages many orgasms during <<if $PC.dick == 1>>unprotected sex<<if $PC.vagina == 1>> and <</if>><</if>><<if $PC.vagina == 1>>loving contact with the female anatomy<</if>>, @@.lightcoral;$he begins to fantasize about pregnancy.@@
-					<<set $slaves[$i].fetish = "pregnancy", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 10>>
+					After $his smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing
+					<<if $slaves[$i].vaginalAccessory == "bullet vibrator">>
+						and the bullet vibrator $he is wearing encourage many orgasms during <<if $PC.dick == 1>>unprotected sex<<if $PC.vagina == 1>> and <</if>><</if>><<if $PC.vagina == 1>>loving contact with the female anatomy<</if>>, @@.lightcoral;$he begins to fantasize about pregnancy.@@
+						<<set $slaves[$i].fetish = "pregnancy", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 15>>
+					<<elseif $slaves[$i].vaginalAttachment == "vibrator">>
+						and the vibrating dildo in $his pussy encourage many orgasms during <<if $PC.dick == 1>>unprotected sex<<if $PC.vagina == 1>> and <</if>><</if>><<if $PC.vagina == 1>>loving contact with the female anatomy<</if>>, @@.lightcoral;$he begins to fantasize about pregnancy.@@
+						<<set $slaves[$i].fetish = "pregnancy", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 15>>
+					<<else>>
+						encourages many orgasms during <<if $PC.dick == 1>>unprotected sex<<if $PC.vagina == 1>> and <</if>><</if>><<if $PC.vagina == 1>>loving contact with the female anatomy<</if>>, @@.lightcoral;$he begins to fantasize about pregnancy.@@
+						<<set $slaves[$i].fetish = "pregnancy", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 10>>
+					<</if>>
 				<</if>>
 			<<elseif ($slaves[$i].fetishStrength <= 95)>>
-				$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing @@.lightcoral;advances $his pregnancy fetish.@@
-				<<set $slaves[$i].fetishStrength += 4>>
+				$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing
+				<<if $slaves[$i].vaginalAccessory == "bullet vibrator">>
+					and the bullet vibrator $he is wearing @@.lightcoral;advance $his pregnancy fetish.@@
+					<<set $slaves[$i].fetishStrength += 6>>
+				<<elseif $slaves[$i].vaginalAttachment == "vibrator">>
+					and the vibrating dildo in $his pussy @@.lightcoral;advance $his pregnancy fetish.@@
+					<<set $slaves[$i].fetishStrength += 6>>
+				<<else>>
+					@@.lightcoral;advances $his pregnancy fetish.@@
+					<<set $slaves[$i].fetishStrength += 4>>
+				<</if>>
 			<</if>>
 		<<case "dom">>
 			<<if ($slaves[$i].fetish != "dom")>>
 				<<if $slaves[$i].fetishStrength >= 10>>
-					$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> acts to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when another slave is servicing $him.
-					<<set $slaves[$i].fetishStrength -= 20>>
+					$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>>
+					<<if $slaves[$i].vaginalAccessory == "bullet vibrator">>
+						and the bullet vibrator $he is wearing act to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when another slave is servicing $him.
+						<<set $slaves[$i].fetishStrength -= 30>>
+					<<elseif $slaves[$i].vaginalAttachment == "vibrator">>
+						and the vibrating dildo in $his pussy act to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when another slave is servicing $him.
+						<<set $slaves[$i].fetishStrength -= 30>>
+					<<else>>
+						acts to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when another slave is servicing $him.
+						<<set $slaves[$i].fetishStrength -= 20>>
+					<</if>>
 				<<elseif (_fetishChangeChance > random(0,100)-20*$assistant)>>
-					After $his smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing encourages many orgasms while $he's taking an active, dominant sexual role, @@.lightcoral;$he begins to enjoy dominance.@@
-					<<set $slaves[$i].fetish = "dom", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 10>>
+					After $his smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing
+					<<if $slaves[$i].vaginalAccessory == "bullet vibrator">>
+						and the bullet vibrator $he is wearing encourage many orgasms while $he's taking an active, dominant sexual role, @@.lightcoral;$he begins to enjoy dominance.@@
+						<<set $slaves[$i].fetish = "dom", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 15>>
+					<<elseif $slaves[$i].vaginalAttachment == "vibrator">>
+						and the vibrating dildo in $his pussy encourage many orgasms while $he's taking an active, dominant sexual role, @@.lightcoral;$he begins to enjoy dominance.@@
+						<<set $slaves[$i].fetish = "dom", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 15>>
+					<<else>>
+						encourages many orgasms while $he's taking an active, dominant sexual role, @@.lightcoral;$he begins to enjoy dominance.@@
+						<<set $slaves[$i].fetish = "dom", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 10>>
+					<</if>>
 				<</if>>
 			<<elseif ($slaves[$i].fetishStrength <= 95)>>
-				$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing @@.lightcoral;advances $his dominance.@@
-				<<set $slaves[$i].fetishStrength += 4>>
+				$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing
+				<<if $slaves[$i].vaginalAccessory == "bullet vibrator">>
+					and the bullet vibrator $he is wearing @@.lightcoral;advance $his dominance.@@
+					<<set $slaves[$i].fetishStrength += 6>>
+				<<elseif $slaves[$i].vaginalAttachment == "vibrator">>
+					and the vibrating dildo in $his pussy @@.lightcoral;advance $his dominance.@@
+					<<set $slaves[$i].fetishStrength += 6>>
+				<<else>>
+					@@.lightcoral;advances $his dominance.@@
+					<<set $slaves[$i].fetishStrength += 4>>
+				<</if>>
 			<</if>>
 		<<case "masochist">>
 			<<if ($slaves[$i].fetish != "masochist")>>
 				<<if $slaves[$i].fetishStrength >= 10>>
-					$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> acts to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $he's being hurt.
-					<<set $slaves[$i].fetishStrength -= 20>>
+					$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>>
+					<<if $slaves[$i].vaginalAccessory == "bullet vibrator">>
+						and the bullet vibrator $he is wearing act to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $he's being hurt.
+						<<set $slaves[$i].fetishStrength -= 30>>
+					<<elseif $slaves[$i].vaginalAttachment == "vibrator">>
+						and the vibrating dildo in $his pussy act to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $he's being hurt.
+						<<set $slaves[$i].fetishStrength -= 30>>
+					<<else>>
+						acts to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $he's being hurt.
+						<<set $slaves[$i].fetishStrength -= 20>>
+					<</if>>
 				<<elseif (_fetishChangeChance > random(0,100)-20*$assistant)>>
-					After $his smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing encourages many orgasms while $he's being beaten, @@.lightcoral;$he begins to enjoy pain.@@
-					<<set $slaves[$i].fetish = "masochist", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 10>>
+					After $his smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing
+					<<if $slaves[$i].vaginalAccessory == "bullet vibrator">>
+						and the bullet vibrator $he is wearing encourage many orgasms while $he's being beaten, @@.lightcoral;$he begins to enjoy pain.@@
+						<<set $slaves[$i].fetish = "masochist", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 15>>
+					<<elseif $slaves[$i].vaginalAttachment == "vibrator">>
+						and the vibrating dildo in $his pussy encourage many orgasms while $he's being beaten, @@.lightcoral;$he begins to enjoy pain.@@
+						<<set $slaves[$i].fetish = "masochist", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 15>>
+					<<else>>
+						encourages many orgasms while $he's being beaten, @@.lightcoral;$he begins to enjoy pain.@@
+						<<set $slaves[$i].fetish = "masochist", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 10>>
+					<</if>>
 				<</if>>
 			<<elseif ($slaves[$i].fetishStrength <= 95)>>
-				$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing @@.lightcoral;advances $his masochism.@@
-				<<set $slaves[$i].fetishStrength += 4>>
+				$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing
+				<<if $slaves[$i].vaginalAccessory == "bullet vibrator">>
+					and the bullet vibrator $he is wearing @@.lightcoral;advance $his masochism.@@
+					<<set $slaves[$i].fetishStrength += 6>>
+				<<elseif $slaves[$i].vaginalAttachment == "vibrator">>
+					and the vibrating dildo in $his pussy @@.lightcoral;advance $his masochism.@@
+					<<set $slaves[$i].fetishStrength += 6>>
+				<<else>>
+					@@.lightcoral;advances $his masochism.@@
+					<<set $slaves[$i].fetishStrength += 4>>
+				<</if>>
 			<</if>>
 		<<case "sadist">>
 			<<if ($slaves[$i].fetish != "sadist")>>
 				<<if $slaves[$i].fetishStrength >= 10>>
-					$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> acts to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $he witnesses or even takes part in another slave's pain.
-					<<set $slaves[$i].fetishStrength -= 20>>
+					$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>>
+					<<if $slaves[$i].vaginalAccessory == "bullet vibrator">>
+						and the bullet vibrator $he is wearing act to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $he witnesses or even takes part in another slave's pain.
+						<<set $slaves[$i].fetishStrength -= 30>>
+					<<elseif $slaves[$i].vaginalAttachment == "vibrator">>
+						and the vibrating dildo in $his pussy act to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $he witnesses or even takes part in another slave's pain.
+						<<set $slaves[$i].fetishStrength -= 30>>
+					<<else>>
+						acts to @@.coral;suppress $his current fetish,@@ encouraging $him to orgasm when $he witnesses or even takes part in another slave's pain.
+						<<set $slaves[$i].fetishStrength -= 20>>
+					<</if>>
 				<<elseif (_fetishChangeChance > random(0,100)-20*$assistant)>>
-					After $his smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing encourages many orgasms while $he's involved in the abuse of other slaves, @@.lightcoral;$he begins to develop a sadistic streak.@@
-					<<set $slaves[$i].fetish = "sadist", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 10>>
+					After $his smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing
+					<<if $slaves[$i].vaginalAccessory == "bullet vibrator">>
+						and the bullet vibrator $he is wearing encourage many orgasms while $he's involved in the abuse of other slaves, @@.lightcoral;$he begins to develop a sadistic streak.@@
+						<<set $slaves[$i].fetish = "sadist", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 15>>
+					<<elseif $slaves[$i].vaginalAttachment == "vibrator">>
+						and the vibrating dildo in $his pussy encourage many orgasms while $he's involved in the abuse of other slaves, @@.lightcoral;$he begins to develop a sadistic streak.@@
+						<<set $slaves[$i].fetish = "sadist", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 15>>
+					<<else>>
+						encourages many orgasms while $he's involved in the abuse of other slaves, @@.lightcoral;$he begins to develop a sadistic streak.@@
+						<<set $slaves[$i].fetish = "sadist", $slaves[$i].fetishKnown = 1, $slaves[$i].fetishStrength = 10>>
+					<</if>>
 				<</if>>
 			<<elseif ($slaves[$i].fetishStrength <= 95)>>
-				$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing @@.lightcoral;advances $his sadism.@@
-				<<set $slaves[$i].fetishStrength += 4>>
+				$His smart <<if $slaves[$i].vagina > -1>>clit<<else>>frenulum<</if>> piercing
+				<<if $slaves[$i].vaginalAccessory == "bullet vibrator">>
+					and the bullet vibrator $he is wearing @@.lightcoral;advance $his sadism.@@
+					<<set $slaves[$i].fetishStrength += 6>>
+				<<elseif $slaves[$i].vaginalAttachment == "vibrator">>
+					and the vibrating dildo in $his pussy @@.lightcoral;advance $his sadism.@@
+					<<set $slaves[$i].fetishStrength += 6>>
+				<<else>>
+					@@.lightcoral;advances $his sadism.@@
+					<<set $slaves[$i].fetishStrength += 4>>
+				<</if>>
 			<</if>>
 		<</switch>>
 	<</if>>
@@ -7616,7 +7964,7 @@
 	<</if>>
 <</if>>
 
-<<if ($slaves[$i].hStyle != "shaved" && $slaves[$i].bald != 1 && $slaves[$i].haircuts == 0)>>
+<<if (($slaves[$i].hStyle != "shaved" || $slaves[$i].hStyle != "buzzcut" || $slaves[$i].hStyle != "trimmed") && $slaves[$i].bald != 1 && $slaves[$i].haircuts == 0)>>
 	<<if ($slaves[$i].hLength < 150)>>
 		<<set $slaves[$i].hLength += 1>>
 	<</if>>
diff --git a/src/uncategorized/saRules.tw b/src/uncategorized/saRules.tw
index 1f0cf11768e22c39dededd481bfe9c0080cfad0d..d905cf89f02197e1d6d496dd5920b02113509f2d 100644
--- a/src/uncategorized/saRules.tw
+++ b/src/uncategorized/saRules.tw
@@ -173,7 +173,7 @@
 					<<set $slaves[$i].devotion += _rewards*2>>
 				<<case "orgasm">>
 					$He's @@.hotpink;rewarded@@ with
-					<<if $slaves[$i].clitPiercing >= 3>>
+					<<if $slaves[$i].clitPiercing == 3>>
 						sustained orgasm from $his <<if $slaves[$i].dick == 0>>clit<<else>>dick<</if>> piercing,
 					<<elseif $slaves[$i].releaseRules == "sapphic">>
 						immediate sex with any nearby slave,
@@ -481,7 +481,7 @@
 					<<set $slaves[$i].devotion += _rewards*2>>
 				<<case "orgasm">>
 					$He's @@.hotpink;rewarded@@ with
-					<<if $slaves[$i].clitPiercing >= 3>>
+					<<if $slaves[$i].clitPiercing == 3>>
 						sustained orgasm from $his <<if $slaves[$i].dick == 0>>clit<<else>>dick<</if>> piercing,
 					<<elseif $slaves[$i].releaseRules == "sapphic">>
 						immediate sex with any nearby slave,
@@ -666,7 +666,7 @@
 					<<set $slaves[$i].devotion += _rewards*2>>
 				<<case "orgasm">>
 					$He's @@.hotpink;rewarded@@ with
-					<<if $slaves[$i].clitPiercing >= 3>>
+					<<if $slaves[$i].clitPiercing == 3>>
 						sustained orgasm from $his <<if $slaves[$i].dick == 0>>clit<<else>>dick<</if>> piercing,
 					<<elseif $slaves[$i].releaseRules == "sapphic">>
 						immediate sex with any nearby slave,
@@ -946,7 +946,7 @@
 					<<set $slaves[$i].devotion += _rewards*2>>
 				<<case "orgasm">>
 					$He's @@.hotpink;rewarded@@ with
-					<<if $slaves[$i].clitPiercing >= 3>>
+					<<if $slaves[$i].clitPiercing == 3>>
 						sustained orgasm from $his <<if $slaves[$i].dick == 0>>clit<<else>>dick<</if>> piercing, often on stage during a dance,
 					<<elseif $slaves[$i].releaseRules == "sapphic">>
 						immediate sex with any nearby slave,
@@ -1124,7 +1124,7 @@
 					<<set $slaves[$i].devotion += _rewards*2>>
 				<<case "orgasm">>
 					$He's @@.hotpink;rewarded@@ with
-					<<if $slaves[$i].clitPiercing >= 3>>
+					<<if $slaves[$i].clitPiercing == 3>>
 						sustained orgasm from $his <<if $slaves[$i].dick == 0>>clit<<else>>dick<</if>> piercing,
 					<<else>>
 						a quick climax from a vibrator,
@@ -1363,7 +1363,7 @@
 					<<set $slaves[$i].devotion += _rewards*2>>
 				<<case "orgasm">>
 					$He's @@.hotpink;rewarded@@ with
-					<<if $slaves[$i].clitPiercing >= 3>>
+					<<if $slaves[$i].clitPiercing == 3>>
 						sustained orgasm from $his <<if $slaves[$i].dick == 0>>clit<<else>>dick<</if>> piercing,
 					<<elseif $slaves[$i].releaseRules == "sapphic">>
 						immediate sex with any nearby slave,
@@ -1487,7 +1487,7 @@
 					<<set $slaves[$i].devotion += _rewards*2>>
 				<<case "orgasm">>
 					$He's @@.hotpink;rewarded@@ with
-					<<if $slaves[$i].clitPiercing >= 3>>
+					<<if $slaves[$i].clitPiercing == 3>>
 						sustained orgasm from $his <<if $slaves[$i].dick == 0>>clit<<else>>dick<</if>> piercing,
 					<<elseif $slaves[$i].releaseRules == "sapphic">>
 						immediate sex with any nearby slave,
@@ -1784,7 +1784,7 @@
 					<<set $slaves[$i].devotion += _rewards*2>>
 				<<case "orgasm">>
 					$He's @@.hotpink;rewarded@@ with
-					<<if $slaves[$i].clitPiercing >= 3>>
+					<<if $slaves[$i].clitPiercing == 3>>
 						sustained orgasm from $his <<if $slaves[$i].dick == 0>>clit<<else>>dick<</if>> piercing,
 					<<elseif $slaves[$i].releaseRules == "sapphic">>
 						immediate sex with any nearby slave,
@@ -2108,7 +2108,7 @@
 					<<set $slaves[$i].devotion += _rewards*2>>
 				<<case "orgasm">>
 					$He's @@.hotpink;rewarded@@ with
-					<<if $slaves[$i].clitPiercing >= 3>>
+					<<if $slaves[$i].clitPiercing == 3>>
 						sustained orgasm from $his <<if $slaves[$i].dick == 0>>clit<<else>>dick<</if>> piercing,
 					<<elseif $slaves[$i].releaseRules == "sapphic">>
 						immediate sex with any nearby slave,
@@ -2281,7 +2281,7 @@
 					<<set $slaves[$i].devotion += _rewards*2>>
 				<<case "orgasm">>
 					$He's @@.hotpink;rewarded@@ with
-					<<if $slaves[$i].clitPiercing >= 3>>
+					<<if $slaves[$i].clitPiercing == 3>>
 						sustained orgasm from $his <<if $slaves[$i].dick == 0>>clit<<else>>dick<</if>> piercing,
 					<<elseif $slaves[$i].releaseRules == "sapphic">>
 						immediate sex with any nearby slave,
@@ -2610,7 +2610,7 @@
 					<<set $slaves[$i].devotion += _rewards*2>>
 				<<case "orgasm">>
 					$He's @@.hotpink;rewarded@@ with
-					<<if $slaves[$i].clitPiercing >= 3>>
+					<<if $slaves[$i].clitPiercing == 3>>
 						sustained orgasm from $his <<if $slaves[$i].dick == 0>>clit<<else>>dick<</if>> piercing,
 					<<elseif $slaves[$i].releaseRules == "sapphic">>
 						immediate sex with any nearby slave,
@@ -2799,7 +2799,7 @@
 					<<set $slaves[$i].devotion += _rewards*2>>
 				<<case "orgasm">>
 					$He's @@.hotpink;rewarded@@ with
-					<<if $slaves[$i].clitPiercing >= 3>>
+					<<if $slaves[$i].clitPiercing == 3>>
 						sustained orgasm from $his <<if $slaves[$i].dick == 0>>clit<<else>>dick<</if>> piercing,
 					<<elseif $slaves[$i].releaseRules == "sapphic">>
 						immediate sex with any nearby slave,
@@ -3110,7 +3110,7 @@
 					<<set $slaves[$i].devotion += _rewards*2>>
 				<<case "orgasm">>
 					$He's @@.hotpink;rewarded@@ with
-					<<if $slaves[$i].clitPiercing >= 3>>
+					<<if $slaves[$i].clitPiercing == 3>>
 						sustained orgasm from $his <<if $slaves[$i].dick == 0>>clit<<else>>dick<</if>> piercing,
 					<<elseif $slaves[$i].releaseRules == "sapphic">>
 						immediate sex with any nearby slave,
@@ -3288,7 +3288,7 @@
 					<<set $slaves[$i].devotion += _rewards*2>>
 				<<case "orgasm">>
 					$He's @@.hotpink;rewarded@@ with
-					<<if $slaves[$i].clitPiercing >= 3>>
+					<<if $slaves[$i].clitPiercing == 3>>
 						sustained orgasm from $his <<if $slaves[$i].dick == 0>>clit<<else>>dick<</if>> piercing,
 					<<elseif $slaves[$i].releaseRules == "sapphic">>
 						immediate sex with any nearby slave,
@@ -3601,7 +3601,7 @@
 					<<set $slaves[$i].devotion += _rewards*2>>
 				<<case "orgasm">>
 					$He's @@.hotpink;rewarded@@ with
-					<<if $slaves[$i].clitPiercing >= 3>>
+					<<if $slaves[$i].clitPiercing == 3>>
 						sustained orgasm from $his <<if $slaves[$i].dick == 0>>clit<<else>>dick<</if>> piercing,
 					<<elseif $slaves[$i].releaseRules == "sapphic">>
 						immediate sex with any nearby slave,
@@ -3774,7 +3774,7 @@
 					<<set $slaves[$i].devotion += _rewards*2>>
 				<<case "orgasm">>
 					$He's @@.hotpink;rewarded@@ with
-					<<if $slaves[$i].clitPiercing >= 3>>
+					<<if $slaves[$i].clitPiercing == 3>>
 						sustained orgasm from $his <<if $slaves[$i].dick == 0>>clit<<else>>dick<</if>> piercing,
 					<<elseif $slaves[$i].releaseRules == "sapphic">>
 						immediate sex with any nearby slave,
@@ -4150,7 +4150,7 @@
 						<<set $slaves[$i].devotion += _rewards*2>>
 					<<case "orgasm">>
 						$He's @@.hotpink;rewarded@@ with
-						<<if $slaves[$i].clitPiercing >= 3>>
+						<<if $slaves[$i].clitPiercing == 3>>
 							sustained orgasm from $his <<if $slaves[$i].dick == 0>>clit<<else>>dick<</if>> piercing,
 						<<elseif $slaves[$i].releaseRules == "sapphic">>
 							immediate sex with any nearby slave,
@@ -4324,7 +4324,7 @@
 					<<set $slaves[$i].devotion += _rewards*2>>
 				<<case "orgasm">>
 					$He's @@.hotpink;rewarded@@ with
-					<<if $slaves[$i].clitPiercing >= 3>>
+					<<if $slaves[$i].clitPiercing == 3>>
 						sustained orgasm from $his <<if $slaves[$i].dick == 0>>clit<<else>>dick<</if>> piercing,
 					<<elseif $slaves[$i].releaseRules == "sapphic">>
 						immediate sex with any nearby slave,
@@ -4682,7 +4682,7 @@
 					<<set $slaves[$i].devotion += _rewards*2>>
 				<<case "orgasm">>
 					$He's @@.hotpink;rewarded@@ with
-					<<if $slaves[$i].clitPiercing >= 3>>
+					<<if $slaves[$i].clitPiercing == 3>>
 						sustained orgasm from $his <<if $slaves[$i].dick == 0>>clit<<else>>dick<</if>> piercing,
 					<<elseif $slaves[$i].releaseRules == "sapphic">>
 						immediate sex with any nearby slave,
@@ -4773,7 +4773,7 @@
 					<<set $slaves[$i].devotion += _rewards*2>>
 				<<case "orgasm">>
 					$He's @@.hotpink;rewarded@@ with
-					<<if $slaves[$i].clitPiercing >= 3>>
+					<<if $slaves[$i].clitPiercing == 3>>
 						sustained orgasm from $his <<if $slaves[$i].dick == 0>>clit<<else>>dick<</if>> piercing,
 					<<else>>
 						immediate sex with you,
@@ -4902,7 +4902,7 @@
 					<<set $slaves[$i].devotion += _rewards*2>>
 				<<case "orgasm">>
 					$He's @@.hotpink;rewarded@@ with
-					<<if $slaves[$i].clitPiercing >= 3>>
+					<<if $slaves[$i].clitPiercing == 3>>
 						sustained orgasm from $his <<if $slaves[$i].dick == 0>>clit<<else>>dick<</if>> piercing,
 					<<else>>
 						immediate sex with you,
@@ -5049,7 +5049,7 @@
 					<<set $slaves[$i].devotion += _rewards*2>>
 				<<case "orgasm">>
 					$He's @@.hotpink;rewarded@@ with
-					<<if $slaves[$i].clitPiercing >= 3>>
+					<<if $slaves[$i].clitPiercing == 3>>
 						sustained orgasm from $his <<if $slaves[$i].dick == 0>>clit<<else>>dick<</if>> piercing,
 					<<elseif $activeSlave.releaseRules == "sapphic">>
 						immediate sex with any nearby slave,
@@ -5431,7 +5431,7 @@
 					<<set $slaves[$i].devotion += _rewards*2>>
 				<<case "orgasm">>
 					$He's @@.hotpink;rewarded@@ with
-					<<if $slaves[$i].clitPiercing >= 3>>
+					<<if $slaves[$i].clitPiercing == 3>>
 						sustained orgasm from $his <<if $slaves[$i].dick == 0>>clit<<else>>dick<</if>> piercing,
 					<<elseif $slaves[$i].releaseRules == "sapphic">>
 						immediate sex with any nearby slave,
diff --git a/src/uncategorized/saServeThePublic.tw b/src/uncategorized/saServeThePublic.tw
index 9971ea05ca7a95c44915499319d536294b6f0409..de9dab8a4202e71ec78f1a2216d5c946808e74a7 100644
--- a/src/uncategorized/saServeThePublic.tw
+++ b/src/uncategorized/saServeThePublic.tw
@@ -830,9 +830,9 @@ $His appearance attracted $beauty members of the public (<<print Math.trunc($bea
 	A few of $his fans recognize $him and eagerly make use of $him.
 <</if>>
 
-<<if ($slaves[$i].clitPiercing > 2) && ($slaves[$i].devotion >= -20)>>
+<<if ($slaves[$i].clitPiercing == 3) && ($slaves[$i].devotion >= -20)>>
 	Almost everyone loves $his orgasms encouraged by $his smart piercing.
-<<elseif ($slaves[$i].clitPiercing > 2)>>
+<<elseif ($slaves[$i].clitPiercing == 3)>>
 	Almost everyone appreciates $his reduced reluctance caused by $his smart piercing.
 <</if>>
 
diff --git a/src/uncategorized/saWhore.tw b/src/uncategorized/saWhore.tw
index 75cc0e9771affd85c1521cf2cedf5ec325e000d8..19ad644826b6c9b4e6221abb8fbe96bae72cc7e9 100644
--- a/src/uncategorized/saWhore.tw
+++ b/src/uncategorized/saWhore.tw
@@ -745,9 +745,9 @@ $His appearance attracted $beauty customers (<<print Math.trunc($beauty/7)>> a d
 	<</if>>
 <</if>>
 
-<<if ($slaves[$i].clitPiercing > 2) && ($slaves[$i].devotion >= -20)>>
+<<if ($slaves[$i].clitPiercing == 3) && ($slaves[$i].devotion >= -20)>>
 	Almost everyone loves $his enthusiasm for sex encouraged by $his smart piercing.
-<<elseif ($slaves[$i].clitPiercing > 2)>>
+<<elseif ($slaves[$i].clitPiercing == 3)>>
 	Almost everyone appreciates $his reduced reluctance towards sex encouraged by $his smart piercing.
 <</if>>
 
diff --git a/src/uncategorized/scheduledEvent.tw b/src/uncategorized/scheduledEvent.tw
index 385177ae8ff85c1d643aab57bee5bb996b020bf3..6d9c95ec11bb3e296d5f22be7db86a9630caac5b 100644
--- a/src/uncategorized/scheduledEvent.tw
+++ b/src/uncategorized/scheduledEvent.tw
@@ -18,46 +18,46 @@
 	<<set $activeSlave = getSlave($retiree), $retiree = 0>>
 	<<include "Remove activeSlave">>
 	<<for $i = 0; $i < $slaves.length; $i++>>
-	<<if $slaves[$i].indenture < 0>>
-	<<if $slaves[$i].actualAge >= $retirementAge && $PhysicalRetirementAgePolicy != 1>>
-		<<set $retiree = $slaves[$i].ID>>
-		<<break>>
-	<</if>>
-	<<if $slaves[$i].physicalAge >= $retirementAge && $PhysicalRetirementAgePolicy == 1>>
-		<<set $retiree = $slaves[$i].ID>>
-		<<break>>
-	<</if>>
-	<<if $SexMilestoneRetirement == 1>>
-		<<if $slaves[$i].oralCount + $slaves[$i].analCount + $slaves[$i].vaginalCount + $slaves[$i].penetrativeCount + $slaves[$i].mammaryCount >= $retirementSex>>
-			<<set $retiree = $slaves[$i].ID>>
-			<<break>>
-		<</if>>
-	<</if>>
-	<<if $MilkMilestoneRetirement == 1>>
-		<<if $slaves[$i].milk >= $retirementMilk>>
-			<<set $retiree = $slaves[$i].ID>>
-			<<break>>
+		<<if $slaves[$i].indenture < 0>>
+			<<if $slaves[$i].actualAge >= $retirementAge && $PhysicalRetirementAgePolicy != 1>>
+				<<set $retiree = $slaves[$i].ID>>
+				<<break>>
+			<</if>>
+			<<if $slaves[$i].physicalAge >= $retirementAge && $PhysicalRetirementAgePolicy == 1>>
+				<<set $retiree = $slaves[$i].ID>>
+				<<break>>
+			<</if>>
+			<<if $SexMilestoneRetirement == 1>>
+				<<if $slaves[$i].oralCount + $slaves[$i].analCount + $slaves[$i].vaginalCount + $slaves[$i].penetrativeCount + $slaves[$i].mammaryCount >= $retirementSex>>
+					<<set $retiree = $slaves[$i].ID>>
+					<<break>>
+				<</if>>
+			<</if>>
+			<<if $MilkMilestoneRetirement == 1>>
+				<<if $slaves[$i].milk >= $retirementMilk>>
+					<<set $retiree = $slaves[$i].ID>>
+					<<break>>
+				<</if>>
+			<</if>>
+			<<if $CumMilestoneRetirement == 1>>
+				<<if $slaves[$i].cum >= $retirementCum>>
+					<<set $retiree = $slaves[$i].ID>>
+					<<break>>
+				<</if>>
+			<</if>>
+			<<if $BirthsMilestoneRetirement == 1>>
+				<<if $slaves[$i].births >= $retirementBirths>>
+					<<set $retiree = $slaves[$i].ID>>
+					<<break>>
+				<</if>>
+			<</if>>
+			<<if $KillsMilestoneRetirement == 1>>
+				<<if $slaves[$i].pitKills >= $retirementKills>>
+					<<set $retiree = $slaves[$i].ID>>
+					<<break>>
+				<</if>>
+			<</if>>
 		<</if>>
-	<</if>>
-	<<if $CumMilestoneRetirement == 1>>
-		<<if $slaves[$i].cum >= $retirementCum>>
-			<<set $retiree = $slaves[$i].ID>>
-			<<break>>
-		<</if>>
-	<</if>>
-	<<if $BirthsMilestoneRetirement == 1>>
-		<<if $slaves[$i].births >= $retirementBirths>>
-			<<set $retiree = $slaves[$i].ID>>
-			<<break>>
-		<</if>>
-	<</if>>
-	<<if $KillsMilestoneRetirement == 1>>
-		<<if $slaves[$i].pitKills >= $retirementKills>>
-			<<set $retiree = $slaves[$i].ID>>
-			<<break>>
-		<</if>>
-	<</if>>
-	<</if>>
 	<</for>>
 <</if>>
 <<set $retired = 0>>
@@ -74,6 +74,9 @@
 <</if>>
 <<set $burst = 0>>
 
+<<if $TFS.schoolUpgrade == 3 && $TFS.compromiseWeek == $week-1>>
+	<<set $fcnn.push("...Ladies: Do you want dick so much that you want to HAVE a dick? If yes, join the Futanari Sisters today! Learn more at...")>>
+<</if>>
 <<if $week == 30>>
 	<<set $fcnn.push("...is where I'll be when the bombs hit. Survival is my first...")>>
 	<<set $fcnn.push("...time to prepare for major shortages is now, since there's no likelihood...")>>
@@ -102,9 +105,6 @@
 <<elseif $week == 90>>
 	<<set $fcnn = ["FCNN service has been temporarily suspended. Please stand by."]>>
 <</if>>
-<<if $TFS.schoolUpgrade == 3 && $week < 90 && $TFS.compromiseWeek == $week-1>>
-	<<set $fcnn.push("...Ladies: Do you want dick so much that you want to HAVE a dick? If yes, join the Futanari Sisters today! Learn more at...")>>
-<</if>>
 
 <<if $secExp == 1>>
 	<<include "attackGenerator">>
diff --git a/src/uncategorized/seCoursing.tw b/src/uncategorized/seCoursing.tw
index a0c2fc1bd9542b73bde1ee9394572ea24a14a71f..e7a6ede6040706635d299ec35f6de1ba3dfabb3a 100644
--- a/src/uncategorized/seCoursing.tw
+++ b/src/uncategorized/seCoursing.tw
@@ -65,7 +65,7 @@ You lead your lurcher $Lurcher.slaveName out on a leash, naked just like the har
 	<<set $phallus = "dildo">>
 <</if>>
 
-<<if canSee($Lurcher)>>$Lurcher.slaveName looks at you questioningly, wondering which of the hares $he should try to chase down and molest<<else>>$Lurcher.slaveName looks at you questioningly, wondering which of the dingling bells $he should try to chase down and molest<</if>>.
+<<if canSee($Lurcher)>>$Lurcher.slaveName looks at you questioningly, wondering which of the hares $he should try to chase down and molest<<else>>$Lurcher.slaveName looks at you questioningly, wondering which of the dinging bells $he should try to chase down and molest<</if>>.
 
 
 <<set $hare1 = 0, $hare2 = 0, $hare3 = 0>>
@@ -85,7 +85,7 @@ You lead your lurcher $Lurcher.slaveName out on a leash, naked just like the har
 	<<set _possibleOrigins.push("disobedient young dickgirl")>>
 <</if>>
 
-<style>  /* a table is used here because very short hare descriptions cause images to indent oddly if they are shown.  This ensures they are always directly below each other. */
+<style>  /* a table is used here because very short hare descriptions cause images to indent oddly if they are shown. This ensures they are always directly below each other. */
 	table.coursing {
 		border-style: hidden;
 		empty-cells: hide;
diff --git a/src/uncategorized/sellSlave.tw b/src/uncategorized/sellSlave.tw
index c6184084657ab2545f0d93d3ca319f2a6a6af44c..415f3ad2cbe5fdc9fe52f0c22bac3c28f2ce29ad 100644
--- a/src/uncategorized/sellSlave.tw
+++ b/src/uncategorized/sellSlave.tw
@@ -1847,7 +1847,7 @@ __Bids Received__
 				<<case "cum addicts">>
 					<<if $activeSlave.fetish == "cumslut" && $activeSlave.fetishStrength > 95 && $activeSlave.sexualFlaw == "cum addict">>
 						<br>''<<print cashFormat(500*Math.trunc(($slaveCost*1.2)/500))>>'' from the sex slave buyer for General $peacekeepers.generalName's client state, which prefers $peacekeepers.tastes.
-						<<link "Accept bid" "Slave Sold">><<set _Price = 500*Math.trunc(($slaveCost*1.2)/500), $buyer = "peacekeepers">><<run cashX(_Price, "slaveTransfer" , $activeSlave)>><</link>>
+						<<link "Accept bid" "Slave Sold">><<set _Price = 500*Math.trunc(($slaveCost*1.2)/500), $buyer = "peacekeepers">><<run cashX(_Price, "slaveTransfer", $activeSlave)>><</link>>
 					<</if>>
 				<<case "horny MILFs">>
 					<<if $activeSlave.physicalAge > 34 && $activeSlave.visualAge > 34 && $activeSlave.energy > 80>>
diff --git a/src/uncategorized/slaveInteract.tw b/src/uncategorized/slaveInteract.tw
index 16b1e2f094bed6c7ae128ce576efee17dc025a05..bf03e30befdaf82c7394279560eae99e0ce2c57e 100644
--- a/src/uncategorized/slaveInteract.tw
+++ b/src/uncategorized/slaveInteract.tw
@@ -1042,6 +1042,7 @@
 		<</if>>
 	<</if>>
 	<<if isItemAccessible("tail") && $activeSlave.buttplug != "none">>
+		<br>
 		&nbsp;&nbsp;&nbsp;&nbsp;Anal accessory attachment: ''<span id="buttplugAttach">$activeSlave.buttplugAttachment</span>.''
 		<<link "None">><<set $activeSlave.buttplugAttachment = "none">><<replace "#buttplugAttach">>$activeSlave.buttplugAttachment<</replace>><</link>>
 		<<if $toysBoughtButtPlugTails == 1>>
@@ -1054,6 +1055,7 @@
 	<<if $activeSlave.vagina > -1>>
 		<br>Vaginal accessory: ''<span id="vaginalAccessory">$activeSlave.vaginalAccessory</span>.''
 		<<link "None">><<set $activeSlave.vaginalAccessory = "none">><<replace "#vaginalAccessory">>$activeSlave.vaginalAccessory<</replace>><<SlaveInteractImpreg>><<SlaveInteractFertility>><<SlaveInteractSexOption>><<SlaveInteractAnalSexOption>><<SlaveInteractGropeOption>><<SlaveInteractDickGropeOption>><<SlaveInteractAnalGropeOption>><</link>>
+		| <<link "Bullet vibrator">><<set $activeSlave.vaginalAccessory = "bullet vibrator">><<replace "#vaginalAccessory">>$activeSlave.vaginalAccessory<</replace>><</link>>
 		| <<link "Dildo">><<set $activeSlave.vaginalAccessory = "dildo">><<replace "#vaginalAccessory">>$activeSlave.vaginalAccessory<</replace>><</link>>
 		<<if isItemAccessible("long dildo") && ($activeSlave.breedingMark != 1 || $propOutcome == 0)>>
 			| <<link "Long dildo">><<set $activeSlave.vaginalAccessory = "long dildo">><<replace "#vaginalAccessory">>$activeSlave.vaginalAccessory<</replace>><</link>>
@@ -1068,6 +1070,19 @@
 				| <<link "Huge and long dildo">><<set $activeSlave.vaginalAccessory = "long, huge dildo">><<replace "#vaginalAccessory">>$activeSlave.vaginalAccessory<</replace>><</link>>
 			<</if>>
 		<</if>>
+		<<if isItemAccessible("vibrator")>>
+			<br>
+			<<if $activeSlave.vaginalAccessory != "none">>
+				&nbsp;&nbsp;&nbsp;&nbsp;Vaginal accessory attachment:
+			<<else>>
+				&nbsp;&nbsp;&nbsp;&nbsp;Vaginal attachment:
+			<</if>>
+			''<span id="vaginalAttachment">$activeSlave.vaginalAttachment</span>.''
+			<<link "None">><<set $activeSlave.vaginalAttachment = "none">><<replace "#vaginalAttachment">>$activeSlave.vaginalAttachment<</replace>><</link>>
+			<<if $toysBoughtVaginalAttachments == 1>>
+				| <<link "Vibrating dildo">><<set $activeSlave.vaginalAttachment = "vibrator">><<replace "#vaginalAttachment">>$activeSlave.vaginalAttachment<</replace>><</link>>
+			<</if>>
+		<</if>>
 	<</if>>
 
 	<<if $activeSlave.dick > 0>>
diff --git a/src/uncategorized/slaveStats.tw b/src/uncategorized/slaveStats.tw
index 85e00ee250b9940225ccbb515e6ea6be924a1f81..70ea971fc5a2c9974dae73783208934f0590a7bc 100644
--- a/src/uncategorized/slaveStats.tw
+++ b/src/uncategorized/slaveStats.tw
@@ -250,6 +250,7 @@ slaveName: $activeSlave.slaveName	   /* TODO: figure out why this is being inden
 <br>collar: $activeSlave.collar
 <br>shoes: $activeSlave.shoes
 <br>vaginalAccessory: $activeSlave.vaginalAccessory
+<br>vaginalAttachment: $activeSlave.vaginalAttachment
 <br>dickAccessory: $activeSlave.dickAccessory
 <br>legAccessory: $activeSlave.legAccessory
 <br>buttplug: $activeSlave.buttplug
diff --git a/src/uncategorized/surgeryDegradation.tw b/src/uncategorized/surgeryDegradation.tw
index e7aeb004af56e34ca7e3f2469805cb0434070bd0..3f89746d099b6c779932d8008291d5ec32baaf68 100644
--- a/src/uncategorized/surgeryDegradation.tw
+++ b/src/uncategorized/surgeryDegradation.tw
@@ -1565,7 +1565,7 @@ As the remote surgery's long recovery cycle completes,
 	<</if>>
 	Naturally, @@.red;$his health has been greatly affected@@ by such serious surgery.
 	<<set $activeSlave.chastityVagina = 0>>
-	<<set $activeSlave.vaginalAccessory = "none">>
+	<<set $activeSlave.vaginalAccessory = "none", $activeSlave.vaginalAttachment = "none">>
 	<<if $activeSlave.cervixImplant == 1>>
 		<<set $activeSlave.cervixImplant = 0>>
 	<<elseif $activeSlave.cervixImplant == 3>>
diff --git a/src/uncategorized/walkPast.tw b/src/uncategorized/walkPast.tw
index 5c8f4312b09ef455edee2d65a802a1576f202730..3e153476a6e670abc89f1d25f81a911d34713e8a 100644
--- a/src/uncategorized/walkPast.tw
+++ b/src/uncategorized/walkPast.tw
@@ -1512,12 +1512,12 @@
 			<</if>>
 		<</switch>>
 		<<if ($activeSlave.vaginalAccessory == "long dildo") || ($activeSlave.vaginalAccessory == "long, large dildo") || ($activeSlave.vaginalAccessory == "long, huge dildo")>>
-			With every motion $he makes; $his dildo shifts, bulging out $his stomach.
+			With every motion $he makes, $his dildo shifts, bulging out $his stomach.
 			<<if ($activeSlave.buttPlug == "long plug") || ($activeSlave.buttPlug == "long, large plug") || ($activeSlave.buttPlug == "long, huge plug")>>
 				Beside it, a second bulge caused by $his extra long buttplug.
 			<</if>>
 		<<elseif ($activeSlave.buttPlug == "long plug") || ($activeSlave.buttPlug == "long, large plug") || ($activeSlave.buttPlug == "long, huge plug")>>
-			With every motion $he makes; $his buttplug shifts, bulging out $his stomach.
+			With every motion $he makes, $his buttplug shifts, bulging out $his stomach.
 		<</if>>
 	<</if>>
 	<<else>> /* implant descs */
diff --git a/src/uncategorized/wardrobe.tw b/src/uncategorized/wardrobe.tw
index 3fa1244f011f541ab4920bcc561755c6be3c0a15..71f666c603b1092a0187e650d936867d766ae003 100644
--- a/src/uncategorized/wardrobe.tw
+++ b/src/uncategorized/wardrobe.tw
@@ -14,7 +14,7 @@ The room containing all the clothes and accessories you have available to dress
 <</if>>
 <<if $toysBoughtDildos == 1 && $toysBoughtGags == 1 && $toysBoughtButtPlugs == 1>>
 	Sex toys of all kinds and shapes line the shelves.
-<<elseif $toysBoughtDildos == 1 || $toysBoughtGags == 1 || $toysBoughtButtPlugs == 1 || $toysBoughtButtPlugTails == 1>>
+<<elseif $toysBoughtDildos == 1 || $toysBoughtGags == 1 || $toysBoughtButtPlugs == 1 || $toysBoughtButtPlugTails == 1 || $toysBoughtVaginalAttachments == 1>>
 	Some sex toys line the shelves.
 <</if>>
 <<if $buckets == 1>>
@@ -275,6 +275,14 @@ The room containing all the clothes and accessories you have available to dress
 	You are well stocked with extra long dildos in a variety of sizes.
 <</if>>
 
+<br>
+<<if $toysBoughtVaginalAccessories == 0>>
+	[[Order a shipment of bullet vibes and vibrating dildos|Wardrobe][cashX(-10000, "capEx"), $toysBoughtVaginalAccessories = 1]]
+	//Costs <<print cashFormat(10000)>>//
+<<else>>
+	You are well stocked with bullet vibrators and vibrating dildos.
+<</if>>
+
 <br>
 <<if $toysBoughtButtPlugs == 0>>
 	[[Order a shipment of extra long buttplugs|Wardrobe][cashX(-10000, "capEx"), $toysBoughtButtPlugs = 1]]
diff --git a/src/uncategorized/wardrobeUse.tw b/src/uncategorized/wardrobeUse.tw
index 0bdca4851262cc9424927a1ae3692c635d37538e..5ebd2fe8eda8e94d2c1d6e21a95c22211e1134ec 100644
--- a/src/uncategorized/wardrobeUse.tw
+++ b/src/uncategorized/wardrobeUse.tw
@@ -1103,6 +1103,12 @@ Clothes: ''<span id="clothes">$activeSlave.clothes</span>.''
 		<<replace "#vaginalAccessoryDescription">>//<<vaginalAccessoryDescription>>//<</replace>>
 		<<replace "#buttplugDescription">>//<<buttplugDescription>>//<</replace>>
 	<</link>>
+	| <<link "Bullet vibrator">>
+		<<set $activeSlave.vaginalAccessory = "bullet vibrator">>
+		<<replace "#vaginalAccessory">>$activeSlave.vaginalAccessory<</replace>>
+		<<replace "#vaginalAccessoryDescription">>//<<vaginalAccessoryDescription>>//<</replace>>
+		<<replace "#buttplugDescription">>//<<buttplugDescription>>//<</replace>>
+	<</link>>
 	| <<link "Dildo">>
 		<<set $activeSlave.vaginalAccessory = "dildo">>
 		<<replace "#vaginalAccessory">>$activeSlave.vaginalAccessory<</replace>>
@@ -1147,6 +1153,29 @@ Clothes: ''<span id="clothes">$activeSlave.clothes</span>.''
 			<</link>>
 		<</if>>
 	<</if>>
+	<<if isItemAccessible("vibrator")>>
+		<br><br>
+		<<if $activeSlave.vaginalAccessory != "none">>
+			Vaginal accessory attachment:
+		<<else>>
+			Vaginal attachment:
+		<</if>>
+		''<span id="vaginalAttachment">$activeSlave.vaginalAttachment</span>.''
+		<span id="vaginalAttachmentDescription"><<if ($activeSlave.vaginalAttachment != "none")>><br><</if>>//<<vaginalAttachmentDescription>>//</span>
+		<br>
+		<<link "None">>
+			<<set $activeSlave.vaginalAttachment = "none">>
+			<<replace "#vaginalAttachment">>$activeSlave.vaginalAttachment<</replace>>
+			<<replace "#vaginalAttachmentDescription">>//<<vaginalAccessoryDescription>>//<</replace>>
+			<<replace "#buttplugDescription">>//<<buttplugDescription>>//<</replace>>	/* TODO: don't actually know if I need this - what is this for? */
+		<</link>>
+		| <<link "Vibrating dildo">>
+			<<set $activeSlave.vaginalAttachment = "vibrator">>
+			<<replace "#vaginalAttachment">>$activeSlave.vaginalAttachment<</replace>>
+			<<replace "#vaginalAttachmentDescription">>//<<vaginalAccessoryDescription>>//<</replace>>
+			<<replace "#buttplugDescription">>//<<buttplugDescription>>//<</replace>>
+		<</link>>
+	<</if>>
 <</if>>
 
 <<if $activeSlave.dick > 0>>
diff --git a/src/utility/descriptionWidgetsPiercings.tw b/src/utility/descriptionWidgetsPiercings.tw
index e8ce37f9618135373e0d30a7215618e2dfa6aec5..4b578189aaa8f2d617c7fe20ab01fb6328cf4976 100644
--- a/src/utility/descriptionWidgetsPiercings.tw
+++ b/src/utility/descriptionWidgetsPiercings.tw
@@ -287,7 +287,7 @@
 		<<if ($activeSlave.clothes == "slutty jewelry")>>
 			Since $he's wearing slutty bangles $he has a short length of light chain dangling from $his clit ring; it constantly stimulates $his pussylips.
 		<</if>>
-	<<elseif ($activeSlave.clitPiercing > 2) && ($activeSlave.vagina != -1) && ($activeSlave.dick == 0)>>
+	<<elseif ($activeSlave.clitPiercing == 3) && ($activeSlave.vagina != -1) && ($activeSlave.dick == 0)>>
 		$He has a smart piercing in $his clit.
 	<<elseif ($activeSlave.clitPiercing == 1)>>
 		$He has a simple dickhead stud.
@@ -296,7 +296,7 @@
 		<<if ($activeSlave.clothes == "slutty jewelry")>>
 			Since $he's wearing slutty bangles $he has a short length of light chain dangling from $his dickhead piercing; as $he moves it tugs lightly at $his cock.
 		<</if>>
-	<<elseif ($activeSlave.clitPiercing > 2)>>
+	<<elseif ($activeSlave.clitPiercing == 3)>>
 		$He has a smart frenulum piercing.
 	<</if>>
 	<<if $activeSlave.fuckdoll > 0>>It anchors the suit's material.<</if>>
diff --git a/src/utility/descriptionWidgetsStyle.tw b/src/utility/descriptionWidgetsStyle.tw
index 2b0b582edda330f37207b01447bd35e48c6a45e8..a8ebcadaece955fd3061f405872f1f5a79a5259b 100644
--- a/src/utility/descriptionWidgetsStyle.tw
+++ b/src/utility/descriptionWidgetsStyle.tw
@@ -5881,7 +5881,10 @@ $His
 	<</if>>
 <</if>>
 <<switch $activeSlave.vaginalAccessory>>
+<<case "bullet vibrator">>
+	/* TODO: write a description */
 <<case "dildo">>
+	/* TODO: these may need to be updated for slaves with gaping+ vaginas */
 	$His pussy is filled by a dildo held in place by a strap, which $he can remove for vaginal intercourse.
 <<case "long dildo">>
 	$His pussy is filled by a very long dildo held in place by a strap, which $he can remove for vaginal intercourse. It noticeably bulges $his stomach.
@@ -5914,6 +5917,15 @@ $His
 <</switch>>
 <</widget>>
 
+<<widget "vaginalAttachmentDescription">>
+<<switch $activeSlave.vaginalAttachment>>
+	/* TODO: not sure about this description */
+	$His pussy is filled with a vibrating dildo held in place by a strap, which $he can remove for vaginal intercourse. $He looks distinctly uncomfortable as it buzzes every so often.
+	/* TODO: add descriptions for slaves with gaping+ vaginas */
+<<case "vibrator">>
+<</switch>>
+<</widget>>
+
 <<widget "dickAccessoryDescription">>
 	<<if ($activeSlave.chastityPenis == 1)>>
 		$His cock is encased in a tight chastity cage, which is designed to be comfortable as long as $he remains soft.
diff --git a/src/utility/miscWidgets.tw b/src/utility/miscWidgets.tw
index ad4a6170a1dd8f759702f208d3e9e91ab988ce74..d5ec0b01f6d1f16a00e375d94c365a76783cce00 100644
--- a/src/utility/miscWidgets.tw
+++ b/src/utility/miscWidgets.tw
@@ -685,6 +685,8 @@ This experience
 			[[Customize the exterior of the arcology to support this goal|Future Society][$arcologies[0][_FSDecoration] = 100, State.variables[$args[1]] = 1, State.variables[$args[2]] = 1, State.variables[$args[3]] = 1, cashX(-20000, "capEx")]] //Costs <<print cashFormat(20000)>>//
 		<<elseif def $args[1]>>
 			[[Customize the exterior of the arcology to support this goal|Future Society][$arcologies[0][_FSDecoration] = 100, State.variables[$args[1]] = 1, cashX(-20000, "capEx")]] //Costs <<print cashFormat(20000)>>//
+		<<elseif $args[0] == "FSRestart">>
+			[[Customize the exterior of the arcology to support this goal and fully establish the Societal Elite|Future Society][$arcologies[0].FSRestartDecoration = 100, $upgradeMultiplierArcology = upgradeMultiplierArcology(), $upgradeMultiplierMedicine = 0.5, $cash -= 75000]] //Costs <<print cashFormat(75000)>> and may dilute your control over the arcology//
 		<<else>>
 			[[Customize the exterior of the arcology to support this goal|Future Society][$arcologies[0][_FSDecoration] = 100, cashX(-20000, "capEx")]] //Costs <<print cashFormat(20000)>>//
 		<</if>>